一种实现读指令执行的方法及装置的制作方法

文档序号:6436023阅读:181来源:国知局
专利名称:一种实现读指令执行的方法及装置的制作方法
技术领域
本发明涉及现代微处理器及其应用系统的设计,尤其涉及超标量处理器实现读指令执行的方法及装置。
背景技术
随着集成电路制造工艺的飞速发展,处理器与存储器之间的性能差距逐渐拉大, 从而使得访存延迟,尤其是读指令访存延迟,逐渐成为现代超标量处理器性能提升的主要瓶颈。在传统超标量处理器中,通过访存指令之间数据前递O^rwarding)完成的读指令仅占所有读指令的15%,通常它们访存所占用的时间在一个处理器时钟周期内;其它读指令均通过访问一级(最靠近处理器的高速数据缓存级)或者更低一级高速数据缓存来得到所需数据。这些高速数据缓存的访问时间均会超过一个处理器时钟周期,而且随着线延迟的不断增加,这些高速数据缓存的访问时间将进一步增加。现有的读指令重执行技术(LRE,Load Re-Execution)是一种典型的针对读指令队列(Load Queue)的优化技术,它消除了读指令队列的相联查找逻辑所面临的麻烦。该技术完全依靠读指令在按序提交前的重执行来保证单处理器和多处理器的存储顺序要求,因此只需要使用简单的先进先出队列(FIFO)保存读指令的相关信息。读指令的这两次执行分别称为预读(premature load)和重读(r印lay load)。当两次执行结果相同时,存储相关被正确地保持;否则意味着发生了存储顺序违例或存储同一性违例,需要采取恢复措施。该技术将复杂度从流水线中的时序关键部件转移到流水线后端,故解决了复杂度处于流水线中时序关键部件所面临的诸多问题。过多的读指令重执行会带来严重的性能损失。通过基于写指令序列Bloom过滤器(SSBF,Store Sequence Bloom Filter)的读指令重执行过滤技术,可以有效地降低需要重新执行的Load指令数目。该技术通过SSBF追踪所有最近提交(commit)的写指令序列号(SSN,Store Sequence Number,亦可称写指令顺序标识)来判断读指令是否需要重执行,亦即当执行一条读指令时,通过访问SSBF获取最近提交的具有与该读指令相同访存地址的SSN,记为SSNnvul,当提交该读指令时,该读指令将再次访问SSBF并得到SSNfilter, 并判断SSNmml是否小于SSNfilter,如果不小于,则说明该读指令执行时得到的数据不正确,需要重新执行读指令。读指令重执行的关键在于,在读指令的两次执行中,重执行将保证该指令执行的正确性,因此第一次执行完全可以进行推测式或者预测式执行,甚至不执行,从而为优化读指令执行阶段的性能同时简化实现结构带来了可能。由此,为了进一步提高读指令的执行性能,需要提供一种通过推测式的大范围访存数据前递实现读指令执行的方法及装置,使得读指令执行性能得到优化及结构得到简化
发明内容
本发明所要解决的技术问题是提供一种实现读指令执行的方法及装置,能够实现读指令执行性能的优化。为了解决上述技术问题,本发明提供了一种实现读指令执行的方法,其特征在于, 包括在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。进一步地,该方法还包括在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。进一步地,多路组相联的活跃写指令窗口的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识、地址标签以及写数据;多路组相联的写指令序列Bloom过滤器的组内相应的路记录的写指令的信息至少包含写指令顺序标识及地址标签。进一步地,在写指令的执行阶段之前还包括为每个写指令分配一个计数器,作为写指令唯一的顺序标识;当写指令进入指令重命名流水级时,将相应的计数器当前的计数值赋值给该写指令的写指令顺序标识,并将该计数器加一单位增量。进一步地,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的写指令顺序标识、地址标签及写数据写入该组相应路的表项中,同时将活跃写指令窗口的组内所有表项中写指令顺序标识最小的记录表项替换出。进一步地,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照写指令的访存地址访问多路组相联的写指令序列Bloom过滤器相应的组,并将该写指令的写指令顺序标识及地址标签写入该组相应路的表项中,同时将多路组相联的写指令序列Bloom过滤器的组内所有表项中写指令顺序标识最小的记录表项替换出。进一步地,该方法还包括在读指令的执行阶段,通过访问活跃写指令窗口和/或多路组相联的写指令序列 Bloom过滤器获得相应写指令前递的数据。进一步地,通过访问所述活跃写指令窗口和/或多路组相联的写指令序列Bloom 过滤器获得相应写指令前递的数据,具体包括根据读指令的访存地址索引到所述活跃写指令窗口对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录;若判断没有命中路记录,则通过该访存地址访问到所述多路组相联的写指令序列Bloom过滤器中对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录; 将选取的路记录中的写数据作为前递数据返回。进一步地,该方法还包括
在读指令进入过滤流水级时,通过活跃写指令窗口和多路组相联的写指令序列 Bloom过滤器过滤读指令的重执行。进一步地,通过活跃写指令窗口和多路组相联的写指令序列Bloom过滤器过滤读指令的重执行,具体包括在读指令的执行阶段,将选取的路记录中所述写指令顺序标识作为前递写指令顺序标识返回;在读指令进入过滤流水级并访问多路组相联的写指令序列Bloom过滤器时,通过该读指令的访问地址索引该写指令序列Bloom过滤器对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组内所有路记录中最大的写指令顺序标识作为读指令的过滤写指令顺序标识;比较该读指令的前递写指令顺序标识是否等于过滤写指令顺序标识,如果不相等则重执行该读指令。进一步地,该方法还包括将重执行读指令访问一级高速数据缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令;否则直接提交该读指令。为了解决上述技术问题,本发明提供了一种实现读指令执行的装置,除了包括指令队列和寄存器堆外,还包括活跃写指令窗口,其中指令队列和寄存器堆,用于通过加法器形成写指令的访存地址;活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路记录中最旧的写指令记录替换出。进一步地,该装置还包括多路组相联的写指令序列Bloom过滤器,用于在写指令进入过滤流水级时于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换
出ο进一步地,活跃写指令窗口的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识、地址标签以及写数据;多路组相联的写指令序列Bloom过滤器的组内相应的路记录的写指令的信息至少包含写指令顺序标识及地址标签。进一步地,活跃写指令窗口和多路组相联的写指令序列Bloom过滤器所记录的写指令顺序标识,采用预先分配的计数器,在写指令进入指令重命名流水级时,该计数器当前的计数值被赋值给该写指令的写指令顺序标识,同时计数值加一单位增量。进一步地,指令队列和寄存器堆还通过加法器形成读指令的访存地址;活跃写指令窗口还在读指令的执行阶段,通过多路组相联的组内相应的路记录的写指令的写指令顺序标识、地址标签以及写数据的访问获得该读指令相应写指令前递的数据;
写指令序列Bloom过滤器还在读指令的执行阶段,通过多路组相联的组内相应的路记录的写指令的写指令顺序标识及地址标签的访问获得该读指令相应写指令前递的数据。进一步地,该装置还包括先进先出队列,其中在活跃写指令窗口中,根据读指令的访存地址索引到对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中写指令顺序标识最大对应的路记录,将选取的路记录中的写数据作为前递的数据通过该先进先出队列返回;若判断没有命中项,则在多路组相联的写指令序列Bloom过滤器中,通过读指令的访存地址访问到对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取命中路记录中写指令顺序标识最大对应的路记录,将选取的路记录中的写数据作为前递的数据通过该先进先出队列返回。进一步地,该装置还包括第一比较器,其中活跃写指令窗口或多路组相联的写指令序列Bloom过滤器在读指令的执行阶段, 将选取的路记录对应的写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;多路组相联的写指令序列Bloom过滤器在读指令进入过滤流水级时,通过该读指令的访存地址被索引对应的组,并通过该访存地址与该组中每一路记录的地址标签比较, 若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组所有路记录中最大的写指令顺序标识作为过滤写指令顺序标识输出到第一比较器的第二输入端;第一比较器,用于将第一输入端输入的前递写指令顺序标识和第二输入端输入的过滤写指令顺序标识比较,如不相等则输出读指令重执行命令,如相等则输出执行读指令获取的数据。进一步地,该装置还包括第二比较器,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如不相等,则输出重执行该读指令之后的数据相关指令的命令;如相等输出直接提交该读指令的命令。本发明基于活跃写指令窗口的推测式访存数据前递机制,通过采用活跃写指令窗口进行推测式数据前递,并通过采用读指令重执行技术实现访存相关违例检测及采用SSBF 用于实现对读指令重执行的过滤。由此,本发明可实现大范围的推测式访存数据前递来减少读指令的执行延迟,从而可有效地提高处理器读指令执行的性能。


