在线刊号(2278-8875)印刷版(2320-3765)
Indu。M1,阿伦·库马尔报道。平方米 |
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问国际电气、电子和仪器工程高级研究杂志
本文介绍了一种低功耗的32位流水线RISC处理器的设计与实现。各个模块包括Fetch, Decode, Execute和Memory Read / Write Back来实现4个阶段的流水线。本文提出了前端处理的低功耗技术。采用改进的哈佛体系结构,具有不同的程序存储空间和数据存储空间。低功耗有利于降低散热,延长电池寿命,提高设备可靠性。为了降低RISC核心的功耗,采用了时钟门控技术,这是一种有效的低功耗技术。使用Verilog语言进行编码。7-SEG led连接到RISC IO接口,用于测试所有定义为浮点数和整数值的指令。然后使用所提出的体系结构进行模拟模型sim卡。使用Altera powerplay分析器计算动态功耗,然后在Altera FPGA板上使用Altera Quartus II实现。
关键字 |
FPGA, RISC,低功耗,时钟门控,Verilog,高性能,自动分支预测 |
介绍 |
低功耗已经成为当今电子工业的一个主要主题。对低功耗的需求导致了一个重大的范式转变,功耗已经成为性能和面积的重要考虑因素。RISC被称为精简指令集计算机,是使用最小指令集的计算机算术逻辑单元,强调最常用的指令,并优化它们以获得最快的执行速度。该处理器将遵循RISC体系结构,因为它支持一组预定义的指令。在这种情况下,所有的指令都有相同的长度。与传统的CISC[复杂指令集计算机]处理器相比,RISC处理器的软件必须处理更多的操作,但RISC处理器在应用程序中受益于更快的指令执行[1]。RISC处理器的设计强调加载/存储架构。由于访问寄存器和内存所花费的时间不同,在芯片寄存器上执行的操作要比在内存上快得多。对内存的访问只能通过加载和存储指令来完成。由于执行速度更快,操作是在寄存器中的数据上执行的。 They are also less costly to design, test, and manufacture [6]. |
RISC Pipeline Processor的基本架构如图1[4],[5]所示。 |
![]() |
2提出了系统 |
RISC处理器是使用流水线架构设计的。在这个4阶段的流水线实现中,速度和性能都得到了提高。管道的四个阶段是读取、解码、执行和内存读写[1][6]。在设计过程中,采用了低功耗技术。为了提高性能,采用了基于锁存器的时钟门控。时钟门控是减少时钟信号动态功耗最常用的方法。功耗主要由组合逻辑(其值在每个时钟边缘上变化)、触发器和设计中的时钟缓冲树消耗。当某一特定模块在一段时间内不需要时钟信号时,门控逻辑就会进入画面来关闭时钟。时钟门控通过减少不必要的开关活动来节省电源。浇注逻辑通过集成时钟浇注方法(由RTL设计人员手动插入到设计中)[2]添加到设计中。 |
流水线处理器由内部模块组成,这些模块可以分别处理微指令。管道中的每个阶段都通过触发器连接到下一阶段,通过这种方式减少了整体处理时间,因为前一阶段的输出充当了下一阶段的输入。如果一个指令管道每一个时钟周期接受一条新指令,那么它就被称为完全流水线。 |
该处理器为32位低功耗RISC处理器,采用流水线架构,通过专用总线定期获取指令到内存,并通过流水线逐步执行所有本机指令。它可以通过专用的并行IO接口与外部设备通信 |
A.指令类型 |
基本上有三种类型的指令,即算术和逻辑指令(ALU指令),加载/存储指令和分支指令[1] |
1.铝合金产品说明: |
算术运算要么以两个寄存器作为操作数,要么以一个寄存器和一个符号扩展立即值作为操作数。一些算术指令是加、减、乘、除、增、减。结果存储在第三个寄存器中。逻辑操作,如and,or, xor通常不区分32位和64位。其他逻辑指令有nand, nor, not, xnor,右移,左移等。 |
2.加载/存储指令: |
通过将一个寄存器(基寄存器)作为一个操作数和一个16位的立即值,两者的和将创建有效地址。第二个寄存器在加载操作的情况下充当源。在存储操作的情况下,第二个寄存器包含要存储的数据。 |
3.分支和跳跃: |
有条件分支是控制权的转移。分支导致一个立即值被添加到当前程序计数器。一些常见的分支指令有BZ(零分支)、BRC(进位分支)、JMP(跳转指令)、JMPZ(零时跳转)、Cmp(比较两个操作数,并基于此进位标志更新为1或0)等。 |
3体系结构 |
建议的体系结构由 |
ï ·指令获取(IF) |
ï ·指令解码(ID) |
ï ·执行单元(EX) |
ï ·内存单位(MU) |
ï ·内存读写单元 |
ï ·低功率单元 |
ïÂ‑·四个通用寄存器,分别是寄存器R0、寄存器R1、寄存器R2和寄存器R3 |
ïÂ‑·浮点单位 |
![]() |
B.指令获取 |
该阶段由程序计数器、指令存储器和分支决定单元组成。 |
1.程序计数器: |
程序计数器(PC)包含下一个时钟周期将从指令内存中取出的指令地址。通常,PC在每个时钟周期内加1,除非执行分支指令。当遇到一个分支指令时,PC被增加由分支偏移量指示的量。 |
2.指令内存: |
指令内存包含处理器执行的指令。这个单元的输入是来自程序计数器的9位地址,输出是9位指令字。 |
3.分公司决定单位: |
分支决定单元负责根据来自控制单元的2位分支信号和来自算术和逻辑单元(ALU)的零标志来决定一个分支是否发生。 |
B.指令解码 |
这一阶段包括控制单元、注册文件。 |
1.控制单元: |
控制单元产生控制处理器整个组件之间协调所需的所有控制信号。这个单元产生信号,控制寄存器文件和数据存储器的所有读和写操作。它还负责生成决定何时使用乘数和何时使用ALU的信号,它还生成由分支决定单元使用的适当的分支标志。 |
2.注册文件: |
这是一个两个端口的寄存器文件,可以同时执行两个读操作和一个写操作。它包含四个32位通用寄存器。寄存器被命名为R0到R4 |
c .执行 |
该阶段由分支加法器、算术逻辑单元(ALU)和ALU控制单元组成。 |
1.分支加法器: |
分支加法器将26位带符号的分支偏移量与PC的当前值相加,以计算分支目标。26位偏移量由分支指令提供。该单元的输出到PC控制多路复用器,该多路复用器仅在接收分支时用该值更新PC。 |
2.算术逻辑单元(ALU): |
ALU负责处理器内发生的所有算术和逻辑操作。这些操作可以有一个或两个操作数,这些值可以来自寄存器文件,也可以直接来自指令的直接值。所有的操作都是根据来自ALU控制单元的控制信号来完成的 |
3.ALU控制单元: |
该单元负责向ALU提供信号,指示ALU将要执行的操作。这个单元的输入是5位操作码和指令字的2位功能域。它使用这些位来决定当前指令周期的正确ALU操作。该单元还提供另一组输出,用于将信号门控到当前操作中不使用的ALU部件。这一阶段由一些控制电路组成,它将ALU生成的或从数据存储器读取的适当数据转发到寄存器文件,并写入指定的寄存器 |
d .的记忆 |
这一阶段由数据/指令存储器模块组成 |
1.数据/指令内存: |
所使用的体系结构是改良的哈佛体系结构。该模块支持深度为512的32位数据字。Load和Store指令用于访问该模块。最后,内存访问阶段是在必要时访问系统内存以获取数据的阶段。同样,如果指令需要写入数据内存,则在此阶段完成。为了避免额外的复杂性,我们假设在单个CPU时钟周期内完成一次读或写操作。 |
该体系结构采用动态分支预测,减少了硬件控制[1],[5]下的分支惩罚。预测是在流水线的指令取阶段进行的。因此,分支预测缓冲区是由指令获取中分支地址的低阶位索引的。分支未被占用时为低,分支被占用时为高,分支目标地址计算完成后即可访问。分支目标缓存是一个带有附加信息的分支预测缓冲区,它有一个分支指令的地址标签,存储目标地址。因此,BTC确定指令是否为分支,如果将采取分支,如果采取分支预测,以及目标地址是什么。如果满足这些要求,处理器可以在前一个指令访问完成后立即启动下一个指令访问。因此,BTC的主要操作是在IF阶段,使用PC的lsb访问BTC,如果PC的msbs与目标匹配,则该表项有效。如果分支在被获取时被预测,则在下一个周期中使用预测的目标地址访问I-cache。 |
2.修改后的哈佛体系结构: |
修改后的哈佛体系结构是哈佛计算机体系结构的一个变种,它允许指令存储器的内容被访问,就像它是数据一样。大多数被记录为哈佛体系结构的现代计算机实际上是修改后的哈佛体系结构。这些修改是为了放松代码和数据之间的严格分离,同时仍然支持哈佛架构[1]的更高性能的并发数据和指令访问。 |
最常见的修改是用CPU缓存来分离指令和数据来构建内存层次结构。这统一了除小部分以外的所有数据和指令地址空间,提供了冯·诺依曼模型。程序员永远不需要知道处理器核心实现了(经过修改的)哈佛体系结构,尽管他们受益于它的速度优势。只有将指令写入数据内存的程序员才需要了解缓存一致性和可执行空间保护等问题。 |
E.低功率机组 |
在这个体系结构中探索的功耗降低技术是时钟门控。时钟门控是一种在没有需求时阻止时钟信号到达各个模块的方法。时钟信号的不可用阻止寄存器或触发器改变它们的状态。因此,任何组合电路的输入保持不变,因此不发生开关活动。大部分的功耗来自于开关活动,时钟门控大大降低了功耗[7],[10]。 |
F.浮点单元 |
浮点数是计算机上最常见的实数表示形式。浮点数采用了一种“滑动窗口”,其精度与数字的比例相适应。这允许它轻松地[3]表示从1,000,000,000,000到0.0000000000000001的数字。 |
1.格式: |
IEEE浮点数有三个基本组成部分:符号、指数和尾数。尾数由分数和一个隐式前导数字组成。指数基数(2)是隐式的,不需要存储。在IEE754中有两种基本的数字格式,单精度和双精度。本文采用单精度格式。显示每个字段的比特数(比特范围在方括号内): |
![]() |
2.一般格式: |
(±1)s × (1+ f) × 2e |
在哪里 |
ïÂ‑·S =符号,0表示正,1表示负 |
ï ·F =分数(或尾数)作为二进制整数,1+F称为有效值 |
ï ·E =指数作为二进制整数,正或负(二的补码) |
3.例外: |
IEEE标准定义了五种类型的异常,当遇到[3]时,应该通过一个位状态标志发出信号。在本文中,我们只关注其中的四个。 |
ïÂ‑·无效操作 |
一些算术运算是无效的,例如除以零或负数的平方根。无效操作的结果应为NaN(不是数字)。有两种类型的NaN,安静NaN (QNaN)和信号NaN (SNaN)。它们的格式如下,其中s是符号位: |
QNaN = s 11111111 10000000000000000000000 |
SNaN = s 11111111 00000000000000000000001 |
每个无效操作的结果都是一个带有QNaN或SNaN异常的NaN字符串。以下是一些算术运算,它们是无效的运算,并给出一个QNaN字符串的结果,并发出QNaN异常的信号: |
ïÂ‑·对NaN的任何操作 |
ï ·加减法:∞+(−∞) |
ï ·乘法:±0 ×±∞ |
ï ·Division:±0/±0或±∞/±∞ |
ïÂ‑·平方根:如果操作数小于零 |
一个¯·不精确的 |
当算术运算的结果由于受限制的指数和/或精度范围而不精确时,应发出此异常信号。 |
一个¯·下溢 |
有两种情况会引起底流异常的信号,微小和准确性的丧失。当结果在±2Emin之间时,在舍入前后检测到微小。当结果不准确或仅当重正化损失发生时,就会检测到准确性损失。实现者可以选择如何检测这些事件。对于所有操作,它们应该是相同的。实现的FPU核心在四舍五入后检测到微小时发出下溢异常信号,同时结果不准确 |
一个¯·溢出 |
每当结果超过由于受限制的指数范围而可以表示的最大值时,就会发出溢出异常信号。当其中一个操作数为无穷大时,它没有信号,因为无穷大算术总是精确的。除以0也不会触发此异常。 |
G.指令集 |
该体系结构使用的指令集由算术指令、逻辑指令、分支指令和内存指令组成。它将有短(9位)和长(18位)指令。对于所有算术和逻辑操作使用9位指令,对于所有内存和分支操作使用18位指令。它将有访问外部端口的特殊指令。 |
![]() |
H.寻址方式 |
寻址模式是大多数中央处理单元(CPU)设计[1]中指令集架构的一个方面。指令集架构中的不同寻址模式定义了该架构中的机器语言指令如何识别每条指令的操作数(或操作数)。寻址模式指定如何通过使用包含在寄存器和/或包含在机器指令或其他地方的常量中的信息来计算操作数的有效内存地址。所提出的方法中使用的各种寻址模式有 |
ïÂ‑·直接寻址模式 |
ïÂ‑·即时寻址模式 |
ïÂ‑·pc相对寻址模式(专门用于分支指令) |
ïÂ‑·寄存器寻址模式 |
一、拟建建筑的特点 |
ïÂ‑·是4级低功耗流水线处理器。 |
ï ·提供危险检测单元,以确定何时必须添加失速。 |
ï ·每个功能单元每条指令只能使用一次。 |
ïÂ‑·每个功能单元必须与所有其他指令在同一阶段使用。 |
ïÂ‑·管道控制:即每个阶段控制信号仅依赖于当前处于该阶段的指令。 |
ïÂ‑·提供暂停支持。 |
ï ·它能够提供高性能。 |
ïÂ‑·管道不会在分支指令发生时刷新,因为它是使用动态分支预测实现的。 |
ïÂ‑·负责执行顺序 |
四、仿真结果 |
采用Modelsim软件进行仿真,并对结果进行了验证。整个项目是在FPGA, Altera开发和教育板2平台上开发的,有不同的测试和调试范围,如按钮开关,拨动开关,LCD和led。所有的测试都是在板子上进行的。7-SEGMENT led连接到RISC IO接口进行测试。使用RISC指令生成了不同的输出模式,并在7-SEGMENT led上输出。在Altera家族中,为了实现设计,选择了“QUARTUS-II”,在“CYCLONE II”家族中,使用的封装是Altera DE2板上的“EP2C35F672C6”。 |
所提方法的RTL原理图如图3所示 |
![]() |
A.设计总结、仿真与综合结果 |
1.设计总结: |
设备利用率汇总如表II所示,其中给出了可用性的详细信息以及使用Xilinx ISE 13.1 web pack时使用的资源数量(%)。 |
![]() |
2.功率分析仪概述: |
![]() |
![]() |
诉的结论 |
本文采用Verilog编码设计了基于FPGA系统的4级低功耗流水线32位RISC处理器。架构的设计是为了庆祝在Verilog中编写代码。Verilog编码综合问题在速度区域优化中起着至关重要的作用,因为RTL原理图在很大程度上依赖于Verilog中的编码流。在硬件上对RISC处理器的设计进行了仿真和实现,并验证了其固定数和浮点数的算术运算、分支函数和逻辑函数。算术单元被设计用来对浮点数执行加、减、乘、除四种运算。采用了基于IEEE 754标准的浮点表示法。综合后得到的逻辑资源利用率与可用资源的比值在设备利用率汇总表中显示。使用Altera Quartus II,计算了功耗,比较了有时钟门控和没有时钟门控的动态功耗,结果显示在功率分析器摘要中。 |
鸣谢 |
这篇论文献给我们的家人和父母,感谢他们对我们无尽的支持和鼓励。感谢朋友们一直以来的支持和指导。我们要感谢班加罗尔东点工程技术学院电子与通信工程系一直以来对这项工作的支持和鼓励。 |
参考文献 |
|