首页> 中国专利> 融合了顺序和VLIW的处理器体系结构及指令执行方法

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

摘要

一种融合了顺序和VLIW的处理器体系结构,在处理器取指令单元与译码单元之间增设有超长指令字分发单元和顺序执行分发单元,通过一个由执行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个分发单元,如果流向超长指令字分发单元,则由硬件识别出指令编码中预先设置好的并行信息,将并行的指令逐组依次分发即可;如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可以分发,哪些指令需要等待前面的计算完成后才能分发,本发明在同一款处理器内部实现两种指令分发单元,并且可以针对不同的应用需求自由地在两种执行方式之间进行切换。

著录项

  • 公开/公告号CN102799418A

    专利类型发明专利

  • 公开/公告日2012-11-28

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201210279663.2

  • 发明设计人 郭德源;杨旭;何虎;

    申请日2012-08-07

  • 分类号G06F9/38;

  • 代理机构西安智大知识产权代理事务所;

  • 代理人贾玉健

  • 地址 100084 北京市海淀区100084信箱82分箱清华大学专利办公室

  • 入库时间 2023-12-18 07:26:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-10-08

    授权

    授权

  • 2013-01-23

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20120807

    实质审查的生效

  • 2012-11-28

    公开

    公开

说明书

技术领域

本发明属于处理器体系结构领域,涉及一种融合了顺序和VLIW的处理 器体系结构及指令执行方法。

背景技术

采用冯·诺伊曼或哈佛结构的处理器在执行程序的过程中,都是从外部 存储器中不断的加载可执行的指令,在处理器内部执行。这些可执行的指令 由软件生成,存放在二进制的可执行文件中。在这些可执行的指令之间,存 在着大量的数据依赖关系,比如一些计算需要用到另一些计算的结果等。相 邻指令之间的数据依赖关系和并行性的确定方式有多种,有的是由硬件来决 定,有的是由软件来决定,这些方式也直接影响到了汇编程序的开发,是软 硬件接口的一部分。

当指令间的数据依赖关系仅仅由指令的先后顺序决定,从软件开发的视 角看,排在后面的指令一定能够正确得到前面指令的结果,这种执行方式就 是顺序指令执行方式。在采用流水线技术、超标量技术的现代处理器中,常 常需要加入大量的硬件单元来处理数据依赖关系,用乱序执行、投机执行、 分支预测、微代码等策略来提高指令执行效率。但是,无论处理器采用何种 体系结构上的优化策略,执行结果与“执行完一条指令,得到结果后,再执 行下一条指令”是一致的。处理器对软件开发者隐藏了处理器具体的硬件细 节,隐藏了指令的周期数等信息,采用顺序指令执行方式书写的汇编程序代 码具有直观、友好、简洁、体积小等优点,并具有更好的兼容性。目前绝大 部分面向通用的处理器体系结构,都是采用顺序指令执行方式,如X86、 MIPS、ARM等。

同时,在另一些处理器体系结构中,如超长指令字体系结构,指令间的 数据依赖关系不仅仅或并不取决于指令的先后关系,而是取决于一些特殊的 指令并行规则。直观来看,处理器体系结构对于软件开发者是透明的。尤其 是汇编程序、编译器开发者,需要考虑指令的周期数、数据依赖关系、硬件 资源占用等等具体细节,显式地安排每一条指令在处理器流水线中的执行情 况。这一类处理器的硬件结构比较简化,相当多的工作被交给编译器和汇编 程序开发者,提高了开发难度,但同时也为软件开发者提供了完全挖掘硬件 性能的潜力。采用这种体系结构的处理器常被用于对计算性能要求高的场合, 如音视频处理、通信等数字信号处理应用,TI的C6x系列数字信号处理器、 Intel的Itanium处理器等都是采用这一类不同于顺序执行执行方式的架构。

顺序指令执行方式和超长指令字执行方式,最根本的差别在于,顺序指 令执行方式中指令的并行性由硬件决定,而超长指令字执行方式中指令的并 行性由软件决定。

在现有的处理器中,通常只使用单一的一种架构。使用顺序指令执行方 式的处理器,主要面向通用处理领域,在计算性能上往往能力不足。而使用 超长指令字执行方式的处理器,主要面向数字信号处理领域,在兼容性、通 用处理上能力较弱。

发明内容

