CN102364431B - 一种实现读指令执行的方法及装置 - Google Patents
一种实现读指令执行的方法及装置 Download PDFInfo
- Publication number
- CN102364431B CN102364431B CN201110321857.XA CN201110321857A CN102364431B CN 102364431 B CN102364431 B CN 102364431B CN 201110321857 A CN201110321857 A CN 201110321857A CN 102364431 B CN102364431 B CN 102364431B
- Authority
- CN
- China
- Prior art keywords
- write command
- instruction
- group
- command sequence
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000001914 filtration Methods 0.000 claims abstract description 20
- 230000001419 dependent effect Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Abstract
本发明披露了实现读指令执行的方法及装置,其中方法包括:在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。本发明可实现大范围的推测式访存数据前递来减少读指令的执行延迟,从而可有效地提高处理器读指令执行的性能。
Description
技术领域
本发明涉及现代微处理器及其应用系统的设计,尤其涉及超标量处理器实现读指令执行的方法及装置。
背景技术
随着集成电路制造工艺的飞速发展,处理器与存储器之间的性能差距逐渐拉大,从而使得访存延迟,尤其是读指令访存延迟,逐渐成为现代超标量处理器性能提升的主要瓶颈。在传统超标量处理器中,通过访存指令之间数据前递(Forwarding)完成的读指令仅占所有读指令的15%,通常它们访存所占用的时间在一个处理器时钟周期内;其它读指令均通过访问一级(最靠近处理器的高速数据缓存级)或者更低一级高速数据缓存来得到所需数据。这些高速数据缓存的访问时间均会超过一个处理器时钟周期,而且随着线延迟的不断增加,这些高速数据缓存的访问时间将进一步增加。
现有的读指令重执行技术(LRE,Load Re-Execution)是一种典型的针对读指令队列(Load Queue)的优化技术,它消除了读指令队列的相联查找逻辑所面临的麻烦。该技术完全依靠读指令在按序提交前的重执行来保证单处理器和多处理器的存储顺序要求,因此只需要使用简单的先进先出队列(FIFO)保存读指令的相关信息。读指令的这两次执行分别称为预读(premature load)和重读(replay load)。当两次执行结果相同时,存储相关被正确地保持;否则意味着发生了存储顺序违例或存储同一性违例,需要采取恢复措施。该技术将复杂度从流水线中的时序关键部件转移到流水线后端,故解决了复杂度处于流水线中时序关键部件所面临的诸多问题。
过多的读指令重执行会带来严重的性能损失。通过基于写指令序列Bloom过滤器(SSBF,Store Sequence Bloom Filter)的读指令重执行过滤技术,可以有效地降低需要重新执行的Load指令数目。该技术通过SSBF追踪所有最近提交(commit)的写指令序列号(SSN,Store Sequence Number,亦可称写指令顺序标识)来判断读指令是否需要重执行,亦即当执行一条读指令时,通过访问SSBF获取最近提交的具有与该读指令相同访存地址的SSN,记为SSNnvul,当提交该读指令时,该读指令将再次访问SSBF并得到SSNfilter,并判断SSNnvul是否小于SSNfilter,如果不小于,则说明该读指令执行时得到的数据不正确,需要重新执行读指令。
读指令重执行的关键在于,在读指令的两次执行中,重执行将保证该指令执行的正确性,因此第一次执行完全可以进行推测式或者预测式执行,甚至不执行,从而为优化读指令执行阶段的性能同时简化实现结构带来了可能。
由此,为了进一步提高读指令的执行性能,需要提供一种通过推测式的大范围访存数据前递实现读指令执行的方法及装置,使得读指令执行性能得到优化及结构得到简化。
发明内容
本发明所要解决的技术问题是提供一种实现读指令执行的方法及装置,能够实现读指令执行性能的优化。
为了解决上述技术问题,本发明提供了一种实现读指令执行的方法,其特征在于,包括:
在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路中最旧的写指令记录替换出;多路组相联的活跃写指令窗口的组为按照写指令的访存地址访问活跃写指令窗口相应的组;
在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录至少包含写指令顺序标识及地址标签的写指令的信息,并将该组的所有路中最旧的写指令记录替换出;多路组相联的写指令序列Bloom过滤器中相应的组为按照所述写指令的访存地址访问所述多路组相联的写指令序列Bloom过滤器相应的组;
在读指令的执行阶段,根据读指令的访存地址索引到活跃写指令窗口对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录;若判断没有命中路记录,则通过该访存地址访问到多路组相联的写指令序列Bloom过滤器中对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录;将选取的路记录中的写数据作为前递数据返回。
进一步地,在写指令的执行阶段之前还包括:
为每个写指令分配一个计数器,作为写指令唯一的顺序标识;当写指令进入指令重命名流水级时,将相应的计数器当前的计数值赋值给该写指令的写指令顺序标识,并将该计数器加一单位增量。
进一步地,采用多路组相联的活跃写指令窗口的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括:
按照写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的写指令顺序标识、地址标签及写数据写入该组相应路的表项中,同时将活跃写指令窗口的组内所有表项中写指令顺序标识最小的记录表项替换出。
进一步地,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录至少包含写指令顺序标识及地址标签写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括:
按照写指令的访存地址访问多路组相联的写指令序列Bloom过滤器相应的组,并将该写指令的写指令顺序标识及地址标签写入该组相应路的表项中,同时将多路组相联的写指令序列Bloom过滤器的组内所有表项中写指令顺序标识最小的记录表项替换出。
进一步地,该方法还包括:
在读指令进入过滤流水级时,通过活跃写指令窗口和多路组相联的写指令序列Bloom过滤器过滤读指令的重执行。
进一步地,通过活跃写指令窗口和多路组相联的写指令序列Bloom过滤器过滤读指令的重执行,具体包括:
在读指令的执行阶段,将选取的路记录中所述写指令顺序标识作为前递写指令顺序标识返回;
在读指令进入过滤流水级并访问多路组相联的写指令序列Bloom过滤器时,通过该读指令的访存地址索引该写指令序列Bloom过滤器对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组内所有路记录中最大的写指令顺序标识作为读指令的过滤写指令顺序标识;
比较该读指令的前递写指令顺序标识是否等于过滤写指令顺序标识,如果不相等则重执行该读指令。
进一步地,该方法还包括:
将重执行读指令访问一级高速数据缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令,即与重执行该读指令后得到的数据相关的其它指令;否则直接提交该读指令。
为了解决上述技术问题,本发明提供了一种实现读指令执行的装置,除了包括指令队列和寄存器堆外,还包括活跃写指令窗口、多路组相联的写指令序列Bloom过滤器以及第一比较器,其中:
指令队列和寄存器堆,用于通过加法器分别形成写指令的访存地址和读指令的访存地址;
活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路记录中最旧的写指令记录替换出,所述多路组相联的组为按照所述写指令的访存地址访问对应的组;在读指令的执行阶段,将选取的路记录对应的所述写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;
多路组相联的写指令序列Bloom过滤器,用于在所述写指令进入过滤流水级时于多路组相联的组内相应的路记录至少包含写指令顺序标识及地址标签的写指令的信息,并将该组的所有路中最旧的写指令记录替换出,所述多路组相联的组为按照所述写指令的访存地址访问对应的组;在读指令的执行阶段,将选取的路记录对应的所述写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;在所述读指令进入过滤流水级时,通过该读指令的访存地址被索引对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组所有路记录中最大的写指令顺序标识作为过滤写指令顺序标识输出到第一比较器的第二输入端;
第一比较器,用于将第一输入端输入的所述前递写指令顺序标识和第二输入端输入的所述过滤写指令顺序标识比较,如不相等则输出读指令重执行命令,如相等则输出执行读指令获取的数据作为该读指令相应写指令前递的数据。
进一步地,
活跃写指令窗口和多路组相联的写指令序列Bloom过滤器所记录的写指令顺序标识,采用预先分配的计数器,在写指令进入指令重命名流水级时,该计数器当前的计数值被赋值给该写指令的写指令顺序标识,同时计数值加一单位增量。
进一步地,该装置还包括先进先出队列,其中:
在活跃写指令窗口中,根据读指令的访存地址索引到对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中写指令顺序标识最大对应的路记录,将选取的路记录中的写数据作为前递的数据通过该先进先出队列返回;若判断没有命中项,则:
在多路组相联的写指令序列Bloom过滤器中,通过读指令的访存地址访问到对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取命中路记录中写指令顺序标识最大对应的路记录,将选取的路记录中的写数据作为前递的数据通过该先进先出队列返回。
进一步地,该装置还包括第二比较器,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如不相等,则输出重执行该读指令之后的数据相关指令的命令,该数据相关指令即与重执行该读指令后得到的数据相关的其它指令;如相等输出直接提交该读指令的命令。
本发明基于活跃写指令窗口的推测式访存数据前递机制,通过采用活跃写指令窗口进行推测式数据前递,并通过采用读指令重执行技术实现访存相关违例检测及采用SSBF用于实现对读指令重执行的过滤。由此,本发明可实现大范围的推测式访存数据前递来减少读指令的执行延迟,从而可有效地提高处理器读指令执行的性能。
附图说明
图1是本发明的活跃写指令窗口实施例的结构示意图;
图2是本发明的多路组相联的SSBF实施例的结构示意图;
图3为本发明的写指令执行装置实施例的结构示意图;
图4为本发明的读指令执行装置实施例的结构示意图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
本发明为实现读指令执行提供了一种采用多路组相联结构的活跃写指令窗口,如图1所示为采用两路(Way0,Way1)组相联结构的活跃写指令窗口实施例。其中,每一路表项包含:表项有效位(V)、数据字节使能位(BE)、写指令顺序标识(SSN)、地址标签(TAG)以及写数据(DATA)。
为了明确上述本发明的活跃写指令窗口实施例的工作原理,将其与传统的写指令队列(SQ,Store Queue)工作原理进行如下比较:
【写指令访存比较】
当写指令访问传统的SQ时,将按照程序顺序(Program Order)写入该队列中,如图1中θ1所示;
当写指令访问本发明的活跃写指令窗口时,按照该写指令的访存地址访问对应的组(即由Way0和Way1组成的组),并将相应表项中SSN最小的表项(即表示最旧的写指令)替换出活跃指令窗口,如图1中的θ2小于θ3而被替换出。
【读指令访存比较】
当读指令(L1)访问传统的写指令队列(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)。
在上述方法实施例中,在写指令执行之前还包括:
为每个写指令(Store)分配一个计数器(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作为SSNfwd返回;
在读指令进入过滤流水级并访问多路组相联的SSBF时,通过该读指令的访存地址索引该SSBF对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大的作为读指令的SSNfilter,若判断没有命中项,则返回该SSBF的组所有表项中SSN最大的作为读指令的SSNfilter;
判断该读指令的SSNfwd是否等于SSNfilter,如果不相等则重执行该读指令。
在上述方法实施例中,还包括:
将重执行读指令访问一级高速缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令;否则直接提交该读指令。
本发明通过使用基于值的读指令重执行技术(VBLRE,Value-Based LoadRe-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的第一输入端(in1);
多路组相联的SSBF在读指令进入过滤流水级时,通过该读指令的访存地址被索引该SSBF对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中项,则选取命中项中SSN最大的作为读指令的SSNfilter,若判断没有命中项,则返回该SSBF的组所有表项中SSN最大的作为读指令的SSNfilter输出到比较器1的第二输入端(in2);
比较器1,用于将第一输入端输入的SSNfwd和第二输入端输入的SSNfilter进行比较,不相等则输出读指令重执行命令,相等则输出执行读指令获取的数据。
在上述装置实施例中,还包括比较器2,其中:
比较器2,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如果不相等,则输出重执行该读指令之后的数据相关指令的命令;如相等输出直接提交该读指令的命令。
本发明通过采用基于活跃写指令窗口的推测式访存数据前递机制,有效地扩大了读指令的数据前递范围,从而避免大量读指令通过访问一级高速数据缓存来得到数据,减少读指令的执行延迟;通过采用读指令重执行技术实现访存相关违例检测,并采用SSBF实现对读指令重执行的过滤,从而减少需要重执行的读指令数量,减少不必要的执行开销;故本发明有效地提高了读指令的执行效率,从而提高了处理器的整体性能。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
Claims (11)
1.一种实现读指令执行的方法,其特征在于,包括:
在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路中最旧的写指令记录替换出;所述多路组相联的活跃写指令窗口的组为按照所述写指令的访存地址访问活跃写指令窗口相应的组;
在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录至少包含写指令顺序标识及地址标签的写指令的信息,并将该组的所有路中最旧的写指令记录替换出;所述多路组相联的写指令序列Bloom过滤器中相应的组为按照所述写指令的访存地址访问所述多路组相联的写指令序列Bloom过滤器相应的组;
在读指令的执行阶段,根据所述读指令的访存地址索引到所述活跃写指令窗口对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录;若判断没有命中路记录,则通过该访存地址访问到所述多路组相联的写指令序列Bloom过滤器中对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取所述命中项中写指令顺序标识最大对应的路记录;将选取的所述路记录中的写数据作为前递数据返回。
2.按照权利要求1所述的方法,其特征在于,在所述写指令的执行阶段之前还包括:
为每个写指令分配一个计数器,作为写指令唯一的顺序标识;当写指令进入指令重命名流水级时,将相应的计数器当前的计数值赋值给该写指令的写指令顺序标识,并将该计数器加一单位增量。
3.按照权利要求2所述的方法,其特征在于,所述采用多路组相联的活跃写指令窗口的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括:
按照所述写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的所述写指令顺序标识、所述地址标签及所述写数据写入该组相应路的表项中,同时将所述活跃写指令窗口的组内所有表项中写指令顺序标识最小的记录表项替换出。
4.按照权利要求3所述的方法,其特征在于,所述采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录至少包含写指令顺序标识及地址标签写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括:
按照所述写指令的访存地址访问所述多路组相联的写指令序列Bloom过滤器相应的组,并将该写指令的所述写指令顺序标识及所述地址标签写入该组相应路的表项中,同时将所述多路组相联的写指令序列Bloom过滤器的组内所有表项中写指令顺序标识最小的记录表项替换出。
5.按照权利要求1至4任一项所述的方法,其特征在于,还包括:
在所述读指令进入过滤流水级时,通过所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器过滤读指令的重执行。
6.按照权利要求5所述的方法,其特征在于,所述通过所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器过滤读指令的重执行,具体包括:
在所述读指令的执行阶段,将选取的所述路记录中所述写指令顺序标识作为前递写指令顺序标识返回;
在所述读指令进入过滤流水级并访问所述多路组相联的写指令序列Bloom过滤器时,通过该读指令的访存地址索引该写指令序列Bloom过滤器对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组内所有路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识;
比较该读指令的所述前递写指令顺序标识是否等于所述过滤写指令顺序标识,如果不相等则重执行该读指令。
7.按照权利要求6所述的方法,其特征在于,还包括:
将重执行读指令访问一级高速数据缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令,即与重执行该读指令后得到的数据相关的其它指令;否则直接提交该读指令。
8.一种实现读指令执行的装置,包括指令队列和寄存器堆,其特征在于,还包括活跃写指令窗口、多路组相联的写指令序列Bloom过滤器以及第一比较器,其中:
指令队列和寄存器堆,用于通过加法器分别形成写指令的访存地址和读指令的访存地址;
活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录至少包含写指令顺序标识、地址标签以及写数据的写指令的信息,并将该组的所有路记录中最旧的写指令记录替换出,所述多路组相联的组为按照所述写指令的访存地址访问对应的组;在读指令的执行阶段,将选取的路记录对应的所述写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;
多路组相联的写指令序列Bloom过滤器,用于在所述写指令进入过滤流水级时于多路组相联的组内相应的路记录至少包含写指令顺序标识及地址标签的写指令的信息,并将该组的所有路中最旧的写指令记录替换出,所述多路组相联的组为按照所述写指令的访存地址访问对应的组;在读指令的执行阶段,将选取的路记录对应的所述写指令顺序标识作为前递写指令顺序标识输出到第一比较器的第一输入端;在所述读指令进入过滤流水级时,通过该读指令的访存地址被索引对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组所有路记录中最大的写指令顺序标识作为过滤写指令顺序标识输出到第一比较器的第二输入端;
第一比较器,用于将第一输入端输入的所述前递写指令顺序标识和第二输入端输入的所述过滤写指令顺序标识比较,如不相等则输出读指令重执行命令,如相等则输出执行读指令获取的数据作为该读指令相应写指令前递的数据。
9.按照权利要求8所述的装置,其特征在于,
所述活跃写指令窗口和所述多路组相联的写指令序列Bloom过滤器所记录的所述写指令顺序标识,采用预先分配的计数器,在所述写指令进入指令重命名流水级时,该计数器当前的计数值被赋值给该写指令的所述写指令顺序标识,同时所述计数值加一单位增量。
10.按照权利要求9所述的装置,其特征在于,还包括先进先出队列,其中:
在所述活跃写指令窗口中,根据所述读指令的访存地址索引到对应的组,并通过该访存地址与该组中每一路记录的所述地址标签比较,若判断有多个命中路记录,则选取命中路记录中所述写指令顺序标识最大对应的路记录,将选取的路记录中的所述写数据作为所述前递的数据通过该先进先出队列返回;若判断没有命中项,则:
在所述多路组相联的写指令序列Bloom过滤器中,通过所述读指令的访存地址访问到对应的组,并将该访存地址与该组中每一路记录的所述地址标签比较,如判断有多个命中路记录,则选取命中路记录中所述写指令顺序标识最大对应的路记录,将选取的路记录中的所述写数据作为所述前递的数据通过该先进先出队列返回。
11.按照权利要求10所述的装置,其特征在于,还包括第二比较器,用于将重执行读指令访问一级高速数据缓存得到的数据与执行读指令时得到的数据比较,如不相等,则输出重执行该读指令之后的数据相关指令的命令,所述数据相关指令即与重执行该读指令后得到的数据相关的其它指令;如相等输出直接提交该读指令的命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110321857.XA CN102364431B (zh) | 2011-10-20 | 2011-10-20 | 一种实现读指令执行的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110321857.XA CN102364431B (zh) | 2011-10-20 | 2011-10-20 | 一种实现读指令执行的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102364431A CN102364431A (zh) | 2012-02-29 |
CN102364431B true CN102364431B (zh) | 2014-09-10 |
Family
ID=45690997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110321857.XA Active CN102364431B (zh) | 2011-10-20 | 2011-10-20 | 一种实现读指令执行的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102364431B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019946B (zh) * | 2012-11-26 | 2016-06-01 | 北京北大众志微系统科技有限责任公司 | 一种访存指令的执行装置 |
CN103019945B (zh) * | 2012-11-26 | 2016-08-17 | 北京北大众志微系统科技有限责任公司 | 一种访存指令的执行方法 |
GB2509830B (en) | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
CN104636268B (zh) * | 2013-11-08 | 2019-07-26 | 上海芯豪微电子有限公司 | 一种可重构缓存产品与方法 |
US9817776B2 (en) * | 2015-01-19 | 2017-11-14 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN110704409A (zh) * | 2019-09-21 | 2020-01-17 | 广东毓秀科技有限公司 | 一种通过数据三棱镜算法进行轨交数据质量优化的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195809A (zh) * | 1997-04-10 | 1998-10-14 | 国际商业机器公司 | Store(存数)指令结果的前送 |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6393536B1 (en) * | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US20080288752A1 (en) * | 2006-11-16 | 2008-11-20 | Cox Jason A | Design structure for forwarding store data to loads in a pipelined processor |
-
2011
- 2011-10-20 CN CN201110321857.XA patent/CN102364431B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195809A (zh) * | 1997-04-10 | 1998-10-14 | 国际商业机器公司 | Store(存数)指令结果的前送 |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6393536B1 (en) * | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US20080288752A1 (en) * | 2006-11-16 | 2008-11-20 | Cox Jason A | Design structure for forwarding store data to loads in a pipelined processor |
Non-Patent Citations (1)
Title |
---|
张栚滈 等.Active Store Window:Enabling Far Store-Load Forwarding with Scalability and Complexity-Efficiency》.《Journal of computer science and technology》.2012,第27卷(第4期),769-780. * |
Also Published As
Publication number | Publication date |
---|---|
CN102364431A (zh) | 2012-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102364431B (zh) | 一种实现读指令执行的方法及装置 | |
US7418552B2 (en) | Memory disambiguation for large instruction windows | |
CN101416163B (zh) | 通过选择重新执行来检测瞬态错误 | |
US10310977B2 (en) | Facilitating recording a trace file of code execution using a processor cache | |
US10019381B2 (en) | Cache control to reduce transaction roll back | |
CN102937937B (zh) | 数据预取器及预取数据至高速缓存存储器的方法 | |
US7966478B2 (en) | Limiting entries in load reorder queue searched for snoop check to between snoop peril and tail pointers | |
US20130007541A1 (en) | Preemptive memory repair based on multi-symbol, multi-scrub cycle analysis | |
US20090077540A1 (en) | Atomicity Violation Detection Using Access Interleaving Invariants | |
Parashar et al. | A complexity-effective approach to alu bandwidth enhancement for instruction-level temporal redundancy | |
CN101645034B (zh) | 用于检测数据存取违例的方法和装置 | |
CN107025130B (zh) | 处理节点、计算机系统及事务冲突检测方法 | |
CN107710172B (zh) | 存储器的访问系统及方法 | |
CN101872299B (zh) | 冲突预测实现方法及所用冲突预测处理装置事务存储器 | |
CN1333334C (zh) | 微处理器的整数单元中五级容错流水结构的实现方法 | |
US6701484B1 (en) | Register file with delayed parity check | |
JPH02234242A (ja) | 部分書込み制御装置 | |
CN102799414B (zh) | 改进推测多线程的方法及装置 | |
CN104035898A (zh) | 一种基于vliw类型处理器的访存系统 | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
CN103019946B (zh) | 一种访存指令的执行装置 | |
CN103019945B (zh) | 一种访存指令的执行方法 | |
CN104657153B (zh) | 一种基于签名技术的硬件事务内存系统 | |
EP2348400A1 (en) | Arithmetic processor, information processor, and pipeline control method of arithmetic processor | |
JP2020052862A (ja) | 計算機および計算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160330 Address after: 100080 Beijing City, Haidian District Zhongguancun No. 151 North Street Yanyuan resources building room 1107 Patentee after: Beijing Zhongzhi core technology Co. Ltd. Address before: 100080, Beijing Haidian District Zhongguancun 151 North Street, building 11, resources Patentee before: Beida Zhongzhi Microsystem Science and Technology Co., Ltd., Beijing |