适应性加载合并

文档序号:1815551 发布日期:2021-11-09 浏览:6次 >En<

阅读说明:本技术 适应性加载合并 (Adaptive load merging ) 是由 玛布·埃尤勒 米希尔·威廉·万·托尔 于 2021-04-28 设计创作,主要内容包括:本公开涉及适应性加载合并。公开了用于处理加载请求的装置和方法。响应于指定要从存储器取回的数据项的加载请求,取回包括由该加载请求所识别的数据项的一系列数据项。加载请求在加载请求被执行之前被缓冲。合并电路为加载请求和在未决加载缓冲电路中缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真。当由一个或多个其他加载请求的集合识别的所有数据项都被包括在该一系列数据项内时,地址邻近性条件为真。当地址邻近性条件为真时,该一个或多个其他加载请求的集合被抑制。合并预测电路基于合并电路先前对加载请求的处理,为每个加载请求生成合并预测。(The present disclosure relates to adaptive load coalescing. Apparatus and methods for processing load requests are disclosed. In response to a load request specifying a data item to be retrieved from memory, a series of data items including the data item identified by the load request are retrieved. The load request is buffered before the load request is executed. The merge circuit determines whether the address proximity condition is true for the load request and a set of one or more other load requests buffered in pending load buffer circuitry. The address proximity condition is true when all data items identified by the set of one or more other load requests are included within the series of data items. When the address proximity condition is true, the set of one or more other load requests is suppressed. The merge prediction circuit generates a merge prediction for each load request based on previous processing of the load request by the merge circuit.)

适应性加载合并

技术领域

本技术涉及数据处理。更具体而言,本技术涉及数据处理装置中对加载请求的处理。

背景技术

在执行加载操作时,数据处理装置可被提供以这样的能力,即把已被识别为具有适当程度的空间邻近性的某些加载合并在一起,使得它们可被同时服务。更具体而言,可以识别出两个加载请求之间的空间邻近性是充分接近的,使得只需要执行一个存储器访问,该存储器访问将返回空间上邻近的加载请求的每一者所请求的数据。

发明内容

至少一些示例提供了一种装置,包括:加载处理电路,响应于指定数据项的加载请求,从存储器中取回包括由所述加载请求识别的数据项的一系列数据项;未决加载缓冲电路,在加载请求被所述加载处理电路执行之前缓冲加载请求,以从存储器取回由加载请求指定的数据项;合并电路,为所述加载请求和在所述未决加载缓冲电路中缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真,其中所述合并电路响应于所述地址邻近性条件为真而抑制所述加载处理电路对所述一个或多个其他加载请求的集合的处理;以及合并预测电路,基于所述合并电路先前对加载请求的处理,为所述加载请求生成合并预测。

至少一些示例提供了一种数据处理的方法,包括:在加载请求被执行之前缓冲加载请求以从存储器取回由加载请求指定的数据项,其中执行指定数据项的加载请求包括从存储器取回包括由该加载请求识别的数据项的一系列数据项;为所述加载请求和缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真;当所述地址邻近性条件为真时抑制所述一个或多个其他加载请求的集合的执行;并且基于先前对加载请求的处理为所述加载请求生成合并预测。

至少一些示例提供了一种装置,包括:用于在加载请求被执行之前缓冲加载请求以从存储器取回由加载请求指定的数据项的装置,其中执行指定数据项的加载请求包括从存储器取回包括由该加载请求识别的数据项的一系列数据项;用于为所述加载请求和缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真的装置,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真;用于当所述地址邻近性条件为真时抑制所述一个或多个其他加载请求的集合的执行的装置;用于基于先前对加载请求的处理为所述加载请求生成合并预测的装置。

附图说明

将参考如将要结合以下描述来阅读的附图中所示的本技术的实施例来仅作为示例进一步描述本技术,附图中:

图1示意性图示了根据一些示例实施例的装置,包括具有合并一些未决加载的能力的加载处理电路;

图2A示意性图示了根据一些示例实施例的装置,包括具有合并一些未决加载的能力的加载处理电路;

图2B示意性图示了根据一些示例实施例的未决加载缓冲器和合并电路的交互;

图3示意性图示了根据一些示例实施例的装置,包括具有合并一些未决加载的能力的加载处理电路;

图4A示意性图示了根据一些示例实施例的合并预测电路;

图4B示意性图示了根据一些示例实施例的合并预测电路;

图5A示意性图示了一些示例实施例中的散列生成电路和布隆过滤器电路;

图5B示意性图示了根据一些示例实施例的装置;并且

