TWI670595B - 主動錯誤更正失敗處理方法 - Google Patents
主動錯誤更正失敗處理方法 Download PDFInfo
- Publication number
- TWI670595B TWI670595B TW107109044A TW107109044A TWI670595B TW I670595 B TWI670595 B TW I670595B TW 107109044 A TW107109044 A TW 107109044A TW 107109044 A TW107109044 A TW 107109044A TW I670595 B TWI670595 B TW I670595B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- error correction
- data
- open channel
- solid state
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明的實施例提出一種主動錯誤更正失敗處理方法及裝置。方法包含:從完成佇列取得完成元件;判斷完成元件的執行回覆表是否包括不安全值,如果是則重新分配實體位址給不安全值所對應的使用者資料;以及輸出資料寫入命令至遞交佇列以將使用者資料寫入至重新分配後的實體位址,其中,完成佇列以及遞交佇列皆位於主裝置中。
Description
本發明關連於一種快閃記憶體,特別是一種快閃記憶體的主動錯誤更正失敗處理方法以及使用該方法的裝置。
快閃記憶體裝置通常分為NOR快閃裝置與NAND快閃裝置。NOR快閃裝置為隨機存取裝置,主裝置(Host)可於位址腳位上提供存取NOR快閃裝置的任意位址,並即時地由NOR快閃裝置的資料腳位上獲得儲存於該位址上的使用者資料。相反地,NAND快閃裝置並非隨機存取,而是序列存取。NAND快閃裝置無法像NOR快閃裝置一樣,可以存取任何隨機位址,主裝置反而需要寫入序列的位元組(Bytes)到NAND快閃裝置中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及此命令上的位址。位址可指向一個頁面(在快閃記憶體中的一個寫入作業的最小資料塊)或一個區塊(在快閃記憶體中的一個抹除作業的最小資料塊)。實際上,NAND快閃裝置通常從記憶體單元(Memory Cells)上讀取或寫入完整的數頁資料。當一整頁的資料從陣列讀取到裝置中的緩存器(Buffer)後,藉由使用提取訊號(Strobe Signal)順序地敲出(Clock Out)內容,讓主單元可逐位元組或字元組(Words)存取資料。
開放通道固態硬碟(Open-Channel Solid State Disk)
並不在裝置端實施快閃記憶體翻譯層(FTL,Flash Translation Layer),反而將實體固態硬碟轉交給主裝置管理。不同於傳統的固態硬碟,開放通道固態硬碟讓主裝置知道固態硬碟內部的並行架構,並允許主裝置進行管理。開放通道固態硬碟中具有編碼器,用以依據主裝置欲寫入的資料產生錯誤修正碼,並一併將資料及錯誤修正碼寫入儲存單元。此外,開放通道固態硬碟中另有錯誤修正電路,在不需要主裝置參與的情況下,使用錯誤修正碼修正存在於讀取資料的錯誤。然而,隨著儲存單元的存取次數增加,儲存資料的錯誤位元數目會上升。由於主裝置不知道讀取資料的錯誤率趨勢,無法指示開放通道固態硬碟執行資料搬移作業,用以將資料搬移到較少使用的位置。
因此,需要一種快閃記憶體的主動錯誤更正失敗處理方法以及使用該方法的裝置,用以解決如上所述的問題。
本發明的實施例提出一種主動錯誤更正失敗處理方法,包含:從完成佇列取得完成元件;判斷完成元件的執行回覆表是否包括不安全值,如果是則重新分配實體位址給不安全值所對應的使用者資料;以及輸出資料寫入命令至遞交佇列以將使用者資料寫入至重新分配後的實體位址,其中,完成佇列以及遞交佇列皆位於主裝置中。
本發明的實施例提出一種主動錯誤更正失敗處理方法,包含:接收參數設定命令;依據參數設定命令而設定錯誤位元閥值;接收資料讀取命令;依據資料讀取命令至來源位址讀取使用者資料,如果使用者資料的錯誤位元數大於或等於
錯誤位元閥值時,將執行回覆表中對應至該使用者資料的位元設定成不安全值;以及將包括執行回覆表的完成元件寫入至完成佇列中,其中,參數設定命令以及資料讀取命令皆由開放通道固態硬碟所接收。
110‧‧‧主裝置
120‧‧‧資料緩衝器
130‧‧‧開放通道固態硬碟
133‧‧‧處理單元
135‧‧‧快閃控制器
137‧‧‧存取介面
137_0~137_j‧‧‧存取子介面
139‧‧‧儲存單元
139_0_0~139_j_i‧‧‧儲存子單元
310_0‧‧‧資料線
320_0_0~320_0_i‧‧‧晶片致能控制訊號
410、430、450、470‧‧‧輸出入通道
410_0~410_m、430_0~430_m、450_0~450_m、470_0~470_m‧‧‧資料平面
490_0~490_n‧‧‧超頁面
P#0~P#(n)‧‧‧實體頁面
510‧‧‧遞交佇列
530‧‧‧完成佇列
S611~S636‧‧‧方法步驟
710‧‧‧裝置辨認階段
730‧‧‧參數設定階段
S711~S735‧‧‧方法步驟
S811~S827‧‧‧方法步驟
900‧‧‧完成元件
910‧‧‧執行回覆表
920‧‧‧狀態欄位
930‧‧‧命令識別碼
第1圖係依據本發明實施例之快閃記憶體的系統架構示意圖。
第2圖係依據本發明實施例之存取介面與儲存單元的方塊圖。
第3圖係依據本發明實施例之一個存取子介面與多個儲存子單元的連接示意圖。
第4圖係儲存單元的示意圖。
第5圖係命令佇列示意圖。
第6圖係管理命令或資料存取命令的執行步驟的流程圖。
第7圖係依據本發明實施例之快閃記憶體的裝置參數方法流程圖。
第8圖係依據本發明實施例之主動錯誤更正失敗處理方法流程圖。
第9圖係完成元件的資料格式圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係依據本發明實施例之開放通道固態硬碟系統100架構示意圖。開放通道固態硬碟系統100架構包含主裝置110、資料緩衝器(Data Buffer)120及開放通道固態硬碟(SSD,Solid State Disk)130。主裝置111運作時可依據其需求而建立佇列(Queue)、實體儲存對照表(Storage Mapping Table,又稱為L2P Logical-to-Physical表)及使用紀錄。此系統架構可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品。資料緩衝器120、佇列、實體儲存對照表及使用紀錄可實施於隨機存取記憶體(RAM,Random Access Memory)中的特定區域。主裝置110透過開放通道固態硬碟快速非揮發記憶體(NVMe,Non-Volatile Memory express)介面與開放通道固態硬碟130溝通。主裝置110可使用多種方式實施,例如使用通用硬體(例如,單一處理器、具平
行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行指令(Instructions)、宏碼(Macrocode)或微碼(Microcode)時,提供之後描述的功能。主裝置110可包含運算邏輯單元(ALU,Arithmetic and Logic Unit)以及位移器(Bit Shifter)。運算邏輯單元負責執行布林運算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等)或數學運算(如加、減、乘、除等),而位移器負責位移運算及位元旋轉。開放通道SSD NVMe規格,例如:版本1.2,公開於2016年四月,支援數個輸出入通道(I/O Channels),每一輸出入通道連接至一個邏輯單元編號(LUNs,Logical Unit Numbers),用以分別對應到儲存單元139中的多個儲存子單元。於開放通道SSD NVMe規格中,主裝置110整合原來實施於裝置端中的快閃記憶體翻譯層(FTL,Flash Translation Layer),用以最佳化負載。傳統的快閃記憶體翻譯層將主裝置端或檔案系統認得的邏輯區塊位址(LBAs,Logical Block Addresses)映射至儲存單元139的實體位址(也稱為邏輯至實體映射)。於開放通道SSD NVMe規格中,主裝置110可指示開放通道固態硬碟130將使用者資料儲存至儲存單元139中的一個實體位址,因此,實體儲存對照表的維護由主裝置110所負責及記錄每個邏輯區塊位址的使用者資料實際儲存於儲存單元139中的哪個實體位址。
開放通道固態硬碟130包含處理單元133。處理單元133可採用開放通道SSD NVMe通訊協定與主裝置110溝通,用以接收包含實體位址的資料存取命令,並且依據資料存取命
令指示快閃控制器135執行抹除、讀取或寫入。於此須注意的是,處理單元133可使用輕簡型通用目的處理器(Lightweight General-Purpose Processor)實施。
開放通道固態硬碟130另包含快閃控制器135、存取介面137及儲存單元139,並且快閃控制器135透過存取介面137與儲存單元139溝通,詳細來說,可採用雙倍資料率(Double Data Rate,DDR)通訊協定,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他介面。開放通道固態硬碟130的快閃控制器135透過存取介面137寫入使用者資料到儲存單元139中指定的目的位址(實體位址),以及從儲存單元139中指定的來源位址(實體位址)讀取使用者資料。存取介面137使用數個電子訊號來協調快閃控制器135與儲存單元139間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(Clock Signal)與控制訊號(Control Signal)。資料線可用以傳遞命令、位址、讀出及寫入的資料;控制訊號線可用以傳遞晶片致能(Chip Enable,CE)、位址提取致能(Address Latch Enable,ALE)、命令提取致能(Command Latch Enable,CLE)、寫入致能(Write Enable,WE)等控制訊號。處理單元133與快閃控制器135可分開存在或整合於同一晶片中。
快閃控制器135包含錯誤更正編碼器(ECC,Error Correction Code Encoder)及錯誤更正解碼器(ECC Decoder)。於寫入作業中,錯誤更正編碼器使用編碼演算法依據主裝置110傳來的資料產生錯誤更正碼,並且將主裝置的資料及錯誤更正
碼(可統稱為使用者資料)寫入儲存單元139。於讀取作業中,錯誤更正解碼器使用相應的解碼演算法檢查從儲存單元139讀出的使用者資料的正確性,並嘗試修正其中的錯誤位元。如果使用者資料正確,快閃控制器135直接丟棄錯誤更正碼,並透過處理單元133回覆主裝置110原始讀出的資料。如果使用者資料包含錯誤位元但已經被錯誤更正解碼器修正,快閃控制器135丟棄修正後的錯誤更正碼,並透過處理單元133回覆主裝置110修正後的資料。如果錯誤位元太多而無法回復,快閃控制器135透過處理單元133回覆資料讀取錯誤的訊息給主裝置110。錯誤更正碼可為低密度奇偶較驗碼(LDPC,Low-Density Parity Check Code)、BCH碼(Bose-Chaudhuri-Hocquenghem Code)等。一般而言,低密度奇偶較驗碼可提供比BCH碼較佳的錯誤位元更正能力,例如:每1K位元組的使用者資料,BCH碼可提供最多76個錯誤位元的修正能力,而低密度奇偶較驗碼可提供最多120個錯誤位元的修正能力。
於系統開機(System Boot)時,主裝置110從開放通道固態硬碟130獲得控制開放通道固態硬碟130運作時所需的操作參數,例如,區塊數目、壞塊(Bad Block)數目、延遲(Latency)時間、輸出入通道總數、是否致能錯誤更正功能等。
儲存單元139可包含多個儲存子單元,每個儲存子單元,各自使用關聯的存取子介面與快閃控制器135進行溝通。一或多個儲存子單元可封裝在一個晶粒(Die)之中。第2圖係依據本發明實施例之存取介面與儲存單元的方塊圖。開放通
道固態硬碟130可包含j+1個存取子介面137_0至137_j,每一個存取子介面連接i+1個儲存子單元。存取子介面及其後連接的儲存子單元又可統稱為輸出入通道,並可以邏輯單元編號識別。換句話說,i+1個儲存子單元共享一個存取子介面。例如,當開放通道固態硬碟130包含4個輸出入(j=3)且每一個輸出入連接4個儲存單元(i=3)時,開放通道固態硬碟130一共擁有16個儲存子單元139_0_0至139_j_i。快閃控制器135可驅動存取子介面137_0至137_j中之一者,從指定的儲存子單元讀取資料。每個儲存子單元擁有獨立的晶片致能(CE)控制訊號。換句話說,當欲對指定的儲存子單元進行資料讀取時,需要驅動關聯的存取子介面來致能此儲存子單元的晶片致能控制訊號。第3圖係依據本發明實施例之一個存取子介面與多個儲存子單元的連接示意圖。快閃控制器135可透過存取子介面137_0使用獨立的晶片致能控制訊號320_0_0至320_0_i從連接的儲存子單元139_0_0至139_0_i中選擇出其中一者,接著,透過共享的資料線310_0從選擇出的儲存子單元的來源位址讀取使用者資料。
第4圖係儲存單元139的示意圖。儲存單元139包含多個資料平面(Data Planes)410_0至410_m、430_0至430_m、450_0至450_m及470_0至470_m,每一資料平面或多個資料平面置於一個邏輯單元編號中。資料平面410_0至410_m及共享的存取子介面稱為輸出入通道410,資料平面430_0至430_m及共享的存取子介面稱為輸出入通道430,資料平面450_0至450_m
及共享的存取子介面稱為輸出入通道450,及資料平面470_0至470_m及共享的存取子介面稱為輸出入通道470,其中,m可為2的次方的整數(例如2、4、8、16、32等),輸出入通道410、430、450及470可使用邏輯單元編號識別。資料平面410_0至470_m中之每一者包含多個實體區塊(Physical Blocks),每個實體區塊包含多個頁面(Pages)P#0至P#(n),每個頁面包含一個以上區段(Sector),例如,4個,其中,n可為767或1023等。每個頁面包含多個NAND記憶體單元(Memory Cells),並且NAND記憶體單元可為單層式單元(Single-Level Cells,SLCs)、多層式單元(Multi-Level Cells,MLCs)、三層式單元(Triple-Level Cells,TLCs)或四層式單元(Quad-Level Cells,QLCs)。於一些實施例中,當每一個NAND記憶體單元為單層式單元而可記錄2個狀態時,資料平面410_0至470_0中的頁面P#0可虛擬形成超頁面(Super Page)490_0,資料平面410_0至470_0中的頁面P#1可虛擬形成超頁面490_1,依此類推。於另一些實施例中,當每一個NAND記憶體單元為多層式單元而可記錄4個狀態時,一個實體字元線可包含頁面P#0(可稱為最低位元頁面,MSB,Most Significant Bit Page)、頁面P#1(可稱為最高位元頁面,LSB,Least Significant Bit Page),依此類推。於更另一些實施例中,當每一個NAND記憶體單元為三層式單元而可記錄8個狀態時,一個實體字元線可包含頁面P#0(可稱為最低位元頁面,MSB Page)、頁面P#1(可稱為中間位元頁面,CSB,Center Significant Bit Page)及頁面P#2(可稱為最高位元頁面,LSB
Page)。當每一個NAND記憶體單元為四層式單元而可記錄16個狀態時,除了MSB、CSB以及LSB頁面之外,更包括TSB(可稱為頂部位元,TSB,Top Significant Bit)頁面。
儲存單元139運作時,頁面為資料寫入或編程的最小單位,大小例如為4KB,此時實體位址可表示為頁面編號;如果頁面包含多個區段,大小例如為16KB,每一區段可儲存4KB的資料時,則區段可為資料管理的最小單位,此時實體位址可表示為頁面的區段編號(Sector Number)或區段在頁面的偏移量(Offset)。另外,一般而言,區塊為資料抹除的最小單位。
實體區塊可依據其使用狀態而區分成主動區塊、資料區塊以及閒置區塊。主動區塊表示正在進行資料寫入的實體區塊,即尚未寫入區塊結束(End of Block)資訊的實體區塊。主動區塊的選取可依據一些參數,例如:最低的抹寫次數或最久的使用者資料寫入時間。當主動區塊已寫滿使用者資料或不再寫入使用者資料時,區塊結束資訊將被寫入主動區塊中,並將主動區塊視為資料區塊。閒置區塊可被選取而成為主動區塊,閒置區塊不儲存任何有效的使用者資料。通常閒置區塊被選取後,需執行抹除動作方可成為主動區塊。
於一些實施例中,主裝置110傳送給開放通道固態硬碟130的實體位址可包含輸出入通道編號、邏輯單元編號、資料平面編號、實體區塊編號、實體頁面編號及區段編號等資訊,用以指出欲讀取或寫入位於特定輸出入通道中的特定資料
平面中的特定實體區塊中的特定實體頁面中的特定區段的使用者資料。於一些實施例中,有時會以行(Column)編號取代區段編號。於另一些實施例中,主裝置110傳送給開放通道固態硬碟130的實體位址可包含邏輯單元編號、資料平面編號及實體區塊編號等資訊,用以指出欲抹除特定輸出入通道中的特定資料平面中的特定資料區塊。
第5圖係命令佇列示意圖。佇列115可包含遞交佇列(Submission Queue)510及完成佇列(Completion Queue)530,分別用以暫存主裝置指令以及完成元件(Completion Element)。遞交佇列510及完成佇列530中之每一者包含多筆項目(Entry)的集合。遞交佇列510中的每一筆項目儲存一個主裝置指令,例如:管理命令(Administration Command),例如,裝置辨認(Device Identification)、參數設定(Parameter Setting)命令、輸出入命令(I/O Command),例如,抹除、讀取、寫入命令等,亦可稱為資料存取命令。
完成佇列530中的每一筆項目儲存關聯至一個管理命令或資料存取命令的完成元件(Completion Element),此完成元件的功能類似確認訊息。集合中的項目依序存放。集合的操作基本原則是由結束位置(或稱為佇列尾,Tail)新增項目(可稱為入列),執行位於開始位置(或稱為佇列頭,Head)的項目(可稱為出列),其中,入列或出列一次的項目總數可大於等於一。第一個新增至遞交佇列510或完成佇列530的命令或訊息,之後,也將會是第一個被替代或更新的。主裝置110可寫入管理
或資料存取命令至遞交佇列510,並且處理單元133從遞交佇列510讀取(或稱為提取Fetch)最早到達的管理或資料存取命令並執行。於管理或資料存取命令執行完成後,處理單元133寫入完成元件至完成佇列530,主裝置110可讀取或提取完成元件而判斷管理或資料存取命令的執行結果。
第6圖係管理命令或資料存取命令的執行步驟的流程圖。主裝置110產生並寫入管理命令或資料存取命令至遞交佇列510(步驟S611)。資料存取命令包含實體位址的資訊,實體位址包括來源位址或目的位址,並且,來源位址或目的位址指向儲存單元139或資料緩衝器120的實體位址,例如:特定的區塊、頁面或區段位址,而非邏輯區塊位址。接著,主裝置110發出遞交門鈴(Submission Doorbell)給處理單元133(步驟S612),用以通知處理單元133關於遞交佇列510中已寫入一個管理命令或資料存取命令的資訊,並更新遞交佇列510的佇列尾的值。於此須注意的是,步驟S611及步驟S612又可稱為主裝置110發出管理命令或資料存取命令給開放通道固態硬碟130。處理單元133接收到遞交門鈴後(步驟S631),從遞交佇列510讀取位於佇列頭的管理命令或資料存取命令(步驟S632),並且依據管理命令或資料存取命令指示快閃控制器135,用以完成指定的作業(例如,裝置辨認、參數設定、抹除、資料讀取、寫入等)(步驟S633)。
於此須注意的是,步驟S631及步驟S632又可稱為開放通道固態硬碟130接收從主裝置110發出的管理命令或資
料存取命令。當指定的作業完成後,處理單元133產生並寫入完成元件至完成佇列530(步驟S634)用以通知主裝置110相應於特定管理命令或資料存取命令的作業的執行狀態資訊,並且發出中斷給主裝置110(步驟S635)。接收中斷後(步驟S613),主裝置110從完成佇列530讀取位於佇列頭的完成元件(步驟S613),接著,發出完成門鈴給處理單元133(步驟S614)。接收完成門鈴後(S636),處理單元133更新完成佇列530的佇列頭的值。於此須注意的是,步驟S634及步驟S635又可稱為開放通道固態硬碟130回覆主裝置110執行管理命令或資料存取命令的結果。於此須注意的是,步驟S613及步驟S614又可稱為主裝置110從開放通道固態硬碟130接收執行管理命令或資料存取命令的結果。
於步驟S612及S614,主裝置110可設定相應寄存器(Registers)來向處理單元133發出遞交門鈴及結束門鈴。
一筆資料存取命令可處理多筆使用者資料,例如:64筆,則完成元件中可包括64個位元長度的執行回覆表,在此執行回覆表中,每個位元分別表示一筆使用者資料的執行結果,例如:”0”表示成功,”1”表示失敗。資料存取命令包含操作碼欄位,用以表示資料存取命令的類型(例如,抹除、讀取、寫入等)。完成元件包含狀態欄位,用以儲存對應的資料存取命令的執行狀態(例如,成功、失敗等)。另外,處理單元133可亂序或依優先權的順序來執行資料存取命令,因此,資料存取命令及完成元件都包含命令識別碼(Command
Identifier),用以讓主裝置110及處理單元133將每一個完成元件關聯至特定資料存取命令。
舉例來說,一個閒置區塊在寫入前需要被抹除以成為主動區塊,主裝置110可寫入抹除命令至遞交佇列510(步驟S611)用以指示開放通道固態硬碟130(詳細來說為處理單元133)針對特定輸出入通道中的特定閒置區塊執行抹除作業。處理單元133因應抹除命令而指示快閃控制器135通過驅動存取介面137以完成於儲存單元139中指定的抹除作業(步驟S633)。當抹除作業完成,處理單元133寫入完成元件至完成佇列530(步驟S634)用以通知主裝置110關於相應抹除作業已經完成的資訊。
又舉例來說,主裝置110可寫入資料讀取命令至遞交佇列510(步驟S611)用以指示開放通道固態硬碟130從特定輸出入通道中的特定資料平面中的特定實體區塊中的特定實體頁面(的特定區段)讀取使用者資料。處理單元133因應資料讀取命令而指示快閃控制器135通過驅動存取介面137從儲存單元139中指定的來源位址讀取使用者資料,並且將使用者資料儲存至資料讀取命令所指定的資料緩衝器120(步驟S633)。當讀取作業完成,處理單元133寫入完成元件至完成佇列530(步驟S634)用以通知主裝置110關於相應資料讀取作業已經完成的資訊。
又舉例來說,主裝置110可儲存欲寫入的使用者資料於資料緩衝器120,並儲存寫入命令至遞交佇列510(步驟
S611)用以指示開放通道固態硬碟130寫入資料緩衝器120的使用者資料至特定主動區塊中的特定實體頁面(的特定區段),其中,寫入命令包含特定實體頁面(的特定區段)的目的位址(實體位址)以及使用者資料的來源位址(實體位址)的資訊。處理單元133因應寫入命令而從資料緩衝器120的來源位址讀取使用者資料,並指示快閃控制器135通過驅動存取介面137將使用者資料編程至儲存單元139中寫入命令所指定的目的位址(步驟S633)。當寫入作業完成,處理單元133寫入完成元件至完成佇列530(步驟S634)用以通知主裝置110關於相應寫入作業已經完成的資訊。
雖然第5圖只顯示二個佇列510及530,但熟習此技藝人士可將遞交佇列510分為管理遞交佇列(Administration Submission Queue)及輸出入遞交佇列(I/O Submission Queue),分別用以暫存來自主裝置110的管理命令及資料存取命令,並且將完成佇列530分為管理完成佇列(Administration Completion Queue)及輸出入完成佇列(I/O Completion Queue),用以分別儲存關聯至管理命令及資料存取命令的完成元件。
隨著區塊的抹除次數的增加,區塊的資料保存(Data Retention)能力會逐漸變弱,這將造成儲存於實體頁面的使用者資料可能包含更多的錯誤位元。由於錯誤更正解碼器會自動檢查並修正使用者資料中的錯誤位元,所以,主裝置110無法知道一個實體頁面的錯誤位元率增加的程度,故無法採取
適當的錯誤預防機制。最後,當錯誤更正解碼器無法修正使用者資料中的錯誤位元時,開放通道固態硬碟130回傳資料讀取錯誤訊息到主裝置110,主裝置110只能啟動進階資料修正機制,例如,使用獨立硬碟冗餘陣列(RAID,Redundant Array of Independent Disks)以修正使用者資料。然而,獨立硬碟冗餘陣列回復的執行會耗費大量主裝置110及開放通道固態硬碟130的運算資源及時間,以及主裝置110與開放通道固態硬碟130間的資料頻寬。為了避免此缺陷,本發明實施例提出一種錯誤預防機制以降低發生資料讀取錯誤的可能性或頻率。
大致上而言,本發明錯誤預防機制先取得開放通道固態硬碟130的操作參數,接著再設定開放通道固態硬碟130的操作參數,其中,操作參數包括錯誤位元閥值,再配合主動錯誤更正失敗處理(Proactive ECC failure handling)方法以達到本發明的目的。
第7圖係本發明取得並設定快閃記憶體的裝置參數方法流程圖。整個流程包含裝置辨認階段(Device Identification Phase)710及參數設定階段(Parameter Setting Phase)730。裝置辨認階段710包括步驟S711~S715。主裝置110寫入裝置辨認(Device Identification)命令至遞交佇列510(步驟S711)。裝置辨認命令用以請求開放通道固態硬碟130(詳細來說為處理單元133)提供操作參數,包括;區塊數目、壞塊數目、延遲時間、輸出入通道總數、是否致能錯誤更正功能、錯誤更正功能的最大能力值(單位為錯誤位元數/資料長度)等,更可包
括錯誤位元閥值(單位為錯誤位元數/資料長度)。開放通道固態硬碟130從遞交佇列510接收裝置辨認命令(步驟S713)。於收到裝置辨認命令後,開放通道固態硬碟130儲存操作參數至裝置辨認命令所指定的記憶體位址,之後,寫入裝置辨認命令所對應的完成元件至完成佇列530(步驟S715)。
參數設定階段(Parameter Setting Phase)730包括步驟S731~S735。主裝置110可對開放通道固態硬碟130所回傳的操作參數進行設定,例如:致能錯誤更正功能,並設定錯誤位元閥值的值,例如:100,其中,錯誤位元閥值小於被致能的錯誤更正功能的最大能力值,例如;120。之後,主裝置110再將上述設定值儲存至參數設定命令,接著主裝置110寫入參數設定命令至遞交佇列510(步驟S731)。開放通道固態硬碟130從遞交佇列510接收到參數設定命令(步驟S733)。當取得參數設定命令後,開放通道固態硬碟130依據參數設定命令的設定值進行操作參數的設定,例如:致能錯誤更正功能且設定錯誤位元閥值為100。當參數設定命令的設定值有效且依此完成操作參數的設定後,開放通道固態硬碟130寫入參數設定命令所對應的完成元件至完成佇列530(步驟S735)。
當錯誤位元閥值完成設定後,主裝置110即可啟動本發明主動錯誤更正失敗處理方法。第8圖係依據本發明實施例由主裝置110執行的主動錯誤更正失敗處理方法的流程圖。主裝置110輸出資料讀取命令至開放通道固態硬碟130(步驟S811),其中,輸出資料讀取命令的方法可參考步驟S611~S612。
接著,開放通道固態硬碟130依據資料讀取命令從指定的來源位址(實體位址)讀取使用者資料(步驟S813),步驟S813的細節可參考步驟S631~S633。在取得使用者資料後,開放通道固態硬碟130的錯誤更正解碼器會自動檢查並修正讀取的使用者資料的錯誤位元,並計算錯誤位元的總數。
接著,開放通道固態硬碟130的快閃控制器135判斷讀取的使用者資料的錯誤位元的總數是否等於或大於錯誤位元閥值(步驟S815)。若是(步驟S815中”是”的路徑),將錯誤位元的總數等於或大於錯誤位元閥值的使用者資料在執行回覆表中所對應的位元設定成”1”(步驟S817)。假設一筆資料讀取命令要求讀取64筆使用者資料,執行回覆表中的每個位元可分別表示一筆使用者資料的錯誤位元的總數是否等於或大於錯誤位元閥值,如果否則值為”0”,即安全值,表示使用者資料仍被安全地儲存,如果是則值為”1”,即不安全值,表示使用者資料的儲存可能存在著風險。
接著,開放通道固態硬碟130將使用者資料儲存至資料讀取命令所指定的目的位址(步驟S819),其中,目的位址較佳為資料緩衝器120的實體位址。接著,開放通道固態硬碟130將完成元件寫入至完成佇列530(步驟S821)。
接著,主裝置110自完成佇列530取得完成元件的執行回覆表(步驟S823),接著,主裝置110判斷執行回覆表中是否有”1”(步驟S825),如果否則結束本發明的執行。
接著,主裝置110重新分配實體位址給執行回覆表
中”1”所對應的使用者資料(步驟S827),其中,重新分配的實體位址置於主動區塊中。
接著,主裝置110輸出資料寫入命令至開放通道固態硬碟130以將執行回覆表中”1”所對應的使用者資料寫入至重新分配後的實體位址(步驟S829),其中,輸出資料寫入命令的方法可參考步驟S611~S612。
第9圖係完成元件的資料格式圖。完成元件900可為16位元組訊息。完成元件900的第3雙字組的第0至1位元組紀錄命令識別碼930,其內容應與主裝置資料讀取命令的命令識別碼一致,用以讓此完成元件900關聯至此主裝置110所發出的資料讀取命令。完成元件900的第0至1雙字組儲存執行回覆表910,共計有64位元,每一位元可記錄一筆使用者資料在步驟S817的執行結果,即一筆使用者資料的錯誤位元的總數是否等於或大於錯誤位元閥值。完成元件1100的第3雙字組的第17至31位元紀錄狀態欄位920,狀態欄位920可表示主裝置110所發出的資料讀取命令是否已成功地執行。
錯誤位元閥值的設定值可使用以下公式:Tr=MAX i x α;Tr代表閥值,MAX i 代表特定錯誤更正能力的最大能力值(單位為錯誤位元數/資料長度),例如120b/1KB,α代表介於0至1之間的係數,可為0.6≦α≦1。例如,α的初始值設為0.8,則錯誤位元閥值的初始設定值為96。當讀取64筆使用者資料,完成元件的狀態欄位顯示成功,且完成元件的執行回覆表中全部為”0”。
隨著抹除次數的增加及儲存單元139的老化,開放通道固態硬碟130所回傳的警告訊息的頻率也將隨之增加。因此,主裝置110可適當地增加α的值,例如,將α的值變更為0.9,即錯誤位元閥值變更為108,以避免不必要的資料搬移作業。例如:讀取64筆使用者資料時,完成元件的狀態欄位顯示成功,但是完成元件的執行回覆表中有32個”1”,即有32筆使用者資料的錯誤位元數的值超過96,此時,主裝置110可將錯誤位元閥值變更為108並儲存至參數設定命令,接著發出參數設定命令至開放通道固態硬碟130,使開放通道固態硬碟130將變更錯誤位元閥值變更為108,即有效地降低執行回覆表中有”1”的數目。之後,主裝置110僅需對”1”的使用者資料重新分配一個實體位址。由於重新分配的實體位址位於主動區塊中,而主動區塊通常具有較低的抹除次數,即具有較佳的資料資料保存,故能有效地克服習知技藝的缺失。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
Claims (16)
- 一種主動錯誤更正失敗處理方法,包含:從一完成佇列取得一完成元件;判斷該完成元件的一執行回覆表是否包括一不安全值,如果是則重新分配一實體位址給該不安全值所對應的一使用者資料;以及輸出一資料寫入命令至一遞交佇列以將該使用者資料寫入至重新分配後的該實體位址。
- 如申請專利範圍第1項所述的主動錯誤更正失敗處理方法,其中,該完成佇列以及該遞交佇列皆位於一主裝置。
- 如申請專利範圍第2項所述的主動錯誤更正失敗處理方法,其中,一開放通道固態硬碟自該遞交佇列取得該資料寫入命令,該開放通道固態硬碟將該完成元件寫入至該完成佇列。
- 如申請專利範圍第3項所述的主動錯誤更正失敗處理方法,其中,該實體位址位於該開放通道固態硬碟。
- 如申請專利範圍第1項所述的主動錯誤更正失敗處理方法,該方法更包括:輸出一資料讀取命令至一開放通道固態硬碟以讀取該使用者資料。
- 如申請專利範圍第1項所述的主動錯誤更正失敗處理方法,該方法更包括:輸出一參數設定命令至一開放通道固態硬碟以設定一錯誤位元閥值。
- 如申請專利範圍第6項所述的主動錯誤更正失敗處理方法,其中,該錯誤位元閥值小於該開放通道固態硬碟的錯誤更正功能的一最大能力值。
- 如申請專利範圍第1項所述的主動錯誤更正失敗處理方法,該方法更包括:輸出一裝置辨認命令至一開放通道固態硬碟以取得該開放通道固態硬碟的至少一操作參數。
- 一種主動錯誤更正失敗處理方法,包含:接收一參數設定命令;依據該參數設定命令而設定一錯誤位元閥值;接收一資料讀取命令;依據該資料讀取命令至一來源位址讀取一使用者資料,如果該使用者資料的一錯誤位元數大於或等於該錯誤位元閥值時,將一執行回覆表中對應至該使用者資料的一位元設定成一不安全值;以及將包括該執行回覆表的一完成元件寫入至一完成佇列。
- 如申請專利範圍第9項所述的主動錯誤更正失敗處理方法,該方法更包括:當執行該資料讀取命令時,如果讀取的該使用者資料的該錯誤位元數小於該錯誤位元閥值時,將該執行回覆表中對應至該使用者資料的該位元設定成一安全值。
- 如申請專利範圍第9項所述的主動錯誤更正失敗處理方法,該方法更包括: 依據該參數設定命令而致能一錯誤更正功能。
- 如申請專利範圍第9項所述的主動錯誤更正失敗處理方法,其中,該參數設定命令以及該資料讀取命令皆由一開放通道固態硬碟所接收。
- 如申請專利範圍第12項所述的主動錯誤更正失敗處理方法,其中,該錯誤位元閥值小於該開放通道固態硬碟的一錯誤更正功能的一最大能力值。
- 如申請專利範圍第12項所述的主動錯誤更正失敗處理方法,其中,該完成佇列以及該遞交佇列皆位於一主裝置。
- 如申請專利範圍第9項所述的主動錯誤更正失敗處理方法,其中,該參數設定命令儲存於一遞交佇列。
- 如申請專利範圍第9項所述的主動錯誤更正失敗處理方法,該方法更包括:將該使用者資料儲存至該資料讀取命令所指定的一目的位址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810668594.1A CN109558266B (zh) | 2017-09-26 | 2018-06-26 | 主动错误更正失败处理方法 |
US16/034,915 US11016841B2 (en) | 2017-09-26 | 2018-07-13 | Methods and apparatuses for proactive ECC failure handling |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762563115P | 2017-09-26 | 2017-09-26 | |
US62/563,115 | 2017-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201915736A TW201915736A (zh) | 2019-04-16 |
TWI670595B true TWI670595B (zh) | 2019-09-01 |
Family
ID=66991784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107109044A TWI670595B (zh) | 2017-09-26 | 2018-03-16 | 主動錯誤更正失敗處理方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI670595B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6744951B1 (ja) * | 2019-05-24 | 2020-08-19 | ウィンボンド エレクトロニクス コーポレーション | 半導体装置および連続読出し方法 |
CN112214157B (zh) * | 2019-07-10 | 2023-11-03 | 慧荣科技股份有限公司 | 主机输出输入命令的执行装置及方法及存储介质 |
US11599481B2 (en) * | 2019-12-12 | 2023-03-07 | Western Digital Technologies, Inc. | Error recovery from submission queue fetching errors |
TWI748507B (zh) * | 2020-06-08 | 2021-12-01 | 瑞昱半導體股份有限公司 | 資料存取系統及操作資料存取系統的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201003657A (en) * | 2008-07-11 | 2010-01-16 | Genesys Logic Inc | Storage device for refreshing data pages of flash memory based on error correction code and method for the same |
TW201506674A (zh) * | 2013-08-01 | 2015-02-16 | Phison Electronics Corp | 指令執行方法、記憶體控制器與記憶體儲存裝置 |
TW201528269A (zh) * | 2014-01-09 | 2015-07-16 | Phison Electronics Corp | 錯誤處理方法、記憶體儲存裝置與記憶體控制電路單元 |
TW201530555A (zh) * | 2014-01-31 | 2015-08-01 | 惠普發展公司有限責任合夥企業 | 記憶體陣列中呈現資料無效之技術 |
TW201707002A (zh) * | 2015-08-11 | 2017-02-16 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
TW201719374A (zh) * | 2015-11-19 | 2017-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
TW201725589A (zh) * | 2016-01-08 | 2017-07-16 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
TW201732551A (zh) * | 2015-12-21 | 2017-09-16 | 英特爾股份有限公司 | 用於載入索引和預提取聚集操作之指令和邏輯 |
-
2018
- 2018-03-16 TW TW107109044A patent/TWI670595B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201003657A (en) * | 2008-07-11 | 2010-01-16 | Genesys Logic Inc | Storage device for refreshing data pages of flash memory based on error correction code and method for the same |
TW201506674A (zh) * | 2013-08-01 | 2015-02-16 | Phison Electronics Corp | 指令執行方法、記憶體控制器與記憶體儲存裝置 |
TW201528269A (zh) * | 2014-01-09 | 2015-07-16 | Phison Electronics Corp | 錯誤處理方法、記憶體儲存裝置與記憶體控制電路單元 |
TW201530555A (zh) * | 2014-01-31 | 2015-08-01 | 惠普發展公司有限責任合夥企業 | 記憶體陣列中呈現資料無效之技術 |
TW201707002A (zh) * | 2015-08-11 | 2017-02-16 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
TW201719374A (zh) * | 2015-11-19 | 2017-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
TW201732551A (zh) * | 2015-12-21 | 2017-09-16 | 英特爾股份有限公司 | 用於載入索引和預提取聚集操作之指令和邏輯 |
TW201725589A (zh) * | 2016-01-08 | 2017-07-16 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW201915736A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542335B (zh) | 快闪存储器的数据内部搬移方法以及使用该方法的装置 | |
TWI670595B (zh) | 主動錯誤更正失敗處理方法 | |
TWI601060B (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI556249B (zh) | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI726475B (zh) | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 | |
CN109558266B (zh) | 主动错误更正失败处理方法 | |
TWI648634B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI656531B (zh) | 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201810282A (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201913382A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW202042068A (zh) | 資料儲存裝置與資料處理方法 | |
TWI591640B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201913383A (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI606333B (zh) | 資料處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI642059B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI678621B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI631460B (zh) | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 | |
US20200244289A1 (en) | Data writing method, memory control circuit unit and memory storage device | |
US10884660B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
TWI554884B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI799031B (zh) | 解碼電路模組、記憶體控制電路單元及記憶體儲存裝置 | |
TWI845275B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI819876B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI834149B (zh) | 表格管理方法、記憶體儲存裝置及記憶體控制電路單元 |