购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 计算机的工作流程

2.2.1 指令与程序

指令是用来指挥和控制计算机执行某种操作的命令。通常,一条指令包括两个基本组成部分,即操作码部分和操作数部分。其组成格式如下:

其中操作码部分用来指出操作性质,如加法运算、减法运算、移位操作等;操作数部分用来指明操作数(即参与运算的数)或操作数的地址。

一台计算机通常有几十种甚至上百种基本指令。我们把一台计算机所能识别和执行的全部指令称为该机的指令系统。指令系统是反映计算机的基本功能及工作效率的重要标志。它是计算机的使用者编制程序的基本依据,也是计算机系统结构设计的出发点。

指令的操作码和操作数在机器内部均以二进制形式表示。它们各自所占的二进制位数决定了指令的操作类型的多少及操作数地址范围的大小。例如,若一个计算机的指令格式中操作码占6位(bit),则该计算机一共可以有64种(2 6 =64)不同操作性质的指令。不同的指令对应不同的二进制操作码。另外,我们已经知道,要从主存中存取操作数,必须先给出地址码,而主存的地址码也是以二进制形式表示的。例如,若主存容量为16384个单元,那么至少要用14位二进制码来表示它的地址(2 14 =16384)。显然,主存容量越大,为表示它的地址所需要的二进制码位数也越多。也就是说,操作数地址范围越大,则指令中地址码的位数也应越多。

指令从形式上看,它和二进制表示的数据并无区别,但它们的含义和功能是不同的。指令的这种二进制表示方法,使计算机能够把由指令构成的程序像数据一样存放在存储器中。这就是“存储程序”计算机的重要特点。

计算机能够方便地识别和执行存放在存储器中的二进制代码指令。但对于计算机的使用者来说,书写、阅读、记忆以及修改这种表示形式的指令十分不便,而且十分乏味并容易出错。因此,人们通常使用一些助记符来代替它,例如,用ADD表示加法,用SUB表示减法,用MOV表示传送等。这样,每条指令有明显的特征,易于理解和使用,也不易出错。

为了让计算机求解一个数学问题,或者做一件复杂的工作,总是先要把解决问题的过程分解为若干步骤,然后用相应的指令序列,按照一定的顺序去控制计算机完成这一工作。这样的指令序列就称为程序。通常把用二进制代码形式组成的指令序列称为机器语言程序,又称目标程序。它是计算机能够直接识别和运行的程序;而把用助记符形式组成的指令序列称为汇编语言程序或符号程序。显然,符号程序比二进制代码程序易读、易写,也便于检查和交流。但是,机器是不能直接识别符号程序的,还必须将其翻译或转换为二进制代码程序,才能被计算机直接识别和执行。这种翻译和转换工作通常也是由计算机中专门的程序自动完成的,这就是后边介绍的汇编程序(汇编器)。

2.2.2 计算机的基本工作流程

1.模型计算机结构

一个实际的计算机结构,往往比较复杂。用它来说明计算机的基本工作过程,会陷入许多繁琐的细节之中。因此,我们首先从一个经过简化的模型机入手,用以扼要说明计算机是怎样进行工作的。模型计算机的结构如图2.4所示。

图2.4中虚线的右边为存储器部分,如前所述,它用于存放指令和数据;左边则属于CPU部分,它又包括运算器和控制器两个组成部分,实现指令的分析、执行以及数据的运算和处理等功能;当然,对于一个完整的计算机结构,还应有接口电路及输入输出设备等部分,此处省略未画;图中的总线(BUS)是各部件间传送信息的公共通道。

CPU中有几个最基本的功能部件,对于各种结构形式的计算机来说,都是必不可少的。下面分别予以说明。

图2.4 模型计算机结构

(1)程序计数器(Program Counter,PC)

程序计数器也称指令计数器,用来指出计算机将要执行的指令所在存储单元的地址,具有自动增量计数的功能。

我们已经知道,程序是由指令序列所组成,指令序列被存放于存储器中,要从存储器中取出指令,必须首先给出指令所在存储单元的地址。当程序被执行时,CPU总是把PC的内容作为地址去访问存储器,从指定的存储单元中取出一条指令并加以译码和执行。与此同时,PC的内容必须自动地转换成下一条指令的地址,为取出下一条指令做好准备。一般情况下,指令是按顺序一条接一条执行的,指令所在存储单元的地址也是按顺序排列的,所以在这种情况下,每当取出一条指令,PC就自动增量修改,给出下一条指令的地址,以便使程序顺序往下执行;但是有时会出现指令不是按顺序执行(即出现程序“转移”)的情况,此时CPU就把一个新的地址(即转移目标地址)送往PC,下一条指令就按这一新的地址从存储器中取出并加以执行,从而使程序的执行由一个程序段转向另一个程序段。在计算机的指令系统中,专门设有一些转移指令,用来实现程序在特定情况下的转移。通过后续章节的学习,我们将会实际看到转移指令对于计算机进行逻辑判断和自动重复计算都是很重要的。

(2)指令寄存器(Instruction Register,IR)

它保存着计算机当前正在执行或即将执行的指令。

(3)指令译码器(Instruction Decoder,ID)

它用来对指令进行译码,以确定指令的性质和功能。

(4)控制逻辑阵列

由它产生一系列微操作命令信号。当微操作的条件(如指令的操作性质、各功能部件送来的“反馈信息”、工作节拍信号等)满足时,就发出相应的微操作命令,以控制各个部件的微操作。

(5)累加器A

它是一个在运算前存放操作数而在运算结束时存放运算结果的寄存器。它也用于CPU与存储器和I/O接口电路间的数据传送。

(6)算术逻辑部件ALU

它是用来进行算术运算与逻辑运算的部件。

(7)标志寄存器F

它是用来反映和保存运算的部分结果,如结果是否为0,结果的正、负,运算时是否产生进位以及是否发生溢出等。另外,CPU的某种内部控制信息(如是否允许中断等)也反映在标志寄存器中。通常称前者为状态标志,后者为控制标志。

2.指令的执行过程

如前所述,计算机要执行一条指令,先要从存储器中把它取出来,经过译码分析之后,再去执行该指令所规定的操作。所以,概括而言,一条指令的执行过程可以分为3个基本阶段或过程,即取指令、分析指令和执行指令。下面围绕这3个基本阶段来说明计算机执行指令的基本操作过程。

(1)开始执行程序时,程序计数器PC中保存第一条指令的地址,它指明了当前将要执行的指令存放在存储器的哪一个单元中。

(2)控制器把PC中保存的指令地址送往存储器的地址寄存器MAR,并发出“读命令”。存储器按给定的地址读出指令,经由数据寄存器MDR送往控制器,保存在指令寄存器IR中。

(3)指令译码器ID对指令寄存器IR中的指令进行译码,分析指令的操作性质,并由控制逻辑阵列向存储器、运算器等有关部件发出微操作命令。

(4)当需要由存储器向运算器提供操作数时,控制器根据指令的地址部分,形成操作数所在的存储器单元地址,并送往存储器的MAR,然后向存储器发出“读命令”。

(5)存储器读出的数据经由MDR直接送往运算器。与此同时,控制器命令运算器对数据进行指令规定的运算。

(6)一条指令执行完毕后,控制器就要接着执行下一条指令。为了把下一条指令从存储器取出来,通常控制器把PC的内容自动加上一个值,以形成下一条指令的地址;而在遇到转移指令时,控制器则把“转移地址”送往PC。总之,PC中存放的是下一条指令所在存储单元的地址。控制器不断重复上述过程的(2)~(6),每重复一次,就执行了一条指令,直到整个程序执行完毕。

3.计算机的工作流程

在掌握了前面介绍的指令执行过程的基础上,就不难理解计算机的整个工作流程。

我们知道,当人们使用计算机处理实际问题时,必须事先把求解的问题分解为计算机能执行的基本运算,即在上机之前,应当依据一定的算法把求解的问题编制成计算程序。程序是由一条一条的基本指令组成,每一条指令规定了计算机应执行什么操作及操作数的地址。当把编好的程序和它需要的原始数据通过输入设备(如键盘)输入计算机并使机器启动运行后,计算机就能自动按指定的顺序一步步地执行程序中的指令,直到计算出需要的结果,最后从输出设备(如打印机)将结果输送出来。

现在我们以计算机求解一个简单问题(25×3+40)为例,概括说明计算机的基本工作流程。

第一步:由输入设备将事先编制好的计算程序及原始数据25,3,40输入到存储器中。

第二步:启动计算机。在控制器的控制之下,计算机按计算程序自动地进行操作。

(1)从存储器取出被乘数25,送到运算器;

(2)从存储器取出乘数3,送到运算器,进行25×3的乘法操作,在运算器中求得中间结果75;

(3)从存储器中取出加数40,送到运算器,进行75+40的加法操作,在运算器中求得加法结果115;

(4)将运算器中的最后结果115存入存储器。

第三步:由输出设备将最后结果115打印输出。 jed3WqQFqH7AWRjviKUxZgRM+/260YgWh8/7RY7PzpmJ/VBRiRBjWblk+Hd4ECNI

点击中间区域
呼出菜单
上一章
目录
下一章
×