图6是示出根据一些示例实施例采取的步骤的序列的流程图。

具体实施方式

在这里的一个示例中,有一种装置,包括:加载处理电路,响应于指定数据项的加载请求,从存储器中取回包括由所述加载请求识别的数据项的一系列数据项;未决加载缓冲电路,在加载请求被所述加载处理电路执行之前缓冲加载请求,以从存储器取回由加载请求指定的数据项;合并电路,为所述加载请求和在所述未决加载缓冲电路中缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真,其中所述合并电路响应于所述地址邻近性条件为真而抑制所述加载处理电路对所述一个或多个其他加载请求的集合的处理;以及合并预测电路,基于所述合并电路先前对加载请求的处理,为所述加载请求生成合并预测。

合并加载请求是基于识别出有关加载请求在空间上充分邻近(就它们所引用的存储器位置而言),以至于可以通过一个“合并的”存储器访问来服务它们。这个空间邻近性在本文中可以被称为“地址邻近性条件”对于有关加载请求为真。以这种方式合并加载请求的机会出现在这样的系统中:在该系统中,加载处理电路响应于指定要从存储器取回的数据项的加载请求,通常取回不仅仅是该数据项本身作为触发的存储器访问的一部分。这是由于通过将存储器访问约束到特定数据大小,例如使其与系统中的缓存线大小对齐,从而获得了效率(虽然本技术并不限于这个特定的选择,其他颗粒的存储器也同样适用)。一般而言,虽然使用合并电路来确定未决加载请求是否可能被合并,具有一定的成本,但可能存在这样的情况,其中尽管通过合并电路的处理招致了时延的增大,但这可能会被存储器访问带宽的改善所抵消,而这种改善可能是实质性的,足以获得整体性能提高,例如,其中相当一部分的加载指令可以被合并。尽管如此,本技术的发明人已经认识到,当只有相对少量的加载指令可被成功融合(合并)时,由于额外的合并处理而引起的时延的增大可能会超过可以获得的益处。本技术因此提出了提供合并预测电路,其被布置为基于合并电路先前对加载请求的处理,生成对于给定加载请求是否将被与其他加载请求合并的预测。这个合并预测随后可被装置以多种方式利用,例如用来修改其关于特定加载请求的行为。

在一些实施例中,合并电路响应于不合并的合并预测而抑制合并电路对加载请求的处理。从而,作为加载请求不会与其他加载请求合并的所生成预测的一种可能的响应,合并电路可以避免处理此加载请求,并且因此在预期该加载请求不会合并时,可以节省处理工作。

关于合并电路先前对加载请求的处理的信息的收集可通过多种方式来提供,但在一些实施例中,该装置还包括从合并电路到合并预测电路的反馈路径,其中,合并电路响应于地址邻近性条件的有效性,经由反馈路径向合并预测电路通知取决于加载请求的地址邻近性条件的有效性的合并结果。因此,基于合并电路对于加载请求的地址邻近性条件的确定,合并电路可以向合并预测电路通知合并结果。取决于配置,这可以是正向或负向配置的,即,可以布置成合并电路向合并预测电路具体指示出尚未被合并的加载请求,或者,合并电路可以向合并预测电路通知那些已被合并的加载请求。合并预测电路随后可以适当地收集此信息,它可以基于该信息来进行未来的预测。

合并预测电路可以被各种配置,但在一些实施例中,合并预测电路包括合并历史存储,以持有取决于合并电路先前对加载请求的处理的内容,并且合并预测电路被布置为基于合并历史存储的内容来生成对加载请求的合并预测。

合并历史存储所持有的内容可以采取多种形式,但在一些实施例中,合并历史存储所持有的内容包括概率数据结构。在一些实施例中,此内容可以明确地对应于先前的合并历史结果,但在其他实施例中,该内容也可以以概率方式被化简。概率化的历史存储减少了所需的存储容量。

在一些示例实施例中,合并历史存储包括布隆过滤器。

在一些实施例中,该装置还包括用于生成概率数据结构的内容的散列生成单元,其中散列生成单元包括散列序列器,以在多个散列阶段中生成概率数据结构的内容。布置散列序列来在多个散列阶段中生成概率数据结构的内容可以使硬件实现更简单。

在概率数据结构(例如布隆过滤器)取决于不对称地捕捉合并历史的演进数据结构的情况下,即布隆过滤器可被布置为提供关于特定加载是否必定能够被合并或者其是否可能(但不确定)不合并的信息,数据结构的演进性质意味着假阳性率(例如合并加载被标记为不合并)一般将随着时间的推移而增大。因此,在一些实施例中,该装置包括重置电路,以响应于以下情况中的至少一者来重置合并历史存储的内容:经过预定的时间段;接收到情境切换指示;和/或达到合并历史存储的预定充满度。

