一种加快存储指令执行效率的数据处理器的制作方法

文档序号:6437554阅读:177来源:国知局
专利名称:一种加快存储指令执行效率的数据处理器的制作方法
技术领域
本发明涉及一种数据处理器。
背景技术
在处理器的流水化技术中,流水线的冲突主要包括结构冲突,数据冲突和控制冲突。随着流水线的不断加深,这几类冲突导致流水线的停顿,严重影响了处理器的性能。对于结构冲突可以通过增加资源的方式给予解决;对于控制冲突,采用了各类分支预测器、分支目标缓存器等各种技术减少控制冲突带来的性能损失;对于数据冲突,特别是读后写的真相关,硬件上通常采用前馈的机制去缓解其带来的性能损失。对于存储指令而言,其操作数分为地址操作数和数据操作数,其操作数可能来自于各类指令的执行结果,包括运算类指令和内存载入指令。解决存储指令的数据冲突,最简单的方法就是在指令发射的时候去前馈各个执行单元的执行结果,当其操作数消除了数据相关性时才发射到执行单元中去处理。该方法的优点是简单并且与其他指令数据相关性的处理机制统一;缺点是存储指令堵住发射阶段且有可能堵住后续没有相关性指令的发射, 从而影响了性能。从存储指令本身的特点出发,我们可以看到,存储的回写数据只有在存储指令真正需要内存时才需要,而从存储指令的发射到回写内存中间存在着一个时间差。因此有人提出了在存储地址相关性已经消除,数据操作数只在与载入指令有相关性,与其它类型指令没有相关性的情况下将该存储指令发射到执行单元中去,存储指令在执行单元内部完成对载入指令的前馈操作。该方法的优点是提高了内存拷贝的速率,缺点是存储指令的数据操作数在与除了载入指令之外的其他类型指令有相关性时被堵在指令发射阶段,且在执行单元内部但凡有存储指令的地方都需要存储的回写数据和对载入结果进行前馈的逻辑,导致后端布线的复杂性。

发明内容
为了克服已有的数据处理器在解决存储数据相关性中存在的数据读后写的真相关时流水线停顿较长、存储指令执行效率较低、限制了处理器性能的不足,本发明提出了一种有效减少由于数据读后写的真相关导致的流水线停顿、加快存储指令的执行效率、提升处理器性能的加快存储指令执行效率的数据处理器。本发明解决其技术问题所采用的技术方案是一种加快存储指令执行效率的数据处理器,所述数据处理器包括寄存器堆;指令译码单元,用以根据指令操作码译出指令的类型信息和操作数信息,访问寄存器堆,并对指令操作数的相关性进行检测;指令调度单元,用以接收来自指令译码单元的所有指令,监测各个执行单元的出口数据,根据指令操作数的相关性信息完成存储指令地址操作数的前馈和其他指令所有操作数的前馈,将操作数前馈完成的指令发射到对应的指令执行单元中;
存储指令队列,用以接收来自指令译码单元的存储指令,保存存储指令的回写数据和相关性信息,监测各个执行单元的出口数据,根据存储指令数据操作数的相关性信息完成存储指令回写数据的前馈;指令执行单元,用以接收来自指令调度单元发射的指令,根据指令类型分为不同的执行单元,存储指令被发射到存储指令执行单元中执行,其他指令根据指令类型在相应的执行单元中完成;所述存储指令执行单元中,从指令调度单元的出口获取存储指令的地址操作数,从存储指令队列的出口获取存储指令的回写数据。本发明的“其他指令”是指,各类算术指令,逻辑操作指令,载入指令,跳转指令和其他杂类指令。进一步,当指令译码单元译出是一条存储指令时,该存储指令被输送到指令调度单元,输送的信息包括从寄存器堆中取到的地址操作数和指令译码单元产生的地址操作数的相关性信息;并同时该存储指令被创建进入存储指令队列中,创建的信息包括从寄存器堆中取到的回写数据和指令译码单元产生的数据操作数的相关性信息;存储指令队列的深度是指令调度单元最多可调度的存储指令数与存储指令执行单元最多能同时处理的存储指令数之和。再进一步,存储指令的相关性包括地址操作数的相关性与数据操作数的相关性两种。在所述指令译码单元中,如果不存在相关性,则各个操作数从寄存器堆中直接获取,如果存在相关性,则需要通过由指令调度单元或存储指令队列从各个执行单元的出口前馈获得。在指令调度单元中,当存储指令的地址操作数不存在相关性或者相关性通过前馈消除时,该存储指令即可被发射到存储指令执行单元。更进一步,存储指令在存储指令队列中进行的数据操作数的前馈与存储指令在指令调度单元中接受调度并行开展;存储指令在存储指令队列中进行的数据操作数的前馈与存储指令在存储指令执行单元中接受处理并行开展;即在数据操作数相关性消除之前,存储指令可以执行地址产生、物理地址转换、高速缓存访问准备操作。优选的,在存储指令执行单元中,当存储指令确定可以回写内存或者回写片上存储器时,从存储指令队列中读取存储指令的相关性信息,若数据相关性已消除则回写内存或者回写片上存储器;若相关性没有消除,该存储指令不能回写内存或者回写片上存储器, 继续等待数据相关性消除。存储指令队列的存储指令在数据回写到内存或者回写到片上存储器时从存储指令队列中退休。本发明的技术构思为将存储指令的地址操作数和数据操作数的前馈分开进行, 当存储指令地址操作数相关性消除时就发射到执行单元去处理,存储指令的数据操作数的前馈集中在一个存储指令队列中进行,当存储指令回写内存时才从该队列中获得数据。本发明的有益效果主要表现在减少由于数据读后写的真相关导致的流水线停顿,加快存储指令的执行效率,从而提高了数据处理器的性能。


