1.自定义数据表示
主要就是看看例题,比如计算不同类型的处理机中程序所占用的存储空间比等。
向量:为向量、数组数据结构的实现和快速运算提供个更好的硬件支持的方法是增设数据数据表示,组成向量机。这里不做详细介绍,后面会有这方面的章节。
2.浮点数表示方法
1.浮点数表示
尾数:
阶码:整数,移码(偏码、增码、余码)或补码
尾数基值:2、4、8、16和10进制等
r
m
r_m
rm
阶码基值:通常为2进制
尾数长度:尾数部分按机制计算的长度 m’
阶码长度:阶码部分的二进制位数 p
尾数决定了浮点数的表示精度、阶值决定了浮点数的表示范围
这一部分涉及大量的习题练习,要注意做。
2.规格化
小数点总是点在最高有效位的左边 0.1xx ×
2
e
2^e
2e
3.相关性质,涉及问答题
1)可表示数的范围:随着
r
m
r_m
rm的增大,可表示最小值减小,可表示最大值增大,即可表示数的范围增大了。
2)可表示数的个数:随着
r
m
r_m
rm的增大,可表示数的个数增大。
3)可表示的精度:
r
m
r_m
rm越大,在与
r
m
r_m
rm=2的浮点数相重叠的范围内,数的密度分布越稀疏,数的表示精度下降。
4)运算速度:
r
m
r_m
rm取大后,由于对阶或尾数溢出需要右移及规格化需左移的次数减少,运算速度提高。
4.尾数下溢
1)截断法:将尾数超出机器字长的部分截去。
2)舍入法:在机器运算的规定字长之外增设一位附加位,存放溢出部分的最高位,每当进行尾数下溢处理时,将附加位加1。
3)恒置“1”法:把有效字长的最低一位置置成
r
m
/
2
r_m/2
rm/2。
4)查表舍入法:用ROM或者PLA存放下溢处理表。
3.编址方式
1.大端小端
大端:指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端:指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
2.高位交叉
用来扩大存储器容量
3.低位交叉
用来提高存储器速度
模m低位交叉编址:单体容量为l的m个分体,其
M
j
M_j
Mj的编址模式为mxi+j,其中i=0,1,2,…,l-1,j=0,1,2,…,m-1
寻址规则:
体地址:j=A/m
体内地址 i=A mod m
4.寻址方式
寻址方式的设计思想:
1)立即数寻址:直接在指令中给出操作数,用于数据比较短,且为源操作数的场合
2)面向寄存器的寻址方式:指令在执行过程中所需要的操作数来自于寄存器,运算结果也写回到寄存器中。
3)面向主存储器的寻址方式:
直接寻址:在指令中直接给出参加运算的操作数及运算结果所存放的主存地址
间接寻址:指令中给出的是操作数地址的地址,必须经过两次(或更多)的访主存操作才能得到操作数。
变址寻址(相对寻址、基址寻址):指令执行时,用一个硬件加法器,把变址寄存器中给出的基地址加上指令中给出的偏移量,才能得到有效地址。
4)面向堆栈的寻址方式
5.定位方式
直接定位方式:在程序装入主存储之前,程序中的指令和数据的主存物理就已经确定了
静态定位:在程序装入主存储器的过程中随机进行地址变换,确定指令和数据的主存物理地址
动态定位:在程序执行过程中,当访问到相应的指令或数据时才进行地址变换,确定指令和数据的主存物理地址。
6.指令的组成
地址码通常包括三部分内容:
地址
地址的附加信息
寻址方式
操作码包括两部分内容:
操作种类
操作数描述
7.操作码的优化
1.固定长度
规整,译码简单,但是浪费信息量。
2.Huffman编码法
1)概念:当各种事件发生的概率不均等时,采用优化技术,对发生概率较高的事件用最短的位数(时间)来表示(处理),而对出现概率较低的事件允许使用较长的位数(时间)来表示(处理),使表示(处理)的平均位数(时间)缩短。
2)操作码的最短平均长度:
H
o
p
t
=
−
∑
i
=
1
n
p
i
∗
log
2
p
i
H_{opt}=-\sum_{i=1}^{n}p_i*\log_2p_i
Hopt=−∑i=1npi∗log2pi
其中
p
i
p_i
pi表示第i种操作码在程序中出现的概率。
3)固定长编码相对于最优Huffman编码的信息冗余量:
R
=
1
−
H
o
p
t
c
e
i
l
(
log
2
n
)
R=1-\frac{H_{opt}}{ceil(\log_2n)}
R=1−ceil(log2n)Hopt
4)操作码的平均长度:
H
=
∑
i
=
1
n
p
i
∗
l
i
H=\sum_{i=1}^np_i*l_i
H=∑i=1npi∗li
5)Huffman编码的信息冗余量为
R
=
1
−
H
c
e
i
l
(
log
2
n
)
R=1-\frac{H}{ceil(\log_2n)}
R=1−ceil(log2n)H
6)优缺点
不规整,译码困难
3.扩展编码
没看懂。。。。