融合了顺序和vliw的处理器体系结构及指令执行方法

文档序号:6374593阅读:179来源:国知局
专利名称:融合了顺序和vliw的处理器体系结构及指令执行方法
技术领域
本发明属于处理器体系结构领域,涉及一种融合了顺序和VLIW的处理器体系结构及指令执行方法。
背景技术
采用冯 诺伊曼或哈佛结构的处理器在执行程序的过程中,都是从外部存储器中不断的加载可执行的指令,在处理器内部执行。这些可执行的指令由软件生成,存放在二进制的可执行文件中。在这些可执行的指令之间,存在着大量的数据依赖关系,比如一些计算需要用到另一些计算的结果等。相邻指令之间的数据依赖关系和并行性的确定方式有 多种,有的是由硬件来决定,有的是由软件来决定,这些方式也直接影响到了汇编程序的开发,是软硬件接口的一部分。当指令间的数据依赖关系仅仅由指令的先后顺序决定,从软件开发的视角看,排在后面的指令一定能够正确得到前面指令的结果,这种执行方式就是顺序指令执行方式。在采用流水线技术、超标量技术的现代处理器中,常常需要加入大量的硬件单元来处理数据依赖关系,用乱序执行、投机执行、分支预测、微代码等策略来提高指令执行效率。但是,无论处理器采用何种体系结构上的优化策略,执行结果与“执行完一条指令,得到结果后,再执行下一条指令”是一致的。处理器对软件开发者隐藏了处理器具体的硬件细节,隐藏了指令的周期数等信息,采用顺序指令执行方式书写的汇编程序代码具有直观、友好、简洁、体积小等优点,并具有更好的兼容性。目前绝大部分面向通用的处理器体系结构,都是采用顺序指令执行方式,如X86、MIPS、ARM等。同时,在另一些处理器体系结构中,如超长指令字体系结构,指令间的数据依赖关系不仅仅或并不取决于指令的先后关系,而是取决于一些特殊的指令并行规则。直观来看,处理器体系结构对于软件开发者是透明的。尤其是汇编程序、编译器开发者,需要考虑指令的周期数、数据依赖关系、硬件资源占用等等具体细节,显式地安排每一条指令在处理器流水线中的执行情况。这一类处理器的硬件结构比较简化,相当多的工作被交给编译器和汇编程序开发者,提高了开发难度,但同时也为软件开发者提供了完全挖掘硬件性能的潜力。采用这种体系结构的处理器常被用于对计算性能要求高的场合,如音视频处理、通信等数字信号处理应用,TI的C6x系列数字信号处理器、Intel的Itanium处理器等都是采用这一类不同于顺序执行执行方式的架构。顺序指令执行方式和超长指令字执行方式,最根本的差别在于,顺序指令执行方式中指令的并行性由硬件决定,而超长指令字执行方式中指令的并行性由软件决定。在现有的处理器中,通常只使用单一的一种架构。使用顺序指令执行方式的处理器,主要面向通用处理领域,在计算性能上往往能力不足。而使用超长指令字执行方式的处理器,主要面向数字信号处理领域,在兼容性、通用处理上能力较弱
发明内容
为了克服上述现有技术的不足,本发明的目的在于提供一种融合了顺序和VLIW的处理器体系结构及指令执行方法,在同一款处理器内部实现两种指令分发单元,实现指令间数据依赖和硬件资源限制的硬件判断,增加了指令执行方式切换功能,并对跳转指令进行了特殊处理,使得该处理器能够同时支持顺序指令执行方式和超长指令字执行方式,并且可以针对不同的应用需求自由地在两种执行方式之间进行切换。为了实现上述目的,本发明采用的技术方案是一种融合了顺序和VLIW的处理器体系结构,在处理器取指令单元与译码单元之间增设有超长指令字分发单元和顺序执行分发单元,通过一个由执行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个分发单元。所述超长指令字分发单元根据指令的编码中预先设置好的并行信息,将并行的指令逐组依次分发。

