專利名稱:使用集成dma引擎進(jìn)行高性能易失性磁盤驅(qū)動(dòng)器存儲(chǔ)器訪問(wèn)的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)或多個(gè)實(shí)施例一般涉及集成電路和計(jì)算機(jī)系統(tǒng)設(shè)計(jì)領(lǐng)域。特別地,本發(fā)明的一個(gè)或多個(gè)實(shí)施例涉及使用集成直接存儲(chǔ)器訪問(wèn)(DMA)引擎進(jìn)行高性能易失性磁盤驅(qū)動(dòng)器存儲(chǔ)器訪問(wèn)的裝置和方法。
背景技術(shù):
RAMDISK是一種存儲(chǔ)器管理技術(shù),其中在程序控制下,將一部分易失性系統(tǒng)存儲(chǔ)器用作大容量存儲(chǔ)設(shè)備,這里稱作“易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器”。對(duì)RAMDISK的操作系統(tǒng)(OS)文件操作比對(duì)傳統(tǒng)硬盤的OS操作要快很多。因此,通過(guò)將最常用的程序和文件放置在為RAMDISK分配的系統(tǒng)存儲(chǔ)器的一部分之內(nèi),RAMDISK可以顯著地提高系統(tǒng)性能。盡管一旦關(guān)閉系統(tǒng),RAMDISK就不會(huì)保留所存儲(chǔ)的信息,但是RAMDISK存儲(chǔ)器管理技術(shù)對(duì)于以常規(guī)OS文件格式存儲(chǔ)的數(shù)據(jù)的臨時(shí)存儲(chǔ)和緩存是非常有用的。典型地,將RAMDISK用于web/文件服務(wù)器以便緩存海量媒體存儲(chǔ)池中的常用文件。
傳統(tǒng)上,用于實(shí)現(xiàn)RAMDISK的驅(qū)動(dòng)器完全以軟件實(shí)現(xiàn)。因此,當(dāng)程序或進(jìn)程想要讀/寫RAMDISK中的文件時(shí),將調(diào)用RAMDISK驅(qū)動(dòng)器。這種驅(qū)動(dòng)器首先識(shí)別所請(qǐng)求的文件是如何映射到保留給RAMDISK的系統(tǒng)存儲(chǔ)器位置的。一旦識(shí)別出,驅(qū)動(dòng)器將向RAMDISK的存儲(chǔ)器傳輸來(lái)自請(qǐng)求進(jìn)程的存儲(chǔ)器的數(shù)據(jù),或從RAMDISK的存儲(chǔ)器向請(qǐng)求進(jìn)程的存儲(chǔ)器傳輸數(shù)據(jù)。通常,這是在CPU的幫助下執(zhí)行的,其中驅(qū)動(dòng)器指示CPU從系統(tǒng)存儲(chǔ)器的RAMDISK部分請(qǐng)求數(shù)據(jù)。
然而,需要CPU(中央處理單元)為RAMDISK驅(qū)動(dòng)器既管理數(shù)據(jù)傳輸又管理文件管理功能。盡管RAMDISK存儲(chǔ)器管理技術(shù)比使用傳統(tǒng)存儲(chǔ)驅(qū)動(dòng)器快許多,但是RAMDISK驅(qū)動(dòng)器會(huì)利用大量CPU周期以在RAMDISK位置和應(yīng)用程序位置之間傳輸數(shù)據(jù)。此外,為超出4G字節(jié)(GB)的存儲(chǔ)器(32-位地址)實(shí)現(xiàn)RAMDISK,需要RAMDISK驅(qū)動(dòng)器使用CPU的頁(yè)地址擴(kuò)展(PAE)模式。然而,PAE模式自身不僅對(duì)于RAMDISK驅(qū)動(dòng)器,而且對(duì)于所有運(yùn)行于系統(tǒng)之內(nèi)的進(jìn)程都會(huì)引入額外的性能損失。
本發(fā)明的各種實(shí)施例將通過(guò)附圖中的示例說(shuō)明,而不是通過(guò)限制的方式說(shuō)明,其中圖1是說(shuō)明根據(jù)一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)包含具有集成DMA引擎的DMA控制器以提供對(duì)虛擬磁盤驅(qū)動(dòng)器(VDD)的高性能訪問(wèn);圖2是根據(jù)一個(gè)實(shí)施例進(jìn)一步說(shuō)明圖1的DMA控制器的框圖;圖3是根據(jù)一個(gè)實(shí)施例說(shuō)明DMA寄存器和鏈描述符映射的框圖;圖4是根據(jù)一個(gè)實(shí)施例說(shuō)明DMA描述符集合鏈表的框圖,該鏈表用于使用DMA訪問(wèn),對(duì)虛擬磁盤驅(qū)動(dòng)器之內(nèi)的數(shù)據(jù)塊進(jìn)行訪問(wèn);圖5是根據(jù)一個(gè)實(shí)施例說(shuō)明對(duì)VDD訪問(wèn)請(qǐng)求的檢測(cè)以及使用圖1的DMA控制器通過(guò)直接存儲(chǔ)器訪問(wèn)的VDD訪問(wèn)請(qǐng)求的后續(xù)操作的框圖;圖6是說(shuō)明用于使用已公開的技術(shù)對(duì)設(shè)計(jì)進(jìn)行仿真、模擬以及制造的各種設(shè)計(jì)表示或格式的框圖。
具體實(shí)施例方式
將描述使用集成直接存儲(chǔ)器訪問(wèn)(DMA)引擎進(jìn)行高性能易失性磁盤驅(qū)動(dòng)(VDD)存儲(chǔ)器訪問(wèn)的方法和裝置。在一個(gè)實(shí)施例中,方法包括檢測(cè)對(duì)易失性系統(tǒng)存儲(chǔ)器中實(shí)現(xiàn)的VDD存儲(chǔ)器的數(shù)據(jù)訪問(wèn)請(qǐng)求。一旦檢測(cè)到數(shù)據(jù)訪問(wèn)請(qǐng)求,VDD驅(qū)動(dòng)器會(huì)發(fā)出DMA數(shù)據(jù)請(qǐng)求以執(zhí)行來(lái)自VDD的數(shù)據(jù)訪問(wèn)請(qǐng)求。因此,在一個(gè)實(shí)施例中,將數(shù)據(jù)向在易失性系統(tǒng)存儲(chǔ)器的所分配的部分之內(nèi)實(shí)現(xiàn)的VDD存儲(chǔ)器傳輸以及從其傳輸數(shù)據(jù)的工作被分擔(dān)給DMA引擎,例如存儲(chǔ)器控制中心(MCH)之內(nèi)的集成DMA引擎。
在以下描述中,提出了很多諸如邏輯實(shí)現(xiàn)、信號(hào)和總線的型號(hào)和名稱、系統(tǒng)部件的類型和相互關(guān)系以及邏輯劃分/集成選擇的具體細(xì)節(jié)以便于更徹底的理解。但是,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)知道,本發(fā)明可以不用這些具體細(xì)節(jié)來(lái)實(shí)現(xiàn)。在其它實(shí)例中,沒(méi)有詳細(xì)顯示控制結(jié)構(gòu)以及門級(jí)電路以避免使本發(fā)明難以理解。使用所包含的描述,本領(lǐng)域的那些普通技術(shù)人員將能夠在不需大量試驗(yàn)的情況下實(shí)現(xiàn)正確的邏輯電路。
在以下描述中,將某些術(shù)語(yǔ)用于描述本發(fā)明的特征。例如,術(shù)語(yǔ)“邏輯”表示用于實(shí)現(xiàn)一個(gè)或多個(gè)功能的硬件和/或軟件。比如,“硬件”的例子包括但不限于集成電路、有限狀態(tài)機(jī)乃至組合邏輯。集成電路可以采取諸如微處理器、專用集成電路、數(shù)字信號(hào)處理器、微控制器等等的處理器的形式。
“軟件”的例子包括應(yīng)用程序、小程序、例程乃至指令序列形式的可執(zhí)行代碼。在一個(gè)實(shí)施例中,一件產(chǎn)品包括機(jī)器或其上存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì),該指令對(duì)計(jì)算機(jī)(或其它電子設(shè)備)進(jìn)行編程以執(zhí)行根據(jù)一個(gè)實(shí)施例的處理。計(jì)算機(jī)或機(jī)器可讀介質(zhì)包括但不局限于可編程電子電路、包含易失性存儲(chǔ)器(例如,隨機(jī)訪問(wèn)存儲(chǔ)器,等)和/或非易失性存儲(chǔ)器(例如,任何種類的只讀存儲(chǔ)器“ROM”、閃存)在內(nèi)的半導(dǎo)體存儲(chǔ)設(shè)備、軟盤、光盤(例如,高密度盤或者數(shù)字視頻光盤“DVD”)、硬盤、磁帶等等。
系統(tǒng)圖1是說(shuō)明根據(jù)一個(gè)實(shí)施例的包含直接存儲(chǔ)器訪問(wèn)(DMA)控制器200以提供對(duì)VDD存儲(chǔ)器250的高性能訪問(wèn)的計(jì)算機(jī)系統(tǒng)100的框圖。典型地,計(jì)算機(jī)系統(tǒng)100包括用于在處理器(CPU)102和芯片組130之間傳輸信息的處理器系統(tǒng)總線(前端總線(FSB))104。如這里所述,術(shù)語(yǔ)“芯片組”用于總體描述與CPU 102連接以執(zhí)行所希望的系統(tǒng)功能的各種設(shè)備。
典型地,芯片組130可以包括連接到圖形控制器150的存儲(chǔ)器控制中心110(MCH)。在一可選實(shí)施例中,圖形控制器150集成到MCH中,因此在一個(gè)實(shí)施例中,MCH 110用作集成圖形MCH(GMCH)。典型地,MCH 110還通過(guò)系統(tǒng)存儲(chǔ)器總線142連接到主存儲(chǔ)器140。在一個(gè)實(shí)施例中,主存儲(chǔ)器140可以包括但不限于隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、動(dòng)態(tài)RAM(DRAM)、靜態(tài)RAM(SRAM)、同步DRAM(SDRAM)、雙數(shù)據(jù)率(DDR)SDRAM(DDR-SDRAM)、RambusDRAM(RDRAM)或者任何能夠支持高速臨時(shí)數(shù)據(jù)存儲(chǔ)的設(shè)備。
在一個(gè)實(shí)施例中,MCH 110集成在CPU 102之內(nèi)以使得能夠在CPU 102和主存儲(chǔ)器140之間進(jìn)行直接連接。在一個(gè)實(shí)施例中,MCH110可以包括外設(shè)部件互連(PCI)PCI-Express(PCI-Ex)根端口180(180-1,...180-N),以便通過(guò)PCI-Ex連接182(182-1,...,182-N)將PCI-Ex終端190(190-1,...190-N)連接到MCH 110。典型地,PCI-Ex連接182可以提供點(diǎn)到點(diǎn)連接,比如由“PCI Express Base Specification1.0a”(勘誤2003年10月7日)定義,以允許外部終端設(shè)備190(190-1,...,190-N)和MCH 110之間的雙向通信。
作為進(jìn)一步的說(shuō)明,芯片組130包括輸入輸出(I/O)控制器中心(ICH)120。典型地,ICH 120可以包括通用串行總線(USB)連接或互連162以將一個(gè)或多個(gè)USB槽160連接到ICH 120。另外,串行高級(jí)技術(shù)附加裝置(SATA)172可以將硬盤驅(qū)動(dòng)設(shè)備(HDD)170連接到ICH 120。在一個(gè)實(shí)施例中,ICH 120可以包括傳統(tǒng)的PCI/PCIx連接166以將一個(gè)或多個(gè)PCI/PCIx槽164連接到ICH 120。在一個(gè)實(shí)施例中,系統(tǒng)BIOS 106初始化計(jì)算機(jī)系統(tǒng)100。
再次參考圖1,在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括VDD驅(qū)動(dòng)器260。在操作中,VDD驅(qū)動(dòng)器260負(fù)責(zé)預(yù)留和分配一部分易失性系統(tǒng)存儲(chǔ)器140,以用作VDD存儲(chǔ)器250。在一個(gè)實(shí)施例中,主存儲(chǔ)器140的分配給VDD存儲(chǔ)器250的部分是對(duì)于計(jì)算機(jī)系統(tǒng)100的核心操作系統(tǒng)(OS)隱蔽的非可交換存儲(chǔ)器。如這里所述,VDD存儲(chǔ)器250或者可以稱為RAMDISK,它是一種存儲(chǔ)器管理技術(shù),用于在程序控制下分配易失性系統(tǒng)存儲(chǔ)器的一部分以用作大容量存儲(chǔ)設(shè)備。
在一個(gè)實(shí)施例中,VDD驅(qū)動(dòng)器260利用DMA控制器200執(zhí)行VDD存儲(chǔ)器之內(nèi)的文件操作。傳統(tǒng)上,使用已編程的傳輸來(lái)執(zhí)行由設(shè)備驅(qū)動(dòng)器(例如與連接到芯片組(130)的外圍設(shè)備相關(guān)的軟件)進(jìn)行的主存儲(chǔ)器訪問(wèn),其中CPU發(fā)出總線事務(wù)以為外圍設(shè)備起動(dòng)從存儲(chǔ)器讀數(shù)據(jù)的操作或向存儲(chǔ)器寫數(shù)據(jù)的操作。相反地,DMA是由先進(jìn)的體系結(jié)構(gòu)提供的能力,它允許在不涉及CPU的情況下將數(shù)據(jù)在外圍設(shè)備和主存儲(chǔ)器之間直接傳輸。因此,系統(tǒng)的CPU免于參與數(shù)據(jù)傳輸,因此加快了整個(gè)計(jì)算機(jī)的操作。在一個(gè)實(shí)施例中,如圖2所示,DMA控制器200提供計(jì)算機(jī)系統(tǒng)100之內(nèi)的DMA能力。
在一個(gè)實(shí)施例中,DMA控制器包括集成DMA引擎210,用于提供多個(gè)DMA通道214(214-1,...214-N)。在一個(gè)實(shí)施例中,DMA控制器200提供四個(gè)DMA通道,每個(gè)都可以獨(dú)立地用于在系統(tǒng)存儲(chǔ)器140之內(nèi)或從系統(tǒng)存儲(chǔ)器140向各種連接到芯片組130的外圍設(shè)備傳輸數(shù)據(jù)。在一個(gè)實(shí)施例中,如以下進(jìn)一步詳細(xì)描述的,可以通過(guò)寫入主存儲(chǔ)器140的鏈描述符和存儲(chǔ)器映射內(nèi)部寄存器組的組合從CPU 102訪問(wèn)DMA通道編程接口,如圖3和4所示。
在一個(gè)實(shí)施例中,DMA通道214之間的仲裁以兩階段出現(xiàn)。典型地,每個(gè)DMA通道214具有獨(dú)立的對(duì)于DMA控制器200內(nèi)部的仲裁器(DMA仲裁器212)的總線請(qǐng)求/許可對(duì)。作為進(jìn)一步說(shuō)明,DMA控制器200具有對(duì)于MCH 110中的主仲裁器(MCH仲裁器220)的單個(gè)請(qǐng)求/許可對(duì)。在一個(gè)實(shí)施例中,DMA仲裁器212使用嚴(yán)格輪詢策略以準(zhǔn)許DMA通道和請(qǐng)求設(shè)備對(duì)主存儲(chǔ)器140的訪問(wèn)。在一個(gè)實(shí)施例中,DMA仲裁器212可以包括在任何給定時(shí)間對(duì)于一個(gè)DMA通道可選的高優(yōu)先級(jí)指示。因此,一組競(jìng)爭(zhēng)的DMA通道在正常操作過(guò)程中實(shí)現(xiàn)均衡的帶寬性能。
再次參考圖1,如這里所述,每個(gè)存在于連接到芯片組130的總線上的外圍設(shè)備或I/O卡在這里被稱為“總線代理”。一般地將總線代理分成均衡代理和優(yōu)先代理,從而當(dāng)與均衡代理競(jìng)爭(zhēng)總線占用權(quán)時(shí),優(yōu)先代理被給予占用權(quán)。需要這樣的仲裁,因?yàn)橥ǔ2辉试S總線代理同時(shí)驅(qū)動(dòng)總線發(fā)出事務(wù)。與計(jì)算機(jī)系統(tǒng)100的總線代理相關(guān)的設(shè)備驅(qū)動(dòng)器可以將事務(wù)請(qǐng)求232發(fā)出給MCH。根據(jù)優(yōu)先級(jí)策略,MCH仲裁器220為DMA通道214仲裁以發(fā)出DMA傳輸請(qǐng)求,如圖2所示。
如這里所述,術(shù)語(yǔ)“事務(wù)”被定義為與單個(gè)總線訪問(wèn)請(qǐng)求相關(guān)的總線活動(dòng)。通常,事務(wù)可以從總線仲裁以及傳送事務(wù)地址的信號(hào)的斷言(assertion)開始。如Intel(注冊(cè)商標(biāo))體系結(jié)構(gòu)(IA)規(guī)范所定義的,一個(gè)事務(wù)可以包括多個(gè)階段,每個(gè)階段使用特定的信號(hào)集合以傳送特定類型的信息。多個(gè)階段中至少包括仲裁階段(針對(duì)總線占用權(quán))、請(qǐng)求階段、應(yīng)答階段以及數(shù)據(jù)傳輸階段。
實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)(比如計(jì)算機(jī)系統(tǒng)100)內(nèi)的DMA訪問(wèn)需要將利用DMA訪問(wèn)的設(shè)備指定為總線主控。總線主控是微處理器或獨(dú)立的I/O控制器(“設(shè)備驅(qū)動(dòng)器”)中的程序,用于引導(dǎo)系統(tǒng)總線或輸入輸出(I/O)路徑上的通信。操作中,總線主控設(shè)備驅(qū)動(dòng)器請(qǐng)求OS分配一部分主存儲(chǔ)器140,其為被指定或使得能夠進(jìn)行DMA以發(fā)出DMA數(shù)據(jù)請(qǐng)求。
再次參考圖1,在一個(gè)實(shí)施例中,VDD驅(qū)動(dòng)器260控制一個(gè)或多個(gè)被給予總線主控狀態(tài)的DMA通道,其使得VDD驅(qū)動(dòng)器260能夠向DMA控制器200發(fā)出DMA訪問(wèn)請(qǐng)求。在操作中,在DMA仲裁器212的仲裁以及隨后MCH仲裁器220的仲裁之后,將授權(quán)DMA通道214訪問(wèn)以向VDD存儲(chǔ)器250發(fā)出DMA訪問(wèn)請(qǐng)求。因此,在一個(gè)實(shí)施例中,當(dāng)應(yīng)用程序或進(jìn)程請(qǐng)求執(zhí)行文件操作時(shí),比如對(duì)VDD存儲(chǔ)器250中存儲(chǔ)的文件的讀/寫訪問(wèn),那么OS可以將該調(diào)用傳遞到VDD驅(qū)動(dòng)器260。在一個(gè)實(shí)施例中,為引導(dǎo)DMA引擎210執(zhí)行所請(qǐng)求的文件操作,VDD驅(qū)動(dòng)器260編寫鏈描述符,如參照?qǐng)D3所示。
在一個(gè)實(shí)施例中,DMA控制器200對(duì)所有的每通道寄存器組使用存儲(chǔ)器映射配置寄存器。在一個(gè)實(shí)施例中,與DMA控制器200相關(guān)的存儲(chǔ)器映射寄存器空間由32-位存儲(chǔ)器-基址寄存器(BAR)來(lái)標(biāo)識(shí),它由例如VDD驅(qū)動(dòng)器260使用以訪問(wèn)對(duì)編程DMA通道以起動(dòng)DMA傳輸所需要的DMA配置寄存器270。在一個(gè)實(shí)施例中,如圖3所示,每個(gè)DMA通道具有12個(gè)32-位存儲(chǔ)器映射寄存器用于它的獨(dú)立操作。
在一個(gè)實(shí)施例中,當(dāng)正常操作過(guò)程中從本地存儲(chǔ)器中取出一新的描述符時(shí),DMA寄存器270中的八個(gè)自動(dòng)地從鏈描述符(比如鏈描述符290)中的它們的對(duì)應(yīng)的域加載。存儲(chǔ)器290中的對(duì)應(yīng)的描述符域的格式與為DMA通道專用寄存器270定義的格式相同。當(dāng)DMA控制器200處于常規(guī)模式時(shí),如由DMA模式控制寄存器的DMA模式位所定義的,可以對(duì)通道控制272、通道狀態(tài)274、后續(xù)描述符地址282-1以及后續(xù)描述符高位地址282-2寄存器進(jìn)行讀/寫訪問(wèn)。其余的寄存器都是只讀的,并且無(wú)論何時(shí)DMA通道從本地系統(tǒng)存儲(chǔ)器讀取鏈描述符,它們都被自動(dòng)加載由鏈描述符290定義的新值。
表1
再次參考圖3,存儲(chǔ)器映射DMA寄存器270包括通道控制寄存器(CCR)272,如進(jìn)一步參照以上提供的表1所說(shuō)明的。在一個(gè)實(shí)施例中,CCR272為DMA通道指定整個(gè)操作環(huán)境。在一個(gè)實(shí)施例中,在初始化系統(tǒng)存儲(chǔ)器中的鏈描述符并以存儲(chǔ)器中第一個(gè)DMA鏈描述符的位置更新后續(xù)地址寄存器282(282-1,282-2)之后,設(shè)備驅(qū)動(dòng)器初始化CCR 207。在一個(gè)實(shí)施例中,當(dāng)DMA通道活動(dòng)時(shí)可以寫CCR 272以修改DMA通道操作(例如,停止、掛起等)。
表2
在一個(gè)實(shí)施例中,通道狀態(tài)寄存器(CSR)274包含表示DMA通道狀態(tài)的標(biāo)志。在一個(gè)實(shí)施例中,寄存器274由VDD驅(qū)動(dòng)器260讀取以得到當(dāng)前DMA通道狀態(tài)并確定中斷源。如表2所示,包含在CSR274之內(nèi)的各種標(biāo)志包括通道活動(dòng)位,其表示通道正在使用;DMA終止(DMABRT)位,其表示終止DMA傳輸。同樣,CSR 274標(biāo)志還包括DMA停止(DSTP)位,當(dāng)設(shè)置它時(shí),表示停止這個(gè)通道的當(dāng)前DMA傳輸。
在一個(gè)實(shí)施例中,設(shè)置DMA掛起(DSUS)位表示掛起DMA請(qǐng)求,而傳輸結(jié)束(EOT)位表示通道已為至少一個(gè)描述符成功完成DMA;鏈結(jié)束(EOC)標(biāo)志表示對(duì)包括最后一個(gè)描述符的所有描述符無(wú)錯(cuò)誤的進(jìn)行DMA傳輸。如這里所述,術(shù)語(yǔ)“斷言”(assert)、“設(shè)置”(set)、“取消斷言”(deassert)等術(shù)語(yǔ)可以表示數(shù)據(jù)信號(hào),它們是低態(tài)有效或者高態(tài)有效信號(hào)。所以當(dāng)與信號(hào)關(guān)聯(lián)時(shí),可交替地使用這些術(shù)語(yǔ)請(qǐng)求或者暗示高態(tài)有效或低態(tài)有效信號(hào)。
當(dāng)前描述符地址寄存器(CDAR)276(276-1,276-2)包含本地系統(tǒng)存儲(chǔ)器中的當(dāng)前鏈描述符的地址的低位和高位。在一個(gè)實(shí)施例中,當(dāng)接通電源或系統(tǒng)復(fù)位時(shí)將CDAR 276清零,并且當(dāng)開始新的塊傳輸時(shí)將自動(dòng)用后續(xù)描述符地址寄存器(NDAR)中的值裝載。在一個(gè)實(shí)施例中,CDAR 276在正常操作過(guò)程中是只讀的,并且可以通過(guò)軟件輪詢以便隨著它穿過(guò)DMA描述符鏈來(lái)監(jiān)控DMA通道的進(jìn)程。其余的DMA寄存器270對(duì)應(yīng)于DMA鏈描述符290,可以在起動(dòng)DMA傳輸之前由VDD驅(qū)動(dòng)器260對(duì)其編程。
在一個(gè)實(shí)施例中,VDD驅(qū)動(dòng)器260通過(guò)在本地系統(tǒng)存儲(chǔ)器中構(gòu)建一個(gè)或多個(gè)鏈描述符來(lái)初始化DMA通道。如圖3和4所示,描述符可以包括表示DMA數(shù)據(jù)的初始位置的源地址292、表示DMA請(qǐng)求將DMA數(shù)據(jù)移動(dòng)或傳輸?shù)降奈恢玫哪康牡刂?94、表示將要傳輸?shù)淖止?jié)的數(shù)量的傳輸計(jì)數(shù)298、以及表示描述符鏈中的后續(xù)描述符的地址的后續(xù)描述符地址296。將描述符鏈的最后描述符的后續(xù)描述符地址296設(shè)置為零。
在操作中,在由應(yīng)用程序或進(jìn)程發(fā)出文件操作請(qǐng)求之后,VDD驅(qū)動(dòng)器260從OS接收文件操作請(qǐng)求。根據(jù)這種請(qǐng)求,VDD驅(qū)動(dòng)器260對(duì)鏈描述符290的各個(gè)部分編程,包括源地址292和目的地址294以及傳輸計(jì)數(shù)。在一個(gè)實(shí)施例中,以雙字(Dword)為單位提供傳輸計(jì)數(shù)298,并且可以稱為Dword計(jì)數(shù)298。一旦對(duì)鏈描述符進(jìn)行了編程,VDD驅(qū)動(dòng)器260就更新DMA寄存器270的后續(xù)描述符地址寄存器286(NDAR)。
在一個(gè)實(shí)施例中,由DMA控制器200使用NDAR 286以便定位由VDD驅(qū)動(dòng)器260編程的鏈描述符。因此,一旦用存儲(chǔ)器中的第一個(gè)鏈描述符290的地址填充NDAR 286,則VDD驅(qū)動(dòng)器260就可以設(shè)置通道控制寄存器272(見(jiàn)表1)之內(nèi)的DMA起動(dòng)位。如圖4所示,VDD驅(qū)動(dòng)器260可以對(duì)VDD存儲(chǔ)器250設(shè)置一串塊傳輸;但是,如果將來(lái)自應(yīng)用程序或進(jìn)程的文件請(qǐng)求限制為從VDD 250的單個(gè)塊傳輸,那么VDD驅(qū)動(dòng)器260將DMA鏈描述符290-1的后續(xù)描述符地址域設(shè)置為空(零)值。
再次參考圖3,DMA寄存器270的源地址寄存器(SAR)278和目的地址寄存器(DAR)280域還包括高位地址寄存器域(278-2和280-2)。在一個(gè)實(shí)施例中,提供高位地址寄存器域(278-2和280-2)以允許DMA訪問(wèn)請(qǐng)求的36-位或64千兆字節(jié)尋址范圍。因此,與對(duì)建立在易失性系統(tǒng)存儲(chǔ)器140之內(nèi)的VDD存儲(chǔ)器250或RAMDISK的傳統(tǒng)訪問(wèn)不同,DMA控制器200允許對(duì)數(shù)據(jù)傳輸進(jìn)行32位地址界限以外的尋址,否則,對(duì)超過(guò)四千兆字節(jié)(GB)邊界的VDD存儲(chǔ)器250的訪問(wèn)請(qǐng)求需要使用CPU 102的頁(yè)地址擴(kuò)展(PAE)能力。
圖5根據(jù)一個(gè)實(shí)施例說(shuō)明了方法300的概要,其用于利用DMA控制器200之內(nèi)的集成DMA引擎210來(lái)執(zhí)行VDD存儲(chǔ)器250之內(nèi)的文件操作。典型地,進(jìn)程302(比如應(yīng)用程序或運(yùn)行程序)可以向包含在VDD存儲(chǔ)器250之內(nèi)的文件請(qǐng)求文件操作或者讀/寫請(qǐng)求。在轉(zhuǎn)移310處,進(jìn)程302發(fā)出VDD訪問(wèn)請(qǐng)求。當(dāng)由例如OS 304檢測(cè)到這種訪問(wèn)時(shí),在轉(zhuǎn)移320處,OS 304通過(guò)將VDD訪問(wèn)請(qǐng)求傳遞給VDD驅(qū)動(dòng)器260從而將該調(diào)用傳遞給VDD驅(qū)動(dòng)器260。
在一個(gè)實(shí)施例中,VDD驅(qū)動(dòng)器260識(shí)別對(duì)其檢測(cè)到文件操作或者讀/寫請(qǐng)求的文件。一旦檢測(cè)到,VDD驅(qū)動(dòng)器260將文件名以及在該文件中該訪問(wèn)請(qǐng)求被引導(dǎo)到的偏移量轉(zhuǎn)換為主存儲(chǔ)器140之內(nèi)的物理地址。在一個(gè)實(shí)施例中,根據(jù)主存儲(chǔ)器140之內(nèi)的映射到VDD存儲(chǔ)器250的物理地址范圍執(zhí)行轉(zhuǎn)換。一旦確定該文件的物理地址,VDD驅(qū)動(dòng)器260就可以通過(guò)填充DMA鏈描述符來(lái)編程DMA源和目的地址以及傳輸長(zhǎng)度,例如,如圖3和4所示,從而發(fā)出DMA讀/寫(R/W)訪問(wèn)請(qǐng)求到DMA控制器200,如轉(zhuǎn)移330所示。
如圖4所示,如果多個(gè)數(shù)據(jù)塊涉及文件操作或者對(duì)VDD 250的數(shù)據(jù)訪問(wèn)請(qǐng)求,那么VDD驅(qū)動(dòng)器260可以為一串VDD塊傳輸編程。隨后,填充DMA控制器200的NDAR 282以便DMA控制器200可以裝載DMA寄存器270之內(nèi)的描述符鏈,如圖3所示。一旦由例如VDD驅(qū)動(dòng)器260設(shè)置了通道控制寄存器272的DMA起動(dòng)位,DMA控制器200就執(zhí)行這種動(dòng)作。隨后,如圖2所示,DMA引擎210通過(guò)執(zhí)行DMA R/W,根據(jù)至少一個(gè)由VDD存儲(chǔ)器250編程的DMA鏈描述符來(lái)執(zhí)行數(shù)據(jù)訪問(wèn)請(qǐng)求或者文件操作,如轉(zhuǎn)移340處所示。
在一個(gè)實(shí)施例中,一旦DMA引擎210完成了傳輸,在轉(zhuǎn)移350處,DMA引擎可以向VDD驅(qū)動(dòng)器260發(fā)出一個(gè)中斷,以通知VDD驅(qū)動(dòng)器文件操作完成以及已將數(shù)據(jù)傳輸?shù)絍DD 250或從VDD 250傳輸?shù)椒峙浣o進(jìn)程302的存儲(chǔ)器。典型地,一旦VDD驅(qū)動(dòng)器260在轉(zhuǎn)移350接收到完成DMA傳輸?shù)耐ㄖ?,VDD驅(qū)動(dòng)器260可以通知進(jìn)程302所請(qǐng)求的文件操作或者向/從VDD存儲(chǔ)器250的讀/寫訪問(wèn)請(qǐng)求已完成。在一個(gè)實(shí)施例中,在轉(zhuǎn)移360處,VDD驅(qū)動(dòng)器260通知進(jìn)程302已完成的DMA傳輸。
因此,在一個(gè)實(shí)施例中,VDD驅(qū)動(dòng)器260的生成將訪問(wèn)VDD存儲(chǔ)器250之內(nèi)的文件數(shù)據(jù)的操作轉(zhuǎn)交給DMA控制器的集成DMA引擎,例如參照?qǐng)D1和圖2所說(shuō)明的。因此,通過(guò)將數(shù)據(jù)傳輸工作從CPU 102分擔(dān)到DMA控制器200,提高了總體的系統(tǒng)性能,從而使得CPU 102避免執(zhí)行傳統(tǒng)的數(shù)據(jù)傳輸以便執(zhí)行對(duì)VDD存儲(chǔ)器250的文件操作。此外,不同于請(qǐng)求使用CPU的頁(yè)地址擴(kuò)展(PAE)模式以尋址超過(guò)32位尋址邊界的范圍的傳統(tǒng)的RAMDISK驅(qū)動(dòng)器,將VDD存儲(chǔ)器數(shù)據(jù)傳輸分擔(dān)給DMA引擎210,不僅避免了通過(guò)使用PAE模式而通常導(dǎo)致的對(duì)于VDD驅(qū)動(dòng)器260的性能損失,而且避免了對(duì)于所有系統(tǒng)進(jìn)程的性能損失。
圖6是說(shuō)明使用公開的技術(shù)對(duì)設(shè)計(jì)進(jìn)行仿真、模擬以及制造的各種表示或格式的框圖。表示設(shè)計(jì)的數(shù)據(jù)會(huì)以許多方式表示該設(shè)計(jì)。首先,由于在仿真中有用,硬件可以用硬件描述語(yǔ)言來(lái)表示,或者用另一個(gè)功能描述語(yǔ)言表示,其必需提供關(guān)于期望所設(shè)計(jì)的硬件如何執(zhí)行的計(jì)算機(jī)化的模型??梢詫⒂布P?10存儲(chǔ)在存儲(chǔ)介質(zhì)400中,比如計(jì)算機(jī)存儲(chǔ)器,因此,可以使用模擬軟件420模擬該模型,其中模擬軟件將特定的一套測(cè)試430應(yīng)用到硬件模型以確定它是否真正按照計(jì)劃來(lái)運(yùn)行。在一些實(shí)施例中,沒(méi)有將仿真軟件記錄、收集或者包含在介質(zhì)中。
在設(shè)計(jì)的任何表示中,可以將數(shù)據(jù)存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。調(diào)制或生成光波或電波460以傳送這種信息,存儲(chǔ)器450或者磁或光存儲(chǔ)器440,比如光盤,可以是機(jī)器可讀介質(zhì)。任何這些介質(zhì)都可以攜帶設(shè)計(jì)信息。因此,術(shù)語(yǔ)“攜帶”(例如,機(jī)器可讀數(shù)據(jù)介質(zhì)攜帶信息)覆蓋了存儲(chǔ)在存儲(chǔ)裝置的信息或者編碼或調(diào)制為載波的信息。描述設(shè)計(jì)或設(shè)計(jì)的細(xì)節(jié)的位的集合是(當(dāng)體現(xiàn)為機(jī)器可讀介質(zhì),例如載體或存儲(chǔ)介質(zhì)時(shí))一物品,其可以封閉在其自身內(nèi)外,或者由他人用于進(jìn)一步設(shè)計(jì)或者制造。
替代實(shí)施例應(yīng)當(dāng)理解,對(duì)于其它實(shí)施例,可以使用不同的系統(tǒng)配置。例如,雖然對(duì)于其它實(shí)施例系統(tǒng)100包括單個(gè)CPU 102,但是多處理器系統(tǒng)(其中,一個(gè)或多個(gè)處理器可以在結(jié)構(gòu)和操作上與如上所述的CPU 102類似)也會(huì)受益于對(duì)各種實(shí)施例的VDD存儲(chǔ)器的集成DMA存儲(chǔ)器控制器訪問(wèn)。此外,不同類型的系統(tǒng)或者不同類型的計(jì)算機(jī)系統(tǒng),例如服務(wù)器、工作站、桌面計(jì)算機(jī)系統(tǒng)、游戲系統(tǒng)、嵌入式計(jì)算機(jī)系統(tǒng)、刀片服務(wù)器等等,可以用于其它實(shí)施例。
已經(jīng)公開了實(shí)施例和最佳方式,可以對(duì)已公開的實(shí)施例做出變形或改變,同時(shí)仍然屬于由以下權(quán)利要求所定義的本發(fā)明的實(shí)施例的范圍。
權(quán)利要求
1.一種方法,包括檢測(cè)對(duì)在易失性系統(tǒng)存儲(chǔ)器中實(shí)現(xiàn)的易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器的數(shù)據(jù)訪問(wèn)請(qǐng)求;以及發(fā)出直接存儲(chǔ)器訪問(wèn)(DMA)數(shù)據(jù)請(qǐng)求以執(zhí)行來(lái)自所述VDD存儲(chǔ)器的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
2.如權(quán)利要求1所述的方法,其中,在檢測(cè)所述數(shù)據(jù)訪問(wèn)請(qǐng)求之前,所述方法還包括由一進(jìn)程請(qǐng)求對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的文件的讀/寫訪問(wèn);通過(guò)一操作系統(tǒng)(OS)檢測(cè)對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件的進(jìn)程讀/寫訪問(wèn)請(qǐng)求;以及將所述讀/寫訪問(wèn)請(qǐng)求傳遞到VDD驅(qū)動(dòng)器。
3.如權(quán)利要求1所述的方法,其中,在檢測(cè)所述數(shù)據(jù)訪問(wèn)請(qǐng)求之前,所述方法還包括保留所述易失性系統(tǒng)存儲(chǔ)器的一部分;以及在初始化過(guò)程中,分配系統(tǒng)存儲(chǔ)器的所述保留部分以用作所述VDD存儲(chǔ)器。
4.如權(quán)利要求1所述的方法,其中,檢測(cè)所述數(shù)據(jù)訪問(wèn)請(qǐng)求包括從操作系統(tǒng)接收由一進(jìn)程發(fā)出的、對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器中的文件的讀/寫訪問(wèn)請(qǐng)求。
5.如權(quán)利要求1所述的方法,其中,發(fā)出所述DMA數(shù)據(jù)請(qǐng)求包括根據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求生成至少一個(gè)DMA鏈描述符;以及發(fā)出一DMA起動(dòng)命令以執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器中的文件的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
6.如權(quán)利要求5所述的方法,其中生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述VDD存儲(chǔ)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;計(jì)算所述易失性系統(tǒng)存儲(chǔ)器之內(nèi)的所述文件的物理開始地址;根據(jù)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件之內(nèi)的所述數(shù)據(jù)訪問(wèn)請(qǐng)求的偏移量計(jì)算DMA源地址;以及根據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求計(jì)算DMA目的地址。
7.如權(quán)利要求5所述的方法,其中,發(fā)出所述DMA起動(dòng)命令包括用本地系統(tǒng)存儲(chǔ)器之內(nèi)的所述至少一個(gè)DMA鏈描述符的地址更新DMA引擎后續(xù)地址寄存器;以及設(shè)置DMA引擎起動(dòng)DMA位,以使所述DMA引擎執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
8.如權(quán)利要求1所述的方法,還包括通過(guò)DMA引擎取得位于包含在后續(xù)描述符地址寄存器中的地址的DMA鏈描述符;根據(jù)所取得的DMA鏈描述符執(zhí)行DMA傳輸,以便根據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求將DMA數(shù)據(jù)傳輸?shù)酱鎯?chǔ)在所述VDD存儲(chǔ)器之內(nèi)的文件;以及如果完成所述DMA傳輸,則發(fā)出一中斷給虛擬磁盤驅(qū)動(dòng)器。
9.如權(quán)利要求1所述的方法,還包括如果所述DMA引擎完成所述數(shù)據(jù)訪問(wèn)請(qǐng)求的DMA傳輸,則從DMA引擎接收中斷;以及通知發(fā)出所述數(shù)據(jù)訪問(wèn)請(qǐng)求的應(yīng)用程序已經(jīng)完成了所述文件操作。
10.如權(quán)利要求1所述的方法,其中,所述VDD存儲(chǔ)器的尺寸大于四千兆字節(jié)。
11.一種制品,包括其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令可以用于編程系統(tǒng)以執(zhí)行包括下列步驟的方法檢測(cè)對(duì)在易失性系統(tǒng)存儲(chǔ)器中實(shí)現(xiàn)的易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器的數(shù)據(jù)訪問(wèn)請(qǐng)求;以及發(fā)出直接存儲(chǔ)器訪問(wèn)(DMA)數(shù)據(jù)請(qǐng)求以執(zhí)行來(lái)自所述VDD存儲(chǔ)器的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
12.如權(quán)利要求11所述的制品,其中發(fā)出所述DMA數(shù)據(jù)請(qǐng)求包括根據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求生成至少一個(gè)DMA鏈描述符;以及發(fā)出一DMA起動(dòng)命令以執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器中的文件的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
13.如權(quán)利要求12所述的制品,其中,生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述VDD存儲(chǔ)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;計(jì)算所述易失性系統(tǒng)存儲(chǔ)器之內(nèi)的所述文件的物理開始地址;根據(jù)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件之內(nèi)的所述數(shù)據(jù)訪問(wèn)請(qǐng)求的偏移量計(jì)算DMA源地址;以及根據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求計(jì)算DMA目的地址。
14.如權(quán)利要求12所述的制品,其中,發(fā)出所述DMA起動(dòng)命令包括用本地系統(tǒng)存儲(chǔ)器之內(nèi)的所述至少一個(gè)DMA鏈描述符的地址更新DMA引擎后續(xù)地址寄存器;以及設(shè)置DMA引擎起動(dòng)DMA位,以使所述DMA引擎執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
15.如權(quán)利要求11所述的制品,還包括如果所述DMA引擎完成所述數(shù)據(jù)訪問(wèn)請(qǐng)求的DMA傳輸,則從DMA引擎接收中斷;以及通知發(fā)出所述數(shù)據(jù)訪問(wèn)請(qǐng)求的應(yīng)用程序已經(jīng)完成了所述文件操作。
16.一種方法,包括通過(guò)一操作系統(tǒng)(OS)檢測(cè)對(duì)存儲(chǔ)在易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器之內(nèi)的文件的進(jìn)程讀/寫訪問(wèn)請(qǐng)求,其中,所述易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器在易失性系統(tǒng)存儲(chǔ)器之內(nèi)實(shí)現(xiàn);將所述讀/寫訪問(wèn)請(qǐng)求傳遞到VDD驅(qū)動(dòng)器;以及通過(guò)所述VDD驅(qū)動(dòng)器發(fā)出直接存儲(chǔ)器訪問(wèn)(DMA)數(shù)據(jù)請(qǐng)求以從存儲(chǔ)在所述VDD存儲(chǔ)器中的所述文件執(zhí)行所述讀/寫訪問(wèn)請(qǐng)求。
17.如權(quán)利要求16所述的方法,其中,發(fā)出所述DMA數(shù)據(jù)請(qǐng)求包括根據(jù)所述讀/寫訪問(wèn)請(qǐng)求生成至少一個(gè)DMA鏈描述符;以及發(fā)出DMA起動(dòng)命令以執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器中的所述文件的所述讀/寫訪問(wèn)請(qǐng)求。
18.如權(quán)利要求17所述的方法,其中,生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述虛擬磁盤驅(qū)動(dòng)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;計(jì)算所述易失性系統(tǒng)存儲(chǔ)器內(nèi)文件的物理開始地址;根據(jù)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件之內(nèi)的所述讀/寫訪問(wèn)請(qǐng)求的偏移量計(jì)算DMA源地址;以及根據(jù)所述讀/寫訪問(wèn)請(qǐng)求計(jì)算DMA目的地址。
19.如權(quán)利要求17所述的方法,其中,生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述VDD存儲(chǔ)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;以及計(jì)算所述易失性系統(tǒng)存儲(chǔ)器之內(nèi)的所述文件的物理開始地址。
20.如權(quán)利要求16所述的方法,還包括通過(guò)DMA引擎取得位于包含在后續(xù)描述符地址寄存器中的地址的DMA鏈描述符;根據(jù)所取得的DMA鏈描述符執(zhí)行DMA傳輸,以便根據(jù)所述讀/寫訪問(wèn)請(qǐng)求從存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的文件傳輸DMA數(shù)據(jù);以及如果完成所述DMA傳輸,則發(fā)出一中斷給所述虛擬磁盤驅(qū)動(dòng)器。
21.一種制品,包括其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),所述指令可以用于編程系統(tǒng)以執(zhí)行包括下列步驟的方法通過(guò)一操作系統(tǒng)(OS)檢測(cè)對(duì)存儲(chǔ)在易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器之內(nèi)的文件的進(jìn)程讀/寫訪問(wèn)請(qǐng)求,其中,所述易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器在易失性系統(tǒng)存儲(chǔ)器之內(nèi)實(shí)現(xiàn);將所述讀/寫訪問(wèn)請(qǐng)求傳遞到VDD驅(qū)動(dòng)器;以及通過(guò)所述VDD驅(qū)動(dòng)器發(fā)出直接存儲(chǔ)器訪問(wèn)(DMA)數(shù)據(jù)請(qǐng)求以從存儲(chǔ)在所述VDD存儲(chǔ)器中的所述文件執(zhí)行所述讀/寫訪問(wèn)請(qǐng)求。
22.如權(quán)利要求21所述的制品,其中,發(fā)出所述DMA數(shù)據(jù)請(qǐng)求包括根據(jù)所述讀/寫訪問(wèn)請(qǐng)求生成至少一個(gè)DMA鏈描述符;以及發(fā)出DMA起動(dòng)命令以執(zhí)行對(duì)存儲(chǔ)在所述VDD存儲(chǔ)器中的所述文件的所述讀/寫訪問(wèn)請(qǐng)求。
23.如權(quán)利要求22所述的制品,其中,生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述虛擬磁盤驅(qū)動(dòng)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;計(jì)算所述易失性系統(tǒng)存儲(chǔ)器之內(nèi)的所述文件的物理開始地址;根據(jù)存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件之內(nèi)的所述讀/寫訪問(wèn)請(qǐng)求的偏移量計(jì)算DMA源地址;以及根據(jù)所述讀/寫訪問(wèn)請(qǐng)求計(jì)算DMA目的地址。
24.如權(quán)利要求22所述的制品,其中,生成所述至少一個(gè)DMA鏈描述符包括識(shí)別所述VDD存儲(chǔ)器之內(nèi)的、所述數(shù)據(jù)訪問(wèn)請(qǐng)求所指向的文件;以及計(jì)算所述易失性系統(tǒng)存儲(chǔ)器之內(nèi)的所述文件的物理開始地址。
25.如權(quán)利要求21所述的制品,還包括通過(guò)DMA引擎取得位于包含在后續(xù)描述符地址寄存器中的地址的DMA鏈描述符;根據(jù)所取得的DMA鏈描述符執(zhí)行DMA傳輸,以便根據(jù)所述讀/寫訪問(wèn)請(qǐng)求從存儲(chǔ)在所述VDD存儲(chǔ)器之內(nèi)的所述文件傳輸DMA數(shù)據(jù);以及如果完成所述DMA傳輸,則發(fā)出一中斷給所述虛擬磁盤驅(qū)動(dòng)器。
26.一種系統(tǒng),包括易失性系統(tǒng)存儲(chǔ)器,其具有為提供易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器所分配的部分;芯片組,其連接到所述易失性系統(tǒng)存儲(chǔ)器,所述芯片組包括直接存儲(chǔ)器訪問(wèn)(DMA)引擎以執(zhí)行到所述易失性系統(tǒng)存儲(chǔ)器的DMA傳輸;以及非易失性系統(tǒng)存儲(chǔ)器,其連接到所述芯片組,所述非易失性系統(tǒng)存儲(chǔ)器包括VDD驅(qū)動(dòng)器以檢測(cè)對(duì)所述虛擬磁盤驅(qū)動(dòng)器的數(shù)據(jù)訪問(wèn)請(qǐng)求以及向所述芯片組發(fā)出DMA請(qǐng)求,以使所述DMA引擎執(zhí)行對(duì)所述VDD存儲(chǔ)器的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
27.如權(quán)利要求26所述的系統(tǒng),其中,所述芯片組還包括具有集成DMA引擎的存儲(chǔ)器控制器中心。
28.如權(quán)利要求26所述的系統(tǒng),其中,所述芯片組還包括輸入/輸出控制器中心。
29.如權(quán)利要求26所述的系統(tǒng),其中,所述芯片組還包括DMA控制器,其包括至少一個(gè)后續(xù)描述符地址寄存器以存儲(chǔ)由所述VDD驅(qū)動(dòng)器編程的DMA鏈描述符的物理地址,以執(zhí)行對(duì)所述VDD存儲(chǔ)器的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
30.如權(quán)利要求29所述的系統(tǒng),其中,所述DMA控制器還包括通道控制寄存器,其包含一DMA起動(dòng)位以指示所述DMA引擎裝載所述DMA鏈描述符并執(zhí)行對(duì)所述VDD存儲(chǔ)器的所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
全文摘要
一種方法和裝置,用于使用集成直接存儲(chǔ)器訪問(wèn)(DMA)引擎進(jìn)行高性能易失性磁盤驅(qū)動(dòng)器(VDD)存儲(chǔ)器訪問(wèn)。在一個(gè)實(shí)施例中,所述方法包括檢測(cè)對(duì)在易失性系統(tǒng)存儲(chǔ)器之內(nèi)實(shí)現(xiàn)的VDD存儲(chǔ)器的數(shù)據(jù)訪問(wèn)請(qǐng)求。一旦檢測(cè)到數(shù)據(jù)訪問(wèn)請(qǐng)求,VDD驅(qū)動(dòng)器可以發(fā)出DMA數(shù)據(jù)請(qǐng)求以執(zhí)行來(lái)自VDD的數(shù)據(jù)訪問(wèn)請(qǐng)求。因此,在一個(gè)實(shí)施例中,向/從在易失性系統(tǒng)存儲(chǔ)器的所分配部分之內(nèi)實(shí)現(xiàn)的VDD存儲(chǔ)器傳輸數(shù)據(jù)的工作被分擔(dān)給DMA引擎,例如存儲(chǔ)器控制器中心(MCH)中的集成DMA引擎。還描述了其它實(shí)施例。
文檔編號(hào)G06F9/445GK1961300SQ200580017641
公開日2007年5月9日 申請(qǐng)日期2005年6月21日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者什里坎特·M·沙阿, 舍唐·J·拉瓦爾 申請(qǐng)人:英特爾公司