数字计算机是由处理器、存储器和输入/输出设备组成的内部互连系统。
处理器
-
CPU:通过总线从主存储器中逐条进行取指令、分析指令和执行指令的过程来执行程序
- 主要由控制器、算术逻辑单元(ALU) 和 寄存器组(Registers)构成
- 控制器:负责从主储存器中取指令和确定指令类型
- ALU:完成如加法、逻辑等运算指令
- 寄存器组:存放计算时的中间结果和一些控制信息;它们的容量都相同,可被CPU高速读写
- PC:程序计数器。存放下一条将被取出执行的指令
- IR:指令寄存器。存放当前正在执行的指令
- 通过寄存器:存放 ALU 计算时的中间结果
- 专用寄存器
-
总线
- 由一组平行导线构成。在计算机中用来传递地址、数据和控制信号
- 在CPU内部连接CPU的各组成部分,在CPU外部连接CPU和存储器及输入/输出设备
CPU的组成
数据通路:由寄存器(1~32个)、ALU 和 连接它们的内部总线构成
寄存器给 ALU 的两个输入寄存器提供输入,ALU 对输入数据进行算术或逻辑等简单运算后,将产生的运算结果送入输出寄存器,经输出寄存器存回某个寄存器中。以后需要时还可以从寄存器写入到内存中。
这种 ALU 将两个操作数进行运算并将结果存回的过程称为数据通路周期。该周期越短,计算机运行的越快。
并非所有的 CPU 中都要输入或输出寄存器
CPU中执行的大多数指令可分为如下两类:
- 寄存器-内存指令:用于寄存器和内存之间的数据交换
- 寄存器-寄存器指令:从寄存器中取得两个操作数到ALU进行运算,然后将运算结果送回某个寄存器
指令的执行
通常,计算机执行一条指令的过程可大致分为如下几个步骤:
- 从主存中取下一条指令到指令寄存器中(【M】-> 【IR】)
- 将程序计数器指向下一条指令(【PC】+ 1 -> 【PC】)
- 判断刚取得的指令的类型
- 若该指令用到某主存单元,则对该主存单元进行寻址
- 必要时,从主存中取一个字到 CPU 的寄存器中
- 执行指令
- 返回第一步准备执行下一条指令
上述步骤通常叫做 取指-译码-执行 周期,是所有计算机操作的核心。
上例通过程序来模拟 CPU 的功能,这说明程序并不一定需要由硬处理器来执行,也可以让另一个程序通过取指令、分析指令和执行指令的过程来执行一个程序的指令。这种程序就是解释器。
在确定一台新计算机的机器语言 L 后,对于如何执行 L 通常有如下三种方式:
- 由硬处理器来直接执行 L 的程序
- 写一个解释器来解释执行 L 的程序,由硬处理器来执行解释器
- 一部分指令由硬件执行,另一部分指令由解释器解释
解释器会将目标机的指令分解成几个更小的步骤执行,这就使得运行解释器的计算机比起用硬件实现的目标机来说更简单也更廉价一些。尤其是当目标机的指令集比较庞大,或者指令集中有许多带有复杂选项的指令时。
现代计算机设计原则
- 所有指令由硬件直接执行
- 减少解释可提高大多数