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