如上所述,可以有多种方式来布置该装置以利用由合并预测电路生成的合并预测,但在一些实施例中,该装置还包括通向加载处理电路并且绕过合并电路的绕过路径,其中合并预测电路响应于不合并的合并预测,使得加载请求经由绕过路径被提供到加载处理电路。从而,绕过路径的提供使得已被识别为不合并的加载请求能够直接前进到加载处理电路,而不被合并电路处理。

在一些实施例中,该装置还包括:第二加载处理电路,响应于指定数据项的加载请求,从存储器中取回包括由该加载请求识别的数据项的一系列数据项;以及加载处理选择电路,响应于由合并预测电路生成的合并预测,依从于合并预测,将加载请求经由未决加载缓冲电路引导到加载处理电路,或者引导到第二加载处理电路。从而,根据这种实施例,该装置的加载处理电路被“加倍”(通过提供第二加载处理电路),并且加载处理选择电路然后可以使用合并预测来或者将加载请求经由未决加载缓冲电路提供给加载处理电路(并且因此要经由合并电路的处理而受到潜在的合并),或者直接提供给第二加载处理电路(以便甚至不尝试合并)。

在一些这样的实施例中,该装置还包括:第一加载请求发出队列,以馈送给未决加载缓冲电路;以及第二加载请求发出队列,以馈送给第二加载处理电路,其中加载处理选择电路响应于由合并预测电路生成的合并预测,依从于合并预测,将加载请求引导到第一加载请求发出队列或者第二加载请求发出队列。此布置从而实现了通往(第一)加载处理电路和第二加载处理电路的路径的更深一级的解耦,这是通过在它们的每一者之前设有专用的发出队列来实现的,即用于(第一)加载处理电路路径的“合并”发出队列和通向第二加载处理电路的“非合并”发出队列。

生成的合并预测也可被存储在装置中的各种位置中,并且在一些实施例中,其中加载请求源自于加载指令,装置还包括指令缓存存储,以存储经常使用的指令的条目,其中指令缓存存储被布置为与加载指令相关联地存储合并预测。这从而使得当再次遇到加载指令时,能够高效地利用合并预测,并且具有降低的时延。

指令缓存存储可例如是微操作缓存。

在一些实施例中,该装置还包括数据依从性确定电路,以确定指令之间的数据依从性,其中合并预测电路被布置成依从于由数据依从性确定电路确定的至少一个数据依从性而生成合并预测。已经发现,在某些情况下,与指令之间的数据依从性有关的信息对于确定合并的可能性是有用的。一般而言,有一些加载指令直接(或以很低程度的间接)向其他附近加载指令提供输入值,对于访问指针的加载来说,往往不会发生合并。因此,由数据依从性确定电路生成的信息可以提供一个基础,用于基于指令的依从性和/或什么依从指令可能依从于它们来将指令分类为是合并的还是非合并的。

数据依从性确定电路可例如包括寄存器重命名电路。

在一些实施例中,合并预测电路被布置为默认为加载请求生成合并的合并预测。由于这必须至少一次通过合并硬件发送加载指令以确定与飞行中的其他加载合并的概率,所以这对应于装置的默认行为是合并。

在这里的一个示例中,有一种数据处理的方法,包括:在加载请求被执行之前缓冲加载请求以从存储器取回由加载请求指定的数据项,其中执行指定数据项的加载请求包括从存储器取回包括由该加载请求识别的数据项的一系列数据项;为所述加载请求和缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真;当所述地址邻近性条件为真时抑制所述一个或多个其他加载请求的集合的执行;并且基于先前对加载请求的处理为所述加载请求生成合并预测。

在这里的一个示例中,有一种装置,包括:用于在加载请求被执行之前缓冲加载请求以从存储器取回由加载请求指定的数据项的装置,其中执行指定数据项的加载请求包括从存储器取回包括由该加载请求识别的数据项的一系列数据项;用于为所述加载请求和缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真的装置,其中,当由所述一个或多个其他加载请求的集合识别的所有数据项都被包括在所述一系列数据项内时,所述地址邻近性条件为真;用于当所述地址邻近性条件为真时抑制所述一个或多个其他加载请求的集合的执行的装置;用于基于先前对加载请求的处理为所述加载请求生成合并预测的装置。

