嵌入式FPU微指令控制模块的设计与实现
扫描二维码
随时随地手机看文章
1 引言
设计研究适用于国防和民用需求的高性能、高精度的微处理器(MPU),已经变得十分重要和迫切。为了处理大量实数数据,并考虑计算精度和实时性,需要将MPU单独分离出来一部分进行浮点运算,像现在的高档数字信号处理芯片(DSP)都含有一个FPU,所以研制高性能的浮点运算单元IP具有重要意义[1]。
微程序的概念和原理是由剑桥大学数学教研室教授M.V.Wilks在1951年第一次提出的[2],但随后15年,由于控制存储器的问题制约了微程序技术的发展。由于LSI和VLSI 控制存储器的发展,微程序在微型机中已经开始起着重要作用。
微程序控制器的性能是提高处理速度的关键因素之一。本论文关于微程序控制器的研究是基于哈尔滨工业大学(威海)微电子中心32位FPU的设计,其采用了微指令控制的方法,用门级完成相关模块的设计,通过布局布线后的结果看出,该设计规模小、速度高,非常适合嵌入式应用。
2 微程序控制器的结构及设计
在微处理器中产生控制信号一般由微程序和状态机两种方法实现,其中微程序属于固件。微程序控制器输出的微指令用来控制整个FPU工作[3]。一条微程序一般由操作控制和顺序控制两大部分组成。控制部分用来管理和指挥FPU的工作[4]。微程序的顺序控制部分用来决定产生下一条微指令的地址。微程序控制器有其自身的优点,比如:具有规整性、灵活性和可维护性等一系列优点。本设计的微程序控制器的结构如图1所示。
微程序控制器主要包括三部分,用于产生下一条微指令的微地址生成模块、用于存储微指令的存储器(此为一块Rom)和用于指挥FPU工作的控制总线,其中主要是前两部分,下面分别给与介绍:
2.1 微地址生成模块介绍
微地址生成模块主要目的就是产生下一条微指令的地址。地址线宽为8bit,下一条微地址由如下几条产生(如图2所示):
1.ExcMiptr信号是用来选择由于一条FPU指令执行过程中产生各种异常(包括结果不精确异常、上溢、下溢和无效异常)对应的异常操作与控制的入口地址。
2.nextMiptr信号是用于选择一条FPU指令执行过程正常情况下,产生下一条微指令的地址。
3. RomEntry信号是用于根据FPU指令选择不同指令的入口地址,本设计把单精度和双精度的加、减、乘、除、乘加等指令设计有不同的控制入口地址。
4.RomMiptr信号是微地址默认的停靠地址,即在复位和FPU空闲时输出的默认地址
5.feedback信号是用于选择用于跳转微指令地址,例如在本设计中用于乘加、乘减指令的跳转控制。
如上这些地址信号的控制都来源于微指令的控制位。其中是否产生分支的控制如图3所示。
图3 微指令分支控制信号生成图
2.2微指令存储模块
本微指令控制器的存储模块,有8bit地址输入和64位数据输出用于管理和控制整个FPU工作。64位微指令是控制整个系统所用的控制信号,其功能与状态机相似,在本设计中通过微指令的[15:11]检测到数据处理过程中可能出现的状态,再根据不同的状态进行状态转换。下面把其中主要的几位列表如表1:
表1 微指令控制位
3.模块的实现及验证
微程序模块采用了从顶到下的(Top-down)设计方法,所有部件按照模块化思想设计成IP(Intellectual Property),明确模块间的接口信号时序,同时模块里的逻辑控制都是用门级设计,从而优化设计的性能。使用Synopsys公司的Design Compiler作为综合工具,用SMIC0.18微米工艺,综合出来的结果时钟频率266MHz。
系统采用硬件描述语言Verilog作为工作语言,使用Modelsim SE6.2完成整个仿真过程,仿真结果都完全符合IEEE754标准要求[5],能实现单精度和双精度的控制。完成后仿真并通过FPGA验证,这为将来流片打下了坚实的基础。
一般来讲,设计验证方法包括两大类:模拟的方法和形式化的方法。本设计采用模拟的方法。模拟验证环境如图3所示,运用基于断言的验证方法,主要分为三大部分:激励部分、待测模块和验证比较模块。
图3 模拟验证环境
一般情况下,激励的生成方法有两种:一类是直接激励生成;一类是随机激励生成。本设计两种方法都使用了,对于正常的加减乘除等运算采用了随机生成激励(约束性随机),而对于其他边角情况使用了直接激励,特别各种异常情况。辅助模块包括指数运算模块、尾数运算模块和符号运算模块。比较结果输出模块包括运用设计规范指定的结果与验证模块输出的结果进行比较。
4.结论
32位FPU中微程序控制器的设计经仿真验证证明它的功能是完全能满足IEEE754标准的FPU的控制功能。在设计中采用了多入口地址等提高微程序控制能力的方法。为了提高电路性能,使用门级设计方法。通过布局布线后的结果看出,该设计规模小、速度高,非常适合嵌入式应用。此微程序控制器可以在所有满足IEEE754标准的浮点处理器中使用,提高了设计的效率和可靠性,加快了设计周期。
本文作者的创新点:采用微程序控制的设计方法,同时采用门级设计方法,所以规模小,速度快。通过Modelsim仿真,完全满足符合IEEE754标准的浮点处理器的应用。
参考文献
[1]李六杏,周国祥.一种用于SOC中快速乘法器的设计[J].微计算机信息,2007,23,4-2:155-157.
[2]杨波,高德远. 微程序控制器的设计与实现[J],计算机工程与应用,2001,7:27-29.
[3]Intel: intel82C288 Series Reference [M]. 1984.50-61.
[4]David A.Patterson, John L. Hennessy, Computer Organazaiton & Design[M], Morgan Kaufmann Publishers, inc,2002 316-324
[5] ANSI/IEEE Standard 754-1985: IEEE Standard for Binary Floating-Point Arithmetic[M]. Poscataway, NJ: IEEE Press, 1985.