新四季網

存儲設備及其中斷控制方法

2023-08-07 20:10:36

專利名稱:存儲設備及其中斷控制方法
技術領域:
本發明涉及固態存儲設備(Solid Storage Device, SSD),更具體地,本發明涉及存儲設備向主機發出的中斷。
背景技術:
同機械式硬碟相類似,固態存儲設備(SSD)也是用於計算機系統的大容量、非易失性存儲設備。固態存儲設備一般以快閃記憶體(Flash)作為存儲介質。在中國專利文獻CN102043689A中公開了如圖17所示的固態存儲設備。如圖17所示,為目前一般的固態存儲設備的功能框圖。其中主要包括主機系統1701和固態存儲設備1702。其中,固態存儲設備1702包括接口模塊1703,固態存儲處理器1704,以及以Flash顆粒1705為單位組成 的Flash陣列1706。其中,接口模塊1703主要用於實現與主機系統一致的接口協議,例如SATA (Serial Advanced Technology Atta chment,串行高級技術附件)、USB (UniversalSerial Bus,通用串行總線)、PCIE (Peripheral Component Interconnect Express,快速外圍組件互連)、SCSI (Small Computer System Interface,小型計算機系統接口)、IDE(Integrated Drive Electro nics,集成驅動器電子)等。通過接口模塊1703,固態存儲設備呈現給主機系統的是一個擁有一定邏輯空間的標準存儲設備。固態存儲處理器1704是整個存儲設備的控制核心,主要負責接口模塊1703以及快閃記憶體陣列1706之間的控制信號及數據的傳輸、Flash管理、主機邏輯地址到Flash物理地址的轉換或映射、損耗均衡(將邏輯地址映射到不同的物理地址從而防止單個Flash被過於集中地操作而提前失效)、壞塊管理等。可由軟體、硬體、固件或者其組合的多種方式實現固態存儲處理器1704。1705為單個Flash顆粒,多個Flash顆粒1705組成Flash陣列1706。為提高固態存儲設備的讀、寫速度,可以在固態存儲設備中設置諸如DRAM或SRAM的隨機訪問存儲器或其他類型的適於高速讀/寫操作的存儲器,作為向快閃記憶體寫入數據或從快閃記憶體讀寫數據時的高速緩衝存儲器。在存儲設備訪問過程中,作為一個例子,計算機向存儲設備發出SCSI (小型計算機系統接口)命令,存儲設備接收並處理SCSI命令,依據SCSI命令所指示的操作執行相應的存儲介質讀寫過程。在這一過程中,SCSI命令並不直接操作高速緩衝存儲器。即,高速緩衝存儲器對計算機或者用戶是「透明」的。也有一些存儲設備提供了高速緩衝存儲器的「清洗」機制,計算機或用戶可使用預定的命令強制存儲設備將高速緩衝存儲器中的數據寫入到非易失性存儲介質(例如,磁碟或者快閃記憶體)中。然而,對高速緩衝存儲器的分配和管理將成為固態存儲設備上的控制器的工作負擔。而且當高速緩衝存儲器被完全佔用後,如果固態存儲設備接收到來自主機系統的新的訪問請求,則還需要執行對高速緩衝存儲器的替換操作。這樣既增加了控制器的複雜度,又會讓主機經歷在讀/寫性能上的顛簸。在主機與設備之間還可以進行DMA (Direct Memory Access,直接存儲器訪問)傳輸。在中國專利文獻CN101221544A中公開了執行DMA傳輸的方法和設備。DMA傳輸的一個典型過程是分散/收集(Scatter/Gather)操作。分散/收集操作中,待傳輸的多個數據塊存儲在系統(主機)存儲器的不連續的多個地址位置。處理器不需要為要從某一源移動到某一目的地的每個數據塊對DMA控制器進行編程的操作。而是,處理器在系統存儲器中建立描述符表或描述符連結表。描述符表或描述符連結表中包括一組描述符。每個描述符都描述了數據塊移動方向、源地址、目的地地址以及可選的傳輸的字節數。在一個描述符中不包括傳輸字節數的情況下,可通過DMA方式傳輸約定長度的數據。中國專利文獻CN101710252B中公開了避免存儲設備意外斷電時緩衝存儲器中的數據丟失的方案。其中,在存儲設備中提供備用電源,當發生意外斷電時,由備用電源向存儲設備提供臨時的電能,用於將緩衝存儲器(Cache)中的數據轉存到快閃記憶體中。在美國專利文獻US8031551B2公開了用電容作為存儲設備的備用電源的方案,並在運行時檢測電容的性能,在檢測到電容容量過低時,對電容進行充電。

發明內容
因而,分擔存儲設備上的控制器的工作負擔是有益的。通過將與存儲設備的緩衝存儲器有關的維護工作轉移給主機,既減輕了存儲設備的控制器的負載,也向主機提供了更靈活控制存儲設備的能力。然而,半導體技術發展的速度遠超過作為備用電源的電容。作為備用電源的電容所提供的能量限制了可在存儲設備中使用的緩衝存儲器的大小。根據本發明的第一實施例,提供了一種存儲設備的中斷控制方法,所述存儲設備包括快閃記憶體存儲器以及緩衝存儲器,所述方法包括從信息處理設備接收要寫入存儲設備的數據;將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器;將所述緩衝存儲器中的數據取出並寫入所述快閃記憶體存儲器;其中,在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量小於預定閾值,則向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第一實施例中,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若述緩衝存儲器中的數據量不小於預定閾值,則不向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第一實施例中,其中所述預定閾值對應於利用所述存儲設備的備用電源能夠可靠地從所述緩衝存儲器中取出並寫入所述快閃記憶體存儲器的數據量。根據本發明的第一實施例中,還包括所述信息處理設備訪問或設置所述預定閾值,或者測量所述備用電源的電特性,並基於測量結果修改所述預定閾值。根據本發明的第二實施例,提供了一種存儲設備的中斷控制方法,所述存儲設備包括第一快閃記憶體存儲器、第二快閃記憶體存儲器以及緩衝存儲器,所述方法包括從信息處理設備接收要寫入存儲設備的數據;將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器;將所述緩衝存儲器中的數據取出並寫入所述第一快閃記憶體存儲器或所述第二快閃記憶體儲器;其中,在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量小於預定閾值,且所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量小於預定閾值,則向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第二實施例中,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量不小於預定閾值,或者所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量不小於預定閾值,則不向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第二實施例中,其中所述預定閾值對應於利用所述存儲設備的備用電池能夠可靠地從所述緩衝存儲器中取出並寫入所述第一與第二快閃記憶體存儲器的數據量。根據本發明的第三實施例,提供了一種存儲設備的中斷控制方法,所述存儲設備包括快閃記憶體存儲器以及緩衝存儲器,所述方法包括從信息處理設備接收寫入請求;
基於所述寫入請求,將數據寫入所述緩衝存儲器,並使計數器遞增;將所述緩衝存儲器中的所述數據取出並寫入所述快閃記憶體存儲器,並使所述計數器遞減;其中,若所述計數器小於預定閾值,則向所述信息處理設備發送指示所述寫入請求處理完成的消息。根據本發明的第三實施例中,若所述計數器不小於預定閾值,則信息處理設備所述主機發送指示所述寫入請求處理完成的消息。根據本發明的第三實施例中,在從信息處理設備接收所述寫入請求後,還緩存所述寫入請求。根據本發明的第三實施例中,其中所述寫入請求包括標識符,用於標識所述寫入 請求。根據本發明的第三實施例中,其中,指示所述寫入請求處理完成的消息中攜帶所述標識符。根據本發明的第三實施例中,在從主機接收所述寫入請求後,還緩存所述標識符。根據本發明的第四實施例,提供了一種存儲設備,所述存儲設備包括緩衝存儲器、快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中所述信息處理設備接口從信息處理設備接收寫入請求;所述控制電路基於所述寫入請求,將數據寫入所述緩衝存儲器,並使所述計數器遞增;所述控制電路將所述緩衝存儲器中的所述數據取出並寫入所述快閃記憶體存儲器,並使所述計數器遞減;在所述計數器小於預定閾值的情況下,所述中斷控制器向所述信息處理設備發送指示所述寫入請求處理完成的消息。根據本發明的第四實施例中,在所述計數器不小於預定閾值的情況下,所述中斷控制器不向所述信息處理設備發送指示所述寫入請求處理完成的消息。根據本發明的第四實施例中,其中所述信息處理設備接口從信息處理設備接收寫入請求後,所述控制電路還緩存所述寫入請求。
根據本發明的第五實施例,提供了一種存儲設備,所述存儲設備包括緩衝存儲器、快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中所述信息處理設備接口從信息處理設備接收要寫入存儲設備的數據;所述控制電路將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器;所述控制電路將所述緩衝存儲器中的數據取出並寫入所述快閃記憶體存儲器; 在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量小於預定閾值,則所述中斷控制器向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第五實施例中,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若述緩衝存儲器中的數據量不小於預定閾值,則所述中斷控制器不向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第五實施例中,其中所述控制電路還基於所述信息處理設備命令而訪問或設置所述預定閾值,或者所述控制電路測量所述備用電源的電特性,並基於測量結果修改所述預定閾值。根據本發明的第六實施例,提供了一種存儲設備,所述存儲設備包括緩衝存儲器、第一快閃記憶體存儲器、第二快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中所述信息處理設備接口從信息處理設備接收要寫入存儲設備的數據;所述控制電路將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器;所述控制電路將所述緩衝存儲器中的數據取出並寫入所述第一快閃記憶體存儲器或所述第二快閃記憶體存儲器;在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量小於預定閾值,且所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量小於預定閾值,則所述中斷控制器向所述信息處理設備發送指示寫操作完成的消息。根據本發明的第六實施例中,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量不小於預定閾值,或者所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量不小於預定閾值,則所述中斷控制器不向所述信息處理設備發送指示寫操作完成的消息。在本發明的第七實施例中,提供了一種將數據寫入存儲設備的方法,所述存儲設備包括緩衝存儲器和快閃記憶體存儲器,所述存儲設備與信息處理設備可通信地連接,所述方法包括從信息處理設備接收第一寫入命令,所述第一寫入命令包括要寫入的數據、用於所述快閃記憶體存儲器的地址以及用於所述緩衝存儲器的地址;基於所述用於所述緩衝存儲器的地址,將所述要寫入的數據寫入到所述緩衝存儲器;基於用於所述快閃記憶體存儲器的地址和用於所述緩衝存儲器的地址,將所述緩衝存儲器中的所述要寫入的數據,寫入到所述快閃記憶體存儲器。
在本發明的第八實施例中,提供了一種在信息處理設備和存儲設備之間進行DMA傳輸的方法,所述存儲設備包括緩衝存儲器和快閃記憶體晶片,所述方法包括接收第一 IO請求;為所述第一 IO請求分配第一存儲單元與第二存儲單元;向所述存儲設備發送所述第一 DMA描述符,所述第一 DMA描述符包括DMA主機地址、用於所述存儲設備的快閃記憶體晶片的地址以及第一用於緩衝存儲器的地址與第二用於緩衝存儲器的地址,其中,所述第一用於緩衝存儲器的地址同所述第一存儲單元相對應,所述第二用於緩衝存儲器的地址同所述第二存儲單元相對應;在所述存儲設備和所述信息處理設備之間依據所述第一 DMA描述符進行DMA傳輸;
接收來自所述存儲設備的消息,所述消息指示所述存儲設備對第一 DMA描述符已執行完成;釋放所述第一存儲單元與所述第二存儲單元。在本發明的第九實施例中,提供了一種由與信息處理設備通信的存儲設備執行的方法,所述存儲設備包括緩衝存儲器,所述方法包括從所述信息處理設備接收第一 DMA描述符命令,所述第一 DMA描述符命令包括第一用於緩衝存儲器的地址以及長度信息;在所述存儲設備的緩衝存儲器中基於所述第一用於緩衝存儲器的地址獲得第一存儲單元,在所述第一存儲單元中存儲所述長度信息;從所述信息處理設備接收第一 DMA描述符數據,所述第一 DMA描述符數據包括第二用於緩衝存儲器的地址;在所述存儲設備的緩衝存儲器中基於所述第二用於緩衝存儲器的地址獲得第二存儲單元,在所述第二存儲單元中記錄所述第一存儲單元的地址;基於所述第一 DMA描述符數據,以DMA傳輸方式從所述信息處理設備將第一數據寫入到所述第二存儲單元;基於第二存儲單元中記錄的所述第一存儲單元的地址,訪問所述第一存儲單元中的長度信息,以確定DMA操作是否完成。


