用于在多个输入/输出(I/O)装置当中执行I/O操作的系统及方法与流程

文档序号:11557931阅读:200来源:国知局
本发明涉及用于高效输入/输出(I/O)操作的系统及方法。

背景技术:
现代计算机系统可包含多个输入/输出(I/O)装置。举例来说,典型的计算机服务器系统可包含使用具有整合式及外部I/O装置两者的芯片多处理器(CMP)的单芯片或多芯片对称多处理器(SMP)。I/O装置可使用例如(举例来说)PCI-Express(PCIe)的I/O互连而连接到处理器及存储器。计算机服务器系统中的I/O装置的实例可包含磁盘控制器、磁盘、快闪控制器、固态驱动机(SSD)、高速网络连线组件、通用串行总线(USB)控制器、通用非同步接收器/传输器(UART)控制器及其它装置。在这些计算机系统中,每一I/O装置可为I/O互连上的单独实体。虽然I/O装置可执行各种不同功能,但I/O装置中的每一者可包含所述装置上的相同或类似功能集,所述功能集可为无效的。计算机系统中的数据移动也可为无效的。可期望具有包含更高效I/O操作的计算机系统。

技术实现要素:
此文件描述用于多个输入/输出装置及处理器或多处理器(例如,对称多处理器(SMP)单元)当中的输入/输出(I/O)操作的系统及技术。一种系统可包含共享I/O单元,其组合多个共享I/O功能作为所述共享I/O单元的部分,其中从I/O装置中的每一者移除所述共享功能。所述共享I/O单元可为所述系统中的单独组件或可为处理器或多处理器的一部分。以此方式,可为多个I/O装置所共有的功能可从I/O装置移除且替代地由共享I/O单元执行。所述处理器及所述I/O装置可与所述共享I/O单元互动且使用所述共享I/O单元来执行所述共享功能中的一者或一者以上。所述I/O装置及所述处理器或所述多处理器可使用所述共享I/O单元互动作为总线上的同级。所述I/O装置可留存控制一组寄存器及其它组件以执行特定I/O装置特有的功能。根据一个一股方面,一种系统包含:总线;处理器,其可操作地耦合到所述总线;存储器,其可操作地耦合到所述总线;多个输入/输出(I/O)装置,其可操作地耦合到所述总线,其中所述I/O装置中的每一者具有一组控制寄存器;及第一共享I/O单元,其可操作地耦合到所述总线。所述第一共享I/O单元具有多个共享功能且经配置以执行所述共享功能,其中所述共享I/O功能不包含为所述I/O装置上的功能且所述I/O装置及所述处理器与所述第一共享I/O单元互动以使用由所述第一共享I/O单元执行的所述共享功能中的一者或一者以上。根据另一一股方面,一种系统包含:总线;多处理器,其具有至少两个处理器,所述多处理器可操作地耦合到所述总线;存储器,其可操作地耦合到所述总线;多个输入/输出(I/O)装置,其可操作地耦合到所述总线;及第一共享I/O单元,其可操作地耦合到所述总线。所述第一共享I/O单元包含多个共享功能且经配置以执行所述共享功能,其中所述I/O装置及所述多处理器与所述第一共享I/O单元互动以使用由所述第一共享I/O单元执行的所述共享功能中的一者或一者以上。所述共享I/O功能包含一个或一个以上中断控制器、一个或一个以上I/O存储器管理单元(MMU)及多个数据队列。根据另一一股方面,一种用于执行多个输入/输出(I/O)装置当中的I/O操作的方法包含在系统处接收数据,其中所述系统包含:总线;处理器,其可操作地耦合到所述总线;多个I/O装置,其可操作地耦合到所述总线;及共享I/O单元,其可操作地耦合到所述总线,其中所述共享I/O单元包含多个共享功能。所述方法包含在所述I/O装置中的一者或一者以上、所述处理器及所述共享I/O装置之间传递所述数据以及由所述共享I/O单元对所述数据中执行所述共享功能中的一者或一者以上。根据另一一股方面,一种系统包含:用于传递的构件(例如,总线);用于处理的构件(例如,处理器),其可操作地耦合到用于传递的所述构件;用于存储的构件(例如,存储器),其可操作地耦合到用于传递的所述构件;多个输入/输出(I/O)装置,其可操作地耦合到用于传递的所述构件,其中所述I/O装置中的每一者具有一组控制寄存器;及用于共享I/O功能的构件(例如,共享I/O单元),其可操作地耦合到用于传递的所述构件。用于共享I/O功能的所述构件具有多个共享功能且经配置以执行所述共享功能,其中所述共享I/O功能不包含为所述I/O装置上的功能且所述I/O装置及用于处理的所述构件与用于共享I/O功能的所述构件互动以使用由用于共享I/O功能的所述构件执行的所述共享功能中的一者或一者以上。在附图及下文说明中陈述一个或一个以上实施方案的细节。从所述说明及图式且从权利要求书将明了其它特征。附图说明图1是具有共享输入/输出(I/O)单元的系统的实例性框图。图2是图1的系统的共享I/O单元的实例性框图。图3是具有共享I/O单元的系统的实例性框图。图4是具有共享I/O单元的系统的实例性框图。图5是具有多个共享I/O单元的系统的实例性框图。图6是图解说明图1到图5的系统的实例性操作的实例性流程图。具体实施方式图1是系统100的实例性框图。系统100包含:总线102;存储器104,其可操作地耦合到所述总线102;处理器106,其可操作地耦合到总线102;多个输入/输出(I/O)装置,其可操作地耦合到总线102;及共享I/O单元108,其可操作地耦合到总线102。在一些实例性实施方案中,系统100可以是将系统的所有组件整合于单个芯片上的集成电路(例如,系统单芯片(SOC))。在一些实例性实施方案中,系统100可以是其中系统的组件可在多个不同芯片上的多芯片上系统。举例来说,系统100的组件中的每一者可在单独的芯片上。在其它实例中,系统100的组件中的一些组件可在一个芯片上且其它组件可在单独的芯片上。在一个实例性实施方案中,系统100可用以接收数据、处理数据及/或将数据(或经处理的数据)发送到另一组件或系统。举例来说,系统100可与网络(例如,有线或无线网络)通信且可经由网络从另一组件或系统接收数据。系统100可使用组件(包含处理器106)中的一者或一者以上来操纵数据。系统100可将数据(包含经操纵或经处理的数据)发送到另一组件或系统,例如(比如)存储装置(例如,快闪存储器存储装置、基于磁盘的存储装置等)或其它类型的装置或系统。在一个实例性实施方案中,系统100可用于计算装置中,例如(比如)计算机、服务器、膝上型计算机、笔记本计算机、平板计算机、移动装置、智能电话或其它类型的计算装置。系统100可包含用作完整计算装置(例如,服务器或其它计算装置)所需的所有组件(包含未图解说明的其它组件)。在其它实施方案中,系统100可为计算装置中的组件,所述组件与计算装置中的其它系统及组件协作工作。在系统100中,总线102可以可操作地连接系统100的其它组件以实现组件之间的通信。总线102使得能够在系统100的组件之间传送数据。总线102可为任一类型的互连,包含串行总线、并行总线、专有总线及I/O互连(例如,高速外围组件互连(PCIe))。在系统100中,存储器104可经配置以暂时、永久、半永久或其一组合地存储一个或一个以上数据片段。此外,存储器104可包含易失性存储器、非易失性存储器或其一组合。存储器104或存储器104的部分可配置为存储装置,所述存储装置经配置以存储用于由处理器106执行的指令。所述指令可为软件、固件或其一组合的机器可执行指令或片段。存储器104可为非暂时性存储媒体。处理器106可经配置以执行软件、固件或其一组合的一个或一个以上机器可执行指令或片段。举例来说,处理器106可经配置以执行存储于存储器104中的指令。处理器106可包含单个处理器或可包含多个处理器,如下文更详细地图解说明且描述。处理器106可与系统100的其它组件互动以处理数据且致使其它组件执行一个或一个以上动作。系统100可包含多个I/O装置。如图1中所图解说明,系统100包含具有控制寄存器111的磁盘控制器110、具有控制寄存器113的快闪控制器112或用于其它高性能非易失性存储装置的控制器、具有控制寄存器115的PCIe控制器114、具有控制寄存器117的网络信息控制器116及具有控制寄存器119的杂项I/O装置118。I/O装置110到118可为整合式I/O装置或可为外部I/O装置。I/O装置110到118中的每一者包含一组控制寄存器111到119。个别组的控制寄存器111到119可包含为I/O装置所特有的配置信息,所述配置信息是使得I/O装置能够按编程及期望起作用的一部分。在典型配置中,I/O装置可已用作系统内的单独、自含式组件。也就是说,I/O装置中的每一者可已包含执行其特定功能所需的所有功能,包含可为I/O装置中的每一者所共有的一组功能。在系统100中,I/O装置110到118可不用作系统100内的自含式组件。系统100包含经配置以具有一组共享功能的共享I/O单元108。所述组共享功能可不包含于I/O装置110到118中的每一者上且可从I/O装置110到118中的每一者移除。以此方式,I/O装置110到118与共享I/O单元108互动以供所述组共享功能中的一者或一者以上使用。所述组共享功能可在共享I/O单元108上的供系统100的组件使用的单个位置中。在其它实例性实施方案中,所述组共享功能可跨越多个位置分布。在图1的所图解说明实例中,共享I/O单元108图解说明为总线102上的单独组件。在其它实例性实施方案中,如所图解说明及下文更详细地描述,共享I/O单元108可为例如(举例来说)处理器106的另一组件的一部分。处理器106连同I/O装置110到118一起可与共享I/O单元108互动以使用由共享I/O单元108执行的共享功能中的一者或一者以上,不管共享I/O单元108是否为总线102上的单独组件或不管共享I/O单元108是否为例如处理器106的另一组件的部分。此外参考图2,图解说明共享I/O单元108的实例性框图。共享I/O单元108可包含由一个或一个以上组件或块执行的多个共享功能,所述一个或一个以上组件或块是共享I/O单元的部分。贯穿本说明及权利要求书,术语“共享功能”及术语“共享组件”可互换地使用以意指辨认其可为共享I/O单元108上的正执行共享功能的共享组件的同一事件。共享功能作为共享I/O单元108的部分位于单个位置处。共享功能包含一个或一个以上中断控制器220、一个或一个以上存储器管理单元(MMU)222、一个或一个以上队列224、一个或一个以上连接状态结构225、一个或一个以上加速引擎226及一个或一个以上RDMA引擎228。共享功能还可包含其它杂项共享功能230。共享I/O单元108上的共享功能220到230还可称为共享共用接口。以此方式,共享共用接口已从个别I/O装置110到118移除且位于共享I/O单元108上的单个位置中。共享接口使得I/O装置110到118及系统100的其它组件(包含处理器106)能够以比在共用接口位于个别I/O装置110到118中的每一者上的情况下更高效的方式接收数据、处理数据及/或发送数据(包含经处理的数据)。在一个实例性实施方案中,共享I/O单元108上的共享中断控制器220可针对I/O装置110到118执行中断控制功能。I/O装置110到118可不包含具有中断控制功能的中断控制器且替代地可使用具有中断控制功能的共享中断控制器220。以此方式,处理器106还可与共享I/O单元108上的共享中断控制器220互动并使用共享I/O单元108上的中断控制器220。在一个实例性实施方案中,共享I/O单元108上的共享MMU222可针对I/O装置110到118执行存储器管理功能。I/O装置110到118可不包含具有存储器管理功能的MMU且替代地可使用具有存储器管理功能的共享MMU222。以此方式,处理器106还可与共享I/O单元108上的共享MMU222互动并使用共享I/O单元108上的共享MMU222。在一个实例性实施方案中,共享I/O单元108上的共享队列224可针对I/O装置110到118执行排队功能。I/O装置110到118可不包含具有排队功能的队列且替代地可使用具有排队功能的共享队列224。以此方式,处理器106还可与共享I/O单元108上的共享队列224互动并使用共享I/O单元108上的共享队列224。I/O装置110到118可在每一个别装置上包含缓冲器(未展示)。每一I/O装置110到118上的缓冲器可经配置以辅助数据流控制及等待时间从而辅助适当数据流穿过系统100。在一个实例性实施方案中,共享I/O单元108上的共享连接状态结构225(也称为队列对结构)可针对I/O装置110到118执行与连接相关的功能。I/O装置110到118可不包含具有与连接相关的功能的连接状态结构且替代地可使用具有与连接相关的功能的共享连接状态结构225。以此方式,处理器106还可与共享I/O单元108上的共享连接状态结构225互动并使用共享I/O单元108上的共享连接状态结构225。举例来说,共享连接状态结构225可包含关于通信单元或端点之间的特定逻辑连接的元数据信息。端点可为运行于计算机节点处理器、网络连线控制器、存储控制器或其它类型的控制器中的处理程序。在一个实例性实施方案中,共享I/O单元108上的共享加速引擎226可针对I/O装置110到118执行加速功能。I/O装置110到118可不包含具有加速功能的加速引擎且替代地可使用具有加速功能的共享加速引擎226。以此方式,处理器106还可与共享I/O单元108上的共享加速引擎226互动并使用共享I/O单元108上的共享加速引擎226。在一个实例性实施方案中,共享I/O单元108上的共享RDMA引擎228可针对I/O装置110到118执行RDMA功能。I/O装置110到118可不包含具有RDMA功能的RDMA引擎且替代地可使用具有RDMA功能的共享RDMA引擎228。以此方式,处理器106还可与共享I/O单元108上的共享RDMA引擎228互动并使用共享I/O单元108上的共享RDMA引擎228。在一个实例性实施方案中,共享I/O单元108上的共享杂项功能230针对I/O装置110到118执行一个或一个以上各种杂项功能。I/O装置110到118可不包含这些杂项功能中的一者或一者以上且替代地可使用共享杂项功能230。以此方式,处理器106还可与共享I/O单元108上的共享杂项功能230互动并使用共享I/O单元108上的共享杂项功能230。在一个实例性实施方案中,系统100及对共享I/O单元108的使用可实现系统100的组件之间的更高效数据移动且可减少与在I/O装置110到118中的每一者上具有共享功能中的每一者的多个复本相关联的额外开销。举例来说,可从系统100外部的组件或系统接收数据。数据(例如,网络上的数据)可流动到网络信息控制器116中且流动到共享I/O单元108中的共享队列224中。如果经接收数据需要处理,那么处理器106可从共享队列224存取数据且对数据执行处理。接着,经处理数据可移动到共享队列224,且接着可通过I/O装置中的一者(例如,举例来说在数据将移动到基于磁盘的存储装置的情况下通过磁盘控制器110、在数据将移动到快闪存储器的情况下通过快闪控制器112)或在数据移动到网络上的另一组件的情况下通过网络信息控制器116从共享队列224中串流出。如果经接收数据不需要处理,那么可通过RDMA引擎226与其它I/O装置110到118中的一者配合地将数据直接移动到所要位置。以此方式,通往系统100中、在系统100的组件之间及从系统100中的数据移动由于共享I/O单元108上的共享功能的使用而更高效且连成流线型。可通过使用共享I/O单元108上的共享I/O功能而需要发生较少数据复制。由于由共享中断控制器220针对I/O装置110到118协调中断处理,因此可需要较少中断。可通过使用共享I/O单元108上的共享I/O功能而减少计算循环的数目及其它处理额外开销。在其它实例性实施方案中,可跨越多个位置分布共享I/O单元上的共享功能。举例来说,共享功能中的一者或一者以上可在一个位置中的一个共享I/O单元中且其它共享功能可在另一位置中的另一共享I/O单元中。比如,共享RDMA引擎及共享加速引擎可在一个位置中的一个共享I/O单元中且其它共享功能可在不同位置中的不同共享I/O单元中。在一些实施方案中,共享功能可分布于两个以上位置中。可使用共享I/O单元来实施系统100的其它实例性实施方案及变化形式。参考图3,图解说明系统300的实例性框图。系统300可包含图1的系统100的组件及功能性。在系统300中,共享I/O单元108可不是单独组件,而替代地可以是处理器106的一部分。共享I/O单元108可包含所有与上文关于图2所描述相同的组件及功能。参考图4,图解说明系统400的实例性框图。系统400可类似于图1的系统100及图3的系统300的组件及功能性。系统400包含具有多个处理器440a及440b的多处理器406(例如,分布式共享存储器(DSM)系统或对称多处理器(SMP)单元)。多处理器406包含至少第一处理器440a及至少第二处理器440b。多处理器406可为单芯片单元或可为多芯片单元。在所图解说明实例中,共享I/O单元108可为多处理器406的一部分。在其它实例性实施方案中,共享I/O单元108可与多处理器406分离。在系统400中,共享I/O单元108可以与上文所描述相同的方式起作用且针对I/O装置110到118提供并执行共享共用功能。系统400可至少部分地由于多个处理器440a及440b而具有更大处理能力。参考图5,图解说明系统500的实例性框图。系统500可类似于图1的系统100、图3的系统300及图4的系统400的组件及功能性。系统400包含多个共享I/O单元508a及508b。多个共享I/O单元508a及508b可包含与上文关于图1到4所描述的共享I/O单元108相同的组件及功能且经配置而以与上文关于图1到4所描述相同的方式起作用。多个共享I/O单元508a及508b可提供关于共享I/O装置110到118及多处理器406当中的功能的额外冗余及/或配置选项。在一个实施方案中,举例来说,I/O装置110到118的部分可与共享I/O单元中的一者(例如,共享I/O单元508a)共享功能。I/O装置110到118的另一部分可与另一共享I/O单元508b共享功能。在其它实例性实施方案中,其它配置是可能的。在一个实例性实施方案中,共享I/O单元508a及508b可在同一位置中。在其它实例性实施方案中,共享I/O单元508a及508b可在不同位置中。在一个实例性实施方案中,共享I/O单元508a及508b可包含相同组的共享I/O功能。在其它实例性实施方案中,共享I/O单元508a及508b可各自包含共享I/O功能的部分而存在或不存在共享I/O功能中的一者或一者以上的重复。在上文所描述且图解说明的实例性实施方案中,I/O装置110到118可为图1及图3的处理器106以及图4及图5的多处理器406的同级。也就是说,I/O装置110到118可不需要I/O装置110到118与处理器之间的I/O互连且替代地可以同级间为基础地彼此通信。PCIe控制器114可经配置以针对系统的其它装置及组件(notshown)或系统外部的其它装置及组件执行PCIe功能。共享I/O单元108的使用可实现此同级间通信。在其它实例性实施方案中,I/O装置可使用I/O互连来与处理器通信,其中总线102可以是I/O互连且PCIe控制器114可为通信及数据移动提供控制功能性。参考图6,图解说明方法600的实例性流程图。方法600可由上文关于图1到5所描述的系统及组件执行。方法600包含在系统处接收数据(610)。系统包含:总线;处理器,其可操作地耦合到总线;多个I/O装置,其可操作地耦合到总线;及共享I/O单元,其可操作地耦合到总线,其中共享I/O单元包含多个共享功能(610)。方法600包含在I/O装置中一者或一者以上、处理器及共享I/O装置之间传递数据(620)。方法600还包含由共享I/O单元对数据执行共享功能中的一者或一者以上(630)。共享功能可不包含为I/O装置上的功能。本文中所描述的各种技术的实施方案可以数字电子电路或者以计算机硬件、固件、软件或以其组合来实施。实施方案可实施为计算机程序产品,即,有形地体现于信息载体中(例如,体现于机器可读存储装置中)的计算机程序,以由数据处理设备(例如,可编程处理器、一计算机或多个计算机)执行或控制所述数据处理设备的操作。可以任何形式的编程语言(包包含编译语言或解译语言)来写入计算机程序(例如,上文所描述的计算机程序),且可以任何形式来部署所述计算机程序,包含部署为独立程序或部署为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序可经部署以在一个计算机上或在位于一个位点处或跨越多个位点分布且由通信网络互连的多个计算机上执行。方法步骤可由执行计算机程序的一个或一个以上可编程处理器执行,以通过对输入数据进行操作并产生输出来执行功能。方法步骤还可由专用逻辑电路(例如,FPGA(场可编程门阵列)或ASIC(专用集成电路))执行,且设备可实施为专用逻辑电路。通过举例的方式,适于执行计算机程序的处理器包含通用微处理器及专用微处理器两者,以及任何种类的数字计算机的任何一个或一个以上处理器。一股来说,处理器将从只读存储器或随机存取存储器或两者接收指令及数据。计算机的元件可包含用于执行指令的至少一个处理器及用于存储指令及数据的一个或一个以上存储器装置。一股来说,计算机还可包含用于存储数据的一个或一个以上大容量存储装置(例如,磁盘、磁光盘或光盘)或经操作地耦合以从所述一个或一个以上大容量存储装置接收数据或向其传送数据或既接收数据又传送数据。适合体现计算机程序指令及数据的信息载体包含所有形式的非易失性存储器,包含(举例来说):半导体存储器装置,例如EPROM、EEPROM及快闪存储器装置;磁盘,例如内部硬磁盘或可装卸磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。所述处理器及存储器可由专用逻辑电路补充或并入于专用逻辑电路中。为提供与用户的互动,实施方案可实施于计算机上,所述计算机具有用于向用户显示信息的显示装置(例如,阴极射线管(CRT)或液晶显示器(LCD)监视器)及用户可通过其来向计算机提供输入的键盘及指向装置(例如,鼠标或轨迹球)。也可使用其它种类的装置来提供与用户的互动;举例来说,提供给用户的反馈可为任何形式的感观反馈,例如,视觉反馈、听觉反馈或触觉反馈;且来自用户的输入可以任何形式来接收,其中包含声音、语音或触觉输入。实施方案可实施于计算系统(包含后端组件,例如,作为数据服务器;或包含中间件组件,例如,应用程序服务器;或包含前端组件,例如,具有用户可经由其来与实施方案互动的图形用户接口或Web浏览器的客户端计算机)或此类后端、中间件或前端组件的任一组合中。组件可由任何数字数据通信形式或媒体(例如,通信网络)互连。通信网络的实例包含局域网(LAN)及广域网(WAN),例如因特网。虽然如本文中所描述已图解说明了所描述实施方案的某些特征,但所属领域的技术人员现将能想出许多修改、替代、改变及等效形式。因此,应理解,所附权利要求书打算涵盖归属于所述实施例的范围内的所有此类修改及改变。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1