專利名稱:信息處理設(shè)備及防止未授權(quán)訪問的方法
技術(shù)領(lǐng)域:
本文討論的實施例涉及一種信息處理設(shè)備以及一種防止未授權(quán)訪問的方法。
背景技術(shù):
已知如下傳統(tǒng)信息處理系統(tǒng):其具有群集配置,在群集配置中,使用LAN或InfiniBand來連接每個均具有至少CPU和存儲器的多個節(jié)點,并且執(zhí)行包括在這些節(jié)點中的操作系統(tǒng)(OS)。使用具有該群集配置的信息處理系統(tǒng),每個CPU共享節(jié)點中的存儲器并且并行地執(zhí)行過程。圖33是示出具有群集配置的信息處理系統(tǒng)的示意圖。在圖33所示的示例中,信息處理系統(tǒng)包括通過LAN或InfiniBand而彼此連接的節(jié)點50至52。節(jié)點50包括存儲器50a,OS 50b和中央處理器(CPU)50c。類似地,節(jié)點51包括存儲器51a、0S 51b和CPU 51c。節(jié)點52包括存儲器52a、OS 52b和CPU 52c。節(jié)點50至52分別執(zhí)行OS 50b至52b,并且OS 50b至52b中的每個在每個節(jié)點中是獨立的,由此防止在OS 50b至52b之一中發(fā)生的故障被傳播到整個信息處理系統(tǒng)中。此夕卜,包括在節(jié)點50至52中的一個或更多個CPU 50c至52c分別共享每個節(jié)點中的存儲器50a至52a并通過LAN或InfiniBand訪問包括在其他節(jié)點中的存儲器。圖34是示出節(jié)點間的存儲器訪問的示意圖。例如,節(jié)點50通過驅(qū)動、OS和硬件向節(jié)點51發(fā)送由在節(jié)點50中運行的應(yīng)用所發(fā)出的存儲器訪問請求。通過這樣做,節(jié)點51通過硬件、OS和驅(qū)動向節(jié)點51中的應(yīng)用報告從節(jié)點50接收的請求,并允許該應(yīng)用執(zhí)行存儲器訪問。在這點上,在具有群集配置的信息處理系統(tǒng)中,因為通過要訪問的節(jié)點中的應(yīng)用來執(zhí)行存儲器訪問,所以存儲器訪問的等待時間增加,因此應(yīng)用的架構(gòu)復(fù)雜。因此,存在具有如下共享存儲器配置的已知信息處理系統(tǒng):其中多個節(jié)點通過互連而連接并且每個節(jié)點中的應(yīng)用直接訪問執(zhí)行到相同存儲器地址空間上的映射的存儲器。圖35是示出使用共享存儲器配置技術(shù)的信息處理系統(tǒng)的示意圖。在圖35所示的示例中,節(jié)點53通過互連而連接到節(jié)點54,并且遠程存儲器被映射到可以被由節(jié)點53和節(jié)點54中的每個執(zhí)行的應(yīng)用直接訪問的地址空間。與關(guān)于每個節(jié)點中的存儲器的存儲器訪問類似,由節(jié)點53和節(jié)點54執(zhí)行的應(yīng)用各自發(fā)出關(guān)于遠程存儲器的存儲器訪問請求。此外,存在如下已知技術(shù):其通過設(shè)置用于訪問存儲器存儲區(qū)的存儲密鑰來防止對不預(yù)被應(yīng)用訪問的存儲區(qū)的未授權(quán)訪問。圖36是示出用于防止未授權(quán)存儲器訪問的功能的示意圖。例如,在圖36所示的示例中,OS在用于2kb或4kb的存儲區(qū)中預(yù)先設(shè)置4位存儲密鑰。此外,當OS設(shè)置程序計數(shù)器時,該OS在程序狀態(tài)字中將用于被應(yīng)用使用的存儲區(qū)的存儲密鑰設(shè)置為訪問密鑰。然后,指令單元讀取程序計數(shù)器并向存儲器訪問單元發(fā)出存儲器訪問請求。此外,當存儲器訪問單元獲得來自指令單元的存儲器訪問請求時,存儲器訪問單元確定在程序狀態(tài)字中設(shè)置的訪問密鑰是否與存儲密鑰匹配。
如果存儲器訪問單元確定存儲密鑰與訪問密鑰匹配,則存儲器訪問單元允許存儲器訪問并向指令單元輸出存儲在要訪問的存儲區(qū)中的數(shù)據(jù)。此外,如果存儲密鑰不與訪問密鑰匹配,則存儲器訪問單元不允許存儲器訪問并防止對不預(yù)被應(yīng)用訪問的存儲區(qū)的未授權(quán)訪問。專利文獻1:國際專利申請的日本國家公開N0.2009-537879專利文獻2:日本特許公開公報N0.05-204762專利文獻3:日本特許公開公報N0.2000-235558然而,存在如下問題:當由節(jié)點執(zhí)行的應(yīng)用發(fā)生故障并且從而不能與其他節(jié)點進行通信時,具有上述共享存儲器配置的信息處理系統(tǒng)不能正確地執(zhí)行要由故障節(jié)點執(zhí)行的過程轉(zhuǎn)移到其他節(jié)點的故障轉(zhuǎn)移(failover)。接下來,將參照圖37A和圖37B描述未正確地執(zhí)行故障轉(zhuǎn)移的情況。圖37A是示出其中未正常地執(zhí)行故障轉(zhuǎn)移的示例的第一示意圖。圖37B是示出其中未正常地執(zhí)行故障轉(zhuǎn)移的示例的第二示意圖。在圖37A和圖37B所示的示例中,將描述在由節(jié)點55執(zhí)行的應(yīng)用發(fā)生了問題并因而不能與其他節(jié)點進行通信的情況。例如,如圖37A所示,節(jié)點56接收來自由節(jié)點55執(zhí)行的應(yīng)用的存儲器訪問;然而,因為不能與節(jié)點55進行通信,所以節(jié)點56確定節(jié)點55發(fā)生了故障。在這種情況下,如圖37B所示,執(zhí)行將由節(jié)點55執(zhí)行的過程轉(zhuǎn)移到節(jié)點57的故障轉(zhuǎn)移。然而,因為節(jié)點56不能與節(jié)點55進行通信,所以節(jié)點56不允許由被停止的節(jié)點執(zhí)行的存儲器訪問,即來自節(jié)點55的存儲器訪問。因此,發(fā)生了節(jié)點55和節(jié)點57 二者同時執(zhí)行相應(yīng)的節(jié)點55和節(jié)點57中的應(yīng)用的裂腦(split brain)狀態(tài),因此未正確地執(zhí)行故障轉(zhuǎn)移。因此,可以構(gòu)思通過使用用于在具有共享存儲器配置的信息處理系統(tǒng)中設(shè)置上述存儲密鑰的技術(shù)并通過改變存儲密鑰來防止從另外的節(jié)點到節(jié)點中的存儲器的訪問。然而,借助于上述用于設(shè)置存儲密鑰的技術(shù),單個OS設(shè)置存儲密鑰和應(yīng)用密鑰兩者。因此,當在不同的節(jié)點(即存儲器訪問源的節(jié)點和要訪問的節(jié)點)中執(zhí)行OS時,因為存儲密鑰未變化,所以難以防止來自故障節(jié)點的訪問。因此,本發(fā)明的實施例的一個方面的目的是在共享存儲器配置中正確地執(zhí)行故障轉(zhuǎn)移。
發(fā)明內(nèi)容
根據(jù)實施例的一個方面,信息處理設(shè)備包括具有第一節(jié)點和第二節(jié)點的多個節(jié)點以及連接所述節(jié)點的互連裝置,其中該多個節(jié)點中的每個包括處理器和存儲器,該存儲器中的至少部分區(qū)域被設(shè)置為共享存儲區(qū)。第一節(jié)點包括:第一存儲單元,其中存儲用于訪問第二節(jié)點的存儲器的標識信息;以及發(fā)送單元,其通過附加第一存儲單元中所存儲的標識信息來將要發(fā)送的通信數(shù)據(jù)發(fā)送給第二節(jié)點。第二節(jié)點包括:第二存儲單元,其中存儲用于控制對另一節(jié)點對第二節(jié)點的存儲器中的共享存儲區(qū)的訪問的許可的標識信息;以及控制單元,其基于附加到從第一節(jié)點發(fā)送的通信數(shù)據(jù)的標識信息和存儲在第二存儲單元中的標識信息來確定是否允許訪問第二節(jié)點的存儲器中的共享存儲區(qū)。
圖1是示出根據(jù)第一實施例的信息處理系統(tǒng)的示意圖;圖2是示出根據(jù)第一實施例的節(jié)點的功能配置的示意圖;圖3是示出根據(jù)第一實施例的存儲器的分配的示意圖;圖4是示出其中根據(jù)第一實施例的信息處理系統(tǒng)對每個存儲器進行映射的存儲器映射的示意圖;圖5是示出由根據(jù)第一實施例的信息處理系統(tǒng)分配的共享存儲區(qū)的示意圖;圖6是示出根據(jù)第一實施例的共享存儲器段管理表的示意圖;圖7是示出根據(jù)第一實施例的存儲器令牌管理表的示意圖;圖8是示出根據(jù)第一實施例的CPU的示例的示意圖;圖9是示出根據(jù)第一實施例的用于訪問令牌表的寄存器的配置的示意圖;圖10是示出訪問令牌表中的寄存器字段的示意圖;圖11是示出根據(jù)第一實施例的存儲器令牌檢查器的示例的示意圖;圖12是示出存儲器訪問請求的示例的示意圖;圖13是示出由操作碼表示的過程示例的示意圖;圖14是示出由訪問確定控制器執(zhí)行的確定的示例的示意圖;圖15是示出由主狀態(tài)機(home state machine)執(zhí)行的過程的內(nèi)容的示意圖;圖16是示出節(jié)點間的存儲器訪問流程的示意圖;圖17是示出用于停止由故障節(jié)點執(zhí)行的存儲器訪問的過程的示意圖;圖18是示出用于防止來自已經(jīng)發(fā)生了故障的節(jié)點的存儲器訪問的過程的第一示意圖;圖19是示出用于防止來自已經(jīng)發(fā)生了故障的節(jié)點的存儲器訪問的過程的第二示意圖;圖20是示出用于獲得訪問令牌的過程的流程的順序圖;圖21是示出用于訪問多個段的過程的流程的順序圖;圖22是示出上下文切換的流程的順序圖;圖23是示出用于改變存儲器令牌的過程的流程的順序圖;圖24是示出用于改變存儲器令牌的過程的變型的順序圖;圖25是示出用于斷開故障節(jié)點的過程的流程的順序圖;圖26是示出用于改變存儲器令牌的過程的流程的流程圖;圖27是示出用于更新共享存儲器段管理表和存儲器令牌管理表的過程的流程的流程圖;圖28是示出共享存儲器段管理表的更新的示意圖;圖29是示出存儲器令牌管理表的更新的示意圖;圖30是示出支持多線程的訪問令牌表的示例的示意圖;圖31是示出存儲器令牌檢查器的變型的示意圖;圖32是示出僅允許先前允許的節(jié)點執(zhí)行存儲器訪問的存儲器令牌檢查器的示意圖;圖33是示出具有群集配置的信息處理系統(tǒng)的示意圖34是示出節(jié)點間的存儲器訪問的示意圖;圖35是示出使用共享存儲器配置技術(shù)的信息處理系統(tǒng)的示意圖;圖36是示出用于防止未授權(quán)存儲器訪問的功能的示意圖;圖37A是示出其中未正常執(zhí)行故障轉(zhuǎn)移的示例的第一示意圖;以及圖37B是示出其中未正常執(zhí)行故障轉(zhuǎn)移的示例的第二示意圖。
具體實施例方式將參照附圖來說明本發(fā)明的優(yōu)選實施例。[a]第一實施例在下面描述的第一實施例中,將參照圖1描述信息處理系統(tǒng)的示例。圖1是示出根據(jù)第一實施例的信息處理系統(tǒng)的示意圖。在圖1所示的示例中,信息處理系統(tǒng)I包括客戶端2、客戶端2a、局域網(wǎng)(LAN)交換機3、管理終端4、LAN交換機5、雙全局交叉開關(guān)6以及節(jié)點10至10m。全局交叉開關(guān)6包括服務(wù)處理器7。在第一實施例中,節(jié)點是在其中運行單個且獨立的操作系統(tǒng)(OS)并僅包括用于運行OS的最少所需裝置的單元。如后面將要描述的,該節(jié)點包括一個或更多個CPU、存儲器和硬盤驅(qū)動器(HDD)或代替HDD的外部存儲裝置。該節(jié)點也可以是單個物理裝置或者也可以由通過使用例如線纜連接的多個裝置物理地構(gòu)成。節(jié)點10至IOm通過服務(wù)LAN連接到LAN交換機3以及客戶端2與客戶端2a。此夕卜,節(jié)點10至IOm通過內(nèi)部LAN連接到LAN交換機5。此外,節(jié)點10至IOm通過管理LAN連接到管理終端4。此外,節(jié)點10至IOm連接到雙全局交叉開關(guān)6,并且通過互連而彼此連接??蛻舳?和客戶端2a中的每個通過服務(wù)LAN從節(jié)點10至IOm中的每個節(jié)點獲得服務(wù)。盡管未在圖1中示出,信息處理系統(tǒng)I還可以包括任意數(shù)目的附加客戶端。節(jié)點10包括服務(wù)處理器11、CPU 12和本地XB (交叉開關(guān))16。類似于節(jié)點10,其他節(jié)點IOa至IOm分別包括服務(wù)處理器Ila至llm、CPU12a至12m以及本地XB 16a至16m。服務(wù)處理器11至IIm中的每個通過管理LAN連接到管理終端4,并執(zhí)行管理控制,例如節(jié)點10至IOm中的每個的電源的管理。包括在全局交叉開關(guān)6中的服務(wù)處理器7作為服務(wù)處理器11至Ilm的主控器(master)來進行操作,并執(zhí)行整體管理控制。由服務(wù)處理器7以及服務(wù)處理器11至Ilm中的每個執(zhí)行的管理控制的示例包括電源管理、復(fù)位、改變操作模式、增加或刪除節(jié)點的設(shè)置、收集錯誤日志以及退化(degeneracy)的操作控制。此外,節(jié)點10至IOm獨立地執(zhí)行操作系統(tǒng)(OS)。盡管未在圖1中示出,但是節(jié)點10至IOm中的每個分別包括除CPU 12至12m之外的多個CPU。節(jié)點10至IOm中的CPU分別通過本地XB 16至16m連接到全局交叉開關(guān)6。節(jié)點10至IOm中的CPU向各個本地XB16至16m輸出作為對存儲器訪問的請求的存儲器訪問請求,由此CPU向其他節(jié)點發(fā)送存儲器訪問請求。然后,當節(jié)點10至IOm中的CPU獲得存儲器訪問請求時,CPU以與CPU訪問連接到自身CPU的存儲器所執(zhí)行的存儲器訪問類似的方式來執(zhí)行存儲器訪問。接下來,將參照圖2描述節(jié)點10至IOm的功能配置。在下面的描述中,將描述節(jié)點10的功能配置。節(jié)點IOa至IOm中的每個執(zhí)行與由節(jié)點10執(zhí)行的過程相同的過程;因此,將省略其描述。圖2示出了根據(jù)第一實施例的節(jié)點的功能配置的示意圖。在圖2所示的示例中,節(jié)點10包括服務(wù)處理器11、CPU 12至15、本地XB 16、存儲器17至24以及快速外周部件互聯(lián)(PCIe)開關(guān)25。此外,節(jié)點10包括用來連接到服務(wù)LAN的LAN適配器26、連接到管理LAN的LAN適配器27、串行連接SCSI (SAS) 28以及硬盤驅(qū)動器(HDD) 29。存儲器17和存儲器18連接到CPU 13,并且是接受由CPU 13執(zhí)行的存儲器訪問的存儲裝置。存儲器19和存儲器20連接到CPU 12,并且是接受由CPU 12執(zhí)行的存儲器訪問的存儲裝置。存儲器21和存儲器22連接到CPU 14,并且是接受由CPU 14執(zhí)行的存儲器訪問的存儲裝置。存儲器23和存儲器24連接到CPU 15,并且是接受由CPU 15執(zhí)行的存儲器訪問的存儲裝置。在圖2所示的示例中,節(jié)點10包括HDD 29 ;然而,實施例并不限制于此。例如,還可以通過使用例如存儲域網(wǎng)絡(luò)(SAN)技術(shù)的技術(shù)將HDD 29布置在節(jié)點10的外部。服務(wù)處理器11執(zhí)行節(jié)點10的管理控制。具體地,服務(wù)處理器11包括處理器和現(xiàn)場可編程門陣列(FPGA),該FPGA執(zhí)行過程并且通過管理LAN從管理終端4接收執(zhí)行管理控制的指令。然后,服務(wù)處理器11根據(jù)從管理終端4接收的指令來執(zhí)行各種管理控制。PCIe開關(guān)25是控制對例如通過PCIe槽連接到CPU 12至15的每個的I/O裝置的訪問的開關(guān)。LAN適配器26是將服務(wù)LAN連接到節(jié)點10的LAN適配器。LAN適配器27是將管理LAN連接到節(jié)點10的LAN適配器。SAS 28是用于LAN的或安裝在PCIe槽中的SAS的適配器,其中繼HDD 29與CPU 12至15中的每個CPU之間的連接。接下來,將描述CPU 12至15。在下面的描述中,將描述CPU 12。CPU 13至15具有與由CPU 12執(zhí)行的功能相同的功能;因此,將省略其描述。CPU 12和其他CPU 13至15全部互相連接。此外,CPU 12包括高速緩沖存儲器,該高速緩沖存儲器高速緩存由存儲器19或存儲器20存儲的數(shù)據(jù),并且CPU 12通過使用高速緩存的數(shù)據(jù)來執(zhí)行運算處理。此外,CPU 12具有執(zhí)行對存儲器19和存儲器20中的每個的存儲器訪問的存儲器接口功能。此外,CPU 12具有PCIe接口功能,其通過使用HDD 29、內(nèi)部LAN或管理LAN、經(jīng)由PCIe開關(guān)25來控制訪問。此外,CPU 12通過互連經(jīng)由本地XB 16和全局交叉開關(guān)6連接到包括其他節(jié)點IOa至IOm中的CPU,并且具有在各個CPU之間發(fā)送和接收存儲器訪問請求的互連路由器功能。具有這種配置的CPU 12例如在由要執(zhí)行的過程向存儲器19或存儲器20發(fā)出存儲器訪問請求時,執(zhí)行以下過程。具體地,CPU 12訪問存儲器19或存儲器20并高速緩存要訪問的數(shù)據(jù)。此外,當通過要執(zhí)行的過程向除存儲器19和存儲器20之外的存儲器發(fā)出存儲器訪問請求時,CPU 12識別連接到作為存儲器訪問目標的存儲器的CPU,并且向所識別的CPU發(fā)送存儲器訪問請求。具體地,CPU 12具有如下節(jié)點映射:要訪問的存儲器地址與唯一地指示訪問由存儲器地址指示的存儲區(qū)的CPU的信息相關(guān)聯(lián)。然后,如果過程發(fā)出存儲器訪問請求,則CPU 12參照節(jié)點映射,并識別與作為存儲器訪問目標的存儲器地址相關(guān)聯(lián)的CPU。之后,CPU 12創(chuàng)建其目的地為所識別的CPU的分組(packet)、將存儲器訪問請求存儲在所創(chuàng)建的分組中、并將該分組輸出給相互連接的CPU 12至15,或輸出給本地XB 16。如果該分組被輸出給本地XB 16,則本地XB 16通過全局交叉開關(guān)6將該分組發(fā)送給對應(yīng)于該分組的目的地的CPU。在這點上,除了上述過程之外,CPU 12執(zhí)行以下過程。首先,CPU12預(yù)先在位于存儲器19和存儲器20的存儲區(qū)之間的、與其他節(jié)點共享的存儲區(qū)中設(shè)置被稱為存儲器令牌的值。然后,CPU 12將允許訪問的存儲區(qū)通知給向存儲器19或存儲器20發(fā)出存儲器訪問請求的CPU,并將作為訪問令牌的與所通知的存儲區(qū)相關(guān)聯(lián)的存儲器令牌通知給該CPU。
此外,CPU 12預(yù)先從CPU 12向其發(fā)送存儲器訪問請求的節(jié)點獲得訪問令牌,并保留所獲得的訪問令牌。然后,如果CPU 12發(fā)出存儲器訪問請求,則CPU 12將所保留的訪問令牌和存儲器訪問請求一起存儲在分組中并發(fā)送該分組。此外,如果CPU 12接收到來自其他節(jié)點中的CPU的存儲器訪問請求,則CPU 12確定與存儲器訪問請求一起接收到的訪問令牌是否和與要訪問的存儲區(qū)相關(guān)聯(lián)的存儲器令牌相匹配。如果訪問令牌與存儲器令牌匹配,則CPU 12執(zhí)行存儲器訪問;反之,如果訪問令牌與存儲器令牌不匹配,則CPU 12拒絕執(zhí)行存儲器訪問。如果CPU 12執(zhí)行關(guān)于存儲器19或存儲器20的存儲器訪問,則CPU12執(zhí)行用于保留由存儲器19或存儲器20高速緩存的數(shù)據(jù)的一致性(coherency)的過程。例如,CPU 12向高速緩存了來自存儲器19或存儲器20的數(shù)據(jù)的CPU發(fā)送探聽(snoop ),并執(zhí)行被高速緩存的數(shù)據(jù)的回寫。本地XB 16是將包括在節(jié)點10中的CPU 12至15與包括在節(jié)點IOa至IOm中的CPU之間交換的分組傳送到指定的目的地的開關(guān)。例如,本地XB 16將由CPU 12發(fā)出并且要發(fā)送給CPU 12a的分組通過全局交叉開關(guān)6發(fā)送給包括在節(jié)點IOa中的CPU 12a。存儲器17至存儲器24是其中存儲由每個OS或應(yīng)用使用的數(shù)據(jù)的存儲器,其例如為雙列直插式存儲模塊(DIMM)。此外,存儲器17至24映射相同的存儲器地址空間。此外,存儲器17至24每個均具有可以僅被同一節(jié)點中的CPU 12至15訪問的區(qū)域,即,作為專屬于包括CPU 12至15的節(jié)點的區(qū)域的局部區(qū)域。此外,存儲器17至24每個均具有可以被包括在信息處理系統(tǒng)I中的任意CPU訪問的區(qū)域,即,具有可以被所有節(jié)點使用的共享存儲區(qū)。此外,存儲器17至24的共享存儲區(qū)被劃分為多個段。每個段是其中由存儲器令牌執(zhí)行訪問控制的受保護區(qū),或者是不由存儲器令牌執(zhí)行訪問控制的非保護區(qū)。接下來,將參照圖3和圖4描述被映射到存儲器17至24中的存儲器地址。圖3是示出根據(jù)第一實施例的存儲器的分配的示意圖。例如,在包括在每個CPU中的兩個存儲器之間,信息處理系統(tǒng)I將一個存儲器用作僅用于本地區(qū)域的存儲器而將另一個存儲器用作僅用于共享存儲區(qū)的存儲器。具體地,如圖3中的(A)所示,將存儲器17、存儲器19、存儲器21和存儲器23用作專用于節(jié)點的存儲器,而如圖3中的(B)所示,將存儲器18、存儲器20、存儲器22和存儲器24用作共享存儲器。圖4是示出其中根據(jù)第一實施例的信息處理系統(tǒng)對每個存儲器進行映射的存儲器映射的示意圖。圖4示出了如下示例:其中準備了總共128TB的存儲器地址空間,其中128TB中的64TB被分配給本地區(qū)域而128TB中的64TB被分配給共享存儲區(qū)。例如,信息處理系統(tǒng)I在用作包括在節(jié)點10至IOm中的存儲器的本地區(qū)域的區(qū)域中分配存儲器地址“O”到“246-1 ”。此外,信息處理系統(tǒng)I在用作包括在節(jié)點10至IOm中的存儲器的共享存儲區(qū)的區(qū)域中分配存儲器地址“246”至“247-1 ”。具體地,在圖3和圖4所示的示例中,信息處理系統(tǒng)I將圖4中的(C)所示的區(qū)域中的存儲器地址映射到圖3中的(A)所示的存儲器17、存儲器19、存儲器21及存儲器23上。此外,信息處理系統(tǒng)I將圖4中的(D)所示的區(qū)域的存儲器地址映射到圖3中的(B)所示的存儲器18、存儲器20、存儲器22及存儲器24上。在圖4中所示的地址“247”到“248_1”是用作不可高速緩存(UC)區(qū)域的地址范圍,并且是用于例如由諸如HDD29的I/O裝置使用的I/O空間的地址范圍。如上所述,信息處理系統(tǒng)I將單個存儲器地址空間映射到包括在節(jié)點10至IOm中的存儲器。因此,任意的CPU可以直接訪問任意節(jié)點中的共享存儲區(qū)。在圖4中所示的存儲器映射僅僅是示例性的;因此,也可以執(zhí)行任意分配。具體地,不需要將存儲器映射上的所有存儲器地址分配給存儲器。例如,也可以存在存儲器空洞(memory hole)。此外,也可以設(shè)置存儲器映射以使得包括在信息處理系統(tǒng)I中的每個節(jié)點中存在由OS使用的本地區(qū)域以及在一個或更多個節(jié)點中存在共享存儲區(qū)。如果信息處理系統(tǒng)I將連續(xù)的存儲器地址映射到包括在單個節(jié)點中的存儲器(例如,存儲器17和存儲器18)上,則信息處理系統(tǒng)I可以刪除控制資源。此外,信息處理系統(tǒng)I分配存儲器地址,使得段區(qū)域至少是對齊的。接下來,將參照圖5描述分配給每個節(jié)點中的存儲器的共享存儲區(qū)。圖5是示出由根據(jù)第一實施例的信息處理系統(tǒng)分配的共享存儲區(qū)的示意圖。在圖5所示的示例中,將描述如下情況:信息處理系統(tǒng)I包括節(jié)點#0至#n,并向節(jié)點#0至#n分配共享存儲區(qū)。例如,如圖5中的(I)所示,信息處理系統(tǒng)I向節(jié)點#0至#n的每個節(jié)點分配64TB的本地區(qū)域和64TB的共享存儲區(qū)。具體地,如圖5中的(2)所示,信息處理系統(tǒng)I向節(jié)點#0至#n中的每個均等地分配64TB的共享存儲區(qū)。在這點上,節(jié)點#0至#n中的每個將所分配的共享存儲區(qū)劃分為受保護區(qū)和非保護區(qū)。在此提及的受保護區(qū)是當從另一節(jié)點接收到存儲器訪問請求時通過確定訪問令牌是否與存儲器令牌匹配來保護訪問的區(qū)域。在此提及的非保護區(qū)是另外的節(jié)點可以在自由地執(zhí)行存儲器訪問的區(qū)域。例如,如圖5中的(3)所示,對于分配給節(jié)點#1的共享存儲區(qū),節(jié)點#1可以使用最大4TB來作為受保護區(qū)或非保護區(qū)。此外,如在圖5中的(4)所示,節(jié)點#1將共享存儲區(qū)劃分為對應(yīng)于具有2GB的段#0至#2047的段。然后,如圖5中的(5)所示,節(jié)點#1對于每個段設(shè)置存儲器令牌。此外,在圖5所示的示例中,節(jié)點#1將段#0至#2用作為受保護區(qū)并在每個段中設(shè)置存儲器令牌。存儲器令牌例如為13位的值。在圖5所示的示例中,節(jié)點#1將段#3至#2047設(shè)置為非保護區(qū)并將“allO”設(shè)置為存儲器令牌。具體地,當節(jié)點#0至#n中的每個訪問對應(yīng)的非保護區(qū)時,節(jié)點可以通過使用訪問令牌“allO”來訪問該非保護區(qū)。此外,節(jié)點#m也將自己的共享存儲區(qū)劃分為段#0至#2047,并在段#0至#2047的每個中設(shè)置存儲器令牌。如圖5中的(6)所示,由節(jié)點#m在段#0至#2047的每個中設(shè)置的存儲器令牌被節(jié)點#1用作為訪問令牌。因此,當節(jié)點#1訪問節(jié)點#m中的共享存儲區(qū)時,節(jié)點#1獲得由節(jié)點#m設(shè)置的存儲器令牌并且將所獲得的存儲器令牌用作為訪問令牌,由此節(jié)點#1訪問節(jié)點#m中的共享存儲區(qū)。節(jié)點#0至#n中的每個在本地區(qū)域中包括用來管理每個共享存儲區(qū)中的每個段的共享存儲器段管理表。此外,為了防止在多個段中設(shè)置相同的存儲器令牌,節(jié)點#0至#n中的每個在本地區(qū)域中包括用來管理已經(jīng)被設(shè)置的存儲器令牌的存儲器令牌管理表。接下來,將參照圖6和圖7描述共享存儲器段管理表和存儲器令牌管理表。首先,將參照圖6描述共享存儲器段管理表的示例。圖6是示出根據(jù)第一實施例的共享存儲器段管理表的示意圖。圖6示出了包括在節(jié)點#2中的共享存儲器段管理表。如圖6所示,共享存儲器段管理表在其中存儲段號、使用標記、應(yīng)用ID、使用節(jié)點標記和令牌。段號是表示共享存儲區(qū)中的每個段的號。使用標記是表示每個段是否被使用的標記。應(yīng)用ID是唯一地表示使用每個段的過程的ID。使用節(jié)點標記是表示使用每個段的節(jié)點的標記。令牌是在每個段中設(shè)置的存儲器令牌。圖6所示的示例表示節(jié)點#2中的段#0和段#1被節(jié)點#1所執(zhí)行的過程中的由應(yīng)用ID “100”表示的過程所使用,并且表示存儲器令牌分別為“3015”和“2156”。此外,該示例表示節(jié)點#2中的段#2未被使用以及段#3被節(jié)點#3所執(zhí)行的過程中的由應(yīng)用ID“150”表示的過程所使用,并且表示存儲器令牌為“allO”,即段#3是非保護區(qū)。節(jié)點#0至#n中的每個通過使用圖6中所示的共享存儲器段管理表來執(zhí)行從其他節(jié)點接收到的存儲器訪問。例如,節(jié)點#2獲得來自由節(jié)點#1中的應(yīng)用ID “100”表示的過程的訪問令牌“3015”以及關(guān)于段#0的存儲器訪問請求。在這種情況下,因為所獲得的訪問令牌與共享存儲器段管理表中存儲的存儲器令牌匹配,所以節(jié)點#2執(zhí)行存儲器訪問。反之,如果節(jié)點#2獲得來自由節(jié)點#1中的應(yīng)用ID “100”表示的過程的訪問令牌“3000”以及關(guān)于段#0的存儲器訪問請求,節(jié)點#2確定存儲器令牌與訪問令牌不匹配。因此,節(jié)點#2不執(zhí)行存儲器訪問請求。此外,節(jié)點#0至#n中的每個改變其中一個段中的存儲器令牌,節(jié)點#0至#n中的每個參照共享存儲器段管理表,并識別正使用與被改變的存儲器令牌相關(guān)聯(lián)的段的節(jié)點。然后,節(jié)點#0至#n中的每個將新的存儲器令牌通知給所識別出的節(jié)點。也可以通過共享存儲器驅(qū)動來設(shè)置共享存儲器段管理表,該存儲器驅(qū)動是任意管理共享存儲區(qū)的驅(qū)動軟件。例如,當信息處理系統(tǒng)I啟動時或當信息處理系統(tǒng)I首次訪問共享存儲區(qū)時,共享存儲驅(qū)動創(chuàng)建共享存儲器段管理表。接下來,將參照圖7描述存儲器令牌管理表。圖7是示出根據(jù)第一實施例的存儲器令牌管理表的示意圖。在圖7所示的示例中,存儲器令牌管理表以相關(guān)聯(lián)的方式在其中存儲存儲器令牌的值、使用標記和應(yīng)用ID。圖7示出了由節(jié)點#1存儲的存儲器令牌管理表。例如,圖7所示的存儲器令牌管理表的示例表示存儲器令牌“O”和存儲器令牌“I”被分配給由應(yīng)用ID “100”表示的過程所使用的段。此外,存儲器令牌管理表表示存儲器令牌“ 2 ”沒有被分配給段。此外,存儲器令牌管理表表示儲器令牌“ 3 ”被分配給由應(yīng)用ID “150”表示的過程所使用的段。類似于共享存儲器段管理表,共享存儲器驅(qū)動也可以任意創(chuàng)建存儲器令牌管理表。接下來,將參照圖8描述CPU 12的具體功能配置示例。圖8是示出根據(jù)第一實施例的CPU的示例的示意圖。在圖8所示的示例中,假設(shè)CPU12是包括多個核的多核處理器,并且是包含I級(LI)高速緩存、L2高速緩存以及存儲器訪問控制器(MAC)的處理器。如圖8所示,CPU 12包括多個核30a和30d、LI高速緩存30b和30e以及多個轉(zhuǎn)換旁路緩沖器(TLB)30c和30f。此外,CPU 12包括分別用于核30a和核30d的訪問令牌表31和31a。此外,CPU 12包括2級(L2)高速緩存標簽32、L2高速緩存32a、高速緩存探聽控制器33、存儲器請求狀態(tài)機34、地址映射35、存儲器訪問端口 36和目標地址檢查器37。此外,CPU 12包括存儲器令牌檢查器38、主狀態(tài)機39、存儲器訪問控制器40、非高速緩存請求狀態(tài)機41、PCIe接口 42以及錯誤寄存器43。此外,CPU 12包括寄存器控制器44和路由器46。寄存器控制器44包括請求寄存器45。圖8中未示出除了核30a與核30d之外的核;然而,CPU12可以包括任意數(shù)目的核。核30a與核30d通過使用LI高速緩存30b和30e中存儲的數(shù)據(jù)來執(zhí)行運算處理。LI高速緩存30b和30e是可以被高速訪問的存儲裝置,并且是高速緩沖存儲器19和20中所存儲的數(shù)據(jù)的高速緩沖存儲器。TLB30c和30f將由核30a與核30d輸出的虛擬地址轉(zhuǎn)換為物理地址。訪問令牌表31是如下寄存器:其存儲被用來使得由核30a執(zhí)行的過程訪問共享存儲區(qū)的訪問令牌。例如,在訪問令牌表31中設(shè)置被另一個節(jié)點使用由核30a執(zhí)行的應(yīng)用而通知的訪問令牌。如果要訪問的數(shù)據(jù)未保留在LI高速緩存30b中,則核30a既輸出目標訪問的物理地址又輸出表示存儲器訪問請求的操作碼。然后,訪問令牌表31向L2高速緩存標簽32輸出設(shè)置的訪問令牌和存儲器訪問請求兩者。訪問令牌表31是當由核30a執(zhí)行的過程發(fā)生變化時執(zhí)行上下文切換的寄存器。因此,當CPU 12將核30a所執(zhí)行的過程改變?yōu)榱硪粋€過程時,CPU 12容易地改變在訪問令牌表31中設(shè)置的訪問令牌。具體地,當CPU12改變核30a所執(zhí)行的過程時,CPU 12可以通過僅執(zhí)行上下文切換來快速且容易地改變訪問令牌而無需再次從要訪問的節(jié)點接收訪問令牌表的通知。L2高速緩存標簽32是用于L2高速緩存32a的標簽并且是用于訪問L2高速緩存32a的途徑。此外,L2高速緩存標簽32具有對關(guān)于相同地址的由核30a與核30d發(fā)出的存儲器訪問請求執(zhí)行串行化處理的機制。高速緩存探聽控制器33控制L2高速緩存32a的探聽。具體地,高速緩存探聽控制器33接收通過主狀態(tài)機39或其他節(jié)點發(fā)出的探聽。然后,通過向L2高速緩存標簽32a發(fā)出探聽,高速緩存探聽控制器33檢查要被L2高速緩存32a高速緩存的數(shù)據(jù)的狀態(tài)。此后,高速緩存探聽控制器33向作為探聽的發(fā)出源的主狀態(tài)機39或其他節(jié)點發(fā)送L2高速緩存32a的探聽結(jié)果。如果L2高速緩存32a中未存儲要訪問的數(shù)據(jù),即L2高速緩存32a中發(fā)生了高速緩存缺失,則存儲器請求狀態(tài)機34執(zhí)行以下過程。具體地,存儲器請求狀態(tài)機34向主狀態(tài)機39發(fā)出存儲器訪問請求并管理過程直到獲得響應(yīng)為止。此外,如果存儲器請求狀態(tài)機34在從發(fā)出存儲器訪問請求到獲得響應(yīng)的時間段內(nèi)獲得目標為同一存儲器地址的存儲器訪問請求,則存儲器請求狀態(tài)機34允許隨后的存儲器訪問請求等待。然后,如果發(fā)出了對先前存儲器訪問請求的響應(yīng),則存儲器請求狀態(tài)機34發(fā)出被使得等待的存儲器訪問請求。此外,存儲器請求狀態(tài)機34包括多個入口,向存儲器請求附加8位入口 ID (其是用于每個入口的標識符),并發(fā)出該存儲器請求。此外,通過向地址映射35輸出對應(yīng)于存儲器訪問請求的目標的物理地址,存儲器請求狀態(tài)機34獲得訪問由該物理地址表示的存儲區(qū)的CPU的標識符。然后,存儲器請求狀態(tài)機34通過使用作為目的地ID (DID) (BP,目的地)的CPU標識符來發(fā)出存儲器訪問請求。地址映射35以相關(guān)聯(lián)的方式在其中存儲物理地址和訪問由該物理地址表示的存儲區(qū)的CPU的標識符,并且將物理地址轉(zhuǎn)換為CPU的標識符。例如,當?shù)刂酚成?5從存儲器請求狀態(tài)機34獲得物理地址時,地址映射35向存儲器請求狀態(tài)機34發(fā)出被存儲的并與所獲得的物理地址相關(guān)聯(lián)的的CPU標識符作為DID。存儲器訪問端口 36是如下端口:其接收關(guān)于存儲器19或存儲器20的存儲器訪問請求,即接收關(guān)于主節(jié)點(其本身的節(jié)點)的存儲器訪問請求。例如,存儲器訪問端口 36是FIFO并且暫時保留關(guān)于主節(jié)點的存儲器訪問請求。如果主狀態(tài)機39變成其可以執(zhí)行存儲器訪問請求的狀態(tài),則存儲器訪問端口 36向目標地址檢測器37、存儲器令牌檢查器38和主狀態(tài)機39發(fā)出所保留的存儲器訪問請求。目標地址檢查器37從存儲器訪問端口36確定對應(yīng)于用于存儲器訪問請求的目標訪問的存儲器地址是否為在本身的節(jié)點中的存儲器的存儲器地址,即存儲器19或存儲器20的存儲器地址。然后,目標地址檢查器37將確定結(jié)果通知給主狀態(tài)機39。存儲器令牌檢查器38確定在對應(yīng)于用于存儲器訪問請求的目標訪問的存儲器地址中設(shè)置的存儲器令牌是否和與存儲器訪問請求一起發(fā)出的訪問令牌匹配。如果存儲器令牌與訪問令牌匹配,則存儲器令牌檢查器38向主狀態(tài)機39發(fā)出表示允許訪問的信號。此夕卜,如果存儲器令牌與訪問令牌不匹配,則存儲器令牌檢查器38向主狀態(tài)機39發(fā)出表示不允許訪問的信號。存儲器令牌檢查器38包含在其中存儲存儲器令牌的存儲器令牌寄存器。寄存器控制器44設(shè)置或更新存儲器令牌。主狀態(tài)機39基于與存儲器訪問請求一起發(fā)出的訪問令牌是否與存儲器令牌匹配來執(zhí)行存儲器訪問。具體地,主狀態(tài)機39從存儲器訪問端口 36獲得存儲器訪問請求。此夕卜,主狀態(tài)機39從目標地址檢查器37獲得表示存儲器訪問請求的目標是否為本身的節(jié)點的確定結(jié)果。此外,主狀態(tài)機39從存儲器令牌檢查器38獲得表示允許訪問的信號或表示不允許訪問的信號。然后,如果主狀態(tài)機39獲得表示存儲器訪問請求的目標是本身的節(jié)點的確定結(jié)果并且獲得表示允許訪問的信號,則主狀態(tài)機39執(zhí)行存儲器訪問。反之,如果主狀態(tài)機39獲得表示存儲器訪問請求目標不是本身的節(jié)點的確定結(jié)果或獲得表示不允許訪問的信號,則主狀態(tài)機39執(zhí)行訪問出錯處理,而不執(zhí)行存儲器訪問請求。此外,如果主狀態(tài)機39獲得表示不允許訪問的信號,則主狀態(tài)機39在錯誤寄存器43中存儲表示存儲器令牌與訪問令牌不匹配的令牌不匹配錯誤。此外,如果主狀態(tài)機39執(zhí)行存儲器訪問,則主狀態(tài)機39執(zhí)行以下過程。首先,主狀態(tài)機39向存儲器訪問控制器40發(fā)出針對存儲器訪問請求的物理地址并且從存儲器19或存儲器20獲得針對存儲器訪問請求的數(shù)據(jù)。然后,主狀態(tài)機39通過使用目錄信息來確定所獲得的數(shù)據(jù)的高速緩存狀態(tài)。然后,主狀態(tài)機39根據(jù)確定結(jié)果發(fā)出探聽等,并且執(zhí)行使得所獲得的數(shù)據(jù)與所高速緩存的數(shù)據(jù)匹配的過程。針對用于匹配所獲得的數(shù)據(jù)和所高速緩存的數(shù)據(jù)的過程使用用于維持一致性的傳統(tǒng)方法。然后,主狀態(tài)機39執(zhí)行例如讀取或?qū)懭氲拇鎯ζ髟L問,然后向發(fā)出源發(fā)送關(guān)于存儲器訪問的完成響應(yīng)。
存儲器訪問控制器40執(zhí)行關(guān)于存儲器19和存儲器20的存儲器訪問。例如,存儲器訪問控制器40從主狀態(tài)機39獲得讀取物理地址和數(shù)據(jù)的指令。然后,存儲器訪問控制器40向主狀態(tài)機39發(fā)送存儲在由該物理地址表示的存儲區(qū)中的數(shù)據(jù)。此外,當存儲器訪問控制器40從主狀態(tài)機39獲得物理地址、寫入指令和數(shù)據(jù)時,存儲器訪問控制器40將所獲得的數(shù)據(jù)寫入由該物理地址表示的存儲區(qū)中。存儲器訪問控制器40也可以具有巡查功能或用于執(zhí)行諸如改寫(correct write)的過程的功能。非高速緩存請求狀態(tài)機41從包括在CPU 12中的核30a與核30d或包括在其他CPU之一中的核接收從UC區(qū)域中的存儲器地址獲得的指令,并通過PCIe執(zhí)行過程的設(shè)置。例如,如果核30a與核30d中的每個獲得關(guān)于諸如HDD 29的I/O裝置的讀取或?qū)懭胝埱螅瑒t非高速緩存請求狀態(tài)機41向PCIe接口 42發(fā)出所獲得的請求。然后,如果非高速緩存請求狀態(tài)機41從PCIe接口 42接收到對所述請求的響應(yīng),則非高速緩存請求狀態(tài)機41向核30a與核30d發(fā)送所獲得的響應(yīng)。此外,非高速緩存請求狀態(tài)機41從核30a與核30d中的每個獲得關(guān)于寄存器控制器44的請求。在這種情況下,非高速緩存請求狀態(tài)機41向寄存器控制器44發(fā)出所獲得的請求。此外,如果非高速緩存請求狀態(tài)機41從寄存器控制器44獲得對該請求的響應(yīng),則非高速緩存請求狀態(tài)機41向核30a與核30d發(fā)送所獲得的響應(yīng)。此外,如果非高速緩存請求狀態(tài)機41通過寄存器控制器44從服務(wù)處理器11獲得針對地址映射的設(shè)置請求,則非高速緩存請求狀態(tài)機41具有用于根據(jù)所獲得的請求來設(shè)置地址映射35的功能。PCIe接口 42連接到PCIe開關(guān)25并且是用于PCIe的根組件(root complex)。例如,當PCIe接口 42從非高速緩存請求狀態(tài)機41獲得關(guān)于I/O裝置等的請求時,PCIe接口42通過PCIe開關(guān)25向I/O裝置等發(fā)出所獲得的請求。然后,當PCIe接口 42通過PCIe開關(guān)25獲得響應(yīng)時,PCIe接口 42向非高速緩存請求狀態(tài)機41發(fā)送所獲得的響應(yīng)。此外,PCIe接口 42具有直接存儲器訪問(DMA)的功能,并且可以向任意CPU發(fā)出DMA請求。此外,當PCIe接口 42從其他節(jié)點獲得DMA請求時,PCIe接口 42執(zhí)行DMA請求并然后向請求源發(fā)出DMA響應(yīng)。錯誤寄存器43是保留發(fā)生在CPU12中的錯誤信息的寄存器。寄存器控制器44是對在CPU12中的寄存器進行寫入或讀取的控制器。例如,錯誤寄存器43具有用于將物理地址轉(zhuǎn)換為寄存器地址的功能。然后,寄存器控制器44從非高速緩存請求狀態(tài)機41等獲得與由物理地址指定的關(guān)于寄存器的讀請求或?qū)懻埱?。然后,寄存器控?4將所指定的物理地址轉(zhuǎn)換為寄存器地址并對由寄存器地址所指定的寄存器進行寫入或讀取。此外,寄存器控制器44包括請求寄存器45并且通過內(nèi)部集成電路(12C)或聯(lián)合測試行動小組(JTAG)接口從服務(wù)處理器11獲得關(guān)于請求寄存器45的讀請求或?qū)懻埱?。在這種情況下,寄存器控制器44執(zhí)行所獲得的請求并且向服務(wù)處理器11輸出響應(yīng)。例如,當寄存器控制器44經(jīng)由非高速緩存請求狀態(tài)機41通過由核30a與核30d執(zhí)行的過程而被指示改變存儲器令牌時,寄存器控制器44更新存儲器令牌寄存器,這將在后面進行描述。路由器46是用于互連的路由器,并向由DID指定的目的地CPU發(fā)送分組。此外,當路由器46發(fā)送分組時,路由器46附加有循環(huán)冗余校驗(CRC)值以保護要發(fā)送的分組。
在圖8所示的示例中,由“探聽”表示探聽,由“響應(yīng)”或“Rsp”表示響應(yīng),由“地址”表示物理地址,由“令牌”表示存儲器令牌或訪問令牌。此外,在圖8所示的示例中,由“op碼”表示操作碼。此外,由“主請求”表示由存儲器請求狀態(tài)機34發(fā)出的存儲器訪問請求,即來自本身節(jié)點的請求。此外,由“MEM Req"表示存儲器訪問請求,而由“MEM Rsp”表示對存儲器訪問請求的響應(yīng)。特別地,由“來自本身節(jié)點的MEM Rsp”表示從其本身節(jié)點中的存儲器接收的對存儲器訪問請求的響應(yīng),而由“來自其他節(jié)點的MEM Rsp”表示從其他節(jié)點中的存儲器接收的響應(yīng)。此外,由“對其他節(jié)點的MEM Rsp”表示對來自其他節(jié)點的存儲器訪問請求的響應(yīng)。此外,由“來自其他節(jié)點的探聽”表示來自其他節(jié)點的探聽,而由“對其他節(jié)點的探聽”表示向其他節(jié)點發(fā)送的探聽。此外,由“對本身的節(jié)點的探聽”表示向其本身節(jié)點中的L2高速緩沖存儲器發(fā)出的探聽,而由“對本身的節(jié)點的探聽Rsp”表示對向其本身節(jié)點的L2高速緩沖存儲器發(fā)出的探聽的響應(yīng)。此外,由“來自其他節(jié)點的探聽Rsp”表示對已向其他節(jié)點發(fā)送的探聽響應(yīng),而由“對其他節(jié)點的探聽Rsp”表示要向其他節(jié)點發(fā)送的探聽響應(yīng)。此外,由“NC (不一致)Req/NC響應(yīng)”表示由非高速緩存請求狀態(tài)機41發(fā)送的請求和響應(yīng)。由“REG R/ff REQ及響應(yīng)”表示關(guān)于寄存器的讀請求和寫請求以及由寄存器控制器44發(fā)送和接收的響應(yīng)。此外,由“Register R/W及響應(yīng)”表示由寄存器控制器44執(zhí)行的對寄存器進行的讀取或?qū)懭?。由“PCI CNFG Req及響應(yīng)”表示通過PCIe接口 42的請求和響應(yīng)。此外,由“DMA請求”表示DMA請求,而由“DMA響應(yīng)”表示DMA響應(yīng)。接下來,將參照圖9描述用作包括在CPU 12中的寄存器的訪問令牌表31。圖9是示出根據(jù)第一實施例的用于訪問令牌表的寄存器配置的示意圖。如圖9所示,CPU 12包括多個地址空間標識符(ASI)寄存器47至47c,可以將數(shù)據(jù)從核30a直接寫入該ASI寄存器。此外,CPU 12將ASI寄存器之一作為訪問令牌表31。圖10是示出訪問令牌表中的寄存器字段的示意圖。在圖10所示的示例中,訪問令牌表31具有包括“O”到“31”位的32位字段,并將從“31”到“13”的位用作保留字段。此外,訪問令牌表31將從“12”到“O”的位作為包含訪問令牌的字段。在這點上,訪問令牌表31將對應(yīng)于從“12”到“O”的位的13個位用作訪問令牌。具體地,當訪問令牌表31設(shè)置和段的數(shù)目具有相同數(shù)目的訪問令牌時,訪問令牌表31不設(shè)置用于自由訪問的訪問令牌。因此,訪問令牌表31設(shè)置大于段數(shù)目的數(shù)目的訪問令牌。將返回參照圖9進行描述。核30a向ASI寄存器47至47c中的每個以及訪問令牌表31發(fā)出“ASI Reg R/W命令”、“地址[11:2]”以及“字節(jié)使能[3:0]”。在此提及的“ASIReg R/W命令”是對ASI寄存器47至47c中的每個以及訪問令牌表31進行讀取或?qū)懭氲闹噶蠲睢T诖颂峒暗摹暗刂穂11:2]”是作為存儲器訪問請求的目標的虛擬地址。此外,在此提及的“字節(jié)使能[3:0]”表示指示使能狀態(tài)的位。當核30a指示對ASI寄存器47至47c中的每個以及訪問令牌表31進行寫入時,核30a同時發(fā)出“ASI Reg寫入數(shù)據(jù)[31:0]”.
當ASI寄存器47至47c中的每個獲得進行讀取的指令命令時,ASI寄存器47至47c中的每個發(fā)出“讀取數(shù)據(jù)Reg A[31:0] ”至“讀取數(shù)據(jù)Reg X[31:0] ”。然后,訪問令牌表31輸出“讀取數(shù)據(jù)RegAKT
”。之后,核30a基于“讀取數(shù)據(jù)RegA[31:0] ”、“讀取數(shù)據(jù)Reg X[31:0]”以及“讀取數(shù)據(jù)Reg AKT [O:31] ”來獲得“讀取數(shù)據(jù)[31:0] ”。
在這點上,當訪問令牌表31獲得進行讀取的指令命令時,訪問令牌表31輸出訪問令牌[12:0]。當LI高速緩存30b從核30a接收到作為存儲器訪問請求的“MEM REQ”時,LI高速緩存30b確定是否發(fā)生高速緩存命中(cache hit)。如果發(fā)生高速緩存命中,LI高速緩存30b向核30a發(fā)送其中已經(jīng)發(fā)生高速緩存命中的數(shù)據(jù)作為“MEM REQ LlHIT Rsp”。反之,如果發(fā)生了高速緩存缺失,則LI高速緩存30b向TLB 30c發(fā)送存儲器訪問請求。TLB 30c將作為存儲器訪問請求的目標的虛擬地址轉(zhuǎn)換為物理地址,并且向L2高速緩存標簽32發(fā)出存儲器訪問請求。L2高速緩存標簽32確定在對應(yīng)于存儲器訪問請求的目標的物理地址中是否發(fā)生了高速緩存命中。如果發(fā)生了高速緩存命中,則L2高速緩存標簽32通過TLB 30c向LI高速緩存30b與核30a發(fā)送數(shù)據(jù)。反之,如果發(fā)生了高速緩存缺失,則L2高速緩存32a向存儲器請求狀態(tài)機34發(fā)送存儲器訪問請求。此時,由訪問令牌表31發(fā)出的訪問令牌[12:0]被附加到存儲器訪問請求中。然后,向存儲器請求狀態(tài)機34發(fā)送存儲器訪問請求以作為“主請求(home request)”。由核30a發(fā)出的“NC請求”由非高速緩存請求狀態(tài)機41經(jīng)由TLB 30c來執(zhí)行,并且向核30a發(fā)出“NC響應(yīng)”。接下來,將參照圖11描述存儲器令牌檢查器38的示例配置。圖11是示出根據(jù)第一實施例的存儲器令牌檢查器的示例的示意圖。在圖11所示的示例中,存儲器令牌檢查器38包括本身節(jié)點ID寄存器38a、存儲器令牌寄存器38b、操作碼令牌解碼器38c以及訪問確定控制器38d。在圖11所示的示例中,將描述單個節(jié)點包括四個CPU的情況。此外,假設(shè)存儲器令牌寄存器38b具有512個入口,并且具有與圖10中所示的訪問令牌寄存器相同的配置。例如,存儲器令牌檢查器38從寄存器控制器44獲得“Reg R/W命令”、“地址[11:2] ”、“字節(jié)使能[3:0] ”以及“寫入數(shù)據(jù)[31:0] ”。令牌檢查器31從寄存器控制器44獲得“發(fā)送者ID (SID) [7:3]”。在此提及的“SID[7:3] ”是指示對應(yīng)于存儲器請求的請求源的CPU的標識符。此外,存儲器令牌檢查器38從存儲器訪問端口 36獲得存儲器訪問請求。圖12是示出存儲器訪問請求的示例的示意圖。如圖12所示,存儲器訪問請求的分組包括:格式、目的地ID、操作碼、發(fā)送源ID、入口 ID、令牌以及目標地址。格式包括指示分組格式的類型的4位信息。目的地ID包括指示目的地CPU的ID,即8位DID。操作碼中存儲指示存儲器訪問請求的內(nèi)容的4位信息。令牌存儲16位訪問令牌。目標地址包括作為存儲器訪問請求的目標的物理地址。除了圖12中所示的分組以外,向作為針對寫入數(shù)據(jù)的請求的存儲器訪問請求發(fā)送用于寫入字節(jié)使能的數(shù)據(jù)。此外,針對不需要訪問令牌的存儲器訪問請求,即針對回閃(flash back)指令和回寫指令,發(fā)送在其中將保留位(reserve)用作令牌的分組。探聽在其中存儲表示請求源CPU的8位CPU ID和唯一地表示請求源過程的8位入口 ID,而不是存儲令牌。此外,發(fā)送具有與圖12中所示的分組的格式類似的格式的分組來作為對存儲器訪問請求的響應(yīng)。例如,在對探聽的響應(yīng)中存儲8位探聽響應(yīng)信息,而不是存儲令牌。此外,發(fā)送其中將預(yù)留位用作令牌的分組作為對存儲器訪問請求的完成響應(yīng),并且將讀取的數(shù)據(jù)附加到對讀取請求的響應(yīng)中。
在此將返回參照圖11進行描述。存儲器令牌檢查器38從所獲得的存儲器訪問請求獲得SID [7:0],并確定所獲得的SID是否與對應(yīng)于包括在本身節(jié)點中的CPU的ID的本身節(jié)點ID匹配。在圖11所示的示例中,存儲器令牌檢查器38確定四個CPU的ID (即CPUIDO至ID3)是否與SID匹配。然后,存儲器令牌檢查器38向訪問確定控制器38d輸入作為“我的節(jié)點命中”的確定結(jié)果。此外,存儲器令牌檢查器38從存儲器訪問請求獲得操作碼(op碼[3:0])并向操作碼令牌解碼器38c輸入該操作碼。在這種情況下,操作碼令牌解碼器38c分析所獲得的操作碼,并確定過程是否需要訪問令牌和存儲器令牌之間的匹配。然后,操作碼令牌解碼器38c將確定結(jié)果作為令牌使能輸入給訪問確定控制器38d。圖13是示出由操作碼表示的過程的示例的示意圖。圖13示出了當執(zhí)行使用MESI協(xié)議(伊利諾斯協(xié)議)的高速緩存一致性時發(fā)出的存儲器訪問請求的操作碼。例如,包含操作碼“0000”的存儲器訪問請求是執(zhí)行被稱為“讀取IF”的過程的請求。“讀取IF”是用于當從核讀取的指令區(qū)域和高速緩存狀態(tài)是“共享(S)”的情況下獲取高速緩存的過程。包含操作碼“0001”的存儲器訪問請求是執(zhí)行被稱為“讀取0P”的過程的請求?!白x取0P”是用于當從核讀取的數(shù)據(jù)區(qū)域和高速緩存狀態(tài)是“S”或“排他(E)”的情況下獲取高速緩存的過程。包含操作碼“0010”的存儲器訪問請求是執(zhí)行被稱為“讀取EX”的過程的請求?!白x取EX”是在高速緩存狀態(tài)為“共享(S ) ”的情況下用于從核獲取用于存儲數(shù)據(jù)的排他權(quán)獲取讀取以及用于獲取高速緩存的過程。包含操作碼“0100”的存儲器訪問請求是執(zhí)行被稱為“DMA讀取”的過程的請求。“DMA讀取”表示從I/O讀取DMA,并且是不獲取高速緩存的過程。包含操作碼“0110”的存儲器訪問請求是執(zhí)行被稱為“DMA寫入”的過程的請求。“DMA寫入”表示來自I/O裝置的DMA寫入,并且是不獲取高速緩存的過程。包含操作碼“0111”的存儲器訪問請求是執(zhí)行被稱為“DMA寫入部分”的過程的請求?!癉MA寫入部分”是用于部分地執(zhí)行來自I/O裝置的DMA寫入的過程,并且是不獲取高速緩存的過程。包含操作碼“1000”的存儲器訪問請求是執(zhí)行被稱為“回寫”的過程的請求?!盎貙憽笔怯糜趯懭氡硎井攬?zhí)行CPU高速緩存收回時高速緩存狀態(tài)為“經(jīng)修改(M)”的數(shù)據(jù)的過程。包含操作碼“1001”的存儲器訪問請求是執(zhí)行被稱為“回閃”的過程的請求。“回閃”是用于當執(zhí)行CPU高速緩存收回時將高速緩存狀態(tài)“E”或“S”改變?yōu)椤?I無效(I)”的過程。包含操作碼“ 1010”的存儲器訪問請求是執(zhí)行被稱為“高速緩存刷新”的過程的請求?!案咚倬彺嫠⑿隆笔菍τ珊藞?zhí)行高速緩存刷新的請求。在圖13所示的示例中,如果操作碼是“0000”、“0001”或“0010”,則操作碼令牌解
碼器38c確定訪問令牌需要與存儲器令牌匹配,并輸出使能令牌“I”。如果操作碼是不同于“0000”、“0001”和“0010”的操作碼,則操作碼令牌解碼器38c確定訪問令牌不需要與存儲器令牌匹配,并輸出使能令牌“O”。在圖13中示出的與過程相關(guān)聯(lián)的操作碼僅僅是示例;因此,也可以將任意的操作碼與任意的過程相關(guān)聯(lián)。將返回參照圖11進行描述。存儲器令牌檢查器38通過使用包括要訪問的物理地址的段地址來搜索用于存儲器令牌的存儲器令牌寄存器38b。然后,存儲器令牌檢查器38向訪問確定控制器38d輸入“令牌匹配”,其表示搜索的存儲器令牌是否與存儲器訪問請求的訪問令牌匹配。在圖11所示的示例中,向單個節(jié)點中的段分配連續(xù)的存儲器地址。如果分配了非連續(xù)的存儲器地址,在先前的級布置改變地址令牌的入口號的電路。在圖11所示的示例中,如果地址令牌為“0000”,這表示關(guān)于非保護區(qū)的存儲器訪問請求。因此,存儲器令牌檢查器38向訪問確定控制器38d輸入表不“自由訪問”的信號。訪問確定控制器38d通知主狀態(tài)機39,指示根據(jù)輸入“我的節(jié)點命中”、“令牌使能”、“令牌匹配”和“自由訪問”是否允許執(zhí)行存儲器訪問請求。圖14是示出由訪問確定控制器執(zhí)行的確定的示例的示意圖。例如,如果“我的節(jié)點命中”為“否(0)”,令牌使能為“是(1)”,令牌匹配為“否(O)”以及自由訪問為“否(0)”,則訪問確定控制器38d不允許執(zhí)行存儲器訪問請求。在除了上述情況以外的情況下,訪問確定控制器38d允許執(zhí)行存儲器訪問請求。具體地,對于例如回寫的用于維持高速緩存一致性的過程,無論令牌匹配的值如何,訪問確定控制器38d都允許執(zhí)行存儲器訪問請求。將返回參照圖11進行描述。根據(jù)從訪問確定控制器38d和目標地址檢查器37接收的通知,主狀態(tài)機39執(zhí)行從存儲器訪問端口 36獲得的存儲器訪問請求。圖15是示出由主狀態(tài)機執(zhí)行的過程的內(nèi)容的示意圖。例如,如果訪問確定控制器38d通知主狀態(tài)機39指示不允許執(zhí)行存儲器訪問請求,則主狀態(tài)機39執(zhí)行當訪問令牌與存儲器令牌不匹配時所執(zhí)行的訪問出錯處理。此外,如果由訪問確定控制器38d通知主狀態(tài)機39,指示允許執(zhí)行存儲器訪問請求,以及由目標地址檢查器37通知主狀態(tài)機39,指示存儲器不在本身的節(jié)點中(缺失(MISS)),則主狀態(tài)機39執(zhí)行以下過程。即,主狀態(tài)機39執(zhí)行當目標地址不匹配時所執(zhí)行的訪問出錯操作。此外,如果由訪問確定控制器38d通知主狀態(tài)機39,指示允許執(zhí)行存儲器訪問請求,以及由目標地址檢查器37通知主狀態(tài)機39,指示存儲器在本身的節(jié)點中(命中),則主狀態(tài)機39執(zhí)行存儲器訪問請求。如果不允許執(zhí)行由本身的節(jié)點發(fā)出的存儲器訪問請求,CPU 12至15以及CPU12a至12m中的每個CPU也可以通過發(fā)送相同的存儲器訪問請求來執(zhí)
行重試。接下來,將參照圖16描述由信息處理系統(tǒng)I執(zhí)行的用于在節(jié)點之間執(zhí)行存儲器訪問的過程的流程。圖16是示出節(jié)點之間的存儲器訪問的流程的示意圖。圖16示出其中節(jié)點#1對節(jié)點#2中的存儲器執(zhí)行存儲器訪問的示例。例如,如圖16中的(E)所示,通過使用存儲器令牌管理表,由節(jié)點#2執(zhí)行的應(yīng)用選擇未被使用的存儲器令牌。然后,如在圖16中的(F)所示,由節(jié)點#2執(zhí)行的應(yīng)用向由節(jié)點#1執(zhí)行的應(yīng)用通知要訪問地址區(qū)域和對應(yīng)于存儲器令牌的訪問令牌。在這種情況下,如圖16中的(G)所示,由節(jié)點#1執(zhí)行的應(yīng)用在訪問令牌表31中設(shè)置訪問令牌。如圖16中的(H)所示,由節(jié)點#2執(zhí)行的應(yīng)用在存儲器令牌寄存器38b中設(shè)置對應(yīng)于向節(jié)點#1通知的訪問令牌的存儲器令牌。在這點上,如圖16中的(I)所示,當核30a發(fā)出存儲器訪問請求時,節(jié)點#1將在訪問令牌表31中設(shè)置的訪問令牌附加到存儲器訪問請求中,并且通過使用互連而將該存儲器訪問請求發(fā)送給節(jié)點#2。然后,如圖16中的(J)所示,節(jié)點#2確定附加到存儲器訪問請求中的訪問令牌是否與在存儲器令牌寄存器38b中設(shè)置的存儲器令牌匹配。然后,如果訪問令牌與存儲器令牌匹配,則節(jié)點#2執(zhí)行關(guān)于要訪問的區(qū)域的存儲器訪問請求;反之,如果訪問令牌與存儲器令牌不匹配,則節(jié)點#2不執(zhí)行存儲器訪問請求。如上所述,信息處理系統(tǒng)I中的每個節(jié)點將訪問令牌通知給訪問對象節(jié)點中的存儲器的節(jié)點,并在存儲器令牌寄存器中將所通知的訪問令牌作為存儲器令牌存儲。如果每個節(jié)點訪問包括在另一個節(jié)點中的存儲器,則每個節(jié)點向存儲器訪問請求中附加由要訪問的節(jié)點通知的訪問令牌,并發(fā)送該存儲器訪問請求。然后,每個節(jié)點確定附加到存儲器訪問請求中的訪問令牌是否與存儲器令牌匹配。如果每個節(jié)點確定訪問令牌與存儲器令牌匹配,則每個節(jié)點執(zhí)行存儲器訪問。因此,即使節(jié)點之一發(fā)生故障并且即使與另一個節(jié)點不執(zhí)行通信,信息處理系統(tǒng)I也能夠通過要訪問的節(jié)點改變存儲器令牌來停止由故障節(jié)點執(zhí)行的存儲器訪問。因此,信息處理系統(tǒng)I正確執(zhí)行故障轉(zhuǎn)移。接下來,將描述因為要訪問的節(jié)點改變了存儲器令牌而停止由故障節(jié)點執(zhí)行的存儲器訪問的過程。圖17是示出用于停止由故障節(jié)點執(zhí)行的存儲器訪問的示意圖。圖17示出了節(jié)點#1訪問節(jié)點#2中的存儲器的示例。例如,節(jié)點#1在訪問令牌表中存儲由包括在節(jié)點#2中的應(yīng)用通知的訪問令牌,并向節(jié)點#2發(fā)送附加有訪問令牌的存儲器訪問請求。在這點上,如果由節(jié)點#1執(zhí)行的應(yīng)用中發(fā)生了故障并且不與節(jié)點#2執(zhí)行通信,則節(jié)點#2中的應(yīng)用不改變在節(jié)點#1中存儲的訪問令牌。然而,由節(jié)點#2執(zhí)行的應(yīng)用可以改變在節(jié)點2中存儲的存儲器令牌。因此,由節(jié)點#2執(zhí)行的應(yīng)用改變存儲在節(jié)點#2的存儲器令牌寄存器中的存儲器令牌。因為由故障節(jié)點#1發(fā)送的訪問令牌與在節(jié)點#2中存儲的存儲器令牌不匹配,所以節(jié)點#2能夠阻止節(jié)點#1執(zhí)行存儲器訪問。在這點上,節(jié)點#2可以在任意時刻改變存儲器令牌。具體地,節(jié)點#2改變存儲器令牌并將經(jīng)改變的存儲器令牌作為訪問令牌發(fā)送給節(jié)點#1。然后,當節(jié)點#1能夠與節(jié)點#2通信時,節(jié)點#1正確地改變訪問令牌并因此能夠繼續(xù)訪問節(jié)點#2。反之,如果節(jié)點#1中已經(jīng)發(fā)生了故障并且因此節(jié)點#1不與節(jié)點#2通信,因為節(jié)點#1未改變訪問令牌,節(jié)點#1不訪問節(jié)點#2。因此,當信息處理系統(tǒng)I將由節(jié)點#1執(zhí)行的過程轉(zhuǎn)移到另一個節(jié)點時,信息處理系統(tǒng)I能夠防止發(fā)生裂腦狀態(tài)。因此,信息處理系統(tǒng)I正確地執(zhí)行故障轉(zhuǎn)移。接下來,將參照圖18和圖19描述用于斷開已經(jīng)發(fā)生故障的節(jié)點。圖18是示出用于防止來自已經(jīng)發(fā)生故障的節(jié)點的存儲器訪問的過程的第一示意圖。圖19是示出用于防止來自已經(jīng)發(fā)生故障的節(jié)點的存儲器訪問的過程的第二示意圖。圖18和圖19各自均示出了如下示例:當節(jié)點#1至#3中的每個向節(jié)點#4發(fā)出存儲器訪問請求時,節(jié)點#1中的應(yīng)用已經(jīng)發(fā)生故障,因此節(jié)點#1中的應(yīng)用不與其他節(jié)點#2至M通信。例如,如圖18中的(K)所示,由節(jié)點#4執(zhí)行的監(jiān)測應(yīng)用在任意時刻將存儲在節(jié)點#4中的存儲器令牌“777”改變?yōu)椤?88”。此外,節(jié)點#4將新存儲器令牌“888”作為訪問令牌分配給節(jié)點#1至#3。在這點上,因為節(jié)點#1中的應(yīng)用發(fā)生了故障并且因此節(jié)點#1不與其他節(jié)點#2至#4通信,所以如圖18中的(L)所示,節(jié)點#1中的應(yīng)用不將訪問令牌“777”更新為新的訪問令牌“888”。反之,如在圖18中的(M)所示,節(jié)點#2和節(jié)點#3可以將訪問令牌“777”改變?yōu)樾碌脑L問令牌“888”。因此,如圖19中的(N)所示,具有故障的應(yīng)用的節(jié)點#1不訪問節(jié)點#4 ;然而,節(jié)點#2和節(jié)點#3能夠繼續(xù)訪問節(jié)點#4。因此,節(jié)點#1至#4中的每個節(jié)點能夠容易地與故障節(jié)點斷開。此外,節(jié)點#1至M中的每個不需要確定由于例如握手的過程在應(yīng)用中是否已經(jīng)發(fā)生了故障。具體地,節(jié)點#1至#4中的每個能夠在不識別哪個節(jié)點發(fā)生了故障的情況下與故障節(jié)點斷開。因此,節(jié)點#1至#4中的每個能夠立即與故障節(jié)點斷開。接下來,將參照圖20至圖25描述通過使用存儲器令牌和訪問令牌二者執(zhí)行的存儲器訪問過程的流程。此外,將描述如下示例:包括核30a與存儲器19的節(jié)點#1向包括核30g、存儲器19a和存儲器19b的節(jié)點#2發(fā)送存儲器訪問請求。存儲器19a是僅包括本地區(qū)域的存儲器,而存儲器1%是僅包括共享存儲區(qū)的存儲器。在以下描述中,應(yīng)用是由節(jié)點#1和#2中的每個執(zhí)行的應(yīng)用,OS是由節(jié)點#1和#2中的每個獨立操作的OS,而共享存儲器驅(qū)動是控制共享存儲區(qū)的驅(qū)動。只要能夠執(zhí)行節(jié)點的應(yīng)用之間的通信,則可以使用用于請求令牌或在節(jié)點之間實施通信的任何方法。這可以通過使用以下的方式來實施:例如,通過LAN的消息通信,通過互連、使用共享的存儲器的消息通信以及使用共享的存儲器的通信。首先,將參照圖20描述由節(jié)點#1執(zhí)行的用于獲得訪問令牌的過程的流程。圖20是示出用于獲得訪問令牌的過程的流程的順序圖。例如,由核30a執(zhí)行的應(yīng)用根據(jù)由核30g執(zhí)行的應(yīng)用來請求訪問令牌(步驟S101)。然后,由核30g執(zhí)行的應(yīng)用請求共享存儲器驅(qū)動分配存儲器令牌(步驟S102)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動參照在存儲器19a中存儲的存儲器令牌管理表。此外,由核30g執(zhí)行的共享存儲器驅(qū)動注冊存儲器令牌管理表中已經(jīng)不再使用的存儲器令牌(步驟S103)并獲得存儲器令牌(步驟S104)。在這點上,由核30g執(zhí)行的共享存儲器驅(qū)動還注冊由存儲器令牌使用的過程的應(yīng)用ID。此外,由核30g執(zhí)行的共享存儲器驅(qū)動在共享存儲器段管理表和存儲器令牌寄存器中注冊所獲得的存儲器令牌(步驟S105)。在這點上,由核30g執(zhí)行的共享存儲器驅(qū)動還注冊例如要訪問的段號、使用標記和應(yīng)用ID。此外,由核30g執(zhí)行的共享存儲器驅(qū)動向由核30a執(zhí)行的應(yīng)用通知作為訪問令牌的存儲器令牌(S106)。反之,當由核30a執(zhí)行的應(yīng)用獲得訪問令牌時(步驟S107),由核30a執(zhí)行的應(yīng)用請求由核30a執(zhí)行的共享存儲器驅(qū)動設(shè)置所獲得的訪問令牌(步驟S108)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置所獲得的訪問令牌(步驟S109)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動向由核30a執(zhí)行的應(yīng)用通知要訪問的虛擬地址(VA)(步驟S110)。然后,由核30a執(zhí)行的應(yīng)用發(fā)出數(shù)據(jù)讀取請求(步驟S111)。在這點上,在數(shù)據(jù)讀取請求中設(shè)置在訪問令牌表31中設(shè)置的訪問令牌(步驟S112)。然后,節(jié)點#2確定在數(shù)據(jù)讀取請求中設(shè)置的訪問令牌與在存儲器令牌寄存器中注冊的存儲器令牌是否匹配(步驟S113)。然后,如果訪問令牌與存儲器令牌匹配,則節(jié)點#2允許訪問段區(qū)域(步驟S114)。接下來,將參照圖21描述節(jié)點#1訪問在節(jié)點#2中的多個段的示例。圖21是示出用于訪問多個段的過程的流程的順序圖。例如,由核30a執(zhí)行的應(yīng)用請求由核30a執(zhí)行的共享存儲器驅(qū)動設(shè)置被用于訪問存儲器19b中的段#A的訪問令牌#A (步驟S201)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置訪問令牌#A (步驟S202)。此外,由核30a執(zhí)行的應(yīng)用發(fā)出關(guān)于段#A的數(shù)據(jù)讀取請求(步驟S203)。在這點上,在數(shù)據(jù)讀取請求中設(shè)置訪問令牌#A (步驟S204)。然后,節(jié)點#2確定在數(shù)據(jù)讀取請求中設(shè)置的訪問令牌#A與段#A中的存儲器令牌是否匹配(步驟S205)。如果訪問令牌#A與段#A中的存儲器令牌匹配,則節(jié)點#2允許關(guān)于段#A的存儲器訪問(步驟S206)。此外,由核30a執(zhí)行的應(yīng)用請求由核30a執(zhí)行的共享存儲器驅(qū)動設(shè)置被用于訪問存儲器1%中的段#B的訪問令牌#B (步驟S207)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置訪問令牌#8 (步驟S208)。此外,由核30a執(zhí)行的應(yīng)用發(fā)出關(guān)于段#8的數(shù)據(jù)讀取請求(步驟S209)。在這點上,在數(shù)據(jù)讀取請求中設(shè)置訪問令牌#B (步驟S210)。然后,節(jié)點#2確定在數(shù)據(jù)讀取請求中設(shè)置的訪問令牌#B與段#B中的存儲器令牌是否匹配(步驟S211)。如果訪問令牌#B與在段#B中的存儲器令牌匹配,則節(jié)點#2允許關(guān)于段#B的存儲器訪問(步驟S212)。接下來,將參照圖22描述當發(fā)生上下文切換時訪問令牌表31中的數(shù)據(jù)堆棧存放的過程的流程。圖22是示出了上下文切換的流程的順序圖。在圖22所示的示例中,將描述因為當核30a正在執(zhí)行應(yīng)用#A時發(fā)生中斷過程所以將要執(zhí)行的應(yīng)用切換為應(yīng)用#B的過程的流程。例如,當核30a運行應(yīng)用#A時發(fā)生了定時中斷(步驟S301)。在這種情況下,由核30a執(zhí)行的OS執(zhí)行包括訪問令牌表31中的數(shù)據(jù)的上下文切換(步驟S302)并對存儲器19的寄存器中的值進行堆棧存放(步驟S303)。然后,由核30a執(zhí)行的OS獲得當應(yīng)用#B 19正在被執(zhí)行時獲得的被堆棧存放在存儲器中的寄存器的值。然后,由核30a執(zhí)行的OS將所獲得的值設(shè)置在訪問令牌表31中(步驟S305)。之后,由核30a執(zhí)行的應(yīng)用#B發(fā)出數(shù)據(jù)讀取請求(步驟S306)。然后,將設(shè)置在訪問令牌表31中的訪問令牌(即,由應(yīng)用#B使用的訪問令牌)設(shè)置在數(shù)據(jù)讀取請求中(步驟S307)。然后,節(jié)點#2確定由應(yīng)用#B使用的段中的存儲器令牌是否與設(shè)置在數(shù)據(jù)讀取請求中的訪問令牌匹配(步驟S308)。如果存儲器令牌與訪問令牌匹配,則節(jié)點#2允許對共享存儲區(qū)的訪問(步驟S309)。接下來,將參照圖23描述由節(jié)點#2執(zhí)行的用于改變存儲器令牌的過程的流程。圖23是示出用于改變存儲器令牌的過程的流程的順序圖。在圖23所示的示例中,將描述如下示例:在節(jié)點#1中沒有發(fā)生故障,因而節(jié)點#2可以正確訪問。假設(shè)圖23中所示步驟S411至S414中執(zhí)行的過程與圖22中所示步驟S306至S309中執(zhí)行的過程相同;因此將省略其描述。例如,由核30g執(zhí)行的應(yīng)用請求由核30g執(zhí)行的共享存儲器驅(qū)動在任意時刻更新令牌(步驟S401)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動針對新的可用存儲器令牌來搜索存儲器令牌管理表(步驟S402)并向由核30g執(zhí)行的應(yīng)用通知要使用的新存儲器令牌。之后,由核30g執(zhí)行的應(yīng)用向由核30a執(zhí)行的應(yīng)用發(fā)出訪問停止請求(步驟S403)并等待預(yù)定的時間段(步驟S404)。然后,由核30g執(zhí)行的應(yīng)用向由核30g執(zhí)行的共享存儲器驅(qū)動通知要使用的新的存儲器令牌(步驟S405)。在這種情況下,由核30g執(zhí)行的共享存儲器驅(qū)動在存儲器令牌寄存器中設(shè)置新的存儲器令牌(步驟S406)。此外,由核30g執(zhí)行的共享存儲器驅(qū)動更新存儲器令牌管理表(步驟S407)。然后,由核30g執(zhí)行的應(yīng)用向由核30a執(zhí)行的應(yīng)用通知新的訪問令牌和存儲器訪問的恢復(fù)(步驟S408)。在這種情況下,由核30a執(zhí)行的應(yīng)用向由核30a執(zhí)行的共享存儲器驅(qū)動通知新的訪問令牌(步驟S409)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置新的訪問令牌(步驟S410)。當允許重試存儲器訪問時,當執(zhí)行用于改變存儲器令牌的過程時不需要等待。因此,將參照圖24描述由節(jié)點#2執(zhí)行的用于改變存儲器令牌的過程的變型。圖24是示出用于改變存儲器令牌的過程的變型的順序圖。在圖24所示的示例中,將描述如下示例:在節(jié)點#1中未發(fā)生故障,因而在存儲器令牌改變后節(jié)點#2正確訪問。例如,由核30g執(zhí)行的應(yīng)用請求由核30g執(zhí)行的共享存儲器驅(qū)動在任意時刻更新令牌(步驟S501)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動針對新的可用存儲器令牌搜索存儲器令牌管理表(步驟S502)并向由核30g執(zhí)行的應(yīng)用通知要使用的新的存儲器令牌(步驟S503)。然后,由核30g執(zhí)行的應(yīng)用向由核30g執(zhí)行的共享存儲器驅(qū)動通知要使用的新的存儲器令牌(步驟S504)。在這種情況下,由核30g執(zhí)行的共享存儲器驅(qū)動在存儲器令牌寄存器中設(shè)置新的存儲器令牌(步驟S505)。此外,由核30g執(zhí)行的共享存儲器驅(qū)動在存儲器令牌管理表中注冊新的存儲器令牌(步驟S506)并向由核30g執(zhí)行的應(yīng)用通知已經(jīng)注冊的新的存儲器令牌(步驟S507)。此外,由核30g執(zhí)行的應(yīng)用向由核30a執(zhí)行的應(yīng)用發(fā)送新的訪問令牌(步驟S508 )。在這點上,由核30a執(zhí)行的應(yīng)用發(fā)出數(shù)據(jù)讀取請求(步驟S509)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置新的訪問令牌(步驟S510)。然而,在步驟S510中設(shè)置的訪問令牌與新的存儲器令牌不匹配,因此存儲器訪問被拒絕(步驟S511)。因此,節(jié)點#2向節(jié)點#1發(fā)送表示拒絕訪問的響應(yīng)(步驟S512)。在這點上,因為由核30a執(zhí)行的應(yīng)用從由核30g執(zhí)行的應(yīng)用接收新的訪問令牌,所以由核30a執(zhí)行的應(yīng)用將令牌通知給由核30a執(zhí)行的共享存儲器驅(qū)動(步驟S513)。然后,由核30a執(zhí)行的共享存儲器驅(qū)動在訪問令牌表31中設(shè)置新的訪問令牌(步驟S514)。之后,由核30a執(zhí)行的應(yīng)用發(fā)送包含數(shù)據(jù)讀取請求的重試(步驟S515)。然后,在包含數(shù)據(jù)讀取請求的重試中設(shè)置新的訪問令牌(步驟S516)。因此,節(jié)點#2確定由應(yīng)用#8使用的段中的存儲器令牌是否與設(shè)置在數(shù)據(jù)讀取請求中的訪問令牌匹配(步驟S517)。如果存儲器令牌與訪問令牌匹配,節(jié)點#2允許對共享存儲區(qū)的訪問(步驟S518)。此外,如果從節(jié)點#1接收的重試中設(shè)置的訪問令牌與存儲器令牌不匹配,則節(jié)點#2確定發(fā)生了存儲器訪問錯誤;因此,節(jié)點#2可以執(zhí)行用于斷開與節(jié)點#1的連接的過程。接下來,將參照圖25描述如下過程的流程:其中當節(jié)點#2改變存儲器令牌時在節(jié)點#1中發(fā)生了故障,并且因此由于未正確地執(zhí)行訪問,節(jié)點#1被斷開。圖25是示出用于斷開故障節(jié)點的過程的流程的順序圖。在圖25所示的示例中,將描述如下示例:其中節(jié)點#1發(fā)生了故障并因此不執(zhí)行與節(jié)點#2的通信。此外,在圖25所示的示例中,假設(shè)節(jié)點#1以預(yù)定時間間隔向要訪問的節(jié)點#2發(fā)出心跳(hearbeat)通知。
首先,由核30a執(zhí)行的應(yīng)用發(fā)出心跳通知(步驟S601)。然而,因為在節(jié)點#1中已經(jīng)發(fā)生了故障,所以未向節(jié)點#2傳送心跳通知。因此,由核30g執(zhí)行的應(yīng)用檢測到節(jié)點#1的異常(步驟S602)。然后,由核30g執(zhí)行的應(yīng)用請求由核30g執(zhí)行的共享存儲器驅(qū)動更新存儲器令牌(步驟S603)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動針對新的存儲器令牌搜索存儲器令牌管理表(步驟S604)并向由核30g執(zhí)行的應(yīng)用通知新的存儲器令牌。然后,由核30g執(zhí)行的應(yīng)用將新的存儲器令牌發(fā)送給節(jié)點#1以作為訪問令牌;然而,因為在節(jié)點#1中發(fā)生了故障,所述新的訪問令牌未到達節(jié)點#1。然后,由核30g執(zhí)行的應(yīng)用向由核30g執(zhí)行的共享存儲器驅(qū)動通知要使用的新的存儲器令牌(步驟S605)。在這種情況下,由核30g執(zhí)行的共享存儲器驅(qū)動在存儲器令牌寄存器中設(shè)置新的存儲器令牌(步驟S606)。此外,由核30g執(zhí)行的共享存儲器驅(qū)動在存儲器令牌管理表中注冊新的存儲器令牌(步驟S607)并向由核30g執(zhí)行的應(yīng)用通知已經(jīng)注冊的新的存儲器令牌。此外,由核30g執(zhí)行的應(yīng)用向節(jié)點#1通知通信的恢復(fù)通知(步驟S608);然而,因為在節(jié)點#1中發(fā)生了故障,所以通信的恢復(fù)通知未到達節(jié)點#1。因此,由核30g執(zhí)行的應(yīng)用向由核30g執(zhí)行的共享存儲器驅(qū)動發(fā)出用于斷開節(jié)點#1的請求(步驟S609)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動針對要斷開的節(jié)點#1所使用的共享存儲區(qū)搜索共享存儲器段管理表(步驟S610)。在這點上,當由核30a執(zhí)行的應(yīng)用發(fā)出數(shù)據(jù)讀取請求時(步驟S611),節(jié)點#1在數(shù)據(jù)讀取請求中設(shè)置訪問令牌(步驟S612)并向節(jié)點#2發(fā)送訪問令牌。然而,因為訪問令牌與新的存儲器令牌不匹配(步驟S613),節(jié)點#2拒絕存儲器訪問并向節(jié)點#1發(fā)送地址出錯(address exception)(步驟 S614)。在這種情況下,節(jié)點#1執(zhí)行如下回寫過程:將存儲在LI高速緩存30b、LI高速緩存30e和L2高速緩存32a中的數(shù)據(jù)發(fā)送給節(jié)點#2 (步驟S615)。當節(jié)點#2以這種方式從節(jié)點#1獲得回寫數(shù)據(jù)時,節(jié)點#2執(zhí)行對共享存儲區(qū)的回寫,而無需確定存儲器訪問是否可以執(zhí)行(步驟S616)。然后,通過使用高速緩存刷新(cache flush)和隱式回寫,節(jié)點#1和節(jié)點#2允許在LI高速緩存30b、LI高速緩存30e和L2高速緩存32a中的每個中保留的數(shù)據(jù)與在存儲器19b中保留的數(shù)據(jù)匹配。然后,節(jié)點#2將由節(jié)點#1中的核30a執(zhí)行的過程的工作移動到由另一個CPU執(zhí)行的過程,并且執(zhí)行用于斷開節(jié)點#1的斷開過程(步驟S617和步驟S618)。然后,由核30g執(zhí)行的共享存儲器驅(qū)動向由核30g執(zhí)行的應(yīng)用通知已經(jīng)完成了節(jié)點#1的斷開(步驟S619)。接下來,將參照圖26描述用于改變存儲器令牌的過程的示例。圖26是示出用于改變存儲器令牌的過程的流程的流程圖。在圖26所示的示例中,假設(shè)CPU 12針對每個過程對存儲器訪問請求的令牌錯誤進行計數(shù),其由“N”表示。此外,在CPU 12執(zhí)行如圖26所示的過程之前,CPU 12在每個過程中在“N”中設(shè)置初始值“O”。此外,圖26示出了如下示例:通過使用存儲器錯誤處理來斷開其中出現(xiàn)10次或更多次重試失敗的節(jié)點。例如,CPU 12作為正常過程執(zhí)行根據(jù)存儲器令牌和訪問令牌二者執(zhí)行的存儲器訪問請求(步驟S701)。在這點上,CPU 12確定是否產(chǎn)生了錯誤信號(步驟S702)。該錯誤信號是當發(fā)生錯誤時被通知的信號以及當例如將錯誤被存儲在錯誤寄存器43中時被通知的信號。
在這點上,如果CPU 12確定產(chǎn)生了錯誤信號(步驟S702中的是)。則CPU 12確定由錯誤信號表示的錯誤的內(nèi)容是否為表示存儲器令牌與訪問令牌不匹配的令牌錯誤(步驟S703)。如果CPU 12確定由錯誤信號表示的錯誤的內(nèi)容是令牌錯誤(步驟S703中的是),則CPU 12執(zhí)行以下過程。S卩,CPU 12確定導致令牌錯誤的請求存儲器訪問的過程的值“N”是否小于“10”(步驟S704)。如果CPU 12確定請求存儲器訪問的過程的值“N”小于“10”(步驟S704中的是),CPU 12將請求存儲器訪問的過程的值“N”增加“I”(步驟S705)。然后,CPU 12再次執(zhí)行正常過程(步驟S701)。此外,如果CPU 12確定請求存儲器訪問的過程的值“N”等于或大于“10”(在步驟S704的否),則CPU 12執(zhí)行以下過程。S卩,CPU 12執(zhí)行存儲器錯誤處理(步驟S706),斷開執(zhí)行用于請求存儲器訪問的過程的節(jié)點,并且結(jié)束該過程。接下來,將描述當CPU 12斷開節(jié)點時用于更新共享存儲器段管理表和存儲器令牌管理表的過程。圖27是示出用于更新共享存儲器段管理表和存儲器令牌管理表的過程的流程的流程圖。CPU 12針對共享存儲器段管理表中的每個入口來執(zhí)行圖27所示的過程。此外,CPU 12執(zhí)行如圖27所示的、當從由對應(yīng)于存儲器訪問請求的發(fā)出源的節(jié)點執(zhí)行的過程獲得段釋放請求時被觸發(fā)的過程。例如,CPU 12參照使用標記并確定使用標記是否為“I” (步驟S801)。如果使用標記為“I”(步驟S801中的是),則CPU 12確定發(fā)出段釋放請求的過程的應(yīng)用ID是否與入口的應(yīng)用ID匹配(步驟S802)。如果CPU 12確定應(yīng)用ID匹配(步驟S802中的是),則CPU 12確定執(zhí)行發(fā)出段釋放請求的過程的節(jié)點的使用節(jié)點標記是否為“I”(步驟S803)。如果執(zhí)行發(fā)出段釋放請求的過程的節(jié)點的使用節(jié)點標記為“I”(步驟S803中的是),則CPU 12將執(zhí)行發(fā)出段釋放請求的過程的節(jié)點的使用節(jié)點標記設(shè)置為“O”(步驟S804)。然后,CPU 12確定另一個使用節(jié)點標記是否為“O” (步驟S805)。如果另一個使用節(jié)點標記是“O”(步驟S805中的是),則CPU 12將使用節(jié)點標記設(shè)置為“O”(步驟S806)。然后,CPU 12識別入口的存儲器令牌的值,并針對其中存儲了具有與所識別的值相同的值的存儲器令牌的入口來在存儲器令牌管理表中搜索入口。然后,CPU 12將所搜索到的入口的使用標記設(shè)置為“O”(步驟S807)。然后,CPU 12發(fā)出表示已經(jīng)完成對節(jié)點的斷開的完成響應(yīng)(步驟S808)并結(jié)束過程。此外,如果使用標記不為“I”(步驟S801中的否),應(yīng)用ID不匹配(步驟S802中的否),或使用節(jié)點標記為“O”(在步驟S803中的否),則CPU12發(fā)出完成響應(yīng)(步驟S808)。此外,如果使用節(jié)點標記中的任一個都不為“O”(步驟S805中的否),則CPU 12發(fā)出完成響應(yīng)(步驟 S808)。圖28是示出共享存儲器段管理表的更新的示意圖。例如,如圖28中的陰影區(qū)域所示,通過執(zhí)行圖27中所示的步驟S804和步驟S806的過程,CPU 12將使用標記和使用節(jié)點標記設(shè)置為“O”。圖29是示出存儲器令牌管理表的更新的示意圖。例如,如圖29中的陰影區(qū)域所示,通過執(zhí)行圖27中所示的步驟S807的過程,CPU 12將使用標記設(shè)置為“O”。以這種方式,通過執(zhí)行圖27所示的過程,CPU 12能夠通過合適地更新共享存儲器段管理表和存儲器令牌管理表來斷開節(jié)點。第一實施例的優(yōu)點如上所述,CPU 12至15以及CPU 12a至12m中的每個具有訪問令牌表31和31a。此外,CPU 12至15以及CPU 12a至12m中的每個將訪問令牌附加到要發(fā)送給另一個節(jié)點的存儲器訪問請求,并發(fā)送該存儲器訪問請求。此外,CPU 12至15以及CPU 12a至12m中的每個包括如下存儲器令牌寄存器:其中存儲具有與發(fā)送給向相應(yīng)CPU發(fā)送存儲器訪問請求的CPU的訪問令牌的值相同的值的存儲器訪問令牌。然后,CPU 12至15以及CPU 12a至12m中的每個基于接收到的存儲器訪問請求的訪問令牌和存儲在存儲器令牌寄存器中的存儲器令牌兩者來控制存儲器訪問請求的執(zhí)行。因此,通過改變存儲在對應(yīng)的CPU的存儲器令牌寄存器中的存儲器令牌,CPU 12至15以及CPU 12a至12m中的每個阻止由故障節(jié)點發(fā)出的存儲器訪問請求的執(zhí)行。因此,信息處理系統(tǒng)I能夠避免“裂腦”的發(fā)生,從而正確執(zhí)行故障轉(zhuǎn)移。此外,當改變存儲器令牌時,CPU 12至15以及CPU 12a至12m中的每個向?qū)?yīng)于存儲器訪問請求的發(fā)出源的節(jié)點通知新的存儲器令牌以作為訪問令牌。然后,如果存儲器令牌與接收到的存儲器訪問請求的訪問令牌匹配,則CPU 12至15以及CPU 12a至12m中的每個允許執(zhí)行存儲器訪問請求。因此,CPU 12至15以及CPU 12a至12m中的每個能夠防止由故障節(jié)點執(zhí)行的存儲器訪問,而無需確定訪問源節(jié)點中是否發(fā)生了故障。因此,與用于通過使用握手來確定訪問源節(jié)點中是否發(fā)生了故障的方法相比,CPU 12至15以及CPU 12a至12m中的每個能夠立即并容易地斷開節(jié)點。此外,當CPU 12至15以及CPU 12a至12m中的每個拒絕存儲器訪問請求時,CPU12至15以及CPU 12a至12m中的每個更新存儲器令牌,然后將由對應(yīng)于存儲器訪問請求的發(fā)出源的節(jié)點中的CPU高速緩存的數(shù)據(jù)回寫被該CPU訪問的存儲器。因此,即使CPU 12至15以及CPU 12a至12m中的每個包括高速緩沖存儲器,CPU 12至15以及CPU 12a至12m中的每個能夠在保持高速緩存一致性的同時正確斷開節(jié)點。此外,CPU 12至15以及CPU 12a至12m中的每個將新的訪問令牌連同用于停止訪問存儲器訪問請求的發(fā)出源的指令一起發(fā)送。然后,CPU12至15以及CPU 12a至12m中的每個在預(yù)定的持續(xù)時間之后更新存儲器令牌并指示存儲器訪問請求的發(fā)出源恢復(fù)訪問。因此,CPU 12至15以及CPU 12a至12m中的每個能夠拒絕來自故障節(jié)點的存儲器訪問,而無需接收來自存儲器訪問請求的發(fā)出源的重試。因此,當CPU 12至15以及CPU12a至12m中的每個不允許存儲器訪問請求時,CPU 12至15以及CPU 12a至12m中的每個能夠合適地斷開故障節(jié)點,而無需確定在節(jié)點中發(fā)生的錯誤的類型。此外,如果不允許對于另一個節(jié)點的存儲器訪問,CPU 12至15以及CPU 12a至12m中的每個可以執(zhí)行重試。具體地,如果不允許存儲器訪問,則CPU 12至15以及CPU 12a至12m中的每個具有重試相同存儲器訪問請求的功能。在這種情況下,CPU 12至15以及CPU 12a至12m中的每個能夠正確地斷開故障,而不是等待新的訪問令牌被通知。具體地,因為在訪問源節(jié)點通過使用改變了的訪問令牌執(zhí)行存儲器訪問的時間與訪問目的地節(jié)點改變存儲器令牌的時間之間存在時間延遲,所以訪問有可能被拒絕。
例如,在一些情況下,因為訪問源節(jié)點附加了未改變的訪問令牌,而訪問目的地節(jié)點通過使用改變了的存儲器令牌來確定是否可以執(zhí)行訪問,所以訪問有可能被拒絕。類似地,在一些情況下,因為訪問源節(jié)點附加改變了的訪問令牌而訪問目的地節(jié)點通過使用未改變的存儲器令牌來確定是否可以執(zhí)行訪問,所以訪問有可能被拒絕。在這點上,如果訪問被拒絕,則訪問源節(jié)點發(fā)送重試。然后,正常操作的訪問源節(jié)點附加當重試存儲器訪問時獲得的訪問令牌。然后,訪問目的地節(jié)點通過使用改變了的存儲器令牌來確定是否可以執(zhí)行訪問。因此,CPU 12至15以及CPU 12a至12m中的每個能夠允許由正常操作的訪問源節(jié)點確定的存儲器訪問。反之,未正常操作的訪問源節(jié)點附加未改變的訪問令牌以重試存儲器訪問,而訪問目的地節(jié)點通過使用改變了的存儲器令牌來確定是否可以執(zhí)行訪問。因此,CPU 12至15以及CPU 12a至12m中的每個確定是否允許由未正常操作的訪問源節(jié)點執(zhí)行存儲器訪問重試,以及斷開對應(yīng)于重試的發(fā)出源的節(jié)點。如果CPU 12至15以及CPU 12a至12m中的每個拒絕存儲器訪問的重試,則對應(yīng)于存儲器訪問請求的發(fā)出源的節(jié)點中的CPU將高速緩存的數(shù)據(jù)回寫被該CPU訪問的存儲器。因此,CPU 12至15以及CPU 12a至12m中的每個能夠在維持高速緩存一致性的同時正確地斷開節(jié)點。此外,CPU 12至15以及CPU 12a至12m中的每個使用當執(zhí)行上下文切換時數(shù)據(jù)被堆棧存放到其中的寄存器作為訪問令牌表。因此,即使當通過使用多線程來執(zhí)行過程時,CPU 12至15以及CPU 12a至12m中的每個能夠在不使OS或應(yīng)用復(fù)雜化的情況下防止由故障節(jié)點執(zhí)行的存儲器訪問以及正確地執(zhí)行故障轉(zhuǎn)移。[b]第二實施例在上面的說明中,描述了根據(jù)本發(fā)明的實施例;然而,實施例并不限制于此,并且可以以不同于上述的實施例的各種實施例來實施。因此,接下來,將作為第二實施例描述包括在本發(fā)明中的另一個實施例。(I)訪問令牌表上述CPU 12包括分別在核30a和核30d中的訪問令牌表31和訪問令牌表31a ;然而,本實施例并不限于此。例如,如果核30a是能夠進行多線程的核,則CPU 12還可以使用用于每個硬件線程的訪問令牌表。例如,圖30是示出多線程訪問令牌表的示例的示意圖。在圖30所示的示例中,核30a具有兩個硬件線程。在這種情況下,CPU 12包括由每個硬件線程使用的兩個訪問令牌表31b和31c。此外,CPU 12將被發(fā)出存儲請求的線程使用并且由訪問令牌表輸出的訪問令牌存儲到分組中。此外,訪問令牌表的數(shù)目并不限制于在圖30中所示的示例;因此,CPU12也可以具有任意數(shù)目的訪問令牌表。如上所述,如果CPU 12使用用于每個硬件線程的訪問令牌表,則CPU 12在不使OS或應(yīng)用復(fù)雜化的情況下防止由故障節(jié)點執(zhí)行的存儲器訪問,即使在通過使用多線程來執(zhí)行過程的情況下也如此。因此,信息處理系統(tǒng)I能夠正確地執(zhí)行故障轉(zhuǎn)移。(2)非保護區(qū)當上述CPU 12訪問非保護區(qū)時,CPU 12使用“allO”作為訪問令牌和存儲器令牌;然而,本實施例并不限于此。例如,也可以通過在由存儲器令牌寄存器存儲的存儲器令牌中設(shè)置有效位并使用該有效位來表示目標訪問是在受保護區(qū)還是處于非保護區(qū)中。例如,圖31是示出存儲器令牌檢查器的變型的示意圖。在圖31所示的示例中,存儲器令牌檢查器38e包括存儲器令牌寄存器38f。存儲器令牌寄存器38f使用包括在存儲器令牌寄存器38b中的I位保留位作為有效位,并在與非保護區(qū)相關(guān)聯(lián)的字段中存儲有效位“O”。在這種情況下,如果目標訪問在非保護區(qū),則向訪問確定控制器38d輸入表示自由訪問的信號;因此,能夠在不在非保護區(qū)中設(shè)置存儲器令牌的情況下合適地實施存儲器訪問。(3)歸因于未授權(quán)訪問的存儲器令牌匹配上述CPU 12取決于存儲器令牌是否與訪問令牌匹配來確定是否執(zhí)行存儲器訪問請求;然而,實施例并不限于此。例如,除了確定存儲器令牌是否與訪問令牌匹配之外,也可以確定發(fā)出存儲器訪問請求的節(jié)點是否為預(yù)先允許的節(jié)點。例如,圖32是示出僅允許預(yù)先允許的節(jié)點執(zhí)行存儲器訪問的存儲器訪問令牌檢查器的示意圖。在圖32所示的示例中,除了存儲器令牌寄存器38b之外,存儲器令牌檢查器38g還包括節(jié)點確定電路38h,并且節(jié)點確定電路38h包括節(jié)點列表寄存器38i。在這點上,將被允許訪問的節(jié)點的節(jié)點ID存儲在用于每個段區(qū)域的節(jié)點列表寄存器38i中。節(jié)點列表寄存器38i根據(jù)對應(yīng)于存儲器訪問請求的目標的段的地址來輸出被允許訪問的節(jié)點的節(jié)點ID。然后,節(jié)點確定電路38h向訪問確定控制器38d輸出表示已由節(jié)點列表寄存器38i輸出的節(jié)點ID是否與作為存儲器訪問請求的發(fā)出源的節(jié)點的節(jié)點ID匹配的節(jié)點ID匹配。然后,如果令牌使能表示“是(I)”以及如果“我的節(jié)點命中(MY Node HIT)”,令牌匹配,節(jié)點ID匹配以及訪問自由均為“0”,則訪問確定控制器38d不允許執(zhí)行存儲器訪問請求。在除了上述情況的情況下,訪問確定控制器38d允許執(zhí)行存儲器訪問請求。如上所述,CPU 12能夠通過檢查節(jié)點ID來防止未授權(quán)訪問。根據(jù)實施例的方面,在共享存儲器配置中正確地執(zhí)行故障轉(zhuǎn)移。
權(quán)利要求
1.一種信息處理設(shè)備,包括: 具有第一節(jié)點和第二節(jié)點的多個節(jié)點,所述多個節(jié)點中的每個包括處理器和存儲器,在所述存儲器中,至少部分區(qū)域被設(shè)置為共享存儲區(qū);以及連接所述節(jié)點的互連;其中所述第一節(jié)點包括: 第一存儲單元,其中存儲用于訪問所述第二節(jié)點中的存儲器的標識信息;以及發(fā)送單元,其通過附加存儲在所述第一存儲單元中的所述標識信息來將要發(fā)送的通信數(shù)據(jù)發(fā)送給所述第二節(jié)點;并且所述第二節(jié)點包括: 第二存儲單元,其中存儲用于控制對另一節(jié)點對所述第二節(jié)點中的存儲器中的所述共享存儲區(qū)的訪問的許可的標識信息;以及 控制單元,其基于附加到從所述第一節(jié)點發(fā)送的所述通信數(shù)據(jù)的所述標識信息和存儲在所述第二存儲單元中的所述標識信息,來確定是否允許訪問所述第二節(jié)點中的所述存儲器中的所述共享存儲區(qū)。
2.根據(jù)權(quán)利要求 1所述的信息處理設(shè)備,其中: 所述第一存儲單元存儲由所述第二節(jié)點通知的所述標識信息; 所述第二節(jié)點還包括: 通知單元,其將新的標識信息通知給所述第一節(jié)點;以及 改變單元,其將存儲在所述第二存儲單元中的所述標識信息改變?yōu)橛伤鐾ㄖ獑卧ㄖ乃鰳俗R信息; 當附加到從所述第一節(jié)點發(fā)送的所述通信數(shù)據(jù)的所述標識信息與存儲在所述第二存儲單元中的所述標識信息匹配時,所述控制單元允許對所述第二節(jié)點中的所述存儲器中的所述共享存儲區(qū)的訪問;以及 當附加到從所述第一節(jié)點發(fā)送的所述通信數(shù)據(jù)的所述標識信息與存儲在所述第二存儲單元中的所述標識信息不匹配時,所述控制單元不允許對所述第二節(jié)點中的所述存儲器中的所述共享存儲區(qū)的訪問。
3.根據(jù)權(quán)利要求2所述的信息處理設(shè)備,其中: 所述第一節(jié)點還包括高速緩沖存儲器,其保留從所述第二節(jié)點中的所述存儲器獲得的數(shù)據(jù); 當所述控制單元不允許用于將來自所述第二節(jié)點中的所述存儲器的數(shù)據(jù)保留到所述第一節(jié)點中的所述高速緩沖存儲器的訪問時,所述控制單元將包括在所述第一節(jié)點中的所述高速緩沖存儲器所保留的數(shù)據(jù)回寫到所述第二節(jié)點中的所述存儲器;以及 在所述控制單元將包括在所述第一節(jié)點中的所述高速緩沖存儲器所保留的數(shù)據(jù)回寫到所述第二節(jié)點中的所述存儲器之前,所述改變單元將存儲在所述第二存儲單元中的所述標識信息改變?yōu)樗鲂碌臉俗R信息。
4.根據(jù)權(quán)利要求2或3所述的信息處理設(shè)備,其中: 所述通知單元將所述新的標識信息與用于停止訪問的指令一起通知給所述第一節(jié)點;以及 在從所述通知單元將所述用于停止訪問的指令通知給所述第一節(jié)點起經(jīng)過預(yù)定時間之后,所述改變單元將存儲在所述第二存儲單元中的所述標識信息改變?yōu)橛伤鐾ㄖ獑卧ㄖ乃鲂碌臉俗R信息。
5.根據(jù)權(quán)利要求2或3所述的信息處理設(shè)備,其中: 所述通知單元將所述新的標識信息通知給所述第一節(jié)點; 所述改變單元將存儲在所述第二存儲單元中的所述標識信息改變?yōu)樗鲂碌臉俗R信息;并且 當對所述第二節(jié)點中的存儲器中的所述共享存儲區(qū)的訪問未被允許時,所述發(fā)送單元重新發(fā)送用于請求相同訪問的所述通信數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的信息處理設(shè)備,其中,當所述控制單元不允許對所述第二節(jié)點中的所述存儲器中的所述共享存儲區(qū)的訪問時,所述控制單元將包括在所述第一節(jié)點中的所述高速緩沖存儲器所保留的數(shù)據(jù)回寫到所述第二節(jié)點中的所述存儲器。
7.根據(jù)權(quán)利要求1至3中任一項所述的信息處理設(shè)備,其中所述第一節(jié)點將執(zhí)行上下文切換時用于對數(shù)據(jù)進行堆棧存放的寄存器的一部分用作所述第一存儲單元。
8.根據(jù)權(quán)利要求1至3中任一項所述的信息處理設(shè)備,其中所述第一節(jié)點包括的所述第一存儲單元的數(shù)目與在所述第一節(jié)點中并行執(zhí)行的線程的數(shù)目相等。
9.一種由信息處理設(shè)備執(zhí)行的防止未授權(quán)訪問的方法,所述信息處理設(shè)備包括具有第一節(jié)點和第二節(jié)點的多個節(jié)點,以及連接所述節(jié)點的互連,所述多個節(jié)點中的每個包括處理器和存儲器,所述存儲器中的至少一部分區(qū)域被設(shè)置為共享存儲區(qū),所述防止未授權(quán)訪問的方法包括: 由所述第一節(jié)點發(fā)送用于訪問所 述第二節(jié)點中的存儲器、并且被附加到要發(fā)送給所述第二節(jié)點的通信數(shù)據(jù)的標識信息; 由所述第二節(jié)點獲得用于控制對另一節(jié)點對所述第二節(jié)點中的存儲器中的所述共享存儲區(qū)的訪問的許可的標識信息;以及 由所述第二節(jié)點基于被附加到從所述第一節(jié)點發(fā)送的所述通信數(shù)據(jù)的所述標識信息和在所述獲得過程中獲得的所述標識信息,來確定是否允許對所述第二節(jié)點中的所述存儲器中的所述共享存儲區(qū)的訪問。
全文摘要
一種信息處理設(shè)備,其包括具有第一節(jié)點和第二節(jié)點的節(jié)點,每個節(jié)點包括處理器和存儲器,該存儲器中至少部分區(qū)域被設(shè)置為共享存儲區(qū)。第一節(jié)點存儲用于訪問第二節(jié)點中的存儲器的標識信息,并通過附加該標識信息來發(fā)送通信數(shù)據(jù)。第二節(jié)點存儲用于控制對第二節(jié)點中的共享存儲區(qū)的訪問的許可的標識信息,并基于被附加到通信數(shù)據(jù)的標識信息和存儲在第二節(jié)點中的標識信息來確定是否允許對第二節(jié)點中的共享存儲區(qū)的訪問。
文檔編號G06F3/06GK103186481SQ20121042455
公開日2013年7月3日 申請日期2012年10月30日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者植木俊和, 岡田誠之, 鯉沼秀之, 杉崎剛 申請人:富士通株式會社