图1是本发明的活跃写指令窗口实施例的结构示意图;图2是本发明的多路组相联的SSBF实施例的结构示意图;图3为本发明的写指令执行装置实施例的结构示意图;图4为本发明的读指令执行装置实施例的结构示意图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。本发明为实现读指令执行提供了一种采用多路组相联结构的活跃写指令窗口,如图1所示为采用两路(WayO,ffayl)组相联结构的活跃写指令窗口实施例。其中,每一路表项包含表项有效位(V)、数据字节使能位(BE)、写指令顺序标识(SSN)、地址标签(TAG)以及写数据(DATA)。为了明确上述本发明的活跃写指令窗口实施例的工作原理,将其与传统的写指令队列(SQ, Store Queue)工作原理进行如下比较写指令访存比较当写指令访问传统的SQ时,将按照程序顺序(Program Order)写入该队列中,如图1中θ 1所示;当写指令访问本发明的活跃写指令窗口时,按照该写指令的访存地址访问对应的组(即由WayO和Wayl组成的组),并将相应表项中SSN最小的表项(即表示最旧的写指令)替换出活跃指令窗口,如图1中的θ 2小于θ 3而被替换出。读指令访存比较当读指令(Li)访问传统的写指令队列(SQ)时,需要全相联查找该队列,得到最近的具有与该读指令相同访问地址的写指令,并从该写指令获得前递数据返回给该读指令, 如图1中α 1所示;当读指令访问本发明的活跃写指令窗口时,根据该读指令的访存地址访问对应的组,并将该访存地址与组中每一路(Way)表项的地址标签(TAG)比较,判断是否存在命中项;若存在命中项,如图1中的β 1和β 2均为命中项,则选择命中表项中SSN最大对应的表项(即表示最新的写指令),将对应的写数据(DATA)作为前递数据返回给该读指令,如图 1中β 3所示。本发明通过提供活跃写指令窗口,将带有SSN的写指令及其要写入的数据记录下来,并且每次记录时过滤掉最旧的写指令表项;当执行读指令时,通过访问该活跃写指令窗口迅速得到需要读取的数据,从而避免访问延迟较大的一级高速数据缓存。本发明采用多路组相联结构的写指令序列Bloom过滤器(SSBF),在指令的过滤 (FILTER)流水级时,记录写指令对应的SSN及地址标签(TAG),如图2所示,且每次记录时过滤掉最旧的写指令表项;该记录用于供读指令访问时对读指令重执行进行过滤,从而减少需要重执行的读指令数量,减少不必要的执行开销。本发明提供的实现读指令执行的方法实施例,包括在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令(Store)的信息,并将该组内所有路中最旧的写指令记录替换出。在上述方法实施例中,还包括在写指令进入过滤(FILTER)流水级时,采用多路组相联的SSBF中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在上述方法实施例中,多路组相联的活跃写指令窗口的组内相应的路记录的写指令的信息至少包含写指令顺序标识(SSN)、地址标签(TAG)以及写数据(DATA);多路组相联的SSBF的组内相应的路记录的写指令的信息至少包含写指令顺序标识(SSN)及地址标签(TAG)。在上述方法实施例中,在写指令执行之前还包括为每个写指令(More)分配一个计数器(SSNren),作为写指令唯一的顺序标识 (SSN);当写指令进入指令重命名流水级时,将相应的SSNren当前的计数值赋值给该写指令的SSN,并将该SSNren加一单位增量。当作为写指令唯一的SSN的计数器(SSNren)溢出时,处理器暂停指令的执行,并清除包含相应的SSN的活跃写指令窗口和SSBF中相应的表项,并将该SSNren置初值(譬如为0),并重新开始执行。在上述方法实施例中,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照该写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的SSN、 TAG及DATA写入该组相应路的表项中,同时将活跃写指令窗口的组中所有表项中SSN最小的记录表项替换出。在上述方法实施例中,采用多路组相联的SSBF的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照该写指令的访存地址访问多路组相联的SSBF相应的组,并将该写指令的SSN 及TAG写入该组相应路的表项中,同时将该SSBF的组中所有表项中SSN最小的记录表项替换出。 在上述方法实施例中,还包括在读指令的执行阶段,通过访问活跃写指令窗口和/或多路组相联的SSBF获得相应写指令前递的数据。在上述方法实施例中,在读指令的执行阶段,通过访问活跃写指令窗口和/或多路组相联的SSBF获得相应写指令前递的数据,具体包括根据读指令的访存地址索引到活跃写指令窗口对应的组,并通过该访存地址与组中每一表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大对应的表项; 若判断没有命中项,则通过该访存地址访问到多路组相联的SSBF中的组,并将该访存地址与组中每一表项的地址标签比较,如判断有多个命中项,则选取命中项中SSN最大对应的表项;将选取的表项中的写数据作为前递数据获取及返回。在上述方法实施例中,还包括在读指令进入过滤流水级时,通过活跃写指令窗口和多路组相联的SSBF过滤读指令的重执行。在上述方法实施例中,通过活跃写指令窗口和多路组相联的SSBF过滤读指令的重执行,具体包括在读指令的执行阶段,将选取的表项对应的SSN作为SSNfVd返回;在读指令进入过滤流水级并访问多路组相联的SSBF时,通过该读指令的访存地址索引该SSBF对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大的作为读指令的SSNfilter,若判断没有命中项,则返回该SSBF的组所有表项中SSN最大的作为读指令的SSNfilter ;判断该读指令的SSNfwd是否等于SSNfilter,如果不相等则重执行该读指令。
在上述方法实施例中,还包括将重执行读指令访问一级高速缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令;否则直接提交该读指令。本发明通过使用基于值的读指令重执行技术(VBLRE,Value-Based Load Re-Execution)检测活跃写指令窗口可能存在的数据前递错误,当读指令提交前,需要经过额外的流水级用于再次访问一级高速数据缓存,如果得到的数据与之前执行流水级得到的数据不匹配,则说明该读指令执行错误。本发明针对上述方法实施例,相应地还提供了实现读指令执行的装置实施例,其结构请参见图3所示的写指令执行装置实施例和图4所示的读指令执行装置实施例,除了包括指令队列(IQ)和寄存器堆(RF)外,还包括活跃写指令窗口,其中指令队列和寄存器堆,用于通过加法器形成写指令的访存地址;活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在上述装置实施例中,还包括多路组相联的SSBF,其中多路组相联的SSBF,用于在写指令进入过滤(FILTER)流水级时于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在上述装置实施例中,活跃写指令窗口多路组相联的组内相应的路记录的写指令的信息至少包含写指令顺序标识(SSN)、地址标签(TAG)以及写数据(DATA);多路组相联的SSBF的组内相应的路记录的写指令的信息至少包含写指令顺序标识(SSN)及地址标签(TAG)。在上述装置实施例中,活跃写指令窗口和多路组相联的SSBF所记录的写指令的SSN,采用预先分配的计数器(SSNren),在写指令进入指令重命名流水级时,该SSNren当前的计数值被赋值给该写指令的SSN,同时计数值加一单位增量。当计数器(SSNren)溢出时,活跃写指令窗口和多路组相联的SSBF清除包含相应的SSN相应路的记录,并将该SSNren置初值(譬如为0)。在上述装置实施例中,指令队列和寄存器堆还通过加法器形成读指令的访存地址;活跃写指令窗口还在读指令的执行阶段,通过多路组相联的组内相应的路记录的写指令的信息的访问获得该读指令相应写指令前递的数据;多路组相联的SSBF还在读指令的执行阶段,通过多路组相联的组内相应的路记录的写指令的信息的访问获得该读指令相应写指令前递的数据。在上述装置实施例中,还包括先进先出队列(FIFO),其中在活跃写指令窗口中,根据读指令的访存地址索引到对应的组,并通过该访存地址与组中每一路表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大对应的表项,将选取的表项中的写数据作为前递数据通过FIFO返回;若判断没有命中项,则在多路组相联的SSBF中,通过该访存地址访问到对应的组,并将该访存地址与组中每一路表项的地址标签比较,如判断有多个命中项,则选取命中项中SSN最大对应的表项,将选取的表项中的写数据作为前递数据获取,并通过FIFO返回。
在上述装置实施例中,还包括比较器1,其中活跃写指令窗口或多路组相联的SSBF在读指令的执行阶段,将选取的表项对应的SSN作为SSNfwd输出到比较器1的第一输入端(inl);多路组相联的SSBF在读指令进入过滤流水级时,通过该读指令的访存地址被索引该SSBF对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大的作为读指令的SSNfilter,若判断没有命中项,则返回该SSBF的组所有表项中SSN最大的作为读指令的SSNfilter输出到比较器1的第二输入端(in2);比较器1,用于将第一输入端输入的SSNfwd和第二输入端输入的SSNfilter进行比较,不相等则输出读指令重执行命令,相等则输出执行读指令获取的数据。在上述装置实施例中,还包括比较器2,其中比较器2,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如果不相等,则输出重执行该读指令之后的数据相关指令的命令;如相等输出直接提交该读指令的命令。本发明通过采用基于活跃写指令窗口的推测式访存数据前递机制,有效地扩大了读指令的数据前递范围,从而避免大量读指令通过访问一级高速数据缓存来得到数据,减少读指令的执行延迟;通过采用读指令重执行技术实现访存相关违例检测,并采用SSBF实现对读指令重执行的过滤,从而减少需要重执行的读指令数量,减少不必要的执行开销;故本发明有效地提高了读指令的执行效率,从而提高了处理器的整体性能。对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
权利要求
1.一种实现读指令执行的方法,其特征在于,包括在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。
2.按照权利要求1所述的方法,其特征在于,还包括在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。
3.按照权利要求2所述的方法,其特征在于,所述多路组相联的活跃写指令窗口的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识、地址标签以及写数据;所述多路组相联的写指令序列Bloom过滤器的组内相应的路记录的写指令的信息至少包含写指令顺序标识及地址标签。
4.按照权利要求1所述的方法,其特征在于,在所述写指令的执行阶段之前还包括为每个写指令分配一个计数器,作为写指令唯一的顺序标识;当写指令进入指令重命名流水级时,将相应的计数器当前的计数值赋值给该写指令的写指令顺序标识,并将该计数器加一单位增量。
5.按照权利要求3所述的方法,其特征在于,所述采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照所述写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的所述写指令顺序标识、所述地址标签及所述写数据写入该组相应路的表项中,同时将所述活跃写指令窗口的组内所有表项中写指令顺序标识最小的记录表项替换出。
6.按照权利要求3所述的方法,其特征在于,所述采用多路组相联的写指令序列Bloom 过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照所述写指令的访存地址访问所述多路组相联的写指令序列Bloom过滤器相应的组,并将该写指令的所述写指令顺序标识及所述地址标签写入该组相应路的表项中,同时将所述多路组相联的写指令序列Bloom过滤器的组内所有表项中写指令顺序标识最小的记录表项替换出。
7.按照权利要求2至6任一项所述的方法,其特征在于,还包括在读指令的执行阶段,通过访问所述活跃写指令窗口和/或所述多路组相联的写指令序列Bloom过滤器获得相应写指令前递的数据。
8.按照权利要求7所述的方法,其特征在于,所述通过访问所述活跃写指令窗口和/或所述多路组相联的写指令序列Bloom过滤器获得相应写指令前递的数据,具体包括根据所述读指令的访存地址索引到所述活跃写指令窗口对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中路记录,则选取所述命中项中写指令顺序标识最大对应的路记录;若判断没有命中路记录,则通过该访存地址访问到所述多路组相联的写指令序列Bloom过滤器中对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取所述命中项中写指令顺序标识最大对应的路记录;将选取的所述路记录中的写数据作为前递数据返回。
9.按照权利要求2至6任一项所述的方法,其特征在于,还包括在所述读指令进入过滤流水级时,通过所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器过滤读指令的重执行。
10.按照权利要求9所述的方法,其特征在于,所述通过所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器过滤读指令的重执行,具体包括在所述读指令的执行阶段,将选取的所述路记录中所述写指令顺序标识作为前递写指令顺序标识返回;在所述读指令进入过滤流水级并访问所述多路组相联的写指令序列Bloom过滤器时, 通过该读指令的访问地址索引该写指令序列Bloom过滤器对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组内所有路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识;比较该读指令的所述前递写指令顺序标识是否等于所述过滤写指令顺序标识,如果不相等则重执行该读指令。
11.按照权利要求10所述的方法,其特征在于,还包括将重执行读指令访问一级高速数据缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令;否则直接提交该读指令。
12.—种实现读指令执行的装置,包括指令队列和寄存器堆,其特征在于,还包括活跃写指令窗口,其中指令队列和寄存器堆,用于通过加法器形成写指令的访存地址;活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路记录中最旧的写指令记录替换出。
13.按照权利要求12所述的装置,其特征在于,还包括多路组相联的写指令序列Bloom过滤器,用于在所述写指令进入过滤流水级时于多路组相联的组内相应的路记录所述写指令的信息,并将该组的所有路中最旧的写指令记录替换出。
14.按照权利要求13所述的装置,其特征在于,所述活跃写指令窗口的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识、地址标签以及写数据;所述多路组相联的写指令序列Bloom过滤器的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识及地址标签。
15.按照权利要求13所述的装置,其特征在于,所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器所记录的所述写指令顺序标识,采用预先分配的计数器,在所述写指令进入指令重命名流水级时,该计数器当前的计数值被赋值给该写指令的所述写指令顺序标识,同时所述计数值加一单位增量。
16.按照权利要求14所述的装置,其特征在于,所述指令队列和寄存器堆还通过所述加法器形成读指令的访存地址;所述活跃写指令窗口还在读指令的执行阶段,通过所述多路组相联的组内相应的路记录的所述写指令的所述写指令顺序标识、所述地址标签以及所述写数据的访问获得该读指令相应写指令前递的数据;所述写指令序列Bloom过滤器还在读指令的执行阶段,通过所述多路组相联的组内相应的路记录的所述写指令的所述写指令顺序标识及所述地址标签的访问获得该读指令相应写指令前递的数据。
17.按照权利要求16所述的装置,其特征在于,还包括先进先出队列,其中在所述活跃写指令窗口中,根据所述读指令的访存地址索引到对应的组,并通过该访存地址与该组中每一路记录的所述地址标签比较,若判断有多个命中路记录,则选取命中路记录中所述写指令顺序标识最大对应的路记录,将选取的路记录中的所述写数据作为所述前递的数据通过该先进先出队列返回;若判断没有命中项,则在所述多路组相联的写指令序列Bloom过滤器中,通过所述读指令的访存地址访问到对应的组,并将该访存地址与该组中每一路记录的所述地址标签比较,如判断有多个命中路记录,则选取命中路记录中所述写指令顺序标识最大对应的路记录,将选取的路记录中的所述写数据作为所述前递的数据通过该先进先出队列返回。
18.按照权利要求16所述的装置,其特征在于,还包括第一比较器,其中所述活跃写指令窗口或所述多路组相联的写指令序列Bloom过滤器在读指令的执行阶段,将选取的路记录对应的所述写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;所述多路组相联的写指令序列Bloom过滤器在所述读指令进入过滤流水级时,通过该读指令的访存地址被索引对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组所有路记录中最大的写指令顺序标识作为过滤写指令顺序标识输出到第一比较器的第二输入端;第一比较器,用于将第一输入端输入的所述前递写指令顺序标识和第二输入端输入的所述过滤写指令顺序标识比较,如不相等则输出读指令重执行命令,如相等则输出执行读指令获取的数据。
19.按照权利要求18所述的装置,其特征在于,还包括第二比较器,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如不相等,则输出重执行该读指令之后的数据相关指令的命令;如相等输出直接提交该读指令的命令。
全文摘要
本发明披露了实现读指令执行的方法及装置,其中方法包括在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。本发明可实现大范围的推测式访存数据前递来减少读指令的执行延迟,从而可有效地提高处理器读指令执行的性能。
文档编号G06F9/30GK102364431SQ20111032185
公开日2012年2月29日 申请日期2011年10月20日 优先权日2011年10月20日
发明者佟冬, 张栚滈, 易江芳, 王克义, 王箫音, 程旭, 陆俊林 申请人:北京北大众志微系统科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1