CN1130652C - 使被重试的监听命中时前进的方法以及数据处理系统 - Google Patents
使被重试的监听命中时前进的方法以及数据处理系统 Download PDFInfo
- Publication number
- CN1130652C CN1130652C CN99101309A CN99101309A CN1130652C CN 1130652 C CN1130652 C CN 1130652C CN 99101309 A CN99101309 A CN 99101309A CN 99101309 A CN99101309 A CN 99101309A CN 1130652 C CN1130652 C CN 1130652C
- Authority
- CN
- China
- Prior art keywords
- intervention
- data item
- state
- coherency state
- retry
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
当监听多处理器系统总线的设备探测到要对一致性状态中本地存储器中的数据进行请求操作时,该设备试图进行一次干预。如果这时第二个设备产生了重试,妨碍了该次干预,该设备就会设置一个标记,来指出有关该次干预失败的历史信息。在以后对同一Cache位置进行监听命中时,如果该设备欲再次进行干预,并且被监听的操作再次被重试,那么该设备就会采取行动改变被请求的Cache项的一致性状态,使其向请求Cache项的原始操作所期望的最终一致性状态前行。
Description
技术领域
本发明一般涉及多处理器系统中的监听操作,特别是涉及多处理机系统中一个设备重试由另一个设备启动的监听操作。更具体而言,本发明涉及使被重试的监听操作向一个最终状态继续前进,以便其他通信也能进行,并减少出现活锁的可能。
背景技术
当前的数据处理系统是利用多处理器、多级Cache(高速缓冲存储器)层,或两者来提高性能的。常规的对称多处理器(SMP)系统采用若干个处理单元,这些处理单元可以包括通过一个公共系统总线连接的一个处理器和一级或多级Cache存储器。公共系统总线同时还把处理单元与所有附加的Cache存储器以及系统存储器连接在一起。在这类SMP系统中,每一个处理单元都有能力作为一个系统总线主设备,启动将对存储层会产生影响的总线操作。在存储层中用来控制附加Cache的Cache控制器也能够作为系统总线主设备工作,并且能够监听由连接在系统总线上的其他设备启动的总线操作。为了维护一致的存储器层,设备也可以干预被监听的总线操作。
存储层的一致性是通过所选的存储器一致性协议,如MESI协议,来维护的。在MESI协议中,一致性状态标志结合一致性粒度(例如,Cache行或扇区)来存储,至少结合所有上级Cache存储器的每一个粒度存储。由Cache目录中比特位标志的一致性状态表示相对于系统存储器中存储相同数据的Cache项的状态,即基本的MESI一致性协议中的状态:修改后(M-Modified)、独占(E-Exclusive)、共享(S-Shared)、或无效(I-Invalid)。修改后状态表示与系统存储器中相应数据有关的Cache数据已被修改,而系统存储器数据没有被修改,因而该数据唯一有效的拷贝存放在Cache项中,即它存储着被修改过的Cache行或扇区。独占状态表示Cache项与系统存储器一致,但该Cache项只存在在该级存储层中所有Cache中的主题Cache(subject cache)中。共享状态表示Cache项可存在在主题Cache中,以及存储层中至少一个其他同级Cache中,并且所有数据拷贝都与系统存储器中的相应数据一致。最后,无效状态表示给定Cache中的Cache项——包括数据和地址标志——不再与系统存储器或存储层中的其他Cache一致。
修改版MESI基本协议增加了另外几个状态,这是以Cache目录中额外的比特位开销为代价的。当Cache数据与系统存储器中对应的数据进行比较时,这些状态用来表示与该Cache数据状态有关的信息。例如,R-MESI协议增加了一个称为最近(R)的状态,该状态基本上是共享状态的变种,即表示Cache项既可存在在主题Cache中,又可存在在存储层中至少一个其他同级Cache中,并且主题Cache和其他Cache中的所有数据拷贝都与系统存储器中的对应数据一致,但是它还表示,在包含共享数据的所有Cache中主题的Cache在系统总线事务处理中,如系统存储器读操作中接收该数据。有关R状态更全面的描述见美国专利申请系列号08/839,557,在此全部引入作为参考。在基本MESI一致性协议中还增加了另一个附加的一致性状态,即守留(H-Hovering)状态,它表示Cache项标志字段中存储的地址标志是有效的,但所关联的数据项(例如,Cache行或Cache扇区)是无效的。有关H状态更详细的描述见美国专利申请号09/024,610,在此也全部引入作为参考。
为了保持存储层中数据的完整性,设备如处理器和Cache控制器可以干预被监听的总线操作。例如,当一个设备对第二个设备中处于修改后状态的特定数据请求起动读或带修改意向的读(rwitm)请求时,第二个设备就会干预总线操作,从而把修改过的数据发送给提出请求的设备(“修改式干预”)。类似地,当读或rwitm总线操作所请求的数据存放在最近状态中的设备中时,该设备会干预被请求的数据(“共享式干预”)。在这两种情况下,干预的监听设备决定它应该响应读或rwitm请求(称为“监听命中”)。然而,在其中任一情况下,若第三个设备同时也在监听系统总线事务,该设备则可能重试初始的总线操作,实际上消除该请求和该响应性干预。
在当前设计中,当读或rwitm请求被重试时,干预一般会被终止,而一致性状态保持不变,并且当请求的被重试停止时,干预设备发出数据。这样,处理资源被重试的监听命中而实际上浪费,并导致没有向达到作为原始请求的最终目标——数据传输有所前进。而且,在有些场合下,可以使读或rwitm请求被重复起动和重复重试,而引起请求被重试的环境不发生任何变化。这种事件称为“活锁”。活锁将导致两个或多个系统设备相互干扰,而有用的工作却无法完成。象无休止的循环一样,活锁一般必须通过外部调解来终止。
因此,渴望有这样一种机制,使重试的监听命中时能够向被重试的总线操作最终被解决继续前进。更进一步还渴望这种机制能够辅助防止活锁的发生,并能释放其他监听操作的监听队列。
发明内容
因此,本发明的一个目标是提供一种在多处理器系统中处理监听操作的改进方法和装置。
本发明的另一个目标是提供一种在多处理器中处理一种设备启动的监听操作和另一个设备重试的监听操作的改进方法和装置。
本发明还有一个目标是提供一种方法和装置,使被重试的监听操作向最终状态继续前进,以便其他通信也能进行,并减少出现活锁的可能。
前面所述的实现目标现在给予描述。当监听多处理器系统系统总线的设备探测到要对处于一致性状态的本地存储器中的数据进行请求操作,即要求从该设备输出数据时,该设备试图进行一次干预。如果这时第二个设备确立重试,妨碍了该次干预的进行,那么该设备就会设置一个标记,来表示有关该次干预失败的历史信息。以后在对同一Cache位置进行监听命中时,如果该设备欲再次确立干预,并且被监听的操作要再次被重试,那么该设备就会采取行动改变被请求的Cache项的一致性状态,使其向请求Cache项的原始操作所期望的结果的最终一致性状态前行。当被请求的Cache项所包含的数据是修改后存放在该设备本地存储器中的数据时,相应动作可以包括一个推操作,把被请求的Cache项写至系统存储器。系统总线上的其他设备可以监听该操作,从而更新这些设备的本地存储器。当被请求的Cache项所包括的数据是处于一致性状态而不是修改后状态时,相应动作可只包括把一致性状态改变为共享状态或无效状态。如果原始操作是一个读操作,那么一致性状态的改变将沿序列前进,并在共享状态终止。如果原始操作包括一个欲改变被请求的Cache项的标志,例如一个欲进行修改的读操作,那么一致性状态的改变将沿终止在无效状态的序列前进。这时,不使用反映一次干预失败的标志,而代之以使用一个计数器来决定干预失败的次数何时超过其阈值,从而表示出活锁可能已经发生。
上面有关本发明的阐述,以及本发明的附加目标、特征和优点将在以下详细的书面描述中给予明确表述。
附图说明
本发明的特征的新颖性在附加的权利要求中给予阐述。但是该发明本身,及其较佳的使用方式、更进一步的目标和优点将能通过参考以下详尽的说明性实施例,并借助相应的附图得以最佳地理解。
图1描述按照本发明的较佳实施例的多处理器数据处理系统;
图2和2A-2C是按照本发明的较佳实施例的逻辑框图,描述被重试的监听命中时前行的机制,包括多路交替的一致性状态的转换;以及
图3描述按照本发明的较佳实施例的响应重试干预的进程的流程图。
具体实施方式
现在请参考诸图,特别是图1,它描述了按照本发明的较佳实施例的多处理器数据处理系统。数据处理系统100是一个对称多处理器(SMP)系统,包括多个处理器:102、104和105。这些处理器中优选地包括一个由纽约Armonk国际商用机器公司生产的PowerPCTM系列处理器。尽管在本示范性实施例中只描述了两个处理器,但本领域的技术人员将理解附加的处理器可以使用在按照本发明的多处理器数据处理系统中。
处理器102、104和105分别包括一级(L1)数据Cache 106、108和109,以及L1级指令Cache 110、112和113。尽管在本示范性实施例中是按分叉的两部分,即指令Cache和数据Cache说明的,但本领域的技术人员理解单个统一的L1级Cache是可以实现的。为了最大程度地减小数据存取的等待时间,在数据处理系统100中,可以实现一级或多级附加的Cache存储器,例如,二级(L2)Cache 114、116和118。较低级的Cache——L2级Cache 114、116和118,以及更低级的Cache用来把数据送至L1级Cache,并典型地具有依次增大的存储能力,但存取等待时间也会相应增大。例如,数据Cache106、108和109,以及指令Cache 110、112和113每一个都可以具有32KB的存储能力,以及接近1-2个处理器周期的存取等待时间。L2级Cache 114、116和118可以具有512KB的存储能力,但存取等待时间达5个处理器周期,而三级Cache(L3)(如果有的话)可以有4MB的存储能力,但存取等待时间却大于15个处理器周期。因此典型地,充当处理器102、104和105与系统存储器120之间的中介存储Cache的L2级Cache具有更强大的存储能力,但其存取等待时间却会超过50个处理器周期。
在数据处理系统100中,Cache层中Cache的级数以及Cache层的配置都可以改变。实例中所示的L2级Cache 114、116和118是专用Cache,被连接在各自对应的处理器102、104和105与系统存储器120之间(通过系统总线122)。有时,L3级Cache(如果有的话)可以作为后备Cache,逻辑上与L2级Cache 114、116和118垂直分布。结果是,尽管当L2级Cache 114、116或118未命中,而L3级Cache命中时,只在L3级Cache中检索数据或指令,但是L2级Cache114、116或118中的某一个以及相应的L3级Cache(未示出)却可以同时查找该数据或指令。本领域的技术人员将理解所描述的级和配置的各种排列都可以实现。
L2级Cache 114、116和118是通过系统总线122连接到系统存储器120上的。同时,连接到系统总线122上的设备也可以是一个存储器映射设备124,例如连接显示器的图形适配器(未示出),以及输入/输出(I/O)总线桥126。I/O总线桥126连接着系统总线122和I/O总线128。I/O总线128向I/O设备130和非易失存储器132提供连接。系统总线122、I/O总线桥126,以及I/O总线128因此构成了一个连接附属设备的互联结构,这种结构的替代实现在本领域中是已知的。I/O设备130包括常规外围设备,如键盘、诸如鼠标器或跟踪球等图形指点设备、显示器和打印机,它们通过常规适配器连接在I/O总线128上。非易失存储器132可以包括硬盘驱动器,以存放操作系统和控制系统100操作的其他软件。它们被装载入易失系统存储器120中,以响应被通电的系统100。本领域中的技术人员将理解数据处理系统100可以包括许多在图1中未示出的附加部件,例如串行和并行端口,连接网络或附属设备的部件,控制存取系统存储器120的存储器控制器,等等。这些修改和变化均在本发明的精神实质和范围之内。
系统总线122上典型的通信事务包括:一个表示事务的源的源标志,一个可选的用来指定事务目的接收方的目标标志,一个地址和/或数据。连接在系统总线122上的每一个设备最好监听系统总线122上的所有通信事务,同时在需要时干预对其他接受方试图进行的通信事务,并在可行和适当的时候,再生对该设备内所复制的系统存储器数据的改变。
参考图2和2A-2C,其中给出了按照本发明的较佳实施例的使被重试的监听命中时继续前行这一机制的逻辑框图。本发明的描述与图1中所描述的L2级Cache 114、116和118以及系统总线122有关,尽管本领域的技术人员将能理解该发明可以针对其他Cache级和设备配置来实现。假设示范性实施例中所描述的Cache层至少使用了以上所述的R-MESI Cache一致性协议。在本发明中,第一个设备,如L2级Cache 118,在系统总线122上起动一个读或rwitm操作202。被请求的项208在以修改后状态或者最近状态存放在第二个设备中,如L2级Cache 114中。在探测到读或rwitm操作202时,L2级Cache 114产生干预响应204,以便把数据传送给请求设备。然而,干预响应204受到第二个设备,如L2级Cache 116,的阻挠,同时产生系统总线122上的重试206。接着,试图产生干预响应204的设备,即实例中所述的L2级Cache 114设置一个与被请求的Cache项208关联的标志210。
如果原始的读或rwitm操作202在系统总线122上被再次起动,并请求Cache项208,再一次得到来自L2级Cache 114的干预响应204的响应,并再一次被第三个设备如L2级Cache 116所重试,那么L2级Cache 114就将在它自己的存储器中起动一个动作,改变与被请求的Cache项208关联的一致性状态。例如,在修改后的Cache项208被操作202所请求的情况下,L2级Cache 114可以起动一个推操作,把(修改的)被请求的Cache项208写至系统存储器之中。其他设备可以从系统总线上监听推操作,从而用被请求的Cache项208的拷贝更新这些设备自己的存储器。另一方面,如果原始读或rwitm操作202在系统总线122上被起动,并第二次请求Cache项208,但是来自L2级Cache 114的干预响应204没有被来自第三个设备的重试响应206所阻挠,那么干预将按正常的方式继续进行。
值得注意,当系统所支持的一致性协议包含悬浮状态时,推操作允许该系统内其他设备——这些设备拥有处于悬浮状态的被请求的Cache项——更新本地(Cache)存储器中与被请求的Cache项的地址标志相关联的数据,使得在该本地存储器中,被请求的Cache项的一致性状态将转变为共享状态。
在推操作之后,根据原始操作202,被请求的Cache项208接着在L2级Cache 114中改变为共享或无效一致性状态。例如,如图2A所示,如果操作202仅仅是一个读操作,那么Cache项208就将从修改状态208a改变为共享状态208b;另一方面,如果操作202是一个rwitm操作,那么Cache项208就将从修改状态208a改变为无效状态208c。但是,在上述任一情形下,L2级Cache 114都将向最终状态继续前行,并为其他设备启动的其他总线通信事务让路。倘若读或rwitm操作202再次激活重试操作206,并接着被第三次启动,那么L2级Cache 114就不必对重新启动的操作设置修改后的干预204。
类似地,在操作202请求处于最近一致性状态的Cache项时,L2级Cache 114可以只改变被请求的Cache项208的一致性状态,即当操作是读时,从最近一致性状态208d改变为共享状态208e,当操作为rwitm时,从最近一致性状态208d改变为无效状态208f。如图2B所示。在当前所描述的实施例中,无论操作202在第二次尝试时是否被重试,以前干预失败的对象——被请求的Cache项208,其一致性状态都要被改变。如果操作200被重试,并且接着重新起动第三次尝试,那么L2级Cache 114就不必对被请求的Cache项208设置共享式干预。在原始操作202完成后,被请求的Cache项208的一致性状态被改变成与预期的最终状态相匹配。可能包含阻止干预的其他系统总线操作因此可以继续执行,直至完成。避免了干预及其他操作阻止了其他操作得以执行并完成的可能性,这种干预及其它操作使该系统基本上获得了在重复启动并重试操作的情况下的活锁的挂起状态。
用一般术语,本发明使被重试的监听命中状态时前进的机制包括:在系统总线上,对探测一个以前干预失败的对象作出响应,采取一个动作,该动作把被请求的Cache项的一致性状态移向原始操作完成时所期望的一致性状态。设备对被请求的Cache项一致性状态的这一改变可以替代试图进行第二次干预执行,并旨在消除继续干预的需要,如果该操作被重试及重新起动不止一次的话。例如,假设L2级Cache 118在系统总线122上启动一个读或rwitm操作。第二个设备,如L2级Cache 114,在系统总线122上作出修改式干预或共享式干预204的响应;第三个设备,如L2级Cache 116,产生重试206。当干预204被重试206终止时,L2级Cache 114将设置一个标志,表示出被请求的Cache项已经成为失败的干预的对象。当再次通过监听逻辑探测到该同一操作时,L2级Cache 114将起动一动作,旨在完成状态的前行,即对处于修改后一致性状态的Cache项208实施推操作,和/或将Cache项208的一致性状态改变为共享或无效一致性状态,如上所述。每一个Cache项(即Cache行、扇区或块,这要根据Cache操作的粒度而定)可以使用一个标志来区分已经成为被重试的干预对象的Cache项与还没有成为被重试的干预对象的Cache项。分开的标志可用来区分处于修改状态208a的已经成为被重试的干预对象的Cache项与处于最近状态208d的类似的Cache项。另外,同样的标志可用于任一初始的一致性状态继续前行。这个与被请求的Cache项208相关的标志可以只在软件中设置,或者用专用硬件来实现这一意图。当然,其原理可以很容易地扩展为对被重试的操作和干预的次数进行计数,并且,一旦达到某一阈值,就象上面所描述的一样,使之前行。可以利用硬件或软件计数器来实现这一意图,并选定一阈值,反映出该操作以及干预的重复启动和重试可能已经产生了活锁的判定。
根据所支持的一致性协议和设计意图,本发明可被实现为:转移通过各种一致性状态中所有或大部分一致性状态,向正在被重复重试的操作和干预的最终状态前行。设备可以配置为,每一次当重试已被请求但不是处于共享或无效一致性状态的Cache项的干预操作时,状态都向前进行。精确地讲,除了被请求的Cache项处于共享或无效状态(无需干预)的情况外,每一次重试干预时,该设备都试图执行以下工作,即把被请求的Cache项的一致性状态移向预期的最终一致性状态。例如,假设这里支持R-MESI一致性协议。当被请求的Cache项开始时处于修改状态208g时,响应读操作,该设备产生一次修改式干预。如果修改式干预被另一个产生了重试操作的设备所阻挠,则可执行推操作,从而把被请求的Cache项写至系统存储器。假如早在前面描述的悬浮状态没有被实现,该设备就不必假设推操作被其他设备从系统总线上监听,但可以只把被请求的Cache项的一致性状态改变为独占状态208h。对以后启动的同一读操作,该设备驱动共享式干预。如果共享式干预受到重试信号的阻挠,该设备可以把被请求的Cache项的一致性状态改变为最近状态208i。由于一致性状态的改变只反映了该设备试图向最终一致性状态前行,所以不需要启动什么操作。类似地,对以后所启动的读操作,该设备将再次驱动共享式干预。如果该共享式干预被重试,那么该设备可以把被请求的Cache项的一致性状态改变为共享状态208j,这便是读操作如果成功地完成时所请求的项的期望的一致性状态。同样,由于设备只试图向被启动的操作的最终状态前行,所以不需要启动什么操作。
如果被启动并引发启动一次干预的操作是rwitm,而不是读的话,那么已描述的一致性状态链将走向无效状态208k,而不是共享状态208j。依照本发明,并根据不同的设计方案,图2C中所描述的一致性状态的全部或只有部分转移可用于进行状态前行。另外,每个一致性状态转移将作为干预次数的阈值的结果而进行,而不是因一次干预被阻挠而进行。
现在请参考图3。图3是一个高级流程图,它描述了按照本发明的较佳实施例对被重试的干预进行响应的进程。该进程起始于步骤302,作为监听命中的结果,它描述的是探测到一个操作,该操作的数据应来源于本地或Cache存储器(即被请求的数据存放在处于修改后、最近或等价的一致性状态的本地或Cache存储器中)。该进程接着通过到步骤304,该步骤表明试图干预被监听的操作,然后是步骤306,在该步骤中确定尝试性干预是否受到重试的阻挠。如果没有,进程将继续到步骤314,该步骤描述对被请求数据项的一致性状态的更新,然后到步骤316,该步骤说明过程为空闲,一直到下一次监听命中为止。在这里允许该干预按正常方式前行。但是,如果尝试性干预受到重试的阻挠,进程就将进入步骤308,在该步骤中确定前面的干预是否被重试。
要确定前面的干预是否被重试,可以根据历史信息来进行。历史信息是通过设置一个与被请求的Cache项相关的标志来表示的,这在以前已做过描述。如果前面的干预已经被重试,过程就会转至步骤310,该步骤用于确定被请求的数据项是否处于修改后一致性状态。如果是,过程将进入步骤312,该步骤说明对存储器执行推操作,从而保持数据的完整性。然后转至步骤314,该步骤用于更新被请求的Cache项的一致性状态。然而,推操作承担与下述动作相同的目标,即修改该一致性状态,而不起动操作:将一致性状态移向最终期望的一致性状态,并允许其他操作继续前行。因此,返回至步骤310,如果被请求的数据项没有处于修改后状态,进程将直接转至步骤314,在该步骤中更新被请求的Cache项的一致性状态。
再来看步骤308,如果前面没有对被请求的Cache项起动过干预,进程将进入步骤318,在该步骤中设置与被请求的Cache项相关的标志,以表示对该项的干预已经被重试。接着进程将从步骤314或者步骤318转至步骤316,该步骤表示过程变为空闲,直到下一次监听命中为止。
步骤308和318中所描述的部分进程还有另一种可选的方式,如步骤308a和318a所示。这里不去确定单次尝试性干预是否已被重试,取而代之的是在步骤308中进行一次判定,判定是否已对被请求的Cache项重试过阈值数x次试图的干预。因此,该进程包括确定是否有大于x次的干预已被重试,见步骤308a,即通过检查对被重试的干预进行计数的计数器来进行确定。如果干预被重试的次数超过了干预次数阈值,该进程将包括在一致性状态改变后复位计数器,这一点在位于步骤308a和310之间的步骤320中给予了说明。但是,如果还没有超出阈值,进程将使计数器加一,如步骤318a所示。
本发明能够帮助多处理器系统避免活锁的发生,释放系统内设备的监听队列,使其他工作能得以进行,并在系统中总线上所有设备都很忙时帮助系统提高吞吐量。在有些Cache位置上,以前的监听命中已经被重试过,对这些Cache位置的监听命中将向数据一致性状态的最终状态前进。如果需要,数据可以被推至系统总线,在这里,其他设备易于进行监听,从而允许悬浮状态中的Cache项——支持这一一致性状态时—更快速地转变为共享状态。
这里着重指出,尽管本发明描述的是关于全功能数据处理系统,但本领域的技术人员会理解本发明的机制可用不同形式的计算机可读的指令介质的形式分发,并且无论用哪种特殊类型的信号携带介质来进行实际的分发,本发明都同样适用。例如,计算机可读的介质可以包括:非易失、硬编码的介质类型,如只读存储器(ROM)或可擦除电可编程只读存储器(EEPROM),可记录类型介质如软盘、硬盘驱动器与CD-ROM,以及传输类型介质如数字和模拟通信链路。
尽管已经参考该发明较佳实施例对该发明做了具体说明和描述,但是本领域的技术人员将能理解,在不背离该发明的精神实质和范围的情况下,可以进行形式上和细节上的各种改变。
Claims (20)
1.一种使被重试的监听命中时前进的方法,该方法包括:
监听由系统存储层中远程设备启动的操作;
响应探测到包括与本地数据存储器中包含的数据项相关的地址标志的一个操作,检测该数据项的一致性状态;
响应确定该一致性状态表示数据项应从本地数据存储器中检索,而不是从存储层次的其他部分中检索,确立一次干预;并且
响应该干预被重试,改变本地存储器中数据项的一致性状态,以排除与该干预同样类型的对包括与该数据项相关的地址标志的后续操作的后续干预。
2.权利要求1的方法,其特征在于,确立干预的步骤进一步包括:
响应确定该一致性状态表示该数据项是根据系统存储器中对应的数据项进行修改的,确立修改式干预。
3.权利要求2的方法,其特征在于,改变本地存储器中数据项的一致性状态的步骤进一步包括:
起动把修改后的数据项写至系统存储器的操作。
4.权利要求3的方法,其特征在于,改变本地存储器中数据项的一致性状态的步骤进一步包括:
改变该一致性状态到共享状态。
5.权利要求3的方法,其特征在于,改变本地存储器中数据项的一致性状态的步骤进一步包括:
改变该一致性状态到无效状态。
6.权利要求3的方法,其特征进一步包括:
确定该操作是否表示意图修改数据项。
其中,改变本地存储器中数据项的一致性状态的步骤包括改变该一致性状态到共享状态,如果该操作不表示意图修改数据项的话;并且还包括改变该一致性状态到无效状态,如果该操作表示意图修改数据项的话。
7.权利要求1的方法,其特征在于确立干预的步骤,进一步包括:
响应确定该一致性状态表示数据项是从系统存储器中最近检索到的,确立共享式干预。
8.权利要求7的方法,其特征在于,改变本地存储器中数据项的一致性状态的步骤进一步包括:
改变该一致性状态到共享状态。
9.权利要求7的方法,其特征在于,改变本地存储器中数据项的一致性状态的步骤进一步包括:
改变该一致性状态到无效状态。
10.权利要求1的方法,其特征在于进一步包括:
设置与本地数据存储器相关的一个标志,该标志表示一个尝试性干预已经被重试。
11.权利要求1的方法,其特征在于进一步包括:
响应该干预被重试,检测与本地数据存储器相关的标志,并且用第一个状态表示出以前尝试性干预已被重试,
其中,改变数据项一致性状态的步骤包括:响应确定标志是处于第一个状态,改变该一致性状态。
12.权利要求1的方法,其特征在于进一步包括:
增量与本地数据存储器相关的计数器,表示出尝试性干预已经被重试的次数。
13.权利要求1的方法,其特征在于进一步包括:
响应该干预被重试,检测与本地数据存储器相关的计数器中的值,其表示出尝试性干预被重试的次数,
其中,改变数据项一致性状态的步骤包括:响应确定该计数器中的值超出阈值,改变该一致性状态。
14.数据处理系统,包括:
与系统总线相连接的第一个存储器;
与系统总线相连接及监听由第一个存储器启动的操作的第二个存储器的监听逻辑,响应探测到一个操作,该操作包含与第二个存储器中数据项相关的地址标志,检测该数据项的一致性指示器;
响应探测数据项的一致性状态而确立干预的干预逻辑,该状态表示数据项应当来源于第二个存储器;以及
响应要被重试的干预,改变第二个存储器中数据项一致性状态的一致性维护逻辑,以排除与该干预同样类型的对包括与该数据项相关的地址标志的后续操作的后续干预。
15.权利要求14的数据处理系统,其特征在于:
该一致性状态表示该数据项是根据系统存储器中相应的数据项进行修改的,以及
干预逻辑确立一个所修改的干预。
16.权利要求15的数据处理系统,其特征在于,响应干预要被重试该一致性维护逻辑起动一操作,把修改后数据项写入系统存储器,并改变该一致性状态到共享状态。
17.权利要求15的数据处理系统,其特征在于,响应干预要被重试,该一致性维护逻辑起动一操作,把修改后数据项写入系统存储器,并改变该一致性状态为无效状态。
18.权利要求14的数据处理系统,其特征在于进一步包括:
与第二个存储器相关,并表示以前的干预是否被重试的标志。
19.权利要求18的数据处理系统,其特征在于,在标志被置位时响应该干预被重试,该一致性维护逻辑改变数据项的一致性状态。
20.权利要求14的数据处理系统,其特征在于进一步包括:
与第二个存储器相关,并包含以前干预被重试的次数的计数的计数器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/024,616 | 1998-02-17 | ||
US09/024,616 US6138218A (en) | 1998-02-17 | 1998-02-17 | Forward progress on retried snoop hits by altering the coherency state of a local cache |
US09/024616 | 1998-02-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1226708A CN1226708A (zh) | 1999-08-25 |
CN1130652C true CN1130652C (zh) | 2003-12-10 |
Family
ID=21821523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99101309A Expired - Fee Related CN1130652C (zh) | 1998-02-17 | 1999-01-15 | 使被重试的监听命中时前进的方法以及数据处理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6138218A (zh) |
JP (1) | JP3254433B2 (zh) |
KR (1) | KR19990072600A (zh) |
CN (1) | CN1130652C (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370621B1 (en) | 1998-12-21 | 2002-04-09 | Advanced Micro Devices, Inc. | Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation |
US6631401B1 (en) | 1998-12-21 | 2003-10-07 | Advanced Micro Devices, Inc. | Flexible probe/probe response routing for maintaining coherency |
US6393529B1 (en) | 1998-12-21 | 2002-05-21 | Advanced Micro Devices, Inc. | Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write |
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
US6714994B1 (en) * | 1998-12-23 | 2004-03-30 | Advanced Micro Devices, Inc. | Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa |
US6269428B1 (en) * | 1999-02-26 | 2001-07-31 | International Business Machines Corporation | Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system |
US6272604B1 (en) * | 1999-05-20 | 2001-08-07 | International Business Machines Corporation | Contingent response apparatus and method for maintaining cache coherency |
US6405289B1 (en) * | 1999-11-09 | 2002-06-11 | International Business Machines Corporation | Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response |
US7558923B1 (en) * | 1999-12-22 | 2009-07-07 | Intel Corporation | Prevention of live-lock in a multi-processor system |
US6557078B1 (en) * | 2000-02-21 | 2003-04-29 | Hewlett Packard Development Company, L.P. | Cache chain structure to implement high bandwidth low latency cache memory subsystem |
US6928525B1 (en) * | 2000-04-28 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | Per cache line semaphore for cache access arbitration |
US6745297B2 (en) | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US8145847B2 (en) * | 2004-01-20 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | Cache coherency protocol with ordering points |
US7769959B2 (en) * | 2004-01-20 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration to memory |
US7395374B2 (en) * | 2004-01-20 | 2008-07-01 | Hewlett-Packard Company, L.P. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US7818391B2 (en) | 2004-01-20 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration |
US8090914B2 (en) * | 2004-01-20 | 2012-01-03 | Hewlett-Packard Development Company, L.P. | System and method for creating ordering points |
US8468308B2 (en) * | 2004-01-20 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | System and method for non-migratory requests in a cache coherency protocol |
US20050160238A1 (en) * | 2004-01-20 | 2005-07-21 | Steely Simon C.Jr. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
US8176259B2 (en) * | 2004-01-20 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | System and method for resolving transactions in a cache coherency protocol |
US7275124B2 (en) * | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability |
US7275125B2 (en) | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Pipeline bit handling circuit and method for a bus bridge |
US7330925B2 (en) * | 2005-02-24 | 2008-02-12 | International Business Machines Corporation | Transaction flow control mechanism for a bus bridge |
US7469312B2 (en) * | 2005-02-24 | 2008-12-23 | International Business Machines Corporation | Computer system bus bridge |
US20060253662A1 (en) * | 2005-05-03 | 2006-11-09 | Bass Brian M | Retry cancellation mechanism to enhance system performance |
US7783843B2 (en) * | 2005-05-16 | 2010-08-24 | Hewlett-Packard Development Company, L.P. | Bus interface adapted to coalesce snoop responses |
JP4335298B2 (ja) * | 2006-02-24 | 2009-09-30 | 富士通株式会社 | スヌープ制御方法および情報処理装置 |
CN101866060B (zh) * | 2009-12-23 | 2012-02-29 | 南京邮电大学 | 超分辨率光学成像装置与方法 |
US8935485B2 (en) | 2011-08-08 | 2015-01-13 | Arm Limited | Snoop filter and non-inclusive shared cache memory |
US9292442B2 (en) * | 2013-04-11 | 2016-03-22 | Qualcomm Incorporated | Methods and apparatus for improving performance of semaphore management sequences across a coherent bus |
GB2529180B (en) | 2014-08-12 | 2021-07-14 | Advanced Risc Mach Ltd | Arbitration and hazard detection for a data processing apparatus |
US10747298B2 (en) | 2017-11-29 | 2020-08-18 | Advanced Micro Devices, Inc. | Dynamic interrupt rate control in computing system |
US10503648B2 (en) | 2017-12-12 | 2019-12-10 | Advanced Micro Devices, Inc. | Cache to cache data transfer acceleration techniques |
GB2571538B (en) * | 2018-02-28 | 2020-08-19 | Imagination Tech Ltd | Memory interface |
US11210246B2 (en) | 2018-08-24 | 2021-12-28 | Advanced Micro Devices, Inc. | Probe interrupt delivery |
US11907125B2 (en) * | 2022-04-05 | 2024-02-20 | International Business Machines Corporation | Hot line fairness mechanism favoring software forward progress |
US11853212B2 (en) | 2022-04-05 | 2023-12-26 | International Business Machines Corporation | Preemptive tracking of remote requests for decentralized hot cache line fairness tracking |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5553266A (en) * | 1992-04-24 | 1996-09-03 | Digital Equipment Corporation | Update vs. invalidate policy for a snoopy bus protocol |
DE69531933T2 (de) * | 1994-03-01 | 2004-08-12 | Intel Corp., Santa Clara | Busarchitektur in hochgradiger pipeline-ausführung |
US5713004A (en) * | 1995-05-18 | 1998-01-27 | Data General Corporation | Cache control for use in a multiprocessor to prevent data from ping-ponging between caches |
US5710906A (en) * | 1995-07-07 | 1998-01-20 | Opti Inc. | Predictive snooping of cache memory for master-initiated accesses |
US5652859A (en) * | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5778438A (en) * | 1995-12-06 | 1998-07-07 | Intel Corporation | Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests |
JPH09223118A (ja) * | 1996-02-14 | 1997-08-26 | Oki Electric Ind Co Ltd | スヌープキャッシュメモリ制御システム |
US5920891A (en) * | 1996-05-20 | 1999-07-06 | Advanced Micro Devices, Inc. | Architecture and method for controlling a cache memory |
-
1998
- 1998-02-17 US US09/024,616 patent/US6138218A/en not_active Expired - Fee Related
-
1999
- 1999-01-15 CN CN99101309A patent/CN1130652C/zh not_active Expired - Fee Related
- 1999-02-09 JP JP03150399A patent/JP3254433B2/ja not_active Expired - Fee Related
- 1999-02-11 KR KR1019990004884A patent/KR19990072600A/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
JPH11328023A (ja) | 1999-11-30 |
CN1226708A (zh) | 1999-08-25 |
JP3254433B2 (ja) | 2002-02-04 |
KR19990072600A (ko) | 1999-09-27 |
US6138218A (en) | 2000-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1130652C (zh) | 使被重试的监听命中时前进的方法以及数据处理系统 | |
US6591321B1 (en) | Multiprocessor system bus protocol with group addresses, responses, and priorities | |
JP5116418B2 (ja) | マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム | |
CN100495361C (zh) | 维护存储器一致性的方法和系统 | |
US5893149A (en) | Flushing of cache memory in a computer system | |
TWI463318B (zh) | 快取一致性處理系統、快取記憶體,及其方法 | |
CN100444134C (zh) | 数据处理系统和方法 | |
CN101504628B (zh) | 用于干预共享高速缓存线的方法和系统 | |
US6353875B1 (en) | Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions | |
JP3575595B2 (ja) | 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム | |
JPH07281955A (ja) | マルチプロセッサーシステムのスヌープ回路 | |
US20070005899A1 (en) | Processing multicore evictions in a CMP multiprocessor | |
JP2000250884A (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
CN107533537B (zh) | 存储系统、用于存储的方法和非暂时性计算机可读介质 | |
US7519780B2 (en) | System and method for reducing store latency in symmetrical multiprocessor systems | |
JP2000250882A (ja) | 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム | |
CN1231449A (zh) | 基于请求的同步总线操作 | |
CN1134735C (zh) | 一种支持高速缓存一致性的高速缓存、数据处理系统及方法 | |
CN1127693C (zh) | 保持指令、数据高速缓存之间相关性的方法和设备 | |
JP2006085728A (ja) | データ処理システムにおけるメモリ・コントローラ | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
CN1215416C (zh) | 多处理器计算机系统中的读取操作 | |
US20090031086A1 (en) | Directory For Multi-Node Coherent Bus | |
EP0936551A1 (en) | A hierarchical bus simple coma architecture for shared memory multiprocessors | |
JPH09128346A (ja) | 階層バスシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20031210 Termination date: 20100222 |