比较及替换动态地址转换表项的制作方法
【技术领域】
[0001] 总体上讲,本发明涉及计算环境中的处理,具体地讲,本发明涉及以下一或者多种 情况:比较及替换地址表中的项;清除缓冲器项以及用于以上操作的指令。
【背景技术】
[0002] 如2003年5月12日申请的申请号为7284100的、名为"INVALIDATINGSTORAGE, CLEARINGBUFFERENTRIES,ANDANINSTRUCTIONTHEREFORE"的美国专利中所描述的,使所 选择的诸如存储器段或者存储器区的存储器单元无效化。通过位于对应于将要无效化的存 储器单元的数据结构项中的无效化指示符的设置,简化无效化。另外,还清除与已无效化存 储器单元或者其它选定存储器单元相关联的缓冲器项。提供一条执行无效化与/或清除的 指令。而且,在无任何无效化的情况下清除与特定地址空间相关联的缓冲器项。也通过所 述指令执行所述清除。可以按软件、硬件、固件或者它们的某一组合实现所述指令,也可以 模拟该指令。
【发明内容】
[0003] 在一个实施例中,提供了一种用于有选择地清除一个处理器的本地转换后备缓冲 器(TranslationLookasideBuffer,TLB)或者多个处理器的多个转换后备缓冲器的计算 机程序产品。该计算机程序产品包括:计算机可读存储介质,其具有其中所包含的程序代 码,所述程序代码可以由计算机处理器加以读取,以执行某一方法。所述方法包括:由处理 器根据一条将要执行的机器可执行的操作码判定所述指令为一条比较及替换DA的项的指 令。所述指令包括&字段和R2字段,并且通过处理器执行所述指令。所述执行包括:从该 指令的R2字段指定的奇偶寄存器对的寄存器指定的存储器位置获得原始第二操作元;比较 第一操作元和所获得的原始第二操作元,第一操作元包含在由所述指令的&字段指定的奇 偶寄存器对的一个偶数编号(偶&)的寄存器中;根据第一操作元等于原始第二操作元,所 以将该偶&寄存器的内容作为新第二操作元存储于第二操作元位置中;并且根据原始第二 操作元的值指定的一个转换表原点、使用转换表项有选择地清除对应于根据DAT所形成的 项的所有本地转换后备缓冲器(TLB)项。
[0004] 在另一个实施例中,提供了一种用于执行比较及替换DAT项指令的系统。所述系 统包括:存储器;以及处理器,将其配置为能够与存储器进行通信,其中将所述计算机系统 配置为能够执行某一方法。所述方法包括:由处理器根据一条将要执行的机器可执行的操 作码判定所述指令为一条比较及替换DA的项的指令。所述指令包括&字段和R2字段,并且 由处理器执行该指令。所述执行包括:从该指令的馬字段指定的奇偶寄存器对的寄存器指 定的存储器位置获得原始第二操作元;比较第一操作元和所获得的原始第二操作元,第一 操作元包含在由所述指令的&字段指定的奇偶寄存器对的偶数编号(偶RJ的寄存器中; 根据第一操作元等于原始第二操作元,所以将该偶&寄存器的内容作为新第二操作元存储 于第二操作元位置中;并且根据原始第二操作元的值指定的一个转换表原点、使用转换表 项有选择地清除对应于根据DAT所形成的项的所有本地转换后备缓冲器(TLB)项。
[0005] 在另一个实施例中,提供一种用于比较第一操作元与第二地址转换表项的计算机 实现的方法。所述方法包括:由处理器根据一条将要执行的机器可执行的操作码判定所述 指令为一条比较及替换DA的项的指令。所述指令包括&字段和R 2字段,并且通过处理器 执行所述指令。所述执行包括:从该指令的馬字段指定的奇偶寄存器对的寄存器指定的存 储器位置获得原始第二操作元;比较第一操作元和所获得的原始第二操作元,第一操作元 包含在由所述指令的&字段指定的奇偶寄存器对的偶数编号(偶RJ的寄存器中;根据第 一操作元等于原始第二操作元,所以将该偶&寄存器的内容作为新第二操作元存储于第二 操作元位置中;并且根据原始第二操作元的值指定的转换表原点、使用转换表项有选择地 清除对应于根据DAT所形成的项的所有本地转换后备缓冲器(TLB)项。
[0006] 通过所描述的技术实现更多的特性及优点。此处详细地描述了其它实施例及方 面,并且认为包括所述其它实施例及方面。
【附图说明】
[0007] 通过以下结合附图的详细描述,更多的目的、特性以及优点将变得十分明显,其 中:
[0008] 图1描述了并入及使用一或多个方面的计算环境的一个实施例;
[0009] 图2描述了与图1的控制器相关联的更多细节的一个实施例;
[0010] 图3描述了可以模拟另一个计算机的主计算机的一个实施例;
[0011] 图4描述了 COMPARE AND REPLACE DAT TABLE ENTRY指令的指令图像及其操作;
[0012] 图 5 描述了 COMPARE AND REPLACE DAT TABLE ENTRY 指令的寄存器操作元;
[0013] 图6描述了 M4字段;以及
[0014] 图7描述了计算机可读介质。
【具体实施方式】
[0015] 计算环境可以使用通常维持于辅助存储器中的虚拟存储器,以增加可用存储器的 大小。当引用虚拟存储器的页时,通过动态地址转换将用于引用页的虚拟地址转换为真实 存储器地址。如果该转换成功,则虚拟存储器有效;否则,其无效。页表项中的无效比特将 虚拟存储器的页指示为有效或者无效,如果该页有效,则所述项包括真实存储器地址。
[0016] 可以一次一页地使存储器的页无效化。例如,在基于由International Business Machines Corporation所提供的z/Architecture的计算环境中,使用被称为无效化页表 项(Invalidate Page Table Entry, IPTE)指令的指令,无效化虚拟存储器中的一个或者多 个页。无效化包括在与虚拟存储器相关联且位于物理主存储器中的控制结构中设置一个无 效指示符,以指示虚拟存储器中的位置的虚拟地址不能通过动态地址转换转换为物理主存 储器地址,所述物理主存储器地址也被称为真实地址。另外,还使用所述指令清除与页相关 联的内部机器缓冲器项,可以在动态地址转换期间使用所述项,以避免对物理主存储器中 的控制结构的访问。例如,在z/Architecture中,存在在虚拟地址至真实地址的动态地址 转换期间所使用的转换后备缓冲器。当使存储器的页无效化时,也从对应的缓冲器清除与 所述页相关联的项。
[0017] 也存在能够去除整个转换后备缓冲器的指令。例如,在z/Architecture中,一条 被称为比较与交换及去除(Compare and Swap and Purge, CSP)指令的指令去除配置中所 有CPU中转换后备缓冲器的所有项;PURGE TLB清除执行该指令的CPU上的TLB的所有项。
[0018] 转换后备缓冲器
[0019] 为了提高性能,通常采用动态地址转换机制,以能够在被称为转换后备缓冲器 (TLB)的特殊缓冲器中维持区表、段表以及页表中指定的某些的某些信息。仅当对DAT表 项进行初始访问时,CPU才需引用真实或者绝对存储器中的该项。可以将此信息放置在TLB 中,且可以使用TLB中的信息执行后继转换。为了操作的一致性,也可以使用TLB中的信息 执行通过真实空间指定指定的虚拟等于真实转换(virtual-equals-real translation)。 TLB的存在在如下程度上影响转换过程:(1)真实或者绝对存储器中的表项的内容的修改 未必对转换具有立即功效(如果存在);(2)地址空间控制元素(address-space-control element,ASCE)中的区第一表原点、区第二表原点、区第三表原点、段表原点或者真实空间 标记原点可以选择由含有相同值的原点的ASCE所形成的TLB项,即使当两个原点属于不同 类型时;以及(3)如果使用已指定的表的TLB等效者,则可以省略对地址空间控制元素中的 表长度的比较。在多CPU配置中,每一 CPU具有其自己的TLB。
[0020] TLB内的项不可以由程序显式寻址。
[0021] 不必在所有准许将信息保持于TLB中的条件下,都将信息保持于TLB中。此外,在 除了那些对于其清除为强制的条件之外的条件下也可以清除TLB中的信息。
[0022] TLB 结构
[0023] TLB的逻辑结构的描述涵盖按z/Architecture的定义操作的所有系统的实现。将 TLB项考虑为具有下列六种类型:TLB区第一表项、TLB区第二表项、TLB区第三表项(统称 为TLB区表项)、TLB段表项、TLB页表项,以及TLB真实空间项。TLB区表项、TLB段表项或 者TLB页表项被视为其内既含有从真实或者绝对存储器中的表项所获得的信息,也含有用 于从存储器提取所述信息的属性。TLB真实空间项被视为含有用于形成该项的页帧真实地 址及真实空间标记原点及区、段、以及页索引。
[0024] 可以将任何可使用的TLB区表项、TLB段表项、以及TLB页表项合并为一个被称为 TLB复合表项的单一项。相类似,某一实现可以组合表层的任何连续子集。当发生此情形 时,无需缓冲中间表原点、位移、以及长度。
[0025] 可以形成所述体系结构的先前版本中所描述的TLB组合式区及段表项(CRSTE)的 等效者,该等效者将表原点、区索引、段索引、以及公共段比特映射于段帧绝对地址或者页 表原点(以及其它已指定字段)。
[0026] 不能将TLB真实空间项中的标记原点与TLB复合表项、区表项、或者段表项中的表 原点加以区分。
[0027] 注意:以下章节描述了可以将信息放置在TLB中的条件、可以将来自TLB的信息用 于地址转换的条件,以及对转换表的改变如何影响转换过程。
[0028] TLB项的形成
[0029] 来自真实或者绝对存储器中的表项的TLB区表项、TLB段表项以及TLB页表项的 信息和程序对存储器中的表项内容的任何操控的功效取决于是否将存储器中的项附接于 具体的CPU,并且取决于所述项是否有效。
[0030] 表项的附接状态表明:将该表项附接于其的CPU可以尝试将该表项以用于隐式地 址转换,例外的是,可以附接针对主,即本地址空间的表项,即使当CPU不能从这些空间中 任一空间进行提取时。可以将表项一次附接于一个以上的CPU。
[0031] 表项的有效状态表明:与该表项相关联的区集合、区、段、或者页可用。当该项中的 区无效、段无效、或者页无效比特为0时,该项有效。
[0032] 凡当附接了该项且其有效,并且在用于转换时不导致转换规格异常时,可以将区 表项、段表项、或者页表项放置在TLB中。
[0033] 将用于转换虚拟地址的区表项(如果存在)及段表项(如果存在)称为 转换路径。当转换路径中的最高层表项处于附接地址空间控制元素(attaching address-space-control element, ASCE)指定的表内时,附接该最高层表项。"在表内"意 指ASCE中的原点及长度字段所判定。当满足所有以下条件时,ASCE为附接ASCE:
[0034] 1?当前PSW指定DAT接通。
[0035] 2.当前PSW不包含被识别的导致早期规格异常的错误。
[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字段显式允许执行访问寄存器转换。
[0047] ?MOVE WITH OPTIONAL SPECIFICATIONS的任一操作元的0AC显式允许执行访问 寄存器转换。
[0048] d. ASCE为控制寄存器13中的本ASCE。
[0049] 不管DAT是接通还是关闭,当当前PSW不含有被识别的导致早期规格异常错误且 满足以下条件任何之一时,ASCE也为附接ASCE:
[0050] ?当发生监视事件计数操作时,将本ASCE视为附接ASCE。
[0051] 当转换路径中的剩余表项中每一表项处于由在用于转换时将不导致转换规格异 常的下一较高层的附接且有效的项或者由下一较高层的可用TLB项指定的表内时,附接所 述剩余表项中每一表项。"在表内"意指由下一较高层项中的原点、位移、以及长度字段所判 定。在下一章节中解释可用TLB项。
[0052]当页表项处于由在用于转换时将不导致转换规格异常的附接且有效的段表项或 者可用TLB段表项指定的页表内时,附接该页表项。
[0053] 如果区表项或者段表项中的表类型比特(比特60及61)与该项在转换过程中使 用转换路径时将被遇到的层不一致,则该项导致转换规格异常。如果私用空间控制比特在 用于选择其的地址空间控制元素中为1且公共段比特在段表项中为1,则该项也导致转换 规格异常。当EDAT-2适用时,如果私用空间控制比特在用于选择其的地址空间控制元素中 为1且公共区比特在区第三表项中为1,则该项也导致转换规格异常。如果页表项中的比 特52为1,则该项导致转换规格异常。当EDAT-1不适用时,如果页表项中的比特55为1, 则该项也导致转换规格异常。
[0054] TLB真实空间使用了一个将要识别的早期规格异常,且满足以下条件任何之一:
[0055] ?当发生监视事件计数操作时,将本ASCE视为附接ASCE。
[0056] 当转换路径中剩余表项中的每一表项都处于由在用于转换时将不导致转换规格 异常的下一较高层的附接且有效的项或者由下一较高层的可用TLB项指定的表内时,附接 所述剩余表项中的每一表项。"在表内"意指由下一较高层项中的原点、位移、以及长度字段 所判定。在下一章节中解释可用TLB项。
[0057]当页表项处于由在用于转换时将不导致转换规格异常的附接且有效的段表项或 者可用TLB段表项指定的页表内时,附接该页表项。
[0058] 如果区表项或者段表项中的表类型比特(比特60及61)与该项在转换过程中使 用转换路径时将被遇到的层不一致,则该项导致转换规格异常。如果私用空间控制比特在 用于选择该私用空间控制比特的地址空间控制元素中为1且公共段比特在段表项中为1, 则该项也导致转换规格异常。当EDAT-2适用时,如果私用空间控制比特在用于选择该私用 空间控制比特的地址空间控制元素中为1且公共区比特在区第三表项中为1,则该项也导 致转换规格异常。如果页表项中的比特52为1,则该项导致转换规格异常。当EDAT-1不适 用时,如果页表项中的比特55为1,则该项也导致转换规格异常。
[0059] 服从以上所定义的附接且有效的约束,CPU可以在未来存储引用的预期中或者作 为指令的推测执行的结果形成TLB项。
[0060] 程序设计注意:在针对正附接的ASCE的以上条件列表中,条目3.b和3.C使用了 术语"显式允许…",如以下所解释的:
[0061] ?当M4字段为0010二进制时,LPTEA显式允许对次要空间的访问。
[0062] ?当M4字段为0001二进制时,LPTEA显式允许执行ART。
[0063] ?当操作元的0AC的比特8至9为10二进制、0AC的比特15为1、且次要空间控 制(控制寄存器〇的比特37)为1时,MVC0S的任一操作元显式允许对次要空间的访问。
[0064] ?当操作元的0AC的比特8至9为01二进制、且0AC的比特15为1时,MVC0S的 任一操作元显式允许执行ART。
[0065] TLB项的使用
[0066] TLB项的可用状态表明,对于隐式地址转换,CPU可以尝试使用TLB项。可用TLB 项附接下一较低层表(如果存在),且可能可用于隐式地址转换的具体取例。
[0067] 参照TLB项,术语"当前层"指的是根据其形成TLB项的转换表(区第一
表、区第 二表、区第三表、段表、或者页表)的层。同样地,"当前层索引"为用作至转换表的当前层中 的索引的虚拟地址的部分。
[0068] 当满足所有以下条件时,TLB区或者段表项处于可用状态:
[0069] 1.当前PSW指定DAT接通。
[0070]2.当前PSW不含有被识别的将导致早期规格异常的错误。
[0071] 3. TLB项满足以下要求中至少之一:
[0072] a.公共区比特在TLB区第三表项中为1。
[0073] b.公共段比特在TLB段表项中为1。
[0074] c. TLB项中的ASCE表原点(ASCET0)字段匹配于附接地址空间控制元素中的表原 点字段或者标记原点字段。
[0075] d.TLB项为TLB区第二表、区第三表、或者段表项,且TLB项中的当前层表原点字段 匹配于以下之一:
[0076] ?直接指定当前表层(如由R及DT比特所指示)的附接ASCE中的表原点字段
[0077] ?下一较高层的附接区表项中的表原点字段
[0078] ?下一较高层的可用TLB区表项中同一层的表原点字段
[0079] 仅当TLB区表项处于可用状态、TLB项中的当前层索引字段匹配于正被转换的虚 拟地址的对应索引字段、且满足以下条件任何之一时,该项才可用于隐式地址转换的具体 取例:
[0080] 1. TLB项中的ASCE表原点(ASCET0)字段匹配于正用于转换的地址空间控制元素 中的表原点字段或者标记原点字段,且在当前层索引左侧的正被转换的虚拟地址的部分匹 配于TLB项中的对应索引字段。
[0081] 2.正用于转换的地址空间控制元素指定当前层的表,且TLB项中的当前层表原点 字段匹配于所述地址空间控制元素中的表原点。
[0082] 3. TLB项中的当前层表原点字段匹配于正用于转换的下一较高层表项或者TLB项 中的同一层的表原点。
[0083] 4.对于TLB区第三表项,公共区比特在TLB项中为1,且TLB项中的区第一索引字 段及区第二索引字段匹配于正被转换的虚拟地址的区第一索引字段及区第二索引字段。
[0084] 然而,当EDAT-2适用时,如果公共区比特在TLB区第三表项中为1,且私用空间控 制比特在正用于转换的地址空间控制元素中为1或者所述地址空间控制元素为真实空间 指定,则不使用该项。在这两种情况下,即使TLB项中的ASCE表原点(ASCET0)字段与地址 空间控制元素中的表原点字段或者标记原点字段匹配,也不使用该项。
[0085] 仅当TLB段表项处于可用状态、TLB项中的段索引字段匹配于正被转换的虚拟地 址的段索引字段、且满足以下条件任何之一时,该项才可用于隐式地址转换的具体取例:
[0086] 1. TLB项中的ASCE表原点(ASCET0)字段匹配于正用于转换的地址空间控制元素 中的表原点字段或者标记原点字段,且TLB项中的区索引字段匹配于正被转换的虚拟地址 的区索引字段。
[0087] 2. TLB项中的段表原点字段匹配于正用于转换的地址空间控制元素中的表原点字 段、且所述地址空间控制元素为段表指定。
[0088] 3. TLB项中的段表原点字段匹配于正用于转换的区第三表项或者TLB区第三表项 中的段表原点字段。
[0089] 4.公共段比特在TLB项中为1,且TLB项中的区索引字段匹配于正被转换的虚拟 地址的区索引字段。
[0090] 然而,如果公共段比特在TLB段表项中为1,且私用空间控制比特在正用于转换的 地址空间控制元素中为1或者所述地址空间控制元素为真实空间指定,则不使用该项。在 这两种情况下,即使TLB项中的ASCE表原点(ASCET0)字段与地址空间控制元素中的表原 点字段或者标记原点字段匹配,也不使用该项。
[0091] 仅当TLB页表项中的页表原点字段匹配于正用于转换的段表项或者TLB段表项中 的页表原点字段,且TLB页表项中的页索引字段匹配于正被转换的虚拟地址的页索引时, 该项才可用于隐式地址转换的具体取例。
[0092] 仅当TLB项中的标记原点字段匹配于正用于转换的地址空间控制元素中的表原 点字段或者标记原点字段,且TLB项中的区索引、段索引、以及页索引字段匹配于正被转换 的虚拟地址的区索引、段索引、以及页索引字段时,TLB真实空间项才可用于隐式地址转换。
[0093]可以使用 TLB 内容转换 LOAD PAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS 及 STORE REAL ADDRESS的操作元地址、以及对增强型监视计数阵列的访问,而无论DAT是接 通还是关闭。然而,对于 LOAD PAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS 及 STORE REAL ADDRESS,TLB项仍仅在DAT接通时才被形成。
[0094] 程序设计注意:
[0095] 1.尽管仅当表项既为附接又为有效时才可以将该表项的内容复制至TLB中,即使 当所述表项自身不再为附接或者有效时复本也可以保持于TLB中。
[0096] 2.除了当因增强型监视计数操作而执行转换时之外,无内容可以在DAT关闭时 被复制至TLB中,因为所述表项此时未得以附接。具体地讲,在DAT关闭的情况下LOAD PAGE-TABLE-ENTRY ADDRESS、L0AD REAL ADDRESS 及 STORE REAL ADDRESS 的操作元地址的 转换不导致将项放置在TLB中。
[0097] 相反,在给出当前转换参数、地址空间控制比特的设置、以及访问寄存器的内容的 情况下,当DAT接通时,可以将信息从可用于地址转换的所有转换表项复制至TLB中。作为 当前指令的执行的一部分,TLB的载入不取决于是否将所述项用于转换,且当CPU处于等待 状态时可以发生这样的载入。
[0098] 3.表项的内容的一个以上的复本可以存在于TLB中。例如,对于有效表项通过其 变为附接的每一地址空间控制元素中的表原点,一些实现可以导致该项的内容的复本被放 置在TLB中。
[0099] 转换表的修改
[0100] 当使附接且无效的表项有效且无可用于关联虚拟地址的转换的项处于TLB中时, 改变不迟于当前操作单元的结束而起作用。相类似,当使未附接且有效的表项附接且无可 用于关联虚拟地址的项处于TLB中时,改变不迟于当前操作单元的结束而起作用。
[0101]当改变有效且附接的表项时,且当在从TLB清除有资格替代该项的项之前尝试使 用需要转换该项的虚拟地址引用存储器时,在以下程度上可能发生不可以预测结果。新值 的使用可以在若干指令的之间或者在一条指令(包括导致改变的指令)的执行期间开始。 此外,在从TLB清除有资格替代该项的项以前,TLB可以既含有旧值也含有新值,且对于具 体的访问,不可以预测是选择旧值还是选择新值。如果较高层表项的旧值及新值均存在于 TLB中,则可以使用一个值提取较低层表项,且将较低层表项放置在与另一值相关联的TLB 中。如果该项的新值为将导致异常的值,则该异常可能导致中断发生也可能不导致中断发 生。如果确实中断发生,则即使异常通常会导致抑制或者取消,也可以改变指令的结果字 段。
[0102] 根据以下规则从TLB中清除项:
[0103] 1.通过TORGE TLB或者SET PREFIX的执行以及CPU重设,从TLB中清除所有项。
[0104] 2.可以依据由指令所使用的一个般寄存器中的比特,通过由配置中的CPU中任何 之一执行COMPARE AND SWAP AND PURGE,从配置中所有TLB清除所有项。
[0105] 3.通过由配置中的CPU中任何之一执行INVALIDATE DAT TABLE ENTRY或者 INVALIDATE PAGE TABLE ENTRY,从配置中所有TLB清除所选择的项。
[0106] 4.可以在不同于由前述规则所要求的时间清除某些或者所有TLB项。
[0107] 程序设计注意:
[0108] 1. TLB中的项可以在已根据其形成它们的表项已变为未附接或者无效之后继续用 于转换。不必移除这些TLB项,除非显式从TLB中清除它们。
[0109] 对附接且有效的项进行的改变或者对致使所述项变为附接且有效的表项进行的 改变反映于针对下一指令或者早于下一指令的转换过程中,除非TLB项有资格替代所述表 项。然而,在从TLB清除有资格替代致使该项变得未附接或者无效的表项之前,对该表项进 行的改变不必反映于转换过程中。
[0110] 2.与动态地址转换相关联的异常可以由作为指令执行的起始的一部分执行的针 对操作元可访问性的预测试加以建立。因此,当表项在执行开始时为无效时可以指示区第 一转换、区第二转换、区第三转换、段转换或者页转换异常,即使在指令已使其所使用的表 项有效化且该表项在该指令被视为一次一个字节地处理操作元时已变得有效的情况下。
[0111] 3.如果附接表项在从TLB清除所述项的内容的所有复本之前用于转换,则对所述 项进行的改变(除了将I比特设置为〇、将段表项或者页表项的C0比特设置为1、或者变更 页表项的最右侧字节之外)可能产生不可以预测结果。新值的使用可以在若干指令之间或 者在一条指令(包括导致改变的指令)的执行期间开始。当诸如MOVE (MVC)的指令对附接 表项进行改变(包括使该项无效的改变)且随后使用该项进行转换时,在不从TLB对该项 进行先前的清除的情况下使用已改变项,且结果值及异常识别的关联的不可预测性适用。
[0112] 附接表项的操控可以导致伪表项值被记录于TLB中。例如,如果逐步进行改变,则 有效附接项的修改可能导致已部分更新的项被记录,或者如果将中间值引入改变的过程, 则臆测无效项可以临时变得有效且可以被记录于TLB中。如果通过重试的I/O操作进行改 变,或者如果在一条单一指令的执行期间引入中间值,则可以引入这样的中间值。
[0113] 作为另一个实例,如果段表项被改变以指定不同页表且在不清除TLB的情况下被 使用,则可以提取新页表项且将其与旧页表原点相关联。在这样的情况下,指定新页表原点 的INVALIDATE PAGE TABLE ENTRY的执行将不必清除从新页表提取的页表项。
[0114] 4.为了简化页表的操控,提供了 INVALIDATE PAGE TABLE ENTRY指令。此指令将页 表项中的I比特设置为1,且清除由这些表项所形成的项的配置中的一或多个TLB,如下:
[0115] a.当未安装本地TLB清除设施时,或者当安装了该设施且指令指定所有TLB的清 除(即,指令中的本地清除控制为〇)时,清除配置中所有TLB。
[0116] b.当安装了本地TLB清除设施且指令指定仅清除本地TLB ( 即,指令中的本地清除 控制为1)时,仅清除执行INVALIDATE PAGE TABLE ENTRY指令的CPU中的TLB。
[0117] 当使用INVALIDATE PAGE TABLE ENTRY时应考虑TLB操作的以下方面。(也参见 针对INVALIDATE PAGE TABLE ENTRY的程序设计注意)。
[0118] a.应该在对页表项进行任何改变(除了改变最右侧字节之外)之前执行 INVALIDATE PAGE TABLE ENTRY;否则,INVALIDATE PAGE TABLE ENTRY 的选择清除部分可 以不清除该项的TLB的复本。
[0119] b.通过INVALIDATE PAGE TABLE ENTRY使页表内的所有页表项无效化不必清除指 定该页表的任何段表项的TLB。当希望使区表项或者段表项的TLB无效化且清除它们时,必 须遵循以下注意5中的规则。
[0120] 相类似,通过INVALIDATE DAT TABLE ENTRY使区表或者段表内的所有较低层表项 无效化不必清除指定较低层表的任何较高层表项的TLB。当希望使较高层表项的TLB无效 化且清除其时,必须遵循以下注意5中的规则。
[0121] c.当将在单一时间使大数目页表项无效化时,对于每一页表项,在使用COMPARE AND SWAP AND PURGE (去除 TLB 的 COMPARE AND SWAP AND PURGE)、INVALIDATE DAT TABLE ENTRY或者PURGE TLB且在遵循以下注意5中的规则时所涉及的开销可以小于在发布 INVALIDATE PAGE TABLE ENTRY 时涉及的开销。
[0122] 5.表项的操控应根据以下规则。如果符合这些规则,则如同总是将来自真实或者 绝对存储器的表项用于转换过程那样执行转换。
[0123] a.在将有效表项附接于任何CPU并且可以由所述CPU用于转换时并非必须对其进 行改变,除非:(1)使用 INVALIDATE PAGE TABLE ENTRY 或者 INVALIDATE DAT TABLE ENTRY 使该项无效化;⑵变更页表项的比特56至63 ; (3)使用去除TLB的COMPARE AND SWAP AND PURGE指令进行改变;或者(4)使用COMPARE AND REPLACE DAT TABLE ENTRY替换一个项。
[0124] b.当对附接且有效或者未附接的表项进行除了对页表项的比特56至63的改变之 外的任何改变时,必须使可以具有由该项形成的TLB项的每一 CPU在所述改变发生之后且 在由所述CPU使用该项以用于隐式转换之前去除其TLB。(应注意,如果使用COMPARE AND REPLACE DAT TABLE ENTRY、INVALIDATE DAT TABLE ENTRY、INVALIDATE PAGE TABLE ENTRY 或者去除TLB的COMPARE AND SWAP AND PURGE指令进行改变,则单独去除是不必要的。) 在表项附接且有效时的情况下,当知晓并非正执行可能要求该项用于转换的程序时,此规 则适用。
[0125] c.当以允许中间有效值出现于无效表项中的方式对该项进行任何改变时,必须使 将该项附接于其的每一 CPU在改变发生之后且在由所述CPU将该项用于隐式地址转换之前 去除其TLB。
[0126] d.当对针对表而指定的位移或者长度进行任何改变时,必须使可以具有由不再位 于其表内的表项形成的TLB项的每一 CPU在改变发生之后且在由所述CPU将该表用于隐式 转换之前去除其TLB。
[0127] 应注意,当在不引入中间有效值的情况下使无效页表项有效时,在不具有由该项 形成的任何TLB项的CPU中无需清除TLB。相类似,当在不引入中间有效值的情况下使无效 区表项或者段表项有效时,在不具有由该有效化项形成的任何TLB项且不具有由通过该有 效化项附接的页表中的项形成的任何TLB项的CPU中无需清除TLB。
[0128] PURGE TLB、C0MPARE AND SWAP AND PURGE、或者 SET PREFIX 的执行可能对一些模 型的性能具有不利功效。因此,应依照以上规则最小化这些指令的使用。
[0129] 6.当EDAT-1适用时,应做以下考虑:
[0130] a.当STE格式及ACCF有效性控制均为1时,对于任何给定密钥控制保护检查,是 否CPU检测段表项中或者对应4K字节块的存储器密钥中的访问控制比特及提取保护比特, 是不可以预测的。因此,在将STE中的无效比特设置为0之前,对于段的构成4K字节块的 所有256个存储器密钥中的相应字段,程序应确保段表项中的访问控制比特及提取保护比 特一致。
[0131] 在改变段表项中的ACCF有效性控制、访问控制比特或者提取保护比特之前,且在 改变段的256个存储器密钥中任何之一中的访问控制比特或者提取保护比特之前,程序应 首先在段表项中将无效比特设置为1,并清除配置中所有TLB中的所有项,如此章节中先前 所描述的。
[0132] b.在段表项中将改变记录复写设置为0之前,程序应在段表项中将无效比特设置 为1,且清除配置中所有TLB中的所有项(例如,使用INVALIDATE DAT TABLE ENTRY)。如 果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND TORGE的形式进行改变,则不要求使表项无效化。
[0133] c.在页表项中,在将改变记录复写设置为0之前,程序应在页表项中将无效比特 设置为1,且清除配置中所有TLB中的所有项(例如,使用INVALIDATE PAGE TABLE ENTRY)。 如果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND TORGE的形式进行改变,则不要求使表项无效化。
[0134] 当EDAT-2适用时,还应进行以下更多考虑:
[0135
] a.当RTTE格式控制及ACCF有效性控制均为1时,对于任何给定密钥控制保护检 查,CPU是否检测区第三表项中或者对应4K字节块的存储器密钥中的访问控制比特及提取 保护比特,是不可以预测的。因此,在将RTTE中的无效比特设置为0之前,对于区的构成4K 字节块的所有524, 288个存储器密钥中的相应字段,程序应确保区第三表项中的访问控制 比特及提取保护比特一致。
[0136] 在改变区第三表项中的ACCF有效性控制、访问控制比特或者提取保护比特之前, 且在改变区的524, 288个存储器密钥中任何之一中的访问控制比特或者提取保护比特之 前,程序应首先将区第三表项中的无效比特设置为1,且清除配置中所有TLB中的所有项, 如此章节中先前所描述的。
[0137] b.在区第三表项中,在将改变记录复写设置为0之前,程序应在区第三表项中将 无效比特设置为1,且清除配置中所有TLB中的所有项(例如,使用INVALIDATE DAT TABLE ENTRY)。如果使用 COMPARE AND REPLACE DAT TABLE ENTRY 或者清除 TLB 的 COMPARE AND SWAP AND PURGE的形式进行改变,则不要求使表项无效化。
[0138] 遵守这些操作步骤的失败可能导致不可以预测结果,可能包括延迟访问异常机器 检查,或者记录一个改变的失败。
[0139] 增强型DAT设施1
[0140] 增强型DAT设施1可用于实现z/Architecture的模型上。当安装及启用该设 施时,DAT转换可以产生由段表项中的STE格式控制判定的页帧真实地址或者段帧绝对地 址。当将所述设施安装于配置中时,控制寄存器0中的一个新比特启用该设施。注意:术语 EDAT-1适用在此文档中普遍用于描述当将增强型DAT设施1安装于配置中且由控制寄存器 〇启用时的条件。
[0141] 当EDAT-1适用时,以下额外功能可用于DAT过程:
[0142] ?将DAT保护比特添加于区表项,从而在段表项及页表项中提供了类似于DAT保护 比特的功能。
[0143] ?将STE格式控制添加于段表项。当STE格式控制为0时,除了页表项中的改变记 录复写指示改变比特的设置对于页是否可以被旁路之外,DAT按当前定义继续。
[0144] ?当STE格式控制为1时,段表项也包含以下内容:
[0145] 一指定1M字节块的绝对存储器位置的段帧绝对地址(而非页表原点)。
[0146] 一可以替换段的各存储器密钥中对应的比特,有选择地使用的访问控制比特及提 取保护比特。
[0147] 一一个判定段表项中访问控制比特及提取保护比特的有效性的比特。
[0148] 一一个指示改变比特的设置在段的各存储器密钥中是否可以被旁路的改变记录 复写。所述设施添加了PERFORM FRAME MANAGEMENT FUNCTION控制指令。该设施包括对以下 控制指令的增强或者改变:?LOAD PAGE-TABLE-ENTRY ADDRESS .MOVE PAGE,SET STORAGE KEY EXTENDED ? TEST PROTECTION
[0149] 增强型DAT设施2
[0150] 增强型DAT设施2可用于实现z/Architecture的模型上。当安装及启用该设施 时,DAT转换可以产生由区第三表项(如果存在)及段表项(如果存在)中格式控制判定 的页帧真实地址、段帧绝对地址或者区帧绝对地址。
[0151] 注意:术语EDAT-2适用在此文档中普遍用于描述当将增强型DAT设施2安装于配 置中且由控制寄存器0启用时的条件。
[0152] 当EDAT-2适用时,以下额外功能可用于DAT过程中:
[0153] .EDAT-1适用。
[0154] ?将格式控制添加于区第三表项(RTTE)。当RTTE格式控制为0时,DAT按与EDAT-1 适用时的情况一样的方式继续。
[0155] ?当RTTE格式控制为1时,区第三表项也含有以下内容:
[0156] -指定2G字节块的绝对存储器位置的区帧绝对地址(而非段表原点)。
[0157] 一可以替换段区的各存储器密钥中对应的比特,有选择地使用的访问控制比特及 提取保护比特。
[0158] 一一个判定区第三表项中访问控制比特及提取保护比特的有效性的比特。
[0159] 一一个指示改变比特的设置在区的各存储器密钥中是否可以被旁路的改变记录 复写。增强型DAT设施2添加了COMPARE AND REPLACE DATTABLE项指令,从而提供了有 效附接DAT表项的动态替换以及从已替换的项中对所创建的任何TLB项的有选择的清 除。增强型DAT设施2也包括对以下控制指令的增强或者改变:?INVALIDATE DAT TABLE ENTRY ? LOAD PAGE-TABLE-ENTRY ADDRESS ? MOVE PAGE ? PERFORM FRAME MANAGEMENT FUNCTION?TEST PROTECTION当安装增强型DAT设施2时,也安装增强型DAT设施1。
[0160] 当使段表项无效化时,INVALIDATE DAT TABLE ENTRY(IDTE)通过有选择地清除 TLB组合式区及段表项执行无效化及清除操作。IDTE也执行通过ASCE的清除操作。
[0161] 在IDTE指令的执行期间,使存储器(例如,虚拟存储器)的已指定部分无效化。 例如,将包括多个存储器页的存储器段或者包括多个存储器段的存储器区选择为无效化。 通过位于对应于将要无效化的存储器单元的数据结构项中的无效化指示符的设置有助于 无效化。在另一个方面中,清除与正被无效化的存储器或者其它存储器相关联的缓冲器项 (例如,转换后备缓冲器项)。另外,在另一方面中,在不影响未选择的地址空间的缓冲器 项且不执行无效化的情况下从缓冲器清除与选择的地址空间相关联的缓冲器项。在一个 实例中,将来自IBM K z/Architecture的、在此处被称为无效化动态地址转换(DAT)表项 (IDTE)指令的指令用于执行一或多个以上操作。
[0162] 无效化DAT表项
[0163] IDTE R1; R3, R2 [, MJ
[0164] 注意:术语"已指定CPU"对于受到这一指令影响的TLB的范围具有以下含义:
[0165] ?当未安装本地TLB清除设施时,或者当未安装该设施且M4字段中的本地清除控 制(LC)比特为0时,术语"已指定CPU"意指配置中所有CPU。
[0166] ?当安装了本地TLB清除设施且^字段中的LC比特为1时,术语"已指定CPU"仅 意指执行IDTE指令的CPU (本地CPU)。配置中所有其它CPU中的TLB可不受到影响。
[0167] 当通过ASCE的清除比特(通用寄存器R2的比特52)为0时,执行被称为无效化及 清除操作的操作,如下。使存储器中已指定区表项或者段表项或者从已指定项开始的项的 范围无效化,且从配置中已指定CPU中的转换后备缓冲器(TLB)清除(1)通过使用存储器 中已无效化项形成的已指定类型的所有TLB表项,以及(2)通过使用已清除较高层TLB表 项形成的所有较低层TLB表项。可以将被清除的TLB项限制为其形成旨在转换已指定地址 空间中的地址的项。
[0168] 当通过ASCE的清除选项比特为1时,执行被称为通过ASCE的清除操作的操作,如 下。该操作并不执行存储器中的DAT表项的任何无效化,而是从配置中所有CPU中的TLB清 除其形成旨在转换已指定地址空间中的地址的所有区第一表项、区第二表项、区第三表项、 段表项以及页表项。
[0169]厘4字段的比特被定义如下:
[0170] ?保留的:忽略^字段的比特0至1,但应包含0;否则,之后程序可能会不兼容地 操作。
[0171]?格式控制摘要(FS):当EDAT-2适用时,M4字段的比特2为针对无效化及清除操 作的格式控制摘要(FS)。对于通过ASCE的清除操作且当EDAT-2不适用时,忽略M 4字段的 比特2。
[0172] 当指定类型(DT)(通用寄存器札的比特60至61)为00或者01二进制时,格式 控制摘要适用;当通用寄存器&中的DT为10或者11二进制时,忽略格式控制摘要。
[0173] ?本地清除控制(LC):当安装了本地TLB清除设施时,LC比特(M4字段的比特3) 控制是否仅清除本地CPU中的TLB,或者是否清除配置的所有CPU中的TLB。当未安装本地 TLB清除设施安装时,忽略M 4字段的比特3。
[0174] 无效化及清除操作
[0175] 当通用寄存器R2的比特52 (通过ASCE的清除选项比特)为0时,指定无效化及 清除操作。
[0176] 通用寄存器札的内容具有地址空间控制元素的格式,其中仅使用表原点(比特0 至51)及指定类型控制(DT)(比特60及61)。表原点指定其中一或多个项将被无效化的 DAT表,且DT指定该表的类型。
[0177] 忽略通用寄存器&的比特52至59、62、以及63。
[0178] 通用寄存器R2的比特0至43具有虚拟地址的区索引及段索引的格式。通常将由 DAT用于选择由通用寄存器&指定的表类型中的项的比特0至43的部分称为有效无效化 索引。
[0179] 通用寄存器&的比特60及61指定表类型及有效无效化索引,如下:
[0180] 忽略有效无效化索引右侧的通用寄存器R2的比特0至43的部分。
[0181] 通用寄存器&中的表原点及有效无效化索引指定将要无效化的DAT表项。通用寄 存器R 2的比特53至63为指定将要无效化的额外表项的数目的一个无正负号二进制整数。 因此,将要无效化项的数目为1至2, 048,对应于比特53至63的值。
[0182] 通用寄存器R2的比特44至51必须为0;否则,识别为规格异常。
[0183] 如果R3为非零,则通用寄存器1?3的内容具有地址空间控制元素的格式,其中仅使 用表原点(比特0至51)及指定类型控制(DT)(比特60及61)。这些内容用于选择将要清 除的TLB项。忽略通用寄存器R 3的比特52至59、62及63。如果1?3为0,则忽略通用寄存 器0的整个内容,且清除TLB项而不管用于形成它们的ASCE如何。
[0184] 除了总是忽略来自所得地址的比特位置0的进位且不对照表长度字段检查该索 引之外,通用寄存器&中的表原点及通用寄存器R 2中的有效无效化索引根据2010年8月的 IBM 出版物第 SA22-7832-08 号的"z/Architecture Principles of Operation"中"Lookup in a Table Designated by an Address-Space-Control Element" 中的规则指定表项,特 将该出版物的全部内容并入此处,以作参考。表原点被视为64比特地址,且使用针对64比 特地址运算的规则执行相加,而不管由当前PSW的比特31及32指定的当前寻址模式如何。 由此两个分量形成的地址为真实或者绝对地址。将此区表项或者段表项的无效比特(比特 58)设置为1。在此操作步骤期间,未针对格式错误或者针对项中下一较低层表的原点是否 将导致寻址异常检查该项。忽略项中的表类型字段。如果项为段表项,则忽略该项中的公 共段比特。如果EDAT-2适用且项为区第三表项,则忽略该项中的公共区比特。
[0185] 从存储器并行地提取整个表项。随后,存储包含无效比特的字节。对该项的提取 访问受到密钥控制保护,且存储访问受到密钥控制保护及低地址保护。
[0186] 如果通用寄存器R2的比特53至63并非全为0,则通过将1加至有效无效化索引 的先前使用值重复在区表项或者段表项中将无效比特设置为1,且此重复进行达比特53至 63指定的次数。忽略有效无效化索引的最左侧比特位置外的进位,且在此情况下表中出现 环绕式处理。通用寄存器R 2的内容保持不变。
[0187] 在操作开始之前执行序列化功能,且在操作完成之后再次执行这一功能。如针对 所有序列化操作的情况一样,此序列化仅应用于此CPU ;其它CPU不必被序列化。
[0188] 在此CPU已将无效比特设置为1之后,此CPU从其TLB清除选择的项。接下来,如 果未安装本地TLB清除设施,或者如果安装了该设施且^字段中的LC比特为0,则此CPU 向配置中所有其它CPU发送信号,以从它们的TLB清除选择的项。从每一受影响TLB清除 那些至少满足所有以下条件的项:
[0189] ?通用寄存器R2中的有效无效化索引匹配于由通用寄存器R i的比特60至61中的 DT字段指定的类型的TLB表项中的对应的索引。如果所述模型实现了一个包括由DT字段 指定的索引的复合TLB项,则通用寄存器R 2中的有效索引左侧的比特也匹配于已指定TLB 表项中提供的任何对应的比特。应注意,当多个表项因通用寄存器R 2的比特53至63而无 效化时,则使有效无效化索引递增,丢弃在该索引的最左侧比特位置外的进位,且针对如此 获得的索引的每一个值清除TLB区表项或者段表项。
[0190] *R3字段为0,或者通用寄存器1?3中的表原点及指定类型字段匹配于用于形成TLB 表项的地址空间控制元素(ASCE)中的表原点及指定类型字段。
[0191] ?如果R3字段为0,则此步骤中所描述的条件不适用。
[0192] ?如果存储器中无效化的项指定较低层转换表,则已无效化项中的较低层表原点 匹配于TLB表项中的表原点字段。
[0193] 也从每一受影响TLB清除至少满足所有以下条件的任何较低层TLB表项:
[0194] ?通过使用存储器中无效化的项或者通过使用较高层TLB表项形成较低层TLB表 项,其中,所述较高层TLB表项是通过使用存储器中无效化的项或者在此过程中清除的TLB 项所形成的。
[0195] *R3字段为0,或者通用寄存器1?3中的表原点及指定类型字段匹配于用于形成较低 层TLB表项的地址空间控制元素(ASCE)中的表原点及指定类型字段。此ASCE可以为附接 包含较高层表项的转换路径的ASCE,其中,所述较高层表项附接存储器中根据其形成较低 层TLB表项的较低层表项,或者该ASCE可以为使较高层TLB表项可用的ASCE,其中,所述较 高层TLB表项附接存储器中根据其形成较低层TLB表项的较低层表项。如果R 3字段为0, 则此步骤中所描述的条件不适用。
[0196] ?如果存储器中无效化的项指定较低层转换表,则已无效化项中的较低层表原点 匹配于TLB表项中的表原点字段。
[0197] 程序设计注意:
[0198] 1.将格式控制摘要设置为1可以在某些模型上提供改进的性能。
[0199] 2.当指定类型(DT)(通用寄存器札的比特60至61)为00二进制时,格式控制摘 要应用于正被无效化的段表项。当通用寄存器&中的DT为01二进制时,格式控制摘要应 用于正被无效化的区第三表项。
[0200] 3.如果程序可以确保格式控制(表项的比特53)在正被无效化的所有表项中为 1,则程序应仅将格式控制摘要设置为1。如果将格式控制摘要设置为1,但格式控制并非在 正被无效化的所有表项中为1,则可能发生TLB的不完全去除,从而导致来自DAT的不可以 预测的结果。
[0201] 4.将指令的仏字段视为可选用的,如由包含在汇编程序语法中的括号□内的字 段所指示。当未指定M 4字段时,汇编程序将0放置在指令的该字段中。
[0202] 如果无效比特在区表项或者段表项中已经为1,则可以或者可以不发生在区表项 或者段表项中的存储及TLB项的清除。
[0203] 当使多个项无效化时,可以延迟TLB项的清除,直至已使所有项无效化。
[0204] 通过ASCE的清除操作
[0205] 当通用寄存器R2的比特52 (通过ASCE的清除选项比特)为1时,指定通过ASCE 的清除操作。
[0206] 通用寄存器馬的内容具有地址空间控制元素的格式,其中仅使用表原点(比特0 至51)及指定类型控制(DT)(比特60及61)。这些内容用于选择将要清除的TLB项。忽略 通用寄存器R 3的比特52至59、62及63。R3可以为零或者非零,即,可以指定包括寄存器0 的任何通用寄存器。
[0207] 通用寄存器R2的比特44至51必须为0;否则,识别为规格异常。
[0208] 忽略通用寄存器&的内容以及通用寄存器R2的比特位置0至43及53至63的内 容。
[0209] 在所有层从配置中已指定CPU的TLB至少清除那些对于其通用寄存器R 3中的表 原点字段及指定类型字段匹配于用于形成该项的地址空间控制元素(ASCE)中的表原点字 段及指定类型字段的项。此ASCE为用于在其间形成该项的转换中的ASCE。
[0210]
当通过ASCE的清除选项比特(通用寄存器R2的比特52)为1时,忽略M 4字段。
[0211] 公共操作
[0212] INVALIDATE DAT TABLE ENTRY的执行并未在执行其的CPU上完成,直至发生以下 情形为止:
[0213] 1.已从此CPU的TLB清除了满足以上指定的准则的所有项。当安装了本地TLB清 除设施且^字段中的LC比特为1时,INVALIDATE DAT TABLE ENTRY的执行在此时完成,且 不执行以下步骤。
[0214] 2.当未安装本地TLB清除设施时,或者当安装了该设施且仏字段中的LC比特为 0时,配置中所有其它CPU已使用对应于已指定参数的TLB项完成了任何存储访问,包括改 变比特及参照比特的更新。
[0215] 操作不必对TLB真实空间项具有任何功效。
[0216] 具体条件:
[0217] 通用寄存器R2的比特44至51必须为0;否则,识别为规格异常。
[0218] 对于所有寻址及保护异常这一操作受到抑制(仅无效化及清除操作)。
[0219] 所得条件码:该码为不可以预测的。
[0220] 程序异常:
[0221] ?寻址(已无效化区表项或者段表项,仅无效化及清除操作)。
[0222] ?操作(如果未安装DAT增强设施)
[0223] ?特权操作
[0224] ?保护(提取及存储、区表项或者段表项、密钥控制保护及低地址保护;仅无效化 及清除操作)。
[0225] ?规格
[0226] 程序设计注意:
[0227] 1.可以依据模型,按不同方式实现TLB项的选择清除,而且,一般而言,可以清除 多于所需要的最小数目的项。当执行无效化及清除操作时,一些模型可以在有效无效化索 引并非段索引时清除所有TLB项,或者可以清除一个项而不管该项中的页表原点如何。当 执行该操作或者通过ASCE的清除操作时,一些模型可以清除TLB项而不管通用寄存器馬中 的指定类型字段如何。当执行任一操作时,其它模型可以精确地清除所需要的最小数目的 项。因此,为了使程序在所有模型上操作,程序不应利用由具体模型上的较少选择的清除获 得的任何特性。
[0228] 2.当使用通过ASCE的清除操作清除与公共段相关联的TLB项时,应注意,这些项 可能已通过使用包含许多不同表原点的地址空间控制元素得以形成。
[0229] 当指定无效化及清除操作时,以下注意适用。
[0230] 3. TLB项的清除可以利用段表项中的页表原点。因此,如果段表项在处于附接状态 时一直包含不同于当前值的页表原点,则包含先前值的项的复本可以保持于TLB中。
[0231] 4.如果存在另一个CPU或者通道程序也可以正更新主存储器中的共享位置的可 能性,则INVALIDATE DAT TABLE ENTRY不能安全地用于更新该位置。
[0232] 5.针对INVALIDATE DAT TABLE ENTRY的DAT表项的地址为一个64比特地址,且 遵循用于64比特地址运算的通常规则执行地址运算,其中环绕式处理出现于2 64-1处。另 外,不使用位移及长度字段。将此情形与隐式转换以及针对LOAD REAL ADDRESS及STORE REAL ADDRESS的转换加以对比,它们全都可以在进位发生于比特位置0外时导致环绕式处 理或者导致寻址异常,且它们在已指定项未位于其表内时指示异常条件。因此,DAT表不应 被指定为从最大存储位置至位置〇进行环绕式处理,且第一已指定项及由通用寄存器馬的 比特53至63指定的所有额外项应位于已指定表内。
[0233] 6.当安装了本地TLB清除设施时,应将本地清除控制应指定为在用于形成正被清 除的TLB项的ASCE已仅附接于在其上执行IDTE指令的CPU时的本地清除控制(例如,如 果程序正在单处理器上执行)。否则,可能发生不可以预测结果,包括延迟访问异常机器检 查的呈现。
[0234] 在一些模型上,针对以上所列出的情况使用指定仅清除本地TLB的INVALIDATE DAT TABLE ENTRY可以导致显著性能改进。
[0235] 7.将指令的仏字段视为可选的,如由包含在汇编程序语法中的括号□内的字段 所指示。当未指定M4字段时,汇编程序将0放置在指令的该字段中。
[0236] 无效化页表项
[0237] IPTE
[0238] 注意:术语"已指定CPU"对于受到此指令影响的TLB的范围具有以下含义:
[0239] ?当未安装本地TLB清除设施时,或者当安装了该设施且M4字段中的本地清除控 制(LC)比特为0时,术语"已指定CPU"意指配置中所有CPU。
[0240] ?当安装了本地TLB清除设施且^字段中的LC比特为1时,术语"已指定CPU"仅 意指执行IPTE指令的CPU (本地CPU)。配置中所有其它CPU中的TLB可不受到影响。
[0241] 使已指定页表项无效化,且从配置中已指定CPU中的转换后备缓冲器(TLB)清除 关联项。
[0242] 通用寄存器札的内容具有段表项的格式,其中仅使用页表原点。通用寄存器1?2的 内容具有虚拟地址的格式,其中仅使用页索引。忽略并非页表原点或者页索引的部分的字 段的内容。
[0243] 当未安装IPTE范围设施时,或者当R3字段为0时,使由第一操作元及第二操作元 指定的单一页表项无效化。
[0244] 当安装了 IPTE范围设施且当R3字段为非零时,通用寄存器R3的比特56至63包 含指定将要无效化的额外页表项的计数的一个无正负号二进制整数。因此,将要无效化的 页表项的数目为1至256,其对应于寄存器的比特56至63中的值0至255。
[0245] 当未安装IPTE范围设施时,R3字段被忽略,但应包含0;否则,之后程序可能会不 兼容地操作。
[0246] 将^字段的比特定义如下:
[0247] ?保留的:保留比特0至2。M4字段的保留比特位置被忽略,但应包含0;否则,之 后程序可能会不兼容地操作。
[0248] ?本地清除控制(LC):当安装了本地TLB清除设施时,LC比特(M4字段的比特3) 控制是否仅清除本地CPU中的TLB,或者是否清除配置的所有CPU中的TLB。当未安装本地 TLB清除设施时,保留M 4字段的比特3。
[0249] 页表原点及页索引指定页表项,其遵循针对页表查找的动态地址转换规则。将页 表原点视为64比特地址,且使用针对64比特地址运算的规则执行相加,而不管由当前PSW 的比特31及32指定的当前寻址模式如何。不会发生因页索引与页表原点的相加在比特位 置0外的进位。由这两个分量形成的地址为真实或者绝对地址。将此页表项的页无效比特 设置为1。在此操作步骤期间,不针对页无效比特是否已经为1或者针对格式错误检查页表 项。另外,也不针对寻址异常检查包含在该项中的页帧真实地址。
[0250] 当安装了 IPTE范围设施且R3字段为非零时,指令为可以中断的,且处理如下:
[0251] 1.针对页表中的每一后继项重复以上所描述的无效化过程,直至通用寄存器馬的 比特56至63中指定的数目的额外项已无效化或者发生中断为止。
[0252] 2.使通用寄存器R2的比特44至51中的页索引递增相当已无效化页表项的数目; 忽略在通用寄存器R 2的比特位置44外的进位。
[0253] 3.使通用寄存器R3的比特56至63中的额外项计数递减相当已无效化页表项的 数目。
[0254] 因此,当安装了 IPTE范围设施、馬字段为非零且发生中断(除了导致终止的中断 之外)时,通用寄存器馬及R 3已被更新,从而当重新执行时指令在中断点恢复。
[0255] 当未安装IPTE范围设施时,或者当R3字段为0时,寄存器R 2及R 3的内容保持不 变。
[0256] 对于无效化的每一页表项,当从其它CPU观察时,似乎是从存储器并行地提取整 个页表项。随后,存储包含页无效比特的字节。对每一页表项的提取访问受到密钥控制保 护,且存储访问受到密钥控制保护及低地址保护。
[0257] 在操作开始之前执行序列化功能,且在操作完成之后再次执行。如针对所有序列 化操作的情况,此序列化仅应用于此CPU;其它CPU不必被序列化。
[0258] 如果未识别到异常,则此CPU从其TLB清除选择的项。接下来,如果未安装本地 TLB清除设施,或者如果安装了该设施且仏字段中的LC比特为0,则此CPU向配置中所有 (PU发送信号以从它们的TLB清除选择的项。对于无效化的每一页表项,从每一受影响TLB 至少清除那些已使用所有以下内容形成的项:
[0259] ?由通用寄存器札指定的页表原点
[0260] ?由通用寄存器R2指定的页索引
[0261] ?包含在已指定页表项中的页帧真实地址
[0262] 在发生以下情形之前,INVALIDATE PAGE TABLE ENTRY的执行在执行其的CPU上 并未完成:
[0263] 1.已使对应于已指定参数的所有页表项无效化。
[0264] 2.已从此CPU的TLB清除对应于已指定参数的所有项。当安装了本地TLB清除设 施且^字段中的LC比特为1时,INVALIDATE PAGE TABLE项的执行在此时完成,且不执行 以下步骤。
[0265] 3.当未安装本地TLB清除设施时,或者当安装了该设施且仏字段中的LC比特为 0时,配置中所有其它CPU已使用对应于已指定参数的TLB项完成了任何存储访问,包括改 变比特及参照比特的更新。
[0266] 具体条件
[0267] 当安装了 IPTE范围设施、R3字段为非零且通用寄存器1?2中的页索引加上通用寄 存器R 3中的额外项计数大于255时,识别为规格异常。
[0268] 对于所有寻址及保护异常,抑制所述操作。
[0269] 条件码:该码保持不变。
[0270] 程序异常:
[0271] ?寻址(页表项)
[0272] ?特权操作
[0273] ?保护(提取及存储、页表项、密钥控制保护、以及低地址保护)
[0274] ?规格
[0275] 程序设计注意:
[0276]1.可以依照模型以不同方式实现项的选择清除,而且,一般而言,可以清除多于所 需要的最小数目的项。一些模型可以清除包含从存储器中的页表项获得的页帧真实地址的 所有项。其它模型可以清除包含已指定页索引的所有项,且一些实现可以精确地清除所需 要的最小数目的项。因此,为了使程序在所有模型上操作,程序不应利用通过具体模型上的 较少的选择清除所获得的任何特性。
[0277] 2. TLB项的清除可以利用页表项中的页帧真实地址。因此,如果页表项在处于附接 状态时一直包含不同于当前值的页帧真实地址,则包含先前值的项的复本可以保持于TLB 中。
[0278] 3.如果存在另一 CPU或者通道程序也可以正更新主存储器中的共享位置的可能 性,则INVALIDATE PAGE TABLE ENTRY不能安全地用于更新该位置。
[0279] 4.当安装了 IPTE范围设施且R3字段为非零时,以下情形适用:
[0280] a.将要无效化的所有页表项必须驻留于同一页表中。如果通用寄存器凡中的页 索引加上通用寄存器馬中的额外项计数大于为255的最大页索引,则识别为规格异常。
[0281] b.由INVALIDATE PAGE TABLE ENTRY无效化的页表项的数目可以随着执行的不同 而不同。
[0282] c.指令不能用于程序必须依赖于指令的未中断执行的情形。相类似,程序通常不 应使用INVALIDATE PAGE TABLE ENTRY使页表项无效化,页表项的页帧真实地址指定包含 指令的4K字节块或者执行IPTE的执行类型指令的4K字节块。
[0283] 5.当安装了本地TLB清除设施时,应将本地清除控制指定为在用于形成正被清除 的TLB项的ASCE已仅附接于在其上执行IPTE指令的CPU时的本地清除控制(例如,如果 程序正在单处理器上运行)。否则,可能发生不可以预测结果,包括延迟访问异常机器检查 的呈现。
[0284] 在一些模型上,对于以上所列出的情况,指定仅清除本地TLB的INVALIDATE PAGE TABLE ENTRY的使用,可以导致显著性能改进。
[0285] 6.将指令的馬及M4字段视为可选的,如由包含在汇编程序语法中的括号□内的 字段所指示的。当未指定任一字段时,汇编程序将〇放置在指令的对应字段中。当对仏字 段进行编码,但不需要r3字段时,应编码0以指定第三操作元的位置。
[0286] 参照图1描述并入及使用了一或多个方面的计算环境100的一个实施例。例如,计 算环境100基于由纽约州阿蒙克市的International Business Machines Corporation提 供的 z/Architecture。2010 年 8 月 IBM 出版物第 SA22-7832-08 号的名为"z/Architecture Principles of Operation"的IBM? 出版物中描述了 z/Architecture。(IBM? 为美国纽 约州阿蒙克市的International Business Machines Corporation的注册商标。此处所使 用的其它名称可能为International Business Machines Corporation或者其它公司的注 册商标、商标或者产品名称。)在一个实例中,基于z/Architecture的计算环境包括由纽约 州阿蒙克市的 International Business Machines Corporation提供的 eServer zSeries。
[0287] 作为一个实例,计算环境100包括耦合于控制器120的中央处理器复合体 (CPC) 102。例如,中央处理器复合体102包括一或多个分割区104 (例如,逻辑分割区LP1 至LPn)、一或多个中央处理器106(例如,CP1至CPm)、以及一个超管理器108(例如,逻辑 分割区管理器),以下即对它们逐一加以描述。
[0288] 每一逻辑分割区104能够充当一个独立的系统。即,每一逻辑分割区可以被独立 地重设、最初载入有操作系统(如果需要的话),且使用不同程序操作。在逻辑分割区中运 行的操作系统或者应用程序似乎具有对一个完全且完整的系统的访问权,但实际上,仅该 系统的一部分可用。硬件及已授权内部码(通常被称为微码)的组合防止了一个逻辑分割 区中的程序干扰一个不同逻辑分割区中的程序。这允许若干不同逻辑分割区以时间分片方 式在单一或多个物理处理器上操作。在这一具体实例中,每一个逻辑分割区具有一个驻留 的操作系统110,对于一或多个逻辑分割区操作系统110可以不同。在一个实施例中,操作 系统110为由纽约州阿蒙克市的International Business Machines Corporation提供的 z/OS操作系统。
[0289] 中央处理器106为分配于逻辑分割区的物理处理器资源。例如,逻辑分割区104包 括一或多个逻辑处理器,每一个逻辑处理器表示分配于该分割区的物理处理器资源106的 全部或者部分。一个具体分割区104的逻辑处理器可以专用于该分割区,从而可以为该分 割区而保留底层处理器资源;或者与另一个分割区共享,以使底层处理器资源潜在地可用 于另一个分割区。
[0290] 逻辑分割区104由超管理器108管理,超管理器108由运行在处理器106上的 微码实现。逻辑分割区104及超管理器108分别包含驻留于与中央处理器相关联的中央 存储器的各部分中的一或多个程序。超管理器108的一个实例为由纽约州阿蒙克市的 International Business Machines Corporation 提供的处理器资源 / 系统管理器(PR/ SM) 〇
[0291] 耦合于中央处理器复合体的控制器120包括负责在发出请求的不同处理器之间 作出仲裁的集中式逻辑。例如,当控制器120接收到请求时,其判定请求者为针对该请求 的主控处理器且其它处理器为从处理器;该控制器传播消息;否则处置请求。2000年9月 12 日的 Webb 等人的名为 "System Serialization With Early Release Of Individual Processor"的美国专利第6, 199, 219号中描述了控制器的一个实例。也参照图2描述进一 步的细节。
[0292] 图2描述了耦合于多个中央处理器(CPU) 201的控制器200的一个实例。在此实例 中,描述了两个中央处理器。然而,应该意识到,可以将两个以上处理器耦合于控制器200。
[0293] 控制器200包括各种控制,例如,所述控制包括系统序列化控制202。所述系统序 列化控制用于确保将要序
列化的操作(诸如,无效化指令)得以序列化,其中,在计算环境 中一次仅一个这样的指令在运行。其也监视针对所述操作的事件序列。
[0294] 经由各种接口将控制器200耦合于每一中央处理器。例如,通过中央处理器中的 已授权内部码使用接口 204向控制器发送指定将采取的动作的"控制"命令,且发送从控制 器返回信息的"感测"命令。另一接口为响应总线206,其用于针对"感测"命令从控制器返 回信息。响应总线也用于针对"控制"命令传送命令状态,且可以从控制器内的多个源对其 加以设置,所述源包括系统序列化控制。中央处理器可以使用此接口感测控制器200中的 系统序列化控制的状态。
[0295] 另一个接口为接口 208,控制器使用其将命令发送至每一 CPU。也可以从控制器内 的多个源控制此接口,其中,所述源包括系统序列化控制202。另一个接口为接口 210,其将 信号提供至中央处理器201的高速缓存控制212。高速缓存控制212响应所述信号处理命 令。在一个实例中,高速缓存控制212处理影响一或多个缓冲器(诸如,转换后备缓冲器 (TLB) 213)的命令,如以下进一步详细描述的。
[0296] 除了高速缓存控制212之外,中央处理器201还包括各种其它控制,例如,包括中 断控制220以及执行控制222。响应具体事件,中断控制220导致CPU中一个待决的内部中 断,接下来,该内部中断致使执行控制222在下一可以中断点挂起程序指令处理。响应所述 中断,执行控制222调用已授权内部码例程将传播操作允许锁存器224设置为能够使高速 缓存控制212处理挂起的命令。
[0297] 中央处理器201还包括中央处理单元(CPU)休眠锁存器226,其指示该中央处理器 是否为休眠。本说明书中可以互换地使用术语CPU与处理器。
[0298] 上述计算环境仅为一个实例。许多变化是可能的。例如,一或多个分割区可以下 在不同的体系结构模式下。另外,作为另一个实例,所述环境无需基于z/Architecture,取 而代之,也可以基于由Intel、Sun Microsystems以及其它公司所提供的其它体系结构。此 外,一个环境可以包括一个其中模拟特定结构或者其子集的模拟器(例如,软件或者其它 模拟机制)。在这样的环境中,模拟器的一或多个模拟函式可以实现一或多个方面,即使执 行该模拟器的计算机可以具有不同于正被模拟的能力的体系结构也是如此。作为一个实 例,在模拟模式下,对正被模拟的特定指令或者操作进行解码,并且建立一个实现各指令或 者操作的适当模拟函式。
[0299] 参照图3描述模拟环境的进一步的细节。作为一个实例,主计算机300能夠模拟 另一个体系结构、计算机与/或另一个计算机的处理能力。例如,主计算机300基于Intel 体系结构、诸如PowerPC的RISC体系结构、由Sun Microsystems提供的SPARC体系结构, 或者另一种体系结构,并且能夠模拟IBM?柏Z/Architecture或者IBM?彻另一种体系 结构或者另一个实体。
[0300] 例如,主计算机300包括存储指令及数据的存储器302、从存储器302提取指令且 有选择地提供针对已提取指令的本地缓冲的指令提取单元304、从指令提取单元304接收 指令且判定已被提取的指令的类型的指令解码单元306,以及执行所述指令的指令执行单 元308。执行可以包括:将数据从存储器302载入至寄存器;将数据从寄存器存储回存储器; 或者执行某一类型的运算或者逻辑操作,如由解码单元所判定的。
[0301] 在一个实例中,以软件实现以上所描述的每一单元。例如,将由所述单元执行的操 作实现为模拟器软件内的一或多个子程序。在另一个实例中,以固件、硬件、软件或者它们 的某一组合实现一个或多个所述操作。
[0302]另外,尽管根据模拟描述了图3,但图3的环境无需为模拟环境。在另一个实例中, 在原环境中执行指令,且以硬件、固件、软件或者它们的某一组合实现所述操作。
[0303] 计算环境可以包括虚拟存储器以及主存储器。虚拟存储器可以远超过可用于配置 中的主存储器的大小,且通常维持于辅助存储器中。将虚拟存储器视由被称为页的地址块 构成。令虚拟存储器的最近所引用的页占据物理主存储器的块。当用户引用未出现于主存 储器中的虚拟存储器的页时,令虚拟页替换主存储器中不太可能被使用的页。可以在用户 不知晓的情况下由操作系统执行存储器中的页的交换。
[0304] 将用于指定虚拟存储器中的位置的地址称为虚拟地址。例如,将跨度达4k字节的 连续的虚拟地址块称为一页。相类似,例如,将跨度达1M字节的连续的虚拟页块称为段;以 及,例如,将跨度达2G字节的连续的虚拟段块称为区。另外,将与地址空间控制元素(ASCE) 指定的虚拟存储器相关联的虚拟地址序列称为地址空间。地址空间可用于提供用户之间的 隔离度。一个地址空间可以包括一或多个区、一或多个段、一或多个页、或者它们的某一组 合。
[0305] 与不同类型存储器单元(例如,区、段、页)相关联的是与存储器单元相关联的处 理中所使用的数据结构。例如,与区相关联的是区表;与段相关联的是段表;以及与页相关 联的是页表。例如,在虚拟地址至用于访问主存储器的真实地址的转换(例如,动态地址转 换)期间使用这些表。此处,将用于转换的表称为转换表,并且由地址空间控制元素(ASCE) 加以指定。将当前未分配于主存储器的虚拟存储器单元称为无效。虚拟存储器单元的无效 状态由与该单元相关联的数据结构中的无效指示符加以指示。
[0306] 在一个实施例中,这样地实现动态地址转换机制:将通过DAT过程从转换表(例 如,区表、段表与/或页表)导出的信息维持于位于处理器内的此处被称为转换后备缓冲器 的一或多个缓冲器中,以增强地址转换的性能。即,在转换期间,针对所需的信息检查缓冲 器,且接下来,如果所述信息未处于缓冲器中,则访问一或多个转换表。
[0307] 在模拟模式下,对正被模拟的具体指令进行解码,并且建立一个实现所述单指令 的子程序,如在C子程序或者驱动程序中一样,或者使用某种其它技术提供针对具体硬件 的驱动程序,在理解了实施例的描述之后,本领域技术人员将会意识到这一点。各种软件及 硬件模拟专利包括但不局限于:Beausoleil等人的名为"Multiprocessor for Hardware Emulation" 的美国专利第5, 551,013号;Scalzi等人的名为"PreprocessingofStored TargetRoutinesforEmulatingIncompatibleInstructionsonaTargetProcessor" 的美国专利第6, 009, 261号;Davidian等人的名为"DecodingGuestInstructionto DirectlyAccessEmulationRoutinesthatEmulatetheGuestInstructions" 的美 国专利第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号等,对于本领域技术人员可得的目标机 器以及以上所提及内容所使用的商用软件技术,这些模拟专利说明了多种已知的对针对不 同机器设计的指令格式进行模拟的方式。
[0308] COMPAREANDREPLACEDATTABLEENTRY(CRDTE)
[0309] 所描述的是CPU指令(COMPAREANDREPLACEDATTABLEENTRY),其可用新项替换 有效DAT表项,并且可从TLB去除配置中所有CPU上的(至少)单一项的任何复本。此指 令并不要求挂起任何活跃任务,且可以不去除多于必要项的项。
[0310] 当执行CRDTE指令时,可以依据模型以不同方式实现项的选择清除,而且,一般而 言,可以清除多于所需要的最小数目的项。一些模型可以清除包含从存储器中的页表项获 得的页帧真实地址的所有项。
[0311] 如果控制程序需要替换DAT表中的有效项(SP,潜在地由其它CPU使用的表项), 则控制程序可以执行以下操作之一:
[0312] ?挂起可以在配置中所有CPU上使用此DAT表项的所有任务的执行,使该项在所有 (PU上无效化及去除(例如,使用IPTE),用新项来替换已无效化项,且重新分派已挂起的任 务。
[0313] ?替换DAT表项,且去除配置中所有CPU上的整个TLB(例如,使用CSPG)。
[0314] 第一选项复杂,其复杂之处在于:其要求撤销分派及重新分派任务。第二选项次 佳,体现于:其要求去除整个TLB,即使正在改变仅一个项也如此。
[0315] 在一实施例中,计算机处理器获得用于处理的指令。根据操作码,所述机器处理比 较及替换DAT表项(CRDTE)指令。CRDTE指令具有以下格式:
[0316] 操作码R3M4札R2
[0317] &及1?2字段分别指定通用一个寄存器的一个奇偶对,且必须指定一个偶数编号寄 存器;否则,识别为规格异常。通用寄存器& (该对的偶数寄存器)包含第一操作元。可以 将第一操作元称为比较值。可以将通用寄存器&+1(该对的奇数寄存器)称为替换值。
[0318] 在执行指令时,比较第一操作元与第二操作元。第一操作元位于通用寄存器札中。 第二操作元由通用寄存器馬及R2+l指定。馬及R2+l包含寻址信息,例如,已指定的表类型 (DTT)及至表中的定位第二操作元的有效索引。
[0319] 一旦获得第一操作元及第二操作元,接下来对它们进行比较,且如果它们相等,则 将通用寄存器&+1的内容存储于第二操作元位置处,且从配置中已指定CPU清除(1)通过 使用存储器中已替换项所形成的已指定类型的所有TLB表项,以及(2)通过使用已清除较 高层TLB表项所形成的所有较低层TLB表项。可以有选择地将被清除的TLB项限制为其形 成旨在转换已指定地址空间中的地址的项。将所得条件码设置为0。
[0320] 如果第一操作元与第二操作元不相等,则将第二操作元载入第一操作元位置处, 且将所得条件码设置为1。
[0321] M4字段可以判定是清除配置中所有CPU的TLB还是仅清除执行指令的CPU中的 TLB〇
[0322] 图4显不了一个实施例的图表。
[0323] 在一个实施例中,计算机处理器获得用于进行处理的CRDTE指令401。根据操作 码,机器处理比较及替换DAT表项指令。
[0324] &及1?2字段分别指定通用寄存器405的奇偶对,且必须指定偶数编号寄存器;否 贝1J,识别为规格异常。通用寄存器& (该对的偶数寄存器)410在比特位置0至63中包含 第一操作元。可以将第一操作元称为比较值。可以将通用寄存器&+1(该对的奇数寄存 器)411的比特位置0至63称为替换值。
[0325] 在执行指令时,比较第一操作元与第二操作元。第一操作元位于通用寄存器札 410中。第二操作元为存储器中由通用寄存器R 2 420及馬+1 421指定的双字组。通用寄存 器馬的比特59至61为已指定的表类型(DTT),其指定通用寄存器R2中形成存储器440中 的表430的原点的比特;DTT也指定通用寄存器R 2+l中用作至表中定位第二操作元435的 有效索引的比特。
[0326] 一旦比较了第一操作元与第二操作元436,如果它们相等,则将通用寄存器札+1的 内容存储于第二操作元位置445处,且如450所示,从配置中已指定CPU清除(1)通过使用 存储器中已替换项所形成的已指定类型的所有TLB表项,以及(2)通过使用已清除较高层 TLB表项所形成的所有较低层TLB表项。可以有选择地将被清除的TLB项限制为其形成旨 在转换已指定地址空间中的地址的项。如455所示,将所得条件码设置为0。
[0327] 如果第一操作元与第二操作元不相等,则将第二操作元载入第一操作元位置460 处。如465所示,将所得条件码设置为1。
[0328] 指令401可以利用M4字段402以判定有选择地清除配置470中的所有CPU的TLB 或者仅清除执行指令475的CPU中的TLB。M 4字段包含本地清除(LC)控制。如果M4字段 中的LC控制为0,则配置中所有CPU中的TLB将受到影响。如果仏字段中的LC控制字段 为1,则仅与执行比较及替换DAT表项指令的CPU相关联的TLB可能受到影响。配置中所有 其它CPU中的TLB可不受到影响。
[0329] 注意:术语"已指定CPU"对于受到此指令影响的TLB的范围具有以下含义:
[0330] 当^字段中的本地清除(LC)控制为0时,术语"已指定CPU"意指配置中所有CPU。
[0331] 当%字段中的LC控制为1时,术语"已指定CPU"仅意指执行COMPARE AND REPLACE DAT TABLE ENTRY指令的CPU(本地CPU)。配置中所有其它CPU中的TLB可不受到影响。
[0332] ?比较第一操作元与第二操作元。如果它们相等,则将通用寄存器札+1的内容存 储于第二操作元位置处,且从配置中已指定CPU清除(1)通过使用存储器中已替换项所形 成的已指定类型的所有TLB表项,以及(2)通过使用已清除较高层TLB表项所形成的所有 较低层TLB表项。可以有选择地将被清除的TLB项限制为其形成旨在转换已指定地址空间 中的地址的项。
[0333] ?如果第一操作元与第二操作元不相等,则将第二操作元载入第一操作元位置处。 然而,在一些模型上,可以提取第二操作元,且随后将其不变地存储回第二操作元位置处。 当从由其它CPU所观察时,这一更新似乎是块并行互锁更新参照,。比较的结果由条件码加 以指示。
[0334] &及R2字段分别指定通用寄存器的奇偶对,且必须指定偶数编号寄存器;否则,识 别为规格异常。现在参照图5,将第一操作元称为比较值501,且包含在通用寄存器凡的比 特位置0至63中。将通用寄存器&+1的比特位置0至63称为替换值510。
[0335] 第二操作元为存储器中由通用寄存器馬及1?2+1 540指定的双字组。通用寄存器 R2的比特59至61为已指定的表类型(DTT),其指定通用寄存器1? 2中形成存储器中的表的 原点的比特;DTT也指定通用寄存器R2+l 540中用作至表中定位第二操作元的有效索引的 比特,如下:
[0337] 当DTT为000二进制时,如520所示,通用寄存器R2的比特位置0至52的内容(具 有附加于右侧的11个0) (521)形成表原点,且忽略该寄存器的522中的比特53至58、523 中的比特62、以及524中的比特63。当DTT为100至111二进制时,如530所示,通用寄存 器R 2的比特位置0至51的内容(具有附加于右侧的12个0) (531)形成表原点,且忽略该 寄存器的532中的比特52至58、533中的比特62、以及534中的比特63。001、010及011 二进制的DTT值无效;如果DTT无效,则识别为规格异常。
[0338] 通用寄存器R2+l 540的比特0至51具有虚拟地址的区索引、段索引、以及页索引 的格式。将通常由DAT用于选择由DTT指定的表类型中的项的541中的比特0至51的部 分称为有效索引。忽略在该有效索引右侧的通用寄存器R 2+l的比特〇至51的部分。通用 寄存器R2+l (542)的比特位置52至63被保留且必须包含0 ;否则,识别为规格异常。
[0339] 如果R3 550为非零,则通用寄存器馬的内容具有地址空间控制元素的格式,其中 仅使用了表原点(551中的比特0至51)及指定类型控制(DT) (553中的比特60及61)。这 些内容用于选择将要清除的TLB项。忽略通用寄存器馬的552中的比特52至59、554中的 比特62、以及555中的比特63。如果馬为0,则忽略通用寄存器0的整个内容,且清除TLB 项而不管用于形成它们的ASCE如何。
[0340] 图6中描述了 M4字段。
[0341] 将^字段的比特定义如下:
[0342] 保留的:保留如601所示的比特0至2。^字段的保留的比特位置被忽略,但应包 含0 ;否则,之后程序不能兼容地操作。
[0343]
本地清除控制(LC):
[0344] LC比特(M4字段602的比特3)控制是仅清除本地CPU中的TLB,还是清除配置的 所有CPU中的TLB。
[0345] 当第一操作元与第二操作元相等时,将通用寄存器&+1的内容存储于第二操作元 位置处,且从配置中已指定CPU中的转换后备缓冲器(TLB)清除(1)通过使用存储器中的 第二操作元的原始内容(即,在用替换值替换第二操作元之前第二操作元的内容)所形成 的已指定类型的所有TLB表项,以及(2)通过使用已清除较高层TLB表项所形成的所有较 低层TLB表项。可以有选择地将被清除的TLB项限制为其形成旨在转换已指定地址空间中 的地址的项。
[0346] 依据表类型,通用寄存器R2中的表原点及通用寄存器R 2+l中的有效索引根据2010 年 8 月 IBM 出版物第 SA22-7832-08 号的"z/Architecture Principles of Operation" 中的 "Lookup in a Table Designated by an Address-Space-Control Element" 或者 "Page-Table Lookup"中的规则而指定表项,除了总是忽略来自所得地址的比特位置0的进 位且不对照表长度字段检查索引之外。将表原点视为64比特地址,且使用针对64比特地 址运算的规则执行相加,而不管由当前PSW的比特31及32指定的当前寻址模式如何。由 此两个分量形成的地址为真实或者绝对地址。不针对有效性检验表项的内容,且由于表项 的内容未识别到异常条件。
[0347] 按块并行互锁更新的方式执行表项的提取及存储。所述项的提取访问受到密钥控 制保护,且存储访问受到密钥控制保护及低地址保护。
[0348] 在操作开始之前执行序列化功能,且在操作完成之后再次执行。如针对所有序列 化操作的情况,此序列化仅应用于此CPU ;其它CPU不必被序列化。
[0349] 当第一操作元与第二操作元相等时,此CPU从其TLB清除选择的项。除了清除本 地CPU之外,如果^字段中的LC比特为0,则也向配置中所有其它CPU发送从它们的TLB 清除选择的项的信号。从每一个TLB至少清除那些满足所有以下条件的项:
[0350]-通用寄存器R2+l中的有效索引匹配于由通用寄存器R2的比特59至61中的DTT 字段指定的类型的TLB表项中的对应索引。如果模型实现了一个包括由DTT字段指定的索 引的复合TLB项,则在通用寄存器R 2+l中的有效索引左侧的比特也匹配于已指定TLB表项 中提供的任何对应比特。
[0351] -R3字段为0,或者通用寄存器1?3中的表原点及指定类型字段匹配于用于形成TLB 表项的地址空间控制元素(ASCE)中的表原点及指定类型字段。
[0352]-如果R3字段为0,则此步骤中所描述的条件不适用。
[0353]-如果EDAT-1适用且存储器中替换的项为段表项,或者如果EDAT-2适用且存储器 中替换的项为区第三表项,则已替换项中的格式控制匹配于TLB项的格式控制。
[0354] _如果存储器中已替换项指定较低层转换表,则该项中的较低层表原点匹配于 TLB表项中的表原点字段。
[0355]-如果EDAT-1适用且存储器中替换的项为格式控制为1的段表项,或者如果 EDAT-2适用且存储器中替换的项为格式控制为1的区第三表项,则已替换项中的段帧绝对 地址或者区帧绝对地址分別匹配于TLB项的段帧绝对地址或者区帧绝对地址。
[0356] 也从每一受影响TLB至少清除满足所有以下条件的任何较低层TLB表项:
[0357] -通过使用存储器中已替换项或者通过使用较高层TLB表项形成较低层TLB表项, 其中所述较高层TLB表项是通过使用存储器中已替换项或者在此过程中清除的TLB项形成 的。
[0358] _R3字段为0或者通用寄存器1?3中的表原点及指定类型字段匹配于用于形成较低 层TLB表项的地址空间控制元素(ASCE)中的表原点及指定类型字段。此ASCE可以为附接 包含较高层表项的转换路径的ASCE,其中所述较高层表项附接存储器中根据其形成较低层 TLB表项的较低层表项,或者该ASCE可以为使较高层TLB表项可用的ASCE,其中所述较高 层TLB表项附接存储器中根据其形成较低层TLB表项的较低层表项。
[0359] 如果R3字段为0,则此步骤中所描述的条件不适用。
[0360]-如果EDAT-1适用且存储器中替换的项为段表项,或者如果EDAT-2适用且存储器 中替换的项为区第三表项,则已替换项中的格式控制匹配于TLB项的格式控制。
[0361] 如果存储器中的项指定较低层转换表,则该项中的较低层表原点匹配于TLB表项 中的表原点字段。
[0362] 当第一操作元与第二操作元相等时,COMPARE AND REPLACE DAT TABLE ENTRY的 执行并未在执行该COMPARE AND REPLACE DAT TABLE ENTRY的CPU上完成,直至发生以下 情形为止:
[0363] 1.已从此CPU的TLB清除满足以上指定的准则的所有项。当^字段中的LC控制 为1时,COMPARE AND REPLACE DAT TABLE ENTRY的执行完成,且不执行以下步骤。
[0364] 2.当仏字段中的LC控制为0时,配置中所有其它CPU已完成任何存储访问,包括 改变比特及参照比特的更新。
[0365] 操作未必对TLB真实空间项具有任何功效。
[0366] 具体条件
[0367] 如果以下情形中任何之一为真,则识别为规格异常,且抑制操作:
[0368]札或者R2字段为奇数。
[0369] DTT字段(通用寄存器R2的比特位置59至61)包含001、010、或者011二进制。
[0370] 通用寄存器R2+l的比特位置52至63包含非零值。
[0371] 对于所有寻址及保护异常,操作受到抑制。
[0372] 所得条件码:
[0373] 0-第一操作元与第二操作元相等,由通用寄存器&+1的内容替换第二操作元
[0374]1-第一操作元与第二操作元不相等,由第二操作元替换第一操作元
[0375] 2-
[0376] 3-
[0377] 程序异常:
[0378] ?寻址
[0379] ?操作(如果未安装增强型DAT设施2)
[0380] ?特权操作
[0381] ?保护(提取及存储、区表项、段表项或者页表项、密钥控制保护以及低地址保护)
[0382] ?规格
[0383] 程序设计注意:
[0384] 1.可以依据模型以不同方式实现TLB项的选择清除,而且,一般而言,可以清除多 于所需要的最小数目的项。
[0385] 2.当清除与公共段相关联的TLB项时,应注意,可能已通过使用包含许多不同表 原点的地址空间控制元素形成这些项。
[0386] 3.将指令的仏字段视为可选的,如由包含在汇编程序语法中的括号□内的字段 所指示。当未指定M 4字段时,汇编程序将0放置在指令的该字段中。
[0387] 4.本地清除控制应仅在以下情形中任何之一为真时才被指定为1;否则,可能发 生不可以预测结果,包括延迟访问异常机器检查的呈现。
[0388] ?程序正运行在单处理器配置中。
[0389] ?令程序在单一 CPU上运行,且维持程序与该CPU之间的亲和性。
[0390] 在一些模型上,针对以上所列出的情况使用指定仅清除本地TLB的COMPARE AND REPLACE DAT TABLE ENTRY可以导致显著性能改进。
[0391] 对以上环境的诸多改变是可能的。例如,一或多个方面同等地适用于(例如)虚拟 机模拟,在所述虚拟机模拟中,一或多个可分页实体(例如,客体)在一或多个处理器上执 行。作为一个实例,可分页实体由启动解释性执行(Start Interpretive Execution, SIE) 结构定义,IBM 出版物第 SA22-7095 号(1985 年)、名为"IBM System/370 Extended Architecture"的IBM出版物中描述该SIE结构的一个实例。
[0392] 尽管以上提及SIE及z/Architecture,但一或多个方面同等地适用于使用可分页 实体或者相似构造的其它体系结构与/或环境。
[0393] 此外,以上所描述的各种实施例仅为实例。例如,尽管此处描述了逻辑分割的环 境,但其仅为一个实例。各方面有益于许多环境类型,包括具有多个区字段的其它环境,以 及非分割的环境。另外,可以不存在中央处理器复合体,而存在耦接在一起的多个处理器。 而且,一或多个方面适用于单处理器环境。
[0394] 尽管此处描述了特定环境,但对这些环境进行诸多改变也是可能的。例如,如果对 所述环境进行逻辑分割,则可以将较多或者较少的逻辑分割区包括于该环境中。而且,可以 存在耦接在一起的多个中央处理复合体。仅存在可以进行的某些改变。另外,其它改变也 是可能的。而且,该环境可以包括多个控制器。另外,多个休眠的请求(来自一或多个控制 器)可以同时停留在系统中。更多的改变也是可能的。
[0395] 有利的是,一或多个方面可以受益于以下美国专利中的一个或多个中所描述的性 能增强:Slegel 等人的名为"Filtering Processor Requests Based On Identifiers" 的美国专利第 7530067 号;Siegel 等人的名为 "Blocking Processing Restrictions Based On Page Indices"的美国专利第7020761号;以及Siegel等人的名为"Blocking Processing Restrictions Based On Addresses" 的美国专利第 6996698 号。
[0396] 如此处所描述的,术语"处理单元"包括:可分页实体,例如,客体;处理器;模拟 器;与/或其它类似的组件。此外,术语"由处理单元"包括以处理单元的名义。术语"缓 冲器"包括存储器区字段,以及不同类型的数据结构,包括但不局限于阵列;且术语"表"可 以包括不同于表类型数据结构的表。另外,指令可以包括不同于指定信息的寄存器的指令。 此外,页、段与/或区可以具有不同于此处所描述的大小的大小。
[0397] 可以通过软件、固件、硬件、或者它们的某一组合实现一或多个所述能力。另外,也 可以模拟一或多个所述能力。
[0398] 一或多个方面可以包括于具有(例如)计算机可用介质的制品(例如,一或多个 计算机程序产品)中。例如,所述介质中包含了提供及简化所述能力的计算机可读程序代 码机制或者逻辑(例如,指令、代码、命令等)。可以将所述制品作为计算机系统的一个部分 加以包括,也可以独立地加以销售。
[0399] 另外,还能够提供可以由机器读取的至少一个程序存储设备,所述机器包含至少 一个可以由该机器执行以实现所述能力的指令的程序。
[0400]此处所描述的流程图仅为实例。可以对此处所描述的这些图或者步骤(或者操 作)进行诸多改变。例如,可以按不同次序执行所述步骤,而且还可以添加、删除或者修改 各步骤。
[0401]尽管此处已详细描述了优选实施例,但相关技术领域中的技术人员将会明显意识 到:可以对本发明进行多方面的修改、添加、替代等,因此,这些的修改、添加、替代等也被视 为处于以下权利要求中所定义的范围。
[0402]在另一个实施例中,适合于存储与/或执行程序代码的数据处理系统为可用的, 其包括至少一个直接或者通过系统总线间接耦合于存储器元件的处理器。例如,所述存储 器元件包括在程序代码的实际执行期间使用的本地存储器、大容量存储器,以及高速缓存 存储器,所述高速缓存存储器提供了至少某一程序代码的临时存储,以缩减执行期间必须 从大容量存储器检索代码的次数。
[0403] 可以直接或者通过介入I/O控制器将输入/输出,即I/O设备(包括但不局限于 键盘、显示器、定位设备、DASD、磁带、⑶、DVD、拇指翻阅驱动器(thumb drive)以及其它存储 器介质等)耦合于系统。也可以通过介入私用或者公用网络将网络适配器耦合于系统,使 数据处理系统能夠耦合于其它数据处理系统或者远端打印机或者存储设备。调制解调器、 电缆调制解调器以及Ethernet卡仅为少数几种可用网络适配器。
[0404] -或多个方面可以包括于具有(例如)计算机可用介质的制品(例如,一或多个 计算机程序产品)中。例如,所述介质中包含了提供及简化所述能力的计算机可读程序代 码机制或者逻辑(例如,指令、代码、命令等)。可以将所述制品作为计算机系统的一个部分 加以包括,也可以独立地加以销售。
[0405] 参照图7描述并入了一或多个方面的制品或者计算机程序产品的一个实例。例 如,计算机程序产品700包括一或多个计算机可用介质702,以在其上存储计算机可读程序 代码机制或者逻辑704,以提供及简化一或多个方面。所述介质可以为电子、磁性、光学、电 磁、红外线或者半导体系统(或者装置或者设备)或者传播介质。计算机可读介质的实例 包括半导体或者固态存储器、磁带、可以移动计算机磁盘、随机访问存储器(RAM)、只读存储 器(ROM)、硬磁盘及光盘。光盘的实例包括压缩盘-只读存储器(⑶-ROM)、压缩盘-读/写 (CD-R/W)以及DVD。由一或多个计算机可读程序代码机制或者逻辑定义的程序指令的序列 或者一或多个相关模块的逻辑组件引导一或多个方面的执行。
【主权项】
1. 一种用于管理动态地址转换(DAT)表的方法,所述方法包含下列步骤: 处理器根据将要执行的机器可执行指令的操作码判定所述指令为比较及替换DAT表 项指令,所述指令包含R1字段及R2字段;以及 由所述处理器执行所述指令,所述执行包含: 根据类型字段,将奇数寄存器的索引值加至偶数寄存器的值,以形成第二操作元的地 址,所述奇数寄存器及所述偶数寄存器为由所述指令的R2字段指定的奇偶寄存器对; 从由已形成地址指定的存储器位置获得原始第二操作元; 比较第一操作元与所获得的原始第二操作元,第一操作元包含在由所述指令的R1字段 指定的奇偶寄存器对的偶数编号(偶R1)寄存器中; 根据第一操作元等于原始第二操作元,将偶R1寄存器的内容作为新第二操作元存储于 第二操作元位置中。2. 根据权利要求1所述的方法,还包含根据由原始第二操作元的值指定的转换表项, 使用转换表项有选择地清除对应于由DAT形成的项的所有本地转换后备缓冲器(TLB)项。3. 根据权利要求1所述的方法,包含根据第一操作元不等于原始第二操作元将原始第 二操作元存储至偶R1寄存器中。4. 根据权利要求2所述的方法,其中,有选择地清除的转换表项对应于与原始第二操 作元相关联的较低层转换表项。5. 根据权利要求1所述的1的方法,还包含: 根据第一操作元比较值等于第二操作元,设置第一条件码值;以及 根据第一操作元比较值不等于所述第二操作元,设置第二条件码值。6. 根据权利要求所述的2的方法,其中,已清除的TLB项限于其形成旨在转换由所述指 令指定的地址空间中的地址的项。7. 根据权利要求2所述的方法,还包含: 根据所述指令的具有第一值的掩码字段,有选择地仅清除配置的多个处理器中执行所 述指令的处理器的TLB;以及根据所述指令的一个具有第二值的掩码字段,有选择地清除 配置的多个处理器的TLB。8. -种系统,包含适合于执行根据任何先前方法要求的方法的所有步骤的机制。9. 一种计算机程序,包含在计算机系统上执行所述计算机程序时适合于执行根据任何 先前方法要求的方法的所有步骤的指令。
【专利摘要】比较第一操作元与第二操作元。如果它们相等,则将寄存器R1+1的内容存储于第二操作元位置处,且从配置中已指定CPU清除通过使用存储器中已替换项所形成的已指定类型的所有转换后备缓冲器(TLB)表项,以及通过使用已清除较高层TLB表项所形成的所有较低层TLB表项。用新项来替换有效DAT表项,且从TLB去除掉配置中所有CPU上的(至少)单一项的任何复本。如果第一操作元与第二操作元不相等,则将第二操作元载入第一操作元位置处。比较结果由条件码加以指示。提供了一种方法、系统以及计算机程序产品。
【IPC分类】G06F12/10
【公开号】CN104903873
【申请号】CN201280073581
【发明人】D.格雷纳, R.罗杰斯, G.西特曼
【申请人】国际商业机器公司
【公开日】2015年9月9日
【申请日】2012年11月26日
【公告号】CA2874186A1, EP2862089A2, EP2862089A4, US20130339656, WO2013186606A2, WO2013186606A3, WO2013186606A8