TW202127455A - 資料寫入方法、資料讀取方法與記憶體裝置 - Google Patents
資料寫入方法、資料讀取方法與記憶體裝置 Download PDFInfo
- Publication number
- TW202127455A TW202127455A TW109104264A TW109104264A TW202127455A TW 202127455 A TW202127455 A TW 202127455A TW 109104264 A TW109104264 A TW 109104264A TW 109104264 A TW109104264 A TW 109104264A TW 202127455 A TW202127455 A TW 202127455A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- storage space
- data packet
- packet
- count
- Prior art date
Links
Images
Classifications
-
- 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/0608—Saving storage space on storage systems
-
- 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
- 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/0614—Improving the reliability of storage systems
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0658—Controller construction arrangements
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
資料寫入方法包含下列操作:依據一初始資料的一資料類型指派一第一身分碼至該初始資料;封裝該第一身分碼、該初始資料與一校驗碼為一新資料包;根據該第一身分碼判斷一快閃式記憶體中之一第一儲存空間是否已存有相同於該新資料包的一第一資料包;以及若該第一儲存空間未存有該第一資料包,按照一第一位址順序寫入該新資料包至該第一儲存空間。
Description
本案是關於記憶體裝置,更明確地說,是關於可模擬電子抹除式可複寫記憶體的快閃式記憶裝置與其資料存取方法。
在現有技術中,電子抹除式可複寫記憶體(Electrically-Erasable Programmable Read-Only Memory, EEPROM)與快閃式(flash)記憶體為常見的記憶體。在實際應用中,EEPROM支持在指定的位址上更新資料,而快閃式記憶無法即時更新指定位址上的資料。另外,EEPROM的使用壽命通常優於快閃式記憶體的使用壽命,且EEPROM的成本通常高於快閃式記憶體。因應於兩種記憶體的不同優缺點與資料更新機制,大部分的電子產品會同時使用此兩種記憶體。
於一些實施例中,資料寫入方法包含下列操作:依據一初始資料的一資料類型指派一第一身分碼至該初始資料;封裝該第一身分碼、該初始資料與一校驗碼為一新資料包(data packet);根據該第一身分碼判斷一快閃式記憶體中之一第一儲存空間是否已存有相同於該新資料包的一第一資料包;以及若該第一儲存空間未存有該第一資料包,按照一第一位址順序寫入該新資料包至該第一儲存空間。
於一些實施例中,資料讀取方法包含下列操作:根據一快閃式記憶體所儲存的複數個計數資料自該快閃式記憶體中的複數個儲存空間選出一第一儲存空間,其中該些計數資料分別儲存於該些儲存空間;根據一第一身分碼讀取該第一儲存空間的複數個資料包;以及若該些資料包中的至少一資料包具有該第一身分碼,輸出該至少一資料包中最先被讀取的一者為一最終資料。
於一些實施例中,記憶體裝置包含快閃式記憶體與控制器電路。快閃式記憶體包含一第一儲存空間。控制器電路,用以:依據一初始資料的一資料類型指派一第一身分碼至該初始資料;封裝該第一身分碼、該初始資料與一校驗碼為一新資料包;根據該第一身分碼判斷該第一儲存空間是否已存有相同於該新資料包的一第一資料包;以及若該第一儲存空間未存有該第一資料包,按照一第一位址順序寫入該新資料包至該第一儲存空間。
有關本案的特徵、實作與功效,茲配合圖式作詳細說明如下。
本文所使用的所有詞彙具有其通常的意涵。上述之詞彙在普遍常用之字典中之定義,在本案的內容中包含任一於此討論的詞彙之使用例子僅為示例,不應限制到本案之範圍與意涵。同樣地,本案亦不僅以於此說明書所示出的各種實施例為限。
關於本文中所使用之『耦接』或『連接』,均可指二或多個元件相互直接作實體或電性接觸,或是相互間接作實體或電性接觸,亦可指二或多個元件相互操作或動作。如本文所用,用語『電路』可為由至少一個電晶體與/或至少一個主被動元件按一定方式連接以處理訊號的裝置。
如本文所用,用語『與/或』包含了列出的關聯項目中的一個或多個的任何組合。在本文中,使用第一、第二與第三等等之詞彙,是用於描述並辨別各個元件。因此,在本文中的第一元件也可被稱為第二元件,而不脫離本案的本意。為易於理解,於各圖式中的類似元件將被指定為相同標號。
圖1為根據本案一些實施例示出一種記憶體裝置100的示意圖。記憶體裝置100包含控制器電路120以及快閃式記憶體140。控制器電路120耦接至快閃式記憶體140,以控制快閃式記憶體140的資料存取。響應於寫入指令CPR
,控制器電路120可將初始資料SDI封裝為新資料包DA,並寫入新資料包DA至快閃式記憶體140。響應於讀取指令CRE
,控制器電路120可將一對應的資料包(data packet)自快閃式記憶體140讀出,並將該資料包輸出為最終資料SDF。關於資料存取的操作將於後說明。於一些實施例中,控制器電路120可由具運算能力的數位處理電路或微控制器電路實施,以執行後圖2或圖4的多個操作。
於一些實施例中,基於控制器電路120的控制,快閃式記憶體140可模擬電子抹除式可複寫記憶體(Electrically-Erasable Programmable Read-Only Memory, EEPROM)之操作。如此一來,在實際應用中,記憶體裝置100可替換EEPROM,以具有較佳的使用壽命與較低的製造成本。
快閃式記憶體140包含多個記憶體庫(bank)142,且每一記憶體庫142包含多個扇區(sector)144。舉例來說,每一個記憶體庫142的容量可為65536個位元組(bytes),每一扇區144的容量可為4096個位元組。第1個記憶體庫142對應的位址自000000H至010000H,並具有16個扇區144。第2個記憶體庫142對應的位址自010000H至020000H,並具有16個扇區144。上述數值用於示例,且本案並不以此為限。
於一些實施例中,在寫入資料至快閃式記憶體140前,控制器電路120抹除(erase)快閃式記憶體140的一個儲存空間。於一些實施例中,前述的儲存空間可為一個扇區144。於一些實施例中,前述的儲存空間可為一個記憶體庫142。為易於說明,後述各實施例將以儲存空間為一個扇區144為例說明,但本案並不以此為限。
圖2為根據本案一些實施例示出一種資料寫入方法200的流程圖。於一些實施例中,資料寫入方法200可由圖1之控制器電路120執行。於操作S201,根據初始資料的資料類型指派一身分碼給初始資料。於操作S202,封裝該身分碼、初始資料以及校驗碼為新資料包。
參照圖3A,圖3A為根據本案一些實施例示出圖2之操作S202的示意圖。控制器電路120依據初始資料SDI的資料類型指派身分碼ID1給初始資料SDI。舉例而言,若初始資料SDI為第一應用程式之第一配置參數(例如為控制顯示面板之對比度的參數),控制器電路120可指派身分碼ID1給初始資料SDI。或者,若初始資料SDI為第一應用程式之第二配置參數(例如為控制顯示面板之亮度的參數),控制器電路120可指派身分碼ID2給初始資料SDI。若初始資料SDI為第二應用程式之第一配置參數,控制器電路120可指派身分碼ID3給初始資料SDI。依此類推,若同一配置參數被更新(即接收到新的初始資料SDI),控制器電路120可指派相同身分碼至新的初始資料SDI。
控制器電路120更對初始資料SDI執行資料校驗運算,以產生對應的校驗碼CC。於一些實施例中,資料校驗運算可為(但不限於)循環冗餘校驗(Cyclic redundancy check, CRC)運算。校驗碼CC可用來校驗初始資料SDI是否有正確被寫入快閃式記憶體140。
若每個扇區144的容量為4096個位元組且每個資料包DA的資料長度為16個位元組,每個扇區144可儲存256個資料包DA。控制器電路120可將身分碼ID1指派至第1個位元組,將初始資料SDI的資料值依序指派至第2~15個位元組,並將校驗碼CC指派至第16個位元組。如此,當接收到初始資料SDI時,控制器電路120可藉由上述操作將身分碼ID1、初始資料SDI與校驗碼CC封裝為新資料包DA。
繼續參照圖2,於操作S203,判斷目前使用的扇區是否已存在相同的資料包。若已存在相同的資料包,則不寫入新資料包。反之,若未存在新的資料包,則執行操作S204。
參照圖3B,圖3B為根據本案一些實施例示出圖2之操作S203的示意圖。扇區144儲存有多個資料包D11、D21與D31,且新資料包DA為欲寫入至扇區144的新資料包DA。控制器電路120可讀取多個資料包D11、D21與D31,並將新資料包DA的身份碼ID1與扇區144的多個資料包D11、D21與D31中每一者的身份碼進行比較,以自多個資料包D11、D21與D31中選出至少一資料包,其中被選出的至少一資料包的身份碼相同於新資料包DA的身份碼ID1。接著,控制器電路120確認選出的至少一資料包的資料是否相同於新資料包,以確認扇區144是否已存在相同的資料包。在上述的比較操作中,若多個資料包D11、D21與D31中無相應的身份碼,扇區144不存在相同的資料包。
舉例來說,控制器電路120可將身分碼ID1與多個資料包D11、D21與D31的第1個位元組(即身份碼)比較。由於資料包D31的身份碼ID5不為身分碼ID1,控制器電路120繼續比較身份碼ID1與資料包D21的身份碼ID3。由於資料包D21的身份碼ID3不為身分碼ID1,控制器電路120繼續比較身份碼ID1與資料包D11的身份碼ID1。由於資料包D11的身份碼ID1相同於新資料包DA的身份碼ID1,控制器電路120接著依序比較資料包D11的第2至第16個位元組與新資料包DA的第2至第16個位元組。若全部位元組皆為相同,如圖3B所示,控制器電路120確認資料包D11相同於新資料包DA。於此條件下,控制器電路120確認扇區144已存有相同於新資料包DA的資料包D11,故不寫入新資料包DA至扇區144。或者,若有一個位元組為相異的,控制器電路120確認資料包D11不同於新資料包DA。於此條件下,控制器電路120確認扇區144未存有相同於新資料包DA的資料包,故將新資料包DA寫入至扇區144。藉由設置身分碼,快閃式記憶體140可對具有同一身份碼的資料包內的資料進行更新。如此,控制器電路120可利用快閃式記憶體140執行上述操作,以模擬EEPROM在指定位址上更新資料之操作。
繼續參照圖2,於操作S204,判斷目前使用的扇區的儲存容量是否已滿。若儲存容量未滿,則執行操作S205。反之,若儲存容量已滿,則執行操作S206。於操作S205,按照第一位址順序寫入新資料包至目前使用的扇區。於操作S206,按照第一位址順序寫入新資料包至另一扇區。
參照圖3C,圖3C為根據本案一些實施例示出圖2之操作S205的示意圖。若扇區144的資料容量未滿,控制器電路120按照位址順序SQ1將新資料包DA寫入至扇區144。位址順序SQ1為由前面位址(1)至後面位址(256)。
參照圖3D,圖3D為根據本案一些實施例示出圖2之操作S206的示意圖。於一些實施例中,每一扇區144儲存有一個計數資料DC,其包含數值D1與校驗碼D2。數值D1指示對應的扇區144是否為有效扇區。校驗碼D2用於驗證數值D1有正確被寫入扇區144。於一些實施例中,控制器電路120讀取各個扇區144的計數資料DC,並選擇具有數值D1為極值的扇區144。換言之,控制器電路120優先使用具有最大(或最小)數值D1的扇區144進行操作。例如,第1個扇區144(後稱扇區144A)的數值D1為N,且第2個扇區144(後稱扇區144B)的數值D1為N-1。由於N大於N-1,控制器電路120使用扇區144A進行寫入。
於此例中,由於扇區144A的儲存容量已滿,控制器電路120接續選擇扇區144B進行寫入。控制器電路120先抹除扇區144B,以按照位址順序SQ1將新資料包DA寫入至扇區144B。接著,控制器電路120按照位址順序SQ2讀取扇區144A中的資料包,並按照位址順序SQ1將扇區144A中的多個資料包中至少一者(所述多個資料包的至少一者將於後續段落中說明)搬移至扇區144B。位址順序SQ2相反於位址順序SQ1,其中位址順序SQ2為由後面位址(256)至前面位址(1)。
在扇區144A中,若有2個或更多的資料包具有相同身分碼,控制器電路120將自扇區144A搬移這些資料包中先被讀取者至扇區144B。舉例來說,在扇區144A中,資料包D21與資料包D22皆具有身分碼ID3。按照位址順序SQ2,資料包D21先被讀取。因此,控制器電路120將資料包D21搬移至扇區144B。按照位址順序SQ1,資料包D21為後寫入的新資料包。因此,控制器電路120依照上述操作可將較新的資料包保留至扇區144B。同理,在扇區144A中,資料包D31與資料包D32皆具有身分碼ID1。由於資料包D31先被讀取,控制器電路120將資料包D31搬移至扇區144B。由於寫入資料的位址順序SQ1相反於讀取資料的位址順序SQ2,控制器電路120可將具有同身分碼的新資料包搬移至扇區144B,並捨棄舊的資料包。
在扇區144A中,若有資料包的身分碼是唯一的,控制器電路120將自扇區144A搬移此資料包至扇區144B。舉例來說,在扇區144A中,只有資料包D11具有身分碼ID4。因此,控制器電路120將資料包D11搬移至扇區144B。
於一些實施例中,在進行資料搬移操作前,控制器電路120根據該些資料包的校驗碼CC確認欲搬移的資料包是否為正確。在資料包為正確的條件下,控制器電路120搬移該資料包至另一扇區。於一些實施例中,在確認資料搬移的操作完成後,控制器電路120更新扇區144B的計數資料DC,以將扇區144B的數值D1更新為大於扇區144A的數值D1。例如,如圖3D所示,扇區144B的數值D1被更新為N+1。如此一來,在下次讀取或寫入操作時,控制器電路120使用具有最大數值N+1的扇區144B。若資料搬移的操作失敗,經抹除後的扇區144B未被寫入新的計數資料DC。如此,控制器電路120無法讀取扇區144B。於此條件下,於下次讀取操作時,控制器電路120仍先讀取扇區144A。若又有其他新資料包DA欲被寫入,控制器電路120會重新執行圖3C之操作。於一些實施例中,在確認資料搬移的操作完成後,控制器電路120更抹除扇區144A,以釋放出扇區144A的儲存空間。
藉由上述方式,控制器電路120可將新資料包DA寫入快閃式記憶體140於一新位址上的儲存空間(於上述例子中為一扇區144),並在需更換儲存空間時才進行抹除的操作。如此一來,可大幅降低快閃式記憶體140的抹除次數,以提高快閃式記憶體140的使用壽命。
圖3D的例子是將數值D1的極值設定成最大值為例,但本案並不以此為限。於其他實施例中,亦可將數值D1的極值設定成最小值,且相關調整數值之操作可相應調整。
圖4為根據本案一些實施例示出一種資料讀取方法400的流程圖。於一些實施例中,資料讀取方法400可由圖1的控制器電路120執行。於操作S401,根據快閃式記憶體所儲存的多個計數資料自多個扇區選出一扇區。
操作S401包含多個步驟4-1、4-2、4-3以及4-4。於步驟4-1,根據多個計數資料中具有極值的計數資料選出一扇區。於步驟4-2,根據校驗碼確認計數資料是否為正確。若計數資料為正確,執行操作S402。反之,若計數資料有誤,執行步驟4-3。於步驟4-3,根據該些計數資料中具有次一數值的計數資料選出次一扇區,並重新執行步驟4-2。若全部扇區的計數資料皆有誤,控制器電路120結束讀取操作(步驟4-4)。
參照圖5A,圖5A為根據本案一些實施例示出圖4的操作S401之示意圖。於此例中,快閃式記憶體140包含扇區144A與扇區144B,且極值設定為最大值。控制器電路120讀取扇區144A的計數資料DC以及扇區144B的計數資料DC。由於扇區144A的計數資料DC之數值D1較高,控制器電路120選出扇區144A。接著,控制器電路120根據扇區144A的計數資料DC之校驗碼D2確認計數資料DC是否為正確。若扇區144A的計數資料DC為正確的,控制器電路120使用扇區144A進行資料讀取操作。
若扇區144A的計數資料DC為不正確的,控制器電路120改選擇扇區144B。接著,控制器電路120根據扇區144B的計數資料DC之校驗碼D2確認扇區144B的計數資料DC是否為正確。若扇區144B的計數資料DC為正確的,控制器電路120使用扇區144B進行資料讀取操作。若扇區144B的計數資料DC不正確,控制器電路120選擇次一扇區,並重新執行上述操作。若全部扇區144的計數資料DC都不正確,控制器電路120結束讀取操作。
繼續參照圖4,於操作S402,根據第一身分碼讀取選出的扇區內的多個資料包,以選出具有第一身分碼的一資料包。於操作S403,根據所選出的資料包之校驗碼確認該資料包是否正確。若資料包為正確,執行操作S404。若資料包不正確,執行操作S405。於操作S404,將所選出的資料包輸出為最終資料。於操作S405,選出具有第一身分碼的另一資料包,並再次執行操作S403。若所有具有第一身分碼的資料包皆不正確,控制器電路120結束讀取。於此條件下,控制器電路120判定讀取操作未成功,並結束讀取操作。
參照圖5B,圖5B為根據本案一些實施例示出圖4的操作S402至S405之示意圖。響應於讀取指令CRE
,控制器電路120按照第二位址順序SQ2讀取選出的扇區(例如為扇區144A)中的資料,其中讀取指令CRE
指示欲讀取具有身分碼ID1的資料包。於第一情況下,扇區144A僅包含一個資料包D11的身份碼為ID1,故控制器電路120根據資料包D11的校驗碼CC確認資料包D11是否正確。若資料包D11正確,控制器電路120輸出資料包D11為最終資料SDF。反之,若資料包D11有誤,控制器電路120判定快閃式記憶體140未存有讀取指令CRE
欲讀取的資料。
於第二情況下,扇區144A包含兩個具有身分碼為ID1的資料包D11與D12。由於資料包D11為先被讀取的資料包,控制器電路120根據資料包D11的校驗碼CC確認資料包D11是否正確。若資料包D11正確,控制器電路120輸出資料包D11為最終資料SDF。反之,若資料包D11有誤,控制器電路120接著根據資料包D12的校驗碼CC確認資料包D12是否正確。若資料包D12正確,控制器電路120輸出資料包D12為最終資料SDF。若資料包D12有誤,控制器電路120判定快閃式記憶體140未存有讀取指令CRE
欲讀取的資料。
綜上所述,本案一些實施例所提供的記憶體裝置與其資料寫入/讀取方法可使用快閃式記憶體來模擬EEPROM之操作。如此一來,在使用成本與使用壽命之間的取捨可以達到較佳的平衡。
雖然本案之實施例如上所述,然而該些實施例並非用來限定本案,本技術領域具有通常知識者可依據本案之明示或隱含之內容對本案之技術特徵施以變化,凡此種變化均可能屬於本案所尋求之專利保護範疇,換言之,本案之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100:記憶體裝置
120:控制器電路
140:快閃式記憶體
142:記憶體庫
144:扇區
CPR
:寫入指令
CRE
:讀取指令
DA:新資料包
SDF:最終資料
SDI:初始資料
000000H,010000H,020000H:位址
200:資料寫入方法
S201,S202,S203,S204,S205,S206:操作
CC:校驗碼
ID1,ID3,ID4,ID5:身分碼
SQ1,SQ2:位址順序
144A,144B:扇區
D11,D21,D22,D31,D32:資料包
DC:計數資料
D1:數值
D2:校驗碼
400:資料讀取方法
S401,S402,S403,S404,S405,S406:操作
4-1,4-2,4-3,4-4:步驟
[圖1]為根據本案一些實施例示出一種記憶體裝置的示意圖;
[圖2]為根據本案一些實施例示出一種資料寫入方法的流程圖;
[圖3A至圖3D]為根據本案一些實施例分別示出圖2中多個操作的多個示意圖;
[圖4]為根據本案一些實施例示出一種資料讀取方法的流程圖;以及
[圖5A至圖5B]為根據本案一些實施例分別示出圖4中多個操作的多個示意圖。
200:資料寫入方法
S201,S202,S203,S204,S205,S206:操作
Claims (10)
- 一種資料寫入方法,包含: 依據一初始資料的一資料類型指派一第一身分碼至該初始資料; 封裝該第一身分碼、該初始資料與一校驗碼為一新資料包(data packet); 根據該第一身分碼判斷一快閃式記憶體中之一第一儲存空間是否已存有相同於該新資料包的一第一資料包;以及 若該第一儲存空間未存有該第一資料包,按照一第一位址順序寫入該新資料包至該第一儲存空間。
- 如申請專利範圍第1項所述之資料寫入方法,其中若該第一儲存空間未存有該第一資料包,按照該第一位址順序寫入該新資料包至該第一儲存空間包含: 判斷該第一儲存空間的儲存容量是否已滿;以及 若該第一儲存空間的儲存容量未滿,按照該第一位址順序寫入該新資料包至該第一儲存空間。
- 如申請專利範圍第2項所述之資料寫入方法,其中若該第一儲存空間已滿,該資料寫入方法更包含: 按照該第一位址順序寫入該新資料包至該快閃式記憶體中之一第二儲存空間;以及 按照一第二位址順序自該第一儲存空間讀取複數個資料包,以按照該第一位址順序將該些資料包中至少一者搬移至該第二儲存空間,其中該第一位址順序相反於該第二位址順序。
- 如申請專利範圍第3項所述之資料寫入方法,其中按照該第二位址順序自該第一儲存空間讀取該些資料包,以按照該第一位址順序將該些資料包中至少一者搬移至該第二儲存空間包含: 若該些資料包中之一第二資料包的一身份碼相同於該些資料包中之一第三資料包的一身份碼,自該第一儲存空間搬移該第二資料包與該第三資料包中先被讀取者至該第二儲存空間;以及 若該些資料包中之一第四資料包的一身份碼為唯一的,自該第一儲存空間搬移該第四資料包至該第二儲存空間。
- 如申請專利範圍第3項所述之資料寫入方法,其中該第一儲存空間儲存有一第一計數資料,該第二儲存空間儲存有一第二計數資料,該第一計數資料的數值在該些資料包被讀取前為大於該第二計數資料的數值,且該資料寫入方法更包含: 在該些資料包中的該至少一者搬移完後,更新該第二計數資料的數值,以使該第二計數資料的數值大於該第一計數資料的數值。
- 一種資料讀取方法,包含: 根據一快閃式記憶體所儲存的複數個計數資料自該快閃式記憶體中的複數個儲存空間選出一第一儲存空間,其中該些計數資料分別儲存於該些儲存空間; 根據一第一身分碼讀取該第一儲存空間的複數個資料包;以及 若該些資料包中的至少一資料包具有該第一身分碼,輸出該至少一資料包中最先被讀取的一者為一最終資料。
- 如申請專利範圍第6項所述之資料讀取方法,其中根據該快閃式記憶體所儲存的該些計數資料自該快閃式記憶體中的複數個儲存空間選出該第一儲存空間包含: 根據該些計數資料中具有一極值的一第一計數資料選出該第一儲存空間,其中該第一儲存空間儲存有該第一計數資料; 根據該第一計數資料的一校驗碼確認該第一計數資料是否正確;以及 若該第一計數資料正確,開始讀取該第一儲存空間的該些資料包。
- 如申請專利範圍第6項所述之資料讀取方法,其中該些資料包為按照一第一位址順序寫入至該第一儲存空間,且根據該第一身分碼讀取該第一儲存空間的該些資料包包含: 按照一第二位址順序自該第一儲存空間讀取該些資料包,其中該第一位址順序相反於該第二位址順序;以及 搜尋具有該第一身分碼的該至少一資料包。
- 如申請專利範圍第6項所述之資料讀取方法,其中若該至少一資料包包含一第一資料包與一第二資料包,且輸出該至少一資料包中最先被讀取的該者為該最終資料包含: 若該第二資料包為最先被讀取的該者,根據該第二資料包的一校驗碼確認該第二資料包是否為正確; 若該第二資料包正確,輸出該第二資料包為該最終資料;以及 若該第二資料包不正確,輸出該第一資料包為該最終資料。
- 一種記憶體裝置,包含: 一快閃式記憶體,包含一第一儲存空間;以及 一控制器電路,用以: 依據一初始資料的一資料類型指派一第一身分碼至該初始資料; 封裝該第一身分碼、該初始資料與一校驗碼為一新資料包; 根據該第一身分碼判斷該第一儲存空間是否已存有相同於該新資料包的一第一資料包;以及 若該第一儲存空間未存有該第一資料包,按照一第一位址順序寫入該新資 料包至該第一儲存空間。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010034731.3 | 2020-01-14 | ||
CN202010034731.3A CN113126885A (zh) | 2020-01-14 | 2020-01-14 | 数据写入方法、数据读取方法与存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI719829B TWI719829B (zh) | 2021-02-21 |
TW202127455A true TW202127455A (zh) | 2021-07-16 |
Family
ID=75745996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109104264A TWI719829B (zh) | 2020-01-14 | 2020-02-11 | 資料寫入方法、資料讀取方法與記憶體裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11403040B2 (zh) |
CN (1) | CN113126885A (zh) |
TW (1) | TWI719829B (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01208934A (ja) * | 1988-02-16 | 1989-08-22 | Sumitomo Electric Ind Ltd | ノード装置 |
JP2002008379A (ja) * | 2000-06-12 | 2002-01-11 | Shijin Kogyo Sakushinkai | フラッシュメモリの消去回数減少可能なデータアクセス方法と該方法を使用するデータ補修及びアクセス装置 |
TWI433157B (zh) * | 2009-09-04 | 2014-04-01 | Silicon Motion Inc | 存取快閃記憶體的方法以及相關之記憶裝置 |
US10492207B2 (en) * | 2010-07-29 | 2019-11-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling network traffic via a fixed access |
CN101923513B (zh) * | 2010-08-11 | 2012-08-22 | 深圳市同洲电子股份有限公司 | 存储器的数据写读方法、系统和flash存储器 |
GB2505225B (en) * | 2012-08-23 | 2014-12-03 | Canon Kk | Method of communicating video data over a communication network, associated devices and system |
JP6028670B2 (ja) * | 2013-04-22 | 2016-11-16 | 株式会社デンソー | データ記憶装置 |
CN104281412A (zh) * | 2013-07-04 | 2015-01-14 | 北京中科同向信息技术有限公司 | 一种在数据存储前去除重复数据的方法 |
CN103532878B (zh) * | 2013-09-26 | 2017-01-04 | 华为技术有限公司 | 数据包的处理方法和网络流量的管理方法及装置和系统 |
US9825884B2 (en) * | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US10545697B1 (en) * | 2018-08-29 | 2020-01-28 | Red Hat, Inc. | Reverse order request queueing by para-virtual device drivers |
CN109597587A (zh) * | 2018-12-10 | 2019-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种数据写入方法、介质及非易失性内存 |
CN110045927A (zh) * | 2019-04-16 | 2019-07-23 | 华大半导体有限公司 | 一种使用闪存模拟具有原子操作特性的eeprom的方法 |
CN110554842A (zh) * | 2019-09-06 | 2019-12-10 | 华大半导体有限公司 | 一种使用闪存模拟eeprom的方法 |
-
2020
- 2020-01-14 CN CN202010034731.3A patent/CN113126885A/zh active Pending
- 2020-02-11 TW TW109104264A patent/TWI719829B/zh active
- 2020-12-14 US US17/120,389 patent/US11403040B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI719829B (zh) | 2021-02-21 |
US20210216247A1 (en) | 2021-07-15 |
US11403040B2 (en) | 2022-08-02 |
CN113126885A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4933268B2 (ja) | フラッシュメモリシステムの起動動作 | |
US8259498B2 (en) | Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies | |
JP5984989B2 (ja) | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 | |
KR100531192B1 (ko) | 비휘발성 메모리의 제어방법 | |
US7039775B2 (en) | Non-volatile storage device and rewrite control method thereof | |
US7526599B2 (en) | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system | |
KR101556870B1 (ko) | 솔리드 스테이트 드라이브 내의 메모리 장치로의 논리 주소의 적응적 매핑 | |
US8694855B1 (en) | Error correction code technique for improving read stress endurance | |
US7477547B2 (en) | Flash memory refresh techniques triggered by controlled scrub data reads | |
US9703698B2 (en) | Data writing method, memory controller and memory storage apparatus | |
WO2001061703A2 (en) | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks | |
WO2010067347A1 (en) | Continuous address space in non-volatile-memories (nvm) using efficient management methods for array deficiencies | |
KR101468432B1 (ko) | 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 | |
US7543104B2 (en) | Non-volatile semiconductor device for use in memory card and memory system | |
US7747927B2 (en) | Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system | |
TW201729100A (zh) | 記憶體裝置及其資料存取方法 | |
US9312013B1 (en) | Configuration method of erase operation, memory controlling circuit unit and memory storage device | |
CN113127085A (zh) | 从nand媒体快速引导的固态存储装置 | |
TWI719829B (zh) | 資料寫入方法、資料讀取方法與記憶體裝置 | |
US9396769B1 (en) | Memory device and operating method of same | |
US20100306455A1 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
KR101398403B1 (ko) | 레거시 호스트들을 위한 방법 및 메모리 시스템 | |
JP3670151B2 (ja) | フラッシュメモリのアクセス方法、フラッシュメモリへアクセスするドライバを備えるシステム、および、フラッシュメモリ | |
JP6118045B2 (ja) | 半導体記憶装置 | |
CN118098309A (zh) | 提高nor flash配置模块数据准确率的方法、装置、存储介质及存储设备 |