Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 英特尔为什么在处理器中隐藏内部RISC内核?_Assembly_X86_Intel_Cpu Architecture - Fatal编程技术网

Assembly 英特尔为什么在处理器中隐藏内部RISC内核?

Assembly 英特尔为什么在处理器中隐藏内部RISC内核?,assembly,x86,intel,cpu-architecture,Assembly,X86,Intel,Cpu Architecture,从奔腾Pro(P6微体系结构)开始,英特尔重新设计了其微处理器,并在旧的CISC指令下使用了内部RISC内核。由于奔腾Pro,所有CISC指令都被分成更小的部分(UOP),然后由RISC内核执行 一开始,我很清楚,英特尔决定隐藏新的内部架构,并强迫程序员使用“CISC外壳”。由于这一决定,英特尔可以在不破坏兼容性的情况下完全重新设计微处理器体系结构,这是合理的 然而,我不明白一件事,为什么英特尔仍然保持一个内部RISC指令集隐藏了这么多年?为什么他们不让程序员像使用旧的x86 CISC指令集那样

从奔腾Pro(P6微体系结构)开始,英特尔重新设计了其微处理器,并在旧的CISC指令下使用了内部RISC内核。由于奔腾Pro,所有CISC指令都被分成更小的部分(UOP),然后由RISC内核执行

一开始,我很清楚,英特尔决定隐藏新的内部架构,并强迫程序员使用“CISC外壳”。由于这一决定,英特尔可以在不破坏兼容性的情况下完全重新设计微处理器体系结构,这是合理的

然而,我不明白一件事,为什么英特尔仍然保持一个内部RISC指令集隐藏了这么多年?为什么他们不让程序员像使用旧的x86 CISC指令集那样使用RISC指令

如果英特尔长期保持向后兼容性(我们在64位模式下还有虚拟8086模式),为什么他们不允许我们编译程序,这样他们就可以绕过CISC指令,直接使用RISC内核?这将为慢慢放弃x86指令集打开一条自然之路,x86指令集如今已被弃用(这就是英特尔决定在内部使用RISC内核的主要原因,对吧?)


看看新的英特尔“Core i”系列,我发现它们只扩展了CISC指令集,添加了AVX、SSE4和其他指令。

不,x86指令集肯定不会被弃用。它和以往一样受欢迎。英特尔之所以在内部使用一组类似RISC的微指令,是因为它们可以更高效地处理

因此,x86 CPU的工作原理是前端有一个相当重的解码器,它接受x86指令,并将其转换为优化的内部格式,后端可以处理

关于向“外部”程序公开此格式,有两点:

  • 它不是一种稳定的格式。Intel可以在不同的CPU型号之间进行更改,以最适合特定的体系结构。这使他们能够最大限度地提高效率,如果他们不得不选择一种固定的、稳定的指令格式供内部使用和外部使用,这种优势就会丧失
  • 这样做没有什么好处。在当今庞大复杂的CPU中,解码器是CPU中相对较小的一部分。必须对x86指令进行解码使其更加复杂,但CPU的其余部分不受影响,因此总体而言,只有很少的好处,特别是因为为了执行“遗留”代码,x86前端仍然必须在那里。因此,您甚至不会保存x86前端上当前使用的晶体管
这并不是一个完美的安排,但成本相当小,而且比设计CPU来支持两个完全不同的指令集要好得多。(在这种情况下,他们可能会发明第三套内部使用的微操作,因为这些微操作可以自由调整,以最适合CPU的内部架构)

如果英特尔保持向后兼容性 这么长时间(我们仍然有虚拟的 8086模式下的64位模式),为什么 他们不允许我们编译程序吗 因此,他们将绕过CISC指令 直接使用RISC内核?这将 以自然的方式慢慢放弃x86 已弃用的指令集 现在(这是主要原因) 英特尔决定在内部使用RISC内核, 是吗?)

你需要从商业的角度来看待这个问题。事实上,英特尔曾试图摆脱x86,但正是这只鹅为公司下了金蛋。XScale和安腾从未接近其核心x86业务的成功水平


你基本上要求的是英特尔割腕,以换取开发者的温暖模糊。破坏x86不符合他们的利益。任何让更多开发人员不必选择以x86为目标的东西都会破坏x86。这反过来又削弱了它们。

答案很简单。英特尔不是为开发者开发CPU!他们正在为做出采购决策的人开发它们,顺便说一句,这是世界上每家公司都做的事情

英特尔很久以前就承诺,(当然,这是合理的),他们的CPU将保持向后兼容。人们想知道,当他们购买一台新的基于英特尔的计算机时,他们当前的所有软件都将与旧计算机上的运行完全相同。(尽管希望更快!)

此外,英特尔确切地知道这一承诺有多重要,因为他们曾经试图走另一条路。你到底认识多少人使用安腾CPU


你可能不喜欢它,但有一个决定,继续使用x86,是什么使英特尔成为世界上最知名的商业品牌之一

真正的答案很简单

RISC处理器实现背后的主要因素是降低复杂性和提高速度。 RISC的缺点是减少了指令密度,这意味着用类似RISC的格式表示的相同代码需要比等效CISC代码更多的指令

如果CPU的运行速度与内存的运行速度相同,或者至少两者的运行速度相当,那么这种副作用就没有多大意义

目前,与CPU速度相比,内存速度在时钟方面有很大差异。当前的CPU有时比主存快五倍或更多

这种技术状态有利于更密集的代码,这是CISC提供的

你可以说缓存可以加速RISC CPU。但CISC CPU也是如此

使用CISC和缓存比使用RISC和缓存可以获得更大的速度提升,因为相同大小的缓存对CISC提供的高密度代码有更大的影响

另一个副作用是RISC在编译器实现上更加困难。它更容易为CISC CPU优化编译器。等等

英特尔知道他们在做什么

这太真实了