所述顺序执行分发单元首先从顺序的指令流中,根据指令的先后顺序来判断指令间的数据依赖关系,维护正在执行指令的寄存器依赖表,保证排在后面的指令一定能得到前面指令的结果,在此前提下,尽可能地并行分发多条指令,以提高指令执行的并行度;同时由于每条指令都要占用特定的执行单元以及访问内存端口,如果硬件资源不够则指令也不能并行分发,所以由处理器来对指令之间的物理资源占用情况进行判断,最终决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发。所述处理器体系结构的指令执行方法,包括如下步骤在汇编程序中写入包含两种不同的执行方式的汇编代码以及执行方式切换指令,生成统一的二进制程序代码文件;取指令单元从指令内存中调取上述二进制程序代码,根据执行方式切换指令控制执行方式选择开关决定当前所取指令流向超长指令字分发单元或顺序执行分发单元;如果流向超长指令字分发单元,则由硬件识别出指令编码中预先设置好的并行信息,将并行的指令逐组依次分发即可;如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发;译码单元接收到分发单元所发指令,译码后发往执行单元执行相应指令。在顺序指令执行方式下,则其基址为当前跳转指令的PC地址;在超长指令字执行方式下,则其基址为并行指令组的首地址;处理器将不同执行方式下的基址,与当前跳转指令编码中由软件设置好的偏移值相加,以得到跳转指令的目标地址。在顺序指令执行方式下,融入分支预测策略。在超长指令字执行方式下,通过延时槽的方式来减小跳转开销。与现有技术相比,本发明在同一款处理器内部实现两种指令分发单元,实现指令间数据依赖和硬件资源限制的硬件判断,增加了指令执行方式切换功能,并对跳转指令进行了特殊处理,使得该处理器能够同时支持顺序指令执行方式和超长指令字执行方式,并且可以针对不同的应用需求自由地在两种执行方式之间进行切换。


图IA为最简单的无流水线的指令执行方式示意图。图IB为顺序指令执行方式示意图。图IC为超长指令字执行方式示意图。图2为本发明处理器架构示意图。图3为本发明处理器执行程序时执行方式的切换流程图。图4为本发明实施例面向LTE基带处理的数字信号处理器架构示意图。
具体实施方式

