使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法

文档序号:6655942阅读:339来源:国知局
专利名称:使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
技术领域
本发明的一个或多个实施例一般涉及集成电路和计算机系统设计领域。特别地,本发明的一个或多个实施例涉及使用集成直接存储器访问(DMA)引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法。
背景技术
RAMDISK是一种存储器管理技术,其中在程序控制下,将一部分易失性系统存储器用作大容量存储设备,这里称作“易失性磁盘驱动器(VDD)存储器”。对RAMDISK的操作系统(OS)文件操作比对传统硬盘的OS操作要快很多。因此,通过将最常用的程序和文件放置在为RAMDISK分配的系统存储器的一部分之内,RAMDISK可以显著地提高系统性能。尽管一旦关闭系统,RAMDISK就不会保留所存储的信息,但是RAMDISK存储器管理技术对于以常规OS文件格式存储的数据的临时存储和缓存是非常有用的。典型地,将RAMDISK用于web/文件服务器以便缓存海量媒体存储池中的常用文件。
传统上,用于实现RAMDISK的驱动器完全以软件实现。因此,当程序或进程想要读/写RAMDISK中的文件时,将调用RAMDISK驱动器。这种驱动器首先识别所请求的文件是如何映射到保留给RAMDISK的系统存储器位置的。一旦识别出,驱动器将向RAMDISK的存储器传输来自请求进程的存储器的数据,或从RAMDISK的存储器向请求进程的存储器传输数据。通常,这是在CPU的帮助下执行的,其中驱动器指示CPU从系统存储器的RAMDISK部分请求数据。
然而,需要CPU(中央处理单元)为RAMDISK驱动器既管理数据传输又管理文件管理功能。尽管RAMDISK存储器管理技术比使用传统存储驱动器快许多,但是RAMDISK驱动器会利用大量CPU周期以在RAMDISK位置和应用程序位置之间传输数据。此外,为超出4G字节(GB)的存储器(32-位地址)实现RAMDISK,需要RAMDISK驱动器使用CPU的页地址扩展(PAE)模式。然而,PAE模式自身不仅对于RAMDISK驱动器,而且对于所有运行于系统之内的进程都会引入额外的性能损失。


本发明的各种实施例将通过附图中的示例说明,而不是通过限制的方式说明,其中图1是说明根据一个实施例的计算机系统的框图,该计算机系统包含具有集成DMA引擎的DMA控制器以提供对虚拟磁盘驱动器(VDD)的高性能访问;图2是根据一个实施例进一步说明图1的DMA控制器的框图;图3是根据一个实施例说明DMA寄存器和链描述符映射的框图;图4是根据一个实施例说明DMA描述符集合链表的框图,该链表用于使用DMA访问,对虚拟磁盘驱动器之内的数据块进行访问;图5是根据一个实施例说明对VDD访问请求的检测以及使用图1的DMA控制器通过直接存储器访问的VDD访问请求的后续操作的框图;图6是说明用于使用已公开的技术对设计进行仿真、模拟以及制造的各种设计表示或格式的框图。
具体实施例方式
将描述使用集成直接存储器访问(DMA)引擎进行高性能易失性磁盘驱动(VDD)存储器访问的方法和装置。在一个实施例中,方法包括检测对易失性系统存储器中实现的VDD存储器的数据访问请求。一旦检测到数据访问请求,VDD驱动器会发出DMA数据请求以执行来自VDD的数据访问请求。因此,在一个实施例中,将数据向在易失性系统存储器的所分配的部分之内实现的VDD存储器传输以及从其传输数据的工作被分担给DMA引擎,例如存储器控制中心(MCH)之内的集成DMA引擎。
在以下描述中,提出了很多诸如逻辑实现、信号和总线的型号和名称、系统部件的类型和相互关系以及逻辑划分/集成选择的具体细节以便于更彻底的理解。但是,本领域的技术人员应当知道,本发明可以不用这些具体细节来实现。在其它实例中,没有详细显示控制结构以及门级电路以避免使本发明难以理解。使用所包含的描述,本领域的那些普通技术人员将能够在不需大量试验的情况下实现正确的逻辑电路。
在以下描述中,将某些术语用于描述本发明的特征。例如,术语“逻辑”表示用于实现一个或多个功能的硬件和/或软件。比如,“硬件”的例子包括但不限于集成电路、有限状态机乃至组合逻辑。集成电路可以采取诸如微处理器、专用集成电路、数字信号处理器、微控制器等等的处理器的形式。
“软件”的例子包括应用程序、小程序、例程乃至指令序列形式的可执行代码。在一个实施例中,一件产品包括机器或其上存储有指令的计算机可读介质,该指令对计算机(或其它电子设备)进行编程以执行根据一个实施例的处理。计算机或机器可读介质包括但不局限于可编程电子电路、包含易失性存储器(例如,随机访问存储器,等)和/或非易失性存储器(例如,任何种类的只读存储器“ROM”、闪存)在内的半导体存储设备、软盘、光盘(例如,高密度盘或者数字视频光盘“DVD”)、硬盘、磁带等等。
系统图1是说明根据一个实施例的包含直接存储器访问(DMA)控制器200以提供对VDD存储器250的高性能访问的计算机系统100的框图。典型地,计算机系统100包括用于在处理器(CPU)102和芯片组130之间传输信息的处理器系统总线(前端总线(FSB))104。如这里所述,术语“芯片组”用于总体描述与CPU 102连接以执行所希望的系统功能的各种设备。
典型地,芯片组130可以包括连接到图形控制器150的存储器控制中心110(MCH)。在一可选实施例中,图形控制器150集成到MCH中,因此在一个实施例中,MCH 110用作集成图形MCH(GMCH)。典型地,MCH 110还通过系统存储器总线142连接到主存储器140。在一个实施例中,主存储器140可以包括但不限于随机访问存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、双数据率(DDR)SDRAM(DDR-SDRAM)、RambusDRAM(RDRAM)或者任何能够支持高速临时数据存储的设备。
在一个实施例中,MCH 110集成在CPU 102之内以使得能够在CPU 102和主存储器140之间进行直接连接。在一个实施例中,MCH110可以包括外设部件互连(PCI)PCI-Express(PCI-Ex)根端口180(180-1,...180-N),以便通过PCI-Ex连接182(182-1,...,182-N)将PCI-Ex终端190(190-1,...190-N)连接到MCH 110。典型地,PCI-Ex连接182可以提供点到点连接,比如由“PCI Express Base Specification1.0a”(勘误2003年10月7日)定义,以允许外部终端设备190(190-1,...,190-N)和MCH 110之间的双向通信。
作为进一步的说明,芯片组130包括输入输出(I/O)控制器中心(ICH)120。典型地,ICH 120可以包括通用串行总线(USB)连接或互连162以将一个或多个USB槽160连接到ICH 120。另外,串行高级技术附加装置(SATA)172可以将硬盘驱动设备(HDD)170连接到ICH 120。在一个实施例中,ICH 120可以包括传统的PCI/PCIx连接166以将一个或多个PCI/PCIx槽164连接到ICH 120。在一个实施例中,系统BIOS 106初始化计算机系统100。
再次参考图1,在一个实施例中,计算机系统100包括VDD驱动器260。在操作中,VDD驱动器260负责预留和分配一部分易失性系统存储器140,以用作VDD存储器250。在一个实施例中,主存储器140的分配给VDD存储器250的部分是对于计算机系统100的核心操作系统(OS)隐蔽的非可交换存储器。如这里所述,VDD存储器250或者可以称为RAMDISK,它是一种存储器管理技术,用于在程序控制下分配易失性系统存储器的一部分以用作大容量存储设备。
在一个实施例中,VDD驱动器260利用DMA控制器200执行VDD存储器之内的文件操作。传统上,使用已编程的传输来执行由设备驱动器(例如与连接到芯片组(130)的外围设备相关的软件)进行的主存储器访问,其中CPU发出总线事务以为外围设备起动从存储器读数据的操作或向存储器写数据的操作。相反地,DMA是由先进的体系结构提供的能力,它允许在不涉及CPU的情况下将数据在外围设备和主存储器之间直接传输。因此,系统的CPU免于参与数据传输,因此加快了整个计算机的操作。在一个实施例中,如图2所示,DMA控制器200提供计算机系统100之内的DMA能力。
在一个实施例中,DMA控制器包括集成DMA引擎210,用于提供多个DMA通道214(214-1,...214-N)。在一个实施例中,DMA控制器200提供四个DMA通道,每个都可以独立地用于在系统存储器140之内或从系统存储器140向各种连接到芯片组130的外围设备传输数据。在一个实施例中,如以下进一步详细描述的,可以通过写入主存储器140的链描述符和存储器映射内部寄存器组的组合从CPU 102访问DMA通道编程接口,如图3和4所示。
在一个实施例中,DMA通道214之间的仲裁以两阶段出现。典型地,每个DMA通道214具有独立的对于DMA控制器200内部的仲裁器(DMA仲裁器212)的总线请求/许可对。作为进一步说明,DMA控制器200具有对于MCH 110中的主仲裁器(MCH仲裁器220)的单个请求/许可对。在一个实施例中,DMA仲裁器212使用严格轮询策略以准许DMA通道和请求设备对主存储器140的访问。在一个实施例中,DMA仲裁器212可以包括在任何给定时间对于一个DMA通道可选的高优先级指示。因此,一组竞争的DMA通道在正常操作过程中实现均衡的带宽性能。
再次参考图1,如这里所述,每个存在于连接到芯片组130的总线上的外围设备或I/O卡在这里被称为“总线代理”。一般地将总线代理分成均衡代理和优先代理,从而当与均衡代理竞争总线占用权时,优先代理被给予占用权。需要这样的仲裁,因为通常不允许总线代理同时驱动总线发出事务。与计算机系统100的总线代理相关的设备驱动器可以将事务请求232发出给MCH。根据优先级策略,MCH仲裁器220为DMA通道214仲裁以发出DMA传输请求,如图2所示。
如这里所述,术语“事务”被定义为与单个总线访问请求相关的总线活动。通常,事务可以从总线仲裁以及传送事务地址的信号的断言(assertion)开始。如Intel(注册商标)体系结构(IA)规范所定义的,一个事务可以包括多个阶段,每个阶段使用特定的信号集合以传送特定类型的信息。多个阶段中至少包括仲裁阶段(针对总线占用权)、请求阶段、应答阶段以及数据传输阶段。
实现计算机系统(比如计算机系统100)内的DMA访问需要将利用DMA访问的设备指定为总线主控。总线主控是微处理器或独立的I/O控制器(“设备驱动器”)中的程序,用于引导系统总线或输入输出(I/O)路径上的通信。操作中,总线主控设备驱动器请求OS分配一部分主存储器140,其为被指定或使得能够进行DMA以发出DMA数据请求。
再次参考图1,在一个实施例中,VDD驱动器260控制一个或多个被给予总线主控状态的DMA通道,其使得VDD驱动器260能够向DMA控制器200发出DMA访问请求。在操作中,在DMA仲裁器212的仲裁以及随后MCH仲裁器220的仲裁之后,将授权DMA通道214访问以向VDD存储器250发出DMA访问请求。因此,在一个实施例中,当应用程序或进程请求执行文件操作时,比如对VDD存储器250中存储的文件的读/写访问,那么OS可以将该调用传递到VDD驱动器260。在一个实施例中,为引导DMA引擎210执行所请求的文件操作,VDD驱动器260编写链描述符,如参照图3所示。
在一个实施例中,DMA控制器200对所有的每通道寄存器组使用存储器映射配置寄存器。在一个实施例中,与DMA控制器200相关的存储器映射寄存器空间由32-位存储器-基址寄存器(BAR)来标识,它由例如VDD驱动器260使用以访问对编程DMA通道以起动DMA传输所需要的DMA配置寄存器270。在一个实施例中,如图3所示,每个DMA通道具有12个32-位存储器映射寄存器用于它的独立操作。
在一个实施例中,当正常操作过程中从本地存储器中取出一新的描述符时,DMA寄存器270中的八个自动地从链描述符(比如链描述符290)中的它们的对应的域加载。存储器290中的对应的描述符域的格式与为DMA通道专用寄存器270定义的格式相同。当DMA控制器200处于常规模式时,如由DMA模式控制寄存器的DMA模式位所定义的,可以对通道控制272、通道状态274、后续描述符地址282-1以及后续描述符高位地址282-2寄存器进行读/写访问。其余的寄存器都是只读的,并且无论何时DMA通道从本地系统存储器读取链描述符,它们都被自动加载由链描述符290定义的新值。
表1


