• / 140
  • 下载费用:10 金币  

第2章 数据表示与指令系统性能分析.ppt

关 键 词:
第2章 数据表示与指令系统性能分析.ppt
资源描述:
2019年10月18日星期五,1,第1章 计算机系统设计基础 第2章 数据表示与指令系统性能分析 第3章 通道处理机 第4章 流水技术和向量处理 第5章 阵列计算机 第6章 多处理机系统 第7章 其它计算机结构,2019年10月18日星期五,2,第2章 数据表示与指令系统性能分析,浮点数据表示和IEEE754标准 高级数据表示 寻址方式与指令格式的优化设计 指令系统设计的两种风格,2019年10月18日星期五,3,本章学习要求,本章要点:机器的数据表示,特别是浮点数据表示;指令格式的优化设计技术;RISC的关键技术。 指令系统和数据表示是计算机系统结构的主要属性。,2019年10月18日星期五,4,2.1 浮点数据表示和IEEE754标准,数据表示与数据结构 引入数据表示的原则 浮点数据基值大小和下溢处理方法的选择,2019年10月18日星期五,5,定义:具有一组值的集合,且定义了作用于该集合的操作集 分类:基本类型、结构类型基本数据类型: 二进制位、二进制位串、整数、十进制数、浮点数、字符、布尔数等 大多数计算机系统结构都支持基本数据类型,2019年10月18日星期五,6,结构数据类型:由一组相互有关的数据元素复合而成的数据类型 数组、字符串、向量、堆栈、队列、记录等 大多数系统结构只能部分地支持结构数据类型,2019年10月18日星期五,7,定义:机器硬件能直接识别和引用的数据类型 分类:基本数据表示、高级数据表示、自定义数据表示,实际系统中,简单的、常用的、通用的数据类型采用数据表示(如int、 float、stack等);复杂的数据结构一般通过数据结构或通过软硬件联合设计实现(如table、 graph、tree等),2019年10月18日星期五,8,数据表示:指的是能由机器硬件直接识别和引用的数据类型。 由硬件实现的数据类型,数据结构:反映数据元素之间的结构关系,面 向计算机系统软件、面向应用领域所需处理的数据类型。 由软件实现的数据类型,2019年10月18日星期五,9,数据结构与数据表示的关系:--数据表示是数据结构的一个子集-- 数据表示是软、硬件界面的一部分;数据结构是软件和应用的一分--数据表示的确定实质上是软硬件的取舍问题--数据结构的发展总是优先于机器的数据表示, 系统结构设计者应尽可能为数据结构的实现提供更多的支持,2019年10月18日星期五,10,原则1:系统的效率是否提高,是否减少了实现时间和所需的存储空间 举例: 两个200*200的二维定点数组相加 无阵列型: 6条指令, 4条循环200*200=40000 有阵列型: 1条指令, 减少4*40000=160000字,原则2:通用性和利用率是否高通用性: 是否对多种数据结构均适用 利用率: 硬件设置大小的选择,2019年10月18日星期五,11,三大特点:表数范围、表数精度和表数效率 关键问题:在数据字长确定的情况下,找到具有最大表数范围、最高表数精度和最大表数效率的浮点数表示方式,浮点数的表示需要六个基本参数:尾数m、阶码e的值;尾数的基rm、阶码的基re、尾数长度p(不包括符号位)、阶码长度q,2019年10月18日星期五,12,浮点数的一般格式:对任意浮点数N,可表示为:,,,,其中:,在尾数采用原码、纯小数,阶码采用移码的浮点 数表示方式中,规格化浮点数N的表数范围如下:,2019年10月18日星期五,13,进一步得出浮点数在数轴上的分布情况如图示:,由以上分析可知,能表示的绝对值最大的浮点数可近似为:,可见,规格化浮点数的表数范围主要与阶码的长度q和尾数的基值rm有关,表数范围随着q和rm的增加而扩大,2019年10月18日星期五,14,表数精度也称为表数误差,浮点数存 在表数精度的根本原因是由于浮点数的不连续性造成的。,例如:当q=1,m=2,rm=2,能表示的正规格化数是: 1/8,3/16,1/4,3/8,1/2,3/4,1,3/2(共8个数) 如果有1/2+3/4=5/4,则5/4不在这个浮点数集内。 只能用1,或3/2来表示。,在一般情况下,认为规格化尾数最后一位的精确度是一半,表数精度则可表示为如下形式:,2019年10月18日星期五,15,结论:当浮点数的尾数长度相同时,尾基为2时具有最高的表数精度,在机器中,一个rm进制的基值需用m’个二进制位表示,其中因此,尾数m的实际数位k为:,2019年10月18日星期五,16,,,2019年10月18日星期五,17,结论:浮点数的表数效率主要与尾数的基值有关。当尾基为2时,表数效率最低 如:,小结:浮点数尾数基值rm越大,表数范围越大,表 数精度降低,表数效率越高.,2019年10月18日星期五,18,重点:在机器字长一定的情况下,如何选择尾数的基值,使浮点数的表数范围最大,表数精度和表数效率最高? 分析: 设浮点数表示方式F1:尾数基值rm1=2,尾数长度p1,阶码长度q1,二进制字长:L1=p1+q1+2浮点数表示方式F2:尾数基值rm2=2k,尾数长度p2,阶码长度q2,二进制字长: L2=kp2+q2+2,2019年10月18日星期五,19,,,,(1) 当L1=L2,且 时,分析尾数基值和表数精度的关系:,将上式代入p1+q1=kp2+q2可得:,(注:p1用p2来表示,后面分析有用),2019年10月18日星期五,20,F1的表数精度是(由教材公式2.2得):,F2的表数精度是:,2019年10月18日星期五,21,2019年10月18日星期五,22,由上式可见,只有当K=1(rm=2)或K=2(rm=4)时,T=1,否则T1。由此得出结论:结论1:在浮点数的字长和表数范围一定时,尾数基值取2或4具有最高的表数精度,(2) 当L1=L2,且 时,分析尾数基值和表数范围的关系:,2019年10月18日星期五,23,注:只有当k=1或k=2时,才有,2019年10月18日星期五,24,结论2:当浮点数的字长和表数精度确定后,尾数基值取2或4时,具有最大的表数范围 综合结论:当机器字长确定后, rm取2或4时,具有最大的表数范围和最高的表数精度(但表数效率低),由于rm=2时,η=50%。但规格化浮点数尾数的最高位一定为1,故可以隐藏或省去,此时η=100%,这就是尾基为2时的隐藏位表示方法,2019年10月18日星期五,25,四种格式 单精度格式: 32位, 阶码E=8位, 尾数M=23位 扩展单精度: E=11位, M≥32位 双精度格式: 64位, E=11位, M=52位 扩展双精度: E=15位, M≥63位 单精度格式: S(符号1位) E(阶码8位) M(尾数23位),2019年10月18日星期五,26,双精度格式: S(符号1位) E(阶码11位) M(尾数52位),2019年10月18日星期五,27,IEEE754单精度浮点数格式: S=0, 正数; S=1, 负数 E由8位二进制移码组成 00000000: 特殊数 00000001: 1 代表: 1-127=-126 …… 规格化数 11111110: 254 代表: 254-127=127 11111111: 特殊数 M: 尾数, 原码表示的纯小数(规格化,隐含1),2019年10月18日星期五,28,若E=0且M=0,N为0; 若E=0且M≠0,N=(-1)S·2-126 ·(0.M),非规格化数; 若1≤E≤254,N=(-1)S·2E-127 ·(1.M),规格化数; 若E=255且M ≠ 0,N=NaN(非数值); 若E=255且M = 0,N= (-1)S ∞(无穷大)。,2019年10月18日星期五,29,例题: 1.将IEEE754单精度数(8位十六进制表示)转换为十进制数 (1) C0A00000H (2)3F880000H 2.将十进制数9和5/32转换为IEEE754标准的单精度数, 并用8位十六进制表示,1解: (1) C0A00000H =1 10000001 01000000000000000000000 =(-1)1× 2129-127×(1.25) =-1×22×1.25 =-1.25×4=-5.0D,2019年10月18日星期五,30,(2)3F880000H =0 01111111 00010000000000000000000B =(-1)0×2127-127×(1.0625)=20×1.0625 =1×1.0625=1.0625D,2解: (1)9= (-1)0×1001=(-1)0×23 ×1.001 =(-1)0×2130-127 ×1.001 二进制代码为: 0 10000010 00100000000000000000000B= 41100000H,2019年10月18日星期五,31,(2) 5/32=(-1)0×0101×2-5=(-1)0×2-5×22×1.01 =(-1)0×2124-127 ×1.01 二进制代码为: 0 01111100 01000000000000000000000B= 3E200000H,2019年10月18日星期五,32,考虑运算的处理方法,主要有截断法、舍入法、恒置1法、查表舍入法,是在速度、误差、造价、实现方便等多方面的综合权衡 性能指标:最大误差和平均误差及实现成本,下溢处理时应注意的问题: 先规格化,然后舍入处理; 计算平均误差时,要同时考虑正数区和负数区; 在处理负数时,要注意不同的码制。,2019年10月18日星期五,33,截断法(恒舍法),将尾数超出机器字长的部分简单截去。处理简单,不增加硬件,不需额外处理时间。 在正数区是负误差,负数区是正误差。当正、负数分别考虑时平均误差最大。 应用在精度要求不高的场合。小型及微型计算机普遍采用。,2019年10月18日星期五,34,舍入法(下舍上入法),机器运算部分的规定字长之外增设一个附加位,存放溢出部分的最高位。每当进行尾数下溢处理时,检测溢出部分值是否大于或等于二分之一基值 实现简单,增加硬件少,最大误差小,平均误差接近0 在中低速机器上或要求精度损失尽可能小的场合下使用较多,2019年10月18日星期五,35,恒置“1”法,机器运算部分的规定字长之最低位恒置成“1”状态 实现简单,不需要增加硬件和处理时间。最大误差最大,比截断法的还要大 使用较多,适合于中高速机器,2019年10月18日星期五,36,查表舍入法,用ROM或PLA存放下溢处理表,是截断法和舍入法的综合 平均误差可调节到趋于0(用截断法的负误差弥补舍入法的正误差),是一种很有前途的实现方法 需要增加一定的硬件设备量,2019年10月18日星期五,37,查表舍入法原理,2019年10月18日星期五,38,查表舍入法举例,例:由4位二进制尾数(最低位为附加位)组成的ROM查表法,下溢处理成3位二进制结果。请设计下溢处理平均误差接近于0的ROM表。,2019年10月18日星期五,39,2019年10月18日星期五,40,2.2 高级数据表示,自定义数据表示(Self-defining) 带标志符的数据表示 数据描述符 向量数组数据表示 堆栈数据表示,2019年10月18日星期五,41,引入思想: 减小高级语言和机器语言的语义差距,减轻编译软件的工作量 分类 带标志符数据表示 数据描述符,2019年10月18日星期五,42,大多数计算机存储数据的属性由指令中的操作码解释,类型:如定点、浮点、字符、字符串、逻辑数、向量等 进位制:如二进制、八进制、十进制、十六进制等 字长:如字、半字、双字、字节等 寻址方式:如直接、间接、相对、寄存器寻址等 功能:如地址、数值、控制字、标志等,2019年10月18日星期五,43,IBM370系列计算机中的加法指令,2019年10月18日星期五,44,高级语言中数据的属性在数据引用前给以定义,如C语言中常用的基本数据类型:int 基本整型,即定点数;short为短整型;long为长整型;float为短浮点型;double为长浮点型;等等 加法指令只有一条:A=A+B 编译器根据定义生成不同的加法指令,2019年10月18日星期五,45,1.带标志符数据表示,定义:用以定义某个数据的数据类型和数值的数据表示。格式如下:,类型标志主要用于指明数据类型(如二进制整数、十进制整数等,也可用于指明机器内部所用信息的各种类型) 标志符由编译程序建立,对高级语言程序来说是透明的,2019年10月18日星期五,46,70年代生产的R-2试验性计算机中采用的10标志符,功能:操作数、指令、地址、控制字 陷井:由软件定义4种捕获方式 封写:只读或可读可写 类型:16种不同的数据类型,与功能配合 校验:奇偶校验,2019年10月18日星期五,47,优点: 简化指令系统和程序设计 简化了系统程序和编译程序的设计 便于一致性校验 能由硬件自动完成数据类型的变换 支持数据库系统的实现与数据类型无关的要求 为软件调试和应用软件开发提供支持 缺点: 使程序所占用的主存空间增加 降低指令的执行速度 必须用专门的指令完成标志符的初始化,2019年10月18日星期五,48,引入可行性分析 存储空间是否提高?,2019年10月18日星期五,49,实现时间是否减少? 专门的指令用于标志符初始化,增加了辅助开销 指令执行过程中,对每个标志符进行逐个解释,并判断数据是否相容,因此单条指令的执行速度降低,但宏观执行时间减少 宏观时间=设计时间+编译时间+调试时间,结论 运行时间增加,存储空间减少。 通用机中不使用,专用机(支持动态数据类型)中使用,2019年10月18日星期五,50,2.数据描述符,目的:描述复杂和多维的结构类型,进一步减少标志符所占的存贮空间 格式:,举例: 现以美国Burroughs公司的B6500,7500为例进行自定义数据表示的说明,格式如下:,2019年10月18日星期五,51,2019年10月18日星期五,52,优点: 实现阵列数据的索引比变址方法实现要快,而且能检查程序设计中阵列越界错误 为向量、数组数据结构的实现提供一定的支持,有利于简化编译中的代码生成 引入可行性分析:同带标志符的数据表示 描述符的工作过程如下图,2019年10月18日星期五,53,2019年10月18日星期五,54,2019年10月18日星期五,55,3.两种自定义数据表示的区别,标志符是和每一个数据相连的,合存在一个存储单元中,描述单个数据的类型特征 描述符是和数据分开存放的,专门用来描述所要访问的数据是整块数据还是单块数据,访问该数据块或数据元素所需要的地址以及其他特征信息等,2019年10月18日星期五,56,向量的表示 向量通常是指由标量的一组有序集合表示的量,类似于一维数组,但又有所不同 标量通常只是一个整数或实数 数组 A=(a0,a1,a2,…,an-1) 向量在主存储器中的存放原则:规律性、地址计算简单、访存冲突小 元素相邻存放 元素等间距存放,2019年10月18日星期五,57,举例:计算 ci=ai+bi, I=10,11,…,1000 无向量数据表示(C语言): for(i=10; i=1000; i++)c[i]=a[i]+b[i]; 向量数据表示: C(10:1000)=A(10:1000)+B(10:1000) 向量存储的数据 基地址、位移量、向量长度 格式如下:,2019年10月18日星期五,58,注:向量起始地址=基址+位移量向量有效长度=向量长度-位移量,2019年10月18日星期五,59,举例:计算C(4:11)=A(4:11)+B(-4:3),向量起始地址=基址+位移量 向量有效长度=向量长度-位移量,2019年10月18日星期五,60,描述符数据表示与向量数据表示 对向量数据结构提供的支持有何不同?,在描述符数据表示的机器中,只能提供描述符寄存器和简单的地址形成逻辑等硬件,虽能支持向量数据结构的运算,但运行速度较慢。 在向量数据表示的机器中,有丰富的向量运算指令,有大量的向量寄存器和并行、高速流水运算部件的支持,可以实现向量运算的高速执行。,2019年10月18日星期五,61,稀疏向量的压缩 采用隐蔽位向量方法 存取过程如图示:,2019年10月18日星期五,62,具有堆栈数据表示的机器的两个特点: 1.有若干高速寄存器组成的硬件堆栈,并附加控制电路让它与主存中的堆栈区在逻辑上组成一个整体,使堆栈的访问速度是寄存器的,堆栈的容量是主存的 2.有很丰富的堆栈操作类指令且功能很强,直接可对堆栈中的数据进行各种运算和处理,2019年10月18日星期五,63,2.有力地支持子程序的嵌套和递归调用 减少大量辅助性工作 多使用零地址指令 存储效率高,,1.有力地支持高级语言程序的编译;逆波兰表达式 如:F=A*B+C/(D-E) 逆波兰表达式:AB*CDE-/+,具有堆栈数据表示的机器的两个优点:,2019年10月18日星期五,64,2019年10月18日星期五,65,2.3 寻址方式与指令格式的优化设计,寻址方式分析 程序定位技术 指令格式的优化设计,2019年10月18日星期五,66,寻址方式:是指令按什么方式寻找(访问)到所需的操作数或信息的,操作数或信息存储位置: 主存、寄存器、堆栈、控制寄存器等.,寻址方式在指令中的指明方式: 占用操作码位:DJS200系列指令系统中8位操作码最高两位. 在地址码字段:VAX-11指令中源和目的各有4位寻址方式位字段,2019年10月18日星期五,67,寻址方式分类(三类): 面向主存:主要访问内存,少量访问寄存器 op m1 m2(方式灵活,寻址范围大) 面向寄存器:多数在寄存器,少量在内存 op r m 、op r1 r2(指令字长短,速度快) 面向堆栈:主要在堆栈,可减轻编译负担 op、 op m 、op r(指令字长短,支持编译),多种寻址方式共存:立即寻址、直接寻址、间接寻址、相对寻址、变址寻址,2019年10月18日星期五,68,寻址方式分析 多种寻址方式可以显著减少程序的指令条数,但这同时也可能增加实现的复杂度和使用这些寻址方式的指令的执行时钟周期数(CPI),故需对多种寻址方式进行分析 可使用频带分析法.,例:在VAX-11指令集机器上运行gcc、Spice和Tex基准程序,并对各种寻址方式的使用情况进行统计,可以得到如图所示的统计结果(这里只给出了使用频率超过1%的那些寻址方式),2019年10月18日星期五,69,寻址方式选择: 偏移寻址和立即寻址使用频率很高,必须支持这两种方式;对其他寻址方式,则应根据软、硬取舍原则进行选择。,2019年10月18日星期五,70,逻辑地址:程序员编写程序时使用的地址 物理地址:程序在主存中的实际地址 一般来讲,逻辑地址的空间大于物理地址的空间。因此,映射实际上是压缩。,2019年10月18日星期五,71,程序定位技术 直接定位:程序装入前,程序中的指令和数据的主存物理地址就已经确定了的方式 静态再定位:用软件方法把目标程序的逻辑地址变换成物理地址,而在程序的执行过程中,物理地址不再改变 动态再定位:在执行每条指令时才形成访存物理地址的方法。通过基址寻址(硬件)来实现,变址寻址:支持向量、数组,实现循环 基址寻址:支持逻辑地址到物理地址的变换,实现动态再定位,2019年10月18日星期五,72,保证访存速度(保证在一个主存周期至少可取得一条指令),造成存储空间浪费。,2019年10月18日星期五,73,指令 = 操作码 + 地址码 指令格式的优化:如何用最短的位数来表示指令的操作信息和地址信息,使程序中指令的平均字长最短 主要目标 节省程序的存储空间 指令格式尽量规整,便于译码,2019年10月18日星期五,74,操作码主要包括两部分内容操作种类描述: --加减乘除、数据传送、移位、转移、I/O操作数描述: --数据类型:定点、浮点、字符(串)、逻辑数、向量 --进位制:2、10、16进制 --数据字长:字节、半字、字、双字,2019年10月18日星期五,75,地址码通常包括三部分内容 地址: 直接、间接地址,立即数,寄存器编号,变址寄存器编号 地址的附加信息: 偏移量、块长度、间距 寻址方式: 直接、间接、立即数、变址、相对寄存器寻址,操作码的三种编码方法 等长编码: 规整性好, 解码简单, 空间大 Huffman编码: 空间小, 规整性不好, 解码复杂 扩展编码: 折衷方案,2019年10月18日星期五,76,哈夫曼(Huffman)压缩 当各种事件发生的概率不均等时, 采用优化技术对发生概率最高的事件用最短的位数(时间)来表示(处理), 而对出现概率较低的允许用较长的位数(时间)来表示(处理), 以达到平均位数减少的目的 用于代码压缩、程序压缩、空间压缩和时间压缩,操作码的优化表示就是要使信息冗余量最小,2019年10月18日星期五,77,操作码的优化表示 信息源熵:信息源包含的平均信息量H即为操作码可以达到的最短平均码长 实际编码的操作码码长为:信息冗余量,2019年10月18日星期五,78,例1.七条指令,频度如下I1 I2 I3 I4 I5 I6 I7 0.4 0.3 0.15 0.05 0.04 0.03 0.03 信息源熵 H=2.171.等长编码可用000~110来分别表示7种不同的指令 信息冗余量R=(3-2.17)/3=0.28=28%,2019年10月18日星期五,79,2.哈夫曼编码 表示方法:哈夫曼树 实现方法:(1)将事件按出现频率次序排列;(2)将出现频率最小的两个事件合并(频率相加)后,再按出现频率次序重新排列;(3)继续过程(2),直至剩下一个频率(构成一棵树);(4)置树中每左和右子树分别为1和0,直至叶结点;(5)叶结点编码为从根结点到叶结点的编码组合。,2019年10月18日星期五,80,1,0,0,0,0,0,0,0.06,,1,0.03,0.03,0.04,0.05,0.15,0.30,0.40,I7 I6 I5 I4 I3 I2 I1,I1 I2 I3 I4 I5 I6 I7 0.4 0.3 0.15 0.05 0.04 0.03 0.03,2019年10月18日星期五,81,由此可得到哈夫曼编码如下:I1: 0 I2: 10 I3: 110 I4: 11100 I5: 11101 I6: 11110 I7: 11111 平均码长 L=0.4*1+0.3*2+0.15*3+0.05*5+0.04*5+0.03*5+0.03*5= 2.20位 信息冗余量R=(2.20-2.17)/2.20=1.36% 指令长度个数=4,2019年10月18日星期五,82,Huffman编码的平均码长是最短的平均码长 Huffman代码不唯一 0, 1 可对换 合并的次序可变 Huffman操作码的主要缺点 操作码长度很不规整, 硬件译码困难 与地址码共同组成固定长的指令比较困难,3.哈夫曼扩展编码(操作码优化),基本思想:对霍夫曼编码,根据使用频率宏观分布,将编码长度扩展成几种长度的编码。,2019年10月18日星期五,83,实现目标:接近全哈夫曼码的码长,定长码的规整性。,例1: Huffman用四种长度 0, 10, 110, 11100, 11101, 11110, 11111 0.4,0.3,0.15,0.05, 0.04, 0.03, 0.03 扩展哈夫曼编码如下: I1, I2, I3 用两位: 00, 01, 10 I4, I5, I6, I7 用四位: 1100, 1101, 1110, 1111 平均码长=2.30 信息冗余量=0.0565=5.65%,2019年10月18日星期五,84,2019年10月18日星期五,85,三种编码的比较,2019年10月18日星期五,86,Huffman扩展编码规则,短码不能是长码的前缀(基本原则) 扩展方法:等长扩展和不等长扩展 允许有几种码长 扩展编码中选择某些特征位用于扩展 注意扩展目标(各频率段)间关系如4-8-12等长扩展方法: 15/15/15法和8/64/512法 适用头15种频度Pi大和头8种Pi大,2019年10月18日星期五,87,15/15/15编码法,第87张,2019年10月18日星期五,88,例2:指令系统共有42种指令,前15种使用频率平均为0.5,中间13种使用频率平均为0.15,最后14种使用频率平均为0.35。如何编码?,解:,因频率分布有三种,故码长可有三种;,因每段指令数基本相同,故可采用等长扩展(4-8-12位),结果如图所示,结果:采用15/15/15扩展方法,最后一种编码用于扩展,每段0000-1110用于编码,1111用于扩展。,2019年10月18日星期五,89,例3:指令系统共有74种指令,前4种使用频率平均为0.42,中间15种使用频率平均为0.34,最后55种使用频率平均为0.24。如何编码?,解:同上例方法,码长可有三种;,因每段指令数成比例(1:4),故可采用等长扩展方法(3-6-9位)扩展,结果如图所示;,结果:采用4/16/64编码方法,编码第一位用于扩展,每段0XX用于编码,1XX用于扩展。,0xx 4种 1xx 0xx 16种 1xx 1xx 0xx 64种,2019年10月18日星期五,90,4/16/64平均码长=0.42*3+0.34*6+0.24*9=5.46;,例4:指令系统共有78种指令,前10种使用频率平均为0.49,中间18种使用频率平均为0.31,最后50种使用频率平均为0.2。如何编码?,解:同上例方法,码长可有三种;因每段指令数比例为1:2:5,故不可采用等长扩展,采用不等长编码( 4-6-10位)较能减少平均码长。,2019年10月18日星期五,91,结果:第一种采用4位编码中前10种(0000~1001);第二种采用第一种频率编码中的后5种编码(1010~1110)与扩展的2位共20种编码;第三种采用第一种频率编码中的最后一种(1111)与扩展的6位共64种编码。,2019年10月18日星期五,92,例题,1.设有一台模型计算机的指令系统共有10条指令,各指令的使用频度如下:I1 20%, I8 18%, I4 15%, I2 12%,I3 11%, I9 10%, I5 8%,I6 3%,I7 2%,I10 1% (1)用哈夫曼编码设计这10条指令的操作码,并计算操作码的平均码长; (2)设计只有两种长度,且平均码长不大于3.2位的扩展操作码,并计算其平均码长。,2.设某机器系统指令字长12位,每个操作码和地址均占 3位,试提出一种分配方案,使该指令系统有4条三地址 指令,8条二地址指令和180条单地址指令。,2019年10月18日星期五,93,参考答案:,1.解:哈夫曼平均码长 为3.03位; 因为题目没有要求等长 扩展,结合各指令的使 用频度分布,可采用 3-4扩展法,平均码长 为3.14位;或采用3-5 扩展法,平均码长为 3.12位。,2.解:,2019年10月18日星期五,94,地址码的优化表示方法如下: (1)多种地址码长:操作数地址码长度可在很宽的范围内变化,只要恰当安排就可与变长操作码很好合成定长指令。 (2)多种地址制:通过改变指令字中地址码的个数,以使单地址、双地址、三地址和零地址都可以在指令中使用。 (3)多种寻址方式:采取多种灵活的寻址方式,或在指令空白处存放立即操作数或常数,提高地址码段的利用率。,2019年10月18日星期五,95,,IBM370系列计算机的指令长度有16位、32位和48位3种,所有指令的操作码都是8位固定长度,操作码的最高两位用来指明指令的长度和格式。具体如下:00为RR格式,指令字长16位01为RX格式,指令字长32位10为RS或SI格式,指令字长32位11为SS格式,指令字长48位 这里R代表寄存器,S代表存贮器,X代表变址,I代表立即操作数。,2019年10月18日星期五,96,RR型,(R1) OP (R2) ⇒ R1,RX型,(R1) OP M[(X2)+(B2)+D2] ⇒ R1,RS型,(R3) OP M[(B2)+D2] ⇒ R1,SI型,I OP M[(B1)+D1] ⇒ M[(B1)+D1],2019年10月18日星期五,97,SS型,L:M2[(B2)+D2] ⇒ M1[(B1)+D1],多种指令字长:16位(RR型) 、32位、48位(SS型),多种地址码长:8位(RR型)、24位、40位(SS型),多种寻址方式:R寻址 、变址寻址、偏移寻址,多种操作数地址制:双操作数地址、三操作数地址,2019年10月18日星期五,98,例题,1.若某机要求有:三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位,每个地址码长3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。2.某机指令字长16位。设有单地址指令和双地址指令两类。若每个地址字段为6位,且双地址指令有X条。问单地址指令最多可有多少条?,2019年10月18日星期五,99,1.解:三种指令格式字如下:,OPC,000 xxx xxx xxx⋮ 011 xxx xxx xxx000 000 xxx⋮⋮111 101 xxx 111 111 110 000⋮ 111 111 111 111,,,,三地址4条,一地址254条,零地址16条,3,3,3,3,2019年10月18日星期五,100,2.解:二种指令格式字如下:,OPC A1 A2,,,OPC A1,,6位,6位,6位,4位,由于双地址指令有X条,单地址指令最多可有:,2019年10月18日星期五,101,六、指令系统性能分析,例:为了评价各种指令系统的性能,分别在下列5种不同指令系统的处理机上计算算术表达式:处理机1:三地址指令系统; 处理机2:二地址指令系统(无通用寄存器); 处理机3:一地址指令系统; 处理机4:零地址指令系统(堆栈型处理机); 处理机5:二地址多累加器(通用寄存器)指令系统。,2019年10月18日星期五,102,(1)用5种不同类型的指令系统分别编写5个程序计算 表达式X的值,所有程序都用直接寻址方式编写,并假设 数据a—g已经存放在相应的A—G存储单元中。最终运算 结果存入主存X单元中。(2) 对5个程序分别统计出指令条数、访存次数、程序 存储量和访存信息量。访存次数包括访存取指令、到存储器读操作数和将结果写入存储器的访存操作次数。程序存储量是指所有指令占用的存储空间,不包括数据占用空间,因为数据占用空间对所有处理机是相同的。访存信息量是指所有操作存取信息的和。并假设一个操作码为1B,一个地址码为2B,一个数据为4B,一个通用寄存器地址为0.5B。统计的程序存储量和访存信息量以字节为单位。(3)根据(2)统计的结果,分别对程序存储量和访存 信息量进行排序。,2019年10月18日星期五,103,(1) 用三地址指令编写的程序如下:ADD X,A,B ;X单元暂时用来存放中间结果MUL X,X,CMUL Y,D,E ;Y单元暂存中间结果ADD X,X,YSUB Y,F,GDIV X,X,Y 共6条指令。每条指令需3次访存读/写操作数(二次读数,一次写运算结果)。 访问主存读/写操作数的总次数为:6×3=18。,2019年10月18日星期五,104,用二地址指令编写的程序如下:MOV X,A ;复制一个变量到X单元ADD X,BMUL X,CMOV Y,DMUL Y,EADD X,YMOV Y,FSUB Y,GDIV X,Y ;最后结果存放在X单元 共9条指令,其中三条传送指令每条执行时2次访问主 存,其他6条指令每条执行时3次访问主存。 该程序执行时由于读/写操作数访问主存的总次数为: 3×2+6×3=24。,2019年10月18日星期五,105,用一地址指令(隐含累加器)编写程序如下: LOAD F ;先做分母 SUB G STORE X ;暂存f-g于X单元 LOAD A ADD B MUL C STORE Y ;暂存(a+b)c LOAD D MUL E ADD Y DIV X STORE X 共12条指令,每条指令只需一次访存取得操作数。,2019年10月18日星期五,106,用零地址指令编写程序时,首先要将这个算术表达式转 换成波兰表达式。编写程序如下:PUSH A ;将操作数a压入堆栈PUSH B ;将操作数b压入堆栈ADD ;从栈顶弹出两个操作数,结果压入堆栈PUSH CMULPUSH DPUSH EMULADDPUSH FPUSH G,2019年10月18日星期五,107,SUBDIVPOP X ;从堆栈栈顶弹出结果送主存X单元在以上14条指令中,8条一地址指令,每条指令执行时 需2次访问主存;6条零地址指令,每条指令执行时3 次访问主存。 全部程序执行由于读写操作数总共访问主存次数为:8×2+6×3=34。,2019年10月18日星期五,108,用二地址多累加器(设有通用寄存器R1、R2)程序如下MOVE R1,A ;复制一个变量到通用寄存器R1ADD R1,BMUL R1,CMOVE R2,DMUL R2,EADD R1,R2MOVE R2,FSUB R2,GDIV R1,R2MOVE X,R1 ;将结果存放到X单元 在以上10条指令中,有8指令只需一次访存,另外2条指令无须访存。该程序执行时访问主存总次数为8次。,2019年10月18日星期五,109,(2) 对5个程序分别统计出指令条数、访存次数、程序存储量和访存信息量。访存次数包括访存取指令、到存储器读操作数和将结果写入存储器的访存操作次数。程序存储量是指所有指令占用的存储空间,不包括数据占用空间,因为数据占用空间对所有处理机是相同的。访存信息量是指所有操作存取信息的和。假设一个操作码为1B,一个地址码为2B,一个数据为4B,一个通用寄存器地址为0.5B。统计的程序存储量和访存信息量以字节为单位。,2019年10月18日星期五,110,(2)根据以上5种程序,统计有关信息量如下表,2019年10月18日星期五,111,(3)根据(2)统计的结果,对程序存量的排序为:,对程序执行时的访存信息量的排序为:,2019年10月18日星期五,112,按增强指令功能的方向发展与改进指令系统 按简化指令功能的方向发展与改进指令系统 CISC和RISC的比较,2019年10月18日星期五,113,CISC(Complex Instruction Set Computer) 复杂指令集计算机(硬件比例增大) 进一步增强原有指令的功能,设置复杂的功能更强的新指令代替原先由软件子程序实现的功能,进行软件功能的硬化 CISC加强指令功能的改进方向1.面向目标程序的指令功能的优化与改进2.面向高级语言及编译程序的指令功能的优化与改进3.面向操作系统的指令功能的优化与改进,2019年10月18日星期五,114,1.面向目标程序指令功能的改进 基本操作采用一条指令还是多条指令? 依据效率是否提高: 实现速度、目标程序长度 方法:统计使用频度 哈夫曼方法,静态使用频度:对程序中出现的各种指令以及指令串进行统计得出的百分比。 动态使用频度:在目标程序执行过程中对出现的各种指令和指令串进行统计得出的百分比。 静态使用频度: 侧重减少占用空间动态使用频度: 侧重减少运行时间,2019年10月18日星期五,115,基本思路:对于那些频度高的常用指令,可以考虑增强其功能,加快其执行速度,缩短其指令字长;而对于那些使用频度很低的指令就可以考虑将其取消,或将其功能合并到某些频度较高的指令中去。优化传送类指令:如成组传送指令、自增循环(LDIR)、自减循环(LDDR)等 优化转移类指令:如DJNZ,多种转移指令等 优化运算类指令:如多项式运算指令POLY,
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第2章 数据表示与指令系统性能分析.ppt
链接地址:https://www.weizhuannet.com/p-10200554.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开