1.3.1 取指令和执行指令
指令寄存器(InstructionRegister,IR)放置取到的指令。指令中包含确定处理器要执行的操作位,处理器解释指令并执行对应的操作。大体上,这些操作可分为4类:
-
处理器-存储器:数据可以从处理器传送到存储器,或者从存储器传送到处理器。
-
处理器-I/O:通过处理器和I/O模块间的数据传送,数据可以输出到外部设备,或者从外部设备输入数据
-
数据处理:处理器可以执行很多与数据相关的算术操作或逻辑操作。
-
控制:某些指令可以改变执行顺序。例如,处理器从地址为149的存储单元中取出一条指令,该指令指定下一条指令应该从地址为182的存储单元中取,这样处理器要把程序计数器设置为182.因此,在下一个取址阶段中,将从地址为182的存储单元而不是地址为150的存储单元中取指令。
假设有一台机器具备图1.3中列出的所有特征,处理器包含一个称为累加器(AC)的数据寄存器,所有指令和数据长度均为16位,使用16位的单元或字来组织存储器。指令格式中有4位操作码,因而最多有16种不同的操作码(由一位十六进制数字表示),操作码定义了处理器要执行的操作。通过指令格式的余下12位,可以直接访问的存储器大小为4096(4k)个字(用三位十六进制数表示)。
图1.4描述了程序的部分执行过程,显示了存储器和处理器的寄存器的相关部分。给出的程序片段把地址为940的存储单元中的内容与地址为941的存储单元的内容相加,并将结果保存在后一个单元中。这需要三条指令,可用三个取址阶段和三个执行阶段描述:
-
PC中包含第一条指令的地址为300,该指令内容(值为十六进制数1940)被送入指令寄存器IR中,PC增1。注意,此处理过程使用了存储器地址寄存器MAR和存储器缓存寄存器MBR。为简单起见,这些中间寄存器没有显示。
-
IR中最初的4位(第一个十六进制数)表示需要加载AC,剩下的12位(后三个十六进制数)表示地址为940.
-
从地址为301的存储单元中取下一个指令(5941),PC增1
-
AC中以前的内容和地址为941的存储单元中的内容相加,结果保存在AC中
-
从地址为302的存储单元取下一条指令(2941),PC增1