第一章 计算机网络概论
1、数据的表示
1.1 进制的转换
-
概念
进制 数码 基数 位权 十进制(D) 0,1,2,3,4,5,6,7,8,9 10 1 0 k 10^k 10k 二进制(B) 0,1 2 2 k 2^k 2k 十六进制(H) 0~9,A,B,C,D,E,F 16 1 6 k 16^k 16k -
R进制转十进制–按权展开法
例如二进制:10100.01(B)= 1 * 2 4 2^4 24 + 1 * 2 2 2^2 22 + 1 * 2 − 2 2^{-2} 2−2
例如十六进制:50A.01(B)= 5 * 1 6 2 16^2 162 + 10 * 1 6 0 16^0 160 + 1 * 1 6 − 2 16^{-2} 16−2
-
十进制转R进制–短除法
例如将94转为二进制
2|94 余 0
2|47 1
2|23 1
2|11 1
2|5 1
2|2 0
2|1 1
0得到结果:1011 110
-
十进制转二进制–减法
2 0 2^0 20 2 1 2^1 21 2 2 2^2 22 2 3 2^3 23 2 4 2^4 24 2 5 2^5 25 2 6 2^6 26 2 7 2^7 27 2 8 2^8 28 1 2 4 8 16 32 64 128 256 例如:94
94 - 2 6 2^6 26 = 30
30 - 2 4 2^4 24 = 14
14 - 2 3 2^3 23 = 6
6 - 2 2 2^2 22 = 2
2 - 2 1 2^1 21 = 0
得到结果:1011110
1.2 码制
-
原码:最高位是符号位,其余低位表示数值的绝对值;
-
反码:整数的反码是原码本身,负数的反码符号位不变,低位数值按位取反;
-
补码:整数的补码是原码本身,负数的补码是在反码的末位加一;
-
移码:补码的符号位取反,低位数值位不变;
数值1 数值-1 1-1 原码 0000 0001 1000 0001 1000 0010 反码 0000 0001 1111 1110 1111 1111 补码 0000 0001 1111 1111 0000 0000 移码 1000 0001 0111 1111 1000 0000 -
取值范围
码制 定点整数 定点小数 数码个数 原码 − ( 2 n − 1 − 1 ) -(2^{n-1}-1) −(2n−1−1)~ + 2 n − 1 − 1 +2^{n-1}-1 +2n−1−1 − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) −(1−2−(n−1))~ + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(1−2−(n−1)) 2 n − 1 2^{n}-1 2n−1 反码 − ( 2 n − 1 − 1 ) -(2^{n-1}-1) −(2n−1−1)~ + 2 n − 1 − 1 +2^{n-1}-1 +2n−1−1 − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) −(1−2−(n−1))~ + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(1−2−(n−1)) 2 n − 1 2^{n}-1 2n−1 补码 − ( 2 n − 1 ) -(2^{n-1}) −(2n−1)~ + 2 n − 1 +2^{n-1} +2n−1 − 1 + ( 1 − 2 − ( n − 1 ) ) -1~+(1-2^{-(n-1)}) −1 +(1−2−(n−1)) 2 n 2^{n} 2n 移码 − ( 2 n − 1 ) -(2^{n-1}) −(2n−1)~ + 2 n − 1 +2^{n-1} +2n−1 − 1 + ( 1 − 2 − ( n − 1 ) ) -1~+(1-2^{-(n-1)}) −1 +(1−2−(n−1)) 2 n 2^{n} 2n
1.3 浮点数表示
- 浮点数的运算
- 浮点数的表示: N = 尾数 ∗ 基 数 指数 N = 尾数 * 基数^{指数} N=尾数∗基数指数,例如: 1.25 ∗ 1 0 6 1.25 * 10^6 1.25∗106
- 运算过程
- 对阶 > 尾数计算 > 结果格式化
1.4 逻辑运算
-
关系运算符 <、<=、>、>=、==、!=
- 关系运算符优先级 < 算术运算符
- 关系运算符优先级 > 赋值运算符
-
逻辑运算 真 | 假
- 逻辑或 ||、+、U、V、OR:有一个为真
- 逻辑与 &&、*、.、^、AND:两个相同为真、其余为假
- 逻辑异或 XOR:两个不同为真
- 逻辑非:取反
- 逻辑运算符优先级 < 关系运算符
-
优先级
逻辑非 !
算数运算 ±*/ %
关系运算
逻辑运算
赋值运算
2、校验码概述
[!IMPORTANT]
用于检错和纠错
- 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制数就称为数据校验码的码距。
2.1 奇偶校验
可检错,不可纠错。
- 奇校验
- 偶校验
2.2 CRC冗余循环校验
可检错,不可纠错。
使用模二除法,余数为0正确
2.3 海明校验码
可检错,可纠错。
校验位求取公式: 2 r > = m + r + 1 2^r >= m + r + 1 2r>=m+r+1
r:校验位位数
m:信息位位数
3、CPU的组成(运算器、控制器)
计算器结构
- CPU(运算器、控制器)
- 存储设备(内存/主存、外存/辅存)
- 输入设备
- 输出设备
3.1 运算器
- 算数逻辑单元ALU:数据的算术运算和逻辑运算。
- 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据。
- 数据缓冲寄存器DR:写内存时,暂存指令或数据。
- 状态条件寄存器PSW(存在争议,在某种情况下,可以归属到控制器):存状态标志与控制标志。
3.2 控制器
- 程序计数单元PC:存储下一条要执行指令的地址。
- 指令寄存器IR:存储即将执行的指令。
- 指令译码器ID:对指令中的操作码字段进行解释
- 时序部件:提供时序控制信号。
4、寻址方式
4.1 立即寻址方式
特点:操作数直接在指令中,速度快,灵活性差。
OP | 操作数 |
---|
4.2 直接寻址方式
特点:指令中存放操作数的地址。
OP | 操作数地址(直接地址,指向操作数) |
---|
4.3 间接寻址方式
特点:指令中存放了一个地址,这个地址的内容对应的是操作数的地址。
OP | 间接地址 |
---|
4.4 寄存器寻址方式
寄存器寻址
4.5 寄存器间接寻址方式
寄存器中存放操作数的地址。
5、CISC与RISC指令类型系统
指令类型系统 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC(复杂指令类型系统) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微码 | 研制周期长 |
RISC(精简指令类型系统) | 数量少,使用频率均匀,定长格式 | 支持数量少 | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
6、流水线技术
[!NOTE]
流水线是指程序在执行多条指令重叠进行操作的一种准并行处理实现技术;
需要掌握流水线执行时间计算、流水线吞吐率、最大吞吐率计算。
例如:一条指令分为取指、分析、执行,取指需要3ms,分析需要4ms,执行需要2ms
则,该指令的流水线周期为4ms(流水线周期为执行时间最长的一段)
流水线执行时间计算
流水线理论计算公式:1条指令的执行时间+(指令条数 - 1)* 流水线周期
理论公式: ( t 1 + t 2 + t 3 + . . . + t k ) + ( n − 1 ) ∗ t 理论公式:(t_1+t_2+t3+...+t_k) + (n-1)*t 理论公式:(t1+t2+t3+...+tk)+(n−1)∗t
实践公式: k ∗ t + ( n − 1 ) ∗ t 实践公式:k*t + (n-1)*t 实践公式:k∗t+(n−1)∗t
k:指令分段段数;如一条指令分为取指、分析、执行,则k=3;
t:流水线执行周期;
n:指令条数;s
流水线吞吐率、最大吞吐率计算
吞吐率: T P = 指令条数 / 流水线执行时间 吞吐率:TP=指令条数/流水线执行时间 吞吐率:TP=指令条数/流水线执行时间
最大吞吐率: T P m a x = lim n → ∞ n / ( k + n − 1 ) ∗ t = 1 / t 最大吞吐率:TP_{max}=\lim_{n \to \infty} n/(k+n-1)*t=1/t 最大吞吐率:TPmax=limn→∞n/(k+n−1)∗t=1/t
7、存储系统概述
虚拟存储体系:主存+辅存
三级存储结构:Cache+主存+辅存
7.1 层次化存储体系
-
外存/辅存:硬盘、光盘、U盘等;
-
内存/主存:随机存储器(RAM)、只读存储器(ROM);
-
Cache:按内容存取;
-
CPU:寄存器;最快、但容量小、成本高;
局部性原理是层次化存储结构的支撑
时间局部性:刚被访问的内容,立即又被访问;
空间局部性:刚被访问的内容,临近的内容很快被访问;
分类
- 储存位置
- 主存&外存
- 存取方式
- 按内容存取:
- 相联存储器(Cache)
- 按地址存取
- 随机存储器(内存)
- 顺序存取存储器(磁带)
- 直接存取存储器(磁盘)
- 按内容存取:
- 工作方式
- 随机存取存储器RAM(如内存DRAM)-- 掉电会丢失数据
- 只读存储器ROM(如BIOS)-- 掉电不会丢失数据
7.2 Cache
Cache是除了寄存器外访问速度最快的层次。
使用Cache改善系统性能的依据是程序的局部性原理。
- 时间局部性
- 空间局部性
概念
如果以h代表对Cache的访问命中率(一般是90%), t 1 t_1 t1表示Cache的周期时间, t 2 t_2 t2表示主存储器周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为 t 3 t_3 t3,则:
t
3
=
h
∗
t
1
+
(
1
−
h
)
∗
t
2
t_3 = h*t_1+(1-h)*t_2
t3=h∗t1+(1−h)∗t2
其中,
(
1
−
h
)
(1-h)
(1−h)又称为失效率(未命中率)
主存和Cache之间的关系(地址映像)
- 直接相联映像:硬件电路比较简单,但冲突率很高;
- 全相联映像:电路难于设计和实现,只适用于小容量的Cache,冲突率低;
- 组相联映像:直接相联与全相联折中;
[!NOTE]
主存与Cache之间的地址映射由硬件来完成
冲突率(高、中、低) | 电路复杂度(复杂、简单、折中) | |
---|---|---|
直接相联映象 | 高 | 简单 |
全相联映象 | 低 | 复杂 |
组相联映象 | 中 | 折中 |
7.4 主存编址计算
- bit(比特位)
- 4bit(字长为4bit) – 存储单元,存储单元地址一般是二进制存储;
如果没有特殊表示,一般以字节表示存储单元大小,一个字节是8bit;
存储单元拼接,横向、竖向拼接;
-
存储单元
存储单元个数 = 最大地址 − 最小地址 + 1 存储单元个数=最大地址-最小地址+1 存储单元个数=最大地址−最小地址+1 -
编址内容
- 按字编址:储存体的存储单位是字存储单元,即最小寻址单位是一个字;
- 按字节编址:存储体的存储单位是字节存储单元,即最小寻址单位是一个字节;
-
总容量 = 存储单元个数 ∗ 编址内容 总容量=存储单元个数*编址内容 总容量=存储单元个数∗编址内容
根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需的芯片总数,即:
总芯片数 = 总容量 / 每片容量 总芯片数=总容量/每片容量 总芯片数=总容量/每片容量
8、输入输出设备
8.1 输入输出技术
数据传输控制方式
- 程序控制(查询)方式:分为无条件传送和程序查询方式两种。
- 方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
- 例如:老师向学生授课(传输知识点),CPU=老师;内存=老师的知识点;外存=学生的知识点;
- 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输的相应速度。
- CPU与数据传输并行
- 鼠标、键盘
- DMA方式:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制与中断方式都高效。
- DMA方式不需要CPU参与数据传输
- 移动硬盘
(DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。)
- 通道方式
- I/O处理
终端处理过程
- CPU无需等待也不必查询I/O状态。
总线
总线系统(特点、分类)
- 特点:一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。(分时双工:既能发送信息也能接收信息;对讲机)
分类
- 数据总线(DB/Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
- 地址总线(AD/Address Bus):用来指定在RAM(Rabdom Access Memory)之中存储的数据的地址。
- 控制总线(CB/Control Bus):将薇处理单元(Control Unit)的信号,传送到周边设备。