计算机组成第五章 |
您所在的位置:网站首页 › 步进阶梯指令执行顺序图 › 计算机组成第五章 |
计算机组成第五章
中央处理器CPU的功能和基本结构运算器的功能控制器的功能运算器的结构控制器的基本结构知识点回顾
指令执行过程知识点总结
数据通路的功能和基本结构(单总线)专用通路知识点回顾
控制器的功能和工作原理(硬布线)硬布线控制器知识点回顾微程序控制器知识点回顾
指令流水线流水线的性能指标指令流水线影响因素分类知识点回顾
流水线的分类流水线的多发技术知识点回顾
中央处理器
知识点框架 CPU的功能有如下所示(一下功能由运算器和控制器完成): 1.指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。 2.操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。 3.时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。 4.数据加工。对数据进行算术和逻辑运算。 5.中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。 运算器的功能(1)对数据进行加工 控制器的功能协调并控制计算机各部件执行程序的指令序列,基本功能包括取指令、分析指令、执行指令 (1)取指令:自动形成指令地址:自动发出取指令的命令。 (2)分析指令:操作码译码(分析本条指令要完成什么操作); 产生操作数的有效地址。 (3)执行指令:根据分析指令得到的“操作命令”和“操作数地址”,形成操作信号控制序列,控制运算器、存储器以及I/O设备完成相应的操作。 (4)中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请求(如打印机请求打印一行字符)。 运算器的结构1.算术逻辑单元:主要功能是进行算术/逻辑运算。 2.通用寄存器组:如AX、 BX、CX、DX、SP等,用于存放操作数(包括源操作数、H的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。 3.暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。(防止原来的数据被破坏) 4.累加寄存器:它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。 5.程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF) 、零标志(ZF) 、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。 6.移位器:对运算结果进行移位运算。 7.计数器:控制乘除运算的操作步数。 专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路 通用寄存器和ALU的连接方式有两种: (1)使用多路选择器,根据控制信号选择一路输出 (2)使用三态门可以控制每一路是否输出(这个比较常用,每条线一个信号,选择开关) 这个方法性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现(这个其实就是多总线方式) 但是连线方式是用总线来实现的,因此实际形象还是最上面的图(这个总线连接方式:单总线方式,结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低) 控制器的基本结构1.程序计数器:用于指出下一条指令在主存中的存放地址。CPU就 是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。(看到+1的就是PC) 2.指令寄存器:用于保存当前正在执行的那条指令。 3.指令译码器:仪对操作码字段进行译码,向控制器提供特定的操作信号。 4.微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。(因为指令不只是被翻译过来,还需要很多的别的事情,所以会结合指令译码器、时序系统和标志寄存器发出操作) 5.时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK) 分频得到。 6.存储器地址寄存器:用于存放所要访问的主存单元的地址。(这个就是MAR) 7.存储器数据寄存器:用于存放向主存写入的信息或从主存中读出的信息。(这个就是MDR) 完整的CPU结构 指令周期:CPU从主存中每取出并执行一条指令所需的全部时间 指令周期大概可以分为:取指令和执行周期
一个机器周期有包含若干时钟周期(也叫节拍、T周期或CPU时钟周期,他是CPU操作的最基本单位) 三者关系如下图所示
指令周期流程
取值周期: 2.CU发出控制信号,经控制总线传到主存,这里是读信号,记做: 1→R 3.将MAR所指主存中的内容经数据总线送入MDR,记做: M(MAR) →MDR 4.将MDR中的内容(此时是指令)送入IR,记做: (MDR) > IR 5.Cu发出控制信号,形成下一"条指令地址,记做: (PC)+1 →PC 间址周期: (这个其实不是从PC取数,而是从MDR或者IR取地址,然后在取出数据,至于到底是哪个就看具体情况了) 执行周期: 执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。 不同指令的执行周期操作不同,因此没有统一的数据流向。 中断周期: 1.CU控制将SP减1,修改后的地址送入MAR 记做: (SP)-1 →SP,(SP) →MAR 本质上是将断点存入某个存储单元,假设其 地址为a,故可记做: a→MAR 2.CU发出控制信号,启动主存做写操作, 记做: 1→W 3.将断点(PC内容)送入MDR, 记做: (PC) > MDR 4.CU控制将中断服务程序的入口地址 (由向量地址形成部件产生)送入PC, 记做:向量地址→PC 指令执行方案: 一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。 方案1: 对所有指令都选用相同的执行时间来完成。指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。(就是所有指令都用一样的时间,时长按照最长的来算) 方案2: 对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行:可选用不同个数的时钟周期来完成不同指令的执行过程。 需要更复杂的硬件设计。 (这个方法就是去掉了那些可能会空余的时间,但是硬件设计也更复杂了) 方案3: 在每一个时钟周期启动一条指令, 尽量让多条指令同时运行,但各白处在不同的执行步骤中。指令之间并行执行。 (这里运用了并行操作,使得硬件也得到了利用) 知识点总结数据通路:数据在功能部件之间传送的路径(可以理解为就是在硬件中的传输路径) 过程: 信息从哪里开始 中间经过哪些部件 最后传到哪里 注:是由控制部件(微操作信号发生器)产生的控制信号建立数据通路 数据通路的基本结构: (1)CPU内部单总线方式 (2)CPU内部多总线方式 (3)专用数据通路方式 其实(1)和(2)就是总线的根数多少 单总线方式 内部总线是指同一部件,如CPU内 部连接各寄存器及运算部件之间的总线 系统总线是指同一台计算机系统的各部件,如CPU、 内存、通道和各类/O接口问互相连接的总线。 注意:图中的Y和Z其实是暂存器,下文为了容易叫名字,命名为Y和Z 我们可以把数据传送分成三种: (1)寄存器之间的数据传送(内部总线被称为BUS) 比如把PC内容送至MAR,实现传送操作的流程及控制信号为: (PC)→Bus \qquad PCout有效,PC内容送总线 Bus→MAR \qquad MARin有效,总线内容送MAR (2)主存与CPU之间的数据传送 比如CPU从主存读取指令,实现传送操作的流程及控制信号为: (PC)→Bus- >MAR \qquad PCout和IMARin有效,现行指令地址→MAR 1→R \qquad CU发读命令(通过控制总线发出,图中术画出) MEM(MAR)→MDR \qquad MDRin有效 MDR- >Bus→IR \qquad MDRout和IRin有效,现行指令→IR (其实就是总线和寄存器之间以及寄存器和寄存器之间的相互交换数据) (3)执行算数或逻辑运算 比如一条加法指令,微操作序列及控制信号为: Ad(IR)→Bus →MAR \qquad MDRout和IMARin有效 1→R \qquad CU发读命令 MEM(MAR)→数据线→MDR \qquad MDRin有 效 MDR→Bus→Y \qquad MDRout和IYin有效,操作数→Y (ACC)+(Y)->Z \qquad ACCout和ALUin有效,CU向ALU发送加命令 Z→ACC \qquad Zout和ACCin有效,结果→ACC (这里其实也就是(1)和(2)的组合,注意(ACC)+(Y)->Z这一句其实是省略了,实际上ACC中的值也是从BUS传过来的) 例题: 设有如图所示的单总线结构,分析指令ADD (R0), R1的指令流程和控制信号。 (带括号的寄存器表示存的是地址;不带括号的寄存器表示存的是操作数) 1.分析指令功能和指令周期 功能: ((R0))+(R1)→(R0) 取指周期、间址周期、执行周期 2.写出各阶段的指令流程 取指周期:公共操作 时序微操作有效控制信号1(PC)→MARPCout,MARin2M(MAR)→MDR \ PC→PC+1MemR,MARout,MDRinE3(MDR)→IRMDRout,IRin4指令移码间址周期:完成取数操作,被加数在主存中,加数已经放在寄存器R1中 时序微操作有效控制信号1(R0)→MARPCout,MARin2M(MAR)→MDRMemR,MARout,MDRinE3(MDR)→YMDRout,IRin执行周期: 时序微操作有效控制信号1(R1)+(Y)→ZRlout,ALUin,CU向ALU发ADD控制信号2(Z)→MDRZout,MDRin3(MDR)→M(MAR)MemW,MDRoutE,MARout 专用通路
(PC)→MAR C 0 \qquad C_{0} C0有效 (MAR)→主存 C 1 \qquad C_{1} C1有效 1→R \qquad 控制单元向主存发送读命令 M(MAR)→MDR C 2 \qquad C_{2} C2有效 (MDR)-IR C 3 \qquad C_{3} C3有 效 (PC)+1→PC Op(IR)→CU C 4 \qquad C_{4} C4有效 (其实就是专门有个信号控制电路开关,寄存器之间有专门的电路连接) 例题: 下图是一个简化了的CPU与主存连接结构示意图(图中省略了所有的多路选择器)。其中有一个累加寄存器(ACC) 、一个状态数据寄存器和其他4个寄存器:主存地址寄存器(MAR) 、主存数据寄存器(MDR)、程序寄存器(PC) 和指令寄存器(IR) ,各部件及其之间的连线表示数据通路,箭头表示信息传递方向。 要求: (1)请写出图中a、b、c、d 4个寄存器的名称。 可以从d的+1看出d是PC 可以从另外三个都要往c中放看出,c是MAR 可以从a到达的ALU来看,a是MDR 可以从b获得微操作信号来看,b是IR (2)简述图中取指令的数据通路。 (PC)→MAR M(MAR)→MDR (MDR)→IR (3)简述数据在运算器和主存之间进行存/取访问的数据通路。 存/取的数据放到ACC中 设数据地址已放入MAR 取: M(MAR) → MDR (MDR) → ALU > ACC 存: (ACC) → MDR (MDR) → M(MAR) (4)简述完成指令LDA X的数据通路(X为主存地址,LDA的功能为(X)→ACC)。 X→MAR M(MAR)→MDR (MDR)→ALU→ACC (5)简述完成指令ADD Y的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)→ACC)。 Y→MAR M(MAR)→MDR (MDR)→ALU, (ACC)→ALU ALU→ACC (6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)→Z). Z→MAR (ACC)→MDR (MDR) →M(MAR) (这个其实就是保持着一个原则,要取主存、存到主存就把地址放到MAR,要数据就把数据放到MDR) 知识点回顾多总线和单总线简单的来说差不多,就是多总线的时候不需要暂存器存储,能直接放进去 控制器的功能和工作原理(硬布线)
大部分的数据传输是通过总线进行传输的,可以从图中看出只有数据总线是连接到控制器的,因为控制器的传输都是通过运算器进行的,只有需要传入数据的时候会用到数据总线 数据总线:内存储器、输入设备和输出设备通过数据总线与其他部件传送数据 地址总线:内存储器、输入设备和输出设备从地址总线接收地址信息 控制总线:内存储器、输入设备和输出设备从控制总线得到控制信号 输入设备和输出设备通过接口电路与总线相连接(因为输入输出设备的数据种类太多,所以要用接口进行处理) 注: (1)运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据 (2)控制器部件送出指令地址到地址总线(就是PC中的内容传递到地址总线上去) (3)控制器部件从数据总线接收到指令信息(这里指令信息可能是去IR也可能是去运算器,这时候就是靠周期来判断,如果是取指周期就是放入IR,如果是执行周期就是放入运算器) (4)控制器部件向系统中的部件提供它们运行所需要的控制信号。(就是控制信号的微控制程序硬件发送控制信息) (5)控制器部件从运算器部件接收指令转移地址(其实就是如果是跳转指令的话要把PC指向跳转的地址) 控制器是计算机系统的指挥中心,控制器的主要功能有: 1)从主存中取出一条指令,并指出下一条指令在主存中的位置。 2)对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。 3)指挥并控制CPU、主存、输入和输出设备之间的数据流动方向。 控制器最重要的就是控制单元 控制单元的输入和输出如下所示 输入: (1)指令寄存器 OP(IR)→ CU控制信号的产生与操作码有关 (2)时钟 一个时钟脉冲发一个操作命令或一组需要同时执行的操作命令 (3)标志 如条件转移指令,根据相应的标志位决定下一步操作 (4)外来信号 如:中断请求信号INTR 总线请求信号HRQ 输出: (1) CPU内部的控制信号 寄存器之间的数据传输、PC的修改、控制ALU进行相应的运算 (2)到控制总线的控制信号 到存储器:访存控制信号 M R E Q ‾ \overline{MREQ} MREQ、读命令 R D ‾ \overline{RD} RD、写命令 W R ‾ \overline{WR} WR 到/0设备:访问I/0设 备的控制信号 I O ‾ \overline{IO} IO 中断响应信号INTA、总线响应信号HLDA (CU的设计主要就是硬布线和微程序,其中硬布线是组合逻辑电路,但是在整个电路中还需要一些触发器,因此是组合逻辑电路+触发器,最终就是一个时序逻辑电路;而运算器就相对应比较死板,就是组合逻辑电路,只做对应操作) 硬布线控制器
至于为什么指令寄存器为什么不放进去,因为指令寄存器的方式和标志不同(标志是一条线表示信号,而指令寄存器就是n为操作码的不同编号表示一位,所以其实中间还是要通过一个译码器进行转换) 而时钟频率其实也是用一个节拍发生器来变成一个有顺序的发生器(这个节拍发生器其实就是如下所示) 最终的详细图就如下所示 通常以存取周期作为基准时间,即机器周期。在存储字长等于指令字长的前提下,取指周期也可看做机器周期。 设计步骤: 1.分析每个阶段的微操作序列(在上文已经讲了很多次了,这次就不讲了) 2.选择CPU的控制方式 3.安排微操作时序 4.电路设计 CPU的控制方式 解释:产生不同微操作命令序列所用的时序控制方式 1.同步控制方式 整个系统所有的控制信号均来自一个统一的时钟信号 通常以最长的微操作序列和最烦琐的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令。(也会有不定长的机器周期来提高效率,但是仍然是使用完全统一的节拍来作为机器周期) 同步控制方式的优点是控制电路简单,缺点是运行速度慢。
各部件按自身固有的速度工作,通过应答方式进行联络。(就是和计网的请求回应的那种模式) 异步控制方式的优点是运行速度快,缺点是控制电路比较复杂。 3.联合控制方式 对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的方法 以上三种方式仅仅是介绍,实际使用的是同步控制方式,并且一个机器周期内安排3个节拍(定长周期) 安排微操作时序 安排微操作时序有一些原则 原则一 \qquad 微操作的先后顺序不得随意更改 原则二 \qquad 被控对象不同的微操作尽量安排在一个节拍内完成 原则三 \qquad 古用时间较短的微操作尽量安排在一个节拍内完成并允许有先后顺序 举例: 取值周期的微操作时序安排 (1)PC→MAR (2)1→R (3)M(MAR)→MDR (6)(PC)+1→PC (4) MDR→IR (5)OP(IR)→ID 可以分析一下: 因为说不清的原因,所以(1)和(2)是可以一起进行的(PS:我实在是没听懂为什么要放一起) (3)必须在(1)之后,因为必须将PC内的内容放入MAR才可以 (4)必须在(3)之后,(5)必须在(4)之后,都可以明显看出是需要前一步做完才能做下一步 (6)这一步不需要前面进行,他只需要等PC的内容放给MAR后就可以进行操作,因此在(1)之后就可以进行 最终的就是这样
间址周期也差不多,我就直接放图了 中断周期 中断周期的三个任务: (1)保存断点 (2)形成中断服务程序的入口地址 (3)关中断 组合逻辑设计 设计步骤: 1.列出操作时间表 2.写出微操作命令的最简表达式 3.画出逻辑图 (1)列出操作时间表 这些表罗列了这些命令需要的指令 (2)逻辑表达式 M (MAR) →MDR微操作命令的逻辑表达式: F E T 1 + I N D ∗ T 1 ∗ ( A D D + S T A + L D A + J M P + B A N ) + E X ∗ T 1 ( A D D + L D A ) FET_{1}+IND*T_{1}*(ADD+STA+LDA+JMP+BAN) + EX*T_{1}(ADD+LDA) FET1+IND∗T1∗(ADD+STA+LDA+JMP+BAN)+EX∗T1(ADD+LDA) = T 1 F E + I N D ( A D D + S T A + L D A + J M P + B A N + E X ( A D D + L D A ) =T_{1}{FE+IND(ADD+STA+LDA+JMP+BAN+EX(ADD+LDA)} =T1FE+IND(ADD+STA+LDA+JMP+BAN+EX(ADD+LDA) (3)逻辑图
这个太难了,别深究了,主要微操作指令序列就行了 知识点回顾工作原理:事先把微操作控制信号存储在一个专门的存储器(控制存储器)中,将每一条机器指 令编写成一一个微程序,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。
相容性微命令:可以同时产生、共同完成某一些微操作的微命令(这个就可以合起来变成一个微命令) 互斥性微命令:在机器中不允许同时出现的微命令。 一条机器指令对应一个微程序微指令基本格式(每条指令取指周期的操作是相同的,所以将取指令操作的微命令统一编成一个微程序,而每条机器指令所对应的具体操作再单独编写一个对应的微程序。) 微程序控制器的基本结构
其中有一个小的考点: 默认是公共的,故如果某指令系统中有n条机器指令,则CM中微程序的个数至少是n+1个(就是如果某指令系统中有n条机器指令,则CM中微程序的个数至少是n+x,x是公共指令的个数) 微指令的格式 (1)水平型微指令 一次能定义并执行多个并行操作 优点:微程序短,执行速度快; 缺点:微指令长,编写微程序较麻烦。 (2)垂直型微指令 类似机器指令操作码的方式,山微操作码字段规定微指令的功能。 优点:微指令短、简单、规整,便于编写微程序: 缺点:微程序长,执行速度慢,工作效率低。 (3)混合型微指令 在垂直型的基础上增加一.些不太复杂的并行操作。微指令较短,仍便于编写;微程序也不长,执行速度加快。 结合两家之长 微指令的编码方式 (1)直接编码(直接控制方式) 在微指令的操作控制字段中,每一位代表一个微操作命令某位为“1”表示该控制信号有效 优点:简单、直观,执行速度快,操作并行性好。 缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大。
将微指令的控制字段分成若干“段",每段经译码后发出控制信号 微命令字段分段的原则: ①互斥性微命令分在同一段内,相容性微命令分在不同段内。(因为只有这样并行操作的时候才只能做一个操作) ②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。 ③一般每个小段还要留出一一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。 优点:可以缩短微指令字长。 缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢。
某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有多少位? 因为还有一个状态位不操作,所以是8、4、13、6、7 因此用二进制表示就是3、2、4、3、3 最终就是需要3+2+4+3+3=15位 (3)字段间接编码方式 一个字段的某些微命令需由另一个字段中 的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。(其实就是要经过多次译码、混合) 优点:可进一步缩短微指令字长。 缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。
1.微指令的下地址字段指出 \qquad 微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式。 2.根据机器指令的操作码形成 \qquad 当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。 3.增量计数器法 \qquad (CMAR)+1→CMAR 4.分支转移 \qquad 转移方式: 指明判别条件;转移地址:指明转移成功后的去向。(这个其实就是转移指令的形式) 5.通过测试网络(不同字段+不同操作形成) 第一条微指令地址由专门 硬件产生 中断周期由硬件产生中断周期微程序首地址 例题: 某计算机采用微程序控制器,共有32条指令,公共的取指令微程序包含2条微指令,各指令对应的微程序平均由4条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是多少位?(第一种方式的例题) 总共需要存储多少条微指令? 32*4+2 = 130条 标注出130个不同的位置至少需要多少个二进制位? 2 7 = 128 , 2 8 = 256 2^{7}= 128, 2^{8}=256 27=128,28=256 下地址字段的位数至少是8位 微程序控制的基本概念 1.微命令与微操作 微命令是微操作的控制信号, 微操作是微命令的执行过程。 2.微指令与微周期 微指令是若干微命令的集合。 微周期通常指从控制存储器中读取一条微指令并执行相应的微操作所需的时间。 3.主存储器与控制存储器 主存储器用于存放程序和数据,在CPU 外部,用RAM实现; 控制存储器(CM)用于存放微程序, 在CPU内部,用ROM实现。 4.程序与微程序 程序是指令的有序集合,用于完成特定的功能; 微程序是微指令的有序集合,一条指令的功能由一段微程序来实现。 5.地址寄存器与微地址寄存器 地址寄存器是查找CPU地址 微地址寄存器是查找控制存储器CM的地址 6.指令寄存器与微指令寄存器 指令寄存器是存储和翻译CPU指令 微指令寄存器是CU中的存储和翻译指令的部件 后面的也是了解 对比硬布线和微程序控制器 这里面加了两句话 微程序设计分类 1.静态微程序设计和动态微程序设计 静态 \qquad 微程序无需改变, 采用ROM 动态 \qquad 通过改变微指令和微程序改变机器指令有利于仿真,采用EPROM 2.豪微程序设计 亳微程序设计的基本概念 微程序设计 \qquad 用微程序解释机器指令 亳微程序设计 \qquad 用亳微程序解释机器指令 硬布线与微程序的比较 一条指令的执行过程可以分成多个阶段(或过程)。 根据计算机的不同,具体的分法也不同。 取指:根据PC内容访问主存储器,取出一条指令送到IR中。 分析:对指令操作码进行译码,按照给定的了址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。 执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。 设取指、分析、执行3个阶段的时间都相等,用t表示按以下几种执行方式分析n条指令的执行时间: 1.顺序执行方式(总耗时T=n*3t=3nt) 优点:控制简单,硬件代价小。 缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。 2.一次重叠执行方式(总耗时T=3t+(n-1)*2t=(1+2n)t) 3.二次重叠执行方式(总耗时T=3t+(n-1)t=(2+n)t) 注:也可以把每条指令的执行过程分成4个或5个阶段,分成5个阶段是比较常见的做法。(这就可以增加重叠执行次数) 流水线的表示方法 1.指令执行过程图 2.时空图 1.吞吐率 吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。 设任务数为n;处理完成n个任务所用的时间为
T
k
T_{k}
Tk 则计算流水线吞吐率(TP)的最基本的公式为
T
P
=
n
T
k
TP=\frac{n}{T_{k}}
TP=Tkn 理想情况下,流水线的时空图如下: 这样的话 T k = ( k + n − 1 ) △ t T_{k}=(k+n-1)\triangle t Tk=(k+n−1)△t 流水线的实际吞吐率为 T P = n ( k + n − 1 ) △ t TP=\frac{n}{(k+n-1)\triangle t} TP=(k+n−1)△tn 注:当连续输入的任务n→ ∞ \infty ∞时,得最大吞吐率为 T P m a x = 1 △ t TP_{max}=\frac{1}{\triangle t} TPmax=△t1 2.加速比 完成同样一批任务, 不使用流水线所用的时间与使用流水线所用的时间之比。 设 T 0 T_{0} T0表示不使用流水线时的执行时间,即顺序执行所用的时间; T k T_{k} Tk表示 使用流水线时的执行时间 则计算流水线加速比(S)的基公式S= T 0 T k \frac{T_{0}}{T_{k}} TkT0 单独完成一个任务耗时为 k △ t k\triangle t k△t,则顺序完成n个任务耗时 T 0 = n k △ t T_{0}=nk\triangle t T0=nk△t 实际加速比S= k n △ t ( k + n − 1 ) △ t = k n k + n − 1 \frac{kn\triangle t}{(k+n-1)\triangle t}=\frac{kn}{k+n-1} (k+n−1)△tkn△t=k+n−1kn 注:当连续输入的任务n→ ∞ \infty ∞时,最大加速比为 S m a x = k S_{max}=k Smax=k 3.效率 流水线的设备利用率称为流水线的效率。 在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。(其实就是在运行的时间*在运行的硬件数/在运行的时间*硬件总数) 则流水线效率(E)的一般公式为E= n 个 任 务 占 用 k 时 空 区 有 效 面 积 n 个 任 务 所 用 的 时 间 与 k 个 流 水 线 端 所 围 成 的 时 空 区 域 = T 0 k T k \frac{n个任务占用k时空区有效面积}{n个任务所用的时间与k个流水线端所围成的时空区域}=\frac{T_{0}}{kT_{k}} n个任务所用的时间与k个流水线端所围成的时空区域n个任务占用k时空区有效面积=kTkT0 可能有点不太好理解,直接上图 注:当连续输入的任务n→ ∞ \infty ∞时,最大加速比为 E m a x = 1 E_{max}=1 Emax=1 这些都是在理想状况下进行计算的,因此还有不理想的状态计算 指令流水线影响因素分类实际上根据周期的影响,硬件的设置应该如下所示 影响流水线的因素 1.结构相关(资源冲突) 由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。(就是两个指令需要用到一个硬件)
解决方法: 1.后面一个相关指令暂停一个周期 2.资源重负配置:数据存储器+指令存储器(其实就是多配一个硬件) 2.数据相关(数据冲突) 数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。(就是下面的指令要用到上面指令的数据,但是上面的数据还没有存回去)
解决方法: (1)把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。(就是暂停几个周期) (2)数据旁路技术。(就是直接从ALU算完以后拉一条电路传送过来) (3)编译优化:通过编译器调整指令顺序来解决数据相关。(这个就是如字面意思,把不用的先提上来) 例题: 例题.假设某指令流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。若高级语言程序中某赋值语句为x=a+b, x、a和b均为int型变量,它们的存储单元地址分别表示为[x]、[a]和[b]。 该语句对应的指令序列及其在指令流中的执行过程如下图所示。(按序发射,按序完成的意思就是不能把指令往前跳;没有转发技术其实就是没有数据旁路技术) l1
\qquad
LOAD
\qquad
R1,[a] l2
\qquad
LOAD
\qquad
R2,[b] l3
\qquad
ADD
\qquad
R1,R2 l4
\qquad
STORE
\qquad
R2,[x] 则这4条指令执行过程中l3的ID段和l4的IF段被阻塞的原因各是什么? 数据相关(数据冲突)的基本类型 RAW(写后读)、WAR(读后写)、WAW(写后写) 3.控制相关(控制冲突) 当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。
解决办法: (1)尽早判别转移是否发生,尽早生成转移目标地址(就是尽快判断跳不跳) (2)预取转移成功和不成功两个控制流方向上的目标指令(两个方向都走,有点废硬件) (3)加快和提前形成条件码(和第一种差不多,就是优化形式不同) (4)提高转移方向的猜准率(最常用的,毕竟成本低) 知识点回顾1.部件功能级、处理机级和处理机问级流水线 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶 差、对阶、尾数相加以及结果规格化等4个子过程。 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。 处理机间流水是一 种宏流水, 其中每-一个处理机完成某一专门任务, 各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。 2.单功能流水线和多功能流水线 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。 单功能流水线指只能实现一种固定的专门功能的流水线; 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。 3.动态流水线和静态流水线(这个了解一下,我也没看懂,可能就是硬件可以动态组合和不能动态组合) 按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。 动态流水线指在同一一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。 4.线性流水线和非线性流水线 按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。 线性流水线中,从输入到输出,每个功能段只允许经过一次, 不存在反馈回路。 非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。 流水线的多发技术1.超标量技术(就是多套硬件)
2.超流水技术(就是一个周期里面执行多个) 3.超长指令字(就是一个周期内的多并发) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |