CN113366433A - 处理输入/输出存储指令 - Google Patents

处理输入/输出存储指令 Download PDF

Info

Publication number
CN113366433A
CN113366433A CN202080011206.8A CN202080011206A CN113366433A CN 113366433 A CN113366433 A CN 113366433A CN 202080011206 A CN202080011206 A CN 202080011206A CN 113366433 A CN113366433 A CN 113366433A
Authority
CN
China
Prior art keywords
input
data
data processing
output
asynchronous
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.)
Pending
Application number
CN202080011206.8A
Other languages
English (en)
Inventor
C·莱施
M·克雷默
F·莱纳特
M·克莱纳
J·布拉德伯里
C·雅各比
B·贝尔马
P·德里费尔
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 CN113366433A publication Critical patent/CN113366433A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Confectionery (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

用于处理输入/输出存储指令(30)的数据处理系统(210)和方法,包括经由输入/输出总线控制器(20)通信地耦合到至少一个输入/输出总线(22)的系统嵌套(18)。数据处理系统(210)进一步至少包括数据处理单元(216),其包括内核(12)、系统固件(10)和异步内核‑嵌套接口(14)。数据处理单元(216)经由聚合缓冲区(16)通信耦合到系统嵌套(18)。系统嵌套(18)被配置以异步地从通信地耦合到输入/输出总线(22)的至少一个外部设备(214)加载数据和/或将数据存储到该至少一个外部设备。数据处理单元(216)被配置以在系统嵌套(18)中输入/输出存储指令(30)的执行完成之前完成输入/输出存储指令(30)。

Description

处理输入/输出存储指令
技术领域
本发明总体涉及数据处理系统,具体涉及用于处理针对外部设备的输入/输出存储指令的方法以及计算机程序产品和数据处理系统。
背景技术
计算环境可包括一个或多个类型的输入/输出设备,包括不同类型的适配器。一种类型的适配器是外围组件互连(PCI)或快速外围组件互连(PCIe)适配器。该适配器包括一个或多个地址空间,用于在适配器与附接到适配器的系统之间传送数据。
在一些系统中,耦合到适配器的中央处理单元(CPU)的地址空间的一部分被映射到适配器的地址空间,使得访问存储器的CPU指令能够直接操纵适配器的地址空间中的数据。
与适配器(例如PCI或PCIe适配器)的通信可以通过专门设计用于向和从适配器传送数据并用于通信的控制指令来促进。
在现有技术中,用于在适配器中存储数据的存储指令包括例如获得用于执行的机器指令,该机器指令是按照计算机架构定义用于计算机执行的,该机器指令包括例如标识存储到适配器(store to adapter)指令的操作码字段。第一字段标识包括将被存储在适配器中的数据的第一位置。第二字段标识第二位置,其内容包括标识适配器的函数句柄(function handle)、适配器内将存储数据的地址空间的名称、以及该地址空间内的偏址(offset)。该机器指令被执行,该执行包括使用函数句柄来获得与适配器相关联的函数表项(function table entry)。利用函数表项中的信息和偏址的至少之一来获取适配器的数据地址。将数据从第一位置存储在由地址空间的名称标识的地址空间中的特定位置中,该特定位置由适配器的数据地址标识。
大型多处理器系统中的现有特征是使目标区域内的所有处理器静默(quiesce)的能力。静默功能的作用是临时停止或改变处理器或处理器组的状态,以执行例如系统更新或备份。在一些实例中,静默中断仅适用于系统资源的子集。在这样的情况下,该系统可以被分成不同的区。对于适用于一个区域(目标区域)的静默操作,允许在目标区域之外的处理器继续运行,尽管新的转换可能被阻止。通常,至少一个系统控制器或其他机制向系统中的所有物理处理器广播静默,处理收集静默状态信息,并且在所有处理器已经启动时向请求处理器指示,或者忽略(过滤掉)静默请求。
静默控制器可以通信地耦合到多处理器系统中的处理器,以及被配置以接收静默请求的静默状态机。该计算机系统被配置以执行一种方法,该方法包括:在静默控制器处从请求处理器接收静默请求,请求处理器是多处理器系统中的多个处理器之一;以及基于静默状态机的状态确定静默请求不被接受。该方法还包括基于该请求未被接受,生成被配置以指示静默请求已被拒绝的拒绝消息;保持拒绝消息直到静默命令被广播到多处理器系统,该静默命令基于不同的静默请求;以及基于静默控制器检测到该静默命令的广播,向请求处理器发送拒绝消息。
发明内容
提出了一种用于处理输入/输出存储指令的数据处理系统,其包括通过输入/输出总线控制器通信地耦合到至少一个输入/输出总线的系统嵌套。数据处理系统还至少包括数据处理单元,其包括内核、系统固件和异步内核-嵌套接口。数据处理单元经由聚合缓冲区通信地耦合到系统嵌套。系统嵌套被配置以异步地从通信地耦合到输入/输出总线的至少一个外部设备加载数据和/或将数据存储到该至少一个外部设备。
该数据处理系统被配置以执行:(i)在数据处理系统上运行的操作系统发布输入/输出存储指令,其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;(ii)数据处理单元被配置以通过在输入/输出存储指令中指定的地址来识别输入/输出函数;(iii)数据处理单元被配置以验证是否允许在地址空间上和在客户机实例级别上对该输入/输出函数的访问,该客户机在数据处理系统上运行;(iv)数据处理单元被配置以在系统嵌套中输入/输出存储指令的执行完成之前完成输入/输出存储指令;以及(v)系统固件被配置得如果在输入/输出存储指令的异步执行期间由数据处理单元检测到错误,则通过中断、发送失败的异步执行的数据,来通知操作系统。
有利地,可以通过用可靠的异步发送指令和机制代替同步PCI指令,来改善每个指令的周期数。PCI存储指令可以通过PCIe存储效果的异步执行和异步状态处理来执行。异步可靠执行基于的是微架构中的可靠转发机制。
根据本发明的第一实施例的数据处理系统包括经由输入/输出总线从数据处理系统的至少一个外部设备加载和存储到数据处理系统的至少一个外部设备的指令。异步指令在数据已被存储到外部设备之前完成,而同步指令在数据已被存储到外部设备之后完成。在这里描述的实施例内,PCI将可互换地用于任何其他输入/输出技术,因此不将本发明的实施例限制于PCI。
本发明的实施例描述了以从架构边界上可观察到的严格有序方式的输入/输出存储指令执行,而在数据处理单元(CPU)的硬件内实际的执行可能是无序的。
根据本发明的实施例,可以通过PCIe存储效果的异步执行和异步状态处理来执行PCI存储指令。异步可靠执行是基于本发明数据处理系统的微架构中的可靠转发机制。
现有的PCI存储和存储块指令通常是同步的,直到PCI存储数据已经被传送到PCIe接口且完成被返回到处理单元。
PCI标准只要求PCI信息的异步发送命令,这通常是通过处理器中的存储队列聚合异步发送的数据来实现。
有利地,根据本发明的实施例,可以通过用输入/输出存储指令的可靠异步发送处理替换同步PCI指令来实现关于每个指令的周期数的改进。
作为要传送的数据的替换或补充,根据本发明的实施例的存储指令还可以指定指向主存储器的指针,该指针应当用于从其获取数据,而不是直接包含该数据。
客户机实例级别还可意味着单个客户机或主机可在数据处理系统上运行。
输入/输出函数本身的偏址的地址可以是虚拟、物理、逻辑地址。虚拟和逻辑地址通常经由存储器管理单元(MMU)被转换成物理地址,然后可以通过物理地址来识别所指的是哪个函数和偏址。
本文中的物理地址是指“可从客户机/操作系统内访问的地址转换层次结构中的最低地址”。
根据本发明的数据处理系统的有利实施例,聚合缓冲区可经由异步总线通信地耦合到异步内核-嵌套接口。由此,聚合缓冲区可以连续地处理由异步内核-嵌套接口直接发送的数据,直到所有要传送到外部设备的数据都被存储在聚合缓冲区中。
根据本发明的数据处理系统的有利实施例,如果源数据的长度超过8字节,数据可以由输入/输出存储指令通过具有早期完成消息的异步传输机制在多个数据包中传输到聚合缓冲区,否则,可以在一个数据包中传输数据。该异步传输机制是有利的,因为发送设备在较早的状态时空闲供重用(free for reuse)。
根据本发明的数据处理系统的有利实施例,系统固件可包括用于处理输入/输出存储指令的异步输入/输出驱动程序代码。由此,异步传送机制可被用于将数据从数据处理单元传送到外部设备。
根据本发明的数据处理系统的有利实施例,内核可包括用于处理对异步输入/输出驱动程序代码的状态信息的存储器要求的异步设置代码。该异步设置代码可进一步促进通过聚合缓冲区到系统嵌套和输入/输出总线控制器的异步传输机制。
根据本发明数据处理系统的一个有利实施例,异步内核-嵌套接口可包括用于转发本地完成的数据的异步内核-嵌套接口转发组件。此组件可在异步内核-嵌套接口中的硬件中实施。因此,可以支持用于将数据在数据包中发送到聚合缓冲区的有利的异步传输模式。
根据本发明的数据处理系统的有利实施例,聚合缓冲区可以包括用于在发送请求之后传送空闲供重用消息的早期完成逻辑。这使得能够早期继续经由聚合缓冲区向系统嵌套和输入/输出总线控制器传输数据的处理。
根据本发明的数据处理系统的有利实施例,聚合缓冲区可经由异步总线通信地耦合到异步内核-嵌套接口。通过这种方式,可有利地支持用于从异步内核-嵌套接口传输数据的异步传输机制。
根据有利的实施例,本发明的数据处理系统还可以包括收集来自系统嵌套和/或来自输入/输出总线控制器的返回的状态、特别是来自系统嵌套的完成消息的输入/输出状态缓冲区。这个输入/输出状态缓冲区收集返回的状态,充当支持异步传输过程的异步系统消息缓冲区。
根据本发明的数据处理系统的有利实施例,异步内核-嵌套接口可包括输入/输出状态缓冲区。有利的是,输入/输出状态缓冲区直接集成在异步内核-嵌套接口中,以便快速响应。
根据本发明的数据处理系统的有利实施例,系统消息可以包括以下之一:分层物理目标地址;提供SMT(同时多线程)线程或聚合缓冲区标识符;数据长度;输入/输出总线地址;或恢复算法的序列号。由此,可以保证相关信息通过数据处理系统的有利传递。
此外,提出了一种用于处理针对数据处理系统的至少一个外部设备的输入/输出存储指令的方法,该数据处理系统包括通过输入/输出总线控制器通信地耦合到至少一个输入/输出总线的系统嵌套。该数据处理系统还包括至少一个数据处理单元,该数据处理单元包括内核、系统固件和异步内核-嵌套接口。数据处理单元经由聚合缓冲区通信地耦合到系统嵌套。外部设备通信地耦合到输入/输出总线。
该方法包括:(i)在数据处理系统上运行的操作系统发布输入/输出存储指令,其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;(ii)数据处理单元被配置以通过在输入/输出存储指令中指定的地址来识别输入/输出函数;(iii)数据处理单元被配置以验证在地址空间和客户机实例级别上是否允许对输入/输出函数的访问,客户机在数据处理系统上运行;(iv)据处理单元被配置以在系统嵌套中输入/输出存储指令的执行完成之前完成输入/输出存储指令;以及(v)系统固件被配置得如果在输入/输出存储指令的异步执行期间由数据处理单元检测到错误,则通过中断、发送失败的异步执行的数据,来通知操作系统。
有利地,可以通过用可靠的异步发送指令和机制代替同步PCI指令,来改善每个指令的周期数。PCI存储指令可以通过PCIe存储效果的异步执行和异步状态处理来执行。异步可靠执行基于的是微架构中的可靠转发机制。
根据本发明的另一实施例的方法包括经由输入/输出总线从数据处理系统的至少一个外部设备加载和存储到数据处理系统的至少一个外部设备的指令。异步指令在数据已被存储到外部设备之前完成,而同步指令在数据已被存储到外部设备之后完成。在这里描述的实施例内,PCI将可互换地用于任何其他输入/输出技术,因此不将本发明的实施例限制于PCI。
本发明方法的实施例描述了以从架构边界上可观察到的严格有序方式的输入/输出存储指令执行,而实际执行在数据处理单元(CPU)的硬件内可能是无序的。
根据本发明的方法的实施例,可以通过PCIe存储效果的异步执行和异步状态处理来执行PCI存储指令。异步可靠执行基于本发明数据处理系统的微架构中的可靠转发机制。
现有的PCI存储和存储块指令通常是同步的,直到PCI存储数据已经被传送到PCIe接口且完成被返回到处理单元。
PCI标准只需要PCI信息的异步发送命令,通常通过处理器中的存储队列聚合异步发送的数据来实现。
有利地,根据本发明方法的实施例,可以通过输入/输出存储指令的可靠异步发送处理替换同步PCI指令来实现关于每个指令的周期的改进。
作为要传送的数据的替换或补充,根据本发明的实施例的存储指令还可指定指向主存储器的指针,该指针应当用于从其获取数据,而不是直接包含该数据。
客户机实例级别还可意味着单个客户机或主机可在数据处理系统上运行。
输入/输出函数本身的偏址的地址可以是虚拟、物理、逻辑地址。虚拟和逻辑地址通常经由存储器管理单元(MMU)被转换成物理地址,然后可以通过物理地址来识别所指的是哪个函数和偏址。
本文中的物理地址是指“可从客户机/操作系统内访问的地址转换层次结构中的最低地址”。
根据有利的实施例,该方法可进一步包括:(i)操作系统发布输入/输出存储指令;(ii)取决于数据的长度:如果数据的长度超过8字节,系统固件软件重复下发系统消息将数据包发送到聚合缓冲区,直到存储块的所有数据都已转发到聚合缓冲区,所述系统固件软件等待直至所述系统消息已发送所述数据;否则,系统固件发布系统消息以将数据发送到聚合缓冲区;进一步独立于所述数据的长度,(iii)所述系统固件向所述聚合缓冲区发布系统消息以将所述数据作为单个嵌套消息异步地转发到所述输入/输出总线控制器,同时等待所述聚合缓冲区发送完成消息;(iv)所述聚合缓冲区将所述嵌套消息注入到所述系统嵌套中,其中所述聚合缓冲区空闲以供在所述发送操作之后立即重新使用,从而发信号回所述系统固件;然后聚合缓冲区发送空闲供重用消息;(v)系统嵌套转发消息到目标位置;(vi)输入/输出总线控制器接收消息并且将数据帧中的数据转发到输入/输出总线;(vii)所述输入/输出总线控制器将完成消息发送到所述系统嵌套;(viii)所述系统嵌套将所述完成消息转发到所述发起聚合缓冲区;(ix)聚合缓冲区将完成转发至异步内核-嵌套接口;(x)异步内核-嵌套接口将操作的完成发信号通知给系统固件;以及(xi)系统固件将缺陷异步地发信号通知给操作系统。
仅步骤(ii)与数据的长度有关,并且对于超过8个字节的数据长度来说与对于不超过8个字节的数据长度来说是不同的。
根据本发明方法的实施例,将数据以分片(slices)形式传输到聚合缓冲区,直到存储块的所有数据被转发到聚合缓冲区,其中,系统固件等待直到数据已由异步内核-嵌套接口发送。
由此,如果数据小于8个字节,则可以跳过用数据包以分片形式的填充聚合缓冲区的过程,并且可以在单个步骤中完成数据到外部设备的传输过程。
根据本发明方法的有利实施方式,如果源数据的长度超过8字节,数据可以由输入/输出存储指令通过具有早期完成消息的异步传输机制在多个数据包中传输到聚合缓冲区。该异步传输机制是有利的,因为发送设备在较早的状态时空闲供重用(free forreuse)。
根据本发明方法的有利实施方式,系统固件可使用异步输入/输出驱动程序代码来处理输入/输出存储指令。由此,可以用异步传送机制将数据从数据处理单元传送到外部设备。
根据本发明方法的有利实施例,内核可使用异步设置代码来处理对异步输入/输出驱动程序代码的状态信息的存储器要求。该异步设置代码可进一步促进通过聚合缓冲区到系统嵌套和输入/输出总线控制器的异步传输机制。
根据本发明方法的有利实施例,异步内核-嵌套接口可使用异步内核-嵌套接口转发组件转发本地完成的数据。因此,可以支持用于将数据在数据包中发送到聚合缓冲区的有利的异步传输模式。
根据本发明方法的有利实施例,聚合缓冲区可以使用早期完成逻辑用于在发送请求之后传送空闲供重用消息。这使得能够早期继续经由聚合缓冲区向系统嵌套和输入/输出总线控制器传输数据的处理。
根据本发明方法的有利实施例,输入/输出状态缓冲区可从系统嵌套和/或从输入/输出总线控制器收集返回状态,特别是从系统嵌套收集完成消息。这些输入/输出状态缓冲区可收集返回状态,由此充当支持异步传送过程的异步系统消息缓冲区。
根据本发明方法的有利实施例,系统消息可包括以下之一:分层物理目标地址;提供SMT线程或聚合缓冲区标识符;数据的长度;输入/输出总线地址;或恢复算法的序列号。由此,可以保证相关信息通过数据处理系统的有利传递。
进一步,提出了一种有利的计算机程序产品,用于处理到数据处理系统的至少一个外部设备的输入/输出存储指令,该数据处理系统包括通过输入/输出总线控制器通信地耦合到至少一个输入/输出总线的系统嵌套。该数据处理系统还至少包括一个数据处理单元,该数据处理单元包括内核、系统固件和异步内核-嵌套接口。数据处理单元经由聚合缓冲区通信地耦合到系统嵌套。外部设备通信地耦合到输入/输出总线。
所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由所述计算机系统执行以促使所述计算机系统执行一种方法,所述方法包括:(i)在所述数据处理系统上运行的操作系统,发布所述输入/输出存储指令,至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;(ii)所述数据处理单元被配置以通过在所述输入/输出存储指令中指定的所述地址来识别所述输入/输出函数;(iii)所述数据处理单元配置以验证在地址空间上和在客户机实例级别上是否允许访问所述输入/输出函数,所述客户机在所述数据处理系统运行;(iv)所述数据处理单元配置以在所述系统嵌套所述输入/输出存储指令执行完成之前完成所述输入/输出存储指令;以及(v)所述系统固件被配置得如果在所述输入/输出存储指令的异步执行期间由所述数据处理单元检测到错误,则通过中断、发送失败的异步执行的数据,来通知所述操作系统。
进一步,提出了一种用于执行数据处理程序的数据处理系统,该数据处理系统包括用于执行上述方法的计算机可读程序指令。
附图说明
从以下对实施例的详细描述中可以最佳地理解本发明以及上述和其他目的和优点,但是本发明不限于这些实施例。
图1示出根据本发明的实施例的用于处理针对外部设备的输入/输出存储指令的数据处理系统的框图。
图2示出根据本发明的实施例的用于处理针对外部设备的输入/输出存储指令的方法的消息序列图。
图3示出根据本发明的实施例的用于处理针对外部设备的输入/输出存储指令的流程图。
图4示出用于执行根据本发明的方法的数据处理系统的示范性实施例。
具体实施方式
在附图中,相同的元件用相同的附图标记表示。附图仅是示意性表示,并非旨在描述本发明的特定参数。此外,附图旨在仅描述本发明的典型实施例,因此不应被视为限制本发明的范围。
本文中描述的说明性实施例提供用于处置输入/输出存储指令的数据处理系统和方法,该数据处理系统包括通过输入/输出总线控制器通信地耦合到至少一个输入/输出总线的系统嵌套(system nest)。该数据处理系统还至少包括一个数据处理单元,数据处理单元包括内核、系统固件和异步内核-嵌套接口。数据处理单元经由聚合缓冲区通信地耦合到系统嵌套。系统嵌套被配置以异步地从通信地耦合到输入/输出总线的外部设备加载数据和/或将数据存储到外部设备。
说明性实施例可以用于这样一种方法,该方法包括:(i)在数据处理系统上运行的操作系统至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;(ii)数据处理单元被配置以通过在输入/输出存储指令中指定的地址来识别输入/输出函数;(iii)数据处理单元被配置以验证是否允许在地址空间上和在客户机实例级别上对输入/输出函数的访问,客户机在数据处理系统上运行;(iv)数据处理单元被配置以在所述系统嵌套中完成所述输入/输出存储指令的执行之前完成所述输入/输出存储指令;以及(v)系统固件被配置得如果在输入/输出存储指令的异步执行期间由数据处理单元检测到错误,则通过中断、发送失败的异步执行的数据,来通知操作系统。
可替代地或另外地,对于待传输的数据,根据本发明的实施例的存储指令还可以指定指向的指针,该指针应当用于从主存储器提取数据,而不是直接包含该数据。
客户机实例级别还可意味着单个客户机或主机可在数据处理系统上运行。
输入/输出函数本身的偏址的地址可以是虚拟、物理、逻辑地址。虚拟和逻辑地址通常通过存储器管理单元(MMU)被转换成物理地址,然后可以通过物理地址来识别所指的是哪个函数和偏址。
本说明书上下文中的物理地址是指“从客户机/操作系统内可访问的地址转换层次结构中的最低地址”。
图1示出根据本发明的实施例的用于处理到至少一个外部设备214的输入/输出存储指令30的数据处理系统210的框图。数据处理系统210包括通过输入/输出总线控制器20通信地耦合到输入/输出总线22的系统嵌套18、包括内核12、系统固件10和异步内核-嵌套接口14的数据处理单元216。
数据处理单元216经由聚合缓冲区16通信地耦合到系统嵌套18。系统嵌套18被配置以通过作为系统嵌套18的一部分的缓冲区输入/输出总线控制器接口28以及输入/输出总线控制器28异步地从通信地耦合到输入/输出总线22的外部设备214加载数据和/或将数据存储到外部设备214。
聚合缓冲区16通信地耦合到异步内核-嵌套接口14。系统固件10包括用于处理输入/输出存储指令30的异步输入/输出驱动程序代码32。内核12包括异步设置代码34,用于处理对异步输入/输出驱动程序代码32的状态信息的存储器要求。异步内核-嵌套接口14包括异步内核-嵌套接口转发组件36,用于转发本地完成的数据。聚合缓冲区16包括早期完成(early completion)逻辑26,用于在发送请求之后传送空闲供重用(free for reuse)消息。聚合缓冲区16经由异步总线38耦合到异步内核-嵌套接口14。包括输入/输出状态缓冲区24,其收集来自系统嵌套18和/或来自输入/输出总线控制器20的返回状态,特别是来自系统嵌套18的完成消息。输入/输出状态缓冲区24直接集成在异步内核-嵌套接口14中。
根据本发明方法的实施例,在数据处理系统210上运行的操作系统发布输入/输出存储指令30,其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数。数据处理单元216由此被配置以通过在输入/输出存储指令30中指定的地址来识别输入/输出函数。数据处理单元216被配置以验证在地址空间上和客户机实例级别上是否允许对输入/输出函数的访问,客户机在数据处理系统210上运行。数据处理单元216被配置以在输入/输出存储指令30在系统嵌套18中的执行完成之前完成输入/输出存储指令30。系统固件10被配置得如果在输入/输出存储指令30的异步执行期间由数据处理单元216检测到错误,则通过中断、发送失败的异步执行的数据,来通知操作系统。
输入/输出存储指令30位于将系统硬件/固件50与用户侧40分开的架构边界的用户接口40一侧的数据处理系统210中。
由此,如果源数据的长度超过8字节,数据可以由输入/输出存储指令30通过具有早期完成消息的异步传输机制在多个数据包中传输到聚合缓冲区16,否则,可以在一个数据包中传输数据。
根据本发明的数据处理系统的实施例的系统消息包括以下之一:分层物理目标地址;提供SMT线程或聚合缓冲区标识符;数据的长度;输入/输出总线地址;或或恢复算法的序列号。
图2示出根据本发明的实施例的用于处理针对外部设备214的输入/输出存储指令30的方法的消息序列图。
如图2所示,该方法始于操作系统发布输入/输出存储指令30。接着,如步骤S100、S104所示,如果数据的长度超过8字节,系统固件10重复发布将数据包发送到聚合缓冲区16的系统消息,直到存储块(store block)的所有数据已经被转发到聚合缓冲区16,与此同时系统固件10等待,直到数据已通过系统消息被发送。在步骤S102和S106中,本地完成(localcompletion)消息被发送回系统固件10。
然后在步骤S108中,系统固件10向聚合缓冲区16发布将数据以单个嵌套消息(nest message)的形式异步地转发到输入/输出总线控制器20的系统消息,与此同时等待聚合缓冲区16发送完成消息。
接下来,在步骤S110中,聚合缓冲区16将该嵌套消息注入到系统嵌套18中,其中,聚合缓冲区16在发送操作之后马上变得空闲供重用,向系统固件10发回信号。然后,聚合缓冲区16发送空闲供重用消息。
在步骤S112,系统嵌套18将消息转发到目标位置,接着是步骤S114,输入/输出总线控制器20接收消息并且将数据帧中的数据转发到输入/输出总线,接着在步骤S116,输入/输出总线控制器20将完成消息发送到系统嵌套18。
接下来在步骤S118,系统嵌套18将完成消息转发到始发聚合缓冲区16,随后在步骤S120,聚合缓冲区16将完成消息转发到异步内核-嵌套接口14。然后在步骤S122,异步内核-嵌套接口14向系统固件10发送通知操作完成的信号。
在数据传输期间发生错误的情况下,系统固件10向操作系统异步地发送通知缺陷的信号。
在要传送的数据小于8字节的情况下,跳过对聚合缓冲区16的重复填充。
图3示出根据本发明实施例的用于处理针对外部设备214的输入/输出存储指令30的流程图。
在步骤S200,数据处理单元的系统固件开始。在步骤S202,系统固件接收输入/输出存储块(input/output store block)指令。
然后在步骤S204中,检查是否要传送8个以上的字节。如果是这种情况,则在步骤S206中,内核-嵌套接口以最多16个字节的消息填充聚合缓冲区。系统固件在步骤S208中等待,直到在步骤S210中发送本地完成消息,返回到步骤S204。如果在步骤S204的检查中剩下不到8个字节,则流程在步骤S212中继续,其中内核-嵌套接口发送异步输入/输出消息,随后,在步骤S214中等待步骤S216中的缓冲区响应。然后,在步骤S218中,执行完成存储块指令,然后,流程在步骤S220中随系统固件结束而结束。
在步骤S228中,异步内核-嵌套接口逻辑启动出站(outbound)处理循环,随后,在步骤S222接收聚合缓冲区完成消息,并在步骤S224向聚合缓冲区转发数据消息,随后,在步骤S226将完成消息发送回系统固件。在步骤S230,接收到异步输入/输出发送(input/output send)消息,随后向聚合缓冲区转发该输入/输出发送消息。
在步骤S238,聚合缓冲区逻辑开始出站处理循环,随后在步骤S234接收数据,并在步骤S2236在聚合缓冲区中聚合数据。在步骤S240,聚合缓冲区也接收输入/输出发送消息,随后在步骤S242用输入/输出发送消息转发聚合缓冲区中的数据。接下来在步骤S244,通过内核-嵌套接口向系统固件发送来自聚合缓冲区的响应消息。
现在参照图4,示出了数据处理系统210的示例的示意图。数据处理系统210仅是合适的数据处理系统的一个实例,并且不旨在对本文所述本发明实施例的使用或功能的范围提出任何限制。无论如何,数据处理系统210能够被实现和/或执行以上所述的任何功能。
数据处理系统210中有计算机系统/服务器212,其可与许多其他通用或专用计算系统环境或配置一起操作。可以适合于与计算机系统/服务器212一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机,手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式云计算环境,等等。
计算机系统/服务器212可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器212可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
如图4所示,数据处理系统210中的计算机系统/服务器212以通用计算设备的形式示出。计算机系统/服务器212的组件可以包括但不限于一个或多个处理器或处理单元216、系统存储器228和将包括系统存储器228的不同系统组件耦合到处理器216的总线218。
总线218表示若干类型的总线结构中的任一种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线。
计算机系统/服务器212通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器212访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器228可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)230和/或高速缓冲存储器232。计算机系统/服务器212还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅通过举例,存储系统234可以被提供用于从不可移除、非易失性磁介质(未予示出,通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,可以提供用于读写可移动非易失性磁盘(例如“软盘”)的磁盘驱动器以及用于读写诸如CD-ROM、DVD-ROM或其他光学介质之类的可移除非易失性光盘的光盘驱动器。在这样的实例中,每一个都可以通过一个或多个数据介质接口连接到总线218。如下面将进一步描绘和描述的,存储器228可以包括具有被配置以执行本发明的实施例的功能的一组(例如至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块242的程序/实用工具240以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以通过示例而非限制的方式存储在存储器228中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一者或其某一组合可包含联网环境的实施例。程序模块242通常执行本文所述的本发明实施例的功能和/或方法。
计算机系统/服务器212还可以与以下各项通信:一个或多个诸如键盘、定点设备、显示器224之类的外部设备214;使得用户能够与计算机系统/服务器212交互的一个或多个设备;和/或使计算机系统/服务器212能够与一个或多个其他计算设备通信的任何设备(例如网卡、调制解调器等)。这样的通信可以通过输入/输出(I/O)接口222进行。此外,计算机系统/服务器212可以通过网络适配器220与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如因特网)之类的一个或多个网络通信。如图所示,网络适配器220通过总线218与计算机系统/服务器212的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器212结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),所述计算机可读程序指令用于致使处理器执行本发明的方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似的编程语言的常规过程式编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户”的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如通过使用因特网服务提供商的因特网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。
本文中参照根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述了本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器、专用计算机或其他可编程数据处理装置以产生机器,使得指令通过计算机的处理器或其他可编程数据处理装置的执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在计算机可读存储介质中,后者可指令计算机、可编程数据处理装置和/或其他装置以特定方式起作用,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上或其他装置,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就此,流程图或框图中的每个方框可以代表指令的模块、段或部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由执行指定功能或动作或执行专用硬件与计算机指令的组合的基于专用硬件的系统来实现。
已经出于说明的目的给出了本发明的不同实施例的描述,但以上描述并不旨在是穷尽性的或局限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或对市场上的技术的技术改进,或使得本领域普通技术人员能够理解本文中披露的实施例。
附图标记
10 系统FW
12 内核
14 异步内核-嵌套IF
16 聚合缓冲区
18 系统嵌套
20 I/O总线控制器
22 I/O总线
24 I/O状态缓冲区
26 早期完成逻辑
28 缓冲区-I/O总线控制器IF
30 I/O存储指令
32 异步I/O驱动代码
34 I/O设置代码
36 异步转发
38 异步总线
40 用户IF
42
44
46
48
50 系统HW/FW
210 数据处理系统
212 计算机系统/服务器
214 外部设备
216 CPU/数据处理单元
218 输入输出总线
220 网络适配器
222 输入输出接口
224 显示器
228 存储器
230 RAM
232 高速缓冲存储器
234 存储系统
240 程序/实用程序
242 程序模块。

