CN101911012B - 执行配置虚拟拓扑变化 - Google Patents

执行配置虚拟拓扑变化 Download PDF

Info

Publication number
CN101911012B
CN101911012B CN2009801017596A CN200980101759A CN101911012B CN 101911012 B CN101911012 B CN 101911012B CN 2009801017596 A CN2009801017596 A CN 2009801017596A CN 200980101759 A CN200980101759 A CN 200980101759A CN 101911012 B CN101911012 B CN 101911012B
Authority
CN
China
Prior art keywords
cpu
topology
configuration
instruction
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009801017596A
Other languages
English (en)
Other versions
CN101911012A (zh
Inventor
C·盖尼
M·法雷尔
J·库巴拉
D·施密特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101911012A publication Critical patent/CN101911012A/zh
Application granted granted Critical
Publication of CN101911012B publication Critical patent/CN101911012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Variable-Direction Aerials And Aerial Arrays (AREA)
  • Hardware Redundancy (AREA)
  • Filters And Equalizers (AREA)

Abstract

在包括主机处理器(主机CPU)的逻辑分区主机计算机系统中,主机处理器被分区为客户配置的多个客户处理器(客户CPU),由客户处理器执行指定客户配置的拓扑变化的PERFORM TOPOLOY FUNCTION指令。拓扑变化优选地改变客户CPU的极化,涉及主机CPU资源的量的极化被提供给客户CPU。

Description

执行配置虚拟拓扑变化
技术领域
本发明一般地涉及多处理器系统的虚拟化。更具体而言,本发明涉及使得程序能够改变其虚拟环境的拓扑的元素。
背景技术
在系统控制功能中,有将系统分区为若干逻辑分区(LPAR)的能力。LPAR是系统硬件的子集,其被定义为支持操作系统。LPAR包含资源(处理器、存储器和输入/输出设备)并作为独立系统而操作。多个逻辑分区可以存在于一个大型机硬件系统中。
在来自IBM的、包括S/390的大型机硬件系统中,很多年都存在15个LPAR的限制。年代更近一些的机器具有30个(很可能更多)。这种机器以z/Architecture的机器为例子。IBMz/Architecture
Figure BPA00001178895200014
在由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
Figure BPA00001178895200031
的Linux
Figure BPA00001178895200032
。如果这整个系统具有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
Figure BPA00001178895200033
大型机也被称为中央处理器复合体(CPC)或中央电子复合体(CEC),其可包含若干可被用于略有差别的目的的不同种类的z/Architecture处理器。
这些目的中的几个涉及软件成本控制,而其他的则更为基本。CPC中的所有处理器开始时是同等的处理器单元(PU)或者引擎,它们还没有被特征化以供使用。每个处理器在安装过程中或者晚些时候被IBM特征化。潜在的特征如下:
-处理器(CP)
这种处理器类型可用于通常的操作系统和应用软件。
-系统辅助处理器(SAP)
每个现代大型机具有至少一个SAP;更大的系统可能具有几个。SAP执行内部代码以提供I/O子系统。例如,SAP转换设备号码和通道路径标识符(CHPID)的真实地址,控制单元地址和设备号码。它管理多个路径以控制单元并对临时错误执行错误恢复。操作系统和应用不能检测到SAP,且SAP不使用任何“正常的”存储器。
-用于Linux
Figure BPA00001178895200041
的集成设施(IFL)
这是禁用了仅由z/OS使用的一个或两个指令的正常处理器。Linux不使用这些指令,且因此可以在IFL上执行。Linux也可以被CP执行。区别在于:当指定系统的型号时,IFL没有被计数。这可以导致软件成本的实质性区别。
-zAAP
这是一个若干功能被禁止(中断处理、一些指令)的处理器,这样,在该处理器上没有完整的操作系统能被执行。但是,z/OS可以检测zAAP处理器的存在,并将使用它们来执行JavaTM代码。同样的Java代码可以在标准的CP上被执行。再次地,当指定系统型号时,zAAP引擎没有被计数。跟IFL一样,它们仅仅是为了控制软件成本而存在的。
-zIIP
系统z9TM集成信息处理器(zIIP)是用于处理符合条件的数据库工作负载的专门引擎。zIIP被设计为有助于降低用于在大型机上的所选择工作负载的软件成本,所述工作负载例如为商务智能(BI)、企业资源规划(EPR)和客户关系管理(CRM)。zIIP通过帮助对DB2
Figure BPA00001178895200043
的直接访问更具有成本效率和降低对数据的多个副本的需求,加强了大型机作为企业的数据枢纽的角色。
集成耦合设施(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
Figure BPA00001178895200051
HYPERVISORTM被设计为通过集成应用和数据帮助用户在企业范围内扩大大型机技术的商业价值,并同时提供优越的可用性、安全性和操作便利性。z/VM虚拟化技术被设计为允许用户在与其他系统z操作系统例如z/OS
Figure BPA00001178895200052
一起运行、或者作为大型的仅使用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,通过把系统资源视为逻辑池而不是分开的物理实体,分区和虚拟化涉及从物理思考到逻辑思考的转变。这涉及整合和集中系统资源,并向同类和异类服务器两者、存储器、分布式系统和网络提供“单系统错觉”。
硬件的分区涉及用于单独操作系统的单独CPU,每个操作系统运行其特定的应用。软件分区采用了基于软件的“管理程序”来使得单个操作系统在任何或所有的CPU上运行。
管理程序允许多个操作系统同时在主机计算机上运行。管理程序技术起源于IMB VM/370,这是今天的z/VM的前身。逻辑分区(LPAR)涉及将固件(基于硬件的管理程序,例如FR/SM)分区以将操作系统从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
Figure BPA00001178895200071
映像。结果,开发、测试和生产环境可以共享单台物理计算机。
虚拟机使用真实的硬件资源,但是即使使用专用设备(例如磁带驱动器),该磁带驱动器的虚拟地址可以是或者不是与磁带驱动器的真实地址相同。因此,虚拟机仅知道“虚拟硬件”,该虚拟硬件可能存在于或不存在于真实世界中。
例如,在基础模式的系统中,第一级z/VM是安装在图16的真实硬件之上的基础操作系统。第二级操作系统是在基础z/VM操作系统上建立的系统。因此,z/VM作为基础操作系统运行在硬件上,而客户操作系统运行在虚拟化技术上。在图14中,示出了加载到第一级客户(客户1)分区的第二级客户z/VM OS。
换句话说,有直接位于硬件上的第一级z/VM操作系统,但是该第一级z/VM操作系统的客户被虚拟化。通过将硬件从客户虚拟化,能够利用少量的硬件来根据需要创建和使用任意多的客户。
如上所述,在虚拟机中运行的操作系统通常被称为“客户”。可能也会遇到如下术语和短语:
-“运行第一级”或“本机运行”意味着直接在硬件上运行(如z/VM所做的)。
-“运行第二级”、“运行在VM下”或者“运行在VM上”、或者“作为客户1运行”意味着作为客户运行。使用z/VM操作系统,当z/VM本身作客户-1运行在PR/SM管理软件上时,也有可能“作为客户-2运行”。
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和21)是提供一种包括主机处理器(主机CPU)的逻辑分区主机计算机系统、用于客户配置的多个客户处理器(客户CPU)的拓扑的配置变化的方法、系统和程序产品。优选地,客户配置的客户处理器获取针对计算机体系结构定义的PERFOMR TOPOLOGYFUNCTION指令,该PERFORM TOPOLOGY FUNCTION指令包括指定将被完成的功能的操作码字段。通过执行PERFOMR TOPOLOGYFUNCTION指令而将被执行的功能包括:请求客户配置的客户处理器的指定的极化配置的变化;以及响应于请求的指定的极化变化,根据指定的极化变化改变客户配置的客户处理器的拓扑的配置。
在本发明的一方面,PERFORM TOPOLOGY FUNCTION指令还包括寄存器字段,其中,执行PERFORM TOPOLOGY FUNCTION指令还包括:从由寄存器字段指定的寄存器的功能代码字段获得功能代码字段值,该功能代码字段值由以下任一项组成:水平极化指令指定符、垂直极化指令指定符或者拓扑变化状态检查指定符;响应于该指令指定水平极化,启动计算机配置的客户处理器的水平极化;响应于该指令指定垂直极化,启动计算机配置的客户处理器的垂直极化;以及在寄存器的结果字段中设置结果代码值。
在本发明的另一方面,启动的极化与执行的完成是异步的,且响应于功能代码字段指定拓扑变化的状态检查,检查拓扑变化的完成状态。
在一个实施例中,水平极化包括提供基本上相等的主机处理器资源给每个客户处理器资源,其中垂直极化包括提供比给所述客户处理器中的至少另一个客户处理器基本上更多的主机处理器资源给所述客户处理器中的至少一个客户处理器。
在另一个实施例中,结果代码值指定了指示不能接受极化请求的原因代码,其包括:响应于在执行前配置根据功能代码的指定被极化,结果代码值指示配置已经根据功能代码被极化;和响应于在执行前配置处理未完成的极化,结果代码值指示拓扑变化已在进行。
在一个实施例中,所述执行还包括:响应于拓扑变化正在进行,设置条件代码,其指示已启动拓扑变化;以及响应于请求被拒绝,设置条件代码,其指示请求被拒绝。
在一个实施例中,所述执行还包括:响应于没有拓扑变化报告未决,设置条件代码,其指示拓扑-变化-报告没有未决;且响应于拓扑变化报告未决,设置条件代码,其指示拓扑-变化-报告未决。
在一个实施例中,为计算机体系结构定义的执行拓扑功能指令由备用计算机体系结构的中央处理单元获取并执行,其中该方法还包括:解释PERFORM TOPOLOGY FUNCTION指令以识别用于模拟PERFORMTOPOLOGY FUNCTION指令的操作的预定软件例程,且其中执行该PERFORM TOPOLOGY FUNCTION指令包括执行所述预定的软件例程以执行用于执行机器指令的方法的步骤。
附图说明
被认为是本发明的主题在说明书的结尾部分被特别指出和清楚地要求。但是,通过参照附图阅读下面的说明可更好地理解作为组织和实践方法两者的本发明及其他目标和优点,在附图中:
图1示出了现有技术的主机计算机系统;
图2示出了现有技术的模拟的主机计算机系统;
图3示出了现有技术的STSI机器指令的指令格式;
图4示出了现有技术的STSI指令的隐式寄存器;
图5示出了功能代码表;
图6示出了现有技术的SYSIB 1.1.1表;
图7示出了现有技术的SYSIB 1.2.1表;
图8示出了现有技术的格式1 SYSIB 1.2.2表;
图9示出了现有技术的格式2 SYSIB 1.2.2表;
图10示出了根据本发明的SYSIB 15.1.2表;
图11示出了容器类型TLE;
图12示出了CPU类型TLE;
图13示出了根据本发明的PTF机器指令的指令格式;
图14示出了PTF指令的寄存器格式;
图15A-15D示出了现有技术的分区的计算机系统的元件;
图16示出了示例性计算机系统;
图17-19示出了示例性计算机系统的容器;以及
图20-21示出了本发明的一个实施例的流程。
具体实施方式
在大型机中,体系结构的机器指令通常作为编译器应用由程序员使用(典型地用“C”也有用Java
Figure BPA00001178895200131
、COBOL、PL/I、PL/X、Fortran和其他高级语言来写应用)。这些存储在存储器介质中的指令可以在z/Architecture IMB服务器中被本机执行,或者在执行其他体系结构的机器中被执行。它们可以在现有的和将来的IBM大型机服务器上以及IBM的其他机器(例如,pSeries
Figure BPA00001178895200132
服务器和xSeries服务器)上被模拟。它们可以在使用由IBM
Figure BPA00001178895200134
、Intel
Figure BPA00001178895200135
、AMDTM、Sun Microsystems和其他公司制造的硬件的品种繁多的机器上运行Linux的机器中执行。除了在z/Architecture
Figure BPA00001178895200136
下的硬件上执行外,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
Figure BPA00001178895200151
)提供的z/Architecture。z/Architecture在以下文件中被更详细地描述:z/Architecture操作原理,IBMPub.No.SA22-7832-05,第六版(2007年4月)。基于z/Architecture的计算环境包括,例如,eServerTM和zSeries
Figure BPA00001178895200153
,它们都来自IBM
Figure BPA00001178895200154
代表性的主机计算机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的信息时,格式-0SYSIB中的调整-因素列表或者格式-1SYSIB中的备用-调整-因素列表之后多达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位的、位于0≤I≤223范围内的无符号二进制整数(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意义:
0TLE所代表的一个或多个CPU被水平极化。
1TLE所代表的一个或多个CPU被垂直极化。
资格为低级。
2TLE所代表的一个或多个CPU被垂直极化。
资格为中级。
3TLE所代表的一个或多个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;CtnrID=1(容器6)
2.NL=0;CPU类型=1(CPU的类型);CPU地址起始点=0;CPU掩码0110......00(被寻址的CPU的CPU1和CPU2)
3.NL=1;CtnrID=2(容器7)
4.NL=0;CPU类型=1(CPU的类型);CPU地址起始点=0;CPU掩码00010......00(被寻址的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(*)
           3syibkn12          fixed(8), 嵌套层次
           3   *              char(3),
3syibk_ded_polarization bit(8),vcm字节
5   *                   bit(5),
5syibk_dedicated        bit(1),专用位
5syibk_polarization     bit(2),极化位
3syibk_cputype          fixed(8),cpu类型
3syibk_cpuaddrorg       fixed(16),地址起始点
3syibk_cpumask          bit(64);cpu掩码项
TOPBK-分区拓扑
节点分配例程将逻辑分区的拓扑的概要在该块中保持为最新。簿中的数据是这样排列的,使得STSI处理可以进行整个结构的一轮,来创建对程序的逻辑分区拓扑响应,并保留由体系结构所要求的CPU项的次序和隔离。
它包括每个项的一个具有64位CPU掩码的三维数组(节点、cp类型、极化分类)。
第二工作区,TOP_WORKING,被包括以用于更新拓扑。
DECLARE
 1TOPBK BASED BDY(DWORD),
   3TOP_CURRENT,
      5TOPCPUMASK(1:MAXNODE,/*1-4个节点中的每个
   */
      0:CPUTMAX,*/CP类型索引
   */
      0:3)/*当逻辑分区是垂直时,有4个可能的拓扑分类。当逻辑分区是水平时,仅有2个分类。
   */
      BIT(64),*/位于这个分类的逻辑CPU的掩码
*/
    3TOP_WORKING CHAR(LENGTH(TOP_CURRENT));*/用于建立新拓扑的工作区
*/
TO3PO-分区拓扑转换
这些“不变的”(constant)转换表是由节点分配例程使用的,所述例程建立拓扑(由TOPBK映射)和读取该拓扑的STSI处理。
/*****************************************/
/*STSI转换数组:*/
/*****************************************/
DECLARE
1TOPVERT(0:3)BIT(8)/*对于垂直分区,将上面的分类索引转换为将被返回的用于STSI数据中的该组CP的体系结构D(专用)和PP(极化)值。
*/
STATIC INIT(‘00000’b‖‘1’b‖PPVH,/*分类0:专用垂直高级*/
      ‘00000’b‖‘0’b‖PPVH,/*分类1:共享垂直高级*/
      ‘00000’b‖‘0’b‖PPVM,/*分类2:共享垂直中级*/
      ‘00000’b‖‘0’b‖PPVL,/*分类3:共享垂直低级*/
3*BIT(5),/*未被使用,需要用于位数组的字节对齐*/
3TOPDPP BIT(3),/*将使用的实际D、PP值*/
1TOPHOR(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转换数组*/
/*****************************************/
1TOPDPP2CLASS(0:7)FIXED/*由节点分配例程使用来创建拓扑信息。LPDPP被用作对该数组的索引,以确定逻辑CP应当使用哪个分类索引。这一个索引被同时用于水平和垂直分区     */
STATIC INT(1,/*共享的,水平的      */
   3,/*共享的,垂直低级    */
   2,/*共享的,垂直中级    */
   1,/*共享的,垂直高级    */
   0,/*专用的,水平的   */
   0,/*不可用的         */
   0,/*不可用的         */
   0),/*专用的,垂直高级   */
3*CHAR(4);/*强制成为非简单项       */
逻辑处理器块
可以为每个逻辑处理器跟踪分区极化的一个2位编码,以反映其极性。将这与1位的专用指示组合起来,允许在3位中对逻辑处理器的完整的极性描述。
3LPDPP BIT(3),/*极化,包括专用*/
4LPDED BIT(1),/*=1,逻辑CP是专用的*/
4LPPP 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的指令模拟
在用于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个节点迭代执行该过程。
在一个实施例中,PTF指令可请求对拓扑的除了极化变化之外的特定变化,这样的变化包括(但不限于):请求更多的客户处理器被添加到客户配置,请求客户配置中更少的客户处理器,请求一个或多个专用处理器被添加到客户配置或从客户配置被移除,请求特定客户处理器的特定极化,请求协处理器被添加到客户配置或从客户配置移除,请求拓扑的暂时变化,请求用于特定时间段的拓扑变化等。
而且,本发明不限于处理器的拓扑。可以理解,本发明的基本组件是可以有利地应用到除了CPU之外的组件,包括但不限于,例如协处理器、高速缓存、TLB、内部数据路径、数据路径缓冲器、分发式存储器和I/O通信适配器。

Claims (12)

1.在包括主机处理器(主机CPU)的具有逻辑分区的主机计算机系统中,用于处理客户配置的多个客户处理器(客户CPU)的拓扑的配置变化的方法,该方法包括:
客户配置的客户处理器获取针对计算机体系结构定义的用于执行拓扑功能的指令,该用于执行拓扑功能的指令包括指定将被执行的功能的操作码字段;
执行该用于执行拓扑功能的指令,包括:
请求客户配置的客户处理器的拓扑的配置的指定的极化变化;以及
响应于所请求的指定的极化变化被接受,根据该指定的极化变化来改变客户配置的客户处理器的拓扑;
响应于所请求的拓扑变化正在进行中,设置条件代码以指示拓扑-变化被启动;以及
响应于所述请求被拒绝,设置条件代码以指示所请求的拓扑变化被拒绝,
其中,所述用于执行拓扑功能的指令还包括寄存器字段,其中执行所述用于执行拓扑功能的指令还包括:
从由所述寄存器字段指定的寄存器的功能代码字段获取功能代码字段值,该功能代码字段值由水平极化指示符、垂直极化指示符或拓扑变化检查指示符中任何一个组成;
响应于该指令指定水平极化,启动计算机配置的客户处理器的水平极化,由此产生作为结果的更新的拓扑;
响应于该指令指定垂直极化,启动计算机配置的客户处理器的垂直极化,由此产生作为结果的更新的拓扑;以及
在所述寄存器的结果字段中设置结果代码值。
2.如权利要求1所述的方法,其中,启动的极化请求与所述执行的完成是异步的,其中,该方法还包括:响应于所述功能代码字段值指定拓扑变化检查,检查拓扑变化的完成状态。
3.如权利要求2所述的方法,其中所述执行还包括:
响应于没有拓扑变化报告未决,设置条件代码以指示拓扑-变化-报告没有未决;以及
响应于拓扑变化报告未决,设置条件代码以指示拓扑-变化-报告未决。
4.如权利要求1所述的方法,其中水平极化包括:提供相等的主机处理器资源给每个客户处理器资源,其中垂直极化包括提供比给所述客户处理器中的至少另一个客户处理器基本上更多的主机处理器资源给所述客户处理器中的至少一个客户处理器。
5.如权利要求1所述的方法,其中所述结果代码值指示原因代码,所述方法包括:
响应于在执行前由所述功能代码指定配置被极化,所述结果代码值指示根据功能代码所述配置已经被极化;以及
响应于在执行前所述配置处理不完整的极化,所述结果代码值指示拓扑变化已经在进行中。
6.如权利要求1所述的方法,其中,针对计算机体系结构定义的用于执行拓扑功能的指令是由备用计算机体系结构的中央处理单元获取和执行的,
其中,该方法还包括:解释该用于执行拓扑功能的指令以识别用于模拟该用于执行拓扑功能的指令的操作的预定软件例程;以及
其中,执行该用于执行拓扑功能的指令包括执行该预定软件例程以执行所述操作的步骤。
7.在包括主机处理器(主机CPU)的具有逻辑分区的主机计算机系统中,用于处理客户配置的多个客户处理器(客户CPU)的拓扑的配置变化的装置,该装置包括:
用于客户配置的客户处理器获取针对计算机体系结构定义的用于执行拓扑功能的指令的模块,所述用于执行拓扑功能的指令包括指定将被执行的功能的操作码字段;
用于执行该用于执行拓扑功能的指令的模块,包括:
用于请求客户配置的客户处理器的拓扑的配置的指定的极化变化的模块;以及
用于响应于所请求的指定的极化变化被接受,根据该指定的极化变化来改变客户配置的客户处理器的拓扑的模块;
用于响应于所请求的拓扑变化正在进行中,设置条件代码以指示拓扑-变化被启动的模块;以及
用于响应于所述请求被拒绝,设置条件代码以指示所请求的拓扑变化被拒绝的模块,
其中,所述用于执行拓扑功能的指令还包括寄存器字段,其中执行该用于执行拓扑功能的指令的模块还包括:
用于从由所述寄存器字段指定的寄存器的功能代码字段获得功能代码字段值的模块,其中,该功能代码字段值由水平极化指令指示符、垂直极化指令指示符或拓扑变化检查指示符中的任何一个组成;
用于响应于该指令指定水平极化,启动计算机配置的客户处理器的水平极化的模块;
用于响应于该指令指定垂直极化,启动计算机配置的客户处理器的垂直极化的模块;以及
用于在所述寄存器的结果代码中设置结果代码值的模块。
8.如权利要求7所述的装置,其中启动的极化与所述执行的完成是异步的,其中该装置还包括:用于响应于所述功能代码字段值指定拓扑变化检查,检查拓扑变化的完成状态的模块。
9.如权利要求8所述的装置,其中所述用于执行该用于执行拓扑功能的指令的模块还包括:
用于响应于没有拓扑变化报告未决,设置条件代码以指示拓扑-变化-报告没有未决的模块;以及
用于响应于拓扑变化报告未决,设置条件代码指示拓扑-变化-报告未决。
10.如权利要求7所述的装置,其中水平极化包括提供基本上相等的主机处理器资源给每个客户处理器资源,其中垂直极化包括提供比给所述客户处理器中的至少另一个客户处理器更多的主机处理器资源给所述客户处理器中的至少一个客户处理器。
11.根据权利要求7所述的装置,其中所述结果代码值指定原因代码,所述装置包括:
用于响应于在执行前由所述功能代码指定配置被极化的模块,所述结果代码值指示根据该功能代码所述配置已经被极化;以及
用于响应于在执行前所述配置处理不完整的极化的模块,所述结果代码值指示拓扑变化已经在进行中。
12.如权利要求7所述的装置,其中,针对计算机体系结构定义的用于执行拓扑功能的指令是由备用的计算机体系结构的中央处理单元获取和执行的,
其中该装置还包括:用于解释该用于执行拓扑功能的指令以识别用于模拟该用于执行拓扑功能的指令的操作的预定软件例程的模块;以及
其中用于执行该用于执行拓扑功能的指令的模块包括用于执行该预定软件例程以执行所述操作的模块。
CN2009801017596A 2008-01-11 2009-01-12 执行配置虚拟拓扑变化 Active CN101911012B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,766 US7739434B2 (en) 2008-01-11 2008-01-11 Performing a configuration virtual topology change and instruction therefore
US11/972,766 2008-01-11
PCT/EP2009/050251 WO2009087233A1 (en) 2008-01-11 2009-01-12 Performing a configuration virtual topology change

Publications (2)

Publication Number Publication Date
CN101911012A CN101911012A (zh) 2010-12-08
CN101911012B true CN101911012B (zh) 2013-07-24

Family

ID=40419037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801017596A Active CN101911012B (zh) 2008-01-11 2009-01-12 执行配置虚拟拓扑变化

Country Status (13)

Country Link
US (8) US7739434B2 (zh)
EP (1) EP2223203B1 (zh)
JP (1) JP5179597B2 (zh)
KR (1) KR101221252B1 (zh)
CN (1) CN101911012B (zh)
AT (1) ATE546774T1 (zh)
CY (1) CY1112504T1 (zh)
DK (1) DK2223203T3 (zh)
ES (1) ES2379575T3 (zh)
PL (1) PL2223203T3 (zh)
PT (1) PT2223203E (zh)
SI (1) SI2223203T1 (zh)
WO (1) WO2009087233A1 (zh)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8527988B1 (en) * 2009-07-31 2013-09-03 Hewlett-Packard Development Company, L.P. Proximity mapping of virtual-machine threads to processors
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8271710B2 (en) * 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
CN103080912B (zh) 2010-08-26 2015-11-25 飞思卡尔半导体公司 微处理器系统及用于其上的存储器管理单元和管理方法
JP5354108B2 (ja) * 2010-09-01 2013-11-27 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9646278B2 (en) 2011-07-14 2017-05-09 International Business Machines Corporation Decomposing a process model in an enterprise intelligence (‘EI’) framework
US8566345B2 (en) 2011-07-14 2013-10-22 International Business Machines Corporation Enterprise intelligence (‘EI’) reporting in an EI framework
US9639815B2 (en) 2011-07-14 2017-05-02 International Business Machines Corporation Managing processes in an enterprise intelligence (‘EI’) assembly of an EI framework
US9659266B2 (en) 2011-07-14 2017-05-23 International Business Machines Corporation Enterprise intelligence (‘EI’) management in an EI framework
US8881100B2 (en) * 2011-09-07 2014-11-04 International Business Machines Corporation Automated generation of bridging code to augment a legacy application using an object-oriented language
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9256344B1 (en) 2013-03-15 2016-02-09 Ca, Inc. Software management software
US9208193B1 (en) * 2013-03-15 2015-12-08 Ca, Inc. Problem management software
US9116597B1 (en) 2013-03-15 2015-08-25 Ca, Inc. Information management software
CN103530191B (zh) * 2013-10-18 2017-09-12 杭州华为数字技术有限公司 热点识别处理方法及装置
EP2899652B1 (de) * 2014-01-22 2024-03-13 dSPACE GmbH Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9218185B2 (en) * 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US20160055078A1 (en) * 2014-08-22 2016-02-25 Vmware, Inc. Decreasing user management of an appliance
CN104539684B (zh) * 2014-12-23 2018-07-06 广州亦云信息技术有限公司 一种用户机器资源抽取整合方法及系统
US10853104B2 (en) * 2015-02-27 2020-12-01 Plasma Business Intelligence, Inc. Virtual environment for simulating a real-world environment with a large number of virtual and real connected devices
US9465664B1 (en) * 2015-09-09 2016-10-11 Honeywell International Inc. Systems and methods for allocation of environmentally regulated slack
FR3041788B1 (fr) 2015-09-30 2018-02-02 Zcost Management Procede de controle de la capacite d'utilisation d'un systeme partitionne de traitement de donnees.
US10680852B2 (en) * 2016-07-14 2020-06-09 Hewlett Packard Enterprise Development Lp Configuration of a managed device
US10693732B2 (en) 2016-08-03 2020-06-23 Oracle International Corporation Transforming data based on a virtual topology
US10389628B2 (en) 2016-09-02 2019-08-20 Oracle International Corporation Exposing a subset of hosts on an overlay network to components external to the overlay network without exposing another subset of hosts on the overlay network
US10990467B2 (en) 2016-12-15 2021-04-27 Nutanix, Inc. Accessing computing resource attributes of an external service provider
US10462013B2 (en) * 2017-02-13 2019-10-29 Oracle International Corporation Implementing a single-addressable virtual topology element in a virtual topology
US10291507B2 (en) 2017-02-13 2019-05-14 Oracle International Corporation Implementing a virtual tap in a virtual topology
CN107301034A (zh) * 2017-08-09 2017-10-27 葛松芬 一种并行处理器阵列结构
DE102018131613A1 (de) * 2018-04-10 2019-10-10 Infineon Technologies Ag Fehlererkennung mittels Gruppenfehler
US11256531B2 (en) * 2019-06-20 2022-02-22 International Business Machines Corporation Isolating physical processors during optimization of VM placement
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
US11782872B2 (en) 2022-03-07 2023-10-10 International Business Machines Corporation Distribution of over-configured logical processors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1674987A2 (en) * 2004-12-21 2006-06-28 Microsoft Corporation Systems and methods fro exposing processor topology for virtual machines

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US585994A (en) * 1897-07-06 Administrator of alexander
US3825895A (en) 1973-05-14 1974-07-23 Amdahl Corp Operand comparator
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4713750A (en) 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4578750A (en) 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
US5859994A (en) 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5632028A (en) 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
EP0730220A3 (en) 1995-03-03 1997-01-08 Hal Computer Systems Inc Method and device for quickly executing branch instructions
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
WO2001002397A1 (fr) 1999-06-30 2001-01-11 Mochida Pharmaceutical Co., Ltd. Composes tricycliques presentant une jonction spiro
AU7437600A (en) * 1999-09-28 2001-04-30 International Business Machines Corporation Workload management in a computing environment
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7165101B2 (en) 2001-12-03 2007-01-16 Sun Microsystems, Inc. Transparent optimization of network traffic in distributed systems
US7493480B2 (en) 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US7140021B2 (en) * 2002-09-13 2006-11-21 Microsoft Corporation Dynamic TCP partitioning
US7337442B2 (en) * 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
WO2005022384A1 (en) 2003-08-28 2005-03-10 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator
US7693811B2 (en) * 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8352950B2 (en) * 2008-01-11 2013-01-08 International Business Machines Corporation Algorithm to share physical processors to maximize processor cache usage and topologies
US9127290B2 (en) * 2008-08-27 2015-09-08 National Institute Of Agrobiological Sciences Rice gene capable of imparting wide-spectrum disease resistance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1674987A2 (en) * 2004-12-21 2006-06-28 Microsoft Corporation Systems and methods fro exposing processor topology for virtual machines

Also Published As

Publication number Publication date
JP2011509478A (ja) 2011-03-24
US20140337602A1 (en) 2014-11-13
SI2223203T1 (sl) 2012-05-31
US7739434B2 (en) 2010-06-15
US10055261B2 (en) 2018-08-21
US20170308392A1 (en) 2017-10-26
US20190317828A1 (en) 2019-10-17
US20110283280A1 (en) 2011-11-17
CN101911012A (zh) 2010-12-08
EP2223203A1 (en) 2010-09-01
ATE546774T1 (de) 2012-03-15
US20100095033A1 (en) 2010-04-15
US10621007B2 (en) 2020-04-14
DK2223203T3 (da) 2012-04-02
US8015335B2 (en) 2011-09-06
KR101221252B1 (ko) 2013-01-14
US10061623B2 (en) 2018-08-28
US8301815B2 (en) 2012-10-30
JP5179597B2 (ja) 2013-04-10
WO2009087233A9 (en) 2009-09-24
KR20100106449A (ko) 2010-10-01
PL2223203T3 (pl) 2012-07-31
US8819320B2 (en) 2014-08-26
PT2223203E (pt) 2012-03-29
WO2009087233A1 (en) 2009-07-16
ES2379575T3 (es) 2012-04-27
US20180107495A9 (en) 2018-04-19
US10372505B2 (en) 2019-08-06
CY1112504T1 (el) 2015-12-09
US20130024659A1 (en) 2013-01-24
US20090182915A1 (en) 2009-07-16
EP2223203B1 (en) 2012-02-22
US20190004867A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
CN101911012B (zh) 执行配置虚拟拓扑变化
CN101911018B (zh) 计算机配置虚拟拓扑发现
CN102906722A (zh) 将消息信号中断转换为i/o适配器事件通知
CN102906716A (zh) 依据适配器的多个地址空间
CN101606130A (zh) 在处理器系统的指令级使能资源分配标识的方法和装置
CN102906719A (zh) 输入/输出地址到存储器地址的转换
CN102906694A (zh) 用于与适配器进行通信的加载指令

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant