概述
6.指令系统
计算机指令系统是计算机硬件的语言系统,也叫机器语言,它是软件和硬件的主要界面,从系统结构的角度看,它是系统程序员看到的计算机的主要属性。
指令系统是计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。不同计算机的指令系统包含的指令种类和数目也不同。一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、输入和输出型等指令。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。
机器指令:通常将要求硬件直接实现某种运算或操作的命令称为机器指令。
指令系统:所有机器指令的集合。
指令格式:指令格式通常由操作码字段和地址码字段构成。
指令字长:一个机器指令包含的二进制信息位数,指令字长取决于操作码长度,地址码长度,指令字长必须是存储字长的倍数,不然没有办法表示下条指令。
机器字长:CPU能够直接处理的二进制位数,通常与CPU内部的指令寄存器的位数相同。
扩展编码:这个问题较为复杂,新开一题解答;
堆栈:堆栈采用后进先出的顺序存取方式,注意,此处的堆栈和C语言里面的堆栈不相同,这里的推栈就是栈而已。典型的应用是暂存调用/返回指令的指令地址。
指令系统的性能决定了计算机的基本功能,它的设计直接关系到计算机的硬件结构和用户的需要。一个完善的指令系统应满足如下四方面的要求:
完备性
指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用方便。
有效性
是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。指令系统
规整性
包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。对称性是指:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;匀齐性是指:一种操作性质的指令可以支持各种数据类型;指令格式和数据格式的一致性是指:指令长度和数据长度有一定的关系,以方便处理和存取。
兼容性
至少要能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。
寻址方式
根据指令内容确定操作数地址的过程称为寻址。完善的寻址方式可为用户组织和使用数据提供方便。
①直接寻址:指令地址域中表示的是操作数地址。
②间接寻址:指令地址域中表示的是操作数地址的地址即指令地址码对应的存储单元所给出的是地址A,操作数据存放在地址A指示的主存单元内。有的计算机的指令可以多次间接寻址,如A指示的主存单元内存放的是另一地址B,而操作数据存放在B指示的主存单元内,称为多重间接寻址。
③立即寻址:指令地址域中表示的是操作数本身。
④变址寻址:指令地址域中表示的是变址寄存器号i和位移值D。将指定的变址寄存器内容E与位移值D相加,其和E+D为操作数地址。许多计算机具有双变址功能,即将两个变址寄存器内容与位移值相加,得操作数地址。变址寻址有利于数组操作和程序共用。同时,位移值长度可短于地址长度,因而指令长度可以缩短。
⑤相对寻址:指令地址域中表示的是位移值D。程序计数器内容(即本条指令的地址)K与位移值D相加,得操作数地址K+D。当程序在主存储器浮动时,相对寻址能保持原有程序功能。 此外,还有自增寻址、自减寻址、组合寻址等寻址方式。寻址方式可由操作码确定,也可在地址域中设标志,指明寻址方式。
指令系统 - 种类
常见指令按功能可划分为:
①数据处理指令:包括算术运算指令、逻辑运算指令、移位指令、比较指令等。
②数据传送指令:包括寄存器之间、寄存器与主存储器之间的传送指令等。
③程序控制指令:包括条件转移指令、无条件转移指令、转子程序指令等。
④输入-输出指令:包括各种外围设备的读、写指令等。有的计算机将输入-输出指令包含在数据传送指令类中。
⑤状态管理指令:包括诸如实现置存储保护、中断处理等功能的管理指令
指令格式
指令的最基本格式
【操作码 | 地址码】
(1)操作码: 反应机器做什么操作
操作码的长度在RISC中固定,而在CISC中长度可变。CISC的长度可变是指利用指令的其他字段对操作码字段进行扩展
(2)一条指令至少需要至少包含以下几个信息
1. 操作码
2. 操作数地址
3. 操作结果的存储地址
4. 下一条指令的地址
指令的设计极为灵活,只要包含以上4点信息,就能构成一条指令,而不必在意其字段个数。
指令的操作码表示指令要完成的操作,指令的地址码描述指令操作的对象
指令的分类(按照地址码字段的个数)
(1)零地址指令:(关机指令)
格式:OPCODE - 操作码
指令中只有操作码,而没有地址码
(2)一地址指令:(取反)
格式:【 OPCODE | A 】
A:操作数的存储器地址或寄存器编号。A即可以是操作数地址,又是操作结果的存储地址
(3)二地址指令:add r1 r2
格式:【 OPCODE | A1| A2 】
OPCODE – 操作码
A1:第一个操作数的存储器地址或寄存器地址
A2:第二个操作数的存储器地址或寄存器地址
(4)三地址指令
指令:【 OPCODE | A1 | A2 | A3 】
A1:第一个操作数的存储器地址或寄存器地址
A2:第二个操作数的存储器地址或寄存器地址
A3:操作结果的存储器地址或寄存器地址
(5)多地址指令:
用于大中型机甚至高档小型机中,用于处理成批的数据。
复杂指令系统( CISC)
早期的计算机, 存储器是一个很昂贵的资源, 因此希望指令系统能支持生成最短的程序。此外, 还希望程序执行时所需访问的程序和数据位的总数越少越好。在微程序出现后, 将以前由一串指令所完成的功能移到了微代码中, 从而改进了代码密度。此外, 它也避免了从主存取指令的较慢动作, 从而提高执行效率。在微代码中实现功能的另一论点是: 这些功能能较好的支持编译程序。如果一条高级语言的语句能被转换成一条机器语言指令, 这可使编译软件的编写变得非常容易。此外, 在机器语言中含有类似高级语言的语句指令, 便能使机器语言与高级语言的间隙减少。这种发展趋向导致了复杂指令系统( CISC) 设计风格的形成, 即认为计算机性能的提高主要依靠增加指令复杂性及其功能来获取。
CISC 指令系统的主要特点是:
( 1) 指令系统复杂。具体表现在以下几个方面:
① 指令数多, 一般大于100 条。
② 寻址方式多, 一般大于4 种。
③ 指令格式多, 一般大于4 种。
( 2) 绝大多数指令需要多个机器时钟周期方可执行完毕。
( 3) 各种指令都可以访问存储器。
CISC 指令系统主要存在如下三方面的问题:
( 1) CISC 中各种指令的使用频度相差很悬殊, 大量的统计数字表明, 大约有20%的指令使用频度比较高, 占据了80%的处理机时间。换句话说, 有80%的指令只在20%的处理机运行时间内才被用到。
( 2) VLSI 的集成度迅速提高, 使得生产单芯片处理机成为可能。在单芯片处理机内, 希望采用规整的硬布线控制逻辑, 不希望用微程序。而在CISC 处理机中, 大量使用微程序技术以实现复杂的指令系统, 给VLSI 工艺造成很大困难。
( 3) 虽然复杂指令简化了目标程序, 缩小了高级语言与机器指令之间的语义差距, 然而增加了硬件的复杂程度, 会使指令的执行周期大大加大, 从而有可能使整个程序的执行时间反而增加。[4]
精简指令系统( RISC)
由于CISC 技术在发展中出现了问题, 计算机系统结构设计的先驱者们尝试从另一条途径来支持高级语言及适应VLSI 技术特点。1975 年IBM 公司Jo hn Cocke 提出了精简指令系统的设想。到了1979 年, 美国加州大学伯克莱分校由Patter son 教授领导的研究组, 首先提出了RISC 这一术语, 并先后研制了RISC-Ⅰ和RISC- Ⅱ计算机。1981 年美国的斯坦福大学在Hennessy教授领导下的研究小组研制了M IPS RISC 计算机, 强调高效的流水和采用编译方法进行流水调度, 使得RISC 技术设计风格得到很大补充和发展。
90 年代初, IEEE 的Michael Slater 对于RISC 的定义作了如下描述:RISC 处理器所设计的指令系统应使流水线处理能高效率执行, 并使优化编译器能生成优化代码。
RISC 为使流水线高效率执行, 应具有下述特征:
( 1) 简单而统一格式的指令译码;
( 2) 大部分指令可以单周期执行完成;
( 3) 只有LOAD 和ST ORE 指令可以访问存储器;
( 4) 简单的寻址方式;
( 5) 采用延迟转移技术;
( 6) 采用LOAD 延迟技术。
RISC 为使优化编译器便于生成优化代码, 应具有下述特征:
( 1) 三地址指令格式;
( 2) 较多的寄存器;
( 3) 对称的指令格式。
RISC 的主要问题是编译后生成的目标代码较长, 占用了较多的存储器空间。但由于半导体集成技术的发展, 使得RAM 芯片集成度不断提高和成本不断下降, 目标代码较长已不成为主要问题。RISC 技术存在另一个潜在缺点是对编译器要求较高,除了常规优化方法外, 还要进行指令顺序调度, 甚至能替代通常流水线中所需的硬件联锁功能。
一条指令的执行过程按时间顺序可分为以下几个步骤。
① CPU发出指令地址。将指令指针寄存器(IP)的内容——指令地址,经地址总线送入存储器的地址寄存器中。
② 从地址寄存器中读取指令。将读出的指令暂存于存储器的数据寄存器中。
③ 将指令送往指令寄存器。将指令从数据寄存器中取出,经数据总线送入控制器的指令寄存器中。
④ 指令译码。指令寄存器中的操作码部分送指令译码器,经译码器分析产生相应的操作控制信号,送往各个执行部件。
⑤ 按指令操作码执行。
⑥ 修改程序计数器的值,形成下一条要取指令的地址。若执行的是非转移指令,即顺序执行,则指令指针寄存器的内容加1,形成下一条要取指令的地址。指令指针寄存器也称为程序计数器。
最后
以上就是快乐咖啡为你收集整理的指令系统的全部内容,希望文章能够帮你解决指令系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复