姜咏江
什么是机器指令计算机?要回答中国问题,先要说清楚什么是机器指令。所谓的机器指令是完成一定功能可带有一定格式的微程序名称,这种名称只能数表示。
一、机器指令解释
例如微指令计算机中(见我上篇博文),微指令程序:
1000001;x→A
0100001;y→B
0010010;x+y→O
和
1000001;x→A
0100001;y→B
0011010;x-y→O
分别确定了两个数相加和相减的基本功能。假如我们将前者用“00000001”表示,后者用“00000010”表示,我们就可以用这两个二进制数代表两个微程序,就称它们是机器指令,前者是加,后者是减。
这个例子中变量(寄存器)x、y是隐含的,不需要指出。如果需要指出,须将x、y编成数表示。假如这样的x、y有8个,那么就可以用3位数表示,那么这两个加、减指令就必须写成14位数,后加的6位中有3位数表示x,另外3位数表示y。我们将前面“00000001” “00000010”称为指令“操作码”,后面的6位数称为“操作数”。这样一来,机器指令的一般格式就为:操作码 操作数。
习惯上人们将操作码放在左面,操作数放在右面,其实怎样放都可以,只要能够识别就行。
一个计算机的表数位数是固定的,如何设计操作码和操作数的位数,需要统筹安排。一般来说,计算机组成越复杂,指令的格式会相应的复杂一些。
因为计算机是物理器件,是以逻辑电路为基础的,因而只能通过二进制数相互传递信息,也就是“计算机只能识别二进制数”。
二、机器指令计算机
机器指令的微程序是固定的。机器指令的固定微程序又叫“例行程序”。要执行一个机器指令,就必须将例行程序的每条微指令按顺序执行一遍(假如没有重复执行),这需要事先将例行程序保存在某处,并且能够按顺序送到计算机控制字上,这叫机器指令执行。简单的办法是将例行程序放到存储器中,并设法将机器指令和它的例行程序的首地址对应起来,以便能够依据机器指令迅速找到例行程序,并执行例行程序。
如下图1所示,依据机器指令查找例行程序,然后将微指令送到各控制线执行。
图 1 基本机器指令计算机
与微指令计算机相比,程序员只要将机器指令送到计算机的相关设备中,机器就能够执行它的例行程序,从而避免了程序员逐条输入微指令,这就是计算机指令计算机的最基本特征。
随着自动化执行的需求,人们将机器指令程序放到了存储器中,并设法让机器指令逐条取出执行,于是就出现了如图2所示的情况。
图 2 复杂机器指令计算机
虽然经过此番演变,程序员仍然要编写机器指令程序,因而没有改变机器指令计算机的性质。为了逐条将机器指令从程序送出,设备增加了程序计数器PC。为了找到指令的例行程序,人们增设了微程序地址译码和微程序计数器。为了加快速度,人们将例行程序选择和执行用逻辑电路来实现,因而出现了所谓的控制矩阵,进而出现了控制器。为了机器程序和数据的输入输出,人们又增设了输入输出设备,但至今为止,程序员实际的程序书写结果仍然是机器指令程序,也就是最终到达计算机程序存储器的仍然是机器指令程序。
三、软硬件的接口
我主张可以变化和移动的信息就是软件。从计算机使用的角度来看,程序员能够直接使用的信息就应改被定义成软件。不论何种方式的机器指令计算机,程序员最终都是使用机器指令来工作的,而机器指令程序向下的工作都可以使用硬件电路完成,因而软件的起点定在机器指令处比较合适。
对于已经成型的机器指令计算机,我们能够改变的东西只有程序和数据,而可以改变程序的最低层并不是微指令,而是机器指令,因而不能够将现在这种成型计算机的微指令程序(例行程序)称为软件,尽管可以用存储器将微程序装填进去,但在计算机运行中,这些例行程序并不变化。
对于微指令计算机来说,程序员使用的微指令是不断变化的,因而那里的微指令程序应该是软件。
如果用可变与不可变来定义软硬件,那么计算机运行中一切不可改变或转移的东西,都可以称为硬件,否则就是软件。
2010-3-31
https://blog.sciencenet.cn/blog-340399-307654.html
上一篇:
微指令计算机下一篇:
高级语言指令计算机