CPU是什么
CPU的全称是Central Processing Unit
(中央处理器),CPU与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建CPU。这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说CPU决定了你电脑的计算能力。
CPU的功能
- 指令控制:控制指令的执行,即完成取址、分析指令、执行指令的操作;
- 操作控制:根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作;
- 时间控制:对各种操作加以时间上的控制;
- 数据加工:对数据进行算数逻辑运算;
- 中断处理:对计算机运行过程中的异常情况和特殊请求的处理。
CPU的结构组成
CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。CPU从逻辑上可以划分为3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。
控制单元(CU,Control Unit)
控制单元是整个CPU的指挥控制中心,由指令寄存器、指令译码器、和操作控制器等,对协调整个电脑有序工作极为重要。它根据用户预先编号的程序,依次从存储器中取出各条指令,放在指令寄存中,通过指令译码确定应该进行什么操作,然后通过操作控制器,按确定的时序,向相应的部件发出微操作控制信号。操作控制器中主要包含节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
- 取出指令,并指出下一条指令在主存中的位置;
- 对指令译码,产生响应的操作信号进而控制部件进行相应的动作;
- 指挥并控制CPU,主存和输入输出设备之间的数据流向。
算数逻辑单元(ALU,Arinthmetic Logic Unit)
是运算器的核心。可以执行算术运算和逻辑运算。相对控制单元而言,运算控制器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。
存储单元(MMU,Memory Management Unit)
包括CPU内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器可以减少CPU访问内存的次数,从而提高了CPU的工作速度,但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可以分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其他用途,通用寄存器的数目因微处理器而异。
CPU的寄存器
- 通用寄存器:
- 数量多,功能多,对用户可见,可以由程序编址;
- ACC是一个通用寄存器
- 例如:
register int i = 0;
,定义一个寄存器变量
- 专用寄存器:
- 程序计数器(PC)
- 指令寄存器(IR)
- 存储器数据寄存器(MDR)
- 存储器地址寄存器(MAR)
- 状态标志寄存器(PSWR)
CPU指令执行过程
指令周期
不同的指令由不同的指令周期。无条件转义指令
的指令周期只有一个寻址周期
,而加法指令
和乘法指令
的指令周期有取指周期
和执行周期
两个。
指令周期的数据流
- 当前指令地址送至存储器地址寄存器,
(PC) -> MAR
; - 向内存发送读取指令,驱动主存做读操作,
1 -> R
; - 将MAR所指主存单元中的内容经过数据总线送入MDR,
M(MAR) -> MDR
; - 将MDR中的指令送入IR,
(MDR) -> IR
; - 形成下一条指令地址(由CU发出信号控制),
(PC)+1 -> PC
;
另外,间指周期的数据流和中断周期的数据流和该周期有所不同。
PC
(Program Counter)程序计数器MAR
(Memory Address Register)地址寄存器CU
(Control Unit)控制单元MDR
(Memory Data Register)数据寄存器IR
(Instruction Register)指令寄存器
CPU工作可以分为5个阶段:取指令 -> 指令译码 -> 指令执行 -> 指令取数 -> 结果回写
-
取指令
阶段是将内存中的指令读取到CPU中寄存器的过程,程序寄存器用于存储下一条指令所在的地址。 -
指令译码
阶段,在取指令完成后,立马进入指令译码阶段,在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别出区分不同的指令类别以及各种获取操作数的方法。 -
执行指令
阶段,译码完成后,就需要执行这一条指令了,此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。 -
访问取数
阶段,根据指令的需要,有可能需要从内存中提取数据,此阶段的任务是:根据指令地址,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。 -
结果写回
阶段,作为组后一个阶段,结果写回(Write Back,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式:结果数据经常被写到CPU的内存寄存器中,以便后续的指令快速存取。