1.3 CPU 是如何运作的(1)
上一节中我们介绍了程序经过编译器和汇编程序的转换后,最终得到机器语言的过程,也探讨了由C 语言程序生成汇编语言的过程。下面我们再进一步探究CPU 是如何执行机器语言程序的。
指令集架构与微架构
CPU 能够执行什么样的指令,或者说CPU 所具备的指令集,称为CPU的指令集架构。
指令集架构是规定程序设计如何使用指令的规范,它包括寻址模式和寄存器构成、中断、异常处理等。所以,只要指令集架构是相同的,即使使用不同品牌的CPU,所得出的结果也是一样的。比如,在上一节所展示的汇编语言程序中,只要是x86_64 架构的CPU,不管其厂家是AMD 还是英特尔,结果都是一样的。
相反,如果指令集架构不同,那么CPU 的指令也会相应发生变化。但是,不管使用的方法是否一样,几乎所有的CPU 中都具备了以下基本指令。
算术运算
逻辑运算(AND,OR,XOR)
移位指令
条件比较指令
寄存器与内存之间的传送
跳转指令
另一方面,CPU 执行指令集架构的方法叫做微架构。各品牌为了使CPU 更高效化,在设计上花费了不少功夫,所以即使是拥有同一指令集架构的CPU,其性能和负荷方面的特点也是有所不同的。
高效编程的一个重要手段就是掌握CPU 高效执行指令的方法。下面我们了解一下CPU 的基本构造,以及它是如何执行指令的。
如何执行指令
所谓计算机,就是指按顺序执行分配到内存上的程序(指令的排列),并通过这一操作完成数据处理的机器。CPU 大致按以下顺序执行指令(图1-3)。
1. 从内存读取指令(读取)
2. 解析所读取的指令(解码)
3. 提取操作目标的数据
4. 执行计算和条件对比等指令
5. 输出加工后的数据