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