CN1924832A - 多重处理环境中基于因果性的存储器访问排序 - Google Patents

多重处理环境中基于因果性的存储器访问排序 Download PDF

Info

Publication number
CN1924832A
CN1924832A CNA200610101532XA CN200610101532A CN1924832A CN 1924832 A CN1924832 A CN 1924832A CN A200610101532X A CNA200610101532X A CN A200610101532XA CN 200610101532 A CN200610101532 A CN 200610101532A CN 1924832 A CN1924832 A CN 1924832A
Authority
CN
China
Prior art keywords
memory contents
processor
memory
storage
processors
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.)
Granted
Application number
CNA200610101532XA
Other languages
English (en)
Other versions
CN100470509C (zh
Inventor
D·T·马尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1924832A publication Critical patent/CN1924832A/zh
Application granted granted Critical
Publication of CN100470509C publication Critical patent/CN100470509C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

多重处理环境中基于因果性的排序。所公开的实施方案包括多个处理器和耦合到该多个处理器的仲裁逻辑。处理器和仲裁逻辑保持处理器一致性,但允许由任意两个或多个处理器以第一顺序产生的存储被其它处理器中的至少一个其它处理器以不同的顺序观察。

Description

多重处理环境中基于因果性的存储器访问排序
本申请是申请号为00819240.5的专利申请的分案申请。
技术领域
本公开内容涉及处理系统领域,更具体地,本公开内容涉及多重处理系统的存储器排序技术。
背景技术
改善计算机或其它处理系统的性能通常改善了整体吞吐量和/或提供了更好的用户体验。一种改善系统中处理的指令总量的技术是增加系统中处理器的数量。然而,实现多重处理(MP)系统通常所需要的不仅仅是并行互连处理器而已。例如,需要把任务或程序进行划分以使它们能够跨越并行的处理资源执行。
MP系统中另一个主要困难是保持存储器一致性(也称为相关性)。存储器一致性是存储器保持足够的更新以向请求处理器或其它设备提供存储器内容的当前拷贝的一般要求。使用为了获得比从通常其它(例如,外部)存储器电路所能得到的更有效地访问而存储数据的内部高速缓冲存储器和其它数据结构使得保持存储器一致性变得复杂了。
一个系统可以使用硬件或硬件和软件技术的结合来保持存储器一致性。硬件提供特定的存储器排序保证,保证该硬件将在系统层次中某些选中的点上保持程序存储器访问的顺序本性(至少保持在一些选定的程度上)。在一些系统中可以用软件通过在期望的时间强制附加排序限制来补充硬件提供的存储器排序。所实现的存储器排序方案是涉及硬件复杂性、软件复杂性以及高速缓存和缓冲数据的期望能力之间的折衷的设计选择。
一种现有技术“处理器一致性”代表了在弱有序存储器一致性模型和非常严格的一致性模型之间的折衷。处理器一致性模型是已知的现有技术中的一种模型,它允许有限的重排。一种实现方式被用在一些现有的当前处理器中(例如见美国专利5,420,991)。图1a中显示了现有技术中的处理器一致性存储器模型系统的一种实施方案的存储器排序约束。
根据图1的框100,该现有技术系统确保来自系统中每个单独的处理器的存储能够依次被所有其它处理器观察到。换句话说,不对来自特定处理器的单个存储相对于彼此重新排序。如框102所示,该系统确保来自每个处理器的装载呈现为依次执行。在一些系统中可以进行优化;然而,装载数据表现为被返回到计算-执行单元以便避免更改系统装载和存储之间的排序关系。另一方面,如果正在返回的装载数据没有被非全局观察的存储更改过,装载数据被返回的顺序可以是变化的,而且数据仍然呈现为被依次返回。
另外,如框104所示,该系统确保对到相同地址的装载和存储全局排序。因而,系统中的所有代理以相同的顺序观察对相同地址的装载和存储。将作为也包括这些约束的本发明的一些实施方案更详细地论述框100-104的约束的结果(见图4a-4b)。
最后,如框105所示,除了每个处理器在观察来自其它处理器的存储之前观察到它自己的存储之外,由不同处理器到不同地址的存储都被全局排序。下面这个现有技术约束还与本发明相对比(见暗示这种现有技术约束的图4c-4e)。一些系统(例如,基于Santa Clara的Intel公司的ProfusionChipset的系统)可以要求基本的硬件以确保对由不同处理器到不同存储器位置的不同存储的相当有效的有序的全局观察。
此外,存储器排序费用继续随着实现传统存储器排序模型的系统扩大到满足附加的处理问题而大幅度增加。因此,存在能在维持预先确定的存储器排序协议例如处理器一致性的同时提高效率的存储器排序技术的连续需要。
发明内容
一种公开的实施方案包括多个处理器和耦合到该多个处理器的仲裁逻辑。这些处理器和仲裁逻辑保持处理器一致性,还允许由任意两个或多个处理器以第一顺序产生的存储被其它处理器中的至少一个其它处理器以不同的顺序观察到。
附图说明
通过实例和附图中的图来说明本发明,但本发明并不局限于附图中的图。
图1描绘了存储器排序技术的一种实施方案。
图2a描绘了能够根据所公开的存储器排序技术操作的系统的一种实施方案。
图2b描绘了可以由图2a中的系统利用的存储转发技术的一种实施方案。
图3a是一个流程图,描绘在存储之间存在因果关系时依照一种实施方案的处理器A、处理器B和仲裁逻辑的操作。
图3b是一个流程图,描绘在存储之间不存在因果关系时依照一种实施方案的处理器A、处理器B和仲裁逻辑的操作。
图4a-4h描绘了使用所公开的存储器排序技术的系统的一种实施方案中发生的示例性存储器访问序列。
图5描绘使用基于开关的多重处理体系结构的一种实施方案。
图6描绘了使用了分级的基于分组(cluster-based)的体系结构的一种实施方案。
具体实施方式
下列描述提供了多重处理环境中基于因果性的存储器排序。在下面的描述中,阐明了多个特定的细节以提供对本发明更透彻的理解,这些细节例如系统布置和层次、总线代理的类型和逻辑划分/集成选择。然而,本领域的技术人员将会认识到没有这些特定细节也可以实践本发明。在其它实例中,没有详细显示出控制结构和门级电路,以免模糊本发明。本领域的普通技术人员用所包括的描述将能够在没有不适当的实验的情况下实现必要的逻辑电路。
所公开的存储器排序技术可以有利地改善一些系统中的整体处理吞吐量。可以通过以一种允许系统更有效地对装载和/或存储访问排序的方式放松传统的存储器排序规则来实现改进的吞吐量。可以通过或者积极地重排存储器访问或者通过允许存储器访问以放松的排序规则所允许的一种新的顺序发生来改善效率。可以实现这样的存储器排序规则以保持存储器一致性,由此允许与假定提供了传统的处理器一致性的软件向后兼容。“处理器”可以是总线代理或处理数据和/或指令并因此需要访问存储器的任意类型的设备。
图1b描绘了所公开的存储器排序技术的一种实施方案。在剩下的图中包括了不同的细节和实施方案,而且所附描述进一步解释了图1b中所提到的存储器排序技术。图1b的框100-104相对于图1a出现并对其进行了论述。
目前公开的技术偏离了图1a的框105中所详细说明的限制性排序约束。如图1b的框106所示,因果关系得以维持。维持因果关系需要保持充分连续的访问以在一个访问影响或可能影响另一个访问的情况下获得正确的结果。换句话说,如果由第二处理器装载由来自第一处理器的第一存储存储的值,这两个存储器访问的次序对于来自第二处理器的随后的存储就很重要。在装载和第一存储之后应该对由装载处理器的随后存储进行排序,因为第一存储可能会影响第二存储所存储的值。
当来自第二处理器的第二存储直接依赖于由来自第一处理器的第一存储产生的值时会发生由不同的处理器执行的两个存储之间真实的因果连接。因为推测执行和积极的预取技术,其中,可能难以精确地确定两个存储何时被真实地因果相连。因此,为简便起见,当第二处理器只装载由第一处理器在第一个存储中存储的值时可以假定因果性。
因而,当代理装载特定存储器位置的全部或部分内容时对该存储器位置的观察就发生了。当数据已经通过系统充分地传播,如果它们装载受到影响的存储器位置所有潜在的观察者都将观察到新的值时,就实现了对新存储的值的“全局观察”。换句话说,如果所有的代理在存储的全局观察之后执行装载操作,则它们都将看到新的值。如果潜在的观察者的一个子集执行装载当它们将看到新的值时,局部观察就发生了。
框110进一步依照目前公开的技术指出对传统存储器排序规则的放宽。框110声明系统对由多于一个的处理器以第一顺序产生的一组存储以便它们以不同的顺序被观察到。换句话说,在一定环境下,相对于来自另一个处理器的存储来自第一处理器的存储可进行重新排序。否定地声明这一点,该系统不强制全局排序由不同处理器到不同地址的存储。在一些实施方案中,不同的处理器可以不同的顺序观察到这样的存储的集合。值得注意地,因为一些多重处理系统中的多个处理器可以同时产生存储,所以该组存储所处的“第一顺序”可以包括同时发生的存储。
然而,根据一种实施方案框110中所允许的重排受几种条件支配。在这个实施方案中,框110中执行的重排受框100、102、104和106中的约束支配。即,只要来自每个单独处理器的存储保持有序、来自每个处理器的装载表现为按序执行、到相同地址的装载和存储被进行了全局排序并维持了因果性,就可以更改内部处理器存储排序。其它实施方案可以只采用实现具有基于因果性的存储器排序的多重处理系统中这些限制的子集。
图2a描绘了实现所公开的基于因果性的存储器排序技术的系统的一种实施方案。图2a的系统有第一多个处理器,包括处理器A 205和处理器B 210,它们与分组1仲裁逻辑230、因果监控逻辑232、访问优化逻辑234和缓冲逻辑236相耦合。类似地,该系统还包括处理器C215和处理器D 220,它们与分组2仲裁逻辑240、因果监控逻辑242、访问优化逻辑244和缓冲逻辑246相耦合。
分组仲裁逻辑230和240与中央仲裁逻辑250、因果监控逻辑260、访问优化逻辑270和缓冲逻辑280相耦合。这些组仲裁逻辑、因果监控逻辑、访问优化逻辑和缓冲逻辑中的每一组都可以同样地操作。在一种实施方案中,不同的逻辑元件合作以实现图1b中所示的存储器排序协议。尤其,访问优化逻辑模块可以改善由缓冲逻辑缓冲的装载和/或存储的完成顺序的效率,除非因果监控逻辑指示这样的重排是有问题的。中央仲裁逻辑250可以协调这些活动,执行它自己的优化,并最终把存储器访问分派到存储器(未显示)或其它仲裁逻辑(未显示)。
将就分组1讨论这些不同框的细节;然而,可以将同样的实现方式用于其它同样标记的框。就分组1而论,缓冲逻辑236缓冲来自每个代理的装载和存储。仲裁逻辑230在访问优化逻辑234的帮助下以一种有效的方式仲裁并调度来自分组1中所有代理的访问。仲裁逻辑230还为系统层次中的下一级(例如,来自中央仲裁逻辑250)上的资源仲裁。
访问优化逻辑234执行诸如访问重排、写结合(WC)和数据转发(FWD)等操作以改善由仲裁逻辑产生的访问的整体效率。然而,可以通过关于图1b论述的约束来限制这样的优化。因此,访问优化逻辑与因果监控逻辑234合作以确定容许的优化程度。例如,按照图1b中的框100,相对于来自每个代理的其它存储依次调度来自该代理的存储。
可以由访问优化逻辑234执行的一种优化是存储转发。一种实施方案执行图2b的流程图里所详细描述的存储转发。通常,存储转发(也称为数据转发)涉及到核对接收到的对于未决(缓冲)的存储的装载以检测允许带有待转发给装载存储的数据缓冲的转发条件。当装载从一个存储器位置请求数据,对该存储器位置有一个缓冲在缓冲逻辑236中的从相同代理到相同存储器位置的先前的存储时,转发条件就出现了。这种情况下,如图2b的框281和282所示,可以通过转发被缓冲的数据到请求代理来满足装载。
和框284所检测的一样,如果装载从一个存储器位置请求数据,对该存储器位置有来自不同代理到相同存储器位置的存储并且(如框288中所检测的)在这两个代理的存储之间没有因果关系,就可以像框290中所指示的那样把存储数据转发到该装载。这种情况下,就像框292中所示那样在两个代理之间建立因果关系。因此,在这个实施方案中在提供了转发数据的存储之前的存储将先于来自接收到新数据的代理的随后存储。
如果在框288中检测到了因果关系,就如框294所示检查装载和存储的顺序。当装载从一个存储器位置请求数据,对该存储器位置存在来自不同代理的(到相同存储器位置的)存储,并且在两个代理的存储之间存在因果关系时,这就会发生。如框298所示,仅在该存储被排在装载之后的下一个较早的存储之前时才可以把存储数据转发到该装载。否则像框296中所示那样不转发数据。因而,可以比传统系统中更积极地执行存储转发,并且可以方便地产生更有效的整体存储器访问。
另外,可以比传统处理器一致性多重处理系统中更积极地完成普通的装载和存储重排,因为由图1b的基于因果性的存储器排序系统所利用的约束要比通常所用的少些麻烦。因而,在一些情况下可以更早地对更关键的存储器访问排序,和/或改进整体次序。例如,可以组合或重新调整写周期以优化特定的脉冲顺序,交叉方案或为所涉及的系统特有的其它与顺序有关的约束。
分组仲裁逻辑230和240、中央仲裁逻辑250以及因果监控逻辑、访问优化逻辑和各自的缓冲逻辑可以驻留在一个单个的集成电路、部件、模块或类似单元中,如它们包含在仲裁块200中所示。或者,可以将这些逻辑块分发到不同的部件中。一种有利的实施方案是包括多个处理器(例如,A、B等)和该组处理器的分组仲裁逻辑的集成(例如,单个集成电路)多重处理系统。另外,虽然把这些逻辑单元分到两个不同的模块中有助于理解目前所公开的技术,但并不需要对由这里讨论的这些和其它模块实现的不同的逻辑功能也进行这样清晰的分离,而且这样的分离实际上在很多实现方式中也不能存在。
图3a描绘了在存储之间存在因果关系的一种情况下由图2a的系统的一种实施方案所执行的操作。如框310所示,处理器A存储值到存储器位置a和b。根据框100(图1),保持来自处理器A的所有存储相互有序。另一方面,可以用已知或另外的可用方式对于一些存储对装载进行重新排序。
另外,根据目前所公开的技术,可以在仲裁块200一级上执行存储优化。如框322所示,处理器B存储一个值在存储器位置x中。因为由处理器B执行的框322中的操作与由处理器A产生的对位置a和b的存储没有因果连接,仲裁块200可以按照框315所示把处理器A和B产生的存储重新排序成一种方便的顺序。例如,可以组合或流水一些或全部写操作并且/或者按照连续顺序排序写操作。
如框325所示,处理器B可以阻止或中断这样的重排。在框325中,处理器B观察(例如,通过装载)存储器位置b。这个观察由仲裁块200识别,它可以连续检查对所缓冲的存储的地址的访问。如框330中所示,处理器B对存储器位置b的观察导致仲裁块200在观察处理器A到b的存储之后产生的存储进行排序以便在对位置b的存储之后实际完成这样的存储。因而,仲裁块200不能在处理器A到位置b的存储之前对框327中由处理器B产生的对存储器位置y的存储进行重排。实施这个收紧的存储排序,如框335所示,直到实现了对b的全局观察。其后,可以如框340所示恢复存储重排。
因而,在图3a的实例中,公开的存储器排序技术允许在由不同处理器产生的存储之间不存在因果连接的情况下具有改进的效率。换句话说,因为由处理器A到存储器位置a的存储和由处理器B到存储器位置x的存储之间没有因果关系,所以存储可以更有效的方式进行重排。另一方面,因为处理器B到位置y的存储与处理器A到位置b的存储有因果关系,因而不能对它们进行完全地重排。不违反因果关系的合法的或允许的顺序由参考编号345所示。
图3a的实施方案允许的排序
a,b,x,y
a,x,b,y
x,a,b,y
因为大量处理器可能有更多因果不相关的存储,通过执行跨越多于两个处理器的重排可以期待附加的效率。
图3b描绘了在存储间不存在因果关系的情况下由图2a的系统的一种实施方案执行的操作。如框350所示,处理器A执行对位置a和b的存储。同样,处理器B执行对位置x和y的存储,如框355所示。因为两个处理器都不装载由另一处理器修改过的另一值,在不同的存储间也没有因果关系。因而,如框360所示,仲裁块200没有检测到因果关系。因此,可以用任意方便的顺序来执行存储,只要观察到其它系统约束。
图3b的实施方案允许的排序
a,b,x,y
x,y,a,b
x,a,y,b
a,x,b,y
x,a,b,y
a,x,y,b
图4a-4h描绘在多重处理系统中使用所公开的存储器排序技术的不同后果。在一种实施方案中,实施了图1b中所示的约束。
1.依次观察到来自每个处理器的存储(框100)。
再次,当处理器或代理(或相同代理或不同的代理)装载一个存储器位置并检索由一个存储修改的该存储器位置的新值时,这个存储就被“观察”到。当来自各个处理器的存储被依次观察到时,没有代理能够观察到来自那个处理器的连续的后来存储的新值和来自那个处理器的连续的先前存储的旧值。
图4a描绘代理A执行两个存储。初始条件是所有存储器位置存储0(在图4a-4h的所有图中)。首先,由代理A在存储器位置a中存储值1。然后,代理A还存储值1到存储器位置b。代理B、C和D以所有合法的情况(即,依照所实现的存储器排序方案的允许的次序)观察这两个存储。代理B观察到a的新值,而不是b的旧值,这是可以接受的,因为对a的存储在对b的存储之前发生。代理C观察到a和b的旧值。代理D观察到a和b的新值。没有代理能够观察到b的新值和a的旧值,因为那将违反框100的约束。
2.来自每个处理器的装载呈现为依次执行(框102)
在这个实施方案中,装载被限制以呈现为依次执行。通过呈现为依次执行,意味着如果非全局观察到的存储可能影响装载数据,装载数据就被依次返回到请求计算单元(虽然数据传输信号可能会由于总线协议、传输技术等而被重排)。如果非全局观察到的存储没有更改正在返回的装载数据,那么可以对它的返回顺序进行重排,而且数据仍然呈现为依次被返回,因为重排不影响计算单元。如果对由非全局观察到的存储更改过的存储器位置允许进行装载重排,就会影响装载和存储的相对次序,并且可能观察到存储不按次序执行。在图4a中,代理B、C和D都依次执行它们的装载,而且返回给代理的是正确的值。作为一个实例,如果允许其中一个代理不按次序退回装载,那么可能观察到b在a之前改变。
3.对到相同地址的装载和存储进行全局排序(框104)
对到相同地址的装载和存储被全局排序,使得如果两个代理都向相同地址存储值,所有观察代理观察到其中一个存储在另一个之前发生。在图4B中,代理A和代理B都向位置a存储,代理A存储1而代理B存储2。代理C、D和E以所有可能的顺序观察这两个存储。代理D观察把a的值改为1的代理A的存储,然后观察把a的值从1改成2的代理B的存储。因此,在这个实施方案中没有其它代理能够观察到相反的顺序。因此,代理C能够观察到a是0然后是1,代理E能够观察到a是0然后是2。根据这个实施方案没有代理能够观察到a是2然后a是1。
另一方面,在图4C中,代理D观察到把位置a的值从0改为2的代理B的存储,随后观察到相同位置的代理A的存储,它把位置a的值从2改为1。如果另一代理看到了相反的顺序,就违反了框104中的约束。因此,代理C首先观察到a是0,然后观察到a是1(当a是2时没有观察)。代理E观察到a是0,然后观察到a是2。
在现有技术的“处理器一致性”系统(例如,图1a)中,由不同处理器到不同地址的存储通常进行全局排序(框105)。在这样的现有技术的系统中,对到不同地址的存储全局排序,除了每个代理能够在观察到来自其它处理器的存储之前观察到它自己的存储。在图4D中,代理A和B分别在存储器位置a和b中存储值1。代理D在b是1之前观察到a是1。因此,在这个实施方案中没有其它代理在a是1之前观察到b是1。代理C观察到a和b都是0,代理E观察到a和b都是1。
在图4E中,代理A和B再次各自分别在存储器位置a和b中存储值1。代理D在观察a是1之前观察到b是1。因此,在这个实施方案中没有其它代理在b是1之前观察到a是1。代理C观察到b和a都是0,代理E观察到b和a是1。
图4F中显示了这种例外,那里代理正在观察它们自己的存储。这种情况下,并没有利用需要对到不同地址的存储进行全局排序的约束。因而,如图4F所示,代理A在代理B到位置b的存储之前观察到它自己到位置a的存储。同样,代理B在代理A到位置a的存储之前观察到它自己到位置b的存储。因而,除了自我观察例外以外,该现有技术中的策略对于来自不同处理器的不同存储是非常严格的。
4.保证因果关系(框106)
与强制对由不同处理器到不同地址的存储进行全局排序的现有技术的系统相比,一些采用了目前公开的技术的实施方案仅实施了需要用来维持因果关系的最小量的存储排序。图4G描绘了由对所存储的值的观察创建因果连接的情况。代理A存储值1到存储器位置a,代理B观察到a的存储然后执行值1到存储器位置b的存储。代理B引入到存储器位置a和b的存储之间的因果关系,因此所有代理都被约束为在对b的存储之前观察到对a的存储。代理C只这样做,首先观察到对存储器位置a的存储。显示代理D已经观察到了这两个存储,但不在观察对a的存储之前观察到对b的存储。
如果处理器B没有观察到对存储器位置a的存储,该系统可能已经对到存储器位置a和b的这些存储的全局观察进行了重排。换句话说,如果处理器B没有询问关于位置a的值,处理器C(和系统中的剩余处理器)关于是a或b首先变成1可能已经无关紧要了。因为由处理器B观察到了对a的存储,创建了因果连接,仲裁逻辑保持了a先b后的次序。
5.由不同处理器对不同地址的存储不被全局排序(框110)
图4H描绘了代理A和C存储到两个不同地址的情况。代理A存储值1在存储器位置a中,代理C存储值1在存储器位置b中。随后代理B和D以两种不同的顺序观察这两个存储。只要在代理A和C之间没有因果关系就允许这种次序(即,在对那个存储的全局观察之前没有观察到来自其它代理的存储)。因此,其它代理(非存储流出代理,在这个例子中是代理B和D)能够以不同的顺序观察到这些存储。在传统处理器排序方案中不允许这种次序。
图5示出一种利用基于开关的多重处理体系结构的系统的一种实施方案。在该系统中,中央开关500耦合多个处理器510,512,514,516,518,520,522到多个存储器和包括I/O接口530和534的I/O设备和存储器系统532和536。I/O接口530和534可分别提供接口到一个或多个I/O设备。这种基于开关的多重处理布置的基础在现有技术中是已知的。
因为有别于先前基于开关的多重处理系统,图5中所示的实施方案用图1b中所描绘的基于因果性的存储器排序技术的实施方案实现了处理器一致存储器体系结构。因此,中央开关500确保来自每个单独的处理器的存储依次被所有其它处理器观察到(框100)。只要不违反因果性,中央开关500还允许由多个处理器以第一顺序产生的一组存储被以不同的顺序观察。为此目的,在中央开关500中包括多个缓冲器502以在来自不同处理器的存储被提交给存储器(未显示)之前对它们进行缓冲。只要没有其它系统限制被暗示并且因果监控逻辑504没有检测到因果关系并因此限制可以由访问优化逻辑506完成的优化,访问优化逻辑506能够对来自多个缓冲器502的存储进行重排,执行存储转发,和/或进行其它优化。
图6描绘了一种分层的、基于分组的多重处理系统,该系统也实现所公开的存储器排序技术。图6的系统包括多个处理器,处理器650、652、654、656、658和660。处理器650和652以及任意数量的附加处理器,形成了由控制器672控制的一个分组。类似地,处理器654和656形成了由控制器674控制的一个分组,处理器658和660形成了由控制器676控制的一个分组。控制器672和674被耦合到中间级控制器680,控制器680又被耦合到顶级控制器690,控制器690与存储器(未显示)接口。控制器676也被耦合到顶级控制器690。也可以用很多其它分层布置,包括对每个分组使用不同数量的处理器,不同数量的分组和控制器的不同(或没有)划分。
在图6的系统中,可以在层次体系的不同级上执行因果监控和缓冲。例如,可以在控制器672、674、676、680和690中的每个中包括缓冲(BUF)和因果监控(CM)逻辑。存储随后被传递到层次体系中的更高级,这些层由因果监控逻辑所利用的任意已知的排序限制标记。结果,该系统中的不同处理器可以不同的顺序观察存储。例如,顶级控制器690能够比像控制器672这样的低级控制器执行更多的优化,因为顶级控制器690有更多或至少不同的存储来重新排列、组合或另外操作。
像对于其它实施方案所论述的,可以通过更有效的排列存储器访问来改善系统吞吐量。这样的优化可以包括或涉及写组合、分页、交叉、装载旁路或其它已知或可用的存储器访问优化技术。所公开的实施方案可以允许维持处理器一致性存储器排序模型,有利地提供与现有代码的向后兼容性,现有的代码假定与处理器一致性存储顺排序模型的兼容性。
因而,公开了多重处理环境中基于因果性的存储器排序。虽然已经在附图中描述并显示了一定的示范性实施方案,因为在研究这个公开内容时对本领域的普通技术人员来说可能发生多种其它修改,因而应当理解这样的实施方案仅仅是说明性的,对主要发明并无限制,而且本发明也不局限于所显示和描述的具体构造和布置。

Claims (17)

1.一种方法,包括:
从多个总线代理接收以第一顺序产生的多个存储内容;
透明地监视所述多个总线代理相对于所述多个存储内容的因果关系;
允许多个存储内容被所述多个总线代理中的至少一个其它总线代理观察,所述观察是与存储的第一顺序相反的;以及
维持一个处理器一致性存储器排序模型。
2.权利要求1的方法,还包括:
确保来自该多个总线代理中的任意一个总线代理的存储内容被所有的所述多个总线代理以与所述存储内容的第一顺序一致地进行观察。
3.权利要求2的方法,其中允许包括:
通过允许多个存储内容以与该存储内容的第一顺序相反地被观察,从而确定相对于所观察的存储内容的因果性是否被违反;
如果该重新排序违反相对于所观察的存储内容的因果性,则阻止多个存储内容中的任一个存储内容的重新排序;以及
对不违反相对于所观察的存储内容的因果性的多个存储内容的一个子组进行排序,以便由所述多个总线代理中的至少一个总线代理与该存储内容的第一顺序相反地进行观察。
4.权利要求3的方法,其中所述对是否违反因果性的确定包括确定一个存储内容是否依赖于一个先有的非全局观察的存储内容。
5.权利要求1的方法,其中一个存储内容在处理器装载了由该存储内容指示的存储器单元时被观察。
6.权利要求1的方法,其中一个存储内容在处理器装载和实际上使用由该存储内容指示的存储器单元时被观察。
7.权利要求3的方法,其中如果所述第一存储内容在第二存储内容被第二处理器执行之前先被第一处理器执行和如果第二处理器在执行第二存储内容之前装载由第一存储内容指示的存储器单元,则所述阻止包括阻止第二存储内容在第一存储内容之前被全局观察。
8.权利要求1的方法,其中所述允许包括对存储内容事务重新排序,以便更有效地访问存储器。
9.权利要求3的方法,其中所述阻止包括在存储内容缓存器中设置一个或多个排序比特,以便指示排序限制。
10.一种设备,包括:
多个缓存器;
耦合到所述多个缓存器的因果性监视逻辑电路,该因果关系监视逻辑电路监视相对于缓存的存储内容的因果关系;
存储内容转发逻辑电路,用于如果相对于第一存储内容和所述多个处理器中的第二个处理器不存在因果关系,则把来自从多个处理器中的第一处理器到第一存储单元的第一存储内容的数据转发到来自所述多个处理器中的第二处理器的第一存储单元的负荷。
11.权利要求10的设备,其中如果只是在第一存储内容被排序在一个访问负荷之后的第一存储单元的下一个较早存储内容之前时才存在因果关系的话,则所述存储内容转发逻辑电路把来自所述多个处理器中的第一处理器的第一存储内容的数据转发给来自所述多个处理器中的第二处理器的负荷。
12.权利要求11的设备,其中存储内容转发逻辑电路还把来自所述多个处理器中的第一处理器的第二存储内容的数据转发给也来自所述多个处理器的第二负荷。
13.权利要求12的设备,其中当在不存在先有的因果关系时数据从所述多个处理器中的第一处理器到第一存储单元的第一存储内容被转发到来自所述多个处理器中的第二处理器的第一存储单元的负荷时,该存储内容转发逻辑电路还通知建立因果关系。
14.一种方法,包括:
对从第一代理到第一存储单元的第一存储内容进行缓存;
相对于所述第一存储内容透明地监视负荷;
确定对于该第一存储内容和来自第二代理的第一负荷是否存在因果关系;
如果不存在因果关系,则转发来自所述第一存储内容的数据以满足第一负荷。
15.权利要求14的方法,还包括:
如果只是在第一存储被排序在一个访问负荷之后的第一存储单元的下一个较早存储内容之前时才存在因果关系,则转发来自所述第一存储内容的数据以满足第一负荷。
16.权利要求14的方法,还包括:
把来自所述多个处理器中的第一处理器的第二存储内容的数据转发给也来自所述多个处理器的第二负荷。
17.权利要求15的方法,还包括:
当不存在先有的因果关系时在数据从第一存储内容转发到所述多个处理器的第一处理器的第一存储单元到来自所述多个处理器的第二处理器的第一存储单元的负荷时,则建立因果关系。
CNB200610101532XA 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序的方法和设备 Expired - Fee Related CN100470509C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/474,527 US6681320B1 (en) 1999-12-29 1999-12-29 Causality-based memory ordering in a multiprocessing environment
US09/474527 1999-12-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB008192405A Division CN1318980C (zh) 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序

Publications (2)

Publication Number Publication Date
CN1924832A true CN1924832A (zh) 2007-03-07
CN100470509C CN100470509C (zh) 2009-03-18

Family

ID=23883901

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB200610101532XA Expired - Fee Related CN100470509C (zh) 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序的方法和设备
CNB008192405A Expired - Fee Related CN1318980C (zh) 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB008192405A Expired - Fee Related CN1318980C (zh) 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序

Country Status (6)

Country Link
US (2) US6681320B1 (zh)
CN (2) CN100470509C (zh)
AU (1) AU2750701A (zh)
GB (1) GB2374960B (zh)
HK (1) HK1047992B (zh)
WO (1) WO2001048611A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565498B1 (en) * 2005-11-07 2009-07-21 Symantec Operating Corporation System and method for maintaining write order fidelity in a distributed environment
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US8327363B2 (en) * 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
JP5239769B2 (ja) * 2008-11-14 2013-07-17 富士通株式会社 リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265220A (en) 1986-12-23 1993-11-23 Nec Corporation Address control device for effectively controlling an address storing operation even when a request is subsequently cancelled
US5185871A (en) 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5404483A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5619662A (en) 1992-11-12 1997-04-08 Digital Equipment Corporation Memory reference tagging
EP0608622A1 (en) 1993-01-29 1994-08-03 International Business Machines Corporation Multiprocessor system with multilevel caches
US5420991A (en) 1994-01-04 1995-05-30 Intel Corporation Apparatus and method for maintaining processing consistency in a computer system having multiple processors
US6049851A (en) 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
AU1973595A (en) 1994-03-01 1995-09-25 Intel Corporation Highly pipelined bus architecture
US5613153A (en) 1994-10-03 1997-03-18 International Business Machines Corporation Coherency and synchronization mechanisms for I/O channel controllers in a data processing system
US5692151A (en) 1994-11-14 1997-11-25 International Business Machines Corporation High performance/low cost access hazard detection in pipelined cache controller using comparators with a width shorter than and independent of total width of memory address
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
EP0738977B1 (en) 1995-03-31 2002-07-03 Sun Microsystems, Inc. Method and apparatus for quickly initiating memory accesses in a multiprocessor cache coherent computer system
US5887146A (en) 1995-08-14 1999-03-23 Data General Corporation Symmetric multiprocessing computer with non-uniform memory access architecture
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5987549A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Method and apparatus providing short latency round-robin arbitration for access to a shared resource
US5806086A (en) 1996-06-11 1998-09-08 Data General Corporation Multiprocessor memory controlling system associating a write history bit (WHB) with one or more memory locations in controlling and reducing invalidation cycles over the system bus
US5930822A (en) 1996-09-27 1999-07-27 Hewlett-Packard Co. Method and system for maintaining strong ordering in a coherent memory system
JP3849951B2 (ja) 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US5999727A (en) 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US6085295A (en) 1997-10-20 2000-07-04 International Business Machines Corporation Method of maintaining data coherency in a computer system having a plurality of interconnected nodes
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6154816A (en) 1997-10-24 2000-11-28 Compaq Computer Corp. Low occupancy protocol for managing concurrent transactions with dependencies
US6052760A (en) 1997-11-05 2000-04-18 Unisys Corporation Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks
US6134632A (en) 1998-01-26 2000-10-17 Intel Corporation Controller that supports data merging utilizing a slice addressable memory array
US6253291B1 (en) * 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6175930B1 (en) 1998-02-17 2001-01-16 International Business Machines Corporation Demand based sync bus operation
US6065086A (en) 1998-02-17 2000-05-16 International Business Machines Corporation Demand based sync bus operation
US6360314B1 (en) 1998-07-14 2002-03-19 Compaq Information Technologies Group, L.P. Data cache having store queue bypass for out-of-order instruction execution and method for same
US6266768B1 (en) 1998-12-16 2001-07-24 International Business Machines Corporation System and method for permitting out-of-order execution of load instructions
US6167492A (en) 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6275914B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc Apparatus for preserving memory request ordering across multiple memory controllers
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers

Also Published As

Publication number Publication date
HK1047992A1 (en) 2003-03-14
CN1437729A (zh) 2003-08-20
HK1047992B (zh) 2004-12-31
US6681320B1 (en) 2004-01-20
CN100470509C (zh) 2009-03-18
CN1318980C (zh) 2007-05-30
GB0215500D0 (en) 2002-08-14
GB2374960B (en) 2004-06-30
US20040111586A1 (en) 2004-06-10
AU2750701A (en) 2001-07-09
WO2001048611A1 (en) 2001-07-05
GB2374960A (en) 2002-10-30

Similar Documents

Publication Publication Date Title
CN112088359B (zh) 多线程自调度处理器
CN100530082C (zh) 具有用于不同线程的非对称硬件多线程支持的装置
CN100351798C (zh) 在多线程网络处理器中线程信令的分组处理方法和系统
CN1157659C (zh) 非均匀存储器访问数据处理系统及其通信方法
CN1128406C (zh) 数据处理系统及其中断处理方法
US8200799B2 (en) Hardware task manager
CN103927277B (zh) Cpu和gpu共享片上高速缓存的方法及装置
CN1735878A (zh) 数据处理器的状态引擎
CN100350401C (zh) 计算机存储器设备和计算机设备
CN1761947A (zh) 用于动态镜像库寻址的系统和方法
CN1815462A (zh) 迁移数据页面的方法和装置
CN101048763A (zh) 高速缓冲存储器的动态重新配置
CN1703025A (zh) 双向环路互连上单分组到达的流量控制方法和设备
CN1757202A (zh) 自由表和环形数据结构管理
CN1184971A (zh) 虚拟通道存储器系统
CN1601489A (zh) 利用共享专用高速缓存减少高速缓存失误率的方法和系统
CN1786927A (zh) 应用层高速缓存映像知晓和再分配的系统和方法
CN1957325A (zh) 在加锁消息中传递受保护数据
CN1881934A (zh) 微处理器、网络系统和通信方法
CN102473117A (zh) 用于存储器管理和高效数据处理的装置和方法
US11762597B2 (en) Memory system and control method controlling nonvolatile memory in accordance with command issued by processor
US10515014B1 (en) Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
CN1831778A (zh) 线程处理器中缓冲区在多个客户间的动态分配
CN103348333A (zh) 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置
CN1928811A (zh) 处理操作管理系统和方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090318

Termination date: 20171103

CF01 Termination of patent right due to non-payment of annual fee