基于流水线结构的专用指令集处理器的制作方法

文档序号:6423552阅读:202来源:国知局
专利名称:基于流水线结构的专用指令集处理器的制作方法
技术领域
本发明属于数字信号处理技术领域,更进一步涉及到微处理器技术领域中的一种基于流水线结构的专用指令集处理器,可应用于数字信号处理系统中进行高速并行实时处理。
背景技术
专用指令集处理器(ASIP)技术是微处理器领域的新兴技术,该处理器的指令集根据特定应用领域设计,由算术运算指令、存储器访问指令、程序控制指令、数据交换指令组成。整个ASIP系统包括算术逻辑运算单元(ALU)、通用寄存器单元、数据地址产生单元、 程序定序单元、数据存储单元和指令存储器单元。西安电子科技大学申请的专利“适于数字信号处理应用的专用指令集微处理系统”(专利申请号200910021540. 7,公开号CN101504599A)公开了一种适于数字信号处理应用的专用指令集微处理系统,根据典型数字信号处理应用,采用16位精简指令集微处理器结构进行设计,整个系统包括算术运算单元、通用寄存器单元、数据地址产生单元、程序定序单元、数据存储单元、数据交换寄存器单元。该专利的不足之处是指令的执行是串行执行,即一条指令执行完成之后才能执行下一条指令,导致内部电路资源得不到充分的利用, 这对于高速并行实时信号处理系统无法满足高速率、实时性的要求。此外,该专利没有直接内存访问(DMA)控制,导致处理器与外部设备之间数据传输速率较慢。浙江大学吴俊2002年完成的硕士论文“基于RISC结构的ASIP设计”(中国知网中国优秀硕士学位论文全文数据库)中提出了一种基于精简指令集微处理器(RISC)结构的专用指令集处理器。该处理器主要有RISC核、高速缓存(Cache)、输入/输出(I/O)三个模块组成。指令长度为32位长,指令周期划分为五个阶段取指令、从寄存器读操作数与指令译码、执行指令操作码要求的操作、访问存储器、将执行结果写回到寄存器中。这五个阶段即为五级流水线。指令在执行过程中,若当前指令运行需要前一条或者几条指令的结果时出现数据相关问题。当程序执行到分支跳转指令时,条件分支所需的条件还未知的情况下与后续的指令执行发生控制相关问题。这种方法的不足之处是,当发生控制相关问题时, 不管当前指令是否发生跳转,后面一条指令必须执行,导致处理器运行速度下降。此外,该处理器指令长度较长,不适于利用现场可编程门阵列(FPGA)进行并行数字信号处理。

发明内容
本发明的目的在于克服上述现有技术的不足,提出一种基于流水线结构的专用指令集处理器,流水线结构采用旁路技术法和延迟推后法分别解决流水线的数据相关和控制相关问题,在FPGA平台中实现专用指令集处理器软IP核。本发明实现发明目的的技术思路是将专用指令集处理器的指令执行划分为四个阶段,即取指(IF)、译码(ID)、执行(EXE)和回写(WB),该四个阶段即为四级流水线。在译码单元用数据冲突控制器与数据选择器解决流水线数据相关问题,在取指单元采用停顿流水线技术解决程序跳转引起的流水线控制相关问题,并根据FPGA的固有特性合理划分和设计硬件结构。本发明包括取指单元、译码单元、执行单元和回写单元,各单元之间通过寄存器相连。取指单元用于控制该单元中的程序计数器(PC)实现程序的顺序执行和跳转,并对译码单元中即将发生的数据冲突做出预测,同时向译码单元输出指令码,向执行单元和回写单元输出控制信号。译码单元用于对取指单元输出的指令码进行译码,按照专用指令集处理器的指令格式译出操作数和控制信号,并通过该单元的数据冲突控制器判断当前指令的操作数与相邻或相隔指令的操作数是否发生冲突,并通过数据旁路通道向执行单元输出操作数。执行单元用于在取指单元输出的控制信号控制下,执行各种算术运算、逻辑运算、 移位运算、乘法运算,计算访存地址,完成该单元中存储器的读写操作,向回写单元输出运
晳社里异5口米。回写单元用于在取指单元输出的控制信号控制下完成对执行单元输出的结果数据的回写,译码单元输出的控制信号控制该单元中的数据选择器,将乘法运算结果、算术逻辑运算结果、读数据存储器(RAM)结果写到译码单元中的目的寄存器堆。本发明与现有技术相比具有以下优点第一,由于本发明在设计专用指令集处理器中采用了流水线技术,克服了现有技术中未采用流水线结构的专用指令集处理器运行速度慢、内部电路资源得不到充分利用的不足,提高了处理器的数据处理速度,内部电路资源得到了充分利用。第二,由于本发明加入了简单实用的DMA控制器,克服了现有技术中未添加DMA控制器的专用指令集处理器与外部设备数据传输速度慢的不足,提高了外部设备与流水线结构专用指令集处理器之间的数据传输效率。第三,由于本发明的硬件结构考虑了 ASIP的指令结构,并根据FPGA的固有特性与设计相关经验进行合理划分和设计,克服了现有流水线结构普通RISC核不适合用于FPGA 并行数字信号处理领域的不足,在完全满足ASIP指令要求的前提下,减少了流水线各级间的组合逻辑延时,缩短了指令执行的关键路径,最大限度的提高了流水线结构专用指令集处理器的运行速度与FPGA内部电路资源的利用率,降低了电路规模,适合用于FPGA高速并行数字信号处理领域。


