2.数据表示、寻址方式与指令系统
2. 数据表示、寻址方式与指令系统
重点
一、浮点数尾数基值的选择和下溢处理🌟
1.浮点数尾数基值的选择
基值rm:尾数采用的进制
尾数的数位m’:长度为m的机器位数中,能存放几个rm位的数
- 若rm=2,则m’ = m
- 若rm=16,则 m’ = m/4
阶值所占位数p
N = 尾数 * rme
条件:
- 非负阶
- 规格化:正尾数小数点后第一个rm进制数位不为0
- 正尾数
影响:
- 数的范围:rm增大,可表示数的范围增大
- 数的个数:rm增大,可表示数的个数增大
- 数轴分布:rm增大,重叠范围内数的密度稀疏
- 数的精度:rm增大,可表述数的精度下降
- 精度损失:rm增大,数的精度损失减小
- 运算速度:rm增大,运算速度提高
2.浮点数尾数下溢的处理方法
截断法:将尾数超过机器字长的部分截取
- 实现简单、不增加硬件
- 最大误差较大,平均误差大且无法调节
- 很少使用
舍入法:增加一位附加位,类似于四舍五入
- 实现简单,增加硬件少
- 最大误差小,平均误差接近于0且无法调节
- 处理速度慢
恒置“1”法:最低为恒置“1”
- 实现最简单,不需要增加硬件与处理时间
- 平均误差趋于0,最大误差最大
查表舍入法:根据情况选用截断法或舍入法
- 硬件量大
- 平均误差可调节到0
- 速度较快
二、自定义数据表示
1.标识符数据表示
定义:将数据类型与数据本身直接练习在一起 数据(字) = 类型标志 + 数据值
优点:
- 简化了指令系统和程序设计
- 简化了编译程序
- 便于实现一致性校验
- 能由硬件自动变换数据类型
- 支持数据库系统的实现与数据类型无关的要求,使程序不用修改即可处理多种不同类型的数据
- 位软件调试和应用软件开发提供了支持
问题:
- 每个数据字因增设标识符,会增加程序所占的主存空间
- 采用标志符会降低指令的执行速度
2.数据描述符
定义:描述符与数据分开存放,用以描述要访问的数据是整块的还是单个的,访问该数据块或数据元素的地址及其他信息
优点:描述符可用于块内所有元素,不必每次访存取元素时都去访存描述符。一条指令就能执行对整个数据块的运算。
三、再定位技术
当程序装入主存时,就需要进行逻辑地址空间到物理地址空间的转换,即进行程序的定位
1.静态再定位
目的程序装入主存时,由装入程序用软件方法把目的程序得逻辑地址变换成物理地址。
问题:
- 指令地址码被修改,会因一道程序地址改错而影响其他程序
- 指令允许修改妨碍了程序的可重入
- 指令被修改,不利于程序出错时得故障定位和程序调试
- 给重叠、流水技术得采用带来了困难
2.动态再定位
程序执行时,只通过地址加法器将逻辑地址加上基址寄存器的程序基址形成物理(有效)地址后去访存
变址寻址:对诸如向量、数组等数据块运算得支持,以便实现程序的循环
基址寻址:逻辑地址空间到物理地址空间变换得支持,以实现程序的动态在定位。
3.虚实地址映像表
四、信息按整数边界存储
信息再主存中存放得地址必须是该信息宽度的整数倍
保证了访问速度,但造成了存储空间的浪费
五、操作码优化
1.哈夫曼编码
构造哈夫曼树
2.拓展操作码
原则:短码不能是长码的前缀
例题:若某机要求有:三地址指令4条,单地址指令255条,零地址指令16条。 设指令字长为12位,每个地址码长为3位。能否以扩展操作码为其编码?如果单地址指令 改为254条呢?
- 三地址指令4条,操作码共3位,操作码为:0XX,共四条
- 单地址指令255条,操作码共9位,为 1XX XXX XXX 共28=256个,剩余 111 111 110
- 0地址指令共16条,操作码共12位,111 111 110 XXX最多8条,不可以
六、指令格式的优化设计🌟
用最短的位数来表示指令的操作信息和地址信息,使程序中指令的平均字长最短
措施:
- 采用拓展操作码,并选择合适的编码方式,以缩短操作码的平均码长
- 采用多种寻址方式,缩短地址码长度,并在有限的地址长度内提供更多地址信息
- 采用0、1、2、3等多种地址制,增强指令的功能,宏观上缩短程序的长度,加快程序的执行速度
- 同种地址制内采用多种地址形式,使每种地址字段有多种长度,让长操作码与短地址码组配
- 维持指令字再存储器中按整数边界存储的前提下, 使用多种不同的指令字长度
七、指令系统改进途径
CISC缺点:
- 指令系统庞大
- 许多指令操作繁杂,执行速度低,不如简单指令的组合
- 高级语言编译程序选择目标指令的范围太大,难以优化生成高效机器语言程序,编译程序过长、复杂
- 指令的使用频度不高,且差别大,相当一部分指令利用率很低
RISC优点:
- 简化了指令系统设计,适合VLSI实现
- 提高了机器的执行速度和效率
- 降低了设计成本
- 可直接支持高级语言的实现,简化编译程序的设计。
八、RISC思想及所采用的基本技术
思想:
- 精简指令的条数
- 简化指令的格式
- 指令字等长,且都在一个机器周期内执行完
- 扩大机器中通用寄存器的个数,只让存、取两类指令访存
- 指令的实现以组合电路硬联实现为主,少量指令采用微程序解释
- 设计高质量编译程序来优化支持高级语言程序的实现
技术:
- 按设计RISC机器的一般原则来精选和优化设计指令系统
- 逻辑上采用组合电路硬联为主,少量指令采用微程序解释
- CPU内设置大量寄存器,并采用重叠寄存器组的窗口
- 指令采用重叠和流水的方式解释,采用延迟转移
- 采用高速缓冲器Cache缓冲指令和数据
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 喵喵虎冲呀!
评论