复杂指令集计算机

2025-07-26 10:14:54 / c罗世界杯图片

虽然许多设计达到了提高吞吐量和降低成本的目标,并且通过较少的指令表达了高级语言构造,但也观察到,这并非总是如此。例如,复杂架构的低端版本(即使用较少硬件的版本)可能会导致这种情况:通过不使用复杂的指令(如过程调用或进入指令),而是使用一系列更简单的指令来改善性能。

其中一个原因是,架构师(微码编写者)有时会“过度设计”汇编语言指令,包括一些在基本硬件上无法高效实现的特性。例如,可能会出现“副作用”(超出常规标志的操作),如设置一个寄存器或内存位置,而这个寄存器或内存位置可能很少使用;如果通过普通的(非重复的)内部总线,甚至是外部总线来实现这类操作,每次都会占用额外的周期,因此效率较低。

即使是在平衡的高性能设计中,高度编码和(相对)高级的指令可能也会使解码和执行变得复杂,在有限的晶体管预算下难以高效处理。因此,这类架构需要处理器设计者付出大量工作,在某些情况下,如果基于解码表和/或微码序列的更简单但(典型地)较慢的解决方案不合适时。

RISC的理念

编辑

在许多(但不是所有)CISC处理器中,执行微码定义的操作的电路本身是一个处理器,在许多方面,它的结构与早期的CPU设计非常相似。1970年代初期,这促使人们提出了回归更简单处理器设计的想法,以便在没有(当时相对较大且昂贵的)ROM表和/或PLA结构进行排序和/或解码的情况下,也能更容易地应对。

一款早期的(事后被标记为)RISC处理器(IBM 801 —— IBM沃森研究中心,1970年代中期)是一个高度流水线化的简单机器,最初是作为CISC设计中的内部微码内核或引擎使用的[来源请求],但它也成为了将RISC理念介绍给更广泛观众的处理器。简洁性和规律性在可见指令集中的体现,使得在机器码级别(即编译器所看到的层级)更容易实现重叠的处理器阶段(流水线)。然而,在那个层级上,流水线技术已经被一些高性能CISC“超级计算机”使用,以减少指令周期时间(尽管在当时,实施时受到组件数量和布线复杂度的限制)。而CISC处理器中的内部微码执行,可以根据具体设计的不同,更多或更少地进行流水线操作,因此在某种程度上更接近于RISC处理器的基本结构。

CDC 6600超级计算机(1965年首次交付)也被事后描述为RISC[1][2]。它采用了加载-存储架构,允许最多五个加载和两个存储操作同时进行,且由程序员控制。它还拥有多个功能单元,可以同时操作。