CN1215416C - 多处理器计算机系统中的读取操作 - Google Patents
多处理器计算机系统中的读取操作 Download PDFInfo
- Publication number
- CN1215416C CN1215416C CNB988041480A CN98804148A CN1215416C CN 1215416 C CN1215416 C CN 1215416C CN B988041480 A CNB988041480 A CN B988041480A CN 98804148 A CN98804148 A CN 98804148A CN 1215416 C CN1215416 C CN 1215416C
- Authority
- CN
- China
- Prior art keywords
- cache
- value
- response
- designates
- speed cache
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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)
- Multi Processors (AREA)
Abstract
公开了一种改进与多处理器计算机系统中的读取操作有关的存储器等待时间的方法。在从系统存储器把值(数据或指令)载入至少两个高速缓存之后,把这些高速缓存标记为含有该值的共享、未修改副本的高速缓存,当请求处理单元发布指示它想要读取该值的消息时,这些高速缓存中的指定高速缓存传送指示该指定高速缓存可提供该值的响应。传送该响应,以响应从与该请求处理单元相连的互连窥探消息的高速缓存。该响应由系统逻辑电路检测,并从系统逻辑电路转发给请求处理单元。随后该高速缓存提供该值至与请求处理单元相连的互连。系统存储器检测该消息,并且通常会提供该值,但是该响应通知存储设备,该值将由该高速缓存提供。由于高速缓存等待时间可远小于存储器等待时间,因此利用这种新协议可显著改善读取性能。
Description
技术领域
本发明涉及计算机系统,更具体地说,涉及一种在对称的多处理器计算机系统中执行存储器读取操作的方法。
背景技术
图1中表示了常规的多处理器计算机系统10的基本结构。计算机系统10具有与各种外部设备相连的几个处理单元,图中表示了其中的两个处理单元12a、12b,外部设备包括输入/输出(I/O)设备14(例如显示器,键盘,图形指示器(鼠标),及永久性存储设备(硬盘)),由处理单元使用以执行程序指令的存储设备16(例如随机存取存储器,即RAM),及固件18,固件18的主要用途是每次打开计算机时,从外围设备之一(通常是永久性存储设备)找出并加载操作系统。处理单元12a及12b通过各种装置(包括通用互连或总线20,或者直接存储器访问通道(图中未表示))与外围设备通信。计算机系统10可具有许多图中未表示出的附加组件,例如用于连接,例如调制解调器或打印机的串行端口和并行端口。本领域的技术人员将认识到还存在可和图1的方框图中所示的那些组件一起使用的其它组件;例如,显示适配器可用于控制视频显示器,存储控制器可用于访问存储器16等等。计算机还可具有两个以上的处理单元。
在对称性多处理器(SMP)计算机中,所有处理单元一般都是相同的;即,所有处理单元都使用同样的指令集或者指令子集和协议进行操作,并且通常具有相同的体系结构。图1中表示了一种典型的体系结构。处理单元包括处理器核心22,处理器核心22具有多个寄存器及执行单元,执行单元执行程序指令以操作计算机。一个例证的处理 单元包括IBM公司销售的PowerPCTM处理器。处理单元还可包括一个或多个高速缓存,例如指令高速缓存24及数据高速缓存26,它们由高速存储器实现。高速缓存一般用于暂时存储处理器可能会反复访问的值,以便通过消除从存储器16加载这些值的时间较长的步骤来加速处理。当这些高速缓存与处理器核心一起整体封装在单个集成芯片上时,被称作“单板”。每个高速缓存与一个高速缓存控制器(图中未表示出)相联系,高速缓存控制器管理处理器核心和高速缓存之间数据及指令的传送。
处理单元可包括附加的高速缓存,例如高速缓存30,由于它支持单板(一级)高速缓存24和26,因此被称为二级(L2)高速缓存。换句话说,高速缓存30起存储器16与单板高速缓存之间的中介物的作用,和单板高速缓存相比,能存储更大量的信息(指令及数据),但是时间较长。例如,高速缓存30可以是存储容量为256或512Kbyte的芯片,而处理器可以是具有总存储容量为64Kbyte的单板高速缓存的IBM PowerPCTM 604系列处理器。高速缓存30与总线20相连,从存储器16进入处理器核芯22的所有信息的加载必须经过高速缓存30。虽然图1只描述了两级高速缓存体系,不过也可提供具有多级(L3、L4等)串联连接的高速缓存的多级高速缓存体系。
在SMP计算机中,重要的是提供相干存储器系统,即,使对各个单独存储单元的写入操作按照一定的顺序串行进行。在高速缓存相干系统中,所有处理器将遵守对指定存储单元的写入操作将按照指示的顺序进行。存在多种用于实现高速缓存相干的协议和技术,这些协议和技术本领域技术人员已知。所有这些维持相干的机制的核心是要求协议在任意指定时间,只允许一个处理器具有对指定存储单元(高速缓存块)进行写入操作的“权限”。这种要求的结果是,无论何时处理单元试图对存储单元进行写操作,它必须首先把它对该存储单元进行写操作的要求通知所有其它处理单元,并从所有其它处理单元接收执行该写操作的许可。在进行写操作之前,起始处理器必须把该写操作通知系统中的所有其它处理器。此外,如果块存在于指定处理单元的L1高速缓存中,则它还存在于该处理单元的L2及L3高速缓存中。这一特性被称为包含(inclusion),并为本领域技术人员众所周知。
为了在系统中实现高速缓存相干,处理器在共用通用互连(即总线20)上通信。处理器通过该互连传送指示它们对存储单元进行读或写操作要求的消息。当把一个操作放在该互连上时,所有其它处理器“窥探”(监视)该操作,并确定它们的高速缓存状态是否允许该请求操作继续进行下去,如果允许,在什么条件下允许。存在几种总线事务,这些总线事务需要窥探及跟踪动作,以兑现总线事务,并维持存储器相干。窥探响应由系统逻辑电路收集并分析,系统逻辑电路一般存在于系统控制指示器32中。通过接收合格的窥探请求触发窥探操作,窥探请求由某些总线信号的确证(assertion)所产生。这一通信是必需的,因为在具有高速缓存的系统中,指定存储器块的最新有效副本可能已从系统存储器16中移到系统的一个或多个高速缓存中。如果处理器(例如12a)试图访问不存在于其高速缓存体系中的存储单元,则含有该存储单元的实际(当前)值的存储器块的正确版本可能在系统存储器16中,或者在另一处理单元,例如处理单元12b的一个或多个高速缓存中。如果该正确版本在系统的一个或多个其它高速缓存中,则必须从系统的这些高速缓存中,而不是从系统存储器中获得该正确值。
例如,考虑一个处理器,例如12a试图读取存储器中的一个单元的情况。处理器12a首先轮询其自身的L1高速缓存(24或26)。如果存储块不在L1高速缓存中,则把请求转给L2高速缓存(30)。如果存储器块不在L2高速缓存中,则把请求转给更低级的高速缓存,例如L3高速缓存。如果该存储器块不在更低级的高速缓存中,则把请求放在通用互连上以便对其进行服务。一旦把一个操作放在通用互连上,所有其它低级高速缓存窥探该操作,并确定该存储器块是否存在于它们的高速缓存中。如果指定处理单元在其L1高速缓存中具有起始处理单元请求的存储器块,并且存储器块中的值被修改,则根据包含原则,L2高速缓存及任意低级高速缓存也具有该块的副本(不过由于处理器的高速缓存中的副本已被修改,它们的副本可能是陈旧的)。于是,当处理单元的最低级高速缓存(例如L3)窥探该读取操作时,它将确定所请求的块存在于更高级的高速缓存中并被修改。当发生这种情况时,L3高速缓存在通用互连上放置一个消息,通知处理单元它必须在稍后再次“重试”其操作,因为存储单元的实际值位于存储器体系最顶层的L1高速缓存中,并且必须再次取出该存储单元的实际值,以使得该实际值能够服务起始处理单元的读取请求。
一旦来自起始处理单元的请求被重试,则L3高速缓存开始从L1高速缓存取出修改值的过程,并根据取出过程实现的具体细节,使修改值在L3高速缓存或主存储器可用,或者在两者都可用,该过程实现和本发明并不特别相关。为了从较高级的高速缓存取出该块,L3高速缓存通过高速缓存间的连接向较高级的高速缓存发送请求取出该块的消息。这些消息在处理单元体系中向上传播,直到达到L1高速缓存,并使该块在体系内向下移动到最低一级(L3或者主存储器),以便能够服务来自起始处理单元的请求。
起始处理单元最后在通用互连上重试该读取请求。不过此时,已从一个处理单元的L1高速缓存中取出该修改值,来自起始处理器的读取请求将被满足。上面描述的情况通常被称为“窥探推送(snooppush)”。在通用互连上窥探一个读取请求,使处理单元把高速缓存块推送到高速缓存体系的底部,以满足起始处理单元的读取请求。
当处理器想要读或写高速缓存块时,它必须把该请求通知系统中的其它处理单元,以便维持高速缓存相干。要实现这一点,高速缓存相干协议把高速缓存体系各级中的每个高速缓存块和指示该高速缓存块的当前“状态”的状态指示符联系起来。状态信息用于许可相干协议中的某些优化,减少通用互连及高速缓存之间的连接上的消息通信量。作为这种机制的一个例子,当处理单元执行一个读取操作时,它接收指示是否必须在稍后重复该读取操作的消息。如果该读取操作不被重复,则该消息一般还包括使处理单元能够确定是否任意其它处理单元也具有该高速缓存块的仍然有效副本(这是通过使其它最低级高速缓存对它们不重试的任何读取操作给出“共享”或“不共享”指示实现的)的信息。于是,处理单元能够确定系统中的任意其它处理器是否具有该高速缓存块的副本。如果其它处理单元不具有该高速缓存块的有效副本,则读取处理单元把该块的状态标记为“排他”。如果一个块被标记为排他,则允许处理单元稍后对该块进行写操作,而不必首先通知系统中的其它处理单元,因为其它处理单元不具有该块的副本。于是,只要相干协议已确保其它处理器不打算对该块进行读或写操作,则处理器能够对该高速缓存块进行读或写操作,而不必首先在互连上传送该操作意图。
上述高速缓存相干技术以如图2中所示的一种被称为“MESI”的特殊协议实现。在该协议中,高速缓存块可以是四种状态中的一种状态:“M”(修改),“E”(排他),“S”(共享)或者“I”(无效)。在MESI协议下,每个高速缓存表目(entry)(例如32字节扇区)具有指示该表目状态的两个附加位,该状态为四种可能状态中的一种。根据表目的初始状态及请求处理器所寻找的访问的类型,状态可能被改变,并为请求处理器的高速缓存中的该表目设置一个特殊的状态。例如,当扇区处于修改状态时,被访扇区只在具有该修改扇区的高速缓存中有效,并且修改值还未被写回系统存储器中。当扇区处于排他状态时,它只存在于指出的扇区中,并且和系统存储器一致。如果扇区处于共享状态,则该扇区在那个高速缓存及至少另一高速缓存中有效,所有共享扇区都与系统存储器一致。最后,当扇区处于无效状态时,表示被访扇区不存在于该高速缓存中。如图2中所示,如果扇区处于修改、共享或者无效状态中的任一种状态,则根据特定的总线事务,它可在这些状态之间移动。虽然处于排他状态的扇区可改变为任意其它状态,但是开始处于无效状态的扇区只能改变为排他状态。
利用前面提及的高速缓存相干协议可进一步改进对高速缓存块的访问。这种改进,称为“干预”允许控制修改的存储器块的高速缓存把该存储器块中的数据或指令直接提供给请求该值的另一高速缓存(对于读操作),换句话说,不必把数据或指令写入系统存储器,随后再由请求处理器从系统存储器中读取写入的数据或指令。干预可只由具有状态被修改的块中的值的高速缓存进行。这种情况下,只有一个高速缓存块具有该值的有效副本,因此在总线20上提供(source)该值是一件简单的事情,而不必首先把该值写入系统存储器中。这样由于避免了把该值写入系统及从系统中读取该值的较长过程(它实际上涉及三个总线操作及二个存储器操作),干预方法加快了数据处理。这种方法不仅减少了执行时间,而且增大了可用的总线带宽。
当数据或指令以未修改(即共享或排他)状态被保存时,现有的协议不提供干预。一种途径是把共享高速缓存块看作处于修改状态进行处理,这将使该值可被含有该值的高速缓存提供,但是随后该值还是会被写入系统存储器中,这是不必要的,并且会导致进一步的延迟。于是最好提出一种维持高速缓存相干的方法,该方法能够实现未修改数据或指令的有效干预。如果能够不考虑未修改状态的特定类型(即共享、排他或任意其它未修改状态),以一种简化值的干预的方式实现该方法将更为有利。
发明内容
于是本发明的目的是提供一种在多处理器计算机系统中执行读取型操作的改进方法,当可在另一处理器的高速缓存中找到处于未修改状态的目标值时,该方法能够改进干预响应。
根据本发明的第一方面,提供了一种改进与多处理器计算机系统中的请求处理单元发出的读取型操作相关的存储器等待时间(memorylatency)的方法,该计算机系统包括多个处理单元,每个处理单元具有一个相关高速缓存,该方法包括下述步骤:把值从存储设备的一个地址载入至少第一及第二高速缓存中;把第一及第二高速缓存标记为含有该值的共享、未修改副本;从请求处理单元发布指示该请求处理单元希望从存储设备的地址中读取该值的消息;并从第一及第二高速缓存中的指定高速缓存传送指示该指定高速缓存可提供该值的响应。
根据本发明的第二方面,提供了一种改进与多处理器计算机系统中的请求处理单元发出的读取型操作相关的存储器等待时间的方法,该计算机系统包括多个处理单元,每个处理单元具有一个相关高速缓存,该方法包括下述步骤:把值从存储设备的一个地址载入多个高速缓存中;识别多个高速缓存中的指定高速缓存,该指定高速缓存含有该值的最新读取的未修改副本;把该指定高速缓存标记为含有该值的最新读取的未修改副本;除该指定高速缓存外,把其它多个高速缓存标记为含有该值的共享的未修改副本;从请求处理单元发布指示该请求处理单元希望从存储设备的地址中读取该值的消息;并从指定高速缓存传送指示该指定高速缓存可提供该值的响应。
附图说明
下面将参考附图来描述本发明的一个例证实施例,其中:
图1是现有技术的多处理器计算机系统的方框图;
图2是描述现有技术的高速缓存相干协议(MESI)的状态图;
图3是描述可用于实现本发明的新颖的高速缓存相干协议的状态图。
具体实施方式
本发明目的在于一种在多处理器系统,例如图1的系统中执行读取型指令的方法,不过本发明也可应用于非常规计算机系统,即这些计算机系统可包括图1中未表示的硬件组成部分,或者对于现有的组成部分具有新颖的互连结构。于是,本领域的技术人员将认识到本发明并不限于图中所示的一般化系统。
本发明中,建立了一种协议,以从与多处理器计算机系统中的其它处理器相关的所有高速缓存的窥探器(snooper)向请求读取操作的处理器传递相干响应。根据表1简明陈述了各种相干响应。
表1
地址响应 | 优先级 | 定义 |
000 | - | 保留 |
001 | 3(1) | 共享干预 |
010 | 6 | 远程状态 |
011 | 4 | 再运行 |
100 | 1(2) | 重试 |
101 | 2(3) | 修改干预 |
110 | 5 | 共享 |
111 | 7 | 零或清除 |
信号采取3位窥探响应的形式,其值(地址响应)及定义陈述于表1中。这些信号被编码,以指示地址使用期(address tenure)之后的窥探结果。表1表示了类似于现有技术使用的共享线、修改线及清除(无效线)的响应,及重试响应。表1还表示了三种新的响应,“共享干预”、“远程状态”及“再运行”。远程状态响应只用于读取操作,用于指示该读取操作将获得成功,共享或排他的相干响应将在稍后和使用另一信号的数据一起被返回。当相干响应不能被立即确定,并且该请求必须在高速缓存体系中向下发送时,使用再运行响应。再运行响应与重试响应的区别在于必须重发以前的消息,并且该消息必须具有相同的标识符,以便它能够与以前发送的消息相匹配。
共享干预响应允许高速缓存当其具有还未被修改的数据或指令副本时,提供一个值,因此不同于现有技术的修改干预响应。这样共享干预响应可和任何指示未修改值的状态(包括共享状态和排他状态),以及下面介绍的一种新状态(表示最近读取的“R”状态)一起使用。共享干预响应告诉请求处理器在总线(通用互连)上查找读取应答数据或指令,读取应答数据或指令用其请求识别符及一个信号标记,该信号表示应答数据或指令是来自高速缓存,而不是来自存储器的值。术语“总线”表示广义总线,可能存在几种总线,例如用于应答请求及响应消息的窥探总线,及与一个交叉点相连的一个或多个其它数值总线。
应答在单独的数据标志总线上由一个8位值标记,数据标志总线一个周期一个周期地跟踪数据总线。数据标志总线上的值指示数据总线上的数据属于具有地址总线上发送的相同值的消息。具有一个辅助信号“高速缓存数据非存储器数据”(DCache),该信号在干预过程中被启用,指示数据来自高速缓存,而不是来自存储器。理论上在请求者得到干预响应之前,存储器或高速缓存可开始发送数据,如果这样,Dcache被启用,指示最近的数据正被发送,如果Dcache被禁用,它必须等待干预响应,以了解是否发生干预,如果发生了干预,则丢弃该数据,并等待由Dcache(及相同的匹配数据标志)标记的数据。另外,这一新响应将命令存储器系统放弃该读取请求,因为该读取请求可由另一高速缓存的干预所满足。由于高速缓存等待时间远小于存储器等待时间,因此利用这种新的协议,可显著改进读取性能。
值可进一步与每个响应相联系,以使系统逻辑电路能够确定在对请求处理器表达单独响应时,哪一个响应应优先,如图1中所示。例如,如果一个或多个高速缓存以共享干预响应(优先级3)应答,而一个或多个高速缓存以重试响应(优先级1)应答,则重试响应将获得优先权,系统逻辑电路将向请求处理器发出重试响应。系统逻辑电路可存在于各种组成部分中,例如系统控制指示器,或者甚至存在于存储器控制器中。类似于现有技术,表1中所示的优先级初始值为重试响应设置了最高优先级。不过,也提供了一种备选优先级方案,以增加共享干预协议的使用。在由表1中括号中的优先级数表示的这一备选方案中,共享干预响应具有最高的优先级,其次是重试响应,再其次是修改干预响应;其它所有优先级均与第一方案相同。在这种备选方案中,共享干预响应将总是优先于其它响应,由于下述许多原因,这是可接受的。首先,如果高速缓存线正以共享状态保持一个值(数据或指令),则其它高速缓存不可能以修改状态保持对应于相同地址的值,这样,显然没有其它高速缓存能够以修改干预响应表示应答。另外,如果任意其它高速缓存发布重试响应,则随后基于该重试响应,来自同一高速缓存的任何响应至多不过可被共享,这再次意味着首先发布共享干预响应是可接受的。
在本发明中,可采取几种不同的机制来查明哪一个高速缓存是未修改的值的“所有者”,并且因此有权提供该未修改的值。如果计算机系统使用图2中所示的现有MESI协议,并且高速缓存线以排他状态保持一个值,则该高速缓存是含有该值的有效副本的唯一高速缓存,这样该高速缓存显然是所有者,并可发布共享干预响应。但是,如果高速缓存以共享状态保持一个值,则该值还以同样的状态被保持在至少一个其它高速缓存中,这样,不能直接清楚哪一种情况应提供该数据。这种情况下,可采用几种备用方法来确定应使用哪一个高速缓存。例如,多个高速缓存可以共享干预响应,那么系统逻辑电路(例如,系统控制指示器)能够选择哪一个高速缓存来提供该值。这样,系统能够向除去其中之一的全部可能的所有者返回重试响应,并只向选定的所有者返回共享干预响应。可任意地选择所有者,或者可根据固定的或变换(rotating)的优先级方案选择所有者。
在含有共享值的多个高速缓存中确定所有者的另一种方法是提供一种指示哪一个高速缓存最近读取了高速缓存线的机制。随后该高速缓存被自动看作是该高速缓存线的所有者,直到另一高速缓存读取了该高速缓存线,或者该高速缓存线被丢弃为止。这一方法可由图3的状态图中描述的新的高速缓存相干协议实现。该协议与图2的现有MESI协议的相似之处在于,它也包括四种相同的状态(修改、排他、共享及无效),不过它还包括一种新的“R”状态(最近),用于指示最近访问的块,否则该块会具有共享指示。换句话说,当两个或更多高速缓存保持有指令或数据值的有效副本时,除了最近访问过该指令或数据值的那个高速缓存之外,它们都将处于共享状态,而该高速缓存将处于最近状态。由于现在总共具有5种可能的状态,因此每个高速缓存表目需要一个三位字段(而不是如同现有技术中的二位字段)来识别该表目具有哪种状态。
这里把这种新协议称为“R-MESI”协议。正如现有技术协议的情况一样,四个M-E-S-I状态可根据表目的初始状态及请求处理器所寻找的访问的类型而改变。除了下面指出的之外,这四种状态的变化方式一般和现有的MESI协议相同。表2表示了读取型操作的主高速缓存状态转变,这里发生了“失败(miss)”
表2
总线操作 | 主状态 | 相干响应 | |
1 | 读取 | I→R | ShrI,Shr或Mod |
2 | RWITM | I→E | ShrI,Shr或Null |
3 | 读取 | I→E | Null |
4 | RWITM | I→M | Mod |
对于“读取失败”总线操作,如果相干响应是修改(Mod)、共享(Shr)或者共享干预(ShrI),则进入最近状态(表2的第1行);对于“读取失败”操作,如果相干响应是修改(Mod),则修改的高速缓存将也向存储器发送指令或数据,这样它不再是修改(Mod)。如果对于“读取失败”操作不存在相干响应(Null)(表2的第3行),则和现有技术的MESI协议的情况一样,进入排他状态。对于“RWITM”操作(RWITM是带有修改意愿的读取(Read With Intent To Modify)的缩写),如果相干响应为Null、Shr或ShrI,则进入排他状态(表2的第2行),如果相干响应是Mod,则进入修改状态(表2的第4行)。RWITM情况只适用于仍然处于准备执行状态的数据或指令,因为指令一旦准备好执行通常不被修改。
表3表示了对于读取型操作(读取命中(read hit)),当高速缓存作为窥探器时,总线事务是如何影响该高速缓存的一个例子:
表3
总线操作 | 窥探器状态 | 相干响应 | |
1 | 读-字符组 | R→S | ShrI |
2 | 读-字符组 | E→S | ShrI |
3 | 读-字符组 | M→S | Mod |
4 | RWITM | E或R→I | ShrI |
5 | RWITM | M→I | Mod |
对于起始状态为排他(Exclusive)或最近(Recent)状态的情况(表3的第1、第2及第4行),高速缓存将传送共享干预相干响应,意味着它将在不涉及系统存储器的情况下,借助于干预直接向请求处理器提供它的指令或数据副本。当一个指令被这样提供时,对于“读取命中(Read hit)”操作(表3的1及第2行),下一状态变成共享状态,或者对于“RWITM命中(hit)”操作(表3的第4行),下一状态变成无效状态。在起始状态为修改状态的那些情况下(表3的第3及第5行),就指令而论,仍然不应用修改状态,因为通常不修改程序指令,相干响应将是修改(Mod),并且仍然发生干预。如果总线操作是“RWITM”,则值只从高速缓存传送到高速缓存,但是如果总线操作是读取操作,则值既被发送给高速缓存,又被发送给存储器。
如上所述,附带一个条件,即经受写操作的高速缓存表目可具有“R”状态,并且该高速缓存将以当共享表目经受写操作时发生的转变相类似的方式转变为修改状态,表2及表3中没有显示的那些状态及操作按照现有技术的MESI协议执行转变及相干响应。此外对于R-MESI协议还应注意以下几点:表目永远不可能从无效状态转到共享状态(而是会转到最近(Recent)状态);表目永远不可能从排他状态转到最近状态(它应转到共享状态);表目永远不可能从最近状态转到排他状态(正如共享表目不能够转到排他状态一样);表目永远不可能从修改状态转到最近状态(它应转到共享状态,而请求处理器的高速缓存中的表目应转到最近状态)。
借助这种新的R-MESI协议,块的所有权转移到要读取指令或数据的最后的高速缓存,其增加的优点是保持最近最多使用(mostrecently used),从而如果采用最近最少使用(LRU)高速缓存替换机制,减少了解除分配的机会。“R”高速缓存状态也可有利地用于其它应用,例如中断最近已读取高速缓存I/O状态存储单元的处理器/高速缓存的智能输入/输出(I/O)控制器,因为该处理器/高速缓存很可能已高速缓存该I/O设备驱动程序代码,于是能够比需要把该代码装入其高速缓存中的另一处理器更快地执行该代码。
通过为共享指令及数据(即有效地存在于一个以上的高速缓存中的指令或数据)提供干预,显著地改善了存储器等待时间。在R-MESI协议的一个评定中,当和现有技术的MESI协议相比时,按照产业标准基准测试,性能从5300TPMC增加到7500TPMC(每分钟的事务)。一般,本发明不含存储器控制器,并且减少了对存储器带宽的要求。
尽管上面参考特定实施例描述了本发明,但是不能狭义地理解上述说明。参考本发明的说明,公开的实施例的各种修改,及本发明的其它可能实施例对于本领域的技术人员将是显而易见的。于是在不脱离本发明范围的情况下,能够作出各种修改。
Claims (20)
1.一种改进存储器等待时间的方法,所述存储器等待时间与由多处理器计算机系统中的请求处理单元发出的读取操作相关,所述计算机系统包括多个处理单元,每个处理单元具有一个相关高速缓存,所述方法包括下述步骤:
从存储设备的地址中把值载入至少第一及第二高速缓存中;
把所述第一及第二高速缓存标记为含有所述值的共享的、未修改副本的高速缓存;
从请求处理单元发出一个消息,该消息指示所述请求处理单元想要从所述存储设备的所述地址中读取所述值;及
从所述第一及第二高速缓存中的指定高速缓存传送指示所述指定高速缓存可提供所述值的响应。
2.一种改进存储器等待时间的方法,所述存储器等待时间与由多处理器计算机系统中的请求处理单元发出的读取操作相关,所述计算机系统包括多个处理单元,每个处理单元具有一个相关高速缓存,所述方法包括下述步骤:
从存储设备的地址中把值载入多个高速缓存中;
识别所述多个高速缓存中的一个指定高速缓存,该指定高速缓存含有所述值的最近被读取的未修改副本;
把所述指定高速缓存标记为含有所述值的最近读取的、未修改副本的高速缓存;
从请求处理单元发出一个消息,该消息指示所述请求处理单元想要从所述存储设备的所述地址中读取所述值;及
从所述指定高速缓存传送指示所述指定高速缓存可提供所述值的响应。
3.按照权利要求1或2所述的方法,其中所述响应由系统逻辑电路检测,还包括把所述响应从系统逻辑电路发送给请求处理单元的步骤。
4.按照权利要求1或2所述的方法,还包括所述指定高速缓存提供所述值给互连的步骤,所述互连与所述请求处理单元相连。
5.按照权利要求1所述的方法,其中所述指定高速缓存从第一及第二高速缓存中任意选择。
6.按照权利要求1或2所述的方法,其中所述响应的传送,是响应指定高速缓存从与所述请求处理单元相连的互连窥探所述消息的步骤。
7.按照权利要求1或2所述的方法,还包括利用请求识别符标记所述消息的步骤。
8.按照权利要求1或2所述的方法,其中:
所述存储设备检测所述消息;并且
所述响应通知所述存储设备,所述值将由指定高速缓存提供。
9.按照权利要求1或2所述的方法,其中
除所述指定高速缓存之外的至少一个其它高速缓存传送另一响应;
第一优先级值与来自指定高速缓存的响应相联系;并且
第二优先级值与所述另一响应相联系,和第一优先级值相比,第二优先级值指示较低的优先级。
10.按照权利要求7所述的方法,还包括指定高速缓存作为应答提供所述值给与该请求处理单元相连的互连,该应答用所述请求识别符标记。
11.一种计算机系统,包括:
存储设备;
与所述存储设备相连的互连装置;
与所述互连装置相连的多个处理单元,每个处理单元具有存储来自所述存储设备的值的高速缓存,所述高速缓存中的一个指定高速缓存还具有用于指示何时述指定高速缓存含有从所述存储设备载入的值的共享、未修改副本的装置,该值也以共享、未修改副本的形式存在于至少另一个所述高速缓存中;及
传送来自所述指定高速缓存的响应的装置,该响应指示所述指定高速缓存可提供从所述存储设备加载的该值至请求读取该值的处理单元。
12.一种计算机系统,包括:
存储设备;
与所述存储设备相连的互连装置;
与所述互连装置相连的多个处理单元,每个处理单元具有存储来自所述存储设备的值的高速缓存,所述高速缓存中的一个指定高速缓存还具有用于当所述指定高速缓存含有从所述存储设备载入的值的最近读取的、未修改副本时,指示该值也以共享、未修改副本的形式存在于至少另一个所述高速缓存中的装置;及
传送来自所述指定高速缓存的响应的装置,该响应指示所述指定高速缓存可提供从所述存储设备加载的该值至请求读取该值的处理单元。
13.按照权利要求11或12所述的计算机系统,还包括与所述互连装置相连的系统控制指示器,所述系统控制指示器具有用于检测所述响应,并把所述响应转给所述请求处理单元的装置。
14.按照权利要求11或12所述的计算机系统,还包括用于提供来自所述指定高速缓存的值至所述请求处理单元的装置。
15.按照权利要求11所述的计算机系统,还包括从含有所述值的共享的、未修改副本的高速缓存中随意选择所述指定高速缓存的装置。
16.按照权利要求11或12所述的计算机系统,其中每个所述高速缓存包括为来自所述请求处理单元的消息窥探所述互连的装置。
17.按照权利要求11或12所述的计算机系统,还包括用于确定与所述响应相关的优先级的装置。
18.按照权利要求16所述的计算机系统,还包括利用请求识别符标记所述消息的装置。
19.按照权利要求16所述的计算机系统,其中所述存储设备检测所述消息,还包括通知所述存储设备,所述值将由所述指定高速缓存提供的装置。
20.按照权利要求18所述的计算机系统,还包括提供该值作为应答的装置,所述应答用所述请求识别符及附加信号标记,附加信号表示该值来自高速缓存,而不是来自所述存储设备。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/839,479 | 1997-04-14 | ||
US08/839,479 US5946709A (en) | 1997-04-14 | 1997-04-14 | Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing |
US08/837,516 | 1997-04-14 | ||
US08/837,516 US5940856A (en) | 1997-04-14 | 1997-04-14 | Cache intervention from only one of many cache lines sharing an unmodified value |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1252142A CN1252142A (zh) | 2000-05-03 |
CN1215416C true CN1215416C (zh) | 2005-08-17 |
Family
ID=27125949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB988041480A Expired - Fee Related CN1215416C (zh) | 1997-04-14 | 1998-04-03 | 多处理器计算机系统中的读取操作 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP0976047B1 (zh) |
CN (1) | CN1215416C (zh) |
CA (1) | CA2286364A1 (zh) |
DE (1) | DE69810098T2 (zh) |
PL (1) | PL336162A1 (zh) |
RU (1) | RU2183850C2 (zh) |
WO (1) | WO1998047071A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496729B2 (en) * | 2004-05-13 | 2009-02-24 | International Business Machines Corporation | Method and apparatus to eliminate interpartition covert storage channel and partition analysis |
CN1328670C (zh) * | 2005-03-30 | 2007-07-25 | 中国人民解放军国防科学技术大学 | 目录协议对多处理器结点内脏数据共享的支持方法 |
US20060253662A1 (en) * | 2005-05-03 | 2006-11-09 | Bass Brian M | Retry cancellation mechanism to enhance system performance |
US9639276B2 (en) * | 2015-03-27 | 2017-05-02 | Intel Corporation | Implied directory state updates |
CN107634916B (zh) * | 2016-07-19 | 2020-11-03 | 大唐移动通信设备有限公司 | 一种数据通信方法和装置 |
RU2672726C1 (ru) * | 2017-11-27 | 2018-11-19 | Общество с ограниченной ответственностью "РЭЙДИКС" | Способ выполнения упреждающего чтения в системах хранения данных |
CN113032298B (zh) * | 2019-12-24 | 2023-09-29 | 中科寒武纪科技股份有限公司 | 用于保序的计算装置、集成电路装置、板卡及保序方法 |
CN113032299B (zh) * | 2019-12-24 | 2023-09-26 | 中科寒武纪科技股份有限公司 | 用于处理请求的总线系统、集成电路装置、板卡及保序方法 |
US11314637B2 (en) * | 2020-05-29 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | System and method for efficient cache coherency protocol processing |
-
1998
- 1998-04-03 CA CA002286364A patent/CA2286364A1/en not_active Abandoned
- 1998-04-03 DE DE69810098T patent/DE69810098T2/de not_active Expired - Lifetime
- 1998-04-03 WO PCT/GB1998/001002 patent/WO1998047071A1/en active IP Right Grant
- 1998-04-03 PL PL98336162A patent/PL336162A1/xx not_active IP Right Cessation
- 1998-04-03 RU RU99123716/09A patent/RU2183850C2/ru active
- 1998-04-03 EP EP98914979A patent/EP0976047B1/en not_active Expired - Lifetime
- 1998-04-03 CN CNB988041480A patent/CN1215416C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69810098D1 (de) | 2003-01-23 |
CA2286364A1 (en) | 1998-10-22 |
RU2183850C2 (ru) | 2002-06-20 |
EP0976047A1 (en) | 2000-02-02 |
CN1252142A (zh) | 2000-05-03 |
DE69810098T2 (de) | 2003-09-25 |
WO1998047071A1 (en) | 1998-10-22 |
EP0976047B1 (en) | 2002-12-11 |
PL336162A1 (en) | 2000-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6018791A (en) | Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states | |
US5940856A (en) | Cache intervention from only one of many cache lines sharing an unmodified value | |
US5946709A (en) | Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing | |
US6591321B1 (en) | Multiprocessor system bus protocol with group addresses, responses, and priorities | |
CN101097545B (zh) | 独占所有权探听过滤器 | |
US5940864A (en) | Shared memory-access priorization method for multiprocessors using caches and snoop responses | |
CN100440174C (zh) | 使用锁定高速缓冲存储器用于直接存入的系统和方法 | |
KR100273039B1 (ko) | 멀티프로세서 데이터 처리 시스템의 캐쉬 일관성을 유지하기위한 캐쉬 일관성 프로토콜 제공 방법 및시스템 | |
US5249283A (en) | Cache coherency method and apparatus for a multiple path interconnection network | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US20080270708A1 (en) | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System | |
US5943685A (en) | Method of shared intervention via a single data provider among shared caches for SMP bus | |
US6662276B2 (en) | Storing directory information for non uniform memory architecture systems using processor cache | |
JPH10289154A (ja) | Smpバスの排他状態でのキャッシュ・ラインの共用を行う方法及び装置 | |
JPH07281955A (ja) | マルチプロセッサーシステムのスヌープ回路 | |
JPH08235061A (ja) | マルチプロセッサ・データ処理システム | |
CN1130651C (zh) | 高速缓存、保持高速缓存相关性的方法以及数据处理系统 | |
CN1215416C (zh) | 多处理器计算机系统中的读取操作 | |
US5996049A (en) | Cache-coherency protocol with recently read state for data and instructions | |
US6950906B2 (en) | System for and method of operating a cache | |
US7000080B2 (en) | Channel-based late race resolution mechanism for a computer system | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US6757785B2 (en) | Method and system for improving cache performance in a multiprocessor computer | |
US6658536B1 (en) | Cache-coherency protocol with recently read state for extending cache horizontally | |
US7979644B2 (en) | System controller and cache control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050817 Termination date: 20110403 |