RISC与CISC是用于比较现代X86,ARM CPU的错误镜头

2021-06-06 18:49:40

本网站可以从本页的链接获取会员委员会。使用条款。

随着Apple的WWDC即将推出,我们期待更多地了解该公司更新的基于ARM的MacBook Pro笔记本电脑。谣言指向Apple启动升级系统的Slate,这次基于其“M2”CPU,去年首次亮起的M1核心的缩放版本。据报道,M2可以举报八个高性能核心和两个高效核心,从现有M1中的4 + 4配置。

随着扶手的M1推出来到X86的筏子 - 与武术比较和在线讨论比较和对比新架构。在这些线程中,您通常会看到作者提出两份额外的首字母缩略词:CISC和RISC。 “ARM与X86”和“CISC与RISC”之间的联动是如此强大,Google结果的第一页上的每个故事都定义了第一个第二页。

这种协会误认为,“X86与ARM”可以整齐地分为“CESC与RISC”,X86是CISC和ARM是RISC。三十年前,这是真的。今天不是真的。关于如何将X86 CPU与其他公司建造的处理器进行比较的战斗不是一个新的。它只感到新的今天,因为X86近二十年没有有意义的建筑竞争对手。 ARM可能会突出地将自己识别为RISC CPU公司,但今天这些条款隐藏着澄清X86和ARM CPU的现代状态。

RISC是由David Patterson和David DiTzel的一个术语,1981年的精灵纸上“减少指令集电脑的案例”。这两个人提出了一种基于20世纪70年代后期观察到的趋势的新方法,以及当前CPU遇到的缩放问题。他们提供了“CISC”一词 - 复杂的指令集电脑 - 描述已经存在的许多不同的CPU架构,这些架构没有遵循RISC的原则。

由于限制CPU性能改变的瓶颈,因此对CPU设计进行了新方法的感知需求。所谓的CISC设计,包括原始8086,旨在通过将复杂性转化为硬件来处理高成本的内存。它们强调代码密度,有些指令在变量上依次执行多个操作。作为一种设计理念,CISC试图通过最小化CPU必须执行的指令数量来提高性能,以便执行给定任务。 CISC指令集架构通常提供广泛的专业说明。

到了20世纪70年代末,CISC CPU有很多缺点。它们通常必须跨多个芯片实现,因为时间段的VLSI(非常大规模集成)技术无法将所有必要的组件包装到单个包中。实现复杂的指令集架构,支持大量很多很少使用的指令,消耗芯片空间,降低了可实现的最大时钟速度。同时,内存成本稳步下降,重点是代码规模不太重要。

帕特森和DITZEL认为,CISC CPU仍在试图解决从未实现过实物化的代码臃肿问题。他们提出了一种对处理器设计的根本不同的方法。意识到绝大多数CISC指令未使用(将此视为帕累托原则的应用,或80/20规则),提出了一系列较小的固定长度指令,所有这些都将在一个单一中完成时钟周期。虽然这将导致RISC CPU每条指令执行较少的工作,而不是其CICS对应,芯片设计人员将通过简化处理器来弥补这一点。

这种简化将允许晶体管预算在其他寄存器上花费在其他特征上。 1981年预期的未来功能包括“片上缓存,较大且晶体管,甚至管道。” RISC CPU的目标是尽可能快地执行靠近一个IPC(每时钟周期的指令,衡量CPU效率)。作者认为,以这种方式重新分配资源,最终结果将优于任何比较的CISC设计。

这些设计原则并不需要很长时间来证明他们的价值。由MIPS引入1985年的R2000,在某些情况下,能够维持IPC接近1的IPC。早期RISC CPU系列SPARC和HP的PA-RISC系列也设置了性能记录。在20世纪80年代后期和20世纪90年代初,很常见的是,人们说,X86这样的基于CISC的架构是过去,也许足以满足家庭计算,但如果你想用真正的CPU,你买了一个RISC芯片。数据中心,工作站和HPC是RISC CPU最成功的地方,如下所示:

