1. 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
2. 操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
3. 时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
4. 数据加工。对数据进行算术和逻辑运算。
5. 中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
1. 算术逻辑单元:主要功能是进行算术/逻辑运算。
2. 通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
根据指令执行过程中的数据和地址的流动方向安排连接线路
性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现
将所有寄存器的输入端和输出端都连接到公共的通路上
结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低
3. 暂存寄存器:用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。
4. 累加寄存器(ACC):它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
5. 程序状态字寄存器/标志寄存器(PSW):保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
6. 移位器:对运算结果进行移位运算。
7. 计数器:控制乘除运算的操作步数。
1. 程序计数器(PC):用于指出下一条指令在主存中的存放地址。CPU就是根据PC的内容去主存中取指令的。因程序中指令(通常)是顺序执行的,所以PC有自增功能。
2. 指令寄存器(IR):用于保存当前正在执行的那条指令。
3. 指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号。
4. 微操作信号发生器:根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
5. 时序系统:用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到。
6. 存储器地址寄存器(MAR):用于存放所要访问的主存单元的地址。
7. 存储器数据寄存器(MDR):用于存放向主存写入的信息或从主存中读出的信息。
用户可见的寄存器(可编程):程序计数器/程序状态字寄存器(PC),通用寄存器组(R0-R3),累加寄存器(ACC),标志寄存器(PSW)
用户不可见的寄存器:存储器地址寄存器(MAR),存储器数据寄存器(MDR),指令寄存器(IR),暂存寄存器
CPU从主存中每取出并执行一条指令所需的全部时间
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。
一个机器周期又包括若干时钟周期(也称为节拍,T周期或CPU时钟周期,它是CPU操作的最基本单位)
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等
当前指令地址送至存储器地址寄存器,记做:(PC)→MAR
CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1→R
将MAR所指主存中的内容经数据总线送入MDR,记做M(MAR)→MDR
将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR
CU发出控制信号,形成下一条指令地址,记做(PC)+1→PC
将指令的地址码送入MAR,记做Ad(IR)→MAR或Ad(MDR)→MAR
CU发出控制信号,启动主存做读操作,记做:1→R
将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
将有效地址送至指令的地址码字段,记做:(MDR)→AD(IR)
执行周期:根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果
中断周期:暂停当前任务去完成其他任务,为了能够恢复当前任务,需要保存断点;一般用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。
CU控制将SP减1,修改后的地址送入MAR,记做:(SP)-1→SP,(SP)→MAR;
本质上是将断点存入某个存储单元,假设其地址为a,故可记做a→MAR
CU发出控制信号,启动主存做写操作,记做:1→W
将断点(PC内容)送入MDR,记做:(PC)→MDR
CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→PC
四个工作周期都有CPU访存操作,只是访存的目的不同
取指周期:取指令
间址周期:取有效地址
执行周期:取操作数
中断周期:保存程序断点
对所有指令都选用相同的执行时间来完成
指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。
对不同类型的指令选用不同的执行步骤来完成 。
指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程 。
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中 。
指令之间并行执行。
数据在功能部件之间传颂的路径
由控制部件产生的控制信号建立数据通路
信息从哪里开始中间经过哪些部件最后传到哪里
内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线;
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线。
CPU内部多总线方式
多路选择器与三态门
CU发出一个微命令,可完成对应微操作
一个节拍内可以并行完成多个“相容的”微操作
同一个微操作可能在不同指令的不同阶段被使用
不同指令的执行周期所需节拍数各不相同。为了简化设计,选择定长的机器周期,以可能出现的最大节拍数为准(通常以访存所需节拍数作为参考)
若实际所需节拍数较少,可将微操作安排在机器周期末尾几个节拍上进行
1. 分析每个阶段的微操作序列(取指、间址、执行、中断四个阶段)
2. 选择CPU的控制方式
1.微操作的先后顺序不得随意更改
2.被控对象不同的微操作尽量安排在一个节拍内完成
3.占用时间较短的微操作尽量安排在一个节拍内完成并允许有先后顺序
1.列出操作时间表
2.写出微操作命令的最简表达式
3.画出逻辑图
指令越多,设计和实现就越复杂,因此一般用于 RISC(精简指令集系统)
如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。
程序:由指令序列组成
微程序:由微指令序列组成,每一种指令对应一个微程序
微命令与微操作一一对应
微命令中可能包含多个微命令
指令是对程序执行步骤的描述
微指令是对指令执行步骤的描述
指令是对微指令功能的“封装”
采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中
取指周期的微程序段通常是公用的,故如果某指令系统中有n条机器指令,则CM中微程序的个数至少是n+1个
一些早期的CPU、物联网设备的CPU可以不提供间接寻址和中断功能,因此这类CPU可以不包括间址周期、中断周期的微程序段
物理上,取指周期、执行周期看起来像是两个微程序,但逻辑上应该把它们看作一个整体。因此,“一条指令对应一个微程序”的说法是正确的
指令周期=取值周器→间址周期→执行周期→中断周期。其中间址、中断周期可有可无
处理取指周期、间址周期、中断周期的微指令序列通常是公用的。执行周期的微指令序列各不相同
取指周期的微指令序列固定从#0 开始存放。执行周期的微指令序列的存放根据指令操作码确定
程序vs微程序﹔指令vs微指令;主存储器vs控制器存储器(CM);MAR vs CMAR;MDR vsCMDR;PCvs uPC;lR vs ulR
微命令、微操作、微指令、微程序之间的关系
指令周期:从主存取出并执行一条机器指令所需的时间
微周期(微指令周期)∶从控制器存储器取出一条微指令并执行相应微操作所需的时间
相容性微命令:可以并行完成的微命令
互斥性微命令:不允许并行完成的微命令
一条微指令能定义多个可并行的微命令
优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦
一条微指令只能定义一个微命令,由微操作码字段规定具体功能
优点:微指令短,简单,规整,便于编写微程序
缺点:微程序长,执行速度慢,工作效率低
在垂直型基础上增加一些不太复杂的并行操作
微指令较短,仍便于编写;微程序也不长,执行速度加快
在微指令的操作控制字段中,每一位表示一个微操作命令,某位为1,表示该控制信号有效
优点:简单,直观,执行速度快,操作并行性好
缺点:微指令字长过长,n个微指令就要求微指令的操作字段有n位,造成控存容量极大
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号
1.互斥性微命令分在同一段内,相容性微命令分在不同段内
2.每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
3.一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作
优点:可以缩短微指令字长
缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码
优点:可进一步缩短微指令字长
缺点:削弱了伪指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段
微指令的下地址字段指出(断定方式)
根据机器指令的操作码形成
增量计数器法
分支转移
通过测试网络决定
由硬件产生微程序入口地址
1.分析每个阶段的微操作序列
2.写出对应机器指令的微操作命令及节拍安排
3.确定微指令格式
4.编写微指令码点
静态:微程序无需改变,采用ROM
动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM
微程序设计 用 微程序解释机器指令
毫微程序设计 用 毫微程序解释微程序
一条指令的执行过程可以分成多个阶段(或过程)
根据计算机的不同,具体的分法也不同
传统冯诺依曼机采用顺序执行方式,又称串行方式
总耗时:T=n×3t=3nt
优点:控制简单,硬件代价小
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低
总耗时:T=3t+(n-1)×2t=(1+2n)t
优点:程序的执行时间缩短了1/3,各功能部件的利用率明显提高
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了
总耗时:T=3t+(n-1)×t=(2+n)t
与顺序执行方式相比,指令的执行时间缩短将近2/3,这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令正在执行
主要用于分析指令执行过程以及影响流水线的因素
主要用于分析流水线的性能
吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量
装入时间/排空时间
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比
流水线的设备利用率称为流水线的效率
为方便流水线的设计,将每个阶段的耗时取成一样,以最长耗时为准
流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关
1.后一相关指令暂停一周期
2.资源重复配置:数据存储器+指令存储器
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关
1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。
2.数据旁路技术(转发机制)
3.编译优化:通过编译器调整指令顺序来解决数据相关
当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。
简单预测(永远猜true或false)
动态预测(根据历史情况动态调整)
2.预取转移成功和不成功两个控制流方向上的目标指令
3.加快和提前形成条件码
4.提高转移方向的猜准率
功能级流水线
处理机级流水线
处理机间流水线
单功能流水线 指只能实现一种固定的专门功能的流水线
多功能流水线 指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线
静态流水线
动态流水线
线性流水线
非线性流水线
每个时钟周期内可并发多条独立指令
要配置多个功能部件
不能调整指令的执行顺序
通过编译优化技术,把可并行执行的指令搭配起来
在一个时钟周期内再分段
在一个时钟周期内一个功能部件使用多次
不能调整指令的执行顺序
靠编译程序解决优化问题
由编译程序挖掘出指令间潜在的并行性
将多条能并行操作的指令组合成一条
具有多个操作码字段的超长指令字(可达几百位)
采用多个处理部件
通常,RISC处理器只有“取数LOAD”和“存数STORE”指令才能访问主存
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:取出操作数至ID段锁存器
EX:运算,将结果存入EX段锁存器
M:空段
WB:将运算结果写回指定寄存器
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm
EX:运算,得到有效地址
M:从数据Cache中取数并放入锁存器
WB:将取出的数写回寄存器
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm,将要存的数放到B
EX:运算,得到有效地址,并将锁存器B的内容放到锁存器Store
M:写入数据Cache
WB:空段
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:进行比较的两个数放入锁存器A、B,偏移量放入Imm
EX:运算,比较两个数
M:将目标PC值写回PC
很多教材把写回PC的功能段称为“WrPC”段,其耗时比M段更短,可安排在M段时间内完成
WB:空段
IF:根据PC从指令Cache取指令至IF段的锁存器
ID:偏移量放入Imm
EX:将目标PC值写回PC
M:空段
WB:空段
转移类指令常采用相对寻址
各指令序列只能并发、不能并行,每条指令处理一两个数据
不是数据级并行技术
一个处理器+一个存储器
若采用指令流水线,需设置多各功能部件,采用多模块交叉存储器
各指令序列只能并发、不能并行,但每条指令可同时处理多个具有相同特征的数据
是一种数据级并行技术
一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器
每个执行单元有各自的寄存器组、局部存储器、地址寄存器
不同执行单元执行同一条指令,处理不同的数据
多条指令并行执行,处理同一个数据。现实中不存在这种计算机
各指令序列并行执行,分别处理多个不同的数据
是一种线程级并行、甚至线程级以上并行技术
各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可以通过主存相互传送数据
一台计算机内,包含多个处理器+一个主存储器
多个处理器共享单一的物理地址空间
各计算机之间,不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
由多台计算机组成,因此拥有多个处理器+多个主存储器
每台计算机拥有各自的私有存储器,物理地址空间相互独立
一条指令的处理对象是“向量”
擅长对向量型数据进行计算、浮点数计算,常被用于超级计算机中,处理科学研究中巨大运算量
多个处理单元,多组“向量寄存器”
主存储器应采用“多个端口同时读取”的交叉多模块存储器
主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器
多处理器系统(简称)
多个处理器共享一个主存储器
多个处理器共享单一的地址空间,都可以通过LOAD、STORE指令访问共享的主存储器
一个CPU芯片包含多个处理器,即多个核,因此通常也被称为 片级多处理器,意思是:一块芯片上集成了多个处理器
所有核共享一个LLC,并共享主存储器