下面结合附图和实施例对本发明做进一步详细说明。顺序指令执行方式和超长指令字执行方式,最根本的差别在于,顺序指令执行方式中指令的并行性由硬件决定,而超长指令字执行方式中指令的并行性由软件决定。图I是三种执行方式的示意图,其中A是最简单的无流水线的指令执行方式,任何一条指令,都要经过取指令、译码、执行(内存访问)、结果写回等基本步骤,这些基本步骤全部处理完成后,处理器才去处理下一条指令。B是顺序指令执行方式下由硬件决定指令的执行方式,指令的并行性由硬件来自动判断,采用流水线和超标量技术的指令并行结果,与上面的无流水线的执行结果应该一致。C是超长指令字执行方式下由软件决定指令的并行执行,处理器每周期执行一个由软件定义好的超长指令字,即一组并行的指令,处理器硬件只需要识别出来并行信息即可。这种执行结果与上面的无流水线的执行结果是不同的。本发明处理器体系结构如图2所示,包含基本的取指令单元、译码单元、执行单元等流水级,在取指令单元与译码单元之间设置两个独立的分发级一超长指令字分发单元和顺序执行分发单元,分别用于顺序指令执行方式和超长指令字执行方式的分发,通过一个由执行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个分发单元。超长指令字分发单元的输入是取指单元取出来的多条指令编码,输出是将多条并行指令各自分发到对应的译码、执行单元中,可以用一些移位器和一些组合逻辑来完成在硬件上的实现。顺序执行分发单元的输入输出与超长指令分发单元一致,但是需要完成指令的预解码,以识别指令的功能单元、执行周期数、寄存器等信息。另外还要维护一个寄存器依赖表,保存当前还未得到结果的寄存器,如一条指令需要4个周期才能得到结果,那么它的结果寄存器要在寄存器依赖表中保存3个周期。如果分发单元发现某条指令使用的寄存器存在于寄存器依赖表中,则说明这个寄存器还没有被之前指令计算出结果,当前指令就不能分发出去。硬件资源限制的判断方法与数据依赖判断类似。硬件实现上,比超长指令字分发单元多很多组合逻辑,依赖表根据大小不同可以使用寄存器或RAM来实现。采用本发明处理器体系结构的指令执行方法,首先需要在汇编程序中写入包含两种不同的执行方式的汇编代码以及执行方式切换指令。也就是说,面向本专利处理器架构进行软件开发时,汇编程序中要包含两种不同的执行方式的汇编代码,同时存在执行方式切换指令。由于超长指令字执行方式需要显式地指定指令之间的并行性,所以对应的汇编代码往往包含一些特殊的标识并行的信息,而面向顺序指令执行方式所写的汇编程序就相对简化一些。
接着,取指令单元从指令内存中调取汇编程序指令,根据执行方式切换指令控制执行方式选择开关决定当前所取指令流向超长指令字分发单元或顺序执行分发单元;如果流向超长指令字分发单元,由于在超长指令字执行方式下,指令的数据依赖和并行性都已由软件决定好,因此硬件只需要从指令中识别出并行性信息,将并行的指令逐组依次分发即可;如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发;最终由译码单元接收到分发单元所发指令,译码后发往执行单元执行相应程序。本发明指令间的数据依赖判断相应地有两种方式
顺序指令执行方式中,处理器硬件一个非常重要的工作就是识别多条指令前后的数据依赖关系。采用流水线技术的处理器,每个周期都可以分发指令,各个流水级的指令之间流水作业,能够高效地利用硬件资源。但是由于指令之间存在数据依赖关系,如后一条计算指令的源寄存器使用了前一条指令的目的寄存器,而且有执行多个周期才能得到结果的指令的存在,势必造成某些指令不得不等待另一些指令的结果,使流水线出现空泡。而顺序指令执行方式下,硬件的工作正是从顺序的指令流中,判断前后的数据依赖关系,在保证计算结果正确的前提下,推迟一些指令的分发的同时,尽可能地并行分发指令以提高指令执行的并行度。超长指令字执行方式中,处理器硬件不需要进行指令间的数据依赖判断,这些判断工作是由软件来完成的。同样地,本发明指令间的硬件资源限制判断也相应地有两种方式在顺序指令执行方式下,决定指令是否能够分发的条件,一是数据依赖关系,另一个就是硬件资源限制。目前采用多发射、超标量等技术的处理器中,往往包含多个可以独立工作的硬件执行单元,不同的指令可以分发到不同的执行单元中执行,从而提高了处理器的处理能力。同时,由于硬件的设计原因,还可能存在一些端口访问限制,指令之间的使用限制等。所以,顺序指令执行方式下的处理器,应该有能力避免指令违反这些硬件资源的限制,正确地分发指令。超长指令字执行方式中,硬件资源限制的处理也是由软件来完成的,处理器不需要作额外的判断,只需要依照软件定义好的指令并行性依次分发即可。如图3所示,本发明处理器提供了在两种执行方式下切换的能力,体现在分发单元部分就是可以根据当前的执行方式标志位,用一个多路选择器来决定指令的流向。当处理器处于顺序指令执行方式时,从取指单元取出来的指令,将交由顺序指令执行方式的分发单元来处理;当处理器处于超长指令字执行方式时,从取指单元取出来的指令,将交由超长指令字执行方式的分发单元来处理。处理器的取指、译码、执行、结果写回等其它流水级可以被两种执行方式所复用,不需要进行切换。处理器同时支持两种执行方式,其目的就是为了适应软件的多样化需求,兼顾开发效率、兼容性、计算性能等。软件开发者,特别是汇编程序开发者,应该能够自由地在两种执行方式间进行切换。可以使用专门设计的两条执行方式切换指令来进行切换,处理器可以根据这两条指令,来选择打开相应的硬件模块。在切换到顺序指令执行方式时,处理器将开启顺序指令执行方式的分发单元,进行数据依赖判断和硬件资源限制判断,进行分支预测等;在切换到超长指令字执行方式时,处理器就选择以超长指令字的方式进行指令分发。本发明两种执行方式下的跳转指令存在着一些差异,一是两种执行方式下相对跳转的基址不同;二是顺序指令执行方式下可以增加分支预测功能以减小跳转的开销。在程序执行过程中,相对跳转的方式是根据基址和指令中的偏移值,来计算目标PC地址。对于顺序指令执行方式,其基址应该为当前跳转指令的PC地址;而对于超长指令字执行方式,由于多条指令的并行,其基址一般为并行指令组的首地址。这个差异就需要软件和硬件同时进行处理,由软件来正确计算不同执行方式下的偏移值,由硬件来正确处理相对跳转的基址。在顺序指令执行方式下,分支预测功能是提高程序执行效率的一个常用方法·。处理器可通过记录一些条件跳转发生的频率,来对下一次跳转进行预测。一旦预测命中,就可以大幅减小跳转开销。而在超长指令字执行方式下,可以通过延时槽的方式来减小跳转开销,不需要开启分支预测功能。本发明再以清华大学微电子所数字信号处理器实验室自主开发的面向LTE基带处理的新款数字信号处理器为例对该体系结构和执行方式进行说明,该数字信号处理器使用了顺序指令执行方式和超长指令字执行方式融合的处理器体系结构,是一款能同时满足高性能计算和通用性需求的处理器。该处理器即可以工作在顺序指令执行方式下,又可以工作在超长指令字执行方式下,且具有两条专用的执行方式切换指令setr/setw,这两条指令能用于汇编程序中以对处理器的执行方式进行切换,具有本专利的特征,如图4所示。处理器架构主要包括取指单元、两种执行方式的分发单元、译码单元、8个定点/向量执行单元,包括32x32bit的定点寄存器堆和64x640bit的向量寄存器堆,以及分支预测单元、内存管理系统等。处理器具有两种独立的分发单元。超长指令字分发单元用于超长指令字执行方式下,能够识别指令的执行单元、并行性等信息,按照软件设置的并行规则正确的分发指令;顺序指令分发单元用于顺序指令执行方式下,通过对当前指令进行预解码,得到指令的执行单元、执行周期数、寄存器使用等信息,将当前指令使用的寄存器与寄存器依赖表中的寄存器记录进行判断以识别是否有数据依赖冲突,再根据当前指令的执行单元等信息判断是否有硬件资源冲突,如果没有冲突即可对指令进行分发,同时如果指令要多个周期才能得到结果,还要将指令的结果寄存器保存在数据依赖表中。处理器的执行方式切换由setr和setw两条指令来完成。这两条指令不需要操作数,可以直接使用在汇编程序中。setr将处理器切换到顺序指令执行方式下,setw将处理器切换到超长指令字执行方式下。不同执行方式下的汇编代码具有不同的特征。处理器包含8个独立的执行单元,在超长指令字执行方式下,可以最多显式地指定8条指令并行执行;而在顺序指令执行方式下,处理器硬件根据指令间的数据依赖和硬件资源限制来决定并行性,在不同的硬件实现方案中可以实现并行发射2或4条指令。一段采用模式切换的汇编程序实例
权利要求
1.一种融合了顺序和VLIW的处理器体系结构,其特征在于,在处理器取指令单元与译码单元之间增设有超长指令字分发单元和顺序执行分发单元,通过一个由执行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个分发单元。
2.根据权利要求I所述处理器体系结构,其特征在于,所述超长指令字分发单元根据指令的编码中预先设置好的并行信息,将并行的指令逐组依次分发。
3.根据权利要求I所述处理器体系结构,其特征在于,所述顺序执行分发单元首先从顺序的指令流中,根据指令的先后顺序来判断指令间的数据依赖关系,维护正在执行指令的寄存器依赖表,保证排在后面的指令一定能得到前面指令的结果,在此前提下,尽可能地并行分发多条指令,以提高指令执行的并行度;同时由于每条指令都要占用特定的执行单元以及访问内存端口,如果硬件资源不够则指令也不能并行分发,所以由处理器来对指令之间的物理资源占用情况进行判断,最终决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发。
4.权利要求I所述处理器体系结构的指令执行方法,其特征在于, 在汇编程序中写入包含两种不同的执行方式的汇编代码以及执行方式切换指令,生成统一的二进制程序代码文件; 取指令单元从指令内存中调取上述二进制程序代码,根据执行方式切换指令控制执行方式选择开关决定当前所取指令流向超长指令字分发单元或顺序执行分发单元; 如果流向超长指令字分发单元,则由硬件识别出指令编码中预先设置好的并行信息,将并行的指令逐组依次分发即可; 如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发; 译码单元接收到分发单元所发指令,译码后发往执行单元执行相应指令。
5.根据权利要求4所述指令执行方法,其特征在于,在顺序指令执行方式下,则其基址为当前跳转指令的PC地址;在超长指令字执行方式下,则其基址为并行指令组的首地址;处理器将不同执行方式下的基址,与当前跳转指令编码中由软件设置好的偏移值相加,以得到跳转指令的目标地址。
6.根据权利要求4所述指令执行方法,其特征在于,在顺序指令执行方式下,融入分支预测策略。
7.根据权利要求4所述指令执行方法,其特征在于,在超长指令字执行方式下,通过延时槽的方式来减小跳转开销。
全文摘要
一种融合了顺序和VLIW的处理器体系结构,在处理器取指令单元与译码单元之间增设有超长指令字分发单元和顺序执行分发单元,通过一个由执行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个分发单元,如果流向超长指令字分发单元,则由硬件识别出指令编码中预先设置好的并行信息,将并行的指令逐组依次分发即可;如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发,本发明在同一款处理器内部实现两种指令分发单元,并且可以针对不同的应用需求自由地在两种执行方式之间进行切换。
文档编号G06F9/38GK102799418SQ20121027966
公开日2012年11月28日 申请日期2012年8月7日 优先权日2012年8月7日
发明者郭德源, 杨旭, 何虎 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1