再次参考图3,存储器映射DMA寄存器270包括通道控制寄存器(CCR)272,如进一步参照以上提供的表1所说明的。在一个实施例中,CCR272为DMA通道指定整个操作环境。在一个实施例中,在初始化系统存储器中的链描述符并以存储器中第一个DMA链描述符的位置更新后续地址寄存器282(282-1,282-2)之后,设备驱动器初始化CCR 207。在一个实施例中,当DMA通道活动时可以写CCR 272以修改DMA通道操作(例如,停止、挂起等)。
表2


在一个实施例中,通道状态寄存器(CSR)274包含表示DMA通道状态的标志。在一个实施例中,寄存器274由VDD驱动器260读取以得到当前DMA通道状态并确定中断源。如表2所示,包含在CSR274之内的各种标志包括通道活动位,其表示通道正在使用;DMA终止(DMABRT)位,其表示终止DMA传输。同样,CSR 274标志还包括DMA停止(DSTP)位,当设置它时,表示停止这个通道的当前DMA传输。
在一个实施例中,设置DMA挂起(DSUS)位表示挂起DMA请求,而传输结束(EOT)位表示通道已为至少一个描述符成功完成DMA;链结束(EOC)标志表示对包括最后一个描述符的所有描述符无错误的进行DMA传输。如这里所述,术语“断言”(assert)、“设置”(set)、“取消断言”(deassert)等术语可以表示数据信号,它们是低态有效或者高态有效信号。所以当与信号关联时,可交替地使用这些术语请求或者暗示高态有效或低态有效信号。
当前描述符地址寄存器(CDAR)276(276-1,276-2)包含本地系统存储器中的当前链描述符的地址的低位和高位。在一个实施例中,当接通电源或系统复位时将CDAR 276清零,并且当开始新的块传输时将自动用后续描述符地址寄存器(NDAR)中的值装载。在一个实施例中,CDAR 276在正常操作过程中是只读的,并且可以通过软件轮询以便随着它穿过DMA描述符链来监控DMA通道的进程。其余的DMA寄存器270对应于DMA链描述符290,可以在起动DMA传输之前由VDD驱动器260对其编程。
在一个实施例中,VDD驱动器260通过在本地系统存储器中构建一个或多个链描述符来初始化DMA通道。如图3和4所示,描述符可以包括表示DMA数据的初始位置的源地址292、表示DMA请求将DMA数据移动或传输到的位置的目的地址294、表示将要传输的字节的数量的传输计数298、以及表示描述符链中的后续描述符的地址的后续描述符地址296。将描述符链的最后描述符的后续描述符地址296设置为零。
在操作中,在由应用程序或进程发出文件操作请求之后,VDD驱动器260从OS接收文件操作请求。根据这种请求,VDD驱动器260对链描述符290的各个部分编程,包括源地址292和目的地址294以及传输计数。在一个实施例中,以双字(Dword)为单位提供传输计数298,并且可以称为Dword计数298。一旦对链描述符进行了编程,VDD驱动器260就更新DMA寄存器270的后续描述符地址寄存器286(NDAR)。
在一个实施例中,由DMA控制器200使用NDAR 286以便定位由VDD驱动器260编程的链描述符。因此,一旦用存储器中的第一个链描述符290的地址填充NDAR 286,则VDD驱动器260就可以设置通道控制寄存器272(见表1)之内的DMA起动位。如图4所示,VDD驱动器260可以对VDD存储器250设置一串块传输;但是,如果将来自应用程序或进程的文件请求限制为从VDD 250的单个块传输,那么VDD驱动器260将DMA链描述符290-1的后续描述符地址域设置为空(零)值。
再次参考图3,DMA寄存器270的源地址寄存器(SAR)278和目的地址寄存器(DAR)280域还包括高位地址寄存器域(278-2和280-2)。在一个实施例中,提供高位地址寄存器域(278-2和280-2)以允许DMA访问请求的36-位或64千兆字节寻址范围。因此,与对建立在易失性系统存储器140之内的VDD存储器250或RAMDISK的传统访问不同,DMA控制器200允许对数据传输进行32位地址界限以外的寻址,否则,对超过四千兆字节(GB)边界的VDD存储器250的访问请求需要使用CPU 102的页地址扩展(PAE)能力。
图5根据一个实施例说明了方法300的概要,其用于利用DMA控制器200之内的集成DMA引擎210来执行VDD存储器250之内的文件操作。典型地,进程302(比如应用程序或运行程序)可以向包含在VDD存储器250之内的文件请求文件操作或者读/写请求。在转移310处,进程302发出VDD访问请求。当由例如OS 304检测到这种访问时,在转移320处,OS 304通过将VDD访问请求传递给VDD驱动器260从而将该调用传递给VDD驱动器260。
在一个实施例中,VDD驱动器260识别对其检测到文件操作或者读/写请求的文件。一旦检测到,VDD驱动器260将文件名以及在该文件中该访问请求被引导到的偏移量转换为主存储器140之内的物理地址。在一个实施例中,根据主存储器140之内的映射到VDD存储器250的物理地址范围执行转换。一旦确定该文件的物理地址,VDD驱动器260就可以通过填充DMA链描述符来编程DMA源和目的地址以及传输长度,例如,如图3和4所示,从而发出DMA读/写(R/W)访问请求到DMA控制器200,如转移330所示。
如图4所示,如果多个数据块涉及文件操作或者对VDD 250的数据访问请求,那么VDD驱动器260可以为一串VDD块传输编程。随后,填充DMA控制器200的NDAR 282以便DMA控制器200可以装载DMA寄存器270之内的描述符链,如图3所示。一旦由例如VDD驱动器260设置了通道控制寄存器272的DMA起动位,DMA控制器200就执行这种动作。随后,如图2所示,DMA引擎210通过执行DMA R/W,根据至少一个由VDD存储器250编程的DMA链描述符来执行数据访问请求或者文件操作,如转移340处所示。
在一个实施例中,一旦DMA引擎210完成了传输,在转移350处,DMA引擎可以向VDD驱动器260发出一个中断,以通知VDD驱动器文件操作完成以及已将数据传输到VDD 250或从VDD 250传输到分配给进程302的存储器。典型地,一旦VDD驱动器260在转移350接收到完成DMA传输的通知,VDD驱动器260可以通知进程302所请求的文件操作或者向/从VDD存储器250的读/写访问请求已完成。在一个实施例中,在转移360处,VDD驱动器260通知进程302已完成的DMA传输。
因此,在一个实施例中,VDD驱动器260的生成将访问VDD存储器250之内的文件数据的操作转交给DMA控制器的集成DMA引擎,例如参照图1和图2所说明的。因此,通过将数据传输工作从CPU 102分担到DMA控制器200,提高了总体的系统性能,从而使得CPU 102避免执行传统的数据传输以便执行对VDD存储器250的文件操作。此外,不同于请求使用CPU的页地址扩展(PAE)模式以寻址超过32位寻址边界的范围的传统的RAMDISK驱动器,将VDD存储器数据传输分担给DMA引擎210,不仅避免了通过使用PAE模式而通常导致的对于VDD驱动器260的性能损失,而且避免了对于所有系统进程的性能损失。
图6是说明使用公开的技术对设计进行仿真、模拟以及制造的各种表示或格式的框图。表示设计的数据会以许多方式表示该设计。首先,由于在仿真中有用,硬件可以用硬件描述语言来表示,或者用另一个功能描述语言表示,其必需提供关于期望所设计的硬件如何执行的计算机化的模型。可以将硬件模型410存储在存储介质400中,比如计算机存储器,因此,可以使用模拟软件420模拟该模型,其中模拟软件将特定的一套测试430应用到硬件模型以确定它是否真正按照计划来运行。在一些实施例中,没有将仿真软件记录、收集或者包含在介质中。
在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。调制或生成光波或电波460以传送这种信息,存储器450或者磁或光存储器440,比如光盘,可以是机器可读介质。任何这些介质都可以携带设计信息。因此,术语“携带”(例如,机器可读数据介质携带信息)覆盖了存储在存储装置的信息或者编码或调制为载波的信息。描述设计或设计的细节的位的集合是(当体现为机器可读介质,例如载体或存储介质时)一物品,其可以封闭在其自身内外,或者由他人用于进一步设计或者制造。
替代实施例应当理解,对于其它实施例,可以使用不同的系统配置。例如,虽然对于其它实施例系统100包括单个CPU 102,但是多处理器系统(其中,一个或多个处理器可以在结构和操作上与如上所述的CPU 102类似)也会受益于对各种实施例的VDD存储器的集成DMA存储器控制器访问。此外,不同类型的系统或者不同类型的计算机系统,例如服务器、工作站、桌面计算机系统、游戏系统、嵌入式计算机系统、刀片服务器等等,可以用于其它实施例。
已经公开了实施例和最佳方式,可以对已公开的实施例做出变形或改变,同时仍然属于由以下权利要求所定义的本发明的实施例的范围。
权利要求
1.一种方法,包括检测对在易失性系统存储器中实现的易失性磁盘驱动器(VDD)存储器的数据访问请求;以及发出直接存储器访问(DMA)数据请求以执行来自所述VDD存储器的所述数据访问请求。
2.如权利要求1所述的方法,其中,在检测所述数据访问请求之前,所述方法还包括由一进程请求对存储在所述VDD存储器之内的文件的读/写访问;通过一操作系统(OS)检测对存储在所述VDD存储器之内的所述文件的进程读/写访问请求;以及将所述读/写访问请求传递到VDD驱动器。
3.如权利要求1所述的方法,其中,在检测所述数据访问请求之前,所述方法还包括保留所述易失性系统存储器的一部分;以及在初始化过程中,分配系统存储器的所述保留部分以用作所述VDD存储器。
4.如权利要求1所述的方法,其中,检测所述数据访问请求包括从操作系统接收由一进程发出的、对存储在所述VDD存储器中的文件的读/写访问请求。
5.如权利要求1所述的方法,其中,发出所述DMA数据请求包括根据所述数据访问请求生成至少一个DMA链描述符;以及发出一DMA起动命令以执行对存储在所述VDD存储器中的文件的所述数据访问请求。
6.如权利要求5所述的方法,其中生成所述至少一个DMA链描述符包括识别所述VDD存储器之内的、所述数据访问请求所指向的文件;计算所述易失性系统存储器之内的所述文件的物理开始地址;根据存储在所述VDD存储器之内的所述文件之内的所述数据访问请求的偏移量计算DMA源地址;以及根据所述数据访问请求计算DMA目的地址。
7.如权利要求5所述的方法,其中,发出所述DMA起动命令包括用本地系统存储器之内的所述至少一个DMA链描述符的地址更新DMA引擎后续地址寄存器;以及设置DMA引擎起动DMA位,以使所述DMA引擎执行对存储在所述VDD存储器之内的所述文件的所述数据访问请求。
8.如权利要求1所述的方法,还包括通过DMA引擎取得位于包含在后续描述符地址寄存器中的地址的DMA链描述符;根据所取得的DMA链描述符执行DMA传输,以便根据所述数据访问请求将DMA数据传输到存储在所述VDD存储器之内的文件;以及如果完成所述DMA传输,则发出一中断给虚拟磁盘驱动器。
9.如权利要求1所述的方法,还包括如果所述DMA引擎完成所述数据访问请求的DMA传输,则从DMA引擎接收中断;以及通知发出所述数据访问请求的应用程序已经完成了所述文件操作。
10.如权利要求1所述的方法,其中,所述VDD存储器的尺寸大于四千兆字节。
11.一种制品,包括其上存储有指令的机器可读介质,所述指令可以用于编程系统以执行包括下列步骤的方法检测对在易失性系统存储器中实现的易失性磁盘驱动器(VDD)存储器的数据访问请求;以及发出直接存储器访问(DMA)数据请求以执行来自所述VDD存储器的所述数据访问请求。
12.如权利要求11所述的制品,其中发出所述DMA数据请求包括根据所述数据访问请求生成至少一个DMA链描述符;以及发出一DMA起动命令以执行对存储在所述VDD存储器中的文件的所述数据访问请求。
13.如权利要求12所述的制品,其中,生成所述至少一个DMA链描述符包括识别所述VDD存储器之内的、所述数据访问请求所指向的文件;计算所述易失性系统存储器之内的所述文件的物理开始地址;根据存储在所述VDD存储器之内的所述文件之内的所述数据访问请求的偏移量计算DMA源地址;以及根据所述数据访问请求计算DMA目的地址。
14.如权利要求12所述的制品,其中,发出所述DMA起动命令包括用本地系统存储器之内的所述至少一个DMA链描述符的地址更新DMA引擎后续地址寄存器;以及设置DMA引擎起动DMA位,以使所述DMA引擎执行对存储在所述VDD存储器之内的所述文件的所述数据访问请求。
15.如权利要求11所述的制品,还包括如果所述DMA引擎完成所述数据访问请求的DMA传输,则从DMA引擎接收中断;以及通知发出所述数据访问请求的应用程序已经完成了所述文件操作。
16.一种方法,包括通过一操作系统(OS)检测对存储在易失性磁盘驱动器(VDD)存储器之内的文件的进程读/写访问请求,其中,所述易失性磁盘驱动器(VDD)存储器在易失性系统存储器之内实现;将所述读/写访问请求传递到VDD驱动器;以及通过所述VDD驱动器发出直接存储器访问(DMA)数据请求以从存储在所述VDD存储器中的所述文件执行所述读/写访问请求。
17.如权利要求16所述的方法,其中,发出所述DMA数据请求包括根据所述读/写访问请求生成至少一个DMA链描述符;以及发出DMA起动命令以执行对存储在所述VDD存储器中的所述文件的所述读/写访问请求。
18.如权利要求17所述的方法,其中,生成所述至少一个DMA链描述符包括识别所述虚拟磁盘驱动器之内的、所述数据访问请求所指向的文件;计算所述易失性系统存储器内文件的物理开始地址;根据存储在所述VDD存储器之内的所述文件之内的所述读/写访问请求的偏移量计算DMA源地址;以及根据所述读/写访问请求计算DMA目的地址。
19.如权利要求17所述的方法,其中,生成所述至少一个DMA链描述符包括识别所述VDD存储器之内的、所述数据访问请求所指向的文件;以及计算所述易失性系统存储器之内的所述文件的物理开始地址。
20.如权利要求16所述的方法,还包括通过DMA引擎取得位于包含在后续描述符地址寄存器中的地址的DMA链描述符;根据所取得的DMA链描述符执行DMA传输,以便根据所述读/写访问请求从存储在所述VDD存储器之内的文件传输DMA数据;以及如果完成所述DMA传输,则发出一中断给所述虚拟磁盘驱动器。
21.一种制品,包括其上存储有指令的机器可读介质,所述指令可以用于编程系统以执行包括下列步骤的方法通过一操作系统(OS)检测对存储在易失性磁盘驱动器(VDD)存储器之内的文件的进程读/写访问请求,其中,所述易失性磁盘驱动器(VDD)存储器在易失性系统存储器之内实现;将所述读/写访问请求传递到VDD驱动器;以及通过所述VDD驱动器发出直接存储器访问(DMA)数据请求以从存储在所述VDD存储器中的所述文件执行所述读/写访问请求。
22.如权利要求21所述的制品,其中,发出所述DMA数据请求包括根据所述读/写访问请求生成至少一个DMA链描述符;以及发出DMA起动命令以执行对存储在所述VDD存储器中的所述文件的所述读/写访问请求。
23.如权利要求22所述的制品,其中,生成所述至少一个DMA链描述符包括识别所述虚拟磁盘驱动器之内的、所述数据访问请求所指向的文件;计算所述易失性系统存储器之内的所述文件的物理开始地址;根据存储在所述VDD存储器之内的所述文件之内的所述读/写访问请求的偏移量计算DMA源地址;以及根据所述读/写访问请求计算DMA目的地址。
24.如权利要求22所述的制品,其中,生成所述至少一个DMA链描述符包括识别所述VDD存储器之内的、所述数据访问请求所指向的文件;以及计算所述易失性系统存储器之内的所述文件的物理开始地址。
25.如权利要求21所述的制品,还包括通过DMA引擎取得位于包含在后续描述符地址寄存器中的地址的DMA链描述符;根据所取得的DMA链描述符执行DMA传输,以便根据所述读/写访问请求从存储在所述VDD存储器之内的所述文件传输DMA数据;以及如果完成所述DMA传输,则发出一中断给所述虚拟磁盘驱动器。
26.一种系统,包括易失性系统存储器,其具有为提供易失性磁盘驱动器(VDD)存储器所分配的部分;芯片组,其连接到所述易失性系统存储器,所述芯片组包括直接存储器访问(DMA)引擎以执行到所述易失性系统存储器的DMA传输;以及非易失性系统存储器,其连接到所述芯片组,所述非易失性系统存储器包括VDD驱动器以检测对所述虚拟磁盘驱动器的数据访问请求以及向所述芯片组发出DMA请求,以使所述DMA引擎执行对所述VDD存储器的所述数据访问请求。
27.如权利要求26所述的系统,其中,所述芯片组还包括具有集成DMA引擎的存储器控制器中心。
28.如权利要求26所述的系统,其中,所述芯片组还包括输入/输出控制器中心。
29.如权利要求26所述的系统,其中,所述芯片组还包括DMA控制器,其包括至少一个后续描述符地址寄存器以存储由所述VDD驱动器编程的DMA链描述符的物理地址,以执行对所述VDD存储器的所述数据访问请求。
30.如权利要求29所述的系统,其中,所述DMA控制器还包括通道控制寄存器,其包含一DMA起动位以指示所述DMA引擎装载所述DMA链描述符并执行对所述VDD存储器的所述数据访问请求。
全文摘要
一种方法和装置,用于使用集成直接存储器访问(DMA)引擎进行高性能易失性磁盘驱动器(VDD)存储器访问。在一个实施例中,所述方法包括检测对在易失性系统存储器之内实现的VDD存储器的数据访问请求。一旦检测到数据访问请求,VDD驱动器可以发出DMA数据请求以执行来自VDD的数据访问请求。因此,在一个实施例中,向/从在易失性系统存储器的所分配部分之内实现的VDD存储器传输数据的工作被分担给DMA引擎,例如存储器控制器中心(MCH)中的集成DMA引擎。还描述了其它实施例。
文档编号G06F9/445GK1961300SQ200580017641
公开日2007年5月9日 申请日期2005年6月21日 优先权日2004年6月30日
发明者什里坎特·M·沙阿, 舍唐·J·拉瓦尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1