CN1230721A - 具有指令和数据的悬停(h)状态的高速缓存相关协议 - Google Patents
具有指令和数据的悬停(h)状态的高速缓存相关协议 Download PDFInfo
- Publication number
- CN1230721A CN1230721A CN99101308A CN99101308A CN1230721A CN 1230721 A CN1230721 A CN 1230721A CN 99101308 A CN99101308 A CN 99101308A CN 99101308 A CN99101308 A CN 99101308A CN 1230721 A CN1230721 A CN 1230721A
- Authority
- CN
- China
- Prior art keywords
- data
- state
- speed cache
- data item
- associated indicator
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了维护数据处理系统中的高速缓存相关性的高速缓存和方法。该系统包括分别与多个高速缓存中的一个相关的多个处理器。一个数据项存储在第一高速缓存中,同时还相关存储指示该数据项地址的一个地址标志,相关指示符设置在第一状态,表示该数据项有效。如果另一个高速缓存要在该地址标志指示的地址存储数据,则将相关指示符更新的第二状态,表示该地址标志有效,第一高速缓存中的数据项无效。在此状态,若检测到与该地址标志相关的数据传送,则用第二数据项代替第一数据项,同时将相关指示符更新为第三状态。
Description
本发明一般涉及一种用于数据处理的方法和系统,具体涉及一种在多处理器数据处理系统中保持数据相关的方法和系统。而更具体地,本发明涉及一种用于多处理器数据处理系统的高速缓存相关协议,其中包括一悬停(H)状态,该状态允许以有效数据修改第一高速缓存,以响应第二高速缓存独立发送该有效数据至一耦合第一和第二高速缓存的互连部件上。
在常规的对称多处理器(SMP)数据处理系统中,所有的处理器通常是相同的,即,这些处理器都采用公共的指令集和通信协议,具有相似的硬件结构,并且一般配备有类似的存储器层次。例如,一常规SMP数据处理系统可以包括一系统存贮器、多个处理部件和一系统总线,其中每个处理部件包括一处理器和一级或多级高速缓冲存贮器,该系统总线将一处理部件耦合至每一其它处理部件和系统存贮器。为了在SMP数据处理系统中获得有效的执行结果,重要的是保持相关存贮器层次,即,为所有的处理部件提供存贮器内容的单一视图。
通过使用一选择的存贮器相关协议,例如MESI协议的应用来保持相关存贮器层次。在该MESI协议中,一相关状态的指示被与至少所有较高级的(高速缓冲)存贮器的每一相关区组(例如,高速缓存行或区段)相关联地存储,每个相关区组可以具有四个状态中的一个状态,即修改(M)、专用(E)、共享(S)或无效(I),它们在高速缓存目录中由两位表示。该修改状态表示一相关区组仅在存储该被修改相关区组的高速缓存中有效并且该被修改的相关区组的值还未写到系统存贮器。当一相关区组被指示为专用状态时,则在存贮器层次的这一级的所有高速缓存中,该相关区组仅驻留在具有该处于专用状态的相关区组的高速缓存中。但是在专用状态中的数据与系统存贮器一致。如果在高速缓存目录中一相关区组被标志为共享,则该相关区组驻留在其相关联的高速缓存中以及至少一个位于存贮器层次同一级的其它高速缓存中,该相关区组的所有这些拷贝与系统存贮器一致。最后,所述无效状态指示与一相关区组相关联的数据和地址标志都是无效的。
每个相关区组(例如高速缓存行)被设置的状态依赖于该高速缓存行的在先状态和请求处理器想要的存贮器访问的类型。因此,在多处理器数据处理系统中保持存贮器相关就需要这些处理器经由系统总线传送指示它们读或写存储单元的意图的消息。例如,当一处理器想要将数据写到一存储单元时,为了实现该写操作,该处理器必须首先将其把数据写到该存贮单元的意图通知所有其它处理部件并且从所有其它处理部件接收许可。由该请求处理器接收的这些许可消息表示该存贮单元内容的所有其它的高速缓存拷贝已经被无效,由此保证其它处理器将不访问失效的局部数据。这种消息交换就是公知的交叉-无效(cross-invalidation)(Ⅺ)。
本发明知道的是,虽然高速缓存项的交叉-无效足以维持SMP数据处理系统中的存贮器相关,但是,远程处理器的高速缓存项的无效因降低局部高速缓存中的命中率而对数据处理系统的性能产生不利影响。因此,即使配置大的局部高速缓存,但是当一处理部件从另一处理部件的远程高速缓存或者系统存贮器中检索曾经驻留在局部高速缓存中的数据时,前述欲检索数据的处理部件也要承担长的访问等待时间。因此,如将会明显地看到的那样,最好是提供一种方法和系统,用于在SMP数据处理系统中保持存贮器相关,该方法和系统减小了由于高速缓存项的交叉-无效的结果而招致的性能恶化。
因此,本发明的一个目的是提供一种改进的用于数据处理的方法和系统。
本发明的另一个目的是提供一种改进的用于在多处理器数据处理系统中保持数据相关的方法和系统。
本发明的再一个目的是提供一种用于多处理器数据处理系统的高速缓存相关协议,该协议包括一悬停(H)状态,该状态允许第一高速缓存被以有效数据修改,以响应第二高速缓存独立发送该有效数据至耦合第一和第二高速缓存的互连部件上。
前面的目的的实现将如下所述。一数据处理系统包括多个处理器,其中每个处理器与多个高速缓存中相应的一个相关联。根据本发明的方法,一个数据项与表示该数据项的地址的一地址标志相关联地存储在第一高速缓存中。在第一高速缓存中的一相关指示符被设置为第一状态,该第一状态指示该数据项有效。在该相关指示符被设置为第一状态的时候,响应另一高速缓存指示想要存储至由该地址标志指示的地址,在第一高速缓存中的相关指示符被修改至第二状态,该第二状态指示该地址标志有效而该第一高速缓存中的数据项无效。此后,根据一个实施例,在该相关指示符设置为该第二状态时,响应与由该地址标志指示的地址相关的数据传输的检测,通过与该地址标志相关联地在所述第一高速缓存中存储一个第二数据项而代替第一高速缓存中的该数据项。另外,将该相关指示符更新为第三状态,该第三状态表示该第二数据项有效。
本发明的上述及其它的目的、特性和优点将在下面的详细描述中变得明白。
新的性能所认为的本发明的特征描述于后附的权利要求中。但是,本发明本身,所用的最佳实施例以及其它的目的和优点将最好是结合附图并参照下面的说明性实施例的详细描述来理解,其中:
图1描述了根据本发明的多处理器数据处理系统的一说明性实施例;
图2是描述根据本发明的高速缓存的说明性实施例的方框图;
图3是描述本发明的H-MESI存贮器相关协议的说明性实施例的状态图。
现在参照附图,特别参照图1,图1说明了根据本发明的多处理器数据处理系统的高级方框图。如图所示,数据处理系统8包括多个处理器10a-10n,其中每个处理器最好由来自IBM公司的Power PCTM系列处理器的其中之一构成。除了常规寄存器、指令流逻辑和用于执行程序指令的执行部件外,每个处理器10a-10n还包括板上一级(L1)高速缓存12a-12n中相关联的一个高速缓存,这个高速缓存临时存储很可能被相关联的处理器访问的指令和数据。虽然在图1中L1高速缓存12a-12n被图解为存储指令和数据(此后这二者被简单地称作数据)的一体化的高速缓存,但是本领域的技术人员将明白的是,L1高速缓存12a-12n中的每一个都能替换地实现为分开的指令和数据高速缓存。
为了最小化数据访问等待时间,数据处理系统8还包括一级或多级附加的高速缓存,例如二级(L2)高速缓存14a-14n,它们用于分级至L1高速缓存12a-12n的数据。换句话说,L2高速缓存14a-14n用作系统存贮器18和L1高速缓存12a-12n的中间存储器,并且它们通常存储比L1高速缓存12a-12n大的多的数据量,但需要较长的访问等待时间。例如,L2高速缓存14a-14n可以具有256或512KB的存贮容量,而L1高速缓存可以具有64或128KB的存贮容量。如上所述,虽然图1中仅示出了两级高速缓存,但是,数据处理系统8的存贮层次可以被扩展至包括串联的附加级(L3、L4,等等)高速缓存或者后备高速缓存。
如图所示,数据处理系统8还包括I/O设备20、系统存贮器18、以及非易失性存贮器22,它们都耦合至互连部件16。I/O设备20包括诸如显示设备、键盘和图形指示器等常规外围设备,它们都通过常规适配器连接至互连部件16。非易失性存储器22存储操作系统和其它软件,响应数据处理系统8被加电它们被加载到易失性的系统存贮器18。当然,本领域的技术人员将明白的是,数据处理系统8能够包括许多图1中未示出的其它部件,诸如用于至网络或所接设备的连接的串并口、管理对系统存储器18的访问的存贮控制器,等等。
互连部件16可由一个或多个总线或一交叉点开关组成,该互连部件作为用于在L2高速缓存14a-14n系统存贮器18、输入/输出(I/O)设备20、和非易失性存贮器之间的通信事务的管道。在互连部件16上的一个典型通信事务包括指示该事务的源的一个源标志、指定该事务的预计的接受者的一个目的标志、一地址和/或数据。耦合到互连部件16的每个设备最好都探听在互连部件16上的所有通信事务。
现在参见图2,图2描述了根据本发明的L2高速缓存14的一说明性实施例的较详细的方框图。在该说明性实施例中,L2高速缓存14是采用32位地址的四路组相关高速缓存。因此,L2高速缓存14的数据阵列34包括许多同余类(congruence class),每个同余类含有用于存储高速缓存行的4个路。如常规组相关高速缓存那样,采用在存贮单元地址范围内的索引位(例如32位地址的20-26位),系统存贮器18的存贮单元被映射到特定的同余类。
在数据阵列34内存储的高速缓存行记录在高速缓存目录32中,该目录包括用于数据阵列34的每一路的一个目录项。每个目录项包括标志字段40、相关状态字段42、最近最少使用(LRU)字段44和包含字段46。标志字段40通过存储该高速缓存行的系统存贮器地址的标志位(例如0-19位)来确定哪个高速缓存行存储在数据阵列34的相应路中。如下面将参照图3详细讨论的那样,相关状态字段42利用预定义的位组合来表示存储在数据阵列34的相应路中的数据的相关状态。LRU字段44指示最近数据阵列34的相应路相对于其同余类的其它路已经如何被访问,由此指示哪个高速缓存行应从该同余类中舍去以响应一高速缓存未命中。最后,包含字段46指示存储在数据阵列34的相应路中的高速缓存行是否还存储在相关联的L1高速缓存12中。
再参照图2,L2高速缓存14还包括高速缓存控制器36,它根据从相关联的L1高速缓存12接收的信号以及在互连部件16上探听的事务而管理在数据阵列34中的数据的存储和检索以及对高速缓存目录32的修改。如图所示,高速缓存控制器36含有一读队列50和一写队列52,从这两个队列中高速缓存控制器36执行对高速缓存目录32的修改以及对数据阵列34的访问。例如,响应从关联的L1高速缓存12接收一读操作,高速缓存控制器36将该读操作放在读队列50的一个项中。高速缓存控制器36通过提供所请求的数据至关联的L1高速缓存12而满足该读请求的需要,并且然后将该读请求从读队列50中删除。作为另一个例子,高速缓存控制器36可以探听到一由L2高速缓存14a-14n中另一个启动的表示一远程处理器10想要修改其本地的一特定高速缓存行的拷贝的事务。响应于该探听的事务,高速缓存控制器36在读队列50中放入一个读高速缓存目录32的请求以便确定该特定高速缓存行是否驻留在数据阵列34中。如果是那样的话,高速缓存控制器36发出一适当的响应到互连部件16上,并且如果需要,插入一目录写请求到写队列52中,当其被服务时,修改与该特定高速缓存行相关联的相关状态字段。虽然图2示出了在其中仅使用一个读队列和一个写队列的实施例,但是应该明白,高速缓存控制器36采用的队列数只是设计选择的问题,并且高速缓存控制器36可以为高速缓存目录访问和数据阵列访问采用单独的队列。
高速缓存控制器36还包括模式寄存器60,如下面更详细地的描述那样,该模式寄存器由一位或多位组成,所述一位或多位的设置控制高速缓存控制器36的操作。另外,高速缓存控制器36包括性能监视器70。性能监视器70装配有性能视计数器(PMCO-PMCn)72,当启动时,这些计数器递增以响应由一个或多个控制寄存器(CRO-CRm)74确定的一个事件或事件的组合的每一次发生。可由PMC72计数以响应CR74的设置的这些事件包括高速缓存命中、高速缓存未命中、特定队列中的项数、L2高速缓存命中的访问等待时间、L2高速缓存未命中的访问等待时间,等等。PMC72和CR74中的每一个最好是可由相关联的处理器10通过加载和存储指令来读和写的存贮映象寄存器。
现在参见图3,图中描述了根据本发明的H-MESI存贮器相关协议的一说明性实施例。该H-MESI协议最好只由存贮层次中最低级的高速缓存(例如,在图1的数据处理系统8的实施例中的L2高速缓存14a-14n)实现,而较高级的高速缓存最好实现常规的MESI协议。但是,在数据处理系统8的另一实施例中,H-MESI协议能够以额外的高速缓存之间的通信量为代价而在存贮层次的每一级高速缓存中实现。
如图3所示,H-MESI存贮器相关协议包括常规的MESI协议的修改(M)、专用(E)、共享(S)和无效(I)状态,它们分别由参考号80、82、84、86标识。另外,本发明的H-MESI存贮器相关协议包括悬停(H)状态90,H状态指示存储在相关联的标志字段40中的地址标志有效而存储在数据阵列34的相应路中的数据项(例如高速缓存行或高速缓存区段)无效。
在一最佳实施例中,任一L2高速缓存目录32的每一项的相关状态字段42在加电时被初始化为I状态86,以便指示标志字段40和存储在数据阵列34的相应路中的数据都是无效的。类似地,根据常规MESI协议,L1高速缓存目录项也被初始化为无效状态。此后,根据由处理器10a-10n产生的存贮器请求的类型和存贮层次对这些请求的响应,处于无效状态86的存储于L2高速缓存14a-14n的其中之一的一高速缓存行(或高速缓存区段)的相关状态能够修改为M状态80、E状态82或S状态84的其中之一。
例如,如果处理器10a产生一读请求以响应一加载指令,则L1高速缓存12a首先确定所请求的数据是否驻留在L1高速缓存12a中。响应在L1高速缓存12a中的命中,L1高速缓存12a简单地将所请求数据提供给处理器10a。但是,响应在L1高速缓存12a中的未命中,L1高速缓存12a通过高速缓存之间的连接发送该读请求至L2高速缓存14a。响应在L2高速缓存14a中的命中,所请求的数据被L2高速缓存14a提供至L1高速缓存12a,L1高速缓存12a与适当的MESI相关状态结合地存储所请求数据并且发送所请求数据至处理器10a。但是,如果该读请求在L1高速缓存12a和L2高速缓存14a中都未命中,则L2高速缓存14a的高速缓存控制器36作为一事务发出该读请求到互连部件16上,该事务被每个L2高速缓存14b-14n探听。
根据探听在互连部件16上的该读请求,在每个L2高速缓存14b-14n中的高速缓存控制器36确定所请求数据是否驻留在其数据阵列34或者L2高速缓存12b-12n中相关联的一个中。如果L2高速缓存14b-14n或者L1高速缓存12b-12n都未存储所请求数据,则每个L2高速缓存14a-14n返回一空响应至L2高速缓存14a,然后L2高速缓存14a从系统存贮器18中请求该数据。当所请求数据从系统存储器18返回到L2高速缓存14a时,高速缓存控制器36发送所请求数据至L1高速缓存12a,存储所请求数据到其数据阵列34中,并且如参考号100所示,修改与存储所请求数据的路相关联的相关状态字段42从I状态86至E状态82。如在常规MESI协议中那样,E状态82表示关联的高速缓存行有效并且没有驻留在存贮层次第二级的任何其它高速缓存中。
类似地,如果任一L1高速缓存12b-12n或者L2高速缓存14b-14n存储所请求数据在E状态82或S状态84,并且因此对由L2高速缓存发送到互连部件16上的该读请求指示“共享”响应,则L2高速缓存14a从系统存贮器18中检索所请求数据。但是,在这种情况下,在存储所请求数据的L2高速缓存14a中的路的相关状态从I状态86变换到S状态84,如参考号102所示。存储所请求数据于E状态82的其它L2高速缓存14也修改至S状态84,如参考号104所示。
如果处理器10a请求的数据没有驻留在L1高速缓存12a和L2高速缓存14a中,而是例如在L1高速缓存12n中存储为M状态80,则L2高速缓存12n的高速缓存控制器36用一重试回答该读请求并且发信号通知L1高速缓存12n将所请求数据推入存贮器。然后,在L1高速缓存12n和L2高速缓存14n中所请求数据的相关状态被修改至S状态84,如参考号106所示。此后,当L2高速缓存14a重试该读请求到互连部件16上时,如上所述,L2高速缓存14n回答一共享响应并且L2高速缓存14a从系统存贮器18中获取所请求数据。在支持所谓的修改干预的另一实施例中,所请求数据由L2高速缓存14n的高速缓存控制器36而不是系统存贮器18来发送,因而减少了访问等待时间。
如果L1高速缓存12a不是发出一读请求,而是发出一表示处理器10a想要获得一存贮单元的专用权以便修改该单元的“想要修改的读”请求,则就会接着发生上述的获得含有该特定存贮单元的高速缓存行的处理。但是,当获得所请求的高速缓存行时,L1高速缓存12a存储所请求高速缓存行在修改状态。另外,由于该“想要修改的读”事务表示所请求的高速缓存行的其它拷贝将变为陈旧的,因此,其它的L1和L2高速缓存必须将它们的所请求高速缓存行的拷贝表示为无效。在L1高速缓存12b-12n中,所请求高速缓存行的任何拷贝都简单地标志为无效。但是,存储在L2高速缓存14b-14n中的该请求高速缓存行的拷贝的相关状态不是象常规的利用交叉-无效(Ⅺ)的多处理器数据处理系统那样被修改为I状态86。但是,根据本发明的一个重要方面,存储该请求高速缓存行的拷贝的各个L2高速缓存14b-14n将与其拷贝相关联的相关状态字段42从任意的R状态92、S状态84、M状态80、或者E状态82分别修改为H状态90,如参考号110、112、114所示。如上所述,H状态90指示存储在标志字段40中的标志保持有效,但在数据阵列34中相关联的高速缓存行无效。类似地,响应其它被探听的要求使数据无效的事务,在高速缓存目录32中的项也被修改至H状态90,前述的事务包括清除(Kill)(即,明确地使一特定数据块无效的事务)、清空(flush)(即,使一特定数据块无效并且拷贝任一修改数据至系统存贮器的事务)、dclaim(即,根据一高速缓存行的局部拷贝变成修改状态以响应一存储,使在远程高速缓存中标志为共享的该高速缓存行的拷贝无效的事务),等等。
如参考号116、118、120所示,根据一高速缓存接收的事务类型,该高速缓存的目录项可以从H状态90分别变换到E状态82、M状态80、或者S状态84。例如,根据产生一读请求的处理器10a(在未命中于L1高速缓存12a和L2高速缓存14a之后)接收一来自L2高速缓存14b-14n的空响应,处理H状态90的L2高速缓存14a的一目录项产生一个至E状态82的转换(如参考号86所示),这是因为所有的L2高速缓存14a-14n当中,从系统存贮器18检索到的数据仅存储在L2高速缓存14a中。另一方面,如果处理器10a指示想要存储数据到处于H状态90的L1高速缓存12a的一路中,L1高速缓存12a指示这个意图至L2高速缓存14a,则L2高速缓存14a将发送一“想要修改的读”事务到互连部件16上。如上所述,响应探听该“想要修改的读”事务,存储在L2高速缓存14b-14n中的该请求高速缓存行的拷贝被修改为H状态90,而存储在L1高速缓存12b-12n中的该请求高速缓存行的拷贝被标志为无效。一旦该请求高速缓存行返回到L1高速缓存12a并且处理器10a修改该高速缓存行,在L1高速缓存12a中该高速缓存行就被标志为修改状态以表示该高速缓存行有效,但是与系统存贮器18不相关。根据该实现,其后该修改的高速缓存行可以存储到L2高速缓存14a(例如,响应一L1的舍去)而不需要该修改的高速缓存行写回到系统存贮器18。如果这样,则在L2高速缓存14a中与该修改的高速缓存行相关联的相关状态字段被修改为M状态80,如参考号118所示。最后,根据一些不同的请求响应情况,处于H状态90的一L2高速缓存目录项被修改为S状态84。
首先,当关联的处理器10发出一读请求至由标志字段40中的(有效)地址指示的地址并且至少一个L2高速缓存14回答一共享响应时,处于H状态90的一L2目录项变换到S状态84。更重要地,处于H状态90的一L2高速缓存目录项能够修改至S状态84而不需要关联的处理器10发出一数据请求或者L2高速缓存14产生一事务到互连部件16上。如上所述,每个L2高速缓存14a-14n探听发送在互连部件16上的所有事务。如果L2高速缓存14a-14n的其中之一,例如L2高速缓存14a探听由L2高速缓存14b-14n的另一个发出的一事务,该事务包括在L2高速缓存14a中存储为H状态90的数据的一修改(即,有效)拷贝,则L2高速缓存14a的高速缓存控制器36从互连部件16上采样该数据,存储所探听的数据到数据阵列34中,并且将相关联的相关状态字段42从H状态90修改至S状态84。当然,如果需要一响应以保持相关,则L2高速缓存14a还提供一响应至该探听的事务。例如,如果该探听的事务是一读请求,则L2高速缓存14a必须提供一表示其想要采样所请求数据的共享响应,使得发出请求的L2高速缓存存储所请求数据在S状态84而不是E状态82。这样,在互连部件16上的能够被探听而刷新与一有效地址标志相关联的无效数据的事务包括读事务、写事务、由于高速缓存行的舍去而导致的数据回写至系统存贮器18,等等。
在图3所示的H-MESI存贮器相关协议的说明性实施例中可能产生的状态变换概括于下面的表Ⅰ中。
表Ⅰ
状态变换 | 原因 | 备注 |
I→E | 具有空响应的CPU读 | |
I→S | 具有共享或修改响应的CPU读 | |
I→M | CPU“想要修改的读”(rwitm) | |
E→S | 探听的读 | |
E→M | CPU rwitm | |
E→H | 探听的数据无效 | 探听的数据无效=rwitm,dclaim,消除,清空,等等 |
S→M | CPU rwitm | 发送dclaim到互连部件上 |
S→H | 探听的数据无效 | |
M→S | 探听的读 | 如果支持修改干预则提供数据 |
M→H | 探听的数据无效 | 如果探听到的事务是rwitm,则如果支持修改干预就提供数据 |
H→E | 具有空响应的CPU读 | |
H→S | 具有共享或修改响应的CPU读;探听的读或写 | |
H→M | CPU rwitm |
根据本发明的一个重要方面,H-MESI协议可以精确地或者不精确地实现。H-MESI协议的精确实现要求L2高速缓存14a-14n总是采样可在互连部件16上得到的数据以便刷新处于H状态90的无效高速缓存行。相反,非精确实现允许高速缓存14a-14n选择地采样互连部件16上的数据以便刷新处于H状态90的高速缓存行。在图2所示的说明性实施例中,根据在其模式寄存器60中的模式位62的状态,每个L2高速缓存14能够独立于其它L2高速缓存地操作于精确模式或者非精确模式。
当在对软件进行调试或性能调整时,由于操作的精确模式促进了更加可预测的工作状态以及一致的软件定时,因此在精确模式中操作L2高速缓存14a-14n具有特别的优点。另外,在该精确模式中,在两级局部高速缓存中未命中(并且要求局部L2高速缓存14发出一事务到互连部件16上)的数据请求通常很少,因此这种数据请求在软件中可用作一可能“故障”(bugs)的指示。而且,在支持修改干预的本发明的实施例中,该精确H-MESI协议保证由处理器10请求并且在局部L2高速缓存14中存储为H状态90的数据将总是通过修改干预(即,很快地)发送。在精确模式中操作L2高速缓存14的主要缺点是,对于探听到的能够修改处于H状态90的L2高速缓存行的事务,如果例如由于L2高速缓存14的写队列52满(即,忙)而不能执行该修改,则必须重试该事务。
由于最好不重试必须的操作,例如读操作,以便执行处于H状态90的选择修改,因此,通常较好的是在正常操作期间使L2高速缓存14a-14n处于非精确模式。如上所述,操作的非精确模式允许对处于H状态90的高速缓存行的修改选择性地执行。在一最佳实施例中,当L2高速缓存14处于非精确模式中时,只有当写队列52(或者一专用目录写队列,如果有的话)少于一阈值数量的项时才执行对处于H状态90的高速缓存行的修改。因此,根据写队列52中的项数超过一预定阈值,在L2高速缓存14中的硬件或者由相关联的处理器10执行的软件能够用于设置模式位62至与该非精确模式对应的状态。但是,如下所述,本发明的其它实施例可以根据其它的标准来选择地执行对处于H状态90的L2高速缓存的修改。
在图2所示的数据处理系统8的说明性实施例中,每个L2高速缓存14a-14n能够通过软件或者硬件或者二者的结合而独立地设置为精确模式或非精确模式。例如,如果需要对L2高速缓存14a操作于其中的模式进行软件控制,则处理器10a能够通过执行一以模式寄存器60为目标的存储指令而简单地设置模式位62。另外,软件能够存储值至CR74,使得PMC72对所关心的事件的发生,诸如在写队列52中插入并移去项、L2访问、L2高速缓存未命中、在L2高速缓存未命中时的访问等待时间等等计数。然后软件能够通过执行加载指令访问在所关心的PMC72中的值。根据PMC72的一个值或几个值的组合超过软件定义的阈值,该软件能够设置模式位62以选择该精确和非精确模式中适当的一个。例如,如果L2高速缓存14a操作于非精确模式并且L2高速缓存未命中的次数大于L2访问总次数的一预定比例,则软件能够设置模式位62至与精确模式对应的状态。
类似地,性能监视器70能够实现L2高速缓存14a-14n的操作模式的硬件控制。在一说明性的实施例中,每个性能监视器70包括用于根据在一个或多个PMC72中累积的一选择事件或多个事件的组合发生的次数超过一预定阈值而产生一设置模式位62至特定状态的信号的逻辑。通过性能监视器70的缺省设置或者通过相关联处理器10执行的软件能够确定PMC 72的启动和所述关心的一个事件或多个事件的选择。而在另一个实施例中,根据一选择事件或多个事件的组合发生的次数超过一预定阈值,能够设置性能监视器70以产生一性能监视器中断(PMI)。该PMI由相关联的处理器10提供服务,该关联的处理器10执行一改变模式位62的状态的中断处理程序。
如上所述,本发明提供了一种用于在多处理器数据处理系统中保持存贮器相关的改进的方法和系统。本发明提供的改进的存贮器相关协议允许在相关联的处理器不发出一明确的读或写请求的情况下,与一有效地址标志相关联的存储在一高速缓存中的一无效数据项被自动地修改为有效数据。这样,因远程处理器的活动而被无效的数据能够在该数据被本地处理器访问之前刷新,从而通过消除从一远程高速缓存或系统存贮器中检索该数据的需求而实质上减少了访问等待时间。由于在不访问存贮器或不请求一锁定的情况下就能修改高速缓存行,因此也实质上减少了对存贮器访问的争用和系统范围内的锁定。
虽然本发明已经参照说明性的实施例而具体地示出和描述,但是应该明白,在不脱离本发明的精神和范围的前提下,本领域的技术人员可以在形式和细节上作出各种改变。例如,在图3所示的存贮器相关协议的说明性实施例中,由于I状态86仅用于在加电时初始化目录项并且决不会从另一状态重新进入,因此可通过删除I状态86而修改该实施例。如果I状态86被删除,则在加电时每个L2目录项的相关状态字段被初始化为H状态90,并且每个L2目录项的标志字段初始化为一标志值,该标志值至少在同一同余类中是唯一的。另外,应该明白的是,图2的性能监视器70能够可替换地实现为耦合至互连部件16的单个系统范围内的性能监视器,而不是在每个L2高速缓存14内部的多个分离的性能监视器。
Claims (18)
1.一种在含有多个处理器的数据处理系统中保持高速缓存相关的方法,每个处理器与多个高速缓存中相应的一个相关联,所述方法的特征在于包括:
在所述多个高速缓存的第一高速缓存中,与一地址标志相关联地存储第一数据项,该地址标志指示所述数据项的地址;
设置所述第一高速缓存中的一相关指示符至第一状态,该第一状态指示所述数据项有效;以及
在所述相关指示符被设置为所述第一状态的时候,响应所述多个高速缓存中的另一个指示想要存储至由所述地址标志指示的所述地址,修改所述第一高速缓存中的所述相关指示符至第二状态,该第二状态指示所述地址标志有效而在所述第一高速缓存中的所述数据项无效。
2.如权利要求1的方法,其特征在于所述数据处理系统还包括一个连接所述多个处理器的互连部件,所述数据项是一个第一数据项,而所述方法还包括步骤:
探听所述互连部件以识别在所述互连部件上的与由所述地址标志指示的所述地址相关的一数据传送,所述数据传送由所述多个高速缓存中的另一个启动并且包括一个第二数据项;
在所述相关指示符设置为所述第二状态时,响应在所述互连部件上检测的与由所述地址标志指示的所述地址相关的一数据传送,
通过在所述第一高速缓存中与所述地址标志相关联地存储所述第二数据项以代替所述第一数据项;以及
修改所述相关指示符至第三状态表示所述第二数据项有效。
3.如权利要求2的方法,其特征在于所述修改所述相关指示符至指示所述第二数据项有效的第三状态的步骤包括修改所述相关指示符至一共享状态的步骤,该共享状态指示所述第二数据项存储在所述第一高速缓存和所述多个高速缓存的另一个中。
4.如权利要求1的方法,其特征在于,所述设置所述第一高速缓存中的一相关指示符至指示所述数据项有效的第一状态的步骤包括设置所述第一高速缓存中的所述相关指示符至修改状态、共享状态和专用状态的其中之一的步骤。
5.如权利要求1的方法,其特征在于所述数据处理系统还包括一个低级存储器,所述第一高速缓存可从该低级存储器检索数据,所述多个处理器包括与所述第一高速缓存相关的第一处理器,所述数据项包括一个第一数据数据项,所述方法还包括步骤:
在所述相关指示符设置为所述第二状态时,响应所述第一处理器对与由所述地址标志指示的所述地址相关的数据的请求,从所述多个高速缓存的另一个中而不是从所述低级存储器中获得与所述地址有关的一个有效的第二数据项。
6.如权利要求1的方法,其特征在于还包括设置所述相关指示符为一个无效状态以表示所述地址标志和所述数据项均无效的步骤。
7.一种用于在含有多个处理器的数据处理系统中支持高速缓存相关的高速缓存,所述多个处理器中的每一个与多个高速缓存中相应的一个相关联,所述高速缓存的特征在于包括:
存储一个数据项的数据存储器;
标志存储器,它存储指示包含在所述数据存储器中的所述数据项的地址的地址标志;
相关指示符,响应所述数据项存入所述数据存储器,该相关指示符被设置至表示所述数据项有效的第一状态,而在所述相关指示符被设置为所述第一状态的时候,响应该多个高速缓存中的另一个指示想要存储至由所述地址标志指示的所述地址,该相关指示符被设置至第二状态,所述相关指示符的所述第二状态指示所述地址标志有效而在所述数据存储器中的所述数据项无效。
8.根据权利要求7的高速缓存,其特征在于所述数据项是一个第一数据项,所述数据处理系统还包括一个连接所述多个处理器的互连部件,而所述高速缓存还包括:
探听所述互连部件以识别在所述互连部件上的与由所述地址标志指示的所述地址相关的一数据传送的装置,所述数据传送由所述多个高速缓存中的另一个启动并且包括一个第二数据项;
在所述相关指示符设置为所述第二状态时,响应在所述互连部件上的与由所述地址标志指示的所述地址相关的一数据传送的检测,
通过在所述数据存储器中与所述地址标志相关联地存储所述第二数据项以代替所述第一数据项的装置;以及
修改所述相关指示符至第三状态表示所述第二数据项有效的装置。
9.如权利要求8的高速缓存,其特征在于所述修改所述相关指示符至指示所述第二数据项有效的第三状态的装置包括修改所述相关指示符至一共享状态的装置,该共享状态指示所述第二数据项存储在所述高速缓存和所述多个高速缓存的另一个中。
10.如权利要求7的高速缓存,其特征在于所述相关指示符的第一状态包括修改状态、共享状态和专用状态的其中之一。
11.如权利要求7的高速缓存,其特征在于所述高速缓存是一个第一高速缓存,所述多个处理器包括与所述第一高速缓存相关的第一处理器,所述数据处理系统还包括一个低级存储器,所述第一高速缓存可从该低级存储器检索数据,所述高速缓存还包括:
在所述相关指示符设置为所述第二状态时,响应所述第一处理器对与由所述地址标志指示的所述地址相关的数据的请求,从所述多个高速缓存的另一个中而不是从所述低级存储器中获得与所述地址有关的有效数据的装置。
12.如权利要求7的高速缓存,其特征在于所述相关指示符还包括一个无效状态以表示所述地址标志和所述数据项均无效。
13.一种数据处理系统,包括:
一互连部件;
耦合至所述互连部件的多个处理器;
多个高速缓存,其中每个高速缓存与所述多个处理器中相应的一个相关联,其中,在所述多个高速缓存中的第一高速缓存包括:
存储一个数据项的数据存储器;
标志存储器,它存储指示包含在所述数据存储器中的所述数据项的地址的地址标志;
相关指示符,响应所述数据项存入所述数据存储器,该相关指示符被设置至表示所述数据项有效的第一状态,在所述相关指示符被设置为所述第一状态的时候,响应该多个高速缓存中的另一个指示想要存储至由所述地址标志指示的所述地址,该相关指示符被设置至第二状态,所述相关指示符的所述第二状态指示所述地址标志有效而在所述数据存储器中的所述数据项无效。
14.根据权利要求13的数据处理系统,其特征在于所述数据项是一个第一数据项,所述第一高速缓存还包括:
探听所述互连部件以识别在所述互连部件上的与由所述地址标志指示的所述地址相关的一数据传送的装置,所述数据传送由所述多个高速缓存中的另一个启动并且包括一个第二数据项;
在所述相关指示符设置为所述第二状态时,响应在所述互连部件上的与由所述地址标志指示的所述地址相关的一数据传送的检测,
通过在所述数据存储器中与所述地址标志相关联地存储所述第二数据项以代替所述第一数据项的装置;以及
修改所述相关指示符至第三状态表示所述第二数据项有效的装置。
15.如权利要求14的数据处理系统,其特征在于所述修改所述相关指示符至指示所述第二数据项有效的第三状态的装置包括修改所述相关指示符至一共享状态的装置,该共享状态指示所述第二数据项存储在所述第一高速缓存和所述多个高速缓存的另一个中。
16.如权利要求13的数据处理系统,其特征在于所述相关指示符的第一状态包括修改状态、共享状态和专用状态的其中之一。
17.如权利要求13的高速缓存,其特征在于所述多个处理器包括与所述第一高速缓存相关的第一处理器,所述数据处理系统还包括:
一个低级存储器,所述第一高速缓存可从该低级存储器检索数据;
在所述第一高速缓存的所述相关指示符设置为所述第二状态时,响应所述第一处理器对与由所述地址标志指示的所述地址相关的数据的请求,从所述多个高速缓存的另一个中而不是从所述低级存储器中获得与所述地址有关的有效数据的装置。
18.如权利要求13的数据处理系统,其特征在于所述相关指示符还包括一个无效状态以表示所述地址标志和所述数据项均无效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2461098A | 1998-02-17 | 1998-02-17 | |
US09/024,610 | 1998-02-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1230721A true CN1230721A (zh) | 1999-10-06 |
Family
ID=21821475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99101308A Pending CN1230721A (zh) | 1998-02-17 | 1999-01-15 | 具有指令和数据的悬停(h)状态的高速缓存相关协议 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPH11272556A (zh) |
KR (1) | KR19990072313A (zh) |
CN (1) | CN1230721A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664417A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 一种目录更新方法及装置 |
CN117971728A (zh) * | 2024-03-29 | 2024-05-03 | 北京象帝先计算技术有限公司 | 缓存器及缓存控制方法、集成电路系统、电子组件及设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426612B2 (en) * | 2004-06-30 | 2008-09-16 | Intel Corporation | Methods and apparatus for enforcing instruction-cache coherence |
US7451277B2 (en) * | 2006-03-23 | 2008-11-11 | International Business Machines Corporation | Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation |
US10282296B2 (en) | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
EP3552108B1 (en) * | 2016-12-12 | 2021-08-18 | Intel Corporation | Apparatuses and methods for a processor architecture |
-
1999
- 1999-01-15 CN CN99101308A patent/CN1230721A/zh active Pending
- 1999-01-28 KR KR1019990002795A patent/KR19990072313A/ko active IP Right Grant
- 1999-02-03 JP JP11026604A patent/JPH11272556A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664417A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 一种目录更新方法及装置 |
CN108664417B (zh) * | 2017-03-31 | 2022-10-25 | 华为技术有限公司 | 一种目录更新方法及装置 |
CN117971728A (zh) * | 2024-03-29 | 2024-05-03 | 北京象帝先计算技术有限公司 | 缓存器及缓存控制方法、集成电路系统、电子组件及设备 |
CN117971728B (zh) * | 2024-03-29 | 2024-10-18 | 北京象帝先计算技术有限公司 | 缓存器及缓存控制方法、集成电路系统、电子组件及设备 |
Also Published As
Publication number | Publication date |
---|---|
JPH11272556A (ja) | 1999-10-08 |
KR19990072313A (ko) | 1999-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1131481C (zh) | 包含一具有精确模式和非精确模式的悬停状态的高速缓存相关协议 | |
US6018791A (en) | Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states | |
US5946709A (en) | Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing | |
US5940856A (en) | Cache intervention from only one of many cache lines sharing an unmodified value | |
US6484220B1 (en) | Transfer of data between processors in a multi-processor system | |
US8539164B2 (en) | Cache coherency within multiprocessor computer system | |
US6275909B1 (en) | Multiprocessor system bus with system controller explicitly updating snooper cache state information | |
US7502893B2 (en) | System and method for reporting cache coherency state retained within a cache hierarchy of a processing node | |
US20080270708A1 (en) | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System | |
US5802571A (en) | Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory | |
US6662276B2 (en) | Storing directory information for non uniform memory architecture systems using processor cache | |
US7171520B2 (en) | Cache flush system and method thereof | |
JPH11272559A (ja) | マルチレベル・メモリ・ハイアラ―キを含むデ―タ処理システムのためのキャッシュ・コヒ―レンシ・プロトコル | |
US6763433B1 (en) | High performance cache intervention mechanism for symmetric multiprocessor systems | |
CN1226706A (zh) | 具有空悬(h)和最新(r)状态的高速缓存相关性协议 | |
JP3463292B2 (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
US5996049A (en) | Cache-coherency protocol with recently read state for data and instructions | |
US6826656B2 (en) | Reducing power in a snooping cache based multiprocessor environment | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US6279086B1 (en) | Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position | |
CN1230721A (zh) | 具有指令和数据的悬停(h)状态的高速缓存相关协议 | |
US6338124B1 (en) | Multiprocessor system bus with system controller explicitly updating snooper LRU information | |
US6415358B1 (en) | Cache coherency protocol having an imprecise hovering (H) state for instructions and data | |
US6658536B1 (en) | Cache-coherency protocol with recently read state for extending cache horizontally | |
EP0976047A1 (en) | Read operations in multiprocessor computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |