亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有格式控制的動態(tài)地址轉(zhuǎn)換的制作方法

文檔序號:6592594閱讀:237來源:國知局
專利名稱:具有格式控制的動態(tài)地址轉(zhuǎn)換的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及用于轉(zhuǎn)換計算機(jī)系統(tǒng)中的虛擬地址的系統(tǒng)和方法,更具體地涉及 將計算機(jī)系統(tǒng)中的數(shù)據(jù)塊的虛擬地址轉(zhuǎn)換為實地址或絕對地址的系統(tǒng)和方法,該計算機(jī)系 統(tǒng)具有其中通過轉(zhuǎn)換表層級結(jié)構(gòu)發(fā)生虛擬地址轉(zhuǎn)換的動態(tài)地址轉(zhuǎn)換設(shè)備。
背景技術(shù)
動態(tài)地址轉(zhuǎn)換提供了如下的能力在任意時刻中斷程序執(zhí)行、在諸如直接存取存 儲設(shè)備的輔助存儲中記錄它及其數(shù)據(jù)、并在隨后的時間將程序和數(shù)據(jù)返回到不同的主存儲 位置以便重新執(zhí)行。將程序及其數(shù)據(jù)在主存儲和輔助存儲之間轉(zhuǎn)換可以零碎(piecemeal) 進(jìn)行,將信息返回到主存儲可響應(yīng)于CPU(中央處理單元)需要執(zhí)行它時對其試圖存取而發(fā) 生。這些功能可以不改變或不檢驗程序及其數(shù)據(jù)而執(zhí)行,不需要在重定位的程序中有任何 明確的程序設(shè)計約定,并且除涉及時間延遲外不干擾程序執(zhí)行。利用操作系統(tǒng)的適當(dāng)支持,動態(tài)地址轉(zhuǎn)換設(shè)備可被用來向用戶提供一種系統(tǒng),其 中存儲看上去比在配置中可用的主存儲大。這種明顯的主存儲通常被稱為虛擬存儲,用來 標(biāo)識虛擬存儲中的位置的地址通常被稱為虛擬地址。用戶的虛擬存儲可以遠(yuǎn)遠(yuǎn)超過主存儲 的大小,該主存儲在配置中可用且通常是維持在輔助存儲中。虛擬存儲被認(rèn)為是由通常稱 作頁(也被稱為段和區(qū))的數(shù)據(jù)塊組成。只有最近被稱作虛擬存儲的頁被分配占據(jù)物理主 存儲的塊。當(dāng)用戶引用未在主存儲中出現(xiàn)的虛擬存儲的頁時,它們被帶入以替換主存儲中 較小可能需要的頁(pace)。在某些情況下,虛擬存儲被分配給主存儲達(dá)一長段時間(或永 久性地),而不論所述存儲是否被引用。存儲的調(diào)換(swapping)頁可以在用戶不知曉的情 況下由操作系統(tǒng)執(zhí)行。程序使用地址(或虛擬地址)來存取虛擬存儲。所述程序可使用虛擬地址從虛擬 存儲提取(fetch)指令或加載數(shù)據(jù)或存儲來自虛擬存儲的數(shù)據(jù)。與虛擬存儲范圍相關(guān)聯(lián)的 虛擬地址定義了一個地址空間。在操作系統(tǒng)的適當(dāng)支持下,動態(tài)地址轉(zhuǎn)換設(shè)備可用于提供 多個地址空間。這些地址空間可以被用來提供用戶之間的隔離度。這種支持可以包括對每 個用戶完全不同的地址空間,從而提供了完全的隔離,或者可通過將每個地址空間的一部 分映射到單一的公共存儲區(qū)來提供共享區(qū)。還有,提供了允許半特許程序存取多于一個這 種地址空間的指令。動態(tài)地址轉(zhuǎn)換提供了來自多個不同的地址空間的虛擬地址的轉(zhuǎn)換。這些地址空間 被稱作主地址空間、二次地址空間和存取寄存器指定的地址空間。特許程序也可導(dǎo)致初始 地址空間(home address space)被存取。動態(tài)地址轉(zhuǎn)換可以被指定由CPU生成的指令和 數(shù)據(jù)地址。所需要的是提供現(xiàn)有技術(shù)迄今未知的額外的功能、能力和保護(hù)的增強(qiáng)型動態(tài)地址 轉(zhuǎn)換設(shè)備。

發(fā)明內(nèi)容
提供了用于將計算機(jī)系統(tǒng)的主存儲中的期望數(shù)據(jù)塊的虛擬地址轉(zhuǎn)換成實地址或 絕對地址的增強(qiáng)型動態(tài)地址轉(zhuǎn)換設(shè)備的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品,該計算機(jī)系統(tǒng)具有 帶有用于轉(zhuǎn)換的轉(zhuǎn)換表層級結(jié)構(gòu)的機(jī)器架構(gòu)。實地址可以受到加前綴而形成絕對地址。在一個實施例中,首先獲取要進(jìn)行轉(zhuǎn)換的虛擬地址和獲取轉(zhuǎn)換表層級結(jié)構(gòu)轉(zhuǎn)換表 的最初的起始地址。所述虛擬地址的索引部分被用于引用轉(zhuǎn)換表中的項。確定在轉(zhuǎn)換表項 中的格式控制字段(field)是否被啟用。如果格式控制字段被啟用,則從轉(zhuǎn)換表項獲取主 存儲中的大的數(shù)據(jù)塊的幀地址。所述大的數(shù)據(jù)塊包括大小至少為IM字節(jié)的塊。然后,所述 幀地址與所述虛擬地址的偏移部分結(jié)合以形成主存儲中的大的數(shù)據(jù)塊內(nèi)的期望數(shù)據(jù)塊的 轉(zhuǎn)換地址。然后,存取由所述轉(zhuǎn)換地址尋址的期望的大的數(shù)據(jù)塊。在另一實施例中,從轉(zhuǎn)換 表項獲取無效的表項(entry)字段。如果相應(yīng)的無效表項字段被啟用,則異常動作開始。在另一實施例中,從轉(zhuǎn)換表項獲取限制信息。所述限制信息用于限制對所述大的 塊的限制部分的存取。對由轉(zhuǎn)換地址尋址的期望的大的數(shù)據(jù)塊的存取隨后被允許僅對數(shù)據(jù) 塊的受限制部分進(jìn)行存取。下面將結(jié)合某些例示的實施例描述本發(fā)明。應(yīng)該理解,本領(lǐng)域的技術(shù)人員可進(jìn)行 各種變更和修改,而不背離本發(fā)明的精神或范圍。


在附圖中,各視圖中的相似的附圖標(biāo)記是指功能相同或類似的部件,各視圖連同 以下的詳細(xì)說明被并入和形成本說明書的一部分,用于進(jìn)一步例示各實施例并解釋根據(jù)本 發(fā)明的各種原理和全部優(yōu)勢。圖1例示了其中增強(qiáng)型動態(tài)地址被執(zhí)行轉(zhuǎn)換的主機(jī)計算機(jī)系統(tǒng)的實施例;圖2提供了一個仿真主機(jī)架構(gòu)的主機(jī)計算機(jī)系統(tǒng)的仿真主機(jī)計算機(jī)系統(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)到段表級進(jìn)行虛擬地址的動態(tài)地址轉(zhuǎn)換的過程 的一個實施例;圖5B例示了其中的段表項(STE)格式控制(FC)為0的圖5A的動態(tài)地址轉(zhuǎn)換的繼續(xù);圖5C例示了其中的段表項(STE)格式控制(FC)為1的圖5A的動態(tài)地址轉(zhuǎn)換的
繼續(xù);圖6例示了增強(qiáng)型動態(tài)地址轉(zhuǎn)換(eDAT)以獲取段表項中的格式控制字段的一個 實施例的流程圖;圖7例示了從圖6的節(jié)點614的流程圖的繼續(xù);圖8例示了從圖6的節(jié)點616的流程圖的繼續(xù);圖9例示了確定要被應(yīng)用到由轉(zhuǎn)換的虛擬地址尋址的期望的數(shù)據(jù)塊的DAT保護(hù)級 的實施例的流程圖;圖10例示了從圖8的節(jié)點822的流程圖的繼續(xù),其確定要被應(yīng)用到由轉(zhuǎn)換的虛擬地址尋址的期望的數(shù)據(jù)塊的存取控制保護(hù)級別;圖11例示了從圖8的節(jié)點822的流程圖的繼續(xù),其確定要被應(yīng)用到由轉(zhuǎn)換的虛擬 地址尋址的期望的數(shù)據(jù)塊的提取保護(hù)級;圖12例示了從圖8的節(jié)點822的流程圖的繼續(xù),其中從一個段表項獲取改變記錄 重寫字段(change recording override field);禾口圖13例示了實地址和絕對地址之間的關(guān)系。
具體實施例方式應(yīng)該理解,在本申請的說明書中進(jìn)行的聲明不會限制各項權(quán)利要求的發(fā)明的任何 一項。此外,某些聲明可以適用于一些發(fā)明特征但不適用于另一些。除非另有說明,單個元 件可以是多個形式,反之亦然,而不會喪失一般性。本領(lǐng)域的普通技術(shù)人員容易熟悉在計算環(huán)境中尋址存儲和使用寄存器或地址字 段中的位來指示不同的狀態(tài)和對這些狀態(tài)采取行動。此外,本領(lǐng)域的一般技術(shù)人員將有計 算機(jī)程序領(lǐng)域的知識,并有關(guān)于計算機(jī)系統(tǒng)部件之間的運作及其相互關(guān)系的知識。概述所提供的是增強(qiáng)型動態(tài)地址轉(zhuǎn)換(DAT)設(shè)備的實施例的例子。當(dāng)增強(qiáng)型DAT設(shè)備 已安裝并啟用時,DAT轉(zhuǎn)換可能會產(chǎn)生頁幀的實地址或段幀的絕對地址,這由段表項中的段 表項(STE)格式控制確定。這里使用的術(shù)語“增強(qiáng)型DAT適用”是指所有的下述條件為真 1)安裝了 EDAT設(shè)備;2)通過控制寄存器0 (CRO)位40啟用EDAT設(shè)備;和3)通過DAT表項 轉(zhuǎn)換地址。當(dāng)增強(qiáng)型DAT應(yīng)用時,下述額外的功能可以在DAT過程中得到DAT保護(hù)位被添加到區(qū)表項,提供類似于段和頁表項中的DAT保護(hù)位的功能。STE格式控制被添加到段表項。當(dāng)STE格式控制為0時,除非頁表項中的改變記錄 重寫指示是否可為該頁繞過改變位的設(shè)置,否則DAT如當(dāng)前所定義地繼續(xù)。當(dāng)STE格式控制為1時,該段表項還包括以下內(nèi)容段幀絕對地址(而不是頁表起始),指定1兆字節(jié)塊的絕對存儲位置。存取控制位和提取保護(hù)位,可以選擇性地替換段的各存儲密鑰中的相應(yīng)位來使 用。確定段表項中的存取控制位和提取保護(hù)位的有效性的位。改變記錄重寫,指示是否在段的各存儲密鑰中可繞過改變位。主機(jī)計算機(jī)系統(tǒng)參考圖1,繪出了主機(jī)計算機(jī)系統(tǒng)100的代表性組件。組件的其它布置也可以實施 在計算機(jī)系統(tǒng)中,這是本領(lǐng)域所公知的。主機(jī)計算機(jī)環(huán)境優(yōu)選基于紐約州阿蒙克(Armonk)的國際商業(yè)機(jī)器公司 (IBM )所提供的Z/Architectnre 。z/Architectiire 在(2007 年 4 月)IBM 出
版物編號 SA22-7832-05 第六版的《z/Architecture Principles of Operation))中有 更完全的描述,這里通過引用將其整體并入?;赯/Aixhiteeture 的計算環(huán)境包括例 如eServer和zSerieS ,二者皆由IBM 提供。
代表性的主機(jī)計算機(jī)100包括與主存儲(計算機(jī)存儲器102)和I/O接口通信的一 個或多個CPU 101,該I/O接口到存儲設(shè)備111和網(wǎng)絡(luò)110,用于與其它的計算機(jī)或存儲區(qū) 網(wǎng)絡(luò)(SAN)等通信。CPU可具有動態(tài)地址轉(zhuǎn)換(DAT)設(shè)備(功能或單元)103用于將程序地 址(虛擬地址)轉(zhuǎn)換到存儲器的實地址。DAT設(shè)備通常包括用于緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖 器(translation lookaside buffer) 107,以便對計算機(jī)存儲器102的塊的較后的存取不需 要地址轉(zhuǎn)換遲滯。通常是在計算機(jī)存儲器102和處理器101之間采用緩存109。緩存109 可以是層級結(jié)構(gòu),具有可為多于一個CPU所用的大的緩存以及在大緩存和每一個CPU之間 的更小、更快的(低級)緩存。在一些實現(xiàn)(實施方式)中,較低級的緩存被分割(split) 以為指令提取和數(shù)據(jù)訪問提供單獨的低級緩存。在一個實施例中,由指令提取單元104通 過緩存109從存儲器102提取指令。該指令在指令解碼單元(106)中解碼,并被分派(在 一些實施例中,和其它指令一起)到指令執(zhí)行單元108。通常采用幾個執(zhí)行單元108,例如 算術(shù)執(zhí)行單元、浮點執(zhí)行單元和分支指令執(zhí)行單元。指令由執(zhí)行單元執(zhí)行,根據(jù)需要從指令 指定的寄存器或存儲器存取操作數(shù)。如果從存儲器(內(nèi)存)(memory) 102存取(加載或存 儲)操作數(shù),則負(fù)載存儲單元105通常在正執(zhí)行的指令的控制下處理存取。在一個實施例中,本發(fā)明可由軟件(有時稱為授權(quán)內(nèi)碼(LIC)、固件、微碼 (micro-code)、毫碼(milli-code)、微微碼(pico-code)等,其中任何一個與本發(fā)明一致) 實現(xiàn)。實施本發(fā)明的軟件程序代碼通常是由計算機(jī)系統(tǒng)100的處理器(也稱作CPU(中央 處理單元))101從諸如CD-ROM驅(qū)動器、磁帶驅(qū)動器或硬盤驅(qū)動器的長期儲存介質(zhì)111存 取。軟件程序代碼可以在與數(shù)據(jù)處理系統(tǒng)一起使用的多種已知介質(zhì)中的任一個上實施,例 如軟盤、硬盤驅(qū)動器或⑶-ROM??梢栽谶@種介質(zhì)上分發(fā)代碼,或者可以分發(fā)給用戶,通過網(wǎng) 絡(luò)110從計算機(jī)存儲器102或計算機(jī)系統(tǒng)的存儲分發(fā)到其它計算機(jī)系統(tǒng),以便由這種其它 系統(tǒng)的用戶使用。可替換地,程序代碼可以在存儲器102上實施,并由處理器101使用處理器總線存 取。這種程序代碼包括控制各計算機(jī)部件和一個或多個應(yīng)用程序的功能和相互作用(交 互)的操作系統(tǒng)。程序代碼通常是從高密度存儲介質(zhì)111分頁到高速存儲器102,在那里可 用于由處理器101處理。在存儲器中、在物理介質(zhì)上實施軟件程序代碼和/或通過網(wǎng)絡(luò)分 發(fā)軟件代碼的技術(shù)和方法是眾所周知的,在這里不做進(jìn)一步的討論。當(dāng)在有形介質(zhì)(包括 但不限于電子存儲器模塊(RAM)、快閃存儲器、光盤(00)、0¥0、磁帶等)上創(chuàng)建和存儲程序 代碼時,它往往被稱為“計算機(jī)程序產(chǎn)品”。計算機(jī)程序產(chǎn)品介質(zhì)通常是由優(yōu)選在計算機(jī)系 統(tǒng)中的處理電路可讀,用于由處理電路執(zhí)行。在圖2中,提供了仿真主機(jī)架構(gòu)的主機(jī)計算機(jī)系統(tǒng)100的仿真的主機(jī)計算機(jī)系統(tǒng) 201的一個例子。在仿真的主機(jī)計算機(jī)系統(tǒng)201中,主處理器(CPU) 208是仿真的主處理器 (或虛擬主機(jī)處理器),包括具有與主機(jī)計算機(jī)100的處理器101所用的指令集架構(gòu)不同的 原生指令集架構(gòu)的仿真處理器207。仿真的主機(jī)計算機(jī)系統(tǒng)201具有可由仿真處理器207 存取的存儲器202。在這個示例的實施例中,存儲器207分區(qū)(partition)為主機(jī)計算機(jī) 存儲器102部分和仿真例程203部分(提供仿真的例程可以是主機(jī)存儲器的一部分)。根 據(jù)主機(jī)計算機(jī)架構(gòu),主機(jī)計算機(jī)存儲器102對仿真主機(jī)計算機(jī)201的程序可用。仿真處理 器207執(zhí)行架構(gòu)的架構(gòu)指令集的原生指令而不是仿真處理器208的原生指令、從仿真例程 存儲器203獲取的原生指令,并可以通過采用序列與存取/解碼例程中獲取的一個或多個指令,存取用于執(zhí)行來自主機(jī)計算機(jī)存儲器102中的程序的主機(jī)指令,該例程解碼所存取 的主機(jī)指令以確定用于仿真存取的主機(jī)指令的功能的原生指令執(zhí)行例程。為主機(jī)計算機(jī)系統(tǒng)100架構(gòu)定義的其它設(shè)備(設(shè)施)可以用架構(gòu)的設(shè)備(設(shè)施) 例程來仿真,例如,包括諸如通用目的寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)換和I/O子系統(tǒng)支 持和處理器緩存等設(shè)備。仿真例程還可以利用在仿真處理器207中可用的功能(諸如通用 寄存器和虛擬地址的動態(tài)轉(zhuǎn)換)來改善仿真例程的性能。也可以提供特殊的硬件和減負(fù)載 引擎(Off Load Engine)來協(xié)助處理器207仿真主機(jī)計算機(jī)100的功能。計算機(jī)處理器和寄存器在一個實施例中,CPU的程序指令功能通過通信總線與多個寄存器通信。通信總 線可以是在CPU的內(nèi)部或外部。一些寄存器可以是只讀的。其它硬件和/或軟件還可以讀 /寫可以由CPU存取(訪問)的一個或多個寄存器。指令操作代碼(或運算碼)(opcode) 確定將在任何特定的機(jī)器指令操作中使用的寄存器的類型。通用寄存器指令可以標(biāo)識(指定)(designate) —個或多個16通用寄存器中的信息。通用寄 存器可用作地址算術(shù)中的基址寄存器和索引寄存器并作為通用算術(shù)和邏輯操作中的累加 器。每個寄存器包括64位位置。通用寄存器由數(shù)字0-15識別(標(biāo)識Midentify),并由指 令中的4位R字段標(biāo)識。一些指令通過有幾個R字段來提供尋址(address)多個通用寄存 器。對于一些指令,使用一個具體的通用寄存器是由指令的R字段暗示而不是明確標(biāo)識的。對于某些操作,兩個相鄰的通用寄存器的位32-63或位0-63耦合,分別提供了 64-位或128位的格式。在這些操作中,程序必須標(biāo)識包括最左邊(高序位)32或64位的 偶數(shù)編號的寄存器。下一個更高編號的寄存器包括了最右邊(低序位)的32或64位。除 了它們在通用算術(shù)和邏輯操作中用作累加器之外,16個通用寄存器中的15個還被用作地 址生成中的基址寄存器和索引寄存器。在這種情況下,寄存器被指令中的4位B字段或X 字段標(biāo)識。B或X字段中的0值指定不施加基址或索引,因此,通用寄存器0不能被標(biāo)識為 包括基址或索引??刂萍拇嫫骺刂萍拇嫫魈峁┰诔绦驙顟B(tài)字之外維護(hù)和操作控制信息。CPU有16個控制寄存 器,每一個控制寄存器有64位位置。寄存器中的位位置被分配給系統(tǒng)中的諸如程序事件記 錄的特定設(shè)備,并被用于指定操作能夠進(jìn)行或供給設(shè)備所需的特別信息??刂萍拇嫫饔蓴?shù) 字0-15識別,由指令LOAD CONTROL和STORE CONTROL中的四位R字段來標(biāo)識。多個控制 寄存器能夠由這些指令來尋址??刂萍拇嫫?控制寄存器1包括主地址空間控制單元(PASCE)。在一個實施例中,根據(jù)寄存器中 的實空間控制位(R),控制寄存器1具有如下的兩種格式之一主區(qū)-表或段-表標(biāo)識(R = 0)
8 主實空間標(biāo)識(R = 1) 控制寄存器1的格式在主地址空間控制單元(PASCE)中選擇的字段分配如下主區(qū)表或段表起始控制寄存器1中的主區(qū)表或段表標(biāo)識的位0-51在右側(cè)加12 個0形成標(biāo)識主區(qū)表或段表的開始的64位地址。不可預(yù)知,地址是否為實地址或絕對地址。 因為它是用來轉(zhuǎn)換主地址空間中的虛擬地址,所以此表被稱為主區(qū)表或段表。主實空間控制(R)如果控制寄存器1的位58為0,則寄存器包括區(qū)表或段表標(biāo) 識。如果位58為1,則寄存器包括實空間標(biāo)識。當(dāng)位58是1時,轉(zhuǎn)換后備緩沖器中代表段 表項的公共段位的1值阻止所述項和它標(biāo)識的轉(zhuǎn)換后備緩沖器的頁表副本在將引用轉(zhuǎn)換 到主地址空間時被使用,即使控制寄存器1中的標(biāo)示起始與轉(zhuǎn)換后備緩沖器項的表起始之 間匹配。主指定類型控制(DT)當(dāng)R是0時,控制寄存器1中的表標(biāo)識的類型由寄存器中 的位60和61指定如下位 60和61 標(biāo)識類型11 區(qū)第一表10 區(qū)第二表01 區(qū)第三表00 段表主標(biāo)識類型(DT)控制位當(dāng)R為0時,當(dāng)試圖使用PASCE轉(zhuǎn)換最左邊的一位是在地址的位位置0_10中的虛 擬地址時,位60和61必須是二進(jìn)制11。類似地,當(dāng)最左邊的一位是在地址的位位置11-21 中時,位60和61必須是二進(jìn)制11或10,當(dāng)最左邊的一位是在地址的位位置22-32中時,它 們必須是二進(jìn)制11、10或01。否則,認(rèn)定(recognize)ASCE類型異常(exception) 0主區(qū)表或段表長度(TL)控制寄存器1中主區(qū)表標(biāo)識或段表標(biāo)識的位62或63以 4,096字節(jié)單元指定主區(qū)表或段表的長度,從而使主區(qū)表或段表的長度是可以以512的倍 數(shù)項而可變。以4,096字節(jié)單元的主區(qū)表或段表的長度比TL值多1。長度字段的內(nèi)容被用 來證實(establish)要通過所述表轉(zhuǎn)換的虛擬地址(RFX、RSX、RTX或SX)是否標(biāo)識落在所 述表中的項。二級區(qū)-表或 段-表標(biāo)識(續(xù))王實空間標(biāo)示起始控制寄存器1中的主實空間標(biāo)識的位0-51在右邊加12個0 形成一個64位地址,可用于形成和使用提供虛擬的等同實轉(zhuǎn)換以引用主地址空間的轉(zhuǎn)換 后備緩沖器項。雖然這個地址只是用作一個標(biāo)示而不用于執(zhí)行存儲引用,但它仍須是有效 地址;否則,當(dāng)控制寄存器1的內(nèi)容被使用時,不正確的轉(zhuǎn)換后備緩沖器項可能會被使用??刂萍拇嫫?的以下位未被分配并被忽略位52、53和59,如果寄存器包括區(qū)表 標(biāo)識或段表標(biāo)識;和位52、53和59-63,如果寄存器包括實空間標(biāo)識??刂萍拇嫫?控制寄存器7包括二級地址空間控制單元(SASCE)。在一個實施例中,依據(jù)寄存器 中的實空間控制位(R),控制寄存器7有以下兩種格式之一

