收藏 分享(赏)

数据表示与指令系统.ppt

上传人:weiwoduzun 文档编号:5007268 上传时间:2019-01-30 格式:PPT 页数:98 大小:685KB
下载 相关 举报
数据表示与指令系统.ppt_第1页
第1页 / 共98页
数据表示与指令系统.ppt_第2页
第2页 / 共98页
数据表示与指令系统.ppt_第3页
第3页 / 共98页
数据表示与指令系统.ppt_第4页
第4页 / 共98页
数据表示与指令系统.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

1、第 2 章 数据表示与指令系统,2.1 数据表示 2.2 寻址方式 2.3 指令系统的设计和改进,2.1 数 据 表 示,2.1.1 数据表示与数据结构,数据表示指的是能由机器硬件直接识别和引用的数据类型。 例如,当机器设置有定点加、减、乘、除、移位、比较等一系列定点运算指令和相应的运算硬件,可以直接对定点数进行各种处理时,机器就有了定点数据表示。当机器设置有逻辑加、 逻辑乘、按位相加、逻辑移位等一系列逻辑运算指令和相应的逻辑运算硬件,可以直接对逻辑数进行各种处理,机器就有了逻辑数据表示。 类似的,若机器设置有浮点运算指令(如浮点加、减、乘、除、 比较、存、取等)和相应的运算硬件,可以直接对浮

2、点数进行各种处理,机器就有了浮点数据表示。,串、队、栈、向量、阵列、链表、树、图等是软件系统所要处理的各种数据结构,它们反映了面向应用所要用到的各种数据元素或信息单元之间的结构关系。数据结构是通过软件映象,将信息变换成机器中所具有的各种数据表示来实现的,可见,数据表示是构成数据结构的元素。不同的数据表示可以为数据结构的实现提供不同的支持,表现在实现的效率和方便性上不同。因此,数据结构和数据表示是软、硬件的交界面。系统结构设计者在确定软、硬件的功能分配时,应考虑在机器中设置哪些数据表示, 以便对应用中所遇到的数据结构能有高的实现效率。 当然, 这是以花费适当的硬件为代价的。所以,数据表示的确定实

3、质上是软、硬件的取舍问题。,图 2.1 变址操作对向量、 阵列数据结构的支持,2.1.2 高级数据表示,1. 自定义数据表示自定义(Self-defining)数据表示包括带标志符的数据表示和数据描述符两类。1) 带标志符的数据表示高级语言用类型说明语句指明数据的类型,让数据类型直接与数据本身联系在一起,运算符不反映数据类型,是通用的。例如FORTRAN程序中,实数(浮点数) I和J的相加是采用如下的语句组指明的:REAL I, JI=I+J,在说明I、J的数据为实型后,用通用的“+”运算符就可实现实数加法。可是,传统的机器语言程序却正好相反,它用操作码指明操作数的类型。如浮点加法指令,中,由

4、于操作码是浮加,那么无论I和J是否是浮点数, 总是按浮点数对待,进行浮点数加法。这样,编译时就需要把高级语言程序中的数据类型说明语句和运算符变换成机器语言中不同类型指令的操作码,并验证操作数的类型是否与运算符所要求的一致,若不一致,还需用软件进行转换,这些都增加了编译的负担。,为了缩短高级语言与机器语言的这种语义差距, 可让机器中的每个数据如下所示,都带有类型标志位:,数据(字),标志符数据表示的主要优点为: 简化了指令系统和程序设计。 (2) 简化了编译程序。 (3) 便于实现一致性校验。 (4) 能由硬件自动完成数据类型的变换。 (5) 支持了数据库系统的实现与数据类型无关的要求。 (6)

5、 为软件调试和应用软件开发提供了支持。,采用标志符数据表示带来的问题可能有两个。(1) 每个数据字因增设标志符, 会使程序所占用的主存空间增加。(2) 采用标志符会降低指令的执行速度。,图 2.2 采用标志符缩短操作码而节省程序空间,2) 数据描述符为进一步减少标志符所占的存贮空间,对于向量、数组、记录等数据,由于每个元素具有相同的属性,为此发展出数据描述符。数据描述符和标志符的差别在于标志符是和每个数据相连的,合存在一个存贮单元中,描述单个数据的类型特征;描述符是和数据分开存放的,专门用来描述所要访问的数据是整块数据还是单个数据,访问该数据块或数据元素所需要的地址以及其他特征信息等。,以 B