图1是数据处理器的一个示例图;图2是处理器核心的一部分的一个示例图。图3是存储指令队列的一个示例图。
具体实施例方式下面结合附图对本发明作进一步描述。参照图1 图2,一种加快存储指令执行效率的数据处理器,所述数据处理器包括寄存器堆;指令译码单元,根据指令操作码译出指令的类型信息和操作数信息,访问寄存器堆,并对指令操作数的相关性进行检测;指令调度单元,接收来自指令译码单元的所有指令,监测各个执行单元的出口数据,根据指令操作数的相关性信息完成存储指令地址操作数的前馈和其他指令所有操作数的前馈,将操作数前馈完成的指令发射到对应的指令执行单元中;存储指令队列,接收来自指令译码单元的存储指令,保存存储指令的回写数据和相关性信息,监测各个执行单元的出口数据,根据存储指令数据操作数的相关性信息完成存储指令回写数据的前馈;指令执行单元,接收来自指令调度单元发射的指令,根据指令类型分为不同的执行单元,存储指令被发射到存储指令执行单元中执行,其他指令根据指令类型在相应的执行单元中完成;存储指令执行单元从指令调度单元的出口获取存储指令的地址操作数,从存储指令队列的出口获取存储指令的回写数据。图1说明数据处理器10,在一个实施例中,数据处理器10包括处理器核心12,存储器14,总线接口单元18和其他单元16,它们通过总线20相互双向连接,总线接口单元18 通过外部总线22将外部设备和数据处理器10相连。图2说明图1的处理器核心12的一部分。在一个实施例中,处理器核心包括指令提取单元30,寄存器堆32,指令译码单元34,指令调度单元36,存储指令队列38,存储指令执行单元40,其他指令执行单元42,指令高速缓存器44和数据高速缓存器46。指令提取单元30访问指令高速缓存器44获取所需指令发送到指令译码单元34中,指令译码单元根据指令的操作码译出指令的类型信息和操作数信息,检测出各个操作数的相关性,并同时访问寄存器堆32获取指令的操作数。指令调度单元36接收来自指令译码单元34的所有指令,监测各个执行单元42的出口数据,根据指令操作数的相关性信息完成存储指令地址操作数的前馈和其他指令所有操作数的前馈,对于操作数没有相关性的情况,从寄存器堆32 中获得该操作数的值,对于操作数有相关性的情况,从各个指令执行单元42的出口获取指令的执行结果;对于存储指令,当其地址操作数相关性消除时,该存储指令就可以被发射到存储指令执行单元40中处理,对于其它类型的指令需要所有操作数的相关性都消除时才能发往对应的指令执行单元42中去。与此同时,存储指令队列38接收来自指令译码单元 36的存储指令和其数据操作数的相关性信息和来自寄存器堆32的数据,并监测各个指令执行单元42的出口,根据回写数据的相关性信息获得回写数据。存储指令在存储指令执行单元40中完成地址的计算和数据高速缓存46的访问,当该存储指令需要更新数据高速缓存46或者是片外存储器14时从存储指令队列38中获取回写的数据,在回写数据的相关性没有消除时,该存储指令不能回写数据高速缓存器46或者片外存储器14。存储指令队列 38的存储指令在数据回写到内存或者回写到片上存储器时就可以从存储指令队列38中退休。因此,存储指令队列38的深度是指令调度单元36最多可调度的存储指令数与存储指令执行单元40最多能同时处理的存储指令数之和。 图3说明了图2的存储指令队列38,在一个实施例中,存储指令队列38包括表项内容模块50,创建控制模块52,前馈控制模块M和退休控制模块56.其中,表项内容模块 50由若干个表项组成,每个表项对应一条存储指令的数据操作数的相关性信息和回写的数据;表项的数量即为存储指令队列38的深度。创建控制模块52负责表项内容模块50每个表项的创建,当创建控制模块52接收到来自指令译码单元36的存储指令时,发送数据创建信号60到表项内容模块50中,按序保存存储指令的数据操作数的相关性信息和数据信息; 一旦表项内容模块50没有可用的表项,发送表项堵塞信号62给创建控制模块52用于阻塞指令译码单元36的指令发射。前馈控制模块M监测各个执行单元42的出口,将表项内容模块50中每个表项的数据相关性信息64和其他执行单元42出口的结果信息进行匹配,一旦匹配成功,前馈控制模块M发送数据更新信号66给表项内容模块50,用匹配到的结果完成对存储指令回写数据的更新。退休控制模块56负责按序地传递表项内容模块50的回写数据68给存储指令执行单元40,一旦存储指令执行单元40接收回写数据成功,就发送接收成功的信号给退休控制模块56,由退休控制模块发送表项退休信号70给表项内容模块50, 将该表项从表项内容模块50中清除。
权利要求
1.一种加快存储指令执行效率的数据处理器,其特征在于所述数据处理器包括寄存器堆;指令译码单元,用以根据指令操作码译出指令的类型信息和操作数信息,访问寄存器堆,并对指令操作数的相关性进行检测;指令调度单元,用以接收来自指令译码单元的所有指令,监测各个执行单元的出口数据,根据指令操作数的相关性信息完成存储指令地址操作数的前馈和其他指令所有操作数的前馈,将操作数前馈完成的指令发射到对应的指令执行单元中;存储指令队列,用以接收来自指令译码单元的存储指令,保存存储指令的回写数据和相关性信息,监测各个执行单元的出口数据,根据存储指令数据操作数的相关性信息完成存储指令回写数据的前馈;指令执行单元,用以接收来自指令调度单元发射的指令,根据指令类型分为不同的执行单元,存储指令被发射到存储指令执行单元中执行,其他指令根据指令类型在相应的执行单元中完成;所述存储指令执行单元从指令调度单元的出口获取存储指令的地址操作数,从存储指令队列的出口获取存储指令的回写数据。
2.如权利要求1所述的一种加快存储指令执行效率的数据处理器,其特征在于当指令译码单元译出是一条存储指令时,该存储指令被输送到指令调度单元,输送的信息包括从寄存器堆中取到的地址操作数和指令译码单元产生的地址操作数的相关性信息;并同时该存储指令被创建进入存储指令队列中,创建的信息包括从寄存器堆中取到的回写数据和指令译码单元产生的数据操作数的相关性信息。
3.如权利要求1或2所述的一种加快存储指令执行效率的数据处理器,其特征在于 存储指令队列的深度是指令调度单元最多可调度的存储指令数与存储指令执行单元最多能同时处理的存储指令数之和。
4.如权利要求1或2所述的的一种加快存储指令执行效率的数据处理器,其特征在于 所述的相关性指由当前指令需要用到前一条指令产生的数据,存储指令的相关性包括地址操作数的相关性与数据操作数的相关性两种。
5.如权利要求1或2所述的的一种加快存储指令执行效率的数据处理器,其特征在于 在所述指令译码单元中,如果不存在相关性,则各个操作数从寄存器堆中直接获取,如果存在相关性,则需要通过由指令调度单元或存储指令队列从各个执行单元的出口前馈获得。
6.如权利要求1或2所述的一种加快存储指令执行效率的数据处理器,其特征在于 在所述指令调度单元中,当存储指令的地址操作数不存在相关性或者相关性通过前馈消除时,该存储指令被发射到存储指令执行单元。
7.如权利要求1或2的一种加快存储指令执行效率的数据处理器,其特征在于所述存储指令在存储指令队列中进行的数据操作数的前馈与存储指令在指令调度单元中接受调度并行开展。
8.如权利要求7的一种加快存储指令执行效率的数据处理器,其特征在于所述存储指令在存储指令队列中进行的数据操作数的前馈与存储指令在存储指令执行单元中接受处理并行开展。
9.如权利要求1或2所述的一种加快存储指令执行效率的数据处理器,其特征在于 在存储指令执行单元中,当存储指令确定回写内存或者回写片上存储器时,从存储指令队列中读取存储指令的相关性信息,若数据相关性已消除则回写内存或者回写片上存储器; 若相关性没有消除,该存储指令不能回写内存或者回写片上存储器,继续等待数据相关性消除。
10.如权利要求1或2所述的一种加快存储指令执行效率的数据处理器,其特征在于 存储指令队列的存储指令在数据回写到内存或者回写到片上存储器时从存储指令队列中退休。
全文摘要
一种加快存储指令执行效率的数据处理器,包括存器堆,指令译码单元,指令调度单元,用以根据指令操作数的相关性信息完成存储指令地址操作数的前馈和其他指令所有操作数的前馈,将操作数前馈完成的指令发射到对应的指令执行单元中;存储指令队列,用以接收来自指令译码单元的存储指令,保存存储指令的回写数据和相关性信息,监测各个执行单元的出口数据,根据存储指令数据操作数的相关性信息完成存储指令回写数据的前馈;指令执行单元,用以接收来自指令调度单元发射的指令,根据指令类型分为不同的执行单元。本发明有效减少由于数据读后写的真相关导致的流水线停顿、加快存储指令的执行效率、提升处理器性能。
文档编号G06F9/48GK102495724SQ20111034634
公开日2012年6月13日 申请日期2011年11月4日 优先权日2011年11月4日
发明者杨军, 葛海通, 陈志坚, 项晓燕 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1