當連同附圖閱讀時,通過參考後面對示出性的實施例的詳細描述,將最佳地理解本發明以及優選的使用模式和其進一步的目的和優點,其中附圖包括圖I是根據本發明實施例的存儲設備的結構框圖;圖2A、2B是根據本發明實施例的寫入命令的示意圖;圖3是根據本發明實施例的存儲設備執行寫入命令的方法的流程圖;圖4是根據本發明實施例的主機的示意圖;圖5是根據本發明實施例的主機執行寫入操作的流程圖;圖6是根據本發明實施例的第二寫入命令的示意圖;圖7A、7B是根據本發明實施例的存儲設備執行第二寫入命令的流程圖;圖7C中展示了用於實施圖7A、7B中的執行第二寫入命令的存儲設備的結構框圖;圖8是根據本發明實施例的主機的軟體方框圖;圖9A是根據本發明實施例的主機創建並執行第二寫入命令的流程圖;圖9B是根據本發明另一實施例的主機創建並執行第二寫入命令的流程圖;圖IOA是根據本發明的一實施例的在存儲設備的緩衝存儲器中創建鍊表的流程圖;圖IOB是根據本發明的一實施例的在存儲設備的緩衝存儲器中創建鍊表的流程圖;圖IOC是根據本發明的一實施例的存儲設備利用在緩衝存儲器中創建的鍊表執行DMA描述符的流程圖;圖11A-11F展示出了與圖10B、圖IOC相關聯的緩衝存儲器的多種狀態;圖12是根據本發明的又一實施例的存儲設備的結構框圖;圖13是根據本發明又一實施例的存儲設備的結構框圖;圖14A是根據本發明的又一實施例的存儲設備執行中斷抑制的流程圖; 圖14B是根據本發明的又一實施例的存儲設備執行中斷抑制的流程圖;圖15是根據本發明的又一實施例的存儲設備執行中斷抑制的流程圖;圖16A是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖;圖16B是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖;圖16C是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖;圖16D是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖;以及圖17是根據現有技術的固態存儲設備的結構框圖。
具體實施例方式圖I是根據本發明實施例的存儲設備的結構框圖。如圖I所示的實施例包括主機101以及同主機101相耦合的存儲設備102。主機101同存儲設備102之間可通過多種方式相耦合,耦合方式包括但不限於通過例如SATA、IDE、USB、PCIE、SCSI、乙太網、光纖通道、無線通信網絡等連接主機101與存儲設備102。主機101可以是能夠通過上述方式同存儲設備相通信的信息處理設備,例如,個人計算機、平板電腦、伺服器、可攜式計算機、網絡交換機、路由器、蜂窩電話、個人數字助理等。存儲設備102包括主機接口 103、控制電路104、一個或多個快閃記憶體晶片105以及緩衝存儲器106。主機接口 103可適配於通過例如SATA、IDE、USB、PCIE、SCSI、乙太網、光纖通道等方式與主機101交換數據。控制電路104用於控制在主機接口 103、快閃記憶體晶片105以及緩衝存儲器106之間的數據傳輸,還用於快閃記憶體管理、主機邏輯地址到快閃記憶體物理地址映射、擦除均衡、壞塊管理等。可通過軟體、硬體、固件或其組合的多種方式實現控制電路104。控制電路104可以是FPGA(Field_pro grammable gate array,現場可編程門陣列)、ASIC (Application Specific Integrated Circuit,應用專用集成電路)或者其組合的形式。控制電路104也可以包括處理器或者控制器。根據本發明的一個實施例,主機101向存儲設備102發出讀出命令或者寫入命令。控制電路104經由主機接口 103接收到該讀出命令或寫入命令。在附圖2中詳細描述了作為例子的第一寫入命令200。
參看圖2A、2B,圖2A是根據本發明實施例的寫入命令的示意圖。寫入命令200包括欄位201、202、203和204。欄位201指示該命令為寫入命令,欄位202為快閃記憶體地址,欄位203為數據,該寫入命令200指示存儲設備102將數據欄位203中的數據基於由欄位202所指示的快閃記憶體地址寫入快閃記憶體晶片105。欄位204為緩衝存儲器地址,存儲設備102接收到該寫入命令200時,先將數據欄位203中的數據基於寫入由欄位204所指示緩衝存儲器地址寫入緩衝存儲器106,再將數據欄位203中的數據基於由欄位202所指示的快閃記憶體地址寫入快閃記憶體晶片105。在一個例子中,存儲設備102將數據欄位203中的數據基於寫入由欄位204所指示緩衝存儲器地址寫入緩衝存儲器106後,再從緩衝存儲器106中讀出該數據,繼而將該數據寫入到快閃記憶體晶片105。將數據寫入到緩衝存儲器106的操作,同將存儲器106中的另一數據讀出並寫入到快閃記憶體晶片105的操作可以並發執行,從而使得主機101向存儲設備102的寫入操作的並發性能得到提升,並且不會顯著增加控制電路104的複雜度,因為控制電路104無需處理緩衝存儲器106的空間分配任務。在一個實施例中,欄位204中可以是緩衝存儲器106的完整地址,而在另一個實施例中,欄位204是相對某一基地址的偏移值。在一個實施例中,欄位203中攜帶要寫入快閃記憶體105的數據。而在另一個實施例中,欄位203中可攜帶一個指針,該指針指向要寫入存儲設備102的數據,而該數據可以存儲在主機101的存儲器中,在此情況下,存儲設備102通過隨後的DMA傳輸過程從主機101獲得該數據。在 依然另一個實施例中,欄位203可攜帶一個指針,該指針指向要寫入存儲設備102的數據,而該數據可以存儲在存儲設備102的緩衝存儲器中。欄位202可以是要將數據寫入的快閃記憶體晶片105的物理地址或邏輯地址。欄位202也可以是一個指針,指向緩衝存儲器106,在其中存儲有用於快閃記憶體晶片105的物理地址或邏輯地址。邏輯地址到物理地址的轉換過程,可以通過查找地址映射表的方式實現。所屬領域技術人員將容易意識到,寫入命令可以具有多種具體編碼方式和欄位順序。例如,參看圖2B,指示寫入命令210的類型是寫操作的欄位214可以在寫入命令210的末尾或者其他位置。而在欄位211中攜帶緩衝存儲器地址,在欄位212中攜帶數據或指向數據的存放位置的指針。在欄位213中存放快閃記憶體地址,或者指向存放快閃記憶體地址的指針,快閃記憶體地址可以是邏輯地址或物理地址。圖3是根據本發明實施例的存儲設備執行寫入命令的方法的流程圖。在步驟301,存儲設備102從主機101接收到寫入命令200。存儲設備102的控制電路104通過主機接口103接收到寫入命令200後,提取出包含於寫入命令200中的用於指示操作類型為寫操作的欄位201,用於指示要寫入的快閃記憶體的地址的欄位202,用於指示要寫入的數據的欄位203,以及用於指示緩衝存儲器106的地址的欄位204。在步驟302,響應於該寫入命令200,控制電路104基於欄位204得到用於緩衝存儲器106的地址,並基於欄位203得到要寫入的數據,以及將要寫入的數據寫入到緩衝存儲器106中由欄位204所指示的位置。當將數據寫入到緩衝存儲器106中後,存儲設備102可向主機發送消息以指示寫入命令200的執行完成,雖然數據此時尚未被實際寫入到快閃記憶體晶片105之中。以此方式,在主機101看來,在步驟302執行完成後,寫入命令200已經執行完成,從而提升了存儲設備102的執行寫入命令200的性能。向主機發送的消息可以包含於存儲設備102向主機101所發送的中斷請求之中,也可以基於主機101與存儲設備102之間的耦合方式(SATA、IDE、USB、PCIE、SCSI、乙太網、光纖通道、無線通信網絡等)而選擇適當的其他消息發送方式。在將要寫入的數據寫入到緩衝存儲器106之後,在控制電路104的控制下,將由欄位203所指示的要寫入的數據,基於由欄位202所指示的快閃記憶體地址,寫入到快閃記憶體晶片105中(步驟303)。當將數據寫入到快閃記憶體晶片105中後,存儲設備102也可向主機發送消息以指示寫入命令200的執行完成,特別地,此時主機可以在寫入命令200中再次指定將數據寫入該用於指示緩衝存儲器106的地址,而不會因對該地址處的數據的重寫而導致數據錯誤。在一個例子中,如果欄位202所指示的是用於快閃記憶體晶片105的邏輯地址,則將該邏輯地址轉換為用於快閃記憶體晶片105的物理地址。邏輯地址到物理地址的轉換方式是所屬領域技術人員 所了解的。在一個例子中,在步驟303,從緩衝存儲器106中重新取得所寫入的數據,並將該數據寫入到快閃記憶體晶片105。所屬領域技術人員將意識到,在控制電路104的控制下,步驟302中將數據寫入到緩衝存儲器106的操作,與步驟303中將數據寫入到快閃記憶體存儲器105的操作,可以並行執行。這樣,在存儲設備102中可以同時處理多個寫入命令,其中,在一個時刻,基於一個寫入命令,控制電路104將第一數據寫入到緩衝存儲器106中;而基於另一個寫入命令,控制電路104將存在於緩衝存儲器106中的第二數據寫入到快閃記憶體晶片105中。緩衝存儲器106可以是雙埠存儲器,使得在經由第一埠向緩衝存儲器106寫入第一數據的同時,可以從第二埠從緩衝存儲器106讀出第二數據。所屬領域技術人員可意識到緩衝存儲器106的其他實施方式,以支持對多份數據的同時讀出和/或寫入操作。通過在寫入命令中攜帶用於指示緩衝存儲器106的地址的欄位204,將維護緩衝存儲器106的工作從控制電路104移除了,並且使主機101擁有了更靈活控制存儲設備102的能力。圖4是根據本發明實施例的主機的示意圖。圖4是示出了主機400的軟體組成的方框圖。主機400可以是個人計算機、伺服器計算機或者其他具有計算能力的設備。主機400包括一個或多個用戶應用程式401、402和403,以及作業系統404。作業系統404中具有存儲設備驅動程序405。在根據本發明的實施例中,驅動程序405中包括緩衝區控制塊406,用以在主機400中控制存儲設備102的緩衝存儲器106。緩衝區控制塊406由多個存
儲單元(411、412......41n)組成,緩衝區控制塊406中的每個存儲單元(411、412......41n)
對應於緩衝存儲器106中的一個存儲單元,並記錄緩衝存儲器106中的對應存儲單元的工
作狀態。在一個實施例中,緩衝區控制塊406中的存儲單元(411、412......41n)的每一個,
記錄緩衝存儲器106中的對應存儲單元是空閒的還是已經被佔用。在進一步的一個實施例中,在發送給存儲設備102的一個讀/寫命令中涉及緩衝存儲器中的多個存儲單元,例如2個。在此情況下,將緩衝區控制塊406中的2個存儲單元(411、412)關聯在一起,在存儲單元411、412中還記錄存儲單元411與412之間的這種關聯關係,例如,在存儲單元411中記錄指向存儲單元412的一個或多個指針。在依然進一步的實施例中,在存儲單元412中還記錄指向存儲單元411的一個或多個指針。圖5是根據本發明實施例的主機執行寫入操作的流程圖。當用戶應用程式或者其他程序請求執行將數據寫入到存儲設備的操作時,應用程式或其他程序會發送寫請求。圖4中的存儲設備驅動程序405接收該寫請求(步驟501),該寫請求中包括應用程式或其他程序所提供的要寫入的數據已經用於存儲設備的地址,用於存儲設備的地址可以是文件路徑及偏移值,並進一步被轉換為用於存儲設備的邏輯地址。在一個例子中,該邏輯地址是用於存儲設備上的快閃記憶體晶片的邏輯地址,該寫請求要將數據基於該邏輯地址寫入到快閃記憶體晶片中。在步驟502,存儲設備驅動程序405為該寫請求分配空閒的緩衝存儲器。具體地,遍歷緩衝區控制塊406,找到其中為空閒狀態的存儲單元,例如,存儲單元411。存儲單元411為空閒狀態,表示在存儲設備102的緩衝存儲器106中的對應存儲單元為空閒狀態,可以接收寫入的數據。在步驟503中,存儲設備驅動程序405向存儲設備102發送寫命令,在寫命令中包括要寫入的數據以及用於存儲設備102的地址,在該寫命令中還包括同存儲單元411相對應的用於緩衝存儲器106的地址。所屬領域技術人員將意識到,有多種方式獲得存儲單元411與緩衝存儲器106中的對應存儲單元的對應關係。例如,緩衝區控制塊406中有n個存儲單元(411、412……41n),而緩衝存儲器106中也包括n個存儲單元,存儲單元411對應於緩衝存儲器106中的第一個存儲單元,而存儲單元412對應於緩衝存儲器106中的第二個存儲單元,以及類似地,存儲單元41n對應於緩衝存儲器106中的第n個存儲單元,使得基於存儲單元411在緩衝區控制塊406中的位置可計算出緩衝存儲器106中的對應存儲單元的地址。依然作為一個例子,還可以在存儲單元(411、412……412)中存儲緩衝存儲器106·中的對應存儲單元的地址。在依然另一個例子中,在寫命令中攜帶一個序號,該序號既指示存儲單元411在緩衝區控制塊406中的位置,又指示在緩衝存儲器106中的對應存儲單元的位置。在步驟504,接收到來自存儲設備102的消息。在一個例子中,該消息是中斷請求,該中斷請求指示在步驟503中發送的寫命令已經執行完畢。如前面所述的,在一個例子中,存儲設備102中的控制電路104在將寫命令中的數據寫入到緩衝存儲器106 (特別地,寫入到緩衝存儲器106中與緩衝區控制塊406的存儲單元411相對應的存儲單元)之後,存儲設備即發送中斷,指示該寫命令執行完成。在一個例子中,控制電路104將數據寫入到快閃記憶體晶片105之後,存儲設備102向主機101發送中斷。在一個例子中,該中斷請求中還包括指示步驟503中發送的寫命令相關的緩衝區控制塊406的存儲單元的信息。該信息可以是一個
或多個存儲單元(411、412......41n)的地址,一個或多個存儲單元(411、412......41n)的序號。在步驟505,響應於在步驟504中接收到的該中斷請求,並基於該中斷請求中所指示的與該寫命令相關的緩衝區控制塊406的存儲單元的信息,釋放與該寫命令相關的緩衝
區控制塊406的存儲單元(411、412......41n)。釋放存儲單元(411、412......41n)具體可以
是在存儲單元(411、412……41n)中設置緩衝存儲器106中的對應存儲單元是空閒狀態。在一個例子中,步驟503中的寫命令涉及緩衝區控制塊406的兩個存儲單元411與412,並且,存儲單元411與412中分別記錄了指向彼此的指針,以表示這兩個存儲單元411,412關聯於同一個寫命令。在步驟504中接收到的中斷請求中,既可以指示存儲單元411也可以指示存儲單元412。在步驟505中,基於指示存儲單元411與412之一的指針,可獲得兩個存儲單元411與412,並將其釋放。類似地,所屬領域技術人員可意識到以此方式還可以在寫命令中關聯三個或更多的存儲單元(411、412……41n)。圖6是根據本發明實施例的第二寫入命令的示意圖。第二寫入命令指示存儲設備102以DMA方式從主機101獲得數據並寫入到快閃記憶體晶片105中。第二寫入命令可以是DMA描述符600。DMA描述符600包括DMA命令610以及一個或多個DMA數據(620、630)。DMA命令610包括欄位611,用於指示DMA方式,即該DMA描述符600指示的操作,其可以為快閃記憶體讀、寫、擦除或者其他操作。欄位612指示存儲設備的邏輯地址。欄位613指示該DMA描述符600的長度,即該DMA描述符600所包括的DMA數據(620、630)的個數,其可以為I個或多個。欄位614指示緩衝存儲器106的地址。DMA數據620、630分別包括欄位621、631,用於指示DMA傳輸中的主機地址。DMA數據620、630還分別包括欄位622、632,用於指示緩衝存儲器106的地址。DMA命令610中的欄位612的存儲設備的邏輯地址可用於DMA數據620、630。在DMA描述符600中僅包括一個DMA數據620的情況下,存儲設備102根據欄位621指示的主機地址和欄位622指示的緩衝存儲器地址,在主機101和存儲設備102之間發起DMA傳輸,並最終將接收到的數據存儲到由欄位612所指示的快閃記憶體晶片105中。在DMA描述符600包括DMA數據620與630的情況下,存儲設備102將根據DMA數據620而執行DMA傳輸所得的數據,最終存儲在由欄位612所指示的快閃記憶體晶片105中,而存儲設備102還將根據DMA數據630而執行DMA傳輸所得的數據,最終存儲在由欄位612加上一 預定偏移值所指示的快閃記憶體晶片105中。換句話說,DMA描述符600可以指示在主機101和存儲設備102之間的多次DMA傳輸,每次DMA傳輸同DMA數據620、630中的一個相對應,每次DMA傳輸中傳輸相同數量的數據(例如4K字節),並且DMA數據620與DMA數據630所對應的DMA傳輸的存儲設備的邏輯地址是連續的(例如,相距預定的偏移值,該偏移值可以與DMA傳輸的數據量相對應)。這樣,可以在DMA描述符600中僅攜帶一個存儲設備邏輯地址(欄位612)。而DMA數據620與DMA數據630所對應的DMA傳輸的兩個DMA主機地址(欄位621、631)可以是不連續的,這樣可以支持分散-收集(Scatter-Gather)方式的DMA傳輸。在對應於DMA數據620的DMA傳輸中,將來自欄位621所指示的DMA主機地址的數據,寫入到欄位622所指示的緩衝存儲器106中,繼而再寫入到快閃記憶體晶片105中。在對應於DMA數據630的DMA傳輸中,將來自欄位631所指示的DMA主機地址的數據,寫入到欄位632所指示的緩衝存儲器106中,繼而再寫入到快閃記憶體晶片105中。欄位614是可選的。在欄位614所對應的緩衝存儲器地址處,作為一個例子,可保存欄位613所指示的DMA描述符600的長度。從而可以記錄DMA多個數據620、630所對應的DMA傳輸有多少已經得到執行,或者有多少尚未被執行。對於DMA描述符600,當其全部DMA數據620、630所對應的DMA傳輸均已執行完畢後,例如,所對應的數據均寫入到快閃記憶體晶片105中後,存儲設備102向主機101發送中斷,以指示對DMA描述符600的執行完成。這樣,對於DMA描述符600,雖然其對應於2次DMA傳輸過程,但僅向主機101發送一次中斷。減少中斷請求次數,將有助於降低主機101的工作負荷。圖7A、7B是根據本發明實施例的存儲設備執行第二寫入命令的流程圖。第二寫入命令可以是如圖6所示的描述符600。參看圖7A,在步驟701,存儲設備102接收DMA描述符600。在DMA描述符600中包括用於主機的地址(例如,DMA主機地址621、631),用於快閃記憶體晶片105的地址(例如,存儲設備邏輯地址612)以及用於緩衝存儲器106的地址(例如,緩衝存儲器地址622、632)。雖然在圖6中的DMA描述符600包括DMA命令610、DMA數據620、630,但這僅是為了清楚表達的目的。DMA命令610、DMA數據620、630也可以組合在一起。存儲設備102從DMA描述符600中提取出用於主機的地址,用於快閃記憶體晶片105的地址以及用於緩衝存儲器106的地址。在步驟702,存儲設備102基於用於主機的地址和用於緩衝存儲器的地址,以DMA傳輸方式從主機101將數據寫入到緩衝存儲器106。在步驟703,基於用於快閃記憶體存儲器的地址和用於緩衝存儲器,將在步驟702中寫入到緩衝存儲器中的數據,寫入到快閃記憶體晶片105。在一個例子中,在步驟702,將數據寫入到緩衝存儲器106之後,向主機101發送中斷,以指示對DMA傳輸的執行完成。如果DMA描述符600中僅包括這一次DMA傳輸(例如,DMA描述600僅包括DMA命令610與DMA數據620),則該中斷也表示對DMA描述符600的執行完成。在一個例子中,在步驟703,將數據寫入到快閃記憶體晶片105之後,向主機101發送中斷,以指示對DMA傳輸的執行完成。參看圖7B,其示出了對包含多個DMA數據(620、630)的DMA描述符600的更詳細的處理過程。在步驟711,存儲設備102接收DMA描述符600,DMA描述符600包括DMA命令610、DMA數據620以及DMA數據630。在步驟712,基於DMA描述符600,將DMA數據620變換為第一 DMA微指令,將DMA數據630變換為第二 DMA微指令。第一 DMA微指令中包括DMA主機地址621和緩衝存儲器地址622。基於第一 DMA微指令,還可以獲得與其對應的存儲設備的邏輯地址612、DMA操 作類型以及DMA描述符長度613。該存儲設備的邏輯地址612和DMA操作類型可以是第一DMA微指令的一部分,也可以是存儲在緩衝存儲器106中,並通過在第一 DMA微指令中的索引來訪問,還可以通過將第一 DMA微指令放置在特定的操作隊列(讀、寫、擦除、其他)中,以標識第一 DMA微指令的操作類型。作為依然另一個例子,對於第一 DMA微指令,根據緩衝存儲器地址622與一預定的偏移值得到存儲在緩衝存儲器106中的指針,基於該指針,獲得存儲設備的邏輯地址612和/或DMA描述符長度613。通過類似的方式,對於第二 DMA微指令,根據緩衝存儲器地址632與一預定偏移值得到存儲在緩衝存儲器106中的指針,基於該指針,獲得存儲設備的邏輯地址612和/或DMA描述符長度613。在優選的實施例中,基於緩衝存儲器地址614,將DMA描述符長度613存儲在緩衝存儲器106中,其中DMA描述符長度等同於DMA描述符600中的DMA數據的個數(或者DMA描述符600中的DMA命令與DMA數據的總計個數,從中可以得到DMA數據的個數),並通過在第一 DMA微指令中的索引來訪問DMA描述符長度613。這樣,第一 DMA微指令與第二 DMA微指令的執行順序變得不重要。每執行一個DMA微指令,將緩衝存儲器106中的DMA描述符長度遞減(例如,減I或減去單位長度),當緩衝存儲器106中的DMA描述符長度變為0時,表示對該DMA描述符600的所有DMA操作全都執行完成。在步驟713,對於第一 DMA微指令,基於DMA主機地址621和緩衝存儲器地址622,以DMA傳輸方式將數據寫入到相應緩衝存儲器106中。在步驟714,對於第二 DMA微指令,基於DMA主機地址631和緩衝存儲器地址632,以DMA傳輸方式將相應數據寫入到緩衝存儲器106中。在步驟715,向主機發送中斷,以指示對DMA描述符600的操作完成。在一個例子中,步驟713,還包括將同第一 DMA微指令相對應的寫入到緩衝存儲器106中的數據,基於存儲設備邏輯地址612,寫入到快閃記憶體晶片105中。步驟714還包括將同第二 DMA微指令相對應的寫入到緩衝存儲器106中的數據,基於存儲設備邏輯地址612加上預定偏移值的和,寫入到快閃記憶體晶片105中。在優選的實施例中,在步驟713、714中,將相應數據寫入到緩衝存儲器106中之後,還基於在第一、第二微指令中的索引,訪問存儲在緩衝存儲器中的DMA描述符長度613,並將DMA描述符長度613遞減(例如,減I或減去單位長度)。這樣,當該DMA描述符長度613變為O時,意味著對DMA描述符600的操作完成。以此方式,可以在存儲設備102中同時處理多個DMA描述符600,並且第一 DMA微指令與第二 DMA微指令的執行順序也是不重要的。還可以採用其他方式來識別DMA描述符600中的多個DMA數據均被執行。例如,在緩衝存儲器或寄存器中為每個DMA描述符600的每個DMA數據提供標誌,每當一個DMA數據(DMA微指令)被執行後,將相應的標誌置位。還可以順序執行DMA描述符600中的每個DMA數據(DMA微指令),當最後一個DMA數據(DMA微指令)被執行後,意味著對該DMA描述符600的執行完成。在依然另一個實施例中,當DMA描述符600中的每一個DMA微指令被執行後,向主機101發送中斷,並由主機驅動程序來分析對DMA描述符600的執行是否已完成。分析方法同上面所描述的存儲設備102中識別DMA描述符600中的多個DMA數據是否均被執行的過程相類似。 圖7C中展示了用於實施圖7A、7B中的執行第二寫入命令的存儲設備的結構框圖。圖7C中,主機101包括PCIE控制器721和主機存儲器722。主機存儲器722可以是隨機訪問存儲器(RAM),PCIE控制器721用於同存儲設備經由PCIE總線進行通信。存儲設備102中包括PCIE接口 731、DMA指令分析器732、微指令FIFO (先進先出緩衝器)733、DMA寫操作控制器734、DMA寫接口 735、邏輯地址到物理地址轉換電路736、Flash接口控制器737、快閃記憶體晶片105以及緩衝存儲器106。PCIE接口 731接收主機101通過PCIE控制器721發送的DMA描述符600。主機101與存儲設備102之間的連接不限於PCIE方式,還可以通過SATA、IDE、USB、PCIE、SCSI、乙太網、光纖通道等連接主機101與存儲設備102。DMA指令分析器732將PCIE接口 731接收到的DMA描述符600變換為DMA微指令。對於如圖6所示的DMA描述符600,其中包括DMA數據620和DMA數據630,則DMA指令分析器將其變換為對應於DMA數據620的第一 DMA微指令和對應於第二 DMA數據630的第二 DMA微指令。第一 DMA微指令與第二 DMA微指令的結構已在上文中詳細介紹。DMA指令分析器732還從DMA描述符600的DMA命令610中提取出DMA描述符長度,並對其加以保存,可以保存在緩衝存儲器106、一個寄存器或者類似物中。DMA描述符長度指示了 DMA描述符600所包括的DMA數據的數量,也指示了從該DMA描述符600所得到的DMA微指令的個數。DMA指令分析器732將第一 DMA微指令與第二 DMA微指令存儲在微指令FIFO 733中。微指令FIFO 733能夠緩存DMA微指令,並按照先進先出的方式向DMA寫操作控制器734提供DMA微指令。雖然這裡僅以寫操作為例,描述了將與DMA寫操作對應的DMA微指令緩存在微指令FIF0733中,所屬領域技術人員將意識到可以將與DMA讀操作對應的DMA微指令同與DMA寫操作對應的DMA微指令混合緩存在微指令FIF0733。還可以將微指令FIF0733配置為兩部分或多個部分,其中一部分專用於存儲與DMA讀操作對應的DMA微指令,而將另一部分專用於存儲與DMA寫操作對應的DMA微指令。對於與DMA寫操作對應的DMA微指令,例如,前面所提到的第一 DMA微指令與第二DMA微指令,DMA寫操作控制器734基於這些DMA微指令來執行DMA寫操作。如同前面所提到的,第一 DMA微指令中包括,DMA主機地址621和緩衝存儲器地址622。DMA寫操作控制器734利用DMA主機地址621和緩衝存儲器地址622,通過DMA寫接口 735在主機101和存儲設備102之間發起DMA寫操作,將存儲在DMA主機地址621處的數據,傳輸到緩衝存儲器地址622所指示的位置,所傳輸的數據可以具有預定的長度(例如4K字節)。對於第二 DMA微指令,DMA寫操作控制器734執行類似的操作,將存儲在DMA主機地址631處的數據,傳輸到緩衝存儲器地址632所指示的位置。從第一 DMA微指令和第二 DMA微指令可獲得用於各自的存儲設備的邏輯地址。在邏輯地址到物理地址轉換電路736,為每條DMA微指令的存儲設備的邏輯地址轉換為用於快閃記憶體晶片105的物理地址。對於每一條DMA微指令,Flash接口控制器737將寫入到緩衝存儲器106的數據,基於邏輯地址到物理地址轉換電路736所提供的物理地址,寫入到快閃記憶體晶片105中。
Flash接口控制器737還基於在第一、第二微指令中的索引,訪問所保存的從DMA描述符600的DMA命令610中提取出DMA描述符長度,並將DMA描述符遞減(例如,減I或減去單位長度)。這樣,當該DMA描述符長度變為0時,意味著對DMA描述符600的操作完成。繼而,可向主機發送中斷,以指示對DMA描述符600的操作完成。在一個例子中,DMA寫操作控制器也訪問所保存的DMA描述符長度,並確定是否已將與DMA描述符600相對應的所有數據均寫入到緩衝存儲器106中,並向主機發送指示所有數據已寫入到緩衝存儲器106的中斷。圖8是根據本發明實施例的主機的軟體方框圖。圖8是示出了主機800的軟體的方框圖,其同圖4中展示的主機的軟體方框圖相類似。不同之處在於,圖8中的緩衝區控制塊406中還包括IO請求鍊表801。IO請求鍊表801是利用緩衝區控制塊406中的存儲單元(411,412……41n)組成的鍊表。IO請求鍊表801可以是單向鍊表、雙向鍊表或循環鍊表。在生成如圖6所不的DMA描述符600時,對於一個DMA描述符600,創建一個與之相對應的IO請求鍊表801,其中包括分別與DMA命令610、DMA數據620、DMA數據630分別相對應的存儲單元(811、812、813)。需要指出的是,存儲單元(811、812、813)是緩衝區控制塊406的存儲單元(411、412……41n)中的三個存儲單元,並通過設置相應的指針,形成IO請求鍊表
801。在圖8中,將存儲單元(811、812、813)與存儲單元(411、412......41n)分開展示,僅僅
是為了清楚地描述的需要。圖9A是根據本發明實施例的主機創建並執行第二寫入命令的流程圖。在一個實施例中,步驟901,由主機的存儲設備驅動程序405接收IO請求。該IO請求指示將分散在主機存儲器的不同物理地址的多個數據塊寫入到存儲設備102中,為此將在主機與存儲設備之間執行分散-收集DMA操作。下面將以舉例的方式描述主機向存儲器寫入數據的操作過程。在步驟902,結合圖8,從緩衝區控制塊406中取出一個空閒狀態的存儲單元,例如存儲單元411。在步驟904,根據IO請求的內容,創建DMA描述符600的DMA命令610,填充DMA命令610中的DMA方式欄位611 (在該例子中,是寫操作)、存儲設備邏輯地址欄位612 (從IO請求中可獲得該信息)、DMA描述符長度欄位613 (從IO請求中可獲得該信息)以及緩衝存儲器地址欄位614 (與步驟902中所分配的存儲單元411相對應)。繼而將所創建的DMA命令610發送給存儲設備102。並將存儲單元411作為用於該IO請求的IO請求鍊表801的起始節點(例如存儲單元811)。創建IO請求鍊表801,用於在存儲設備102執行完DMA描述符600之後,將所佔用的存儲單元歸還給緩衝區控制塊406,並就該IO請求的執行完成通知應用軟體或其他上層軟體。為此目的,在一個例子中,還在存儲單元411中存儲對應於該IO請求的指針。基於DMA描述符長度,還可獲得DMA數據部分的剩餘長度。在生成第一個DMA數據之前,DMA數據部分的剩餘長度是DMA描述符600中的DMA數據(620、630)的個數,作為一個例子,其為DMA描述符長度減I。在步驟906,從緩衝區控制塊406中取出一個空閒狀態的存儲單元,例如,存儲單元412。根據IO請求的內容,創建DMA描述符600的DMA數據620,填充DMA數據620中的DMA主機地址欄位621 (從IO請求中可獲得該信息)以及緩衝存儲器地址622 (與所分配的存儲單元412相對應,例如,存儲單元412在緩衝區控制塊406中的偏移值或序號)。繼而將所創建的DMA數據620發送給存儲設備102。並將存儲單元412作為用於該IO請求的IO請求鍊表801的節點(例如存儲單元812)。在步驟908,將DMA數據部分剩餘長度遞減,得到DMA描述符600中尚未發送給存 儲設備的DMA數據的個數。在步驟909,如果DMA數據部分的剩餘長度為0,則表示DMA描述符600的生成已經完成,進而在步驟910存儲設備驅動程序405將等待存儲設備102返回的表示DMA描述符600的處理已經完成的中斷,並依據該中斷找到與之對應的IO請求鍊表801,以及將IO請求鍊表801中的存儲單元(811、812)釋放。換句話說,將由IO請求鍊表801中的存儲單元(811、812)的狀態設置為空閒,從而使得通過緩衝區控制塊406可以獲知存儲單元411、412的狀態為空閒。在一個例子中,在DMA描述符600指示讀操作,且主機101的CPU包括高速緩衝存儲器的情況下,還通知同DMA描述符600的DMA主機地址(621、631)相關聯的CPU高速緩衝存儲器執行一致性處理,以反映出DMA主機地址(621、631)處的數據可能因讀DMA讀操作而發生變化。在一個例子中,存儲設備102返回的中斷中包括指示IO請求鍊表801中的多個存儲單元(811、812)之一(或者緩衝存儲器地址622、632之一)的內容,依據該內容,通過IO請求鍊表801將存儲單元(811、812)釋放。在步驟909,如果DMA數據部分的剩餘長度大於0,則表示DMA描述符600的生成尚未完成,還需要為IO請求生成一個或多個DMA數據,那麼處理將返回到步驟906並重複執行步驟906、908和909。圖9B是根據本發明另一實施例的主機創建並執行第二寫入命令的流程圖。在該實施例中,將緩衝區控制塊406中的空閒存儲單元進一步組織為空閒存儲單元池,以有助於DMA描述符600的創建過程。通過將緩衝區控制塊406中狀態為空閒的存儲單元(411、412……41n)組織成鍊表來形成空閒存儲單元池。當需要從緩衝區控制塊406中獲得空閒存儲單元時,可以從空閒存儲單元池中取出存儲單元,從而省去了在緩衝區控制塊406中查找空閒存儲單元的開銷。在一個實施例中,步驟921,由主機的存儲設備驅動程序405接收IO請求。同圖9A相類似,該IO請求指示將分散在主機存儲器的不同物理地址的多個數據塊寫入到存儲設備102中,為此將在主機與存儲設備之間執行分散-收集DMA操作。在步驟922,根據IO請求的內容,計算出用於與相同該IO請求相對應的DMA描述符的長度(例如,DMA命令以及DMA數據的個數)。注意到在圖9A公開的實施例中,是在步驟904創建DMA命令610的過程中獲得DMA描述符長度,所屬領域技術人員將意識到各個步驟並非必然以本實施例中所公開的順序執行。在步驟923,判斷空閒存儲單元池中是否為空。如果空閒存儲單元池非空,即緩衝區控制塊406中存在處於空閒狀態的存儲單元,則進行到步驟924,並從空閒存儲單元池中取出一個空閒存儲單元(例如存儲單元411)。如果空閒存儲單元池為空,意味著緩衝區控制塊406中沒有空閒的存儲單元。則在步驟925,等待空閒存儲單元池被更新,以出現空閒的存儲單元。當DMA描述符的執行完成後,與之相關的存儲單元會被釋放,從而在空閒存儲單元池中出現空閒的存儲單元。後面對此會詳細介紹。在步驟926,確定當前要生成用於DMA描述符600的DMA命令欄位還是DMA數據欄位。一般而言,DMA描述符600包括一個DMA命令和一個或多個DMA數據。當要生成DMA命令時,處理轉向步驟927,並根據IO請求的內容,創建DMA描述符600的DMA命令610,填充DMA命令610中的各個欄位(611、612、613、614)。在一個例子中,還在存儲單元411中存儲對應於該IO請求的指針,以便在該IO請求的執行完成後,可識別該IO請求並通知應用 軟體或其他上層軟體。當要生成DMA數據時,處理轉向步驟928,並根據IO請求的內容,創建DMA描述符600的DMA數據620,填充DMA數據620的各個欄位(621、622)。接下來,在步驟929,將所生成的DMA命令或DMA數據發送給存儲設備102。並在步驟930,將在步驟924中獲得的存儲單元411設置在IO請求鍊表801中。作為一個例子,第一個進入到IO請求鍊表801的存儲單元,將作為IO請求鍊表801的頭節點,但是,也將意識到當IO請求鍊表801被組織為環形鍊表時,其中並不存在「頭節點」。在步驟930,還將DMA描述符長度遞減。在步驟931,如果DMA描述符長度為0,意味著DMA描述符600的生成已經完成,進而在步驟932存儲設備驅動程序405將等待存儲設備102返回的表示DMA描述符600的處理已經完成的中斷,並依據該中斷找到與之對應的IO請求鍊表801,以及將IO請求鍊表801中的存儲單元(811、812)釋放。換句話說,將由IO請求鍊表801中的存儲單元(811、812)的狀態設置為空閒,從而使得通過緩衝區控制塊406可以獲知存儲單元411、412的狀態為空閒,並將存儲單元411、412放入空閒存儲單元池中。在一個例子中,存儲設備102返回的中斷中包括指示IO請求鍊表801中的多個存儲單元(811、812)之一的內容,依據該內容,通過IO請求鍊表801將存儲單元(811、812)釋放。在步驟931,如果DMA描述符長度大於0,則表示DMA描述符600的生成尚未完成,還需要為IO請求生成一個或多個DMA數據,那麼處理將返回到步驟923並重複執行步驟923-931。上面結合圖9A、9B描述了 DMA描述符600的生成過程。DMA描述符600用於在分散-收集DMA中描述要執行的多個DMA操作,該多個DMA操作的數據來源於存儲在連續或不聯繫的存儲空間中。所屬領域技術人員將容易意識到,DMA描述符600的生成方式包括但不限於上面圖9A、9B中描述的具體方式。圖IOA是根據本發明的實施例的在存儲設備的緩衝存儲器中創建鍊表的流程圖。在如圖7A-7C所公開的存儲設備處理DMA描述符600的過程中,將DMA描述符600轉換為一個或多個微指令。在進一步的實施例中,為了有效處理一個或多個微指令之間的關聯關係(例如,這些微指令均同DMA描述符600相關聯),存儲設備102響應於主機101所傳輸的DMA描述符600,還在緩衝存儲器106中建立鍊表,該鍊表將對應於同一 DMA描述符600的多個微指令關聯起來。如圖IOA所示,在步驟1002,主機101向存儲設備102發送DMA描述符600。DMA描述符600包括DMA命令610與DMA數據620、630。前面已經結合圖9A與圖9B而描述了主機101向存儲設備102發送DMA描述符600的過程的例子。還應當意識到,在存儲設備的緩衝存儲器中創建鍊表,將有助於存儲設備對IO操作的執行,特別是對多個IO操作的並發/亂序執行,多個IO操作可通過訪問各自的鍊表而關聯在一起。這樣不具備關聯關係的IO操作可以在存儲設備中並發執行。因而,還可以響應除DMA命令之外的其他類型的IO命令或其他命令,以在存儲設備中創建鍊表。在步驟1004,判斷所接收到的是DMA命令610還是DMA數據620、630。如果接收到DMA命令610,在步驟1006,從其中的緩衝存儲器地址欄位610中提取出用於該DMA命令610的緩衝存儲器地址,並基於該緩衝存儲器地址,為該DMA命令610在緩衝存儲器106中分配存儲空間。接下來,在步驟1008,保存為該DMA命令610所分配的緩 衝存儲器地址,用來在為DMA數據620、630分配緩衝存儲器地址時使用。如果在步驟1004判斷出所接收到的是DMA數據620,則在步驟1010,從DMA數據620的緩衝存儲器地址欄位622從提取出用於該DMA數據620的緩衝存儲器地址,並基於該緩衝存儲器地址,為該DMA數據620在緩衝存儲器106中分配存儲空間。並在步驟1012中,在為該DMA數據620所分配的緩衝存儲器的存儲空間中,存儲在步驟1008中保存的DMA命令610的緩衝存儲器地址。這樣,在緩衝存儲器106中,為DMA命令610和DMA數據620所分配的存儲空間形成了鍊表,其中為DMA命令610所分配的存儲空間是鍊表的頭節點,為DMA數據620所分配的存儲空間連接到鍊表的頭節點。在DMA描述符600還包括DMA數據630的情況下,通過步驟1010和步驟1012,基於DMA數據630中的緩衝存儲器地址632為DMA數據630在緩衝存儲器106中分配存儲空間,並在為DMA數據630所分配的緩衝存儲器的存儲空間中,保存DMA命令610的緩衝存儲器地址。所屬領域技術人員將意識到,也可以在為DMA數據630所分配的緩衝存儲器106的存儲空間中,保存用於DMA數據620的緩衝存儲器地址,從而形成不同類型的鍊表。在其他例子中,將緩衝存儲器106中為DMA命令610、DMA數據620、630所分配的存儲空間創建為循環鍊表或雙向鍊表。上面結合圖7A、7B、7C已經描述了存儲設備102基於DMA數據(620、630)生成DMA微指令,並保存在微指令FIFO 733中。DMA數據(620、630)生成DMA微指令的操作可以發生於步驟1012之後,並在DMA微指令中攜帶為DMA數據(620、630)所分配的緩衝存儲器地址。圖IOB是根據本發明的一實施例的在存儲設備的緩衝存儲器中創建鍊表的流程圖。同圖IOA所提供的實施例相比,圖IOB的實施例中,還將與DMA描述符的處理或執行相關的信息存儲在所創建的鍊表中。圖IOC是根據本發明的一實施例的存儲設備利用在緩衝存儲器中創建的鍊表執行DMA描述符的流程圖。圖11A-11F展示出了與圖IOB與圖IOC相關聯的緩衝存儲器的多種狀態。在圖11A-11F中,1100指示緩衝存儲器106中的存儲空間。具體地,在步驟1020,主機101向存儲設備102發送DMA描述符600。在步驟1022,判斷所接收到的是DMA命令610還是DMA數據620、630。
如果接收到DMA命令610,在步驟1024,從緩衝存儲器地址欄位610中提取出緩衝存儲器地址,並基於該緩衝存儲器地址,為該DMA命令610在緩衝存儲器106中分配存儲空間。參看圖11A,為DMA命令610分配存儲空間1101。以及還從DMA命令610中提取出DMA描述符長度欄位613,從DMA描述符長度613可以得到該DMA描述符600的DMA數據部分的長度(例如,DMA描述符長度減I)。接下來,在步驟1026,保存為該DMA命令610所分配的緩衝存儲器地址,用來在為DMA數據620、630分配緩衝地址時使用。並且,將DMA數據部分的長度記錄在為該DMA命令610所分配的緩衝存儲器中。參看圖11A,在存儲空間1101中保存了 DMA數據部分的長度(在這個例子中,DMA數據部分的長度為2)。如果在步驟1022判斷出所接收到的是DMA數據620,則在步驟1028,從DMA數據620的緩衝存儲器地址欄位622從提取出用於該DMA數據620的緩衝存儲器地址,並基於該緩衝存儲器地址,為該DMA數據620在緩衝存儲器106中分配存儲空間。參看圖11B,為DMA數據620分配存儲空間1112。並在步驟1030中,在為該DMA數據620所分配的緩衝存儲器的存儲空間1112中,存儲在步驟1026中保存的DMA命令610的緩衝存儲器地址。這樣,在緩衝存儲器106中,為DMA命令610和DMA數據620所分配的存儲空間(1101與1112) 形成了鍊表,其中為DMA命令610所分配的存儲空間1101是鍊表的頭節點,為DMA數據620所分配的存儲空間1112連接到鍊表的頭節點。還在存儲空間1112中存儲同DMA數據620相對應的DMA主機地址。在DMA描述符600還包括DMA數據630的情況下,通過步驟1028和步驟1030,基於DMA數據630中的緩衝存儲器地址632為DMA數據630在緩衝存儲器106中分配存儲空間1123 (參看圖11C),並在存儲空間1123中,保存DMA命令610的緩衝存儲器地址。以及還在存儲空間1123中存儲同DMA數據630相對應的DMA主機地址。因而,在緩衝存儲器106中形成了同DMA描述符600相對應的鍊表,其中存儲空間1101是鍊表的頭節點,存儲空間1112和1123是鍊表的節點,並指向該鍊表的頭節點。所屬領域技術人員將意識到,也可以在為DMA數據630所分配的緩衝存儲器106的存儲空間1123中,保存用於DMA數據620的緩衝存儲器地址,從而形成不同類型的鍊表。在其他例子中,將緩衝存儲器106中為DMA命令610、DMA數據620、630所分配的存儲空間創建為循環鍊表或雙向鍊表。圖IOC是根據本發明的一實施例的存儲設備利用在緩衝存儲器中創建的鍊表執行DMA描述符的流程圖。上面結合圖7A、7B、7C已經描述了存儲設備102基於DMA數據(620,630)生成DMA微指令,並保存在微指令FIFO 733中。在存儲設備102對DMA微指令的執行中,在一個例子中,利用在緩衝存儲器106中的鍊表。在DMA微指令中,包括緩衝存儲器地址,通過該緩衝存儲器地址,可以獲得為同該DMA微指令相對應的DMA數據所分配的緩衝存儲器106中的存儲空間,進而可以獲得與該DMA數據所對應的DMA主機地址以及與該DMA數據所對應的DMA描述符中的DMA數據部分長度或DMA數據的個數。在下面的描述中,將對應於DMA數據620的DMA微指令用第一 DMA微指令指示,將對應於DMA數據630的DMA微指令用第二 DMA微指令指示。在步驟1040,從微指令FIF0733中獲得將第一 DMA微指令。在步驟1042,第一 DMA微指令中包括為DMA數據620所分配的緩衝存儲器106的存儲空間1112的地址,並從存儲空間1112中獲得DMA主機地址。該DMA主機地址是由DMA數據620中的DMA主機地址欄位621所提供的。基於DMA主機地址,在主機101和存儲設備102之間進行DMA傳輸,將主機101的該DMA主機地址處的預定長度(例如,4KB)的數據,以DMA方式傳輸到存儲設備102的緩衝存儲器中。對於第二 DMA微指令,執行類似的操作,將主機101的由DMA數據630的DMA主機地址欄位632所提供的DMA主機地址處的數據,以DMA方式傳輸到存儲設備102的緩衝存儲器的為DMA數據632所分配的存儲空間1123處。在圖IID中,示出了執行完第一 DMA微指令與第二 DMA微指令後,存儲了以DMA方式傳輸的數據的存儲空間1112和存儲空間1123。在步驟1044,繼續對第一 DMA微指令加以執行。通過第一 DMA微指令中的存儲空間1112的地址,從存儲空間中取出預定長度的數據,該數據是在步驟1042中,通過DMA操作從主機101傳輸到緩衝存儲器106的存儲空間1112的。並通過快閃記憶體接口控制器(例如,圖7C中的Flash接口控制器737)將該數據基於第一 DMA微指令中所包括的用於快閃記憶體存儲器的地址,寫入到快閃記憶體晶片105。該用於快閃記憶體存儲器的地址是通過DMA命令610中的存儲設備邏輯地址欄位612所得到的。對第二 DMA微指令以類似的方式加以執行。 通過第二 DMA微指令中包括的存儲空間1123的地址,從存儲空間中取出預定長度的數據,並將該數據通過快閃記憶體接口控制器,基於第二 DMA微指令中所包括的用於快閃記憶體存儲器的地址,寫入到快閃記憶體晶片105。第二 DMA微指令中所包括的用於快閃記憶體存儲器的地址,是通過DMA命令610中的存儲設備邏輯地址欄位612加上預定值(例如對應於DMA傳輸的數據的長度,在該例子中,是4KB)所得到的。在一個例子中,將DMA命令610中的存儲設備邏輯地址轉換為存儲設備的物理地址,並基於該物理地址將數據寫入到快閃記憶體晶片105中。從存儲設備的邏輯地址到物理地址的映射過程,是所屬領域技術人員所熟知的。在步驟1046,繼續對第一 DMA微指令加以執行。通過第一 DMA微指令中的存儲空間1112的地址,獲得為DMA命令610所分配的存儲空間1101的地址,並在存儲空間1101中獲得DMA數據部分長度,以及將存儲1101中存儲的DMA數據部分長度遞減(例如,減I或者減去單位長度)。參看圖11E,對於第一 DMA微指令,將存儲空間1101中的DMA數據部分長度遞減後,其值由2變為I。並且,存儲空間1112中不再保存存儲空間1101的地址,用於表明對DMA數據620的執行已經完成。在步驟1048,由於DMA數據部分的長度不為0,意味著對DMA描述符600的操作尚未完成,因為其還包含另一個DMA數據630,此時,不進行進一步的處理。當第二 DMA微指令在步驟1046被執行時,通過第二 DMA微指令中的存儲空間1123的地址,獲得為DMA命令610所分配的存儲空間1101的地址,並在存儲空間1101中獲得DMA數據部分長度,以及將存儲1101中存儲的DMA數據部分長度遞減(例如,減I或者減去單位長度)。參看圖11F,對於第二 DMA微指令,將存儲空間1101中的DMA數據部分長度遞減後,其值由I變為O。並且,存儲空間1123中不再保存存儲空間1101的地址,用於表明對DMA數據630的執行已經完成。此時,當第二 DMA描述符在步驟1048被執行時,由於DMA數據部分的長度為0,意味著對DMA描述符600的執行已經完成。接下來,在步驟1050,向主機101發送中斷,以指示對DMA描述600的執行已經完成。再次參看圖11F,存儲空間1112與1123均不再保存存儲空間1101的地址。存儲空間1101中的DMA數據部分長度的值為O。在此情況下,意味著對DMA描述符600的執行已經完成,對存儲空間1101、1112與1123均不會再加以使用,這些存儲空間可以被釋放以用於對其他DMA描述符的執行。在一個例子中,由主機101控制對相應存儲空間的釋放和再利用,在上面已結合圖9A與圖9B對IO請求鍊表801中的存儲空間的釋放。由於緩衝區控制塊406中的存儲單元(411、412……41n)與緩衝存儲器106中的存儲空間相對應,因而對IO請求鍊表801中的存儲空間的釋放,意味著對緩衝存儲器中的存儲空間1101、1112與1123的釋放。上面結合圖10B、10C、11A_11F而描述了在緩衝存儲器106中存儲對應於第一與第二微指令的DMA主機地址的方案,從而使得DMA微指令中不必攜帶DMA主機地址而減少了對電路資源的佔用,並通過緩衝存儲器106將對應於同一 DMA描述符600的第一、第二 DMA微指令關聯在一起的方案。所屬領域技術人員將意識到,還可以將對應於第一與第二微指 令的存儲設備邏輯地址和/或DMA主機地址存儲在緩衝存儲器中,從而進一步減少DMA微指令的長度及其對電路資源的佔用。圖12是根據本發明的又一實施例的存儲設備的硬體方框圖。與圖7C中公開的相似,主機101包括PCIE控制器721和主機存儲器722。存儲設備102中包括PCIE接口 731、DMA指令分析器732、微指令先進先出緩衝器(FIFO)733、DMA寫操作控制器734、DMA寫接口735、邏輯地址到物理地址轉換電路736以及緩衝存儲器106。存儲設備102中還包括DMA讀寫微指令判斷電路1210,DMA讀接口 1212,快閃記憶體控制器1221、1222、1223,快閃記憶體接口 1231、1232、1233,完成控制電路1242、多路選擇器1241以及多路共享器1243。快閃記憶體接口 1231、1232、1233耦合於快閃記憶體晶片105。PCIE接口 731接收主機101通過PCIE控制器721發送的DMA描述符600。主機101與存儲設備102之間的連接不限於PCIE方式。DMA指令分析器732將PCIE接口 731接收到的DMA描述符600變換為DMA微指令。對於如圖6所示的DMA描述符600,則DMA指令分析器將其變換為對應於DMA數據620的第一 DMA微指令和對應於DMA數據630的第二DMA微指令。在一個例子中,第一與第二 DMA微指令中分別包括指示該微指令類型(讀/寫/擦除/其他)的欄位、指示與其對應的緩衝存儲器106中的存儲單元的地址的欄位、指示存儲設備的邏輯地址的欄位。參看圖IOB與圖11C,DMA指令分析器732還針對DMA命令610,在緩衝存儲器106中分配存儲單元,並在其中存儲DMA數據部分的長度。DMA指令分析器還針對DMA數據620,在緩衝存儲器106中分配存儲單元,並在其中存儲為DMA命令610所分配的存儲單元的地址,以及存儲DMA數據620中的DMA主機地址。DMA指令分析器還針對DMA數據630,在緩衝存儲器106中分配存儲單元,並在其中存儲為DMA命令610所分配的存儲單元的地址,以及存儲DMA數據630中的DMA主機地址。DMA指令分析器732將第一 DMA微指令與第二 DMA微指令存儲在微指令FIFO 733中。微指令FIFO 733能夠緩存DMA微指令,並按照先進先出的方式向DMA讀寫微指令判斷電路1210提供DMA微指令。在DMA讀寫微指令判斷電路1210,判斷所獲得的DMA微指令的類型。對於與DMA寫操作對應的DMA微指令,例如,前面所提到的第一 DMA微指令與第二 DMA微指令,DMA寫操作控制器734基於這些DMA微指令來執行DMA寫操作。DMA寫操作控制器734利用第一DMA微指令中的指示與其對應的緩衝存儲器106中的存儲單元的地址的欄位,從緩衝存儲器106中獲得DMA主機地址,並通過DMA寫接口 735在主機101和存儲設備102之間發起DMA寫操作,將存儲在DMA主機地址中的數據,傳輸到與第一 DMA微指令相對應的緩衝存儲器106的存儲單元中,所傳輸的數據可以具有預定的長度(例如4K字節)。對於第二 DMA微指令,DMA寫操作控制器734利用與其對應的緩衝存儲器106中的存儲單元的地址的欄位,從緩衝存儲器106中獲得DMA主機地址,並在主機101和存儲設備102之間發起DMA寫操作,將存儲在DMA主機地址中的數據,傳輸到與第二 DMA微指令相對應的緩衝存儲器106的存儲單元中。從第一 DMA微指令和第二 DMA微指令的指示存儲設備的邏輯地址的欄位獲得用於各自的存儲設備的邏輯地址。在邏輯地址到物理地址轉換電路736,將每條DMA微指令的存儲設備的邏輯地址轉換為用於快閃記憶體晶片105的物理地址。對於每一條DMA微指令,Flash控制器1221、1222、1223基於邏輯地址到物理地址轉換電路736所提供的物理地址,通過快閃記憶體接口 1231、1232、1233將寫入到緩衝存儲器106的數據,寫入到快閃記憶體晶片105中,其中, Flash控制器1221同快閃記憶體接口 1231相耦合,Flash控制器1222同快閃記憶體接口 1232相耦合,Flash控制器1223同快閃記憶體接口 1233相耦合。而快閃記憶體接口 1231、1232、1233分別耦合到各自的快閃記憶體晶片。因而對於從DMA微指令中的存儲設備的邏輯地址轉換得到的用於快閃記憶體晶片105的物理地址,該物理地址指示了特定的快閃記憶體晶片,並且該快閃記憶體晶片與快閃記憶體接口 1231、1232、1233的特定一個相耦合。因而,基於該物理地址,可以確定使用快閃記憶體接口 1231、1232、1233中的哪一個將數據寫入快閃記憶體晶片,也可以確定使用Flash控制器1221、1222、1223中的哪一個。快閃記憶體接口 1231、1232、1233還通過多路選擇器1241與緩衝存儲器相耦合。基於該物理地址,多路選擇器1241將數據從緩衝存儲器106傳送給快閃記憶體接口 1231、1232、1233中的特定一個。快閃記憶體接口 1231、1232、1233將數據寫入到快閃記憶體晶片105中之後,完成控制電路1242還基於在第一、第二微指令中的指示與其對應的緩衝存儲器106中的存儲單元的地址的字 段,訪問緩衝存儲器106,並進而訪問緩衝存儲器中為DMA命令610所分配的存儲單元,從中獲得DMA數據部分的長度,並將DMA數據部分的長度遞減(例如,減I或減去單位長度)。這樣,當為DMA命令610所分配的存儲單元中的該DMA數據部分的長度變為0時,意味著對DMA描述符600的操作完成。繼而,可向主機發送中斷,以指示對DMA描述符600的操作完成。雖然圖12中以舉例的方式展示了包括三個Flash控制器1221、1222、1223以及三個快閃記憶體接口 1231、1232、1233的實施例,所屬領域技術人員將意識到可以使用多種不同數量的Flash控制器與快閃記憶體接口,以同快閃記憶體晶片的數量相適應。對於與DMA讀操作對應的DMA微指令,DMA讀寫微指令判斷電路1210將其直接傳送給邏輯地址到物理地址轉換電路736,並得到用於快閃記憶體晶片105的物理地址。Flash控制器1221、1222、1223基於該物理地址,通過快閃記憶體接口 1231、1232、1233將從快閃記憶體晶片105中讀出數據。並基於DMA微指令中的指示與其對應的緩衝存儲器106中的存儲單元的地址的欄位,從緩衝存儲器106中獲得與該DMA微指令相對應的DMA主機地址,以及經由DMA讀接口 1212在主機101與存儲設備102之間發起DMA傳輸,將讀出數據傳輸到主機101的主機RAM 722中由該DMA主機地址所指示的位置處。快閃記憶體接口 1231、1232、1233經由多路共享器1243與DMA讀接口 1212相耦合,使得從快閃記憶體接口 1231、1232、1233獲得的數據均可以通過DMA讀接口 1212傳輸到主機RAM 722。當快閃記憶體接口 1231、1232、1233從快閃記憶體晶片105讀出數據後,完成控制電路1242也基於在DMA微指令中的指示與其對應的緩衝存儲器106中的存儲單元的地址的欄位,訪問緩衝存儲器106,並進而獲得DMA數據部分的長度,並將DMA數據部分的長度遞減(例如,減I或減去單位長度)。這樣,當該DMA數據部分的長度變為0時,意味著對該DMA描述符的操作完成。繼而,可向主機發送中斷,以指示對該DMA描述符的操作完成。在圖12所公開的存儲設備中,可以支持對多個DMA描述符600的並發操作。對於多個DMA描述符600的每一個,通過在緩衝存儲器106中創建的鍊表,將與一個DMA描述符600相對應的DMA數據關聯在一起,使得對多個DMA微指令的操作順序變得不重要。上面已經詳細描述了存儲設備執行數據寫入操作或與寫操作相關的DMA描述符的執行。顯然,存儲設備執行讀操作也可以從本發明公開中獲益。例如,可以在讀取命令中同時指定快閃記憶體晶片地址和緩衝存儲器地址,並利用緩衝存儲器作為讀出數據的緩衝。也可·以在與讀操作相關的DMA描述符中描述緩衝存儲器地址,在將數據從快閃記憶體晶片中讀出後,可利用緩衝存儲器作為讀出數據的緩存。圖13是根據本發明又一實施例的存儲設備的結構框圖。圖13中的存儲設備同圖I中的存儲設備相似。其不同之處在於,其控制電路104中還包括中斷控制電路1301。在進一步的實施例中,存儲設備還包括備用電源1305。可以有多種方式提供備用電源1305,例如,超級電容、UPS、可充電電池等。前面已經描述了控制電路104基於圖2A中的寫入命令200將來自主機101的數據先寫入緩衝存儲器106,再寫入快閃記憶體晶片105。並且,當基於命令200將數據寫入緩衝存儲器106之後,可向主機101發送消息或中斷請求,以指示對命令200的寫入操作已完成。雖然此時數據尚未被寫入到快閃記憶體晶片105,但存儲設備102可確保該數據將被可靠地寫入到快閃記憶體晶片105。即使此時發生意外斷電,備用電源1305也可提供電能將緩衝存儲器106中的該數據寫入到快閃記憶體晶片105。由於備用電源1305的容量可能不足以支持緩衝存儲器106中的全部數據寫入到快閃記憶體晶片105,因而,中斷控制電路1301還監控在緩衝存儲器106中且尚未寫入快閃記憶體晶片105中的數據量。當該數據量超過一預定閾值,而使得備用電源1305的能量無法支持將該數據量寫入到快閃記憶體晶片105時,中斷控制電路1301將暫時地抑制向主機101發送消息或中斷的活動。由於沒有接收到來自存儲設備102的消息或中斷,主機101會意識到存儲設備102對寫入命令200的執行尚未完成,這意味著,如果此時發生掉電,存儲設備102不保證對寫入命令200的執行將完成,寫入命令200中所攜帶的數據可能丟失。當沒有接到來自存儲設備102的指示寫入命令200的執行完成的消息或中斷時,主機101可以認為存儲設備102處於「忙」狀態,而相應地暫時不向存儲設備102發出進一步的寫入命令。主機101也可以不等待指示寫入命令200的執行完成的消息或中斷,而並發或異步地向存儲設備102發出其他寫入命令。但主機101應當意識到,對於沒有接收到指示執行完成的消息或中斷的寫入命令,其執行可能是沒有完成的。還應當注意到的是,當主機101分配存儲設備102的緩衝存儲器106的情況下,指示寫入命令200的執行完成的消息或中斷並非意味著對緩衝存儲器106的相應的存儲單元的釋放,因為緩衝存儲器102的相應存儲單元還有尚未被寫入到快閃記憶體晶片105中的數據,這些存儲單元依然處於被佔用狀態。因而,通過中斷控制電路1301檢測緩衝存儲器106中待寫入快閃記憶體晶片105的數據量,暫時地不向主機101發送指示寫入命令200的執行完成的消息或中斷,確保了緩衝存儲器106中的待寫入快閃記憶體晶片105的數據量不會超過備用電源1305的能力。在一個例子中,中斷控制電路1301維護一個計數器。當控制電路104將數據寫入緩衝存儲器106時,計數器遞增;而當控制電路104將緩衝存儲器106中的數據取出並寫入快閃記憶體晶片105時,計數器遞減。從而,當該計數器的值超過預定閾值時,中斷控制電路1301實施中斷抑制。而隨著控制電路104不斷地取出緩衝存儲器106中的數據並寫入快閃記憶體晶片105,使得計數器遞減到預定閾值之下時,中斷控制電路1301恢復向主機101發送指示寫入命令200操作完成的消息或中斷。有多種類似方式可獲得緩衝存儲器106中待寫入快閃記憶體晶片105的數據量,如提供緩衝隊列,並監視隊列深度。在一個例子中,控制電路104記錄寫入緩衝存儲器106的數據量和寫入快閃記憶體晶片105的數據量,而中斷控制電路1301計算二者 的差值得到在緩衝存儲器106中緩存的待寫入快閃記憶體晶片105的數據量。預定閾值的大小可以預先設定。其與備用電源1305的電量、存儲設備102的功耗等因素相關。對於特定的備用電源1305和存儲設備102,可通過實驗測定合適的預定閾值。以及出於可靠性的考慮,優選地在設定閾值時,提供一定的裕度。由於電容、電池的電量會隨著時間而發生變化,還可以在運行時測量備用電源1305的電量或指示該電量的參數,如在美國專利文獻US8031551B2中所提到的。並建立該參數與閾值的對應關係存儲在存儲設備102中,用於在運行時檢測備用電源1305的參數,並調整閾值。還可以通過主機101向存儲設備102設置該閾值。可提供專用的閾值設置命令,由主機101發出,由存儲設備102接收。在閾值設置命令中可攜帶要設定的閾值,也可基於該閾值設置命令引起存儲設備102檢測備用電源1305的指示電量的參數,並進而改變閾值設定。在一個例子中,中斷控制電路1301抑制向主機101發送消息或中斷的活動通過緩存要向主機101發送的消息或中斷而實現。具體地,中斷控制電路1301可緩存用於向主機101標識寫入命令200的標識符。可選地,可以緩存寫入命令200本身。還可以緩存寫入命令200所指示的緩衝存儲器地址204,因為該緩衝存儲器地址204可向主機101指示哪個或哪些存儲單元應當被釋放。並且,中斷控制電路1301對消息或中斷的抑制,並不依賴於寫入命令200中攜帶的緩衝存儲器地址204。對於寫入命令中不包括緩衝存儲器地址,而由存儲設備102處理緩衝存儲器106的分配的情況,也可實施消息或中斷抑制。這種情況下,可以緩存寫入命令本身或寫入命令的標識符。需要指出的是,即使中斷控制電路1301抑制了向主機101發送消息或中斷的活動,控制電路104依然將緩衝存儲器106中的數據寫入到快閃記憶體晶片105中。在發生掉電的情況下,由中斷控制電路1301所緩存的消息或中斷被丟棄,與之相對應的尚未被寫入到快閃記憶體晶片105的數據也被丟棄,而將緩衝存儲器106中已經向主機101發送了指示執行完成的消息或中斷的寫入命令相對應的數據寫入到快閃記憶體晶片105中。還將注意到的是,當緩衝存儲器106為空時,主機101可向存儲設備102發出多個寫入命令,並很快接收到指示寫入命令完成的消息或中斷。此時,主機101會體驗到存儲設備102具有很好的寫入性能。當緩衝存儲器106的空閒空間被耗盡,或由於中斷控制電路1301實施了中斷抑制,主機101會體驗到存儲設備102的寫入性能迅速變差。這種性能上的顛簸是不利的,因為寫入過程消耗的時間變得不可預測。為減少顛簸,中斷控制電路1301還監視一定時間期間內向主機101發出消息或中斷的次數。如果在一定時間期間內發出的消息或中斷次數過多,諸如超過了一定的閾值,則中斷控制電路1301將抑制向主機101發送消息或中斷的活動。這樣,當存儲設備102中的緩衝存儲器106的空閒空間較多時,雖然存儲設備102可以接受較多的並發的寫入命令,但通過中斷控制電路1301的中斷抑制,而不會向主機發出過多的消息或中斷。這裡的實施監視的時間周期是可以由用戶設置的,並且可以在運行時動態調整,而相應的閾值也是可以由用戶設置的,並且可以在運行時動態調整。還將指出的是,為減少顛簸而實施的消息或中斷抑制與為同備用電源的電量相適應而實施的消息或中斷抑制,可以單獨實施,也可以組合實施。前面已經描述了單獨實施為減少顛簸而實施的消息或中斷抑制以及為同備用電源的電量相適應而實施的消息或中斷抑制的例子。在組合實施的例子中,中斷控制電路1301檢測在緩衝存儲器106 中且尚未寫入快閃記憶體晶片105中的數據量。當該數據量超過第一預定閾值時,中斷控制電路1301產生第一中斷抑制信號。而中斷控制電路1301還監視一定時間期間內向主機101實際發出消息或中斷的次數。如果在一定時間期間內發出的消息或中斷次數超過了一定的第二閾值,中斷控制電路1301產生第二中斷抑制信號。若第一中斷抑制信號或第二中斷抑制信號中的任何一者有效,則中斷控制電路1301實施消息或中斷抑制,例如,中斷控制電路1301暫時地不向主機101發送消息或中斷,而是將其緩存起來。進一步地,隨著中斷抑制的實施以及隨著緩衝存儲器106中的數據被寫入快閃記憶體晶片105,在緩衝存儲器106中尚未寫入快閃記憶體晶片105中的數據量將小於第一閾值,從而第一中斷抑制信號將變為無效;而隨著中斷抑制的實施以及隨著時間的流逝,在一定時間期間內發出的消息或中斷次數將小於第二閾值,從而第二中斷抑制信號將變為無效。當第一中斷抑制信號與第二中斷抑制二者均變為無效後,中斷控制電路1301將可以將緩存的或新產生的消息或中斷發送給主機101。圖14A與14B根據本發明的又一實施例的存儲設備執行中斷抑制的流程圖。為同備用電源的電量相適應而實施消息或中斷抑制。在步驟1402,存儲設備102接收到來自主機101的要寫入存儲設備的數據。在一個例子中,該數據包含於寫入命令200中。在其他例子中,該數據可通過DMA方式從主機101傳輸到存儲設備102。在步驟1404,控制電路104將該數據寫入到緩衝存儲器106,並將計數器遞增。計數器的值指示在緩衝存儲器106中尚未被寫入到快閃記憶體晶片105中的數據量。對於具有固定數據量的寫入命令,對計數器的遞增可以是增加單位數量,例如I。對於具有可變數據量的寫入命令,對計數器的遞增可以是增加與數據量相對應的數值。前面已經公開了,當將數據寫入到緩衝存儲器106之後,中斷控制電路1301可向主機101發送消息或中斷,以指示對寫入命令的執行完成。而為實施中斷抑制,在步驟1406,中斷控制電路1301判斷計數器是否小於預定閾值。如果計數器的值小於預定閾值,則執行步驟1408,中斷控制電路1301向主機發送指示寫入命令已經處理完成的消息或中斷。在步驟1406,若中斷控制電路1301發現計數器大於預定閾值,則不向主機101發送指示寫入命令已執行完成的消息或中斷。中斷控制電路1301可通過對消息或中斷的緩存來實施消息或中斷抑制。繼續參看圖14B,其展示了與圖14A所展示的方法流程圖並發的另一部分方法的流程圖。當緩衝存儲器106中具有尚未寫入快閃記憶體晶片105的數據時,控制電路104從緩衝存儲器106中讀出數據,步驟1410。並且,在步驟1412,控制電路104還將讀出的數據寫入到快閃記憶體晶片105,並且將計數器遞減。計數器的遞減可以是單位數量或與數據量相對應的數值。步驟1410與1412的執行是與步驟1402、1404、1406、1408的執行並行的。因而,在步驟1406,若中斷控制電路1301發現計數器大於預定閾值,中斷控制器1301實施中斷抑制時,隨著步驟1410、1412的執行,緩衝的數據被不斷的寫入快閃記憶體晶片105,從而計數器的值遞減,並使得計數器的值將可以變得小於預定閾值。圖15為根據本發明的又一實施例的存儲設備102執行中斷抑制的流程圖。為減少顛簸而實施消息或 中斷抑制。在步驟1502,存儲設備102接收到來自主機101的要寫入存儲設備的數據。在一個例子中,該數據包含於寫入命令200中。在其他例子中,該數據可通過DMA方式從主機101傳輸到存儲設備102。在步驟1504,控制電路104將該數據寫入到緩衝存儲器106,並將計數器遞增。計數器的值指示在緩衝存儲器106中尚未被寫入到快閃記憶體晶片105中的數據量。前面已經公開了,當將數據寫入到緩衝存儲器106之後,中斷控制電路1301可向主機101發送消息或中斷,以指示對寫入命令的執行完成,並對發送消息或中斷的次數進行計數。而為實施中斷抑制,在步驟1506,中斷控制電路1301判斷預定時間間隔內發出的中斷次數是否大於預定閾值。在一個例子中,可使用每隔一定時間產生到時信號的定時器。並監視兩次到時信號之間發生的消息或中斷次數。如果中斷次數不大於預定閾值,則執行步驟1510,中斷控制電路1301向主機發送指示寫入命令已經處理完成的消息或中斷。在步驟1506,若中斷控制電路1301發現計數器大於預定閾值,則不向主機101發送指示寫入命令已執行完成的消息或中斷。中斷控制電路1301可通過對消息或中斷的緩存來實施消息或中斷抑制。在另一個例子中,每當定時器的到時信號有效時,為計數器設定預定數值,該數值表示在下一次定時器到時信號有效前,可向主機101發出的消息或中斷的數量,並且每發出一消息或中斷,將該計數器遞減。若在下一定時器到時信號有效前,計數器遞減為0,則中斷控制器1301開始實施中斷抑制。在一個例子中,定時器的定時間隔和/或預定閾值可以由主機101或者控制電路104更新。還需要指出的是,中斷控制器1301實施的消息或中斷抑制,並不影響控制電路104將緩衝存儲器106中的數據寫入到快閃記憶體晶片105中。在緩衝存儲器106中存在待寫入的數據的情況下,控制電路104就可以與其他操作並行地將緩衝存儲器106中的數據寫入到快閃記憶體晶片105中。在進一步的實施例中,可將圖14A、14B所展示的為同備用電源的電量相適應而實施的消息或中斷抑制,與圖15所展示的為減少顛簸而實施的消息或中斷抑制相結合。控制電路104接收要寫入存儲設備102的數據,並將數據寫入緩衝存儲器106。中斷控制電路1301檢測在緩衝存儲器106中且尚未寫入快閃記憶體晶片105中的數據量。當該數據量超過第一預定閾值時,中斷控制電路1301產生第一中斷抑制信號。而中斷控制電路1301還監視一定時間期間內向主機101實際發出消息或中斷的次數。如果在一定時間期間內發出的消息或中斷次數超過了一定的第二閾值,中斷控制電路產生第二中斷抑制信號。若第一中斷抑制信號或第二中斷抑制信號中的任何一者有效,則中斷控制電路1301實施消息或中斷抑制,例如,中斷控制電路1301暫時地不向主機101發送消息或中斷,而是將其緩存起來。進一步地,隨著中斷抑制的實施以及隨著緩衝存儲器106中的數據被寫入快閃記憶體晶片105,在緩衝存儲器106中且尚未寫入快閃記憶體晶片105中的數據量將小於第一閾值,從而第一中斷抑制信號將變為無效;而隨著中斷抑制的實施以及隨著時間的流逝,在一定時間期間內發出的消息或中斷次數將小於第二閾值,從而第二中斷抑制信號將變為無效。當第一中斷抑制信號與第二中斷抑制二者均變為無效後,中斷控制電路1301將可以將緩存的或新產生的消息或中斷發送給主機101。圖16A是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖。圖16A中的存儲設備同圖7C中的存儲設備相似,用於執行根據圖6所展示的DMA描述符600。其不同之處在於,其還包括中斷控制器1601。中斷控制器1601耦合到DMA寫接口 735和Flash接口控制器737。如同前面所提到的,對於第一 DMA微指令,DMA寫操作控制器734利用DMA主機地址621和緩衝存儲器地址622,通過DMA寫接口 735在主機101和存儲設備102之間發起DMA寫操作,將存儲在DMA主機地址621處的數據,傳輸到緩衝存儲器地址622所指示的位置,所傳輸的數據可以具有預定的長度(例如4K字節)。接下來,中斷控制器1601記錄被寫入到緩衝存儲器106但尚未被寫入到快閃記憶體晶片105中的數據量。由於每條DMA微指令對應相同數量的數據(例如4K字節),可由中斷控制器1601維護計數器,並在基於第一 DMA微指令而將數據寫入到緩衝存儲器106時(或之後),使計數器遞增單位值(例如1,對應於4K字節)。對於第二 DMA微指令,DMA寫操作控制器734執行類似的操作,將存儲 在DMA主機地址631處的數據,傳輸到緩衝存儲器地址632所指示的位置。基於第二 DMA微指令而將數據寫入到緩衝存儲器106時(或之後),依然使計數器遞增單位值。前面已經公開了,對於每一條DMA微指令,Flash接口控制器737將寫入到緩衝存儲器106的數據,基於邏輯地址到物理地址轉換電路736所提供的物理地址,寫入到快閃記憶體晶片105中。接著,中斷控制器1601將計數器遞減單位值。在基於第一 DMA微指令或第二 DMA微指令以DMA方式將數據寫入到緩衝存儲器106之後,中斷控制器1601檢查計數器是否大於預定閾值。若計數器大於預定閾值,意味著緩衝存儲器106中已經存儲了過多的待寫入數據。在意外掉電的情況下,存儲設備102上的備用電源的電量不足以支持將這些待寫入數據保存到快閃記憶體晶片105中。因而,中斷控制器1601抑制向主機101發送的指示對第一 DMA微指令或第二 DMA微指令的執行完成的消息或中斷。在一個例子中,當DMA描述符600所包括的第一 DMA微指令與第二 DMA微指令均執行完成,即基於第一DMA微指令和第二DMA微指令所傳輸的數據均寫入緩衝存儲器106後,快閃記憶體控制器基於計數器是否大於預定閾值而決定是否向主機101發送指示DMA描述符600執行完成的消息或中斷。在意外掉電實際發生時,為中斷控制器1601所抑制的消息或中斷,以及與這些消息或中斷所對應的DMA微指令或其DMA描述符被丟棄。而與中斷控制器1601已經向主機101發送的消息或中斷相對應的DMA微指令或DMA描述符所指示傳輸的數據,將利用備用電源而寫入到快閃記憶體晶片105中。在另一個實施例中,中斷控制器1601還利用另一計數器記錄在一預定時間間隔內向主機101實際發送的消息或中斷的數量。可通過設置一定時器來獲得預定時間間隔。若在預定時間間隔內,向主機101實際發送的消息或中斷的數量超出了另一閾值,則中斷控制器1601抑制向主機101發送的消息或中斷。在依然另一個實施例中,為同備用電源的電量相適應而實施的消息或中斷抑制,與為減少顛簸而實施的消息或中斷抑制相結合。當中斷控制器1601檢測到緩衝存儲器106中的尚未寫入到快閃記憶體晶片105的數據超過預定閾值,則產生第一中斷抑制信號。當中斷控制器1601檢測到在預定時間間隔內向主機101實際發送的消息或中斷的數量超出了另一預定閾值,則產生第二中斷抑制信號。當第一中斷抑制信號與第二中斷抑制信號中的任意一者有效時,中斷控制器1601實施消息或中斷抑制。隨著Flash接口控制器737將緩衝存儲器106中的數據寫入快閃記憶體晶片105,第一中斷抑制信號可變為無效,隨著時間的流逝以及定時器再次發出到時信號,第二中斷抑制信號可變為無效。當第一中斷抑制信號與第二中斷抑制信號均變為無效時,中斷控制器1601停止實施中斷抑制,而向主機101發送所緩存的消息或中斷。這裡的定時器的時間周期是可以由用戶設置的,並且可以在運行時動態調整,而相應的閾值(包括與緩衝存儲器106中的待寫入快閃記憶體晶片105的數據量相關的閾值,以及與預定時間間隔內向主機101實際發送的消息或中斷的數量相關的閾值)也是可以由用戶設置的,並且可以在運行時動態調整。圖16B是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖。圖 16B中的存儲設備同圖16A中的存儲設備相似,用於執行根據圖6所展示的DMA描述符600。其不同之處在於,其還包括中斷緩衝存儲器1613。中斷緩衝存儲器1613耦合到中斷控制器1601。當中斷控制器1601判定要執行消息或中斷抑制時,其將消息或中斷緩存在中斷緩衝存儲器1613中。在一個例子中,中斷控制器將所有要發送給主機101的消息或中斷均緩存在中斷緩衝存儲器1613中。並且,在無需實施中斷控制的情況下,從中斷緩衝存儲器1613中取出消息或中斷,並發送給主機101。在一個例子中,在中斷緩衝存儲器1613中緩存的是用於向主機101標識DMA描述符600的標識符。可選地,可以緩存第一 DMA微指令和第二DMA微指令。還可以緩存緩衝存儲器地址622與緩衝存儲器地址632,因為該緩衝存儲器地址622、632可向主機101指示DMA描述符600。在優選的實施例中,在中斷緩衝緩衝器中緩存緩衝存儲器地址622與緩存緩衝存儲器地址632中的一個。通過在消息或中斷中向主機101指示緩存緩衝存儲器地址622與緩存緩衝存儲器地址632中的一個,參照圖9A、圖9B中公開的實施例,主機101可得到與之對應的IO請求鍊表,並因而獲知哪個IO請求被完成。在另一個實施例中,可不設置中斷緩衝存儲器1613,而作為替代,在緩衝存儲器106中緩存要發送給主機101的消息或中斷。圖16C是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖。圖16C中的存儲設備同圖16A中的存儲設備相似,用於執行根據圖6所展不的DMA描述符600。其不同之處在於,中斷控制器1602不是耦合到DMA寫接口 735而是耦合到DMA寫操作控制器734和Flash接口控制器737。如同前面所提到的,對於第一 DMA微指令,DMA寫操作控制器734利用DMA主機地址621和緩衝存儲器地址622,通過DMA寫接口 735在主機101和存儲設備102之間發起DMA寫操作,將存儲在DMA主機地址621處的數據,傳輸到緩衝存儲器地址622所指示的位置,所傳輸的數據可以具有預定的長度(例如4K字節)。接下來,中斷控制器1602記錄被寫入到緩衝存儲器106但尚未被寫入到快閃記憶體晶片105中的數據量。由於每條DMA微指令對應相同數量的數據(例如4K字節),可由中斷控制器1602維護計數器,並在基於第一 DMA微指令而將數據寫入到緩衝存儲器106時(或之後),使計數器遞增單位值(例如1,對應於4K字節)。對於第二 DMA微指令,DMA寫操作控制器734執行類似的操作,將存儲在DMA主機地址631處的數據,傳輸到緩衝存儲器地址632所指示的位置。基於第二 DMA微指令而將數據寫入到緩衝存儲器106時(或之後),依然使計數器遞增單位值。前面已經公開了,對於每一條DMA微指令,Flash接口控制器737將寫入到緩衝存儲器106的數據,基於邏輯地址到物理地址轉換電路736所提供的物理地址,寫入到快閃記憶體晶片105中。接著,中斷控制器1602將計數器遞減單位值。當中斷控制器1602判定要執行消息或中斷抑制時,中斷控制器1602指示DMA寫操作控制器734暫停從微指令FIF0733中獲取DMA微指令的操作。以此方式,將尚未被執行的DMA微指令緩存在FIF0733中。而對應已經通過DMA寫操作控制器734和DMA寫接口735而被執行的DMA微指令,中斷控制器1602向主機101發送指示這些DMA微指令被執行完成的消息或中斷。或者,在一個例子中,當一個DMA描述符所對應的全部DMA微指令均已經通過DMA寫操作控制器734和DMA寫接口 735而被執行後,中斷控制器1602向主機101發送指示這些DMA微指令或該DMA描述符被執行完成的消息或中斷。當隨著緩衝存儲器106中的數據被寫入到快閃記憶體晶片105,中斷控制器1602判定無需再實施中斷抑制時,其指示DMA寫操作控制器從微指令FIF0733中獲取DMA微指令並執行。當掉電實際發生時,微指令FIF0733中的微指令被丟棄,而與中斷控制器1602已經向主機101發送的消息或中斷相對應的DMA微指令或DMA描述符所指示傳輸的數據,將·利用備用電源而寫入到快閃記憶體晶片105中。在另一個實施例中,中斷控制器1602也維護定時器來監視一定時間間隔內向主機101發送的消息或中斷的數量。當一定時間間隔內向主機101發送的消息或中斷的數量超過閾值時,中斷控制器1602抑制向主機101發送消息或中斷的活動,即指示DMA寫操作控制器734暫停從微指令FIF0733中獲取DMA微指令。在依然另一個實施例中,在中斷控制器1602中,為同備用電源的電量相適應而實施的消息或中斷抑制,與為減少顛簸而實施的消息或中斷抑制相結合。圖16D是根據本發明的又一實施例的執行中斷抑制的存儲設備的結構框圖。圖16D中的存儲設備同圖12中的存儲設備相似,用於執行根據圖6所展示的DMA描述符600。其不同之處在於,還包括中斷控制器1603。中斷控制器1603耦合到DMA寫操作控制器734以及Flash接口 1231、Flash接口 1232 (未示出)、Flash接口 1233 (未示出)。中斷控制器1603為同Flash接口 1231相耦合的快閃記憶體晶片設置第一計數器,為同Flash接口 1232相耦合的快閃記憶體晶片設置第二計數器,為同Flash接口 1233相耦合的快閃記憶體晶片設置第三計數器。在Flash接口 1231、1232、1233的每一個分別耦合了多個快閃記憶體晶片或快閃記憶體管芯的情況下,可為同Flash接口 1231、1232、1233的每一個所耦合的多個快閃記憶體晶片或快閃記憶體管芯分別設置與之對應的計數器。在為同備用電源的電量相適應而實施消息或中斷抑制時,優選地針對同Flash接口 1231、1232、1233相耦合的多個快閃記憶體晶片或管芯分別監控其待寫入的數據量。作為舉例,在一個實施例中,Flash接口 1231、1232、1233的每一個均同一個快閃記憶體晶片相耦合,而每個快閃記憶體晶片上包括一個快閃記憶體管芯,第一計數器、第二計數器與第三計數器分別對應於與Flash接口 1231相耦合的快閃記憶體晶片或管芯、與Flash接口 1232相耦合的快閃記憶體晶片或管芯以及與Flash接口 1233相耦合的快閃記憶體晶片或管芯。對於Flash接口 1231、1232、1233的每一個均耦合到多個快閃記憶體晶片或管芯的情況,可採用類似的方式實施。當在DMA寫控制器734的控制下,執行DMA微指令,並通過DMA寫接口 735在主機101和存儲設備102之間發起DMA操作,將數據以DMA方式寫入緩衝存儲器106後,中斷控制器1603通過DMA寫操作控制器734獲得該DMA微指令所對應的用於快閃記憶體晶片105的邏輯地址,並進而獲得與該邏輯地址相對應用於快閃記憶體晶片105的物理地址,從而確定該DMA微指令的數據將寫入的快閃記憶體晶片或管芯,並將與為該快閃記憶體晶片或管芯而設置的計數器(例如,第二計數器)遞增。中斷控制器1603也可採用其他方式獲得與DMA微指令相對應的用於快閃記憶體晶片105的物理地址。當Flash接口 1231、1232、1233之一(例如Flash接口 1232)將數據寫入到與其耦合的快閃記憶體晶片105時,指示中斷控制器1603將對應於寫入數據的快閃記憶體晶片或管芯的計數器(在該例子中,第二計數器)遞減。當第一計數器、第二計數器和第三計數器中的任何一個超過預定閾值時,中斷控制器1603實施中斷抑制。當第一計數器、第二計數器和第三計數器均未超過預定閾值時,中斷控制器1603解除中斷抑制。還將意識到,對應於第一計數器、第二計數器與第三計數器的預定閾值可以彼此不同,以同與其相對應的各個快閃記憶體晶片或管芯相適應。在另一個實施例中,中斷控制器1603也維護定時器來監視一定時間間隔內向主 機101發送的消息或中斷的數量。當一定時間間隔內向主機101發送的消息或中斷的數量超過閾值時,中斷控制器1603抑制向主機101發送消息或中斷的活動,即指示DMA寫操作控制器734暫停從微指令FIF0733中獲取DMA微指令。在依然另一個實施例中,在中斷控制器1603中,為同備用電源的電量相適應而實施的消息或中斷抑制,與為減少顛簸而實施的消息或中斷抑制相結合。前面已經提到,存儲設備102可以支持對多個DMA描述符600的並發操作。對於多個DMA描述符600的每一個,通過在緩衝存儲器106中創建的鍊表,將與一個DMA描述符600相對應的DMA數據關聯在一起,使得對多個DMA微指令的操作順序變得不重要。在中斷控制器1603向主機101發送的消息或中斷,可以指示對DMA微指令的執行完成,也可指示對與DMA微指令相關聯的DMA描述符的執行完成。已經為了示出和描述的目的而展現了對本發明的描述,並且不旨在以所公開的形式窮盡或限制本發明。對所屬領域技術人員,許多調整和變化是顯而易見的。
權利要求
1.一種存儲設備的中斷控制方法,所述存儲設備包括快閃記憶體存儲器以及緩衝存儲器,所述方法包括 從信息處理設備接收要寫入存儲設備的數據; 將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器; 將所述緩衝存儲器中的數據取出並寫入所述快閃記憶體存儲器; 其中,在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量小於預定閾值,則向所述信息處理設備發送指示寫操作完成的消息。
2.根據權利要求I所述的方法,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量不小於預定閾值,則不向所述信息處理設備發送指示寫操作完成的消息。
3.根據權利要求I或2所述的方法,其中所述預定閾值對應於利用所述存儲設備的備用電源能夠可靠地從所述緩衝存儲器中取出並寫入所述快閃記憶體存儲器的數據量。
4.根據權利要求1-3之一所述的方法,還包括所述信息處理設備訪問或設置所述預定閾值,或者測量所述備用電源的電特性,並基於測量結果修改所述預定閾值。
5.一種存儲設備的中斷控制方法,所述存儲設備包括第一快閃記憶體存儲器、第二快閃記憶體存儲器以及緩衝存儲器,所述方法包括 從信息處理設備接收要寫入存儲設備的數據; 將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器; 將所述緩衝存儲器中的數據取出並寫入所述第一快閃記憶體存儲器或所述第二快閃記憶體儲器; 其中,在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量小於預定閾值,且所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量小於預定閾值,則向所述信息處理設備發送指示寫操作完成的消息。
6.根據權利要求5所述的方法,其中在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量不小於預定閾值,或者所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量不小於預定閾值,則不向所述信息處理設備發送指示寫操作完成的消息。
7.根據權利要求5或6所述的方法,其中所述預定閾值對應於利用所述存儲設備的備用電源能夠可靠地從所述緩衝存儲器中取出並寫入所述第一與第二快閃記憶體存儲器的數據量。
8.一種存儲設備的中斷控制方法,所述存儲設備包括快閃記憶體存儲器以及緩衝存儲器,所述方法包括 從信息處理設備接收寫入請求; 基於所述寫入請求,將數據寫入所述緩衝存儲器,並使計數器遞增; 將所述緩衝存儲器中的所述數據取出並寫入所述快閃記憶體存儲器,並使所述計數器遞減; 其中,若所述計數器小於預定閾值,則向所述信息處理設備發送指示所述寫入請求處理完成的消息。
9.根據權利要求8所述的方法,在從信息處理設備接收所述寫入請求後,還緩存所述寫入請求。
10.一種存儲設備,所述存儲設備包括緩衝存儲器、快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中 所述信息處理設備接口從信息處理設備接收寫入請求; 所述控制電路基於所述寫入請求,將數據寫入所述緩衝存儲器,並使所述計數器遞增; 所述控制電路將所述緩衝存儲器中的所述數據取出並寫入所述快閃記憶體存儲器,並使所述計數器遞減; 在所述計數器小於預定閾值的情況下,所述中斷控制器向所述信息處理設備發送指示所述寫入請求處理完成的消息。
11.根據權利要求10所述的存儲設備,在所述計數器不小於預定閾值的情況下,所述中斷控制器不向所述信息處理設備發送指示所述寫入請求處理完成的消息。
12.根據權利要求10或11所述的存儲設備,其中所述信息處理設備接口從信息處理設備接收寫入請求後,所述控制電路還緩存所述寫入請求。
13.一種存儲設備,所述存儲設備包括緩衝存儲器、快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中 所述信息處理設備接口從信息處理設備接收要寫入存儲設備的數據; 所述控制電路將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器; 所述控制電路將所述緩衝存儲器中的數據取出並寫入所述快閃記憶體存儲器; 在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量小於預定閾值,則所述中斷控制器向所述信息處理設備發送指示寫操作完成的消息。
14.一種存儲設備,所述存儲設備包括緩衝存儲器、第一快閃記憶體存儲器、第二快閃記憶體存儲器、信息處理設備接口以及控制電路,所述控制電路還包括計數器以及中斷控制器,所述存儲設備與信息處理設備可通信地連接,其中 所述信息處理設備接口從信息處理設備接收要寫入存儲設備的數據; 所述控制電路將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器; 所述控制電路將所述緩衝存儲器中的數據取出並寫入所述第一快閃記憶體存儲器或所述第二快閃記憶體存儲器; 在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的要寫入所述第一快閃記憶體存儲器的數據量小於預定閾值,且所述緩衝存儲器中的要寫入所述第二快閃記憶體存儲器的數據量小於預定閾值,則所述中斷控制器向所述信息處理設備發送指示寫操作完成的消息。
全文摘要
存儲設備及其中斷控制方法。所述存儲設備包括快閃記憶體存儲器以及緩衝存儲器,所述方法包括從信息處理設備接收要寫入存儲設備的數據;將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器;將所述緩衝存儲器中的數據取出並寫入所述快閃記憶體存儲器;其中,在將所接收的要寫入存儲設備的數據寫入所述緩衝存儲器後,若所述緩衝存儲器中的數據量小於預定閾值,則向所述信息處理設備發送指示寫操作完成的消息。
文檔編號G06F13/28GK102799392SQ20121020408
公開日2012年11月28日 申請日期2012年6月16日 優先權日2012年6月16日
發明者殷雪冰, 王禕磊 申請人:北京憶恆創源科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