计算机组成与设计ch05.docx

上传人:scccc 文档编号:14017831 上传时间:2022-01-30 格式:DOCX 页数:12 大小:15.72KB
返回 下载 相关 举报
计算机组成与设计ch05.docx_第1页
第1页 / 共12页
计算机组成与设计ch05.docx_第2页
第2页 / 共12页
计算机组成与设计ch05.docx_第3页
第3页 / 共12页
计算机组成与设计ch05.docx_第4页
第4页 / 共12页
计算机组成与设计ch05.docx_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机组成与设计ch05.docx》由会员分享,可在线阅读,更多相关《计算机组成与设计ch05.docx(12页珍藏版)》请在三一文库上搜索。

1、计算机组成原理- CH05 指令系统体系结构5.1 概述计算机指令由操作码和操作数组成。 操作码指定要执行的操作类型,而操作数指出数据所处的寄存器和内存单元。本章会对上一章的内容做进一步的展开, 深入讨论计算机的指令系统体系结构。 将介绍各种不同的指令类型和操作数类型, 以及指令如何访问内存中的数据。5.2 指令格式每条计算机的指令都有一个操作码和 0 个或多个操作数. 每条指令允许使用的操作数的个数不同 , 指令的类型和指令处理的操作数的类型也可能不同 . 更具体地说, 各种指令集可能在特征上存在如下差别:操作数在CPU中的存储方式(数据可以存储在堆栈结构或寄存器中)指令作用的操作数的数目

2、(最常用的操作数个数为 0,1,2 和 3)操作数的位置( 如果简单地按照指令适用的操作数的组合, 则各种指令可以分为寄存器- 寄存器类型, 寄存器 - 存储器类型或存储器-存储器类型 )操作 ( 不仅包括操作的类型, 而且指出指令是否可以访问存储器)操作数的类型和长度( 操作数可能是地址, 数字或字符)5.2.1 指令系统的设计指令系统体系结构 (ISA) 的效能可以用下面几个因素来衡量:(1) 程序执行指令时占用内存空间的大小 ;(2) 指令系统的复杂程度, 主要指指令执行所需要的译码数量和指令所执行的任务的复杂性 ;(3) 指令的长度;(4) 指令系统中指令的总数目 .设计指令系统时需要

3、考虑的问题包括:指令一般越短越好, 因为较短的指令占用较少的内存空间 , 并且撮指令的速度也会更快. 但是采用短指令会限制指令的数量.固定长度的指令的译码相对比较容易, 但却浪费空间 .存储器的组成形式会影响指令的格式.固定长度的指令系统并不表示必须使用固定数量的操作数.存在多种不同类型的寻址方法.如果机器的字由多个字节组成, 就需要考虑组成的字的字节是按照怎样的次序存储到按字节的机器存储器中设计的体系结构需要多少个寄存器且这些寄存器应该如何进行组织安排,操作数如何存放在CPUfr5.2.2 小端和大端的位序问题术语 位端 (endian) 指的是计算机体系结构中的 位序 (byte orde

4、r). 位端是指在计算机中存储一个多字节数据元素时 各个字节的排列方式将最低位的字节首先存放到低位地址, 然后再将最高位的字节存放到高位地址, 采用这种方式的机器称为小端(little endian)机器 .先将最高位的字节存放到低位地址, 然后再存放最低位的字节 . 这种类型的机器称为大端(big endian) 机器 .大部分的UNIX计算机都是大端机器,而大多数的PC机则是小端机器 .大端位序的存储方式更自然些, 而且更便于阅读十六进制编写的程序段. 大端位序的机器存储整数和字符串时使用相同的次序并且在某些字符串操作时速度会更快一些 . 大部分位图映身格式的图像都是采用 最高位在字符串的