6、6700的描述符为例, 其数据描述符和数据的形式分别如下所示:,描述符,数 据,图 2.3 经描述符访存取操作数,图 2.4 用描述符描述二维阵列,2. 向量数组数据表示,例如,要计算 ci=ai+5+bi i=10,11,1000 用FORTRAN语言写成的有关DO循环部分为DO 40 I=10, 100040 C(I) = A(I+5)+B(I),在具有向量、数组数据表示的向量处理机上,表现出在硬件上设置有丰富的向量或阵列运算指令,配置有以流水或阵列方式处理的高速运算器,只需用一条如下的向量加法指令:,图 2.5 向量编址所用的参数,3. 堆栈数据表示,(1) 有若干高速寄存器组成的硬件堆

7、栈,并附加控制电路让它与主存中的堆栈区在逻辑上组成一个整体,使堆栈的访问速度是寄存器的,堆栈的容量是主存的。(2) 有很丰富的堆栈操作类指令且功能很强, 直接可对堆栈中的数据进行各种运算和处理。(3) 有力地支持高级语言程序的编译。假定有算术赋值语句F=A*B+C/(D-E)可以很容易通过用逆波兰表达式AB*CDE-/+(4) 有力地支持子程序的嵌套和递归调用。,图 2.6 用堆栈实现子程序的嵌套和递归调用,2.1.3 引入数据表示的原则,一方面是看系统的效率有否提高,即是否减少了实现时间和所需的存贮空间。衡量实现时间是否减少,主要是看在主存和处理机之间传送的信息量有否减少。 传送的信息量越少

8、, 其实现时间就会越少。以A、 B两个 200200 的定点数二维数组相加为例,用PL/1语言编写很简单, 就是A=A+B,是否引入某种高级数据表示的另一方面是看引入这种数据表示后, 其通用性和利用率是否高。如果只对某种数据结构的实现效率很高, 而对其他数据结构的实现效率很低,或者引入这种数据表示在应用中很少用到,那么为此所花的硬件过多却并未在性能上得到好处,必然导致性能价格比的下降, 特别是对一些复杂的数据表示。,2.1.4 浮点数尾数基值大小和下溢处理方法的选择,1. 浮点数尾数基值的选择,图 2.7 浮点数的一般格式,图 2.8 浮点数可表示实数域中的值,为讨论选择不同浮点数尾数基值的影

9、响,我们用rm来表示其浮点数尾数的基。在机器中,一个rm进制的数位是用log2 rm 个机器位数来表示,因此,尾数的机器位数为m时,相当于rm进制的尾数共有m个数位,其权值由小数点开始向右依次为 。 其中,,例如,rm=2 时,m为m; rm=16 时,m为m/4; rm=10 时, m为m/4。当rm为 2 的整数次幂时,就有特例: 。 所谓以rm为尾数基值的浮点数就是当其尾数右移一个rm进制数位时,为保持数值不变, 阶码才增 1。,表 2.1 采用尾基为rm的浮点数表示的特性及其举例,(1) 可表示数的范围。由表 2.1 知,可表示的最小值为 , rm增大, 将减少;而可表示的最大值为 ,

10、 其中 1-2-m部分为常数,rm增大,由于 增大, 而使可表示的最大值增大。因此,随rm的增大,可表示数的范围增大。换句话说,对于大的rm值,为表示相同范围的数,其阶码的位数p可以减少。,(2) 可表示数的个数。由表 2.1 知,可表示数的个数为, 其中2p+m为常数,所以rm的增大将因 增大, 而使可表示数的个数增多。很容易得出,rm用 16 与用 2 的可表示数的个数之比为,(3) 数在实数轴上的分布。对比表 2.2 和表 2.3,可以看出rm用 16 的比用 2 的可表示数在实数轴上的分布要稀。例如在 1/2 和 2 之间,rm为 2 的有 15 个值,而rm为 16 的只有 8 个值

