專利名稱:具多樣閃存單元壞塊管理的電子數據閃存卡的制作方法
技術領域:
本發明涉及電子數據閃存卡,更具體地說,是關于電子數據閃存卡中閃存設備的閃存塊控制的系統和方法。
背景技術:
機密數據文件通常存儲在軟盤中,或者通過需要口令或者安全加密的網絡傳送。機密文檔則通過安全封印發送。然而,口令、加密、安全封印都有可能遭到破壞(被解密),從而給機密數據文件和機密文檔帶來危險,導致機密信息被未授權存取。
隨著閃存技術變得越來越先進,閃存正逐步取代在移動系統中作為存儲介質的傳統磁盤的地位。和軟盤或磁性介質硬盤相比,閃存具有以下一些顯著優點高阻抗和低功率耗散。由于閃存的實體尺寸小,更加有利于移動系統的發展。相應地,閃存的發展也得益于其與移動系統的兼容性和低功耗。
然而,閃存也有其固有限制。首先,已編程的閃存單元必須經過擦除才能進行再次編程。同時,閃存單元只有有限的使用壽命;即,閃存單元在失效前只能進行有限次數的擦除操作。例如,NAND閃存單元典型的最大擦除次數為一百萬次。相應地,由于“寫入前擦除”的特點,閃存存取速度較慢,而且反復的擦除操作將會損壞閃存單元。
閃存設備的存儲單元陣列由典型的基本結構構成,即分為“扇區”或“頁面”,并由“扇區”或“頁面”構成“塊”。一個扇區包括有X個字節的數據段加上Y個字節的備用段,通常,一個扇區由512個字節(小塊格式)或2048個字節(大塊格式)構成一個數據段,由16個字節或64個字節構成一個備用段。部份多層單元(Multi-Level-Cell,MLC)閃存包括有2048字節和多于64字節的備用段,一扇區也可能有4096字節(或更多)數據字節。一個塊由一組扇區構成,例如16、32、64或更多扇區,扇區數量根據具體情況確定。如果其中某個扇區包含一個或多個無效存儲單元(即,編程或擦除操作過程中,一個或多個存儲單元無法實現既定的最小操作狀態),則認為這是一個“壞”塊。在部份高可靠度的應用上,一個“壞”塊定義能夠被延伸到部份不規則表征的任何的塊,例如,檢測到大量數據錯誤的位。如果一個塊的全部存儲單元都功能完好和有足夠的可靠度,則認為這是一個“好”塊。一般,儲存區與一組實體塊相關聯的儲存區共享一程序/讀取頁面緩沖內部快取。在大部份的例子中,拷貝回存(Copyback)指令可應用在移動相同儲存區中兩個塊之間的數據。拷貝回存指令無法有效移動兩個不同儲存區之間的數據。
閃存設備可能一開始就有大量壞塊(例如,10%)。此外,閃存設備原來的好塊也可能在制造商規定的使用壽命之內變成壞塊。這些壞塊將在閃存設備的寫入或擦除操作中表現出來。不幸的是,不斷增加的壞塊發生率極大地降低了閃存系統的性能。
大部分閃存系統(例如,電子數據閃存卡)同時使用多個閃存設備,并通過在多個閃存設備陣列中搜索可用好塊的方法來解決壞塊問題。存儲在壞塊中的有效數據(或分配給壞塊的數據)需要重新分配或重新放置在一個或多個可用好塊中。傳統方法在系統全部閃存設備中搜索具有可用好扇區的可用好塊,在搜索過程中,典型的重新分配/重新放置過程包括一個把數據傳輸外部緩沖區的過程(即,存儲到閃存外)。如果找到了足夠數量的可用好扇區,再把該數據寫回這些塊中。
上述傳統重新分配/重新放置過程可能會出現的一個問題,即如果一個或多個閃存設備達到容量極限(即,沒有剩余可用好塊),則閃存系統必須繼續搜索其它閃存設備,直到搜索到具有足夠數量的可用好扇區的可用好塊。這可能導致外部緩沖區擁塞,從而導致閃存系統的總體性能的降低。
閃存設備中可用好塊的數量隨著閃存設備存儲量越來越接近容量和過期(無效)塊數量的增加而減少。過期塊是指包含過期扇區的好塊,過期扇區是指存儲過有數據而該數據又被更新過的扇區。數據被更新后,過期數據仍保留在過期扇區中,被更新數據則被寫入新扇區,該新扇區即成為包含有效數據的有效扇區。有效數據包括被更新數據和未被更新數據。相應地,過期塊數量將隨著文件修改或刪除而增加。
過期塊通常通過“垃圾回收”操作循環使用。在“垃圾回收”操作過程中,過期塊將被擦除以便再次執行寫入操作。過期塊可能同時包含過期數據和有效數據。有效數據必須在過期塊被擦除前復制到可用好塊中。在垃圾回收操作中,過期塊中的有效數據將復制到外部緩沖區,然后執行可用好塊搜索程序,在全部閃存設備中搜索和定位可用好塊。一旦可用好塊搜索成功,外部緩沖區中的有效數據將被復制回可用好塊中。和重新分配/重新放置過程相同,傳統的垃圾回收操作也可能發生外部緩沖區擁塞問題,導致閃存系統總體性能的降低。
另一個壞塊解決方案為包括塊替換過程的“損耗平衡”操作。在該操作中,有效數據將從一個塊向另一個塊轉移,從而使數據分布更加均勻。然而,該操作同樣包括外部緩沖區操作和多個設備中可用好塊的搜索操作過程。如上所述,該操作也可能導致外部緩沖區擁塞,導致閃存系統總體性能的降低。
通常,傳統方法沒有解決在多個閃存設備中搜索可用好塊所需的附加處理時間的問題,并且這些問題目前還沒有一個很好的解決方案。已知的解決方案同樣沒有解決搜索過程中外部緩沖區潛在的擁塞問題。然而,這些限制都將影響壞塊管理、垃圾回收和損耗平衡的效率。
因此,我們需要一套改進的閃存控制系統和方法。該系統和方法必須能解決處理壞塊、垃圾回收和損耗平衡過程中可用好塊搜索所需處理時間的問題。同時,該系統和方法必須簡單可行、成本合理并且可以通過當前技術方便地實現。本發明的目的就是要解決該問題。
發明內容
本發明主要針對包含閃存設備的電子數據閃存卡、指紋傳感器、輸入/輸出接口電路和處理單元。電子數據閃存卡可通過主機(外部計算機)存取,例如個人計算機,筆記本計算機或其它電子主機設備。由于電子數據閃存卡的便攜性和耐用性,個人數據可以用加密形式存儲在閃存設備中,這樣只有通過諸如卡身上的指紋傳感器的類的安全措施才能存取,確保不被未授權人員誤用。
本發明中,閃存控制器作為處理單元的一部分控制閃存設備的操作。處理單元與閃存設備和輸入/輸出接口電路相連接。閃存控制器邏輯包括閃存類型算法,用于檢測該閃存設備是否為閃存邏輯所支持的閃存類型。通過將閃存檢測算法代碼動態部分連同機密數據存儲在至少一個閃存設備中,不但電子數據閃存卡只讀存儲器(ROM)的大小可以降低,而且新的閃存類型無需硬件調整而僅需調整存儲于閃存中閃存類型檢測算法代碼的動態部分即可被支持。這樣既降低了總體成本又和消除了不必要的開發時間。
根據本發明另一個實施方案,電子數據閃存卡的處理單元可以通過選擇工作在以下三個工作狀態下可編程模式、數據讀取模式、復位狀態。當處理單元處于可編程模式時,處理單元啟動輸入/輸出接口電路接收來自主機的機密數據文件,并把數據文件儲存在閃存設備中。當處理單元處于數據讀取模式時,處理單元啟動輸入/輸出接口電路把數據文件傳輸到主機中。當處理單元處于數據復位狀態時,數據文件(以及參考用指紋數據)將從該閃存設備中被擦除。
在本發明實施方案中,處理單元為一個微處理器,該微處理器可以是8051、8052、80286、RISC、ARM、MIPS或數字信號處理器(DSP)。
在本發明實施方案中,輸入/輸出(I/O)接口電路采用USB接口電路。
另一個在本發明實施方案中,USB閃存設備和主機之間采用批量傳輸(BOT)協議高速傳輸數據。由于BOT傳輸的命令、數據、狀態不但依賴于默認控制終端點還依賴于批量終端點,所以BOT協議是一種比CBI協議更加高效而且快速的傳輸協議。
在本發明另一個實施方案中,電子數據閃存卡(或其它閃存系統)包含帶有處理器的閃存控制器,該處理器負責和系統連接的多個閃存設備的塊管理操作。這些塊管理操作包括壞塊識別、過期塊回收、損耗平衡操作。本發明中,處理器利用來自仲裁邏輯的數據,在塊管理操作中,把可用好塊搜索限制在某個特定的閃存設備中,而不像傳統方法那樣在全部閃存設備中進行搜索。此外,在某個閃存設備中搜索可用好塊時,處理器將利用該閃存設備的內部緩沖區儲存有效數據。通過把可用好塊搜索限制在一個特定閃存設備中,并使用指定閃存設備的內部緩沖區,本發明可減少可用好塊搜索時間并消除對外部緩沖區使用的需要,從而可以避免外部緩沖區擁塞,提高傳統閃存系統的性能。相應地,塊管理操作的速度將有顯著提高。
為進一步說明本發明的具體技術內容,以下結合實施例及附圖詳細說明如后,其中 圖1為本發明一個實施方案的帶有指紋識別能力的電子數據閃存卡方框圖。
圖2為本發明另一個實施方案的電子數據閃存卡電路原理方框圖。
圖3為本發明另一個實施方案的電子數據閃存卡采用的處理單元方框圖。
圖4為本發明另一個實施方案的電子數據閃存卡電路原理方框圖。
圖5為本發明另一個實施方案的閃存系統方框圖。
圖6為本發明圖5所示的閃存系統仲裁邏輯、暫存器文件、映像表之間接口的詳細方框圖。
圖7為傳統塊管理操作方框圖。
圖8為本發明的塊管理操作方框圖。
圖9為本發明閃存壞塊方法管理高級流程圖。
圖10為本發明閃存設備的詳細方框圖,該詳細方框圖可用于實現圖6和圖8所示的閃存設備。
圖10A為本發明閃存設備的另一個實施例。
圖10B為本發明閃存設備的一實施例。
圖11為本發明的數據存取方法流程圖。
圖11A為本發明的數據存取方法一可選擇的實施例流程圖。
圖11B為本發明的數據存取方法另一可選擇的實施例流程圖。
圖12為本發明的壞塊替換方法流程圖。
圖13為本發明的垃圾回收操作方法流程圖。
圖14為本發明的損耗平衡操作方法流程圖。
圖15為本發明的損耗平衡操作方法一可選擇的實施例的流程圖。
具體實施例方式 參看圖1,根據本發明實施方案,電子數據閃存卡10可通過接口總線13、讀卡器12或其它接口機制(圖中未示)被外部計算機(主機)9存取,電子數據閃存卡10包括卡身1、處理單元2、一個或多個閃存設備3、指紋傳感器4、輸入/輸出接口電路5、可選顯示單元6、可選電源(例如,電池)7、可選功能鍵8。
閃存設備3安裝于卡身1上,以已知方式儲存了一個或多個數據文件、參考口令以及通過掃描電子數據閃存卡10的一個或多個授權用戶指紋獲得的參考指紋數據。只有授權用戶能存取所儲存的數據文件。該數據文件可以為圖片文件或文本文件。
指紋傳感器4安裝于卡身1上,通過掃描電子數據閃存卡10的用戶指紋產生指紋掃描數據。指紋傳感器4可參考本發明人共同擁有的美國專利“帶有指紋識別能力的集成電路卡”,專利號為6,547,130,本發明采用該專利的技術方案。上述指紋傳感器專利包括一個掃描單元陣列,該陣列定義了指紋掃描區域。指紋掃描數據包括通過掃描相應的掃描單元陣列線而獲得的大量掃描線數據。掃描單元陣列線按照行和列的方式進行掃描。各掃描單元若檢測到持卡人指紋脊則產生第一邏輯信號,若檢測到指紋持卡人指紋谷則產生第二邏輯信號。
輸入/輸出接口電路5安裝于卡身1上,啟動后,接口總線13或讀卡器12通過適當的插口建立和主機9之間的通訊。在本發明的一個實施方案中,輸入/輸出接口電路5包含一個USB、PCMCIA或RS232接口電路和控制邏輯結構,可與連接至或安裝于主機9的插口相連。在另一個實施方案中,輸入/輸出接口電路5包含SD接口電路、MMC接口電路、CF接口電路、MS接口電路、PCI-Express接口電路、IDE接口電路、SATA接口電路,這些電路通過接口總線13或讀卡器12和主機9連接。
處理單元2安裝于卡身1上,通過卡身1上的導電線路與與閃存設備3、指紋傳感器4和輸入/輸出接口電路5連接。在本發明的一個實施方案中,處理單元2可采用英特爾公司的8051、8052或80286微處理器。在其它實施方案中,處理單元2采用RISC、ARM、MIPS或其它數字信號處理器(DSP)。本發明中,處理單元2至少受部分儲存在閃存設備3中的程控,這樣處理單元2可以通過選擇在以下三種模式下工作(1)可編程模式在該模式下,處理單元2啟動輸入/輸出接口電路5接收來自主機9的數據文件和參考指紋數據,并把數據文件和參考指紋數據儲存在閃存設備3中;(2)數據讀取模式在該模式下,處理單元2啟動輸入/輸出接口電路5把存儲于閃存設備3中的數據文件傳輸到主機9中;(3)數據復位狀態在該模式下,數據文件和參考指紋數據將從閃存設備3中擦除。操作中,主機9通過接口總線13或讀卡器12和輸入/輸出接口電路5發送寫入和讀取請求到電子數據閃存卡10上的處理單元2,處理單元2通過閃存控制器(圖中未示)從一個或多個閃存設備3讀取或向其寫入數據。在本發明的一個實施方案中,為了進一步確保安全,一旦檢測到存儲于閃存設備3的數據文件自上一次授權存取后超過了預設的時間極限,處理單元2將自動啟動復位操作。
可選電源7安裝于卡身1上,并與卡身1上的處理單元2和其它相關單元相連,為其提供電源。
可選功能鍵8安裝于卡身1上,并與處理單元2連接,通過選擇可使處理單元2工作于編程、數據讀取或數據復位狀態。功能鍵8可用于輸入處理單元2的口令。處理單元2把輸入的口令和存儲在閃存設備3中的參考口令進行比較,若輸入口令和參考口令一致,則啟動電子數據閃存卡10的授權操作。
可選顯示單元6安裝于卡身1上,與處理單元2相連并受其控制,用于顯示與主機9之間交換的數據文件以及電子數據閃存卡10的操作狀態。
以下為本發明的部分優點首先,電子數據閃存卡體積小、容量大,所以數據傳輸方便;其次,由于指紋的唯一性,電子數據閃存卡只允許授權人員存取卡上儲存的數據文件,從而提高了安全性。
本發明其它特點和優點如下。
圖2為本發明優選實施方案的電子數據閃存卡10A方框圖,其中省略了指紋傳感器和相關用戶識別程序部分。為了降低集成成本,電子數據閃存卡10A包括一個高度集成的處理單元2A、輸入/輸出接口電路5A和閃存控制器21。輸入/輸出接口電路5A包括一個收發器模塊,串行接口引擎塊、數據緩沖器、暫存器和中斷邏輯。輸入/輸出接口電路5A和內部總線相連,使輸入/輸出接口電路5A各個單元都能和閃存控制器21的各單元通訊。閃存控制器21包括一個微處理器單元、只讀存儲器(ROM)、RAM、閃存控制器邏輯、錯誤校正代碼邏輯、通用輸入/輸出(GPIO)邏輯。在本發明的一個實施方案中,GPIO邏輯和數個LED相連,用于狀態指示,例如電源良好,閃存讀取/寫入中等,或和其它I/O設備相連。閃存控制器21和一個或多個閃存設備3相連。
在本實施方案中,主機9A設有功能鍵8A,在電子數據閃存卡10A操作過程中,通過接口總線或讀卡器和處理單元2A連接。功能鍵8A用于選擇電子數據閃存卡10A的工作模式編程、數據讀取或數據復位狀態。功能鍵8A同時可用于向主機9A輸入口令。處理單元2A把輸入的口令和存儲在閃存設備3中的參考口令進行比較,若輸入口令和參考口令一致,則啟動電子數據閃存卡10A的授權操作。
同時在本實施方案中,主機9A設有顯示單元6A,在操作電子數據閃存卡10A的過程中,通過接口總線或讀卡器與處理單元2A連接。單元6A用于顯示與主機9A交換的數據文件以及電子數據閃存卡10A的操作狀態。
圖3為處理單元2A的詳細框圖。電子數據閃存卡10A設有功率調節器22,用于向一個或多個處理單元2A供電。電源根據電子數據閃存卡10A相關單元不同的要求提供不同電壓的電源。電容器(圖中未示)可用于提高電源穩定性。電子數據閃存卡10A設有復位電路23,用于向處理單元2A提供復位信號。通電后,復位電路23向全部單元發送復位信號。當內部電壓達到穩定水平后,撤銷復位信號,由電阻器和電容器(圖中未示)保證足夠長的復位調整時間。電子數據閃存卡10A同時包括一個石英晶體振蕩器(圖中未示),向處理單元2A內的PLL提供基頻。在一些例子中,電子數據閃存卡10A沒有限制內部時脈需求,所以石英晶體振蕩器和PLL可以被一較便宜的時脈產生器所取代,例如,RC振蕩器或環式振蕩器,這些是適合整合在硅基板上的。
在本發明的實施方案中,輸入/輸出接口電路5A、復位電路23、功率調節器22被集成或部分集成在處理單元2A內。這種高集成度大大減少了所需的空間、復雜度和制造成本。
緊密性和成本對移動設備至關重要,例如這里所涉及的電子數據閃存卡。現代IC封裝可以在一個IC封裝中集成采用不同技術和材料的離散IC組件。例如,輸入/輸出接口電路為模擬和數字混合電路,可與處理單元集成到MCP多芯片封裝)中。復位電路和功率調節器為模擬電路,也可與處理單元同時集成到MCP(多芯片封裝)中。
混合信號IC技術本質上允許同時集成模擬和數字電路。因此,更高度的集成技術可納入處理單元2A模具中,包括輸入/輸出接口電路5A、閃存控制器21、復位電路23和功率調節器22。
在優選的實現方案中,通過利用多芯片封裝技術或混合信號IC技術,實現處理單元2、輸入/輸出接口電路5、功率調節器22和復位電路23集成或部分集成。
閃存進步促使了各種類型閃存設備的出現,以滿足對不同性能、成本和容量的需求。例如,對于相同的形狀是數,多層單元(MLC)閃存設備比單層單元(SLC)閃存設備具有更高的容量。AND或Super-AND閃存則被發明用于避開NAND閃存的知識產權問題。同時,大頁面(2K字節)閃存比小頁面(512字節)閃存具有更好的寫入性能。此外,閃存的快速發展使得設備的容量不斷提高。為了支持這些不同類型的閃存,閃存控制器必須能夠相應地進行檢測和存取。
在本發明的思想和范圍之內,可同時或獨立實現上述各新穎特點。例如,圖4為本發明另一個實施方案的電子數據閃存卡10C(或電子數據儲存介質、集成電路卡)。根據上述一個或多個實施方案,電子數據閃存卡10C可通過接口總線或讀卡器(即通訊連接裝置)被主機9A存取,由卡身1C、處理單元2C和一個或多個閃存設備3C構成,其中處理單元2C由閃存控制器21C和輸入/輸出接口電路5C構成。電子數據閃存卡10C可以是上述電子數據閃存卡10A的功能子系統,也可以是其它應用系統的功能子系統。
閃存設備3C受閃存控制器21C產生的命令控制,并在閃存設備中儲存數據文件。
處理單元2C通過上述輸入/輸出接口電路與閃存設備連接。處理單元2C中的閃存控制器21C通過一個或多個上述方法控制閃存設備3C。在本發明的一個實施方案中,閃存控制器21C通過執行閃存類型算法(利用存儲于只讀存儲器(ROM)(圖中未示)的閃存控制器邏輯靜態部分)確定閃存設備3C是否被支持;如果是“新”的閃存類型,則讀取存儲于閃存設備3C中的閃存控制器邏輯動態部分。
另一方面,啟動輸入/輸出接口電路5C后,通過接口連接裝置和主機9A建立BOT通訊。主機和閃存設備(以下也稱為“USB設備”)USB接口電路之間有四種類型的USB軟件通訊數據流控制、中斷、批量和同步。控制傳輸是主機通過控制管道向USB設備發送的數據流,用于向USB設備提供配置和控制信息。中斷傳輸為小數據量、非周期性、固定等待時間、設備發起的通訊,通常用于通知主機USB設備所請求的服務。如果沒有實時性要求,通過USB接口電路移動的大塊數據可采用批量傳輸。同步傳輸在同步數據工作時使用。同步傳輸在主機和USB設備之間提供周期性和連續性的通訊。USB接口電路通常支持兩種數據傳輸協議CBI協議和BOT協議。海量儲存類CBI傳輸規范適用于全速軟盤驅動,而不適用于高速設備或軟盤驅動以外的其它設備(由USB規范確定)。在本發明實施方案中中,aUSB閃存設備和主機之間傳輸高速數據只采用BOT協議。由于BOT傳輸的命令、數據、狀態同時傳輸到批量終端點和默認控制終端點,所以BOT是一種比CBI協議更加高效和快速的傳輸協議。
根據前述實現方案,當處理單元2C可通過選擇工作于可編程模式下時,處理單元2C啟動輸入/輸出接口電路5C以接收來自主機9A的數據文件,并根據主機9A發送至閃存控制器21C的寫入命令,把數據文件儲存到閃存設備3C中;當處理單元2C工作于數據讀取模式下時,處理單元2C根據主機9A發送至閃存控制器21C的讀取命令和存取存儲于閃存設備3C的數據文件的命令接收閃存設備3C中的數據,并啟動輸入/輸出接口電路5C把數據文件傳輸至主機9A;當處理單元2C工作于數據復位狀態下時,數據文件將從閃存設備3C中被擦除。
本發明中智能處理單元2C的優點包括 (1)高集成度,大大減少了所需空間、復雜度和制造成本; (2)通過把軟件程序和數據保存在閃存中,降低了控制器成本; (3)采用先進的閃存控制邏輯,提高了閃存的存取速度。
以下為本發明中所使用的術語定義。塊基本存儲器擦除單元。各塊包含一定數量的扇區,例如16、32、64等。如果某個扇區發生寫入錯誤,則整個塊即被確認為壞塊,并且該塊內其它全部有效扇區將被重新放置到另一個塊中。扇區塊的子單元。典型的扇區由兩個段構成—數據段和備用段。過期扇區在編程過程中存儲了數據,而該數據又隨后被更新的扇區。數據被更新后,過期數據被保留在過期扇區中,而更新后的數據則被寫入新扇區,新扇區即成為有效扇區。無效塊包含過期扇區的塊。有效扇區在編程過程中存儲了數據并且該數據為當前(未過期)數據的扇區。損耗平衡為了延長閃存的使用壽命而均勻分配各閃存塊擦除次數的方法。閃存塊只能承受有限次的擦除操作。例如,典型的NAND閃存的最大擦除次數為一百萬次。備用塊閃存中的保留空間。備用塊使閃存系統可以提前準備處理壞塊。簇為了改善存儲性能,操作系統用作文件存取指針的多個數據扇區。在小容量記憶體操作中,一個簇通常由兩個數據扇區構成,簇為最小的文件大小單元。典型的存儲器小塊的簇大小為1k字節(即各扇區大小為512字節),存儲器大塊的簇大小為4k字節(即各扇區大小為2,112字節)。FAT保存指向文件地址指針的文件分配表。簇是FAT指向的最小單元。例如,FAT16是指簇的地址為16位。目錄和子目錄操作系統所定義的文件指針。主引導記錄(MBR)用于儲存根目錄指針和相關引導文件(如果可引導)的固定位置。該固定位置為第一個塊的最后一個扇區,如果第一個是壞塊,則為第二個塊的最后一個扇區。包USB基本事務單元的可變長度格式。一個常規的符合USB規范的事務通常由三個包—權標(Token)包、數據包和信號交換/交握(Handshake)包。權標包有IN,OUT和SETUP三種格式。數據包的大小可變,例如,USB 1.1版為64字節,USB 2.0版為512字節。信號交換/交握包有ACK或NAK格式,用于通知主機事務是否完成。畫面(Frame)批量事務處理,如果USB流量為低,則對占有畫面具有高優先級。如果USB流量為高,批量事務也能等待后續畫面。終端點三個終端點包括控制、批量輸入和批量輸出。控制終端點用于系統初始枚舉。批量輸入終端點用作主機系統讀取數據管道。批量輸出終端點用作主機系統寫入數據管道。命令塊包(CBW)一個命令塊包包含一個命令塊和相關信息,例如數據傳輸長度(例如512字節,從第8字節至第11字節)。CBW開始于包邊界,結束于第31字節(字節0to30),以小包形式傳送。全部CBW傳輸都應按照從最低有效位(字節0)向最高有效位的順序排列。命令狀態包(CSW)CSW開始于包邊界。精簡塊命令(RBC)SCSI協議10字節命令描述符。
圖5為本發明另一個實施方案的電子數據閃存卡(存儲器系統)100方框圖。閃存系統100通過接口轉換邏輯102和主機系統52相連,接口轉換邏輯102負責為微處理器104處理數據和時序校準。根據不同的應用環境,接口轉換邏輯102兼容多種格式,例如USB、PCI-Express、CF、SD、MMC、MS、IDE等。主機系統52可以是個人計算機(PC)、數碼照相機、MP 3播放器等。
微處理器104在閃存系統100內部執行讀取、寫入、擦除操作、塊管理操作和其它內務操作。塊管理操作包括復制和擦除操作,通過后臺運行,即,對主機系統52隱蔽。只讀存儲器(ROM)106用于儲存微處理器104操作執行代碼。
微處理器104通過仲裁邏輯106對閃存系統100的各閃存設備110a、110b和110c分別執行塊管理操作。仲裁邏輯可通過硬件邏輯或可編程邏輯設備實現(例如,現場可編程門陣列(FPGAs))。
暫存器文件112為閃存設備110a-c分配邏輯塊地址。映像表114提供了閃存設備110a-c相關的信息索引。這些信息包括邏輯塊地址、設備編號、實體地址(Physical Base Address,PBA)、有效位和過期位。閃存接口控制器116與閃存110a-c連接,執行來自處理器104的命令。這類命令包括讀取、寫入和擦除操作。
圖6為本發明圖5所示閃存系統100的仲裁邏輯108、暫存器文件112和映像表114之間的詳細方框圖。主機系統52向閃存系統100發送邏輯塊地址302。邏輯塊地址302包含一個扇區偏移地址。
暫存器文件112負責在各邏輯塊地址302和特定的閃存設備編號之間建立聯是。例如,若邏輯塊地址在第一地址范圍之內,則指向閃存設備編號110a,若邏輯塊地址在第二地址范圍之內,則指向閃存設備編號110b,以此類推。仲裁邏輯108發送邏輯塊地址和相關設備編號至映像表114。各閃存設備地址容量預先編程保存在相應的暫存器114a-114c中供邏輯塊地址指派。一旦各特定的閃存設備的實體地址(PBA)被仲裁邏輯108確定,全部讀取/寫入操作都將在設備內部被執行。
映像表114把各邏輯塊地址翻譯成相應的實體地址,并把設備編號和實體地址輸出至閃存接口控制器116。索引映像表114由一個或多個查詢表(LUT)構成,可通過易失性隨機存取存儲器(RAM)實現,例如靜態RAM(SRAM)。在本發明的一個實現方案中,閃存設備110a、110b和110c分別對應映像表114a、114b和114c。例如,表114a儲存閃存設備110a的實體塊地址信息,表114b儲存閃存設備110b的實體塊地址信息,而表114c則儲存閃存設備110c的實體塊地址信息。映像表114把邏輯塊地址翻譯成由仲裁邏輯108提供的特定設備編號實體地址。映像表114同時還提供有效位的值。有效位的值在通電過程中被置零。通電后,閃存110首先被掃描以重建映像表114。
在初始化過程中,特定扇區最大量的擦除操作被編程寫入暫存器文件112用于地址仲裁。閃存接口控制器116向特定的閃存設備110發送一系列時序信號,執行閃存設備110塊管理相關的寫入和擦除操作。
由于閃存設備110a-c的各暫存器可以獨立編程,閃存系統100的各個閃存設備110a-c可以具有不同的數據儲存容量。甚至可以采用不同品牌的閃存設備。這種靈活性降低了總體制造成本。在各閃存設備110a-c內部的頁面大小,即各實體扇區的字節數應相同(例如,512字節或2112字節)。
圖7為傳統塊管理操作方框圖。從圖中可以看出,有效數據存儲在閃存設備A中塊404的扇區402a、402b和402c中。在一個塊管理操作(例如,壞塊替換、過期塊回收或損耗平衡)過程中,如果扇區402a,402b和402c變成壞塊、過期或需要進行損耗平衡,存儲在扇區402a、402b和402c中的有效數據將被重新放置。塊管理操作通常被稱為內務操作。這些操作通常以后臺方式完成,以方便后續寫入操作。本例中的塊管理操作為壞塊替換操作。
從圖中可以看出,有效數據首先被重新放置(即復制)到外部緩沖區406中。然后在其它閃存設備中執行可用好塊(即功能塊)搜索程序。傳統的閃存系統把多個閃存設備當作統一的全局單元處理。相應地,全部閃存設備的塊都按照全局地址方案分配地址,這樣,全部閃存設備都將進行搜索。如果在另一個閃存設備B的塊408中搜索到可用好扇區,則把有效數據復制到閃存設備B的好扇區中。在其它塊管理操作中,外部緩沖區406起相同的作用。
圖8是為本發明的塊管理操作方框圖。從圖中可以看出,有效數據存儲在閃存設備504中的塊503的扇區502a、502b和502c中。在塊管理操作過程中,存儲在扇區502a、502b和502c的有效數據將被重新放置。
在本發明中,各閃存設備執行獨立的塊管理操作,并在各閃存設備邊界內部執行。換句話說,在塊管理操作過程中,存儲在閃存設備110a中的有效數據被重新放置在同一個閃存設備內部的最佳位置(即,數據不是轉移到其它閃存設備110b或110c中)。傳統塊管理操作把有效數據重新放置在不同的閃存設備中,與傳統塊管理操作相比,本發明通過把有效數據重新放置操作限制在同一閃存設備之內,提高了總體系統的性能。傳統塊管理操作存在的問題是可用好塊的搜索范圍太大,需要搜索多個閃存設備。此外,傳統塊管理操作要求使用外部緩沖區(例如,圖7所示的頁面緩沖區406)。把有效數據從一個閃存設備傳輸到外部緩沖區,然后再傳輸到另一個閃存設備將增加總體操作時間。本發明通過對各閃存設備執行獨立的塊管理操作來解決該問題,這樣塊管理操作可以在各閃存設備的內部執行。
本發明的另一個優點是塊管理操作可以在多個閃存設備內部同步發生,從而進一步提高了閃存系統的性能。例如,第一個數據重新放置操作可以在第一個閃存設備內執行,同時第二個數據重新放置操作在第二個閃存設備內執行。同時也使不同閃存設備可同步擦除和編程。系統并行性的提高顯著提高了閃存系統的性能。
本例中的塊管理操作為壞塊替換操作。如果扇區502a、502b和502c變成壞扇區,則存儲在扇區502a,502b和502c的有效數據將被重新放置。在本實施方案中,有效數據將被復制到內部緩沖區506中。內部緩沖區506是在閃存設備504內部功能正常的易失性存儲器扇區。在本發明的一個實現方案中,易失性存儲器扇區的塊被預留用于向各閃存設備提供內部緩沖區506,這樣可以減少對外部搜索的需求(即在閃存設備的邊界的外的搜索)。可用好塊搜索在閃存設備504內部其它部分中執行。各閃存設備的全部塊地址都根據分布式地址方案分配,如圖8所示,同時全部搜索都被限制在閃存設備的邊界之內。
搜索到好塊之后,有效數據將被復制到一個或多個好塊中。無論哪種情況,相比于圖7所示的傳統多芯片搜索方法,單芯片搜索大大降低了搜索時間。同時,由于壞塊操作發生在閃存設備504內部,有效數據重新放置時間大大減少。本發明消除了對外部緩沖區的需求。相應地,由于無需把有效數據轉移到外部閃存設備504,重新放置時間也大大減少。
本發明的其它塊管理操作過程中,內部緩沖區506也起相同的作用。另一個方案時,在塊管理操作過程中,有效數據無需先被存儲到內部緩沖區506中而被直接重新放置到好扇區中。
本發明中,各閃存設備作為獨立尋址單元工作,并且塊管理操作在各閃存設備邊界之內發生。相應地,本發明的另一個優點是在同一個閃存系統之內可以使用不同容量的閃存設備。
圖9是本發明的閃存塊管理方法高級流程圖。首先,在具有數個閃存設備的閃存系統中啟動至少一項操作,參考步驟602。在本實施方案中為塊管理操作。下一步,在閃存設備之內搜索目標塊,參考步驟604。下一步,有效數據在閃存設備內部從源塊向目的塊被重新放置,參考步驟606。相應地,多個閃存設備可同時執行塊管理操作。在多個閃存設備執行塊管理操作過程中,各閃存設備都在各自內部執行獨立的塊管理操作。各閃存設備都能進行獨立、同步的塊管理操。
圖10為本發明的閃存設備700的詳細方框圖,該方框圖可用于實現圖5所示的閃存設備。閃存設備700被分配了一個邏輯塊地址范圍,邏輯塊地址的范圍由圖5所示的仲裁邏輯108決定。閃存設備700的實體塊地址從零開始一直增加到閃存設備700的最大容量。圖中畫出了示列塊706a、706b、706c和706d。706a和706b分別為第一和第二個實體地址塊而706d為最后一個實體地址塊。
在本實施方案中,扇區(通常稱為頁面)701包含528個字節,其中包括512個字節的數據段和16個字節的備用段。閃存設備700的數據結構由實體地址706a、706b、706c和706d的數據段702和備用段704構成。各段都有一定的字節數,該字節數由具體應用決定。例如,數據段可以包含512字節、2112字節或更多字節,備用段可以包含16、64或更多字節。
數據段702儲存原始數據,而備用段704儲存存儲器管理相關信息。備用段704包括有效扇區段710、過期扇區段712、壞塊指示段714、擦除計數段716、錯誤校正代碼(ECC)段718和邏輯塊地址扇區地址段720。有效扇區段710用于指示是否扇區中的數據可被有效讀取。過期扇區段712為標志段,用于指示扇區中的數據是否過期標志。若發生了后續的寫入或擦除操作,則過期標志可以被修改。壞塊指示段714用于指示壞塊。在本發明的一個實施方案中,把0值存儲于壞塊指示段714用于指示該塊已被損壞。若嘗試寫入特定扇區或擦除特定塊失敗,則認為該塊為壞塊。在具體的實現方案中,壞塊指示由工廠設置確定。閃存系統的固件通過掃描各塊的第一扇區來確定數據是否能被存取。完整的掃描信息隨后被保存到各閃存設備最后的塊中。
在本實施方案中,用兩個字節(16位)來記錄各塊(16扇區)的壞塊信息。用兩個扇區(1024字節)記錄閃存設備(最多512個塊)的壞塊信息。為了達到更高的可靠性,儲存了八份完全相同的壞塊信息備份,以避免在標志記錄過程中發生扇區變壞事故。為了實現快速存取,這些八份備份都存儲在各閃存設備的最后一個塊位置706d中。壞扇區指示段714被保存在最后塊706d中,以便更方便地被閃存系統的固件讀取。
然而,壞塊記錄格式應該被良好地組織,每一個塊有兩個字節(例如16位)是適合小的閃存芯片。在先前的方案中,512個塊總共有1024個字節,以及如果每一個塊有128K字節,那么閃存芯片大小就只有64M字節。在部份方案中,閃存芯片的大小可能到達1G字節或者更多。在一個擁有1G字節的MLC閃存方案中有4K個塊,其有128頁面/塊。這是意指壞塊記錄每一個塊需要128位,和在保留閃存塊總共有64K字節。這個大小對于搜尋是不夠的,且實際上控制器是無法提供高達64K字節這樣大小的暫存器和SRAM給表格。因此,在一些情況下,是以一個塊有16位作為例子,對于像大部份的MLC閃存芯片般的大閃存尺寸,僅以一位或一字節記錄壞塊而不使用扇區/頁面指示是為較好而且簡單的。例如,如果一個塊被發現是壞的(不論是那一個扇區是壞的),這一個塊使用一個字節記錄為壞塊(例如“0 xff”代表好塊,“not 0 xff”代表壞塊)。所以,對于1 GB閃存,記錄的大小僅僅是4K字節。而且,如果1位被用于一個塊,一個較小的記錄是有可能的,亦即4K字節。本發明以下的描述假設每一個塊為16位當作例子以簡單化描述。
擦除計數段716用于記錄一個塊將在該閃存設備整個使用壽命內被擦除的次數。擦除計數段716包含三個字節,最多可記錄1600萬次塊擦除操作。ECC段718包含六個ECC字節,以確保數據一致性。眾所周知,EEC是一種非常先進的方法,用于錯誤檢測和校正。邏輯塊地址扇區段720用于電源備份和系統重入。由于閃存系統的映像表存儲在易失性存儲器中,因此在掉電過程中,無法保存有效扇區的信息。在系統初始化和停電時,邏輯塊地址扇區地址段720用于重構映像表。邏輯塊地址扇區地址段720記錄了先前的寫入操作、有效扇區和過期扇區信息以便重構映像表。設定了新的數據結構后,閃存系統的固件可以修復懸空簇。這可以通過校核存儲在閃存設備中閃存陣列的FAT表實現。
圖10A為較詳細的閃存設備700的方塊圖,其被用于實現圖5的依據本發明的閃存設備。
在這個特定實施例中,一個扇區(一般而言為一頁面)701有2112字節,包括有2048字節的數據和64字節的備用段。閃存設備700有一數據結構,其包括有四個數據段703a/703b/703c/703d和其相對應的備用段703as/703bs/703cs/703ds。數據段703a/703b/703c/703d各個都有512數據字節,備用段703as/703bs/703cs/703ds各個都有Y備用字節。在這個例子中Y是16,如果閃存能夠提供更多備用字節Y也可以是其它的值。
備用段703as/703bs/703cs/703ds各個都有ECC段731,LBA扇區地址732,和同位733。對于MLC閃存需要強大的ECC保護。ECC段731可能占據12字節或更多(例如,在此假設為13.5字節)以支持在每一塊512字節數據上12位錯誤檢測/修正能力。LBA扇區地址732如同圖10中720的定義(假設為3字節)。同位733有一些位被用于檢測在LBA扇區地址732段是否有任何位錯誤,同位733可以是任何長度,在此例中為4位。
在圖10A中,備用段703as/703bs/703cs/703ds在LBA扇區地址區域732中全部都具有相同的值。所以,在一個扇區中總共有四個拷貝的LBA扇區地址。根據檢測同位733,一旦在703as檢測到位錯誤,閃存控制器可存取其它代替的拷貝。因此,LBA扇區地址信息提供非常高的可靠度。
相較于圖10,在圖10中沒有明確的壞塊標志段。此結構的好處為給予ECC區域盡可能的多個位,因此,提供較高的數據可靠度,特別是在MCL閃存芯片的高位錯誤事件,此強大的ECC保護非常的重要。在圖10A中,壞塊信息可能歸因于實際上LBA扇區地址的四個拷貝已被更改。例如,如果一個控制器試著標記一個塊為壞塊,僅僅只寫入隨機值或能被識別為壞塊的特殊形態在四個LBA扇區地址區域732和同位位733,如此,即使不需使用到圖10中的標志描述圖10A中的壞塊也能夠被認定。
圖10中標示記錄壞塊信息的保留塊,在圖10A并沒有標示,但是圖10B和圖10A相結合后,即能顯示保留塊的記錄方法。在圖10B中,第一個實體塊740和最后一個實體塊740a都是記錄壞塊信息的保留塊。第一塊和最后一塊的格式是相同的(在圖10B中,僅第一塊詳細的標示)。在保留塊中,一些扇區(或頁面)741為控制器的韌體碼,應用信息(例如,SD卡的CSD/CID信息)等的保留區。扇區(頁面)群組742用于儲存壞塊信息(相同于圖10中的706d)。扇區群組743從742拷貝過來,所以,總共有4個壞塊信息拷貝在第一塊740和最后一塊740a,在一些實施例中有可能保留更多的拷貝。
在圖10B中,第一塊740用于儲存壞塊信息和韌體碼以及應用信息。考量最后一塊本身可能為壞塊和第一塊一般為閃存供應者保證為好塊的可能性,在圖10B中的實施例大致上有比圖10較高的可靠度。
圖11為本發明數據存取方法流程圖。閃存系統初始化后,通過查詢閃存陣列識別號(ID)確定閃存設備中閃存陣列的容量,參考步驟802。同時,掃描各閃存設備的實體地址以確定現有壞扇區(步驟802)。該判斷可以通過讀取壞塊指示段實現。
邏輯塊地址的范圍通過編程寫入閃存控制器的暫存器文件,參考步驟804。給定一個閃存設備,由于該閃存設備中部分空間被預留用于壞塊替換,所以實體塊地址的范圍比邏輯塊地址的范圍大。例如,把閃存陣列的10%用作保留空間是比較合理的。
下一步,從主機系統接收邏輯塊地址扇區地址、數據和命令,參考步驟806。采用簇數據緩沖和寫入后高速緩沖策略以提高閃存系統的性能。下一步,由映像表確定閃存設備編號和實體地址,參考步驟808。下一步,分析來自主機系統的命令,參考步驟810。如果該命令是讀取命令,則執行讀取操作,參考步驟812。然后,校核讀取操作獲得的數據,參考步驟814。利用ECC段字節中保存的信息校核數據。如果數據校核正確,則把數據返還主機系統,參考步驟816。如果讀取操作得到的數據不正確,則執行EEC操作來校正數據,參考步驟818。
如果該命令為寫入命令(參考步驟810為“是”),則執行寫入操作。寫入操作所需要的時間明顯比執行讀取操作所需要的時間長。例如,寫入操作所需的時間可能比讀取操作所需時間的長20倍。首先,檢查自由扇區(即,可用扇區),參考步驟820。如果自由扇區的數量低于自由扇區的閥值,則通過垃圾回收操作回收塊,參考步驟822。
如果自由扇區的數量不低于自由扇區的閥值,則把數據寫入該閃存設備,參考步驟824。寫入操作完成后,即可確定寫入操作是成功還是失敗,參考步驟826。如果寫入操作成功,則結束寫入操作,參考步驟828。如果寫入操作失敗,意味著該塊是壞塊,則執行壞塊操作,參考步驟830。
通常,若某個塊是壞塊,則該扇區中的數據不可靠。即使一個塊中只有一個扇區為壞扇區,這個塊就將被確定為壞塊。為了確保數據的可靠性,數據將不再賦值到壞塊中,而是重新分配至好塊中。相應地,儲存在壞塊中有效扇區的數據將被轉移到好塊中供進一步參考。該操作稱為壞塊替換。閃存設備將在內部發出回拷命令用于減少事務處理時間。對于沒有支持拷貝回存指令的閃存,控制器必需讀取信息至本身的緩沖儲存器以便將數據編程到欲達成的好塊目標區。
一些應用可能需要高的可靠度,例如,固態硬盤(SSD)支持窗口操作系統(Windows OperationSystem)。因此,即使在SSD中有一個位錯誤也可能造成致命的系統錯誤。然而,MLC閃存有比SLC閃存高的位錯誤率,典型為高于1000次以上,所以,位錯誤率模塊顯示即使當編程成功,在數以千計的讀取操作后,位錯誤也可能增加。這是意指新的壞塊不僅發生在編程和/或擦除期間,也發生在僅讀取操作期間。在SLC閃存中,遇到高位率的可能性非常非常的低,但是在MLC閃存中不可能被忽視。此技術于圖11A和圖11B中提出說明。
在圖11中,步驟812為讀取操作,和步驟814利用ECC算法檢查是否有任何位錯誤。如果發現任何位錯誤,控制器以ECC算法的結果來修正其錯誤和結束讀取操作816。然而,在多次的編程、擦除、和讀取后如果有塊或扇區變得不穩定,其位錯誤可能性可能逐漸地增加和最后增加到控制器ECC算法無法提供的上限。例如,在512字節數據單元中,具有4位ECC的控制器修正的能力不可能到5位錯誤。在MLC閃存中,四位錯誤率是足以被檢測,所以大部份的MLC閃存需要8位ECC保護或更多。在此,壞塊觀念被擴大到包括位錯誤被發現已達到某種嚴重程度的塊,例如,超出控制器的修正能力。
在圖11A中,步驟814檢查是否有任何位錯誤,如果有錯誤在步驟814a中被查測到,控制器檢查是否位錯誤數低于臨限初始定義(可能基于設計者的經驗)。如果位錯誤數低于此臨限VT,于是控制器修正其錯誤的位(步驟818),讀取操作成功的完成。如果位錯誤率達到臨限VT,控制器將此塊視為不穩定并在未來讀取操作可能變成較差的狀態以及未來造成數據遺失。所以,控制器視此塊為潛在的壞塊并移動所有有效數據扇區到另一個好塊(步驟819a和819b)。最后,控制器擦除來源塊成空的塊。一般而言,當塊被發現達到危險位錯誤率,在原來的塊的數據變成不可修正的前,控制器會移動數據到安全且好的塊。在此,VT可被定義為低于ECC能力上限一個或兩個位。例如,如果ECC修正能力為8位,VT可被設定為6位。
理論上,圖11B相同于圖11A,但是其視原來的塊為曾經有高位錯誤率被發現(步驟115e)的塊而非經擦除為可再使用的空的塊(步驟815c)。在擦除之后,如果此塊的位錯誤率能夠被降低,對于數據而言,此方法為較安全的,但是可能會浪費一些塊。
圖11A和圖11B為MLC閃存在高可靠度應用的兩個增強的模式,基于系統不同的應用/需求使用MLC閃存,控制器可選擇其中的一的方法。
圖12為本發明的壞塊替換方法流程圖。壞塊中壞扇區的位置被記錄在閃存設備的最后兩個塊的保留區中,參考步驟902。在本發明的一個實現方案中,各塊都由16個扇區組成。另有十六個位分別與著十六個扇區相關聯。這些位用于指示壞扇區。相應地,如果某個位為0,則表明相關的扇區為壞扇區,而整個塊即被確認為壞塊。這些位的編程方式是通過讀取整個扇區的值,然后把原值和位值相加,最后寫入來實現。為了確保正確性,固件將生成四個備份。全部八個塊(4 x 2塊)都位于各閃存設備的最后空間中。在扇區的使用壽命期限內,每個位將被設置一次,用于指示壞扇區的位置。
下一步,確定是否有寫入命令,參考步驟904。如果讀取操作失敗且沒有寫入命令,壞塊扇區中的有效數據即被確認,參考步驟906。如果有寫入命令(參考步驟904為“是”),則在同一個設備之內執行可用扇區搜索操作,參考步驟908。如果沒有足夠數量的可用扇區,則執行垃圾回收操作,參考步驟910,直到有足夠數量的可用扇區。如果有足夠數量的可用扇區,映像表的邏輯塊地址將被更新,參考步驟912。下一步,寫入操作完成,參考步驟914。寫入操作完成后,壞塊中扇區的有效數據被確定,參考步驟906。若寫入或擦除操作失敗,則執行該操作。
下一步,確定好塊的目的扇區,用于重新分配壞塊的有效數據,參考步驟916。下一步,有效數據被重新放置(即,復制)到目標扇區中,參考步驟918。在重新放置過程中,在閃存設備內部執行回拷操作,以避免外部通信并提高閃存系統的性能。下一步,閃存控制器中的映像表被更新以反映變化供以后數據存取用,參考步驟920。下一步,確定是否全部來自壞塊的有效數據都已經被轉移到好塊中,參考步驟922。如果沒有,操作循環回到塊906。如果全部有效數據都已經被轉移,則壞塊替換操作結束。
圖13為本發明的垃圾回收操作方法流程圖。垃圾回收操作是在各閃存設備邊界之內執行的單芯片操作。相應地,多個垃圾回收操作可以同步在各閃存設備內部發生。首先,在閃存設備內部進行搜索,以定位含有最多過期扇區的過期塊,參考步驟1002。特別地,固件通過掃描整個過期扇區段以確定各塊過期扇區的數量。搜索結果存儲在暫存器中。暫存器用于指示含有最多過期扇區的過期塊。例如,用四個暫存器指示含有最多過期扇區的四個過期塊。掃描結果和邏輯塊地址的值被同時保存用于更新地址映像表。同時,不同的暫存器組被同時用于記錄該設備中含有最多過期扇區的四個有效塊。目的是在把有效扇區重新放置到目標(有效)塊中之后擦除一個過期(源)塊。這四個暫存器組用于提供最匹配的源塊和目標選擇。
下一步,確定源塊中有效扇區的數量,參考步驟1004。下一步,確定有效扇區的地址,參考步驟1006。這些地址指向的有效扇區被稱為目的扇區。下一步,執行回拷操作把有效數據從過期(源)塊向目標扇區進行復制,參考步驟1008。在回拷操作中,有效數據可以臨時存儲在內部緩沖區中。
下一步,確定在垃圾回收操作中是否出現了壞扇區,參考步驟1010。如果出現了壞扇區,則執行壞塊重新放置操作,參考步驟1012。如果沒有出現壞扇區,源塊(含有最多過期扇區的塊)將被擦除并且這個塊各個位的值將被設為1,參考步驟1014。下一步,確定擦除操作是否失敗,參考步驟1016。如果擦除操作失敗,則執行壞塊重新放置操作,參考步驟1018。如果擦除操作沒有失敗,則過期塊的垃圾回收操作完成,映像表被更新以反映修改供后續寫入操作用,參考步驟1020。下一步,擦除計數段中被擦除塊的擦除計數增加,參考步驟1022。
圖14為本發明的損耗平衡操作方法流程圖。在沒有來自主機系統的數據傳輸請求時,損耗平衡操作將后臺運行。損耗平衡操作過程中有可能會收到來自主機系統的數據傳輸請求。損耗平衡操作通常把有效數據從低擦除計數的塊移向高擦除計數的塊。低擦除計數的塊將被擦除,其擦除計數將增加。這一操作過程可以通過降低塊的最高擦除計數使其接近平均設備擦除計數的方法來平衡塊的擦除計數。該過程同時推遲了給定塊達到其最大擦除計數的時間。
首先,固件讀取各塊擦除計數段中的擦除計數,并確定各閃存設備的平均設備擦除計數,參考步驟1102。然后確定全部閃存設備的平均全局擦除計數,同樣參考步驟1102。平均設備擦除計數值存儲在各閃存設備的暫存器中,參考步驟1104。對于各閃存設備,如果平均設備擦除計數大于設備閥值計數暫存器的值,則設備閥值計數將被更新為該值。同理,如果平均全局擦除計數大于全局閥值計數暫存器的值,全局閥值計數將被更新為該值。這些值今后都將被用到,參考步驟1104。在本發明的一個實現方案中,指定了三個暫存器用于保存各閃存設備的擦除計數值。第一個暫存器儲存特定的閃存設備的平均擦除計數,稱為設備擦除計數。第二個暫存器儲存特定的閃存設備的平均擦除計數,稱為設備閥值計數。第三個暫存器儲存全部閃存設備的平均擦除計數值,稱為全局閥值計數。例如,設備閥值計數可設為5,000,全局閥值計數可設為20,000。這兩個值同時被預編程成為閃存系統初始化的一部分。
下一步,確定閃存設備的設備閥值計數是否大于或等于全局閥值計數,參考步驟1106。如果不是,確定該設備的設備擦除計數是否大于或等于設備閥值計數,參考步驟1108。如果不是,損耗平衡操作結束。如果是,確定設備中具有最高擦除計數的塊,參考步驟1110。下一步,確定設備中具有最低擦除計數塊,參考步驟1112。下一步,具有最低擦除計數的塊中的有效數據被重新放置到另一個塊中,參考步驟1114。下一步,具有最低擦除計數的塊被擦除,同時其擦除計數增加,參考步驟1116。下一步,具有最高擦除計數的塊中的有效數據被重新放置到具有最低擦除計數的塊中,參考步驟1118。下一步,更新映像表,參考步驟1120。下一步,設備閥值計數增加,參考步驟1122。損耗平衡操作結束。
一個閃存設備的塊管理操作可能同時牽涉到多個閃存設備,此時有效數據通過外部從一個閃存設備向另一個設備被重新放置。這從本質上提高閃存設備系統的總體性能。在另一個特定的實施方案中,如果某個特定的閃存設備進行塊管理操作,其擦除計數高于其它閃存設備,有效數據可通過外部從一個閃存設備向另一個執行重新放置操作,以達到不同閃存設備之間的平衡。在本發明中,既包括內部重新放置又包括外部重新放置。
返回步驟1106,如果閃存設備的設備閥值計數大于或等于全局閥值計數,則確定設備中具有最高擦除計數的塊,參考步驟1128。下一步,確定具有最低平均擦除計數的閃存設備,參考步驟1130。下一步,確定設備中具有最低擦除計數的塊,參考步驟1132。下一步,具有最低擦除計數的塊中的有效數據被重新放置到另一個塊中,參考步驟1134。下一步,具有最低擦除計數的塊被擦除,其擦除計數增加,參考步驟1136。下一步,具有最高擦除計數的塊中的有效數據被為重新放置到具有最低擦除計數的塊中,參考步驟1138。在本發明的一個實施方案中,有效數據被移動到另一個閃存設備中。下一步,更新映像表,參考步驟1140。下一步,全局閥值計數增加,參考步驟1142。損耗平衡操作結束。
上述描述的損耗平衡算法的實施例是簡單和有效的。然而,在一些例子中,例如,MLC閃存應用,因為其有一些缺點,此算法可能被改良。通常,MLC閃存在備用區域需要盡可能多的位以提供強大的ECC保護,所以,在備用區域的擦除計數位能夠被移除以儲存較多的ECC位是比較好的。上述實施例的另一個問題是在被擦除之后,擦除計數位應該被寫回塊,這指的是在被擦除之后,閃存塊的數據全是“空的”,但是備用區域卻被編程。就大部份的MLC閃存的限制因素而言,在被擦除和多次編程之后,扇區僅只能夠編程一次,可能在這扇區中造成不明確的內容。在這個例子中,可能在每一個塊中持續追蹤擦除計數是不切實際的。因此,圖15說明損耗平衡方法的另一個實施例以解決上述問題。
在圖15中,當接收到一寫入指令,控制器將利用映像表將接收到的LBA轉換成PBA(步驟1201)。如果接收到的數據能夠直接寫入當前的PBA的扇區,控制器執行編程操作至PBA。如果編程失敗,當前的PBA被示為壞塊且控制器移動有效扇區到閑置塊(目標塊),其閑置塊為從所有的閑置塊中隨意選取的。如果接收的數據無法直接寫入當前的塊,控制器從所有的閑置塊中隨意尋找一個閑置塊當作目標塊將數據寫入和執行相對應的編程。在數據被寫入或拷貝到目標塊之后,如果原來的塊被示為壞的則原來的塊會被擦除或表示為壞塊。最后,控制器修改映像表和結束操作。因為每一次LBA被安排至新的閑置塊,替代總是連結至某些實體塊,LBA至BPA的關系是隨機選取閑置塊以不斷變化地改寫。所以,理論上,每一個LBA有相同的機會被儲存在任何的實體塊。反的,每一個實體塊可被選取以接受LBA的數據,但是下一次,會被改變成接受其它LBA的數據。這個程序是隨機的。如此,每一個實體塊有相同的機率被編程或擦除,因為其所對應的LBA是隨機改變的。然而,使用這個方法沒有明確的標示或計數器告知擦除的次數和可能無法知道最多擦除次數在那一個塊,在控制擦除次數時并不準確。但是,這個方法比較簡單。從閑置塊隨機選取,大致上此損耗平衡方法的實施例是有效以允許每一個實體塊有相同的擦除機率。
本發明中的閃存控制器可以執行多塊數據存取。傳統閃存設備內置一個512字節的頁面暫存器。寫入閃存設備的數據首先要寫入該頁面暫存器,然后才能寫入閃存陣列。傳統的閃存控制器及其固件控制著閃存系統存取周期。傳統閃存控制器每次只能傳輸一個塊(512字節)的數據到閃存設備的頁面暫存器中。如果512個字節的頁面暫存器已被寫入,則不能對該閃存設備進行其它存取。相應地,傳統閃存控制器使用單塊數據存取技術,這限制了閃存系統的性能。
在本發明中,閃存控制器采用大小為2048字節或更大的頁面暫存器。本發明中的閃存控制器為多塊存取控制器,通過同時向閃存設備發送多塊數據來寫入頁面暫存器。與傳統的單塊數據傳輸控制器相比,該控制器顯著提高了數據傳輸的性能。
本發明中的閃存控制器可同時進行雙通道處理,從而進一步改善了閃存系統的性能。雙通道計數可提供第二通道,或“自由通道”,用于執行閃存控制器和閃存設備之間的事務。傳統閃存控制器采用單存儲器總線結構,多個閃存設備同時與總線連接。然而,傳統的單通道架構限制了傳統閃存控制器的性能。
在本發明中,至少采用了兩條存儲器總線。各條存儲器總線都和獨立的閃存設備相連。存儲器控制器可以同時或單獨存取各閃存設備。結果,操作執行可達到采用雙通道處理的兩倍速度。此外,各存儲器總線還可以進一步擴展為多條存儲器總線結構。
本發明的閃存控制器還可進行交錯式操作。傳統閃存控制器采用單存儲器總線結構,多個閃存設備同時與總線連接。然而,傳統閃存控制器每次只能存取一個閃存設備,而這限制了系統的性能。
本發明中,至少采用了一個或兩個存儲器控制信號(例如片選和忙)。此外,共享的存儲器總線至少有兩個閃存設備與的相連。當一個閃存設備為讀忙或寫忙時,本發明中的閃存控制器可存取另一個閃存設備。相應地,本發明中的閃存控制器充分利用了共享存儲器總線,從而顯著提高了性能。此外,通過共享存儲器IO和控制信號,減少了閃存控制器的管腳數量。這使閃存系統的成本實現了最小化。
在本發明中,在單個閃存設備的存儲器取周期中同時集成多塊存取技術,多存儲器交錯技術和多通道操作技術,使其達到了最佳性能。
本發明提出的系統和方法具有諸多優點。例如,大大提高了閃存控制器在塊管理操作過程中的搜索可用好塊的速度。同時,消除了閃存控制器對外部緩沖區的需求。此外,閃存控制器支持多塊數據存取、雙通道處理和多存儲單元交錯式存取。相應地,大大提高了塊管理操作執行速度。
本發明主要介紹了閃存塊管理系統和方法。該系統和方法提出了一種配有處理器的閃存控制器,用于執行閃存系統操。這里的操作是指塊管理操作,具體包括壞塊處理、過期塊回收和損耗平衡操作。處理器利用來自仲裁邏輯的數據,對閃存系統中特定的閃存設備執行這些操作。由于這些操作都發生在特定的閃存設備內部,處理器可以利用來自仲裁邏輯的數據把可用好塊搜索限定在特定的閃存設備內部。同時,在有效數據被重新放置前的搜索過程中,處理器可以利用閃存設備的內部緩沖區來儲存有效數據。結果,可用好塊搜索時間大大減少,同時消除了對外部緩沖區的需求。相應地,塊管理操作的執行速度將顯著提高。
雖然本說明書介紹的是帶有或不帶有指紋識別功能的電子數據閃存卡,在本發明思想和范圍之內,本發明同樣適用于其它類型的存儲器系統。此外,雖然本文所介紹的是USB標準,在本發明思想和范圍之內,本發明同樣適用于其它標準。此外,本發明的方案可通過硬件、軟件、包含程序指令的計算機可讀介質或其組合實現。相應地,通過相關技術對本發明進行的修改仍在以下權利要求的思想和范圍之內。
權利要求
1.一種電子數據閃存卡,可通過建立通訊連接被主機存取,其特征在于,該電子數據閃存卡包括
一卡身;
一個或多個安裝于該卡身的閃存設備,一個或多個閃存設備包含數個多層單元存儲器單元用于存儲數據文件;
一安裝于卡身的輸入/輸出接口電路,用于建立和主機之間的通訊;
一安裝于卡身的閃存控制器,與所述的閃存設備和所述的輸入/輸出接口電路之間的電氣連接,其中該閃存控制器可在一數據檢索模式下操作,從多層單元存儲器單元的一塊讀取數據以決定是否在該數據讀取中有任何錯誤以及如果在該讀取數據有錯誤并決定在該讀取數據中是否錯位的數量超過預定臨限和錯誤位的數量超過預定臨限,即拷貝多層單元存儲器單元的塊的數據至該多層單元存儲器單元的一閑置目標塊和在邏輯到實體塊位置表中更新相對應的邏輯到實體塊位置映像。
2.如權利要求1所述的電子數據閃存卡,其特征在于,其中前述閃存控制器在拷貝多層單元存儲器單元的塊的數據至該閑置目標塊后,還可在數據檢索模式操作以擦除多層單元存儲器單元的塊。
3.如權利要求1所述的電子數據閃存卡,其特征在于,其中前述閃存控制器在拷貝多層單元存儲器單元的塊的數據至該閑置目標塊后,還可在數據檢索模式操作以記錄多層單元存儲器單元的塊為一壞塊。
4.如權利要求1所述的電子數據閃存卡,其特征在于,其中前述閃存控制器可在一編程模式操作將數據寫入該多層單元存儲器單元的一第二個塊,以決定是否該第二個塊可寫入以及在數據寫入該第二個塊時,是否有任何錯誤,和如果該第二個塊不可寫入或數據寫入該第二個塊時有錯誤,上述閃存控制器還可在隨機操作選取一第二個閑置好塊為一第二個目標塊,以將數據寫入該第二個目標塊和在邏輯到實體塊位置表中更新相對應的邏輯到實體塊映像。
5.如權利要求4所述的電子數據閃存卡,其特征在于,其中,如果在數據寫入該第二個塊有錯誤時,上述閃存控制器還可在該編程模式下操作,拷貝在該第二個塊有效扇區至該第二個塊目標塊和標示該第二個塊為壞的。
6.如權利要求1所述的電子數據閃存卡,其特征在于,其中輸入/輸出接口電路為通用串行總線接口電路,該通用串行總線接口電路包含采用BOT協議傳輸數據的手段。
7.如權利要求1所述的電子數據閃存卡,其特征在于,其中輸入/輸出接口電路可采用SecureDigital SD接口電路、Multi-Media Card MMC接口電路、Compact Flash CF接口電路、存儲棒Memory StickMS接口電路、PCI-Express接口電路、IntegratedDrive Electronics IDE接口電路或Serial AdvancedTechnology Attachment SATA接口電路。
全文摘要
一種具多樣閃存單元壞塊管理的電子數據閃存卡,包括可通過主機存取的電子數據閃存卡,電子數據閃存卡由連接至閃存設備的閃存控制器和輸入-輸出接口電路構成。在一個實施方案中,閃存卡采用USB接口電路和主機通訊。閃存控制器包括仲裁器,用于建立邏輯地址和實體地址之間的映像和執行塊管理操作,塊管理操作包括在可用塊中存儲重新分配的數據、把過期塊中的有效數據重新放置到上述可用塊中并把邏輯塊地址重新分配給上述可用塊實體塊地址、搜索閃存設備的壞塊并用保留塊替換、有效數據被重新放置到可用塊中后擦除過期塊進行回收以及塊的擦除計數損耗平衡等。此外,各閃存設備都設有內部緩沖區用于加速塊管理操作。
文檔編號G11C7/10GK101399075SQ20081000265
公開日2009年4月1日 申請日期2008年1月14日 優先權日2007年9月28日
發明者馬治剛, 周圭璋, 李中和, 俞一康, 李威若, 沈明祥 申請人:智多星電子科技有限公司