5、左边 的变换方法, 也就是说对于像素大于一个字节的数据可以直接按照大端位序机器自身体系结构的安排顺序进行处理.大端位序的存储方式也有缺点 , 如果计算机要进行从32 位整数地址到 16 位整数地址的转换操作 , 则要求大端机器执行加法运算高精度的算术运算在小端机器上会更快和更方便一些 .计算机网络都是采用大端位序的体系结构 .5.2.3 CPU 的内部存储机制 : 堆栈和寄存器CPU 的数据存储方式是区分不同指令系统体系结构 (ISA) 的最基本的方法. 这里有三种不同的体系结构可供选择.1. 堆栈体系结构2. 累加器体系结构3. 通用寄存器(GPR潜系结构堆栈体系结构(stack archi

6、tecture) 的计算机使用一个堆栈来执行各种指令, 而且指令的操作数就隐含地存放在堆栈的顶部 .这种机器通常具有好的编码密度和一个简单的表达式估值模型 , 但由于不能对堆栈进行随机访问 , 使得采用堆栈结构的机器很难产生高效率的编码 .累加器体系结构(Accumulator architecture) 的计算机 , 比如 MARIE, 是将其中一个操作数隐含在累加器中 . 降低了机器的内部复杂性 , 而且允许使用非常短的指令. 但由于累加器是临时存储, 所以对存储器的访问非常频繁 .通 用 寄 存 器 体 系 结 构 (general purpose registerarchitectur

7、e) 的计算机 , 采用多个通用寄存器组, 这是当今计算机体系结构中最广泛接受的模型. 寄存器组的访问速度比存储器快得多,通用寄存器体系结构可以根据指令的操作数所处的位置分成三种类型 .存储器-存储器(memory-memory游系结构可以有两个或三个操作数位于存储器内 , 允许有一条执行某种操作而不需要有任何操作数的指令存放在某个寄存器中 .寄存器 - 存储器 (register-memory) 体系结构则是采用混合方式,这其中至少有一个操作数在寄存器中和一个操作数在存储器中 .装入 - 存储 (load-store) 式体系结构则需要在任何对数据的操作执行之前, 先将数据装入寄存器中 .5

8、.2.4 操作数的数目和指令的长度在现在的计算机体系结构中 , 指令构成的格式有如下的两种方式 :固定长度 (fixed length) 使用这种格式的指令系统会浪费一些存储空间, 但是指令执行的速度快. 在采用指令层次(instruction-level) 的流水线结构时, 固定长度的指令系统的性能会更好些可变长度 (variable length) 这种指令的译码会变得比较复杂 ,但是却可以节省存储空间 .最常用的指令格式包括有零个, 一个 , 两个 , 或三个操作数.使用一个堆栈结构也可以允许有不带操作数( 零操作数 ) 的指令 .只有操作码(0 地址 )操作码 + 1 个地址 ( 通常

9、只有一个存储器地址)操作码+ 2 个地址( 通常是两个寄存器地址, 或者是一个寄存器地址加上一个存储器地址)操作码+ 3 个地址( 通常是三个寄存器地址, 或者是寄存器和存储器的某种组合形式 )不带操作数的机器指令必须使用堆栈来执行在逻辑上需要一个或两个操作数的操作随着每条指令所允许的操作数的数目的减少 , 完成相同程序功能所需的指令数目将会增加 . 这就是一个典型的在空间和时间之间进行平衡折衷. 通常 , 采用较短的指令需要编写较长的程序5.2.5 扩展操作码扩展操作码(expanding opcode) 代表了一种折衷的方案, 就是既要求有尽可能多的操作码的数目 , 又要求采用尽可能短的操

10、作码 , 所设计的指令长度也比较短 .其设计的基本思想是: 选用短操作码, 而当有需要时可以有某种方法将操作码加长采用扩展操作码的方法使指令的译码变得更加复杂5.3 指令类型有些指令的操作对象不是数据, 指令归纳为以下几种类型 :数据移动算术运算布尔逻辑运算位操作 ( 移位和循环换位)输入 / 输出 (I/O)控制转移专门用途数据移动指令是最常用的指令. 人们常常需要将数据从存储器移到寄存器, 从寄存器移到寄存器, 以及从寄存器移到存储器等.算术运算指令包括有整数和浮点运算的各种指令.布尔逻辑指令执行布尔逻辑运算, 与算术指令的运算方式非常类似位操作指令用来在某个特定的数据字中对一些单独数据位

11、( 或者是一些位的集合) 进行置位和复位操作.输入 / 输入 (I/O) 指令随着计算机体系结构的不同而有很大区别 . 处理输入输出的基本方式有: 程序控制的 I/O, 中断驱动的 I/O 和直接存储器访问 (DMA) 的 I/O 三种方式控制指令包括分支转移 (branch), 跳过 (skip) 和进程调用(procedure call)等.专用指令包括字符串处理的指令, 高级语言支持的指令 , 保护和标志位控制指令, 以及高速缓存(cache) 指令等 .5.4 寻址与寻址有关的两个最重要的问题是: 可以进行编址的数据类型和各种各样的寻址方式 .5.4.1 数据类型如果指令要引用某个特定

12、的数据类型, 必须有相应的硬件对该种类型的数据提供支持指针是被认为与整数和浮点数字不同的数据类型对于使用指针的指令, 操作数本质上就是一个地址, 并且必须被当成一个地址处理.5.4.2 寻址方式寻址方式是指定指令中操作数的位置的方法立即寻址 (immediate addressing) 是指在指令中操作代码后面的数值会被立即引用 , 12 位的操作数域并不是指 定一个地址, 而是表示指令所要求的实际操作数. 但由于加载的数值是固定的 , 这种方式非常不灵活直接寻址 (direct addressing) 是指在指令中直接指定要引用的数值的存储器地址. 直接寻址方式比立即寻址方式要灵活得多 .寄

13、存器寻址(register addressing) 方式中 , 是采用一个寄存器, 而不是存储器来指定操作数. 寄存器寻址方式中被指定的寄存器中的内容将用作指令的操作数.间接寻址 (indirect addressing) 是一种非常有效的寻址方式 , 使用起来特别灵活, 在间接寻址方式中 , 地址域中的二进制数用来指定一个存储器地址, 该地址中的内容将被用作一个指针 . 操作数的有效地址是通过访问这个存储器地址来获取的作为间接寻址的一种变化形式操作数域的二进制位也可以用来指定一个寄存器, 而不是指定某个存储器地址. 这种方式称为寄存器间接寻址(register indirect addres

14、sing).在变址寻址方式(indexed addressing) 中 , 一个变址寄存器 ( 要么显式地指定, 要么隐式指定) 用来存储一个偏移量(offset, 或 称 为 位 移 量 (displacement) 基 址 寻 址 (basedaddressing) 方式与变址寻址方式非常类似. 区别是 , 基址寻址方式使用的是基地址寄存器, 而不是变址寄存器.堆栈寻址 (stack addressing) 方式 , 则操作数就假定放在堆栈中 .5.5 指令的流水线有些CPU会将取指-译码-执行周期分成一些较小的步骤 , 其中的某些较小的步骤可以并行执行. 这种时间上的交叠可以加快CPUW

15、执行速度,这种方法称为流水线(pipeline).不同的步骤可以并行完成不同指令的各个部分. 这其中的每一个步骤都称为流水线极(pipeline stage).一旦第一条指令的取指任务完成, 第一条指令就会被送去进行了译码操作 . 与些同时 , 可以开始第二条指令的取指.当第一条指令取操作数时, 第二条指令被送去译码 , 同时开始取第三条指令 . 这些事可以并行发生并不是所有指令都必须经过管道中的每一级流水线 . 有些情况会阻碍计算机实现每个时钟周期执行一条指令的目标资源冲突数据关联条件分支语句资源冲突 (resource conflict)是指令级并行执行过程中要考虑的主要问题 . 例如一个

16、在读一个在写数据关联 (data dependency) 是指当一条指令的执行尚未结束时, 后面某条指令却要求该指令的执行结果作为其操作数 .分支转移语句来改变程序的执行流程, 但是这样会对流水线造成重大问题 . 许多计算机体系结构都设计分支预测 (branchprediction) 机构 , 利用合理的逻辑来对下一条指令做出最优的预测.超标量 (superscalar) 体系结构是利用多条平行的流水线同时执行多个操作超流水线 (superpipelining) 体系结构则是将超标量体系结构和流水线体系结构的概念组合起来 , 把流水线的各个级分割成更小的步骤 .IA-64 体系结构却是一个超长指令字 (VLIW)体系结构 , 即每条指令可以指定多个标量操作, 也就是编译器可以把多个操作放到一条指令中 .

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1