现在参考附图描述一些特定实施例。

图1示意性图示了一种装置10,该装置被布置为接收加载请求(例如由数据处理电路响应于正在执行的程序代码中所识别的加载指令而生成),并生成存储器访问以服务这些加载请求。装置10包括加载单元12,该加载单元12依从于所接收的加载请求而生成存储器访问。装置10还包括未决加载缓冲器14,在由加载单元12处理之前,接收到的加载请求被保持在该未决加载缓冲器14中。装置10还包括合并器(合并电路)16,该合并器(合并电路)16从未决加载缓冲器14接收内容,并且在可能的情况下,合并一个或多个加载请求,使得它们被加载单元12作为单个项目处理,具体地是只生成单个存储器访问请求。合并器16被布置为基于地址邻近性条件来确定两个(或更多个)加载请求是否可被合并。地址邻近性条件是基于加载单元12的布置来定义的,即响应于给定的(个体)加载请求,加载单元生成存储器访问,该存储器访问使得一系列数据项被从存储器中被取回。例如,在一些实施例中,这一系列数据项可对应于装置10形成其一部分的更宽广数据处理系统中的缓存线大小。也就是说,数据是以缓存线大小的分块从存储器中取回的。从而,当第二(或更多)加载请求涉及在任何情况下将被另一(第一)未决请求使得从存储器取回的数据项时,就出现了合并未决加载请求的机会,这是由于以下事实:第一加载请求将引起一系列数据项的取回,其中该系列数据项包括由第二(或更多)加载请求指定的(一个或多个)数据项。在缓存线大小数据取回的示例中,第二(或更多)加载请求涉及与第一加载请求相同的缓存线内的数据项。注意“第一”和“第二”加载请求的标签在此仅用于区分加载请求,而在由合并器16处理时并不对它们施加必要的排序。

装置10还包括合并预测器,该合并预测器被布置为接收传入的加载请求的指示(例如加载指令地址的至少一部分),并且基于与加载请求相关的信息来生成基于先前遇到该加载请求的合并预测。装置10还包括路径选择电路20,其被布置为将传入的加载请求传递到未决加载缓冲器14或者直接传递到加载单元12。路径的这个选择是基于合并预测器电路的输出而进行的。因此,基于装置10先前处理给定加载请求的方式,路径选择电路20选择该加载请求在通过装置时将会采取的路线。具体而言,当预期加载请求不会合并时,可以直接将加载请求传递到加载单元12,并且因此可以避免与经由未决加载缓冲器14和合并器16的路径相关联的处理。

图2A示意性图示了一些示例实施例中的装置50。以本领域普通技术人员将熟悉的方式,装置50被以管线方式布置来处理指令,并从而一系列阶段,即,取得阶段52、解码阶段54、微操作缓存56、重命名阶段58以及指令队列60。本领域普通技术人员还将理解,许多其他组件和阶段是可能的,但图2A中所示的选择仅仅是为了理解本技术的目的而具有代表性。根据图示的布置,取得阶段52使得来自程序代码中定义的指令的序列的指令被从存储器取回,并且这些指令被传递到解码阶段54进行解码。解码后的指令可被存储在微操作缓存56内,然后由重命名阶段58处理(其中装置50是无序数据处理装置)。在指令队列60中排队的指令随后可取决于其类型被传递到若干个目的地,但本公开的重点是处理生成加载请求的加载指令,并且这种指令从指令队列60传递到寄存器读取阶段62,然后传递到地址生成阶段64。这样,可以看出,装置50的布置包括“早期”地址解析(关于加载单元72的操作),这种早期地址解析在本技术的情境中是有用的(即,当寻求将一些未决加载合并时),因为它为装置提供了飞行中的未决加载的充分(同时)可见性(当被保持在未决加载缓冲器68中时),以便就哪些加载要归组在一起(合并)做出及时的决定。加载指令(将引起加载请求)的指示也被从解码阶段52传递到合并预测器66,该合并预测器66基于加载指令的这个指示(例如加载指令地址)被布置为生成合并预测,即,是否预期此加载指令会导致将与至少一个其他共同未决加载请求合并的加载请求。这是基于合并电路(即合并器70)先前对加载请求的处理来完成的。这个合并预测被通知给地址生成电路64,该地址生成电路64基于接收到的合并预测来为每个加载请求选择前向路径。这些前向路径通向加载单元72。第一路径是经由未决加载缓冲器68和合并器70,并且第二路径直接从地址生成电路64通向加载单元72。因此,一般而言,当预期由地址生成电路64处理的加载请求会合并时,那么它经由第一路径(经由未决加载缓冲器68和合并器70,以便尝试与保持在未决加载缓冲器68中的其他未决加载合并)被传递。或者,当预期未决加载将不会合并时,其被直接传递到加载单元72。由于有必要至少一次通过合并硬件发送未决加载以便确定其与飞行中的其他未决加载合并的概率,所以装置50的默认行为是合并尝试,即,最初所有未决载被默认认为是合并加载,并且将经由未决加载缓冲器68和合并器70传递。然而,一旦未决加载到达合并器70,并且确定其合并失败,那么合并器70就将此失败通知给合并预测器66。合并预测器66于是建立指示出过去合并失败的那些加载的记录,并且在此基础上当它们再次被遇到时,从合并预测器66到地址生成电路64的信号可以使这些非合并加载请求绕过合并电路70并且直接前进到加载单元72。通过减少通过未决加载缓冲器的未决加载的数目,这也使得未决加载缓冲器68的结构和比较未决加载的多种排列组合的搜索逻辑能够更加简单。

