CPU是计算机的控制中心,主要由运算器、控制器、寄存器组和内部总线等部件组成。
CUP:控制器
指令寄存器:
译码寄存器:指令格式变换,并分析指令功能
时序部件:存储指令运行的顺序
状态寄存器:存储指令的状态位,如:进位,借位,溢出(上溢,下溢),校验位。
程序计数器(本质存储器):1.存储下一条指令的入口地址。2.记录指令执行条数(每执行一条指令加一)。3.存储中断恢复的入口地址。
执行过程:指令送入指令寄存器暂存,再交由译码器进行译码分析,分析完交给微操作发生部件,并查询指令相应的次序和状态后产生动作最后查询程序计数器。取得下一条指令的地址。
寄存器:
累加器:存储操作数及中间运算结果(DRAM:不能长时间存储)
通用寄存器:存储操作数及最终运算结果,向用户开放。允许程序员在申请变量
地址类寄存器:例子:PC,状态寄存器。
内部总线:(芯片级)CPU内部各单元的公共信道。
流水线技术:
作用:通过多个字原件分别执行一部分指令功能形成多条指令并发执行。产生布局时间重叠,以节省运算时间,提高效率。
串行:
并行:
指令执行时间运算:
串行:单条指令总时间乘以条数
并行:第一条指令总时间加(n-1)条*最大时间间隔
吞吐率:单位时间内处理指令的条数 TP=n/流水线总时间
指令系统:
1.CISC(复杂指令集算系统)
作用:早期奔腾内置的,内置多条指令,减少访问内存次数,提高CPU运算效率。
特点:
指令条数,种类较多(大于200条)
目的:缩小汇编语言与高级语言之间的差距。
CPU硬件设计复杂,效率低
CPU内置指令集常用指令较少(20%)
2.RISC(精简指令计算机系统)
产生原因:将早期CISC指令集进行优化,保留20%指令,产生RISC指令集。
特点:
指令条数,种类少(>100条)
指令长度固定,格式种类少,译码简单。
寻址方式少
指令使用流水线执行,提高并行度。
减少了访问内存指令,通过增加大量寄存器提高访问效率。
3.EPIC(精简并行指令集算系统)用于X64
控制器
控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。
主要功能有:从内存中取出一条指令,并指出下一条指令在内存中的位置;对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作;指挥并控制CPU、内存和输入输出设备之间数据的流动。
程序计数器(PC)是专用寄存器,具有寄存信息和计数两种功能,又称为指令计数器,在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的初始内容即是程序第一条指令的地址。执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序执行的,因此修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出 的直接转移的地址得到。
指令寄存器(IR)用来保存当前正在执行的指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器(ID)就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
指令译码器(ID):对操作码进行测试,以便识别所要求的操作。
地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。
为了保证程序指令能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
寄存器组:
寄存器组是CPU中的一个重要组成部分,它是CPU内部的临时存储空间。寄存器既可以用来存放数据和地址,也可以存放控制信息或CPU工作时的状态。在CPU中增加寄存器的数量,可以使CPU把执行程序时所需的数据尽可能地放在寄存器中,从而减少访问内存的次数,提高其运行速度。但是,寄存器的数目也不能太多,除了增加成本外,寄存器地址编码增加还会增加指令的长度。CPU中的寄存器通常分为存放数据的寄存器、存放地址的寄存器、存放控制信息的寄存器、存放状态信息的寄存器和其他寄存器等类型。
程序计数器是存放指令地址的寄存器,其作用是:当程序顺序执行时,每取出一条指令,程序计数器(PC)内容自动增加一个值,指向下一条要取的指令。当程序出现转移时,则将转移地址送入PC,然后由PC指向新的指令地址。
指令寄存器(IR)用于存放正在执行的指令,指令从内存取出后送入指令寄存器。其操作码部分经指令译码器送微操作信号发生器,其地址码部分指明参加运算的操作数的地址形成方式。在指令执行过程中,指令寄存器中的内容保持不变。
状态字寄存器(PSW)用于保存指令执行完成后产生的条件码,例如运算是否有溢出,结果为正还是为负,是否有进位等。此外,PSW还保存中断和系统工作状态等信息。
通用寄存器组是CPU中的一组工作寄存器,运算时用于暂存操作数或地址。在程序中使用通用寄存器可以减少访问内存的次数,提高运算速度。
在汇编语言程序中,程序员可以直接访问通用寄存器以存取数据,可以访问状态字寄存器以获取有关数据处理结果的相关信息,可以通过相对程序计数器进行寻址,但是不能访问指令寄存器。
指令中的寻址方式就是如何对指令中的地址字段进行解释,以获得操作数的方法或 获得程序转移地址的方法。常用的寻址方式有:
•立即寻址。操作数就包含在指令中。
•直接寻址。操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。
•寄存器寻址。操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。
•寄存器间接寻址。操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。
•间接寻址。指令中给出操作数地址的地址。
•相对寻址。指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条 指令的地址加上该偏移量。
•变址寻址。操作数地址等于变址寄存器的内容加偏移量。