CN102918516B - 适配器中断源的类型的标识 - Google Patents
适配器中断源的类型的标识 Download PDFInfo
- Publication number
- CN102918516B CN102918516B CN201080066989.6A CN201080066989A CN102918516B CN 102918516 B CN102918516 B CN 102918516B CN 201080066989 A CN201080066989 A CN 201080066989A CN 102918516 B CN102918516 B CN 102918516B
- Authority
- CN
- China
- Prior art keywords
- adapter
- interrupt
- client
- instruction
- address
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供一种源标识工具,其实现对请求中断的一个或多个类型的适配器的标识,以促使对所述中断的处理。所述适配器类型是操作系统可访问的,并且被用于调整所述操作系统对中断的处理。
Description
技术领域
本发明一般涉及计算环境中的中断处理,且更具体而言,涉及促进对支持多个适配器类型的环境中适配器中断的处理。
背景技术
计算环境可包括一个或多个类型的输入/输出设备,包括各种类型的适配器。适配器类型的例子包括外围组件互联(PCI)或外围组件互连express(PCIe)适配器、队列直接I/O适配器、加密适配器等。适配器可请求中断以提供特殊的事件或状态。这种中断的处理依赖于适配器的类型。
在支持多个类型的适配器的环境中,适配器中断可以意味着已经发生单个事件或不同类型的多个适配器发生了多个事件。因此,对于给定(given)中断,必须检查所有适配器类型的所有适配器事件指示器(indicator)以确定发生了什么事件。
在Armstrong等人2009年6月9日发布的题为“Virtualization Of aGlobal Interrupt Queue”(全局中断队列的虚拟化)的序号为7,546,406的美国专利中,提供了一种用于在逻辑分区的系统中处理虚拟中断的方法、系统和制品。可以使用与逻辑分区中运行的多个虚拟处理器相关联的智能虚拟全局中断队列(虚拟GIQ)。在接收到虚拟中断时,虚拟GIQ可检查相关联的虚拟处理器的操作状态。在努力确保尽可能快地处理虚拟中断时,虚拟GIQ可将虚拟中断呈现给相关联虚拟处理器中的被确定为处于最适于处理虚拟中断的操作状态中的一个虚拟处理器。
Belmar等人在2008年9月25日公开的题为“Managing Input/OutputInterruptions in Non-Dedicated Interruption Hardware Environments”(在非专用中断硬件环境中管理输入/输出中断)的美国公开号2008/0235425A1,描述了在不使用每个客户专用的中断硬件的计算环境中管理输入/输出中断以呈现中断。环境中的可分派客户程序直接接收I/O中断,而没有管理程序的干预。这是通过使用存储器中存储的并且与每个客户程序相关联的一个或多个中断控制来促进的。对于当前不可分派的那些客户程序,可为客户发布中断并且可以累积去往管理程序的通知。然后,管理程序可以在单个调用中为多个客户处理多个通知。
Easton等人在2007年11月22日公开的题为“Virtualization ofInfiniband Host Channel Adapter Interruptions”(无限带宽主机通道适配器中断的虚拟化)的美国公开号2007/0271559A1描述了一种方法、系统、程序产品和计算机数据结构,其用于提供两层的服务器虚拟化。第一管理程序(hypervisor)使得多个逻辑分区能共享一组资源并提供第一层虚拟化。第二管理程序使得多个独立的虚拟机能共享被分配被单个逻辑分区的资源并提供第二层虚拟化。用于所述单个逻辑分区内的所有虚拟机的所有事件被分组(group)为单个分区拥有的事件队列,以用于从该单个逻辑分区的共享资源接收事件通知。中断请求被信号通知以用于来自分区拥有的事件队列的分组事件,以便由机器将分组事件从分区拥有的事件队列多路分解到在每台虚拟机上分配的单独的虚拟化事件队列。
发明内容
根据本发明的方面,提供了实现仅检查特定类型的适配器事件指示器的能力。
通过提供如权利要求1所述的方法以及用于促进计算环境中的中断处理的相应系统和计算机程序产品,克服了现有技术的缺陷并提供了优势。
附图说明
作为本说明书的结尾处的权利要求的例子,本发明的一个或多个方面被特别指出和明确要求。根据下列详细描述并结合附图,本发明的上述和其他目标、特征和优势将变得明显,在附图中:
图1A示出了包含并使用本发明的一个或多个方面的计算环境的一个实施例;
图1B示出了根据本发明的方面的主机执行一个或多个客户的中央处理复合体的一个实施例;
图2A示出了根据本发明的方面的图1A中的系统存储器和I/O集线器的更多细节的一个实施例;
图2B示出了根据本发明的方面的图1A中的系统存储器和I/O集线器的更多细节的另一实施例;
图2C示出了根据本发明的方面使用的客户适配器中断表(GAIT)的项的一个实施例;
图2D示出了根据本发明的方面使用的客户中断状态区域(GISA)的一个实施例;
图2E示出了根据本发明的方面使用的适配器中断转发表(AIFT)的项的一个实施例;
图3示出了根据本发明的方面使用的I/O中断码的一个例子;
图4示出了根据本发明的方面的与处理被呈现给操作系统的适配器中断相关联的逻辑的一个实施例;
图5示出了根据本发明的方面的与处理被呈现给客户操作系统的中断相关联的逻辑的一个实施例;
图6A示出了根据本发明的方面使用的设置中断控制指令的一个实施例;
图6B至6D示出了根据本发明的方面的由图6A的设置中断控制指令所使用的字段的内容的例子;
图6E示出了根据本发明的方面使用的适配器中断参数块(AIPB)的一个例子;
图7A示出了根据本发明的方面使用的修改PCI功能控制指令的一个实施例;
图7B示出了根据本发明的方面的由图7A中的修改PCI功能控制指令所使用的字段的一个实施例;
图7C示出了根据本发明的一方面的由图7A的修改PCI功能控制指令使用的另一个字段的一个实施例;
图7D示出了根据本发明的一方面而使用的功能信息块(FIB)的内容的一个实施例;
图8示出了根据本发明的一方面的修改PCI功能控制的逻辑的概况的一个实施例;
图9示出了根据本发明的一方面,与由修改PCI功能控制指令指定的注册适配器中断操作有关的逻辑的一个实施例;
图10示出了根据本发明的一方面,与由修改PCI功能控制指令指定的注销适配器中断操作有关的逻辑的一个实施例;
图11示出了包含(incorporating)本发明的一个或多个方面的计算机程序产品的一个实施例;
图12示出了包含且使用本发明的一个或多个方面的主机计算机系统的一个实施例;
图13示出了包含且使用本发明的一个或多个方面的计算机系统的另一例子;
图14示出了包括包含并使用本发明的一个或多个方面的计算机网络的计算机系统的另一例子;
图15示出了包含并使用本发明的一个或多个方面的计算机系统的各个元件的一个实施例;
图16A示出了包含并使用本发明的一个或多个方面的图15中的计算机系统的执行单元的一个实施例;
图16B示出了包含并使用本发明的一个或多个方面的图15中的计算机系统的分支单元的一个实施例;
图16C示出了包含并使用本发明的一个或多个方面的图15中的计算机系统的加载/存储单元的一个实施例;
图17示出了包含并使用根据本发明的一个或多个方面的仿真(emulated)主计算机系统的一个实施例。
具体实施方式
根据本发明的方面,提供了实现对一个或多个请求中断的适配器的类型的标识的能力,以促进所述中断的处理。例如,当将适配器中断呈现给操作系统时,可获得与请求中断的适配器的类型相关的信息。通过使用适配器类型的知识,可以为每个适配器类型调整(tailor)处理并且可以绕过对未标识的那些适配器类型的处理。例如,如果中断处理包括检查某些指示器,那么仅需要检查对应于所标识类型的那些指示器。这样减小了处理周期并且增加性能。
处理中断的操作系统可以是由主机执行的客户操作系统(例如,可调页存储模式客户)或不是客户的操作系统。如此处使用的,操作系统(或其他软件)包括设备驱动器。
在一个例子中,在中,经由开始解释执行(SIE)指令,在解释的第2级别,解释地执行可调页客户。例如,逻辑分区(LPAR)管理程序执行SIE指令以开始物理、固定存储器中的逻辑分区。如果是所述逻辑分区中的操作系统,其发出SIE指令以执行其V=V(虚拟)存储器中的其客户(虚拟)机。因此,LPAR管理程序使用第1级别SIE并且管理程序使用第2级别SIE。
进一步,如这里所使用的,术语“适配器”包括任意类型的适配器(例如存储适配器、网络适配器、处理适配器、加密适配器、PCI适配器、其他类型的输入/输出适配器等)。在一个实施例中,一适配器包括一个适配器功能。但是,在其他实施例中,一适配器可包括多个适配器功能。本发明的一个或多个方面可以应用,不管一适配器包含一个适配器功能或多个适配器功能。此外,在这里展示的例子中,适配器是与适配器功能(例如PCI功能)可互换地使用的,除非另外说明。
参考图1描述包含并使用本发明的一个或多个方面的计算环境的一个实施例。在一个例子中,计算环境100是由国际商业机器公司提供的System服务器。System服务器是基于由国际商业机器公司提供的关于的细节在IBM出版中描述,该出版物的标题是“z/Architecture Principles of Operation”(z/Architecture操作原理),IBM出版号SA22-7832-07,2009年2月。和是位于纽约州阿蒙克的国际商业机器公司的注册商标。在此使用的其他名字可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
在一个例子中,计算环境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集线器)。在一个例子中,输入/输出集线器包括含有一个或多个状态机的硬件。
输入/输出集线器包括例如根复合体(root complex)116,其从交换器接收请求。该请求包括输入/输出地址,该输入/输出地址被用来例如执行直接存储器访问(DMA)或请求消息信号中断(MSI)。该地址被提供给地址转换和保护单元118,该地址转换和保护单元访问用于DMA或MSI请求的信息。
对于DMA操作,地址转换和保护单元118可将地址转换为可用于访问系统存储器的地址。然后,从适配器发起的请求,包括转换的地址,例如通过I/O到存储器总线120被提供给存储器控制器106。存储器控制器执行其仲裁并在合适的时间将具有已转换地址的请求转发到系统存储器。
对于MSI请求,获取地址转换和保护单元118中的信息,以便于将MSI请求转换为I/O适配器事件通知。
在进一步的实施例中,除了或替代一个或多个中央处理单元102,例如图1B中所示的中央处理复合体(complex)耦合到存储器控制器106。在这个特定的例子中,中央处理复合体150提供虚拟机支持。中央处理复合体150包括例如一个或多个虚拟机152、一个或多个中央处理器154、以及至少一个管理程序156,下面介绍他们中的每一个。
中央处理复合体的虚拟机支持提供操作大量虚拟机的能力,每个都能够托管(host)客户操作系统158,例如z/Linux。每个虚拟机152能够用作单独的系统。即,每个虚拟机可以单独地重置、托管客户操作系统以及利用不同的程序进行操作。运行在虚拟机中的操作系统或应用程序好像有权访问全部和完整的系统,但是实际上,仅一部分是可用的。
在这个特殊的例子中,虚拟机的模型是V=V模型,其中由虚拟存储器而不是实际存储器来支持虚拟机的存储器。每个虚拟机具有虚拟线性存储器空间。由管理程序156(例如VM管理程序)拥有物理资源,并且由管理程序将共享的物理资源分派(如果需要的话)到客户操作系统,以满足他们的处理需求。这种V=V虚拟机模型假设由VM管理程序来控制客户操作系统和物理共享的机器资源之间的交互,这是由于大量的客户典型地阻止管理程序简单地分区并且分配硬件资源给所配置的客户。在2011年10月的题为“z/VM:Running Guest Operating Systems”(z/VM:运行客户操作系统)的IBM出版号SC24-5997-02的IBM出版物中进一步描述了V=V模型的一个或多个方面,此处通过引用方式将其全部内容合并于此。
中央处理器154是可分配给虚拟机的物理处理器资源。例如,虚拟机152包括一个或多个逻辑处理器,每个逻辑处理器代表可以动态地分配给虚拟机的全部或共享的物理处理器资源154。由管理程序156来管理虚拟机152。作为例子,可在处理器154上运行的微代码中实现管理程序或管理程序可以是在机器上执行的主机操作系统的一部分。在一个例子中,管理程序156是诸如由纽约阿蒙克的国际商业机器公司所提供的的VM管理程序。在2003年5月的题为“z/VM:General Information Manual”(z/VM:通用信息手册)的IBM出版号GC24-5991-05的IBM出版物中介绍了的一个实施例,此处通过引用方式将其全部内容合并于此。
参照图1A和1B,一个或多个适配器可发出消息信号中断(MSI)。将这些中断转换为去往一个或多个操作系统的I/O适配器事件通知,其中设置指示器并且请求一个或多个中断。为了促进这种处理,使用I/O集线器和存储器中的各种数据结构,如参照图2A到2B所描述的。
特殊地,图2A描述了用于将适配器事件通知呈现给不是客户的操作系统的结构的一个实施例,并且图2B示出了用于将适配器事件通知呈现给客户的结构的一个实施例。在这些图中,未示出存储器控制器,但是可以使用存储器控制器。I/O集线器可以直接地或经由存储器控制器耦合到系统存储器和/或处理器254。
参照图2A,在一个例子中,系统存储器104包括在促进中断处理中可使用的一个或多个数据结构。在这个例子中,系统存储器104包括与特定适配器相关联的可选适配器中断概要位(AISB)202和适配器中断位向量(AIBV)200。每个适配器可以具有AIBV和相应的AISB。
在一个例子中,适配器中断位向量200是主存储器中的与适配器相关联的一个或多个指示器(例如,位)的单维阵列(例如,PCI功能)。适配器中断位向量中的比特位代表MSI向量号。在AIBV中被设置为1的比特位指示用于相关联的适配器的事件的条件或类型。在PCI功能的例子中,相关联的AIBV中的每个比特对应于MSI向量。因此,如果一PCI功能仅支持一个MSI向量,则其AIBV包括单个位;如果一PCI功能支持多个MSI向量,则其AIBV包括每个MSI向量一个位。在图2A示出的例子中,PCI功能支持多个MSI向量(例如3个),且因此,AIBV 200中有多个位(例如3个)。每个位对应于一特定的事件,例如,当AIBV的位0被设置为1时,指示完成的操作;当AIBV的位1被设置为1时,对应于错误事件;等。如图所示,位1在该例子中被设置。
在一个特定的例子中,命令(例如修改PCI功能控制命令)被用来为PCI功能指定AIBV。特别地,该命令由操作系统发出,并指定了PCI功能的身份(identity)、包含AIBV的区域的主存储位置、从该位置到AIBV的第一个位的偏移以及构成AIBV的位数。可以在任意字节边界或任意位边界上分配AIBV。这样允许操作系统灵活地将多个适配器的AIBV压缩(pack)到位和字节的连续范围中。
在一个例子中,在功能句柄(function handle)中包括PCI功能的身份。功能句柄包括例如使能指示器,其指示PCI功能句柄是否被使能;PCI功能号,其标识该功能(这是静态标识符并且可用作功能表中的索引以对特定项进行定位);以及实例号,其指示该功能句柄的特定实例。例如,功能句柄每次被使能时,实例号被递增以提供新的实例号。功能句柄被用来定位包含一个或多个项的功能表中的功能表项。例如,功能句柄的一个或多个位被用作功能表中的索引,以定位特定的功能表项。功能表项包括关于其相关PCI功能的信息。例如,它可以包括关于其相关适配器功能的状态的各种指示器,且它可以包括一个或多个设备表项索引,所述设备表项索引被用来定位用于该适配器功能的设备表项。设备表项包括用于为他们相应的适配器功能提供某些服务(例如,地址转换、中断处理)的信息。(在一个实施例中,对于操作系统来说,句柄仅仅是适配器的不透明(opaque)标识符)。
除AIBV之外,在这个例子中,还有用于适配器的AISB 202,其包含与该适配器关联的单个指示器(例如,位)。值为1的AISB表示与AISB关联的AIBV中的一个或多个位已被设置为1。AISB是可选的,且可以是每个适配器有一个,每个选择的适配器有一个,或者一组适配器有一个。
在PCI功能的一个特定实现中,指令(例如,修改PCI功能控制指令)被用来为PCI功能指定AISB。特别地,该指令由操作系统发出,并指定PCI功能的身份(例如句柄)、包含AISB的区域的主存储位置、从该位置到AISB的偏移、以及指示存在概要位的适配器中断概要通知使能控制。AISB可在任意字节边界和任意位边界上分配。这允许操作系统灵活地将多个适配器的AISB压缩到位和字节的连续范围。
操作系统可将单个AISB分配到多个PCI功能。这样将多个AIBV与单个概要位相关联。因此,这种AISB是指示操作系统应当扫描多个AIBV的一个AISB。
在一个例子中,位于I/O集线器112中的设备表208的设备表项206中的地址指向AIBV和AISB。在一个例子中,设备表208位于I/O集线器的地址转换和保护单元内。
设备表208包括一个或多个项206,每个项被分配给一特定的适配器功能210。设备表项206包括若干字段,所述字段例如可使用上述指令来填充(populate)。一个或多个所述字段的值基于策略和/或配置。字段的例子包括:
中断子类(ISC)214:指示用于中断的中断子类。ISC标识了适配器中断的可屏蔽类,其可与操作系统用来处理该中断的优先级关联;
AIBV地址()216:提供例如存储位置的起始的绝对地址,该存储位置包含用于被分配给该设备表项的特定适配器功能的AIBV;
AIBV偏移218:主存储位置中到AIBV的起始的偏移;
AISB地址()220:提供存储位置的起始的绝对地址,该存储位置包含用于该PCI功能的AISB,如果操作系统已指定了AISB的话;
AISB偏移222:主存储位置中到AISB的偏移;
适配器概要通知使能控制(使能)224:该控制指示是否存在AISB;
中断数(NOI)226:表示为该PCI功能允许的MSI向量的最大数量,0表示不允许任何MSI向量。
在其他的实施例中,DTE(设备表项)可包括更多、更少或不同的信息。
在一个实施例中,使用例如位于由适配器(例如,PCI功能210)发出的请求中的请求者标识符(RID)(及/或地址的一部分)来定位将用于由适配器请求的特定中断的设备表项。该请求者ID(例如,16位值,其指定例如总线号、设备号和功能号)以及将用于该中断的地址包括在请求中。包括RID和地址的该请求经由例如交换器被提供给例如内容可寻址存储器(CAM 230),且该内容可寻址存储器用来提供索引值。例如,所述CAM包括多个项,每个项对应于到设备表(DT)中的索引。每个CAM项包括RID的值。如果例如接收到的RID与CAM中的项中包含的值匹配,对应的设备表索引被用于定位设备表项。即,CAM的输出被用于索引到设备表208。如果没有匹配,接收到的包被丢弃(在其他实施例中,不需要CAM或其他查找,且RID被用作索引)。例如,所定位的DTE被用于处理中断请求。
在一个特定例子中,如果中断请求针对在特定区域或逻辑分区中执行的客户(例如,可调页存储模式客户,即V=V客户),那么设备表项还包括区域字段228,如图2B所示。所述字段指示客户所属于的区域。在另一实施例中,不使用所述字段,或甚至在不提供客户的情况下可以使用所述字段(例如,为了指定操作系统运行所处的区域或逻辑分区)。
为了促进对客户的中断处理,可使用其他数据结构,将数据结构中的一些存储在主机存储器270中并且将其他的数据结构存储在客户存储器271中。下面介绍这些结构的实例。
在一个例子中,主机存储器270包括例如,转发AISB阵列272和客户适配器中断表(GAIT)274。转发AISB阵列272是与客户适配器中断表结合使用以确定MSI请求是否被定向到客户或其主机的AISB阵列。转发AISB阵列包括每个PCI功能的主机AISB,其中主机将PCI功能分配给客户并且主机代表客户请求适配器事件通知中断。由客户的主机(例如,)在主机存储器中分配这种阵列。
与转发AISB阵列结合地使用客户适配器中断表274以确定MSI请求是否被定向到主机或其客户中的一个,并且是否定向到客户,定向到哪个客户。转发AISB阵列中的指示器(例如,位)和GAIT项之间存在一一对应。这意味着,当将转发AISB阵列中的位设置为1并且相应的GAIT信息包含转发信息,则使得与AISB指示器(例如,位)和相应的GAIT项相关联的客户的适配器的适配器事件通知待处理(pending)。
当使用GAIT项并且包括定义的值(例如,全部为零)时,MSI请求的目标是主机。当使用GAIT项并且不包含定义的值时,MSI请求的目标是客户。此外,当MSI请求的目标是客户时,GAIT项包括如图2C所示的下列信息:用于PCI功能290的客户AISB的主机地址和偏移;客户中断状态区域(GISA)291的主机地址;以及要为客户生成的适配器中断的客户中断子类(GISC)292。
通过参照图2D来提供与客户中断状态区域(GISA)276相关的进一步细节。在一个例子中,GISA 276是控制块,其中客户适配器中断进行待处理。根据本发明的方面,其包括例如单个中断模式掩码(SIMM)277,其是每个客户中断子类具有一个位的掩码并且所述掩码被用于指示用于子类的中断模式是否是单个中断模式(为ISC呈现单个适配器中断请求);无中断模式掩码(NIMM)279,其是每个客户中断子类具有一个位的掩码并且所述掩码用于指示用于ISC的中断模式是否是无中断模式(可以不呈现其他中断);中断待处理掩码(IPM),其是与包括用于多个中断子类(ISC)的指示器的客户相关联的掩码,其中多个中断子类中的每个用于指定中断是否对于ISC待处理;中断警告掩码(IAM)283,其是对应于客户的另一掩码,其中每个位指示主机是否被警告;适配器中断计数287,提供用于这些ISC的适配器中断的计数;以及适配器中断源掩码(AISM)阵列289,阵列中的每个AISM对应于客户ISC并且每个都具有用于环境中存在(或可能存在)的每个适配器类型的指示器(例如,位)。如果在AISM中设置指示器,那么对应于设置指示器的适配器类型的一个或多个适配器已请求用于相应客户中断子类的中断。
作为例子,在GAIT 274(图2B)以及在状态说明280中指定GISA的起源或地址。例如,状态说明是由定义了客户的虚拟CPU到解释硬件/固件的主机所保持的控制块。每个客户使用唯一的GISA并且在一个实施例中,每个客户有一个且仅一个GISA。因此,如果将客户定义为具有多个虚拟CPU,则由主机保持多个状态说明,多个状态说明中的每一个包含相同GISA的源或地址。
如这里所使用的,固件包括例如处理器的微代码、毫代码(millicode)和/或宏代码。它包括用于实现更高级的机器码的硬件级的指令和/或数据结构。在一个实施例中,它包括例如专有(proprietary)代码,该专有代码典型地作为包括可信软件的微代码或特定于底层硬件的微代码而被交付,并控制操作系统访问系统硬件。
除了上述内容,在客户存储器中(其被钉(例如固定、不可调页)在主机存储器中),具有客户AISB阵列282和客户AIBV阵列284。客户AISB阵列282包括多个指示器202’(例如,ASIB),每个指示器可以与I/O适配器相关联。用于I/O适配器的AISB,当为1时,指示已将与I/O适配器相关联的适配器中断位向量(AIBV)中的一个或多个位设置为1。
AIBV阵列284包括一个或多个AIBV 200’(例如,在这个例子中为3),并且如参照AIBV 200所描述的每个AIBV 200’,是与I/O适配器相关联的一个或多个指示器(例如,位)的一维阵列。AIBV中的每个位,当为1时,指示用于相关联的I/O适配器的事件的类型或条件。
除了主机和客户存储器中的数据结构,将被称为适配器中断转发表(AIFT)285的数据结构保持在主机或客户机都不能访问的安全存储器286中。系统固件使用适配器中断转发表来确定MSI请求是否定向到主机和客户运行的逻辑分区中。通过区域号来对AIFT进行索引,所述区域号标识将PCI功能分配至的逻辑分区。当使用AIFT项并且所述项包括定义的值(例如,全为零)时,适配器事件通知的目标是在指定的逻辑分区中运行的操作系统。当使用AIFT项并且所述项不包含定义的值时,固件使用转发AISB阵列和GAIT来确定适配器事件通知的目标是否是在逻辑分区中运行的主机或客户。在一个例子中,如图2E所示,AIFT 285的AIFT项包括例如:转发AISB阵列的地址,例如在分区的(主机的)存储器294中;按位的以及GAIT项中GAIT的转发AISB阵列的长度295;分区的存储器中GAIT 296的地址;以及与要被转发到用于所述分区的客户的MSI请求相关联的主机中断子类(ISC)297。
返回图2A和/或图2B,为了请求中断,适配器功能210发送数据包到I/O集线器。所述数据包具有MSI地址232和相关的数据234。I/O集线器将接收的地址的至少一部分与MSI比较寄存器250中的值进行比较。如果存在匹配,那么请求中断(例如,MSI),与DMA操作相反。在相关的数据234中指示用于请求的原因(即,已经发生的事件的类型)。例如,数据的一个或多个低序(low order)位用于指定指示原因(事件)的特定中断向量(即,MSI向量)。
将从适配器接收的中断请求转换为I/O适配器事件通知。即,设置一个或多个指示器(例如,一个或多个AIBV和可选地AISB)并且请求对操作系统(主机或客户)的中断,如果一个还未待处理。在一个实施例中,将来自一个或多个适配器的多个中断请求(例如,MSI)合并到对操作系统的单个中断中,但是具有各自的AIBV和AISB指示。例如,如果I/O集线器已经接收到MSI请求,继而已将中断请求提供给处理器,并且所述中断仍然待处理(例如,出于一个原因或其他原因,还未将中断呈现给操作系统(例如,中断被无效)),则如果集线器接收一个或多个其他MSI,其不需要附加的中断。该一个中断替代且代表多个MSI请求。然而,仍然设置一个或多个AIBV以及可选地一个或多个AISB。
下面介绍与将MSI(或其他适配器中断请求)转换为I/O适配器事件通知的其他细节。初始地,描述被呈现给不是客户的操作系统的与将MSI转换为I/O适配器事件通知相关的细节。此后,描述被呈现给客户操作系统的与将MSI转换为I/O适配器事件通知相关的细节。
在一个例子中,为了将MSI请求转换为I/O适配器事件通知,执行特定初始化。例如,作为初始化的一部分,做出关于配置中的PCI功能的确定。作为例子,使用诸如查询列表指令的指令,以获得被分配给请求配置(例如,被分配给特定操作系统)的PCI功能的列表。从保持该信息的配置数据结构获得该信息。
接下来,对于列表中的每个PCI功能,做出关于用于PCI功能的MSI地址和由PCI功能所支持的MSI向量的数量的确定。基于I/O集线器和安装I/O集线器的系统的特性,确定MSI地址。所支持的MSI向量的数量是基于策略的并且是可配置的。
此外,为每个PCI功能分配AIBV,以及AISB(如果有的话)。在一个例子中,操作系统典型地基于适配器的类别来确定AIBV的分配,以允许一个或多个适配器的高效处理。AIBV和AISB被分配并初始化为零,且指定注册适配器中断操作(例如,通过使用修改PCI功能控制指令)。该操作注册AIBV、AISB、ISC、中断(MSI向量)的数量以及适配器中断概要通知使能控制。这些参数存储在与PCI功能相对应的设备表项中,其中为PCI功能执行初始化。然后,对PCI功能的配置空间进行写入。特别地,将MSI地址和MSI向量计数写入与先前注册一致的PCI功能的配置地址空间。(在一个例子中,PCI功能包括多个地址空间,包括例如配置空间、I/O空间以及一个或多个存储器空间)。
此后,在操作期间,PCI功能可生成MSI,将其转换为适配器事件通知。例如,在操作期间,当PCI功能想要生成MSI时,它典型地使描述条件的某些信息对操作系统可用。这引起一个或多个步骤发生,以将PCI功能的MSI请求转换为对操作系统的I/O适配器事件通知。
例如,初始地,记录对其请求中断的事件的描述。即,PCI功能在例如系统存储器中存储的一个或多个适配器特定的事件描述记录结构中记录事件的描述。这可包括记录事件类型并记录附加信息。另外,由PCI功能发起请求,其指定了MSI地址和MSI向量号,以及请求者ID。该请求被I/O集线器接收,且响应于接收到请求,请求中的请求者ID被用来定位用于PCI功能的设备表项。I/O集线器将请求中的地址的至少一部分与MSI比较寄存器中的值进行比较。如果它们相等,则MSI地址已被指定,且由此,MSI已被请求。
此后,做出关于请求中指定的MSI向量号是否小于或等于该功能允许的中断数(NOI)的确定。如果MSI向量号大于NOI,则指示错误。否则,I/O集线器发出设置位功能,以在存储器中设置合适的AIBV位。通过将MSI向量号添加到设备表项中指定的AIBV偏移并从设备表项中指定的AIBV地址移位(displace)该数量的位,来确定所述合适的位。此外,如果AISB已被指定,则通过使用设备表项中的AISB地址和AISB偏移,I/O集线器使用设置位功能来设置AISB。
接下来,在一个实施例中,(例如由CPU或I/O集线器)做出关于中断请求是否已经待处理的确定。为了做出该确定,使用待处理指示器。例如,检查在处理器254的存储器中存储的待处理指示器252(图2A,图2B),该待处理指示器可以由可处理中断的计算环境中的处理器访问。如果它没有被设置,将它设置。如果它已经被设置,则处理完成,且另一中断请求不会被请求。因此,后续的中断请求由已经待处理的一个请求包含。
在一个特定的例子中,每个中断子类可以有一个待处理指示器,且因此,分配给请求功能的中断子类的待处理指示器是被检查的指示器。
异步地,一个或多个处理器检查待处理指示器。特别地,在例如为该处理器(即为其操作系统)使能中断的时候,为ISC(以及另一实施例中的区域(zone))使能的每个处理器对指示器进行轮询(poll)。如果处理器中的一个确定指示器被设置,则它和为同一ISC(以及另一实施例中的区域)使能的其他处理器一起进行仲裁,以处理该中断。处理中断的处理器于是将中断呈现给操作系统。
响应于向操作系统呈现中断,操作系统处理为所述中断请求设置的以及可能为其他中断请求设置的指示器。根据本发明的方面,这种处理包括访问I/O中断码以促进处理。将I/O中断码存储在操作系统和固件都可以访问的已知位置。因此,在提供与处理相关的进一步细节之前,描述中断码的一个实施例。
参照图3,在一个例子中,I/O中断码300包括例如:
适配器中断源掩码(AISM)302:该字段包括具有多个指示器(例如,位)的掩码,并且当被设置(例如为0)时,每个指示器标识已经进行的一个或多个适配器事件通知的适配器类型。
例如,在环境中可以有多种类型的适配器,包括例如:队列直接I/O(QDIO)适配器(在Belmar等于2008年5月27月发布的题为“ManagingInput/Output Interruptions in Non-Dedicated Interruption HardwareEnvironments”(非专用中断硬件环境中管理输入/输出中断)的美国专利7,380,041中描述了其例子,此处通过引用将其全部内容并入)、PCI适配器、接入点(AP)适配器、加密适配器以及其它适配器,并且对于这些适配器中的每一个,在AISM中存在一个指示器。当该适配器类型请求中断时,设置其的相应位。
适配器中断指示器(A)304:该字段指示何时设置中断为适配器中断的定义值(例如,1);以及
中断子类306:该字段指示请求中断的适配器的中断子类。
在一个实施例中,响应于适配器中断请求,由固件来设置中断码。例如,基于发出唯一地标识适配器类型的中断的特定I/O基础设施,设置AISM。在一个特定例子中,当操作系统被使能用于处理中断时(例如,当初始地接收到中断时,固件通过在控制块中存储的相应信息来设置一个或多个字段),固件设置中断码。其他例子是可能的,例如经由特定指令来获取I/O中断码。
特殊地,在一个例子中,为了在AISM中设置合适的位,固件确定请求事件的适配器的类型。例如,基于指定指示器的设置,固件识别PCI适配器中断请求。类似地,例如,对于QDIO或其他适配器,设置特定指示器或存储指示适配器类型的信息。
使用中断码,并且特别地使用AISM,操作系统能够确定请求中断的适配器的类型,并且因此能够调整其努力。例如,可能存在发出中断请求且促使事件指示器被设置的多种类型的适配器。然而,这些事件指示器和相关联的事件处理基于适配器类型而不同。例如,对于PCI适配器,例如以位的递增分配指示器;对于QDIO适配器,以字节的递增分配指示器;以及对于AP队列,以结构的递增指示指示器。还可能有许多其他变化。进一步地,处理这些事件指示器的程序(例如,设备驱动器)典型地是设备专用的,这是因为对于每个适配器类型,这种指示器的结构和含义是不同的。因此,通过了解适配器类型,操作系统可调整其处理。通过参照图4来进一步详细地进行介绍。
参照图4,开始,为操作系统呈现适配器中断,步骤402。响应于被呈现了适配器中断,根据本发明的一方面,操作系统确定请求中断的适配器的类型或多种类型,步骤404。在一个例子中,通过检查操作系统可访问的I/O中断码并且特别地适配器中断源掩码,来做出这种确定。操作系统检查掩码并且确定设置哪些位。其进一步确定何种类型的适配器对应于掩码中的设置位。例如,如果设置位1,那么操作系统确定(通过,例如,数据结构-表、控制块等)位1对应于PCI适配器。
基于通过检查I/O中断码所确定的适配器类型,操作系统标识要被检查的事件指示器,步骤406。特别地,操作系统确定(例如,基于对存储的数据结构(例如,表、控制块等)的参考)哪些指示器与这种类型的适配器相关联。例如,对于PCI适配器,操作系统从数据结构得知,要检查AISB和AIBV指示器。其还得知这些指示器的位置。然后,操作系统仅检查这些类型的指示器,步骤408。其忽略用于其他类型的适配器的指示器。处理与被设置(例如,为1)的适配器类型相关联的任意指示器。
在一个特定的例子中,操作系统处理任意设置的AISB和AIBV。例如,其检查是否设置了任意AISB。如果是,其使用AISB确定一个或多个AIBV的位置。例如,操作系统记住AISB和AIBV的位置。此外,其记住每个AISB和AIBV代表哪个适配器。因此,操作系统可保持控制块或其他数据结构的形式,其包括AISB和AIBV的位置和AISB、AIBV以及适配器id之间的关联。操作系统基于其相关联的AISB,使用所述控制块来促进AIBV的位置。在另一实施例中,不使用AISB。在那种情况下,使用控制块来定位任意特定的AIBV。响应于定位一个或多个AIBV,操作系统扫描AIBV并且处理器任意设置的AIBV。其按照与所呈现的事件(例如,提供状态等)相一致的方式来处理中断。例如,利用存储适配器,事件可指示操作已经完成。这导致操作系统检查适配器所存储的状态,以查看操作是否成功地完成以及还查看操作的细节。在存储器读的情况中,这是来自适配器的数据读取现在在操作系统中可用并且可被处理的指示。
在上面的例子中,使用适配器中断源标识信息来将适配器类型通知给操作系统(例如,非客户操作系统),其中将适配器信息呈现给所述操作系统。这样允许操作系统标识需要检查适配器事件指示器的哪些子集;具体地,仅与为其呈现了中断的类型或多个类型的适配器相关联的那些指示器。
根据本发明的进一步方面,例如,还可以由例如逻辑分区中运行的主机的客户(例如,可调页存储模式客户)来使用适配器中断源标识信息。在没有任何主机干涉的情况下,执行上述内容。对于可调页客户,如上所述的客户中断状态区域(GISA)是主机控制块,其中固件使得适配器中断对于特定客户待处理。在一个例子中,这是通过设置对应于客户中断子类的中断待处理掩码(IPM)字段中的位来完成的。下面描述与这种处理相关的进一步细节。
在一个例子中,为了将MSI转换为要被呈现给客户的适配器事件通知,执行特定的初始化。在本例子中,执行主机初始化和客户初始化。例如,在主机初始化期间(或当将第一PCI功能分配给客户时),主机分配转发AISB阵列和GAIT。然后,主机例如在适配器中断转发表(AIFT)中注册转发AISB阵列和GAIT的位置和长度。在一个例子中,使用设置中断控制指令来注册转发AISB阵列的位置和长度。
进一步,主机指定要被分配给PCI适配器的主机中断子类,其中将PCI适配器分配给客户。再次,在一个例子中,诸如设置中断控制指令的指令用于指定该信息。还在AIFT项中保留用于主机运行的分区的这种信息。这样结束了主机初始化。
在客户初始化期间,客户执行多个任务以经由MSI请求来配置其用于适配器事件通知的PCI功能。在一个例子中,调用这些功能的一个或多个指令促使对主机的拦截,并且因此主机对每个拦截采取动作,如下所述。
开始,客户确定其有权访问的PCI功能和配置。在一个例子中,客户发出指令(例如,查询列表指令)以获得PCI功能的列表,并且该指令被主机拦截。由于在主机初始化期间,响应于对PCI功能的客户请求的拦截,主机已经确定将哪些PCI功能分配给主机,主机构造并且返回响应给客户,并且仅包括被分配给客户的那些PCI功能。
此后,对于客户配置的每个PCI功能,执行特定处理。例如,做出关于要用于PCI功能的MSI地址以及由PCI功能支持的MSI向量的数量的确定。在一个例子中,使用提供适配器功能组共同的特性的查询组指令来确定MSI地址,并且PCI功能所支持的MSI向量的数量基于适配器的能力。主机在其初始化期间已经确定了这种信息,并且因此响应于对客户命令的拦截,主机构造并且返回响应给客户,所述响应包括MSI地址和MSI向量的最大数量。
附加地,分配AIBV,以及AISB(如果有的话)。AIBV和AISB被分配并初始化为零,且指定注册适配器中断操作。响应于请求的注册适配器中断操作,主机拦截操作并且执行注册。这包括例如将客户AIBV钉在主机存储器中(即,在主机存储器中固定客户页并且使其非可调页)。进一步,如果客户指定AISB,主机还将客户AISB钉在主机存储器中。主机分配来自转发AISB阵列的AISB,并且明确地,相应的GAIT项到PCI功能。可替换地,如果由客户指定的AISB和ISC是客户之前注册的相同AISB和ISC(对于另一PCI功能),主机可使用为所述先前请求分配的相同转发AISB和GAIT项。这降低了开销。主机将客户中断子类复制到GAIT阵列中。如果客户指定AISB,主机将客户AISB的主机地址和其偏移复制到GAIT项。进一步,主机将客户GISA指定从其状态说明复制到GAIT项。
主机代表客户来执行指令,例如修改PCI功能控制指令,以指定注册适配器中断操作并且指定下述信息:客户AIBV的主机地址和客户偏移;主机AISB的主机地址和偏移以及分配给适配器的转发AISB阵列;用于适配器的主机中断子类;以及客户指定的MSI的数量。响应于执行修改PCI功能控制指令,选择与为其执行初始化的PCI功能对应的设备表项,并且在设备表项中存储各种参数。例如,将客户AIBV;主机选择的转发AISB;主机ISC;和中断数量设置为从配置功能获得的值。进一步,在GAIT中注册各种信息,例如包括客户AIBV的主机地址和偏移、客户ISC和用于客户的GISA的地址。这样完成了注册过程。
此后,PCI功能的配置空间被写。特别地,将MSI地址和MSI向量计数写入与之前的注册相一致的PCI功能的配置地址空间。这样完成了客户初始化。
在执行初始化之后,将接收的MSI转换为I/O适配器事件通知。开始,记录对其请求中断的事件的描述。另外,由PCI功能发起请求,其指定了MSI地址和MSI向量号,以及请求者ID。该请求被I/O集线器接收,且响应于接收到请求,请求中的请求者ID被用来定位用于PCI功能的设备表项。I/O集线器将请求中的地址的至少一部分与MSI比较寄存器中的值进行比较。如果它们相等,则请求MSI地址。
此后,确定请求中指定的MSI向量号是否小于或等于该功能允许的中断数(NOI)。如果MSI向量号大于NOI,则指示错误。否则,I/O集线器发出设置位功能,以在存储器中设置合适的AIBV位。通过将MSI向量号添加到设备表项中指定的AIBV偏移并从设备表项中指定的AIBV地址移位该数量的位,来确定所述合适的位。基于主机建立中断信息注册的方式,被设置的位是已经被钉在主机存储器中的客户AIBV。
此外,如果AISB已被指定,则通过使用设备表项中的区域号(如重定位区域)、AISB地址和AISB偏移,I/O集线器使用设置位功能来设置AISB。再次,基于主机建立其中断信息的注册的方式,被设置的位是主机存储器中转发AISB阵列中的主机AISB。注意的是,如果系统不支持单个位的设置,可以设置多个位(例如,字节)以指示适配器事件或概要指示。
接下来,在一个实施例中,(例如由CPU或I/O集线器)做出一中断请求是否已经待处理的确定。为了做出该确定,使用待处理指示器。如果它已经被设置,处理完成,且另一中断请求不会被请求。因此,后续的中断请求由已经待处理的一个请求包含。
异步地,一个或多个处理器检查待处理指示器。特别地,在例如为该处理器使能中断的时候,为ISC(以及区域)使能的每个处理器对指示器进行轮询。如果处理器中的一个确定指示器被设置,则其与其他处理器一起进行仲裁,以处理该中断。
为了处理中断,固件使用适配器中断请求中指定的区域号以定位用于逻辑分区(区域)的AIFT项。响应于定位所述AIFT项,固件检查AIFT项是否包括定义的值(例如,全为零)。如果AIFT项包括定义的值,则在逻辑分区中没有运行客户的主机,并且适配器中断对由区域号所标识的逻辑分区(或如果没有配置逻辑分区,则对操作系统)待处理。然后,如上述参照将中断呈现给不是客户的操作系统所描述的,处理这种中断。
如果AIFT项不包括定义的值,意味着存在运行一个或多个客户的主机,则处理继续检查被指定为适配器中断请求的一部分的ISC是否等于AIFT项中的ISC。如果被指定为适配器中断请求的一部分的ISC不等于AIFT项中的ISC,则不将适配器中断请求定向到客户,并且对由区域号(即,主机)所标识的逻辑分区待处理。然后,如上述参照将中断呈现给不是客户的操作系统所描述的,处理继续。
否则,被指定为适配器中断请求的一部分的ISC等于AIFT项中的ISC,意味着将适配器中断请求定向到客户。固件使用AIFT项中的转发AISB阵列地址和长度来扫描由查找被设置为一的指示器(例如,位)的主机所指定的转发AISB阵列。对于被设置为一的每个指示器,固件使用相应GAIT项中的信息来处理所述指示器。
开始,做出GAIT项是否包括定义的值(例如,全为零)的确定,意味着适配器中断未被定向到客户。如果GAIT项不包括定义的值,那么适配器中断对主机待处理,并且I/O中断码中的主机适配器事件通知转发指示器被设置为一。如上所述,将中断呈现给主机。
然而,如果GAIT项不包括定义的值,意味着适配器中断被定向到相应客户,那么执行多个步骤以完成适配器事件通知到客户的转发。例如,如果GAIT项中的客户AISB地址不包括定义的值(例,全为零),那么客户AISB地址和客户AISB偏移用于将客户AISB设置为一。进一步,使用GAIT项中的客户中断子类和GISA指定使得所述中断在用于客户的GISA中待处理。例如,将与GISA的中断待处理掩码(IPM)内的GISC对应的位设置为一。附加地,根据本发明的方面,固件设置GISA的AISM阵列的AISM项中的适配器类型位,所述GISA对应于对其中断进行待处理的客户中断子类。进一步,如果请求对GISC的主机警告(例如,将与GISA的中断警告掩码(IAM)内的CISC对应的位设置为一),则对主机警告中断进行待处理。
IPM位的设置等于CPU的待处理指示器,并且当客户CPU对于ISC使能时,将中断呈现给客户CPU,而没有主机干涉。在将IPM位设置为一时,在对应于CISC的适配器中断源掩码中设置指定对PCI功能待处理的适配器中断的所述位,如此处所描述的。
响应于在GISA中设置IPM,为ISC使能的处理器确定已经设置了所述指示器并且将中断呈现给操作系统。由于这种处理涉及本发明的一个或多个方面,此后参照图5来描述这种处理。
响应于为客户呈现中断,步骤500,在用于客户的I/O中断码中放置对应于客户中断子类的GISA中的AISM字段,其中为所述客户中断子类呈现中断,步骤502。原子式地(Atomically),在GISA中清除AISM,以及待处理适配器中断,步骤504。此后,客户可处理所述中断。
根据本发明的一方面,客户基于I/O中断码中存储的信息,确定适配器的类型,步骤506,并且基于适配器的类型,客户标识要被检查的指示器,步骤508,如上所述。客户检查那些指示器并且处理那些被设置的指示器,步骤510。不检查或处理用于其他类型的适配器的指示器。
如上所述,在初始化期间使用设置中断控制指令。通过参考图6A至6E来描述这种指令的一个实施例。如图6A所示,在一个例子中,设置中断控制指令600包括:操作码602,指定这是设置中断控制指令;第一字段(字段1)604,包括指定指令的操作控制610(图6B)的位置(例如,寄存器);第二字段(字段2)606,指定一位置(例如,寄存器),所述位置包含用于由字段1指定的操作控制的中断子类620(图6C);以及第三字段(字段3)608,如图12D所示,包括适配器中断参数块(AIPB)630的逻辑地址,如下所述。
在一个例子中,操作控制610可被编码如下:
0-设置全部中断模式:设置适配器中断抑制工具,以允许呈现为指定的ISC请求的所有适配器中断。
1-设置单个中断模式:设置适配器中断抑制工具,以允许呈现对指定的ISC的单个适配器中断请求。抑制对指定的ISC的随后适配器中断请求。
2-设置适配器事件通知中断控制:设置由字段3指定的适配器中断参数块中包括的适配器事件通知中断控制。
通过参照图6G来描述AIPB 630的一个例子。如图所示,AIPB 630包括例如:
转发AISB阵列地址632:该字段指定与客户适配器中断表(GAIT)和指定的适配器事件通知转发中断子类(AFI)结合使用的转发AISB阵列,以确定由I/O适配器通过信号传送的适配器中断请求是否被定向到可调页存储模式客户。
当转发AISB阵列地址为零时,中断请求的目标是主机。当转发AISB阵列地址不为零时,进一步通过AFI和GAIT来确定中断请求的目标。
客户适配器中断表(GAIT)地址634:该字段提供GAIT的地址,其被用于确定I/O适配器通过信号传送的适配器中断请求是否被定向到可调页存储模式客户,并且如果被定向到这种客户,则GAIT还用于客户AISB的设置,以及适配器中断请求到客户的递送。
适配器事件通知转发中断子类(AFI)636:该字段指示ISC值。所述ISC上的待处理和可呈现中断发起适配器事件通知转发过程,其中使用转发AISB阵列和GAIT的内容来进一步确定来自用于相应ISC的可应用I/O适配器的中断请求的目标(主机或客户)。当从AFI字段指定的ISC的可应用适配器做出中断请求时,中断的目标可以是可调页存储模式客户,并且使用转发AISB阵列和GAIT来确定转发AISB阵列中指示的任意适配器事件通知的实际目标(主机或客户)。当从用于不同于AFI字段所指定的ISC的ISC的可应用适配器做出中断请求时,不应用转发AISB阵列地址和GAIT地址,并且相应的ISC的中断请求的目标是主机。
转发AISB阵列长度(FAAL)638:该字段指示以位为单位的转发AISB阵列的长度,或以GAIT项为单位的GAIT。
响应于执行设置中断控制指令,基于字段1中指定的操作控制,设置一个或多个中断控制。当操作控制的值指示设置全部中断模式或设置单个中断模式时,字段2包括指定中断控制要被设置的中断子类的值。
当操作控制的值指示设置适配器事件通知解释控制时,第二操作符地址(字段3)是包括要被设置的控制的适配器中断参数块(AIPB)的逻辑地址。主机使用适配器中断参数块来促进适配器中断的解释(即,适配器中断的转发),所述适配器中断源自与用于可调页存储模式客户的适配器事件通知工具相关联的I/O适配器。
在一个例子中,在固件和操作系统可访问的位置(例如,控制块)中存储操作控制的设置值。
这里介绍有关用于注册适配器中断的修改PCI功能控制指令的进一步细节。参照图7A,修改PCI功能控制指令700包括例如指示修改PCI功能控制指令的操作码702;指定所包括的各种信息所在位置的第一字段704,所述信息是关于操作参数正为其建立的适配器功能的信息;以及指明从其获取PCI功能信息块(FIB)的位置的第二字段706。以下将进一步描述由字段1和2指定的位置的内容。
在一个实施例中,字段1指定包括各种信息的通用寄存器。如图7B所示,寄存器的内容包括例如功能句柄(handle)710,其标识适配器功能的句柄,修改指令是代表该功能执行的;地址空间712,其指定与由功能句柄指定的适配器功能有关的系统存储器中的地址空间;操作控制714,其指定将针对适配器功能而执行的操作;以及状态716,其以预定码提供当完成指令时关于指令的状态。
在一个实施例中,功能句柄包括例如指示句柄是否被使能的使能指示符,标识适配器功能的功能号(这是静态标识符,且可被用于索引到功能表中);以及实例号,其指定该功能句柄的特定实例。存在用于每个适配器功能的功能句柄,且其用于定位功能表中的功能表项(FTE)。每个功能表项包括操作参数和/与其适配器功能有关的其他信息。作为例子,功能表项包括:
实例号:该字段指示与功能表项有关的适配器功能句柄的特定实例;
设备表项(DTE)索引1...n:存在一个或多个设备表索引,且每个索引是到一个设备表中的索引,用于定位设备表项(DTE)。每个适配器功能有一个或多个设备表项,且每个项包括与其适配器功能有关的信息,包括用于处理适配器功能的请求(例如,DMA请求、MSI请求)的信息以及涉及与适配器功能有关的请求(例如,PCI指令)的信息。每个设备表项与分配给适配器功能的系统存储器内的一个地址空间有关。适配器功能可具有分配给适配器功能的系统存储器内的一个或多个地址空间。
示忙器:该字段指示适配器功能是否忙;
持久错误状态指示器:该字段指示适配器功能是否处于持久错误状态;
恢复启动指示器:该字段指示是否已启动对于适配器功能的恢复;
许可指示器:该字段指示尝试控制适配器功能的操作系统是否有权限这么做;
使能指示器:该字段指示适配器功能是否被使能(例如1=使能,0=禁止);
请求者标识符(RID):这是适配器功能的标识符,且包括例如总线号、设备号和功能号。
在一个例子中,该字段用于访问适配器功能的配置空间。(适配器的存储器可被定义为地址空间,包括例如配置空间、I/O空间和/或一个或多个存储器空间。)在一个例子中,可通过在由操作系统(或其他配置)发出到适配器功能的指令中指定配置空间来访问配置空间。在该指令中指定的是到配置空间中的偏移,以及用于定位包括RID的恰当的功能表项的功能句柄。固件接收指令并确定其用于配置空间。因此,它使用RID来生成对I/O集线器的请求,且I/O集线器创建访问适配器的请求。适配器功能的定位是基于RID,且该偏移指定到适配器功能的配置空间中的偏移。
基地址寄存器(BAR)(1到n):该字段包括多个无符号整数,被指定为BAR0-BARn,其与原始指定的适配器功能有关,且其值也被存储在与适配器功能有关的基地址寄存器中。每个BAR指示适配器功能内的存储器空间或I/O空间的开始地址,并也指示地址空间的类型,即,它是例如64或32位的存储空间,或是32位的I/O空间;
在一个例子中,它被用于访问适配器功能的存储空间和/或I/O空间。例如,在访问适配器功能的指令中提供的偏移被添加到与在指令中指定的地址空间有关的基地址寄存器中的值,以获得用于访问适配器功能的地址。在指令中提供的地址空间标识符标识将被访问的适配器功能内的地址空间,以及将被使用的对应的BAR;
大小(Size)1...n:该字段包括多个无符号整数,被指定为SIZE0-SIZEN;大小字段的值,当不是零时,表示每个地址空间的大小,且每个项对应于先前描述的BAR。
以下将描述关于BAR和Size的进一步细节。
1.当BAR没有针对适配器功能而实现时,BAR字段及其对应的大小字段都被存储为零。
2.当BAR字段表示I/O地址空间或者32位存储器地址空间时,对应的大小字段是非零的并表示地址空间的大小。
3.当BAR字段表示64位存储器地址空间时,
a.BARn字段表示最低有效(least significant)的地址位。
b.下一个连续BARn+1字段表示最高有效(most significant)的地址位。
c.对应的SIZEn字段是非零的,并表示地址空间的大小。
d.对应的SIZEn+1字段不是有意义的,且被存储为零。
内部路由信息:该信息被用于执行到适配器的特定路由。作为例子,它包括例如节点、处理器芯片和集线器寻址信息。
状态指示:这提供了关于例如加载/存储操作是否被阻止或适配器是否处于错误状态的指示,以及其他指示。
在一个例子中,示忙器、持久错误状态指示器以及恢复启动指示器基于由固件执行的监督而被设置。而且,许可指示器基于例如策略而被设置;且BAR信息基于在处理器(例如,处理器的固件)的总线行走(bus walk)期间发现的配置信息而被设置。其他字段可基于配置、初始化和/或事件而被设置。在其他实施例中,功能表项可包括更多、更少或不同的信息。包括的信息可取决于由适配器功能支持或使能的操作。
参考图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:该字段用于确定可调页存储模式客户是否被授权执行PCI指令而没有主机干预;以及(相对于844删除一段)
地址转换格式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,则提供异常条件(例如拦截到主机),步骤828。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后确定该功能是否被使能,查询830。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤832。
如果功能被使能,则确定恢复是否是活动的,查询834。如果由功能表项中的恢复指示器确定恢复是活动的,则提供异常条件,步骤836。但是,如果恢复不是活动的,则进一步确定功能是否忙,查询838。该确定是通过查询功能表项中的示忙器而做出的。如果功能忙,则提供忙条件,步骤840。利用该忙条件,可重试该指令,而不是放弃它。
如果功能不忙,则进一步确定功能信息块格式是否有效,查询842。例如,检查FIB的格式字段以确定该格式是否由系统支持。如果它是无效的,则提供异常条件,步骤844。如果功能信息块格式是有效的,则进一步确定在指令的操作数中指定的操作控制是否是有效的,查询846。即,该操作控制是否是用于该指令的指定操作控制中的一个。如果它是无效的,则提供异常条件,步骤848。但是,如果该操作控制是有效的,则继续处理指定的特定操作控制。
在一个例子中,操作控制是注册适配器中断操作,其被用于控制适配器中断。响应于该操作控制,基于功能信息块的合适内容,与适配器中断相关的适配器功能参数在设备表项中被设置。
参考图9来描述与该操作相关的逻辑的一个实施例。作为一个例子,从功能信息块获取的用于该操作的操作数包括例如:中断子类(ISC);允许的中断数(NOI);适配器中断位向量偏移(AIBVO);概要通知(S);适配器中断概要位向量偏移(ABVSO);适配器中断位向量(AIBV)地址;以及适配器中断概要位向量(AISB)地址。
参考图9,开始,在查询900,确定在FIB中指定的中断数(NOI)是否大于依赖于模型的最大值。如果是,则在步骤902,提供异常条件。但是,如果中断数不大于依赖于模型的最大值,则在查询904,进一步确定中断数加上适配器中断位向量偏移(NOI+AIBVO)是否大于依赖于模型的最大值。如果是,则在步骤906,提供异常条件。如果NOI加上AIBVO不大于依赖于模型的最大值,则在查询908,进一步确定AIBV地址加上NOI是否跨越4k边界。如果它确实跨越4k边界,则在步骤910,提供异常条件。否则,在步骤912,确定对于任何所需的资源是否有足够的资源可用。如果没有足够的资源,则在步骤914,提供异常条件。
否则,在步骤916,确定是否已经为该功能注册适配器中断。在一个实施例中,这可以通过检查(例如DTE/FTE中的)一个或多个参数来确定。特别地,与中断相关的参数例如NOI被检查。如果字段被填充,则为中断注册适配器。如果适配器已经被注册,则在步骤918,提供异常条件。否则,从FIB获取中断参数,并将其放置于设备表项中,且可选地,放置于相应的功能表项(FTE)中(或其他指定的位置)。此外,在步骤920,在DTE中设置MSI使能指示器。即,基于从功能信息块取回的信息,在DTE中且可选地在FTE中设置与适配器中断相关的PCI功能参数。这些参数包括例如ISC、NOI、AIBVO、S、AIBVSO、AIBV地址和AISB地址。
除了上述之外,可被指定的另一操作控制是注销存储器中断操作,其例子将参考图10来描述。使用该操作,与适配器中断相关的适配器功能参数被重置。
参考图10,开始,在查询1000,确定是否为中断注册了功能句柄所指定的适配器。如果不是,则在步骤1002,提供异常条件。否则,在查询1004,将功能表项(或其他位置)和相应设备表项中的中断参数设置为0。在一个例子中,这些参数包括ISC、NOI、AIBVO、S、AIBSO、AIBV地址和AISB地址。
上面详细描述的是基于呈现中断的适配器的类型来调整中断的处理的能力。操作系统从中断码来确定适配器的类型并且使用该信息来检查和处理仅用于该适配器类型的事件。这些能力中的一个或多个降低用于处理适配器事件的操作系统开销,这是由于操作系统不需要为所有适配器中断的所有适配器类型处理所有适配器事件指示器。
在此描述的实施例中,适配器是PCI适配器。如在此使用的,PCI指根据由外围组件互连特别兴趣组(PCI-SIG)(www.pcisig.com/home)定义的基于PCI的规范而实现的任何适配器,包括但不限于PCI或PCIe。在一个特定例子中,快速外围组件互连(PCIe)是组件级互连标准,其定义了用于I/O适配器和主机系统之间的事务的双向通信协议。根据用于PCIe总线上的传输的PCIe标准,PCIe通信被封装在包中。源于I/O适配器且止于主机系统的事务被称为上行事务。源于主机系统且止于I/O适配器的事务被称为下行事务。PCIe拓扑基于成对(例如,一个上行链路,一个下行链路)以形成PCIe总线的点对点单向链路。PCIe标准由PCI-SIG维护并公布。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图11,在一个例子中,计算机程序产品1100包括,例如,一个或多个计算机可读存储介质1102,在其上存储有计算机可读的程序代码装置或逻辑1104,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
尽管以上描述了各种实施例,这些仅是例子。例如,其他体系结构的计算环境可包含并使用本发明的一个或多个方面。作为例子,除了System服务器之外的服务器,诸如由国际商业机器公司提供的Power Systems服务器或其他服务器,或其他公司的服务器,可包括、使用和/或受益于本发明的一个或多个方面。而且,尽管在此示出的例子中,适配器和PCI集线器被认为是服务器的一部分,在其他实施例中,它们不是必须被认为是服务器的一部分,而是可被简单地认为是耦合到计算环境的系统存储器和/或其他组件。计算环境不需要是服务器。进一步,尽管适配器是基于PCI的,可与其他适配器或其他I/O组件一起使用本发明的一个或多个方面。适配器和PCI适配器仅仅是例子。进一步地,尽管描述了表,但是可以使用任意数据结构并且术语表包括所有这种数据结构。此外,可以使用其他类型的中断指示器,并且此处使用的DTE、FTE和其他结构可包括更多、更少或不同的信息。许多其他变化是可能的。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
参考图12,其描述了实施本发明的一个或多个方面的主机计算机系统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或通道子系统之间传递。除非另有指定,例如在中,存储器中的一组字节由该组的最左边的字节寻址。组中的字节的数量可由将被执行的操作暗示或显式地指定。当在CPU操作中使用时,一组字节被称为字段。在字节的每个组内,例如在中,位以从左到右的顺序被编号。在中,最左边的位有时候被称为“高阶”位且最右边的位被称为“低阶”位。但是,位数不是存储器地址。仅字节可被寻址。为了操作存储器中的字节的单个位,访问整个字节。字节上的位从左到右被编号为0到7(例如在中)。地址中的位被编号为对于24位地址的8-31或40-63,或者对于31位地址的1-31或33-63;它们被编号为对于64位地址的0-63。在多个字节的任何其他的固定长度的格式中,构成格式的位从0开始被连续编号。为了错误检测,且优选地为了校正,一个或多个校验位可与每一个字节或一组字节一起被传递。这样的校验位由机器自动生成且不能被程序直接控制。存储容量以字节的数量来表示。当存储器操作数字段的长度由指令的操作码暗示时,字段被称为具有固定长度,其可以是一个、两个、四个、八个或十六个字节。可为某些指令暗示更大的字段。当存储器操作数字段的长度没有被暗示,而是被显式地表示时,该字段被称为具有可变长度。可变长度的操作数可以一个字节的增量(或者对于一些指令,以两个字节倍数或其他倍数)在长度上可变。当信息被放在存储器中时,仅替换被包括在指定的字段中的哪些字节位置的内容,即使到存储器的物理路径的宽度可能大于正被存储的字段的长度。
某些信息单元位于存储器中的整数界限上。对于信息单元,当其存储器地址是以字节表示的单元长度的倍数时,界限被称为是整数的。特殊的名称被给予整数界限上的2、4、6、8和16字节的字段。半字是两字节边界上的一组两个连续的字节,且是指令的基本构件。字是四字节边界上的一组四个连续的字节。双字是八字节边界上一组八个连续的字节。四倍长字(quadword)是16字节边界上的一组16个连续的字节。当存储器地址指定半字、字、双字和四倍长字时,地址的二进制表示分别包括一个、两个、三个或四个最右边的零位。指令将位于二字节整数边界上。大多数指令的存储器操作数不具有界限对准要求。
在为指令和数据操作数实现单独的高速缓存的设备上,如果程序在高速缓存线中存储且指令被随后从该高速缓存线获取,可经历显著的延迟,不管该存储是否改变随后被获取的指令。
在一个实施例中,本发明可被软件(有时候被称为许可的内部代码、固件、微代码、毫代码、微微代码(pico-code)等,其任何一个都将符合本发明)实施。参考图12,体现本发明的软件程序代码可典型地由主系统5000的处理器从长期存储介质设备5011(诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上和/或体现软件程序代码或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
图13示出了可在其中实施本发明的代表性工作站或服务器硬件系统。图13的系统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可以是与另一个计算机的客户机/服务器安排中的客户机等。所有这些配置以及合适的通信硬件和软件在本领域中是已知的。
图14示出了其中可实施本发明的数据处理网络5040。数据处理网络5040可包括多个单独的网络,诸如无线网和有线网,其每个可包括多个单独的工作站5041、5042、5043、5044。此外,本领域技术人员将理解,可包括一个或多个LAN,其中LAN可包括多个耦合到主处理机的智能工作站。
仍然参考图14,网络也可包括大型计算机或服务器,诸如网关计算机(客户机服务器5046)或应用服务器(远程服务器5048,其可访问数据储存库,且也可直接从工作站5045被访问)。网关计算机5046用作到每个单独网络的进入点。当将一个连网协议连接到另一个时,需要网关。网关5046可通过通信链路优选地耦合到另一个网络(例如因特网5047)。也可使用通信链路将网关5046直接耦合到一个或多个工作站5041、5042、5043、5044。可以利用可从国际商业机器公司获得的IBM eServerTMSystem服务器来实现网关计算机。
同时参考图13和14,可体现本发明的软件编程代码可被系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可被体现在与数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或CD-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户5050、5051,以供这样的其他系统的用户使用。
或者,编程代码可体现在存储器5025中,且由处理器5026使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。程序代码通常从存储介质5027调页到高速存储器5025,在此它可用于由处理器5026进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,且不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。
最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(L1或级别1)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(I-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。
参考图15,为处理器5026示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存5053来缓冲存储器块,以便改善处理器性能。高速缓存5053是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器5025通常被称为高速缓存。在具有4个级别的高速缓存5053的处理器系统中,主存储器5025有时候被称为级别5(L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器5025可“高速缓存”由操作系统向主存储器5025调页入或从其调页出的数据页。
程序计数器(指令计数器)5061保持跟踪将被执行的当前指令的地址。处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW(程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量增量。RISC(精简指令集计算)指令典型地是固定长度,而CISC(复杂指令集计算)指令典型地是可变长度。的指令是具有长度为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。参考图16A,执行单元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(千字节)块。
参考图16B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU 5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信。
一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/O中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。
处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。此处的位置典型地意味着主存储器(主存储设备)中的位置,除非另外指明。
参考图16C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信,且包括各种寄存器电路、ALU 5085和控制逻辑5090以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。
优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和页表(单独地或组合地),优选地,段表具有指向页表的项。在中,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。转换表的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU(最少最近使用的)多个替换算法来管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/O、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。
I/O单元5054(图15)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/O单元通常由软件驱动器向计算机程序呈现。在诸如来自的System的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的I/O单元。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的大型计算机服务器以及的其他机器(例如,Power Systems服务器和System服务器)中被仿真。它们可在使用由AMDTM等制造的硬件的各种机器上运行Linux的机器中被执行。除了在下的该硬件上执行,Linux也可被用于这样的机器,其使用由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;以及许多其他专利的各种软件和硬件仿真专利示出各种已知的方式来实现针对可为本领域技术人员获得的目标机器对为不同机器进行架构设计的指令格式的仿真。
在图17中,提供了仿真主计算机系统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 (10)
1.一种促进计算环境中的中断处理的方法,包括步骤:
响应于一个或多个适配器的一个或多个对中断的请求,设置中断码,所述中断码包括:具有用于多个适配器类型中的每个适配器类型的源指示器的适配器中断源掩码(AISM)、适配器中断指示器和中断子类;以及
将所述中断码呈现给操作系统,以处理所述一个或多个对中断的请求,
其中所述操作系统是客户操作系统,并且其中所述设置包括从客户中断状态区域获得适配器类型以及在对应于所获得的适配器类型的AISM中设置源指示器,所述客户中断状态区域包括主机控制块,其中使得中断对所述客户操作系统待处理。
2.根据权利要求1的方法,其中所述多个适配器类型包括:外围组件互连(PCI)适配器类型和队列直接I/O(QDIO)适配器类型。
3.根据权利要求1的方法,其中设置源指示器向所述操作系统指示,所述设置源指示器所指示的适配器类型的一个或多个适配器请求中断。
4.根据权利要求3的方法,其中所述方法进一步包括:基于所述设置源指示器确定将用于处理所述中断的一个或多个中断事件指示器。
5.根据权利要求4的方法,其中响应于由所述设置源指示器所指示的适配器类型是一种适配器类型,检查对应于所述适配器类型的一个或多个中断事件指示器,并且不检查不用于所述适配器类型的一个或多个中断事件指示器。
6.根据权利要求4的方法,其中所述设置源指示器对应于外围组件互连类型适配器,并且所述一个或多个中断事件指示器包括一个或多个适配器中断概要位和一个或多个适配器中断位向量的一个或多个适配器中断位中的至少一个。
7.根据权利要求1的方法,其中所述获得包括从所述客户状态中断区域中的适配器中断源掩码获得所述适配器类型,所述适配器中断源掩码对应于客户中断子类,其中为所述客户中断子类呈现所述中断。
8.根据权利要求1的方法,其中所述适配器中断指示器指示适配器中断被请求用于与适配器相关联的中断子类。
9.根据权利要求1的方法,进一步包括由所述一个或多个适配器中的适配器接收对中断的请求,所述适配器包括外围组件互连适配器并且具有与此相关联的标识所述适配器的功能句柄。
10.一种包括适于执行根据任一在先方法权利要求的方法的所有步骤的装置的系统。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/821,178 US8504754B2 (en) | 2010-06-23 | 2010-06-23 | Identification of types of sources of adapter interruptions |
US12/821,178 | 2010-06-23 | ||
PCT/EP2010/067020 WO2011160705A1 (en) | 2010-06-23 | 2010-11-08 | Identification of types of sources of adapter interruptions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102918516A CN102918516A (zh) | 2013-02-06 |
CN102918516B true CN102918516B (zh) | 2015-08-12 |
Family
ID=43618098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080066989.6A Active CN102918516B (zh) | 2010-06-23 | 2010-11-08 | 适配器中断源的类型的标识 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8504754B2 (zh) |
EP (1) | EP2585932B1 (zh) |
JP (1) | JP5649200B2 (zh) |
CN (1) | CN102918516B (zh) |
WO (1) | WO2011160705A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5104631B2 (ja) * | 2008-08-01 | 2012-12-19 | 日本電気株式会社 | 伝送装置及び伝送装置の分散管理方法 |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) * | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
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 |
US8510599B2 (en) * | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8621112B2 (en) | 2010-06-23 | 2013-12-31 | International Business Machines Corporation | Discovery by operating system of information relating to adapter functions accessible to the operating system |
KR20120065097A (ko) * | 2010-12-10 | 2012-06-20 | 한국전자통신연구원 | 단말 가상화 환경에서 사용자 입력 처리 성능 향상을 위한 인터럽트 처리 장치 및 그 방법 |
US9304902B2 (en) | 2013-03-15 | 2016-04-05 | Saratoga Speed, Inc. | Network storage system using flash storage |
US10313236B1 (en) * | 2013-12-31 | 2019-06-04 | Sanmina Corporation | Method of flow based services for flash storage |
US9672180B1 (en) | 2014-08-06 | 2017-06-06 | Sanmina Corporation | Cache memory management system and method |
US9672173B2 (en) | 2015-02-26 | 2017-06-06 | Red Hat Israel, Ltd. | Shared PCI interrupt line management |
CN113806006A (zh) * | 2020-06-12 | 2021-12-17 | 华为技术有限公司 | 一种异构指令集架构下异常或中断的处理方法、装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586268A (en) * | 1995-03-03 | 1996-12-17 | Advanced System Products, Inc. | Multiple peripheral adapter device driver architecture |
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 |
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 |
Family Cites Families (185)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
EP0090804A1 (en) | 1981-10-13 | 1983-10-12 | International Business Machines Corporation | Method and apparatus for measurements of channel operation |
JPS6290729A (ja) * | 1985-10-16 | 1987-04-25 | Nec Corp | 仮想計算機システム制御方式 |
US5053952A (en) | 1987-06-05 | 1991-10-01 | Wisc Technologies, Inc. | Stack-memory-based writable instruction set computer having a single data bus |
JPH01245336A (ja) * | 1988-03-28 | 1989-09-29 | Fujitsu Ltd | 外部共有バスの割込み制御方式 |
JPH0758470B2 (ja) * | 1988-06-30 | 1995-06-21 | 日本電気株式会社 | 仮想計算機の割込み制御方式 |
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 |
GB2303951B (en) | 1994-06-28 | 1999-04-28 | Intel Corp | PCI to ISA interrupt protocol converter and selection mechanism |
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 |
US5802590A (en) | 1994-12-13 | 1998-09-01 | Microsoft Corporation | Method and system for providing secure access to computer resources |
JPH08263424A (ja) | 1995-03-20 | 1996-10-11 | Fujitsu Ltd | コンピュータ装置 |
JPH0934726A (ja) * | 1995-07-18 | 1997-02-07 | Hitachi Ltd | 割り込み制御方法 |
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 |
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 |
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 |
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 |
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 |
US7509391B1 (en) | 1999-11-23 | 2009-03-24 | Texas Instruments Incorporated | Unified memory management system for multi processor heterogeneous architecture |
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 |
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 |
US6654818B1 (en) | 2000-06-22 | 2003-11-25 | International Business Machines Corporation | DMA access authorization for 64-bit I/O adapters on PCI bus |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
US7000036B2 (en) | 2003-05-12 | 2006-02-14 | International Business Machines Corporation | Extended input/output measurement facilities |
US7290070B2 (en) | 2003-05-12 | 2007-10-30 | International Business Machines Corporation | Multiple logical input/output subsystem facility |
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 |
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 |
US7130949B2 (en) | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Managing input/output interruptions in non-dedicated interruption hardware environments |
US7174550B2 (en) | 2003-05-12 | 2007-02-06 | International Business Machines Corporation | Sharing communications adapters across a plurality of input/output subsystem images |
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 |
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 |
US8417852B2 (en) | 2003-06-05 | 2013-04-09 | Nvidia Corporation | Uploading TCP frame data to user buffers and buffers in system memory |
US7420931B2 (en) | 2003-06-05 | 2008-09-02 | Nvidia Corporation | Using TCP/IP offload to accelerate packet filtering |
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 |
US7146482B2 (en) | 2003-11-25 | 2006-12-05 | International Business Machines Corporation | Memory mapped input/output emulation |
US7552436B2 (en) | 2003-11-25 | 2009-06-23 | International Business Machines | Memory mapped input/output virtualization |
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 |
US7340582B2 (en) | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
US7334107B2 (en) | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
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 |
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 |
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 |
US7464191B2 (en) | 2005-02-25 | 2008-12-09 | International Business Machines Corporation | System and method for host initialization for an adapter that supports virtualization |
US7260664B2 (en) | 2005-02-25 | 2007-08-21 | International Business Machines Corporation | Interrupt mechanism on an IO adapter that supports virtualization |
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 |
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 |
US7328296B1 (en) | 2006-01-03 | 2008-02-05 | Emc Corporation | Interrupt processing system |
US7398343B1 (en) | 2006-01-03 | 2008-07-08 | Emc Corporation | Interrupt processing system |
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) |
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 |
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 |
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 |
US7849287B2 (en) | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
JP2008123298A (ja) | 2006-11-13 | 2008-05-29 | Canon Inc | 情報処理方法及びシステム |
US7624235B2 (en) | 2006-11-30 | 2009-11-24 | Apple Inc. | Cache used both as cache and staging buffer |
US7984454B2 (en) | 2006-12-19 | 2011-07-19 | International Business Machines Corporation | Migration of single root stateless virtual functions |
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 |
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 |
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 |
JP2009251802A (ja) * | 2008-04-03 | 2009-10-29 | Panasonic Corp | マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法 |
US20090276774A1 (en) | 2008-05-01 | 2009-11-05 | Junji Kinoshita | Access control for virtual machines in an information system |
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 |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
-
2010
- 2010-06-23 US US12/821,178 patent/US8504754B2/en active Active
- 2010-11-08 WO PCT/EP2010/067020 patent/WO2011160705A1/en active Application Filing
- 2010-11-08 CN CN201080066989.6A patent/CN102918516B/zh active Active
- 2010-11-08 EP EP10779509.8A patent/EP2585932B1/en active Active
- 2010-11-08 JP JP2013515718A patent/JP5649200B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586268A (en) * | 1995-03-03 | 1996-12-17 | Advanced System Products, Inc. | Multiple peripheral adapter device driver architecture |
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 |
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 |
Non-Patent Citations (1)
Title |
---|
Programmable Interrupt Vectors in Processors;Hennet PP等;《IBM Technical Disclosure Bulletin USA》;IP.com;19821001;第25卷(第5期) * |
Also Published As
Publication number | Publication date |
---|---|
CN102918516A (zh) | 2013-02-06 |
US20110320662A1 (en) | 2011-12-29 |
EP2585932A1 (en) | 2013-05-01 |
WO2011160705A1 (en) | 2011-12-29 |
JP2013536485A (ja) | 2013-09-19 |
US8504754B2 (en) | 2013-08-06 |
JP5649200B2 (ja) | 2015-01-07 |
EP2585932B1 (en) | 2019-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102918516B (zh) | 适配器中断源的类型的标识 | |
CN102906722B (zh) | 将消息信号中断转换为i/o适配器事件通知 | |
CN102906704B (zh) | 控制处理适配器中断请求的速率 | |
CN102906692B (zh) | 修改适配器功能参数的指令的方法和系统 | |
CN102906705B (zh) | 将消息信号中断转换为对客户操作系统的i/o适配器事件通知 | |
CN102906719B (zh) | 输入/输出地址到存储器地址的转换 | |
CN102906701B (zh) | 在计算环境中控制对适配器的访问的方法和系统 | |
CN102947808B (zh) | 一种有利于存储器访问的系统及方法 | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
CN102906702B (zh) | 对适配器的地址空间的访客端访问 | |
CN102906708B (zh) | 响应于适配器事件采取的动作的操作系统通知 | |
CN102906694B (zh) | 用于与适配器进行通信的加载指令的方法和系统 | |
CN102906711B (zh) | 用于适配器功能的测量工具 | |
CN102906720B (zh) | 启用/禁用计算环境的适配器 | |
CN102906707B (zh) | 管理与硬件事件关联的处理 | |
CN102906716A (zh) | 依据适配器的多个地址空间 | |
CN102906693B (zh) | 用于执行用于将数据存储在适配器中的存储指令的方法及系统 | |
CN103649921A (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 |