收藏 分享(赏)

第三章 CPU的设计.doc

上传人:scg750829 文档编号:8137610 上传时间:2019-06-10 格式:DOC 页数:20 大小:115.50KB
下载 相关 举报
第三章 CPU的设计.doc_第1页
第1页 / 共20页
第三章 CPU的设计.doc_第2页
第2页 / 共20页
第三章 CPU的设计.doc_第3页
第3页 / 共20页
第三章 CPU的设计.doc_第4页
第4页 / 共20页
第三章 CPU的设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第三章 CPU 的设计3.1 引言如果说前面指令集的设计是计算机处理器设计的蓝图,那么如何实现将直接影响到指令集的性能,而处理器实现中的一些问题也会或多或少地影响到指令集的设计。RISC 思想的提出,就是针对 CISC 指令集处理器实现中的困难,从简化指令集出发,降低处理器实现的复杂度,达到降低处理器的开发成本,提高处理器并行度的目的。处理器实现直接影响到两个重要的性能指标:每条指令实现时钟数(clock per instruction , CPI)和时钟频率。正象一个木桶能装水的多少取决于它最短一块木头的长度,处理器中各部件最慢的一个决定了处理器的时钟频率,所以处理器的设计必须使每个部件都能

2、以相近的速率协调运行。通常,我们把处理器又分为两部分:一部分执行算术逻辑运算,以完成“计算机“的计算功能,通常称为数据通道,另一部分则解释计算机机器指令代码,并按这些代码发出控制信号控制数据通道的工作以完成指令,称为控制器。前者由 ALU(算术逻辑运算模块, Arithmetic logic unit)和一些寄存器构成,为处理器工作时数据实际流过的路径,故称为数据通道;后一部分则是处理器中的主控部分,是将指令转换为实际硬件动作的桥梁,故而设计上最复杂,也最容易体现一种处理器的特色。一般处理器的设计主要就是指控制器设计。3.2 数据通道 (datapath)数据通道是处理器中处理数据的部件,数据

3、从主存取出,经数据通道的处理,得到所需要的结果后,再送回主存存放。整个数据通道的执行受控制器的控制,实际上也就是受指令的控制。图 3.1 典型的数据通道组成示意图图 3.1 是一个典型的数据通道组成示意图,在图中也表示出了控制器、主存与数据通道的密切关系,数据通道本身由一个算术逻辑部件(Arithmetic Logic Units,ALU)和一些寄存器组成,并包括两者间的通信渠道。在冯纽曼体系中,程序数据的地位是等同的,一起存储在主存中,为了得到适由数据通道执行的指令,首先必须在主存中寻找到指令。这项工作由一个叫程序计数器(Program Counter ,PC)的部件来完成。PC 是一个专用

4、的寄存器,存放当前所执行指令的地址 ,供控制器读取指令时使用。同时,这个寄存器必须随时改变存放的内容,以便使程序能按序执行下去。比如,在正常情况下,每条指令执行前都必须将 PC 中的值增加一个指令长度 ,取顺序执行的下一条指令,这项工作则由 ALU 完成。ALU 不仅是一个可以完成 PC 递增功能的部件,还是一个通用的计算功能模块。它能独立完成所有的基本运算如加,减,与,或,异或和移位等,另外还可以在控制器的控制下完成一些更复杂的运算如乘除等,同时也能够对数据不加处理而直接传送。由于冯纽曼体系计算机的基本功能就是数值计算,因此 ALU 具有十分重要的地位。与寄存器部件不同 ,它是一种非记忆的逻

5、辑部件,其输出完全依赖于当前输入;而寄存器部件则具有内部状态,其输出由当前输入和内部状态共同决定,建去的输入会影响内部状态,从而使寄存器具有记忆。MAR 和 MDR 是为了访问内存而设的。MAR 即 Memory Address Register,存放访问内存的地址,MDR 则是 memory data register,存放从内存取回的数据,它们的作用在后面还要讲到。此外,Temp 是一个数据访问中起着暂存作用的寄存器,IAR 专为中断使用。上述这些寄存器为专用寄存器,它们的特点是一般对用户是透明的,用户或者不能直接控制它们的内容(如 PC 和 IAR),或者完全是处理器内部实现的细节,用户

6、根本不知道它们的存在(如 MAR, MDR, Temp 等)。这些寄存器为了完成处理器的某些特定功能而设,而不能自由地用于数据计算,这也是专用寄存器这个名称的来由。与专用寄存器相对应的是通用寄存器,顾名思义,它们就是能被用户自动地用于数据计算中的寄存器。在许多计算机中,以 R1,R2.Rn 来命名它们, 它们的使用没有差别。多个通用寄存器合起来组成一个寄存器堆(registerfile),它们也是存贮器层次结构中的最高层,属于最小也是最快的数据暂存部件。因此,如何最大限度地在计算中利用通用寄存器是提高编译器性能的关键。内部总线将各寄存器与 ALU 连接起来,在我们的例子中,这样的总线共有三条:

7、两条源总线 S1,S2 和一条目的总线 Dest。S1,S2 传递 ALU 的源操作数级 ALU,Dest 则将 ALU 运算的结果送回各寄存器,这时,ALU 若执行直接传输功能( PASS1,将 S1 上的数据传到Dest 或 PASS2,将 S2 上的数据传到 Dest) ,就可以作为源和目的总线间的传输通道,完成数据在寄存器间的数据传递。通用寄存器、一部分专用寄存器(如 PC 和 IAR)和标志寄存器 flag 加在一起,就构成了程序状态(state)的主要部分,如果我们能保存这些寄存器的内容也就是说程序状态,那么以后我们只要将这些寄存器的值如数恢复成原先的,并重新开始运行,只要程序的输

8、入不变,就能得到原先的运行结果,这一点对地多进程思想的出现具有重要影响。当然实际程序状态除了包括寄存器外,还应包括内存中一些单元的值。数据通道的实现影响着处理器主频大小。数据计算到整个通道所以通道中最慢的部件就限制了整个处理器的主频。又因为它是处理器中实际进行数据处理的部分,因此许多处理器优化技术如流水线(pipeline) 、指令级并行(instructor level parallel, ILP)都是围绕着它展开的。3.3 指令执行原理在讨论控制器的工作原理之前,我们先介绍一下数据通道应怎样工作,才能完成指令。一般说来,一条指令的执行分为五步:1.取指令(instruction fetch

9、)。在这一步中,由 PC 指示地址上的指令被取到指令寄存器 IR 中。表示成MAR Rs2 或R2立即数跳转指令 无条件绝对跳转 JMP Rs 跳转到 Rs 寄存器内容所指地址开始执行跳转指令 无条件相对跳转指令JR 立即数 跳转到距当前运行地址位移为指定立即数的地址继续执行跳转指令 为真条件跳转指令BT Rs,立即数 当 RS=1 时跳到距当前选定了地址位移为指定 立即数 的地址继续执行跳转指令 为假条件跳转指令BF Rs,立即数 当 RS=0 时跳到距当前选定了地址位移为指定 立即数 的地址继续执行跳转指令 自陷指令 TRAP 立即数 中断当前程序,转向立即数所指地址执行跳转指令 转子程序

10、 CALL Rs, Rd 转到 Rs 寄存器所指地址继续执行将 PC 保存到 Rd条件设置指令相等设置 SEQ Rd,Rs1,Rs2 当 Rs1=Rs2(Rs1=立即数)时置 Rd 为 1,否则置其为 0条件设置指令大于设置 SGT Rd,Rs1,Rs2 当 Rs1Rs2(Rs1=立即数)时置 Rd 为 1,否则置 0条件设置指令小于设置 SLT Rd,Rs1,Rs2 当 Rs1S210)PassS1:传递 S1 到 D,D=S1其中,D 表示经 ALU 处理后,送到目的总线上的值,S1,S2 分别表款来自两条源总线的ALU 两个输入。另一个有必要加以说明的域是 Misc 域,这是微指令执行的

11、外部操作。在我们的微指令集中,这样的操作共有五种,分别是:1)读指令:从内存将当前要执行的指令读入指令寄存器 IR。(Instrread)2)读数据:从内存读数据到 MDR。(Dataread)3)写数据:向内存写数据。(Datawrite)4)读寄存器:从寄存器堆将数据读到接口寄存器 A,B。(AB-RF)5)写寄存器:把已存到接口寄存器 C 的数据写入寄存器堆。(RF-C)最后一个需说明的域是跳转条件域,在我们的设计中。共有四种跳转情况:1)继续执行下一条微指令,这是 “正常“的顺序执行格式2)无条件跳转至某一地址3)条件跳转,共有五种条件应予判断 ;是否有挂起中断检测那些指令间发生的中断

12、,如有则跳转至中断处理程序地址(Int)存贮器访问是否完成通常若未完成则应停在当前微指令上直至完成(Mem)ALU 输出是否为 0 判断 ALU 的输出是否为 0,即每一位均为 0(Zero)ALU 输出是否为负判断 ALU 的输出是否为负数,即补码表示时 ,它的首位为1(negative)载入操作符是否为载入(load)4)分支跳转,即跟据指令操作符 ,转向相应的微程序入口执行,这发生在取指令之后,依照对指令的解码跳转至相应微程/序入口(Decode1)寄存器和条件设置指令中,依照不同的指令转入不同的微程序执行。(Decode2)除此之外,微指令中另外几个域的语法规范说明如下:Dest:这个

13、域中只出现专用和接口寄存器名,意味着将目的总线上的数据写入这个寄存器S1/S2:这个域中可出现专用/接口寄存器名及常数标志 constant,若为专用/接口寄存器名,意味着将此寄存器输出数据到 S1/S2,作为 ALU 的源操作数 ,若为常数标志,则此源操作数由微指令的 C 域提供。label:这个不占实际微指令空间,只是一个增加微程序可读性的标识,为跳转标志提供指示。对应于硬连线控制器的图 3.16,列出微指令控制器的取址部分如下:绝对地址LabelDest ALU S1 S2 C Misc cond 跳转标号 注释0 Ifetch Interrupt? Intrpt 检查中断,若有,处理之

14、1 Iloop InstrRead Mem? Iloop 等待存贮器访问结束2 PC ADD PC Constant 4 AB RF Decode13 Intrpt IAR PassS1 PC 中断处理,IARPC4 PC PassS2 Constant 0 uncond Ifetch PC0(中断向量)取下一条指令图 3.25相应的跳转地址标号与指令操作符对应表如下:操作符 跳转地址标号 所在图例内存操作 Mem: 图 3.27特殊传递操作MOVRIS MOVAIS: 图 3.27特殊传递操作MOVSIR MOVSIA: 图 3.27寄存器型指令,两个操作符均为寄存器 Reg: 图 3.28

15、寄存器指令,一个操作符为立即数 Imm 图 3.28为真跳转(BT) BT: 图 3.28为假跳转(BF) BF: 图 3.28无条件跳转变 Jmp: 图 3.28自陷(Trap) Trap: 图 3.28调用(Call) Call: 图 3.28图 3.26对应于图 3.17 和图 3.22,我们画出内存访问和数据传送微程序如图 3.27(a)为了便于理解,将对应的流程图作于图 3.27(b)绝对地址Label Dest ALU S1 S2 C Misc cond 跳转标号 注释5 Mem: MAR ADD A imm16 load? Load 判断是否为load 指令6 Store: MD

16、R PassS2 B Store 指令7 Dloop: DatawriteMem? Dloop 等待内存写操作结束8 无条件Ifetch 取下条指令9 Load: DatareadMem? Load 从内存读入数据到MDR10 C PassS1 MDR 无条件Write 从 MDR传入 C11 MovR2S:IAR PassS1 A 无条件Ifetch12 MovS2R:C PassS1 IAR13 Write1:Rd-C 无条件Ifetch 写入目的寄存器,取下条指令(a)(b)图 3.27微程序控制的改进微程序控制的改进,主要是两个目的:减少 CPI 和减少微程序长度。与硬连线,相比,微程

17、序控制的 CPI 要多一些,如图 3.28 所示,这种增加主要在三个地方连线,存贮一载入指令(各多 1 个指令周期 ),条件跳转 BF(参不跳转时多一个指令周期 ),最后一个,也是最重要的是取指令多用一个周期。微程序 硬连线存贮 4+等待状态 3+等待状态载入 4+等待状态 4+等待状态ALU 运算 3 3条件运算 4 4BT 2(跳转)1( 不跳转 ) 2(跳转)1( 不跳转 )BF 2 2(跳转)1( 不跳转 )JMP 1 1CALL 2 3取指 3 2图 3.28 硬连线控制与微程序控制 CPI 比较因为取指令步骤每条指令都必须有,多一个指令周期相当于所有指令都多一个指令期,所以它对 C

18、PI 的影响最大,我们先来解决这个问题。一个取指微程序(图 3.25)和取指硬连线状态图(图 3.16)我们就会发现,这个周期的增加是由于微程序在执行前先进行了一拍中断判断引起的,而在适当修改硬件连线后,我们可以将中断合并到解码部分,也就是将中断也作为解码的入口之一,修改取指部分微程序如下图 3.29 所示:绝对地址LabelDest ALU S1 S2 C Misc cond 跳转标号注释0 Ifetch Instrread Mem? Ifetch IR-MPC等待内存操作完毕1 PC ADD PC Constant 4 AB-RFDecode12 Intrpt IAR SUB PC Con

19、stant 4 中断处理3 PC PassS2 Constant 4 无条件 Ifetch 继续取指图 3.29 修改后的取指部分微程序同时在解码表中加条 Intrpt 的入口其次是内存访问的写入指令(store) 每条多一个指令周期。分析一下微程序我们就可以看到,这一来自无条件跳回取指微程序指令。而在硬连线实现中,一个状态可以依不同的条件,转入不同的状态,从而省去了这一拍。如果我们引入前面提到的 Stall 技术,使微程序在等待内存操作时自动暂停运行而不用循环检测,微指令 7 就可变为绝对地址LabelDest ALU S1 S2 C Misc cond 跳转标号 注释7 Dloop: Da

20、tawrite 无条件 Dloop 取下条指令而微指令 8 不再需要,这一拍即可省去。从这个例子我们也可看到,有时微指令实现在特定外围硬件条件下有着固有的缺陷。最后还有一个问题是 BF 指令在不跳转时也要多花一拍,因为我们的条件判断中 ,只有为0 的条件判断,而没有不等于 0 时的条件判断,非 0 判断时只能靠一条判断 ALU 输出为 0 的条件跳转加上一条无条件跳转共同实现,从而多了一拍,为了解决这个问题,可以增加一个“不为零“ 条件判断 ,这样 BF 指令的微程序就可写为绝对地址LabelDest ALU S1 S2 C Misc cond 跳转标号注释BF: SUB A Constant

21、0 not0? IfetchPC ADD PC 立即数 无条件 Ifetch节省了这个多余的一拍。值得注意的是,以上这些微指令的优化并非是没有代价的,每一次优化都伴随着大量的硬件改动,并可能导致成本上升和开发费用增加,同时,增加的硬件还可能影响主频,使处理器速度不能完全随 CPI 下降而同步增长。微指令优化的另一个方面是空间优化,也就是减少微程序所需的控存空间大小。做到这一点最主要的途径当然是缩短每一条微指令的长度。前面我们已经讲过通过编码微指令的方法缩短微指令长度,这里我们再介绍一种叫作多微指令格式(multiple-microinstruction format)的方法。观察一下前面所列的

22、微程序我们就会发现,在这些微程序中,很多域都是“空白“ 的,也就未利用的。事实上前面我们定义的微指令格式只是考虑了所有微指令的需要之总和,许多域对于一些微指令来说是根本不可能用到的,如在 ALU 运算指令中就不可能遇到任何等待情况 ,这一类指令中所有的 cond 域都被浪费了,因此,我们可以使用多种微指令格式,将一些不会用到的域从这类微指令的格式中去掉。为了避免混淆,必须在这类多微指令格式中加一个说明项,说明以后各项该如何解释。这个说明项就是引入多微指令格式后的多余开销。仍以我们本章中讨论的微指令格式为例(图 3.30)在分析了各种微指令对各域的使用情况后,我们可以将微指令分为两类,以两种格式