还要注意,合并预测器66的输出在图2A中也被示为被传递给解码电路54。从而,解码电路一方面可以用其合并预测的指示来注释已解码的加载指令,另一方面它还可以为至少一些经常解码的加载指令保持合并预测的记录,从而使得这些可被更快地解码。合并预测器66的输出也可以被传递给任何其他管线阶段(图2A中的虚线),或者用于与某些加载指令相关联地存储(例如在微操作缓存中),或者用于在已解码的加载指令经过管线时利用其合并预测的指示对其进行注释(例如出于时机目的,在一些情况下,这可以优选地在解码阶段54的下游执行)。合并预测器66的各种配置,特别是它存储与先前加载请求如何被处理有关的信息的方式是可以设想的,并且将在下文参考图4A、4B、5A和5B更详细地论述。

到达加载单元72的未决加载随后引起数据取回。该装置包括活跃加载存储74,在其中保持着已发起、但尚未完成对存储器系统的访问的飞行中加载的记录。对加载请求的处理开始于加载单元72将请求传递给转化后备缓冲器(translation lookaside buffer,TLB)查找和故障检查电路76,以便执行所需的查找(用于从虚拟寻址转换到物理寻址)并对任何故障作出适当的响应。注意,可以另外提供各种缓存级别(未图示),这些缓存可以是虚拟索引的,或者是物理索引的,并且对TLB的访问从而可被相应地修改。当相关系列的数据项被取回时,例如在数据缓存访问之后,即或者作为缓存命中的结果,或者通过对存储器系统的进一步级别的访问(未图示),数据读取和多路复用电路78处理所得到的数据。与加载请求本身相对应的数据项被提取出来并传递给选择器86。由存储器访问产生的一系列数据项经由数据缓冲器80被传递到去合并和格式化电路82。去合并电路82从合并器70接收融合(合并)的加载请求的指示,其中此指示示出了该系列数据项的哪些元素要被额外提取(以便提供与由于与名义上被处理的加载请求合并而被抑制的一个或多个其他加载请求相对应的数据项)。去合并和格式化电路82从而为合并的加载请求提取所需的多个数据项。结果随后经由数据缓冲器84被传递到选择器86的另一输入。选择器86从而接收来自数据缓冲器84的一个输入和来自数据读取和多路复用电路78的一个输入。在这两者之间的选择由加载单元72提供的输入控制,表明这是否是被合并的加载。所得到的数据随后被存储在结果缓存88中,该结果缓存88也可以向寄存器读取阶段62提供输入,作为其处理的一部分,以确定其接收的加载请求的地址。

