指令系统详细资料大全

如题所述

第1个回答  2022-11-22

指令系统是计算机硬体的语言系统,也叫机器语言,指机器所具有的全部指令的集合,它是软体和硬体的主要界面,反映了计算机所拥有的基本功能。从系统结构的角度看,它是系统程式设计师看到的计算机的主要属性。因此指令系统表征了计算机的基本功能决定了机器所要求的能力,也决定了指令的格式和机器的结构。设计指令系统就是要选择计算机系统中的一些基本操作( 包括作业系统和高级语言中的) 应由硬体实现还是由软体实现,选择某些复杂操作是由一条专用的指令实现, 还是由一串基本指令实现, 然后具体确定指令系统的指令格式、类型、操作以及对运算元的访问方式。

基本介绍

    中文名 :指令系统 类别 :机器语言 发源时间 :二十世纪五十年代
简介,发展历程,指令格式,性能要求,定址方式,种类,复杂指令系统与精简指令系统,复杂指令系统( CISC),精简指令系统( RISC),执行步骤,

简介

指令系统是指计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。不同计算机的指令系统包含的指令种类和数目也不同。一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、移位操作型、位(位串)操作型、输入和输出型等指令。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬体结构,而且也直接影响到系统软体,影响到机器的适用范围。 指令系统 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如:操作码栏位+地址码栏位,其中操作码指明了指令的操作性质及功能,地址码则给出了运算元或运算元的地址。

发展历程

指令系统的发展经历了从简单到复杂的演变过程。早在20世纪50-60年代,计算机大多数采用分立元件的电晶体或电子管组成,其体积庞大,价格也很昂贵,因此计算机的硬体结构比较简单,所支持的指令系统也只有十几至几十条最基本的指令,而且定址方式简单。 到60年代中期,随着积体电路的出现,计算机的功耗、体积、价格等不断下降,硬体功能不断增强,指令系统也越来越丰富。 指令系统 在70年代,高级语言己成为大、中、小型机的主要程式设计语言,计算机套用日益普及。由于软体的发展超过了软体设计理论的发展,复杂的软体系统设计一直没有很好的理论指导,导致软体质量无法保证,从而出现了所谓的“软体危机”。人们认为,缩小机器指令系统与高级语言语义差距,为高级语言提供很多的支持,是缓解软体危机有效和可行的办法。计算机设计者们利用当时已经成熟的微程式技术和飞速发展的VLSI技术,增设各种各样的复杂的、面向高级语言的指令,使指令系统越来越庞大。这是几十年来人们在设计计算机时,保证和提高指令系统有效性方面传统的想法和作法。

指令格式

