1 / 55

第二章 指令系统

第二章 指令系统. 第 i 种格式:. 第 j 种格式:. OP i A 1 A 2. OP j A. 编码示例: 00110 000~111 000~111 功能示例: A 1 ←(A 1 )+(A 2 ). 编码示例: 10110 000~111 功能示例: A←(A)+1. OP 1 A 1 A 2. 第 1 种: 第 2 种: … 第 n 种:. OP 2 A. …. OP n A 1 A 2. 第一节 指令系统设计概述. 一、 指令系统概述. 1 、指令系统的设计、应用及实现 (1) 指令系统的设计

santos
Download Presentation

第二章 指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 指令系统

  2. 第i种格式: 第j种格式: OPi A1 A2 OPj A 编码示例:00110 000~111 000~111 功能示例:A1←(A1)+(A2) 编码示例:10110 000~111 功能示例:A←(A)+1 OP1A1 A2 第1种: 第2种: … 第n种: OP2A … OPnA1 A2 第一节 指令系统设计概述 一、指令系统概述 1、指令系统的设计、应用及实现 (1)指令系统的设计 *机器指令:计算机硬件实现的运算或操作的命令; *指令系统:所有机器指令的集合; *指令系统设计:定义所有机器指令的格式(含编码)。 回下页

  3. 应用程序示例:从主存地址为2000H开始的100个元素累加求和 机器指令格式 机器指令程序 汇编程序 1011wreg data 10110010 01100100 CX←100 10111001 00000000 00100000LP:BX←2000H 10110000 00000000 AL←0 0000000w mod reg r/m 00000001 00000111AL←AL+[BX] 01000reg 01000001 BX←BX+1 11100010 disp 11100010 11111000 LOOP LP (2)指令系统的应用 第i种指令应用示例a:00110 000 001 功能 AH←(AH)+(AL) 示例b:00110 011 000 功能 BL←(BL)+(AH) *指令系统应用:按指令格式要求,根据应用需要、编写程序中的指令(即指令格式的实例)。 转上页 回下页

  4. CPU 指令寄存器IR: OP A IDD … 指令译码器IDI 功能部件1 寄存器1 … … … 寄存器m 功能部件n 存储 总线 内部总线 MAR/MDR (3)指令系统的实现 指令功能实现步骤—ID对IR的OP译码,用输出信号控制某一部件工作;ID对IR的A译码,用输出信号控制相关REG的读/写;信号有效时间由时序部件及该指令功能实现步骤决定。 指令操作或运算—部件功能实现及数据传递等的组合。 *指令系统实现:按指令格式要求,用硬件实现指令功能。 *设计/应用实现三者关系: 类似C语言设计、用C语言编程、C语言编译及执行平台! ☆指令系统的实质—软件与硬件之间的界面(“约定”)! 转上页

  5. 第i种指令格式: OPi A1 A2 硬件支持的操作类型 目的操作数的表示 操作数个数及表示 硬件支持的数据类型 (含数据长度) 可存放数据部件类型、部件的编址方式 部件中同一数据地址的表示方式 2、指令系统涉及内容 (1)指令格式包含信息分析 ①操作:A1←(A1) OPi (A2) 或 A2←(A2) OPi (A1) ②数据:(A1)=OPi支持类型的地址为A1的数据 (2)涉及内容 *指令集结构:指令集总体框架,如存放部件、寄存器数量; *指令集功能:支持操作的类型; *数据表示:操作支持的数据类型、数据存储格式等。 *寻址方式:(不同/相同部件)地址的表示形式; *指令格式:指令的相关信息的组织(表示格式)。

  6. 二、指令系统的性能 *指令系统性能的实质: 反映运用指令系统编写的程序,在执行时的性能。 1、代码效率 反映指令系统对应用需求的支持程度(即同样应用需求所需要的指令数)。 *指标:指令字功能、指令字长度、指令字冗余空间、操作数或地址访问范围、对编译程序的支持(如对称性)等。 例1—若指令系统仅支持8/16位运算,32位运算使用频率中等,则代码效率不高(需多条指令将32位运算拆分为16位运算);假如支持32位运算则较好(8086与80286指令系统如是说)。 例2—若指令系统不支持基址+变址寻址方式,而二维数组运算使用频率中等,则代码效率不高(每次需增加一条指令实现数组元素的二维定位)。 回下页

  7. 第i种指令格式: OPi(7位) 立即数(9位) OPi(8位) 立即数(8位) 第j种指令格式: OPj(8位) 立即数(8位) OPj(8位) 立即数(8位) 第i种指令格式: OPi DF1 A1 DF2 A2 OPi DF12 A1 A2 DF1 译码 DF1 译码 DF12 译码 A1译码 A2译码 OPi译码 OPi译码 A1译码 A2译码 时间 时间 2、执行效率 反映指令系统对硬件实现的支持程度(即同样功能的指令所需要的执行时间)。 *指标:正交性、规整性等,以衡量译码速度、操作并行性、执行速度等方面的性能。 例3—指令格式中相关字段长度不规整,会影响译码速度(需进行二次译码或处理) 例4—指令格式中索引字段不靠前,会影响操作并行性(不能实现并行译码) △代码效率与执行效率的方案矛盾时,常采用折中方案。 转上页

  8. 第1种: 第2种: … 第n种: OP1A1 A2 OP2A … OPnA1 A2 三、指令系统的设计过程 1、指令集结构设计 确定指令集风格、显式操作数个数、存放操作数的部件、寄存器数量等参数。 2、指令集功能设计及优化 确定硬件支持的基本操作有哪些。 3、数据表示设计 确定硬件支持的数据类型有哪些。 4、寻址方式设计 确定操作数存放部件的编址及操作数地址表示方式。 5、指令格式设计及优化 确定操作码、数据类型、寻址方式和地址码等所有信息的表示格式。

  9. 第二节 指令集结构设计 一、指令集结构分类 1、分类方法 (1)按CPU中操作数的存储方法分类 --主要准则 *分类结果:堆栈型、累加器型、寄存器型指令集; *特点:在代码效率、硬件成本、执行效率方面有所不同; *流行类型:一般为三种类型中某些类型的混合型。 如--Intel 80x86为通用寄存器型和累加器型的混合体 (2)按指令中显式操作数个数分类 说明—显式操作数个数指ALU指令中最大显式操作数个数 *分类结果:零、单、双、三操作数指令集; 堆栈型—0个,累加器型—1个,寄存器型—2个或3个, 如--Intel 80x86为双操作数指令集 *特点:操作数多时代码效率高、指令较长。 回下页

  10. 2、通用寄存器型指令集进一步分类 *分类方法:按ALU指令中操作数是否放在存储器中分类; *分类结果:R-R型、R-M型、M-M型指令集; 注—R-M型指令集中至少有1个操作数在存储器中, 如3个操作数中有2个在存储器中,亦属于R-M型 *特点:R-R型—指令简单、目标代码长、执行效率高, M-M型—指令密度高、目标代码短、执行效率低, R-M型—介于R-R型和M-M型之间。 *风格:RISC—R-R型指令集; CISC—R-M型及M-M型指令集。 △Intel 80x86指令集类型: 为累加器型与寄存器型混合的、双操作数的、R-M型指令集,属于CISC风格。 转上页

  11. 二、指令集结构设计 *设计内容:确定指令集类型、风格、显式操作数个数、REG数量等参数。 1、指令集类型的确定 *类型:堆栈型、累加器型、通用寄存器型。 *影响因素:应用特征、器件成本、性能及性能/价格要求. *发展趋势:通用寄存器型。 ( ∵累加器型代码效率不够高、指令短, 又∵器件成本较低→通用寄存器型代码空间增加的成本不大) 2、指令集风格的确定 *类型:CISC、RISC。 *影响因素:性能/价格要求,对VLSI、并行性的支持。 *发展趋势:RISC。

  12. 3、指令集显式操作数个数的确定 *类型:通用寄存器型一般为2~3个显式操作数。 *影响因素:指令集风格。 *确定方法: RISC风格—注重处理速度、采用定长指令,考虑REG编码较短及减少数据相关,一般选择3个显式操作数; CISC风格—注重指令效率、采用可变长指令,考虑REG数量少及REG与MEM速度差距,一般选择2个显式操作数,考虑对流水技术的支持,一般只选择1个MEM操作数。 思考—若指令集显式操作数个数确定为2个,而某指令的操作需要≥3个操作数,如何处理? 答—默认或隐含非显式操作数放在堆栈或特定REG中!硬件实现时通过操作码(不同操作的操作码不同)判别这些约定!

  13. 4、寄存器数量的确定 *寄存器种类:有专用REG(系统和堆栈使用)及通用REG(变量使用)两种。 *专用REG数量确定: 根据OS需要确定,与指令系统基本无关; 如:控制REG、状态REG等, 某操作码只对特定REG操作,REG无需在地址码中表示, 8086汇编中的STI、CLI等指令即如此 *通用REG数量:由编译程序根据应用程序特征(哪些变量分配REG时最优)及REG分配算法来确定。 如:8086中的AX~DI等8个REG, 某操作码可对任一REG操作,REG需在地址码中表示, 8086汇编中的MOV AX,BX和MOV AX,CX等即如此 ☆指令集结构设计基础—应用需求,性能及性能/价格要求。

  14. 第三节 指令集功能设计及优化 *设计基础:①应用需求的典型程序范例; ②已确定的指令集结构的风格。 *设计内容:确定指令系统支持的基本操作有哪些。 *指令中操作的常规分类:

  15. 一、 CISC风格指令集的功能设计及优化 1、CISC的功能设计 *设计方法:根据应用需求的典型程序范例(多个),将所有操作或运算分解成基本操作;对所有基本操作进行分类;统计各基本操作的使用频率。 *CISC目标:侧重强化指令功能,以减少程序的目标代码长度,从而提高执行速度。 *设计结果:将频率较高的操作作为指令系统支持的操作。 回下页

  16. 例1—某系统应用需求的基本操作使用频率统计如下表:例1—某系统应用需求的基本操作使用频率统计如下表: 指令系统支持操作的选择:使用频率超过1%的操作。 说明--①所选同一操作类型中,同样选择频率较高的操作; 如:逻辑类的“异或”频率较低未选择 ②同一操作的不同数据类型,只选择高频数据类型。 如:“加减1”只在整数运算中频率较高 转上页 回下页 回18页 回19页 回23页

  17. 2、CISC的功能设计优化 使用静态频度分析和动态频度分析方法,在空间上和时间上寻求指令功能的改进。 (1)面向目标程序增强指令功能 增强指令功能,以减少目标代码空间; 设置新功能的指令取代频率较高的机器语言指令串。 (2)面向高级语言和编译程序改进指令系统 设置新功能的指令取代频率高的高级语言语句串; 例如:用循环操作代替自减1+分支操作串 增加指令的规整性及对称性,以优化目标代码生成。 例如:有R←R+M指令,必有M←R+M指令 (3)面向OS改进指令系统 设置相关专用指令,以优化操作系统的执行效率。 例如:系统工作状态切换、进程同步与互斥等操作用专用指令表示 转上页

  18. 二、 RISC风格指令集的功能设计及优化 1、CISC存在的主要问题 ·为提高指令效率,导致指令复杂化、编译复杂化、体系结构复杂化; ·指令功能的不平衡性,不利于并行处理技术的实现; ·指令的复杂性,导致控制器复杂,不利于VLSI的实现。 2、RISC的功能设计 *设计方法:与CISC的功能设计方法一致。 *RISC目标:侧重简化指令功能,使体系结构简单、有效,以提高执行速度,并适应并行处理及VLSI的发展需要。 *设计结果:将频率很高的操作作为指令系统支持的操作。 例2—对例1而言,RISC选择使用频率超过3.8%的操作。 转16页

  19. 3、RISC的功能设计优化 ·将一些最有用的操作补充为指令系统支持的操作; 例如:逻辑操作中的“非”操作 ·增加指令功能,提高对高级语言和编译程序的支持; 例如:利用指令格式的空闲位置增加子功能,提高指令效率, 采用3个操作数指令以支持编译的目标代码生成 ·设置专用指令,提高对操作系统的支持; ·优化时注意各指令功能的平衡性,保证指令在一个机器周期内完成。 例如:指令均采用R-R方式工作(Load/Store指令除外) 4、RISC与CISC的比较 *程序的用户CPU时间:TCPU=IN×CPI×TC CISC—强化指令功能(增加了CPI),想缩短目标代码空间IN; RISC—简化指令功能(增加了IN),想缩短指令执行时间CPI. 转16页

  20. 第四节 数据表示设计 一、数据表示设计概述 1、数据类型 *定义:具有一组值的集合,且定义了对该集合的操作集。 *分类:基本类型、结构类型。 2、数据结构 *定义:是面向软件的数据类型,即软件能够定义和引用的数据类型。 *实现条件:需高级语言相应指令支持。 3、数据表示 *定义:是面向硬件的数据类型,即机器硬件能直接识别和引用的数据类型。 *实现条件:需相应的机器指令和处理部件支持。 回下页

  21. 软件映像方法(1-x%) 数据结构实现 数据表示实现 直接使用数据表示(x%) 4、数据结构与数据表示 *数据结构的实现: 通过数据表示和软件映像相结合方法实现。 软件映像—用编译程序对数据结构中不可直接引用部分进行转换 *数据结构与数据表示的关系: 数据表示是数据结构的一个子集; 数据表示是软件和硬件界面的一部分,数据结构是软件和应用界面的一部分。 ☆数据表示的选择实质上是软硬取舍问题。 转上页

  22. 5、数据表示设计 (1)数据表示分类 *基本数据表示:定点数、浮点数、十进制数、逻辑数、字符、字符串等; *高级数据表示:堆栈、数组、向量、树、链表、指针等。 (2)数据表示设计 *设计内容:确定指令系统支持的数据表示有哪些,及所选数据表示的相关参数(如长度、格式、操作处理等)。 *设计目标: ·缩小高级语言和机器语言间语义差别; └→节省处理时间和存储空间 ·提高系统性能/价格。 └→等性能时减少成本,或增加少量成本提高性能 回下页

  23. *设计方法:根据应用需求的典型程序范例(多个),统计各种数据类型及相关参数的使用频率。 *设计结果: ·选择使用频率较高的数据类型作为数据表示; ·根据使用频率,确定所选数据表示的相关参数。 例1—针对第三节的例1,指令系统支持的数据表示应有整数、浮点数、逻辑数、字符;而十进制、字符串等应作为软件映像处理。 思考1—上例中,整数的长度为多少位?判断是否需要支持多种长度的依据是什么? 思考2—上例中,逻辑数与其他数据表示存储时的区别?指令系统指令格式如何反映这些区别? 转上页 转16页

  24. 符号Sm 尾数m 符号Se 指数e 尾数M (长度为p) 指数E (长度为q) 二、数据表示设计举例—浮点数数据表示设计 1、浮点数表示方法 通常用定点数(纯整数及纯小数)的组合表示。 *表示方法的相关参数: 尾数和指数的数制及码制、基rm及re、长度p及q。 *浮点数表示的设计内容: 参数设计、存储格式设计、操作处理设计。

  25. 2、浮点表示的参数设计 *尾数及指数的数制设计: 尾数数制—为纯小数;←机器内部无小数点,必须 指数数制—为纯整数。采用定点数 (1)码制的设计 *设计依据:能够方便浮点数运算的硬件实现; *选择范围:原码、补码、反码、移码等; *设计结果: 尾数码制—一般为原码或补码, ←方便硬件实现 指数码制—一般为移码; ←方便对阶实现 (2)基(进制)的设计 *设计依据:当p及q为常数时,能够在表示数的范围、精度、表数效率等方面有好的性能; *选择范围:2、3、4、5、…; 回下页

  26. *指数的基re的设计: ∵re对数的范围及精度无影响、re≠2x时对阶实现困难 ↑ ↑ 整数的长度固定、表示数的范围固定 如(20H)BCD-1=(19H)BCD ∴re通常取为2; *尾数的基rm的设计: ∵rm增大,表示数的范围增大、精度下降、表数效率下降 注—表数效率=规格化数个数/全部浮点数个数 又∵数的范围与q有关、精度与q无关; ∴rm通常取为2。 ←利于提高精度,多种长度利于增加范围 案例:早期的IBM 360系列等rm=16,Burroughs的B6700系列等rm=8, 后期的Intel x86系列、DEC、CDC等机器rm=2 转上页

  27. 使用频率 使用频率 100% 100% p+q p+q (a)无明显拐点 (b)有一个明显拐点 (3)尾数及指数长度的设计 *设计依据:浮点数表示数的范围、精度能够满足应用的需要(接近100%直接引用); *选择范围:p+q长度为存储字长的整数倍; *设计方法:根据应用需求的典型程序范例(多个),统计数的范围及精度对应p及q的使用频率分布。 *设计结果: 若频率分布中无明显拐点,则只设计一种p及q, 若频率分布中有多个明显拐点,则设计多种p及q。

  28. 位p+q-1 …… 0 位p+q-1 …… 0 Sm m Se e 或 Sm Se e m 3、存储格式设计 *格式设计:可选任意一种格式,只要方便硬件实现即可。 *存储设计:浮点数的各个字节,服从系统约定的存储方式(大端存储或小端存储方式)。 4、操作处理设计 主要有舍入处理方法、警戒位数选择两个方面。 *舍入处理方法: 种类—截断法、恒置1法、舍入法、查表舍入法; 衡量指标—最大误差、平均误差及实现成本。 *警戒位数选择: 不讨论,参见郑纬民的《计算机系统结构》(第2版)。

  29. 数据格式: 标志符 数据 三、数据表示的引入原则 *引入原则:引入数据表示后,能否有效提高系统效率、及该数据表示的通用性是否高。 *引入原则的实质:是否能够提高系统的性能/价格。 1、是否有效提高系统效率 即是否明显减少应用需求典型程序的实现时间和存储空间. 例2—引入向量数据表示时,a)向量指令减少了原指令串的存储空间,向量运算部件节省了实现时间(硬件比软件快); b)当使用频率不高时,不能明显提高系统效率。 例3—引入带标志符的数据表示时, a)指令及数据总存储空间减少,指令实现时间略有增加,但特定程序(智能计算机)实现时间明显减少(支持动态数据类型); b)当使用频率不高时,不能明显提高系统效率。 回下页

  30. △系统效率特征参数:实现时间、存储空间、使用频率。 △实现时间和存储空间矛盾时的处理: 不同时期的侧重点不同(硬件成本占总成本的比重)。 2、数据表示的通用性是否高 *通用性:指该数据表示是否对多种数据结构均适用。 例4—字符与无符号整数数据表示的比较: 字符—对自然数、颜色等支持不够; 无符号整数—对多种数据类型支持较好。 例5—树型与指针数据表示的比较: 树型—对向量、数组等支持不够; 指针—对多种数据结构支持较好。 转上页

  31. bitX … bit0 0 … A-1 Y … Y+B-1 … 部件1 (容量=XA位) 部件2 (容量=XB位) 第五节 寻址方式设计 *设计内容:确定操作数存储部件的编址方式、操作数的寻址方式。 *操作数存储部件:由指令集机构确定,通常有寄存器、存储器、I/O设备、堆栈等。 一、编址方式 *编址方式设计内容: ①编址单位—确定访问操作数的最小长度; ②编址方式—确定各部件编址的关系。 *编址方式设计目标: 能够节省指令及数据的存储空间及减小访问时间。

  32. 1、编址单位 (1)按字编址 *优点:地址码短、控制简单、容量不浪费; *缺点:对非数值运算支持差,需增加字节、位操作指令。 注—非数值数据(如字符)长度通常为字节或其倍数 (2)按字节编址 *优点:支持非数值运算,编址单位与信息基本长度一致; *缺点:控制复杂(编址单位与访问长度不一致导致)。 (3)按位编址 *优点:与按字节编址相同,可有力地支持可变字长运算; *缺点:地址码太长,指令效率不高。 △编址单位设计: 寄存器、I/O设备、堆栈—按字编址(节省操作时间); 存储器—按字节编址(节省存储空间)。 回下页

  33. M3M2 M1 M0 体号: M M3M2 M1 M0 0 1 … 4n-1 3 7 … 4n-1 2 6 … 4n-2 1 5 … 4n-3 0 4 … 4n-4 编址: … … … … 访问宽度: 1B 4B 按整数边界对齐原则存储示例 顺序编址 交叉编址 △存储器按字节编址时的性能设计:(计算机组成技术回顾) ·从访问时间上考虑— 单体MEM顺序编址方案:寻址简单、访问带宽太小; ☆多体MEM交叉编址方案:寻址相对复杂、访问带宽较大。 ·从存储空间上考虑— 从任意位置存放:节省空间、损失时间; 从存储字的起始位置存放:节省时间、浪费空间; ☆从数据长度的整数倍位置存放:两者折衷。 └→满足整数边界对齐原则 转上页

  34. 2、编址方式 (1)按部件分类编址 *特点:地址长度短,地址形成简单,寻址范围大; 指令格式复杂(需区分部件)。 *实现:指令通过标志位或约定来区分不同的部件。 (2)统一编址 *特点:指令格式简单;地址形成复杂,可扩展性差。 *实现:硬件通过约定地址范围来区分不同的部件。 (3)隐式编址 *特点:部分部件不需要地址,指令系统不够规范。 △编址方式设计: 常采用按部件分类编址方法,有时辅以隐式编址方法。

  35. 二、寻址方式 *寻址方式分类:立即、寄存器(直接)、存储器直接、寄存器间接、基址或变址、相对寻址等方式。 *寻址方式设计内容:确定支持的寻址方式及相关参数属性. 注—立即寻址有立即数长度参数, 基址或变址、相对寻址有偏移量长度参数 *寻址方式设计目标:有效支持编译程序生成目标代码。 1、寻址方式种类的确定 *设计方法:使用频带分析法,按典型程序中各种寻址方式的使用频率,选择高频率(CISC/RISC要求不同)的寻址方式。 *设计结果:CISC—尽可能多的寻址方式,增加灵活性; RISC--只有几种频率高的寻址方式,简化硬件.

  36. 70% Tex 60% gcc 55% Spice 50% 43% 40% 39% 40% 32% 30% 24% 20% 17% 16% 11% 6% 6% 10% 3% 1% 1% 0% 0% 存储器间 接寻址 寄存器间 接寻址 立即寻址 偏移寻址 缩放寻址 例1—在VAX指令集机器上运行gcc、Spice和Tex基准程序,各种寻址方式的分布如下图: 寻址方式确定的结果: ·偏移(基址/变址/相对)、立即、寄存器间接寻址使用频率很高,必须支持; ·对其他寻址方式,根据指令系统风格进行进一步选择。

  37. SPECfp92 SPECint92 30% 占偏移寻址 方式百分比 20% 10% 0% 0 2 4 6 8 10 12 14 16 Log2(偏移量大小) 2、寻址方式参数的确定 *设计方法:根据频带分析法进行分析和选择,确定的结果应能够满足绝大多数(不同系统规定不同)应用需求。 例2—在某R-R机器上运行SPECint92和SPECfp92进行测试,偏移寻址结果分布如下: 参数确定的结果:偏移量为12~16位时,能满足75%~99%的访问频率,长度应设置为12~16位(由指令字长度最终确定)。

  38. 第六节 指令格式设计及优化 一、操作码设计及优化 *设计基础:指令集功能设计确定的操作类型及使用频率。 *设计内容: 确定操作码编码方式(定长/变长)、长度及编码。 *设计目标:使平均码长尽可能小(目标代码占用空间小); 使规整性较好(便于译码的硬件实现)。 *设计方法: ①操作码设计—采用霍夫曼编码方式,使平均码长尽可能小; ②操作码优化—采用扩展编码方式,使规整性较好。

  39. 1.00 1 0 0.60 1 0 0.34 1 0 0.19 1 0 0.08 0.11 1 0 1 0 0.04 0.04 0.05 0.06 0.15 0.26 0.40 I7 I6 I5 I4 I3 I2 I1 1、操作码设计 *基本思想:采用霍夫曼编码方式,使平均码长最小。 *编码方法:根据霍夫曼树进行编码。 例1—7种操作使用频率分别为0.4、0.26、0.15、0.06、0.05、0.04、0.04,对每种操作进行编码。 霍夫曼树: 霍夫曼编码: *特点:霍夫曼编码平均码长最短;规整性最差。 回41页

  40. 2、操作码优化设计 *基本思想:将已设计的霍夫曼编码,将其扩展成有限几种长度的编码,使平均码长尽量小、具有较好的规整性。 *扩展方法:根据各操作使用频率的宏观分布进行扩展。 *扩展类型:横向扩展—编码每段最后一种编码用于扩展; 纵向扩展—编码每段第一位用于扩展; 混合扩展—编码每段最后几种编码用于扩展。 回下页

  41. 例2—例1中的霍夫曼编码如何扩展? 例3—若两种操作的操作码分别为0100及010011,硬件实现时能否识别出它们是不同的操作? 例4—指令系统共有74种操作,使用频率分布如下:4种操作平均各为0.12,15种操作平均各为0.02,55种操作平均个为0.004。如何对其进行扩展编码? 转39页 转上页

  42. OPi DTi DA AF1 A1 … AFm Am 第i种指令格式: 第j种指令格式: OPj DTj AF1 A1 说明:DT—数据类型(含长度),DA—目的操作数,AF—寻址方式 二、指令字设计及优化 *设计基础:已确定的指令集结构(如REG数量、显式操作数个数等),操作码(含支持的操作数类型),各种操作支持的寻址方式。 *设计内容:设计出各种操作对应的指令格式。 *设计目标:指令字规整性好、代码效率及执行效率较高。 1、指令字设计 *指令格式: 操作码+操作数类型+目的操作数+{寻址方式+地址码} *指令格式参数:指令字长度、各字段信息编码及长度、显式地址码个数。 回下页 回44页 回45页

  43. OPi DTi DA AF1 A1 AF2 A2 OPi—0001;DTi--00/01/1x表示8位整数/16位整数/浮点数操作数; DA—0/1表示是/否第1个地址码为目的操作数; AF—00表示寄存器间接寻址,A为通用寄存器编号(有8个); 01表示直接寻址,A为存储器有效地址(长度为16位); 10表示变址寻址,A为变址寄存器号(有4个)及偏移量(16位); 11表示寄存器(直接)寻址,A为通用寄存器号(有8个)。 *指令字长度参数设计: ①指令字长度为存储器编址单位的整数倍; ②CISC风格一般为变长指令格式, ←节省空间 RISC一般为定长指令格式。 ←节约时间 *其他参数设计: ①所有指令中,各字段根据其值种类数进行等长编码; 例5—若加法操作的指令格式如下图说明,REG+REG及REG+MEM变址寻址方式时的指令字长度各是多少? 转上页

  44. 方案1: OP自增DT DA AF A 说明:DT--00/01/1x表示8位整数/16位整数/浮点数操作数,本指令中只为00/01; DA—0/1表示是/否第1个地址码为目的操作数,本指令中不用; AF—00~11表示4种寻址方式,含义与上例相同。 方案2: OP自增DT AF A 说明:DT--0/1表示8位/16位整数操作数; AF—00~11表示4种寻址方式,含义与上例相同。 ②某指令的数据类型只有一种时,DT可省略; ③某指令无目的操作数、只有一个操作数、目的操作数默认在特定位置时,DA可省略; 例6—只有整数有自增一操作,该操作指令格式有如下两种方案,你选哪种?为什么? 转42页

  45. 方案1: OP左移AF1 A1 A2 说明:AF1及A1为左移操作数;A2为左移位数,寄存器(直接)寻址方式 应用:需2条指令实现左移操作(其中1条指令为置左移位数到A2中) ----左移1位(数字1省略) 方案2: OP左移0 AF1 A1 OP左移1 AF1 A1 ----左移多位(位数隐含在寄存器CL中) 应用:左移1位时只需1条指令实现左移操作 ④某指令的某地址码只有一种寻址方式时,AFk可省略; ⑤某指令的操作数个数大于规定的显式操作数个数时,可默认某些操作数在特定部件的特定地址中。 例7—只有整数有左移操作,其中左移1位的使用频率特别大,该操作的指令格式可有如下两种方案,你选哪种? △指令格式设计的核心思想: 对最复杂指令格式进行简化设计,以提高性能! 转42页

  46. 2、CISC风格指令字格式优化设计 (0)x86指令格式分析 *基本特征: ·指令格式长度—变长指令格式,为字节的整数倍; ·显式操作数个数—最多2个显式操作数; ·MEM操作数个数—最多1个MEM操作数。 *指令格式: ·指令组成—[指令前缀+]指令本身 回下页 回48页

  47. 6b 2b 前缀类型 参数属性 例:功能前缀—111100,段前缀—111101,… 操作数长度属性—00/01/10表示为8或16位/32位/64位,… 7 2 1 0 7 6 5 4 3 2 1 0 OP D W MOD REG R/M 其中:OP--操作码,可为2B长度; W—0/1表示操作数长度为8位/16位; D—0/1表示目的操作数为REG还是R/M; MOD—11表示寄存器寻址,00~10表示存储器操作数寻址; REG—000~111表示REG操作数的通用REG编号(地址码); R/M—为REG操作数时,与REG含义相同(地址码), 为MEM操作数时,表示地址REG编号(部分地址码)。 说明:该格式仅为双操作数的基本格式,根据操作需求可变化。 ·指令前缀组成—前缀类型+参数属性 ·指令本身组成—操作码[+寻址方式][+偏移量参数]… 转上页 回下页 回49页 回50页 回51页

  48. ·寻址方式及地址码编码— ·指令本身的相关参数字段— 为数值数据型参数,长度已由寻址方式字段决定。 *参考文献:x86指令格式详见Intel8086ASMCode.doc。 转46页 转上页 回51页

  49. 7b 1b 1b 3b 1b 3b OP整数加DT AF1 A1 AF2 A2 7b 1b 1b 3b 1b 3b OP移位DT AF1 A1 OP整数加DT AF1 A1 AF2 A2 OP移位DT AF1 A1空 OP移位 (1)从提高规整性方面优化 *操作码分段表示:操作码的扩展部分可滞后放置。 例8—如下图,若8种移位操作的操作码扩展为10位、数据可为8位/16位整数、隐含1个操作数,如何优化指令格式? *相似操作或操作数规定相同:减少指令格式的复杂性。 例9—加法的DT需2位表示,而绝大多数操作为整数操作,应将整数与浮点运算视为不同操作、DT用1位表示(W位); 各指令的寻址方式表示应相同(除非只有1种)。 *隐含部分操作数:对预先规定的显式操作数个数的实现、指令长度为字节的整数倍等方面有较大帮助。 转47页

  50. (2)从代码效率方面优化 *操作码采用扩展编码方法:减少高频操作的操作码长度,缩小目标代码中操作码的平均码长。 例如—操作码有1B和2B2种长度 *寻址方式中参数长度可变:指令格式中设置标志位,以约定参数长度,可减小冗余空间。 例如—设置1位数据长度标志DT,可避免8位数据占用16位空间 *采用指令前缀增强指令功能:指令格式中设置可选的功能、参数长度等前缀,减少目标代码的指令数及指令长度。 例如—循环执行前缀可有效表示循环体为单条指令的循环操作; 偏移量或立即数一般为8位/16位,用1位标志表示;而32位不常用,用1位标志表示时需很多代码实现、用2位标志表示时浪费很大,操作数或地址长度前缀可有效解决该问题。 转47页

More Related