欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

緩存存儲適配器架構(gòu)的制作方法

文檔序號:6360381閱讀:173來源:國知局
專利名稱:緩存存儲適配器架構(gòu)的制作方法
技術(shù)領(lǐng)域
本公開涉及緩存主機(jī)總線適配器,并且更具體地,涉及使用固態(tài)存儲設(shè)備和非易失性存儲器的緩存主機(jī)總線適配器。
背景技術(shù)
在此提供的背景描述是為了總體上給出本公開的上下文。就在此背景技術(shù)中描述 的工作而言,發(fā)明人的工作以及在提交時沒有被證明為現(xiàn)有技術(shù)的描述并未被明確或者隱含地稱為相對于本公開的現(xiàn)有技術(shù)?,F(xiàn)在參考圖1A,示出了一個計算機(jī)架構(gòu)的示例的框圖。處理器100經(jīng)由北橋模塊106與主存儲器102和圖形處理模塊104通信。北橋模塊106與提供對外圍設(shè)備的訪問的南橋模塊108對接。僅作為示例,南橋模塊108與PCI (外圍組件互連)Express插槽110對接。在圖IA中,PCI Express卡112-1和112-2安裝在PCI Express插槽110上。現(xiàn)在參考圖1B,示出了一個備選計算機(jī)架構(gòu)。處理器150包括允許處理器150直接與主存儲器152和圖形處理模塊154通信的電路。用于在處理器150與圖形處理模塊154之間通信的總線例如可以是AGP(加速圖形端口)或者PCI Express。北橋模塊156提供對處理器150的外圍訪問。例如,北橋模塊156與安裝有PCI Express卡112-1和112-2的PCI Express插槽110對接。南橋模塊108和156可以與附加的總線對接,例如用于連網(wǎng)的以太網(wǎng)、用于外部外設(shè)的USB(通用串行總線)以及用于盤驅(qū)動的SATA(串行高級技術(shù)附件)。PCI Express卡112可以實(shí)現(xiàn)附加的接口。例如,PCI Express卡112-1可以是主機(jī)總線適配器,其為處理器100提供對諸如SCSI (小型計算機(jī)系統(tǒng)接口 )、eSATA (外部SATA)或者光纖通道的接口的訪問。

發(fā)明內(nèi)容
一種接口適配器,包括包含非易失性隨機(jī)訪問存儲器(RAM)的存儲模塊和查找模塊。存儲模塊被配置為將元數(shù)據(jù)存儲在非易失性RAM中。元數(shù)據(jù)標(biāo)識緩存在固態(tài)存儲設(shè)備中的來自外部存儲設(shè)備的數(shù)據(jù)。查找模塊被配置為接收讀請求。查找模塊進(jìn)一步被配置為響應(yīng)于讀請求并且基于元數(shù)據(jù)而選擇性地提供來自固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)或者提供從外部存儲設(shè)備獲取的第二數(shù)據(jù)。在其他特征中,存儲模塊進(jìn)一步被配置為在非易失性RAM中維護(hù)寫緩沖區(qū)。第二數(shù)據(jù)在從外部存儲設(shè)備被獲取之后被存儲在寫緩沖區(qū)中。第二數(shù)據(jù)在被存儲在寫緩沖區(qū)之后被存儲到固態(tài)存儲設(shè)備中。在其他特征中,接口適配器包括緩沖區(qū)控制模塊,被配置為確定何時將來自寫緩沖區(qū)的第二數(shù)據(jù)存儲到固態(tài)存儲設(shè)備中。緩沖區(qū)控制模塊被配置為基于寫緩沖區(qū)中存在的用于存儲在固態(tài)存儲設(shè)備中的相鄰位置中的、包括第二數(shù)據(jù)在內(nèi)的數(shù)據(jù)的預(yù)定數(shù)量,而將第二數(shù)據(jù)存儲到固態(tài)存儲設(shè)備中。在又一些特征中,接口適配器包括緩存回收模塊,被配置為選擇性地允許固態(tài)存儲設(shè)備中的數(shù)據(jù)被覆蓋。在其他特征中,查找模塊被配置為響應(yīng)于讀請求而構(gòu)建存在于存儲模塊中的數(shù)據(jù)的命中列表,構(gòu)建不存在于存儲模塊中的數(shù)據(jù)的未命中列表,以及根據(jù)未命中列表向外部存儲設(shè)備發(fā)送數(shù)據(jù)請求。一種主機(jī)總線適配器,包括固態(tài)存儲設(shè)備、非易失性隨機(jī)訪問存儲器(RAM)以及執(zhí)行模塊。主機(jī)總線適配器被配置為安裝在計算機(jī)中。執(zhí)行模塊被配置為將來自外部存儲設(shè)備的數(shù)據(jù)緩存在固態(tài)存儲設(shè)備中。執(zhí)行模塊還被配置為將元數(shù)據(jù)存儲在非易失性RAM中。元數(shù)據(jù)指示什么數(shù)據(jù)被緩存在固態(tài)存儲設(shè)備中。執(zhí)行模塊還被配置為從計算機(jī)的中央處理器接收讀請求,并且使用來自固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)選擇性地對讀請求做出響 應(yīng)。在其他特征中,執(zhí)行模塊被配置為使用部分非易失性RAM作為寫緩沖區(qū)。執(zhí)行模塊還被配置為從中央處理器接收寫請求。執(zhí)行模塊還被配置為在將對應(yīng)于寫請求的寫數(shù)據(jù)存儲在固態(tài)存儲設(shè)備之前將寫數(shù)據(jù)存儲在寫緩沖區(qū)中。執(zhí)行模塊還被配置為響應(yīng)于讀請求而選擇性地提供來自寫緩沖區(qū)的數(shù)據(jù)。執(zhí)行模塊還被配置為當(dāng)元數(shù)據(jù)指示用于讀請求之一的第一數(shù)據(jù)未被存儲在寫緩沖區(qū)或者固態(tài)存儲設(shè)備中時,從外部存儲設(shè)備請求第一數(shù)據(jù)。執(zhí)行模塊還被配置為一旦從外部存儲設(shè)備接收到第一數(shù)據(jù),便在將第一數(shù)據(jù)存儲在固態(tài)存儲設(shè)備中之前將第一數(shù)據(jù)存儲在寫緩沖區(qū)中。一種操作接口適配器的方法,包括將元數(shù)據(jù)存儲在接口適配器的非易失性隨機(jī)訪問存儲器(RAM)中。元數(shù)據(jù)標(biāo)識被緩存在固態(tài)存儲設(shè)備中的來自外部存儲設(shè)備的數(shù)據(jù)。該方法包括接收讀請求,以及響應(yīng)于讀請求并且基于元數(shù)據(jù)而選擇性地提供來自固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)或者提供從外部存儲設(shè)備獲取的第二數(shù)據(jù)。通過詳細(xì)描述、權(quán)利要求和附圖,本公開的其他適用領(lǐng)域?qū)⒆兊们宄?。詳?xì)描述和具體示例僅用于說明目的,無意限制本公開的范圍。


