- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
archit42,architecture,architect,arch,architgo,www.architbang.com,architdaily,architbang
计算机系统结构 第2章 计算机指令集结构 高等计算机系统结构Computer Architecture 第2章 计算机指令集结构 (Instruction Set Architecture) 第2章 计算机指令集结构 指令集结构(ISA) RISC指令集的特点 MIPS64指令集 2.1 指令集结构的分类 指令集结构早期面向累加器、堆栈,现在主要支持通用寄存器。 通用寄存器结构的优势主要体现在: 寄存器访问速度比存储器快 编译器能更加容易、有效地分配和使用寄存器 寄存器可以用来存储变量 通用寄存器指令集结构还可以分成: 寄存器-存储器结构(RM结构),对应CISC 寄存器-寄存器结构(RR结构),对应RISC 存储器-存储器结构(MM结构),不采用 四种典型的指令集结构 堆栈型 例如Intel 80x87 累加器型 例如早期8位微处理器Z80 寄存器-存储器型 例如Intel 80x86 寄存器-寄存器型(Load-Store) 读取存储器操作数只有LOAD指令,存储存储器操作数只有STORE指令,算术运算ALU等操作均在寄存器之间进行 例如MIPS,Intel 80x86的IN-OUT指令形式 C=A+B C=A+B实例 通用寄存器结构 通用寄存器GPR(General-Purpose Register)比存储器快,编译器使用寄存器更方便,寄存器可以用来存放变量 寄存器-寄存器结构具有简单、定长的指令编码,采用简单的代码生成模式,每条指令执行的时钟周期相近。但其程序的指令条数多,目标代码较大 寄存器-存储器结构可以直接访问存储器,容易对指令进行编码,生成的目标代码较小。但其操作数类型不同,需同时对存储器和寄存器进行编码,指令执行的时钟周期数也不尽相同 2.2 寻址方式 基本寻址方式 指令集结构采用多种寻址可以显著地减少程序的指令条数(IC),但这同时也可能增加实现的复杂度和使用这些寻址方式的指令的执行时钟周期数(CPI) 统计表明:寄存器寻址方式占访问操作数的一半,存储器(含立即数)寻址方式占另一半 存储器寻址方式中,使用频率较高是立即数寻址方式和偏移寻址 偏移寻址中的偏移量大小分布十分广泛 立即数寻址中的立即数编码字段至少为8~16位 2.3 指令集结构的功能设计 基本操作类型 所有指令集结构需要支持最基本的指令类型: 算术和逻辑运算 数据传输 控制指令 指令集结构通常提供基本的系统功能支持 具有浮点计算功能的指令集结构均提供浮点操作的浮点指令 程序中使用最多的是一些简单指令 2.3.1 CISC指令集结构的功能设计 面向目标程序增强指令功能 增强运算型指令的功能 增强数据传送指令的功能 增强程序控制指令的功能 面向高级语言的优化实现改进指令集 增加对高级语言和编译器的支持 高级语言机器 面向操作系统的优化实现改进指令集 2.3.2 RISC指令集结构的功能设计 选取使用频率最高的指令,补充一些最有用的指令 简单统一的指令格式,编码长度相同(32或64位),减少寻址方式 指令在一个机器周期内执行完成 只有LOAD和STORE指令才访问存储器,其他指令操作均在寄存器之间进行 大多数指令采用硬布线实现 强调优化编译器的作用,生成优化代码 充分利用流水线等先进技术 2.3.3 控制指令 条件转移(Branch) 无条件跳转(Jump) 过程调用(Call) 过程返回(Return) 分支指令(条件转移指令) 控制指令中,条件转移指令的使用频度最高,常用三种表示分支条件的技术: 条件码(cc):由ALU操作设置特殊的条件位 条件寄存器:根据比较结果测试条件寄存器 比较且分支:分支指令本身含有比较操作 条件转移值得注意的一个特点是:大量的条件仅仅是简单的测试,而且其中大部分是测试某个值是否为零 在包括整数比较和浮点数比较的测试当中,小于(或等于)分支占据主要地位 2.4 操作数的类型和大小 操作数的主要表示(形式): 字符:一个字节ASCII码,也有16位Unicode码 整数:一个字节、半字(16位)、字(32位)、双字(64位),二进制补码表示 浮点数:单精度、双精度,符合IEEE754标准 有些指令集结构还支持 字符串 十进制(压缩和非压缩BCD码) 向量 堆栈 2.5 指令格式的设计 指令如何编码成CPU可以执行的二进制代码? 指令编码需要在几个因素之间找最佳平衡点: 尽可能有更多的寄存器和寻址方式 寄存器和寻址方式字段尽量少增加指令长度 指令长度和编码易于采用流水线处理 三种编码格式 变长编码格式(CISC ,如:Intel 80x86 ) 固定长度编码格式(RISC,如:MIPS) 混合编码格式(如:IBM 360/370) 如果生成代码的大小比程序运行速度更重要,应选择变长编码方法;如果更关心程序的运行性能,应选择定
文档评论(0)