Claims (22)

1.一种用于处理输入/输出存储指令(30)的数据处理系统(210),包括:
通过输入/输出总线控制器(20)通信地耦合到至少一个输入/输出总线(22)的系统嵌套(18),
还至少包括
数据处理单元(216),其包括内核(12)、系统固件(10)和异步内核-嵌套接口(14),
其中所述数据处理单元(216)经由聚合缓冲区(16)通信地耦合到所述系统嵌套(18),
其中所述系统嵌套(18)被配置以异步地从通信地耦合到所述输入/输出总线(22)的至少一个外部设备(214)加载数据和/或将数据存储到所述至少一个外部设备(214),
并且其中
(i)在所述数据处理系统(210)上运行的操作系统,发布所述输入/输出存储指令(30),其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;
(ii)所述数据处理单元(216)被配置以通过在所述输入/输出存储指令(30)中指定的所述地址来识别所述输入/输出函数;
(iii)所述数据处理单元(216)被配置以验证在地址空间上和在客户机实例级别上是否允许访问所述输入/输出函数,所述客户机在所述数据处理系统(210)上运行;
(iv)所述数据处理单元(216)被配置以在所述系统嵌套(18)中所述输入/输出存储指令(30)的执行完成之前完成所述输入/输出存储指令(30);(v)所述系统固件(10)被配置得如果在所述输入/输出存储指令(30)的异步执行期间由所述数据处理单元(216)检测到错误,则通过中断、发送所述失败的异步执行的数据,来通知所述操作系统。
2.根据权利要求1所述的数据处理系统,所述聚合缓冲区(16)通信地耦合到所述异步内核-嵌套接口(14)。
3.根据权利要求1或2所述的数据处理系统,其中,如果源数据的长度超过8字节,数据可以由所述输入/输出存储指令(30)通过具有早期完成消息的异步传输机制在多个数据包中传输到所述聚合缓冲区(16),否则,在一个数据包中传输数据。
4.根据在前权利要求中任一项所述的数据处理系统,所述系统固件(10)包括用于处理所述输入/输出存储指令(30)的异步输入/输出驱动程序代码(32)。
5.根据权利要求4所述的数据处理系统,所述内核(12)包括异步设置代码(34),用于处理对所述异步输入/输出驱动程序代码(32)的状态信息的存储器要求。
6.根据在前权利要求中任一项所述的数据处理系统,所述异步内核-嵌套接口(14)包括异步内核-嵌套接口转发组件(36),用于转发本地完成的数据。
7.根据在前权利要求中任一项所述的数据处理系统,所述聚合缓冲区(16)包括早期完成逻辑(26),用于在发送请求之后传送空闲供重用消息。
8.根据在前权利要求中任一项所述的数据处理系统,所述聚合缓冲区(16)经由异步总线(38)通信地耦合到所述异步内核-嵌套接口(14)。
9.根据在前权利要求中任一项所述的数据处理系统,还包括输入/输出状态缓冲区(24),其收集来自所述系统嵌套(18)和/或来自所述输入/输出总线控制器(20)的返回的状态,特别是来自所述系统嵌套(18)的完成消息。
10.根据权利要求9所述的数据处理系统,所述异步内核-嵌套接口包含所述输入/输出状态缓冲区(24)。
11.根据在前权利要求中任一项所述的数据处理系统,系统消息包括以下之一:
-分层物理目标地址,
-提供SMT线程或聚合缓冲区标识符,
-数据的长度,
-输入/输出总线地址,
-恢复算法的序列号。
12.一种用于处理针对数据处理系统(210)的至少一个外部设备(214)的输入/输出存储指令(30)的方法,所述数据处理系统(210)包括:
系统嵌套(10),通过输入/输出总线控制器(14)通信地耦合到至少一个输入/输出总线(22),
并且进一步至少包括数据处理单元(216),所述数据处理单元(216)包括内核(12)、系统固件(10)和异步内核-嵌套接口(14),
其中所述数据处理单元(216)经由聚合缓冲区(16)通信地耦合到所述系统嵌套(18),
其中,所述外部设备(214)通信地耦合到所述输入/输出总线(22),该方法包括:
(i)在所述数据处理系统(210)上运行的操作系统,发布所述输入/输出存储指令(30),其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;
(ii)所述数据处理单元(216)被配置以通过在所述输入/输出存储指令(30)中指定的所述地址来识别所述输入/输出函数;
(iii)所述数据处理单元(216)被配置以验证在地址空间上和在客户机实例级别上是否允许访问所述输入/输出函数,所述客户机在所述数据处理系统(210)上运行;
(iv)所述数据处理单元(216)被配置以在所述系统嵌套(18)中所述输入/输出存储指令(30)的执行完成之前完成所述输入/输出存储指令(30);
(v)所述系统固件(10)被配置得如果在所述输入/输出存储指令(30)的异步执行期间由所述数据处理单元(216)检测到错误,则通过中断、发送所述失败的异步执行的数据,来通知所述操作系统。
13.根据权利要求12所述的方法,进一步包括:
(i)所述操作系统发布所述输入/输出存储指令(30);
(ii)取决于数据的长度:如果数据的长度超过8字节,所述系统固件(10)重复发布系统消息以将数据包发送至所述聚合缓冲区(16),直到存储块的所有数据已经被转发至所述聚合缓冲区(16),同时系统固件(10)等待直到数据已经由系统消息发送;否则
所述系统固件(10)发布系统消息以将所述数据发送到所述聚合缓冲区(16);
(iii)所述系统固件(10)向所述聚合缓冲区(16)发布系统消息以将所述数据作为单个嵌套消息异步地转发到所述输入/输出总线控制器(20),同时等待所述聚合缓冲区(16)发送完成消息;
(iv)所述聚合缓冲区(16)将所述嵌套消息注入到所述系统嵌套(18)中,其中,所述聚合缓冲区(16)刚好在所述发送操作之后空闲以用于重新使用,发信号回所述系统固件(10);然后聚合缓冲区(16)发送空闲供重用消息;
(v)所述系统嵌套(18)将所述消息转发到所述目标位置;
(vi)所述输入/输出总线控制器(20)接收所述消息并且将数据帧中的数据转发到所述输入/输出总线;
(vii)所述输入/输出总线控制器(20)向所述系统嵌套(18)发送完成消息;
(viii)所述系统嵌套(18)将所述完成消息转发到所述发起聚合缓冲区(16);
(ix)所述聚合缓冲区(16)将完成转发至所述异步内核-嵌套接口(14);
(x)所述异步内核-嵌套接口(14)将操作的完成发信号通知给所述系统固件(10);
(xi)在错误的情况下,所述系统固件(10)将缺陷发信号通知给所述操作系统。
14.根据权利要求12或13所述的方法,进一步,如果数据的长度超过8字节,则由输入/输出存储指令(30)通过具有早期完成消息的异步传输机制在多个数据包中将数据传输到聚合缓冲区(16)。
15.根据权利要求12至14中任一项所述的方法,进一步地,所述系统固件(10)使用用于处理所述输入/输出存储指令(30)的异步输入/输出驱动程序代码(32)。
16.根据权利要求15所述的方法,进一步,所述内核(12)使用用于处理对所述异步输入/输出驱动程序代码(32)的状态信息的存储器要求的异步设置代码(34)。
17.根据权利要求12至16中任一项所述的方法,进一步,所述异步内核-嵌套接口(14)使用异步内核-嵌套接口转发组件(36)来转发本地完成的数据。
18.根据权利要求12至17中任一项所述的方法,进一步,所述聚合缓冲区(16)使用早期完成逻辑(26)用于在发送请求之后传送空闲供重用消息。
19.根据权利要求12至18中任一项所述的方法,进一步,输入/输出状态缓冲区(24)收集来自所述系统嵌套(18)和/或来自所述输入/输出总线控制器(20)的返回的状态,特别是来自所述系统嵌套(18)的完成消息。
20.根据权利要求12至19中任一项所述的方法,其中,系统消息包括以下之一:
-分层物理目标地址,
-提供SMT线程或聚合缓冲区标识符,
-数据的长度,
-输入/输出总线地址,
-恢复算法的序列号。
21.一种计算机程序产品,用于处理针对数据处理系统(210)的至少一个外部设备(214)的输入/输出存储指令(30),所述数据处理系统(210)包括:系统嵌套(10),通过输入/输出总线控制器(14)通信地耦合到至少一个输入/输出总线(22),
并且,还至少包括数据处理单元(216),所述数据处理单元(216)包括内核(12)、系统固件(10)和异步内核-嵌套接口(14),
其中所述数据处理单元(216)经由聚合缓冲区(16)通信地耦合到所述系统嵌套(18),
其中,所述外部设备(214)通信地耦合到所述输入/输出总线(22),所述计算机程序产品包括具有体现于其中的程序指令的计算机可读存储介质,所述程序指令可由所述计算机系统(212)执行以致使所述计算机系统(212)执行一种方法,所述方法包括:
(i)在所述数据处理系统(210)上运行的操作系统,发布所述输入/输出存储指令(30),其至少指定具有通过地址的偏址、要传送的数据和/或指向要传送的数据的指针以及所述数据的长度的输入/输出函数;
(ii)所述数据处理单元(216)被配置以通过在所述输入/输出存储指令(30)中指定的所述地址来识别所述输入/输出函数;
(iii)所述数据处理单元(216)被配置以验证在地址空间上和在客户机实例级别上是否允许访问所述输入/输出函数,所述客户机在所述数据处理系统(210)上运行;
(iv)所述数据处理单元(216)被配置以在所述系统嵌套(18)中所述输入/输出存储指令(30)的执行完成之前完成所述输入/输出存储指令(30);
(v)所述系统固件(10)被配置得如果在所述输入/输出存储指令(30)的异步执行期间由所述数据处理单元(216)检测到错误,则通过中断、发送所述失败的异步执行的数据,来通知所述操作系统。
22.一种用于执行数据处理程序(240)的数据处理系统(210),所述数据处理系统包括用于执行根据权利要求12至20中任一项所述的方法的计算机可读程序指令。
CN202080011206.8A 2019-01-31 2020-01-14 处理输入/输出存储指令 Pending CN113366433A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19154733.0 2019-01-31
EP19154733 2019-01-31
PCT/EP2020/050755 WO2020156796A1 (en) 2019-01-31 2020-01-14 Handling an input/output store instruction

