CN102906711B - 用于适配器功能的测量工具 - Google Patents

用于适配器功能的测量工具 Download PDF

Info

Publication number
CN102906711B
CN102906711B CN201080066962.7A CN201080066962A CN102906711B CN 102906711 B CN102906711 B CN 102906711B CN 201080066962 A CN201080066962 A CN 201080066962A CN 102906711 B CN102906711 B CN 102906711B
Authority
CN
China
Prior art keywords
instruction
adapter functions
function
adapter
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
Application number
CN201080066962.7A
Other languages
English (en)
Other versions
CN102906711A (zh
Inventor
P·K·什韦德
D·克拉多克
T·格雷格
B·格伦德宁
E·N·莱丝
S·G·维尔金斯
F·W·小布赖斯
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 CN102906711A publication Critical patent/CN102906711A/zh
Application granted granted Critical
Publication of CN102906711B publication Critical patent/CN102906711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Facsimiles In General (AREA)

Abstract

提供了一种测量工具,其用于捕获并呈现用于输入/输出子系统中的适配器功能的细粒度使用信息。基于每个功能来跟踪适配器特定的输入/输出流量,并将结果动态地呈现给用户。该信息可用于例如性能调整、负载均衡和基于使用的收费。

Description

用于适配器功能的测量工具
技术领域
本发明一般涉及输入/输出处理,且具体而言,涉及测量与输入/输出处理相关的资源使用。
背景技术
在大型计算系统中,测量工具(facility)通常是可用的,其提供与经过输入/输出(I/O)基础设施的流量(traffic)相关的信息。该信息可用于调整程序性能、负载均衡以及基于资源使用来对用户计费。
作为一个特定的例子,在国际商业机器公司提供的机器中,提供了实用工具(utility)来获取与流过I/O基础设施的流量相关的信息,该I/O基础设施被称为通道子系统。通道子系统提供用于跨通道类型和各种I/O子系统传输的通道访问的一致接口。该接口被称为开始子通道调用指令,由固件代表用户来执行。固件向用户隐藏了物理通道的细节,并被提供了实用工具(例如测量实用工具)来跟踪资源使用。
但是,使用其他I/O基础设施,物理通道的细节被暴露给用户,且这些基础设施提供的、隐藏所述细节的工具是不可用的。
Freking等的2009年5月14日公开的题为“DynamicallyScalableQueuesForPerformanceDrivenPCIExpressMemoryTraffic”(用于性能驱动PCIExpress存储器流量的动态可伸缩队列)的美国公开号2009/0125666A1描述了一种计算机程序产品,用于实现数据处理系统中的方法,以及PCIExpress协议,用于为多个不同的I/O配置使能高性能IO数据传输,所述IO配置包括可变的包大小和/或IO链路上的可变/不同数量的事务。PCIExpress协议被增强,以支持利用计数器和动态可变的队列大小。除了标准的队列项(entry)之外,提供/保留了若干个(或选择数目的)动态可改变队列项,且在增强PCIExpress协议中提供了动态队列修改(DQM)实用工具来监视正在进行的当前数据传输并基于在PCIExpressIO链路上传输的当前数据流量来管理队列项的大小何时被修改(增加或减少)。增强PCIExpress协议提供了平衡点,在该点上高效地传送很多大数据包,而同时限制每种大小的未完成包的数量。
在Carlson等的2009年10月6日发布的题为“EmulationofExtendedInput/OutputMeasurementBlockFacilities”(扩展输入/输出测量块工具的仿真)的美国专利号7,600,053中,扩展输入/输出(I/O)测量块工具被仿真。该工具提供了相关I/O测量数据的收集,以及存储,以用于对扩展测量块中的该数据的后续的高效检索(retrieval)。存储的数据涉及I/O子通道的性能。
Moch等的2009年12月8日发布的题为“MethodandApparatusforOptimizingtheResponsivenessandThroughputofaSystemPerformingPacketizedDataTransfersUsingaTransferCountMark”(使用传输计数标记来优化执行分包数据传输的系统的响应和吞吐量的方法和设备)描述了一种在包含发送和接收设备的系统中用于管理分包数据传输的方法。发送设备可以在多个包中向接收设备发送数据,每个包有预定数量的数据字节的宽度。发送设备可以包括传送计数单元,以基于已发送的数据字节数量来维护数据传送计数。接收设备可以用传送计数标记来对发送设备编程,该标记可以是对应于数据传送计数的特定计数的数字。发送设备可以计算数据传送计数和传送计数标记之间的差值。如果传送计数和传送计数标记之间的差值小于预定的数字,则发送设备可以向接收装置发送短数据包,该短数据包具有小于预定数量的数据字节。
发明内容
特定的I/O基础设施,例如PCIExpress,没有指定用于测量子系统活动的标准接口。但是,测量I/O流量的能力是需要的功能。因此,根据本发明的方面,提供了用于适配器功能(例如PCI功能)的测量工具。
通过提供用于测量计算环境中的资源使用的计算机程序产品,克服了现有技术中的缺陷,并提供了优势。计算机程序产品包括计算机可读存储介质,其可以被处理电路读取并存储由处理电路执行以执行方法的指令。所述方法包括例如执行修改PCI功能控制(MPFC)指令,该指令包含用于标识适配器的功能句柄,所述MPFC指定了存储器中的用于跟踪信息的位置;确定计算环境的适配器功能被通过指令访问,或者请求访问耦合到该适配器功能的系统存储器;跟踪特定于适配器功能的信息,其中,跟踪信息包含确定的访问指令的计数或确定的所请求的对存储器的访问的计数,其中,被跟踪的信息基于每个适配器功能;以及将跟踪信息存储在存储器的所述位置。
这里还描述和要求保护了与本发明的一个或多个方面相关的方法和系统。
通过本发明的技术,实现了额外的特征和优势。这里详细描述了本发明的其他实施例和方面,并且它们被认为是所要求保护的本发明的一部分。
附图说明
作为本说明书的结尾处的权利要求的例子,本发明的一个或多个方面被特别指出和明确要求。根据下列详细描述并结合附图,本发明的上述和其他目标、特征和优势将变得明显,在附图中:
图1示出了包含并使用本发明的一个或多个方面的计算环境的一个实施例;
图2示出了根据本发明的方面的跟踪指令的逻辑的一个实施例;
图3示出了根据本发明的方面的与功能关联的计数器的一个实施例;
图4A示出了根据本发明的方面的被用于跟踪来自适配器功能的DMA读写的传送计数器的一个实施例;
图4B示出了根据本发明的方面的跟踪DMA操作的逻辑的一个实施例;
图5示出了根据本发明的方面的用于适配器功能的测量控制块的一个实施例;
图6A示出了根据本发明的方面使用的修改PCI功能控制的一个实施例;
图6B示出了根据本发明的方面的由图6A中的修改PCI功能控制指令所使用的字段的一个实施例;
图6C示出了根据本发明的一方面的由图6A的修改PCI功能控制指令使用的另一个字段的一个实施例;
图6D示出了根据本发明的一方面而使用的功能信息块(FIB)的内容的一个实施例;
图7示出了根据本发明的一方面的修改PCI功能控制的逻辑的概况的一个实施例;
图8示出了根据本发明的方面的可由修改PCI功能控制指令指定的设置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)主计算机系统的一个实施例。
具体实施方式
根据本发明的方面,提供了一种测量工具,其用于捕获并呈现输入/输出子系统的细粒度使用信息,该子系统包括适配器,例如PCIExpress适配器。该信息可用于例如性能调整、负载均衡和基于使用的收费。在一个特定的例子中,基于每个适配器功能来跟踪适配器特定的I/O流量,并将结果动态地呈现给用户。例如,基于每个适配器功能,跟踪适配器访问指令,并记录(tally)直接存储器访问流量。例如由处理器的固件来跟踪访问指令,并且例如由硬件计数器来记录直接存储器访问流量。I/O子系统通过更新用户指定的存储器位置处的控制块,来向用户动态地呈现测量值。测量独立于设备,因为设备(例如适配器)的类型不需要被提前知道。
如这里所使用的,术语“适配器”包括任意类型的适配器(例如存储适配器、网络适配器、处理适配器、PCI适配器、加密适配器、其他类型的输入/输出适配器等)。在一个实施例中,一适配器包括一个适配器功能。但是,在其他实施例中,一适配器可包括多个适配器功能。本发明的一个或多个方面可以应用,不管一适配器包含一个适配器功能或多个适配器功能。此外,在这里展示的例子中,适配器是与适配器功能(例如PCI功能)可互换地使用的,除非另外说明。
参考图1描述包含并使用本发明的一个或多个方面的计算环境的一个实施例。在一个例子中,计算环境100是由国际商业机器公司提供的 服务器。服务器是基于由国际商业机器公司提供的关于的细节在IBM中描述,该出版物的标题是“z/ArchitecturePrinciplesofOperation”(z/Architecture操作原理),IBM出版号SA22-7832-07,2009年2月。是位于纽约州阿蒙克的国际商业机器公司的注册商标。在此使用的其他名字可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
在一个例子中,计算环境100包括经由存储控制器106耦合到系统存储器104(也称为主存储器)的一个或多个中央处理单元(CPU)102。为了访问系统存储器104,中央处理单元102发出包括被用于访问系统存储器的地址的读或写请求。包括在请求中的地址典型地不能直接用于访问系统存储器,且因此,其被转换为可直接用于访问系统存储器的地址。所述地址经由转换机制(XLATE)108而被转换。例如,使用例如动态地址转换(DAT),将地址从虚拟地址转换为真实或绝对的地址。
包括(必要时转换的)地址的请求被存储控制器106接收。在一个例子中,存储控制器106包含硬件且被用于仲裁对系统存储器的访问并维持存储器的一致性。该仲裁针对从CPU102接收的请求以及从一个或多个适配器110接收的请求而执行。与中央处理单元类似,适配器向系统存储器104发出请求以获得对系统存储器的访问。
在一个例子中,适配器110是外围组件互连(PCI)或PCIExpress(PCIe)适配器,其包括一个或多个PCI功能111。PCI功能发出请求,该请求经由一个或多个交换器(例如,PCIe交换器)114被路由到输入/输出集线器112(例如,PCI集线器)。在一个例子中,输入/输出集线器包括含有一个或多个状态机的硬件,并通过I/O至存储器总线120耦合到存储控制器106。
输入/输出集线器包括例如根复合体(rootcomplex)116,其从交换器接收请求。该请求包括输入/输出地址,该输入/输出地址被提供给地址转换和保护单元118,该地址转换和保护单元访问用于该请求的信息。作为例子,该请求包括输入/输出地址,该地址被用来执行直接存储器访问(DMA)或请求消息信号中断(MSI)。地址转换和保护单元118访问用于DMA或MSI请求的信息。作为特定的例子,对于DMA操作,可以获取信息来转换地址。被转换的地址然后被转发到存储控制器以访问系统存储器。
在一个例子中,从位于I/O集线器(例如地址转换和保护单元)中的设备表项获取用于适配器功能所发出的DMA或MSI请求的信息。设备表项包括用于适配器功能的信息,且每个适配器功能具有与其关联的至少一个设备表项。例如,每个被分配给适配器功能的地址空间有一个设备表项。对于适配器功能发出的请求,使用该请求中提供的请求者ID(例如指定了总线号、设备号和功能号)来定位设备表项。
除了适配器特别是适配器功能发出请求之外,适配器特别是适配器功能可被处理器102访问。该访问是通过由处理器发出的指令来进行的。在该例子中,该指令特定于I/O基础设施。即,由于I/O基础设施基于PCI或PCIe,指令为PCI指令。示例PCI指令包括PCI加载、PCI存储、PCI存储块、PCI修改和PCI刷新转换,这些仅是几个示例。尽管在该例子中I/O基础设施和指令基于PCI,在其他实施例中,可以使用其他的基础设施和相应的指令。
对于由处理器发出的对适配器功能的请求,与适配器功能关联的功能表项被引用。功能表项被存储在安全存储器中并用功能句柄来定位,它包括适配器功能的特性。在一个例子中,功能句柄包括指示句柄是否被使能的使能指示器;标识功能的功能号(这是静态标识符,并被用作到功能表中的索引);以及指定了该功能句柄的特定实例的实例号。
根据本发明的方面,提供了一种能力,其中,基于每个功能(适配器功能和功能在这里被可互换地使用)来对一个或多个PCI特定指令的执行进行计数,并测量适配器功能向/从系统存储器传送的数据量。此外,提供了一种能力,其用于使用当前的测量值来周期地动态更新系统存储器。
参考图2来描述跟踪PCI访问指令的逻辑的一个实施例。访问指令是访问适配器功能(例如是适配器功能的地址空间)或代表适配器功能来执行动作(例如填充(populate)或修改设备表项)的指令。在一个例子中,这些指令是用处理器的固件来实现的,且因此,固件执行指令跟踪。如这里所使用的,固件包括例如处理器的微代码、毫代码(millicode)和/或宏代码。它包括例如用于实现高级别的机器码的硬件级别的指令和/或数据结构。在一个实施例中,它包括例如专有(proprietary)代码,该专有代码典型地作为包括可信软件的微代码或特定于底层硬件的微代码而被交付,并控制操作系统访问系统硬件。
参考图2,开始,在步骤200,指令执行的主体完成。即,由处理器发出以执行用于指定适配器功能操作的PCI指令(例如加载、存储、存储块、修改或刷新转换指令)被执行,且该指令的主体完成。
此后,在查询202,确定指令的主体的执行是否成功。该确定例如是通过检查(例如I/O集线器所返回的)与指令关联的状态来实现的。如果执行不成功,在步骤204,指令执行完成,且在该实施例中不提供对该指令的跟踪。(在其他实施例中,失败的指令也可以被计数)。但是,如果执行成功,则在查询206,进一步确定是否对该适配器功能使能测量。即,在一个例子中,可通过设置与适配器功能关联的控制块中的测量使能指示器来基于每个适配器功能使能测量。如果测量未被使能,则在步骤204,再次地指令执行完成而不进行任何跟踪。
但是如果对该功能使能了测量,则在步骤208,从安全存储器取回用于该功能的指令使用计数器。例如,在一个实施例中,每个功能有多个计数器。如图3所示,功能A包括多个计数器,例如加载计数器310、存储计数器312、存储块计数器314、修改功能计数器316、以及刷新转换计数器318。这些计数器中的每个对应于一种类型的PCI指令,该PCI指令可用于访问PCI功能并想要对其进行跟踪。确定执行了哪种类型的指令,并取回对应于刚刚成功执行的指令的计数器。例如,如果执行了加载指令,则从安全存储器取回加载计数器310。此外,在其他实施例中,可以使用并/或跟踪更少或不同的计数器和/或指令。
回到图2,在取回合适的指令使用计数器之后,在步骤210,该计数器被递增(例如1),并被存回到安全存储器中。在步骤204,这完成了指令执行。
除了指令跟踪,根据本发明的方面,DMA操作也被跟踪。特别地,每个功能的数据传送量被记录。典型地,DMA操作对于使用前述指令计数机制的CPU来说是不可见的,因此使用了替代的技术。例如,如图4A所示,当PCI功能110发出DMA写或读操作时,该操作通过一个或多个交换器114在I/O集线器112处被接收。响应于在I/O集线器处从给定PCI功能接收到PCI读或写的包,根据数据传送的大小来递增集线器特别是根复合体116中的数据传送计数器400。在一个特定的例子中,为每个PCI功能维护了唯一的一组读和写数据传输计数器。这些计数器例如跟踪已传送的字节数。如果例如DMA操作是读操作,则用读取的字节数来更新读计数器。类似地,如果DMA操作是写操作,则用写入的字节数来更新写计数器。在一个例子中,计数器是硬件计数器(例如32字节粒度上的32位计数器)。
参考图4B来描述关于跟踪DMA操作的更多细节。在一个例子中,I/O集线器执行该逻辑。如图4B所示,开始,在步骤450,在I/O集线器处从PCI功能接收DMA请求。在查询452,确定是否对该PCI功能使能了测量。即,对特定的适配器功能使能测量。该确定是通过检测与该功能关联的指示器来进行的。如果测量使能指示器未被设置,则DMA操作的跟踪完成。但是,如果对该特定PCI功能使能了测量,则在步骤454,确定正被处理的请求的类型。即,请求是读请求还是写请求。此外,其他类型的操作,例如消息信号中断等,也可被计数。
基于请求的类型,在步骤458,选择并更新用于该类型和用于该功能的计数器。在一个例子中,这和DMA处理并发地进行。这完成了对DMA请求的跟踪。
除了以上所述,根据本发明的方面,对于每个PCI功能在系统存储器中都有测量控制块,其被周期地(例如每四秒钟)动态更新。例如,固件通过对功能的测量值的周期抽样来自动更新一个或多个适配器功能的一个或多个控制块。例如,固件周期地从I/O集线器读取计数器,并将它们加到测量控制块中的累积计数。
图5中示出了测量控制块的一个实施例。如图所示,在该例子中,测量控制块500包括多种参数,包括例如:
样本计数502:该字段在每次I/O子系统更新测量控制块时递增;
存储操作字段504:该字段是已经针对与该控制块关联的PCI功能执行的存储指令的更新值。该字段是通过将存储计数器312中的值加到该字段的值来更新的。
该控制块中的字段(不包括样本计数字段)可以累加给定时间段或在每个抽样周期之后重置,从而该值反映一个抽样周期的计数。累加周期基于策略来定义并且是可配置的;
加载操作字段506:该字段包括用于该PCI功能的加载操作的计数。该字段是通过将加载计数器310中的值加到该字段的值来更新的;
存储块操作字段508:该字段包括用于该PCI功能的存储块操作的计数。该字段是通过将存储块计数器314中的值加到该字段的值来更新的;
刷新转换操作字段510:该字段包括用于该PCI功能的刷新转换指令的计数。该字段是通过将刷新转换计数器318中的值加到该字段的值来更新的。刷新转换指令被用来更新适配器所使用的转换信息;以及
DMA读/写计数器512:该字段还包括用于该PCI功能的读和写计数器的更新信息。在该例子中,这些计数器是64位的计数器。例如,传送计数器400是周期地从I/O集线器取回的,并被用于更新DMA读/写计数器512。
再一次地,在指定的时间间隔动态地更新测量块中的每个字段。样本计数字段被递增,且其他字段中的每个通过将控制块中的值加上或替换为安全存储器中的其相应计数器来更新。
在一个特定的例子中,PCI功能可以具有为其定义的一个或多个地址空间,且因此,根复合体将包括用于功能的每个地址空间的一对读/写计数器。类似地,PCI功能的测量块包括用于每个地址空间的读/写计数器对。
为了为功能使能测量工具,在一个例子中,操作系统执行被称为修改PCI功能控制指令的测量注册指令。该指令的执行被用来向I/O子系统通知用于测量控制块的系统存储器中的地址以及用来访问该位置的键(key)。在一个特定的例子中,该指令还可被跟踪,且因此,在测量控制块中将存在用于该指令的字段,以及在安全存储器中将存在计数器(见例如修改功能计数器316)。
这里介绍有关用于注册适配器中断的修改PCI功能控制指令的进一步细节。参照图6A,修改PCI功能控制指令600包括例如指示修改PCI功能控制指令的操作码602;指定所包括的各种信息所在位置的第一字段604,所述信息是关于操作参数正为其建立的适配器功能的信息;以及指明从其获取PCI功能信息块(FIB)的位置的第二字段606。以下将进一步描述由字段1和2指定的位置的内容。
在一个实施例中,字段1指定包括各种信息的通用寄存器。如图6B所示,寄存器的内容包括例如功能句柄(handle)610,其标识适配器功能的句柄,修改指令是代表该功能执行的;地址空间612,其指定与由功能句柄指定的适配器功能有关的系统存储器中的地址空间;操作控制614,其指定将针对适配器功能而执行的操作;以及状态616,其以预定码提供当完成指令时关于指令的状态。
在一个实施例中,功能句柄包括例如指示句柄是否被使能的使能指示器,标识适配器功能的功能号(这是静态标识符,且可被用于索引到功能表中);以及实例号,其指定该功能句柄的特定实例。存在用于每个适配器功能的功能句柄,且其用于定位功能表中的功能表项(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字段表示最低有效(leastsignificant)的地址位。
b.下一个连续BARn+1字段表示最高有效(mostsignificant)的地址位。
c.对应的SIZEn字段是非零的,并表示地址空间的大小。
d.对应的SIZEn+1字段不是有意义的,且被存储为零。
内部路由信息:该信息被用于执行到适配器的特定路由。作为例子,它包括例如节点、处理器芯片和集线器寻址信息。
状态指示:这提供了关于例如加载/存储操作是否被阻止(block)或适配器是否处于错误状态的指示,以及其他指示。
在一个例子中,示忙器、持久错误状态指示器以及恢复启动指示器基于由固件执行的监督而被设置。而且,许可指示器基于例如策略而被设置;且BAR信息基于在处理器(例如,处理器的固件)的总线行走(buswalk)期间发现的配置信息而被设置。其他字段可基于配置、初始化和/或事件而被设置。在其他实施例中,功能表项可包括更多、更少或不同的信息。包括的信息可取决于由适配器功能支持或使能的操作。
参考图6C,在一个例子中,字段2指示PCI功能信息块(FIB)的逻辑地址620,该PCT功能信息块包括关于有关适配器功能的信息。功能信息块被用于更新设备表项和/或与适配器功能有关的功能表项(或其他位置)。该信息在适配器的初始化和/或配置期间,以及/或者响应于特定事件而被存储在FIB中。
参考图6D描述关于功能信息块(FIB)的进一步细节。在一个实施例中,功能信息块650包括以下字段:
格式651:该字段指定FIB的格式。
拦截控制652:该字段被用来指示特定指令由可调页模式客户(pageablemodeguest)进行的客户执行是否导致指令拦截;
错误指示654:该字段包括用于直接存储器访问和适配器中断的错误状态指示。当该位被设置(例如1)时,在执行用于适配器功能的直接存储器访问或适配器拦截时,检测到一个或多个错误;
加载/存储阻止656:该字段指示加载/存储操作是否被阻止;
PCI功能有效658:该字段包括用于适配器功能的使能控制。当该位被设置(例如1)时,适配器功能被认为对于I/O操作而被使能;
地址空间注册660:该字段包括用于适配器功能的直接存储器访问使能控制。当该字段被设置(例如1)时,直接存储访问被使能;
页大小661:该字段指示将被DMA存储器访问所访问的页或其他存储单元的大小;
PCI基地址(PBA)662:该字段是用于分配给适配器功能的系统存储器中的地址空间的基地址。它表示适配器功能被允许使用以直接存储器访问指定的DMA地址空间的最低虚拟地址;
PCI地址界限(PAL)664:该字段表示适配器功能被允许在指定的DMA地址空间内访问的最高虚拟地址;
输入/输出地址转换指针(IOAT)666:输入/输出地址转换指针指定由PCI虚拟地址转换使用的任何转换表中的第一个,或者它可直接指定作为转换结果的存储帧的绝对地址;
中断子类(ISC)668:该字段包括用于针对适配器功能给出适配器中断的中断子类;
中断数(NOI)670:该字段指定针对适配器功能接受的不同的中断代码的数量。该字段也以位定义了由适配器中断位向量地址和适配器中断位向量偏置字段指定的适配器中断位向量的大小;
适配器中断位向量地址(AIBV)672:该字段指定用于适配器功能的适配器中断位向量的地址。该向量在中断处理中使用;
适配器中断位向量偏移674:该字段指定用于适配器功能的第一适配器中断位向量位的偏移;
适配器中断概要位地址(AISB)676:该字段提供指定可选地在中断处理中使用的适配器中断概要位的地址;
适配器中断概要位偏移678:该字段提供到适配器中断概要位向量中的偏移;
功能测量块(FMB)地址680:该字段提供用于收集关于适配器功能的测量的功能测量块的地址;
功能测量块键682:该字段包括访问功能测量块的访问键;
概要位通知控制684:该字段指示是否存在正使用的概要位向量;
指令授权令牌686:该字段用于确定可调页存储模式客户是否被授权执行PCI指令而没有主机干预。
在一个例子中,在中,可调页客户经由开始解释执行(SIE)指令以解释等级2被解释性地执行。例如,逻辑分区(LPAR)管理程序(hypervisor)执行SIE指令以开始物理的、固定的存储器中的逻辑分区。如果是该逻辑分区中的操作系统,它发出SIE指令以在其V=V(虚拟)存储中执行其客户(虚拟)机。因此,LPAR管理程序使用等级1SIE,且管理程序使用等级2SIE;以及
地址转换格式687:该字段指示用于将在转换中使用的最高级转换表的地址转换的所选择的格式(例如,最高级表(例如段表、区域(region)第三等)的指示,以及所选择的格式(例如,CPUDAT兼容、I/O扩展地址转换格式、绕过(bypass)格式、无获取格式)的指示)。它可以是指示格式。
在修改PCI功能控制指令中指定的功能信息块被用于修改选择的设备表项、功能表项和/或与在指令中指定的适配器功能有关的其他固件控制。通过修改设备表项、功能表项和/或其他固件控制,为适配器提供某些服务。这些服务包括,例如,适配器中断;地址转换;重置错误状态;重置加载/存储阻止;设置功能测量参数;以及设置拦截控制。
参考图7描述与修改PCI功能控制指令有关的逻辑的一个实施例。在一个例子中,指令由操作系统(或其他配置)发出并由执行操作系统的处理器(例如,固件)执行。在此处的例子中,指令和适配器功能是基于PCI的。但是,在其他实施例中,可使用不同的适配器结构和相应的指令。
在一个例子中,操作系统向指令提供以下操作数(例如,在由指令指定的一个或多个寄存器中);PCI功能句柄;DMA地址空间标识符;操作控制;以及功能信息块的地址。
参考图7,初始地,确定是否安装了允许修改PCI功能控制指令的工具(facility),查询700。该确定通过例如检查存储在例如控制块中的指示器而做出。如果工具未安装,提供异常条件,步骤702。否则,确定指令是否由可调页存储模式客户(或其他客户)发出,查询704。如果是,主机操作系统将仿真用于该客户机的操作,步骤706。
否则,确定一个或多个操作数是否被对准,查询708。例如,确定功能信息块的地址是否是在双字边界。在一个例子中,这是可选的。如果操作数未被对准,则提供异常条件,步骤710。否则,确定功能信息块是否可访问,查询712。如果否,则提供异常条件,步骤714。否则,确定在修改PCI功能控制指令的操作数中提供的句柄是否被使能,查询716。在一个例子中,该确定通过检查句柄中的使能指示器而做出。如果句柄没有被使能,则提供异常条件,步骤718。
如果句柄被使能,则句柄被用于定位功能表项,步骤720。即,至少一部分句柄被用于索引到功能表中以定位对应于适配器功能的功能表项,操作参数将为该适配器功能建立。
确定功能表项是否被发现,查询722。如果否,则提供异常条件,步骤724。否则,如果发出指令的配置是客户,查询726,则提供异常条件(例如拦截到主机),步骤728。如果配置不是客户,则该查询可被忽略,或者如果指定的话,可检查其他授权。
随后确定该功能是否被使能,查询730。在一个例子中,该确定是通过检查功能表项中的使能指示器而做出的。如果它未被使能,则提供异常条件,步骤732。
如果功能被使能,则确定恢复是否是活动的,查询734。如果由功能表项中的恢复指示器确定恢复是活动的,则提供异常条件,步骤736。但是,如果恢复不是活动的,则进一步确定功能是否忙,查询738。该确定是通过查询功能表项中的示忙器而做出的。如果功能忙,则提供忙条件,步骤740。利用该忙条件,可重试该指令,而不是放弃它。
如果功能不忙,则进一步确定功能信息块格式是否有效,查询742。例如,检查FIB的格式字段以确定该格式是否由系统支持。如果它是无效的,则提供异常条件,步骤744。如果功能信息块格式是有效的,则进一步确定在指令的操作数中指定的操作控制是否是有效的,查询746。即,该操作控制是否是用于该指令的指定操作控制中的一个。如果它是无效的,则提供异常条件,步骤748。但是,如果该操作控制是有效的,则继续处理指定的特定操作控制。
可由操作控制指定的一个操作是用于维护测量的设置PCI功能测量参数操作。使用该操作,从功能信息块来设置与PCI功能测量相关的PCI功能参数。如果功能测量块地址(FMBA)字段包含非零地址,则PCI功能测量被使能。但是,如果功能测量块地址包含零,则PCI功能测量被禁止。在一个例子中,从功能信息块获取的用于该操作的操作数包括功能测量块地址和功能测量块键(FMBK)。隐含的操作数包括DMA地址空间的数量,这是从功能表项获取的。
参考图8来描述与该操作关联的逻辑的一个实施例。在一个例子中,在查询800,确定功能测量块地址是否等于0。如果是,则在步骤802,功能表项中的功能测量参数被重置为0。此外,I/O集线器中的DMA计数器被清除和禁止,且测量被禁止。
回到查询800,如果功能测量块地址不是0,则在查询806,进一步确定用于所有设备表项的功能测量块是否跨越4k边界。在一个例子中,通过加上功能测量块地址、固定功能测量块大小加用于每个DMA地址空间的DMA地址空间特定扩展,来确定4k块跨越。如果功能测量块跨越4k边界,则在步骤808,提供异常条件。否则,在步骤812,从功能信息块的功能测量块地址和功能测量块键参数来设置功能表项中的功能测量参数(例如FMBA和FMBK)。此外,I/O集线器中的DMA计数器被清除和使能,且测量被使能。
此外,提供了关于PCI加载、PCI存储和PCI存储块的更多细节。
首先参考图9A,示出了PCI加载指令的一个实施例。如图所示,PCI加载指令900包括例如操作码902,其指示PCI加载指令;第一字段904,其指定了从适配器功能获取的数据将加载的位置;以及第二字段906,其指定了关于适配器功能的各种信息被包含在的位置,数据从该适配器功能加载。下面将进一步描述字段1和2所指定的位置的内容。
在一个例子中,字段1指定了通用寄存器,且如图9B所示,该寄存器的内容904包括从指令所指定的适配器功能的位置加载的连续范围的一个或多个字节。在一个例子中,该数据被加载到寄存器的最右端的字节位置。
在一个实施例中,字段2指定了包含多种信息的一对通用寄存器。如图9B所示,寄存器的内容包括例如:
使能句柄910:该字段是适配器功能的使能的功能句柄,数据将从该适配器功能加载;
地址空间912:该字段标识了适配器功能中的地址空间,数据将从该地址空间加载;
地址空间中的偏移914:该字段指定了指定地址空间中的偏移,数据将从该偏移加载;
长度字段916:该字段指定了加载操作的长度(例如要加载的字节数);以及
状态字段918:该字段提供了状态代码,在指令以预定义的条件代码完成时,该状态代码可以应用。
在一个实施例中,从适配器功能加载的字节将被包含在适配器功能的指定PCI地址空间中的整数边界之内。当地址空间字段指定了存储器地址空间时,整数边界大小例如是双字。当地址空间字段指定了I/O地址空间或配置地址空间,整数边界大小例如是字。
参考图10A-10B来描述与PCI加载指令关联的逻辑的一个实施例。在一个例子中,指令由操作系统(或其他配置)发出,并由执行操作系统的处理器(例如固件)来执行。在这里的例子中,指令和适配器功能基于PCI。但是,在其他例子中,可以使用不同的适配器架构和相应的指令。
为了发出指令,操作系统向指令提供了下列操作数(例如在指令所指定的一个或多个寄存器中):PCI功能句柄、PCI地址空间(PCIAS)、PCI地址空间中的偏移、以及要加载的数据的长度。在PCI加载指令成功完成时,数据被加载到指令所指定的位置(例如寄存器)。
参考图10A,开始,在查询1000,确定允许PCI加载指令的工具是否已安装。该确定是通过例如检查例如控制块中存储的指示器来进行的。如果工具未安装,则在步骤1002提供异常条件。否则,在查询1004,确定操作数是否对齐。例如,如果某些操作数需要位于偶数/奇数寄存器对中,则确定是否满足这些条件。如果操作数未对齐,则在步骤1006,提供异常。否则,如果工具已安装且操作数对齐,则在查询1008,确定PCI加载指令的操作数中提供的句柄是否被使能。在一个例子中,该确定是通过检查句柄中的使能指示器来进行的。如果句柄未被使能,则在步骤1010,提供异常条件。
如果句柄被使能,则在步骤1012,该句柄被用于定位功能表项。即,句柄的至少一部分被用作到功能表中的索引,以定位对应于适配器功能的功能表项,数据将从该适配器功能加载。
此后,如果发出指令的配置是客户,则在查询1014,确定该功能是否被配置给客户使用。如果它未被授权,则在步骤1016,提供异常条件。如果配置不是客户,则该查询可被忽略,或者如果被指定,可以检查其他授权。
然后在查询1018,确定功能是否被使能。在一个例子中,该确定是通过检查功能表项中的使能指示器来进行的。如果未被使能,则在步骤1020,提供异常条件。
如果功能被使能,则在查询1022,确定地址空间是否有效。例如,指定的地址空间是否是适配器功能的指定地址空间且适用于该指令。如果地址空间是无效的,则在步骤1024,提供异常条件。否则,在查询1026,确定加载/存储是否被阻止。在一个例子中,该确定是通过检查功能表项中的状态指示器来进行的。如果加载/存储被阻止,则在步骤1028,提供异常条件。
但是,如果加载/存储未被阻止,则在查询1030,确定恢复是否是活动的。在一个例子中,该确定是通过检查功能表项中的恢复启动指示器来进行的。如果恢复是活动的,则在步骤1032,提供异常条件。否则,在查询1034,确定功能是否忙。该确定是通过检查功能表项中的示忙器来进行的。如果功能忙,则在步骤1036,提供忙条件。使用忙条件,可以重试而不是丢弃指令。
如果功能不忙,则在查询1038,进一步确定指令中指定的偏移是否有效。即,该偏移与操作的长度的组合是否在功能表项所指定的地址空间的基(base)及长度之内。如果不是,则在步骤1040,提供异常条件。但是,如果偏移是有效的,则在查询1042,确定长度是否有效。即,根据地址空间类型、地址空间中的偏移以及整数边界大小,该长度是否有效。如果否,则在步骤1044,提供异常条件。否则,处理继续处理加载指令(在一个实施例中,固件执行上述检查)。
继续图10B,在查询1050,由固件来确定加载是否用于适配器功能的配置地址空间。即,基于适配器功能的存储器的配置,在指令中提供的指定地址空间是否是配置空间。如果是,则固件执行多种处理,以向与适配器功能耦合的集线器提供请求;然后在步骤1052,集线器将该请求路由到功能。
例如,固件从功能表项获取请求者ID,指令操作数中提供的功能句柄指向该功能表项。此外,固件基于功能表项中的信息(例如内部路由信息)来确定接收该请求的集线器。即,环境可具有一个或多个集线器,且固件确定与适配器功能耦合的集线器。它然后将请求转发到集线器。该集线器产生配置读请求包,该请求包在PCI总线上流到功能表项中的RID所标识的适配器功能。配置读请求包括用于获取数据的RID和偏移(即数据地址),如下所述。
回到查询1050,如果指定的地址空间不是配置空间,则再一次地在步骤1054,固件执行多种处理,以提供到集线器的请求。固件使用句柄来选择功能表项,并从该项获取信息以定位合适的集线器。它还计算要在加载操作中使用的数据地址。该地址是通过将从功能表项获取的BAR起始地址(该BAR与指令中提供的地址空间标识符相关联)加到指令中提供的偏移来计算的。该计算的数据地址被提供给集线器。集线器然后采用该地址并将它包含在请求包例如DMA读请求包中,该请求包在PCI总线上流到适配器功能。
响应于通过步骤1052或步骤1054接收到请求,在步骤1056,适配器功能从指定位置(例如在数据地址处)获取请求的数据,并响应于请求来返回该数据。该响应从适配器功能转发到I/O集线器。响应于接收到响应,集线器将该响应转发到发起的处理器。发起的处理器然后从响应包中取出该数据,并将它加载到指令中指定的指定位置(例如字段1)。PCI加载操作以成功指示(例如,将条件代码设置为0)结束。
除了从适配器功能取回数据并将它存储在指定位置的加载指令,另一个可被执行的指令为存储指令。该存储指令将数据存储在适配器功能的指定位置。参考图11A来描述PCI存储指令的一个实施例。如图所示,PCI存储指令1100包括例如操作码1102,其指示PCI存储指令;第一字段1104,其指定了包含要被存储在适配器功能中的数据的位置;以及第二字段1106,其指定了关于适配器功能的多种信息被包含在的位置,数据被存储在该适配器功能中。下面将进一步描述字段1和2所指定的位置的内容。
在一个例子中,字段1指定了通用寄存器,且如图11B所示,该寄存器的内容1104包括将被存储到适配器功能的指定位置的连续范围的一个或多个字节。在一个例子中,寄存器的最右端的字节位置的数据被存储。
在一个实施例中,字段2指定了包含多种信息的一对通用寄存器。如图11C所示,寄存器的内容包括例如:
使能句柄1110:该字段是适配器功能的使能的功能句柄,数据将被存储到该适配器功能;
地址空间1112:该字段标识了适配器功能中的地址空间,数据将被存储到该地址空间;
地址空间中的偏移1114:该字段指定了指定地址空间中的偏移,数据将被存储到该偏移;
长度字段1116:该字段指定了存储操作的长度(例如要存储的字节数);以及
状态字段1118:该字段提供了状态代码,在指令以预定义的条件代码完成时,该状态代码可以应用。
参考图12A-12B来描述与PCI存储指令关联的逻辑的一个实施例。在一个例子中,指令由操作系统发出,并由执行操作系统的处理器(例如固件)来执行。
为了发出指令,操作系统向指令提供了下列操作数(例如在指令所指定的一个或多个寄存器中):PCI功能句柄、PCI地址空间(PCIAS)、到PCI地址空间中的偏移、要存储的数据的长度、以及指向要存储的数据的指针。在PCI存储指令成功完成时,数据被存储在指令所指定的位置中。
参考图12A,开始,在查询1200,确定允许PCI存储指令的工具是否已安装。该确定是通过例如检测例如控制块中存储的指示器来进行的。如果工具未被安装,则在步骤1202提供异常条件。否则,在查询1204,确定操作数是否对齐。例如,如果某些操作数需要位于偶数/奇数寄存器对中,则确定是否满足这些条件。如果操作数未对齐,则在步骤1206,提供异常。否则,如果工具已安装且操作数对齐,则在查询1208,确定PCI存储指令的操作数中提供的句柄是否被使能。在一个例子中,该确定是通过检查句柄中的使能指示器来进行的。如果句柄未被使能,则在步骤1210,提供异常条件。
如果句柄被使能,则在步骤1212,该句柄被用于定位功能表项。即,句柄的至少一部分被用作到功能表中的索引,以定位对应于适配器功能的功能表项,数据将被存储到该适配器功能。
此后,如果发出指令的配置是客户,则在查询1214,确定该功能是否被配置给客户使用。如果未被授权,则在步骤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起始地址加到指令中提供的偏移来计算的。该计算的数据地址被提供给集线器。集线器然后采用该地址并将它包含在请求包(例如DMA写请求包)中,该请求包在PCI总线上流到适配器功能。
响应于通过步骤1252或步骤1254接收到请求,在步骤1256,适配器功能在指定位置(例如在数据地址处)存储请求的数据。PCI存储操作指令以成功指示(例如,将条件代码设置为0)结束。
除了加载和存储指令(其典型地加载或存储最大例如8字节),另一可被执行的指令为存储块指令。存储块指令在适配器功能中的指定位置存储更大的数据块(例如16、32、64、128或256字节);块大小在大小上不是必须要限于2的幂。在一个例子中,指定位置在适配器功能的存储器空间中(不是I/O或配置空间)。
参考图13A来描述PCI存储块指令的一个实施例。如图所示,PCI存储块指令1300包括例如操作码1302,其指示PCI存储块指令;第一字段1304,其指定关于适配器功能的多种信息被包含在的位置,数据将被存储到该适配器功能;第二字段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,开始,在查询1400,确定允许PCI存储块指令的工具是否已安装。该确定是通过例如检测例如控制块中存储的指示器来进行的。如果工具未安装,则在步骤1402提供异常条件。否则,如果工具已安装,则在查询1404,确定PCI存储块指令的操作数中提供的句柄是否被使能。在一个例子中,该确定是通过检查句柄中的使能指示器来进行的。如果句柄未被使能,则在步骤1406,提供异常条件。
如果句柄被使能,则在步骤1412,该句柄被用于定位功能表项。即,句柄的至少一部分被用作到功能表中的索引,以定位对应于适配器功能的功能表项,数据将被存储到该适配器功能。
此后,如果发出指令的配置是客户,则在查询1414,确定该功能是否被配置给客户使用。如果未被授权,则在步骤1416,提供异常条件。如果配置不是客户,则该查询可被忽略,或者如果被指定,可以检查其他授权。
然后在查询1418,确定功能是否被使能。在一个例子中,该确定是通过检查功能表项中的使能指示器来进行的。如果未被使能,则在步骤1420,提供异常条件。
如果功能被使能,则在查询1422,确定地址空间是否有效。例如,指定的地址空间是否是适配器功能的指定地址空间且是适用于该指令的地址空间(即存储器空间)。如果地址空间是无效的,则在步骤1424,提供异常条件。否则,在查询1426,确定加载/存储是否被阻止。在一个例子中,该确定是通过检查功能表项中的状态指示器来进行的。如果加载/存储被阻止,则在步骤1428,提供异常条件。
但是,如果加载/存储未被阻止,则在查询1430,确定恢复是否是活动的。在一个例子中,该确定是通过检查功能表项中的恢复启动指示器来进行的。如果恢复是活动的,则在步骤1432,提供异常条件。否则,在查询1434,确定功能是否忙。该确定是通过检查功能表项中的示忙器来进行的。如果功能忙,则在步骤1436,提供忙条件。使用忙条件,可以重试而不是丢弃指令。
如果功能不忙,则在查询1438,进一步确定指令中指定的偏移是否有效。即,该偏移与操作的长度的组合是否在功能表项所指定的地址空间的基及长度之内。如果否,则在步骤1440,提供异常条件。但是,如果偏移是有效的,则在查询1442,确定长度是否有效。即,根据地址空间类型、地址空间中的偏移以及整数边界大小,该长度是否有效。如果否,则在步骤1444,提供异常条件。否则,处理继续处理存储块指令(在一个实施例中,固件执行上述检查)。
继续图14B,在查询1450,由固件来确定包含要被存储的数据的存储器是否是可访问的。如果否,则在步骤1452,提供异常条件。如果是,则固件执行多种处理,以向与适配器功能耦合的集线器提供请求;然后在步骤1454,集线器将该请求路由到功能。
例如,固件使用句柄来选择功能表项,并从该项获取信息以定位合适的集线器。它还计算要在存储块操作中使用的数据地址。该地址是通过将从功能表项获取的BAR起始地址(该BAR由地址空间标识符来标识)加到指令中提供的偏移来计算的。该计算的数据地址被提供给集线器。此外,从系统存储器获取指令中提供的地址所引用的数据,并将它提供给I/O集线器。集线器然后采用该地址和数据,并将它包含在请求包(例如DMA写请求包)中,该请求包在PCI总线上流到适配器功能。
响应于接收到请求,在步骤1456,适配器功能在指定位置(例如在数据地址)存储请求的数据。PCI存储块操作指令以成功指示(例如,将条件代码设置为0)结束。
上面详细描述了测量工具,其中,基于每个功能来跟踪PCI特定的I/O流量,并将结果动态地呈现给用户(例如操作系统、操作系统的设备驱动器、其他程序等)。特别地,基于每个功能,访问指令被跟踪,且直接存储器访问指令被记录。测量独立于设备,其中设备的类型不需要被提前知道。
这里提供的测量工具使能了对I/O子系统中的资源使用的跟踪,该I/O子系统提供了指令以允许程序(例如操作系统)将访问指向适配器功能。资源使用被跟踪,而不使用调试工具,且不使操作系统或应用程序插装(instrumenting)代码来记录这种使用。这里提供的装置被集成到处理器中,由此可被公用于操作系统,并使得结果能动态可用。类似地,为了测量数据传送数量,该能力被集成到I/O基础设施中,而结果动态可用。
在一个例子中,基于每个功能来使能测量工具。此外,动态地,基于每个功能将测量值推送到用户空间,而不是使用户程序来查询这种信息。
在此描述的实施例中,适配器是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)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图15,在一个例子中,计算机程序产品1500包括,例如,一个或多个计算机可读存储介质1502,在其上存储有计算机可读的程序代码装置或逻辑1504,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
尽管以上描述了各种实施例,这些仅是例子。例如,其他体系结构的计算环境可包含并使用本发明的一个或多个方面。作为例子,除了 服务器之外的服务器,诸如由国际商业机器公司提供的PowerSystems服务器或其他服务器,或其他公司的服务器,可包括、使用和/或受益于本发明的一个或多个方面。而且,尽管在此示出的例子中,适配器和PCI集线器被认为是服务器的一部分,在其他实施例中,它们不是必须被认为是服务器的一部分,而是可被简单地认为是耦合到计算环境的系统存储器和/或其他组件。计算环境不需要是服务器。而且,在其他例子中,计算环境可以被逻辑地分区,且在这样的例子中,计数器与特定的逻辑分区相关联。此外,尽管适配器是基于PCI的,可与其他适配器或其他I/O组件一起使用本发明的一个或多个方面。适配器和PCI适配器仅仅是例子。而且,可以跟踪更多、更少或不同的信息。许多其他变化是可能的。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumbdrive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
参考图16,其描述了实施本发明的一个或多个方面的主计算机系统5000的代表性组件。代表性主计算机5000包括与计算机存储器(即,中央存储器)5002通信的一个或多个CPU,以及到存储介质设备5011和网络5010的I/O接口,以用于与其他计算机或SAN等通信。CPU5001符合具有架构指令集和架构功能的架构。CPU5001可具有动态地址转换(DAT)5003,其用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型地包括用于高速缓存转换的转换后备缓冲器(TLB)5007,这样稍后对计算机存储器5002块的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处理器5001之间。高速缓存5009可以是分层的,具有可被多于一个的CPU获得的大高速缓存,以及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施方式中,较低级的高速缓存被拆分以为指令获取和数据访问提供单独的低级高速缓存。在一个实施例中,由指令获取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。指定被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执行。
需注意的是,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括持久分配地存储位置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之前都将(从输入设备)被加载到主存储器。
主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。
可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。模型可提供EXTRACTCACHEATTRIBUTE(提取高速缓存属性)指令,其返回高速缓存线的字节大小。模型也可提供PREFETCHDATA(预取数据)和PREFETCHDATARELATIVELONG(预取较长数据)指令,其实现存储到数据或指令高速缓存中的预取,或数据从高速缓存的释放。
存储器被视为位的长水平串。对于大部分操作来说,以从左到右的顺序进行对存储器的访问。位串被细分为八个位的单位。八位单位被称为字节,其是所有信息格式的基本构件。存储器中的每个字节位置由唯一的非负整数标识,该非负整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,在左边从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)等,其任何一个都将符合本发明)实施。参考图16,体现本发明的软件程序代码可典型地由主系统5000的处理器从长期存储介质设备5011(诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上和/或体现软件程序代码或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
图17示出了可在其中实施本发明的代表性工作站或服务器硬件系统。图17的系统5020包括代表性基本计算机系统(basecomputersystem)5021,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026以及被用于连接并使能处理器5026和系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025以及可包括例如硬盘驱动器(例如,包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器的长期存储器5027。系统5021也可包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,诸如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitizedentrypad)等。总线也可经由显示适配器将诸如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。可以利用可从国际商业机器公司获得的IBMeServerTM 服务器来实现网关计算机。
同时参考图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保持跟踪将被执行的当前指令的地址。处理器中的程序计数器是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或从正被执行的指令的立即字段(immediatefield)向执行单元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被设计为用于标量运算,且有些用于浮点。根据架构,数据可以是大端(bigendien)(其中最低有效字节位于最高字节地址)或小端(littleendien)(其中最低有效字节位于最低字节地址)。IBM是大端。根据架构,带符号字段可以是符号和幅度、1的补码或2的补码。2的补码数是有利的,其在于ALU不需要设计减法能力,因为不管是2的补码中的负值还是正值,都仅要求ALU中的加法。数字通常以速记描述,其中12位的字段定义了4096字节块的地址,且通常被描述为例如4Kbyte(千字节)块。
参考图20B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信。
一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/O中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。
处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。此处的位置典型地意味着主存储器(主存储设备)中的位置,除非另外指明。
参考图20C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口5053或其他元件5083通信,且包括各种寄存器电路、ALU5085和控制逻辑5090以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。
优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和页表(单独地或组合地),优选地,段表具有指向页表的项。在中,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。转换表的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU(最少最近使用的)多个替换算法来管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/O、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。
I/O单元5054(图19)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/O单元通常由软件驱动器向计算机程序呈现。在诸如来自的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的I/O单元。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的大型计算机服务器以及的其他机器(例如,PowerSystems服务器和服务器)中被仿真。它们可在使用由AMDTM等制造的硬件的各种机器上运行Linux的机器中被执行。除了在下的该硬件上执行,Linux也可被用于这样的机器,其使用由TurboHercules(www.turbohercules.com)、Hercules(www.hercules-390.org/)或FSI(FundamentalSoftware,Inc)(www.funsoft.com/)提供的仿真,其中,一般来说执行是在仿真模式中。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。
本机处理器典型地执行仿真软件,其包括固件或本机操作系统,以执行被仿真处理器的仿真程序。仿真软件负责获取并执行被仿真处理器架构的指令。仿真软件维护仿真的程序计数器以保持跟踪指令界限。仿真软件可一次获取一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的本机机器指令组,以由本机处理器执行。这些转换的指令可被高速缓存,这样可完成更快的转换。尽管,仿真软件将维持被仿真的处理器架构的架构规则以保证为被仿真处理器编写的操作系统和应用正确操作。而且,仿真软件将提供由被仿真的处理器架构确定的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换功能、中断机制、上下文转换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,这样被设计为在被仿真处理器上运行的操作系统或应用程序可在具有仿真软件的本机处理器上运行。
解码正被仿真的特定指令,且调用子例程以执行该单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动器中实现,或由提供用于特定硬件的驱动器的其他方法实现,如本领域技术人员在理解优选实施例的描述后将理解的。包括但不限于Beausoleil等人的标题为“MultiprocessorforHardwareEmulation”的美国专利证书号5,551,013;以及Scalzi等人的标题为“PreprocessingofStoredTargetRoutinesforEmulatingIncompatibleInstructionsonaTargetProcessor”的美国专利证书号6,009,261;以及Davidian等人的标题为“DecodingGuestInstructiontoDirectlyAccessEmulationRoutinesthatEmulatetheGuestInstructions”的美国专利证书号,5,574,873;以及Gorishek等人的标题为“SymmetricalMultiprocessingBusandChipsetUsedforCoprocessorSupportAllowingNon-NativeCodetoRuninaSystem”的美国专利证书号6,308,255;以及Lethin等人的标题为“DynamicOptimizingObjectCodeTranslatorforArchitectureEmulationandDynamicOptimizingObjectCodeTranslationMethod”的美国专利证书号6,463,582,;以及EricTraut的标题为“MethodforEmulatingGuestInstructionsonaHostComputerThroughDynamicRecompilationofHostInstructions”的美国专利证书号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 (18)

1.一种测量计算环境中的资源使用的方法,所述方法包括:
执行修改PCI功能控制MPFC指令,该指令包含用于标识适配器的功能句柄,所述功能句柄包括标识功能的功能号,所述功能号被用作到功能表中的索引,以定位对应于适配器功能的功能表项,所述MPFC指定了用于跟踪信息的存储器中的位置;
确定计算环境中的适配器功能正被通过指令访问,或者正请求访问耦合到该适配器功能的系统存储器;
跟踪特定于该适配器功能的信息,其中,跟踪信息包含确定的访问指令的计数或确定的所请求的对存储器的访问的计数,其中,被跟踪的信息基于每个适配器功能;以及
将跟踪信息存储在存储器的所述位置中。
2.如权利要求1所述的方法,其中,所述确定确定适配器功能正被指令访问,且其中,所述跟踪还包括:
确定指令的类型;以及
更新针对该指令类型和针对适配器功能排他地提供的计数器。
3.如权利要求2所述的方法,其中,存在多种类型的指令,包括加载指令、存储指令、存储块指令、修改指令和刷新转换指令,其中每个被特定地用于访问适配器功能。
4.如权利要求1所述的方法,其中,所述确定确定适配器功能正请求存储器访问操作,且其中,所述跟踪还包括:
确定存储器访问操作的类型;以及
更新针对该适配器功能和存储器访问操作的该类型排他地提供的计数器。
5.如权利要求4所述的方法,其中,存在多种类型的存储器访问操作,包括读访问和写访问。
6.如权利要求4所述的方法,其中,所述适配器功能具有分配给它的多个地址空间,且其中,所述计数器特定于所述多个地址空间中的一个地址空间。
7.如权利要求1所述的方法,其中,所述跟踪包括更新一个或多个计数器,且其中,一个或多个计数器特定于该适配器功能并反映与该适配器功能关联的输入/输出流量。
8.如权利要求1所述的方法,其中,所述方法还包括自动地向用户呈现被跟踪的信息。
9.如权利要求8所述的方法,其中,所述跟踪包括更新一个或多个计数器,且其中,所述自动呈现包括用来自一个或多个计数器的值来周期地更新可被用户访问的控制块。
10.如权利要求1所述的方法,其中,所述方法还包括确定是否要针对适配器功能来执行跟踪,其中,基于每个适配器功能来使能跟踪,且响应于确定要执行跟踪来执行跟踪。
11.一种用于测量计算环境中的资源使用的计算机系统,所述计算机系统包括:
存储器;
与该存储器通信的处理器;
执行器,用于执行修改PCI功能控制MPFC指令,该指令包含用于标识适配器的功能句柄,所述功能句柄包括标识功能的功能号,所述功能号被用作到功能表中的索引,以定位对应于适配器功能的功能表项,所述MPFC指定了用于跟踪信息的存储器中的位置;
确定器,用于确定计算环境中的适配器功能正被通过指令访问,或者正请求访问与该适配器功能耦合的系统存储器;
跟踪器,用于跟踪特定于该适配器功能的信息,其中,跟踪信息包含确定的访问指令的计数或确定的所请求的对存储器的访问的计数,其中,被跟踪的信息基于每个适配器功能;以及
存储器,用于将跟踪信息存储在存储器的所述位置中。
12.一种用于测量计算环境中的资源使用的计算机系统,所述计算机系统包括:
存储器;以及
与该存储器通信的处理器,其中,所述计算机系统被配置为执行方法,所述方法包括:
执行修改PCI功能控制MPFC指令,该指令包含用于标识适配器的功能句柄,所述功能句柄包括标识功能的功能号,所述功能号被用作到功能表中的索引,以定位对应于适配器功能的功能表项,所述MPFC指定了用于跟踪信息的存储器中的位置;
确定计算环境中的适配器功能正被通过指令访问,或者正请求访问与该适配器功能耦合的系统存储器;
跟踪特定于该适配器功能的信息,其中,跟踪信息包含确定的访问指令的计数或确定的所请求的对存储器的访问的计数,其中,被跟踪的信息基于每个适配器功能;以及
将跟踪信息存储在存储器的所述位置中。
13.如权利要求12所述的计算机系统,其中,所述确定确定适配器功能正被指令访问,且其中,所述跟踪还包括:
确定指令的类型;以及
更新针对该指令类型和针对适配器功能排他地提供的计数器。
14.如权利要求12所述的计算机系统,其中,所述确定确定适配器功能请求存储器访问操作,且其中,所述跟踪还包括:
确定存储器访问操作的类型;以及
更新针对该适配器功能和存储器访问操作的该类型排他地提供的计数器。
15.如权利要求14所述的计算机系统,其中,所述适配器功能具有分配给它的多个地址空间,且其中,所述计数器特定于所述多个地址空间中的一个地址空间。
16.如权利要求12所述的计算机系统,其中,所述方法还包括自动地向用户呈现被跟踪的信息。
17.如权利要求16所述的计算机系统,其中,所述跟踪包括更新一个或多个计数器,且其中,所述自动呈现包括用来自一个或多个计数器的值来周期地更新可被用户访问的控制块。
18.如权利要求12所述的计算机系统,其中,所述方法还包括确定是否要针对适配器功能来执行跟踪,其中,基于每个适配器功能来使能跟踪,且响应于确定要执行跟踪来执行跟踪。
CN201080066962.7A 2010-06-23 2010-11-08 用于适配器功能的测量工具 Active CN102906711B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,193 2010-06-23
US12/821,193 US8650335B2 (en) 2010-06-23 2010-06-23 Measurement facility for adapter functions
PCT/EP2010/067039 WO2011160719A1 (en) 2010-06-23 2010-11-08 Measurement facility for adapter functions

Publications (2)

Publication Number Publication Date
CN102906711A CN102906711A (zh) 2013-01-30
CN102906711B true CN102906711B (zh) 2016-02-03

Family

ID=43533542

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080066962.7A Active CN102906711B (zh) 2010-06-23 2010-11-08 用于适配器功能的测量工具

Country Status (13)

Country Link
US (1) US8650335B2 (zh)
EP (1) EP2430547B1 (zh)
JP (1) JP5698840B2 (zh)
KR (1) KR101498351B1 (zh)
CN (1) CN102906711B (zh)
AU (1) AU2010355810B2 (zh)
CA (1) CA2800633C (zh)
DK (1) DK2430547T3 (zh)
ES (1) ES2528935T3 (zh)
IL (1) IL223591B (zh)
RU (1) RU2523194C2 (zh)
SG (1) SG186106A1 (zh)
WO (1) WO2011160719A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US20130132061A1 (en) * 2011-11-18 2013-05-23 Michael J. Rieschl Just-in-time static translation system for emulated computing environments
US9749177B2 (en) * 2012-09-21 2017-08-29 Philips Lighting Holding B.V. Method and apparatus for dynamic address assignment
US9092205B2 (en) 2012-10-25 2015-07-28 International Business Machines Corporation Non-interrupting performance tuning using runtime reset
US10824993B2 (en) * 2013-03-15 2020-11-03 Bmc Software, Inc. Story-mode user interface
US9465768B2 (en) 2014-03-14 2016-10-11 International Business Machines Corporation PCI function measurement block enhancements
US10614092B2 (en) * 2017-01-24 2020-04-07 International Business Machines Corporation Optimizing data retrieval operation in big-data processing systems
TWI767175B (zh) * 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
JP7379491B2 (ja) 2019-01-31 2023-11-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
CN113366457A (zh) 2019-01-31 2021-09-07 国际商业机器公司 处理输入/输出存储指令
TWI773959B (zh) * 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
KR20220145698A (ko) * 2021-04-22 2022-10-31 에스케이하이닉스 주식회사 PCIe 장치 및 그 동작 방법
US20230393783A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Access heatmap generation at a memory device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0076921A2 (en) * 1981-10-13 1983-04-20 International Business Machines Corporation Method and system for time measurements of data processing channels
US5265240A (en) * 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
EP1489491A1 (en) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction

Family Cites Families (197)

* Cited by examiner, † Cited by third party
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
JPH0833851B2 (ja) * 1986-03-15 1996-03-29 株式会社日立製作所 仮想計算機のモニタリング方式
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
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
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 コンピュータ装置
DE69601599T2 (de) 1995-06-07 1999-10-14 Ibm Videoverarbeitungseinheit mit Steuerung des Adressierungsmodus
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
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
US6349379B2 (en) 1997-04-30 2002-02-19 Canon Kabushiki Kaisha System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
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
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
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
JP3341260B2 (ja) * 1999-06-29 2002-11-05 エヌイーシーコンピュータテクノ株式会社 情報処理装置
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
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
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
US6658599B1 (en) 2000-06-22 2003-12-02 International Business Machines Corporation Method for recovering from a machine check interrupt during runtime
US6751752B1 (en) 2000-09-01 2004-06-15 Intel Corporation Checking events generated by a device
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
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
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
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
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
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
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
KR100460994B1 (ko) * 2002-12-23 2004-12-09 한국전자통신연구원 직접 메모리 액세스 기능을 구비한 광대역 입출력 장치 및그 방법
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
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
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
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
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
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
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
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
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
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
US7506214B2 (en) 2004-04-22 2009-03-17 International Business Machines Corporation Application for diagnosing and reporting status of an adapter
US7152171B2 (en) * 2004-04-28 2006-12-19 Microsoft Corporation Task-oriented processing as an auxiliary to primary computing environments
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
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
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
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
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
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
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
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
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
US7474623B2 (en) 2005-10-27 2009-01-06 International Business Machines Corporation Method of routing I/O adapter error messages in a multi-host environment
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
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
US20070174723A1 (en) 2006-01-18 2007-07-26 Omar Cardona Sub-second, zero-packet loss adapter failover
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
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
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
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
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
US7617340B2 (en) 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
JP5119686B2 (ja) 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
US20080263391A1 (en) 2007-04-20 2008-10-23 International Business Machines Corporation Apparatus, System, and Method For Adapter Card Failover
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
JP5280135B2 (ja) * 2008-09-01 2013-09-04 株式会社日立製作所 データ転送装置
US10341804B2 (en) 2009-10-28 2019-07-02 International Business Machines Corporation System, method and computer program product for accessing data from a source by a variety of methods to improve performance and ensure data integrity
WO2011071490A1 (en) 2009-12-08 2011-06-16 Hewlett-Packard Development Company, L.P. Managing errors in a data processing system
US8713350B2 (en) 2009-12-08 2014-04-29 Hewlett-Packard Development Company, L.P. Handling errors in a data processing system
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0076921A2 (en) * 1981-10-13 1983-04-20 International Business Machines Corporation Method and system for time measurements of data processing channels
US5265240A (en) * 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
EP1489491A1 (en) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction

Also Published As

Publication number Publication date
US20110320643A1 (en) 2011-12-29
CA2800633A1 (en) 2011-12-29
RU2523194C2 (ru) 2014-07-20
AU2010355810B2 (en) 2014-04-24
KR101498351B1 (ko) 2015-03-03
KR20130048731A (ko) 2013-05-10
WO2011160719A1 (en) 2011-12-29
CN102906711A (zh) 2013-01-30
DK2430547T3 (en) 2015-02-02
JP5698840B2 (ja) 2015-04-08
IL223591B (en) 2019-01-31
RU2012149789A (ru) 2014-05-27
US8650335B2 (en) 2014-02-11
SG186106A1 (en) 2013-01-30
AU2010355810A1 (en) 2012-12-20
EP2430547A1 (en) 2012-03-21
ES2528935T3 (es) 2015-02-13
EP2430547B1 (en) 2014-12-31
CA2800633C (en) 2018-02-13
JP2013538378A (ja) 2013-10-10

Similar Documents

Publication Publication Date Title
CN102906711B (zh) 用于适配器功能的测量工具
CN102906692B (zh) 修改适配器功能参数的指令的方法和系统
CN102947808B (zh) 一种有利于存储器访问的系统及方法
CN102906719B (zh) 输入/输出地址到存储器地址的转换
CN102906722B (zh) 将消息信号中断转换为i/o适配器事件通知
CN102906701B (zh) 在计算环境中控制对适配器的访问的方法和系统
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
CN102906704B (zh) 控制处理适配器中断请求的速率
US9489229B2 (en) Transparent dynamic code optimization
CN102906694B (zh) 用于与适配器进行通信的加载指令的方法和系统
CN102918516B (zh) 适配器中断源的类型的标识
CN102906702B (zh) 对适配器的地址空间的访客端访问
CN102906716B (zh) 促进计算环境的系统存储器的管理的方法
CN102906707B (zh) 管理与硬件事件关联的处理
CN102906720B (zh) 启用/禁用计算环境的适配器
CN102906705B (zh) 将消息信号中断转换为对客户操作系统的i/o适配器事件通知
CN102906708B (zh) 响应于适配器事件采取的动作的操作系统通知
CN102906693B (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