首页 计算机组成原理(5)指令系统

计算机组成原理(5)指令系统

举报
开通vip

计算机组成原理(5)指令系统nullnull第5章 指令系统 5.1 机器指令 指令就是控制计算机执行某种操作(如加、减、传送、转移等)的命令。一台计算机所能执行的全部指令的集合,称为该计算机的指令系统或指令集。 5.1.1 指令格式 5.1.2 指令长度 指令长度应是存储器基本字长的整数倍, 另外指令长度又有固定长度和可变长度之分。 固定长度 可变长度 可变长指令比较灵活,故采用的较多。null指令字短有利于提高程序效率 不能为了缩短指令长度而影响指令系统的完备性和规整性 ⑴完...

计算机组成原理(5)指令系统
nullnull第5章 指令系统 5.1 机器指令 指令就是控制计算机执行某种操作(如加、减、传送、转移等)的命令。一台计算机所能执行的全部指令的集合,称为该计算机的指令系统或指令集。 5.1.1 指令格式 5.1.2 指令长度 指令长度应是存储器基本字长的整数倍, 另外指令长度又有固定长度和可变长度之分。 固定长度 可变长度 可变长指令比较灵活,故采用的较多。null指令字短有利于提高程序效率 不能为了缩短指令长度而影响指令系统的完备性和规整性 ⑴完备性差:机器的功能将影响; ⑵规整性差:则译码部分电路将较为复杂,加长了分析指令的时 间。 5.1.3 指令的地址码 ⒈四地址指令 格式: 指令的含义:(A1)OP(A2)→(A3) A4 =下一条指令的地址。 ⒉三地址指令 格式: 指令的含义:(A1)OP(A2)→(A3) 下一条指令的地址由(PC)+1→PC(隐含) null 指令的含义:(A1)OP(A2)→(A1) A1:为目的操作数地址 A2:为源操作数地址 下一条指令的地址由(PC)+1→PC(隐含) ⒋一地址指令 格式: 分两种情况: ⑴单操作数运算:+1、-1、求反等,这个单地址既是操作数地址,又是结果存放地址。 指令的含义:OP(A1)→(A1) 下一条指令的地址由(PC)+1→PC(隐含) ⒊二地址指令 格式:null ⑵该地址中内容是一个操作数,另一个操作数存放在一个叫累加器的专用寄存器中。 指令的含义:(ACC)OP(A1)→(ACC) 下一条指令的地址由(PC)+1→PC(隐含) ⒌零地址指令 只有操作码字段,没有地址码字段,其格式为:5.1.4指令的操作码 操作码用于指明指令要完成的操作功能及其特性。指令系统中的每一条指令都有一个惟一确定的操作码,不同的指令具有不同的操作码。 若指令系统中有m种操作,即指令系统中可包含m条指令,则操作码的位数n应满足: n≥log2m (5-1) 若指令中操作码的编码长度是固定的,则称为定长编码;若操作码的编码长度是变长的,则称为变长编码。 null 1)定长编码 指令译码简单,有利于简化硬件设计。 2)变长编码 不同指令的操作码长度不完全相同,操作码的位数不固定,分散地位于指令字的不同位置上。 采用变长编码的方法,可以有效地压缩指令操作码的平均长度,便于用较短的指令字长表示更多的操作类型,寻址更大的存储空间。 变长编码的指令操作码的位数不固定且位置分散,增加了指令译码与分析的难度,使硬件设计复杂化。 扩展操作码技术的思想就是当指令字长一定时,设法使操作码的长度随地址数的减少而增加,这样地址数不同的指令可以具有不同长度的操作码,从而可以充分利用指令字的各个字段,在不增加指令长度的情况下扩展操作码的长度,使有限字长的指令可以表示更多的操作类型。 设某机的指令长度为16位。其中操作码为4位,具有三个地址字段,每个地址字段长为4位。其指令格式为:nullnull 例5.1 设机器指令字长为16位,指令中地址字段的长度为4位。如果指令系统中已有11条三地址指令、72条二地址指令和64条零地址指令,问最多还能规定多少条一地址指令? 解: 三地址指令的地址字段共需12位,指令中还可有4位用于操作码,可规定16条三地址指令。因为现有11条三地址指令,所以还剩下16-11=5个编码,可用于二地址指令。 二地址指令的地址字段共需8位,可有8位操作码,去掉三地址指令用掉的操作码,可规定5×24=80条二地址指令。现有72条二地址指令,所以还有80-72=8个编码用于一地址指令。 一地址指令的地址字段共需4位,可有12位操作码,去掉二、三地址指令用掉的操作码,可规定8×24=128条一地址指令。 由于要求有64条零地址指令,而4位操作码只能提供16条指令,所以需要由一地址指令提供64/16=4个操作码编码,构成4×24=64条零地址指令。因此还能规定128-4=124条一地址指令。 null 例如可将指令操作码OP再进一步分为主操作码和辅助操作码两部分。主操作码用于表示基本操作,辅助操作码用于表示各种附加操作,如进位、移位、结果回送、判跳等操作。 NOVA机的算术逻辑类指令就采用这种方式,其指令格式为 在有限的指令字条件下,若要表示更多操作,还可采用将操作码进一步分段的方法。null5.2 寻址方式 寻址:寻找操作数的地址。 寻址技术:包括编址方式和寻址方式。 编址单位:字编址、字节编址、位编址。 ⑴字编址 优点:控制方式实现起来简单,地址信息没有任何浪费。 缺点:不支持非数值的应用。因为非数值往往是按节或位进行操作的。 ⑵字节编址 优点:支持非数值的应用。编址单位与信息单位(字节)基本相一致。因为非数值往往是按节或位进行操作的。 缺点:如果访问M•M单位是一个字的话, M•M频带就太窄了,需要多次访问M•M才行。因此,要求访M•M的单位是编址单位的整数倍。 null5.2.1 指令的寻址方式 1.顺序方式 2.跳越方式 跳越方式就是当程序发生转移时,根据指令的转移目标地址修改PC的内容。 5.2.2 操作数的寻址方式 确定一台计算机指令系统的寻址方式时,有以下几点必须考虑: 希望指令内所含的地址尽可能短; 希望能访问尽可能大的存储空间; 希望地址能隐含在寄存器中。 能在不改变指令的情况下,仅改变地址的实际值,从而能方便地访问数组、串、表格等较复杂数据。 寻址的方法尽可能简单,以简化硬件设计。 null 常用的寻址方式有以下几类: ⒈ 立接寻址 指令直接给出操作数本身,这种寻址方式又称立即数。 格式 Data=D 例5.2 Intel 8086中的立即寻址指令。 MOV AX,2000H ;将立即数2000H存入累加器AX中 优点:操作速度最快。 缺点:操作数是指令的一部分,修改操作数困难;数据表示范围受指令字的长度限制;寻址灵活性最差。null 优点是比较直观,也较便于硬件实现。 缺点是随着M•M容量的增长,地址码将会越来越长。对于定长指令,由于地址码的位数有限,则限制 了地址码的位数。对于变长指令,势必造成指令的长度过长。 例5.3 Intel 8086中的直接寻址指令。 MOV AX,[2000H] ; 2.直接寻址 直接寻址方式是指指令的地址码部分给出的形式地址A就是操作数的有效地址EA,即操作数的有效地址在指令字中直接给出。 如图5-5所示,采用直接寻址时,有效地址EA=A。null 两个明显的优点: ⑴从寄存器中取数据比从M•M中取数据快得多。 ⑵由于寄存器数量比M•M容量少,因此其地址位数比M•M单元地址字段短得多,可以缩短指令的长度,提高指令执行的速度。 3.间接寻址 如图5-6所示。 null 例5.4某计算机的一级间接寻址指令: MOV AX,@2000H ;@为间接寻址标志 设主存2000H单元的内容为3000H,主存3000H单元的内容为5000H,则该指令源操作数的有效地址是主存2000H单元的内容,即:EA=(A)=(2000H)=3000H。该指令所需的实际源操作数是主存3000H单元的内容,即:Data=5000H。 间接寻址比直接寻址灵活得多,它主要优点如下: ⑴扩大了寻址范围,可用指令中的短地址访问较大的主存空间。 ⑵ 便于编制程序。可将M•M单元作为程序的地址指针,用以指示操作数在M•M中的位置。当操作数的单元地址须要改变时,不必修改指令,只要修改存放有效地址的单元中的内容即可,这个单元称为间接地址单元。 间接寻址的缺点如下: ⑴间接寻址须多次访M•M,降低了执行的速度。 ⑵为了防止因多次间接访问,使间址无休止地执行下去,大多计算机只允许一级间址。即使允许多级间址,也严格控制间址次数。null 例5·5 Intel 8086的寄存器寻址指令: MOV AL,BL ;将寄存器BL中的内容传送到寄存器AL中 4.寄存器直接寻址 寄存器直接寻址也称寄存器寻址。它是指在指令地址码中给出的是某一通用寄存器的编号(也称寄存器地址),该寄存器的内容即为指令所需的操作数。即采用寄存器寻址方式时,有效地址EA是寄存器的编号,即EA=Ri。如图5-7所示。null ⒌寄存器间接寻址 操作数地址在指令中指定的CPU中的某个寄存器中。 EA= (Ri)。 例5.6 Intel 8086的寄存器间接寻址指令: MOV AL, [BX] 寄存器间接寻址主要优缺点如下: 优点:是的指令长度较短,与寄存器寻址指令长度差不多。 缺点:是指令执行时间比寄存器寻址指令执行时间长。null ⒍变址寻址 EA= (Rx)+指令给出的位移量。 变址寻址方式是指操作数的有效地址是由指令中指定的变址寄存器的内容与指令字中的形式地址相加形成的。变址寻址的寻址过程如图5-9所示。 一般格式 null 例5.7 Intel 8086的变址寻址指令: MOV AL,[SI+4] 其中SI为变址器,4H是形式地址, 变址器的内容可以自动“+1”或“-1”,以适合于数组操作。 例5.8 VAX-11机的变址寻址指令: ①MOV (R1)+,R0 ②MOV -(R1),R0 变址寻址常用于数组、向量、字符串等数据的处理。 先间址后变址和先变址后间址方式的寻址过程如图5-10所示。 null ⒎相对寻址 EA=(PC)+指令给出的形式地址。 相对寻址方式除了用于访问操作数外,还常被用于转移类指令。 相对转移的好处是可以相对于当前的指令地址进行浮动转移寻址, null 例 5.9 Intel 8086的不为0转移指令JNC D的功能为:如果进位为0,则转移到目标地址为(PC)+D处进行执行。该指令为双字节指令。设本条指令的地址为1000H。 ① 转移指令JNC 03H的功能为:如果进位为0,则转移到目标地址为(PC)+03H处进行执行。 ②转移指令JNC FDH的功能为:如果进位为0,则转移到目标地址为(PC)+FDH处进行执行。 两条指令的转移寻址过程如图5-12所示。 null ⒏ 基址寻址 EA=(BP)+指令给出的位移量。 基址寄存器可以是一个专用的寄存器,也可以是由指令指定的通用寄存器,基址寄存器中的内容称为基地址。 基址寻址的寻址过程如图5-13所示。 null 变址寻址是面向用户的,用于循环取数组中一个元素; 相对寻址主要用于程序内部的循环或程序转移; 基址寻址是面向系统的,用于程序再定位。 ⒐ 基址加变址寻址 EA=(BP)+ (Rx)+指令给出的位移量。 例5.10 Intel 8086的基址加变址寻址的指令: MOV AL,[BX+SI+4] null 10.堆栈寻址 堆栈寻址是一种由堆栈支持的寻址方式。 1) 堆栈 计算机中的堆栈是指按先进后出(FILO)或者说后进先出(LIFO)原则进行存取的一个特定的存储区域 ⑴ 寄存器堆栈 null 这是一种用硬件实现的方法,称为硬堆栈。 优点:存取速度快,不占用主存空间; 缺点:堆栈的容量小不易扩展,是破坏性读出价格高。 ⑵存储器堆栈 所谓存储器堆是在内存开辟堆栈区,这种堆栈,它既可以是固定的区域,也可以是浮动的区域,可以用软件加以定义,而且需要时可以定义多个存储器堆栈。而栈顶位置动态变化。 自底向上生成堆栈 入栈操作 (PUSH)步骤:①SP-1→SP, ②Data →(SP)。 出栈操作 (POP)步骤: ①从栈顶取出数据, ② SP+1→SP。 自顶向下生成堆栈 入栈操作 (PUSH)步骤:①SP+1→SP, ②Data →(SP)。 出栈操作 (POP)步骤: ①从栈顶取出数据, ② SP-1→SP。nullnull 2)堆栈寻址 堆栈寻址方式就是按照堆栈指示器SP的内容确定操作数的访存地址。 11.页面寻址 页面寻址就是将存储器逻辑地分成若干页,每一页都有自己的页面地址,一页内包含若干存储单元,可以通过页内地址进行访问。当需要访问一页内的某一单元时,将该页的页面地址与相应单元的页内地址相拼接,即可形成操作数的有效地址。 12.扩展寻址 扩展寻址就是将要访问的存储单元地址的高位预先装入扩展寄存器中,访存时将扩展寄存器的内容与指令字中形式地址部分给出的内容相拼接,形成操作数的有效地址。 例如,Intel 8086 CPU将1MB存储器空间分成若干逻辑段来进行管理,每个段的最大容量限制为64KB,且规定每个逻辑段只能从模16地址开始,即段的起始地址(或称段基地址)必须为   0H。 8086的段寻址过程如图5-17所示。 nullnull5.3 指令类型 设计一台计算机指令系统的功能时,必须注意以下几个原则: ⑴完备性或完整性 即指令系统功能尽可能完备。但指令系统太复杂,则会给指令系统的实现带来困难。 (2)有效性 指令系统的有效性是指用指令系统中的指令编写的程序能高效率运行,占用空间小,执行速度快。 ⑶均匀性(规整性) 数据处理指令能对多种类型的数据进行处理,包括三种整数(字节、字、双字)、两种浮点数(单精度和双精度浮点数) 及十进制数。 指令与数据格式的一致性要求指令长度与机器字长和数据长度有一定的关系,以便于指令和数据的存取及处理。 ⑷兼容性 后设计的计算机的指令系统应能兼容以前设计的低挡机的指令系统。 5.3.1 数据传送指令 例如,在IBM370机的指令系统中,成组取数指令的格式为:null 又如在Intel 8086的指令系统中,有串传送指令MOVS,在加上重复前缀REP后,可以控制一次将最多达64KB的数据块从存储器的一个区域传送到另一个区域。 5.3.2算术逻辑运算指令 例5.11 Intel 8086指令系统中的算术逻辑运算指令。 ADD AL,BL ; AL←AL+BL MUL BL ; AX←ALBL AND AL,FEH ; AL←AL∧11111110B, ;是AL的最低位清0,其余位不变。 OR AL,F0H ; AL←AL∨11110000B, ;是AL的高4位置1,其余位不变。 TEST AL,01H ;AL∧00000001B,若相“与’’的结 ;果为全0,表示AL0=0 ,若相“与” ;的结果不为全0,表示AL0=1 5.3.3移位操作指令 移位操作指令分为算术移位、逻辑移位和循环移位三种,可以实现对操作数左移或右移一位或几位。 null5.3.4 堆栈操作指令 5.3.5 字符串处理指令 5.3.6 程序控制指令 1.转移指令 分为无条件转移指令和条件转移指令。 无条件转移指令又称必转指令。 条件转移指令 例5.12 Intel 8086指令系统中的转移指令。 ①JMP L1 ;这是一条直接寻址的无条件转移指令 ②JNZ 50H 2.循环指令 指令实际上是一种增强型的条件转移指令,其指令功能一般包括对循环控制变量的修改、测试判断以及地址转移等功能。 例5.13 Intel 8086指令系统中的循环控制指令。 LOOP L1null 3.子程序调用与返回指令 转子指令与转移指令的两者的区别在于: 转移指令的功能是转移到指令给出的转移地址处去执行指令,一般用于同一程序内的转移,转移后不需要返回原处,因此不需要保存返回地址。 转子指令的功能是转去执行一段子程序,实现的是不同程序之间的转移。因为子程序执行完后必须返回主程序,所以转子指令必须以某种方式保存返回地址,以便返回时能正确返回到主程序原来的位置。 返回指令:从子程序返回调用程序的指令。 调用程序中转子指令的下一条指令的地址称为断点, 断点是子程序返回主程序时的返回地址。 子程序的入口地址:子程序第一条指令的地址。 执行转子指令时保存断点的方式有多种,常用的有: (1)将断点存放到子程序第一条指令的前一个字单元。 (2)将断点保存到某一约定的寄存器中。 (3)将断点压入堆栈。 null 转子指令和返回指令通常是无条件的,但也有带条件的转子指令和返回指令。条件转子指令和条件返回指令所需要的条件与转移指令的条件类似。 例如:Intel 8086 CPU的软件中断指令INT n(n是8位二进制常数,用于表示中断类型),就是直接提供给用户使用的陷阱指令,利用它可以实现系统调用和程序请求。 5.3.7 输入输出指令 输入输出指令通常有三种设置方式: ①外设采用单独编码的寻址方式并设置专用的I/O指令。由I/O指令的地址码部分给出被选设备的设备码(或端口地址),操作码指定所要求的I/O操作。 这种方式将I/O指令与其他指令区别对待,编写程序清晰;但因为I/O指令通常较少,功能简单,如果需要对外设信息进行复杂处理,则需要较多的指令才能实现。 4.陷阱指令 陷阱实际是指意外事故的中断。null ②外设与主存统一编址,用通用的数据传送指令实现I/O操作。 这种方式不用设置专用I/O指令,可以利用各类指令对外设信息进行处理;但由于外设与主存统一编址,占用了主存的地址空间;而且较难分清程序中的I/O操作和访存操作。 ③通过I/O处理机执行I/O操作。在这种方式下,CPU只需执行几条简单的I/O指令,如启动I/O设备、停止I/O设备、测试I/O设备等,而对I/O系统的管理、 I/O操作控制等工作都由I/O处理机完成。这种方式能提高主机的效率,但必须在I/O处理机支持下才能实现 5.3.8 其他指令 除了上述几种类型的指令外,还有其他一些完成某种控制功能的指令,如停机、等待、空操作、开中断、关中断、置条件码以及特权指令等。 特权指令主要用于系统资源的分配与管理,具有特殊的权限,一般只能用于操作系统或其他系统软件,而不直接提供给用户使用。在多任务、多用户的计算机系统中,这种特权指令是不可缺少的。 除此之外,在一些多处理器系统中还配有专门的多处理机指令。 null5.4 CISC和RISC指令 使计算机越来越复杂的原因有以下几点: ⑴使目标程序得到优化。 ⑵给高级程序设计语言提供更好的支持。 ⑶提供对OS的支持。 根据统计发现,CISC(Complex Instruction Set Computer) 中最常用的比较简单的指令占指令系统的20%,其使用频度却占80%;而功能较复杂的指令占指令系统的80%,其使用频度却只有20%。为此,1975年,IBM公司的John Cocke提出了RISC(Reduced Instruction Set Computer)思想。 5.4.1 CISC CISC指令系统的特点是 (1)指令系统复杂庞大,指令数目一般多达200~300条。 (2)指令格式多,指令字长不固定,采用多种不同的寻址方式。 (3)可访存指令不受限制。 (4)各种指令的执行时间和使用频率相差很大。 (5)大多数CISC机都采用微程序控制器。 null5.4.2 RISC 一般CPU的执行速度受三个因素的影响,即程序中的指令总数I、平均指令执行所需的时钟周期数CPI和每个时钟周期的时间T,CPU执行程序所需的时间P可用式(5-2)表示: P=I·CPI·T (5-2) RISC指令系统的主要特点是: ⑴选取一些使用频率高的简单指令以及很有用又不复杂的指令来构成指令系统。 ⑵指令数目较少,指令长度固定,指令格式少,寻址方式种类少。 ⑶采用流水线技术,大多数指令可在一个时钟周期内完成;特别是在采用了超标量和超流水技术后,可使指令的平均执行时间小于一个时钟周期。 ⑷使用较多的通用寄存器以减少访存。 , ⑸采用寄存器一寄存器方式工作,只有存数(STORE)/取数(LOAD)指令访问存储器,而其余指令均在寄存器之间进行操作。 ⑹控制器以组合逻辑控制为主,不用或少用微程序控制。 ⑺采用优化编译技术,力求高效率地支持高级语言的实现 表5-1给出了一些典型的RISC指令系统的指令条数。null 与CISC机相比,RISC机的主要优点有 ⑴充分利用了VLSI芯片的面积 (2)提高了计算机的运算速度 (3)便于设计,降低了开发成本,提高了可靠性 由于RISC机指令系统简单,机器设计周期短,设计出错可能性小,易查错,可靠性高。 (4)有效地支持高级语言 ★ CISC 与 RISC之争论null5.5 指令系统举例 5.5.1 Ultra SPARCⅡ的指令系统 ⒈ Ultra SPARCⅡ的指令格式 Ultra SPARCⅡ最初只有3种指令格式,如图5-18所示。 null 2.Ultra SPARCⅡ的寻址方式 在寄存器寻址方式中,使用5位编码说明寄存器地址。在立即寻址方式中,采用13位带符号数作为立即数,在运算时需要对13位带符号数进行符号扩展。 Ultra SPARCⅡ只有LOAD、STORE和一条多处理器同步指令涉及内存寻址。 LOAD和STORE指令的两种内存寻址方式如下: ⑴寄存器间接寻址:i=0,存储器地址=(源寄存器1)+(源寄存器2) ⑵变址寻址:i=1,存储器地址= (源寄存器1)+13位带符号偏移量 3.Ultra SPARCⅡ的指令类型 表5-2列出了Ultra SPARCⅡ指令系统中所有用户模式下的整数指令。但没有列出浮点数指令、控制指令(如高速缓存管理指令和系统重启指令)、涉及非用户地址空间的指令和过时的指令。 nullnullnull5.5.2 Pentium Ⅱ指令系统 Intel公司的x86系列CPU采用的是CISC指令系统的设计思想,指令系统规模很庞大,但从Pentium MMX、PentiumⅡ开始,采用了RISC的设计思想,尤其是PentiumⅡ,采用了一个基于RISC的处理器内核,使用了大量RISC的特性,使Intel公司的x86系列微处理null器的性能上升到了一个崭新的台阶。下面简单介绍一下PentiumⅡ的指令系统。 1.PentiumⅡ的指令格式 PentiumⅡ指令格式比较繁杂,最多可有6个变长域, 最短的指令只有1 个字节,最长的指令可有十几个字节。其指令由以下几个部分组成。其中5个是可选的,如图5-19所示。null ⑴前缀 ①指令前缀 由LOCK前缀和重复操作前缀组成。 LOCK前缀用在多机系统共享存储指令的前面,规定是否对共享存储器以独占方式使用。 重复前缀表示重复操作的类型,有以下几种: REP:串重复操作; REPZ:=0,重复串操作; REPNZ:≠0,重复串操作; REPE:相等时,重复串操作; REPNE:不等时,重复串操作; 不使用重复前缀,则各种字符串指令执行一次且只执行一次。 ②段前缀 采用段前缀指定的段寄存器,不用该指令缺省值指定的段寄存器。 ③操作数长度前缀 指令运行时采用前缀规定的长度的操作数操作,不用该指令默认的操作数长度。以便操作数在16位和32位之间切换。 ④地址长度前缀 指令运行时采用前缀规定的长度的地址,不用该指令默认的地址长度,以便处理器用16位或32位地址来寻址存储器。 null ⑵操作码 1~2字节,指定指令的操作外,还有以下信息: 操作码的最低位用于指示操作数是字节还是字, 次低位用于指示数据传送方向,即寻址方式字中REG字段指定的是寄存器是或内存地址(如果需要访问内存的话)是源地址还是目的地址。 指令中如果有立即数,是否对它进行符号扩展。 ⑶模式字节(寻址方式字节) 在某些情况下,模式字节的前3位可用作操作码扩展,这时操作码的长度就是11位。 ⑷额外模式字节SIB:由Scale(2 位)、Index、Base三部分组成。 ⑸位移量:指令中如果有位移量,可以是1、2或4B。 ⑹直接数据:若指令中有立即数,可以是1、2或4B。 ⒉寻址方式 ⑴ Pentium物理地址的形成 Pentium物理地址的形成见图所示。null PentiumⅡ配备了大量的寄存器,包括基本体系结构寄存器、系统级寄存器、调试和测试寄存器、浮点寄存器等,其中32位的通用寄存器不仅可以用于处理32位的数据,还可以用于处理16位和8位数据,以满足用户的不同要求。 为了满足向下兼容的要求,PentiumⅡ的寻址方式非常没有规律,它支持的寻址方式包括:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址加变址寻址、相对寻址和用于数组元素的特殊寻址方式。当然并不是所有的寻址方式都能用于所有的指令,也不是所有的寄存器都能用于所有的寻址方式。 表5-4给出了32位模式下的寻址方式null 3.PentiumⅡ的部分指令 PentiumⅡ指令系统包括如下指令类型: (1)数据传送类指令; (2)算术运算类指令; (3)逻辑运算类及位处理指令; (4)字符串操作类指令; (5)程序控制类指令; (6)系统寄存器、表控制类指令; null (7)系统和cache控制类指令; (8)MMX(Multi—Media eXtension)指令集。 nullnull图5-20 PentiumⅡ指令系统中常用的整数指令 null★5.6 MMX指令 MMX(Microprocessor Media Extension)是Intel公司为提高PC机上处理多媒体和通信能力而推出的新一代处理器技术,它通过在Pentium Pro处理器中增加8个64位寄存器和57条新指令来实现。这是Intel公司推出32位机以来芯片结构上最重大的变化。 ⒈MMX的由来与特点 由于多媒体应用中的图形、图象、视频、音频的操作中存在大量共同特征的操作,如: 短整数类型的并行操作(如8位图形象素和16位音频信号) 频繁的乘法累加(如FIR滤波,矩阵运算) 短数据的高度循环运算(如快速傅里叶变换FFT、离散余弦变换DCT) 高度并行操作(如图象处理) 为了提高上述共性操作的运算能力与速度,特设计了一套新增的指令系统,并对CPU内部结构进行了扩充与改进,这称为MMX技术。 与以前Intel CPU(简称IA—Intel Architecture)增加哪些功能?又有哪些特点?归纳如下:null 紧缩字节:64位中紧缩有8个字节; 紧缩字:64位中紧缩有4个字; 紧缩双字:64位中紧缩有2个字; 4字:一个64位字。 为了便于MMX指令对上述数据类型进行操作,CPU中新增加8个64位的通用寄存器MX0-MX7。这些寄存器用来实现数据运算,但不能用于存储器寻址。的⑴引进了新的数据类型和通用寄存器 MMX技术的主要数据类型为定点紧缩(Packed)整数,它定义了4种新的64位数据类型,如图所示。null 紧缩双字:64位中紧缩有2个字; 4字:一个64位字。 为了便于MMX指令对上述数据类型进行操作,CPU中新增加8个64位的通用寄存器MX0-MX7。这些寄存器用来实现数据运算,但不能用于存储器寻址。 ⑵采用SIMD技术 单条指令同时并行处理多个数据元素,如8B、4个字、2 个双字或一个64位字,这对提高运算速度非常有利。例如,一条指令可以完成图形/图象中8个像素(每个像素8位)的并行操作。 ⑶饱和(Saturation)运算 在上述4种64位数据类型运算过程中,引入了两类运算模式:环绕运算和饱和运算。 ①在环绕运算(或称非饱和运算)中,不管上溢还是下溢,其结果均被截取,即进位被丢掉,仅返回低有效位值。 例:F3H+1DH=10H(环绕运算,进位被舍弃) ②饱和运算:即上溢与下溢结果被截取至各类数据值域的最大值或最小值。例如: null 例如:字节运算,最大值是255,0xF1+0x35应该是等于0x26,但由于结果大于255,那么饱和运算的结果就是0xFF (无符号字节饱和运算) MMX技术中饱和数据范围见表 引入饱和运算后,a与b占亮度插值就为: (F1H+35H) =FFH (饱和运算) 得到了其亮度值位于二像素之间较为合理的值。 ⑷兼容性 MMX技术与现有的IA处理器和OS保持向下兼容,IA MMX状态建立在IA浮点之上,无需增加新的状态。null ⒉MMX指令系统 早期的MMX结构中引入了57条新指令,2000年8月推出的Pentium4 MMX指令增为144条,MMX寄存器也增为 128位。仍以57条指令为例,它可分为7类:算术运算指令、逻辑运算指令、比较指令、转换指令、移位指令、数据传送指令、置空MMX状态指令。 ⑴指令句法 ①数据类型:紧缩字节、紧缩字、紧缩双字、64位字; 有符号数与无符号数; 环绕和饱和运算。 ②句法: 词头:P(Packed)表示紧缩型指令; 指令:ADD、CMP、XOR、……; 词尾:-US表示无符号饱和运算; -S表示有符号饱和运算; -B、W、D、Q分别表示字节、字、双字、4字。null 例如 PADDUSW 表示紧缩无符号字饱和相加指令。 ⑵指令类型(7类) ①算术运算指令:ADD、SUB、MUL、MADD等。如 PADD 环绕字节加法,无数据类型时默认为字节运算。 PADDS 饱和字节加法。 ②比较 指令:PCMPEQ、PCMPGT,这类指令主要用于条件转移操作。 ③转换指令,实现种类紧缩数据之间的转换。如BW、WD、DQ。也可以实现带符号字转换成无符号字节 等。 ④逻辑指令,在64位数据上进行按位“与”、“或”、 “与非”和“或非”操作。 ⑤移位指令,64位数据的逻辑左/右移和算术右移。 ⑥数据传送指令,在M•M和MMX的寄存器之间或MMX寄存器之间64位数据传送;整型寄存器与MMX寄存器之间32数据传送。null ⑦EMMX(Empty MMX State),置空MMX状态。在MMX例程结束时,清除MMX状态。 ⑶操作数 MMX指令中除数据传送指令外,源操作数都驻留在M•M或MMX寄存器中,而目标操作数驻留在MMX寄存器中;传送这指令,源和目标操作数还可以 是整型 寄存器内容。 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写格式如下: DEST(左操作数)←DEST(左操作数) OP SRC(右操作数) 结果 目标数据 操作码 源数据 操作数的书写方法: imm:一个字节有符号的立即数; r/m 32:一个32位双字寄存器或存储器操作数; mm/m32:一个MMX寄存器的低32位或32位存储器数; mm/m64:一个64位的MMX寄存器或64位存储器数;null 例如: ①MOVD mm,r/m 32 从整数寄存器或M•M传送32位数据到MMX寄存器。 ②PADDB mm,mm/m64 紧缩环绕字节加运算。MMX寄存器内容或64位M•M数与MMX寄存器环绕相加,结果写入MMX寄存器。 执行内容:mm(7…0)←mm(7…0)+mm/m64 (7…0) mm(15…8)←mm(15…8)+mm/m64 (15…8) ┆ mm(63…56)←mm(63…56)+mm/m64 (63…56) 8路并行 ③PADDSW mm,mm/64 带符号紧缩字饱和相加。 例如:
本文档为【计算机组成原理(5)指令系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_121608
暂无简介~
格式:ppt
大小:993KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-12-21
浏览量:38