专利名称:执行存储器消歧的技术的利记博彩app
技术领域:
本公开涉及信息处理领域,以及更具体来说,涉及存储器存取管理领域。
背景技术:
在一些现有技术微处理器或处理系统中,信息(数据或指令)可由微处理器采用诸如“加载”操作或“存储”操作之类的操作来存取。此外,加载和存储操作可响应由处理器执行的指令(或者子指令,例如微操作或“uop”)而执行。在一些处理体系结构中,加载指令可被解码为一个uop,而存储指令则可被解码为两个或两个以上uop,其中包括存储地址(STA)uop和存储数据(STD)uop。为了本公开的目的,存储uop以及指令将称作“存储操作”或“存储”,以及加载uop和指令将称作“加载操作”或“加载”。
在一些处理器或处理系统中,多个加载和存储操作可同时执行或者挂起。例如,在包含其中的每个可同时对不同操作起作用的多个处理级的流水线式处理器中,可能有若干加载和存储操作被同时进行,每个在流水线中的不同级上进行。但是,在各个流水线级上,通过加载指令从其中加载数据或者通过存储指令向其中存储数据的地址(统称“目标地址”)是未知的或者“不明确的”。这是因为加载和存储指令或uop的目标地址有时在已经开始执行加载或存储之后才确定。
图1说明一种流水线式处理器的一部分,其中具有取/预取级、对适当指令或uop分配寄存器的一个或多个重命名单元、以及调度和存储指令或uop、例如与加载和存储对应的uop、直到确定它们相应的目标地址为止的一个或多个调度单元/保留站单元。
当加载和存储(例如STA uop)从保留站分发时,它们可被发送到地址生成单元,地址生存单元生成要发送到存储器或高速缓存的加载和存储的相应线性地址。加载操作通常从保留站分发到存储器有序缓冲器(MOB)内的加载缓冲器中,在其中检验加载是否有冲突以及与其它存储操作的相关性。如果不存在冲突或者与存储的相关性,则加载可分发给存储器/高速缓存群集。否则,在被分发到存储器/高速缓存之前,加载可能需要在MOB等到解决了相关性和/或冲突。
一旦加载被分发给存储器/高速缓存,存储器/高速缓存可能把作为加载的目标的数据返回给执行单元保留站,执行单元保留站可采用加载数据来生成下一个的地址,用作将从调度器/保留站分发的某个后续uop的操作数。
可能包括STA uop的存储操作可遵照与加载相似的途径。但是,通常不允许存储不按程序顺序分发给存储器/高速缓存,而加载则可在加载与其它存储操作之间不存在相关性/冲突时的任何时间被分发给存储器/高速缓存。
在一些现有技术处理器中,MOB用于以适当顺序存储加载和存储操作,使得向存储单元写信息的所有存储操作被分发并且允许它们在可采用来自相同地址的信息的加载操作之前将其信息写入存储器。按照程序顺序在相应的加载操作(即加载操作具有与先前的存储操作相同的目标地址)之前出现的存储操作可称作“较旧的”存储操作,以及相应的加载操作可称作比按程序顺序的先前存储操作“较新的”加载操作。
如果不存在加载与存储之间的相关性/冲突,则加载相对于存储可不按程序顺序来存取存储器。在现有技术的一部分中,在较旧的挂起存储之前所处理的加载被假定为始终对应于相同的目标存储器地址,以便阻止先前处理的加载可能加载将由较旧的存储所较新的数据,因而通过返回废弃的信息而在它们所对应的无论什么程序中产生不正确的结果。
但是,由于并非在处理按照程序顺序的较旧的挂起存储之前所处理的所有加载都对应于相同的存储器地址,所以这个假设可能证明是过于保守的。因此,加载可被延迟许多周期向存储器发出,直到相应的较旧的挂起存储被处理并以适当顺序存储在MOB中为止。这又可能引起存储器存取时间的不必要延迟,它可能过度侵蚀处理器和系统性能。
通过附图、作为示例而不是限制来说明本发明。
图1是现有技术处理器的简图,其中,加载和存储仅当它们在由处理器运行之后处于程序顺序时才向存储器发出。
图2是根据本发明的一个实施例的处理器的简图,其中,允许在处理器中处理的加载在相应的较旧的存储操作通过处理器处理之前来存取存储器。
图3说明根据本发明的一个实施例的加载缓冲器,它可存储将在相应的较旧的存储操作之前向存储器发出的加载操作。
图4说明根据一个实施例、预测加载缓冲器条目中存储的加载操作可在相应的较旧的存储之前向存储器发出。
图5是状态图,说明根据一个实施例的看门狗单元的功能。
图6是流程图,说明根据一个实施例、加载操作是否可在相应的存储操作之前向存储器发出。
图7是在其中可采用一个实施例的共享总线系统。
图8说明在其中可采用一个实施例的点对点总线系统。
具体实施例方式本发明的实施例涉及计算机系统。更具体来说,本发明的至少一个实施例涉及允许加载操作在较旧的挂起存储操作之前向存储器发出的技术。此外,本发明的一个实施例涉及根据加载和相应的较旧的存储操作相互没有冲突的频率来禁用或启用在较旧的挂起存储操作之前向存储器发出加载操作的技术。在整个公开中,对于存储,术语“挂起”表示目标地址(加载和存储操作将存取的存储器中的地址)仍未确定的事实。关于加载的术语“挂起”表示其目标地址被确定但仍未向存储器/高速缓存发出的加载。
不是始终等待让加载相对于MOB中的挂起存储操作按程序顺序来处理,本发明的实施例而是通过带有/没有预测地推测挂起加载(即仍将要退出的加载)是否将从不是对应于任何较旧的挂起存储操作的存储器地址中加载信息,来改进对存储器的加载存取的吞吐量。在至少一个实施例中,加载缓冲器的条目各对应于散列预测器阵列条目,散列预测器阵列条目可保持关于是否将允许相应加载缓冲器条目中的挂起加载在挂起的较旧的存储操作之前来存取存储器的预测。在一个实施例中,挂起加载操作是否可在挂起的较旧的存储操作之前存取存储器的预测取决于与特定预测器表条目对应的先前挂起加载操作的成功(先前的挂起加载是否已存取存储器而没有与较旧的存储操作冲突)。
在一个实施例中,饱和计数器可用来保持挂起加载是否将与较旧的挂起存储操作冲突(即,试图存取与较旧的挂起存储操作对应的存储器地址)的预测。如果已经允许在较旧的挂起存储操作之前来存取存储器的加载最终与较旧的存储操作冲突,则至少一个实施例从导致冲突的推测加载重新开始。但是,至少一个实施例中,误预测可能充分地不频繁出现,从而帮助对存储器的加载/存储存取的整体改进。
在较旧的挂起存储操作之前存取存储器的推测加载的成功率下降到低于某个门限时,则至少一个实施例可包括“看门狗”单元(逻辑和/或软件)来禁止挂起加载在较旧的挂起存储操作之前推测性地存取存储器。在本公开中,“存储器”可用来表示高速缓存、DRAM或者将由加载和存储操作存取的其它任何存储器结构。
图2说明根据一个实施例的处理器的一部分,其中,可按照预测算法、如散列函数,在其它较旧的挂起存储操作之前向存储器地址推测性地发出挂起加载。具体来说,图2说明一种流水线式处理器200的一部分,其中具有取/预取级201、解码器级203、对适当指令或uop分配寄存器的一个或多个重命名单元205、以及存储与加载和存储操作(例如STA uop)对应的uop、直到确定它们相应的目标地址源操作数为止的一个或多个调度/保留站单元210。图2还说明生成与加载和存储对应的目标线性地址的地址生成单元212以及根据通过向存储器/高速缓存分发加载操作所返回的加载数据来生成对于将从调度器/保留站210分发的下一个操作的指针。图2还说明MOB 213,它可包含按照程序顺序存储加载和存储并检验加载与存储之间的相关性/冲突的加载和存储缓冲器。
在一个实施例中,可在向存储器/高速缓存发出较旧的存储之前向存储器/高速缓存发出加载,而无需等待确定加载是否与较旧的挂起存储相关或冲突。这样,本发明的至少一个实施例可由于以下事实而改进处理器性能可无需等待确定较旧的存储的目标地址而发出加载,来自其中的数据可能比某些现有技术体系结构更快地由执行单元用来分发来自调度器/保留站的后续操作。
在一个实施例中,散列表207可与例如存储在加载缓冲器中的加载或者在处理器的任何位置挂起的加载对应的多个条目配合使用。在一个实施例中,散列表存储在以逻辑电路实现的和/或以软件实现的存储器中。在一个实施例中,散列预测表的各条目可包含至少一个饱和计数器来保持关于是否可在处理器中挂起的较旧的挂起存储操作之前向存储器发出各加载的预测。有利的是,散列预测条目可根据指令指针(EIP)或者它的某种派生(例如EIP的散列形式)来索引。
图3说明根据本发明的一个实施例的加载缓冲器,其中,各条目可包含可能允许在较旧的挂起存储操作之前以及在加载退出并存储于MOB之前来存取存储器的加载操作。除了与加载操作305对应的操作码、数据和其它信息之外,包括例如加载缓冲器条目301在内的加载缓冲器条目可包含跟踪与加载缓冲器条目对应的加载操作是否可在较旧的挂起存储操作之前存取存储器的其它字段。
例如,在一个实施例中,各条目可包含存储表明是否允许加载在挂起的较旧的存储操作之前来存取存储器的位的字段(MDA字段307)、表明相应的加载操作是否在较旧的挂起存储操作之前实际上已存取存储器的字段(MDD字段309)、表明相应的加载操作是否应当使相应的预测器条目被更新(例如根据具有未决定地址的较旧的存储操作的存在)的字段(MDU字段311)、表明相应的加载操作是否应当使预测器复位(例如在加载与存储之间的冲突的情况下)的字段(MDR字段313)以及存储表明比特定加载缓冲器条目内的加载较旧的存储缓冲器中的最新的存储的存储缓冲器条目的存储色值的字段315。类似地,图2的处理器中的存储缓冲器可在各条目中包含表明作为比加载色字段所涉及的存储操作更新的加载缓冲器中的最旧的加载操作的加载色的字段。在各加载缓冲器条目中还可存在其它字段,其中包括用于对是否允许相应的加载操作在其它挂起的较旧的存储操作之前来存取存储器执行散列预测的饱和计数器字段。图3所示的字段的相对位置和大小不代表所有实施例。在其它实施例中,这些字段可能处于不同的位置,并且可能具有不同的大小。
加载缓冲器或其它结构中存储的加载可与预测器表条目关联,预测器表条目在一个实施例中可采用饱和计数器(例如415)来实现散列函数,以便记录无冲突加载和存储的成功预测的历史。在其它实施例中可采用其它预测技术。图4说明根据本发明的预测器表400,其中的条目对应于例如图3所示的至少一个加载缓冲器的条目。在一个实施例中,预测表可能是一个或多个加载缓冲器的组成部分。在其它实施例中,预测表可能处于来自一个或多个加载缓冲器的独立电路中。
图4的预测表采用与加载操作对应的EIP 405的散列形式401来索引。在一个实施例中,加载的EIP的六个最低有效位经由索引逻辑410用来索引64个条目(标记为0至63)的预测表。在一个实施例中,各预测器条目相当于16种状态的饱和计数器,其中包括复位状态,以4位来实现。在其它实施例中,EIP的更多或更少的位或者EIP的某个函数可用来索引更多或更少的预测器表条目。同样地,在其它实施例中,各条目可能用作具有采用或多或少位的更多或更少状态的饱和计数器。此外,在其它实施例中可采用其它历史跟踪技术。
在一个实施例中,与将在挂起的较旧的存储操作之前对存储器发出的加载对应的加载饱和计数器(例如415)在加载退出期间被递增或者重置为零值(或者另外的开始值)。在其它实施例中,在其它情况下可修改饱和计数器。在一个实施例中,如果加载退出而没有与在发出加载时挂起的较旧的存储操作“冲突”(即,从挂起的较旧的存储操作将对其中写信息的存储器地址中加载数据),则与在其它较旧的挂起存储之前对存储器发出的加载对应的饱和计数器递增。在一个实施例中,如果加载与在发出加载(例如当加载退出时所确定)时挂起的较旧的存储操作冲突,则与将在较旧的挂起存储器之前对存储器发出的加载对应的饱和计数器被复位。
在一个实施例中,如果与加载对应的预测器表中的饱和计数器达到门限值,则在挂起的较旧的存储操作之前从一个或多个处理器保留站(而不是从MOB)中发出加载。否则,加载可能不是从保留站发出,而是必须相对于较旧的挂起存储按照程序顺序从MOB中发出。在一个实施例中,饱和计数器的至少一个的门限值对应于15个连续的无冲突加载发布,在一个实施例中以包括复位在内的计数器的16种状态中的15种来反映。在其它实施例中,可选择较少保守的门限,例如10个连续的无冲突加载发布。
在一个实施例中,加载可在调度器中进行无序调度,并且稍后发送到MOB。如果例如不存在挂起的先前存储,或者存在挂起的先前存储,但是预测器已经达到门限值,加载则可从将被立即执行的MOB(“MOB旁路”)转发。MOB或者可判定加载仍然无法继续送往执行单元(例如,当存在仍未解决的较旧的存储并且相应的预测器计数器未饱和时),在这些情况下,在解决有问题的存储时,MOB将在稍后重新调度此加载)。
在一个实施例中,在与来自存储器地址的信息的加载对应的饱和计数器反映来自那个存储器地址的加载的15个连续的无冲突发布之后,可不按程序顺序对此存储器地址发出后续加载(即,在较旧的存储之前,从保留站,经由MOB旁路),而不是关于较旧的挂起存储按程序顺序等待从MOB发出。但是,在一个实施例中,如果在退出时确定已经对于较旧的存储将在其中存储信息的存储单元发出加载(即在加载与较旧的存储之间发生冲突),则与那个加载对应的(即与加载的EIP对应的)预测表中的饱和计数器复位到初始状态、如零值,或者递减到较小的值,并且没有来自那个地址的其它加载可被预测为无冲突(因而在那个地址的较旧的挂起存储之前发出到存储器),直到饱和计数器再次达到门限值为止(例如,在一个实施例中为15个连续无冲突加载之后)。如果加载被误预测、对存储器发出,并且实际上被确定为与较旧的存储冲突,则此加载必须按照程序顺序(即,在已确定较旧的存储操作的目标地址、并且存储按照程序顺序被存储在具有加载的MOB中之后)从MOB中再发出(例如在执行流水线刷新/重新开始操作之后)。
在一个实施例中,与将对存储器发出的加载对应的预测表中的饱和计数器根据散列EIP来索引。读取计数器值的结果可存储在与可能位于加载缓冲器或保留站或者另外的某种结构中的加载关联的MDA位中(例如“1”表示正预测或“允许”,“0”表示负预测或“不允许”)。如果计数器值饱和(即在门限值处或者高于门限值),则认为加载与仍未对存储器发出的任何较旧的存储没有冲突,以及可发出加载来存取目标地址上的存储器。如果稍后发现加载与较旧的存储冲突(例如在已确定较旧的存储目标地址之后),则使加载刷新/作废,并从MOB对存储器再发出(即对于较旧的存储按照程序顺序)。
如果对于给定加载读取预测器并且相应的计数器未饱和(即包含低于门限的值),则加载将存储在MOB中,并相对挂起的较旧的存储按照程序顺序对存储器发出。在一个实施例中,如果加载与较旧的存储冲突,则设置MDU位。如果加载实际上在较旧的挂起存储之前从存储器加载信息(即预测加载不会冲突),则不管加载是否实际上与较旧的存储冲突,均设置MDD位。可参考这个位来确定是否需要验证预测是正确的。同样,如果预测不正确,并且实际上存在与较旧的存储的冲突,则将使加载刷新/作废,并与所有后续指令一起再发出。
根据一个实施例,为了检测误码预测,比在执行加载之后决定的加载较旧的存储的目标地址与包括误码预测加载在内的目标地址较新加载进行比较。一旦找到加载和较旧的存储的匹配目标地址,可设置MDR位来反映那个加载的计数器必须复位。此外,在一个实施例中,可设置MDD位来表明将使误预测加载刷新/作废。
在一个实施例中,与MOB关联的逻辑采用MDU和MDR位(存储于与在挂起的较旧的存储之前对存储器发出的加载对应的加载缓冲器条目中)来确定将如何更新预测/误预测加载的预测器表条目。例如,在一个实施例中,如果未设置MDU位,则不更新相应的饱和计数器,而如果设置了MDU位并且未设置MDR位,则计数器递增。但是,如果MDU和MDR位均被设置,则计数器复位。下表概述根据一个实施例、在确定如何或者是否更新给定加载的预测器表条目时的MDU和MDR位的使用
在一个实施例中,如果误预测的数量或比率变得过高,则是否在较旧的存储之前对存储器发出加载的预测可暂时禁用,以便保持处理器性能。预测技术则可在一定时间量之后或者在满足某个标准之后重新启用。在一个实施例中,逻辑、软件或者它们的某种组合可用来实现“看门狗”单元,它控制启用还是禁用在较旧的挂起存储之前对存储器发出加载的预测。在一个实施例中,看门狗可概念化为实现两种不同状态(例如经由逻辑状态机),各采用两个计数器来跟踪在较旧的挂起存储之前对存储器发出的任一个或全部加载的预测的成功。
例如,在一个实施例中,当上述预测机制启用时,两个计数器-消歧计数器和刷新计数器-用来跟踪加载预测的成功率。具体来说,每当加载被成功地预测为与较旧的挂起存储操作没有冲突、因而从存储器加载目标信息而无需按照程序顺序对存储器发出(例如从MOB)时,消歧计数器可递增。另一方面,每当加载被误预测为与较旧的挂起存储操作没有冲突(在一个实施例中可在加载退出之后来确定)时,刷新计数器可递减。另外,刷新计数器可增加来自消歧计数器的进位值。在刷新计数器递减到低于零、由此创建消歧计数器值与刷新计数器值之间的负比率之后,预测机制被禁用,并且对于较旧的存储从MOB中按照程序顺序对存储器发出加载。
是否启用预测机制的确定也可依靠计数器、例如计算成功的将要变成的预测的数量的预测计数器以及另一个计数器、如计算将要变成的误预测的数量的误预测计数器的使用。在一个实施例中,在退出原本在启用预测机制时会被成功地预测为与较旧的挂起存储没有冲突的加载之后,预测计数器递减。在退出原本在启用预测机制时会被误预测为与较旧的挂起存储没有冲突的加载之后,预测计数器复位到某个初始值(例如“0”),并且误预测计数器递增。在预测计数器达到饱和值(例如计数器的最大数量)并且误预测计数器没有超过最大门限之后,可启用加载的预测机制。饱和值可取决于实现者认为存在足够的成功加载预测来保证重新启用预测机制的时间。在一个实施例中,这可通过对于每1个(例如对应于一个或多个位的误预测计数器)将要变成的误预测的256个(例如对应于8位的预测计数器)将要变成的成功预测的比率来反映。
类似地,预测机制可在满足成功对不成功预测的预期比率之后被禁用。例如,在一个实施例中,如果对于每1024个(例如对应于16位消歧计数器)成功预测出现4个(例如对应于2位刷新计数器)或4个以上误预测,则禁用预测机制。在其它实施例中,其它技术可用来跟踪预测的成功率,例如时间相关计数器,以便确定启用或禁用预测机制的时间。
例如以上所述的看门狗单元可防止无冲突加载的不合理误预测基本上影响处理器性能。图5给出状态图,说明根据一个实施例的看门狗单元的功能。在活动状态501,在各成功预测和刷新计数器根据高于其最大允许值的消歧进位来递增之后,消歧计数器将递增,而刷新计数器则每当加载被误预测时递减。在一个实施例中,如果刷新计数器递减到低于零,则清除所有计数器,并且状态图转变为禁用状态505。在禁用状态中,如果预测已经成功(即,如果处于启用状态),则刷新计数器递增,而如果误预测已经发生(即,如果处于启用状态),则刷新计数器被清除到其初始状态。在一个实施例中,在刷新计数器达到其最大值或者另外某个门限值之后,或者如果出现来自计数器的进位,则启用预测机制。
在一个实施例中,加载缓冲器条目也可包括存储表明相应的加载是否在较旧的存储操作之前已经分发给存储器的存储器消歧推测(MDS)位的存储单元,但用于处于禁用状态的看门狗单元。MDS位或者相似功能性的位可帮助确定各种加载操作的“命中率”。
图6是流程图,说明根据一个实施例、在执行本发明的各个方面时可执行的操作。在操作601,如果加载缓冲器中的特定加载的饱和计数器处于门限,则在操作610在看门狗处于启用状态时加载被预测为与任何较旧的挂起存储没有冲突,因而可在操作615对存储器无序地发出。如果加载的饱和计数器没有处于门限,则饱和计数器在操作605递增。如果看门狗不是处于启用状态,则在操作611按照程序顺序发出该加载。然后在操作612,检验加载是否与较旧的挂起存储冲突。如果加载有冲突,则将要变成的误预测计数器在操作613递减。如果没有冲突,则将要变成的成功预测计数器在操作614递增。如果加载被预测为与任何较旧的存储没有冲突,并且在操作620,预测在退出加载时原来是正确的,则成功消歧计数器在操作625递增。但是,如果加载被误预测为与任何较旧的挂起存储没有冲突,则在操作630,饱和计数器复位,以及刷新计数器递减。
图7说明在其中可使用本发明的一个实施例的前端总线(FSB)计算机系统。处理器705从第一级(L1)高速缓冲存储器710和主存储器715中存取数据。在本发明的其它实施例中,高速缓冲存储器可能是第二级(L2)高速缓存或者是计算机系统存储器分层结构中的其它存储器。此外,在一些实施例中,图7的计算机系统可包含L1高速缓存以及L2高速缓存。
图7的处理器中所示的是机器状态的存储区706。在一个实施例中,存储区可能是一组寄存器,而在其它实施例中,存储区可能是其它存储器结构。图7中还表示的是根据一个实施例、用于保持区段的存储区707。在其它实施例中,保持区段可能位于其它装置或存储器结构中。处理器可具有任何数量的处理核。但是,本发明的其它实施例可在系统的其它装置、如独立总线代理中实现,或者通过硬件、软件或它们的某种组合分布于整个系统。
主存储器可通过各种存储源来实现,例如动态随机存取存储器(DRAM)、硬盘驱动器(HDD)720或者经由网络接口730远离计算机系统设置的包含各种存储装置和技术的存储源。高速缓冲存储器可设置在处理器内或者设置在处理器附近,例如设置在处理器的本地总线707上。
此外,高速缓冲存储器可包含较快的存储单元、如六晶体管(6T)单元,或者接近相等或更快的存取速度的其它存储单元。图7的计算机系统可能是例如微处理器等的总线代理的点对点(PtP)网络,它们经由专用于PtP网络上的各代理的总线信号进行通信。图8说明以点对点(PtP)配置来设置的计算机系统。具体来说,图8说明其中的处理器、存储器和输入/输出装置通过多个点对点接口互连的系统。
图8的系统还可包括若干处理器,为了简洁起见仅示出其中两个处理器870、880。处理器870、880均可包括与存储器22、24连接的本地存储控制器集线器(MCH)872、882。处理器870、880可采用PtP接口电路878、888经由点对点(PtP)接口850来交换数据。处理器870、880均可采用点对点接口电路876、894、886、898经由各个PtP接口852、854与芯片组890交换数据。芯片组890还可经由高性能图形接口839与高性能图形电路838交换数据。本发明的实施例可设置在具有任何数量的处理核的任何处理器中或者设置在图8的PtP总线代理的每个中。
但是,本发明的其它实施例可存在于图8的系统的其它电路、逻辑单元或装置中。此外,本发明的其它实施例可分布于图8所示的若干电路、逻辑单元或装置上。
本文涉及的处理器或者根据本发明的一个实施例设计的其它任何组件可在从创建到模拟到制造的各个阶段中进行设计。表示设计的数据可通过多种方式来表示设计。首先,如在模拟中可用的那样,硬件可采用硬件描述语言或者另一种功能描述语言来表示。作为补充或替代,采用逻辑和/或晶体管门电路的电路级模型可在设计过程的部分阶段产生。此外,在某个阶段,大部分设计达到在其中它们可采用表示各种装置的物理设置的数据来建模的等级。在使用传统半导体制造技术的情况中,表示装置设置模型的数据可能是指定在用于生产集成电路的掩模的不同掩模层上的各种特征是否存在的数据。
在设计的任何表示中,数据可存储在任何形式的机器可读媒体中。经调制或者以其它方式产生以便传送这种信息的光或电波、存储器或者磁或光存储装置、如盘可能是机器可读媒体。这些媒体的任一个可“承载”或“表明”该设计或者在本发明的实施例中使用的其它信息、如差错恢复例程中的指令。传送表明或承载信息的电载波以便执行电信号的复制、缓冲或重传时,制作新的副本。因此,通信提供商或网络提供商的动作可能是制作体现本发明的技术的产品、如载波的副本。
因此,公开用于引导存储器存取、如加载或存储的技术。虽然在附图中描述和表示了某些实施例,但是要理解,这些实施例只是对广泛的发明的说明而不是限制,以及本发明不限于所示及所述的具体构造和配置,因为本领域的技术人员在研究本公开之后可能会想到其它各种修改。在其中的增长迅速并且不易预见其它进步的例如这样的技术的领域中,通过实现技术进步进行促进,所公开的实施例在配置和细节上可易于修改,而没有背离本公开的原理或所附权利要求书的范围。
本发明的一个或多个实施例的各个方面可能在可使用本发明的一个或多个实施例的处理器或计算机系统的广告中描述、论述或引用。这类广告可包括但不限于新闻纸、杂志、广告牌或其它报纸或有形媒体。具体来说,本发明的一个或多个实施例的各个方面可经由网站、弹出 广告或其它基于万维网的媒体在互联网上做广告,而不管包含生成网站或弹出广告的程序是位于美国还是其领区。
权利要求
1.一种处理器,包括加载缓冲器,包括多个加载缓冲器条目,其中的每个具有与其关联的预测器表条目,所述预测器表条目包括记录对应于相同目标地址的加载与存储之间的先前冲突的历史的饱和计数器。
2.如权利要求1所述的处理器,还包括第一逻辑,用以发出加载操作以便在发出向存储器地址存储数据的存储操作之前从所述存储器地址中加载数据,所述存储操作按程序顺序是在所述加载操作之前。
3.如权利要求1所述的处理器,其中在各加载被正确预测为与对应于和所述加载相同的目标地址的存储没有冲突之后,所述饱和计数器将递增。
4.如权利要求3所述的处理器,其中如果所述饱和计数器达到门限计数,则允许在对所述目标地址发出较旧的挂起存储之前对所述目标地址发出后续加载。
5.如权利要求4所述的处理器,其中如果与所述相同目标地址对应的存储和加载操作被误预测为没有冲突,则所述饱和计数器将被复位。
6.如权利要求1所述的处理器,还包括看门狗单元,用以在出现最大的不正确预测率时禁止所述预测表条目来预测对应于所述相同目标地址的加载和存储是否彼此冲突。
7.如权利要求6所述的处理器,其中如果误预测率降低到低于所述最大的不正确预测率,则所述看门狗单元将启用所述预测表条目。
8.如权利要求1所述的处理器,其中所述存储包括存储地址微操作,以及所述加载包括加载微操作。
9.一种处理器,包括预测单元,用以预测从存储器地址加载数据的加载操作是否将与向所述存储器地址存储数据的较旧的挂起存储操作冲突;看门狗单元,用以在所述预测单元误预测所述加载操作是否将与所述较旧的挂起存储操作冲突时禁用所述预测单元。
10.如权利要求9所述的处理器,其中所述预测单元包括多个预测器表条目,各包括记录对应于所述相同目标地址的加载与存储之间的先前冲突的历史的饱和计数器。
11.如权利要求9所述的处理器,还包括从其中发出加载操作以便在发出向存储器地址存储数据的存储操作之前从所述存储器地址中加载数据的保留站,所述存储操作按照程序顺序是在所述加载操作之前。
12.如权利要求9所述的处理器,还包括存储多个加载直到确定其目标地址为止的加载缓冲器,其中,所述加载缓冲器的各条目包括存储表明是否将在存储器地址的较旧的挂起存储之前对所述相同存储器地址发出相应加载的MDA位的存储器消歧允许(MDA)位存储区。
13.如权利要求12所述的处理器,其中各加载缓冲器条目还包括存储表明是否将在存储器地址的较旧的挂起存储之前对所述相同存储器地址发出相应加载的MDD位的存储器消歧完成(MDD)位存储区。
14.如权利要求13所述的处理器,其中各加载缓冲器条目还包括存储表明是否将更新相应的预测表条目的MDU位的存储器消歧更新(MDU)位存储区。
15.如权利要求14所述的处理器,其中各加载缓冲器条目还包括存储表明是否将复位相应的预测表条目的MDR位的存储器消歧复位(MDR)位存储区。
16.如权利要求15所述的处理器,还包括存储多个存储直到确定其目标地址为止以及存储表明比所述存储缓冲器中的特定存储更新的所述加载缓冲器中的最旧的加载的加载色的存储缓冲器。
17.如权利要求16所述的处理器,其中所述加载缓冲器的每个将存储表明比所述加载缓冲器中的特定加载较旧的所述存储缓冲器中的最新的存储的存储色。
18.一种系统,包括第一存储器,用以存储向第一存储单元存储数据的存储指令以及从所述存储单元加载数据的加载指令;处理器,用以在所述加载指令之前从所述第一存储器中取所述存储指令,其中,所述处理器包括预测是否在对第二存储器发出存储信号之前对所述第二存储器发出加载信号的预测表,其中所述存储信号从执行所述存储指令来产生,以及所述加载信号从执行所述加载指令来产生,所述预测表的各条目包括存储与所述第二存储器的相同存储器地址的存储指令冲突的加载指令的记录历史的饱和计数器。
19.如权利要求18所述的系统,还包括耦合到所述处理器以便传送由执行所述加载指令的所述处理器所产生的加载信号的总线,所述加载信号将在由执行所述存储指令的所述处理器所产生的存储信号之前通过所述总线被传送。
20.如权利要求19所述的系统,其中所述预测表将根据与将在较旧的挂起存储操作之前对存储器发出的加载操作对应的指令指针的散列形式来索引。
21.如权利要求20所述的系统,还包括在达到加载的最大的不正确预测率时禁用与所述加载对应的饱和计数器的看门狗单元。
22.如权利要求21所述的系统,其中如果所述加载的误预测率降到低于所述最大的不正确预测率,则所述看门狗单元将启用所述饱和计数器。
23.如权利要求22所述的系统,其中所述处理器将把加载指令解码为至少一个加载微操作(uop)。
24.如权利要求23所述的系统,其中所述处理器将把存储指令解码为至少一个存储地址uop和至少一个存储数据uop。
25.如权利要求24所述的系统,其中如果所述至少一个加载uop被预测为与任何较旧的挂起存储地址uop没有冲突,则将对所述第二存储器发出所述至少一个加载uop。
26.如权利要求25所述的系统,其中所述处理器包括同时处理多个加载指令和多个存储指令的多个流水线级。
27.一种方法,包括如果对应于加载操作的饱和计数器低于门限值并且没有出现最大的误预测率,则把所述加载操作预测为与较旧的挂起存储操作没有冲突;如果所述加载操作被预测为与所述较旧的挂起存储操作没有冲突,则使所述饱和计数器递增。
28.如权利要求27所述的方法,还包括在所述加载操作被预测为与所述较旧的挂起存储操作没有冲突时,在所述较旧的挂起存储操作之前加载与所述加载操作的目标地址对应的数据。
29.如权利要求28所述的方法,还包括确定所述预测是否正确。
30.如权利要求29所述的方法,还包括在所述预测不正确时,复位所述饱和计数器。
31.如权利要求29所述的方法,还包括在所述预测不正确时,销毁(nuking)所述加载操作。
32.如权利要求29所述的方法,还包括在所述预测不正确时,与所述较旧的挂起存储操作按照程序顺序再发出所述加载操作。
33.如权利要求29所述的方法,还包括在所述预测不正确时,使看门狗刷新计数器递减。
34.如权利要求33所述的方法,还包括在所述预测正确时,使看门狗消歧计数器递增。
35.如权利要求34所述的方法,还包括在所述消歧计数器值和所述刷新计数器值的比率达到最小值时,禁用所述预测。
36.一种设备,包括看门狗单元,用以在存储器消歧(MD)逻辑引起关于来自第一存储器地址的加载操作和对于所述第一存储器地址的存储操作是否彼此有冲突的最大的误预测率时,禁用所述MD逻辑。
37.如权利要求36所述的设备,还包括响应所述加载操作和所述存储操作是否彼此有冲突的误预测而递减的刷新计数器。
38.如权利要求37所述的设备,还包括响应所述加载操作和所述存储操作是否彼此有冲突的正确预测而递增的看门狗消歧计数器。
39.如权利要求38所述的设备,其中如果所述消歧计数器值和所述刷新计数器值的比率达到负值,则将禁用所述MD逻辑。
40.如权利要求39所述的设备,其中如果所述MD逻辑引起关于来自所述第一存储器地址的所述加载操作和对于所述第一存储器地址的存储操作是否彼此没有冲突的最小的正确预测率,则所述看门狗单元将启用所述MD逻辑。
41.如权利要求40所述的设备,其中如果所述消歧计数器递增产生进位值,则所述刷新计数器将递增。
42.如权利要求41所述的设备,其中所述看门狗单元包括具有至少一个活动状态和一个禁用状态的状态机,其中,所述刷新计数器中的负值将使所述状态机从所述活动状态转变为所述禁用状态。
43.如权利要求42所述的设备,其中如果在任何相应的较旧的存储操作之前满足最小数量的无冲突加载,则所述状态机将从所述禁用状态转变为所述活动状态。
全文摘要
一种存储器存取管理技术。更具体来说,本发明的至少一个实施例涉及在对应于相同目标地址的较旧的存储操作之前对存储器发出加载的技术。
文档编号G06F9/318GK101067781SQ20071008773
公开日2007年11月7日 申请日期2007年3月6日 优先权日2006年3月7日
发明者E·克里默, G·萨夫兰斯基, I·蒙亚克, J·多维克 申请人:英特尔公司