11、。 为了进一步分析数值分布和rm的关系,引入表示比。表示比e指的是在相同p、m位数时,在rm=2 的可表示最大值以内,采用rm2 的可表示浮点数个数与rm=2 的可表示浮点数个数之比。,表 2.2 p=2, m=4, rm=2 的规格化浮点数,表 2.3 p=2, m=4, rm=16 的规格化浮点数,由于采用的rm2 时,可表示的最大值总比rm=2 的可表示的最大值要大,总可以找到一个其尾数值为最大的1-2-m,阶值为 q, 使得,即 , 从而得出此时的q值为,将q=(2p-1)/log2 rm代入上式得,实际机器中阶码位数p一般都较大,至少p=8,这时若rm取 16, 则表示比,(4) 可

12、表示数的精度。由于rm愈大,数在数轴上的分布变稀,已可得出数的表示精度下降的结论。从另一个角度分析,由于机器尾数位数m相同情况下,规格化十六进制尾数最高数位中可能出现 4 位机器位中的左面 3 位均为 0, 即rm=2 的可能比rm=16 的有多 3 位机器位的精度。若rm=2k,则最坏情况下,尾数中只用到m-k+1 位机器位来表示,所以,可表示数的精度随rm增大而单调下降。,(5) 运算中的精度损失。运算中的精度损失是指由于运算过程中尾数右移出机器字长使得有效数字丢失后所造成的精度损失,因此它与可表示数的精度是两个不同的概念。由于尾数基值rm取大后,对阶移位的机会和次数要少,且由于数的表示范

13、围扩大,也使出现尾数溢出需右规的机会减少,这从表 2.4 对大量指令执行后统计得出的浮点加法移位距离和所占百分比情况可以看出。因此rm愈大,尾数右移的可能性愈小,精度的损失就越小。,表 2.4 浮点加法的移位距离及百分比,(6) 运算速度。由于rm大时发生因对阶或尾数溢出需右移及规格化需左移的次数显著减少,因此运算速度可以提高。,2. 浮点数尾数的下溢处理方法,截断法。 (2) 舍入法。 (3) 恒置“1”法。 (4) 查表舍入法。,图 2.9 rm=2, m=2 时,各种下溢处理方法的误差曲线,图 2.10 k位ROM查表舍入,2.2 寻 址 方 式,2.2.1 寻址方式分析,大多数计算机都

14、将主存、通用寄存器、堆栈分类编址,因此就有分别面向寄存器、堆栈和主存的寻址方式。 面向寄存器的寻址方式操作数可以取自寄存器或主存,结果大多保存在寄存器中,少量的送入主存。面向堆栈的寻址方式主要访问堆栈,少量访问主存或寄存器。面向主存的寻址方式主要访问主存,少量访问寄存器。,2.2.2 逻辑地址与主存物理地址,图 2.11 逻辑地址空间到物理地址空间的变换,图 2.12 基址寻址,各种信息在存贮器中 存放的地址必须是: 字节信息地址为 半字信息地址为 0单字信息地址为 0 0双字信息地址为 0 0 0,图 2.13 各种宽度信息的存贮,2.3 指令系统的设计和改进,2.3.1 指令格式的优化,1

15、. 操作码的优化表示,表 2.5 某模型机指令使用频度举例,现设一台模型机,共有 7 种不同的指令,使用频度如表 2.5 所示。若操作码用定长码表示需要 3 位。按信息论观点,当各种指令的出现是相互独立的(实际情况并不都是如此)时候,操作码的信息源熵(信息源所包含的平均信息量)H为-pi log2 pi ,由于操作码信息是用二进制位表示的, 则 H=-pi log2 pi 按表 2.5 的数据, 得 H=0.401.32+0.301.74+0.152.74+0.054.32+0.044.64+0.035.06+0.035.06=2.17,说明表示这 7 种指令,操作码平均只需 2.17 位就够

