从功能方面看,CPU的内部由以下四部分组成:
- 寄存器:寄存器用来暂存指令,数据等处理对象,可以看作是内存的一种。
- 控制器:负责把内存上的指令,数据等读入寄存器,并根据指令的执行结果来控制整个计算机。
- 运算器:负责运算从内存读入寄存器的数据。
- 时钟:负责发出CPU开始计时的时钟信号。不过,也有些计算机的时钟位于CPU的外部。时钟信号以Hz(赫兹为单位),代表每秒的频率,时钟信号的频率越高,CPU的运行速度越快。
CPU的四个构成部分中,程序员只需要重点了解寄存器即可。
不同类型的CPU,其内部寄存器的数量,种类以及寄存器存储的数值范围都是不同的。不过根据功能的不同,我们可以将寄存器大制划分为八类。其中,程序计数器,累加寄存器,标志寄存器,指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。
种类 | 功能 |
---|---|
累加寄存器(accmulator register) | 存储执行运算的数据和运算后的数据 |
标志寄存器(flag register) | 存储运算处理后的CPU的状态 |
程序计数器(program counter) | 存储下一条指令所在内存的地址 |
基址寄存器(base register) | 存储数据内存的起始地址 |
变址寄存器(index register) | 存储基址寄存器的相对地址 |
通过寄存器(general purpose register) | 存储任意数据 |
指令寄存器(instruction register) | 存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作 |
栈寄存器(stack register) | 存储栈区域的起始地址 |
几个寄存器使用的实例
- 标志寄存器:比较有意思的是,程序的比较操作就是在cpu内部利用标志寄存器做减法运算,例如X > Y,就是把X - Y的结果存在标志寄存器中,如果结果为负,表示X小于Y,反之则大于。
- 程序计数器:函数的调用,就是把程序计数器的值设定为函数的存储地址来实现。