中央处理器是计算机的控制、运算中心,它主要通过总线和其他设备进行联系。另外,在嵌入系统设计中,外部设备也常常直接接到中央处理器(CPU)的外部输入/输出(I/O)脚的中断脚上。
中央处理器的类型和品种异常丰富,各种中央处理器的性能也差别很大,有不同的内部结构、不同的指令系统。但由于它们都是基于冯•诺依曼结构,基本部分组成相似。
1.运算器
运算器的主要功能是在控制器的控制下完成各种算术运算、逻辑运算和其他操作。一个计算过程需要用到加法器/累加器、数据寄存器或其他寄存器、状态寄存器等。
加法是加法运算器的基本功能,在大多数的中央处理器中,其他计算也是经过变换后使用的,一个位加法的逻辑图如图1-1所示。
图1-1 位加逻辑图
其中:
Xi、Yi是加数和被加数;
Ci+1是低位进位;
Ci是进位;
Zi是和。
为完成多位数据加法,可以通过增加电路和部件,简单的加法器能够变成串行、并行加法器,超前进位加法器等。
运算器的位数,即运算器一次能对多少位的数据做加法,是衡量中央处理器的一个重要指标。
2.控制器
控制器是中央处理器的核心,它控制和协调整个计算机的动作。控制通常需要程序计数器、指令寄存器、指令译码器、定时与控制电路,以及脉冲源、中断等共同完成,如图1-2所示。
图1-2 控制器组成
中央处理器中各组件介绍如下。
(1)指令寄存器(Instruction Register,IR):显然,中央处理器即将执行的操作码表存放在这里。
(2)指令译码器(Instruction Decoder,ID):将操作码解码,告诉中央处理器该做什么。
(3)定时与控制电路(Programmable Logic Array,PLA):用来产生各种微操作控制信号。
(4)程序计数器(Program Counter,PC):程序计数器中存放的是下一条指令的地址。由于多数情况下程序是顺序执行的,所以程序计数器设计成能自动加1的装置。当出现转移指令时,就需重填程序计数器。程序计数器可能是下一条指令的绝对地址,也可能是相对地址,即地址偏移量。
(5)标志寄存器(Flags Register,FR):这个寄存器通常记录运算器的重要状态或特征,典型的是是否溢出,结果为0.被0除等。这个寄存器的每一位表示一个特征。标志寄存器的典型应用是作为跳转指令的判断条件。
(6)堆栈和堆栈指针:堆栈可以是一组寄存器或在存储器内的特定区域。由于寄存器数量总是有限的,所以大多数系统采用了使用存储器的软件堆栈。堆栈顶部的指针称为堆栈指针。
3.寄存器组
上面提及的程序计数器、标志寄存器等为专用寄存器,它们有特定的功能和用途。
通用寄存器的功能由程序指令决定,最常见的应用是放置计算的中间结果,减少对存储器的访问次数。通常寄存器的宽度是和运算器的位数相一致的。