16、了。 采用 3 位定长操作码表示的信息冗余量,相当大。 为减少信息冗余, 可改用哈夫曼编码。,表 2.6 操作码的哈夫曼编码及扩展操作码编码,图 2.14 哈夫曼树举例,只要采用全哈夫曼编码,操作码的平均码长肯定是唯一的。如此例,操作码的平均码长,非常接近于可能的最短位数(H)2.17位。这种编码的信息冗余为,表 2.7 B1700 操作码编码方式比较,图 2.15 15/15/15 编码法和 8/64/512 编码法,2. 指令字格式的优化,图 2.16 任意长指令字在按位编址主存中存贮的情况,图 2.17 等长地址码发挥不出操作码,如IBM 370 指令中访存地址有如下形式:,如IBM 3

17、70 的指令中为访存, 采用基址寻址, 地址码可有如下形式:,又如将访存地址空间分为若干个段,这样,访存地址就由段号和段内地址两部分组成:,图 2.18 在定长指令字内实现多种地址制,图 2.19 同种地址制下的多种地址形式和长度,如果让最常用的操作码最短,其地址码字段个数越多,就越能使指令的功能增强,越可以从宏观上减少所需的指令条数。 例如,为实现A+BC,采用单地址指令需经取A、加B、 送C 3 条指令完成, 而采用 3 地址指令,则只需一条指令即可完成。这不仅进一步缩短了程序的占用空间,也会因为减少了访存取指令次数而加快程序执行的速度。,虽然IBM 370 大部分都采用 8 位定长操作码

18、, 但对某些指令(尤其是原 360 指令系统中没有的), 如启动I/O、 测试I/O、 暂停I/O、 页面清除、 访问方式位的复位、绝对时钟设置等特殊指令, 其操作码由 8 位扩展到 16 位。采用 8 位操作码的主要指令格式有 5 种,如图 2.20 所示。其中R1, R2, R3表示操作数寄存器和结果寄存器号,B1, B2表示基址寄存器号,D1, D2为相对位移量。它们分别由操作码的最高二位状态来指明其长度和格式。 规则为:,2.3.2 按增强指令功能的方向发展与改进指令系统,1. 面向目标程序的优化实现来改进,IBM 370 机上增设了用单条指令来完成多个数据传送的功能。 如“成组取”指

19、令形式为,成组传送”指令可以实现字符行(即字节向量)的传送, 其形式为,0,8,12,16,20,31,0,8,16,20,32,36,47,控制型指令中的条件转移指令总共只需要两种形式,分别是,和,0,8,12,15,0,8,12,16,20,31,47,表 2.8 IBM 360 指令的动、静态使用频度,又如, IBM 370 的编译程序会经常形成下述 5 条指令构成的指令串:,ST(存) REG, SAVE ; (REG)SAVEL(取) REG, VARIABLE ; (VARIABLE)REGLA(取地址) REG, N(,REG) ; (REG)+NREGST(存) REG, VA

20、RIABLE ;REG)VARIABLEL(取) REG, SAVE ; (SAVE)REG 该指令串用于给主存的VARIABLE单元内的数增一个N值,即(VARIABLE)+NVARIABLE,上述 5 条指令构成的指令串总共占 20 个字节, 在370/145上执行需 8.8 s。现在增设一条“增量”新指令替代, 其形式为,0,8,16,20,32,36,47,0,8,12,16,20,31,完成 N+(X2)+(B2)+D2)(X2)+(B2)+D2,2. 面向高级语言的优化实现来改进,表 2.9 各种语句的静态使用频度(%)例,表 2.10 各种算术运算的静态使用频度(%),以FORT