图1为本发明的整体结构示意图;图2为本发明的取指单元结构示意图;图3为本发明的译码单元结构示意图;图4为本发明的执行单元结构示意图;图5为本发明的回写单元结构示意图。
具体实施例方式下面结合附图对本发明做进一步的详细描述。
参照图1,本发明基于流水线结构专用指令集处理器的流水线结构划分为四级流水线,分为取指(IF)、译码(ID)、执行(EXE)和回写(WB)四个阶段,对应硬件结构为取指单元、译码单元、执行单元和回写单元,各单元之间通过寄存器相连。本发明的流水线结构是根据ASIP指令集的特点而设计的,由于ASIP指令集中没有执行之后再访存的指令,因此可以将指令执行中的访存操作与执行合并,从而减少流水线级数,降低解决冲突的复杂度。参照图2,取指单元包括ROM、程序控制器、PC和两个数据选择器。该单元用于控制PC实现程序的顺序执行和跳转,并对即将发生的数据冲突做出预测,同时向译码单元输出指令码,向执行单元和回写单元输出控制信号。ROM用于存储根据ASIP指令集编制的程序指令字,其输出与程序控制器、数据选择器2相连。PC用于产生下一条指令在ROM中的存储地址,其输出与数据选择器1相连。 数据选择器1的输出通过寄存器与R0M、PC相连,数据选择器2的输出通过寄存器与译码单元中指令译码器的输入相连。程序控制器的输出与两个数据选择器相连,其功能是对ROM中读取的程序指令进行预译码,控制程序顺序执行或跳转,并控制指令输出为当前指令或空指令(NOP)。当程序发生跳转时,流水线出现停顿,产生了程序控制冲突。程序控制冲突分为条件跳转和无条件跳转冲突。对条件跳转冲突,本发明采用停顿流水线技术,即插入空指令,等待条件跳转所需的条件由执行单元产生后,再决定是否修改当前PC的值实现程序跳转。这种结构是在微处理器设计中解决条件跳转冲突最简单的方法,由于其电路结构简单,在控制指令较少的 FPGA数字信号并行处理应用领域是非常适用的。对无条件跳转冲突,程序控制器发出控制信号输出空指令,同时修改PC值为跳转目的地址,实现无条件跳转。程序控制器的另一功能是解决相邻指令间先读RAM后写寄存器的数据冲突类型。 程序控制器将流水线暂停一个周期,并在相邻指令间插入一个空周期,从而冲突类型转化为相隔指令间的数据冲突,再由后端译码单元的数据冲突控制器解决该冲突。参照图3,译码单元包括指令译码器、寄存器堆(通用寄存器、地址寄存器、1/0端口寄存器)、数据冲突控制器和两个数据选择器。两个数据选择器构成数据旁路通道。该单元用于对取指单元输出的指令码进行译码,按照专用指令集处理器的指令格式译出操作数和控制信号,并通过该单元的数据冲突控制器判断当前指令的操作数是否发生冲突,通过数据旁路通道为执行单元提供操作数。指令译码器用于对当前指令进行译码,其输出与寄存器堆、数据冲突控制器相连, 并通过寄存器与执行单元中的数据选择器1、数据选择器3相连,与回写单元中的数据选择器、寄存器堆相连。译码单元中数据选择器1的输出通过寄存器与执行单元中的乘法器、移位运算单元、逻辑运算单元、加法器和数据选择器2相连。译码单元中数据选择器2的输出通过寄存器与执行单元中的乘法器、加法器相连。寄存器堆的输出与两个数据选择器相连。其中,通用寄存器用于为移位运算单元、 逻辑运算单元、加法器提供操作数和暂存运算结果、乘法结果,以及与存储器交换数据。其中乘法器的输出结果存放在固定的相邻寄存器中,其中高地址寄存器存放乘法结果的高字节数据,低地址寄存器存放乘法结果的低字节数据。地址寄存器包括访问存储器所需的基址寄存器和变址寄存器。在执行读写存储器指令时,为读写操作提供存储器地址数据,并为加法器提供相应的基址和变址以完成下一次读写存储器的地址计算。端口寄存器用于存放处理器输入/输出端口的数据,与外部设备进行数据传输。数据冲突控制器的输出与两个数据选择器相连,是解决各种指令间数据冲突的控制模块,它通过比较前两条指令的控制信号、目的操作数和当前指令的控制信号、源操作数,来判断是否发生了数据相关冲突。若发生相邻指令间的数据相关冲突,由数据冲突控制器选通数据旁路一;若发生相隔指令间的数据相关冲突,则由数据控制单元选通数据旁路
--ο参照图4,执行单元包括移位运算单元、逻辑运算单元、加法器、乘法器、RAM、DMA 控制器和三个数据选择器。该单元用于执行各种算术运算、逻辑运算、移位运算、乘法运算, 计算访存地址,完成存储器的读写操作。移位运算单元、逻辑运算单元、加法器的输出均与数据选择器1相连;数据选择器 1的输出与译码单元中两个数据选择器的输入相连;DMA控制器的输出与数据选择器2、数据选择器3相连;数据选择器2、数据选择器3的输出与RAM相连;乘法器的输出通过寄存器与回写单元中乘法器的输入相连;数据选择器1、RAM的输出通过寄存器与回写单元中的数据选择器相连。逻辑运算单元、移位运算单元和加法器构成ALU,分别用于完成逻辑运算指令(逻辑与、逻辑或等逻辑指令)、移位运算指令(逻辑左移、逻辑右移指令)和算术运算指令(加法、减法指令)。ALU整体结构采用并行结构设计,各运算单元的结果由译码单元译出的控制信号控制数据选择器输出。加法器采用超前进位加法器,从而缩短了组合电路路径的时延,提高了微处理器的运行速度。乘法器用于完成指令的乘法操作,乘法器的运行速度直接制约了整个微处理器的运行速度。本发明中的乘法器采用适用于FPGA实现平台的两级乘法器结构,将其配置成执行单元的乘法器和回写单元的乘法器,从而减少了乘法器前端输入和后端输出的组合逻辑延时,提高了微处理器的运行速度。RAM单元用于完成指令的读写存储器操作,访存的地址数据和控制信号由译码单元产生,地址数据是当前基址寄存器中的数据。同时,由加法器完成对下一次读写存储器的基址修改,即基址加上变址,并写回基址寄存器。这种设计结构缩短了流水线结构的流水级,减少了解决指令间数据冲突的硬件资源,其应用也证明了这种结构非常适用于FPGA的并行信号处理应用领域。DMA控制器用于外部设备直接对存储器的访问,而不是通过端口寄存器,从而提高了外部设备与处理器的数据传输效率。首先,主设备对DMA控制器进行初始化,包括存储器基址和数据块大小,初始化成功后由从设备DMA发出传输数据请求,主设备接收到数据传输请求后,开始DMA数据传输。参照图5,回写单元包括乘法器、数据选择器和寄存器堆。乘法器的输出与数据选择器相连,数据选择器的输出与寄存器堆相连,并与译码单元中两个数据选择器的输入相连。该单元用于完成结果数据的回写,由译码单元输出的控制信号控制数据选择器将乘法运算结果、算术逻辑运算结果、读RAM结果写到目的寄存器堆。这里的目的寄存器堆和译码单元的寄存器堆为同一单元模块。
本发明的工作过程如下第一个为取指阶段,由程序控制器来读取当前ROM内的指令,并对指令进行预译码,判断当前程序为顺序执行或者跳转。若程序发生条件跳转,程序控制器插入两个周期的空操作,待执行单元产生跳转条件后,再判定是否跳转;若程序发生无条件跳转,程序控制器直接修改PC值为目标地址,实现程序跳转。第二个为译码阶段,对输入的指令码进行译码,获得指令控制信号和操作数,并通过数据冲突控制器判断当前指令是否发生数据相关冲突,若发生数据冲突则由控制信号选择相应的数据旁路,为执行单元提供正确的操作数。第三个为执行阶段,由译码单元得到的操作数和控制信号控制逻辑运算单元、移位运算单元、加法器、乘法器、RAM读写单元来执行各种逻辑指令、移位指令、算术指令、乘法指令、读写存储器指令。第四个为回写阶段,完成后级乘法运算,并通过控制信号控制数据选择器将乘法结果、ALU结果、访问存储器结果写入目的寄存器堆。
权利要求
1.一种基于流水线结构的专用指令集处理器,包括取指单元用于控制该单元中的程序计数器(PC)实现程序的顺序执行和跳转,并对译码单元中即将发生的数据冲突做出预测,同时向译码单元输出指令码,向执行单元和回写单元输出控制信号;译码单元用于对取指单元输出的指令码进行译码,按照专用指令集处理器的指令格式译出操作数和控制信号,并通过该单元的数据冲突控制器判断当前指令的操作数与相邻或相隔指令的操作数是否发生冲突,并通过数据旁路通道向执行单元输出操作数;执行单元用于在取指单元输出的控制信号控制下,执行各种算术运算、逻辑运算、移位运算、乘法运算,计算访存地址,完成该单元中存储器的读写操作,向回写单元输出运算结果;回写单元用于在取指单元输出的控制信号控制下完成对执行单元输出的结果数据的回写,译码单元输出的控制信号控制该单元中的数据选择器,将乘法运算结果、算术逻辑运算结果、读数据存储器(RAM)结果写到译码单元中的目的寄存器堆。
2.根据权利要求1所述的基于流水线结构的专用指令集处理器,其特征在于,所述的取指单元包括指令存储器(ROM)、程序控制器、PC和两个数据选择器(MUX) ;ROM的输出与程序控制器、数据选择器2相连;程序控制器的输出与数据选择器1、数据选择器2相连;PC 的输出与数据选择器1相连;数据选择器1的输出通过寄存器与R0M、PC相连;数据选择器 2的输出通过寄存器与译码单元中指令译码器的输入相连。
3.根据权利要求1所述的基于流水线结构的专用指令集处理器,其特征在于,所述的译码单元包括指令译码器、寄存器堆(通用寄存器、地址寄存器、端口寄存器)、数据冲突控制器和两个数据选择器;指令译码器的输出与寄存器堆、数据冲突控制器相连,并通过寄存器与执行单元中的数据选择器1、数据选择器3相连,与回写单元中的数据选择器、寄存器堆相连;寄存器堆和数据冲突控制器的输出均与两个数据选择器相连;数据选择器1的输出通过寄存器与执行单元中的乘法器、移位运算单元、逻辑运算单元、加法器和数据选择器 2相连;数据选择器2的输出通过寄存器与执行单元中的乘法器、加法器相连。
4.根据权利要求1所述的基于流水线结构的专用指令集处理器,其特征在于,所述的执行单元包括移位运算单元、逻辑运算单元、加法器、乘法器、RAM、直接内存访问(DMA)控制器和三个数据选择器;移位运算单元、逻辑运算单元、加法器的输出均与数据选择器1相连;数据选择器1的输出与译码单元中两个数据选择器的输入相连;DMA控制器的输出与数据选择器2、数据选择器3相连;数据选择器2、数据选择器3的输出与RAM相连;乘法器的输出通过寄存器与回写单元中乘法器的输入相连;数据选择器1、RAM的输出通过寄存器与回写单元中的数据选择器相连。
5.根据权利要求1所述的基于流水线结构的专用指令集微处理器,其特征在于,所述的回写单元包括乘法器、数据选择器和寄存器堆;乘法器的输出与数据选择器相连,数据选择器的输出与寄存器堆相连,并与译码单元中两个数据选择器的输入相连。
6.根据权利要求4、5所述的基于流水线结构的专用指令集处理器,其特征在于,所述的乘法器采用适用于FPGA实现平台的两级乘法器结构。
全文摘要
本发明公开了一种基于流水线结构的专用指令集处理器,其流水线结构划分为取指、译码、执行、回写四个阶段。本发明的结构包括程序存储器、程序控制器、寄存器堆、数据冲突控制器、逻辑运算单元、移位运算单元、加法器、数据选择器、数据存储器、乘法器和直接内存访问控制器。本发明综合考虑了专用指令集处理器的指令结构和现场可编程门阵列(FPGA)的固有特性,针对主流FPGA内部组成结构及电路资源,结合处理器设计与应用特点,合理划分和设计了基于流水线结构的专用指令集处理器的硬件结构,提高了专用指令集处理器的运行速度与实现效率。
文档编号G06F9/318GK102184092SQ20111011459
公开日2011年9月14日 申请日期2011年5月4日 优先权日2011年5月4日
发明者刘仍稳, 张犁, 李娇娇, 李甫, 邱云辉 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1