计算机配置虚拟拓扑发现.pdf

上传人:1*** 文档编号:4576903 上传时间:2018-10-21 格式:PDF 页数:54 大小:2.60MB
返回 下载 相关 举报
摘要
申请专利号:

CN200980101760.9

申请日:

2009.01.12

公开号:

CN101911018A

公开日:

2010.12.08

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20090112|||公开

IPC分类号:

G06F9/455; G06F9/30

主分类号:

G06F9/455

申请人:

国际商业机器公司

发明人:

C·小盖尼; M·法雷尔; J·库巴拉; D·施密特

地址:

美国纽约

优先权:

2008.01.11 US 11/972,802

专利代理机构:

北京市中咨律师事务所 11247

代理人:

于静;张亚非

PDF下载: PDF下载
内容摘要

在一种包括主机处理器(主机CPU)的逻辑分区主机计算机系统中,用于发现客户配置的一个或多个客户处理器(客户CPU)的拓扑的设施和指令包括:客户配置的客户处理器获取和执行STORE??SYSTEM??INFOMRATION指令,该指令获得计算机配置的拓扑信息。该拓扑信息包括:该配置的处理器的嵌套信息和主机处理器提供给相应的客户处理器的专用度。该信息优选地被存储在存储器中的单个表中。

权利要求书

1: 在包括主机处理器 ( 主机 CPU) 的逻辑分区主机计算机系统中, 用于发现客户配置的 一个或多个客户处理器 ( 客户 CPU) 的拓扑的方法, 该方法包括 : 客 户 配 置 的 客 户 处 理 器 获 取 STORE SYSTEMINFOMRATION 指 令 来 执 行, 该 STORE SYSTEMINFOMRATION 指令是针对计算机体系结构定义的 ; 执行该 STORE SYSTEM INFOMRATION 指令, 包括 : 基于该 STORE SYSTEM INFOMRATION 指令的拓扑信息请求, 获得计算机配置的拓扑信 息, 该拓扑信息包括配置的处理器的嵌套信息 ; 和 将该拓扑信息存储在配置拓扑表中。
2: 如权利要求 1 所述的方法, 其中, 所述拓扑信息包括客户处理器的标识以及与被供 应给所述客户处理器的主机处理器的拓扑关联的嵌套层次。
3: 如权利要求 2 所述的方法, 其中, 所述拓扑信息包括关于客户配置的客户处理器以 及与被供应给所述客户配置的主机处理器的拓扑关联的嵌套层次的信息。
4: 如权利要求 3 所述的方法, 其中, 所述表包括用于所述处理器中具有类似属性的每 一组嵌套处理器的拓扑列表处理器项。
5: 如权利要求 4 所述的方法, 其中, 所述拓扑列表处理器项还包括指示符, 其指示该组 嵌套处理器中的处理器对逻辑分区客户配置有多专用。
6: 如权利要求 5 所述的方法, 其中所述表还包括每个嵌套层次的拓扑列表容器项, 用 于具有所述嵌套处理器的一个或多个嵌套层次的层级结构。
7: 如权利要求 1 所述的方法, 其中所述 STORE SYSTEMINFOMRATION 指令包括 : 操作码 字段、 基址寄存器字段、 有符号位移字段, 其中所述拓扑发现指令还包括 : 第一隐式通用寄 存器, 其包含功能代码字段和选择器 -1 字段, 以及第二隐式通用寄存器, 其包含选择器 -2 字段, 所述功能代码字段指定拓扑信息请求, 基址寄存器字段和有符号位移字段标识包含 所述配置拓扑表的系统信息块 (SYSIB) 在存储器中的位置, 其中选择器 -1 字段和选择器 -2 字段的值的组合确定了将被执行的拓扑信息请求。
8: 如权利要求 1 所述的方法, 其中所述针对计算机体系结构定义的 STORE SYSTEM INFOMRATION 指令由备用的计算机体系结构的中央处理单元来获取和执行, 其中, 该方法还包括 : 解释该 STORE SYSTEMINFOMRATION 指令以识别用于模拟该 STORE SYSTEMINFOMRATION 指令的操作的预定软件例程 ; 以及 其中, 执行该 STORE SYSTEM INFOMRATION 指令包括 : 执行预定软件例程以执行用于执 行该 STORE SYSTEMINFOMRATION 指令的方法的步骤。
9: 一种用于发现包括主机处理器 ( 主机 CPU) 的逻辑分区主机计算机系统中的客户配 置的一个或多个客户处理器 ( 客户 CPU) 的拓扑的计算机程序产品, 该计算机程序产品包括 有形存储介质, 其可被处理电路读取, 并存储由处理电路执行的指令来执行包括以下步骤 的方法 : 客 户 配 置 的 客 户 处 理 器, 其 获 取 STORE SYSTEMINFOMRATION 指 令 来 执 行, 该 STORE SYSTEMINFOMRATION 指令是针对计算机体系结构定义的 ; 执行该 STORE SYSTEM INFOMRATION 指令, 包括 : 基于该 STORE SYSTEM INFOMRATION 指令的拓扑信息请求, 获得计算机配置的拓扑信 息, 该拓扑信息包括配置的处理器的嵌套信息 ; 以及 2 将该拓扑信息存储在配置拓扑表中。
10: 如权利要求 9 所述的计算机程序产品, 其中所述拓扑信息包括客户处理器的识别 以及与被供应给客户处理器的主机处理器的拓扑关联的嵌套层次。
11: 如权利要求 10 所述的计算机程序产品, 其中所述拓扑信息包括关于客户配置的客 户处理器以及与被供应给所述客户配置的主机宾处理器的拓扑关联的嵌套层次。
12: 如权利要求 11 所述的计算机程序产品, 其中所述表包括用于所述处理器中的每一 组嵌套处理器的拓扑列表处理器项。
13: 如权利要求 12 所述的计算机程序产品, 其中所述拓扑列表处理器项还包括指示 符, 其指示该组嵌套处理器中的处理器对逻辑分区客户配置有多专用。
14: 如权利要求 13 所述的计算机程序产品, 其中所述表还包括每个嵌套层次的拓扑列 表容器项, 用于具有所述嵌套的处理器的一个或多个嵌套层次的层级结构。
15: 如权利要求 9 所述的计算机程序产品, 其中, 所述 STORESYSTEM INFOMRATION 指令 包括 : 操作码字段、 基址寄存器字段、 有符号位移字段, 其中所述拓扑发现指令还包括 : 第 一隐式通用寄存器, 其包含功能代码字段和选择器 -1 字段, 以及第二隐式通用寄存器, 其 包含选择器 -2 字段, 所述功能代码字段指定拓扑信息请求, 基址寄存器和有符号位移字段 标识包含所述配置拓扑表的系统信息块 (SYSIB) 在存储器中的位置, 其中选择器 -1 字段和 选择器 -2 字段的值的组合确定了将被执行的拓扑信息请求。
16: 如权利要求 9 所述的计算机程序产品, 其中所述针对计算机体系结构定义的 STORE SYSTEM INFOMRATION 指令由备用的计算机体系结构的中央处理单元获取和执行, 其中该方法还包括 : 解释所述 STORE SYSTEMINFOMRATION 指令以识别用于模拟所述 STORE SYSTEMINFOMRATION 指令的操作的预定软件例程 ; 以及 其中, 执行所述 STORE SYSTEM INFOMRATION 指令包括执行预定软件例程以执行用于执 行所述 STORE SYSTEMINFOMRATION 指令的方法的步骤。
17: 一种计算机系统, 包括 : 存储器 ; 逻辑分区的主机计算机系统, 其包括与所述存储器通信的主机处理器 ( 主机 CPU) ; 其中, 所述计算机系统被配置为执行用于发现客户配置的一个或多个客户处理器 ( 客 户 CPU) 的方法, 该方法包括 : 客 户 配 置 的 客 户 处 理 器 获 取 STORE SYSTEMINFOMRATION 指 令 来 执 行, 所 述 STORE SYSTEMINFOMRATION 是针对计算机体系结构定义的 ; 执行所述 STORE SYSTEM INFOMRATION 指令, 包括 : 基于所述 STORE SYSTEM INFOMRATION 指令的拓扑信息请求, 获取计算机配置的拓扑信 息, 该拓扑信息包括配置的处理器的嵌套信息 ; 以及 将该拓扑信息存储在配置拓扑表中。
18: 如权利要求 17 所述的计算机系统, 其中所述拓扑信息包括主机处理器的标识以及 与主机处理器的拓扑关联的嵌套层次。
19: 如权利要求 18 所述的计算机系统, 其中所述拓扑信息包括关于客户配置的主机处 理器以及与客户配置的主机处理器的拓扑关联的嵌套层次的信息。
20: 如权利要求 19 所述的计算机系统, 其中所述表包括用于所述处理器中的每一组嵌 3 套处理器的拓扑列表处理器项。
21: 如权利要求 20 所述的计算机系统, 其中所述拓扑列表处理器项还包括指示符, 其 指示该组嵌套处理器中的处理器对逻辑分区客户配置有多专用。
22: 如权利要求 21 所述的计算机系统, 其中所述表还包括每个嵌套层次的拓扑列表容 器项, 用于具有所述嵌套处理器的一个或多个嵌套层次的层级结构。
23: 如权利要求 17 所述的计算机系统, 其中所述 STORESYSTEM INFOMRATION 指令包括 : 操作码字段、 基址寄存器字段、 无符号位移字段, 其中所述拓扑发现指令还包括 : 第一隐式 通用寄存器, 其包含功能代码字段和选择器 -1 字段, 和第二隐式通用寄存器, 其包含选择 器 -2 字段, 所述功能代码字段指定拓扑信息请求, 所述基址寄存器字段和无符号位移字段 标识包含所述配置拓扑表的系统信息块 (SYSIB) 在存储器中的位置, 其中选择器 -1 和选择 器 -2 的值的组合确定了将被执行的拓扑信息请求。
24: 如权利要求 17 所述的计算机系统, 其中所述针对计算机体系机构定义的 STORE SYSTEM INFOMRATION 指令由备用的计算机结构体系的中央处理单元获取和执行, 其中, 该方法还包括解释所述 STORE SYSTEMINFOMRATION 指令以识别用于模拟该 STORE SYSTEMINFOMRATION 指令的操作的预定软件例程 ; 以及 其中, 执行所述 STORE SYSTEM INFOMRATION 指令包括 : 执行所述预定软件例程以执行 用于执行所述 STORE SYSTEMINFOMRATION 指令的方法的步骤。

说明书


计算机配置虚拟拓扑发现

    【技术领域】
     本发明一般地涉及多处理器系统的虚拟化。更具体而言, 本发明涉及使得程序发 现其虚拟环境的拓扑。背景技术
     在系统控制功能中, 有将系统分区为若干逻辑分区 (LPAR) 的能力。 LPAR 是处理器 硬件的子集, 其被定义为支持操作系统。LPAR 包含资源 ( 处理器、 存储器和输入 / 输出设 备 ) 并作为独立系统而操作。多个逻辑分区可以存在于一个大型机硬件系统中。
     在来自 IBM 的、 包括 S/390 的大型机硬件系统中, 很多年都存在 15 个 LPAR 的 限制。年代更近一些的机器具有 30 个 ( 很可能更多 )。这种机器以 z/Architecture 的 机器为例子。IBM z/Architecture 在由 IBM 于 2007 年 4 月公开的 z/Architecture Principles of Operation(z/Architecture 操作原理 )SA22-7832-05 中被描述。
     存储器容量、 I/O 可用性和可用处理能力的实际限制通常将 LPAR 的数量限制为少 于这些最大值。
     提供分区的硬件和固件被称为 PR/SMTM( 处理器资源 / 系统管理器 )。使用 PR/SM 功能来创建和运行 LPAR。PR/SM( 内置设施 ) 和 LPAR( 使用 PR/SM 的结果 ) 之间的区别通 常被忽略, 且术语 LPAR 被共同地用于设施及其结果。
     系统管理员向每个 LPAR 分配存储器部分, 且存储器不可以在 LPAR 之间共享。管 理员可以分配处理器 ( 也被称为 CP 或者 CPU) 给特定的 LPAR, 或者管理员可以允许系统控 制器使用内部负载平衡算法来将任意或所有的处理器调度给所有的 LPAR。 通道 (CHPID) 可 以被分配给特定的 LPAR 或者被多个 LPAR 共享, 这取决于每个通道上的设备的性质。
     具有单个处理器 (CP 处理器 ) 的系统可以具有多个 LPAR。 PR/SM 具有内部调度器, 其可以将处理器的一部分分配给每个 LPAR, 这非常类似于操作系统调度器将其处理器时间 的一部分分配给每个进程、 线程或者任务。
     分区控制规范部分地包含在 IOCDS 中, 部分地包含在系统简档中。 IOCDS 和简档都 驻留在支持元素 (SE) 中, 支持元素仅仅是系统内部的一个笔记本计算机。该 SE 可以连接 到一个或多个硬件管理控制台 (HMC), 该硬件管理控制台是用来监视和控制诸如大型机微 处理器的硬件的桌面个人计算机。HMC 比 SE 更便于使用, 且可以控制若干不同的大型机。
     从 HMC( 或者, 在不常见情况下从 SE) 工作, 操作者通过选择和加载简档和 IOCDS 来准备一台大型机以供使用。这些创建了 LPAR 并用设备号码、 LPAR 分配、 多路径信息等来 配置通道。这被称为上电复位 (POR)。通过加载不同的简档和 IOCDS, 操作者可以完全改变 LPAR 的数量和性质, 以及 I/O 配置的外观。 但是, 这么做通常对任何运行中的操作系统和应 用是破坏性的, 因此如果没有预先安排, 很少这么做。
     逻辑分区 (LPAR) 实际上相当于单独的大型机。
     每个 LPAR 运行其自己的操作系统。这可以是任何大型机操作系统 ; 例如, 没必要 在每个 LPAR 中运行例如 z/OS 安装规划者可以选择在若干 LPAR 中共享 I/O 设备, 但这是一个本地决策。
     系统管理员可以分配一个或多个系统处理器以用于 LPAR 的独占使用。或者, 管理 员可以允许在一些或者所有的 LPAR 上使用所有的处理器。这里, 系统控制功能 ( 经常被称 为微码或者固件 ) 提供一个调度器以在所选择的 LPAR 中共享处理器。管理员可以指定在 每个 LPAR 中执行的并行处理器的最大数量。管理员也可以向不同的 LPAR 提供加权 ; 例如, 指定 LPAR1 应该接收两倍于 LPAR2 的处理器时间。
     每个 LPAR 中的操作系统被分别进行初始程序装入 (IPL), 具有其自己的操作系统 副本, 具有其自己的操作员控制台 ( 如果需要的话 ) 等等。 如果一个 LPAR 中的系统崩溃了, 对其他的 LPAR 没有影响。
     在具有 3 个 LPAR 的大型机系统中, 例如, 在 LPAR1 中可能有生产 z/OS, 在 LPAR2 中 有 z/OS 的测试版本, 而在 LPAR3 中有用于 S/390 的 Linux 如果这整个系统具有 8GB 的 存储器, 则可以分配 4GB 给 LPAR1, 1GB 给 LPAR2, 1GB 给 LPAR3, 并保留 2GB。用于两个 z/OS LPAR 的操作系统控制台可能在完全不同的位置。
     对于大多数实用目的而言, 在例如 3 个运行 z/OS( 以及共享它们的大部分 I/O 配 置 ) 的独立大型机之间以及在同一个大型机上做同样事情的 3 个 LPAR 之间没有差别。除 了细微的例外, z/OS、 操作员和应用无法察觉出差别。 细微的差别包括 z/OS( 如果当 LPAR 被定义时, 被允许 ) 在整个大型机系统中获取 性能和利用率信息以及动态地在 LPAR 间转移资源 ( 处理器和通道 ) 以提高性能的能力。
     今天的 IBM 大型机具有中央处理复合体 (CPC), 其可包含若干可被用于略有差 别的目的的不同种类的 z/Architecture 处理器。
     这些目的中的几个涉及软件成本控制, 而其他的则更为基本。 CPC 中的所有处理器 开始时是同等的处理器单元 (PU) 或者引擎, 它们还没有被特征化以供使用。每个处理器在 安装过程中或者晚些时候被 IBM 特征化。潜在的特征如下 :
     - 处理器 (CP)
     这种处理器类型可用于通常的操作系统和应用软件。
     - 系统辅助处理器 (SAP)
     每个现代大型机具有至少一个 SAP ; 更大的系统可能具有几个。 SAP 执行内部代码 以提供 I/O 子系统。例如, SAP 转换设备号码和通道路径标识符 (CHPID) 的真实地址, 控制 单元地址和设备号码。它管理多个路径以控制单元并对临时错误执行错误恢复。操作系统 和应用不能检测到 SAP, 且 SAP 不使用任何 “正常的” 存储器。
     - 用于 Linux 的集成设施 (IFL)
     这是禁用了仅由 z/OS 使用的一个或两个指令的正常处理器。 Linux 不使用这些 指令, 且可以被 IFL 执行。Linux 也可以被 CP 执行。区别在于 : 当指定系统的型号时, IFL 没有被计数。这可以导致软件成本的实质性区别。
     -zAAP
     这是一个若干功能被禁止 ( 中断处理、 一些指令 ) 的处理器, 这样, 在该处理器上 没有完整的操作系统能被执行。但是, z/OS 可以检测 zAAP 处理器的存在, 并将使用它们来 TM 执行 Java 代码。同样的 Java 代码可以在标准的 CP 上被执行。再次地, 当指定系统型号 时, zAAP 引擎没有被计数。跟 IFL 一样, 它们仅仅是为了控制软件成本而存在的。
     -zIIP
     系统 z9TM 集成信息处理器 (zIIP) 是用于处理符合条件的数据库工作负载的专门 引擎。zIIP 被设计为有助于降低用于在大型机上的所选择工作负载的软件成本, 所述工作 负载例如为商务智能 (BI)、 企业资源规划 (EPR) 和客户关系管理 (CRM)。zIIP 通过帮助对 DB2 的直接访问更具有成本效率和降低对数据的多个副本的需求, 加强了大型机作为企 业的数据枢纽的角色。
     集成耦合设施 (ICF)
     这些处理器仅运行被许可内部代码。对于正常的操作系统或者应用, 它们是不可 见的。 耦合设施实际上是由多个系统使用来协同工作的大型存储器暂存区 (scratch pad)。 ICF 必须被分配给 LPAR 以成为耦合设施。
     备件
     非特征化的 PU 起 “备件” 的作用。如果系统控制器检测到失败的 CP 或者 SAP, 其 可以由备件 PU 替换。在大部分情况下, 这可以没有任何系统中断而完成, 即使是对于在失 败的处理器上运行的应用而言。
     除了处理器的这些特征, 一些大型机具有被配置为以低于其 CP 的潜在速度来运 行的模型或版本。这被公知为 “损伤膝盖” (knee-capping), 尽管 IBM 更倾向于术语能力设 定, 或者类似的术语。 这是通过使用微码将空循环插入到处理器指令流中完成的。 目的仍然 是通过拥有符合应用要求的最少的大型机模型或者版本来控制软件成本。IFL、 SAP、 zAAP、 zIIP 和 ICF 总是在处理器的全速中发挥作用, 因为这些处理器在软件定价计算中 “不计算 在内” 。
     处理器和 CPU 可以是指完整的系统盒, 或者系统盒内的一个处理器 (CPU)。 尽管通 过讨论的上下文可以明确其含义, 但即使是大型机专业人员也必须在讨论中明确他们使用 的处理器或者 CPU 的含义。 IBM 使用术语中央处理复合体 (CPC) 来指硬件的物理集合, 其包 括主存储器、 一个或多个中央处理器、 计时器和通道。( 一些系统程序员使用术语中央电子 复合体 (CEC) 来指大型机 “盒” , 但是优选的术语是 CPC。)
     简言之, CPC 内的所有的 S/390 或者 z/Architecture 处理器都是处理单元 (PU)。 当 IBM 交付 CPC 时, PU 被特征化为 ( 用于正常工作的 )CP、 用于 Linux 的集成设施 (IFL)、 用于平行 Sysplex 配置的集成耦合设施 (ICF) 等。
     根据上下文, 大型机专业人员典型地使用系统来指硬件盒、 完整的硬件环境 ( 具 有 I/O 设备 ) 或者操作环境 ( 具有软件 )。他们典型地使用处理器来意指 CPC 内的单个处 理器 (CP)。
     z/VM HYPERVISORTM 被设计为通过集成应用和数据帮助用户在企业范围内扩大 大型机技术的商业价值, 并同时提供优越的可用性、 安全性和操作便利性。 z/VM 虚拟化技术 被设计为允许用户在与其他系统 z 操作系统例如 z/OS 一起运行、 或者作为大型的仅使用 Linux 的企业服务器解决方案运行的单个大型机上运行成百上千的 Linux 服务器的能力。 通过容纳 (hosting) 非 Linux 工作负载, 例如 z/OS、 z/VSE 和 z/TPF, z/VM V5.3 也有助于提 高生产率。
     z/VM 向每个用户提供被称为虚拟机的单独的工作环境。 虚拟机模拟专用真机的存 在, 其包括处理器功能、 存储器、 联网装置、 和输入 / 输出 (I/O) 资源。操作系统和应用程序可以作为客户 (guest) 在虚拟机中运行。例如, 可以在也支持各种应用和终端用户的同一 个 z/VM 系统上运行多个 Linux 和 z/OS 映像。结果, 开发、 测试和生产环境可以共享单台物 理计算机。
     参考图 15A 至 15D, 通过把 IT 资源视为逻辑池而不是分开的物理实体, 分区和虚拟 化涉及从物理思考到逻辑思考的转变。这涉及整合和集中 IT 资源, 并向同类和异类服务器 两者、 存储器、 分布式系统和网络提供 “单系统错觉” 。
     硬件的分区涉及用于单独操作系统的单独 CPU, 每个操作系统运行其特定的应用。 软件分区采用了基于软件的 “管理程序” 来使得单个操作系统在任何或所有的 CPU 上运行。
     管理程序允许多个操作系统同时在主机计算机上运行。管理程序技术起源于 IMB VM/370, 这是今天的 z/VM 的前身。逻辑分区 (LPAR) 涉及将固件 ( 基于硬件的管理程序 ) 分区以将操作系统从 CPU 隔离。
     虚拟化启用或者利用 4 项基本能力 : 资源共享、 资源聚集、 功能模拟和隔绝。我们 将在以下部分详细探讨这些话题。
     z/VM 是用于 IBM 系统 z 平台的操作系统, 其提供了高度灵活的测试和生产环境。 IBM 虚拟化技术的 z/VM 实现提供了作为 z/VM 的 “客户” 来运行全功能操作系统例如系统 z 上的 Linux、 z/OS 等的能力。z/VM 支持 64 位的 IBM z/Architecture 客户和 31 位的 IBM 企 业系统体系结构 /390 客户。 z/VM 向每个用户提供被称为虚拟机的单独的工作环境。 该虚拟机模拟专用真机的 存在, 其包括处理器功能、 存储器、 联网装置和输入 / 输出 (I/O) 资源。操作系统和应用程 序可以作为客户在虚拟机中运行。例如, 可以在也支持各种应用和终端用户的同一个 z/VM
     系统中运行多个 Linux 和 z/OS 算机。
     映像。结果, 开发、 测试和生产环境可以共享单台物理计虚拟机使用真实的硬件资源, 但是即使使用专用设备 ( 例如磁带驱动器 ), 该磁带 驱动器的虚拟地址可以是或者不是与磁带驱动器的真实地址相同。 因此, 虚拟机仅知道 “虚 拟硬件” , 该虚拟硬件可能存在于或不存在于真实世界中。
     第一级 z/VM 是安装在图 16 的真实硬件之上的基础操作系统。第二级操作系统是 在基础 z/VM 操作系统上建立的系统。因此, z/VM 作为基础操作系统运行在硬件上, 而客户 操作系统运行在虚拟化技术上。在图 14 中, 示出了加载到第一级客户 ( 客户 1) 分区的第 二级客户 z/VM OS。 换句话说, 有直接位于硬件上的第一级 z/VM 操作系统, 但是该第一级 z/VM 操作系 统的客户被虚拟化。通过将硬件从客户虚拟化, 能够利用少量的硬件来根据需要创建和使 用任意多的客户。
     如上所述, 在虚拟机中运行的操作系统通常被称为 “客户” 。可能也会遇到如下术 语和短语 :
     -“运行第一级” 意味着直接在硬件上运行 ( 如 z/VM 所做的 )。
     -“运行第二级” 、 “运行在 VM 下” 或者 “运行在 VM 上” 意味着作为客户运行。
     z/VM 功能性的一个例子是, 如果具有第一级 z/VM 系统和第二级 z/VM 系统, 就可 以在第二级系统上继续创建更多的操作系统。 这种类型的环境对于部署前测试操作系统安 装, 或者对于测试或调试操作系统尤其有用。虚拟资源可以具有在其下层物理资源中不可
     用的功能或者特征。图 14 示出了通过资源模拟的虚拟化。
     例子包括体系结构模拟软件, 其使用另一个处理器的体系结构来实现一个处理器 的体系结构 ; 在 IP 网络上实现虚拟 SCSI 的 iSCSI ; 以及在物理盘存储器上实现的虚拟磁带 存储。
     而且, 现代技术中的中央处理单元 (CPU) 的封装通常是分级的。多个内核可以被 放置在单个芯片上。多个芯片可以被放置在单个模块中。多个模块可以被封装在通常被称 为簿 (book) 的板上, 且多个薄可以分布在多个框架 (frame) 中。
     CPU 经常具有若干级高速缓存, 例如, 每个处理器可以具有一个高速缓存 ( 或可能 是一个分离的指令高速缓存和一个数据高速缓存 ), 且在每个处理器和主存储器接口之间 有可能有额外的更大的高速缓存。根据层级结构中的级别, 高速缓存也被放置以提高整体 性能, 且在某些级别中, 可以在多于单个的 CPU 之间共享一个高速缓存。关于这样放置的工 程决策涉及空间、 能量 / 热量、 布线距离、 CPU 频率、 系统性能和其他方面。CPU 元件的这种 放置创建了对于特定的逻辑分区来说或多或少比较有利的内部结构, 这取决于该分区的每 个 CPU 放置在哪里。逻辑分区给予操作系统包括处理器利用率的某些资源的所有权的外 观, 其中, 实际上, 操作系统与其他分区中的其他操作系统共享着资源。 通常, 软件不会意识 到放置, 且在对称多处理 (SMP) 配置中, 会看到一组 CPU, 每个 CPU 提供相同级别的性能。 问 题在于, 忽略内部封装和任何两个 CPU 之间的 “距离” 会导致软件做出关于如何给 CPU 分配 工作的非最佳选择。因此, 无法实现 SMP 配置的全部潜力。
     所提出的虚拟化的大型机例子旨在提供虚拟化一个机器中可能的各种拓扑。 如所 述的, 在分区中运行的程序 ( 包括操作系统 ) 很可能认为, 对它们来说可用的资源, 包括处 理器、 存储器和 I/O, 是专用于该分区的。 事实上, 程序并不知道它们在分区中运行。 这样的 程序也没意识到它们的分区的拓扑, 因此无法基于这样的拓扑做出选择。需要的是一种使 程序能够优化在其上运行的配置拓扑的方法。 发明内容
     通过提供一种用于使能具有一组休眠的计算机硬件资源的可升级计算机系统中 的休眠的计算机硬件资源的一个子集的方法、 系统和计算机程序产品, 克服了现有技术的 缺点, 并提供了额外的优点。
     包括主机 CPU 的主机计算机可以被分区为具有客户 CPU(guest CPU) 的逻辑 / 虚 拟分区。分区优选地由诸如来自 IBM 的 z/VM 的操作系统可能提供的固件或者软件来完成。 每个客户 CPU 是一个虚拟 CPU, 因为, 客户程序将客户 CPU 视为实际的 CPU 处理器, 但是事 实上, 底层主机将每个客户 CPU 映射到主机 CPU 资源。在一个实施例中, 通过由主机为客户 CPU 指定 CPU 时间的一部分来利用主机 CPU, 使用主机 CPU 的一部分来实现客户 CPU。可以 预见多个客户 CPU 可以被单个主机 CPU 支持, 但反之也可以适用。
     在另一个实施例中, 客户 CPU 被软件模拟, 由此模拟例程将客户 CPU 的功能 ( 包括 指令解码和执行 ) 转换成在主机 CPU 上运行的例程。主机 CPU 被供应以支持客户 CPU。
     在另一个实施例中, 第一客户映像可以是第二客户映像的主机。 在这种情况下, 第 二客户 CPU 由第一客户 CPU 供应, 而第一客户 CPU 本身由主机 CPU 供应。配置的拓扑结构 是几级客户 CPU 和一个或多个主机 CPU 的嵌套。提 供 一 条 新 的 PERFORM TOPOLOGY FACILITY(PTF) 指 令, 现 有 技 术 中 的 STORE SYSTEM INFORMATION(STSI) 指令被增强以提供给新的 SYSIB(SYSIB 标识符 15.1.2), 其向 软件提供组件邻近性 (affinity) 和逻辑封装信息。这允许软件在单个元件, 例如多处理器 的处理单元, 如何被分配给各种应用和工作负载上应用有见识的、 智能的选择, 由此通过例 如提高共享高速缓存命中率, 向程序 (OS) 提供信息以便提高性能。
     新的 PERFORM TOPOLOGY FACILITY(PFT) 指令由诸如管理程序、 操作系统 (OS)、 内 核等等的特权程序使用, 来请求改变程序运行于其中的 CPU 配置拓扑结构。在一个实施例 中, 客户 CPU 拓扑在水平和垂直极性上切换。
     通过具有获知 CPU 拓扑结构信息的能力, 程序了解了对称多处理配置中的任意两 个或多个 CPU 之间的 “距离” 。
     所提供的最小化在一个配置中的所有 CPU 的总距离、 以及特定的应用程序任务如 何被调度给单个 CPU 的能力为管理程序提供了改进性能的能力。改进的性能可以来自于以 下一个或多个属性, 它们由更好的拓扑知识改进 :
     缩短 CPU 间的信令路径。
     由多个 CPU 访问的共享存储器很可能位于更接近该组 CPU 的高速缓存。因此, 高 速缓存间的存储器使用被限制于整机和配置的更小的子集, 这允许更快的高速缓存到高速 缓存的转移。CPU 的最近的高速缓存 (L1) 中的存储位置的存在很有可能发生。 由于改进的性能, 配置中实际存在的 CPU 数量可以更少, 而仍然在相同或更少的 运行时间中完成同样的工作。 CPU 这样的减少量减少了每个 CPU 必须使用的、 与配置中的其 他 CPU 通信的通信路径的数量, 由此进一步有助于改进整体性能。
     例如, 如果 10 个 CPU 需要执行一个特定程序, 则高速缓存间的通信量很大, 但是, 如果相同的程序在一个 CPU 上执行, 则没有高速缓存间的通信量。这表明, 期望的存储位 置的高速缓存存在被保证在单个 CPU 的高速缓存中, 如果该存储位置在任何高速缓存中的 话。
     当存储器和相关的高速缓存层级结构在本地, 而不是分布在多个物理框架 ( 即, 盒子等 ) 中, 信令路径更短。拓扑知识指示了在选择分配给应用程序的合适 CPU 子集时的 相对距离, 这样, 即使在 SMP 配置中的更大 CPU 集合中, 该子集优化了它们之间的最小化距 离。这有时候被称为邻近组。
     有关 CPU 数量减少和 CPU 间距离的概念是通过拓扑信息而得知的, 该拓扑信息允 许程序最优化 CPU 到邻近组的分配。
     在一个实施例中 ( 图 20), 在包括主机处理器 ( 主机 CPU) 的逻辑分区主机计算机 系统中, 客户配置的一个或多个客户处理器 ( 客户 CPU) 的拓扑信息被发现, 并被存储在表 中。优选地, 客户配置的客户处理器获取 STORE SYSTEM INFORMATION 指令来执行。当执行 STORE SYSTEMINFORMATION 指令时, 基于 STORE SYSTEM INFORMATION 指令的拓扑信息请求, 获得计算机配置的拓扑信息, 该拓扑信息包括配置的处理器的嵌套信息。获得的拓扑信息 被存储在优选位于存储器中的配置拓扑表中。
     在一个实施例中, 拓扑信息包括主机处理器的标识以及与主机处理器的拓扑关联 的嵌套层次。
     在另一个实施例中, 拓扑信息包括关于客户配置的主机处理器的信息, 以及与客
     户配置的主机处理器的拓扑关联的嵌套信息。
     在一个实施例中, STORE SYSTEM INFORMATION 指令包括操作码字段、 基址寄存器 字段、 有符号位移字段, 其中拓扑发现指令还包括第一隐式通用寄存器, 其包含功能代码 字段和选择器 -1 字段, 和第二隐式通用寄存器, 其包含选择器 -2 字段, 功能代码字段指 定拓扑信息请求, 基址寄存器字段和有符号位移字段标识包含配置拓扑表的系统信息块 (SYSIB) 在存储器中的位置, 其中选择器 -1 和选择器 -2 的值的组合确定将被执行的拓扑信 息请求。
     在另一个实施例中, 所述表包括拓扑列表处理器项, 用于处理器的每组嵌套处理 器。
     在再一个实施例中, 拓扑列表处理器项还包括指示符, 其指示该组嵌套处理器的 处理器对逻辑分区客户配置有多么专用。
     在一个实施例中, 所述表还包括用于具有所述嵌套处理器的一个或多个嵌套层次 的层级结构的每个嵌套层次的拓扑列表容器项。
     在一个实施例中, STORE SYSTEM INFORMATION 的执行通过外来的处理器上的模拟 来进行。 附图说明 被认为是本发明的主题在说明书的结尾部分被特别指出和清楚地要求。但是, 通 过参照附图阅读下面的说明可更好地理解作为组织和实践方法两者的本发明及其他目标 和优点, 在附图中 :
     图 1 示出了现有技术的主机计算机系统 ;
     图 2 示出了现有技术的模拟的主机计算机系统 ;
     图 3 示出了现有技术的 STSI 机器指令的指令格式 ;
     图 4 示出了现有技术的 STSI 指令的隐式寄存器 ;
     图 5 示出了功能代码表 ;
     图 6 示出了现有技术的 SYSIB 1.1.1 表 ;
     图 7 示出了现有技术的 SYSIB 1.2.1 表 ;
     图 8 示出了现有技术的格式 1 SYSIB 1.2.2 表 ;
     图 9 示出了现有技术的格式 2SYSIB 1.2.2 表 ;
     图 10 示出了根据本发明的 SYSIB 15.1.2 表 ;
     图 11 示出了容器类型 TLE ;
     图 12 示出了 CPU 类型 TLE ;
     图 13 示出了根据本发明的 PTF 机器指令的指令格式 ;
     图 14 示出了 PTF 指令的寄存器格式 ;
     图 15A-15D 示出了现有技术的分区的计算机系统的元件 ;
     图 16 示出了示例性计算机系统 ;
     图 17-19 示出了示例性计算机系统的容器 ; 以及
     图 20 示出了本发明的一个实施例的流程。
     具体实施方式
     在大型机中, 体系结构的机器指令通常作为编译器应用由程序员使用 ( 典型地用 “C” 也有用 Java COBOL、 PL/I、 PL/X、 Fortran 和其他高级语言来写应用 )。这些存储在 存储器介质中的指令可以在 z/Architecture IMB 服务器中被本机执行, 或者在执行其他体 系结构的机器中被执行。它们可以在现有的和将来的 IBM 大型机服务器上以及 IBM 的其他 机器 ( 例如, pSeries 服务器和 xSeries 服务器 ) 上被模拟。 它们可以在使用由 IBM TM Intel AMD 、 Sun Microsystems 和其他公司制造的硬件的品种繁多的机器上运行 Linux 的机器中执行。 除了在 z/Architecture 下的硬件上执行外, Linux 也可以在由 Hercules、 UMX、 FSI( 基础软件公司 ) 或者 Platform Solutions 公司 (PSI) 生产的使用模拟的机器上 被使用, 在上述机器上通常执行是以模拟方式进行的。 在模拟方式中, 模拟软件由本机处理 器执行来模拟被模拟处理器的体系结构。
     本机处理器典型地执行包括固件或者本机操作系统的模拟软件, 以对被模拟处理 器进行模拟。模拟软件负责取得和执行被模拟处理器体系结构的指令。模拟软件维护被模 拟程序计数器以跟踪指令范围。模拟软件可以一次获取一个或多个被模拟机器指令, 并将 一个或多个被模拟机器指令转换为一个相应的本机指令组, 以便由本机处理器执行。这些 被转换的指令可以被高速缓存, 这样可以完成更快的转换。 尽管如此, 模拟软件必须维护被 模拟处理器体系结构的体系结构规则, 以便确保为被模拟处理器编写的操作系统和应用能 正确操作。 而且, 模拟软件必须提供由被模拟处理器体系结构标识的资源, 包括但不限于控 制寄存器、 通用寄存器 ( 通常包括浮点寄存器 )、 动态地址转换功能包括例如段表和页表、 中断机制、 上下文切换机制、 时间 (TOD) 时钟和到 I/O 子系统的体系结构接口, 以便被设计 为运行在被模拟处理器上的操作系统或者应用程序可以在具有模拟软件的本机处理上运 行。
     被模拟的特定指令被解码, 子程序被调用来执行该单个指令的功能。模拟被模 拟处理器的功能的模拟软件功能是例如在 “C” 子程序或驱动器、 或某种其他为特定硬件 提供驱动器的方法中实现的, 本领域技术人员在理解了优选实施例的描述后将具有实现 该模拟软件功能的技能。各种软件和硬件模拟专利, 包括但不限于 : Beausolei 等人的标 题为 “用于硬件模拟的多处理器” (Multiprocessor for hardware emulation) 的专利 US5551013、 Scalzi 等人的标题为 “预处理存储的用于模拟目标处理器上的不兼容指令的 目标例程” (Preprocessing of stored target routines for emulatingincompatible instructions on a target processor) 的专利 US6009261、 Davidian 等人的标题为 “解 码客户指令以直接访问模拟客户指令的模拟例程” (Decoding guest instruction to directly access emulation routines thatemulate the guest instructions) 的 专 利 US5574873、 Gorishek 等人的标题为 “用于允许在系统中运行非本机代码的协处理器 支 持 的 对 称 多 处 理 总 线 和 芯 片 集” (Symmetrical multiprocessing bus and chipset used forcoprocessor support allowing non-native code to run in a system) 的 专利 US6308255、 Lethin 等人的标题为 “用于体系结构模拟的动态优化目标代码译码 器和动态优化目标代码译码方法” (Dynamic optimizing object codetranslator for architecture emulation and dynamic optimizing object codetranslation method) 的 专利 US6463528、 Eric Traut 的标题为 “用于通过主机指令的动态重新编译在主机计算机上模拟客户指令的方法” 的专利 US5790825 以及其他很多方法, 说明了多种已知的方法来完 成针对不同机器的体系结构指令格式的模拟, 以用于本领域技术人员可用的目标机器, 以 及以上提到的专利所使用的商业软件技术。
     参考图 1, 示出了了主机计算机系统 100 的代表性组件。 组件的其他安排也可以计 算机系统中使用, 这在本领域中是公知的。
     主机计算环境优选地基于由位于纽约阿蒙克的国际商业机器公司 (IBM) 提供的 z/Architecture。z/Architecture 在以下文件中被更详细地描述 : z/Architecture 操 作原理, IBM Pub.No.SA22-7832-05, 第六版 (2007 年 4 月 )。基于 z/Architecture 的计 算环境包括, 例如, eServerTM 和 zSeries 它们都来自 IBM
     代表性的主机计算机 100 包括与主存储器 ( 计算机存储器 102) 通信的一个或多 个 CPU 101, 以及到存储设备 111 和用于与其他计算机或者 SAN 等通信的网络 101 的 I/O 接 口。CPU 可能具有用于将程序地址 ( 虚拟地址 ) 转换为存储器的实际地址的动态地址转换 (DAT)103。DAT 典型地包括用于缓存转换的转换后援缓冲器 (TLB)107, 这样以后对计算机 存储器 102 的块的访问不需要地址转换的延迟。 典型地, 在计算机存储器 102 和处理器 101 之间使用高速缓存 109。高速缓存 109 可以是分级的, 具有可用于多个 CPU 的大型高速缓 存和位于大型高速缓存和每个 CPU 之间的更小、 更快 ( 更低级别的 ) 的高速缓存。在一些 实施方式中, 更低级别的高速缓存被划分以为指令获取和数据访问提供单独的低级高速缓 存。在一个实施例中, 由一个指令获取单元 104 经由高速缓存 109 从存储器 102 获取指令。 指令在指令解码单元 (706) 中被解码, 并 ( 在一些实施例中与其他指令一起 ) 被分发到指 令执行单元 108。典型地, 使用几个指令执行单元 108, 例如, 算术执行单元、 浮点执行单元 和分支指令执行单元。指令由执行单元来执行, 根据需要从指令指定的寄存器或存储器访 问操作数。如果操作数将从存储器 102 访问 ( 加载或存储 ), 加载存储单元 105 典型地在被 执行的指令的控制下处理该访问。
     在一个实施例中, 本发明可以由软件 ( 有时候被称为许可内部代码 (LIC)、 固件、 微代码、 毫代码 (milli-code)、 微微代码 (pico-code) 等, 其中任何一个都符合本发明 ) 实 施。 实现本发明的软件程序代码典型地被计算机系统 100 的也称为 CPU( 中央处理单元 )101 的处理器从长期存储介质 111 例如 CD-ROM 驱动器、 磁带驱动器或硬盘驱动器访问。软件程 序代码可以体现在多种与数据处理系统一起使用的已知介质中的任何一种上, 所述介质例 如有软盘、 硬盘驱动器或者 CD-ROM。代码可以在这样的介质上分发, 或者可以通过网络 110 从计算机存储器 102 或一个计算机系统的存储器分发到其他计算机系统, 以供所述其他系 统的用户使用。
     或者, 程序代码可以体现在存储器 102 中, 并由处理器 101 使用处理器总线访问。 这样的程序代码包括操作系统, 其控制各种计算机组件和一个或多个应用程序的功能和交 互。程序单元通常从高密度存储介质 111 页面映射 (page) 到高速存储器 102, 在那里其对 处理器 101 的处理来说是可用的。 在存储器中和物理介质上体现软件程序代码, 并 / 或通过 网络分发软件代码的技术和方法是公知的, 此处不再讨论。程序代码, 当在有形的介质 ( 包 括但不限于电子存储器模块 (RAM)、 闪存、 光盘 (CD)、 DVD、 磁带等 ) 上面创建并存储时, 通常 被称为 “计算机程序产品” 。 计算机程序产品介质典型地可由优选位于计算机系统内的处理 电路读取, 以便由处理电路执行。在图 2 中, 提供了示例性的被模拟主机计算机系统 201, 其模拟主机体系结构的计 算机系统 100。在被模拟主机计算机系统 201 中, 主机处理器 (CPU)208 是被模拟的主机处 理器 ( 或者虚拟主机处理器 ), 且包括模拟处理器 207, 其具有与主机计算机 100 的处理器 101 使用的不同的本机指令集体系结构。被模拟主机计算机系统 201 具有可被模拟处理器 207 访问的存储器 202。在一个示例性实施例中, 存储器 207 被分区为主机计算机存储器 102 部分和模拟例程 203 部分。 根据主机计算机体系结构, 主机计算机存储器 102 对被模拟 主机计算机 201 的程序是可用的。模拟处理器 207 执行不同于被模拟处理器 208 的体系结 构的体系结构指令集中的本机指令, 所述本机指令是从模拟例程存储器 203 获得的, 并且 模拟处理器 207 可以通过利用在顺序和访问 / 解码 (Sequence&Access/Decode) 例程中获 得的一个或多个指令来从主机计算机存储器 102 中的程序中访问用于执行的主机指令, 所 述顺序和访问 / 解码例程可以解码被访问的主机指令以确定用于模拟被访问的主机指令 的功能的本机指令执行例程。
     为主机计算机系统 100 体系结构定义的其他设施可以用体系结构设施例程来模 拟, 所述体系结构设施例程包括例如通用寄存器、 控制寄存器、 动态地址转换、 I/O 子系统支 持和处理器高速缓存等设施。模拟例程也可以利用模拟处理器 207 中可用的功能 ( 诸如通 用寄存器和虚拟地址的动态转换 ) 来提高模拟例程的性能。也可以提供特殊的硬件和卸载 引擎以辅助处理器 207 来模拟主机计算机 100 的功能。
     为了向程序提供拓扑信息, 提供了两条指令。第一条是现有技术指令 STSI(STORE SYSTEM INFORMATION) 的增强, 第二条是新的指令 PFT(PERFORM TOPOLOGY FUNCTION)。
     CPU 拓扑概况 :
     随着新的 IBM eSeries 大型机的产生, 甚至之前, 到节点结构的机器组织结构导致 了非统一存储器访问 (NUMA) 行为 ( 有时候也被称为 “凹凸不平” (lumpiness))。 现有技术的 STSI(STORE SYSTEMINFORMATION) 指令的新的 SYSIB 15.1.2 功能和新的 PERFORMTOPOLOGY FUNCTION(PTF) 指令的目的是向程序提供额外的机器拓扑意识, 从而可以执行某些优化 ( 包括改善的高速缓存命中率 ), 由此提高整体性能。分配给多处理 (MP) 客户配置的主机 CPU 资源的量非常均匀地分布在若干配置的客户 CPU 中。( 客户 CPU 是提供给程序的逻辑 CPU, 所有的客户 CPU 由在实际主机 CPU 上的软件 / 硬件分区支持 )。这样的均匀分布意味 着没有特定的客户 CPU( 或者多个 CPU) 比任何其他任意确定的客户 CPU 更有资格享受任何 额外的主机 -CPU 供应。影响配置的所有 CPU 的客户配置的情况被称为 “水平极化” 。在水 平极化中, 主机 CPU 对客户 CPU 的分配大体是每个客户 CPU 有相同的供应量。当供应不是 专用时, 供应给客户 CPU 的相同的主机 CPU 也可以被用来供应给另一个客户的客户 CPU, 或 者甚至是相同的客户配置的其他客户 CPU。
     当其他客户配置是不同的逻辑分区时, 一个主机 CPU, 当在每个分区都活动时, 典 型地必须更多地访问主存储器, 因为, 由于不得不在多个重定位区域中共享高速缓存, 高速 缓存命中率降低。如果主机 -CPU 供应可以改变平衡, 使得一些主机 CPU 主要地, 或甚至专 有地, 被分配给给定的客户配置 ( 且这成为常规行为 ), 这样高速缓存命中率提高, 性能也 得到提高。这样的不均匀分布则意味着一个或多个客户 CPU, 相比于其他随意确定的、 有资 格获得较少主机 -CPU 供应的客户 CPU, 有资格得到额外的主机 -CPU 供应。 客户配置的这种 情况, 其影响配置的所有 CPU, 被称为 “垂直极化” 。此处提出的体系结构将垂直极化分类为3 级供应资格 : 高级, 中级和低级 :
     ·高级资格保证了大致 100%的主机 CPU 被分配给逻辑 / 虚拟 CPU, 且邻近性被维 持为两者之间的强对应。就逻辑分区的供应而言, 当垂直极化有效时, 专用 CPU 的资格被规 定为高。
     ·中级资格保证了主机 CPU 资源 ( 一个或多个主机 CPU) 的未指定的量被分配给 逻辑 / 虚拟 CPU, 且主机 CPU 的任何剩余能力被认为是闲置部分 (slack), 可被分配给别处。 如果可能的话, 可用闲置部分的最佳情况是将其作为本机闲置部分分配。如果该可用闲置 部分作为远程闲置部分被配置, 就发生不太有利的结果。 也有的情况是, 相比于高级资格设 置的大致 100%, 分配给中级资格的逻辑 CPU 的大致资源百分比更温和得多。
     ·低级资格保证了大致 0%的主机 CPU 被分配给逻辑 / 虚拟 CPU。但是, 如果闲置 部分是可用的, 这样的逻辑 / 虚拟 CPU 仍然可以接收一些 CPU 资源。使用极化的嵌套容器 模型旨在当其应用到请求配置时提供关于机器的节点结构的一定级别的智能, 这样, 通常 地, 主机 CPU 的集群可以被分配给客户 CPU 的集群, 由此尽可能地提高了存储共享, 并最小 化了不同配置在相同的主机 CPU 上实质碰撞。极化和资格指示了客户配置中物理 CPU 到逻 辑 CPU 或者逻辑 CPU 到虚拟 CPU 的关系, 以及分配给客户配置的能力如何在构成该配置的 CPU 之间分配。 历史上, 客户配置被水平地极化。对于无论为配置定义多少客户 CPU, 被分配的主 机 -CPU 资源在所有的客户 CPU 中以公平地、 无特别资格的方式均匀分布。 可以说, 当水平极 化有效时, 逻辑分区中的单个逻辑 CPU 的权重大致等于总配置权重除以 CPU 数量。但是, 随 着 2097 和家用模型的引入, 必须能够以不同的方式分布主机 -CPU 资源, 这被称为配置的垂 直极化, 然后对于客户 CPU 的主机 CPU 供应程度被指示为高级资格、 中级资格和低级资格。 当垂直极化配置的逻辑 / 虚拟 CPU 完全由相同的主机 CPU 支持时, 高级资格有效。当垂直 极化配置的逻辑 / 虚拟 CPU 部分地由主机 CPU 支持时, 中级资格有效。当垂直极化配置的 逻辑 / 虚拟 CPU 没有被任何主机 -CPU 资源保证 ( 除了那些由于闲置部分资源变得可用而 可能变得可用的 ) 时, 低级资格有效。
     CPU 闲置部分
     CPU 资源, 有两种类型的闲置部分 CPU 资源 :
     · 当配置的逻辑 / 虚拟 CPU 没有使用其有资格使用的全部资源时, 本机闲置部分变 得可用, 且这样的闲置部分随后在该 CPU 的配置内被使用。本机闲置部分优先于远程闲置 部分, 因为当在配置内使用闲置部分时, 预期高速缓存上有更好的命中率。
     · 当配置的逻辑 / 虚拟 CPU 没有使用其有资格使用的全部资源时, 远程闲置部分变 得可用, 且这样的闲置部分随后在该 CPU 的配置外被使用。预期远程缓存在高速缓存上表 现出较低的命中率, 但是这仍然优于完全不运行逻辑 / 虚拟 CPU。
     目标是最大化 CPU 高速缓存命中率。对于逻辑分区来说, 物理 -CPU 资源的量由整 个系统加权确定, 而整个系统加权确定分配给每个逻辑分区的 CPU 资源。例如, 在被分配了 与单个 CPU 相当的物理 -CPU 资源且被水平地极化的逻辑 3 路 MP 中, 每个逻辑 CPU 将被独 立调度且由此接收到大约 33%的物理 -CPU 资源。 如果相同的配置被垂直极化, 仅有单个逻 辑 CPU 将运行且可接收大约 100%的分配的物理 -CPU 资源 ( 高级资格 ), 而剩余的两个逻 辑 CPU 通常将不会被调度 ( 低级资格 )。这样的资源分配通常是一种近似。如果仅是为了
     有助于保证程序不在这样的 CPU 上被阻塞 (get stuck), 即使低级资格 CPU 也可接收到一些 资源量。通过提供一种手段使控制程序指示其理解了极化, 并接收每个 CPU 的极化的指示, 以及如果是垂直极化, 资格的级别, 控制程序可以更智能地利用数据结构, 所述数据结构通 常被认为对 CPU 来说是本地的, 而不是对于配置的所有 CPU 可用的。此外, 这样的控制程序 可以避免将工作引向任何低级资格 CPU。所分配的实际物理 -CPU 资源可能不构成整数个 CPU, 因此也有可能在 MP 垂直极化的配置中的一个或多个 CPU 有资格, 但不是高级别, 由此 导致了这种 CPU 具有中级或低级垂直资格。对任何剩余的低级资格的 CPU 来说, 有可能接 收一些主机 -CPU 资源量。例如, 当这样的 CPU 被作为目标时 ( 例如通过 SIGP 顺序, 且闲置 部分主机 -CPU 资源可用 ), 这可能发生。否则, 这样的逻辑 / 虚拟 CPU 可能继续处于未调度 状态, 即使它在其他方面能够被调度。
     优选地, 根据本发明, 为 STORE SYSTEM INFORMATION(STSI) 指令的新 CPU- 类型 “拓扑列表项” (TLE) 定义了 2 位极化字段。用于每个 CPU 的垂直极化资格的等级被指示为 高级、 中级和低级。分配不是一个精确的百分比, 而是有点模糊和试探式的。
     除了将垂直极化作为重新分配权重给客户 CPU 的方式外, 存在另一个概念, 即, 闲 置部分能力 ( 也被称为 “空白” ) 的创建和管理。闲置部分能力在以下情况下创建 :
     ·当其平均利用率 (AU) 跌至 100%以下时 (100-AU), 高级垂直 CPU 贡献于闲置部分。 ·当其平均利用率 (AU) 跌至 M%以下时 (M-AU > 0), 具有主机 CPU 的 M%分配供 应的中级垂直 CPU 贡献于闲置部分。
     ·低级垂直 CPU 不贡献于闲置部分。
     ·高级垂直 CPU 不是闲置部分的消费者。
     STORE SYSTEM INFORMATION 指令
     STORE SYSTEM INFORMATION 指令格式的一个示例性实施例
     图 3 包括操作码字段 ‘B27D’ 、 基址寄存器字段 B2 和有符号位移字段 D2。指令操 作码告知执行指令的机器存在与指令关联的隐式通用寄存器 ‘0’ 和 ‘1’ 。通过将有符号 位移字段值添加到由基址字段指定的通用寄存器的内容, 得到第二操作数的地址。在一个 实施例中, 当基址寄存器字段是 ‘0’ 时, 直接使用移位字段的符号扩展值 (sign extended value) 来指定第二操作数。当获取并执行 STORE SYSTEM INFORMATION 指令时, 根据通用 寄存器 0 中的功能代码, 或者是将执行程序的配置级别的标识放置在通用寄存器 0 中, 或者 是将关于配置的一个或多个组件的信息存储在系统信息块 (SYSIB) 中。当请求关于一个或 多个组件的信息时, 通过通用寄存器 0 的更多内容和通用寄存器 1 的内容来指定该信息。 SYSIB, 如果有的话, 由第二操作数地址指定。机器被认为提供一级、 两级或三级配置。这些 级是 :
     1. 基础机, 它是似乎以基础模式运行的机器。
     2. 逻辑分区, 如果机器以 LPAR( 逻辑分区 ) 模式运行, 该分区被提供。 逻辑分区是 由 LPAR 管理程序提供的, 该管理程序是机器的一部分。即使当机器以 LPAR 模式操作时, 基 础机也存在。
     3. 虚拟机, 由被基础机或在逻辑分区中执行的虚拟机 (VM) 控制程序提供。虚拟 机其本身可执行提供更高级别 ( 更远离基础机 ) 的虚拟机的 VM 控制程序, 这也被认为是级
     别 -3 配置。术语基础模式、 LPAR 模式、 逻辑分区、 管理程序和虚拟机, 以及与这些术语特定 相关的任何其他术语, 并没有在本公开文本中被定义 ; 它们是在机器手册中被定义的。 由级 别 -1 配置 ( 基础机 ) 执行的程序可以请求关于该配置的信息。由级别 -2 配置 ( 在一个逻 辑分区中 ) 执行的程序可以请求关于逻辑分区的信息和关于底层基础机的信息。 由级别 -3 配置 ( 虚拟机 ) 执行的程序可以请求关于虚拟机的信息和关于一个或两个底层级别的信 息; 基础机总是位于底层, 逻辑分区可以是或不是位于基础机和虚拟机之间。 当请求关于虚 拟机的信息时, 提供关于执行程序的配置的信息和关于任何一个或多个底层虚拟机级别的 的信息。在任一种情况中, 如果一个级别实现该指令, 则仅提供关于该级别的信息。
     确定操作的功能代码是通用寄存器 0 的 32-35 位位置的无符号二进制整数, 且如 下所示 :
     功能代码 请求的信息 :
     0 当前配置级别数
     1 关于级别 1 的信息 ( 基础机 )
     2 关于级别 2 的信息 ( 逻辑分区 )
     3 关于级别 3 的信息 ( 虚拟机 )
     4-14 无; 保留代码
     15 当前配置级别信息
     无效的功能代码
     执行程序的配置的级别被称为当前级别。 由非零功能代码指定的配置级别被称为 指定级别。 当指定级别的数字高于当前级别时, 则功能代码被称为是无效的, 条件代码被设 为 3, 且不执行其他动作 ( 包括检查 )。
     有效的功能代码
     当功能代码等于或小于当前级别的数字时, 它被称为有效的。 在这种情况下, 通用 寄存器 0 的 36-55 位和通用寄存器 1 的 32-47 位必须是 0 或 15 ; 否则, 识别出规范异常。通 用寄存器 0 和 1 的 0-31 位总是被忽略。当功能代码是 0 时, 标识当前配置级别 (1 是基础 机, 2 是逻辑分区, 或者 3 是虚拟机 ) 的无符号二进制整数被放置在通用寄存器 0 的 32-35 位位置, 条件代码被设为 0, 且不执行进一步的动作。 当功能代码是有效且非零的, 通用寄存 器 0 和 1 包含关于所请求的信息的额外规范, 如下所示 :
     · 通用寄存器 0 的 56-63 位位置包含无符号二进制整数, 被称为选择器 -1, 其指定 所指定配置的一个或多个组件。
     · 通用寄存器 1 的 48-63 位位置包含无符号二进制整数, 被称为选择器 -2, 其指定 所请求信息的类型。
     通用寄存器 0 和 1 的内容如图 4 所示。
     当功能代码是有效的且非零时, 信息可以存储在起始于第二操作数位置的系统信 息块 (SYSIB) 中。SYSIB 是 4K 的字节, 且必须起始于 4K- 字节边界 ; 否则, 可能识别出规范 异常, 这取决于选择器 -1 和选择器 -2 以及取决于是否由于参考 SYSIB 而识别出访问异常。
     选择器 -1 可以具有如下的值 :
     选择器 1 请求的信息
     0 无; 保留选择器 1 关于由功能代码指定的配置级别的信息 2 关于在指定的配置级别中的一个或多个 CPU 的信息 3-255 无; 保留选择器 当选择器 1 是 1 是, 选择器 2 可以具有如下的值 : 当选择器 1 是 1 时, 选择器 2 请求的信息 0 无; 保留选择器 1 关于指定的配置级别的信息 2 关于指定的配置级别的拓扑信息 3-65,535 无; 保留选择器 当选择器 1 是 2 时, 选择器 2 可具有如下的值 : 当选择器 1 是 2 时, 选择器 2 请求的信息 0 1无; 保留选择器
     关于在指定的配置级别中执行程序的
     CPU 的信息
     2 关于在指定的配置级别中的
     所有 CPU 的信息
     3-65,535 无; 保留选择器
     如图 5 所示, 只有功能代码、 选择器 -1 和选择器 -2 的特定组合才是有效的。
     当功能代码、 选择器 -1、 选择器 -2 的指定组合是无效的 ( 与图 5 所示的不同 ), 或 者如果其是有效的, 但由于指定的级别不实现或不完全实现指令或由于级别的必要部分没 有被安装或初始化因而请求的信息是不可用, 且如果没有识别出异常, 条件代码被设为 3。 当功能代码是非零的、 组合是有效的、 请求的信息是可用的、 且没有异常时, 请求的信息被 存储在第二操作数地址处的系统信息块 (SYSIB) 中。
     一些或所有 SYSIB 可以存储之前被获取。
     可通过 “SYSIB fc.s1.s2” 在引用中标识 SYSIB, 其中 “fc” 、 “s1” 和 “s2” 分别是 功能代码、 选择器 -1 和选择器 -2 的值。
     以下部分通过附图和相关文本描述了定义的 SYSIB。 在图中, 左边示出的偏移量是 字值 ( 一个字包括 4 个字节 )。 “配置” 是指由功能代码指定的配置级别 ( 关于该配置级别 的信息被请求 )。
     SYSIB 1.1.1( 基础机配置 )
     SYSIB 1.1.1 具有图 6 所示的格式, 其中字段具有如下意义 :
     保留的 : 字 0-7、 13-15、 29-63 的内容被保留, 且被存储为 0。字 64-1023 的内容被 保留且可被存储为 0 或维持不变。
     制造商 : 字 8-11 包含配置的制造商的 16 字符 (0-9 或大写的 A-Z) 的 EBCDIC 名 字。名字左对齐, 并在必要时, 尾部留出空白。
     类型 : 字 12 包含配置的 4 字符 (0-9)EBCDIC 类型号码。( 这在 STORECPU ID 的定义中被称为机器类型号码。)
     模型 - 能力标识符 : 字 16-19 包含配置的 16 字符 (0-9 或者大写的 A-Z)EBCDIC 模 型 - 能力标识符。模型 - 能力标识符左对齐, 且在必要时, 尾部留出空白。
     序列码 : 字 20-23 包含配置的 16 字符 (0-9 或者大写的 A-Z)EBCDIC 序列码。序列 码右对齐, 且在必要时前部留出 EBCDIC 零。
     制造工厂 : 字 24 包含 4 字符 (0-9 或者大写的 A-Z)EBCDIC 代码, 其标识配置的制 造工厂。该代码左对齐, 且在必要时, 尾部留出空白。
     模型 : 当字 25 不是二进制零时, 字 25-28 包含配置的 16 字符 (0-9 或者大写的 A-Z)EBCDIC 模型标识。模型标识左对齐, 且在必要时尾部留出空白。( 这在 STORE CPU ID 的第 10-111 页的编程注释 4 中被称为型号。) 当字 25 是二进制零时, 字 16-19 的内容同时 表示模型能力标识符和模型。
     编程注释 :
     1.SYSIB1.1.1 的字段与在出版物 《常见 I/O 设备命令和自我描述》 (Common I/ O-Device Commands and Self Description) 中描述的节点描述符的字段类似。 但是, SYSIB 字段的内容可能不与相应的节点描述符字段的内容一致, 因为 SYSIB 字段 :
     ·允许更多字符
     ·在允许的字符类型方面更灵活。
     ·提供在字段内对齐方式不同的信息
     ·可能不使用相同的方法来确定字段的内容, 诸如序列码字段
     2. 节点描述符中的模型字段对应于 STSI 模型字段的内容, 而不是 STSI 模型 - 能 力 - 标识符字段的内容。
     3. 模型字段指定了机器的模型 ( 即, 物理模型 ) ; 模型能力标识符字段指定了可用 于在模型的系统库公开中定位能力或性能语句的记号。
     SYSIB 1.2.1( 基础机 CPU)
     SYSIB 1.2.1 具有如图 7 所示的格式, 其中字段具有以下含义 :
     保留 : 字 0-9 的内容、 字 25 的字节 0 和 1 以及字 26-63 被保留并被存储为 0。字 64-1023 的内容被保留并可被存储为 0 或保持不变。
     序列码 : 字 20-23 包含了配置的 16 字符 (0-9 或者大写的 A-Z)EBCDIC 序列码。该 码右对齐, 且在必要时前部留出 EBCDIC 零。
     制造工厂 : 字 24 包含了 4 字符 (0-9 或者大写的 A-Z)EBCDIC 码, 其标识了配置的 制造工厂。该码左对齐, 且在必要时, 尾部留出空白。
     CPU 地址 : 字 25 的字节 2 和 3 包含 CPU 地址, 通过该地址, CPU 在多处理配置中被 识别。 CPU 地址是 16 位的无符号二进制整数, 当程序被在基础模式中运行的机器执行时, 该 CPU 地址与由 STORE CUPADDRESS 存储的地址一样。
     编程注释 :
     在相同配置中的多个 CPU 具有相同的序列码, 且有必要使用其他信息, 例如 CPU 地 址, 来建立唯一 CPU 身份。为基础机 CPU 和逻辑分区 CPU 而返回的序列码是相同的, 且具有 与为基础机配置而返回的序列码一样的值。
     SYSIB 1.2.2( 基础机 CPU)字 0 的字节 0 中的格式字段决定了 SYSIB 的格式。当格式字段具有 0 值时, SYSIB 1.2.2 具有如图 8 所示的格式 -0 布局。当格式字段具有值 1 时, SYSIB 1.2.2 具有如图 9 所示的格式 -1 布局。
     保留 :
     当格式字段包含 0 值时, 字 0 的字节 1-3 的内容和字 1-6 被保留并被存储为 0。当 格式字段包含值 1 时, 字 0 的字节 1 的内容和字 1-6 被保留且被存储为 0。当需要少于 64 字来包含用于所有 CPU 的信息时, 在格式 -0SYSIB 中的调整 - 因素列表或者格式 -1 SYSIB 中的备用 - 调整 - 因素列表之后多达 63 字的 SYSIB 部分被保留并被存储为 0。字 64-1023 的内容被保留并可被存储为 0 或者维持不变。当需要 64 或更多字来包含用于所有 CPU 的 信息时, 格式 -0 SYSIB 中的调整 - 因素列表或者格式 -1 SYSIB 中的备用 - 调整 - 因素列 表之后多达 1023 字的 SYSYIB 部分被保留并可被存储为 0 或者维持不变。
     格式 :
     字 0 的字节 0 包含 8 位的无符号二进制整数, 其指定 SYSIB 1.2.2 的格式。
     备用 -CPU- 能力偏移 :
     当格式字段具有值 1 时, 字 0 的字节 2-3 包含 16 位的无符号二进制整数, 其指定 SYSIB 中的备用 -CPU- 能力字段的字节偏移量。
     次级 CPU 能力 :
     字 7 包含 32 位的无符号二进制整数, 当该整数不是 0 时, 其指定可应用于配置中 特定类型的 CPU 的次级能力。没有关于用来产生该整数的算法的正式描述, 除了它与用于 产生 CPU 能力的算法相同外。该整数被用作一个 CPU 的能力的指示, 该 CPU 的能力相对于 其他 CPU 模型的能力, 且也相对于在模型内的其他 CPU 类型的能力。能力值适用于配置中 的一个或多个可用 CPU 类型的每一个 CPU。 即, 配置中的一种或多种可用类型的所有 CPU 都 具有相同的能力。当该值是 0 时, 配置中的任何 CPU 类型的所有 CPU 都具有相同的能力, 如 CPU 能力所指定的。次级 CPU 能力可以是或不是与 CPU 能力值相同的值。多处理 -CPU- 能 力 - 调整因素也可应用于能力由次级 CPU 能力指定的 CPU。
     CPU 能力 :
     如果字 8 的 0-8 位是 0, 则该字包含位于 0 < I < 223 范围内的 32 位的无符号二 进制整数 (I), 其指定配置中的一个 CPU 的能力。如果字 8 的位 0-8 是非零, 则该字包含 32 位的二进制浮点短格式数字, 而不是 32 位的无符号二进制整数。不管什么编码, 更低的值 指示相应更高的 CPU 能力。除此之外, 没有关于用来产生该值的算法的正式描述。该值被 用作 CPU 相对于其他 CPU 模型能力的能力的指示。 能力值应用于配置中的每个非次级 CPU。 即, 配置中所有非次级 CPU 具有相同的能力。
     CPU 总数
     字 9 的字节 0 和 1 包含了 16 位的无符号二进制整数, 其指定配置中的 CPU 总数。 该数字包括了配置状态、 待机状态或者保留状态中的所有 CPU。
     配置 CPU 数
     字 9 的字节 2 和 3 包含 16 位的无符号二进制整数, 其指定配置状态中的 CPU 的数 量。当 CPU 在配置中且可被获取以用于执行程序时, CPU 处于配置状态。
     待机 CPU 数字 10 的字节 0 和 1 包含 16 位的无符号二进制整数, 其指定待机状态中的 CPU 的 数量。当 CPU 在配置中、 不可被获取以用于执行程序但可通过发出指令将其放置到配置状 态而使其可用时, CPU 处于待机状态。
     保留的 CPU 数
     字 10 的字节 2 和 3 包含 16 位的无符号二进制整数, 其指定保留状态中的 CPU 的 数量。当 CPU 在配置中、 不可被获取以用于执行程序且不可通过发出指令将其放置到配置 状态而使其可用时, CPU 处于保留状态。( 有可能通过手动操作, 将一个保留的 CPU 置于待 机或配置状态。)
     多处理 CPU- 能力调整因素
     以字 11 的字节 0 和 1 开始, SYSIB 包含一系列连续的 2 字节字段, 每个字段包含 16 位的无符号二进制整数, 其用于为 CPU- 能力字段中包含的值形成调整因素 ( 分数 )。这 样的分数是通过根据以下方法中的一种使用第一 2 字节字段的值 (V) 而产生的 :
     ·如果 V 处于 0 ≤ V ≤ 100 的范围内, 指示 100 的分母, 其产生分数 V/100。
     ·如果 V 处于 101 ≤ V ≤ 255 的范围内, 指示 255 的分母, 其产生分数 V/255。
     · 如果 V 处于 255 ≤ V ≤ 65536 的范围内, 指示 65536 的分母, 其产生分数 V/65536。
     由此, 通过将 2 字节字段的内容除以所指示的分母, 产生由每个 2- 字节字段表示 的分数。调整 - 因素字段的数量比在 CPU 总数字段中指定的 CPU 数量少一个。调整 - 因素 字段对应于具有越来越多处于配置状态中的 CPU 的配置。第一调整 - 因素字段对应于具有 两个处于配置状态的 CPU 的配置。每个相继的调整 - 因素字段对应于具有处于配置状态的 下述 CPU 数量的配置, 该 CPU 数量比用于前一字段的 CPU 数量要多一个。
     备用 CPU 能力 :
     当 格 式 字 段 具 有 值 1 时, 如 果 字 N 的 位 0-8 是 零, 则 该 字 包 含 32 位 的、 位于 23 0 ≤ I ≤ 2 范围内的无符号二进制整数 (I), 其指定配置中的一个 CPU 的已宣告能力。如 果字 N 的位 0-8 是非零的, 该字包含 32 位的二进制浮点短格式数字, 而不是 32 位的无符号 二进制整数。不管什么编码, 更低的值指示相应更高的 CPU 能力。除此之外, 没有关于用来 产生该值的算法的正式描述。该值被用作相对于其他 CPU 模型的已宣告能力的该 CPU 的已 宣告能力的指示。备用 - 能力值应用于配置中的每个 CPU。即, 配置中的所有 CPU 具有相同 的备用能力。
     备用多处理 CPU- 能力调整因素 :
     以字 N+1 的字节 0 和 1 开始, SYSIB 包含一系列连续的 2 字节字段, 每个字段包 含 16 位的无符号二进制整数, 其用于为备用 -CPU- 能力字段中包含的值形成调整因素 ( 分 数 )。这样的分数是根据以下方法中的一种通过使用第一 2 字节字段的值 (V) 而产生的 :
     ·如果 V 处于 0 ≤ V ≤ 100 的范围内, 指示 100 的分母, 其产生分数 V/100。
     ·如果 V 处于 101 ≤ V ≤ 255 的范围内, 指示 255 的分母, 其产生分数 V/255。
     · 如果 V 处于 256 ≤ V ≤ 65536 的范围内, 指示 65536 的分母, 其产生分数 V/65536。
     因此, 通过将 2 字节字段的内容除以所指示的分母, 产生由每个 2 字节字段代表的 分数。 备用 - 调整 - 因素字段的数量比 CPU 总数字段中指定的 CPU 的数量少一个。 备用 - 调 整 - 因素字段对应于具有处于配置状态中的、 越来越多的 CPU 的配置。 第一备用 - 调整 - 因 素字段对应于具有两个处于配置状态的 CPU 的配置。每个相继的备用 - 调整 - 因素字段对应于具有处于配置状态的下述 CPU 数量的配置, 该 CPU 数量比用于前一个字段的 CPU 的数 量要多一个。
     SYSIB 15.1.2( 配置拓扑 )
     SYSIB 15.1.2 具有图 10 所示的格式。其字段具有以下含义 :
     保留 : 字 0 的字节 0-1、 字 2 的字节 2 和字 3 的内容被保留并被存储为 0。 字 N-1023 的内容被保留并可被存储为 0 或维持不变。
     长度 : 字 0 的字节 2-3 包含 16 位的无符号二进制整数, 其值是整个 SYSIB 15.1.2 的字节数。仅仅拓扑列表的长度是由从字 0 的字节 2-3 中的长度值减去 16 而确定的。图 10 中的 N 是通过对公式 N = Length/4 求值而确定的。
     Mag1-6 : 字和字的字节 0-1 构成了 6 个单字节的字段, 其中每个字节的内容指示了 在相应嵌套层次的容器 - 类型拓扑 - 列表项 (TLE) 或者 CPU- 类型 TLE 的最大数。CPU- 类 型 TLE 总是仅在 Mag1 级别被发现。 此外, Mag1 值也指定了可由 Mag2 级别的容器 - 类型 TLE 代表的 CPU 的最大数。当嵌套层次的值大于 1 时, 高于嵌套层次 1 的包含嵌套层次仅被容 器 - 类型 TLE 占用。对拓扑的动态改变可能改变 TLE 的数量和位于 Mag1 级别的 CPU 的数 量, 但是由 Mag1-6 字段的值表示的限度在机器的模型系列内不发生变化。 拓扑是结构化的项列表, 其中一个项定义一个或多个 CPU, 或以其他方式包含到嵌 套结构中。以下描述了量级 (magnitude) 字段的含义 :
     当机器的所有 CPU 是对等体 (peer) 且不存在包含组织时, 除了整个中央处理复合 体本身外, 嵌套层次的值是 1, Mag1 是唯一的非零量级字段, 且存储的 CPU- 类型 TLE 的数量 不超过 Mag1 的值。
     当机器的所有 CPU 被再分为对等体组, 使得存在一个包含级别时, 嵌套层次的值 是 2, Mag1 和 Mag2 是唯一的非零量级字段, 存储的容器 - 类型 TLE 的数量不超过 Mag2 的 值, 且存储在每个容器内的 CPU- 类型 TLE 的数量不超过 Mag1 的值。
     当嵌套层次的值落于 3-6 的范围内时, Mag3-6 字节被类似地使用 ( 以从右到左的 方向进行 )。
     MNest : 字 2 的字节 3 指定了当继续允许客户程序存在时, 配置可能被扩展到的拓 扑的嵌套层次。最大的 MNest 值是 6 ; 最小的是 1。如果 MNest 是 1, 没有实际的 TLE 嵌套 结构, Mag1 是 Mag1-6 范围内的唯一非零字段, 且仅 CPU- 类型 TLE 在拓扑列表中被表现。 MNest 值指示了以在字 2 的字节 (Mag1) 的量级字段开始的非零量级值的数量, 当 MNest 大 于 1 时向左边进行, 且将剩余的量级字段存储为 0。
     MNest 的值是最大可能的嵌套。没有动态配置变化超过这个限度。
     拓扑列表 : 图 10 的位于 4 到 N-1 范围内的字指定了一个或多个拓扑列表项 (TLE) 的列表。每个 TLE 是 8 字节或 16 字节的字段 ; 由此, N 是偶数的字, 而一个推论是 TLE 总是 在双字边界上开始。
     拓扑列表项 : 拓扑列表中的第一 TLE 在等于 MNest-1 的嵌套层次开始。整个拓扑 列表代表指定 SYSIB 15.1.2 的 STSI 指令的发出者的配置 ; 没有使用最外层的容器 TLE 项, 因为其对整个列表和整个配置来说将是冗余的。因此, 最高的嵌套层次可具有多于一个的 对等体容器。
     图 11 和 12 示出了 TLE 的类型, 其中字段具有如下释义 :
     嵌套层次 (NL) : 字 0 的字节 0 指定了 TLE 嵌套层次。 NL 含义0 TLE 是 CPU- 类型 TLE
     1-5 TLE 是容器 - 类型 TLE
     存储在拓扑列表中或父容器中的第一个容器 - 类型 TLE 具有范围在 1-255 之间的 容器 -ID。 如果在同一个父中存在兄弟容器, 它们按照容器 ID 的升序顺序进行, 可以是或不 是连续的, 最大值为 255。
     06-FF 保留
     兄弟 TLE 具有下述嵌套层次值, 其相当于紧邻的父 TLE 的嵌套层次的值减去 1, 或 MNest 的值减去 1 的, 这是因为紧邻的父是拓扑列表而不是 TLE。
     保留, 0: 对于容器 - 类型 TLE, 字 0 的字节 1-3 和字 1 的字节 0-2 被保留并被存储 为 0。对于 CPU- 类型的 TLE, 字 0 的字节 1-3 和字 1 的位 0-4 被保留并被存储为 0。
     容器 ID :
     容器 - 类型 TLE 的字 1 的字节指定了 8 位的无符号二进制整数, 其值是容器的标 识符。用于 TLE 的容器 ID 在同一个父容器内是唯一的。
     专用 (D) :
     CPU- 类型 TLE 的字 1 的位 5, 当它是 1 时, 指示由 TLE 表示的一个或多个 CPU 是专 用的。当 D 是 0 时, TLE 的一个或多个 CPU 不是专用的。
     极化 (PP)
     CPU- 类型的 TLE 的字 1 的位 6-7 指定了极化值, 且当极化是垂直的时, 垂直极化的 度也被称为由 TLE 代表的相应 CPU 的资格 ( 高级、 中级和低级 )。使用以下的值 :
     PP 意义 :
     0 TLE 所代表的一个或多个 CPU 被水平极化。
     1 TLE 所代表的一个或多个 CPU 被垂直极化。
     资格为低级。
     2 TLE 所代表的一个或多个 CPU 被垂直极化。
     资格为中级。
     3 TLE 所代表的一个或多个 CPU 被垂直极化。
     资格为高级。
     极化仅在使用共享的主机处理器并且处理被分配给配置的资源如何被应用到配 置的所有 CPU 的逻辑和虚拟多处理配置中有意义。当水平极化有效时, 配置的每个 CPU 被 保证大致相同的资源量。当垂直极化有效时, 配置的 CPU 被分为 3 级资源资格 : 高级、 中级 和低级。
     子系统复位和指定 ESA/390 模式的 SIGP 设置 - 体系结构顺序 (set-architecture order) 的成功执行都将配置及其所有的 CPU 置于水平极化中。 立刻受到影响的 CPU 是那些 处于配置状态的 CPU。 当处于待机状态的 CPU 被配置时, 它请求配置的当前极化并使得该配 置的拓扑变化被识别。
     专用 CPU 被水平极化或垂直极化。 当专用 CPU 被垂直极化时, 资格总是高级的。 因此, 当 D 为 1 时, PP 是二进制 00 或者二进制 11。
     CPU 类型 :
     CPU- 类型 TLE 的字 1 的字节 1 指定了 8 位的无符号二进制整数, 其值是由 TLE 代 表的一个或多个 CPU 的 CPU 类型。CPU- 类型值指定了主要 CPU 类型或任一可能的次级 CPU 类型。
     CPU 地址起始点 :
     CPU- 类型 TLE 的字 1 的字节 2-3 指定了 16 位的无符号二进制整数, 其值是由 CPU 掩码表示的 CPU 范围内的第一 CPU 的 CPU 地址, 且这些 CPU 的存在由 CPU 掩码中的位位置 0 的值表示。CPU- 地址起始点可被 64 整除。当在由 CPU 掩码中的位位置 0 表示的 CPU 上 执行 STORE CPUADDRESS(STAP) 指令时, CPU- 地址起始点的值与该指令所存储的值一样。
     CPU 掩码 :
     CPU- 类型 TLE 的字 2-3 指定了 64 位的掩码, 其中每个位位置表示一个 CPU。 CPU- 地 址起始点字段的值加上 CPU 掩码中的位位置等于相应 CPU 的 CPU 地址。当 CPU 掩码位是零 时, 相应的 CPU 不由 TLE 所表示。CPU 或者不在配置中, 或者必须由另一个 CPU- 类型 TLE 表 示。
     当 CPU 掩码位是 1 时, 相应的 CPU 具有由 TLE 指定的修饰符 - 属性值, 在配置的拓 扑中, 且不出现在拓扑的任何其他 TLE 中。
     因此, 例如, 如果 CPU- 地址起始点是值 64, 且 CPU 掩码的位位置 15 是 1, 则 CPU 79 位于配置中, 且具有由 TLE 指定的 CPU 类型、 极化、 资格和专用。
     TLE 排序 (ordering) :
     施加到 CPU- 类型 TLE 的修饰符属性是 CPU 类型、 极化、 资格和专用。极化和资格 ( 对于垂直极化而言 ) 被认为是单个属性, 尽管具有 4 个可能的值 ( 水平、 垂直 - 高级、 垂 直 - 中级和垂直低级 )。
     单个的 CPU TLE 足够用来表示多达 64 个 CPU, 这些 CPU 都具有相同的修饰符 - 属 性值。
     当存在多于 64 个 CPU, 或者 CPU 地址的整个范围未被单个 CPU- 地址起始点覆盖, 且修饰符 - 属性值是常数时, 如果必要的话, 以 CPU- 地址起始点的升序次序为每个 CPU- 地 址起始点存储一个单独的兄弟 CPUTLE。 每个存储的这样的 TLE 具有至少一个被表示的 CPU。 一个或多个这样的 CPU TLE 的集合被称为 CPU-TLE 集。
     当存在多个 CPU 类型时, 以 CPU 类型的升序次序为每个 CPU 类型存储一个单独的 CPU-TLE 集。
     当存储多个极化和资格值时, 以极化值和度 ( 垂直高级、 中级、 低级和水平 ) 的升 序次序为每个值存储一个单独的 CPU-TLE 集。当它们存在时, 给定 CPU 类型的所有的极化 CPU-TLE 集在下一个 CPU 类型的下一个 CPU-TLE 集之前被存储。
     当同时存在专用和非专用 CPU 时, 为每个 CPU 存储一个单独的 CPU-TLE 集, 专用的 出现在非专用的之前。所有的 TLE 都以深度优先遍历被排序, 其中从主要到次要的排序顺 序如下所示 :
     1.CPU 类型
     a. 最低的 CPU- 类型值b. 最高的 CPU- 类型值
     2. 极化 - 资格
     a. 垂直高级
     b. 垂直中级
     c. 垂直低级
     d. 水平
     3. 专用 ( 在可用时 )
     a. 专用
     b. 非专用
     根据 CPU- 地址起始点和父容器内的兄弟 CPU TLE 的修饰符属性的排序是根据以 下列表完成的, 其从最高到最低来进行。
     1. 最低 CPU- 类型值的 CPU-TLE 集, 垂直高级, 专用
     2. 最低 CPU- 类型值的 CPU-TLE 集, 垂直高级, 非专用
     3. 最低 CPU- 类型值的 CPU-TLE 集, 垂直中级, 非专用
     4. 最低 CPU- 类型值的 CPU-TLE 集, 垂直低级, 非专用
     5. 最低 CPU- 类型值的 CPU-TLE 集, 水平, 专用
     6. 最低 CPU- 类型值的 CPU-TLE 集, 水平, 非专用
     7. 最高 CPU- 类型值的 CPU-TLE 集, 垂直高级, 专用
     8. 最高 CPU- 类型值的 CPU-TLE 集, 垂直高级, 非专用
     9. 最高 CPU- 类型值的 CPU-TLE 集, 垂直中级, 非专用
     10. 最高 CPU- 类型值的 CPU-TLE 集, 垂直低级, 非专用
     11. 最高 CPU- 类型值的 CPU-TLE 集, 水平, 专用
     12. 最高 CPU- 类型值的 CPU-TLE 集, 水平, 非专用
     其他 TLE 规则 :
     容器 - 类型 TLE 位于范围 1-5 的嵌套层次中。
     CPU- 类型 TLE 位于嵌套层次 0 中。
     拓扑列表或者给定父容器中的兄弟容器 - 类型 TLE 的数量不超过对应于所述兄弟 的嵌套层次的量级字节 (Mag2-6) 的值。
     由父容器的一个或多个 CPU- 类型 TLE 表示的 CPU 的数量不超过 Mag1 量级字节的 值。
     TLE 的内容被定义如下 :
     如果 TLE 是容器 - 类型 TLE, 其内容是一个紧跟在父 TLE 后的列表, 由一个或多个 子 TLE 组成, 每个子 TLE 具有比父 TLE 或拓扑列表末端的嵌套层次少 1 的嵌套层次。如果 TLE 是 CPU- 类型 TLE, 其内容是一个或更多个 CPU, 如被 CPU TLE 的其他字段标识的那样。
     当一嵌套层次的第一个 TLE 是 CPU 项时, 已达到最大的嵌套层次 0。
     编程注释 :
     描述了拓扑列表的一种可能的检验过程。在拓扑列表的检验开始前, 当前 -TLE 指 针被初始化以引用拓扑列表中的第一或最高 TLE, 在先 -TLE 指针被初始化为空, 然后 TLE 以 从上到下的顺序被检验。随着拓扑列表检验的进行, 通过将当前 TLE 指针增加它指向的当前 TLE 的大小, 当 前 TLE 指针被推进。通过将 8 加到当前 -TLE 指针, 容器 - 类型 TLE 被推进。通过将 16 加 到当前 -TLE 指针, CPU- 类型 TLE 被推进。推进当前 -TLE 指针的过程包括, 恰好在其被递 增前, 将其值保存为在先 -TLE 指针。如果拓扑列表没有 TLE, 则不进行 TLE 检验。
     用以下步骤来概要说明检验过程 :
     1. 如果当前 -TLE 嵌套层次是 0, 且在先 -TLE 嵌套层次是空或 1, 则当前 TLE 表示 一组一个或多个 CPU- 类型 TLE 中的第一个 CPU- 类型 TLE。程序应该执行当首先观测到新 的一组一个或多个 CPU 时任何适当的动作。
     2. 如果当前 -TLE 嵌套层次是 0, 且在先 -TLE 嵌套层次是 0, 则当前 TLE 表示一组 CPU- 类型 TLE 中随后的一个 CPU- 类型 TLE, 该组 CPU- 类型 TLE 表示先前在步骤 1 或 2 中 所观测到 CPU 的兄弟。程序应当执行当一个或多个 CPU 的现有兄弟组的大小增加时任何适 当的动作。进入到步骤 5。
     3. 如果当前 -TLE 嵌套层次不是 0, 且在先 -TLE 嵌套层次是 0, 则在先 TLE 表示一 组一个或多个 CPU- 类型 TLE 中的最后或仅有的 CPU- 类型 TLE。程序应当执行当一个或多 个 CPU 的现有组完成时任何适当的动作。
     4. 进入到步骤 5。
     通过排除, 这将是当前 -TLE 嵌套层次不是 0, 而且在先 -TLE 嵌套层次不是 0 的情 况。 如果当前 -TLE 嵌套层次小于在先 -TLE 嵌套层次, 拓扑 - 列表遍历的方向朝向 CPU- 类型 TLE。 如果当前 -TLE 嵌套层次大于在先 -TLE 嵌套层次, 拓扑 - 列表遍历的方向离开 CPU- 类 型 TLE。 容器 - 类型 TLE 被遍历, 导致或者 (1) 在整体拓扑中作为单独一组的另一组 CPU- 类 型 TLE ; 或者 (2) 拓扑列表的结束。在任一种情况下, 除了进行到下一个 TLE 之外, 不需要 特定的处理。
     5. 基于当前 TLE 的类型进行到下一个 TLE 位置。如果推进的当前 -TLE 指针相当 于拓扑列表的结尾 :
     a. 不再存在任何类型的 TLE。
     b. 如果在先 -TLE 嵌套层次是 0, 程序应当执行当一个或多个 CPU 的现有组完成时 任何适当的动作。
     c. 检验完成。
     否则, 进入到步骤 1。
     在一个示例性实施方式中, 图 16 的计算机系统包括两个物理框架 ( 框架 1 和框架 2)。每个框架包含两个逻辑板 ( 板 1 和板 2)、 主存储器 ( 存储器 ) 和用于与外围设备和网 络通信的 I/O 适配器 (I/O 通道 1 和 I/O 通道 2)。每个板包括两个多芯片模块 ( 模块 1、 模 块 2、 模块 3 和模块 4)。每个多芯片模块包括两个处理器 (CPU1、 CPU2、 CPU3、 CPU4、 CPU5、 CPU6、 CPU7 和 CPU8)。每个模块还包括一个二级高速缓存 ( 高速缓存 1、 高速缓存 2、 高速缓 存 3 和高速缓存 4)。每个处理器 ( 中央处理单元或者 CPU) 包括级别 -1 高速缓存和转换后 援缓冲器 (TLB)。该 TLB 在动态地址转换期间缓存地址转换信息。
     根据本发明 ( 图 17、 18 和 19), 计算机系统的组件根据接近度被分配给 “容器” 。 因 为每个模块的 CPU 彼此之间的接近度最亲密, 每个模块被分配了最内部的容器 6、 7、 8 和 9。 由于模块被封装在板上, 各个板的模块被分配给下一级别的容器 4 和 5。 下一较高接近度的分组是框架。一个框架的板被分配给表示该框架的容器 ( 容器 2 和容器 3)。整个系统由容 器 1 表示。
     可见, 在同一模块上的两个 CPU, 例如 CPU1 和 CPU2, 彼此之间的拓扑关系或距离是 最亲密的, 两者都驻留在一个容器中 ( 容器 6) 且当仅涉及这些 CPU 时, 没有容器边界被穿 越。但是, 如果涉及到 CPU1 和 CPU8, 有 4 个容器边界被穿越。容器 6 中的 CPU1 被容器 4、 5 和 9 从容器 8 分隔开。因此, 通过了解容器结构, 用户可以得到关于系统的拓扑的视图。
     当然, 在逻辑分区的系统中, 可如前所述在操作系统之间共享 CPU。 因此, 如果逻辑 分区被分配了 3 个逻辑 CPU, 每个逻辑 CPU 被分配了 3 个真实 CPU 中每个的 20%, 如果 3 个 真实 CPU 彼此之间是最接近的, 该分区将性能最佳, 因为 CPU 和 CPU 资源 ( 例如, 高速缓存 和存储器 ) 间的通信将性能最佳。在当前的例子中, 相比于如果两个 CPU 是 CPU1 和 CPU8, 分区中的 CPU1 和 CPU2 在高速缓存 1 中会经历较少的高速缓存线的系统颠簸 (thrashing)。
     在该例子中, 包括 CPU1、 CPU2 和 CPU3 的分区被创建。在分区中运行的程序发出 STSI 指令, 且 SYSIB 15.1.2( 图 10) 表被返回到该程序。在这种情况下, 分区包括容器 6 和 容器 7, 且因此有两个嵌套层次。SYSIB 表的值是 :
     MNest 字段被设为 4, 指示拓扑包括 4 层嵌套, 这对于该模型来说是绝对最大嵌套, 而且在任何的拓扑列表上可以是或可以不是被完全使用, 这取决于对发出 STSI 的客户配 置的资源分配, 以及资源如何被分配给系统的其他客户配置。 Mag1 字段被设为 2, 指示在最初级的第一层有 2 个 CPU 可用。
     Mag2 字段被设为 2, 指示有 2 个第二层 ( 模块 ) 容器可用。
     Mag3 字段被设为 2, 指示有 2 个第三层 ( 板 ) 可用。
     Mag4 字段被设为 2, 指示有 2 个第四层 ( 框架 ) 可用。
     在当前例子中, 3 个 CPU 包含在同一板的两个模块中, 因此提供以下 4 个 TLE 项 :
     1.NL = 1 ; CtrnID = 1( 容器 6)
     2.NL = 0 ; CPU 类 型 = 1(CPU 的 类 型 ) ; CPU 地 址 起 始 点 = 0 ; CPU 掩 码 0......11( 被寻址的 CPU 的 CPU1 和 CPU2)
     3.NL = 1 ; CtrnID = 2( 容器 7)
     4.NL = 0 ; CPU 类 型 = 1(CPU 的 类 型 ) ; CPU 地 址 起 始 点 = 4 ; CPU 掩 码 0......10( 被寻址的 CPU 的 CPU3)
     由此, 基于返回的容器和 CPU TLE, 程序具有物理拓扑的表现。
     PERFORM TOPOLOGY FUNCTION(PTF)
     参考图 13, 一条 PERFORM TOPOLOGY FUNCTION(PTF) 指令优选地包括操作码和标识 第一操作数的寄存器字段 R1。 如图 14 所示, 由 R1 标识的通用寄存器的内容在位位置 56-64 指定了功能代码。
     定义的功能代码如下 :
     FC 意义
     0 请求水平极化
     1 请求垂直极化
     2 检查拓扑 - 变化状态
     0-255 范围内的未定义的功能代码被保留用作将来的扩展。
     一旦完成, 如果设置了条件代码 2, 原因代码被存储在通用寄存器 R1 的位位置 48-55 中。忽略指令的位 16-23 和 28-31。
     功能代码 0 的操作 :
     对于以下任何原因 ( 和原因代码 ), 执行以条件代码 2 完成。
     没有指明原因 (0)。
     请求的配置已被水平极化 (1)。
     拓扑变化已在进行中 (2)。
     否则, 启动一个过程以将配置中的所有 CPU 置于水平极化中。
     该过程的完成相对于指令的执行是异步的, 且当指令的执行完成时, 该过程可以 完成或可以未完成。
     产生的条件代码 :
     0 拓扑 - 变化被启动
     1
     2 请求被拒绝
     3
     功能代码 1 的操作 :
     对于以下任何原因 ( 和原因代码 ), 执行以条件代码 2 完成 :
     没有指明原因 (0)。
     请求配置已被垂直极化 (1)。
     拓扑变化已在进行中 (2)。
     否则, 一个过程被启动以将配置中的所有 CPU 置于垂直极化中。该过程的完成相 对于指令的执行是异步的, 且当指令的执行完成时, 其可以完成或可以未完成。
     产生的条件代码 :
     0 拓扑 - 变化被启动
     1
     2 请求被拒绝
     3
     功能代码 2 的操作 : 检查了拓扑 - 变化 - 报告 - 未决条件, 且指令以设置条件代码 完成。
     产生的条件代码 :
     0 拓扑 - 变化 - 报告非未决拓扑
     1 改变报告未决
     2
     3
     拓扑变化是任何这样的改变, 其使得 SYSIB 15.1.2 的内容将与拓扑变化之前的 SYSIB 15.1.2 的内容不同。
     当拓扑 - 变化过程完成时, 创建拓扑 - 变化 - 报告 - 未决条件。当以下任一项执 行时, 为配置清除拓扑 - 变化 - 报告 - 未决条件 :
     PERFOMR TOPOLOGY FUNCTION 的执行指定了以条件代码 1 完成的功能代码 2。用于 SYSIB 15.1.2 的 STORE SYSTEM INFORMATION 被配置中的任一 CPU 成功地执行。 执行子系统复位。
     特殊条件 :
     如果通用寄存器 R1 的位位置 0-55 不是 0, 识别出规范异常。 如果指定了未定义的 功能代码, 识别出规范异常。
     程序异常 :
     操作 ( 没有安装配置 - 拓扑设施 )
     特权操作
     规范
     一个大型机例子环境
     随着高端服务器体系结构增加了物理处理器的数量, 且处理器速度继续增加, 建 造大型机器所需的处理器 “嵌套” (nest) 继续用本质上更节点化的较小构建块构成。例如, 当 z990 或 z9 机器的 L2 高速缓存是完全高速缓存一致的时, 完全填充 (populated) 的模型 实际上具有四 (4) 个单独的 L2, 其通过一结构 (fabric) 来连接以呈现单个 L2 高速缓存的 外观。离开节点来解决高速缓存未命中的代价持续增加。例如, 在远程 L2 中解决 L1 未命 中比在本地 L2 中解决它要贵。在 CP 的私有的且通常在芯片上的 L1 高速缓存中未命中从 一开始就是昂贵的, 且不得不一直到达存储器看起来像是没完没了。存储器速度的增加及 与存储器的连接并没有与处理器速度的增加保持一致的步调。当试图 “在芯片上” 或其他 地方将每件东西更紧密地包装在一起, 耗电量和散热问题与此背道而驰。
     随着 z900 的引入, LPAR 开始察觉到机器拓扑并开始优化逻辑分区 CP 和存储资源 到物理资源的分配。用于动态地重新优化逻辑分区资源分配的能力的增强随着 z9 GA-1 被 引入, 其主要是为了支持并发簿修复。
     这里讨论的新的支持真正开始了使得 zSeries OS 软件能觉察到作为逻辑分区拓 扑呈现的机器拓扑, 以便提供关于 CEC 簿结构中的 CPU 放置的邻近性调度。
     可以将今天 zSeries LPAR 管理共享的逻辑分区的方式视为水平极化的。即, 用于 逻辑分区的处理权重在逻辑分区的所有在线逻辑 CP 中被平均地分隔。该支持引入了用于 一种新的、 可选的用于管理逻辑分区的共享逻辑 CP 的极化形式, 其被称为垂直极化。
     当逻辑分区选择在垂直模式中运行时, 软件发出新的指令以将其通知给 zSeries 管理程序, 且该管理程序将改变其如何调度逻辑分区。
     根据垂直逻辑分区的配置, 逻辑处理器将具有高、 中或低极性。 极性描述了垂直处 理器有资格分享的物理处理器份额的量。用户定义了用于逻辑分区的权重, 这有效地定义 了机器中每个逻辑分区有资格得到的物理处理器周期的量。
     极性由逻辑分区的当前权重对被配置到该逻辑分区的逻辑处理器的数量的比率 来衡量。高极性处理器具有将近 100%的 CPU 份额。中级极性处理器具有大于 0%至 99% 的份额, 而低级极性处理器具有 0%的份额 ( 或非常接近 0)。高极性逻辑 CP 将会被分配物 理处理器以在非常接近专用 CP 上运行, 但是共享的高极性 CP 可以仍然放弃物理资源, 并允 许其他共享的 CP 使用其超额周期。这里的关键是, 软件看到了逻辑拓扑并试图为了其工作 队列而利用高度极化的逻辑 CP。
     例如, 用户配置了具有 2 个逻辑分区的三路处理器, 每个逻辑分区具有两个逻辑 处理器且每个逻辑分区具有 50 的权重。如果第一逻辑分区将其本身定义为垂直, 则它将具 有一个高极性和一个中极性的逻辑 CP。
     注意, 当逻辑分区选择在垂直模式中运行时, 整个逻辑分区在垂直模式中运行。 这 包括其所有的次级处理器, 例如 zAAP(IFA) 和 / 或 zIIP。为这些逻辑分区定义所有的处理 器类型的权重, 以便实现针对每种类型所希望的垂直处理层次, 这是用户的责任。
     逻辑分区拓扑支持
     ·建立用于逻辑分区节点拓扑的基础设施。
     ·对用于现有的水平分区的 LPAR 节点分配算法进行所需的任何变化以便提供有 效拓扑。
     · 为 STORE SYSTEM INFORMATION(STSI) 指令提供用于新配置拓扑信息块的指令模 拟, 以向逻辑分区提供逻辑分区节点拓扑。
     ·检查对物理或逻辑配置的改变以确定是否需要拓扑改变。这些可以在以下情形 时发生 :
     - 物理 CP 被添加到配置或从配置中移除
     - 逻辑 CP 被添加到配置或从配置中移除
     - 逻辑分区被激活
     - 逻辑分区被去激活
     - 逻辑分区权重从 HMC/SE 改变
     - 软件启动改变逻辑分区的权重
     - 逻辑分区被重置 ( 切换到水平 )
     - 逻辑分区被切换到 ESA/390 模式 ( 切换到水平 )
     环境的算法
     当拓扑第一次被激活时, 它必须被分配给逻辑分区, 然后被分配给逻辑分区的节 点拓扑中的任何变化必然导致通知逻辑分区。 节点拓扑的结果必须被保存在便利的新的数 据结构中, 以便当做出配置改变时, 允许新的 STSI 处理更容易地查询, 以及尽可能地限制 处理。 这种新的结构也允许拓扑改变处理在多个步骤中完成, 每个步骤具有所需的序列化, 而不将关于拓扑的不一致视图引入到逻辑分区。
     拓扑分配
     对于本公开文本来说, 如果选择逻辑拓扑并不重要。只要说必须决定需要多少个 每种类型的逻辑处理器以及需要将它们分配到哪些节点或簿就足够了。 对于垂直模式分区 来说, 这意味着用于每种处理器类型的垂直高级、 垂直中级和垂直低级处理器的计数。
     分配极化值给逻辑 CP
     一旦确定了以上计数, 以 (1) 所有垂直高级、 (2) 所有垂直中级和 (3) 所有垂直低 级的次序, 进行从 CP 类型的最低在线逻辑 CP 地址到最高的极性分配。进行这种操作的顺 序是任意的, 且其他选择顺序也是可能的。
     ‘STORE SYSTEM INFORMATION’ 指令映射
     添加 3 个结构以映射 15.1.2 响应
     1. 用于 STSI 15.1.2 的映射, 响应块映射拓扑Dcl 1 syibk1512 char(4096) based(*)
     3 * char(2)
     3 syibk1512_length fixed(16) 长度
     3 syibk1512_mag6 fixed(8) 第 6 级嵌套
     3 syibk1512_mag5 fixed(8) 第5
     3 syibk1512_mag4 fixed(8) 第4
     3 syibk1512_mag3 fixed(8) 第3
     3 syibk1512_mag2 fixed(8) 第 2, 节点
     3 syibk1512_mag1 fixed(8) 第 1, cpu
     3 * char(1)
     3 syibk1512_mnest fixed(8) 嵌套层次
     3 * char(4)
     3 syibk1512_topology_list char(0) 拓扑列表
     2. 用于 STSI 15.1.2 的容器 - 类型 TLE 的映射
     Dcl 1 syibk_vcm_container char(8) based(*)
     3 syibknl fixed(8), 嵌套层次
     3 * char(3),
     3 * char(1),
     3 * char(2),
     3 syibk_container_id fixed(8) ; 节点 id
     3. 用于 STSI 15.1.2 的 CPU- 类型 TLE 的映射
     Dcl 1 syibk_vcm_cpu char(16) based(*)
     3 syibkn12 fixed(8), 嵌套层次
     3 * char(3),
     3 syibk_ded_polarization bit(8), vcm 字节
     5 *bit(5),
     5 syibk_dedicated bit(1), 专用位
     5 syibk_polarization bit(2), 极化位
     3 syibk_cputype fixed(8), cpu 类型
     3 syibk_cpuaddrorg fixed(16), 地址起始点
     3 syibk_cpumask bit(64) ; cpu 掩码项
     TOPBK- 分区拓扑
     节点分配例程将逻辑分区的拓扑的概要在该块中保持为最新。 簿中的数据是这样 排列的, 使得 STSI 处理可以进行整个结构的一轮, 来创建对程序的逻辑分区拓扑响应, 并 保留由体系结构所要求的 CPU 项的次序和隔离。
     它包括每个项的一个具有 64 位 CPU 掩码的三维数组 ( 节点、 cp 类型、 极化分类 )。
     第二工作区, TOP_WORKING, 被包括以用于更新拓扑。
     DECLARE
     1 TOPBK BASED BDY(DWORD),3 TOP_CURRENT,
     5 TOPCPUMASK(1 : MAXNODE, /*1-4 个节点中的每个
     */
     0: CPUTMAX, */CP 类型索引
     */
     0:3)/* 当逻辑分区是垂直时, 有 4 个可能的拓扑分类。 当逻辑分区是水平 时, 仅有 2 个分类。
     */
     BIT(64), */ 位于这个分类的逻辑 CPU 的掩码
     */
     3 TOP_WORKING CHAR(LENGTH(TOP_CURRENT)) ; */
     用于建立新拓扑的工作区
     */
     TO3PO- 分区拓扑转换
     这些 “不变的” (constant) 转换表是由节点分配例程使用的, 所述例程建立拓扑 ( 由 TOPBK 映射 ) 和读取该拓扑的 STSI 处理。 /*****************************************/
     /*STSI 转换数组 : */
     /*****************************************/
     DECLARE
     1 TOPVERT(0:3)BIT(8)/* 对于垂直分区, 将上面的分类索引转换为将被返回的用 于 STSI 数据中的该组 CP 的体系结构 D( 专用 ) 和 PP( 极化 ) 值。
     */
     STATIC INIT(‘00000’ b‖‘1b’ ‖PPVH, /* 分类 0 : 专用垂直高级 */
     ‘00000’ b‖‘0’ b ‖PPVH, /* 分类 1 : 共享垂直高级 */
     ‘00000’ b‖‘0’ b ‖PPVM, /* 分类 2 : 共享垂直中级 */
     ‘00000’ b‖‘0’ b ‖PPVL, /* 分类 3 : 共享垂直低级 */
     3* BIT(5), /* 未被使用, 需要用于位数组的字节对齐 */
     3 TOPDPP BIT(3), /* 将使用的实际 D、 PP 值 */
     1 TOPHOR(0:1)BIT(8)/* 对于水平分区, 将以上分类索引转换为将被返回的用于 STSI 数据中的该组 CP 的体系结构 D( 专用 ) 和 PP( 极化 ) 值。注意, 仅最开始的两个分类 可被用于水平分区。
     */
     STATIC INIT(‘00000’ b‖‘1’ b ‖PPH, /* 分类 0 : 专用水平 */
     ‘00000’ b‖‘0’ b ‖PPH), /* 分类 1 : 共享水平 */
     3* BIT(5), /* 未使用的, 需要用于位数组的字节对齐 */
     3TOPDPP BIT(3), /* 将使用的实际 D、 PP 值 */
     /*****************************************/
     /*NDI 转换数组 */
     /*****************************************/
     1 TOPDPP2CLASS(0:7)FIXED/* 由节点分配例程使用来创建拓扑信息。LPDPP 被用 作对该数组的索引, 以确定逻辑 CP 应当使用哪个分类索引。这一个索引被同时用于水平和 垂直分区 */
     STATIC INT(1, /* 共享的, 水平的 */
     3, /* 共享的, 垂直低级 */
     2, /* 共享的, 垂直中级 */
     1, /* 共享的, 垂直高级 */
     0, /* 专用的, 水平的 */
     0, /* 不可用的 */
     0, /* 不可用的 */
     0), /* 专用的, 垂直高级 */
     3*CHAR(4) ; /* 强制成为非简单项 */
     逻辑处理器块
     可以为每个逻辑处理器跟踪分区极化的一个 2 位编码, 以反映其极性。将这与 1 位的专用指示组合起来, 允许在 3 位中对逻辑处理器的完整的极性描述。
     ... 3 LPDPP BIT(3), /* 极化, 包括专用 */ 4 LPDED BIT(1), /* = 1, 逻辑 CP 是专用的 */ 4 LPPP BIT(2), /* 处理器极化 */ ... /* 用于处理器极化的编码 */ PPH BIT(2)CONSTANT(‘00’ B), /* 水平极化 */ PPVL BIT(2)CONSTANT(‘01’ B), /* 垂直极化 - 低 */ PPVM BIT(2)CONSTANT(‘10’ B), /* 垂直极化 - 中 */ PPVH BIT(2)CONSTANT(‘11’ B), /* 垂直极化 - 高 */ 更新拓扑块 清除 CPU 拓扑掩码的本地副本 对于目标逻辑分区中的每个逻辑 CP, DO IF 逻辑 CP 在线 THEN DO 极性索引=根据将极化值转换为极性索引数组, 适用于逻辑 CP 极化值的极性索 CPU 拓扑掩码的本地副本 (cpu_ 地址, 节点, cp 类型, 极性索引 ) = ON END END IF 新的拓扑块 NOT =用于分区的当前拓扑块 THEN 设置拓扑变化报告位并将该新的拓扑复制到当前 用于 STSI 15.1.2 的指令模拟33引
     101911018 A CN 101911024
     说明书30/31 页在 用 于 STSI 15.1.2 响 应 块 的 的 syibk 映 射 内, 一 个 容 器 - 类 型 TLE 和 一 个 CPU- 类型 TLE 被添加。本质上, 数据必须在容器中被返回, 且在最低层的项是 CPU- 类型 TLE。可将此视为多个数组的一个数组, 其基于逻辑分区的资源是如何被再分或分配的。对 于优选实施例, 每个容器本质上是具有嵌套层次 1 的节点, 且包括 CPU 类型 TLE, 每个 CPU 类 型 TLE 具有嵌套层次 0。CPU TLE 是根据 CPU 类型然后根据其分类而排序的。垂直分区有 4 个分类 ( 垂直专用、 垂直高级共享、 垂直中级共享和垂直低级共享 ), 而水平分区有 2 个分 类 ( 专用和共享 )。
     以下步骤示出了关于在所有预先的检查已验证了指令输入后, 如何处理 STSI 15.1.2 的用例。
     对于当前实施例, 假定最多有 4 个节点和 64 个处理器。
     开始扫描 topbk, 且在被称为 current_node_value 的局部变量中维护当前所在的 节点索引的值。 需要这个的理由是因为, 如果节点内的所有 64 位掩码都是 0, 则不需要为该 节点创建一个容器 - 类型 TLE。
     一旦在节点内发现第一个非零项, 首先为该节点创建一个容器 - 类型 TLE 项。在 该容器 TLE 项内, 嵌套值是 1, 然后是 48 个保留位。最后的位是节点 ID, 它是正在处理的当 前节点的 topbk 中的索引。在创建该容器 - 类型 TLE 后, 为该项创建一个具有一个非零位 掩码的 CPU- 类型 TLE。在这个项内, 嵌套层次是 0, 后面是 24 个保留位。接下来的 8 个位 包括专用位和极化位。如果分区当前是垂直的, 以以下方式填充极化值和专用位 :
     topbk 中的分类 0 是垂直专用的, 将 11 存储在 PP 中并将 1 存储在 D 中
     topbk 中的分类 1 是垂直高级共享的, 将 11 存储在 PP 中并将 0 存储在 D 中
     topbk 中的分类 2 是垂直中级共享的, 将 10 存储在 PP 中并将 0 存储在 D 中
     topbk 中的分类 3 是垂直低级共享的, 将 01 存储在 PP 中并将 0 存储在 D 中
     对于水平分区, 只有分类 0 和 1 当前是有效的。以以下方式填充极化值和专用位 :
     topbk 中的分类 0 是水平专用的, 将 00 存储在 PP 中并将 1 存储在 D 中
     topbk 中的分类 1 是水平专用的, 将 00 存储在 PP 中并将 0 存储在 D 中
     CPU 类型, 下一个将被填充在 CPU-TLE 中的值仅是 topbk 中的 topcpumask 内的第 二数组的索引。(0-GP、 2-IFA、 3-IFL、 4-ICF 和 1 是当前未用的。)
     1. 下一个值是 CPU 地址起始点。该值作为 0 被显式地存储, 因为 64 是当前实施例 中可用的 CPU 的最大数量。
     2.syibk_vcm_cpu 中的最后一个值是 CPU 掩码, 是存储在数组 topcpumask 的嵌套 数组中的非零 64 位掩码。
     3. 对 于 节 点 内 的 第 一 个 非 零 位 掩 码 之 后 的 每 个 非 零 掩 码, 创建一个单独的 CPU- 类型 TLE 项并对所有的 4 个节点迭代执行该过程。
     多处理器拓扑 - 变化 - 报告 (MTCR) 未决
     如果安装并启用了配置 - 拓扑设施 (ECB.7 是 1), 且用于客户 CPU 的 SCA 地址是 非零的, 位位置 0 被用来记住用于该配置的拓扑 - 变化 - 报告 - 未决条件。拓扑变化 - 报 告 - 未决的复位状态是 0。
     此处描述的本发明不限于处理器的拓扑。可以理解, 本发明的基本组件可以有利 地应用到 CPU 以外的组件, 包括但不限于, 例如协处理器、 高速缓存、 TLB、 内部数据路径、 数据路径缓冲器、 分布式存储器和 I/O 通信适配器。

计算机配置虚拟拓扑发现.pdf_第1页
第1页 / 共54页
计算机配置虚拟拓扑发现.pdf_第2页
第2页 / 共54页
计算机配置虚拟拓扑发现.pdf_第3页
第3页 / 共54页
点击查看更多>>
资源描述

《计算机配置虚拟拓扑发现.pdf》由会员分享,可在线阅读,更多相关《计算机配置虚拟拓扑发现.pdf(54页珍藏版)》请在专利查询网上搜索。

在一种包括主机处理器(主机CPU)的逻辑分区主机计算机系统中,用于发现客户配置的一个或多个客户处理器(客户CPU)的拓扑的设施和指令包括:客户配置的客户处理器获取和执行STORE?SYSTEM?INFOMRATION指令,该指令获得计算机配置的拓扑信息。该拓扑信息包括:该配置的处理器的嵌套信息和主机处理器提供给相应的客户处理器的专用度。该信息优选地被存储在存储器中的单个表中。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1