以下内容均为个人笔记,图片、内容来自:
计算机组成原理(哈工大刘宏伟)135讲(全)高清
课程讲义:
百度云:https://pan.baidu.com/s/1dqyr-PzSfjJKMSibyaUL3Q 提取码:vs1f
1. 计算机系统简介
-
现代计算机的多态性
-
Sensors:传感器
-
info.appliances:个人数字助理 == PDA:掌上电脑
-
Laptop:笔记本
-
PC/Client:个人计算机
-
Server:服务器
-
Mainframe:一种大型商业服务器
-
HPC(High Performance Computing):高性能计算机
-
物联网
物联网:把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、供电系统、大坝、油气管道等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物联网”与现有的互联网整合起来,实现人类社会与物理系统的整合,形成智慧地球。
-
1.1. 计算机的软硬件概念
-
计算机系统
-
硬件:计算机的实体,如主机、外设等
-
软件:由具有各类特殊功能的信息(程序)组成
-
系统软件:用来管理整个计算机系统
- 语言处理程序
- 操作系统
- 服务性程序。如数学库、MPI并行计算环境
- 数据库管理系统
- 网络软件
-
应用软件:按任务需要编织成的各种程序
-
-
1.2. 计算机系统的层次结构
- 系统复杂性管理的办法
- 抽象:(几种定义)
- 对于一个过程或者一件制品的某些细节有目的的隐藏,以便把其他方面、细节或者结构表达得更加清楚。
- 指更高级的模型,和低级的实体相对。
- 隐藏系统中不重要的细节。
- 抽象:(几种定义)
-
从物理构成的角度看,计算机系统的层次结构:
Application Software programs Operating Systems device
driversArchitecture
(体系结构)instructions
registersMicro-architecture
(微体系结构)datapaths
controllersLogic
(逻辑)adders
memoriesDigital Circuits
(数字电路)and gate
not gateAnalog Circuits
(模拟电路)amplifiers
(放大器)
filters
(滤波器)Devices
(电子元件)transistors
(晶体管)
diodes
(二极管)Physics electron -
从程序员的视角,计算机系统的层次结构:
我们先来了解几个概念:
-
汇编语言程序:就是用汇编语言编写的计算机程序。
-
机器语言程序:就是二进制程序,是机器无需经过翻译,能直接识别的程序语言或指令代码。
-
汇编程序:把汇编语言程序翻译为与之等价的的机器语言程序的翻译程序。
-
编译程序:把高级编程语言(如Java、C#)编写的程序转换为可执行的机器语言。其具体过程是:先转换为汇编指令,然后再转换为机器语言。
下面介绍层次结构:
-
虚线以上的功能由软件实现
虚线以下的功能由硬件实现
虚线则是软件、硬件接口。
1.3. 计算机体系结构和计算机组成
-
计算机体系结构:程序员所见到的计算机系统的属性、概念性结构与功能特性(这里的程序员指机器语言程序员)
(比如:指令系统、数据类型、寻址技术、I/O机理)
重点:有无乘法指令
-
计算机组成:实现计算机体系结构所体现的属性。
(具体指令的实现)
重点:如何实现乘法指令
2. 计算机的基本组成
2.1. 冯诺依曼计算机的特点
-
特点
-
计算机由五大部件组成:运算器、控制器、存储器、输入设备、输出设备
-
指令和数据以同等地位存于存储器,可按地址寻访
-
指令和数据以二进制表示
-
指令由操作码和地址码组成
-
存储程序(核心特征)
-
以运算器为中心
-
-
冯诺依曼计算机硬件框图
实线:数据通过实线进行流动
虚线:表示控制和反馈
五大组成部分的功能:
-
运算器:算术运算和逻辑运算
-
存储器:存放数据和程序
-
控制器:指挥程序运行
-
输入设备:将信息转换成机器能识别的形式
-
输出设备:将结果转换成人们熟悉的形式
这种结构存在的问题:由于以运算器为核心,数据的输入输出必须经过运算器,运算器的工作非常繁忙,这会成为计算机系统的瓶颈
2.2. 计算机硬件框图
-
对之前以运算器为中心的计算机硬件进行改进,得到以存储器为中心的计算机硬件框图:
-
现代计算机硬件框图
- 系统复杂性管理的方法-2 (3’Y)
- 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
- 模块化(Modularity):有明确定义(well-defined)的功能和接口
- 规则性(regularity):模块更容易被重用
2.3. 计算机的工作步骤
2.3.1. 上机前的准备
以计算正弦交流电压为例说明:
-
建立数学模型
u = U m S i n ω t u = U_mSin \omega t u=UmSinωt -
确定计算方法
s i n x = x − x 3 3 ! + x 5 5 ! − x 7 7 ! + x 9 9 ! − . . . sinx = x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\frac{x^9}{9!}-... sinx=x−3!x3+5!x5−7!x7+9!x9−...y n + 1 = 1 2 ( y n + x y n ) ( n = 0 , 1 , 2 , . . . ) y_{n+1} = \frac{1}{2}(y_n+\frac{x}{y_n})(n = 0,1,2,...) yn+1=21(yn+ynx)(n=0,1,2,...)
-
编制解题程序
- 程序——运算的全部步骤
- 指令——每一个步骤
下面这是一个编程例子:
计算 :
a
x
2
+
b
x
+
c
=
(
a
x
+
b
)
x
+
c
ax^2+bx+c = (ax+b)x+c
ax2+bx+c=(ax+b)x+c
下面是两种算法的指令,右边对左边进行了改进:
ax^2+bx+c | (ax+b)x+c |
---|---|
取x至运算器中 | 取x至运算器中 |
乘以x在运算器中 | 乘以a在运算器中 |
乘以a在运算器中 | 加b在运算器中 |
存 ax2至存储器中 | 乘以x在运算器中 |
取b至运算器中 | 加c在运算器中 |
乘以x至运算器中 | |
加 ax2在运算器中 | |
加c在运算器中 |
指令格式举例:
指令的格式:
操作码 | 地址码 |
---|
指令 | 操作 |
---|---|
取数
α
\alpha
α 二进制指令:000001 0000001000 分别对应: 操作码 内存单元地址 | [a]–>ACC |
存数 β \beta β | [ACC]–> β \beta β |
加 γ \gamma γ | [ACC]+[ γ \gamma γ]–>ACC |
乘 δ \delta δ | [ACC] × \times ×[ δ \delta δ]–>ACC |
打印 σ \sigma σ | [ σ \sigma σ]–>打印机 |
停机 |
上表中,[]:指内存/寄存器中保存的内容
计算 a x 2 + b x + c ax^2+bx+c ax2+bx+c的程序清单:
- 注意:指令和数据都是保存在存储器中的
2.3.2计算机的硬件和执行过程
2.3.2.1. 存储器的基本组成
- 存储体
- 构成:
上图中
-
第一行:存储体由存储单元构成,存储单元由存储元件构成
- 第二行:举一个例子
- 相关的几个概念:
存储单元:存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
每一个存储单元赋予一个地址号
存储单元按地址寻访
-
MAR:存储器地址寄存器(Memory Address Register),反映存储单元的个数
-
MDR:存储器数据寄存器(Memory Data Register),反映存储字长
举个例子:设MAR=4位,MDR=8位
那么存储单元个数为16,存储字长为8
解释:
- 存储单元个数为16:因为MAR是4位二进制数,4位二进制数的所有组合情况为24=16种,而存储单元指一串二进制代码,因此存储单元个数为16
- 存储字长为8:因为MDR反映存储字长,MDR有8位,因此存储字长为8
2.3.2.2. 运算器的基本组成及操作过程
ACC | MQ | X | |
---|---|---|---|
加法 | 被加数 和 | 加数 | |
减法 | 被减数 差 | 减数 | |
乘法 | 乘积高位 | 乘数 乘积低位 | 被乘数 |
除法 | 被除数 余数 | 商 | 除数 |
-
加法操作过程
-
指令为:
加 M -
初态为:
ACC 被加数
-
指令为:
[M]–>X
[ACC]+[X]–>ACC
-
-
减法操作过程
-
指令为:
减 M -
初态为:
ACC 被减数
-
具体指令:
[M]–>X
[ACC]-[X]–>ACC
-
-
乘法操作过程
-
指令为:
乘 M -
初态为:
ACC 被乘数
-
具体指令:
[M]–>MQ
[ACC]–>X
0–>ACC
[X] × \times ×[MQ]–>ACC//MQ
-
-
除法操作过程
-
指令为:
除 M -
初态为:
ACC 被除数
-
具体指令:
[M]–>X
[ACC] ÷ \div ÷[X]–>MQ
余数在ACC中
可以观察到:MQ Register(乘商寄存器)只有在乘法和除法中使用了,MQ的意思就是乘商(Multiple-Quotient)。
-
2.3.2.3. 控制器的基本结构
-
控制器的功能:
- 解释指令
- 保证指令的按序进行
-
控制器的基本组成
-
程序计数器PC(Program Counter Register):存放当前欲执行指令的地址,具有计数功能:(PC)+1–>PC 注:在不同的机器上,PC自增的值是不一样的,这里的+1只是举例
-
指令寄存器IR(Instruction Register):存放当前欲执行的指令。控器可以从IR中把指令的操作码取出来分析
-
控制单元CU(Control Unit):控制器的核心,发出各种控制信号
-
2.3.2.4. 主机完成一条指令的过程
- 以取数指令为例
- 以存数指令为例
- 以加法、乘法、打印指令为例,自己实现。
2.3.2.5 ax2+bx+c程序的执行过程
-
将程序通过输入设备送至计算机
-
程序首地址——>PC
-
启动程序运行
-
取数指令
- 取指令 PC——>MAR——>存储体——>MDR——>IR,(PC)+1——>PC
- 分析指令 OP(IR)——>CU ,其中OP是指令的操作码
- 执行指令 AD(IR)——>MAR——>存储体——>MDR——>ACC ,其中AD是指令的地址码
-
乘法指令,自己实现
- 取指令
- 分析指令
- 执行指令
-
打印结果,自己实现
- 取指令
- 分析指令
- 执行指令
3. 计算机硬件的主要技术指标
3.1. 机器字长
3.2. 运算速度
衡量计算机运算速度的方法:
注解:
-
在使用吉普森法时,两种计算 f i f_i fi的方法:
(1)指令的静态使用频率:在程序清单中,直接计算每一条指令出现的频率
(2)指令的动态使用频率**(更准确)**:让程序执行,计算程序执行过程中,每一条指令出现的频率
-
CPI的使用方法:
把程序当中所有指令的CPI计算出来,根据吉普森法计算出:指令的静态使用频率或动态使用频率,得到每一种指令所需要的时钟周期
3.3. 存储容量
存储容量:存放二进制信息的总位数
注解:
主存?辅存?
- 主存 = 内存:指计算机中的内存条
- 外村 = 辅存:指硬盘、U盘、光盘、软盘等