基于可扩展处理器架构的专用指令集处理器及其实现方法

文档序号:6399438阅读:181来源:国知局
专利名称:基于可扩展处理器架构的专用指令集处理器及其实现方法
技术领域
本发明属于电子技术领域,更进一步涉及到精简指令集微处理器技术领域中的一种基于可扩展处理器架构的专用指令集处理器及其实现方法。本发明可应用于嵌入式处理器,尤其是航天图像处理中实现大规模的并行处理。
背景技术
专用指令集处理器技术是为某一特定应用和某一领域应用而专门设计的处理器,通过研究应用的某些特性来满足所需的性能,成本和功率等要求,是对专用集成电路和通用处理器这两个极端的一种平衡。专用指令集处理器以其专用性强,灵活性高,面积小,速度快和功耗低等特点,广泛运用于数字信号处理,音视频处理,图像处理等领域。西安电子科技大学申请的专利“基于流水线结构的专用指令集处理器”(专利申请号201110114592.6,公开号CN102184092A)公开了一种适用于数字信号处理应用的四级流水的专用指令集处理器。该专利申请依据典型的数字信号处理应用,采用16位的精简指令集结构,整个系统被划分为取指、译码、执行和回写这四个流水线级,并通过直接内存访问单元来提高处理器与外部设备之间的数据传输速率。该专利申请的不足之处在于,所提出的四级流水线结构不能适用于基址加变址的寻址方式,该专利申请没有典型的处理器架构支持,此外,该专利申请没有实现浮点数运算,定时器和中断管理等常用功能,功能较单一,在实际应用中受到很大的局限。中国科学院沈阳自动化研究所拥有的专利技术“高性能可编程控制器专用处理器体系结构及其实现方法”(专利申请号201010210039.8,授权号CN102298322B)公开了一种可编程控制器处理器的体系结构。整个系统包括在高速总线上的可编程控制器处理器、Ethernet MAC10/100M及高速总线仲裁器;并通过高速低速总线桥连接低速总线上的外设,如AD、DA转换器,通用型输入输出接口,计时器,计数器及中断控制器。其中,可编程控制器处理器包括通用处理器与可编程控制器专用指令集处理器,这两个处理器通过接口连接,该接口主要通过中断方式,利用缓冲器实现数据交换。该专利技术公开的可编程控制器专用指令集处理器采用四级流水线,包括取指阶段、译码阶段、执行阶段、以及回写阶段。该专利技术的不足之处在于,整个系统过于复杂,硬件资源消耗大,不适于实现处理器的大规模并行处理。

发明内容
本发明的目的在于克服上述现有技术的不足,提出了 一种基于可扩展处理器架构的专用指令集处理器及其实现方式。该专用指令集处理器具有功能完备、消耗资源小,运行速度快,功耗低等特点,能够在单片现场可编程门阵列(FPGA)中实现处理器的大规模并行处理。为了实现上述目的本发明的思路是,本发明的专用指令集处理器对可扩展处理器架构进行了优化,可扩展处理器架构中的高速缓存存储系统优化为现场可编程门阵列内部集成的嵌入式随机访问存储系统;可扩展处理器架构中的窗口寄存器文件优化为32个线性的寄存器文件;可扩展处理器架构中的256个陷阱优化为15个中断;可扩展处理器架构中的指令集系统优化为一套基本的专用指令集系统。优化后的专用指令集处理器被划分为取指、译码、执行、访存和回写五个流水线级。在译码流水线级和执行流水线级中采用数据定向技术解决流水线中遇到的数据冒险,在取指阶段采用分支未执行的预测方式和在执行流水线验证预测结果来解决流水线中遇到的控制冒险,同时根据现场可编程门阵列的硬件资源特点合理地利用硬件资源。本发明的专用指令集处理器包括取指单元、译码单元、执行单元、访存单元,回写单元,流水线控制单元,定时器和中断控制器。取指单元的输出端通过取指译码寄存器与译码单元相连。译码单元的输出端分别与定时器、流水线控制单元和中断控制器相连,译码单元的输出端通过译码执行寄存器与执行单元相连。执行单元的输出端分别与取指单元和流水线控制单元相连,执行单元的输出端通过执行访存寄存器分别与执行单元和访存单元相连。访存单元的输出端通过访存回写寄存器与回写单元相连。所述的回写单元的输出端分别与译码单元和执行单元相连。流水线控制单元的输出端分别与取指单元和译码单元相连。定时器的输出端与中断控制器相连。中断控制器的输入端与外部中断请求输入端相连,输出端与取指单元相连。取指单元,用于访问程序存储器,取出的当前程序计数器所指的指令,为译码单元提供指令,产生下一条拟执行的指令的地址。译码单元,用于按照编码格式和内容对取指单元取出的指令译码,获得源操作数地址和目的操作数地址,取出源操作数和目的操作数,为执行单元提供操作数和访存单元提供数据存储器写数据,产生多周期指令的停顿周期数。执行单元,用于将译码单元取出的源操作数进行运算、产生结果和标志位,完成特殊寄存器的写操作,验证有条件分支的预测结果。访存单元,用于将数据存入数据存储器中或从数据存储器中取出数据。回写单元,用于完成通用寄存器的写操作。流水线控制单元,用于产生取指单元和译码的停顿与清空信号。定时器,用于对专用指令集处理器的时钟进行精确定时和计数,产生定时器中断。中断控制器,用于控制和管理一个定时器中断和14个外部中断的请求,产生中断响应信号和中断矢量。本发明专用指令集处理器的实现方法的具体步骤如下:(I)取指流水线:取指单元从程序存储器中取出当前程序计数寄存器所指的指令,将该指令存入取指译码寄存器,依据当前取出的指令类型,计算出下一条指令的地址,将该地址存入程序计数寄存器。(2)译码流水线:2a)译码单元将取指译码寄存器取出的指令,按照指令的编码格式和内容进行译码,获得源操作数地址和目的操作数地址。2b)译码单元将通用寄存器文件中取出的源操作数送入执行单元中的所有运算处理单元中。2c)译码单元将特殊寄存器文件中取出的源操作数送入执行单元中的整数逻辑运算处理单元中。2d)译码单元将通用寄存器文件中取出的目的操作数作为数据存储器写数据送入访存单元中。(3)执行流水线:3a)在当前指令为整数运算指令时,执行单元将产生的整数运算结果依次送入访存单元和回写单元,同时执行单元将产生的零标志、负标志、进位标志和溢出标志写入特殊寄存器文件中的处理器状态寄存器的第3 O位中。3b)在当前指令为单精度浮点运算指令时,执行单元将产生的单精度浮点运算结果送入回写单元中,同时执行单元将产生的无效操作异常标志、上溢异常标志和下溢异常标志,执行单元写入特殊寄存器文件中的处理器状态寄存器的第10 8位中。3c)在当前指令为单精度浮点比较指令时,执行单元将产生的无序、大于、小于、等于四种比较结果标志,写入特殊寄存器文件中的处理器状态寄存器的第7 4位中。3d)在当前指令为特殊寄存器逻辑运算指令时,执行单元将产生的逻辑运算结果写入特殊寄存器文件中。3e)在当前指令为多周期运算指令时,则将取指单元和译码单元中的指令保持不变,数据保持不变的周期数为执行单元所产生的流水线停顿周期数。3f)在当前指令为有条件分支指令时,执行单元产生有条件分支指令的实际跳转方向,若有条件分支指令的实际跳转方向为转移,则将取指单元和译码单元中的指令置O。(4)访存流水线:4a)在当前指令为数据加载指令时,访存单元从数据存储器中取出整数运算结果所指的数据,将所取的存储器读数据送入回写单元。4b)在当前指令为数据存储指令时,访存单元将数据存储器写数据写入整数运算结果所指的数据存储器中。(5)回写流水线:5a)在当前指令为数据加载指令时,回写单元将数据存储器读数据写入通用寄存器文件中。5b)在当前指令整数运算指令时,回写单元将整数运算结果写入通用寄存器文件中。5c)在当前指令为单精度浮点运算指令时,回写单元将单精度浮点运算运算结果写入通用寄存器文件中。本发明与现有技术相比具有以下优点:第一,由于本发明的专用指令集处理器结合了一般专用指令集处理器的设计特点和现场可编程门阵列的资源特点对可扩展处理器架构进行了优化,克服了现有技术中电路复杂度高和消耗资源大的缺点,使得本发明具有电路复杂低、消耗资源少和功耗低的优点。第二,由于本发明的专用指令集处理器根据可编程门阵列的特性,采用五级流水线的实现结构,克服了现有技术中寻址模式不足和运行速度慢的缺点,使本发明具有寻址模式丰富和运行速度快的优点。第三,由于本发明的专用指令集处理器加入了浮点运算单元、定时器和中断控制器,克服了现有技术中功能单一和不适于嵌入式应用的缺点,使本发明具有功能完备和适于嵌入式应用的优点。


图1为本发明的专用指令集处理器的整体结构示意图;图2为本发明的专用指令集处理器的取指单元结构示意图;图3为本发明的专用指令集处理器的译码单元结构示意图;图4为本发明的专用指令集处理器的执行单元结构示意图;图5为本发明的专用指令集处理器的访存和回写单元结构示意图;图6为本发明的专用指令集处理器的流水线控制单元结构示意图。
具体实施例方式下面结合附图对本发明做进一步的详细描述。参照图1,本发明的专用指令集处理器包括取指单元、译码单元、执行单元、访存单元,回写单元,流水线控制单元,定时器和中断控制器。取指单元的输出端通过取指译码寄存器与译码单元相连,用于访问程序存储器,取出的当前程序计数器所指的指令,为译码单元提供指令,产生下一条拟执行的指令的地址;译码单元的输出端与定时器、中断控制器和流水线控制单元相连,译码单元的输出端通过译码执行寄存器与执行单元相连,用于按照编码格式和内容对取指单元取出的指令译码,获得源操作数地址和目的操作数地址,为执行单元提供操作数和访存单元提供数据存储器写数据,产生多周期指令的停顿周期数;执行单元的输出端与取指单元和流水线控制单元的输入端相连,执行单元的输出端通过执行访存寄存器分别与执行单元和访存单元相连,用于将译码单元取出的源操作数进行运算、产生结果和标志位,完成特殊寄存器的写操作,验证有条件分支的预测结果;访存单元的输出端通过访存回写寄存器与回写单元相连,用于将数据写入数据存储器中或从数据存储器中取出数据;回写单元的输出端分别与译码单元和执行单元相连,用于完成通用寄存器的写操作;流水线控制单元的输出分别与取指单元和译码单元相连,用于产生取指单元和译码的停顿与清空信号;定时器的输出与中断控制器相连,用于对专用指令集处理器的时钟进行精确定时和计数,产生定时器中断;中断控制器的输入端与外部中断请求输入端相连,输出端与取指单元相连,用于控制和管理一个定时器中断和14个外部中断的请求,产生中断响应信号和中断矢量。参照图2,本发明的取指单元包括程序存储器、程序计数器寄存器(PC)、指令译码器、加法器、子程序处理单元、中断处理单元、数据选择器I (MUXl)、数据选择器2(MUX2)、数据选择器3 (MUX3)、数据选择器4 (MUX4)和数据选择器5 (MUX5)。程序存储器的输出端分别与指令译码器和数据选择器4的数据输入端相连,用于存储按照该专用处理器指令集编制的程序;程序计数寄存器的输出端分别与数据存储器、加法器和数据选择器3的数据输入端相连,用于寄存当前指令的地址;指令译码器的输出端分别与数据选择器I的控制端、数据选择器I的数据输入端、数据选择器2的控制端、子程序处理单元和中断处理单元相连,用于对无条件跳转指令、子程序调用指令、子程序返回指令和中断返回指令进行译码,获得无条件跳转控制信号、子程序调用控制信号、子程序返回控制信号、中断返回控制信号和跳转偏移量;数据选择器I的输出端与加法器相连,数据选择器I的两个数据输入端分别与常数I和指令译码器产生的跳转偏移量相连,数据选择器I的控制输入端与指令译码器产生无条件跳转控制信号,用于产生顺序取指或无条件跳转的地址偏移量,若无条件跳转控制信号有效,则数据选择器I输出无条件跳转的地址偏移量,否则,数据选择器I输出顺序取指的地址偏移量;加法器的输出端分别与数据选择器2的数据输入端、子程序处理单元和中断处理单元相连,加法器的输出端依次通过取指译码寄存器和译码执行寄存器与执行单元中的分支处理单元相连,用于产生顺序取指或无条件跳转的目标地址;子程序处理单元的输出端与数据选择器2的数据输入端相连,子程序处理单元的用于产生子程序处理的地址和完成子程序的四层嵌套,子程序的四层嵌套通过子程序调用控制信号和子程序返回控制信号控制深度为4的子程序返回栈来完成,当子程序调用控制信号有效时,将加法器的输出(即子程序返回地址)压入子程序返回栈中,同时子程序处理单元的输出置为指令译码器产生跳转偏移量(即子程序调用地址),当子程序返回控制信号有效时,将子程序返回地址从子程序返回栈中弹出,子程序处理单元的输出置为所弹出的子程序返回地址;中断处理单元的输出端与数据选择器2的数据输入端相连,中断处理单元的输入端分别与指令译码器产生的中断返回控制信号和加法器的输出端相连,同时中断处理单元的输入还分别与中断控制器产生的中断响应信号和中断矢量相连,用于产生中断处理的地址和完成中断的四层嵌套,中断的四层嵌套通过中断响应信号和中断返回控制信号控制深度为4的中断返回栈来实现,当中断响应信号有效时,将加法器的输出(即中断返回地址)压入中断返回栈中,中断处理单元的输出置为中断矢量(即中断响应地址),当中断返回控制信号有效时,将中断返回地址从中断返回栈中弹出,中断处理单元的输出置为所弹出的中断返回地址;数据选择器2的输出端与数据选择器3的数据输入端相连,数据选择器2的数据输入端分别与加法器、子程序处理单元和中断处理单元的输出相连、同时数据选择器2的数据输入端还与执行单元中分支处理单元输出端的分支目标地址相连,数据选择器2的控制端与指令译码器中所有的控制信号、同时数据选择器2的控制端还与执行单元中分支处理单元输出端的分支转移控制信号相连,用于产生下一条指令的地址,数据选择器2在控制端信号的作用下从上述5个指令地址中选择I个合适的地址;数据选择器3的输出端与程序计数寄存器相连,数据选择器3的控制端与流水线控制单元产生的取指单元停顿信号相连,用于保持程序计数寄存器的值,若取指单元停顿信号有效,则数据选择器3的输出使程序计数寄存器保持不变,否则,数据选择器3的输出使程序计数寄存器寄存下一条指令的地址;数据选择器4的输出端与数据选择器5的数据输入端相连,数据选择器4的控制端与流水线控制单元产生的取指单元停顿信号相连,用于使取指单元输出的指令保持不变,若取指单元停顿信号有效,则数据选择器4的输出保持不变,否则,数据选择器4的输出为当前取出的指令;数据选择器5输出端通过取指译码寄存器分别与取指单元中的数据选择器4的数据输入端、译码单元中的指令译码器和译码单元中的数据选择器2的数据输入端相连,数据选择器5的控制端与流水线控制单元产生的取指单元清空信号相连,用于使取指单元输出指令为O (即空操作指令),若取指单元清空信号有效,取指单元输出的指令为O,否则,取指单元输出的指令为数据选择器4输出的指令。参照图3,本发明的译码单元包括指令译码器、通用寄存器、特殊寄存器、符号扩展单元、数据冒险检测单元、数据定向单元、多周期指令控制单元、数据加载指令数据冒险检测单元、数据选择器I (MUXl)和数据选择器2 (MUX2)。指令译码器的输出端分别与通用寄存器文件、特殊寄存器文件、数据冒险检测单元、符号扩展单元、多周期指令控制单元和数据加载指令数据冒险检测单元相连,用于对取指单元输出的指令按照指令格式和内容进行译码,获得控制信号、源操作数地址1、源操作数地址2、目的操作数地址和15位的立即数;通用寄存器的输出端与数据定向单元相连,用于提供运算所需的操作数和暂存运算结果,通用寄存器包含32个32位的寄存器,依据目的操作数地址、源操作数地址1、源操作数地址2从通用寄存器中取出通用寄存器目的操作数、通用寄存器源操作数1、通用寄存器源操作数2 ;特殊寄存器的输出端分别与定时器和中断控制器相连,特殊寄存器的输出端通过译码执行寄存器与执行单元的数据定向单元2相连,用于保存运算的标志位、保存乘法运算与乘累加运算的结果、控制定时器与中断控制器的状态,特殊寄存器包含处理器状态寄存器(PSR)、整数乘法结果高32位寄存器(MULHI)、整数乘累加结果高32位(MACHI)、整数乘累加结果低32位寄存器(MACLO)、中断屏蔽寄存器(IMR)、中断触发状态寄存器(ITR)、中断优先级寄存器(IPR)、定时器状态寄存器(TSR)和定时器计数寄存器(TCR),依据源操作数地址1、源操作数地址2从特殊寄存器中取出特殊寄存器源操作数I和特殊寄存器源操作数2 ;符号扩展单元的输出端与数据定向单元相连,用于将指令译码器产生的15位立即数符号扩展成32位的操作数;数据冒险检测单元的输出端与数据定向单元相连,用于产生数据冒险控制信号,控制数据定向单元完成数据重定向功能;数据定向单元的输出端通过译码执行寄存器与执行单元中的数据定向单元I相连,用于将未写入通用寄存器的写回单元的输出数据通过数据旁路通道重定向到译码单元的输出端;多周期指令控制单元的输出端分别与流水线控制单元的数据选择器的数据输入端和不等于O比较器I相连,用于产生多周期指令的停顿周期数,多周期指令包含整数乘与乘累加指令、浮点加、减与乘指令,其中,整数乘指令、浮点加减指令和乘指令的停顿周期数设置为三、整数乘累加指令的停顿周期数设置为四、其余指令的停顿周期数均设置为零;数据加载指令数据冒险检测单元的输出端分别与流水线控制单元中的或门I和或门2相连,用于产生数据加载指令数据冒险控制信号,产生依据为当前指令与执行单元正在执行的指令发生数据冒险,且执行单元正在执行的指令为数据加载指令;数据选择器I的输出端与数据选择器2的数据输入端相连,数据选择器I的控制端与流水线控制单元产生的译码单元停顿信号相连,用于使译码单元输出的指令保持不变,若译码单元停顿信号有效,则数据选择器I的输出保持不变,否则,数据选择器I输出为当前输入的指令;数据选择器2的输出端通过译码执行寄存器分别与译码单元中的数据选择器I的数据输入端和执行单元中的指令译码器相连,数据选择器2的控制端与流水线控制单元产生的译码单元清空信号相连,用于使译码单元输出的指令为0,若译码单元清空信号有效,译码单元输出的指令为0,否则,译码单元输出的指令为数据选择器I输出的指令。参照图4,本发明的执行单元包括指令译码器、数据冒险检测单元1、数据定向单元1、数据冒险检测单元2、数据定向单元2、数据拼接单元、整数处理单元、单精度浮点数处理单元、整数乘与乘累加单元、处理器状态寄存器(PSR)、整数乘法结果高32位寄存器(MULHI)、整数乘累加结果高32位寄存器(MACHI)、整数乘累加结果低32位寄存器(MACLO)、分支处理单元、数据存储器读写信号产生器、通用寄存器写信号产生器、特殊寄存器写信号产生器和数据选择器(MUX)。指令译码器的输出端分别与数据冒险检测单元1、数据冒险检测单元2、数据拼接单元、分支处理单元、数据存储器读写信号产生器、通用寄存器写信号产生器、特殊寄存器写信号产生器和数据选择器的控制端相连,用于对译码单元输出的指令按照指令格式和内容进行译码,获得控制信号、源操作数地址1、源操作数地址2、目的操作数地址、20位立即数和地址偏移量;指令译码器产生的目的操作数地址分别与译码单元中的特殊寄存器的写地址端和译码单元中的数据加载指令数据冒险检测单元相连,指令译码器产生的目的操作数地址通过执行访存寄存器分别与执行单元中数据冒险检测单元I和数据冒险检测单元2相连,指令译码器产生的目的操作数地址依次通过执行访存寄存器和访存回写寄存器分别与译码单元中的数据冒险检测单元和通用寄存器、执行单元中的数据冒险检测单元I和数据冒险检测单元2相连;数据冒险检测单元I的输出端与数据定向单元I相连,用于产生译码单元输出的3个通用寄存器操作数的数据冒险控制信号,以控制数据定向单元I完成数据重定向功能;数据定向单元I输出端的通用寄存器目的操作数通过执行访存寄存器与数据存储器的写数据端相连,数据定向单元I输出端的通用寄存器源操作数I分别与乘与乘累加单元、单精度浮点数处理单元、整数处理单元和数据选择器的数据输入端相连,数据定向单元I输出的通用寄存器源操作数2分别与乘与乘累加单元、单精度浮点数处理单元和整数处理单元相连,用于将未写入通用寄存器的数据通过数据旁路通道重定向到运算单元的输入端;数据冒险检测单元2的输出端与数据定向单元2相连,用于产生译码单元输出的2个特殊寄存器操作数的数据冒险控制信号,以控制数据定向单元2完成数据重定向功能;数据定向单元2输出端的特殊寄存器源操作数I分别与整数处理单元和数据选择的数据输入端相连,数据定向单元2输出端的特殊寄存器源操作数2与整数处理单元相连,用于将未写入特殊寄存器的数据通过数据旁路通道重定向到运算单元的输入端;数据拼接单元的输出端与数据选择的数据输入端相连,用于产生32位的常数,即将指令译码器产生的20位立即数左移12位;整数处理单元的输出端的运算结果与数据选择器的数据输入端相连,整数处理单元的输出端的标志位与处理器状态寄存器相连,用于完成整数的逻辑、移位和算术运算,其中,逻辑运算包括与、或、或非和异或,移位运算包括逻辑左移、逻辑右移和算术右移,算术运算包括加法、进位加法、减法和借位减,特殊寄存器操作数只执行逻辑运算,整数处理单元产生运算标志位(零标志、负标志、进位标志和溢出标志)存入处理器状态寄存器中的第3 O位;单精度浮点数处理单元的输出端的运算结果与数据选择器的数据输入端相连,单精度浮点数处理单元的输出端的标志位与处理器状态寄存器相连,用于完成单精度浮点数的加法、减法、乘法和比较运算,单精度浮点数处理单元产生的运算异常标志(无效操作异常、下溢异常和上溢异常)存入处理器状态寄存器中的第10 8位,单精度浮点数处理单元产生的比较运算结果标志(无序、大于、小于、等于)存入处理器状态寄存器中的第7 4位;整数乘与乘累加单元的输出端分别与整数乘法结果高32位寄存器、整数乘累加结果高32位寄存器、整数乘累加结果低32位寄存器和数据选择器的数据输入端相连,用于完成32位的整数乘法运算和乘累加运算,整数乘法产生的64位积中的低32位作为整数乘与乘累加单元的输出与数据选择器的数据输入端相连,整数乘法产生的64位积中的高32位存入整数乘法结果高32位寄存器中,整数乘累加运算产生的64位结果中的低32位存入整数乘累加结果低32位寄存器中,整数乘累加运算产生的64位结果中的高32位存入整数乘累加结果高32位寄存器中;分支处理单元输出端的分支转移控制信号分别与取指单元中数据选择器2的控制端、流水线控制单元中的或门2和流水线控制单元中的缓冲器相连,分支处理单元输出的分支目标地址与取指单元中数据选择器2的数据输入端,用于产生分支转移控制信号和分支目标地址,验证分支预测的结果,若分支指令的跳转条件与处理器状态寄存器中的标志位匹配时,则置位分支执行控制信号,表明分支预测失败,分支目标地址为输入的指令地址与指令译码器产生的地址偏移量之和;数据存储器读写信号产生器的输出端的读控制信号与译码单元中的数据加载指令数据冒险检测单元相连,数据存储器读写信号产生器的输出端的读控制信号通过执行访存寄存器与访存单元中的数据存储器的读使能端相连,数据存储器读写信号产生器的输出端的读控制信号依次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的控制端相连,数据存储器读写信号产生器的输出端的写控制信号通过执行访存寄存器与访存单元中的数据存储器的写使能端相连,用于产生访存单元中数据存储器的读和写控制信号;通用寄存器写信号产生器的输出端通过执行访存寄存器与执行单元中的数据冒险检测单元I相连,通用寄存器写信号产生器的输出端依次通过执行访存寄存器和访存回写寄存器分别与译码单元中的数据冒险检测单元、译码单元中的通用寄存器写使能端和执行单元中的数据冒险检测单元I相连,用于产生通用寄存器的写使能信号;特殊寄存器写信号产生器的输出端与译码单元中的特殊寄存器的写使能端相连,特殊寄存器写信号产生器的输出端通过执行访存寄存器与执行单元中的数据冒险检测单元2相连,用于产生特殊寄存器的写使能信号;数据选择器的输出端与译码单元中的特殊寄存器的写数据端相连,数据选择器的输出端通过执行访存寄存器分别与执行单元中的数据冒险检测单元I和执行单元中的数据冒险检测单元2相连,数据选择器的输出端依次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的数据输入端相连,数据选择器的输出端通过执行访存寄存器与访存单元中的数据存储器的地址端相连,用于产生执行单元的运算结果。参照图5,本发明的访存单元包括数据存储器,回写单元包含数据选择器(MUX)。数据存储器的输出端通过访存回写寄存器与回写单元中的数据选择器的数据输入端相连,用于存储运算所需的数据和运算结果,若输入的数据存储器读信号有效,则从数据存储器中读出地址所指的数据,若输入的数据存储器写信号有效,则将数据存储器写数据写入地址所指的数据存储器中;数据选择的输出端分别与译码单元中的通用寄存器的写数据端、译码单元中的数据定向单元和执行单元中的数据定向单元I相连,用于产生通用寄存器的写数据,若输入的数据存储器读信号有效,则通用寄存器的写数据为数据存储器读出数据,否则,通用寄存器的写数据为执行单元的执行结果。参照图6,本发明的流水线控制单元包括数据选择器(MUX)、寄存器、加法器、不等于O比较器1、不等于O比较器2、非门、与门、或门1、或门2和缓冲器。数据选择器的输出端与寄存器相连,用于为寄存器预置数据,若输入的多周期指令的执行周期数不为0,且寄存器输出为O时,数据选择器为寄存器置入多周期指令的执行周期数作为计数初始值;寄存器的输出端分别与加法器和不等于O比较器2相连,用于寄存减I计数的结果;加法器的输出端与数据选择器的数据输入端相连,用于对预置后的多周期指令的执行周期数进行减I计数;不等于O比较器2的输出端分别与非门、或门I和译码单元中数据选择器I的控制端相连,用于产生译码单元停顿信号,当多周期指令的未执行完时,保持译码单元输出的指令;非门的输出和与门相连,不等于O比较器I的输出端和与门相连,与门的输出端与数据选择的控制端相连,用于产生寄存器预置数据的控制信号;或门I的输出端分别与取指单元中的数据选择器3的控制端和取指单元中的数据选择器4的控制端相连,用于产生取指单元停顿信号,当多周期指令未执行完或产生数据加载指令数据冒险时,取指单元停止取指;或门2的输出端与译码单元中数据选择器2的控制端相连,用于产生译码单元清空信号,当有条件分支预测错误或产生数据加载指令数据冒险时,将译码单元的输出指令置O (即空操作);缓冲器的输出端与取指单元中数据选择器5的控制端相连,用于产生取指单元清空信号,当有条件分支预测错误时,将取指单元的输出指令置O0
权利要求
1.基于可扩展处理器架构的专用指令集处理器,包括取指单元、译码单元、执行单元、访存单元、回写单元、流水线控制单元、定时器和中断控制器;所述的取指单元的输出端通过取指译码寄存器与译码单元相连;所述的译码单元的输出端分别与定时器、流水线控制单元和中断控制器相连,译码单元的输出端通过译码执行寄存器与执行单元相连;所述的执行单元的输出端分别与取指单元和流水线控制单元相连,执行单元的输出端通过执行访存寄存器分别与执行单元和访存单元相连;所述的访存单元的输出端通过访存回写寄存器与回写单元相连;所述的回写单元的输出端分别与译码单元和执行单元相连;所述的流水线控制单元的输出端分别与取指单元和译码单元相连;所述的定时器的输出端与中断控制器相连;所述的中断控制器的输入端与外部中断请求输入端相连,输出端与取指单元相连;其中: 所述的取指单元,用于访问程序存储器,取出的当前程序计数器所指的指令,为译码单元提供指令,产生下一条拟执行的指令的地址; 所述的译码单元,用于按照编码格式和内容对取指单元取出的指令译码,获得源操作数地址和目的操作数地址,取出源操作数和目的操作数,为执行单元提供操作数和访存单元提供数据存储器写数据,产生多周期指令的停顿周期数; 所述的执行单元,用于将译码单元取出的源操作数进行运算、产生结果和标志位,完成特殊寄存器的写操作,验证有条件分支的预测结果; 所述的访存单元,用于将数据存入数据存储器中或从数据存储器中取出数据; 所述的回写单元,用于完成通用寄存器的写操作; 所述的流水线控制单元,用于产生取指单元和译码的停顿与清空信号; 所述的定时器,用于对专用指令集处理器的时钟进行精确定时和计数,产生定时器中断; 所述的中断控制器,用于控制和管理一个定时器中断和14个外部中断的请求,产生中断响应信号和中断矢量。
2.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述的取指单元包括程序存储器、程序计数寄存器、指令译码器、数据选择器1、加法器、子程序处理单元、中断处理单元、数据选择器2、数据选择器3、数据选择器4和数据选择器5 ;所述的程序存储器的输出端分别与指令译码器和数据选择器4的数据输入端相连;所述的程序计数寄存器的输出端分别与数据存储器、加法器和数据选择器3的数据输入端相连;所述的指令译码器的输出端分别与数据选择器I的控制端、数据选择器I的数据输入端、数据选择器2的控制端、子程序处理单元和中断处理单元相连;所述的数据选择器I的输出端与加法器相连;所述的加法器的输出端分别与数据选择器2的数据输入端、子程序处理单元和中断处理单元相连,加法器的输出端依次通过取指译码寄存器和译码执行寄存器与执行单元中的分支控制单元相连;所述的子程序处理单元与数据选择器2的数据输入端相连;所述的中断处理单元的输出端与数据选择器2的数据输入端相连;所述的数据选择器2的输出端与数据选择器3的数据输入端相连;所述的数据选择器3的输出端与程序计数寄存器相连;所述的数据选择器4的输出端与数据选择器5的数据输入端相连;所述的数据选择器5的输出端通过取指译码寄存器分别与取指单元中的数据选择器4的数据输入端、译码单元中的指令译码器和译码单元中的数据选择器2的数据输入端相连。
3.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述的译码单元包括指令译码器、通用寄存器、特殊寄存器、符号扩展单元、数据冒险检测单元、数据定向单元、多周期指令控制单元、数据加载指令数据冒险检测单元、数据选择器I和数据选择器2 ;所述的指令译码器的输出端分别与通用寄存器、特殊寄存器、数据冒险检测单元、符号扩展单元、多周期指令控制单元和数据加载指令数据冒险检测单元相连;所述的通用寄存器的输出端与数据定向单元相连;所述的特殊寄存器的输出端分别与定时器和中断控制器相连,特 殊寄存器的输出端通过译码执行寄存器与执行单元中的数据定向单元2相连;所述的符号扩展单元的输出端与数据定向单元相连;所述的数据冒险检测单元的输出端与数据定向单元相连;所述的数据定向单元输出端通过译码执行寄存器与执行单元中的数据定向单元I相连;所述的多周期指令控制单元的输出端分别与流水线控制单元中的数据选择器的数据输入端和不等于O比较器I相连;所述的数据加载指令数据冒险检测单元的输出端分别与流水线控制单元中的或门I和或门2相连;所述的数据选择器I的输出端与数据选择器2的数据输入端相连;所述的数据选择器2的输出端通过译码执行寄存器分别与译码单元中的数据选择器I的数据输入端和执行单元中的指令译码器相连。
4.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述的执行单元包括指令译码器、数据冒险检测单元1、数据定向单元1、数据冒险检测单元2、数据定向单元2、数据拼接单元、整数处理单元、单精度浮点数处理单元、整数乘与乘累加单元、处理器状态寄存器、整数乘法结果高32位寄存器、整数乘累加结果高32位寄存器、整数乘累加结果低32位寄存器、分支处理单元、数据存储器读写信号产生器、通用寄存器写信号产生器、特殊寄存器写信号产生器和数据选择器;所述的指令译码器的输出端分别与数据冒险检测单元1、数据冒险检测单元2、数据拼接单元、分支处理单元、数据存储器读写信号产生器、通用寄存器写信号产生器、特殊寄存器写信号产生器和数据选择器的控制端相连;所述的指令译码器产生的目的操作数地址分别与译码单元中的特殊寄存器的写地址端和译码单元中的数据加载指令数据冒险检测单元相连,指令译码器产生的目的操作数地址通过执行访存寄存器分别与执行单元中的数据冒险检测单元I和数据冒险检测单元2相连,指令译码器产生的目的操作数地址依次通过执行访存寄存器和访存回写寄存器分别与译码单元中的数据冒险检测单元和通用寄存器、执行单元中的数据冒险检测单元I和数据冒险检测单元2相连;所述的数据冒险检测单元I的输出端与数据定向单元I相连;所述的数据定向单元I输出端的通用寄存器目的操作数通过执行访存寄存器与数据存储器的写数据端相连,数据定向单元I输出端的通用寄存器源操作数I分别与乘与乘累加单元、单精度浮点数处理单元、整数处理单元和数据选择器的数据输入端相连,数据定向单元I输出的通用寄存器源操作数2分别与乘与乘累加单元、单精度浮点数处理单元和整数处理单元相连;所述的数据冒险检测单元2的输出端与数据定向单元2相连;所述的数据定向单元2输出端的特殊寄存器源操作数I分别与整数处理单元和数据选择的数据输入端相连,数据定向单元2输出端的特殊寄存器源操作数2与整数处理单元相连;所述的数据拼接单元的输出端与数据选择器的数据输入端相连;所述的整数处理单元的输出端的运算结果与数据选择器的数据输入端相连,整数处理单元的输出端的标志位与处理器状态寄存器相连;所述的单精度浮点数处理单元的输出端的运算结果与数据选择器的数据输入端相连,单精度浮点数处理单元的输出端的标志位与处理器状态寄存器相连;整数乘与乘累加单元的输出端分别与乘法结果高位寄存器、整数乘累加结果高位寄存器、整数乘累加结果低位寄存器和数据选择器的数据输入端相连;所述的处理器状态寄存器的输出端与分支控制单元相连;所述的分支处理单元输出端的分支转移控制信号分别与取指单元中的数据选择器2的控制端、流水线控制单元中的或门2和流水线控制单元中的缓冲器相连,分支处理单元输出端的分支目标地址与取指单元中的数据选择器2的数据输入端相连;所述的数据存储器读写信号产生器的输出端的读控制信号与译码单元中的数据加载指令数据冒险检测单元相连,数据存储器读写信号产生器的输出端的读控制信号通过执行访存寄存器与访存单元中的数据存储器的读使能端相连,数据存储器读写信号产生器的输出端的读控制信号依次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的控制端相连,数据存储器读写信号产生器的输出端的写控制信号通过执行访存寄存器与访存单元中的数据存储器的写使能端相连;所述的通用寄存器写信号产生器的输出端通过执行访存寄存器与执行单元中的数据冒险检测单元I相连,通用寄存器写信号产生器的输出端依次通过执行访存寄存器和访存回写寄存器分别与译码单元中的数据冒险检测单元、译码单元中的通用寄存器的写使能信号和执行单元中的数据冒险检测单元I相连;所述的特殊寄存器写信号产生器的输出端与译码单元的特殊寄存器的写使能端相连,特殊寄存器写信号产生器的输出端通过执行访存寄存器与执行单元中的数据冒险检测单元2相连;所述的数据选择器的输出端与译码单元的特殊寄存器的写数据端相连,数据选择器的输出端通过执行访存寄存器分别与执行单元中的数据定向单元I和执行单元中的数据定向单元2相连,数据选择器的输出端依次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的数据输入端相连,数据选择器的输出端通过执行访存寄存器与访存单元中的数据存储器的地址端相连,访存单元中的数据存储器的输出端通过访存回写寄存器与回写单元中的数据选择器的数据输入端相连,回写单元中的数据选择器的输出端分别与译码单元中的通用寄存器的写数据端、译码单元中的数据定向单元和执行单元中的数据定向单元I相连。
5.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述的流水线控制单元包括数据选择器、寄存器、加法器、不等于O比较器1、不等于O比较器2、非门、与门、或门1、或门2和缓冲器;所述的数据选择器的输出端与寄存器相连;所述的寄存器的输出端分别与加法器和不等于O比较器2相连;所述的加法器的输出端与数据选择器的数据输入端相连;所述的不等于O比较器2的输出端分别与非门、或门I和译码单元中的数据选择器I的控制端相连;所述的非门的输出和与门相连;所述的不等于O比较器I的输出端和与门相连;所述的与门的输出端与数据选择器的控制端相连;或门I的输出端分别与取指单元中的数据选择器3的控制端和取指单元中的数据选择器4的控制端相连;或门2的输出端与译码单元中的数据选择器2的控制端相连;缓冲器的输出端与取指单元中的数据选择器5的控制端相连。
6.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述定时器包括比较器1、数据选择器、计数寄存器、加法器、比较器2、与门I和与门2 ;所述比较器I的输出和与门I相连;所述数据选择器的输出端与计数寄存器相连;所述计数寄存器的输出端分别与加法器和比较器2相连;所述加法器的输出端与数据选择器的数据输入端相连;所述比较器 2的输出端分别与与门I和与门2相连;所述与门I的输出端与数据选择器的控制端相连;所述与门2的输出端与中断控制器相连;所述的比较器I用于读取定时器状态寄存器中的计数模式控制位,比较所取出的计数模式控制位是否与重启计数模式的控制位相等; 所述的数据选择器和与门I用于为计数寄存器置入数据,当比较器I中的比较结果和比较器2的比较结果都为真时,计数寄存器置入O,否则,计数寄存器置入加I后的计数值;所述的计数寄存器用于寄存计数的值,当定时器状态寄存器中的定时使能有效时,计数寄存器才寄存计数值,否则,计数寄存器的值保持不变; 所述的加法器用于产生加I计数的值; 所述的比较器2用于读取定时器状态寄存器中的定时周期,比较读取的定时周期是否与计数寄存器计数器的值相等; 所述的与门2用于产生定时器中断请求,若比较器2的比较结果为真,且定时器状态寄存器中的定时中断使能有效时,置位定时器中断请求。
7.根据权利要求1所述的基于可扩展处理器架构的专用指令集处理器,其特征在于,所述中断控制器包括触发方式控制单元、屏蔽控制单元、优先级控制单元、中断响应产生单元和中断矢量选择单元;所述触发方式控制单元的输出端与屏蔽控制单元相连;所述屏蔽控制单元端的输出分别与优先级控制单元和中断响应产生单元相连;所述优先级控制单元的输出端与中断矢量选择单元相连;所述中断响应产生单元的输出端与取指单元中的中断处理单元相连;所述中断矢量选择单元的输出端与取指单元中的中断处理单元相连; 所述的触发方式控制单元用于产生符合中断触发方式寄存器所设定的触发方式的中断请求,中断触发方式寄存器可以分别设置15个中断请求的触发方式是上升沿还是高电平; 所述的屏蔽控制单元用于屏蔽满足触发方式的中断请求,不响应被屏蔽的中断,通过中断屏蔽寄存器可以分别设置15个中断请求的屏蔽状态; 所述的优先级控制单元用于产生优先级最高的中断请求的序号,优先响应该中断请求; 所述的中断响应产生单元用于产生中断响应信号,若存在符合触发方式,且没有被屏蔽的中断请求,则置位中断响应信号; 所述的中断矢量选择单元用于产生将要响应中断的中断矢量,将优先级控制单元产生的中断请求的序号左移2位即为中断矢量。
8.一种基于可扩展处理器架构的专用指令集处理器实现方法,包括取指、译码、执行、访存以及回写五级流水线,具体步骤如下: (1)取指流水线: 取指单元从程序存储器中取出当前程序计数寄存器所指的指令,将该指令存入取指译码寄存器,依据当前取出的指令类型,计算出下一条指令的地址,将该地址存入程序计数寄存器; (2)译码流水线: 2a)译码单元将取指译码寄存器取出的指令,按照指令的编码格式和内容进行译码,获得源操作数地址和目的操作数地址; 2b)译码单元将通用寄存器文件中取出的源操作数送入执行单元中的所有运算处理单元中;2c)译码单元将特殊寄存器文件中取出的源操作数送入执行单元中的整数逻辑运算处理单元中; 2d)译码单元将通用寄存器文件中取出的目的操作数作为数据存储器写数据送入访存单元中; (3)执行流水线: 3a)在当前指令为整数运算指令时,执行单元将产生的整数运算结果依次送入访存单元和回写单元,同时执行单元将产生的零标志、负标志、进位标志和溢出标志写入特殊寄存器文件中的处理器状态寄存器的第3 O位中; 3b)在当前指令为单精度浮点运算指令时,执行单元将产生的单精度浮点运算结果送入回写单元中,同时执行单元将产生的无效操作异常标志、上溢异常标志和下溢异常标志,执行单元写入特殊寄存器文件中的处理器状态寄存器的第10 8位中; 3c)在当前指令为单精度浮点比较指令时,执行单元将产生的无序、大于、小于、等于四种比较结果标志,写入特殊寄存器文件中的处理器状态寄存器的第7 4位中; 3d)在当前指令为特殊寄存器逻 辑运算指令时,执行单元将产生的逻辑运算结果写入特殊寄存器文件中; 3e)在当前指令为多周期运算指令时,则将取指单元和译码单元中的指令保持不变,数据保持不变的周期数为执行单元所产生的流水线停顿周期数; 3f)在当前指令为有条件分支指令时,执行单元产生有条件分支指令的实际跳转方向,若有条件分支指令的实际跳转方向为转移,则将取指单元和译码单元中的指令置O ; (4)访存流水线: 4a)在当前指令为数据加载指令时,访存单元从数据存储器中取出整数运算结果所指的数据,将所取的存储器读数据送入回写单元; 4b)在当前指令为数据存储指令时,访存单元将数据存储器写数据写入整数运算结果所指的数据存储器中; (5)回写流水线: 5a)在当前指令为数据加载指令时,回写单元将数据存储器读数据写入通用寄存器文件中; 5b)在当前指令整数运算指令时,回写单元将整数运算结果写入通用寄存器文件中; Sc)在当前指令为单精度浮点运算指令时,回写单元将单精度浮点运算运算结果写入通用寄存器文件中。
全文摘要
本发明公开了一种基于可扩展处理架构的专用指令集处理器及其实现方法,主要解决了现有技术电路复杂度高和消耗资源大的问题。本发明针对优化后的可扩展处理架构采用五级流水线的实现方法,通过采用数据定向技术和分支未执行的策略分别解决流水线处理中的数据冒险和控制冒险,本发明的专用指令集处理器包括取指单元、译码单元、执行单元、访存单元,回写单元,流水线控制单元,定时器和中断控制器。本发明充分考虑了流水线处理器和现场可编程门阵列的特点,合理划分流水线结构和最大限度地利用现场可编程门阵列的硬件资源。本发明具有电路设计简单、资源消耗资源少、处理器性能高和功耗低的优点,非常适于大规模并行处理。
文档编号G06F9/318GK103150146SQ20131005419
公开日2013年6月12日 申请日期2013年1月31日 优先权日2013年1月31日
发明者张犁, 李钦鹏, 李甫, 李森, 宋云朋, 石光明 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1