principle of computer composition

1. 计算机系统的组成

硬件系统和软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,是计算机系统中实际物理装置的全称。软件是指在硬件上运行的程序和相关的数据及文档。

计算机系统性能的好坏,很大程度上是由软件的效率和作用来表征的,而软件性能的发挥又离不开硬件的支持。对某一功能来说,其既可以用软件实现,又可以用硬件实现,则称为软硬件在逻辑上是等效的。在设计计算机系统时,要进行软/硬件的功能分配。通常来说,一个功能若使用较为频繁且用硬件实现的成本较为理想,则使用硬件解决可以提高效率。而用软件实现可以提高灵活性,但效率往往不如硬件实现高。

2. 计算机硬件的基本组成

2.1 早期的冯·诺依曼机

冯·诺伊曼在研究 EDVAC 机时提出了 “存储程序” 的概念,“存储程序” 的思想奠定了现代计算机的基本架构,以此概念为基础的各类计算机通称为冯·诺依曼机,其特点如下

  1. 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备 5 大部件组成。
  2. 指令和数据以同等地位存储在存储器中,并可按地址寻访。
  3. 指令和数据均用二进制代码表示。
  4. 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储中的位置。
  5. 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序。
  6. 早期的冯·诺伊曼机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。

典型的冯·诺依曼计算机结构如下。

注意:“存储程序” 的概念是指将指令以代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

von neumann structure

2.2 现代计算机的组织结构

在微处理机问世之前,运算器和控制器分离,而且存储器的容量很小,故而设计成以运算器为中心的结构,其他部件都通过运算器完成信息的的传递。

而随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量 I/O 设备的速度和 CPU 的速度差距悬殊,故而以运算器为中心的结构不能够满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使 I/O 操作尽可能地绕过 CPU,直接在 I/O 设备和存储器之间完成,以提高系统的整体运行效率,结构如下

modern computer architecture

目前绝大多数现代计算机仍遵循冯·诺依曼的存储程序的设计思想。

2.3 计算机的功能部件

传统冯·诺依曼计算机和现代计算机的结构虽然有所不同,但功能部件是一致的,它们的功能部件包括如下几种。

  1. 输入设备

    输入设备的主要功能是将程序和数据以及其所能识别和接收的信息形式输入计算机。

    最常见也最基本的输入设备是键盘,此外还有鼠标、扫描仪、摄像机等。

  2. 输出设备

    输出设备的任务是将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。

    最常见、最基本的输出设备是显示器、打印机。计算机的输入/输出设备(简称 I/O 设备)是计算机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。

  3. 存储器

    存储器是计算机的存储部件,用来存放程序和数据。

    存储器分为主存储器(简称主存,也称内存储器)和辅助存储器(简称辅存,也称外存储器)。CPU 能够直接访问的存储器是主存储器。辅助存储器用于帮助主存记忆更多的信息,辅助存储器中的信息必须调入主存后,才能为 CPU 所访问。

    主存储器由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码 “0” 或 “1” 。故而存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是 1B(8bit)或是字节的 2 的指数倍。

    主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相联存储器是按内容访问的)。

    主存储器的最基本组成如下

    memory

    存储体存放二进制信息,地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器(MDR)是主存和其他部件的中介机构,用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。

    MAR 用于寻址,其位数对应着存储单元的个数,如 MAR 为 10 位,则有 $2^{10} =1024$ 个存储单元,记为 1K 。MAR 的长度与 PC 的长度相同。

    MDR 的位数和存储字长相同,一般为字长的 2 的指数倍。

    注意 MAR 与 MDR 虽然是存储器的一部分,但在现代 CPU 中却是存在于 CPU 中的;另外,后文提到的高速缓冲(Cache)也存在于 CPU 中。

  4. 运算器

    运算器是计算机的执行部件,用于对数据进行加工处理,完成算术运算和逻辑运算。算术运算是按算术运算规则进行的运算,如加、减、乘、除;逻辑运算包括与、或、非、亦或、比较、移位等运算。

    运算器的核心是算术逻辑单元(arithmetic and logical unit,ALU)。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前 3 个寄存器是必须有的。

    运算器内还有程序状态寄存器(PSW),它保留各类运算指令或测试指令的结果的各类状态信息,以表征系统允许状态。

  5. 控制器

    控制器是计算机的指挥中心,由其 “指挥” 各部件自动协调地进行工作。控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。

    PC 用来存放当前欲执行的指令,其内容来自主存的 MDR。指令中的操作码 OR(IR) 送至 CU,用以分析指令并发出各种微操作命令序列;而地址码 Ad(IR) 送往 MAR,用以取操作数。

