cpu有什么用处(计算机组成原理-CPU的结构和功能)
在谈结构前我们先看CPU有哪些功能
控制器必须具备能自动地从存储器中取出指令的功能
分析指令包括两部分内容:其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参与这次操作的操作数地址,即操作数的有效地址。
执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。
CPU必须具有控制程序的顺序执行(称指令控制)、产生完成每条指令的控制命令(称操作控制)、对各种操作加以时间上的控制(称时间控制)、对数据进行算术运算和逻辑运算(称数据加工)、处理中断等功能。
通过CPU的功能,我们来看需要实现这些功能CPU需要哪些结构
CPU中的寄存器大致可分为两类:
通用寄存器可由程序设计者指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器。寄存器间接寻址时还可用通用寄存器存放有效地址的地址。
数据寄存器用于存放操作数,其位数应满足多数数据类型的数值范围。
地址寄存器用于存放地址,其本身可以具有通用性,也可用于特殊的寻址方式。
条件码是CPU根据运算结果由硬件设置的位。将条件码放到一个或多个寄存器中,就构成了条件码寄存器。
MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址。
MDR:存储器数据寄存器,用于存放欲存入存储器中的数据或最近从存储器中读出的数据。
PC:程序计数器,存放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC的值可被修改。
IR:指令寄存器,存放当前欲执行的指令。
PSW:(Program State Word)程序状态字寄存器,存放条件码和其他状态信息。
在具有中断系统的机器中还有中断标记寄存器。
控制单元(CU)是提供完成计算机全部指令操作的微操作命令序列部件。
微操作命令序列的形成方法有两种:一种是组合逻辑设计方法,为硬连线逻辑;另一种是微程序设计方法,为存储逻辑。
这里简单提一下,后文会详细介绍
CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间。
取指阶段完成取指令和分析指令的操作,又称取指周期;执行阶段完成执行指令的操作,又称执行周期。
由于各种指令操作功能不同,因此各种指令的指令周期是不相同的
具有间接寻址的指令周期 ,就包括 取指周期、 间址周期、 执行周期3个阶段,其中间址周期用于取操作数的有效地址,因此间址周期介于取指周期和执行周期之间。
带有中断周期的指令周期:如果有请求,CPU则要进入中断响应阶段,又称中断周期。在此阶段,CPU必须将程序断点保存到存储器中。一个完整的指令周期应包括取值、间址、执行、中断4个子周期。
这4个周期又可称为CPU的工作周期,为了区别它们在CPU内可设置4个标志触发器。
FE、IND、EX、INT分别对应取值、间址、执行、中断4个周期,并以“1”状态表示有效,它们分别由1→FE、1→IND、1→EX、1→INT这4个信号控制。
由于不同的指令在执行周期的操作不同,因此无法用统一数据流图表示。
指令流水作用
并行:包含同时性和并发性两方面。
在同一时刻或同一时间段内完成两种或两种以上性质相同或不同的功能,只要在时间上互相重叠,就存在并行性。
并行性体现在不同等级上。通常分为4个级别:作业级或程序级、任务级或进程级、指令之间级和指令内部级。前两级为粗粒度,又称为过程级;后两级为细粒度,又称为指令级。
粗粒度并行性一般用程序算法实现,细粒度并行性一般用硬件实现。
粗粒度并行性是在多个处理机上分别运行多个进程,由多台处理机合作完成一个程序;
细粒度并行性是指在处理机的操作级和指令级的并行性,其中指令的流水作业就是一项重要技术。
把指令的处理过程分为取指令和执行指令两个阶段,在不采用流水技术的计算机里,取指令和执行指令是周而复始地出现,各条指令按顺序串行执行的。
取指令 取指令部件 完成 总有一个部件 空闲
若 取指 和 执行 阶段时间上 完全重叠, 指令周期 减半 速度提高 1 倍
存在两个原因使得执行效率加倍是不可能的:
通常为了减少时间损失,采用猜测法,即当条件转移指令从取指阶段进入执行阶段时,指令部件仍按顺序预取下一条指令。
这样如果条件不成立,转移没有发生,则没有时间损失;若条件成立,转移发生,则所取的指令必须丢掉,并再取新的指令。
可将指令的处理过程分解为更细的几个阶段:
在流水过程中会出现三种相关,使流水线不断流实现起来很困难,即结构相关、数据相关、控制相关。
以上文中六级流水为例
结构相关是当指令在重叠执行过程中,不同指令争用同一功能部件产生资源冲突时产生的,故又有资源相关之称。
当指令1找操作数时,指令4找指令;都需要访问内存,造成冲突
解决冲突的方法
数据相关是流水线中的各条指令因重叠操作,可能改变对操作数的读写访问顺序,从而导致了数据相关冲突。
根据指令间对同一寄存器读和写操作的先后次序关系,数据相关冲突可分为写后读相关(RAW)、读后写相关(WAR)、写后写相关(WAW)。
上述三种数据相关在按序流动的流水线中,只可能出现RAW相关。
在非按序流动的流水线中,由于允许后进入流水线的指令超过先进入流水线的指令而先流出流水线,则既可能发生RAW相关,还可能发生WAR和WAW相关。
以RAW为例:
解决数据相关的方法
控制相关主要是由转移指令引起的。
当转移发生时,将使流水线的连续流动受到破坏。当执行转移指令时,根据是否发生转移,它可能将程序计数器PC内容改变成转移目标地址,也可能只是使PC加上一个增量,指向下一条指令地址。
在第3条指令的取指阶段不知道是否会发生跳转,所以第4条指令进入流水线模式
在第3条指令执行阶段(EI)发现需要跳转,则红框中的部分即转移损失,因为它们原本是不用执行的
解决控制相关
流水线性能通常用吞吐率、加速比、效率3项指标来衡量。
在指令级流水线中,吞吐率是指单位时间内流水线所完成指令或输出结果的数量。吞吐率又有最大吞吐率和实际吞吐率之分。
最大吞吐率是指流水线在连续流动达到稳定状态后所获得的吞吐率。对于m段的指令流水线而言,若各段的时间均为Δt,则最大吞吐率为
流水线仅在连续流动时才可达到最大吞吐率。实际吞吐率总是小于最大吞吐率。
实际吞吐率是指流水线完成n条指令的实际吞吐率。实际吞吐率为:
流水线的加速比是指m段流水线的速度与等功能的非流水线的速度之比。加速比Sp为
即:
效率是指流水线中各功能段的利用率。通常用流水线各段处于工作时间的时空区与流水线中各段总的时空区之比来衡量流水线的效率。
由于流水线有 建立时间 和 排空时间, 因此各功能段的 设备不可能一直 处于 工作 状态。
超标量技术是指在每个时钟周期内可同时并发多条独立指令,即以并行操作方式将两条或两条以上指令编译并执行。
要实现超标量技术,要求处理机中配置多个功能部件和指令译码电路,以及多个寄存器端口,以便能实现同时执行多个操作。
即3条流水同时进行
超流水线技术是将一些流水线寄存器插入到流水线段中,好比将流水线再分段。
即1条流水线再分段
超长指令字技术(VLIW)和超标量技术都是采用多条指令在多个处理部件中并行处理的体系结构,在一个时钟周期内能流出多条指令。
当超标量的指令来自同标准的指令流,VLIW则是由编译程序在编译时挖掘出指令间潜在的并行性后,把多条能并行操作的指令组合成一条具有多个操作码字段的超长指令,由这条超长指令控制VLIW机中多个独立工作的功能部件,由每一个操作码字段控制一个功能部件,相当于同时执行多条指令。
VLIW较超标量具有更高的并行处理能力,但对优化编译器的要求更高,对Cache的容量要求更大。
即一条指令有多个执行阶段
指令流水线是将指令的整个执行过程用流水线进行分段处理.
典型的指令执行过程分为“取指令——指令译码——形成地址——取操作数——执行指令——回写结果——修改指令指针”这几个阶段。
指令流水线对机器性能的改善程度取决于把处理过程分解为多少个相等的时间段数。
流水线相邻两段在执行不同的操作,因此在相邻两段之间必须设置锁存器或寄存器,以保证在一个时钟周期内流水线的输入信号不变。这一指导思想也适用于指令流水。
引起中断的各种因素
通常将能引起中断的各个因素称为中断源
中断源可分为两大类:
一类为不可屏蔽中断,这类中断CPU不能禁止,如电源掉电;
另一类为可屏蔽中断,对可屏蔽中断源的请求,CPU可根据该中断源是否被屏蔽来确定是否给予响应。若未屏蔽则能响应;若已被屏蔽,则CPU不能响应。
为了判断是哪个中断源提出的请求,在中断系统中必须设置中断请求标记触发器,简称中断请求触发器,记作INTR。当其状态为“1”时,表示中断源有请求。
这种触发器可集中设在CPU内,组成一个中断请求标记寄存器。
中断请求触发器越多,说明计算机处理中断的能力越强。这些触发器既可以集中在CPU的中断系统内, 也可以分散到各个中断源中。
任何一个中断系统,在任一时刻,只能响应一个中断源的请求。当某一时刻多个中断源提出中断请求时,中断系统必须按其优先顺序予以响应,这称为中断判优。
各中断源的优先顺序是根据该中断源若得不到及时响应,致使机器工作出错的严重程度而定的。
中断判优可用硬件实现,也可用软件实现。
硬件排队又可分为两种。
解释一下这张图:
软件排队是通过编写查询程序实现的。程序按中断源的优先等级,从高至低逐级查询各中断源是否有中断请求,这样就可以保证CPU首先响应级别高的中断源的请求。
通常有两种方法寻找入口地址:硬件向量法和软件查询法。
硬件向量法就是利用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。向量地址由中断向量地址形成部件产生,这个电路可分散设置在各个接口电路中,也可设置在CPU内。
由向量地址寻找中断服务程序的入口地址通常采用两种办法。
硬件向量法寻找入口地址速度快。
用软件寻找中断服务程序入口地址的方法称为软件查询法。当查到某一中断源有中断请求时,接着安排一条转移指令,直接指向此中断源的中断服务程序入口地址,机器便能自动进入中断处理。
这种方法不涉及硬件设备,但查询时间较长
当EINT=1,且有中断请求(即中断请求标记触发器INTR=1)时,CPU可以响应中断。
之所以CPU在指令的执行周期后进入中断周期,是因为CPU在执行周期的结束时,统一向所有中断源发出中断查询信号,只有此时CPU才能获知哪个中断源有请求。
可在指令执行过程中设置若干个查询断点,CPU在每个“查询断点”时刻均发中断查询信号,以便发现有中断请求,CPU便可及时响应。
保护程序断点就是要将当前程序程序计数器PC的内容保存到存储器中。它可以存在存储器的特定单元内,也可以存入堆栈。
由于中断周期结束后进入下条指令(即中断服务程序的第一条指令)的取指周期,因此在中断周期内必须设法找到中断服务程序的入口地址。
有两种方法寻找入口地址:
CPU进入中断周期,意味着CPU响应了某个中断源的请求,为了确保CPU响应后所需做的一系列操作不至于又受到新的中断请求的干扰,在中断周期内必须自动关中断,以禁止CPU再次响应中断请求。
当进入中断周期时,INT为“1”状态,触发器原端输出有一个正跳变,经反相后产生一个负跳变,使EINT置“0”,即关中断。
一般只有在多重中断中才会有关中断指令
保护断点、寻找入口地址和关中断这些操作都是在中断周期内由一条中断隐指令完成的。
中断隐指令:即在机器指令系统中没有的指令,它是CPU 在中断周期内由硬件自动完成的一条指令。
保护现场:应该包括保护程序断点和保护CPU内部各寄存器内容的现场两个方面。程序断点的现场由中断隐指令完成,各寄存器内的现场可在中断服务程序中由用户(或系统)用机器指令编程实现。
恢复现场:是指在中断返回前,必须将寄存器的内容回复到中断处理前的状态,这部分工作也由中断服务程序完成。
当CPU正在执行某个中断服务程序时,另一个中断源又提出了新的中断请求,而CPU又响应了这个中断请求,暂时停止正在运行的服务程序,转去执行新的中断服务程序,这称为多重中断,又称为中断嵌套
如果CPU对新的请求不予响应,待执行完当前的服务程序后再响应,即为单重中断。
多重中断“开中断”指令的位置前于单重中断,从而保证了多重中断允许出现中断嵌套。
为了保证级别低的中断源不干扰级别高的中断源的中断处理过程,可采用屏蔽技术。
中断系统对断点的保存都是在中断周期内由中断隐指令实现的,对用户是透明的。
断点可以保存在堆栈中,由于堆栈先进后出的特点,出栈时按相反顺序便可准确返回到程序的间断处。
断点也可保存在特定的存储单元内,例如约定一律将程序断点存至主存的0号地址单元内。在中断服务程序中的开中断指令之前,必须先将0地址单元的内容转存至其他地址单元中,才能真正保存每一个断点。
我们也可以将上文中提到的排队器和屏蔽触发器结合使用
无论INTR是1还是0,且前面传过来的是1还是0
只要MASK=1,即被屏蔽了
对应每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合在一起,便构成一个屏蔽寄存器,屏蔽寄存器的内容称为屏蔽字。
屏蔽字与中断源的优先级别是一一对应的。
在中断服务程序中设置适当的屏蔽字,能起到对优先级别不同的中断源的屏蔽作用。
屏蔽字屏蔽的是其他中断
当一个中断的屏蔽字为全1时,表示不允许其他中断打断当前的中断,所以屏蔽字为全1的中断优先级最高
优先级包含响应优先级和处理优先级。
在不改变CPU响应中断的次序下,通过改变屏蔽字可以改变CPU处理中断的次序。
假设响应优先级为:A、B、C、D
网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 屯百科 琼ICP备2023011085号-1