考虑1990年的CPU市场的状态所说的。到1990年,X86将非X86 CPU限制在个人计算机市场的20%,但它几乎没有X86在数据中心中分享,在数据中心中也没有股权。当Apple想投注下一代CPU设计时,它选择在1991年投注PowerPC,因为它相信沿RISC原则建立的高性能CPU是计算的未来。

20世纪90年代初期对CISC相互历史的协议。英特尔X86架构继续在PC,数据中心和高性能计算(HPC)中占据占据计算工业的事实无可争议。有什么争议的是,通过采用RISC设计的某些原则,或者如果他们的声称所做的某些原则是谎言,那么intel和AMD是否已经完成了这一点。

RISC和CISC等条款理解的原因之一是因为有关某些CPU发展的意义和性质的长期分歧。一对引号将说明问题:

首先,这里是来自Realworldtech的Paul Demone,在“RISC VS.CISC仍然很重要:”

在使用固定长度控制字的现代X86处理器实现中,使用固定长度控制单位的现代X86处理器实现的出现来运行秩序的执行数据路径的现代X86处理器实现之间的广告系列。“RISC和CISC正在收敛”的观点是一个基本缺陷的概念,返回到1992年的I486发布,并植根于广泛的无知,对指令集架构和物理处理器实现的细节之间的差异。

相比之下,这里是“RISC与CISC:后risc时代的risc rise:”的jon“hannibal”Stokes:“

到目前为止,应该显而易见的是,首字母缩略词“RISC”和“CISC”相信这一事实,设计哲学均以仅仅是指令集的简单性或复杂性......鉴于我们现在所知的历史信息RISC和CISC的发展,以及每种方法都试图解决的问题,现在应该显而易见,这两个术语都同样是荒谬的......无论曾经继续前进的“RISC与CISC”的辩论一样长,现在必须遵循什么是一个更细致的更细微和更有趣的讨论,可带走每个平台 - 硬件和软件,ISA和实现自己的优点。

这些文章都不是新的。斯托克斯的文章于1999年被编写,在2000年的德蒙斯。我从他们那里引用,证明RISC与CISC区别的问题与现代计算有关,实际上超过20岁。 Jon Stokes是我的前同事,而且超过专家,不足以落入“无知”陷阱救济参考文献。

上面的两个引号捕获了谈论“CISC与RISC”意味着什么意思。 DEVONE的观点与今天的ARM或Apple的观点大致相似。称为以ISA为中心的位置。

斯托克斯的观点是过去几十年的PC媒体中的思维思考。我们将此称为以上以上方式的位置。我正在使用“实现”这个词,因为它可以上下文中可以参考CPU的微校验结构或用于制造物理芯片的过程节点。这两个元素都与我们的讨论有关。两个位置被描述为“中心”,因为它们之间存在重叠。即使他们达到不同的结论,这两个作者都承认并同意许多趋势。

根据ISA的位置,RISC指令集有一定的先天特性,使这些架构比X86表兄弟更有效,包括使用固定长度指令和装载/商店设计。虽然CISC和RISC之间的一些原始差异不再有意义,但以ISA为中心的观点认为剩下的差异仍然是决定性的,就X86和ARM之间的性能和功率效率而言,提供了苹果到苹果的比较。

这个以ISA为中心的角度持有英特尔,AMD和X86赢得了MIPS,SPARC和Power / PowerPC的三个原因:英特尔的卓越过程制造,即所谓的“CISC税”逐步减少,随着时间的推移,英特尔的优越启用了制造,并且二进制兼容性使x86更有价值,因为它是它是最好的ISA。

以实际的观点为中心的观点来看待现代CPU已经进化的方式,自RISC和CISC的术语被发明并且认为我们正在使用完全过时的类别。

这是一个例子。如今,X86和高端ARM CPU使用超出订单执行以提高CPU性能。使用Silicon以重新订购指令,以便更好地执行效率与RISC的原始设计哲学完全有所不同。 Patterson和Ditzel主张能够以更高的时钟速度运行的较不复杂的CPU。现代臂CPU的其他常见功能,如SIMD执行单元和分支预测,也不存在于1981年.RIS的原始目标是在单个周期中执行所有指令,大多数ARM指令符合此规则,但ARMv8和ARMv9 ISAS包含需要多个时钟周期执行的说明。所以现代X86 CPU。

以上实施的视图认为,过程节点改进和微架构增强的组合允许x86很久以前与RISC CPU的间隙关闭,并且ISA级别差异在非常低的功率信封上方不相关。这是2014年对我过去撰写的ISA效率研究的观点。这是英特尔和AMD支持一般支持的观点,是我争论的。

以实心为中心的视图是,在20世纪90年代中期采用X86 CPU的新“RISC样”解码方法,CISC和RISC CPU已经发展到了几十年。

常见的解释是这样的:在20世纪90年代初,英特尔和其他X86 CPU制造商意识到,将来提高CPU性能需要更多的缓存或更快的时钟。多家公司决定投资于X86 CPU微体系结构,即在飞行中重新排序自己的指令流以提高性能。作为该过程的一部分,本地X86指令被馈送到x86解码器中,并在执行之前转换为“risc样”微型操作。

这是现在二十年来的传统智慧,但最近被挑战了。在2020年发布到中等后的故事中,Erik Engheim写道:“X86芯片中没有RISC内部。这只是一个营销伎俩。“他指出了P6微架构后面的首席建筑师Bob Colwell的Semone的故事和报价。

P6 MicroArchitecture是第一个用于实现订单超出执行和天然X86到微型OP解码引擎的Intel微架构。 P6作为奔腾专业人士运送,它进化到奔腾II,奔腾3及以后。这是现代X86 CPU的祖父。如果有人应该知道这个问题的答案,那将是Colwell,所以这就是他所说的话:

英特尔的X86在引擎盖下没有RISC发动机。它们通过依赖于将x86指令映射到机器操作中的解码/执行方案来实现x86指令集架构,或者为复杂指令的机器操作序列,然后通过微校验结构找到它们的方式,遵守数据依赖性的各种规则和最终排序。

执行此专长的“微型操作”超过100位宽,携带各种奇数信息,不能由编译器直接生成,不一定是单周期。但大多数情况下,它们是微型建筑技巧 - RISC / CISC是关于指令集架构......微型op的想法并非“RISC启发”,“RISC样”,或者与RISC相关。我们的设计团队找到一种方法来打破远离竞争微处理器中存在的微体系结构机会和限制的非常精致的指令的复杂性。

