计算机组成原理笔记
第1章 计算机系统概论
1.1 计算机系统简介
计算机的软硬件概念
硬件
- 各种实体的电子元器件,实物
软件
- 人类编制的各种特殊功能的程序——寄寓于各类媒体(如:RAM(随机存取存储器,断电会丢,RandomAccess
memory)、ROM(只读存储器,断电不会丢,Read-Only Memory)、磁带、磁盘、光盘、纸带等)——存储在计算机的主存或者辅存中 - 分为两大类:
- 系统软件
- 标准程序库、语言处理程序(如将汇编语言翻译成机器语言的汇编程序或将高级语言翻译成机器语言的编译程序)、操作系统(
如批处理系统、分时系统、实时系统)、服务程序(如诊断程序、调试程序、连接程序等)数据库管理系统、网络软件等。
- 标准程序库、语言处理程序(如将汇编语言翻译成机器语言的汇编程序或将高级语言翻译成机器语言的编译程序)、操作系统(
- 应用软件
- 系统软件
计算机系统的层次结构
计算机的解题过程
-
实际机器M1——直接执行机器语言的机器——远古
-
汇编语言+汇编程序——二代目
本质上,汇编语言仍是一种面向实际机器的语言。每一条语句都与机器语言的某一条语句(0、1代码)一一对应。 -
各种面向问题的高级语言+翻译程序——三代目
- 翻译程序有两种:
- 编译程序:将高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后执行机器语言程序。如:FORTRAN、Pascal等。
- 特点:只要源程序不变,无须再次进行翻译。
- 解释程序: 将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序下一条语句,并执行,如此重复直至完成源程序的全部翻译任务。
- 特点:翻译一次执行一次,即使下一次重复执行该语句时,也必须重复翻译。
- 特点:翻译一次执行一次,即使下一次重复执行该语句时,也必须重复翻译。
- 编译程序:将高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后执行机器语言程序。如:FORTRAN、Pascal等。
- 软件的发展,使实际机器M1向上延申构成各级虚拟器。同理,M1也可向下延伸形成下一级的微程序M0。M0直接将机器M1中的每一条机器指令翻译成一组微指令,即构成一个微程序。M0可以看作是对M1的分解,即用M0的微程序解释并执行M1的每一条机器指令(有关微程序机器的介绍,详见第10章)。
- M1——传统机器
- M0——微程序机器
小结
实际上,在上述四级层次结构的系统中,实际机器M1与虚拟机器M2之间还有一级虚拟机器——由操作系统软件构成。
- 操作系统
- 提供在汇编语言和高级语言的使用和实现过程中所需的基本操作
- 控制并管理计算机系统全部硬件和软件资源
- 其功能通过其控制语言实现
虚拟机M4还可向上延申构成应用语言虚拟机,应用语言编写的程序一般由应用程序包翻译到虚拟机器M4上。
硬件研究的主要对象归结为传统机器M1和微程序机器M0。——其组成原理和设计思想是本文主要讨论的内容
软件的研究对象主要是操作系统级以上的各级虚拟机。
目前操作系统已经实现了部分固化(将软件永恒的存在于只读存储器中),即固件。
计算机组成和计算机体系结构
区别两者概念:
- 计算机体系结构:能够被程序员看到的计算机系统的属性,即概念性的结构与功能特性。
- 计算机系统的属性:机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储寻址技术、I/O机理等,大多为抽象属性。例如:指令系统体现了机器的属性。
- 计算机组成:如何实现计算机体系结构所体现的属性。例如:指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等;实现乘法指令可以采用一个专门的乘法电路,也可以采用连续相加的加法电路来实现,这两者的区别就是计算机组成的区别。
清楚计算机的结构和组成,可以帮助我们选好性能价格比最合适的机器。
1.2 计算机的基本组成
冯·诺依曼计算机的特点
冯·诺依曼研究 EDVAC 机时提出了“存储程序”的概念。以此概念为基础的各类计算机统称为冯·诺依曼计算机,其特点如下:
- 计算机由运算器、存储器、控制器、输人设备和输出设备五大部件组成。
- 指令和数据以同等地位存放于存储器内,并可按地址寻访。
- 指令和数据均用二进制数表示。
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
- 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
计算机的硬件框图
典型的冯·诺依曼计算机是以运算器为中心。
现代的计算机已转化为以存储器为中心。
各部件功能如下:
- 运算器:完成算术运算和逻辑运算,将运算的中间结果暂存在运算器内。
- 存储器:存放数据和程序。
- 控制器:控制、指挥程序和数据的输入、运行以及处理运算结果。
- 输入设备:将人们熟悉的信息形式转换为机器能识别的信息形式,如:键盘、鼠标等。
- 输出设备:将机器运算结果转换为人们熟悉的信息形式,如:打印机输出、显示器输出等。
上述五大部件(即五大子系统)由控制器统一指挥。
中央处理器(CPU):运算器和控制器集成在同一芯片上,合称CPU。
I/O设备:输入设备和输出设备的简称。
现代计算机由三大部分组成:CPU、I/O设备及主存储器(MM)。CPU与主存储器合起来可称为主机,I/O设备又可称为外部设备。
图中主存储器是存储器子系统中一类,用来存放程序和数据,可直接与CPU交换信息。另一类称为辅助存储器,简称辅存,又称外存。
计算机的工作步骤
- 两个步骤:
- 上机前的准备
- 建模:通过实验和分析,找到反应研究对象变化规律的数学方程组
- 确定计算方法:有的值只能通过近似计算得到,如三角函数(需要用泰勒公式)
- 编制解题程序 :即将运算步骤一一对应的机器指令描述
- 上机运行
- 计算机的 工作过程
-
主存储器(简称主存或内存):
包括存储体 M、各种逻辑部件及控制电路等。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码“0”或“1”。可见,一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,其位数称为存储字长,可以是8位、16 位或 32 位等。
主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写人)、取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器(简称访存)。对计算机的组成和操作是十分有利。
主存中还必须配置两个寄存器MAR 和 MDR,从而实现按地址访问的方式,。。MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数。MDR(MemoryData Register)是存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往某存储单元存人的代码,其位数与存储字长相等。MAR和MDR集成在CPU芯片中。
目前要求指令字长是可变的,数据字长也要求可变。1个字节(Byte)被定义为由8位(bit)二进制代码组成。 -
运算器:
最少包括3个寄存器(现代计算机内部往往设有通用寄存器组)和一个算术逻辑单元(ALU)。 ACC(Accumulator)为累加器,MQ(Multiplier-Quotient Register)为乘商寄存器,X为操作数寄存器。
不同机器的运算器结构是不同的。 -
控制器:
完成一条指令操作的取指、分析和执行3个阶段。:
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。它首先要命令存储器读出一条指令,称为取指过程(也称取指阶段)。并按寻址特征指明操作数的地址,称为分析过程(也称分析阶段)。最后根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程(也称执行阶段)。
控制器由程序计数器(Program Counter,PC)、指令寄存器( Instruction Register,IR)以及控制单元(CU)组成。PC用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路且具有自动加1的功能,即可自动形成下一条指令的地址。I用来存放当前的指令,IR的内容来自主存的 MDR。IR 中的操作码(OP(IR))送至 CU,记作 OP(IR)→CU,用来分析指令;其地址码(Ad(IR))作为操作数的地址送至存储器的 MAR,记作 Ad(IR)→MAR。CU 用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。 -
I/O:
I/0 子系统包括各种 1/0 设备及其相应的接口。每一种 I/0 设备都由 I/0 接口与主机联系,它接收 CU发出的各种控制命令,并完成相应的操作。
启动机器后,计算机便自动按存储器中所存放的指令顺序有序地逐条完成取指令、分析指令和执行指令,直至执行到程序的最后一条指令为止。
1.3 计算机硬件的主要技术指标
计算机性能的优劣由多项技术指标综合确定。包含:硬件的各种性能指标、软件的各种功能,下面主要讨论前者。
机器字长
字长越长,速度越快。
机器字长是指 CPU 一次能处理数据的位数,通常与 CPU 的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。机器的字长也会影响机器的运算速度。倘若 CPU 字长较短,又要运算位数咬多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响机器的运算速度。
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU)数据总线以及存诸字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。
存储容量
包括主存容量和辅存容量。
- 主存容量是指主存中存放二进制代码的总位数。即:存储容量=存储单元个数x存储字长。MAR 的位数反映了存储单元的个数,MDR 的位数反映了存储字长。
- 辅存容量通常用字节数来表示。
运算速度
计算机的运算速度与许多因素有关,如机器的主频、执行什么样的操作、主存本身的速度主存速度快,取指、取数就快)等都有关。
吉普森(Cibson)法,它综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比,即:
现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量,并用 MIPS(Milion In-;truction Per Second,百万条指令每秒)作为计量单位。