type
status
date
slug
summary
tags
category
icon
password
Property
机器指令
- 指令的格式是什么?操作码 地址码 寻址方式
- 指令的字长:固定字长、可变字长
指令的一般格式
操作码:反映机器做什么操作
- 长度固定:用于指令字长较长的情况,RISC,如IBM370操作码 8 位
- 长度可变:操作码分散在指令字的不同字段中
- 扩展操作码技术
操作码的位数随地址数的减少而增加
需要遵守,短操作码不能是长操作码的前缀
地址码
四地址通过将下一条地址放入PC中,删除A4空间,变为三地址,寻址范围变大。
在三地址中可以通过将操作结果放入到一个知道的操作数中,这样就可以从三地址变为两地址,寻址范围又增加了。
若将操作结果指定放入ACC寄存器中,这样也可以减少一次访存操作
当我们的一个操作数指定存放在ACC中,这样我们就可以再减少一个操作数地址,访存范围增加,且只需要两次访存操作。
指令字长
- 固定长度,可变字长
- 取决于:
- 操作码长度
- 操作数地址的长度
- 操作数地址的个数
- 指令字长固定:
- 指令字长=存储字长,这样当取一条指令的时候,只需要一次访存操作
- 指令字长可变:
- 按字节倍数变化,如果不按照字节倍数,取出的数据还需要就绪其他的处理,且PC寄存器不好设计
- 当使用一些硬件资源代替指令字中的地址码字段后
- 可以扩大指令寻址范围
- 缩短指令字长
- 减少访存次数
- 当指令地址字段为寄存器
- 缩短指令字长
- 指令执行阶段可以不访存
三地址 OP R1, R2, R3
二地址 OP R1, R2
一地址 OP R1
操作数类型和操作类型
操作数类型
- 地址 无符号整数
- 数字 定点数,浮点数,十进制数
- 字符 ASCII
- 逻辑数 逻辑运算
数据在存储器中的存放方式
- 大小端方式
大端:高位数存放在高地址
小端:高位数存放在低地址
- 字节编址,数据在存储器中的存放方式(存储字长64,机器字长32)
操作类型
- 数据传输指令
- 算数逻辑指令
- 移位操作:算数移位、逻辑移位、循环移位(带进位和不带进位)
- 转移指令
- 无条件转移 JMP
- 条件转移
- 调用和返回
- 陷阱(Trap)与陷阱指令:
意外事故的中断,一般不提供给用户直接使用在出现事故时,由 CPU 自动产生并执行(隐指令)
设置供用户使用的陷阱指令:
- 输入输出
寻址方式
确定本条指令的操作数地址,下一条欲执行指令的指令地址
指令寻址
指令寻址分为顺序寻址和跳跃寻址两种
- 顺序寻址:通过程序计数器PC加1,自动形成下一跳指令的地址,( PC ) + 1->PC
- 跳跃寻址:通过转移类指令实现。
数据寻址
立即寻址
直接寻址
隐含寻址
间接寻址
寄存器寻址
寄存器间接寻址
基址寻址
变址寻址
相对寻址
堆栈寻址
指令格式举例
设计指令格式时应考虑的各种因素
- 指令系统的兼容性(向上兼容)
- 其他因素
操作类型 包括指令个数及操作的难易程度
数据类型 确定哪些数据类型可参与操作
指令格式 指令字长是否固定
操作码位数、是否采用扩展操作码技术,
地址码位数、地址个数、寻址方式类型
寻址方式 指令寻址、操作数寻址
寄存器个数 寄存器的多少直接影响指令的执行时间
RISC 技术
RISC是精简指令系统计算机的英文缩写,即Reduced Instruction Set Computer;与其对应的是CISC,即复杂指令系统计算机(Complex Instruction Set Computer)。
计算机发展至今,机器的功能越来越强,硬件结构越来越复杂。尤其是随着集成电路技术的发展及计算机应用领域的不断扩大,计算机系统的软件价格相对而言在不断提高。为了节省开销,人们希望已开发的软件能被继承、兼容,这就希望新机种的指令系统和寻址方式一定能包含旧机种所有的指令和寻址方式。通过向上兼容不仅可降低新机种的开发周期和代价,还可吸引更多的新、老用户,于是出现了同类型的系列机。在系列机的发展过程中,致使同一系列计算机指令系统变得越来越复杂,某些机器的指令系统竟可包含几百条指令。例如DEC公司的VAX—11/780有16种寻址方式,9种数据格式,303条指令。又如32位的68020微机指令种数比6800多两倍,寻址方式多11种,达18种之多,指令长度从一个字(16位)发展到16个字。这类机器被叫做复杂指令系统计算机,简称CISC。
通常对指令系统的改进都是围绕着缩小与高级语言语义的差异和有利于操作系统的优化而进行的。由于编写编译器的人们其任务是为每一条高级语言的语句编制一系列的机器指令,而如果机器指令能类似于高级语言的语句,显然编写编译器的任务就变得十分简单了。于是人们产生了用增加复杂指令的办法来缩短与语义的差距。后来又发现,倘若编译器过多依赖复杂指令,同样会出现新的矛盾。例如对减少机器代码、降低指令执行数以及为提高流水性能而优化生成代码等都是非常不利的。尤其当指令过于复杂时,机器的设计周期会很长、资金耗费会更大。
为了解决这些问题,20世纪70年代中期,人们开始进一步分析研究CISC,发现一个80-20规律,即典型程序中80%的语句仅仅使用处理机中20%的指令,而且这些指令都是属于简单指令,如取数、加、转移等等。这一点告诫人们,付出再大的代价增添复杂指令,也仅有20%的使用概率,而且当执行频度高的简单指令时,因复杂指令的存在,致使执行速度也无法提高。
人们从80—20规律中得到启示:能否仅仅用最常用的20%的简单指令,重新组合不常用的80%的指令功能呢?这便引发出RISC技术。
RISC的主要特征
RISC技术是用20%的简单指令的组合来实现不常用的80%的那些指令功能,但这不意味着RISC技术就是简单地精简其指令集。在性能方面,RISC技术还采取了许多有效措施,最有效的办法就是减少指令的执行周期数。
计算机执行程序所需的时间P可用下式表述:
其中I是高级语言程序编译后在机器上运行的机器指令数,C为执行机器指令所需的平均机器周期,T是每个机器周期的执行时间。
下表列出了第二代RISC机与CISC机的I、C、T统计,其中I、T为比值,C为实际周期数。
由于RISC指令比较简单,用这些简单指令编制出的子程序来代替CISC机中比较复杂的指令,因此RISC中的I比CISC多20%~40%。但RISC的大多数指令仅用一个机器周期完成,C的值比CISC小得多。而且RISC结构简单,完成一个操作所经过的数据通路较短,使T值也大大下降。因此总折算结果,RISC的性能仍优于CISC 2~5倍。
由于计算机的硬件和软件在逻辑上的等效性,使得指令系统的精简成为可能。曾有人在1956就证明,只要用一条“把主存中指定地址的内容同累加器中的内容求差,把结果留在累加器中并存入主存原来地址中”的指令,就可以编出通用程序。
又有人提出,只要用一条“条件传送(CMOVE)”指令就可以做出一台计算机。并在1982年某大学做出了一台8位的CMOVE系统结构样机,叫做SIC(单指令计算机)。而且,指令系统所精简的部分可以通过其他部件以及软件(编译程序)的功能来替代,因此,实现RISC技术是完全可能的。
RISC的主要特点
- 选取使用频率较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现。
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有取数/存数(LOAD/STORE)指令访问存储器:其余指令的操作都在寄存器内完成
- 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期
- 控制器采用组合逻辑控制,不用微程序控制
- CPU中有多个通用寄存器
- 采用优化的编译程序
值得注意的是,商品化的RISC机通常不会是纯RISC机,故上述这些特点不是所有RISC机全部具备的
RISC和CISC的比较
与CISC机相比,RISC机的主要优点可归纳如下:
- 充分利用VLSI芯片的面积
CISC机的控制器大多采用微程序控制,其控制存储器在CPU芯片内所占的面积为50%以上,而RISC机控制器采用组合逻辑控制,其硬布线逻辑只占CPU芯片面积的10%左右。可见它可将空出的面积供其他功能部件用
- 提高计算机运算速度,RISC机能提高运算速度,主要反映在以下5个方面
- RISC机的指令数、寻址方式和指令格式种类较少,而且指令的编码很有规律,因此RISC的指令译码比CISC快
- RISC机内通用寄存器多,减少了访存次数,可加快运行速度
- RISC机采用寄存器窗口重叠技术,程序嵌套时不必将寄存器内容保存到存储器中,故又提高了执行速度
- RISC机采用组合逻辑控制,比采用微程序控制的CISC机的延迟小,缩短了CPU的周期
- RISC机选用精简指令系统,适合于流水线工作,大多数指令在一个时钟周期内完成
- 便于设计,可降低成本,提高可靠性
RISC机指令系统简单,故机器设计周期短。 RISC机逻辑简单,设计出错可能性小,有错时也容易发现,可靠性高
- 有效支持高级语言程序
RISC机靠优化编译来更有效地支持高级语言程序。由于RISC指令少,寻址方式少,使编译程序容易选择更有效的指令和寻址方式。而且由于RISC机的通用寄存器多,可尽量安排寄存器的操作,使编译程序的代码优化效率提高。