供多处理器系统中的高速缓存同步中使用的转发状态

摘要:
在基于总线的多处理器系统中,高速缓存同步协议通常不许可系统组件向发请求的系统组件提供共享数据。共享状态可能会带来多处理器系统中的许多问题,特别是当所述多处理器系统不依赖于用于追踪超高速缓冲存储器行状态的目录时,该多处理器系统在系统组件之间使用点对点互连网络。图6是多处理器系统的一个实施例。作为初步解决的问题,在下面提供了用于高速缓存同步的消息概要。

这里所述的是一种具有五种状态的高速缓存同步协议,该五种状态为:修改、排它、共享、无效和转发(MESIF)。所述MESIF高速缓存同步协议包括转发(F)状态,该状态指明单个数据副本,从所述数据副本中能够产生另一个副本。利用F状态下的超高速缓冲存储器行来响应对超高速缓冲存储器行的副本的请求。在一个实施例中,将新创建的副本置于F状态下并将先前处于F状态下的超高速缓冲存储器行置成共享(S)状态或无效(I)状态。由此,如果共享超高速缓冲存储器行,则一个共享的副本就处于F状态下并且剩余的超高速缓冲存储器行副本处于S状态下。

背景技术

大部分的高速缓存同步协议都具有共享状态,在该共享状态中数据能够在许多系统组件(例如,处理器)之间被共享。当系统组件请求数据的只读副本并且该数据已在另一个系统组件中处于排它(E)状态时,出现共享(S)状态。发请求的系统组件和具有数据副本的系统组件中的每一个都在共享状态下对数据进行标记。当数据处于共享状态时,请求数据的只读副本的系统组件能够自由地拷贝那个数据。

在基于总线的多处理器系统中,高速缓存同步协议通常不许可系统组件向发请求的系统组件提供共享数据。而是,从存储系统中直接检索出所述数据。在基于目录的高速缓存同步协议中,存储系统还向发请求的系统组件提供共享副本。将超高速缓冲存储器行状态(由此,数据状态)的目录定位在系统组件和存储器之间,由此从存储器检索出所述数据并将其发送给发请求的系统组件。

共享状态可能会带来多处理器系统中的许多问题,特别是当所述多处理器系统不依赖于用于追踪超高速缓冲存储器行状态的目录时,该多处理器系统在系统组件之间使用点对点互连网络。为了限制这类系统中的问题的发生,现有技术的解决方案提出:将来自系统组件的请求直接路由到存储系统,然后所述存储系统负责广播该请求以确定数据(超高速缓冲存储器行)状态,收集来自其它系统组件的响应,然后确定当履行所述请求时数据应为什么状态。这些协议导致将被返回的数据的四次跳跃(hop)1)对存储器的请求者,2)存储器向其它系统组件广播请求,3)系统组件对存储系统作出响应,和4)存储系统将数据转发给请求者。

为了在完全连接的点对点系统中缩短与履行请求相关联的等待时间,发请求的系统组件能够将它的请求广播到所有其它系统组件以及广播到存储系统。如果另一个系统组件具有处于共享状态下的数据,那么它就会直接把数据传送给请求者。当多个系统组件同时地请求同一个数据并且多个其它的系统组件具有处于共享状态下的数据时复杂度上升。所述请求者系统组件必须潜在地处理多个数据返回。当一个或多个系统组件请求修改共享数据的权利时,出现了更多的问题。

当其中一个系统组件想要修改数据时,那个组件必须发出所有权请求(RFO)″,以从其余的系统那里要求修改被请求数据的许可。在RFO获得准许之后,数据的状态从共享状态变成表明所述数据已被修改的另一个状态(例如,修改状态)

为了举例说明,图1a1b是具有现有技术的高速缓存同步协议的四节点系统的概念图解。在图1b的示例中,虚线表示先前发送的消息,而实线表示正在描述的消息。在这种系统中,仅仅采用四种常规的超高速缓冲存储器行状态:修改(M)、排它(E)、共享(S)和无效(I)。这公知为MESI高速缓存同步协议。节点110120130是存储高速缓冲存储器中的被请求数据的副本(例如,超高速缓冲存储器行)的对等节点。本地节点140在存储器中存储数据原本,或者当将修改版本写回到存储器时存储数据的修改版本。也就是说,本地节点140负责非高速缓存的数据副本。在图1a的示例中,节点120130两者都具有存储在高速缓冲存储器中的被请求数据的副本,并且该数据处于共享(S)状态。

