專利名稱:本地片載系統(tǒng)和在本地片載系統(tǒng)中維持存儲一致性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲系統(tǒng),更具體地說,涉及存儲管理。
背景技術(shù):
片載系統(tǒng)(S0C)單元通常將電子系統(tǒng)的多個組件集成到單個芯片上。例 如,在一塊芯片上包括數(shù)字信號、模擬信號、復(fù)合信號,常常具有射頻功能。 SOC單元經(jīng)常應(yīng)用在嵌入式系統(tǒng)領(lǐng)域。但是,很多S0C單元專用于特定的應(yīng)用, 如果用到其他的應(yīng)用或者配置, 一些組件將不再用到。例如,在一種配置中 用到SOC中的節(jié)點控制器和片載存儲器,在其他配置中卻沒有用到。除了SOC 單元之外,存儲系統(tǒng)一般也是配置用于單應(yīng)用,不適合用在其他的配置中。
因此,需要一種方法和系統(tǒng)來克服上述的缺陷。
發(fā)明內(nèi)容
本發(fā)明涉及維護(hù)片載系統(tǒng)(SOC)中的高速緩存的一致性的方法、系統(tǒng)和 計算機(jī)程序,所述SOC是分布式共享存儲系統(tǒng)的一部分。本發(fā)明提供一種本
地SOC單元,其包括本地控制器以及片載存儲器。其中,所述本地控制器響
應(yīng)遠(yuǎn)程SOC中的遠(yuǎn)程控制器的訪問存儲位置的請求,確定所述本地SOC是否
獨占所述存儲位置,如果所述本地soc獨占所述存儲位置,就發(fā)送所述存儲 位置的數(shù)據(jù),并將條目存儲到所述片載存儲器中,所述條目表示所述遠(yuǎn)程soc
已經(jīng)請求所述存儲位置的數(shù)據(jù)。該條目表示遠(yuǎn)程SOC的請求是否獨占該存儲 位置。該條目也包括用于將遠(yuǎn)程SOC表示為請求者的域。所請求的存儲位置 可以是外接到本地SOC單元,或者外接到本地SOC單元中。
本發(fā)明的方法用于維持作為共享存儲系統(tǒng)的一部分的本地SOC中的存儲
一致性。本發(fā)明包括接收遠(yuǎn)程SOC的遠(yuǎn)程控制器訪問存儲位置的請求;向所
述遠(yuǎn)程SOC的遠(yuǎn)程控制器發(fā)送所請求的所述存儲位置中的數(shù)據(jù)。本方法還包
括將條目存儲在本地片載存儲器中,表明遠(yuǎn)程soc已經(jīng)訪問過所請求數(shù)據(jù)。 根據(jù)本發(fā)明的一方面,提供一種本地soc(片載系統(tǒng))單元,其特征在于,
包括
本地控制器;以及 片載存儲器;
其中,所述本地控制器響應(yīng)遠(yuǎn)程SOC的遠(yuǎn)程控制器的訪問存儲位置的請
求,確定所述本地soc是否獨占所述存儲位置,如果所述本地soc獨占性占
有所述存儲位置,就發(fā)送所述存儲位置的數(shù)據(jù),并將條目存儲到所述片載存
儲器中,所述條目表示所述遠(yuǎn)程soc已經(jīng)產(chǎn)生請求。
優(yōu)選地,所述條目標(biāo)識所述請求是否請求獨占所述存儲位置。
優(yōu)選地,所述條目中的一個特定域存儲用于標(biāo)識所述遠(yuǎn)程SOC的數(shù)據(jù)。
優(yōu)選地,所述域中的每一位對應(yīng)于共享存儲系統(tǒng)的中的soc,所述共享存
儲系統(tǒng)包括多個SOC;
如果某位設(shè)為1,則表示該位所對應(yīng)的soc已經(jīng)請求訪問所述存儲位置。 優(yōu)選地,所述單元還包括連接到本地SOC外接存儲器的多個處理器以及
存儲控制器。
優(yōu)選地,所述本地soc和遠(yuǎn)程soc通過高速緩存一致性非統(tǒng)一存儲訪問
(CC而MA)的可擴(kuò)展一致性接口連接。
優(yōu)選地,所述片載存儲器是靜態(tài)隨機(jī)訪問存儲器(SRAM),所述本地控制 器是節(jié)點控制器。
根據(jù)本發(fā)明的一方面,提供在本地SOC中維持存儲一致性的方法,所述 本地SOC是共享存儲系統(tǒng)的一部分,所述方法包括 接收遠(yuǎn)程SOC的遠(yuǎn)程控制器訪問存儲位置的請求;
從所述存儲位置發(fā)送被請求的數(shù)據(jù)給所述遠(yuǎn)程SOC的遠(yuǎn)程控制器;以及
將標(biāo)識所述遠(yuǎn)程SOC的條目存儲在本地片載存儲器中。
優(yōu)選地,所述請求是獨占請求,所述獨占請求允許所述遠(yuǎn)程SOC遠(yuǎn)程修
改存儲在所述存儲位置的數(shù)據(jù)副本。
優(yōu)選地,所述方法還包括通過本地節(jié)點控制器接收所述請求。
優(yōu)選地,所述片載存儲器是靜態(tài)隨機(jī)訪問存儲器(SRAM)。
優(yōu)選地,所述存儲位置的地址是共享全局存儲空間的一部分,所述共享
全局存儲空間包括所述共享存儲系統(tǒng)的所有存儲單元的存儲地址。
優(yōu)選地,所述條目包括顯示所述訪問存儲位置的請求是讀取存儲位置的
數(shù)據(jù)還是獨占該存儲位置的域。
優(yōu)選地,所述條目包括用于顯示所述條目是否包含有效數(shù)據(jù)的域。 優(yōu)選地,所述條目包括用于存儲被請求的存儲位置的地址或者部分地址的域。
優(yōu)選地,所述部分地址是被請求的存儲地址的標(biāo)簽。 優(yōu)選地,條目中的域存儲用于標(biāo)識所述遠(yuǎn)程SOC的數(shù)據(jù)。 優(yōu)選地,所述域的每位對應(yīng)于共享存儲系統(tǒng)的中的SOC,所述共享存儲系 統(tǒng)包括多個SOC;
如果某位設(shè)為1,則表示該位所對應(yīng)的SOC已經(jīng)請求訪問所述存儲位置。
優(yōu)選地,所述方法還包括在發(fā)送步驟之前,確定所述本地SOC是否獨占 所請求的數(shù)據(jù)。
優(yōu)選地,所述本地soc和遠(yuǎn)程soc通過高速緩存一致性非統(tǒng)一存儲訪問
(CCNUMA)的可擴(kuò)展一致性接口連接。
下面將結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步說明,附圖中 圖1是示范性的片載系統(tǒng)(S0C)的示意圖2A是本發(fā)明的一個實施例中,示范的S0C和關(guān)聯(lián)的全局地址空間的示 意圖2B是本發(fā)明的一個實施例中,使用全局地址空間的S0C的節(jié)點控制器 執(zhí)行步驟的流程圖3A是示范性的共享存儲系統(tǒng)300;
圖3B是根據(jù)本發(fā)明的一個實施例的在共享存儲系統(tǒng)中維持存儲一致性的 示意圖3C1-3C2是本發(fā)明的一個實施例中,在共享存儲系統(tǒng)中為獨占請求維 護(hù)存儲一致性的示意圖3D是本發(fā)明的一個實施例中,共享存儲系統(tǒng)中本地S0C執(zhí)行的步驟的 流程圖3E是本發(fā)明的一個實施例中,共享存儲系統(tǒng)的本地S0C和/或遠(yuǎn)程S0C 執(zhí)行的步驟的流程圖3F是本發(fā)明的一個實施例中,本地S0C在接收到存儲訪問請求時執(zhí)行 的步驟的流程圖4A是示范性集群系統(tǒng);
圖4B是本發(fā)明的一個實施例的"拉(pull)"模式發(fā)消息示意圖; 圖4C是本發(fā)明的一個實施例的"推(push)"模式發(fā)消息的示意圖; 圖4D是本發(fā)明的一個實施例中,執(zhí)行pull模式的本地SOC執(zhí)行的步驟 的流程圖4E是本發(fā)明的一個實施例中,執(zhí)行pull模式的遠(yuǎn)程SOC執(zhí)行的步驟 的流程圖4F是本發(fā)明的一個實施例中,執(zhí)行push模式的遠(yuǎn)程SOC執(zhí)行的步驟 的流程圖5A是本發(fā)明的一個實施例中,存儲位置與存儲鎖之間的關(guān)聯(lián)的示意圖; 圖5B是示范性鎖條目的示意圖5C1-5C3是本發(fā)明的一個實施例中,測試-設(shè)置模式中存儲鎖的操作的 示意圖5C4是本發(fā)明的一個實施例中,測試-設(shè)置模式下節(jié)點控制器執(zhí)行的操 作的示意圖5D1-5D3是本發(fā)明的一個實施例中,定序(sequencer)模式的存儲鎖 的操作的示意圖5D4是本發(fā)明的一個實施例中,定序模式的節(jié)點控制器執(zhí)行的步驟的 流程圖5D5是本發(fā)明的一個實施例中,請求者在定序模式下執(zhí)行的一些步驟 的流程圖。
本說明書將結(jié)合這些附圖來描述本發(fā)明。附圖中,相同的附圖標(biāo)記用于 表示相同或者功能相似的部件。另外,附圖標(biāo)記中最左邊的數(shù)字表示最先出 現(xiàn)該附圖標(biāo)記的附圖。
具體實施例方式
本說明書描述多用適用存儲器的方法和系統(tǒng)。具體地,在不同的應(yīng)用中, 讓S0C的片載存儲器實現(xiàn)不同目的的方法和系統(tǒng)。
本說明書公開了結(jié)合了本發(fā)明的特征的一個或多個實施例。所公開的實 施例僅僅用于舉例,本發(fā)明的范圍不限于所公開的實施例。本發(fā)明的范圍由 權(quán)利要求決定。
本說明書中,"一個實施例"、"實施例"、"一個示范的實施例"等表示所 述的實施例包括特定的特征、結(jié)構(gòu)或者特性,但是不要求每個實施例都包括
該特定的特征、結(jié)構(gòu)或者特性。另外,"一個實施例"、"實施例"、"一個示范 的實施例"等不必須指向相同的實施例。另外,當(dāng)結(jié)合一個實施例描述特定 的特征、結(jié)構(gòu)或者特性時,不管是否明確指出,都可認(rèn)為將這些特征、結(jié)構(gòu) 或者特性結(jié)合到其他實施例是本領(lǐng)域的公知技術(shù)。
示范的片載系統(tǒng)(soc)
在詳細(xì)描述本發(fā)明的實施例之前,描述實施本發(fā)明的示范環(huán)境是有幫助
的。在一個示范環(huán)境中,在多處理器的片載系統(tǒng)(soc)單元中實施本發(fā)明,
該SOC包括片載存儲器,并連接外部存儲器。圖l示出了SOC100a, S0C100a 包括k個處理器110a-k、存儲控制器(MC) 102a、節(jié)點控制器(NC) 104a、 片載存儲器(OCM) 108a和外部存儲器(EM) 106a。在一個替換實施例中,存 儲控制器102a和節(jié)點控制器104a可組合成全局控制器112a,全局控制器112a 組合了存儲控制器102a和節(jié)點控制器104a的功能。處理器110a-k中,每個 處理器都包括關(guān)聯(lián)的高速緩存(未示出)。處理器110a-k可用于并發(fā)多處理 配置中。處理器110a-k通過高速通道或者互連總線如總線114a綁在一起, 能夠共同分擔(dān)工作量或者獨立運(yùn)行??膳渲锰幚砥?10a-k,使得在一個處理 器不起作用時,其他的處理器能夠接替它。存儲控制器114a通常用于控制外 部處理器106a,以及在未安裝高速緩存控制器(未示出)時,用于控制處理 器110a-k的高速緩存。存儲控制器114a通常包括地址解碼器(未示出),地 址解碼器產(chǎn)生為控制存儲器如EM 106a的存儲器和處理器110a-k的高速緩存 (未示出)的信息讀寫所需要的信號。MC 114a也可將S0C 110a的其他組件 連接到外部存儲器106a,例如通過總線114a。 NC 104a用于與處理器110a-k 通信。NC104a可用作與其他S0C單元或者S0C單元的處理器通信的接口。節(jié) 點控制器104a可通過高速總線(未示出)如PCI-E或者HT連接到其他的SOC 單元,以實現(xiàn)快速的SOC內(nèi)部通信。節(jié)點控制器114a也包括地址解碼器(未 示出),地址解碼器產(chǎn)生為控制OCM 108的信息讀寫所需要的信號。在一個實 施例中,NC 104a可用于為各種用途配置和使用OCM 108a。例如,在集群配 置(cluster configuration)中,在保持EM 106a的完整性和安全性的同時,
SOC 100a用作集群內(nèi)SOC單元之間通信的消息信箱。在高速緩存一致的非統(tǒng) 一性存儲訪問系統(tǒng)中,OCM 108a可用于維持高速緩存的一致性。OCM 108a也 可以配置為EM 106a中的存儲位置的存儲鎖(store lock)。 OCM 108a也可以 用作全局地址空間的一部分,作為快速存取存儲器。在另一個實施例中,在 需要時,全局控制器112a或者M(jìn)C 102a可配置或者控制OCM 108a。
為了清楚和容易地說明,沒有詳細(xì)地示出SOC 100a的所有功能模塊,因 為這些項目是本領(lǐng)域內(nèi)的技術(shù)人員公知的。進(jìn)一步地,應(yīng)當(dāng)意識到,可使用 SOC 100a的相似或者替代功能模塊來實現(xiàn)本發(fā)明的實施例,但是這并不脫離 本發(fā)明的范圍。后文將對本發(fā)明的實施例的NC 104a和0CM 108a的示范配置 進(jìn)行詳細(xì)闡述。這種示范配置不局限于OCM 108a或者NC 104a,這種配置可 應(yīng)用到其他的環(huán)境中。另外,對本說明描述的實施例進(jìn)行變化和修改對本領(lǐng) 域的技術(shù)人員是顯而易見的。
全局地址空間管理
圖2A是根據(jù)本發(fā)明的一個實施例的SOC 100a和全局地址空間200的示 意圖。全局地址空間200表示處理器110a-k訪問存儲器地址的地址范圍。處 理器的數(shù)目k是任意的。通常,處理器110a-k使用的地址空間也包括EM 106a 的外部存儲地址202,由存儲控制器102a處理所有的存儲訪問。在典型的配 置中,OCM 108a屬于不同的地址空間。在這個實施例中,OCM 108a的地址204 是全局地址空間200的一部分,全局地址空間200包括EM 106a的外部存儲 地址204。在一個實施例中,全局地址空間200的OCM地址204由節(jié)點控制器 104a的地址解碼器(未示出)解碼,EM地址202由存儲控制器102a的地址 解碼器(未示出)解碼。使用全局地址空間能夠更快地使用OCM 108a,而不 需要分配和解碼不同地址空間的存儲地址。另一個優(yōu)點是更大的連續(xù)地址空 間。根據(jù)本實施例,全局地址空間從0擴(kuò)展到2Z,其中,0到2X是EM地址 202, 2X到2Z是0CM地址204 (其中,x和z是正數(shù),且z大于x)。例如,如 果EM 108是1G比特(GB),則EM地址范圍是O到(23Q-1)(也就是說,x是 30)。如果OCM 108a是4 M比特(MB),則全局地址空間中的OCM地址是23G到(232-1 )(也就是說z是32)。因此,通過組合EM地址202和OCM地址204, 全局地址200則從0到(232-1),而不是O到(23G-1)。所以,如果一些應(yīng)用 程序要求快速的存儲訪問,它們可通過地址范圍2lU (2Z-l)來使用OCM 108a, 例如本實施例中,從230到(232-1 )。
如圖2A所示,存儲控制器102a和節(jié)點控制器104a接收帶有相關(guān)聯(lián)地址 的讀寫請求,例如來自處理器110a-k的讀寫請求。節(jié)點控制器104a判斷該 地址是否落入期地址范圍2x到(2Z-1)。如果地址落入2x到(2Z-1)的范圍, 那么,存儲控制器102a解碼所提供的地址,并訪問OCM 108a中對應(yīng)的存儲 位置,執(zhí)行所請求的讀或?qū)憽H绻刂仿淙敕秶鶲到(2X-1),那么存儲控制 器102a解碼所提供的地址,以及訪問外部存儲器106a中的對應(yīng)存儲位置, 執(zhí)行請請求的讀或?qū)憽?br>
圖2B是本劇本發(fā)明的一個實施例中,使用全局地址的SOC執(zhí)行的步驟的 流程圖206。在一個實施例中,由SOC單元中的節(jié)點控制器執(zhí)行這些步驟。
步驟208中,接收到訪問存儲位置的請求。該請求包括讀或?qū)懻埱蟮拇?儲位置的地址,如果是寫請求,還包括將要寫入的數(shù)據(jù)。
步驟210中,確定步驟208中接收的請求地址是否與片載存儲位置對應(yīng)。
步驟212中,如果確定該地址與片載存儲位置對應(yīng),則解碼該地址。通 常由節(jié)點控制器的地址解碼器來解碼地址。地址的解碼導(dǎo)致將地址轉(zhuǎn)換成訪 問片載存儲器所需的電子信號。
步驟214中,根據(jù)步驟212中的解碼地址,按照步驟208中接收的指令, 訪問存儲位置并讀取或?qū)懭霐?shù)據(jù)。
在可選的步驟216中,如果步驟208接收到請求是從存儲器讀取數(shù)據(jù), 那么,就給該請求提供被請求的數(shù)據(jù)。在一個實施例中,如果步驟208中接 收的是寫請求,那么,在完成寫操作時給請求服務(wù)提供寫確認(rèn)。
步驟218中,如果步驟210中確定地址與外部存儲位置對應(yīng),則該請求 將發(fā)往存儲控制器。存儲控制器中的地址解碼器解碼地址,訪問外部存儲位 置,根據(jù)步驟208接收的存儲訪問請求的要求,提供被請求的數(shù)據(jù)或者寫確 認(rèn)。
后文將闡述共享存儲配置的節(jié)點控制器和片載系統(tǒng)的示范實施例。 典型的共享存儲系統(tǒng)
圖3A是示范性共享存儲系統(tǒng)300。在一個實施例中,共享存儲系統(tǒng)300 是高速緩存相關(guān)的非一致性存取(CC-NUMA)系統(tǒng)。系統(tǒng)300包括通過高速互 聯(lián)302如PCI-E或者HT連接的n個SOC單元100a-n。 SOC單元的數(shù)目n以及 SOC單元中的處理器數(shù)目是任意的。在一個實施例中,節(jié)點控制器104a-n通 過互聯(lián)302連接,從而提供SOC 100a-j之間的通信接口。
處理器100a-n共享全局地址空間。外部存儲器106a-n和/或每個SOC的 處理器高速緩存映射到全局地址空間中。在本發(fā)明的實施例中,OCM 108a-n 沒有映射到全局地址空間中。在共享存儲系統(tǒng)中300中,在多個SOC中維護(hù) 由多個處理器共享的存儲器的高速緩存相關(guān)性是緩慢的,處理器需要顯著的 處理開銷。后文介紹的本發(fā)明的實施例提供一種新的解決方案,通過NC 104 使用OCM 108作為高速緩存目錄,以追蹤系統(tǒng)300中的共享數(shù)據(jù)的位置。如 后文所述,與OCM 108a-n對應(yīng)的SOC 110a-n將每個0CM 108a-n用作目錄, 以追蹤系統(tǒng)300中的共享數(shù)據(jù)。OCM 108a通過存儲共享存儲的位置的條目來 追蹤共享數(shù)據(jù)。在一個實施例中,每個條目包括但是不限于下面的域
域Valid(V),用于表示遠(yuǎn)程節(jié)點是否具有有效的數(shù)據(jù)副本;
域Dirty (d),用于表示發(fā)送到遠(yuǎn)程節(jié)點的數(shù)據(jù)是否被該遠(yuǎn)程節(jié)點修改, 也就是說,遠(yuǎn)程節(jié)點是否對數(shù)據(jù)做出"獨占"請求。
域Tag,用于標(biāo)識被請求的本地存儲位置;以及
域Vector (vec),用于標(biāo)識請求存儲位置中的數(shù)據(jù)的遠(yuǎn)程SOC。例如, vec可包括多個位,每個位對應(yīng)系統(tǒng)300中的SOC。在圖3A的實施例中,如 果SOC 100j請求數(shù)據(jù),那么,vec的第j位就設(shè)為l,表示SOC100j請求了 數(shù)據(jù)。在一個替換實施例中,通過將vec域的第T位設(shè)為1,可在vec域中將 SOC 100j的處理器PT表示為請求的發(fā)起人。
在后文參考圖3A的示范例子中,SOC 100a稱為與EM 106的本地存儲位 置對應(yīng)的本地SOC,其他所有的S0C100b — 100n稱為遠(yuǎn)程S0C。 OCM 108a的條
目用于掌握哪個SOC具有與EM 106a的存儲位置B對應(yīng)的數(shù)據(jù)的副本。系統(tǒng) 300的存儲位置B中具有的數(shù)據(jù)副本可以與系統(tǒng)300的SOC的一樣多。因此系 統(tǒng)300具有n個S0C,所以系統(tǒng)300的存儲位置B可以具有n個數(shù)據(jù)副本。數(shù) 據(jù)的共享副本具有相同的值。當(dāng)SOC將要修改具有共享數(shù)據(jù)的存儲位置時, 它必須獲得存儲位置的獨占,并且其他所有的緩存副本都必須被無效。示范 性的例子如下
當(dāng)遠(yuǎn)程SOC 100j向本地SOC 100a發(fā)出讀取EM 106a的存儲位置B的請 求時,節(jié)點控制器104a檢査系統(tǒng)108a中是否存在與存儲位置B對應(yīng)的具有 dirty位的條目。如果OCM 108a中不存在這樣的條目,那么,本地存儲器106a 具有有效數(shù)據(jù),節(jié)點控制器104a將存儲106a的數(shù)據(jù)提供給進(jìn)行請求的遠(yuǎn)程 SOC 100j。如果存在dirty副本,例如對于SOC 100n,在OCM 108a中存在對 應(yīng)的dirty條目,該條目中vector域的第n位設(shè)置成1 。節(jié)點控制器104a向 當(dāng)前所有者SOC 100n發(fā)出回寫命令,以提供位置B的最新數(shù)據(jù)。SOC 100n返 回數(shù)據(jù)之后,節(jié)點控制器104a將數(shù)據(jù)回寫到本地外部存儲器106a,同時將數(shù) 據(jù)提供給對應(yīng)的S0C100j。 OCM 108a條目如下修改dirty位設(shè)為O, vector 域的第j和第n位設(shè)為1。這表示SOC 100j和lOOn具有共享的、存儲位置B 的干凈的數(shù)據(jù)副本,它們的值與EM 106a的存儲副本相同。
當(dāng)SOC 100a的本地處理器發(fā)出讀請求時,OCM 108a的條目被檢査。如果 沒有遠(yuǎn)程dirty副本存在,那么,本地存儲器106a就具有有效副本,節(jié)點控 制器104a提供該數(shù)據(jù)。如果存在遠(yuǎn)程dirty副本,節(jié)點控制器104a向被請 求的存儲位置的當(dāng)前SOC占有者發(fā)出回寫請求,通過返回數(shù)據(jù)來更新本地存 儲器106a,以及通過將dirty位重設(shè)位0來修改對應(yīng)的OCM 108a條目。
當(dāng)遠(yuǎn)程SOC 100j向本地SOC 100a發(fā)出寫EM 106a的存儲位置B的請求 時,節(jié)點控制器104a就確保SOC 100j具有一個且僅具有一個存儲位置B的 副本,以保證數(shù)據(jù)一致性。節(jié)點控制器104a是否存在OCM 108a條目。如果 不存在位置B的OCM 108a條目,節(jié)點控制器104a就將本地存儲EM 106a的 數(shù)據(jù)副本提供給進(jìn)行請求的SOC 100j。如果存在OCM 108a目錄條目,且沒有 設(shè)置dirty位,這就表示系統(tǒng)300中存在共享狀態(tài)的干凈副本。在這種情況之下,節(jié)點控制器104a向那些SOC發(fā)送無效信號,這些SOC的vec域的對應(yīng) 位具有值1。這些SOC將無效它們本地緩存的存儲位置B的副本,并在完成無 效后向本地SOC 100a發(fā)送確認(rèn)。本地SOC 100a負(fù)責(zé)收集所有的無效確認(rèn)。 在所有的遠(yuǎn)程共享副本都無效之后,本地SOC控制器104a將本地存儲EM 106a 的數(shù)據(jù)副本提供給進(jìn)行請求的SOC 100j。
如果存在OCM 108a條目且該條目的dirty位已設(shè)置,這表明系統(tǒng)300存 在dirty副本。通過條目的vec域的1來指定當(dāng)前持有dirty副本的SOC。例 如,如果第n位是l,那么SOC 100n是當(dāng)前所有者,具有本地B的dirty副 本。這種情況下,節(jié)點控制器104a向SOC IOO發(fā)出清洗命令。在接收到清洗 命令時,SOC lOOn回發(fā)它的數(shù)據(jù)副本,并無效其副本。隨后,節(jié)點控制器104a 將接收自SOC lOOn的數(shù)據(jù)副本傳送到進(jìn)行請求的100j。這種情況下,OCM 108a 條目被更新,使得只有100j具有dirty狀態(tài)的副本,就是說,dirty位被設(shè) 置,且對應(yīng)的OCM 108a條目的vector只有第j位被設(shè)置。這表明SOC 100j 在系統(tǒng)300中具有獨占的副本。
在SOC 100a的本地處理器發(fā)出寫請求時,就檢查OCM 108a的條目。如 果沒有條目或者不存在遠(yuǎn)程dirty副本,則本地存儲器106a具有有效副本, 且節(jié)點控制器104a提供被請求的數(shù)據(jù)。如果存在遠(yuǎn)程dirty副本,節(jié)點控制 器104a向當(dāng)前的所有者SOC發(fā)出清洗請求。如果存在遠(yuǎn)程共享副本,節(jié)點控 制器104a向具有副本的遠(yuǎn)程SOC發(fā)出無效。SOC 100a將具有獨占的副本,系 統(tǒng)300的其他SOC不具有EM 106a中被訪問的存儲位置B的數(shù)據(jù)副本。
共享存儲管理
圖3B示出了根據(jù)本發(fā)明的一個實施例的共享存儲系統(tǒng)300中,在讀請求 時維持存儲相關(guān)性的例子。如圖3B所示,NC 104j向NC 104a發(fā)出讀取EM 106a 中的存儲位置A的請求。例如,該請求是SOC 100j的處理器P^110^發(fā)出。 該請求可通過消息或者信號從節(jié)點控制器104j發(fā)送到節(jié)點控制器104a。 NC 104a響應(yīng)所接收的來自NC 104j的讀取存儲位置A的請求,讀取存儲位置A 并通過總線302向NC 104j發(fā)送數(shù)據(jù)。為維持共享數(shù)據(jù)的存儲相關(guān)性,NC 104a 追蹤緩存在其他SOC單元的存儲請求的位置。在這個實施例中,NC 104a在 OCM 108a中存入一條目304。因為SOC 100j請求數(shù)據(jù),所以條目304的vec 域的第j位設(shè)為1以表明SOC 100j請求數(shù)據(jù)。在替換的實施例中,vec域的 第T位設(shè)為1,以將SOC100j的處理器PT表示為請求的發(fā)起者。在圖3B所示 的實施例中,v設(shè)為1以顯示該條目是有效的;d設(shè)為0,因為S0C100j的處 理器P^進(jìn)行了讀請求,且沒有修改從存儲位置A獲得的數(shù)據(jù)。tag域設(shè)為A 因為請求了存儲位置A的數(shù)據(jù)。在另一個實施例中,存儲在tag域的存儲位 置的地址可縮寫為局部地址,以節(jié)省條目304的空間。
圖3C1示出了在根據(jù)本發(fā)明的一個實施例的在共享存儲系統(tǒng)300中,在 獨占請求時維持存儲相關(guān)性的實施例。
圖3C1所示,SOC 100j發(fā)送請求,請求獨占EM 106a的存儲位置B的數(shù) 據(jù)。獨占允許100j從存儲位置B取得該數(shù)據(jù)以及修改數(shù)據(jù)。因此,存儲位置 B的副本是廢棄的。例如,該請求是SOC 100j的處理器PT發(fā)出的。該請求可 通過消息經(jīng)由互聯(lián)302從NC 104j發(fā)送到NC 104a。 SOC 100a的節(jié)點控制器 104a響應(yīng)所接收的來自SOC 100j的節(jié)點控制器104j的對存儲位置B的獨占 請求,通過互聯(lián)302將存儲位置B的數(shù)據(jù)發(fā)送到節(jié)點控制器104j。為維持相 關(guān)性,節(jié)點控制器104通過在OCM 108a存儲條目306以追蹤與存儲位置B對 應(yīng)的數(shù)據(jù)的位置。
在圖3C1所示的實施例中,v設(shè)為1以表示條目是有效的;d設(shè)為l,因 為請求了獨占性占有,并且SOC 100a的存儲位置B的副本不是最新的副本; tag設(shè)為B,因為請求了存儲位置B的數(shù)據(jù)。在上述的實施例中,因為請求是 從SOC 100j發(fā)出的,所以vce域的第j位被設(shè)為1。在替換的實施例中,通 過在vec域中將第T位設(shè)為1,將S0C100j的處理器&表示為該請求發(fā)起者。 如果SOC 100a的進(jìn)程、線程或者處理器打算訪問存儲器B的數(shù)據(jù),請求者通 過請求SOC 100j的數(shù)據(jù)來讀取這些數(shù)據(jù),如后文結(jié)合圖3C2所述。
在圖3C2是重新取得EM 106a的存儲位置B對應(yīng)的數(shù)據(jù)的示意圖,在上 述的實施例中,SOC 100j的NC 104j請求獨占這些數(shù)據(jù)。
在圖3C2所示的實施例中,處理器PK請求存儲位置B的數(shù)據(jù)。節(jié)點控制
器100a査找0CM 108a中與tag B對應(yīng)的條目306。因為,在圖3C1所示的實 施例中,SOC lOOj的處理器Pr請求對存儲位置B的數(shù)據(jù)的獨占,所以NC 104a 向NC 104J發(fā)送請求以發(fā)送與EM 106a的存儲位置B對應(yīng)的數(shù)據(jù)。節(jié)點控制 器108j訪問與存儲位置B對應(yīng)的數(shù)據(jù),例如,從處理器高速緩存(未示出) 訪問,并將數(shù)據(jù)發(fā)送給NC 104a。因為節(jié)點控制器108a從SOC lOOj重新讀 取數(shù)據(jù),所以它再次更新OCM 108a的條目306,如圖3C2所示。
在圖3C2所示的實施例中,如果NC 104a請求獨占,則v設(shè)為0以表明 SOC lOOj中該條目不再有效,d設(shè)為0。如果NC 104a僅僅請求讀數(shù)據(jù),那么 v保持為1,以表明SOC 100j仍然具有有效副本。但是,d設(shè)為0以表明SOC lOOj對所請求的數(shù)據(jù),也就是位于SOC 100a和lOOj的處理器高速緩存共享 的相同數(shù)據(jù)的副本不再具有獨占。Tag依然保持為B。
要意識到,圖3B、 3C1和3C2所示的元件的數(shù)目是任意的,正如本領(lǐng)域 的技術(shù)人員所認(rèn)識到的,所述數(shù)目可根據(jù)應(yīng)用情況進(jìn)行改變。為便于說明, 圖3B、圖3C1和3C2不再出現(xiàn)互聯(lián)302。
圖3D示出了根據(jù)本發(fā)明的一個實施例的共享存儲系統(tǒng)中,本地S0C在接 收到來自遠(yuǎn)程SOC的訪問本地存儲位置的請求時執(zhí)行的流程312。
步驟314中,接收到遠(yuǎn)程SOC的請求。該請求可由本地節(jié)點控制器接收, 本地節(jié)點控制器與遠(yuǎn)程SOC的遠(yuǎn)程節(jié)點控制器連接。該請求標(biāo)識將要被訪問 的本地SOC的存儲位置,以及標(biāo)識遠(yuǎn)程SOC請求的數(shù)據(jù)。該請求也標(biāo)識遠(yuǎn)程 SOC是否讀取存儲位置或者獨占存儲位置的數(shù)據(jù)。
步驟316中,確定本地SOC是否具有被請求的存儲位置的有效副本。如 果本地片載存儲器存在被請求的存儲位置的條目,通過檢測該條目來確定數(shù) 據(jù)的有效性。如果本地片載存儲器不存在被請求的存儲位置的條目,就假定 本地存儲器具有有效數(shù)據(jù)。如果存在所述條目,本地SOC就檢査dirty位是 否已經(jīng)設(shè)置。如果dirty位已經(jīng)設(shè)置,則本地SOC的本地存儲器中不具有有 效數(shù)據(jù)。
步驟318中,如果在步驟316中確定本地節(jié)點的被請求的存儲位置中不 具有有效數(shù)據(jù),那么本地SOC向具有有效數(shù)據(jù)的SOC發(fā)送請求,讓該SOC向
本地SOC返回有效數(shù)據(jù)。如上所述,本地SOC通過檢測片載存儲的vec域來 確定當(dāng)前SOC是否具有有效數(shù)據(jù)。
步驟320中,將步驟318接收的數(shù)據(jù)發(fā)送到請求數(shù)據(jù)的遠(yuǎn)程S0C。
步驟322中,如果在步驟316中確定本地存儲器存在與步驟314中請求 的存儲位置對應(yīng)的有效數(shù)據(jù),那么,就從步驟314所接收的請求確定該遠(yuǎn)程 節(jié)點是否請求獨占。
步驟324中,條目由遠(yuǎn)程SOC存儲在對應(yīng)請求的本地OCM中。例如,如 果遠(yuǎn)程SOC請求獨占,就做出條目(如圖3C1所示的條目306),其中的dirty 位設(shè)為1。如果遠(yuǎn)程S0C僅僅是讀請求,就做出條目(如圖3B所示的條目304), 其中的dirty位設(shè)為0。
步驟326中,將請求的存儲位置的數(shù)據(jù)發(fā)送到遠(yuǎn)程SOC。如上所述,這些 數(shù)據(jù)可由本地節(jié)點控制器通過總線302發(fā)送到遠(yuǎn)程節(jié)點控制器。
圖3E示出了根據(jù)本發(fā)明的一個實施例的共享存儲系統(tǒng)中,本地S0C和遠(yuǎn) 程SOC執(zhí)行的流程。
步驟332中,遠(yuǎn)程S0C向本地S0C發(fā)送請求,請求存儲位置的數(shù)據(jù)。本 地節(jié)點控制器可接收這種請求,本地節(jié)點控制器與遠(yuǎn)程節(jié)點控制器連接。該 請求將標(biāo)識將要訪問的本地S0C的存儲位置,以及標(biāo)識做出請求的遠(yuǎn)程S0C。 該請求也標(biāo)識遠(yuǎn)程S0C是否僅僅打算讀取本地SOC的存儲位置,或者要獨占 存儲位置。在一個實施例中,本地SOC和遠(yuǎn)程SOC共享全局存儲地址空間,
遠(yuǎn)程soc使用典型的加載/存儲指令訪問本地soc中的存儲位置。
步驟334中,本地節(jié)點控制器接收遠(yuǎn)程S0C在步驟332中發(fā)送的請求。 本地節(jié)點控制器在本地S0C中根據(jù)接收請求的順序,接收請求和區(qū)分請求的 優(yōu)先級。
步驟336中,本地節(jié)點控制器確定步驟334中接收的請求指向的存儲位 置是否具有有效數(shù)據(jù)。如果本地0CM中被請求的存儲位置具有有效數(shù)據(jù),就 通過檢測條目來檢測數(shù)據(jù)的有效性。例如,如果本地0CM中存在被請求的存 儲位置的條目,以及該條目的dirty位設(shè)為1,那么,本地S0C的存儲位置就 不含有有效數(shù)據(jù)。如果條目的dirty位設(shè)為0,那么本地S0C的被請求的存儲
位置就具有有效數(shù)據(jù)。如果本地OCM中不存在被請求的存儲位置的條目,那 么,就假定被請求的存儲位置中存儲有效數(shù)據(jù)。
步驟338中,如果節(jié)點控制器確定本地SOC的被請求的存儲位置不含有 有效數(shù)據(jù),那么,本地NC基于本地OCM的條目中的vector域,從具有有效 數(shù)據(jù)的SOC請求數(shù)據(jù)。
步驟340中,本地SOC將其從步驟338中的SOC接收的數(shù)據(jù)給遠(yuǎn)程SOC。 本地SOC也使用所接收的數(shù)據(jù)更新本地存儲器,以及更新本地OCM的條目以 表明本地SOC具有非dirty的有效數(shù)據(jù)。
步驟342中,本地NC將對應(yīng)于該請求的條目存儲到本地OCM中。例如, 如果遠(yuǎn)程SOC請求獨占性占有,就生成圖3C1所示的條目306,該條目的dirty 位為l。如果遠(yuǎn)程SOC做出只讀請求,那么,就做出如圖3B所示的條目304, 該條目的dirty位為O。
步驟344中,本地NC將被請求的數(shù)據(jù)發(fā)送到遠(yuǎn)程N(yùn)C。如上所述,可通過 總線302發(fā)送數(shù)據(jù)。
圖3F示出了本發(fā)明的一個實施例中,NC在接收到本地處理器的存儲器訪 問請求時執(zhí)行的步驟。在該實施例的如下所述的步驟中,NC和處理器位于相 同的S0C上。例如,本地NC是NC 104,本地處理器是處理器110。
步驟352中,接收本地處理器的從本地存儲器讀取數(shù)據(jù)或者將數(shù)據(jù)寫入 本地存儲器的請求。
步驟354中,確定本地SOC的本地存儲位置是否具有有效數(shù)據(jù),或者獨 占。如果本地OCM中存儲被請求的數(shù)據(jù)的條目,就通過檢測條目來檢測數(shù)據(jù) 的有效性。在一個實施例中,本地節(jié)點控制器檢測本地OCM。例如,如果本地 OCM中存在被請求的存儲位置的條目,以及該條目的dirty位設(shè)為1,那么, 本地SOC的存儲位置就不含有有效數(shù)據(jù)。如果條目的dirty位設(shè)為0,那么本 地SOC的被請求的存儲位置就具有有效數(shù)據(jù)。如果本地OCM中不存在被請求 的存儲位置的條目,那么,就假定被請求的存儲位置中存儲有效數(shù)據(jù)。
步驟356中,如果步驟354中確定本地SOC的存儲位置不具有有效數(shù)據(jù), 那么就檢查本地OCM存儲器是否存在與步驟352中接收的請求所執(zhí)行的存儲
位置對應(yīng)的條目,優(yōu)選地由本地NC來執(zhí)行。在一個實施例中,如圖3C2所示 和如上所述,條目306的vec域用于確定對被請求的存儲位置具有獨占的遠(yuǎn) 程SOC。
步驟358中,向步驟356中確定的遠(yuǎn)程SOC發(fā)送請求,請求其傳送數(shù)據(jù)。 步驟360中,本地S0C響應(yīng)步驟358中發(fā)送的請求,接收遠(yuǎn)程SOC的數(shù)
據(jù)。本地SOC更新本地OCM中對應(yīng)的條目,以表明本地OCM的被請求的存儲
位置具有有效數(shù)據(jù)。
步驟362中,將接收自遠(yuǎn)程SOC的數(shù)據(jù)發(fā)送到請求數(shù)據(jù)的處理器。 步驟364中,如果步驟354中確定本地SOC的存儲位置中具有有效數(shù)據(jù),
就訪問該存儲位置,并將數(shù)據(jù)發(fā)送給請求數(shù)據(jù)的處理器。在一個實施例中,
本地NC訪問存儲位置;在另一個實施例中,本地NC使用本地存儲控制器來
訪問數(shù)據(jù)。
下面將描述集群配置的節(jié)點控制器和OCM的實施例。 示范的集群系統(tǒng)
圖4A示出了集群系統(tǒng)400。集群系統(tǒng)400是一組緊密地協(xié)同工作的SOC 單元100a-n,因此,在很多方面可將它們視為單個SOC。但是,每個SOC通 常是獨立的SOC并管理自己的資源如存儲器。集群一般通過快速局域網(wǎng)連接, 但并非總是如此。集群如集群系統(tǒng)400經(jīng)常用于以更加成本有效的方式改善 由單個SOC提供的速度和/或可靠性。在一個實施例中,集群系統(tǒng)400是高性 能集群(HPC)或者負(fù)載平衡集群。要意識到,集群系統(tǒng)的類型是任意的,取 決于設(shè)計要求。
系統(tǒng)400包括通過網(wǎng)絡(luò)402互連的SOC單元100a-n。在一個實施例中, 網(wǎng)絡(luò)402是本地局域網(wǎng)(LAN)。網(wǎng)絡(luò)的類型以及SOC單元的數(shù)目n是隨意的。 在一個實施例中,SOC 100a-n通過節(jié)點控制器104a-n連接到網(wǎng)絡(luò)402。在本 發(fā)明的一個實施例中,S0C單元100a-n之間的通信通過發(fā)消息來實現(xiàn)。例如, 在"拉"(pull)模式環(huán)境中,源SOC單元的進(jìn)程、線程或者處理器向目標(biāo)SOC 單元發(fā)送信號,表示源SOC的已分配的存儲器中存在消息。目標(biāo)SOC,響應(yīng)所
接收的信號,從源SOC的存儲器取回或者"拉"回消息。在"推"(push)模
式的實施例中,源soc直接向目標(biāo)soc已分配的存儲位置傳輸或者"推"入
消息。在一個實施例中,源SOC和目標(biāo)SOC是獨立磁盤冗余陣列(RAID)系 統(tǒng)的一部分,從源S0C到目標(biāo)S0C的消息是"搏動"(heartbeat)通知,用 于表明源SOC對目標(biāo)SOC的活動操作。拉和推模式的消息將在下面進(jìn)行詳細(xì) 描述。
拉模式的消息
圖4B示出了本發(fā)明的一個實施例的推模式的消息。如圖4B所示,SOC100j 向SOC 100a發(fā)送信號,表示OCM 108j存在消息。該消息可以來自SOC 100j
的處理器,例如處理器110j^,或者來自運(yùn)行在處理器11(^-110T的進(jìn)程或者
線程??赏ㄟ^網(wǎng)絡(luò)402從節(jié)點控制器104j向節(jié)點控制器104a發(fā)送信號。在 一個實施例中,發(fā)信號的過程要求向SOC 100a的存儲位置寫入位,以表示OCM 108j中的消息。節(jié)點控制器104a響應(yīng)從節(jié)點控制器104j接收的表示OCM 108j 中的消息的信號,取回OCM 108j中的消息。在一個實施例中,0CM108j中的 存儲位置是SOC單元100a-n共享的全局地址空間的一部分,以及節(jié)點控制器 104a訪問OCM 108J中已經(jīng)分配給SOC 100a的消息的存儲位置。在另一個實 施例中,OCM 108j將消息存儲在先入先出(FIFO)隊列中,NC 104a讀取OCM 108j的隊列中的消息。在另一個實施例中,在接收到NC 104j的信號時,NC 104a 向NC 104j請求該消息,接著,NC 104j向NC 104a發(fā)送消息。NC 104a將所 獲得的消息存儲在OCM 108a中。將消息存儲在OCM 108a中以進(jìn)行隔離,并 保護(hù)EM 106使其遠(yuǎn)離包含病毒的消息。EM 106a可存儲程序編碼指令,如果 包含病毒的消息存儲在EM 106中,那么,所存儲的程序代碼指令將被污染, 并對SOC 100a具有副作用。通過將OCM 108用作存儲發(fā)送到其他SOC單元或 者從其他SOC單元接收的消息的"信箱",可以隔離EM106,使其遠(yuǎn)離有病毒 的消息。本實施例的另一個優(yōu)點是發(fā)消息的速度,因為OCM 108a和OCM 108j 是共芯片的,且通常是快速RAM例如SRAM。消息404是示范的可用的消息格 式。消息404包括以下的域
域E表示錯誤;
域R表示請求確認(rèn),例如,發(fā)送消息的源SOC將設(shè)置該位,以請求目標(biāo) SOC在處理該消息后發(fā)送一個確認(rèn);
域A表示確認(rèn),目標(biāo)SOC向發(fā)送原消息的源SOC發(fā)送確認(rèn)消息之后,設(shè) 置該位;
域RSVD表示實現(xiàn)特定用法的保留域;
域"Status"表示處理消息的結(jié)果,例如消息可能請求目標(biāo)SOC執(zhí)行一 定的步驟,該狀態(tài)域表示步驟是否完成,以及是否有與這些步驟有關(guān)的結(jié)果;
域INTR表示可能在目標(biāo)SOC產(chǎn)生的中斷的類型(如果有中斷的話)和/ 或消息的優(yōu)先級;
域RID包括唯一標(biāo)識消息的數(shù)據(jù);
域SID表示產(chǎn)生消息的源SOC;以及
域"Software D印endant Context"(軟件依賴內(nèi)容)表示消息的有效載 荷。例如,消息的有效載荷包括可由所接收的SOC處理的數(shù)據(jù)。
要意識到,消息的內(nèi)容和域是任意的,可根據(jù)設(shè)計的要求而變化。在一 個實施例中,OCM 108a和108j的所有或者部分都用作發(fā)送或者接收消息的信 箱。在另一個實施例中,SOC 100a或者SOC 100j的任何的存儲器的特定部分 用做信箱。例如,EM 106a和EM 106j的部分可分別分配為代替OCM 108a和 108j信箱。分配EM 106的特定部分使得程序代碼與消息中潛在的病毒隔開。
推模式的消息
圖4C示出了本發(fā)明的一個實施例的推模式的消息。在本實施例中,SOC 100j將消息404發(fā)送或者"推"到SOC 100a的存儲位置。來自SOC 100j的 消息可發(fā)送到或者推到OCM 108a中的特定位置或者"信箱"。發(fā)送到SOC 100a 的消息可以來自SOC 100j的處理器,例如處理器PRw。消息可由節(jié)點控制器 104j通過網(wǎng)絡(luò)402發(fā)送到節(jié)點控制器104a。在一個實施例中,OCM 108 j的存 儲位置是SOC 100a-lOOn共享的全局地址空間的一部分,節(jié)點控制器104a訪 問OCM 108j中己經(jīng)分配給該消息的存儲位置,并寫該存儲位置。在另一個實
施例中,全局地址空間中為發(fā)送給SOC 100a的消息而分配的存儲位置映射到 OCM 108a的存儲位置。SOC 100a將OCM 108a用作信箱,以存儲從其他SOC 單元接收的消息。在一個實施例中,OCM 108a以FIFO隊列存儲所接收的消息, NC 104a以FIFO順序取得并處理OCM 108a中的消息。OCM 108a用作信箱, 以隔開EM106,讓EM106遠(yuǎn)離可能存在于消息中的病毒或者惡意軟件。例如, EM 106a可存儲程序代碼指令,而包含病毒的消息可能對SOC 100a有副作用。 通過將OCM 108a用作接收其他SOC單元的信箱,可以獨立EM 106并保護(hù)系 統(tǒng)的繼承性(integrity)。本實施例的一個優(yōu)點是發(fā)消息的速度,因為OCM 108 通常是快速RAM或者SRAM。另一個優(yōu)點是使系統(tǒng)獨立,讓系統(tǒng)遠(yuǎn)離可能存在 于所接收的消息中的病毒。消息404與圖4B所述的消息具有相同的域。
圖4D示出了本地SOC實施本發(fā)明所述的推模式發(fā)消息的流程圖。在一個 實施例中,流程圖410的步驟由本地SOC的本地節(jié)點控制器執(zhí)行。
步驟412中,從遠(yuǎn)程SOC接收信號。該信號表示遠(yuǎn)程SOC存在的消息, 也表示遠(yuǎn)程SOC中包含該消息的存儲位置。
在可選步驟414中,本地SOC如果不知道所要訪問的遠(yuǎn)程SOC的存儲位 置,或者不能夠訪問遠(yuǎn)程SOC中包含該消息的存儲位置,本地SOC就向遠(yuǎn)程 SOC請求該消息。在一個實施例中,本地節(jié)點控制器向遠(yuǎn)程節(jié)點控制器請求消 息。
步驟416中,本地SOC從遠(yuǎn)程SOC獲得消息。在一個實施例中,本地SOC 的本地節(jié)點控制器從遠(yuǎn)程SOC的片載存儲器的存儲位置取得消息。存儲位置 可以是用于發(fā)消息的全局地址空間的一部分。替換地,可以使用遠(yuǎn)程SOC中 包含該消息的存儲位置預(yù)編程本地SOC。如果實施了可選步驟414,那么,在 步驟416中,本地控制器接收遠(yuǎn)程SOC的消息,而不是從遠(yuǎn)程SOC取回消息。
步驟418中,本地SOC存儲所接收的消息。在一個實施例中,本地節(jié)點 控制器將消息存儲到本地的片載存儲器中。
圖4E示出了遠(yuǎn)程SOC根據(jù)本發(fā)明進(jìn)行拉模式發(fā)消息的流程圖420。在一 個實施例中,流程圖420的步驟由遠(yuǎn)程節(jié)點控制器執(zhí)行。
步驟422中,遠(yuǎn)程SOC發(fā)送信號,表示其片載存儲器存在消息。該信號
可以表示包含該消息的存儲位置。
可選步驟424中,遠(yuǎn)程SOC接收來自本地SOC的對該消息的請求。
步驟426中,如果步驟424中遠(yuǎn)程SOC接收到來自本地SOC讀該消息的 請求,遠(yuǎn)程SOC就向本地SOC發(fā)送該消息。替換地,遠(yuǎn)程SOC允許本地SOC 訪問包含該消息的遠(yuǎn)程片載存儲器位置。
圖4F示出了遠(yuǎn)程S0C進(jìn)行本發(fā)明的推模式發(fā)消息的流程圖430。在一個 實施例中,流程430的步驟由遠(yuǎn)程節(jié)點控制器執(zhí)行。
步驟432中,確定本地SOC中將要寫入消息的存儲位置??梢詫⒈镜豐OC 中將要使用的存儲位置預(yù)編程到遠(yuǎn)程SOC,或者本地SOC事先表示將要用于發(fā) 消息的存儲位置。替換地,本地SOC中將要寫入的存儲位置可以是用于發(fā)消 息的全局地址空間的一部分。
步驟434中,遠(yuǎn)程SOC將消息寫入到步驟432所確定的存儲位置。替換 地,遠(yuǎn)程SOC的遠(yuǎn)程節(jié)點控制器將消息發(fā)送到本地SOC的本地節(jié)點控制器。
下面將描述節(jié)點控制器和片載存儲器的存儲器鎖配置。
存儲器鎖
存儲器鎖是一種在多個"請求者"在幾乎相同的時間里(例如,soc單元、
線程、進(jìn)程和/或處理器)打算訪問相同的存儲位置的環(huán)境中增強(qiáng)對存儲位置 的訪問的限制的同步機(jī)制。鎖是一種增強(qiáng)協(xié)作控制策略的方式。通常,互相 協(xié)作的請求者使用仲裁協(xié)議來決定哪個請求者得到訪問存儲位置的鎖,仲裁 協(xié)議包括在請求者之間傳遞消息。但是,當(dāng)多個請求者打算同時地訪問相同 的存儲位置時, 一般的仲裁方法是耗時的以及增加了系統(tǒng)開銷。本發(fā)明下面
所述的實施例通過使用節(jié)點控制器104以及OCM 108來實施存儲器鎖,克服 了這種不足。存儲器鎖可在獨立SOCIOO、共享存儲器系統(tǒng)如系統(tǒng)300或者集 群配置如系統(tǒng)400中實施。
圖5A是本發(fā)明的一個實施例的存儲器是存儲位置和存儲器鎖之間的關(guān) 聯(lián)。在圖5A所示的實施例中,OCM 108存儲EM 106中對應(yīng)的存儲位置的鎖條 目(如下所述)。例如,OCM 108中的存儲位置Y存儲EM 106中與存儲位置X
對應(yīng)的鎖條目。如果請求者請求訪問存儲位置X, NC 104將檢測存儲位置Y 的鎖,以確定是否準(zhǔn)許該請求者訪問。根據(jù)一個實施例,節(jié)點控制器104接 收請求者的訪問和寫存儲位置X的請求,檢查OCM 108中的存儲位置Y的鎖 條目,并確定是否準(zhǔn)許請求者的請求。NC 104通過使用EM 106的存儲位置與 OCM 108中存儲鎖的存儲位置之間關(guān)聯(lián)關(guān)系的關(guān)聯(lián)表,確定OCM 108中哪個存 儲位置具有EM 106中的存儲位置的鎖。存儲在OCM 108中的鎖允許兩種操作 模式。 一種操作模式使用"測試和設(shè)置"(test-and-set)鎖,另一種模式使 用"定序器"(sequencer)鎖。
測試和設(shè)置鎖用于自動地寫存儲位置。測試和設(shè)置鎖包括設(shè)置鎖條目中的 值,以獲得鎖,但是首先進(jìn)行一些測試(例如,測試鎖中當(dāng)前設(shè)置的值是0 還是1)。如果測試失敗,將不能獲得或者設(shè)置鎖,從而請求者不能訪問與該 鎖對應(yīng)的存儲位置。請求者必須在隨后再次"測試"鎖,以確定是否能夠獲 得。下面會描述使用測試和鎖定設(shè)置模式的實施例。
在定序器模式中,按照請求者請求訪問和寫存儲位置的順序,給每位請求 者分配門票(ticket)。與被請求的存儲位置對應(yīng)的鎖條目存儲當(dāng)前的門票和 下一門票。在定序器模式中,具有當(dāng)前門票號的請求者得到鎖,并且能夠訪 問對應(yīng)的存儲位置。而存儲位置由當(dāng)前門票的持有者占有;定序器給后續(xù)的 請求者提供唯一的下一張門票。下一張門票號通常以連續(xù)的順序發(fā)布,從而 形成虛擬的先入先出(FIFO)的請求者序列。當(dāng)訪問存儲位置的當(dāng)前門票的 持有者釋放鎖之時,"當(dāng)前門票+l"變成后續(xù)的當(dāng)前門票值。具有該后續(xù)當(dāng)前 門票值的請求者能夠得到鎖,并獲得訪問權(quán)以修改存儲位置。
使用節(jié)點控制器104控制對EM 106的存儲位置的訪問,免除了處理器110 的仲裁負(fù)擔(dān),充分消除了由于仲裁而引起的總線堵塞。因為0CM 108是片載 的,所以訪問0CM 108査找鎖并確定是否授予對應(yīng)的存儲位置的訪問權(quán)是快 速和有效的。
圖5B是存儲在0CM 108的存儲位置中的鎖條目。鎖條目500是示范的格 式,其中的域及域的大小可根據(jù)具體情況而變化。鎖條目500包括以下的域 域Mode表示使用的操作模式。例如,如果模式設(shè)為0,則表示使用"測試和設(shè)置"模式;如果模式設(shè)為1,則表示使用"定序器"模式。下面會對測
試和設(shè)置模式以及定序器模式進(jìn)行更詳細(xì)的描述。
域S或者Set僅僅用于測試和設(shè)置模式。當(dāng)S為0時,鎖是空閑的。如果 請求者嘗試訪問一個存儲位置,而對應(yīng)的鎖條目S顯示為空閑,那么,i將s 設(shè)為1并準(zhǔn)許該請求者訪問。將S位設(shè)為1,在功能上等于獲得鎖。己經(jīng)獲得 鎖之后,就可以訪問對應(yīng)的存儲位置。訪問空閑的鎖條目返回正常值O,軟件 依賴內(nèi)容(Software D印endent Context)域(如下所述)如之前一樣是最 近保存的。獲得鎖之后,設(shè)置所有者身份(OID)域(下面有描述)以表示獲 得該鎖的請求者。
在請求者訪問鎖時,如果NC向請求者返回的S值為1,那么,OID域告 知請求者該位置已設(shè)置鎖。因此,對應(yīng)該鎖的存儲器位置無法訪問。請求者 需要再次嘗試以獲得鎖。
域"R"或"Recovery"位通常在恢復(fù)操作中設(shè)置。當(dāng)R位設(shè)置位0時, 可正常對鎖進(jìn)行訪問。在恢復(fù)過程中,當(dāng)R位被設(shè)為1之時,重新聲明不起 作用的或者閑置請求者當(dāng)前占有的鎖。例如,得到鎖的處理器可能在釋放所 獲得的鎖之前,出現(xiàn)故障而變?yōu)椴黄鹱饔?。?dāng)R設(shè)為1之時,可重設(shè)鎖以還 原鎖。當(dāng)R位設(shè)為1時,還原軟件能夠強(qiáng)行釋放鎖,并重新初始化該鎖所保 護(hù)的對應(yīng)的存儲位置。在還原過程中,啟動還原處理的請求者將R設(shè)為O,并 宣布其他域的語義無效。OID設(shè)為執(zhí)行該還原的請求者的ID。還原了鎖之后, 鎖就能夠正常地起作用了。
域"下一票號"(Next Ticket)存儲僅僅由定序鎖模式使用的值。例如, 在EM 106中,NC 104在接收到訪問一存儲位置的請求時,在0CM 108中查找 與被請求的存儲位置對應(yīng)的鎖。如果該鎖已經(jīng)占用,NC 104就向請求者返回 鎖的下一票號域的當(dāng)前值。接著,NC 104將下一票號域的值加1,并在該鎖 被占用時向下一個請求者返回該值。因此,在等待訪問存儲位置的請求者有 效地將自己插入到一個隊列中,訪問順序由被分配的票(Ticket)號決定。 如果鎖是空閑的,就將當(dāng)前的票分配給請求者,并準(zhǔn)許該請求者訪問對應(yīng)的 存儲位置。在一個實施例中,下一票號是6位的未指定的數(shù)字。在另一個實
施例中,下一票號是由NC 104產(chǎn)生的隨機(jī)的文字和數(shù)字碼。節(jié)點控制器隨后
追蹤文字和數(shù)字碼產(chǎn)生的序列以及按照該順序?qū)υL問進(jìn)行授權(quán)。
域"當(dāng)前票號"存儲僅僅由定序鎖模式使用的值。具有當(dāng)前票號的請求者 被允許獲得鎖,以及訪問對應(yīng)的存儲位置。為了釋放該鎖,請求者在鎖的"當(dāng) 前票號"域中存儲值為"當(dāng)前票號+l"的新值。這有效地允許隊列中的下一 位請求者獲得鎖,以及訪問存儲位置。
域"軟件依賴內(nèi)容"(Software D印endent Context)是96位的域,獲得 對應(yīng)的鎖的請求者可以讀寫該域。該域包含被鎖保護(hù)的結(jié)構(gòu)的指針。當(dāng)請求 者獲得鎖時,他也得到與該鎖對應(yīng)的存儲位置的指針,例如外部存儲器的指 針。系統(tǒng)還原通常要求重建或者重新加載數(shù)據(jù)表。內(nèi)容域可用于避免帶有分 布表管理的顯著性能問題。
如上所述,也可以使用內(nèi)容域來實現(xiàn)有效的硬件信箱。使用這種受保護(hù)的 硬件郵箱,在交換沒有顯示出臨時位置的數(shù)據(jù)時,可以避免高速緩存固有的 開銷。
圖5C1-5C3中示出了根據(jù)本發(fā)明的一個實施例的在測試-設(shè)置模式中的存 儲器操作。在圖5C1-5C3所示的實施例中,模式位設(shè)為0 (對于測試-設(shè)置模 式),沒有使用下一票號和當(dāng)前票域(NA),因為鎖處于測試-設(shè)置模式。R位 是0,表明鎖沒有位于還原模式。在測試-設(shè)置模式的實施例中,值S等于0 表示鎖是空閑的,S等于1表示鎖已經(jīng)被請求者獲得。
如圖5C1所示,NC 104接收請求者Rl的請求,以訪問從而修改EM 106 中的存儲位置X。 NC 104響應(yīng)收到的請求,檢測存儲在0CM 108的存儲位置Y 的、與存儲位置X對應(yīng)的鎖條目500a。在鎖條目500a中,S等于O就表示已 經(jīng)獲得鎖,以及可以訪問對應(yīng)的存儲位置。因此,NC104授予請求者R1訪問 權(quán),讓其修改存儲位置X。隨后,NC 104或者請求者R1將鎖條目500a修改 為鎖條目500b。在鎖條目500b中,S設(shè)為l, OID設(shè)為Rl,表示請求者Rl已 經(jīng)獲得存儲位置Y的鎖。
在圖5C2中,NC 104接收請求者R2要訪問進(jìn)而修改EM 106的存儲位置X 的請求。NC 104響應(yīng)所接收的請求,檢測存儲在與存儲位置X對應(yīng)的存儲位
置Y的鎖條目500b。在鎖條目500b中,S為1以及0ID為R1,表明當(dāng)前是請 求者R1占有鎖。這樣,請求者R2不能修改對應(yīng)的存儲位置X。因此,NC104 拒絕請求者R2修改存儲位置X的請求。為能夠訪問和修改存儲位置X,請求 者R2將必須再次嘗試。
在圖5C3中,請求者Rl釋放存儲位置X。 NC 104將S設(shè)為0,將鎖條目 500b變?yōu)殒i條目500c。因為鎖己經(jīng)釋放,所以EM 106中的存儲位置X再次 可用于修改。在再次接收到請求者R2要修改存儲位置X的請求時,NC 104 檢測鎖條目500c。在鎖條目500c中,因為S設(shè)為0,所以可以獲得鎖。因此, NC 104準(zhǔn)許請求者R2修改存儲位置X。 NC 104或者請求者R2通過將S設(shè)為 1,以及將OID設(shè)為R2,將鎖條目500c修改為鎖條目500d。鎖條目500d這 時候表示OCM 108的存儲位置Y的鎖已經(jīng)被獲取,而請求者R2目前具有修改 ME 106的存儲位置X的權(quán)限。
圖5C4中示出了本發(fā)明的實施例中,節(jié)點控制器在測試-設(shè)置模式下執(zhí)行 的步驟。
步驟512中,接收到要修改第一存儲的請求。在本實施例中,節(jié)點控制器 接收的請求可以來自SOC、處理器、線程或者進(jìn)程等。
步驟514中,檢測與第一存儲位置對應(yīng)的第二存儲位置,以確定第一存儲 位置是否可用。在一個實施例中,節(jié)點控制器査找表格,以確定對應(yīng)第一存 儲位置的第二存儲位置。第二存儲位置可位于芯片存儲器中。第二存儲位置 的數(shù)據(jù)可以是鎖條目,該鎖條目具有表示第一存儲為是否可用從而可進(jìn)行修 改的域。
步驟516中,如果步驟514中確定第一存儲位置不可進(jìn)行修改,那么,請
求者就被拒絕訪問修改第一存儲位置。第一存儲位置顯示為鎖定。
步驟518中,如果步驟514中確定第一存儲位置可進(jìn)行修改,那么,就準(zhǔn)
許該請求者訪問和修改第一存儲位置。如果步驟512中有多個請求者請求第 一存儲位置,節(jié)點控制器就準(zhǔn)許第一位請求者訪問和修改第一存儲位置。
步驟520中,修改第二存儲位置的條目,以表示第一存儲位置被鎖定。同 時存儲當(dāng)前訪問第一存儲位置的請求者的ID。
在可選的步驟522中,如果步驟512中有多個請求者,就拒絕剩余的請求 者訪問和修改第一存儲位置。
序列模式
圖5D1-5D3示出了根據(jù)本發(fā)明的一個實施例的定序模式進(jìn)行存儲器鎖定 的操作。在圖5D1-5D3所示的實施例中,"Mode"域設(shè)為1,沒有使用"S"域 (NA),因為沒有使用測試-設(shè)置模式。R位設(shè)為0,表示鎖不處于還原模式。
圖5D1中,NC 104接收到Rl修改EM 106的存儲位置的請求。圖5D1所 示的實施例的初始開始條件是Rl是第一個請求訪問和修改存儲位置X的請 求者,且沒有在先的請求者。在NC 104檢測0CM 108中的存儲位置Y的鎖500e 時,因為該初始條件,所以沒有使用當(dāng)前票號、下一票號和OID域(NA)。 NC 104響應(yīng)所接收的請求,準(zhǔn)許請求者R1訪問和修改存儲位置X,以及給R1分 配當(dāng)前票號,例如"A"。 NC 104或者請求者R1將鎖條目500e更新為鎖條目 500f,鎖條目500f表示當(dāng)前票號為A,下一票號為A+1,以及0ID為R1,表 示請求者Rl當(dāng)前占有0CM 108的存儲位置Y的鎖,并具有修改ME 106的存 儲位置X的權(quán)利。
在圖5D2中,NC 104接收請求者R2修改EM 106的存儲位置X的請求。 NC 104響應(yīng)該請求,檢查與存儲位置X對應(yīng)的存儲在存儲位置Y的鎖條目 500f。鎖條目500f中,當(dāng)前票號是A, 0ID是R1,表示該鎖當(dāng)前為請求者Rl 所占有。NC 104拒絕請求者R2的訪問,并授予請求者R2下一票號值A(chǔ)+1。 當(dāng)具有票號A的請求者Rl釋放鎖時,具有票號A+l的請求者R2將得到授權(quán) 以訪問和修改存儲位置X。 NC 104或者請求者R2將鎖條目500f改為鎖條目 500g,以表示下一票號為A+2。請求者R2之后的請求者將被授予票號A+2。 因此,在存儲位置X不可用于修改時,將可以保護(hù)請求者的順序。
圖5D3中,請求者Rl釋放存儲位置X,因為R2是隊列中的下一位并具有 票號A+1,因為R2得到授權(quán)訪問和修改存儲位置X。鎖條目500g被更新為鎖 條目500h,表示當(dāng)前票號是A+1; 0ID是R2,表示R2為鎖的當(dāng)前占有者。如 果R2沒有占有存儲位置X,例如,R2不再需要修改存儲位置X或者R2發(fā)生
故障,就將鎖的所有權(quán)授予隊列中的下一請求者。
應(yīng)當(dāng)意識到,如果請求者不能釋放鎖,可將R設(shè)為1重新獲得鎖,開始恢 復(fù)模式。
圖5D4示出了根據(jù)本發(fā)明的一個實施例中,定序模式中的節(jié)點控制器執(zhí)行 的步驟530的流程圖。
步驟532中,接收對第一存儲器的第一存儲位置的修改的請求。例如,節(jié) 點控制器接收請求者的請求,請求者可以是SOC、處理器、線程或者進(jìn)程。第 一存儲器可以是外接到SOC的RAM。節(jié)點控制器可以接收多個請求者的多個訪 問和修改第一存儲位置的請求。
步驟534中,檢査第二存儲位置中與第一存儲位置對應(yīng)的條目,以確定第 一存儲位置是否可以修改。在一個實施例中,為了確定第二存儲位置,節(jié)點 控制器査找包含與第一存儲位置對應(yīng)的第二存儲位置的表格。第二存儲位置 可位于第二存儲器中,例如在片載存儲器中。替換地,第二存儲位置可以在 第一存儲器中。第二存儲位置的數(shù)據(jù)可以是上述的鎖條目。鎖條目的內(nèi)容, 例如鎖條目的OID域表示是否存在第一存儲位置的當(dāng)前所有者。替換地,當(dāng) 前票號和下一票號域表示步驟532中當(dāng)前請求者前面的請求者。
步驟536中,如果步驟534中確定第一存儲位置不能進(jìn)行修改,那么,就 給步驟532中的請求者分配票號。將請求者插入到隊列中,請求者將按照所 分配的票號的順序訪問存第一存儲位置。
步驟538中,更新與第一存儲位置對應(yīng)的第二存儲位置,以改變下一票號。
步驟540中,如果步驟536中確定第一存儲位置可進(jìn)行修改,就授權(quán)步驟 532中的請求者訪問存儲位置。同時從鎖的當(dāng)前票號域中給步驟532的請求者 分配當(dāng)前票號值。在完成第一存儲位置的修改之后,請求者使用當(dāng)前票號值 釋放第一存儲位置的鎖。
步驟542中,更新第二存儲位置的條目,以反映步驟532中的請求者作為 鎖的當(dāng)前所有者和當(dāng)前票號的持有者。
圖5D5示出了本發(fā)明的一個實施例中,請求訪問和修改存儲位置的請求者 執(zhí)行的流程圖。 步驟552中,發(fā)送修改存儲位置的請求。請求可以發(fā)送給控制存儲位置的 遠(yuǎn)程節(jié)點控制器。在一個實施例中,請求者可以是SOC、處理器、線程或者進(jìn) 程。
步驟554中,判斷是否接收到修改存儲位置的授權(quán)。
步驟556中,如果步驟554中被拒絕修改存儲位置的授權(quán),就接收到票號。 該票號可接收自節(jié)點控制器。票號表示隊列中的請求者訪問存儲位置的順序。 請求者在隊列中等待,以按次序修改存儲位置。
步驟558中,請求者按照步驟556中接收到的票號接收到授權(quán),該請求者 現(xiàn)在可以修改存儲位置了。
步驟560中,請求者釋放鎖,從而允許隊列中的下一個請求者訪問存儲位 置。例如,請求者向節(jié)點控制器發(fā)送票號,節(jié)點控制器反過來釋放鎖,并授 權(quán)隊列中下一請求者。
步驟562中,如果步驟554中接收到修改存儲位置的授權(quán),那么,請求者 就修改存儲位置。接著,如步驟560所述釋放鎖。
在定序模式的操作中,如果控制器接收到多個修改存儲位置的請求,這多 個請求在時間上很接近,定序器按照請求到達(dá)的順序?qū)φ埱筮M(jìn)行排序,并按 該順序分配票號。在一個替換的實施例中,控制器按照請求的優(yōu)先級分配票 號。優(yōu)先級可以是請求者在發(fā)送請求時一起發(fā)送的正數(shù)。更高優(yōu)先級的請求 表示更高的優(yōu)先。在另一個實施例中,結(jié)合使用到達(dá)時間和優(yōu)先級對請求者 進(jìn)行排序。例如,如果到達(dá)時間和優(yōu)先級都被加權(quán),就使用線性組合來對請 求者進(jìn)行排序以及分配票號。
測試-設(shè)定模式的軟件實施例
在一個實施例中,節(jié)點控制器104受軟件控制。在該實施例中,節(jié)點控制 器104僅僅支持存儲位置的互斥(mutual exclusion)。需要依靠軟件將鎖關(guān) 聯(lián)到需要保護(hù)的存儲位置。該軟件知道硬件輸出n個存儲位置,這n個存儲 位置可用作鎖。接著,軟件給需要保護(hù)的數(shù)據(jù)對象分配或者關(guān)聯(lián)特定的鎖。 在這個實施例中,節(jié)點控制器104簡單執(zhí)行所需要的操作,以支持測試-設(shè)置
鎖模式的語義。這簡化了節(jié)點控制器104的硬件。硬件不需要簿記鎖來關(guān)聯(lián) 鎖和該鎖所保護(hù)的存儲位置。
參考圖5A,在測試-設(shè)置模式中,使請求者R訪問存儲位置X的軟件偽代 碼如下所示,其中,存儲位置X與存儲在存儲位置Y的鎖對應(yīng)。
While(Test-and-Set(Lock)二二l); access and modify memory location X; Unlock(lock).
在上面的偽代碼中,測試-設(shè)置命令引起節(jié)點控制器104返回存儲在 0CM108的存儲位置Y的條目的設(shè)置域的當(dāng)前值。代碼進(jìn)行循環(huán),直到鎖是空 閑的,也就是說,直到節(jié)點控制器返回0,表示鎖是空閑的,請求者R可獲 得鎖。測試-設(shè)置命令也控制節(jié)點控制器將存儲位置Y的鎖的設(shè)置域改為1。 所有者標(biāo)識符域(0ID)的變化表示只有在設(shè)置域為0時,請求者R才是當(dāng) 前所有者。請求者R訪問和修改存儲位置X。 Unlock (解鎖)命令將設(shè)置域 改為0,以允許另外的請求者訪問存儲位置X。
參考圖5A,在定序模式中,使請求者R訪問存儲位置X的軟件偽代碼如 下所示,其中,存儲位置X與存儲在存儲位置Y的鎖對應(yīng)。
Ticket二Get一Ticket();
while(ticket!=Read—Current—Ticket 0);
access and modify memory location X;
Increment—Ticket ();
在上面這段偽代碼中,Get—Ticket ()命令控制節(jié)點控制器104返回0CM 108的存儲位置Y的條目的下一票號。該票號分配給請求者R,并存儲在變 量"Ticket"中。Read_Current—Ticket ()命令讓節(jié)點控制器104返回存儲 在0CM 108的存儲位置Y的當(dāng)前票號值。請求者R保持檢查存儲位置Y的當(dāng) 前票號值,直到存儲位置Y的當(dāng)前票號值等于分配給請求者R的票號值。在 得到授權(quán)訪問存儲位置X并對其進(jìn)行修改之后,請求者R發(fā)出 Increment—Ticket ()命令,增加存儲位置X的當(dāng)前票號值,并允許隊列中的
下一請求者獲得存儲位置Y的鎖,并訪問存儲位置X。
在圖5所示的實施例中,OCM 108可存儲與EM 106的存儲位置對應(yīng)的鎖。 另一個實施例中,OCM 108存儲EM 106 (但不限于EM 106)的存儲位置的鎖 條目,例如,還可以包括高速緩存、硬盤驅(qū)動器等。在另外一個實施例中, 是存儲器模塊而不是OCM 108存儲存儲器鎖。例如,可分配EM 106的一部 分用于存儲EM 106其余部分存儲位置的鎖。
典型的計算機(jī)系統(tǒng)
在本文檔中,詞語"計算機(jī)程序媒介"和"計算機(jī)可用的媒介"通常指可 移動的存儲單元、安裝在硬盤驅(qū)動器中的硬盤以及信號(即,電子的、電磁 的、光學(xué)的或者其他類型的可通過通信接口接收的信號)。這些計算機(jī)程序 產(chǎn)品給計算機(jī)系統(tǒng)提供軟件。在一個實施例中,本發(fā)明涉及這種計算機(jī)產(chǎn)品。 在一個實施例中,本發(fā)明使用軟件來實現(xiàn)。軟件可存儲在計算機(jī)產(chǎn)品中, 并加載到使用移動存儲驅(qū)動器、硬盤驅(qū)動器或者通信接口的計算機(jī)系統(tǒng)(例 如客戶端或者主機(jī))。處理器執(zhí)行控制邏輯(軟件)時,控制邏輯讓處理器 處理本發(fā)明的功能。進(jìn)一步地,傳感器可以執(zhí)行計算機(jī)可讀的指令以收集數(shù) 據(jù)。再進(jìn)一步地,臨近的域收發(fā)器可執(zhí)行計算機(jī)可讀的指令,以與傳感器和 /或探頭進(jìn)行通訊。
根據(jù)本發(fā)明的一方面,客戶端可執(zhí)行計算機(jī)可讀的指令,以讀取上述的 探頭。此外,在一個實施例中,探頭可以執(zhí)行計算機(jī)可讀的指令,以響應(yīng)客 戶端發(fā)射的信號,如本說明書的其他地方所述。
總結(jié)
上述對本發(fā)明的優(yōu)選實施例的描述的目的是為了舉例說明及描述。這些 實施例不是窮盡性的,也就是說本發(fā)明不受所公開的精確形式的限制;顯然, 在本發(fā)明的教導(dǎo)下,可對這些實施例做出多種修改和變化。對實施例的選擇 和描述是為了對本發(fā)明的原理及其實踐應(yīng)用做出最佳解釋,以使本領(lǐng)域的技 術(shù)人員能夠最好地利用本發(fā)明、以及為配合特殊用途對各種實施例進(jìn)行修改。
本發(fā)明的范圍由本發(fā)明的權(quán)利要求及其等同限定。上述對本發(fā)明的優(yōu)選實施 例的描述的目的是為了舉例說明及描述。這些實施例不是窮盡性的,也就是 說本發(fā)明不受所公開的精確形式的限制;顯然,在本發(fā)明的教導(dǎo)下,可對這 些實施例做出多種修改和變化。對實施例的選擇和描述是為了對本發(fā)明的原 理及其實踐應(yīng)用做出最佳解釋,以使本領(lǐng)域的技術(shù)人員能夠最好地利用本發(fā) 明、以及為配合特殊用途對各種實施例進(jìn)行修改。本發(fā)明的范圍由本發(fā)明的 權(quán)利要求及其等同限定。
權(quán)利要求
1、一種本地SOC,其特征在于,包括本地控制器;以及片載存儲器;其中,所述本地控制器響應(yīng)遠(yuǎn)程SOC的遠(yuǎn)程控制器的訪問存儲位置的請求,確定所述本地SOC是否獨占所述存儲位置,如果所述本地SOC獨占性占有所述存儲位置,就發(fā)送所述存儲位置的數(shù)據(jù),并將條目存儲到所述片載存儲器中,所述條目表示所述遠(yuǎn)程SOC已經(jīng)產(chǎn)生請求。
2、 根據(jù)權(quán)利要求1所述的本地S0C,其特征在于,所述條目標(biāo)識所述請 求是否請求獨占所述存儲位置。
3、 根據(jù)權(quán)利要求1所述的本地S0C,其特征在于,所述條目中的一個特 定域存儲用于標(biāo)識所述遠(yuǎn)程S0C的數(shù)據(jù)。
4、 根據(jù)權(quán)利要求3所述的本地S0C,其特征在于,所述域中的每一位對應(yīng)于共享存儲系統(tǒng)的中的S0C,所述共享存儲系統(tǒng)包 括多個S0C;如果某位設(shè)為1,則表示該位所對應(yīng)的soc已經(jīng)請求訪問所述存儲位置。
5、 根據(jù)權(quán)利要求1所述的本地S0C,其特征在于,所述單元還包括連接 到本地S0C外接存儲器的多個處理器以及存儲控制器。
6、 根據(jù)權(quán)利要求1所述的本地S0C,其特征在于,所述本地SOC和遠(yuǎn)程 S0C通過高速緩存一致性非統(tǒng)一存儲訪問(CCNUMA)的可擴(kuò)展一致性接口連接。
7、 根據(jù)權(quán)利要求1所述的本地S0C,其特征在于,所述片載存儲器是靜 態(tài)隨機(jī)訪問存儲器,所述本地控制器是節(jié)點控制器。
8、 在本地SOC中維持存儲一致性的方法,所述本地S0C是共享存儲系統(tǒng) 的一部分,所述方法包括接收遠(yuǎn)程S0C的遠(yuǎn)程控制器訪問存儲位置的請求;從所述存儲位置發(fā)送被請求的數(shù)據(jù)給所述遠(yuǎn)程S0C的遠(yuǎn)程控制器;以及 將標(biāo)識所述遠(yuǎn)程S0C的條目存儲在本地片載存儲器中。
9、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述請求是獨占請求,所 述獨占請求允許所述遠(yuǎn)程S0C遠(yuǎn)程修改存儲在所述存儲位置的數(shù)據(jù)副本。
10、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括通過本 地節(jié)點控制器接收所述請求。
全文摘要
本發(fā)明涉及本地SOC和在本地SOC中維持存儲一致性的方法,所述SOC是分布式共享存儲系統(tǒng)的一部分。本發(fā)明提供一種本地SOC單元,其包括本地控制器以及片載存儲器。其中,所述本地控制器響應(yīng)遠(yuǎn)程SOC的訪問存儲位置的請求,確定所述本地SOC是否獨占所述存儲位置,如果所述本地SOC獨占所述存儲位置,就發(fā)送所述存儲位置的數(shù)據(jù),并將條目存儲到所述片載存儲器中,所述條目表示所述遠(yuǎn)程SOC請求所述存儲位置的數(shù)據(jù)。該條目表示遠(yuǎn)程SOC的請求是否獨占該存儲位置。該條目也包括用于將遠(yuǎn)程SOC表示為請求者的域。所請求的存儲位置可以是外接到本地SOC單元,或者外接到本地SOC單元中。
文檔編號G06F12/08GK101183338SQ20071018062
公開日2008年5月21日 申請日期2007年9月26日 優(yōu)先權(quán)日2006年9月29日
發(fā)明者舫 龐 申請人:美國博通公司