高级语言编写的程序必须经过编译程序和汇编程序的编译和汇编以后,变成由机器语言构成的程序才能够在机器硬件上执行。指令系统是计算机系统软硬件交界面的最重要的组成部分,由机器指令构成的机器语言程序,要在计算机硬件上进行执行,每一条指令要由CPU从内存当中取出、分析、执行并进行结果的写回。
CPU的结构和功能
- CPU的结构
- 指令周期
- 指令流水
- 中断系统
CPU的结构
CPU的功能
CPU由运算器和控制器两部分构成,故cpu既包括控制器的功能,又包括控制器的功能
控制器的功能
运算器的功能
实现算术运算和逻辑运算
CPU结构框图
CPU的寄存器
一:用户可见/不可见寄存器
1.用户可见的寄存器
1)同用寄存器:该类寄存器可以用来存放操作数,在有些机器里面可以用这些通用寄存器对某种寻址方式进行支撑,作为某种寻址方式的专用寄存器。
2)数据寄存器:保存操作数用的寄存器,要满足多种类型操作数的需求;另外可以把两个寄存器拼接在一起用来存放双倍长字长数据;
3)地址寄存器:保存地址,其位数应满足最大的地址范围;如8086中的段寄存器;
4)条件码寄存器:存放条件码,这些条件码是作为程序分支的依据
2.用户不可见的寄存器
:在计算机中是非常多的,如在流水线结构的计算机当中,流水段之间的流水段寄存器都是用户不可见的。
二:控制和状态寄存器
1.控制寄存器
我们要从计算机的内存当中取出一条指令,我们需要从PC开始,PC把指令地址送给MAR(主存地址寄存器),MAR再把其当中包含的要取的指令的地址传送给主存储器,并且控制单元发出读命令,读出的指令被放到MDR(主存数据寄存器)当中,进一步放到IR当中。
其中PC、MAR、MDR、IR都是用于控制cpu进行操作的,它们就是控制寄存器,这些控制寄存器有的是可见的有些是不可见(MAR、MDR、IR)的,所谓用户可见的就是指用户在编写程序的过程中可以利用这些寄存器的值或者可以读到这些寄存器的值。
2.状态寄存器
反映了指令执行结果的情况,或者是记录软件、硬件的状态
状态寄存器和条件码寄存器是类似的,可以用来存放条件码;如8086中的状态寄存器;
另外一种状态寄存器 PSW(程序状态字),存放程序状态字(在中断或者是子程序调用过程中,为了要能够让程序进行正确的返回断点,返回断点之后还能够接着执行给定的程序,那么在中断或者是转子程序之前,就要保存程序的运行现场和程序断点,这些运行现场和断点包括了程序运行的软件信息和硬件信息,这些信息是保存在寄存器当中。有些表示程序运行状态的寄存器可以通过指令集当中的指令进行读或写,有一些无法通过指令集当中的指令进行读,因为涉及到的状态比较多,如果为每一个状态都设计一条指令来进行读,那么指令集将会非常庞大,为了 完成程序现场和断点的保存,那么计算机的设计者就把这些软硬件状态相关的寄存器把它集合成一个大的寄存器,那么这个寄存器就是程序状态字,程序状态字的长度比较长,有些程序状态字的长度可以达到几千位,但是我们可以利用交换程序状态字的方式来完成程序现场切换,这使得程序中断当中保存断点以及返回之后恢复断点变得比较容易)
控制单元CU和中断系统
**1.CU **
CU产生全部指令执行时所需要的操作(微操作)命令序列;任何一条指令要在CPU上进行执行,CPU要对指令进行译码,根据其是什么指令或者要求完成什么功能,要产生完成这些功能所需要的微操作命令。需注意,不仅仅产生这些操作命令,而且要保证这些操作命令之间的先后顺序。
CU的设计方法有两种:
1.组合逻辑设计:完全由组合逻辑硬件来实现,或者是硬连线方式进行实现;这种方式速度快,比方说精简指令集计算机控制器的实现通常都是采用硬连线的方式。
2.微程序设计:适用于复杂功能的设计,采用存储逻辑进行设计。
2.中断系统