供多处理器系统中的高速缓存同步中使用的转发状态第1张

当对等节点110发出请求修改数据的权利的RFO时,对等节点110RFO广播到所述系统的其它节点。正如在图1b中举例说明的那样,节点120130两者都通过提供被请求数据的副本,对来自对等节点110的请求作出响应。因为这两个节点120130都能够提供被请求数据的副本,所以对等节点110必须能够接收和协调被请求数据的的多个副本。这给对等节点110的设计增加了复杂度。随着系统中节点数目的增加,这要求复杂度方面的进一步增加,这增加了系统设计的成本和难度。

供多处理器系统中的高速缓存同步中使用的转发状态第2张

还可以存在更多的复杂状态,在其中多个发请求的节点中的每一个都能够接收被请求数据的副本,例如从三个或更多节点中接收。由此,每一个节点都必须能够解析被请求数据的多个冲突副本以便确保正确的系统功能。

附图简要说明

本发明是按照举例的方式而不是作为限制在附图中加以说明的,在附图中相同的参考标记是指相似的元件。

1a1b是具有现有技术的高速缓存同步协议的四节点系统的概念上的说明。

2a2b是利用转发状态将数据从其本地节点传送到发请求的节点的概念上的说明。

3a-3c是利用转发状态将数据在对等节点之间传送在概念上的说明。

4是与用于利用转发状态来提供数据副本的技术的一个实施例相对应的流程图。

5是节点的一个实施例的框图。

6是多处理器系统的一个实施例。

详细说明描述

用于多节点系统中的高速缓存同步的转发(F)状态的使用。所述F状态许可共享数据从当前自己的系统组件被传输到发请求的系统组件,而不牵涉在发请求的系统组件上接收的多个数据副本,因为所述请求是只读请求或读取所有权的请求。

所述F状态不同于现有技术的高速缓存同步协议当中的O状态,所述现有技术的高速缓存同步协议通称MOESI(修改、所拥有、排它、共享和无效),因为具有处于O状态下的数据的系统组件在所述系统中具有唯一的更新数据值。此外,它不兼容于存储系统中的副本。这需要系统组件刚一驱逐所拥有的数据就把那个数据发送回以存储在存储系统中。所述F状态表明所述数据值与存储系统中的副本相一致。如果系统组件驱逐处于F状态下的数据,那么所述组件就能够简单地删除该数据而无需将该数据存储回至存储系统。

在下面的说明中,为了解释起见,阐述了许多具体细节以便提供对本发明的彻底理解。然而,明显的是:对于本领域熟练技术人员而言,可以在没有这些具体细节中的一些细节的情况下实践本发明。在其它实例中,为了避免混淆本发明,以框图的形式示出了结构和装置。

在下面的说明中,描述包含五种状态(修改、排它、共享、无效、转发)的高速缓存同步协议,并且也将其称为MESIF协议。在可替换的实施例中,所述转发状态能够与不同于MESI状态和/或除MESI状态以外的状态一起使用。换言之,其中一个是转发状态的五种状态不是必需的。

为了提供高速缓存同步协议,描述了几种高速缓存同步协议消息类型。作为初步解决的问题,在下面提供了用于高速缓存同步的消息概要。并不需要所有的所描述的消息以提供具有F状态的同步协议,而是可以使用消息群来提供具有F状态的高速缓存同步协议。

  • 请求消息

下列消息是来自发请求的节点(系统组件)的数据/动作请求。将这些消息广播到该系统的所有节点。

端口读取行(PRL):这是对数据段副本的请求,例如超高速缓冲存储器行。

端口读取无效行(PRIL):这是对数据段副本的请求,在其中使提供商节点的数据副本无效。这是所有权请求″(RFO)型消息。

端口写行(PWL):这个消息令数据(例如,修改的超高速缓冲存储器行)将被写入存储器中。这个消息还可以称为脏驱逐(dirty eviction)″

  • 响应消息

下列消息是响应于上述请求从对等(即,非本地)节点发送到发请求的节点的消息。本地节点是包含与被请求的超高速缓冲存储器行相对应的存储系统的节点。

无效状态确认(IACK):这个消息是当发送响应的节点具有被请求数据的无效副本或没有被请求数据的副本时对请求(PRLPRILPWL)的响应。

共享状态确认(SACK):这个消息是当发送响应的节点具有并保留有处于共享状态下的被请求数据的副本时对请求的响应。

