上一篇就刚刚好把指令的知识讲完了,原本应该写至少一篇指令系统刷题的。但是无奈,实习生活还是比较累的,为了质量,还是决定周末再写刷题版。
CPU的功能和组成
中央处理器(Control Processing Unit),是控制计算机自动完成取出指令跟执行指令的部件。是计算机的核心部件。
前面的概论我们知道,CPU主要是由运算器跟控制器组成。其中,运算器的功能是对数据进行加工,而控制器的功能是负责协调并控制各部件的指令序列(比如取指令,分析指令等等)。
CPU的具体功能包括:
- 指令控制
- 操作控制
- 时间控制
- 数据加工
- 中断处理
CPU通过下面的三种方式,指挥全机运作:
- 按规定的操作执行(即程序的顺序执行)
- 自动执行
- 有秩序的执行
结合之前学过的指令系统知识,可以通过下面的视频来了解指令的执行过程。(csdn不能上传视频,去知乎看吧)。
CPU的基本结构
在计算机系统中,CPU由运算器跟控制器组成。
运算器
运算器主要接收从控制器处传来的命令,并执行相应的操作,对数据进行加工处理,主要以下面的几部分组成
- 算术逻辑单元(ALU):主要进行算术/逻辑运算
- 暂存寄存器:用于暂存从主存读出来的数据,该数据不能放在通用寄存器上,对应用程序员透明。
- 累加寄存器(ACC):一个通用寄存器组,用来暂存ALU的运算结果,当ALU执行算术和逻辑运算的时候,为ALU童工一个工作区(比如我们之前提到过的R1+R2 ->R1)
- 通用寄存器组:AX,BX,CX,DX.SP等等,用于存放操作数(包括源操作数,目的操作数以及中间结果)和各种地址信息。SP是堆栈指针,用于指向栈顶的地址。
- 程序状态字信息(PSW): 用来表示各种工作状态信息跟中断情况。如下图所示:
- 移位器:对操作数或者运算结果进行以为操作
- 计数器:控制乘除运算的步数
控制器
控制器是整个系统的指挥中心,在其控制下,使运算器,存储器和输入输出设备等功能部件构成一个有机整体。其基本功能是执行指令。每条指令的执行是由控制器发出的一组微操做实现的。主要由以下几部分组成:
- 程序计数器(PC):用于指出下一条指令在主存中的存放地址,CPU是根据PC中的内容去取得指令的。
- 指令寄存器(IR):用来保存从存储器中取出,正在执行的指令,在执行该指令的过程中,指令寄存器的内容不允许更改,以确保实现指令的全部功能。
- 指令译码器:对操作码字段进行译码,向控制器提供特定操作信号。
- 存储器地址寄存器(MAR):用于存放将要访问的主存单元的地址。
- 存储器数据寄存器(MDR):用于存放向主存写入/读出的信息。
- 时序系统:用于产生各种时序信号。由统一时钟分频所得。
- 微操作信号发生器:由IR,PSW的内容以及时序信号,产生控制整个计算机系统所需的各种控制信号。
控制器的原理,是根据指令操作码,执行步骤,条件信号来形成当前计算机各部件所要的控制信号。
寄存器的可见性
CPU内部的寄存器大致可以分成两种;
- 用户可见寄存器:用户可以通过程序去访问的寄存器(如通用寄存器,PSW, PC等等)。
- 用户不可见寄存器:程序无法访问,在程序的执行过程中自动赋值(如MAR,MDR IR等等)
指令的执行过程
指令周期
指令周期:从取指令,分析指令,到执行完该指令所需要的全部时间,称为指令周期。也就是CPU完成一条指令的时间。
机器周期:也称为CPU周期,把一条指令周期划分为若干个机器周期,每个机器周期内完成一个基本操作,不同的指令可能包含不同数目的机器周期。通常它等于取指时间或者访存时间。
T周期:也称时钟周期或者节拍,是CPU操作的最基本的单位。在一个机器周期内,要完成若干个微操作,因而需要分成若干个时间段。所以也称为节拍T。节拍的宽度取决于CPU完成一次基本的微操作所需要的时间。下图说明了三者间的相互关系:
对于一些执行期间不需要访存的指令,比如Jump,X.,这是一条无条件转移指令,此时指令周期仅仅包含取指周期和执行周期。但是对于间接寻址指令,为了取操作数,需要先访问内存一次,取出有效地址后,再访问主存,取出操作数,所以这种操作还包括间址周期。当CPU采用中断方式实现主机跟I/O设备的信息交换的时候,如果有中断请求,则CPU进入中断响应阶段,此时又称为中断周期。这样,完整的指令周期为:
实际上,每个周期都有CPU在访存,只不过是访存的目的不同,分别为取指令,取EA,取操作数,保存断点。
指令的执行过程:
取指周期:根据PC中的内容,聪明和主存中取出指令代码,并放在IR中。(即CPU从何处取指,如何形成后续的指令)
间址周期:取操作数的有效地址
执行周期:根据IR中指令字的操作码,操作数,通过ALU操作产生结果。
中断周期:处理中断请求,将程序断点存入堆栈中,SP指示栈顶地址,则进栈操作是先秀海栈顶指针,后存入数据(那么出栈的操作我们前面说过)。
下面的视频是指令的执行过程:
指令的执行过程