计算机工作原理

基本工作原理

对于计算机来说,自动存取数据、识别计算规则并执行是计算机的基本工作。

通过简单的例子来学习计算程序的基本概念,理解计算机的基本工作原理。

如图(冯•诺依曼型计算机的组成)所示,计算机中计算 5+4=?

冯•诺依曼型计算机的组成

要解决此问题,必须先编写这个问题的计算步骤(如表**计算 5+4 的程序(文字形式)**所示),称为文字形式的计算程序。

|------|-------------------------------|
| 解题步骤 | 解题命令 |
| 1 | 从存储器中取出 5 到运算器的 1 号寄存器中 |
| 2 | 从存储器中取出 4 到运算器的 2 号寄存器中 |
| 3 | 在运算器中奖 1 号和 2 号寄存器中的数据相加,的和 9 |
| 4 | 将结果 9 存入存储器中 |
| 5 | 从输出设备奖结果 9 打印输出 |
| 6 | 停机 |
[计算 5+4 的程序(文字形式)]

表(计算 5+4 的程序(文字形式) )中的每个计算步骤完成一个基本操作(如取数、加法、存数、打印输出等),向计算机下达一条完成某种操作的命令,即"指令"(Instruction)。也就是说,计算程序是由完成某一特定任务的一组指令所组成的。由表(计算 5+4 的程序(文字形式))可知,每条指令都必须向计算机提供两个信息:一是执行什么操作,二是参与这一操作的数据是什么。

如,表(计算 5+4 的程序(文字形式) )中的第 1 条指令向计算机指明,要执行的操作是"取数",从存储器取到运算器的数据是 "5",按此原理,可将上表(计算 5+4 的程序(文字形式) )所示的计算程序简化为下表(计算 5+4 的程序(文字形式)的改写形式)的形式。

|------|-------|-----|
| 指令顺序 | 指令内容 ||
| 指令顺序 | 执行的操作 | 操作数 |
| 1 | 取数 | 5 |
| 2 | 取数 | 4 |
| 3 | 加法 | 5,4 |
| 4 | 存数 | 9 |
| 5 | 打印 | 9 |
| 6 | 停机 | / |
[计算 5+4 的程序(文字形式)的改写形式]

在计算机中,所有 "操作" 都是用二进制代码进行编码的,若假定前述 5 种基本操作的编码如表(指令操作码)所示,则称 "0100" 为 "取数" 操作的操作码(Operation Code)。

|------|------|
| 操作名称 | 操作码 |
| 取数 | 0100 |
| 加法 | 0010 |
| 存数 | 0101 |
| 打印 | 1000 |
| 停机 | 1111 |
[指令操作码]

如,0010为加法操作的操作码,0101为存数操作的操作码,1000为打印输出操作的操作码,1111为停机操作的操作码。

在计算机中,数据是以二进制代码表示的,并存放在存储器的预定地址的存储单元中。若本例的原始数据 5(等值二进制代码为0101)、4(等值二进制代码为0100)和计算结果存放在第 1~3 号存储单元中,如表(操作数的存储单元)所示,

|--------|---------|
| 数的存放地址 | 存放数的数 |
| 0001 | 0101(5) |
| 0010 | 0100(4) |
| 0011 | 计算结果 |
[操作数的存储单元]

则表(计算 5+4 的程序(文字形式)的改写形式 )所示的计算程序可改写为表(用二进制码表示的计算程序),

|------|------|------|--------------|
| 指令地址 | 指令内容 || 完成的操作(用符号表示) |
| 指令地址 | 操作码 | 地址码 | 完成的操作(用符号表示) |
| 0101 | 0100 | 0001 | R0←(D1) |
| 0110 | 0100 | 0010 | R1←(D2) |
| 0111 | 0010 | 0001 | R0←(R0)+(R1) |
| 1000 | 0101 | 0011 | D3←(R0) |
| 1001 | 1000 | 0011 | 打印机←(D3) |
| 1010 | 1111 | | 停机 |
[用二进制代码表示的计算程序]

设 6 条指令分别存放在第 5~10 号存储单元中且每条指令的内容由操作码和地址码(Address Code)组成,其中地址码包含存储单元地址(用D表示)及运算器中的寄存器编号(用R表示)。

