CN102906701A - 由配置来控制对适配器功能的访问 - Google Patents

由配置来控制对适配器功能的访问 Download PDF

Info

Publication number
CN102906701A
CN102906701A CN201080066928XA CN201080066928A CN102906701A CN 102906701 A CN102906701 A CN 102906701A CN 201080066928X A CN201080066928X A CN 201080066928XA CN 201080066928 A CN201080066928 A CN 201080066928A CN 102906701 A CN102906701 A CN 102906701A
Authority
CN
China
Prior art keywords
adapter
access
instruction
list item
configuration
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.)
Granted
Application number
CN201080066928XA
Other languages
English (en)
Other versions
CN102906701B (zh
Inventor
D·克拉多克
M·法雷尔
T·格雷格
B·格伦迪宁
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 CN102906701A publication Critical patent/CN102906701A/zh
Application granted granted Critical
Publication of CN102906701B publication Critical patent/CN102906701B/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/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

控制配置对输入/输出适配器的访问。对于每个请求的对适配器的访问,进行检查以确定是否授权所述配置访问适配器。如果没有被授权,则拒绝访问。如果被授权,但是应当临时地阻止访问,则改变指令执行以指示上述内容。如果允许访问,但是出于另一原因应当进行阻止(不同于临时地),那么应当拒绝。

Description

由配置来控制对适配器功能的访问
技术领域
本发明一般涉及输入/输出(I/O)处理,且更具体而言,涉及控制对计算环境的输入/输出适配器的访问。
背景技术
使用输入/输出适配器的许多系统架构通过使用基于中央处理器单元(CPU)的地址转换机制来控制对这些适配器的访问。在这样的系统中,使用存储器映射输入/输出(MMIO),并且基于建立存储器的方式,硬件知道由处理器执行的指令是否指向实际的存储器或其是否实际上指向适配器中的一个的存储器。然后,硬件因此能够对其进行操控。
然而,一些系统可能不使用传统的存储器映射I/O。
Thomas A.Gregg在2009年11月10日发布的题为“I/O AdapterLPAR Isolation with Assigned Memory Space”(具有分配的存储器空间的I/O适配器LPAR隔离)的第7,617,340号美国专利描述了在系统中隔离多个I/O适配器的数据处理系统和方法。所述数据处理系统还包括使用PCIe协议与I/O适配器进行通信的一组处理器。每个I/O适配器具有各自的ID。在优选的实施例中,由I/O适配器发出的命令包括PCIe定义的请求者ID字段,其包括I/O适配器的一个或多个请求者ID。可将Req ID用作对CAM的输入,所述CAM为TVT提供索引以识别用于I/O适配器的唯一的和独立的系统存储器空间。
Billau等在2009年5月5日发布的题为“Facilitating Access toInput/Output Resources Via an I/O Partition Shared By MultipleConsumer Partitions”(促进经由多个客户分区共享的I/O分区对输入/输出资源的访问)的第7,530,071号美国专利描述了在分区的环境中提供至少一个输入/输出(I/O)固件分区,以促进对由至少一个I/O固件分区所拥有的I/O资源的访问。由环境的一个或多个其他分区(被称为客户分区)来共享I/O固件分区的I/O资源。客户分区使用I/O固件来访问I/O资源。由于I/O固件分区负责为那些分区所拥有的I/O资源提供访问,客户分区免于这种风险、降低客户分区中的加载度和成本。
Corneli等在2009年9月24日公开的题为“System and Method forDistributing Virtual Input/Output Operations Across Multiple LogicalPartitions”(用于在多个逻辑分区间分布虚拟输入/输出操作的系统和方法)的第2009/0240849A1号美国公开专利描述了分布式虚拟I/O工具通过在由高速通信信道连接的多个应用LPAR间分布虚拟I/O功能来替换专用VIO服务器LPAR。在可用的LPAR之间分布逻辑I/O。分布式虚拟I/O工具将每个I/O请求分配(assign)给适当的I/O设备。分布式虚拟I/O工具监测每个I/O请求,并且当性能挑中特定设备或当设备不再可用时,重新分配I/O设备。
发明内容
根据本发明的方面,控制对I/O适配器的访问,使得仅经授权的配置才可以访问给定的I/O适配器(例如,适配器功能)。在一个实施例中,在不使用例如存储器映射I/O的那些计算环境中进行控制。
克服了现有技术的缺点并且通过提供用于控制对计算环境的适配器的计算机程序产品来提供优点。计算机程序产品包括处理电路可读的计算机可读存储介质并且存储由用于执行方法的处理电路所执行的指令。例如,所述方法包括,执行包括配置对访问适配器的请求的指令,由提供了请求的功能句柄来识别适配器,所述执行包括处理器使用所述功能句柄来获得用于适配器的功能表项,所述功能表项包括与所述适配器相关联的信息;基于功能表项中的信息,确定是否允许所述配置来访问所述适配器;以及响应于确定允许所述配置访问所述适配器,允许访问所述适配器。
此处,还描述和要求保护与本发明的一个或多个方面相关的方法和系统。
通过本发明的技术可以实现附加的特征和优点。此处详细地描述本发明的其他实施例和方面,并且将本发明的其他实施例和方面认作要求保护的发明的一部分。
附图说明
作为本说明书的结尾处的权利要求的例子,本发明的一个或多个方面被特别指出和明确要求。根据下列详细描述并结合附图,本发明的上述和其他目标、特征和优势将变得明显,在附图中:
图1A示出了包含并使用本发明的一个或多个方面的计算环境的一个实施例;
图1B示出了包含并使用本发明的一个或多个方面的计算环境的另一实施例;
图1C示出了根据本发明的方面的计算环境的一个例子,其中多个适配器功能的每个适配器功能具有与其相关联的功能表项;
图2A示出了根据本发明的一方面所使用的功能表项的一个例子;
图2B示出了根据本发明的一方面的用于对功能表项进行定位的功能句柄的一个实施例;
图3A示出了根据本发明的一方面的执行PCI加载指令以访问特定PCI功能的操作系统的一个实施例;
图3B示出了根据本发明的一方面的发布相对于特定PCI功能的PCI存储指令的操作系统的另一个例子;
图4示出了根据本发明的一方面的控制操作系统对特定适配器功能的访问的逻辑的一个实施例;
图5A示出了根据本发明的一方面使用的呼叫逻辑处理器指令的一个实施例;
图5B示出了根据本发明的一方面的由图5A的呼叫逻辑处理器指令所使用的请求块的一个实施例;
图5C示出了根据本发明的一方面的由图5A的呼叫逻辑处理器指令所提供的响应块的一个实施例;
图6示出了根据本发明的一方面的实现PCI功能的逻辑的一个实施例;
图7A示出了根据本发明的方面使用的修改PCI功能控制指令的一个实施例;
图7B示出了根据本发明的方面的由图7A中的修改PCI功能控制指令所使用的字段的一个实施例;
图7C示出了根据本发明的一方面的由图7A的修改PCI功能控制指令使用的另一个字段的一个实施例;
图7D示出了根据本发明的一方面而使用的功能信息块(FIB)的内容的一个实施例;
图8示出了根据本发明的一方面的修改PCI功能控制的逻辑的概况的一个实施例;
图9A示出了根据本发明的一方面所使用的PCI加载指令的一个实施例;
图9B示出了根据本发明的一方面的由图9A的PCI加载指令所使用的字段的一个实施例;
图9C示出了根据本发明的一方面的由图9A的PCI加载指令所使用的另一字段的一个实施例;
图10A至10B示出了根据本发明的一方面的执行PCI加载操作的逻辑的一个实施例;
图11A示出了根据本发明的一方面所使用的PCI存储指令的一个实施例;
图11B示出了根据本发明的一方面的由图11A的PCI存储指令所使用的字段的一个实施例;
图11C示出了根据本发明的一方面的由图11A的PCI存储指令所使用的另一字段的一个实施例;
图12A至12B示出了根据本发明的一方面执行PCI存储操作的逻辑的一个实施例;
图13A示出了根据本发明的一方面所使用的PCI存储块指令的一个实施例;
图13B示出了根据本发明的一方面的由图13A的PCI存储块指令所使用的字段的一个实施例;
图13C示出了根据本发明的一方面的由图13A的PCI存储块指令所使用的另一字段的一个实施例;
图13D示出了根据本发明的一方面的由图13A的PCI存储块指令所使用的再一字段的一个实施例;
图14A至14B示出了根据本发明的一方面的执行PCI存储块操作的逻辑的一个实施例;
图15示出了包含本发明的一个或多个方面的计算机程序产品的一个实施例;
图16示出了包含并使用本发明的一个或多个方面的主计算机系统的一个实施例;
图17示出了包含并使用本发明的一个或多个方面的计算机系统的另一实施例;
图18示出了包括包含并使用本发明的一个或多个方面的计算机网络的计算机系统的另一例子;
图19示出了包含并使用本发明的一个或多个方面的计算机系统的各个元件的一个实施例;
图20A示出了包含并使用本发明的一个或多个方面的图19中的计算机系统的执行单元的一个实施例;
图20B示出了包含并使用本发明的一个或多个方面的图19中的计算机系统的分支单元的一个实施例;
图20C示出了包含并使用本发明的一个或多个方面的图19中的计算机系统的加载/存储单元的一个实施例;
图21示出了包含并使用根据本发明的一个或多个方面的仿真(emulated)主计算机系统的一个实施例。
具体实施方式
根据本发明的方面,控制由配置对适配器的访问。特别地,提供一种控制访问的能力,使得仅经授权的配置才能够访问指定的适配器,例如指定的适配器功能(例如,PCI功能)。例如,配置是操作系统、处理器、逻辑分区、逻辑分区中执行的操作系统、可调页存储模式客户(例如,客户操作系统)等。如此处使用的,术语操作系统包括设备驱动器。
在一个例子中,在
Figure BDA00002439910600061
中,可调页客户经由开始解释执行(SIE)指令以解释等级2被解释性地执行。例如,逻辑分区(LPAR)管理程序(hypervisor)执行SIE指令以开始物理的、固定的存储器中的逻辑分区。如果是该逻辑分区中的操作系统,它发出SIE指令以在其V=V(虚拟)存储中执行其客户(虚拟)机。因此,LPAR管理程序使用等级1SIE,且管理程序使用等级2SIE。
此外,如这里所使用的,术语“适配器”包括任意类型的适配器(例如存储适配器、处理适配器、网络适配器、加密适配器、PCI适配器、其他类型的输入/输出适配器等)。在一个实施例中,一适配器包括一个适配器功能。但是,在其他实施例中,一适配器可包括多个适配器功能。本发明的一个或多个方面可以应用,不管一适配器包含一个适配器功能或多个适配器功能。在一个实施例中,如果适配器包括多个适配器功能,那么根据本发明的一方面,此处的控制能力应用到每个适配器功能。在这里展示的例子中,适配器是与适配器功能(例如PCI功能)可互换地使用,除非另外说明。
此外,下面进一步使用的术语固件,包括例如处理器的微代码、毫代码(millicode)和/或宏代码。它包括例如用于实现更高级的机器代码的硬件级的指令和/或数据结构。在一个实施例中,它包括例如专有(proprietary)代码,该专有代码典型地作为包括可信软件的微代码或专用于底层硬件的微代码而被交付,并控制操作系统访问系统硬件。
参考图1A描述包含并使用本发明的一个或多个方面的计算环境的一个实施例。在一个例子中,计算环境100是由国际商业机器公司提供的
Figure BDA00002439910600071
服务器。
Figure BDA00002439910600072
服务器是基于由国际商业机器公司提供的
Figure BDA00002439910600073
关于
Figure BDA00002439910600074
的细节在IBM出版
Figure BDA00002439910600075
中描述,该出版物的标题是“z/Architecture Principles of Operation”(z/Architecture操作原理),IBM出版号SA22-7832-07,2009年2月。
Figure BDA00002439910600076
Figure BDA00002439910600077
是位于纽约州阿蒙克的国际商业机器公司的注册商标。在此使用的其他名字可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
在一个例子中,计算环境100包括经由存储控制器106耦合到系统存储器104(也称为主存储器)的一个或多个中央处理单元(CPU)102。为了访问系统存储器104,中央处理单元102发出包括被用于访问系统存储器的地址的读或写请求。包括在请求中的地址典型地不能直接用于访问系统存储器,且因此,其被转换为可直接用于访问系统存储器的地址。所述地址经由转换机制(XLATE)108而被转换。例如,使用例如动态地址转换(DAT),将地址从虚拟地址转换为真实或绝对的地址。
包括(必要时转换的)地址的请求被存储控制器106接收。在一个例子中,存储控制器106包含硬件且被用于仲裁对系统存储器的访问并维持存储器的一致性。该仲裁针对从CPU 102接收的请求以及从一个或多个适配器110接收的请求而执行。与中央处理单元类似,适配器向系统存储器104发出请求以获得对系统存储器的访问。
在一个例子中,适配器110是外围组件互连(PCI)或PCI Express(PCIe)适配器,其包括一个或多个PCI功能。PCI功能发出请求,该请求经由一个或多个交换器(例如,PCIe交换器)114被路由到输入/输出集线器112(例如,PCI集线器)。在一个例子中,输入/输出集线器包括含有一个或多个状态机的硬件,并且经由I/O到存储器总线120耦合到存储器控制器106。
输入/输出集线器包括例如根复合体(root complex)116,其从交换机接收请求。该请求包括被提供给地址转换和保护单元118的输入/输出地址,所述地址转换和保护单元118访问用于请求的信息。作为例子,该请求可包括输入/输出地址,该输入/输出地址被用来执行直接存储器访问(DMA)操作或请求消息信号中断(MSI)。地址转换和保护单元118访问用于DMA或MSI请求的信息。作为特殊的例子,对于DMA操作,可获得信息以转换地址。然后,将转换的地址转发到存储器控制器以访问系统存储器。
在一个例子中,从位于I/O集线器(例如,在地址转换和保护单元中)中的设备表项获得由适配器发出的用于DMA或MSI请求的信息。设备表项包括用于适配器的信息,并且每个适配器具有与其相关联的至少一个设备表项。例如,被分配给适配器的每个地址空间存在一个设备表项。对于从适配器发出的请求,使用所述请求中提供的请求id来对设备表项进行定位。
在计算环境的进一步实施例中,除了或替代一个或多个CPU 102,中央处理复合体耦合到存储器控制器106,如图1B所示。在这个例子中,中央处理复合体150包括例如一个或多个分区或区域152(例如,逻辑分区LP1-LPn)、一个或多个中央处理器(例如,CP1-CPm)154、以及管理程序156(例如,逻辑分区管理器),下面介绍上述内容中的每一个。
每个逻辑分区152能够用作单独的系统。即,每个逻辑分区可以独立地重置、利用操作系统或管理程序(例如,由纽约阿蒙克的国际商业机器公司提供的
Figure BDA00002439910600081
)进行初始加载(如果需要的话),并且利用不同的程序进行操作。在逻辑分区中运行的操作系统、管理程序或应用程序似乎具有对完整和全部系统的访问,但仅其一部分是可用的。硬件和许可内部码(还被称为微代码或毫代码)保持逻辑分区中的程序不受不同逻辑分区中的程序的干扰。这样允许多个不同的逻辑分组按时间片方式在单个或多个物理处理器上操作。在这种特定的实例中,每个逻辑分区具有驻留操作系统158,其对于一个或多个逻辑分区可以是不同的。在一个实施例中,操作系统158是由纽约阿蒙克的国际商业机器公司提供的
Figure BDA00002439910600091
或zLinux操作系统。是纽约阿蒙克的国际商业机器公司的注册商标。
中央处理器154是被分配给逻辑分区的物理处理器资源。例如,逻辑分区152包括一个或多个逻辑处理器,每个逻辑处理器代表被分配给分区的全部物理处理器资源154或物理处理器资源154的共享。底层(underlying)处理器资源可专用于所述分区或与另一分区共享。
通过由处理器154上运行的固件实现的管理程序156来管理逻辑分区152。逻辑分区152和管理程序156每个都包括一个或多个程序,所述程序驻留在与中央处理器相关联的中央存储的相应部分中。管理程序156的一个例子是由纽约阿蒙克的国际商业机器公司所提供的处理器资源/系统管理器(PR/SM)。
尽管在这个例子中描述了具有逻辑分区的中央处理复合体,可将本发明的一个或多个方面合并到其他处理单元或并且由其他处理单元来使用,包括多个处理单元中未被分区的单个或多个处理器处理单元。此处介绍的中央处理复合体仅是一个例子。
如此处描述的,适配器可包括一个或多个适配器功能。通过参照图1C来描述与适配器功能相关的其他细节。如图1C所示,每个适配器功能180经由一个或多个PCI交换机114耦合到I/O集线器112。I/O集线器112经由I/O到存储器总线120耦合到逻辑分区152。在这个例子中,未示出存储器控制器,但是可以使用存储器控制器。I/O集线器可直接地或经由存储器控制器耦合到逻辑分区。
每个适配器功能180具有与其相关联的功能表项182,所述功能表项包括与其相关联的适配器功能相关的信息。例如,如图2A所示,功能表项182具有多个字段,包括例如:
区域号202:这个字段包括在逻辑分区环境中使用的值,以指定区域或逻辑分区。这个字段的值指示哪个区域(例如,区域内的操作系统)拥有或具有对于这个功能表项相关联的适配器功能。
在进一步实施例中,可将区域号用于识别配置,而与其是否是逻辑分区环境无关。例如,其可以是另一配置标识符或操作系统标识符。
客户标识符204:当系统处于可调页存储模式中时,这个字段用于识别被允许访问这个适配器功能的客户;
状态指示符206:其提供以下指示:功能表项自身是否是有效的、功能是否是使能的、和/或功能是否处于错误状态等;
功能类型208:其提供适配器功能的类型的指示(例如,每个适配器一个功能;每个适配器多个功能等);
请求者ID(RID)210:其是适配器功能的标识符,所述适配器功能可包括适配器总线号、设备号和功能号。这个字段用于由适配器功能的配置空间的配置来访问。
如图3A所示,适配器功能包括存储器300,其具有多个地址空间,包括例如配置空间(例如,用于PCI功能的PCI配置空间)、I/O空间(例如,PCI I/O空间),以及一个或多个存储器空间(例如,PCI存储器空间)。
通过在配置发出的去往适配器功能的指令中指定配置空间来对配置空间进行寻址。在指令中还指定配置空间中的偏移量以及用于对包括RID的适当功能表项进行定位的功能句柄。固件接收指令并且确定其是否用于配置空间。因此,其使用RID来生成对I/O集线器的请求,并且I/O集线器创建请求以访问适配器。适配器的位置基于RID并且偏移量指定适配器的配置空间中的偏移量。例如,偏移量指定配置空间中寄存器号内的偏移量。
基地址寄存器(1到n)212:可能存在一个或多个基地址寄存器并且每个都用于指示适配器功能的存储器空间或I/O地址空间的基地址。其用于访问适配器功能的I/O空间和/或存储器空间。
例如,将访问适配器功能的指令中提供的偏移量增加到与获得要用于访问适配器功能的地址的指令中指定的地址空间相关联的基地址寄存器中的值。指令中提供的地址标识符识别要被访问的并且相应的BAR要被使用的适配器功能中的地址空间。
设备表索引(1到n)214(图2A):可能存在一个或多个设备表索引,并且每个索引是设备表中的对设备表项(DTE)进行定位的索引。每个适配器功能可能存在一个或多个设备表项,并且每个项包括与其适配器功能相关联的信息,包括用于处理适配器功能的请求(例如,DMA请求,MSI请求)的信息以及与对适配器功能(例如,PCI指令)的请求相关的信息。每个设备表项与被分配给适配器功能的系统存储器中的一个地址空间相关联。DTE中包括的信息可依赖于适配器功能所支持的操作或为适配器功能所使能的操作(下面更为详细地描述);以及
内部路由信息216:这个信息用于执行到适配的特定路由。作为例子,其包括例如节点、处理器芯片以及集线器寻址信息。
功能表项可包括更多,更少或不同的信息。所包括的信息可依赖于适配器功能所支持的操作或为适配器功能所使能的操作(下面更为详细地描述)。
为了访问用于给定适配器功能的特定功能表项,使用功能句柄184(图1C)。在一个例子中,将功能句柄的一个或多个比特用作功能表中对特定功能表项进行定位的索引。存在用于每个适配器功能的功能句柄184。在一个特定例子中,功能句柄包括多个参数。如图2B所示,功能句柄184包括例如指示句柄是否是被使能的使能指示器252;识别功能的功能号254(这是静态标识符并且可用于功能表中的索引);以及实例号256,其指示该功能句柄的特定实例。
如上所述,适配器功能可发出请求,例如存储器访问请求、中断请求等。此外,配置可发出请求到适配器功能。根据本发明的一方面,这些配置请求经由特定指令,其访问适配器或修改与适配器相关联的控制参数。示例指令包括PCI加载、PCI存储、并且修改PCI功能控制,仅举几例。这些指令专用于I/O基础架构(例如,PCI)。
在一个例子中,如图3A所示,利用CPU 310执行的操作系统发出加载指令312(例如,PCI加载)以访问功能的存储器300的地址空间中的一个。系统中可能存在多个适配器功能并且可能仅允许一个操作系统访问给定适配器。当操作系统发出PCI加载指令时,可通过例如固件来执行访问限制以确保允许发出指令的操作系统访问适配器功能内的地址空间。
在进一步例子中,CPU 310中执行的操作系统发出存储指令314(例如,PCI存储),其还可以访问地址空间中的一个。存在也需要被控制的其他适配器指令,使得仅操作系统(或其他配置)能够访问分配给他的适配器功能。
通过参照图4来描述控制操作系统对适配器功能的访问的一个实施例。尽管这个例子描述了操作系统访问,其也可以由其他配置来使用。
参照图4,最初,在步骤400,由系统管理员或客户来设置策略,将每个PCI功能与允许访问适配器功能的特定配置(例如,特定的操作系统、特定的逻辑分区等)相关联。所述策略例如是可重新配置的并且被保持在位于安全存储器中的I/O配置数据集中。
在系统初始化时,步骤402,固件(例如,可信任的固件)执行I/O体系基础设备(infrastructure)架构总线行走(bus walk)以确定体系基础设备中包括(例如插入)何种适配器功能。如果平台不支持由其重要产品数据所识别的适配器,固件不会将适配器考虑作为体系基础设备的一部分。在这种总线行走期间,步骤403,固件执行特定数量的配置。所述配置包括利用路由信息(例如,总线号和地址信息)来初始化PCIe交换机114,所述路由信息将允许分组去往和来自适配器功能的成功路由。此时,还可以利用所支持的适配器的请求者ID和BAR信息来初始化所支持的适配器的配置空间,其中BAR信息还与交换机中配置的路由信息一致。此后,为每个支持的适配器功能创建功能表项,并且利用一些信息来填充功能表项,步骤404。例如,固件在功能表项中设置之前配置的BAR信息以及所述请求者ID。基于所述策略,在指示哪个逻辑分组并且因此哪个操作系统访问对应于功能表项的适配器功能的每个功能表项中设置的区域号。在进一步的实施例中,其中未对计算环境进行逻辑分区,可由指示操作系统而不是逻辑分区的另一指示器来替换区域号。其他指示器也可以用于其他类型的配置。
此后,操作系统发出查询以确定其访问了哪个适配器功能(例如,那些分配的以及可能被分配的),步骤406。响应于所述查询,固件返回一个或多个适配器功能的列表。作为例子,固件扫描功能表,利用与请求操作系统的区域号相匹配的区域号来查找所有功能表项;并且返回区域表项匹配的适配器功能的列表。(在另一实施例中,可以返回部分列表)。对于列表中包括的每个适配器功能,在列表中提供功能句柄。
在一些点处,操作系统尝试经由例如指令来访问适配器功能(例如,查询适配器功能;访问功能的地址空间;或建立或修改用于适配器功能的设备表项等),步骤408。操作系统在指令中指出经由功能句柄来访问的适配器功能。于是,固件使用这个功能句柄来对于适配器功能对应的功能表项进行定位,步骤410。将功能表项中的区域号与操作系统所驻留的区域号进行比较,查询412。如果他们不匹配,那么拒绝访问(例如,阻止指令执行),步骤414。然而,如果他们匹配,那么做出进一步确定,在一个例子中,确定是否应当出于不同的原因来阻止访问,查询416。例如,功能表项中存储的状态用于确定操纵系统是否发出要被阻止的指令,且执行影响适配器功能的固件特权操作,例如恢复、固件下载等。
如果存在访问应当被阻止的指示,则做出阻止是否是临时的进一步确定,查询418。即,如果例如由功能表项中的状态所指示的,适配器功能仅是临时不可用,则可利用忙信号来完成指令,步骤420,并且其可以再次尝试。然而,如果适配器功能不是仅临时被阻止,那么拒绝访问,步骤422。
返回到查询416,如果不应当阻止访问,则允许访问,步骤424。例如,允许执行指令。这样结束处理。
除了上述内容,在进一步例子中,如果确定功能表项中的区域号与操作系统的区域号相匹配,可以执行附加的验证以允许客户(例如,VM客户)直接访问客户拥有的适配器。在这个例子中,执行检查以查看客户是否访问了适配器。例如,功能表项检查客户id。如果在项中存储了客户id,则处理继续;如果不是,则拒绝请求。
上述访问控制能力用于由配置发出给适配器功能的指令,例如PCI加载、PCI存储、PCI存储阻止、修改PCI功能控制和各种呼叫逻辑处理器CLP指令,其例如用于查询或使能/去能适配器功能。在这个例子中,指令是PCI指令,这是由于适配器功能是PCI适配器功能。然而,在其他例子中,可依赖于适配器功能的架构来使用其他I/O架构专用的指令。
下面描述与一些指令相关的其他细节。例如,为了使用PCI功能,对其进行使能。例如,希望使用PCI功能的操作系统执行查询以确定适于使用的一个或多个功能(基于I/O配置),并且这些功能中要被使能的一个功能。在一个例子中,使用呼叫逻辑处理器指令的集合PCI功能指令来对功能进行使能。图5A中示出了这个指令的一个实施例。如图所示,在一个例子中,呼叫逻辑处理器指令500包括指示其是呼叫逻辑处理器指令的操作码502;以及用于命令504的指示。在一个例子中,这个指示时描述要被执行的命令的请求块的地址。图5B中示出了这种请求块的一个实施例。
如图5B所示,在一个例子,请求块520包括多个参数,例如长度字段522,指示请求块的长度;命令字段524,指示集合PCI功能命令;PCI功能句柄526,其是被提供给使能或去能功能的句柄;操作码528,其用于指定使能或去能操作;以及多个DMA地址空间(DMAAS)530,其指示与特定PCI功能相关联的所请求的地址空间号。在其他实施方式中可包括更多、更少或不同的信息。例如,在可调页存储模式客户的主机发出指令的虚拟环境,提供客户身份(identity)。其他变化也是可能的。
响应于发出和处理呼叫逻辑处理器指令,返回响应块并且响应块中包括的信息依赖于要被执行的操作。图5C中示出了响应块的一个实施例。在一个例子中,响应块550包括:长度字段552,指示响应块的长度;响应码554,指示命令的状态;以及PCI功能句柄556,其标识PCI功能。响应于使能命令,PCI功能句柄是PCI功能的使能句柄。此外,在去能操作完成时,PCI功能句柄是未来可以由使能功能来进行使能的通用句柄。
通过参照图6来描述使能PCI功能的逻辑的一个实施例。在一个例子中,响应于发出呼叫逻辑处理器指令来发起所述逻辑,其中将所述命令设置为集合PCI功能命令并且将所述操作码设置为使能功能。例如,响应于操作系统或被授权以执行发出指令的所述逻辑的操作系统的设备驱动器,由处理器来执行所述逻辑。在其他实施方式中,在不使用呼叫逻辑处理器指令的情况下,可以执行逻辑。
参照图6,最初,做出呼叫逻辑处理器指令的请求块中提供的句柄是否是有效句柄的确定,查询600。即,句柄指向功能表中的有效项?或其在有效项范围之外?(例如,句柄的功能号部分指定安装的功能?)。如果句柄是未知的,那么提供指示句柄未被识别的相应响应码,步骤602。然而,如果句柄是已知的,那么做出句柄是否是使能的进一步查询,查询604。通过检查PCI功能句柄中的使能指示器来做出上述确定。如果设置指示句柄是使能的的指示,那么如所指示的返回响应码,步骤606。
然而,如果句柄是已知的并且不是使能的(即,对于实现是有效的),那么做出被分配给PCI功能的所请求的地址空间号是否大于最大值的确定,查询608。为了做出这个确定,将请求块中指定的DMA地址空间号与最大值(在一个例子中,基于策略来提供)进行比较。如果地址空间号大于最大值,那么提供指示用于DMA地址空间的无效值的响应码,步骤610。否则,做出所请求的地址空间号是否可用的确定,查询612。通过检查是否存在可用于所请求的地址空间号的设备表项来做出上述确定。如果所请求的地址空间号不可用,那么返回指示不存在足够资源的响应码,步骤614。否则,处理继续使能PCI功能。
所提供的句柄用于对功能表项进行定位,步骤616。例如,将句柄的一个或多个指定的比特用作功能表中的索引,以对特定功能表项进行定位。响应于对适当的功能表项进行定位,做出功能是否是使能的的确定,查询618。通过检查功能表项中的使能指示器来做出这种确定。如果功能已经被使能(即,将指示器设置为1),那么返回指示PCI功能已经处于所请求的状态的响应码,步骤620。
如果功能还没有被使能,那么处理继续确定功能是否处于永久错误状态,查询622。如果功能表项中的永久错误状态指示器指示其处于永久错误状态,那么返回指示这种情况的响应代码,步骤624。然而,如果功能不处于永久错误状态,那么做出是否已经为功能发起错误恢复的进一步确定,查询626。如果设置了功能表项中的恢复发起指示器,那么提供指示已经发起恢复的响应码,步骤628。否则,做出PCI功能是否忙的进一步查询,查询630。再次,如果功能表项中的忙指示器的检查指示PCI功能为忙,那么提供这种指示,步骤632,然而,如果PCI功能不处于永久错误状态,不发起恢复并且其不忙,那么做出是否允许操作系统使能所述PCI功能的进一步查询,步骤634。
在一个例子中,允许检查包括将FTE中的区域号与发出指令的操作系统的区域号进行验证。如果他们不相等,则不允许操作系统。如果他们相等,那么检查功能表项中的允许指示器。如果基于功能表项的允许指示器不进行允许,那么提供指示未经授权的动作的响应码,步骤636。然而,如果成功地通过所有测试,那么可做出是否存在可用于这种PCI功能的任意DTE的进一步确定,查询638。作为例子,DTE是可用的的确定可基于I/O集线器中目前不是使能的的DTE。因此,可应用策略以进一步限制可用于指定操作系统或逻辑分区的DTE的数量。可以分配可访问适配器的任意可用DTE。如果不存在可用的DTE,那么返回指示一个或多个所请求的DTE是不可用的的响应码,步骤640。
如果DTE是可用的,那么分配且使能对应于所请求的地址空间号的多个DTE,步骤642。在一个例子中,所述使能包括设置要被使能的每个DTE中的使能指示器。此外,在这个例子中,所述使能包括建立内容可寻址存储器(CAM)以提供索引给每个DTE。例如,对于每个DTE,将CAM中的条目与索引一起加载,并且CAM促进DTE的定位。
此外,DTE与概念表项相关联,步骤644。这包括,例如,在功能表项中包括每个DTE索引。然后,通过设置功能表项中的使能指示器来将功能标记为使能,步骤646。此外,设置句柄中的使能位,并且更新实例号,步骤648。然后返回这个允许对PCI适配器的使用的使能句柄,步骤650。例如,响应于对功能进行使能,可以执行用于地址转换和中断的注册,可由PCI功能来执行DMA操作和/或可以将加载、存储和存储块指令发布给功能。
如上所指示的,在对功能进行使能之后,通过修改PCI功能控制指令在DTE和/或FTE中设置各种操作参数。通过参照图7A至7D来介绍,修改PCI功能控制指令的一个例子。
参照图7A,修改PCI功能控制指令700包括例如指示修改PCI功能控制指令的操作码702;指定所包括的各种信息所在位置的第一字段704,所述信息是关于操作参数正为其建立的适配器功能的信息;以及指明从其获取PCI功能信息块(FIB)的位置的第二字段706。以下将进一步描述由字段1和2指定的位置的内容。
在一个实施例中,字段1指定包括各种信息的通用寄存器。如图7B所示,寄存器的内容包括例如功能句柄(handle)710,其标识适配器功能的句柄,修改指令是代表该功能执行的;地址空间712,其指定与由功能句柄指定的适配器功能有关的系统存储器中的地址空间;操作控制714,其指定将针对适配器功能而执行的操作;以及状态716,其以预定码提供当完成指令时关于指令的状态。
在一个例子中,如图7C所示,字段2指示PCI功能信息块(FIB)的逻辑地址720,该PCT功能信息块包括关于有关适配器功能的信息。功能信息块被用于更新设备表项和/或与适配器功能有关的功能表项(或其他位置)。该信息在适配器的初始化和/或配置期间,以及/或者响应于特定事件而被存储在FIB中。
参考图7D描述关于功能信息块(FIB)的进一步细节。在一个实施例中,功能信息块750包括以下字段:
格式751:该字段指定FIB的格式。
拦截控制752:该字段被用来指示特定指令由可调页模式客户(pageable mode guest)进行的客户执行是否导致指令拦截;
错误指示754:该字段包括用于直接存储器访问和适配器中断的错误状态指示。当该位被设置(例如1)时,在执行用于适配器功能的直接存储器访问或适配器拦截时,检测到一个或多个错误;
加载/存储阻止756:该字段指示加载/存储操作是否被阻止;
PCI功能有效758:该字段包括用于适配器功能的使能控制。当该位被设置(例如1)时,适配器功能被认为对于I/O操作而被使能;
地址空间注册760:该字段包括用于适配器功能的直接存储器访问使能控制。当该字段被设置(例如1)时,直接存储访问被使能;
页尺寸761:该字段指示将被DMA存储器访问所访问的页或其他存储单元的尺寸;
PCI基地址(PBA)762:该字段是用于分配给适配器功能的系统存储器中的地址空间的基地址。它表示适配器功能被允许使用以直接存储器访问指定的DMA地址空间的最低虚拟地址;
PCI地址界限(PAL)764:该字段表示适配器功能被允许在指定的DMA地址空间内访问的最高虚拟地址;
输入/输出地址转换指针(IOAT)766:输入/输出地址转换指针指定由PCI虚拟地址转换使用的任何转换表中的第一个,或者它可直接指定作为转换结果的存储帧的绝对地址;
中断子类(ISC)768:该字段包括用于针对适配器功能给出适配器中断的中断子类;
中断数(NOI)770:该字段指定针对适配器功能接受的不同的中断代码的数量。该字段也以位定义了由适配器中断位向量地址和适配器中断位向量偏置字段指定的适配器中断位向量的尺寸;
适配器中断位向量地址(AIBV)772:该字段指定用于适配器功能的适配器中断位向量的地址。该向量在中断处理中使用;
适配器中断位向量偏移774:该字段指定用于适配器功能的第一适配器中断位向量位的偏移;
适配器中断概要位地址(AISB)776:该字段提供指定可选地在中断处理中使用的适配器中断概要位的地址;
适配器中断概要位偏移778:该字段提供到适配器中断概要位向量中的偏移;
功能测量块(FMB)地址780:该字段提供用于收集关于适配器功能的测量的功能测量块的地址;
功能测量块键(key)782:该字段包括访问功能测量块的访问键;
概要位通知控制784:该字段指示是否存在正使用的概要位向量;
指令授权令牌786:该字段用于确定可调页存储模式客户(例如,V=V客户)是否被授权执行PCI指令而没有主机干预;以及
地址转换格式787:该字段指示用于将在转换中使用的最高级转换表的地址转换的所选择的格式(例如,段表、区域(region)第三等的指示)。
在配置、初始化、和/或特定事件出现期间获得功能信息块中的信息。
根据本发明的一方面,在修改PCI功能控制指令中指定的功能信息块被用于修改选择的设备表项、功能表项和/或与在指令中指定的适配器功能有关的其他固件控制。通过修改设备表项、功能表项和/或其他固件控制,为适配器提供某些服务。这些服务包括,例如,适配器中断;地址转换;重置错误状态;重置加载/存储阻止;设置功能测量参数;以及设置拦截控制。
参考图8描述与修改PCI功能控制指令有关的逻辑的一个实施例。在一个例子中,指令由操作系统(或其他配置)发出并由执行操作系统的处理器(例如,固件)执行。在此处的例子中,指令和适配器功能是基于PCI的。但是,在其他实施例中,可使用不同的适配器结构和相应的指令。
在一个例子中,操作系统向指令提供以下操作数(例如,在由指令指定的一个或多个寄存器中);PCI功能句柄;DMA地址空间标识符;操作控制;以及功能信息块的地址。
参考图8,初始地,确定是否安装了允许修改PCI功能控制指令的工具(facility),查询800。该确定通过例如检查存储在例如控制块中的指示器而做出。如果工具未安装,提供异常条件,步骤802。否则,确定指令是否由可调页存储模式客户(或其他客户)发出,查询804。如果是,主机操作系统将仿真用于该客户机的操作,步骤806。
否则,确定一个或多个操作数是否被对准,查询808。例如,确定功能信息块的地址是否是在双字边界。在一个例子中,这是可选的。如果操作数未被对准,则提供异常条件,步骤810。否则,确定功能信息块是否可访问,查询812。如果否,则提供异常条件,步骤814。否则,确定在修改PCI功能控制指令的操作数中提供的句柄是否被使能,查询816。在一个例子中,该确定通过检查句柄中的使能指示器而做出。如果句柄没有被使能,则提供异常条件,步骤818。
如果句柄被使能,则句柄被用于定位功能表项,步骤820。即,至少一部分句柄被用于索引到功能表中以定位对应于适配器功能的功能表项,操作参数将为该适配器功能建立。
确定功能表项是否被发现,查询822。如果否,则提供异常条件,步骤824。否则,做出操作系统是否得到授权的确定,查询826。在一个例子中,这包括将FTE中的区域号与发出指令的操作系统的区域号进行验证。如果他们不相等,则操作系统没有得到授权。如果他们相等,那么做出发出指令的配置是否是客户的进一步确定。如果是,则提供异常条件(例如拦截到主机),步骤828。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后确定该功能是否被使能,查询830。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤832。
如果功能被使能,则确定恢复是否是活动的,查询834。如果由功能表项中的恢复指示器确定恢复是活动的,则提供异常条件,836。但是,如果恢复不是活动的,则进一步确定功能是否忙,838。该确定是通过查询功能表项中的示忙器而做出的。如果功能忙,则提供忙条件,步骤840。利用该忙条件,可重试该指令,而不是放弃它。
如果功能不忙,则进一步确定功能信息块格式是否有效,查询842。例如,检查FIB的格式字段以确定该格式是否由系统支持。如果它是无效的,则提供异常条件,步骤844。如果功能信息块格式是有效的,则进一步确定在指令的操作数中指定的操作控制是否是有效的,查询846。即,该操作控制是否是用于该指令的指定操作控制中的一个。如果它是无效的,则提供异常条件,步骤848。但是,如果该操作控制是有效的,则继续处理指定的特定操作控制。
可以指定包括例如注册/注销地址转换;注册/注销适配器中断;设置拦截控制;重置错误状态;重置加载/存储阻止指示器等的各种操作。对于这些操作的每一个,将与操作相关的可操作参数从FIB拷贝到DTE和/或FTE(或其他位置)。
在初始化之后,客户可执行PCI加载、PCI存储和PCI存储块指令,下面介绍他们的每一个。
开始参照图9A,示出了PCI加载指令的一个实施例。如图所示,PCI加载指令900包括例如,操作码902,指示PCI加载指令;第一字段904,指定将加载从适配器功能取回的数据的位置;以及第二字段906,指定包括与适配器功能相关的各种信息的位置,其中从所适配器功能加载数据。下面进一步介绍由字段1和2所指定的位置的内容。在一个例子中,字段1指定通用寄存器,以及如图9B所示,所述寄存器的内容904包括从指令中指定的适配器位置加载的连续范围的一个或多个字节。在一个例子中,将数据加载到寄存器的最右字节位置。
在一个实施例中,字段2指示包括各种指令的通用寄存器对。如图9C所示,寄存器的内容包括例如:
使能句柄910:该字段是适配器功能的使能功能句柄,其中从适配器功能加载数据;
地址空间912:该字段标识适配器功能内的地址空间,其中从适配器功能加载数据;
地址空间内的偏移量914:该字段指定了所指定地址空间内的偏移量,其中从所指定的地址空间加载数据;
长度字段916:该字段指定加载操作的长度(例如,要被加载的字节的数量);以及
状态字段918:该字段提供状态码,当指令以预定的条件码结束时,可使用所述状态码。
在一个实施例中,在适配器功能的指定PCI地址空间的整数界限内包含从适配器功能加载的字节。当地址空间字段指定存储器地址空间时,整数界限尺寸例如是双字。当地址空间字段指定I/O地址空间或配置地址空间时,整数界限尺寸例如是双字。
通过参照图10A至10B来描述与PCI加载指令相关联的逻辑的一个实施例。在一个例子,通过操作系统(或其他配置)来发出指令并且由执行操作系统的处理器(例如,固件)来执行指令。在此处的例子中,指令和适配器功能是基于PCI的。然而,在其他例子中,可以使用不同的适配器架构和相应指令。
为了发出指令,操作系统向指令(例如,在由指令指定的一个或多个寄存器)提供下述操作符:PCI功能句柄、PCI地址空间(PCIAS)、PCI地址空间中的偏移量以及要被加载的数据的长度。在成功完成PCI负载指令后,在由指令所指定的位置(例如,寄存器)中加载数据。
参照图10A,初始地,做出是否安装了允许PCI加载指令的工具的确定,查询1000。例如,通过检查控制块中存储的指示器来做出上述确定。如果没有安装工具,则提供异常条件,步骤1002。否则,做出操作符是否对齐的确定,查询1004。例如,如果某些操作符需要是奇数/偶数寄存器对,则做出是否满足这些要求的确定。如果操作符没有对齐,那么提供异常,步骤1006。否则,如果安装了工具并且操作符是对齐的,做出PCI加载指令的操作符中提供的句柄是否被使能的确定,查询1008。在一个例子中,通过检查句柄中的使能指示器来做出这种确定。如果句柄未被使能,则提供异常条件,步骤1010。
如果句柄被使能,则将句柄用于对功能表项进行定位,步骤1012。即,将句柄的至少一部分用作功能表中的索引以对功能表项进行定位,所述功能表项对应于从中加载数据的适配器功能。
此后,做出操作系统是否被授权的确定,查询1014。在一个例子中,这包括将FTE中的区域号与发出指令的操作系统的区域号进行验证。如果他们不相等,则操作系统没有得到授权。如果他们相等,那么做出发出指令的配置是否是客户的进一步确定。如果是,则提供异常条件,步骤1016。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后做出该功能是否被使能的确定,查询1018。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤1020。
如果功能被使能,则做出地址空间是否是有效的的确定,查询1022。例如,指定的地址空间是否是适配器功能的指定地址空间以及是否适合于所述指令。如果地址空间无效,则提供异常条件,步骤1024。否则,做出是否阻止加载/存储的确定,查询1026。在一个例子中,通过检查功能表项中的状态指示器来做出该确定。如果阻止加载/存储,那么提供异常条件,步骤1028。
然而,如果不阻止加载/存储,做出恢复是否是激活的的确定,查询1030。在一个例子中,通过检查功能表项中的恢复发起指示器来做出该确定。如果恢复是激活的,那么提供异常条件,步骤1032。否则,做出功能是否是忙的的确定,查询1034。通过检查功能表项中的忙指示器来做出该确定。如果功能是忙的,那么提供忙条件,步骤1036。利用忙条件,可以重试指令,而不是丢弃。
如果功能不忙,那么做出指令中指定的偏移量是否是有效的的进一步确定,查询1038。即,偏移量与基址内操作的长度和如功能表项中所指定的地址空间的长度相结合?如果否,则提供异常条件,步骤1040。然而,如果偏移量是有效的,那么做出长度是否是有效的的确定,查询1042。即,使地址空间类型、地址空间内的偏移量以及整数界限尺寸是长度有效的。如果不是,则提供异常条件,步骤1044。否则,处理继续加载指令。(在一个实施例中,固件执行上述检查)。
继续图10B,由固件做出加载是否用于适配器功能的配置地址空间的确定,查询1050。即,基于适配器功能的存储器的配置,在指令中提供给的特定地址空间是配置空间?如果是,那么固件执行各种处理以提供请求给耦合到适配器功能的集线器;然后,所述集线器将请求路由到功能,步骤1052。
例如,固件从指令操作符中提供的功能句柄所指向的功能表项获得请求者ID。此外,基于功能表项中的信息(例如,内部路由信息),固件确定接收所述请求的集线器。即,环境可具有一个或多个集线器,并且固件确定耦合到适配器功能的集线器。然后,其将请求转发到集线器。所述集线器生成配置读取请求分组,其从PCI总线流出到由功能表项中RID所标识的适配器功能。配置读取请求包括用于取回数据的RID和偏移量(即,数据地址),如下所述。
返回查询1050,如果所指定的地址空间不是配置空间,那么固件再次执行各种处理以将请求提供给集线器,步骤1054。固件使用句柄来选择功能表项并且其通过所述表项获得对适当集线器进行定位的信息。其还计算在加载操作中使用的数据地址。通过将从功能表项获得的BAR起始地址(利用与指令中提供的地址空间标识符相关联的BAR)加上指令中提供的偏移量来计算所述地址。将所述计算的数据地址提供给集线器。然后,集线器获取所述地址并且将其包括在在PCI总线上流到适配器功能的请求分组中,例如DMA读取请求分组。
响应于通过步骤1052或步骤1054接收请求,适配器功能从特定位置(即,在数据地址处)取回所请求的数据并且响应于所述请求返回所述数据,步骤1056,将所述响应从适配器功能转发到I/O集线器。响应于接收所述请求,集线器将响应转发到发起处理器。然后,发起处理器从响应分组获取数据并且在指令中指定的指定位置加载所述数据(例如,字段1)PCI加载操作利用成功的指示来结束(例如,设置为零的条件码)。
除了从适配器功能获取数据并且将其存储在指定位置的加载指令,可以执行的另一指令是存储指令。存储指令在适配器功能的指定位置存储数据。通过参考图11A来描述PCI存储指令的一个实施例。如图所示,PCI存储指令1100包括,例如,操作码1102,指示PCI存储指令;第一字段1104,指定包括要被存储在适配器功能的数据的位置;以及第二字段1106,指定包括与适配器功能相关的各种信息的位置,其中要将数据存储到所述适配器功能。下面进一步介绍由字段1和2所指定的位置的内容。
在一个例子中,字段1指定通用寄存器,以及如图11B所示,所述寄存器的内容1104包括要被存储到适配器功能的指定位置的数据的连续范围的一个或多个字节。在一个例子中,存储寄存器的最右字节位置的数据。
在一个实施例中,字段2指示包括各种指令的通用寄存器对。如图11B所示,寄存器的内容包括例如:
使能句柄1110:该字段是适配器功能的使能功能句柄,其中将数据存储到适配器功能;
地址空间1112:该字段标识适配器功能内的地址空间,其中将数据存储到适配器功能;
地址空间内的偏移量1114:该字段指定了所指定地址空间内的偏移量,其中将数据存储到所指定的地址空间;
长度字段1116:该字段指定存储操作的长度(例如,要被存储的字节的数量);以及
状态字段1118:该字段提供状态码,当指令以预定的条件码结束时,可使用所述状态码。
通过参照图12A至12B来描述与PCI存储指令相关联的逻辑的一个实施例。在一个例子,通过操作系统来发出指令并且由执行操作系统的处理器(例如,固件)来执行指令。
为了发出指令,操作系统向指令(例如,在由指令指定的一个或多个寄存器)提供下述操作符:PCI功能句柄、PCI地址空间(PCIAS)、PCI地址空间中的偏移量、要被存储的数据的长度以及指向要被存储的数据的指针。在成功完成PCI存储指令后,在由指令所指定的位置中存储数据。
参照图12A,初始地,做出是否安装了允许PCI存储指令的工具的确定,查询1200。例如,通过检查控制块中存储的指示器来做出上述确定。如果没有安装工具,则提供异常条件,步骤1202。否则,做出操作符是否对齐的确定,查询1204。例如,如果某些操作符需要是奇数/偶数寄存器对,则做出是否满足这些要求的确定。如果操作符没有对齐,那么提供异常,步骤1206。否则,如果安装了工具并且操作符是对齐的,做出PCI存储指令的操作符中提供的句柄是否被使能的确定,查询1208。在一个例子中,通过检查句柄中的使能指示器来做出这种确定。如果句柄未被使能,则提供异常条件,步骤1210。
如果句柄被使能,则将句柄用于对功能表项进行定位,步骤1212。即,将句柄的至少一部分用作功能表中的索引以对功能表项进行定位,所述功能表项对应于向其存储数据的适配器功能。
此后,做出操作系统是否被授权的确定,查询1214。在一个例子中,这包括将FTE中的区域号与发出指令的操作系统的区域号进行验证。如果他们不相等,则操作系统没有被授权。如果他们相等,那么做出发出指令的配置是否是客户的进一步确定。如果是,则提供异常条件,步骤1216。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后做出该功能是否被使能的确定,查询1218。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤1220。
如果功能被使能,则做出地址空间是否是有效的的确定,查询1222。例如,指定的地址空间是否是适配器功能的指定地址空间以及是否适合于所述指令。如果地址空间无效,则提供异常条件,步骤1224。否则,做出是否阻止加载/存储的确定,查询1226。在一个例子中,通过检查功能表项中的状态指示器来做出该确定。如果阻止加载/存储,那么提供异常条件,步骤1228。
然而,如果不阻止加载/存储,做出恢复是否是激活的的确定,查询1230。在一个例子中,通过检查功能表项中的恢复发起指示器来做出该确定。如果恢复是激活的,那么提供异常条件,步骤1232。否则,做出功能是否是忙的的确定,查询1234。通过检查功能表项中的忙指示器来做出该确定。如果功能是忙的,那么提供忙条件,步骤1236。利用忙条件,可以重试指令,而不是丢弃。
如果功能不忙,那么做出指令中指定的偏移量是否是有效的的进一步确定,查询1238。即,偏移量与基址内操作的长度和如功能表项中所指定的地址空间的长度相结合?如果否,则提供异常条件,步骤1240。然而,如果偏移量是有效的,那么做出长度是否是有效的的确定,查询1242。即,使地址空间类型、地址空间内的偏移量以及整数界限尺寸是长度有效的。如果不是,则提供异常条件,步骤1244。否则,处理继续存储指令。(在一个实施例中,固件执行上述检查)。
继续图12B,由固件做出存储是否用于适配器功能的配置地址空间的确定,查询1250。即,基于适配器功能的存储器的配置,在指令中提供给的特定地址空间是配置空间?如果是,那么固件执行各种处理以提供请求给耦合到适配器功能的集线器;然后,所述集线器将请求路由到功能,步骤1252。
例如,固件从指令操作符中提供的功能句柄所指向的功能表项获得请求者ID。此外,基于功能表项中的信息(例如,内部路由信息),固件确定接收所述请求的集线器。即,环境可具有一个或多个集线器,并且固件确定耦合到适配器功能的集线器。然后,其将请求转发到集线器。所述集线器生成配置写入请求分组,其从PCI总线流出到由功能表项中RID所标识的适配器功能。配置写入请求包括用于存储数据的RID和偏移量(即,数据地址),如下所述。
返回查询1250,如果所指定的地址空间不是配置空间,那么固件再次执行各种处理以将请求提供给集线器,步骤1254。固件使用句柄来选择功能表项并且其通过所述项获得对适当集线器进行定位的信息。其还计算在存储操作中使用的数据地址。通过将从功能表项获得的BAR起始地址加上指令中提供的偏移量来计算所述地址。将所述计算的数据地址提供给集线器。然后,集线器获取所述地址并且将其包括在在PCI总线上流到适配器功能的请求分组中,例如DMA写入请求分组。
响应于通过步骤1252或步骤1254接收请求,适配器功能将所请求的数据存储到指定位置(即,在数据地址处),步骤1256。PCI存储操作利用成功的指示来结束(例如,设置为零的条件码)。
除了典型地加载或存储最大例如8字节的加载和存储指令,可以执行的另一指令时存储块指令。存储块指令在适配器功能的指定位置处存储更大的数据块(例如,16、32、64、128或256字节);不是必须将块尺寸限制为尺寸是2的乘方。在一个例子中,指定的位置在适配器功能的存储器空间中(不是I/O或配置空间)。
通过参考图13A来描述PCI存储块指令的一个实施例。如图所示,PCI存储块指令1300包括,例如,操作码1302,指示PCI存储块指令;第一字段804,指定包括关于适配器功能的各种信息的位置,其中将数据存储到所述适配器功能;第二字段1306,指定包括指定地址空间内的偏移量的位置,其中将数据存储到所述指定地址空间;以及第三字段1308,指定包括要被存储在适配器功能中的数据的系统存储器地址的位置。下面进一步介绍由字段1,2和3所指定的位置的内容。
在一个例子中,字段1指定包括各种信息的通用寄存器。如图13B所示,所述寄存器的内容包括例如:
使能句柄1310:该字段是适配器功能的使能功能句柄,其中将数据存储到适配器功能;
地址空间1312:该字段标识适配器功能内的地址空间,其中将数据存储到适配器功能;
长度字段1314:该字段指定存储操作的长度(例如,要被存储的字节的数量);以及
状态字段1316:该字段提供状态码,当指令以预定的条件码结束时,可使用所述状态码。
在一个例子中,字段2指定通用寄存器,并且如图13C所示,寄存器的内容包括指出了指定地址空间内的偏移量的值(例如,64位无符号整数),其中将数据存储到所述指定地址空间。
在一个例子中,如图13D所示,字段3包括系统存储器1322中要被存储到适配器功能中的数据的第一字节的逻辑地址。
通过参照图14A至14B来描述与PCI存储块指令相关联的逻辑的一个实施例。在一个例子,通过操作系统来发出指令并且由执行操作系统的处理器(例如,固件)来执行指令。
为了发出指令,操作系统向指令(例如,在由指令指定的一个或多个寄存器中)提供下述操作符:PCI功能句柄、PCI地址空间(PCIAS)、PCI地址空间中的偏移量、要被存储的数据的长度以及指向要被存储的数据的指针。指针操作符可包括寄存器和有符号或无符号的移位。在成功完成PCI存储块指令后,在由指令所指定的位置中存储数据。
参照图14A,初始地,做出是否安装了允许PCI存储块指令的工具的确定,查询1400。例如,通过检查控制块中存储的指示器来做出上述确定。如果没有安装工具,则提供异常条件,步骤1402。否则,如果安装了工具,则做出PCI存储块指令的操作符中提供的句柄是否被使能的确定,查询1404。在一个例子中,通过检查句柄中的使能指示器来做出这种确定。如果句柄未被使能,则提供异常条件,步骤1406。
如果句柄被使能,则将句柄用于对功能表项进行定位,步骤1412。即,将句柄的至少一部分用作功能表中的索引以对功能表项进行定位,所述功能表项对应于向其存储数据的适配器功能。此后,做出操作系统是否被授权的确定,查询1414。在一个例子中,这包括将FTE中的区域号与发出指令的操作系统的区域号进行验证。如果他们不相等,则操作系统没有被授权。如果他们相等,那么做出发出指令的配置是否是客户的进一步确定。如果是,则提供异常条件,步骤1416。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后做出该功能是否被使能的确定,查询1418。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤1420。
如果功能被使能,则做出地址空间是否有效的确定,查询1422。例如,指定的地址空间是否是适配器功能的指定地址空间以及其中一个是否适合于所述指令(即,存储器空间)。如果地址空间无效,则提供异常条件,步骤1424。否则,做出是否阻止加载/存储的确定,查询1426。在一个例子中,通过检查功能表项中的状态指示器来做出该确定。如果阻止加载/存储,那么提供异常条件,步骤1428。
然而,如果不阻止加载/存储,做出恢复是否激活的确定,查询1430。在一个例子中,通过检查功能表项中的恢复发起指示器来做出该确定。如果恢复是激活的,那么提供异常条件,步骤1432。否则,做出功能是否忙的确定,查询1434。通过检查功能表项中的忙指示器来做出该确定。如果功能是忙的,那么提供忙条件,步骤1436。利用忙条件,可以重试指令,而不是丢弃。
如果功能不忙,那么做出指令中指定的偏移量是否有效的进一步确定,查询1438。即,偏移量与基址内操作的长度和功能表项中所指定的地址空间的长度相结合?如果否,则提供异常条件,步骤1440。然而,如果偏移量是有效的,那么做出长度是否是有效的确定,查询1442。即,使地址空间类型、地址空间内的偏移量以及整数界限尺寸是长度有效的。如果不是,则提供异常条件,步骤1444。否则,处理继续存储指令。(在一个实施例中,固件执行上述检查)。
继续图14B,由固件做出包括要被存储的数据的存储器是否可访问的确定,查询1450。如果否,则提供异常条件,步骤1452。如果是,那么固件执行各种处理以提供请求给耦合到适配器功能的集线器;集线器然后将请求路由到功能,步骤1454。
例如,固件使用句柄来选择功能表项并且其通过所述表项来获得对适当集线器进行定位的信息。其还计算要在存储块操作中使用的数据地址。通过将从功能表项获得的BAR起始地址(利用由地址空间标识符所标识的BAR)加上指令中提供的偏移量来计算所述地址。将所述计算的数据地址提供给集线器。此外,从系统存储器取回由指令中提供的地址所参考的数据并且将其提供给I/O集线器。然后,集线器获取所述地址并且将其包括在在PCI总线上流到适配器功能的请求分组中,例如DMA写入请求分组。
响应于接收请求,适配器功能将所请求的数据存储到指定位置(即,在数据地址处),步骤1456。PCI存储块操作利用成功的指示来结束(例如,设置为零的条件码)。
上面详细介绍的是用于通过配置来控制对特定适配器功能的访问的能力。每个适配器功能具有与其相关联的功能表项并且位于功能表项内的每个适配器功能是允许何种配置(例如,操作系统、逻辑分区、客户等)访问对应于表项的适配器功能的指示。通过可重新配置的策略来确定上述内容。当配置发出指令到适配器功能时,由固件实施策略。当适配器功能处于特权固件的控制下(例如,恢复中)时,修改指令执行。当适配器正在进行系统维护或处于其他指定原因时,阻止访问。
提供直接访问适配器并且不需要使用单独的I/O分区的配置。提供分区之间的严格隔离,且提供对适配器的非常低延迟的访问。不需要分区之间为了控制对适配器的访问的通信。其提供控制,而不使用用于适配器专用指令的页表。
在此描述的实施例中,适配器是PCI适配器。如在此使用的,PCI指根据由外围组件互连特别兴趣组(PCI-SIG)定义的基于PCI的规范而实现的任何适配器,包括但不限于PCI或PCIe。在一个特定例子中,快速外围组件互连(PCIe)是组件级互连标准,其定义了用于I/O适配器和主机系统之间的事务的双向通信协议。根据用于PCIe总线上的传输的PCIe标准,PCIe通信被封装在包中。源于I/O适配器且止于主机系统的事务被称为上行事务。源于主机系统且止于I/O适配器的事务被称为下行事务。PCIe拓扑基于成对(例如,一个上行链路,一个下行链路)以形成PCIe总线的点对点单向链路。PCIe标准由PCI-SIG维护并公布。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图15,在一个例子中,计算机程序产品1500包括,例如,一个或多个计算机可读存储介质1502,在其上存储有计算机可读的程序代码装置或逻辑1504,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
尽管以上描述了各种实施例,这些仅是例子。例如,其他体系结构的计算环境可包含并使用本发明的一个或多个方面。作为例子,除了System
Figure BDA00002439910600341
服务器之外的服务器,诸如由国际商业机器公司提供的Power Systems服务器或其他服务器,或其他公司的服务器,可包括、使用和/或受益于本发明的一个或多个方面。而且,尽管在此示出的例子中,适配器和PCI集线器被认为是服务器的一部分,在其他实施例中,它们不是必须被认为是服务器的一部分,而是可被简单地认为是耦合到计算环境的系统存储器和/或其他组件。计算环境不需要是服务器。而且,尽管适配器是基于PCI的,可与其他适配器或其他I/O组件一起使用本发明的一个或多个方面。适配器和PCI适配器仅仅是例子。此外,在不脱离本发明的范围的情况下,可以在功能表项、设备表项和/或功能句柄中包括更多、更少或不同的信息。进一步地,尽管介绍了表,但是可以使用任意数据结构并且术语表包括所有这样的数据结构。更进一步地,可由本发明的一个或多个方面来控制其他指令。许多其他变化是可能的。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
参考图16,其描述了实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包括与计算机存储器(即,中央存储器)5002通信的一个或多个CPU,以及到存储介质设备5011和网络5010的I/O接口,以用于与其他计算机或SAN等通信。CPU 5001符合具有架构指令集和架构功能的架构。CPU 5001可具有动态地址转换(DAT)5003,其用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型地包括用于高速缓存转换的转换后备缓冲器(TLB)5007,这样稍后对计算机存储器5002块的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处理器5001之间。高速缓存5009可以是分层的,具有可被多于一个的CPU获得的大高速缓存,以及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施方式中,较低级的高速缓存被拆分以为指令获取和数据访问提供单独的低级高速缓存。在一个实施例中,由指令获取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。指定被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执行。
需注意的是,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括持久分配地存储位置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之前都将(从输入设备)被加载到主存储器。
主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。
可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速缓存属性)指令,其返回高速缓存线的字节尺寸。模型也可提供PREFETCH DATA(预取数据)和PREFETCH DATA RELATIVELONG(预取较长数据)指令,其实现存储到数据或指令高速缓存中的预取,或数据从高速缓存的释放。
存储器被视为位的长水平串。对于大部分操作来说,以从左到右的顺序进行对存储器的访问。位串被细分为八个位的单位。八位单位被称为字节,其是所有信息格式的基本构件。存储器中的每个字节位置由唯一的非负整数标识,该非负整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,在左边从0开始且以从左到右的顺序进行。地址是无符号二进制整数,且是24、31或64位。
信息一次一个字节或一组字节地在存储器和CPU或通道子系统之间传递。除非另有指定,例如在
Figure BDA00002439910600371
中,存储器中的一组字节由该组的最左边的字节寻址。组中的字节的数量可由将被执行的操作暗示或显式地指定。当在CPU操作中使用时,一组字节被称为字段。在字节的每个组内,例如在
Figure BDA00002439910600372
中,位以从左到右的顺序被编号。在中,最左边的位有时候被称为“高阶”位且最右边的位被称为“低阶”位。但是,位数不是存储器地址。仅字节可被寻址。为了操作存储器中的字节的单个位,访问整个字节。字节上的位从左到右被编号为0到7(例如在
Figure BDA00002439910600374
中)。地址中的位被编号为对于24位地址的8-31或40-63,或者对于31位地址的1-31或33-63;它们被编号为对于64位地址的0-63。在多个字节的任何其他的固定长度的格式中,构成格式的位从0开始被连续编号。为了错误检测,且优选地为了校正,一个或多个校验位可与每一个字节或一组字节一起被传递。这样的校验位由机器自动生成且不能被程序直接控制。存储容量以字节的数量来表示。当存储器操作数字段的长度由指令的操作码暗示时,字段被称为具有固定长度,其可以是一个、两个、四个、八个或十六个字节。可为某些指令暗示更大的字段。当存储器操作数字段的长度没有被暗示,而是被显式地表示时,该字段被称为具有可变长度。可变长度的操作数可以一个字节的增量(或者对于一些指令,以两个字节倍数或其他倍数)在长度上可变。当信息被放在存储器中时,仅替换被包括在指定的字段中的哪些字节位置的内容,即使到存储器的物理路径的宽度可能大于正被存储的字段的长度。
某些信息单元位于存储器中的整数界限上。对于信息单元,当其存储器地址是以字节表示的单元长度的倍数时,界限被称为是整数的。特殊的名称被给予整数界限上的2、4、6、8和16字节的字段。半字是两字节边界上的一组两个连续的字节,且是指令的基本构件。字是四字节边界上的一组四个连续的字节。双字是八字节边界上一组八个连续的字节。四倍长字(quadword)是16字节边界上的一组16个连续的字节。当存储器地址指定半字、字、双字和四倍长字时,地址的二进制表示分别包括一个、两个、三个或四个最右边的零位。指令将位于二字节整数边界上。大多数指令的存储器操作数不具有界限对准要求。
在为指令和数据操作数实现单独的高速缓存的设备上,如果程序在高速缓存线中存储且指令被随后从该高速缓存线获取,可经历显著的延迟,不管该存储是否改变随后被获取的指令。
在一个实施例中,本发明可被软件(有时候被称为许可的内部代码、固件、微代码、毫代码、微微代码(pico-code)等,其任何一个都将符合本发明)实施。参考图16,体现本发明的软件程序代码可典型地由主系统5000的处理器从长期存储介质设备5011(诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上和/或体现软件程序代码或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
图17示出了可在其中实施本发明的代表性工作站或服务器硬件系统。图17的系统5020包括代表性基本计算机系统(base computer system)5021,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026以及被用于连接并使能处理器5026和系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025以及可包括例如硬盘驱动器(例如,包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器的长期存储器5027。系统5021也可包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,诸如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitized entry pad)等。总线也可经由显示适配器将诸如LCD屏幕或监视器的显示设备5022连接到微处理器5026。
系统5021可通过能与网络5029通信5028的网络适配器与其他计算机或计算机网络通信。示例性网络适配器是通信通道、令牌环网、以太网或调制解调器。或者,系统5021可使用诸如CDPD(蜂窝数字分组数据)卡的无线接口来通信。系统5021可与局域网(LAN)或广域网(WAN)中的这样的其他计算机关联,或系统5021可以是与另一个计算机的客户机/服务器安排中的客户机等。所有这些配置以及合适的通信硬件和软件在本领域中是已知的。
图18示出了其中可实施本发明的数据处理网络5040。数据处理网络5040可包括多个单独的网络,诸如无线网和有线网,其每个可包括多个单独的工作站5041、5042、5043、5044。此外,本领域技术人员将理解,可包括一个或多个LAN,其中LAN可包括多个耦合到主处理机的智能工作站。
仍然参考图18,网络也可包括大型计算机或服务器,诸如网关计算机(客户机服务器5046)或应用服务器(远程服务器5048,其可访问数据储存库,且也可直接从工作站5045被访问)。网关计算机5046用作到每个单独网络的进入点。当将一个连网协议连接到另一个时,需要网关。网关5046可通过通信链路优选地耦合到另一个网络(例如因特网5047)。也可使用通信链路将网关5046直接耦合到一个或多个工作站5041、5042、5043、5044。可以利用可从国际商业机器公司获得的IBM eServerTM
Figure BDA00002439910600391
服务器来实现网关计算机。
同时参考图17和18,可体现本发明的软件编程代码可被系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可被体现在与数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或CD-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户5050、5051,以供这样的其他系统的用户使用。
或者,编程代码可体现在存储器5025中,且由处理器5026使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。程序代码通常从存储介质5027调页到高速存储器5025,在此它可用于由处理器5026进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,且不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。
最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(L1或级别1)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(I-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。
参考图19,为处理器5026示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存5053来缓冲存储器块,以便改善处理器性能。高速缓存5053是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器5025通常被称为高速缓存。在具有4个级别的高速缓存5053的处理器系统中,主存储器5025有时候被称为级别5(L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器5025可“高速缓存”由操作系统向主存储器5025调页入或从其调页出的数据页。
程序计数器(指令计数器)5061保持跟踪将被执行的当前指令的地址。
Figure BDA00002439910600411
处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW(程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量增量。RISC(精简指令集计算)指令典型地是固定长度,而CISC(复杂指令集计算)指令典型地是可变长度。
Figure BDA00002439910600412
的指令是具有长度为2、4或6字节的CISC指令。程序计数器5061被例如上下文转换操作或分支指令的分支采取操作修改。在上下文转换操作中,当前的程序计数器值与关于正被执行的程序的其他状态信息(诸如条件码)一起被保存在程序状态字中,且新程序计数器值被载入并指向将被执行的新程序模块的指令。执行分支采取操作,以通过将分支指令的结果加载到程序计数器5061中而允许程序进行决定或在程序内循环。
典型地,使用指令获取单元5055代表处理器5026获取指令。获取单元可获取“下一序列指令”、分支采取指令的目标指令或上下文转换后的程序的第一指令。现在的指令获取单元通常使用预取技术基于被预取的指令将被使用的可能性来推测性地预取指令。例如,获取单元可获取16字节的指令,其包括下一顺序指令以及进一步的顺序指令的额外字节。
获取的指令随后被处理器5026执行。在一实施例中,获取的指令被传递给获取单元的分派单元5056。分派单元解码指令并将关于解码的指令的信息转送给合适的单元5057、5058、5060。执行单元5057将典型地从指令获取单元5055接收关于解码的算术指令的信息,并将根据指令的操作码对操作数执行算术操作。优选地从存储器5025、架构寄存器5059或从正被执行的指令的立即字段(immediate field)向执行单元5057提供操作数。执行的结果,当被存储时,被存储在存储器5025、寄存器5059或其他机器硬件(诸如控制寄存器、PSW寄存器等)中。
处理器5026典型地具有一个或多个用于执行指令的功能的单元5057、5058、5060。参考图20A,执行单元5057可通过接口逻辑5071与架构通用寄存器5059、解码/分派单元5056、加载存储单元5060和其他5065处理器单元通信。执行单元5057可使用几个寄存器电路5067、5068、5069来保持算术逻辑单元(ALU)5066将操作的信息。ALU执行诸如加减乘除的算术操作,以及诸如和、或以及异或(XOR)、旋转和移位的逻辑运算。优选地,ALU支持依赖于设计的专门操作。其他电路可提供其他架构工具5072,例如包括条件码和恢复支持逻辑。典型地,ALU操作的结果被保持在输出寄存电路5070中,该输出寄存器电路可将结果转送到多种其他处理功能。有许多处理器单元安排,本说明书仅旨在提供对一个实施例的代表性理解。
例如,ADD指令将在具有算术和逻辑功能的执行单元5057中被执行,而例如浮点指令将在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过在操作数上执行操作码定义的功能在由指令标识的操作数上操作。例如,ADD指令可被执行单元5057在由指令的寄存器字段标识的两个寄存器5059中发现的操作数上执行。
执行单元5057对两个操作数执行算术加法,并在第三操作数中存储结果,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)5066,其能执行多种逻辑功能,诸如移位、旋转、和、或以及异或,以及多种代数函数,包括加减乘除中的任何一个。一些ALU5056被设计为用于标量运算,且有些用于浮点。根据架构,数据可以是大端(big endien)(其中最低有效字节位于最高字节地址)或小端(little endien)(其中最低有效字节位于最低字节地址)。IBM是大端。根据架构,带符号字段可以是符号和幅度、1的补码或2的补码。2的补码数是有利的,其在于ALU不需要设计减法能力,因为不管是2的补码中的负值还是正值,都仅要求ALU中的加法。数字通常以速记描述,其中12位的字段定义了4096字节块的地址,且通常被描述为例如4Kbyte(千字节)块。
参考图20B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU 5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信。
一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/O中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。
处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由
Figure BDA00002439910600441
长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。此处的位置典型地意味着主存储器(主存储设备)中的位置,除非另外指明。
参考图20C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信,且包括各种寄存器电路、ALU 5080和控制逻辑5085以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。
优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和页表(单独地或组合地),优选地,段表具有指向页表的项。在
Figure BDA00002439910600442
中,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。转换表的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU(最少最近使用的)多个替换算法来管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/O、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。
I/O单元5054(图19)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/O单元通常由软件驱动器向计算机程序呈现。在诸如来自
Figure BDA00002439910600451
Figure BDA00002439910600452
的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的I/O单元。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的大型计算机服务器以及
Figure BDA00002439910600463
的其他机器(例如,Power Systems服务器和
Figure BDA00002439910600464
服务器)中被仿真。它们可在使用由
Figure BDA00002439910600465
AMDTM等制造的硬件的各种机器上运行Linux的机器中被执行。除了在
Figure BDA00002439910600466
下的该硬件上执行,Linux也可被用于这样的机器,其使用由TurboHercules(www.turbohercules.com/),Hercules(www.hercules-390.org/)或FSI(Fundamental Software,Inc)(www.funsoft.com/)提供的仿真,其中,一般来说执行是在仿真模式中。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。
本机处理器典型地执行仿真软件,其包括固件或本机操作系统,以执行被仿真处理器的仿真程序。仿真软件负责获取并执行被仿真处理器架构的指令。仿真软件维护仿真的程序计数器以保持跟踪指令界限。仿真软件可一次获取一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的本机机器指令组,以由本机处理器执行。这些转换的指令可被高速缓存,这样可完成更快的转换。尽管,仿真软件将维持被仿真的处理器架构的架构规则以保证为被仿真处理器编写的操作系统和应用正确操作。而且,仿真软件将提供由被仿真的处理器架构确定的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换功能、中断机制、上下文转换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,这样被设计为在被仿真处理器上运行的操作系统或应用程序可在具有仿真软件的本机处理器上运行。
解码正被仿真的特定指令,且调用子例程以执行该单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动器中实现,或由提供用于特定硬件的驱动器的其他方法实现,如本领域技术人员在理解优选实施例的描述后将理解的。包括但不限于Beausoleil等人的标题为“Multiprocessor for Hardware Emulation”的美国专利证书号5,551,013;以及Scalzi等人的标题为“Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor”的美国专利证书号6,009,261;以及Davidian等人的标题为“Decoding GuestInstruction to Directly Access Emulation Routines that Emulate the GuestInstructions”的美国专利证书号,5,574,873;以及Gorishek等人的标题为“Symmetrical Multiprocessing Bus and Chipset Used for CoprocessorSupport Allowing Non-Native Code to Run in a System”的美国专利证书号6,308,255;以及Lethin等人的标题为“Dynamic Optimizing Object CodeTranslator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”的美国专利证书号6,463,582,;以及Eric Traut的标题为“Method for Emulating Guest Instructions on a Host ComputerThrough Dynamic Recompilation of Host Instructions”的美国专利证书号5,790,825;以及许多其他专利的各种软件和硬件仿真专利示出各种已知的方式来实现针对可为本领域技术人员获得的目标机器对为不同机器进行架构设计的指令格式的仿真。
在图21中,提供了仿真主计算机系统5092的例子,其仿真主架构的主计算机系统5000’。在仿真主计算机系统5092中,主处理器(CPU)5091是仿真主处理器(或虚拟主处理器),并包括具有与主计算机5000’的处理器5091不同的本机指令集架构的仿真处理器5093。仿真主计算机系统5092具有可被仿真处理器5093访问的存储器5094。在示例性实施例中,存储器5094被分区为主计算机存储器5096部分和仿真例程5097部分。根据主计算机架构,主计算机存储器5096对于仿真主计算机5092的程序来说是可用的。仿真处理器5093执行与被仿真处理器5091不同架构的架构指令集的本机指令(即来自仿真程序处理器5097的本机指令),且可通过使用从顺序和访问/解码例程获得的一个或多个指令从主计算机存储器5096中的程序访问用于执行的主机指令,所述顺序和访问/解码例程可解码访问的主机指令,以确定用于仿真被访问的主机指令的功能的本机指令执行例程。被定义用于主计算机系统5000’架构的其他工具可被架构工具例程仿真,所述架构工具例程包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持和处理器高速缓存等工具。仿真例程也可利用在仿真处理器5093中可获得功能(诸如通用寄存器和虚拟地址的动态转换)以改善仿真例程的性能。也可提供专用硬件和卸载引擎以辅助处理器5093来仿真主计算机5000’的功能。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。

Claims (21)

1.一种在计算环境中控制对适配器的访问的方法,所述方法包括:
执行包括配置对访问适配器的请求的指令,由提供了请求的功能句柄来标识所述适配器,所述执行包括:
使用所述功能句柄来获得用于所述适配器的功能表项,所述功能表项包括与所述适配器相关联的信息;
基于所述功能表项中的信息,确定是否允许所述配置访问所述适配器;以及
响应于确定允许所述配置访问所述适配器,允许对所述适配器的访问。
2.根据权利要求1所述的方法,其中所述方法进一步包括:响应于确定不允许所述配置访问所述适配器,拒绝对所述适配器的访问。
3.根据权利要求1所述的方法,其中所述配置包括操作系统,并且其中所述确定包括将所述功能表项中的区域号与所述配置的区域号进行比较,其中响应于所述比较指示相等,允许所述配置访问。
4.根据权利要求1所述的方法,其中所述配置包括客户,并且其中所述确定包括在所述功能表项中检查所述客户的标识符,其中响应于所述标识符在所述功能表项中,允许所述客户访问。
5.根据权利要求1所述的方法,其中所述方法进一步包括:确定是否由于与许可检查不同的一个或多个原因来阻止访问,所述确定使用所述功能表项的状态信息,其中响应于确定不进行阻止,允许访问。
6.根据权利要求5所述的方法,其中确定阻止访问,并且所述方法进一步包括:
决定是否临时地阻止访问;以及
响应于确定临时地阻止访问,向所述配置提供忙指示器。
7.根据权利要求6所述的方法,其中所述方法进一步包括:响应于决定阻止访问但不临时地阻止访问,拒绝访问。
8.根据权利要求1所述的方法,其中所述方法进一步包括:
确定可用于所述计算环境的多个适配器;以及
为所述适配器中的每个适配器创建功能表项。
9.根据权利要求8所述的方法,其中所述方法进一步包括:
确定所述配置能够访问所述多个适配器中的哪些适配器;以及
在每个适配器的功能表项中指示能够访问与所述配置相关的配置信息。
10.根据权利要求9所述的方法,其中所述确定所述配置能够访问哪些适配器基于策略,所述策略是可重新配置的。
11.根据权利要求1所述的方法,其中所述请求经由指令,所述指令基于所述适配器的架构。
12.一种用于在计算环境中控制对适配器的访问的计算机系统,所述计算机系统包括:
存储器;
与所述存储器通信的处理器;
用于执行包括配置对访问适配器的请求的指令的执行器,由提供了请求的功能句柄来标识所述适配器,所述执行包括:
用于使用所述功能句柄来获得用于所述适配器的功能表项的获取器,所述功能表项包括与所述适配器相关联的信息;
用于基于所述功能表项中的信息,确定是否允许所述配置访问所述适配器的确定器;以及
用于响应于确定允许所述配置访问所述适配器,允许对所述适配器的访问的访问控制器。
13.一种包括在计算机可读介质上存储的计算机程序代码的计算机程序,当所述计算机程序被加载到计算机系统并且在其上执行时,促使素数计算机系统执行根据权利要求1至11中任一项所述的方法的所有步骤。
14.一种用于在计算环境中控制对适配器的访问的计算机系统,所述计算机系统包括:
存储器;
与所述存储器通信的处理器,其中所述计算机系统被配置为执行一种方法,所述方法包括:
执行包括配置对访问适配器的请求的指令,由提供了请求的功能句柄来标识所述适配器,所述执行包括:
使用所述功能句柄来获得用于所述适配器的功能表项,所述功能表项包括与所述适配器相关联的信息;
基于所述功能表项中的信息,确定是否允许所述配置访问所述适配器;以及
响应于确定允许所述配置访问所述适配器,允许对所述适配器的访问。
15.根据权利要求14所述的计算机系统,其中所述配置包括操作系统,并且其中所述确定包括将所述功能表项中的区域号与所述配置的区域号进行比较,其中响应于所述比较指示相等,允许所述配置访问。
16.根据权利要求14所述的计算机系统,其中所述配置包括客户,并且其中所述确定包括在所述功能表项中检查所述客户的标识符,其中响应于所述标识符在所述功能表项中,允许所述客户访问。
17.根据权利要求14所述的计算机系统,其中所述方法进一步包括,确定是否由于与许可检查不同的一个或多个原因来阻止访问,所述确定使用所述功能表项的状态信息,其中响应于确定不进行阻止,允许访问。
18.根据权利要求17所述的计算机系统,其中确定阻止访问,并且所述方法进一步包括:
决定是否临时地阻止访问;以及
响应于确定临时地阻止访问,向所述配置提供忙指示器。
19.根据权利要求14所述的计算机系统,其中所述方法进一步包括:
确定可用于所述计算环境的多个适配器;
为所述适配器中的每个适配器创建功能表项;
确定所述配置能够访问所述多个适配器中的哪些适配器;以及
在每个适配器的功能表项中指示能够访问与所述配置相关的配置信息。
20.根据权利要求14所述的计算机系统,其中所述确定所述配置能够访问哪些适配器基于策略,所述策略是可重新配置的。
21.一种用于在计算环境中控制对适配器的访问的计算机程序产品,所述计算机程序产品包括:
处理电路可读的并且存储用于由处理电路执行的用于实现根据权利要求1至11中任一项所述的方法的指令的计算机可读存储介质。
CN201080066928.XA 2010-06-23 2010-11-08 在计算环境中控制对适配器的访问的方法和系统 Active CN102906701B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,184 US8626970B2 (en) 2010-06-23 2010-06-23 Controlling access by a configuration to an adapter function
US12/821,184 2010-06-23
PCT/EP2010/067041 WO2011160720A1 (en) 2010-06-23 2010-11-08 Controlling access by a configuration to an adapter function

Publications (2)

Publication Number Publication Date
CN102906701A true CN102906701A (zh) 2013-01-30
CN102906701B CN102906701B (zh) 2016-03-02

Family

ID=43806959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080066928.XA Active CN102906701B (zh) 2010-06-23 2010-11-08 在计算环境中控制对适配器的访问的方法和系统

Country Status (9)

Country Link
US (1) US8626970B2 (zh)
EP (1) EP2430536B1 (zh)
JP (1) JP5629373B2 (zh)
CN (1) CN102906701B (zh)
BR (1) BR112012032854B1 (zh)
HK (1) HK1180803A1 (zh)
NO (1) NO2430536T3 (zh)
PL (1) PL2430536T3 (zh)
WO (1) WO2011160720A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110520849A (zh) * 2017-02-10 2019-11-29 卢森堡大学 改进的计算装置
CN110770731A (zh) * 2017-06-28 2020-02-07 苹果公司 授权系统

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
FR2989800B1 (fr) * 2012-04-18 2014-11-21 Schneider Electric Ind Sas Systeme de gestion d'applications securisees et non securisees sur un meme microcontroleur
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9513906B2 (en) * 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
KR101558673B1 (ko) 2013-11-18 2015-10-12 자동차부품연구원 차량용 obd 단자 어댑터
US10089129B2 (en) * 2014-06-30 2018-10-02 International Business Machines Corporation Supporting flexible deployment and migration of virtual servers via unique function identifiers
US10248468B2 (en) 2016-01-11 2019-04-02 International Business Machines Corporation Using hypervisor for PCI device memory mapping
JP6619690B2 (ja) * 2016-05-19 2019-12-11 日本電信電話株式会社 処理装置、アクセス制御システム、アクセス制御方法およびアクセス制御プログラム
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10282330B2 (en) * 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10423438B2 (en) 2016-09-30 2019-09-24 Amazon Technologies, Inc. Virtual machines controlling separate subsets of programmable hardware
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
FR3060145B1 (fr) * 2016-12-09 2020-06-26 Etablissements Georges Renault Procede de gestion de fonctionnalites optionnelles dans un systeme de vissage, systeme, concentrateur et produit programme d'ordinateur correspondant.
US10445279B1 (en) 2018-07-19 2019-10-15 Mellanox Technologies, Ltd. Automatic PCIe operating mode configuration
US10503682B1 (en) * 2018-12-19 2019-12-10 Mellanox Technologies, Ltd. Accessing PCIe configuration data through network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
US20040025166A1 (en) * 2002-02-02 2004-02-05 International Business Machines Corporation Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization

Family Cites Families (202)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976979A (en) 1974-01-02 1976-08-24 Honeywell Information Systems, Inc. Coupler for providing data transfer between host and remote data processing units
US4028668A (en) 1975-12-22 1977-06-07 Honeywell Information Systems, Inc. Apparatus for selectively addressing sections and locations in a device controller's memory
US4323963A (en) 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
US4271468A (en) 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
AU7804381A (en) 1981-10-13 1983-05-05 International Business Machines Corp. Method and apparatus for measurements of channel operation
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5170472A (en) 1991-03-28 1992-12-08 International Business Machines Corp. Dynamically changing a system i/o configuration definition
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
JPH05165715A (ja) 1991-12-12 1993-07-02 Nec Corp 情報処理装置
JPH0821015B2 (ja) 1992-01-20 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータならびにそのシステム再構成化装置および方法
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5600805A (en) 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
US5265240A (en) 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
US5465332A (en) 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
JP2500101B2 (ja) 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5535352A (en) 1994-03-24 1996-07-09 Hewlett-Packard Company Access hints for input/output address translation mechanisms
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
BR9508189A (pt) 1994-06-28 1997-08-12 Intel Corp Conversor de protocolo de interrupção de pci para isa e mecanismo de seleção
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5586268A (en) 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
EP0747872B1 (en) 1995-06-07 1999-03-03 International Business Machines Corporation Video processor with addressing mode control
US5671365A (en) 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
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
US5960213A (en) 1995-12-18 1999-09-28 3D Labs Inc. Ltd Dynamically reconfigurable multi-function PCI adapter device
US5974440A (en) 1996-03-25 1999-10-26 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for interrupt handling during virtual task operation
US5819053A (en) 1996-06-05 1998-10-06 Compaq Computer Corporation Computer system bus performance monitoring
US5761448A (en) 1996-08-30 1998-06-02 Ncr Corporation Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
US5838960A (en) 1996-09-26 1998-11-17 Bay Networks, Inc. Apparatus for performing an atomic add instructions
US5995745A (en) 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US6272257B1 (en) 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US5923858A (en) * 1997-05-01 1999-07-13 Cirrus Logic, Inc. Method and apparatus to interface a peripheral device operating in an internal clock domain to a PCI bus operating in a PCI clock domain
KR100263672B1 (ko) 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
US6067595A (en) 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6078970A (en) 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
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
US6023736A (en) 1997-12-19 2000-02-08 International Business Machines Corporation System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter
US6021458A (en) 1998-01-21 2000-02-01 Intel Corporation Method and apparatus for handling multiple level-triggered and edge-triggered interrupts
US6223299B1 (en) 1998-05-04 2001-04-24 International Business Machines Corporation Enhanced error handling for I/O load/store operations to a PCI device via bad parity or zero byte enables
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
US6460094B1 (en) 1998-07-08 2002-10-01 Microsoft Corporation Peripheral device configured to detect the type of interface to which it is connected and configuring itself accordingly
US6615305B1 (en) 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6519645B2 (en) 1999-02-19 2003-02-11 International Business Machine Corporation Method and apparatus for providing configuration information using a queued direct input-output device
US6349380B1 (en) 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6557035B1 (en) 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
US6330656B1 (en) 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
US6578191B1 (en) 1999-05-17 2003-06-10 International Business Machines Corporation Method and apparatus for dynamic generation of adapters
US6330647B1 (en) 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6772097B1 (en) 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6651126B1 (en) 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US6529978B1 (en) 2000-02-23 2003-03-04 International Business Machines Corporation Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings
US6963940B1 (en) 2000-03-30 2005-11-08 International Business Machines Corporation Measuring utilization of individual components of channels
US6581130B1 (en) 2000-04-04 2003-06-17 Hewlett Packard Development Company, L.P. Dynamic remapping of address registers for address translation between multiple busses
US6629175B1 (en) 2000-04-14 2003-09-30 International Business Machines Corporation Efficient adapter context switching
US6772264B1 (en) 2000-05-22 2004-08-03 International Business Machines Corporation Enabling a docking station for ISA adapters
US6715011B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation PCI/PCI-X bus bridge with performance monitor
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6611883B1 (en) 2000-11-16 2003-08-26 Sun Microsystems, Inc. Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6704831B1 (en) 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US6658521B1 (en) 2000-12-22 2003-12-02 International Business Machines Corporation Method and apparatus for address translation on PCI bus over infiniband network
US6721839B1 (en) 2000-12-27 2004-04-13 International Business Machines Corporation Method of mapping multiple address spaces into single PCI bus
JP4346850B2 (ja) * 2001-01-23 2009-10-21 インターナショナル・ビジネス・マシーンズ・コーポレーション Osイメージごとに論理分割された論理分割データ処理システム
TW499795B (en) 2001-03-19 2002-08-21 Realtek Semiconductor Corp PCI extended function interface and the PCI device using the same
US6792492B1 (en) 2001-04-11 2004-09-14 Novell, Inc. System and method of lowering overhead and latency needed to service operating system interrupts
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US6968446B1 (en) 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US6842870B2 (en) 2001-09-20 2005-01-11 International Business Machines Corporation Method and apparatus for filtering error logs in a logically partitioned data processing system
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6880021B2 (en) 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US6901537B2 (en) 2002-02-27 2005-05-31 International Business Machines Corporation Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system
US6907510B2 (en) 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US7302692B2 (en) 2002-05-31 2007-11-27 International Business Machines Corporation Locally providing globally consistent information to communications layers
US7299266B2 (en) 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7197585B2 (en) 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7054972B2 (en) 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
US7065598B2 (en) 2002-12-20 2006-06-20 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels
KR100449807B1 (ko) 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7107382B2 (en) 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
US7139940B2 (en) 2003-04-10 2006-11-21 International Business Machines Corporation Method and apparatus for reporting global errors on heterogeneous partitioned systems
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
US7177961B2 (en) 2003-05-12 2007-02-13 International Business Machines Corporation Managing access, by operating system images of a computing environment, of input/output resources of the computing environment
US6996638B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Method, system and program products for enhancing input/output processing for operating system images of a computing environment
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
US7127599B2 (en) 2003-05-12 2006-10-24 International Business Machines Corporation Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification
US7130938B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Method, system and program products for identifying communications adapters of a computing environment
US7134052B2 (en) 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
US6931460B2 (en) 2003-05-19 2005-08-16 Emulex Design & Manufacturing Corporation Dynamically self-adjusting polling mechanism
US7420931B2 (en) 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US7613109B2 (en) 2003-06-05 2009-11-03 Nvidia Corporation Processing data for a TCP connection using an offload unit
EP1489491A1 (en) 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction
US7013358B2 (en) 2003-08-09 2006-03-14 Texas Instruments Incorporated System for signaling serialized interrupts using message signaled interrupts
US7979548B2 (en) 2003-09-30 2011-07-12 International Business Machines Corporation Hardware enforcement of logical partitioning of a channel adapter's resources in a system area network
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7146482B2 (en) 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
US7277968B2 (en) 2004-01-23 2007-10-02 International Business Machines Corporation Managing sets of input/output communications subadapters of an input/output subsystem
US7107384B1 (en) 2004-03-01 2006-09-12 Pericom Semiconductor Corp. Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
US7530071B2 (en) 2004-04-22 2009-05-05 International Business Machines Corporation Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US20050289271A1 (en) 2004-06-29 2005-12-29 Martinez Alberto J Circuitry to selectively produce MSI signals
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US7418572B2 (en) 2004-08-18 2008-08-26 International Business Machines Corporation Pretranslating input/output buffers in environments with multiple page sizes
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7373446B2 (en) 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US7296120B2 (en) 2004-11-18 2007-11-13 International Business Machines Corporation Mechanism that provides efficient multi-word load atomicity
US7188346B2 (en) 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US7284112B2 (en) 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US7886086B2 (en) 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US7493425B2 (en) 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US20060195617A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7475166B2 (en) 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7567567B2 (en) 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7200704B2 (en) 2005-04-07 2007-04-03 International Business Machines Corporation Virtualization of an I/O adapter port using enablement and activation functions
US7478178B2 (en) 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7502872B2 (en) 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US7516252B2 (en) 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7631097B2 (en) 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US8028154B2 (en) 2005-07-29 2011-09-27 Broadcom Corporation Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US20070073955A1 (en) 2005-09-29 2007-03-29 Joseph Murray Multi-function PCI device
US7882489B2 (en) 2005-11-22 2011-02-01 International Business Machines Corporation Integrated code generation for adapter-specific property template
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
US7328296B1 (en) 2006-01-03 2008-02-05 Emc Corporation Interrupt processing system
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US7739422B2 (en) 2006-03-21 2010-06-15 International Business Machines Corporation Method to improve system DMA mapping while substantially reducing memory fragmentation
US7412589B2 (en) 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US7954099B2 (en) 2006-05-17 2011-05-31 International Business Machines Corporation Demultiplexing grouped events into virtual event queues while in two levels of virtualization
JP4961833B2 (ja) 2006-05-19 2012-06-27 日本電気株式会社 クラスタシステム、負荷分散方法、最適化クライアントプログラム、及び調停サーバプログラム
TW200801952A (en) 2006-06-02 2008-01-01 Via Tech Inc Method for setting up a peripheral component interconnect express (PCIE)
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
US7496707B2 (en) 2006-08-22 2009-02-24 International Business Machines Corporation Dynamically scalable queues for performance driven PCI express memory traffic
US8725914B2 (en) 2006-08-28 2014-05-13 International Business Machines Corporation Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US20080126652A1 (en) 2006-09-27 2008-05-29 Intel Corporation Managing Interrupts in a Partitioned Platform
US7552298B2 (en) 2006-09-28 2009-06-23 Broadcom Corporation Method and system for deferred pinning of host memory for stateful network interfaces
JP2008090375A (ja) 2006-09-29 2008-04-17 Hitachi Ltd 割込み制御システム、およびこれを利用した記憶制御システム
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
US20080098197A1 (en) 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
JP2008123298A (ja) 2006-11-13 2008-05-29 Canon Inc 情報処理方法及びシステム
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US7529860B2 (en) 2006-12-19 2009-05-05 International Business Machines Corporation System and method for configuring an endpoint based on specified valid combinations of functions
US7984454B2 (en) 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7617340B2 (en) 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
US20080168208A1 (en) 2007-01-09 2008-07-10 International Business Machines Corporation I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs
JP5119686B2 (ja) 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
US7617345B2 (en) 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US20090024823A1 (en) 2007-07-20 2009-01-22 Wenjeng Ko Overlayed separate dma mapping of adapters
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8762999B2 (en) 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US8141094B2 (en) 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8037221B2 (en) 2008-01-16 2011-10-11 International Business Machines Corporation Dynamic allocation of DMA buffers in input/output adaptors
US7996628B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US20090276774A1 (en) 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US7743189B2 (en) 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US8359408B2 (en) 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802590A (en) * 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
US20040025166A1 (en) * 2002-02-02 2004-02-05 International Business Machines Corporation Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110520849A (zh) * 2017-02-10 2019-11-29 卢森堡大学 改进的计算装置
CN110520849B (zh) * 2017-02-10 2023-05-30 卢森堡大学 改进的计算装置
CN110770731A (zh) * 2017-06-28 2020-02-07 苹果公司 授权系统
CN110770731B (zh) * 2017-06-28 2023-11-28 苹果公司 授权系统

Also Published As

Publication number Publication date
BR112012032854B1 (pt) 2021-05-11
WO2011160720A1 (en) 2011-12-29
JP5629373B2 (ja) 2014-11-19
CN102906701B (zh) 2016-03-02
BR112012032854A2 (pt) 2018-02-27
US8626970B2 (en) 2014-01-07
EP2430536A1 (en) 2012-03-21
NO2430536T3 (zh) 2018-09-15
HK1180803A1 (zh) 2013-10-25
JP2013538379A (ja) 2013-10-10
EP2430536B1 (en) 2018-04-18
US20110320652A1 (en) 2011-12-29
PL2430536T3 (pl) 2018-08-31

Similar Documents

Publication Publication Date Title
CN102906701B (zh) 在计算环境中控制对适配器的访问的方法和系统
CN102906722B (zh) 将消息信号中断转换为i/o适配器事件通知
CN102906719B (zh) 输入/输出地址到存储器地址的转换
CN102906702B (zh) 对适配器的地址空间的访客端访问
CN102906692B (zh) 修改适配器功能参数的指令的方法和系统
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
CN102947808B (zh) 一种有利于存储器访问的系统及方法
CN102906716B (zh) 促进计算环境的系统存储器的管理的方法
CN102906705B (zh) 将消息信号中断转换为对客户操作系统的i/o适配器事件通知
CN102906694B (zh) 用于与适配器进行通信的加载指令的方法和系统
CN102906720B (zh) 启用/禁用计算环境的适配器
JP5179597B2 (ja) 構成の仮想トポロジの変化
CN102906693B (zh) 用于执行用于将数据存储在适配器中的存储指令的方法及系统
CN102906707A (zh) 管理与硬件事件关联的处理
CN102906704A (zh) 控制处理适配器中断请求的速率
CN102918516A (zh) 适配器中断源的类型的标识
CN102906711B (zh) 用于适配器功能的测量工具
CN102906708A (zh) 响应于适配器事件采取的动作的操作系统通知
CN106133687A (zh) 管理与选定架构工具相关联的处理
CN103582879A (zh) 管理耦合设施中的操作员消息缓冲器
CN102713838A (zh) 无停顿键设置工具
CN103597453A (zh) 用于测试耦合设施的操作员消息命令
CN103562864A (zh) 执行开始操作员消息命令
CN103597462A (zh) 发送操作员消息命令到耦合设施
CN103562877A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1180803

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1180803

Country of ref document: HK