CN1447257A - 分布式共享内存系统数据维护方法 - Google Patents

分布式共享内存系统数据维护方法 Download PDF

Info

Publication number
CN1447257A
CN1447257A CN03109390.6A CN03109390A CN1447257A CN 1447257 A CN1447257 A CN 1447257A CN 03109390 A CN03109390 A CN 03109390A CN 1447257 A CN1447257 A CN 1447257A
Authority
CN
China
Prior art keywords
data
node
external cache
internal memory
memory
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.)
Granted
Application number
CN03109390.6A
Other languages
English (en)
Other versions
CN1277226C (zh
Inventor
陈维龙
曾纹郁
赖瑾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1447257A publication Critical patent/CN1447257A/zh
Application granted granted Critical
Publication of CN1277226C publication Critical patent/CN1277226C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] 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

分布式共享内存系统数据维护方法
技术领域
本发明涉及一种分布式共享内存(Distributed Shared Memory,DSM)系统数据维护方法,特别涉及一种应用于具有外部高速缓存(或称为L3高速缓存)的分布式共享内存系统的数据维护方法。
背景技术
随着渐渐接近处理器及存取速度的物理极限,用多个处理器来增强计算机整体运算能力的做法,变得越来越有吸引力。其中,就以具有多个处理器的并行处理结构而言,有两种系统较为普遍:一是紧密耦合(tightly coupled)的并行处理系统;另一为松散耦合(loosely coupled)的并行处理系统。
一个紧密耦合的并行处理系统包括有:多个CPU及一个可供所有CPU存取的内存,这种结构可视为由单个CPU系统所自然扩展所致,故其比较容易设计。但是,这种类型的并行处理系统存在一个很严重的瓶颈:即,通过一条共享的总线而使多个CPU在其上进行存取动作,将会限制整体的系统规模;而且,连接过多的CPU将增加了总线的负担。
相反地,松散耦合并行处理系统则没有上述紧密耦合并行处理系统所衍生的问题。松散耦合的并行处理系统是通过一个高速的网络来连接许多独立的计算器而组成的系统。如果设计人员精心设计网络的拓扑结构,松散耦合的并行处理系统往往可以比一个紧密耦合的并行处理系统更容易扩充规模,其可包含更多数量的处理器。但是,这种系统的所有通讯,都必须同时在网络上进行,故为达到一定的运作效率,整体结构的设计难度将较上述紧密耦合并行处理系统高出许多。
为克服上述两种并行处理系统的缺陷,一种新的分布式共享内存(Distributed Shared Memory,DSM)系统即被提出。分布式共享内存系统可同时兼有紧密耦合并行处理系统容易设计和松散耦合并行处理系统容易扩充规模的优点。所以,从1980年代初开始,分布式共享内存系统就一直是很活跃的研究领域,目前已有多个原型系统被实现。其中,以Cache CoherencyNon-Uniform Memory Access(ccNUMA)方式所构成的分布式共享内存系统,即是本发明的研究重点所在。
图1为以ccNUMA方式所构成的分布式共享内存系统10的结构示例图。其中,本发明所公开的分布式共享内存系统10,是以四个节点(包括一第一~第四节点11~14)为例,并通过一网络结构15而相互连结在一起。而且在该第一~第四节点11~14内部都各包括有:至少一处理器(例如,包括两个处理器111、112或121、122或131、132或141、142)、一可控制输入/输出内存控制芯片(为图1中标示113、123、133、143)、一本地内存(为图1中标示1131、1231、1331、1431)、一DSM控制器(为图1中标示114、124、134、144)、一外部高速缓存(又称为L3高速缓存,且为图1中标示1141、1241、1341、1441)、一系统总线(为图1中标示115、125、135、145)以及一内部总线(为图1中标示116、126、136、146);其中,该本地内存1131、1231、1331、1431各都可区分为多个本地内存(local memory line),以各自储存多笔数据。另外,该外部高速缓存1141、1241、1341、1441亦都可区分为多个外部高速缓存(cache memory line),以各自储存多笔外部高速缓存数据。当然,任意一节点中的这些多笔外部高速缓存数据,为来自其它节点本地内存中的数据,可节省该任意一节点存取其它节点本地内存中数据的时间。
另外,每一个节点的DSM控制器114、124、134、144,都必须维护储存其中的一内存储存区一致性(memory coherency)对照表(图未示出),以记录各节点中每一本地内存内所有本地内存的状态,当任意一节点要读取某一本地节点特定本地内存时,方可根据对照表中所记录的特定本地内存中的数据状态,来决定读取动作如何进行,以确保读取正确数据。同时,每一个节点的DSM控制器都必须维护一快取内存储存区一致性(cache memorycoherency)对照表(图未示出),以记录各节点中每一外部高速缓存内所有外部高速缓存的状态,当任意一节点要读取某一本地节点特定外部高速缓存时,方可根据对照表中所记录的特定外部高速缓存中的数据状态,来决定读取动作如何进行,以确保读取正确数据。
图1中每一个节点的DSM控制器因都通过该网络结构15与其它节点的DSM控制器相电连接,故各节点相互间通讯的数据传输格式通常选择诸如TCP/IP之类的网络通讯协议作为彼此的沟通媒介。
由于图1所示结构中使用到这些外部高速缓存1141、1241、1341、1441,对于如何使任意一节点都能充分利用自身所具有的外部高速缓存的高速特性,减少对系统总线115、125、135、145发出存取数据请求(request)的次数,以节省系统总线115、125、135、145的运作负荷,正是本发明所要解决与关心的重点所在。
进一步讨论公知高速内存储存区一致性对照表中针对任意一特定外部高速缓存中的数据存取状态可区分为六种状态,分别说明如下:
CLEAN:表示该特定外部高速缓存中的数据是同时储存于一本地节点的外部高速缓存以及一远程节点(或称为来源节点(home node))中,且该特定外部高速缓存中的数据尚未被本地节点中的一特定处理器所更改;另外,该特定处理器专属拥有该特定外部高速缓存中的数据。
FRESH:表示拥有该特定外部高速缓存中数据的任意一节点(不论是属于远程节点或来源节点),都未更改且不专属拥有该特定外部高速缓存中的数据。
DIRTY:表示该特定外部高速缓存中的数据是储存于该本地节点的外部高速缓存中,并已被该本地节点中的一特定处理器所更改以及专属拥有,而与位于来源节点内的同一笔原始数据不相同。
VOID:表示该特定外部高速缓存中的数据已无效,原本其所储存于该本地节点的外部高速缓存位置,可供写入其它新的外部高速缓存中的数据。
IDLE:表示该本地节点的外部高速缓存中储存该特定外部高速缓存中的数据的位置,正处于等待写入新的外部高速缓存中的数据的过渡状态。
STALE:表示该本地节点的外部高速缓存中储存该特定外部高速缓存中的数据,正处于等待被删除的过渡状态。
公知的高速内存储存区一致性对照表中的存取状态所引发的缺陷为:在DIRTY状态下,同属于该本地节点中的其它处理器如要使用该特定外部高速缓存中的数据,因为此时该特定外部高速缓存中的数据已被该本地节点中的一特定处理器所专属拥有,故其它处理器只能再次发出系统总线请求,以向位于同一节点内拥有该特定外部高速缓存中的数据的特定处理器索取数据,如此一来,显将增加节点内部系统总线的工作负荷,进而降低系统的运作效率。
另外,目前任意两节点间平行处理数据的存取死锁(dead lock)问题,是由操作系统(O.S.)来解决。然而,一旦操作系统发生不稳定或其它因素而未能及时处理该项存取死锁的状况,即会有导致该分布式共享内存系统10当机,如此一来,显将降低该分布式共享内存系统10运作的可靠度。
本发明的主要目的,即在提供一种新的外部高速缓存存取状态分类,以减少发出系统总线请求次数的分布式共享内存系统数据维护方法。
本发明的另一目的,即在提供一种新的外部高速缓存存取状态分类,以解决平行处理数据存取死锁(dead lock)问题的分布式共享内存系统的数据维护方法。
发明内容
本发明所要解决的技术问题为提供一种分布式共享内存数据维护方法,应用于具有至少两个分布式共享内存节点的分布式共享内存系统内部,且任意一节点的一外部高速缓存可储存其它节点的一特定本地内存中的数据,该方法至少包括下列步骤:判断该外部高速缓存中所储存的特定本地内存中的数据,是否被该任意一节点的一特定处理器所更改;当该特定本地内存中的数据被该特定处理器更改时,判断该任意一节点的其它处理器是否可共享特定处理器更改该特定本地内存中的数据后所产生的一最新数据;以及当其它处理器可共享该最新数据时,由该任意一节点内的一总线,直接向特定处理器索取最新数据。
根据本发明上述构想,其中该任意一节点具有至少两个处理器,且至少两个处理器都电连接于该总线。
根据本发明上述构想,其中该总线可为一系统总线。
根据本发明上述构想,其中该任意一节点具有一本地内存,电连接于任意一节点所具有的一内存控制芯片,且本地内存可区分为多个本地内存,以储存多笔数据。
根据本发明上述构想,其中该任意一节点所具有的外部高速缓存电连接于任意一节点所具有的一DSM控制器,该外部高速缓存可区分为多个外部高速缓存,以储存多笔其它节点所拥有的本地内存中的数据。
根据本发明上述构想,其中任意两节点间的电连接路径,可用一网络方式连接。
根据本发明上述构想,其中该网络通讯协议可使用TCP/IP网络通讯协议。
根据本发明上述构想,其中还包括下列步骤:当其它处理器不可共享最新数据时,该最新数据可提供给特定处理器专属使用。
根据本发明上述构想,其中该最新数据的存取状态,可储存于一外部高速缓存储存区一致性(cache memory coherency)对照表。
根据本发明上述构想,其中还包括下列步骤:当该外部高速缓存中所储存的特定本地内存中的数据,被任意一节点中的任意一处理器所更改或存取而使该外部高速缓存储存区一致性对照表中相对应的一第一存取状态转为一第二存取状态时,判断储存有该特定本地内存中的数据来源节点的任意一处理器,是否正使该特定本地内存中的数据的一本地内存存取状态处于一过渡转换阶段;以及当该特定本地内存中的数据正处于过渡转换阶段时,使该第二存取状态恢复为第一存取状态。
关于本发明的另一较佳实施方式,也是应用于具有至少两个分布式共享内存节点的分布式共享内存系统内部,且任意一节点的一外部高速缓存可储存其它节点的一特定本地内存中的数据,该方法至少包括下列步骤:判断该外部高速缓存中所储存的特定本地内存中的数据存取状态是否为CLEAN状态;当该特定本地内存中的数据存取状态为CLEAN状态时,如该特定本地内存中的数据被任意一节点的一特定处理器所更改,该特定本地内存中的数据存取状态将由CLEAN状态转为DIRTY-SHARED状态或DIRTY-ONLY状态中的一种;  以及当该特定本地内存中的数据的存取状态为DIRTY-SHARED状态时,该任意一节点的其它处理器可由任意一节点内的一总线,直接向该特定处理器索取最新数据。
根据本发明上述构想,其中该任意一节点具有至少两个处理器,且至少两个处理器都电连接于总线。
根据本发明上述构想,其中该总线可为一系统总线。
根据本发明上述构想,其中该任意一节点具有一本地内存,电连接于该任意一节点所具有的一内存控制芯片,且该本地内存可区分为多个本地内存中,以储存多笔数据。
根据本发明上述的构想,其中该任意一节点所具有的外部高速缓存电连接于任意一节点所具有的一DSM控制器,该外部高速缓存可区分为多个外部高速缓存,以储存多笔其它节点所拥有的本地内存中的数据。
根据本发明上述构想,其中任意两节点间的电连接路径,可用一网络方式连接。
根据本发明上述构想,其中该网络的通讯协议可使用TCP/IP网络通讯协议。
根据本发明上述构想,其中还包括下列步骤:当该特定本地内存中的数据存取状态为DIRTY-ONLY状态时,该最新数据可提供给特定处理器专属使用。
根据本发明上述构想,其中该最新数据存取状态,储存在一外部高速缓存储存区一致性(cache memory coherency)对照表。
根据本发明上述构想,其中还包括下列步骤:当该外部高速缓存中所储存的特定本地内存中数据,被任意一节点中的任意一处理器所更改或存取而使外部高速缓存储存区一致性对照表中相对应的一第一存取状态转为一第二存取状态时,判断储存有特定本地内存中的数据的来源节点任意一处理器,是否正使特定本地内存中数据的一本地内存存取状态处于一过渡转换阶段;以及当特定本地内存中的数据正处于过渡转换阶段时,使第二存取状态恢复为第一存取状态。
根据本发明上述构想,其中该第一存取状态可为VOID状态,而第二存取状态可为IDLE状态。
根据本发明上述构想,其中该第一存取状态可为FRESH状态,而第二存取状态可为IDLE状态。
为使本发明的目的、构造特征及其功能有进一步的了解,配合附图详细说明如下:
附图说明
图1为分布式共享内存系统结构示例图。
图2为本发明中因响应本地存取指令而使外部高速缓存储存区一致性对照表中所相对应的外部高速缓存中的数据存取状态产生变化的状态图。
图3为本发明中因响应远程访问指令而使外部高速缓存储存区一致性对照表中所相对应的外部高速缓存中的数据存取状态产生变化的状态图。
图4为本发明中因响应本地存取指令、释放(Rollout)指令以及与释放指令相关确认信号而分别使本地与外部高速缓存储存区一致性对照表中所相对应的本地与外部高速缓存中的数据存取状态产生变化的状态图。
具体实施方式
基于公知高速内存储存区一致性对照表中针对任意一特定外部高速缓存中的数据存取状态仅可区分为六种状态缺陷,本发明拟将增加为七种状态,并分别说明如下:
CLEAN:表示该特定外部高速缓存中的数据是同时储存于一本地节点的外部高速缓存以及一远程节点(或称为来源节点(home node),且其为该特定外部高速缓存中的数据的原始储存节点)中,且该特定外部高速缓存中的数据尚未被该本地节点中的一特定处理器所更改;另外,该特定处理器专属拥有特定外部高速缓存中的数据。
FRESH:表示拥有该特定外部高速缓存中的数据任意一节点(不论是属于本地节点或来源节点),都未更改且未专属拥有特定外部高速缓存中的数据。
DIRTY-ONLY:表示该特定外部高速缓存中的数据是储存于本地节点的外部高速缓存中,并已被本地节点中的特定处理器所更改以及专属拥有,而与位于来源节点内的同一笔原始数据不相同。
DIRTY-SHARED:表示该特定外部高速缓存中的数据储存于本地节点的外部高速缓存中,并已被该本地节点中的特定处理器所更改过,而与位于来源节点内的同一笔原始数据不相同;且,该本地节点中的其它处理器也可存取该份已更改过的数据。
VOID:表示该特定外部高速缓存中的数据已无效,原本其所储存于本地节点的外部高速缓存位置,可供写入其它新的外部高速缓存中的数据。
IDLE:表示该本地节点的外部高速缓存中储存特定外部高速缓存中的数据位置,正处于等待写入新的外部高速缓存中的数据过渡状态。
STALE:表示该本地节点的外部高速缓存中储存特定外部高速缓存中的数据,正处于等待被删除过渡状态。
显然地,由本发明所增加的DIRTY-SHARED状态,当可使位于同一节点内的其它处理器,可直接存取同一节点内的某一处理器所更改过的数据,以减少向图1中的系统总线115、125、135、145发出存取数据请求(request)次数。
当然,本发明上述七种存取状态会因响应由处理器所发出的本地存取指令以及远程访问指令,而产生各种状态变化。以下先说明与本发明有关的各种本地存取指令与远程访问指令种类,以及与该本地内存1131、1231、1331、1431(请参阅图1所示者)的任意一本地内存中的数据有关并储存于储存区一致性对照表中的存取状态种类。之后,再以图2~4所示的状态图(statediagram),进一步公开本发明所提出新的外部高速缓存存取状态的操作方式。
首先,与本发明有关的本地存取指令种类有:
BRL(local bus read line):代表一本地节点内部处理器所下达的本地读取指令。
BRL(hit#):代表一本地节点内部处理器所下达的本地读取指令,且该特定外部高速缓存中的数据已储存于本地节点内部以及尚未被处理器更改。
BRL(hitm#):代表一本地节点内部处理器所下达的本地读取指令,且该特定外部高速缓存中的数据已储存于本地节点内部以及已被处理器更改。
BRIL(local bus read invalidate line):代表一本地节点内部处理器所下达的本地读取无效指令。
BRIL(hit#):代表一本地节点内部处理器所下达的本地读取无效指令,且该特定外部高速缓存中的数据已储存于本地节点内部以及尚未被处理器更改。
BRIL(hitm#):代表一本地节点内部处理器所下达的本地读取无效指令,且该特定外部高速缓存中的数据已储存于本地节点内部以及已被处理器更改。
BIL(local bus invalidate line):代表一本地节点内部处理器所下达的本地无效指令。
BWL(local bus write line):代表本地节点内部处理器所下达的本地写入指令。
再则,与本发明有关远程访问指令的种类有:
LRL(remote read line):代表一远程节点内部处理器所下达的远程读取指令。
LRIL(remote read invalidate line):代表一远程节点内部处理器所下达的远程读取无效指令。
LIL(remote invalidate line):代表一远程节点内部处理器所下达的远程无效指令。
RTY BOP(BIL):代表一远程节点内部处理器所下达的退回前次存取状态的退回指令;其可使一本地节点中因BIL指令所引起的外部高速缓存中的数据存取状态,退回尚未产生BIL指令时的存取状态。
RTY BOP(BRL,BRIL):代表一远程节点内部处理器所下达的退回前次存取状态的退回指令;其可使一本地节点中因BRL或BRIL指令所引起外部高速缓存中的数据存取状态,退回尚未产生BRL或BRIL指令时的存取状态。
ROD(Rollout DIRTY):代表一本地节点内部处理器下达给一远程节点的释放指令;其可使储存于本地节点内部且其存取状态已由CLEAN、DIRTY-SHARED或DIRTY-ONLY状态转成STALE状态的外部高速缓存中的数据,其位于远程节点(或称之为来源节点)内部的同一笔原始数据,由GONE状态改为HOME状态。
ROF(Rollout FRESH):代表一本地节点内部处理器下达给一远程节点的释放指令;其可使储存于本地节点内部且其存取状态已由FRESH状态转成STALE状态的外部高速缓存中的数据,其位于远程节点(或称之为来源节点)内部的同一笔原始数据,由SHARED状态改为HOME状态。
另外,本发明中这些本地内存1131、1231、1331、1431中的任意一者(请参阅图1所示者)的任意一本地内存中的数据,其存取状态种类分别说明如下:
HOME:代表没有任意何远程节点来读取本地内存中的数据,且本地内存中的最新数据已经储存在一本地内存内。
SHARED:代表已有其它远程节点已读取本地内存中的数据,且本地内存中的数据尚未被更改。
GONE:代表已有远程节点已读取本地内存中的数据,且本地内存中的数据已被远程节点所更改。
WASH:代表被更改过的本地内存中的数据由远程节点回传到本地节点的过渡状态。
图2为本发明中因响应本地存取指令而使外部高速缓存储存区一致性对照表中所相对应的外部高速缓存中的数据存取状态产生变化的状态图。
现再以图1中第一节点11为一本地节点,且第二节点12为一远程节点为例,因响应上述这些本地存取指令后所可能产生的各种变化,配合图2所示而对本发明的重点部分举例说明如下:
假设有一特定本地内存中的数据储存于第二节点12的本地内存1231中,第二节点12对于特定本地内存中的数据而言,即属于来源节点(homenode)。因此,一旦该第一节点11中的任意一处理器向第二节点12索取特定本地内存中的数据后,这份数据即会由网络结构15而被储存于外部高速缓存1141内。此时这份数据对于第一节点11而言,即属于一特定外部高速缓存中的数据。
当第一节点11中的第二处理器112发出本地存取指令BRL至系统总线115时,由于特定外部高速缓存中的数据已位于外部高速缓存1141,故属于快取命中(cache hit)的情形(于图2中以BRL(hit#)表示),该特定外部高速缓存中的数据即将被直接读至第二处理器112内部。至于特定外部高速缓存中的数据存取状态,如果这份数据为第二处理器112所专属拥有时,其存取状态将设为CLEAN状态。
在CLEAN状态下,如果第二处理器112想要更改特定外部高速缓存中的数据时,第二处理器112可发出本地存取指令BRIL至系统总线115,由于特定外部高速缓存中的数据已位于外部高速缓存1141,故也属于快取命中(cache hit)。然而,因第二处理器112会更改这份数据(于图2中以BRIL(hitm#)表示),该特定外部高速缓存中的数据不但将被直接读至第二处理器112内供其专属拥有这份数据,该特定外部高速缓存中的数据存取状态也将由CLEAN状态转为DIRTY-ONLY状态。
本发明与公知技术的差别在于,在CLEAN状态下,如果第二处理器112想要更改特定外部高速缓存中的数据,但可与同一节点内的其它处理器(例如,图1中所示的处理器111)共同分享这份数据时,第二处理器112可发出本地存取指令BRL至系统总线115,由于特定外部高速缓存中的数据已位于外部高速缓存1141,故也属于快取命中(cache hit)。然而,因第二处理器112会更改这份数据(于图2中以BRIL(hitm#)表示),特定外部高速缓存中的数据不但将被直接读至第二处理器112,特定外部高速缓存中的数据的存取状态也将由CLEAN状态转为DIRTY-SHARED状态。如此一来,在处理器111需要存取该份数据时,即不必再向系统总线115发出存取数据请求(request)来要求该处理器112解除其专属拥有的限制,而可直接至外部高速缓存1141中存取这份数据。这样做法显然将可有效降低系统总线115的运作负荷。
至于图1中标示B_ACK(BRL)指特定外部高速缓存中的数据存取状态为VOID时,因响应本地节点所产生的本地存取指令BRL而先被设为过渡状态:IDLE,一旦本地存取指令BRL被执行完毕后,即会因响应由本地节点所发出的确认(Acknowledge)信号B_ACK而被设定为FRESH状态。同理,图1中标示B_ACK(BRIL,BIL)之意义,系指该特定外部高速缓存中的数据之存取状态为FRESH时,因响应本地节点所产生的本地存取指令BRIL或BIL而先被设定为过渡状态:IDLE,一旦本地存取指令BRIL或BIL被执行完毕后,即会因响应由本地节点所发出的确认信号B_ACK而被设为CLEAN状态。当然,图1中标示B_ACK(BWL)指特定外部高速缓存中的数据存取状态为CLEAN或DIRTY-ONLY时,因响应本地节点所产生的本地存取指令BWL而先被设定为过渡状态:STALE,一旦本地存取指令BWL被执行完毕后,即会因响应由本地节点所发出的确认信号B_ACK而被设为VOID状态。
至于其它存取状态因响应不同本地存取指令所产生的状态变化,任意何熟悉本技艺的人士参阅上述关于本发明的说明后,应都可知悉其中详细运作原理,在此即不再以赘述。
图3为本发明中因响应远程访问指令而使外部高速缓存储存区一致性对照表中所相对应的外部高速缓存中的数据存取状态产生变化的状态图(statediagram)。
本发明的另一重点所在为不必依靠操作系统(O.S.)而可直接解决任意两节点间平行处理数据的存取死锁(dead lock)问题。此部份与图3中所示的退回指令RTY_BOP(BIL)与RTY_BOP(BRL,BRIL)的运作情形密切相关。现以图1中的第一节点11为一本地节点并发出本地存取指令BRL,且第二节点12为一远程节点为例,辅以图3中因响应退回指令RTY_BOP后所产生的变化举例说明如下:
假设有一特定本地内存中的数据储存于第二节点12的本地内存1231中,第二节点12对于特定本地内存中的数据而言,即属于来源节点(homenode)。因此,一旦第一节点11中的任意一处理器向第二节点12索取特定本地内存中的数据后,这份数据即会由网络结构15而被储存于外部高速缓存1141内。此时这份数据对于第一节点11而言,即属于一特定外部高速缓存中的数据。
再则,如果被储存于外部高速缓存1141内的这份数据存取状态被设定为VOID,表示特定外部高速缓存中的数据已无效,原本其所储存于第一节点11的外部高速缓存1141位置,即可供写入其它新的外部高速缓存中的数据。
接下来,一旦第一节点11中的处理器111或112向系统总线115发出本地存取指令BRL要读取特定外部高速缓存中的数据时,因特定外部高速缓存中的数据已被设定为VOID表示无效,故第一节点11即需再一次向第二节点12中的本地内存1231索取特定外部高速缓存中的原始数据,并予以填入原本储存于外部高速缓存1141内部的位置。因此,此时特定外部高速缓存中的数据的存取状态可由VOID状态转变成IDLE状态。
如果此时本地内存1231中的这份同一笔原始数据,正被第二节点12中的处理器121或122进行存取而处于一过渡状态(例如,处于一WASH状态)时,第二节点12即会发出退回RTY_BOP指令给第一节点11,以告知这份原始数据尚不能从第二节点12被传送到第一节点11。第一节点11为了避免一直处于等待状态,在接收到来自第二节点12所发出的退回RTY_BOP指令后,即会将特定外部高速缓存中的数据存取状态由IDLE状态退回到原先的VOID状态(即图3中标示RTY_BOP(BRL,BRIL)处的存取状态变化)。
倘若面临第一、第二节点11、12同时要向对方节点索取数据,而这份数据又正处于被对方节点使用的过渡状态时,第一、第二节点11、12将可及时因响应对方节点所发出的退回指令,而使各自节点中数据的存取状态退回到原先未改变前的存取状态,避免出现所谓存取死锁(dead lock)的问题。
至于其它存取状态因响应不同远程访问指令所产生的状态变化,任意何熟悉本技艺人士可参阅上述关于本发明说明后,应都可知悉其中详细运作原理,在此即不再赘述。
再进一步而论,现针对图3中确认L_ACK(ROD、ROF)信号的运作情形,以图4说明如下:
图4为本发明中因响应本地存取指令、远程访问指令中的释放(Rollout)指令(即图3、4中所标示的ROD、ROF)以及与释放指令相关的确认信号而分别使本地与外部高速缓存储存区一致性对照表中所相对应的本地与外部高速缓存中的数据存取状态产生变化的状态图。假设图4中所标示的节点B(例如,可视为图1中所示的远程节点:第二节点12)有一特定本地内存的数据,已被图4中所标示的节点AA(例如,可视为图1中所示的本地节点:第一节点11)所读取,则这份数据将被储存于外部高速缓存1141,且对于第一节点11而言,其表示为一特定外部高速缓存中的数据。
此时,如果希望执行将第一节点11(节点A)中特定外部高速缓存中的数据释放(Rollout)回到第二节点12(节点B)的目的,则因响应特定外部高速缓存中的数据所处的存取状态,以及位于来源节点中的同一笔原始数据存取状态,将会有不同的状态变化。
若在第一节点11(节点A)中特定外部高速缓存中的数据,其存取状态处于CLEAN、DIRTY-SHARED或DIRTY-ONLY状态,而且第二节点12(节点B)中的同一笔原始数据处于GONE状态时,第一节点11(节点A)因响应内部的任意一处理器所发出的本地存取指令BIL或BRIL,即可使特定外部高速缓存中的数据,其存取状态都改为STALE状态,以表示位于第一节点11(节点A)中的特定外部高速缓存中的数据等待被删除。之后,第一节点11(节点A)向该第二节点12(节点B)发出ROD释放指令,以将位于第一节点11(节点A)中的特定外部高速缓存中的数据写回到第二节点12(节点B)。当然,位于第二节点12(节点B)内部的同一笔原始数据,会因响应ROD释放指令,而由GONE状态改为HOME状态。紧接着位于第一节点11(节点A)中的特定外部高速缓存中的数据全部写回到第二节点12(节点B)后,第二节点12(节点B)将向第一节点11(节点A)发出一确认信号L_ACK(即图4中标示L_ACK(ROD)处存取状态的变化),以使位于第一节点11(节点A)中的特定外部高速缓存中的数据存取状态,由STALE状态改为VOID状态,并表示使特定外部高速缓存中的数据无效。此时,原先储存特定外部高速缓存中的数据位置,可供写入新的外部高速缓存中的数据。
同理,若在第一节点11(节点A)中的特定外部高速缓存中的数据,其存取状态处于FRESH状态,而且第二节点12(节点B)中的同一笔原始数据处于SHARED状态时,第一节点11(节点A)因响应内部的任意一处理器所发出的本地存取指令BIL,即可使特定外部高速缓存中的数据,其存取状态改为STALE状态,以表示位于第一节点11(节点A)中的特定外部高速缓存中的数据等待被删除。之后,第一节点11(节点A)向第二节点12(节点B)发出ROF释放指令,以表示第一节点11(节点A)要放弃内部的特定外部高速缓存中的数据。当然,位于第二节点12(节点B)内部的同一笔原始数据,会因响应ROF释放指令,而由GONE状态改为HOME状态。紧接着第二节点12(节点B)收到ROF释放指令后,即会立刻向第一节点11(节点A)发出一确认信号L_ACK(即图4中标示L_ACK(ROF)处存取状态的变化),以使位于第一节点11(节点A)中的特定外部高速缓存中的数据存取状态,由STALE状态改为VOID状态,并表示使特定外部高速缓存中的数据无效。此时,原先储存特定外部高速缓存中的数据位置,可供写入新的外部高速缓存中的数据。
综上所述,本发明将任意一节点内外部高速缓存中的数据,其存取状态种类增加一项:DIRTY-SHARED状态,即可有效降低系统总线的运作负荷;同时,本发明也可在不大幅增加操作复杂度的情况下,解决存取死锁(deadlock)问题。

Claims (22)

1、一种分布式共享内存数据维护方法,应用于具有至少两个分布式共享内存节点的分布式共享内存系统内部,且任意一节点的一外部高速缓存可储存其它节点一特定本地内存中的数据,该方法至少包括下列步骤:
判断外部高速缓存中所储存的特定本地内存中的数据,是否被任意一节点的一特定处理器所更改;
当特定本地内存中的数据被特定处理器更改时,判断任意一节点的其它处理器是否可共享特定处理器更改特定本地内存中的数据后所产生的一最新数据;以及
当其它处理器可共享最新数据时,由任意一节点内的一总线,直接向特定处理器索取最新数据。
2、如权利要求1所述分布式共享内存数据维护方法,其特征在于该任意一节点具有至少两个处理器,且至少两个处理器都电连接于总线。
3、如权利要求1所述分布式共享内存数据维护方法,其特征在于该总线可为一系统总线。
4、如权利要求1所述分布式共享内存数据维护方法,其特征在于该任意一节点具有一本地内存,电连接于任意一节点所具有的一内存控制芯片,且本地内存可区分为多个本地内存,以储存多笔数据。
5、如权利要求4所述分布式共享内存数据维护方法,其特征在于该任意一节点所具有的外部高速缓存电连接于任意一节点所具有的一DSM控制器,该外部高速缓存可区分为多个外部高速缓存,以储存多笔其它节点所拥有的本地内存中的数据。
6、如权利要求1所述分布式共享内存数据维护方法,其特征在于任意两节点间的电连接路径可用一网络方式连接。
7、如权利要求6所述分布式共享内存数据维护方法,其特征在于该网络的通讯协议可使用TCP/IP网络通讯协议。
8、如权利要求1所述分布式共享内存数据维护方法,其特征在于还包括下列步骤:
当其它处理器不可共享最新数据时,最新数据是提供给特定处理器专属便用。
9、如权利要求1所述分布式共享内存数据维护方法,其特征在于该最新数据的存取状态,储存于一外部高速缓存储存区一致性对照表。
10、如权利要求9所述分布式共享内存数据维护方法,其特征在于还包括下列步骤:
当该外部高速缓存中所储存的特定本地内存中的数据,被任意一节点中的任意一处理器所更改或存取而使外部高速缓存储存区一致性对照表中相对应的一第一存取状态转为一第二存取状态时,判断储存有特定本地内存中的数据来源节点的任意一处理器,是否正使特定本地内存中的数据一本地内存存取状态处于一过渡转换阶段;以及
当该特定本地内存中的数据正处于过渡转换阶段时,使第二存取状态恢复为第一存取状态。
11、一种分布式共享内存数据维护方法,应用于具有至少两个分布式共享内存节点的分布式共享内存系统内部,且任意一节点的一外部高速缓存可储存其它节点的一特定本地内存中的数据,该方法至少包括下列步骤:
判断该外部高速缓存中所储存的特定本地内存中的数据存取状态,是否为CLEAN状态;
当该特定本地内存中的数据的存取状态为CLEAN状态时,如果特定本地内存中的数据被任意一节点的一特定处理器所更改,该特定本地内存中的数据存取状态将由CLEAN状态转为DIRTY-SHARED状态或DIRTY-ONLY状态中一种;以及
当该特定本地内存中的数据的存取状态为DIRTY-SHARED状态时,该任意一节点的其它处理器可由任意一节点内的一总线,直接向特定处理器索取最新数据。
12、如权利要求11所述分布式共享内存数据维护方法,其特征在于该任意一节点具有至少两个处理器,且至少两个处理器都电连接于总线。
13、如权利要求11所述分布式共享内存数据维护方法,其特征在于该总线可为一系统总线。
14、如权利要求11所述分布式共享内存数据维护方法,其特征在于该任意一节点具有一本地内存,电连接于任意一节点所具有的一内存控制芯片,且该本地内存可区分为多个本地内存,以储存多笔数据。
15、如权利要求14所述分布式共享内存数据维护方法,其特征在于该任意一节点所具有的外部高速缓存电连接于任意一节点所具有的一DSM控制器,该外部高速缓存可区分为多个外部高速缓存,以储存多笔其它节点所拥有的本地内存中的数据。
16、如权利要求11所述分布式共享内存数据维护方法,其特征在于任意两节点间的电连接路径,可用一网络方式连接。
17、如权利要求16所述分布式共享内存数据维护方法,其特征在于该网络的通讯协议可使用TCP/IP网络通讯协议。
18、如权利要求11所述分布式共享内存数据维护方法,其特征在于还包括下列步骤:
当该特定本地内存中的数据的存取状态为DIRTY-ONLY状态时,该最新数据是提供给特定处理器专属使用。
19、如权利要求11所述分布式共享内存数据维护方法,其特征在于该最新数据的存取状态,是储存于一外部高速缓存储存区一致性对照表。
20、如权利要求19所述分布式共享内存数据维护方法,其特征在于还包括下列步骤:
当该外部高速缓存中所储存的特定本地内存中的数据,被该任意一节点中的任意一处理器所更改或存取而使外部高速缓存储存区一致性对照表中相对应的一第一存取状态转为一第二存取状态时,判断储存有特定本地内存中的数据来源节点的任意一处理器,是否正使特定本地内存中的数据的一本地内存存取状态处于一过渡转换阶段;以及
当该特定本地内存中的数据正处于过渡转换阶段时,使第二存取状态恢复为第一存取状态。
21、如权利要求20所述分布式共享内存数据维护方法,其特征在于该第一存取状态可为VOID状态,而第二存取状态可为IDLE状态。
22、如权利要求20所述分布式共享内存数据维护方法,其特征在于该第一存取状态可为FRESH状态,而第二存取状态可为IDLE状态。
CN03109390.6A 2002-04-09 2003-04-08 分布式共享内存系统数据维护方法 Expired - Lifetime CN1277226C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37120602P 2002-04-09 2002-04-09
US60/371,206 2002-04-09

Publications (2)

Publication Number Publication Date
CN1447257A true CN1447257A (zh) 2003-10-08
CN1277226C CN1277226C (zh) 2006-09-27

Family

ID=23462965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03109390.6A Expired - Lifetime CN1277226C (zh) 2002-04-09 2003-04-08 分布式共享内存系统数据维护方法

Country Status (5)

Country Link
US (1) US6931496B2 (zh)
CN (1) CN1277226C (zh)
DE (1) DE10316725B4 (zh)
GB (1) GB2390710B (zh)
TW (1) TW591526B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100414515C (zh) * 2004-11-12 2008-08-27 中国科学院计算技术研究所 一种网络内存服务系统及其构建方法
WO2009033419A1 (fr) * 2007-09-11 2009-03-19 Tencent Technology (Shenzhen) Company Limited Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données
CN100486178C (zh) * 2006-12-06 2009-05-06 中国科学院计算技术研究所 一种远程内存共享系统及其实现方法
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置
CN102436366A (zh) * 2011-08-22 2012-05-02 华为技术有限公司 数据同步方法和装置
CN104750658A (zh) * 2013-12-27 2015-07-01 英特尔公司 辅助式一致共享存储器
CN105743803A (zh) * 2016-01-21 2016-07-06 华为技术有限公司 一种共享缓存的数据处理装置
CN106647412A (zh) * 2017-01-17 2017-05-10 爱普(福建)科技有限公司 一种基于组态元件的分布式控制器之间的数据共享方法
WO2019047579A1 (zh) * 2017-09-11 2019-03-14 华为技术有限公司 数据访问的方法及装置

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565399B1 (en) * 2002-08-26 2009-07-21 Netapp, Inc. Caching web objects transformed by a pipeline of adaptation services
US20050010615A1 (en) * 2003-04-11 2005-01-13 Sun Microsystems, Inc. Multi-node computer system implementing memory-correctable speculative proxy transactions
WO2004092968A2 (en) * 2003-04-11 2004-10-28 Sun Microsystems, Inc. Multi-node system with global access states
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US8566533B1 (en) * 2009-09-30 2013-10-22 Netlogic Microsystems, Inc. System, method, and computer program product for conditionally sending a request for data to a node based on a determination
FR2989489B1 (fr) * 2012-04-16 2015-11-27 Commissariat Energie Atomique Systeme et procede de gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches.
CN106462360B (zh) * 2014-12-23 2019-10-25 华为技术有限公司 一种资源调度方法以及相关装置
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
TWI824847B (zh) * 2022-11-24 2023-12-01 新唐科技股份有限公司 記憶體分享裝置、方法、可分享記憶體以及其使用之電子設備

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
JPH0625984B2 (ja) * 1990-02-20 1994-04-06 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・システム
US5479630A (en) * 1991-04-03 1995-12-26 Silicon Graphics Inc. Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same
US6279084B1 (en) * 1997-10-24 2001-08-21 Compaq Computer Corporation Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US6081806A (en) * 1998-01-15 2000-06-27 Inventec Corporation Computer database synchronization method
TW378303B (en) * 1998-02-17 2000-01-01 Ibm Cache coherency protocol with tagged state and historical information

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100414515C (zh) * 2004-11-12 2008-08-27 中国科学院计算技术研究所 一种网络内存服务系统及其构建方法
CN100486178C (zh) * 2006-12-06 2009-05-06 中国科学院计算技术研究所 一种远程内存共享系统及其实现方法
WO2009033419A1 (fr) * 2007-09-11 2009-03-19 Tencent Technology (Shenzhen) Company Limited Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données
CN102265277B (zh) * 2011-06-01 2014-03-05 华为技术有限公司 数据存储系统的操作方法和装置
US9639588B2 (en) 2011-06-01 2017-05-02 Huawei Technologies Co., Ltd. Operation method and apparatus for data storage system
WO2011157156A3 (zh) * 2011-06-01 2012-04-19 华为技术有限公司 数据存储系统的操作方法和装置
CN102265277A (zh) * 2011-06-01 2011-11-30 华为技术有限公司 数据存储系统的操作方法和装置
WO2011157156A2 (zh) * 2011-06-01 2011-12-22 华为技术有限公司 数据存储系统的操作方法和装置
CN102436366A (zh) * 2011-08-22 2012-05-02 华为技术有限公司 数据同步方法和装置
WO2013026394A1 (zh) * 2011-08-22 2013-02-28 华为技术有限公司 数据同步方法和装置
CN102436366B (zh) * 2011-08-22 2014-07-16 华为技术有限公司 数据同步方法和装置
CN104750658A (zh) * 2013-12-27 2015-07-01 英特尔公司 辅助式一致共享存储器
CN105743803A (zh) * 2016-01-21 2016-07-06 华为技术有限公司 一种共享缓存的数据处理装置
CN105743803B (zh) * 2016-01-21 2019-01-25 华为技术有限公司 一种共享缓存的数据处理装置
CN106647412A (zh) * 2017-01-17 2017-05-10 爱普(福建)科技有限公司 一种基于组态元件的分布式控制器之间的数据共享方法
CN106647412B (zh) * 2017-01-17 2018-12-18 爱普(福建)科技有限公司 一种基于组态元件的分布式控制器之间的数据共享方法
WO2019047579A1 (zh) * 2017-09-11 2019-03-14 华为技术有限公司 数据访问的方法及装置
US11119953B2 (en) 2017-09-11 2021-09-14 Huawei Technologies Co., Ltd. Data access method and apparatus for accessing shared cache in a memory access manner

Also Published As

Publication number Publication date
DE10316725A1 (de) 2004-01-08
US6931496B2 (en) 2005-08-16
GB0308101D0 (en) 2003-05-14
TW200305103A (en) 2003-10-16
GB2390710A (en) 2004-01-14
DE10316725B4 (de) 2008-05-08
CN1277226C (zh) 2006-09-27
US20030191906A1 (en) 2003-10-09
TW591526B (en) 2004-06-11
GB2390710B (en) 2004-07-14

Similar Documents

Publication Publication Date Title
CN1277226C (zh) 分布式共享内存系统数据维护方法
CN1133943C (zh) 高速远程存储簇接口控制器
KR101497516B1 (ko) 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화
CN1277216C (zh) 用于在共享存储器体系中可扩展的歧义消除的相干性的方法和设备
CN1262942C (zh) 利用无数据事务获得全局促进工具的方法、设备和系统
CN1142503C (zh) 多处理机数据处理系统中同级到同级的超高速缓存移动
CN1729458A (zh) 供多处理器系统中的高速缓存同步中使用的转发状态
US8402225B2 (en) Method for performing cache coherency in a computer system
CN1955948A (zh) 用于管理高速缓存数据的数字数据处理设备和方法
CN1124378A (zh) 数字处理器
US20040260906A1 (en) Performing virtual to global address translation in processing subsystem
CN87105300A (zh) 高速缓冲存储器的目录和控制装置
CN100338587C (zh) 用于控制存储器系统的方法和设备
CN101042680A (zh) 更新无效一致状态的方法、数据处理系统和高速缓存系统
CN1369808A (zh) 储存存储器型式数据的转译旁视缓冲器
CN1492332A (zh) 数据处理系统内分配和访问存储映像工具的方法、设备和系统
WO2013097246A1 (zh) 高速缓冲存储器控制方法、装置和系统
CN1855032A (zh) 微处理系统、总线地址转换方法以及程序修补方法
CN1896972A (zh) 用于虚实地址变换及读写高速缓冲存储器的方法及装置
CN1347034A (zh) 数据内存管理系统和方法以及相关多处理器网络
CN1819544A (zh) 一种基于bitmap表的缓存管理方法
CN1262934C (zh) 具有不同资源访问方案的系统集成代理程序
CN1261891C (zh) 具有双节点分布式共享内存系统及其数据维护方法
CN1607510A (zh) 改善高速缓存性能的方法和系统
CN1127022C (zh) 具有地址变换的数据处理方法及设备

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20060927