数据收到确认(DACK):这个消息确认被请求数据的接收。

冲突:这个消息表明存在对被请求的超高速缓冲存储器行的共同待决(copending)请求。

  • 到本地节点的消息

将这些消息通过对等节点传送到本地节点。

(冲突):这个消息请求来自本地节点的数据并列出所有冲突(如果有的话)

CNCL(冲突):响应于对等节点中的命中而将这个消息发送给本地节点,并且列出所有冲突(如果有的话)。这个消息取消本地节点的预取操作。

  • 来自本地节点的消息

将这些消息从本地节点发送到对等节点和/或发请求的节点。

数据:这个消息包含被请求数据并且能够表明将被发请求的节点使用的数据的状态(M/E/F/S)

确认(ACK):这个消息表明被请求数据已被发送给发请求的节点。

等待:这个消息令正在进行接收的节点在进一步发送消息之前等待输入数据。

传送(XFR):这个消息令正在进行接收的节点把数据传送到该消息中指明的节点。

MESIF高速缓存同步协议的综述这里所述的是具有五种状态的高速缓存同步协议,该五种状态为:修改、排它、共享、无效和转发(MESIF)。所述MESIF高速缓存同步协议包括指明单个数据副本的转发(F)状态,从该单个数据副本中能够进一步产生副本。使用处于F状态下的超高速缓冲存储器行来响应对超高速缓冲存储器行副本的请求。在一个实施例中,将新创建的副本置于F状态下,并且将另一个系统组件(非本地节点)中的先前处于F状态下的超高速缓冲存储器行置成共享(S)状态或无效(I)状态。由此,如果共享超高速缓冲存储器行,则一个系统组件中的一个共享副本就处于F状态下,而其它系统组件中的剩余的超高速缓冲存储器行副本就处于S状态下。

这里所描述的MESIF协议是新的,因为它实质上是一种没有单条串行化总线限制的监听协议。与监听高速缓存协议相类似,MESIF依赖于具有数据的高速缓存副本的节点以便保持同步。采用点对点链接而非同步链接,集中广播引入了时间异常(time-warp)(即从不同的节点的角度来看,事件看起来是以不同的顺序发生的事实)的问题。所述MESIF协议正确地处理时间异常,识别何时潜在错误会产生并确定该错误得到正确处理。本地节点的概念主要是为了判断未高速缓存的副本驻留在哪里,但是本地节点能够参予每个事务(而不必位于关键路径上)以便解决冲突和时间异常问题。由于所述方案的并发广播特性,MESIF实现了与监听协议相关联的低等待时间,从而在大多数情况下以最短的可能等待时间(单次往返路程的请求响应)获得可高速缓存的数据副本。

忽略时间异常的问题,就可能当在系统中存在唯一的高速缓存副本时实现两次跳跃的存取。F状态的引入将这一能力扩展到存在多个副本的常见情形。实质上,F状态建立判断当允许多个节点时哪一个节点应响应的平等中的第一(first-among-equa1s)″

所述MESIF协议包含向所有对等节点以及本地节点广播初始请求。如果在状态EFM下高速缓存副本的话,则它就被包含在所述响应当中。继而,向本地节点发送第二个消息,以通知它所述请求已被满足。如果未高速缓存被请求的线,或如果只有S状态的副本存在的话,则利用发送给本地节点的第二个请求来确认前一个请求,其中此刻可能已经从其存储器中取出所述本地节点。不论是在哪种情况下,为了同步化和冲突解决起见,所述本地节点都必须响应第二个请求(尽管它们往往能够被组合在一起也响应第一个请求)。注意,本地节点可以具有一个或多个高速缓存,所以它可以像任何其它节点那样响应初始请求。

所述数据一旦到达而非等待所有的响应,就因允许节点使用所述数据而造成复杂化。由此,允许接收数据副本的节点一接收就在内部立即使用所述数据,但是可以不影响使用其余系统可见的数据直到所述节点已经从本地节点那里接收到确认为止。所述确认还可以包括节点必须将它的副本转发给另一个节点的指令,并且或许会从它自己的高速缓存中驱逐所述节点。

当节点通过提供已高速缓存的数据对来自于另一个节点的请求作出响应时,所述节点推延它为同一个超高速缓冲存储器行接收的所有其它请求直到所述节点接收到来自本地节点的响应,该响应确认所述节点转发了该数据的事实,由此确保所有节点都注意到相同顺序的(可能可写的)超高速缓冲存储器行的传送。

