【体系结构】第2章 数据表示、寻址方式与指令系统
作者:互联网
一、指令集架构
1、数据来源
- 累加器、堆栈、寄存器和存储单元
2、指令集架构的三种类型
- 面向累加器结构:累加器是唯一的暂存器
- 面向堆栈结构
- 面向寄存器结构:也称为面向通用寄存器架构(GPR),所有操作数均需命名,且显式表示
- 寄存器-寄存器(RR结构)
- 寄存器-存储器(RM结构)
3、指令指定操作数方式
- 显式: 用指令字中的操作数字段给出
- 隐式: 使用事先约定好的存储单元
二、寻址方式
1、寻址方式
- 处理器根据指令中给出的地址信息来寻找有效地址的方式,包括指令的寻址和指令中数据的寻址
- 指令寻址:顺序+非顺序
- 数据寻址:根据数据的来源采取不同的寻址方式
2、数据存放顺序
- 大端位序:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
- 小端位序:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
3、数据存放位置——对齐
-
字节编址,按字访问
-
从任意位置开始存贮和访问——不同长度的字节数据可存放在任何位置
- 优点:不浪费存贮空间;
- 缺点:访问一个变量或存贮单位可能要花2个存贮周期,因为有可能跨越2个存贮单元
-
从地址的整倍数位置开始访问(对齐)
- 双字(8个字节)-地址末3位为000: 0 开始的地址数
- 单字(4个字节)-地址末2位为00: 0,4 开始的地址数
- 半字(2个字节)-地址末位为0: 0,2,4,6 开始的地址数
4、地址组织方式
- 独立编址:通用寄存器、主存储器和输入输出设备均独立编址
- 混合编址:所有存储设备统一编址
5、寻址方式
-
立即数寻址方式
- 用于数据比较短且为源操作数
-
面向寄存器的寻址方式
OPC R
OPC R,R
OPC R,R,R
OPC R,M -
面向主存储器的寻址方式
OPC M
OPC M,M
OPC M,M,M -
面向堆栈的寻址方式:
OPC
OPC M
三、定位方式
1、程序的三种地址
- 符号地址:用符号表示的地址,类似于高级语言中的变量
- 逻辑地址:指令中给出的地址
- 物理地址:内存的实际地址
2、程序定位
- 把指令和数据中的逻辑地址(相对地址)转换成主存储器的物理地址(绝对地址)的过程。
3、程序定位方式
-
直接定位方式:编写程序时,或编译时,就已经知道该程序应该占用的主存物理空间
-
静态定位方式
-
前提条件:要求程序本身是可以重定位的
-
程序在运行之前,在装入主存储器的过程中集中一次完成地址变换
-
-
动态定位方式
-
在程序执行寻址时进行重定位,访问地址时,通过地址变换机构改变为内存地址,用户程序原封不动的装入内存,运行时再完成地址的定位工作
-
动态重定位需要硬件的支持
-
常用方法:基址寻址、页式、段式、段页式管理
-
四、数据表示
1、数据类型>数据结构>数据表示
- 数据类型:指一组数据值的集合,还定义了可作用于这个集合上的操作集
- 数据表示:用硬件实现的数据类型
- 其他:用数据结构实现。
2、整数表示
- 原码、反码、补码
- 移码:补码符号位取反,或,补码+偏移量bias
- BCD码:每四位二进制数表示一位十进制数
3、定点数表示
- 小数点固定地位于实数所有数字中间的某个位置。
4、浮点数表示
4-1 浮点数的格式
- 符号S\(~~~~\)阶码(指数)E \(~~~~\)尾数(有效数字位)1.M
- 符号S:$~~$1为负数,0为正数
- 尾数1.M: \(~~\)用原码,规格化原码尾数的最高位恒为1,该1在尾数中不表示出来,计算式在前面自动加1
- 阶码E:\(~~\)是2的幂,用移码表示(+偏移量)
- 为了处理负指数的情况,实际的阶码E按要求需要加上一个偏置(Bias)值。单精度是 127,双精度是 1023。产生指数的取值范围是:单精度为 -126~+127,双精度为 -1022 ~ +1023。
- 单精度: 32位=1 + 8 + 23
- 双精度: 64位=1 + 11 + 52
4-2 规格化浮点数实例
-
实数 -9.625,二进制1001.101,用规范的浮点数表达应为 1.001101×23
-
9.625 是负数,符号段为 1。指数为 3,所以指数段为 3+127=130,即二进制的 10000010。有效数字省略掉小数点左侧的 1 之后为 001101,然后在右侧用零补齐。因此所得的最终结果为
4-3 非规格化浮点数
- 当指数段 E 全为 0 时,所表示的数就是非规格化形式。在这种情况下有效数字的值 不包含隐含的开头的1,即(.M)
- 非规格化值有两个用途:
- 提供了一种表示数值 0 的方法
- 表示那些非常接近于 0.0 的数。此方案被称为逐渐下溢
5、舍入规则
- 向偶数舍入:两个相同接近的首选偶数
- Round(1.4)=1
- Round(1.5)=2
- Round(0.5)=0
- 向上舍入(向正无穷舍入)
- ceil(1.324)=2
- 向下舍入(向负无穷舍入)
- floor(1.324)=1
- floor(-1.324)=-2
- 向0舍入:截断
例题
-
向偶数舍入,保留两位
-
二进制(b)中,末位为0,为偶数,末位为1,为奇数
-
1、b(10.00011)=b(10.00)
-
2、b(10.00100)=b(10.00)
-
3、b(10.01100)=b(10.10)
小数部分后三位,范围在000~111,中间值为100(4),而题目为011,所以向近的舍入,011离000近,所以变成b(10.00000),保留两位,即b(10.00) 小数部分后三位,100,为中间值,向偶数舍入,向偶数舍入,而小数点第2位为0,是偶数,所以保持不变。 小数部分后三位,100,为中间值,在b(10.01)和b(10.10)中间,而小数部分前两位为01,奇数,所以向偶数靠近,选b(10.10)
6、向量数据表示
- 向量:指具有n个数据的数组,所有数据的性质相同
- 向量数据通常用基地址,长度和位移量三个参量表示,其中对于指令,操作向量的起始地址=基址+位移量,操作向量有效长度=向量长度-位移量
- 其中X,Y,Z各区段表示寄存器号,分别表示源向量A,B和结果向量的位移量,而A,B,C各区段分别存放源向量A,B和结果向量C的基地址及长度。
7、堆栈表示
8、阵列数据表示
五、指令系统设计原理和优化
1、指令格式 操作码 操作数
2、指令系统的优化——指令码的优化、地址码的优化
3、操作码优化
- 操作码的信息源熵:信息源所包含的平均最短信息量
其中\(P_i\)是第i个信息源的使用频度。
- 信息冗余量
3-1、等长编码
- 根据指令的条数确定编码的长度,每种指令的编码长度一样。
例
- 现设一台模型机,共有7种不同的指令,使用频度如表所示。
- 信息源熵:0.401.32+0.301.74+0.152.74+0.054.32+0.044.64+0.035.06+0.03*5.06=2.17
- 信息冗余量:1-2.17/3=0.28
3-2、哈夫曼编码
- 利用哈夫曼压缩思想对操作码进行编码
- 方法:使用频度从小到大排序;编号:左1右0
- 平均码长$=\sum P_iI_i= $ 0.401+0.302+0.153+0.055+0.045+0.035+0.03*5=2.20(位)
- 冗余度 K=1-2.17/2.20≈1.36%
- 哈夫曼编码
- 最优的变长码
- 码长变化大,不利于实现
3-3、扩展编码
- 限定几种码长,频度高的码点用短码表示,反之用长码表示。
- 码长表示法,用短横线前后的数字表示短码和长码的码长;
- 如4-8-12,表示编码的长度有三种分别是4位,8位,12位。
- 码点表示法,用斜线前后的数字表示短码码点的和长码码点的个数,
- 如15/15/15,表示有三种码长,各种码长的码点个数都是15位
- 例:已知频度序列为0.1,0.1,0.15,0.15,0.2,0.3,求Huffman编码、等长扩展3/3/3码、定长编码三者的平均码长、信息冗余量。
3-4、最优编码
- 短码都不能是长码的前缀
3-5、练习:
- 经统计,某机器14条指令的使用频度分别为:0.01, 0.15, 0.12, 0.03, 0.02, 0.04, 0.02, 0.04, 0.01, 0.13, 0.15, 0.14, 0.11, 0.03,请写出平均码长最短的扩展编码
4、地址码的优化
-
用一个较短的地址码表示一个比较大的逻辑地址空间
-
采用基址、变址、相对、等多种寻址方式,以缩短地址码的长度
六、指令集的发展和改进
1、一种指令集结构中的指令要支持哪些类型的操作?—— 两种截然不同的方向:
- CISC(Complex Instruction Set Computer,复杂指令集计算机)
- RISC(Reduced Instruction Set Computing,精简指令集计算机)
2、CISC
- 冯·诺依曼结构也称普林斯顿结构
- CISC代表:Intel X86
3、RISC
- 也称哈佛结构
- RISC代表:IBM power架构;ARM架构
- 目前,x86处理器占据了超过90%的个人电脑市场,以ARM为代表的RISC产品则同样占据了超过90%的移动计算市场。
4、RISC主要特征
- 只使用频度高的指令,减少指令种类
- 扩大通用寄存器数目,面向寄存器的寻址方式,采用LOAD-STORE架构
- 分开的存取指令数据,引入多级Cache
- 充分提高流水线效率(用各种技术减少相关阻塞)
- 采用硬逻辑控制方式(少数采用微程序设计)
- 采用优化编译技术,很好支持高级语言
5、RISC的关键技术
- 重叠寄存器窗口技术
- 延迟转移技术
-
在RISC处理机中,指令一般采用流水线方式工作。取指令和执行指令并行进行。然而,在遇到转移指令时,流水线就可能断流。
-
增加空指令、交换
-
- 优化编译技术
- 为了使RISC处理机中的指令流水线高效率地工作,尽量不断流。优化编译器必须分析程序的数据流和控制流,当发现指令流有断流可能时,要调整指令序列。
- 为了使RISC处理机中的指令流水线高效率地工作,尽量不断流。优化编译器必须分析程序的数据流和控制流,当发现指令流有断流可能时,要调整指令序列。
- 采用硬联控制与微程序固件相结合的技术
标签:舍入,指令系统,数据表示,地址,寻址,指令,OPC,码长 来源: https://www.cnblogs.com/qq1740656345/p/16243868.html