首页 【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072)

【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072)

举报
开通vip

【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072)【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072) 豆丁标准与论文网免费阅读:www.docin.com/week114 1 x86 指令集兼容处理器中微指令的设计与验证 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072) E-mail: anjf@mail.nwpu.edu.cn 摘要:微指令是设计 x86 兼容处理器的关键问题之一,一方面是因为微指令的开发设计 复杂度高且容易出错,另一方方面是因为微指令的仿真验证...

【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072)
【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072) 豆丁 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 与论文网免费阅读:www.docin.com/week114 1 x86 指令集兼容处理器中微指令的设计与验证 安建峰,樊晓桠 西北工业大学计算机学院,西安(710072) E-mail: anjf@mail.nwpu.edu.cn 摘要:微指令是设计 x86 兼容处理器的关键问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 之一,一方面是因为微指令的开发设计 复杂度高且容易出错,另一方方面是因为微指令的仿真验证难于在整个设计完成之前独立进 行。针对这些问题,本文提出构建微指令开发平台,以满足微指令设计与验证的需求。在该 平台中,首先定义微汇编语言,提高微指令的编写效率,降低编写出错几率。然后构建微指 令汇编器,支持将微汇编语言格式的微指令编译为二进制格式的微指令。最后构建微指令仿 真器,可以对微指令进行独立地仿真验证。本文最后对微指令开发平台进行了性能评估,微 指令汇编器的编译速度约 400 行/秒,微指令仿真器的仿真速度约 60KIPS。 关键词:处理器;x86;微指令 中 图分类号:TP303 文献表示码:A 1. 概述 x86 指令集是基于双操作数的 CISC 理念设计的,x86 指令完成的操作一般为 load-and-compute 或 load-compute-store。然而,大多数现代 x86 处理器并不直接执行 x86 指 令,而是先将每条 x86 指令转换为若干条与 load-store RISC 指令类似的微指令(Micro Instructions,uins),有的也称作微操作(Micro Operations,uops)。简单 x86 指令一般转 换在为一条微指令,而复杂 x86 指令一般转换为若干条微指令构成的微程序(Micro Program)。相对于直接执行 x86 指令,微指令可以更加容易采用乱序执行等先进体系结构 [1]技术。因此,将 x86 指令转换为微指令是设计 CISC 处理器的一个关键问题。西北工业大 学航空微电子中心在开发与 x86 指令集兼容的龙腾 C 系列处理器时也采用了相同的方式。 然而,使用微指令设计 x86 指令集兼容处理器存在两个问题: 第一,微指令的设计开 发是十分复杂的。以龙腾 C1 处理器为例,微指令共 8192 行, 每行微指令为 52 位,全部微指令共 8192×52= 425984 位。直接编写二进制格式的微指令效 率很低,而且极易出错,所以有必要采用更好的微指令设计开发 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 第二,微指令的仿真验证难于提前进行。在微指令填写完成之后,必须经过仿真验证, 确保微指令实现了对应 x86 指令的全部功能行为。这在整个处理器设计完成之前是无法进行 的,因为微指令的仿真需要取指部件、译码部件、执行部件等处理器其他部件的配合进行。 如果微指令不能提前得到仿真验证,就会影响整个处理器的设计进度。 从 x86 处理器的发展来看,微指令的复杂度将会越来越高。Intel 早期的 NetBurst 微架 构每周期可以生成 3 条微指令;Yonah 微架构有 3 组解码单元,每周期可以生成 6 条微指令; 最近的 Core 微架构拥有 4 组解码单元,每周期可以生成 7 条微指令。而且,从 Banias 核心 [2] 开始 Intel 开始采用微指令融合(Micro Fusion)和宏指令融合(Macro Fusion)技术,该 技术通过减少 X86 指令解码后生成的微指令的数目,来降低乱序执行引擎和执行单元的压 力,从而达到提升处理器效率的目的。 尽管龙腾 C 系列处理器目前尚未采用此类技术,但已经考虑在下一代龙腾 C 处理器中 1 本课题得到国家自然科学基金(60773223 和 60573107)资助。 - 1 - 豆丁标准与论文网免费阅读:www.docin.com/week114 实施。这些技术加剧了微指令设计的复杂度,更有必要对微指令提前进行验证。 针对上述问题,本文提出构建一个面向 x86 指令集兼容处理器的微指令开发平台,以满 足微指令设计与验证的需求。在该平台中,首先定义二进制格式微指令的助记符格式,称之 为微汇编语言。微汇编语言可以提高微指令的编写效率,降低编写出错的几率,解决微指令 的设计开发问题。然后构建一个微指令汇编器,支持将微汇编语言格式的微指令编译为二进 制格式的微指令。最后在微指令开发平台中构建一个微指令仿真器,内建伪取指部件、伪译 码部件和伪执行部件等仿真微指令的必要支持,从而可以在一个独立的环境中对微指令进行 仿真验证,解决微指令难于提前仿真验证的问题。 图 1 显示了本文提出的微指令开发平台的整体结构,主要由微指令汇编器和微指令仿真 器两部分构成,微指令开发人员将汇编格式的微指令经过微指令汇编器编译之后成为二进制 格式的微指令,可以在微指令仿真器中仿真验证。 微指令 汇编格式 微指令汇编器 微指令 二进制格式 微指令汇编器 伪执行单元及体 伪微控器 伪译码单元 系结构寄存器 伪取指单元 微指令仿真器 通过VMSIM接口引擎与VMSIM功能仿真模块连接 图 1 龙腾 C 处理器的微指令开发平台 本文第二部分描述微汇编 语言的定义,第三部分描述微指令汇编器的编译过程和编译速 度,第四部分描述微指令仿真器的仿真过程和仿真结果,最后进行了总结。 2. 微汇编语言的定义 [3] [4]参照 MASM 汇编语言和 Intel 指令参考 手册 华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载 中对于每条 x86 指令的微操作说明,定 义各类微指令的微汇编格式分别为: - 2 - 豆丁标准与论文网免费阅读:www.docin.com/week114 第一类,定点执行部件微指令: IEU: OPCODE DEST [, SRC] [JMP/CALL LABEL] [IF CONDITION] [EFLAGS/SIB] [LINK] [LINKA] [LINKB] 第二类,存储管理部件的微指令: MMU: ADD SRC1, SRC2 [EXCEPTION (EXCEPTIONNUMBER, ERRORCODE)] [JMP/CALL LABEL] [IF CONDITION] [REQPAGE] [MEETJUMP] [CHECK] [LINKA] [LINKB] [MIO] [RW] [LOCK] [LENGTH=1/2/4] 第三类,浮点执行部件的微指令: FPU: READ/WRITE SRC/DEST [JMP/CALL LABEL] [IF CONDITION] [FPUSTART] 第四类,空操作的微指令: NOP: END / REVERSED / CONT/ RET / JMP / CALL [LABEL] [IF CONDITION] 除了上述各类微汇编格式外,微指令汇编器还支持以下伪代码: LABEL: LABELNAME。用于定义标号名为 LABELNAME 的标号,以便用于指定 JMP 或者 CALL 的跳转目标。 ORG: LINENUMBER。用于指定下面一行微指令空间中的地址。 另外微指令汇编器支持 C/C++语言风格的单行注释和段落注释。 [5-7]有关龙腾 C1 处理器的微指令格式的详细情况可以参见文献。 3. 微指令汇编器 微指令汇编器的作用是将微汇编语言描述的微指令转换为 HDL 设计中微指令 ROM 所 需要的二进制格式。针对龙腾 C 处理器定义的微汇编语言,微指令汇编器需要扫描两遍源 程序。所谓“遍”(Pass)就是汇编工具把源文件从头到尾读入一次并进行有关处理的过程。 大多数汇编工具会执行多遍扫描,但从速度方面考虑,遍数越小越好,可以减少与磁盘 I/O 有关的开销。 龙腾 C 系列处理器的微指令汇编器使用两遍扫描主要是为了处理标号,第一遍扫描建 立标号与行号的映射表,第二遍完成微汇编语言的翻译。需要单独一遍扫描处理标号的原因 号与其他标识符不同,它不是预先定义的,而是用伪代码“LABEL”来声明的,然 在于标 后供 JMP 或 CALL 微指令来指定跳转目标地址。如果 JMP 或 CALL 是向后跳转,此时目标 地址标号所对应的行号还是未知的,所以需要单独一遍扫描来处理所有标号。 第一遍扫描源文件流程图如图 2 所示。 - 3 - 豆丁标准与论文网免费阅读:www.docin.com/week114 开始 输入源文件 Y 文件结束 N 读一个单词 Y 读一个单词 是ORG N Y 读一个单词 是LABEL N 是冒号 更新行号 IEU、MMU、 N Y FPU或NOP 读一个单词 Y 读一个单词 记录LABEL到标 号数据中 是冒号 标号数组索引 标号数组索 行号 初行号加1 加1 引初值为0 始值为0 输出标号数组 结束 图 2 微指令汇编器第一遍扫描源文件流程图 第二遍扫描源文件流程图如图 3 所示。 - 4 - 豆丁标准与论文网免费阅读:www.docin.com/week114 打开源文件 读取首行行号 Y 文件结束 源 N 读 一行有效代码 读一个元素 Y 是IEU 进入IEU指令编译子程序 N 是 Y MMU N 进入MMU指令编译子程序 是FPU Y N 是进入FPU指令编译子程序 错 NOP 误 Y 进入NOP指令编译子程序处 N 理 ERROR 子 程 序 输出汇编结果 关闭源文件 结束 图 3 微指令汇编器第二遍扫描源文件流程图 微指令汇编器还可以 完成二进制格式微指令的反汇编。反汇编只需要一遍扫描即可完成 反汇编工作,因为不需要处理标号和行号的映射关系,所有跳转目标被标记为 LABEL<行号 >的格式。微指令反汇编可以用来查看二进制格式的微指令文件。 表 1 给出了微指令汇编器的配置参数和性能,平均汇编 8192 行微指令需要约 20 秒,即 每秒可处理约 400 条微指令。 表 1 微指令汇编器的配置参数和编译性能 机器配置 P4 3.2 GHz 处理器,2G 内存 Windows XP操作系统 微指令 8192 行 Microsoft VC 6.0编译器 编译速度 平均汇编 8192 行微指令速度约需 20 秒,即每秒可处理约 400 条微指令 4. 微指令仿真器 微指令仿真器主要是将微指令汇编器汇编之后的二进制微指令进行仿真,使用各种测试 [8] 程序进行功能验证。微指令仿真器是基于仿真原型 VMSIM构建的。VMSIM 是西北工业 - 5 - 豆丁标准与论文网免费阅读:www.docin.com/week114 大学自行研发的面向处理器硬件设计功能验证的仿真原型,主要采用功能仿真和时序仿真分离的建模方式,构建两者之间的同步仿真控制,借助 Timing first 技术,实现将功能仿真模 块作为时序仿真模块参照模型的功能验证。微指令仿真器是作为 VMSIM 的时序仿真模块来 运行的。 如图 4 所示,微指令仿真器主要由伪取指单元、伪译码器、伪微控器、伪执行单元及体 系结构寄存器构成。这些伪模块全部使用 C/C++语言编写,不考虑处理器实现中的时序划分, 只是用来模拟微指令在处理器中的执行,因而相对于 HDL 设计的复杂度很低。 伪取指单元是 VMSIM 的一个跟踪器,它跟踪 VMSIM 执行的每条指令,将其送给伪译 码器,伪译码器查找出该指令对应的微指令入口,然后伪微控器从该入口地址开始执行对应 的微指令,每条微指令由伪执行单元解释和执行,伪执行单元会更新模拟的体系结构寄存器, 直到微指令执行结束。每执行一条指令,VMSIM 会将伪执行单元的体系结构寄存器状态与 VMSIM 功能仿真模块的正确状态进行对比,如果一致则说明微指令的编写没有错误。 通过微指令仿真器,不仅可以运行各类微指令的测试激励,提前验证微指令编写的正确 性,而且可以运行各种测试基准程序,对微指令的性能进行统计。 表 2 给出了微指令仿真器的配置参数。 表 2 微指令仿真器的配置参数 机器配置 P4 2.8 GHz 处理器,1G 内存 操作系统 Redhat Linux 企业版 3.0 GCC 4.2.3编译器 [9]仿真中主要使用了 Splash-2 测试基准程序,表 3 给出了仿真中选用的测试基准程序及 问题规模。 表 3 测试基准程序及问题规模 测试基准程序本文缩写问题规模 1 Ocean continuous partion OCEAN-CP 130×130 Ocean2 Ocean non-continuous partion OCEAN-NCP 同上3 Water spatial WASTER-S 512 molecules 4 Water nsquared WATER-NS 同上5 FFT FFT 256K points 6 RADIX RADIX 2M keys 图 4 给出微指令仿真器的仿真速度,平均速度约为 60KIPS。 6643970000 61663 60940 5900458300 50436 50000 40000 30000 20000 仿真速度(指令/秒)10000 0 图 4 微指令仿真器的仿真速度 - 6 - 豆丁标准与论文网免费阅读:www.docin.com/week114 图 5 给出了微指令仿真器统计的 UPI(Uins per Instruction,每指令包含微指令数量), 平均每条 x86 指令被分解为 1.64-2.33 条微指令。 2.332.502.32 2.01 1.95 2.00 1.75 1.64 1.50 1.00 0.50 每条指令包含微指令数 0.00 5 微指令仿真器统计的 UPI图 5. 相关研究工作 PTLsim [1] PTLsim是一个周期精确的 x86 处理器仿真器和虚拟机,支持 x86 和 x86-64 指令集。PTLsim 建模了一个 x86-64 兼容处理器内核,该内核采用现代处理器机制中的乱序执行,是 超标量结构。PTLsim 既可以在宿主计算机上全速执行原始代码,也可以在 RTL 级执行精确 的流水级结构。这是目前公开的唯一可以进行周期精确仿真的 x86 仿真器。PTLsim 源代码 中给出了所有 x86 指令翻译之后的微指令,对设计 x86 处理器具有重要参考意义。 rePLay Transmogrifier [10, 11] rePLay Transmogrifier是一个将指定指令集译码为通用微操作的框架,主要目标是进行时序仿真和微处理器建模。译码微操作的依据为从微处理器模型中提取出来的结构特 征。目前 rePLay Transmogrifier 支持两种指令集:x86 和 SPARC V9。这是一项有价值的研 究工作,如果自动译码效率很高,则可以在同一处理器上实现对多种指令集的支持。 Transmeta [12] Transmeta处理器(全美达)为按序超长指令字核心,执行 x86 指令时一个基于纯软件的指令翻译器会动态地依次编译或模拟 x86 指令,并加入了启发式搜索算法。这种方法的 优势为:在市场领导者 Intel/AMD 扩展 x86 核心指令集时,全美达可经由更新软件来迅速更 新它们的产品而不需重新设计硬件;处理器的性能与功耗可经由软件调节来适合不同应用; 使用软件上的应急 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 来修正硬件设计或制造瑕疵;可利用更多时间集中在增强核心性能或 减低功耗上而不用担心 x86 架构的向后兼容性;处理器可模拟多种架构,甚至可在同一时间 (在首次发表 Crusoe 时全美达曾示范在原生硬件上混合运行 pico-Java 与 x86)。尽管全美 达现在由于多种原因陷入困境,但是它依然持有多种相关专利,这种使用 x86 处理器的设计 思想依然值得借鉴。 [13][14][6]此外,文献对微程序控制器的优化设计进行了研究。文献对微指令汇编器进行了 [15][16]研究。文献提出了一种微指令格式的设计方法。文献提出了一种基于微指令覆盖的最 小指令集测试算法。 - 7 - 豆丁标准与论文网免费阅读:www.docin.com/week114 6. 结论 目前,使用本文提出的微指令开发平台设计的龙腾 C1 处理器和龙腾 C2 处理器已经完 成,均兼容 Intel 80486 DX2 指令集。以龙腾 C1 和龙腾 C2 为核心处理器的龙腾 S1 和龙腾 S2 片上系统芯片(System on Chip)已采用 0.18um 工艺流片,内核主频分别达到 66MHz 和 133MHz,样机系统可以运行未经修改的 DOS 操作系统、Turbo C 编译器和大量 DOS 应用 程序,已通过陕西省科委主持的技术鉴定。 因此,本文提出的微指令开发平台有效解决了 x86 指令集兼容处理器中微指令的设计验 证问题,为研发龙腾 C 系列处理器提供了有力支持。 参考文献 [1] Yourst M T. PTLsim: A Cycle Accurate Full System x86-64 Microarchitectural Simulator[J]. Proceedings of ISPASS. 2007. [2] Nguyen K. Preparing Applications for Intel? Core? Microarchitecture[J]. Technology @ Intel Magazine. 2006. [3] 冯萍, 史新福. 汇编语言与接口技术[M]. 机械工业出版社, 2002. [4] Intel. IA-32 Intel Architecture Software Developer’s Manual[J]. Intel Corporation. 2001. [5] 安建峰. 嵌入式处理器中的保护模式和地址管理单元的设计[D]. 西北工业大学, 硕士学位论文, 2003. [6] 靖朝鹏. 龙腾微处理器的微程序开发平台设计[D]. 西北工业大学, 2006. [7] 安建峰, 樊晓桠, 张盛兵, 王党辉. 基于静态指令翻译技术的保护测试单元[J]. 计算机工程与应用. 2004(02). [8] Jianfeng A, Xiaoya F, Shengbing Z, Danghui W, Yi W. VMSIM: Virtual Machine Based a Full System Simulation Platform for Microprocessors' Functional Verification[C]. ITNG 2006: 2006. [9] Woo S C, Ohara M, Torrie E, Singh J P, Gupta A. The SPLASH-2 programs: characterization and methodological considerations[C]. ISCA '95: Proceedings of the 22nd annual international symposium on Computer architecture: ACM, 1995. [10] Slechta B J. THE REPLAY TRANSMOGRIFIER: A FRAMEWORK FOR THE DECODE AND EXECUTION OF ISA INSTRUCTIONS[J]. 2003. [11] Slechta B J, Crowe D, Fahs B, Fertig M, Muthler G, Quek J, Spadini F, Patel S J, Lumetta S S. Dynamic Optimization of Micro-Operations[C]. In Proceedings of the Nineth International Symposium on High-Performance Computer Architecture: 2003. [12] Dehnert J C, Grant B K, Banning J P, Johnson R, Kistler T, Klaiber A, Mattson J. The Transmeta Code Morphing Software: using speculation, recovery, and adaptive retranslation to address real-life challenges[C]. CGO '03: Proceedings of the international symposium on Code generation and optimization: IEEE Computer Society, 2003. [13] 朱霞, 高德远, 樊晓桠, 张盛兵. 优化微程序控制器设计[J]. 西北工业大学学报. 2003(02). [14] 靖朝鹏, 高德远, 张盛兵, 田芳芳. 支持预取的微程序控制器的一种优化设计[J]. 微电子学与计算机. 2006, 23(2): 23-26. [15] 邹珍友. 一种微指令格式的设计方法及其应用[J]. 微计算机应用. 1996, 17(5): 16-22. [16] 张盛兵, 高德远, 樊晓桠. 基于微指令覆盖的最小指令集测试算法[J]. 计算机学报. 2000(10). Design and verification of microinstructions in x86 ISA compatible processor An Jianfeng, Fan Xiaoya School of Computer Science, Northwestern Polytechnical University, Xi’an (710072) Abstract Design of microinstructions is one of key issues in x86 ISA compatible processor design. On the one hand, development of microinstructions is highly complex and error-prone. On the other hand, microinstructions are difficult to verify independently prior to completion of all the processor design. To solve these problems, this paper presents a microinstruction development platform to meet requirements of microinstructions’ design and verification. In the platform, we define a micro-assembly language, which can improve the efficiency of writing microinstructions. Then we build a microinstruction assembler, which will compile microinstructions from micro-assembly format to binary format. At last we construct a microinstruction simulator, which can simulate and verify - 8 - 豆丁标准与论文网免费阅读:www.docin.com/week114 microinstructions independently. We evaluate the microinstruction development platform with Splash-2 benchmark. The microinstruction assembler’s compiling speed is about 400 lines per seconds, and the microinstruction simulator’s simulation speed is about 60KIPS. Keywords: Processor; x86; Microinstruction 作者简介: 安建峰(1977,),男,西北工业大学博士生,主要研究方向为计算机体 系结构。 樊晓桠(1962,),男,西北工业大学教授,博士生导师,CCF 高级会 员,主要研究 方向为计算机体系结构和 VLSI 系统设计。 研究背景: 本篇文章是基于西北工业大学航空微电子中心研究项目“基于 x86 指令集兼容处理器的 龙腾 S 系列片上系统芯片”,该项目受国家自然科学基金(60773223 和 60573107)和某国 86 指令集兼容微处理器 IP 核的研究。本文 防“十一五”预研项目资助。作者在其中负责 x 首先分析了微指令在 x86 指令集兼容设计中存在的问题,一方面是微指令的开发设计复杂度 很高,另一方方面是微指令的仿真验证难于在整个设计完成之前独立进行。针对这些问题, 本文提出构建微指令开发平台,以满足微指令设计与验证的需求。在该平台中,首先定义微 汇编语言,提高微指令的编写效率,降低编写出错的几率。然后构建微指令汇编器,支持将 微汇编语言格式的微指令编译为二进制格式的微指令。最后构建微指令仿真器,可以对微指 令进行独立地仿真验证。本文最后对微指令开发平台进行了性能评估。 - 9 -
本文档为【【WORD格式论文原稿】X86 指令集兼容处理器中微指令的设计与验证1 安建峰,樊晓桠 西北工业大学计算机学院,西安&#40;710072&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_005190
暂无简介~
格式:doc
大小:37KB
软件:Word
页数:15
分类:哲学
上传时间:2017-11-27
浏览量:25