专利名称:一种访存指令的执行装置的制作方法
技术领域:
本发明涉及现代超标量处理器访存指令执行技术,尤其涉及基于地址标识的访存指令执行装置及其方法。
背景技术:
随着集成电路制造工艺的飞速发展,处理器与存储器之间的性能差距逐渐拉大,从而使得访存延迟,尤其是读指令访存延迟,已逐渐成为现代超标量处理器性能提升的主要瓶颈。在传统超标量处理器中,通过访存指令之间数据前递完成的读指令,仅占所有读指令的15%,其他读指令均要通过访问一级或者更低一级的数据缓存来得到所需数据。这些数据缓存的访问时间均超过一个处理器的时钟周期,而且随着线延迟在整个电路延迟的比例的不断增加,这些高速数据缓存的访问时间将进一步增加。读指令重执行技术(Load Re-execution)是一种典型的针对读指令队列(LoadQueue)的优化技术,它消除了会限制读指令容量进一步提高的相联查找逻辑。该技术完全依靠读(Load)指令在按序提交前的重执行来保证单处理器和多处理器的存储顺序要求,因此只需要使用简单的先入先出队列(FIFO)保存Load指令的相关信息。Load指令的这两次执行分别叫作先读(premature load)和重读(replay load)。当读指令两遍执行结果相同时,存储相关被正确地保持;否则意味着发生了存储顺序违例或存储同一性违例,需要采取恢复措施。该方法将复杂度从流水线中的时序关键部件转移到流水线后端。过多的读指令重执行会为处理器带来严重的性能损失,基于SSBF(StoreSequenceBloom Filter)的指令重执行过滤技术可以有效降低需要重新执行的Load指令数目。该技术通过SSBF追踪所有最近提交写指令的SSN (写序列号,Store Sequence Number)。当一条读指令被执行时,它将得到最近提交的具有相同访存地址的SSN,记为SSNnvul。当该读指令被提交时,它将再次访问SSBF并得到SSNfilter,然后判断SSNnvul是否小于SSNfilter,如果不小于说明该读指令执行时得到的数据不正确,需要重新被执行。读指令重执行技术的关键在于,读指令的两次执行当中,重执行将保证指令执行的正确性,因此第一次执行完全可以进行推测式或者预测式执行,甚至不执行,从而为优化读指令执行阶段的性能同时简化实现结构带来了可能。因此,需要提供一种基于地址标识的访存相关检测机制,能够基于读指令重执行技术和指令重执行过滤技术,来实现快速的推测式访存数据前递,从而实现读指令执行性能的优化。
发明内容
本发明所要解决的技术问题是提供一种访存指令的执行装置,能够实现快速的推测式访存数据前递而优化读指令执行性能。为了解决上述技术问题,本发明提供了一种访存指令的执行装置,其中,访存指令在前端乱序执行阶段用访存数据前递装置记录写指令包括的年龄信息及数据,并在执行读指令时,通过访问该访存数据前递装置获得相关写指令的数据作为读指令前递的数据。进一步地,访存数据前递装置为多路组相联结构,其中每一组每一个表项的内容包括有效位、标签位、年龄信息以及对应数据。进一步地,该访存数据前递装置有写指令写入时,通过该写指令的地址标识访问该访存数据前递装置,将该写指令相应的有效位、标签位、年龄信息以及数据写入表项中,并将该装置同一组的所有表项中年龄最老的表项替换出该结构。进一步地,读指令通过地址标识索引访存数据前递装置,并通过标签比较判断是否命中其中所述表项,即读指令的地址标识中的标签位等于表项中的标签位;当判断有多个表项的标签命中时,则根据年龄信息选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄,且该表项中的数据作为该读指令的前递数据。进一步地,访存指令在后端按序执行阶段进入过滤装置流水级时,使用重执行过滤装置过滤重执行的读指令,所述重执行过滤装置为多路组相联结构,其中每一组每一个表项的内容包括有效位、标签位以及年龄信息。进一步地,若访问访存数据前递装置失效,即读指令的地址标识中的标签位不等于所有表项中的标签位,则继续访问重执行过滤装置,并通过标签比较判断是否命中所述重执行过滤装置中的表项,当判断重执行过滤装置中有多个标签命中时,选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄。进一步地,访存数据前递装置的中每个表项的内容还包括字节使能位;生成地址标识的输入包括地址基址和地址偏移,每一地址基址和每一地址偏移均相应地被分为无效位、标签位、索引位和字节使能位;其中,地址标识的标签位和索弓I位均由地址基址和地址偏移的对应位异或生成,字节使能位由地址基址和地址偏移的相应部分相加获得。进一步地,重执行过滤装置有写指令访问时,将写指令对应的有效位、标签位及年龄信息写入相应的表项中,并将所有表项中年龄最老的表项替换出该结构。进一步地,重执行过滤装置有读指令访问时,由读指令的地址标识索引重执行过滤装置,通过标签比较判断是否命中其中的表项,当判断有多个表项的标签命中时,则根据年龄信息选取年龄最小对应的表项中的写指令年龄作为该读指令的过滤年龄;判断该读指令的前递年龄是否等于该过滤年龄,如果不相等则将该读指令进入重执行流水级重新执行。进一步地,在读指令提交阶段,通过重执行读指令得到正确的访存数据,并将该访存数据与前递的数据进行比较,根据比较结果判断前递的数据是否正确,若判断该前递的数据不正确,则重新执行写指令及其相关指令。本发明在读指令重执行及过滤的基础上,提供了地址标识技术这一新机制,并采用实现读指令重执行的过滤装置,实现推测式的快速访存相关检测,同时采用读指令重执行技术实现访存相关违例检测,通过快速的推测式访存数据前递来减少读指令的执行延迟,从而大大优化读指令执行性能。
图1为本发明的访存指令的执行装置实施例整体流水线示意图;图2为本发明的访存指令的执行装置实施例地址标识计算过程示意图。
具体实施例方式以下结合附图和优选实施例对本发明的技术方案进行详细地阐述,应该理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。图1表示了本发明的访存指令的执行装置实施例其整体流水线的结构,由此可看出,所有访存指令的执行分为处于先读的前端乱序执行和处于重读后端按序执行两个阶段,其中在前端乱序执行阶段,用访存数据前递装置(简称访存前递装置)记录写指令(Store)对应的年龄及数据,并在读指令(Load)执行时,通过访问该访存前递装置获得相关写指令的数据作为读指令前递的数据。上述访存前递装置的实施例如图1所示,为多路组相联结构,其中每一组每个表项的内容包括有效位(V)、标签位(T)、年龄信息(A)以及对应数据(D),且该访存前递装置通过地址标识进行访问。当有写指令写入该访存前递装置时,将该写指令相应的内容写入一表项中,并将该装置同一组的所有表项中年龄最老的表项替换出该结构。读指令通过地址标识索引该访存前递装置,并通过标签比较判断是否命中其中的表项,即读指令地址标识中的标签位等于表项中的标签位(T);当判断有多个表项的标签命中时,则选取年龄最小对应的表项中的写指令年龄(A )作为该读指令的前递年龄,且该表项中的数据作为该读指令的前递数据。如果访问该访存前递装置失效,即读指令地址标识中的标签位不等于所有表项中的标签位(T),则继续访问重执行过滤装置(简称过滤装置),并通过标签比较判断是否命中其中的表项,当判断有多个标签命中时,则选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄。图2展示了本发明采用地址标识访问访存前递装置的计算方法,其中用于生成地址标识的输入包括地址基址(Base)和地址偏移(Offset),每一基址和偏移均被分为四个部分无效位、标签位、索引位和字节使能位;访存前递装置的中每个表项的内容还包括字节使能位,其中地址标识的标签位和索引位均由基址和偏移的对应位异或生成,这使得生成开销较小。字节使能位部分用于确定读出数据的字节使能,为了能够准确确定需要使能的字节,字节使能位需要基址和偏移的相应部分相加获得,这部分计算由于位数比较少,并且可以与访存前递装置访问并行进行,因此不会带来额外的计算开销。由于本发明的访存指令的执行装置实施例其地址标识的计算过程比准确访存地址的计算过程简单得多,因此不会引入大量的电路延迟,这样访存前递装置的访问便可提前到地址计算阶段。在后端按序执行阶段,当访存指令进入过滤装置(FILTER)流水级时,使用该过滤装置过滤重执行的读指令,以减少需要重执行的读指令数量。如图1所示,上述过滤装置实施例的结构与访存前递装置实施例类似,也为多路组相联结构,其中每个表项内容与访存前递装置相比缺少了对应数据。
当有写指令访问该过滤装置时,将其对应的有效位、年龄位以及标签位写入该过滤装置相应的表项中,并将所有表项中年龄最老的表项替换出该结构。读指令通过访存地址索引该过滤装置,并通过标签比较判断是否命中其中的表项,当判断有多个标签命中时,则选取年龄最小对应的表项中的写指令年龄作为该读指令的过滤年龄;判断该读指令的前递年龄是否等于该过滤年龄,如果不相等则将该读指令进入REEXE流水级重新执行。在读指令提交阶段,通过重执行读指令得到正确的访存数据,并将该访存数据与前递的数据进行比较,根据比较结果判断前递的数据的正确性,若判断前递的数据不正确,则重新执行该写指令及其相关指令。本发明的访存指令的执行装置实施例流水线设计的关键在于,通过采用地址标识访问访存前递装置,能够将该访问提前到地址计算阶段,从而提高访存数据前递的性能 ’另夕卜,访问访存前递装置能够与高速缓存访问以串行方式进行,这样,当访问访存数据前递装置有表项命中时,可避免不必要的高速数据缓存访问,从而降低访存指令执行的能耗开销。 本发明针对上述装置实施例,相应地还提供了访存指令的执行方法实施例,包括在前端的乱序执行阶段,用访存前递装置记录写指令对应的年龄及数据;在执行读指令时,通过访问该访存前递装置获得相关写指令的数据作为读指令前递的数据;在后端按序执行阶段,当访存指令进入过滤装置流水级时,使用该过滤装置过滤重执行的读指令。在上述方法实施例中,用访存前递装置记录写指令对应的年龄及数据,具体包括将访存前递装置设为多路组相联结构,该结构中每个表项记录的内容包括有效位、标签位、年龄信息以及对应数据;当有写指令写入该访存前递装置时,通过地址标识访问该访存前递装置的表项,将该写指令相应的内容写入访问的表项中,并将该装置的所有表项中年龄最老的表项替换出该结构。在上述方法实施例中,该访存前递装置的中每个表项的内容还包括字节使能位;通过地址标识访问该访存前递装置的表项,具体是指生成地址标识的输入包括地址基址和地址偏移,每一基址和每一偏移均被分为四个部分无效位、标签位、索引位和字节使能位;其中地址标识的标签位和索引位均由基址和偏移的对应位异或生成;字节使能位部分由基址和偏移的相应部分相加获得,用于确定读出数据的字节使能。在上述方法实施例中,在执行读指令时,通过访问该访存前递装置获得相关写指令的数据作为读指令前递的数据,具体包括读指令通过地址标识索引该访存前递装置,并通过标签比较判断是否命中其中的表项,即读指令地址标识中的标签位等于表项中的标签位;当判断有多个表项的标签命中时,则选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄,且该表项中的数据作为该读指令的前递数据。在上述方法实施例中,通过访问该访存前递装置获得相关写指令的数据作为读指令前递的数据,还具体包括当访问该访存前递装置失效,即读指令地址标识中的标签位不等于所有表项中的标签位,则继续访问过滤装置,并通过标签比较判断是否命中其中的表项,当判断有多个标签命中时,则选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄。在上述方法实施例中,当访存指令进入过滤装置流水级时,使用该过滤装置过滤重执行的读指令,具体包括当有写指令访问该过滤装置时,将其对应的有效位、年龄位以及标签位写入该过滤装置相应的表项中,并将所有表项中年龄最老的表项替换出该结构;读指令通过访存地址索引该过滤装置,并通过标签比较判断是否命中其中的表项,当判断有多个标签命中时,则选取年龄最小对应的表项中的写指令年龄作为该读指令的过滤年龄;判断该读指令的前递年龄是否等于该过滤年龄,如果不相等则将该读指令进入REEXE流水级重新执行。上述方法实施例还包括在读指令提交阶段,通过重执行读指令得到正确的访存数据,并将该访存数据与前递的数据进行比较,根据比较结果判断前递的数据的正确性,若判断前递的数据不正确,则重新执行该写指令及其相关指令。由于本发明可有效地提前读指令的数据前递时间,从而可避免大量读指令通过访问一级高速数据缓存来得到数据,由此有效地提高了读指令的执行效率。因此,本发明通过采用基于地址标识访存访存前递装置的相关检测机制,可有效地提高处理器性能。同时,由于过滤了大量不必要的高速缓存访问,本发明还可有效降低了访存指令执行的能耗开销。
权利要求
1.一种访存指令的执行装置,其特征在于,所述访存指令在前端乱序执行阶段用访存数据前递装置记录写指令包括的年龄信息及数据,并在执行读指令时,通过访问该访存数据前递装置获得相关写指令的数据作为读指令前递的数据。
2.按照权利要求1所述的装置,其特征在于,所述访存数据前递装置为多路组相联结构,其中每一组每一个表项的内容包括有效位、标签位、年龄信息以及对应数据。
3.按照权利要求2所述的装置,其特征在于, 该访存数据前递装置有写指令写入时,通过该写指令的地址标识访问该访存数据前递装置,将该写指令相应的有效位、标签位、年龄信息以及数据写入所述表项中,并将该装置同一组的所有表项中年龄最老的表项替换出该结构。
4.按照权利要求3所述的装置,其特征在于, 读指令通过地址标识索引所述访存数据前递装置,并通过所述标签比较判断是否命中其中所述表项,即所述读指令的地址标识中的标签位等于所述表项中的标签位;当判断有多个表项的标签命中时,则根据所述年龄信息选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄,且该表项中的数据作为该读指令的前递数据。
5.按照权利要求4所述的装置,其特征在于,所述访存指令在后端按序执行阶段进入过滤装置流水级时,使用所述重执行过滤装置过滤重执行的读指令,所述重执行过滤装置为多路组相联结构,其中每一组每一个表项的内容包括有效位、标签位以及年龄信息。
6.按照权利要求5所述的装置,其特征在于, 若访问所述访存数据前递装置失效,即所述读指令的地址标识中的标签位不等于所有表项中的标签位,则继续访问重执行过滤装置,并通过所述标签比较判断是否命中所述重执行过滤装置中的表项,当判断所述重执行过滤装置中有多个标签命中时,选取年龄最小对应的表项中的写指令年龄作为该读指令的前递年龄。
7.按照权利要求3至6任一项所述的装置,其特征在于,所述访存数据前递装置的中每个表项的内容还包括字节使能位;生成所述地址标识的输入包括地址基址和地址偏移,每一地址基址和每一地址偏移均相应地被分为无效位、标签位、索引位和字节使能位;其中,所述地址标识的标签位和索引位均由所述地址基址和所述地址偏移的对应位异或生成,所述字节使能位由所述地址基址和所述地址偏移的相应部分相加获得。
8.按照权利要求5所述的装置,其特征在于, 所述重执行过滤装置有写指令访问时,将所述写指令对应的有效位、标签位及年龄信息写入相应的表项中,并将所有表项中年龄最老的表项替换出该结构。
9.按照权利要求8所述的装置,其特征在于, 所述重执行过滤装置有读指令访问时,由所述读指令的地址标识索引所述重执行过滤装置,通过所述标签比较判断是否命中其中的表项,当判断有多个表项的标签命中时,则根据所述年龄信息选取年龄最小对应的表项中的写指令年龄作为该读指令的过滤年龄;判断该读指令的前递年龄是否等于该过滤年龄,如果不相等则将该读指令进入重执行流水级重新执行。
10.按照权利要求9所述的装置,其特征在于, 在读指令提交阶段,通过重执行读指令得到正确的访存数据,并将该访存数据与前递的数据进行比较,根据比较结果判断所述前递的数据是否正确,若判断该前递的数据不正确, 则重新执行所述写指令及其相关指令。
全文摘要
本发明披露了一种访存指令的执行装置,其中,访存指令在前端乱序执行阶段用访存数据前递装置记录写指令包括的年龄信息及数据,并在执行读指令时,通过访问该访存数据前递装置获得相关写指令的数据作为读指令前递的数据。本发明在读指令重执行及过滤的基础上,提供了地址标识技术这一新机制,并采用实现读指令重执行的过滤装置,实现推测式的快速访存相关检测,同时采用读指令重执行技术实现访存相关违例检测,通过快速的推测式访存数据前递来减少读指令的执行延迟,从而大大优化读指令执行性能。
文档编号G06F12/02GK103019946SQ20121048882
公开日2013年4月3日 申请日期2012年11月26日 优先权日2012年11月26日
发明者程旭 申请人:北京北大众志微系统科技有限责任公司