计算机组成原理 计算机系统概论

1 计算机系统简介

1.1 计算机的软硬件概念

电子数字计算机简称为电脑、计算机。

狭义的定义为:

使用电子数字电路技术实现的算术逻辑运算的机器。

现在:计算机是计算机系统的简称。

计算机系统由“硬件”和“软件”两大部分组成。

计算机性能的好坏取决于软硬件功能的综合。

计算机组成原理 计算机系统概论

1.1.1 硬件

硬件指计算机的实体部分。

1.1.2 软件

软件由人们事先编制的具有各种特殊功能的程序组成。

它们通常存放在计算机的主存或辅存内。

计算机组成原理 计算机系统概论

计算机的软件通常又可以分为两大类:

1.1.2.1 系统软件(系统程序)

主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。

它包括:标准程序库、语言处理程序、操作系统、服务程序、数据库管理系统、网络软件等

1.1.2.2 应用软件(应用程序)

它是用户根据任务的需要所编制的各种程序。

如:科学计算程序、数据处理程序、过程控制程序、事物管理程序等。

1.1.3 软件和硬件的逻辑等价性

因为任何操作可以有软件来实现,也可以由硬件来实现;

任何指令的执行可以由硬件完成,也可以由软件来完成。

对于某一机器功能采用硬件方案还是软件方案,取决于器件价格,速度,可靠性,存储容量等因素。

因此,软件和硬件之间具有逻辑等价性。

1.2 计算机系统的层次结构

1.2.1 现代计算机的解题过程

  1. 通常由用户用高级语言编写程序(称为源程序)

  2. 然后将它和数据一起送入计算机内

  3. 再由计算机(编译程序或者解释程序)将其翻译成机器能识别的机器语言程序(称为目标程序)

  4. 机器自动运行该机器语言程序,并将计算结果输出

计算机组成原理 计算机系统概论
源程序转化为目标程序的方法

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

计算机组成原理 计算机系统概论

计算机组成原理 计算机系统概论

1.3 计算机组成和计算机体系结构

1.3.1 计算机组成原理(Computer Organization)

依据计算机体系结构,在确定且分配了硬件子系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成,以及它们之间的连接关系,实现机器指令级的各种功能和特性,这点上说计算机组成原理是计算机体系结构的逻辑实现。

如何实现计算机体系结构所体现的属性

指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等,这些都属于计算机组成问题

1.3.2 计算机体系结构(Computer Architecture)

主要研究硬件和软件功能的划分,确定硬件和软件的界面,哪部分功能由硬件系统来完成,哪部分功能由软件系统来完成

能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性

指令系统体现了机器的属性,这是属于计算机结构的问题

还有比如数据类型、寻址技术、I/O机理等均属于计算机体系结构的问题

1.3.3 计算机实现(Computer Implementation)

计算机组成的物理实现,包括中央处理器、主存储器、输入输出接口和设备的物理结构,所选用的半导体器件的集成度和速度,器件、模块、插件、底板的划分,电源、冷却、装配等技术,生产工艺和系统调试等各种问题

总之,就是将完成逻辑设计的计算机组成方案转换成真实的计算机,也就是将满足设计、运行、价格等各项要求的计算机系统真正地制作并调试出来

2 计算机的基本组成

2.1 冯·诺依曼计算机的特点

  • 计算机由五大部件组成(运算器、存储其、控制器、输入设备和输出设备)

  • 指令和数据以同等地位存于存储器内,并可按地址寻访

  • 指令和数据用二进制数表示

  • 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置

  • 指令在存储器内按顺序存放(存储程序)

  • 机器以运算器为中心,输入输出设备与存储期间的数据传送通过运算器完成

2.2 计算机的硬件框图

典型的冯·诺依曼计算机(以运算器为中心)

计算机组成原理 计算机系统概论

现代计算机(以存储器为中心)

计算机组成原理 计算机系统概论

2.2.1 各部件的功能

  • 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内

  • 存储器用来存放数据和程序

  • 控制器用来控制、指挥程序和数据的输入、运算以及处理运算结果

  • 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式

  • 输出设备可将及其运算结果转换为人们熟悉的信息形式

计算机的五大部件(又称五大子系统)在控制器的统一指挥下,有条不紊地自动工作。

2.2.2 现代计算机的硬件框图

计算机组成原理 计算机系统概论

由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器(Central Processing Unit, CPU)