所述本地节点是未高速缓存的数据的存储库,但是所述本地节点还可以具有产生请求的处理器并且包括一个或多个高速缓存。像任何其它的节点一样,当本地节点处理器错过时,所述本地节点必须向所有其它(对等)节点广播请求,并且所述本地节点必须内部地处理所述请求,因为它可能是针对本地节点而到达的任何其它请求。注意,这是一个特例,因为本地节点不显式地向它自身(本地节点)发送消息。另外,当外部请求针对局部高速缓存的数据而到达时,所述本地节点必须以这样一种方式来进行响应,以确保来自本地节点的最新响应不是有歧义的。也就是说,所述本地节点可以通过提供所述数据来响应初始请求,但是所述本地节点同时也必须作为本地节点来响应第二个请求。

协议的变形允许本地节点在不知道数据是否有效的情况下以这个数据的未高速缓存的副本响应,把它留给发请求的节点并且来自本地节点的第二个响应挑选出不适当地提供数据的情形。

转发状态的综述在一个实施例中,所述转发状态是用在异步地广播请求的系统中的,这意味着所述响应不能被系统中的所有节点注意到,并且具有在F状态下存储的数据的节点不能具有唯一的副本,因为有效的副本是(例如,由本地节点)存储在存储器中的。由此,不同于MOESI协议的所拥有状态,其中处于O状态下的数据是唯一有效的数据副本,可以丢弃处于F状态下的数据或者如果期望的话则将其转变成S状态。

在存储器中存在有效的被请求数据的副本的环境下,所述F状态可以被称作为平等中的第一的概念。早先的协议(例如,MOESISCI)没有提供这种状态。所述MOESI协议维护所拥有的副本,因为有效的副本并不是维护在存储器中的。仅仅通过更新存储器中的副本就可以清除该所拥有的副本。所述SCI协议不是广播协议,因为请求是发送给将要处理的目录节点的。

2a2b是使用转发状态将数据从其本地节点传送到两个对等节点中的每一个的概念上的说明。在图2a2b以及图3a3c的示例中,虚线表示先前发送的消息,而实线表示正被描述的消息。为了保持图更加清楚,当分解一组消息(例如,PRIL和对应的IACK)时,所述这些线表示消息不再被包含在所述图中。

随后的论述是就多节点系统内的节点而言给出的。在一个实施例中,非本地节点包含具有内部高速缓冲存储器和/或外部高速缓冲存储器的处理器。在可替换的实施例中,非本地节点是与其它电子系统相连的电子系统(例如,计算机系统、移动装置)。在又一个实施例中,每个节点和所有节点都可以是具有内部高速缓冲存储器和邻接的存储系统的处理器。在上面描述的最后一个实施例中,当所请求的数据在节点的存储系统中是本地的时,所述节点能够充当对该请求的本地节点。

2a举例说明了多节点系统,其中仅仅由本地节点240存储所请求的数据集(例如,超高速缓冲存储器行)。这个状态例如可以在存取数据集的第一时间出现。将数据存储在与本地节点240相关联的存储器中,而不是存储在与任何节点210220230相关联的高速缓冲存储器中。对等节点230通过向系统的所有节点广播PRL消息来请求数据块。对等节点230能够利用其它类型的消息(例如,PRIL消息)来请求数据块。

供多处理器系统中的高速缓存同步中使用的转发状态第3张

2b举例说明了响应于对等节点230的数据请求的图2a的多节点系统。节点210220向对等节点230发送IACK消息,以表明节点210220的高速缓冲存储器不包含被请求数据的有效副本。本地节点240DataE消息中向对等节点230发送被请求数据。所述DataE消息向对等节点230表明被请求数据应被存储在处于E状态下的对等节点230上。

供多处理器系统中的高速缓存同步中使用的转发状态第4张

当另一个对等节点(例如,对等节点220)对相同的超高速缓冲存储器行产生后续请求时,对等节点230通过以DataF消息(而非如本地节点240所提供的DataE消息)响应来自对等节点220PRL请求来直接地向对等节点220提供超高速缓冲存储器行。对等节点230将其超高速缓冲存储器行的副本转变为共享状态(S)。此外,当对等节点220随着来自对等节点230DataF消息一起接收来自对等节点210的接收时,该对等节点220就向本地节点240发送CNCL()消息。然后,本地节点240向对等节点220发送ACK消息,由此许可对等节点220使超高速缓冲存储器行保持在F状态下。对等节点220能继而以DataF响应对相同的超高速缓冲存储器行的后续请求。

