要了解计算机程序如何执行的,我们需要了解一个典型系统的硬件组成。如下图:
总线
贯穿整个系统的是一组电子管道,称作总线。它携带信息字节并负责在各个部件间传递。通常总线被设计成传送定长的字节块,也就是字。字中的字节数是一个基本的系统参数,个个系统中也一样。有的系统是4个字节的字长,有8个字节的字长,也有的小系统是用的1个字节或者2个字节的字长。
I/O设备
I/O设备是系统与外界的联系通道。包括用户输入的例如键盘和鼠标,输出的例如显示器、打印机、投影仪。以及用于长期存储数据和程序的磁盘。
每个I/O设备都是通过一个控制器或适配器与I/O总线连接起来。控制器和适配器之间的区别主要在于他们的组成方式。控制器是I/O设备本身中或是系统的主板上的芯片组,而适配器则是一块插在主板插槽上的卡。无论如何,他们的功能都是在I/O总线和I/O设备之间传递信息。
主存
主存是一个临时存储设备,是CPU可直接访问的存储空间,在处理器执行程序时,它被用来存放程序和程序处理的数据。主存包括包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。。逻辑上说,存储器是由一个线性的字节数组组成的,每个字节都有自己唯一的地址(数组索引),这块地址是从0开始的。一般来说,组成程序的每条机器指令都由不定量的字节构成。与程序变量相对应的数据项的大小在同种类型的机器上是根据类型变化的。
处理器
中央处理单元(CPU)简称处理器,是解释(或执行)存储在主存中指令的引擎。处理器的核心是程序计数器(PC)的。在任何一个时间点上,PC都是指向主存中的某条计算机语言指令。PC中存放的值为该条计算机指令的内存地址。
从系统通电到系统断电,处理器一直在重复执行相同的基本任务:从PC处读取指令,解释指令中的位,执行指令指示的简单操作,然后更新程序计数器指向下一条指令。下一条的意思并不是值与刚刚执行过的指令在内存上相邻。
下面是一个简单的例子,说明CPU在指令的要求下可能会执行那些操作:
(1)加载:从主存拷贝一个字节或者一个字到寄存器,覆盖寄存器原来的内容。寄存器(中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存 指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC))。
(2)存储:从寄存器拷贝一个字节或者一个字到主存中的某个位置,覆盖这个位置上原来的内容。
(3)更新:拷贝两个寄存器中的内容带算术逻辑单元(ALU),ALU将两个字相加,并将结果存放到一个寄存器中,覆盖该寄存器中原有的内容。算数逻辑单元(是中央处理器 的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门)和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加 减乘(不包括整数除法)。)
(4)I/O读:从一个I/O设备拷贝一个字或者字节到一个寄存器。
(5)I/O写:从一个寄存器中拷贝一个字或者字节到一个I/O设备 。
(6)跳转:从指令本省中抽取一个字,并将这个字拷贝到程序计数器,覆盖程序计数器中原有的值。