專利名稱:數據寫入方法、閃存控制器與閃存儲存裝置的制作方法
技術領域:
本發明涉及一種用于閃存的數據寫入方法,且特別涉及一種將數據均勻寫入至閃 存中的數據寫入方法以及使用此方法的閃存控制器與閃存儲存裝置。
背景技術:
數碼相機、手機與MP3在這幾年來的成長十分迅速,使得消費者對數字內容的儲 存需求也急速增加。由于閃存(Flash Memory)具有數據非易失性、省電、體積小與無機械結 構等的特性,適合使用者隨身攜帶作為數字文件傳遞與交換的儲存媒體。固態硬盤(Solid State Drive, SSD)就是以閃存作為儲存媒體的一個例子,并且已廣泛使用于計算機主機系 統中作為主硬盤。一般閃存包括多個實體區塊,每一個實體區塊包括了多個頁面,而頁面為寫入數 據或讀取數據的最小單元。每一頁面通常包括使用者數據區與冗余區。使用者數據區用 以儲存使用者的數據,而冗余區用以儲存系統的數據(例如,錯誤校正碼(Error Checking and Correcting Code,ECC Code))0而高密度的閃存會因不均勻的制程,使得閃存中不同的區域產生不同的可靠度。 隨著閃存的使用時間、讀寫次數增加,錯誤數據的數量也會隨著增加。當一個錯誤校正碼儲 存于較低可靠度的區域時,就會較早發生不可恢復數據的情況,使得包含這區域的最小管 理單位的存儲器不能再被使用。而隨著存儲器容量越來越大,最小管理單位的存儲器空間 也越來越大。然而,一個錯誤校正碼所占的空間可能僅占最小管理單位存儲器的千分之一, 當其中一個錯誤校正碼不可恢復時,此最小管理單位面積的存儲器空間便無法再使用,如 此將會舍棄千分之九百九十九還可使用的存儲器空間。
發明內容
本發明提供一種數據寫入方法、閃存控制器與閃存儲存裝置,其能夠將數據平均 寫入在閃存芯片中,藉以增加閃存芯片的可使用時間。本發明提出一種閃存儲存裝置,用于儲存來自于主機系統的數據。閃存儲存裝置 包括連接器、閃存芯片以及閃存控制器。其中,連接器電性連接至主機系統,以自主機系統 接收數據。閃存控制器電性連接至閃存與連接器,其用來將數據分割為至少一碼框,并產 生與上述碼框對應的錯誤校正碼,以將上述碼框與其所對應的錯誤校正碼形成錯誤校正碼 框,再將上述錯誤校正碼框分割為多個碼框片段,之后將這些碼框片段以非依序排列順序 排列后寫入至閃存芯片中。本發明提出一種閃存控制器,用以將來自于主機系統的數據寫入至閃存芯片中。 其中,閃存控制器包括微處理器單元、閃存接口單元、主機接口單元、錯誤校正單元以及存 儲器管理單元。閃存接口單元電性連接至微處理器單元,并且電性連接至閃存芯片。主機 接口單元電性連接至微處理器單元,并且電性連接至主機系統,用來接收來自主機系統的 數據。存儲器管理單元電性連接至微處理器單元,用來將數據寫入至閃存芯片中。錯誤校正單元電性連接至微處理器單元,用來對數據產生錯誤校正碼。其中,存儲器管理單元將數 據分割為至少一碼框,再通過錯誤校正單元產生與上述碼框對應的錯誤校正碼,存儲器管 理單元將上述碼框與其所對應的錯誤校正碼形成錯誤校正碼框。而存儲器管理單元將上述 錯誤校正碼框分割為多個碼框片段,并且將這些碼框片段以非依序排列順序排列后寫入至 閃存芯片中。本發明提出一種數據寫入方法,用于將來自于主機系統的數據寫入至閃存芯片 中。首先,自主機系統接收數據。接著,將數據分割為至少一碼框。之后,產生與上述碼框對 應的錯誤校正碼,以將上述碼框與其所對應的錯誤校正碼形成為至少一錯誤校正碼框。然 后,將上述錯誤校正碼框分割為多個碼框片段。最后,將這些碼框片段以一非依序排列順序 寫入至閃存芯片中。基于上述,本發明能夠將每一筆錯誤校正碼框的碼框片段均勻地寫入在不同的區 域中,以避免將同一個錯誤校正碼框的碼框片段寫入于相鄰的位置,藉以預防一個錯誤校 正碼框完全沒有恢復的機會。如此一來便能夠使得在非均勻制程之下所制成的閃存裝置所 造成的影響,進而增加閃存裝置的可使用時間。為讓本發明的上述特征和優點能更明顯易懂,下文特舉實施例,并配合所附圖式 作詳細說明如下。
圖IA是本發明實施例所示使用閃存儲存裝置的主機系統的方塊圖;圖IB是本發明實施例所示的計算機、輸入/輸出裝置與閃存儲存裝置的示意圖;圖IC是本發明另一實施例所示的主機系統與閃存儲存裝置的示意圖;圖2是本發明實施例所示的閃存儲存裝置的方塊圖;圖3是本發明另一實施例所示的閃存控制器的概要方塊圖;圖4是本發明實施例所示的數據寫入方法的流程圖;圖5是本發明實施例所示的錯誤校正碼框分割示意圖;圖6是本發明實施例所示的錯誤校正碼框與字符線的示意圖;圖7是本發明實施例所示的字符線區域的錯誤位數的示意圖;圖8是本發明實施例所示的字符線區域的排列順序表的示意圖;圖9是本發明另一實施例所示的字符線區域的錯誤位數的示意圖;圖10是本發明另一實施例所示的排列順序表的示意圖;圖11是本發明又一實施例所示的排列順序表的示意圖。附圖標記說明1000 主機系統;1100:計算機;1102:微處理器;1104 隨機存取存儲器;1106 輸入/輸出裝置;1108:系統總線;1110:數據傳輸接口 ;
1202:鼠標;1204 鍵盤;1206 顯示器;1208 打印機;1212 優盤;1214 記憶卡;1216:固態硬盤;1310 數碼相機;1312 =SD 卡;1314:MMC 卡;1316:CF 卡;1318 記憶棒;I32O:嵌入式 MMC;100 閃存儲存裝置;203 連接器;205 閃存控制器;207 閃存芯片;209 微處理器單元;211:主機接口單元;213:存儲器管理單元;215 閃存接口單元;217 緩沖存儲器;219 錯誤校正單元;223 錯誤位數統計單元;501 516、601、603、605 錯誤校正碼框;S405 S425 本發明實施例的數據寫入方法各步驟。
具體實施例方式閃存控制器使用錯誤校正碼技術保護儲存在閃存芯片中的數據。然而,高密度的 閃存芯片會因不均勻的制程而產生可靠度不同的區域。由于可靠度較低的區域容易產生較 多的錯誤位數,其將導致此區域無法復原,因此當數據儲存于較低可靠度的區域時,便會較 早發生不可恢復數據的情況。據此,本發明提供一個用于閃存的數據寫入方法及其控制器 與儲存裝置,來降低非均勻制程所造成的影響,進而增加閃存的可使用時間。圖IA是本發明實施例所示的使用閃存儲存裝置的主機系統的方塊圖。圖IB是本 發明實施例所示的計算機、輸入/輸出裝置與閃存儲存裝置的示意圖。圖IC是本發明另一 實施例所示的主機系統與閃存儲存裝置的示意圖。請參照圖1A,主機系統1000 —般包括計算機1100與輸入/輸出(input/output, I/O)裝置1106。計算機1100包括微處理器1102、隨機存取存儲器(random access memory, RAM) 1104、系統總線1108以及數據傳輸接口 1110。輸入/輸出裝置1106包括如圖IB的鼠標1202、鍵盤1204、顯示器1206與打印機1208。必須了解的是,圖IB所示的裝置非限制輸 入/輸出裝置1106,輸入/輸出裝置1106還可以包括其他裝置。在本發明實施例中閃存儲存裝置100是透過數據傳輸接口 1110與主機系統1000 的其他元件電性連接。通過微處理器1102、隨機存取存儲器1104與輸入/輸出裝置1106 的處理,使得主機系統1000可將數據寫入至閃存儲存裝置100或從閃存儲存裝置100中讀 取數據。例如,閃存儲存裝置100可以是如圖IB所示的優盤1212、記憶卡1214或固態硬盤 1216。一般而言,主機系統1000可實質地為可儲存數據的任意系統。雖然在本實施例 中,主機系統1000是以計算機系統來進行說明,然而,在本發明另一實施例中主機系統 1000可以是數碼相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機 系統為數碼相機(攝影機)1310時,閃存儲存裝置100則為其所使用的安全數字(secure digital, SD)卡 1312、多媒體儲存卡(Multi Media Card, MMC) 1314、小型快閃(Compact Flash, CF)卡1316、記憶棒(Memory Stick, MS) 1318或嵌入式儲存裝置1320(如圖IC所 示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(EmbeddedMMC,eMMC)。值得一提的是,嵌 入式多媒體卡是直接電性連接于主機系統1000的基板上。圖2是本發明實施例所示的閃存儲存裝置的方塊圖。請參照圖2,閃存儲存裝置 100包括連接器203、閃存控制器205以及閃存芯片207。其中,閃存控制器205電性連接于 連接器203與閃存芯片207之間,且閃存控制器205透過連接器203電性連接至主機系統 1000,以將來自于主機系統1000的數據寫入至閃存芯片207中。在此,連接器203例如為SD連接器。然而,必須了解的是本發明不限于此,連接 器 203 也可以是序列先進附件(Serial Advanced TechnologyAttachment, SATA)連接器、 通用序列總線(Universal Serial Bus, USB)連接器、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE) 1394 連接器、高速周邊零件連接接口 (Peripheral Component InterconnectExpress, PCI Express)連接器、MS 連接器、MMC 連 接器、CF連接器、整合式驅動電子接口 antegrated Device Electronics, IDE)連接器或 其他適合的數據傳輸的連接器。閃存芯片207例如為多層記憶胞(Multi Level Cell,MLC)NAND閃存。然而,必 須了解的是,本發明不限于此。在本發明另一實施例中,單層記憶胞(Single Level Cell, SLONAND閃存也可應用于本發明。在本實施例中,閃存控制器205包括微處理器單元209、主機接口單元211、存儲器 管理單元213以及閃存接口單元215。其中,主機接口單元211、存儲器管理單元213以及 閃存接口單元215分別電性連接至微處理器單元209。微處理器單元209用以控制閃存控制器205的整體運作。也就是說,閃存控制器 205內的組件的運作可由微處理器單元209直接或間接來控制。主機接口單元211電性連接至微處理器單元209,并且用以接收與識別主機系統 1000所傳送的指令。也就是說,主機系統1000所傳送的指令與數據會經由連接器203再透 過主機接口單元211而傳送至微處理器單元209。在本實施例中,主機接口單元211為SD 接口。然而,必須了解的是本發明不限于此,主機接口單元211也可以是SATA接口、USB接 口、IEEE 1394 接口、PCI Express 接口、MS 接口、MMC 接口、CF 接口、IDE 接口 或其他適合的數據傳輸接口。閃存接口單元215是電性連接至微處理器單元209并且用以存取閃存芯片207。 也就是說,欲寫入至閃存芯片207的數據會經由閃存接口單元215轉換為閃存芯片207所 能接受的格式。存儲器管理單元213電性連接至微處理器單元209,并且用以執行根據本實施例 的數據寫入機制。在本實施例中,存儲器管理單元213是以一固件型式實作在閃存控制器 205中。例如,將包括多個程序指令的存儲器管理單元213燒錄至一程序存儲器(例如,只 讀存儲器(Read Only Memory, ROM))中并且將此程序存儲器嵌入在閃存控制器205中,當 閃存儲存裝置100運作時,存儲器管理單元213的多個機器指令會由微處理器單元209來 執行以完成根據本發明實施例的數據寫入機制。在本發明另一實施例中,存儲器管理單元213的控制指令也可以程序碼型式儲存 于閃存芯片207的特定區域(例如,閃存中專用于存放系統數據的系統區)中。同樣的,當 閃存儲存裝置100運作時,存儲器管理單元213的多個控制指令會由微處理器單元209來 執行。此外,在本發明另一實施例中,存儲器管理單元213也可以一硬體型式實作在閃存控 制器205中。在本發明另一實施例中,閃存控制器205也可以還包括其他功能模組。圖3是本 發明另一實施例所示的閃存控制器的概要方塊圖。請參照圖3,除了微處理器單元209、存 儲器管理單元213、主機接口單元211與閃存接口單元215之外,閃存控制器205還包括緩 沖存儲器217、錯誤校正單元219。錯誤校正單元219電性連接至微處理器單元209并且用以執行一錯誤校正編碼以 確保數據的正確性。具體來說,當存儲器管理單元213從主機系統1000中接收到主機寫 入指令時,錯誤校正單元219會為對應此主機寫入指令的寫入數據產生對應的錯誤校正碼 (Error Checking and Correcting Code, ECCCode),并且存儲器管理單元 213 會將此寫入 數據與對應的錯誤校正碼寫入至閃存芯片207中。之后,當存儲器管理單元213從閃存芯 片207中讀取數據時會同時讀取此數據對應的錯誤校正碼,并且錯誤校正單元219會依據 此錯誤校正碼對所讀取的數據執行錯誤校正程序。而在本實施例中,當閃存控制器205接收到數據時,存儲器管理單元213會先將數 據分割為多個碼框(frame),之后,錯誤校正單元219再產生各碼框對應的錯誤校正碼,以 將這些碼框與其各自所對應的錯誤校正碼分別編碼形成為錯誤校正碼框(ECC frame)。在 此,錯誤校正碼框的大小是根據傳輸單位的大小來分割,此傳輸單位的大小是依據閃存芯 片的規格書來決定,也就是說每個傳輸單位須保護(protect)多少個位(bit)。例如傳輸 單位為1Kbyte,保護M個位,閃存控制器205會將數據切割為每單位為1Kbyte。而錯誤 校正單元219則會針對每IKbyte的數據進行錯誤校正編碼,所以每個錯誤校正碼框就是 1Kbyte,但本發明不限于此,錯誤校正碼框也可以是512byte或2Kbyte。之后,存儲器管理單元213便會將錯誤校正碼框分割為多個碼框片段,并且將這 些碼框片段以非依序排列順序排序后寫入至閃存芯片207中。緩沖存儲器217是電性連接至微處理器單元209并且用以暫存來自于主機系統 1000的數據與指令或來自于閃存芯片207的數據。在此,緩沖存儲器217還可用來暫時儲 存碼框片段,以使閃存控制器205依據非依序排列順序而自緩沖存儲器217來一一擷取各碼框片段,排列完成后再將各碼框片段寫入至閃存芯片207中。在本實施例中,閃存控制器205還包括錯誤位數統計單元223。錯誤位數統計單元 223是用來統計閃存芯片的各區域的錯誤位數,并且依據各區域的錯誤位數來排序,藉以決 定碼框片段寫入至閃存芯片的排列順序(也就是說要從哪一個碼框片段開始排列且排列 完成后再進行寫入)。之后,將此碼框片段的排列順序更新至排列順序表。值得一提的是,在其他實施例中,錯誤校正單元219與錯誤位數統計單元223也可 以配置于閃存儲存裝置100,而分別與閃存控制器205電性連接。以下即搭配上述閃存儲存裝置100來詳細說明數據寫入方法的詳細步驟。圖4是本發明實施例所示的數據寫入方法的流程圖。請同時參照圖2 圖4,首 先,在步驟S405中,自主機系統1000接收寫入指令與數據。具體而言,閃存控制器205透 過主機接口單元211來接收寫入指令與數據。接著,在步驟S410中,將數據分割為至少一碼框。之后,如步驟S415所示,產生與 上述碼框對應的錯誤校正碼,以將上述碼框與其所對應的錯誤校正碼形成錯誤校正碼框。 以圖2及圖3而言,錯誤校正單元219會對各碼框數據執行一錯誤校正編碼,以形成錯誤校 正碼框。進一步地說,當閃存儲存裝置100接收到數據時,存儲器管理單元213會先將數據 分割為多個碼框(以傳輸單位為基礎來分割),再由錯誤校正單元219產生各碼框對應的錯 誤校正碼,以將這些碼框與其各自所對應的錯誤校正碼分別形成為錯誤校正碼框。也就是 說,上述數據會被形成多筆錯誤校正碼框,且每一筆錯誤校正碼框會具有一個對應的錯誤 校正碼。接著,在步驟S420中,分別將這些錯誤校正碼框分割為多個碼框片段。也就是說, 閃存控制器205中的存儲器管理單元213會分別將這些錯誤校正碼框分割為多個碼框片 段,并且將此些碼框片段暫存于緩沖存儲器217中。舉例來說,假設閃存芯片207中是以一個頁面作為數據存取的單位,而一個頁面 為8Kbyte,一次存取一條字符線(word line)為存取一個頁面。假設傳輸單位為0. 5Kbyte, 則存儲器管理單元213會將一個頁面分割為16個錯誤校正碼框,再將每一個錯誤校正碼框 分割為16等分的碼框片段。然而,在此并不限定錯誤校正碼框所欲分割的數量,每一個錯 誤校正碼框也可分割為32等分或64等分的碼框片段。最后,在步驟S425中,將碼框片段以非依序排列順序排列后寫入至閃存芯片207 中。詳細地說,閃存控制器205中的存儲器管理單元213會將碼框片段以非依序排列順序排 列后寫入至閃存芯片207中。也就是說,閃存控制器205會根據排列順序表中所記錄的非 依序排列順序,自緩沖存儲器217來擷取碼框片段,再將這些碼框片段寫入至閃存芯片207 中。據此,閃存控制器205便能夠將每一個錯誤校正碼框平均寫入在同一字符線中。舉例來說,圖5是本發明實施例所示的錯誤校正碼框分割示意圖。在本實施例中, 假設有16個錯誤校正碼框501 516,每一個錯誤校正碼框分別被分割為16等分的碼框片 段。并且假設非依序排列順序為從各個錯誤校正碼框的第一個碼框片段開始進行排序,之 后再對各個錯誤校正碼框的第二個碼框片段進行排序,依此規則直至碼框片段排滿一字符 線后再寫入至閃存芯片207中。詳細地說,從第一個錯誤校正碼框501的第一個碼框片段Flil開始,依序擷取每一 個錯誤校正碼框的第一個碼框片段(F1VF2^F3VFu.....F16a) 0接著,再依序擷取每一個錯誤校正碼框的第二個碼框片段(F1^Fidd2.....F16,2)。之后,再依序擷取每一
個錯誤校正碼框的第三個碼框片段(Fmh^h^Fu.....F16,3)。以此類推,直到碼框片
段排滿一字符線后再寫入至閃存芯片207中。然而,必須了解的是本發明的非依序排列順 序不限于此。另外,一般而言,閃存芯片207具有多條字符線且每一條字符線中具有多個記憶 胞。據此,碼框片段則是儲存在這些字符線中。值得一提的是,還可通過閃存控制器205中 的錯誤位數統計單元223來統計閃存芯片207中的每一條字符線的各碼框片段區域的錯誤 位數(此錯誤位數可以是全部字符線的每一個碼框片段的總和,也可以是全部字符線的每 一個碼框片段的平均值)。之后,錯誤位數統計單元223便能夠依據錯誤位數決定碼框片段 寫入至閃存芯片207中的排列順序,并將排列順序更新至排列順序表,以作為后續自閃存 芯片207中讀取錯誤校正碼框的依據。上述排列順序也就是決定要從哪一個碼框片段開始 排列。例如,由錯誤位數最高至最低來排序這些區域,而由錯誤位數最高的區域開始排列, 接著由錯誤位數次高的區域開始排列,以此類推。之后,錯誤位數統計單元223再將排列順 序更新至排列順序表。據此,閃存控制器205在進行數據寫入時,會依據排列順序表的排列 順序將數據寫入至閃存芯片207中。舉例來說,圖6是本發明實施例所示的錯誤校正碼框與字符線的示意圖。本實施 例是以三個錯誤校正碼框601、603、605為例,并假設每個錯誤校正碼框的最大錯誤校正 (correct)位數為16位(bit)。為了方便說明,在此,將錯誤校正碼框601、603、605分別分 割為三個碼框片段,也就是SOU S02、S03、SlU S12、S13、S21、S22、S23。對應的也將閃存 芯片207的其中一字符線610分割為9個區域Fl F9,以儲存錯誤校正碼框601、603、605 的碼框片段。以下舉一實施例來表示字符線610各區域的錯誤位數與碼框片段的排列順序之 間的關系。圖7是本發明實施例所示的字符線區域的錯誤位數的示意圖。圖8是本發明實 施例所示的字符線區域的排列順序表的示意圖。在本實施例中,在寫入碼框片段至字符線 之后,讀出這些碼框片段來統計字符線中每一碼框片段的錯誤位數,藉以得知字符線中各 區域的錯誤位數。據此,依據錯誤位數來排序這些字符線區域而獲得的順序為Fl (錯誤位 數為10)、F2 (錯誤位數為9)、F9 (錯誤位數為幻、F8 (錯誤位數為4)、F3 (錯誤位數為3)、 F7 (錯誤位數為幻、F6 (錯誤位數為1)、F4 (錯誤位數為0)、F5 (錯誤位數為0)。然而,必 須了解的是本發明的排列順序不限于此,在其他實施例中也可以由小排至大。因此,當欲再 次寫入碼框片段至閃存芯片時,便可依據這些錯誤位數來排列這些碼框片段,以依據此排 列順序將碼框片段寫入至閃存芯片207。例如,參照圖8,各錯誤校正碼框的第一個碼框片 段S01、S11及S21分別對應至F1、F2及F9,各錯誤校正碼框的第二個碼框片段S02、S12及 S22則是分別對應至F8、F3及F7,而各錯誤校正碼框的第三個碼框片段S03、S13及S23則 是分別對應至F6、F4及F5。據此,上述碼框片段的排列順序則為SOl、Sl 1、S12、S13、S23、 S03、S22、S02、S21。值得注意的是,由于每個錯誤校正碼框的最大錯誤校正位數為16位,因此需注意 每個錯誤校正碼框的碼框片段所寫入的區域的錯誤位數的總和是否會超出16位。以下再 舉另一實施例來說明。
圖9是本發明另一實施例所示的字符線區域的錯誤位數的示意圖。圖10是本發 明另一實施例所示的排列順序表的示意圖。在本實施例中,依據錯誤位數來排列這些字符 線區域所獲得的順序為F1、F2、F9、F3、F4、F8、F7、F6、F5。倘若依據上述順序來決定碼框片 段的排列順序,則各錯誤校正碼框的第一個碼框片段S01、S11及S21是分別對應寫入至F1、 F2及F9,各錯誤校正碼框的第二個碼框片段S02、S12及S22則是分別對應寫入至F3、F4及 F8,而各錯誤校正碼框的第三個碼框片段S03、S13及S23則是分別對應寫入至F7、F6、F5。 在此,每個錯誤碼框的碼框片段所寫入的區域的錯誤位數的總和不能超出16位。以錯誤校 正碼框601而言,S01、S02及S03的錯誤位數的總和要小于或等于16,錯誤校正碼框603及 605亦以此類推。然而,倘若按照上述的排列順序,則SOI、S02及S03的錯誤位數(Fl、F3 及F7)的總和將大于16位,即10+6+2 = 18。據此,便重新調整碼框片段的排列順序。例如,各錯誤校正碼框的第一個碼框片段S01、S11及S21分別對應至F1、F2及F9, Fl (其錯誤位數仍舊先由大排至小)。再來,各錯誤校正碼框的第二個碼框片段S02、S12及 S22則分別對應至F8、F4及F3,在此F8、F4及F3的錯誤位數則為由小排至大。之后,各錯 誤校正碼框的第三個碼框片段S03、S13及S23則分別對應至F7、F6、F5 (其錯誤位數仍舊先 由大排至小)。據此,錯誤校正碼框601、603及605的錯誤位數總和則分別為16(10+4+2)、 15(9+5+1)及 14(8+6+0)。另外,在本發明另一實施例,上述排列順序也可以是隨意調整,使得錯誤校正碼框 601,603及605的錯誤位數總和小于或等于16即可。以下再舉一實施例來說明。圖11是 本發明又一實施例所示的排列順序表的示意圖。在經過調整之后,每一錯誤校正碼框的錯 誤位數則分別為16位、16位及13位。但本發明并不限于此,任何排列方式只要能夠使得每 一個錯誤校正碼框的錯誤位數總和不超過其錯誤校正(correct)能力的16位都在本發明 的范圍之內。而后,當閃存控制器205欲讀取錯誤校正碼框時,便能夠依據排列順序表讀取出 同一個錯誤校正碼框的碼框片段,以進行還原。綜上所述,本發明先將數據分割并編碼形成多個錯誤校正碼框,再將每一筆錯誤 校正碼框分割為多個碼框片段,之后依據非依序排列順序,將多個碼框片段寫入至閃存芯 片中。由于每一個錯誤校正碼框并非連續寫入在相鄰的位置,而是均勻地寫入在不同的區 域中,藉以預防一個錯誤校正碼框一旦損毀,則完全沒有恢復數據的機會。如此一來便能夠 解決在非均勻制程之下所制成的閃存所造成的影響,進而增加閃存裝置的可使用時間。雖然本發明已以實施例揭露如上,但其并非用以限定本發明,本領域技術人員在 不脫離本發明的精神和范圍內,應當可作稍微的更動與潤飾,所以本發明的保護范圍應以 權利要求的內容為準。最后應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;盡 管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然 可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替 換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精 神和范圍。
權利要求
1.一種數據寫入方法,用于將來自于主機系統的數據寫入至閃存芯片中,其特征在于, 該數據寫入方法包括自該主機系統接收數據;分割該數據為至少一碼框;產生與該至少一碼框對應的錯誤校正碼,以將該至少一碼框與其所對應的錯誤校正碼 形成至少一錯誤校正碼框;將該至少一錯誤校正碼框分割為多個碼框片段;以及將所述碼框片段以非依序排列順序排列后寫入至該閃存芯片中。
2.根據權利要求1所述的數據寫入方法,其特征在于,在將所述錯誤校正碼框分割為 所述碼框片段的步驟之后,還包括將所述碼框片段暫存于緩沖存儲器中。
3.根據權利要求2所述的數據寫入方法,其特征在于,依據該非依序排列順序排列后 寫入至該閃存芯片中的步驟,包括依據該非依序排列順序自該緩沖存儲器擷取各所述碼框片段,而將所述碼框片段排列 后寫入至該閃存芯片中。
4.根據權利要求1所述的數據寫入方法,其特征在于,還包括建立排列順序表,以記錄該非依序排列順序。
5.根據權利要求4所述的數據寫入方法,其特征在于,該閃存芯片具有多條字符線且 每一所述字符線具有多個記憶胞,該數據寫入方法還包括所述碼框片段儲存在所述字符線中;讀出所述碼框片段以統計所述字符線中每一所述碼框片段的錯誤位數;依據該錯誤位數決定所述碼框片段寫入至所述字符線的排列順序;以及更新該排列順序至該排列順序表。
6.根據權利要求5所述的數據寫入方法,其特征在于,依據該錯誤位數決定所述碼框 片段寫入至所述字符線的該排列順序的步驟,包括分割每一所述字符線為多個區域;依據每一所述區域的錯誤位數,由大至小或由小至大排序來決定所述碼框片段寫入至 所述字符線的該排列順序。
7.根據權利要求6所述的數據寫入方法,其特征在于,依據每一所述區域的錯誤位數, 由大至小或由小至大來排列所述碼框片段的步驟,包括依據該至少一錯誤校正碼框的最大錯誤校正位數,決定所述碼框片段的排列順序,其 中,該至少一錯誤校正碼框的所述碼框片段所寫入的區域的錯誤位數的總和小于或等于該 最大錯誤校正位數。
8.根據權利要求1所述的數據寫入方法,其特征在于,該非依序排列順序包括先對該至少一錯誤校正碼框的第一個碼框片段進行排列,再對該至少一錯誤校正碼框 的下一個碼框片段進行排列,直至該至少一錯誤校正碼框的所述碼框片段全部排列完畢為止。
9.一種閃存控制器,用以將來自于主機系統的數據寫入至閃存芯片中,其特征在于,該 閃存控制器包括微處理器單元;閃存接口單元,電性連接至該微處理器單元,并且電性連接至該閃存芯片;主機接口單元,電性連接至該微處理器單元,并且電性連接至該主機系統,用來接收來 自該主機系統的該數據;存儲器管理單元,電性連接至該微處理器單元,用來將該數據寫入至該閃存芯片;以及錯誤校正單元,電性連接至該微處理器單元,用以對該數據產生錯誤校正碼;其中,該存儲器管理單元分割該數據為至少一碼框,且該錯誤校正單元對該至少一碼 框產生對應的錯誤校正碼,以將該至少一碼框與其所對應的錯誤校正碼形成至少一錯誤校 正碼框,該存儲器管理單元將該至少一錯誤校正碼框分割為多個碼框片段,并且將所述碼框片 段以非依序排列順序排列后寫入至該閃存芯片中。
10.根據權利要求9所述的閃存控制器,其特征在于,還包括緩沖存儲器,電性連接至該微處理器單元,用來暫時地儲存所述碼框片段。
11.根據權利要求10所述的閃存控制器,其特征在于,該存儲器管理單元依據該非依 序排列順序自該緩沖存儲器擷取各所述碼框片段,以將所述碼框片段排列后寫入至該閃存 芯片中。
12.根據權利要求9所述的閃存控制器,其特征在于,該存儲器管理單元先對該至少一 錯誤校正碼框的第一個碼框片段進行排列,再對該至少一錯誤校正碼框的下一個碼框片段 進行排列,直至所述碼框片段全部排列完畢為止。
13.根據權利要求9所述的閃存控制器,其特征在于,該存儲器管理單元記錄該非依序 排列順序至排列順序表。
14.根據權利要求13所述的閃存控制器,其特征在于,該閃存芯片具有多條字符線且 每一所述字符線具有多個記憶胞,且所述碼框片段儲存在所述字符線中,該閃存控制器還 包括錯誤位數統計單元,讀出所述碼框片段以統計所述字符線中每一所述碼框片段的錯誤 位數,并且依據該錯誤位數決定所述碼框片段的排列順序,其中,該存儲器管理單元將該排列順序更新至該排列順序表。
15.根據權利要求14所述的閃存控制器,其特征在于,該存儲器管理單元將每一所述 字符線分割為多個區域,并依據所述區域各自的錯誤位數,由大至小或由小至大排序來決 定所述碼框片段寫入至所述字符線的該排列順序。
16.根據權利要求15所述的閃存控制器,其特征在于,該存儲器管理單元依據該至少 一錯誤校正碼框的最大錯誤校正位數,決定所述碼框片段的排列順序,其中,該至少一錯誤 校正碼框的所述碼框片段所寫入的區域的錯誤位數的總和小于或等于該最大錯誤校正位 數。
17.—種閃存儲存裝置,用于儲存來自于主機系統的數據,其特征在于,該閃存儲存裝 置包括連接器,電性連接至該主機系統,自該主機系統接收該數據;閃存芯片;以及閃存控制器,電性連接至該閃存與該連接器,用來分割該數據為至少一碼框,并產生與該至少一碼框對應的錯誤校正碼,以將該至少一碼框與其所對應的該錯誤校正碼形成至少 一錯誤校正碼框,再將該至少一錯誤校正碼框分割為多個碼框片段,之后將所述碼框片段 以非依序排列順序排列后寫入至該閃存芯片中。
18.根據權利要求17所述的閃存儲存裝置,其特征在于,還包括緩沖存儲器,用來暫時地儲存所述碼框片段。
19.根據權利要求18所述的閃存儲存裝置,其特征在于,該閃存控制器依據該非依序 排列順序自該緩沖存儲器擷取各所述碼框片段,而將各所述碼框片段排列后寫入至該閃存 芯片中。
20.根據權利要求17所述的閃存儲存裝置,其特征在于,該閃存控制器先對該至少一 錯誤校正碼框的第一個碼框片段進行排列,再對該至少一錯誤校正碼框的下一個碼框片段 進行排列,直至所述碼框片段全部排列完畢為止。
21.根據權利要求17所述的閃存儲存裝置,其特征在于,該閃存控制器記錄該非依序 排列順序至排列順序表。
22.根據權利要求21所述的閃存儲存裝置,其特征在于,該閃存芯片具有多條字符線 且每一所述字符線具有多個記憶胞,且所述碼框片段儲存在所述字符線中,該閃存儲存裝 置還包括錯誤位數統計單元,讀出所述碼框片段以統計所述字符線中每一所述碼框片段的錯誤 位數,并且依據該錯誤位數決定所述碼框片段的排列順序,之后,將該排列順序更新至該排 列順序表。
23.根據權利要求22所述的閃存儲存裝置,其特征在于,該閃存控制器將每一所述字 符線分割為多個區域,并依據所述區域各自的錯誤位數,由大至小或由小至大排序來決定 所述碼框片段寫入至所述字符線的該排列順序。
24.根據權利要求23所述的閃存儲存裝置,其特征在于,該閃存控制器依據該至少一 錯誤校正碼框的最大錯誤校正位數,決定所述碼框片段的排列順序,其中,該至少一錯誤校 正碼框的所述碼框片段所寫入的區域的錯誤位數的總和小于或等于該最大錯誤校正位數。
全文摘要
本發明提供一種數據寫入方法、閃存控制器與閃存儲存裝置。首先,自主機系統接收數據。接著,將此數據分割為至少一碼框。之后,產生與上述碼框對應的錯誤校正碼,以將上述碼框與其所對應的錯誤校正碼形成至少一錯誤校正碼框。然后,將錯誤校正碼框分割為多個碼框片段。最后,將這些碼框片段以非依序排列順序寫入至閃存芯片中。
文檔編號G06F11/10GK102117230SQ200910215388
公開日2011年7月6日 申請日期2009年12月31日 優先權日2009年12月31日
發明者劉育宏, 葉志剛, 曾建富, 梁立群 申請人:群聯電子股份有限公司