21、RAN DO循环的优化实现为例,早期的FORTRAN 的DO,DO n I=m1, m2, m3n ,图 2.21 FORTRAN DO的语义,表 2.11 DO循环的语句数目,图 2.22 各种语言与传统机器指令系统结构的语义差距,图 2.23 B1700 具有多种系统结构,图 2.24 各种机器的语义差距,3. 面向操作系统的优化实现来改进,图 2.25 A、 B进程共用K公用区独立给C增值,这样,每个进程要使用K公用区之前就需要先判(L)0的状态。 若(L)0为0,可以置条件码为 00,表示能使用公用区, 但在使用公用区之前,为保证该公用区不再被别的进程所使用, 应紧接着通过送全“1”到

22、L单元来置“1”(L)0,一直到公用区使用结束后,才通过清除L来置“0”(L) 0, 释放公用区, 使它又能被其他进程所使用。 IBM 360 最初并没有为支持这种公用区管理而设置专门的指令,因此在A进程中,为使用公用区, 就需要安排如下的指令串:, A1: 取L ; L为一个字节, 存放公用区可否使用的标志判(L)0 ; (L)0为 0,置条件码为 00; (L)0为 1,置条件码为 01送全“1”到L ;置“1”(L)0条件转移A1 ;条件码为 01 时转移调用公用区K1 ; K1为K公用区子程序入口 K公用区子程序为: K1: 取C ; 将公用单元C的值取到寄存器增值 ; 在寄存器中完成

23、增值存C ; 将增值结果存回公用单元C清除L ; 置“0”(L)0返回 ; 返回调用程序,IBM 360 的“测试与置定”指令形式为,0,8,16,20,31,有了“测试与置定”这条指令后,A、B进程要使用公用区给C单元独立增值就可以采用以下的指令串:,IBM 370就增设了如下的“比较与交换”(COMPARE AND SWAP)指令:,0,8,16,20,31,12,采用“比较与交换”指令后,上述A进程给公用单元C的增值程序就相应改成(B进程也类似):,“比较与交换”指令还可以有很多其他的用法。只需使(R1)=全 0, (R3)=全 1,C中存标志位, 就可以替代“测试与置定”指令。然而“比

24、较与交换”指令要比“测试与置定”指令灵活得多。这两条指令不只是用在单处理机上,也可以用在多处理机上支持操作系统实现进程间通讯的同步和互斥,它们的功能是一般的机器指令无法实现的。尽管增加了“比较与交换”指令,但为保证软件的向后兼容,“测试与置定”指令仍被保留。,为了缩短系统结构与操作系统的语义差距还可以考虑的第三个重要思路是,把操作系统由软件子程序实现的某些功能进行硬化或固化,改用硬件和固件实现。例如,VAX11/780,专门为进程切换设置有关“保存进程关联信息”和“恢复进程关联信息”的指令;将原先由子程序实现的功能进行硬化。堆栈型机器HP3000 设置了功能性很强的PCAL(PROCEDURE

25、 CALL, 程序调用)和EXIT(出口返回)两条专用指令来支持程序嵌套和递归调用,简化子程序工作区的分配管理,这两条指令的语义非常接近于高级语言CALL和RETURN语句的语义,它将原由软件实现的调用、返回功能改为用微程序固件解释实现, 这实际上也是对操作系统存贮管理的有力支持。,CISC结构和思路的问题1:指令系统庞大,提高了成本,降低可靠性 2:指令操作复杂,降低了效率 3:由于指令太多,使编译程序太复杂,也很难生成高效指令 4:指令使用频度不高,降低性价比,2.3.3 按简化指令功能的方向发展与改进指令系统,1. 精简指令系统思想的提出,针对CISC结构存在的这些问题, Patters

26、on等人提出了精简指令系统计算机的设想。通过精减指令来使计算机结构变得简单、合理、有效,并克服CISC结构的上述缺点。他们提出了设计RISC机器应当遵循的一般原则。 这些原则包括:(1) 确定指令系统时,只选择使用频度很高的那些指令,在此基础上增加少量能有效支持操作系统和高级语言实现及其他功能的最有用的指令,让指令的条数大大减少,一般不超过 100 条。,(2) 大大减少指令系统可采用的寻址方式的种类,一般不超过两种。简化指令的格式,使之也限制在两种之内,并让全部指令都具有相同的长度。(3) 让所有指令都在一个机器周期内完成。(4) 扩大通用寄存器的个数,一般不少于 32 个寄存器, 以尽可能

