500 likes | 626 Views
第 5 章 指令系统. 计算机的指令有微指令、机器指令和宏指令 之分。微指令是微程序级的命令,属于硬件;宏指 令是由若干机器指令组成,属于软件;机器指令介 于二者之间,因而是硬件和软件的界面。. 一台计算机能执行的机器指令全体称为该机的指令 系统。它是软件编程的出发点和硬件设计的依据,它 衡量机器硬件的功能,反映硬件对软件支持的程度。. 5.1 指令格式. 5.1.1 指令的格式. 机器指令必须规定硬件要完成的操作,并指出操作数或操作数地址。指令一般的格式如下 :. 1. 三地址指令. 执行( D1 ) OP ( D2 )→ D3. 2. 二地址指令.
E N D
第5章 指令系统 • 计算机的指令有微指令、机器指令和宏指令 • 之分。微指令是微程序级的命令,属于硬件;宏指 • 令是由若干机器指令组成,属于软件;机器指令介 • 于二者之间,因而是硬件和软件的界面。 • 一台计算机能执行的机器指令全体称为该机的指令 • 系统。它是软件编程的出发点和硬件设计的依据,它 • 衡量机器硬件的功能,反映硬件对软件支持的程度。
5.1 指令格式 5.1.1 指令的格式 • 机器指令必须规定硬件要完成的操作,并指出操作数或操作数地址。指令一般的格式如下: 1. 三地址指令 执行(D1)OP(D2)→D3
2. 二地址指令 执行(D1)OP(D2)→D2 3.单地址指令 执行(D)OP (A)→A A(称累加器): CPU中一个专用寄存器 4.零地址指令 这类指令无操作数,所以无地址码。例如空操作、停机等不需要地址的指令 。
5.1.2 指令长度 原则: 1.指令长度应为存储器基本字长的整数倍 。 • 如果指令长度任意,就会产生指令跨存储字边界存放的情况 。 • 指令长度有固定长指令和可变长指令两类。 2.指令字长应尽量短 • 指令短,有利于提高程序的效率,即减少所需存储量和加快运行速度。
不能为了使指令短而影响指令系统的完备性 • 和规整性。指令系统的完备性差,机器的功 • 能受影响;规整性差,分析指令的时间必然加长。 5. 2 寻址方式 • 指令如何指定操作数或操作数地址称为寻址方式。 • 希望指令内所含地址尽可能短; • 希望能访问尽可能大的存储空间; • 寻址方法尽可能简单; • 在不改变指令的情况下,仅改变地址的实际值。
常用的寻址方式有以下几类: 1. 立即寻址 • 指令直接给出操作数本身,这种寻址方式又称立即数 寻址。
2.直接寻址 • 指令直接给出操作数地址。
间接寻址 • 指令给出存放操作数地址的存储单元地址。 4.寄存器(直接)寻址 • 操作数在指令指定的CPU的某个寄存器中。
寄存器寻址有以下优点: ① CPU寄存器数量远小于内存单元,所以 寄存器号比内存地址短,因而寄存器 寻址方式指令短; ②操作数已在CPU中,不用访存,因而指令执行速度快。 5.寄存器间接寻址 • 操作数地址在指令指定的CPU某个寄存器中。 • 如:8086指令MOV AX,[BX]
6.寄存器变址寻址 • 指令指定一个CPU寄存器(称为变址寄存器) • 和一个形式地址,操作数地址是二者之和。 • 如:8086指令 MOV AL,[SI+1000H]。
7.相对寻址 • 相对寻址是把程序计数器PC的内容,加上 • 由指令给出的形式地址而形成操作数地址。 • 采用相对寻址便于编制可浮动程序,这种程序随便放在内存什么位置,都能正常运行。 8.基址寻址 • 基址寻址是把由指令中给出的地址(或称位移量)与CPU 中的某个基址寄存器相加而得到实际的操作数地址。
变址寻址主要解决程序内部的循环问题,例如 “循环取数组中一个元素”等问题。而基址寻址则要求基址寄存器的内容能提供整个主存范围的寻址能力,指令给出的位移地址实际上指出了相对于基址的位移量。 • 基址寻址为逻辑空间到物理空间的地址变换提供了支持,以便实现程序的动态再定位。 9.隐含寻址方式 • 指令没有明显地给出操作数地址,而在操作码中隐含着操作数地址。
10.其它寻址方式 • 有的计算机指令系统中还有更复杂的寻址方式, • 如基址变址寻址、位寻址、块寻址、串寻址等等, 5.3 指令类型 • 设计一台计算机的指令系统的功能时,以下几个原则必须考虑: • 完备性或完整性: • 兼容性:
均匀性: • 可扩充性: 1.按功能可将指令分为以下几类: (1) 算术和逻辑运算指令 (2) 移位指令和循环指令 ① 算术移位: 如图5.5所示。 ② 逻辑移位: 如图5.6所示。
③ 环移: • 小环移 • 如图5.7所示。 2) 大环移 如图5.8所示。
④ 半字交换 操作如图5.9 所示。 (3) 传送类指令 (4) 串指令 (5) 顺序控制指令
(6) CPU控制指令 (7) 输入、输出指令 2. 按操作数个数分有: (1) 双操作数指令 (2) 单操作数指令 (3) 无操作数指令 3.按操作数寻址方式分有: (1) R-R型:两个操作数都在CPU的寄存器中。 (2) R-S型:两个操作数中一个在CPU寄存器中,另一 个在内存中。 (3) S-S型:两个操作数都在内存中 。
5. 4 堆栈和堆栈存取方式 • 堆栈是一种特定的数据结构,其特点是后进先出(LIFO)或先进后出(FILO)。 • 堆栈存取方式决定它一端存取的特点,往堆栈里存数叫入(进)栈或压栈,从堆栈里取数叫出栈或弹出。 1. 用移位寄存器实现堆栈 • 这是一种硬件实现的方法,用若干移位寄存器构成,又叫栈顶固定方式堆栈,如图5.10所示:
2. 内存中开辟堆栈区 • 这种堆栈,存储器单元固定,而栈顶位置动态变化。 • 在CPU中专门设置堆栈指针SP,指示栈顶位置。
1)自底向上生成堆栈: • 这种堆栈建栈时堆栈指针SP指向栈底下面一个单元(栈底是堆栈中地址最大的单元),每次入栈时,SP先减1,再把入栈数据存入SP指向的单元。出栈时先读出SP所指单元的地址,然后SP加1,即: • 入栈操作(PUSH)步骤:i)SP-1→SP • ii)存入数据→(SP) • 出栈操作(POP)步骤: i)(SP)内容读出 • ii) SP+1→SP
2)自顶向下生成堆栈: 这种堆栈建栈时堆栈指针SP指向栈底上面一个单元(栈底是堆栈中地址最小的单元),每次入栈时,SP先加1,再把入栈数据存入SP指向的单元。出栈时先读出SP所指单元的内容,然后SP减1,即: 入栈操作(PUSH)步骤: i) SP+1→SP ii)存入数据→(SP) 出栈操作(POP)步骤: i)(SP)内容读出 ii) SP-1→SP
5. 5 指令系统举例 5.5.1 IBM 370系列机指令格式 • IBM 370系列机指令格式如图5.12所示,它分为RR型(RRE型)、RX型、RS型、SI型、S型、SS型及SSE型指令等几类。其中RR型指令为半个字长(16位),SS型(及SSE型)指令为一个半字长(48位),其余指令为单字长指令(32位)。 5.5.2 PDP-11指令格式 PDP-11是一个具有8个寄存器(R0-R7)、16位字长的小型计算机。其中,R0-R5为通用寄存器,R7是程序计数器PC,R6是栈指针SP。为了便于8位运算,PDP-11的存储器按字节编址。
双操作数指令:操作码4位,每个地址码6位,地址码由3位寄存器号和3位寻址方式字段构成,如图5.13(a) 所示: • 单操作数指令:操作码10位,地址码6位。如图5.13(b) 所示。 • 转移指令:如图5.13(c) 所示,转移地址(相对转移)由8位位移量指出; • 条件码操作指令:如图5.13(d) 所示,低5位为条件标志。
5.5.3Pentium指令系统 1. 指令格式 • Pentium采用可变长指令格式,最短的指令只有一个字节,最长的指令可有十几个字节。其指令由以下几个部分组成: • 前缀:位于指令操作码前,各类前缀的字节数如下:
指令:指令各部分的长度和含义如下: (1) 前缀: • 前缀不是每条指令必须有的。如果有的话,各种前缀也都是可选的。
① 指令前缀:指令前缀由LOCK前缀和重复 操作前缀组成。LOCK前缀在多机环境下规 定是否对共享的存储器以独占方式使用; 重复操作前缀表示重复操作的类型,有以下 几种:REP、REPZ、REPE、REPNZ、REPNE。 ② 段前缀:如果有段前缀,则指令采用段前缀指定的段寄存器,而不用该指令缺省值规定的段寄存器。 ③ 操作数长度前缀:如果有该前缀,操作数长度将采用它规定的操作数长度处理,而不用该指令缺省值规定的操作数长度,以便操作数在16位和32位之间进行切换。
④ 地址长度前缀:如果有该前缀,地址长度将采用它规定的地址长度而不用该指令缺省值规定的地址长度,以便处理器用16位或32位地址来寻址存储器。 (2) 指令: ① 操作码:1-2字节,操作码除了指定指令的操作外,还有以下信息:数据是字节还是全字长;数据传送的方向,即寻址方式字节中REG字段指定的寄存器是源还是目标;指令中如果有立即数,是否对它进行符号扩展。
② 寻址方式字节:由MOD、reg/OP和R/M三个段组成,由MOD和R/M联合指定8种寄存器寻址和24种变址寻址方式,reg/OP指定某个寄存器为操作数或作为操作码的扩展用。 ③ SIB:由SS(2位)、Index、Base三部分组成。SS指定比例系数(变址寻址方式时,变址寄存器内容要乘以该系数);Index指定变址寄存器;Base指定基址寄存器。 ④ 位移量: 指令中如果有位移量,可以是1、2或4个字节。 ⑤ 直接数据:指令中如果有立即数,可以是1、2或4字节。
2. 寻址方式 (1) Pentium物理地址的形成 • Pentium的逻辑地址包括段和偏移量,段号经过段表直接得到该段的首地址,和有效地址(即段内偏移)相加形成一维的线性地址。如果采用页式存储管理,线性地址再转化为实际的物理地址。后一个步骤与指令系统无关,由存储管理程序实现,对程序员来讲是透明的 。
5.5.4 Power PC指令系统 1.指令格式 表 5.2 Power PC 指令简表 6位 5位 5位 16位 条件转移 选项 CR位 转移位移量 A L 条件转移 选项 CR位 通过计数器或链接寄存器间接 L 无条件转移 选项 CR位 通过计数器或链接寄存器间接 L 注:L为连接位,A为绝对/相对标志 (a) 转移指令 6位 5位 5位 5位 CR 目标位 源位 源位 与、或、异或等 / (b) 条件寄存器逻辑指令
6位 5位 5位 11位 取数/存数间接 目标寄存器 基址寄存器 位移 取数/存数间接 目标寄存器 基址寄存器 变址寄存器 大小、符号、更新 / 取数/存数间接 目标寄存器 基址寄存器 位移 XO (c) 取数/存数指令 6位 5位 5位 16位 算术运算 目标寄存器 源寄存器 源寄存器 O ADD、SUB等 R ADD SUB等 目标寄存器 源寄存器 有符号立即数 逻辑运算 目标寄存器 源寄存器 源寄存器 ADD、SUB等 R AND、OR等 目标寄存器 源寄存器 有符号立即数 环移 目标寄存器 源寄存器 移位量 屏蔽起点 屏蔽终点 R 环移 平移 目标寄存器 源寄存器 源寄存器 移位类型或屏蔽 R 环移 目标寄存器 源寄存器 移位量 屏蔽字 XO S R 环移 目标寄存器 源寄存器 移位量 屏蔽字 XO R 平移 目标寄存器 源寄存器 源寄存器 类型或屏蔽 S R (d) 整数算术/逻辑运算及环移/平移指令
浮点运算 目标寄存器 源寄存器 源寄存器 源寄存器 浮点加等 R (e) 浮点运算指令 注:A:绝对或PC相对 L: 链接至子程序 O:将溢出标志记录到XER中 R:将状态 标志记录到CR1中 XO:操作码扩展 S:移位量字段的一部分 2.寻址方式 (1) 取数/存数指令的寻址方式 • 这类指令主要有两种寻址方式:间接寻址和间接变址寻址,如图5.16所示。 • 间接寻址其有效地址EA=(BR)+D,BR为基址寄存器,任何一个通用寄存器均可为基址寄存器;D为16位(有正负)的位移量。间接变址寻址其有效地址EA=(BR)+(IR),IR为变址寄存器,任一通用寄存器也均可作为变址寄存器。
(2) 转移指令的寻址方式 ①绝对地址: ②相对寻址: ③间接寻址: (3) 算术指令的寻址方式 • 整数算术指令可采用寄存器寻址或立即寻址,立即数是16位有符号数。浮点算术指令只可采用寄存器寻址。
5. 6 CISC与RISC指令 1.背景 • “复杂指令集计算机”,简称CISC(Complex Instruction Set Computer)。 • 使指令系统越来越复杂的出发点有以下几点: ① 使目标程序得到优化: ② 给高级语言提供更好的支持: ③ 提供对操作系统的支持: • 精简指令集计算机RISC(Reduced Instruction Set Computer)。
2.特点 • 精简指令系统计算机的着眼点不是简单地放在简化指令系统上,而是通过简化指令使计算机的结构更加简单合理,从而提高机器的性能。 • RISC与CISC比较,其指令系统的主要特点为: • 指令数目较少,一般都选用使用频度最高的一些简单指令; 2)指令长度固定,指令格式种类少,寻址方式 种类少; 3)大多数指令可在一个机器周期内完成; 4)通用寄存器数量多,只有存数/取数指令访问存储 器,而其余指令均在寄存器之间进行操作。
采用RISC技术后,由于指令系统简单,CPU的控制逻辑大大简化,芯片上可设置更多的通用寄存器,指令系统也可以采用速度较快的硬连线逻辑来实现,且更适合于采用指令流水技术,这些都可以使指令的执行速度进一步提高。 • 指令数量少,固然使编译工作量加大,但由于指令系统中的指令都是精选的,编译时间少,反过来对编译程序的优化又是有利的。 3. CISC与RISC之争论 • 随着速度、芯片密度的不断提高,使RISC系统日趋复杂,而CISC机也由于采用了部分RISC先进技术,其性能更加提高。
5.7 MMX技术 • MMX(Microprocessor Media Extension)是Intel公司为提高PC机上处理多媒体和通信能力而推出的新一代处理器技术,它通过在Pentium或pentium Pro处理器中增加8个64位寄存器和57条新指令来实现。 1. MMX的由来与特点 多媒体应用中的图形、图像、视频、音频的操作中存在大量共同特征的操作,如: ·短整数类型的并行操作(如8图形象素和16位音频信 号);
·频繁的乘法累加(如FIR滤波,矩阵运算); ·短数据的高度循环运算(如快速傅里叶变换FFT、离散余弦变换DCT); ·计算密集型算法(如三维图形、视频压缩); · 高度并行操作(如图像处理)。 • MMX技术的特点: • 引进了新的数据类型和通用寄存器 ; • MMX技术的主要数据类型为定点紧缩(Packed)整数它定义了4种新的64位数据类型(如图5.17所示)。
(2) 采用SIMD(Single Instruction Multi Data技术 • 单条指令同时并行地处理多个数据元素
(3) 饱和(Situration)运算 • 两类运算模式:环绕运算和饱和运算。 • 在环绕运算或称非饱和运算中,上溢或下溢的结果被截取,即进位被丢掉,仅返回低有效位值。 • 饱和运算:即上溢与下溢结果被截取至各类数据值域的最大值或最小值。 • (4) 兼容性 • MMX技术与现有的IA(Intel Architecture)处理器和OS保持向下兼容,IA MMX状态建立在IA浮点状态之上,无需增加新的状态。
2. MMX指令系统 • 7大类:算术运算指令、逻辑运算指令、比较指令、转换指令、移位指令、数据传送指令、置空MMX状态指令。 (1)指令句法 · 数据类型: 紧缩字节、紧缩字、紧缩双字、64位字;有符号数与无符号数;环绕和饱和运算。 ·句法: 词头; 指令; 词尾。 (2) 指令类型 1) 算术运算类指令:有紧缩加(ADD)、减(SUB)、乘法(MUL)、乘加(MADD)等指令。
2) 比较指令:PCMPEQ(相等比较)、PCMPGT(是否大于),这类指令用于条件转移操作。 3) 转换指令:实现各类紧缩数据之间的转换。 4) 逻辑指令:在64位数据上进行按位“与”、“与非” 或“与非”和“异或”操作。 5) 移位指令:64位数据的逻辑左/右移和算术右移。 6) 数据传送指令:在主存储器和MMX寄存器之间或MMX寄存器本身之间64位数据传送;或整型寄存器与MMX寄存器之间32位数据传送。 7) EMMX(Empty MMX State):置空MMX状态。在MMX例程结束时,清除MMX状态。
(3) 操作数 • MMX指令中除数据传送指令以外,源操作数都驻留在存储器或MMX寄存器中,而目标操作数驻留在MMX寄存器中;而传送指令,源和目标操作数还可以是整型寄存器内容。