亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

將數(shù)據(jù)寫入存儲設(shè)備的方法與存儲設(shè)備的制作方法

文檔序號:6369681閱讀:164來源:國知局
專利名稱:將數(shù)據(jù)寫入存儲設(shè)備的方法與存儲設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及固態(tài)存儲設(shè)備(Solid Storage Device, SSD),更具體地,本發(fā)明涉及將數(shù)據(jù)寫入固態(tài)存儲設(shè)備中的隨機訪問存儲器的方法及裝置。
背景技術(shù)
同機械式硬盤相類似,固態(tài)存儲設(shè)備(SSD)也是用于計算機系統(tǒng)的大容量、非易失性存儲設(shè)備。固態(tài)存儲設(shè)備一般以閃存(Flash)作為存儲介質(zhì)。在中國專利文獻CN102043689A中公開了如圖13所示的固態(tài)存儲設(shè)備。如圖13所示,為目前一般的固態(tài)存儲設(shè)備的功能框圖。其中主要包括主機系統(tǒng)1301和固態(tài)存 儲設(shè)備1302。其中,固態(tài)存儲設(shè)備1302包括接ロ模塊1303,固態(tài)存儲處理器1304,以及以Flash顆粒1305為單位組成的Flash陣列1306。其中,接ロ模塊1303主要用于實現(xiàn)與主機系統(tǒng)一致的接ロ協(xié)議,例如SATA (Serial Advanced Technology Atta chment,串行高級技術(shù)附件)、USB (UniversalSerial Bus,通用串行總線)、PCIE (Peripheral Component Interconnect Express,快速外圍組件互連)、SCSI (Small Computer System Interface,小型計算機系統(tǒng)接ロ)、IDE(Integrated Drive Electro nics,集成驅(qū)動器電子)等。通過接ロ模塊1303,固態(tài)存儲設(shè)備呈現(xiàn)給主機系統(tǒng)的是一個擁有一定邏輯空間的標準存儲設(shè)備。固態(tài)存儲處理器1304是整個存儲設(shè)備的控制核心,主要負責接ロ模塊1303以及閃存陣列1306之間的控制信號及數(shù)據(jù)的傳輸、Flash管理、主機邏輯地址到Flash物理地址的轉(zhuǎn)換或映射、損耗均衡(將邏輯地址映射到不同的物理地址從而防止單個Flash被過于集中地操作而提前失效)、壞塊管理等??捎绍浖⒂布?、固件或者其組合的多種方式實現(xiàn)固態(tài)存儲處理器1304。1305為單個Flash顆粒,多個Flash顆粒1305組成Flash陣列1306。為提高固態(tài)存儲設(shè)備的讀、寫速度,可以在固態(tài)存儲設(shè)備中設(shè)置諸如DRAM或SRAM的隨機訪問存儲器或其他類型的適于高速讀/寫操作的存儲器,作為同閃存讀寫數(shù)據(jù)時的高速緩沖存儲器。在存儲設(shè)備訪問過程中,作為ー個例子,計算機向存儲設(shè)備發(fā)出SCSI (小型計算機系統(tǒng)接ロ)命令,存儲設(shè)備接收并處理SCSI命令,依據(jù)SCSI命令所指示的操作執(zhí)行相應(yīng)的存儲介質(zhì)讀寫過程。在這ー過程中,SCSI命令并不直接操作高速緩沖存儲器。SP,高速緩沖存儲器對計算機或者用戶是“透明”的。也有ー些存儲設(shè)備提供了高速緩沖存儲器的“清洗”機制,計算機或用戶可使用預(yù)定的命令強制存儲設(shè)備將高速緩沖存儲器中的數(shù)據(jù)寫入到非易失性存儲介質(zhì)(例如,磁盤或者閃存)中。然而,對高速緩沖存儲器的分配和管理將成為固態(tài)存儲設(shè)備上的控制器的工作負擔。而且當高速緩沖存儲器被完全占用后,如果固態(tài)存儲設(shè)備接收到來自主機系統(tǒng)的新的訪問請求,則還需要執(zhí)行對高速緩沖存儲器的替換操作。這樣既増加了控制器的復(fù)雜度,又會讓主機經(jīng)歷在讀/寫性能上的顛簸。在主機與設(shè)備之間還可以進行DMA (Direct Memory Access,直接存儲器訪問)傳輸。在中國專利文獻CN101221544A中公開了執(zhí)行DMA傳輸?shù)姆椒ê驮O(shè)備。D MA傳輸?shù)囊粋€典型過程是分散/收集(Scatter/Gather)操作。分散/收集操作中,待傳輸?shù)亩鄠€數(shù)據(jù)塊存儲在系統(tǒng)(主機)存儲器的不連續(xù)的多個地址位置。處理器不需要為要從某一源移動到某一目的地的每個數(shù)據(jù)塊對DMA控制器進行編程的操作。而是,處理器在系統(tǒng)存儲器中建立描述符表或描述符鏈接表。描述符表或描述符鏈接表中包括ー組描述符。每個描述符都描述了數(shù)據(jù)塊移動方向、源地址、目的地地址以及可選的傳輸?shù)淖止?jié)數(shù)。在一個描述符中不包括傳輸字節(jié)數(shù)的情況下,可通過DMA方式傳輸約定長度的數(shù)據(jù)。

發(fā)明內(nèi)容
因而,分擔存儲設(shè)備上的控制器的工作負擔是有益的。通過將與存儲設(shè)備的緩沖存儲器有關(guān)的維護工作轉(zhuǎn)移給主機,既減輕 了存儲設(shè)備的控制器的負載,也向主機提供了更靈活控制存儲設(shè)備的能力。 在本發(fā)明的一個實施例中,提供了ー種將數(shù)據(jù)寫入存儲設(shè)備的方法,所述存儲設(shè)備包括緩沖存儲器和閃存存儲器,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,所述方法包括從信息處理設(shè)備接收第一 DMA描述符,所述DMA描述符包括用于所述信息處理設(shè)備的地址、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址;當所述第一 DMA描述符指示DMA寫操作吋,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。根據(jù)本發(fā)明的第一實施例,其中所述第一 DMA描述符包括第一 DMA描述符命令和第一 DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,所述DMA描述符命令包括用于所述閃存存儲器的地址;所述方法還包括將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,所述第一 DMA微指令指示用于所述閃存存儲器的地址、用于所述信息處理設(shè)備的地址以及用于所述緩沖存儲器的地址;其中,當所述第一DMA微指令指示DMA寫操作時,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。根據(jù)本發(fā)明的第一實施例,其中所述第一 DMA描述符包括第一 DMA描述符命令、第一 DMA描述符數(shù)據(jù)以及第ニ DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,所述第二 DMA描述符數(shù)據(jù)包括第ニ用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,所述DMA描述符命令包括用于所述閃存存儲器的地址;所述方法還包括將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,將所述第二 DMA描述符數(shù)據(jù)變換為第二 DMA微指令,所述第一 DMA微指令指示第一用于所述閃存存儲器的地址、第一用于所述信息處理設(shè)備的地址以及第一用于所述緩沖存儲器的地址,所述第二 DMA微指令指示第二用于所述閃存存儲器的地址、第二用于所述信息處理設(shè)備的地址以及第ニ用于所述緩沖存儲器的地址,其中所述第二閃存存儲器地址與所述第一閃存存儲器地址相距預(yù)定偏移值;其中,當所述第一 DMA微指令指示DMA寫操作時,基于第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;當所述第二 DMA微指令指示DMA寫操作時,基于第二用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第二數(shù)據(jù)寫入到所述緩沖存儲器;基于第一用于所述閃存存儲器的地址和第一用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器;基于第二用于所述閃存存儲器的地址和第二用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第二數(shù)據(jù),寫入到所述閃存存儲器。
根據(jù)本發(fā)明的第一實施例,其中當將所述第一數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。根據(jù)本發(fā)明的第一實施例,其中當將所述第一數(shù)據(jù)寫入到所述緩沖存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一 DMA描述符的操作完成。根據(jù)本發(fā)明的第一實施例,其中當將所述第一數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一 DMA描述符的操作完成,以及指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。在本發(fā)明的第二實施例中提供了ー種存儲設(shè)備,所述存儲設(shè)備包括緩沖存儲器、閃存存儲器、信息處理設(shè)備接ロ以及控制電路,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,其中所述信息處理設(shè)備接ロ從信息處理設(shè)備接收第一 DMA描述符,所述DMA描述符包括用于所述信息處理設(shè)備的地址、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址;當所述控制電路識別出所述第一 DMA描述符指示DMA寫操作時,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;所述控制電路基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將 所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。根據(jù)根據(jù)本發(fā)明的第二實施例,其中當將所述第一數(shù)據(jù)寫入到所述閃存存儲器之后,所述控制電路還向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。根據(jù)根據(jù)本發(fā)明的第二實施例,其中當將所述第一數(shù)據(jù)寫入到所述緩沖存儲器之后,所述控制電路還向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一 DMA描述符的操作完成。根據(jù)根據(jù)本發(fā)明的第二實施例,其中所述第一 DMA描述符包括第一 DMA描述符命令和第一 DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,所述DMA描述符命令包括用于所述閃存存儲器的地址;所述存儲設(shè)備還包括DMA指令分析器、DMA寫操作控制器和閃存接ロ控制器所述DMA指令分析器,將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,所述第一 DMA微指令指示用于所述閃存存儲器的地址、用于所述信息處理設(shè)備的地址以及用于所述緩沖存儲器的地址;其中,當所述第一 DMA微指令指示DMA寫操作時,所述DMA寫操作控制器基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;所述閃存接ロ控制器基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。 根據(jù)根據(jù)本發(fā)明的第二實施例,其中所述第一 DMA描述符包括第一 DMA描述符命令、第一 DMA描述符數(shù)據(jù)以及第二 DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,所述第二 DMA描述符數(shù)據(jù)包括第二用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,所述DMA描述符命令包括用于所述閃存存儲器的地址;所述存儲設(shè)備還包括DMA指令分析器、DMA寫操作控制器和閃存接ロ控制器所述DMA指令分析器將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,將所述第二 DMA描述符數(shù)據(jù)變換為第二 DMA微指令,所述第一 DMA微指令指示第一用于所述閃存存儲器的地址、第一用于所述信息處理設(shè)備的地址以及第一用于所述緩沖存儲器的地址,所述第二 DMA微指令指示第二用于所述閃存存儲器的地址、第二用于所述信息處理設(shè)備的地址以及第ニ用于所述緩沖存儲器的地址,其中所述第二閃存存儲器地址與所述第一閃存存儲器地址相距預(yù)定偏移值;其中,當所述第一 DMA微指令指示DMA寫操作時,所述DMA寫操作控制器基于第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;當所述第二 DMA微指令指示DMA寫操作時,所述DMA寫操作控制器基于第二用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第二數(shù)據(jù)寫入到所述緩沖存儲器;所述閃存接ロ控制器基于第一用于所述閃存存儲器的地址和第一用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器;基于第二用于所述閃存存儲器的地址和第二用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第二數(shù)據(jù),寫入到所述閃存存儲器。根據(jù)根據(jù)本發(fā)明的第二實施例,其中當將所述第一數(shù)據(jù)與所述第二數(shù)據(jù)寫入到所述閃存存儲器之后,所述控制電路還向所述信息處理設(shè)備發(fā)送中斷,以指示對同所述第一用于所述緩沖存儲器的地址和所述第二用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放,以及指示對所述第一 DMA描述符的操作完成。在本發(fā)明的第三實施例中,提供了ー種將數(shù)據(jù)寫入存儲設(shè)備的方法,所述存儲設(shè)備包括緩沖存儲器和閃存存儲器,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,所述方法包括
從信息處理設(shè)備接收第一寫入命令,所述第一寫入命令包括要寫入的數(shù)據(jù)、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址;基于所述用于所述緩沖存儲器的地址,將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器;基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲 器中的所述要寫入的數(shù)據(jù),寫入到所述閃存存儲器。
根據(jù)本發(fā)明的第三實施例,其中將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成。根據(jù)本發(fā)明的第三實施例,其中當將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。根據(jù)本發(fā)明的第三實施例,其中將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成以及對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。在本發(fā)明的第四實施例中提供了ー種存儲設(shè)備,所述存儲設(shè)備包括緩沖存儲器、閃存存儲器、信息處理設(shè)備接ロ以及控制電路,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,其中所述信息處理設(shè)備接ロ從信息處理設(shè)備接收第一寫入命令,第一寫入命令包括要寫入的數(shù)據(jù)、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址;所述控制電路基于所述用于所述緩沖存儲器的地址,將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器;所述控制電路基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述要寫入的數(shù)據(jù),寫入到所述閃存存儲器。根據(jù)本發(fā)明的第四實施例,其中當將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器后,所述控制電路還向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成。根據(jù)本發(fā)明的第四實施例,其中當將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器之后,所述控制電路還向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。根據(jù)本發(fā)明的第四實施例,其中將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器后,所述控制電路還向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成以及對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。


