计算机结构-知识点与题型总结
本文最后更新于 2024年1月27日 下午
知识点与题型总结
针对Brunel University: 2021 EE2623 Computer Architecture and Interfacing 的期末复习笔记
Lecturer: Dr. Itagaki Takebumi(板垣 剛文)/Dr.Hongying Meng(孟鸿鹰)
总结 本课程常考到的题型、相关知识点和回答模板
二进制数的表达和运算
整数的表达方式
分为Signed和Unsigned两种,两者之间的转换是将源码进行翻转后+1得到其二补码。
### 加法运算
加法运算时注意进位和溢出的问题,当进位值的前两位数值不同(为10或01)时代表运算符发生了溢出。
浮点数的表达方式
浮点数有两种表达规定:IEEE754和IBM。
同一精度下,IBM能够表达的范围更大,最小值也更小,精度更高。
#### IEEE754的例外 - NaN:Not a
Number,是运算错误的表示,通常有如下几种情况运算结果是NaN:
1. \(⨦0 ÷ ⨦0\)
2. \(∞-∞\)
3. \(⨦∞÷⨦∞\)
4. \(⨦∞ × 0\)
-
无穷:当指数部分全为1,小数部分不为0时,运算接过是无穷。规定如下的情况结果会是无穷:
1. \(∞ × ∞\)
2. \(∞ + ∞\)
3. \(nonezero ÷ 0\) -
0:IEEE754中有正零和负零之分:两者的符号位不同,其余比特位全都是0,规定\(n ÷ ∞=0\)。
#### 最大值和最小值/表示范围/精度
其最大值和最小值的求法是相同的。 最小数:
\[base^{-bias} × base^{-fraction}\]
最大数:
\[(base-base^{-fraction})×base^{(2^{exponent}-bias)}\]
fraction: 小数部分的总位数,bias:偏置,base:基数
exponent:指数部分的总位数
注:IEEE754中由于非正规数的要求,应当写作:\((base-base^{-fraction})×base^{(2^{exponent}-bias-1)}\)
通信
两者之间的通信数据需要经过转换,转换步骤为:
1. 改变指数部分和小数部分的基底
2. 指数部分转化为不同的偏置下的新指数部分
由于IBM规定的精度大于IEEE754,因此从IBM转到IEEE754时数据的精度会有所损失。
内存
分级存储
由于访问性和成本的限制,需要对内存进行分级:
Level 1:
需要和CPU同步工作,每一个时钟内要确保被CPU完全读取一次,因此储存容量非常的小。
Level 2: 需要和数据总线同步工作,用于缓冲与Level 1
内存的数据读取速度差异,但读取速度不需要与level 1相同。
外部存储:
外部的存储设备数据读取的速度比数据总线慢,因此需要缓冲来补偿速度差异,但是其成本相比于level
1和level 2更低,因此容量通常更大。
大小端
大端: 对于一个多字节的数据,其MSB首先被存储的硬件称之为大端。
大端模式下,MSB被存储在最小的地址上,后续比特依次存储在更大的地址上,LSB被存储在最大的地址上。
小端: 对于一个多字节的数据,其LSB首先被存储的硬件称之为大端。
大端模式下,LSB被存储在最小的地址上,后续比特依次存储在更大的地址上,MSB被存储在最大的地址上。
冯诺依曼架构/ 哈佛架构
概述
冯诺依曼架构
- 基本组成部分:CPU.ALU.I/O.Memory
- 所有的组成部分都与线缆连接,这些线缆在逻辑上和物理上被整合到一起,称为总线。
- 程序和数据都被存放在同一个内存当中,没有任何外部存储。
- 控制器从内存中读取指令并运行。
哈佛架构
- 物理上具有分别独立的信道和存储用于储存指令和数据。
- 这两部分存储的实现方式、字长、时钟、地址、存储介质都可以不同。
判断结构类型
- 给出结论
- 说明有哪些结构特点是符合/不符合冯诺依曼架构的(所有的组成部分有无由总线连接)
- 说明有哪些结构特点是符合/不符合哈佛架构的(指令和数据是否具有分别独立的存储)
对比
- 哈佛架构允许在同一时间内读取指令和数据,且不会产生数据和指令的竞争。
- 哈佛架构允许使用不同的存储介质和方法存储指令和数据。
- 冯诺依曼架构中允许像访问数据一样访问指令,反之亦然。
- 冯诺依曼架构中指令被视作数据,因此冯诺依曼架构允许从外部存储中加载程序。
栈和缓存
栈
- 栈是一种数据结构,其遵循后进先出(LIFO)的原则。
- 在现代计算机中,栈被应用于每一级内存。
- 基本的两个对栈的操作:出栈和入栈。
栈实例:逆波兰表示法计算器
- 表达式遵循从左到右,先运算数后运算符的顺序依次放入栈中。
- 运算符入栈后,栈顶的两个运算数同运算符一起出栈,运算结果入栈。
- 运算结果出栈。
缓冲
缓冲遵循先进先出(FIFO)的原则,分为两种缓冲:线形缓冲和环形缓冲,环形缓冲用于流媒体加载。
缓冲区的大小如果过大,初始化时间会比较长,需要将缓冲区填满的时间也比较长。
缓冲区如果过小,容易发生溢出,如果缓冲区不能够容纳所有的扰乱(Disruption),整个缓冲就会出错。
CPU的类型
CISC,Complex Instruction Set Computer
每一条指令可以执行数条低级的操作(比如一条指令就可以实现内存加载和数学运算等)
### RISC,Reduced Instruction Set Computer
大多数指令被限制成统一的长度和相似的结构,数学运算被限制在了CPU寄存器当中,只有对内存的读取和储存是分别的指令。
大多数的寄存机也是通用的,只有浮点寄存器仍然被专门化。
RISC指令集的计算机对pipline
stages的平衡更佳,且允许更高的时钟频率,也更为高效。
MISC,Minimal Instruction Set Computer
数量非常少的操作和对应的操作码,指令集基本上是基于栈结构构造的。
ZISC和OISC在此略
串行连接和并行连接
对比
- 通常串行传输比并行传输速度更快。
- 串行传输不易出现Clock
Skew(时钟信号在不同组件中到达的时间有差异)。
- 串行传输占用空间更少。
- 串行线路不容易受到周围线路的影响。
- 串行线路避免内Crosstalk(数据在传输时对另外的线路产生影响)。
- 串行线路由于Pin数更少,因此更便宜。
并行算法
基本定律
阿姆达尔定律:理想中对整个系统最大的改进是对系统中的部分进行改进。因此来自部分升级的影响总是有限的。
校验码
汉明码
在一串\(d\)位数据的\(2^{n-1}\)位上加入校验位,校验位的数量\(c\)满足:\(2^c-1>=d\)。
第\(n\)个校验码的校验条件满足:
从第\(2^n\)位开始,使用偶校验检测\(2^n\)位,再跳过\(2^n\)位,再检测\(2^n\)位,重复直到检测最后一位。
数据和校验码的位置序号是相反的,数据的比特位编号是从右到左依次减小,校验码的比特位是从右到左依次增大
缺点:
当只有一个校验码出错时,有50%的概率是数据出错,有50%的概率是校验码自己出错,无法确定。
有两个比特出错时可以检验,但无法校正。
题目类型:
1. 编码 2. 解码 3. 求未知数的值(注意可能性有很多种)
汉明码的局限性:
1. 当同时出现两个以上的比特位错误时,可能无法被检测到。
2.
出现一位比特错误时,在某些情况下无法判断是校验码还是数据发生了错误。
其他的校验方式
循环冗余校验(CRC,Cyclic Redundancy Checks)
通过生成独特的哈希函数来检测比特位的改变,但不能检测出恶意引入的错误。
前项校验(Forward Error Correction)
在卷积码和块码(通常是里德-所罗门码)之间做校验。