不完全是。 (点击上面的近似似乎在出现矛盾的鲍勃Colwell时感觉如何

英特尔不是第一个将X86前端解码器组合在一起的X86 CPU制造商,其中包含了“RISC-Sique”后端的内容。 Nexgen,后来被AMD获得的。 Nexgen 5×86 CPU于1994年3月首次亮相,而Pentium Pro将不会推出至1995年11月。这是Nexgen描述其CPU的方式:“NX586处理器是Nexgen的创新和专利RISC86微体建筑的第一次实施。” (重点添加)。后来,该公司提供了一些额外的细节:“创新的RISC86方法将X86指令动态转换为RISC86说明。如下图所示,NX586利用RISC性能原则。由于RISC86环境,每个执行单元较小,更紧凑。“

仍然可以争辩说,这是营销的说话,而且更多的是,让我们走到1996年和AMD K5。 K5通常被描述为与从其32位RISC微控制器,AM29000借用的执行后端AMD的X86前端。在查看其框图之前,我想将其与原始英特尔奔腾进行比较。 Pentium可以说是CISC X86演进的巅峰,因为它在X86 CPU中实现了流水线和超级,但不会将X86指令转换为微型操作,并且缺乏偏转的执行引擎。

如果您花了任何时间看微处理器框图,K5应该看起来熟悉奔腾没有的方式。 AMD在发射NX586后买了Nexgen。 K5是本土AMD设计,但K6最初是Nexgen产品。从这一点前进,CPU开始看起来更像是我们熟悉的筹码。根据设计这些芯片的工程师,相似之处比皮肤深度多。

AMD的David Christie于1996年在K5的K5上发表了一篇文章,涉及其杂交的RISC和CISC:

我们在29000年代的指令集上摆脱了一款微型ISA。几个额外的控制字段扩展了MicroInstruction大小至59位。其中一些简化并加快超卡控制逻辑。其他提供x86特定的功能,这对于综合微型指令序列来说是至关重要的。但这些微型指令仍然坚持基本的RISC原则:简单的寄存器 - 以寄存器说明符和其他字段的固定位置编码注册操作,每个操作不超过一个内存参考。出于这个原因,我们称之为RISC操作,或短(发音为R-OP)的ROPS。他们简单,通用的性质使我们在实现更复杂的x86操作方面使我们有着极大的灵活性,有助于保持执行逻辑比较简单。

然而,RISC微架构的最重要方面是X86指令集的复杂性在解码器处停止,并且对终止执行核心很透明。这种方法需要极大的控制复杂性,超出投机超出RISC执行所需的额外控制复杂性,以实现投机性超出X86执行。任务交换机的ROP序列看起来没有比一串简单指令更复杂。执行核心的复杂性有效地隔离了架构的复杂性,而不是由它复杂。

Christie并不令人困惑ISA与CPU的物理实施的细节。他认为,实际实施本身就是“RISC样”,以重要而重要的方式。

K5重新使用的部分执行后端AMD为其AM29000 RISC CPU开发,它实现了一个更频繁的内部指令集,而不是原生X86 ISA。 RISC样式技术Nexgen和AMD在此期间参考数据库,流水线和超卡架构等参考概念。其中两个 - 缓存和流水线 - 以帕特森的纸命名。这些想法都不是严格的RISC,但他们都在RISC CPU首先在RISC CPU中首次亮相,当K5是新的时,他们是与RISC CPU相关的优势。营销这些能力作为“类似于RISC的”是有道理的,因为它对时代的OEM描述了他们的PC作为“IBM兼容”所作的感觉。

这些功能是RISC的程度,答案x86 CPU解码RISC样式指令取决于您选择框架的标准。该参数比Pentium Pro大,即使P6是与阶层超时的执行引擎的技术的演变最多相关的微体系结构。不同公司的不同工程师有自己的观点。

现在是时候将这一讨论拉到现代时代,并考虑到这一“RISC与CISC”比较的影响是为了当今实际发运的ARM和X86 CPU。我们真正询问我们在与Apple的M1和Future M2比较AMD和Intel CPU时是否存在历史X86瓶颈,这将防止X86有效地与苹果公司和未来的武器筹码有关高通公司的公司吗?

根据AMD和英特尔:不,根据ARM:是的。由于有问题的所有公司都有明显的利益冲突,我询问了Agner Fog。

Agner Fog是一位丹麦进化人类学家和计算机科学家,以其在X86架构上维护的广泛资源而闻名。如果您想了解各种英特尔和AMD CPU的低级行为,他的微观建筑手册实际上是必需的阅读:

ISA不是无关紧要的。由于小增量变化和补丁的历史悠久,x86 isa非常复杂,以向ISA添加更多特征,这对于这种新功能没有空间......

复杂的X86 ISA使瓶颈进行解码。 X86指令可以具有1到15个字节的任何长度,计算长度非常复杂。并且在开始解码下一个指令之前,您需要知道一个指令的长度。如果您要解码每个时钟周期的4或6个指令,这肯定是一个问题! Intel和AMD都是继续添加更大的Micro-Op缓存以克服这个瓶颈。 ARM具有固定尺寸的指示,因此该瓶颈不存在,并且不需要微型op缓存。

X86的另一个问题是它需要一个长期的管道来处理复杂性。分支错误规定的罚款等于管道的长度。因此,它们正在添加具有大分支历史表和分支目标缓冲区的更加复杂的分支预测机制。当然,这一切都需要更多的硅空间和更多的功耗。

尽管这些负担,X86 ISA非常成功。

......