專利名稱:數(shù)據(jù)處理系統(tǒng)內(nèi)分配和訪問存儲映像工具的方法、設(shè)備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理,更具體地說,涉及在數(shù)據(jù)處理系統(tǒng)內(nèi)分配和訪問資源。在至少一個實施例中,本發(fā)明還特別涉及在數(shù)據(jù)處理系統(tǒng)中,有效分配和訪問促進(jìn)工具(promotion facility),例如鎖(lock)的方法和系統(tǒng)。
背景技術(shù):
在共享存儲器多處理器(MP)數(shù)據(jù)處理系統(tǒng)中,系統(tǒng)中的多個處理器中的每一個都可訪問并修改保存在共享存儲器中的數(shù)據(jù)。為了在多個存儲器之間使對存儲器的特定區(qū)組(granule)(例如,高速緩存界線(cache line))的訪問同步,編程模型通常要求處理器在修改區(qū)組之前,獲得與該區(qū)組相關(guān)的鎖,并在所述修改之后釋放所述鎖。
在多處理器計算機系統(tǒng)中,多個處理器可獨立嘗試獲得相同的鎖。在爭取鎖的某一處理器成功獲得所述鎖的情況下,通過系統(tǒng)總線從系統(tǒng)存儲器或者另一處理器的高速緩沖存儲器體系傳送包含所述鎖的高速緩存界線,并載入該處理器的高速緩沖存儲器體系(hierarchy)。從而,常規(guī)數(shù)據(jù)處理系統(tǒng)中鎖的獲得和釋放可表征為各個處理器的數(shù)據(jù)高速緩沖存儲器之間專有高速緩存界線的移動。
通常利用稱為“裝入預(yù)約”(load-reserve)和“有條件保存”(store-conditional)指令的特殊存儲器存取指令簡化鎖的獲得和釋放。在支持裝入預(yù)約和有條件保存指令的共享存儲器MP數(shù)據(jù)處理系統(tǒng)中,系統(tǒng)內(nèi)的每個處理器配有預(yù)約寄存器(reservationregister)。當(dāng)處理器對某一存儲器區(qū)組執(zhí)行裝入預(yù)約時,處理器把該存儲器區(qū)組的一些或全部內(nèi)容載入該處理器的內(nèi)部寄存器之一中,并把存儲器區(qū)組的地址載入該處理器的預(yù)約寄存器中。從而認(rèn)為請求方處理器預(yù)約了該存儲器區(qū)組。該處理器隨后可利用有條件保存指令,對預(yù)約的存儲器區(qū)組進(jìn)行原子更新(atomic update)。
當(dāng)處理器對其預(yù)約的存儲器區(qū)組進(jìn)行有條件存儲(store-conditional)時,處理器把指定寄存器的內(nèi)容保存到該存儲器區(qū)組中,隨后清除預(yù)約。如果處理器不具有對存儲器區(qū)組的預(yù)約,那么有條件保存指令失敗,不進(jìn)行存儲器更新。一般來說,如果遠(yuǎn)程處理器請求獨占訪問存儲器區(qū)組,以便修改該存儲器區(qū)組(使共享總線上的所有處理器能夠看到該請求),或者預(yù)約處理器執(zhí)行有條件保存指令,那么處理器的預(yù)約被清除。如果每個處理器只許可一個預(yù)約,那么如果處理器對另一存儲器區(qū)組執(zhí)行裝入預(yù)約,該處理器的當(dāng)前預(yù)約也將被清除。
利用裝入預(yù)約(lwarx)和有條件保存(stwcx)指令獲得和釋放鎖的典型指令序列如下A load X !讀鎖(lock)的值cmpi!比較,以確定鎖是否可用bc A!如果鎖不可用,返回B lwarx X !嘗試獲得鎖的預(yù)約cmpi!確定是否獲得鎖的預(yù)約bc A!如果未獲得預(yù)約,返回C stwcx X !試圖把鎖設(shè)置成“已鎖”狀態(tài)bc A!如果有條件保存失敗,那么返回…!處理由鎖使對它的訪問同步的共享數(shù)據(jù)store X !通過重置為“未鎖”狀態(tài),釋放鎖如上所示,典型的指令序列包括至少兩個獨立的分支“循環(huán)”一個以通過成功執(zhí)行裝入預(yù)約指令,處理器獲得有效的鎖預(yù)約為條件(用標(biāo)為“B”),另一個以在處理器具有有效預(yù)約的同時,通過執(zhí)行有條件保存指令,處理器成功地把鎖更新為“已鎖”狀態(tài)為條件(標(biāo)為“C”)。鎖的獲得序列可以可選地包括第三分支循環(huán)(標(biāo)為“A”識別),其中在試圖預(yù)約鎖之前,處理器確定鎖是否可用。
不僅因為其長度,而且因為預(yù)約的有條件性,這種常規(guī)的鎖的獲得指令導(dǎo)致較高的開銷。即,如果第二處理器先獲得該鎖的所有權(quán),那么第一處理器在成功獲得該鎖(通過執(zhí)行有條件保存指令)之前,會失去對該鎖的預(yù)約。從而,如果對鎖有激烈的競爭,那么在通過執(zhí)行有條件保存指令成功獲得鎖之前,處理器可能預(yù)約該鎖并多次失去預(yù)約。
至少一個處理器制造商已試圖通過實現(xiàn)“強制”解決方案解決該問題,在“強制”解決方案中,準(zhǔn)許執(zhí)行裝入預(yù)約指令的處理器獨占訪問互連。即,當(dāng)該處理器持有該預(yù)約時,只允許執(zhí)行裝入預(yù)約指令的處理器控制互連上的操作,所有其它處理器被封鎖,不僅不能訪問特定的數(shù)據(jù)區(qū)組,而且不能啟動互連上的任何操作。從而,盡管持有預(yù)約,被封鎖在互連之外的處理器會因缺乏數(shù)據(jù)而停止。顯然,這種解決方案不能很好地縮放(scale),尤其是對于運行對鎖有激烈的競爭的代碼的系統(tǒng)來說,更是如此。
發(fā)明內(nèi)容
本發(fā)明認(rèn)識到如上所述的常規(guī)的獲得和釋放鎖的方法雖然在使多個處理器對共享數(shù)據(jù)的訪問同步方面有效,但是存在若干附隨缺陷。首先,采用裝入預(yù)約和有條件保存指令的常規(guī)的鎖的獲得和釋放序列需要在每個處理器內(nèi)包括專用預(yù)約寄存器和預(yù)約管理電路,不合需要地增大了處理器大小和復(fù)雜性。
其次,如上所述,由于預(yù)約的有條件性,因此典型的鎖的獲得和釋放序列固有地存在效率低的缺陷。如果對鎖有激烈的競爭,那么在允許任何處理器獲得一個鎖,把該鎖更新為“已鎖狀態(tài)”和處理由鎖保護(hù)的數(shù)據(jù)之前,多個處理器可能多次獲得和失去對該鎖的預(yù)約。從而,整體系統(tǒng)性能下降。
第三,上述的鎖的獲得和釋放方法不能很好地縮放。例如,在常規(guī)的鎖的獲得指令序列中,獲得鎖定而引起的開銷隨著數(shù)據(jù)處理系統(tǒng)的規(guī)模而增大。從而,雖然在具有許多處理器的大規(guī)模數(shù)據(jù)處理系統(tǒng)中,最好采用細(xì)粒度鎖(fine grain lock)(即大量的分別保護(hù)相當(dāng)小的數(shù)據(jù)區(qū)組的鎖)以增強并行性,但是,隨著系統(tǒng)規(guī)模的增大,不斷升高的鎖的獲得開銷會迫使采用更粗顆粒的鎖,以便降低鎖的獲得開銷所占用的處理時間的百分比。這種設(shè)計上的折衷(雖然認(rèn)為是必要的)顯著減少了可在多個處理器間有效分布的有用功的量。
第四,由于鎖變量通常被看作是可高速緩存的操作數(shù)數(shù)據(jù),鎖的獲得序列內(nèi)的每個裝入型和保存型操作觸發(fā)數(shù)據(jù)高速緩存目錄窺探(directory snoop),系統(tǒng)總線上的相關(guān)性消息通信和由數(shù)據(jù)處理系統(tǒng)實現(xiàn)的高速緩存相關(guān)性協(xié)議指示的其它常規(guī)操作。本發(fā)明認(rèn)識到耗費有限的系統(tǒng)資源比如數(shù)據(jù)高速緩存窺探隊列、總線帶寬等的這些以數(shù)據(jù)為中心的高速緩存相關(guān)性操作是不必要的,因為在對受鎖保護(hù)的數(shù)據(jù)區(qū)組進(jìn)行處理的過程中,鎖本身的數(shù)據(jù)值并不需要或者無用。
鑒于在數(shù)據(jù)處理系統(tǒng)中獲得并釋放鎖的常規(guī)技術(shù),更一般地說,組件間協(xié)調(diào)和訪問存儲映像資源的技術(shù)的上述及其它缺陷,本發(fā)明尤其引入了分配和訪問存儲映像資源比如全局促進(jìn)工具的新方法和設(shè)備,所述全局促進(jìn)工具最好被用作鎖定工具(但是并不局限于此)。
根據(jù)本發(fā)明,一個多處理器處理系統(tǒng)包括與互連以及與存儲器耦接的若干處理器,所述存儲器包括至少包含一個促進(jìn)位字段的促進(jìn)工具。所述若干處理器中的第一處理器執(zhí)行裝入型指令,以便獲得全局促進(jìn)工具內(nèi)的排除所述若干處理器內(nèi)的至少一個第二處理器的一個促進(jìn)位字段。響應(yīng)裝入型指令的執(zhí)行,第一處理器的寄存器接收寄存器位字段,所述寄存器位字段指出是否通過執(zhí)行裝入型指令獲得了促進(jìn)位字段。當(dāng)?shù)谝惶幚砥鞒钟信懦诙幚砥鞯拇龠M(jìn)位時,允許第二處理器在互連上啟動一個請求。
在下述詳細(xì)說明中,本發(fā)明的所有目的、特征和優(yōu)點將變得顯而易見。
附加權(quán)利要求中陳述了本發(fā)明特有的新特征。但是,結(jié)合附圖,參考例證實施例的下述詳細(xì)說明,能夠更好地理解發(fā)明本身,以及發(fā)明的優(yōu)選應(yīng)用模式、其它目的和優(yōu)點,其中圖1描述了根據(jù)本發(fā)明一個實施例的多處理器數(shù)據(jù)處理系統(tǒng)的例證實施例;圖2A和2B是根據(jù)本發(fā)明的處理器核心的兩個備選實施例的詳細(xì)方框圖;圖3是根據(jù)本發(fā)明的促進(jìn)高速緩存的實施例的詳細(xì)方框圖;圖4是根據(jù)本發(fā)明的鎖的獲得和釋放過程的高級邏輯方框圖;圖5是圖解說明根據(jù)本發(fā)明,系統(tǒng)互連上用于獲得鎖的僅讀取地址的事務(wù)的時序圖;圖6是根據(jù)本發(fā)明的多處理器數(shù)據(jù)處理系統(tǒng)的例證軟件結(jié)構(gòu)的軟件層圖;圖7描述了可借助軟件分配存儲映像資源比如全局促進(jìn)工具的方法的高級邏輯圖;圖8圖解說明了可繞過存取保護(hù)和地址轉(zhuǎn)換,從而加速對特定存儲映像資源比如全局促進(jìn)工具的訪問的方法。
具體實施例方式
如上所述,本發(fā)明認(rèn)識到與常規(guī)的鎖的獲得和釋放方法相關(guān)的缺點至少可部分歸因于作為操作數(shù)數(shù)據(jù)的鎖的結(jié)構(gòu)定義。即,通常利用裝入預(yù)約和有條件保存原子數(shù)據(jù)存取基元(primitive)訪問鎖的值,在數(shù)據(jù)保有(使用)期間在系統(tǒng)互連上傳送鎖的值,保存在處理器高速緩存體系的操作數(shù)數(shù)據(jù)高速緩存內(nèi),并利用數(shù)據(jù)高速緩存相關(guān)性機制,和其它操作數(shù)數(shù)據(jù)一起被管理。
為了減小或消除伴隨常規(guī)的鎖的獲得和釋放方法的問題,本發(fā)明引入一種新的信息,這里稱為“促進(jìn)信息”(promotioninformation)。即,不是使在多處理器系統(tǒng)的組件之間傳遞的全體可尋址信息分成“指令”和“操作數(shù)數(shù)據(jù)”,本發(fā)明引入另外一種信息類別“促進(jìn)信息”,所述“促進(jìn)信息”包括鎖。這種促進(jìn)信息確定授權(quán)或許可數(shù)據(jù)處理系統(tǒng)的哪些組件(例如處理器、控制器、適配器等)執(zhí)行與促進(jìn)信息相關(guān)的特定活動。顯然,為了獨立于操作數(shù)數(shù)據(jù)(以及指令)管理“促進(jìn)信息”,進(jìn)行了軟件和硬件結(jié)構(gòu)增強,極大地簡化和提高了鎖的獲得和釋放過程的性能。
現(xiàn)在參考附圖,尤其是參考圖1,圖1中圖解說明了根據(jù)本發(fā)明的一個實施例,支持鎖和其它促進(jìn)信息的改進(jìn)的管理的多處理器(MP)數(shù)據(jù)處理系統(tǒng)的高級方框圖。如圖所示,數(shù)據(jù)處理系統(tǒng)8包括由系統(tǒng)互連12耦接以便通信的多個(例如64個)處理單元10。每個處理單元10是包括接口邏輯電路23和一個或多個處理器核心14的單一集成電路。除了寄存器、指令流邏輯電路和用于執(zhí)行程序指令的執(zhí)行單元之外,每個處理器核心14包括相關(guān)的1級(L1)指令和數(shù)據(jù)高速緩存16和18,所述1級指令和數(shù)據(jù)高速緩存臨時分別緩存可能被相關(guān)處理器核心14訪問的指令和操作數(shù)數(shù)據(jù)。
如圖1中所示,數(shù)據(jù)處理系統(tǒng)8的存儲器體系還包括一個或多個系統(tǒng)存儲器26,以及一個或多個低層的高速緩沖存儲器,例如單片2級(L2)高速緩存22,所述系統(tǒng)存儲器26構(gòu)成存儲器體系中易失性數(shù)據(jù)存儲器的最下層,所述高速緩存22用于使指令和操作數(shù)數(shù)據(jù)從系統(tǒng)存儲器26上升到處理器核心14。本領(lǐng)域的技術(shù)人員會明白,存儲器體系中每個后續(xù)的較低層一般能夠比較高層保存更多的數(shù)據(jù),但是訪問等待時間更長。
如圖所示,通過存儲器控制器24與互連12連接的系統(tǒng)存儲器26可保存操作數(shù)數(shù)據(jù)34和一個或多個操作系統(tǒng)28及一個或多個應(yīng)用程序30的多個部分。另外,系統(tǒng)存儲器26可包括由操作系統(tǒng)28分配(例如在引導(dǎo)時)分配的一個全局促進(jìn)工具32(globalpromotion facility)。雖然圖解表示成在系統(tǒng)存儲器內(nèi)的工具,不過本領(lǐng)域的技術(shù)人員會認(rèn)識到也可在系統(tǒng)或總線控制器、總線橋、響應(yīng)邏輯單元或者數(shù)據(jù)處理系統(tǒng)8的其它組件內(nèi)實現(xiàn)全局促進(jìn)工具32。
全局促進(jìn)工具32包括許多(例如1024)個單獨的促進(jìn)位36,所述促進(jìn)位可用于簡化例如關(guān)于中斷、鎖定、任務(wù)調(diào)度、事件檢測、錯誤條件、許可等的組件間協(xié)調(diào)。雖然不局限于這種應(yīng)用,一些或全部促進(jìn)位36可分配為鎖,可由操作系統(tǒng)28或應(yīng)用程序30使其與將使多處理器核心14的訪問與其同步的操作數(shù)數(shù)據(jù)34的相應(yīng)數(shù)據(jù)區(qū)組相聯(lián)系。例如,為“1”的促進(jìn)位值指示鎖被占用,相關(guān)數(shù)據(jù)區(qū)組被鎖定成由不持有該鎖的處理器核心14訪問。相反,為“0”的促進(jìn)位值表示該鎖自由,相關(guān)的數(shù)據(jù)區(qū)組未被鎖定。存儲器控制器24最好被編程為在讀訪問時,設(shè)置促進(jìn)位36(例如設(shè)置為“1”),在寫訪問時,重置促進(jìn)位(例如重置為“0”)。
為了降低對全局促進(jìn)工具32的訪問等待時間,每個處理器核心14可以可選地配備一個促進(jìn)高速緩沖存儲器(promotion cache)20,促進(jìn)高速緩沖存儲器20本地高速緩存相關(guān)處理器核心14訪問的一個或多個促進(jìn)位(promotion bit)36,下面進(jìn)一步說明。每個促進(jìn)高速緩沖存儲器20可被實現(xiàn)成直接映射(direct mapped)或成組相聯(lián)高速緩存(set associative cache),不過最好實現(xiàn)成完全相聯(lián)高速緩存,以使促進(jìn)高速緩沖存儲器20能夠支持更多或更少的促進(jìn)位36(由操作系統(tǒng)28確定),而不需要任何硬件修改。
可包括一個或多個總線、交換結(jié)構(gòu)(switch fabric)或者其它互連結(jié)構(gòu)的系統(tǒng)互連12用作與系統(tǒng)互連12耦接的裝置(例如處理單元10、存儲器控制器24等)之間的通信管道。系統(tǒng)互連12上的典型事務(wù)從請求開始,所述請求可包括表示事務(wù)類型的事務(wù)字段,表示事務(wù)的源和/或預(yù)期接收者的一個或多個標(biāo)記,以及地址和/或數(shù)據(jù)。與系統(tǒng)互連12相連的每個裝置最好窺探系統(tǒng)互連12上的所有有關(guān)事務(wù),并且如果合適,以窺探響應(yīng)應(yīng)答所述請求。如下進(jìn)一步討論的那樣,這種窺探響應(yīng)由響應(yīng)邏輯單元40接收和編輯,響應(yīng)邏輯單元40提供指出每個窺探器響應(yīng)所述請求要采取哪些操作(如果有的話)的集合組合響應(yīng)。這些操作可包括在系統(tǒng)互連12上獲得(sourcing)數(shù)據(jù),保存請求方窺探器(requesting snooper)提供的數(shù)據(jù),使存儲的數(shù)據(jù)無效等。雖然被分別圖解表示,應(yīng)明白響應(yīng)邏輯單元40也可包含在特定裝置(例如存儲器控制器24)之內(nèi),或者分布在各種裝置(例如處理單元10)之間,從而不同的裝置(例如每個事務(wù)的控制者)編輯窺探響應(yīng),產(chǎn)生關(guān)于不同事務(wù)的組合響應(yīng)。
本領(lǐng)域的技術(shù)人員會認(rèn)識到,數(shù)據(jù)處理系統(tǒng)8可包括許多另外的未圖解說明的組件,例如I/O適配器、互連橋接器(interconnectbridge)、非易失性存儲器、連接網(wǎng)絡(luò)或附加裝置的端口等。由于這些另外的組件不是理解本發(fā)明所必需的,因此在圖1中沒有圖解說明,這里沒有進(jìn)一步討論。但是,另外要明白本發(fā)明提供的增強適用于任意結(jié)構(gòu)的MP數(shù)據(jù)處理系統(tǒng),決不局限于圖1中圖解說明的一般MP結(jié)構(gòu)。
現(xiàn)在參見圖2A,圖中描述了根據(jù)本發(fā)明的處理器核心14的第一實施例的更詳細(xì)方框圖。如圖所示,處理器核心14具有指令控制器50,指令控制器50利用通過指令存儲器管理單元(IMMU)52執(zhí)行的有效地址-真實地址轉(zhuǎn)換(ERAT)獲得的真實地址,從L1 I-高速緩存16取回處理指令。當(dāng)然,如果指令的被請求高速緩存界線(cache line)不駐留于L1 I-高速緩存16中,那么ISU 50通過I-高速緩存再裝入總線54,向L2高速緩存22請求指令的相關(guān)高速緩存界線。
在取回指令,并進(jìn)行預(yù)處理(如果有的話)之后,根據(jù)指令類型,指令被發(fā)送給執(zhí)行單元60-68(可能是無序地)。即,條件寄存器修改(condition-register-modifying)指令和轉(zhuǎn)移指令被分別發(fā)送給條件寄存器單元(CRU)60和分支執(zhí)行單元(BEU)62,定點和裝入/保存指令被分別發(fā)送給定點單元(FXU)64和裝入-保存單元(LSU)66,浮點指令被分送給浮點單元(FPU)68。在可能的排隊和緩沖之后,執(zhí)行單元60-68抓住機會執(zhí)行發(fā)送的指令。
在執(zhí)行單元60-68之一內(nèi)的執(zhí)行過程中,指令可從與執(zhí)行單元耦接的寄存器文件70-74內(nèi)的一個或多個設(shè)計和/或重命名寄存器(architected and/or rename registers)接收輸入操作數(shù)(如果有的話)。指令執(zhí)行的數(shù)據(jù)結(jié)果(即目的操作數(shù))(如果有的話)被執(zhí)行單元60-68類似地寫入寄存器文件70-74中。例如,F(xiàn)XU 64從通用寄存器文件(GPRF)72接收輸入操作數(shù),并把目的操作數(shù)保存在GPRF 72中,F(xiàn)PU 68從浮點寄存器文件(FPRF)74接收輸入操作數(shù),并把目的操作數(shù)保存在FPRF 74中,LSU 66從GPRF 72接收輸入操作數(shù),并使數(shù)據(jù)在L1 D-高速緩存18和GPRF 72及FPRF 74之間被傳送。類似地,當(dāng)執(zhí)行條件寄存器修改指令或者條件寄存器相關(guān)(condition-register-dependent)指令時,CRU 90和BEU 92訪問控制寄存器文件(CRF)70,在優(yōu)選實施例中,CRF 70包含條件寄存器、鏈接寄存器、計數(shù)寄存器和各自的重命名寄存器。BEU 92獲取條件寄存器、鏈接寄存器和計數(shù)寄存器的值,決定條件分支,從而獲得路徑地址,BEU 62把所述路徑地址提供給指令控制器50,啟動沿著指示路徑的指令取回。在執(zhí)行單元完成指令的執(zhí)行之后,執(zhí)行單元通知指令控制器50,指令控制器50按照程序順序安排指令的完成。
在圖2A中概括描述的處理器結(jié)構(gòu)中,可采用不同的執(zhí)行單元(從而不同的指令序列)訪問促進(jìn)高速緩存20,獲得和釋放鎖,并完成其它組件間協(xié)調(diào)功能。例如,圖2A圖解說明了一種實現(xiàn)方式,其中LSU 66響應(yīng)專用或通用裝入和保存指令,訪問促進(jìn)位36(在可選促進(jìn)高速緩存20內(nèi)或者來自全局促進(jìn)工具32)的實現(xiàn)。圖2B描述備選的第二實施例,其中BEU 62響應(yīng)特殊轉(zhuǎn)移指令,在可選的促進(jìn)高速緩存20或者在全局促進(jìn)工具32內(nèi)設(shè)置一個促進(jìn)位36(例如獲得鎖),LSU 66響應(yīng)保存指令,重置促進(jìn)位36(例如釋放鎖)。在本發(fā)明范圍內(nèi)的這些及其它設(shè)計選項中,根據(jù)本領(lǐng)域的技術(shù)人員已知的實現(xiàn)特定細(xì)節(jié)(例如門數(shù)(gate count)、布局和路由效率,指令集結(jié)構(gòu)等),優(yōu)選不同的設(shè)計。
現(xiàn)在參考圖3,圖中圖解說明了根據(jù)本發(fā)明一個實施例的處理器核心14的促進(jìn)高速緩存20的更詳細(xì)的方框圖。如圖所示,促進(jìn)高速緩存20包括包含一個或多個項目92的完全相聯(lián)高速緩存陣列90。高速緩存陣列90內(nèi)的每個項目92包括一個有效位字段100、一個位ID字段102,和指示相關(guān)處理器核心14目前是否持有在位ID字段102內(nèi)標(biāo)識的促進(jìn)位36(例如鎖)的位值字段104。例如,為“1”的位值表示相關(guān)處理器核心14持有該鎖,為“0”的位值表示該鎖是自由的。
與每個項目92相關(guān)的是包括比較器106、與門108和緩沖器110的存取電路。比較器106比較從相關(guān)處理器核心14或系統(tǒng)互連12接收的輸入位ID和保存在相關(guān)項目92內(nèi)的位ID,并輸出表示輸入位ID和保存的位ID是否匹配的1位命中/失敗指示信號。與門108利用有效字段100的狀態(tài)限定(qualify)該命中/失敗信號,如果限定后的信號指示命中,那么緩沖器110輸出包含在位值字段104中的位值。所有與門108輸出的限定命中/失敗信號被或門112作為輸入接收,或門112輸出一個1位的集體命中/失敗指示116。命中/失敗指示116和輸出位值114(如果有的話)被高速緩存控制器94接收。
高速緩存控制器94包括管理對高速緩存陣列90的訪問、高速緩存陣列90的更新和相關(guān)性的一組邏輯單元。在圖解表示的實施例中,高速緩存控制器94包括相關(guān)性邏輯單元96、寄存器更新邏輯單元97、替換邏輯單元98和可選的促進(jìn)了解工具99。
相關(guān)性邏輯單元96保持促進(jìn)高速緩存20和系統(tǒng)存儲器26內(nèi)的全局促進(jìn)工具32的內(nèi)容之間的相關(guān)性。相關(guān)性邏輯單元96的各種實現(xiàn)都是可能的,其中根據(jù)所需的復(fù)雜性、性能、被頻繁競爭的鎖的數(shù)目等,不同的系統(tǒng)優(yōu)選其中不同的實現(xiàn)。
一般來說,相關(guān)性邏輯單元96通過響應(yīng)本地處理器核心14和遠(yuǎn)程處理器核心14的請求管理有效位字段100和/或位值字段104的狀態(tài),來保持相關(guān)性。在其中不實現(xiàn)任何附加相關(guān)性字段118的例證實現(xiàn)中,相關(guān)性邏輯單元96每次只允許一個促進(jìn)高速緩存20具有包含來自全局促進(jìn)工具32的特定促進(jìn)位36的有效項目92。表I提供根據(jù)該例證實現(xiàn)的相關(guān)性的邏輯單元96的操作的總結(jié)。
表I
應(yīng)注意在表I中總結(jié)的實現(xiàn)I(以及其它實現(xiàn))中,把促進(jìn)位36的狀態(tài)寫回全局促進(jìn)工具32以便把鎖的釋放通知給全局促進(jìn)工具32,該寫回可以可選地從釋放時候起被延遲,直到所有促進(jìn)高速緩存20解除促進(jìn)位36的分配為止。在全局促進(jìn)工具32未與促進(jìn)高速緩存20同步的期間(例如全局促進(jìn)工具32指出處理器核心14已獲得一個鎖,而事實上在促進(jìn)高速緩存20內(nèi),該鎖定被指示為是自由的),存儲器控制器24將用表示鎖被占用的窺探響應(yīng),應(yīng)答以該鎖為目標(biāo)的讀取請求。另一方面,處理器核心14將提供空窺探響應(yīng)或者干預(yù)窺探響應(yīng)(即,沒有處理器核心14提供重試窺探響應(yīng))。響應(yīng)這些窺探響應(yīng),響應(yīng)邏輯單元40將提供組合響應(yīng),所述組合響應(yīng)指示鎖定獲得請求被給予請求的處理器核心14。
在相關(guān)性邏輯單元96的其它實施例中,每個促進(jìn)高速緩存可許可促進(jìn)位36在多個處理器核心14的促進(jìn)高速緩存20內(nèi)被同時緩存。這種實施例可降低平均鎖獲得開銷,尤其是對于競爭激烈的鎖更是如此,但是伴隨而來的是增大高速緩存復(fù)雜性。例如,除了(或者代替)有效位字段100,促進(jìn)高速緩存20的每個項目92還配有相關(guān)性字段118,以便跟蹤在該項目92中存儲的促進(jìn)位36的相關(guān)性狀態(tài),相關(guān)性邏輯單元99另外還實現(xiàn)相關(guān)性協(xié)議,例如眾所周知的修改、獨占、共享、無效(MESI)高速緩存相關(guān)性協(xié)議或者該協(xié)議的變形。
高速緩存控制器94還包括響應(yīng)對促進(jìn)高速緩存20的訪問,更新處理器核心14內(nèi)的一個或多個選定寄存器的寄存器更新邏輯單元97。例如,寄存器更新邏輯單元97可響應(yīng)以全局促進(jìn)工具32為目標(biāo)的鎖獲得或釋放指令,用鎖值(例如0或1)更新GPRF 72內(nèi)的通用寄存器。或者,或者另外,如圖2B中在附圖標(biāo)記56處所示,寄存器更新邏輯單元97可響應(yīng)以全局促進(jìn)工具32為目標(biāo)的鎖獲得和釋放指令,更新CRF 70內(nèi)的一個或多個寄存器(例如連接寄存器、條件寄存器、或者專用鎖定寄存器)。
高速緩存控制器94還包括響應(yīng)在促進(jìn)高速緩存20中失敗的存取請求,替換高速緩存陣列90的選定項目92的替換邏輯單元98。替換邏輯單元98可實現(xiàn)常規(guī)的高速緩存替換算法,例如最近最少使用(LRU)或最近最多使用(MRU)算法,或者,可根據(jù)可動態(tài)確定(例如由操作系統(tǒng)28)或者在啟動時靜態(tài)確定的個體優(yōu)先權(quán)或組優(yōu)先權(quán),替換促進(jìn)位36。在該第二種實現(xiàn)中,最好防止優(yōu)先權(quán)較高的鎖被優(yōu)先權(quán)較低的鎖替換,從而進(jìn)一步改善鎖的獲得效率。在替換邏輯單元98管理每組鎖共享相同優(yōu)先級的各個優(yōu)先權(quán)組中的鎖的實現(xiàn)中,借助分組,高速緩存陣列90被有效分成多個獨立的高速緩存(例如至少一個較高優(yōu)先權(quán)的高速緩存和至少一個較低優(yōu)先權(quán)的高速緩存)。利用這種劃分,替換邏輯單元98可選擇共享相同優(yōu)先級的鎖,以便按照訪問順序(例如LRU或者M(jìn)RU)替換。
可選的促進(jìn)了解工具99進(jìn)一步增強處理促進(jìn)位的釋放和/或高速緩存解除分配(犧牲)的方法。具體地說,促進(jìn)了解工具99可根據(jù)在互連12上窺探到的僅對地址的請求,跟蹤每個其它處理單元10或者其它組件(在圖3中表示為p0-Pn)最近最常請求的(或者根據(jù)CR值,最近最常未成功請求的)特定促進(jìn)位36(如果有的話)?;蛘?,或者另外,促進(jìn)了解工具可提供為每個促進(jìn)位36指示關(guān)于該促進(jìn)位36具有最陳舊的待處理(即未滿足的)或最高優(yōu)先權(quán)請求的處理單元10(或者其它組件)的表格。如果需要,通過記錄僅僅在相關(guān)促進(jìn)高速緩存20內(nèi)存儲或者被相關(guān)處理器核心14持有的促進(jìn)位36的最陳舊的未被滿足請求方(或者優(yōu)先權(quán)最高的請求方)的處理單元10(或其它組件),可限制促進(jìn)了解工具99保存的和關(guān)于促進(jìn)位36的窺探請求相關(guān)的信息的數(shù)量。
如果替換邏輯單元98選擇某一促進(jìn)位,以便按照處理單元10的請求從促進(jìn)了解工具99指示的高速緩存陣列中解除分配,那么高速緩存控制器94可通過在互連12上傳送主動提供的地址推送操作(address-only push operation),在不接收另一請求的情況下,把該促進(jìn)位推送給所指示的處理單元10。如果促進(jìn)了解工具99指出多個處理單元10同時需要解除分配后的該促進(jìn)位36(對于競爭激烈的鎖來說,情況通常就是這樣),替換邏輯單元98最好把解除分配的促進(jìn)位36推送給具有關(guān)于該促進(jìn)位36的最早的待處理(或最高優(yōu)先權(quán))請求的處理單元10?;蛘?,如果促進(jìn)了解工具99指出另一處理單元10(或其它組件)已請求該促進(jìn)位36,或者具有關(guān)于該促進(jìn)位36的未滿足的待處理請求,那么可響應(yīng)促進(jìn)位36的釋放,而不是等待自促進(jìn)高速緩存20的解除分配,由高速緩存控制器94發(fā)出推送操作。如果由于某些原因,推送操作失敗(例如目標(biāo)處理單元10不具有任何可用的窺探隊列),那么存儲器控制器24最好更新全局促進(jìn)工具32,指出解除分配后的該促進(jìn)位36可用,并假定解除分配后的該促進(jìn)位36的“所有權(quán)”。
當(dāng)窺探唯地址促進(jìn)推送操作(address-only promotion pushoperation)和唯地址促進(jìn)請求操作(address-only promotion requestoperation)時,每個高速緩存中的高速緩存控制器94可清除其促進(jìn)了解工具99中和推送操作的目標(biāo)處理單元10對應(yīng)的項目。另外,如果處理單元10不再希望獲得先前請求的促進(jìn)位36(例如處理單元10不成功地請求了該促進(jìn)位36預(yù)定次數(shù),并且隨后轉(zhuǎn)換了進(jìn)程),那么處理單元10可在互連12上傳送請求其它處理單元10從它們的促進(jìn)了解工具99中清除相應(yīng)的項目的唯地址操作(address-onlyoperation)。響應(yīng)對特定處理器關(guān)于不同促進(jìn)位36的請求的窺探,促進(jìn)了解工具99內(nèi)特定處理單元10的項目也被更新為新的數(shù)值。
應(yīng)注意促進(jìn)了解工具99的實現(xiàn)不需要促進(jìn)高速緩存20的實現(xiàn),并且可在不具有促進(jìn)高速緩存20的處理單元10內(nèi)實現(xiàn)。此外,甚至在采用數(shù)據(jù)高速緩存線作為鎖的其它傳統(tǒng)數(shù)據(jù)處理系統(tǒng)中,也可采用根據(jù)本發(fā)明的促進(jìn)了解工具99。此外,應(yīng)認(rèn)識到根據(jù)互連布局、協(xié)議和其它因素,促進(jìn)請求的通信和管理的精度水平會在各種實現(xiàn)之間發(fā)生變化。
現(xiàn)在參見圖4,圖中描述了根據(jù)本發(fā)明,處理器核心14獲得與共享數(shù)據(jù)區(qū)組相關(guān)的鎖,之后釋放該鎖的方法的高級邏輯流程圖。如圖所示,該過程開始于方框130,之后前進(jìn)到方框132,方框132描述了執(zhí)行鎖獲得指令,從而獲得關(guān)于特定數(shù)據(jù)區(qū)組的鎖的處理器核心14。
例如,在第一實施例中,執(zhí)行的獲得鎖的指令可以是以全局促進(jìn)工具32的基地址為目標(biāo)的通用或特殊裝入指令,裝入指令以操作數(shù)識別用于該鎖的特定促進(jìn)位36。在第一實施例中,鎖獲得和釋放指令序列可表示成如下所示A load(bit ID) !試圖獲得關(guān)于該數(shù)據(jù)區(qū)組的鎖cmpi !確定是否獲得鎖(位值=0?)bc A !如果未獲得鎖定,返回…!如果獲得鎖定,處理共享區(qū)組store(bit ID) !把位值重置為0,以便釋放該鎖在圖2A中圖解說明的處理器核心實施例中,指令控制器50把用于獲得鎖的裝入指令分派給LSU 66以便執(zhí)行。LSU 66通過計算全局促進(jìn)工具32的有效或真實地址,執(zhí)行裝入指令。如果需要的話,該請求地址隨后被DMMU 80轉(zhuǎn)換成真實地址,并基于該轉(zhuǎn)換(例如,借助在塊地址表(BAT)中進(jìn)行表格查詢),被提供給促進(jìn)高速緩存20,而不是L1數(shù)據(jù)高速緩存18(如果實現(xiàn)有促進(jìn)高速緩存20)。
在第二實施例中,通過把利用操作數(shù)標(biāo)識用于鎖的特定促進(jìn)位36的特殊轉(zhuǎn)移指令用作鎖獲得指令,可進(jìn)一步縮短用于獲得鎖的指令序列。在第二實施例中,可如下表示鎖獲得和釋放序列A bc bit ID,A !試圖獲得數(shù)據(jù)區(qū)組的鎖;如果未獲得鎖,返回… !如果獲得鎖,處理共享區(qū)組store(bit ID)!把位值重置為0,釋放鎖在圖2B圖解說明的處理器核心實施例中,指令控制器50把用于獲得鎖的條件轉(zhuǎn)移指令分派給BEU 62以便執(zhí)行。BEU 62通過向促進(jìn)高速緩存20發(fā)出指定該位ID的存取請求,執(zhí)行該轉(zhuǎn)移指令。
如圖4的方框134中所示,響應(yīng)存取請求,高速緩存控制器94通過參考高速緩存陣列90提供的命中/失敗指示116和輸出位值114,確定用于該鎖的促進(jìn)位36是否被存儲在促進(jìn)高速緩存20內(nèi)。如果是,寄存器更新邏輯單元97利用該鎖的位值更新處理器核心14內(nèi)的一個寄存器(例如GPRF 72內(nèi)的通用寄存器或者CRF 70內(nèi)的選定寄存器)。隨后在方框140通過查詢GPRF72或CRF 70內(nèi)的寄存器的位值,確定該鎖是否自由。如果不自由,那么過程返回已說明的方框132。但是,如果成功獲得鎖,那么過程從方框140前進(jìn)到下面說明的方框150及后續(xù)方框。
返回方框134,如果處理器核心的存取請求在促進(jìn)高速緩存20中失敗(或者如果沒有實現(xiàn)促進(jìn)高速緩存20),那么過程前進(jìn)到方框136,方框136描述處理器核心14(在包括促進(jìn)高速緩存20的實施例中,是高速緩存控制器94)(通過接口邏輯單元23)在互連12上發(fā)出以鎖為目標(biāo)的唯地址讀取請求(如圖5中在附圖標(biāo)記160處表示的那樣)。響應(yīng)對唯地址讀取請求的窺探,與互連12耦接的裝置(例如處理單元10、存儲器控制器24等)提供圖5的附圖標(biāo)記162總體表示的窺探響應(yīng)。如上所述,響應(yīng)邏輯單元40編輯這些窺探響應(yīng)62,產(chǎn)生代表提供窺探響應(yīng)的窺探裝置的集體響應(yīng)的單一組合響應(yīng)(CR)164。組合響應(yīng)164被至少提供給發(fā)出以鎖為目標(biāo)的讀取請求的處理單元,如圖4的方框138所示,并且最好被提供給窺探該事務(wù)的所有主體。
如圖5中所示,和常規(guī)的鎖獲得方法相反,唯地址讀取請求160在系統(tǒng)互連12上不具有任何提供鎖值的相關(guān)數(shù)據(jù)占有期(associateddata tenure)。相反,組合響應(yīng)164向請求方處理器核心14指出是否成功獲得鎖。例如,在上述實施例中,重試(Retry)組合響應(yīng)一般指出該鎖目前被另一處理器核心14占用,其它任意組合響應(yīng)指出該鎖對請求方處理器核心14可用。就確定組合響應(yīng)來說,促進(jìn)“所有權(quán)”的最高點(即如果促進(jìn)位被存儲,則為促進(jìn)高速緩存20,否則為全局促進(jìn)工具36)最好總是能夠把促進(jìn)位給予請求者,而不考慮各個窺探器的重試(Retry)響應(yīng)。如上所述,高速緩存控制器94響應(yīng)指示鎖的獲得的組合響應(yīng),分配高速緩存陣列90內(nèi)的一個項目92。
在組合響應(yīng)未指示成功獲得鎖的情況下,過程從方框138經(jīng)方框142返回方框132。但是,在成功獲得鎖的情況下,過程前進(jìn)到方框144,方框144圖解說明了如果需要,從促進(jìn)高速緩存20解除所選定的犧牲促進(jìn)位的分配的情況。如上所述,解除分配的促進(jìn)位36可返回給全局促進(jìn)工具32或者直接被推送給另一處理單元10(或者其它組件)。
在方框144之后,過程前進(jìn)到方框150,方框150圖解說明例如通過FXU 64和FPU 68執(zhí)行指令,處理器核心14處理(例如修改)與鎖相關(guān)的共享數(shù)據(jù)。和上面所述的封鎖到不持有預(yù)約的處理器的系統(tǒng)互連的現(xiàn)有系統(tǒng)相反,數(shù)據(jù)處理系統(tǒng)8的處理器核心14可控制系統(tǒng)互連12上的請求,并且當(dāng)處理器核心持有該鎖時,能夠獲得關(guān)于其它數(shù)據(jù)區(qū)組的鎖。
在完成對與該鎖相關(guān)的共享數(shù)據(jù)區(qū)組的處理之后,處理器核心14執(zhí)行鎖釋放指令(例如保存指令),釋放該鎖,如方框152所示。之后,持有該鎖的處理器核心14(或者稍后獲得該鎖的另一處理器核心14)最終在互連12上發(fā)出更新全局促進(jìn)工具32的寫入請求,指示該鎖的釋放。之后,該過程在方框156終止。
對于某些應(yīng)用來說,對前述的鎖獲得方法和設(shè)備的進(jìn)一步改進(jìn)會是有利的。首先,可能希望集合多個促進(jìn)位36(例如鎖),以便響應(yīng)對所有促進(jìn)位36的單一鎖獲得指令或者獲得嘗試的失敗,由一個處理器核心14原子地獲得所有促進(jìn)位36。
集合促進(jìn)位36的數(shù)種實施例是可能的。例如,如果在鎖獲得序列中采用裝入預(yù)約和有條件保存指令,那么可利用多個操作數(shù)實現(xiàn)有條件保存指令,從而只有當(dāng)處理器核心持有由有條件保存指令的多個操作數(shù)指定的所有鎖的有效預(yù)約時,有條件保存指令才能成功完成(即更新鎖值)。從而,上面陳述的常規(guī)鎖獲得序列可重寫為A load X !讀取鎖值cmpi !比較,以確定鎖是否可用be A !如果鎖不可用,那么返回
B lwarx X!試圖獲得關(guān)于鎖的預(yù)約cmpi !確定是否獲得鎖的預(yù)約bc A !如果沒有獲得預(yù)約,返回C load Y !讀取鎖值cmpi !比較,以確定鎖是否可用bc C !如果鎖不可用,那么返回D lwarx Y!試圖獲得鎖的預(yù)約cmpi !確定是否獲得鎖的預(yù)約bc C !E load Z !讀取鎖值cmpi !比較,以確定鎖是否可用bc E !如果鎖不可用,那么返回F lwarx Z!試圖獲得鎖的預(yù)約cmpi !確定是否獲得鎖的預(yù)約bc E !G stwcx X,Y,Z !試圖把所有鎖一致設(shè)置成“已鎖”狀態(tài)bc A !如果有條件保存失敗,那么返回… !處理借助鎖X、Y和Z使對其訪問同步的共享數(shù)據(jù)store X!通過重置為“未鎖”狀態(tài),釋放鎖store Y!通過重置為“未鎖”狀態(tài),釋放鎖store Z!通過重置為“未鎖”狀態(tài),釋放鎖類似地,可利用指示必須一致獲得多個鎖的多個操作數(shù)(或者位掩碼)實現(xiàn)處理器核心14執(zhí)行的獲得鎖的裝入或分支鎖獲得指令和/或用于傳送鎖請求的互連操作。為了限制操作數(shù)字段的大小,在一些實施例中最好簡單指定由軟件分組的一組促進(jìn)位36(例如組1,所述組1由軟件指定為包括促進(jìn)位3、27、532和1000)。如果所有指定的促進(jìn)位都是自由的,那么所有指定的促進(jìn)位36由處理器核心14獲得,并被置為“1”;否則,對于所有指定的促進(jìn)位36,獲得鎖的嘗試失敗。
當(dāng)然,按照這種方式捆綁或集合促進(jìn)位36降低了鎖獲得請求的成功率,因為所有鎖必須同時可用。但是,對于許多種工作負(fù)荷來說,通過捆綁鎖定,仍然提高了性能,因為在需要執(zhí)行特定活動的一組鎖中的所有鎖變成可用之前,該組鎖內(nèi)的各個鎖并不被單獨持有。
以軟件管理的資源的形式實現(xiàn)全局促進(jìn)工具32有利于獲得尋址靈活性和安全性。軟件還可分割全局促進(jìn)工具32或者定義處理器核心14和促進(jìn)位36之間的結(jié)合性(affinity),從而只有特定的處理器核心14才能獲得某些促進(jìn)位36。參考圖6-8能夠更好地理解這些概念。
現(xiàn)在參見圖6,圖中圖解說明了圖1的數(shù)據(jù)處理系統(tǒng)8的例證軟件結(jié)構(gòu)的軟件層框圖。如圖所示,軟件結(jié)構(gòu)在其最低層具有操作系統(tǒng)監(jiān)控程序(或管理程序)170,操作系統(tǒng)監(jiān)控程序(或管理程序)170在同時在數(shù)據(jù)處理系統(tǒng)8內(nèi)執(zhí)行的一個或多個操作系統(tǒng)28間分配資源。分配給操作系統(tǒng)28的每個實例的資源稱為分區(qū)(partition)。從而,例如,監(jiān)控程序170可把兩個處理單元10分配給操作系統(tǒng)28a的分區(qū),把四個處理單元10分配給操作系統(tǒng)28b的分區(qū),把某些范圍的真實和有效地址空間分配給每個分區(qū)。如下參考圖7說明的那樣,全局促進(jìn)工具32內(nèi)的促進(jìn)位36包含在監(jiān)控程序170分配給每個分區(qū)的資源之內(nèi)。
在監(jiān)控程序170之上運行的是操作系統(tǒng)28和應(yīng)用程序172。本領(lǐng)域的技術(shù)人員會明白,每個操作系統(tǒng)28把資源從監(jiān)控程序170分配給它的資源庫分配給不同的操作系統(tǒng)進(jìn)程和應(yīng)用程序172,獨立控制分配給其分區(qū)的硬件的操作,并提供各種應(yīng)用程序編程接口(API),通過應(yīng)用程序編程接口,可通過其應(yīng)用程序172訪問操作系統(tǒng)服務(wù)??杀痪幊虉?zhí)行各種各樣的計算、控制、通信、數(shù)據(jù)管理和呈現(xiàn)功能中的任意一種功能的應(yīng)用程序172包含許多用戶級進(jìn)程174。
現(xiàn)在參見圖7,圖中描述了分配存儲映像資源,例如全局促進(jìn)工具32內(nèi)的促進(jìn)位36的方法的高級邏輯流程圖。圖7中描述的過程(由每個操作系統(tǒng)28獨自執(zhí)行)采取(但是不要求)圖6中圖解說明的例證軟件結(jié)構(gòu)。
如圖所示,在數(shù)據(jù)處理系統(tǒng)8的啟動之后,該過程開始于方框180,之后前進(jìn)到方框182,方框182圖解說明了向監(jiān)控程序170請求鎖的分配的操作系統(tǒng)28。所述請求可指定,例如請求的鎖數(shù)目。如方框184所示,響應(yīng)所述請求(以及來自其它操作系統(tǒng)28的請求),監(jiān)控程序170把一批鎖(即特定促進(jìn)位36)從全局促進(jìn)工具32分配給操作系統(tǒng)28。監(jiān)控程序170可把所有促進(jìn)位36分配為鎖,或者如上所述,可把一些促進(jìn)位36分配為鎖,并為將其它促進(jìn)位36保留給其它類型的組件間協(xié)調(diào)。
該過程從方框184前進(jìn)到方框186和188,方框186和188圖解說明了從其鎖庫分配鎖的操作系統(tǒng)28。根據(jù)本發(fā)明的優(yōu)選實施例,操作系統(tǒng)28至少可從其鎖庫分配兩種鎖旁路鎖和受保護(hù)鎖。這里,旁路鎖被定義為在不實現(xiàn)存取保護(hù)的情況下,可被進(jìn)程訪問的鎖,從而繞過通常由地址轉(zhuǎn)換工具執(zhí)行的存取保護(hù)。相反,受保護(hù)鎖這里被定義為只有結(jié)合存取保護(hù),才能被進(jìn)程訪問的鎖。
如方框186中所示,操作系統(tǒng)28把旁路鎖從其鎖庫分配給操作系統(tǒng)(例如內(nèi)核)進(jìn)程,并且可選地分配給應(yīng)用程序172。操作系統(tǒng)28分配給應(yīng)用程序172的旁路鎖最好分別被分配給每個應(yīng)用程序的單一進(jìn)程(例如應(yīng)用程序根進(jìn)程(root process)),以便促進(jìn)良性(well-behaved)應(yīng)用程序。操作系統(tǒng)28還把受保護(hù)鎖從其鎖庫分配給應(yīng)用程序172,最好以分配給應(yīng)用程序172的每頁非真實(例如虛擬)地址空間固定數(shù)目的受保護(hù)鎖的形式,分配給應(yīng)用程序172。每個虛擬存儲頁的鎖的數(shù)目可由操作系統(tǒng)28或者由處理器核心14內(nèi)的模式位42(參見圖1)確定,以便允許硬件優(yōu)化鎖分配。本領(lǐng)域的技術(shù)人員會認(rèn)識到,對于將在每頁分配的多個鎖來說,當(dāng)訪問不同的鎖定時,最好避免不必要地滾動(rolling)翻譯后援緩沖器(TLB)。在旁路鎖和受保護(hù)鎖的分配之后,在方框190終止圖7中圖解說明的過程。
現(xiàn)在參見圖8,圖中圖解說明了圖2A和2B的DMMU 80的更詳細(xì)方框圖,圖8描述了當(dāng)繞過訪問保護(hù)時,加速對存儲映像資源,例如全局促進(jìn)工具32的存取請求的方式。如圖所示,DMMU 80包括與地址轉(zhuǎn)換工具耦接的旁路邏輯單元212,所述地址轉(zhuǎn)換工具包括翻譯后援緩沖器(TLB)214和塊地址表(BAT)216。本領(lǐng)域的技術(shù)人員眾所周知,TLB214是最近訪問的頁框表(PFT)項目的高速緩存,訪問所述頁框表項目,以便把虛擬地址空間的均勻(uniform)頁面內(nèi)的非真實(例如有效或虛擬)地址轉(zhuǎn)換成真實地址。BAT 26類似地通過訪問緩存的表項目,把非真實地址轉(zhuǎn)換成真實地址,但是被用于轉(zhuǎn)換落入虛擬地址空間的非均勻(而不是均勻(uniform))塊內(nèi)的非真實地址。TLB 214和BAT 216都借助PFT項目內(nèi)的存取保護(hù)位(對于基于PowerPC的處理器通常稱為WIMG位),提供存取保護(hù)。
如圖8中所示,DMMU 80從LSU(和/或圖2B的實施例中的BEU 62)接收訪問存儲映像資源的請求地址200。請求地址200包括包含頁字段208的低位部分和包含管理程序字段202、OS字段204和進(jìn)程字段206的高位部分。管理程序字段202、OS字段204和進(jìn)程字段206一般由管理程序170、操作系統(tǒng)28和進(jìn)程(例如應(yīng)用程序進(jìn)程174)根據(jù)分配給每個軟件,并由各個軟件控制的真實和/或虛擬地址空間來確定。在OS字段204內(nèi)設(shè)置旁路字段210,當(dāng)請求地址200指定分配給任意應(yīng)用程序或操作系統(tǒng)進(jìn)程的旁路鎖時,旁路字段210可被已被分配旁路鎖的所述進(jìn)程設(shè)置成旁路狀態(tài)(例如“1”)。
響應(yīng)請求地址200的接收,旁路邏輯單元212通過參考旁路字段210,確定是否應(yīng)允許訪問請求繞過TLB 214和BAT 216提供的存取保護(hù)。如果是,那么請求地址200可作為真實地址218直接傳送給存儲映像資源(例如促進(jìn)高速緩存20或者系統(tǒng)存儲器26),以便啟動訪問。從而,具有設(shè)置成旁路狀態(tài)的旁路字段210的請求地址200繞過地址轉(zhuǎn)換和存取保護(hù),使相關(guān)訪問請求的訪問等待時間至少減少一個(一般多個)處理器周期。在請求地址200的旁路字段210不被設(shè)置成旁路狀態(tài)的情況下,表示需要地址轉(zhuǎn)換和存取保護(hù),通過參考TLB 214或BAT 216轉(zhuǎn)換包括管理程序字段202、OS字段204和進(jìn)程字段206的請求地址200的高位部分,從而獲得真實地址218的高位部分。與地址轉(zhuǎn)換同時,TLB 214或BAT 216實現(xiàn)存取保護(hù),確保允許發(fā)出訪問請求的進(jìn)程訪問所請求的鎖。之后,DMMU80傳送真實地址218,啟動對存儲映像資源的訪問。
雖然具體參考鎖,更一般地說,參考存儲映像全局促進(jìn)工具說明了圖7-8,但是應(yīng)認(rèn)識到參考圖7和8描述的技術(shù)一般可應(yīng)用于加速對任何存儲映像工具的訪問,不論所述存儲映像工具是否駐留在存儲設(shè)備中。
雖然參考優(yōu)選實施例圖示并描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員會明白,在不脫離本發(fā)明的精神和范圍的情況下,可在形式和細(xì)節(jié)方面做出各種變化。例如,雖然已參考其中促進(jìn)位被用作鎖的特定實施例說明了本發(fā)明,但是本發(fā)明顯然并不局限于這種實施例,相反可廣泛應(yīng)用于多處理器數(shù)據(jù)處理系統(tǒng)中的組件間協(xié)調(diào)。另外,雖然在一些情況下,本發(fā)明的描述假定必須獨占持有某些促進(jìn)位(例如某些鎖),但是應(yīng)理解,促進(jìn)(promotion)的概念包括多個組件同時持有特定促進(jìn)位,于是能夠執(zhí)行與該促進(jìn)位相關(guān)的操作的能力。此外,所選定的促進(jìn)位的獨占性可局限在一組特定的處理單元中,或者局限在若干層次總線中的一條特定總線上。
此外,雖然已參考執(zhí)行控制本發(fā)明的功能的軟件的計算機系統(tǒng),說明了本發(fā)明的各個方面,但是本發(fā)明顯然也可實現(xiàn)成供數(shù)據(jù)處理系統(tǒng)之用的程序產(chǎn)品。定義本發(fā)明的功能的程序可通過各種信號承載媒介傳送給數(shù)據(jù)處理系統(tǒng),所述信號承載媒介包括(但不限于)不可重寫存儲媒介(例如CD-ROM)、可重寫存儲媒介(例如軟盤或硬盤驅(qū)動器)和諸如數(shù)字和模塊網(wǎng)絡(luò)之類的通信媒介。于是應(yīng)明白,當(dāng)攜帶或者對控制本發(fā)明的功能的計算機可讀指令編碼時,這樣的信號承載媒介構(gòu)成本發(fā)明的備選實施例。
權(quán)利要求
1.在數(shù)據(jù)處理系統(tǒng)內(nèi)分配存儲映像工具的方法,所述方法包括向操作系統(tǒng)分配工具庫,其中所述工具庫內(nèi)的每個工具具有相關(guān)的真實地址;操作系統(tǒng)從所述工具庫向第一進(jìn)程分配至少一個旁路工具,其允許由第一進(jìn)程在不必首先獲得非真實地址的轉(zhuǎn)換的情況下,依據(jù)其相關(guān)真實地址直接訪問;和操作系統(tǒng)從所述工具庫向第二進(jìn)程分配至少一個受保護(hù)工具,只有通過轉(zhuǎn)換非真實地址,獲得與受保護(hù)工具相關(guān)的真實地址,第二進(jìn)程才可訪問該受保護(hù)工具。
2.按照權(quán)利要求1所述的方法,其中數(shù)據(jù)處理系統(tǒng)包括若干同時運行的操作系統(tǒng),其中分配工具庫的所述步驟包括操作系統(tǒng)管理程序把若干工具庫中的相應(yīng)工具庫分配給所述若干操作系統(tǒng)中的每個操作系統(tǒng)。
3.按照權(quán)利要求1所述的方法,其中從工具庫向第一進(jìn)程分配至少一個旁路工具的步驟包括操作系統(tǒng)向應(yīng)用程序進(jìn)程分配所述旁路工具。
4.按照權(quán)利要求1所述的方法,其中從工具庫分配至少一個受保護(hù)工具包括在分配給第二進(jìn)程的每個虛擬存儲頁內(nèi)分配相同數(shù)目的工具。
5.按照權(quán)利要求4所述的方法,還包括所述操作系統(tǒng)參考硬件模式位,確定所述相同數(shù)目的工具。
6.按照權(quán)利要求1所述的方法,其中所述工具庫包括全局促進(jìn)工具庫;和向操作系統(tǒng)分配工具庫包括向操作系統(tǒng)分配全局促進(jìn)工具庫。
7.按照權(quán)利要求6所述的方法,其中所述全局促進(jìn)工具庫包括鎖庫;和向操作系統(tǒng)分配全局促進(jìn)工具庫包括向操作系統(tǒng)分配鎖庫。
8.在數(shù)據(jù)處理系統(tǒng)內(nèi)訪問存儲映像工具的方法,所述方法包括接收訪問存儲映像工具的請求的請求地址,所述請求地址包括旁路字段;參考所述旁路字段,確定是否應(yīng)保護(hù)對所述存儲映像工具的訪問;響應(yīng)應(yīng)保護(hù)對所述存儲映像工具的訪問的判斷,利用采用保護(hù)的轉(zhuǎn)換工具,轉(zhuǎn)換所述請求地址,獲得真實地址;和響應(yīng)對所述存儲映像工具的訪問不需要保護(hù)的判斷,繞過所述轉(zhuǎn)換工具,并利用所述請求地址作為真實地址,訪問所述存儲映像工具。
9.按照權(quán)利要求1所述的方法,其中接收請求地址包括接收訪問全局促進(jìn)工具的請求的請求地址。
10.按照權(quán)利要求9所述的方法,其中接收請求地址包括接收訪問鎖工具的請求地址。
11.按照權(quán)利要求8所述的方法,其中利用轉(zhuǎn)換工具轉(zhuǎn)換所述請求地址包括利用翻譯后援緩沖器轉(zhuǎn)換所述請求地址。
12.一種數(shù)據(jù)處理系統(tǒng),包括執(zhí)行資源;和把非真實地址轉(zhuǎn)換成真實地址的地址轉(zhuǎn)換工具;以及存儲裝置,所述存儲裝置包括包括若干存儲位置的物理存儲器,每個存儲位置具有若干真實地址中與其相關(guān)的一個相應(yīng)真實地址;從其中每個工具具有相關(guān)真實地址的存儲映像工具庫,向第一進(jìn)程分配至少一個旁路工具的操作系統(tǒng),該旁路工具允許由第一進(jìn)程在不必首先獲得非真實地址的轉(zhuǎn)換的情況下,依據(jù)其相關(guān)真實地址直接訪問,其中該操作系統(tǒng)從所述工具庫向第二進(jìn)程分配至少一個受保護(hù)工具,只有通過轉(zhuǎn)換非真實地址,獲得與受保護(hù)工具相關(guān)的真實地址,第二進(jìn)程才可訪問該受保護(hù)工具。
13.按照權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中操作系統(tǒng)包括存儲裝置內(nèi)的若干操作系統(tǒng)之一;所述執(zhí)行資源包括同時執(zhí)行所述若干操作系統(tǒng)的若干處理單元;和所述存儲裝置還包括由所述執(zhí)行資源執(zhí)行的操作系統(tǒng)管理程序,其中所述操作系統(tǒng)管理程序把若干工具庫中的相應(yīng)工具庫分配給所述若干操作系統(tǒng)中的每個操作系統(tǒng)。
14.按照權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),所述存儲裝置還包括包含一個或多個應(yīng)用進(jìn)程的應(yīng)用程序,所述一個或多個應(yīng)用進(jìn)程包括第一進(jìn)程。
15.按照權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),所述非真實地址包括虛擬地址空間內(nèi)的虛擬地址,所述虛擬地址空間包括若干虛擬存儲頁,其中操作系統(tǒng)在分配給第二進(jìn)程的每個虛擬存儲頁內(nèi)分配相同數(shù)目的工具。
16.按照權(quán)利要求15所述的數(shù)據(jù)處理系統(tǒng),還包括與所述執(zhí)行資源耦接的硬件模式位,其中所述操作系統(tǒng)參考硬件模式位,確定所述相同數(shù)目的工具。
17.按照權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中所述工具庫包括所述存儲器內(nèi)的全局促進(jìn)工具庫。
18.按照權(quán)利要求17所述的數(shù)據(jù)處理系統(tǒng),其中所述全局促進(jìn)工具庫包括鎖庫。
19.一種數(shù)據(jù)處理系統(tǒng),包括執(zhí)行資源;把非真實地址轉(zhuǎn)換成真實地址,并實現(xiàn)存取保護(hù)的轉(zhuǎn)換工具;和耦接在所述執(zhí)行資源和所述轉(zhuǎn)換工具之間的旁路邏輯單元,其中,響應(yīng)對訪問存儲映像工具的請求的包括旁路字段的請求地址的接收,所述旁路邏輯單元參考所述旁路字段,確定是否應(yīng)保護(hù)對所述存儲映像工具的訪問,其中,響應(yīng)應(yīng)保護(hù)對所述存儲映像工具的訪問的判斷,所述旁路邏輯單元把所述請求地址傳給所述轉(zhuǎn)換工具,以便進(jìn)行訪問保護(hù)并在所述存儲映像工具的訪問之前轉(zhuǎn)換成真實地址,其中,響應(yīng)對所述存儲映像工具的訪問不需要保護(hù)的判斷,所述旁路邏輯單元繞過所述轉(zhuǎn)換工具,并把所述請求地址作為真實地址傳送給所述存儲映像工具。
20.按照權(quán)利要求19所述的數(shù)據(jù)處理系統(tǒng),還包括存儲映像工具,其中存儲映像工具包括全局促進(jìn)工具。
21.按照權(quán)利要求20所述的數(shù)據(jù)處理系統(tǒng),其中全局促進(jìn)工具包括鎖庫。
22.按照權(quán)利要求19所述的數(shù)據(jù)處理系統(tǒng),其中所述轉(zhuǎn)換工具包括翻譯后援緩沖器。
23.按照權(quán)利要求19所述的數(shù)據(jù)處理系統(tǒng),還包括包含存儲映像工具的存儲器。
24.一種程序產(chǎn)品,包括數(shù)據(jù)處理系統(tǒng)可用的介質(zhì);和編碼在所述介質(zhì)內(nèi)的用于數(shù)據(jù)處理系統(tǒng)的操作系統(tǒng),其中所述操作系統(tǒng)從其中每個工具具有相關(guān)真實地址的存儲映像工具庫中,向第一進(jìn)程分配至少一個旁路工具,其允許由第一進(jìn)程在不必首先獲得非真實地址的轉(zhuǎn)換的情況下,依據(jù)其相關(guān)真實地址直接訪問,其中,所述操作系統(tǒng)從所述存儲映像工具庫向第二進(jìn)程分配至少一個受保護(hù)工具,只有通過轉(zhuǎn)換非真實地址,獲得與受保護(hù)工具相關(guān)的真實地址,第二進(jìn)程才可訪問該受保護(hù)工具。
25.按照權(quán)利要求24所述的程序產(chǎn)品,其中所述第一進(jìn)程包括應(yīng)用程序的進(jìn)程。
26.按照權(quán)利要求24所述的程序產(chǎn)品,所述非真實地址包括虛擬地址空間內(nèi)的虛擬地址,所述虛擬地址空間包括若干虛擬存儲頁,其中操作系統(tǒng)在分配給第二進(jìn)程的每個虛擬存儲頁內(nèi)分配相同數(shù)目的工具。
27.按照權(quán)利要求24所述的程序產(chǎn)品,其中所述工具庫包含存儲器內(nèi)的全局促進(jìn)工具庫。
28.按照權(quán)利要求27所述的程序產(chǎn)品,其中所述全局促進(jìn)工具程序庫包含鎖庫。
全文摘要
數(shù)據(jù)處理系統(tǒng)內(nèi)分配和訪問存儲映像工具的方法、設(shè)備和系統(tǒng)。在數(shù)據(jù)處理系統(tǒng)內(nèi),工具庫被分配給操作系統(tǒng),其中所述工具庫內(nèi)的每個工具具有相關(guān)的真實地址。操作系統(tǒng)從所述工具庫向第一進(jìn)程分配至少一個旁路工具,其允許由第一進(jìn)程在不必首先獲得非真實地址的轉(zhuǎn)換的情況下,依據(jù)其相關(guān)真實地址直接訪問。操作系統(tǒng)還從所述工具庫向第二進(jìn)程分配至少一個受保護(hù)工具,只有通過轉(zhuǎn)換非真實地址,獲得與受保護(hù)工具相關(guān)的真實地址,第二進(jìn)程才可訪問該受保護(hù)工具。根據(jù)請求地址內(nèi)的旁路字段的狀態(tài),對工具的訪問或者受保護(hù)或者不受保護(hù)。
文檔編號G06F12/00GK1492332SQ0315945
公開日2004年4月28日 申請日期2003年9月25日 優(yōu)先權(quán)日2002年10月10日
發(fā)明者拉維·K·阿里米利, 德里克·E·威廉斯, E 威廉斯, 拉維 K 阿里米利 申請人:國際商業(yè)機器公司