简单地描述一下程序中的指令被CPU执行的流程。
首先熟悉一下CPU的大致架构:
Structure of a CPU- General purpose register: 通常用于存储复杂计算的中间结果(如ALU的计算结果)。
- ALU: 一个复杂电路,能进行数学运算(加减乘除)以及逻辑运算(与或非)。
- Instruction register: 保存CPU当前执行的指令。CPU根据IR中的instruction code执行相应的操作(如 code 0 表示 add,code 1 表示 substract,等等)。
- Program counter: 保存CPU要执行的下一条指令的地址(location in memory)。 每当CPU执行完一条指令,PC的值就会增加。
- Processor status register: 保存comparison operation的结果。 如equal, not equal, less than, greater than, less than or equal, greater than or equal。
CPU执行的流程,就是重复以下步骤:
- 取指(fetch): 在执行完一条指令之后,CPU根据PC中的address,发出申请,去内存中取来下一条指令。
内存将对应address中保存的值发送给CPU,CPU将此值保存在IR中。根据IR中的instruction code,CPU能通过指令集得知这条指令应该为多长。
PC增加这条指令的长度,此即下一条要执行的指令的地址。 - 译码(decode): CPU根据指令,去寄存器或者内存中取来操作数。
- 执行(execute): ALU执行指令中指定的操作,得到结果值,或更新相应寄存器。
网友评论