图2B示意性图示了根据一些示例实施例的未决加载缓冲器和合并电路的交互。未决加载缓冲器90包括若干个条目,每个条目可以保存一未决加载(即可以保存与已被指示但尚未被执行的加载有关的信息)。在图2B的示例中,未决加载缓冲器90具有八个条目,但在其他实施例中,未决加载缓冲器可以具有比这更多的条目,或者可以具有比这更少的条目——本技术不受限于未决加载缓冲器中的任何特定数目的条目。每个条目被示为包括主部分91和合并指示92。主部分91保存与各个加载有关的上述信息(特别是该加载将访问的地址),并且合并指示92用于标记那些已被识别为与未决加载缓冲器中的其他加载合并的加载。在图2B的示例中,缓冲器中最老的未决加载提供了地址比较的一部分,而另一部分则由缓冲器中其他(七个)条目的每一者的地址提供。地址比较电路93将最老的未决加载的地址与缓冲器中的每个其他未决加载的地址进行比较。这个比较可以只检查每个地址的一部分。例如,在加载单元被配置为以缓存线为基础从存储器发起加载的情况下,可以比较地址的上部分,以确定两个加载地址是否将通过取回覆盖这两个地址的单一缓存线来被服务。由地址比较电路93执行的地址比较的结果被通知给合并控制电路94。当在最老的未决加载的地址和其他未决加载之间没有(足够接近的)匹配时,合并控制94将最老的未决加载传递给加载单元,并且其被从未决加载缓冲器中移除(在实践中可以简单地允许该条目在未决加载缓冲器中被覆写)。合并控制94还通知合并预测器此加载合并失败。然而,当在最老的未决加载的地址和其他未决加载之间发现至少一个(足够接近的)匹配时,合并控制94为匹配的一个或多个其他未决加载更新合并指示92。这些其他未决加载从而被标记为已经与未决加载缓冲器的管线中在它们前面的另一加载进行了合并。当某个未决加载成为最老的未决加载时,合并指示92被合并控制电路94接收,合并控制电路94随后可将此加载作为合并加载通知给加载单元(如上所述)。不过,对已经合并的加载与未决加载缓冲器的内容的进一步地址比较被执行,因为在这期间一个或多个未决加载可能已到达,它们也可以被合并。

图3示意性图示了一些示例实施例中的装置100。与图2A中的示意性图示相比,图3的示例装置100没有示出在指令队列102之前的管线阶段(但这仅仅是为了这里论述的清晰和简洁)。指令队列102中的加载指令被指示(例如通过指令地址)给合并预测器104,合并预测器104基于该指示生成合并预测。与图2A的示例中一样,合并预测器可以以各种方式来实现这一点,并且它可以以各种方式来存储其信息,这些将在下文参考图4A、4B、5A和5B更详细地论述。生成的合并预测被通知给路径选择器106,路径选择器106随后使得加载请求遵循两条路径之一通过装置100。根据第一路径,即合并的预测所导致的路径,未决加载请求被传递到合并发出队列(coalescing issue queue,CIQ)108。或者,不合并的预测使得路径选择器106将加载请求传递到非合并发出队列(non-coalescing issue queue,NCIQ)110。来自CIQ 108或NCIQ 110的加载请求利用寄存器读取阶段112。此后,经由CIQ 108传递的加载请求被传递到寄存器读取阶段112之外,去到地址生成阶段114。此后它们进入未决加载缓冲器116,在该缓冲器中同时保持有若干未决加载请求。合并器电路118在确定给定的加载请求是否能被合并时参考未决加载缓冲器116的内容。当它不能时,这个事实被通知给合并预测器104,合并预测器104建立起先前合并失败的那些加载请求的记录,以便生成其合并预测。由于已经与另一个加载请求合并而未被合并器118抑制的未决加载请求被传递到加载单元120,并且该装置在其活跃加载存储122中维持活跃加载的记录。与上文关于图2A描述的示例实施例的情况中一样,加载单元120随后将未决加载传递到TLB查找和故障检查电路124。数据读取和多路复用电路126提取对应于加载请求本身的数据项,并将其传递给选择器134。由存储器访问产生的一系列数据项经由数据缓冲器128被传递到去合并和格式化电路130。去合并和格式化电路130还接收来自合并器118的输入,指示出所执行的合并的性质(即应当提取哪些数据项),这样它于是就可以从取回的那一系列数据项(例如缓存线)中去合并所需的数据项。这些去合并的数据项随后经由数据缓冲器132被传递到选择器134。

被预测为非合并的未决加载请求从NCIQ 110经由寄存器读取阶段112直接传递到加载单元140。由于这些加载请求被预测为非合并的,因此不需要早期地址生成,并且因此在加载单元140之后才放置地址生成阶段142,使得服务这些加载请求所需的存储器访问能够被更早地启动,从而避免了与合并路径的早期地址生成相关联的时延。加载单元140还在活跃加载存储144中维持其活跃加载的记录。地址生成142的结果被传递到TLB查找和故障检查电路124,然后传递到数据读取和多路复用电路126。非合并请求的结果直接从数据读取和多路复用电路126传递到选择器134。在加载单元140的控制下,选择器然后将其输入之一传递到结果缓存136,该缓存的内容可由寄存器读取阶段112在其地址解析的作用中加以利用。

图4A示意性地更详细图示了根据一些示例实施例的合并预测器150的配置。合并预测器150被布置为接收加载指令的指示,在图示的实施例中,该指示包括地址的子集(比特[17:2])。此信息被比较电路152接收,该比较电路152从合并历史存储154接收另一个输入。比较电路152将加载指令地址信息与合并存储历史154的内容进行比较(即比较电路152具有合并存储历史154中所有历史条目的可见性,并与传入的加载指令地址进行比较),并在此基础上生成对于此加载指令的预测(合并的或不合并的)。先前的合并结果导致对合并历史存储154的内容进行更新。这些原则上可以是对先前遇到的加载指令的合并结果的显式记录,或者可以限制到一个特定结果,例如非合并结果。然而,在其他实施例中,在合并历史存储中维持合并结果的记录也是可能的。一般而言,合并历史可以是所有合并结果的显式记录、非合并结果的记录、合并结果的记录,或者是其中任何一种的概率表示。

图4B示意性图示了合并预测器160的更多组件,事实上该合并预测器160可以是与图4A的合并预测器150相同的合并预测器,但在图4B中关注了不同的功能。特别地,合并预测器160,除了合并历史存储162a-d之外,还被示为包括更新控制164。更新控制可以从一个或多个可能的输入接收信息,在图4B中示为情境切换信号、定时器以及合并结果(包括与加载指令地址有关的信息)。在此基础上,更新控制164修改合并历史存储162a-d的内容。一般而言,合并结果会导致对合并历史存储的更新,该合并历史存储已经在上面描述过(即这可以是所有合并结果的显式记录,非合并结果的记录,合并结果的记录,或者是其中任何一种的概率表示)。更新控制从而维持合并历史存储162a-d的内容。有各种方式可以使得合并历史存储内容被重置。一个示例是预定的时间段(由定时器指示)的逝去,因为在合并历史存储必然会具有有限容量的情况下,可能会出现这样的情况,即随着时间的流逝,合并历史存储162a-d的“充满度”缓慢地导致其功能的退化。为了缓解这种情况,更新控制164可以在一定的时间段逝去之后使得内容被重置。替换地或者额外地,当更宽广的数据处理系统经历情境切换时,合并历史存储的内容被重置可能是适当的,并且从而更新控制164可以在接收到情境切换指示时引起此重置。更新控制164还直接监视合并历史存储162a-d,并且当达到存储的一定“充满度”时,可以重置该内容。合并历史存储在图4B中被示为包括四个部分:162a、162b、162c和162d。合并历史存储的这些不同部分用于存储不同的合并历史数据集合,这些数据集合例如可用于存储与不同的过程情境相关的合并历史信息。更新控制164可以指示合并历史存储在过程情境切换时在这些不同的历史集合之间切换。

图5A示意性图示了根据一些示例实施例的合并预测器的操作的更多细节。在这样的实施例中,提供了散列单元170,该散列单元170被布置为生成它所接收的指令地址信息的散列。散列单元170从两个来源接收加载指令地址信息,即作为指令队列中的传入加载指令的指示,以及作为与来自合并单元的合并结果有关的指示。散列单元170利用散列键存储和序列器电路172来生成其散列值。序列器172的提供允许了散列单元在多个散列阶段中生成散列值,从而降低了支持散列功能所需的硬件的总体复杂度。这种类型的非密码散列可例如利用使用异或和/或移位操作的高效硬件配置来快速生成。散列单元170的输出被传递到路径选择器174,该路径选择器174基于是否在对合并预测器存储执行检查(即生成合并预测)或者是否在使用合并结果来修改存储的内容来确定散列信息的前向路径。在图5A的示例中,该存储是布隆过滤器存储174。从而,布隆过滤器存储174的内容是基于就合并结果生成的散列来更新的。所示出的布隆过滤器从而能够确定特定的加载请求是否能够被合并,或者是否存在其可能不合并的可能性。于是随后当加载指令地址(或其一部分)被缓存单元70接收时,此信息被传递到比较电路176,该比较电路176将指令地址信息与布隆过滤器存储144的内容进行比较,并在此基础上生成合并预测。