23、表示,如图 3.30 所示.在这种格式中,注意到常数域和跳转地址域从未同时出现,我们还合并了这两个域。目的寄存器 ALU 操作 源寄存器 1 源寄存器 2 常数 外部操作 跳转条件 跳转地址3b 4b 4b 4b 5b 3b 4b 6b(a)微指令原格式格式说明标识(0) 目的寄存器 ALU 操作 源寄存器 1 源寄存器 2 常数/跳转地址1b 3b 4b 4b 4b 6b(b) ALU/跳转(A/J) 微指令格式,格式说明标识 =0格式说明标识(1) 目的寄存器 源寄存器 外部操作 跳转条件 常数/跳转地址1b 3b 4b 4b 4b 6b(c ) 传递/条件跳转/ 操作(T/M/B) 微指

24、令格式 ,格式说明标识=1图 3.30 多微指令格式我们将两种格式分别称为 A/J 格式(ALU/Jump)和 T/M/B(Transfer/Misc/Branch)因们分别进行 ALU/跳转微操作和传输 /操作/ 条件跳转微操作。同时,T/M/B 格式中的跳转条件域cond 的含义和以前不同,在 T/M/B 格式中,隐含规定其 ALU 操作一律为传输 S1 总线上的值到目的总线,所以它没有 ALU 状态可判断,所判断的是前一条 A/J 格式微指令产生的 ALU 状态。通过采用多微指令格式,我们指微指令长度从 32 位缩短到 22 位,使所需的存贮空间一下减少了 1/3,但最后真正的控存空间并

25、不会一下减少这么多,因为减少了微指令的域可能使一些原本可并行进行的操作不再能并行,从而增加了微程序长度。以取指部分微程序为例,采用多微指令格式后,微程序变成图 3.31 所示。Label 格式说明Dest ALU S1 S2 Misc Cond C/跳转标号注释Label 格式说明Dest ALU S1 S2 Misc Cond C/跳转标号注释Ifetch: M/T/B - - Interrupt?Intrpt 中断检查Iloop: M/T/B - - Instrread Mem? Iloop 取指*A/J PC ADD PC Constant- - 4 PCPC+4*M/T/B - - A

26、B RF Decode1Intrpt: A/J IAR PassS1 PC - - Intrpt 中断处理A/J PC SUB Temp Temp - - Ifetch图 3.31 修改后的微指令打 * 的两条微指令在以前的微程序中是一条微指令,但在采用了多微指令格式后,就只能分两步运行了。总结处理器的设计包括数据通道和控制器的设计两部分。这两部分互相影响,互相联系,而控制器作为主控方,其设计也格外复杂。占了处理器设计的最主要部分。微程序控制设计是 Wilkes 于 1953 年提出的,在此之前硬连线控制一直是控制器设计的唯一方法,微程序控制具有使用灵活,便于仿真和易于实现一些复杂的控制功能等

27、优点,比如,在 IBM 370 138 型计算机中 ,就是在没有任何附加硬件支持的情况下,完全靠微指令控制器完成了虚存功能,但微指令的一个重要特性是它的性能严重依赖于控存的读取速度。实际上,它的命运也是和存贮器技术的发展紧密联系的,当 Wilkes 最初提出微程度时,就是因为当时没有合适于作控存的可靠高速存贮器件而无法实际投入使用。当半导体存贮器开始出现时,微程序技术也就开始得到重视,IBM 首先采用了它作为 IBM 360 系列处理器控制器的实现技术,接着,微程序技术在许多处理器到了应用,因为当时的主存还普遍采用磁芯存贮器,速度运远比不上半导体存贮器,使用半导体存贮器作为控存不会对整个计算机

28、性能产生影响,但到了七十年代,随着半导体存贮器技术的发展和 cache 技术的普及,控存的读取速度和内存的读取速度已相差不远,从而使处理器的处理速度相对内存而言落后了,在这种情况下,到了八十年代中期,微程序控制又逐渐被能保证处理器性能的硬连线控制所替代。中断则是最初用来处理数值计算中的异常如溢出等的一种技术,因为它能解决慢连外设与快连的处理器协同工作时的同步问题,增加 CPU 利用率( 见第五章),故而又开始用在 I/O 中,为了调试程序的方便,模拟以上这种中断又产生了软中断的概念,但随即由于发现它在构筑操作系统时提供一些方便,使软中断逐渐成为操作系统中系统调用实现的标准方法。以上这些都是处理器设计中最基本的概念,但即使是这些,也是经过许多发展和演变。为了进一步提高处理器性能,又出现了流水线(Pipeline)等技术,这就是以下几章所要讲述的内容。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报