27、减少访存操作,所有指令中只有存(STORE)、取(LOAD)指令才可访存,其他指令的操作一律都在寄存器间进行。(5) 为提高指令执行速度,大多数指令都采用硬联控制实现, 少数指令采用微程序实现。(6) 通过精简指令和优化设计编译程序,以简单有效的方式来支持高级语言的实现。,2. RISC结构采用的基本技术(1) 遵循按RISC机器一般原则设计的技术。 (2) 在逻辑上采用硬联实现和微程序固件实现相结合的技术。 (3) 在CPU中设置数量较大的寄存器组, 并采用重叠寄存器窗口的技术。,图 2.26 RISC的重叠寄存器窗口,表 2.12 每次CALL/RETURN的开销,设X、Y为主存单元,Rd

28、, R0, Rb, Rc为寄存器单元,且R0中放值 0。有一个未采用延迟转移的程序:,(4) 指令的执行采用流水和延迟转移技术。,Add R1,R2Jmp next2 Next1: sub R3,R4. Next2: Mov R4,A,Jmp next2 Add R1,R2 Next1: sub R3,R4. Next2: Mov R4,A,Mov R1,R2 Cmp R3,R4 Beq Next Add R4,R5. Next: Mov R4,A,Cmp R3,R4 Beq Next Mov R1,R2 Add R4,R5. Next: Mov R4,A,当执行到地址为 212 的条件转移指

29、令时,如果转移成功,则预取的 213 指令就应作废,即不应将Rd的内容转送到Rb。为了保证程序的正确性,就应在 212 后面插入一条“加R0, R0, R0”指令,相当于插入一条空操作指令(该指令执行结果仍然存的是 0),如下列左边的程序所示。 因此,不管 212 是否成功转移, 都不会影响到其他运算的中间结果或最后结果,但这样, 不管条件转移是否发生总要多花一个周期。,(5) 采用认真设计和优化编译系统设计的技术。,设A、 A+1, B, B+1 为主存单元,则程序,取A, Ra ; (A)Ra 存Ra, B ; (Ra)B 取A+1, a ; (A+1)Ra 存Ra, B+1 ; (Ra)

30、B+1,实现的是将A和A+1 两个主存单元的内容转存到B和B+1 两个主存单元。由于取和存两条指令交替进行,又使用同一个寄存器Ra, 出现寄存器Ra必须先取得A的内容,然后才能由Ra存入B,即上条指令未结束之前,下条指令无法开始。后面的指令也是如此。 因此, 指令之间实际上不能流水,每条指令均需两个机器周期。如果通过编译调整其指令的顺序为,取A, Ra ; (A)Ra 取A+1, Rb ; (A+1)Rb 存Ra, B ; (Ra)B 存Rb, B+1 ; (Rb)B+1,3. RISC技术的发展 采用RISC结构后可以带来如下明显的好处: 简化指令系统设计, 适合超大规模集成电路实现。 (2

31、) 提高机器的执行速度和效率。 (3) 降低设计成本, 提高了系统的可靠性。 (4) 可以提供直接支持高级语言的能力, 使编译程序能更好优化。,RISC结构也还存在某些不足和问题, 主要是:(1) 由于指令少,使原在CISC上由单一指令完成的某些复杂功能现在需要用多条RISC指令才能完成,这实际上加重了汇编语言程序员的负担, 增加了机器语言程序的长度,从而占用了较大的存贮空间,加大了指令的信息流量。(2) 对浮点运算和虚拟存贮器的支持虽有很大加强,但仍不够理想。(3) 相对来说, RISC机器上的编译程序要比CISC机器上的难写。,表 2.13 典型的RISC型机器基本特征,图 2.27 CLIPPER机的概念性结构,作业以指令系统的设计对系统的影响为范围写一篇小文章,具体的内容不限.可以在书上找一点以自己的理解和查找的资料加以展开,但不得抄书. 作业交到 ftp 210.34.6.126 User: arch pass: arch123,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报