下面预习笔记根据MOOC王道考研的视频所做
1.绪论
1.0计算机对二进制位的识别
信息化世界的概念:
在硬件之上架设操作系统,然后安装软件就成了可用的计算机。计算机之间通过计算机网络实现互联,这就是信息化世界。
而机组这门课程就是要研究这些计算机硬件在底层是如何协调操作的。
耳
熟
能
详
的
计
算
机
硬
件
:
{
C
P
U
显
卡
内
存
外
存
.
.
.
耳熟能详的计算机硬件:\begin{cases}CPU\\ 显卡\\ 内存\\ 外存\\ ...\\\end{cases}
耳熟能详的计算机硬件:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧CPU显卡内存外存...
CPU:
内存条:
通过金属针脚传递数据信息
硬盘:
计算机是如何进行数据的识别的呢?
计算机只能识别二进制的数据,二进制0-低电平,二进制1-高电平。其中的金属针脚就是发送和接受二进制信号——高低电平的通道。传递高电平和低电平的过程就是计算机接受二进制0-1信号的过程。通过多条电路,可以传递多个二进制数位,每个二进制数位称为1bit(比特)。
1.1计算机的发展历史
计算机系统=硬件+软件
硬件:计算机的实体部分,如主机,外设等。硬件是计算机系统的物理基础,决定了计算机系统的瓶颈。
软件:操作系统,微信,微博等,软件将计算机系统的硬件的系统发挥到什么样的程度。
硬件和软件功能共同决定了一个计算机的好坏。
软
件
:
{
系
统
软
件
:
用
来
管
理
整
个
计
算
机
系
统
的
软
件
{
操
作
系
统
数
据
库
管
理
系
统
标
准
程
序
库
网
络
软
件
等
应
用
软
件
:
按
任
务
的
需
求
编
制
成
的
各
种
软
件
:
微
信
,
Q
Q
等
软件:\begin{cases}系统软件:用来管理整个计算机系统的软件\begin{cases}操作系统\\数据库管理系统\\标准程序库\\网络软件等\end{cases}\\ 应用软件:按任务的需求编制成的各种软件:微信,QQ等\\ \end{cases}
软件:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧系统软件:用来管理整个计算机系统的软件⎩⎪⎪⎪⎨⎪⎪⎪⎧操作系统数据库管理系统标准程序库网络软件等应用软件:按任务的需求编制成的各种软件:微信,QQ等
1.1.1发展经历
1.1.1.1硬件的发展
电子管计算机
第一台数字计算机:ENIAC(1946)【冯诺依曼】
逻辑元件:电子管;
逻辑元件是用来处理电信号的最小单元。这时候的计算机就是将这些逻辑元件使用电路连接起来,从而实现用电路来进行计算的功能。此时的计算机的占地面积大和耗电量也很大,但是计算速度也比较慢。我们将以ENIAC为代表的这一代的计算机称为第一代计算机:电子管时代
晶体管计算机
晶体管的体积要比电子管要小很多,使计算机的大小得到减小,同时功耗减小,计算速度加快。并且操作系统的雏形出现。
集成电路计算机
集成电路将原件集成在基片上,集成电路的出现使计算机的体积变得原来越小,同时功耗降低,并且不再使用手工焊接使得计算机本身变得更加可靠。此时高级语言也在如火如荼的发展,开始出现了分时操作系统。但并没有进入人民的生活。
超大规模集成电路计算机
开始出现“微处理器”:CPU,微型计算机
操作系统:Windows,MacOS,Linux…
Intel公司未处理的发展:
所谓机器字长指的是,计算机能够一次处理的最大的二进制的位数。可以看到机器字长逐渐提升,这样计算机的计算速度也在迅速提升。微型计算的发展就是随着微型处理器的发展而发展得。
摩尔定律
1.1.1.2软件的发展
编程语言的发展:
机
器
语
言
→
汇
编
语
言
:
编
写
困
难
,
需
要
考
虑
计
算
机
能
不
能
识
别
P
A
S
C
A
L
,
C
+
+
:
高
级
语
言
,
接
近
人
的
自
然
语
言
更
进
一
步
地
出
现
了
J
a
v
a
,
P
y
t
h
o
n
.
.
.
机器语言\rightarrow汇编语言:编写困难,需要考虑计算机能不能识别\\ PASCAL,C++:高级语言,接近人的自然语言\\ 更进一步地出现了Java,Python...
机器语言→汇编语言:编写困难,需要考虑计算机能不能识别PASCAL,C++:高级语言,接近人的自然语言更进一步地出现了Java,Python...
编程语言的发展决定了软件世界的丰富性。
操作系统的发展:
D
O
S
→
W
i
n
d
o
w
s
→
I
O
S
/
A
n
d
r
o
i
d
系
统
类
的
软
件
也
在
发
展
DOS\rightarrow Windows\rightarrow IOS/Android \\系统类的软件也在发展
DOS→Windows→IOS/Android系统类的软件也在发展
1.1.2摩尔定律
摩尔定律:集成电路芯片集成度没18个月翻一番。
1.2计算机的基本组成
1.2.1硬件系统
需 要 掌 握 的 两 种 硬 件 系 统 组 成 : 计 算 机 硬 件 的 基 本 组 成 { 早 期 冯 诺 依 曼 机 的 结 构 现 代 计 算 机 的 结 构 : 冯 诺 依 曼 结 构 的 优 化 需要掌握的两种硬件系统组成: \\计算机硬件的基本组成\begin{cases}早期冯诺依曼机的结构\\现代计算机的结构:冯诺依曼结构的优化\end{cases} 需要掌握的两种硬件系统组成:计算机硬件的基本组成{早期冯诺依曼机的结构现代计算机的结构:冯诺依曼结构的优化
ENIAC:手动接线来控制计算;
这样计算机的计算速度被手动输入的时间抵消。为此,冯诺依曼提出了“存储程序”的概念,是指将指令以二进制代码的形式事先输入计算机的主存储器,依次执行
早期的冯诺依曼机器的结构:
实线箭头:数据线——数据可以沿着箭头进行传输
虚线箭头:控制线和反馈线
程序指令的解析是由控制器执行的
所谓的软件和硬件在逻辑上是等效的的意思是软件能完成的任务硬件也是能完成的。
{
软
件
完
成
成
本
低
,
效
率
相
对
低
。
硬
件
完
成
成
本
高
,
效
率
相
对
高
\begin{cases}软件完成成本低,效率相对低。\\硬件完成成本高,效率相对高\end{cases}
{软件完成成本低,效率相对低。硬件完成成本高,效率相对高
e.g.实现乘法运算的时候可以设计一个硬件电路直接实现乘法运算;也可以用软件的方式,执行多次加法运算。
冯诺依曼机的特点:
-
计算机有五大部分组成:输入设备,输出设备,存储器,运算器,控制器
其中输入设备和输出设备我们统称为IO设备
-
指令和数据以同等地位存储在存储器中,可以按地址寻访
-
指令和数据都是用二进制表示的
这样方便使用电信号表示
-
指令由操作码和地址码组成
- 操作码:加减乘除
- 地址码:数据存储在哪里
-
存储程序:提前将程序以二进制码的形式存储到存储器中。
-
冯诺依曼机的核心是运算器
输入输出数据与存储器之间的数据传送通过运算器完成。
但是这样也会使数据运算的效率降低,现代的计算机结构将其进行了改变:
现代计算机的结构
现代计算机:以存储器为中心
数据不再由运算器存储到存储器中,而是直接存储到存储器中。解放了运算器的时间,使运算器专注的进行运算。
在大规模集成电路出现之后,运算器和控制器通常是集成在一块芯片上的,这就是我们常说的CPU
C
P
U
=
运
算
器
+
控
制
器
CPU=运算器+控制器
CPU=运算器+控制器
区别一下主机的概念。
硬
件
{
主
机
{
C
P
U
主
存
I
O
设
备
硬件\begin{cases}主机\begin{cases}CPU\\主存\end{cases}\\IO设备\end{cases}
硬件⎩⎪⎨⎪⎧主机{CPU主存IO设备
1.2.2认识各个硬件部件
(1)主存储器
主存储器中有存储体,是用来存放数据的。存储体由一个个的存储原件构成,用以存储0-1等二进制数据。
除了存储体之外还有两个重要的寄存器:MAR,MDR。
存储体的原理:数据按照地址存储在存储体中。
这里引入几个概念:
- 存储单元:每个存储单元存放一串二进制代码
- 储存字:存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 存储元:存储二进制的电子元件,每个存储元可以存储1bit。存储元是用电容实现的。
MAR的位数反映存储单元的个数,MDR位数=存储字长。
例:MAR=4位,共有 2 4 2^4 24个存储单元
MDR=16位:每个存储单元可以存放16bit。一个字(word)=16bit
易混淆:1个字节(Byte) = 8bit
1B = 1个字节,1b=1bit
(2)运算器
三个寄存器:ACC,MQ和X;运算器的核心部件是ALU,
(3)控制器
-
CU(control unit):控制单元,分析指令,给出控制信号。CU是真正的核心。
-
IR(Instruction Register):指令寄存器,存放当前执行的指令
-
PC:(Prigram Counter)程序计数器,存放下一条地址,有自动加1功能
完 成 一 条 指 令 的 三 个 步 骤 { 取 指 令 :PC 分 析 指 令 :IR 执 行 指 令 :CU 完成一条指令的三个步骤\begin{cases} 取指令\text{:PC}\\分析指令\text{:IR}\\执行指令\text{:CU}\end{cases} 完成一条指令的三个步骤⎩⎪⎨⎪⎧取指令:PC分析指令:IR执行指令:CU
举个例子说明
在程序运行之前PC会指向0的位置,PC存放的内容通过地址总片传到地址寄存器MAR当中,导致(MAR)=0
同时控制器会通过控制总线告诉主储存器这次要进行的是“读数”的操作。
在上一次完成取数操作的过程中,完成取指令即1~4步完成后PC就会自动加一,即PC++,此时PC=1,指向地址1处
通过上面的对于y=a*b+c的过程,我们不难发现每次的指令的执行都是:
- 取指令
- 分析指令
- 执行指令
其中取指令和分析指令的过程都是一样的,不一样的值守执行指令的过程。其中在取指令的过程中MDR中的数据会放入IR中,由IR进行操作码和地址码的分解,并将操作码传传输到CU中,由CU分析指令的内容,最后对相应的地址码处的数据进行一系列的操作。即决定是将MDR中的数据放到哪个寄存器中,这也对应了不同的操作。
CPU区分指令和数据的依据:指令周期的不同阶段。
小结
注:现代的计算机通常把MAR和MDR集成在CPU中
1.2.3计算机系统的多级层次结构
1.2.3.1层次结构的划分
传统意义上的机器只能识别机器语言,也就是二进制语言。CPU在执行这些用二进制表示的指令的时候还需要把这些机器指令分为更加细的小步骤来执行。我们把这些更加细分的小步骤称为**“微指令”,或者称为“微操作”**
在上面的例子的取数操作中:
需要九个微指令的依次执行才能完成一个机器语言的操作:取数。
我们可以把微程序机器看做是对上层的传统机器的分解:用微程序机器的微指令来解释并且执行传统机器M1的每一条机器指令。
由于使用二进制语言来进行编程是很不方便的,汇编语言应运而生。
使用汇编语言的程序员“看到的”机器我们称为“虚拟机器”。汇编语言编写的程序的执行必须使用汇编程序进行翻译,翻译成等价的机器语言程序才能执行。
汇编语言的指令和机器语言的指令都是一一对应的。只是更方便于人类理解,其实本质上和机器语言没有区别。仍然是属于低级语言。
随着计算机的发展,高级语言出现了:C,Java,python…
而我们的程序难免会使用到操作系统所提供的的一些服务,比如某一些系统调用等,这样我们在汇编程序之前插入操作系统机器,
并且我们把操作系统以上的机器称为虚拟机器,软件,操作系统下方的机器为硬件,这样我们最终得到了下面的计算机的层次结构的划分:
对于这个层次结构来说,**每一个下层是上层的基础,上层是下层的扩展。**这就是计算机系统的层次结构。
1.2.3.2三种级别的语言
三种级别的语言:
-
编译程序和解释程序
编译程序:将高级语言一次性全部翻译成汇编语言,或者翻译成机器语言
汇编程序:将汇编语言翻译成机器语言
解释程序:将高级语言翻译成机器语言
1.3计算机性能指标
1.3.1存储器的性能指标
MAR反映存储单元的个数(最多支持多少个)
MDR反映存储字长,就是二进制的位数
这样总容量可以用下面的公式表示:
总
容
量
=
存
储
单
元
个
数
×
存
储
字
长
b
i
t
=
存
储
单
元
个
数
×
存
储
字
长
8
B
y
t
e
总容量=存储单元个数\times存储字长\quad bit\\ =\frac{存储单元个数\times存储字长}{8}\quad Byte
总容量=存储单元个数×存储字长bit=8存储单元个数×存储字长Byte
比如MAR=32位,MDR为8位
总容量 = 2 32 × 8 b i t = 4 G B 2^{32}\times 8\quad bit=4GB 232×8bit=4GB
1.3.2CPU的性能指标
-
CPU主频(时钟频率):CPU内数字脉冲信号频荡的频率,单位Hz:每秒钟进行多少个时钟周期
-
时钟周期 C P U 主 频 = 1 时 钟 周 期 CPU主频=\frac{1}{时钟周期} CPU主频=时钟周期1
CPU主频很大程度上反映了CPU的性能,其他情况相同时,CPU的主频越大,CPU运行速度越大
-
CPI:每一条指令的执行需要多少个时钟周期
不同的指令CPI不同,甚至相同的指令,因为实现方式的不同CPI也不同。通常我们考虑CPI的时候考虑的是一个平均情况,因为影响CPI的因素有很多,除了上面说到的不同的指令的影响,主存的符合也有可能影响CPI
-
执行一条指令的耗时=CPI × \times ×CPU时钟周期
-
IPS:每秒执行多少指令 I P S = 主 频 C P I IPS=\frac{主频}{CPI} IPS=CPI主频
常在IPS前加上一些单位: K I P S , M I P S KIPS,MIPS KIPS,MIPS
-
FLOPS:每秒钟执行多少次浮点运算
常加单位: K F L O P S , M F L O P S , G F L O P S , T F L O P S KFLOPS,MFLOPS,GFLOPS,TFLOPS KFLOPS,MFLOPS,GFLOPS,TFLOPS
1.3.3系统整体性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量:指系统在单位时间内处理的请求的数量
响应时间:指用户向计算机发送一个请求,到系统对该请求作出响应,并获得它所需要的的结果的等待时间
动态测试
基准程序:用来测量计算机处理速度的一种实用程序,以便被测量计算机性能可以与运行同程序的其他计算机的性能相比较
$
[外链图片转存中…(img-OMwP8AWJ-1613551486492)]
1.3.3系统整体性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量:指系统在单位时间内处理的请求的数量
响应时间:指用户向计算机发送一个请求,到系统对该请求作出响应,并获得它所需要的的结果的等待时间
[外链图片转存中…(img-p9q33ve0-1613551486493)]
动态测试
基准程序:用来测量计算机处理速度的一种实用程序,以便被测量计算机性能可以与运行同程序的其他计算机的性能相比较
[外链图片转存中…(img-OQ3lR3VC-1613551486495)]
[外链图片转存中…(img-uiwpCObA-1613551486495)]
注意在描述存储容量和频率速度时K,M,G,T表示的含义是不同的。