比較及替換動態(tài)地址轉換表項的制作方法
【技術領域】
[0001] 總體上講,本發(fā)明涉及計算環(huán)境中的處理,具體地講,本發(fā)明涉及以下一或者多種 情況:比較及替換地址表中的項;清除緩沖器項以及用于以上操作的指令。
【背景技術】
[0002] 如2003年5月12日申請的申請?zhí)枮?284100的、名為"INVALIDATINGSTORAGE, CLEARINGBUFFERENTRIES,ANDANINSTRUCTIONTHEREFORE"的美國專利中所描述的,使所 選擇的諸如存儲器段或者存儲器區(qū)的存儲器單元無效化。通過位于對應于將要無效化的存 儲器單元的數(shù)據(jù)結構項中的無效化指示符的設置,簡化無效化。另外,還清除與已無效化存 儲器單元或者其它選定存儲器單元相關聯(lián)的緩沖器項。提供一條執(zhí)行無效化與/或清除的 指令。而且,在無任何無效化的情況下清除與特定地址空間相關聯(lián)的緩沖器項。也通過所 述指令執(zhí)行所述清除??梢园窜浖?、硬件、固件或者它們的某一組合實現(xiàn)所述指令,也可以 模擬該指令。
【發(fā)明內容】
[0003] 在一個實施例中,提供了一種用于有選擇地清除一個處理器的本地轉換后備緩沖 器(TranslationLookasideBuffer,TLB)或者多個處理器的多個轉換后備緩沖器的計算 機程序產品。該計算機程序產品包括:計算機可讀存儲介質,其具有其中所包含的程序代 碼,所述程序代碼可以由計算機處理器加以讀取,以執(zhí)行某一方法。所述方法包括:由處理 器根據(jù)一條將要執(zhí)行的機器可執(zhí)行的操作碼判定所述指令為一條比較及替換DA的項的指 令。所述指令包括&字段和R2字段,并且通過處理器執(zhí)行所述指令。所述執(zhí)行包括:從該 指令的R2字段指定的奇偶寄存器對的寄存器指定的存儲器位置獲得原始第二操作元;比較 第一操作元和所獲得的原始第二操作元,第一操作元包含在由所述指令的&字段指定的奇 偶寄存器對的一個偶數(shù)編號(偶&)的寄存器中;根據(jù)第一操作元等于原始第二操作元,所 以將該偶&寄存器的內容作為新第二操作元存儲于第二操作元位置中;并且根據(jù)原始第二 操作元的值指定的一個轉換表原點、使用轉換表項有選擇地清除對應于根據(jù)DAT所形成的 項的所有本地轉換后備緩沖器(TLB)項。
[0004] 在另一個實施例中,提供了一種用于執(zhí)行比較及替換DAT項指令的系統(tǒng)。所述系 統(tǒng)包括:存儲器;以及處理器,將其配置為能夠與存儲器進行通信,其中將所述計算機系統(tǒng) 配置為能夠執(zhí)行某一方法。所述方法包括:由處理器根據(jù)一條將要執(zhí)行的機器可執(zhí)行的操 作碼判定所述指令為一條比較及替換DA的項的指令。所述指令包括&字段和R2字段,并且 由處理器執(zhí)行該指令。所述執(zhí)行包括:從該指令的馬字段指定的奇偶寄存器對的寄存器指 定的存儲器位置獲得原始第二操作元;比較第一操作元和所獲得的原始第二操作元,第一 操作元包含在由所述指令的&字段指定的奇偶寄存器對的偶數(shù)編號(偶RJ的寄存器中; 根據(jù)第一操作元等于原始第二操作元,所以將該偶&寄存器的內容作為新第二操作元存儲 于第二操作元位置中;并且根據(jù)原始第二操作元的值指定的一個轉換表原點、使用轉換表 項有選擇地清除對應于根據(jù)DAT所形成的項的所有本地轉換后備緩沖器(TLB)項。
[0005] 在另一個實施例中,提供一種用于比較第一操作元與第二地址轉換表項的計算機 實現(xiàn)的方法。所述方法包括:由處理器根據(jù)一條將要執(zhí)行的機器可執(zhí)行的操作碼判定所述 指令為一條比較及替換DA的項的指令。所述指令包括&字段和R 2字段,并且通過處理器 執(zhí)行所述指令。所述執(zhí)行包括:從該指令的馬字段指定的奇偶寄存器對的寄存器指定的存 儲器位置獲得原始第二操作元;比較第一操作元和所獲得的原始第二操作元,第一操作元 包含在由所述指令的&字段指定的奇偶寄存器對的偶數(shù)編號(偶RJ的寄存器中;根據(jù)第 一操作元等于原始第二操作元,所以將該偶&寄存器的內容作為新第二操作元存儲于第二 操作元位置中;并且根據(jù)原始第二操作元的值指定的轉換表原點、使用轉換表項有選擇地 清除對應于根據(jù)DAT所形成的項的所有本地轉換后備緩沖器(TLB)項。
[0006] 通過所描述的技術實現(xiàn)更多的特性及優(yōu)點。此處詳細地描述了其它實施例及方 面,并且認為包括所述其它實施例及方面。
【附圖說明】
[0007] 通過以下結合附圖的詳細描述,更多的目的、特性以及優(yōu)點將變得十分明顯,其 中:
[0008] 圖1描述了并入及使用一或多個方面的計算環(huán)境的一個實施例;
[0009] 圖2描述了與圖1的控制器相關聯(lián)的更多細節(jié)的一個實施例;
[0010] 圖3描述了可以模擬另一個計算機的主計算機的一個實施例;
[0011] 圖4描述了 COMPARE AND REPLACE DAT TABLE ENTRY指令的指令圖像及其操作;
[0012] 圖 5 描述了 COMPARE AND REPLACE DAT TABLE ENTRY 指令的寄存器操作元;
[0013] 圖6描述了 M4字段;以及
[0014] 圖7描述了計算機可讀介質。
【具體實施方式】
[0015] 計算環(huán)境可以使用通常維持于輔助存儲器中的虛擬存儲器,以增加可用存儲器的 大小。當引用虛擬存儲器的頁時,通過動態(tài)地址轉換將用于引用頁的虛擬地址轉換為真實 存儲器地址。如果該轉換成功,則虛擬存儲器有效;否則,其無效。頁表項中的無效比特將 虛擬存儲器的頁指示為有效或者無效,如果該頁有效,則所述項包括真實存儲器地址。
[0016] 可以一次一頁地使存儲器的頁無效化。例如,在基于由International Business Machines Corporation所提供的z/Architecture的計算環(huán)境中,使用被稱為無效化頁表 項(Invalidate Page Table Entry, IPTE)指令的指令,無效化虛擬存儲器中的一個或者多 個頁。無效化包括在與虛擬存儲器相關聯(lián)且位于物理主存儲器中的控制結構中設置一個無 效指示符,以指示虛擬存儲器中的位置的虛擬地址不能通過動態(tài)地址轉換轉換為物理主存 儲器地址,所述物理主存儲器地址也被稱為真實地址。另外,還使用所述指令清除與頁相關 聯(lián)的內部機器緩沖器項,可以在動態(tài)地址轉換期間使用所述項,以避免對物理主存儲器中 的控制結構的訪問。例如,在z/Architecture中,存在在虛擬地址至真實地址的動態(tài)地址 轉換期間所使用的轉換后備緩沖器。當使存儲器的頁無效化時,也從對應的緩沖器清除與 所述頁相關聯(lián)的項。
[0017] 也存在能夠去除整個轉換后備緩沖器的指令。例如,在z/Architecture中,一條 被稱為比較與交換及去除(Compare and Swap and Purge, CSP)指令的指令去除配置中所 有CPU中轉換后備緩沖器的所有項;PURGE TLB清除執(zhí)行該指令的CPU上的TLB的所有項。
[0018] 轉換后備緩沖器
[0019] 為了提高性能,通常采用動態(tài)地址轉換機制,以能夠在被稱為轉換后備緩沖器 (TLB)的特殊緩沖器中維持區(qū)表、段表以及頁表中指定的某些的某些信息。僅當對DAT表 項進行初始訪問時,CPU才需引用真實或者絕對存儲器中的該項??梢詫⒋诵畔⒎胖迷赥LB 中,且可以使用TLB中的信息執(zhí)行后繼轉換。為了操作的一致性,也可以使用TLB中的信息 執(zhí)行通過真實空間指定指定的虛擬等于真實轉換(virtual-equals-real translation)。 TLB的存在在如下程度上影響轉換過程:(1)真實或者絕對存儲器中的表項的內容的修改 未必對轉換具有立即功效(如果存在);(2)地址空間控制元素(address-space-control element,ASCE)中的區(qū)第一表原點、區(qū)第二表原點、區(qū)第三表原點、段表原點或者真實空間 標記原點可以選擇由含有相同值的原點的ASCE所形成的TLB項,即使當兩個原點屬于不同 類型時;以及(3)如果使用已指定的表的TLB等效者,則可以省略對地址空間控制元素中的 表長度的比較。在多CPU配置中,每一 CPU具有其自己的TLB。
[0020] TLB內的項不可以由程序顯式尋址。
[0021] 不必在所有準許將信息保持于TLB中的條件下,都將信息保持于TLB中。此外,在 除了那些對于其清除為強制的條件之外的條件下也可以清除TLB中的信息。
[0022] TLB 結構
[0023] 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頁表項被視為其內既含有從真實或者絕對存儲器中的表項所獲得的信息,也含有用 于從存儲器提取所述信息的屬性。TLB真實空間項被視為含有用于形成該項的頁幀真實地 址及真實空間標記原點及區(qū)、段、以及頁索引。
[0024] 可以將任何可使用的TLB區(qū)表項、TLB段表項、以及TLB頁表項合并為一個被稱為 TLB復合表項的單一項。相類似,某一實現(xiàn)可以組合表層的任何連續(xù)子集。當發(fā)生此情形 時,無需緩沖中間表原點、位移、以及長度。
[0025] 可以形成所述體系結構的先前版本中所描述的TLB組合式區(qū)及段表項(CRSTE)的 等效者,該等效者將表原點、區(qū)索引、段索引、以及公共段比特映射于段幀絕對地址或者頁 表原點(以及其它已指定字段)。
[0026] 不能將TLB真實空間項中的標記原點與TLB復合表項、區(qū)表項、或者段表項中的表 原點加以區(qū)分。
[0027] 注意:以下章節(jié)描述了可以將信息放置在TLB中的條件、可以將來自TLB的信息用 于地址轉換的條件,以及對轉換表的改變如何影響轉換過程。
[0028] TLB項的形成
[0029] 來自真實或者絕對存儲器中的表項的TLB區(qū)表項、TLB段表項以及TLB頁表項的 信息和程序對存儲器中的表項內容的任何操控的功效取決于是否將存儲器中的項附接于 具體的CPU,并且取決于所述項是否有效。
[0030] 表項的附接狀態(tài)表明:將該表項附接于其的CPU可以嘗試將該表項以用于隱式地 址轉換,例外的是,可以附接針對主,即本地址空間的表項,即使當CPU不能從這些空間中 任一空間進行提取時??梢詫⒈眄椧淮胃浇佑谝粋€以上的CPU。
[0031] 表項的有效狀態(tài)表明:與該表項相關聯(lián)的區(qū)集合、區(qū)、段、或者頁可用。當該項中的 區(qū)無效、段無效、或者頁無效比特為0時,該項有效。
[0032] 凡當附接了該項且其有效,并且在用于轉換時不導致轉換規(guī)格異常時,可以將區(qū) 表項、段表項、或者頁表項放置在TLB中。
[0033] 將用于轉換虛擬地址的區(qū)表項(如果存在)及段表項(如果存在)稱為 轉換路徑。當轉換路徑中的最高層表項處于附接地址空間控制元素(attaching address-space-control element, ASCE)指定的表內時,附接該最高層表項。"在表內"意 指ASCE中的原點及長度字段所判定。當滿足所有以下條件時,ASCE為附接ASCE:
[0034] 1?當前PSW指定DAT接通。
[0035] 2.當前PSW不包含被識別的導致早期規(guī)格異常的錯誤。
[0036] 3. ASCE滿足以下a、b、c、或者d中的要求。
[0037] a. ASCE為控制寄存器1中的主ASCE。
[0038] b. ASCE為控制寄存器7中的次ASCE,且滿足以下要求中任何之一:
[0039] ? CPU處于次空間模式或者訪問寄存器模式。
[0040] ? CPU處于主空間模式,且次要空間控制(控制寄存器0的比特37)為1。
[0041] ? LOAD PAGE TABLE ENTRY ADDRESS的%操作元顯式允許對次要空間的訪問,或 者顯式允許訪問寄存器轉換。
[0042] ? MOVE WITH OPTIONAL SPECIFICATIONS 的任一操作元的操作元訪問控制(0AC) 顯式允許對次要空間的訪問或者顯式允許訪問寄存器轉換。
[0043] 對于用于以上兩個條目中的術語"顯式允許"的進一步的解釋,參見以下程序設計 注意。
[0044] c. ASCE處于附接且有效的ASN第二表項(ASTE)或者可用ALBASTE中,且滿足以下 要求中任何之一:
[0045] ? CPU處于訪問寄存器模式。
[0046] ? LOAD PAGE TABLE ENTRY ADDRESS的M4字段顯式允許執(zhí)行訪問寄存器轉換。
[0047] ?MOVE WITH OPTIONAL SPECIFICATIONS的任一操作元的0AC顯式允許執(zhí)行訪問 寄存器轉換。
[0048] d. ASCE為控制寄存器13中的本ASCE。
[0049] 不管DAT是接通還是關閉,當當前PSW不含有被識別的導致早期規(guī)格異常錯誤且 滿足以下條件任何之一時,ASCE也為附接ASCE:
[0050] ?當發(fā)生監(jiān)視事件計數(shù)操作時,將本ASCE視為附接ASCE。
[0051] 當轉換路徑中的剩余表項中每一表項處于由在用于轉換時將不導致轉換規(guī)格異 常的下一較高層的附接且有效的項或者由下一較高層的可用TLB項指定的表內時,附接所 述剩余表項中每一表項。"在表內"意指由下一較高層項中的原點、位移、以及長度字段所判 定。在下一章節(jié)中解釋可用TLB項。
[0052]當頁表項處于由在用于轉換時將不導致轉換規(guī)格異常的附接且有效的段表項或 者可用TLB段表項指定的頁表內時,附接該頁表項。
[0053] 如果區(qū)表項或者段表項中的表類型比特(比特60及61)與該項在轉換過程中使 用轉換路徑時將被遇到的層不一致,則該項導致轉換規(guī)格異常。如果私用空間控制比特在 用于選擇其的地址空間控制元素中為1且公共段比特在段表項中為1,則該項也導致轉換 規(guī)格異常。當EDAT-2適用時,如果私用空間控制比特在用于選擇其的地址空間控制元素中 為1且公共區(qū)比特在區(qū)第三表項中為1,則該項也導致轉換規(guī)格異常。如果頁表項中的比 特52為1,則該項導致轉換規(guī)格異常。當EDAT-1不適用時,如果頁表項中的比特55為1, 則該項也導致轉換規(guī)格異常。
[0054] TLB真實空間使用了一個將要識別的早期規(guī)格異常,且滿足以下條件任何之一:
[0055] ?當發(fā)生監(jiān)視事件計數(shù)操作時,將本ASCE視為附接ASCE。
[0056] 當轉換路徑中剩余表項中的每一表項都處于由在用于轉換時將不導致轉換規(guī)格 異常的下一較高層的附接且有效的項或者由下一較高層的可用TLB項指定的表內時,附接 所述剩余表項中的每一表項。"在表內"意指由下一較高層項中的原點、位移、以及長度字段 所判定。在下一章節(jié)中解釋可用TLB項。
[0057]當頁表項處于由在用于轉換時將不導致轉換規(guī)格異常的附接且有效的段表項或 者可用TLB段表項指定的頁表內時,附接該頁表項。
[0058] 如果區(qū)表項或者段表項中的表類型比特(比特60及61)與該項在轉換過程中使 用轉換路徑時將被遇到的層不一致,則該項導致轉換規(guī)格異常。如果私用空間控制比特在 用于選擇該私用空間控制比特的地址空間控制元素中為1且公共段比特在段表項中為1, 則該項也導致轉換規(guī)格異常。當EDAT-2適用時,如果私用空間控制比特在用于選擇該私用 空間控制比特的地址空間控制元素中為1且公共區(qū)比特在區(qū)第三表項中為1,則該項也導 致轉換規(guī)格異常。如果頁表項中的比特52為1,則該項導致轉換規(guī)格異常。當EDAT-1不適 用時,如果頁表項中的比特55為1,則該項也導致轉換規(guī)格異常。
[0059] 服從以上所定義的附接且有效的約束,CPU可以在未來存儲引用的預期中或者作 為指令的推測執(zhí)行的結果形成TLB項。
[0060] 程序設計注意:在針對正附接的ASCE的以上條件列表中,條目3.b和3.C使用了 術語"顯式允許…",如以下所解釋的:
[0061] ?當M4字段為0010二進制時,LPTEA顯式允許對次要空間的訪問。
[0062] ?當M4字段為0001二進制時,LPTEA顯式允許執(zhí)行ART。
[0063] ?當操作元的0AC的比特8至9為10二進制、0AC的比特15為1、且次要空間控 制(控制寄存器〇的比特37)為1時,MVC0S的任一操作元顯式允許對次要空間的訪問。
[0064] ?當操作元的0AC的比特8至9為01二進制、且0AC的比特15為1時,MVC0S的 任一操作元顯式允許執(zhí)行ART。
[0065] TLB項的使用
[0066] TLB項的可用狀態(tài)表明,對于隱式地址轉換,CPU可以嘗試使用TLB項??捎肨LB 項附接下一較低層表(如果存在),且可能可用于隱式地址轉換的具體取例。
[0067] 參照TLB項,術語"當前層"指的是根據(jù)其形成TLB項的轉換表(區(qū)第一