在一个实施例中,处于F状态下的数据的副本是用来向随后发请求的节点提供附加副本的副本。由此,使用处于F状态下的数据来对将来的数据副本请求作出响应。将新创建的数据副本置于F状态下,而将早先处于F状态下的数据副本置成S状态。换言之,如果共享所述数据,则一个共享副本就处于F状态下,而剩余的数据副本(如果有的话)就处于S状态下。可替换地,使被请求数据的副本的源维持在F状态下,并且在S状态下存储新的副本。

处于F状态下的数据的单个副本带来了至少两个优点。第一,高速缓存到高速缓存的响应一般比存储器到高速缓存的响应更快速。因此,在指定单个的情况下,用来向发请求的节点提供副本的高速缓存的数据副本能够提高多节点系统的整体性能。

第二,所述F状态使数据从S状态到修改(M)状态的转变简单化。因为只有一个处于F状态下的数据副本存在,所以这允许了用于解决冲突请求的单个点并降低了转变成使所有其它副本无效的一种状态的可能。使用处于F状态下的副本以提供冗余的副本,使得更易于禁止在这期间副本的激增。

3a3c是利用转发状态在对等节点之间进行的数据传送的概念上的例图。图3a举例说明了对早先请求的数据和目前在F状态下存储于对等节点230中的数据进行请求的对等节点210(例如,正如在上面图2a2b中举例说明的那样)。为了请求所述数据,对等节点210向系统的其它节点广播PRL消息(对等节点210还可以将PRL消息传输到节点的子集)。对等节点220IACK消息响应,以表明对等节点220不具有被请求数据的有效副本。对等节点230DataF消息响应,来向对等节点210提供数据副本并指示对等节点210应该在F状态下存储该数据。在另一个实施例中,将对等节点230所存储的被请求数据的副本置于S状态下。

供多处理器系统中的高速缓存同步中使用的转发状态第5张

3b举例说明了响应于从对等节点230那里接收被请求数据的副本的、来自于对等节点210的消息。当对等节点210从对等节点220230那里接收到所有的响应时,该对等节点210就向本地节点240发送CNCL()消息,该CNCL()消息使本地节点240响应于来自对等节点210PRL消息,暂停已开始的取出操作,并且相对于该PRL消息指示不存在已知冲突。然后,所述本地节点240向节点210发送ACK消息。

供多处理器系统中的高速缓存同步中使用的转发状态第6张

3c举例说明了来自本地节点240的、结束从对等节点230到对等节点220的数据传送的最终消息。在一个实施例中,一旦对等节点210接收到该ACK消息,该对等节点210就向对等节点230发送DACK消息以表明对等节点210已经从对等节点230那里接收到了被请求的数据。在可替换的实施例中,本地节点240能够向对等节点230发送DACK消息而不是让对等节点210向节点230发送该DACK消息。在可替换的实施例中,来自对等节点210CNCL()消息包含指示对等节点210从对等节点230接收数据的信息以便本地节点240能够追踪到哪个对等节点应该接收该DACK消息。

供多处理器系统中的高速缓存同步中使用的转发状态第7张

虽然图2a2b以及图3a3c的示例是相对于四节点系统加以描述的,但是在这里描述的技术可应用到任何大小的多节点系统。图2a2b以及图3a3c的节点是用来表示能够存储数据和请求数据副本的任何类型的组件。例如,节点可能是多处理机计算机系统中的高速缓冲存储器,或者节点可能是网络中的计算机系统,或者节点可能是更复杂的系统内的一个或多个处理器和/或高速缓冲存储器的群组。

处理流程的一个实施例图4是与用于利用转发状态来提供数据副本的技术的一个实施例相对应的流程图。在一个实施例中,当节点请求数据时,发请求的节点向系统的所有其它节点广播对数据的请求(例如,PRIL消息)(410)。在可替换的实施例中,可以将所述请求传输到系统内的节点的子集,或经由网络连接传输到其它节点。

供多处理器系统中的高速缓存同步中使用的转发状态第8张

