CN113126885A - 数据写入方法、数据读取方法与存储装置 - Google Patents
数据写入方法、数据读取方法与存储装置 Download PDFInfo
- Publication number
- CN113126885A CN113126885A CN202010034731.3A CN202010034731A CN113126885A CN 113126885 A CN113126885 A CN 113126885A CN 202010034731 A CN202010034731 A CN 202010034731A CN 113126885 A CN113126885 A CN 113126885A
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- storage space
- packet
- identity code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 52
- 238000004806 packaging method and process Methods 0.000 claims abstract description 5
- 238000010586 diagram Methods 0.000 description 10
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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 ProgrammableRead-Only Memory,EEPROM)与闪速(flash)存储器为常见的存储器。在实际应用中,EEPROM支持更新指定地址上的数据,而闪速存储器无法实时更新指定地址上的数据。另外,EEPROM的使用寿命通常优于闪速存储器的使用寿命,且EEPROM的成本通常高于闪速存储器。因对应于两种存储器的不同优缺点与数据更新机制,大部分的电子产品会同时使用此两种存储器。
发明内容
在一些实施例中,数据写入方法包含下列操作:依据初始数据的数据类型为该初始数据指派第一身份码;将该第一身份码、该初始数据与校验码封装为新数据包(datapacket);根据该第一身份码判断闪速存储器中的第一存储空间是否已存有与该新数据包相同的第一数据包;以及若该第一存储空间未存有该第一数据包,按照第一地址顺序将该新数据包写入该第一存储空间。
在一些实施例中,数据读取方法包含下列操作:根据闪速存储器所存储的多个计数数据从该闪速存储器中的多个存储空间选择第一存储空间,其中这些计数数据分别存储于这些存储空间中;根据第一身份码读取该第一存储空间中的多个数据包;以及若该些数据包中的至少一个数据包具有该第一身份码,输出该至少一个数据包中最先被读取的数据包为最终数据。
在一些实施例中,存储装置包含闪速存储器与控制器电路。闪速存储器包含第一存储空间。控制器电路,用以:依据初始数据的数据类型为该初始数据指派第一身份码;将该第一身份码、该初始数据与校验码封装为新数据包;根据该第一身份码判断该第一存储空间是否已存有与该新数据包相同的第一数据包;以及若该第一存储空间未存有该第一数据包,按照第一地址顺序将该新数据包写入该第一存储空间。
有关本案的特征、实作与功效,兹配合图式作详细说明如下。
附图说明
图1为根据本案一些实施例示出一种存储装置的示意图;
图2为根据本案一些实施例示出一种数据写入方法的流程图;
图3A至图3D为根据本案一些实施例分别示出图2中多个操作的多个示意图;
图4为根据本案一些实施例示出一种数据读取方法的流程图;以及
图5A至图5B为根据本案一些实施例分别示出图4中多个操作的多个示意图。
具体实施方式
本文所使用的所有词汇具有其通常的含义。上述的词汇在普遍常用的字典中的定义,在本案的内容中包含任一在此讨论的术语的使用例子仅为示例,不应限制本案的范围与含义。同样地,本案亦不仅以在该说明书示出的各种实施例为限。
关于本文中所使用的“耦接”或“连接”,均可指两个或多个组件相互直接作实体接触或电接触,或是相互间接作实体接触或电接触,亦可指两个或多个组件相互操作或动作。如本文所用,术语“电路”可以为由至少一个晶体管与/或至少一个主被动组件按一定方式连接以处理信号的装置。
如本文所用,用语“与/或”包含了列出的关联项中的一个或多个的任何组合。在本文中,使用第一、第二与第三等词汇,是用于描述并区别各个组件。因此,在本文中的第一组件也可被称为第二组件,而不脱离本案的本意。为易于理解,于各图式中的类似组件将被指定为相同标号。
图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的数据类型给初始数据SDI指派身份码ID1。举例而言,若初始数据SDI为第一应用程序的第一配置参数(例如为控制显示面板的对比度的参数),控制器电路120可给初始数据SDI指派身份码ID1。或者,若初始数据SDI为第一应用程序的第二配置参数(例如为控制显示面板的亮度的参数),控制器电路120可给初始数据SDI指派身份码ID2。若初始数据SDI为第二应用程序的第一配置参数,控制器电路120可指派身份码ID3给初始数据SDI。依此类推,若同一配置参数被更新(即接收到新的初始数据SDI),控制器电路120可给新的初始数据SDI指派相同身份码。
控制器电路120进一步对初始数据SDI执行数据校验运算,以产生对应的校验码CC。在一些实施例中,数据校验运算可为(但不限于)循环冗余校验(Cyclic redundancycheck,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仅包含一个身份码为ID1的数据包D11,故控制器电路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:步骤
Claims (10)
1.一种数据写入方法,包含:
依据初始数据的数据类型为所述初始数据指派第一身份码;
将所述第一身份码、所述初始数据与校验码封装为新数据包;
根据所述第一身份码判断闪速存储器中的第一存储空间是否已存有与所述新数据包相同的第一数据包;以及
若所述第一存储空间未存有所述第一数据包,按照第一地址顺序将所述新数据包写入所述第一存储空间。
2.如权利要求1所述的数据写入方法,其中若所述第一存储空间未存有所述第一数据包,按照所述第一地址顺序将所述新数据包写入所述第一存储空间包含:
判断所述第一存储空间的存储容量是否已满;以及
若所述第一存储空间的存储容量未满,按照所述第一地址顺序将所述新数据包写入所述第一存储空间。
3.如权利要求2所述的数据写入方法,其中若所述第一存储空间已满,所述数据写入方法还包含:
按照所述第一地址顺序将所述新数据包写入所述闪速存储器中的第二存储空间;以及
按照第二地址顺序从所述第一存储空间读取多个数据包,以按照所述第一地址顺序将所述多个数据包中的至少一个数据包迁移至所述第二存储空间,其中所述第一地址顺序与所述第二地址顺序相反。
4.如权利要求3所述的数据写入方法,其中按照所述第二地址顺序从所述第一存储空间读取所述多个数据包,以按照所述第一地址顺序将所述多个数据包中的至少一个数据包迁移至所述第二存储空间包含:
若所述多个数据包中的第二数据包的身份码与所述多个数据包中的第三数据包的身份码相同,将所述第二数据包和所述第三数据包中的先被读取的数据包从所述第一存储空间迁移至所述第二存储空间;以及
若所述多个数据包中的第四数据包的身份码是唯一的,将所述第四数据包从所述第一存储空间迁移至所述第二存储空间。
5.如权利要求3所述的数据写入方法,其中所述第一存储空间存储有第一计数数据,所述第二存储空间存储有第二计数数据,所述第一计数数据的数值在所述多个数据包被读取前大于所述第二计数数据的数值,且所述数据写入方法还包含:
在所述多个数据包中的所述至少一个数据包迁移完后,更新所述第二计数数据的数值,以使所述第二计数数据的数值大于所述第一计数数据的数值。
6.一种数据读取方法,包含:
根据闪速存储器所存储的多个计数数据从所述闪速存储器中的多个存储空间选择第一存储空间,其中所述多个计数数据分别存储在所述多个存储空间中;
根据第一身份码读取所述第一存储空间中的多个数据包;以及
若所述多个数据包中的至少一个数据包具有所述第一身份码,输出所述至少一个数据包中最先被读取的数据包为最终数据。
7.如权利要求6所述的数据读取方法,其中根据所述闪速存储器所存储的所述多个计数数据从所述闪速存储器中的多个存储空间选择所述第一存储空间包含:
根据所述多个计数数据中具有极值的第一计数数据选择所述第一存储空间,其中所述第一存储空间存储有所述第一计数数据;
根据所述第一计数数据的校验码确定所述第一计数数据是否正确;以及
若所述第一计数数据正确,开始读取所述第一存储空间中的所述多个数据包。
8.如权利要求6所述的数据读取方法,其中所述多个数据包是按照第一地址顺序写入至所述第一存储空间的,且根据所述第一身份码读取所述第一存储空间中的所述多个数据包包含:
按照第二地址顺序从所述第一存储空间中读取所述多个数据包,其中所述第一地址顺序与所述第二地址顺序相反;以及
搜寻具有所述第一身份码的所述至少一个数据包。
9.如权利要求6所述的数据读取方法,其中所述至少一个数据包包含第一数据包与第二数据包,且输出所述至少一个数据包中最先被读取的数据包为所述最终数据包含:
若所述第二数据包为最先被读取的数据包,根据所述第二数据包的校验码确定所述第二数据包是否正确;
若所述第二数据包正确,输出所述第二数据包为所述最终数据;以及
若所述第二数据包不正确,输出所述第一数据包为所述最终数据。
10.一种存储装置,包含:
闪速存储器,包含第一存储空间;以及
控制器电路,用以:
依据初始数据的数据类型为所述初始数据指派第一身份码;
将所述第一身份码、所述初始数据与校验码封装为新数据包;
根据所述第一身份码判断所述第一存储空间是否已存有与所述新数据包相同的第一数据包;以及
若所述第一存储空间未存有所述第一数据包,按照第一地址顺序将所述新数据包写入所述第一存储空间。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010034731.3A CN113126885A (zh) | 2020-01-14 | 2020-01-14 | 数据写入方法、数据读取方法与存储装置 |
TW109104264A TWI719829B (zh) | 2020-01-14 | 2020-02-11 | 資料寫入方法、資料讀取方法與記憶體裝置 |
US17/120,389 US11403040B2 (en) | 2020-01-14 | 2020-12-14 | Flash memory device that simulates operations of EEPROM and data programming and reading method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010034731.3A CN113126885A (zh) | 2020-01-14 | 2020-01-14 | 数据写入方法、数据读取方法与存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113126885A true CN113126885A (zh) | 2021-07-16 |
Family
ID=75745996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010034731.3A Pending CN113126885A (zh) | 2020-01-14 | 2020-01-14 | 数据写入方法、数据读取方法与存储装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11403040B2 (zh) |
CN (1) | CN113126885A (zh) |
TW (1) | TWI719829B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031174A (en) * | 1988-02-16 | 1991-07-09 | Sumitomo Electric Industries, Ltd. | Node device |
JP2002008379A (ja) * | 2000-06-12 | 2002-01-11 | Shijin Kogyo Sakushinkai | フラッシュメモリの消去回数減少可能なデータアクセス方法と該方法を使用するデータ補修及びアクセス装置 |
CN101923513A (zh) * | 2010-08-11 | 2010-12-22 | 深圳市同洲电子股份有限公司 | 存储器的数据写读方法、系统和flash存储器 |
US8464132B2 (en) * | 2009-09-04 | 2013-06-11 | Silicon Motion Inc. | Method for accessing flash memory and associated memory device |
GB2505225A (en) * | 2012-08-23 | 2014-02-26 | Canon Kk | Retransmission of video packets at time-varying compression levels |
JP2014215628A (ja) * | 2013-04-22 | 2014-11-17 | 株式会社デンソー | データ記憶装置 |
CN104281412A (zh) * | 2013-07-04 | 2015-01-14 | 北京中科同向信息技术有限公司 | 一种在数据存储前去除重复数据的方法 |
US20160197852A1 (en) * | 2013-12-30 | 2016-07-07 | Cavium, Inc. | Protocol independent programmable switch (pips) software defined data center networks |
EP3043522A1 (en) * | 2013-09-26 | 2016-07-13 | Huawei Technologies Co., Ltd. | Data packet processing method and method, device and system for network traffic management |
CN109597587A (zh) * | 2018-12-10 | 2019-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种数据写入方法、介质及非易失性内存 |
CN110045927A (zh) * | 2019-04-16 | 2019-07-23 | 华大半导体有限公司 | 一种使用闪存模拟具有原子操作特性的eeprom的方法 |
US10492207B2 (en) * | 2010-07-29 | 2019-11-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling network traffic via a fixed access |
CN110554842A (zh) * | 2019-09-06 | 2019-12-10 | 华大半导体有限公司 | 一种使用闪存模拟eeprom的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10545697B1 (en) * | 2018-08-29 | 2020-01-28 | Red Hat, Inc. | Reverse order request queueing by para-virtual device drivers |
-
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
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031174A (en) * | 1988-02-16 | 1991-07-09 | Sumitomo Electric Industries, Ltd. | Node device |
JP2002008379A (ja) * | 2000-06-12 | 2002-01-11 | Shijin Kogyo Sakushinkai | フラッシュメモリの消去回数減少可能なデータアクセス方法と該方法を使用するデータ補修及びアクセス装置 |
US8464132B2 (en) * | 2009-09-04 | 2013-06-11 | Silicon Motion Inc. | Method for accessing flash memory and associated memory device |
US10492207B2 (en) * | 2010-07-29 | 2019-11-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling network traffic via a fixed access |
CN101923513A (zh) * | 2010-08-11 | 2010-12-22 | 深圳市同洲电子股份有限公司 | 存储器的数据写读方法、系统和flash存储器 |
GB2505225A (en) * | 2012-08-23 | 2014-02-26 | Canon Kk | Retransmission of video packets at time-varying compression levels |
JP2014215628A (ja) * | 2013-04-22 | 2014-11-17 | 株式会社デンソー | データ記憶装置 |
CN104281412A (zh) * | 2013-07-04 | 2015-01-14 | 北京中科同向信息技术有限公司 | 一种在数据存储前去除重复数据的方法 |
EP3043522A1 (en) * | 2013-09-26 | 2016-07-13 | Huawei Technologies Co., Ltd. | Data packet processing method and method, device and system for network traffic management |
US20160197852A1 (en) * | 2013-12-30 | 2016-07-07 | Cavium, Inc. | Protocol independent programmable switch (pips) software defined data center networks |
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的方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI719829B (zh) | 2021-02-21 |
US11403040B2 (en) | 2022-08-02 |
US20210216247A1 (en) | 2021-07-15 |
TW202127455A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8694855B1 (en) | Error correction code technique for improving read stress endurance | |
US8453021B2 (en) | Wear leveling in solid-state device | |
KR100531192B1 (ko) | 비휘발성 메모리의 제어방법 | |
KR101029938B1 (ko) | 플래시 메모리 시스템 개시 동작 | |
JP4768771B2 (ja) | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 | |
CN106158038B (zh) | 从非易失性存储器读取数据的方法 | |
US7093063B2 (en) | Data rewriting for flash memory | |
KR20030011230A (ko) | 비휘발성 기억 장치 및 그의 재기입 제어 방법 | |
CN109426441B (zh) | 数据储存装置以及其操作方法 | |
WO2010067347A1 (en) | Continuous address space in non-volatile-memories (nvm) using efficient management methods for array deficiencies | |
CN111433748A (zh) | 多级寻址 | |
EP2135251B1 (en) | Flash memory refresh techniques triggered by controlled scrub data reads | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
US9396769B1 (en) | Memory device and operating method of same | |
CN113126885A (zh) | 数据写入方法、数据读取方法与存储装置 | |
US6646917B1 (en) | Storage device managing nonvolatile memory by converting logical address to physical address of nonvolatile memory | |
US8762623B2 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
JP2006500653A (ja) | パーシスタントメモリに書き込む際のエラーを検出する方法および装置 | |
CN111124742A (zh) | Flash数据校验方法及Flash控制器、存储介质、设备 | |
JP6348400B2 (ja) | 半導体記憶装置 | |
KR20230086832A (ko) | Eeprom을 에뮬레이팅하는 전자 장치 및 그 작동 방법 | |
JPH1186578A (ja) | エラープログラミングされたメモリセルの識別方法 | |
JP2014115959A (ja) | Icカード、データ消去処理方法、及びデータ消去処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |