Dma信道的制作方法

文档序号:9476220阅读:386来源:国知局
Dma信道的制作方法
【专利说明】DMA信道
[0001]背景
[0002]背景和相关技术
[0003]计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常涉及工作、休闲、保健、运输、娱乐、家政管理等。
[0004]计算机通常与硬件设备一起使用。例如,计算机可以将网卡连接到通信总线,并且可以使用网卡来向其他计算机系统传递数据。为了使用硬件设备,计算机通常将具有启用计算机上的应用与硬件设备之间的通信的驱动程序。对于需要低等待时间和高性能的设备,计算机通常将在内核模式中实现驱动程序以允许与计算机处理器和存储器的更紧密集成。
[0005]—些独特的操作系统可能需要避免内核模式转移并且宁可在类型安全环境中工作。这些操作系统被实现在面向消息传递的平台上,其中不同的应用和进程可以通过彼此传递消息来通信,这包括复制去往和来自各存储器位置的数据。
[0006]由于在从应用向硬件驱动程序传递数据或反向传递时通常要作出的数据复制,在面向消息传递的平台中构建高性能硬件设备栈(如网络栈)通常是困难的。
[0007]在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
[0008]简要概述
[0009]在此所示的一个实施例包括可以在计算环境中实施的方法。该方法包括用于在应用和硬件设备之间进行通信的动作。该方法包括应用使用存储器的应用视图来将数据写入主物理存储器。该方法还包括将物理存储器中的数据映射到可由硬件驱动程序使用的硬件驱动程序视图,而无需将数据复制到不同的物理存储位置。该方法还包括将数据映射到可由硬件设备访问的硬件可访问视图,而无需将数据复制到不同的物理存储位置。
[0010]在此所示的另一实施例包括可以在计算环境中实施的方法。该方法包括用于在应用和硬件设备之间进行通信的动作。该方法包括硬件设备使用存储器的硬件视图来将数据写入主物理存储器。该方法还包括将物理存储器中的数据映射到可由硬件驱动程序使用的硬件驱动程序视图,而无需将数据复制到不同的物理存储位置。该方法还包括将数据映射到可由应用访问的应用可访问视图,而无需将数据复制到不同的物理存储位置。
[0011]提供本
【发明内容】
以便以简化形式介绍将在以下详细描述中进一步描述的一些概念的选集。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0012]将在以下的描述中阐述另外的特征和优点,并且部分特征和优点可从该描述中显而易见,或者可从本文教导的实践中获知。本发明的特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现并获取。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
[0013]附图简述
[0014]为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施例来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和详情来描述并解释,在附图中:
[0015]图1解说连接到主机系统的硬件设备的实现;
[0016]图2解说应用与硬件设备之间的通信的方法;以及
[0017]图3解说应用与硬件设备之间的通信的另一方法。
[0018]详细描述
[0019]本文描述的一些实施例可以使用公共物理存储器段来实现进程间通信(IPC)和直接存储器访问(DMA)信道,使得硬件通信可以用DMA式信道的速度和效率来实现,同时能够被用在用于消息传递平台的IPC信道式通信中。因而,各实施例可以实现将正常IPC信道的架构清洁度与具有硬件设备的DMA的高性能的消息传递集成在一起的DMA信道。各实施例还可实现简化的流控制(反压)来防止生产过剩并消除对在软件或硬件栈中的下游队列中的数据进行重排队列的需求。
[0020]现参考图1,示出了一个示例。图1示出主机102。主机102包括一个或多个应用,如该示例,应用104。主机102还连接到硬件设备106。在图1所示的示例中,硬件设备106被示为网络接口卡(NIC)。硬件设备106可以使用通信总线(如PC1、SCS1、USB、SATA、InfiniBand (无限带宽)、I2C,等等)与主机102互连。
[0021]通常,可以使用设备驱动程序108来实现对硬件设备106的控制。设备驱动程序108通常将被用来向硬件设备106传送净荷数据和控制数据。例如,应用104可能需要使用NIC硬件设备106将数据从主机102传送到不同计算系统上的应用。打算从应用104传送到另一系统上的应用的数据是净荷数据110。控制数据112被用来控制硬件设备106。例如,控制数据112可以向NIC硬件设备106指示它应当向另一系统发送另一净荷数据帧或它应当从另一系统接收另一净荷数据帧。
[0022]本文描述的一些实施例能够通过使用系统存储器114中的数据的映射来限制净荷数据110和控制数据112两者的数据复制的量。具体而言,应用104可以使用对存储器114的应用视图进行映射的映射来将数据写入存储器114并从中读出数据。此外,驱动程序108可以通过数据存储器被映射到硬件驱动程序视图来读取并将数据添加到存储器114。此外,硬件设备106还可使用存储器的硬件视图从存储器114读取数据并向其写入数据。
[0023]值得注意的是,通过使用这样的安排,若干增强特征可被实现。现在将解说这些增强特征中的一些。
[0024]—个特征包括由存储器114支持的正常IPC信道的环缓冲区的集成,存储器114可针对上述用于设备106的DMA读操作的各视图被提前映射。这可消除对各单独转移请求的从主机102到设备106的昂贵映射和解除映射的需求。
[0025]各实施例还可充分利用以下事实:小转移的目的地是IPC信道本身,这可通过映射存储器114的驱动程序视图和硬件视图来被映射一次,它对许多独立的转移保持映射。例如,应用104可以使用存储器的应用视图将大量净荷数据写入存储器114。应用104可以调用驱动程序108来向驱动程序指示驱动程序108应当使用硬件设备106来将净荷数据110转移到不同系统116。驱动程序108可以将把净荷数据110的很大一部分或全部转移到不同系统116所需的所有数据帧转移命令(即,控制数据112)写入存储器114。驱动程序108随后可以发出非常小的命令以指向数据帧命令(即,控制数据112)中的每一个。例如,控制数据可被写入存储器114的已知块118。随后,为了发出控制命令,驱动程序108只需引用存储器的基地址120及偏移122-0(它在基地址处是O偏移)和122-n所示的偏移。因而,驱动程序108不必发出完整数据帧命令或命令集,而是可简单地发出地址和偏移,从而使控制数据转移非常高效。
[0026]因而,各实施例可充分利用一些IPC信道实现的句柄转移语义来允许生产者用特定类型的IPC信道消息来筹划(stage)设备驱动程序108内的共享存储器的一大块108,并随后在将来的多个时刻引用该筹划的存储器的较小范围来用于设备106的DMA读操作。这些DMA操作以相同方式(通过在信道中发送IPC消息)来触发,但由目标不同地处理以引用共享存储器的先前筹划的块118内的正确位置(如通过指示基地址和偏移)来用于DMA操作,而非保持该消息的IPC信道本身的那部分。各实施例将这一功能应用于任意生产者进程和目标设备驱动程序108进程之间。净效果是在进程之间转移的更少句柄以及压制存储器的更少映射/解除映射调用,以使其能访问来用于DMA操作。
[0027]各实施例可以使用本发明的各特征通过将消息数据留在信道中直至DMA操作下游完成,来容易地实现对许多信道生产者的流控制(限制工作的过量生产)。例如,各实施例可以构建在表示两个进程之间的单向IPC信道的正常共享存储器环缓冲区上。正常共享存储器环缓冲区使用这一机制来复制表示从一个进程到另一进程的指令或数据的小消息。相关事实是:流控制是通过生产者证明以下事实来实现的:信道充满(或消费者指示它不能拿更多新消息)且这使得生产者暂停其新消息的生产。在消费者引退时(完成处理信道中的较旧消息)用信号将该事实通知给生产者,生产者通过将环缓冲区的新释放区用于新消息来恢复生产。各实施例通过安排要由存储器114支持的IPC信道来扩展这一机制,其中存储器114(使用上述各种视图)被映射来用于一些设备106的DMA读操作。通常,信道的目标端点是该设备106的设备驱动程序108进程。各实施例还可实现经扩展的API以用于消费来自信道的消息,以允许与引退(内容从信道移除,释放空间以供生产者重用)分开地窥视它们。在被窥视和引退之间,设备驱动程序108将安排该硬件直接从信道执行DMA读操作(从而避免复制),并且在从信道引退消息的内容并将生产者(例如,应用104)解除阻塞以将该信道的区域重用于新消息之前,将等待直至设备106发信号通知这一操作已完成。
[0028]可被实现的另一增强包括消除了中间队列或数据缓冲区,它们对等待时间、存储器使用以及潜在的第二级瞬态系统动态性是有害的。相反,通过使用各种视图,包括应用视图、驱动程序视图、以及设备视图,数据可在最小或没有数据复制的情况下被转移、高速缓存、以及排入队列。
[0029]各实施例可以实现可被容易地引入相对源信道和目标设备106之间的复用器。这允许来自相对独立生产者进程(如各不同应用)的对目标设备106的公平共享访问;每一生产者进程连接到它们自己的去往目标设备驱动程序108进程的信道。
[0030]以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序,否则不需要特定次序。
[0031]现在参考图2,示出了方法200。方法200可以在计算环境中实施,且包括用于在应用与硬件设备之间进行通信的动作。该方法包括应用使用存储器的应用视图来将数据写入主物理存储器(动作202)。例如,如图1所示,应用104可以使用存储器114的经映射视图写入存储器114。
[0032]方法200还包括将物理存储器中的数据映射到可由硬件驱动程序使用的硬件驱动程序视图,而无需将数据复制到不同的物理存储位置(动作204)。例如,存储器114的视图可被创建以用于与驱动程序108—起使用。该视图允许驱动程序访问数据并向存储器114写入控制数据。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1