CPU总是周而复始地做同一件事:从内存取指令,然后解释执行它,然后再取下一条指令,再解释执行。
CPU包含以下功能单元:
寄存器(Register),是CPU内部的高速存储器,像内存一样可以存取数据,但比访问内存快得多。
程序计数器(PC,Program Counter,保存着CPU取指令的地址,每次CPU读出程序计数器中保存的地址,然后按这个地址去内存中取指令,这时程序计数器保存的地址会自动
加上该指令的长度,指向内存中的下一条指令。
指令解码器(Instruction Decoder)。CPU取上来的指令由若干个字节组成,这些字节中有些位表示内存地址,有些位表示寄存器编号,有些位表示这种指令做什么操作,是加、
减、乘、除还是读、写,指令解码器负责解释这条指令的含义,然后调动相应的执行单元去执行它。
算术逻辑单元(ALU,Arithmetic and Logic Unit)。如果解码器将一条指令解释为运算指令,就调动算术逻辑单元去做运算,比如加减乘除、位运算、判断一个条件是否成立等。
运算结果可能保存在寄存器中,也可能保存到内存中。
地址和数据总线(Bus)。CPU和内存之间用地址总线、数据总线和控制线连接起来,32位处理器有32条地址线和32条数据线,每条线上有1和0两种状态,32条线的状态就可以表示一个32位的数。
如果在执行指令过程中需要访问内存,比如从内存读一个数到寄存器,则执行过程可以想像成这样: