帶有幀管理的動態地址轉換的製作方法
2023-04-25 20:58:01 1
專利名稱:帶有幀管理的動態地址轉換的製作方法
技術領域:
本發明一般地涉及用於在計算機系統中轉換虛擬地址的系統和方法,更具體地 說,涉及在能夠進行虛擬地址轉換的計算機系統中執行幀管理功能的系統和方法。
背景技術:
動態地址轉換提供這樣的能力在任意時刻中斷程序的執行,將程序及其數據記 錄到諸如直接存取存儲設備之類的輔助存儲裝置中,並在以後將程序及其數據返回到其他 主存儲位置以恢復執行。程序及其數據在主存儲裝置和輔助存儲裝置之間的轉移可逐步執 行,並且可發生將信息返回到主存儲裝置以響應在執行需要時CPU訪問該信息的嘗試。這 些功能可在不更改或不檢查程序及其數據的情況下執行,它們不需要重新定位的程序中的 任何顯式編程約定,並且除了所涉及的時間延遲以外,不會干擾程序的執行。藉助作業系統的適當支持,可使用動態地址轉換工具為用戶提供一種其中存儲裝 置似乎大於配置中可用的主存儲裝置的系統。此明顯的主存儲裝置通常被稱為虛擬存儲裝 置,並且用於指定虛擬存儲裝置中的位置的地址通常被稱為虛擬地址。用戶的虛擬存儲裝 置遠大於配置中可用的主存儲裝置的大小並且一般在輔助存儲裝置中維護。虛擬存儲裝置 被視為包括通常被稱為頁(也被稱為段和區)的數據塊。僅將虛擬存儲裝置的最近被引用 的頁分配為佔用物理主存儲裝置的數據塊。當用戶引用的虛擬存儲裝置的頁不在主存儲裝 置中時,將調入這些頁以替換主存儲裝置中引用次數較少的頁。在某些情況下,虛擬存儲裝 置被長期(或永久)分配給主存儲裝置而不考慮是否引用該存儲裝置。作業系統可在用戶 不知情的情況下執行存儲裝置頁的調換。程序使用地址(或虛擬地址)訪問虛擬存儲裝置。程序可使用虛擬地址從虛擬存 儲裝置取回指令或從虛擬存儲裝置加載數據或存儲數據。與虛擬存儲裝置的範圍關聯的虛 擬地址定義了地址空間。藉助作業系統的適當支持,可使用動態地址轉換工具提供若干地 址空間。這些地址空間可用於提供用戶間的隔離程度。此類支持可針對每個用戶包含完全 不同的地址空間,從而提供完全的隔離,或者可通過將每個地址空間的一部分映射到單獨 的公共存儲區域來提供共享區域。另外,還提供了允許半特權程序訪問多個此類地址空間 的指令。動態地址轉換提供了來自多個不同地址空間的虛擬地址的轉換。這些地址空間被 稱為主地址空間、二級地址空間以及存取寄存器指定的地址空間。特權程序還可導致訪問 起始地址空間。可針對CPU生成的指令和數據地址指定動態地址轉換。需要一種提供本領域迄今為止尚未了解的附加功能、能力和保護的增強的動態地 址轉換工具。
發明內容
提供了針對計算機系統的機器體系結構定義的設置鍵和清除幀管理功能,所述計 算機系統具有用於將虛擬地址轉換成主存儲裝置或存儲器中的數據塊的實地址或絕對地
4址的轉換表層次結構。可向實地址添加前綴以形成絕對地址。在一個示例實施例中,獲取包含幀管理指令的操作碼的機器指令,所述幀管理指 令具有標識第一通用寄存器的第一欄位和標識第二通用寄存器的第二欄位。從所述第一通 用寄存器獲取幀管理欄位,所述幀管理欄位包含具有多個訪問-保護位的鍵欄位和塊大小 指示符欄位。從所述第二通用寄存器獲取要在其上執行所述機器指令的存儲幀的操作數地 址。所述操作數地址既可以是大數據塊的絕對地址,也可以是小數據塊的實地址。如果啟 用設置存儲鍵功能,則與所確定的數據塊關聯的每個存儲鍵的存儲訪問-保護位被設置為 所述鍵欄位的訪問-保護位的值。如果啟用清除功能,則通過將由所述操作數地址尋址的 每個數據塊的所有字節設置為0來清除每個數據塊。在另一實施例中,所述存儲鍵具有存儲保護位、存儲引用位以及存儲更改位。所述 鍵欄位具有取回保護位、引用位以及更改位。所述大數據塊大於所述小數據塊。對於所述 小數據塊,從所述第二通用寄存器獲取所述小數據塊的操作數地址,所述小數據塊具有包 含多個存儲訪問-保護位的存儲鍵。所述鍵欄位的所述訪問保護-位被設置為所述存儲鍵 的所述存儲訪問-保護位。下面將結合示出的特定實施例對本發明進行描述。應該理解,本領域的技術人員 可以在不偏離本發明的精神或範圍的情況下做出各種更改和修改。
附圖連同下面的詳細說明一起被結合到說明書中或構成說明書的一部分,用於全 部根據本發明進一步示出各種實施例和解釋各種原理和優點,在所述附圖中,相同的標號 在各個獨立的視圖之間表示相同或功能相似的元素。通過結合附圖進行下面詳細的說明, 此處披露的主題的上述及其他特性和優點將是顯而易見的,這些附圖是圖1示出了其中執行增強的動態地址轉換的主計算機系統的一個實施例;圖2提供了仿真具有主機體系結構的主計算機系統的示例仿真主計算機系統;圖3示出了如何使用程序狀態字針對虛擬地址的動態地址轉換確定有效ASCE的 一個實施例;圖4示出了其中使用在圖3中確定的有效ASCE來確定在虛擬地址轉換中使用的 轉換表層次結構中的最高轉換表的一個實施例;圖5A示出了使用轉換表層次結構使虛擬地址被動態地址轉換到段表級別的過程 的一個實施例;圖5B示出了圖5A中的動態地址轉換的後續過程,其中段表表項(STE)格式控制 (FC)為 0 ;圖5C示出了圖5A中的動態地址轉換的後續過程,其中段表表項(STE)格式控制 (FC)為 1 ;圖6示出了增強的動態地址轉換(eDAT)獲取段表表項中的格式控制欄位的一個 實施例的流程圖;圖7示出了從圖6的節點614開始的流程圖的後續過程;圖8示出了從圖6的節點616開始的流程圖的後續過程;圖9示出了其中已設置所指示的存儲鍵的執行幀管理功能(PFMF)的一個實施例的流程圖;圖10示出了其中已清除所指示的幀的執行幀管理功能(PFMF)的一個實施例的流 程圖。
具體實施例方式應該理解,本申請的說明書中做出的陳述並非一定限制各種要求保護的發明中的 任何發明。而且,某些陳述適用於某些發明特性,但不適用於其他發明特性。除非另外指出, 否則在不失一般性的情況下,單數元素可以表示複數元素,並且反之亦然。本領域中的技術人員很容易熟悉在計算環境中為存儲裝置尋址以及使用寄存器 或地址欄位中的位指示不同的狀態以及針對這些狀態執行操作。進而,本領域中的技術人 員了解電腦程式領域並且了解計算機系統組件之間的工作方式和相互關係。概述提供了增強的動態地址轉換(DAT)工具的示例實施例。當安裝並啟用增強的DAT 工具之後,DAT轉換可產生由段表表項中的段表表項(STE)格式控制確定的頁幀實地址或 段幀絕對地址。如在此使用的,術語「應用增強的DAT」表示滿足下面所有條件1)已安裝 EDAT工具;2)已通過控制寄存器0 (CRO)位40啟用EDAT工具;以及3)藉助DAT-表表項轉 換地址。應用增強的DAT之後,可以在DAT過程中提供以下附加功能將DAT保護位添加到區表表項,提供與段表表項和頁表表項中的DAT保護位類似 的功能。將STE格式控制添加到段表表項。當STE格式控制為0時,DAT按照當前定義的 那樣執行,除非頁表表項中的更改記錄忽略指示對於該頁可繞過是否設置更改位。當STE格式控制為1時,段表表項還包含以下內容段幀絕對地址(而非頁表起始地址),其指定1MB塊的絕對存儲位置。訪問控制位和一個取回保護位,其可選地可代替段的單個存儲鍵中的對應位而使 用。一個位,其確定段表表項中的訪問控制位和取回保護位的有效性。更改記錄忽略,其指示在段的單個存儲鍵中是否可繞過更改位設置。主計算機系統參考圖1,示出了主計算機系統100的代表組件。也可以在計算機系統中使用其他 組件布置,這在本領域中是公知的。主計算環境優選地基於由位於紐約阿蒙克的國際商業機器公司 (IBM )所提供的 z/Architecture 。^rcMtecmrZ Principles of Operation ( Z/Aixhiteeture 操作原理,IBM 出版號SA22-7832-05,第六版,2007 年4月)中更全面地描述了Z/Aixhiteeture ,其全部內容在此引入作為參考。基於
z/Architeeture 的計算環境例如包括eServer和zSeries ,均由IBM 提供。代表性主計算機100包括一個或多個CUP 101,其與主存儲裝置(計算機存儲器 102)通信以及與存儲設備111和網絡110的I/O接口通信以實現與其他計算機或存儲區域
6網絡(SAN)等通信。CPU可具有用於將程序地址(虛擬地址)轉換為存儲器的實地址的動 態地址轉換(DAT)工具(功能或單元)103。DAT工具通常包括用於對轉換進行緩存的轉換 後備緩衝器107,這樣,稍後對計算機存儲器102的塊的訪問沒有地址轉換延遲。通常在計 算機存儲器102和處理器101之間使用高速緩存109。高速緩存109可具有層次結構,其中 較大的高速緩存可用於多個CPU,而較小、較快(較低級別)的高速緩存位於較大的高速緩 存和每個CPU之間。在某些實施方式中,將分割較低級別的高速緩存以針對指令取回和數 據訪問提供單獨的低級別高速緩存。在一個實施例中,指令取回單元104通過高速緩存109 從存儲器102取回指令。所述指令在指令解碼單元(106)中進行解碼並被分派到(在某些 實施例中,與其他指令一起被分派到)指令執行單元108。通常採用若干執行單元108,例 如算術執行單元、浮點執行單元和分支指令執行單元。執行單元執行指令,根據需要訪問指 令指定的寄存器或存儲器中的操作數。如果要從存儲器102訪問(加載或存儲)操作數, 則通常由加載存儲單元105在被執行的指令的控制下處理訪問。在一個實施例中,本發明通過軟體(有時稱為許可內碼(LIC)、固件、微代碼、毫代 碼、微微代碼等,它們均與本發明一致)實現。體現本發明的軟體程序代碼通常由計算機系 統100中被稱為CPU(中央處理單元)101的處理器從諸如⑶-ROM驅動器、磁帶或硬碟驅動 器之類的長期存儲介質111進行訪問。所述軟體程序代碼可體現在諸如磁碟、硬碟驅動器 或CD-ROM之類的各種已知介質上以便與數據處理系統一起使用。所述代碼可通過此類介 質分發,也可從計算機存儲器102分發給用戶,或通過網絡110從某個計算機系統的存儲裝 置分發給其他計算機系統以供此類其他系統的用戶使用。備選地,所述程序代碼可以位於存儲器102中,由處理器101使用處理器總線進行 訪問。此類程序代碼包括控制各種計算機組件的功能及交互以及一個或多個應用程式的操 作系統。程序代碼一般從密集存儲介質111分頁到高速存儲器102,在高速存儲器102處, 此類程序代碼可由處理器101進行處理。將軟體程序代碼包含在存儲器、物理介質中以及/ 或者通過網絡分發軟體代碼的技術和方法是公知的,此處不做進一步討論。當創建程序代 碼並將其存儲在有形介質(包括但不限於電子存儲器模塊(RAM)、快閃記憶體、光碟(CD)、DVD、磁 帶等)上時,通常被稱為「電腦程式產品」。電腦程式產品介質一般可由優選地在計算 機系統中的處理電路讀取以便由所述處理電路進行處理。在圖2中,提供了仿真主機體系結構的主計算機系統100的示例仿真主計算機系 統201。在仿真主計算機系統201中,主機處理器(CPU) 208為仿真主機處理器(或虛擬主 機處理器)並包括仿真處理器207,仿真處理器207具有的本機指令集體系結構不同於主計 算機100的處理器101使用的指令集體系結構。仿真主計算機系統201包括可由仿真處理 器207訪問的存儲器202。在示例實施例中,存儲器202被劃分成主計算機存儲器102部分 和仿真例程203部分(提供仿真的例程可為主機存儲器的一部分)。根據主計算機體系結 構,主計算機存儲器102可供仿真的主計算機201的程序使用。仿真處理器207執行體系 結構不同於被仿真的處理器208的架構指令集的本機指令(從仿真例程存儲器203獲取所 述本地指令),並可通過使用在序列與訪問/解碼例程中獲取的一個或多個指令來從主計 算機存儲器102中的程序訪問主機指令以便執行,所述序列與訪問/解碼例程可解碼所訪 問的主機指令(多個)以確定用於仿真所訪問的主機指令的功能的本機指令執行例程。其他針對主計算機系統100體系結構定義的工具可以由架構的工具例程進行仿真,其中包括諸如通用寄存器、控制寄存器、動態地址轉換和I/O子系統支持以及處理器高 速緩存之類的工具。仿真例程還可利用仿真處理器207中可提供的功能(例如通用寄存器 和虛擬地址的動態轉換)以提高自身的性能。還可提供專用硬體和卸載引擎來幫助處理器 207仿真主計算機100的功能。計算機處理器和寄存器在一個實施例中,CPU的程序指令功能通過通信總線與多個寄存器進行通信。所 述通信總線可以是CPU的內部總線,也可以是其外部總線。某些寄存器可以是只讀的。其 他硬體和/或軟體也可以對CPU所訪問的一個或多個寄存器執行讀/寫操作。指令操作碼 (opcode)確定在任意特定機器指令操作中使用哪種類型的寄存器。通用寄存器指令可以在16個通用寄存器中的一個或多個寄存器中指定信息。所述通用寄存 器可用作地址算術中的基址寄存器和索引寄存器以及用作一般算術和邏輯操作中的累加 器。每個寄存器都包含64個位位置。通用寄存器通過數字0-15來識別,並且由指令中的 4位R欄位指定。某些指令通過具有若干R欄位來提供對多個通用寄存器的尋址。對於某 些指令,將隱含使用特定的通用寄存器,而不是由指令的R欄位顯式地指定。對於某些操作,將兩個相鄰通用寄存器的位32-63或位0_63相連,從而分別提供 64位或128位格式。在這些操作中,程序必須指定偶數編號的寄存器,其包含最左側的(高 階)32或64個位。下一較高編號的寄存器包含最右側(低階)的32或64個位。除了在 一般算術和邏輯操作中用作累加器之外,16個通用寄存器中的15個通用寄存器還被用作 地址生成中的基址寄存器和索引寄存器。在這些情況下,寄存器由指令中的4位B欄位或 X欄位指定。B或X欄位中的零值指定不應用任何基址或索引,因此,通用寄存器0不能被 指定為包含基址或索引。控制寄存器控制寄存器提供程序狀態字以外的控制信息的維護和操縱。CPU具有16個控制寄 存器,每個控制寄存器都具有64個位位置。所述寄存器中的位位置被分配給系統中諸如程 序事件記錄之類的特定工具,並用於指定操作可以發生或用於提供工具所需的特殊信息。 控制寄存器通過數字0-15來識別並且由指令LOAD CONTROL和STORE CONTROL中的4位R 欄位指定。可以通過這些指令尋址多個控制寄存器。控制寄存器1控制寄存器1包含主地址空間控制元素(PASCE)。在一個實施例中,控制寄存器1 具有以下兩種格式之一,具體取決於寄存器中的實空間控制位(R)主區表或段表指定(R = 0) 主實空間指定(R = 1) 控制寄存器1的格式主地址空間控制元素(PASCE)中的選定欄位按如下方式進行分配主區表或段表起始地址控制寄存器1中的主區表或段表指定的位0-51及右側附 加的12個0形成指定主區表或段表的開頭的64位地址。無法預測此地址是實地址還是絕 對地址。該表被稱為主區表或段表,因為它用於在主地址空間中轉換虛擬地址。主實空間控制(R)如果控制寄存器1的位58為0,則所述寄存器包含區表或段表 指定。如果位58為1,則所述寄存器包含實空間指定。當位58為1時,在轉換對主地址空 間的引用時,即使控制寄存器1中的令牌起始地址與轉換後備緩衝器表項中的起始地址匹 配,段表表項的轉換後備緩衝器表示中的公共段位的1值也會阻止使用表項以及它所指定 的轉換後備緩衝器頁表副本。主指定類型控制(DT)當R為0時,控制寄存器1中的表指定類型由所述寄存器 中的位60和61指定,如下所示
主指定類型(DT)控制位當R為0時,在嘗試使用PASCE轉換虛擬地址(其中最左側的一個位在地址的位 位置0-10中)時,位60和61必須為二進位11。類似地,在最左側的一個位在地址的位位 置11-21中時,位60和61必須為二進位11或10,並且在最左側的一個位在地址的位位置 22-32中時,它們必須為二進位11、10或01。否則,將識別到ASCE-型異常。主區表或段表長度(TL)控制寄存器1中的主區表指定或段表指定的位62和63 以4,096位元組為單位指定主區表或段表的長度,從而使區表或段表的長度以512個表項的 倍數來變化。以4,096位元組為單位的主區表或段表的長度大於TL值。長度欄位的內容用 於確定通過錶轉換的虛擬地址部分(RFX、RSX、RTX或SX)是否指定落入表中的表項。主實空間令牌起始地址控制寄存器1中的主實空間指定的位0-51以及右側附加 的12個0形成64位地址,該64位地址可以在形成和使用提供虛等於實(virtual equalsreal)轉換以引用主地址空間的轉換後備緩衝器表項中使用。儘管該地址僅用作令牌而不 用於執行存儲引用,但是其仍必須為有效地址;否則,當使用控制寄存器1的內容時,可能 使用不正確的轉換後備緩衝器表項。將不分配並忽略控制寄存器1的以下位當寄存器包含區表指定或段表指定時不 分配並忽略位52、53和59,當寄存器包含實空間指定時不分配並忽略位52、53以及59-63。控制寄存器7控制寄存器7包含二級地址空間控制元素(SASCE)。在一個實施例中,控制寄存器 7具有以下兩種格式之一,具體取決於寄存器中的實空間控制位(R)二級區表或段表指定(R = 0) 控制寄存器7的格式控制寄存器13控制寄存器13包含起始地址空間控制元素(HASCE)。在一個實施例中,控制寄存 器13具有以下兩種格式之一,具體取決於寄存器中的實空間控制位(R)起始區表或段表指定(R = 0) 起始實空間指定(R = 1) 控制寄存器13的格式存取寄存器CPU具有16個以0-15進行編號的存取寄存器。存取寄存器包括32個位位置,所 述位位置包含對ASCE的間接指定。ASCE是動態地址轉換(DAT)機制在轉換對相應地址空 間的引用時所使用的參數。當CPU處於被稱為存取寄存器模式(由程序狀態字中的位控 制)的模式下時,用於指定存儲操作數引用的邏輯地址的指令B欄位將指定存取寄存器,並 且DAT針對所做的引用使用由存取寄存器指定的ASCE。對於某些指令,將使用R欄位,而非 B欄位。提供指令以加載和存儲存取寄存器的內容以及將某個存取寄存器的內容移至另一 存取寄存器。存取寄存器1-15中的每個都指定任意地址空間,其中包括當前指令空間(主地址 空間)。存取寄存器0指定主指令空間。當使用存取寄存器1-15之一指定地址空間時,CPU 通過轉換存取寄存器的內容來確定指定哪個地址空間。當使用存取寄存器0指定地址空間 時,CPU將存取寄存器視為指定主指令空間,並且它不會檢查存取寄存器的實際內容。因此, 16個存取寄存器在任意時刻可以指定主指令空間以及最多15個其他空間。程序狀態字(PSW)程序狀態字包括指令地址、條件碼以及其他用於控制指令排序及確定CPU狀態的 信息。活動的或執行控制的程序狀態字被稱為當前程序狀態字。它管理當前執行的程序。CPU具有中斷功能,此功能允許CPU迅速切換到另一程序以響應異常狀況和外部 激勵。當中斷發生時,CPU針對特定的中斷類別,將當前程序狀態字置於被稱為舊程序狀態 字位置的指定存儲位置。CPU從第二指定存儲位置取回新的程序狀態字。此新的程序狀態 字確定下一要執行的程序。完成中斷處理之後,處理中斷的程序會重新加載舊程序狀態字, 使其重新成為當前程序狀態字,以便繼續被中斷的程序。存在六個中斷類別外部、I/O、機器檢查、程序、重新啟動以及系統管理程序調用。 每個類別都具有在實際存儲裝置中永久指定的一對獨特的舊程序狀態字和新程序狀態字 位置。當前程序狀態字CPU中的當前程序狀態字包含執行當前活動的程序所需的信息。所述程序狀態字 的長度為128位,其中包括指令地址、條件碼以及其他控制欄位。一般而言,程序狀態字用 於控制指令排序以及用於保存和指示CPU中與當前執行的程序有關的多數狀態。其他控制 和狀態信息包含在控制寄存器和永久指定的存儲位置中。可通過加載新的程序狀態字或部 分程序狀態字來更改CPU的狀態。通過存儲當前程序狀態字以保留CPU的狀態,然後加載新的程序狀態字,在CPU中 斷期間切換控制。執行LOAD PSW或LOAD PSWEXTENDED,或成功地結束初始程序加載序列將引入新的程序狀態字。指令地址通過順序指令執行來更新,並且由成功的分支進行替換。 提供了對程序狀態字的一部分執行操作的其他指令。當更改程序狀態字的指令中斷或執行完成時,新的或修改後的程序狀態字將變為 活動(即,引入到當前程序狀態字內的信息開始控制CPU)。與更改程序狀態字的指令關聯 的程序事件記錄(PER)在PER掩碼的控制下發生中斷,所述掩碼在操作開始時生效。程序
狀態字的0-7位統稱為系統掩碼。在一個實施例中,程序狀態字具有以下格式 程序狀態字格式下面是對選定程序狀態字欄位功能的簡要描述。DAT模式(T)位5控制是否發生用於訪問存儲裝置的邏輯和指令地址的隱式動態 地址轉換。當位5為0時,DAT處於關閉狀態並且邏輯和指令地址被視為實地址。當位5為 1時,DAT處於打開狀態並且調用動態地址轉換機制。PSW鍵位8-11形成CPU引用存儲裝置時使用的訪問鍵。如果引用受到鍵控保 護,則當存儲信息或從具有取回保護的位置取回信息時,會將PSW鍵與存儲鍵進行匹配。但 是,對於 MOVE TO PRIMARY、MOVE T0SC0NDARY、MOVE WITH KEY、MOVE WITH SOURCE KEY 以 及MOVE WITH DESTINATION KEY中的每個的操作數之一而言,將使用被指定為操作數的訪 問鍵而不是PSW鍵。地址空間控制(AS)位16和17,它們與程序狀態字位5 —起控制轉換模式。條件碼(CC)位18和19是兩個條件碼位。所述條件碼被設為0、1、2或3,具體 取決於在執行特定指令時獲取的結果。多數算術和邏輯運算以及某些其他運算都設置條件 碼。指令BRANCH ON CONDITION可以將條件碼值中的任何選擇的值指定為分支準則。指令地址程序狀態字的位64-127為指令地址。該地址指定要執行的下一指令的 最左側字節的位置,除非CPU處於等待狀態(程序狀態字的位14為1)。地址類型和格式
為了尋址主存儲裝置,將識別三種基本類型的地址絕對地址、實地址和虛擬地 址。根據在存儲訪問期間施加於地址的變換來區分所述地址。地址轉換將虛擬地址轉換成 實地址。通過添加前綴將實地址轉換成絕對地址。除了三種基本地址類型以外,還定義了 附加類型,這些附加類型被視為三種基本類型中的一個或另一個,具體取決於指令和當前 模式。絕對地址絕對地址是分配給主存儲位置的地址。絕對地址用於存儲訪問,不需要對其執行 任何變換。配置中的通道子系統以及所有CPU通過使用相同的絕對地址來訪問共享主存儲 位置。通常為可用的主存儲裝置分配從0開始的連續絕對地址,以及在整數界限上以完整 的4KB數據塊分配地址。當嘗試在未被分配給物理位置的塊中使用絕對地址時,會識別到 異常。在某些模型上,可提供存儲重新配置控制,它允許操作者更改絕對地址與物理位置之 間的對應關係。但是,在任意時刻,一個物理位置都不與一個以上的絕對地址關聯。包括根 據字節位置的絕對地址排序的字節位置的存儲裝置被稱為絕對存儲裝置。實地址實地址標識實存儲裝置中的位置。當使用實地址訪問主存儲裝置時,藉助添加前 綴來轉換實地址以形成絕對地址。對於配置中的每個CPU,任何時刻都存在一個實地址到絕 對地址映射。當CPU使用實地址訪問主存儲裝置時,可通過添加前綴將此實地址轉換成絕 對地址。由CPU的前綴寄存器中的值定義特定的變換。包括根據字節位置的實地址排序的 字節位置的存儲裝置被稱為實存儲裝置。虛擬地址虛擬地址標識虛擬存儲裝置中的位置。當使用虛擬地址訪問主存儲裝置時,會借 助動態地址轉換將虛擬地址轉換成需要添加前綴以形成絕對地址的實地址,或直接轉換為 絕對地址。主虛擬地址主虛擬地址是要通過主地址空間控制元素(PASCE)轉換的虛擬地址。在主空間模 式下,邏輯地址被視為主虛擬地址。在主空間模式下、二級空間模式下或存取寄存器模式 下,指令地址被視為主虛擬地址。MOVE T0PRIMARY的第一操作數地址和MOVE TO SC0NDARY 的第二操作數地址被視為主虛擬地址。二級虛擬地址二級虛擬地址是要通過二級地址空間控制元素(SASCE)轉換的虛擬地址。在二級 空間模式下,邏輯地址被視為二級虛擬地址。MOVE T0PRIMARY的第二操作數地址和MOVE TO SC0NDARY的第一操作數地址被視為二級虛擬地址。AR指定的虛擬地址AR指定的虛擬地址是要通過存取寄存器指定的地址空間控制元素轉換的虛擬地 址。在存取寄存器模式下,邏輯地址被視為AR指定的地址。起始虛擬地址起始虛擬地址是要通過起始地址空間控制元素(HASCE)轉換的虛擬地址。在起始 空間模式下,邏輯地址和指令地址被視為起始虛擬地址。指令地址
13
用於從存儲裝置取回指令的地址被稱為指令地址。指令地址在實模式下被視為實 地址,在主空間模式下、二級空間模式下或存取寄存器模式下被視為主虛擬地址,以及在起 始空間模式下被視為起始虛擬地址。當前程序狀態字中的指令地址和EXE⑶TE的目標地址 為指令地址。有效地址在某些情況下,使用術語「有效地址」非常方便。有效地址是通過動態地址轉換或 添加前綴執行任何變換之前存在的地址。有效地址可以在寄存器內直接指定,也可以通過 地址算術得出。地址算術是對基址和位移執行加法或對基址、索引和位移執行加法。添加前綴添加前綴提供了這樣的能力對於每個CPU,將實地址範圍0-8191分配給絕對存 儲裝置中的不同塊,從而允許共享主存儲裝置的一個以上CPU在幹擾最小,尤其是在處理 中斷的情況下並行運行。添加前綴使範圍0-8191內的實地址以一對一的方式對應於通過 CPU的前綴寄存器的位位置0-50中的值所標識的8KB絕對地址塊(前綴區域),並使通過 所述前綴寄存器中的值標識的實地址塊以一對一的方式對應於絕對地址0-8191。其餘的實 地址與對應的絕對地址相同,該變換允許每個CPU訪問所有主存儲裝置,包括第一 8KB字節 以及由其他CPU的前綴寄存器指定的位置。所述前綴是前綴寄存器的位位置0-50中包含的51位量。在一個實施例中,前綴 寄存器具有以下格式
如果地址的位0-50全部為0,則地址的位0-50被前綴的位0-50所替換。 如果地址的位0-50等於前綴的位0-50,則地址的位0-50被0所替換。 如果地址的位0-50不全部為0且不等於前綴的位0-50,則地址的位0-50保持不
只有提供給存儲裝置的地址才通過添加前綴進行變換。地址的源的內容保持不
即使在前綴寄存器包含的位全部為0 (在此情況下實地址及其對應的絕對地址完
時也將區分實地址和絕對地址。
下圖示出了實地址和絕對地址之間的關係 地址空間是連續的整數序列(虛擬地址);另外還包括特定的變換參數,所述參數 允許將每個數字與存儲裝置中的字節位置關聯。所述序列以0開始,從左到右進行排列。當CPU使用虛擬地址訪問主存儲裝置時,首先通過動態地址轉換(DAT)將虛擬地 址轉換成實地址或絕對地址。可進一步向實地址添加前綴以形成絕對地址。DAT可使用區 第一表、區第二表、區第三表、段表以及頁表作為變換參數。特定地址空間的最高級別表的 指定(起始地址和長度)被稱為地址空間控制元素(ASCE),需要找到該元素以供控制寄存 器中的DAT使用或者由存取寄存器指定該元素。備選地,地址空間的ASCE可以是實空間指 定,後者指示DAT不使用任何表並且僅通過將虛擬地址視為實地址來轉換虛擬地址。DAT在不同的時間使用不同的控制寄存器中的ASCE或使用由存取寄存器指定的 ASCE。此選擇由當前程序狀態字中指定的轉換模式確定。可提供四種轉換模式主空間模 式、二級空間模式、存取寄存器模式以及起始空間模式。可根據轉換模式尋址不同的地址空 間。在CPU處於主空間模式或二級空間模式中的任何時刻,CPU可以轉換屬於兩個地 址空間(即,主地址空間和二級地址空間)的虛擬地址。在CPU處於存取寄存器模式中的 任何時刻,它可以轉換最多16個地址空間(即,主地址空間和最多15個AR指定的地址空 間)的虛擬地址。在CPU處於起始空間模式中的任何時刻,它可以轉換起始地址空間的虛 擬地址。這樣標識主地址空間是因為其包括主虛擬地址,通過主地址空間控制元素 (PASCE)轉換所述主虛擬地址。類似地,二級地址空間包括通過二級地址空間控制元素 (SASCE)轉換的二級虛擬地址。AR指定的地址空間包括通過存取寄存器指定的地址空間控 制元素(AR指定的ASCE)轉換的AR指定的虛擬地址,以及起始地址空間包括通過起始地址 空間控制元素(HASCE)轉換的起始虛擬地址。主ASCE和二級ASCE分別位於控制寄存器1 和7中。AR指定的ASCE可在控制寄存器1和7中,或者在被稱為ASN第二表表項的表表項 中。HASCE在控制寄存器13中。動態地址轉換動態地址轉換是將虛擬地址(例如,在存儲引用期間)轉換成對應的主存儲器地
15址(所述實施例中的實地址或絕對地址)的過程。所述虛擬地址可以是主虛擬地址、二級 虛擬地址、存取寄存器指定的虛擬地址或起始虛擬地址。這些地址分別通過PASCE、SASCE、 AR指定的ASCE或HASCE進行轉換。選擇適當的ASCE之後,對於所有四種虛擬地址類型而 言,轉換過程都是相同的。尋址轉換模式有效地址是通過動態地址轉換或添加前綴執行任意變換之前存在的地址(虛擬 地址)。程序狀態字中控制動態地址轉換的三個位分別為位5 (DAT模式位)、位16和17 (地 址空間控制位)。當DAT模式位為0時,DAT處於關閉狀態,CPU處於實模式下。當DAT模 式位為1時,DAT處於打開狀態,CPU處於由地址空間控制位指定的轉換模式下二進位00 指定主空間模式、二進位01指定存取寄存器模式,二進位10指定二級空間模式,以及二進 制11指定起始空間模式。下面將示出各種模式以及在每種模式下對地址的處理。 轉換模式程序狀態字是一個128位字,其一部分提供了 2個指示尋址模式的位。在一個實施 例中,位31是擴展尋址模式(EA)位並且位32是基本尋址模式(BA)位。這兩個位指示地址 的大小。這兩個位中每個位的狀態都以二進位(1或0)表示。如果EA位為0且BA位為0, 則指示24位尋址。如果指示24位尋址,則64位字(64位實體一般稱為雙字)的位40-63 是地址所在的位。當指令地址佔據128位實體(四倍長字)的第二個64位時,程序狀態字 中的位位置如下所示。在24位模式下,指令地址位於程序狀態字的位104-127中。在31 位模式下,指令地址位於程序狀態字的位97-127中。在64位模式下,指令地址位於程序狀 態字的位64-127中。如果EA位為0且BA位為1,則指示31位尋址。相應的64位字包含 位於位位置33-63中的31位地址。如果EA位為1且BA位為1,則64位字的位0_63 (全部 64位)包含地址。否則,將指示異常情況。一旦獲取了尋址模式,就需要確定ASCE。地址空間控制元素(ASCE)現在參考圖3,其中示出了如何使用程序狀態字針對虛擬地址的動態地址轉換確定有效的地址空間控制元素(ASCE)的一個實施例。ASCE可以例如指定2GB(G = 23°)的地 址空間。或者,可以例如指定4TB(T = 240)、8PB(P = 250)或16EB(E = 260)的地址空間。或 者,其可以指定實空間指定。實空間指定使虛擬地址被視為存儲裝置中的實地址而不引用 一個或多個地址轉換表。程序狀態字300包含轉換(T)位302和地址空間(AS)位304。在306,如果轉換 (T)位為0,則地址為實地址326。在308,如果地址空間(AS)等於0 ( 二進位00),則該虛 擬地址的有效ASCE為主地址空間控制元素(PASCE) 310。在312,如果地址空間(AS)等於 1 ( 二進位01),則有效ASCE為存取寄存器指定的地址空間控制元素314。在316,如果地址 空間(AS)等於2 ( 二進位10),則有效ASCE為二級地址空間控制元素(SASCE) 318。否則, 地址空間(AS)等於3 ( 二進位11)並且有效ASCE為起始地址空間控制元素(HASCE) 322。選擇有效ASCE之後,動態地址轉換過程優選地對於所有四種虛擬地址類型均相 同。段表指定或區表指定將使轉換通過作業系統在實或絕對存儲裝置中建立的表來 執行。實空間指定將使虛擬地址簡單地被視為實地址而不使用存儲裝置中的表。在使用段表指定或區表指定進行轉換的過程中,將識別三種類型的信息單位區、 段和頁。區是從2GB邊界開始的跨2GB的順序虛擬地址塊。段是從1MB邊界開始的跨1MB 的順序虛擬地址塊。頁是從4KB邊界開始的跨4KB的順序虛擬地址塊。虛擬地址格式虛擬地址轉換可涉及引用轉換表層次結構的多個轉換表以獲取實地址或絕對地 址。可以進一步對實地址執行添加前綴操作以形成絕對地址。虛擬地址包含對轉換表層次 結構中的轉換表內的表項的索引。因此,虛擬地址被分為四個主要欄位。位0-32被稱為區 索引(RX),位33-43被稱為段索引(SX),位44-51被稱為頁索引(PX),以及位52-63被稱為 字節索引(BX)。在一個實施例中,虛擬地址具有以下格式 虛擬地址的格式如其ASCE確定的,虛擬地址空間可以是包括一個區的2GB空間,也可以是包括最 多8GB的區的最多16EB空間。應用到2GB地址空間的虛擬地址的RX部分必須全部為0,; 否則,將識別到異常。虛擬地址的RX部分本身被分為三個欄位。位0-10被稱為區第一索 引(RFX),位11-21被稱為區第二索引(RSX),以及位22-32被稱為區第三索引(RTX)。在一
個實施例中,虛擬地址的位0-32具有以下格式
虛擬地址的RX的格式其中RTX為最左側有效部分(42位地址)的虛擬地址能夠尋址4TB (2048個區), 其中RTX為最左側有效部分(53位地址)的虛擬地址能夠尋址8PB(4,193,044個區),並 且其中RTX為最左側有效部分(64位地址)的虛擬地址能夠尋址16EB(8,589,934,592個 區)。其中RX為0的虛擬地址可以通過以下兩種轉換錶轉換為實地址段表和頁表。啟 用EDAT工具之後,可以僅使用段表完成所述轉換。RFX可以為非零,在這種情況下,需要區 第一表、區第二表和區第三表。如果RFX為0,但是RSX為非零,則需要區第二表和區第三 表。如果RFX和RSX為0,但是RTX為非零,則需要區第三表。如果地址空間的ASCE未指定轉換對地址空間的引用時所需的最高級別的表(從 區第一表開始,然後繼續向下到段表),將識別到異常。虛擬地址的動態轉換現在參考圖4,示出了其中使用在圖3中確定的有效ASCE來確定在虛擬地址轉換 中使用的轉換表層次結構中的第一轉換表的一個實施例。在一個實施例中,控制寄存器I(CRl)包含PASCE。控制寄存器7(CR7)包含SASCE。 控制寄存器13(CR13)包含HASCE,以及由存取寄存器轉換(ART)過程得到的地址空間第 二表表項(ASTE)包含存取寄存器指定的地址空間控制元素。將從這些位置之一選擇有效 ASCE400。有效ASCE 400的第一部分包含表起始地址402,表起始地址402包含指定區第一 表、區第二表、區第三表或段表的起始地址。向表起始地址(位0... 51)附加12個二進位0 以形成在虛擬地址轉換中使用的轉換表層次結構中的最高轉換表的64位起始地址。有效 ASCE 400還包含實空間控制(R)位404和DT位406。如果實空間控制(R)位為0,則DT位 由選擇器408解碼以確定哪個特定的起始地址是表起始地址402。如果DT位等於3 ( 二進 制11),則表起始地址402指定區第一表410。如果DT位等於2 ( 二進位10),則表起始地 址402指定區第二表412。如果DT位等於1 ( 二進位01),則表起始地址402指定區第三表 414。否則,如果DT位等於0( 二進位00),則表起始地址402指定段表416。區第一表、區第二表或區第三表有時簡稱為區表。類似地,區第一表指定、區第二 表指定或區第三表指定有時被稱為區表指定。區表、段表和頁表反映實存儲裝置的當前指 定。頁是用於分配虛擬存儲裝置的術語。實存儲裝置以固定塊的形式進行分配。即使被分 配給一組順序虛擬地址,頁在實存儲裝置中也無需相鄰。當轉換中使用的ASCE是區第一表指定時,轉換過程包含多級查找,所述查找例如 使用區第一表、區第二表、區第三表、段表以及可選地使用頁表。這些表駐留在實存儲裝置 或絕對存儲裝置中。當ASCE為區第二表指定、區第三表指定或段表指定時,將忽略級別在 指定級別以上的表中的查找,並且忽略更高級表本身。現在參考圖5A,示出了使用轉換表層次結構執行虛擬地址的動態地址轉換的一個 實施例。圖4的有效ASCE 400包含指定類型(DT)位406。如果ASCE的實空間控制(R) 404 位為0,則DT位由選擇器408解碼以確定表起始地址402指定哪個起始地址。如果實空間 控制(R)位為1,則動態地址轉換如圖5B中的節點D 564處所示那樣發生。
如果選擇器408中的DT位等於3 ( 二進位11),則轉換表層次結構中指定的第一 表為區第一表。在502,將表起始地址402與虛擬地址的區第一索引(RFX)508部分進行算 術相加以引用區第一表中的區第一表表項506。表起始地址(在右側附加12個0,或乘以 4096)與索引乘以8的乘積(或右側附加三個0的索引)進行相加。區第一表表項包含轉 換中使用的轉換表層次結構中的下一低級表的區第二表起始地址504。區第一表的下一低 級表為區第二表。如果區第一表表項的無效(I)位等於1,則區第一表表項無效,並且不能 在轉換中使用。將指示異常狀況。如果選擇器408中的DT位等於2( 二進位10),則轉換表層次結構中指定的第一 表為區第二表。在510,將表起始地址402與虛擬地址的區第二索引(RSX)516部分進行算 術相加以引用區第二表中的區第二表表項514。表起始地址(在右側附加12個0,或乘以 4096)與索引乘以8的乘積(或右側附加三個0的索引)進行相加。區第二表表項包含轉 換中使用的轉換表層次結構中的下一低級表的區第三表起始地址512。區第二表的下一低 級表為區第三表。如果區第二表表項的無效(I)位等於1,則區第二表表項無效,並且將指 示異常狀況。如果選擇器408中的DT位等於1 ( 二進位01),則轉換表層次結構中指定的第一 表為區第三表。在518,將表起始地址402與虛擬地址的區第三索引(RTX)524部分進行算 術相加以引用區第三表中的區第三表表項522。表起始地址(在右側附加12個0,或乘以 4096)與索引乘以8的乘積(或右側附加三個0的索引)進行相加。區第三表表項包含轉 換中使用的轉換表層次結構中的下一低級表的段表起始地址520。區第三表的下一低級表 為段表。如果區第三表表項的無效(I)位等於1,則區第三表表項無效,並且將指示異常狀 況。如果選擇器408中的DT位等於0 ( 二進位00),則轉換表層次結構中指定的第一表 為段表。在526,將表起始地址402與虛擬地址的段索引(SX) 532部分進行算術相加以引用 段表中的段表表項530。表起始地址(在右側附加12個0,或乘以4096)與索引乘以8的 乘積(或右側附加三個0的索引)進行相加。段表表項包含在528處示出的頁表的起始地 址或段幀絕對地址(SFAA)。如果段表表項的無效(I)位等於1,則段表表項無效,並且將指 示異常狀況。在538,檢查段表的STE格式控制(FC)位。如果STE格式控制為1,則段表表項 530包含段幀絕對地址(SFAA) 552並且參考圖5C中的節點562繼續動態地址轉換。否則, 從段表獲取的段表表項包含頁表起始地址並且參考圖5B中的節點560繼續動態地址轉換。現在參考圖5B。如果段表表項中的STE格式控制為0,則從段表獲取的段表表項 包含轉換表層次結構中的下一低級表的起始地址。段表的下一低級表為頁表。在538,將從 圖5A的段表表項530獲取的頁表起始地址528與虛擬地址的頁索引(PX) 534部分進行算 術相加以引用頁表中的頁表表項542。頁表表項包含頁幀實地址(PFRA) 546。當在548處 將頁幀實地址的最左側位與虛擬地址的字節索引(BX) 536部分連接時,將獲得64位實地址 550。可以進一步對實64位地址執行添加前綴操作以形成絕對地址。轉換後的虛擬地址引 用主存儲裝置或存儲器中所需的4KB(4096位元組)數據塊。優選地,在將虛擬地址動態轉換為存儲器地址時使用的信息隨同與虛擬地址關聯 的存儲塊地址一起存儲在轉換後備緩衝器表項標籤中。後續存儲訪問可通過將ASCE信息和虛擬地址信息與轉換後備緩衝器標籤進行比較來迅速轉換虛擬地址。如果發現所述標籤 為虛擬地址的標籤,則可使用存儲塊的轉換後備緩衝器地址,而不是執行對所涉及的每個 轉換表的緩慢順序訪問。在一個實施例中,頁幀實地址(PFRA)與包含例如ASCE以及虛擬 地址的RX、SX和PX部分的標籤一起存儲在轉換後備緩衝器544的表項中。此後,從轉換後 備緩衝器中存儲的信息得到對該虛擬地址的後續轉換。現在參考圖5C。如果段表表項530中的STE格式控制為1,則段表表項包含段幀 絕對地址(SFAA) 552。當在554,將段幀絕對地址的最左側位與虛擬地址的頁索引534部分 和字節索引536部分連接時,將獲得64位絕對地址556。轉換後的虛擬地址引用主存儲裝 置或存儲器中所需的大數據塊。大數據塊的大小至少為1MB(1,048,576位元組)。在一個實施例中,段幀絕對地址(SFAA)與虛擬地址的RX和SX部分一起存儲在轉 換後備緩衝器544中。此後,從轉換後備緩衝器中存儲的信息得到對該虛擬地址的後續轉 換。轉換表表項格式下面將示出在轉換中使用的轉換表層次結構中的各種轉換表表項的實施例。區表表項術語「區表表項」表示區第一表表項、區第二表表項或區第三表表項。從區第一表、 區第二表和區第三表取回的表項具有下面的格式。包含表項的表的級別(第一、第二或第 三)通過表項中的表類型(TT)位來標識。在一個實施例中,區第一表表項、區第二表表項和區第三表表項的格式如下區第一表表項(TT = 11) 區第二表表項(TT = 10) 區第三表表項(TT = 01)
區第三表起始地址 區表表項的格式區第二表起始地址、區第三表起始地址和段表起始地址區第一表表項包含區第 二表起始地址。區第二表表項包含區第三表起始地址。區第三表表項包含段表起始地址。 以下描述適用於這三個表起始地址中的每一個。表項的位0-51以及在右側附加的12個0 形成指定下一低級表的開頭的64位地址。DAT保護位(P):當應用增強的DAT時,位54被視為與在轉換中使用的每個後續區 表表項、段表表項以及頁表表項(當適用時)中的DAT保護位進行「或」操作。因此,當此 位為1時,DAT保護應用到由區表表項指定的整個區或多個區。當未安裝增強的DAT工具, 或者已安裝此工具但增強的DAT啟用控制為0時,將忽略區表表項的位54。區第二表偏移、區第三表偏移和段表偏移(TF)區第一表表項包含區第二表偏 移。區第二表表項包含區第三表偏移。區第三表表項包含段表偏移。以下描述適用於三個 表偏移中的每一個。表項的位56和57指定下一低級表的在該表開頭處缺少的部分的長度, 即,所述位指定實際存在於下一低級表中的第一表項的位置。所述位以4,096位元組為單位 指定缺少部分的長度,從而使缺少部分的長度可以以512個表項的倍數變化。以4,096字 節為單位表示的缺少部分的長度等於TF值。使用偏移欄位以及長度欄位(位62和63)的 內容確定要通過下一低級錶轉換的虛擬地址部分(RSX、RTX或SX)是否指定實際存在於該 表中的表項。區無效位(I)區第一表表項或區第二表表項中的位58控制與該表項關聯的一組 區是否可用。區第三表表項中的位58控制與該表項關聯的單個區是否可用。當位58為0 時,將使用區表表項進行地址轉換。當此位為1時,表項無法用於轉換。表類型位(TT)區第一表表項、區第二表表項和區第三表表項的位60和61按如 下方式標識包含表項的表的級別位60和61必須標識正確的表級別,其中要考慮作為在轉 換中使用的ASCE的表指定類型以及迄今為止使用的表級別的數量;否則,將識別到轉換規 範異常。下表示出了表類型位 區表表項的表類型位區第二表長度、區第三表長度和段表長度(TL)區第一表表項包含區第二表長度。區第二表表項包含區第三表長度。區第三表表項包含段表長度。以下描述適用於三個 表長度中的每一個。表項的位62和63指定以4,096位元組為單位表示的下一低級表的長度, 從而使表長度以512個表項的倍數變化。以4,096位元組為單位表示的下一低級表的長度大 於TL值。使用長度欄位以及偏移欄位(位56和57)的內容確定要通過下一低級錶轉換的 虛擬地址部分(RSX、RTX或SX)是否指定實際存在於表中的表項。區表表項的所有其他位 位置均被保留以供將來可能擴展並且應包含0 ;否則,將來程序可能無法兼容運行。當應用 增強的DAT時,即使表項無效,區表表項的保留位位置也應包含0。段表表項當不應用增強的DAT,或者應用增強的DAT但段表表項的STE格式控制(位53)為 0時,在一個實施例中,從段表取回的表項具有以下格式段表表項(T= 00,FC = 0) 段表表項的格式I當應用增強的DAT並且STE格式控制為1時,在一個實施例中,從段表取回的表項 具有以下格式段表表項(T= 00,FC = 1) 段表表項的格式II段表表項中的選定欄位按如下方式進行分配頁表起始地址當不應用增強的DAT,或者應用增強的DAT但段表表項的STE格式 控制(位53)為0時,位0-52以及在右側附加的11個0形成指定頁表的開頭的64位地址。 無法預測此地址是實地址還是絕對地址。段幀絕對地址(SFAA)當應用增強的DAT並且STE格式控制為1時,表項的位0_43 以及在右側附加的20個0形成段的64位絕對地址。
ACCF有效性控制(AV)當應用增強的DAT並且STE格式控制為1時,位47是訪問 控制位和取回保護位(ACCF)有效性控制。當AV控制為0時,將忽略段表表項的位48-52。 當AV控制為1時,將按下文所述使用位48-52。訪問控制位(ACC)當應用增強的DAT,STE格式控制為1並且AV控制為1時,段 表表項的位48-51包含訪問控制位,這些控制位可用於應用到地址的任何鍵控訪問檢查。取回保護位(F)當應用增強的DAT,STE格式控制為1並且AV控制為1時,段表 表項的位52包含取回保護位,此保護位可用於應用到地址的任何鍵控訪問檢查。STE格式控制(FC)當應用增強的DAT時,位53是段表表項的格式控制,如下所 示當FC位為0時,表項的位0-52形成頁表起始地址,而位55被保留。當FC位為1時,表項的位0-43形成段幀絕對地址,位47是ACCF有效性控制,位 48-51是訪問控制位,位52是取回保護位,而位55是更改記錄忽略。當不應用增強的DAT 時,將忽略位53。DAT保護位⑵位54,當為1時,指示DAT保護應用到整個段。當不應用增強的DAT時,位54被視為與在轉換中使用的頁表表項中的DAT保護位 進行「或」操作。當應用增強的DAT時,在轉換中使用的任何和全部區表表項中的DAT保護位被視 為與段表表項中的DAT保護位進行「或」操作;當STE格式控制為0時,STE中的DAT保護 位還被視為與頁表表項中的DAT保護位進行「或」操作。更改記錄忽略(CO)當應用增強的DAT並且STE格式控制為1時,段表表項的位 55是段的更改記錄忽略。當不應用增強的DAT,或者應用增強的DAT但STE格式控制為0 時,將忽略段表表項的位55。段無效位(I)位58控制與段表表項關聯的段是否可用。當此位為0時,將使用段表表項進行地址轉換。當此位為1時,段表表項無法用於轉換。公共段位(C)位59控制段表表項的轉換後備緩衝器副本的使用。當不應用增強 的DAT,或者當應用增強的DAT但格式控制為0時,位59還控制由段表表項指定的頁表的轉 換後備緩衝器副本的使用。0標識專用段;在此情況下,段表表項及其指定的任何頁表僅可與指定段表表項 所在的段表的段表起始地址結合使用。1標識公共段;在此情況下,段表表項及其指定的任何頁表可以繼續用於轉換與 段索引對應的地址,即使指定了其他段表也是如此。但是,如果在轉換中使用的ASCE內的專用空間控制(位55)為1,或者如果此ASCE 是實空間指定,則公共段的段表表項和任何頁表的轉換後備緩衝器副本不可用。當所使用 的ASCE中的專用空間控制為1時,如果在轉換過程中從存儲裝置取回段表表項,則公共段 位必須為0。否則,將識別到轉換規範異常。表類型位(TT)段表表項的位60和61是用於標識包含該表項的表的級別的二進 制00。區表表項或段表表項中的位60和61的所有可能值的含義如下所示
23 表類型位60、61位60和61必須標識正確的表級別,其中要考慮作為在轉換中使用的ASCE的表指 定類型以及迄今為止使用的表級別的數量;否則,將識別到轉換規範異常。段表表項的所 有其他位位置均被保留以供將來可能擴展,並且應包含0;否則,將來程序可能無法兼容運 行。當應用增強的DAT時,段表表項的保留位位置應包含0,即使表項無效也是如此。頁表表項在一個實施例中,從頁表取回的表項具有以下格式 頁表表項的格式頁表表項中的選定欄位按如下方式進行分配頁幀實地址(PFRA)位0_51提供實存儲地址的最左側位。將這些位與右側的虛 擬地址的12位字節索引欄位連接時,將獲得64位實地址。頁無效位(I)位53控制與頁表表項關聯的頁是否可用。當此位為0時,將使用 頁表表項進行地址轉換。當此位為1時,頁表表項無法用於轉換。DAT保護位⑵位54控制是否可以在頁中進行存儲訪問。此保護機制是除了鍵 控保護和低地址保護機制以外的機制。此位對取回訪問沒有影響。如果此位為0,則允許存 儲到頁,但受以下附加約束限制DAT保護位在轉換中使用的段表表項中為0。當應用增強的DAT時,DAT保護位在轉換中使用的所有區表表項中為0。其他保護機制如果此位為1,則不允許存儲。如果不存在較高優先級異常狀況,則當DAT保護位 為1時,嘗試存儲將導致識別到保護異常。當確定DAT保護是否應用到頁時,段表表項中的 DAT保護位被視為與位54進行「或」操作。如果應用增強的DAT,則當確定是否應用DAT保 護時,在轉換中使用的任何區表表項中的DAT保護位也被視為與位54進行「或」操作。
更改記錄忽略(CO)當不應用增強的DAT時,頁表表項的位55必須包含0 ;否則, 將作為執行使用此表項進行地址轉換的指令的一部分而識別到轉換規範異常。當應用增強 的DAT並且STE格式控制為0時,頁表表項的位55是頁的更改記錄忽略。表項的位位置52必須包含0 ;否則,將作為執行使用此表項進行地址轉換的指令 的一部分而識別到轉換規範異常。位位置56-63未被分配並被忽略。動態轉換的另一實施例此部分描述在使用虛擬地址訪問主存儲裝置之前隱式執行的轉換過程。虛擬地址的轉換由程序狀態字中的DAT模式位和地址空間控制位控制,以及由控 制寄存器1、7和13中的ASCE及存取寄存器所指定的ASCE控制。當在轉換中使用的ASCE是 區第一表指定時,通過區第一表、區第二表、區第三表、段表以及頁表執行轉換,所有這些表 都位於實存儲裝置或絕對存儲裝置中。當ASCE是較低級類型的表指定(區第二表指定、區 第三表指定或段表指定)時,僅通過以指定級別開始的表級別執行轉換,並且如果為非零, 則需要使用較高級表的虛擬地址位必須全部為0 ;否則,將識別到ASCE型異常。當ASCE是 實空間指定時,虛擬地址被視為實地址,並且不使用實存儲裝置或絕對存儲裝置中的表項。用於特定地址轉換的ASCE被稱為有效ASCE。相應地,當轉換主虛擬地址時,使用 控制寄存器1的內容作為有效ASCE。類似地,對於二級虛擬地址,使用控制寄存器7的內 容;對於AR指定的虛擬地址,使用由存取寄存器指定的ASCE ;以及對於起始虛擬地址,使用 控制寄存器13的內容。當有效ASCE中的實空間控制為0時,ASCE中的指定類型指定表指定類型區第一 表、區第二表、區第三表或段表。根據指定中的表長度欄位檢查虛擬地址的對應部分(區第 一索引、區第二索引、區第三索引或段索引),並將其添加到指定中的起始地址以便在已指 定表中選擇表項。如果指定中的表長度欄位確定所選表項在其表之外,或者如果所選表項 中的I位為1,則取決於由指定所指出的表級別,將識別到區第一轉換、區第二轉換、區第三 轉換或段轉換異常。如果所選表項中的表類型位未指示預期的表級別,將識別到轉換規範 異常。通過有效ASCE選擇的表項指定要使用的下一低級表。如果當前表是區第一表、區 第二表或區第三表,則根據當前表項中的表偏移欄位和表長度欄位檢查虛擬地址的下一部 分(分別為區第二索引、區第三索引或段索引),並將其添加到表項中的起始地址以選擇下 一低級表中的表項。如果當前表項中的表偏移欄位和表長度欄位確定下一表中的所選表項 在其表之外,或者如果所選表項中的I位為1,則取決於下一表的級別,將識別到區第二轉 換、區第三轉換或段轉換異常。如果所選表項中的表類型位未指示預期的表級別,將識別到 轉換規範異常。繼續藉助連續表級別處理虛擬地址的各部分,直到已選擇段表表項。段表表項包 含應用到指定段中所有頁的頁保護位。將虛擬地址的頁索引部分添加到段表表項中的頁表起始地址,以便選擇頁表中的 表項。如果頁表表項中的I位為1,將識別到頁轉換異常。頁表表項包含表示虛擬地址轉換 的實地址的最左側位,並且包含僅應用到由頁表表項指定的頁的頁保護位。虛擬地址的字節索引欄位不作改變地用作實地址的最右側位位置。為了消除與引用實存儲裝置或絕對存儲裝置中的轉換表關聯的延遲,從表取回的信息通常還放置在特殊緩衝區(即轉換後備緩衝器)中,並且可以使用轉換後備緩衝器中 記錄的信息執行涉及相同表項的後續轉換。轉換後備緩衝器還可以記錄與實空間指定相關 的虛等於實轉換。在地址轉換過程中,每當為了從區表、段表或頁表取回表項而對實存儲裝置或絕 對存儲裝置進行訪問時,將不應用鍵控保護。在ASCE指定的表中查找有效ASCE的DT控制(位60_61)指定ASCE的表指定類型以及要藉助指定的錶轉 換的虛擬地址部分兩者,如下所示
位60通過錶轉換的虛
和61指定類型 擬地址部分
區第一索引 (位 0-10) 區第二索引 (位 11-21) 區第三索引 (位 22-32) 段索引 (位 33-43)藉助指定表的轉換當位60和61具有二進位值11時,使用虛擬地址的區第一索引部分以及ASCE中 包含的區第一表起始地址從區第一表中選擇表項。通過向區第一表指定的位0-51的右側 附加12個0,並添加最右側附加3個0而最左側附加50個0的區第一索引,獲得實存儲裝 置或絕對存儲裝置中的區第一表表項的64位地址。作為區第一表查找過程的一部分,將虛 擬地址的位0和1(它們是區第一索引的位0和1)與區第一表指定的表長度(位62和63) 進行比較,以確定尋址的表項是否在區第一表內。如果表長度欄位中的值小於虛擬地址的 對應位位置中的值,將識別到區第一轉換異常。如果在轉換中使用轉換後備緩衝器中的區 第一表表項的等價表項,則可以省略與表長度進行的比較。從區第一表取回的表項指定對 應區第二表的開頭以及指定其偏移和長度。當ASCE的位60和61具有二進位值10時,使用虛擬地址的區第二索引部分以及 ASCE中包含的區第二表起始地址從區第二表中選擇表項。將虛擬地址的位11和12(它們 是區第二索引的位0和1)與ASCE中的表長度進行比較。如果表長度欄位中的值小於虛擬 地址的對應位位置中的值,將識別到區第二轉換異常。如果在轉換中使用轉換後備緩衝器 中的區第二表表項的等價表項,則可以省略與表長度進行的比較。否則,區第二表查找過程 與區第一表查找過程相同;從區第二表取回的表項指定對應的區第三表的開頭並指定其偏
26移和長度。當ASCE的位60和61具有二進位值01時,使用虛擬地址的區第三索引部分以及 ASCE中包含的區第三表起始地址從區第三表中選擇表項。將虛擬地址的位22和23 (它們 是區第三索引的位0和1)與ASCE中的表長度進行比較。如果表長度欄位中的值小於虛擬 地址的對應位位置中的值,將識別到區第三轉換異常。否則,區第三表查找過程與區第一表 查找過程相同,包括檢查區第三表表項中的表類型位。從區第三表取回的表項指定對應的 段表的開頭並指定其偏移和長度。當ASCE的位60和61具有二進位值00時,使用虛擬地址的段索引部分以及ASCE 中包含的段表起始地址從段表中選擇表項。將虛擬地址的位33和34(它們是段索引的位 0和1)與ASCE中的表長度進行比較。如果表長度欄位中的值小於虛擬地址的對應位位置 中的值,將識別到段轉換異常。如果在轉換中使用轉換後備緩衝器中的段表表項的等價表 項,則可以省略與表長度進行的比較。否則,段表查找過程與區第一表查找過程相同,包括 檢查段表表項中的表類型位。處理如下所示當不應用增強的DAT,或者應用增強的DAT但STE格式控制為0時,從段表取回的 表項指定對應頁表的開頭,並且按照下面「頁表查找」中所述繼續處理。當應用增強的DAT並且STE格式控制為1時,從段表取回的表項包含段幀絕對地 址的最左側位。如果在轉換中使用的任何區表表項中或在段表表項中DAT保護位均為1,並 且針對其執行轉換的存儲引用為存儲,將識別到保護異常。在由區表表項指定的表中查找當有效ASCE是區表指定時,按照上一部分中所述選擇區表表項。然後,使用所選 表項的內容以及虛擬地址的下一索引部分在下一低級表中選擇表項,此下一低級表可以是 另一區表或段表。當藉助ASCE選擇的表表項是區第一表表項時,使用虛擬地址的區第二索 引部分以及區第一表表項中包含的區第二表起始地址從區第二表中選擇表項。通過向區第 一表表項的位0-51的右側附加12個0,並添加最右側附加3個0而最左側附加50個0的 區第二索引,獲得實存儲裝置或絕對存儲裝置中的區第二表表項的64位地址。當形成區第二表表項、區第三表表項或段表表項的地址時,無法預測是在添加表 索引值之前向較高級別表表項中包含的相應表起始地址添加前綴(如果有),還是向通過 添加表起始地址和表索引值形成的表表項地址添加前綴。作為區第二表查找過程的一部分,將虛擬地址的位11和12(它們是區第二索引的 位0和1)與區第一表表項的表偏移(位56和57)進行比較,並與區第一表表項的表長度 (位62和63)進行比較,以確定尋址的表項是否在區第二表內。如果表偏移欄位中的值大 於虛擬地址的對應位位置中的值,或者如果表長度欄位中的值小於虛擬地址的對應位位置 中的值,將識別到區第二轉換異常。區第二表指定對應的區第三表的開頭並指定其偏移和長度。當藉助ASCE選擇的表表項是區第二表表項時,或者如果已藉助區第一表表項的 內容選擇區第二表表項,則使用虛擬地址的區第三索引部分以及區第二表表項中包含的區 第三表起始地址從區第三表中選擇表項。將虛擬地址的位22和23(它們是區第三索引的 位0和1)與區第二表表項中的表偏移和表長度進行比較。如果表偏移大於位22和23,或 者如果表長度小於位22和23,將識別到區第三轉換異常。否則,區第三表查找過程與區第二表查找過程相同。從區第三表取回的表項指定對應的段表的開頭並指定其偏移和長度。當藉助ASCE選擇的表表項是區第三表表項時,或者如果已藉助區第二表表項的 內容選擇區第三表表項,則使用虛擬地址的段索引部分以及區第三表表項中包含的段表起 始地址從段表中選擇表項。將虛擬地址的位33和34(它們是段索引的位0和1)與區第三 表表項中的表偏移和表長度進行比較。如果表偏移大於位33和34,或者如果表長度小於位 33和34,將識別到段轉換異常。如果(I)ASCE中的專用空間控制(位55)為1以及(2)從 段表取回的表項中的公共段位(位59)為1,將識別到轉換規範異常。否則,段表查找過程 與區第二表查找過程相同。處理如下所示當不應用增強的DAT,或者應用增強的DAT但STE格式控制為0時,從段表取回的 表項指定對應頁表的開頭,並且按照下面「頁表查找」中所述繼續處理。當應用增強的DAT並且STE格式控制為1時,從段表取回的表項包含段幀絕對地 址的最左側位。如果在轉換中使用的任何區表表項中或在段表表項中DAT保護位均為1,並 且針對其執行轉換的存儲引用為存儲,將識別到保護異常。頁表查找當不應用增強的DAT,或者應用增強的DAT但STE格式控制為0時,使用虛擬地址 的頁索引部分以及段表表項中包含的頁表起始地址從頁表中選擇表項。通過向頁表起始地址的右側附加11個0,並添加最右側附加3個0而最左側附加 53個0的頁索引,獲得實存儲裝置或絕對存儲裝置中的頁表表項的64位地址。不會發生位 位置0的進位輸出。從頁表取回的表項指示頁的可用性,並且包含頁幀實地址的最左側位。將檢查頁 無效位(位53)以確定對應頁是否可用。如果此位為1,將識別到頁轉換異常。如果位位置 52包含1,將識別到轉換規範異常。當不應用增強的DAT,或者應用增強的DAT並且STE格 式控制為0時,如果位位置55包含1,也將識別到轉換規範異常。如果在轉換中使用的段表 表項中、在頁表表項中DAT保護位為1,或者當在轉換過程中使用的任何區表表項中應用增 強的DAT,並且針對其執行轉換的存儲引用為存儲時,將識別到保護異常。實地址和絕對地址的形成當有效ASCE是實空間指定時,直接將虛擬地址的位0-63用作實存儲裝置地址。可 以進一步向實地址添加前綴以形成絕對地址。當有效ASCE不是實空間指定並且在轉換過 程中未遇到異常時,適用以下情況當不應用增強的DAT,或者應用增強的DAT但STE格式控制為0時,從頁表表項獲 取頁幀實地址。將頁幀實地址和虛擬地址的字節索引部分連接,並且頁幀實地址形成最左 側部分。結果是與虛擬地址對應的實存儲裝置地址。可以進一步向實地址添加前綴以形成 絕對地址。當應用增強的DAT並且STE格式控制為1時,從左到右分別將段幀絕對地址以及 虛擬地址的頁索引和字節索引部分連接,以形成與虛擬地址對應的絕對地址。轉換過程中的異常識別無效地址和無效格式可導致在轉換過程中識別到異常。當表表項中包含的信息用 於轉換並且被發現不正確時,將識別到異常。現在參考圖6,其示出了到從段表表項獲取格式控制欄位時的動態地址轉換的一個實施例的流程圖。在602,獲取要轉換的虛擬地址。在604,獲取在虛擬地址轉換中使用的最高轉換 表的起始地址。在轉換中使用的第一轉換表的起始地址取決於ASCE和DT位。在606,使用 虛擬地址的一部分引用轉換表中的適當表表項。在608,如果從轉換表取回的表項不是段表 表項,則尚未引用轉換表層次結構中的段表。在這種情況下,在610,從所述表表項獲取轉換 表層次結構中的下一低級表的起始地址。使用虛擬地址的適當部分引用在轉換中使用的下 一低級表中的對應表表項。例如,如果要在轉換中使用的第一轉換表的表起始地址是區第一表,則使用虛擬 地址的RFX部分引用區第一表內的區第一表表項。如果表起始地址是區第二表,則使用虛 擬地址的RSX部分引用區第二表內的區第二表表項。如果表起始地址是區第三表,則使用 虛擬地址的RTX部分引用區第三表內的區第三表表項。如果表起始地址是段表,則使用虛 擬地址的SX部分引用段表內的段表表項。將一直引用連續的表,直到取回段表表項為止。一旦已取回段表表項,在612,檢查段表表項(STE)格式控制位以判定是否針對此 特定虛擬地址啟用了格式控制。如果STE格式控制為0,則根據節點614發生動態地址轉 換。如果STE格式控制為1,則根據節點616發生動態地址轉換。動態地址轉換(STE格式控制為0)現在參考圖7,其示出了當STE格式控制為0時從圖6的節點614繼續的流程圖。在710,從段表表項獲取頁表的起始地址。在712,使用虛擬地址的PX部分引用頁 表中的頁表表項。在714,從頁表表項獲取頁幀實地址(PFRA)。從頁表表項獲取無效(I) 位。在716,如果無效(I)位為1,則在718無法使用此頁表表項繼續虛擬地址轉換,因為此 表項已被標記為無效。使用此頁表表項的進一步虛擬地址轉換將停止(722)。在716,如果 無效(I)位為0,則在720將頁幀實地址(PFRA)與虛擬地址的BX部分組合以生成實地址。 可以進一步對實地址執行添加前綴操作以形成絕對地址。在724,使用實地址訪問由轉換後 的虛擬地址尋址的數據塊。動態地址轉換(STE格式控制為1)現在參考圖8,其示出了從圖6的節點616繼續的流程圖。在810,從段表表項的一部分獲取段幀絕對地址(SFAA)。從段表表項獲取無效(I) 位。在812,如果無效(I)位為1,則在814,無法使用此段表表項進行進一步虛擬地址轉換, 因為此表項已被標記為無效。在一個實施例中,向請求轉換的程序實體返回異常代碼。使 用此段表表項的此虛擬地址的進一步轉換將停止(818)。在812,如果無效(I)位為0,則在816,將段幀絕對地址(SFAA)與虛擬地址的PX 和BX部分組合以生成指向主存儲裝置中或存儲器中的所需大數據塊的絕對地址。在820, 訪問由轉換後的虛擬地址尋址的所需大數據塊。在每個表表項處,檢查無效位以確定所獲取的表表項的有效性。在此將進一步討 論保護通過轉換後的虛擬地址尋址的數據塊的其他轉換保護機制。在另一實施例中,從轉換表表項獲取限制信息。所述限制信息用於將訪問限於虛 擬地址範圍的限定部分。此後,僅對於地址範圍的限定部分才允許訪問由轉換後的地址尋 址的所需大數據塊。所述限制信息是表偏移或表長度中的任意一個。在另一實施例中,在虛擬地址轉換中使用的信息被存儲在至少一個轉換後備緩衝器中。使用轉換後備緩衝器中存儲的信息而不是轉換表層次結構來執行後續虛擬地址到主 存儲裝置中數據塊的絕對地址的後續轉換。在另一實施例中,如果轉換不是機器體系結構所固有的,則標識預定軟體例程以 仿真轉換。所述預定軟體例程包含多個指令。將執行所述預定軟體例程。尋址後的數據塊的保護如此處所述,使用增強的DAT工具轉換虛擬地址之後,可以對由轉換後的虛擬地 址尋址的主存儲裝置或存儲器中的所需數據塊執行其他保護機制。DAT 保護DAT保護功能通過使用每個頁表表項和段表表項以及(當安裝了增強的DAT工具 時)每個區表表項中的DAT保護位來控制對虛擬存儲裝置的訪問。它可防止不正確的存儲。頁表表項的DAT保護位(位54)控制是否允許存儲到對應的4KB頁。當此位為0 時,允許取回和存儲兩者;當此位為1時,僅允許取回。當嘗試存儲到被保護頁時,此頁的內 容保持不變,將取消操作單元或指令執行,並發生程序保護中斷。段表表項的DAT保護位(位54)控制是否允許存儲到對應的1MB段,如下所示當不應用增強的DAT,或者應用增強的DAT並且STE格式控制為0時,段表表項的 DAT保護位被視為與由段表表項指定的頁表中每個表項的DAT保護位位置進行「或」。因此, 當段表表項DAT保護位為1時,效果就像DAT保護位在指定頁表中的每個表項內都為1那樣。當應用增強的DAT並且STE格式控制為1時,段表表項的DAT保護位控制是否允 許存儲到對應的1MB段。當此位為0時,允許取回和存儲兩者;當此位為1時,僅允許取回。 當嘗試存儲到被保護段時,此段的內容保持不變,將取消操作單元或指令執行,並發生程序 保護中斷。當應用增強的DAT時,區表表項的DAT保護位控制是否允許存儲到對應的區(多 個)。區表表項中的DAT保護位被視為與在轉換中使用的任何後續區表表項和段表表項的 DAT保護位位置進行「或」。當STE格式控制位為0時,DAT保護位進一步傳播到頁表表項。DAT保護應用到使用虛擬地址的所有存儲型引用。鍵控保護當鍵控保護應用到存儲訪問時,僅當存儲鍵與存儲訪問請求所關聯的訪問鍵匹配 時,才允許存儲;當鍵匹配或者當存儲鍵的取回保護位為0時,允許取回。當存儲鍵的四個 訪問控制位與訪問鍵相同或者當訪問鍵為0時,則鍵被稱為匹配。下表概述了保護操作。
解釋匹配存儲鍵的四個訪問控制位與訪問鍵相同,或者訪問鍵為0。是 允許訪問。否 不允許訪問。取回時,信息不可用於程序;存儲時,存儲位置的內容不變。 保護操作概述當CPU啟動對存儲裝置的訪問並且應用鍵控保護時,PSW鍵是訪問鍵,但對於MOVE TO SECONDARY 和 MOVE WITH DESTINATIONKEY 的第一操作數,對於 MOVE TO PRIMARY、MOVE WITH KEY和MOVE WITH SOURCE KEY的第二操作數以及對於MOVE PAGE的第一或第二操作 數,訪問鍵在通用寄存器中指定。PSW鍵佔用當前程序狀態字的位位置8-11。當由於鍵控保護而禁止CPU訪問時,指令執行被終止,並發生程序保護異常中斷。 但是,可以取消操作單元或指令執行。存儲鍵存儲鍵與配置中可用的存儲裝置的每個4KB塊關聯。存儲鍵不是可尋址的存儲裝 置的一部分。在一個實施例中,存儲鍵具有以下格式 存儲鍵格式存儲鍵中的位位置按如下方式進行分配訪問控制位(ACC)如果引用受到鍵控保護,則當存儲信息以及從具有取回保護 的位置取回信息時,需要將四個訪問控制位與四位訪問鍵進行匹配。取回保護位(F):如果引用受到鍵控保護,則取回保護位控制是否將鍵控保護應 用到取回型引用0指示僅監視存儲型引用並允許具有任何訪問鍵的取回;1指示鍵控保護 同時應用到取回和存儲。引用位(R)引用位通常在每次引用對應存儲塊中的位置以存儲或取回信息時被 設為1。更改位(C)更改位在每次將信息存儲到對應存儲塊中的位置時被設為1。當應用增強的DAT時,以下附加條件生效
當STE格式控制(FC,在轉換中使用的段表表項的位53)為0時,在轉換中使用的 頁表表項的位55是頁的更改記錄忽略(CO)。當頁表表項中的CO位為1時,無法針對到頁 的任何存儲操作預測更改記錄。當段表表項中的格式控制位(FC)為1時,應用以下內容段表表項的位位置47包含ACCF有效性控制。ACCF有效性控制確定STE中的訪 問控制位和取回保護位的有效性。當ACCF有效性控制為0時,鍵控保護針對與地址對應的 4K字節塊使用存儲鍵中的訪問控制位和取回保護位。當ACCF有效性控制為1時,段表表項的位位置48_52包含段的訪問控制位和取回 保護位。在確定對存儲操作數的可訪問性時,對於組成段的4K字節塊,無法預測是檢查STE 的位48-52,還是檢查單個存儲鍵的位0-4。段表表項的位55是段的更改記錄忽略(CO)。當段表表項中的CO位為1時,無法 預測是否針對到段的任何存儲操作設置更改位。存儲鍵訪問對存儲鍵的引用的處理方式如下每當引用存儲裝置並且對所述引用應用鍵控保護時,四個訪問控制位和與存儲位 置關聯的取回保護位被同時檢查並該檢查與引用所述存儲位置同時。當(1)不應用增強的 DAT, (2)應用增強的DAT但藉助其中STE格式控制為0的段表表項訪問存儲裝置,或(3)應 用增強的DAT,藉助其中STE格式控制為1的段表表項訪問存儲裝置,但ACCF有效性控制為 0,則對於4K字節塊,訪問控制位和取回保護位位於存儲鍵的位0-4中。當應用增強的DAT 並且藉助其中STE格式控制和ACCF有效性控制均為1的段表表項訪問存儲裝置時,無法預 測是存儲鍵的位0-4還是段表表項的位48-52提供訪問控制位和取回保護位。此外,當段 表表項提供訪問控制位和取回保護位時,可以使用來自轉換後備緩衝器的緩衝的副本。當應用增強的DAT,並且(a)在由DAT使用的頁表表項中,STE格式控制為0而更 改記錄忽略為1或(b)在由DAT使用的段表表項中,STE格式控制為1而更改記錄忽略為1 時,無法預測在執行存儲操作時,CPU是否設置更改位。更改記錄忽略可緩衝在PTE或STE 的轉換後備緩衝器副本中。當未安裝條件型SSKE特性時,SET STORAGE KEY EXTENDED指令導致在存儲鍵中 同時設置所有7個位。當安裝了條件型SSKE特性時,SET STORAGE KEY EXTENDED指令可 用於根據程序指定的準則設置全部或部分存儲鍵。INSERT STORAGE KEY EXTENDED指令針對4K字節塊提供存儲鍵的位0_6的一致映 像。類似地,指令INSERT VIRTUAL STORAGE KEY禾口 TEST PROTECTION提供訪問控制位和取 回保護位的一致映像。指令RESET REFERENCE BIT EXTENDED僅修改引用位。存儲鍵的所有其他位保持 不變。同時檢查引用位和更改位以設置條件代碼。由引用位提供的引用記錄不一定準確。但是,在大多數情況下,引用記錄大致與相 關的存儲引用一致。可以在未發生存儲時設置更改位。如其他CPU所觀察到的,由顯式操縱存儲鍵的指令(INSERTST0RAGE KEY EXTENDED、 INSERT VIRTUAL STORAGE KEY、 RESET REFERENCE BIT EXTENDED 以及 SET STORAGE KEYEXTENDED)執行的存儲鍵取回和存儲在它們本身之間以及在存儲操作數引用之間被排序,就像存儲鍵訪問本身分別是存儲操作數取回和存儲那樣。SET STORAGE KEY EXTENDED (SSKE)可以藉助SET STORAGE KEY EXTENDED(SSKE)指令設置存儲鍵。在一個實施例中, SSKE指令具有以下格式SSKE R1, R2 [,M2] [RRF] SSKE指令的格式由第一操作數寄存器中的值替換一個或多個4K字節塊的存儲鍵。當安裝了條件 型SSKE工具時,可以繞過鍵設置操作的特定功能。當未安裝條件型SSKE工具,或者已安裝 條件型SSKE工具並且M3欄位的MR和MC位均為0時,由來自通用寄存器Rl的位替換通過 通用寄存器R2的內容尋址的4K字節塊的存儲鍵。指令在不更改條件代碼的情況下完成。當安裝了條件型SSKE工具並且MR位和MC位為1時,將由通用寄存器R2的內容 尋址的存儲鍵的訪問控制位、取回保護位以及可選地引用位和更改位與通用寄存器Rl中 的對應位進行比較。如果所比較的位相同,則不對鍵進行更改;否則,由通用寄存器Rl中的 對應位替換鍵的選定位。將任何修改之前的存儲鍵插入通用寄存器R1,並且由條件代碼指 示結果。當安裝了增強的DAT工具時,可以在多塊控制(如下所述)的控制下,針對同一 1MB塊內的多個4K字節塊的存儲鍵重複上述操作。在一個實施例中,M3欄位具有以下格 式 M3欄位的格式M3欄位的位定義如下保留位0被保留。引用位更新掩碼(MR) :MR位(M3欄位的位1)控制是否可以繞過對存儲鍵中引用 位的更新,如下所述。更改位更新掩碼(MC) =MC位(M3欄位的位2)控制是否可以繞過對存儲鍵中更改 位的更新,如下所述。多塊控制(MB) =MB位(M3欄位的位3)控制是否可以設置存儲裝置的多個4K字節 塊的存儲鍵,如「在多個4K字節塊中設置存儲鍵」中所述。當未安裝增強的DAT工具時,M3欄位的位位置3被保留。當安裝了條件型SSKE工 具時,按以下方式處理當MR位和MC位(M3欄位的位1和2)均為0時,指令如同未安裝條件型SSKE工 具那樣完成。由來自通用寄存器Rl的位替換通過通用寄存器R2的內容尋址的4K字節塊 的存儲鍵,並且指令在不更改條件代碼的情況下完成。當MR位和MC位為1時,按以下方式處理
在任何修改之前,將通過通用寄存器R2尋址的4K字節塊的存儲鍵的內容放置在 通用寄存器Rl的位位置48-54中,並且將通用寄存器Rl的位55設為0。寄存器的位0_47 和56-63保持不變。如果當取回存儲鍵時檢測到無效的檢查塊代碼(CBC)JU (a)由通用 寄存器Rl的位56-62替換4K字節塊的整個存儲鍵,(b)無法預測通用寄存器Rl的位位置 48-55的內容,以及(c)指令通過設置條件代碼3完成。將指定的4K字節塊的存儲鍵的訪問控制位和取回保護位與通用寄存器Rl的位 56-60中的對應欄位進行比較。如果相應欄位不同,則由來自通用寄存器Rl的位替換4K字 節塊的整個存儲鍵,並且指令通過設置條件代碼1完成。當存儲鍵中的訪問控制位和取回 保護位與通用寄存器Rl中的相應位相同時,將按以下方式繼續處理。當MR位和MC位均為1時,指令通過設置條件代碼0完成。在這種情況下存儲鍵 保持不變。當MR位為0並且MC位為1時,將指定的4K字節塊的存儲鍵的引用位與通用寄存 器Rl的位61進行比較。如果位相同,則指令通過設置條件代碼0完成。在這種情況下存 儲鍵保持不變。如果位不同,則(a)由通用寄存器Rl中的位替換指定的4K字節塊的整個 存儲鍵,並且指令通過設置條件代碼1完成;或(b)由通用寄存器Rl的位61替換存儲鍵的 引用位,鍵的更改位無法預測,並且指令通過設置條件代碼2完成。無法預測是設置條件代 碼1還是2。當MC位為0並且MR位為1時,將指定的4K字節塊的存儲鍵的更改位與通用寄存 器Rl的位62進行比較。如果位相同,則指令通過設置條件代碼0完成。在這種情況下存 儲鍵保持不變。如果位不同,則(a)由通用寄存器Rl中的位替換指定的4K字節塊的整個 存儲鍵,並且指令通過設置條件代碼1完成;或(b)由通用寄存器Rl的位62替換存儲鍵的 更改位,鍵的引用位無法預測,並且指令通過設置條件代碼2完成。無法預測是設置條件代 碼1還是2。當未安裝增強的DAT工具,或者已安裝此工具但多塊控制為0時,通用寄存器R2 包含實地址。當安裝增強的DAT工具並且多塊控制為1時,通用寄存器R2包含絕對地址。 在24位尋址模式下,通用寄存器R2的位40-51指定實存儲裝置或絕對存儲裝置中的4K字 節塊,並且忽略寄存器的位0-39和52-63。在31位尋址模式下,通用寄存器R2的位33-51 指定實存儲裝置或絕對存儲裝置中的4K字節塊,並且忽略寄存器的位0-32和52-63。在 64位尋址模式下,通用寄存器R2的位0-51指定實存儲裝置或絕對存儲裝置中的4K字節 塊,並且忽略寄存器的位52-63。由於是實地址或絕對地址,因此指定存儲塊的地址不進行 動態地址轉換。對存儲鍵的引用不會出現保護異常。從通用寄存器Rl的位位置56-62獲取新的7位存儲鍵值或其選定位。忽略寄存 器的位位置0-55和63的內容。當安裝了條件型SSKE工具並且MR位和MC位均為1時,位 位置63應包含0 ;否則,將來程序可能無法兼容運行。在操作開始之前執行串行化和檢查點同步功能並且在操作完成之後再次執行此 功能,只是當安裝了條件型SSKE工具並且結果條件代碼為0時,無法預測是否在操作完成 之後執行串行化和檢查點同步功能。對於在此指令設置鍵之前或之後由任何CPU或通道程 序完成的對指定4K字節塊的任何存儲訪問,也分別在此指令的執行之前或之後,完成此塊 的存儲鍵中的引用位和更改位到1的關聯設置。
在多個4K字節塊中設置存儲鍵當未安裝增強型DAT工具,或者已安裝此工具但多塊控制為0時,設置單個4K字 節塊的存儲鍵,如上所述。當已安裝增強型DAT工具並且多塊控制為1時,可以設置1MB塊 內的多個4K字節塊的存儲鍵,從由第二操作數地址指定的塊開始,並向右繼續到每個連續 的塊,直到下一 1MB的界限。在這種情況下,SET STORAGE KEY EXTENDED可中斷,並且按以 下方式處理當發生中斷(不同於終止之後的中斷)時,通用寄存器R2已被更新,因此指令在 重新執行時將在中斷點繼續。如果MR位和/或MC位為1,則條件代碼無法預測;否則,條 件代碼不變。當指令在不中斷的情況下完成時,通用寄存器R2已被更新到下一 1MB的界限。如 果MR位和/或MC位為1,則設置條件代碼3 ;否則,條件代碼不變。對於上述兩種情況之一,當MR位和/或MC位為1時,通用寄存器Rl的位48_55 無法預測。當發生多塊處理並且Rl欄位和R2欄位指定同一寄存器時,將第二操作數地址放 在此寄存器中。當在24位或31位尋址模式下發生多塊處理時,將通用寄存器R2的位位置 32-63中不是地址一部分的最左邊的位設為0 ;寄存器的位0-31不變。結果條件代碼當未安裝條件型SSKE工具,或者M3欄位的MR位和MC位均為0時,條件代碼保持 不變。當安裝了條件型SSKE工具並且MR位和/或MC位為1時,條件代碼設置如下0-未設置存儲鍵1-設置整個存儲鍵2-設置部分存儲鍵3-設置整個存儲鍵;通用寄存器Rl的位48-55無法預測。程序異常尋址(由通用寄存器R2指定的地址)特權操作更改記錄更改記錄提供有關在主存儲裝置中替換頁時必須將哪些頁保存到輔助存儲裝置 中的信息。更改記錄使用存儲鍵的更改位(位6)。每當存儲訪問導致對應存儲塊的內容被 更改,以及(a)不應用增強的DAT或(b)應用增強的DAT並且滿足以下兩種條件之一時,將 更改位設為1 :DAT所使用的段表表項中的STE格式控制為0,並且DAT所使用的頁表表項中的更 改記錄忽略(CO)為0。DAT所使用的段表表項中的STE格式控制為1,並且DAT所使用的段表表項中的更 改記錄忽略(CO)為0。不更改存儲裝置內容的存儲訪問可以將更改位設為1,也可以不設為1。如果禁止 訪問,則對於進行的存儲嘗試,不將更改位設為1。具體而言對於CPU,每當存儲訪問存在訪問異常,或者每當存在優先級高於存儲訪問的訪問 異常優先級的異常時,將禁止存儲訪問。
對於通道子系統,每當存儲訪問存在鍵控保護違反時,將禁止存儲訪問。更改記錄始終處於活動狀態並且針對所有對存儲裝置的存儲訪問發生,包括由任 何CPU(當由在此所述的更改記錄忽略取消時除外)、任何操作者工具或通道子系統執行的 存儲訪問。它針對機器所進行的隱式引用(例如作為中斷一部分的那些引用)發生。對於以下指令的操作數不發生更改記錄,因為這些指令直接修改存儲鍵而不修改 存儲位置RESET REFERENCE BIT EXTENDEDSET STORAGE KEY EXTENDED (更改位設為指定值)。當CPU重試時,不必將已從0更改為1的更改位恢復為0。更改記錄忽略(CO)每當存儲訪問導致對應存儲塊的內容更改時,存儲鍵的更改位被設為1。不更改存 儲裝置內容的存儲訪問可以將更改位設為1,也可以不設為1。如果禁止訪問,則對於進行 的存儲嘗試,不將更改位設為1。更改記錄忽略允許繞過存儲鍵的更改位的設置。當應用增強的DAT並且通過DAT表表項轉換虛擬地址時,在段表表項和頁表表項 兩者的位55中提供更改記錄忽略(CO)。當段表表項的STE格式控制(FC)位53為0時,應 用頁表表項中的更改記錄忽略。當PTE中的更改記錄忽略為0時,針對到4K字節塊的存儲 操作發生更改記錄。當更改記錄忽略為1時,無法預測是否針對到4K字節塊的存儲操作發 生更改記錄。當STE格式控制為1時,應用STE中的更改記錄忽略。當STE中的更改記錄 忽略為0時,針對到段的256個4K字節塊中任何一個的存儲操作發生更改記錄。當STE中 的更改記錄忽略為1時,無法預測是否針對段的256個4K字節塊中的任何一個發生更改記 錄。更改記錄忽略不應用到實地址或絕對地址,也不應用到通過實空間指定轉換的虛 擬地址。執行幀管理功能(PFMF) PFMF指令的格式在第一操作數寄存器的控制下,針對由第二操作數地址指定的存儲幀執行幀管理 功能。通用寄存器Rl的內容如下所示幀管理功能指示通用寄存器Rl的位位置44-47包含幀管理功能指示(FMFI),如下所示設置鍵控制(SK)位46控制是否從通用寄存器Rl的位56-62設置幀中每個4K字 節塊的存儲鍵。當SK控制為0時,不設置鍵;當SK控制為1時,設置鍵。清除幀控制(CF)位47控制是否將幀設為0。當CF控制為0時,不執行清除操 作。當CF控制為1時,將幀清零。使用指示(UI)通用寄存器Rl的位位置48包含使用指示(UI)。當位48為0時, 它指示程序不預計幀的最近使用。當位48為1時,它指示程序預計幀的近期使用。
幀大小代碼(FSC)通用寄存器Rl的位49-51包含幀大小代碼(FSC),如下所示
幀大小代碼的含義引用位更新掩碼(MR)當通用寄存器Rl的設置鍵控制(位46)為1時,通用寄存 器Rl的位53控制是否可以繞過對存儲鍵中引用位的更新,如下所述。更改位更新掩碼(MC)當通用寄存器Rl的設置鍵控制(位46)為1時,通用寄存 器Rl的位54控制是否可以繞過對存儲鍵中更改位的更新。對MR位和MC位的處理與對SET STORAGE KEY EXTENDED指令的M3欄位的對應位 的處理相同,只是不使用先前鍵的內容更新通用寄存器Rl,並且條件代碼不變。鍵當通用寄存器Rl的設置鍵控制(位46)為1時,寄存器的位56-62包含要針 對幀中每個4K字節塊設置的存儲鍵,包括分別位於位位置56-59、60、61以及62中的訪問 保護位、取回保護位、引用位以及更改位。通用寄存器R2包含要在其上執行幀管理功能的存儲幀的實地址或絕對地址。當 幀大小代碼指定4K字節塊時,第二操作數地址是實地址;當幀大小代碼指定IM字節塊時, 第二操作數地址是絕對地址。對通用寄存器R2中地址的處理取決於尋址模式。在24位尋 址模式下,寄存器的位位置40-51的內容以及最右側附加的12個0是地址,並且忽略寄存 器中的位0-39和52-63。在31位尋址模式下,寄存器的位位置33-51的內容以及最右側附 加的12個0是地址,並且忽略寄存器中的位0-32和52-63。在64位尋址模式下,寄存器的 位位置0-51的內容以及最右側附加的12個0是地址,並且忽略寄存器中的位52-63。下面示出了剛描述的寄存器的內容。 執行幀管理功能的寄存器內容當幀大小代碼為0時,針對由第二操作數指定的4K字節幀執行指定的幀管理功 能。在這種情況下不修改通用寄存器R2。當幀大小代碼為1時,針對IM字節幀內一個或多個4K字節塊執行指定的幀管理 功能,從由第二操作數地址指定的塊開始,並向右繼續到每個連續的塊,直到下一 IM字節 邊界。在這種情況下,可中斷執行幀管理功能,並且按以下方式處理當發生中斷(不同於終止之後的中斷)時,通用寄存器R2中的第二操作數地址由 已處理的4K字節塊的數量更新,因此指令在重新執行時將在中斷點繼續。當指令在不中斷的情況下完成時,通用寄存器R2中的第二操作數地址被更新為 下一 IM字節邊界。在24位或31位尋址模式下,當幀大小代碼為1時,將通用寄存器R2的位位置 32-63中不是地址一部分的最左側位設為0 ;寄存器的位0-31不變。當清除幀控制為1時,第二操作數內的對主存儲裝置的引用不一定是單個訪問引 用,並且不一定如其他CPU和通道程序所觀察的那樣按從左到右的方向執行。不對清除操 作應用鍵控保護。當存儲鍵控制為1時,針對每個4K字節塊的操作類似於針對SSKE所述的操作,只 是當設置多個塊的鍵時,條件代碼以及通用寄存器Rl的內容不變。在操作開始之前以及操 作完成之後,執行串行化和檢查點同步功能,只是當要設置的所有存儲鍵的7個位與通用 寄存器Rl的位56-62相同,或者當MR位和MC位允許所有存儲鍵保持不變時,無法預測是 否在操作完成之後執行串行化和檢查點同步操作。當相應控制均為1時,無法預測先執行 清除幀操作還是設置鍵操作。假設其他CPU或通道子系統沒有對存儲裝置執行其他訪問,則當MR和MC均為0時,指令的最終結果反映包括指定R值和C值的指定鍵值。特殊條件對於以下任一條件,將識別到規範異常並取消操作通用寄存器Rl的位32-45、52、55或63不為0。幀大小代碼指定保留值。條件代碼代碼保持不變。執行幀管理功能(PFMF)-存儲鍵現在參考圖9,其示出了其中根據指令設置關聯的存儲鍵的執行幀管理功能的流 程圖的一個實施例。
在910,獲取針對機器體系結構定義的機器指令。所述機器指令包含幀管理指令的 操作碼。所述機器指令具有標識第一通用寄存器的第一欄位和標識第二通用寄存器的第二 欄位。在912,從第二通用寄存器獲取主存儲裝置或存儲器中大數據塊內的初始第一數據塊 的地址。在914,從第一通用寄存器獲取幀管理信息。所述幀管理信息具有包含第一組訪問 保護位的鍵欄位。對於大數據塊,從第二通用寄存器獲取大數據塊的初始第一數據塊的第 二操作數地址。大數據塊具有多個小數據塊。每個小數據塊具有包含存儲訪問保護位的對 應存儲鍵。在916,對於大數據塊,將鍵欄位的訪問保護位設為與大數據塊關聯的每個鍵的 存儲訪問保護位。對於小數據塊,從第二通用寄存器獲取初始第一小數據塊的操作數地址。 每個數據塊具有對應的存儲鍵。所述存儲鍵具有存儲訪問保護位。將訪問保護位設為小數 據塊的存儲鍵的存儲訪問保護位。執行幀管理功能(PFMF)-清除幀現在參考圖10,其示出了其中清除所指示的幀的執行幀管理功能的一個實施例的 流程圖。在1010,獲取針對機器體系結構定義的機器指令。所述機器指令包含幀管理指令 的操作碼。所述機器指令具有標識第一通用寄存器的第一欄位和標識第二通用寄存器的第 二欄位。在1012,從第一通用寄存器獲取具有幀大小欄位的清除幀信息。在1014,判定幀大 小欄位所指示的存儲幀是存儲器中小數據塊的存儲幀還是存儲器中大數據塊的存儲幀。在 1016,從第二通用寄存器獲取要在其上執行所述機器指令的存儲幀的第二操作數地址。第 二操作數地址是存儲器中小數據塊的實地址或存儲器中大數據塊的絕對地址。在1018,如 果所指示的存儲幀是小數據塊,則通過將小數據塊的所有字節設為0來清除小數據塊。如 果所指示的存儲幀是大數據塊,則從第二通用寄存器獲取大數據塊的初始第一數據塊的操 作數地址。大數據塊具有第一多個小數據塊。在1020,從初始第一數據塊開始,通過將所有 數據字節設為0來清除每個小數據塊。在幀管理功能的另一實施例中,從所述機器指令的欄位或第一通用寄存器的欄位 獲取塊大小指示。根據塊大小指示,判定所尋址的操作數是大數據塊的操作數還是小數據 塊的操作數。操作數地址是大數據塊的絕對地址或小數據塊的實地址。向實地址添加前綴 以確定絕對地址。對於大數據塊,將下一數據塊的地址保存到第二通用寄存器中。下一數 據塊是在第一數據塊之後的數據塊。通過遇到大數據塊的邊界或響應於程序中斷事件而確 定下一數據塊的地址。在幀管理功能的再一實施例中,幀管理欄位具有引用控制欄位和更改控制欄位。鍵欄位具有取回-保護位、更改位和引用位。存儲鍵具有存儲取回_保護位、存儲引用位和 存儲更改位。如果未啟用引用控制欄位和更改控制欄位,則將鍵欄位的取回_保護位、引用 位和更改位設為關聯存儲鍵的對應存儲取回-保護位、存儲引用位和存儲更改位。如果已 啟用引用控制欄位或更改控制欄位,並且鍵欄位的訪問-保護位與存儲鍵的存儲訪問-保 護位不同或者保護位與存儲保護位不同,則將鍵欄位的取回_保護位、引用位和更改位設 為每個關聯存儲裝置的對應存儲取回-保護位、存儲引用位和存儲更改位。在另一實施例中,如果所述機器指令不是處理器的機器指令體系結構所固有的, 則解釋所述機器指令以標識預定軟體例程以便仿真所述機器指令的操作。所述預定軟體例 程包含多個指令。將執行所述預定軟體例程。商業實現儘管此處提及了 βΜ 的z/Aixhiteetufe ,但是本發明的一個或多個方面可
同樣適用於其他採用可分頁實體或類似結構的機器體系結構和/或計算環境。此處披露的eDAT工具以及其他格式、指令和屬性的商業實現可以通過硬體實現, 也可以由例如使用彙編語言的編程人員(如作業系統編程人員)實現。此類編程指令可存 儲在旨在在諸如IBM System ζ server之類的計算環境中本機地執行,或備選地在執行 其他體系結構的機器中本機地執行的存儲介質中。所述指令可以在現有和未來的ΙβΜ 服 務器中以及在其他機器或主機上進行仿真。它們可以在其中總體執行處於仿真模式的機器 中執行。本發明的一個或多個方面可同樣適用於例如虛擬機仿真,其中一個或多個可分 頁實體(例如客戶機)在一個或多個處理器上執行。作為一個實例,可分頁客戶機由 "IBM Syetem/370 Extended Architecture (IBM 系統 /370 擴展體系結構,IBM 出版號SA22-7095,1985,其全部內容在此引入作為參考)」中描述的Start Interpretive Execution(SIE)體系結構定義。在仿真模式中,解碼被仿真的特定指令,然後執行子例程以便如子例程或驅動程 序中那樣實現各個指令,或者使用其他某種技術提供特定硬體的驅動程序,本領域的技術 人員在理解了此處的說明之後便可理解此技術。各種軟體和硬體仿真技術在多個美國專 利中進行了描述,這些專利包括5,551,013,5, 574,873,5, 790,825,6, 009,261,6, 308,255 和6,463,582,在此引入上述每個專利作為參考。許多其他教導進一步示出了各種仿真具有 目標機器體系結構的指令集的方法。其他變型和體系結構此處所述的各種實施例僅作為示例。這些實施例具有多種不偏離本發明的精神的 變型。可以通過軟體、固件、硬體或它們的某種組合實現本發明的一種或多種功能。本發 明的各方面對於許多類型的環境是有利的,其中包括具有多個區的其他環境以及非分區環 境。進而,可以沒有中央處理器複合體,但是仍存在多個耦合在一起的處理器。此處所述的 各個方面可適用於單處理器環境。儘管此處描述了特定環境,但再次地,可以在不偏離本發明的精神的情況下實現 這些環境的多種變型。例如,如果對環境執行邏輯分區,則此環境中可包括更多或更少的邏 輯分區。進而,可以存在多個耦合在一起的中央處理複合體。在不偏離本發明的精神的情況下只能做出某些變型。此外,其他變型是可能的。儘管術語「頁」用於指固定大小或預定大小的存儲區域,但是頁大小是可變的。類 似地,塊大小是可變的。可存在不同大小的塊和/或頁。頁也可以等同於塊。可以備選地 使用其他結構或以其他方式在軟體和/或硬體中實現其他結構。進而,在此處所述的示例 中,存在許多變型,包括但不限於不同大小的字或地址;不同數量的位;不同順序的位;更 多、更少或不同的位;更多、更少或不同的欄位;不同順序的欄位;不同大小的欄位等。再次 地,這些僅提供為示例。許多變型是可能的。處理單元包括可分頁實體,例如客戶機、主機、其他處理器、仿真器、虛擬機和/或 其他類似的結構。緩衝器包括存儲裝置和/或存儲器區域,以及其他類型的數據結構,其中 包括但不限於陣列或可分頁實體。表也包括其他數據結構。指令可以引用其他寄存器。而 且,頁、段和/或區的大小可以不同於此處所述的大小。本發明的一個或多個方面可以包括在具有例如計算機可用或機器可讀介質的制 品(例如,一個或多個電腦程式產品)中。所述介質中包含例如計算機可讀程序代碼裝 置或邏輯(例如,指令、代碼、命令等)以提供或促進本發明的功能。所述製品可以包括為 計算機系統的一部分或單獨出售。此外,可提供可由機器讀取的至少一個程序存儲設備,所 述程序存儲設備包含至少一個可由所述機器執行以實現本發明的功能的指令程序。此處描述的流程圖是示例性的。所述的這些圖形或步驟或操作可以具有多種不偏 離本發明的精神的變型。例如,所述步驟可以按照其他順序執行,也可以添加、刪除或修改 步驟。所有這些變型均被視為要求保護的發明的一部分。儘管此處詳細地描述和說明了本發明的實施例,但是對於本領域的技術人員顯而 易見的是,可以在不偏離本發明精神的情況下做出各種修改、添加、替換等,因此它們被視 為在以下權利要求限定的發明範圍之內。
4權利要求
一種用於在處理器中執行幀管理功能的方法,所述處理器能夠將虛擬地址轉換成計算機系統內的主存儲裝置中的數據塊的轉換後的地址,所述計算機系統具有機器體系結構,所述機器體系結構包含用於轉換所述虛擬地址的轉換表層次結構,針對所述機器體系結構定義所述幀管理功能,所述方法包括獲取包含設置存儲鍵和清除指令的操作碼的機器指令;以及執行所述機器指令,所述執行包括以下操作獲取具有包含多個訪問 保護位的鍵欄位和塊大小指示符欄位的幀管理欄位;獲取要在其上執行所述機器指令的存儲幀的操作數地址,所述操作數地址是大數據塊地址和小數據塊地址中的一個;響應於啟用設置存儲鍵功能,將與所確定的數據塊關聯的每個存儲鍵的存儲訪問 保護位設置為所述鍵欄位的所述訪問 保護位的值;以及響應於啟用清除功能,通過將由所述操作數地址尋址的每個數據塊的所有字節設置為0來清除每個數據塊。
2.如權利要求1中所述的方法,其中所獲取的機器指令進一步包括標識第一通用寄存 器的第一欄位和標識第二通用寄存器的第二欄位,從所述第一通用寄存器獲取所述具有包 含多個訪問_保護位的鍵欄位和塊大小指示符欄位的幀管理欄位,並且其中從所述第二通 用寄存器獲取所述要在其上執行所述機器指令的存儲幀的操作數地址,其中所述操作數地 址是大數據塊的絕對地址和小數據塊的實地址中的一個,向所述實地址添加前綴。
3.如權利要求1中所述的方法,其中所述存儲鍵進一步包括存儲保護位、存儲引用位 以及存儲更改位,並且其中所述鍵欄位進一步包括取回_保護位、引用位以及更改位,並且 其中所述大數據塊大於所述小數據塊,對於所述小數據塊,進一步包括從所述第二通用寄存器獲取所述小數據塊的操作數地址,所述小數據塊具有包含多個 存儲訪問_保護位的存儲鍵;以及將所述鍵欄位的所述訪問保護_位設置為所述存儲鍵的所述存儲訪問_保護位。
4.如權利要求3中所述的方法,其中對於所述大數據塊,將下一數據塊的地址保存在 所述第二通用寄存器中,所述下一數據塊是緊跟所述大數據塊的數據塊。
5.如權利要求1中所述的方法,其中所述幀管理欄位進一步包括設置存儲鍵指示符和 清除存儲指示符,其中確定步驟進一步包括,如果啟用所述設置存儲鍵指示符,則啟用所述 設置存儲鍵功能,如果未啟用所述設置存儲鍵指示符,則不啟用所述設置存儲鍵功能,如果 啟用所述清除存儲指示符,則啟用所述清除功能,以及如果未啟用所述清除存儲指示符,則 不啟用所述清除功能。
6.如權利要求1中所述的方法,其中所述機器指令不是所述處理器的機器指令體系結 構所固有的,還包括解釋所述機器指令以標識用於仿真所述機器指令的操作的預定軟體例程,所述預定軟 件例程包括多個指令;以及執行所述預定軟體例程。
7.一種系統,包括適於執行如任一上述方法權利要求中所述的方法的所有步驟的裝置。
8.一種電腦程式,包括當所述電腦程式在計算機系統上執行時,用於執行如任一上述方法權利要求中所述的方法的所有步驟的指令。
全文摘要
披露了針對計算機系統的機器體系結構定義的設置鍵和清除幀管理功能。在一個實施例中,獲取標識第一和第二通用寄存器的機器指令。從所述第一通用寄存器獲取幀大小欄位,所述幀大小欄位指示存儲幀是否為小數據塊或大數據塊中的一個。從所述第二通用寄存器獲取要在其上執行所述指令的存儲幀的操作數地址。如果所述存儲幀是小數據塊,則僅針對所述小數據塊執行所述指令。如果所指示的存儲幀是大數據塊,則從所述第二通用寄存器獲取所述大數據塊內初始第一數據塊的操作數地址。將針對從所述初始第一數據塊開始的所有塊執行幀管理指令。
文檔編號G06F12/14GK101911024SQ200980101740
公開日2010年12月8日 申請日期2009年1月5日 優先權日2008年1月11日
發明者C·小蓋尼, D·奧西謝克, D·格雷納, G·西格曼三世, L·海勒, T·什萊格爾 申請人:國際商業機器公司