CN1142503C - 多处理机数据处理系统中同级到同级的超高速缓存移动 - Google Patents
多处理机数据处理系统中同级到同级的超高速缓存移动 Download PDFInfo
- Publication number
- CN1142503C CN1142503C CNB001016938A CN00101693A CN1142503C CN 1142503 C CN1142503 C CN 1142503C CN B001016938 A CNB001016938 A CN B001016938A CN 00101693 A CN00101693 A CN 00101693A CN 1142503 C CN1142503 C CN 1142503C
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- lower level
- particular data
- request
- 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
- 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
-
- 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
- G06F13/1663—Access to shared memory
-
- 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
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
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)
Abstract
一种多处理机环境下使用的超高速缓存系统。第一处理机利用第一个第1级超高速缓存访问数据,而第二处理机利用第二个第1级超高速缓存访问数据。在第一个和第二个第1级超高速缓存、第2级超高速缓存和主存储器之间设置一个存储控制电路。第2级超高速缓存保持主存储中的数据的拷贝并且还保持第1级超高速缓存是否存储有数据的拷贝的指示以及这些拷贝是否被修改过的指示。该高速缓存系统改进了由多个处理机重复地写同一数据的操作。
Description
技术领域
本发明涉及改进超高速缓存性能下的超高速缓冲存储器系统的管理。
背景技术
在数据处理系统中,从存储器向一个或多个处理机传送指令以及相关的数据以供处理,并且接着把处理机生成的结果数据回送给存储器以供存储。从而,典型的处理操作涉及到对存储器频繁的和反复的读和写。因此,存储器存取延迟常常是数据处理系统性能上的主要限制。从而,为使性能最佳,最好使存储器存取速度最大。然而,成本以及其它限制常常要求主存储器是用存取时间相对长的电路构成的。为了克服所带来的性能不足,典型地采用存储器超高速缓存。
超高速缓存典型地包括相对小但速度高的存储区,和主存储器相比处理机对它的访问更快。在超高速缓存中重复主存储器中的一些存储单元。当在超高速缓存中复制正由处理机访问的特定存储单元(即所谓的超高速缓存“命中”事件)时,处理机可快速地访问超高速缓存而不是等待访问主存储器。超高速缓存的管理目标是使在超高速缓存中命中的访问份额为最大。
通常把超高速缓存组织成多个“行”,行是主存储器中的相对长的一序列存储单元。典型地当在超高速缓存中未复制处理机所访问的存储单元时(即所谓的超高速缓存“未命中”事件),把包含该未命中的存储单元及其邻近存储单元的一条整行作为从其它超高速缓存或主存储器的检索部分放在该超高速缓存中,此即所谓的对超高速缓存的“填行”事件。
每个超高速缓存行通常和主存储器中的多个单元的组相关。每个超高速缓存行存储相关的多个存储器单元组的拷贝,并且存储当前在该行中存储哪些存储器单元组的指示。从而,当处理机请求访问某特定存储器单元时,访问和该存储器单元对应的超高速缓存行以判定该超高速缓存行是否存储包括该被请求单元的存储器单元组。若是,则访问超高速缓存中的被请求存储器单元。若不是,把包含该被请求单元的一组存储器单元按行填入到超高速缓存中。
通常n路相联的超高速缓存每次把和某超高速缓存行对应的数组单元的n组存储到超高速缓存中。当把一组存储器单元填行到超高速缓存中时,可能需要更换相同的超高速缓存单元中的存储器内容。若被更换的超高速缓存线的内容被修改,必须把该行存回到主存储器中相应的一组存储器单元里,即所谓的从超高速缓存的“注回”或“回写”事件。
在高性能数据处理系统中,通常存在二个或更多的超高速缓存,并组织成首先通常尝试在“第1级”或L1超高速缓存中定位某存储器单元的复制使处理机尝试访问某存储器单元。若L1超高速缓存里未命中,则尝试在“第2级”或L2超高速缓存里定位所需存储器单元的复制。若未在L2超高速缓存里命中,以相同的方式顺序地检查每个较低的层。若在超高速缓存之一里命中,则从该超高速缓存得到所需的存储器单元,并且通常把被访问的存储器单元以及构成一条超高速缓存行的邻近单元一起至少复制到L1超高速缓存的适当位置处,尽管在某些情况下访问可能是“超高速缓存禁止的”,在这种情况下检索后不把数据存储到L1超高速缓存中。若在所有的超高速缓存中都未命中,则从主存储器检索该未命中的单元以及构成一完整超高速缓存行的邻近单元,并且若该访问不是超高速缓存禁止的则把该行填到一个或多个超高速缓存中。类似地,若从某超高速缓存注回某行,可能把该行写到较高层的超高速缓存、主存储器、或者二者中。
通常利用缓冲器把指令以及数据的行从超高速缓存和从处理机传送到其它的超高速缓存和处理机。例如,在一种体系结构中二个缓冲器分别和第1级超高速缓存和第2级超高速缓存连接。这些缓冲器还通过系统总线和主存储器、主处理机以及可能和其它处理机连接。缓冲器允许在具有不同传送率的部件之间平滑地传送指令和数据。
在多处理机系统中,常常由多个处理机共享一个或多个较低层的超高速缓存或主存储器。在这样的环境下,当某处理机修改数据时,必须注意在别的处理机访问该数据之前把修改送回到共享的超高速缓存或存储器,从而使处理机不会对尚未更新的数据执行操作。在这样的环境,通常在处理机可以修改数据之前,它必须请求拥有该数据。一旦赋予某处理机对该数据的拥有权,该处理机排它地访问该数据,并且在该数据回写到共享超高速缓存或存储器之前禁止其它处理机访问或修改该数据。若第一处理机企图访问由第二处理机排它地持有的数据,第一处理机请求对该数据的拥有权;其后果是,强制第二处理机把该数据回写到共享的超高速缓存或存储器,然后把该数据发送给第一处理机。
在一些特殊情况下这种典型结构会导致低效率,例如两个处理机同时写同一数据。在这种情况下,第一处理机将得到该数据的拥有权以写该数据。接着,第二处理机请求拥有权以写该数据,强制第一处理机把该数据回写到共享超高速缓存或存储器,从而可在排它状态下把该数据发送给第二处理机。接着第一处理机请求拥有权以写该数据,强制第二处理机把该数据回写到共享超高速缓存或存储器,从而可在排它状态下把该数据发送给第一处理机。只要二个处理机试图写数据将会反复这种交换,导致对共享超高速缓存或存储器的多余回写并降低性能。
发明内容
从而,需要一种以改善其性能的方式下管理的超高速缓存,尤其是在多处理机环境下。
依所本发明的原理,在具有第一和第二处理机的多处理机环境下采用一种超高速缓存系统。第一处理机利用第一超高速缓存以及共享的较低层存储访问数据,而第二处理机利用第二超高速缓存和共享的较低层存储访问数据。在第一、第二超高速缓存和较低层存储之间设置一个存储控制电路。当第一或第二处理机访问未驻留在各自的第一或第二超高速缓存中的数据时,向存储控制电路发出对该数据的请求。为了改进第一和第二处理机反复地写同一数据的现象,当存储控制电路接收对来自第一超高速缓存的数据的请求并且该数据已被第二处理机修改并以修改形式存储在第二超高速缓存中时,存储控制电路使第二超高速缓存在不把该数据回送给共享的较低层存储的情况下把修改后的数据发送到第一超高速缓存。
在后面说明的特定实施例中,共享低层存储系统包括与作为第1级超高速缓存的第一和第二超高速缓存相比为更低层的或第2级超高速缓存。第2级超高速缓存保持主存储中数据的拷贝并且还保持第1级超高速缓存所具有的数据拷贝的指示以及那些拷贝是否已被修改的指示,当存储控制电路接收对来自第1级超高速缓存的数据的请求时,把该请求发送到第2级超高速缓存,后者判定另一个第1级超高速缓存是否正存储着该数据的修改拷贝,若是则第2级超高速缓存向存储控制电路回送指向具有该数据的修改拷贝的第1级超高速缓存的指针。
第2级超高速缓存在一个队列里按从最近最不使用到最近最多使用的次序保持数据。当通过返回指向另一个第1级超高速缓存的指针而满足对来自第1级超高速缓存数据的请求时,更新第2级队列以把第2级超高速缓存中该数据的拷贝标识成是最近最多使用的。
每个第1级超高速缓存中保持第1级超高速缓存中的数据是否是共享的或被修改的指示。若企图写共享的数据,在写该数据之前向第2级超高速缓存发送对拥有权的请求。第2级超高速缓存中保持第2级超高速缓存中的数据是否是共享的、排它的或被修改的指示。当第1级超高速缓存做出对某数据的拥有权请求时,如第2级超高速缓存中的该数据被标识成为共享的,则在把拥有权授予第1级超高速缓存之前第2级超高速缓存请求来自系统总线的该数据的拥有权。此外,作为向第1级超高速缓存授予对数据的拥有权的一部分,以及作为对带有修改意图的读的响应向第1级超高速缓存发送数据的一部分,第2级超高速缓存指示所有具有该数据的拷贝的第1级超高速缓存刷新该数据。第2级超高速缓存还响应带有修改意图的读把数据标记成被修改的,一旦向第1级超高速缓存授予拥有权或者已对其发送该数据,把该数据标记成被修改的。
当第2级超高速缓存因老化去掉数据或者因去掉对其处理机集合体的拥有权而去掉数据时,第2级超高速缓存指示任何具有该数据的未修改拷贝的第1级超高速缓存对该第1级超高速缓存刷新该数据,或者指示具有该数据的修改拷贝的第1级超高速缓存把修改数据回写到主存储并且对该第1级超高速缓存刷新该数据。当第2级超高速缓存从另一个处理机复合体接收读数据的请求时,该第2级超高速缓存指示任一具有该数据的修改拷贝的第1级超高速缓存向主存储以及向第2级超高速缓存回写该数据,并且把该数据标记成为共享的。
本发明还提供一种用于管理一个超高速缓存系统的方法,所述超高速缓存系统包括分别连接在一个共享的较低层存储系统和第一、第二处理机之间的第一和第二超高速缓存,从所连接的处理机接收确定要存储到所述较低层存储系统中的或要从所述较低层存储系统装入的数据的存储器存取命令,该方法包括:响应于所述存储器存取命令从所述较低层存储系统装入数据或把数据存储到所述较低层存储系统,以及一旦从所述第一超高速缓存接收对已由所述第二处理机修改过的并以修改过的形式存储在所述第二超高速缓存中的数据的请求,使所述第二超高速缓存在不把所述数据回送到所述共享的较低层存储系统的情况下把所述数据传送到所述第一超高速缓存,从而改进由第一和第二处理机对相同数据的反复写的操作。
附图说明
在本文中后附的并且构成本文的另一部分的权利要求书中叙述表征本发明的这些以及其它的特性和优点。然而,为了更好地理解本发明以及更好地理解通过本发明的使用获得的好处及目的,应参照各附图以及相随的说明材料,其中本发明的示范实施例得到说明。
图1是在访问主存储器中实现本发明的原理的系统处理部件的方块图,其包括处理机和超高速缓存系统、主存储器以及外围部件;
图2是依据本发明的原理的和超高速缓存系统一起使用的单线程和多线程的处理机的方块图;
图3是图2中示出的L2超高速缓存的内容的框图;
图4是图2中示出的L1超高速缓存的内容的框图;
图5A是图2中示出的L1超高速缓存响应接收到来自相关处理机的读操作而执行的操作的流程图;
图5B是图2中示出的L1超高速缓存响应接收到来自相关处理机的写操作而执行的操作的流程图;
图5C是图2中示出的L1超高速缓存响应从更低层存储部件接收到的共享回写、刷新回写或刷新命令而执行的操作的流程图;
图5D是图2中示出的L1超高速缓存执行的向L1超高速缓存增添一个超高速缓存行(CL)以存储新数据的操作的流程图;
图6A是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的读请求或带有修改意图的读请求的响应部分的操作的流程图;
图6B是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L2超高速缓存接收到的刷新回写命令或共享回写命令的响应部分的操作的流程图;
图6C是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的老化回注(castback)的响应部分的操作的流程图;
图6D是可由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的不再存在的注回的响应部分的供选用操作的流程图;
图7A是由图2中示出的L2超高速缓存执行的作为对来自过渡超高速缓存(超高速缓存缓冲器)的读请求或者带有修改意图的读请求的响应部分的操作的流程图;
图7B是由图2中示出的L2超高速缓存执行的作为对来自L1超高速缓存的拥有权请求的响应部分的操作的流程图;
图7C是由图2中示出的L2超高速缓存执行的作为对从过渡超高速缓存(超高速缓存缓冲器)接收的共享回写命令、老化回注命令、供选用的不再存在的回注命令和刷新回写命令的响应部分的操作的流程图;
图7D是由图2中示出的L2超高速缓存执行的作为向L2超高速缓存增添新数据的超高速缓存行(CL)的操作的流程图;
图7E是由图2中示出的L2超高速缓存执行的作为对在系统总线上接收来自另一个L2超高速缓存的拥有权请求的响应部分的操作的流程图;
图7F是由图2中示出的L2超高速缓存执行的作为对在系统总线检测到的来自另一个L2超高速缓存的读请求或带有修改意图的读请求的响应部分的操作的流程图。
具体实施方式
如在图1中所见,采用本发明的原理的典型计算机系统由系统处理部件10(其包括一个或多个系统处理机)和超高速缓存系统12、主存储14、包括用于把光纤电缆引线连接到输入/输出扩充单元的模块的本地总线插卡16、带有存储部件18′的存储控制器18以及带有工作站20′的工作站控制器20构成。
图2示出依据本发明的原理的处理机和超高速缓存系统12。依据后面更详细说明的本发明的原理,在第一处理机复合体32内,存储控制单元22以提高存储器性能的方式管理由处理机使用的数据。
计算机系统的每个处理机24和L1超高速缓存以及控制电路28交互以便得到和存储所需的数据。每个L1超高速缓存28存储相对少的,例如512到1024的超高速缓存行。每个超高速缓存行存储主存储14中的一组相继的存储器单元的拷贝,例如128个相继存储器单元的拷贝。主存储14中的每个地址唯一地和L1超高速缓存中的一个行相关;从地址位组中的子集可以确定特定地址L1超高速缓存28中的相关行。通过该同一的相关,L1超高速缓存28中的每个超高速缓存行和几组可存储到该超高速缓存行的相继地址相关。任何时刻,L1超高速缓存28中超高速缓存行可以存储少量的,例如和该超高速缓存行相关的地址范围内的二个,相继存储器单元的拷贝。
每个L1超高速缓存28包括一个目录,该目录标识哪些相继的存储器单元正存储在该L1超高速缓存28中。具体地,该L1超高速缓存目录为主存储14中其拷贝当前驻留在L1超高速缓存28中的某行里的存储器单元的地址范围存储指示。如上面所提到,主存储14中的多个不同的相继存储器单元组可映射到L1超高速缓存28中的同一个行;从而,该L1超高速缓存目录标识多个主存储14中的不同存储器单元组的哪一组驻留在L1超高速缓存28中。
L1超高速缓存28和存储控制单元22交互以得到执行计算机程序的数据和指令。当处理机24a和24b分别通过L1超高速缓存及控制电路28a和28b访问某存储器单元时,若该L1超高速缓存及控制电路未存储该所需的数据,则把该访问请求发送到存储控制单元22。利用后面说明的电路和功能,存储控制单元22作出响应,得到被请求的数据并把该数据发送到请求的L1超高速缓存L1及控制电路28a或28b。
实现本发明的原理的存储控制单元22利用包括着超高速缓存、缓冲器、主存储器的各种存储部件控制从/至处理机24a、24b以及L1超高速缓存28a、28b的数据输入输出。存储控制单元22还管理对处理机24a、24b的指令的发送及输入。
如图2中所示,存储控制单元22和主存储14交互。主存储14典型地包括容量相对大的中等速度的存储器,例如一个或多个DRAM芯片。主存储14实现分页存储器管理方式;具体地,该中等速度的存储器存储换出海量存储器的一部分(见图1的18′)的多个存储器单位页,以加快更迅速地访问这些存储器单元。
主存储14中的每个存储单元和一个地址相关,该地址唯一地标识主存储14中所有存储器单元中的该存储器单元。为了访问某存储器单元,向主存储14发送一个地址,并且作为响应,主存储14发送该被确定的存储器单元的内容。作为这种访问的一部分,向系统总线23提供该访问的说明,其中包括地址和访问类型。这样,当别的处理机复合体访问主存储14时,存储控制单元22可监视系统总线23以便识别访问类型并且采取适当的如后面说明的行为。
为了对频繁使用的存储单元提供高速访问,存储控制单元还和第2级或L2超高速缓存26交互。L2超高速缓存26类似于L1超高速缓存28。L2超高速缓存26中的每行和若干相继的存储器地址组相关,每次可把其中的一些组存储到相关的L2超高速缓存行中。此外,L2超高速缓存还和L2超高速缓存目录相关。L2超高速缓存目录中的每个条目标识L2超高速缓存26中存储的存储器单元的地址范围。为了确定所需的地址是否驻留在L2超高速缓存26中,利用地址中的选定位组选择L2超高速缓存目录中一个唯一相关的条目,然后把该选出的L2超高速缓存目录条目中存储的地址范围和所需的地址进行比较。
在发送到L1超高速缓存28之前,大多数访问要在存储控制单元22中被缓冲。具体地,存储控制单元22包括一个超高速缓存缓冲器30,其也称为中间或过渡超高速缓存,用于管理从/至L1超高速缓存28、至/从L2超高速缓存26和/或主存储14的数据传送。超高速缓存缓冲器30包括少量的例如八条数据存储行,每行能够存储与L1超高速缓存28和L2超高速缓存26中的一行相同数量的数据。当在超高速缓存28、26和主存储14之间传送数据时,超高速缓存缓冲器30中的八条行用于缓冲L1超高速缓存28和L2超高速缓存26中的行组或者用于缓冲主存储14中的对应存储器单元组。
超高速缓存缓冲器30中的每行存储标识着当前使用的以及超高速缓存缓冲器行的状态的数据;具体地,该行是否使用,以及若使用被使用行的访问类型、服务该访问的状态、访问地址以及其它信息。一旦在某L1超高速缓存28中存在未命中并且必须从L2超高速缓存26或主存储14得到数据,则向该未命中分配超高速缓存缓冲器30中的一个行,从而当从L2超高速缓存26或主存储器回送该数据时,该数据被存储在超高速缓存缓冲器30的该分配好的行中,并且接着从该行发送到L1超高速缓存28和/或L2超高速缓存26。类似地,一旦在L1超高速缓存28或L2超高速缓存26中检索某行或者在其它条件下需要从某行回注到L2超高速缓存26或主存储14,为该回注分配超高速缓存缓冲器30中的某行,从而从L1超高速缓存28或L2超高速缓存26把数据回注到超高速缓存缓冲器30中的该指定行,并且接着从该行传送到L2超高速缓存26或主存储14。
把超高速缓存行分配给特定的访问和回注、把得到的用于访问和回注的数据处理到超高速缓存缓冲器30之中以及从超高速缓存缓冲器30传送数据,是通过存储控制单元20中的逻辑电路利用其中所存储的数据来管理的。可以理解,具有其自己的处理机及超高速缓存系统(未在图2中示出)的其它处理机复合体例如32′可和主存储14以及系统总线23连接以便装入和存储数据。
现参照图3,以说明L2超高速缓存26的细节。L2超高速缓存26包括用于和存储控制单元22通信的接口逻辑电路34以及多个各用于存储被高速缓存的数据的超高速缓存行36。行36包括一些控制字段以及一个用于存储被高速缓存的数据的字段38。这些控制字段对于实现本发明的原理是必需的,其中包括用于标识具有由该超高速缓存线管理的数据的拷贝的L1超高速缓存的L1存在位组字段40、用于标识该行的状态(排它的、共享的或已修改的)的状态字段42以及用于标识主存储14中和字段38中的数据相对应的地址的标签字段44。如后面详细解释的那样,L2超高速缓存26对从存储控制单元22接收的命令和数据作出响应以保存数据或者从行36检索数据。L2超高速缓存26还通过保持行36的一个队列管理各行36在其内的替换,以便把这些行按从最近最少使用到最近最多使用排序。
现参照图4,以解释L1超高速缓存的细节。每个L1超高速缓存28包括用于和存储控制单元22通信的接口逻辑电路46以及多个各用于存储被高速缓存的数据的超高速缓存行52。行52包括一些控制字段以及一个用于存储被高速缓存的数据的字段54。对于实现本发明的原理为必需的这些控制字段包括:用于标识超高速缓存中的数据是否有效的有效字段56,用于标识主存储14中的字段54中的数据相对应的地址的标签字段58,以及用于标识超高速缓存行52的数据的该行状态(共享的或已修改的)的状态字段60。如后面详细解释的那样,L1超高速缓存28对从存储控制单元22接收到的命令和数据作出响应以便保存数据或从行52检索数据。L1超高速缓存28还通过保持行52的一个队列管理各行52在其内的替换,以便把这些行按从最近最少使用到最近最多使用排序。
现参照图5A,以解释L1超高速缓存响应从相关处理机接收读操作所执行的操作。响应于该读操作(步骤100),L1超高速缓存判定其是否具有被请求数据的有效CL(步骤102)。若有效,则在步骤104把该被定位的CL移动到该超高速缓存中的最近最多使用位置,并且在步骤106从该定位好的CL读所需的数据并回送给处理机。然而,若不存在被请求数据的有效CL,则在步骤108(该步骤在后面的图5D中更详细说明)向该L1超高速缓存增添一个含有被请求数据的超高速缓存行,并接着在步骤106从定位好的CL读所需的数据并且回送到处理机。
现参照图5B,以解释L1超高速缓存响应于从相关处理机接收写操作而执行的操作。作为第一步骤110,L1超高速缓存判定在其中是否存在用于所需数据的CL。若存在,处理在步骤112继续,以使定位好的CL成为最近最多使用的。接着在步骤114,评估该定位好的CL以判定该CL是否标记成“已修改的”。
如前面所提及,L1超高速缓存中的每个CL可具有“共享的”或“已修改的”状态。“共享的”状态表示L1超高速缓存中的数据未被修改过因为它是从L2超高速缓存或主存储器读到该L1超高速缓存中的,并且可能存在一个或更多的存储着相类似的该数据的未修改拷贝的其它超高速缓存。“已修改的”状态表示L1超高速缓存中的数据已被修改过的因为它是从L2超高速缓存或主存储器中读到该超高速缓存中的。如将看到那样,若某L1超高速缓存已请求并且接收对某数据的排它性拥有权,该L1超高速缓存可把该CL置成“已修改的”状态;这样,当某CL处于“已修改的”状态时,它还表示别的超高速缓存都不存储该数据的拷贝。
从而,若在步骤114中确定该定位好的CL未标记为“已修改的”,则可确定该定位好的CL中的数据是未修改过的并且可能存在别的具有该数据的拷贝的超高速缓存。因此,在写至该定位好的CL之前,在步骤116中向L2超高速缓存26发送对拥有权的请求。如将在后面所看到,该请求或者由L2超高速缓存接收或者由其拒绝。在步骤118判定是否已接收该对拥有权的请求,并若未接收则在步骤116重试该请求。重复步骤118和116的循环,直至接收该对拥有权的请求。此刻,在步骤120L1超高速缓存判定该定位好的CL是否继续具有用于该请求的有效数据。由于可能在试图得到拥有权重复步骤116和118的循环期间可出现在L1超高速缓存中处理别的请求而要执行该步骤。
若在步骤120该定位好的L1 CL继续具有用于该请求的有效数据,则在步骤122该定位好的L1 CL被标记成“已修改过的”以表示该CL中的数据已被改变,并且接着在步骤124由处理机写的数据被写入到L1 CL。
若在步骤120该定位好的L1 CL不再具有用于该请求的有效数据,或者若在步骤110中在超高速缓存里不存在具有用于该请求的数据的有效CL,则处理到达步骤126,其中如后面参照图5D讨论的那样对L1超高速缓存增添一个具有新数据的CL。在该步骤之后,则在步骤124把用于该请求的数据写到新增添的CL。
现参照图5C,以解释L1超高速缓存响应于接收到共享回写、刷新回写或刷新命令所执行的操作。
如后面详细说明那样,当同一处理机复合体中的L2超高速缓存确定另一个处理机复合体试图读共享回写命令的对象的数据并且还确定该数据的修改版本在其L1超高速缓存中时,该L1超高速缓存接收共享回写命令。响应于共享回写命令,L1超高速缓存中的修改过的数据回写到L2超高速缓存和主存储器,并且把该L1超高速缓存中的该修改过的数据的状态从“已修改的”改变到“共享的”。
还如后面详细说明那样,当同一处理机复合体中的L2超高速缓存确定另一个处理机复合体试图读刷新回写命令的对象的数据并且还确定该数据的修改版本在其L1超高速缓存中时,该L1超高速缓存接收刷新回写命令。当由于老化L2超高速缓存去掉该L2超高速缓存中的对应数据的超高速缓存行并且在其L1超高速缓存中存在该L2超高速缓存行的数据的修改版本时,也可生成刷新回写命令。当L2超高速缓存指示过渡超高速缓存把修改过的数据从一个L1超高速缓存传送到另一个L1超高速缓存时,也可以生成刷新回写命令。响应于刷新回写命令,L1超高速缓存中的修改过的数据回写到过渡超高速缓存,并使L1超高速缓存中的数据失效。接着过渡超高速缓存恰如其份地把该数据传送到L2超高速缓存和主存储器或者把该数据传送到另一个L1超高速缓存。
最后,如后面所见,当同一处理机复合体中的L2超高速缓存确定要从L1超高速缓存中去掉未在L1超高速缓存中修改过的数据时,L1超高速缓存接收刷新命令。这可以出现在当L2超高速缓存确定同一处理机复合体中的另一个处理机或者另一个处理机复合体试图得到该数据的拥有权时,或者,当L2超高速缓存因老化去掉它的用于同一数据的超高速缓存线时。响应于刷新命令,L1超高速缓存使L1超高速缓存中的该数据失效。
从而,一旦L1超高速缓存接收到刷新回写或共享回写中之一,必须通过过渡超高速缓存缓冲器把数据回送到L2超高速缓存或主存储器或者二者中。因此,在接收到刷新或共享中写命令后的第一步骤130中,L1超高速缓存接收应把数据写到其中的过渡超高速缓存行号。接着在步骤132,L1超高速缓存确定含有刷新回写或共享回写命令中标识的数据的L1超高速缓存里的CL。通常,L1超高速缓存中存在一个用于该被标识数据的CL;但是,在由并发的老化操作(参见图5D)造成的一些少见情况下,在接收到对数据的刷新回写或共享回写时,该数据的CL可能已经失效。(若不存在用于由刷新回写或共享回写命令标识的数据的CL,则废弃该刷新回写或共享回写命令,因为老化操作会达到和刷新回写命令相同的结局。)
在标识用于刷新回写或共享回写命令的CL后,在步骤134该CL中的数据被写到步骤130中所确定的过渡超高速缓存缓冲器。此刻,对刷新回写命令或共享回写命令采用不同的操作。若是共享回写命令(步骤136),在步骤138把该确定的CL标记成“共享的”以表明另一个超高速缓存或处理机复合体将具有该数据的拷贝,并完成对共享回写命令的处理。若是刷新回写命令(步骤140),在步骤142,把该确定的CL标记成失效的并且移动到由L1超高速缓存保持的队列里的最近最少使用(LRU)位置,从而该CL可迅速地重新使用,并完成对该命令的处理。
由于不必把数据回写到过渡超高速缓存缓冲器中,接收到刷新命令后的操作相对简单。从而,响应于刷新命令,L1超高速缓存确定L1超高速缓存中含有刷新命令中所标识的数据的CL。在常规情况下,在L1超高速缓存中可能存在或不存在用于该标识数据的CL;若完成不再存在的选择回注(参见图5D、6D和7C),接着在大多数情况下L2超高速缓存被告知何时L1超高速缓存不再具有特定的数据,并且不会向L1超高速缓存发送不必要的刷新命令;然而,即使完成不再存在的回注,在由并发的老化操作造成的一些少见情况下(参见图5D),当接收刷新命令时,该数据的CL可能已经失效。(若没有用于由刷新命令标识的数据的CL,则废弃该刷新命令,因为老化操作会达到如刷新命令相同的结局。)在标识用于刷新命令中所标识的数据的CL后,在步骤142,把该确定的CL标记成失效的,并且移动到由L1超高速缓存保持的队列里的最近最少使用(LRU)位置,从而该CL可迅速地重新使用,并且完成对该命令的处理。
现参照图5D,以解释由L1超高速缓存执行的作为增添一条超高速缓存行(CL)部分的操作。从前面可以注意到,作为对读数据请求的响应结果(步骤108)或者作为对写数据请求的响应结果,可能需要向某L1超高速缓存增添一个CL。在这二种情况中,从L2超高速缓存或从主存储器得到数据。在获取数据以满足写数据请求下(步骤126),如后面详细说明那样,则是借助带有修改意图的读操作获取该数据的。
为了开始向该L1超高速缓存增添一个CL,在步骤150,在该L1超高速缓存中选择一个供替换的CL。这可能会涉及到确定该L1超高速缓存中哪个CL是最近最少使用的,或者可能会涉及到和L1的各CL的使用统计有关的其它更为复杂的操作。在任何情况下,一旦选择一个供替换的CL,在步骤152评估该选定的CL以判定它是否标记成有效的和已修改的。若是,则该选定CL中的数据已被修改过并且必须被回写到L2超高速缓存和/或主存储器。从而在该情况下,在步骤154为该选择用于替换的CL中的旧数据向过渡超高速缓存缓冲器发送一个老化回注命令。过渡超高速缓存作出响应而向该老化回注分配一个过渡超高速缓存缓冲器行号并向L1超高速缓存回送在步骤156中接收的该行号。然后,在步骤158,把来自选择用于替换的CL的旧数据写到该L1超高速缓存中被标识的行号中。
若在步骤152中确定该选定的CL是失效的,或者虽然有效但不含有修改过的数据,则不需要把来自该选定CL的数据回写到L2超高速缓存或主存储器中。若选定的CL是失效的,为准备使该CL存储新数据无需采取任何其它步骤。然而,若该CL是有效的但数据未被修改过,则可执行选用的步骤160以告诉L2超高速缓存L1超高速缓存不再存储该数据的拷贝。这是通过向过渡超高速缓存发送一个标识选择成用于替换的CL中的旧数据的不再存在回注命令完成的。如后面更详细地看到那样,该步骤是选用的,但若执行,以后处理的流水线可使L2超高速缓存避免不必要的刷新命令。
步骤158或供选用的步骤160后,在步骤162中采取措施以建立存储新数据的CL。具体地,在该CL中适当地设置标志以标识新数据的地址,并且做出任何其它字段更改或管理更改以把该CL和新数据关联起来。
接着,为了得到数据,在步骤164中向过渡超高速缓存发送一个读请求或者带有修改意图的读请求以便为该CL获取新数据。作为响应,过渡超高速缓存缓冲器将对该请求分配一个行号并向L1超高速缓存回送在步骤166中接收的该行号。在步骤168,随着新数据被写入在步骤166中确定的过渡超高速缓存中,L1超高速缓存接收该新数据。在此同时,接收该数据的状态,即共享的或已修改的。如后面可看到那样,当从L2超高速缓存、主存储器或其它L1超高速缓存向过渡超高速缓存发送数据时还一起发送状态,以指示该数据是修改过的,即和主存储器中的数据是不同的,或者替代地是共享的,即和主存储器中存储的数据是相同的并且在该情况下在别的超高速缓存中可能存在该数据的其它拷贝。
在步骤170中,在该选定的CL中存储新近接收的数据。接着在步骤172中,把该选定的CL标记成是有效的,从而可使用它以满足该待决的请求。最后,根据启动该检索数据的请求的类型采取措施以适当地把该CL设成共享状态或修改过的状态。具体地,若检索该新数据以满足来自和该L1超高速缓存连接的处理机的读请求(步骤174)并且该数据在标记成共享的下回送,则在步骤176把该选定的CL标记成共享的,在步骤177使该选定的CL成为该超高速缓存中的最近最多使用的CL,并结束增添CL的处理。替代地,若在标记成“修改过的”下回送新数据(步骤178),则和启动数据检索的访问类型无关,在步骤180把该CL标记成“修改过的”,在步骤177使它成为该L1超高速缓存中的最近最多使用的CL,并且结束处理。最后,若检索该数据以满足来自于和该L1超高速缓存连接的处理机的写请求(步骤182),则在标记成“共享的”下回送数据,然后必须采取动作以得到该数据的拥有权。具体地,在该情况下在步骤184向L2超高速缓存发送对拥有权的请求。在步骤186,若拒绝该请求,则处理返回步骤184并再次作出该请求。最终会接受该拥有权请求,并且处理从步骤186进入步骤180,其中把该选定的CL标记记成“修改过的”以反映该CL中的数据是由处理机写的,并接着在步骤177使该选定的CL成为该L1超高速缓存中的最近最多使用的CL,并且结束处理。
现参照图6A,以解释由过渡超高速缓存缓冲器作为响应从某L1超高速缓存接收读请求或带有修改意图的读请求的部分所执行的操作。如上面所提及,作为对这二种请求的初始响应,在步骤190对该请求分配一个过渡超高速缓存行,并且在步骤192把该超高速缓存行回送到L1超高速缓存。接着,在步骤194,恰如其份地把读请求或带有修改意图的读请求和步骤192中分配的行号一起发送给L2超高速缓存。接着L2超高速缓存在步骤196以三种方式中的一种方式响应。
首先,L2超高速缓存可作出响应,标识另一个具有由该读请求或带有修改意图的读请求寻找的数据的修改版本的L1超高速缓存(步骤198)。若这出现,则在步骤200向该另一个L1超高速缓存发送刷新回写命令,以使该另一个L1超高速缓存把该数据刷新回到过渡超高速缓存缓冲器,从而可把它移动至请求的L1超高速缓存。接着,在步骤202,向该另一个L1超高速缓存发送步骤192中分配的过渡超高速缓存缓冲器行号,从而该另一个L1超高速缓存将把修改过的数据回送由该请求L1超高速缓存监视的同一个过渡超高速缓存缓冲器行上。在步骤204,把该另一个L1超高速缓存中的数据回送到分配好的过渡超高速缓存行中,并且在步骤206,随着其被写到过渡超高速缓存行把该数据送到请求的L1超高速缓存。在一种实施中,该请求的L1超高速缓存可监视对过渡超高速缓存的写并且当该数据从另一个L1超高速缓存向过渡超高速缓存写时直接接收该数据,从而尽可能快地由该请求的L1超高速缓存得到该数据。在回送该数据时,把它标记成“修改过的”以表明该数据与L2超高速缓存中和/或主存储器中的数据不同。接着,如前面说明那样,该请求的L1超高速缓存将对该数据采取适当的动作。
请注意,由于数据可以在不必回写到L2超高速缓存或主存储器的情况下直接从一个L1超高速缓存传送到另一个L1超高速缓存,该功能明显地节省时间。尤其当二个处理机反复地重写相同的数据的情况下,本发明的使修改过的数据在L1超高速缓存之间直接传送的这种特性明显地节省超高速缓存开销。
若(步骤208)该请求的L1超高速缓存寻找的数据在L2超高速缓存中并已被修改过,但它不存在其它的L1超高速缓存中(因为该修改过的数据已从这些L1超高速缓存中刷新和老化掉),则L2超高速缓存作出响应,将通过把该数据在标记成“修改过的”下回送到过渡超高速缓存。类似地,若L1超高速缓存在带有修改意图下读数据并且L2超高速缓存中的数据标记成“排它的”,则L2超高速缓存将作出响应,把该数据标记成“排它的”回送到过渡超高速缓存。在这二种情况下,则在步骤206中,在把数据写到过渡超高速缓存时,在标记成“修改过的”下把它送到该请求L1超高速缓存。具体地,该请求L1超高速缓存可监视对过渡超高速缓存的写并且可在把数据从L2超高速缓存写到过渡超高速缓存时直接得到它,从而尽可能快地由该请求的L1超高速缓存得到该数据。接着,如前面说明那样,该请求的L1超高速缓存将对该数据采取适当的动作。
若请求的L1超高速缓存寻找的数据不在L2超高速缓存中并且未被修改过,或者若该数据不在L2超高速缓存中并且必须从主存储器取到L2超高速缓存中,则在步骤210,L2超高速缓存将在标记成“共享的”或“排它的”下把数据回送到过渡超高速缓存缓冲器。若数据标记成“共享的”回送,则在步骤212在标记成“共享的”下把该数据回送到L1超高速缓存。若数据标记成“排它的”回送,并且L1超高速缓存在不带修改意图下读数据,则在步骤212在标记成“共享的”下把该数据回送到L1超高速缓存。如上面讨论那样,L1超高速缓存会适当地响应,并且可能产生对拥有权的请求。
现参照图6B,以了解响应从L2超高速缓存接收刷新回写或共享回写命令由过渡超高速缓存执行的操作。如前面提及并如下面详细说明,当L2超高速缓存确定因相应L2超高速缓存行的老化或因对访问的请求和/或别的处理机复合体对该数据的拥有权必须刷新某L1超高速缓存中的该数据时过渡超高速缓存接收这些命令。
在后一种情况下,如后面提到那样,在L2超高速缓存等待完成被请求的回写的同时,该L2超高速缓存将阻止/拒绝其它处理机复合体的读或拥有权请求。然后该其它的处理机复合体会发出对读或拥有权请求的重试。
若尚未分配一个过渡超高速缓存行,则在步骤222分配一行。接着在步骤224向具有修改过的数据的L1超高速缓存发送一个刷新回写或共享回写命令,并且在步骤226向该L1超高速缓存发送步骤224中分配的过渡超高速缓存行。之后,在步骤228,L1超高速缓存通过向该确定的行发送数据做出响应。
此刻,根据L2超高速缓存发出的回写命令的类型执行不同的处理。若该命令是刷新回写(步骤230),则在步骤232把从L1超高速缓存接收的数据直接发送到主存储器,并且在步骤234向该L2超高速缓存发送刷新回写确认。不在该L2超高速缓存中存储该数据,因为该L2超高速缓存已确定应从整个处理机复合体刷新该数据。若该命令是共享回写(步骤236),则在步骤238把该数据发送到主存储器,并且此外还在步骤240向L2超高速缓存发送共享回写命令而且在步骤242向L2超高速缓存发送该数据并存储在其中。
现参照图6C,以解释响应来自L1超高速缓存的老化回注由过渡超高速缓存执行的操作。如前面所解释,当来自某L1超高速缓存的修改过的数据老化时发生老化回注。因为不存在别的处理机复合体需要该修改过的数据的指示,过渡超高速缓存只把它发送到L2超高速缓存。从而,在第一步骤250,对该命令分配一个过渡超高速缓存行,并在步骤252把该行号发送给L1超高速缓存。在步骤254,从L1超高速缓存接收该数据。接着,在步骤256,向L2超高速缓存发送老化回注命令,并且在步骤258向L2超高速缓存发送接收到的数据。
现参照图6D,以解释响应来自L1超高速缓存的不再存在的回注由过渡超高速缓存执行的供选用的操作。如前面所提及,不再存在的回注告诉L2超高速缓存发起该回注的L1超高速缓存不再具有所确定的数据的版本。该数据本身未改变过从而不从L1超高速缓存回送。从而,在接收到不再存在的回注后(步骤260),在步骤262向L2超高速缓存发送该同一数据的不再存在的回注。
现参照7A,以解释响应来自过渡超高速缓存的读或带有修改意图的读请求由L2超高速缓存执行的部分操作。作为第一步骤270,从该过渡超高速缓存接收用于该操作的过渡超高速缓存行号。接着,在步骤272,通过搜索用于该被请求数据的有效CL判定被请求的数据是否在该L2超高速缓存中。若在该L2超高速缓存中存在用于该数据的CL,则在步骤274使该确定的CL成为最最近使用的。接着,在步骤276检查该CL以判定它是否标记成“修改过的”。若是,则在步骤277,L2超高速缓存通过确定在该标识的CL中是否设置存在位来判定是否存在具有该修改过的数据的L1超高速缓存。
若在步骤277存在设定位,则出现前面讨论的情况,其中某L1超高速缓存具有另一个L1超高速缓存需要的修改过的数据。在该情况下,在步骤278,向过渡超高速缓存发送指向具有存在设定位的L1超高速缓存的指针,以使该过渡超高速缓存从当前具有该数据的L1超高速缓存向需要该数据的L1超高速缓存发送该修改过的数据。如前面所提及,这种直接的L1对同级L1的数据传送可以明显地减少在管理超高速缓存数据中所涉及到的开销,尤其在二个处理机反复地重写相同数据的情况下。在步骤278之后,在步骤280清除掉当前具有该修改过的数据的L1超高速缓存的存在位,并对请求该数据的L1超高速缓存设置该存在位,以反映现在该修改过的数据在该请求L1超高速缓存中。之后,结束对该请求的处理。
若在步骤276,定位好的CL未标记成“修改过的”,或者在步骤277在CL中未设定存在位,则从L2超高速缓存CL 送被请求的数据。在这种情况下,根据从过渡超高速缓存接收到的读请求的类型采取不同的行为(步骤282)。若该请求是读(步骤284),则在步骤286,设定请求的L1超高速缓存的存在位,并且接着在步骤288向在步骤270中确定的过渡超高速缓存线发送L2超高速缓存CL中的数据以及该L2超高速缓存CL的修改过的、共享的或排它的状态。若该请求是带有修改意图的读(步骤290),则接着在步骤292检查该L2超高速缓存CL以判定它是否“排它的”状态;若是,则在步骤294把该CL改变成“修改过的”状态,因为别的处理机复合体都不具有该数据的拷贝。若在步骤292中该CL不在“排它的”状态下,或者在步骤294中把该CL设置成“修改过的”状态后,在步骤296向任何在定位好的该CL中具有存在设定位的L1超高速缓存发送对相应数据的刷新命令;这样做是为了从别的L1超高速缓存中消除该数据的任何拷贝,从而由请求的CL拥有该数据。接着,在步骤298,清除掉用于各L1超高速缓存的所有存在设定位以指示L1超高速缓存已被刷新。处理接着进入步骤286和288,以对该请求的L1超高速缓存设定存在位,并且从该L2超高速缓存CL向过渡超高速缓存回送数据以及该L2超高速缓存CL的共享的、修改过的或排它的状态。
若在步骤272中,在该L2超高速缓存中不存在用于被请求数据的CL,则处理进入步骤300,其中向该L2超高速缓存增添一个用于该新数据的CL,如后面参照图7D说明那样。之后,处理进入步骤286和288,以对该用于请求的L1超高速缓存的添加的CL设定存在位,并且从该添加的L2超高速缓存CL向过渡超高速缓存回送数据以及该添加的L2超高速缓存CL的共享的、修改过的或排它的状态。
现参照图7B,以解释响应从某L1超高速缓存接收拥有权请求由L2超高速缓存执行的操作。如前面所提及,当某L1超高速缓存接收写请求并在该L1超高速缓存中具有标记为“共享的”对应数据时,该L1超高速缓存发出对拥有权的请求。响应于拥有权请求,L2超高速缓存必须确保别的L1超高速缓存不具有该数据的拷贝,并且确保别的处理机复合体不具有该数据的拷贝,并在该L2超高速缓存中把该数据标记成“修改过的”。
从而,响应于拥有权请求,在第一步骤310中,L2超高速缓存在该L2超高速缓存中定位一个用于该拥有权请求中所标识的数据的CL。可以理解任一L1超高速缓存中的所有数据也都在L2超高速缓存中,从而由L2超高速缓存接收拥有权请求时,在该L2超高速缓存中应存在一个用于该数据的CL。
在确定一个L2超高速缓存CL后,在步骤312评估该定位好的CL以判定它是否标记成“共享的”。若该L2超高速缓存CL标记成“共享的”,则存在另一个具有同一数据的拷贝的处理机复合体。因此,若该L2超高速缓存CL标记成“共享的”,则在步骤314该L2超高速缓存向系统总线发送拥有权请求,以试图使别的处理机复合体放弃它们的对该数据的拷贝。可能接受或拒绝该请求。若该请求被拒绝(步骤316),例如因为另一个处理机复合体具有该数据的修改过的拷贝,则在步骤318L2超高速缓存将拒绝该来自L1超高速缓存的拥有权请求,并且完成对拥有权请求的处理。从上面对L1超高速缓存的行为的说明中可理解到,当拒绝某L1超高速缓存的拥有权请求时,该L1超高速缓存将重试该请求,直至被接受。从而,在拒绝某拥有权请求后,该L2超高速缓存在此之后很快接收重复的请求,并且重新开始图7B的处理。还可从前面的讨论中理解到,当另一个处理机复合体拒绝拥有权请求时,它开始向主存储器回写修改过的数据,以便在其重试时接受该拥有权请求。
从而,最终接受发送到系统总线的该拥有权请求(步骤320),在该情况下在步骤322接受来自L1超高速缓存的拥有权请求。此外,若步骤312中该L2 CL未标记成共享的,处理直接进入步骤322并且立即接受来自L1超高速缓存的请求。在接受拥有权请求后,在步骤324向除了请求拥有权的L1超高速缓存之外的所有在L2 CL中具有存在设定位的L1超高速缓存发送刷新命令。该步骤确保其它L1超高速缓存都不具有该数据的拷贝。接着在步骤326,清除所有L1超高速缓存的存在位,但请求拥有权的L1超高速缓存除外。最后,在步骤328,把该定位好的L2超高速缓存CL标记成“修改过的”,以表明在请求拥有权的L1超高速缓存中修改了和该CL相关的数据。
现参照图7C,以解释响应共享回写、老化回注、供选用的不再存在的回注以及刷新回写命令由L2超高速缓存执行的操作。当作为另一个处理机复合体试图读数据的结果某L1超高速缓存已把修改过的数据回写到主存储器或者L2超高速缓存时由L2超高速缓存接收共享回写命令(步骤330)。从而,当接收共享回写命令时,在步骤332确定对应的L2超高速缓存CL并设置成共享的,以反映另一个处理机复合体令检索该数据的拷贝。接着,在步骤334中,该L2超高速缓存从过渡超高速缓存接收用于该共享回写的修改过的数据并存储在该确定的L2超高速缓存CL中。
当某具有修改过的数据的L1超高速缓存老化该数据并把它回送给L2超高速缓存时该L2超高速缓存接收老化回注(步骤336)。从而,当接收老化回写命令时,在步骤338确定对应的L2超高速缓存CL,并且清除CL中发起该回注命令的L1超高速缓存的存在位,以反映在该L1超高速缓存中不再有用于该命令的该数据。接着在步骤334,把用于老化回注的修改过的数据回写到该确定的L2超高速缓存CL中。
当L1超高速缓存老化未修改过的数据时,L2超高速缓存接收供选用的不再存在的回注命令(步骤340)。从而,当接收不再存在的回注命令时,在步骤342,确定对应的L2超高速缓存CL并清除该CL中发起该命令的L1超高速缓存的存在位,以反映在该L1超高速缓存中不再有用于该命令的该数据。
当具有修改过的数据的L1超高速缓存已把该数据回送到主存储器时,L2超高速缓存接收刷新回写确认命令(步骤344)。这可出现在另一个处理机复合体试图写该数据时,或者L2超高速缓存已从该L2超高速缓存中老化掉相关的CL时。从而,当接收刷新回写确认命令时,该L2超高速缓存可能具有或者不具有一个用于相关数据的CL。从而,在第一步骤346,判定该L2超高速缓存中是否存在用于该相关的数据的一个CL。若没有,则不需要进一步的处理。但是,若在该L2超高速缓存中存在用于由该刷新回写确认标识的数据的一个CL,则在步骤348把该CL标识成“失效的”并把它移动到由该L2超高速缓存保持的CL条目队列中的最近最少使用位置上。
现参照图7D,以解释为对新数据向L2超高速缓存添加一个超高速缓存行(CL)由L2超高速缓存执行的操作。作为第一步骤350,选择一个供替换的该L2超高速缓存中的CL。这可能涉及到选择最近最少使用的CL,或者某些更为复杂的操作。接着在步骤352,评估选定的CL以判定它是否标记成“修改过的”。若是,则必须执行特定处理以把该修改过的数据移回到主存储器。从而,在步骤354,评估该选定的CL以判定在该CL中是否设定了存在位。若未设定,则该修改过的数据在该L2超高速缓存CL中并且在步骤356把该数据从该L2超高速缓存发送到主存储器中,并且在步骤358建立该CL以管理新数据,包括设置该CL的标签以标识新数据的地址。
若在步骤354,该选定的CL具有存在设定位,则由该存在设定位确定的该L1超高速缓存CL存储着修改过的数据。在该情况下,在步骤360L2超高速缓存CL向具有存在设定位的L1超高速缓存发送一个刷新回写命令,以使L1超高速缓存刷新该修改过的数据并把该数据回送到主存储器。如前面所讨论,该刷新回写命令是经过过渡超高速缓存发送的,从而过渡超高速缓存将管理数据的回送。接着处理进入步骤358以为接收新数据建立该选定的CL。
若在步骤352中,选定的CL未标记成“修改过的”,则必须从所有的L1 CL刷新该数据的所有拷贝。从而,该情况下在步骤362向所有具有存在设定位的L1超高速缓存发送对旧数据的刷新命令,从而使这些L1超高速缓存刷新数据。接着处理进入步骤358以为接收新数据建立该选定的CL。
在步骤358之后,得到用于存储到该选定的CL中的新数据。第一步骤是向系统总线发送读请求或带有修改意图的读请求以得到该新数据。若L2超高速缓存建立新的CL以响应来自过渡超高速缓存的读请求则发送读请求,若L2超高速缓存建立新的CL以响应来自过渡超高速缓存的带有修改意图的读请求则发送带有修改意图的读请求。
在向系统总线发出该请求后,根据系统总线以及主存储器的响应采取不同的行为。若数据是在读指令下请求的并且回送标记成“共享的数据”(步骤366),则在步骤368中把选定的L2超高速缓存标记成“共享的”以表示别的处理机复合体具有该数据的拷贝,并且接着在步骤370使该选定的L2超高速缓存CL成为最近最多使用的,从而完成对L2超高速缓存增添数据的处理。替代地,若该数据是在读命令下请求的并且回送标记成“排它的”数据(步骤372),接着在步骤374把该选定的L2超高速缓存L2标记成“排它的”以表示别的处理机复合体都不具有该数据的拷贝,并且接着在步骤370使该选定的L2超高速缓存CL成为最近最多使用的,从而完成对L2超高速缓存增添数据的处理。
若数据是在带有修改意图的读命令中请求的并且回送标记成“排它的”数据(步骤376),则在步骤378把该选定的L2超高速缓存CL标记成“修改过的”以表示在该处理机复合体中将修改该数据,并且接着在步骤370使该选定的L2超高速缓存CL成为最近最多使用的,从而完成对L2超高速缓存增添数据的处理。替代地,若响应该读请求从系统总线接收“重试”(步骤380),这表示另一个处理机复合体具有该数据的修改过的版本并且处于向主存储器回送该修改版本的过程中。在该情况下,必须重试该请求,从而处理返回步骤364以重试该请求。
现参照图7E,以解释响应从另一个处理机复合体接收拥有权请求由L2超高速缓存执行的操作。作为第一步骤390,该L2超高速缓存判定在该L2超高速缓存中是否有用于该被请求的数据的CL。若有,则必须评估该CL以确定如何处理该所有权请求。在该情况下,在步骤392,检查该CL以判定它是否标记成“修改过的”。若是,则在该处理机复合体中存在该数据的尚未回送到主存储器的修改过的拷贝。该问题接着变成该修改过的数据是否在该L2超高速缓存中或者是否必须从L1超高速缓存中的一个中刷新掉。从而,在步骤394,检查该L2超高速缓存CL中的存在位以判定它们是否都被清除。若是,则该L2超高速缓存具有该修改过的数据的最新版本,在步骤396把该选定的L2超高速缓存CL中的数据回送到主存储器,并在步骤398把该选定的L2超高速缓存CL标记成“无效的”并移到由该L2超高速缓存保持的CL队列中的最近最少使用的位置上。此刻,可在步骤400接受该拥有权请求,并且该另一个处理机复合体从主存储器读该修改过的数据。
若在步骤390,L2超高速缓存确定它不具有用于该确定的数据的CL,则L2超高速缓存立即转到步骤400并接受该拥有权请求。
若在步骤392,L2超高速缓存确定它具有用于该数据的CL,但该数据是未修改过的,则必须简单地从该处理机复合体刷新该数据,从而在步骤402该L2超高速缓存向所有具有存在设定位的L1超高速缓存发送对该数据的刷新命令,并且接着L2超高速缓存进入步骤398以把该CL标记成无效的而且然后在步骤400接收该拥有权请求。
若在步骤394,该L2超高速缓存判定存在着存在设定位,则该修改过的数据在某L1超高速缓存中,并且必须被刷新。在该情况下,在步骤404拒绝该拥有权请求以使该L1超高速缓存得到把该数据刷新回主存储器的时间。然后在步骤406,该L2超高速缓存向具有存在设定位的L1超高速缓存发送刷新回写命令,以使该L1超高速缓存把该数据刷新回主存储器。可理解该另一个处理机复合体会重复该拥有权请求,直至接收到表示该L1超高速缓存已经成功地把该数据回送到主存储器的刷新回写确认,这标示着该L2超高速缓存将具有用于该数据的CL条目并且将遵循相同的路径并拒绝该拥有权请求。一旦该L1超高速缓存成功地把数据回送到主存储器,该L2超高速缓存将使它的CL条目失效(见上面的图(7C),并且接着接受来自该另一个处理机复合体的下次拥有权请求。
现参照图7F,以解释当L2超高速缓存监听到来自另一个处理机复合体的读请求或带有修改意图的读请求时它所执行的操作。当该L2超高速缓存在系统总线上监测到读或带有修改意图的读请求时,该L2超高速缓存必须判定它是否具有该数据的修改过的版本并且必须通过“重试”命令阻止该访问,和/或必须判定该L2超高速缓存是否具有该数据的未修改的拷贝并且必须使该数据在标记成“共享的”下回送到该另一个处理机复合体。这些判定是在图7F中进行的。
作为第一步骤410,L2超高速缓存判定在它之中是否具有用于该被请求数据的一个CL。若没有,无需更多的动作。然而,若在该L2超高速缓存中存在用于该被请求数据的CL,则在步骤412评估该CL以判定它是否标记成“修改过的”。若是,则必须阻挡该来自另一个处理机复合体的请求,并且在步骤414向系统总线发送“重试”指示,以得到时间把该数据返回到主存储器。
一旦由于在该处理机复合体中存在修改过的数据而阻挡别的处理机的访问时,在步骤416,该L2超高速缓存通过评估CL中的存在位组以判定是否设定任何存在位组确定修改过的数据在何处。若设定(步骤418)根据访问类型采取不同的行为。若该访问是读访问(步骤420),则在步骤422向具有存在设定位的L1超高速缓存发送对该数据的共享回写命令,以使把该L1超高速缓存中的数据回写到主存储器和L2超高速缓存并且标记成“共享的”。在此发生之前,将借助“重试”通过上面说明的相同路径阻止读请求的任何重试。一旦该L1已把数据回写到主存储器和L2超高速缓存并且该L2超高速缓存CL已被标记成“共享的”(见图7C),则如后面所提及允许该访问。类似地,若该来自另一个处理机复合体的访问是带有修改意图的读访问(步骤424),则在步骤426向具有存在设定位的L1超高速缓存发送对该数据的刷新回写命令,以使该L1超高速缓存中的该数据被回写到主存储器并且接着使该L2超高速缓存CL失败。在此发生之前,通过上面说明的相同路径阻止该读请求的任何重试。
若在步骤416,L2超高速缓存判定不存在存在设定位,则该修改过的数据的最近版本在L2超高速缓存CL中。在该情况下,在步骤428从L2超高速缓存CL把该修改过的数据发送到主存储器,以在重试该读请求时可得到它。接着,根据访问类型(步骤430),采取不同的行为。若该访问是读访问(步骤432),则把该L2超高速缓存CL标记成“排它的”以表明该L2超高速缓存数据相对于主存储器未被修改过,而且此刻该L2超高速缓存具有该数据的唯一拷贝。相继地,当由该另一个处理机复合体重试访问时,将把该L2超高速缓存CL标记成“共享的”,如后面解释那样。若该访问是带有修改意图的读访问(步骤436),则应从该L2超高速缓存刷新该数据。从而,在该情况下在步骤438把该L2超高速缓存标记成“无效的”并成为最近最少使用的。
若在步骤412,L2超高速缓存确定用于受读请求或带有修改意图的读请求的数据的CL未标记成“修改过的”,接着根据请求类型采取不同的行为(步骤440)。若该请求为带有修改意图的读请求(步骤442),则应从该处理机复合体彻底清除该数据。从而,在步骤444向任何具有存在设定位的L1超高速缓存发送对该CL数据的刷新命令,并且处理立即进入把该L2超高速缓存CL标记成“失效的”和成为最近最少使用的步骤438。若该请求是读请求(步骤446),则应接受该访问但应在标记成“共享的”下回送该数据,而且该处理机复合体中的数据也应标记成“共享的”以反映该另一个处理机复合体具有该数据的拷贝。从而,在步骤448向系统总线发送“共享的”指示,这样别的处理机复合体会共享地接收该数据。接着,在步骤450,该定位好的L2超高速缓存CL标记成“共享的”以反映该另一个处理机复合体具有该数据的拷贝。
上述说明示范了所申请的本发明。在更阔的观点下本发明不受这些示出的和说明的具体细节、说明性的设备及方法以及示例的限制。从而,在不背离申请人的总发明概念的实质或范围下可偏离这些细节。
Claims (24)
1.一种用于由第一和第二处理机产生存储器存取的多处理机环境中的超高速缓存系统,该系统包括:
一个共享的较低层存储系统,
一个配置成和所述较低层存储系统以及所述第一处理机连接的第一超高速缓存,其从所述第一处理机接收存储器存取命令以确定要存储到所述较低层存储系统中的数据或者要从所述较低层存储系统装入的数据,所述第一超高速缓存响应于所述存储器存取命令从所述较低层存储系统装入数据和向所述较低层存储系统存储数据,
一个配置成和所述较低层存储系统以及所述第二处理机连接的第二超高速缓存,其从所述第二处理机接收存储器存取命令以确定要存储到所述较低层存储系统中的数据或者要从所述较低层存储系统装入的数据,所述第二超高速缓存响应所述存储器存取命令从所述较低层存储系统装入数据和向所述较低层存储系统存储数据,
一个超高速缓存存储控制电路,该存储控制电路管理从所述较低层存储系统向所述各超高速缓存装入数据以及从所述各超高速缓存向所述较低层存储系统存储数据,
其中,一旦从所述第一超高速缓存接收对已由所述第二处理机修改过的并以修改过的形式存储在所述第二超高速缓存中的数据的请求时,所述存储控制电路使所述第二超高速缓存在不把所述数据回送到所述共享的较低层存储系统的情况下把所述数据传送到所述第一超高速缓存,
从而改进由第一和第二处理机对相同数据的反复写的操作。
2.权利要求1的超高速缓存系统,其中所述共享的较低层存储系统包括一个较低层的超高速缓存和一个主存储,该较低层超高速缓存保持主存储中的数据的拷贝并且还保持第一或第二超高速缓存是否存储着数据的拷贝的指示以及这些拷贝是否被修改过的指示。
3.权利要求2的超高速缓存系统,其中
所述存储控制电路一旦接收到所述第一或第二超高速缓存对特定数据的请求,把该请求发送到较低层超高速缓存,以及
所述较低层超高速缓存通过判定所述第一或第二超高速缓存中的一个是否存储所述特定数据的修改过的拷贝来响应所述第一或第二超高速缓存对特定数据的请求,并且若是,所述较低层超高速缓存向所述存储控制电路回送一个指向具有所述特定数据的修改过的拷贝的第一或第二超高速缓存的指针,以及
所述存储控制电路一旦响应于所述第二超高速缓存对特定数据的请求而接收对所述第一超高速缓存的指针,使所述第一超高速缓存在不把所述数据写到所述较低层超高速缓存或所述主存储的情况下把所述特定数据发送到所述第二超高速缓存。
4.权利要求3的超高速缓存系统,其中所述较低层超高速缓存在一个队列中按从最近最少使用到最近最多使用保持数据,并且一旦回送指向具有特定数据的修改过的拷贝的超高速缓存的指针,即更新所述队列以把较低层超高速缓存中的该特定数据的拷贝标识成最近最多使用的。
5.权利要求2的超高速缓存系统,其中所述第一和第二超高速缓存保持第一或第二超高速缓存中存储的数据是否是共享的或修改过的指示,并且在对共享的数据重写之前所述第一和第二超高速缓存向所述较低层超高速缓存发送所有权请求。
6.权利要求5的超高速缓存系统,其中所述较低层超高速缓存保持一个表示所述较低层超高速缓存中所存储的数据是否是共享的、排它的或修改过的指示,若所述特定数据是共享的,则所述较低层超高速缓存在授予所述第一或第二超高速缓存对所述特定数据的所有权之前从连至所述主存储的系统总线上请求对所述特定数据的所有权。
7.权利要求6的超高速缓存系统,其中所述较低层超高速缓存在响应所述第一或第二超高速缓存对该数据的带有修改意图的读请求之前从连至所述主存储的系统总线请求对特定数据的所有权。
8.权利要求6的超高速缓存系统,其中作为响应对特定数据的带有修改意图的读请求而授予所述第一或第二超高速缓存对特定数据的所有权的一部分以及向第一或第二超高速缓存发送数据的一部分,所述较低层超高速缓存指令所有具有该特定数据的未修改拷贝的其它的超高速缓存来刷新该特定数据。
9.权利要求6的超高速缓存系统,其中一旦响应于对特定数据的带有修改意图的读请求,已向所述第一或第二超高速缓存授予对该特定数据的所有权的请求或者已向所述第一或第二超高速缓存发送所述特定数据,所述较低层超高速缓存把该特定数据标记成修改过的。
10.权利要求2的超高速缓存系统,其中所述较低层超高速缓存作为因老化或者因对另一个处理机复合体丢失对特定数据的所有权而去掉特定数据中的一部分,指令具有该特定数据的未修改拷贝的任何超高速缓存来刷新该特定数据的未修改拷贝。
11.权利要求2的超高速缓存系统,其中,作为因老化或者因对另一个处理机复合体丢失特定数据的所有权而去掉特定数据中的一部分,所述较低层超高速缓存指令具有该特定数据的修改拷贝的所述第一和第二超高速缓存中的任一个把该特定数据的修改过的拷贝写入到主存储,并且刷新该特定数据。
12.权利要求2的超高速缓存系统,其中所述较低层超高速缓存响应于来自另一个处理机复合体的读特定数据的请求,指令任何具有该特定数据的修改过的拷贝的超高速缓存把该特定数据的修改过的拷贝写到主存储和写到所述较低层超高速缓存。
13.一种用于管理一个超高速缓存系统的方法,所述超高速缓存系统包括分别连接在一个共享的较低层存储系统和第一、第二处理机之间的第一和第二超高速缓存,从所连接的处理机接收确定要存储到所述较低层存储系统中的或要从所述较低层存储系统装入的数据的存储器存取命令,该方法包括:
响应于所述存储器存取命令从所述较低层存储系统装入数据或把数据存储到所述较低层存储系统,以及
一旦从所述第一超高速缓存接收对已由所述第二处理机修改过的并以修改过的形式存储在所述第二超高速缓存中的数据的请求,使所述第二超高速缓存在不把所述数据回送到所述共享的较低层存储系统的情况下把所述数据传送到所述第一超高速缓存,
从而改进由第一和第二处理机对相同数据的反复写的操作。
14.权利要求13的方法,其中所述共享的较低层存储系统包括一个较低层的超高速缓存和一个主存储,所述方法还包括在所述较低层超高速缓存中保持主存储中的数据的拷贝,并且还保持第一或第二超高速缓存是否存储着数据的拷贝的指示以及这些拷贝是否被修改过的指示。
15.权利要求14的方法,其中
一旦接收来自所述第一或第二超高速缓存的对特定数据的请求,通过在所述较低层超高速缓存中判定所述第一或第二超高速缓存是否存储所述特定数据的修改过的拷贝而对所述请求作出响应。
16.权利要求15的方法,其中所述较低层超高速缓存在一个队列中按从最近最少使用到最近最多使用保持数据,并且一旦确定所述第一或第二超高速缓存中的一个存储特定数据的修改过的拷贝,即更新所述队列以把较低层超高速缓存中的该特定数据的拷贝标识成最近最多使用的。
17.权利要求14的方法,其中所述第一和第二超高速缓存保持第一或第二超高速缓存中存储的数据是否是共享的或修改过的指示,所述方法还包括对共享的数据重写之前向所述较低层超高速缓存发送所有权请求的步骤。
18.权利要求17的方法,其中所述较低层超高缓存保持一个表示所述较低层超高速缓存中所存储的数据是否是共享的、排它的或修改过的指示,所述方法还包括,若所述特定数据是共享的,在授予所述第一或第二超高速缓存对特定数据的所有权之前,从连至所述主存储的系统总线请求对特定数据的所有权。
19.权利要求18的方法,还包括在响应于来自所述第一或第二超高速缓存的带有修改意图的读请求之前从连至所述主存储的系统总线请求对特定数据的所有权。
20.权利要求18的方法,还包括,作为响应于对特定数据的带有修改意图的读请求授予所述第一或第二超高速缓存对特定数据的所有权的一部分以及向第一或第二超高速缓存发送数据的一部分,指令具有该特定数据的未修改拷贝的所有其它超高速缓存来刷新特定数据。
21.权利要求18的方法,还包括,一旦响应于对特定数据的带有修改意图的读请求而已向所述第一或第二超高速缓存授予了对该特定数据的所有权或者已向所述第一或第二超高速缓存发送了所述特定数据,把所述较低层超高速缓存中的特定数据标记成修改过的。
22.权利要求14的方法,还包括,作为因老化或者因对另一个处理机复合体丢失特定数据的所有权而从所述较低层超高速缓存去掉特定数据中的一部分,指令任何具有该特定数据的未修改拷贝的超高速缓存刷新该特定数据的未修改拷贝。
23.权利要求14的方法,还包括,作为因老化或者因对另一个处理机复合体丢失特定数据的所有权而从所述较低层超高速缓存去掉特定数据中的一部分,指令任何具有该特定数据的修改过的拷贝的超高速缓存把该特定数据的修改过的拷贝写到主存储,并且刷新该特定的数据。
24.权利要求14的方法,还包括,响应于来自另一个处理机复合体的读特定数据的请求,指令任何具有该特定数据的修改过的拷贝的超高速缓存把该特定数据的修改过的拷贝写到主存储和写到所述较低层超高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259,950 | 1999-03-01 | ||
US09/259,950 US6314491B1 (en) | 1999-03-01 | 1999-03-01 | Peer-to-peer cache moves in a multiprocessor data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1267023A CN1267023A (zh) | 2000-09-20 |
CN1142503C true CN1142503C (zh) | 2004-03-17 |
Family
ID=22987147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001016938A Expired - Fee Related CN1142503C (zh) | 1999-03-01 | 2000-01-27 | 多处理机数据处理系统中同级到同级的超高速缓存移动 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6314491B1 (zh) |
JP (1) | JP3533355B2 (zh) |
KR (1) | KR100318789B1 (zh) |
CN (1) | CN1142503C (zh) |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162699B1 (en) | 1999-04-02 | 2007-01-09 | Massachusetts Institute Of Technology | Mechanisms and artifacts to manage heterogeneous platform interfaces in a collaboration system |
US6408348B1 (en) * | 1999-08-20 | 2002-06-18 | International Business Machines Corporation | System, method, and program for managing I/O requests to a storage device |
US6374332B1 (en) * | 1999-09-30 | 2002-04-16 | Unisys Corporation | Cache control system for performing multiple outstanding ownership requests |
US6629268B1 (en) * | 2000-01-25 | 2003-09-30 | International Business Machines Corporation | Method and apparatus for servicing a processing system through a test port |
US6751705B1 (en) * | 2000-08-25 | 2004-06-15 | Silicon Graphics, Inc. | Cache line converter |
US6681293B1 (en) * | 2000-08-25 | 2004-01-20 | Silicon Graphics, Inc. | Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries |
US6857049B1 (en) * | 2000-08-30 | 2005-02-15 | Unisys Corporation | Method for managing flushes with the cache |
US6631449B1 (en) | 2000-10-05 | 2003-10-07 | Veritas Operating Corporation | Dynamic distributed data system and method |
US7725748B1 (en) | 2000-12-29 | 2010-05-25 | Intel Corporation | Low power subsystem for portable computers |
US7188145B2 (en) | 2001-01-12 | 2007-03-06 | Epicrealm Licensing Llc | Method and system for dynamic distributed data caching |
US7219122B1 (en) | 2001-04-23 | 2007-05-15 | Massachusetts Institute Of Technology | Software service handoff mechanism with a performance reliability improvement mechanism (PRIM) for a collaborative client-server system |
JP3661614B2 (ja) | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
JPWO2003048955A1 (ja) * | 2001-12-03 | 2005-08-11 | 株式会社日立製作所 | マルチプロセッサシステム |
US7058829B2 (en) * | 2002-08-14 | 2006-06-06 | Intel Corporation | Method and apparatus for a computing system having an active sleep mode CPU that uses the cache of a normal active mode CPU |
US6965962B2 (en) * | 2002-12-17 | 2005-11-15 | Intel Corporation | Method and system to overlap pointer load cache misses |
US7327741B1 (en) | 2002-12-20 | 2008-02-05 | Symantec Operating Corporation | Detecting and breaking cycles in a computer network |
US7406535B2 (en) * | 2002-12-20 | 2008-07-29 | Symantec Operating Corporation | Role-based message addressing for a computer network |
US7653059B1 (en) | 2002-12-20 | 2010-01-26 | Symantec Operating Corporation | Communication sessions for a computer network |
US7404006B1 (en) | 2002-12-20 | 2008-07-22 | Symantec Operating Corporation | Publishing a network address in a computer network |
US7467194B1 (en) | 2002-12-20 | 2008-12-16 | Symantec Operating Corporation | Re-mapping a location-independent address in a computer network |
US7292585B1 (en) | 2002-12-20 | 2007-11-06 | Symantec Operating Corporation | System and method for storing and utilizing routing information in a computer network |
US8275864B1 (en) | 2002-12-20 | 2012-09-25 | Symantec Operating Corporation | Peer-to-peer network with recovery capability |
US8370523B1 (en) | 2002-12-20 | 2013-02-05 | Symantec Operating Corporation | Managing routing information for a computer network |
US8886705B1 (en) | 2003-06-30 | 2014-11-11 | Symantec Operating Corporation | Goal-oriented storage management for a distributed data storage network |
JP2005115603A (ja) * | 2003-10-07 | 2005-04-28 | Hitachi Ltd | 記憶デバイス制御装置及びその制御方法 |
US8060619B1 (en) | 2003-11-07 | 2011-11-15 | Symantec Operating Corporation | Direct connections to a plurality of storage object replicas in a computer network |
US7555527B1 (en) | 2003-11-07 | 2009-06-30 | Symantec Operating Corporation | Efficiently linking storage object replicas in a computer network |
US7680950B1 (en) | 2003-11-07 | 2010-03-16 | Symantec Operating Corporation | Efficient search for storage objects in a network |
US7570600B1 (en) | 2003-12-17 | 2009-08-04 | Symantec Operating Corporation | Overlay network with efficient routing and recovery |
US9727468B2 (en) | 2004-09-09 | 2017-08-08 | Intel Corporation | Resolving multi-core shared cache access conflicts |
US7689778B2 (en) * | 2004-11-30 | 2010-03-30 | Intel Corporation | Preventing system snoop and cross-snoop conflicts |
US7386687B2 (en) * | 2005-01-07 | 2008-06-10 | Sony Computer Entertainment Inc. | Methods and apparatus for managing a shared memory in a multi-processor system |
US7444473B1 (en) | 2005-06-17 | 2008-10-28 | Sun Microsystems, Inc. | Speculative memory accesses in a proximity communication-based off-chip cache memory architecture |
US7562190B1 (en) * | 2005-06-17 | 2009-07-14 | Sun Microsystems, Inc. | Cache protocol enhancements in a proximity communication-based off-chip cache memory architecture |
US7496712B1 (en) | 2005-06-17 | 2009-02-24 | Sun Microsystems, Inc. | Proximity communication-based off-chip cache memory architectures |
US7941604B2 (en) * | 2006-02-01 | 2011-05-10 | Infineon Technologies Ag | Distributed memory usage for a system having multiple integrated circuits each including processors |
JP2007265271A (ja) | 2006-03-29 | 2007-10-11 | Nec Corp | ストレージ装置、データ配置方法およびプログラム |
US10741034B2 (en) | 2006-05-19 | 2020-08-11 | Apdn (B.V.I.) Inc. | Security system and method of marking an inventory item and/or person in the vicinity |
US20070274230A1 (en) * | 2006-05-23 | 2007-11-29 | Werber Ryan A | System and method for modifying router firmware |
JP2008118184A (ja) * | 2006-10-31 | 2008-05-22 | Fujitsu Ltd | 処理装置及び処理モジュール |
US20080104333A1 (en) * | 2006-10-31 | 2008-05-01 | Veazey Judson E | Tracking of higher-level cache contents in a lower-level cache |
ITMI20070787A1 (it) | 2007-04-17 | 2008-10-18 | St Microelectronics Srl | Memoria non volatile |
CN101546282B (zh) * | 2008-03-28 | 2011-05-18 | 国际商业机器公司 | 用于在处理器中执行写拷贝的方法和设备 |
US20100057984A1 (en) * | 2008-08-26 | 2010-03-04 | Seagate Technology Llc | Memory hierarchy containing only non-volatile cache |
TW201015321A (en) * | 2008-09-25 | 2010-04-16 | Panasonic Corp | Buffer memory device, memory system and data trnsfer method |
US10621092B2 (en) * | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US8380931B2 (en) * | 2010-03-12 | 2013-02-19 | Microsoft Corporation | Memory cache data center |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
CN103348333B (zh) * | 2011-12-23 | 2017-03-29 | 英特尔公司 | 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置 |
CN106103121B (zh) | 2014-03-18 | 2019-12-06 | 亚普蒂恩(B.V.I.)公司 | 用于安全应用的加密光学标记物 |
JP6055456B2 (ja) * | 2014-10-31 | 2016-12-27 | インテル・コーポレーション | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 |
KR101629411B1 (ko) | 2015-02-03 | 2016-06-10 | 한국전자통신연구원 | 레벨0 캐시 제어 장치 및 방법 |
KR20170109133A (ko) * | 2016-03-17 | 2017-09-28 | 에스케이하이닉스 주식회사 | 하이브리드 메모리 장치 및 그의 데이터 관리 방법 |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
CN110710172A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络 |
US10565112B2 (en) | 2017-04-10 | 2020-02-18 | Fungible, Inc. | Relay consistent memory management in a multiple processor system |
CN110892380B (zh) | 2017-07-10 | 2023-08-11 | 芬基波尔有限责任公司 | 用于流处理的数据处理单元 |
CN110915172A (zh) | 2017-07-10 | 2020-03-24 | 芬基波尔有限责任公司 | 针对数据中心的接入节点 |
US10965586B2 (en) | 2017-09-29 | 2021-03-30 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
WO2019068013A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS |
US10769068B2 (en) * | 2017-11-10 | 2020-09-08 | International Business Machines Corporation | Concurrent modification of shared cache line by multiple processors |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
WO2019152063A1 (en) * | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0389151A3 (en) | 1989-03-22 | 1992-06-03 | International Business Machines Corporation | System and method for partitioned cache memory management |
US5307477A (en) | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5649154A (en) | 1992-02-27 | 1997-07-15 | Hewlett-Packard Company | Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits |
US5394555A (en) | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
US5590310A (en) | 1993-01-14 | 1996-12-31 | Integrated Device Technology, Inc. | Method and structure for data integrity in a multiple level cache system |
JP2541771B2 (ja) | 1993-01-29 | 1996-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 原子的メモリ参照方法及びシステム |
US5522069A (en) * | 1993-04-30 | 1996-05-28 | Zenith Data Systems Corporation | Symmetric multiprocessing system with unified environment and distributed system functions |
US5535116A (en) | 1993-05-18 | 1996-07-09 | Stanford University | Flat cache-only multi-processor architectures |
US5604882A (en) | 1993-08-27 | 1997-02-18 | International Business Machines Corporation | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system |
US5510934A (en) | 1993-12-15 | 1996-04-23 | Silicon Graphics, Inc. | Memory system including local and global caches for storing floating point and integer data |
US5671391A (en) | 1994-01-10 | 1997-09-23 | Ncr Corporation | Coherent copyback protocol for multi-level cache memory systems |
US5680572A (en) | 1994-02-28 | 1997-10-21 | Intel Corporation | Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers |
US5644752A (en) | 1994-06-29 | 1997-07-01 | Exponential Technology, Inc. | Combined store queue for a master-slave cache system |
US5666514A (en) | 1994-07-01 | 1997-09-09 | Board Of Trustees Of The Leland Stanford Junior University | Cache memory containing extra status bits to indicate memory regions where logging of data should occur |
US5617557A (en) | 1994-11-14 | 1997-04-01 | Compaq Computer Corporation | Using an address pin as a snoop invalidate signal during snoop cycles |
US5584013A (en) | 1994-12-09 | 1996-12-10 | International Business Machines Corporation | Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache |
US5651137A (en) | 1995-04-12 | 1997-07-22 | Intel Corporation | Scalable cache attributes for an input/output bus |
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 |
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 |
US5815648A (en) * | 1995-11-14 | 1998-09-29 | Eccs, Inc. | Apparatus and method for changing the cache mode dynamically in a storage array system |
JP3269967B2 (ja) * | 1996-04-24 | 2002-04-02 | 株式会社日立製作所 | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム |
JP3139392B2 (ja) * | 1996-10-11 | 2001-02-26 | 日本電気株式会社 | 並列処理システム |
US6128677A (en) * | 1997-10-15 | 2000-10-03 | Intel Corporation | System and method for improved transfer of data between multiple processors and I/O bridges |
-
1999
- 1999-03-01 US US09/259,950 patent/US6314491B1/en not_active Expired - Fee Related
-
2000
- 2000-01-27 CN CNB001016938A patent/CN1142503C/zh not_active Expired - Fee Related
- 2000-02-23 JP JP2000046247A patent/JP3533355B2/ja not_active Expired - Fee Related
- 2000-02-29 KR KR1020000010110A patent/KR100318789B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JP2000250812A (ja) | 2000-09-14 |
CN1267023A (zh) | 2000-09-20 |
JP3533355B2 (ja) | 2004-05-31 |
US6314491B1 (en) | 2001-11-06 |
KR100318789B1 (ko) | 2001-12-29 |
KR20000076752A (ko) | 2000-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1142503C (zh) | 多处理机数据处理系统中同级到同级的超高速缓存移动 | |
CN1133933C (zh) | 混合numa/s-coma系统及方法 | |
CN1240000C (zh) | 用于改进超高速缓存性能的输入/输出页面删除确定 | |
CN1248118C (zh) | 以推测方式使高速缓存中的缓存行失效的方法及系统 | |
CN103246614B (zh) | 多处理器数据处理系统、高速缓存存储器及其方法 | |
KR101497516B1 (ko) | 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화 | |
CN1126046C (zh) | 包括多层次分级存储器体系的数据处理系统的高速缓存相关性协议 | |
US7627720B2 (en) | System and method for directional prefetching | |
US5369753A (en) | Method and apparatus for achieving multilevel inclusion in multilevel cache hierarchies | |
TWI410796B (zh) | 來自窺探過濾器之過期無效異動的減少 | |
CN104106061B (zh) | 多处理器数据处理系统以及其中的方法、高速缓存存储器和处理单元 | |
CN87105300A (zh) | 高速缓冲存储器的目录和控制装置 | |
CN1873628A (zh) | 数据处理系统和方法 | |
CN1685319A (zh) | 具有集成目录与处理器高速缓存的计算机系统 | |
CN101042680A (zh) | 更新无效一致状态的方法、数据处理系统和高速缓存系统 | |
CN1236136A (zh) | 高速远程存储簇接口控制器 | |
CN101055544A (zh) | 支持分级存储设置中多个一次性表访问操作的方法和装置 | |
CN104145252A (zh) | 两级高速缓存系统中的自适应高速缓存提升 | |
CN101038532A (zh) | 数据存储装置及其方法 | |
CN100338587C (zh) | 用于控制存储器系统的方法和设备 | |
CN101162442A (zh) | 支持共享全局一致性状态的处理器、数据处理系统和方法 | |
CN1690986A (zh) | 一种有效率的两跳缓存一致性协议 | |
CN101042678A (zh) | 数据处理的单元、系统和方法 | |
CN101055545A (zh) | 数据处理系统中初始化存储块的方法、处理器、数据处理系统 | |
JP2009524137A (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 | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |