目录
1.CPU的功能和基本结构
1.1.CPU的功能
1.指令控制:取指→分析→执行
2.操作控制:通过操作信号控制各部件
3.时间控制:控制具体操作的时间顺序
4.数据加工:各种运算
5.中断处理:例如I/O操作和异常
1.2.控制器和运算器的功能
1.CPU由控制器和运算器构成
2.运算器:对数据进行处理
3.控制器:协调并且控制各部件执行程序的指令序列
①取指令:自动形成指令地址→PC + ”1“;在指令结束后,自动发出取指令命令
②分析指令:操作码译码→分析该操作码执行具体操作;产生操作数的有效地址→根据寻址方式的不同和指令中的形式地址形成有效地址
③执行地址:每条指令分解成若干个微操作,一个微操作对应一个操作信号,操作信号形成控制序列,通过该控制序列控制相应部件(运算器、存储器、IO等等)进行对应操作
④中断处理:管理总线和输入输出(IO)(针对计算机外部);处理异常(例如除0,针对计算机内部)
1.3.运算器的基本结构
1.算术逻辑单元(ALU):进行算数/逻辑运算(单总线下,需要搭配寄存器)
2.通用寄存器组:存放各种操作数,包括源操作数、目的操作数和中间结果等 用户可见
3.暂存寄存器:暂时存放主存中读入的数据
4.累加寄存器(ACC):暂时存放ALU运算的结果,用于加法操作→用户可见
5.程序状态字寄存器(PSW):保存结果的各种状态信息(OF、ZF、CF、SF等),条件转移指令可以通过这些状态信息判断是否进行转移→用户可见
6.移位器:进行移位运算
7.计数器:控制乘/除操作次数
1.4.控制器的基本结构
1.程序计数器(PC):用于指出下一条指令的存放地址,CPU根据PC的内容进行取值
PC有自增”1“功能:在取指令完成后自动进行,具体加多少根据指令长度/编址方式等决定
PC的内容可能会被转移指令(JMP等)所改变→用户可见
2.指令寄存器(IR):用于保存当前执行的指令
PC取出指令后,将该指令放到IR中,每条指令分为OP/AD两部分
AD:指明地址码,送往总线
OP:指明操作码,送往CU
3.指令译码器:对操作码部分进行译码,向控制器提供特定的操作信号。即分析该操作码的具体操作是什么
4.微操作信号发生器:根据译码器、PSW提供的控制信号生成微操作的序列(控制各种IN/OUT信号)
5.时序系统:控制执行顺序
6.存储器地址寄存器(MAR):存放要访问的主存单元的地址
7.存储器数据寄存器(MDR):存放向主存写入/从主存读出的数据
1.5.用户可见/不可见
可见:PSW、通用寄存器、PC、ACC
不可见:MAR、MDR、IR、暂存寄存器
2.指令执行过程
2.1.指令周期
1.指令周期:CPU从主存中取出并执行指令的全部时间
①由若干个机器周期组成(CPU周期),每个机器周期由若干个时钟周期组成
②不同的指令包含的机器周期可能不同
2.取指令需要进行访存,而对指令译码(分析指令)相比之下所需时间很短,因此可一起划分为取值周期
3.指令周期可以分为取值周期、间址周期(间接寻址)、执行周期、中断周期(中断操作)
可以通过四个触发器判断正处于哪个周期
2.2.指令周期的数据流
1.取址周期:
2.间址周期:
①IR是MDR的副本,因此,既可以是IR的内容给MAR进行寻址,也可以是MDR的内容
②原IR中的内容为操作码+形式地址(间接),仅改变IR形式地址的部分,操作码可以不改变
3.执行周期:不同指令的数据流向不同
4.中断周期:需要保存断点(使用堆栈)
①下一条指令执行的地址始终是根据PC得到的
②在执行中断前需要保存当前PC的内容:
Ⅰ计算机为每个程序的运行开辟堆栈,SP是该堆栈的栈顶元素,在执行中断时,先要进行压栈操作,即SP - 1(也可能是+1),然后将SP中的内容存入MAR中(指明接下来要进行写操作的是哪一个地址,即表明存放PC当前内容的地址)
ⅡCU发出写信号
Ⅲ将PC存入MDR中(此时,PC的内容就写入了MAR对应的地址中)
Ⅳ修改PC的内容,执行中断程序
2.3.指令执行方案
1.单指令周期:所有指令按相同时间执行,即执行周期取决于最长的指令(串行,低效率)
2.多指令周期:不同类型的指令有不同的执行周期(串行,相较于单指令更高效)
3.流水线方案:每个时钟周期启动一条指令(并行,根据不同周期运用不同部件的特性)
3.数据通路的功能和基本结构
3.1.数据通路的基本结构
Ⅰ专用数据通路:两个部件间专用的连接线路。需要添加MUX(多路选择器)或者三态门
①MUX的作用:通过控制信号(R0/R1/R2/R3)选择具体哪条线路输入/输出(控制整体)
②三态门的作用:通过控制信号(IN/OUT = 0/1)控制当前线路是否进行输入/输出(控制个体)
③性能高,不存在数据冲突(每个部件都有专属线路),但结构复杂
ⅡCPU内部单总线:将所有寄存器的输入/输出端都连接到一条公共的通路,同一时间仅能有两个部件进行数据交换
①某个寄存器输入:该寄存器的IN信号有效
②某个寄存器输出:该寄存器的OUT信号有效
③结构简单,但是存在数据冲突现象,因此,需要添加暂存寄存器解决
暂存寄存器:暂时存储从主存中读来的数据。例如:进行加法操作a + b时
(1)将加数a从主存中读入并存放到ALU输入端的暂存寄存器
(2)将b从主存中读出通过ALU的B中输入,将ALU输入端暂存寄存器中的a通过ALU的A中输入
(3)ALU的计算结果先存放到ALU输出端的暂存寄存器中,需要等待两个输入端的信号稳定之后,再将该暂存寄存器中的结果输出到对应的寄存器中(防止总线数据冲突,导致运算出错)
ⅢCPU内部多总线:将所有寄存器的输入/输出端都连接到多条公共的通路,每条总线都可以进行两个部件的数据交换
3.2.CPU单总线方式
1.bus指代总线:→BUS表示数据输入到总线中,BUS→表示总线的数据输出
2.需要注明控制信号是否有效
3.数据流通需要一个部件OUT有效和一个部件IN有效(inE/outE表示外部总线)
4.主存和CPU之间的数据传送:
①MAR存放的是CPU将要对主存中进行读/写的数据的地址
②CU需要通过控制总线向主存发出读/写命令,MAR中的地址通过地址总线送往主存(CU也需通过控制总线给MAR发出控制信号)
③读:主存中的数据通过数据总线输入到MDR中(需要有个控制信号控制该线是否接通——MDRinE,E表示外部总线,需要区别于MDRin,同理MAR读到主存中时,也有MARoutE)
写:MDR中的内容通过数据总线输入到主存的相应地址中(MAR内的地址)
④MDR中的数据通过数据总线送到IR中
5.算数/逻辑运算:例如加法操作,其中一个操作数已存放在ACC中
①取出操作数:IR分为OP和AD两个部分(OP为操作码,AD为地址码)
Ⅰ通过IR的AD部分送往MAR
Ⅱ由于IR和MDR中的数据是一样的(需要MDR没更新过数据),因此,也可以通过MDR的AD送往MAR
②CU发出读命令:主存根据MAR的地址通过数据总线将该地址的数据送往MDR中(一个加数)
③MDR数据送往暂存寄存器Y中:ALU的两端需要同时有效,而该CPU是单总线结构,同时输出到总线上会产生数据冲突,因此,需要不经过总线就能输入到ALU的Y将一个操作数暂存
如果采用双总线结构,就不需要暂存寄存器,两个总线分别输入一个操作数到ALU的一端即可
④ALU进行计算:ACC和Y中的数据分别输入到ALU两端,CU向ALU发出控制信号,ALU进行加法计算,然后将结果输出到Z中
⑤Z通过内部总线将Z中内容输入到ACC中
3.3.CPU专用数据通路方式
哪两个部件进行数据交换,就通过控制信号将连接该部件的导线接通
4.控制器的功能和工作原理
4.1.硬布线控制器(硬件控制)
1.一个时钟周期内可以并行的完成多个不会引发冲突的微操作
2.同一个微操作可能在不同阶段被使用到
3.选择定长的机器周期,如果实际所需的时钟周期较少,则安排在机器周期的末尾执行
4.硬布线控制器根据指令操作码、目前的机器周期、节拍信号、机器状态条件等确定当前节拍下应该发出哪些微命令:
①指令操作码:操作码译码器根据IR的n位操作码,选通操作码译码器连接CU导线(n位对应n条导线),从而判断当前指令将要执行什么操作
②目前的机器周期:根据四个触发器当前哪个值为1判断当前处于什么机器周期(取址、间址、执行、中断)
③目前的节拍:每个机器周期都有相等的节拍数,节拍发生器通过控制信号控制m+1条与CU相连的线使其能够判断当前处于该机器周期的第几个节拍
④机器状态条件:即各种执行单元的反馈信息,例如PSW、ACC标志位等
5.CU的每一条输出线对应一个微操作:微操的判断可以由多个输入端加上与/或/非门电路实现
6.硬布线控制器特点:
①指令越多,电路越复杂→适用于RISC(指令少)
②扩种指令困难(需要大改电路
③纯硬件控制→执行速度快
4.2.微程序控制器(软件控制)
4.2.1.微程序控制器的基本原理
1.微程序:与指令一一对应,由一系列微指令序列组成
微指令:由一系列微操作组成
微操作(微命令):最小具体操作单位,可以并行完成且不违反顺序的微操作集合成一个微指令
2.微指令格式:由操作控制(操作码)和顺序控制(地址码)组成
3.控制存储器CM(Control Memory):用于存放微程序(若干个微指令,按顺序存放),由ROM组成(非易事性、读取快),实现存储程序
CMAR(CM Address Register):小PC,存放微指令的地址
地址译码:将CMDR中的地址转换为控制信号
CMDR(CM Data Register):小IR,存放从CM中取出的微指令。由实现当前微指令的控制信号(操作码)和下一条微指令的地址(地址码)组成
微地址形成部件:根据CPU中IR的OP部分形成实现OP操作的微指令序列的首地址
顺序逻辑:控制微指令序列执行的顺序(当前应该执行哪一条微指令)
4.取值周期、间址周期、中断周期的微指令序列通常公用,仅需存储一份;执行周期各不相同,需要单独存储
4.2.2.微指令的设计
1.微指令的格式
2.微指令的编码方式
3.微指令的地址形成方式
4.微程序控制单元的设计
①第一个微指令从CM的#0出取址
②每个微指令的执行结束后,都需要进行一次把下一条微指令的地址(若是该微程序的最后一条微指令,则将下一个微程序的首个微指令的地址)放入CMAR的时钟周期
4.3.硬布线控制器和微程序控制器的比较
5.指令流水线
5.1.流水线的基本概念
5.1.1.指令流水的定义
1.一次重叠:总耗时 = 第 1 条指令的完整周期(3) + 剩余(n - 1)条指令每条两个周期
2.二次重叠:总耗时 = 第 1 条指令的完整周期(3) + 剩余(n - 1)条指令每条一个周期
5.1.2.流水线的表示方法
5.1.3.流水线的性能指标
1.吞吐率:吞吐率TP = 任务数n / 总用时T
总用时T = 第一条指令的完整用时 + (n - 1)个指令执行阶段耗时(理想情况,取一个时钟周期)= kt + (n - 1)t = (k + n - 1)t
装入时间:第一条指令从开始到结束的时间
排空时间:最后一条指令从开始到结束的时间
2.加速比
3.加速比
5.2.指令流水线的影响因素和分类
5.2.1.机器周期的设置
①划分为五个周期
IF(Instruction Fetch)取值:根据PC所指向的位置到Instruction Cache中找出当前要执行的指令,然后将该指令放到IF阶段的锁存器中
ID(Instruction Decode)译码:该阶段除了完成指令译码外,还会完成取操作数(从通用寄存器中取出),然后将操作数分别放入ID阶段的锁存器A、B中(或指令中包含立即数,则放入IMM)
EX(Execute)执行:对ID阶段的锁存器中储存的两个操作数进行计算,并将结果放入EX阶段的锁存器中
MEM(Memory)访存
WB(WriteBack)写回:可能将数据写回通用寄存器中
(IF和MEM阶段中的Cache分别是指令Cache和数据Cache,将Cache分为指令和数据两个独立的部分,可以使得IF和MEM的部件并行工作)
Cache不命中将会导致指令流水线断流(需要访存)
②每条指令被划分为五个机器周期,就算某条指令在实际执行过程中的某个周期不需要做任何事(例如不需要访存、不需要写回),但它仍然需要经历这个周期(无法跳过)
③每个机器周期设置为同一周期:每个机器周期所需的时间实际上可能并不相同(100、80、70、50、50),取最长的耗时为统一的机器周期
为了使得能够统一机器周期,需要在某个功能部件后添加数据缓冲器:例如图中ID阶段仅需要80ns,而统一的机器周期为100ns,即ID的功能部件执行完成后,还剩余20ns,则ID执行后需先将数据存放到ID部件后的数据缓冲器中,经过20ns后,再将数据从数据缓冲器中输出,此时就能控制ID的机器周期为100ns
5.2.2.影响流水线的因素
1.结构相关(资源冲突):多条指令在同一时间争用统一资源
①IF和MEM阶段可能访问同一内存空间;ID和WB阶段可能访问同一通用寄存器
②解决方法:后访问/数据和指令分开存储
2.数据相关(数据冲突):必须等待前一条指令完成才能执行后一条指令
①SUB、AND和OR指令在ADD指令将指令执行结果放回r1之前就从r1中取出数据,产生数据冲突
②XOR指令在ADD指令将指令执行结果放回r1后才取出数据,未发生数据冲突
③解决方法:硬件——添加气泡节拍延后产生数据冲突的指令
软件——在产生数据冲突的指令间插入若干条空指控(NOP,需要完整的五个机器周期)
数据旁路——把前一条指令的ALU计算结果作为后一条指令的ALU输入
编译优化——调整指令执行顺序(将不发生冲突的指令提前,发生冲突的指令延后)
3.控制相关(控制冲突):遇到转移指令和其他改变PC值得指令产生断流
解决:①简单预测:永远猜正确/错误
动态预测:根据历史情况动态调整
②将正确和错误的控制流的指令都预先取出
③加快和提前形成条件码(类似加法器的思想——增加一条电路将结果输入到后面的加法器中)
5.2.3.流水线的分类
5.2.4.流水线的多发技术
1.超标量技术:每个时钟周期内可以并行执行多条指令(同一时刻同时发出)(增加多组功能部件,空分复用)
2.超流水技术:时钟周期内再分为多个时间段,每个时间段发出一条指令(不同时刻发出)(时分复用)
3.超长指令字:
5.3.五段式指令流水线
1.运算类指令:运算类指令无需从访存,但仍需要完整经过访存周期(MEM)
2.LOAD指令:采用基址寻址方式,需要经过ALU计算才能得到有效地址(即需经过执行周期EX)
3.STORE指令:A存放基地址,IMM存放偏移量(立即数),经过ALU计算后得到有效地址EA,并将EA放入连接ALU的锁存器中;B存放要存入主存的数据,然后放入STORE锁存器中;根据EA的两个锁存器中的内容将数据写入主存中(通常情况下仅需写入DATA CACHE中,因此,WB阶段无需做任何事)
4.条件转移指令:对PC的修改在MEM阶段执行,WB阶段无需做任何事
5.无条件转移指令:对PC的修改在EX阶段进行,MEM和WB阶段无需做任何事
6.多处理器的基本概念
6.1.多处理器系统的基本概念
1.数据级并行:并行的对数据进行处理
单指令流(Single Instruction Stream):CPU同一时间只能处理一个指令序列(并发)
多指令流(Multiple Instruction Stream):CPU同一时间可以处理多条指令序列(并发)
单数据流(Single Datastream Stream):每条指令只能处理一两个数据
多数据流(Multiple Datastream Stream):每条指令可以处理多个数据
2.SISD(Single Instruction Stream Single Data Stream,单指令流单数据流):
①特点:各指令序列只能并发,不能并行;每条指令只能处理一两个数据;不是数据级并行技术
②提升效率的方式:采用指令流水线、多模块交叉处理器(低位交叉)
3.SIMD(Single Instruction Stream Multiple Data Stream,单指令流多数据流):
①特点:各指令序列只能并发,不能并行;每条指令可以同时处理多个具有相同特征的数据;是数据级并行技(同一时刻只有一条指令运行,但是每条指令的执行可以并行处理多个数据);擅长对结构类似的数据进行相同处理
②指令控制部件(CU)取出指令后,可以向多个执行部件(ALU)发出相同的控制信号(即不不同执行部件实际上执行的是同一条指令),每一个执行部件都会有自己独立的局部存储器、数据寄存器组和地址寄存器组(各个执行部件处理的数据的存放位置不一样,因此需要单独设置地址寄存器组)
4.MISD(Multiple Instruction Stream Single Data Stream,多指令流单数据流):不存在
5.MIMD(Multiple Instruction Stream Multiple Data Stream,多指令流多数据流):
①特点:可以并行处理指令序列和多个不同数据;线程级并行(每个核可以运行不同的线程,即多个线程可以并行执行)及以上并行(线程级以上的并行,即进程级并行,每个核处理不同进程)
②可以分为多处理器系统和多计算机系统:
(1)多处理器系统(即共享存储多处理器,Shared Memory multiProcessor,SMP):多个处理器和一个存储器(共享)。
①各处理器间可以通过LOAD/STORE指令访问同一个存储器:所有核心共享同一个物理地址空间
②可以通过主存直接相互传送数据:核心A将数据放入主存/最低级CACHE,核心B再从该位置取出数据
③多核处理器等价于共享存储多处理器
(2)多计算机系统:由多台计算机组成,即多个处理器和多个存储器。不能通过LOAD/STORE指令访问对方存储器(LOAD/STORE只能访问自己的存储器;每个计算机有自己独立的存储器);只能通过消息传递的方式传递数据
6.向量处理器(SIMD的改进):特点:指令的处理对象是向量;主存储器采用多端口同时读取的交叉模块存储器(用于解决数据读取量大)
6.2.硬件多线程的基本概念
1.细粒度/粗粒度:并行运行的是同一线程的不同指令
阻塞时切换线程将会导致更高的切换代价
2.同时多线程:并行运行的是不同线程的不同指令