《计算机系统结构指令集设计基础知识》由会员分享,可在线阅读,更多相关《计算机系统结构指令集设计基础知识(58页珍藏版)》请在金锄头文库上搜索。
1、课程编号:13041000山东大学软件学院 戴鸿君计算机系统结构(2012年春)-指令集设计:基础知识山东大学计算机学院戴鸿君 课程编号:13041000山东大学软件学院 戴鸿君大纲数据表示CISC与RISCLi-2.1,Li-2.2,Li-2.4Pa-B.2, Pa-B.32024/8/2课程编号:13041000山东大学软件学院 戴鸿君数据表示数据表示与数据结构高级数据表示浮点数尾数基值大小和下溢处理方法的选择(选讲)2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据表示定义:机器硬件能直接识别和引用的数据类型。条件:相应的运算指令和运算硬件(处理部件)。分类:基本数据表
2、示、高级数据表示、自定义数据表示。目标:缩小高级语言和机器语言间的语义差别提高性能/价格比节省处理时间和存储空间实现:最小的存储空间、最简单的存取算法。2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据表示与数据结构数据表示:由硬件实现的数据类型数据结构:面向计算机系统软件、面向应用领域所需处理的数据类型。由软件实现的数据类型。目标:最大限度满足应用要求、最简化的方法实现。实现:通过数据表示和软件映象相结合方法实现。数据表示是数据类型的子集。数据表示的确定实质上是软、硬件的取舍问题数据结构和数据表示是软、硬件的界面 2024/8/课程编号:13041000山东大学软件学院 戴
3、鸿君数据类型定义:具有一组值的集合,且定义了作用于该集合的操作集。目的:防止不同类型数据间的误操作。分类:基本类型、结构类型。基本数据类型内容:二进制位、二进制位串、整数、十进制数、浮点数、字符、布尔数等。结构数据类型定义:由一组相互有关的数据元素复合而成的数据类型。分类:系统数据类型、用户自定义数据类型内容:数组、字符串、向量、堆栈、队列、记录等2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据表示中应表达的内容数值的表达进位制数、负数、小数点的方式字符和符号的表达ASCII码数据单位的表达字:逻辑单位,一条指令处理的数据单位。字节、半字、字、双字数据的属性类型、存放的位置
4、、对数据的约束2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据表示的发展定点数据表示用定点数表示浮点数不方便而低效50年代提出变址操作,为向量、阵列提供方便。用循环遍历向量和阵列可变长字符串数据表示支持串数据结构的实现用于输入、输出、事务处理和编译2024/8/课程编号:13041000山东大学软件学院 戴鸿君高级数据表示自定义数据表示(Self_defining)带标识符的数据表示 数据描述符向量数组数据表示堆栈数据表示2024/8/课程编号:13041000山东大学软件学院 戴鸿君带标识符的数据表示 主要用于指明数据类型(如二进制整数、十进制整数等,也可用于指明及其内部
5、所用信息的各种类型。 对高级程序员透明。类型标志数据值2024/8/课程编号:13041000山东大学软件学院 戴鸿君带标识符的数据表示的优缺点优点:简化指令系统和程序设计简化编译程序便于一致性校验能由硬件自动完成数据类型的变换支持数据库系统的实现与数据类型无关的要求为软件调试和应用软件开发提供支持;缺点:n使程序所占用的主存空间增加(如下图)n降低指令的执行速度;2024/8/课程编号:13041000山东大学软件学院 戴鸿君采用标识符缩短操作码而节省程序空间AB采用标识符数据字增长不采用标识符数据(少)指令(多)采用标识符指令字缩短通常有面积B面积A2024/8/课程编号:13041000
6、山东大学软件学院 戴鸿君数据描述符101各种标识符长度地址000数据描述符 数据目的:描述复杂和多维的结构类型。2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据描述符与带标识符的区别 标识符是和每一个数据相连的,合存在一个存储单元中,描述单个数据的类型特征。描述符是和数据分开存放的,专门用来描述所要访问的数据是整块数据还是单个数据,访问该数据块或数据元素需要的地址以及其他特征信息等。2024/8/课程编号:13041000山东大学软件学院 戴鸿君数据描述符实现阵列数据的索引比变址方法实现的好,而且能检查程序设计中阵列越界错误。为向量、数组数据结构的实现提供一定的支持,有利于
7、简化编译中的代码生成。工作过程:如下图2024/8/课程编号:13041000山东大学软件学院 戴鸿君描述符的工作过程010000000010010010XY操作码指令描述符描述符地址生成逻辑(数据)(数据)数据块数据块主存储器2024/8/1013101410141014000a11000a12000a13000a14000a21000a22000a23000a24000a31000a32000a33000a342024/8/课程编号:13041000山东大学软件学院 戴鸿君堆栈数据表示有利于编译和子程序调用。堆栈机器:具有堆栈数据表示的机器。有若干高速寄存器组成的硬件堆栈,并附加控制电路让
8、它与主存中的堆栈区在逻辑上组成一个整体,使堆栈的访问速度是寄存器的,堆栈的容量是主存的;有很丰富的堆栈操作类指令(数十条)且功能很强,直接可对堆栈中的数据进行各种运算和处理;2024/8/课程编号:13041000山东大学软件学院 戴鸿君堆栈数据表示(续)有力地支持高级语言程序的编译;算术赋值表达式F=A*B+C/(D-E)逆波兰表达式 AB*CDE-/+有力地支持子程序的嵌套和递归调用。减少大量辅助性工作多使用零地址指令存储效率高2024/8/课程编号:13041000山东大学软件学院 戴鸿君浮点数二进制的定点数符号数值、反码、补码浮点数数据表示IEEE标准754 1985年提出三部分:符号
9、位、指数、尾数浮点数尾数基值的选择浮点数尾数下溢处理方法2024/8/课程编号:13041000山东大学软件学院 戴鸿君IEEE 754标准准William Kahan加州大学伯克利分校数学系教授帮助Intel公司设计了8087浮点处理器1989年图灵奖This standard defines a family of commercially feasible ways for new systems to perform binary floating-point arithmetic2024/8/21课程编号:13041000山东大学软件学院 戴鸿君IEEE754表示:若E=0且M=0,
10、N为0若E=0且M0,N=(-1)S2-126 (0.M),非规格化数;若1E254,N=(-1)S2E-127 (1.M),规格化数;若E=255且M 0,N=NaN(非数值);若E=255且M = 0,N= (-1)S (无穷大)2024/8/课程编号:13041000山东大学软件学院 戴鸿君浮点数尾数下溢处理方法000110110000:000:111:011:1x处理结果恒置“1”法000110110000:000:111:011:1x处理结果截断法000110110000:000:111:011:1x处理结果舍入法000110110000:000:111:011:1x处理结果查表舍入
11、法2024/8/课程编号:13041000山东大学软件学院 戴鸿君寻址方式寻址方式:是指令按什么方式寻找(访问)到所需的操作数或信息的。寻址方式分析逻辑地址与主存物理地址2024/8/课程编号:13041000山东大学软件学院 戴鸿君寻址方式分析面向主存:主要访问内存,少量访问寄存器面向通用寄存器:多数在寄存器,少量在内存面向堆栈:主要在堆栈,可减轻编译负担 2024/8/课程编号:13041000山东大学软件学院 戴鸿君寻址方式分析寻址方式的种类立即寻址、直接寻址、间接寻址、相对寻址、变址寻址、寄存器寻址 寻址方式在指令中的指明方式 操作码占用位:DJS200地址码设置寻址方式字段:VAX-
12、11寻址灵活、操作码短 2024/8/课程编号:13041000山东大学软件学院 戴鸿君逻辑地址与主存物理地址逻辑地址:程序员编写程序时使用的地址。物理地址:程序在主存中的实际地址。早期,二者一致一般来讲,逻辑地址的空间大于物理地址的空间。 因此,映射实际上是压缩。2024/8/课程编号:13041000山东大学软件学院 戴鸿君再定微技术静态再定位:用软件方法把目标程序的逻辑地址变换成物理地址,而在程序的执行过程中,物理地址不再改变。动态再定位:在执行每条指令时才形成访存物理地址的方法。通过基址寻址。2024/8/课程编号:13041000山东大学软件学院 戴鸿君变址寻址与基址寻址区别变址寻址
13、:支持向量、数组,实现循环;基址寻址:支持逻辑地址到物理地址的变换,实现动态再定位;存储保护:设置多对上、下界寄存器。2024/8/课程编号:13041000山东大学软件学院 戴鸿君整数边界存储概念信息在存储器中按整数边界存储的概念让任何时候所需的信息都只用一个存储周期访问到,要求信息在主存中存放的地址必须使该信息宽度的整数倍。即字节信息地址:XXXXX半字信息地址:XXXX0单字信息地址:XXX00双字信息地址:XX000保证访存速度造成浪费2024/8/课程编号:13041000山东大学软件学院 戴鸿君字字单 字单字双半字节8个字节主存宽度单 字单 字双 字字节浪费半字浪 费8个字节主存宽
14、度对齐的概念2024/8/2024/8/32课程编号:13041000山东大学软件学院 戴鸿君指令集的形式堆栈型累加器型存储器-寄存器型寄存器-寄存器型2024/8/332024/8/342024/8/35课程编号:13041000山东大学软件学院 戴鸿君大小端的概念如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。地址偏移大端模式小端模式0x00 12(OP0)78(OP3)0x01 34(OP1)56(OP2)0x02 56(OP2)34(OP1)0x03 78(OP3)12(OP0)2024/8/36202
15、4/8/37课程编号:13041000山东大学软件学院 戴鸿君按简化指令功能的方向发展精简指令系统思想的提出IBM公司的John Cocke设计一个电话交换系统的控制器,1979年研制出32位的IBM 801 小型计算机,120条指令,10MIPS(1千万条指令/秒)。1979年,美国加州大学伯克利分校David Patterson研究小组开始研究RISC系统。1981年Patterson等人研制了32位RISC I微处理器,共31种指令,3种数据类型,2种寻址方式;研制周期10个月,比当时最先进的MC68000和Z8002快3至4倍;1983年又研制了RISC II,指令种类扩充到39种,单
16、一的变址寻址方式,通用寄存器138个课程编号:13041000山东大学软件学院 戴鸿君CISC的主要特点指令系统庞大,指令功能复杂,指令格式、寻址方式多;绝大多数指令需多个机器周期完成;各种指令都可访问存储器;采用微程序控制;有专用寄存器,少量;难以用优化编译技术生成高效的目标代码程序;课程编号:13041000山东大学软件学院 戴鸿君CISC存在的问题指令系统庞大,指令功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂;80%的指令在20%的运行时间使用;无法并行;无法兼容;课程编号:13041000山东大学软件学院 戴鸿君从CISC到RISCCISC指令系统存在的问题:
17、20与80规律CISC中,大约20的指令占据了80的处理机时间。其余80指令:使用频度只占20的处理机运行时间VLSI技术的发展引起的问题VLSI工艺要求规整性,RISC正好适应了VLSI工艺的要求主存与控存的速度相当,简单指令没有必要用微程序实现,复杂指令用微程序实现与用简单指令组成的子程序实现没有多大区别;由于VLSI的集成度迅速提高,使得生产单芯片处理机成为可能。课程编号:13041000山东大学软件学院 戴鸿君从CISC到RISC(续)软硬件的功能分配问题复杂的指令使指令的执行周期大大加长一般CISC处理机的指令平均执行周期都在4以上,有些在10以上CISC增强了指令系统功能,简化了软
18、件,但硬件复杂了,设计周期加长。课程编号:13041000山东大学软件学院 戴鸿君减少CPI是RISC思想的精华程序执行时间的计算公式:P = I CPI T 其中:P是执行这个程序所使用的总的时间;I是这个程序所需执行的总的指令条数;CPI 是每条指令执行的平均周期数T是一个周期的时间长度。RISC的速度要比CISC快3倍左右,关键是RISC的CPI减小了课程编号:13041000山东大学软件学院 戴鸿君硬件方面:采用硬布线控制逻辑,减少指令和寻址方式的种类,使用固定的指令格式,采用LOAD/STORE结构,指令执行过程中设置多级流水线等。软件方面:十分强调优化编译技术的作用RISC设计思想
19、也可以用于CISC中类型CISC指令条数I指令平均周期数CPI周期时间T121533ns5nsRISC1.31.41.11.410ns2ns课程编号:13041000山东大学软件学院 戴鸿君例如:Intel公司的80x86处理机的CPI在不断缩小8088的CPI大于2080286的CPI大约是5.580386的CPI进一步减小到4左右80486的CPI已经接近2Pentium处理机的CPI已经与RISC十分接近目前,超标量、超流水线处理机的CPI已经达到0.5,实际上用IPC (Instruction Per Cycle)更确切。课程编号:13041000山东大学软件学院 戴鸿君RISC的定义
20、90年代初,IEEE的Michael Slater对RISC定义的描述:RISC为使流水线高效率执行,应具有:简单而统一格式的指令译码大部分指令可以单周期执行完成仅Load和Store指令可以访问存储器简单的寻址方式采用延迟转移技术采用LOAD延迟技术RISC为使优化编译器便于生成优化代码,应具有:三地址指令格式、较多的寄存器、对称的指令格式课程编号:13041000山东大学软件学院 戴鸿君RISC的设计原则使用频度很高的指令(精简指令条数)大大减少寻址方式(指令字等长)所有指令在一个机器周期完成扩大通用寄存器个数采用硬联控制实现,提高速度通过精简指令和优化设计编译程序,以简单有效的方式支持高
21、级语言课程编号:13041000山东大学软件学院 戴鸿君CISC与RISC的主要特征对比功 能CISCRISC指令系统复杂、庞大简单、精确指令条数200444指令字长不固定32bit可访存指令不加限制只有LOAD/STORE各种指令使用频率相差太大相差不大各种指令执行时间相差太大绝大多数一周期完成优化编译系统很难较容易程序源代码长度短长控制逻辑实现方式绝大多数微程序控制绝大多数为硬连线控制课程编号:13041000山东大学软件学院 戴鸿君主要RISC产品DEC公司DEC Alpha 21064,21066, 21164 ,21264MIPS公司(SGI公司)R3000,R4000,R8000,
22、R10000,R12000, RT5IBM, Motorola ,ApplePowerPC 601,602,603,603E,604,615,620,630,640Power3、Power4、Power5HP公司PA-RISC8000SUN公司Sun SPARC MicroSPARC, SuperSPARC,UltraSPARC课程编号:13041000山东大学软件学院 戴鸿君RISC技术的发展采用RISC后的好处简化指令系统设计提高机器的执行速度和效率降低设计成本,提高系统可靠性提供直接支持高级语言的能力,简化编译程序的设计RISC的不足指令少,加重汇编程序员的负担浮点运算和虚拟存储器支持不
23、足编译程序难写课程编号:13041000山东大学软件学院 戴鸿君堆栈计算机罗伯特巴登B5000两个操作数放在堆栈中执行结果自动送入堆栈指令中不需要地址部分。指令中需要相对指针的地址即可特点存储空间节省(省掉了指令的地址部分) 程序紧凑(去掉了所有中间结果的存取指令)2024/8/51课程编号:13041000山东大学软件学院 戴鸿君逆波兰表达式(a+b)*(c+d)转换为ab+cd+*d+入栈和出栈就可以搞定任何普通表达式的运算。运算方式如下:当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。2024/8/52课程
24、编号:13041000山东大学软件学院 戴鸿君逆波兰表达式(2)转换过程包括用下面的算法读入中缀表达式的操作数、操作符和括号:1. 初始化一个空堆栈,将结果字符串变量置空。2. 从左到右读入中缀表达式,每次一个字符。3. 如果字符是操作数,将它添加到结果字符串。4. 如果字符是个操作符,弹出(pop)操作符,直至遇见开括号(opening parenthesis)、优先级较低的操作符或者同一优先级的右结合符号。把这个操作符压入(push)堆栈。5. 如果字符是个开括号,把它压入堆栈。6. 如果字符是个闭括号(closing parenthesis),在遇见开括号前,弹出所有操作符,然后把它们添
25、加到结果字符串。7. 如果到达输入字符串的末尾,弹出所有操作符并添加到结果字符串。2024/8/53课程编号:13041000山东大学软件学院 戴鸿君信息论1948年香农发表的通讯的数学理论信息是负熵信息是选择的自由度消息是信息的外壳,信息是消息的内核信息既不是物质,又不是能量,信息就是信息。信息存在于自然界,也存在于人类社会!2024/8/54课程编号:13041000山东大学软件学院 戴鸿君信息的概念信息是标志事物存在及其关系的属性。信息可以界定为由信息源(如自然界、人类社会等)发出的被使用者接受和理解的各种信号。事件发生的概率大,事先容易判断,有关此事件的消息排队事件发生的不确定程度小,
26、则包含的信息量就小;反之则大2024/8/55课程编号:13041000山东大学软件学院 戴鸿君信息特征可识别可转换可传递可加工处理可多次利用(无损耗性)在流通中扩充主客体二重性信息的能动性可共享性信息与物质和能量的主要区别。信息的产生、存在和流通,依赖于物质和能量,没有物质和能量就没有能动作用。信息可以控制和支配物质与能量的流动。2024/8/56课程编号:13041000山东大学软件学院 戴鸿君四次信息技术革命第一次革命是人类创造了语言和文字,接着现出了文献。第二次革命是造纸和印刷技术的出现。第三次革命是电报、电话、电视及其它通讯技术的发明和应用。第四次革命是电子计算机和现代通讯技术在信息工作中的应用。信息爆炸2024/8/57课程编号:13041000山东大学软件学院 戴鸿君香农(1916-2001)大部分在贝尔实验室和MIT度过两大贡献信息理论、信息熵的概念符号逻辑和开关理论通信领域的大师级人物5台钢琴、30多种其他乐器骑独轮车,手里抛着三个球上班踩着高跷骑摩托,有两个座位的独轮车下棋机器、迷宫老鼠二战期间研究德军密码破译2024/8/58