从系统中的其它节点那里接收响应消息(415)。正如上面所论述的那样,所述响应消息可能采取几种形式。发请求的节点将从不具备被请求数据的有效副本的系统中的节点那里接收一个或多个xACK(例如,IACKSACK)消息。发请求的节点还将从具有处于F状态下的被请求数据的副本的本地节点或对等节点那里接收DATAx(例如,DataFDataM)消息。

如果已经接收到所有的响应(420),则发请求的节点就随已标识的冲突列表一起向本地节点发送READ消息或CANCEL消息(425)。如果ACK消息是接收自本地节点的(430),那么就在DATA消息所表示的状态下存储数据。如果XFER消息是接收自本地节点而非ACK消息的话(440),那么发请求的节点就处理来自于本地节点的XFER消息。

响应于XFER消息,发请求的节点向XFER消息所表示的节点发送DATA消息(445)。如果XFER消息表明所述数据应被无效(450),那么发请求的节点就使所保留的数据的副本无效(455)。如果XFER消息没有令发请求的节点使数据的副本无效(450),那么发请求的节点就在S状态下存储所述数据(460)

节点的示例实施例图5是节点的一个实施例的框图。节点500是以单个处理器、高速缓冲存储器、存储器控制器和存储器来举例说明的;然而,任何组件中的许多组件都能够被包含在节点当中。此外,还可以将附加的和/或不同的组件(例如,总线桥)包含在节点中。

供多处理器系统中的高速缓存同步中使用的转发状态第9张

处理器510可以是本领域中所公知的任何类型的处理器。在一个实施例中,处理器510包含高速缓冲存储器520。在可替换的实施例中,高速缓冲存储器520是位于处理器510之外的,并且/或者可以在处理器510之内或之外包含附加的高速缓冲存储器。

存储器控制器530与高速缓冲存储器520和存储器540相耦合。存储器控制器530作为处理器510、高速缓冲存储器520与存储器540之间的接口来进行操作。在一个实施例中,存储器控制器530根据这里所述的高速缓存同步协议来维护高速缓存同步。存储器控制器530经由节点链接550与其它节点进行交互。在可替换的实施例中,处理器510与存储器控制器530进行交互以维护如这里所述的高速缓存同步,并且处理器510经由可替换的节点链接555来与其它节点进行交互。

多处理器系统的示例实施例图6是多处理器系统的一个实施例。多处理器系统600是用来表示具有多个处理器的系统的范围,例如计算机系统、实时监控系统等等。可替换的多处理器系统可以包括更多的、更少的和/或不同的组件。在某些情形中,可以将这里所述的高速缓存管理技术应用于单个处理器和多处理器系统两者。可以把多处理器系统600配置成作为多节点系统进行操作。

供多处理器系统中的高速缓存同步中使用的转发状态第10张

多处理器系统600包括总线系统610或其它通信设备以传递信息。总线系统610可以包括许多总线和相关的互连电路(例如总线桥)。处理器620与总线系统610相耦合以处理信息。处理器620可以包括高速缓冲存储器622(例如零电平(LO)高速缓冲存储器)和高速缓存控制器624。在一个实施例中,处理器620还与高速缓存625相耦合,所述高速缓存625可以是任何类型的高速缓冲存储器。在可替换的实施例中,高速缓存625可以与总线系统610相耦合。还可以使用其它类型的处理器高速缓存配置。

在一个实施例中,高速缓存控制器624经由高速缓冲存储器接口628与高速缓冲存储器622相耦合,所述高速缓冲存储器接口628例如可以是到处理器620内部的总线。高速缓存控制器经由高速缓存接口626与高速缓冲存储器625相耦合,所述高速缓存接口626提供了处理器620和外部高速缓冲存储器之间的接口。

多处理器系统600还包括具有高速缓冲存储器632和高速缓存控制器634的处理器630。高速缓存控制器634经由高速缓存接口638与高速缓冲存储器632相耦合。同样,高速缓存控制器634经由高速缓存接口636与高速缓冲存储器635相耦合。在一个实施例中,高速缓冲存储器635与处理器630相耦合。

虽然多处理器系统600是以两个处理器来举例说明的,但是多处理器系统600能够包括许多处理器和/或协处理器。多处理器系统600还包括与总线系统610相耦合的存储系统640。在适当的情况下,存储系统640能够包括动态(例如,随机存取存储器)和静态(例如,只读存储器、CD-ROM、盘式存储器、快闪存储器)存储装置与相关的驱动器的任何组合。使用存储系统640的存储装置来存储将由多处理器系统600的处理器执行的信息和指令。还可以在由处理器执行指令期间使用存储系统640来存储临时变量或其它中间信息。