计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程式设计、增加基本操作并行性、提高指令功能的角度来看,指令中应包含多种信息。但在有些指令中,由于部分信息可能无用,这将浪费指令所占的存储空间,并增加了访存次数,也许反而会影响速度。因此,如何合理、科学地设计指令格式,使指令既能给出足够的信息,又使其长度尽可能地与机器的字长相匹配,以节省存储空间,缩短取指时间,提高机器的性能,这是指令格式设计中的一个重要问题。 精简指令系统计算结构(RISC)来设计晶片 计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息: (1)操作码。它具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同的操作。(2)运算元的地址。CPU 通过该地址就可以取得所需的运算元。(3)操作结果的存储地址。把对运算元的处理所产生的结果保存在该地址中,以便再次使用。(4)下条指令的地址。执行程式时,大多数指令按顺序依次从主存中取出执行,只有在遇到转移指令时,程式的执行顺序才会改变。为了压缩指令的长度,可以用一个程式计数器(Program Counter,PC)存放指令地址。每执行一条指令,PC 的指令地址就自动 +1(设该指令只占一个主存单元),指出将要执行的下一条指令的地址。当遇到执行转移指令时,则用转移地址修改 PC 的内容。由于使用了 PC,指令中就不必明显地给出下一条将要执行指令的地址。 一条指令实际上包括两种信息即操作码和地址码。操作码(OperationCode,OP)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。地址码用来描述该指令的操作对象,它或者直接给出运算元,或者指出运算元的存储器地址或暂存器地址(即暂存器名)。 指令系统 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如:操作码栏位地址码栏位其中操作码指明了指令的操作性质及功能,地址码则给出了运算元或运算元的地址。 各计算机公司设计生产的计算机,其指令的数量与功能、指令格式、定址方式、数据格式都有差别,即使是一些常用的基本指令,如算术逻辑运算指令、转移指令等也是各不相同的。因此,尽管各种型号计算机的高级语言基本相同,但将高级语言程式(例如 Fortran 语言程式)编译成机器语言后,其差别也是很大的。因此将用机器语言表示的程式移植到其他机器上去几乎是不可能的。从计算机的发展过程已经看到,由于构成计算机的基本硬体发展迅速,计算机的更新换代是很快的,这就存在软体如何跟上的问题。大家知道,一台新机器推出交付使用时,仅有少量系统软体(如作业系统等)可提交用户,大量软体是不断充实的,尤其是应用程式,有相当一部分是用户在使用机器时不断产生的,这就是所谓第三方提供的软体。为了缓解新机器的推出与原有应用程式的继续使用之间的矛盾,1964 年在设计 IBM360 计算机时所采用的系列机思想较好地解决了这一问题。从此以后,各个计算机公司生产的同一系列的计算机尽管其硬体实现方法可以不同,但指令系统、数据格式、I/O 系统等保持相同,因而软体完全兼容(在此基础上,产生了兼容机)。当研制该系列计算机的新型号或高档产品时,尽管指令系统可以有较大的扩充,但仍保留了原来的全部指令,保持软体向上兼容的特点,即低档机或旧机型上的软体不加修改即可在比它高档的新机器上运行,以保护用户在软体上的投资。 指令系统 指令包括操作码域和地址域两部分。根据地址域所涉及的地址数量,常见的指令格式有以下几种。 ①三地址指令:一般地址域中 A 1、 A 2分别确定第一、第二运算元地址, A 3确定结果地址。下一条指令的地址通常由程式计数器按顺序给出。②二地址指令:地址域中 A 1确定第一运算元地址, A 2同时确定第二运算元地址和结果地址。 ③单地址指令:地址域中 A 确定第一运算元地址。固定使用某个暂存器存放第二运算元和操作结果。因而在指令中隐含了它们的地址。 ④零地址指令:在堆叠型计算机中,运算元一般存放在下推堆叠顶的两个单元中,结果又放入栈顶,地址均被隐含,因而大多数指令只有操作码而没有地址域。 ⑤可变地址数指令:地址域所涉及的地址的数量随操作定义而改变。如有的计算机的指令中的地址数可少至 0个,多至6个。

性能要求

指令系统的性能决定了计算机的基本功能,它的设计直接关系到计算机的硬体结构和用户的需要。一个完善的指令系统应满足如下四方面的要求: 完备性 指用汇编语言编写各种程式时,指令系统直接提供的指令足够使用,而不必用软体来实现。完备性要求指令系统丰富、功能齐全、使用方便。 指令系统 有效性 是指利用该指令系统所编写的程式能够高效率地运行。高效率主要表现在程式占据存储空间小、执行速度快。 规整性 包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。对称性是指:在指令系统中所有的暂存器和存储器单元都可同等对待,所有的指令都可使用各种定址方式;匀齐性是指:一种操作性质的指令可以支持各种数据类型;指令格式和数据格式的一致性是指:指令长度和数据长度有一定的关系,以方便处理和存取。 兼容性 至少要能做到“向上兼容”,即低档机上运行的软体可以在高档机上运行。

定址方式

根据指令内容确定运算元地址的过程称为定址。完善的定址方式可为用户组织和使用数据提供方便。 ①直接定址:指令地址域中表示的是运算元地址。 ②间接定址:指令地址域中表示的是运算元地址的地址即指令地址码对应的存储单元所给出的是地址 A ,运算元据存放在地址 A 指示的主存单元内。有的计算机的指令可以多次间接定址,如 A 指示的主存单元记忆体放的是另一地址 B ,而运算元据存放在 B 指示的主存单元内,称为多重间接定址。 ③立即定址:指令地址域中表示的是运算元本身。④变址定址:指令地址域中表示的是变址暂存器号 i 和位移值 D 。将指定的变址暂存器内容 E 与位移值 D 相加,其和 E + D 为运算元地址。许多计算机具有双变址功能,即将两个变址暂存器内容与位移值相加,得运算元地址。变址定址有利于数组操作和程式共用。同时,位移值长度可短于地址长度,因而指令长度可以缩短。 指令系统 ⑤相对定址:指令地址域中表示的是位移值 D 。程式计数器内容(即本条指令的地址) K 与位移值 D 相加,得运算元地址 K + D 。当程式在主存储器浮动时,相对定址能保持原有程式功能。 此外,还有自增定址、自减定址、组合定址等定址方式。定址方式可由操作码确定,也可在地址域中设标志,指明定址方式。

种类

