專利名稱:訪問邏輯分區(qū)中的存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
一般來(lái)說(shuō),本發(fā)明涉及一種改進(jìn)的數(shù)據(jù)處理系統(tǒng)。具體來(lái)說(shuō),本發(fā)明涉及用于擴(kuò)展跨存儲(chǔ)器描述符以便它可以用于描述來(lái)自在邏輯上分區(qū)的計(jì)算環(huán)境中的另一個(gè)分區(qū)的存儲(chǔ)器的系統(tǒng)和方法。
背景技術(shù):
高級(jí)交互執(zhí)行(ADC)操作系統(tǒng)在International BusinessMachine(IBM)公司的pSeries機(jī)器上支持邏輯分區(qū)(LPAR)。LPAR允許在單個(gè)處理器復(fù)合體上運(yùn)行多個(gè)系統(tǒng)映像。每一個(gè)這樣的映像都具有CPU(專用或共享的)、中央存儲(chǔ)器、擴(kuò)充存儲(chǔ)器和通道的完全補(bǔ)充。利用LPAR,在各個(gè)分區(qū)之間資源有清晰的隔離,以便一個(gè)分區(qū)不會(huì)使任何其他分區(qū)的系統(tǒng)環(huán)境不穩(wěn)定。在IBM公司的機(jī)器中,實(shí)現(xiàn)各個(gè)分區(qū)的資源的這種清晰的分離的功能是系統(tǒng)管理程序。
由于每一個(gè)分區(qū)都具有其自己的隔離的資源集,因此,每一個(gè)分區(qū)都具有其自己的“本地”存儲(chǔ)器,該“本地”存儲(chǔ)器對(duì)周圍的分區(qū)不可見。直到創(chuàng)建虛擬輸入/輸出(VIO),一個(gè)分區(qū)沒有任何合法理由直接對(duì)另一個(gè)分區(qū)的存儲(chǔ)器進(jìn)行訪問。
利用VIO,引入了各個(gè)分區(qū)之間的點(diǎn)對(duì)點(diǎn)直接存儲(chǔ)器訪問(DMA)操作和存儲(chǔ)器復(fù)制操作的概念。DMA操作允許將數(shù)據(jù)從一個(gè)存儲(chǔ)器直接傳輸?shù)搅硪粋€(gè)存儲(chǔ)器,無(wú)需使用中央處理單元(CPU)來(lái)執(zhí)行數(shù)據(jù)傳輸。DMA操作允許進(jìn)行比在必須使用CPU來(lái)傳輸數(shù)據(jù)的情況下更快的數(shù)據(jù)傳輸。存儲(chǔ)器復(fù)制操作允許存儲(chǔ)器的某些部分直接從一個(gè)存儲(chǔ)器復(fù)制到另一個(gè)存儲(chǔ)器。
如此,VIO允許在各個(gè)分區(qū)之間共享物理資源,例如,I/O適配器等等。由于某一個(gè)資源可以只屬于一個(gè)分區(qū)(叫做“服務(wù)器”分區(qū)),其他分區(qū)必須經(jīng)過服務(wù)器分區(qū)才能使用該資源(其他分區(qū)被稱為“客戶端”分區(qū))。
在共享資源是I/O適配器的情況下,為了使用服務(wù)器分區(qū)的I/O適配器,服務(wù)器分區(qū)必須建立從I/O適配器到客戶端的存儲(chǔ)器的DMA操作。然而,為了建立DMA操作,服務(wù)器分區(qū)必須知道有關(guān)客戶端分區(qū)的存儲(chǔ)器的結(jié)構(gòu)的信息。此外,服務(wù)器分區(qū)需要能夠?qū)⒂嘘P(guān)客戶端分區(qū)的存儲(chǔ)器結(jié)構(gòu)的信息以可使用的格式沿著其自己的I/O堆棧即,軟件層的規(guī)定的層次結(jié)構(gòu)傳遞,通過該層次結(jié)構(gòu),數(shù)據(jù)必須經(jīng)過處理才能執(zhí)行I/O操作(例如,邏輯卷管理器(LVM)、磁頭驅(qū)動(dòng)程序、適配器驅(qū)動(dòng)程序、總線驅(qū)動(dòng)程序、內(nèi)核等等)。如此,最好有用于以這樣的方式在服務(wù)器分區(qū)的環(huán)境中描述客戶端分區(qū)的存儲(chǔ)器,以便該描述可以輕松地沿著服務(wù)器分區(qū)的I/O堆棧傳遞的系統(tǒng)和方法。
發(fā)明內(nèi)容
本發(fā)明提供了用于在服務(wù)器分區(qū)環(huán)境中擴(kuò)展跨存儲(chǔ)器描述符的使用,以便它可以用于描述另一個(gè)分區(qū)的存儲(chǔ)器,例如,客戶端分區(qū)的存儲(chǔ)器(下面被稱為“遠(yuǎn)程”存儲(chǔ)器)的系統(tǒng)和方法。利用該系統(tǒng)和方法,當(dāng)初始化在邏輯上分區(qū)的計(jì)算系統(tǒng)中的操作系統(tǒng)時(shí),如在邏輯分區(qū)的引導(dǎo)過程中,調(diào)用操作系統(tǒng)內(nèi)核服務(wù),以便執(zhí)行諸如加載設(shè)備驅(qū)動(dòng)程序之類的啟動(dòng)操作。作為這些操作系統(tǒng)內(nèi)核服務(wù)的一部分,調(diào)用內(nèi)核服務(wù),該內(nèi)核服務(wù)將其他邏輯分區(qū)的遠(yuǎn)程存儲(chǔ)器附加到當(dāng)前操作系統(tǒng),以便可以利用其他邏輯分區(qū)的遠(yuǎn)程存儲(chǔ)器執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制和DMA操作。
附加內(nèi)核服務(wù)審查計(jì)算系統(tǒng)的可能由公開固件等等創(chuàng)建的并維護(hù)在服務(wù)器分區(qū)的存儲(chǔ)器中的設(shè)備樹,以便它可被服務(wù)器分區(qū)中的操作系統(tǒng)訪問。每個(gè)邏輯分區(qū)有一個(gè)設(shè)備樹實(shí)例。設(shè)備樹包括該分區(qū)中資源的節(jié)點(diǎn)。這些資源包括每一個(gè)分區(qū)的本地存儲(chǔ)器、PCI/ISA I/O插槽、處理器,受支持的固件調(diào)用等等。
當(dāng)VIO在計(jì)算環(huán)境中得到支持時(shí),在典型的實(shí)施例中,服務(wù)器分區(qū)的設(shè)備樹中的/vdevice節(jié)點(diǎn)或其子節(jié)點(diǎn)包含客戶端分區(qū)的本地存儲(chǔ)器的描述。該描述包括客戶端的本地存儲(chǔ)器的邏輯標(biāo)識(shí)符、本地存儲(chǔ)器的起始地址以及本地存儲(chǔ)器的長(zhǎng)度。根據(jù)該信息,可以生成每一個(gè)邏輯分區(qū)的每一個(gè)本地存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符。然后,由當(dāng)前分區(qū)的操作系統(tǒng)維護(hù)這些擴(kuò)展的跨存儲(chǔ)器描述符,供在執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制和DMA操作時(shí)使用。
當(dāng)執(zhí)行某一操作需要對(duì)遠(yuǎn)程存儲(chǔ)器進(jìn)行訪問時(shí),服務(wù)器分區(qū)的操作系統(tǒng)使用擴(kuò)展的跨存儲(chǔ)器描述符,該描述符描述了作為遠(yuǎn)程存儲(chǔ)器操作的主體的客戶端分區(qū)的“遠(yuǎn)程”存儲(chǔ)器。本發(fā)明的擴(kuò)展的跨存儲(chǔ)器描述符是對(duì)現(xiàn)有的跨存儲(chǔ)器描述符的擴(kuò)展,現(xiàn)有的跨存儲(chǔ)器描述符是通常用于只描述其中使用了跨存儲(chǔ)器描述符的某一個(gè)分區(qū)的本地存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)。
在本發(fā)明中,跨存儲(chǔ)器描述符的字段被擴(kuò)展,以便它們被用來(lái)存儲(chǔ)有關(guān)另一個(gè)分區(qū)的本地存儲(chǔ)器(即,“遠(yuǎn)程”存儲(chǔ)器)的信息。具體來(lái)說(shuō),擴(kuò)展的跨存儲(chǔ)器描述符的字段包括地址空間標(biāo)識(shí)符、遠(yuǎn)程存儲(chǔ)器的大小、標(biāo)識(shí)哪一個(gè)遠(yuǎn)程存儲(chǔ)器的標(biāo)識(shí)符(在有多個(gè)客戶端分區(qū)的情況下)以及在遠(yuǎn)程存儲(chǔ)器內(nèi)的起始地址。當(dāng)使用跨存儲(chǔ)器描述符來(lái)代表“遠(yuǎn)程”存儲(chǔ)器時(shí),地址空間標(biāo)識(shí)符將跨存儲(chǔ)器描述符標(biāo)識(shí)為遠(yuǎn)程存儲(chǔ)器描述。如此,I/O堆?;虼鎯?chǔ)器管理服務(wù)中的檢查跨存儲(chǔ)器描述符的任何接口現(xiàn)在可以查看地址空間標(biāo)識(shí)符,并識(shí)別這是遠(yuǎn)程存儲(chǔ)器描述。結(jié)果,接口可以采取合適的操作,以便設(shè)置DMA操作來(lái)訪問“遠(yuǎn)程”存儲(chǔ)器。
本發(fā)明的這些及其他特征和優(yōu)點(diǎn)將在下面描述,或者考慮下面的對(duì)優(yōu)選實(shí)施例的詳細(xì)描述,這些及其他特征和優(yōu)點(diǎn)對(duì)于本領(lǐng)域普通技術(shù)人員將變得顯而易見。
現(xiàn)在將參考下面的附圖,只作為示例,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行描述圖1是可以在其中實(shí)現(xiàn)本發(fā)明的實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖;
圖2是其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的示范性邏輯分區(qū)平臺(tái)的框圖;圖3是說(shuō)明了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的用于生成擴(kuò)展的跨存儲(chǔ)器描述符的機(jī)制的示例的示范圖;圖4是說(shuō)明了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的使用擴(kuò)展跨存儲(chǔ)器描述符來(lái)執(zhí)行需要進(jìn)行遠(yuǎn)程存儲(chǔ)器訪問的操作的機(jī)制的示例的示范圖;圖5是概述了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的用于生成擴(kuò)展的跨存儲(chǔ)器描述符的示范性過程的流程圖;以及圖6是概述了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的使用擴(kuò)展的跨存儲(chǔ)器描述符的示范性過程的流程圖。
具體實(shí)施例方式
提供了一種機(jī)制,用于擴(kuò)展第一分區(qū)環(huán)境中的跨存儲(chǔ)器描述符,以便它描述另一個(gè)分區(qū)的本地存儲(chǔ)器,以便促進(jìn)需要直接存儲(chǔ)器訪問或遠(yuǎn)程存儲(chǔ)器復(fù)制操作的操作。如此,優(yōu)選情況下,本發(fā)明的實(shí)施例在其中資源是使用邏輯分區(qū)機(jī)制進(jìn)行分區(qū)的計(jì)算設(shè)備中實(shí)現(xiàn)。
現(xiàn)在參考附圖,具體來(lái)說(shuō),參考圖1,該圖描述了其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)100可以是包括連接到系統(tǒng)總線106的多個(gè)處理器101、102、103和104的對(duì)稱多處理器(SMP)系統(tǒng)。例如,數(shù)據(jù)處理系統(tǒng)100可以是IBMeServer,該系統(tǒng)是位于紐約Armonk的IBM公司的產(chǎn)品,被實(shí)現(xiàn)為網(wǎng)絡(luò)內(nèi)的服務(wù)器。或者,也可以使用單個(gè)處理器系統(tǒng)。連接到系統(tǒng)總線106的還有存儲(chǔ)器控制器/高速緩存108,它提供了到多個(gè)本地存儲(chǔ)器160-163的接口。I/O總線橋路110連接到系統(tǒng)總線106,并提供到I/O總線112的接口。如本文所述,存儲(chǔ)器控制器/高速緩存108和I/O總線橋路110也可以集成在一起。
數(shù)據(jù)處理系統(tǒng)100是邏輯分區(qū)(LPAR)數(shù)據(jù)處理系統(tǒng)。如此,數(shù)據(jù)處理系統(tǒng)100可以具有同時(shí)運(yùn)行的多個(gè)異構(gòu)操作系統(tǒng)(或單個(gè)操作系統(tǒng)的多個(gè)實(shí)例)。這些多個(gè)操作系統(tǒng)中的每一個(gè)操作系統(tǒng)都可以具有任意數(shù)量的軟件程序在其內(nèi)執(zhí)行。數(shù)據(jù)處理系統(tǒng)100是在邏輯上分區(qū)的,以便不同的PCI I/O適配器120-121、128-129和136、圖形適配器148和硬盤適配器149可以分配給不同的邏輯分區(qū)。在此情況下,圖形適配器148提供了到顯示設(shè)備(未顯示)的連接,而硬盤適配器149提供了連接,以控制硬盤150。
如此,例如,假設(shè)數(shù)據(jù)處理系統(tǒng)100被分成三個(gè)邏輯分區(qū),P1、P2和P3。每一個(gè)PCI I/O適配器120-121、128-129、136,圖形適配器148、硬盤適配器149、每一個(gè)主機(jī)處理器101-104以及本地存儲(chǔ)器160-163中的存儲(chǔ)器,被分配給三個(gè)分區(qū)中的每一個(gè)分區(qū)。在這些示例中,存儲(chǔ)器160-163可以采用雙列直插式存儲(chǔ)器模塊(DIMM)的形式。DIMM通常不每個(gè)DIMM地分配到分區(qū)。相反,分區(qū)將獲得由平臺(tái)所看到的總存儲(chǔ)器的一部分。例如,處理器101、本地存儲(chǔ)器160-163中的部分存儲(chǔ)器以及I/O適配器120、128和129可以分配給邏輯分區(qū)P1;處理器102-103,本地存儲(chǔ)器160-163中的部分存儲(chǔ)器以及PCI I/O適配器121和136可以分配給分區(qū)P2;處理器104,本地存儲(chǔ)器160-163中的部分存儲(chǔ)器,圖形適配器148和硬盤適配器149可以分配給邏輯分區(qū)P3。
在數(shù)據(jù)處理系統(tǒng)100內(nèi)執(zhí)行的每一個(gè)操作系統(tǒng)都分配給不同的邏輯分區(qū)。如此,在數(shù)據(jù)處理系統(tǒng)100內(nèi)執(zhí)行的每一個(gè)操作系統(tǒng)只能訪問其邏輯分區(qū)內(nèi)的那些I/O單元。如此,例如,高級(jí)交互執(zhí)行(AIX)操作系統(tǒng)的一個(gè)實(shí)例可以在分區(qū)P1內(nèi)執(zhí)行,AIX操作系統(tǒng)的第二個(gè)實(shí)例(映像)可以在分區(qū)P2內(nèi)執(zhí)行,Linux或OS/400操作系統(tǒng)可以在邏輯分區(qū)P3內(nèi)操作。
連接到I/O總線112的外圍組件互連(PCI)主機(jī)橋路114提供了到PCI本地總線115的接口。許多PCI輸入/輸出適配器120-121可以通過PCI到PCI橋路116、PCI總線118、PCI總線119、I/O插槽170和I/O插槽171連接到PCI總線115。PCI到PCI橋路116提供了到PCI總線118和PCI總線119的接口。PCI I/O適配器120和121分別被插入I/O插槽170和171。典型的PCI總線實(shí)現(xiàn)方式將支持四個(gè)到八個(gè)I/O適配器(即,插入式連接器的擴(kuò)展槽)。每一個(gè)PCI I/O適配器120-121提供數(shù)據(jù)處理系統(tǒng)100和輸入/輸出設(shè)備(如,作為數(shù)據(jù)處理系統(tǒng)100的客戶端的其他網(wǎng)絡(luò)計(jì)算機(jī))之間的接口。
其他PCI主機(jī)橋路122提供其他PCI總線123的接口。PCI總線123連接到多個(gè)PCI I/O適配器128-129。PCI I/O適配器128-129可以通過PCI到PCI橋路124、PCI總線126、PCI總線127、I/O插槽172和I/O插槽173連接到PCI總線123。PCI到PCI橋路124提供到PCI總線126和PCI總線127的接口。PCI I/O適配器128和129分別被插入I/O插槽172和173。如此,諸如調(diào)制解調(diào)器或網(wǎng)絡(luò)適配器之類的其他I/O設(shè)備可以通過每一個(gè)PCI I/O適配器128-129中的每一個(gè)得到支持。如此,數(shù)據(jù)處理系統(tǒng)100允許連接到多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)。
插入到I/O插槽174的存儲(chǔ)器映射圖形適配器148可以通過PCI總線144、PCI到PCI橋路142、PCI總線141和PCI主機(jī)橋路140連接到I/O總線112。硬盤適配器149可以插入I/O插槽175中,該插槽175連接到PCI總線145。而此總線又連接到PCI到PCI橋路142,該橋路142通過PCI總線141連接到PCI主機(jī)橋路140。
PCI主機(jī)橋路130為PCI總線131提供了接口,以連接到I/O總線112。PCI I/O適配器136連接到I/O插槽176,該I/O插槽176通過PCI總線133連接到PCI到PCI橋路132。PCI到PCI橋路132連接到PCI總線131。此PCI總線還將PCI主機(jī)橋路130連接到服務(wù)處理器郵箱接口和ISA總線訪問通路邏輯194和PCI到PCI橋路132。服務(wù)處理器郵箱接口和ISA總線訪問通路邏輯194將轉(zhuǎn)發(fā)發(fā)往到PCI/ISA橋193的PCI訪問。NVRAM存儲(chǔ)器192連接到ISA總線196。服務(wù)處理器135通過其本地PCI總線195連接到服務(wù)處理器郵箱接口和ISA總線訪問通路邏輯194。服務(wù)處理器135還通過多個(gè)JTAG/I2C總線134連接到處理器101-104。JTAG/I2C總線134是JTAG/掃描總線(請(qǐng)參見IEEE 1149.1)和Phillips I2C總線的組合。然而,或者,JTAG/I2C總線134只可以被Phillips I2C總線或只可以被JTAG/掃描總線替代。主機(jī)處理器101、102、103和104的所有SP-ATTN信號(hào)一起連接到服務(wù)處理器的中斷輸入信號(hào)。服務(wù)處理器135具有其自己的本地存儲(chǔ)器191,并可以訪問硬件OP面板190。
當(dāng)數(shù)據(jù)處理系統(tǒng)100最初被通電時(shí),服務(wù)處理器135使用JTAG/I2C總線134詢問系統(tǒng)(主機(jī))處理器101-104、存儲(chǔ)器控制器/高速緩存108以及I/O橋路110。在完成此步驟時(shí),服務(wù)處理器135具有數(shù)據(jù)處理系統(tǒng)100的庫(kù)存和拓?fù)淅斫?。服?wù)處理器135還在通過查詢主機(jī)處理器101-104、存儲(chǔ)器控制器/高速緩存108和I/O橋路110查找到的所有元素上執(zhí)行內(nèi)部自測(cè)(Built-In-Self-Test(BIST))、基本保證測(cè)試(BAT)和存儲(chǔ)器測(cè)試。在BIST、BAT和存儲(chǔ)器測(cè)試期間檢測(cè)到的故障的任何錯(cuò)誤信息都由服務(wù)處理器135收集和報(bào)告。
如果有意義的/有效的系統(tǒng)資源配置在提取了在BIST、BAT和存儲(chǔ)器測(cè)試期間發(fā)現(xiàn)有故障的元件之后仍是可能的,那么,數(shù)據(jù)處理系統(tǒng)100被允許繼續(xù)將可執(zhí)行代碼加載到本地(主機(jī))存儲(chǔ)器160-163中。然后,服務(wù)處理器135釋放主機(jī)處理器101-104,以便執(zhí)行加載到本地存儲(chǔ)器160-163中的代碼。當(dāng)主機(jī)處理器101-104執(zhí)行來(lái)自數(shù)據(jù)處理系統(tǒng)100內(nèi)的相應(yīng)的操作系統(tǒng)的代碼時(shí),服務(wù)處理器135進(jìn)入監(jiān)視和報(bào)告錯(cuò)誤的模式。被服務(wù)處理器135監(jiān)視的項(xiàng)目的類型包括,例如,冷風(fēng)扇的速度和操作、熱傳感器、電源調(diào)節(jié)器、處理器101-104報(bào)告的可恢復(fù)的和不可恢復(fù)的錯(cuò)誤、本地存儲(chǔ)器160-163以及I/O橋路110。
服務(wù)處理器135負(fù)責(zé)保存和報(bào)告與數(shù)據(jù)處理系統(tǒng)100中的所有被監(jiān)視的項(xiàng)目相關(guān)的錯(cuò)誤信息。服務(wù)處理器135還基于錯(cuò)誤類型和定義的閾值執(zhí)行操作。例如,服務(wù)處理器135可能會(huì)注意到處理器的高速緩存存儲(chǔ)器上有過多的可恢復(fù)的錯(cuò)誤,并判斷這是硬件故障的前兆?;诖伺袛啵?wù)處理器135可以標(biāo)記該資源,以便在當(dāng)前運(yùn)行會(huì)話和未來(lái)的初始程序加載(IPL)期間取消配置。IPL有時(shí)也被稱為“啟動(dòng)”或“自舉”。
數(shù)據(jù)處理系統(tǒng)100可以使用各種市場(chǎng)上買得到的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)。例如,數(shù)據(jù)處理系統(tǒng)100可以使用IBM公司所提供的IBMeServer iSeries Model 840系統(tǒng)來(lái)實(shí)現(xiàn)。這樣的系統(tǒng)可以支持使用OS/400操作系統(tǒng)(這也是IBM公司所提供的)的邏輯分區(qū)。
那些本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,圖1所描述的硬件可以改變。例如,除了所描述的硬件,也可以使用諸如光盤驅(qū)動(dòng)器之類的其他外圍設(shè)備,或者代替所描述的硬件。所描述的示例并不意味著對(duì)本發(fā)明的體系結(jié)構(gòu)作出限制。
現(xiàn)在參考圖2,框圖描述了在其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的示范性邏輯分區(qū)平臺(tái)的框圖。邏輯分區(qū)平臺(tái)200中的硬件可以作為例如圖1中的數(shù)據(jù)處理系統(tǒng)100來(lái)實(shí)現(xiàn)。邏輯分區(qū)平臺(tái)200包括分區(qū)硬件230、操作系統(tǒng)202、204、206、208和分區(qū)管理固件210。操作系統(tǒng)202、204、206和208可以是同時(shí)在邏輯分區(qū)平臺(tái)200上運(yùn)行的單個(gè)操作系統(tǒng)的多個(gè)副本或多個(gè)異構(gòu)操作系統(tǒng)。這些操作系統(tǒng)可以使用OS/400來(lái)實(shí)現(xiàn),這些操作系統(tǒng)是為與諸如系統(tǒng)管理程序之類的分區(qū)管理固件連接而設(shè)計(jì)的。OS/400在這些說(shuō)明性實(shí)施例中只起到示例的作用。當(dāng)然,諸如AIX和linux之類的其他操作系統(tǒng)類型,也可以使用,具體情況視特定的實(shí)現(xiàn)方式而定。操作系統(tǒng)202、204、206和208位于分區(qū)203、205、207和209中。系統(tǒng)管理程序軟件是可以用來(lái)實(shí)現(xiàn)分區(qū)管理固件210的軟件的示例,是IBM公司所提供的。固件是存儲(chǔ)在沒有通電的情況下仍能保存其內(nèi)容的存儲(chǔ)器芯片(如只讀存儲(chǔ)器、可編程序只讀存儲(chǔ)器(PROM)、可擦可編程序只讀存儲(chǔ)器(EPROM)、電可擦可編程序只讀存儲(chǔ)器(EEPROM)以及非易失性隨機(jī)存取存儲(chǔ)器(非易失性RAM))中的“軟件”。
另外,這些分區(qū)也包括分區(qū)固件211、213、215和217。分區(qū)固件211、213、215和217可以使用初始自舉程序代碼、IEEE-1275標(biāo)準(zhǔn)公開固件以及運(yùn)行時(shí)抽象軟件(RTAS)(這是IBM公司所提供的)來(lái)實(shí)現(xiàn)。當(dāng)分區(qū)203、205、207和209被實(shí)例化時(shí),自舉程序代碼的一個(gè)副本被平臺(tái)固件210加載到分區(qū)203、205、207和209上。此后,控制被傳輸?shù)阶耘e程序代碼,然后,自舉程序代碼加載公開固件和RTAS。然后,將與分區(qū)關(guān)聯(lián)的處理器或分配給分區(qū)的處理器派遣到分區(qū)的存儲(chǔ)器,以執(zhí)行分區(qū)固件。
分區(qū)硬件230包括多個(gè)處理器232-238、多個(gè)系統(tǒng)存儲(chǔ)器單元240-246、多個(gè)輸入/輸出(I/O)適配器248-262和存儲(chǔ)單元270。可以將處理器232-238、存儲(chǔ)器單元240-246、NVRAM 298和I/O適配器248-262中的每一個(gè)分配給邏輯分區(qū)平臺(tái)200內(nèi)的多個(gè)分區(qū)中的某一個(gè),其中每一個(gè)都對(duì)應(yīng)于操作系統(tǒng)202、204、206和208中的某一個(gè)。
分區(qū)管理固件210為分區(qū)203、205、207和209執(zhí)行許多功能和服務(wù),以創(chuàng)建和實(shí)施邏輯分區(qū)平臺(tái)200的分區(qū)。分區(qū)管理固件210是與基礎(chǔ)硬件相同的固件實(shí)現(xiàn)的虛擬機(jī)。如此,分區(qū)管理固件210通過虛擬化邏輯分區(qū)平臺(tái)200的所有硬件資源,允許同時(shí)執(zhí)行獨(dú)立的OS映像202、204、206和208。
可以使用服務(wù)處理器290來(lái)提供各種服務(wù),如處理分區(qū)中的平臺(tái)錯(cuò)誤。這些服務(wù)還可以充當(dāng)服務(wù)代理,來(lái)將錯(cuò)誤報(bào)告回諸如IBM公司之類的供應(yīng)商。不同的分區(qū)的操作可以通過諸如硬件管理控制臺(tái)280之類的硬件管理控制臺(tái)來(lái)進(jìn)行控制。硬件管理控制臺(tái)280是單獨(dú)的數(shù)據(jù)處理系統(tǒng),系統(tǒng)管理員可以從該系統(tǒng)執(zhí)行各種功能,包括將資源重新分配到不同的分區(qū)。
在這樣的在邏輯上分區(qū)的環(huán)境中,每當(dāng)將要在內(nèi)核和當(dāng)前進(jìn)程地址空間之外的地址空間之間移動(dòng)數(shù)據(jù)時(shí),都使用跨存儲(chǔ)器內(nèi)核服務(wù)來(lái)執(zhí)行此數(shù)據(jù)的移動(dòng)。通過調(diào)用xmattach內(nèi)核服務(wù)(該服務(wù)附加到跨存儲(chǔ)器操作的用戶緩沖器中),附加地址空間的一個(gè)區(qū)域內(nèi)的數(shù)據(jù)區(qū)域。當(dāng)調(diào)用xmattach內(nèi)核服務(wù)時(shí),xmattach內(nèi)核服務(wù)生成跨存儲(chǔ)器描述符。此后,可以使用其他跨存儲(chǔ)器內(nèi)核服務(wù)來(lái)將數(shù)據(jù)從內(nèi)核移動(dòng)或復(fù)制到當(dāng)前進(jìn)程地址之外的地址空間。例如,xmemin內(nèi)核服務(wù)通過將數(shù)據(jù)從指定的地址空間復(fù)制到內(nèi)核全局存儲(chǔ)器中來(lái)執(zhí)行跨存儲(chǔ)器移動(dòng)。xmemout內(nèi)核服務(wù)通過將數(shù)據(jù)從內(nèi)核全局存儲(chǔ)器復(fù)制到指定的地址空間中來(lái)執(zhí)行跨存儲(chǔ)器移動(dòng)。xmemdma內(nèi)核服務(wù)為DMA I/O準(zhǔn)備存儲(chǔ)器的一個(gè)頁(yè)面或在DMA I/O完成之后處理一個(gè)頁(yè)面。
在已知計(jì)算系統(tǒng)中,跨存儲(chǔ)器描述符是用于描述本地存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)。從操作系統(tǒng)的虛擬存儲(chǔ)器管理(VMM)組件維護(hù)的信息來(lái)生成本地存儲(chǔ)器跨存儲(chǔ)器描述符。
由內(nèi)核服務(wù)基于操作系統(tǒng)在引導(dǎo)時(shí)生成和分析的設(shè)備樹來(lái)生成根據(jù)本發(fā)明的優(yōu)選實(shí)施例的擴(kuò)展的跨存儲(chǔ)器描述符。設(shè)備樹類似于公開固件設(shè)備樹,它是描述系統(tǒng)硬件和用戶配置選擇的分級(jí)數(shù)據(jù)結(jié)構(gòu)。公開固件設(shè)備樹還包含硬件驅(qū)動(dòng)程序和供這些驅(qū)動(dòng)程序使用的支持例程。下面是公開固件設(shè)備樹的示例root/ff8885f8/rtasff866bf4/rom@ff000000ff8627c0/flash@fff00000ff8513d0/cpusff88alc8/PowerPC,604ev@()ff88a788/12-cacheff84d8e0/pciff89552c/ethernet@4ff8952e0/displayff88cf44/mac-io@2ff893e68/misc@0ff894688/iicff893d7c/via@16000ff8939fc/escc@13000ff893c2c/ch-b@13000
ff893af4/ch-a@13020ff88fd08/scsi@10000ff892elc/taDeff8924d0/diskff88f944/escc-legacy@12000ff88fba8/ch-b@12000ff88fa60/ch-a@12002ff88d78c/adb@11000ff88f364/mouse@3ff88e6dc/keyboard@2ff88d638/open-pic@40000ff88aad8/ide@1,1ff88c504/diskff85a534/isa@1ff864208/sound@i534ff8640e8/midi@i330ff863ff8/game@i200ff863368/gpio@i800ff863008/nvram@me0000ff862aa4/rtc@i70ff85f644/8042@i60ff86l8b0/mouse@auxff860260/keyboard@ff85d804/floppy@i3f0ff85d3b4/parallel@i3bcff85c704/serial@i2f8ff85b9f4/serial@i3f8ff85b490/timer@i40ff85b01c/interrupt-controller@i20
ff85ae08/dma-controller@i00ff84a650/mmuff83f2e4/memory@0對(duì)于本發(fā)明的實(shí)施例,使用類似的設(shè)備樹表示來(lái)獲取用于生成擴(kuò)展的跨存儲(chǔ)器描述符的信息。設(shè)備樹是面向?qū)ο蟮?,以便設(shè)備樹中的每一個(gè)條目都具有可以被檢查的關(guān)聯(lián)的屬性。下面說(shuō)明了設(shè)備樹中的有關(guān)遠(yuǎn)程存儲(chǔ)器的信息可以呈現(xiàn)給操作系統(tǒng)的節(jié)點(diǎn)的示例/devicenode…remote-memory-info10000000002000000004000020000000 003D0000 00020000……其中,“remote-memory-info”是節(jié)點(diǎn)“/devicenode”的屬性。在客戶端-服務(wù)器虛擬I/O模式的典型的實(shí)現(xiàn)方式中,節(jié)點(diǎn)“/devicenode”將代表服務(wù)器設(shè)備的節(jié)點(diǎn)。如下面所討論的,可以對(duì)此節(jié)點(diǎn)進(jìn)行分析,通過分析此節(jié)點(diǎn)所獲得的信息可以用來(lái)生成根據(jù)本發(fā)明的優(yōu)選實(shí)施例的擴(kuò)展的跨存儲(chǔ)器描述符。如此,對(duì)于第一客戶端,“10000000”條目是存儲(chǔ)器的邏輯標(biāo)識(shí)符,“00200000”條目是存儲(chǔ)器的起始地址,而“00040000”條目是存儲(chǔ)器的以字節(jié)為單位的大小。同樣,對(duì)于第二客戶端,“20000000”是存儲(chǔ)器的邏輯標(biāo)識(shí)符,“03D00000”是存儲(chǔ)器內(nèi)的起始地址,而“00020000”是存儲(chǔ)器的以字節(jié)為單位的大小。對(duì)于服務(wù)器所服務(wù)的每一個(gè)客戶端,可以重復(fù)此三元組(邏輯id、起始地址、大小)。
根據(jù)該設(shè)備樹信息,可以獲取系統(tǒng)硬件和用戶配置選擇的詳細(xì)描述。具體來(lái)說(shuō),如上所述,設(shè)備樹的存儲(chǔ)器節(jié)點(diǎn)包括指定了存儲(chǔ)器的邏輯標(biāo)識(shí)符、存儲(chǔ)器的起始地址和存儲(chǔ)器的長(zhǎng)度的屬性。此信息可以被內(nèi)核服務(wù)用來(lái)生成計(jì)算系統(tǒng)的本地存儲(chǔ)器資源的跨存儲(chǔ)器描述符。
跨存儲(chǔ)器描述符被用作從兩個(gè)不相關(guān)的上下文中訪問存儲(chǔ)器以便不需要知道所涉及的存儲(chǔ)器的所有者的方式。例如,當(dāng)中斷處理程序需要向一個(gè)進(jìn)程傳遞數(shù)據(jù)時(shí),它使用跨存儲(chǔ)器描述符來(lái)獲取有關(guān)進(jìn)程的存儲(chǔ)器空間信息,以將數(shù)據(jù)復(fù)制到進(jìn)程的存儲(chǔ)器空間。這是必需的,因?yàn)樵趽碛衅鋽?shù)據(jù)的進(jìn)程的上下文中中斷處理程序不一定運(yùn)行,因此不知道該數(shù)據(jù)屬于哪一個(gè)進(jìn)程。中斷處理程序所知道的一切是應(yīng)該在哪里復(fù)制數(shù)據(jù)的存儲(chǔ)器的描述,即,跨存儲(chǔ)器描述符。
磁盤I/O是使用本地存儲(chǔ)器跨存儲(chǔ)器描述符的另一個(gè)示例。例如,用戶級(jí)別的應(yīng)用程序可以調(diào)用IOCTL來(lái)讀取有關(guān)磁盤的信息。信息將存儲(chǔ)在應(yīng)用程序提供的緩沖器中,而該緩沖器位于用戶空間。當(dāng)調(diào)用磁盤驅(qū)動(dòng)程序時(shí),磁盤驅(qū)動(dòng)程序調(diào)用xmattach以附加應(yīng)用程序的緩沖器。所有這一切都是由磁盤驅(qū)動(dòng)程序的前半部執(zhí)行的。
將來(lái)某個(gè)時(shí)間,當(dāng)I/O請(qǐng)求完成,數(shù)據(jù)變得可用,磁盤驅(qū)動(dòng)程序的位于磁盤驅(qū)動(dòng)程序的后半部的“iodone”例程,調(diào)用xmout以使用跨存儲(chǔ)器描述符將數(shù)據(jù)復(fù)制到用戶空間。磁盤驅(qū)動(dòng)程序存儲(chǔ)跨存儲(chǔ)器描述符,以便它能夠被前半部和后半部訪問。
在操作系統(tǒng)初始化時(shí),由內(nèi)核服務(wù)生成跨存儲(chǔ)器描述符,并在需要時(shí),將它在計(jì)算設(shè)備的I/O堆棧中從一個(gè)接口傳遞到另一個(gè)接口(或存儲(chǔ)器管理服務(wù))。I/O堆棧的接口和存儲(chǔ)器管理服務(wù)檢查跨存儲(chǔ)器描述符以獲取執(zhí)行跨存儲(chǔ)器操作所需要的信息。
操作系統(tǒng)在另一個(gè)分區(qū)的遠(yuǎn)程存儲(chǔ)器方面面臨著類似的問題,因?yàn)檫h(yuǎn)程存儲(chǔ)器復(fù)制/DMA操作對(duì)另一個(gè)分區(qū)中的所有者設(shè)備沒有任何了解。如此,這里所描述的方法利用了跨存儲(chǔ)器描述符的擴(kuò)展版本來(lái)在執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制/DMA操作時(shí)提供有關(guān)另一個(gè)分區(qū)的遠(yuǎn)程存儲(chǔ)器的信息。
本地跨存儲(chǔ)器描述符包括四個(gè)主要字段地址空間標(biāo)識(shí)符、段的數(shù)量、開始段標(biāo)識(shí)符以及段內(nèi)的起始地址。地址空間標(biāo)識(shí)符提供了將向其中復(fù)制數(shù)據(jù)的存儲(chǔ)器的唯一標(biāo)識(shí)符。段的數(shù)量提供了由地址空間標(biāo)識(shí)符標(biāo)識(shí)的地址空間的段的總數(shù)。開始段標(biāo)識(shí)符標(biāo)識(shí)了所有段內(nèi)的被復(fù)制數(shù)據(jù)將開始在其中寫入的段。段內(nèi)的起始地址標(biāo)識(shí)了由開始段標(biāo)識(shí)符標(biāo)識(shí)的被復(fù)制數(shù)據(jù)將開始在其中寫入的段內(nèi)的地址。
下面是其中說(shuō)明了這些主要字段的跨存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)的示例<pre listing-type="program-listing"> enum asid={LOCAL=0,REMOTE=1}; struct cross_memory{ enum asid address_space_Id;/*LOCAL,REMOTE, _etc.*/ int number_of_segments;/*number of segments if address_space_id=LOCAL*/ long segmen_Id;/*segment number ifaddress_space_id=LOCAL*/ char*vaddr;/*starting address within the segment if address_space_id=LOCAL*/ uint flags;/*any special attributes of the segment or address range*/ }; #define remote_size(number_of_segments)/*size of remote memory if address_space_id=REMOTE*/ #define remote_logical_id(segment_id)/*remote memory′s logical identifier*/ #define remote_start_addr(vaddr)/*starting address within the remote memory*/</pre>
如此,從上述字段可以看出,跨存儲(chǔ)器描述符提供了具有這樣的特征的存儲(chǔ)器的描述,即,為了訪問特定地址空間,該存儲(chǔ)器描述可以用來(lái)執(zhí)行跨存儲(chǔ)器操作而無(wú)需知道所述特定地址空間的所有者并進(jìn)而將數(shù)據(jù)傳遞到該所有者。本發(fā)明的實(shí)施例使用此已知數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)不同的操作,其中不需要有關(guān)資源的所有權(quán)的信息即可完成此操作。即,跨存儲(chǔ)器描述符的擴(kuò)展版本用于實(shí)現(xiàn)從一個(gè)分區(qū)到另一個(gè)分區(qū)的遠(yuǎn)程存儲(chǔ)器復(fù)制/DMA操作(其中,“遠(yuǎn)程”存儲(chǔ)器是與當(dāng)前執(zhí)行的進(jìn)程所在的分區(qū)不同的另一個(gè)分區(qū)中的存儲(chǔ)器)。利用這樣的操作,作為虛擬輸入/輸出(VIO)進(jìn)程的一部分,一個(gè)分區(qū)中的進(jìn)程可以訪問另一個(gè)分區(qū)的存儲(chǔ)器,而無(wú)需將數(shù)據(jù)傳遞到擁有該遠(yuǎn)程存儲(chǔ)器的特定進(jìn)程。結(jié)果,通過使用擴(kuò)展的跨存儲(chǔ)器描述符,可以實(shí)現(xiàn)跨多個(gè)分區(qū)的遠(yuǎn)程存儲(chǔ)器復(fù)制和DMA操作。
跨存儲(chǔ)器描述符字段用于存儲(chǔ)有關(guān)遠(yuǎn)程存儲(chǔ)器的信息??绱鎯?chǔ)器描述符的四個(gè)原始字段被覆蓋,以描述遠(yuǎn)程存儲(chǔ)器,從而生成具有下列四個(gè)字段的擴(kuò)展的跨存儲(chǔ)器描述符地址空間標(biāo)識(shí)符、遠(yuǎn)程存儲(chǔ)器的大小、標(biāo)識(shí)遠(yuǎn)程存儲(chǔ)器的標(biāo)識(shí)符以及遠(yuǎn)程存儲(chǔ)器內(nèi)的起始地址。擴(kuò)展的跨存儲(chǔ)器描述符的地址空間標(biāo)識(shí)符類似于原始跨存儲(chǔ)器描述符的地址空間標(biāo)識(shí)符,例外是,此字段中可以存儲(chǔ)預(yù)先確定的值,以指出擴(kuò)展的跨存儲(chǔ)器描述符對(duì)應(yīng)于客戶端分區(qū)的遠(yuǎn)程存儲(chǔ)器。
遠(yuǎn)程存儲(chǔ)器的大小可以以字節(jié)為單位或存儲(chǔ)器大小的任何其他單位來(lái)表示,并指定可以用來(lái)執(zhí)行訪問的遠(yuǎn)程存儲(chǔ)器的總大小。遠(yuǎn)程存儲(chǔ)器標(biāo)識(shí)符標(biāo)識(shí)特定客戶端分區(qū)中的特定遠(yuǎn)程存儲(chǔ)器。在有多個(gè)客戶端分區(qū)并且必須指定正在訪問哪一個(gè)遠(yuǎn)程存儲(chǔ)器的情況下,這是重要的。遠(yuǎn)程存儲(chǔ)器內(nèi)的起始地址提供了遠(yuǎn)程存儲(chǔ)器內(nèi)的由遠(yuǎn)程存儲(chǔ)器標(biāo)識(shí)符指定的將要在哪里開始訪問的位置。根據(jù)這四個(gè)字段,可以獲取遠(yuǎn)程存儲(chǔ)器的全貌,以便執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制/DMA操作。
擴(kuò)展的跨存儲(chǔ)器描述符可以以與原始跨存儲(chǔ)器描述符同樣的方式通過I/O堆棧從一個(gè)接口傳遞到另一個(gè)接口??梢约訌?qiáng)需要檢查擴(kuò)展的跨存儲(chǔ)器描述符的那些接口和存儲(chǔ)器管理服務(wù),以包括用于處理擴(kuò)展的跨存儲(chǔ)器描述符的代碼。即,加強(qiáng)那些接口和存儲(chǔ)器管理服務(wù),以包括識(shí)別何時(shí)地址空間標(biāo)識(shí)符包括預(yù)先確定的值的代碼,所述預(yù)先確定的值在描述遠(yuǎn)程存儲(chǔ)器訪問請(qǐng)求的遠(yuǎn)程存儲(chǔ)器時(shí)標(biāo)識(shí)擴(kuò)展的跨存儲(chǔ)器描述符。然后,接口和存儲(chǔ)器管理服務(wù)可以基于由擴(kuò)展的跨存儲(chǔ)器描述符提供的遠(yuǎn)程存儲(chǔ)器的大小、遠(yuǎn)程存儲(chǔ)器的身份以及遠(yuǎn)程存儲(chǔ)器中的起始地址執(zhí)行適當(dāng)?shù)牟僮?。例如,d_map_page和d_map_list接口使用遠(yuǎn)程跨存儲(chǔ)器描述符來(lái)正確地建立從由服務(wù)器分區(qū)所擁有的物理設(shè)備到遠(yuǎn)程存儲(chǔ)器的DMA。如此,遠(yuǎn)程跨存儲(chǔ)器描述符由物理設(shè)備的驅(qū)動(dòng)程序傳遞到d_map_page/list接口以建立DMA。按照服務(wù)器分區(qū)的定義,物理設(shè)備屬于服務(wù)器分區(qū)。結(jié)果,可以跨多個(gè)分區(qū)地執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制/DMA操作。
通過覆蓋現(xiàn)有的跨存儲(chǔ)器描述符以成為與原始跨存儲(chǔ)器描述符基本上具有相同格式的擴(kuò)展的跨存儲(chǔ)器描述符,只是在跨存儲(chǔ)器描述符的字段中存儲(chǔ)不同數(shù)據(jù),以及與此不同數(shù)據(jù)關(guān)聯(lián)的不同內(nèi)涵,本發(fā)明的實(shí)施例允許許多需要跨存儲(chǔ)器描述符但不檢查跨存儲(chǔ)器描述符的內(nèi)容的接口和存儲(chǔ)器管理服務(wù)在不進(jìn)行修改的情況下操作。即,擴(kuò)展的跨存儲(chǔ)器描述符允許操作系統(tǒng)維持與需要跨存儲(chǔ)器描述符但不實(shí)際對(duì)它進(jìn)行檢查的接口和存儲(chǔ)器管理服務(wù)的二進(jìn)制兼容性。例如,大多數(shù)設(shè)備驅(qū)動(dòng)程序需要跨存儲(chǔ)器描述符,但不對(duì)它進(jìn)行檢查。它們只需將跨存儲(chǔ)器描述符傳遞到內(nèi)核或PCI總線驅(qū)動(dòng)程序。由于對(duì)跨存儲(chǔ)器描述符的更改,不需要對(duì)這樣的設(shè)備驅(qū)動(dòng)程序進(jìn)行重新編譯,它們可以如往常那樣繼續(xù)進(jìn)行操作。
圖3是說(shuō)明了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的用于生成擴(kuò)展的跨存儲(chǔ)器描述符的機(jī)制的示例的示范圖。如圖3所示,當(dāng)初始化在邏輯上分區(qū)的計(jì)算系統(tǒng)中的邏輯分區(qū)310的操作系統(tǒng)320時(shí),如在邏輯分區(qū)310的引導(dǎo)過程中,調(diào)用操作系統(tǒng)內(nèi)核服務(wù)325,以便執(zhí)行諸如加載設(shè)備驅(qū)動(dòng)程序之類的引導(dǎo)操作。作為這些操作系統(tǒng)內(nèi)核服務(wù)325的一部分,調(diào)用內(nèi)核服務(wù),該內(nèi)核服務(wù)將其他邏輯分區(qū)312-316的遠(yuǎn)程存儲(chǔ)器附加到當(dāng)前操作系統(tǒng),以便可以利用其他邏輯分區(qū)的遠(yuǎn)程存儲(chǔ)器執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制和DMA操作。在本發(fā)明的一個(gè)示范性實(shí)施例中,附加遠(yuǎn)程存儲(chǔ)器的內(nèi)核服務(wù)被稱為xmattach_remio,是已知xmattach跨存儲(chǔ)器內(nèi)核服務(wù)的擴(kuò)展版本。xmattach_remio附加跨存儲(chǔ)器操作的遠(yuǎn)程存儲(chǔ)器,這些操作可以由已知xmemout和xmemin跨存儲(chǔ)器內(nèi)核服務(wù)和d_map_page和d_map_list內(nèi)核服務(wù)的擴(kuò)展版本執(zhí)行。
擴(kuò)展的附加內(nèi)核服務(wù)檢查計(jì)算系統(tǒng)的可以在系統(tǒng)管理程序330等等中維護(hù)的設(shè)備樹332-338。系統(tǒng)管理程序330是在邏輯上分區(qū)的計(jì)算系統(tǒng)中提供和管理多個(gè)虛擬機(jī)的程序。在系統(tǒng)管理程序330中維護(hù)了每一個(gè)邏輯分區(qū)的單個(gè)設(shè)備樹332-338。此外,邏輯分區(qū)的設(shè)備樹332-338的副本可以存儲(chǔ)在該邏輯分區(qū)的本地存儲(chǔ)器中,以便它可被邏輯分區(qū)中的操作系統(tǒng)內(nèi)核訪問。操作系統(tǒng)提供了內(nèi)核擴(kuò)展(例如,設(shè)備驅(qū)動(dòng)程序)和用戶級(jí)別代碼可以使用的功能庫(kù),以便對(duì)設(shè)備樹332-338進(jìn)行分析。
設(shè)備樹332-338包括計(jì)算系統(tǒng)的每一個(gè)分區(qū)的節(jié)點(diǎn)和它們的資源。這些資源包括每一個(gè)分區(qū)的本地存儲(chǔ)器340-360。設(shè)備樹332-338的代表分區(qū)的這些本地存儲(chǔ)器的節(jié)點(diǎn)包括本地存儲(chǔ)器的屬性,這些屬性包括本地存儲(chǔ)器的邏輯標(biāo)識(shí)符、本地存儲(chǔ)器的起始地址和本地存儲(chǔ)器的長(zhǎng)度。根據(jù)該信息,可以獲取每一個(gè)邏輯分區(qū)的本地存儲(chǔ)器(相對(duì)于當(dāng)前邏輯分區(qū),是“遠(yuǎn)程”存儲(chǔ)器)的大小、每一個(gè)邏輯分區(qū)的本地存儲(chǔ)器的身份以及每一個(gè)邏輯分區(qū)的本地存儲(chǔ)器內(nèi)的起始地址。可以將此信息封裝到每一個(gè)邏輯分區(qū)的每一個(gè)本地存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符370-390中。然后,由當(dāng)前邏輯分區(qū)310的操作系統(tǒng)320維護(hù)這些擴(kuò)展的跨存儲(chǔ)器描述符370-390,供在對(duì)其他邏輯分區(qū)312-316執(zhí)行遠(yuǎn)程存儲(chǔ)器復(fù)制和DMA操作時(shí)使用。
圖4是說(shuō)明了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的使用擴(kuò)展跨存儲(chǔ)器描述符來(lái)執(zhí)行需要進(jìn)行遠(yuǎn)程存儲(chǔ)器訪問的操作的機(jī)制的示例的示范圖。如圖4所示,當(dāng)諸如客戶端設(shè)備400的應(yīng)用程序410之類的進(jìn)程例如通過read()系統(tǒng)調(diào)用向操作系統(tǒng)內(nèi)核空間420生成要求執(zhí)行遠(yuǎn)程存儲(chǔ)器訪問操作的輸入/輸出(I/O)請(qǐng)求時(shí),通過I/O堆棧422處理I/O請(qǐng)求,直到客戶端虛擬設(shè)備驅(qū)動(dòng)程序424。客戶端虛擬設(shè)備驅(qū)動(dòng)程序424將該請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器480的對(duì)應(yīng)物,即,服務(wù)器虛擬驅(qū)動(dòng)程序430。
服務(wù)器虛擬驅(qū)動(dòng)程序430已經(jīng)在引導(dǎo)時(shí)為存儲(chǔ)器415的遠(yuǎn)程分區(qū)(例如,邏輯分區(qū)2)創(chuàng)建了擴(kuò)展的跨存儲(chǔ)器描述符440。例如,服務(wù)器虛擬驅(qū)動(dòng)程序430可以在引導(dǎo)時(shí)調(diào)用xmattach_remio內(nèi)核服務(wù),以生成擴(kuò)展的跨存儲(chǔ)器描述符。服務(wù)器虛擬驅(qū)動(dòng)程序430在服務(wù)器端將I/O請(qǐng)求與擴(kuò)展的跨存儲(chǔ)器描述符440一起沿著I/O堆棧450傳遞。
I/O請(qǐng)求最后沿著I/O堆棧450傳遞到物理設(shè)備驅(qū)動(dòng)程序460,例如,SCSI適配器驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序利用其I/O適配器470安排DMA操作。當(dāng)由I/O適配器470完成DMA時(shí),將數(shù)據(jù)寫入到遠(yuǎn)程存儲(chǔ)器415中。如此,如上述示例中所說(shuō)明的,除了數(shù)據(jù)本身之外,進(jìn)行遠(yuǎn)程直接存儲(chǔ)器訪問所需的唯一的其他必需的元素是通過擴(kuò)展的跨存儲(chǔ)器描述符所提供的遠(yuǎn)程存儲(chǔ)器的描述。
圖5和6是說(shuō)明了根據(jù)本發(fā)明的示范性實(shí)施例的生成和使用擴(kuò)展的跨存儲(chǔ)器描述符的示范性過程的流程圖??梢岳斫猓鞒虉D中的每一個(gè)方框,以及流程圖中的方框的組合可以通過計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給處理器或其他可編程數(shù)據(jù)處理設(shè)備,以產(chǎn)生一個(gè)機(jī)器,以便在處理器或其他可編程數(shù)據(jù)處理設(shè)備上執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)流程圖方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可以存儲(chǔ)在計(jì)算機(jī)可讀的存儲(chǔ)器或存儲(chǔ)介質(zhì)中,該存儲(chǔ)器或存儲(chǔ)介質(zhì)可以指示處理器或其他可編程數(shù)據(jù)處理設(shè)備以特定方式運(yùn)行,以便存儲(chǔ)在計(jì)算機(jī)可讀的存儲(chǔ)器或存儲(chǔ)介質(zhì)中的指令產(chǎn)生一種包括可以實(shí)現(xiàn)流程圖方框中指定的功能的指令裝置的產(chǎn)品。
相應(yīng)地,流程圖的方框支持用于執(zhí)行指定的功能的裝置的組合、用于執(zhí)行指定的功能的步驟以及用于執(zhí)行指定的功能的程序指令裝置的組合。還應(yīng)該理解,流程圖的每一個(gè)方框,以及流程圖中的方框的組合,可以通過執(zhí)行指定的功能或步驟的基于專用硬件的計(jì)算機(jī)系統(tǒng)或?qū)S糜布陀?jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
圖5是概述了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的用于生成擴(kuò)展的跨存儲(chǔ)器描述符的示范性過程的流程圖。如圖5所示,操作開始時(shí)是初始化操作系統(tǒng)(步驟510)。然后,操作系統(tǒng)內(nèi)核服務(wù)對(duì)計(jì)算機(jī)系統(tǒng)的設(shè)備樹進(jìn)行分析,尋找代表其他邏輯分區(qū)的遠(yuǎn)程存儲(chǔ)器的節(jié)點(diǎn)(步驟520)。然后,檢索這些遠(yuǎn)程存儲(chǔ)器節(jié)點(diǎn)的屬性(步驟530),并用這些屬性判斷其他分區(qū)的每一個(gè)遠(yuǎn)程存儲(chǔ)器的標(biāo)識(shí)符、大小和起始地址(步驟540)。然后,利用遠(yuǎn)程標(biāo)識(shí)符將標(biāo)識(shí)符、大小和起始地址封裝到每一個(gè)其他邏輯分區(qū)的每一個(gè)遠(yuǎn)程存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符中(步驟550)。然后,存儲(chǔ)這些擴(kuò)展的跨存儲(chǔ)器描述符,供以后在執(zhí)行遠(yuǎn)程存儲(chǔ)器訪問時(shí)使用(步驟560)。
圖6是概述了根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的使用擴(kuò)展的跨存儲(chǔ)器描述符的示范性過程的流程圖。如圖6所示,操作開始時(shí),接收需要遠(yuǎn)程存儲(chǔ)器訪問的請(qǐng)求(步驟610)。然后,檢索該請(qǐng)求所指向的遠(yuǎn)程存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符(步驟620)。然后,將擴(kuò)展的跨存儲(chǔ)器描述符與該請(qǐng)求一起傳遞到I/O堆棧(步驟630),該I/O堆棧相應(yīng)地對(duì)擴(kuò)展的跨存儲(chǔ)器描述符和請(qǐng)求進(jìn)行處理。然后,使用擴(kuò)展的跨存儲(chǔ)器描述符通過I/O適配器執(zhí)行遠(yuǎn)程存儲(chǔ)器訪問(步驟640)。
如此,提供了用于擴(kuò)展已知的跨存儲(chǔ)器描述符的機(jī)制,以便它可以描述不同于進(jìn)程當(dāng)前正在其中運(yùn)行的分區(qū)的另一個(gè)分區(qū)的遠(yuǎn)程存儲(chǔ)器。由于本發(fā)明的實(shí)施例所提供的擴(kuò)展與已知的跨存儲(chǔ)器描述符使用相同格式,但具有不同的數(shù)據(jù)和與數(shù)據(jù)關(guān)聯(lián)的內(nèi)涵,不必為處理擴(kuò)展的跨存儲(chǔ)器描述符而修改計(jì)算設(shè)備中存在的許多接口和存儲(chǔ)器管理服務(wù)??梢约訌?qiáng)檢查跨存儲(chǔ)器描述符的其他接口和存儲(chǔ)器管理服務(wù),以包括用于處理擴(kuò)展的跨存儲(chǔ)器描述符的代碼,以便提供用于執(zhí)行遠(yuǎn)程存儲(chǔ)器訪問的功能。
雖然是在典型的DMA操作的上下文中描述本發(fā)明的示范性實(shí)施例的,但是,應(yīng)該理解,本發(fā)明的實(shí)施例不僅限于這樣的情況。例如,擴(kuò)展的跨存儲(chǔ)器描述符也可以用于遠(yuǎn)程復(fù)制操作。可以由系統(tǒng)管理程序或其他硬件和/或軟件機(jī)制來(lái)實(shí)現(xiàn)復(fù)制操作,其中,服務(wù)器分區(qū)通過操作系統(tǒng)和系統(tǒng)管理程序之間的很好地描述的接口向該機(jī)制(例如,系統(tǒng)管理程序)提供信息。所提供的信息來(lái)自擴(kuò)展的跨存儲(chǔ)器描述符(例如,標(biāo)識(shí)客戶端分區(qū)的遠(yuǎn)程存儲(chǔ)器的標(biāo)識(shí)符)。然后,系統(tǒng)管理程序可以執(zhí)行從服務(wù)器到客戶端或從客戶端到服務(wù)器的實(shí)際復(fù)制操作。
操作可以由服務(wù)器端啟動(dòng),因此,服務(wù)器要么可以拉數(shù)據(jù)(如利用xmemin系統(tǒng)調(diào)用),要么可以向客戶端分區(qū)推數(shù)據(jù)(如利用xmemout系統(tǒng)調(diào)用)。系統(tǒng)管理程序可以執(zhí)行實(shí)際復(fù)制操作,因?yàn)樗仍谒厦孢\(yùn)行的操作系統(tǒng)具有更高的監(jiān)督權(quán)限。這就使得系統(tǒng)管理程序訪問任何分區(qū)的任何存儲(chǔ)器。這種特性的遠(yuǎn)程復(fù)制操作促成了服務(wù)器和客戶端之間的更先進(jìn)的數(shù)據(jù)交換協(xié)議的設(shè)計(jì)和實(shí)現(xiàn)。
值得注意的是,盡管是在具有完全功能的數(shù)據(jù)處理系統(tǒng)的上下文中描述本發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,進(jìn)程能夠以存儲(chǔ)了指令的計(jì)算機(jī)可讀的介質(zhì)的形式和各種各樣的形式進(jìn)行分發(fā),這里所描述的方法同樣適用,不管實(shí)際用于進(jìn)行分發(fā)的承載信號(hào)的介質(zhì)的特定類型是什么。計(jì)算機(jī)可讀的介質(zhì)的示例包括可記錄類型的介質(zhì),如軟盤、硬盤驅(qū)動(dòng)器、RAM、CD-ROM、DVD-ROM、傳輸類型的介質(zhì),例如使用諸如射頻和光波傳輸?shù)膫鬏斝问降臄?shù)字和模擬通信鏈路、有線或無(wú)線通信鏈路。計(jì)算機(jī)可讀的介質(zhì)可以采取編碼格式的形式,這些編碼在特定數(shù)據(jù)處理系統(tǒng)中實(shí)際使用時(shí)被解碼。
說(shuō)明書只作說(shuō)明,而不是窮盡性的或限于所說(shuō)明的形式。那些本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以進(jìn)行許多修改。所選擇和描述的實(shí)施例是為了最好地說(shuō)明本發(fā)明的原理,實(shí)際應(yīng)用,并使本領(lǐng)域普通技術(shù)人員懂得,帶有各種修改的各種實(shí)施例也是可以接受的。
權(quán)利要求
1.數(shù)據(jù)處理系統(tǒng)中用于第一邏輯分區(qū)中的第一進(jìn)程訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器的方法,包括檢索遠(yuǎn)程存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符,其中,擴(kuò)展的跨存儲(chǔ)器描述符提供遠(yuǎn)程存儲(chǔ)器的描述;以及,第一邏輯分區(qū)中的第一進(jìn)程基于擴(kuò)展的跨存儲(chǔ)器描述符訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器。
2.根據(jù)權(quán)利要求1所述的方法,其中,擴(kuò)展的跨存儲(chǔ)器描述符包括將擴(kuò)展的跨存儲(chǔ)器描述符指定為描述不同邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器的第一字段。
3.根據(jù)權(quán)利要求2所述的方法,其中,擴(kuò)展的跨存儲(chǔ)器描述符進(jìn)一步包括標(biāo)識(shí)第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器的第二字段,指定遠(yuǎn)程存儲(chǔ)器的大小的第三字段以及指定遠(yuǎn)程存儲(chǔ)器中的起始地址的第四字段。
4.根據(jù)權(quán)利要求1所述的方法,其中,當(dāng)初始化第一邏輯分區(qū)中的操作系統(tǒng)時(shí)生成擴(kuò)展的跨存儲(chǔ)器描述符。
5.根據(jù)權(quán)利要求1所述的方法,其中,由將其他邏輯分區(qū)的遠(yuǎn)程存儲(chǔ)器附加到第一邏輯分區(qū)的操作系統(tǒng)的操作系統(tǒng)內(nèi)核服務(wù)來(lái)生成擴(kuò)展的跨存儲(chǔ)器描述符。
6.根據(jù)權(quán)利要求5所述的方法,其中,當(dāng)初始化第一邏輯分區(qū)中的操作系統(tǒng)時(shí),操作系統(tǒng)內(nèi)核服務(wù)基于由操作系統(tǒng)內(nèi)核服務(wù)分析的第二邏輯分區(qū)的設(shè)備樹生成擴(kuò)展的跨存儲(chǔ)器描述符。
7.根據(jù)權(quán)利要求6所述的方法,其中,由系統(tǒng)管理程序維護(hù)設(shè)備樹。
8.根據(jù)權(quán)利要求1所述的方法,其中,第一邏輯分區(qū)位于服務(wù)器計(jì)算設(shè)備中,而第二邏輯分區(qū)位于客戶端計(jì)算設(shè)備中。
9.根據(jù)權(quán)利要求1所述的方法,其中,訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器包括使用擴(kuò)展的跨存儲(chǔ)器描述符來(lái)執(zhí)行直接存儲(chǔ)器訪問操作。
10.根據(jù)權(quán)利要求1所述的方法,其中,基于擴(kuò)展的跨存儲(chǔ)器描述符來(lái)訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器包括沿著輸入/輸出(I/O)堆棧將擴(kuò)展的跨存儲(chǔ)器描述符傳遞到物理設(shè)備驅(qū)動(dòng)程序;基于擴(kuò)展的跨存儲(chǔ)器描述符來(lái)生成直接存儲(chǔ)器訪問操作;以及將直接存儲(chǔ)器訪問操作提交到I/O適配器,其中,I/O適配器將直接存儲(chǔ)器訪問操作傳輸?shù)降诙壿嫹謪^(qū)。
11.包括存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序代碼的計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理系統(tǒng)上執(zhí)行時(shí),指示數(shù)據(jù)處理系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1所述的方法。
12.用于第一邏輯分區(qū)中的第一進(jìn)程訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器的系統(tǒng),包括用于檢索遠(yuǎn)程存儲(chǔ)器的擴(kuò)展的跨存儲(chǔ)器描述符的裝置,其中,擴(kuò)展的跨存儲(chǔ)器描述符提供遠(yuǎn)程存儲(chǔ)器的描述;以及,用于供第一邏輯分區(qū)中的第一進(jìn)程基于擴(kuò)展的跨存儲(chǔ)器描述符訪問第二邏輯分區(qū)中的遠(yuǎn)程存儲(chǔ)器的裝置。
全文摘要
提供了用于在服務(wù)器分區(qū)環(huán)境中使用擴(kuò)展跨存儲(chǔ)器描述符的系統(tǒng)和方法,以便它可以用于描述另一個(gè)分區(qū)的存儲(chǔ)器,例如,客戶端分區(qū)的存儲(chǔ)器(下面被稱為“遠(yuǎn)程”存儲(chǔ)器)。利用該系統(tǒng)和方法,當(dāng)初始化在邏輯上分區(qū)的計(jì)算系統(tǒng)中的操作系統(tǒng)時(shí),調(diào)用操作系統(tǒng)內(nèi)核服務(wù),這些操作系統(tǒng)內(nèi)核服務(wù)檢查計(jì)算系統(tǒng)的設(shè)備樹并生成擴(kuò)展的跨存儲(chǔ)器描述符,該描述符描述了另一個(gè)邏輯分區(qū)的本地存儲(chǔ)器,對(duì)于當(dāng)前邏輯分區(qū),該存儲(chǔ)器是遠(yuǎn)程存儲(chǔ)器。當(dāng)執(zhí)行某一操作需要對(duì)遠(yuǎn)程存儲(chǔ)器進(jìn)行訪問時(shí),服務(wù)器分區(qū)的操作系統(tǒng)使用存儲(chǔ)的擴(kuò)展的跨存儲(chǔ)器描述符,以執(zhí)行遠(yuǎn)程存儲(chǔ)器訪問。
文檔編號(hào)G06F12/10GK1930553SQ200580008007
公開日2007年3月14日 申請(qǐng)日期2005年5月18日 優(yōu)先權(quán)日2004年5月27日
發(fā)明者維沙·奇特蘭簡(jiǎn)恩·阿斯羅特, 布魯斯·米利 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司