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

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

Info

Publication number
CN1437729A
CN1437729A CN00819240A CN00819240A CN1437729A CN 1437729 A CN1437729 A CN 1437729A CN 00819240 A CN00819240 A CN 00819240A CN 00819240 A CN00819240 A CN 00819240A CN 1437729 A CN1437729 A CN 1437729A
Authority
CN
China
Prior art keywords
processors
storage
processor
logic circuit
loading
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
CN00819240A
Other languages
English (en)
Other versions
CN1318980C (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 CN1437729A publication Critical patent/CN1437729A/zh
Application granted granted Critical
Publication of CN1318980C publication Critical patent/CN1318980C/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

多重处理环境中基于因果性的存储器访问排序
背景
1.领域
本公开内容涉及处理系统领域,更具体地,本公开内容涉及多重处理系统的存储器排序技术。
2.相关技术描述
改善计算机或其它处理系统的性能通常改善了整体吞吐量和/或提供了更好的用户体验。一种改善系统中处理的指令总量的技术是增加系统中处理器的数量。然而,实现多重处理(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的系统有第一多个处理器,包括处理器A205和处理器B210,它们与分组1仲裁逻辑230、因果监控逻辑232、访问优化逻辑234和缓冲逻辑236相耦合。类似地,该系统还包括处理器C215和处理器D220,它们与分组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 (61)

1.一种设备,包括:
多个处理器;
耦合到所述多个处理器的仲裁逻辑电路,所述仲裁逻辑电路和所述多个处理器维持处理器一致性但允许由所述多个处理器中的任意两个或多个以第一顺序产生的多个存储被所述多个处理器中的至少一个其它处理器以不同的顺序观察。
2.权利要求1的设备,其中只要因果性被维持,所述仲裁逻辑电路和所述多个处理器允许该多个存储被以不同的顺序观察。
3.权利要求1的设备,其中只要因果性被维持,所述仲裁逻辑电路还对以第一顺序产生的多个存储重新排序将以使它们被以不同顺序观察。
4.权利要求2的设备,其中该仲裁逻辑电路通过允许来自所述多个处理器的第一次多个处理器的所述多个存储的第一次多个存储相对于来自第二次多个处理器的第二次多个其它存储以不同顺序被观察,如果所有所述第二个次多个处理器都没有观察到所述第一次多个存储中的任意存储。
5.权利要求1的设备,其中所述仲裁逻辑电路还确保来自所述多个处理器中任意一个处理器的存储被所有所述多个处理器依次观察。
6.权利要求5的设备,其中只有当所述第二处理器没有观察到所述第一存储时,仲裁逻辑电路才通过对来自第一处理器的第一存储进行重排以使它相对于来自第二处理器的第二存储以不同的顺序被观察而维持因果性。
7.权利要求1的设备,其中所述仲裁逻辑电路确保来自每个处理器的装载呈现为依次执行。
8.权利要求1的设备,其中所述仲裁逻辑电路确保对相同地址的装载和存储被全局排序。
9.权利要求1的设备,其中所述仲裁逻辑电路保证因果关系。
10.权利要求5的设备,其中所述仲裁逻辑电路确保来自每个处理器的装载呈现为依次执行,确保对相同地址的装载和存储被全局排序,并保证因果关系。
11.权利要求5的设备,其中该仲裁逻辑电路对来自所述多个处理器中的两个或多个处理器的的多个存储进行重排以由所述多个处理器中的不同处理器以多重不同的顺序观察。
12.权利要求5的设备,其中该多个处理器被安排成多个分组。
13.权利要求5的设备,其中该仲裁逻辑电路是基于开关的仲裁逻辑电路,一个一个单独地耦合到所述多个处理器中的每个处理器并耦合到至少一个存储器或另一个基于开关的仲裁逻辑电路。
14.权利要求1的设备,其中所述设备被集成进一个单独的多处理集成电路中。
15.权利要求1的设备,还包括存储转发逻辑电路。
16.权利要求15的设备,其中如果不存在因果关系,所述存储转发逻辑电路把从所述多个处理器的第一个处理器到第一存储器位置的存储的数据转发到从所述多个处理器的第二个处理器对第一个存储器位置的装载。
17.权利要求16的系统,其中如果只在第一存储被排在访问第一存储器位置的装载之后的下一个较早的存储之前时才存在因果关系的话,所述存储转发逻辑电路把来自所述多个处理器的第一个处理器的第一存储的数据转发给来自所述多个处理器的第二个处理器的装载。
18.一种系统,包括:
多个处理器;
耦合到所述多个处理器的仲裁逻辑电路,所述仲裁逻辑电路和所述多个处理器维持处理器一致性但允许由所述多个处理器中的任意两个或多个处理器产生的多个存储被所述多个处理器的其它处理器以不同的顺序观察。
19.权利要求18的系统,其中只要因果性被维持,所述仲裁逻辑电路和所述多个处理器允许以不同的顺序观察该多个存储。
20.权利要求18的系统,其中只要因果性被维持,所述仲裁逻辑电路还对多个存储进行重排以使它们被以不同的顺序观察。
21.一种系统,包括:
多个处理器;
耦合到所述多个处理器的仲裁逻辑电路,所述系统维持处理器一致性并维持最少量的排序以确保因果性被维持。
22.权利要求21的系统,其中只要因果性被维持,所述系统允许所述多个处理器中的任意两个或多个处理器的多个存储被所述多个处理器中的其它处理器以不同的顺序观察。
23.权利要求21的系统,其中只要因果性被维持,所述系统允许由所述多个处理器中的任意两个或多个处理器以第一顺序产生的多个存储被所述多个处理器中的至少一个其它处理器以不同的顺序观察。
24.权利要求23的系统,其中所述仲裁逻辑电路对以第一顺序产生的所述多个存储进行重排以使它们被以不同的顺序观察。
25.权利要求21的系统,其中所述仲裁逻辑电路还确保来自所述多个处理器中的任意一个处理器的存储被所有所述多个处理器依次观察。
26.权利要求21的系统,其中所述仲裁逻辑电路确保来自每个处理器的装载呈现为依次执行。
27.权利要求21的系统,其中所述仲裁逻辑电路确保对到相同地址的装载和存储被全局排序。
28.权利要求25的系统,其中所述仲裁逻辑确保来自每个处理器的装载呈现为依次执行,确保对相同地址的装载和存储被全局排序,并保证因果关系。
29.一种系统,包括:
多个处理器;
耦合到所述多个处理器的仲裁逻辑电路,所述仲裁逻辑电路包括:
存储缓冲逻辑电路;
耦合到所述存储缓冲逻辑电路的访问优化逻辑电路;和
耦合到所述访问优化逻辑电路并耦合到所述存储缓冲逻辑电路的因果监控逻辑电路。
30.权利要求29的系统,其中所述访问优化逻辑电路包括存储转发逻辑电路。
31.权利要求30的系统,其中如果不存在因果关系,所述存储转发逻辑电路将来自所述多个处理器中的第一个处理器到第一存储器位置的第一存储的数据转发给从所述多个处理器的第二个处理器对第一存储器位置的装载。
32.权利要求31的系统,其中如果只在第一存储被排在访问第一个存储器位置的装载之后的下一个较早的存储之前才存在因果关系的话,所述存储转发逻辑电路把来自所述多个处理器的第一个处理器的第一存储的数据转发给来自所述多个处理器的第二个处理器的装载。
33.权利要求29的系统,其中所述访问优化逻辑电路更改从所述多个处理器接收的装载和存储的装载和存储访问顺序。
34.权利要求29的系统,其中只要不违反因果性,所述访问优化逻辑电路确保来自所述多个处理器中的任一处理器的存储被所有所述多个处理器依次观察,并且允许由所述多个处理器中的任意两个或多个处理器以第一顺序产生的多个存储被所述多个处理器中的至少一个处理器以不同的顺序观察。
35.仲裁逻辑电路,包括:
缓冲逻辑电路;
访问优化逻辑电路;
因果监控逻辑电路;以及
仲裁逻辑电路和该因果监控逻辑电路、所述缓冲逻辑电路以及所述访问优化逻辑电路合作以允许由多个处理器中的任意两个或多个处理器以第一顺序产生的多个存储被所述多个处理器中的至少一个处理器以不同的顺序观察。
36.权利要求35的仲裁逻辑电路,其中所述仲裁逻辑电路确保来自所述多个中的任意一个的存储被所有所述多个处理器依次观察。
37.权利要求35的仲裁逻辑电路,其中所述仲裁逻辑电路确保来自每个处理器的装载呈现为依次执行。
38.权利要求35的仲裁逻辑,其中所述仲裁逻辑电路确保对相同地址的装载和存储被全局排序。
39.权利要求36的仲裁逻辑,其中所述仲裁逻辑电路确保来自每个处理器的装载呈现为依次执行,确保对相同地址的装载和存储被全局排序,并保证因果关系。
40.一种方法,包括:
从多个总线代理接收以第一顺序产生的多个存储;
允许该多个存储被所述多个总线代理中的至少一个其它总线代理以不同的顺序观察;以及
维持处理器一致性存储器排序模型。
41.权利要求40的方法,还包括:
确保来自该多个总线代理中的任意一个总线代理的存储被所有所述多个总线代理依次观察。
42.权利要求41的方法,其中允许包括:
确定允许以不同的顺序观察多个存储是否将违反因果性;
如果重排将违反因果性就阻止对多个存储中的任意一个存储的重排;
对不违反因果性的多个存储的子集进行重排以便被所述多个总线代理中的至少一个总线代理以不同的顺序观察。
43.权利要求42的方法,其中确定是否违反因果性包括确定存储是否依赖于在前的非全局观察的存储。
44.权利要求40的方法,其中观察一个存储包括确定一个处理器是否已经装载了由该存储指示的存储器位置。
45.权利要求40的方法,其中观察一个存储包括确定一个处理器是否装载并实际使用由该存储指示的存储器位置。
46.权利要求42的方法,其中阻止包括,如果在第二存储被第二处理器执行之前由第一处理器执行所述第一存储并且如果第二处理器在执行第二存储之前装载了由第一存储指示的存储器位置,就阻止在第一存储之前对第二存储进行全局观察。
47.权利要求40的方法,其中允许包括依次重排存储事务以更有效地访问存储器。
48.权利要求42的方法,其中阻止包括在存储缓冲器中设置一个或多个排序位以指示排序限制。
49.一种系统,包括:
多个处理器;
耦合到所述多个处理器的仲裁逻辑电路,所述仲裁逻辑电路包括存储转发逻辑电路以在如果不存在因果关系时转发来自所述多个处理器中的第一个处理器到第一个存储器位置的第一存储的数据到来自所述多个处理器中的第二个处理器对第一存储器位置的装载。
50.权利要求49的系统,其中所述存储转发逻辑电路把来自所述多个处理器中的第一个处理器的第一存储的数据转发给来自所述多个处理器中的第二个处理器的装载,如果只在第一存储被排在装载之后访问第一存储器位置的下一个较早的存储之前时才存在因果关系的话。
51.权利要求50的系统,其中在不存在在前的因果关系时,存储转发逻辑电路还用信号通知因果关系,该因果关系是当把来自所述多个处理器中的第一个处理器到第一存储器位置的第一存储的数据转发给来自所述多个处理器中的第二个处理器对第一存储器位置的装载时建立的。
52.权利要求49的系统,其中只要因果关系被维持,所述仲裁逻辑电路允许所述多个处理器中的任意两个或多个处理器以第一顺序产生的多个存储被所述多个处理器中的至少一个处理器以不同的顺序观察。
53.权利要求52的系统,其中该仲裁逻辑电路包括访问优化逻辑电路以对以第一种顺序产生的多个存储进行重排以被以不同的顺序观察。
54.一种设备,包括:
多个缓冲器;
存储转发逻辑电路,如果不存在因果关系就转发来自多个处理器中的第一个处理器对第一存储器位置的存储的数据到来自所述多个处理器的第二个处理器对第一存储器位置的装载。
55.权利要求54的设备,其中如果只在第一个存储被排在在装载之后访问第一个存储器位置的下一个较早的存储之前时存在因果关系的话,存储转发逻辑电路把来自所述多个处理器中的第一个处理器的第一个存储的数据转发给来自所述多个处理器中的第二个处理器的装载。
56.权利要求55的设备,其中存储转发逻辑电路还把所述多个处理器中的第一个处理器的第二存储的数据转发给也来自所述多个处理器的第二装载。
57.权利要求56的设备,其中当不存在在前的因果关系时,存储转发逻辑电路还用信号通知正在建立的因果关系,该因果关系是把数据从来自所述多个处理器中的第一个处理器到第一存储器位置的第一存储转发到来自所述多个处理器中的第二个处理器对第一存储器位置的装载时建立的。
58.一种方法,包括:
缓冲从第一代理到第一个存储器位置的第一存储;
确定对于来自第二代理的第一装载是否存在因果关系;
如果不存在因果关系,转发来自所述第一存储的数据以满足第一装载。
59.权利要求58的方法,还包括:
如果只在第一个存储被排在装载之后访问第一个存储器位置的下一个较早的存储之前才存在因果关系,就转发来自所述第一存储的数据以满足第一装载。
60.权利要求58的方法,进一步包括:
转发来自多个处理器中的第一个处理器的第二存储的数据到也来自所述多个处理器的第二装载。
61.权利要求59的方法,进一步包括:
当不存在在前的因果关系时,在数据被从来自所述多个处理器中的第一个处理器对第一存储器位置的存储转发到来自所述多个处理器中的第二个处理器对第一个存储器位置的装载时建立因果关系。
CNB008192405A 1999-12-29 2000-11-03 多重处理环境中基于因果性的存储器访问排序 Expired - Fee Related CN1318980C (zh)

Applications Claiming Priority (2)

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

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
CN1437729A true CN1437729A (zh) 2003-08-20
CN1318980C CN1318980C (zh) 2007-05-30

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 Before (1)

Application Number Title Priority Date Filing Date
CNB200610101532XA Expired - Fee Related CN100470509C (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
JP2541771B2 (ja) 1993-01-29 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 原子的メモリ参照方法及びシステム
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
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
US6275914B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc Apparatus for preserving memory request ordering across multiple memory controllers

Also Published As

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

Similar Documents

Publication Publication Date Title
CN112088359B (zh) 多线程自调度处理器
CN100351798C (zh) 在多线程网络处理器中线程信令的分组处理方法和系统
CN100530082C (zh) 具有用于不同线程的非对称硬件多线程支持的装置
CN1157659C (zh) 非均匀存储器访问数据处理系统及其通信方法
CN1690982A (zh) 用于交错存储器的系统和方法
CN1128406C (zh) 数据处理系统及其中断处理方法
US8200799B2 (en) Hardware task manager
US20020146022A1 (en) Credit-based flow control technique in a modular multiprocessor system
CN100350401C (zh) 计算机存储器设备和计算机设备
CN1702858A (zh) 具有双向环路互连的多处理器芯片
CN1735878A (zh) 数据处理器的状态引擎
CN1342940A (zh) 到一个共享的协处理器资源的多个逻辑接口
CN1761947A (zh) 用于动态镜像库寻址的系统和方法
CN1703025A (zh) 双向环路互连上单分组到达的流量控制方法和设备
CN1147650A (zh) 多处理系统
CN101042679A (zh) 维护存储器一致性的方法和系统
CN1815462A (zh) 迁移数据页面的方法和装置
CN1184971A (zh) 虚拟通道存储器系统
US11762597B2 (en) Memory system and control method controlling nonvolatile memory in accordance with command issued by processor
CN1841330A (zh) 用于管理多节点smp系统的方法和系统
CN1957325A (zh) 在加锁消息中传递受保护数据
CN1752896A (zh) 操作系统协作下的嵌入式设备电源管理方法及系统
JP2020115367A (ja) ローカライズされたデータアフィニティシステム及びハイブリッド法
CN1444154A (zh) 多处理机系统
US10515014B1 (en) Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence

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: 20070530

Termination date: 20171103

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