專利名稱:信息處理裝置、信息處理方法,以及計算機程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息處理裝置、信息處理方法以及計算M序。更具體 來說,本發(fā)明涉及具有根據(jù)非均勻存儲器訪問(NUMA)的結(jié)構(gòu)(這是共 享存儲器多處理器系統(tǒng)的體系結(jié)構(gòu))的信息處理裝置、信息處理方法以及 計算絲序。
背景技術(shù):
近年來,多處理器信息處理裝置的數(shù)量越來越多,它們具有多個處 理器(中央處理單元(CPU)),并通過使用處理器進行并行處理來實現(xiàn)有 效的數(shù)據(jù)處理。在這樣的多處理器系統(tǒng)中,多個處理器訪問共享存儲器。 在這樣的系統(tǒng)中,NUMA用作為這樣的體系結(jié)構(gòu),其中從每一個處理器 到存儲器的訪問的開銷(access cost)不是均勻的。
圖1顯示了帶有NUMA體系結(jié)構(gòu)的信息處理裝置的結(jié)構(gòu)示例。 如圖1所示,多個芯片集11和21作為節(jié)點互連到縱橫開關(guān)。用于在 從一個節(jié)點訪問連接到另 一個節(jié)點的存儲器時轉(zhuǎn)換地址的地址轉(zhuǎn)換表31 被連接到縱橫開關(guān)。
CPU-1 12、存儲器-1 13以及設(shè)備-114通過充當本地總線的系統(tǒng)總 線1連接到芯片集11。 CPU-2 22、存儲器-2 23以及設(shè)備-2 24通過充 當本地總線的系統(tǒng)總線2連接到芯片集22。
存儲器-1 13和存儲器-2 23由CPU-1 12和CPU-2 22共享。在 利用這樣的共享存儲器結(jié)構(gòu)的NUMA中,從每一個CPU到每一個存儲器的訪問開銷不是均勻的。
例如,當在CPU-112上運行的任務(wù)訪問存儲在存儲器-2 23中的 數(shù)據(jù)時,需要通過芯片集11的系統(tǒng)總線1、縱橫開關(guān)以及芯片集21的 系統(tǒng)總線2來訪問存儲器-2 23。如此,當其中正在運行任務(wù)的CPU和 其中存儲了數(shù)據(jù)的存儲器不在同一個本地總線(系統(tǒng)總線)上時,存儲器 訪問開銷增大。
已經(jīng)提出了許多的措施,以改善與具有NUMA體系結(jié)構(gòu)的系統(tǒng)中 的存儲器訪問開銷相關(guān)的性能。例如,日本專利No. 3832833 (International Business Machines Corp. (IBM))提出了這樣的結(jié)構(gòu)在 響應(yīng)來自CPU的讀取請求,經(jīng)由不同于本地總線的總線提供數(shù)據(jù)時,實 現(xiàn)了 一致性通知(coherency communication)的低i^J^。
此外,日本專利No. 3924206 (IBM)通過i殳置與lt據(jù)對應(yīng)的直寫指 示符以及確定是否可以對變化的詳細信息進行緩存,來消除不必要的一致 性通知。
此外,日本未經(jīng)審查的專利申請出版物No. 2006 - 39822 (Canon Inc.)說明了這樣的結(jié)構(gòu)推測性地重復對多處理器的任務(wù)分配,并根據(jù) 每一個CPU中涉及的通信成本的值,確定任務(wù)和處理器的最優(yōu)組合。
然而,相關(guān)技術(shù)的這些技術(shù)只試圖優(yōu)化從CPU到存儲器的存儲器 訪問。隨著最近年來出現(xiàn)了涉及大量的數(shù)據(jù)的輸"輸出的設(shè)備,由于設(shè) 備驅(qū)動器而給CPU施加了較大的負載。如此,需要在考慮到設(shè)備的情況 下實現(xiàn)最優(yōu)化。
例如,利用前述的相關(guān)技術(shù)中的技術(shù),在其中CPU和存儲器位于 同 一個本地總線上但是設(shè)備和要被該設(shè)備訪問的存儲器不在同 一個本地 總線上的信息處理裝置中沒有有益的效果。具體來it,在如圖2所示的 結(jié)構(gòu)中沒有有益的效果。
請參看圖2,如在圖1中,芯片集11和21作為節(jié)點互連到縱 橫開關(guān)。用于在從一個節(jié)點訪問連接到另一個節(jié)點的存儲器時轉(zhuǎn)換地址的 地址轉(zhuǎn)換表31連接到縱橫開關(guān)。
CPU-112、存儲器-l 13以及設(shè)備-l 14經(jīng)由充當本地總線的系統(tǒng)總 線1連接到芯片集11。 CPU-2 22、存儲器-2 23以及設(shè)t2 24經(jīng)由充當 本地總線的系統(tǒng)總線2連接到芯片集21。在連接到芯片集21 —側(cè)的系統(tǒng)總線2的CPU-2 22上設(shè)置連接 到芯片集11 一側(cè)的系統(tǒng)總線1的i殳備-114所用的i更備驅(qū)動器41。
通過激活芯片集21 —側(cè)的CPU-2 22中包括的i殳備驅(qū)動器41, 芯片集11 一側(cè)的設(shè)備-114開始操作,而設(shè)備-114執(zhí)行數(shù)據(jù)處理。例如, 當設(shè)備-114是網(wǎng)卡時,設(shè)備-114通過網(wǎng)絡(luò)與外部進行通信。可替選地, 當i殳備-114是視頻卡時,設(shè)備-114執(zhí)行圖像數(shù)據(jù)處理。
通過經(jīng)由縱橫開關(guān)執(zhí)行直接存儲器訪問(DMA),諸如通信數(shù)據(jù)或 視頻數(shù)據(jù)的要由設(shè)備-1 14進行處理的數(shù)據(jù)43被存儲在芯片集21 —側(cè) 的存儲器-2 23中。此外,當從存儲器-223獲取數(shù)據(jù)42時,設(shè)備-114經(jīng) 由縱橫開關(guān)執(zhí)行DMA。
相關(guān)技術(shù)中的這些技術(shù)只試圖優(yōu)化從CPU到存儲器的存儲器訪 問。因此,如圖2所示,如在其中i殳備和存儲器不在同一個本地總線上 的信息處理裝置中那樣,在其中數(shù)據(jù)在設(shè)備、存儲器以及CPU之間傳輸 的結(jié)構(gòu)中,通過使用相關(guān)技術(shù)中的技術(shù),不會充分地實現(xiàn)有益的效果。
此外,日本專利No. 3123425 (Nippon Electric Co" Ltd. (NEC)) 說明了這樣的結(jié)構(gòu)通過將來自設(shè)備的中斷分配在該時間點負載最低的 CPU來進行負載^t(同時使用神經(jīng)網(wǎng)絡(luò))。通過關(guān)注每一個CPU上的 負載來設(shè)計此4支術(shù)。
即使利用此結(jié)構(gòu),如圖3所示,例如,當要被設(shè)備訪問的存儲器 不在CPU所連接到的本地總線上時,經(jīng)由縱橫開關(guān)執(zhí)行來自設(shè)備的驅(qū)動 器的存儲器訪問,相應(yīng)地,驅(qū)動器在其上運行的CPU的負載增大。
如圖3所示的信息處理裝置具有類似于如圖1和2所示結(jié)構(gòu)的 結(jié)構(gòu)。芯片集11和21作為節(jié)點互連到縱橫開關(guān)。用于在從一個節(jié)點訪 問連接到另一個節(jié)點的存儲器時轉(zhuǎn)換地址的地址轉(zhuǎn)換表31連接到縱橫 開關(guān)。
CPU-1 12、存儲器-l 13以及設(shè)ll 14經(jīng)由充當本地總線的系統(tǒng)總 線1連接到芯片集11。 CPU-2 22、存儲器-2 23以及設(shè)備-2 24經(jīng)由充當 本地總線的系統(tǒng)總線2連接到芯片集21。
在連接到芯片集21 —側(cè)的系統(tǒng)總線2的CPU-2 22上設(shè)置連接 到芯片集11 一側(cè)上的系統(tǒng)總線1的i殳備-114所用的i殳備驅(qū)動器41。
通過激活芯片集21 —側(cè)的CPU-2 22中包括的設(shè)備驅(qū)動器41,芯片集11 一側(cè)的設(shè)備-114開始操作,且設(shè)備-114執(zhí)行數(shù)據(jù)處理。例如, 當設(shè)備-1 14是網(wǎng)卡時,設(shè)備-1 14經(jīng)由網(wǎng)絡(luò)與外部進行通信處理。可替 選地,當設(shè)備-1 14是視頻卡時,設(shè)備-114執(zhí)行圖像數(shù)據(jù)處理。
在此結(jié)構(gòu)示例中,與如圖2所示的結(jié)構(gòu)不同,通it^連接到系統(tǒng) 總線1 (這是連接到同一個芯片集的本地總線)的存儲器-1 13執(zhí)行 DMA,由設(shè)備-1 14處理的數(shù)據(jù)43作為數(shù)據(jù)44進行存儲。此外,當從 存儲器-1 13獲取數(shù)據(jù)時,設(shè)備-1 14執(zhí)行DMA。
在此結(jié)構(gòu)中,設(shè)備-1 14可以訪問存儲器-1 13而無需經(jīng)由縱橫開關(guān), 相應(yīng)地,可以降低存儲器訪問開銷。然而,即使在此結(jié)構(gòu)中,也需要芯片 集21 —側(cè)的CPU-2 22上的驅(qū)動器41經(jīng)由縱橫開關(guān)訪問存儲器-113, 相應(yīng)地,驅(qū)動器在其上運行的CPU的負載增大。
發(fā)明內(nèi)容
需要提供一種具有NUMA體系結(jié)構(gòu)的信息處理裝置,其降低與設(shè) 備進行的訪問相關(guān)的延遲,并通過最佳地組^i殳備所連接到的總線和設(shè)備 所用的設(shè)備驅(qū)動器在其上運行的處理器,提高了使用每一個處理器的效 率;還需要提供一種信息處理方法以及計算機程序。
根據(jù)本發(fā)明的實施例,提供了一種包括下列元件的信息處理裝置 多個節(jié)點,每一個節(jié)點都至少將處理器和存儲器連接到系統(tǒng)總線;用于互 連節(jié)點的互連總線;被連接到多個節(jié)點中的任何一個節(jié)點的系統(tǒng)總線并執(zhí) 行數(shù)據(jù)處理的設(shè)備;以及,存儲器選擇單元,用于選#^連接到所述設(shè)備 所連接到的系統(tǒng)總線的存儲器,作為要被該設(shè)備訪問的存儲器。
此夕卜,存儲器選擇單元可以在對被連接到設(shè)備所連接到的系統(tǒng)總線 的存儲器進行的保留處理失敗的情況下,選擇不同于連接到該設(shè)備所連接 到的系統(tǒng)總線的存儲器,作為要被該設(shè)備訪問的存儲器。
此外,存儲器選擇單元可以在對被連接到該設(shè)備所連接到的系統(tǒng)總 線的存儲器的進行的保留處理失敗的情況下,結(jié)束由該i殳4^C行的處理。
此夕卜,存儲器選擇單元可以在對被連接到該設(shè)備所連接到的系統(tǒng)總 線的存儲器進行的保留處理失敗的情況下,重復對被連接到該設(shè)備所連接 到的系統(tǒng)總線的存儲器進行保留處理。
此外,信息處理裝置還可以進一步包括處理器選擇單元,用于選擇連接到設(shè)備所連接到的系統(tǒng)總線的處理器,作為在其上設(shè)置了對應(yīng)于該設(shè) 備的設(shè)備驅(qū)動器的處理器。
此外,設(shè)備選擇單元還可以確定設(shè)備所連接到的系統(tǒng)總線,并選擇 連接到該系統(tǒng)總線的處理器作為在其上激活使用該設(shè)備的應(yīng)用程序的處 理器。
設(shè)備驅(qū)動器可以分成用于執(zhí)行主數(shù)據(jù)處理的主處理執(zhí)行部分和用 于執(zhí)行中斷處理的中斷處理執(zhí)行部分。第一處理器(其是被設(shè)置到多個節(jié) 點的多個處理器中的一個)可以是主處理執(zhí)行處理器,不同于該第 一處理 器的第二處理器可以是中斷處理執(zhí)行處理器。
中斷處理執(zhí)行處理器可以使用下列選擇方案中的任何一個來選擇
處理器選擇連接到設(shè)備所連接到的系統(tǒng)總線的處理器;選擇在要選擇處 理器的時間點負載最低的處理器;以及,使用循環(huán)方案來選擇處理器。
設(shè)備可以是執(zhí)行通信處理的設(shè)備。主處理執(zhí)行部分可以是執(zhí)行數(shù)據(jù) 發(fā)送完成處理、數(shù)據(jù)接收完成處理以及錯誤處理的處理單元。
根據(jù)本發(fā)明的實施例,提供了由信息處理裝置執(zhí)行的信息處理方 法。該信息處理裝置包括多個節(jié)點,每一個節(jié)點都至少將處理器和存儲 器連接到系統(tǒng)總線;將節(jié)點互連在一起的互連總線;以及,被連接到多個 節(jié)點中的任何一個節(jié)點的系統(tǒng)總線并執(zhí)行數(shù)據(jù)處理的設(shè)備。該方法包括利 用存儲器選擇單元選擇被連接到該設(shè)備所連接到的系統(tǒng)總線的存儲器作 為要^被該i殳4^訪問的存儲器的步驟。
根據(jù)本發(fā)明的實施例,提供了用于使信息處理裝置執(zhí)行信息處理的 計算^序。該信息處理裝置包括多個節(jié)點,每一個節(jié)點都至少將存儲 器和處理器連接到系統(tǒng)總線;將節(jié)點互連的互連總線;以及,被連接到多 個節(jié)點中的任何一個節(jié)點的系統(tǒng)總線并執(zhí)行數(shù)據(jù)處理的設(shè)備。該計算, 序包括使存儲器選擇單元選g連接到該設(shè)備所連接到的系統(tǒng)總線的存 儲器作為要被該設(shè)備訪問的存儲器的步驟。
的計算機程序,該存儲介質(zhì)^通信介質(zhì),,以計算機可讀取的;式:可以執(zhí)^ 各種程序代碼的通用計算機系統(tǒng)提供程序。通過以計算機可讀取的格式提 供這樣的程序,可以在計算機系統(tǒng)上實現(xiàn)根據(jù)該程序的處理。
通過基于稍后所描述的本發(fā)明的實施例和附圖的詳細描述,本發(fā)明的各實施例的進一步的目的、特點以及優(yōu)點將變得明顯。此r沈明書中的術(shù) 語"系統(tǒng)"是多個裝置的邏輯集合,不僅限于這些裝置被封絲單個殼體中 的結(jié)構(gòu)。
根據(jù)本發(fā)明的實施例,在具有根據(jù)NUMA的結(jié)構(gòu)(這是共享存儲 器多處理器系統(tǒng)的體系結(jié)構(gòu))的信息處理裝置中,設(shè)備所連接到的系統(tǒng)總 線上的存儲器被選為要被該設(shè)備訪問的存儲器。此外,設(shè)備所連接到的總 線上的處理器被設(shè)置為在其上設(shè)置了用于該設(shè)備的設(shè)備驅(qū)動器的處理器。 利用此結(jié)構(gòu),在同一個系統(tǒng)總線上設(shè)置了設(shè)備、處理器、以及要被該設(shè)備 和處理器訪問的存儲器。相應(yīng)地,在使用該設(shè)備時,可以經(jīng)由一個系統(tǒng)總 線訪問存儲器,從而降低了存儲器訪問開銷。
圖1顯示了具有NUMA體系結(jié)構(gòu)的信息處理裝置的結(jié)構(gòu)示例;
圖2是顯示了信息處理裝置的結(jié)構(gòu)(其中設(shè)備和要被該設(shè)備訪問 的存儲器不在同 一個本地總線上)和由信息處理裝置執(zhí)行的存儲器訪問處 理的圖形;
圖3是顯示了信息處理裝置的結(jié)構(gòu)(其中要被i殳備訪問的存儲器 不在連接到CPU的本地總線上)和由信息處理裝置執(zhí)行的存儲器訪問處 理的圖形;
圖4顯示了具有NUMA體系結(jié)構(gòu)的信息處理裝置的結(jié)構(gòu)示例,這 是根據(jù)本發(fā)明 一個實施例的信息處理裝置的結(jié)構(gòu)示例;
圖5是顯示了在從CPU和設(shè)備訪問存儲器時執(zhí)行的處理的序列 的流程圖6是顯示了根據(jù)本發(fā)明本實施例的信息處理裝置的數(shù)據(jù)存儲結(jié) 構(gòu)和存儲器訪問處理示例的圖形;
圖7是顯示了在當由設(shè)備驅(qū)動器保留存儲器時通過指定總線來保 留(reserve)存儲器的情況下執(zhí)行的處理的序列的流程圖8是在連接到特定本地總線(系統(tǒng)總線)的CPU激活應(yīng)用程 序的情況下的序列的流程圖9是顯示了其中通過使用多個CPU提高處理效率的結(jié)構(gòu)示例的圖形;
圖io是顯示了被分成執(zhí)行中斷處理的部分和執(zhí)行主數(shù)據(jù)處理的
部分(下半部(bottom half))的設(shè)備驅(qū)動器的結(jié)構(gòu)示例的圖形;
圖11是顯示了在生成中斷時由中斷處理單元執(zhí)行的處理的序列 的流-呈圖;以及
圖12是顯示了在調(diào)度下半部處理單元時執(zhí)行的處理的序列的流程圖。
具體實施例方式
下面,將描述才艮據(jù)本發(fā)明的一個實施例的信息處理裝置、信息處理 方法、以及計算;^序。
根據(jù)本發(fā)明的一個實施例的信息處理裝置是具有NUMA體系結(jié)構(gòu) 的信息處理裝置,NUMA體系結(jié)構(gòu)是這樣的體系結(jié)構(gòu)多個處理器訪問 共享存儲器,從每一個處理器到該存儲器的訪問開銷是不均勻的。
圖4顯示了具有NUMA體系結(jié)構(gòu)的信息處理裝置的結(jié)構(gòu)示例, 這是根據(jù)本發(fā)明的一個實施例的信息處理裝置的結(jié)構(gòu)示例;如圖4所示, 多個芯片集111和121作為節(jié)點互連到縱橫開關(guān)??v橫開關(guān)用作將多個 節(jié)點互連的互連總線。用于在從一個節(jié)點訪問連接到另 一個節(jié)點的存儲器 時轉(zhuǎn)換地址的地址轉(zhuǎn)換表131被連接到縱橫開關(guān)。
CPU-1112、存儲器-1113,以及設(shè)備-1114經(jīng)由充當本地總線的系 統(tǒng)總線1連接到芯片集111。 CPU-2 122、存儲器-2 123以及設(shè)^2 124 經(jīng)由充當本地總線的系統(tǒng)總線2連接到芯片集121。
在如圖4所示的信息處理裝置中,參考如圖5所示的流程圖描述 在從CPU和設(shè)備訪問存儲器時執(zhí)行的處理的流程。
如圖5所示的處理是對由CPU執(zhí)行的存儲器訪問和由設(shè)^^吏用 DMA執(zhí)行的存儲器訪問通用的序列。在步驟Sll中,CPU或設(shè)備參照 地址轉(zhuǎn)換表131。在步驟S12中,確定要被訪問的存儲器是否位于與 CPU或設(shè)備所連接到的本地總線相同的本地總線(系統(tǒng)總線)上。
當在步驟S12中確定要被訪問的存儲器位于同一個本地總線上 時,流程進入步驟S13,執(zhí)行普通的存儲器訪問。對比而言,當存儲器不在同一個本地總線(系統(tǒng)總線)上時,流程
進入步驟S14,經(jīng)由縱橫開關(guān)訪問存儲器。在此情況下,在步驟S15中, 確定是否可以維持緩存和存儲器一致性。即,確定是否甚至在當訪問存儲 器時更新緩存的數(shù)據(jù)的情況下也可以維持一致性。
當在步驟S15中確定可以維持一致性時,流程進入步驟S17,并 經(jīng)由縱橫開關(guān)訪問連接到本地總線(系統(tǒng)總線,其連接到不同的節(jié)點)的 存儲器。
當在步驟S15中確定不可以維持一致性時,流程進入步驟S16。 在步驟S16中,使緩存失效。在步驟S17中,經(jīng)由縱橫開關(guān)訪問連接到 本地總線(系統(tǒng)總線,其連接到不同的節(jié)點)的存儲器。
在步驟S14到S17中,經(jīng)由縱橫開關(guān)訪問存儲器,相應(yīng)地,處理 開銷增大。根據(jù)本發(fā)明本實施例的信息處理裝置避免了這樣的經(jīng)由縱橫開 關(guān)的存儲器訪問。
現(xiàn)在請參看圖6,將描述根據(jù)本發(fā)明本實施例的信息處理裝置的數(shù) 據(jù)存儲結(jié)構(gòu)和存儲器訪問過程。在根據(jù)本發(fā)明本實施例的信息處理裝置 中,如圖6所示,通it^設(shè)備連接到的本地總線上保留要被該設(shè)備訪問 的存儲器,避免了經(jīng)由縱橫開關(guān)進行的存儲器訪問。
如圖6所示的信息處理裝置具有類似于圖4所顯示的結(jié)構(gòu)。芯片 集111和121作為節(jié)點互連到縱橫開關(guān),縱橫開關(guān)是互連總線。用于在 從一個節(jié)點訪問連接到另一個節(jié)點的存儲器時轉(zhuǎn)換地址的地址轉(zhuǎn)換表 131被連接到縱橫開關(guān)。
CPU-1112、存儲器-1113以及設(shè)備-1 114經(jīng)由充當本地總線的系統(tǒng) 總線1連接到芯片集111。 CPU-2 122、存儲器-2 123以及設(shè)備-2 124經(jīng) 由充當本地總線的系統(tǒng)總線2連接到芯片集121。
在連接到芯片集111 一側(cè)的系統(tǒng)總線1的CPU-1 112上設(shè)置連 接到同一個芯片集111的系統(tǒng)總線1的設(shè)備-1114的設(shè)備驅(qū)動器141。
通過激活芯片集111 一側(cè)的CPU-1 112中包括的設(shè)備驅(qū)動器 141,芯片集111 一側(cè)的設(shè)備-1114開始操作,且i殳備-1114執(zhí)行數(shù)據(jù)處 理。例如,當i殳備-1114是網(wǎng)卡時,i殳備-1114經(jīng)由網(wǎng)絡(luò)與外部進行通信 處理??商孢x地,當設(shè)備-1 114是視頻卡時,設(shè)備-1 114執(zhí)行圖像數(shù)據(jù)處 理。在此結(jié)構(gòu)示例中,設(shè)備-1 114使用DMA訪問連接到同一個節(jié)點 或芯片集111 一側(cè)的系統(tǒng)總線1的存儲器-1 113。此外,在其上設(shè)置了 對應(yīng)于i殳備-l 114的設(shè)備驅(qū)動器141的CPU-1 112訪問連接到同一個 節(jié)點或芯片集111 一側(cè)的系統(tǒng)總線1的存儲器-1113。
利用這樣的數(shù)據(jù)訪問結(jié)構(gòu),在設(shè)備-1114執(zhí)行數(shù)據(jù)處理時,CPU-1 112和i史備-1114訪問連接到同一個節(jié)點的本地總線(系統(tǒng)總線l)上的 存儲器-1113就足夠了,相應(yīng)地,避免了經(jīng)由縱橫開關(guān)訪問另一個節(jié)點。 結(jié)果,只在如圖5所示的流程圖的步驟S13中訪問存儲器,而不執(zhí)行步 驟S14到S17中的經(jīng)由縱橫開關(guān)的處理。因此,降^^儲器訪問開銷, 并提高處理效率。
在才艮據(jù)本發(fā)明本實施例的信息處理裝置中,信息處理裝置中包括的 任何一個處理器執(zhí)行下列處理
在選擇要被設(shè)備訪問的存儲器時,選擇該設(shè)備所連接到的系統(tǒng)總線 上的存儲器,作為要被該設(shè)備訪問的存儲器;以及
選捧對應(yīng)于設(shè)備的設(shè)備驅(qū)動器要在其上被激活的處理器,作為該設(shè)
備所連接到的系統(tǒng)總線上的處理器。
即,處理器用作存儲器選擇單元和處理器選擇單元。
將描述存儲器選擇過程和處理器選擇過程的特定處理序列。
存儲器選擇過程
例如,Linux提供NUMA應(yīng)用程序接口 (API)。通過使用此API, 在由設(shè)備驅(qū)動器保留存儲器時,可以明確地指定要在哪一個系統(tǒng)總線上保 留存儲器。
請參看如圖7所示的流程圖,將描i^v^使用此API選擇要訪問的 存儲器的情況下執(zhí)行的過程的序列。
在步驟S101中,通過設(shè)置寄存器值等等來初始化設(shè)備。在步驟 S102中,確定該i殳備所連接到的總線。例如,在i殳知1114的情況下, 從如圖6所示的結(jié)構(gòu)很清楚地看出,設(shè)備-1 114連接到系統(tǒng)總線1。在 步驟S103中,通過指定本地總線的總線編號,在該設(shè)備連接到的本地總 線上保留要被該設(shè)4^訪問的存儲器。
當在同一個總線上保留存儲器失敗時(在步驟S104中為"否"),在步驟S105中,保留存儲器而無需指定總線編號。
在該處理的流程中,如果在同一個總線上保留存儲器失敗(在步驟 S104中為"否"),則保留要被該設(shè)備訪問的存儲器,而無需指定總線編號, 從而可靠地保留存儲器。
通過此設(shè)置,通常被連接到設(shè)備所連接到的同一個總線的存儲器優(yōu) 先地被保留為要被該設(shè)備訪問的存儲器。只有在保留此存儲器失敗的情況 下,例外地,不在該設(shè)備所連接到的同一個本地總線上的存儲器被保留為 訪問目的地。
通過在激活設(shè)備時可靠地執(zhí)行根據(jù)此處理序列的此存儲器保留過 程,可以配置參考圖6所描述的結(jié)構(gòu),即,其中將設(shè)備和要被該設(shè)備訪 問的存儲器設(shè)置于同一個本地總線(系統(tǒng)總線)上的結(jié)構(gòu)。
在如圖7所示的流程圖中,當步驟S103中的在同一個總線上保 留存儲器失敗時(在步驟S104中為"否,,),在步驟S105中,保留存儲 器而無需指定總線編號。此序列使存儲器保留的優(yōu)先級高于停止由設(shè)4^L 行的處理。
即,在此情況下,雖然連接到與設(shè)備所連接到的節(jié)點不同的節(jié)點的 存儲器可以被設(shè)置為訪問目的地,但該設(shè)備仍可以執(zhí)行處理。可替選地, 當在同一個總線上保留存儲器失敗(在步驟S104中為"否,,)時,則可以 設(shè)置為結(jié)束使用該設(shè)備。
可替選地,當在同一個總線上保留存儲器失敗時(在步驟S104中 為"否"),在預置的等待時間之后,流程可以返回到步驟S103,在該步驟 中,重復在同一個總線上保留存儲器。
如此,根據(jù)本發(fā)明本實施例的信息處理裝置中的存儲器選擇單元在 選擇要被設(shè)備訪問的存儲器時,執(zhí)行優(yōu)先地選擇連接到該設(shè)備所連接到的 系統(tǒng)總線的存儲器作為要被該設(shè)備訪問的存儲器的過程。當保留連接到該 設(shè)備所連接到的系統(tǒng)總線的存儲器失敗時,可以重復保留對連接到該系統(tǒng) 總線的存儲器的保留,或者,可以選擇連接到另一個系統(tǒng)總線的存儲器作 為要^L訪問的存儲器??商孢x地,可以結(jié)束由該i史備^L行的處理。
處理器選擇過程
參考圖7所描述的過程是優(yōu)先將設(shè)備所連接到的本地總線上的存 儲器設(shè)置為該設(shè)備的訪問目的地的過程的序列。此夕卜,通過設(shè)置設(shè)備驅(qū)動器(該設(shè)備驅(qū)動器控制要在該設(shè)備所連接到的同一個本地總線上的CPU 上運行),從CPU訪問存儲器的開銷可以減小。
例如,在Linux實現(xiàn)方式中,通過對CPU和存儲器之間的親緣 性(affinity)賦予優(yōu)先級,確定用于執(zhí)行過程的CPU。如上文所描述的, 當在同 一個系統(tǒng)總線上保留連接到同 一個節(jié)點的設(shè)備所使用的存儲器時, 控制該設(shè)備的設(shè)備驅(qū)動器被設(shè)置為在該設(shè)備和存儲器所連接到的同 一個 系統(tǒng)總線的CPU上運行,而無需執(zhí)行特殊處理。
此外,通過4吏用i者如[numactl(這是對應(yīng)于NUMA體系結(jié)構(gòu)的 一個命令)的命令,在激活應(yīng)用程序時,可以明確地指定要被操作的CPU。 命令[numactl〗是指定總線編號和激活應(yīng)用程序的命令.利用命令numactl,可以在連接到特定本地總線(系統(tǒng)總線)的CPU上激活應(yīng) 用程序。即,使用此命令,可以明確地指定要被操作的CPU。
現(xiàn)在請參看如圖8所示的流程圖,將描述此過程的流程。在步驟 S201中,指定要在應(yīng)用程序中使用的設(shè)備。在步驟S202中,確定該設(shè) 備所連接到的本地總線(系統(tǒng)總線)。最后,在步驟S203中,執(zhí)行命令 [numactl,于是,指定該設(shè)備所連接到的本地總線(系統(tǒng)總線),明確地 指定要被操作的CPU,并激活指定的CPU中的應(yīng)用程序。
利用此處理,實現(xiàn)了如圖6所示的存儲器訪問結(jié)構(gòu),其中,設(shè)備、 要被該設(shè)備訪問的存儲器、以及運行用于該設(shè)備的設(shè)備驅(qū)動器的CPU被 置于同一個本地總線(系統(tǒng)總線)上。結(jié)果,在使用設(shè)^^訪問正在處理中 的存儲器時,防止了被連接到與連接到該設(shè)備的節(jié)點不同的節(jié)點的存儲器 被訪問。即,只在如圖5所示的流程圖的步驟S13中訪問存儲器,而不 執(zhí)行步驟S14到S17的經(jīng)由縱橫開關(guān)的處理。因此,減小了存儲器訪問 開銷,提高了處理效率。
如此,根據(jù)本發(fā)明本實施例的信息處理裝置中的處理器選擇單元執(zhí) 行這樣的過程選擇連接到設(shè)備所連接到的系統(tǒng)總線的處理器,作為在其 上設(shè)置對應(yīng)于該設(shè)備的設(shè)備驅(qū)動器的處理器。具體來說,確定連接到設(shè)備 的系統(tǒng)總線,連接到該系統(tǒng)總線的處理器祐i殳置為激活4吏用該i殳備的應(yīng)用 程序的處理器。
其他實施例
多處理器系統(tǒng)包括多個CPU。下面將描述通過使用多個CPU提高處理效率的實施例。
當每一個CPU上的負載為低,并且CPU通過設(shè)備被中斷的頻率 為低時,借助于向在其上正運^i更備驅(qū)動器的CPU發(fā)送中斷通知而通過 數(shù)據(jù)的局部性(locality)提高處理效率。然而,存在這樣的情況可由每一 個CPU處理的數(shù)據(jù)量小于可由設(shè)備處理的數(shù)據(jù)量,或者,相當頻繁地生 成中斷并且每一個CPU的處理效率被降低。
請參看圖9,將描述通過使用多個CPU提高處理效率的結(jié)構(gòu)示 例。如圖9所示的信息處理裝置是具有類似于如圖4和6所示結(jié)構(gòu)的 結(jié)構(gòu)的信息處理裝置100。
充當節(jié)點的芯片集111和121被連接到縱橫開關(guān),縱橫開關(guān)是互 連總線。CPU-1 112、存儲器-l 113以及設(shè)備-l 114經(jīng)由充當本地總線的 系統(tǒng)總線1連接到芯片集111。CPU-2 122、存儲器-2 123以及設(shè)備-2 124 經(jīng)由充當本地總線的系統(tǒng)總線2連接到芯片集121。
在此結(jié)構(gòu)示例中,對應(yīng)于連接到芯片集111 一側(cè)的系統(tǒng)總線1的 設(shè)備-1114的設(shè)備驅(qū)動器被分成兩個部分 一個部分執(zhí)行中斷處理,另一 個部分(下半部)執(zhí)行主數(shù)據(jù)處理,這兩部分在不同的處理器(CPU)上 被^作。利用此結(jié)構(gòu),可以消除由于中斷而造成的寄存器中的值的轉(zhuǎn)移/ 恢復以及緩存中的數(shù)據(jù)的更新的影響,相應(yīng)地,提高了設(shè)備驅(qū)動器的處理 效率。
具體來說,對應(yīng)于連接到芯片集111 一側(cè)的系統(tǒng)總線1的設(shè)備-1 114的設(shè)備驅(qū)動器,如圖9所示,被分成兩個部分,這兩個部分分別在 CPU-1 112和CPU畫2 122上被操作。
連接到設(shè)備-1 114所連接到的同一個本地總線(系統(tǒng)總線1)的 CPU-1 112是包括用于執(zhí)行主數(shù)據(jù)處理(下半部)的主驅(qū)動器181的 CPU;以及
連接到不同于設(shè)ll 114所連接到的本地總線的本地總線(系統(tǒng)總 哉2)的CPU-2 122是包括用于執(zhí)行中斷處理的中斷驅(qū)動器182的 CPU。
如上所述,通過將設(shè)備驅(qū)動器分為兩個部分即,執(zhí)行中斷處理的 部分和執(zhí)行主數(shù)據(jù)處理的部分(下半部),并且在不同的CPU上運行這 兩部分,可以消除由于中斷而造成的寄存器中的值的轉(zhuǎn)移/恢復以及緩存中的數(shù)據(jù)的更新的影響,相應(yīng)地,可以提高設(shè)備驅(qū)動器的處理效率。
根據(jù)例如操作系統(tǒng)(OS)的策略,執(zhí)行選擇用于處理來自設(shè)備的中 斷的cpu的過程。例如,使用下列任何一個方案來選擇cpu:
選捧同一個本地總線上的cpu; 選擇在該時間點負載最低的CPU;以及 使用循環(huán)方案來選擇cpu。
例如,由于在Linux中固定地生成本用于地總線上的CPU的中 斷,如上文所描述的,如果已經(jīng)保留了本地總線上的存儲器,則修改內(nèi)核 中的中斷處理器,以便生成用于不同于本地總線上的CPU的CPU的中 斷。通過為不同于本地總線上的cpu的cpu設(shè)置要生成的中斷,結(jié)果, 在不同于本地總線上的cpu的cpu上執(zhí)fr&備驅(qū)動器的中斷處理器。
圖10顯示了此情況下的i殳備驅(qū)動器的結(jié)構(gòu)示例。即,圖10顯示 了在該^^是網(wǎng)卡的情況下i殳備驅(qū)動器的結(jié)構(gòu)示例。
如圖10所示,i殳備驅(qū)動器200包括下列部件在通過OS識別 設(shè)備時執(zhí)行初始化的初始化處理單元201;存儲諸如因特網(wǎng)協(xié)議(IP)地 址和最大傳輸單元(MTU)的設(shè)置信息的狀態(tài)保存單元202;被上層調(diào)用 并發(fā)送分組的發(fā)送處理單元203;在生成來自設(shè)備的中斷時被調(diào)用的中斷 處理單元204;以;M^進行中斷處理時在調(diào)度器中設(shè)置的下半部處理單元 210。
下半部處理單元210包括發(fā)送完成處理單元211、接收處理單元 212、以及錯誤處理單元213。請參看如圖11所示的流程圖,將描i^fr 生成中斷時由中斷處理單無204執(zhí)行的過程的流程。
在步驟S301中,確定下半部處理單元210是否已經(jīng)被激活。例 如,Linux的下半部是作為[taskletl和[poll]函數(shù)來實現(xiàn)的??梢酝ㄟ^ 檢查內(nèi)核中的可變值來確定下半部是否正在運行。
當下半部處理單元210已經(jīng)激活時,流程t步驟S303。當下半 部處理單元210沒有激活時(在步驟S301中為"否,,),流程i^V步驟 S302。在內(nèi)核調(diào)度器中注冊下半部處理單元210,以4更在生成下一個定時 中斷并激活調(diào)度器時執(zhí)行下半部處理單元210。此后,在步驟S303中, 清除中斷的因素(在外圍組件互連(PCI)的情況下,通過對Intx進行去 聲明(deassert)),并使過程結(jié)束?,F(xiàn)在請參看如圖12所示的流程圖,將描述在調(diào)度下半部處理單元 210時執(zhí)行的處理的流程。在步驟S401中,確定是否存在發(fā)送完成的分 組。如果有發(fā)送完成的分組,則在步驟S402中,執(zhí)g如釋放存儲器的 發(fā)送完成處理。
在步驟S403中,確定是否存在接收到的分組。如果存在接收到的 分組,則在步驟S404中,將接收到的分組傳送到上部的協(xié)議。
在步驟S405中,確定是否發(fā)生了銜吳。如果發(fā)生了錯誤,則在步 驟S406中,執(zhí)行錯誤處理。
在步驟S407中,確定步驟S402中的發(fā)送完成處理、步驟S404 中的接收完成處理以及步驟S406中的錯誤處理中的任何一個處理是否 已經(jīng)執(zhí)行。如果已經(jīng)執(zhí)行了步驟S402、 S404以及S406中的任何一個中 的處理,則在步驟S408中,在調(diào)度器中重新注冊下半部處理單元210, 并結(jié)束該過程。
已經(jīng)在特定實施例的上下文中詳細描述了本發(fā)明。然而,顯然,在 不偏離本發(fā)明的范圍的情況下,本領(lǐng)域技術(shù)人員可以進:行1務(wù)改或作出替代 方案。即,是通過舉例來說明本發(fā)明的,本發(fā)明不應(yīng)該被理解為限于實施 例。應(yīng)該才艮據(jù)所附的權(quán)利要求確定本發(fā)明的范圍。
此說明書中所描述的 一 系列過程可以通過硬件、軟件或石更件和軟件 兩者的組合來執(zhí)行。當要通過軟件執(zhí)行該一系列過程時,通過將記錄了處 理序列的程序安裝在嵌入到專用硬件的計算機的存儲器上或安裝在能夠 執(zhí)行各種過程的通用計算機上來執(zhí)行該程序。例如,也可以將程序預先記 錄在記錄介質(zhì)上。除了將程序從記錄介質(zhì)安裝到計算機中之外,也可以經(jīng) 由諸如局域網(wǎng)(LAN)或因特網(wǎng)的網(wǎng)^#收程序,并可以將程序安裝在諸 如內(nèi)置^Jt的記錄介質(zhì)上。
此說明書中所描述的過程可以根據(jù)描述按時間順序地執(zhí)行,或者也 可以根據(jù)執(zhí)行過程的裝置的處理性能或根據(jù)需要,并行地或分別地執(zhí)行。 此說明書中的術(shù)語"系統(tǒng),,是多個裝置的邏輯集合,而不僅限于這些裝置被 封裝在單一殼體中的結(jié)構(gòu)。
權(quán)利要求
1.一種信息處理裝置,包括多個節(jié)點,每一個節(jié)點都至少將處理器和存儲器連接到系統(tǒng)總線;互連總線,用于互連所述節(jié)點;被連接到所述多個節(jié)點中的任何一個節(jié)點的系統(tǒng)總線并執(zhí)行數(shù)據(jù)處理的設(shè)備;以及存儲器選擇單元,用于選擇被連接到所述設(shè)備所連接到的所述系統(tǒng)總線的存儲器,作為要被所述設(shè)備訪問的存儲器。
2.根據(jù)權(quán)利要求1所述的信息處理裝置,其中,所述存儲器選擇 單元用于在對被連接到所述設(shè)備所連接到的所述系統(tǒng)總線的存儲器進行 的保留處理失敗的情況下,選擇不同于被連接到所述i殳備所連接到的所述 系統(tǒng)總線的存儲器,作為要被所述設(shè)備訪問的存儲器。
3.根據(jù)權(quán)利要求1所述的信息處理裝置,其中,所述存儲器選擇 單元用于在對被連接到所述設(shè)備所連接到的所述系統(tǒng)總線的存儲器進行 的保留處理失敗的情況下,結(jié)束由所述設(shè)^l行的處理。
4.根據(jù)權(quán)利要求1所述的信息處理裝置,其中,所述存儲器選擇 單元用于在對被連接到所述設(shè)備所連接到的所述系統(tǒng)總線的存儲器進行 的保留處理失敗的情況下,重復地對被連接到所述i殳備所連接到的所述系 統(tǒng)總線的存儲器進行保留處理。
5.根據(jù)權(quán)利要求1所述的信息處理裝置,進一步包括處理器選擇單元,用于選##:連接到所述設(shè)備所連接到的所述系統(tǒng)總線的處理器,作為在其上設(shè)置對應(yīng)于所述設(shè)備的設(shè)備驅(qū)動器的處理器。
6.根據(jù)權(quán)利要求5所述的信息處理裝置,其中,所述設(shè)備選擇單 元確定所述i殳備所連接到的系統(tǒng)總線,并選擇連接到所述系統(tǒng)總線的處理器作為在其上激活使用所述設(shè)備的應(yīng)用程序的處理器。
7.根據(jù)權(quán)利要求1所述的信息處理裝置,其中,所述設(shè)備驅(qū)動器 被分成用于執(zhí)行主數(shù)據(jù)處理的主處理執(zhí)行部分和用于執(zhí)行中斷處理的中 斷處理執(zhí)行部分,以及其中,第一處理器是主處理執(zhí)行處理器,該第一處理器^jMLi殳置到 所述多個節(jié)點的多個處理器中的一個,以及,不同于該第一處理器的第二 處理器是中斷處理執(zhí)行處理器。
8. 根據(jù)權(quán)利要求7所述的信息處理裝置,其中,所述中斷處理執(zhí) 行處理器使用下列選擇方案中的任何一個來選擇處理器選#^連接到所述設(shè)備所連接到的所述系統(tǒng)總線的處理器;選擇在要選擇處理器的時間點負栽最低的處理器;以及使用循環(huán)方案選擇處理器。
9. 根據(jù)權(quán)利要求7所述的信息處理裝置,其中,所述設(shè)備是執(zhí)行 通信處理的設(shè)備,以及其中,所述主處理執(zhí)行部分是用于執(zhí)行數(shù)據(jù)發(fā)送完成處理、數(shù)據(jù)接 收完成處理以及餘溪處理的處理單元。
10. —種由信息處理裝置執(zhí)行的信息處理方法,該信息處理裝置包 括多個節(jié)點,每一個節(jié)點都至少將處理器和存儲器連接到系統(tǒng)總線;用 于將所述節(jié)點互連的互連總線;以及,被連接到所述多個節(jié)點中的任何一 個節(jié)點的系統(tǒng)總線并執(zhí)行數(shù)據(jù)處理的設(shè)備,所述方法包括下列步驟利用存儲器選擇單元來選擇被連接到所述設(shè)備所連接到的所述系 統(tǒng)總線的存儲器,作為要被設(shè)備訪問的存儲器。
11. 一種用于使信息處理裝置執(zhí)行信息處理的計算枳4呈序,所述信 息處理裝置包括多個節(jié)點,每一個節(jié)點都至少將處理器和存儲器連接到系統(tǒng)總線;用于將所述節(jié)點互連的互連總線;以及,被連接到所述多個節(jié) 點中的任何一個節(jié)點的系統(tǒng)總線并執(zhí)行l(wèi)t據(jù)處理的設(shè)備,所述計算枳4呈序 包括下列步驟使得存儲器選擇單元選擇被連接到所述設(shè)備所連接到的所述系統(tǒng) 總線的存儲器,作為要被所述設(shè)^^訪問的存儲器。
全文摘要
本發(fā)明公開了一種信息處理裝置、信息處理方法以及計算機程序。該信息處理裝置包括多個節(jié)點,每一個節(jié)點都將處理器和至少一個存儲器連接到系統(tǒng)總線;將節(jié)點互連的互連總線;以及在多個節(jié)點中的任何一個節(jié)點被連接到系統(tǒng)總線并執(zhí)行數(shù)據(jù)處理的設(shè)備;以及,存儲器選擇單元,用于選擇被連接到所述設(shè)備所連接到的系統(tǒng)總線的存儲器,作為要被該設(shè)備訪問的存儲器。
文檔編號G06F15/167GK101566976SQ20091013523
公開日2009年10月28日 申請日期2009年4月21日 優(yōu)先權(quán)日2008年4月21日
發(fā)明者久曾神宏 申請人:索尼株式會社