控制寄存器13的格式存取寄存器CPU有16個編號為0-15的存取寄存器。存取寄存器包括含有ASCE的間接規(guī)范 (specification)的32位位置。ASCE是動態(tài)地址轉(zhuǎn)換(DAT)機(jī)制用來將引用轉(zhuǎn)換到相應(yīng)的 地址空間的一個參數(shù)。當(dāng)CPU處于稱作存取寄存器模式(由程序狀態(tài)字中的位控制)的模 式時,用于為存儲操作數(shù)引用指定邏輯地址的指令B字段標(biāo)識存取寄存器,并且存取寄存 器指定的ASCE由DAT使用以進(jìn)行引用。對于一些指令,使用R字段而不是B字段。提供指 令來加載和存儲存取寄存器的內(nèi)容,并將一個存取寄存器的內(nèi)容移到另一個存取寄存器。存取寄存器1-15中的每一個都能標(biāo)識任何地址空間,包括當(dāng)前指令空間(主地址 空間)。存取寄存器0標(biāo)識主指令空間。當(dāng)寄存器1-15中的一個被用來標(biāo)識一個地址空間 時,CPU確定哪個地址空間是通過轉(zhuǎn)換存取寄存器的內(nèi)容來標(biāo)識。當(dāng)存取寄存器0被用于標(biāo) 識地址空間時,CPU將存取寄存器處理成標(biāo)識主指令空間,并且它不檢查存取寄存器的實際 內(nèi)容。因此,16個存取寄存器能夠在任何一個時間標(biāo)識主指令空間和最多15個其它空間。程序狀態(tài)字(PSW)程序狀態(tài)字包括指令地址、狀態(tài)碼和用來控制指令排序(sequencing)和確定CPU 的狀態(tài)的其它信息。活動或控制程序狀態(tài)字被稱作當(dāng)前程序狀態(tài)字。它管理正在執(zhí)行的程序。CPU具有中斷功能,它允許CPU響應(yīng)于異常條件和外部刺激而快速切換到另一個 程序。當(dāng)中斷發(fā)生時,CPU為該特定類別的中斷將當(dāng)前程序狀態(tài)字放在稱作舊程序狀態(tài)字 位置的分配的存儲位置。CPU從第二個分配的存儲位置提取一個新的程序狀態(tài)字。這個新 的程序狀態(tài)字確定要執(zhí)行的下一個程序。當(dāng)它已經(jīng)完成處理中斷時,處理中斷的程序可能 會重新加載舊程序狀態(tài)字,使其再次成為當(dāng)前程序狀態(tài)字,以便中斷的程序能夠繼續(xù)。有6類中斷外部、I/O、機(jī)器檢查、程序、重新啟動和監(jiān)督(supervisor)調(diào)用。每 個類有在實存儲中永久分配的不同的一對舊程序狀態(tài)字和新程序狀態(tài)字位置。當(dāng)前程序狀態(tài)字CPU中的當(dāng)前程序狀態(tài)字包括執(zhí)行當(dāng)前活動程序所需的信息。程序狀態(tài)字是128 位長,包括指令地址、狀態(tài)碼和其它控制字段。一般地,程序狀態(tài)字是用來控制指令排序并 保持和指示與當(dāng)前正在執(zhí)行的程序有關(guān)的CPU的很多狀態(tài)。額外的控制和狀態(tài)信息包括在 控制寄存器和永久分配的存儲位置中。CPU的狀態(tài)可以通過加載新的程序狀態(tài)字或程序狀 態(tài)字的一部分而改變。通過存儲當(dāng)前的程序狀態(tài)字以保存CPU的狀態(tài)、然后加載新的程序狀態(tài)字,在CPU 中斷期間切換控制。LOAD PSW或LOAD PSWEXTENDED的執(zhí)行或成功結(jié)束最初程序加載順序 (sequence)引入新的程序狀態(tài)字。指令地址通過順序指令執(zhí)行而更新,為成功的分支所替 代。提供了在一部分程序狀態(tài)字上操作的其它指令。當(dāng)中斷或執(zhí)行改變程序狀態(tài)字的指令完成時,新的或修改的程序狀態(tài)字變?yōu)榛顒?(即,引入當(dāng)前程序狀態(tài)字的信息對CPU承擔(dān)控制)。對于與改變程序狀態(tài)字的指令相關(guān)的 程序事件記錄(PER)的中斷在PER掩碼(mask)的控制下發(fā)生,PER掩碼在操作開始時有效。 程序狀態(tài)字的位0-7統(tǒng)稱為系統(tǒng)掩碼。在一個實施例中,程序狀態(tài)字具有如下的格式 程序狀態(tài)字的格式下面是選擇的程序狀態(tài)字字段的功能的簡要概述。DAT模式(T)位5控制用于存取存儲的隱含的邏輯和指令地址的動態(tài)地址轉(zhuǎn)換是 否發(fā)生。當(dāng)位5是0時,DAT是關(guān)閉的,邏輯和指令地址被處理成實地址。當(dāng)位5是1時, DAT是開通的,調(diào)用動態(tài)地址轉(zhuǎn)換機(jī)制。PSW密鑰位8-11形成CPU用于存儲引用的存取密鑰。如果引用受密鑰控制的保 護(hù),當(dāng)存儲信息或當(dāng)信息從提取受保護(hù)的位置提取時,PSff密鑰與存儲密鑰匹配。但是,X寸 于 MOVE TO PRIMARY、MOVE TO SECONDARY、MOVE WITH KEY、MOVE WITHSOURCE KEY 禾P MOVE WITH DESTINATION KEY中的每一個的操作數(shù)中的一個,使用指定為操作數(shù)的存取密鑰而不 是PSW密鑰。地址空間控制(AS)位16和17與程序狀態(tài)字位5結(jié)合控制轉(zhuǎn)換模式。狀態(tài)碼(CC)位18和19是兩位狀態(tài)碼。狀況碼依據(jù)執(zhí)行某些指令獲取的結(jié)果而 設(shè)置為0、1、2或3。絕大多數(shù)算術(shù)和邏輯操作以及一些其它操作設(shè)置狀態(tài)碼。指令“BRANCH ON CONDITION”能夠指定狀態(tài)碼值的任何選擇作為分支標(biāo)準(zhǔn)。指令地址程序狀態(tài)字的位64-127是指令地址。這個地址標(biāo)識要執(zhí)行的下一個指 令最左邊字節(jié)的位置,除非CPU是在等待狀態(tài)(程序狀態(tài)字的位14是1)。地址類型和格式為了尋址主存儲的目的,認(rèn)定三種基本類型的地址絕對地址、實地址和虛擬地 址。地址是基于在存儲存取期間施加到地址上的轉(zhuǎn)換而區(qū)分的。地址轉(zhuǎn)換將虛擬地址轉(zhuǎn)換 成實地址。加前綴將實地址轉(zhuǎn)換為絕對地址。除了三種基本類型的地址之外,還定義了另 外的類型,依據(jù)指令和當(dāng)前模式,所述另外的類型被處理成三種基本類型的一種或另一種。絕對地址絕對地址是分配給主存儲位置的地址。絕對地址是用于存儲存取而不必在其上進(jìn) 行任何轉(zhuǎn)變。配置中的信道子系統(tǒng)和所有的CPU通過使用相同的絕對地址來引用共享的主 存儲位置。可用主存儲通常是從0幵始的分配的連續(xù)的絕對地址,地址被以整個4K字節(jié)塊 分配在整數(shù)邊界上。當(dāng)試圖使用還沒有被分配物理位置的塊中的絕對地址時,被認(rèn)定異常。 在某些模型上,可提供允許操作者改變絕對地址和物理位置之間的對應(yīng)的存儲重構(gòu)控制。 但是,在任何一個時間,物理位置并不與多于一個的絕對地址相關(guān)聯(lián)。由根據(jù)其絕對地址排 序的字節(jié)位置構(gòu)成的存儲被稱為絕對存儲。實地址實地址識別實存儲中的位置。當(dāng)使用實地址存取主存儲時,它通過加前綴
CN 101911022 A貞 明 zP9/34 頁
0R0 0 0TI 0E密鑰0MWPASCC程序0 0 0 0 0 0 0EX
0 1 2 5 6 7 81213141516 18 20 2431
12(prefix)而轉(zhuǎn)換為形成絕對地址。在任何時間,對配置中的每一個CPU,有從實地址到絕對 地址的映射。當(dāng)CPU使用實地址來存取主存儲時,該實地址可能會被加前綴而轉(zhuǎn)換為絕對 地址。特別的轉(zhuǎn)換由CPU的前綴寄存器中的值定義。由根據(jù)其實地址排序的字節(jié)位置構(gòu)成 的存儲被稱為實存儲。虛擬地址虛擬地址識別虛擬存儲中的位置。當(dāng)使用虛擬地址來存取主存儲時,該虛擬地址 通過動態(tài)地址轉(zhuǎn)換被轉(zhuǎn)換為或者受到加前綴而形成絕對地址的實地址或者直接轉(zhuǎn)換為絕 對地址。主虛擬地址主虛擬地址是通過主地址空間控制單元(PASCE)轉(zhuǎn)換的虛擬地址。當(dāng)處于主空 間模式時,邏輯地址被處理成主虛擬地址。當(dāng)處于主空間模式、二級空間模式或存取寄存 器模式時,指令地址被處理成主虛擬地址。MOVE TO PRIMARY的第一個操作數(shù)地址和MOVE T0SEC0NDARY的第二個操作數(shù)地址被處理成主虛擬地址。二級虛擬地址二級虛擬地址是通過二級地址空間控制單元(SASCE)轉(zhuǎn)換的虛擬地址。當(dāng)處于二 級空間模式時,邏輯地址被處理成二級虛擬地址。MOVE TO PRIMARY的第二個操作數(shù)地址和 MOVE T0SEC0NDARY的第一個操作數(shù)地址被處理成二級虛擬地址。AR標(biāo)識的虛擬地址AR標(biāo)識的虛擬地址是通過存取寄存器指定的地址空間控制單元轉(zhuǎn)換的虛擬地址。 在處于存取寄存器模式時,邏輯地址被處理成AR標(biāo)識的虛擬地址。初始(home)虛擬地址初始虛擬地址是通過初始地址空間控制單元(HASCE)轉(zhuǎn)換的虛擬地址。在處于初 始空間模式時,邏輯地址和指令地址都被處理成初始虛擬地址。指令地址用于從存儲提取指令的地址被稱作指令地址。指令地址在實模式下被處理成實地址,在主空間模式、二級空間模式或存取寄存 器模式下被處理成主虛擬地址,在初始空間模式中被處理成初始虛擬地址。在當(dāng)前程序狀 態(tài)字中的指令地址和EXE⑶TE的目標(biāo)地址是指令地址。有效地址在某些狀況下,可以方便地使用術(shù)語“有效地址”。有效地址是在用動態(tài)地址轉(zhuǎn)換 或加前綴進(jìn)行任何的轉(zhuǎn)換之前存在的地址。有效的地址可以在寄存器中直接指定,或者可 以從地址算術(shù)中產(chǎn)生。地址算術(shù)是基址和位移的相加或基址、索引和位移的相加。加前綴加前綴提供了為每一個CPU將實地址范圍0-8191分配到絕對存儲的不同的塊中 的能力,因此允許多于一個CPU共享主存以便以最小的干擾來同時運行,特別是在中斷處 理過程中。加前綴導(dǎo)致范圍0-8191中的實地址一一對應(yīng)到由CPU的前綴寄存器的位位置 0-50中的值識別的8K字節(jié)的絕對地址的塊(前綴區(qū))和由前綴寄存器中的值識別的實地 址塊一一對應(yīng)到絕對地址0-8191。其余的實地址與相應(yīng)的絕對地址相同。這種轉(zhuǎn)換允許每 一個CPU存取所有的主存儲,包括第一個8K字節(jié)和由其它CPU的前綴寄存器標(biāo)識的位置。
前綴是包含在前綴寄存器的位位置0-50中的51位的數(shù)量。在一個實施例中,前 前綴寄存器的格式當(dāng)應(yīng)用加前綴時,依據(jù)實地址的位0-50,通過使用下述規(guī)則之一,實地址被轉(zhuǎn)變 (transform)為絕對地址如果全為零,地址的位0-50用前綴的位0-50代替。如果等于前綴的位0-50,地址的位0-50用0代替。如果不全為零且不等于前綴的位0-50,地址的位0-50保持不變。只有提交給存儲的地址才通過前綴來轉(zhuǎn)換。該地址的源的內(nèi)容保持不變。即使在前綴寄存器包括全部的0時,實地址和絕對地址之間也有區(qū)別,在上述情 況下,實地址和其相應(yīng)的絕對地址相同。圖13例示了實地址和絕對地址之間的關(guān)系。地址空間是連續(xù)序列的整數(shù)(虛擬地址);還有允許每個數(shù)與存儲中的字節(jié)位置 相關(guān)聯(lián)的具體的轉(zhuǎn)換參數(shù)。所述序列始于0,并從左到右進(jìn)行。當(dāng)CPU使用虛擬地址存取主存儲器時,先通過動態(tài)地址轉(zhuǎn)換(DAT)將虛擬地址轉(zhuǎn) 換為實地址或絕對地址。實地址可進(jìn)一步受到加前綴以形成絕對地址。DAT可以使用區(qū)第 一表、區(qū)第二表、區(qū)第三表、段表和頁表作為轉(zhuǎn)換參數(shù)。用于特定地址空間的最高級表的標(biāo) 識(起始和長度)被稱作地址空間控制單元(ASCE),并發(fā)現(xiàn)它由控制寄存器中的DAT使用 或由存取寄存器指定。可替換地,用于地址空間的ASCE可以是實空間標(biāo)識,這指示DAT將 通過將虛擬地址處理成實地址且不使用任何表來轉(zhuǎn)換虛擬地址。DAT在不同時間使用不同的控制寄存器中的ASCE或由存取寄存器指定的ASCE。 該選擇由當(dāng)前的程序狀態(tài)字中指定的轉(zhuǎn)換模式來確定??衫盟姆N轉(zhuǎn)換模式主空間模式、 二級空間模式、存取寄存器模式和初始空間模式。依據(jù)轉(zhuǎn)換模式,不同的地址空間是可尋址 的。在任何時候,當(dāng)CPU在主空間模式或二級空間模式時,CPU能夠轉(zhuǎn)換屬于兩個地址 空間-主地址空間和二級地址空間的虛擬地址。在任何時候,當(dāng)CPU處于存取寄存器模式 時,它能轉(zhuǎn)換多達(dá)16個地址空間-主地址空間和多達(dá)15個AR指定的地址空間的虛擬地址。 在任何時候,當(dāng)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中。
14
動態(tài)地址轉(zhuǎn)換動態(tài)地址轉(zhuǎn)換是(例如,在存儲引用期間)將虛擬地址轉(zhuǎn)換為相應(yīng)的主存儲器地 址(在實施例中為實地址或絕對地址)的過程。虛擬地址可以是主虛擬地址、二級虛擬地 址、存取寄存器指定的虛擬地址或初始虛擬地址。這些地址分別通過PASCE、SASCE、AR指定 的ASCE或HASCE轉(zhuǎn)換。在選擇適當(dāng)?shù)腁SCE后,轉(zhuǎn)換過程對所有的四種類型的虛擬地址是 相同的。地址轉(zhuǎn)換模式有效地址是在由動態(tài)地址轉(zhuǎn)換或加前綴進(jìn)行任何的轉(zhuǎn)換之前存在的地址(虛擬 地址)。程序狀態(tài)字中的控制動態(tài)地址轉(zhuǎn)換的3個位是位5、DAT模式位、位16和17-地址 空間控制位。當(dāng)DAT模式位為0時,DAT是關(guān)閉的,并且CPU處于實模式中。當(dāng)DAT模式位 為1時,DAT是開通的,并且CPU是處于由地址空間控制位標(biāo)識的轉(zhuǎn)換模式中二進(jìn)制00標(biāo) 識主空間模式,二進(jìn)制01標(biāo)識存取寄存器模式,二進(jìn)制10標(biāo)識二級空間模式,二進(jìn)制11標(biāo) 識初始空間模式。各種模式連同每種模式中的地址的處理方式如下所示。 轉(zhuǎn)換模式程序狀態(tài)字是一個128位的字,它部分提供了指示尋址模式的2個位。在一個實 施例中,位31是擴(kuò)展尋址模式(EA)位,位32是基址尋址模式(BA)位。這兩個位指示地址 的大小。這兩位中的每一個的狀態(tài)是二進(jìn)制(1或0)。如果EA位是0和BA位是0,指示24 位尋址。如果指示24位尋址,64位字的位40-63 (64位的實體通常被稱為雙字)是地址所 在的位置。在指令地址占據(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位尋址。適當(dāng)?shù)?4位字包括位 于位位置33-63的31位地址。如果EA位是1和BA位是1,那么,64位字的全部64位的位 0-63包括地址。否則,指示異常情況。一旦獲取尋址模式,需要確定ASCE。地址空間控制單元(ASCE)
現(xiàn)在參考圖3,其中例示了程序狀態(tài)字是如何用來為虛擬地址的動態(tài)地址轉(zhuǎn)換確 定有效地址空間控制單元(ASCE)的一個實施例。例如ASCE可以指定2G(G = 23°)字節(jié)的 地址空間?;蛘撸芍付ɡ?T(T = 240)字節(jié)、8Ρ(Ρ = 250)字節(jié)或16Ε(Ε = 260)字節(jié)的 地址空間。或者,它可以指定實空間標(biāo)識。實空間標(biāo)識導(dǎo)致虛擬地址被處理成存儲中的實 地址而不引用一個或多個地址轉(zhuǎn)換表。程序狀態(tài)字300包括轉(zhuǎn)換(T)位302和地址空間(AS)位304。在306,如果轉(zhuǎn)換 (T)位為0,地址是實地址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是二級地址空間控制單元(SASCE)318。否 則,地址空間(AS)等于3 ( 二進(jìn)制11),有效ASCE是起始地址空間控制單元(HASCE) 322。在選擇有效ASCE之后,動態(tài)地址轉(zhuǎn)換的過程優(yōu)選是對所有四種類型的虛擬地址 都相同。段表標(biāo)識或區(qū)表標(biāo)識通過由操作系統(tǒng)在實或絕對存儲中建立的表導(dǎo)致轉(zhuǎn)換被執(zhí) 行。實空間標(biāo)識引起虛擬空間被簡單處理成實地址而不使用存儲中的表。在轉(zhuǎn)換過程中,當(dāng)使用段表標(biāo)識或區(qū)表標(biāo)識時,三種類型的信息單元得以認(rèn) 定-區(qū)、段和頁。區(qū)是跨越2G字節(jié)和始自2G字節(jié)的邊界的連續(xù)虛擬地址塊。段是跨越1 兆字節(jié)和始自1兆字節(jié)的邊界的順序虛擬地址塊。頁是跨越4K字節(jié)和始自4K字節(jié)的邊界 的連續(xù)虛擬地址塊。虛擬地址格式虛擬地址轉(zhuǎn)換可涉及引用轉(zhuǎn)換表層級結(jié)構(gòu)的多個轉(zhuǎn)換表以獲取實地址或絕對地 址。實地址會進(jìn)一步受到加前綴操作以形成絕對地址。虛擬地址包括轉(zhuǎn)換表層級結(jié)構(gòu)中的 轉(zhuǎn)換表的項的索引。相應(yīng)地,虛擬地址分為四個主要字段。位0-32被稱作區(qū)索引(RX),位 33-43被稱作段索引(SX),位44-51被稱作頁索引(PX),位52-63被稱作字節(jié)索引(BX)。在 一個實施例中,虛擬地址具有如下格式 虛擬地址的格式如ASCE所確定的,虛擬地址空間可以是由一個區(qū)組成的2G字節(jié)的空間,或者它可 以是由高達(dá)8G區(qū)組成的高達(dá)16E字節(jié)的空間。應(yīng)用到2G字節(jié)的地址空間的虛擬地址的RX 部分必須全部為零;否則,認(rèn)定有異常。虛擬地址的RX部分自身劃分為三個字段。位0-10 被稱作區(qū)第一索引(RFX),位11-21被稱作區(qū)第二索引(RSX),位22-32被稱作區(qū)第三索引 (RTX)。在一個實施例中,虛擬地址的位0-32有如下格式 虛擬地址的RX的格式其中RTX是最左邊的有效部分(42位地址)的虛擬地址能夠?qū)ぶ?T字節(jié)(2048 個區(qū)),其中RSX是最左邊的有效(significant)部分(53位地址)的虛擬地址能夠?qū)ぶ?br> 168P字節(jié)(4193044個區(qū)),其中RFX是最左邊的有效部分(64位地址)的虛擬地址能夠?qū)ぶ?16E 字節(jié)(8,589,934,592 個區(qū))。其中RX為零的虛擬地址可通過兩個轉(zhuǎn)換表段表和頁表來轉(zhuǎn)化實地址。隨著EDAT 設(shè)備被啟用,轉(zhuǎn)換可只用段表來完成。RFX可以不為零,在這種情況下需要區(qū)第一表、區(qū)第二 表和區(qū)第三表。如果RFX為零但RSX不為零,需要區(qū)第二表和區(qū)第三表。如果RFX和RSX 為零但RTX不為零,需要區(qū)第三表。如果用于地址空間的ASCE不標(biāo)識將引用轉(zhuǎn)換到地址空間所需要的最高的表(始 于區(qū)第一表并向下繼續(xù)到段表),認(rèn)定異常情況。虛擬地址的動態(tài)轉(zhuǎn)換現(xiàn)在參考圖4,例示了其中在圖3中確定的有效ASCE被用于確定在虛擬地址轉(zhuǎn)換 中使用的轉(zhuǎn)換表層級結(jié)構(gòu)中的第一轉(zhuǎn)換表的一個實施例。在一個實施例中,控制寄存器I(CRl)包括PASCE。控制寄存器7(CR7)包括SASCE。 控制寄存器13(CR13)包括HASCE,并且由存取寄存器轉(zhuǎn)換(ART)進(jìn)程導(dǎo)出(derive)的地址 空間第二表項(ASTE)包括存取寄存器指定的地址空間控制單元。有效ASCE 400是從這些 位置之一選擇的。有效ASCE 400的第一部分包括表起始402,表起始402包括標(biāo)識或者區(qū)第一表、區(qū) 第二表、區(qū)第三表或者段表的起始地址。所述表起始(位0..51)被加12個二進(jìn)制零以形 成在虛擬地址轉(zhuǎn)換中使用的轉(zhuǎn)換表層級結(jié)構(gòu)中的最高轉(zhuǎn)換表的64位起始地址。有效ASCE 400還包括實空間控制(R)位404和DT位406。如果實空間控制(R)位為零,則選擇器408 解碼DT位以確定哪一個特定的起始地址是表起始402。如果DT位等于3 ( 二進(jìn)制11),表 起始402標(biāo)識區(qū)第一表410。如果DT位等于2 ( 二進(jìn)制10),表起始402標(biāo)識區(qū)第二表412。 如果DT位等于1( 二進(jìn)制01),表起始402標(biāo)識區(qū)第三表414。否則,如果DT位等于零(二 進(jìn)制00),表起始402標(biāo)識段表416。區(qū)第一表、區(qū)第二表或區(qū)第三表有時簡稱為區(qū)表。類似地,區(qū)第一表標(biāo)識、區(qū)第二 表標(biāo)識或區(qū)第三表標(biāo)識有時稱為區(qū)表標(biāo)識。區(qū)、段和頁表反映實存儲的當(dāng)前分配。頁是用 于虛擬存儲分配的術(shù)語。實存儲配給在固定塊中。即便被分配給一組順序的虛擬地址,頁 也不需要在實存儲中相鄰。當(dāng)用于轉(zhuǎn)換的ASCE是區(qū)第一表標(biāo)識時,轉(zhuǎn)換過程包括使用例如區(qū)第一表、區(qū)第二 表、區(qū)第三表、段表和可選的頁表的多級查找。這些表駐留在實或絕對存儲中。當(dāng)ASCE是 區(qū)第二表標(biāo)識時,區(qū)第三表標(biāo)識、段表標(biāo)識、在高于標(biāo)識級的級別的表中的查找被省略,較 高級的表本身也被省略?,F(xiàn)在參考圖5A,其例示了使用轉(zhuǎn)換表層級結(jié)構(gòu)進(jìn)行虛擬地址的動態(tài)地址轉(zhuǎn)換的一 個實施例。圖4的有效ASCE 400包括標(biāo)識類型(DT)位406。如果ASCE的實空間控制(R) 404 位為零,則選擇器408解碼DT位以確定表起始402標(biāo)識了哪一個起始地址。如果實空間控 制(R)位是1,則如圖5B所示,在節(jié)點D 564發(fā)生動態(tài)地址轉(zhuǎn)換。如果選擇器408中的DT位等于3 ( 二進(jìn)制11),則轉(zhuǎn)換表層級結(jié)構(gòu)中的標(biāo)識的第一 個表是區(qū)第一表。表起始402在502與虛擬地址的區(qū)第一索引(RFX) 508部分算術(shù)相加以 引用區(qū)第一表中的區(qū)第一表項506。所述地址表起始(在右邊加12個0或乘以4096)被加到索引與8的乘積(或索引右側(cè)加3個0)。所述區(qū)第一表項包括到在轉(zhuǎn)換中使用的轉(zhuǎn)換 表層級結(jié)構(gòu)中的下一較低級的表的區(qū)第二表起始504。區(qū)第一表的下一較低級的表是區(qū)第 二表。如果區(qū)第一表項的無效(I)位等于1,則區(qū)第一表項是無效的,并且不能在轉(zhuǎn)換中使 用。指示異常情況。如果選擇器408中的DT位等于2 ( 二進(jìn)制10),則轉(zhuǎn)換表層級結(jié)構(gòu)中的標(biāo)識的第一 個表是區(qū)第二表。表起始402在510與虛擬地址的區(qū)第二索引(RSX) 516部分算術(shù)相加以 引用區(qū)第二表中的區(qū)第二表項514。表起始(在右邊加12個0或乘以4096)被加到索引與 8的乘積(或索引右側(cè)加3個0)。所述區(qū)第二表項包括到在轉(zhuǎn)換中使用的轉(zhuǎn)換表層級結(jié)構(gòu) 中的下一較低級的表的區(qū)第三表起始512。區(qū)第二表的下一較低級的表是區(qū)第三表。如果 區(qū)第二表項的無效(I)位等于1,則區(qū)第二表項是無效的,并指示異常情況。如果選擇器408中的DT位等于1 ( 二進(jìn)制01),則轉(zhuǎn)換表層級結(jié)構(gòu)中的標(biāo)識的第一 個表是區(qū)第三表。表起始402在518與虛擬地址的區(qū)第三索引(RTX) 524部分算術(shù)相加以 引用區(qū)第三表中的區(qū)第三表項522。表起始(在右邊加12個0或乘以4096)被加到索引與 8的乘積(或索引右側(cè)加3個0)。所述區(qū)第三表項包括到在轉(zhuǎn)換中使用的轉(zhuǎn)換表層級結(jié)構(gòu) 中的下一較低級的表的段表起始520。區(qū)第三表的下一較低級的表是段表。如果區(qū)第三表 項的無效(I)位等于1,則區(qū)第三表項是無效的,并指示異常情況。如果選擇器408中的DT位等于0 ( 二進(jìn)制00),則轉(zhuǎn)換表層級結(jié)構(gòu)中的標(biāo)識的第一 個表是段表。表起始402在526與虛擬地址的段索引(SX) 532部分算術(shù)相加以索引段表中 的段表項530。表起始(在右邊加12個0或乘以4096)被加到索引與8的乘積(或索引右 側(cè)加3個0)。所述段表項包括或在528所示的到頁表的起始地址或段幀絕對地址(SFAA)。 如果段表項的無效(I)位等于1,則段表項是無效的,并指示異常情況。在538,檢查段表的STE格式控制(FC)位。如果STE格式控制是1,則段表項530 包括段幀絕對地址(SFAA)552,并且動態(tài)地址轉(zhuǎn)換繼續(xù)引用圖5C中的節(jié)點562。否則,從段 表獲取的段表項包括頁表起始地址,并且動態(tài)地址轉(zhuǎn)換繼續(xù)引用圖5B中的節(jié)點560。現(xiàn)在參考圖5B。如果在段表項中的STE格式控制為0,則從段表中獲得的段表項 包括到轉(zhuǎn)換表層級結(jié)構(gòu)中的下一較低級的表的起始地址。段表的下一較低級的表是頁表。 從圖5A的段表項530獲取的頁表起始528在538與虛擬地址的頁索引(PX) 534部分算術(shù) 相加以引用頁表中的頁表項542。頁表項包括頁幀實地址(PFRA) 546。當(dāng)頁幀實地址的最 左邊的位在548與虛擬地址的字節(jié)索引(BX) 536部分連結(jié)時,獲取64位的實地址550。該 64位實地址可以進(jìn)一步受到加前綴操作以形成絕對地址。轉(zhuǎn)換的虛擬地址引用在主存儲或 存儲器中的期望的4K字節(jié)(4096字節(jié))的數(shù)據(jù)塊。優(yōu)選地,在將虛擬地址動態(tài)轉(zhuǎn)換到存儲器地址中所用的信息與和虛擬地址關(guān)聯(lián)的 存儲器塊的地址一起被存儲在轉(zhuǎn)換后備緩沖器項標(biāo)簽(tag)中。隨后的存儲存取能夠通過 比較ASCE信息和虛擬地址信息與虛擬地址轉(zhuǎn)換后備緩沖器標(biāo)簽而快速轉(zhuǎn)換虛擬地址。如 果標(biāo)簽被發(fā)現(xiàn)是虛擬地址的,則能夠使用存儲器塊的轉(zhuǎn)換后備緩沖器地址而不執(zhí)行對涉及 的每一個轉(zhuǎn)換表的緩慢順序存取。在一個實施例中,頁幀實地址(PFRA)和由例如ASCE以 及虛擬地址的RX、SX和PX部分組成的標(biāo)簽一起存儲在轉(zhuǎn)換后備緩沖器544的項中。這個 虛擬地址的隨后的轉(zhuǎn)換之后從轉(zhuǎn)換后備緩沖器中存儲的信息導(dǎo)出(derive)?,F(xiàn)在參考圖5C。如果在段表項530中的STE格式控制是1,則段表項包括段幀絕對地址(SFAA) 552。當(dāng)段幀絕對地址的最左邊的位在554與虛擬地址的頁索引534部分和 字節(jié)索引536部分連結(jié)時,獲取64位的絕對地址556。轉(zhuǎn)換的虛擬地址引用在主存儲或存 儲器中的期望的大的數(shù)據(jù)塊。大的數(shù)據(jù)塊大小至少為IM字節(jié)(1,048,576字節(jié))。在一個實施例中,段幀絕對地址(SFAA)以及虛擬地址的RX和SX部分被存儲在轉(zhuǎn) 換后備緩沖器544中。這個虛擬地址的隨后的轉(zhuǎn)換之后從轉(zhuǎn)換后備緩沖器中存儲的信息導(dǎo) 出ο轉(zhuǎn)換表項格式在轉(zhuǎn)換中使用的轉(zhuǎn)換表層級結(jié)構(gòu)中的各種轉(zhuǎn)換表項的實施例如下所示。區(qū)表項術(shù)語“區(qū)表項”是指區(qū)第一表項、區(qū)第二表項或區(qū)第三表項。從區(qū)第一表、區(qū)第二 表或區(qū)第三表提取的項具有如下格式。包括項的表的級(1、2或3)由項中的表類型(TT) 位識別。在一個實施例中,區(qū)第一表項、區(qū)第二表項和區(qū)第三表項的格式如下所示區(qū)第一表項(TT= 11) 二表項(TT = 10) 區(qū)第三表項(TT = 01) 區(qū)表項的格式區(qū)第二表起始、區(qū)第三表起始及段表起始區(qū)第一表項包括區(qū)第二表起始。區(qū)第二 表項包括區(qū)第三表起始。區(qū)第三表項包括段表起始。下面的說明適用于這三個表起始中的 每一個。項的位0-51具有在右側(cè)加的12個零,形成標(biāo)識下一較低級的表的開始的64位地址。DAT保護(hù)位(P)當(dāng)增強(qiáng)型DAT應(yīng)用時,位54被處理成與每一個隨后的在轉(zhuǎn)換中使 用的區(qū)表項、段表項和適用時的頁表項中的DAT保護(hù)位進(jìn)行OR或操作。因此,當(dāng)該位為1 時,DAT保護(hù)應(yīng)用于整個區(qū)或由區(qū)表項指定的區(qū)。當(dāng)增強(qiáng)型DAT設(shè)備未安裝時或當(dāng)設(shè)備已 安裝但增強(qiáng)型DAT啟用控制為0時,區(qū)表項的位54將被忽略。
區(qū)第二表偏移、區(qū)第三表偏移及段表偏移(TF)區(qū)第一表項包括區(qū)第二表偏移。 區(qū)第二表項包括區(qū)第三表偏移。區(qū)第三表項包括段表偏移。下面的說明適用于這三個表偏 移中的每一個。項的位56和57指定在表的開始處丟失的下一較低級的表的部分的長度, 即,這些位指定實際存在于下一較低級表中的第一項的位置。所述位以4096個字節(jié)為單位 指定丟失部分的長度,從而使丟失部分的長度512的倍數(shù)項可變。以4096個字節(jié)為單位的 丟失部分的長度等于TF值。偏移字段的內(nèi)容結(jié)合長度字段、位62和63,被用于證實通過下 一較低級表轉(zhuǎn)換的虛擬地址的部分(RSX、RTX或SX)是否標(biāo)識在表中實際存在的項。區(qū)無效位(I)區(qū)第一表項或區(qū)第二表項中的位58控制是否與該項相關(guān)聯(lián)的區(qū)集 (set)是可用的。區(qū)第三表項中的位58控制是否與該項相關(guān)聯(lián)的單區(qū)是可用的。當(dāng)位58 是0時,地址轉(zhuǎn)換通過使用區(qū)表項進(jìn)行。當(dāng)該位是1時,不能將該項用于轉(zhuǎn)換。表類型位(TT)區(qū)第一表項、區(qū)第二表項和區(qū)第三表項中的位60和61識別包括 項的表的級別如下考慮到是轉(zhuǎn)換中正在使用的ASCE的表標(biāo)識的類型和至此已使用的表 級數(shù)目,位60和61必須識別正確的表級;否則,認(rèn)定轉(zhuǎn)換規(guī)范(specification)異常。下 表顯示了表類型位位60和61_區(qū)-表級11第一10第二01第三用于區(qū)表項的表類型位區(qū)第二表長度、區(qū)第三表長度和段表長度(TL)區(qū)第一表項包括區(qū)第二表長度。 區(qū)第二表項包括區(qū)第三表長度。區(qū)第三表項包括段表長度。下面的說明適用于這三個表長 度中的每一個。項的位62和63以4096個字節(jié)為單位指定下一較低級的表的長度,從而使 得表的長度以512的倍數(shù)項可變。以4096個字節(jié)為單位的下一較低級的表的長度比TF值 多1。長度字段的內(nèi)容結(jié)合偏移字段、位56和57,被用于證實通過下一低級表轉(zhuǎn)換的虛擬 地址的一部分(RSX、RTX或SX)是否標(biāo)識在表中實際存在的項。區(qū)表項的所有其它位位置 保留給可能的將來擴(kuò)展并應(yīng)包含零;否則,該程序可能將來不會兼容操作。當(dāng)增強(qiáng)型DAT應(yīng) 用時,區(qū)表項的保留位位置應(yīng)該包含零,即使該表項是無效的。段表項當(dāng)增強(qiáng)型DAT不應(yīng)用時或當(dāng)增強(qiáng)型DAT應(yīng)用且STE格式控制、段表項的位53為零 時,在一個實施例中,從段表提取的項具有如下格式段-表項(T= 00,F(xiàn)C = 0) 段表項的格式I當(dāng)增強(qiáng)型DAT應(yīng)用且STE格式控制是1時,在一個實施例中,從段表提取的項具有 如下格式
段-表項(T-00,F(xiàn)C= 1) 段表項的格式II在段表項中的選擇的區(qū)分配如下頁表起始當(dāng)增強(qiáng)型DAT不應(yīng)用或增強(qiáng)型DAT應(yīng)用但STE格式控制、段表項的位53 為零時,位0-52右側(cè)加11個零形成標(biāo)識頁表開始的64位地址。不可預(yù)知,該地址是實地 址還是絕對地址。段幀絕對地址(SFAA)當(dāng)增強(qiáng)型DAT應(yīng)用和STE格式控制是1時,在項的位0_43 右側(cè)加20個零,形成段的64位絕對地址。ACCF有效性控制(AV)當(dāng)增強(qiáng)型DAT應(yīng)用和STE格式控制是1時,位47是存取控 制位和提取保護(hù)位(ACCF)有效性控制。當(dāng)AV控制為0時,段表項的位48-52被忽略。當(dāng) AV控制為1時,如下所述地使用位48-52。存取控制位(ACC)當(dāng)增強(qiáng)型DAT應(yīng)用、STE格式控制是1和AV控制是1時,段表 項的位48-51包括可用于施加到該地址的任何密鑰控制的存取檢查的存取控制位。提取保護(hù)位(F)當(dāng)增強(qiáng)型DAT應(yīng)用、STE格式控制是1和AV控制是1時,段表項 的位52包括可用于應(yīng)用到該地址的任何密鑰控制的存取檢查的提取保護(hù)位。STE格式控制(FC)當(dāng)增強(qiáng)型DAT應(yīng)用時,位53為段表項的格式控制,具體如下當(dāng)FC位是0時,項的位0-52形成頁表起始,位55保留。當(dāng)FC位是1時,項的位0-43形成段幀絕對地址,位47是ACCF有效控制,位48_51 是存取控制位,位52是提取保護(hù)位,位55是改變記錄重寫。當(dāng)增強(qiáng)型DAT不應(yīng)用時,位53 被忽略。DAT保護(hù)位(P)當(dāng)位54為1時,指示DAT保護(hù)適用于整個段。當(dāng)增強(qiáng)型DAT不應(yīng)用時,位54被處理成與轉(zhuǎn)換中使用的頁表項中DAT保護(hù)位進(jìn)行 OR或操作。當(dāng)增強(qiáng)型DAT應(yīng)用時,轉(zhuǎn)換中使用的任何區(qū)和所有的區(qū)表項中的DAT保護(hù)位被處 理成與段表項中的DAT保護(hù)位進(jìn)行OR或操作;當(dāng)STE格式控制為0時,在STE中的DAT保 護(hù)位被進(jìn)一步處理成與頁表項中的DAT保護(hù)位進(jìn)行OR或操作。改變記錄重寫(CO)當(dāng)增強(qiáng)型DAT應(yīng)用和STE格式控制是1時,段表項的位55是 改變記錄重寫。當(dāng)增強(qiáng)型DAT不應(yīng)用或增強(qiáng)型DAT適用但STE格式控制為0時,段表項的 位55被忽略。段無效位(I)位58控制是否與段表項關(guān)聯(lián)的段是可用的。當(dāng)該位為0時,地址轉(zhuǎn)換通過使用段表項進(jìn)行。當(dāng)該位為1時,段表項不能用于轉(zhuǎn)換。公共段位(C)位59控制段表項的轉(zhuǎn)換后備緩沖器的使用。當(dāng)增強(qiáng)型DAT不應(yīng)用 時或當(dāng)增強(qiáng)型DAT應(yīng)用但格式控制為零時,位59還控制段表項標(biāo)識的頁表的轉(zhuǎn)換后備緩沖器副本的使用。零識別秘密(private)段;在這種情況下,段表項和它標(biāo)識的任何頁表只可以與 標(biāo)識段表項駐留的段表的段表起始關(guān)聯(lián)使用。1標(biāo)識公共段;在這種情況下,段表項和它標(biāo)識的任何頁表可繼續(xù)用于轉(zhuǎn)換對應(yīng) 于段索引的地址,即便指定了不同的段表。然而,如果秘密空間控制、位55在轉(zhuǎn)換中使用的ASCE中是1或如果ASCE是實空 間標(biāo)識,則段表項的轉(zhuǎn)換后備緩沖器副本和公共段的任何頁表不能使用。當(dāng)秘密空間控制 在使用的ASCE中為1時,如果段表項是在轉(zhuǎn)換期間從存儲提取,則公共段位必須為0。否 則,認(rèn)定轉(zhuǎn)換規(guī)范異常。表類型位(TT)段表項的位60和61是二進(jìn)制00以識別含有項的表的級。在區(qū) 表項或段表項中的位60和61的所有可能值的含義如下位 60和61表級11區(qū)第一10區(qū)第二01區(qū)第三00段表類型位60、61考慮到轉(zhuǎn)換中正在使用的ASCE的表標(biāo)識的類型和至此已使用的表級數(shù)目,位60 和61必須識別正確的表級;否則,認(rèn)定轉(zhuǎn)換規(guī)范異常。段表項的所有其它位位置保留用于 將來可能的擴(kuò)展并應(yīng)包含零;否則,該程序?qū)聿粫嫒莶僮?。?dāng)增強(qiáng)型DAT應(yīng)用時,段表 項的保留位位置應(yīng)該包含零,即使該表項是無效的。頁表項在一個實施例中,從頁表提取的項具有如下格式 頁表項的格式在頁表項中的選擇字段分配如下頁幀實地址(PFRA)位0_51提供實存儲地址最左邊的位。當(dāng)這些位在右側(cè)與虛 擬地址的12位字節(jié)的索引字段連結(jié)(concatenate)時,獲取64位的實地址。頁無效位(I)位53控制是否與頁表項相關(guān)聯(lián)的頁是可用的。當(dāng)該位是0時,地 址轉(zhuǎn)換通過使用頁表項進(jìn)行。當(dāng)該位是1時,該頁表項不能用于轉(zhuǎn)換。DAT保護(hù)位(P)位54控制是否可以在頁內(nèi)進(jìn)行存儲存取。這種保護(hù)機(jī)制是在密 鑰控制的保護(hù)和低地址保護(hù)機(jī)制之外的。該位對提取存取沒有影響。如果該位為0,允許向 頁存儲,但受如下的額外的約束在轉(zhuǎn)換中使用的段表項中,DAT保護(hù)位為零。
當(dāng)增強(qiáng)型DAT應(yīng)用時,在轉(zhuǎn)換中使用的所有區(qū)表項中,DAT保護(hù)位都為零。其它保護(hù)機(jī)制如果該位為1,不允許存儲。如果沒有更高優(yōu)先異常狀況存在,在DAT保護(hù)位為1 時試圖存儲導(dǎo)致認(rèn)定保護(hù)異常。當(dāng)確定DAT保護(hù)是否應(yīng)用于該頁時,段表項中的DAT保護(hù) 位被處理成與位54進(jìn)行OR或操作。當(dāng)增強(qiáng)型DAT應(yīng)用時,當(dāng)確定DAT保護(hù)是否應(yīng)用時,在 轉(zhuǎn)換中使用的任何區(qū)表項中的DAT保護(hù)位也被處理成與位54進(jìn)行OR或操作。改變記錄重寫(CO)當(dāng)增強(qiáng)型DAT不應(yīng)用時,頁表項的位55必須包括零;否則,作 為使用該項進(jìn)行地址轉(zhuǎn)換執(zhí)行指令的一部分,認(rèn)定轉(zhuǎn)換規(guī)范異常。當(dāng)增強(qiáng)型DAT適用和STE 格式控制為0時,頁表項的位55是頁的改變記錄重寫。項的位位置52必須包括零;否則,作為使用該項進(jìn)行地址轉(zhuǎn)換執(zhí)行指令的一部 分,認(rèn)定轉(zhuǎn)換規(guī)范異常。位位置56-63不被分配和被忽略。動態(tài)轉(zhuǎn)換的另一個實施例本節(jié)介紹一種在使用虛擬地址存取主存儲之前隱含執(zhí)行的轉(zhuǎn)換過程。虛擬地址轉(zhuǎn)換是受程序狀態(tài)字中的DAT模式位和地址空間控制位以及控制寄存 器1、7和13中的ASCE控制和由存取寄存器指定的。當(dāng)轉(zhuǎn)換中使用的ASCE是區(qū)第一表標(biāo)識 時,通過都貯存在實或絕對存儲中的區(qū)第一表、區(qū)第二表、區(qū)第三表、段表和頁表執(zhí)行轉(zhuǎn)換。 當(dāng)ASCE是較低級類型的表標(biāo)識(區(qū)第二表標(biāo)識、區(qū)第三表標(biāo)識或段表標(biāo)識)時,轉(zhuǎn)換只通 過以標(biāo)識的級開始的表級進(jìn)行,并且虛擬地址位如果不為0,會需要使用更高單個或多個級 表的虛擬地址位必須全為0,否則,認(rèn)定ASCE類型異常。當(dāng)ASCE是實空間標(biāo)識時,虛擬地址 被處理成實地址,并且不使用在實或絕對存儲中的表項。用于特定地址轉(zhuǎn)換的ASCE被稱作有效ASCE。相應(yīng)地,當(dāng)主虛擬地址被轉(zhuǎn)換時,控 制寄存器1的內(nèi)容被用作有效ASCE。類似地,對于二級虛擬地址,使用控制寄存器7的內(nèi) 容;對于AR指定的虛擬地址,使用存取寄存器指定的ASCE ;對于初始虛擬地址,使用控制寄 存器13的內(nèi)容。當(dāng)在有效ASCE中的實空間控制為0時,在ASCE中的標(biāo)識類型指定表標(biāo)識類型區(qū) 第一表、區(qū)第二表、區(qū)第三表或段表。虛擬地址的相應(yīng)的部分(區(qū)第一索引、區(qū)第二索引、區(qū) 第三索引或段索引)與標(biāo)識中的表長度字段核查(check),它被加到標(biāo)識中的起始以選擇 在指定表中的項。如果選擇的項在其表之外,如標(biāo)識中的表長度字段所確定的,或者如果所 選擇的項中的I位為1,則依據(jù)標(biāo)識所指定的表級,認(rèn)定區(qū)第一轉(zhuǎn)換、區(qū)第二轉(zhuǎn)換、區(qū)第三轉(zhuǎn) 換或段轉(zhuǎn)換異常。如果選擇的項中的表類型位沒有指示預(yù)期的表級,認(rèn)定轉(zhuǎn)換規(guī)范異常。通過有效ASCE選擇的表項標(biāo)識要使用的下一較低級的表。如果當(dāng)前表是區(qū)第一 表、區(qū)第二表或區(qū)第三表,那么虛擬地址的下一部分(分別為區(qū)第二索引、區(qū)第三索引或段 索引)與當(dāng)前表項中的表偏移和表長度字段進(jìn)行核查,它被加到項中的起始以選擇在下一 較低級表中的項。如果在下一表中的選擇的項在其表之外,如當(dāng)前表項中的表偏移和表長 度字段所確定的,或者如果選擇的項中的I位為1,則依據(jù)下一表的級,識別區(qū)第二轉(zhuǎn)換、區(qū) 第三轉(zhuǎn)換或段轉(zhuǎn)換異常。如果在選擇的項中的表類型位沒有指示預(yù)期的表級,認(rèn)定轉(zhuǎn)換規(guī) 范異常。通過連續(xù)的表級處理虛擬地址的部分繼續(xù)進(jìn)行,直到段表項已被選擇為止。段表 項包括應(yīng)用于指定段的所有頁的頁保護(hù)位。
23
虛擬地址的頁索引部分被加到段表項中的頁表起始,以選擇頁表中的項。如果頁 表項中的I位為1,認(rèn)定頁轉(zhuǎn)換異常。頁表項包括表示虛擬地址轉(zhuǎn)換的實地址的最左邊的 位,并且它包括僅應(yīng)用于由頁表項指定的頁的頁保護(hù)位。虛擬地址的字節(jié)索引字段未改變地用作實地址的最右邊的位位置。為了消除與參考實或絕對存儲中的轉(zhuǎn)換表相關(guān)聯(lián)的延遲,通常也將從表提取的信 息放在一個特別的緩沖區(qū)、轉(zhuǎn)換后備緩沖器中,并且涉及相同的表項的隨后的轉(zhuǎn)換可通過 使用記錄在轉(zhuǎn)換后備緩沖器中的信息來執(zhí)行。轉(zhuǎn)換后備緩沖器也可以記錄與實空間標(biāo)識相 關(guān)的虛擬等同的實轉(zhuǎn)換。每當(dāng)在地址轉(zhuǎn)換期間出于從區(qū)表、段表或頁表提取項的目的存取實或絕對存儲 時,密鑰控制的保護(hù)不應(yīng)用。ASCE標(biāo)識的表中的查找DT控制、有效ASCE的位60_61指定ASCE的表標(biāo)識類型和虛擬地址部分,該虛擬地 址部分將利用如下的標(biāo)識表進(jìn)行轉(zhuǎn)換^ 60和61_標(biāo)iR類型_由表鮮細(xì)獻(xiàn)以地i丨卜搬11區(qū)第--表區(qū)第一索引(位0-10)
10區(qū)第二二表區(qū)第二索引(位11-21)
01區(qū)第三Ξ表區(qū)第三索引(位22-32)
00段表段索引(位33-43)利用標(biāo)識表的轉(zhuǎn)換當(dāng)位60和61具有二進(jìn)制值11時,虛擬地址的區(qū)第一索引部分結(jié)合包含在ASCE 中的區(qū)第一表起始,被用來從區(qū)第一表中選擇項。通過向區(qū)第一表標(biāo)識的位0-51的右側(cè)加 12個0并與區(qū)第一索引相加,該第一索引最右側(cè)加3個0且最左側(cè)加50個0,獲取實或絕 對存儲中的區(qū)第一表項的64位地址。作為區(qū)第一表查找過程的一部分,將虛擬地址的位0 和1 (是區(qū)第一索引的位0和1)與表長度、區(qū)第一表標(biāo)識的位62和63進(jìn)行比較以證實尋址 項是否在區(qū)第一表內(nèi)。如果表長度字段中的值小于虛擬地址的相應(yīng)位位置中的值,認(rèn)定區(qū) 第一轉(zhuǎn)換異常。如果在轉(zhuǎn)換中使用轉(zhuǎn)換后備緩沖器中的區(qū)第一表項的等同物,與表的長度 的比較可以被省略。從區(qū)第一表提取的項標(biāo)識開始并指定相應(yīng)的區(qū)第二表的偏移和長度。當(dāng)ASCE的位60和61具有二進(jìn)制值10時,虛擬地址的區(qū)第二索引部分結(jié)合包含 在ASCE中的區(qū)第二表起始,被用來從區(qū)第二表中選擇項。將虛擬地址的位11和12(是區(qū) 第二索引的位0和1)與ASCE中的表長度進(jìn)行比較。如果表長度字段中的值小于虛擬地址 的相應(yīng)位位置中的值,認(rèn)定區(qū)第二轉(zhuǎn)換異常。如果在轉(zhuǎn)換中使用轉(zhuǎn)換后備緩沖器中的區(qū)第 二表項的等同物,與表的長度的比較可以被省略。區(qū)第二表查找過程在其他方面與區(qū)第一 表查找過程相同;從區(qū)第二表提取的項標(biāo)識開始并指定相應(yīng)的區(qū)第三表的偏移和長度。當(dāng)ASCE的位60和61具有二進(jìn)制值01時,虛擬地址的區(qū)第三索引部分結(jié)合包含 在ASCE中的區(qū)第三表起始,被用來從區(qū)第三表中選擇項。將虛擬地址的位22和23(是區(qū) 第三索引的位0和1)與ASCE中的表長度進(jìn)行比較。如果表長度字段中的值小于虛擬地址 的相應(yīng)位位置中的值,認(rèn)定區(qū)第三轉(zhuǎn)換異常。區(qū)第三表查找過程在其他方面與區(qū)第一表查 找過程相同,包括檢查區(qū)第三表項中的表類型位。從區(qū)第三表提取的項標(biāo)識開始并指定相 應(yīng)的段表的偏移和長度。
當(dāng)ASCE的位60和61具有二進(jìn)制值00時,虛擬地址的段索引部分結(jié)合包含在ASCE 中的段表起始,被用來從段表中選擇項。將虛擬地址的位33和34(是段索引的位0和1) 與ASCE中的表長度進(jìn)行比較。如果表長度字段中的值小于虛擬地址的相應(yīng)位位置中的值, 認(rèn)定段轉(zhuǎn)換異常。如果在轉(zhuǎn)換中使用轉(zhuǎn)換后備緩沖器中的段表項的等同物,與表的長度的 比較可以被省略。段表查找過程在其他方面與區(qū)第一表查找過程相同,包括檢查段表項中 的表類型位。處理如下當(dāng)增強(qiáng)型DAT不應(yīng)用時或當(dāng)增強(qiáng)型DAT應(yīng)用但STE格式控制為0時,從段表提取 的項標(biāo)識相應(yīng)頁表的開始,并且處理如在下面的“頁表查找”中所述地繼續(xù)進(jìn)行。當(dāng)增強(qiáng)型DAT應(yīng)用和STE格式控制為1時,從段表提取的項包括段幀絕對地址的 最左邊的位。如果在轉(zhuǎn)換中使用的任何區(qū)表項或段表項中的DAT保護(hù)位為1并且正在為其 執(zhí)行轉(zhuǎn)換的存儲引用是存儲時,認(rèn)定保護(hù)異常。區(qū)表項標(biāo)識的表中的查找當(dāng)有效ASCE是區(qū)表標(biāo)識時,如前一節(jié)中所述地選擇區(qū)表項。然后,選定(選擇的) 項的內(nèi)容和虛擬地址的下一索引部分被用于選擇可以是另一個區(qū)表或段表的下一較低級 表中的項。當(dāng)通過ASCE選擇的表項是區(qū)第一表項時,虛擬地址的區(qū)第二索引部分結(jié)合包 含在區(qū)第一表項中的區(qū)第二表起始,被用來從區(qū)第二表中選擇項。通過向區(qū)第一表項的位 0-51的右側(cè)加12個0并與區(qū)第二索引相加,該區(qū)第二索引最右側(cè)加3個0且最左側(cè)加50 個0,獲取實或絕對存儲中的區(qū)第二表項的64位地址。當(dāng)形成區(qū)第二表項、區(qū)第三表項或段表項的地址時,不可預(yù)知是否加前綴(如果 有的話)在加表索引值前被應(yīng)用到包含在更高級的表項中的各表起始,還是加前綴被應(yīng)用 到表項地址,該表項地址通過將表起始和表索引值相加而形成。作為區(qū)第二表查找過程的一部分,將虛擬地址的位11和12(是區(qū)第二索引的位0 和1)與表偏移、區(qū)第一表項的位56和57以及表長度、區(qū)第一表項的位62和63進(jìn)行比較 以證實尋址項是否在區(qū)第二表內(nèi)。如果表偏移字段中的值大于虛擬地址的相應(yīng)位位置中的 值,或者如果表長度字段中的值小于虛擬地址的相應(yīng)位位置中的值,認(rèn)定區(qū)第二轉(zhuǎn)換異常。區(qū)第二表標(biāo)識開始,并指定對應(yīng)區(qū)第三表的偏移量和長度。當(dāng)通過ASCE選擇的表項是區(qū)第二表項時,或如果已通過區(qū)第一表項的內(nèi)容選擇 了區(qū)第二表項,則使用虛擬地址的區(qū)第三索引部分結(jié)合包含在區(qū)第二表項中的區(qū)第三表起 始來從區(qū)第三表中選擇項。將虛擬地址的位22和23 (是區(qū)第三索引的位0和1)與區(qū)第二 表項中的表偏移和表長度進(jìn)行比較。如果表偏移大于位22和23,或如果表長度小于位22 和23,認(rèn)定區(qū)第三轉(zhuǎn)換異常。區(qū)第三表查詢過程在其他方面與區(qū)第二表查詢過程相同。從 區(qū)第三表提取的項標(biāo)識開始,并指定對應(yīng)段表的偏移和長度。當(dāng)通過ASCE選擇的表項是區(qū)第三表項時,或如果已通過區(qū)第二表項的內(nèi)容選擇 了區(qū)第三表項,則使用虛擬地址的段索引部分結(jié)合包含在區(qū)第三表項中的段表起始來從段 表中選擇項。將虛擬地址的位33和34(是段索引的位0和1)與區(qū)第三表項中的表偏移和 表長度進(jìn)行比較。如果表偏移大于位33和34,或如果表長度小于位33和34,則認(rèn)定段轉(zhuǎn) 換異常。如果(I)ASCE中的秘密空間控制、位55為1,以及(2)從段表提取的項中的公共 段位、位59為1,認(rèn)定轉(zhuǎn)換規(guī)范異常。段表查詢過程在其他方面與區(qū)第二表查詢過程相同。 處理如下
當(dāng)增強(qiáng)型DAT不應(yīng)用時,或當(dāng)增強(qiáng)型DAT應(yīng)用但STE格式控制為0時,從段表提取 的項標(biāo)識對應(yīng)頁表的開始,并且處理會在如下“頁表查找”中所述地繼續(xù)進(jìn)行。當(dāng)增強(qiáng)型DAT應(yīng)用并且STE格式控制為1時,從段表提取的項包含段幀絕對地址 的最左邊的位。如果在轉(zhuǎn)換中使用的任何區(qū)表項或段表項中的DAT保護(hù)位為1并且正在為 其執(zhí)行轉(zhuǎn)換的存儲引用是存儲時,認(rèn)定保護(hù)異常。頁表查詢當(dāng)增強(qiáng)型DAT不應(yīng)用時,或當(dāng)增強(qiáng)型DAT適用但STE格式控制為0時,使用虛擬地 址的頁索引部分結(jié)合段表項中包含的頁表起始,以從頁表選擇一個項。通過向頁表起始的右側(cè)附加(加)11個0并與頁索引相加,該頁索引最右側(cè)加3 個0且最左側(cè)加53個0,獲取實存儲或絕對存儲中的段表項的64位地址。位位置0的執(zhí)行 不會發(fā)生。從頁表提取的項指示頁的可用性,并且包含頁幀的實地址的最左邊的位。檢查頁 無效位、位53,以證實對應(yīng)頁是否可用。如果該位為1,認(rèn)定頁轉(zhuǎn)換異常。如果位位置52包 含1,認(rèn)定轉(zhuǎn)換規(guī)范異常。當(dāng)增強(qiáng)型DAT不應(yīng)用時,或當(dāng)增強(qiáng)型DAT應(yīng)用但STE格式控制為 0時,如果位位置55包含1,則認(rèn)定轉(zhuǎn)換規(guī)范異常。當(dāng)增強(qiáng)型DAT不適用時,或當(dāng)增強(qiáng)型DAT 適用并且STE格式控制為0時,如果位位置55包含1,則也認(rèn)定轉(zhuǎn)換規(guī)范異常。如果在轉(zhuǎn) 換所使用的段表項中,在頁表項中,或在轉(zhuǎn)換期間使用的任何區(qū)表項中(當(dāng)增強(qiáng)型DAT應(yīng)用 時),DAT保護(hù)位為1,以及如果為其執(zhí)行轉(zhuǎn)換的存儲引用是存儲,則認(rèn)定保護(hù)異常。實地址與絕對地址的形成當(dāng)有效ASCE是實空間標(biāo)識時,虛擬地址的位0-63直接用作實存儲地址。實地址 可能進(jìn)一步受到加前綴,而形成絕對地址。當(dāng)有效ASCE不是實空間標(biāo)識和在轉(zhuǎn)換過程中沒 有遇到異常情況時,下述狀況應(yīng)用當(dāng)增強(qiáng)型DAT不應(yīng)用時,或當(dāng)增強(qiáng)型DAT應(yīng)用但STE格式控制為0時,從頁表項獲 取頁幀實地址。將頁幀實地址和虛擬地址的字節(jié)索引部分連結(jié),該頁幀實地址形成最左邊 的部分。該結(jié)果是對應(yīng)于虛擬地址的實存儲地址。實地址可能進(jìn)一步受到加前綴,而形成 絕對地址。當(dāng)增強(qiáng)型DAT應(yīng)用并且STE格式控制為1時,段幀絕對地址以及虛擬地址的頁索 引和字節(jié)索引部分分別從左到右連結(jié),而形成對應(yīng)于虛擬地址的絕對地址。轉(zhuǎn)換期間的異常認(rèn)定無效地址和無效格式能導(dǎo)致在轉(zhuǎn)換過程期間認(rèn)定出異常。當(dāng)表項中包含的信息用 于轉(zhuǎn)換且發(fā)現(xiàn)其不正確時,認(rè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)中的下一較低級表的起始地址(origin)。使用虛擬地址的適當(dāng)部分來引用轉(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)的段表項。引用接連的表格,直到已提取到 段表項。一旦已經(jīng)提取了段表項,在612處,檢查段表項(STE)格式控制位,以確定是否針 對該特定的虛擬地址啟用格式控制。如果STE格式控制為0,則關(guān)于節(jié)點614發(fā)生動態(tài)地址 轉(zhuǎn)換。如果STE格式控制為1,則關(guān)于節(jié)點616發(fā)生動態(tài)地址轉(zhuǎn)換。動態(tài)地址轉(zhuǎn)換(STE格式控制為0)現(xiàn)在參考圖7,例示了當(dāng)STE格式控制為0時從圖6節(jié)點614開始的后續(xù)流程圖。在710,從段表項獲取頁表的起始地址。在712,使用虛擬地址的PX部分來引用頁 表中的頁表項。在714,從頁表項獲取頁幀實地址(PFRA)。從頁表項獲取一個無效(I)位。 如果在716處無效(I)位為1,那么由于該項已被標(biāo)記為無效,所以在718處,不能使用該頁 表項繼續(xù)進(jìn)行虛擬地址的轉(zhuǎn)換。使用該頁表項的虛擬地址的進(jìn)一步轉(zhuǎn)換在722處停止。如 果在716處無效(I)位為0,那么在720處,頁幀實地址(PFRA)與虛擬地址的BX部分組合 以生成實地址。實地址可能會進(jìn)一步受到加前綴操作,以形成絕對地址。在724處,使用實 地址來存取轉(zhuǎn)換的虛擬地址尋址的數(shù)據(jù)塊。動態(tài)地址轉(zhuǎn)換(STE格式控制為1)現(xiàn)在參考圖8,例示了從圖6節(jié)點616的后續(xù)流程圖。在810,從段表項的一部分獲取段幀絕對地址(SFAA)。從段表項獲取一個無效(I) 位。如果在812處無效(I)位為1,則由于段表項已被標(biāo)記為無效,所以在814處,不能使用 該段表項進(jìn)行虛擬地址的進(jìn)一步轉(zhuǎn)換。在一個實施例中,將一個異常代碼返回給請求轉(zhuǎn)換 的程序?qū)嶓w。使用該段表項的虛擬地址的進(jìn)一步轉(zhuǎn)換在818處停止。如果在812處無效(I)位為0,那么在816,段幀絕對地址(SFAA)與虛擬地址的PX 和BX部分組合,以生成主存儲或存儲器中所期望的大的數(shù)據(jù)塊的絕對地址。在820,存取由 轉(zhuǎn)換的虛擬地址所尋址的期望的大的數(shù)據(jù)塊。在每一個表項處,對無效位進(jìn)行檢查以確定所獲取表項的有效性。本文進(jìn)一步論 述由保護(hù)轉(zhuǎn)換后虛擬地址所尋址的數(shù)據(jù)塊的其它轉(zhuǎn)換保護(hù)機(jī)制。在另一實施例中,從轉(zhuǎn)換表項獲取限制信息。所述限制信息用于限制對虛擬地址 范圍的受限部分的存取。此后,對轉(zhuǎn)換地址所尋址的期望的大數(shù)據(jù)塊的存取被允許僅對地 址范圍的受限部分進(jìn)行存取。限制信息是表偏移或表長度中的任何一個。還在另一實施例中,將虛擬地址轉(zhuǎn)換中所使用的信息存儲在至少一個轉(zhuǎn)換后備緩 沖器中。隨后,使用來自轉(zhuǎn)換后備緩沖器而非來自轉(zhuǎn)換表層級結(jié)構(gòu)的存儲信息,執(zhí)行從主存 儲中的數(shù)據(jù)塊的虛擬地址到絕對地址的隨后的轉(zhuǎn)換。還在另一實施例中,如果轉(zhuǎn)換并非原生于機(jī)器架構(gòu),則要識別預(yù)定的軟件例程,以 便進(jìn)行仿真轉(zhuǎn)換。預(yù)定的軟件例程中包含多個指令。預(yù)定的軟件例程被執(zhí)行。對尋址數(shù)據(jù)塊的保護(hù)一旦使用增強(qiáng)型DAT設(shè)備轉(zhuǎn)換了虛擬地址,如本文所述,轉(zhuǎn)換的虛擬地址所尋址的主存儲或存儲器中的期望數(shù)據(jù)塊可能會受到附加的保護(hù)機(jī)制。DAT 保護(hù)DAT保護(hù)功能通過使用每個頁表項和段表項中以及當(dāng)增強(qiáng)型DAT設(shè)備安裝時的每 一個區(qū)表項中的DAT保護(hù)位來控制對虛擬存儲的存取。這提供了對于不正當(dāng)存儲的保護(hù)。頁表項的DAT保護(hù)位(位54)對是否允許存儲到對應(yīng)的4K字節(jié)的頁進(jìn)行控制。當(dāng) 該位為0時,提取和存儲都被允許;當(dāng)該位為1時,只允許提取。當(dāng)試圖存儲到受保護(hù)的頁 時,該頁的內(nèi)容保持不變,指令的操作單元或執(zhí)行單元受抑制,并且保護(hù)的程序中斷發(fā)生。段表項的DAT保護(hù)位(位54)對是否允許存儲到對應(yīng)的IM字節(jié)的段進(jìn)行控制,具 體如下當(dāng)增強(qiáng)型DAT不應(yīng)用時,或當(dāng)增強(qiáng)型DAT應(yīng)用并且STE格式控制為0時,段表項的 DAT保護(hù)位被處理成進(jìn)行OR或操作,進(jìn)入段表項標(biāo)識的頁表中的每一個項的DAT保護(hù)位位 置。因此,當(dāng)段表項DAT保護(hù)位為1時,其效果如同是所標(biāo)識的頁表中的每個項中的DAT保 護(hù)位都是1。當(dāng)增強(qiáng)型DAT應(yīng)用并且STE格式控制為1時,段表項的DAT保護(hù)位對是否允許存 儲到對應(yīng)的IM字節(jié)的段進(jìn)行控制。當(dāng)該位為0時,提取和存儲都被允許,當(dāng)該位為1時,只 允許提取。當(dāng)試圖存儲到受保護(hù)的段時,該段的內(nèi)容保持不變,指令的操作單元或執(zhí)行單元 受抑制,并且保護(hù)的程序中斷發(fā)生。當(dāng)增強(qiáng)型DAT應(yīng)用時,區(qū)表項的DAT保護(hù)位對是否允許存儲到對應(yīng)的區(qū)進(jìn)行控制。 區(qū)表項中的DAT保護(hù)位被處理成進(jìn)行或操作,進(jìn)入任何隨后的區(qū)表項或轉(zhuǎn)換中使用的段表 項的DAT保護(hù)位位置。當(dāng)STE格式控制位為0時,DAT保護(hù)位進(jìn)一步傳到頁表項。DAT保護(hù)應(yīng)用于使用虛擬地址的所有存儲類型的引用?,F(xiàn)在參考圖9,例示了從轉(zhuǎn)換中使用的段表項獲取DAT保護(hù)位的一個實施例的流 程圖。在902處,獲取要轉(zhuǎn)換的虛擬地址。在904,獲取虛擬地址轉(zhuǎn)換中使用的第一轉(zhuǎn)換 表的起始。在906,以前面討論的方式,使用虛擬地址的一部分來引用轉(zhuǎn)換表中的項。在 908,由獲取的段幀絕對地址(SFAA)或頁幀實地址(PFRA)生成實地址或絕對地址。在910,從虛擬地址轉(zhuǎn)換中所使用的轉(zhuǎn)換表的每一項獲取DAT保護(hù)⑵位。應(yīng)當(dāng)理 解,DAT保護(hù)的有效級別是從轉(zhuǎn)換中使用的每一個表項獲取的多個P位的邏輯或。在912,檢 查DAT保護(hù)位以確定轉(zhuǎn)換的虛擬地址所尋址的數(shù)據(jù)塊是否被DAT保護(hù)。如果在912,DAT保 護(hù)的(P)位為0,則在914處允許到轉(zhuǎn)換虛擬地址所尋址的數(shù)據(jù)塊的存儲操作。如果在912 處,DAT保護(hù)(P)位為1,則在916處阻止到轉(zhuǎn)換虛擬地址所尋址的數(shù)據(jù)塊的存儲操作???選地,將DAT保護(hù)字段所指示的保護(hù)級別應(yīng)用于使用虛擬地址的所有存儲類型的引用。如 果啟用DAT保護(hù)字段,則在試圖向轉(zhuǎn)換虛擬地址所尋址的期望數(shù)據(jù)塊進(jìn)行存儲的情況下, 指示保護(hù)異常狀態(tài)。密鑰控制式保護(hù)當(dāng)密鑰控制式保護(hù)應(yīng)用于存儲存取時,只有當(dāng)存儲密鑰匹配于與存儲存取請求相 關(guān)聯(lián)的存取密鑰時才允許存儲;當(dāng)密鑰匹配時或當(dāng)存儲密鑰的保護(hù)位為0時,允許提取。當(dāng) 存儲密鑰的4個存取控制位等于存取密鑰時或當(dāng)存取密鑰為0時,視為這些密鑰匹配。保 護(hù)動作概述如下。
保護(hù)動作的概述當(dāng)CPU開始對存儲進(jìn)行存取并且密鑰控制保護(hù)應(yīng)用時,PSW密鑰就是存取密鑰,除 非在通用寄存器中指定了針對MOVE T0SEC0NDARY和MOVE WITH DESTINATION KEY的第一 操作數(shù)的存取密鑰、針對MOVE TO PRIMARY,MOVE WITH KEY 禾口 MOVE WITH SOURCE KEY 的第 二操作數(shù)的存取密鑰以及針對MOVE PAGE的第一操作數(shù)或第二操作數(shù)的存取密鑰。PSW密 鑰占據(jù)當(dāng)前程序狀態(tài)字的位8-11。當(dāng)CPU存取因為密鑰控制式保護(hù)的原因被禁止時,該指令的執(zhí)行會終止,并且保 護(hù)異常的程序中斷發(fā)生。然而,指令的操作單元或執(zhí)行單元可能被抑制。存儲密鑰一個存儲密鑰與所述配置中可用的每個4K字節(jié)的存儲塊相關(guān)聯(lián)。存儲密鑰不是
地址存儲的一部分。在一個實施例中,存儲密鑰的格式如下 存儲密鑰的格式存儲密鑰中的位位置的分配如下存取控制位(ACC)如果引用受到密鑰控制式保護(hù),那么當(dāng)存儲信息時以及當(dāng)從 受到提取保護(hù)的位置提取信息時,4位存取控制位與4位存取密鑰匹配。提取保護(hù)位(F)如果引用受到密鑰控制式保護(hù),那么提取保護(hù)位控制密鑰控制 式保護(hù)是否應(yīng)用于提取類型的引用0指示只監(jiān)測存儲類型的引用,以及允許用任何存取 密鑰提??;1指示密鑰控制式保護(hù)應(yīng)用于提取和存儲。引用位(R)每次為存儲或提取信息而引用對應(yīng)存儲塊中的位置時,通常將引用 位設(shè)為1。
改變位(C):每次將信息存儲到對應(yīng)存儲塊中的一個位置時,將改變位設(shè)為1。當(dāng)增強(qiáng)型DAT應(yīng)用時,下述附加條件生效當(dāng)STE格式控制(FC,轉(zhuǎn)換期間使用的段表項的位53)為0時,轉(zhuǎn)換期間使用的頁 表項的位55是該頁的改變記錄重寫(CO)。當(dāng)頁表項中的CO位為1時,改變記錄對于頁面 的任何存儲操作都是不可預(yù)知的。當(dāng)段表項中的格式控制位(FC)為1時,以下應(yīng)用段表項的位位置47包含ACCF有效性控制。ACCF有效性控制確定存取控制的有效 性和STE中的提取保護(hù)位。當(dāng)ACCF有效性控制為0時,密鑰控制式保護(hù)會使用對應(yīng)于地址 的4K字節(jié)塊的存取密鑰中的存取控制和提取保護(hù)位。當(dāng)ACCF有效性控制為1時,段表項的位位置48_52包含段的存取控制位和提取保 護(hù)位。當(dāng)確定關(guān)于存儲操作數(shù)的可存取性時,構(gòu)成段的4K字節(jié)塊的STE的位48-52或單個 存儲密鑰的位0-4是否已檢查是不可預(yù)知的。段表項的位55是段的改變記錄重寫(CO)。當(dāng)段表項中的CO位為1時,是否針對 段的任何存儲操作設(shè)置改變位是不可預(yù)知的。存儲密鑰存取存儲密鑰的引用處理為如下當(dāng)作出存儲引用并且密鑰控制式保護(hù)應(yīng)用于該引用時,同時檢查四位存取控制位 和與存儲位置相關(guān)聯(lián)的提取保護(hù)位,并同時進(jìn)行存儲位置的引用。當(dāng)(1)增強(qiáng)型DAT不應(yīng) 用;(2)增強(qiáng)型DAT應(yīng)用但存儲是通過其中STE格式控制為0的段表項存??;或(3)增強(qiáng) 型DAT應(yīng)用,并且存儲是通過其中STE格式控制為1的段表項存取,但ACCF有效性控制為 0時,存取控制位和提取保護(hù)位處于4K字節(jié)塊的存儲密鑰的位0-4中。當(dāng)增強(qiáng)型DAT應(yīng)用 并且存儲是通過其中STE格式控制和ACCF有效性控制都為1的段表項來存取時,存儲密鑰 的0-4位或段表項的位48-52是否提供存取控制位和提取保護(hù)位是不可預(yù)知的。此外,當(dāng) 段表項提供存取控制位和提取保護(hù)位時,可以使用來自轉(zhuǎn)換后備緩沖器的緩存副本。當(dāng)增強(qiáng)型DAT應(yīng)用并且,或者(a) STE格式控制為0并且DAT所用頁表項中的改變 記錄重寫為1 ;或者(b) STE格式控制為1并且DAT所用段表項中的改變記錄重寫為1時, 在執(zhí)行存儲操作時CPU是否設(shè)置了改變位是不可預(yù)知的。改變記錄重寫可以緩存在PTE或 STE的轉(zhuǎn)換后備緩沖器副本中。當(dāng)條件性SSKE特征沒有安裝時,指令“SET STORAGE KEYEXTENDED”致使所有 的7位都同時設(shè)置在存儲密鑰中。當(dāng)條件性SSKE特征安裝時,指令“SET STORAGE KEY EXTENDED”可用于基于程序指定的標(biāo)準(zhǔn)來設(shè)置全部或部分存儲密鑰。指令“INSERT STORAGE KEY EXTENDED”提供了 4K字節(jié)塊的存儲密鑰的位0-6 的一致性圖像(consistent image)。類似地,指令 “ INSERT VIRTUAL STORAGE KEY,,和 “TESTPR0TECTI0N”提供存取控制位和提取保護(hù)位的一致性圖像。指令“RESET REFERENCE BIT EXTENDED”只修改引用位。存儲密鑰的所有其它位 保持不變。同時地檢查引用位和改變位以便設(shè)置狀態(tài)碼。引用位所提供的引用記錄未必準(zhǔn)確。然而,在大多情況下,引用記錄與關(guān)聯(lián)的存儲 引用近似一致。在沒有存儲發(fā)生的情況下,可設(shè)置改變位。如其它CPU所觀測到的,因?qū)Υ鎯γ荑€進(jìn)行顯性操作的指令(INSERT STORAGE KEY
30EXTENDED、 INSERT VIRTUALSTORAGE KEY、 RESET REFERENCE BIT EXTENDED 和 SETSTORAGE KEY EXTENDED)而發(fā)生的存儲密鑰提取和存儲在它們彼此之間以及在操作數(shù)引用之間是有 序的,如同存儲密鑰存取自身分別是存儲操作數(shù)提取和存儲。存取控制和提取保護(hù)(ACC/F)主存儲或存儲器中的數(shù)據(jù)塊能通過段表項中提供的存取控制和提取保護(hù)位被進(jìn)
一步保護(hù)。存取有效性(AV)和存取控制(ACC)現(xiàn)在參考圖10,例示了對應(yīng)用到轉(zhuǎn)換的虛擬地址所尋址的期望數(shù)據(jù)塊的存取控制 保護(hù)進(jìn)行確定的流程圖的一個實施例。動態(tài)地址轉(zhuǎn)換進(jìn)行到圖6所述的節(jié)點616,其中已從轉(zhuǎn)換中所使用的段表提取到 段表項。地址轉(zhuǎn)換進(jìn)行到圖8中所述的節(jié)點822,其中已獲取到存儲或存儲器中的期望數(shù)據(jù) 塊的絕對地址。圖10的流程圖開始于節(jié)點822。在1002,從段表項獲取存取有效性(AV)字段。在1004,作出關(guān)于是否啟用段表項 中的存取有效性字段(AV= 1)的確定。如果存取有效性字段為0,那么段表項中的存取控 制(ACC)字段無效。在1006,忽略存取控制字段的位。如果啟用存取有效性字段,那么存取 控制字段有效。在1008,從段表項獲取存取控制字段的位。在1010,將段表項中的ACC字 段所指示的存取控制保護(hù)級應(yīng)用到由轉(zhuǎn)換的虛擬地址所尋址的期望數(shù)據(jù)塊。在另一實施例中,只有當(dāng)存取控制字段與程序?qū)嶓w所提供的存取密鑰匹配,才允 許存儲到期望數(shù)據(jù)塊的存儲操作,該程序?qū)嶓w例如是程序狀態(tài)字或正在執(zhí)行的程序指令的 操作數(shù)。如果試圖對期望的數(shù)據(jù)塊進(jìn)行存儲并且存取控制字段不匹配存取密鑰,則優(yōu)選指 示保護(hù)異常。還在另一實施例中,如果啟用存取有效性字段,如果試圖對期望的存儲器塊進(jìn)行 提取操作或存儲操作并且段存取控制字段不匹配程序存取控制字段,則指示保護(hù)異常。存取有效性(AV)和提取保護(hù)(F)現(xiàn)在參考圖11,例示了對應(yīng)用到轉(zhuǎn)換的虛擬地址所尋址的期望數(shù)據(jù)塊的提取保護(hù) 進(jìn)行確定的流程圖的一個實施例。動態(tài)地址轉(zhuǎn)換進(jìn)行到如圖6所述的節(jié)點616的點,其中已從轉(zhuǎn)換中使用的段表提 取到段表項。地址轉(zhuǎn)換進(jìn)行到圖8所述的節(jié)點822,其中已獲取存儲或存儲器中期望的數(shù)據(jù) 塊的絕對地址。圖11的流程圖開始于節(jié)點822。在1102,從段表項獲取存取有效性(AV)字段。在1104,作出關(guān)于是否啟用段表項 中的存取有效性字段(AV = 1)的確定。如果在1104處存取有效性字段為0,那么在1106, 忽略提取保護(hù)位。如果在1104處啟用存取有效性字段,那么,在1108,從段表項獲得提取保 護(hù)位。在1110,將段表項中的F字段所指示的提取保護(hù)級應(yīng)用到轉(zhuǎn)換虛擬地址所尋址的期 望數(shù)據(jù)塊。只有當(dāng)提取保護(hù)字段匹配存取密鑰,才允許從轉(zhuǎn)換的虛擬地址所尋址的數(shù)據(jù)塊 進(jìn)行提取操作。存取密鑰由程序狀態(tài)字或正在執(zhí)行的程序指令的操作數(shù)提供。只有當(dāng)提取 保護(hù)字段被禁用,或當(dāng)提取保護(hù)字段被啟用且與虛擬地址相關(guān)聯(lián)的存取控制字段等于存取 密鑰,才允許從期望數(shù)據(jù)塊進(jìn)行提取操作。如果存取密鑰為0,則允許從期望數(shù)據(jù)塊進(jìn)行提 取。在另一實施例中,如果程序存取密鑰為0,則允許進(jìn)行到期望的存儲器塊的存儲操作以及從期望的存儲器塊的提取操作。還在另一實施例中,如果啟用了存取有效性字段和 提取保護(hù)字段,則響應(yīng)于試圖從期望的存儲塊進(jìn)行提取操作并且段存取控制字段與程序存 取控制字段不匹配,會指示保護(hù)異常。設(shè)置存儲密鑰擴(kuò)展(SSKE)存儲密鑰可以通過SET STORAGE KEY EXTENDED (SSKE)指令來設(shè)置。在一個實施 例中,SSKE指令具有如下格式 SSKE指令的格式一個或多個4Κ字節(jié)塊的存儲密鑰由第一操作數(shù)寄存器中的值替換。當(dāng)條件性 SSKE設(shè)備安裝時,密鑰設(shè)置操作的某些功能會被繞過。當(dāng)條件性SSKE設(shè)備未安裝時,或當(dāng) 條件性SSKE設(shè)備安裝并且Μ3字段的MR和MC位都為0時,通用寄存器R2的內(nèi)容所尋址的 4Κ字節(jié)塊的存儲密鑰由來自通用寄存器Rl的位替換。該指令在不改變狀態(tài)碼的情況下完 成。當(dāng)條件性SSKE設(shè)備安裝并且MR和MC位中的一個或兩個為1時,將通用寄存器R2 的內(nèi)容所尋址的存儲密鑰的存取控制位、提取保護(hù)位以及可選的引用位和改變位與通用寄 存器R2中的相應(yīng)位進(jìn)行比較。如果比較的位是相等的,不對密鑰進(jìn)行改變;否則,密鑰的選 擇位由通用寄存器Rl中的相應(yīng)位替換。將進(jìn)行任何修改之前的密鑰插入到通用寄存器Rl 中,并且結(jié)果由狀態(tài)碼指示。當(dāng)增強(qiáng)型DAT設(shè)備安裝時,如下所述,可針對受多塊控制的控制的同一 1MB塊內(nèi)的 多個4K字節(jié)塊的存儲密鑰重復(fù)進(jìn)行上述操作。在一個實施例中,M3字段有如下格式 M3字段的格式M3字段的位定義如下保留位保留位0。引用位更新掩碼(MR)如下所述,MR位、M3字段的位1控制是否可繞過存儲密鑰 中的引用位的更新。改變位更新掩碼(MC)如下所述,MC位、M3字段的位2控制是否可繞過存儲密鑰 中的改變位的更新。多塊控制(MB)如在多個4K字節(jié)塊中設(shè)置存儲密鑰中所述的,MB位、M3字段的位 3控制是否可以設(shè)置多個4K字節(jié)存儲塊的存儲密鑰。當(dāng)增強(qiáng)型DAT設(shè)備未安裝時,M3字段的位位置3保留。當(dāng)條件性SSKE設(shè)備安裝 時,處理如下當(dāng)MR和MC位以及M3字段的位1和2都為0時,指令完成,如同條件性SSKE設(shè)備 沒安裝。通用寄存器R2的內(nèi)容所尋址的4K字節(jié)塊的存儲密鑰由來自通用寄存器Rl的位 所替換(替代),并且指令在不改變狀態(tài)碼的情況下完成。
32
當(dāng)MR和MC位中的一個或兩個為1時,處理如下在任何修改之前,通用寄存器R2所尋址的4K字節(jié)塊的存儲密鑰的內(nèi)容放置在通 用寄存器Rl中的位位置48-54中,通用寄存器Rl的位55設(shè)置為0。該寄存器的位0_47和 56-63保持不變。如果提取存儲密鑰時檢測到無效檢查塊碼(CBC)JU (a) 4K字節(jié)塊的整個 存儲密鑰由通用寄存器Rl的位56-62替換,(b)通用寄存器Rl的位位置48-55的內(nèi)容是 不可預(yù)知的,并且(c)指令通過設(shè)置狀態(tài)碼3來完成。所標(biāo)識的4K字節(jié)塊的存儲密鑰的存取控制位和提取保護(hù)位與通用寄存器Rl的位 56-60中的相應(yīng)字段進(jìn)行比較。如果各個字段不相等,那么4K字節(jié)塊的整個存儲密鑰由來 自通用寄存器Rl的位替換,指令通過設(shè)置狀態(tài)碼1來完成。當(dāng)存儲密鑰中的存取控制位和 提取保護(hù)位等于通用寄存器Rl中的相應(yīng)位時,處理繼續(xù)進(jìn)行,如下所述。當(dāng)MR和MC位都為1時,指令通過設(shè)置狀態(tài)碼0來完成。在這種情況下,存儲密鑰 保持不變。當(dāng)MR為0和MC為1時,將用于標(biāo)識的4K字節(jié)塊的存儲密鑰的引用位與通用寄存 器Rl的位61進(jìn)行比較。如果位是相等的,那么指令通過設(shè)置狀態(tài)碼0來完成。在這種情 況下,存儲密鑰保持不變。如果位不相等,那么,或者(a)用于標(biāo)識的4K字節(jié)塊的整個存儲 密鑰被通用寄存器Rl中的位替換,指令通過設(shè)置狀態(tài)碼1來完成;或者(b)用于存儲密鑰 的引用位被通用寄存器Rl的位61替換,密鑰的改變位是不可預(yù)知的,指令通過設(shè)置狀態(tài)碼 2來完成。不可預(yù)知,是否設(shè)置了狀態(tài)碼1或2。當(dāng)MC位為0且和MR位為1時,將用于標(biāo)識的4K字節(jié)塊的存儲密鑰的改變位與通 用寄存器Rl的位62進(jìn)行比較。如果位是相等的,那么指令通過設(shè)置狀態(tài)碼0來完成。在 這種情況下,存儲密鑰保持不變。如果位不相等,那么,或者(a)所標(biāo)識的4K字節(jié)塊的整個 存儲密鑰由通用寄存器Rl中的位替換,指令通過設(shè)置狀態(tài)碼1來完成;或者(b)存儲密鑰 的改變位由通用寄存器Rl的位62替換,密鑰的引用位是不可預(yù)知的,并且指令通過設(shè)置狀 態(tài)碼2來完成。不可預(yù)知,是否設(shè)置了狀態(tài)碼1或2。當(dāng)增強(qiáng)型DAT設(shè)備未安裝時或當(dāng)該設(shè)備已安裝但多塊控制為0時,通用寄存器R2 包括實地址。當(dāng)增強(qiáng)型DAT設(shè)備安裝并且多塊控制為1時,通用寄存器R2包含絕對地址。 在24位尋址模式下,通用寄存器R2的位40-51標(biāo)識實存儲或絕對存儲中的4K字節(jié)塊,寄 存器的位0-39和52-63被忽略。在31位尋址模式下,通用寄存器R2的位33-51標(biāo)識實存 儲或絕對存儲中的4K字節(jié)塊,并且寄存器的位0-32和52-63被忽略。在64位尋址模式 下,通用寄存器R2的位0-51標(biāo)識實存儲或絕對存儲中的4K字節(jié)塊,寄存器的位52-63被 忽略。因為它是實或絕對地址,所以標(biāo)識存儲塊的地址不會受到動態(tài)地址轉(zhuǎn)換。對存儲密 鑰的引用不會受到保護(hù)異常。新的7位存儲密鑰值或其選定(選擇的)位從通用寄存器Rl的位位置56-62獲 取。寄存器的位位置0-55和63的內(nèi)容被忽略。當(dāng)條件性SSKE設(shè)備安裝以及MR和MC位 中的一個或兩個為1時,位位置63應(yīng)該包含0 ;否則,該程序?qū)聿粫嫒莶僮鳌O盗谢蜋z點同步的功能在操作開始前執(zhí)行,并在操作完成后再次執(zhí)行,除了條 件性SSKE設(shè)備安裝并且所產(chǎn)生的狀態(tài)碼為0時,不可預(yù)知,在操作完成后是否執(zhí)行系列化 和檢點同步的功能。對于任何CPU或通道程序在由該指令設(shè)置密鑰之前或之后完成的到標(biāo) 識的4K字節(jié)塊的任何存儲存取,為塊在存儲密鑰中將引用位和改變位相關(guān)設(shè)置為1也是分別在這個指令執(zhí)行之前或之后完成的。在多個4K字節(jié)塊中設(shè)置存儲密鑰當(dāng)增強(qiáng)型DAT設(shè)備未安裝時,或當(dāng)該設(shè)備安裝但多塊控制為0零時,如上所述,用 于單個4K字節(jié)塊的存儲密鑰被設(shè)置。當(dāng)增強(qiáng)型DAT設(shè)備安裝并且多塊控制為1時,可對IM 字節(jié)塊內(nèi)部的多個4K字節(jié)塊的存儲密鑰進(jìn)行設(shè)置,從由第二個操作數(shù)地址指定的塊開始, 繼續(xù)向右進(jìn)行,每一個接續(xù)的塊直至下一個IM字節(jié)的邊界。在這種情況下,SET STORAGE KEY EXTENDED是可中斷的,并且處理如下當(dāng)發(fā)生中斷(終止之后的中斷除外)時,通用寄存器R2已經(jīng)更新,使得指令在重 新執(zhí)行時從中斷點重新開始。如果MR或MC位中的一個或兩個為1,狀態(tài)碼是不可預(yù)知的; 否則,狀態(tài)碼不變。當(dāng)指令在不中斷的情況下完成時,通用寄存器R2已經(jīng)更新到下一個IM字節(jié)的邊 界。如果MR或MC位中的一個或兩個為1,狀態(tài)碼3被設(shè)置;否則,狀態(tài)碼不變。在上述兩種情況的任一情況中,當(dāng)MR或MC位中的一個或兩個為1時,通用寄存器 Rl中的位48-55是不可預(yù)知的。當(dāng)發(fā)生多塊處理并且Rl、R2字段標(biāo)識同一個寄存器時,第二操作數(shù)地址放置在寄 存器中。當(dāng)多塊處理發(fā)生在24位或31位尋址模式下時,最左邊的位(不是通用寄存器R2 的位位置32-63中的地址的一部分)被設(shè)置為0 ;寄存器的位0-31不變。所得到的狀態(tài)碼當(dāng)條件性SSKE設(shè)備未安裝時,或當(dāng)M3字段的MR和MC位都為0時,狀態(tài)碼保持不 變。當(dāng)條件性SSKE設(shè)備安裝且MR和MC位中的一個或兩個為1時,狀態(tài)碼被如下設(shè)置0-存儲密鑰未被設(shè)置1-整個存儲密鑰被設(shè)置2-部分存儲密鑰被設(shè)置3-整個存儲密鑰被設(shè)置;通用寄存器Rl的位48-55是不可預(yù)知的。程序異常尋址(由通用寄存器R2指定的地址)特許操作。改變記錄改變記錄提供關(guān)于在主存儲中更換頁時哪些頁必須存放在輔助存儲中的信息。改 變記錄使用存儲密鑰的改變位(位6)。每當(dāng)存儲存取導(dǎo)致相應(yīng)的存儲塊的內(nèi)容改變,并且 或者(a)增強(qiáng)型DAT不應(yīng)用或者(b)增強(qiáng)型DAT應(yīng)用并且下述之一為真時,改變位被設(shè)為 1 DAT使用的段表項中的STE格式控制為0,且DAT使用的頁表項中的改變記錄重寫 (CO)為 0。DAT使用的段表項中的STE格式控制為1且DAT使用的段表項中的改變記錄重寫 (CO)為 0。不改變存儲內(nèi)容的存儲存取可以或可以不將改變位設(shè)置為1。如果存取被禁止,不 會為試圖存儲而將改變位設(shè)為1。特別是對于CPU,每當(dāng)對該存取存在存取異常時,或每當(dāng)存在優(yōu)先級高于該存取的存取異常優(yōu)先級的異常時,存儲存取被禁止。對于通道子系統(tǒng),每當(dāng)該存取存在密鑰控制的保護(hù)違犯時,存儲存取被禁止。改變記錄總是活動的,對儲存器的所有存儲存取都發(fā)生,包括由任何CPU(除在如 本文所述被改變記錄重寫抑制時以外)、任何操作設(shè)備或通道子系統(tǒng)做出的存儲存取。改變 記錄因機(jī)器所作出的隱含引用而發(fā)生,例如作為中斷的一部分的隱含引用。改變記錄不因下列指令的操作數(shù)而發(fā)生,因為它們不改變存儲地址而直接改變存 儲密鑰RESET REFERENCE BIT EXTENDEDSET STORAGE KEY EXTENDED (改變位被設(shè)置為指定值)在CPU重試時,已經(jīng)從0改為1的改變位未必恢復(fù)到0。改變記錄重寫(CO)每當(dāng)存儲存取導(dǎo)致相應(yīng)存儲塊的內(nèi)容改變時,存儲密鑰的改變位被設(shè)置為1。不改 變存儲內(nèi)容的存儲存取可以或可以不將改變位設(shè)置為1。如果存取被禁止,那么不因試圖存 儲而將改變位設(shè)置為1。改變記錄重寫允許繞過存儲密鑰的改變位的設(shè)置。當(dāng)增強(qiáng)型DAT應(yīng)用并且和虛擬地址通過DAT表項來轉(zhuǎn)換時,在段表項和頁表項二 者的位55中提供改變記錄重寫(CO)。當(dāng)段表項的STE格式控制(FC)位53為0時,在頁表 項中的改變記錄重寫應(yīng)用。當(dāng)PTE中的改變記錄重寫為0時,為4K字節(jié)塊的存儲操作發(fā)生 改變記錄。當(dāng)改變記錄重寫為1時,不可預(yù)知,為4K字節(jié)塊的存儲操作是否發(fā)生改變記錄。 當(dāng)STE格式控制為1時,STE中的改變記錄重寫應(yīng)用。當(dāng)STE中的改變記錄重寫為0時,為 該段的256個4K字節(jié)塊中的任何一個的存儲操作都發(fā)生改變記錄。當(dāng)STE中的改變記錄 重寫為1時,不可預(yù)知,該段的256個4K字節(jié)塊中的任何一個是否發(fā)生改變記錄。改變記錄重寫并不應(yīng)用于實地址或絕對地址,也不應(yīng)用于通過實空間標(biāo)識轉(zhuǎn)換的 虛擬地址?,F(xiàn)在參考圖12,例示了從虛擬地址的動態(tài)地址轉(zhuǎn)換中使用的段表項獲取改變記錄 重寫字段的一個實施例的流程圖。動態(tài)地址轉(zhuǎn)換進(jìn)行到圖6所述的節(jié)點616的點,其中已經(jīng)從轉(zhuǎn)換中使用的段表提 取了段表項。地址轉(zhuǎn)換繼續(xù)到如圖8中說明的節(jié)點822,其中已經(jīng)獲取到存儲或存儲器中的 期望數(shù)據(jù)塊的絕對地址。圖12的流程圖開始于節(jié)點822。在1210,從轉(zhuǎn)換中使用的段表項獲取改變記錄重寫(CO)字段。改變記錄重寫使得 存儲密鑰的改變位被重寫。在1212,做出一個確定,關(guān)于對轉(zhuǎn)換的虛擬地址所尋址的期望 數(shù)據(jù)塊執(zhí)行的存取是存儲類型操作還是提取類型操作。如果存取是提取類型的存取,則在 1213,改變位的設(shè)置不會發(fā)生,并且改變記錄重寫不應(yīng)用。如果存取是存儲類型的操作,則 在1214,做出關(guān)于在段表項中的改變記錄重寫是否被啟用的確定。如果在1214處改變記錄 重寫未被啟用,則在1218將與期望的塊相關(guān)聯(lián)的存儲密鑰的改變位設(shè)置為1。如果在1214 處改變記錄重寫被啟用,則在1216處,不設(shè)置相關(guān)聯(lián)的存儲密鑰的改變位。在1220處,做 出關(guān)于期望的數(shù)據(jù)塊已被修改的指示。在另一實施例中,如果增強(qiáng)型DAT應(yīng)用并且STE中的格式控制沒有啟用,則從段表 項獲取頁表的起始。虛擬地址的頁索引部分被用于引用頁表中的頁表項。從頁表項獲取主 存儲器中的小數(shù)據(jù)塊的頁幀實地址和頁改變重寫字段。每個小的數(shù)據(jù)塊都有一個含有改變位的相關(guān)聯(lián)的存儲密鑰。小的數(shù)據(jù)塊的大小比大的數(shù)據(jù)塊小,并且由4K字節(jié)(4096個字 節(jié))的數(shù)據(jù)塊組成。主存儲器中的期望實數(shù)據(jù)塊的轉(zhuǎn)換地址包括頁幀實地址和虛擬字節(jié)索 引部分的組合。作出關(guān)于對期望的實數(shù)據(jù)塊進(jìn)行的是存儲類型的操作還是提取類型的操 作的確定。如果存取操作是提取類型的操作,那么改變記錄重寫不應(yīng)用。如果存取是存儲 類型的操作,那么,在與虛擬地址相關(guān)聯(lián)的改變記錄重寫字段被禁止的情況下,與期望的4K 塊相關(guān)聯(lián)的存儲密鑰的改變位被設(shè)置為1。還提供了期望的4K塊已被修改的指示。在另一實施例中,如果啟用改變記錄重寫字段,則與期望的4K數(shù)據(jù)塊相關(guān)聯(lián)的存 儲密鑰的改變位不可預(yù)知。商業(yè)的實現(xiàn)雖然本文提及了 IBM &z/ArChiteCture架構(gòu),但本發(fā)明的一個或多個方面同 樣適用于其它的機(jī)器架構(gòu)和/或采用可分頁實體或類似構(gòu)造的計算環(huán)境。本文公開的eDAT設(shè)備和其它格式、指令和屬性的商業(yè)實現(xiàn)可以由硬件來實現(xiàn),或 可通過諸如由編程人員(例如操作系統(tǒng)編程人員)用(例如)匯編語言寫的操作系統(tǒng)程序 的來實現(xiàn)??蓪⑦@種編程指令存儲在存儲介質(zhì)上,用于在(諸如)IBM System ζ服務(wù) 器的計算環(huán)境中以原生方式執(zhí)行,或者可選地在執(zhí)行其它架構(gòu)的機(jī)器中執(zhí)行。這些指令能 夠在現(xiàn)有和將來的IBM 服務(wù)器和其它機(jī)器或大型機(jī)上進(jìn)行仿真。它們可以在其中執(zhí)行 通常處于仿真模式的機(jī)器上執(zhí)行。本發(fā)明的一個或多個方面也同樣適用于(例如)虛擬機(jī)仿真,其中一個或多個分 頁實體(例如,客機(jī)(guest))在一個或多個處理器上執(zhí)行。作為一個例子,分頁客機(jī)由 如下出版物中定義ΙΒΜ 出版物 No. SA22-7095(1985)《IBM System/370 Extended Architecture》中描述的開始解釋性執(zhí)行(Start Interpretive Execution(SIE))架構(gòu),該 出版物通過整體弓I用并入本文。在仿真模式中,對正處于仿真的具體指令解碼,并例如在子程序或驅(qū)動器中執(zhí)行 子例程以便實現(xiàn)各指令,或使用一些其它技術(shù)來為具體硬件提供驅(qū)動器,如本發(fā)明技術(shù)人 員在理解了本發(fā)明說明之后的能力范圍之內(nèi)。各種軟件和硬件仿真技術(shù)在許多美國專利 中都有所描述,其中包括5,551,013,5, 574,873,5, 790,825,6, 009,261,6, 308,255 以及 6,463,582,上述每個專利通過引用并入本文。其它的許多教示進(jìn)一步例示了實現(xiàn)為目標(biāo)機(jī) 構(gòu)造的指令集的仿真的多種方式。其它的變化和架構(gòu)本文所述的各種實施例只是例子。這些實施例可以有多種變化而不背離本發(fā)明的 精神。本發(fā)明的一個或多個性能可以以軟件、固件、硬件或其一些組合來實現(xiàn)。本發(fā)明的 各方面有利于各種類型的環(huán)境,包括具有多個區(qū)的其它環(huán)境和非分區(qū)環(huán)境。此外,可以沒有 中央處理器復(fù)合體,但可以有連在一起的多個處理器。本發(fā)明的各個方面也適用于單處理 器環(huán)境。雖然本文中描述了特定的環(huán)境,但同樣地,可以對環(huán)境進(jìn)行許多變化,而不背離本 發(fā)明的精神。例如,如果環(huán)境是邏輯分區(qū)的,那么環(huán)境中所包含的邏輯分區(qū)可多可少。此外, 可以將多個中央處理復(fù)合體連一起。這些只不過是不背離本發(fā)明精神的變化中的一部分。 此外,還可能存在其它變化。
雖然術(shù)語“頁”是用來指固定大小或預(yù)定義大小的存儲區(qū),但頁的大小能夠改變。 類似地,塊的大小能夠改變??梢源嬖诓煌笮〉膲K和/或頁。一個頁可以等于一個塊。 可選地,可使用其它結(jié)構(gòu)或另外可以通過軟件和/或硬件來實現(xiàn)其它結(jié)構(gòu)。此外,在本文所 述的例子中,可以有多種變化,這些變化包括但不限于不同大小的字或地址;不同數(shù)量的 位;不同順序的位;更多、更少或不同的位;更多、更少或不同的字段;不同順序的字段;不 同大小的字段等等。同樣地,這些只是提供作為例子??赡艽嬖诙喾N變化。處理單元包括諸如客機(jī)、主機(jī)、其它處理器、仿真器,虛擬機(jī)和/或其它類似構(gòu)造 的可分頁實體。緩沖器包括存儲區(qū)和/或內(nèi)存區(qū)(memory)以及不同類型的數(shù)據(jù)結(jié)構(gòu),包括 但不限于數(shù)組或分頁實體。表還可以包括其它數(shù)據(jù)結(jié)構(gòu)。指令可以引用其它寄存器。此外, 頁、段和/或區(qū)變化的大小可以是不同于本文所述的大小。本發(fā)明的一個或多個方面可以包含在具有(例如)計算機(jī)可用介質(zhì)或機(jī)器可讀介 質(zhì)的制造品(例如,一個或多個計算機(jī)程序產(chǎn)品)中。所述介質(zhì)中實施了(例如)計算機(jī) 可讀程序代碼裝置或邏輯(例如指令、代碼和命令等),以提供和促進(jìn)本發(fā)明的功能。制造 品可被包括作為計算機(jī)系統(tǒng)的一部分或單獨出售。另外,可以提供至少一個程序存儲設(shè)備, 該程序存儲設(shè)備可由實施至少一個指令程序的機(jī)器讀取,該至少一個指令程序可由執(zhí)行本 發(fā)明功能的機(jī)器來執(zhí)行。本文描繪的流程圖是例示性的??梢詫@些描述的圖示或步驟或操作進(jìn)行許多變 化,而不背離本發(fā)明的精神。例如,步驟可以以不同的順序執(zhí)行,或者可對步驟進(jìn)行添加、刪 除或修改。所有這些變化都視為本發(fā)明要求保護(hù)的一部分。雖然在這里已經(jīng)詳細(xì)描繪和說明了其中的實施例,但顯然相關(guān)領(lǐng)域的技術(shù)人員可 作出各種修改、添加和替換等,而不背離本發(fā)明精神,并因此,這些被視為在如下權(quán)利要求 書定義的本發(fā)明的范圍內(nèi)。
權(quán)利要求
一種用于將計算機(jī)系統(tǒng)的主存儲中的數(shù)據(jù)塊的虛擬地址轉(zhuǎn)換成轉(zhuǎn)換地址的方法,所述計算機(jī)系統(tǒng)具有用于轉(zhuǎn)換所述虛擬地址的轉(zhuǎn)換表層級結(jié)構(gòu)機(jī)器架構(gòu),所述方法包括獲取要進(jìn)行轉(zhuǎn)換的虛擬地址;獲取所述轉(zhuǎn)換表層級結(jié)構(gòu)轉(zhuǎn)換表的起始地址;使用所述虛擬地址的索引部分來引用所述轉(zhuǎn)換表中的項;確定所述轉(zhuǎn)換表項中的格式控制字段是否被啟用;和響應(yīng)所述格式控制字段被啟用,執(zhí)行從所述轉(zhuǎn)換表項獲取主存儲中的大的數(shù)據(jù)塊的幀地址;將所述幀地址與所述虛擬地址的偏移部分結(jié)合以形成所述主存儲中的所述大的數(shù)據(jù)塊中的期望的數(shù)據(jù)塊的所述轉(zhuǎn)換地址,其中所述期望的數(shù)據(jù)塊包括數(shù)據(jù)的一個或多個字節(jié);和存取由所述轉(zhuǎn)換地址尋址的所期望的大的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1的方法,其中響應(yīng)所述格式控制字段不被啟用,執(zhí)行 從所述轉(zhuǎn)換表項獲取所述轉(zhuǎn)換表層級結(jié)構(gòu)另一個表的起始地址;使用所述虛擬地址的索引部分來引用所述另一個表中的項,從所述另一個表項獲取主 存儲中的小的數(shù)據(jù)塊的小的幀地址,所述小的數(shù)據(jù)塊比所述大的數(shù)據(jù)塊小;將所述小的幀的實地址與所述虛擬地址的偏移部分結(jié)合以形成主存儲中的所期望的 小數(shù)據(jù)塊的轉(zhuǎn)換地址;和存取由所述轉(zhuǎn)換地址尋址的主存儲中的所述期望的小的數(shù)據(jù)塊。
3.根據(jù)權(quán)利要求1的方法,還包括從所述轉(zhuǎn)換表項獲取用于限制對所述大的數(shù)據(jù)塊的限制部分的存取的限制信息;和 將對所述轉(zhuǎn)換地址尋址的所述期望的大的數(shù)據(jù)塊的存取限制為僅存取所述大的數(shù)據(jù) 塊的所述限制部分。
4.根據(jù)權(quán)利要求3的方法,其中所述限制信息包括表偏移或表長度中的任何一個。
5.根據(jù)權(quán)利要求1的方法,其中,轉(zhuǎn)換表層級結(jié)構(gòu)包括以下中的一個或多個具有用 于定位區(qū)第二表的區(qū)第一表項的區(qū)第一表、具有用于定位區(qū)第三表的區(qū)第二表項的區(qū)第二 表、具有用于定位段表的區(qū)第三表項的區(qū)第三表和具有段表項的段表,所述方法還包括以所述轉(zhuǎn)換表層級結(jié)構(gòu)預(yù)定的轉(zhuǎn)換表開始,按順序檢索轉(zhuǎn)換表層級結(jié)構(gòu)轉(zhuǎn)換表項中的 一個或多個,直至具有啟用格式控制字段的轉(zhuǎn)換表項被找到,其中具有轉(zhuǎn)換表項的轉(zhuǎn)換表 的轉(zhuǎn)換表起始地址是所述轉(zhuǎn)換表層級結(jié)構(gòu)轉(zhuǎn)換表的獲得的起始地址,所述轉(zhuǎn)換表項具有啟 用格式控制字段。
6.根據(jù)權(quán)利要求1的方法,還包括將所述虛擬地址的所述轉(zhuǎn)換中使用的信息存儲在至少一個轉(zhuǎn)換后備緩沖器中;和 使用來自所述轉(zhuǎn)換后備緩沖器的所述存儲的信息而不是所述轉(zhuǎn)換表層級結(jié)構(gòu)來執(zhí)行 主存儲中的所述數(shù)據(jù)塊的隨后的虛擬地址到所述絕對地址的隨后的轉(zhuǎn)換。
7.根據(jù)權(quán)利要求1的方法,其中響應(yīng)于所述轉(zhuǎn)換不是原生于所述機(jī)器架構(gòu),還包括 識別用于仿真所述轉(zhuǎn)換的預(yù)定的軟件例程,所述預(yù)定的軟件例程包括多個指令;和 執(zhí)行所述預(yù)定的軟件例程。
8.根據(jù)權(quán)利要求1的方法,其中所述大的數(shù)據(jù)塊包括大小至少為1兆字節(jié)的塊。
9.一種包括如下裝置的系統(tǒng),所述裝置適于執(zhí)行根據(jù)上述任一權(quán)利要求的方法的所有步驟。
10.一種包括指令的計算機(jī)程序,用于當(dāng)在計算機(jī)系統(tǒng)上執(zhí)行所述計算機(jī)程序時,執(zhí)行 根據(jù)上述任一權(quán)利要求的所述方法的所有步驟。
全文摘要
本發(fā)明涉及具有格式控制的動態(tài)地址轉(zhuǎn)換。提供了一種增強(qiáng)型動態(tài)地址轉(zhuǎn)換設(shè)備。在一個實施例中,獲取要進(jìn)行轉(zhuǎn)換的虛擬地址和轉(zhuǎn)換表層級結(jié)構(gòu)轉(zhuǎn)換表的最初的起始地址。所述虛擬地址的索引部分被用于引用轉(zhuǎn)換表中的項。如果格式控制字段被啟用,則從轉(zhuǎn)換表項獲取主存儲中的大的數(shù)據(jù)塊的幀地址。所述大的數(shù)據(jù)塊是大小至少為1M字節(jié)的塊。然后,所述幀地址與所述虛擬地址的偏移部分結(jié)合以形成主存儲中的大的數(shù)據(jù)塊內(nèi)的期望數(shù)據(jù)塊的轉(zhuǎn)換地址。然后,存取由所述轉(zhuǎn)換地址尋址的期望的大的數(shù)據(jù)塊。
文檔編號G06F12/10GK101911022SQ200980102001
公開日2010年12月8日 申請日期2009年1月5日 優(yōu)先權(quán)日2008年1月11日
發(fā)明者C·威伯, D·奧西塞克, D·格雷納爾, E·費菲爾, L·海勒, T·斯萊格爾 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1