图5B示意性图示了数据处理装置180的组件,该装置以上述一些实施例的方式包括管线阶段的序列。这些组件被示为是取得阶段182、解码阶段184、微操作缓存阶段186、重命名阶段188和指令队列190。与上述实施例的示例的方式一样,由解码阶段184解码的加载指令也被通知给合并预测器电路192,以便其生成合并预测。这个合并预测被传递到指令队列190,从而可以形成加载请求通过装置的其余部分(未图示,但根据上述的任何实施例)所采取的向前路径。参考图5B要特别注意的是,合并预测器还接收来自重命名阶段188的输入。更一般而言,合并预测器192可以被提供来自任何数据依从性确定电路(重命名阶段188是其中一个示例)的输入。之所以这样做,是因为已经发现,加载指令的数据依从性包括有用的信息,这些信息可用于确定特定加载请求是否会合并。具体而言,已经发现,当某些加载指令直接(或者以很低程度的间接)向其他共同未决的加载指令提供输入值时,访问指针的加载往往不会合并。因此,因此数据依从性信息可以在合并预测器生成其合并预测时所作的确定中被考虑到。图5B还图示了一个示例,其中合并预测器被布置为向解码阶段184和微操作缓存186的任一者或两者提供(图中的虚线箭头)对于某些加载指令的合并预测(如上文参考图2A所描述的)。在此布置中,当重命名阶段检测到加载-加载依从链时(如上所述,已经发现其显著地降低合并的可能性),不仅重命名阶段188将通知合并预测器192更新自身以指示出第一加载不应当合并,而且当合并预测器192已经在管道中较早地提供了预测(例如在解码阶段或者在微操作缓存中)时,重命名阶段188可决定推翻该预测。更具体而言,重命名阶段188可被布置为确定合并预测器192是否具有对于此加载的实际预测,或者合并预测器192是否假设了默认的“可合并”预测。从而,合并预测器可例如使用它所提供的合并预测的单个比特来指示出对于此加载的“实际预测”或“默认预测”。在后一种情况下,重命名阶段如果检测到加载-加载依从链,则可以推翻对第一个加载的预测。

图6是图示出根据一些实施例的方法采取的步骤的序列的流程图。可以认为该流程开始于步骤200,此时接收到下一个加载请求。然后在步骤202确定先前是否已为此加载请求(即为此加载指令)存储了非合并预测。如果是,则流程直接进行到步骤212,在这里,加载请求被单独执行(即不进行将其与其他加载请求合并的任何尝试)。然而,如果在步骤202发现没有为此加载请求存储非合并预测,则流程进行到步骤204。在这里该加载请求被添加到未决加载缓冲器。然后在步骤206确定该加载请求是否可以与其他未决加载缓冲器内容合并。如果不能,那么流程经由步骤207进行,在这里检查未决加载缓冲器是否具有充足的内容,以允许作出“非合并”的有意义确定。这是在参考未决加载缓冲器的占用阈值的情况下进行的。低于这个阈值,则定义为不应当作出“非合并”确定,因为缓冲器中没有持有充足的其他加载可以与当前的加载请求进行比较。从而,当当前占用率不高于阈值时,流程进行到步骤212,并且该加载被单独处理。流程随后返回到步骤200。然而,如果当前占用率高于阈值时,则流程经由步骤208进行,在这里为此加载请求存储非合并预测,然后在步骤212其被处理,即单独处理。返回到步骤206的考虑,然而如果在步骤206确定该加载请求可以与其他未决加载缓冲器内容合并,则在步骤210抑制其他“重叠”加载请求。这可包括上面提到的其他未决加载缓冲器内容,或者可包括加载请求本身,这取决于所采用的配置以及例如加载请求通过未决加载缓冲器行进的顺序。例如,可能优选的是,在顺序的未决加载缓冲器中最老的加载请求被动作(以减少时延),而在其之后的与其合并的那些被抑制,但这不是必要的。

简要总结,公开了用于处理加载请求的装置和方法。响应于指定要从存储器取回的数据项的加载请求,取回包括由该加载请求所识别的数据项的一系列数据项。加载请求在加载请求被执行之前被缓冲。合并电路为加载请求和在未决加载缓冲电路中缓冲的一个或多个其他加载请求的集合确定地址邻近性条件是否为真。当由一个或多个其他加载请求的集合识别的所有数据项都被包括在该一系列数据项内时,地址邻近性条件为真。当地址邻近性条件为真时,该一个或多个其他加载请求的集合被抑制。合并预测电路基于合并电路先前对加载请求的处理,为每个加载请求生成合并预测。

在本申请中,词语“被配置为”被用于意指装置的元素具有能够执行定义的操作的配置。在此上下文中,“配置”指的是硬件或软件的布置或者互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理装置可被编程为执行该功能。“被配置为”并不意味着为了提供定义的操作,装置元素需要被以任何方式改变。

虽然本文已参考附图详细描述了说明性实施例,但要理解本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围的情况下,本领域技术人员可在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征进行各种组合。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种提高芯片设计模块性能的快速环境切换方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!