C2 数据表示、寻址方式与指令系统
1 数据表示
-
数据表示
-
定义:机器硬件能直接识别和引用的数据类型
-
条件:相应的运算指令和运算硬件(处理部件)
-
分类:基本数据表示、高级数据表示、自定义数据表示
-
目标:缩小高级语言和机器语言间的语义差别;提高性能/价格;节省处理时间和存储空间
-
实现:最小的存储空间、最简单的存取算法
tips:数据表示是数据类型的子集
数据表示的确定实质上是软、硬件的取舍问题
-
-
数据结构
- 目标:最大限度满足应用要求、最简化的方法实现
- 实现:通过数据表示和软件映象相结合方法实现
-
数据表示&数据结构
数据表示 数据结构 实现 由硬件实现的数据类型 由软件实现的数据类型 是软硬件的界面 是软硬件的界面 -
高级数据表示
-
自定义数据表示
-
带标识符的数据表示(对高级程序员透明)
优点 缺点 简化指令系统和程序设计 使程序所占用的主存空间增加 简化编译程序 降低指令的执行速度 便于一致性校验 必须用专门的指令完成标识符的初始化 能由硬件自动完成数据类型的变换 支持数据库系统的实现与数据类型无关的要求 为软件调试和应用软件开发提供支持 -
数据描述符(描述复杂和多维的结构类型)
-
带标识符与数据描述符的区别
- 标识符是和每一个数据相连的,合存在一个存储单元中,描述单个数据的类型特征
- 描述符是个数据分开放的
-
-
向量数组数据表示
-
堆栈数据表示
- 有利于编译和子程序调用
- 有丰富的堆栈操作类指令且功能很强
- 有力的支持高级语言程序的编译、逆波兰表达式
- 有力的支持子程序的嵌套和递归调用
-
-
引入数据表示的原则
- 看系统的效率是否提高、是否减少了 实现时间和所需的存储空间
- 看引入数据表示后,其通用性和利用率是否高
-
浮点数尾数下溢处理方法
- 截断法
- 舍入法
- 恒置“1”法
- 查表舍入法
2 寻址方式
- 寻址方式:指令按什么方式寻找(访问)到所需的操作数或信息的
- 寻找操作数及其地址的技术成为寻址技术
- 编址方式
- 定义:对各种存储设备进行编码的方法
- 编址单位:字编址、字节编址、位编址 、块编址
- 字节编址
- 优点:有利于符 处理
- 缺点:地址信息浪费、存储器空间浪费、读写逻辑复杂、大端与小端问题
- 寻址方式分析
- 面向主存
- 面向通用寄存器
- 面向堆栈
- 寻址方式种类
- 寄存器寻址
- 立即寻址
- 直接寻址
- 间接寻址
- 相对寻址
- 变址寻址
- 寄存器间接寻址
- 自增自减寻址
- 比例寻址
- 逻辑地址与主存物理地址
- 逻辑地址是程序员编写程序时使用的地址
- 物理地址是程序在主存中的实际地址
- 映射实际上是压缩
- 定位方式(重定位)
- 程序需要定位的主要原因
- 程序的独立性
- 程序的模块化设计
- 数据结构在程序运行过程中,其大小往往是变化的
- 有些程序本身很大,大于分配给它的主存物理空间
- 主要的定位方式
- 直接定位方式(程序装入主存之前,指令和数据的主存已经确定)
- 静态定位(程序装入主存的过程中进行地址变换,确定 指令和数据的地址)
- 动态定位(在程序执行过程中,当访问到相应的指令或数据时才进行地址变换)
- 程序需要定位的主要原因
3 指令系统的设计和优化
-
指令系统是从程序设计者看到的机器的主要属性,是软硬件分界面的一个主要标志
-
指令系统的设计主要包括指令功能和指令格式的设计
-
指令类型:
- 非特权型:供应用程序员用,也可供系统程序员使用,包括算术逻辑运算、浮点运算…
- 特权型:供系统程序员,用户无权使用,包括启动I/O、停机等待、存储管理保护…
-
指令系统设计的基本原则—>如何支持编译系统能高效、简易地将源程序翻译成目标代码
- 规整性
- 对称性
- 独立性和全能性
- 正交性
- 可组合性
- 可扩充性
-
指令的组成—–>操作码+地址码
-
操作码
- 操作种类:加、减、乘、除、数据传送、移位、转移、输入输出
- 操作数描述
-
地址码
- 地址:直接地址、间接地址、立即数、寄存器编 、变址寄存器编
- 地址的附加信息:偏移量、块长度、跳距
- 寻址方式:直接寻址、间接寻址、立即数寻址、变址寻址、相对寻址、寄存器寻址
-
操作码
-
指令操作码的优化
-
操作码的三种编码方法
-
固定长度
-
Huffman编码(又叫最小概率合并法)
-
扩展编码
三种编码方法对比 固定长度 Huffman编码 扩展编码 规整性 好 不好 折衷 解码 简单 复杂 折衷 占用空间 大 小 折衷
-
-
操作码的优化表示
-
信息源熵:
H = ∑ p i l o g 2 p i H=-sum p_ilog_2p_i H=/span>∑pi/span>log2/span>pi/span> -
信息冗余量:
操 作 码 的 实 际 平 均 长 度 H 操 作 码 的 实 际 平 均 长 度 frac {操作码的实际平均长度-H}{操作码的实际平均长度} 操作码的实际平均长度操作码的实际平均长度/span>H/span>
-
-
Huffman编码
例1
假设一台模型计算机共有7种不同的操作码,如果采用固定长操作码需要3位。已知各种操作码在程序中岀现的概率如下表,计算采用 Huffman编码法的操作码平均长度,并计算固定长操作码和 Huffman操作码的信息冗余量。
指令 I1 I2 I3 I4 I5 I6 I7 概率 0.45 0.30 0.15 0.05 0.03 0.01 0.01 解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OC4WsDeS-1625152669956)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20210626150051230.png)]
操 作 码 平 均 长 度 = 0.45 1 + 0.3 2 + 0.15 3 + 0.05 4 + 0.03 5 + 0.01 6 + 0.01 6 = 1.97 操作码平均长度=0.45*1+0.3*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=1.97 操作码平均长度=0.45/span>1+0.3/span>2+0.15/span>3+0.05/span>4+0.03/span>5+0.01/span>6+0.01/span>6=1.97熵 H = ( 0.45 l o g 2 0.45 + 0.30 l o g 2 0.30 + + 0.01 l o g 2 0.01 ) = 1.95 熵H=-(0.45*log_20.45+0.30*log_20.30+cdots+0.01*log_20.01)=1.95 熵H=/span>(0.45/span>log2/span>0.45+0.30/span>log2/span>0.30+/span>+0.01/span>log2/span>0.01)=1.95
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
-