并把输入和输出设备简称为I/O设备(Input/Output Equipment)

现代计算机可认为由三大部分组成:CPU、I/O设备及主存储器(Main Memory, MM)

CPU与主存储器合起来又可称为主机

I/O设备又可称为外部设备

主存储器是存储器子系统中的一类,用来存放程序和数据,可直接与CPU交换信息

另一类称为辅助存储器,简称辅存,又称外存

算术逻辑单元(Arithmetic Logic Unit, ALU)简称算逻部件,用来完成算数逻辑运算

控制单元(Control Unit, CU)用来解释存储器中的指令,并发出各种操作命令来执行指令

ALU和CU是CPU的核心部件

2.3 计算机的工作步骤

2.3.1 上机前的准备

2.3.1.1 建立数学模型

2.3.1.2 确定计算方法

2.3.1.3 编制解题程序

程序:运算的全部步骤

指令 :每一个步骤

2.3.2 计算机的工作过程

2.3.2.1 主存储器(主存、内存)

计算机组成原理 计算机系统概论

2.3.2.1.1 存储体

计算机组成原理 计算机系统概论

存储单元:存放一串二进制代码,每个存储单元赋予一个地址号

存储字:存储单元中二进制代码的组合(逻辑单位)

存储字长:存储单元中二进制代码的位数

2.3.2.1.2 存储器地址寄存器(MAR)

MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址

其位数对应存储单元的个数(如MAR为10位,则有210=10242^{10} = 1024个存储单元,记为1K)

2.3.2.1.3 存储器数据寄存器(MDR)

MDR(Memory Data Register)用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码

其位数与存储字长相等

计算机组成原理 计算机系统概论

2.3.2.2 运算器

计算机组成原理 计算机系统概论

运算器最少包括3个寄存器(现代计算机内部往往设有通用寄存器组)和一个算术逻辑单元(ALU)

其中ACC(Accumulator)为累加器,MQ(Multiplier-Quotient Register)为乘商寄存器,X为操作数寄存器

各寄存器所存放的各类操作数

计算机组成原理 计算机系统概论

2.3.2.3 控制器

控制器是计算机的神经中枢,由它只会各部件自动、协调地工作

计算机组成原理 计算机系统概论

2.3.2.3.1 完成指令的3个阶段

完成一条指令需要下述过程(取指、分析和执行3个阶段)

  • 取值过程(取值阶段):首先要命令存储器读出一条指令

  • 分析过程(分析阶段):对这条指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址

  • 执行过程(执行阶段):根据操作数所在的地址以及指令的操作码完成某种操作

计算机组成原理 计算机系统概论

2.3.2.3.2 控制器的组成

控制器由程序计数器(Program Counter, PC)、指令寄存器(Instruction Register, IR)以及控制单元(CU)组成

PC用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自动加1的功能,即可自动形成下一条指令的地址

IR用来存放当前的指令,IR的内容来自主存的MDR

CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象

2.3.2.4 I/O

I/O子系统包括各种I/O设备及其相应的接口

计算机组成原理 计算机系统概论

3 计算机硬件的主要技术指标

3.1 机器字长

CPU 一次能处理数据的位数,通常与CPU中的寄存器位数有关。

字长越长,数的表示范围越大,精度也越高。

机器的字长也会影响机器的运算速度。

3.2 存储容量

存储器的容量应该包括主存容量和辅存容量

主存容量是指主存中存放二进制代码的总位数。即

=×存储容量 = 存储单元个数 \times 存储字长

现代计算机中常以字节数来描述容量的大小

计算机组成原理 计算机系统概论

3.3 运算速度

计算机的运算速度与许多因素有关,如机器的主频,执行什么样的操作、主存本身的速度等都有关

3.3.1 Gibson法

综合考虑每条指令的执行时间以及他们在全部操作中所占的百分比,即

TM=Σi=1nfitiT_M = \Sigma_{i = 1}^nf_i t_i

其中,TMT_M为机器运行速度;fif_i为第i种指令占全部操作的百分比数;tit_i为第i种指令的执行时间

3.3.2 百万条指令每秒(MIPS)

现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量,并用MIPS(Million Instruction Per Second)作为计量单位

3.3.3 执行一条指令所需的时钟周期(CPI Cycle Per Instruction)

3.3.4 浮点运算次数每秒(FLOPS Floating Point Operation Per Second)