專利名稱:用于串行化處理的診斷指令的制作方法
技術領域:
本發(fā)明主要涉及計算環(huán)境中的處理,并且具體地涉及多處理計算環(huán)境中的串行化處理。
背景技術:
通常,在以由紐約州Armonk市的國際商業(yè)機器公司提供的;z/Arc丨丨丨tectu re 為基礎的機器中,當以LPAR(邏輯分區(qū)模式)或z/VM 運行程序(在本文中被稱為客戶機)時,客戶機指令通過硬件或固件執(zhí)行。這種指令的執(zhí)行經常包括操作數(shù)地址的轉換以及從這些地址獲取數(shù)據或者向這些地址存儲數(shù)據。在執(zhí)行每一條指令時,硬件保證任何無效的頁表項(IPTE)、動態(tài)地址轉換(DAT)表項(IDTE)或者來自另一處理器并且可能使與該指令相關聯(lián)的轉換無效的比較并交換和刪除(CSP/G)請求等待,直到指令完成。類似地,直到·IPTE、IDTE或CSP/G操作完成之前都不進行可應用于待決IPTE、IDTE或CSP/G的轉換或存儲訪問。存在有LPAR或Z/VM 管理程序需要代表客戶機模擬指令的情況。為了做到這一點,管理程序可能需要人工轉換與指令相關聯(lián)的操作數(shù)地址(也就是執(zhí)行硬件未知的多步轉換)并且根據這些轉換來進行隨后的存儲器訪問。為了保證在由一個處理器以客戶機多處理(MP)配置發(fā)出的IPTE、IDTE、CSP/G以及由管理程序代表另一處理器以相同配置執(zhí)行的指令模擬之間不出現(xiàn)沖突,使用了單聯(lián)鎖。被稱為IPTE聯(lián)鎖的這種鎖駐留在系統(tǒng)控制區(qū)域(SCA)內,是一種在所有MP客戶機之間共享的用于特定虛擬配置的控制塊。管理程序將在指令模擬期間占用該鎖,并且固件將在執(zhí)行IPTE、IDTE或CSP/G時占用該鎖。為了提高性能,單鎖已被分為兩部分的共享鎖。IPTE聯(lián)鎖的一部分是由管理程序或主機保留的共享鎖并且在指令模擬期間由管理程序占用;另一部分則是由固件代表客戶機保留并且在執(zhí)行IPTE、IDTE或CSP/G時占用。每一個鎖都是當前占用鎖的主機或客戶機處理器的計數(shù)。為了確保鎖內的一致性,管理程序或固件只有在另一個鎖(相應地是客戶機或主機)未被占用時才會利用比較并交換(例如比較并交換(CSG)指令)來增加適當?shù)逆i計數(shù)(相應地是主機或客戶機)。如果主機判定IPTE聯(lián)鎖是由客戶機占用,那么它就在繼續(xù)進行指令模擬之前一直等待直到該鎖可用為止;如果客戶機檢測到主機鎖已被占用,那么它就(用截取指令)截取返回主機。在大型單一映像系統(tǒng)中,執(zhí)行比較并交換的開銷可能會變得相當大。當處理器在執(zhí)行IPTE、IDTE或CSP/G時,它執(zhí)行廣播快速靜默操作以通知無效系統(tǒng)內的所有處理器。在系統(tǒng)內對任一分區(qū)只允許一個快速靜默操作。如果處理器發(fā)出快速靜默操作并且靜默硬件已經忙于另一請求,那么該請求即被拒絕。在這種大型單一映像系統(tǒng)中運行靜默請求量大的工作負荷時,拒絕會很頻繁。為了確保正常運行,IPTE聯(lián)鎖應在發(fā)出快速靜默請求之前獲得并隨即在操作之后釋放,即使在請求被拒絕時也是如此。每一次比較并交換都造成獨占被獲取的相關緩存行,并且在大型多節(jié)點單一映像的機器中,對此的系統(tǒng)級懲罰可能會相當大。
Blandy于1998年9月15日授予的題為“Pending PageRelease”的美國專利US5809551介紹了一種用于管理計算機系統(tǒng)中虛擬存儲頁面的方法、裝置和制品,通過由系統(tǒng)中的客戶機程序延遲請求釋放頁面之后的實際頁面釋放來得到待決的頁面釋放。建立待決的頁面釋放得到了待決頁面釋放的記錄項,留下了分配給客戶機的頁面(一個或多個)。系統(tǒng)可以隨時釋放記錄中的頁面??蛻魴C可以請求取消待決的頁面釋放,在此情況下如果被請求頁面尚未被系統(tǒng)釋放,那就從記錄中刪除被請求的頁面以供客戶機重新使用。鍵值設定、頁面清理或格式化以及頁面驗證或分級都是取消請求中可以包含的可選服務。建立和取消優(yōu)選地由客戶機利用截取指令DIAGNOSE請求,并且由主機操作系統(tǒng)中的存儲管理器組件執(zhí)行。使用DIAGNOSE指令請求取消待決的頁面釋放,不過也可以用專用的機器指令代替。系統(tǒng)處理待決頁面釋放請求的記錄以按常規(guī)釋放待決的頁面。Farrell 等人于 2004 年 4 月 I 日被授予的題為 “Method andApparatus forControlling the Execution of a Broadcast Instructionon a Guest Processor of aGuest Multiprocessing Configuration”的公開號為 2004/0064618A1 的美國專利,介紹了一種用于管理在客戶機處理器上執(zhí)行要求在客戶機其他處理器上的對應操作的廣播指令的方法和裝置。信息處理系統(tǒng)的多個處理器中的每一個都可有效用作在主機上運行的主機 程序控制下的主機處理器或者用作在客戶機上運行的客戶機程序控制下的客戶機處理器??蛻魴C由主機上運行的主機程序定義并且包含多個這樣的構成客戶機多處理結構的客戶機處理器。鎖被定義用于客戶機,包含有其是否被主機程序中的主機鎖擁有者占用的標識以及作為客戶機鎖擁有者占用鎖的處理器數(shù)量的計數(shù)。在解碼用作客戶機處理器的處理器上執(zhí)行的廣播指令后,測試鎖以判定其是否被主機鎖擁有者占用。如果鎖已被主機鎖擁有者占用,那么就認可截取指令并且終止指令的執(zhí)行。如果鎖并未被主機鎖擁有者占用,那么就更新鎖以指示該鎖已被用作共享鎖擁有者的客戶機處理器占用,執(zhí)行指令,并且隨后第二次更新該鎖以指示該鎖不再被用作共享鎖擁有者的客戶機處理器占用。
發(fā)明內容
通過提供用于執(zhí)行診斷指令以進行串行化處理的計算機程序產品來克服現(xiàn)有技術中的缺點并提供多種優(yōu)點。計算機程序產品包括可由處理電路讀取的計算機可讀取存儲介質以及用于由處理電路執(zhí)行以供實施方法的存儲指令。所述方法包括例如獲取用于執(zhí)行的機器指令,機器指令根據計算機架構被定義用于計算機執(zhí)行,機器指令包括例如表示診斷指令的操作碼字段;表示第一位置的子碼字段,其內容包括在執(zhí)行診斷指令時使用的子碼;表示第二位置的基址字段,其內容被加入移位字段的內容中以獲得用于表示將診斷指令用于串行化處理的操作碼擴展;然后執(zhí)行由操作碼擴展指示的機器指令,執(zhí)行包括對預定值的子碼做出響應啟動計算環(huán)境中的處理器靜默;確定處理器已靜默;然后響應于靜默的處理器完成診斷指令的執(zhí)行。本文中還介紹并要求保護涉及本發(fā)明一種或多種應用的方法和系統(tǒng)。通過本發(fā)明的技術可以實現(xiàn)更多的特征和優(yōu)點。本文中詳細介紹了本發(fā)明其他的實施例和應用并且應被認為是要求保護的本發(fā)明的一部分。
在說明書結束部分的權利要求中作為示例具體列出并明確地要求保護本發(fā)明的一種或多種應用。本發(fā)明的上述及其他的目標、特征和優(yōu)點將根據以下結合附圖給出的詳細說明變得顯而易見,在附圖中圖I示出了加入并使用本發(fā)明一個或多個方面的計算環(huán)境的一個實施例;圖2示出了加入并使用本發(fā)明一個或多個方面的計算環(huán)境的另一個實施例;圖3示出了加入并使用本發(fā)明一個或多個方面的模擬計算環(huán)境的一個實施例;圖4示出了根據本發(fā)明的一個方面的用于串行化客戶機轉換表用途并且在客戶機和主機之間進行更新的IPTE聯(lián)鎖的一個實施例;圖5A-5B示出了與IPTE聯(lián)鎖的常規(guī)管理程序處理相關聯(lián)的邏輯塊的一個實施例;·
圖6A-6B示出了與IPTE聯(lián)鎖的常規(guī)客戶機處理相關聯(lián)的邏輯塊的一個實施例;圖7A-7B示出了根據本發(fā)明的一個方面的與IPTE聯(lián)鎖可選方案的管理程序處理相關聯(lián)的邏輯塊的一個實施例;圖8A-8B示出了根據本發(fā)明的一個方面的與IPTE聯(lián)鎖可選方案的客戶機處理相關聯(lián)的邏輯塊的一個實施例;圖9A示出了根據本發(fā)明的一個方面的所用診斷(DIAG)指令的一個實施例;圖9B-9C示出了根據本發(fā)明的一個方面的與用作IPTE聯(lián)鎖可選方案一部分的DIAG指令相關聯(lián)的邏輯塊的一個實施例;圖10示出了根據本發(fā)明的一個方面的與處理由DIAG指令發(fā)出的靜默相關聯(lián)的邏輯塊的一個實施例;圖IlA示出了根據本發(fā)明的一個方面的所用快速靜默命令的一個示例;圖IlB示出了根據本發(fā)明的一個方面所用完全常規(guī)(或全系統(tǒng))靜默命令的一個示例;圖12示出了根據本發(fā)明的一個方面的計算機系統(tǒng)中采用靜默請求處理的處理器和系統(tǒng)控制器的更加詳細的實施例;圖13示出了加入本發(fā)明一個或多個方面的計算機程序產品的一個實施例;圖14示出了加入并使用本發(fā)明一個或多個方面的主計算機系統(tǒng)的一個實施例;圖15示出了加入并使用本發(fā)明一個或多個方面的計算機系統(tǒng)的另一個示例;圖16示出了加入并使用本發(fā)明一個或多個方面的包括計算機網絡的計算機系統(tǒng)的另一個不例;圖17示出了加入并使用本發(fā)明一個或多個方面的計算機系統(tǒng)中各種部件的一個實施例;圖18A示出了加入并使用本發(fā)明一個或多個方面的圖17的計算機系統(tǒng)中執(zhí)行單元的一個實施例;圖18B示出了加入并使用本發(fā)明一個或多個方面的圖17的計算機系統(tǒng)中分支單元的一個實施例;以及圖18C示出了加入并使用本發(fā)明一個或多個方面的圖17的計算機系統(tǒng)中載入/存儲單元的一個實施例。
具體實施例方式根據本發(fā)明的一個方面,提供了一種系統(tǒng)串行化能力用于在允許多處理器的那些環(huán)境中幫助處理以更新相同的資源(例如地址轉換表)。具體地,在一個示例中,系統(tǒng)串行化能力被用于在客戶機和主機使用鎖的多處理環(huán)境中幫助處理以提供串行化。作為示例,在主機獲得鎖(例如IPTE聯(lián)鎖)之后使用系統(tǒng)串行化功能以完全消除對客戶機獲取鎖的需要。盡管這樣可能會增加在與獲取鎖相關聯(lián)的主機看來的開銷,這是相對少見的情況,但是完全消除了在由客戶機獲取IPTE聯(lián)鎖的更加常見情況中的鎖獲取。這樣即使不是全部也是幾乎完全消除了對IPTE聯(lián)鎖的爭用。參照圖I介紹加入并使用本發(fā)明一個或多個方面的計算環(huán)境100的一個實施例。計算環(huán)境100例如以由紐約州Armonk市的國際商業(yè)機器公司提供的z/Architecture 為基礎。z/Architecture 在2009年2月出版的IBM第SA22-7832-07號公開出版物第8 版的題為 “z/Architecture Principles of Operation” 的IBM .公開出版物中有所介紹。在一個示例中,基于z/Architecture 的計算環(huán)境包括由紐約州Armonk市的國際商業(yè)機器公司提供的Systemz 服務器。IBM 、z/Architecture 、z/VM 和 System z 是紐約州Armonk市國際商業(yè)機器公司的注冊商標。本文中使用的其他名稱也可能是國際商業(yè)機器公司或其他公司的注冊商標或商標。作為一個示例,計算環(huán)境100包括耦合至系統(tǒng)控制器112的中央處理器聯(lián)合體(CPC) 102。中央處理器聯(lián)合體102包括例如一個或多個分區(qū)104 (例如邏輯分區(qū)LPl-LPn)、一個或多個中央處理器106 (例如CPl-CPn)以及管理程序108 (例如邏輯分區(qū)管理器),以下介紹其中的每一項內容。每一個邏輯分區(qū)104都能夠用作獨立系統(tǒng)。也就是說,每一個邏輯分區(qū)104都可以單獨復位、如果需要的話由操作系統(tǒng)110初始載入以及以不同的程序運行。邏輯分區(qū)104內運行的操作系統(tǒng)110或應用程序看上去可以使用全部和完整的系統(tǒng),但是實際上其中只有一部分可用。硬件和特許內部代碼(通常被稱為微代碼或固件)的組合保持在一個邏輯分區(qū)104內的程序不受不同邏輯分區(qū)104內程序的干擾。這就允許幾個不同的邏輯分區(qū)104以分時的方式在單個或多個物理處理器上工作。在本具體示例中,每一個邏輯分區(qū)104都具有常駐操作系統(tǒng)(OS) 110,其對于一個或多個邏輯分區(qū)104來說可以有所不同。在一個實施例中,操作系統(tǒng)110是由紐約州Armonk市的國際商業(yè)機器公司提供的Z/OS 操作系統(tǒng)。z/OS 是紐約州Armonk市國際商業(yè)機器公司的注冊商標。中央處理器106是分配給邏輯分區(qū)104的物理處理器資源。例如,邏輯分區(qū)104包括一個或多個邏輯處理器,其中每一個都代表分配給該分區(qū)的全部或共享的物理處理器資源106。特定分區(qū)104的邏輯處理器可以專用于該分區(qū)以使下層的處理器資源被保留用于該分區(qū);或者與另一分區(qū)共享以使下層的處理器資源潛在地可用于另一分區(qū)。邏輯分區(qū)104由通過處理器106上運行的固件實現(xiàn)的管理程序108管理。邏輯分區(qū)104和管理程序108均包括駐留在與中央處理器106相關聯(lián)的中央存儲器相應部分內的一個或多個程序。管理程序108的一個示例是由紐約州Armonk市的國際商業(yè)機器公司提供的處理器資源 / 系統(tǒng)管理器(Processor Resource/Systems Manager ) (PR/SM)。如本文中所用,固件包括例如處理器中的微代碼、固件和/或宏代碼。其包括例如實現(xiàn)更高級別機器代碼時所用的硬件級指令和/或數(shù)據結構。在一個實施例中,其包括例如通常作為微代碼傳輸?shù)膶S写a,其中包含專用于底層硬件并控制操作系統(tǒng)訪問系統(tǒng)硬件的信任軟件或微代碼。耦合至中央處理器聯(lián)合體的系統(tǒng)控制器112包括負責用于在不同處理器發(fā)出的請求之間仲裁的集中邏輯塊。例如,當系統(tǒng)控制器112接收到靜默請求時,它判定請求者是用于該請求的啟動處理器并且其他處理器是接收處理器;它廣播消息;否則就處理請求。這將在下文中進行更加詳細的介紹。參照圖2介紹加入并使用本發(fā)明一個或多個方面的計算環(huán)境的另一個示例。在本示例中,計算環(huán)境200包括耦合至系統(tǒng)控制器240的中央處理器聯(lián)合體(CPC) 202。中央處理器聯(lián)合體(CPC) 202包括如上所述的例如一個或多個分區(qū)204 (例如邏輯分區(qū)LPl-LPn)、一個或多個中央處理器230 (例如CPl-CPn)以及第一級管理程序208 (例如邏輯分區(qū)管理器)。在該具體示例中,邏輯分區(qū)I (LPl) 220具有駐留的操作系統(tǒng)222并且邏輯分區(qū)2 (LP2) 224運行第二級管理程序2210,其依次建立虛擬機(例如VMl-VMx) 212,每一個虛 擬機都運行其自身的駐留操作系統(tǒng)214??梢杂腥我鈹?shù)量的邏輯分區(qū)運行第二級管理程序。在一個實施例中,管理程序2210是由紐約州Armonk市的國際商業(yè)機器公司提供的Z/VM 管理程序。Z/VM 是紐約州Armonk市國際商業(yè)機器公司的注冊商標。另外,在各個邏輯分區(qū)內運行的駐留操作系統(tǒng)可以不同,并且當在第二級管理程序下運行時,單個分區(qū)內的駐留操作系統(tǒng)也可以不同。在一個實施例中,操作系統(tǒng)222是由紐約州Armonk市的國際商業(yè)機器公司提供的Z/OS 操作系統(tǒng);并且操作系統(tǒng)214是Linux0類似于中央處理器106,中央處理器230是分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)I (LPl) 220包括一個或多個邏輯處理器,其中每一個都代表分配給該分區(qū)的全部或共享的物理處理器資源230。特定分區(qū)的邏輯處理器可以專用于該分區(qū)以使其中的處理器資源被保留用于該分區(qū);或者與另一分區(qū)共享以使其中的處理器資源潛在地可用于另一分區(qū)。當?shù)诙壒芾沓绦?210在一個邏輯分區(qū)(例如LP2224)內運行時,它能夠向該分區(qū)內虛擬機中運行的操作系統(tǒng)214提供與管理程序208向邏輯分區(qū)204提供的資源相同的虛擬化資源。與在第一級一樣,每一個虛擬機都可以包括多個虛擬處理器。術語“虛擬CPU ”在本文中被用于表示邏輯或虛擬處理器。邏輯分區(qū)204由管理程序208和210管理。邏輯分區(qū)204和管理程序208 (由固件實現(xiàn))均包括駐留在與中央處理器相關聯(lián)的中央存儲器相應部分內的一個或多個程序。管理程序208的一個示例是由紐約州Armonk市的國際商業(yè)機器公司提供的處理器資源/系統(tǒng)管理器(Processor Resource/Systems Manager ) (PR/SM)。耦合至中央處理器聯(lián)合體的系統(tǒng)控制器240包括負責用于在不同處理器發(fā)出的請求之間仲裁的集中邏輯塊。例如,當系統(tǒng)控制器240接收到靜默請求時,它判定請求者是用于該請求的啟動處理器并且其他處理器是接收處理器;它廣播消息;否則就處理請求。圖3中示出了加入本發(fā)明一個或多個方面的計算環(huán)境的另一個示例。在該示例中,提供了模擬主機架構的主計算機系統(tǒng)302的模擬主計算機系統(tǒng)300。在模擬主計算機系統(tǒng)300中,主機處理器(CPU) 304是模擬主機處理器(或虛擬主機處理器)并且包括模擬處理器306,其具有不同于主計算機302中處理器所用的原生指令集架構。模擬主計算機系統(tǒng)300具有可供模擬處理器306訪問的存儲器308。在該示例性實施例中,存儲器308被分區(qū)為主計算機存儲器310部分和模擬子程序312部分。主計算機存儲器310可供符合主計算機架構的模擬主計算機300中的程序使用,并且可以包括主機或管理程序314以及一個或多個運行邏輯分區(qū)(LP)316的管理程序。每一個邏輯分區(qū)都可以運行操作系統(tǒng)318。模擬處理器306執(zhí)行架構不同于模擬處理器304的架構指令集中的原生指令。原生指令從模擬子程序存儲器312中獲得,并且可以通過使用在排序&訪問/解碼子程序中獲得的一條或多條指令來訪問用于由主計算機存儲器310內的程序執(zhí)行的主機指令,這樣即可解碼訪問的主機指令以確定用于模擬所訪問主機指令功能的原生指令執(zhí)行子程序。一種這樣的主機指令可以是例如開始解釋執(zhí)行(Startlnterpretive Execution) (SIE)指令,主機通過該指令嘗試執(zhí)行虛擬機內的程序。模擬子程序312可以包括對該指令以及對根據該SIE指令的定義執(zhí)行客戶機指令序列的支持。定義用于主計算機系統(tǒng)302架構的其他設備可以通過構建設備子程序來模擬,包括的設備例如有通用寄存器、控制寄存器、動態(tài)地址轉換以及I/o子系統(tǒng)支持和處理器緩 存。模擬子程序還可以利用模擬處理器304內的可用功能(例如通用寄存器和虛擬地址的動態(tài)轉換)來提高模擬子程序的性能。也可以提供專用硬件和卸載引擎以幫助處理器306模擬主計算機302的功能。為了計算環(huán)境中的串行化處理,在一個實施例中使用共享的IPTE聯(lián)鎖(在本文中也被稱為共享鎖、共享IPTE鎖或鎖)。該鎖被用于例如通過管理程序串行化使用客戶機動態(tài)地址轉換(DAT)和存取寄存器轉換(ART)表并且由固件代表客戶機對這些表進行更新。圖4中示出了共享IPTE聯(lián)鎖的一個示例。共享IPTE聯(lián)鎖410由主機管理程序占用,同時它在代表客戶機的IPTE,IDTE, CSP/G請求更新轉換表時利用客戶機DAT或ART表或者通過固件來轉換一個或多個操作數(shù)。響應于管理程序獲得鎖,它增加主機IPTE鎖的計數(shù)414。類似地,在本發(fā)明先前的一個方面中,響應于固件獲得鎖,它增加客戶機IPTE鎖的計數(shù)412。但是,根據本發(fā)明的一個方面,不再使用客戶機IPTE鎖。參照圖5A-5B介紹由管理程序在人工轉換客戶機DAT或ART期間保持共享IPTE鎖的常規(guī)技術的一個實施例。管理程序通常在為了存取一個或多個存儲器操作數(shù)而代表客戶機模擬指令時執(zhí)行這種轉換。這種轉換在本文中被稱為人工的是因為它是一種硬件未知的多步過程。因此,硬件無法將對管理程序的處理串行化。如圖5A所示,在開始實際轉換之前,管理程序在查詢步驟(INQUIRY) 510檢查對其應用地址轉換的客戶機是否是多處理(MP)客戶機,也就是在結構中有多于一個虛擬處理器。如果客戶機是單處理器客戶機,也就是在結構中只有一個虛擬處理器,那么管理程序即可執(zhí)行人工轉換的步驟522 (圖5B)而不必設定IPTE聯(lián)鎖。這是因為IPTE聯(lián)鎖被用于管理一個客戶機處理器執(zhí)行由管理程序模擬的指令而其他的客戶機處理器則發(fā)出IPTE,IDTE或CSP/G以更新轉換表的情況。在單處理器客戶機中,如果正在模擬一條指令,那么就沒有其他的處理器發(fā)出更新轉換表的指令。隨后,在INQUIRY 524,再次就是否是多處理客戶機進行判定。只要在此情況下結果為否,處理即告完成。返回圖5A,如果在INQUIRY 510中可應用的客戶機是在多處理環(huán)境中運行,那么管理程序首先在INQUIRY 512判定IPTE聯(lián)鎖是否已被占用。如果未被占用,那么管理程序即可在步驟514獲得聯(lián)鎖。這可以通過使用例如聯(lián)鎖更新譬如比較并交換操作(例如z/Architecture 中的比較并交換(CSG))來實現(xiàn)。比較并交換比較最初獲取的數(shù)據和當前數(shù)據并且只有在數(shù)據尚未改變時才進行更新。硬件保證該檢查和更新是最小單位的,也就是說在此期間沒有其他的處理器改變鎖。管理程序設定IPTE聯(lián)鎖并將主機的IPTE鎖計數(shù)例如從零增加到一。在INQUIRY 520,如果該聯(lián)鎖更新失敗,那么就返回至INQUIRY 512并再次檢查聯(lián)鎖。
如果IPTE聯(lián)鎖在INQUIRY 512已被占用,那么管理程序就在INQUIRY 516檢查它是否被客戶機占用(也就是客戶機計數(shù)非零)。如果已被客戶機占用,那么管理程序就返回以重新獲取聯(lián)鎖并在INQUIRY 512再次檢查。如果在INQUIRY 516客戶機并未占用聯(lián)鎖,那么這就意味著主機管理程序已經擁有該鎖。管理程序在步驟518嘗試增加主機鎖計數(shù),并且如果該嘗試在INQUIRY 520失敗,那么就返回至INQUIRY 512并再次檢查聯(lián)鎖。響應于在INQUIRY520對主機IPTE聯(lián)鎖更新成功,管理程序隨后即可在步驟522 (圖5B)確認操作期間不會修改轉換表的前提下繼續(xù)進行人工轉換。在管理程序在步驟522完成轉換和相關存儲器更新之后,如果在INQUIRY 524客戶機是MP客戶機,那么管理程序就在步驟526釋放其共享的IPTE聯(lián)鎖和更新的聯(lián)鎖。這在一個示例中通過在步驟526減小主機IPTE計數(shù)并且如果新計數(shù)為零則復位IPTE聯(lián)鎖而實現(xiàn)。在INQUIRY 528重復該更新直到成功為止。管理程序響應于成功的更新而結束。除了主機使用IPTE聯(lián)鎖以外,客戶機也使用它??蛻魴C使用它的一種情況是執(zhí)行完成靜默操作的指令。術語“靜默”是指用于在一個處理器造成系統(tǒng)狀態(tài)的某種改變時迫使多處理器系統(tǒng)中的所有處理器(也就是能夠訪問已更新數(shù)據結構(例如表)的那些處理器)停止其動作的機制。用于靜默操作的一種常規(guī)實施方式包括以下內容1)所有處理器靜默(也就是暫停絕大部分常用的處理操作);2)使依賴于待更新資源的所有緩沖項目在靜默處理器上無效;3)由靜默啟動程序更新常用資源,以及4)最后釋放靜默并且處理器繼續(xù)其正常動作。靜默操作特別用于在客戶機于多處理環(huán)境中運行時執(zhí)行IPTE,IDTE和大部分的CSP指令。正是在這些情況下才設定IPTE聯(lián)鎖。圖6A-6B示出了在客戶機多處理環(huán)境中與靜默IPTE,IDTE和CSP/G指令相關聯(lián)的IPTE聯(lián)鎖更新的常規(guī)客戶機實現(xiàn)的一個實施例。參照圖6A,固件首先在INQUIRY 610判定IPTE聯(lián)鎖是否已被占用。如果未被占用,那么固件即可在步驟612獲得聯(lián)鎖。這可以通過使用例如聯(lián)鎖更新利用比較并交換操作(例如比較并交換(CSG))來實現(xiàn)。比較并交換比較最初獲取的數(shù)據和當前數(shù)據并且只有在數(shù)據尚未改變時才進行更新。硬件保證該檢查和更新是最小單位的,也就是說在此期間沒有其他的處理器改變鎖。固件在步驟612設定IPTE聯(lián)鎖并將客戶機的IPTE鎖計數(shù)例如從零增加到一。如果該聯(lián)鎖更新在INQUIRY 620失敗,那么就返回至INQUIRY 610并再次檢查聯(lián)鎖。如果IPTE聯(lián)鎖在INQUIRY 610已被占用,那么固件就在INQUIRY 614檢查它是否被主機占用,也就是主機計數(shù)是否非零。如果是被主機占用,那么固件就在步驟616截取返回管理程序,其中包含截取類型和指令的某些指示。通常,在此情況下,管理程序用IPTE類型(或靜默類型)的指令重新調度客戶機以促使客戶機代碼開始再次執(zhí)行。如果在INQUIRY 614主機并未占用聯(lián)鎖,那么這就意味著客戶機(固件)已經擁有該鎖。固件隨后在步驟618嘗試增加客戶機鎖計數(shù),并且如果該嘗試在INQUIRY 620失敗,那么就返回至INQUIRY 610并再次檢查聯(lián)鎖。響應于在INQHRY 620對客戶機IPTE聯(lián)鎖更新成功,固件在步驟622(圖6B)確認不用再通過管理程序完成取決于(由所涉及的指令正在更新的)表的轉換的前提下繼續(xù)在步驟622 (圖6B)進行快速靜默操作。由中央處理器(例如分別是圖I和圖2中的106或230)發(fā)出的任何快速靜默操作都通過系統(tǒng)控制器(分別是圖I和圖2中的112或240)被串行化。這種串行化包括跟蹤所有這些不同處理器上的靜默操作,目的是為了保證系統(tǒng)內的正確串行化,任意時刻在每一個分區(qū)或客戶機結構中只允許一個快速靜默。如果做出快速靜默請求并且系統(tǒng)控制器內的相關硬件已經忙于另一請求,那么該快速靜默請求即被拒絕。如果快速靜默請求在INQUIRY 624被拒絕,那么固件就在步驟626復位其共享的客戶機IPTE聯(lián)鎖。這可以通過在步驟626利用聯(lián)鎖更新減小客戶機IPTE計數(shù)并且如果新計數(shù)為零則復位IPTE聯(lián)鎖而實現(xiàn)。在INQUIRY 628重復該更新直到成功為止。響應于該聯(lián)鎖更新的成功完成,固件在步驟630取消IPTE型指令以使其能夠被再次執(zhí)行。例如,它備份指令指針以指回IPTE,IDTE和CSP/G等使其將會再次執(zhí)行。(注意 在一個示例中,經過一定次數(shù)的拒絕后,固件使用不同的(常規(guī))靜默機制以確??梢酝瓿煽焖凫o默請求。)返回INQUIRY 624,如果快速靜默請求未被拒絕,那么固件就在步驟632完成快速靜默操作,其中包括驗證處理器內的相關緩沖值并更新存儲器中適當?shù)霓D換表項。然后還要在步驟634復位其共享的IPTE聯(lián)鎖,在INQUIRY 636根據需要重試,并且成功后在步驟638 完成指令(例如 IPTE, IDTE, CSP/G)。在大型系統(tǒng)中,可以進行多次靜默請求,這可能會導致大量的快速靜默拒絕。當然,完成任意指定快速靜默操作所需的總時間就會隨其接收到的拒絕次數(shù)的增加而增長。IPTE聯(lián)鎖應在發(fā)出快速靜默請求之前設定,目的是為了確保與管理程序的正確配合。每一次拒絕都需要設定和復位IPTE聯(lián)鎖,由此增加了對IPTE聯(lián)鎖的競爭。在大型單一映像系統(tǒng)中,系統(tǒng)內的所有處理器共享同一聯(lián)鎖。隨著系統(tǒng)內處理器數(shù)量的增加以及處理靜默操作的相對時間與CPU時間相比的增加,拒絕次數(shù)就會增加,對IPTE聯(lián)鎖的聯(lián)鎖訪問次數(shù)也同樣會增加。因此,試圖獲取聯(lián)鎖耗費的時間量就會變得過長。根據本發(fā)明的一個方面,在保持共享鎖的主機實現(xiàn)中取消了對客戶機IPTE鎖的設定。參照圖7A-7B對此進行介紹。這種實施方式使對管理程序特別是關于恢復方面的改
動最小化。首先參照圖7A,如果客戶機轉換在INQUIRY 710應用于單處理器(即不是多處理器的)環(huán)境,那么就在步驟722 (圖7B)執(zhí)行人工客戶機DAT或ART轉換和相關存儲器更新并且繼續(xù)在步驟730結束,這與IPTE聯(lián)鎖相同。返回INQUIRY 710(圖7A),但是如果客戶機是在多處理環(huán)境中運行,那么就不再需要測試客戶機IPTE鎖。不過管理程序仍然會增加主機鎖。例如,在INQUIRY 712就IPTE聯(lián)鎖是否已經設定進行判斷。如果還沒有,那么就在步驟714設定IPTE聯(lián)鎖和主機IPTE鎖并進行聯(lián)鎖更新。如果IPTE聯(lián)鎖在INQUIRY 712已設定,那么就增加主機IPTE鎖并進行聯(lián)鎖更新。如果兩種情況下的更新在INQUIRY 720失敗,那么就重試。在進一步的實施例中,為了允許對管理程序透明地禁用IPTE聯(lián)鎖可選方案,管理程序可以如參照圖5A所述的那樣繼續(xù)測試客戶機IPTE鎖。由于IPTE鎖的主機設定相對較少,因此這樣做的性能沖擊很小。響應于設定主機IPTE鎖,管理程序在步驟721 (圖7B)發(fā)出診斷(DIAG)指令以在硬件中導致靜默串行化。這種靜默串行化要做兩件事。首先,它保證主機IPTE鎖的更新跨系統(tǒng)可見,并且其次它確保已經完成任何待決的客戶機靜默操作。由于主機IPTE鎖已設定,因此不能再開始新的客戶機靜默操作。下文中更加完整地介紹該指令。在DIAG完成后,管理程序如上所述在步驟722繼續(xù)執(zhí)行人工客戶機ART或DAT轉換和相關的存儲器更新。隨后在INQUIRY724對是否是多處理客戶機環(huán)境進行判定。如果是,那么就在步驟726減少主機IPTE鎖并且如果主機鎖為零則復位聯(lián)鎖。這通過聯(lián)鎖更新實現(xiàn)。如果在INQUIRY 728更新失敗,那么處理就繼續(xù)執(zhí)行步驟726。否則,或者說如果并不是多處理環(huán)境,那么處理就在步驟730完成。參照圖8A-8B介紹與靜默IPTE,IDTE和CSP/G指令的IPTE聯(lián)鎖可選方案的客戶機實現(xiàn)相關聯(lián)的邏輯塊的一個實施例。在該實施例中,盡管固件仍然檢查IPTE鎖中的主機部分,但是不再更新客戶機IPTE鎖。
參照圖8A,如果IPTE聯(lián)鎖在INQUIRY 810已設定,在INQUIRY 814表明主機IPTE鎖已設定,那么固件就在步驟816給出對于到管理程序的靜默指令的指令截取。這樣就在管理程序執(zhí)行人工轉換時防止執(zhí)行靜默操作。管理程序(主機)通過發(fā)出DIAG指令已經確保了在人工轉換期間不會進行靜默。這就使得不再需要設定客戶機鎖。如果主機IPTE鎖在INQUIRY 814尚未設定,那么固件就在步驟822 (圖8B)發(fā)出快速靜默廣播請求,并且如果在INQUIRY 824拒絕了快速靜默請求,那么就在步驟830取消該指令。如果請求在INQUIRY 824被接受,那么固件就在步驟832完成快速靜默操作,并在步驟838完成指令。如果不是以上的兩種情況,那么就由于鎖尚未設定而需要對客戶機IPTE鎖進行更新。參照圖9A-9C介紹關于DIAG指令的更多細節(jié)。DIAG指令提供了新定義的系統(tǒng)串行化。管理程序在已于系統(tǒng)控制區(qū)域內設定IPTE聯(lián)鎖之后但是在開始與指令截取相關的任何轉換之前發(fā)出由固件執(zhí)行的該指令。圖9A示出了 DIAG(診斷)指令的一個實施例。如圖所示,診斷(本文中也稱為DIAG)指令900包括例如表示DIAG指令的操作碼902 ;明確系統(tǒng)控制區(qū)域地址所處位置的第一字段904(也就是控制區(qū)域字段);明確提供執(zhí)行DIAG所用子碼位置的第二字段906(也就是子碼字段);明確其中包括要加入第四字段910(也就是移位字段)的內容中的數(shù)據的位置的第三字段908 (也就是基址字段),所述數(shù)據用作操作碼擴展,標識例如用于IPTE聯(lián)鎖可選方案的DIAG。子碼的示例包括以下內容例如在明確子碼O時,系統(tǒng)控制區(qū)域地址被忽略并且不執(zhí)行任何操作。例如在明確子碼2時,系統(tǒng)控制區(qū)域地址標識對其執(zhí)行轉換的客戶機,并且診斷的執(zhí)彳丁尚未在CPU上完成,診斷一直執(zhí)彳丁,直到結構中的所有CPU都已完成指定客戶機的進行中的DAT同步(DS)指令(例如IPTE,IDTE, CSP/G)。完成診斷也確保在主機占用IPTE聯(lián)鎖時,任何后續(xù)的客戶機DS指令都會認識到指令截取。參照圖9B-9C介紹與DIAG指令相關聯(lián)的邏輯塊的一個實施例。參照圖9B,在步驟920由管理程序發(fā)出以固件實現(xiàn)的DIAG指令。該指令保證系統(tǒng)內的所有處理器(也就是能夠訪問已更新資源的那些處理器)均可在步驟922通過等待所有局部待決存儲器變?yōu)閷ο到y(tǒng)可見而看到先前由管理程序設定的IPTE聯(lián)鎖。也就是說,處理器一直等到局部待決存儲器(包括IPTE聯(lián)鎖中的主機部分)已經被寫入達到所有處理器可見的存儲水平為止。它還通過在步驟924發(fā)出完全常規(guī)的靜默機制來等待系統(tǒng)內任何待決的IPTE,IDTE, CSP/G指令競爭。中央處理器(例如圖I中的106)上運行的發(fā)出DIAG的固件通過向系統(tǒng)控制器(例如圖I中的112)發(fā)出廣播設定完全常規(guī)的靜默指令來實現(xiàn)這一點。系統(tǒng)控制器隨后將該指令廣播至系統(tǒng)內的所有處理器。下文中參照圖10進一步介紹該過程。
響應于靜默,DIAG的啟動器還在步驟926設定I-am-quiesced (我已靜默)標識符以表示其已進入靜默狀態(tài),并在步驟928等待所有處理器都變?yōu)殪o默。系統(tǒng)控制器指示每一個處理器一旦系統(tǒng)內的所有處理器均已設定I-am-quiesced標識符則系統(tǒng)即被靜默。這就保證了系統(tǒng)內所有可能仍然待決的IPTE,IDTE和CSP/G指令都已被完成。由于每一個處理器均使其局部存儲器對整個系統(tǒng)可見,因此還確保了由客戶機執(zhí)行的所有未來的IPTE, IDTE和CSP/G都由于設定了 IPTE聯(lián)鎖位而被截取至主機。這與先前通過IPTE聯(lián)鎖保證的情況相同,而并沒有客戶機比較并交換的開銷。在步驟928響應于靜默,DIAG的啟動器還在步驟930等待常規(guī)的靜默優(yōu)先權。如果某一時刻在系統(tǒng)內有多個待決的常規(guī)靜默,那么硬件和固件確保每一個處理器都按順序接收常規(guī)的靜默優(yōu)先權。一旦該處理器具有優(yōu)先權,由于它已經通過常規(guī)靜默完成了其操作,因此它就在步驟940 (圖9C)發(fā)出復位常規(guī)靜默(Reset ConventionalQuiesce)指令。該復位指令再次向系統(tǒng)內的所有處理器廣播,并且一旦所有常規(guī)靜默啟動器均已復位其請求,那么就不再有待決的靜默請求。在步驟942響應于常規(guī)靜默請求被復位,DIAG啟動器和接收器均可在步驟914分別退出靜默狀態(tài)(也就是復位I-am-quiesced)。這樣就完成了處理。參照圖10介紹關于靜默請求的更多細節(jié)。在步驟1000,響應于發(fā)出設定完全常規(guī)靜默(Set Full Conventional Quiesce)的請求,系統(tǒng)內的每一個處理器在達到中斷點時都通過進入靜默中斷固件處理器而暫停正常的處理。然后在步驟1002等待所有局部待決存儲器變?yōu)閷ο到y(tǒng)可見。在步驟1004,響應于該情況的出現(xiàn),設定I-am-quiesced標識符從而指示系統(tǒng)控制器其已進入靜默狀態(tài),并且在步驟1006等待系統(tǒng)內的所有處理器達到靜默狀態(tài)。固件在步驟1008等待,直到沒有待決的常規(guī)靜默請求為止,并隨后在步驟1010退出靜默狀態(tài)(例如復位I-am-q uiesced)。下文中介紹關于快速靜默和完全常規(guī)(全系統(tǒng))靜默請求的更多細節(jié)。首先參照圖IlA介紹快速靜默(FQui)請求1100的一個實施例。在一個示例中,快速靜默請求包括命令字段1102,其明確了快速靜默命令(FQui-快速靜默)和快速靜默請求的類型(例如IPTE,IDTE等),其明確了由處理器要求的無效。區(qū)域字段1104,指示了啟動器1104的分區(qū)區(qū)域編號;以及地址字段1106,進一步限定了所需的無效(例如用于IPTE的頁面索引)。圖IlB示出了完全常規(guī)靜默請求1150的一個實施例。在一個示例中,完全常規(guī)靜默請求包括
指示完全靜默命令的命令字段1152 ;發(fā)起處理器的處理器ID(PWD)指示1154 ;以及命令是設定還是復位完全常規(guī)靜默請求的指示1156。圖12示出了耦合至多個中央處理器(CPU) 1210的系統(tǒng)控制器1200的一個示例,圖中僅示出了一個中央處理器。本領域技術人員應該理解可以有多于一個處理器1210耦合至系統(tǒng)控制器1200。參照圖12,系統(tǒng)控制器1200包括各種控制器,例如包括系統(tǒng)串行化控制器1202。系統(tǒng)串行化控制器1202例如被用于保證將應被串行化的操作(例如由無效頁表項(IPTE)、無效DAT表項(IDTE)或者比較并交換和刪除(CSP和CSPG)指令)串行化,以使得在任一時刻計算環(huán)境中的任何一個分區(qū)內都只有一條這樣的指令在運行。還要監(jiān)測用于該操作的事件順序。系統(tǒng)控制器1200通過各種接口耦合至每一個中央處理器1210。例如,控制器1200的接口 1214由中央處理器中的固件用于從系統(tǒng)操作控制器1212發(fā)送“控制”命令,其明確了應由系統(tǒng)控制器1200并且在某些情況下應由系統(tǒng)串行化控制器1202采取的動作。另一個接口是響應總線1216,其被用于從控制器1200返回與這些命令相關的狀態(tài)信息。該狀態(tài)信息由中央處理器1210內的系統(tǒng)操作控制器1212用于設定狀態(tài)碼1218以用于指示系統(tǒng)操作請求的狀態(tài)。響應信息可以根據控制器1200內的多個來源設定,包括系統(tǒng)操作控制器1212。中央處理器1210也可以使用該接口以測量系統(tǒng)控制器1200內系統(tǒng)串行化控制器1202的狀態(tài)。更多的接口包括接口 1222,其將該局部中央處理器1210的常規(guī)靜默狀態(tài)(I-AM-QUIESCED) 1220提供給系統(tǒng)控制器1200。系統(tǒng)控制器1200將來自系統(tǒng)內所有可用處理器的I-AM-QUIESCED狀態(tài)1220進行與運算1204,以指示系統(tǒng)靜默狀態(tài)1206。該系統(tǒng)靜默狀態(tài)1206經接口 1234提供給每一個中央處理器1210,在此保留局部副本1224并將其用于設定QUSYS 1226以供固件查詢。對于靜默操作例如IPTE, IDTE和CSP/G,在需要或期望時,經系統(tǒng)操作接口 1214發(fā)送快速靜默操作。如果系統(tǒng)串行化控制器1202忙于處理另一個快速靜默請求,那么就利用狀態(tài)碼1218向發(fā)起中央處理器1210內的系統(tǒng)操作控制器1212指示該“拒絕”。發(fā)起中央處理器內的固件保留用于任何指定快速靜默請求1230的拒絕次數(shù)的計數(shù)。當該計數(shù)達到快速靜默拒絕極限1232時,常規(guī)的靜默序列被用于保證快速靜默最終得以完成。如果系統(tǒng)串行化控制器1202并未忙于另一個快速靜默操作,也就是命令未被拒絕,那么它就通過接口 1238向系統(tǒng)中每一個中央處理器1210內的靜默控制器1236廣播快速靜默“控制”命令。當靜默控制器1236接收到快速靜默(FQui)請求時,它會判定中央處理器1210是否應中斷以處理該靜默請求,并且如果是這樣的話,那么它就向靜默中斷控制器1240發(fā)出指示1243以促使快速靜默請求1242和中斷1244變?yōu)榇龥Q。另外,并且在合適時,靜默控制器1236將快速靜默命令轉發(fā)至中央處理器1210中的轉換旁視緩沖器(TranslationLook-aside Buffer或TLB) 1246以使其能夠將該請求所需的任何TLB項無效。在使用常規(guī)的靜默序列時,因為多次快速靜默拒絕或者因為快速靜默機制并不支持要求靜默的功能,固件利用系統(tǒng)操作控制器1212經接口 1214發(fā)送完全常規(guī)的靜默“控制”命令。對于任一請求,系統(tǒng)串行化控制器1202向每一個處理器內的靜默控制器1236轉發(fā)SYSOP(靜默)命令以指示請求常規(guī)靜默。靜默控制器利用來自SYSOP請求的發(fā)起者的處理器ID 1154(圖11B)來設定I3U常規(guī)靜默優(yōu)先權向量1250(圖12)內的對應位。常規(guī)靜默優(yōu)先權向量1250被例如用于根據局部處理器1252的處理器ID判定該局部處理器是否具有常規(guī)靜默優(yōu)先權。如果對應于局部I3UID 1252的位是優(yōu)先權向量1250中的最左位,那么該處理器就被賦予常規(guī)靜默優(yōu)先權1254。靜默優(yōu)先權向量1250內各位的邏輯或運算1256被用于指示是否存在任何常規(guī)靜默(CQui)請求待決1258。這被提供給固件用作分支條件。另外,任何常規(guī)靜默請求待決的標識符1258被發(fā)送至靜默中斷控制器1240。任何常規(guī)靜默請求待決1258隨后被發(fā)送至靜默中斷控制器并被用于指示待決的常規(guī)靜默中斷1262。以下的專利/申請中介紹了關于靜默的更多細節(jié)=Heller等人在2009年8月27 日公開的公開號為 2009/0216928A1、題為 “System, Method and Computer ProgramProduct for Providing a New QuiesceState”的美國專利;Heller 等人在 2009 年 8 月 27日公開的公開號為 2009/0216929A1、題為“System, Method and Computer ProgramProduct for Providing a Programmable Quiesce Filtering Register,,的美國專利;Heller等人在 2009 年 8 月 27 日公開的公開號為 2009/0217264A1、題為“Method, System and ComputerProgramProduct for Providing Filtering of Guest2 Quiesce Requests,,的美國專利;Heller等人在2009年8月27日公開的公開號為2009/0217269A1、題為“System, Methodand Computer ProgramProduct for Providing Multiple Quiesce State Machines,,的美國專利;Slegel等人在2006年2月7日被授予的題為“BlockedProcessing RestrictionsBased On Addresses” 的美國專利 US6, 996,698B2 ;Slegel 等人在 2006 年 3 月 28 日被授予的題為 “Blocking Processing Restrictions Based On Page Indices” 的美國專利 US7,020,761B2;以及 Siegel 等人在 2009 年 5 月 5 日被授予的題為 “Filtering ProcessorRequests Based On Identifiers” 的美國專利 US 7,530,067B2。以上詳細介紹的是有助于在多處理環(huán)境內進行處理的串行化機制。這種串行化機制使得能夠去除用于串行化處理的客戶機部分的IPTE聯(lián)鎖。在一個示例中,這種串行化機制包括保證系統(tǒng)內的所有處理器觀察先前由管理程序設定的IPTE聯(lián)鎖的DIAG指令。它還等待任何待決IPTE,IDTE,CSP/G指令的競爭。這就保證了 1)由客戶機執(zhí)行的所有未來的IPTE,IDTE, CSP/G都由于設定了 IPTE聯(lián)鎖位而被截取至主機;以及2)任何先前的IPTE, IDTE或CSP/G在管理程序開始其指令模擬之前都已完成。不需要改變硬件并且只需對管理程序進行非常小的改動;在設定主機IPTE聯(lián)鎖之后再完成系統(tǒng)串行化功能以支持該功能。而且,不需要對管理程序相對于IPTE聯(lián)鎖使用的恢復算法進行改動。如果管理程序繼續(xù)檢查舊的客戶機鎖,那么也允許由對管理程序透明的固件禁用該功能以允許測試中有更多靈活性以及通過新技術識別測量性能增益的能力。正如本領域技術人員能夠理解的那樣,本發(fā)明的應用可以實施為系統(tǒng)、方法或計算機程序產品。因此,本發(fā)明的應用可以采用完全為硬件的實施例、完全為軟件的實施例(包括固件、常駐軟件、微型代碼等)或者組合軟件和硬件應用的實施例的形式,它們基本上在本文中全都可以被稱為“電路”、“模塊”或“系統(tǒng)”。而且,本發(fā)明的應用可以采用在其上實施有計算機可讀取程序代碼的一種或多種計算機可讀取介質內實施的計算機程序產品的形式。可以使用一種或多種計算機可讀取介質的任意組合。計算機可讀取介質可以是計算機可讀取存儲介質。計算機可讀取存儲介質例如可以是但不局限于電、磁、光學、電磁、紅外或半導體系統(tǒng)、裝置或設備,或者是上述類型的任意適用組合。計算機可讀取存儲介質的更多具體示例(非窮舉性列表)可以包括以下內容具有一條或多條線路的電連接,便攜式計算機磁盤,硬盤,隨機存取存儲器(RAM),只讀存儲器(ROM),可擦除可編程只讀存儲器(EPR0M或閃存存儲器),光纖,便攜光盤只讀存儲器(CD-ROM),光存儲設備,磁存儲設備或上述內容的任意適用組合。在本文獻的語境中,計算機可讀取存儲介質可以是能夠包含或者存儲程序以供使用或者與指令執(zhí)行系統(tǒng)、裝置或設備結合使用的任何實體介質。現(xiàn)參照圖13,在一個示例中,計算機程序產品1300包括例如一種或多種計算機可讀取存儲介質1302以在其上存儲計算機可讀取程序代碼方法或邏輯1304,從而提供和有助于本發(fā)明的一個或多個方面。在計算機可讀取介質上實施的程序代碼可以利用合適的介質傳輸,包括但不限于 無線、有線線路、光纖光纜、RF等或者上述內容任意合適的組合。用于實現(xiàn)本發(fā)明應用中操作的計算機程序代碼可以用一種或多種編程語言的任意組合編寫,包括面向對象的編程語言例如Java、Smalltalk、C++等以及傳統(tǒng)的過程編程語言例如C編程語言、匯編語言或類似的編程語言。程序代碼可以完全在用戶的計算機上運行,部分在用戶的計算機上運行,作為單獨的軟件包運行,部分在用戶的計算機上運行并且部分在遠程計算機上運行,或者完全在遠程計算機或服務器上運行。在后兩種情形中,遠程計算機可以通過任何類型的網絡連接至用戶的計算機,包括局域網(LAN)或廣域網(WAN),或者連接可以通往外部計算機(例如使用互聯(lián)網服務供應商通過互聯(lián)網實現(xiàn))。本文中根據本發(fā)明的實施例參照方法、裝置(系統(tǒng))和計算機程序產品的流程圖和/或方塊圖來介紹本發(fā)明的各種應用。應該理解流程圖和/或方塊圖中的每一個模塊以及流程圖和/或方塊圖中的模塊組合都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以被提供給通用計算機、專用計算機或用于生產機械的其他可編程數(shù)據處理裝置的處理器以使得通過計算機或其他可編程數(shù)據處理裝置的處理器執(zhí)行指令來創(chuàng)建用于實現(xiàn)流程圖和/或方塊圖中的一個或多個模塊中列舉的功能/動作的方法。這些計算機程序指令也可以被存儲在能夠引導計算機、其他可編程數(shù)據處理裝置或以特定方式工作的其他設備的計算機可讀取介質內,以使存儲在計算機可讀取介質內的指令生產出的制品包括有實現(xiàn)了流程圖和/或方塊圖中的一個或多個模塊中列舉的功能/動作的指令。計算機程序指令也可以被載入到計算機、其他可編程數(shù)據處理裝置或其他設備上以促使在計算機、其他可編程裝置或其他設備上執(zhí)行一系列操作步驟,從而生成計算機實現(xiàn)的過程,以使得在計算機或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在流程圖和/或方塊圖中的一個或多個模塊中列舉的功能/動作的過程。附圖中的流程圖和方塊圖根據本發(fā)明的不同實施例示出了系統(tǒng)、方法和計算機程序產品的結構、功能和可以實施的操作。在這方面,流程圖或方塊圖中的每一個模塊均可表示程序塊、程序段或代碼部分,其中包括用于實現(xiàn)一種或多種特定邏輯功能的一條或多條可執(zhí)行指令。還應該注意到在某些可選的實施方式中,模塊中注明的功能可以脫離附圖中標明的順序完成。例如,相繼示出的兩個模塊實際上可以基本上同時執(zhí)行,或者這兩個模塊有時可以用相反的順序執(zhí)行,這取決于所涉及到的功能。還應該注意到方塊圖和/或流程圖中的每一個模塊以及方塊圖和/或流程圖中的模塊組合均可通過專用的基于硬件的系統(tǒng)實現(xiàn)以執(zhí)行特定功能或動作,或者通過專用硬件和計算機指令的組合來實現(xiàn)。除了上述內容以外,本發(fā)明的一個或多個方面可以由提供客戶環(huán)境管理的服務供應商提供、給出、配置、管理、維護等。例如,服務供應商可以為一個或多個客戶構建、維護、支持實現(xiàn)本發(fā)明一個或多個方面的計算機代碼和/或計算機架構。作為回報,服務供應商可以根據例如訂單和/或費用協(xié)議從客戶處獲得報酬。附加地或可選地,服務供應商可以從提供給一個或多個第三方的廣告內容銷售中獲得報酬。在本發(fā)明的一個方面中,可以配置應用程序用于實現(xiàn)本發(fā)明的一個或多個方面。作為一個示例,配置應用程序包括提供可操作用于實現(xiàn)本發(fā)明一個或多個方面的計算機架構。 作為本發(fā)明的另一方面,計算架構可以被配置為包括集成到計算系統(tǒng)內的計算機可讀取代碼,其中代碼與計算系統(tǒng)相結合就能夠實現(xiàn)本發(fā)明的一個或多個方面。作為本發(fā)明的另一方面,可以一種用于集成計算架構的過程,包括將計算機可讀取代碼集成到計算機系統(tǒng)內。計算機系統(tǒng)包括計算機可讀取介質,其中計算機介質包括本發(fā)明的一個或多個方面。代碼與計算機系統(tǒng)相結合就能夠實現(xiàn)本發(fā)明的一個或多個方面。盡管以上介紹了不同的實施例,但是這些僅僅是示例。例如,其他架構的計算環(huán)境也可以加入并使用本發(fā)明的一個或多個方面。作為示例,除Systemz 服務器以外的服務器(例如由國際商業(yè)機器公司提供的Power Systems服務器或其他服務器或者其他公司的服務器)也可以包括、使用和/或受益于本發(fā)明的一個或多個方面。而且,具有多個處理器的單一映像系統(tǒng)也可以加入并使用本發(fā)明的一個或多個方面。更進一步地,串行化機制可以由除本文所述內容以外的指令使用或實現(xiàn)。另外,DIAG指令可以用不同方式實施和/或具有比本文所述內容更多、更少或不同的字段。更進一步地,串行化可以利用除DIAG指令以外的機制實現(xiàn)。而且,可以使用除DAT和ART以外的轉換方案,并且訪問的數(shù)據結構可以不同于轉換表。而且,本發(fā)明的一個或多個方面可以用于除包括主機和客戶機的環(huán)境以外的環(huán)境。例如,串行化機制可以被用于串行化處理分享共用鎖的兩個實體。一個實體具有更新的實體鎖(例如設定、復位或增加),且另一個實體由于串行化機制而不需要實體鎖。具有實體鎖的實體例如是更新實體鎖較不頻繁的實體。還存在很多可行方案。而且,其他類型的計算環(huán)境也可以受益于本發(fā)明的一個或多個方面。作為示例,適用于存儲和/或執(zhí)行程序代碼的數(shù)據處理系統(tǒng)是可使用的,其包括通過系統(tǒng)總線直接或間接耦合至存儲元件的至少兩個處理器。存儲元件包括在實際執(zhí)行程序代碼期間使用的本地內存、大容量存儲器以及為了減少執(zhí)行期間必須從大容量存儲器中獲取代碼次數(shù)而提供至少部分程序代碼的臨時存儲的高速緩存存儲器。輸入/輸出或I/O設備(包括但不限于鍵盤、顯示器、點擊設備、DASD、磁帶、⑶、DVD、拇指驅動器和其他存儲介質等)可以直接或通過中介I/O控制器耦合至系統(tǒng)。網絡適配器也可以被耦合至系統(tǒng)以使數(shù)據處理系統(tǒng)能夠通過中介的專用網絡或公用網絡被耦合至其他的數(shù)據處理系統(tǒng)或遠程打印機或存儲設備。調制解調器、線纜調制解調器和以太網卡只是網絡適配器可用類型中的幾種。參照圖14,示出了用于實施本發(fā)明一個或多個方面的主計算機系統(tǒng)5000的代表性部件。代表性主計算機5000包括與計算機存儲器(也就是中央存儲器)5002通信的一個或多個CPU 5001,以及用于介質存儲設備5011和網絡5010的I/O接口,用于供與其他計算機或SAN等通信。CPU 5001與具有架構指令集和架構功能的架構兼容。CPU 5001可以具有動態(tài)地址轉換(DAT) 5003,用于將程序地址(虛擬地址)轉化為真實的存儲器地址。DAT通常包括轉換旁視緩沖器(TLB) 5007用于緩存各種轉換以使得隨后對計算機存儲器5002中區(qū)塊的訪問不需要延遲地址轉換。通常,在計算機存儲器5002和處理器5001之間配有高速緩存5009。高速緩存5009可以分級為具有可供多于一個CPU使用的大容量緩存以及介于大容量緩存和每一個CPU之間的更小、更快(低層級)的緩存。在某些實施方式中,劃分較低層級的緩存以提供用于指令提取和數(shù)據訪問的獨立低層級緩存。在一個實施例中,由指令提取單元5004通過高速緩存5009從存儲器5002中提取指令。指令在指令解碼單元5006中解碼并且(在某些實施例中與其他指令一起)分配至一個或多個指令執(zhí)行單元5008。通常會使用幾個指令執(zhí)行單元5008,例如運算執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行單元。指令由執(zhí)行單元執(zhí)行,從指令明確的寄存器或所需存儲器中存取操作數(shù)。如果操 作數(shù)是從存儲器5002中存取(載入或存儲),那么載入/存儲單元5005通常在執(zhí)行指令的控制下處理存取。指令可以在硬件電路中執(zhí)行或者以內部微代碼(固件)執(zhí)行或者通過兩者的組合執(zhí)行。如上所述,計算機系統(tǒng)包括局部(或者主)存儲器內的信息以及尋址、保護和索引和更改記錄。尋址的某些方面包括地址格式、地址空間的概念、地址的各種類型以及將一種類型的地址轉換為另一種類型地址的方式等。某些主存儲器包括永久指定的存儲位置。主存儲器為系統(tǒng)提供可直接尋址的快速訪問數(shù)據存儲。數(shù)據和程序在能夠進行處理之前都要(通過輸入設備)先載入主存儲器內。主存儲器可以包括一個或多個更小更快的存取緩沖存儲器,有時被稱為高速緩存。高速緩存通常與CPU或I/O處理器物理連接。物理結構對性能以外的影響以及不同存儲介質的使用通常都不能通過程序觀測。獨立緩存可以被保留用于指令和數(shù)據運算。高速緩存內的信息被保留在稱為緩存塊或緩存行(或簡稱為行)的整數(shù)邊界上的相連字節(jié)中。一種模型可以提供以字節(jié)返回緩存行大小的提取緩存屬性(EXTRACT CACHE ATTRIBUTE)指令。一種模型還可以提供影響存儲器向數(shù)據或指令緩存內預提取數(shù)據或從緩存區(qū)釋放數(shù)據的預提取數(shù)據(PREFETCH DATA)和預提取相對較長數(shù)據(PREFETCH DATARELATIVE LONG)指令。存儲器被示為長的橫向位串。對于大多數(shù)操作,訪問存儲器按從左至右的順序進行。位串被劃分為8位的單元。一個8位單元被稱為一個字節(jié),這是所有信息格式的基本構建模塊。存儲器內的每一個字節(jié)位置都由唯一的非負整數(shù)標識,這就是該字節(jié)位置的地址或者簡稱為字節(jié)地址。相鄰的字節(jié)位置具有在左側從O開始并且按從左至右的順序繼續(xù)的連續(xù)地址。地址是無符號的二進制整數(shù)并且是24,31或64位。信息在存儲器和CPU或信道子系統(tǒng)之間每次一個字節(jié)或一組字節(jié)地傳輸。除非另有說明,否則例如在z/'Architecture⑨中,存儲器內的一組字節(jié)就以組中最左側的字節(jié)作為地址。組內的字節(jié)數(shù)或者是默認的,或者就是由要執(zhí)行的操作明確指出。在CPU操作中使用時,一組字節(jié)被稱為一個字段。在每一組字節(jié)內,例如在z/Architecture 中,各個位按從左至右的順序編號。在z/Arehitecture 中,最左側的位有時被稱為“高階”位,而最右側的位則被稱為“低階”位。但是,位編號并不是存儲地址。只有字節(jié)才能被尋址。為了操作存儲器內某一字節(jié)中的各個位,必須存取整個字節(jié)。字節(jié)內的位(例如在z/Architecture⑨中)從左至右被編號為O至7。地址內的各位對于24位地址可以被編號為8-31或40-63 ;或者對于31位地址可以被編號為1_31或33-63 ;對于64位地址它們被編號為0-63。在任何其他固定長度格式的多個字節(jié)中,構成該格式的各位都從O開始連續(xù)編號。為了錯誤檢測,并且優(yōu)選地為了進行校正,一個或多個校驗位可以在每一個字節(jié)或每組字節(jié)中傳輸。這樣的校驗位由機器自動生成并且不能由程序直接控制。存儲容量以字節(jié)數(shù)來表達。當存儲操作數(shù)字段的長度由指令的操作碼暗示時,該字段被認為具有固定長度,可以是I個、2個、4個、8個或16個字節(jié)??梢詫⒏蟮淖侄文J用于某些指令。在存儲操作數(shù)字段的長度并非默認而是被明確指出時,該字段被認為具有可變長度??勺冮L度的操作數(shù)可以通過增加一個字節(jié)(或者對于某些指令來說是兩個字節(jié)的倍數(shù)或其他倍數(shù))來改變長度。當信息被放入存儲器內時,即使是存儲器物理路徑的寬度可能大于待存儲字段的長度,指定字段內也只包括被替換的那些字節(jié)位置中的內容?!?br>
某些信息單元位于存儲器內的整數(shù)邊界上。邊界在信息單元的存儲地址是以字節(jié)為單位的長度的倍數(shù)時被稱為整數(shù)。具體名稱被賦予整數(shù)邊界上的2,4,8和16個字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)字節(jié)并且是指令的基本組成塊。字是四字節(jié)邊界上的一組四個連續(xù)字節(jié)。雙字是八字節(jié)邊界上的一組八個連續(xù)字節(jié)。四倍字是16字節(jié)邊界上的一組16個連續(xù)字節(jié)。在存儲地址指定半字、字、雙字和四倍字時,地址的二進制表示分別包含1、2、3或4個最右側零位。指令是兩字節(jié)的整數(shù)邊界。大多數(shù)指令的存儲操作數(shù)都沒有邊界對齊的要求。在實現(xiàn)用于指令和數(shù)據運算的獨立緩存的設備中,如果要通過依次提取指令將程序存入緩存行內,那么無論存儲是否改變依次提取的指令,都會經歷明顯的延遲。在一個實施例中,本發(fā)明可以由軟件實施(有時被稱為特許內部代碼、固件、微代碼、毫代碼(milli-code)、超微代碼(pico-code)等,其中任何一種都符合本發(fā)明)。參照圖14,實施本發(fā)明的軟件程序代碼通常由主機系統(tǒng)5000的處理器5001從長期存儲介質設備5011例如CD-ROM驅動器、磁帶驅動器或硬盤驅動器中存取。軟件程序代碼可以在與數(shù)據處理系統(tǒng)一起使用的多種已知介質例如軟盤、硬盤或⑶-ROM的任何一種上實施。代碼可以分布在這樣的介質上,或者可以從計算機存儲器5002分配給用戶,或者從網絡5010上的一個計算機系統(tǒng)中的存儲器分配給其他的計算機系統(tǒng)以由這些其他系統(tǒng)的用戶使用。軟件程序代碼包括控制各種計算機部件以及一個或多個應用程序的功能和交互的操作系統(tǒng)。程序代碼通常從存儲介質設備5011中分頁送至相對高速的計算機存儲器5002,在此可用于由處理器5001進行處理。用于在存儲器內、物理介質上實施軟件程序代碼和/或通過網絡分配軟件代碼的技術和方法都是公知的,并且本文中不再進一步介紹。在實體介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上構建和存儲的程序代碼經常被稱為“計算機程序產品”。計算機程序產品的介質通常可由優(yōu)選在計算機系統(tǒng)內的處理電路讀取以用于由處理電路執(zhí)行。圖15示出了可以在其中實施本發(fā)明的代表性工作站或服務器的硬件系統(tǒng)。圖15中的系統(tǒng)5020包括代表性的主計算機系統(tǒng)5021例如個人計算機、工作站或服務器,可包含可選的外設。主計算機系統(tǒng)5021包括一個或多個處理器5026以及用于根據已知技術在處理器5026和系統(tǒng)5021中的其他部件之間連接和實現(xiàn)通信的總線??偩€將處理器5026連接至內存5025和長期存儲器5027,存儲器可包括例如硬盤驅動器(例如包括任意的磁性介質、⑶、DVD和閃存)或磁帶驅動器。系統(tǒng)5021還可以包括用戶接口適配器,其通過總線將微處理器5026連接至一個或多個接口設備例如鍵盤5024、鼠標5023、打印機/掃描儀5030和/或可以是任意用戶接口設備例如觸摸屏、數(shù)字輸入盤等的其他接口設備。總線還通過顯示適配器將顯示設備5022 (例如液晶屏或監(jiān)視器)連接至微處理器5026。系統(tǒng)5021可以通過能夠與網絡5029通信的網絡適配器5028與其他計算機或計算機網絡通信。示例性的網絡適配器有信道、令牌環(huán)、以太網或調制解調器??蛇x地,系統(tǒng)5021可以利用無線接口例如⑶ro(蜂窩式數(shù)字分組數(shù)據)卡進行通信。系統(tǒng)5021可以與局域網(LAN)或廣域網(WAN)中的此類其他計算機相關聯(lián),或者系統(tǒng)5021在與其他計算機等形成的客戶機/服務器設置中可以是客戶機。所有這些結構以及合適的通信硬件和軟件都是本領域內已知的。 圖16示出了其中可以實施本發(fā)明的數(shù)據處理網絡5040。數(shù)據處理網絡5040可以包括多個獨立網絡(例如無線網絡和有線網絡),其中每一個網絡都可以包括多個獨立工作站5041,5042, 5043和5044。另外,正如本領域技術人員應該理解的那樣,可以包括一個或多個LAN,其中LAN可以包括耦合至主機處理器的多個智能工作站。仍然參照圖16,網絡還可以包括大型計算機或服務器例如網關計算機(客戶服務器5046)或應用服務器(可以訪問數(shù)據倉庫并且也可以由工作站5045直接訪問的遠程服務器5048)。網關計算機5046用作接入每一個獨立網絡的接入點。在將一種網絡協(xié)議連接至另一種網絡協(xié)議時需要網關。網關5046可以優(yōu)選地通過通信鏈接耦合至另一個網絡(例如互聯(lián)網5047)。網關5046也可以利用通信鏈接直接耦合至一個或多個工作站5041,5042, 5043, 5044。網關計算機可以利用可從國際商業(yè)機器公司購得的IBM eServer System z 服務器實施。聯(lián)合參照圖15和圖16,可實施本發(fā)明的軟件程序代碼可以由系統(tǒng)5020中的處理器5026從長期存儲介質5027 (例如CD-ROM驅動器或硬盤驅動器)中存取。軟件程序代碼可以在用于數(shù)據處理系統(tǒng)的多種已知介質例如軟盤、硬盤或⑶-ROM的任何一種上實施。代碼可以分布在這些介質上,或者可以從一個計算機系統(tǒng)中的存儲器經過網絡分配給其他的計算機系統(tǒng)的用戶5050,5051以由這些其他系統(tǒng)的用戶使用??蛇x地,程序代碼可以在存儲器5025中實施,并且由處理器5026利用處理器總線存取。這樣的程序代碼包括控制各種計算機部件以及一個或多個應用程序5032的功能和交互的操作系統(tǒng)。程序代碼通常從存儲介質設備5027中分頁送至高速存儲器5025,在此可用于由處理器5026進行處理。用于在存儲器內、物理介質上實施軟件程序代碼和/或通過網絡分配軟件代碼的技術和方法都是公知的,并且本文中不再進一步介紹。在實體介質(包括但不限于電子存儲模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上構建和存儲的程序代碼經常被稱為“計算機程序產品”。計算機程序產品的介質通常可由優(yōu)選在計算機系統(tǒng)內的處理電路讀取以用于由處理電路執(zhí)行。處理器最容易使用的緩存(通常比處理器中其他的緩存更快和更小)是最低層級(LI或一級)緩存,并且主存儲器(主內存)是最高層級的緩存(如果有3個層級的話就是L3)。最低層級的緩存經常被劃分為保存待執(zhí)行機器指令的指令緩存(I-Cache)以及保存運算數(shù)據的數(shù)據緩存(D-Cache)。參照圖17,示出了用于處理器5026的一種示范性處理器實施例。通常高速緩存5053中的一個或多個層級為了提高處理器的性能而被用于緩沖內存塊。高速緩存5053是一種保存可能要使用的內存數(shù)據緩存行的高速緩沖器。通常緩存行是64,128或256字節(jié)的存儲數(shù)據。獨立的緩存經常被用于緩存指令而不是緩存數(shù)據。緩存一致性(在存儲器和緩存中復制多行的同步性)經常由本領域公知的各種“監(jiān)聽”算法提供。處理器系統(tǒng)中的主內存存儲器5025經常被稱為高速緩存。在具有四級緩存5053的處理器系統(tǒng)中,主存儲器5025有時被稱為5級(L5)緩存,原因是它通常更快并且僅保留計算機系統(tǒng)可用的一部分非易失性存儲器(DASD、磁帶等)。主存儲器5025通過操作系統(tǒng)“緩存”分頁進出主存儲器5025的多頁數(shù)據。程序計數(shù)器(指令計數(shù)器)5061記錄執(zhí)行的當前指令的地址。 z/4rchitectuie丸處理器中的程序計數(shù)器是64位并且可以截為31或24位以支持現(xiàn)有的尋址限制。程序計數(shù)器通常在計算機的PSW(程序狀態(tài)字)中實現(xiàn)以使其在上下文切換期間持續(xù)。因此,運行中具有程序計數(shù)值的程序可以例如由操作系統(tǒng)中斷(從程序環(huán)境切換任務到操作系統(tǒng)環(huán)境)。程序中的PSW在程序未激活時保留程序計數(shù)值,并且操作系統(tǒng)中(PSW內)的程序計數(shù)器在操作系統(tǒng)運行時使用。通常,程序計數(shù)器增加的數(shù)值等于當前指令的字節(jié)數(shù)。RISC (精簡指令集計算)指令通常是固定長度,而CISC (復雜指令集計算)指令通常是可變長度。IBMZ/Architeeture 中的指令是長度為2,4或6字節(jié)的cisc指令。程序計數(shù)器5061例如通過任務切換操作或者分支指令中的分支獲取操作進行修改。在任務切換操作中,當前的程序計數(shù)值與關于運行程序的其他狀態(tài)信息一起被保存在程序狀態(tài)字(例如狀態(tài)碼)內,并且載入新的程序計數(shù)值指向要運行的新程序模塊中的指令。執(zhí)行分支獲取操作是為了允許程序通過將分支指令的結果載入到程序計數(shù)器5061內而進行決策或者在程序內循環(huán)。通常指令提取單元5055被用于代表處理器5026提取指令。提取單元提取“下一個順序指令”、分支獲取指令中的目標指令或者上下文切換后的程序中的第一指令。現(xiàn)代的指令提取單元經常使用預提取技術以根據可能使用的預提取指令的可能性來推測性地預提取指令。例如,提取單元可以提取16字節(jié)的指令,其中包括下一個順序指令和再下一個順序指令中的附加字節(jié)。提取的指令隨后由處理器5026執(zhí)行。在一個實施例中,提取的指令被傳輸至提取單元中的分配單元5056。分配單元解碼指令并將解碼指令的相關信息轉發(fā)至適當?shù)膯卧?057,5058,5060。執(zhí)行單元5057通常從指令提取單元5055接收關于解碼運算指令的信息并且可以根據指令中的操作碼對操作數(shù)執(zhí)行運算操作。操作數(shù)優(yōu)選地從內存5025、架構寄存器5059或者從執(zhí)行指令的后續(xù)字段中提供給執(zhí)行單元5057。運行結果在存儲時被存儲在內存5025、寄存器5059或其他的機器硬件(例如控制寄存器、PSW寄存器等)內。處理器5026通常具有用于執(zhí)行指令功能的一個或多個單元5057,5058,5060。參照圖18A,執(zhí)行單元5057可以通過接口邏輯塊5071與結構化通用寄存器5059、解碼/分配單元5056、載入存儲單元5060以及其他的處理器單元5056通信。執(zhí)行單元5057可以使用幾個寄存器電路5067,5068,5069來保留可供算數(shù)邏輯單元(ALU) 5066運算的信息。ALU執(zhí)行運算操作例如加、減、乘和除以及邏輯功能例如與、或和異或(XOR)、回轉和移位。優(yōu)選地,ALU支持與設計相關的專用操作。其他的電路可以提供其他的結構化功能5072,例如包括狀態(tài)碼和恢復支持邏輯。通常ALU的運算結果被保留在輸出寄存器電路5070內,它能夠將結果轉發(fā)至各種其他的處理功能。處理器單元有多種設置方式,本說明書僅僅是為了提供理解一個實施例的代表性方式。ADD指令例如應該在具有結構化和邏輯功能的執(zhí)行單元5057中執(zhí)行,而浮點指令例如應該在具有專用浮點能力的浮點執(zhí)行中執(zhí)行。優(yōu)選地,執(zhí)行單元通過對操作數(shù)執(zhí)行操作碼定義的函數(shù)而對指令識別的操作數(shù)進行運算。例如,ADD指令可以由執(zhí)行單元5057對指令中的寄存器字段標識的兩個寄存器5059中得到的操作數(shù)執(zhí)行。執(zhí)行單元5057對兩個操作數(shù)執(zhí)行加法運算并將結果存儲在第三操作數(shù)內,其中第三操作數(shù)可以是第三寄存器或者是兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地使用能夠實現(xiàn)各種邏輯功能例如移位、回轉、與、或和異或以及包括加減乘除在內的各種算數(shù)功能的算數(shù)邏輯單元(ALU) 5066。某些ALU 5066被設計用于標量運算而某些則用于浮點運算。數(shù)據 根據架構可以是大端存儲(其中最低有效字節(jié)位于最高的字節(jié)地址)或小端存儲(其中最低有效字節(jié)位于最低的字節(jié)地址)。iBMz/Arehitecture 是大端存儲。符號字段根據架構可以是符號和量值、I’ S補數(shù)或2’ S補數(shù)。2’ S補數(shù)的有利之處在于ALU不需要設計減法功能,原因是無論負值還是正值在2’ S補數(shù)中都只需要在ALU內做加法。數(shù)字通常以簡寫形式表示,例如其中12位的字段定義了 4096字節(jié)的塊地址并且通常被描述為4K字節(jié)(千字節(jié))的塊。參見圖18B,用于執(zhí)行分支指令的分支指令信息通常被發(fā)送至分支單元5058,其經常使用分支預測算法例如分支歷史表5082以在完成其他的條件操作之前預測分支輸出。當前分支指令的目標應該是在完成條件操作之前進行提取并推測性地執(zhí)行。當條件操作完成時,推測性地執(zhí)行分支指令應根據條件操作中的條件和推測性輸出而完成或棄用。典型的分支指令可以測試狀態(tài)碼并且如果狀態(tài)碼滿足分支指令中的分支要求則轉移至目標地址,目標地址可以根據例如在寄存器字段或指令后續(xù)字段中找到的若干數(shù)值進行計算。分支單元5058可以使用具有多個輸入寄存器電路5075,5076,5077和輸出寄存器電路5080的ALU 5074。分支單元例如5058可以與通用寄存器5059、解碼分配單元5056或其他電路5073通信。指令組的執(zhí)行可以由于多種原因而中斷,包括例如由操作系統(tǒng)引發(fā)的任務切換、程序異常或錯誤導致的任務切換、I/o中斷導致的任務切換或者(多線程環(huán)境中)多個程序的多線程動作等。優(yōu)選地,任務切換動作保存關于當前執(zhí)行程序的狀態(tài)信息并隨后載入關于所涉及另一程序的狀態(tài)信息。狀態(tài)信息例如可以保存在硬件寄存器或內存中。狀態(tài)信息優(yōu)選地包括指向要執(zhí)行的下一條指令的程序計數(shù)值、狀態(tài)碼、內存轉換信息和架構寄存器內容。任務切換動作可以由硬件電路、應用程序、操作系統(tǒng)程序或固件代碼(單獨或組合的微代碼、超微代碼或特許內部代碼(LIC))激活。處理器根據指令定義的方法存取操作數(shù)。指令可以利用一部分指令中的數(shù)值提供即時操作數(shù),可以提供明確指向通用寄存器或專用寄存器(例如浮點寄存器)的一個或多個寄存器字段。指令可以使用由操作碼字段作為操作數(shù)標明的默認寄存器。指令可以使用操作數(shù)所用的內存位置。操作數(shù)的內存位置可以由z/Ardiiteeture 的長移位設置中給出的寄存器、后續(xù)字段或寄存器和后續(xù)字段的組合提供,其中指令定義基址寄存器、變址寄存器和后續(xù)字段(移位字段),例如將它們加在一起以提供內存中的操作數(shù)地址。除非另有說明,否則本文中的位置通常是指主內存(主存儲器)中的位置。參照圖18C,處理器利用載入/存儲單元5060訪問存儲器。載入/存儲單元5060可以通過獲得內存5053中目標操作數(shù)的地址來執(zhí)行載入操作并且將操作數(shù)載入寄存器5059或另一個內存位置5053,或者可以通過獲得內存5053中目標操作數(shù)的地址來執(zhí)行存儲操作并且將從寄存器5059或另一個內存位置5053獲得的操作數(shù)存入內存5053中的目標操作數(shù)位置。載入/存儲單元5060可以是推測性的,并且可以按照相對于指令順序打亂的順序來訪問內存,但是載入/存儲單元5060應用于保持對按順序執(zhí)行指令的程序的外部特征。載入/存儲單元5060可以與通用寄存器5059、解碼/分配單元5056、緩存/內存接口5053或其他元件5083通信并且包括各種寄存器電路、ALU5085和控制邏輯5090以計算存儲地址并提供流水線順序從而保持按順序操作。某些操作可以不按順序,但是載入/存儲單元提供使不按順序的操作對程序表現(xiàn)為按順序執(zhí)行的功能,正如本領域所公知的那樣。 優(yōu)選地應用程序“看到”的地址經常被稱為虛擬地址。虛擬地址有時被稱為“邏輯地址”和“有效地址”。這些虛擬地址是虛擬的,原因在于它們通過多種動態(tài)地址轉換(DAT)技術中的一種被重新定向至物理內存位置,這些技術包括但不限于用偏移值簡單地預先固定虛擬地址,通過一個或多個轉換表轉換虛擬地址,轉換表優(yōu)選地包括單獨或組合使用的至少一個分段表和頁表,優(yōu)選地分段表具有通往頁表的進入點。在z/Architecture 中提供的分級轉換包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、分段表和可選頁表。地址轉換的性能經??赏ㄟ^利用轉換旁視緩沖器(TLB)來提高,其中包括將虛擬地址映射至相關物理內存位置的項目。所述項目在DAT利用轉換表轉換虛擬地址時構建。隨后使用虛擬地址即可利用快速TLB中的項目而不是慢速的順序轉換表訪問。TLB的內容可以由包括LRU (最近使用算法)在內的多種移位算法管理。在處理器是多處理器系統(tǒng)中的處理器的情況下,每一個處理器都有為了一致性而保持共享資源例如I/o、緩存、TLB和內存聯(lián)鎖的責任。通常,可以使用“監(jiān)聽”技術以保持緩存一致性。在監(jiān)聽環(huán)境中,每一個緩存行都可以為了有助于共享而被標識符為處于共享狀態(tài)、排他狀態(tài)、變化狀態(tài)和無效狀態(tài)等的任何一種。I/O單元5054(圖17)為處理器提供了用于連接至例如包括磁帶、磁盤、打印機、顯示器和網絡的外設的裝置。I/o單元經常由軟件驅動器提供給計算機程序。在大型計算機例如IBM 的System Z 中,信道適配器和開放系統(tǒng)適配器就是大型計算機的I/O單元,在操作系統(tǒng)和外設之間提供通信。而且,其他類型的計算環(huán)境也可以受益于本發(fā)明的一個或多個方面。作為示例,如上所述,一種環(huán)境可以包括模擬器(例如軟件或其他模擬機制),在其中(例如在具有處理器和內存的原生計算機系統(tǒng)中)模擬特定架構(包括例如指令執(zhí)行、架構功能例如地址轉換和架構寄存器)或其子集。在這樣的環(huán)境中,即使是計算機執(zhí)行的模擬器可能具有不同于模擬功能的架構,模擬器的一種或多種模擬功能也可以實現(xiàn)本發(fā)明的一個或多個方面。作為一個示例,在模擬模式中,解碼模擬的具體指令或操作,并且構建適當?shù)哪M功能以實施各項指令或操作。
在模擬環(huán)境中,主計算機包括例如存儲指令和數(shù)據的內存;從內存中提取指令并且可選地為提取的指令提供局部緩沖的指令企圖單元;接收提取的指令并判定提取指令類型的指令解碼單元;以及執(zhí)行指令的指令執(zhí)行單元。執(zhí)行可以包括將數(shù)據從內存載入寄存器內;將數(shù)據從寄存器存回到內存中;或者執(zhí)行由解碼單元確定的某種類型的計算或邏輯操作。在一個示例中,每一個單元都以軟件實施。例如,由單元執(zhí)行的操作被實施為模擬器程序中的一個或多個子程序。更具體地,在大型計算機中,架構的機器指令經常由編程人員,目前通常是“C”語言編程人員通過編譯器應用來使用。存儲介質內存儲的這些指令可以由z/Architeetui*e IBM 服務器自身執(zhí)行,或者可選地在執(zhí)行其他架構的機器內執(zhí)行。它們可以在現(xiàn)有和未來的IBM 主機服務器以及IBM 的其他機器(例如PowerSystems服務器和System X⑧服務器)中模擬。它們可以在使用由IBM 、Intel( 、AMD 制造的硬件的多種機器上運行Linux的機器內執(zhí)行。除了在z/Architecture 的硬件上運行以外,也可以使用Linux以及由TurboHercules (www. turbohercules.com/), Hercules(www. hercules-390. org/)或 FSI(Fundamental Software, Inc) (www. ftinsoft. com/)使用模擬的機器,其中通常都是在模擬模式中運執(zhí)行。在模擬模式中,模擬軟件由原生處理器執(zhí)行以模擬被模擬處理器的架構。原生處理器通常執(zhí)行的模擬軟件,包括用于執(zhí)行被模擬處理器模擬的固件或原生操作系統(tǒng)。模擬軟件負責用于提取和執(zhí)行被模擬處理器架構中的指令。模擬軟件保留被模擬程序計數(shù)器以記錄指令邊界。模擬軟件每次可以提取一條或多條模擬的機器指令并且將一條或多條模擬的機器指令轉化為對應的原生機器指令組以由原生處理器執(zhí)行。這些轉化的指令可以被緩存以使得可以實現(xiàn)更快的轉換。無論如何,模擬軟件是用于保持被模擬處理器架構中的架構規(guī)則從而確保被編寫用于被模擬處理器的操作系統(tǒng)和應用程序正確運行。而且,模擬軟件是用于提供由被模擬處理器架構表示的資源,包括但不限于控制寄存器,通用寄存器,浮點寄存器,包含例如分段表和頁表的動態(tài)地址轉換功能,中斷機制,上下文切換機制,日期時間(TOD)時鐘以及通往1/0子系統(tǒng)的架構接口,以使得設計用于在被模擬處理器上運行的操作系統(tǒng)或應用程序能夠在裝有模擬軟件的原生處理器上運行。具體的模擬指令被解碼,并且調用子程序以執(zhí)行各條指令的功能。模擬被模擬處理器功能的模擬軟件功能例如用“C”語言的子程序或驅動器或者某種其他的提供驅動器用于特定硬件的方法實現(xiàn),正如本領域技術人員在理解優(yōu)選實施例的說明內容之后應該想到的那樣。各種軟件和硬件模擬的專利包括但不限于=Beausoleil等人題為“Multiprocessor for Hardware Emulation” 的美國專利 US5, 551,013 ;Scalzi 等人題為“Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructionson a TargetProcessor” 的美國專利 US6, 009,261 ;Davidian 等人題為 “DecodingGuestInstruction to Directly Access Emulation Routines that Emulatethe GuestInstructions” 的美國專利 US5, 574,873 ;Gorishek 等人題為“SymmetricalMultiprocessing Bus and Chipset Used forCoprocessor Support Allowing Non-NativeCode to Run in aSystem”的美國專利US6, 308,255 ;Lethin等人題為“DynamicOptimizingObject Code Translator for Architecture Emulation andDynamic Optimizing ObjectCode Translation Method” 的美國專利 US6, 463, 582 ;Eric Traut 題為 “Method forEmulating GuestInstructions on a Host Computer Through Dynamic RecompilationofHost Instructions”的美國專利US5, 790, 825 ;以及給出多種已知方法來對于本領域技術人員可以獲得的目標機器實現(xiàn)構架用于不同機器的指令格式模擬的很多其他文獻。本文中所用術語僅僅是為了描述特定的實施例,而并不是要限制本發(fā)明。如本文中所用,單數(shù)形式“一種”、“一個”和“這個”應理解為也包括復數(shù)形式,除非上下文中清楚地另有說明。進一步應該理解的是術語“包括”和/或“包含”在本說明書中使用時明確了所述特征、整體、步驟、操作、元件和/或部件的存在,但是并不排除存在或加有一個或多個其他的特征、整體、步驟、操作、元件、部件和/或其群組。以下權利要求中的對應結構、材料、動作和所有裝置或步驟以及功能元件的等價形式都應理解為包括用于實現(xiàn)與其他權利要求中明確主張的元素相結合的功能的任意結構、材料或動作。本發(fā)明的說明書是為了解釋和說明而提供,并不是為了窮舉或者將本發(fā)明限制為所公開的形式。多種修改和變形對于本領域技術人員來說顯而易見且并不背離本發(fā)明的保護范圍。選擇和介紹實施例是為了清楚地解釋本發(fā)明的原理和實際應用,并且使本 領域技術人員能夠理解本發(fā)明以得到具有各種修改的適用于特定預期用途的不同實施例。
權利要求
1.一種用于執(zhí)行診斷指令以串行化計算環(huán)境中的處理的方法,所述方法包括 獲取用于執(zhí)行的機器指令,所述機器指令根據計算機架構被定義用于計算機執(zhí)行,所述機器指令包括 標識診斷指令的操作碼字段; 標識第一位置的子碼字段,其內容包括在執(zhí)行診斷指令時使用的子碼;以及標識第二位置的基址字段,其內容被加入移位字段的內容中以獲得用于標識將診斷指令用于串行化處理的操作碼擴展;并且 執(zhí)行由操作碼擴展指示的機器指令,所述執(zhí)行包括 對預定值的子碼做出響應 啟動計算環(huán)境中的處理器的靜默; 確定處理器已靜默;以及 響應于處理器靜默,完成診斷指令的執(zhí)行。
2.如權利要求I所述的方法,其中所述機器指令進一步包括標識第三位置的控制區(qū)域字段,在該第三位置處提供系統(tǒng)調用區(qū)域的地址。
3.如權利要求2所述的方法,其中響應于預定值的子碼,所述系統(tǒng)調用區(qū)域的地址標識正在對其進行轉換的客戶機,并且其中所述方法進一步包括響應于對客戶機執(zhí)行轉換而發(fā)出所述機器指令。
4.如權利要求3所述的方法,其中所述方法進一步包括 判定客戶機是否是多處理客戶機; 響應于客戶機是多處理客戶機,判定是否已設定聯(lián)鎖; 響應于聯(lián)鎖未設定,設定聯(lián)鎖和主機鎖; 響應于聯(lián)鎖已設定,更新主機鎖;以及 響應于成功設定或更新主機鎖而發(fā)出所述機器指令。
5.如權利要求4所述的方法,其中所述主機鎖的設定與客戶機鎖無關。
6.如權利要求I所述的方法,其中所述方法進一步包括設定主機鎖,并且響應于此,發(fā)出所述機器指令。
7.如權利要求6所述的方法,其中執(zhí)行機器指令包括使主機鎖對計算環(huán)境的處理器可見。
8.如權利要求I所述的方法,其中完成診斷指令的執(zhí)行包括退出靜默狀態(tài)。
9.如權利要求I所述的方法,其中所述方法進一步包括 由客戶機發(fā)出使用鎖的靜默型指令,所述靜默型指令通過由主機對該客戶機執(zhí)行的轉換處理而被串行化; 判定是否已設定主機鎖;以及 響應于主機鎖未設定,發(fā)出靜默型指令而無需使用客戶機鎖。
10.如權利要求9所述的方法,其中響應于主機鎖已設定一這指示機器指令的執(zhí)行尚未完成,截取至主機。
11.如權利要求I所述的方法,其中所述方法進一步包括 設定由第一實體和第二實體共享的聯(lián)鎖; 響應于設定聯(lián)鎖而更新第一實體鎖;以及響應于成功更新第一實體鎖而發(fā)出機器指令,其中所述機器指令實現(xiàn)第一實體和第二實體的處理之間的串行化而無需設定第二實體鎖。
12.一種用于執(zhí)行診斷指令以串行化計算環(huán)境中的處理的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器; 與存儲器通信的處理器; 用于獲取機器指令以供執(zhí)行的獲取器,所述機器指令根據計算機架構被定義用于計算機執(zhí)行,所述機器指令包括 標識診斷指令的操作碼字段; 標識第一位置的子碼字段,其內容包括在執(zhí)行診斷指令時使用的子碼;以及 標識第二位置的基址字段,其內容被加入移位字段的內容以獲得用于標識正在將診斷指令用于串行化處理的操作碼擴展; 用于執(zhí)行由操作碼擴展指示的機器指令的執(zhí)行器,所述執(zhí)行器包括對預定值的子碼做出響應的裝置,包括 用于啟動計算環(huán)境中處理器靜默的啟動器; 用于判定處理器已靜默的判定器;以及 用于響應處理器靜默完成診斷指令執(zhí)行的執(zhí)行完成器。
13.一種計算機程序,包括存儲在計算機可讀取介質上的計算機程序代碼,在將所述計算機程序代碼載入計算機系統(tǒng)并在其上執(zhí)行時,所述計算機程序代碼促使所述計算機系統(tǒng)執(zhí)行如權利要求I至11中的任意一項所述方法中的所有步驟。
14.一種用于執(zhí)行診斷指令以串行化計算環(huán)境中的處理的計算機系統(tǒng),所述計算機系統(tǒng)包括 存儲器;和 與存儲器通信的處理器,其中計算機系統(tǒng)被設置用于執(zhí)行如下方法,所述方法包括獲取用于執(zhí)行的機器指令,所述機器指令根據計算機架構被定義用于計算機執(zhí)行,所述機器指令包括 標識診斷指令的操作碼字段; 標識第一位置的子碼字段,其內容包括在執(zhí)行診斷指令時使用的子碼;以及標識第二位置的基址字段,其內容被加入移位字段的內容以獲得用于標識正在將診斷指令用于串行化處理的操作碼擴展;并且 執(zhí)行由操作碼擴展指示的機器指令,所述執(zhí)行包括 對預定值的子碼做出響應 啟動計算環(huán)境中的處理器靜默; 確定處理器已靜默;以及 響應于處理器靜默完成診斷指令的執(zhí)行。
15.如權利要求14所述的計算機系統(tǒng),其中所述機器指令進一步包括標識第三位置的控制區(qū)域字段,在所述第三位置處提供系統(tǒng)調用區(qū)域的地址。
16.如權利要求15所述的計算機系統(tǒng),其中響應于預定值的子碼,所述系統(tǒng)調用區(qū)域的地址標識正在對其進行轉換的客戶機,并且其中所述方法進一步包括響應于對客戶機執(zhí)行轉換而發(fā)出所述機器指令。
17.如權利要求14所述的計算機程序產品,其中所述方法進一步包括 判定客戶機是否是多處理客戶機; 響應于客戶機是多處理客戶機,判定是否已設定聯(lián)鎖; 響應于聯(lián)鎖未設定,設定聯(lián)鎖和主機鎖; 響應于聯(lián)鎖已設定,更新主機鎖;以及 響應于成功設定或更新主機鎖而發(fā)出機器指令,其中主機鎖的設定與客戶機鎖無關。
18.如權利要求14所述的計算機系統(tǒng),其中所述方法進一步包括設定主機鎖,并響應于此發(fā)出所述機器指令,并且其中執(zhí)行機器指令包括使主機鎖對計算環(huán)境的處理器可見。
19.如權利要求14所述的計算機系統(tǒng),其中所述方法進一步包括 由客戶機發(fā)出使用鎖的靜默型指令,靜默型指令通過由主機對該客戶機執(zhí)行的轉換處理而被串行化; 判定是否已設定主機鎖;以及 響應于主機鎖未設定,發(fā)出靜默型指令而無需使用客戶機鎖。
20.如權利要求19所述的計算機系統(tǒng),其中響應于主機鎖已設定一這指示機器指令的執(zhí)行尚未完成,截取至主機。
21.如權利要求14所述的計算機系統(tǒng),其中所述方法進一步包括 設定由第一實體和第二實體共享的聯(lián)鎖; 響應于設定聯(lián)鎖而更新第一實體鎖;以及 響應于成功更新第一實體鎖而發(fā)出機器指令,其中機器指令實現(xiàn)第一實體和第二實體的處理之間的串行化而無需設定第二實體鎖。
22.一種用于執(zhí)行診斷指令以串行化計算環(huán)境中的處理的計算機程序產品,所述計算機程序產品包括 計算機可讀取介質,可由處理電路讀取并存儲供所述處理電路執(zhí)行的指令以用于執(zhí)行如權利要求I至11中的任意一項所述的方法。
全文摘要
提供了一種系統(tǒng)串行化能力用于在允許多處理器的那些環(huán)境中幫助處理以更新相同的資源。系統(tǒng)串行化能力被用于在客戶機和主機使用鎖的多處理環(huán)境中幫助處理以提供串行化。系統(tǒng)串行化能力包括診斷指令,所述診斷指令在主機獲得鎖之后發(fā)出,消除了對客戶機獲取鎖的需要。
文檔編號G06F9/30GK102906699SQ201080066978
公開日2013年1月30日 申請日期2010年11月8日 優(yōu)先權日2010年6月24日
發(fā)明者L·海勒 申請人:國際商業(yè)機器公司