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

本地清除控制的制作方法

文檔序號:6534128閱讀:115來源:國知局
本地清除控制的制作方法
【專利摘要】執(zhí)行計算機實現(xiàn)的指令。由所述指令指定一個或多個轉換表項位置(TLB)。根據(jù)為第一值的指令指定的本地清除(LC)控制,處理器有選擇地清除對應所確定的轉換表項位置的項的配置中多個CPU中的TLB。根據(jù)為第二值的本地清除(LC),處理器有選擇地僅清除對應所確定的轉換表項位置的項的正在執(zhí)行所述指令的CPU的TLB。提供了計算機程序產(chǎn)品、計算機系統(tǒng)以及計算機實現(xiàn)的方法。
【專利說明】本地清除控制

【技術領域】
[0001] 總體上講,本發(fā)明涉及計算環(huán)境中的處理,具體地講,本發(fā)明涉及有選擇地清除本 地一個處理器的轉換后備緩沖器(TLB)或者多個處理器的多個轉換后備緩沖器。

【背景技術】
[0002] 如2003年5月12日申請的申請?zhí)枮?284100的、名為"INVALIDATING STORAGE, CLEARING BUFFER ENTRIES, AND AN INSTRUCTION THEREFORE" 的美國專利中所描 述的,使所選擇的諸如存儲器段或者存儲器區(qū)的存儲器單元無效化。通過位于對應于將要 無效化的存儲器單元的數(shù)據(jù)結構項中的無效化指示符的設置,簡化無效化。另外,還清除與 已無效化存儲器單元或者其它選定存儲器單元相關聯(lián)的緩沖器項。提供一條執(zhí)行無效化與 /或清除的指令。而且,在無任何無效化的情況下清除與特定地址空間相關聯(lián)的緩沖器項。 也通過所述指令執(zhí)行所述清除??梢园窜浖?、硬件、固件或者它們的某一組合實現(xiàn)所述指 令,也可以模擬該指令。


【發(fā)明內(nèi)容】

[0003] 在一個實施例中,提供了 一種用于有選擇地清除一個處理器的一個本地轉換后備 緩沖器(Translation Lookaside Buffer, TLB)或者多個處理器的多個轉換后備緩沖器的 計算機程序產(chǎn)品。該計算機程序產(chǎn)品包括:計算機可讀存儲介質,其具有其中所包含的程序 代碼,所述程序代碼可以由計算機處理器加以讀取,以執(zhí)行某一方法。所述方法包括:由處 理器執(zhí)行一條指令。所述執(zhí)行包括:確定所述指令指定的一個或多個轉換表項位置;
[0004] 根據(jù)為第一值的指令指定的本地清除(LC)控制,有選擇地清除對應所確定的轉 換表項位置的項的配置中多個處理器中的TLB ;以及根據(jù)為第二值的本地清除(LC),有選 擇地僅清除對應所確定的轉換表項位置的項的正在執(zhí)行所述指令的配置的處理器的TLB。
[0005] 在另一個實施例中,提供了一種用于用于有選擇地清除一個處理器的一個本地轉 換后備緩沖器(Translation Lookaside Buffer, TLB)或者多個處理器的多個轉換后備緩 沖器的系統(tǒng)。所述系統(tǒng)包括:存儲器;以及配置為與存儲器通信的處理器。將所述計算機系 統(tǒng)配置為能夠執(zhí)行一種方法,所述方法包括:由處理器執(zhí)行一條指令。所述執(zhí)行包括:所述 執(zhí)行包括:確定所述指令指定的一個或多個轉換表項位置;根據(jù)為第一值的指令指定的本 地清除(LC)控制,有選擇地清除對應所確定的轉換表項位置的項的配置中多個處理器中 的TLB ;以及根據(jù)為第二值的本地清除(IX),有選擇地僅清除對應所確定的轉換表項位置 的項的正在執(zhí)行所述指令的配置的處理器的TLB。
[0006] 在另一個實施例中,提供了一種用于用于有選擇地清除一個處理器的一個本地轉 換后備緩沖器(Translation Lookaside Buffer, TLB)或者多個處理器的多個轉換后備緩 沖器的計算機實現(xiàn)的方法。所述方法包括:由處理器執(zhí)行一條指令。所述執(zhí)行包括:所述 執(zhí)行包括:確定所述指令指定的一個或多個轉換表項位置;根據(jù)為第一值的指令指定的本 地清除(LC)控制,有選擇地清除對應所確定的轉換表項位置的項的配置中多個處理器中 的TLB;以及根據(jù)為第二值的本地清除(IX),有選擇地僅清除對應所確定的轉換表項位置 的項的正在執(zhí)行所述指令的配置的處理器的TLB。
[0007] 通過所描述的技術實現(xiàn)更多的特性及優(yōu)點。此處詳細地描述了其它實施例及方 面,并且認為包括所述其它實施例及方面。
[0008] 通過所描述的技術實現(xiàn)其它特性及優(yōu)點。此處詳細地描述了其它實施例及方面, 并且把這些其它實施例及方面視為包括在本發(fā)明中。

【專利附圖】

【附圖說明】
[0009] 通過以下結合附圖的詳細描述,更多的目的、特性以及優(yōu)點將變得十分明顯,其 中:
[0010] 圖1描述了并入及使用一個或多個方面的計算環(huán)境的一個實施例;
[0011] 圖2描述了與圖1的控制器相關聯(lián)的更多細節(jié)的一個實施例;
[0012] 圖3描述了可以模擬另一個計算機的主計算機的一個實施例;
[0013] 圖4描述了 COMPARE AND REPLACE DAT TABLE ENTRY指令的指令圖像及其操作;
[0014]圖 5 描述了 COMPARE AND REPLACE DAT TABLE ENTRY 指令的寄存器操作元;
[0015] 圖6描述了 M4字段;以及
[0016] 圖7描述了計算機可讀介質。

【具體實施方式】
[0017] 計算環(huán)境可以使用通常維持于輔助存儲器中的虛擬存儲器,以增加可用存儲器的 大小。當引用虛擬存儲器的頁時,通過動態(tài)地址轉換將用于引用頁的虛擬地址轉換為真實 存儲器地址。如果該轉換成功,則虛擬存儲器有效;否則,其無效。頁表項中的無效比特將 虛擬存儲器的頁指示為有效或者無效,如果該頁有效,則所述項包括真實存儲器地址。
[0018] 可以一次一頁地使存儲器的頁無效化。例如,在基于由International Business Machines Corporation所提供的z/Architecture的計算環(huán)境中,使用被稱為無效化頁表 項(Invalidate Page Table Entry, IPTE)指令的指令,無效化虛擬存儲器中的一個或者多 個頁。無效化包括在與虛擬存儲器相關聯(lián)且位于物理主存儲器中的控制結構中設置一個無 效指示符,以指示虛擬存儲器中的位置的虛擬地址不能通過動態(tài)地址轉換轉換為物理主存 儲器地址,所述物理主存儲器地址也被稱為真實地址。另外,還使用所述指令清除與頁相關 聯(lián)的內(nèi)部機器緩沖器項,可以在動態(tài)地址轉換期間使用所述項,以避免對物理主存儲器中 的控制結構的訪問。例如,在z/Architecture中,存在在虛擬地址至真實地址的動態(tài)地址 轉換期間所使用的轉換后備緩沖器。當使存儲器的頁無效化時,也從對應的緩沖器清除與 所述頁相關聯(lián)的項。
[0019] 也存在能夠去除整個轉換后備緩沖器的指令。例如,在z/Architecture中,一條 被稱為比較與交換及去除(Compare and Swap and Purge, CSP)指令的指令去除配置中所 有CPU中轉換后備緩沖器的所有項;PURGE TLB清除執(zhí)行該指令的CPU上的TLB的所有項。
[0020] 轉換后備緩沖器
[0021] 為了提高性能,通常采用動態(tài)地址轉換機制,以能夠在被稱為轉換后備緩沖器 (TLB)的特殊緩沖器中維持區(qū)表、段表以及頁表中指定的某些的某些信息。僅當對DAT表 項進行初始訪問時,CPU才需引用真實或者絕對存儲器中的該項。可以將此信息放置在TLB 中,且可以使用TLB中的信息執(zhí)行后繼轉換。為了操作的一致性,也可以使用TLB中的信息 執(zhí)行通過真實空間指定指定的虛擬等于真實轉換(virtual-equals-real translation)。 TLB的存在在如下程度上影響轉換過程:(1)真實或者絕對存儲器中的表項的內(nèi)容的修改 未必對轉換具有立即功效(如果存在);(2)地址空間控制兀素(address-space-control element, ASCE)中的區(qū)第一表原點、區(qū)第二表原點、區(qū)第三表原點、段表原點或者真實空間 標記原點可以選擇由含有相同值的原點的ASCE所形成的TLB項,即使當兩個原點屬于不同 類型時;以及(3)如果使用已指定的表的TLB等效者,則可以省略對地址空間控制元素中的 表長度的比較。在多CPU配置中,每一 CPU具有其自己的TLB。
[0022] TLB內(nèi)的項不可以由程序顯式尋址。
[0023] 不必在所有準許將信息保持于TLB中的條件下,都將信息保持于TLB中。此外,在 除了那些對于其清除為強制的條件之外的條件下也可以清除TLB中的信息。
[0024] TLB 結構
[0025] TLB的邏輯結構的描述涵蓋按z/Architecture的定義操作的所有系統(tǒng)的實現(xiàn)。將 TLB項考慮為具有下列六種類型:TLB區(qū)第一表項、TLB區(qū)第二表項、TLB區(qū)第三表項(統(tǒng)稱 為TLB區(qū)表項)、TLB段表項、TLB頁表項,以及TLB真實空間項。TLB區(qū)表項、TLB段表項或 者TLB頁表項被視為其內(nèi)既含有從真實或者絕對存儲器中的表項所獲得的信息,也含有用 于從存儲器提取所述信息的屬性。TLB真實空間項被視為含有用于形成該項的頁幀真實地 址及真實空間標記原點及區(qū)、段、以及頁索引。
[0026] 可以將任何可使用的TLB區(qū)表項、TLB段表項、以及TLB頁表項合并為一個被稱為 TLB復合表項的單一項。相類似,某一實現(xiàn)可以組合表層的任何連續(xù)子集。當發(fā)生此情形 時,無需緩沖中間表原點、位移、以及長度。
[0027] 可以形成所述體系結構的先前版本中所描述的TLB組合式區(qū)及段表項(CRSTE)的 等效者,該等效者將表原點、區(qū)索引、段索引、以及公共段比特映射于段幀絕對地址或者頁 表原點(以及其它已指定字段)。
[0028] 不能將TLB真實空間項中的標記原點與TLB復合表項、區(qū)表項、或者段表項中的表 原點加以區(qū)分。
[0029] 注意:以下章節(jié)描述了可以將信息放置在TLB中的條件、可以將來自TLB的信息用 于地址轉換的條件,以及對轉換表的改變?nèi)绾斡绊戅D換過程。
[0030] TLB項的形成
[0031] 來自真實或者絕對存儲器中的表項的TLB區(qū)表項、TLB段表項以及TLB頁表項的 信息和程序對存儲器中的表項內(nèi)容的任何操控的功效取決于是否將存儲器中的項附接于 具體的CPU,并且取決于所述項是否有效。
[0032] 表項的附接狀態(tài)表明:將該表項附接于其的CPU可以嘗試將該表項以用于隱式地 址轉換,例外的是,可以附接針對主,即本地址空間的表項,即使當CPU不能從這些空間中 任一空間進行提取時??梢詫⒈眄椧淮胃浇佑谝粋€以上的CPU。
[0033] 表項的有效狀態(tài)表明:與該表項相關聯(lián)的區(qū)集合、區(qū)、段、或者頁可用。當該項中的 區(qū)無效、段無效、或者頁無效比特為〇時,該項有效。
[0034] 凡當附接了該項且其有效,并且在用于轉換時不導致轉換規(guī)格異常時,可以將區(qū) 表項、段表項、或者頁表項放置在TLB中。
[0035]將用于轉換虛擬地址的區(qū)表項(如果存在)及段表項(如果存在)稱為 轉換路徑。當轉換路徑中的最高層表項處于附接地址空間控制元素(attaching address-space-control element,ASCE)指定的表內(nèi)時,附接該最高層表項。"在表內(nèi)"意 指ASCE中的原點及長度字段所確定。當滿足所有以下條件時,ASCE為附接ASCE :
[0036] 1?當前PSW指定DAT接通。
[0037] 2.當前PSW不包含被識別的導致早期規(guī)格異常的錯誤。
[0038] 3. ASCE滿足以下a、b、c、或者d中的要求。
[0039] a. ASCE為控制寄存器1中的主ASCE。
[0040] b. ASCE為控制寄存器7中的次ASCE,且滿足以下要求中任何之一:
[0041] ? CPU處于次空間模式或者訪問寄存器模式。
[0042] ? CPU處于主空間模式,且次要空間控制(控制寄存器0的比特37)為1。
[0043] ? LOAD PAGE TABLE ENTRY ADDRESS的%操作元顯式允許對次要空間的訪問,或 者顯式允許訪問寄存器轉換。
[0044] ? MOVE WITH OPTIONAL SPECIFICATIONS 的任一操作元的操作元訪問控制(0AC) 顯式允許對次要空間的訪問或者顯式允許訪問寄存器轉換。
[0045] 對于用于以上兩個條目中的術語"顯式允許"的進一步的解釋,參見以下程序設計 注意。
[0046] c. ASCE處于附接且有效的ASN第二表項(ASTE)或者可用ALB ASTE中,且滿足以 下要求中任何之一:
[0047] ? CPU處于訪問寄存器模式。
[0048] ? LOAD PAGE TABLE ENTRY ADDRESS的M4字段顯式允許執(zhí)行訪問寄存器轉換。
[0049] ? MOVE WITH OPTIONAL SPECIFICATIONS的任一操作元的0AC顯式允許執(zhí)行訪問 寄存器轉換。
[0050] d. ASCE為控制寄存器13中的本ASCE。
[0051] 不管DAT是接通還是關閉,當當前PSW不含有被識別的導致早期規(guī)格異常錯誤且 滿足以下條件任何之一時,ASCE也為附接ASCE :
[0052] ?當發(fā)生監(jiān)視事件計數(shù)操作時,將本ASCE視為附接ASCE。
[0053] 當轉換路徑中的剩余表項中每一表項處于由在用于轉換時將不導致轉換規(guī)格異 常的下一較高層的附接且有效的項或者由下一較高層的可用TLB項指定的表內(nèi)時,附接所 述剩余表項中每一表項。"在表內(nèi)"意指由下一較高層項中的原點、位移、以及長度字段所確 定。在下一章節(jié)中解釋可用TLB項。
[0054] 當頁表項處于由在用于轉換時將不導致轉換規(guī)格異常的附接且有效的段表項或 者可用TLB段表項指定的頁表內(nèi)時,附接該頁表項。
[0055] 如果區(qū)表項或者段表項中的表類型比特(比特60及61)與該項在轉換過程中使 用轉換路徑時將被遇到的層不一致,則該項導致轉換規(guī)格異常。如果私用空間控制比特在 用于選擇其的地址空間控制元素中為1且公共段比特在段表項中為1,則該項也導致轉換 規(guī)格異常。當EDAT-2適用時,如果私用空間控制比特在用于選擇其的地址空間控制元素中 為1且公共區(qū)比特在區(qū)第三表項中為1,則該項也導致轉換規(guī)格異常。如果頁表項中的比 特52為1,則該項導致轉換規(guī)格異常。當EDAT-1不適用時,如果頁表項中的比特55為1, 則該項也導致轉換規(guī)格異常。
[0056] TLB真實空間使用了一個將要識別的早期規(guī)格異常,且滿足以下條件任何之一:
[0057] ?當發(fā)生監(jiān)視事件計數(shù)操作時,將本ASCE視為附接ASCE。
[0058] 當轉換路徑中剩余表項中的每一表項都處于由在用于轉換時將不導致轉換規(guī)格 異常的下一較高層的附接且有效的項或者由下一較高層的可用TLB項指定的表內(nèi)時,附接 所述剩余表項中的每一表項。"在表內(nèi)"意指由下一較高層項中的原點、位移、以及長度字段 所確定。在下一章節(jié)中解釋可用TLB項。
[0059] 當頁表項處于由在用于轉換時將不導致轉換規(guī)格異常的附接且有效的段表項或 者可用TLB段表項指定的頁表內(nèi)時,附接該頁表項。
[0060] 如果區(qū)表項或者段表項中的表類型比特(比特60及61)與該項在轉換過程中使 用轉換路徑時將被遇到的層不一致,則該項導致轉換規(guī)格異常。如果私用空間控制比特在 用于選擇該私用空間控制比特的地址空間控制元素中為1且公共段比特在段表項中為1, 則該項也導致轉換規(guī)格異常。當EDAT-2適用時,如果私用空間控制比特在用于選擇該私用 空間控制比特的地址空間控制元素中為1且公共區(qū)比特在區(qū)第三表項中為1,則該項也導 致轉換規(guī)格異常。如果頁表項中的比特52為1,則該項導致轉換規(guī)格異常。當EDAT-1不適 用時,如果頁表項中的比特55為1,則該項也導致轉換規(guī)格異常。
[0061] 服從以上所定義的附接且有效的約束,CPU可以在未來存儲引用的預期中或者作 為指令的推測執(zhí)行的結果形成TLB項。
[0062] 程序設計注意:在針對正附接的ASCE的以上條件列表中,條目3. b和3. c使用了 術語"顯式允許…",如以下所解釋的:
[0063] ?當M4字段為0010二進制時,LPTEA顯式允許對次要空間的訪問。
[0064] ?當M4字段為0001二進制時,LPTEA顯式允許執(zhí)行ART。
[0065] ?當操作元的0AC的比特8至9為10二進制、0AC的比特15為1、且次要空間控 制(控制寄存器0的比特37)為1時,MVC0S的任一操作元顯式允許對次要空間的訪問。
[0066] ?當操作元的0AC的比特8至9為01二進制、且0AC的比特15為1時,MVC0S的 任一操作元顯式允許執(zhí)行ART。
[0067] TLB項的使用
[0068] TLB項的可用狀態(tài)表明,對于隱式地址轉換,CPU可以嘗試使用TLB項??捎肨LB 項附接下一較低層表(如果存在),且可能可用于隱式地址轉換的具體取例。
[0069] 參照TLB項,術語"當前層"指的是根據(jù)其形成TLB項的轉換表(區(qū)第一表、區(qū)第 二表、區(qū)第三表、段表、或者頁表)的層。同樣地,"當前層索引"為用作至轉換表的當前層中 的索引的虛擬地址的部分。
[0070] 當滿足所有以下條件時,TLB區(qū)或者段表項處于可用狀態(tài):
[0071] 1?當前PSW指定DAT接通。
[0072] 2.當前PSW不含有被識別的將導致早期規(guī)格異常的錯誤。
[0073] 3. TLB項滿足以下要求中至少之一:
[0074] a.公共區(qū)比特在TLB區(qū)第三表項中為1。
[0075] b.公共段比特在TLB段表項中為1。
[0076] c. TLB項中的ASCE表原點(ASCET0)字段匹配于附接地址空間控制元素中的表原 點字段或者標記原點字段。
[0077] d. TLB項為TLB區(qū)第二表、區(qū)第三表、或者段表項,且TLB項中的當前層表原點字段 匹配于以下之一:
[0078] ?直接指定當前表層(如由R及DT比特所指示)的附接ASCE中的表原點字段
[0079] ?下一較高層的附接區(qū)表項中的表原點字段
[0080] ?下一較高層的可用TLB區(qū)表項中同一層的表原點字段
[0081] 僅當TLB區(qū)表項處于可用狀態(tài)、TLB項中的當前層索引字段匹配于正被轉換的虛 擬地址的對應索引字段、且滿足以下條件任何之一時,該項才可用于隱式地址轉換的具體 取例:
[0082] 1. TLB項中的ASCE表原點(ASCET0)字段匹配于正用于轉換的地址空間控制元素 中的表原點字段或者標記原點字段,且在當前層索引左側的正被轉換的虛擬地址的部分匹 配于TLB項中的對應索引字段。
[0083] 2.正用于轉換的地址空間控制元素指定當前層的表,且TLB項中的當前層表原點 字段匹配于所述地址空間控制元素中的表原點。
[0084] 3. TLB項中的當前層表原點字段匹配于正用于轉換的下一較高層表項或者TLB項 中的同一層的表原點。
[0085] 4.對于TLB區(qū)第三表項,公共區(qū)比特在TLB項中為1,且TLB項中的區(qū)第一索引字 段及區(qū)第二索引字段匹配于正被轉換的虛擬地址的區(qū)第一索引字段及區(qū)第二索引字段。
[0086] 然而,當EDAT-2適用時,如果公共區(qū)比特在TLB區(qū)第三表項中為1,且私用空間控 制比特在正用于轉換的地址空間控制元素中為1或者所述地址空間控制元素為真實空間 指定,則不使用該項。在這兩種情況下,即使TLB項中的ASCE表原點(ASCET0)字段與地址 空間控制元素中的表原點字段或者標記原點字段匹配,也不使用該項。
[0087]僅當TLB段表項處于可用狀態(tài)、TLB項中的段索引字段匹配于正被轉換的虛擬地 址的段索引字段、且滿足以下條件任何之一時,該項才可用于隱式地址轉換的具體取例:
[0088] 1. TLB項中的ASCE表原點(ASCET0)字段匹配于正用于轉換的地址空間控制元素 中的表原點字段或者標記原點字段,且TLB項中的區(qū)索引字段匹配于正被轉換的虛擬地址 的區(qū)索引字段。
[0089] 2. TLB項中的段表原點字段匹配于正用于轉換的地址空間控制元素中的表原點字 段、且所述地址空間控制元素為段表指定。
[0090] 3. TLB項中的段表原點字段匹配于正用于轉換的區(qū)第三表項或者TLB區(qū)第三表項 中的段表原點字段。
[0091] 4.公共段比特在TLB項中為1,且TLB項中的區(qū)索引字段匹配于正被轉換的虛擬 地址的區(qū)索引字段。
[0092] 然而,如果公共段比特在TLB段表項中為1,且私用空間控制比特在正用于轉換的 地址空間控制元素中為1或者所述地址空間控制元素為真實空間指定,則不使用該項。在 這兩種情況下,即使TLB項中的ASCE表原點(ASCET0)字段與地址空間控制元素中的表原 點字段或者標記原點字段匹配,也不使用該項。
[0093] 僅當TLB頁表項中的頁表原點字段匹配于正用于轉換的段表項或者TLB段表項中 的頁表原點字段,且TLB頁表項中的頁索引字段匹配于正被轉換的虛擬地址的頁索引時, 該項才可用于隱式地址轉換的具體取例。
[0094] 僅當TLB項中的標記原點字段匹配于正用于轉換的地址空間控制元素中的表原 點字段或者標記原點字段,且TLB項中的區(qū)索引、段索引、以及頁索引字段匹配于正被轉換 的虛擬地址的區(qū)索引、段索引、以及頁索引字段時,TLB真實空間項才可用于隱式地址轉換。
[0095]可以使用 TLB 內(nèi)容轉換 LOAD PAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS 及 STORE REAL ADDRESS的操作元地址、以及對增強型監(jiān)視計數(shù)陣列的訪問,而無論DAT是接 通還是關閉。然而,對于 LOAD PAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS 及 STORE REAL ADDRESS,TLB項仍僅在DAT接通時才被形成。
[0096] 程序設計注意:
[0097] 1.盡管僅當表項既為附接又為有效時才可以將該表項的內(nèi)容復制至TLB中,即使 當所述表項自身不再為附接或者有效時復本也可以保持于TLB中。
[0098] 2.除了當因增強型監(jiān)視計數(shù)操作而執(zhí)行轉換時之外,無內(nèi)容可以在DAT關閉時 被復制至TLB中,因為所述表項此時未得以附接。具體地講,在DAT關閉的情況下LOAD PAGE-TABLE-ENTRY ADDRESS、L0AD REAL ADDRESS 及 STORE REAL ADDRESS 的操作元地址的 轉換不導致將項放置在TLB中。
[0099] 相反,在給出當前轉換參數(shù)、地址空間控制比特的設置、以及訪問寄存器的內(nèi)容的 情況下,當DAT接通時,可以將信息從可用于地址轉換的所有轉換表項復制至TLB中。作為 當前指令的執(zhí)行的一部分,TLB的載入不取決于是否將所述項用于轉換,且當CPU處于等待 狀態(tài)時可以發(fā)生這樣的載入。
[0100] 3.表項的內(nèi)容的一個以上的復本可以存在于TLB中。例如,對于有效表項通過其 變?yōu)楦浇拥拿恳坏刂房臻g控制元素中的表原點,一些實現(xiàn)可以導致該項的內(nèi)容的復本被放 置在TLB中。
[0101] 轉換表的修改
[0102] 當使附接且無效的表項有效且無可用于關聯(lián)虛擬地址的轉換的項處于TLB中時, 改變不遲于當前操作單元的結束而起作用。相類似,當使未附接且有效的表項附接且無可 用于關聯(lián)虛擬地址的項處于TLB中時,改變不遲于當前操作單元的結束而起作用。
[0103] 當改變有效且附接的表項時,且當在從TLB清除有資格替代該項的項之前嘗試使 用需要轉換該項的虛擬地址引用存儲器時,在以下程度上可能發(fā)生不可以預測結果。新值 的使用可以在若干指令的之間或者在一條指令(包括導致改變的指令)的執(zhí)行期間開始。 此外,在從TLB清除有資格替代該項的項以前,TLB可以既含有舊值也含有新值,且對于具 體的訪問,不可以預測是選擇舊值還是選擇新值。如果較高層表項的舊值及新值均存在于 TLB中,則可以使用一個值提取較低層表項,且將較低層表項放置在與另一值相關聯(lián)的TLB 中。如果該項的新值為將導致異常的值,則該異常可能導致中斷發(fā)生也可能不導致中斷發(fā) 生。如果確實中斷發(fā)生,則即使異常通常會導致抑制或者取消,也可以改變指令的結果字 段。
[0104] 根據(jù)以下規(guī)則從TLB中清除項:
[0105] 1.通過TORGE TLB或者SET PREFIX的執(zhí)行以及CPU重設,從TLB中清除所有項。
[0106] 2.可以依據(jù)由指令所使用的一個般寄存器中的比特,通過由配置中的CPU中任何 之一執(zhí)行COMPARE AND SWAP AND PURGE,從配置中所有TLB清除所有項。
[0107] 3.通過由配置中的CPU中任何之一執(zhí)行INVALIDATE DAT TABLE ENTRY或者 INVALIDATE PAGE TABLE ENTRY,從配置中所有TLB清除所選擇的項。
[0108] 4.可以在不同于由前述規(guī)則所要求的時間清除某些或者所有TLB項。
[0109] 程序設計注意:
[0110] 1. TLB中的項可以在已根據(jù)其形成它們的表項已變?yōu)槲锤浇踊蛘邿o效之后繼續(xù)用 于轉換。不必移除這些TLB項,除非顯式從TLB中清除它們。
[0111] 對附接且有效的項進行的改變或者對致使所述項變?yōu)楦浇忧矣行У谋眄椷M行的 改變反映于針對下一指令或者早于下一指令的轉換過程中,除非TLB項有資格替代所述表 項。然而,在從TLB清除有資格替代致使該項變得未附接或者無效的表項之前,對該表項進 行的改變不必反映于轉換過程中。
[0112] 2.與動態(tài)地址轉換相關聯(lián)的異??梢杂勺鳛橹噶顖?zhí)行的起始的一部分執(zhí)行的針 對操作元可訪問性的預測試加以建立。因此,當表項在執(zhí)行開始時為無效時可以指示區(qū)第 一轉換、區(qū)第二轉換、區(qū)第三轉換、段轉換或者頁轉換異常,即使在指令已使其所使用的表 項有效化且該表項在該指令被視為一次一個字節(jié)地處理操作元時已變得有效的情況下。
[0113] 3.如果附接表項在從TLB清除所述項的內(nèi)容的所有復本之前用于轉換,則對所述 項進行的改變(除了將I比特設置為〇、將段表項或者頁表項的C0比特設置為1、或者變更 頁表項的最右側字節(jié)之外)可能產(chǎn)生不可以預測結果。新值的使用可以在若干指令之間或 者在一條指令(包括導致改變的指令)的執(zhí)行期間開始。當諸如MOVE (MVC)的指令對附接 表項進行改變(包括使該項無效的改變)且隨后使用該項進行轉換時,在不從TLB對該項 進行先前的清除的情況下使用已改變項,且結果值及異常識別的關聯(lián)的不可預測性適用。
[0114] 附接表項的操控可以導致偽表項值被記錄于TLB中。例如,如果逐步進行改變,則 有效附接項的修改可能導致已部分更新的項被記錄,或者如果將中間值引入改變的過程, 則臆測無效項可以臨時變得有效且可以被記錄于TLB中。如果通過重試的I/O操作進行改 變,或者如果在一條單一指令的執(zhí)行期間引入中間值,則可以引入這樣的中間值。
[0115] 作為另一個實例,如果段表項被改變以指定不同頁表且在不清除TLB的情況下被 使用,則可以提取新頁表項且將其與舊頁表原點相關聯(lián)。在這樣的情況下,指定新頁表原點 的INVALIDATE PAGE TABLE ENTRY的執(zhí)行將不必清除從新頁表提取的頁表項。
[0116] 4.為了簡化頁表的操控,提供了 INVALIDATE PAGE TABLE ENTRY指令。此指令將 頁表項中的I比特設置為1,且清除由這些表項所形成的項的配置中的一個或多個TLB,如 下:
[0117] a.當未安裝本地TLB清除設施時,或者當安裝了該設施且指令指定所有TLB的清 除(即,指令中的本地清除控制為〇)時,清除配置中所有TLB。
[0118] b.當安裝了本地TLB清除設施且指令指定僅清除本地TLB(S卩,指令中的本地清除 控制為1)時,僅清除執(zhí)行INVALIDATE PAGE TABLE ENTRY指令的CPU中的TLB。
[0119] 當使用INVALIDATE PAGE TABLE ENTRY時應考慮TLB操作的以下方面。(也參見 針對INVALIDATE PAGE TABLE ENTRY的程序設計注意)。
[0120] a.應該在對頁表項進行任何改變(除了改變最右側字節(jié)之外)之前執(zhí)行 INVALIDATE PAGE TABLE ENTRY;否則,INVALIDATE PAGE TABLE ENTRY 的選擇清除部分可 以不清除該項的TLB的復本。
[0121] b.通過INVALIDATE PAGE TABLE ENTRY使頁表內(nèi)的所有頁表項無效化不必清除指 定該頁表的任何段表項的TLB。當希望使區(qū)表項或者段表項的TLB無效化且清除它們時,必 須遵循以下注意5中的規(guī)則。
[0122] 相類似,通過INVALIDATE DAT TABLE ENTRY使區(qū)表或者段表內(nèi)的所有較低層表項 無效化不必清除指定較低層表的任何較高層表項的TLB。當希望使較高層表項的TLB無效 化且清除其時,必須遵循以下注意5中的規(guī)則。
[0123] c.當將在單一時間使大數(shù)目頁表項無效化時,對于每一頁表項,在使用COMPARE AND SWAP AND PURGE (去除 TLB 的 COMPARE AND SWAP AND PURGE) INVALIDATE DAT TABLE ENTRY或者PURGE TLB且在遵循以下注意5中的規(guī)則時所涉及的開銷可以小于在發(fā)布 INVALIDATE PAGE TABLE ENTRY 時涉及的開銷。
[0124] 5.表項的操控應根據(jù)以下規(guī)則。如果符合這些規(guī)則,則如同總是將來自真實或者 絕對存儲器的表項用于轉換過程那樣執(zhí)行轉換。
[0125] a.在將有效表項附接于任何CPU并且可以由所述CPU用于轉換時并非必須對其進 行改變,除非:(1)使用 INVALIDATE PAGE TABLE ENTRY 或者 INVALIDATE DAT TABLE ENTRY 使該項無效化;(2)變更頁表項的比特56至63 ; (3)使用去除TLB的COMPARE AND SWAP AND PURGE指令進行改變;或者(4)使用COMPARE AND REPLACE DAT TABLE ENTRY替換一個項。
[0126] b.當對附接且有效或者未附接的表項進行除了對頁表項的比特56至63的改變之 外的任何改變時,必須使可以具有由該項形成的TLB項的每一 CPU在所述改變發(fā)生之后且 在由所述CPU使用該項以用于隱式轉換之前去除其TLB。(應注意,如果使用COMPARE AND REPLACE DAT TABLE ENTRY、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLE ENTRY 或者去除TLB的COMPARE AND SWAP AND PURGE指令進行改變,則單獨去除是不必要的。) 在表項附接且有效時的情況下,當知曉并非正執(zhí)行可能要求該項用于轉換的程序時,此規(guī) 則適用。
[0127] c.當以允許中間有效值出現(xiàn)于無效表項中的方式對該項進行任何改變時,必須使 將該項附接于其的每一 CPU在改變發(fā)生之后且在由所述CPU將該項用于隱式地址轉換之前 去除其TLB。
[0128] d.當對針對表而指定的位移或者長度進行任何改變時,必須使可以具有由不再位 于其表內(nèi)的表項形成的TLB項的每一 CPU在改變發(fā)生之后且在由所述CPU將該表用于隱式 轉換之前去除其TLB。
[0129] 應注意,當在不引入中間有效值的情況下使無效頁表項有效時,在不具有由該項 形成的任何TLB項的CPU中無需清除TLB。相類似,當在不引入中間有效值的情況下使無效 區(qū)表項或者段表項有效時,在不具有由該有效化項形成的任何TLB項且不具有由通過該有 效化項附接的頁表中的項形成的任何TLB項的CPU中無需清除TLB。
[0130] PURGE TLB、COMPARE AND SWAP AND PURGE、或者 SET PREFIX 的執(zhí)行可能對一些模 型的性能具有不利功效。因此,應依照以上規(guī)則最小化這些指令的使用。
[0131] 6.當EDAT-1適用時,應做以下考慮:
[0132] a.當STE格式及ACCF有效性控制均為1時,對于任何給定密鑰控制保護檢查,是 否CPU檢測段表項中或者對應4K字節(jié)塊的存儲器密鑰中的訪問控制比特及提取保護比特, 是不可以預測的。因此,在將STE中的無效比特設置為0之前,對于段的構成4K字節(jié)塊的 所有256個存儲器密鑰中的相應字段,程序應確保段表項中的訪問控制比特及提取保護比 特一致。
[0133] 在改變段表項中的ACCF有效性控制、訪問控制比特或者提取保護比特之前,且在 改變段的256個存儲器密鑰中任何之一中的訪問控制比特或者提取保護比特之前,程序應 首先在段表項中將無效比特設置為1,并清除配置中所有TLB中的所有項,如此章節(jié)中先前 所描述的。
[0134] b.在段表項中將改變記錄復寫設置為0之前,程序應在段表項中將無效比特設置 為1,且清除配置中所有TLB中的所有項(例如,使用INVALIDATE DAT TABLE ENTRY)。如 果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND TORGE的形式進行改變,則不要求使表項無效化。
[0135] c.在頁表項中,在將改變記錄復寫設置為0之前,程序應在頁表項中將無效比特 設置為1,且清除配置中所有TLB中的所有項(例如,使用INVALIDATE PAGE TABLE ENTRY)。 如果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND TORGE的形式進行改變,則不要求使表項無效化。
[0136] 當EDAT-2適用時,還應進行以下更多考慮:
[0137] a.當RTTE格式控制及ACCF有效性控制均為1時,對于任何給定密鑰控制保護檢 查,CPU是否檢測區(qū)第三表項中或者對應4K字節(jié)塊的存儲器密鑰中的訪問控制比特及提取 保護比特,是不可以預測的。因此,在將RTTE中的無效比特設置為0之前,對于區(qū)的構成4K 字節(jié)塊的所有524, 288個存儲器密鑰中的相應字段,程序應確保區(qū)第三表項中的訪問控制 比特及提取保護比特一致。
[0138] 在改變區(qū)第三表項中的ACCF有效性控制、訪問控制比特或者提取保護比特之前, 且在改變區(qū)的524, 288個存儲器密鑰中任何之一中的訪問控制比特或者提取保護比特之 前,程序應首先將區(qū)第三表項中的無效比特設置為1,且清除配置中所有TLB中的所有項, 如此章節(jié)中先前所描述的。
[0139] b.在區(qū)第三表項中,在將改變記錄復寫設置為0之前,程序應在區(qū)第三表項中將 無效比特設置為1,且清除配置中所有TLB中的所有項(例如,使用INVALIDATE DAT TABLE ENTRY)。如果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND PURGE的形式進行改變,則不要求使表項無效化。
[0140] 遵守這些操作步驟的失敗可能導致不可以預測結果,可能包括延遲訪問異常機器 檢查,或者記錄一個改變的失敗。
[0141] 增強型DAT設施1
[0142] 增強型DAT設施1可用于實現(xiàn)z/Architecture的模型上。當安裝及啟用該設 施時,DAT轉換可以產(chǎn)生由段表項中的STE格式控制確定的頁幀真實地址或者段幀絕對地 址。當將所述設施安裝于配置中時,控制寄存器0中的一個新比特啟用該設施。注意:術語 EDAT-1適用在此文檔中普遍用于描述當將增強型DAT設施1安裝于配置中且由控制寄存器 〇啟用時的條件。
[0143] 當EDAT-1適用時,以下額外功能可用于DAT過程:
[0144] ?將DAT保護比特添加于區(qū)表項,從而在段表項及頁表項中提供了類似于DAT保護 比特的功能。
[0145] ?將STE格式控制添加于段表項。當STE格式控制為0時,除了頁表項中的改變記 錄復寫指示改變比特的設置對于頁是否可以被旁路之外,DAT按當前定義繼續(xù)。
[0146] ?當STE格式控制為1時,段表項也包含以下內(nèi)容:
[0147]一指定1M字節(jié)塊的絕對存儲器位置的段幀絕對地址(而非頁表原點)。
[0148]一可以替換段的各存儲器密鑰中對應的比特,有選擇地使用的訪問控制比特及提 取保護比特。
[0149]一一個確定段表項中訪問控制比特及提取保護比特的有效性的比特。
[0150] -一個指示改變比特的設置在段的各存儲器密鑰中是否可以被旁路的改變記錄 復寫。所述設施添加了 PERFORM FRAME MANAGEMENT FUNCTION控制指令。該設施包括對以下 控制指令的增強或者改變:? LOAD PAGE-TABLE-ENTRY ADDRESS .MOVE PAGE .SET STORAGE KEY EXTENDED ? TEST PROTECTION
[0151] 增強型DAT設施2
[0152] 增強型DAT設施2可用于實現(xiàn)z/Architecture的模型上。當安裝及啟用該設施 時,DAT轉換可以產(chǎn)生由區(qū)第三表項(如果存在)及段表項(如果存在)中格式控制確定 的頁幀真實地址、段幀絕對地址或者區(qū)幀絕對地址。
[0153] 注意:術語EDAT-2適用在此文檔中普遍用于描述當將增強型DAT設施2安裝于配 置中且由控制寄存器0啟用時的條件。
[0154] 當EDAT-2適用時,以下額外功能可用于DAT過程中:
[0155] .EDAT-1 適用。
[0156] ?將格式控制添加于區(qū)第三表項(RTTE)。當RTTE格式控制為0時,DAT按與EDAT-1 適用時的情況一樣的方式繼續(xù)。
[0157] ?當RTTE格式控制為1時,區(qū)第三表項也含有以下內(nèi)容:
[0158]-指定2G字節(jié)塊的絕對存儲器位置的區(qū)幀絕對地址(而非段表原點)。
[0159]-可以替換段區(qū)的各存儲器密鑰中對應的比特,有選擇地使用的訪問控制比特及 提取保護比特。
[0160]一一個確定區(qū)第三表項中訪問控制比特及提取保護比特的有效性的比特。
[0161] 一一個指示改變比特的設置在區(qū)的各存儲器密鑰中是否可以被旁路的改變記錄 復寫。增強型DAT設施2添加了 COMPARE AND REPLACE DAT TABLE項指令,從而提供了 有效附接DAT表項的動態(tài)替換以及從已替換的項中對所創(chuàng)建的任何TLB項的有選擇的清 除。增強型DAT設施2也包括對以下控制指令的增強或者改變:? INVALIDATE DAT TABLE ENTRY ? LOAD PAGE-TABLE-ENTRY ADDRESS ? MOVE PAGE ? PERFORM FRAME MANAGEMENT FUNCTION ? TEST PROTECTION當安裝增強型DAT設施2時,也安裝增強型DAT設施1。
[0162] 當使段表項無效化時,INVALIDATE DAT TABLE ENTRY (IDTE)通過有選擇地清除 TLB組合式區(qū)及段表項執(zhí)行無效化及清除操作。IDTE也執(zhí)行通過ASCE的清除操作。
[0163] 在IDTE指令的執(zhí)行期間,使存儲器(例如,虛擬存儲器)的已指定部分無效化。 例如,將包括多個存儲器頁的存儲器段或者包括多個存儲器段的存儲器區(qū)選擇為無效化。 通過位于對應于將要無效化的存儲器單元的數(shù)據(jù)結構項中的無效化指示符的設置有助于 無效化。在另一個方面中,清除與正被無效化的存儲器或者其它存儲器相關聯(lián)的緩沖器項 (例如,轉換后備緩沖器項)。另外,在另一方面中,在不影響未選擇的地址空間的緩沖器 項且不執(zhí)行無效化的情況下從緩沖器清除與選擇的地址空間相關聯(lián)的緩沖器項。在一個 實例中,將來自]BMK z/Architecture的、在此處被稱為無效化動態(tài)地址轉換(DAT)表項 (IDTE)指令的指令用于執(zhí)行一個或多個以上操作。
[0164] 無效化DAT表項
[0165] IDTE R1; R3, R2 [, MJ
[0166] 注意:術語"已指定CPU"對于受到這一指令影響的TLB的范圍具有以下含義:
[0167] ?當未安裝本地TLB清除設施時,或者當未安裝該設施且M4字段中的本地清除控 制(LC)比特為0時,術語"已指定CPU"意指配置中所有CPU。
[0168] ?當安裝了本地TLB清除設施且^字段中的LC比特為1時,術語"已指定CPU"僅 意指執(zhí)行IDTE指令的CPU (本地CPU)。配置中所有其它CPU中的TLB可不受到影響。
[0169] 當通過ASCE的清除比特(通用寄存器R2的比特52)為0時,執(zhí)行被稱為無效化及 清除操作的操作,如下。使存儲器中已指定區(qū)表項或者段表項或者從已指定項開始的項的 范圍無效化,且從配置中已指定CPU中的轉換后備緩沖器(TLB)清除(1)通過使用存儲器 中已無效化項形成的已指定類型的所有TLB表項,以及(2)通過使用已清除較高層TLB表 項形成的所有較低層TLB表項??梢詫⒈磺宄腡LB項限制為其形成旨在轉換已指定地址 空間中的地址的項。
[0170] 當通過ASCE的清除選項比特為1時,執(zhí)行被稱為通過ASCE的清除操作的操作,如 下。該操作并不執(zhí)行存儲器中的DAT表項的任何無效化,而是從配置中所有CPU中的TLB清 除其形成旨在轉換已指定地址空間中的地址的所有區(qū)第一表項、區(qū)第二表項、區(qū)第三表項、 段表項以及頁表項。
[0171] 14字段的比特被定義如下:
[0172] ?保留的:忽略^字段的比特0至1,但應包含0;否則,之后程序可能會不兼容地 操作。
[0173] ?格式控制摘要(FS):當EDAT-2適用時,M 4字段的比特2為針對無效化及清除操 作的格式控制摘要(FS)。對于通過ASCE的清除操作且當EDAT-2不適用時,忽略M 4字段的 比特2。
[0174] 當指定類型(DT)(通用寄存器&的比特60至61)為00或者01二進制時,格式 控制摘要適用;當通用寄存器&中的DT為10或者11二進制時,忽略格式控制摘要。
[0175] ?本地清除控制(LC):當安裝了本地TLB清除設施時,LC比特(M4字段的比特3) 控制是否僅清除本地CPU中的TLB,或者是否清除配置的所有CPU中的TLB。當未安裝本地 TLB清除設施安裝時,忽略M 4字段的比特3。
[0176] 無效化及清除操作
[0177] 當通用寄存器R2的比特52 (通過ASCE的清除選項比特)為0時,指定無效化及 清除操作。
[0178] 通用寄存器札的內(nèi)容具有地址空間控制元素的格式,其中僅使用表原點(比特0 至51)及指定類型控制(DT)(比特60及61)。表原點指定其中一個或多個項將被無效化的 DAT表,且DT指定該表的類型。
[0179] 忽略通用寄存器&的比特52至59、62、以及63。
[0180] 通用寄存器R2的比特0至43具有虛擬地址的區(qū)索引及段索引的格式。通常將由 DAT用于選擇由通用寄存器&指定的表類型中的項的比特0至43的部分稱為有效無效化 索引。
[0181] 通用寄存器&的比特60及61指定表類型及有效無效化索引,如下 :
[0182] 忽略有效無效化索引右側的通用寄存器R2的比特0至43的部分。
[0183] 通用寄存器&中的表原點及有效無效化索引指定將要無效化的DAT表項。通用寄 存器R 2的比特53至63為指定將要無效化的額外表項的數(shù)目的一個無正負號二進制整數(shù)。 因此,將要無效化項的數(shù)目為1至2, 048,對應于比特53至63的值。
[0184] 通用寄存器R2的比特44至51必須為0 ;否則,識別為規(guī)格異常。
[0185] 如果R3為非零,則通用寄存器1?3的內(nèi)容具有地址空間控制元素的格式,其中僅使 用表原點(比特0至51)及指定類型控制(DT)(比特60及61)。這些內(nèi)容用于選擇將要清 除的TLB項。忽略通用寄存器R 3的比特52至59、62及63。如果1?3為0,則忽略通用寄存 器0的整個內(nèi)容,且清除TLB項而不管用于形成它們的ASCE如何。
[0186] 除了總是忽略來自所得地址的比特位置0的進位且不對照表長度字段檢查該索 引之外,通用寄存器&中的表原點及通用寄存器R 2中的有效無效化索引根據(jù)2010年8月的 IBM 出版物第 SA22-7832-08 號的"z/Architecture Principles of Operation"中"Lookup in a Table Designated by an Address-Space-Control Element" 中的規(guī)則指定表項,特 將該出版物的全部內(nèi)容并入此處,以作參考。表原點被視為64比特地址,且使用針對64比 特地址運算的規(guī)則執(zhí)行相加,而不管由當前PSW的比特31及32指定的當前尋址模式如何。 由此兩個分量形成的地址為真實或者絕對地址。將此區(qū)表項或者段表項的無效比特(比特 58)設置為1。在此操作步驟期間,未針對格式錯誤或者針對項中下一較低層表的原點是否 將導致尋址異常檢查該項。忽略項中的表類型字段。如果項為段表項,則忽略該項中的公 共段比特。如果EDAT-2適用且項為區(qū)第三表項,則忽略該項中的公共區(qū)比特。
[0187] 從存儲器并行地提取整個表項。隨后,存儲包含無效比特的字節(jié)。對該項的提取 訪問受到密鑰控制保護,且存儲訪問受到密鑰控制保護及低地址保護。
[0188] 如果通用寄存器R2的比特53至63并非全為0,則通過將1加至有效無效化索引 的先前使用值重復在區(qū)表項或者段表項中將無效比特設置為1,且此重復進行達比特53至 63指定的次數(shù)。忽略有效無效化索引的最左側比特位置外的進位,且在此情況下表中出現(xiàn) 環(huán)繞式處理。通用寄存器R 2的內(nèi)容保持不變。
[0189] 在操作開始之前執(zhí)行序列化功能,且在操作完成之后再次執(zhí)行這一功能。如針對 所有序列化操作的情況一樣,此序列化僅應用于此CPU ;其它CPU不必被序列化。
[0190] 在此CPU已將無效比特設置為1之后,此CPU從其TLB清除選擇的項。接下來,如 果未安裝本地TLB清除設施,或者如果安裝了該設施且^字段中的LC比特為0,則此CPU 向配置中所有其它CPU發(fā)送信號,以從它們的TLB清除選擇的項。從每一受影響TLB清除 那些至少滿足所有以下條件的項:
[0191] ?通用寄存器R2中的有效無效化索引匹配于由通用寄存器Ri的比特60至61中的 DT字段指定的類型的TLB表項中的對應的索引。如果所述模型實現(xiàn)了一個包括由DT字段 指定的索引的復合TLB項,則通用寄存器R 2中的有效索引左側的比特也匹配于已指定TLB 表項中提供的任何對應的比特。應注意,當多個表項因通用寄存器R2的比特53至63而無 效化時,則使有效無效化索引遞增,丟棄在該索引的最左側比特位置外的進位,且針對如此 獲得的索引的每一個值清除TLB區(qū)表項或者段表項。
[0192] *R3字段為0,或者通用寄存器1?3中的表原點及指定類型字段匹配于用于形成TLB 表項的地址空間控制元素(ASCE)中的表原點及指定類型字段。
[0193] ?如果R3字段為0,則此步驟中所描述的條件不適用。
[0194] ?如果存儲器中無效化的項指定較低層轉換表,則已無效化項中的較低層表原點 匹配于TLB表項中的表原點字段。
[0195] 也從每一受影響TLB清除至少滿足所有以下條件的任何較低層TLB表項:
[0196] ?通過使用存儲器中無效化的項或者通過使用較高層TLB表項形成較低層TLB表 項,其中,所述較高層TLB表項是通過使用存儲器中無效化的項或者在此過程中清除的TLB 項所形成的。
[0197] *R3字段為0,或者通用寄存器1?3中的表原點及指定類型字段匹配于用于形成較低 層TLB表項的地址空間控制元素(ASCE)中的表原點及指定類型字段。此ASCE可以為附接 包含較高層表項的轉換路徑的ASCE,其中,所述較高層表項附接存儲器中根據(jù)其形成較低 層TLB表項的較低層表項,或者該ASCE可以為使較高層TLB表項可用的ASCE,其中,所述較 高層TLB表項附接存儲器中根據(jù)其形成較低層TLB表項的較低層表項。如果R 3字段為0, 則此步驟中所描述的條件不適用。
[0198] ?如果存儲器中無效化的項指定較低層轉換表,則已無效化項中的較低層表原點 匹配于TLB表項中的表原點字段。
[0199] 程序設計注意:
[0200] 1.將格式控制摘要設置為1可以在某些模型上提供改進的性能。
[0201] 2.當指定類型(DT)(通用寄存器&的比特60至61)為00二進制時,格式控制摘 要應用于正被無效化的段表項。當通用寄存器&中的DT為01二進制時,格式控制摘要應 用于正被無效化的區(qū)第三表項。
[0202] 3.如果程序可以確保格式控制(表項的比特53)在正被無效化的所有表項中為 1,則程序應僅將格式控制摘要設置為1。如果將格式控制摘要設置為1,但格式控制并非在 正被無效化的所有表項中為1,則可能發(fā)生TLB的不完全去除,從而導致來自DAT的不可以 預測的結果。
[0203] 4.將指令的仏字段視為可選用的,如由包含在匯編程序語法中的括號□內(nèi)的字 段所指示。當未指定M 4字段時,匯編程序將0放置在指令的該字段中。
[0204] 如果無效比特在區(qū)表項或者段表項中已經(jīng)為1,則可以或者可以不發(fā)生在區(qū)表項 或者段表項中的存儲及TLB項的清除。
[0205] 當使多個項無效化時,可以延遲TLB項的清除,直至已使所有項無效化。
[0206] 通過ASCE的清除操作
[0207] 當通用寄存器R2的比特52 (通過ASCE的清除選項比特)為1時,指定通過ASCE 的清除操作。
[0208] 通用寄存器馬的內(nèi)容具有地址空間控制元素的格式,其中僅使用表原點(比特0 至51)及指定類型控制(DT)(比特60及61)。這些內(nèi)容用于選擇將要清除的TLB項。忽略 通用寄存器R 3的比特52至59、62及63。R3可以為零或者非零,S卩,可以指定包括寄存器0 的任何通用寄存器。
[0209] 通用寄存器R2的比特44至51必須為0;否則,識別為規(guī)格異常。
[0210] 忽略通用寄存器札的內(nèi)容以及通用寄存器R 2的比特位置0至43及53至63的內(nèi) 容。
[0211] 在所有層從配置中已指定CPU的TLB至少清除那些對于其通用寄存器R3中的表 原點字段及指定類型字段匹配于用于形成該項的地址空間控制元素(ASCE)中的表原點字 段及指定類型字段的項。此ASCE為用于在其間形成該項的轉換中的ASCE。
[0212] 當通過ASCE的清除選項比特(通用寄存器R2的比特52)為1時,忽略M 4字段。
[0213] 公共操作
[0214] INVALIDATE DAT TABLE ENTRY的執(zhí)行并未在執(zhí)行其的CPU上完成,直至發(fā)生以下 情形為止:
[0215] 1.已從此CPU的TLB清除了滿足以上指定的準則的所有項。當安裝了本地TLB清 除設施且^字段中的LC比特為1時,INVALIDATE DAT TABLE ENTRY的執(zhí)行在此時完成,且 不執(zhí)行以下步驟。
[0216] 2.當未安裝本地TLB清除設施時,或者當安裝了該設施且仏字段中的LC比特為 0時,配置中所有其它CPU已使用對應于已指定參數(shù)的TLB項完成了任何存儲訪問,包括改 變比特及參照比特的更新。
[0217] 操作不必對TLB真實空間項具有任何功效。
[0218] 具體條件:
[0219] 通用寄存器R2的比特44至51必須為0;否則,識別為規(guī)格異常。
[0220] 對于所有尋址及保護異常這一操作受到抑制(僅無效化及清除操作)。
[0221] 所得條件碼:該碼為不可以預測的。
[0222] 程序異常:
[0223] ?尋址(已無效化區(qū)表項或者段表項,僅無效化及清除操作)。
[0224] ?操作(如果未安裝DAT增強設施)
[0225] ?特權操作
[0226] ?保護(提取及存儲、區(qū)表項或者段表項、密鑰控制保護及低地址保護;僅無效化 及清除操作)。
[0227] ?規(guī)格
[0228] 程序設計注意:
[0229] 1.可以依據(jù)模型,按不同方式實現(xiàn)TLB項的選擇清除,而且,一般而言,可以清除 多于所需要的最小數(shù)目的項。當執(zhí)行無效化及清除操作時,一些模型可以在有效無效化索 引并非段索引時清除所有TLB項,或者可以清除一個項而不管該項中的頁表原點如何。當 執(zhí)行該操作或者通過ASCE的清除操作時,一些模型可以清除TLB項而不管通用寄存器馬中 的指定類型字段如何。當執(zhí)行任一操作時,其它模型可以精確地清除所需要的最小數(shù)目的 項。因此,為了使程序在所有模型上操作,程序不應利用由具體模型上的較少選擇的清除獲 得的任何特性。
[0230] 2.當使用通過ASCE的清除操作清除與公共段相關聯(lián)的TLB項時,應注意,這些項 可能已通過使用包含許多不同表原點的地址空間控制元素得以形成。
[0231] 當指定無效化及清除操作時,以下注意適用。
[0232] 3. TLB項的清除可以利用段表項中的頁表原點。因此,如果段表項在處于附接狀態(tài) 時一直包含不同于當前值的頁表原點,則包含先前值的項的復本可以保持于TLB中。
[0233] 4.如果存在另一個CPU或者通道程序也可以正更新主存儲器中的共享位置的可 能性,則INVALIDATE DAT TABLE ENTRY不能安全地用于更新該位置。
[0234] 5.針對INVALIDATE DAT TABLE ENTRY的DAT表項的地址為一個64比特地址,且 遵循用于64比特地址運算的通常規(guī)則執(zhí)行地址運算,其中環(huán)繞式處理出現(xiàn)于2 64-1處。另 夕卜,不使用位移及長度字段。將此情形與隱式轉換以及針對LOAD REAL ADDRESS及STORE REAL ADDRESS的轉換加以對比,它們?nèi)伎梢栽谶M位發(fā)生于比特位置0外時導致環(huán)繞式處 理或者導致尋址異常,且它們在已指定項未位于其表內(nèi)時指示異常條件。因此,DAT表不應 被指定為從最大存儲位置至位置〇進行環(huán)繞式處理,且第一已指定項及由通用寄存器馬的 比特53至63指定的所有額外項應位于已指定表內(nèi)。
[0235] 6.當安裝了本地TLB清除設施時,應將本地清除控制應指定為在用于形成正被清 除的TLB項的ASCE已僅附接于在其上執(zhí)行IDTE指令的CPU時的本地清除控制(例如,如 果程序正在單處理器上執(zhí)行)。否則,可能發(fā)生不可以預測結果,包括延遲訪問異常機器檢 查的呈現(xiàn)。
[0236] 在一些模型上,針對以上所列出的情況使用指定僅清除本地TLB的INVALIDATE DAT TABLE ENTRY可以導致顯著性能改進。
[0237] 7.將指令的仏字段視為可選的,如由包含在匯編程序語法中的括號□內(nèi)的字段 所指示。當未指定M 4字段時,匯編程序將0放置在指令的該字段中。
[0238] 無效化頁表項
[0239] IPTE
[0240] 注意:術語"已指定CPU"對于受到此指令影響的TLB的范圍具有以下含義 :
[0241] ?當未安裝本地TLB清除設施時,或者當安裝了該設施且M4字段中的本地清除控 制(LC)比特為0時,術語"已指定CPU"意指配置中所有CPU。
[0242] ?當安裝了本地TLB清除設施且^字段中的LC比特為1時,術語"已指定CPU"僅 意指執(zhí)行IPTE指令的CPU (本地CPU)。配置中所有其它CPU中的TLB可不受到影響。
[0243] 使已指定頁表項無效化,且從配置中已指定CPU中的轉換后備緩沖器(TLB)清除 關聯(lián)項。
[0244] 通用寄存器&的內(nèi)容具有段表項的格式,其中僅使用頁表原點。通用寄存器1?2的 內(nèi)容具有虛擬地址的格式,其中僅使用頁索引。忽略并非頁表原點或者頁索引的部分的字 段的內(nèi)容。
[0245] 當未安裝IPTE范圍設施時,或者當R3字段為0時,使由第一操作元及第二操作元 指定的單一頁表項無效化。
[0246] 當安裝了 IPTE范圍設施且當R3字段為非零時,通用寄存器R3的比特56至63包 含指定將要無效化的額外頁表項的計數(shù)的一個無正負號二進制整數(shù)。因此,將要無效化的 頁表項的數(shù)目為1至256,其對應于寄存器的比特56至63中的值0至255。
[0247] 當未安裝IPTE范圍設施時,R3字段被忽略,但應包含0 ;否則,之后程序可能會不 兼容地操作。
[0248] 將M4字段的比特定義如下:
[0249] ?保留的:保留比特0至2。M4字段的保留比特位置被忽略,但應包含0;否則,之 后程序可能會不兼容地操作。
[0250] ?本地清除控制(LC):當安裝了本地TLB清除設施時,LC比特(M4字段的比特3) 控制是否僅清除本地CPU中的TLB,或者是否清除配置的所有CPU中的TLB。當未安裝本地 TLB清除設施時,保留M 4字段的比特3。
[0251] 頁表原點及頁索引指定頁表項,其遵循針對頁表查找的動態(tài)地址轉換規(guī)則。將頁 表原點視為64比特地址,且使用針對64比特地址運算的規(guī)則執(zhí)行相加,而不管由當前PSW 的比特31及32指定的當前尋址模式如何。不會發(fā)生因頁索引與頁表原點的相加在比特位 置0外的進位。由這兩個分量形成的地址為真實或者絕對地址。將此頁表項的頁無效比特 設置為1。在此操作步驟期間,不針對頁無效比特是否已經(jīng)為1或者針對格式錯誤檢查頁表 項。另外,也不針對尋址異常檢查包含在該項中的頁幀真實地址。
[0252] 當安裝了 IPTE范圍設施且R3字段為非零時,指令為可以中斷的,且處理如下:
[0253] 1.針對頁表中的每一后繼項重復以上所描述的無效化過程,直至通用寄存器馬的 比特56至63中指定的數(shù)目的額外項已無效化或者發(fā)生中斷為止。
[0254] 2.使通用寄存器R2的比特44至51中的頁索引遞增相當已無效化頁表項的數(shù)目; 忽略在通用寄存器R 2的比特位置44外的進位。
[0255] 3.使通用寄存器R3的比特56至63中的額外項計數(shù)遞減相當已無效化頁表項的 數(shù)目。
[0256] 因此,當安裝了 IPTE范圍設施、馬字段為非零且發(fā)生中斷(除了導致終止的中斷 之外)時,通用寄存器馬及R 3已被更新,從而當重新執(zhí)行時指令在中斷點恢復。
[0257] 當未安裝IPTE范圍設施時,或者當R3字段為0時,寄存器R 2及R 3的內(nèi)容保持不 變。
[0258] 對于無效化的每一頁表項,當從其它CPU觀察時,似乎是從存儲器并行地提取整 個頁表項。隨后,存儲包含頁無效比特的字節(jié)。對每一頁表項的提取訪問受到密鑰控制保 護,且存儲訪問受到密鑰控制保護及低地址保護。
[0259] 在操作開始之前執(zhí)行序列化功能,且在操作完成之后再次執(zhí)行。如針對所有序列 化操作的情況,此序列化僅應用于此CPU;其它CPU不必被序列化。
[0260] 如果未識別到異常,則此CPU從其TLB清除選擇的項。接下來,如果未安裝本地 TLB清除設施,或者如果安裝了該設施且仏字段中的LC比特為0,則此CPU向配置中所有 (PU發(fā)送信號以從它們的TLB清除選擇的項。對于無效化的每一頁表項,從每一受影響TLB 至少清除那些已使用所有以下內(nèi)容形成的項:
[0261] ?由通用寄存器札指定的頁表原點
[0262] ?由通用寄存器R2指定的頁索引
[0263] ?包含在已指定頁表項中的頁幀真實地址
[0264] 在發(fā)生以下情形之前,INVALIDATE PAGE TABLE ENTRY的執(zhí)行在執(zhí)行其的CPU上 并未完成:
[0265] 1.已使對應于已指定參數(shù)的所有頁表項無效化。
[0266] 2.已從此CPU的TLB清除對應于已指定參數(shù)的所有項。當安裝了本地TLB清除設 施且^字段中的LC比特為1時,INVALIDATE PAGE TABLE項的執(zhí)行在此時完成,且不執(zhí)行 以下步驟。
[0267] 3.當未安裝本地TLB清除設施時,或者當安裝了該設施且仏字段中的LC比特為 0時,配置中所有其它CPU已使用對應于已指定參數(shù)的TLB項完成了任何存儲訪問,包括改 變比特及參照比特的更新。
[0268] 具體條件
[0269] 當安裝了 IPTE范圍設施、R3字段為非零且通用寄存器1?2中的頁索引加上通用寄 存器R 3中的額外項計數(shù)大于255時,識別為規(guī)格異常。
[0270] 對于所有尋址及保護異常,抑制所述操作。
[0271] 條件碼:該碼保持不變。
[0272] 程序異常:
[0273] ?尋址(頁表項)
[0274] ?特權操作
[0275] ?保護(提取及存儲、頁表項、密鑰控制保護、以及低地址保護)
[0276] ?規(guī)格
[0277] 程序設計注意:
[0278] 1.可以依照模型以不同方式實現(xiàn)項的選擇清除,而且,一般而言,可以清除多于所 需要的最小數(shù)目的項。一些模型可以清除包含從存儲器中的頁表項獲得的頁幀真實地址的 所有項。其它模型可以清除包含已指定頁索引的所有項,且一些實現(xiàn)可以精確地清除所需 要的最小數(shù)目的項。因此,為了使程序在所有模型上操作,程序不應利用通過具體模型上的 較少的選擇清除所獲得的任何特性。
[0279] 2. TLB項的清除可以利用頁表項中的頁幀真實地址。因此,如果頁表項在處于附接 狀態(tài)時一直包含不同于當前值的頁幀真實地址,則包含先前值的項的復本可以保持于TLB 中。
[0280] 3.如果存在另一 CPU或者通道程序也可以正更新主存儲器中的共享位置的可能 性,則INVALIDATE PAGE TABLE ENTRY不能安全地用于更新該位置。
[0281] 4.當安裝了 IPTE范圍設施且R3字段為非零時,以下情形適用:
[0282] a.將要無效化的所有頁表項必須駐留于同一頁表中。如果通用寄存器凡中的頁 索引加上通用寄存器馬中的額外項計數(shù)大于為255的最大頁索引,則識別為規(guī)格異常。
[0283] b.由INVALIDATE PAGE TABLE ENTRY無效化的頁表項的數(shù)目可以隨著執(zhí)行的不同 而不同。
[0284] c.指令不能用于程序必須依賴于指令的未中斷執(zhí)行的情形。相類似,程序通常不 應使用INVALIDATE PAGE TABLE ENTRY使頁表項無效化,頁表項的頁幀真實地址指定包含 指令的4K字節(jié)塊或者執(zhí)行IPTE的執(zhí)行類型指令的4K字節(jié)塊。
[0285] 5.當安裝了本地TLB清除設施時,應將本地清除控制指定為在用于形成正被清除 的TLB項的ASCE已僅附接于在其上執(zhí)行IPTE指令的CPU時的本地清除控制(例如,如果 程序正在單處理器上運行)。否則,可能發(fā)生不可以預測結果,包括延遲訪問異常機器檢查 的呈現(xiàn)。
[0286] 在一些模型上,對于以上所列出的情況,指定僅清除本地TLB的INVALIDATE PAGE TABLE ENTRY的使用,可以導致顯著性能改進。
[0287] 6.將指令的馬及114字段視為可選的,如由包含在匯編程序語法中的括號□內(nèi)的 字段所指示的。當未指定任一字段時,匯編程序將〇放置在指令的對應字段中。當對仏字 段進行編碼,但不需要r3字段時,應編碼0以指定第三操作元的位置。
[0288] 參照圖1描述并入及使用了 一個或多個方面的計算環(huán)境100的一個實施 例。例如,計算環(huán)境100基于由紐約州阿蒙克市的International Business Machines Corporation 提供的 z/Architecture。2010 年 8 月 IBM 出版物第 SA22-7832-08 號的名為 "z/Architecture Principles of Operation,'的IB1VI*出版物中描述了 z/Architecture。 (IBM"為美國紐約州阿蒙克市的 International Business Machines Corporation 的注 冊商標。此處所使用的其它名稱可能為International Business Machines Corporation 或者其它公司的注冊商標、商標或者產(chǎn)品名稱。)在一個實例中,基于z/Architecture的計 算環(huán)境包括由紐約州阿蒙克市的International Business Machines Corporation提供的 eServer zSeries。
[0289] 作為一個實例,計算環(huán)境100包括耦合于控制器120的中央處理器復合體 (CPC) 102。例如,中央處理器復合體102包括一個或多個分割區(qū)104 (例如,邏輯分割區(qū)LP1 至LPn)、一個或多個中央處理器106(例如,CP1至CPm)、以及一個超管理器108(例如,邏 輯分割區(qū)管理器),以下即對它們逐一加以描述。
[0290] 每一邏輯分割區(qū)104能夠充當一個獨立的系統(tǒng)。即,每一邏輯分割區(qū)可以被獨立 地重設、最初載入有操作系統(tǒng)(如果需要的話),且使用不同程序操作。在邏輯分割區(qū)中運 行的操作系統(tǒng)或者應用程序似乎具有對一個完全且完整的系統(tǒng)的訪問權,但實際上,僅該 系統(tǒng)的一部分可用。硬件及已授權內(nèi)部碼(通常被稱為微碼)的組合防止了一個邏輯分割 區(qū)中的程序干擾一個不同邏輯分割區(qū)中的程序。這允許若干不同邏輯分割區(qū)以時間分片方 式在單一個或多個物理處理器上操作。在這一具體實例中,每一個邏輯分割區(qū)具有一個駐 留的操作系統(tǒng)110,對于一個或多個邏輯分割區(qū)操作系統(tǒng)110可以不同。在一個實施例中, 操作系統(tǒng)110為由紐約州阿蒙克市的International Business Machines Corporation提 供的z/OS操作系統(tǒng)。
[0291] 中央處理器106為分配于邏輯分割區(qū)的物理處理器資源。例如,邏輯分割區(qū)104包 括一個或多個邏輯處理器,每一個邏輯處理器表示分配于該分割區(qū)的物理處理器資源106 的全部或者部分。一個具體分割區(qū)104的邏輯處理器可以專用于該分割區(qū),從而可以為該 分割區(qū)而保留底層處理器資源;或者與另一個分割區(qū)共享,以使底層處理器資源潛在地可 用于另一個分割區(qū)。
[0292] 邏輯分割區(qū)104由超管理器108管理,超管理器108由運行在處理器106上的 微碼實現(xiàn)。邏輯分割區(qū)104及超管理器108分別包含駐留于與中央處理器相關聯(lián)的中央 存儲器的各部分中的一個或多個程序。超管理器108的一個實例為由紐約州阿蒙克市的 International Business Machines Corporation 提供的處理器資源 / 系統(tǒng)管理器(PR/ SM)。
[0293] 耦合于中央處理器復合體的控制器120包括負責在發(fā)出請求的不同處理器之間 作出仲裁的集中式邏輯。例如,當控制器120接收到請求時,其確定請求者為針對該請求 的主控處理器且其它處理器為從處理器;該控制器傳播消息;否則處置請求。2000年9月 12 日的Webb等人的名為"System Serialization With Early ReleaseOfIndividual Processor"的美國專利第6, 199, 219號中描述了控制器的一個實例。也參照圖2描述進一 步的細節(jié)。
[0294] 圖2描述了耦合于多個中央處理器(CPU) 201的控制器200的一個實例。在此實例 中,描述了兩個中央處理器。然而,應該意識到,可以將兩個以上處理器耦合于控制器200。
[0295] 控制器200包括各種控制,例如,所述控制包括系統(tǒng)序列化控制202。所述系統(tǒng)序 列化控制用于確保將要序列化的操作(諸如,無效化指令)得以序列化,其中,在計算環(huán)境 中一次僅一個這樣的指令在運行。其也監(jiān)視針對所述操作的事件序列。
[0296] 經(jīng)由各種接口將控制器200耦合于每一中央處理器。例如,通過中央處理器中的 已授權內(nèi)部碼使用接口 204向控制器發(fā)送指定將采取的動作的"控制"命令,且發(fā)送從控制 器返回信息的"感測"命令。另一接口為響應總線206,其用于針對"感測"命令從控制器返 回信息。響應總線也用于針對"控制"命令傳送命令狀態(tài),且可以從控制器內(nèi)的多個源對其 加以設置,所述源包括系統(tǒng)序列化控制。中央處理器可以使用此接口感測控制器200中的 系統(tǒng)序列化控制的狀態(tài)。
[0297] 另一個接口為接口 208,控制器使用其將命令發(fā)送至每一 CPU。也可以從控制器內(nèi) 的多個源控制此接口,其中,所述源包括系統(tǒng)序列化控制202。另一個接口為接口 210,其將 信號提供至中央處理器201的高速緩存控制212。高速緩存控制212響應所述信號處理命 令。在一個實例中,高速緩存控制212處理影響一個或多個緩沖器(諸如,轉換后備緩沖器 (TLB) 213)的命令,如以下進一步詳細描述的。
[0298] 除了高速緩存控制212之外,中央處理器201還包括各種其它控制,例如,包括中 斷控制220以及執(zhí)行控制222。響應具體事件,中斷控制220導致CPU中一個待決的內(nèi)部中 斷,接下來,該內(nèi)部中斷致使執(zhí)行控制222在下一可以中斷點掛起程序指令處理。響應所述 中斷,執(zhí)行控制222調用已授權內(nèi)部碼例程將傳播操作允許鎖存器224設置為能夠使高速 緩存控制212處理掛起的命令。
[0299] 中央處理器201還包括中央處理單元(CPU)休眠鎖存器226,其指示該中央處理器 是否為休眠。本說明書中可以互換地使用術語CPU與處理器。
[0300] 上述計算環(huán)境僅為一個實例。許多變化是可能的。例如,一個或多個分割區(qū)可以 下在不同的體系結構模式下。另外,作為另一個實例,所述環(huán)境無需基于z/Architecture, 取而代之,也可以基于由Intel、Sun Microsystems以及其它公司所提供的其它體系結構。 此外,一個環(huán)境可以包括一個其中模擬特定結構或者其子集的模擬器(例如,軟件或者其 它模擬機制)。在這樣的環(huán)境中,模擬器的一個或多個模擬函式可以實現(xiàn)一個或多個方面, 即使執(zhí)行該模擬器的計算機可以具有不同于正被模擬的能力的體系結構也是如此。作為一 個實例,在模擬模式下,對正被模擬的特定指令或者操作進行解碼,并且建立一個實現(xiàn)各指 令或者操作的適當模擬函式。
[0301] 參照圖3描述模擬環(huán)境的進一步的細節(jié)。作為一個實例,主計算機300能夠模擬 另一個體系結構、計算機與/或另一個計算機的處理能力。例如,主計算機300基于Intel 體系結構、諸如PowerPC的RISC體系結構、由Sun Microsystems提供的SPARC體系結構, 或者另一種體系結構,并且能夠模擬IBM?的z/Architecture或者IBM?的另一種體系結 構或者另一個實體。
[0302] 例如,主計算機300包括存儲指令及數(shù)據(jù)的存儲器302、從存儲器302提取指令且 有選擇地提供針對已提取指令的本地緩沖的指令提取單元304、從指令提取單元304接收 指令且確定已被提取的指令的類型的指令解碼單元306,以及執(zhí)行所述指令的指令執(zhí)行單 元308。執(zhí)行可以包括:將數(shù)據(jù)從存儲器302載入至寄存器;將數(shù)據(jù)從寄存器存儲回存儲器; 或者執(zhí)行某一類型的運算或者邏輯操作,如由解碼單元所確定的。
[0303] 在一個實例中,以軟件實現(xiàn)以上所描述的每一單元。例如,將由所述單元執(zhí)行的操 作實現(xiàn)為模擬器軟件內(nèi)的一個或多個子程序。在另一個實例中,以固件、硬件、軟件或者它 們的某一組合實現(xiàn)一個或多個所述操作。
[0304]另外,盡管根據(jù)模擬描述了圖3,但圖3的環(huán)境無需為模擬環(huán)境。在另一個實例中, 在原環(huán)境中執(zhí)行指令,且以硬件、固件、軟件或者它們的某一組合實現(xiàn)所述操作。
[0305] 計算環(huán)境可以包括虛擬存儲器以及主存儲器。虛擬存儲器可以遠超過可用于配置 中的主存儲器的大小,且通常維持于輔助存儲器中。將虛擬存儲器視由被稱為頁的地址塊 構成。令虛擬存儲器的最近所引用的頁占據(jù)物理主存儲器的塊。當用戶引用未出現(xiàn)于主存 儲器中的虛擬存儲器的頁時,令虛擬頁替換主存儲器中不太可能被使用的頁。可以在用戶 不知曉的情況下由操作系統(tǒng)執(zhí)行存儲器中的頁的交換。
[0306] 將用于指定虛擬存儲器中的位置的地址稱為虛擬地址。例如,將跨度達4k字節(jié)的 連續(xù)的虛擬地址塊稱為一頁。相類似,例如,將跨度達1M字節(jié)的連續(xù)的虛擬頁塊稱為段;以 及,例如,將跨度達2G字節(jié)的連續(xù)的虛擬段塊稱為區(qū)。另外,將與地址空間控制元素(ASCE) 指定的虛擬存儲器相關聯(lián)的虛擬地址序列稱為地址空間。地址空間可用于提供用戶之間的 隔離度。一個地址空間可以包括一個或多個區(qū)、一個或多個段、一個或多個頁、或者它們的 某一組合。
[0307] 與不同類型存儲器單元(例如,區(qū)、段、頁)相關聯(lián)的是與存儲器單元相關聯(lián)的處 理中所使用的數(shù)據(jù)結構。例如,與區(qū)相關聯(lián)的是區(qū)表;與段相關聯(lián)的是段表;以及與頁相關 聯(lián)的是頁表。例如,在虛擬地址至用于訪問主存儲器的真實地址的轉換(例如,動態(tài)地址轉 換)期間使用這些表。此處,將用于轉換的表稱為轉換表,并且由地址空間控制元素(ASCE) 加以指定。將當前未分配于主存儲器的虛擬存儲器單元稱為無效。虛擬存儲器單元的無效 狀態(tài)由與該單元相關聯(lián)的數(shù)據(jù)結構中的無效指示符加以指示。
[0308] 在一個實施例中,這樣地實現(xiàn)動態(tài)地址轉換機制:將通過DAT過程從轉換表(例 如,區(qū)表、段表與/或頁表)導出的信息維持于位于處理器內(nèi)的此處被稱為轉換后備緩沖器 的一個或多個緩沖器中,以增強地址轉換的性能。即,在轉換期間,針對所需的信息檢查緩 沖器,且接下來,如果所述信息未處于緩沖器中,則訪問一個或多個轉換表。
[0309] 在模擬模式下,對正被模擬的具體指令進行解碼,并且建立一個實現(xiàn)所述單指令 的子程序,如在C子程序或者驅動程序中一樣,或者使用某種其它技術提供針對具體硬件 的驅動程序,在理解了實施例的描述之后,本領域技術人員將會意識到這一點。各種軟件及 硬件模擬專利包括但不局限于:Beausoleil等人的名為"Multiprocessor for Hardware Emulation" 的美國專利第 5, 551,013 號;Scalzi 等人的名為 "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor,' 的美國專利第 6, 009, 261 號;Davidian 等人的名為 "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions,'的美 國專利第5, 574,873號;Gorishek等人的名為"SymmetricalMultiprocessingBusand ChipsetUsedforCoprocessorSupportAllowingNon-NativeCodetoRunina System" 的美國專利第6, 308, 255號;Lethin等人的名為"DynamicOptimizingObject CodeTranslatorforArchitectureEmulationandDynamicOptimizingObjectCode TranslationMethod" 的美國專利第6, 463, 582號;以及EricTraut的名為"Methodfor EmulatingGuestInstructionsonaHostComputerThroughDynamicRecompilation ofHostInstructions"的美國專利第5, 790, 825號等,對于本領域技術人員可得的目標機 器以及以上所提及內(nèi)容所使用的商用軟件技術,這些模擬專利說明了多種已知的對針對不 同機器設計的指令格式進行模擬的方式。
[0310] COMPAREANDREPLACEDATTABLEENTRY(CRDTE)
[0311] 所描述的是CPU指令(COMPAREANDREPLACEDATTABLEENTRY),其可用新項替換 有效DAT表項,并且可從TLB去除配置中所有CPU上的(至少)單一項的任何復本。此指 令并不要求掛起任何活躍任務,且可以不去除多于必要項的項。
[0312] 當執(zhí)行CRDTE指令時,可以依據(jù)模型以不同方式實現(xiàn)項的選擇清除,而且,一般而 言,可以清除多于所需要的最小數(shù)目的項。一些模型可以清除包含從存儲器中的頁表項獲 得的頁幀真實地址的所有項。
[0313] 如果控制程序需要替換DAT表中的有效項(即,潛在地由其它CPU使用的表項), 則控制程序可以執(zhí)行以下操作之一:
[0314] ?掛起可以在配置中所有CPU上使用此DAT表項的所有任務的執(zhí)行,使該項在所有 (PU上無效化及去除(例如,使用IPTE),用新項來替換已無效化項,且重新分派已掛起的任 務。
[0315] ?替換DAT表項,且去除配置中所有CPU上的整個TLB(例如,使用CSPG)。
[0316] 第一選項復雜,其復雜之處在于:其要求撤銷分派及重新分派任務。第二選項次 佳,體現(xiàn)于:其要求去除整個TLB,即使正在改變僅一個項也如此。
[0317] 在一實施例中,計算機處理器獲得用于處理的指令。根據(jù)操作碼,所述機器處理比 較及替換DAT表項(CRDTE)指令。CRDTE指令具有以下格式:
[0318] 操作碼R3M4R:R2
[0319] &及1?2字段分別指定通用一個寄存器的一個奇偶對,且必須指定一個偶數(shù)編號寄 存器;否則,識別為規(guī)格異常。通用寄存器&(該對的偶數(shù)寄存器)包含第一操作元。可以 將第一操作元稱為比較值。可以將通用寄存器&+1(該對的奇數(shù)寄存器)稱為替換值。
[0320] 在執(zhí)行指令時,比較第一操作元與第二操作元。第一操作元位于通用寄存器札中。 第二操作元由通用寄存器馬及R2+l指定。馬及R2+l包含尋址信息,例如,已指定的表類型 (DTT)及至表中的定位第二操作元的有效索引。
[0321] 一旦獲得第一操作元及第二操作元,接下來對它們進行比較,且如果它們相等,則 將通用寄存器&+1的內(nèi)容存儲于第二操作元位置處,且從配置中已指定CPU清除(1)通過 使用存儲器中已替換項所形成的已指定類型的所有TLB表項,以及(2)通過使用已清除較 高層TLB表項所形成的所有較低層TLB表項??梢杂羞x擇地將被清除的TLB項限制為其形 成旨在轉換已指定地址空間中的地址的項。將所得條件碼設置為0。
[0322] 如果第一操作元與第二操作元不相等,則將第二操作元載入第一操作元位置處, 且將所得條件碼設置為1。
[0323] M4字段可以確定是清除配置中所有CPU的TLB還是僅清除執(zhí)行指令的CPU中的 TLB。
[0324] 圖4顯不了一個實施例的圖表。
[0325] 在一個實施例中,計算機處理器獲得用于進行處理的CRDTE指令401。根據(jù)操作 碼,機器處理比較及替換DAT表項指令。
[0326]札及1?2字段分別指定通用寄存器405的奇偶對,且必須指定偶數(shù)編號寄存器;否 貝U,識別為規(guī)格異常。通用寄存器& (該對的偶數(shù)寄存器)410在比特位置0至63中包含 第一操作元??梢詫⒌谝徊僮髟Q為比較值??梢詫⑼ㄓ眉拇嫫?amp;+1(該對的奇數(shù)寄存 器)411的比特位置0至63稱為替換值。
[0327] 在執(zhí)行指令時,比較第一操作元與第二操作元。第一操作元位于通用寄存器札410 中。第二操作元為存儲器中由通用寄存器馬420及馬+1421指定的雙字組。通用寄存器R 2 的比特59至61為已指定的表類型(DTT),其指定通用寄存器R2中形成存儲器440中的表 430的原點的比特;DTT也指定通用寄存器R 2+l中用作至表中定位第二操作元435的有效 索引的比特。
[0328] 一旦比較了第一操作元與第二操作元436,如果它們相等,則將通用寄存器&+1的 內(nèi)容存儲于第二操作元位置445處,且如450所示,從配置中已指定CPU清除(1)通過使用 存儲器中已替換項所形成的已指定類型的所有TLB表項,以及(2)通過使用已清除較高層 TLB表項所形成的所有較低層TLB表項??梢杂羞x擇地將被清除的TLB項限制為其形成旨 在轉換已指定地址空間中的地址的項。如455所示,將所得條件碼設置為0。
[0329] 如果第一操作元與第二操作元不相等,則將第二操作元載入第一操作元位置460 處。如465所示,將所得條件碼設置為1。
[0330] 指令401可以利用M4字段402以確定有選擇地清除配置470中的所有CPU的TLB 或者僅清除執(zhí)行指令475的CPU中的TLB。M 4字段包含本地清除(LC)控制。如果M4字段 中的LC控制為0,則配置中所有CPU中的TLB將受到影響。如果^字段中的LC控制字段 為1,則僅與執(zhí)行比較及替換DAT表項指令的CPU相關聯(lián)的TLB可能受到影響。配置中所有 其它CPU中的TLB可不受到影響。
[0331] 注意:術語"已指定CPU"對于受到此指令影響的TLB的范圍具有以下含義 :
[0332] 當仏字段中的本地清除(LC)控制為0時,術語"已指定CPU"意指配置中所有CPU。
[0333] 當%字段中的LC控制為1時,術語"已指定CPU"僅意指執(zhí)行COMPARE AND REPLACE DAT TABLE ENTRY指令的CPU (本地CPU)。配置中所有其它CPU中的TLB可不受到影響。
[0334] ?比較第一操作元與第二操作元。如果它們相等,則將通用寄存器札+1的內(nèi)容存 儲于第二操作元位置處,且從配置中已指定CPU清除(1)通過使用存儲器中已替換項所形 成的已指定類型的所有TLB表項,以及(2)通過使用已清除較高層TLB表項所形成的所有 較低層TLB表項。可以有選擇地將被清除的TLB項限制為其形成旨在轉換已指定地址空間 中的地址的項。
[0335] ?如果第一操作元與第二操作元不相等,則將第二操作元載入第一操作元位置處。 然而,在一些模型上,可以提取第二操作元,且隨后將其不變地存儲回第二操作元位置處。 當從由其它CPU所觀察時,這一更新似乎是塊并行互鎖更新參照,。比較的結果由條件碼加 以指示。
[0336]札及1?2字段分別指定通用寄存器的奇偶對,且必須指定偶數(shù)編號寄存器;否則,識 別為規(guī)格異?!,F(xiàn)在參照圖5,將第一操作元稱為比較值501,且包含在通用寄存器&的比 特位置0至63中。將通用寄存器&+1的比特位置0至63稱為替換值510。
[0337] 第二操作元為存儲器中由通用寄存器馬及R2+1540指定的雙字組。通用寄存器R 2 的比特59至61為已指定的表類型(DTT),其指定通用寄存器R2中形成存儲器中的表的原 點的比特;DTT也指定通用寄存器R 2+1540中用作至表中定位第二操作元的有效索引的比 特,如下:

【權利要求】
1. 一種用于有選擇地清除處理器的本地轉換后備緩沖器(TLB)或者多個處理器的多 個轉換后備緩沖器的計算機程序產(chǎn)品。該計算機程序產(chǎn)品包含: 計算機可讀存儲介質,其具有其中所包含的程序代碼,所述程序代碼可以由計算機處 理器加以讀取,以執(zhí)行一種方法。所述方法包含: 由處理器執(zhí)行指令,所述執(zhí)行包含: 確定所述指令指定的一個或多個轉換表項位置; 根據(jù)為第一值的指令指定的本地清除(LC)控制,有選擇地清除對應所確定的轉換表 項位置的項的配置中多個處理器中的TLB ;以及 根據(jù)為第二值的本地清除(LC),有選擇地僅清除對應所確定的轉換表項位置的項的正 在執(zhí)行所述指令的配置的處理器的TLB。
2. 根據(jù)權利要求1所述的程序產(chǎn)品,還包含: 以下操作的任一:使所確定的一個或多個轉換表項位置的內(nèi)容無效或者替換所確定的 一個或多個轉換表項位置的內(nèi)容。
3. 根據(jù)權利要求2所述的程序產(chǎn)品,還包含: 使一個或多個的轉換表項位置的范圍的內(nèi)容無效。
4. 根據(jù)權利要求2所述的程序產(chǎn)品,還包含: 使用新的內(nèi)容替換一個或多個的轉換表項位置的內(nèi)容。
5. 根據(jù)權利要求1所述的程序產(chǎn)品,其中,有選擇地清除還包含: 清除與相關轉換表項相關聯(lián)的TLB項,其中,相關轉換表項為其配置旨在由一個或多 個的轉換表項位置的動態(tài)地址轉換加以訪問的較低層轉換表中的項。
6. 根據(jù)權利要求1所述的程序產(chǎn)品,其中,根據(jù)為0的LC控制,有選擇地清除對應所確 定的轉換表項的項的配置中所有處理器中的TLB。
7. 根據(jù)權利要求1所述的程序產(chǎn)品,其中,根據(jù)為1的LC控制,有選擇地清除正在執(zhí)行 所述指令的CPU中的TLB。
8. -種用于清除本地轉換后備緩沖器(TLB)的計算機系統(tǒng),所述系統(tǒng)包含: 存儲器;以及 配置為與存儲器通信的處理器,其中,將所述計算機系統(tǒng)配置為能夠執(zhí)行一種方法,所 述方法包含: 由處理器執(zhí)行一條指令。所述執(zhí)行包括:所述執(zhí)行包含: 確定所述指令指定的一個或多個轉換表項位置; 根據(jù)為第一值的指令指定的本地清除(LC)控制,有選擇地清除對應所確定的轉換表 項位置的項的配置中多個處理器中的TLB ;以及 根據(jù)為第二值的本地清除(LC),有選擇地僅清除對應所確定的轉換表項位置的項的正 在執(zhí)行所述指令的配置的處理器的TLB。
9. 根據(jù)權利要求8所述的系統(tǒng),還包含: 以下操作的任一:使所確定的一個或多個轉換表項位置的內(nèi)容無效或者替換所確定的 一個或多個轉換表項位置的內(nèi)容。
10. 根據(jù)權利要求9所述的系統(tǒng),還包含: 使一個或多個的轉換表項位置的范圍的內(nèi)容無效。
11. 根據(jù)權利要求9所述的系統(tǒng),還包含: 使用新的內(nèi)容替換一個或多個的轉換表項位置的內(nèi)容。
12. 根據(jù)權利要求8所述的系統(tǒng),其中,有選擇地清除還包含: 清除與相關轉換表項相關聯(lián)的TLB項,其中,相關轉換表項為其配置旨在由一個或多 個的轉換表項位置的動態(tài)地址轉換加以訪問的較低層轉換表中的項。
13. 根據(jù)權利要求8所述的系統(tǒng),其中,根據(jù)為0的LC控制,有選擇地清除對應所確定 的轉換表項的項的配置中所有處理器中的TLB。
14. 根據(jù)權利要求8所述的系統(tǒng),其中,根據(jù)為1的LC控制,有選擇地清除正在執(zhí)行所 述指令的CPU中的TLB。
15. -種用于用于清除本地轉換后備緩沖器(TLB)的計算機實現(xiàn)的方法,所述方法包 含: 確定所述指令指定的一個或多個轉換表項位置; 根據(jù)為第一值的指令指定的本地清除(LC)控制,有選擇地清除對應所確定的轉換表 項位置的項的配置中多個處理器中的TLB ;以及 根據(jù)為第二值的本地清除(LC),有選擇地僅清除對應所確定的轉換表項位置的項的正 在執(zhí)行所述指令的配置的處理器的TLB。
16. 根據(jù)權利要求15所述的方法,還包含: 以下操作的任一:使所確定的一個或多個轉換表項位置的內(nèi)容無效或者替換所確定的 一個或多個轉換表項位置的內(nèi)容。
17. 根據(jù)權利要求16所述的方法,還包含: 使一個或多個的轉換表項位置的范圍的內(nèi)容無效。
18. 根據(jù)權利要求16所述的方法,還包含: 使用新的內(nèi)容替換一個或多個的轉換表項位置的內(nèi)容。
19. 根據(jù)權利要求15所述的系統(tǒng),其中,有選擇地清除還包含: 清除與相關轉換表項相關聯(lián)的TLB項,其中,相關轉換表項為其配置旨在由一個或多 個的轉換表項位置的動態(tài)地址轉換加以訪問的較低層轉換表中的項。
20. 根據(jù)權利要求15所述的方法,其中,根據(jù)為0的LC控制,有選擇地清除對應所確定 的轉換表項的項的配置中所有處理器中的TLB ;以及根據(jù)為1的LC控制,有選擇地清除正 在執(zhí)行所述指令的CPU中的TLB。
【文檔編號】G06F9/30GK104487940SQ201380028412
【公開日】2015年4月1日 申請日期:2013年5月21日 優(yōu)先權日:2012年6月15日
【發(fā)明者】D.格雷納, G.西特曼 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1