通過詳細(xì)描述和附圖,本公開將變得被更完全地理解,其中圖IA是根據(jù)現(xiàn)有技術(shù)的一個計算機(jī)架構(gòu)的功能框圖;圖IB是根據(jù)現(xiàn)有技術(shù)的一個計算機(jī)架構(gòu)的功能框圖;圖2A是根據(jù)本公開原理的一個計算系統(tǒng)的示例的功能框圖;圖2B是根據(jù)本公開原理的一個計算系統(tǒng)的備選示例的功能框圖;圖3A是根據(jù)本公開原理的緩存存儲適配器的示例的一個高級別功能框圖;圖3B是根據(jù)本公開原理的緩存存儲適配器的示例的另一高級別功能框圖;圖4是根據(jù)本公開原理的緩存存儲適配器的一個實(shí)現(xiàn)示例的功能框圖;圖5是根據(jù)本公開原理的緩存存儲適配器的一個實(shí)現(xiàn)示例的功能框圖;圖6是描繪根據(jù)本公開原理的緩存存儲適配器的操作示例的流程圖;以及
圖7是描繪根據(jù)本公開原理的緩存存儲適配器的操作示例的流程圖。
具體實(shí)施例方式下面的描述本質(zhì)上僅僅是說明性的,而絕非有意限制公開、其應(yīng)用或使用。出于清楚的目的,在附圖中將使用相同的參考標(biāo)號來標(biāo)識類似的元素。在此使用的短語“A、B和C中至少一個”應(yīng)當(dāng)被解釋為使用非排他性邏輯“或”的邏輯(A或B或C)。應(yīng)當(dāng)理解,方法中的步驟可以按照不同的順序執(zhí)行而不改變本發(fā)明的原理。在此使用的術(shù)語“模塊”可以是以下項(xiàng)的部分或者包括以下項(xiàng)專用集成電路(ASIC);電子電路;組合邏輯電路;現(xiàn)場可編程門陣列(FPGA);執(zhí)行代碼的處理器(共享、專用或群組);提供所描述功能的其他適當(dāng)部件;或者上述某些或全部的組合,諸如在片上·系統(tǒng)中。術(shù)語“模塊”可以包括存儲由處理器執(zhí)行的代碼的存儲器(共享、專用或群組)。上面使用的術(shù)語“代碼”可以包括軟件、固件和/或微代碼,并且可以表示程序、例程、函數(shù)、類和/或?qū)ο?。上面使用的術(shù)語“共享”表示來自多個模塊的某些或者全部代碼可以使用單個(共享的)處理器執(zhí)行。而且,來自多個模塊某些或者全部代碼可以由單個(共享的)存儲器存儲。上面使用的術(shù)語“群組”表示來自單個模塊的某些或者全部代碼可以使用一組處理器執(zhí)行。而且,來自單個模塊的某些或者全部代碼可以使用一組存儲器存儲。在此描述的裝置和方法可以由一個或多個處理器執(zhí)行的一個或多個計算機(jī)程序來實(shí)現(xiàn)。計算機(jī)程序包括存儲在非瞬態(tài)有形計算機(jī)可讀介質(zhì)上的處理器可執(zhí)行指令。計算機(jī)程序還可以包括存儲的數(shù)據(jù)。非瞬態(tài)有形計算機(jī)可讀介質(zhì)的非限制性示例是非易失性存儲器、磁性存儲設(shè)備以及光學(xué)存儲設(shè)備。現(xiàn)在參考圖2A,其示出了根據(jù)本公開原理的一個計算系統(tǒng)的示例。計算機(jī)202包括處理器204,其使用北橋模塊210與主存儲器206和圖形處理模塊208對接。北橋模塊210與南橋模塊212對接,南橋模塊212為處理器204提供對外設(shè)的訪問。北橋模塊212與PCI Express插槽220對接。PCI Express卡222安裝在一個PCIExpress插槽中,并且緩存存儲適配器224安裝在另一 PCI Express插槽220中。緩存存儲適配器224與存儲設(shè)備230對接,并且向處理器204提供對存儲設(shè)備230的讀和寫訪問。處理器204、主存儲器206、圖形處理模塊208、北橋模塊210以及南橋模塊212可以統(tǒng)稱為主機(jī)232。緩存存儲適配器224則可以說成是為主機(jī)232提供對存儲設(shè)備230的訪問。存儲設(shè)備230可以包括任何類型的大容量存儲。僅作為示例,存儲設(shè)備230可以包括以下一個或多個邏輯卷管理(LVM)設(shè)備、虛擬卷、RAID(廉價磁盤冗余陣列)、由LUN(邏輯單元號)標(biāo)識的設(shè)備、iSCSI (因特網(wǎng)小型計算機(jī)系統(tǒng)接口)1^隊(duì)?以光纖通道)1^隊(duì)?((^(以太網(wǎng)光纖通道)LUN、DAS (直接附接存儲)或者SAN (存儲區(qū)域網(wǎng)絡(luò))。主機(jī)232經(jīng)由緩存存儲適配器224向存儲設(shè)備230發(fā)出命令。諸如讀和寫的訪問請求可以由緩存存儲適配器224緩存??刂泼羁梢员痪彺娲鎯m配器224解釋和執(zhí)行,和/或可以被傳遞給存儲設(shè)備230。在各種實(shí)現(xiàn)中,從主機(jī)232發(fā)送給緩存存儲適配器224的命令可以是SCSI命令的形式。緩存存儲設(shè)備223可以將SCSI命令轉(zhuǎn)譯為用于存儲設(shè)備230的適當(dāng)命令。緩存存儲適配器224還在PCI Express協(xié)議與用于訪問存儲設(shè)備230的協(xié)議之間進(jìn)行轉(zhuǎn)譯。僅作為示例,存儲設(shè)備230可以使用以太網(wǎng)、eSATA(外部串行高級技術(shù)附件)、SAS(串行附接SCSI)、SCSI (小型計算機(jī)系統(tǒng)接口)、無限帶寬技術(shù)或者光纖通道來訪問。緩存存儲適配器224被描繪為是PCI Express卡。然而,本公開的原理也適用于其他接口。例如,緩存存儲適配器224可以使用USB(通用串行總線)接口,諸如USB 2. O或者USB 3.0。備選地,緩存存儲適配器224可以使用諸如PCI或者PCI-X的舊有接口。緩存存儲適配器224可被實(shí)現(xiàn)為多種形狀因數(shù)。例如,緩存存儲適配器224可以被實(shí)現(xiàn)為ExpressCard/34或者ExpressCard/54形狀因數(shù)。ExpressCard形狀因數(shù)通??杀挥糜诒銛y式計算機(jī)。當(dāng)被實(shí)現(xiàn)為ExpressCard時,緩存存儲適配器224可以被配置為使用 PCI Express 或者 USB。現(xiàn)在參考圖2B,其示出了根據(jù)本公開原理的一個計算系統(tǒng)的備選示例。計算機(jī)250包括處理器252,其與主存儲器254和圖形處理模塊256對接。處理器252經(jīng)由南橋模塊 258與外設(shè)對接。例如,南橋模塊258提供對PCI Express插槽270的訪問。PCI Express卡222和緩存存儲適配器224被示為安裝在PCI Express插槽270中。處理器252、主存儲器254、圖形處理模塊256以及南橋模塊258被統(tǒng)稱為主機(jī)272。緩存存儲適配器224可以以不同方式被實(shí)現(xiàn)或配置,以利用不同于圖2A中主機(jī)232的主機(jī)272的架構(gòu)。主機(jī)232或者主機(jī)272可以實(shí)現(xiàn)目標(biāo)模式驅(qū)動器(諸如SCSI目標(biāo)模式驅(qū)動器)或者發(fā)起方模式驅(qū)動器以用于與緩存存儲適配器224通信。在圖2B中,緩存存儲適配器224被示為與存儲區(qū)域網(wǎng)絡(luò)280對接。存儲區(qū)域網(wǎng)絡(luò)280包括使用連網(wǎng)部件連接的一個或多個存儲設(shè)備,連網(wǎng)部件可以包括通用計算機(jī)連網(wǎng)部件和/或?qū)S糜诖鎯Φ倪B網(wǎng)部件。例如,存儲區(qū)域網(wǎng)絡(luò)280可以包括光纖通道互連、無限帶寬互連、以太網(wǎng)互連(諸如千兆位或者10千兆位以太網(wǎng)互連)、通過以太網(wǎng)的光纖通道互連、iSCSI互連以及通過以太網(wǎng)的ATA互連。存儲區(qū)域網(wǎng)絡(luò)280還可以向其他計算機(jī)提供存儲資源。僅作為示例,第二計算機(jī)282和第三計算機(jī)284被示為與存儲區(qū)域網(wǎng)絡(luò)280對接。在各種實(shí)現(xiàn)中,計算機(jī)250可以向存儲區(qū)域網(wǎng)絡(luò)280的存儲資源寫入數(shù)據(jù),該數(shù)據(jù)將由第二計算機(jī)282和/或第三計算機(jī)284訪問ο在這些情況中,可以通過啟用緩存存儲適配器224的寫通(write-through)模式而改善所寫入數(shù)據(jù)的一致性。在寫通模式中,緩存存儲適配器224以盡可能小的延遲向存儲區(qū)域網(wǎng)絡(luò)280提供被修改的數(shù)據(jù)。在諸如寫回(write-back)模式的其他模式中,在被修改的數(shù)據(jù)被寫回存儲區(qū)域網(wǎng)絡(luò)280之前,緩存存儲適配器224可以在較長時段內(nèi)存儲被修改的數(shù)據(jù)?,F(xiàn)在參考圖3A,其示出了緩存存儲適配器300的一個示例的高級別框圖。僅作為示例,緩存存儲適配器300被示為與主機(jī)232和存儲設(shè)備230對接。緩存存儲適配器300包括處理器310,其可以執(zhí)行來自諸如閃存存儲器或者只讀存儲器的固件312的指令。處理器310可以包括內(nèi)部臨時存儲器,并且可以在易失性存儲器314中存儲臨時指令和數(shù)據(jù)信
肩、O處理器310與非易失性RAM(隨機(jī)訪問存儲器)320對接。非易失性RAM 320可以包括易失性RAM,諸如SRAM(靜態(tài)隨機(jī)訪問存儲器)、DRAM(動態(tài)隨機(jī)訪問存儲器)或者SDRAM(同步動態(tài)隨機(jī)訪問存儲器)。非易失性RAM 320包括使易失性RAM具有非易失性RAM屬性的部件。僅作為示例,非易失性RAM 320可以包括后備電源,諸如電池,其可以是可充電電池。非易失性RAM 320還可以包括超級電容器或者任何適當(dāng)類型的雙電層電容器,其提供功率以保持非易失性RAM320的內(nèi)容。非易失性RAM 320因此可以在有限的時段內(nèi)保持?jǐn)?shù)據(jù)。在該時段內(nèi),可以向緩存存儲適配器300提供后備功率。例如,不間斷電源或者后備發(fā)電機(jī)可以恢復(fù)向緩存存儲適配器300的功率。處理器310還可以與固態(tài)驅(qū)動器330對接。固態(tài)驅(qū)動器330包括諸如閃存存儲器的非易失性存儲器。僅作為示例,閃存存儲器可以包括單級單元(SLC)存儲單元、多級單元(MLC)存儲單元和/或企業(yè)MLC存儲單元,其被設(shè)計為具有低于標(biāo)準(zhǔn)MLC存儲單元的錯誤率。存儲單元可以是NAND存儲單元。處理器310執(zhí)行將來自存儲設(shè)備230的數(shù)據(jù)緩存到固態(tài)驅(qū)動器330中的指令。關(guān)于什么數(shù)據(jù)被存儲在固態(tài)驅(qū)動器330中的信息被稱為緩存元數(shù)據(jù)。緩存元數(shù)據(jù)被存儲在非 易失性RAM 320中。緩存元數(shù)據(jù)還可以存儲與固態(tài)驅(qū)動器中存儲的數(shù)據(jù)有關(guān)的附加屬性,諸如最后訪問時間、訪問次數(shù)以及數(shù)據(jù)是否被修改過。由主機(jī)232提供的寫數(shù)據(jù)被存儲在非易失性RAM 320中。非易失性RAM 320中被用于存儲寫數(shù)據(jù)的部分稱為寫緩沖區(qū)。處理器310可以執(zhí)行非易失性RAM 320中的特定部分作為寫緩沖區(qū)。處理器310可以根據(jù)寫緩沖區(qū)需要多少空間而調(diào)節(jié)此量。在各種實(shí)現(xiàn)中,處理器310不進(jìn)行對非易失性RAM 320中的寫緩沖區(qū)的任何顯式指定。相反,處理器310將緩存元數(shù)據(jù)和寫緩沖區(qū)數(shù)據(jù)二者都存儲在非易失性RAM 320中。當(dāng)非易失性RAM 320中剩余的空閑空間有限時,可以減少寫緩沖區(qū)數(shù)據(jù)的量。在各種實(shí)現(xiàn)中,處理器310可以將緩存元數(shù)據(jù)存儲在非易失性RAM 320的地址范圍的一端,并且從非易失性RAM 320的地址范圍的相對端開始存儲寫緩沖區(qū)。隨著更多的緩存元數(shù)據(jù)和寫緩沖區(qū)數(shù)據(jù)被存儲,非易失性RAM 320的相應(yīng)部分?jǐn)U展以彼此相遇。處理器310繼而可以負(fù)責(zé)確保在寫緩沖區(qū)與緩存元數(shù)據(jù)之間不存在重疊。固態(tài)驅(qū)動器330可以包括存儲單元以及存儲控制器。存儲控制器可以實(shí)現(xiàn)平均讀寫算法(wear leveling algorithms),其動態(tài)地向固態(tài)驅(qū)動器330中的各個位置分配數(shù)據(jù),以便最大化固態(tài)驅(qū)動器330的可用生命周期。固態(tài)驅(qū)動器330可以由一個或多個控制器集成電路以及一個或多個存儲集成電路實(shí)現(xiàn)。這些集成電路可以被安裝在緩存存儲適配器300的主電路板上。備選地,固態(tài)驅(qū)動器330的集成電路可以是現(xiàn)在獨(dú)立電路板上,該獨(dú)立電路板可以作為子板被插入緩存存儲適配器300。在其他實(shí)現(xiàn)中,固態(tài)驅(qū)動器330可以是全封閉驅(qū)動器,其可在零售商處獲得以供一般性使用,諸如被用作膝上型計算機(jī)的主硬盤驅(qū)動器。在這些實(shí)現(xiàn)中,固態(tài)驅(qū)動器330可以被安裝至緩存存儲適配器300,或者可以經(jīng)由柔性纜線被連接到緩存存儲適配器300。僅作為示例,固態(tài)驅(qū)動器330可以經(jīng)由SATA、eSATA或者SAS (串行附接SCSI)接口而被安裝在與主機(jī)232和緩存存儲適配器300共同的機(jī)箱內(nèi)部。緩存存儲適配器300可以被配置使得固態(tài)驅(qū)動器330可被替換以增加固態(tài)驅(qū)動器330的大小以及在固態(tài)驅(qū)動器的可用生命周期到期時替換它。緩存存儲適配器300可以提供與包括固態(tài)驅(qū)動器330的多個固態(tài)驅(qū)動器的連通性。在各種實(shí)現(xiàn)中,固態(tài)驅(qū)動器的容量和性能特性不必是統(tǒng)一的。在各種實(shí)現(xiàn)中,固態(tài)驅(qū)動器之一(例如固態(tài)驅(qū)動器330)可以被安裝至緩存存儲適配器300,而其他固態(tài)驅(qū)動器經(jīng)由纜線被安裝至緩存存儲適配器300?,F(xiàn)在參考圖3B,示出了緩存存儲適配器350的實(shí)現(xiàn)示例的另一高級別功能框圖。處理器310、固件312、易失性存儲器314和非易失性RAM 320可以類似于圖3A中所示。在圖3B中,固態(tài)驅(qū)動器360被示為獨(dú)立于緩存存儲適配器350。固態(tài)驅(qū)動器360因此可以獨(dú)立于緩存存儲適配器350被安裝,并且設(shè)置可以不在緩存存儲適配器350的相同計算機(jī)機(jī)箱內(nèi)?,F(xiàn)在參考圖4,示出了緩存存儲適配器400的一個實(shí)現(xiàn)示例的功能框圖。緩存存儲適配器400包括執(zhí)行模塊410和存儲模塊420。執(zhí)行模塊410可以包括處理器和存儲器,其中處理器執(zhí)行來自存儲器的指令以執(zhí)行各種功能。例如,圖4的執(zhí)行模塊包括請求轉(zhuǎn)譯模塊422、查找模塊424、輸入/輸出優(yōu)化模塊 426、緩存回收模塊424、預(yù)讀(read-ahead)模塊430以及緩存未命中模塊432。請求轉(zhuǎn)譯模塊422將來自主機(jī)232的命令轉(zhuǎn)譯為可由執(zhí)行模塊410的其他模塊使用的形式。而且,請求轉(zhuǎn)譯模塊422可以將來自主機(jī)232的命令轉(zhuǎn)譯為對應(yīng)于存儲設(shè)備230的形式。僅作為示例,主機(jī)232可以向請求轉(zhuǎn)譯模塊422提供SCSI命令。請求轉(zhuǎn)譯模塊422繼而可以將這些命令轉(zhuǎn)換為通用訪問命令和/或可以將這些命令轉(zhuǎn)換為對應(yīng)于存儲設(shè)備230的格式,諸如光纖通道命令。在各種實(shí)現(xiàn)中,請求轉(zhuǎn)譯模塊422可以按照不同于控制命令來對待諸如讀命令和寫命令的訪問命令。例如,控制命令可以經(jīng)歷最少的轉(zhuǎn)譯或者不經(jīng)歷轉(zhuǎn)譯,并且隨后被傳遞給存儲設(shè)備230。存儲模塊420包括非易失性RAM 440。在非易失性RAM 400中,執(zhí)行模塊410存儲緩存元數(shù)據(jù)442,并且使用一些非易失性RAM 440作為寫緩沖區(qū)444。執(zhí)行模塊410可以分配非易失性RAM 440的特定部分以用作寫緩沖區(qū)444。該分配可以隨需調(diào)節(jié)。備選地,執(zhí)行模塊410可以僅僅將寫緩沖區(qū)數(shù)據(jù)存儲在非易失性RAM 440中,而不單獨(dú)設(shè)置非易失性RAM 440的任何特定部分作為寫緩沖區(qū)444。存儲模塊420還在邏輯上包括固態(tài)驅(qū)動器450,其被更為一般地稱為固態(tài)存儲設(shè)備。盡管被示為緩存存儲器適配器400的一部分的,但是如上所述,固態(tài)驅(qū)動器450可被可拆卸地安裝至緩存存儲適配器400,或者可以獨(dú)立于緩存存儲適配器400并且經(jīng)由纜線連接。固態(tài)驅(qū)動器450可以被安裝在緩存存儲適配器400的共同機(jī)箱中,或者可以在該機(jī)箱外部。固態(tài)驅(qū)動器450可以使用SATA或者eSATA與緩存存儲適配器400的其他部分通信。存儲設(shè)備230被稱為外部存儲設(shè)備,因?yàn)榇鎯υO(shè)備230在功能上和物理上都獨(dú)立于緩存存儲適配器400。在很多實(shí)現(xiàn)中,存儲設(shè)備230將在獨(dú)立于安裝有緩存存儲適配器400的計算機(jī)機(jī)箱的機(jī)箱中。實(shí)際上,存儲設(shè)備230甚至可以不在緩存存儲適配器400的相同服務(wù)器機(jī)架中,或者甚至不在緩存存儲適配器400的同一間房間中。特別地,當(dāng)存儲設(shè)備230被實(shí)現(xiàn)為SAN(存儲區(qū)域網(wǎng)絡(luò))時,存儲設(shè)備230可以不限于單個位置。在各種實(shí)現(xiàn)中,諸如SAN(存儲區(qū)域網(wǎng)絡(luò))的存儲設(shè)備230的實(shí)現(xiàn)可以隱藏底層復(fù)雜性。存儲設(shè)備230因此可以向緩存存儲適配器300提供接口,就像存儲設(shè)備230是單個硬盤卷(例如單個硬盤驅(qū)動器)一樣。當(dāng)請求轉(zhuǎn)譯模塊422接收到讀請求時,作為該讀請求目標(biāo)的地址被提供給查找模塊424。查找模塊424查詢緩存元數(shù)據(jù)442以確定目標(biāo)地址當(dāng)前是否被緩存在讀緩沖區(qū)444或者固態(tài)驅(qū)動器450中。查找模塊424生成被緩存的目標(biāo)地址的命中列表,并且生成未被緩存的地址的未命中列表。查找模塊424將未命中列表提供給緩存未命中模塊432。緩存未命中模塊432通常將從存儲設(shè)備230請求目標(biāo)地址?;谧x請求的大小,查找模塊424可以將讀請求分為多個查找請求。對于每個查找請求,查找模塊424基于緩存元數(shù)據(jù)442確定命中列表和未命中列表。對存儲設(shè)備230的訪問的粒度可以不同于從主機(jī)232接收的訪問請求的粒度。例如,主機(jī)232可以請求字節(jié)或者字,而存儲設(shè)備230可以按塊訪問。換言之,每個讀或者寫可以作為一個或多個塊被執(zhí)行。僅作為示例,每個塊的大小可以是4千字節(jié)。緩存未命中模塊432因此可以從存儲設(shè)備230請求將包括來自未命中列表的目標(biāo)地址的任何塊。這通過讀取來自存儲設(shè)備230的塊而自動地利用了空間局部性,其可以包括目標(biāo)地址之前和/ 或之后的數(shù)據(jù)。而且,緩存未命中模塊432可以被配置為同時從存儲設(shè)備230請求一個或多個后續(xù)塊和/或一個或多個先前塊,以試圖進(jìn)一步利用空間局部性。預(yù)讀模塊430可以嘗試預(yù)測在不久的將來將訪問什么塊。預(yù)讀模塊430繼而向存儲設(shè)備230發(fā)送針對這些塊的讀請求。在各種實(shí)現(xiàn)中,預(yù)讀模塊430可以等待發(fā)出這些讀請求,直到存儲設(shè)備230結(jié)束了對來自緩存未命中模塊432的請求的服務(wù)。輸入/輸出優(yōu)化模塊426可以跟蹤由主機(jī)232請求的訪問以及被發(fā)送到存儲設(shè)備230的讀請求。輸入/輸出優(yōu)化模塊426可以被配置為動態(tài)地校準(zhǔn)存儲設(shè)備230的溫度和局部性信息。該校準(zhǔn)可以逐個區(qū)域進(jìn)行,其中基于輸入/輸出優(yōu)化模塊426所做的決策,每個區(qū)域可以是預(yù)定數(shù)目的塊或者可以具有可變的大小。術(shù)語“溫度”是指存儲設(shè)備230的給定區(qū)域中的活動量。局部性是指在給定的塊已被訪問之后訪問周圍塊的可能性。輸入/輸出優(yōu)化模塊426可以基于一個塊在不久的將來被訪問的概率而調(diào)用預(yù)讀模塊430。由存儲設(shè)備230提供的讀數(shù)據(jù)被存儲在寫緩沖區(qū)444中。緩存元數(shù)據(jù)442被更新以指示該數(shù)據(jù)已被存儲在寫緩沖區(qū)444中。查找模塊424繼而可以利用來自命中列表和未命中列表二者的數(shù)據(jù)而經(jīng)由請求轉(zhuǎn)譯模塊422對讀請求做出響應(yīng)。當(dāng)請求轉(zhuǎn)譯模塊422從主機(jī)232接收到寫請求時,隨附于寫請求的數(shù)據(jù)被存儲在寫緩沖區(qū)444中。該新近存儲的數(shù)據(jù)被稱為“臟”,因?yàn)樗煌诖鎯υO(shè)備230中存儲的數(shù)據(jù)。最終,被修改的數(shù)據(jù)將被發(fā)送給存儲設(shè)備230。然而,在寫通模式中,由寫緩沖區(qū)444接收的數(shù)據(jù)以盡可能小的延遲被傳遞給存儲設(shè)備230。如上所述,當(dāng)其他系統(tǒng)正在訪問存儲設(shè)備230并且因此需要訪問被修改的數(shù)據(jù)時,可以使用寫通模式。寫緩沖區(qū)444中的數(shù)據(jù)被寫入固態(tài)驅(qū)動器450,因?yàn)閷懢彌_區(qū)444的容量與固態(tài)驅(qū)動器450相比是有限的。在各種實(shí)現(xiàn)中,對固態(tài)驅(qū)動器450的寫入需要對固態(tài)驅(qū)動器450的整個塊的每個元素的寫入。固態(tài)驅(qū)動器450的塊大小可以與存儲設(shè)備230的塊大小相同或者不同。隨著越來越多的寫/擦除被執(zhí)行,固態(tài)驅(qū)動器通常將在性能上有所下降并且最終變?yōu)椴豢捎?。因此,一旦整個塊的有價值的數(shù)據(jù)將被寫入,可以將來自寫緩沖區(qū)444的數(shù)據(jù)寫入固態(tài)驅(qū)動器450。這防止了固態(tài)驅(qū)動器450的相同塊在一條新數(shù)據(jù)被添加到該塊時必須被重新寫入。而且,對一條數(shù)據(jù)的改變可以在被降級到固態(tài)驅(qū)動器450之前被寫入寫緩沖區(qū)多次。因此,固態(tài)驅(qū)動器450中用于該條數(shù)據(jù)的存儲單元僅經(jīng)歷一個寫周期,即使該數(shù)據(jù)被改變多次。緩存回收模塊428確定固態(tài)驅(qū)動器450中的數(shù)據(jù)何時不應(yīng)再被緩存。數(shù)據(jù)可以從固態(tài)驅(qū)動器450中被實(shí)際刪除,或者在其他實(shí)現(xiàn)中,可以將存儲有該數(shù)據(jù)的區(qū)域標(biāo)記為空閑。因此,新的緩存數(shù)據(jù)可以覆寫被回收的數(shù)據(jù)。在回收之前,尚未被發(fā)送至存儲設(shè)備230的任何臟數(shù)據(jù)被沖刷(flush)到存儲設(shè)備230中。而且,在周期性的時刻或者由各種參數(shù)指定的其他間隔,固態(tài)驅(qū)動器450中存儲的臟數(shù)據(jù)可以被沖刷到存儲設(shè)備230中,因此存儲設(shè)備230反映最近的修改。僅作為示例,固態(tài)驅(qū)動器450可以在超過閾值數(shù)量的臟數(shù)據(jù)被存儲在固態(tài)驅(qū)動器450中時將數(shù)據(jù)沖刷到存儲設(shè)備230。現(xiàn)在參考圖5,其示出了緩存存儲適配器的一個實(shí)現(xiàn)示例的功能框圖。緩存存儲適配器500的元件可以與上文圖4中描述的具有相同參考標(biāo)號的元件類似地工作。在圖5·中,顯式地示出了在圖4中已被隱含描述的某些連接。例如,輸入/輸出優(yōu)化模塊426觀測在請求轉(zhuǎn)譯模塊422與查找模塊424之間傳送的請求。而且,輸入/輸出優(yōu)化模塊426向預(yù)讀模塊430提供將從存儲設(shè)備230被請求的目標(biāo)地址。仲裁器504從預(yù)讀模塊430和緩存未命中模塊432接收請求,并且將這些請求發(fā)送至存儲設(shè)備230。仲裁器504可以將來自緩存未命中模塊432的請求的優(yōu)先級設(shè)置為高于來自預(yù)讀模塊430的請求。仲裁器504還可以將請求(諸如相鄰請求)進(jìn)行組合,以允許對存儲設(shè)備230的更為有效的訪問。緩沖區(qū)控制模塊508確定來自寫緩沖區(qū)444的數(shù)據(jù)何時應(yīng)當(dāng)被發(fā)送或者降級到固態(tài)驅(qū)動器450中。當(dāng)數(shù)據(jù)被發(fā)送至固態(tài)驅(qū)動器450時,緩沖區(qū)控制模塊508更新緩存元數(shù)據(jù)442以反映新的存儲位置。緩沖區(qū)控制模塊508和緩存回收模塊428可以與輸入/輸出優(yōu)化模塊426通信,以分別確定哪些數(shù)據(jù)被降級到固態(tài)驅(qū)動器450中以及哪些數(shù)據(jù)從固態(tài)驅(qū)動器450中被回收。因此從存儲設(shè)備230讀取的數(shù)據(jù)被存儲在寫緩沖區(qū)444中,該數(shù)據(jù)通路在圖5中被明確地示出。當(dāng)查找模塊424處理讀請求時,緩存元數(shù)據(jù)442指示寫緩沖區(qū)444和/或固態(tài)驅(qū)動器450中存儲所請求數(shù)據(jù)的位置。這些位置被提供給寫緩沖區(qū)444和/或固態(tài)驅(qū)動器450,其繼而將所請求的數(shù)據(jù)提供給查找模塊424。查找模塊424繼而可以組合數(shù)據(jù),并且經(jīng)由請求轉(zhuǎn)譯模塊422對來自主機(jī)232的請求做出響應(yīng)。當(dāng)查找模塊424處理寫請求時,隨附于寫請求的數(shù)據(jù)被提供給寫緩沖區(qū)444以供存儲。緩存回收模塊428更新緩存元數(shù)據(jù)442以指示先前存儲于固態(tài)驅(qū)動器450中的數(shù)據(jù)已被回收并且因此不再被緩存。在各種實(shí)現(xiàn)中,緩存回收模塊428可以利用緩沖區(qū)控制模塊508驗(yàn)證寫緩沖區(qū)444沒有存儲將要被回收的數(shù)據(jù)的已修改版本?,F(xiàn)在參考圖6,它是呈現(xiàn)根據(jù)本公開原理的緩存存儲適配器的操作示例的流程圖。控制開始于604,在此如果接收到讀請求,控制轉(zhuǎn)至608 ;否則控制轉(zhuǎn)至612。在608,讀請求被轉(zhuǎn)譯,并且控制繼續(xù)到616。在616,如果讀請求的目標(biāo)在寫緩沖區(qū)中,控制轉(zhuǎn)至620 ;否貝丨J,控制轉(zhuǎn)至624。
在620,控制從寫緩沖區(qū)提供讀請求所請求的數(shù)據(jù),并且繼續(xù)到612。在624,控制確定目標(biāo)是否被存儲在固態(tài)驅(qū)動器中。如果是,控制轉(zhuǎn)至628 ;否則,控制轉(zhuǎn)至632。在628,控制響應(yīng)于讀請求而從固態(tài)驅(qū)動器提供數(shù)據(jù)并且繼續(xù)到612。在632,控制從存儲設(shè)備請求數(shù)據(jù)并且繼續(xù)到636。在636,控制將來自存儲設(shè)備的數(shù)據(jù)存儲在寫緩沖區(qū)中,并且繼續(xù)到620。在612,控制確定是否已經(jīng)接收到寫請求。如果是,控制轉(zhuǎn)至640 ;否則,控制轉(zhuǎn)至644。在640,控制轉(zhuǎn)譯寫請求,并且繼續(xù)到648。在648,控制將與寫請求相關(guān)聯(lián)的數(shù)據(jù)寫入寫緩沖區(qū),并且繼續(xù)到644。在644,控制確定固態(tài)驅(qū)動器中的空閑空間是否小于一個閾值。如果是,控制轉(zhuǎn)至652 ;否則控制轉(zhuǎn)至656。 在652,為了釋放固態(tài)驅(qū)動器中的空間,控制確定要回收哪些塊并且繼續(xù)到660。在660,如果任何要回收的塊為臟,則控制轉(zhuǎn)至664 ;否則,控制轉(zhuǎn)至668。在664,控制將臟數(shù)據(jù)寫入存儲設(shè)備,并且繼續(xù)到668。在668,控制將固態(tài)驅(qū)動器中的已回收塊標(biāo)記為空閑,這意味著它們可以被新數(shù)據(jù)覆蓋。在各種實(shí)現(xiàn)中,如果針對被標(biāo)記為空閑的塊的請求達(dá)到,該塊可以被重新標(biāo)志為使用中,并且數(shù)據(jù)繼而被用于服務(wù)該請求??刂评^續(xù)到656。在656,控制確定塊是否應(yīng)當(dāng)從寫緩沖區(qū)中被降級。如果是,控制轉(zhuǎn)至672 ;否則,控制轉(zhuǎn)至676。在672,控制將數(shù)據(jù)從寫緩沖區(qū)寫入固態(tài)驅(qū)動器,并且繼續(xù)到680。在680,控制將來自寫緩沖區(qū)的已寫塊標(biāo)記為空閑以供其他數(shù)據(jù)使用,并且繼續(xù)到676。在676,控制確定存儲設(shè)備是否為空閑。如果是,控制轉(zhuǎn)至684 ;否則空閑返回604。例如,當(dāng)存儲設(shè)備未服務(wù)于寫或讀請求時,可以認(rèn)為它是空閑的。在684,控制確定固態(tài)驅(qū)動器中的任何塊是否為臟。如果是,控制轉(zhuǎn)至688;否則,控制轉(zhuǎn)至692。在688,控制將臟塊寫入存儲設(shè)備并且返回604。在692,控制分析讀請求和寫請求并且繼續(xù)到694。在694,控制根據(jù)活動級別以及相鄰塊在給定塊已被請求之后被請求的概率而表征存儲設(shè)備的區(qū)域。控制繼續(xù)到696,在此控制確定是否可以基于694處的表征而預(yù)測將來的讀訪問。如果是,控制轉(zhuǎn)至698 ;否則,控制返回604。在698,控制以694的表征所預(yù)測的地址從存儲設(shè)備預(yù)先取回數(shù)據(jù)??刂评^而返回604。現(xiàn)在參考圖7,它是描繪根據(jù)本公開原理的緩存存儲適配器的示例操作的流程圖。特別地,圖7關(guān)注讀和寫請求處理的實(shí)現(xiàn)示例??刂崎_始于704,在此如果接收到讀請求,則控制轉(zhuǎn)至708 ;否則控制轉(zhuǎn)至712。在708,控制轉(zhuǎn)譯讀請求??刂评^續(xù)到716,在此基于讀請求的大小而將讀請求解析為查找請求??刂评^續(xù)到720,在此使用緩存元數(shù)據(jù)服務(wù)查找請求??刂评^續(xù)到724,在此基于緩存中可獲得的數(shù)據(jù)(在寫緩沖區(qū)中或者固態(tài)驅(qū)動器中)而創(chuàng)建命中列表??刂评^續(xù)到728,在此生成緩存中不可獲得的數(shù)據(jù)的未命中列表??刂评^續(xù)到732,在此如果未命中列表為空,則控制轉(zhuǎn)至736 ;否則控制轉(zhuǎn)至740。在740,控制調(diào)用緩存未命中處理機(jī),并且將未命中列表提供給緩存未命中處理機(jī)??刂评^續(xù)到744,在此根據(jù)未命中列表從存儲設(shè)備取回數(shù)據(jù)??刂评^續(xù)到748,在此將從存儲設(shè)備取回的數(shù)據(jù)存儲在寫緩存中??刂评^續(xù)到752,在此控制更新緩存元數(shù)據(jù)和未命中列表,以指示所請求的數(shù)據(jù)現(xiàn)在被存儲在寫緩存中??刂评^續(xù)到736,在此返回對讀請求的響應(yīng),其包括對應(yīng)于命中列表和未命中列表的合成結(jié)果??刂评^而繼續(xù)到712。
在712,控制確定是否接收到寫請求,如果是則控制轉(zhuǎn)至760 ;否則控制返回704。在760,控制轉(zhuǎn)譯寫請求??刂评^續(xù)到764,在此控制將對應(yīng)于寫請求的數(shù)據(jù)寫入寫緩沖區(qū)??刂评^續(xù)到768,在此如果寫通模式為活躍,則控制轉(zhuǎn)至772 ;否則控制轉(zhuǎn)至776。在772,控制將數(shù)據(jù)寫入存儲設(shè)備并且繼續(xù)到776。在776,控制更新緩存元數(shù)據(jù)以指示新存儲的數(shù)據(jù)并且返回704??刂票皇緸榉祷?04是因?yàn)榭梢允褂闷渥约旱目刂骗h(huán)來服務(wù)讀請求和寫請求,同時可以使用其他控制環(huán)來執(zhí)行其他功能,諸如降級、回收、輸入/輸出優(yōu)化和沖刷。其他控制環(huán)可以并行地操作,并且可以以低于讀和寫請求服務(wù)的優(yōu)先級操作??梢酝ㄟ^多種形式實(shí)現(xiàn)本公開的廣義教導(dǎo)。因此,盡管本公開包括具體示例,但是本公開的真正范圍不應(yīng)受到限制,因?yàn)榛趯Ω綀D、說明書和所附權(quán)利要求的研讀,其他修改將變得易見?!?br> 權(quán)利要求
1.一種接口適配器,包括 包含非易失性隨機(jī)訪問存儲器(RAM)的存儲模塊,其中所述存儲模塊被配置為將元數(shù)據(jù)存儲在所述非易失性RAM中,其中所述元數(shù)據(jù)標(biāo)識緩存于固態(tài)存儲設(shè)備中的來自外部存儲設(shè)備的數(shù)據(jù);以及 查找模塊,被配置為接收讀請求,以及響應(yīng)于所述讀請求并且基于所述元數(shù)據(jù)而選擇性地提供來自所述固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)或者提供從所述外部存儲設(shè)備獲取的第二數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的接口適配器,其中 所述存儲模塊進(jìn)一步被配置為在所述非易失性RAM中維護(hù)寫緩沖區(qū), 所述第二數(shù)據(jù)在從所述外部存儲設(shè)備被獲取之后被存儲在所述寫緩沖區(qū)中,以及 所述第二數(shù)據(jù)在被存儲到所述寫緩沖區(qū)中之后被存儲到所述固態(tài)存儲設(shè)備中。
3.根據(jù)權(quán)利要求2所述的接口適配器,其中所述查找模塊被配置為利用來自所述固態(tài)存儲設(shè)備的數(shù)據(jù)或者利用來自所述寫緩沖區(qū)的數(shù)據(jù)選擇性地對所述讀請求做出響應(yīng)。
4.根據(jù)權(quán)利要求3所述的接口適配器,其中所述查找模塊被配置為利用來自所述寫緩沖區(qū)的所述第二數(shù)據(jù)對所述讀請求做出響應(yīng)。
5.根據(jù)權(quán)利要求2所述的接口適配器,進(jìn)一步包括緩沖區(qū)控制模塊,被配置為確定何時將來自所述寫緩沖區(qū)的所述第二數(shù)據(jù)存儲到所述固態(tài)存儲設(shè)備中。
6.根據(jù)權(quán)利要求5所述的接口適配器,其中所述緩沖區(qū)控制模塊被配置為基于所述寫緩沖區(qū)中存在的用于存儲在所述固態(tài)存儲設(shè)備中的相鄰位置中的、包括所述第二數(shù)據(jù)在內(nèi)的數(shù)據(jù)的預(yù)定數(shù)量,而將所述第二數(shù)據(jù)存儲到所述固態(tài)存儲設(shè)備中。
7.根據(jù)權(quán)利要求2所述的接口適配器,其中所述查找模塊被配置為接收寫請求,并且將與所述寫請求相關(guān)聯(lián)的寫數(shù)據(jù)存儲在所述寫緩沖區(qū)中。
8.根據(jù)權(quán)利要求7所述的接口適配器,其中當(dāng)寫通模式被啟用時,所述寫數(shù)據(jù)還被提供給所述外部存儲設(shè)備。
9.根據(jù)權(quán)利要求I所述的接口適配器,進(jìn)一步包括緩存回收模塊,被配置為選擇性地允許所述固態(tài)存儲設(shè)備中的選定數(shù)據(jù)被覆蓋。
10.根據(jù)權(quán)利要求9所述的接口適配器,其中所述緩存回收模塊被配置為在所述選定數(shù)據(jù)被覆蓋之前將所述選定數(shù)據(jù)的已修改部分發(fā)送至所述外部存儲設(shè)備。
11.根據(jù)權(quán)利要求I所述的接口適配器,其中所述查找模塊被配置為響應(yīng)于所述讀請求而構(gòu)建存在于所述存儲模塊中的數(shù)據(jù)的命中列表,構(gòu)建不存在于所述存儲模塊中的數(shù)據(jù)的未命中列表,以及根據(jù)所述未命中列表向所述外部存儲設(shè)備發(fā)送數(shù)據(jù)請求。
12.根據(jù)權(quán)利要求I所述的接口適配器,進(jìn)一步包括轉(zhuǎn)譯模塊,被配置為將第一總線請求轉(zhuǎn)譯為所述讀請求,以及將第二總線請求轉(zhuǎn)譯為寫請求。
13.—種主機(jī)總線適配器,被配置為安裝在計算機(jī)中,所述主機(jī)總線適配器包括 固態(tài)存儲設(shè)備; 非易失性隨機(jī)訪問存儲器(RAM);以及 執(zhí)行模塊,被配置為 將來自外部存儲設(shè)備的數(shù)據(jù)緩存在所述固態(tài)存儲設(shè)備中; 將元數(shù)據(jù)存儲在所述非易失性RAM中,所述元數(shù)據(jù)指示什么數(shù)據(jù)被緩存在所述固態(tài)存儲設(shè)備中; 從所述計算機(jī)的中央處理器接收讀請求;以及 使用來自所述固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)選擇性地對所述讀請求做出響應(yīng)。
14.根據(jù)權(quán)利要求13所述的主機(jī)總線適配器,其中所述執(zhí)行模塊被配置為 使用所述非易失性RAM的一部分作為寫緩沖區(qū); 從所述中央處理器接收寫請求; 在將對應(yīng)于所述寫請求的寫數(shù)據(jù)存儲在所述固態(tài)存儲設(shè)備之前將所述寫數(shù)據(jù)存儲在所述寫緩沖區(qū)中; 響應(yīng)于所述讀請求而選擇性地提供來自所述寫緩沖區(qū)的數(shù)據(jù); 當(dāng)所述元數(shù)據(jù)指示用于所述讀請求之一的第一數(shù)據(jù)未被存儲在所述寫緩沖區(qū)或者所述固態(tài)存儲設(shè)備中時,從所述外部存儲設(shè)備請求所述第一數(shù)據(jù);以及 一旦從所述外部存儲設(shè)備接收到所述第一數(shù)據(jù),便在將所述第一數(shù)據(jù)存儲在所述固態(tài)存儲設(shè)備中之前將所述第一數(shù)據(jù)存儲在所述寫緩沖區(qū)中。
15.一種操作接口適配器的方法,所述方法包括 將元數(shù)據(jù)存儲在所述接口適配器的非易失性隨機(jī)訪問存儲器(RAM)中,其中所述元數(shù)據(jù)標(biāo)識被緩存在固態(tài)存儲設(shè)備中的來自外部存儲設(shè)備的數(shù)據(jù); 接收讀請求;以及 響應(yīng)于所述讀請求并且基于所述元數(shù)據(jù),選擇性地提供來自所述固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)或者提供從所述外部存儲設(shè)備獲取的第二數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的方法,進(jìn)一步包括 在所述非易失性RAM中維護(hù)寫緩沖區(qū); 在從所述外部存儲設(shè)備獲取所述第二數(shù)據(jù)之后將所述第二數(shù)據(jù)存儲在所述寫緩沖區(qū)中; 在將所述第二數(shù)據(jù)存儲在所述寫緩沖區(qū)中之后將所述第二數(shù)據(jù)存儲在所述固態(tài)存儲設(shè)備中;以及 利用來自所述寫緩沖區(qū)的所述第二數(shù)據(jù)選擇性地對所述讀請求做出響應(yīng)。
17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括基于所述寫緩沖區(qū)中存在的用于存儲在所述固態(tài)存儲設(shè)備中的相鄰位置中的、包括所述第二數(shù)據(jù)在內(nèi)的數(shù)據(jù)的預(yù)定數(shù)量,在一個時刻將所述第二數(shù)據(jù)存儲到所述固態(tài)存儲設(shè)備中。
18.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括 接收寫請求;以及 將與所述寫請求相關(guān)聯(lián)的寫數(shù)據(jù)存儲在所述寫緩沖區(qū)中, 其中當(dāng)寫通模式被啟用時,所述寫數(shù)據(jù)還被提供給所述外部存儲設(shè)備。
19.根據(jù)權(quán)利要求15所述的方法,進(jìn)一步包括 選擇性地允許所述固態(tài)存儲設(shè)備中的選定數(shù)據(jù)被覆蓋;以及 在所述選定數(shù)據(jù)被覆蓋之前,將所述選定數(shù)據(jù)的已修改部分發(fā)送給所述外部存儲設(shè)備。
20.根據(jù)權(quán)利要求15所述的方法,進(jìn)一步包括 響應(yīng)于所述讀請求,構(gòu)建存在于所述固態(tài)存儲設(shè)備中的數(shù)據(jù)的命中列表;響應(yīng)于所述讀請求,構(gòu)建未存在于所述固態(tài)存儲設(shè)備中的數(shù)據(jù)的未命中列表;根據(jù)所述未命中列表向所述外部存儲設(shè)備發(fā)送數(shù)據(jù)請求;以及基于所述命中列表和所述未命中 列表的組合,對所述讀請求做出響應(yīng)。
全文摘要
一種接口適配器,包括包含非易失性隨機(jī)訪問存儲器(RAM)的存儲模塊和查找模塊。存儲模塊被配置為將元數(shù)據(jù)存儲在非易失性RAM中。元數(shù)據(jù)標(biāo)識緩存在固態(tài)存儲設(shè)備中的來自外部存儲設(shè)備的數(shù)據(jù)。查找模塊被配置為接收讀請求。查找模塊進(jìn)一步被配置為響應(yīng)于讀請求并且基于元數(shù)據(jù)而選擇性地提供來自固態(tài)存儲設(shè)備的已緩存數(shù)據(jù)或者提供從外部存儲設(shè)備獲取的第二數(shù)據(jù)。
文檔編號G06F12/08GK102906714SQ201180022431
公開日2013年1月30日 申請日期2011年5月5日 優(yōu)先權(quán)日2010年5月5日
發(fā)明者A·普魯西, S·卡馬卡, K·拉斯托吉, S·施沃卡 申請人:馬維爾國際貿(mào)易有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
张家川| 瑞金市| 木兰县| 富顺县| 钦州市| 宁化县| 临泉县| 天峻县| 晋江市| 福州市| 沐川县| 龙州县| 黔西县| 汝南县| 伊春市| 镇雄县| 石狮市| 桑植县| 泰来县| 汉源县| 科技| 广丰县| 峨眉山市| 青河县| 承德县| 卢氏县| 湖口县| 辉南县| 锡林浩特市| 辉县市| 洛浦县| 黔江区| 靖远县| 深圳市| 喀喇沁旗| 治县。| 巍山| 洮南市| 宿州市| 濮阳市| 印江|