为了克服上述现有技术的不足,本发明的目的在于提供一种融合了顺序 和VLIW的处理器体系结构及指令执行方法,在同一款处理器内部实现两种 指令分发单元,实现指令间数据依赖和硬件资源限制的硬件判断,增加了指 令执行方式切换功能,并对跳转指令进行了特殊处理,使得该处理器能够同 时支持顺序指令执行方式和超长指令字执行方式,并且可以针对不同的应用 需求自由地在两种执行方式之间进行切换。

为了实现上述目的,本发明采用的技术方案是:

一种融合了顺序和VLIW的处理器体系结构,在处理器取指令单元与译 码单元之间增设有超长指令字分发单元和顺序执行分发单元,通过一个由执 行方式切换指令控制的执行方式选择开关来决定当前所取指令流向其中一个 分发单元。

所述超长指令字分发单元根据指令的编码中预先设置好的并行信息,将 并行的指令逐组依次分发。

所述顺序执行分发单元首先从顺序的指令流中,根据指令的先后顺序来 判断指令间的数据依赖关系,维护正在执行指令的寄存器依赖表,保证排在 后面的指令一定能得到前面指令的结果,在此前提下,尽可能地并行分发多 条指令,以提高指令执行的并行度;同时由于每条指令都要占用特定的执行 单元以及访问内存端口,如果硬件资源不够则指令也不能并行分发,所以由 处理器来对指令之间的物理资源占用情况进行判断,最终决定哪些指令可以 分发,哪些指令需要等待前面的计算完成后才能分发。

所述处理器体系结构的指令执行方法,包括如下步骤:

在汇编程序中写入包含两种不同的执行方式的汇编代码以及执行方式切 换指令,生成统一的二进制程序代码文件;

取指令单元从指令内存中调取上述二进制程序代码,根据执行方式切换 指令控制执行方式选择开关决定当前所取指令流向超长指令字分发单元或顺 序执行分发单元;

如果流向超长指令字分发单元,则由硬件识别出指令编码中预先设置好 的并行信息,将并行的指令逐组依次分发即可;

如果流向顺序执行分发单元,则由硬件进行指令间的数据依赖关系判断 和物理资源限制判断,维护正在执行指令的寄存器依赖表,决定哪些指令可 以分发,哪些指令需要等待前面的计算完成后才能分发;

译码单元接收到分发单元所发指令,译码后发往执行单元执行相应指令。

在顺序指令执行方式下,则其基址为当前跳转指令的PC地址;在超长 指令字执行方式下,则其基址为并行指令组的首地址;处理器将不同执行方 式下的基址,与当前跳转指令编码中由软件设置好的偏移值相加,以得到跳 转指令的目标地址。

在顺序指令执行方式下,融入分支预测策略。

在超长指令字执行方式下,通过延时槽的方式来减小跳转开销。

与现有技术相比,本发明在同一款处理器内部实现两种指令分发单元, 实现指令间数据依赖和硬件资源限制的硬件判断,增加了指令执行方式切换 功能,并对跳转指令进行了特殊处理,使得该处理器能够同时支持顺序指令 执行方式和超长指令字执行方式,并且可以针对不同的应用需求自由地在两 种执行方式之间进行切换。

附图说明

图1A为最简单的无流水线的指令执行方式示意图。

图1B为顺序指令执行方式示意图。

图1C为超长指令字执行方式示意图。

图2为本发明处理器架构示意图。

图3为本发明处理器执行程序时执行方式的切换流程图。

图4为本发明实施例面向LTE基带处理的数字信号处理器架构示意图。

具体实施方式

下面结合附图和实施例对本发明做进一步详细说明。

顺序指令执行方式和超长指令字执行方式,最根本的差别在于,顺序指 令执行方式中指令的并行性由硬件决定,而超长指令字执行方式中指令的并 行性由软件决定。

图1是三种执行方式的示意图,其中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条指令。

一段采用模式切换的汇编程序实例:

从上述汇编程序实例可以看到,超长指令字执行方式由程序开发者显式 指明指令的执行单元,从而能够最大限度控制处理器硬件资源,开发出指令 并行度非常高的程序,以满足高性能要求。另一方面,使用setw/setr指令进 行执行方式的切换,可以以简洁、兼容性好的汇编程序写法来开发程序,发 挥顺序指令执行方式的优势。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号