表(用二进制码表示的计算程序 )给出了计算 5+4 的真正计算程序,其含义与表(计算 5+4 的程序(文字形式)的改写形式 )给出的最原始的计算程序完全一样,到其能够为计算机所存储、识别和执行。根据所述对数据和指令在存储器中存放地址的假定,可以得到图(存储器布局)所示的存储器布局。
存储器布局

由图(存储器布局)可知,地址为 0001~0011 的存储单元中存放数据(假定用 8 位二进制代码表示),地址为 0101~1010 的存储单元中存放指令,第 0100 号存储单元为空。

下面以图(冯•诺依曼型计算机的组成 )所示的计算机组成框图为基础,结合图(存储器布局)所示的计算机程序,简要说明计算机的基本工作原理。

①根据给定的算式(如 5+4),编制计算程序,并分配计算程序及数据在存储器中的存放地址(如表(操作数的存储单元 )和表(用二进制代码表示的计算程序))。

②用输入设备将计算程序和原始数据输入存储器的指定地址的存储单元(见图(存储器布局)。

③从计算程序的首地址(0101)启动计算机工作,在控制器的控制下完成下列操作:

⒈从地址为 0101 的存储单元中,取出第 1 条指令(01000001)送入控制器。控制器识别该指令的操作码(0100),确认其为"取数"指令。

⒉控制器根据第 1 条指令中给出的地址码(0001),发出"读"命令,从地址为 0001(D1)的存储单元中取出数据 00000101(十进制数 5),送入运算器的 R0 寄存器。

到此,第 1 条指令执行完毕,控制器自动形成下一条指令在存储器中的存放地址,并按此地址从存储器中取出第 2 条指令,在控制器中分析该条指令要执行的是什么操作。以此类推,直到计算程序中的全部指令执行完毕。

由上可知,计算机的基本工作原理可概括如下:

①计算机的自动计算(或自动处理)过程就是执行一段预先编制好的计算程序的过程。

②计算程序是指令的有序集合。因此,执行计算程序的过程实际上逐条执行指令的过程。

③指令的逐条执行是由计算机硬件实现的,可顺序完成取指令、分析指令、执行指令所规定的操作,并为取下一条指令准备好指令地址,如图(计算机基本工作原理)所示。如此重复,直至执行到停机指令。
计算机的基本工作原理

需要指出的是、现代计算机系统提供了强有力的系统软件,计算机的使用者无须再用指令的二进制代码(称为机器语言)进行编程,计算程序在存储器中的存放位置都由计算机的操作系统自动安排。

指令系统及执行

指令系统

计算机的自动计算过程归根到底是执行一条条指令的过程。一条指令就是给计算机下达的一道命令,告诉计算机每一步应进行什么操作,参与操作的数来自何方、操作结果又将送到什么地方。也就是说,一条指令必须包含有指出操作类型的操作码并指出操作数地址的地址码。通常,一台计算机能够完成多种类型的操作(见表(指令操作码表(虚拟)),还可用多种方法来形成操作数的地址。因此一台计算机可有多种多样的指令,称为该计算机的指令系统(Instruction Set)。

|---------|---------|
| 操作码 θ | 译码信号 |
| 0001 | MOV |
| 0010 | ADD |
| 0011 | SUB |
| 0100 | OUT |
| 0101 | IN |
| ... | ... |
| 1111 | HALT |
[指令操作码(虚拟)]

指令的格式

所谓的指令的格式(Instruction Format),是指一条指令中操作码和地址码的安排方式。按一条指令所包含的地址码的个数,指令格式分为三地址、二地址、单地址和零地址等,如图(指令的基本格式)。
指令的基本格式

图(指令的基本格式)是三地址指令,由操作码 θ 和三个地址码 d₁、d₂、d₃ 构成,所实现的功能是从源地址(Source Address)d₁ 和 d₂ 中取出两个操作数,进行 θ 操作,并将结果送入目标地址(Object Address)d₃ 中。源地址和目标地址可为存储单元或运算器中的寄存器。该功能可记为

(d₁)θ(d₂)→d₃

其中,(d₁) 和 (d₂) 表示地址为 d₁ 和 d₂ 单元中的内容,d₃ 则表示地址。

图(指令的基本格式 )**(b)**是二地址指令,其功能是

(d₁)θ(d₂)→d₃

其中,地址为 d₂ 的单元先作为第二操作数的源地址,后作为存放结果的目标地址。图(指令的基本格式 )**(c)**是单地址指令,其功能是

(A)θ(d)→A

其中,d 为存储单元的地址或寄存器的编号,A 是称为"累加器"的某指定通用寄存器。

图(指令的基本格式(d) 是零地址指令,这是一种特殊的没有地址码的指令,如空操作指令、停机指令和堆栈指令等。其中,空操作和停机指令无须操作数,当然没有地址码;堆栈指令用来完成"堆栈"操作,其操作数地址由专门的堆栈指示器 SP 给出,故在堆栈指令中不需给出地址码。所谓"堆栈"(Stack),是指用作数据暂存的一祖寄存器或一片存储区。它像一只口袋,其口袋底称为"堆底",它的地址是预先约定的。这样,以堆栈的栈底地址为基础,数据只能从堆栈的一端"压人"并从同一端"弹出"。显然,先压人的数据在堆栈的下方,而先弹出的数据却是后压人的数据,这种工作方式称为"先进后出"。堆栈的压人和弹出操作(简称压栈和出栈)是由压栈相令(PUSH)和出栈指令(POP)实现的,其操作过程如图(堆栈操作)所示,可描述如下。
堆栈操作

(1)PUSH

将某寄存器 的内容压人栈顶(SP 所指的存储单元)。

SP-1→SP:SP=3FF7H-1=3FF6H。

()→(SP):将中的数据送到 SP 所指示的存储单元。

(2)POP

将原栈顶的内容弹出并送入 寄存器。

((SP))→:以 SP 的内容作为地址,按此地址取出数据,送人某寄存器

SP+1→SP:SP= 3FF7H+1=3FF8H。

指令的分类

为了进一步了解指令格式中的两要素(即操作码和地址码),下面分别讨论指令的分类及指令的寻址方式。指令中的操作码部分表示了该指令要执行的操作,不同的指令所实现的操作不同。为叙述简便,按操作类型,指令分为如下4大类。

(1)数据处理类指令(Data Processing Instructions

数据处理类指令实现对数据的加工,如对数据进行算术和逻辑运算、移位操作、比较两数的大小等,执行这类指令后将产生新的结果数据。例如:

①算术运算指令。

实现算术运算,如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)、增量(INC)、减量(DEC)等指令。

②逻辑运算指令。

实现逻辑运算,如逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)、逻辑异或(XOR)等指令。

③移位指令。

实现某寄存器中的数据左移成右移,如逻辑左移(SHL)、逻辑右移(SHR)算术左移(SAL)、算术右移(SAR)、循环左移(ROL)、循环右移(ROR)等指令。

(2)数据传送类指令(Data Transmission Instructions

数据传送类指令可实现数据在计算机各部件之间的传输,如数据在寄存器之间、存储器与寄存微之间、存储器(或寄存器)与输入/输出端口之间的传输。这类指令执行后,将不改变鹰数据,只是将源地址内的数据复制到目标地址中。例如:

①寄存器或存储器传送指令。

实现寄存糊之间、省存器与存储器之间的数据传送,如传送指令(MOV)。

②堆栈指令。

实现压栈及出栈操作,如压栈指令(PUSH)、出栈指令(POP)。

③输入/输出拥令。

实现寄存關与输入/输出端口之间的数据传输,即输人操作、输出操作如输入(IN)指令和输出(OUT)指令。

(3)程序控制类拥令(Program Control Instructions

程序控制类指令用来改变程序的执行顺序,主要包括下列指令。

①转移指令,分为无条件转移指令和条件转移指令。

通常,程序按指令的逻辑次序执行,当遇到无条件转移执行时,程序被迫转移到该指令所指出的地址开始执行。当遇到条件转移指令时,则先判断条件(标志寄存器的某一位的值)是否成立;若成立,则转移到该指令所指出的地址开始执行,否则程序仍按原指令顺序执行。转移指令包括无条件转移(JMP)、有进位(借位)转移(JC)、结果为零转移(JZ)、结果不为零转移(JNZ)指令等。

②调用指令和返回指令。

在程序设计时,将经常使用的"算法"编制为子程序,供其他程序调用。通常,把调用子程序的程序称为主程序。当主程序执行调用指令(CALL)后,CPU 就转入执行子程序;而当子程序执行返回指令(RET)后,CPU 又重新继续执行原来的主程序,如图(CALL 和 RET 指令)所示。
CALL 和 RET 指令

③中断指令。

计算机在运行过程中,一旦出现故障(如电源故障、存储器校验出错等),故障源立即发出中断信号,CPU 就自动执行中断指令,其结果是暂停当前程序的执行,并转人执行故障处理程序。这类中断指令不提供给用户使用,而是由 CPU 根据中断信号自动产生并执行,称为隐含指令。另有一些可供用户使用的中断指令,如 Intel 80x86 CPU提供的软中断指令INTn(十六进制数)和中断返回指令IRET等,来实现系统调用和程序请求。

(4)CPU状态管理类指令(CPU State Management Instructions

CPU 状态管理类指令用来设置 CPU 的状态,如使 CPU 复位、执行空操作,使 CPU 允许接收或不接收外来的中断请求信号。例如:

①标志操作指令。

实现标志寄存器(FR)中某标志的置位或复位,如中断允许标志置 1(STI)、中断允许标志置 0(CLI)、进位标志置 1(STC)、进位标志置 0(CLC)等。

②空操作指令(NOP)。

执行该指令后,使 CPU 不执行任何操作。

③暂停指令(HLT)。

执行该指令后,使 CPU 暂停,直至中断和复位信号出现。

以上只是介绍了计算机中的一些主要指令。尽管计算机的指令种类繁多,但大致都可归并为上述 4 类。显然,指令的种类越多,指令系统的功能就越强,但控制器的结构就越复杂。

指令的寻址方式

指令中的地址码不一定是操作数的真正存放地址,是根据指令的操作码和地址码所提供的信息,按一定的规则形成的,称为科址方式。由寻址方式形成的操作数的真正存放地址,称为操作数的有效地址(Available Address)。不同计算机具有不同的寻址方式,但都可归结为下列几类:直接寻址、立即寻址、间接导址、相对导址和变址寻址等。

为了方便讨论,假设指令格式如下:

操作码 θ占 4 位,寻址方式标志 x 占 3 位,形式地址 d 占 9 位。寻址方式标志码可有 8 种编码,可表示 8 种寻址方式。若用 EA 表示操作数的有效地址,则EA=f(x,d) 在不同寻址方式下可分别计算如下。

①用 x=001 表示直接寻址,则 EA=d。表明指令中给出的形式地址 d 就是操作数的有效地址,按此地址可从存储器中取出操作数。

②用 x=010 表示立即寻址,则指令中的 d 就是操作数,它在取出指令的同时已取出。

③用 x=011 表示间接寻址,则 EA=(d)。表明指令中给出的形式地址 d 是操作数地址的地址,即以地址 d 从存储器中取出数据,该数据是操作数的有效地址,按此地址才能从存储器中取出操作数。

④用 x=100 表示相对寻址,则 EA=PC+d,,表明操作数的有效地址 EA 等于程序计数器(PC)的当前内容加上形式地址 d。

⑤用 x=101 表示变址寻址,则 EA=IX+d,表明操作数的有效地址 EA 等于变址寄存器(IX)的内容加上形式地址 d。

以上只假定 5 种寻址方式,而且都是对存储器的寻址。实际上还有多种其他寻址方式,如寄存器直接寻址、寄存器间接寻址等,其含义类同,不再一一列举。

指令系统的兼容性

各计算机公司设计生产的计算机,其指令格式、数量和功能、寻址方式各不相同,即使是一些常用的基本指令,如算术逻辑运算指令、转移指令等也有差别。因此,用一台计算机的机器指令编制的程序几乎不可能在另一台计算机上运行。然而,随着计算机硬件的迅速发展,计算机的更新换代加快,这就出现了计算机软件的继承性问题,即如何使原有机器上的软件能继续在新机器上使用。

1964 年,IBM 公司在设计 IBM 360 计算机时提出了"系列机"(Family Machine)的设计思想,其基本要点是:

同一系列的计算机尽管其硬件实现方法可以不同,但指令系统、数据格式、I/O系统等保持相同,因而软件可完全兼容。

这样,当研制该系列计算机的新型号或高档产品时,尽管指令系统可以有较大的扩充,但仍保留原来的全部指令,保持了软件向上兼容的特点,使同一系列的低档机或旧机型上的软件可以不加修改地在新机器上运行,以保护用户在软件上的投资。与系列机相对应的概念是"兼容机"(Compatible Machine)。所谓兼容机,是仿制"原装机"的一种产品,与其指令系统完全相同,但硬件的实现方法(包括零部件的质量)不相同。一般情况下,兼容机与原装机的软件是兼容的。

总线

计算机的各部件之间的硬连接是由总线实现的。简单地讲,总线是指各"模块"之间传输信息的通路;严格地说,作为计算机的一个部件,总线是由传输信息的物理介质(如导线)、管理信息传输的硬件(如总线控制器)及软件(如传输协议)等构成的。根据总线连接的对象(模块")"所在位置的不同,总线可以分为三类。

①片内总线,指计算机各芯片内部传输信息的通路,如 CPU 内部寄存器之间、寄存器与 CPU 之间传输信息的通路。

②系统总线,指计算机各部件之间传输信息的通路,如 CPU 与主存储器之间、CPU 与外设接口之间传输信息的通路。

③通信总线,指计算机系统之间、计算机系统与其他系统(仪器、仪表、控制装置)之间传输信息的通路。

下面将着重讨论计算机的系统总线,它将计算机的各功能部件(CPU、主存、I/O 接口等) 之间的相互关系变为面向总线的单一关系,使计算机系统结构简单、规整,便于系统功能的扩充或性能更新。总线结构也简化了计算机系统的硬件与软件设计,降低了系统的成本,提高了系统的可靠性。

现代微机系统中大多采用总线结构,而且采用统一的标准,以便计算机零部件厂商遵循此标准生产面向系统总线标准的计算机零部件,使微机系统成为真正的开放式系统,用户可根据自己的实际需要选购相应的计算机零部件组装成满足自己要求的微型机系统。

所谓总线标准,就是对系统总线的机械物理尺寸(如接插件尺寸、形状及机械性)、引线数目、信号含义、功能和时序、数据传输速率、工作频率、总线协议(通信方式、仲裁策路)等进行统一的严格定义,使它具有高度的科学性和权威性,以便被计算机界广泛接受。表(微型机系统常用标准系统总线 )列出了微机系统中采用的部分标准系统总线的名称及某些特征。采用 PCI 总线的微型机系统结构如图(采用 PCL 总线的微机系统结构)所示。

注:不当之处,请批评指正!谢谢~

相关推荐
低频电磁之道4 小时前
微星主板开机无法进入 BIOS 的排查与解决
电脑
ACP广源盛139246256739 小时前
IX7008 PCIe 交换芯片@ACP#RTX Spark 经济型 8 口扩展芯片(对比 ASM1806)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
ZacMa9 小时前
怎么在电脑上查看无线网络的密码?
电脑
ACP广源盛139246256739 小时前
IX6012 PCIe 交换芯片@ACP#RTX Spark 入门级 12 口存储外设扩展方案(对比 ASM1812)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
herinspace10 小时前
管家婆辉煌软件如何新增往来单位档案分类
服务器·数据库·电脑·管家婆软件
jushi899912 小时前
修复电脑常见运行库问题 DirectX 组件状态、运行库、DLL 游戏常见运行库 DirectX 修复工具增强版
游戏·电脑
遇见小修修12 小时前
如何找到专业的电脑上门维修供应商?
运维·电脑·负载均衡
herinspace1 天前
管家婆财工贸软件中关于价格常见问题小结
服务器·网络·数据库·电脑·管家婆软件
云飞云共享云桌面1 天前
非标设计工厂8-10个SolidWorks研发共享一台高性能工作站
运维·服务器·自动化·电脑·制造
jushi89992 天前
FB Neo 街机模拟器全游戏整合版 含25000+街机游戏怀旧复古街机游戏 解压即玩 热门怀旧街机游戏全集安卓+PC电脑版
android·游戏·电脑