可以经由有线或无线的远程连接等等、从静态或远程存储装置那里向存储系统640提供指令,所述存储装置比如像磁盘、只读存储器(ROM)集成电路、CD-ROMDVD。在可替换的实施例中,可以代替软件指令或与软件指令相结合地使用硬件实现的电路。因此,指令序列的执行不限于任何特定的硬件电路和软件指令的组合。

多处理器系统600还包括用于提供对诸如局域网和/或因特网之类的网络的访问的网络接口650。网络接口650能够提供无线和/或有线的网络接口,所述网络接口能够包括向和/或来自远程电子可访问介质的指令的通信。电子可访问介质包括以电子装置(例如,计算机、个人数字助理、蜂窝式电话)可读的形式提供(即,存储和/或传输)内容(例如,计算机可执行指令)的任何机构。

例如,机器可访问介质包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;快闪存储装置;电学、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号)

多处理器系统600还可以包括用于显示信息的显示装置660,比如阴极射线管(CRT)或液晶显示器(LCD)。输入装置670例如包括具有字母数字键及其它键的键盘,该输入装置670被典型地耦合到总线610以向处理器620/630传递信息和命令选择。另一种类型的用户输入装置是用于向处理器620630传递方向信息和命令选择并用于控制显示装置660上的光标移动的光标控制装置(比如鼠标、跟踪球或光标方向键)

结论在说明书中对一个实施例实施例的引用意指结合实施例所描述的特定的特征、结构或特性是包含在本发明的至少一个实施例当中的。短语在一个实施例中在说明书中的不同地方的出现未必都是指同一个实施例。

在上述说明书中,已经参照本发明的特定实施例描述了本发明。然而,显然在不背离本发明的更宽泛的精神和范围的情况下能够对本发明作出各种不同的修改和变化。所以,应该把说明书和附图视作为说明性的而非限制性的。可以将F状态用在基于总线的多处理器系统中。

SRC=https://www.google.com.hk/patents/CN1729458A

免责声明:文章转载自《供多处理器系统中的高速缓存同步中使用的转发状态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面试官:ThreadLocal的应用场景和注意事项有哪些?openssl之EVP系列之10---EVP_Sign系列函数介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CPU高速缓存行与内存关系 及并发MESI 协议

先来一个整体图 一. 大致关系: CPU Cache --> 前端总线 FSB (下图中的Bus) --> Memory 内存 CPU 为了更快的执行代码。于是当从内存中读取数据时,并不是只读自己想要的部分。而是读取足够的字节来填入高速缓存行。根据不同的 CPU ,高速缓存行大小不同。如 X86 是 32BYTES ,而 ALPHA 是 64...

文件系统中对页高速缓存的操作

本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要继续研究。 1.具体文件系统 我们知道通用文件系统也就是虚...

内存管理:01存储器层次结构

         在日常的编程中,我们简单的把存储器系统看成一个线性的字节数组,但实际的存储系统并不是这样的。          存储器系统是一个由具有不同容量,不同成本,不同访问时间的若干存储设备组成的层次结构,从上到下依次是:寄存器,高速缓存存储器,主存,硬盘,网络文件。层次越高,容量越小,成本越高,访问时间越短,高层的存储设备是底层存储设备的缓存区。...

linux free 命令

free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。 如果加上 -h 选项,输出的结果会友好很多: 有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数: $ free -h -s 3 上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。(Ubuntu 16.04 中...

计组-高速缓存

高速缓存 为了减低成本,增加cpu访问主存的性能,一般都会在主存与cpu之间增加小容量的缓存,可以采用这种方式的一个很主要原因就是程序执行的局部性。 程序的局部性 自我理解程序的局部性就是大多数时候程序都是按照代码一行行的执行可能发生条件转移指令但是程序跳转的范围也不是特别的大。比如for循环情况 for(int i = 0 ; i < 1000 ;...

32位x86处理器编程架构

1. IA-32架构的基本执行环境 1.1 寄存器的扩展   为了在汇编语言程序中使用经过扩展(Extend) 的寄存器:  在32位模式下,为了生成32位物理地址,处理器需要使用32位的指令指针寄存器。标志寄存器也扩展到32位,第16位和原先保持一致。  32位处理器依然需要以段位单位访问内存,即,只分一个段,段地基地址是0x00000000,段地长度(...