具体实施方式
本发明涉及相对硬件适配器支持为内核模式处理和用户模式处理共有的
操作的单个实现的方法、系统和计算机程序产品。提供为操作的内核模式和
用户模式实现的一共有接口。如果呼叫过程是用户模式过程,呼叫映射到用
户模式实现,而如果呼叫过程是内核模式过程,呼叫映射到内核模式实现。
如下面就图4更详细的讨论,本发明的一些实施例可包括包括各种计算机硬
件的一或更多专用和/或一或更多通用计算机。
图1示出根据本发明支持共有用户模式和内核模式操作的单个实现的硬
件驱动器模型的高级框图。应用110通过用户模式接口120接入适配器150。
一些操作映射到内核模式实现160,而其他操作映射到用户模式实现130。注
意:用户模式实现130提供对适配器150的直接接入,无须切换到内核模式。
因此,应用110能通过用户模式实现130接入适配器150,所用时间比内核模
式实现140所需时间少很多。
使对应操作实现于用户模式实现130和内核模式实现140两者是需要的,
理由有至少两条。首先,内核模式实现130通常包括对适配器150可能的所
有操作,这样无用户模式界面120的应用能与适配器150相互作用。考虑到
从内核模式切换到用户模式(及从用户模式切换到内核模式)的开销,呼叫
用户模式实现130(对能实现于用户模式的操作)的内核模式实现140通常导
致少于最佳性能,特别如此,因为用户模式实现130实现趋向时常出现的操
作,诸如收发信息。(也要注意的是,对到达内核模式实现140的应用,从
用户模式到内核模式的切换已发生,另一切换随之从内核模式切换回用户模
式。)
其次,内核模式实现140通常包括为内核模式特有的操作。这些操作时
常使用更基本的操作用来从适配器150收发信息。然而,如上所示,诸如收
发信息之类的频繁操作很可能是包括于用户模式实现130中的侯选,以获得
避免过程从用户模式转换到内核模式的性能益处。与上述情况相似,在接入
用户模式实现130中从内核模式切换到用户模式和从用户模式切换回内核模
式的开销导致非最佳性能。
因为用户模式处理和内核模式处理中的差异,给定操作的用户模式实现
倾向于不同于内核模式实现。通常,一操作的每个用户模式实现130提供与
该操作的对应内核模式实现140同样的函数,但适于用户模式处理。然而,
根据本发明,且如关于图2A-2C中所示的示例硬件驱动器模型的较详细的描
述,用户模式实现130和内核模式实现140共用一共有接口。(图1中,该
共有借口是用户模式实现130和内核模式实现140的部分且未单独示出。)
因此,可对一内核模式通信操作和一用户模式通信操作写同一源码。使用同
一源码(例如:从一共同源派生的静态库)是一很大的优点:因为需写和测
试的程序码较少而减少开发时间、测试时间和编程差错。共有接口也可给开
发者提供关于如何基于通过共有接口可供的例程设计软件的有意义的指导。
当然,一些操作为内核模式实现140特有。例如,因为内核负责实施安
全,启动和终止对适配器的接入通过内核模式实现140出现。一旦内核模式
实现140(在应用110的指导下)向适配器150提供适当的安全参数,适配器
150在得到接入时执行相应安全检查,诸如验证接入过程已通过内核模式实现
140得到正确认证。
图2A-2C根据本发明说明支持共有用户模式和内核模式操作的单个实现
的一示例硬件驱动器模型。InfiniBand应用210A通过用户模式库230A和内
核模式微端口驱动器240A接入主信道适配器(“HCA适配器”)。某一通
过用户模式库230A(同内核模式微端口驱动器240A形成对比)对HCA适配
器280A的接入是可行的,因为InfiniBand表示向适配器卸载某一安全检查和
其他处理的硬件体系结构的一例子。启动和终止接入通过内核模式操作得到
控制以保证适当的安全级。然而,启动后,频繁通信操作(诸如涉及收发数
据的操作)的安全在HCA硬件处得到加强,支持特别快的用户模式接入。例
如,如下面关于图2C的较详细的描述,内核模式微端口驱动器240A负责生
成和破坏通信队列,而用户模式库230A允许向HCA适配器280A处的通信
队列的用户模式数据传送。
InfiniBand应用210A首先呼叫用户模式InfiniBand库220A,用户模式
InfiniBand库220A通过寄存数据库中的规定配置信息知道用户模式库230A。
在一种意义上,用户模式库230可认为是用户模式InfiniBand库220A的延展。
用户模式库230A为其支持的例程输出众所周知的应用程序接口(“API”)
(以分配表的形式)。在一实施例中,用户模式库230A实施为动态链路库
(DLL)。尽管不一定需要,InfiniBand的优点多是通过由用户模式库230A
提供的内核旁路IO特点实现的。
InfiniBand库220A表示析取的通用HCA设备接口。用户模式库230A的
厂家专用库232A将InfiniBand库220A的析取映射到HCA适配器280A的硬
件专用操作。如下面较详细的描述,同一厂家专用库作为微端口驱动器240A
的厂家专用库242A出现。因此,厂家专用库232A和厂家专用库242A表示
(至少部分地)过程模式独立(PMI)HCA IO接入库。
用户模式InfiniBand库220A也通过Hcaport 250A和微端口驱动器240A
接入HCA适配器280A。除厂家专用库242A外,微端口驱动器240A还包括
内核模式适配器控制和帮助程序函数244A和类代理246A。下面结合图2B提
供关于Hcaport 250A、微端口驱动器240A和HCA适配器280A间关系的其他
细节。Hcaport 250A也允许从其它内核模式客户270A(例如:使用Hcaport
客户API的RNDIS微端口)接入HCA适配器280A。Hcaport 250A启动各种
类管理子系统,包括子网管理器262A、连接管理器264A和性能管理器266A。
接下来转到图2B,Hcaport 250B提供析取的通用HCA设备接口。与用户
模式库230A的厂家专用库232A相似,微端口驱动器240B和厂家专用库242B
将InfiniBand库250B的析取映射到HCA适配器280B的硬件专用操作。如上
所示,同一厂家专用PMI库作为微端口驱动器240B的厂家专用库242B和用
户模式库230A的厂家专用库232A出现。(内核专用例程在内核模式适配器
控制和帮助程序函数244B中实现。)另外,Hcaport 250B为微端口驱动器的
类代理246B准备一个环境。
Hcaport 250B建立一操作环境,该操作环境向微端口240B提供操作系统
功能,诸如存储分布、寄存接入及端口/寄存器接入。不允许对操作系统的直
接呼叫,以使微端口开发商不受某些设计复杂性的影响,从而促进厂家专用
库232A和厂家专用库242B的单一源的目标。Hcaport 250B也串行化微端口
驱动器240B要求,这样,微端口开发商不必解决串行化问题。从操作系统的
非页面存储池分配存储资源。
值得注意的是,Hcaport 250B支持向InfiniBand客户的InfiniBand资源的
管理。与之形成对比的是,微端口驱动器240B不提供InfiniBand资源管理,
而是用作Hcaport的管理方法的延伸。微端口驱动器240B使Hcaport 250B对
HCA适配器280B的厂家专用操作语义屏蔽。微端口信息结构向Hcaport 250B
提供微端口控制/帮助程序和PMI IO接入回叫例程。
图2C示出InfiniBand应用210C通过用户模式InfiniBand库220C和或者
有厂家专用库232C的用户模式库230C或者有适配器帮助程序函数244C的
Hcaport 250C和微端口240C而接入HCA适配器280C。适配器控制和帮助程
序函数解决两个要求。第一要求是通常驱动器意义的HCA适配器280C的通
用控制和操作,诸如启动和停止微端口驱动器、IO总线资源分配和管理(IO、
存储和中断)、处理即插即用命令及处理电源管理命令。
第二要求涉及支持内核模式帮助程序函数。它们是由微端口执行以提供有
序通信资源管理的优先函数,包括:(i)保护域管理,诸如保护域的生成
和破坏及按需分配保护域;(ii)翻译和保护表管理,诸如翻译和保护表的
生成和破坏以及表目控制和操纵,包括存储区和存储窗口的生成和破坏;(iii)
事件请求管理,诸如事件队列的生成和破坏及对来自事件队列的事件的处理;
(iv)完成队列管理,诸如完成队列的生成和破坏及完成队列对HCA适配器
的绑定和非绑定;(v)工作队列管理,诸如工作队列的生成和破坏、支持
对工作队列属性编程及工作队列对HCA适配器的绑定;(vi)地址矢量表管
理,诸如地址矢量表的生成和破坏(在一些情况下这可以是保护域管理功能
的部分);及(vii)多播支持,诸如多播组的生成和破坏。
过程模式独立库(例如:厂家专用库232C和厂家专用库242B)静态地连
接微端口240C和用户模式库230C。如上所述,通过使该库成为共有组件,
可减少HCA微端口的开发、维护和测试。通常,PMI库的函数有一或更多传
送给它们的上下文专用延伸区。根据处理上下文,为一共同命名的函数呼叫
或映射相应的用户模式或内核模式实现。
PMI厂家专用库提供3个通用类型的功能:(i)保护域/完成域/工作域
(PD/CQ/WQ)生成和破坏的用户模式侧,(ii)向分配给用户模式处理的队
列对寄存器张贴IQ请求,及(iii)经绑定请求的存储窗口操纵。PD/CQ/WQ
生成和破坏支持的PMI例程运行于两步骤过程。第一步骤获取微端口在内核
模式下分配队列对所需资源。第二步骤检查结果,且如果请求失败,释放分
配给过程的资源。IO请求直接操纵分配的队列对。几乎不对IO请求和存储窗
口操纵强加体系结构,因为高带宽和低等待时间倾向于是重要因素。
图3根据本发明示出支持共有用户模式和内核模式操作的单个实现的方
法的示例动作。尽管这些动作是以特定顺序描述或拥有的,本发明不必局限
于任一特定排序或动作组合。支持相对硬件适配器为内核模式处理和用户模
式处理所共有的一或更多操作的单个实现包括定义(310)为内核模式处理和
用户模式处理所共有的至少一操作的共有接口的动作;提供(320)对应该名
称的所述至少一操作的内核模式实现的动作;提供(330)对应该名称的所述
至少一操作的用户模式实现的动作;提供(340)为内核模式处理所特有的一
或更多操作的内核模式实现;及映射(350)一或更多共有接口呼叫到内核模
式实现(如果给定过程是内核模式过程)和到用户模式实现(如果给定过程
是用户模式过程)。
如下面更详细的讨论,本发明的实施例包括一或更多专用和/或一或更多包
括各种计算机硬件的通用计算机。本发明范围内的实施例还包括计算机可读
媒介,所述计算机可读媒介传送或有存储于其上的计算机可执行指令或数据
结构。这样的计算机可读媒介可以是可由通用或专用计算机接入的可用媒介。
作为示例而非限制,这样的计算机可读媒介包括RAM、ROM、EEPROM、
CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或可用来以计
算机可执行指令或数据结构形式传送或存储所需程序码方式且可由通用或专
用计算机接入的任一其他媒介。
当信息通过网络或另一通信连接(有线的、无线的或有线无线组合的)传
送或提供给计算机,计算机适当地将该连接视作计算机可读媒介。这样,任
一这样的连接适当地称为计算机可读媒介。以上的组合也应包括在计算机可
读媒介的范围内。计算机可执行指令包括,例如,使通用计算机、专用计算
机或专用处理设备执行某一功能或某一组功能的指令和数据。
图4及以下的讨论提供对实施本发明的合适的计算环境的简要的大体的
描述。尽管不要求,将在由计算机在网络环境中执行的计算机可执行指令(诸
如程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任
务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。计算
机可执行指令、相关数据结构和程序模块表示用来执行此处所揭示的方法的
步骤的程序码方式的例子。这样的可执行指令或相关数据结构的特定序列表
示用来实现这样的步骤中所描述的功能的相应动作的例子。
业内人士知道,本发明可实现于有多种计算机系统配置的网络计算环境
中,包括个人电脑、手持设备、多处理器系统、基于微处理器或可编程消费
电子、网络PC、小型计算机、大型计算机等等。本发明也可执行于分布计算
环境,在分布计算环境中任务由通过通信网络链接(通过有线链路、无线链
路或有线无线链路的组合)的本地和远程处理设备执行。在分布计算环境中,
程序模块可位于本地和远程内存存储设备两者中。
参考图4,用来实现本发明的示例系统包括通常计算机420形式的通用计
算设备(包括处理单元421、系统内存422和将包括系统内存422的各种系统
组件耦合到处理单元421的系统总线423)。系统总线423是包括内存总线或
内存控制器的数个类型的总线结构中的任何一个、周围总线和使用多种总线
体系结构中的任一种的本地总线。系统存储器包括只读存储器(ROM)424
和随机存取存储器(RAM)425。基本输入输出系统(BIOS)426存储于ROM424
中,基本输入输出系统(BIOS)426含有帮助在计算机420的元件间传送信
息(诸如在启动期间)的基本例程。
计算机420也可包括用来读自和写到磁盘439的磁硬盘驱动器427、用来
读自和写到移动磁盘429的磁盘驱动器428和用来读自和写到移动光盘431(诸
如CD-ROM或其他光媒介)的光盘驱动器430。磁硬盘驱动器427、磁盘驱动
器428和光盘驱动器430分别通过硬盘驱动器接口432、磁盘驱动器接口433
和光驱动器接口434连接系统总线423。驱动器及其相关计算机可读媒介向计
算机420提供计算机可执行指令、数据结构、程序模块和其他数据的非易变
存储。尽管此处描述的示例环境使用磁硬盘439、移动磁盘429和移动光盘
431,可使用用来存储数据的其它类型的计算机可读媒介,包括磁带、闪存卡、
数字多用途磁盘、伯努利盒式磁盘、RAM、ROM等等。
包括一或更多程序模块的程序码方式存储于硬盘439、磁盘429、光盘431、
ROM424或RAM425之上,包括操作系统435、一或更多应用程序436、其他
程序模块437和程序数据438。用户通过键盘440、指示器442或其他输入设
备(未示出),诸如麦克风、控制杆、游戏填充器、卫星天线、扫描仪等等
向计算机420输入命令和信息。这些和其他输入设备时常通过耦合系统总线423
的串行口接口446连接处理单元421。或者,输入设备由其他接口连接,诸如
并行口、游戏端口或通用串行总线(USB)。监视器447或另一显示设备通过
接口(诸如视频适配器448)也连接系统总线423。除监视器外,个人电脑通
常包括其他周围输出设备(未示出),诸如扬声器和打印机。
计算机420工作于使用与一或更多远程计算机(诸如远程计算机449a和
449b)的逻辑连接的联网环境中。远程计算机449a和449b可以各是另一个人
电脑、服务器、路由器、网络PC、对等设备或其他共有网络节点,且通常包
括上面相对计算机420描述的元件中的许多或全部,尽管图4只说明内存存
储设备450a和450b及其相关应用程序436a和436b。图4描述的逻辑连接包
括局域网(LAN)451和广域网(WAN)452,此处提到它们是示例而非限制。
这样的联网环境在办公室范围或企业范围的计算机网、内联网和因特网中是
常见的。
当用于LAN联网环境中时,计算机420通过网络接口或适配器453连接
本地网451。当用于WAN联网环境中时,计算机420包括调制解调器454、
无线链路或其他通过广域网452建立通信的方式(诸如因特网)。调制解调
器454(内置或外置)通过串行口接口446连接系统总线423。在联网环境中,
相对计算机420描述的程序模块或其部分,存储于远程内存存储设备。可以
理解的是,所示网络连接是示例性的,可使用其他通过广域网452建立通信
的方式。
可不脱离本发明的精神或基本特点而以其他特别形式实施本发明。所述实
施例在所有方面都只是示例性的而非限制性的。因此,本发明的范围由所附
权力要求而非前述表示。所有在这些权利要求的等价物的意义和范围内的变
化都包括在其范围内。