一、CPU的功能和基本结构
1.CPU的功能
2.CPU的基本结构
①运算器的基本结构
先整体来看运算器的实现,再从图中分析运算器内具体部件都有哪些
②控制器的基本结构
3.CPU的寄存器
CPU中的寄存器在基本结构中已经详细介绍了,这里不做过多的概述。
高频考点:哪些寄存器用户可见,哪些不可见。
橘色方框的可见、蓝色方框的不可见
二、指令执行过程
1.指令周期
指令周期:CPU从主存中每存取出并执行一条指令所需的全部时间。
指令周期常常用若干个机器周期来表示,机器周期又叫CPU周期。一个机器周期又包含若干个时钟周期(也称为节拍、T周期或CPU时钟周期,是CPU操作的最基本的单位)
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。
2.指令周期的数据流
指令周期的执行流程:
取指周期:根据PC中的内容取出指令代码并存放在IR中
间址周期:根据IR中的指令地址码取操作数有效地址执行周期:根据指令字操作码和操作数进行相应的操作
任务是根据IR的指令字的操作码和操作数流通ALU操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流流向。
中断周期:保存断点,送中断向量,处理中断请求
考点:话说这里的数据流CPU大题挺喜欢考的。
3.指令执行方案
一个指令周期通常要包括好几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。
①单指令周期
对所有指令都选用相同的执行时间来完成。
指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间。
特点:对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。
②多指令周期
对不同类型的指令选用不同的执行步骤来完成。
指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。
特点:需要更复杂的硬件设计。
③流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
特点:指令之间并行。
三、数据通路的功能和基本结构
1.数据通路的功能
数据通路:数据在指令执行过程中所经过的路径,包括路径上的部件。
eg:ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等都是执行时数据流经的部件,属于数据通路的一部分。
功能:描述了信息从哪里开始,中间经过哪些部件,最后被送到哪里。
数据通路由控制部件控制,控制部件根据每条指令功能的不同,生成对数据通路的控制信号。
2.数据通路的组成
组成数据通路的元件主要分为组合逻辑元件和时序逻辑元件两类。
①组合逻辑元件(操作元件)
任何时刻产生的输出仅取决于当前的输入。
组合电路不包含存储信号的记忆单元,不受时钟信号的控制,输出和输入之间无反馈通路,信号是单向传输的。
常用的组合逻辑元件有加法器、算术逻辑单元(ALU)、多路选择器、三态门等。
译码器:用于操作码或地址码译码。
多路选择器:需要控制信号Select来确定选择哪个输入被输出。三态门:可视为一种控制开关,由控制信号EN决定信号线的通断。
eg:EN=1时,三态门被打开,输出信号等于输入信号;EN=0时,输出端呈高阻态(隔断态),所连寄存器与总线断开。
②时序逻辑元件(状态元件)
任何时刻的输出不仅与该时刻的输入有关,还与该时刻以前的输入有关,因而时序电路必然包含存储信号的记忆单元。
各类寄存器和存储器,如通用寄存器组、程序计数器、状态/移位/暂存/锁存寄存器等,都属于时序逻辑元件。
3.数据通路的基本结构
①CPU内部单总线方式
内部总线:指同一部件,如CPU内部连接各寄存器及运算部件之间的总线。
系统总线:指同一台计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线。
将ALU及所有寄存器都连接到一条内部公共总线上,称为单总线的数据通路。
特点:结构比较简单,但数据传输存在较多的冲突现象,性能较低。
能输出到总线的部件均通过一个三态门与内部总线相连,用于控制该部件与内部总线之间数据通路的连接与断开。
note:单周期处理器(CPI=1)不能采用单总线方式,因为单总线将所有寄存器都连接到一条公共总线上,一个时钟内只允许一次操作,无法完成一条指令的所有操作。
②CPU内部多总线方式
CPU内部有两条或更多总线时,构成双总线结构或多总线结构。
将所有寄存器的输入端和输出端都连接到多条公共通路上,相比之下单总线中一个时钟内只允许传送一个数据,因而指令执行效率很低,因此多采用多总线方式,同时在多个总线上传送不同的数据,提高效率。
③专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接电路,避免使用共享的总线,性能较高,但硬件量大。
四、控制器的功能和工作原理
1.控制器的结构和功能
上图是计算机硬件系统的五大功能部件及其连接关系,它们通过数据总线、地址总线和控制总线连接在一起,虚线表示的是控制器部件。对主要连接关系线简单说明:
1)运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据。
2)输入设备和输出设备通过接口电路与总线相连接。3)内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据。
4)控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。
控制器是计算机系统的指挥中心,控制器的主要功能有:
1)从主存中取出一条指令,并指出相应的操作控制信号,以便启动规定的动作。
2)对指令进行译码或测试、产生相应的操作控制信号,以便启动规定的动作。
3)指挥并控制CPU、主存、输入设备和输出设备之间的数据流动方向。
根据控制器产生微操作控制信号的方式的不同,控制器可分为硬布线控制器和微程序控制器,两类控制器中的PC和IR是相同的,但确定和表示指令执行步骤的办法及给出控制各部件运行所需要的控制信号的方案是不同的。
2.硬布线控制器
硬布线控制器由复杂的组合逻辑门电路和触发器构成,也称组合逻辑控制器,其原理是根据指令的要求,当前的时序及内外部的状态,按时间的顺序发送一系列微操作控制信号。
优点:由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。缺点:指令越多,设计和实现就越复杂,因此一般用于RISC(精简指令集系统),如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
3.微程序控制器
微程序控制器采用存储逻辑实现,就是将微操作信号代码化,使每条机器指令转化为一段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生。
①微程序控制的基本概念
每条机器指令编写成一个微程序,每个微程序包含若干个微指令,每条微指令对应一个或几个微操作命令。
一条机器指令 = 一个微程序 = n个微指令 = n*n个微操作
(1)微命令和微操作
在微程序控制的计算机中,控制部件向执行部件发出的各种控制命令称为微命令,是构成控制序列的最小单位。执行部件收到微命令后所进行的操作称为微操作,微命令和微操作是一 一对应的。
微命令有相容性和互斥性之分。相容性微命令是指那些可以同时出现、共同完成某一些微操作的微命令;互斥性微命令是指在机器中不允许同时出现的微命令。
(2)微指令与微周期
微指令是若干微命令的集合,一条微指令通常至少包含两大部分信息:
①操作控制字段(微操作码字段):用于产生某一步操作所需的各种操作控制信号。
②顺序控制字段(微地址码字段):用于控制产生下一条要执行的微指令地址。
微周期是指从控制存储器中取出并执行一条微指令所需的全部时间,通常为一个时钟周期。
(3)主存储器与控制存储器
主存储器用于存放程序和数据,在CPU外部,用RAM实现。
控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现。存放微指令的控制存储器的单元地址称为微地址。
(4)程序与微程序
程序是指令的有序集合,用于完成特定的功能。
微程序是微指令和有序集合,用于描述机器指令,一条指令的功能由一段微程序来实现。
note:注意区分以下寄存器。①地址寄存器(MAR):用于存放主存的读/写地址
②微指令地址寄存器(μPC或CMAR):用于存放待执行的微指令在控制存储器中的微地址。
③指令寄存器(IR):用于存放从主存中读出的指令。
④微指令寄存器(μIR或CMDR):用于存放从控制存储器中读出的微指令。
②微程序控制器的组成和工作过程
(1)微程序控制器的基本组成
①起始和转移地址形成部件(微地址形成部件):用于产生初始和后继微地址,一保证微指令的连续执行。
②微指令地址寄存器:接收微地址形成部件送来的微地址,为读取微指令做准备。
③控制存储器:是微程序控制器的核心部件,用于存放各指令对应的微程序。④微指令寄存器:其位数等于微指令字长。
(2)微程序控制器的工作过程
实际就是在微程序控制器的控制下计算机执行机器指令的过程,这个过程可描述为:
①执行取指令公共操作。
在机器开始运行时,自动地将取指微程序的入口地址送入μPC,并从CM中读出相应的微指令并送入μIR。取指微程序的入口地址一般为CM的0号单元,取指微程序执行完成后,从主存中取出的机器指令就已存入指令寄存器中。
②由机器指令和操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入μPC。
③从CM中逐条取出对应的微指令并执行。
④执行完对应于一条机器指令的一个微程序后,又回到取微程序的入口地址,继续第①步,以完成取下一条机器指令的公共操作。
(3)微程序和机器指令
通常,一条机器指令对应一个微程序。由于任何机器指令的取指令微操作都是相同的,因此可以将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出来并送至指令寄存器中。
此外,也可编写对应间址周期的微程序的中断周期的微程序。
这样,控制存储器中的微程序个数应为机器指令数再加上取指、间址和中断周期等公共的微程序数。
③微指令的编码方式
微指令的编码方式也称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号。
编码的目标是在保证速度的情况下,尽量缩短微指令字长。
(1)直接编码(直接控制)方式
定义:直接编码无须进行译码,微指令的操作控制字段中每一位都代表一个微命令。设计微指令时,选用或不选用某个微命令,只要将表示该微命令的对应位设置成1或0即可。
每个微命令对应并控制数据通路中的一个微操作。
优点:简单、直观,执行速度快,操作并行性好。缺点:微指令字长过长,n个微命令就要求微操作字段有n位,造成控制存储器容量极大。
(2)字段直接编码方式
定义:将微指令的操作控制字段分为若干个小字段,把互斥性微命令放在同一字段中,把相容性微命令放在不同字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其他字段无关。
微命令字段分段原则:①互斥性微命令分在同一段内,相容性微命令分在不同段内。
②每个小段中包含的信息位不能太多,否则将增加译码电路的复杂性和译码时间。
③一般每个小段还要留出一个状态,表示本字段不发出任何微命令。eg:3位时,最多可以表示7个互斥的微命令。
特点:这种方式可以缩短微指令字长,但因为要通过译码电路后再发出微命令,因此比直接编码方式慢。
(3)字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,因此称为字段间编码,也称隐式编码。
这种方式可进一步缩短微指令字长,但因削弱了微指令的并行控制能力,因此通常作为字段直接编码方式的一种辅助手段。
④微指令的地址形成方式
1)由微指令的后继地址字段(也称下地址字段)给出,在微指令格式中设置一个后继地址字段,由微指令的后继字段地址直接指出后继微指令的地址,这种方式也称断定方式。
2)根据机器指令的操作码形成。 当机器指令取自指令寄存器后,微指令的地址由操作码经微地址形成部件形成,该部件输出的是对应机器指令微程序的首地址。
3)增量计数器法, (μPC)+ 1 ---> μPC,适用于后继指令地址是连续的情况。
4)根据各种标志决定下一条微指令分支转移的地址。
5)由硬件直接产生微程序入口地址。电源加电后,第一条微指令的地址可由专门的硬件电路产生,并送至μPC,这个地址即为取指周期微程序的入口地址。
⑤微指令的格式
(1)水平型微指令
从编码方式看,直接编码、字段直接编码和字段间接编码都属于水平型微指令。指令字中的一位对应一个控制信号,有输出时为1,否则为0。
一条水平型微指令定义并执行多个并行操作的微命令。
优点:微程序短,并行能力强,执行速度快缺点:微指令长,编写微程序比较麻烦。
(2)垂直型微指令
采用类似机器指令操作码的方式,在微指令中设置微操作码字段。一条垂直型微指令通常只能定义并执行一种微命令。
优点:微指令短、简单、规整,便于编写微程序。缺点:微程序长,执行速度慢,效率低。
水平型微指令(矮胖) | 垂直型微指令(瘦高) | |
---|---|---|
显著特点 | 并性能力强 效率高 灵活性强 | 各方面都比较差 |
执行时间 | 指令执行时间短 | 指令执行时间长 |
编写类型 | 微指令字比较长但微程序短 | 微指令字比较短但微程序长 |
掌握难易程度 | 较难掌握 | 与机器指令相似,相对容易掌握 |
⑥硬布线和微程序控制器的特点
五、异常和中断机制
1.异常和中断的基本概念
异常(内中断):由CPU内部产生的意外事件。
异常是CPU执行一条指令时,由CPU在其内部检测的、与正在执行的指令相关的同步事件。
中断(外中断):来自CPU外部的设备向CPU发出的中断请求被称为中断,通常用于信息的输入和输出。中断是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件。
异常和中断处理过程:CPU在执行用户程序的第i条指令时检测到一个异常事件,或执行第i条指令后发现一个中断请求信号,则CPU打断当前程序,然后转去执行相应的异常或中断处理程序。若异常或中断处理程序能够解决相应的问题,则在异常或中断处理程序的最后,CPU通过异常或中断返回指令,回到被打断的用户程序的第i条指令或第i+1条指令继续执行;若异常或中断处理程序发现是不可恢复的致命错误,则终止用户程序。
通常情况下,对异常和中断的具体处理过程由操作系统(和驱动程序)完成。
2.异常和中断的分类
①异常的分类
异常可分为硬故障中断和程序性异常。
硬故障中断是由硬连线出现异常引起的。eg:存储器校验错、总线错误。
程序性异常也称软件中断,指在CPU内部因执行指令而引起的异常事件。eg:整除0、溢出、单步跟踪、非法指令、栈溢出、地址越界、缺页等。
按异常发生的原因和返回方式不同,可分为故障、自陷和终止。
故障、自陷属于软件中断。终止、外中断属于硬件中断。
(1)故障 fault
指在引起故障和指令启动后、执行结束前被检测到的异常事件。
eg:1)指令译码时,出现“非法操作码”
2)取数据时,发生“缺段”或“缺页”
3)执行整数除法指令时,发现“除数为0”
对于 2)来说,经处理后,可将所需的段或页面从磁盘调入主存,回到发生故障的指令继续执行,断点为当前发生故障的指令。
对于 1)3)来说,无法通过异常处理程序恢复故障,因此不能回到原断点执行,必须终止进程的执行。
(2)自陷 trap
也称陷阱或陷入 是预先安排的一种“异常”事件,就像预先设定的“陷阱”一样
实现方式: 事先在程序中用一条特殊指令或通过某种方式设定特殊控制标志来人为设置一个“陷阱”,当执行到被设置了“陷阱”的指令时,CPU在执行完自陷指令后,自动根据不同“陷阱”类型进行相应的处理,然后返回到自陷指令的下一条指令执行。
note:当自陷指令是转移指令时,并不是返回到下一个指令执行,而是返回到转移目标指令执行。
(3)终止 abort
在执行指令时的过程中发生了使计算机无法继续执行的硬件故障,那么程序将无法继续执行,只能终止。此时,调出异常服务程序来重启系统。
eg:控制器出错、存储器校验错、总线错误。
②中断的分类
中断是指来自CPU外部、与CPU指令无关的事件引起的中断。
eg:键盘输入、打印机缺纸、用户按Esc键、定时器计数时间到
外部IO设备通过特定的中断请求信号向CPU提出中断请求,CPU每执行完一条指令就检查中断请求信号线,如果检测到中断请求,则进入中断响应周期。
中断可分为 可屏蔽中断和不可屏蔽中断。
(1)可屏蔽中断
指通过可屏蔽中断请求线INTR向CPU发出的中断请求。
CPU可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它,被屏蔽的中断请求将不被送到CPU。
(2)不可屏蔽中断
指通过专门的不可屏蔽中断请求线MNI向CPU发出的中断请求,通常是非常紧急的硬件故障。这类中断请求信号不可被屏蔽,让CPU快速处理这类紧急事件。
eg:电源掉电
此外,根据识别中断服务程序地址的方式,可分为向量中断和非向量中断;根据中断处理过程是否允许被打断,还可分为单重中断和多重中断。
中断 vs 异常
1.“缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的,而中断不和任何指令相关联,也不阻止任何指令的完成。
2.异常的检测由CPU自身完成,不比通过外部的某个信号通知CPU。对于中断,CPU必须通过中断请求获取中断源的信息,才能知道哪个设备发生了何种中断。
note:所有的异常和中断事件都是由硬件检测发现的。
3.异常和中断响应过程
(1)关中断
在保存断点和程序状态期间,不能被新的中断打断,因此要禁止响应新的中断,即关中断。通过设置“中断允许”(IF)触发器来实现。IF为1,则为开中断。
(2)保存断点和程序状态为了能在异常和中断处理后正确返回到被中断的程序继续执行,必须将程序断点(返回地址)送到栈或特定寄存器中。通常保存在栈中,这是为了支持异常或中断的嵌套。
异常和中断处理后可能还要回到被中断程序继续执行,被中断的程序转态字寄存器PSW的内容也要保存到栈或特定的寄存器中,在异常或中断返回时恢复到PSW中。
(3)识别异常和中断并转移到相应的处理程序
异常和中断源的识别方式不同,异常大多采用软件识别方式,而中断可以采用软件识别方式或硬件识别方式。
软件识别方式是指CPU设置一个异常状态寄存器,用于记录异常原因。操作系统使用一个统一的异常或中断查询程序,按优先级顺序查询异常状态寄存器,以检测异常和中断类型,先查询到先被处理,然后转到内核中相应的处理程序。
硬件识别方式也称为向量中断,异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中,类型号和中断向量一 一对应,因而可以根据类型号快速找到对应的处理程序。整个相应过程是不可被打断的。中断响应结束后,CPU就从PC中取出对应中断服务程序的第一条指令开始执行,直至中断返回,这部分任务是由CPU通过执行中断服务程序完成的,整个中断处理过程是由软/硬件协同实现的。
六、指令流水线
现代计算机普遍采用指令流水线技术,同一时刻有多条指令在CPU的不同功能部件中并发执行,大大提高了功能部件的并行性和程序的执行效率。
1.指令流水线的基本概念
流水线技术:基于时间上的并行技术,将一个任务分解为几个不同的子阶段,每个子阶段在不同的功能部件上并行执行,以便在同一时刻能够同时执行多个任务,进而提升系统性能。
超标量处理机:基于空间上的并行技术,在一个处理机内设置多个执行相同任务的功能部件,并让这些功能部件并行工作。
一条指令的执行过程可分解为若干个阶段,每个阶段都由相应的功能部件完成。如果将各阶段视为相应的流水段,则指令的执行过程就构成了一条指令流水。
五段指令流水:取指(IF Instruction Fetch):从指令寄存器或Cache中取指令。
译码/读寄存器(ID Instruction Decode):操作控制器对指令进行译码,同时从寄存器堆中取操作数
执行/计算地址(EX Execute):执行运算操作或计算地址。
访存(MEM Memory):对存储器进行读/写操作。
写回(WB Write Back):将指令执行结果写回寄存器堆。
2.流水线的基本实现
下面通过比较经典的五段指令流水,来看一下流水线的具体实现方式。
考试中常见的五类指令执行过程:①运算类指令
②LOAD指令
③STORE指令
④条件转移指令
⑤无条件转移指令
①运算类指令
②LOAD指令
③STORE指令
④条件转移指令
⑤无条件转移指令
3.流水线的冒险与处理
在指令流水线中,可能会遇到一些情况使得后续指令无法正确执行而引起流水线阻塞,这种现象称为流水线冒险。
解释一下这张图:IF:取指,这个下面有个Instruction Cache,意思是从Cache里面获取一条指令,虽然指令要进行访存去获取,但是由于这是处于指令流水的环境下,很好的满足了程序的局部性原理,大多数情况下可以直接从Cache里面获取指令数据。
ID:译码,这个阶段是对指令进行译码,准备好指令执行阶段要的数据。这一部分下面有个A、B,这是锁存器,又称缓冲寄存器,处于流水线每个功能段部件后面,作用是保存本流水段的执行结果,提供给下一段流水段使用。
EX:执行指令要的功能结构即可。
M:访存
WB:把最终运算的结果写回到通用寄存器中
①结构冒险(互斥)
由不同指令在同一时刻争用同一功能部件而形成的冲突,也称资源冲突,即由硬件资源竞争造成的冲突。
例如,上图可能发生结构冒险的场景,在第4个时钟周期,第i条LOAD指令进入MEM段时,第i + 3条指令的IF段也要访存存取指令,此时会发生访存冲突,为此可在前一条指令访存时,暂停(一个时钟周期)取后一条指令的操作。注意:如果第i条指令不是LOAD指令,在MEM段不访存,也就不会发生访存冲突。
解决办法:1)前一指令访存时,使后一条相关指令(及其后续指令)暂停一个时钟周期。
2)设置多个独立的部件。
eg:对于寄存器访问冲突,可将寄存器的读口和写口独立开来;对于访存冲突,单独设置数据存储器和指令存储器。在现代Cache机制中,L1级别
Cache通常采用数据Cache和指令Cache分离的方式,从而也就避免了资源冲突的发生。
②数据冒险(同步)
数据冒险也称数据相关。原因:后面指令用到前面指令的结果时,前面指令的结果还没有产生。在正常额指令流水线中,所有数据冒险都是由于前面指令写结果之前,后面指令就需要读取而造成的,这种数据冒险称为 写后读(Read After Write,RAW)冲突。
下面举个例子:
解释一下:指令I2的源操作数是指令I1的目的操作数。正常的读/写顺序是由指令I1先写入R1,再由指令I2来读R1。在非流水线中,这种先写后读的顺序是自然维持的。但在流水线中,由于重叠操作,读/写的先后顺序关系发生了变化,就造成了冲突。
解决措施:1)延迟执行相关指令
把遇到数据相关的指令及其后续都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行,可分为软件插入空操作“nop”指令和硬件阻塞 stall两种方法。
2)采用转发(旁路)技术设置相关转发通路,不等前一条指令把计算结果写回寄存器,下一条指令也不再从寄存器读,而将数据通路中生成的中间数据直接转发到ALU的输入端。
3)load-use 数据冒险的处理
如果load指令与其后紧邻的运算类指令存在数据相关问题,则无法通过转发技术来解决,通常把这种情况称为load-use 数据冒险。
列举下列两条指令,展示原因错误:load指令只有在MEM段结束时才能得到主存中的结果,然后送MEM/WB流水段寄存器,在WB段的前半周期才能存入R2的新值,但随后的add指令在EX阶段就要取R2的值,所以在这个阶段得到的是旧值。
③控制冒险
指令通常时顺序执行的,但当遇到改变改变指令执行顺序的情况,例如执行转移或返回指令、发生中断或异常时,会改变PC值,从而造成断流,又称控制冲突。
解决措施:1)采用和解决数据冲突相同的软件插入“nop”指令和硬件阻塞 stall 方法。eg:延迟损失多少时间片,就插入多少条nop指令。
2)对转移指令进行分支预测,尽早生成转移目标地址。
简单(静态)预测:永久猜true或false
动态预测:根据程序转移的历史情况,进行动态预测调整,有较高的预测准确率。
3)加快和提前形成条件码
4.流水线的性能指标
吞吐率:指在单位时间内流水线所完成的任务数量,或是输出结果的数量。
加速比:完成同样一批任务,不使用流水线所有时间与使用流水线所用时间之比。
效率:流水线的设备利用率称为流水线的效率
5.高级流水线技术
两种增加指令级并行的策略:
一:多发射技术:通过采用多个内部功能部件,使流水线功能段能同时处理多条指令,处理机一次可以发射多条指令进入流水线执行。
二:超流水线技术:通过增加流水线级数来使更多的指令同时在流水线中重叠执行。
①超标量流水线技术
在每个时钟周期内可并发多条独立指令,需要配置多个功能部件,不能调整指令的执行顺序,需要通过编译技术,把可并行执行的指令搭配起来。
②超长指令字技术
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条,具有多个操作码字段的超长指令字(可达几百位),采用多个处理部件。
③超流水线技术
在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次,不能调整指令的执行顺序,靠编译程序解决优化问题。
eg:假如说再分3段,那么流水线速度是原来的3倍。
七、多处理器的基本概念
这一部分是23年新加的考点,只对概念进行考察,以选择题的形式。
1.SISD、SIMD、MIMD的基本概念
基于指令流的数量和数据流的数量,将计算机体系结构分为SISD、SIMD、MISD、MIMD四类。
①单指令流单数据流(SISD)结构
特性:各指令只能并发,不能并行,但每条指令可同时处理很多具有相同特征的数据,不是一种数据级并行技术。
硬件组成:一个处理器+一个主存储器。若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器。
②单指令流多数据流(SIMD)结构
特性:各指令只能并发,不能并行,但每条指令可同时处理具有相特征的数据,是一种数据级并行技术。
硬件组成:一个指令控制部件(CU)+多个处理单元/执行单元(ALU)+多个局部存储器+一个主存储器,每个执行单元都有各自的寄存器、局部存储器、地址寄存器,不同执行单元执行同一条指令,处理不同数据。
③多指令单数据流(MISD)结构
多指令序列并行执行,处理同一个数据。(现实中不存在这种计算机)
④多指令多数据流(MIMD)结构
特性:各指令序列并行执行,分别处理多个不同的数据,是一种线程级并行,甚至是线程级以上并行技术。
实现方式
方式一:多处理器系统特性:多处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据。
硬件组成:一台计算机内,包含多个处理器+一个存储器,多个处理器共享单一的物理地址空间
方式二:多计算机系统
特性:各计算机之间不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据。
硬件组成:由多台计算机组成,因此拥有多个处理器+多个主存储器,每台计算机拥有各自私有存储器,物理地址空间相互独立。
⑤向量处理机(SIMD思想的进阶应用)
特性:一条指令的处理对象是“向量”,擅长对向量型数据并行计算,浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件组成:多个处理单元,多组“向量寄存器”,主存储器采用“多个端口同时读取”的交叉模块存储器,主存储器大小限定了机器的解题规模,因此需要大容量,集中式的主存储器。
2.硬件多线程的基本概念
传统的CPU中,线程的切换包含了一系列开销,频繁地切换会极大影响系统的性能,为了减少线程切换过程中的开销,便诞生了硬件多线程。在支持硬件多线程的CPU中,必须为每个线程提供单独的通用寄存器组,单独的程序计数器等,线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节,大大减少了线程切换的开销。
①细粒度多线程
②粗粒度多线程
③同时多线程
3.多核处理器的基本概念
多核处理器是指多个处理单元集成到单个CPU中,每个处理单元称为一个核(core),通常也称片上多处理器。每个核既可以有自己的Cache,又可以共享同一个Cache,所有核通常共享主存储器。
和MIMD差不多。
4.共享内存多处理器的基本概念
具有共享的单一物理地址空间的多处理器称为共享内存多处理器(SMP)。处理器通过存储器中的共享变量互相通信,所有处理器都能通过存取指令访问存储器的任何位置。