Publications (1)

Publication Number Publication Date
CN113366433A true CN113366433A (zh) 2021-09-07

Family

ID=65275982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080011206.8A Pending CN113366433A (zh) 2019-01-31 2020-01-14 处理输入/输出存储指令

Country Status (10)

Country Link
US (2) US11163566B2 (zh)
EP (1) EP3918466A1 (zh)
JP (1) JP7461693B2 (zh)
CN (1) CN113366433A (zh)
AU (1) AU2020214661B2 (zh)
BR (1) BR112021015075A2 (zh)
CA (1) CA3127852A1 (zh)
IL (1) IL284334B2 (zh)
TW (1) TWI773959B (zh)
WO (1) WO2020156796A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN113366438A (zh) 2019-01-31 2021-09-07 国际商业机器公司 处理输入/输出存储指令
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN113366457B (zh) 2019-01-31 2024-06-14 国际商业机器公司 处理输入/输出存储指令
CN112286466B (zh) * 2020-11-18 2024-05-07 合肥沛睿微电子股份有限公司 电子装置及空间复用方法
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1052278A (en) 1910-11-03 1913-02-04 George I Rockwood Pipe-hanger.
FR2273317B1 (zh) 1974-05-28 1976-10-15 Philips Electrologica
US4947316A (en) 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
JPH03288934A (ja) * 1990-04-05 1991-12-19 Fujitsu Ltd 仮想計算機システムにおけるデータ転送制御方式
JPH04195418A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd 磁気テープ記憶装置
US5317739A (en) * 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
US5548735A (en) 1993-09-15 1996-08-20 International Business Machines Corporation System and method for asynchronously processing store instructions to I/O space
US5553302A (en) 1993-12-30 1996-09-03 Unisys Corporation Serial I/O channel having independent and asynchronous facilities with sequence recognition, frame recognition, and frame receiving mechanism for receiving control and user defined data
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5548788A (en) 1994-10-27 1996-08-20 Emc Corporation Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
DE19631289A1 (de) 1996-08-02 1998-02-05 Ibm Verfahren zum Testen eines Protokollumsetzers und Protokollumsetzer
US6072781A (en) * 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6496277B1 (en) * 1999-07-23 2002-12-17 Xerox Corporation Data flow control and storage facility for an image reproduction system
US6725348B1 (en) 1999-10-13 2004-04-20 International Business Machines Corporation Data storage device and method for reducing write misses by completing transfer to a dual-port cache before initiating a disk write of the data from the cache
US6490647B1 (en) * 2000-04-04 2002-12-03 International Business Machines Corporation Flushing stale data from a PCI bus system read prefetch buffer
US6578102B1 (en) * 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US7042881B1 (en) 2001-06-29 2006-05-09 Cisco Technology, Inc. Asynchronous transfer mode system and method to verify a connection
US7178019B2 (en) 2003-11-13 2007-02-13 Hewlett-Packard Development Company, L.P. Networked basic input output system read only memory
US7234004B2 (en) 2003-12-19 2007-06-19 International Business Machines Corporation Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US7200626B1 (en) 2004-01-22 2007-04-03 Unisys Corporation System and method for verification of a quiesced database copy
US7079978B2 (en) 2004-05-24 2006-07-18 International Business Machines Corporation Apparatus, system, and method for abbreviated library calibration
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
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
US7827433B1 (en) 2007-05-16 2010-11-02 Altera Corporation Time-multiplexed routing for reducing pipelining registers
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US7941627B2 (en) 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US7991981B2 (en) 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
JP4623126B2 (ja) 2008-04-14 2011-02-02 株式会社日立製作所 データ処理システム
US8867344B2 (en) 2008-07-21 2014-10-21 Mediatek Inc. Methods for bus data transmission and systems utilizing the same
US8566480B2 (en) * 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8650335B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
JP5680466B2 (ja) 2011-03-29 2015-03-04 三菱重工業株式会社 並列処理システム及び並列処理システムの動作方法
US9513904B2 (en) 2013-10-15 2016-12-06 Mill Computing, Inc. Computer processor employing cache memory with per-byte valid bits
US20150261535A1 (en) 2014-03-11 2015-09-17 Cavium, Inc. Method and apparatus for low latency exchange of data between a processor and coprocessor
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9588914B2 (en) 2014-04-09 2017-03-07 International Business Machines Corporation Broadcast and unicast communication between non-coherent processors using coherent address operations
US9460019B2 (en) * 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9477481B2 (en) 2014-06-27 2016-10-25 International Business Machines Corporation Accurate tracking of transactional read and write sets with speculation
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
GB2531011A (en) 2014-10-07 2016-04-13 Ibm Initializing I/O Devices
US9542201B2 (en) 2015-02-25 2017-01-10 Quanta Computer, Inc. Network bios management
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9965187B2 (en) * 2016-02-18 2018-05-08 Lawrence Livermore National Security, Llc Near-memory data reorganization engine
US9971545B1 (en) 2016-03-23 2018-05-15 Crossbar, Inc. Non-volatile write and read cache for storage media
US10248509B2 (en) 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
EP4120070B1 (en) 2016-12-31 2024-05-01 INTEL Corporation Systems, methods, and apparatuses for heterogeneous computing
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
CN113366457B (zh) 2019-01-31 2024-06-14 国际商业机器公司 处理输入/输出存储指令
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN113366438A (zh) 2019-01-31 2021-09-07 国际商业机器公司 处理输入/输出存储指令
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US11748101B2 (en) * 2021-07-13 2023-09-05 Arm Limited Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations

Also Published As

Publication number Publication date
US20220004387A1 (en) 2022-01-06
US20200249943A1 (en) 2020-08-06
AU2020214661A1 (en) 2021-06-10
AU2020214661B2 (en) 2022-09-22
IL284334B1 (en) 2023-11-01
WO2020156796A1 (en) 2020-08-06
IL284334B2 (en) 2024-03-01
TW202032378A (zh) 2020-09-01
US11163566B2 (en) 2021-11-02
CA3127852A1 (en) 2020-08-06
JP7461693B2 (ja) 2024-04-04
US11762659B2 (en) 2023-09-19
EP3918466A1 (en) 2021-12-08
TWI773959B (zh) 2022-08-11
JP2022518340A (ja) 2022-03-15
IL284334A (en) 2021-08-31
BR112021015075A2 (pt) 2021-09-28

Similar Documents

Publication Publication Date Title
CN113366433A (zh) 处理输入/输出存储指令
CN113366434A (zh) 处理输入/输出存储指令
CN113366457B (zh) 处理输入/输出存储指令
KR102681251B1 (ko) 입/출력 저장 명령의 처리
US10120822B2 (en) Synchronous input/output measurement data
US10275379B2 (en) Managing starvation in a distributed arbitration scheme
CN118796755A (zh) 一种日志传输方法、装置、设备及存储介质
CN117667456A (zh) 一种消息发送管理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40057233

Country of ref document: HK