改进系统DMA映射同时实质上减少存储器分段的系统和方法技术方案

技术编号:2838101 阅读:263 留言:0更新日期:2012-04-11 18:40
一种方法、系统和计算机程序产品,用于消除在按照设备驱动程序的IO  DMA请求来搜索邻接存储器空间时产生的等待。在操作系统(OS)代码内提供三个新应用编程接口(API),该应用编程接口允许一个或多个设备驱动程序:(1)在IPL期间从OS预先请求和预先分配IO  DMA地址范围并且维护该地址的控制;(2)将系统(虚拟/物理)地址范围映射到具体预先分配的IO  DMA地址范围;以及(3)在不再需要该空间时将预先分配的IO  DMA地址空间释放回到内核。利用这些API实现了设备驱动程序所维护的高级IO  DMA地址映射技术,而指定/分配的IO  DMA地址空间不再分段,并且实质上减少/消除了完成IO  DMA映射的等待。

【技术实现步骤摘要】

本专利技术一般地涉及计算机系统,特别地涉及计算机系统中的存储器分配。本专利技术更特别地涉及一种用于提供改进的DMA映射的方法、系统和计算机程序产品。
技术介绍
计算机系统包括应要求动态地分配给执行应用程序和输入/输出(IO)设备(或者关联适配器)的有限物理存储器资源。经由转换成如下真实(或者物理)地址的虚拟地址来访问存储器,该真实(或者物理)地址对应于存储器内的物理位置。完成这些分配和/或存储器地址空间访问的一种方法是经由从IO适配器发出的直接存储器访问(DMA)操作。在当今的许多计算机系统中,系统的物理存储器地址空间通常大于IO地址空间。利用这些计算机系统,为便于一个或多个IO适配器访问整个系统物理存储器,要求一些转换机制。例如,32位IO地址子系统要求某种存储器映射以便允许IO适配器访问大于4GB的系统存储器地址。目前,多数操作系统(OS)将(存储器中的)最大页面大小设置为4K字节(4K),因此每个映射页面是4K字节。下面的表1图示了地址映射表的例子,该例子示出了就给定的4K页面基地址而言在系统存储器地址与IO DMA(直接存储器访问)之间的转换。表1 为了满足高性能IO适配器的新要求,该数据缓冲映射大小需要大于4K字节,例如具体来说是利用以太网巨型框架和大型TCP分段卸载(TSO)发送。为了实现这一较大数据缓冲映射大小的支持,OS的开发者已经改进了OS的映射方法以便允许连续IO DMA地址的大于4K字节的地址映射。图1是图示了由设备驱动程序用来将系统物理地址映射到IODMA地址的现有技术方法的流程图。所示方法描述了AIX OS功能。然而,所呈现的流程图是作为一个例子而提供的,并且也可以应用于其它OS。如图所示,该过程始于在其中初始化计算机系统(或者IO适配器)的块102。在IO适配器的初始化过程中,设备驱动程序进行系统调用以便登记驱动程序进行操作所需要的IO地址空间的大小,如在块104处所述。D_MAP_INIT是这一系统调用的例子。接着在块106处,设备驱动程序调用存储器分配例程以便分配系统存储器(缓冲器)。然后,设备驱动程序在块108处调用系统映射例程以便将系统存储器映射到IO DMA地址。这一系统调用的例子是D_MAP_PAGE/D_MAP_LIST。一旦进行这一调用,设备驱动程序监视何时不再需要IO DMA地址,如在判决块110处所示。如果仍然需要IO DMA地址,则适配器维护该空间,如在块116处所示。然而,当不再需要IO DMA地址时,设备驱动程序调用内核解映射例程以便将该IO DMA地址返回到内核,如在块112处所示。然后,设备驱动程序/OS将分配的存储器释放回到内核,如在块114处所示。完成将所分配的存储器返回到内核的这些系统调用的例子是D_UNMAP_PAGE/D_UNMAP_LIST和D_MAP_CLEAR。当随着时间推移越来越多的适配器请求存储器地址空间时,IODMA地址空间变得分段越来越多。当这一分段超过阈值点时,由于大型IO DMA空间的多个部分被指定给DMA请求,所以可用空间的邻接性降低,而且变得更加难于为指定给新DMA请求而找到邻接空间。此外,随着分段水平增加,从OS获得(为邻接的地址)分配IODMA地址的等待也会增加。这一增加的等待可能造成可度量的处理延迟,并且由此对整体系统性能具有实质上的负面影响。尽管这些延迟在当今多数计算机系统的操作中司空见惯,但是它们是所不希望的。因此,系统在一开始以相对快的速度执行DMA地址分配,而在操作一段时间之后最终放松实质上的性能速度(即要求增加的延迟)。因此这些系统表现得没有在系统初始启动时那样好。就上述以及其它类型的常规DMA映射(例如使用应用编程接口(API))而言,存在若干局限。在这些局限之中的是下列各项(1)尽管驱动程序能够在IPL时间期间预先登记驱动程序所需要的I/ODMA地址的大小,但是预先登记并不保证地址映射操作一直成功。也就是说,如果存储器空间耗尽驱动程序所请求的邻接地址空间的数量则映射可能失败;以及(2)系统运行时间越长,IO DMA地址空间将变得分段越多,而为IO DMA映射获得大型邻接地址空间所要求的时间(即操作等待)越长。如上所言,这一增加的等待负面地影响了整体系统性能。
技术实现思路
公开了一种方法、系统和计算机程序产品,用于当按照设备驱动程序的IO DMA请求对邻接存储器空间的搜索出现在初始程序加载器(IPL)之后的某一时刻时,通过消除在该搜索中的等待来增加计算机系统中IO DMA操作的效率。在操作系统(OS)代码内提供三个新应用编程接口(API),该应用编程接口允许一个或多个设备驱动程序(1)在IPL期间从OS预先请求和预先分配IO DMA地址范围并且维护该地址的控制;(2)将系统(虚拟/物理)地址范围映射到具体预先分配的IO DMA地址范围;以及,(3)在不再需要空间时将预先分配的IO DMA地址空间释放回到内核。利用这些API实现了设备驱动程序所维护的高级IO DMA地址映射技术,而指定/分配的IO DMA地址空间不再分段,并且实质上减少/消除了完成IO DMA映射的等待。本专利技术的上述以及附加目的、特征和优点将在以下具体书面描述中变得明显。附图说明通过参照在结合附图时阅读的对说明性实施例的以下具体描述,将最佳地理解本专利技术本身及其最佳实施方式、更多目的和优点,在附图中图1是根据现有技术分配DMA地址空间的过程的流程图;图2是图示了根据本专利技术优选实施例的本专利技术可以实施于其中的数据处理系统的框图;以及图3是根据本专利技术一个实施例利用API来分配DMA地址空间的过程的流程图。具体实施例方式本专利技术提供了一种方法、系统和计算机程序产品,用于当按照设备驱动程序的IO DMA请求对邻接存储器空间的搜索出现在初始程序加载器(IPL)之后的某一时刻时,通过消除在该搜索中的等待来增加计算机系统中IO DMA操作的效率。在操作系统(OS)代码内提供三个新应用编程接口(API),该应用编程接口允许一个或多个设备驱动程序(1)在IPL期间从OS预先请求和预先分配IO DMA地址范围并且维护该地址的控制;(2)将系统(虚拟/物理)地址范围映射到具体预先分配的IO DMA地址范围;以及,(3)在不再需要空间时将预先分配的IO DMA地址空间释放回到内核。利用这些API实现了设备驱动程序所维护的高级IO DMA地址映射技术,而指定/分配的IODMA地址空间不再分段,并且实质上减少/消除了完成IO DMA映射的等待。现在参照图2,示出了本专利技术可以实施于其中的数据处理系统的框图。数据处理系统200是计算机的例子,可以实施本专利技术的过程的代码或者指令位于该计算机中。数据处理系统200利用外围组件互连(PCI)本地总线架构。虽然所示例子利用PCI总线,但是可以使用其它总线架构,比如加速图形端口(AGP)和工业标准架构(ISA)。处理器202和主存储器204通过PCI桥接器208连接到PC本地总线206。PCI桥接器208也可以包括用于处理器202的集成存储器控制器和高速缓存存储器。通向PCI本地总线206的附加连接可以通过直接组件连接或者通过附加板来实现。在所示例子中,局域网(LAN)适配器210、小型计算机系统接本文档来自技高网
...

【技术保护点】
一种数据处理系统,包括:包括物理地址空间的存储器;直接存储器访问(DMA)控制器;操作系统(OS)内核,控制对所述存储器的访问并且与所述DMA控制器通信以便完成虚拟到真实的存储器访问;与所述OS相关联的设备驱 动程序,所述设备驱动程序包括用于实施应用编程接口(API)的逻辑,所述API使得所述设备驱动程序能够在初始程序起动(IPL)期间将具体的邻接IODMA地址空间分配给适配器/IO设备,其中所分配的IODMA地址空间随后用来执行与那一I O设备相关联的DMA映射操作,而在所述IO设备要求邻接DMA地址空间时不引起搜索所述邻接DMA地址空间的延迟。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:蓝燕虹熊文许健平D米歇尔
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1