下图为一个更细化的计算机组成框架。现代计算机一般将运算器和控制器集成到同一个芯片上,合称为中央处理器,简称 CPU。CPU 和主存储器共同构成主机,而计算机中除主机外的其他硬件装置(如 I/O)统称为外部设备(简称外设),即外设主要包括外存和 I/O 设备。

computer

3. 计算机软件的分类

3.1 系统软件和应用软件

软件按其功能分类,可分为系统软件和应用软件。

系统软件是一组保证计算机系统高效、正确运行的基本软件,通常作为系统资源提供给用户使用。系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库系统、服务性程序等。

应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。

注意:数据库管理系统(DBMS)和数据库系统(DBS)是有区别的。DBMS 是位于用户和操作系统之间的一层数据管理软件,是系统软件;而 DBS 是指计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、数据库管理员(DBA)和应用系统构成。

3.2 三个级别的语言

  1. 机器语言

    又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。

  2. 汇编语言

    汇编语言用英文代词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。

  3. 高级语言

    高级语言(如 C、C++、JAVA 等)是为方便程序设计人员写出解决问题的处理方案和接替过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。

4. 计算机的工作过程

计算机的工作过程分为以下几个步骤:

  1. 把程序和数据装入主存储器。
  2. 从程序的起始地址运行程序。
  3. 用程序的首地址从存储器中取出第一条指令,经过意吗、执行步骤等控制计算机各功能部件协同运行,完成这条指令功能,并计算下一条指令的地址。
  4. 用新得到的指令地址继续读出第二条指令并执行,直到程序结束为止;每条指令都是在取指、译码和执行的循环过程中完成的。

下面以取数指令(即将指令地址码指示的存储单元中的操作数取出后送至运算器的 ACC 中)为例进行说明,其信息流程如下:

取指令:PC → MAR → M → MDR → IR

分析指令:OP(IR) → CU

执行指令:Ad(IR) → MAR → M → MDR → ACC

此外,每取完一条指令,还须为下一条指令做准备,形成下一条指令的地址,即 (PC)+1→PC。

注意:(PC) 指程序计数器 PC 中存放的内容。PC→MAR 应理解为 (PC)→MAR,即程序计数器中的值经过数据通路送到 MAR,也即表示数据通路时括号可省略(因为只是表示数据流经的途径,而不强调数据本身的流动)。但运算时括号不能省略,即 (PC)+1→PC 不能写为 PC+1→PC。当题目中 (PC)→MAR 的括号未省略时,考生最好也不要省略。

5. 计算机系统的多级层次结构

现代计算机是一个硬件与软件组成的综合体。由于面对的应用范围越来越广,因此必须有复杂的系统软件和硬件的支持。由于软/硬件的设计值和使用者都从不同的角度并用不同的语言来对待1同一个计算机系统,因此他们各自看到的计算机系统的属性及对计算机系统提出的要求也就不同。

计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。

关羽计算机系统层次结构的分层方式,目前尚无统一的标准,我们采用下图的层次结构。

hierarchy

第 1 级是微程序机器层,它也是一个实在的硬件层,它由机器硬件直接执行微指令。

第 2 级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。

第 3 级时操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。

第 4 级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。

第 5 级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。

在高级语言层之上,还可以有应用层,它由解决实际问题和应用问题的处理程序组成,如文字处理软件、数据库软件、多媒体处理软件和办公自动化软件等。

通常把没有配备软件的纯硬件系统统称为 “裸机” 。第 3 层 ~ 第 5 层称为虚拟机,简单来说就是软件实现的机器。虚拟机只对该层的观察者存在,这里的分层和计算机网络的分层类似,对于某层的观察者来说,只能通过该层次的语言来了解和使用计算机,而不必关心下层是如何工作的。

层次之间的关系紧密,下层是上层的基础,上层是下层的拓展。随着超大规模集成电路技术的不断发展,部分软件功能将由硬件来实现,因而软/硬件交界面的划分也不是绝对的。

计算机组成原理主要讨论传统机器 M1 和微程序机器 M0 的组成原理及设计思想。

6 习题

  1. 冯诺依曼机的基本工作模式
  2. CPU 如何区分指令和数据?
  3. 判断题:软件与硬件的功能在逻辑上是等价的。
  4. 运算器包括什么?
  5. 判断题:寄存器的设置对汇编语言是透明的。
  6. 相联存储器的寻址方式?
  7. 判断题:系列机的基本特性是指令系统向后兼容

7. 习题答案

  1. 控制流驱动方式
  2. 指令周期的不同阶段,通常取指阶段取出的是指令,执行阶段取数据。
  3. 错。等效不等价
  4. 状态寄存器、ALU、数据总线
  5. 错。汇编还是得直接使用寄存器。
  6. 即可按地址寻址,又可按内容寻址。
  7. 对。以前的指令现在也能用,不然软件废了。