TWI646546B - 資料儲存裝置以及記憶體讀取方法 - Google Patents
資料儲存裝置以及記憶體讀取方法 Download PDFInfo
- Publication number
- TWI646546B TWI646546B TW106127272A TW106127272A TWI646546B TW I646546 B TWI646546 B TW I646546B TW 106127272 A TW106127272 A TW 106127272A TW 106127272 A TW106127272 A TW 106127272A TW I646546 B TWI646546 B TW I646546B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- flash memory
- queue
- external
- identification code
- Prior art date
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 title claims description 22
- 230000004044 response Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種資料儲存裝置接收主機所發送之外部指令,包括:複數快閃記憶體空間以及控制晶片。控制晶片接收外部指令並佇列於第一指令佇列,並將上述外部指令轉譯為複數操作指令且依序執行操作指令以分別操作快閃記憶體空間。控制晶片更將識別碼給予操作指令之至少一特定操作指令,用以追蹤至少一特定操作指令之執行結果。
Description
本發明係有關於一種快閃式資料儲存裝置及其讀取方法,特別係有關於能夠並列執行錯誤更正處理之快閃式資料儲存裝置及其讀取方法。
由於快閃式記憶體進行讀取操作的時候皆需要進行錯誤更正解碼(ECC decode)之動作,而錯誤更正解碼所需花費的時間取決於錯誤更正解碼器的頻寬與效率。往往在執行到讀取直接記憶體存取(read DMA)的指令時,都需要等待錯誤更正解碼器的結果來判斷錯誤更正是否成功。
由於錯誤更正解碼器係由多個通道所共用,當多個通道同時共用錯誤解碼器的時候,會產生一段很長的延遲時間。因此,我們有必要針對快閃式記憶體的讀取流程進行最佳化。
有鑑於此,本發明提出一種資料儲存裝置,接收一主機所發送之一外部指令,包括:複數快閃記憶體空間以及一控制晶片。上述控制晶片接收上述外部指令並佇列於一第一指令佇列,其中上述控制晶片將上述外部指令轉譯為複數操作
指令,其中上述控制晶片依序執行上述操作指令以分別操作上述快閃記憶體空間,其中上述控制晶片更將一識別碼給予上述操作指令之至少一特定操作指令,用以追蹤上述至少一特定操作指令之一執行結果。
根據本發明之一實施例,上述控制晶片包括:一輸入/輸出控制器以及一中央處理單元。上述輸入/輸出控制器透過一輸入/輸出介面接收上述外部指令。上述中央處理單元將接收之上述外部指令佇列於一內部指令佇列,並依順序以及優先權將上述內部指令佇列之上述外部指令傳送至上述第一指令佇列。
根據本發明之一實施例,上述控制晶片更包括:一快閃記憶體控制器。上述快閃記憶體控制器包括上述第一指令佇列以及一第二指令佇列,其中上述快閃記憶體控制器將上述第一指令佇列之上述外部指令轉譯為上述操作指令,並將上述操作指令佇列於上述第二指令佇列。
根據本發明之一實施例,上述快閃記憶體控制器將上述識別碼給予上述至少一特定操作指令,其中當上述快閃記憶體控制器執行上述至少一特定操作指令時,上述快閃記憶體控制器同時輸出上述識別碼以及上述至少一特定操作指令至一ECC編/解碼器,其中上述ECC編/解碼器根據上述至少一特定操作指令產生上述處理結果以及處理資料。
根據本發明之一實施例,上述ECC編/解碼器更將上述處理結果以及上述處理資料與上述識別碼建立關聯性,其
中上述快閃記憶體控制器週期性地根據上述識別碼存取上述執行結果,並判斷上述執行結果是否成功,其中當上述快閃記憶體控制器判斷上述執行結果為不成功時,上述快閃記憶體控制器執行一資料回覆程序。
本發明更提出一種記憶體讀取方法,適用於複數快閃記憶體空間,包括:接收一主機發送之一外部指令;將上述外部指令轉譯為複數操作指令;將一識別碼給予上述操作指令之至少一特定操作指令;依序執行上述操作指令以分別操作上述快閃記憶體空間;以及根據上述識別碼,追蹤上述至少一特定操作指令之一執行結果。
根據本發明之一實施例,記憶體讀取方法更包括:將接收之上述外部指令佇列於一第一指令佇列;將上述第一指令佇列之上述外部指令轉譯為上述操作指令;將上述操作指令佇列於一第二佇列;以及當執行上述至少一特定操作指令時,同時輸出上述識別碼以及上述至少一特定操作指令。
根據本發明之一實施例,記憶體讀取方法更包括:週期性地根據上述識別碼存取上述至少一特定操作指令之一執行結果;以及判斷上述執行結果是否成功。
根據本發明之一實施例,記憶體讀取方法更包括:當判斷上述執行結果為成功時,將上述外部指令對應之上述操作指令自上述第二指令佇列移除;以及當判斷上述執行結果為不成功時,執行一資料回覆程序。
100‧‧‧資料儲存裝置
110‧‧‧控制晶片
10‧‧‧主機
111‧‧‧輸入/輸出介面
112‧‧‧輸入/輸出控制器
113‧‧‧中央處理單元
114‧‧‧快閃記憶體控制器
115‧‧‧DRAM控制器
CQ#1‧‧‧第一指令佇列
CQ#2‧‧‧第二指令佇列
DRAM‧‧‧動態隨機存取記憶體
Flash#1‧‧‧第一快閃記憶體空間
Flash#2‧‧‧第二快閃記憶體空間
Flash#3‧‧‧第三快閃記憶體空間
Flash#4‧‧‧第四快閃記憶體空間
NVMe#0‧‧‧外部指令
CMD#0~CMD#4‧‧‧讀取指令
SP#0~SP#4‧‧‧狀態輪詢指令
DO#0~DO#4‧‧‧資料輸出指令
ID#0、ID#1‧‧‧識別碼
S302~S316‧‧‧步驟流程
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置之方塊圖;第2圖係顯示根據本發明之一實施例所述之操作指令執行時程之示意圖;第3圖係顯示根據本發明之一實施例所述之操作指令執行方法之流程圖;以及第4圖係顯示根據本發明之另一實施例所述之操作指令執行時程之示意圖。
以下說明為本發明的實施例。其目的是要舉例說明本發明一般性的原則,不應視為本發明之限制,本發明之範圍當以申請專利範圍所界定者為準。
值得注意的是,以下所揭露的內容可提供多個用以實踐本發明之不同特點的實施例或範例。以下所述之特殊的元件範例與安排僅用以簡單扼要地闡述本發明之精神,並非用以限定本發明之範圍。此外,以下說明書可能在多個範例中重複使用相同的元件符號或文字。然而,重複使用的目的僅為了提供簡化並清楚的說明,並非用以限定多個以下所討論之實施例以及/或配置之間的關係。此外,以下說明書所述之一個特徵連接至、耦接至以及/或形成於另一特徵之上等的描述,實際可包含多個不同的實施例,包括該等特徵直接接觸,或者包含其它額外的特徵形成於該等特徵之間等等,使得該等特徵並非直接接觸。
第1圖係顯示根據本發明之一種實施方式所實現
的資料儲存裝置之方塊圖,其中採用快閃記憶體(Flash Memory)作為儲存媒體。為了方便說明,第1圖僅圖解單一通道藉晶片致動信號(Chip Enable Signals)交錯操作的複數個快閃記憶體空間,在此以第一快閃記憶體空間Flash#1、第二快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3與第四快閃記憶體空間Flash#4作為說明解釋。第一快閃記憶體空間Flash#1、第二快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3與第四快閃記憶體空間Flash#4可為不同的晶粒(Dies),也可為不同的邏輯單元(LUN)。當通道大於一時,可複製第1圖的架構以及適當的調整,即可滿足使用者的需求。
第1圖更圖解資料儲存裝置100的控制晶片110,可依據主機10的外部指令(例如:NVMe指令)而操作第一快閃記憶體空間Flash#1、第二快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3與第四快閃記憶體空間Flash#4。資料儲存裝置可使用動態隨機存取記憶體(Dynamic Random Access Memory,)DRAM作為資料緩衝器以加速資料的存取,但DRAM為非必要元件。控制晶片110包括輸入/輸出介面111、輸入/輸出控制器112、中央處理單元113、快閃記憶體控制器114以及DRAM控制器115。輸入/輸出控制器112透過輸入/輸出介面111,接收主機10所發出之外部指令。中央處理單元113可將輸入/輸出控制器112所接收外部指令佇列至內部指令佇列CQ#0(圖中並未顯示),再依序或依優先權設定而將外部指令傳送至快閃記憶體控制器114。內部指令佇列CQ#0較佳可由建立
於控制晶片110內建的靜態記憶體(Static Random Access Memory)SRAM中,亦可透過DRAM控制器115建立於DRAM。
快閃記憶體控制器114較佳建立第一指令佇列CQ#1以及第二指令佇列CQ#2於控制晶片110所內建的SRAM中,第一指令佇列CQ#1可用以佇列外部指令,第二指令佇列CQ#2可用以佇列由外部指令轉譯後的快閃記憶體操作指令(以下簡稱操作指令),再依據操作指令對第一快閃記憶體空間Flash#1、第二快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3與第四快閃記憶體空間Flash#4進行操作。另外,中央處理單元113與快閃記憶體控制器114較佳整合於同一晶片中,亦可分別獨立存在(即,不同的晶片)。
控制晶片110更包括ECC編/解碼器,其中,ECC編碼器可依據資料而產生同位碼(Parity Code,PC),之後,ECC解碼器可依據此同位碼而對資料進行錯誤更正。如果資料不含任何錯誤位元或錯誤位元的總數不超過一門檻值,則ECC解碼器可依據同位碼而更正資料中的錯誤位元,並回傳更正成功之訊息,反之,則回傳更正失敗之訊息。快閃記憶體控制器114可將資料以及同位碼儲存至第一快閃記憶體空間Flash#1、第二快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3或第四快閃記憶體空間Flash#4之任一者,其中,資料以及同位碼較佳儲存於快閃記憶體空間的同一資料儲存空間,例如,同一資料頁;資料以及同位碼可相鄰地儲存,亦可分開地儲存。
以資料讀取為例,由於ECC編/解碼器所佔用的電
路面積龐大,因此,在資料讀取過程中,通常是將來自數個快閃記憶體空間,例如:第一快閃記憶體空間Flash#1和第一快閃記憶體空間Flash#2,的資料以及同位碼傳輸至一個ECC編/解碼器,或是將來自所有快閃記憶體空間,例如:第一快閃記憶體空間Flash#1、第一快閃記憶體空間Flash#2、第三快閃記憶體空間Flash#3與第四快閃記憶體空間Flash#4,的資料以及同位碼傳輸至一個ECC編/解碼器,由上述可知,ECC編/解碼器的編/解碼能力將決定資料儲存裝置的存取效能。另外,由於ECC編/解碼器執行編/解碼所需的時間較長,所以成為資料儲存裝置系統效能的瓶頸。因此,如何有效率地執行操作指令或減少資料編/解碼所需的時間成為一個重要的技術課題。
第2圖係顯示根據本發明之一實施例所述之操作指令執行的示意圖。以資料讀取為例,如第2圖所示,外部指令NVMe#0轉譯成三個操作指令,分別為讀取指令CMD#0,狀態輪詢指令(Status Polling)SP#0以及資料輸出指令(Data Output)DO#0。另外,外部指令與操作指令可為一對一對應,應可一對多對應,例如,讀取指令CMD#0~1,狀態輪詢指令ST#0~1以及資料輸出指令DO#0~1皆對應至外部指令NVMe#0。
資料輸出指令DO#0可將快閃記憶體空間的資料及同位碼傳送至ECC編/解碼器。另外,快閃記憶體空間與ECC編/解碼器之間的資料傳輸較佳透過DMA方式,以加速快閃記憶體空間與ECC編/解碼器之間的資料傳輸速度,亦可降低資料傳輸對中央處理單元113或快閃記憶體控制器114的負載。
資料輸出指令DO的執行時間更包括ECC編/解碼器的執行時間。由於ECC編/解碼器進行資料更正需要一段時間,且有可能發生更正失敗的事件,因此,執行資料輸出指令DO#0後,除了需等待資料和同位碼從快閃記憶體空間傳送至ECC編/解碼器所需的時間之外,快閃記憶體控制器114更需等待ECC編/解碼器回傳資料更正的執行結果。如果執行結果為更正成功,則快閃記憶體控制器114可執行下一個操作指令,例如:讀取指令CMD#1;如果執行結果為更正失敗,則快閃記憶體控制器114啟動資料回復(recovery)程序,藉由重新設定快閃記憶體空間的操作條件,並重新執行讀取指令CMD#0、狀態輪詢指令ST#0以及資料輸出指令DO#0,直到執行結果為更正成功為止。
第3圖係顯示根據本發明之一實施例所述之操作指令執行方法之流程圖,適用於以非揮發性記憶體作為儲存媒體的資料儲存裝置。步驟S302:接收並佇列外部指令。中央處理單元113接收來自主機10的外部指令,並將外部指令佇列至內部指令佇列CQ#0。快閃記憶體控制器114接收來自中央處理單元113的外部指令,並將外部指令佇列至第一指令佇列CQ#1。
步驟S304:產生對應外部指令之複數操作指令。快閃記憶體控制器114依序將佇列於第一指令佇列CQ#1的外部指令轉譯成複數個操作指令,例如:將外部指令轉譯成讀取指令CMD#0、狀態輪詢指令ST#0以及資料輸出指令DO#0,並
將這些操作指令佇列至第二指令佇列CQ#2,再伺機依序執行這些操作指令。
步驟S306:給予其中之一複數操作指令一個識別碼,此識別碼可用以追踪特定操作指令的執行結果,例如,快閃記憶體控制器114將識別碼ID#0給予資料輸出指令DO#0,將識別碼ID#1給予資料輸出指令DO#1。另外,快閃記憶體控制器114也可以給予複數操作指令一個識別碼,而非特定操作指令一個識別碼,例如,給予讀取指令CMD#0、狀態輪詢指令ST#0以及資料輸出指令DO#0識別碼ID#0;給予讀取指令CMD#1,狀態輪詢指令ST#1以及資料輸出指令DO#1識別碼ID#1。
第4圖係顯示根據本發明之另一實施例所述之操作指令執行時程之示意圖。如第4圖所示,識別碼ID#0係給予資料輸出指令DO#0,識別碼ID#1係給予資料輸出指令DO#1。
步驟S308:依序執行複數操作指令。如圖4所示,快閃記憶體控制器114依序執行讀取指令CMD#0、狀態輪詢指令ST#0、資料輸出指令DO#0、讀取指令CMD#1、狀態輪詢指令ST#1、資料輸出指令DO#1等等。
步驟S310:輸出識別碼。快閃記憶體控制器114於執行特定操作指令時,同時或跟著輸出識別碼。例如,執行資料輸出指令DO#0時,同時或跟著輸出識別碼ID#0至ECC編/解碼器,執行資料輸出指令DO#1時,同時或跟著輸出識別碼ID#1至ECC編/解碼器。換句話說,ECC編/解碼器除了收到來自於快閃記憶體空間Flash的資料及同位碼外,更收到並記錄來自於
快閃記憶體控制器114的識別碼,並將資料與識別碼建立關連。在執行完步驟S310之後,快閃記憶體控制器114可重新執行步驟S308,無需等待ECC編/解碼器回傳執行結束。由於無需等待ECC編/解碼器的執行結束,下一個操作指令就能直接執行,加速操作指令的執行速度,達到本發明的目的。如第4圖所示,執行資料輸出指令DO#0及執行資料輸出指令DO#1所佔用的時間明顯地縮短。
步驟S312:依據識別碼存取執行結果。ECC編/解碼器完成資料解密之後,便將資料、執行結果與識別碼建立關連,並儲存至SRAM中。快閃記憶體控制器114可週期性地或依據其他設定來檢查SRAM所儲存的資料,並依據識別碼來找尋資料輸出指令DO的執行結果。
步驟S314:判斷執行結果是否成功。假設SRAM中有一筆資料DT#0、執行結果表示更正成功且識別碼為ID#0,則快閃記憶體控制器114判定資料輸出指令DO#0的執行結果為更正成功,可結束本發明的流程;或者,重新執行步驟S302;更甚者,可將讀取指令CMD#0、狀態輪詢指令ST#0以及資料輸出指令DO#0自第二指令佇列CQ#2中移除,使第二指令佇列CQ#2可以容納其他操作指令。
假設SRAM中有一筆資料DT#1、執行結果表示更正失敗且識別碼為ID#1,則快閃記憶體控制器114判定資料輸出指令DO#1的執行結果為更正失敗,則執行步驟S316:執行資料回復程序,試著再更正資料DT#1。由於資料回復程序為習知
技藝,故不多作說明。
以上所述為實施例的概述特徵。所屬技術領域中具有通常知識者應可以輕而易舉地利用本發明為基礎設計或調整以實行相同的目的和/或達成此處介紹的實施例的相同優點。所屬技術領域中具有通常知識者也應了解相同的配置不應背離本創作的精神與範圍,在不背離本創作的精神與範圍下他們可做出各種改變、取代和交替。說明性的方法僅表示示範性的步驟,但這些步驟並不一定要以所表示的順序執行。可另外加入、取代、改變順序和/或消除步驟以視情況而作調整,並與所揭露的實施例精神和範圍一致。
Claims (9)
- 一種資料儲存裝置,接收一主機所發送之一外部指令,包括:複數快閃記憶體空間;以及一控制晶片,接收上述外部指令並佇列於一第一指令佇列,其中上述控制晶片將上述外部指令轉譯為複數操作指令,其中上述控制晶片依序執行上述操作指令以分別操作上述快閃記憶體空間,其中上述控制晶片更將一識別碼給予上述操作指令之至少一特定操作指令,用以追蹤上述至少一特定操作指令之一執行結果。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述控制晶片包括:一輸入/輸出控制器,透過一輸入/輸出介面接收上述外部指令;以及一中央處理單元,將接收之上述外部指令佇列於一內部指令佇列,並依順序以及優先權將上述內部指令佇列之上述外部指令傳送至上述第一指令佇列。
- 如申請專利範圍第2項所述之資料儲存裝置,其中上述控制晶片更包括:一快閃記憶體控制器,包括上述第一指令佇列以及一第二指令佇列,其中上述快閃記憶體控制器將上述第一指令佇列之上述外部指令轉譯為上述操作指令,並將上述操作指令佇列於上述第二指令佇列。
- 如申請專利範圍第3項所述之資料儲存裝置,其中上述快閃記憶體控制器將上述識別碼給予上述至少一特定操作指令,其中當上述快閃記憶體控制器執行上述至少一特定操作指令時,上述快閃記憶體控制器同時輸出上述識別碼以及上述至少一特定操作指令至一ECC編/解碼器,其中上述ECC編/解碼器根據上述至少一特定操作指令產生上述處理結果以及處理資料。
- 如申請專利範圍第4項所述之資料儲存裝置,其中上述ECC編/解碼器更將上述處理結果以及上述處理資料與上述識別碼建立關聯性,其中上述快閃記憶體控制器週期性地根據上述識別碼存取上述執行結果,並判斷上述執行結果是否成功,其中當上述快閃記憶體控制器判斷上述執行結果為不成功時,上述快閃記憶體控制器執行一資料回覆程序。
- 一種記憶體讀取方法,適用於複數快閃記憶體空間,包括:接收一主機發送之一外部指令;將上述外部指令轉譯為複數操作指令;將一識別碼給予上述操作指令之至少一特定操作指令;依序執行上述操作指令以分別操作上述快閃記憶體空間;以及根據上述識別碼,追蹤上述至少一特定操作指令之一執行結果。
- 如申請專利範圍第6項所述之記憶體讀取方法,更包括:將接收之上述外部指令佇列於一第一指令佇列;將上述第一指令佇列之上述外部指令轉譯為上述操作指令;將上述操作指令佇列於一第二佇列;以及當執行上述至少一特定操作指令時,同時輸出上述識別碼以及上述至少一特定操作指令。
- 如申請專利範圍第7項所述之記憶體讀取方法,更包括:週期性地根據上述識別碼存取上述至少一特定操作指令之一執行結果;以及判斷上述執行結果是否成功。
- 如申請專利範圍第8項所述之記憶體讀取方法,更包括:當判斷上述執行結果為成功時,將上述外部指令對應之上述操作指令自上述第二指令佇列移除;以及當判斷上述執行結果為不成功時,執行一資料回覆程序指令隊列;以及當判斷上述第二資料執行上述錯誤更正處理失敗時,將上述第二讀取指令再次堆疊於上述快閃指令隊列。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106127272A TWI646546B (zh) | 2017-08-11 | 2017-08-11 | 資料儲存裝置以及記憶體讀取方法 |
CN201810048616.4A CN109390026B (zh) | 2017-08-11 | 2018-01-18 | 资料储存装置以及读取方法 |
US15/922,669 US20190050167A1 (en) | 2017-08-11 | 2018-03-15 | Flash Storage Devices Executing ECC in Parallel and Methods Thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106127272A TWI646546B (zh) | 2017-08-11 | 2017-08-11 | 資料儲存裝置以及記憶體讀取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI646546B true TWI646546B (zh) | 2019-01-01 |
TW201911327A TW201911327A (zh) | 2019-03-16 |
Family
ID=65274962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106127272A TWI646546B (zh) | 2017-08-11 | 2017-08-11 | 資料儲存裝置以及記憶體讀取方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190050167A1 (zh) |
CN (1) | CN109390026B (zh) |
TW (1) | TWI646546B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI742565B (zh) * | 2019-06-06 | 2021-10-11 | 旺宏電子股份有限公司 | 記憶體裝置、電子裝置以及與其相關的讀取方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131383A1 (en) * | 2006-08-22 | 2011-06-02 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
US8112693B2 (en) * | 2007-05-02 | 2012-02-07 | Samsung Electronics Co., Ltd. | Error control code apparatuses and methods of using the same |
US8310880B2 (en) * | 2010-03-05 | 2012-11-13 | 248 Solid State, Inc. | Virtual channel support in a nonvolatile memory controller |
US20160147664A1 (en) * | 2014-11-21 | 2016-05-26 | International Business Machines Corporation | Dynamic partial blocking of a cache ecc bypass |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4821372B2 (ja) * | 2006-03-03 | 2011-11-24 | 富士ゼロックス株式会社 | 画像読み取り装置 |
US8321627B1 (en) * | 2011-10-06 | 2012-11-27 | Google Inc. | Memory operation command latency management |
TWI497515B (zh) * | 2012-07-10 | 2015-08-21 | Silicon Motion Inc | 快閃記憶體控制器、快閃記憶體偵錯方法 |
TWI514389B (zh) * | 2012-09-03 | 2015-12-21 | Silicon Motion Inc | 快閃記憶體控制器和快閃記憶體控制方法 |
US10133627B2 (en) * | 2015-12-11 | 2018-11-20 | SK Hynix Inc. | Memory device controller with mirrored command and operating method thereof |
-
2017
- 2017-08-11 TW TW106127272A patent/TWI646546B/zh active
-
2018
- 2018-01-18 CN CN201810048616.4A patent/CN109390026B/zh active Active
- 2018-03-15 US US15/922,669 patent/US20190050167A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131383A1 (en) * | 2006-08-22 | 2011-06-02 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
US8112693B2 (en) * | 2007-05-02 | 2012-02-07 | Samsung Electronics Co., Ltd. | Error control code apparatuses and methods of using the same |
US8310880B2 (en) * | 2010-03-05 | 2012-11-13 | 248 Solid State, Inc. | Virtual channel support in a nonvolatile memory controller |
US20160147664A1 (en) * | 2014-11-21 | 2016-05-26 | International Business Machines Corporation | Dynamic partial blocking of a cache ecc bypass |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI742565B (zh) * | 2019-06-06 | 2021-10-11 | 旺宏電子股份有限公司 | 記憶體裝置、電子裝置以及與其相關的讀取方法 |
US11182302B2 (en) | 2019-06-06 | 2021-11-23 | Macronix International Co., Ltd. | Memory device, electronic device, and associated read method |
Also Published As
Publication number | Publication date |
---|---|
US20190050167A1 (en) | 2019-02-14 |
TW201911327A (zh) | 2019-03-16 |
CN109390026B (zh) | 2021-10-19 |
CN109390026A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914700B2 (en) | Data processing method, apparatus and system | |
US10108372B2 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
US9411405B2 (en) | Method for reducing power consumption in solid-state storage device | |
US20190384700A1 (en) | Methods and apparatuses for requesting ready status information from a memory | |
JP5032027B2 (ja) | 半導体ディスク制御装置 | |
JP5107880B2 (ja) | データ転送処理装置及び方法 | |
TW202042050A (zh) | 利用自我調整寫緩衝區釋放的存儲介質編程 | |
EP2727115B1 (en) | Rank-specific cyclic redundancy check | |
US10983874B2 (en) | Processing a recover state input/output request | |
US9304952B2 (en) | Memory control device, storage device, and memory control method | |
WO2015035536A1 (zh) | 在基于闪存的存储***中构建raid的方法及*** | |
US8713410B2 (en) | Data storage apparatus, memory control apparatus and method for controlling flash memories | |
US11245420B2 (en) | Apparatus and method for recovering a data error in a memory system | |
US8359425B2 (en) | Memory control device, memory device, and shutdown control method | |
US11837277B2 (en) | Dual slc/qlc programming and resource releasing | |
TWI646546B (zh) | 資料儲存裝置以及記憶體讀取方法 | |
KR20200052842A (ko) | 메모리 시스템, 메모리 모듈 및 메모리 시스템의 동작 방법 | |
US20120017116A1 (en) | Memory control device, memory device, and memory control method | |
TWI564809B (zh) | 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置 | |
US20140095824A1 (en) | Semiconductor device and operating method thereof | |
KR102686057B1 (ko) | 반도체장치 및 반도체시스템 | |
US8862965B1 (en) | Decoding failure management | |
US11336296B2 (en) | Controller and memory system having the controller | |
TWI592938B (zh) | 於控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置 | |
KR20230028097A (ko) | 메모리, 메모리 시스템 및 메모리 시스템의 동작 방법 |