精简指令集计算机
Posted mb61b02afcf37f8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精简指令集计算机相关的知识,希望对你有一定的参考价值。
精简指令集计算机(RISC:Reduced Instruction Set Computer) [3] 是一种指令长度较短的计算机,其运行速度比CISC要快。RISC和CISC是CPU从指令集的特点上可以分为两类:CISC和RISC。RISC是英文Reduced Instruction Set Computer的缩写 [3] ,就是“精简指令运算集”,CISC就是“复杂指令运算集”。RISC的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Sparc。
RISC是相对于复杂指令集计算机(CISC)而言的。所谓复杂指令集计算机是依靠增加机器的硬件结构来满足对计算机日益增加的性能要求。计算机结构的发展一直是被复杂性越来越高的处理机垄断着,为了减少计算机操作与高级语言的差别,为了改善机器的运行特性,机器指令越来越多,指令系统也越来越复杂。特别是早期的较高速度的CPU和较慢速度的存储器间的矛盾,为了尽量减少存取数据的次数,提高机器的速度,大大发展了复杂指令集,但随着半导体工艺技术的发展,存储器的速度不断提高,特别是高速缓冲的使用,使计算机体系结构发生了根本性的变化,硬件工艺技术提高的同时,软件方面也发生了同等重要的进展,出现了优化编译程序,使程序的执行时间尽可能减少。并使机器语言所占的内存减至最小,在具有先进的存储器技术和先进的编译程序的条件下,CISC体系结构已不再适用了,因而诞生了RISC体系结构,RISC技术的基本出发点就是通过精减机器指令系统来减少硬件设计的复杂程度,提高指令执行速度。在RISC中,计算机实际上每一个机器周期里都执行指令,无论简单或复杂的操作,均由简单指令的程序块完成,具有较强的仿真能力。
在RISC机器中,要求在“单机器周期”时间内执行所有的指令,而系统最根本的吞吐率限制是由程序运行中访存时间比例所决定的,因此,只要CPU执行指令的时间与取指时间相同,即可获得最大的系统吞吐率。(对于一个机器周期执行一条指令而言)。RISC机器中,采用硬件控制以实现快速的指令译码,并采用较少的指令和简单的寻址模式,通过固定的指令格式来简化指令译码和硬线控制逻辑。另外,RISC设计是以复杂的编译设计优化来求取简单的硬件芯片环境。编译优化可以改善HLL程序的运行效率,但所有的程序必须由高级语言编写。
RISC设计消除了微码的例行程序,把机器低级控制交给软件处理。即用较快的RAM代替处理器中的微码ROM作为指令的缓存(Cache),计算机的控制驻存在指令Cache,从而使得计算机系统和编译器产生的指令流能使高级语言的需求和硬件性能密切配合。
计算机的性能可以用完成一特定任务所需的时间来衡量,这个时间等于C×T×I。
C=完成每条指令所需的周期数,T=每个周期的时间,I=每个任务的指令数
RISC技术就是努力使C和T减至最小,C和T的减小可能导致I的增加,但优化编译技术和其他技术的采用可以弥补由于I的增加对机器性能的影响。RISC技术之所以很快由一种新见解发展成为前景广阔的计算机市场,主要有如下几方面的原因:一是RISC结构适应日新月异的VLSI技术发展;二是RISC简化了处理器结构,实现和调试较容易,因而设计代价低,开发周期短;三是简化了结构,处理器占据了较小的芯片面积,从而可在同一芯片上集成进较大的寄存器文件,翻译后备缓冲器(TLB)、协处理器和快速乘除器等,使得处理器获得更高的性能;四是RISC对HLL程序的支持优于以往的复杂指令系统计算机,可以使用户(程序员)很容易使用统一的指令集,很容易估算代码优化所起的作用,使程序员对硬件的正确性有了更多的信任感。 [1]
分类
采用多级指令流水线结构
采用流水线技术可使每一时刻都有多条指令重叠执行,以减小 CPI 的值,使 CPU 不浪费空周期。实例: Pentium Ⅱ /Pro/Celeron 可同时发出执行五条指令, AMD - K6/K6 - 2 可同时发出六条指令。
机器中使用频率高的简单指令及部分复杂指令
这样可减小时钟周期数量,提高 CPU 速度,其实质是减小 CPI 下的值实现。实例:选取运算指令、加载、存储指令和转移指令作主指令集。
采用加载 (Load) 、存储 (Store) 结构
只允许 Load 和 Store 指令执行存储器操作,其余指令均对寄存器操作。实例: Amd - K6/K6 - 2 、 P Ⅱ /Celeron/Pro 均支持对寄存器的直接操作和重新命名,并大大增加通用寄存器的数量。
延迟加载指令和转移指令
由于数据从存储器到寄存器存在二者速度差、转移指令要进行入口地址的计算,这使 CPU 执行速度大大受限,因此, RISC 技术为保证流水线高速运行,在它们之间允许加一条不相关的可立即执行的指令,以提高速度。
实例:主要体现于预测执行、非顺序执行和数据传输等方面,除 Intel P54/55C 不支持,像 K6 - 2 、 P Ⅱ均支持。
采用高速缓存 (cache) 结构
为保证指令不间断地传送给 CPU 运算器, CPU 设置了一定大小的 Cache 以扩展存储器的带宽,满足 CPU 频繁取指需求,一般有两个独立 Cache ,分别存放“指令+数据”。
实例: P Ⅱ /Celeron:16K + 16K , AMD - K6/K6 - 2 为 32K + 32K , Cyrix M Ⅱ :64K( 实也为 2 个 32K Cache ,此作共享 Cache) , P Ⅱ还加了 L2 Cache,更是大幅提高了 CPU 速度。
RISC的特点
RISC的特点是指令及其格式精少,操作和控制简捷。具体有下列几个方面 [2] 。
精简指令集
RISC结构采用精简的,长短划一的指令集,使大多数的操作获得了尽可能高的效率。某些在传统结构中要用多周期指令实现的操作,在RISC结构中,通过机器语言编程,就代之以多条单周期指令了。精简的指令集大大改善了处理器的性能,并推动了RISC的设计。对于到底精简到什么程度的问题,没有一定的回答。将现有RISC系统与CISC系统作一对比,便可见大概。通常,对RISC而言:
- 指令数少,不超过128条。
- 寻址方式少,不超过4种。
- 指令格式少,不超过4种。
处理关于扩充指令集的建议是非常慎重的,要经过认真的权衡,验证,在看它们是否真正提高计算机的性能。例如,MIPS采用了一条规则:增加一条指令必须使性能在一定的应用范围内得到1%的增益,否则这条指令将被拒绝。
指令时钟周期,指令长度相等
如果每一条指令要执行的任务既简单又明了,则执行每一条指令所的时间可以被压缩周期数也可减少。RISC的设计目标是实现一个机器周期执行一条指令,使得系统操作更加有效。接近这个目标的技术包括指令流水线及特定的装/存结构等。典型的指令可包括取指、译码、执行和存装果等阶段。单周期指可通过让所有指令为标准长短来实现。标准指令长短应与计算机系统的基本字长相等,通常与系统中数据线数相等。
在任何取指周期,完整的单个指令要传给CPU。例如,如果基字长是32位,且系统总线的数据部分是32线,则标准指令长度是32位。要让所有指令的执行时间一致较困难。有些指令,包含简单的在CPU寄存器上的逻辑操作(清寄存器等),则可容易地在一个CPU时钟周期内执行;其它指令可能包含内存存取(对内存的读写、取数等)或多周期操作(乘、除等),可能无法在单周期内执行。这给设计者提出了这样的要求;让大多数经常使用的指令得以在一个单周期内执行。
指令流水线
减少执行一条指令所需周期数的方法是重叠执行多条指令。指令流水线采用这样的工作方式:将每条指令的执行分为几个离散部分,然后同时执行多条指令。任何指令的取指和执行阶段占据相同时间,理想的是一个单周期。这可说是RISC最重要的一条设计原则。所有从内存到CPU执行的指令,都遵循一种恒定的流的形式。每条指令都以同样的步调执行,无等待的指令。CPU始终是忙的。达到流水线操作的必要条件是:
- 标准的,固定长短的指令,它与计算机字长和数据线的字长相等。
- 所有指令的标准执行时间,最好在一个单CPU周期内。
例SPARC芯片等采用了取指、译码、执行和写入结果四级流水线结构,以最大限度来提高处理器性能。在每一个时钟周期的头上,都可以开始执行一条新的指令,这就保证了每个机器周期从存贮器平均取出一条新的指令,从而,总体看,大多数指令能在单周期内实现。指令流水线技术可以比作一条装配线—指令象是被加工的产品一样,从一道工序流到下一道工序,一直到它执行完为止。
因此,指令流水线利用一个等于其流水线深度的因子,来减少指令周期数是可能的,但这样的话,要求流水线始终充满有用指令且没有任何东西阻碍指令通过流水线,这样的需求给结构增加了一定的负担。例如,对于ALU等资源的竞争,阻止了流水线中指令的流动。长短不一的执行时间所引起的不良后果更是显而易见,这也是为什么RISC要定义一个有前面所述特点的指令集的原因。
装入和存数(LOAD/Store)结构
执行与内存有关的操作指令,不是要求增加每个周期的时间,就是要求增加指令的周期数,二者必取其一。因为这些指令要计算操作数的地址,将所需的操作数从内存中读出,计算得出结果,再把结果送回内存,所以它们执行的时间就长得多。为了消除这种指令的负作用,RISC采用了这样的装入和存数结构:只有装入(Load)和存数(Store)指令才去访间内存,所有其它操作只访问保存在处理器寄存器中的操作数。其优点在于:
- 减少访问内存的次数,降低了对内存带宽的要求。
- 将所有的操作限制于只针对寄存器,帮助了指令集的简化。
- 取消内存操作可使编释器优化寄存的分配更容易—这种特性减少对内存的存取,同时也减少了每一任务的指令数。
所有这些都有助于RISC实现的每个周期执行一条指令的目标。尽管如此,装入和存数指令仍阻碍着IRSC设计目标的实现。用优化编译技术处理装入指令和分支指令的延迟,有助问题的解决。优化编译技术虽不是专门面向RISC结构的,但优化编译器依赖于RISC结构完成其出色的任务,RISC结构又依赖于优化编译器得到它们更完善的性能。编释器要能分析数据和控制流,并在此基础上调整指令的执行顺序,巧妙安排寄存器的用法。前一种作用可减少CPU的空闲时间,后一种作用可以提高寄存器中所保存的数据的可再用率,减少访存次数,缩短数据通路的长度。
拥有较大寄存器组
为了便于实现多数指令在寄存器之间的操作,即所谓的寄存器到寄存器操作,必须有足够量的CPU通用寄存器。足量的寄存器使得在随后操作中需作为操作用的中间结果暂存在CPU寄存器中,因而就减少了对内存的装入和存数,加快了运行速度。工业化RISC系统中至少采用32个通用CPU寄存器。
采用硬连线控制
由于微程序设计给设计者提供的灵活性,许多CISC系统是微程序控制的。不同的指令通常具有不同长度的微程序,这意味着每条指令执行的周期数不一样,这与所有指令一致的、流线的处理原则相矛盾。但这可由硬连线控制来解决,而且速度会更快。因此RISC应该是硬连接线控制的。当每条指令与一单条微指令有一对一相相符合的关系时可有例外,也就是每个微程序由一单个控制字组成。这种设计可与用硬连线控制一样快,一样高效,并使设计者得益于微程序设计的优越性。采用硬连线控制,可使RISC系统控制器简单。设计的简单又使机器的布局更加合理,使得设计者可以集中精力去优化那些剩下的,为数不多的,但又很关键的处理器特性。简化的结构使芯片上面积资源紧张的状态得以缓解,一些对性能至关重要的结构,象大的寄存器元件,转换查找缓存(TLB)S协处理器和乘除单元都可以装在同一块芯片上。这些附加的资源又使处理器增加了很大的性能优势。事实上,RISC并非一定严格地完全具备上述特点,有些称作RISC型的系统甚至违背了上述某方面。上述特点应被当作一种指导原则来解释RISC的性质。放宽点讲,满足大部分这些特点的系统就能被看作RISC。
优点
RISC在保持成本降低的同时能很好地提高速度。
适用VLSI(VERYLARGESCALEINTEGRATION)工艺。
由于RISC指令集清简,使之只需相对小而简单控制单元的译码和硬件执行子系统。这导致在用VLSI实现计算机系统时的下列结果:
- 控制单元所占的芯片面积大为减少,如RlsCI占10%,而通常CISC占50%以上。因而,在RISCVLSI芯片,留下更多可用空间,使整个CPU和其它部件故在一块芯片上(如高速缓存,浮点单元,部分主存,存贮器管理单元,1/0口)。
- 由于控制区域减少,就可在芯片上按放大量的CPU寄存器(RISCI是138个)。
- 通过减少VLSI芯片上控制单元面积和放置大量一致的寄存器,可以提高芯片的正则化因子(regulariZationfaetor)。基本上,正则化因子越高,VLSI设计成本越低。
- 有利于使用GaAs(砷化稼)VLSI芯片的实现技术,因其适于制造密度较高的芯片。总之,是降低了复杂程序,简化了结构。
速度高。
- RISC特点之一是指令流水线,而指令长短和执行时间的致性,使流水中的等待和保持时间减到最少。这些因素有利提高计算速度。RISC中较简单和较小的控制单元中的门也较少,这使控制单元信号的传送路径较短,使操作速度加快。指令集的精简,导致译码系统小而简单,供RISC的译码速度加快。硬连线所减少的控制单元,使RISC比通常由微程序控制的系统执行起来要快。相对大的CPU寄存器,减少了CPU与内存间取指,存数等操作的冲突;大的寄存器组可用来存贮调用过程被调用过程之间传递的参数,存贮中断程序的有关信息,否则,这些信息只能保存在内存中。所有这些都节约了大量的计算机处理时间。优化编译中的分支延迟技术也对提高速度作出了贡献。总的看,在功能大致相同的情况下,RISC一般是CISC处理速度的2~4倍。
- 降低设计成本,提高可靠性
- CPU相对小而简单的控制单元通常会导致下列成本及可靠性方面的益处:a.RISC控制单元的设计时间缩短,这可使整个设计成本降低。b.短的设计时间使最终产品在设计完成时被废弃的可能性减少。c.较简单,较小的控制单元能减少设计错误,从而提高可靠性;而且,定位和修正错误也比CISC容易。d.因指令格式l(或2种)简而少,所有指令又有规范长度,所以指令不会越过字界限,也不会跨越虚存(iVrtualMemory)中不同的页,这排除了虚存管理子系统设计中潜在的困难。
- 支持高级语言,而不支持汇编语言
- 从CISC向RISC演变的过程,类似于汇编语言向高级语言的发展过程。用汇编语言写程序要使用一些精心设计的复杂指令,而高级语言的编写几乎不同复杂指令。RISC在追求精简指令的同时,把体系结构和优化编译的设计紧密结合起来,使综合结果引起整体性能的改善。如果说RISC得以发展是基于VLSI技术和编译技术的提高,那么可以理解为用复杂的编译代替了复杂的指令系统,甚至可认为是把硬件的难题转移给了软件。而近年来智能型编译器的迅速发展,能很方便地胜任这项任务,RISC的优势也许正在于此。传统的CISC必有复杂的微码编写与设计工作,使用汇编语言又涉及汇编程序的研制,这些都很费人力和时间。RISC更利于支持高级语言,这也是长以来计算机面临的“软件危机”得以解决的途径之一。RISC的成功在于软件的兼容性。只要通过重新编译使源程级兼容,则已有的软件可方便地在RISC机上运行。
- 编程者(用户)得到的好处
- 简化了的结构使编程者也得到了很多好处:
- 一个更为统一的指令集用起来很方便。
- 由于指令数和周期数之间有一个比较严格的对应关系,代码优化的真实效果就容易度量。
- 编程者对于硬件的把握更为准确。
缺点
当今计算机世界出现了寻觅更好性能的热潮,RISC与CISC既对峙又互补。RISC有其自身的缺点。
编译后指令长度较长,内存需要较大
RISC的缺点与其一些优点直接有关。因为RISC拥有的指令数少,有些在CISC中仅由一条指令完成的功能,在RISC中需二、三条甚至更多条指令,这使RISC代码较长,因而RISC的程序需要更多的内存,内存与CPU间的指令冲突也会增加。研究表明,平均而言,执行同样的功能,一个RISC程序比一个CISC程序长30%。同时,RISC对编译器要求较高,优化编译器的设计是一项极复要且技术要求很高的工作,它又必须由RISC机制造单位自身编制,因为没有RISC详细原始资料不可能产生编译程序的目标代码。这样,第三方公司提供新版本较困难,用户选择余地较小,软件费用增加了。
大寄存器组使寻址复杂,速度降低
RISC系统的一个有争议的特点是其大寄存器组。大寄存器组有前述优点,但另一方面,也有缺点,大寄存器使寻址时间增多,另个,一些编译器使小寄存器组的使用更为有效。CPU寄存器组到底应多大还有待讨论,大寄存器U组还可由高速缓存(CACHE)代替。大寄存器组的不足之处可归结如下:
- 存取时间长。
- 寄存器组占据了更多的芯片空间。
- 先进的编译技术使小寄存器组更有效。
- 如果上下文转换现场的所有CPU寄存器被保存,则大寄存器组会化更多存贮时间。
- 如果使用了窗口指针(RISC的实施要点之一是重叠寄存器窗口,目的是便于参数传递。重叠寄存器窗口要用到窗口指针),寄存器地址译码会较长。同时重叠寄存器也使CPU逻辑变得复杂。
硬连线控制不灵活
出现错误的可能性较大,不易发现和修改错误,处理复杂指令也较困难。(4)单字指令不能使用用于全32位地址的直接内存寻址方式。由于这个原因,一些生产厂家已使一小部分指令具有双字卡(如INTEL80960),使用这样的指令由程序员决定,他可仅用单字指令写完整的程序。
发展前景
RISC技术的基本出发点是通过精减机器指令系统来减少硬件设计的复杂程度,提高指令执行速度。尽管RISC的设计思想对计算机结构发生了巨大影响,并获得了很大成功,但复杂指令集计算机(CISC)技术相对而言则使程序的编制来得更容易些,因此,CISC技术和RISC技术并不是相互孤立的。目前,有一种新的设计思想,它是以提高整个计算机系统的性能为出发点,在结构上吸收了CISC和RISC的优点。如许多CISC设计中采用了RISC技术,美国国家半导休公司的NSC32532微处理器在CISC设计中采用了RISC技术,使指令平均执行时间从原来的6个机器周期降到小于2.4个机器周期,在26MHZ主频下,运行速度达10一12M1PS。Intel80486和Mot。r。la68040也吸收了RISC设计技术,从而达到每条指令平均执行时间小于2个机器周期,仙童公司的Clipper机是综合R1SC与CISC技术优点的32位微处理机,其运行速度高达33MIPS。因此,当前设计处理机的两种主要方法(RISC和ClSC技术)并不是截然分开的,它们是相辅相成的,目前已有人将CISC技术和RISC技术溶合在一起,提出了可写指令集计算机(WISC)结构设想,并具体规定了集中Rlsc和Clsc优点的策略原则,尽管如此,它仍是建立在RlSC概念笋碑上的一个RISC技犬的进一步发屏。
目前大多数RISC处理器已达到了每个周期执行一条指令的目标(即CPI比率),但这并不是极限,RISC技术中又出现了超级标量和超级流水线技术。超级标量技术就是使微处理器在一个时钟周期内并行地执行几条指令,而超级流水线技术则是主流水线段(指令译码和指令执行)只占一个时钟周期的一部分,这样,仍可在一个时钟周期内同时执行几条指令Intel8096。就采用了超级标量技术,它能同时执行整数指令和浮点指令.IBM公司的RS/6000也采用的是超级标量结构,处理器包含三个不同的处理部件:定点处理器、浮点处理器、分支处理器,一个时钟周期可执行四条指令(4IPC),最多可达6IPc。RISc科学家指出,过去那种令人鼓舞的微处理器性能提高过程不大可能继续下去,今后,Cache的容量及其结构和优化编译器将成为提高计算机性能的关键因素。未来发展重点将放在多处理器技术上 [1] 。精简指令集计算机(RISC:Reduced Instruction Set Computer) [3] 是一种指令长度较短的计算机,其运行速度比CISC要快。RISC和CISC是CPU从指令集的特点上可以分为两类:CISC和RISC。RISC是英文Reduced Instruction Set Computer的缩写 [3] ,就是“精简指令运算集”,CISC就是“复杂指令运算集”。RISC的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Sparc。
RISC是相对于复杂指令集计算机(CISC)而言的。所谓复杂指令集计算机是依靠增加机器的硬件结构来满足对计算机日益增加的性能要求。计算机结构的发展一直是被复杂性越来越高的处理机垄断着,为了减少计算机操作与高级语言的差别,为了改善机器的运行特性,机器指令越来越多,指令系统也越来越复杂。特别是早期的较高速度的CPU和较慢速度的存储器间的矛盾,为了尽量减少存取数据的次数,提高机器的速度,大大发展了复杂指令集,但随着半导体工艺技术的发展,存储器的速度不断提高,特别是高速缓冲的使用,使计算机体系结构发生了根本性的变化,硬件工艺技术提高的同时,软件方面也发生了同等重要的进展,出现了优化编译程序,使程序的执行时间尽可能减少。并使机器语言所占的内存减至最小,在具有先进的存储器技术和先进的编译程序的条件下,CISC体系结构已不再适用了,因而诞生了RISC体系结构,RISC技术的基本出发点就是通过精减机器指令系统来减少硬件设计的复杂程度,提高指令执行速度。在RISC中,计算机实际上每一个机器周期里都执行指令,无论简单或复杂的操作,均由简单指令的程序块完成,具有较强的仿真能力。
在RISC机器中,要求在“单机器周期”时间内执行所有的指令,而系统最根本的吞吐率限制是由程序运行中访存时间比例所决定的,因此,只要CPU执行指令的时间与取指时间相同,即可获得最大的系统吞吐率。(对于一个机器周期执行一条指令而言)。RISC机器中,采用硬件控制以实现快速的指令译码,并采用较少的指令和简单的寻址模式,通过固定的指令格式来简化指令译码和硬线控制逻辑。另外,RISC设计是以复杂的编译设计优化来求取简单的硬件芯片环境。编译优化可以改善HLL程序的运行效率,但所有的程序必须由高级语言编写。
RISC设计消除了微码的例行程序,把机器低级控制交给软件处理。即用较快的RAM代替处理器中的微码ROM作为指令的缓存(Cache),计算机的控制驻存在指令Cache,从而使得计算机系统和编译器产生的指令流能使高级语言的需求和硬件性能密切配合。
计算机的性能可以用完成一特定任务所需的时间来衡量,这个时间等于C×T×I。
C=完成每条指令所需的周期数,T=每个周期的时间,I=每个任务的指令数
RISC技术就是努力使C和T减至最小,C和T的减小可能导致I的增加,但优化编译技术和其他技术的采用可以弥补由于I的增加对机器性能的影响。RISC技术之所以很快由一种新见解发展成为前景广阔的计算机市场,主要有如下几方面的原因:一是RISC结构适应日新月异的VLSI技术发展;二是RISC简化了处理器结构,实现和调试较容易,因而设计代价低,开发周期短;三是简化了结构,处理器占据了较小的芯片面积,从而可在同一芯片上集成进较大的寄存器文件,翻译后备缓冲器(TLB)、协处理器和快速乘除器等,使得处理器获得更高的性能;四是RISC对HLL程序的支持优于以往的复杂指令系统计算机,可以使用户(程序员)很容易使用统一的指令集,很容易估算代码优化所起的作用,使程序员对硬件的正确性有了更多的信任感。 [1]
分类
采用多级指令流水线结构
采用流水线技术可使每一时刻都有多条指令重叠执行,以减小 CPI 的值,使 CPU 不浪费空周期。实例: Pentium Ⅱ /Pro/Celeron 可同时发出执行五条指令, AMD - K6/K6 - 2 可同时发出六条指令。
机器中使用频率高的简单指令及部分复杂指令
这样可减小时钟周期数量,提高 CPU 速度,其实质是减小 CPI 下的值实现。实例:选取运算指令、加载、存储指令和转移指令作主指令集。
采用加载 (Load) 、存储 (Store) 结构
只允许 Load 和 Store 指令执行存储器操作,其余指令均对寄存器操作。实例: Amd - K6/K6 - 2 、 P Ⅱ /Celeron/Pro 均支持对寄存器的直接操作和重新命名,并大大增加通用寄存器的数量。
延迟加载指令和转移指令
由于数据从存储器到寄存器存在二者速度差、转移指令要进行入口地址的计算,这使 CPU 执行速度大大受限,因此, RISC 技术为保证流水线高速运行,在它们之间允许加一条不相关的可立即执行的指令,以提高速度。
实例:主要体现于预测执行、非顺序执行和数据传输等方面,除 Intel P54/55C 不支持,像 K6 - 2 、 P Ⅱ均支持。
采用高速缓存 (cache) 结构
为保证指令不间断地传送给 CPU 运算器, CPU 设置了一定大小的 Cache 以扩展存储器的带宽,满足 CPU 频繁取指需求,一般有两个独立 Cache ,分别存放“指令+数据”。
实例: P Ⅱ /Celeron:16K + 16K , AMD - K6/K6 - 2 为 32K + 32K , Cyrix M Ⅱ :64K( 实也为 2 个 32K Cache ,此作共享 Cache) , P Ⅱ还加了 L2 Cache,更是大幅提高了 CPU 速度。
RISC的特点
RISC的特点是指令及其格式精少,操作和控制简捷。具体有下列几个方面 [2] 。
精简指令集
RISC结构采用精简的,长短划一的指令集,使大多数的操作获得了尽可能高的效率。某些在传统结构中要用多周期指令实现的操作,在RISC结构中,通过机器语言编程,就代之以多条单周期指令了。精简的指令集大大改善了处理器的性能,并推动了RISC的设计。对于到底精简到什么程度的问题,没有一定的回答。将现有RISC系统与CISC系统作一对比,便可见大概。通常,对RISC而言:
- 指令数少,不超过128条。
- 寻址方式少,不超过4种。
- 指令格式少,不超过4种。
处理关于扩充指令集的建议是非常慎重的,要经过认真的权衡,验证,在看它们是否真正提高计算机的性能。例如,MIPS采用了一条规则:增加一条指令必须使性能在一定的应用范围内得到1%的增益,否则这条指令将被拒绝。
指令时钟周期,指令长度相等
如果每一条指令要执行的任务既简单又明了,则执行每一条指令所的时间可以被压缩周期数也可减少。RISC的设计目标是实现一个机器周期执行一条指令,使得系统操作更加有效。接近这个目标的技术包括指令流水线及特定的装/存结构等。典型的指令可包括取指、译码、执行和存装果等阶段。单周期指可通过让所有指令为标准长短来实现。标准指令长短应与计算机系统的基本字长相等,通常与系统中数据线数相等。
在任何取指周期,完整的单个指令要传给CPU。例如,如果基字长是32位,且系统总线的数据部分是32线,则标准指令长度是32位。要让所有指令的执行时间一致较困难。有些指令,包含简单的在CPU寄存器上的逻辑操作(清寄存器等),则可容易地在一个CPU时钟周期内执行;其它指令可能包含内存存取(对内存的读写、取数等)或多周期操作(乘、除等),可能无法在单周期内执行。这给设计者提出了这样的要求;让大多数经常使用的指令得以在一个单周期内执行。
指令流水线
减少执行一条指令所需周期数的方法是重叠执行多条指令。指令流水线采用这样的工作方式:将每条指令的执行分为几个离散部分,然后同时执行多条指令。任何指令的取指和执行阶段占据相同时间,理想的是一个单周期。这可说是RISC最重要的一条设计原则。所有从内存到CPU执行的指令,都遵循一种恒定的流的形式。每条指令都以同样的步调执行,无等待的指令。CPU始终是忙的。达到流水线操作的必要条件是:
- 标准的,固定长短的指令,它与计算机字长和数据线的字长相等。
- 所有指令的标准执行时间,最好在一个单CPU周期内。
例SPARC芯片等采用了取指、译码、执行和写入结果四级流水线结构,以最大限度来提高处理器性能。在每一个时钟周期的头上,都可以开始执行一条新的指令,这就保证了每个机器周期从存贮器平均取出一条新的指令,从而,总体看,大多数指令能在单周期内实现。指令流水线技术可以比作一条装配线—指令象是被加工的产品一样,从一道工序流到下一道工序,一直到它执行完为止。
因此,指令流水线利用一个等于其流水线深度的因子,来减少指令周期数是可能的,但这样的话,要求流水线始终充满有用指令且没有任何东西阻碍指令通过流水线,这样的需求给结构增加了一定的负担。例如,对于ALU等资源的竞争,阻止了流水线中指令的流动。长短不一的执行时间所引起的不良后果更是显而易见,这也是为什么RISC要定义一个有前面所述特点的指令集的原因。
装入和存数(LOAD/Store)结构
执行与内存有关的操作指令,不是要求增加每个周期的时间,就是要求增加指令的周期数,二者必取其一。因为这些指令要计算操作数的地址,将所需的操作数从内存中读出,计算得出结果,再把结果送回内存,所以它们执行的时间就长得多。为了消除这种指令的负作用,RISC采用了这样的装入和存数结构:只有装入(Load)和存数(Store)指令才去访间内存,所有其它操作只访问保存在处理器寄存器中的操作数。其优点在于:
- 减少访问内存的次数,降低了对内存带宽的要求。
- 将所有的操作限制于只针对寄存器,帮助了指令集的简化。
- 取消内存操作可使编释器优化寄存的分配更容易—这种特性减少对内存的存取,同时也减少了每一任务的指令数。
所有这些都有助于RISC实现的每个周期执行一条指令的目标。尽管如此,装入和存数指令仍阻碍着IRSC设计目标的实现。用优化编译技术处理装入指令和分支指令的延迟,有助问题的解决。优化编译技术虽不是专门面向RISC结构的,但优化编译器依赖于RISC结构完成其出色的任务,RISC结构又依赖于优化编译器得到它们更完善的性能。编释器要能分析数据和控制流,并在此基础上调整指令的执行顺序,巧妙安排寄存器的用法。前一种作用可减少CPU的空闲时间,后一种作用可以提高寄存器中所保存的数据的可再用率,减少访存次数,缩短数据通路的长度。
拥有较大寄存器组
为了便于实现多数指令在寄存器之间的操作,即所谓的寄存器到寄存器操作,必须有足够量的CPU通用寄存器。足量的寄存器使得在随后操作中需作为操作用的中间结果暂存在CPU寄存器中,因而就减少了对内存的装入和存数,加快了运行速度。工业化RISC系统中至少采用32个通用CPU寄存器。
采用硬连线控制
由于微程序设计给设计者提供的灵活性,许多CISC系统是微程序控制的。不同的指令通常具有不同长度的微程序,这意味着每条指令执行的周期数不一样,这与所有指令一致的、流线的处理原则相矛盾。但这可由硬连线控制来解决,而且速度会更快。因此RISC应该是硬连接线控制的。当每条指令与一单条微指令有一对一相相符合的关系时可有例外,也就是每个微程序由一单个控制字组成。这种设计可与用硬连线控制一样快,一样高效,并使设计者得益于微程序设计的优越性。采用硬连线控制,可使RISC系统控制器简单。设计的简单又使机器的布局更加合理,使得设计者可以集中精力去优化那些剩下的,为数不多的,但又很关键的处理器特性。简化的结构使芯片上面积资源紧张的状态得以缓解,一些对性能至关重要的结构,象大的寄存器元件,转换查找缓存(TLB)S协处理器和乘除单元都可以装在同一块芯片上。这些附加的资源又使处理器增加了很大的性能优势。事实上,RISC并非一定严格地完全具备上述特点,有些称作RISC型的系统甚至违背了上述某方面。上述特点应被当作一种指导原则来解释RISC的性质。放宽点讲,满足大部分这些特点的系统就能被看作RISC。
优点
RISC在保持成本降低的同时能很好地提高速度。
适用VLSI(VERYLARGESCALEINTEGRATION)工艺。
由于RISC指令集清简,使之只需相对小而简单控制单元的译码和硬件执行子系统。这导致在用VLSI实现计算机系统时的下列结果:
- 控制单元所占的芯片面积大为减少,如RlsCI占10%,而通常CISC占50%以上。因而,在RISCVLSI芯片,留下更多可用空间,使整个CPU和其它部件故在一块芯片上(如高速缓存,浮点单元,部分主存,存贮器管理单元,1/0口)。
- 由于控制区域减少,就可在芯片上按放大量的CPU寄存器(RISCI是138个)。
- 通过减少VLSI芯片上控制单元面积和放置大量一致的寄存器,可以提高芯片的正则化因子(regulariZationfaetor)。基本上,正则化因子越高,VLSI设计成本越低。
- 有利于使用GaAs(砷化稼)VLSI芯片的实现技术,因其适于制造密度较高的芯片。总之,是降低了复杂程序,简化了结构。
速度高。
- RISC特点之一是指令流水线,而指令长短和执行时间的致性,使流水中的等待和保持时间减到最少。这些因素有利提高计算速度。RISC中较简单和较小的控制单元中的门也较少,这使控制单元信号的传送路径较短,使操作速度加快。指令集的精简,导致译码系统小而简单,供RISC的译码速度加快。硬连线所减少的控制单元,使RISC比通常由微程序控制的系统执行起来要快。相对大的CPU寄存器,减少了CPU与内存间取指,存数等操作的冲突;大的寄存器组可用来存贮调用过程被调用过程之间传递的参数,存贮中断程序的有关信息,否则,这些信息只能保存在内存中。所有这些都节约了大量的计算机处理时间。优化编译中的分支延迟技术也对提高速度作出了贡献。总的看,在功能大致相同的情况下,RISC一般是CISC处理速度的2~4倍。
- 降低设计成本,提高可靠性
- CPU相对小而简单的控制单元通常会导致下列成本及可靠性方面的益处:a.RISC控制单元的设计时间缩短,这可使整个设计成本降低。b.短的设计时间使最终产品在设计完成时被废弃的可能性减少。c.较简单,较小的控制单元能减少设计错误,从而提高可靠性;而且,定位和修正错误也比CISC容易。d.因指令格式l(或2种)简而少,所有指令又有规范长度,所以指令不会越过字界限,也不会跨越虚存(iVrtualMemory)中不同的页,这排除了虚存管理子系统设计中潜在的困难。
- 支持高级语言,而不支持汇编语言
- 从CISC向RISC演变的过程,类似于汇编语言向高级语言的发展过程。用汇编语言写程序要使用一些精心设计的复杂指令,而高级语言的编写几乎不同复杂指令。RISC在追求精简指令的同时,把体系结构和优化编译的设计紧密结合起来,使综合结果引起整体性能的改善。如果说RISC得以发展是基于VLSI技术和编译技术的提高,那么可以理解为用复杂的编译代替了复杂的指令系统,甚至可认为是把硬件的难题转移给了软件。而近年来智能型编译器的迅速发展,能很方便地胜任这项任务,RISC的优势也许正在于此。传统的CISC必有复杂的微码编写与设计工作,使用汇编语言又涉及汇编程序的研制,这些都很费人力和时间。RISC更利于支持高级语言,这也是长以来计算机面临的“软件危机”得以解决的途径之一。RISC的成功在于软件的兼容性。只要通过重新编译使源程级兼容,则已有的软件可方便地在RISC机上运行。
- 编程者(用户)得到的好处
- 简化了的结构使编程者也得到了很多好处:
- 一个更为统一的指令集用起来很方便。
- 由于指令数和周期数之间有一个比较严格的对应关系,代码优化的真实效果就容易度量。
- 编程者对于硬件的把握更为准确。
缺点
当今计算机世界出现了寻觅更好性能的热潮,RISC与CISC既对峙又互补。RISC有其自身的缺点。
编译后指令长度较长,内存需要较大
RISC的缺点与其一些优点直接有关。因为RISC拥有的指令数少,有些在CISC中仅由一条指令完成的功能,在RISC中需二、三条甚至更多条指令,这使RISC代码较长,因而RISC的程序需要更多的内存,内存与CPU间的指令冲突也会增加。研究表明,平均而言,执行同样的功能,一个RISC程序比一个CISC程序长30%。同时,RISC对编译器要求较高,优化编译器的设计是一项极复要且技术要求很高的工作,它又必须由RISC机制造单位自身编制,因为没有RISC详细原始资料不可能产生编译程序的目标代码。这样,第三方公司提供新版本较困难,用户选择余地较小,软件费用增加了。
大寄存器组使寻址复杂,速度降低
RISC系统的一个有争议的特点是其大寄存器组。大寄存器组有前述优点,但另一方面,也有缺点,大寄存器使寻址时间增多,另个,一些编译器使小寄存器组的使用更为有效。CPU寄存器组到底应多大还有待讨论,大寄存器U组还可由高速缓存(CACHE)代替。大寄存器组的不足之处可归结如下:
- 存取时间长。
- 寄存器组占据了更多的芯片空间。
- 先进的编译技术使小寄存器组更有效。
- 如果上下文转换现场的所有CPU寄存器被保存,则大寄存器组会化更多存贮时间。
- 如果使用了窗口指针(RISC的实施要点之一是重叠寄存器窗口,目的是便于参数传递。重叠寄存器窗口要用到窗口指针),寄存器地址译码会较长。同时重叠寄存器也使CPU逻辑变得复杂。
硬连线控制不灵活
出现错误的可能性较大,不易发现和修改错误,处理复杂指令也较困难。(4)单字指令不能使用用于全32位地址的直接内存寻址方式。由于这个原因,一些生产厂家已使一小部分指令具有双字卡(如INTEL80960),使用这样的指令由程序员决定,他可仅用单字指令写完整的程序。
发展前景
RISC技术的基本出发点是通过精减机器指令系统来减少硬件设计的复杂程度,提高指令执行速度。尽管RISC的设计思想对计算机结构发生了巨大影响,并获得了很大成功,但复杂指令集计算机(CISC)技术相对而言则使程序的编制来得更容易些,因此,CISC技术和RISC技术并不是相互孤立的。目前,有一种新的设计思想,它是以提高整个计算机系统的性能为出发点,在结构上吸收了CISC和RISC的优点。如许多CISC设计中采用了RISC技术,美国国家半导休公司的NSC32532微处理器在CISC设计中采用了RISC技术,使指令平均执行时间从原来的6个机器周期降到小于2.4个机器周期,在26MHZ主频下,运行速度达10一12M1PS。Intel80486和Mot。r。la68040也吸收了RISC设计技术,从而达到每条指令平均执行时间小于2个机器周期,仙童公司的Clipper机是综合R1SC与CISC技术优点的32位微处理机,其运行速度高达33MIPS。因此,当前设计处理机的两种主要方法(RISC和ClSC技术)并不是截然分开的,它们是相辅相成的,目前已有人将CISC技术和RISC技术溶合在一起,提出了可写指令集计算机(WISC)结构设想,并具体规定了集中Rlsc和Clsc优点的策略原则,尽管如此,它仍是建立在RlSC概念笋碑上的一个RISC技犬的进一步发屏。
目前大多数RISC处理器已达到了每个周期执行一条指令的目标(即CPI比率),但这并不是极限,RISC技术中又出现了超级标量和超级流水线技术。超级标量技术就是使微处理器在一个时钟周期内并行地执行几条指令,而超级流水线技术则是主流水线段(指令译码和指令执行)只占一个时钟周期的一部分,这样,仍可在一个时钟周期内同时执行几条指令Intel8096。就采用了超级标量技术,它能同时执行整数指令和浮点指令.IBM公司的RS/6000也采用的是超级标量结构,处理器包含三个不同的处理部件:定点处理器、浮点处理器、分支处理器,一个时钟周期可执行四条指令(4IPC),最多可达6IPc。RISc科学家指出,过去那种令人鼓舞的微处理器性能提高过程不大可能继续下去,今后,Cache的容量及其结构和优化编译器将成为提高计算机性能的关键因素。未来发展重点将放在多处理器技术上 [1] 。
以上是关于精简指令集计算机的主要内容,如果未能解决你的问题,请参考以下文章