为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

系统结构chpt2

2010-10-24 50页 ppt 756KB 10阅读

用户头像

is_530219

暂无简介

举报
系统结构chpt2null计算机系统结构计算机系统结构第一章 基本概念 第二章 指令系统 第三章 存储系统 第四章 输入输出系统 第五章 标量处理机第六章 向量处理机 第七章 互连网络 第八章 并行处理机 第九章 多处理机第二章 指令系统第二章 指令系统 指令系统是计算机系统结构的主要组成部分指令系统是软件与硬件分界面的一个主要标志指令系统是软件与硬件之间互相沟通的桥梁指令系统与软件之间的语义差距越来越大null2.1.1 数据表示与数据类型数据表示的定义:数据表示是指计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类...
系统结构chpt2
null计算机系统结构计算机系统结构第一章 基本概念 第二章 指令系统 第三章 存储系统 第四章 输入输出系统 第五章 标量处理机第六章 向量处理机 第七章 互连网络 第八章 并行处理机 第九章 多处理机第二章 指令系统第二章 指令系统 指令系统是计算机系统结构的主要组成部分指令系统是软件与硬件分界面的一个主要标志指令系统是软件与硬件之间互相沟通的桥梁指令系统与软件之间的语义差距越来越大null2.1.1 数据示与数据类型数据表示的定义:数据表示是指计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型。定点、逻辑、浮点、十进制、字符、字符串、堆栈和向量确定哪些数据类型用数据表示实现,是软件与硬件的取舍问题。数据类型:文件、图、表、树、阵列、队列、链表、栈、向量、串、实数、整数、布尔数、字符等。2.1 数据表示null确定数据表示的原则:1.缩短程序的运行时间 2.减少CPU与主存储器之间的通信量 3.这种数据表示的通用性和利用率数据表示在不断发展如:矩阵、树、图、表及自定义数据表示等null例2.1:实现A=A+B,A和B均为200×200的矩阵, 向量数据表示的作用解:如果在没有向量数据表示的计算机系统上实现,一般需要6条指令,其中有4条指令要循环4万次。因此,CPU与主存储器之间的通信量: 取指令2+4×40,000条, 读或写数据3×40,000个, 共要访问主存储器7×40,000次以上null如果有向量数据表示,只需要一条指令。 减少访问主存(取指令)次数:4×40,000次 缩短程序执行时间一倍以上。数据表示在不断扩大,如字符串、向量、堆栈、图、表 用软件和硬件相结合的方法实现新的数据表示;例如:用字节编址和字节运算指令来支持字符串数据表示;用变址寻址方式来支持向量数据表示等null复习原码、补码、反码、移码1、原码、补码、反码X=+10101 [X]原=010101 [X]反=010101 [X]补=010101X=-10101 [X]原=110101 [X]反=101010 [X]补=101011结论1:对于正数来说[X]原=[X]反=[X]补。结论2:对于负数来说 [X]原=1+X的真值; [X]反=1+X的真值的反 [X]补=1+X真值的反+1null2、移码十进制 补码 移码 +7 0111 1111 +6 0110 1110 +5 0101 1101 +4 0100 1100 +3 0011 1011 +2 0010 1010 +1 0001 1001 0 0000 1000十进制 补码 移码 -1 1111 0111 -2 1110 0110 -3 1101 0101 -4 1100 0100 -5 1011 0011 -6 1010 0010 -7 1001 0001 -8 1000 0000由[X]补得到[X]移的方法是将补码的符号位取反。null3、原码、反码、补码的表数范围(1)原码的表数范围设数值长度为n,则原码的表数范围:(2)反码的表数范围整数:小数:整数:小数:null(2)补码的表数范围整数:n=7null小数:null4、规格化浮点数同一个浮点数可能有不同的表示方法。为统一提出规格化浮点数。尾数用原码表示,最高数据位不等于0称之为规格化浮点数。尾数用补码表示,最高数据位不等于符号位称之为规格化浮点数。null2.1.2 浮点数的设计方法1、浮点数的表示方式需要有6个参数来定义。 两个数值: m:尾数的值,包括尾数的码制(原码或补码)和数制(小数或整数) e:阶码的值,移码(偏码、增码、译码、余码等)或补码,整数null两个基值: rm:尾数的基值,2进制、4进制、8进制、16进制和10进制等 re:阶码的基值,通常为2 两个字长: p:尾数长度,当rm=16时,每4个二进制位表示一位尾数 q:阶码长度,阶码部分的二进制位数 p和q均不包括符号位null1位1位q位p位mfefem浮点数的存储式注:mf为尾数的符号位,ef为阶码的符号位,e为阶码的值,m为尾数的值。2、浮点数的表数范围尾数为原码、小数,阶码用移码、整数时,规格化浮点数N的表数范围:null分析:规定:m正最大为尾数的正最大值; m正最小为尾数的正最小值;m负最大为尾数的负最大值; m负最小 为尾数的负最小值;e正最大为阶码的正最大值; e正最小为阶码的正最小值;e负最大为阶码的负最大值; e负最小为阶码的负最小值;null则0m正最小m正最大m负最大m负最小m0e正最小e正最大e负最大e负最小enull尾数用原码纯小数时规格化浮点数的表数范围null尾数用补码纯小数时规格化浮点数的表数范围尾数为补码,而负数区间的表数范围为null尾数为补码,而正数区间的表数范围为null例2.1: p=23,q=7,rm=re=2,尾数用原码、小数表示,阶码用移码、整数表示,求规格化浮点数N的表数范围解:规格化浮点数N的表数范围是:例2.3:尾数用补码、小数表示,阶码用移码、整数表示,p=6,q=6,rm=16,re=2,求规格化浮点数N表数范围解:规格化浮点数N在正数区间的表数范围是:null在负数区间的表数范围是:null6、浮点数格式的设计 定义浮点数表示方式的6个参数的确定原则: 尾数:多数机器采用原码、小数表示。采用原码制表示:加减法比补码表示复杂,乘除法比补码简单,表示非常直观。采用小数表示能简化运算,特别是乘除法运算。 阶码:一般机器都采用整数、移码表示。采用移码表示的主要原因是:浮点0与机器0一致。阶码进行加减运算时,移码的加减法运算要比补码复杂null 尾数的基值rm选择2, 阶码的基值re取2, 浮点数格式设计的关键问题是: 在表数范围和表数精度给定的情况下,如何确定最短的尾数字长p和阶码字长q 例2.5:要求设计一种浮点数格式,其表数范围不小于1037,正、负数对称,表数精度不低于10-16。 解:根据表数范围的要求: 解这个不等式:null 取阶码字长q=7 根据表数精度的要求,得到: 解这个不等式: 由于浮点数的字长通常为8的倍数,因此,取尾数字长p=55,总的字长为1+1+7+55 = 64,浮点数格式如下:null所设计浮点数格式的主要性能如下: 最大尾数值: 绝对值最小的尾数值: 最大阶码: 最小阶码: 最大正数: 最小正数:null 最大负数: 最小负数: 表数精度: 浮点零:浮点零与机器零相同,64位全为0 表数效率:采用隐藏位,表数效率 = 100% null一般处理机中的数据表示方法 数据存储单元(寄存器、主存储器、外存储器等)只存放纯数据。 通过指令中的操作码来解释: 数据的类型 (定点、浮点、字符、字符串、逻辑数、向量等) 进位制(2进制、10进制、16进制等) 数据字长(字、半字、双字、字节等) 寻址方式(直接寻址、间接寻址、相对寻址、寄存器寻址等)2.1.3 自定义数据表示null数据的功能(地址、数值、控制字、标志等)等 同一种操作(如加法)有很多条指令 在高级语言和应用软件中,数据的属性由数据自己定义。 在高级语言与机器语言之间的语义差距,要靠编译器等填补 60年代开始,Burroughs公司在大型计算机中引入自定义数据表示方式和带标志符的数据表示方式null1、带标志符的数据表示法 在B5000大型机中,每个数据有一位标志符;在B6500和B7500大型机中,每个数据有三位标志符;在R-2巨型机中采用10位标志符nullR-2巨型机中的标志符 功能位:操作数、指令、地址、控制字 陷井位:由软件定义四种捕捉方式 封写位:指定数据是只读的还是可读可写 类型位:二进制,十进制,定点数,浮点数, 复数,字符串,单精度,双精度等 绝对地址、相对地址、变址地址、 未连接的地址等null标志符由编译器或其它系统软件建立,对程序员透明 程序(包括指令和数据)的存储量分析 例2.5:假设X处理机的数据不带标志符,其指令字长和数据字长均为32位;Y处理机的数据带标志符,数据字长增加至35位,其中3位是标志符,其指令字长由32位减少至30位。并假设一条指令平均访问两个操作数,每个操作数平均被访问R次。分别计算这两种不同类型的处理机中程序所占用的存储空间。null解:X、Y处理机程序占用的存储空间总和分别为: 程序占用存储空间的比值: 当R>3时,有 BY/BX < 1。在实际应用中经常是R>10,即带标志符的处理机所占用的存储空间通常要小。null例如:在IBM 370系列机中执行A=A+B运算,若A、B都是十进制数,只需要一条指令,共6个字节,在 IBM 370/145机上的执行时间是13微秒。null若A与B中有一个是定点二进制数,由于要进行数据类型的一致性检查和转换,在PL/I语言中的编译结果为13条指令,共64个字节,在IBM 370/145机上的执行时间增加到408微秒。 两者相比,存储空间节省5倍,运算速度快30多倍。null采用标志符数据表示方法的主要优点: (1) 简化了指令系统。 (2) 由硬件自动实现一致性检查和 数据类型的转换。 (3) 简化程序设计,缩小了人与机器之间 的语义差距。 (4) 简化编译器,使高级语言与机器语言 之间的语义差距大大缩短。 (5) 支持数据库系统,一个软件不加修改 就可适用于多种数据类型。 (6) 方便软件调试,在每个数据中都有 陷井位。null采用标志符数据表示方法的主要缺点: (1) 数据和指令的长度可能不一致。 (2) 指令的执行速度降低。程序的设计时间、 编译时间和调试时间缩短。 (3) 硬件复杂度增加。 2、数据描述符表示法 数据描述符与标志符的区别: 标志符只作用于一个数据,而数据描述符要作用于一组数据。 Burroughs公司生产的B-6700机中采用的数据描述符表示方法:null 最高三位为101时表示数据描述符 最高三位为000时表示数据 例如:用数据描述符 表示方法表示一个 3×4矩阵Anull第二章 指令系统第二章 指令系统2.1 数据表示 2.2 寻址技术 2.3 指令格式的优化设计 2.4 指令系统的功能设计 2.5 RISC指令系统2.2 寻址技术2.2 寻址技术寻找操作数及其地址的技术称为寻址技术 2.2.1 编址方式 2.2.2 寻址方式 2.2.3 定位方式 重点:寻址方式的选择2.2.1 编址方式2.2.1 编址方式对各种存储设备进行编码的方法。 主要内容:编址单位、零地址空间个数、并行存储器的编址、输入输出设备的编址 1. 编址单位 常用的编址单位:字编址、字节编址、位编址、块编址等 编址单位与访问字长 一般:字节编址,字访问 部分机器:位编址,字访问 辅助存储器:块编址,位访问null 字节编址字访问的优点: 有利于符号处理 字节编址字访问的问题: (1) 地址信息浪费 对于32位机器,浪费2位地址(最低2位地址) 对于64位机器,浪费3位地址 (2) 存储器空间浪费 (3) 读写逻辑复杂 (4) 大端(Big Endin)与小端(Little Endian)问题nullnull(2)存储器空间浪费nullnull读一个字节 用多路选择器写一个字节 先读后写(3)读写逻辑复杂 增加1个align操作 null(4)大端(Big Endin)与小端(Little Endian)问题null2. 零地址空间个数 三个零地址空间:通用寄存器、主存储器、输入输出设备独立编址 两个零地址空间:主存储器与输入输出设备统一编址 一个零地址空间:最低端是通用寄存器,最高端是输入输出设备,中间为主存储器 隐含编址方式:堆栈、Cache等 3. 并行存储器的编址技术 高位交叉编址:主要用来扩大存储器容量。 低位交叉编址:主要是提高存储器速度。null4. 输入输出设备的编址 一台设备一个地址:通过指令来区分地址,地址内部区分地址。 一台设备两个地址:数据寄存器、状态或控制寄存器。 多个编址寄存器共用同一个地址的方法: 依靠地址内部来区分,适用于被编址的寄存器的长度比较短 “下跟法”隐含编址方式,必须按顺序读写寄存器。 一台设备多个地址:增加编程的困难2.2.2 寻址方式2.2.2 寻址方式 寻找操作数及数据存放地址的方法 1. 寻址方式的设计思想 立即数寻址方式 用于数据比较短,且为源操作数的场合 面向寄存器的寻址方式 OPC R OPC R, R OPC R, R, R OPC R, Mnull 面向主存储器的寻址方式: 直接寻址、间接寻址、变址寻址、相对寻址 基址寻址、自动变址、… OPC M OPC M, M OPC M, M, M 面向堆栈的寻址方式: OPC ;运算型指令 OPC M ;数据传送型指令null2. 寄存器寻址 主要优点:指令字长短,指令执行速度快,支持向量和矩阵等运算 主要缺点:不利于优化编译,现场切换困难,硬件复杂 3. 堆站寻址方式 主要优点:支持高级语言,有利与编译程序,节省存储空间,支持程序的嵌套和递归调用,支持中断处理 主要缺点:运算速度比较低,栈顶部分设计成一个高速的寄存器堆null4. 间接寻址方式与变址寻址方式的比较 目的相同:都是为了解决操作数地址的修改 原则上,一种处理机中只需设置间址寻址方式与变址寻址方式中的任何一种即可,有些处理机两种寻址方式都设置 如何选取间址寻址方式与变址寻址方式? 例2.15:一个由N个元素组成的数组,已经存放在起始地址为AS的主存连续单元中,现要把它搬到起始地址为AD的主存连续单元中。不必考虑可能出现的存储单元重叠问题。为了编程简单,采用一般的两地址指令编写程序。nullASADnull 用间接寻址方式编写程序如下: START: MOVE ASR, ASI ;保存源起始地址 MOVE ADR, ADI ;保存目标起始地址 MOVE NUM, CNT ;保存数据的个数 LOOP: MOVE @ASI,@ADI ;传送一个数据 INC ASI ;源数组的地址增量 INC ADI ;目标数组地址增量 DEC CNT ;个数减1 BGT LOOP ;测试数据传送完? HALT ;停机null ASR: AS ;源数组的起始地址 ADR: AD ;目标数组的起始地址 NUM: N ;需要传送的数据个数 ASI: 0 ;当前正在传送的源 ;数组地址 ADI: 0 ;当前正在传送的目标 ;数组地址 CNT: 0 ;剩余数据的个数null 用变址寻址方式编写程序如下: START: MOVE AS, X ;取源数组起始地址 MOVE NUM, CNT ;保存数据个数 ; move ad-as,r1 LOOP: MOVE (X), AD-AS(X);传送一个数据 INC X ;增量变址寄存器 DEC CNT ;个数减1 BGT LOOP ;测试数据传送完成 HALT ;停机 NUM: N ;传送的数据个数 CNT: 0 ;剩余数据的个数null 主要优缺点比较: (1)采用变址寻址方式编写的程序简单、易读。 (2)对于程序员,两种寻址方式的主要差别是: 间址寻址:间接地址在主存中,没有偏移量 变址寻址:基地址在变址寄存器中, 有偏移量 (3)实现的难易程度:间址寻址方式容易实现 (4)指令的执行速度:间址寻址方式慢 (5)对数组运算的支持:变址寻址方式比较好 自动变址:在访问间接地址时,地址自动增减 前变址与后变址:变址与间址混合时 前变址寻址方式:EA=((X)+A) 后变址寻址方式:EA=(X)+(A)2.2.3 定位方式 2.2.3 定位方式 程序的主存物理地址在什么时间确定?采用什么方式来实现? 程序需要定位的主要原因: 程序的独立性 程序的模块化设计 数据结构在程序运行过程中,其大小往往是变化的 有些程序本身很大,大于分配给它的主存物理空间 null主要的定位方式 直接定位方式:在程序装入主存储器之前,程序中的指令和数据的主存物理就已经确定了的称为直接定位方式。 静态定位:在程序装入主存储器的过程中随即进行地址变换,确定指令和数据的主存物理地址的称为静态定位方式。 动态定位:在程序执行过程中,当访问到相应的指令或数据时才进行地址变换,确定指令和数据的主存物理地址的称为动态定位方式。第二章 指令系统第二章 指令系统2.1 数据表示 2.2 寻址技术 2.3 指令格式的优化设计 2.4 指令系统的功能设计 2.5 RISC指令系统2.3 指令格式的优化设计 2.3 指令格式的优化设计 主要目标:节省程序的存储空间 指令格式尽量规整,便于译码 研究内容: 操作码的优化表示;地址码的优化表示 2.3.1 指令的组成 2.3.2 操作码的优化设计 2.3.3 地址码的优化设计 2.3.4 指令格式设计举例 2.3.1 指令的组成 2.3.1 指令的组成 一般的指令主要由两部分组成: 操作码和地址码 地址码通常包括三部分内容: 地址:地址码、立即数、寄存器、变址寄存器 地址的附加信息:偏移量、块长度、跳距 寻址方式:直接寻址、间接寻址、立即数寻址、变址寻址、相对寻址、寄存器寻址null操作码主要包括两部分内容: 操作种类:加、减、乘、除、数据传送、移位、转移、输入输出、程序控制、处理机控制等 操作数描述: 数据的类型:定点数、浮点数、复数、字符、字符串、逻辑数、向量 进位制:2进制、10进制、16进制 数据字长:字、半字、双字、字节 2.3.2 操作码的优化表示 2.3.2 操作码的优化表示 操作码的三种编码方法: 固定长度、Huffman编码、扩展编码 优化操作码编码的目的:节省程序存储空间 例如:Burroughs公司的B-1700机null1. 固定长操作码 定长定域: IBM公司的大中型机:最左边8位为操作码 Intel公司的Intanium处理机:14位定长操作码 许多RISC处理机采用定长操作码 主要优点: 规整 译码简单 主要缺点: 浪费信息量(操作码的总长位数增加)null2. Huffman编码法 1952年由Huffman首先提出 操作码的最短平均长度可通过如下公式计算: pi表示第i种操作码在程序中出现的概率 固定长编码相对于Huffman编码的信息冗余量: 必须知道每种操作码在程序中出现的概率null例2.16:假设一台模型计算机共有7种不同的操作码,如果采用固定长操作码需要3位。已知各种操作码在程序中出现的概率如下表,计算采用Huffman编码法的操作码平均长度,并计算固定长操作码和Huffman操作码的信息冗余量。null例2.17解答: 利用Huffman树进行操作码编码 (又称最小概率合并法) 把所有指令按照操作码在程序中出现的概率大小,自左向右顺序排列。 选取两个概率最小的结点合并成一个概率值是二者之和的新结点,并把这个新结点与其它还没有合并的结点一起形成一个新的结点集合。null在新结点集合中选取两个概率最小的结点进行合并,如此继续进行下去,直至全部结点合并完毕。 最后得到的根结点的概率值为1。 每个新结点都有两个分支,分别用带有箭头的线表示,并分别用一位代码“0”和“1”标注。 从根结点开始,沿尖头所指方向寻找到达属于该指令概率结点的最短路径,把沿线所经过的代码排列起来就得到了这条指令的操作码编码。null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码null利用Huffman树进行操作码编码nullHuffman操作码编码null解:采用Huffman编码法的操作码平均长度为: =0.45×1+0.30×2+0.15×3+ 0.05×4+0.03×5+0.01×6+0.01×6 =1.97(位) 操作码的最短平均长度为: =0.45×1.152+0.30×1.737 +0.15×2.737+0.05×4.322 +0.03×5.059+0.01×6.644 +0.01×6.644=1.95(位)null采用3位固定长操作码的信息冗余量为: Huffman编码法的信息冗余量仅为: 与3位固定长操作码的信息冗余量35%相比要小得多null3. 扩展编码法 Huffman操作码的主要缺点: 操作码长度很不规整,硬件译码困难 与地址码共同组成有规则长度的指令比较困难 扩展编码法:由固定长操作码与Huffman编码法相结合形成 例2.18:将例2.17改为1-2-3-5扩展编码法,操作码最短平均长度为: H=0.45×1+0.30×2+0.15×3 +(0.05+0.03+0.01+0.01)×5=2.00 信息冗余量为: null例2.19:将例2.17改为2-4等长扩展编码法,操作码最短平均长度为: H=(0.45+0.30+0.15)×2 +(0.05+0.03+0.01+0.01)×4 =2.20 2-4等长扩展编码法信息冗余量为:nullnullnull第二章 指令系统第二章 指令系统2.1 数据表示 2.2 寻址技术 2.3 指令格式的优化设计 2.4 指令系统的功能设计 2.5 RISC指令系统null2.4 指令系统的功能设计 完整性、规整性、高效率和兼容性 完整性是指应该具备的基本指令种类,通用计算机必须有5类基本指令 规整性包括对称性和均匀性 对称性:所有寄存器同等对待,操作码的设置等都要对称,如:A-B与B-A 均匀性:不同的数据类型、字长、存储设备、操作种类要设置相同的指令 高效率:指令的执行速度要快;指令的使用频度要高;各类指令之间要有一定的比例 兼容性:在同一系列机内指令系统不变(可以适当增加)null 2.4.1 基本指令系统 五类:数据传送,运算,程序控制,输入输出,处理机控制和调试 1、数据传送类指令 由如下三个主要因素决定: 数据存储设备的种类 数据单位:字、字节、位、数据块等 采用的寻址方式null指令种类(以字为传送单位,不考虑寻址方式等): 通用寄存器  通用寄存器 通用寄存器  主存储器 通用寄存器  堆栈 主存储器  通用寄存器 主存储器  主存储器 主存储器  堆栈 堆栈  通用寄存器 堆栈  主存储器null2、运算类指令 考虑四个因素的组合: (1) 操作种类:加、减、乘、除、与、或、非、异或、比较、移位、检索、转换、匹配、清除、置位等 (2) 数据表示:定点、浮点、逻辑、十进制、字符串、定点向量等 (3) 数据长度:字、双字、半字、字节、位、数据块等 (4) 数据存储设备:通用寄存器、主存储器、堆栈等null以加法指令为例,一般应设置如下几种: 寄存器-寄存器型的定点单字长加法指令 寄存器-寄存器型的定点双字长加法指令 寄存器-寄存器型的定点半字加法指令 寄存器-寄存器型的字节加法指令 寄存器-寄存器型的浮点单字长加法指令 寄存器-寄存器型的浮点双字长加法指令 寄存器-寄存器型的单字长逻辑加法指令 寄存器-寄存器型的定点向量加法指令 寄存器-寄存器型的浮点向量加法指令 null移位指令,要组合以下三个因素: 移位方向:左移(L)、右移(R) 移位种类:算术移位(A)、逻辑移位(L)、 循环移位(R) 移位长度:单字长(S)、双字长(D) 组合起来共有:3×2×2=12种,因逻辑左移与算术左移相同,因此移位指令应该有10种,分别是: SLAS 单字长算术左移 SRAS 单字长算术右移 SLLS(SRLS) 单字长逻辑左移, 或单字长算术左移null SLRS 单字长循环左移 SRRS 单字长循环右移 SLAD 双字长算术左移 SRAD 双字长算术右移 SLLD(SRLD) 双字长逻辑左移, 或双字长算术左移 SLRD 双字长循环左移 SRRD 双字长循环右移 位操作指令:置位、清位、位测试、找位等 字符串指令:比较、查找、匹配、转换等null3、程序控制指令 主要包括三类:转移指令、调用和返回指令、 循环控制指令 转移条件有:零(Z)、正负(N)、进位(C)、 溢出(V)及它们的组合 主要条件转移指令有: BEQ 等于零转移 BNEQ 不等于零转移 BLS 小于转移 BGT 大于转移 BLEQ 小于等于转移,或不大于转移 BGEQ 大于等于转移,或不小于转移null BLSU 不带符号小于转移 BGTU 不带符号大于转移 BLEQU 不带符号小于等于转移, 或不带符号不大于转移 BGEQU 不带符号大于等于转移, 或不带符号不小于转移 BCC 没有进位转移 BCS 有进位转移 BVC 没有溢出转移 BVS 有溢出转移 程序调用和返回指令: CALL 转入子程序null RETURN 从子程序返回, 本身可以带有条件 中断控制指令 开中断、关中断、改变屏蔽、 中断返回、自陷等 4、输入输出指令 主要有: 启动、停止、测试、控制设备,数据输入、输出操作等采用单一的直接寻址方式, 在多用户或多任务环境下,输入输出指令属于特权指令null也可以不设置输入输出指令,输入输出设备与主存储器共用同一个零地址空间 5、处理机控制和调试指令 处理机状态切换指令 处理机至少有两个或两个以上状态 硬件和软件的调试指令 硬件调试指令: 钥匙位置、开关状态的读取寄存器 和主存单元的显示等 软件调试指令: 断点的设置、跟踪,自陷井指令等null2.4.2 指令系统的优化设计 指令系统的优化设计有两个截然相反的方向: 1. 复杂指令系统计算机CISC (Complex Instruction Set Computer) 增强指令功能,设置功能复杂的指令 面向目标代码、高级语言和操作系统 用一条指令代替一串指令 2. 精简指令系统计算机RISC (Reduced Instruction Set Computer) 只保留功能简单的指令 功能较复杂的指令用子程序来实现 下一节主要介绍RISC第二章 指令系统第二章 指令系统2.1 数据表示 2.2 寻址技术 2.3 指令格式的优化设计 2.4 指令系统的功能设计 2.5 RISC指令系统null2.5.1 从CISC到RISC 70年代,指令系统已非常庞大,指令功能相当复杂(见下页表)。 1975年,IBM公司率先组织力量开始研究指令系统的合理性问题 1979年研制出世界上第一台采用RISC思想的计算机IBM 801 1986年,IBM正式推出采用RISC体系结构的工作站IBM RT PC2.5 精简指令系统计算机RISCnull机型 (年代)IBM 370/168 (1973)VAX-11 (1978)iAPX 432 (1982)指令种类208303222微程序容量420K480K64K指令长度16-4816-4566-321制造工艺ECL MSITTL MSINMOS VLSI指令操 作类型Mem-Mem Mem-Reg Reg-RegMem-Mem Mem-Reg Reg-Reg面向堆栈 Mem-MemCache容量64K64K0nullCISC指令系统存在的问题: David Patterson, UC Berkeley, 1979 1、20%与80%规律 CISC中,大约20%的指令占据了80%的处理机时间。8088处理机的指令种类约100种 前11种(11%)指令的使用频度已经超过80% 前8种(8%)指令的运行时间已经超过80% 前20种(20%)指令:使用频度达到91.1%,运行时间达到97.72%null其余80%指令:使用频度只有8.9%,只占2.28%的处理机运行时间 2、VLSI技术的发展引起的问题 VLSI工艺要求规整性 RISC正好适应了VLSI工艺的要求 主存与控存的速度相当 简单指令没有必要用微程序实现,复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别;由于VLSI的集成度迅速提高,使得生产单芯片处理机成为可能。null3、软硬件的功能分配问题 复杂的指令使指令的执行周期大大加长 一般CISC处理机的指令平均执行周期都在4以上,有些在10以上 CISC增强了指令系统功能,简化了软件,但硬件复杂了 1981年Patterson等人研制了32位RISC I微处理器,共31种指令,3种数据类型,2种寻址方式;研制周期10个月,比当时最先进的MC68000和Z8002快3至4倍;1983年又研制了RISC II,指令种类扩充到39种,单一的变址寻址方式,通用寄存器138个null2.5.2 RISC的定义与特点 卡内基梅隆大学(Carnegie Mellon)论述RISC的特点: 1、大多数指令在单周期内完成 2、LOAD/STORE结构 3、硬布线控制逻辑 4、减少指令和寻址方式的种类 5、固定的指令格式 6、注重编译优化技术null90年代初,IEEE的Michael Slater对RISC定义的描述: 1、RISC为使流水线高效率执行,应具有: 简单而统一格式的指令译码 大部分指令可以单周期执行完成 仅Load和Store指令可以访问存储器 简单的寻址方式 采用延迟转移技术 采用LOAD延迟技术 2、RISC为使优化编译器便于生成优化代码,应具有:三地址指令格式、较多的寄存器、对称的指令格式null2.5.3 减少CPI是RISC思想的精华 程序执行时间的计算公式: P = I· CPI · T 其中: P是执行这个程序所使用的总的时间; I是这个程序所需执行的总的指令条数; CPI (Cycles Per Instruction)是每条指令执行的平均周期数 T是一个周期的时间长度。 RISC的速度要比CISC快3倍左右,关键是RISC的CPI减小了null硬件方面: 采用硬布线控制逻辑,减少指令和寻址方式的种类,使用固定的指令格式,采用LOAD/STORE结构,指令执行过程中设置多级流水线等。 软件方面:十分强调优化编译技术的作用 RISC设计思想也可以用于CISC中null 例如:Intel公司的80x86处理机的CPI在不断缩小, 8088的CPI大于20 80286的CPI大约是5.5 80386的CPI进一步减小到4左右 80486的CPI已经接近2 Pentium处理机的CPI已经与RISC 十分接近 目前,超标量、超流水线处理机的CPI已经达到0.5,实际上用IPC (Instruction Per Cycle)更确切。null2.5.4 RISC的关键技术 1、延时转移技术 定义:为了使指令流水线不断流,在转移指令之后插入一条不相关的有效的指令,而转移指令被延迟执行,这种技术称为延迟转移技术。 采用指令延迟转移技术时,指令序列的调整由编译器自动进行。 说明:(1) 插入的不相关的指令不一定没用。 (2)延时转移和指令取消技术都是为了尽量防止流水线断流,使提前预取出的指令被执行。nullFEFEFEFE1: add r1, r2 2: jmp next2 3: next1: sub r3, r4 …… n: next2: move r4, a产生转移地址指令作废重新取指令因转移指令引起的流水线断流注意:理解流水线的工作过程。nullFEFEFE1: jmp next2 2: add r1, r2 3: next1: sub r3, r4 …… n: next2: move r4, a产生转移地址插入指令重新取指令采用指令延迟转移技术的指令流水线null采用延迟转移技术的两个限制条件 (1) 被移动指令在移动过程中与所经过的指令之间不能有数据相关 (2) 被移动指令不破坏条件码,至少不影响后面的指令使用条件码 如果找不到符合条件的指令,必须在条件转移指令后面插入空操作;如果指令的执行过程分为多个流水段,则要插入多条指令null调整前的指令序列: 1: move r1, r2 2: cmp r3, r4 ;(r3)与(r4)比较 3: beq exit ;如果(r3)=(r4)则转移到next 4: add r4, r5 …… n: next: move r4, a 调整后的指令序列: 1: cmp r3, r4 ;(r3)与(r4)比较 2: beq exit ;如果(r3)=(r4)则转移到next 3: move r1, r2null 4: add r4, r5 …… n: next: move r4, a 思考:可否将cmp r3, r4放在跳转指令的后面? 2、指令取消技术 采用指令延时技术,在许多情况下找不到可以用来调整的指令;分为三种情况: (1) 向后转移(循环程序) 实现方法:循环体的第一条指令经调整后安排在两个位置,第一个位置是在循环体的前面,第二个位置安排在循环体的后面。null 如果转移成功,则执行循环体后面的指令,然后返回到循环体开始;否则,则取消循环体后面的指令,继续执行后面的指令。例子: 调整前 调整后 loop: X X X X X X Y Y Y loop: Y Y Y …… …… Z Z Z Z Z Z cmp r1, r2, loop cmp r1, r2, loop W W W X X X W W Wnull 效果:能够使指令流水线在绝大多数情况下不断流,由于绝大多数情况下,转移是成功的。 (2) 向前转移(if-then) 实现方法:如果转移不成功执行下条指令,否则取消下条指令。例子: R R R …… S S S ;If部分的程序代码 cmp r1, r2, thru ;若转移,则取消TTT T T T ;若不转移,则执行TTT …… ;Then部分的程序代码null …… U U U ;Then部分的程序代码 thru: VVV 效果:成功与不成功的概率通常各为50% (3) 隐含转移技术 应用场合:用于if..then..结构,且then部分只有一条指令 实现方法:把IF的条件取反,如果取反后的条件成立则取消下条指令,否则执行下条指令。null 例子:if (a=, ra, rb ;若(ra)>=(rb)则取消 下条指令 inc rb 3、重叠寄存器窗口技术 (Overlapping Register Window) 用途:用于解决子程序之间因参数传递而访问存储器的问题。 原因:RISC中,子程序比CISC中多因传送参数而访问存储器的信息量很大 美国加洲大学伯克利分校的F .Baskett提出 实现方法: 设置一个数量比较大的寄存器堆,并把它null 划分成很多个窗口。在每个过程使用的几个窗口中有一个窗口是与前一个过程共用,还有个窗口是与下一个过程共用 SUN公司的Sparc、SuperSparc、UtraSparc处理机,把最后一个过程与第一个过程的公用寄存器重叠起来,形成一个循环圈 效果:可以减少大量的访存操作。另外,要在主存中开辟一个堆栈,当调用层数超过规定层数(寄存器溢出)时,把溢出部分的寄存器中内容压入堆栈。 例子:(在RISC II中采用的方法)nullA局部寄存器B局部寄存器AB公用寄存器BC公用寄存器C局部寄存器CD公用寄存器……全局寄存器09108489839099100105106115116121122131132137物理寄存器null0传送参数A局部寄存器传送参数传送参数B局部寄存器传送参数传送参数C局部寄存器传送参数局部寄存器与过程B合用全局寄存器9101516252631与过程A合用局部寄存器与过程C合用全局寄存器与过程B合用局部寄存器全局寄存器寄存器重叠寄存器重叠nullRISC II溢出次数程序名称调用次数最大调用深度RISC II访问次数VAX-11访问次数111K (0.7%)43K (8.0%)Quick SortPuzzle1020641244K (0.8%)8K (1.0%)696K (50%)444K (28%)寄存器窗口技术的效果nullMC68000机器类型VAX-11PDP-11RISC II5执行指 令条数1996过程调用所需开销的比较26执行时 间 (s)2219210访问内 存次数15120.2注:Quick sort程序的调用次数多,深度 不大,而Puzzle程序正好相反。null4、指令流调整技术 影响流水线效率的因素:数据相关。 目标:通过变量重新命名消除数据相关,提高流水线执行效率 例子:调整后的指令序列比原指令序列的执行速度快一倍 add r1, r2, r3 add r1, r2, r3 add r3, r4, r5 mul r6, r7, r0 mul r6, r7, r3 add r3, r4, r5 mul r3, r8, r9 mul r0, r8, r9 调整前 调整后null5、以硬件为主固件为辅 固件的主要缺点是:执行速度低 主要优点是:便于实现复杂指令,便于修改指令系统 以硬联逻辑为主来实现指令系统 对于复杂指令,也使用微程序技术实现。null2.5.5 RISC优化编译技术 RISC对编译器带来的方便主要有: 1、指令系统比较简单、对称、均匀,指令选择工作简单 2、选择寻址方式的工作简单,省去了是否生成访问存储器指令的选择工作 3、用于大多数指令在一个周期内执行完成,为编译器调整指令序列提供了极大的方便nullRISC对编译器造成的困难主要有: 1、必须精心安排每一个寄存器的用法,以便充分发挥每一个通用寄存器的效率,尽量减少访问主存储器的次数 2、做数据和控制相关性分析,要调整指令的执行序列,并与硬件相配合实现指令延迟技术和指令取消技术等 3、要设计复杂的子程序库,RISC的子程序库通常要比CISC的子程序库大得多null本 章 重 点 1、浮点数的性质和设计方法 2、自定义数据表示方法的原理 3、寻址方式的选择方法 4、指令格式的优化设计 5、RISC思想 6、RISC的关键技术
/
本文档为【系统结构chpt2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索