當連同附圖閱讀時,通過參考后面對示出性的實施例的詳細描述,將最佳地理解本發(fā)明以及優(yōu)選的使用模式和其進ー步的目的和優(yōu)點,其中附圖包括圖I是根據(jù)本發(fā)明實施例的存儲設(shè)備的結(jié)構(gòu)框圖;圖2A、2B是根據(jù)本發(fā)明實施例的寫入命令的示意圖;圖3是根據(jù)本發(fā)明實施例的存儲設(shè)備執(zhí)行寫入命令的方法的流程圖4是根據(jù)本發(fā)明實施例的主機的示意圖;圖5是根據(jù)本發(fā)明實施例的主機執(zhí)行寫入操作的流程圖;圖6是根據(jù)本發(fā)明實施例的第二寫入命令的示意圖;圖7A、7B是根據(jù)本發(fā)明實施例的存儲設(shè)備執(zhí)行第二寫入命令的流程圖;圖7C中展示了用于實施圖7A、7B中的執(zhí)行第二寫入命令的存儲設(shè)備的硬件方框圖;圖8是根據(jù)本發(fā)明實施例的主機的軟件方框圖;圖9A是根據(jù)本發(fā)明實施例的主機創(chuàng)建并執(zhí)行第二寫入命令的流程圖;
圖9B是根據(jù)本發(fā)明另一實施例的主機創(chuàng)建并執(zhí)行第二寫入命令的流程圖;圖IOA是根據(jù)本發(fā)明的一實施例的在存儲設(shè)備的緩沖存儲器中創(chuàng)建鏈表的流程圖;圖IOB是根據(jù)本發(fā)明的一實施例的在存儲設(shè)備的緩沖存儲器中創(chuàng)建鏈表的流程圖;圖IOC是根據(jù)本發(fā)明的ー實施例的存儲設(shè)備利用在緩沖存儲器中創(chuàng)建的鏈表執(zhí)行DMA描述符的流程圖;圖11A-11F展示出了與圖10B、圖IOC相關(guān)聯(lián)的緩沖存儲器的多種狀態(tài);圖12是根據(jù)本發(fā)明的又一實施例的存儲設(shè)備的硬件方框圖。
具體實施例方式圖I是根據(jù)本發(fā)明實施例的存儲設(shè)備的結(jié)構(gòu)框圖。如圖I所示的實施例包括主機101以及同主機101相耦合的存儲設(shè)備102。主機101同存儲設(shè)備102之間可通過多種方式相耦合,耦合方式包括但不限于通過例如SATA、IDE、USB、PCIE、SCSI、以太網(wǎng)、光纖通道、無線通信網(wǎng)絡(luò)等連接主機101與存儲設(shè)備102。主機101可以是能夠通過上述方式同存儲設(shè)備相通信的信息處理設(shè)備,例如,個人計算機、平板電腦、服務(wù)器、便攜式計算機、網(wǎng)絡(luò)交換機、路由器、蜂窩電話、個人數(shù)字助理等。存儲設(shè)備102包括主機接ロ 103、控制電路104、一個或多個閃存芯片105以及緩沖存儲器106。主機接ロ 103可適配于通過例如SATA、IDE、USB、PCIE、SCSI、以太網(wǎng)、光纖通道等方式與主機101交換數(shù)據(jù)??刂齐娐?04用于控制在主機接ロ 103、閃存芯片105以及緩沖存儲器106之間的數(shù)據(jù)傳輸,還用于閃存管理、主機邏輯地址到閃存物理地址映射、擦除均衡、壞塊管理等??赏ㄟ^軟件、硬件、固件或其組合的多種方式實現(xiàn)控制電路104。控制電路104可以是FPGA(Field_pro grammable gate array,現(xiàn)場可編程門陣列)、ASIC (Application Specific Integrated Circuit,應(yīng)用專用集成電路)或者其組合的形式??刂齐娐?04也可以包括處理器或者控制器。根據(jù)本發(fā)明的一個實施例,主機101向存儲設(shè)備102發(fā)出讀出命令或者寫入命令??刂齐娐?04經(jīng)由主機接ロ 103接收到該讀出命令或?qū)懭朊睢T诟綀D2中詳細描述了作為例子的第一寫入命令200。參看圖2A、2B,圖2A是根據(jù)本發(fā)明實施例的寫入命令的示意圖。寫入命令200包括字段201、202、203和204。字段201指示該命令為寫入命令,字段202為閃存地址,字段203為數(shù)據(jù),該寫入命令200指示存儲設(shè)備102將數(shù)據(jù)字段203中的數(shù)據(jù)基于由字段202所指示的閃存地址寫入閃存芯片105。字段204為緩沖存儲器地址,存儲設(shè)備102接收到該寫入命令200時,先將數(shù)據(jù)字段203中的數(shù)據(jù)基于寫入由字段204所指示緩沖存儲器地址寫入緩沖存儲器106,再將數(shù)據(jù)字段203中的數(shù)據(jù)基于由字段202所指示的閃存地址寫入閃存芯片105。在一個例子中,存儲設(shè)備102將數(shù)據(jù)字段203中的數(shù)據(jù)基于寫入由字段204所指示緩沖存儲器地址寫入緩沖存儲器106后,再從緩沖存儲器106中讀出該數(shù)據(jù),繼而將該數(shù)據(jù)寫入到閃存芯片105。將數(shù)據(jù)寫入到緩沖存儲器106的操作,同將存儲器106中的另ー數(shù)據(jù)讀出并寫入到閃存芯片105的操作可以并發(fā)執(zhí)行,從而使得主機101向存儲設(shè)備102的寫入操作的并發(fā)性能得到提升,并且不會顯著增加控制電路104的復(fù)雜度,因為控制電路104無需處理緩沖存儲器106的空間分配任務(wù)。在一個實施例中,字段204中可以是緩沖存儲器106的完整地址,而在另一個實施例中,字段204是相對某一基地址的偏移值。在一個實施例中,字段203中攜帯要寫入閃存105的數(shù)據(jù)。而在另一個實施例中,字段203中可攜帯一個指針,該指針指向要寫入存儲設(shè)備102的數(shù)據(jù),而該數(shù)據(jù)可以存儲在主機101的存儲器中,在此情況下,存儲設(shè)備102通過隨后的DMA傳輸過程從主機101獲得該數(shù)據(jù)。在依然另ー個實施例中,字段203可攜帯一個指針,該指針指向要寫入存儲設(shè)備102的數(shù)據(jù),而該數(shù)據(jù)可以存儲在存儲設(shè)備102的緩沖存儲器中。字段202可以是要將數(shù)據(jù)寫入的閃存芯片105的物理地址或邏輯地址。字段202也可以是ー個指針,指向緩沖存儲器106,在其中存儲有用于閃存芯片105的物理地址或邏輯地址。邏輯地址到物理地址的轉(zhuǎn)換過程,可以通過查找地址映射表的方式實現(xiàn)。所屬領(lǐng)域技術(shù)人員將容易意識到,寫入命令可以具有多種具體編碼方式和字段順序。例如,參看圖2B,指示寫入命令210的類型是寫操作的字段214可以在寫入命令210的末尾或者其他位置。而在字段211中攜帶緩沖存儲器地址,在字段212中攜帯數(shù)據(jù)或指向數(shù)據(jù)的存放位置的指針。在字段213中存放閃存地址,或者指向存放閃存地址的指針,閃存地址可以是邏輯地址或物理地址。圖3是根據(jù)本發(fā)明實施例的存儲設(shè)備執(zhí)行寫入命令的方法的流程圖。在步驟301,存儲設(shè)備102從主機101接收到寫入命令200。存儲設(shè)備102的控制電路104通過主機接ロ103接收到寫入命令200后,提取出包含于寫入命令200中的用于指示操作類型為寫操作的字段201,用于指示要寫入的閃存的地址的字段202,用于指示要寫入的數(shù)據(jù)的字段203,以及用于指示緩沖存儲器106的地址的字段204。在步驟302,響應(yīng)于該寫入命令200,控制電路104基于字段204得到用于緩沖存儲器106的地址,并基于字段203得到要寫入的數(shù)據(jù),以及將要寫入的數(shù)據(jù)寫入到緩沖存儲器106中由字段204所指示的位置。當將數(shù)據(jù)寫入到緩沖存儲器106中后,存儲設(shè)備102可向主機發(fā)送消息以指示寫入命令200的執(zhí)行完成,雖然數(shù)據(jù)此時尚未被實際寫入到閃存芯片105之中。以此方式,在主機101看來,在步驟302執(zhí)行完成后,寫入命令200已經(jīng)執(zhí)行完成,從而提升了存儲設(shè)備102的執(zhí)行寫入命令200的性能。向主機發(fā)送的消息可以包含于存儲設(shè)備102向主機101所發(fā)送的中斷請求之中,也可以基于主機101與存儲設(shè)備102之間的耦合方式(SATA、IDE、USB、PCIE、SCSI、以太網(wǎng)、光纖通道、無線通信網(wǎng)絡(luò)等)而選擇適當?shù)钠渌l(fā)送方式。在將要寫入的數(shù)據(jù)寫入到緩沖存儲器106之后,在控制電路104的控制下,將由字段203所指示的要寫入的數(shù)據(jù),基于由字段202所指示的閃存地址,寫入到閃存芯片105中(步驟303)。當將數(shù)據(jù)寫入到閃存芯片105中后,存儲設(shè)備102也可向主機發(fā)送消息以指示寫入命令200的執(zhí)行完成,特別地,此時主機可以在寫入命令200中再次指定將數(shù)據(jù)寫入該用于指示緩沖存儲器106的地址,而不、會因?qū)υ摰刂诽幍臄?shù)據(jù)的重寫而導(dǎo)致數(shù)據(jù)錯誤。在一個例子中,如果字段202所指示的是用于閃存芯片105的邏輯地址,則將該邏輯地址轉(zhuǎn)換為用于閃存芯片105的物理地址。邏輯地址到物理地址的轉(zhuǎn)換方式是所屬領(lǐng)域技術(shù)人員所了解的。在一個例子中,在步驟303,從緩沖存儲器106中重新取得所寫入的數(shù)據(jù),并將該數(shù)據(jù)寫入到閃存芯片105。所屬領(lǐng)域技術(shù)人員將意識到,在控制電路104的控制下,步驟302中將數(shù)據(jù)寫入到緩沖存儲器106的操作,與步驟303中將數(shù)據(jù)寫入到閃存存儲器105的操作,可以并行執(zhí)行。這樣,在存儲設(shè)備102中可以同時處理多個寫入命令,其中,在ー個時刻,基于ー個寫入命令,控制電路104將第一數(shù)據(jù)寫入到緩沖存儲器106中;而基于另ー個寫入命令,控制電路104將存在于緩沖存儲器106中的第二數(shù)據(jù)寫入到閃存芯片105中。緩沖存儲器106可以是雙端ロ存儲器,使得在經(jīng)由第一端ロ向緩沖存儲器106寫入第一數(shù)據(jù)的同時,可以從第二端ロ從緩沖存儲器106讀出第二數(shù)據(jù)。所屬領(lǐng)域技術(shù)人員可意識到緩沖存儲器106的其他實施方式,以支持對多份數(shù)據(jù)的同時讀出和/或?qū)懭氩僮?。通過在寫入命令中攜帯用于指示緩沖存儲器106的地址的字段204,將維護緩沖存儲器106的工作從控制電路104移除了,并且使主機101擁有了更靈活控制存儲設(shè)備102 的能力。圖4是根據(jù)本發(fā)明實施例的主機的示意圖。圖4是示出了主機400的軟件組成的方框圖。主機400可以是個人計算機、服務(wù)器計算機或者其他具有計算能力的設(shè)備。主機400包括一個或多個用戶應(yīng)用程序401、402和403,以及操作系統(tǒng)404。操作系統(tǒng)404中具有存儲設(shè)備驅(qū)動程序405。在根據(jù)本發(fā)明的實施例中,驅(qū)動程序405中包括緩沖區(qū)控制塊406,用以在主機400中控制存儲設(shè)備102的緩沖存儲器106。緩沖區(qū)控制塊406由多個存
儲單元(411、412......41η)組成,緩沖區(qū)控制塊406中的每個存儲單元(411、412......41η)
對應(yīng)于緩沖存儲器106中的一個存儲単元,并記錄緩沖存儲器106中的對應(yīng)存儲單元的エ
作狀態(tài)。在一個實施例中,緩沖區(qū)控制塊406中的存儲單元(411、412......41η)的每ー個,
記錄緩沖存儲器106中的對應(yīng)存儲單元是空閑的還是已經(jīng)被占用。在進ー步的一個實施例中,在發(fā)送給存儲設(shè)備102的ー個讀/寫命令中涉及緩沖存儲器中的多個存儲単元,例如2個。在此情況下,將緩沖區(qū)控制塊406中的2個存儲單元(411、412)關(guān)聯(lián)在一起,在存儲單元411、412中還記錄存儲單元411與412之間的這種關(guān)聯(lián)關(guān)系,例如,在存儲單元411中記錄指向存儲單元412的ー個或多個指針。在依然進ー步的實施例中,在存儲單元412中還記錄指向存儲單元411的ー個或多個指針。圖5是根據(jù)本發(fā)明實施例的主機執(zhí)行寫入操作的流程圖。當用戶應(yīng)用程序或者其他程序請求執(zhí)行將數(shù)據(jù)寫入到存儲設(shè)備的操作時,應(yīng)用程序或其他程序會發(fā)送寫請求。圖4中的存儲設(shè)備驅(qū)動程序405接收該寫請求(步驟501),該寫請求中包括應(yīng)用程序或其他程序所提供的要寫入的數(shù)據(jù)已經(jīng)用于存儲設(shè)備的地址,用于存儲設(shè)備的地址可以是文件路徑及偏移值,并進一歩被轉(zhuǎn)換為用于存儲設(shè)備的邏輯地址。在一個例子中,該邏輯地址是用于存儲設(shè)備上的閃存芯片的邏輯地址,該寫請求要將數(shù)據(jù)基于該邏輯地址寫入到閃存芯片中。在步驟502,存儲設(shè)備驅(qū)動程序405為該寫請求分配空閑的緩沖存儲器。具體地,遍歷緩沖區(qū)控制塊406,找到其中為空閑狀態(tài)的存儲單元,例如,存儲單元411。存儲單元411為空閑狀態(tài),表示在存儲設(shè)備102的緩沖存儲器106中的對應(yīng)存儲單元為空閑狀態(tài),可以接收寫入的數(shù)據(jù)。
在步驟503中,存儲設(shè)備驅(qū)動程序405向存儲設(shè)備102發(fā)送寫命令,在寫命令中包括要寫入的數(shù)據(jù)以及用于存儲設(shè)備102的地址,在該寫命令中還包括同存儲單元411相對應(yīng)的用于緩沖存儲器106的地址。所屬領(lǐng)域技術(shù)人員將意識到,有多種方式獲得存儲單元411與緩沖存儲器106中的對應(yīng)存儲單元的對應(yīng)關(guān)系。例如,緩沖區(qū)控制塊406中有η個存儲單元(411、412……41η),而緩沖存儲器106中也包括η個存儲單元,存儲單元411對應(yīng)于緩沖存儲器106中的第一個存儲単元,而存儲単元412對應(yīng)于緩沖存儲器106中的第二個存儲單元,以及類似地,存儲單元41η對應(yīng)于緩沖存儲器106中的第η個存儲単元,使得基于存儲單元411在緩沖區(qū)控制塊406中的位置可計算出緩沖存儲器106中的對應(yīng)存儲單元的地址。依然作為ー個例子,還可以在存儲單元(411、412……412)中存儲緩沖存儲器106中的對應(yīng)存儲單元的地址。在依然另ー個例子中,在寫命令中攜帯ー個序號,該序號既指示存儲單元411在緩沖區(qū)控制塊406中的位置,又指示在緩沖存儲器106中的對應(yīng)存儲單元的位置。在步驟504,接收到來自存儲設(shè)備102的消息。在一個例子中,該消息是中斷請求,該中斷請求指示在步驟503中發(fā)送的寫命令已經(jīng)執(zhí)行完畢。如前面所述的,在一個例子中,存儲設(shè)備102中的控制電路104在將寫命令中的數(shù)據(jù)寫入到緩沖存儲器106 (特別地,寫入到緩沖存儲器106中與緩沖區(qū)控制塊406的存儲單元411相對應(yīng)的存儲單元)之后,存儲設(shè)備即發(fā)送中斷,指示該寫命令執(zhí)行完成。在一個例子中,控制電路104將數(shù)據(jù)寫入到閃存芯片105之后,存儲設(shè)備102向主機101發(fā)送中斷。在一個例子中,該中斷請求中還包括指示步驟503中發(fā)送的寫命令相關(guān)的緩沖區(qū)控制塊406的存儲單元的信息。該信息可以是ー個
或多個存儲單元(411、412......41η)的地址,ー個或多個存儲單元(411、412......41η)的序號。在步驟505,響應(yīng)于在步驟504中接收到的該中斷請求,并基于該中斷請求中所指示的與該寫命令相關(guān)的緩沖區(qū)控制塊406的存儲單元的信息,釋放與該寫命令相關(guān)的緩沖
區(qū)控制塊406的存儲單元(411、412......41η)。釋放存儲單元(411、412......41η)具體可以
是在存儲單元(411、412……41η)中設(shè)置緩沖存儲器106中的對應(yīng)存儲單元是空閑狀態(tài)。在一個例子中,步驟503中的寫命令涉及緩沖區(qū)控制塊406的兩個存儲單元411與412,并且,存儲單元411與412中分別記錄了指向彼此的指針,以表示這兩個存儲單元411,412關(guān)聯(lián)于同一個寫命令。在步驟504中接收到的中斷請求中,既可以指示存儲單元411也可以指示存儲單元412。在步驟505中,基于指示存儲單元411與412之一的指針,可獲得兩個存儲単元411與412,并將其釋放。類似地,所屬領(lǐng)域技術(shù)人員可意識到以此方式還可以在寫命令中關(guān)聯(lián)三個或更多的存儲單元(411、412……41η)。 圖6是根據(jù)本發(fā)明實施例的第二寫入命令的示意圖。第二寫入命令指示存儲設(shè)備102以DMA方式從主機101獲得數(shù)據(jù)并寫入到閃存芯片105中。第二寫入命令可以是DMA描述符600。DMA描述符600包括DMA命令610以及ー個或多個DMA數(shù)據(jù)(620、630)。DMA命令610包括字段611,用于指示DMA方式,即該DMA描述符600指示的操作,其可以為閃存讀、寫、擦除或者其他操作。字段612指示存儲設(shè)備的邏輯地址。字段613指示該DMA描述符600的長度,即該DMA描述符600所包括的DMA數(shù)據(jù)(620、630)的個數(shù),其可以為I個或多個。字段614指示緩沖存儲器106的地址。DMA數(shù)據(jù)620、630分別包括字段621、631,用于指示DMA傳輸中的主機地址。DMA數(shù)據(jù)620、630還分別包括字段622、632,用于指示緩沖存儲器106的地址。DMA命令610中的字段612的存儲設(shè)備的邏輯地址可用于DMA數(shù)據(jù)620、630。在DMA描述符600中僅包括ー個DMA數(shù)據(jù)620的情況下,存儲設(shè)備102根據(jù)字段621指示的主機地址和字段622指示的緩沖存儲器地址,在主機101和存儲設(shè)備102之間發(fā)起DMA傳輸,并最終將接收到的數(shù)據(jù)存儲到由字段612所指示的閃存芯片105中。在DMA描述符600包括DMA數(shù)據(jù)620與630的情況下,存儲設(shè)備102將根據(jù)DMA數(shù)據(jù)620而執(zhí)行DMA傳輸所得的數(shù)據(jù),最終存儲在由字段612所指示的閃存芯片105中,而存儲設(shè)備102還將根據(jù)DMA數(shù)據(jù)630而執(zhí)行DMA傳輸所得的數(shù)據(jù),最終存儲在由字段612加上一預(yù)定偏移值所指示的閃存芯片105中。換句話說,DMA描述符600可以指示在主機101和存儲設(shè)備102之間的多次DMA傳輸,每次DMA傳輸同DMA數(shù)據(jù)620、630中的一個相對應(yīng),每次DMA傳輸中傳輸相同數(shù)量的數(shù)據(jù)(例如4K字節(jié)),并且DMA數(shù)據(jù)620與DMA數(shù)據(jù)630所對應(yīng)的DMA傳輸?shù)拇鎯υO(shè)備的邏輯地址是連續(xù)的(例如,相距預(yù)定的偏移值,該偏移值可以與DMA傳輸?shù)臄?shù)據(jù)量相對應(yīng))。這樣,可以在DMA描述符600中僅攜帶一個存儲設(shè)備邏輯地址(字段612)。而DMA數(shù) 據(jù)620與DMA數(shù)據(jù)630所對應(yīng)的DMA傳輸?shù)膬蓚€DMA主機地址(字段621、631)可以是不連續(xù)的,這樣可以支持分散-收集(Scatter-Gather)方式的DMA傳輸。在對應(yīng)于DMA數(shù)據(jù)620的DMA傳輸中,將來自字段621所指示的DMA主機地址的數(shù)據(jù),寫入到字段622所指示的緩沖存儲器106中,繼而再寫入到閃存芯片105中。在對應(yīng)于DMA數(shù)據(jù)630的DMA傳輸中,將來自字段631所指示的DMA主機地址的數(shù)據(jù),寫入到字段632所指示的緩沖存儲器106中,繼而再寫入到閃存芯片105中。字段614是可選的。在字段614所對應(yīng)的緩沖存儲器地址處,作為ー個例子,可保存字段613所指示的DMA描述符600的長度。從而可以記錄DMA多個數(shù)據(jù)620、630所對應(yīng)的DMA傳輸有多少已經(jīng)得到執(zhí)行,或者有多少尚未被執(zhí)行。對于DMA描述符600,當其全部DMA數(shù)據(jù)620、630所對應(yīng)的DMA傳輸均已執(zhí)行完畢后,例如,所對應(yīng)的數(shù)據(jù)均寫入到閃存芯片105中后,存儲設(shè)備102向主機101發(fā)送中斷,以指示對DMA描述符600的執(zhí)行完成。這樣,對于DMA描述符600,雖然其對應(yīng)于2次DMA傳輸過程,但僅向主機101發(fā)送一次中斷。減少中斷請求次數(shù),將有助于降低主機101的工作負荷。圖7A、7B是根據(jù)本發(fā)明實施例的存儲設(shè)備執(zhí)行第二寫入命令的流程圖。第二寫入命令可以是如圖6所示的描述符600。參看圖7A,在步驟701,存儲設(shè)備102接收DMA描述符600。在DMA描述符600中包括用于主機的地址(例如,DMA主機地址621、631),用于閃存芯片105的地址(例如,存儲設(shè)備邏輯地址612)以及用于緩沖存儲器106的地址(例如,緩沖存儲器地址622、632)。雖然在圖6中的DMA描述符600包括DMA命令610、DMA數(shù)據(jù)620、630,但這僅是為了清楚表達的目的。DMA命令610、DMA數(shù)據(jù)620、630也可以組合在一起。存儲設(shè)備102從DMA描述符600中提取出用于主機的地址,用于閃存芯片105的地址以及用于緩沖存儲器106的地址。在步驟702,存儲設(shè)備102基于用于主機的地址和用于緩沖存儲器的地址,以DMA傳輸方式從主機101將數(shù)據(jù)寫入到緩沖存儲器106。在步驟703,基于用于閃存存儲器的地址和用于緩沖存儲器,將在步驟702中寫入到緩沖存儲器中的數(shù)據(jù),寫入到閃存芯片105。在一個例子中,在步驟702,將數(shù)據(jù)寫入到緩沖存儲器106之后,向主機101發(fā)送中斷,以指示對DMA傳輸?shù)膱?zhí)行完成。如果DMA描述符600中僅包括這一次DMA傳輸(例如,DMA描述600僅包括DMA命令610與DMA數(shù)據(jù)620),則該中斷也表示對DMA描述符600的執(zhí)行完成。在一個例子中,在步驟703,將數(shù)據(jù)寫入到閃存芯片105之后,向主機101發(fā)送中斷,以指示對DMA傳輸?shù)膱?zhí)行完成。參看圖7B,其示出了對包含多個DMA數(shù)據(jù)(620、630)的DMA描述符600的更詳細的處理過程。在步驟711,存儲設(shè)備102接收DMA描述符600,DMA描述符600包括DMA命令610、DMA數(shù)據(jù)620以及DMA數(shù)據(jù)630。在步驟712,基于DMA描述符600,將DMA數(shù)據(jù)620變換為第一 DMA微指令,將DMA數(shù)據(jù)630變換為第二 DMA微指令。第一 DMA微指令中包括DMA主機地址621和緩沖存儲器
地址622。基于第一 DMA微指令,還可以獲得與其對應(yīng)的存儲設(shè)備的邏輯地址612、DMA操作類型以及DMA描述符長度613。該存儲設(shè)備的邏輯地址612和DMA操作類型可以是第一DMA微指令的一部分,也可以是存儲在緩沖存儲器106中,并通過在第一 DMA微指令中的索引來訪問,還可以通過將第一 DMA微指令放置在特定的操作隊列(讀、寫、擦除、其他)中,以標識第一 DMA微指令的操作類型。作為依然另ー個例子,對于第一 DMA微指令,根據(jù)緩沖存儲器地址622與ー預(yù)定的偏移值得到存儲在緩沖存儲器106中的指針,基于該指針,獲得存儲設(shè)備的邏輯地址612和/或DMA描述符長度613。通過類似的方式,對于第二 DMA微指令,根據(jù)緩沖存儲器地址632與一預(yù)定偏移值得到存儲在緩沖存儲器106中的指針,基于該指針,獲得存儲設(shè)備的邏輯地址612和/或DMA描述符長度613。在優(yōu)選的實施例中,基于緩沖存儲器地址614,將DMA描述符長度613存儲在緩沖存儲器106中,其中DMA描述符長度等同于DMA描述符600中的DMA數(shù)據(jù)的個數(shù)(或者DMA描述符600中的DMA命令與DMA數(shù)據(jù)的總計個數(shù),從中可以得到DMA數(shù)據(jù)的個數(shù)),并通過在第一 DMA微指令中的索引來訪問DMA描述符長度613。這樣,第一 DMA微指令與第二 DMA微指令的執(zhí)行順序變得不重要。每執(zhí)行ー個DMA微指令,將緩沖存儲器106中的DMA描述符長度遞減(例如,減I或減去單位長度),當緩沖存儲器106中的DMA描述符長度變?yōu)镺吋,表示對該DMA描述符600的所有DMA操作全都執(zhí)行完成。在步驟713,對于第一 DMA微指令,基于DMA主機地址621和緩沖存儲器地址622,以DMA傳輸方式將數(shù)據(jù)寫入到相應(yīng)緩沖存儲器106中。在步驟714,對于第二 DMA微指令,基于DMA主機地址631和緩沖存儲器地址632,以DMA傳輸方式將相應(yīng)數(shù)據(jù)寫入到緩沖存儲器106中。在步驟715,向主機發(fā)送中斷,以指示對DMA描述符600的操作完成。在一個例子中,步驟713,還包括將同第一 DMA微指令相對應(yīng)的寫入到緩沖存儲器106中的數(shù)據(jù),基于存儲設(shè)備邏輯地址612,寫入到閃存芯片105中。步驟714還包括將同第二 DMA微指令相對應(yīng)的寫入到緩沖存儲器106中的數(shù)據(jù),基于存儲設(shè)備邏輯地址612加上預(yù)定偏移值的和,寫入到閃存芯片105中。在優(yōu)選的實施例中,在步驟713、714中,將相應(yīng)數(shù)據(jù)寫入到緩沖存儲器106中之后,還基于在第一、第二微指令中的索引,訪問存儲在緩沖存儲器中的DMA描述符長度613,并將DMA描述符長度613遞減(例如,減I或減去單位長度)。這樣,當該DMA描述符長度613變?yōu)镺時,意味著對DMA描述符600的操作完成。以此方式,可以在存儲設(shè)備102中同時處理多個DMA描述符600,并且第一 DMA微指令與第二 DMA微指令的執(zhí)行順序也是不重要的。還可以采用其他方式來識別DMA描述符600中的多個DMA數(shù)據(jù)均被執(zhí)行。例如,在緩沖存儲器或寄存器中為每個DMA描述符600的每個DMA數(shù)據(jù)提供標志,每當ー個DMA數(shù)據(jù)(DMA微指令)被執(zhí)行后,將相應(yīng)的標志置位。還可以順序執(zhí)行DMA描述符600中的每個DMA數(shù)據(jù)(DMA微指令),當最后ー個DMA數(shù)據(jù)(DMA微指令)被執(zhí)行后,意味著對該DMA描述符600的執(zhí)行完成。在依然另ー個實施例中,當DMA描述符600中的每ー個DMA微指令被執(zhí)行后,向主機101發(fā)送中斷,并由主機驅(qū)動程序來分析對DMA描述符600的執(zhí)行是否已完成。分析方法同上面所描述的存儲設(shè)備102中識別DMA描述符600中的 多個DMA數(shù)據(jù)是否均被執(zhí)行的過程相類似。圖7C中展示了用于實施圖7A、7B中的執(zhí)行第二寫入命令的存儲設(shè)備的硬件方框圖。圖7C中,主機101包括PCIE控制器721和主機存儲器722。主機存儲器722可以是隨機訪問存儲器(RAM),PCIE控制器721用于同存儲設(shè)備經(jīng)由PCIE總線進行通信。存儲設(shè)備102中包括PCIE接ロ 731、DMA指令分析器732、微指令FIFO (先進先出緩沖器)733、DMA寫操作控制器734、DMA寫接ロ 735、邏輯地址到物理地址轉(zhuǎn)換電路736、Flash接ロ控制器737、閃存芯片105以及緩沖存儲器106。PCIE接ロ 731接收主機101通過PCIE控制器721發(fā)送的DMA描述符600。主機101與存儲設(shè)備102之間的連接不限于PCIE方式,還可以通過SATA、IDE、USB、PCIE、SCSI、以太網(wǎng)、光纖通道等連接主機101與存儲設(shè)備102。DMA指令分析器732將PCIE接ロ 731接收到的DMA描述符600變換為DMA微指令。對于如圖6所示的DMA描述符600,其中包括DMA數(shù)據(jù)620和DMA數(shù)據(jù)630,則D MA指令分析器將其變換為對應(yīng)于DMA數(shù)據(jù)620的第一 DMA微指令和對應(yīng)于第二 DMA數(shù)據(jù)630的第二 DMA微指令。第一 DMA微指令與第二 DMA微指令的結(jié)構(gòu)已在上文中詳細介紹。DMA指令分析器732還從DMA描述符600的DMA命令610中提取出DMA描述符長度,并對其加以保存,可以保存在緩沖存儲器106、一個寄存器或者類似物中。DMA描述符長度指示了 DMA描述符600所包括的DMA數(shù)據(jù)的數(shù)量,也指示了從該DMA描述符600所得到的DMA微指令的個數(shù)。DMA指令分析器732將第一 DMA微指令與第二 DMA微指令存儲在微指令FIFO 733中。微指令FIFO 733能夠緩存DMA微指令,并按照先進先出的方式向DMA寫操作控制器734提供DMA微指令。雖然這里僅以寫操作為例,描述了將與DMA寫操作對應(yīng)的DMA微指令緩存在微指令FIF0733中,所屬領(lǐng)域技術(shù)人員將意識到可以將與DMA讀操作對應(yīng)的DMA微指令同與DMA寫操作對應(yīng)的DMA微指令混合緩存在微指令FIF0733。還可以將微指令FIF0733配置為兩部分或多個部分,其中一部分專用于存儲與DMA讀操作對應(yīng)的DMA微指令,而將另一部分專用于存儲與DMA寫操作對應(yīng)的DMA微指令。對于與DMA寫操作對應(yīng)的DMA微指令,例如,前面所提到的第一 DMA微指令與第二DMA微指令,DMA寫操作控制器734基于這些DMA微指令來執(zhí)行DMA寫操作。如同前面所提到的,第一 DMA微指令中包括,DMA主機地址621和緩沖存儲器地址622。DMA寫操作控制器734利用DMA主機地址621和緩沖存儲器地址622,通過DMA寫接ロ 735在主機101和存儲設(shè)備102之間發(fā)起DMA寫操作,將存儲在DMA主機地址621處的數(shù)據(jù),傳輸?shù)骄彌_存儲器地址622所指示的位置,所傳輸?shù)臄?shù)據(jù)可以具有預(yù)定的長度(例如4K字節(jié))。對于第二 DMA微指令,DMA寫操作控制器734執(zhí)行類似的操作,將存儲在DMA主機地址631處的數(shù)據(jù),傳輸?shù)骄彌_存儲器地址632所指示的位置。從第一 DMA微指令和第二 DMA微指令可獲得用于各自的存儲設(shè)備的邏輯地址。在邏輯地址到物理地址轉(zhuǎn)換電路736,為每條DMA微指令的存儲設(shè)備的邏輯地址轉(zhuǎn)換為用于閃存芯片105的物理地址。對于每一條DMA微指令,F(xiàn)lash接ロ控制器737將寫入到緩沖存儲器106的數(shù)據(jù),基于邏輯地址到物理地址轉(zhuǎn)換電路736所提供的物理地址,寫入到閃存芯片105中。Flash接ロ控制器737還基于在第一、第二微指令中的索引,訪問所保存的從DMA描述符600的DMA命令610中提取出DMA描述符長度,并將DMA描述符遞減(例如,減I或減去單位長度)。這樣,當該DMA描述符長度變?yōu)镺吋,意味著對DMA描述符600的操作完成。繼而,可向主機發(fā)送中斷,以指示對DMA描述符600的操作完成。在一個例子中,DMA寫操作控制器也訪問所保存的DMA描述符長度,并確定是否已將與 DMA描述符600相對應(yīng)的所有數(shù)據(jù)均寫入到緩沖存儲器106中,井向主機發(fā)送指示所有數(shù)據(jù)已寫入到緩沖存儲器106的中斷。圖8是根據(jù)本發(fā)明實施例的主機的軟件方框圖。圖8是示出了主機800的軟件的方框圖,其同圖4中展示的主機的軟件方框圖相類似。不同之處在干,圖8中的緩沖區(qū)控制塊406中還包括IO請求鏈表801。IO請求鏈表801是利用緩沖區(qū)控制塊406中的存儲單元(411,412……41η)組成的鏈表。IO請求鏈表801可以是單向鏈表、雙向鏈表或循環(huán)鏈表。在生成如圖6所不的DMA描述符600時,對于一個DMA描述符600,創(chuàng)建一個與之相對應(yīng)的IO請求鏈表801,其中包括分別與DMA命令610、DMA數(shù)據(jù)620、DMA數(shù)據(jù)630分別相對應(yīng)的存儲單元(811、812、813)。需要指出的是,存儲單元(811、812、813)是緩沖區(qū)控制塊406的存儲單元(411、412……41η)中的三個存儲単元,并通過設(shè)置相應(yīng)的指針,形成IO請求鏈表
801。在圖8中,將存儲單元(811、812、813)與存儲單元(411、412......41η)分開展示,僅僅
是為了清楚地描述的需要。圖9Α是根據(jù)本發(fā)明實施例的主機創(chuàng)建并執(zhí)行第二寫入命令的流程圖。在ー個實施例中,步驟901,由主機的存儲設(shè)備驅(qū)動程序405接收IO請求。該IO請求指示將分散在主機存儲器的不同物理地址的多個數(shù)據(jù)塊寫入到存儲設(shè)備102中,為此將在主機與存儲設(shè)備之間執(zhí)行分散-收集DMA操作。下面將以舉例的方式描述主機向存儲器寫入數(shù)據(jù)的操作過程。在步驟902,結(jié)合圖8,從緩沖區(qū)控制塊406中取出一個空閑狀態(tài)的存儲單元,例如存儲單元411。在步驟904,根據(jù)IO請求的內(nèi)容,創(chuàng)建DMA描述符600的DMA命令610,填充DMA命令610中的DMA方式字段611 (在該例子中,是寫操作)、存儲設(shè)備邏輯地址字段612 (從IO請求中可獲得該信息)、DMA描述符長度字段613 (從IO請求中可獲得該信息)以及緩沖存儲器地址字段614 (與步驟902中所分配的存儲單元411相對應(yīng))。繼而將所創(chuàng)建的DMA命令610發(fā)送給存儲設(shè)備102。并將存儲單元411作為用于該IO請求的IO請求鏈表801的起始節(jié)點(例如存儲單元811)。創(chuàng)建IO請求鏈表801,用于在存儲設(shè)備102執(zhí)行完DMA描述符600之后,將所占用的存儲單元歸還給緩沖區(qū)控制塊406,并就該IO請求的執(zhí)行完成通知應(yīng)用軟件或其他上層軟件。為此目的,在一個例子中,還在存儲單元411中存儲對應(yīng)于該IO請求的指針?;贒MA描述符長度,還可獲得DMA數(shù)據(jù)部分的剩余長度。在生成第一個DMA數(shù)據(jù)之前,DMA數(shù)據(jù)部分的剩余長度是DMA描述符600中的DMA數(shù)據(jù)(620、630)的個數(shù),作為ー個例子,其為DMA描述符長度減I。在步驟906,從緩沖區(qū)控制塊406中取出一個空閑狀態(tài)的存儲單元,例如,存儲單元412。根據(jù)IO請求的內(nèi)容,創(chuàng)建DMA描述符600的DMA數(shù)據(jù)620,填充DMA數(shù)據(jù)620中的DMA主機地址字段621 (從IO請求中可獲得該信息)以及緩沖存儲器地址622 (與所分配的存儲單元412相對應(yīng),例如,存儲單元412在緩沖區(qū)控制塊406中的偏移值或序號)。繼而將所創(chuàng)建的DMA數(shù)據(jù)620發(fā)送給存儲設(shè)備102。并將存儲單元412作為用于該IO請求的IO請求鏈表801的節(jié)點(例如存儲單元812)。在步驟908,將DMA數(shù)據(jù)部分剩余長度遞減,得到DMA描述符600中尚未發(fā)送給存儲設(shè)備的DMA數(shù)據(jù)的個數(shù)。在步驟909,如果DMA數(shù)據(jù)部分的剩余長度為0,則表示DMA描述符600的生成已 經(jīng)完成,進而在步驟910存儲設(shè)備驅(qū)動程序405將等待存儲設(shè)備102返回的表示DMA描述符600的處理已經(jīng)完成的中斷,并依據(jù)該中斷找到與之對應(yīng)的IO請求鏈表801,以及將IO請求鏈表801中的存儲單元(811、812)釋放。換句話說,將由IO請求鏈表801中的存儲單元(811、812)的狀態(tài)設(shè)置為空閑,從而使得通過緩沖區(qū)控制塊406可以獲知存儲單元411、412的狀態(tài)為空閑。在一個例子中,在DMA描述符600指示讀操作,且主機101的CPU包括高速緩沖存儲器的情況下,還通知同DMA描述符600的DMA主機地址(621、631)相關(guān)聯(lián)的CPU高速緩沖存儲器執(zhí)行一致性處理,以反映出DMA主機地址(621、631)處的數(shù)據(jù)可能因讀DMA讀操作而發(fā)生變化。在一個例子中,存儲設(shè)備102返回的中斷中包括指示IO請求鏈表801中的多個存儲單元(811、812)之一(或者緩沖存儲器地址622、632之一)的內(nèi)容,依據(jù)該內(nèi)容,通過IO請求鏈表801將存儲單元(811、812)釋放。在步驟909,如果DMA數(shù)據(jù)部分的剩余長度大于0,則表示DMA描述符600的生成尚未完成,還需要為IO請求生成ー個或多個DMA數(shù)據(jù),那么處理將返回到步驟906并重復(fù)執(zhí)行步驟906、908和909。圖9B是根據(jù)本發(fā)明另一實施例的主機創(chuàng)建并執(zhí)行第二寫入命令的流程圖。在該實施例中,將緩沖區(qū)控制塊406中的空閑存儲單元進一步組織為空閑存儲單元池,以有助于DMA描述符600的創(chuàng)建過程。通過將緩沖區(qū)控制塊406中狀態(tài)為空閑的存儲單元(411、412……41η)組織成鏈表來形成空閑存儲單元池。當需要從緩沖區(qū)控制塊406中獲得空閑存儲單元時,可以從空閑存儲単元池中取出存儲單元,從而省去了在緩沖區(qū)控制塊406中查找空閑存儲単元的開銷。在一個實施例中,步驟921,由主機的存儲設(shè)備驅(qū)動程序405接收IO請求。同圖9Α相類似,該IO請求指示將分散在主機存儲器的不同物理地址的多個數(shù)據(jù)塊寫入到存儲設(shè)備102中,為此將在主機與存儲設(shè)備之間執(zhí)行分散-收集DMA操作。在步驟922,根據(jù)IO請求的內(nèi)容,計算出用于與相同該IO請求相對應(yīng)的DMA描述符的長度(例如,DMA命令以及DMA數(shù)據(jù)的個數(shù))。注意到在圖9Α公開的實施例中,是在步驟904創(chuàng)建DMA命令610的過程中獲得DMA描述符長度,所屬領(lǐng)域技術(shù)人員將意識到各個步驟并非必然以本實施例中所公開的順序執(zhí)行。在步驟923,判斷空閑存儲単元池中是否為空。如果空閑存儲單元池非空,即緩沖區(qū)控制塊406中存在處于空閑狀態(tài)的存儲單元,則進行到步驟924,并從空閑存儲單元池中取出一個空閑存儲單元(例如存儲單元411)。如果空閑存儲單元池為空,意味著緩沖區(qū)控制塊406中沒有空閑的存儲單元。則在步驟925,等待空閑存儲單元池被更新,以出現(xiàn)空閑的存儲單元。當DMA描述符的執(zhí)行完成后,與之相關(guān)的存儲單元會被釋放,從而在空閑存儲單元池中出現(xiàn)空閑的存儲單元。后面對此會詳細介紹。在步驟926,確定當前要生成用于DMA描述符600的DMA命令字段還是DMA數(shù)據(jù)字段。一般而言,DMA描述符600包括ー個DMA命令和ー個或多個DMA數(shù)據(jù)。當要生成DMA命令時,處理轉(zhuǎn)向步驟927,并根據(jù)IO請求的內(nèi)容,創(chuàng)建DMA描述符600的DMA命令610,填充DMA命令610中的各個字段(611、612、613、614)。在一個例子中,還在存儲單元411中存儲對應(yīng)于該IO請求的指針,以便在該IO請求的執(zhí)行完成后,可識別該IO請求并通知應(yīng)用軟件或其他上層軟件。當要生成DMA數(shù)據(jù)時,處理轉(zhuǎn)向步驟928,并根據(jù)IO請求的內(nèi)容,創(chuàng)建DMA描述符600的DMA數(shù)據(jù)620,填充DMA數(shù)據(jù)620的各個字段(621、622)。接下來,在步驟929,將所生成的DMA命令或DMA數(shù)據(jù)發(fā)送給存儲設(shè)備102。并在步驟930,將在步驟924中獲得的存儲單元411設(shè)置在IO請求鏈表801中。作為ー個例子,第一個進入到IO請求鏈表801的存儲單元,將作為IO請求鏈表801的頭節(jié)點,但是,也將 意識到當IO請求鏈表801被組織為環(huán)形鏈表時,其中并不存在“頭節(jié)點”。在步驟930,還將DMA描述符長度遞減。在步驟931,如果DMA描述符長度為0,意味著DMA描述符600的生成已經(jīng)完成,進而在步驟932存儲設(shè)備驅(qū)動程序405將等待存儲設(shè)備102返回的表示DMA描述符600的處理已經(jīng)完成的中斷,并依據(jù)該中斷找到與之對應(yīng)的IO請求鏈表801,以及將IO請求鏈表801中的存儲單元(811、812)釋放。換句話說,將由IO請求鏈表801中的存儲單元(811、812)的狀態(tài)設(shè)置為空閑,從而使得通過緩沖區(qū)控制塊406可以獲知存儲單元411、412的狀態(tài)為空閑,并將存儲單元411、412放入空閑存儲單元池中。在一個例子中,存儲設(shè)備102返回的中斷中包括指示IO請求鏈表801中的多個存儲単元(811、812)之一的內(nèi)容,依據(jù)該內(nèi)容,通過IO請求鏈表801將存儲單元(811、812)釋放。在步驟931,如果DMA描述符長度大于0,則表示DMA描述符600的生成尚未完成,還需要為IO請求生成ー個或多個DMA數(shù)據(jù),那么處理將返回到步驟923并重復(fù)執(zhí)行步驟923-931。上面結(jié)合圖9A、9B描述了 DMA描述符600的生成過程。DMA描述符600用于在分散-收集DMA中描述要執(zhí)行的多個DMA操作,該多個DMA操作的數(shù)據(jù)來源于存儲在連續(xù)或不聯(lián)系的存儲空間中。所屬領(lǐng)域技術(shù)人員將容易意識到,DMA描述符600的生成方式包括但不限于上面圖9A、9B中描述的具體方式。圖IOA是根據(jù)本發(fā)明的實施例的在存儲設(shè)備的緩沖存儲器中創(chuàng)建鏈表的流程圖。在如圖7A-7C所公開的存儲設(shè)備處理DMA描述符600的過程中,將DMA描述符600轉(zhuǎn)換為ー個或多個微指令。在進ー步的實施例中,為了有效處理ー個或多個微指令之間的關(guān)聯(lián)關(guān)系(例如,這些微指令均同DMA描述符600相關(guān)聯(lián)),存儲設(shè)備102響應(yīng)于主機101所傳輸?shù)腄MA描述符600,還在緩沖存儲器106中建立鏈表,該鏈表將對應(yīng)于同一 DMA描述符600的多個微指令關(guān)聯(lián)起來。如圖IOA所示,在步驟1002,主機101向存儲設(shè)備102發(fā)送DMA描述符600。DMA描述符600包括DMA命令610與DMA數(shù)據(jù)620、630。前面已經(jīng)結(jié)合圖9A與圖9B而描述了主機101向存儲設(shè)備102發(fā)送DMA描述符600的過程的例子。還應(yīng)當意識到,在存儲設(shè)備的緩沖存儲器中創(chuàng)建鏈表,將有助于存儲設(shè)備對IO操作的執(zhí)行,特別是對多個IO操作的并發(fā)/亂序執(zhí)行,多個IO操作可通過訪問各自的鏈表而關(guān)聯(lián)在一起。這樣不具備關(guān)聯(lián)關(guān)系的IO操作可以在存儲設(shè)備中并發(fā)執(zhí)行。因而,還可以響應(yīng)除DMA命令之外的其他類型的IO命令或其他命令,以在存儲設(shè)備中創(chuàng)建鏈表。在步驟1004,判斷所接收到的是DMA命令610還是DMA數(shù)據(jù)620、630。如果接收到DMA命令610,在步驟1006,從其中的緩沖存儲器地址字段610中提取出用于該DMA命令610的緩沖存儲器地址,并基于該緩沖存儲器地址,為該DMA命令610在緩沖存儲器106中分配存儲空間。接下來,在步驟1008,保存為該DMA命令610所分配的緩沖存儲器地址,用來在為DMA數(shù)據(jù)620、630分配緩沖存儲器地址時使用。如果在步驟1004判斷出所接收到的是DMA數(shù)據(jù)620,則在步驟1010,從DMA數(shù)據(jù) 620的緩沖存儲器地址字段622從提取出用于該DMA數(shù)據(jù)620的緩沖存儲器地址,并基于該緩沖存儲器地址,為該DMA數(shù)據(jù)620在緩沖存儲器106中分配存儲空間。并在步驟1012中,在為該DMA數(shù)據(jù)620所分配的緩沖存儲器的存儲空間中,存儲在步驟1008中保存的DMA命令610的緩沖存儲器地址。這樣,在緩沖存儲器106中,為DMA命令610和DMA數(shù)據(jù)620所分配的存儲空間形成了鏈表,其中為DMA命令610所分配的存儲空間是鏈表的頭節(jié)點,為DMA數(shù)據(jù)620所分配的存儲空間連接到鏈表的頭節(jié)點。在DMA描述符600還包括DMA數(shù)據(jù)630的情況下,通過步驟1010和步驟1012,基于DMA數(shù)據(jù)630中的緩沖存儲器地址632為DMA數(shù)據(jù)630在緩沖存儲器106中分配存儲空間,并在為DMA數(shù)據(jù)630所分配的緩沖存儲器的存儲空間中,保存DMA命令610的緩沖存儲器地址。所屬領(lǐng)域技術(shù)人員將意識到,也可以在為DMA數(shù)據(jù)630所分配的緩沖存儲器106的存儲空間中,保存用于DMA數(shù)據(jù)620的緩沖存儲器地址,從而形成不同類型的鏈表。在其他例子中,將緩沖存儲器106中為DMA命令610、DMA數(shù)據(jù)620、630所分配的存儲空間創(chuàng)建為循環(huán)鏈表或雙向鏈表。上面結(jié)合圖7A、7B、7C已經(jīng)描述了存儲設(shè)備102基于DMA數(shù)據(jù)(620、630)生成DMA微指令,并保存在微指令FIFO 733中。DMA數(shù)據(jù)(620、630)生成DMA微指令的操作可以發(fā)生于步驟1012之后,并在DMA微指令中攜帶為DMA數(shù)據(jù)(620、630)所分配的緩沖存儲器地址。圖IOB是根據(jù)本發(fā)明的一實施例的在存儲設(shè)備的緩沖存儲器中創(chuàng)建鏈表的流程圖。同圖IOA所提供的實施例相比,圖IOB的實施例中,還將與DMA描述符的處理或執(zhí)行相關(guān)的信息存儲在所創(chuàng)建的鏈表中。圖IOC是根據(jù)本發(fā)明的ー實施例的存儲設(shè)備利用在緩沖存儲器中創(chuàng)建的鏈表執(zhí)行DMA描述符的流程圖。圖11A-11F展示出了與圖IOB與圖IOC相關(guān)聯(lián)的緩沖存儲器的多種狀態(tài)。在圖11A-11F中,1100指示緩沖存儲器106中的存儲空間。具體地,在步驟1020,主機101向存儲設(shè)備102發(fā)送DMA描述符600。在步驟1022,判斷所接收到的是DMA命令610還是DMA數(shù)據(jù)620、630。如果接收到DMA命令610,在步驟1024,從緩沖存儲器地址字段610中提取出緩沖存儲器地址,并基于該緩沖存儲器地址,為該DMA命令610在緩沖存儲器106中分配存儲空間。參看圖11A,為DMA命令610分配存儲空間1101。以及還從DMA命令610中提取出DMA描述符長度字段613,從DMA描述符長度613可以得到該DMA描述符600的DMA數(shù)據(jù)部分的長度(例如,DMA描述符長度減I)。接下來,在步驟1026,保存為該DMA命令610所分配的緩沖存儲器地址,用來在為DMA數(shù)據(jù)620、630分配緩沖地址時使用。并且,將DMA數(shù)據(jù)部分的長度記錄在為該DMA命令610所分配的緩沖存儲器中。參看圖11A,在存儲空間1101中保存了 DMA數(shù)據(jù)部分的長度(在這個例子中,DMA數(shù)據(jù)部分的長度為2)。如果在步驟1022判斷出所接收到的是DMA數(shù)據(jù)620,則在步驟1028,從DMA數(shù)據(jù)620的緩沖存儲器地址字段622從提取出用于該DMA數(shù)據(jù)620的緩沖存儲器地址,并基于該緩沖存儲器地址,為該DMA數(shù)據(jù)620在緩沖存儲器106中分配存儲空間。參看圖11B,為DMA數(shù)據(jù)620分配存儲空間1112。并在步驟1030中,在為該DMA數(shù)據(jù)620所分配的緩沖存儲器的存儲空間1112中,存儲在步驟1026中保存的DMA命令610的緩沖存儲器地址。這樣,在緩沖存儲器106中,為DMA命令610和DMA數(shù)據(jù)620所分配的存儲空間(1101與1112)形成了鏈表,其中為DMA命令610所分配的存儲空間1101是鏈表的頭節(jié)點,為DMA數(shù)據(jù)620所分配的存儲空間1112連接到鏈表的頭節(jié)點。還在存儲空間1112中存儲同DMA數(shù)據(jù)620相對應(yīng)的DMA主機地址。
在DMA描述符600還包括DMA數(shù)據(jù)630的情況下,通過步驟1028和步驟1030,基于DMA數(shù)據(jù)630中的緩沖存儲器地址632為DMA數(shù)據(jù)630在緩沖存儲器106中分配存儲空間1123 (參看圖11C),并在存儲空間1123中,保存DMA命令610的緩沖存儲器地址。以及還在存儲空間1123中存儲同DMA數(shù)據(jù)630相對應(yīng)的DMA主機地址。因而,在緩沖存儲器106中形成了同DMA描述符600相對應(yīng)的鏈表,其中存儲空間1101是鏈表的頭節(jié)點,存儲空間1112和1123是鏈表的節(jié)點,并指向該鏈表的頭節(jié)點。所屬領(lǐng)域技術(shù)人員將意識到,也可以在為DMA數(shù)據(jù)630所分配的緩沖存儲器106的存儲空間1123中,保存用于DMA數(shù)據(jù)620的緩沖存儲器地址,從而形成不同類型的鏈表。在其他例子中,將緩沖存儲器106中為DMA命令610、DMA數(shù)據(jù)620、630所分配的存儲空間創(chuàng)建為循環(huán)鏈表或雙向鏈表。圖IOC是根據(jù)本發(fā)明的ー實施例的存儲設(shè)備利用在緩沖存儲器中創(chuàng)建的鏈表執(zhí)行DMA描述符的流程圖。上面結(jié)合圖7A、7B、7C已經(jīng)描述了存儲設(shè)備102基于DMA數(shù)據(jù)(620,630)生成DMA微指令,并保存在微指令FIFO 733中。在存儲設(shè)備102對DMA微指令的執(zhí)行中,在一個例子中,利用在緩沖存儲器106中的鏈表。在DMA微指令中,包括緩沖存儲器地址,通過該緩沖存儲器地址,可以獲得為同該DMA微指令相對應(yīng)的DMA數(shù)據(jù)所分配的緩沖存儲器106中的存儲空間,進而可以獲得與該DMA數(shù)據(jù)所對應(yīng)的DMA主機地址以及與該DMA數(shù)據(jù)所對應(yīng)的DMA描述符中的DMA數(shù)據(jù)部分長度或DMA數(shù)據(jù)的個數(shù)。在下面的描述中,將對應(yīng)于DMA數(shù)據(jù)620的DMA微指令用第一 DMA微指令指示,將對應(yīng)于DMA數(shù)據(jù)630的DMA微指令用第二 DMA微指令指示。在步驟1040,從微指令FIF0733中獲得將第一 DMA微指令。在步驟1042,第一 DMA微指令中包括為DMA數(shù)據(jù)620所分配的緩沖存儲器106的存儲空間1112的地址,并從存儲空間1112中獲得DMA主機地址。該DMA主機地址是由DMA數(shù)據(jù)620中的DMA主機地址字段621所提供的?;贒MA主機地址,在主機101和存儲設(shè)備102之間進行DMA傳輸,將主機101的該DMA主機地址處的預(yù)定長度(例如,4KB)的數(shù)據(jù),以DMA方式傳輸?shù)酱鎯υO(shè)備102的緩沖存儲器中。對于第二 DMA微指令,執(zhí)行類似的操作,將主機101的由DMA數(shù)據(jù)630的DMA主機地址字段632所提供的DMA主機地址處的數(shù)據(jù),以DMA方式傳輸?shù)酱鎯υO(shè)備102的緩沖存儲器的為DMA數(shù)據(jù)632所分配的存儲空間1123處。在圖IID中,示出了執(zhí)行完第一 DMA微指令與第二 DMA微指令后,存儲了以DMA方式傳輸?shù)臄?shù)據(jù)的存儲空間1112和存儲空間1123。在步驟1044,繼續(xù)對第一 DMA微指令加以執(zhí)行。通過第一 DMA微指令中的存儲空間1112的地址,從存儲空間中取出預(yù)定長度的數(shù)據(jù),該數(shù)據(jù)是在步驟1042中,通過DMA操作從主機101傳輸?shù)骄彌_存儲器106的存儲空間1112的。并通過閃存接ロ控制器(例如,圖7C中的Flash接ロ控制器737)將該數(shù)據(jù)基于第一 DMA微指令中所包括的用于閃存存儲器的地址,寫入到閃存芯片105。該用于閃存存儲器的地址是通過DMA命令610中的存儲設(shè)備邏輯地址字段612所得到的。對第二 DMA微指令以類似的方式加以執(zhí)行。通過第二 DMA微指令中包括的存儲空間1123的地址,從存儲空間中取出預(yù)定長度的數(shù)據(jù),并將該數(shù)據(jù)通過閃存接ロ控制器,基于第二 DMA微指令中所包括的用于閃存存儲器的地址,寫入到閃存芯片105。第二 DMA微指令中所包括的用于閃存存儲器的地址,是通過DMA命令610中的存儲設(shè)備邏輯地址字段612加上預(yù)定值(例如對應(yīng)于DMA傳輸?shù)臄?shù)據(jù)的長度,在該例子中,是4KB)所得到的。在一個例子中,將DMA命令610中的存儲設(shè)備邏輯地址轉(zhuǎn)換為存儲設(shè)備的 物理地址,并基于該物理地址將數(shù)據(jù)寫入到閃存芯片105中。從存儲設(shè)備的邏輯地址到物理地址的映射過程,是所屬領(lǐng)域技術(shù)人員所熟知的。在步驟1046,繼續(xù)對第一 DMA微指令加以執(zhí)行。通過第一 DMA微指令中的存儲空間1112的地址,獲得為DMA命令610所分配的存儲空間1101的地址,并在存儲空間1101中獲得DMA數(shù)據(jù)部分長度,以及將存儲1101中存儲的DMA數(shù)據(jù)部分長度遞減(例如,減I或者減去單位長度)。參看圖11E,對于第一 DMA微指令,將存儲空間1101中的DMA數(shù)據(jù)部分長度遞減后,其值由2變?yōu)镮。并且,存儲空間1112中不再保存存儲空間1101的地址,用于表明對DMA數(shù)據(jù)620的執(zhí)行已經(jīng)完成。在步驟1048,由于DMA數(shù)據(jù)部分的長度不為0,意味著對DMA描述符600的操作尚未完成,因為其還包含另ー個DMA數(shù)據(jù)630,此時,不進行進ー步的處理。當?shù)诙?DMA微指令在步驟1046被執(zhí)行時,通過第二 DMA微指令中的存儲空間1123的地址,獲得為DMA命令610所分配的存儲空間1101的地址,并在存儲空間1101中獲得DMA數(shù)據(jù)部分長度,以及將存儲1101中存儲的DMA數(shù)據(jù)部分長度遞減(例如,減I或者減去單位長度)。參看圖11F,對于第二 DMA微指令,將存儲空間1101中的DMA數(shù)據(jù)部分長度遞減后,其值由I變?yōu)镺。并且,存儲空間1123中不再保存存儲空間1101的地址,用于表明對DMA數(shù)據(jù)630的執(zhí)行已經(jīng)完成。此時,當?shù)诙?DMA描述符在步驟1048被執(zhí)行時,由于DMA數(shù)據(jù)部分的長度為0,意味著對DMA描述符600的執(zhí)行已經(jīng)完成。接下來,在步驟1050,向主機101發(fā)送中斷,以指示對DMA描述600的執(zhí)行已經(jīng)完成。再次參看圖11F,存儲空間1112與1123均不再保存存儲空間1101的地址。存儲空間1101中的DMA數(shù)據(jù)部分長度的值為O。在此情況下,意味著對DMA描述符600的執(zhí)行已經(jīng)完成,對存儲空間1101、1112與1123均不會再加以使用,這些存儲空間可以被釋放以用于對其他DMA描述符的執(zhí)行。在一個例子中,由主機101控制對相應(yīng)存儲空間的釋放和再利用,在上面已結(jié)合圖9A與圖9B對IO請求鏈表801中的存儲空間的釋放。由于緩沖區(qū)控制塊406中的存儲單元(411、412……41η)與緩沖存儲器106中的存儲空間相對應(yīng),因而對IO請求鏈表801中的存儲空間的釋放,意味著對緩沖存儲器中的存儲空間1101、1112與1123的釋放。上面結(jié)合圖10B、10C、11A_11F而描述了在緩沖存儲器106中存儲對應(yīng)于第一與第ニ微指令的DMA主機地址的方案,從而使得DMA微指令中不必攜帶DMA主機地址而減少了對電路資源的占用,并通過緩沖存儲器106將對應(yīng)于同一 DMA描述符600的第一、第二 DMA微指令關(guān)聯(lián)在一起的方案。所屬領(lǐng)域技術(shù)人員將意識到,還可以將對應(yīng)于第一與第二微指令的存儲設(shè)備邏輯地址和/或DMA主機地址存儲在緩沖存儲器中,從而進一步減少DMA微指令的長度及其對電路資源的占用。圖12是根據(jù)本發(fā)明的又一實施例的存儲設(shè)備的硬件方框圖。與圖7C中公開的相似,主機101包括PCIE控制器721和主機存儲器722。存儲設(shè)備102中包括PCIE接ロ 731、DMA指令分析器732、微指令先進先出緩沖器(FIFO)733、DMA寫操作控制器734、DMA寫接ロ735、邏輯地址到物理地址轉(zhuǎn)換電路736以及緩沖存儲器106。存儲設(shè)備102中還包括DMA讀寫微指令判斷電路1210,DMA讀接ロ 1212,閃存控制器1221、1222、1223,閃存接ロ 1231、1232、1233,完成控制電路1242、多路選擇器1241以及多路共享器1243。閃存接ロ 1231、1232、1233耦合于閃存芯片105。PCIE接ロ 731接收主機101通過PCIE控制器721發(fā)送的DMA描述符600。主機101與存儲設(shè)備102之間的連接不限于PCIE方式。DMA指令分析器732將PCIE接ロ 731接收到的DMA描述符600變換為DMA微指令。對于如圖6所示的DMA描述符600,則DMA指令分析器將其變換為對應(yīng)于DMA數(shù)據(jù)620的第一 DMA微指令和對應(yīng)于DMA數(shù)據(jù)630的第二DMA微指令。在一個例子中,第一與第二 DMA微指令中分別包括指示該微指令類型(讀/寫/擦除/其他)的字段、指示與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段、指示存儲設(shè)備的邏輯地址的字段。參看圖IOB與圖11C,DMA指令分析器732還針對DMA命令610,在緩沖存儲器106中分配存儲單元,并在其中存儲DMA數(shù)據(jù)部分的長度。DMA指令分析器還針對DMA數(shù)據(jù)620,在緩沖存儲器106中分配存儲單元,并在其中存儲為DMA命令610所分配的存儲單元的地址,以及存儲DMA數(shù)據(jù)620中的DMA主機地址。DMA指令分析器還針對DMA數(shù)據(jù)630,在緩沖存儲器106中分配存儲單元,并在其中存儲為DMA命令610所分配的存儲單元的地址,以及存儲DMA數(shù)據(jù)630中的DMA主機地址。DMA指令分析器732將第一 DMA微指令與第二 DMA微指令存儲在微指令FIFO 733中。微指令FIFO 733能夠緩存DMA微指令,并按照先進先出的方式向DMA讀寫微指令判斷電路1210提供DMA微指令。在DMA讀寫微指令判斷電路1210,判斷所獲得的DMA微指令的類型。對于與DMA寫操作對應(yīng)的DMA微指令,例如,前面所提到的第一 DMA微指令與第二 DMA微指令,DMA寫操作控制器734基于這些DMA微指令來執(zhí)行DMA寫操作。DMA寫操作控制器734利用第一DMA微指令中的指示與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段,從緩沖存儲器106中獲得DMA主機地址,并通過DMA寫接ロ 735在主機101和存儲設(shè)備102之間發(fā)起DMA寫操作,將存儲在DMA主機地址中的數(shù)據(jù),傳輸?shù)脚c第一 DMA微指令相對應(yīng)的緩沖存儲器106的存儲單元中,所傳輸?shù)臄?shù)據(jù)可以具有預(yù)定的長度(例如4K字節(jié))。對于第二 DMA微、指令,DMA寫操作控制器734利用與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段,從緩沖存儲器106中獲得DMA主機地址,并在主機101和存儲設(shè)備102之間發(fā)起DMA寫操作,將存儲在DMA主機地址中的數(shù)據(jù),傳輸?shù)脚c第二 DMA微指令相對應(yīng)的緩沖存儲器106的存儲單元中。從第一 DMA微指令和第二 DMA微指令的指示存儲設(shè)備的邏輯地址的字段獲得用于各自的存儲設(shè)備的邏輯地址。在邏輯地址到物理地址轉(zhuǎn)換電路736,將每條DMA微指令的存儲設(shè)備的邏輯地址轉(zhuǎn)換為用于閃存芯片105的物理地址。對于每一條DMA微指令,F(xiàn)lash控制器1221、1222、1223基于邏輯地址到物理地址轉(zhuǎn)換電路736所提供的物理地址,通過閃存接ロ 1231、1232、1233將寫入到緩沖存儲器106的數(shù)據(jù),寫入到閃存芯片105中,其中,F(xiàn)lash控制器1221同閃存接ロ 1231相耦合,F(xiàn)lash控制器1222同閃存接ロ 1232相耦合,F(xiàn)lash控制器1223同閃存接ロ 1233相耦合。而閃存接ロ 1231、1232、1233分別耦合到各自的閃存芯片。因而對于從DMA微指令中的存儲設(shè)備的邏輯地址轉(zhuǎn)換得到的用于閃存芯片105的物理地址,該物理地址指示了特定的閃存芯片,并且該閃存芯片與閃存接ロ 1231、1232、1233的特定一個相耦合。因而,基于該物理地址,可以確定使用閃存接ロ 1231、1232、1233中的哪ー個將數(shù)據(jù)寫入閃存芯片,也可以確定使用Flash控制器1221、1222、1223中的哪ー個。閃存接ロ 1231、1232、1233還通過多路選擇器1241與緩沖存儲器相耦合?;谠撐锢淼刂罚嗦愤x擇器1241將數(shù)據(jù)從緩沖存儲器106傳送給閃存接ロ 1231、1232、1233中的特定ー個。閃存接ロ 1231、1232、1233將數(shù)據(jù)寫入到閃存芯片105中之后,完成控制電路1242還基于在第一、第二微指令中的指示與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段,訪問緩沖存儲器106,并進而訪問緩沖存儲器中為DMA命令610所分配的存儲單元,從中獲得DMA數(shù)據(jù)部分的長度,并將DMA數(shù)據(jù)部分的長度遞減(例如,減I或減去單位長度)。這樣,當為DMA命令610所分配的存儲單元中的該DMA數(shù)據(jù)部分的長度變?yōu)镺吋,意味著對DMA描述符600的操作完成。繼而,可向主機發(fā)送中斷,以指示對DMA描述符600的操作完成。雖然圖12中以舉例的方式展示了包括三個Flash控制器1221、1222、1223以及三個閃存接ロ 1231、1232、1233的實施例,所屬領(lǐng)域技術(shù)人員將意識到可以使用多種不同數(shù)量的Flash控制器與閃存接ロ,以同閃存芯片的數(shù)量相適應(yīng)。對于與DMA讀操作對應(yīng)的DMA微指令,DMA讀寫微指令判斷電路1210將其直接傳送給邏輯地址到物理地址轉(zhuǎn)換電路736,并得到用于閃存芯片105的物理地址。Flash控制器1221、1222、1223基于該物理地址,通過閃存接ロ 1231、1232、1233將從閃存芯片105中讀出數(shù)據(jù)。并基于DMA微指令中的指示與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段,從緩沖存儲器106中獲得與該DMA微指令相對應(yīng)的DMA主機地址,以及經(jīng)由DMA讀接ロ 1212在主機101與存儲設(shè)備102之間發(fā)起DMA傳輸,將讀出數(shù)據(jù)傳輸?shù)街鳈C101的主機RAM 722中由該DMA主機地址所指示的位置處。閃存接ロ 1231、1232、1233經(jīng)由多路共享器1243與DMA讀接ロ 1212相耦合,使得從閃存接ロ 1231、1232、1233獲得的數(shù)據(jù)均可以通過DMA讀接ロ 1212傳輸?shù)街鳈CRAM 722。當閃存接ロ 1231、1232、1233從閃存芯片105讀 出數(shù)據(jù)后,完成控制電路1242也基于在DMA微指令中的指示與其對應(yīng)的緩沖存儲器106中的存儲單元的地址的字段,訪問緩沖存儲器106,并進而獲得DMA數(shù)據(jù)部分的長度,并將DMA數(shù)據(jù)部分的長度遞減(例如,減I或減去單位長度)。這樣,當該DMA數(shù)據(jù)部分的長度變?yōu)镺吋,意味著對該DMA描述符的操作完成。繼而,可向主機發(fā)送中斷,以指示對該DMA描述符的操作完成。在圖12所公開的存儲設(shè)備中,可以支持對多個DMA描述符600的并發(fā)操作。對于多個DMA描述符600的每ー個,通過在緩沖存儲器106中創(chuàng)建的鏈表,將與ー個DMA描述符600相對應(yīng)的DMA數(shù)據(jù)關(guān)聯(lián)在一起,使得對多個DMA微指令的操作順序變得不重要。上面已經(jīng)詳細描述了存儲設(shè)備執(zhí)行數(shù)據(jù)寫入操作或與寫操作相關(guān)的DMA描述符的執(zhí)行。顯然,存儲設(shè)備執(zhí)行讀操作也可以從本發(fā)明公開中獲益。例如,可以在讀取命令中同時指定閃存芯片地址和緩沖存儲器地址,并利用緩沖存儲器作為讀出數(shù)據(jù)的緩沖。也可以在與讀操作相關(guān)的DMA描述符中描述緩沖存儲器地址,在將數(shù)據(jù)從閃存芯片中讀出后, 可利用緩沖存儲器作為讀出數(shù)據(jù)的緩存。已經(jīng)為了示出和描述的目的而展現(xiàn)了對本發(fā)明的描述,并且不g在以所公開的形式窮盡或限制本發(fā)明。對所屬領(lǐng)域技術(shù)人員,許多調(diào)整和變化是顯而易見的。
權(quán)利要求
1.一種將數(shù)據(jù)寫入存儲設(shè)備的方法,所述存儲設(shè)備包括緩沖存儲器和閃存存儲器,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,所述方法包括 從信息處理設(shè)備接收第一 DMA描述符,所述DMA描述符包括用于所述信息處理設(shè)備的地址、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址; 當所述第一 DMA描述符指示DMA寫操作時,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器; 基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。
2.根據(jù)權(quán)利要求I所述的方法,其中所述第一DMA描述符包括第一 DMA描述符命令和第一 DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,所述第一 DMA描述符命令包括用于所述閃存存儲器的地址;所述方法還包括 將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,所述第一 DMA微指令指示用于所述閃存存儲器的地址、用于所述信息處理設(shè)備的地址以及用于所述緩沖存儲器的地址; 其中,當所述第一 DMA微指令指示DMA寫操作時,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器; 基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。
3.根據(jù)權(quán)利要求I所述的方法,其中所述第一DMA描述符包括第一 DMA描述符命令、第一 DMA描述符數(shù)據(jù)以及第二 DMA描述符數(shù)據(jù),所述第一 DMA描述符數(shù)據(jù)包括第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,所述第二 DMA描述符數(shù)據(jù)包括第二用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,所述第一 DMA描述符命令包括用于所述閃存存儲器的地址;所述方法還包括 將所述第一 DMA描述符數(shù)據(jù)變換為第一 DMA微指令,將所述第二 DMA描述符數(shù)據(jù)變換為第二 DMA微指令,所述第一 DMA微指令指示第一用于所述閃存存儲器的地址、第一用于所述信息處理設(shè)備的地址以及第一用于所述緩沖存儲器的地址,所述第二 DMA微指令指示第二用于所述閃存存儲器的地址、第二用于所述信息處理設(shè)備的地址以及第二用于所述緩沖存儲器的地址,其中所述第二閃存存儲器地址與所述第一閃存存儲器地址相距預(yù)定偏移值; 其中,當所述第一 DMA微指令指示DMA寫操作時,基于第一用于所述信息處理設(shè)備的地址和第一用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器;當所述第二 DMA微指令指示DMA寫操作時,基于第二用于所述信息處理設(shè)備的地址和第二用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第二數(shù)據(jù)寫入到所述緩沖存儲器; 基于第一用于所述閃存存儲器的地址和第一用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器;基于第二用于所述閃存存儲器的地址和第二用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第二數(shù)據(jù),寫入到所述閃存存儲器。
4.根據(jù)權(quán)利要求1、2中的任何一項所述的方法,其中 當將所述第一數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。
5.根據(jù)權(quán)利要求1、2、4中的任何一項所述的方法,其中 當將所述第一數(shù)據(jù)寫入到所述緩沖存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一 DMA描述符的操作完成。
6.根據(jù)權(quán)利要求3所述的方法,其中 當將所述第一數(shù)據(jù)與所述第二數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送中斷,以指示對同所述第一用于所述緩沖存儲器的地址和所述第二用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。
7.根據(jù)權(quán)利要求3或6所述的方法,其中 當將所述第一數(shù)據(jù)與所述第二數(shù)據(jù)寫入到所述緩沖存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一 DMA描述符的操作完成。
8.一種存儲設(shè)備,所述存儲設(shè)備包括緩沖存儲器、閃存存儲器、信息處理設(shè)備接口以及控制電路,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,其中 所述信息處理設(shè)備接口從信息處理設(shè)備接收第一 DMA描述符,所述第一 DMA描述符包括用于所述信息處理設(shè)備的地址、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址; 當所述控制電路識別出所述第一 DMA描述符指示DMA寫操作時,基于用于所述信息處理設(shè)備的地址和用于所述緩沖存儲器的地址,以DMA傳輸方式從所述信息處理設(shè)備將第一數(shù)據(jù)寫入到所述緩沖存儲器; 所述控制電路基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述第一數(shù)據(jù),寫入到所述閃存存儲器。
9.一種將數(shù)據(jù)寫入存儲設(shè)備的方法,所述存儲設(shè)備包括緩沖存儲器和閃存存儲器,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,所述方法包括 從信息處理設(shè)備接收第一寫入命令,所述第一寫入命令包括要寫入的數(shù)據(jù)、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址; 基于所述用于所述緩沖存儲器的地址,將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器; 基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述要寫入的數(shù)據(jù),寫入到所述閃存存儲器。
10.根據(jù)權(quán)利要求9所述的方法,其中將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成。
11.根據(jù)權(quán)利要求9、10所述的方法,其中當將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器之后,向所述信息處理設(shè)備發(fā)送消息,以指示對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。
12.根據(jù)權(quán)利要求9所述的方法,其中將所述要寫入的數(shù)據(jù)寫入到所述閃存存儲器后,向所述信息處理設(shè)備發(fā)送消息,以指示對所述第一寫入命令的操作完成以及對同所述用于所述緩沖存儲器的地址的相對應(yīng)的所述緩沖存儲器的存儲空間的釋放。
13. 一種存儲設(shè)備,所述存儲設(shè)備包括緩沖存儲器、閃存存儲器、信息處理設(shè)備接口以及控制電路,所述存儲設(shè)備與信息處理設(shè)備可通信地連接,其中 所述信息處理設(shè)備接口從信息處理設(shè)備接收第一寫入命令,第一寫入命令包括要寫入的數(shù)據(jù)、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址; 所述控制電路基于所述用于所述緩沖存儲器的地址,將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器; 所述控制電路基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述要寫入的數(shù)據(jù),寫入到所述閃存存儲器。
全文摘要
一種將數(shù)據(jù)寫入存儲設(shè)備的方法,所述存儲設(shè)備包括緩沖存儲器和閃存存儲器,所述存儲設(shè)備與主機可通信地連接,所述方法包括從主機接收第一寫入命令,所述第一寫入命令包括要寫入的數(shù)據(jù)、用于所述閃存存儲器的地址以及用于所述緩沖存儲器的地址;基于所述用于所述緩沖存儲器的地址,將所述要寫入的數(shù)據(jù)寫入到所述緩沖存儲器;基于用于所述閃存存儲器的地址和用于所述緩沖存儲器的地址,將所述緩沖存儲器中的所述要寫入的數(shù)據(jù),寫入到所述閃存存儲器。
文檔編號G06F13/28GK102681952SQ20121015007
公開日2012年9月19日 申請日期2012年5月12日 優(yōu)先權(quán)日2012年5月12日
發(fā)明者路向峰 申請人:北京憶恒創(chuàng)源科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1