仅记录有用部分,课件详细内容在 ppt 上已经很清楚了。
期末更新完毕。
# 第一次作业讲解
作业 1:. 为什么速率的总和没有意义?
作业 2:指令集结构不同的计算机,只比较 MIPS 是没有意义的,例如此题当中,A 的 MIPS 大,但是运行时间较长。
作业 3:采用不同指令集、流水线和并行
作业 4:MIPS 求和有意义吗?
组织不可见,结构可见
# lecture03 - 数据的机器级表示
参考紫书第 2 章 / 黑书第 9 章 计算机算数
# 信息的二进制编码
# 整数的二进制数表示
# 无符号整数
# 有符号整数:原码
浮点数的尾数用原码定点小数表示
符号位不同,数值位相同
不同位长间的转换:符号位左移,空余的填补 0
零的表示不唯一,不利于程序员编程
# 有符号整数:反码
符号位和数值位均取反
# 有符号整数:移码
是一种有符号数表示的方法,其中有符号数 n 是由对应于无符号数 n + K 的位模式表示,K 是偏置值或偏移量。
bias 通常取 2 的 n-1 次方或者 2 的 n-1 次方减 1
当 bias 为 2 的 n-1 次方时,移码和补码仅第一位不同,0 的表示唯一
浮点数的阶用移码表示:当两个数都是负数的时候,移码更容易比较
# 有符号整数:补码
计算机处理中,通常使用补码
负数的数值部分 各位取反,末尾加 1
不同位长间的转换:符号位移到最左位,其余空出位用符号位的值替代
加和减的统一:
一个负数的补码等于模减该负数的绝对值
对于一个确定的模,某数减去小于模的另一数,总可以加上另一数负数的补码来代替。
求真值的补码
全 0:0
全 1:-1
10000...:- 2 n-1
求补码的真值
**X = - xn-1 * 2 n-1 + ... + x 2 * 2 1+ x 1*20 **
若对负数的补码再取负,得到原来那个数【其中的特例是,-2n-1 在取负之后仍然为本身,因为范围内并没有 2n-1 与之相对应】
# 不同的整数编码
# 浮点数
单精度 32 位(1+8+23)仍然表示 232 个数
双精度 64 位(1+11+52)
基底为 2(也存在基底为 16 的情况)—— 基数越大,范围越大,精度越低
# 规格化数
# 表示方法
S E M
符号位
8 位移码表示阶码(指数) —— 范围为 - 126~127,全 0 和全 1 为特殊值
23 位原码表示 24 位尾数,最高位总为 1
# IEEE 754 标准
# 浮点数表示范围
# 表示的数
规格化数,关注上溢出和下溢出,
下溢出部分用非格式化数表示,它的间距是等距的
越靠近原点,数越密集;越远离原点,数越稀疏
静默式和通知式非数 —— 静默式表示未定义的算数结果,通知式非数表示未初始化的值。
# 二进制编码的十进制数表示
正:1100
负:1101
# 非数值数据的编码表示
# 总结
# 计算机组成与体系结构:性能设计
# 整数的加法与减法(补码)
上溢规则
减法规则 —— 减法,即加上减数的 2 的补
在实际的操作中,有 OF 溢出位记录是否溢出
# 整数的乘法
# 无符号整数的乘法
两个 n 为二进制整数的乘法可产生最大长度为 2n 位的积
乘
移位
计数 - 1
# 有符号整数的乘法
只要有一个是负数,原来的方法就不奏效
把被乘数和乘数都转变成正数再相乘,当两者初始的符号不相同时,结果取 2 的补
布斯(Booth)算法
分为 10 01 【00 11】三种情况讨论
运用公式, 2 n + 2 n-1 + ... + 2 n-k = 2 n+1 - 2 n-k
很巧妙,优雅,实在是太优雅了!
# 整数的除法
搞来搞去,也很优雅
# 浮点数加法和减法
- 检查 0
- 对齐有效值
- 加法
- 规格化
注意时时检查是否有效值为 0,以及是否溢出
若两个数的阶值差别非常大,则较小的数丢失
# 浮点数乘法和除法
由于阶值是移码的形式,相乘的时候,两个阶值的和要减去一个偏移量,相除的时候,两个阶值的差要加上一个偏移量
# 精度考虑
保护位
对齐的时候会导致丢失,在末尾增加保护位,可以扩展有效值的右端
舍入(不懂)
# 计算机组成与系统结构习题解答和教学指导
# 数据的表示
数值数据 —— 二进制、十进制(BCD binary coded decimal)
非数值数据
# 数据的宽度
数据容量和宽度
比特
字节
字(2 个 / 4 个 / 8 个 / 16 个字节)
# 数据的排列
- 大端排列 —— 最低有效字节 LSB 存放在大地址单元中,MSB 所在地址为数据的地址
- 小端排列 —— 最低有效字节 LSB 存放在小地址单元中,LSB 所在地址为数据的地址
# 数据校验方式
奇偶校验
海明校验
循环冗余码校验