总况 随着计算机系统结构的发展,有些计算机还不断引入新指令。如“测并置”指令是为在多机系统和多道程式中防止重入公用子程式而设定的。指令先测试标志位以判断该子程式是否正在使用。如未被使用,则转入子程式并置该标志位,以防其他进程重入。后来又出现功能更强的信号(PV操作)指令。有的计算机还设定“执行”指令。“执行“指令执行由地址域所确定的存储单元中的指令。其目的是避免用程式直接修改程式中的指令。这对程式的检查和流水线等技术的套用均有好处。有的计算机采用堆叠实现程式的调用指令和返回指令。调用时将返回地址和各种状态、参数压入堆叠顶部,这样就能较好地实现子程式的嵌套和递归调用,并可使子程式具有可重入性。另外,一些计算机使不少复杂的操作固定化,形成诸如多项式求值、伫列插项、伫列撤项和各种翻译、编辑等指令。 按功能划分 ①数据处理指令:包括算术运算指令、逻辑运算指令、移位指令、比较指令等。 ②数据传送指令:包括暂存器之间、暂存器与主存储器之间的传送指令等。 ③程式控制指令:包括条件转移指令、无条件转移指令、转子程式指令等。 ④输入-输出指令:包括各种外围设备的读、写指令等。有的计算机将输入-输出指令包含在数据传送指令类中。 指令系统 ⑤状态管理指令:包括诸如实现置存储保护、中断处理等功能的管理指令。 其他划分 向量指令和标量指令 :有些大型机和巨型机设定功能齐全的向量运算指令系统。向量指令的基本操作对象是向量,即有序排列的一组数。若指令为向量操作,则由指令确定向量运算元的地址(主存储器起始地址或向量暂存器号),并直接或隐含地指定如增量、向量长度等其他向量参数。向量指令规定处理机按同一操作处理向量中的所有分量,可有效地提高计算机的运算速度。不具备向量处理功能,只对单个量即标量进行操作的指令称为标量指令。 指令系统 特权指令 和用户指令 :在多用户环境中,某些指令的不恰当使用会引起机器的系统性混乱。如置存储保护、中断处理、输入输出等这类指令,均称为特权指令,不允许用户直接使用。为此,处理机一般设定特权和用户两种状态,或称管(理)态和目(的)态。在特权状态下,程式可使用包括特权指令在内的全部指令。在用户状态下,只允许使用非特权指令,或称用户指令。用户如使用特权指令则会发生违章中断。如用户需要申请作业系统进行某些服务,如输入-输出等,可使用“广义指令”,或称为“进监督”、“访管”等的指令。

复杂指令系统与精简指令系统

复杂指令系统( CISC)

早期的计算机, 存储器是一个很昂贵的资源, 因此希望指令系统能支持生成最短的程式。此外, 还希望程式执行时所需访问的程式和数据位的总数越少越好。在微程式出现后, 将以前由一串指令所完成的功能移到了微代码中, 从而改进了代码密度。此外, 它也避免了从主存取指令的较慢动作, 从而提高执行效率。在微代码中实现功能的另一论点是: 这些功能能较好的支持编译程式。如果一条高级语言的语句能被转换成一条机器语言指令, 这可使编译软体的编写变得非常容易。此外, 在机器语言中含有类似高级语言的语句指令, 便能使机器语言与高级语言的间隙减少。这种发展趋向导致了复杂指令系统( CISC) 设计风格的形成, 即认为计算机性能的提高主要依靠增加指令复杂性及其功能来获取。 CISC 指令系统的主要特点是: ( 1) 指令系统复杂。具体表现在以下几个方面: ① 指令数多, 一般大于100 条。 ② 定址方式多, 一般大于4 种。 ③ 指令格式多, 一般大于4 种。 ( 2) 绝大多数指令需要多个机器时钟周期方可执行完毕。 ( 3) 各种指令都可以访问存储器。 CISC 指令系统主要存在如下三方面的问题: ( 1) CISC 中各种指令的使用频度相差很悬殊, 大量的统计数字表明, 大约有20%的指令使用频度比较高, 占据了80%的处理机时间。换句话说, 有80%的指令只在20%的处理机运行时间内才被用到。 ( 2) VLSI 的集成度迅速提高, 使得生产单晶片处理机成为可能。在单晶片处理机内, 希望采用规整的硬布线控制逻辑, 不希望用微程式。而在CISC 处理机中, 大量使用微程式技术以实现复杂的指令系统, 给VLSI 工艺造成很大困难。 ( 3) 虽然复杂指令简化了目标程式, 缩小了高级语言与机器指令之间的语义差距, 然而增加了硬体的复杂程度, 会使指令的执行周期大大加大, 从而有可能使整个程式的执行时间反而增加。

精简指令系统( 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,形成下一条要取指令的地址。指令指针暂存器也称为程式计数器。

相似回答