CN107797755A - 固态硬盘***的原子写入方法以及使用该方法的装置 - Google Patents
固态硬盘***的原子写入方法以及使用该方法的装置 Download PDFInfo
- Publication number
- CN107797755A CN107797755A CN201610801521.6A CN201610801521A CN107797755A CN 107797755 A CN107797755 A CN 107797755A CN 201610801521 A CN201610801521 A CN 201610801521A CN 107797755 A CN107797755 A CN 107797755A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- data
- area
- buffer
- atom
- 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.)
- Granted
Links
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0656—Data buffering arrangements
-
- 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
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明的实施例提出一种固态硬盘***的原子写入方法,由处理单元执行,包含以下步骤。接收原子写入命令,指示写入少于一个页面长度的数据至储存单元。判断上述数据将触发缓存器中的跨页面储存时,填充虚拟数据至缓存器中的第一区域的所有可用子区域,以及储存上述数据至缓存器中的第二区域。成功储存上述数据至缓存器中的第二区域后,更新安全指标用以指向上述数据所储存的第二区域的最后一个子区域的结束地址。
Description
【技术领域】
本发明关连于一种快闪存储器装置,特别是一种固态硬盘***的原子写入方法以及使用该方法的装置。
【背景技术】
快闪存储器装置通常分为NOR快闪装置与NAND快闪装置。NOR快闪装置为随机存取装置,而可于地址脚位上提供任何的地址,用以存取NOR快闪装置的主装置(host),并及时地由NOR快闪装置的数据脚位上获得储存于该地址上的数据。相反地,NAND快闪装置并非随机存取,而是序列存取。NAND快闪装置无法像NOR快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列的比特组(bytes)的值到NAND快闪装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(在快闪存储器中的一个写入操作的最小数据块)或一个区块(在快闪存储器中的一个抹除操作的最小数据块)。实际上,NAND快闪装置通常从存储器单元(memory cells)上读取或写入完整的数页数据。当一整页的数据从阵列读取到装置中的缓存器(buffer)后,借由使用提取信号(strobe signal)顺序地敲出(clock out)内容,让主单元可逐比特组或字元组(words)存取数据。
原子写入是应用在储存***的重要规格,例如,数据库***。数据库***在数据完整(data integrity)上需要满足原子性(atomicity)、一致性(consistency)、隔离性(isolation)及持续性(durability)的要求,简称为ACID。即使是遭遇到掉电(power loss)的非预期事件,数据库的原子性都要确保每次更新是全部成功或者全部失败。为满足数据库***,固态硬盘***的数据写入也需要符合原子性的要求。因此,本发明提出一种固态硬盘***的原子写入方法以及使用该方法的装置,用以满足数据库的原子性。
【发明内容】
本发明的实施例提出一种固态硬盘***的原子写入方法,由处理单元执行,包含以下步骤。接收原子写入命令,指示写入少于一个页面长度的数据至储存单元。判断上述数据将触发缓存器中的跨页面储存时,填充虚拟数据至缓存器中的第一区域的所有可用子区域,以及储存上述数据至缓存器中的第二区域。成功储存上述数据至缓存器中的第二区域后,更新安全指标用以指向上述数据所储存的第二区域的最后一个子区域的结束地址。
本发明的实施例提出一种固态硬盘***的原子写入装置,包含缓存控制器及处理单元。缓存控制器通过存取接口耦接至储存单元。处理单元从主装置接收原子写入命令,指示写入少于一个页面长度的数据至储存单元。处理单元判断上述数据将触发缓存器中的跨页面储存时,驱动缓存控制器填充虚拟数据至缓存器中的第一区域的所有可用子区域,驱动缓存控制器储存上述数据至缓存器中的第二区域。成功储存上述数据至缓存器中的第二区域后,缓存控制器更新安全指标,用以指向上述数据所储存的第二区域的最后一个子区域的结束地址。
【附图说明】
图1是依据本发明实施例的快闪存储器的***架构示意图。
图2是依据本发明实施例的存取接口与储存单元的方块图。
图3是依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。
图4是依据本发明实施例的缓存器示意图。
图5是依据本发明实施例的固态硬盘***的原子写入方法流程图。
图6是依据本发明实施例的缓存器中的暂存数据示意图。
图7A至7D是依据本发明实施例的掉电处理示意图。
【符号说明】
10 ***;
110 处理单元;
120 数据分配器;
130 缓存控制器;
140 掉电处理电路;
150 存取接口;
160 主装置;
170 存取接口;
CTRL 控制信号;
CMD1、…、CMD5 命令;
DAT1、DAT2 数据;
170_0~170_j 存取子接口;
180 储存单元;
180_0_0、…、180_j_i 储存子单元;
320_0_0、…、320_0_i 芯片致能控制信号;
400 缓存器;
400_0_0、…、400_0_i 缓存器中的区域;
S510~S589 方法步骤;
610、640、660 原子写入的数据;
620、650a、650b 非原子写入的数据;
630 虚拟数据;
Ps 安全指标。
【具体实施方式】
以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、操作处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作处理、元件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1是依据本发明实施例的快闪存储器的***架构示意图。快闪存储器的***架构10中包含处理单元110,用以写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。详细来说,处理单元110通过存取接口170写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。处理单元110可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器或其他具运算能力的处理器),并且于载入及执行特定指令或软件时实施如下所述的功能。处理单元110可包含运算逻辑单元(ALU,Arithmetic and Logic Unit)以及位移器(bitshifter)。运算逻辑单元负责执行布林运算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等),而位移器负责位移运算及比特旋转。***架构10使用数个电子信号来协调处理单元110与储存单元180间的数据与命令传递,包含数据线(data line)、时脉信号(clock signal)与控制信号(control signal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chip enable,CE)、地址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、写入致能(write enable,WE)等控制信号。存取接口170可采用双倍数据率(double data rate,DDR)通信协定与储存单元180沟通,例如,开放NAND快闪(open NAND flash interface,ONFI)、双倍数据率开关(DDR toggle)或其他接口。处理单元110另可使用存取接口150通过指定通信协定与主装置160进行沟通,例如,通用序列总线(universal serial bus,USB)、先进技术附着(advanced technologyattachment,ATA)、序列先进技术附着(serial advanced technology attachment,SATA)、快速周边元件互联(peripheral component interconnect express,PCI-E)或其他接口。
储存单元180可包含多个储存子单元,每一个储存子单元实施于一个管芯(die)上,各自使用关联的存取子接口与处理单元110进行沟通。图2是依据本发明实施例的存取接口与储存单元的方块图。快闪存储器10可包含j+1个存取子接口170_0至170_j,存取子接口又可称为通道(channel),每一个存取子接口连接i+1个储存子单元。换句话说,i+1个储存子单元共享一个存取子接口。例如,当快闪存储器10包含4个通道(j=3)且每一个通道连接4个储存单元(i=3)时,快闪存储器10一共拥有16个储存单元180_0_0至180_j_i。处理单元110可驱动存取子接口170_0至170_j中其中之一,写入数据至指定的储存子单元。每个储存子单元拥有独立的芯片致能(CE,Chip Enable)控制信号。换句话说,当欲对指定的储存子单元进行数据写入时,需要驱动关联的存取子接口致能此储存子单元的芯片致能控制信号。图3是依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。处理单元110可通过存取子接口170_0使用独立的芯片致能控制信号320_0_0至320_0_i来从连接的储存子单元180_0_0至180_0_i中选择出其中一者,接着,通过共享的数据线310_0写入数据至选择出的储存子单元的指定位置。
处理单元110可使用二个模式中其中之一驱动存取接口170写入数据,一为直接写入(direct write),另一为缓存写入(buffered write)。当主装置160发出的写入命令(write command,CMD1)指示写入超过一个页面长度的数据时,处理单元110进入直接写入模式。假设一个页面的长度为16K比特组(bytes):当处理单元110判断主装置160发出的写入命令CMD1指示写入超过16K比特组的数据时,使用直接写入模式来写入数据。于此须注意的是,如果写入数据的长度不为页面长度的倍数时(例如nxp的数据,其中n代表页面数量,p代表一个页面的数据长度),不足的部分以虚拟数据(dummy data)填充。详细来说,于直接写入模式中,处理单元110发出控制信号CTRL指示数据分配器(data dispatcher)120将数据DAT1直接传送至存取接口170,并且发出命令CMD3驱动存取接口170把数据DAT1写入至储存单元180中的指定地址。当主装置160发出的写入命令CMD1指示写入的数据长度少于一个页面时,处理单元110进入缓存写入模式。详细来说,于缓存写入模式中,处理单元110发出控制信号CTRL指示数据分配器120将数据DAT1传送至缓存控制器130并且发出命令CMD2驱动缓存控制器130储存数据DAT1至缓存器的指定区域。接着,当缓存器中的数据搜集到一个页面的长度后,处理单元110发出命令CMD2驱动缓存控制器130输出缓存器中指定区域的数据DAT2至存取接口170,接着发出命令CMD3驱动存取接口170把数据DAT2写入至储存单元180中的指定地址。数据分配器120可以解多工器(de-multiplexer)实施,用以将存取接口150的数据线依据控制信号CTRL耦接至缓存控制器130及存取接口170中其中之一。图4是依据本发明实施例的缓存器示意图。缓存器的区域配置相符于储存单元180的设置。例如,缓存器包含多个区域400_0_0至400_0_i,每一个区域关连于图3所示的储存子单元180_0_0至180_0_i。详细来说,区域400_0_0暂存即将写入至储存子单元180_0_0中一个页面的数据,区域400_0_1暂存即将写入至储存子单元180_0_1中一个页面的数据,依此类推。每个区域可包含四个子区域,用以分别储存四个单元(units)的数据,每个单元为固定长度,例如4K比特组。于此须注意的是,每个区域包含的子区域数目可依据储存子单元的设计而调整,本发明并不因此受限。
图5是依据本发明实施例的固态硬盘***的原子写入方法流程图。于缓存写入模式中,处理单元110载入并执行特定软件程序(software routine)时实施此方法,用以将不足一个页面的数据搬迁至缓存器400中的特定区域。首先,处理单元110通过存取接口150从主装置160取得写入命令CMD1,包含是否为原子写入(atomic write)的信息(步骤S510)。当处理单元110判断写入命令CMD1为原子写入时(步骤S520中”是”的路径),执行原子写入程序(步骤S530至S570),否则(步骤S520中”否”的路径),执行非原子写入程序(步骤S581至S589)。
非原子写入程序反复执行一个回圈,用以逐区块写入缓存器400中的可用空间。于每一回合中,处理单元110指示数据分配器120将数据DAT1传送至缓存控制器130,以及驱动缓存控制器130从缓存器中的下一个可用子区域储存一个区块的数据DAT1(步骤S581),以及,于成功储存数据后,缓存控制器130更新安全指标用以指向此子区域的结束地址(步骤S583)。于此须注意的是,安全指标可储存于缓存控制器130中的一个寄存器(register)。安全指标的作用将于后续段落描述。接着,判断是否搜集完一个页面的数据(步骤S585)。于步骤S585,处理单元110可判断此子区域是否为一个区域的最后一个子区域,如果是,则代表搜集完一个页面的数据。当搜集完一个页面的数据(步骤S585中”是”的路径),处理单元110驱动缓存控制器130输出此页面的数据DAT2至存取接口170以及驱动存取接口170将此页面的数据DAT2写入储存单元180中的指定地址,例如指定储存子单元的指定区块(步骤S587),接着,判断是否储存完写入命令CMD1指示的所有数据(步骤S589)。当尚未搜集完一个页面的数据(步骤S585中“否”的路径),处理单元110判断是否储存完写入命令CMD1指示的所有数据(步骤S589)。当尚未储存完写入命令CMD1指示的所有数据时(步骤S589中“否”的路径),继续从缓存器中的下一个可用子区域储存一个区块的数据(步骤S581);否则,结束整个处理。
原子写入程序首先判断写入命令CMD1是否触发跨页面储存(步骤S530)。于步骤S530,处理单元可判断缓存器中目前区域中的可用子区域数目是否小于写入命令CMD1指示的数据单元数目。若是,则代表若不做任何处理,写入命令CMD1将使数据拆开储存至缓存器中的二个区域。
当判断将触发跨页面储存时(步骤S530中“是”的路径),处理单元110驱动缓存控制器130填充虚拟数据(dummy data)至目前区域的所有可用子区域(步骤S541),驱动缓存控制器130输出此页面的数据DAT2至存取接口170以及驱动存取接口170将此页面的数据DAT2写入储存单元180中的指定地址,例如指定储存子单元的指定区块(步骤S543),以及指示数据分配器120将数据DAT1传送至缓存控制器130,以及驱动缓存控制器130从缓存器中的下一个区域的第一个子区域开始储存数据DAT1(步骤S545),以及,于成功储存数据后,缓存控制器130更新安全指标用以指向数据DAT1所储存的最后一个子区域的结束地址(步骤S570)。
当判断不触发跨页面储存时(步骤S530中“否”的路径),指示数据分配器120将数据DAT1传送至缓存控制器130,以及驱动缓存控制器130从缓存器中的目前区域的下一个可用子区域开始储存数据DAT1(步骤S550),以及,判断是否搜集完一个页面的数据(步骤S561)。步骤S561的技术内容可参考步骤S585的说明,为求说明书简洁,不再赘述。当搜集完一个页面的数据(步骤S561中“是”的路径),处理单元110驱动缓存控制器130输出此页面的数据DAT2至存取接口170以及驱动存取接口170将此页面的数据DAT2写入储存单元180中的指定地址(步骤S563)。当尚未搜集完一个页面的数据时(步骤S561中“否”的路径),缓存控制器130于成功储存数据后更新安全指标用以指向数据DAT1所储存的最后一个子区域的结束地址(步骤S570)。
于步骤S543、S563及S587中更包含当此页面的数据DAT2写入储存单元180中的指定地址后,清除安全指标。
以下举出实例来说明如上所述的方法。假设主装置160发出多个命令CMD1给处理单元110,希望依序原子写入2个单元的数据、非原子写入1个单元的数据、原子写入2个单元的数据、非原子写入3个单元的数据以及原子写入2个单元的数据:图6是依据本发明实施例的缓存器中的暂存数据示意图。为处理第一个命令,处理单元110执行步骤S550及S570,用以将2个单元的数据610写入缓存器中第一个区域中的前二个子区域,并且将安全指标更新为指向第一个区域中的第二个子区域的结束地址。为处理第二个命令,处理单元110执行步骤S581及S583,用以将1个单元的数据620写入缓存器中第一个区域中的第三个子区域,并且将安全指标更新为指向第一个区域中的第三个子区域的结束地址。为处理第三个命令,处理单元110执行步骤S530时发现此命令将触发跨页面储存,接着,执行步骤S541及S543进行虚拟数据630的填充以及驱动缓存控制器130及存取接口170,用以将第一个区域中的数据610至630写入储存子单元180_0_0中的可用区块,接着,执行步骤S545及S570用以将2个单元的数据640写入缓存器中第二个区域中的前二个子区域,并且将安全指标更新为指向第一个区域中的第二个子区域的结束地址。为处理第四个命令,处理单元110先执行步骤S581至S589的回圈二次,用以将前2个单元的数据650a写入缓存器中第二个区域中的后二个子区域,以及驱动缓存控制器130及存取接口170,用以将第二个区域中的数据640至640a写入储存子单元180_0_1中的可用区块。之后,处理单元110先执行步骤S581至S589的回圈一次,用以将余下1个单元的数据650b写入缓存器中第三个区域中的第一个子区域,并且将安全指标更新为指向第三个区域中的第一个子区域的结束地址。为处理第五个命令,处理单元110执行步骤S581及S583,用以将2个单元的数据660写入缓存器中第三个区域中的第二至三个子区域,并且将安全指标更新为指向第三个区域中的第三个子区域的结束地址。
然而,快闪存储器于运作时可能发生意外掉电,***架构10中另包含掉电处理电路(power-loss handling circuit)140,用以持续检测是否发生掉电的情况。一旦检测到掉电,掉电处理电路140使用剩余电量来发出命令CMD4驱动缓存控制器130,用以将储存于目前区域中的开始地址至安全指标指向的地址间的数据输出至存取接口170,并且,发出命令CMD5驱动存取接口170,用以写入目前区域中的数据至相应储存子单元中的可用区块。
以下举出数个情境来说明如上所述的掉电处理。搭配参考图6所示的命令处理说明。图7A是依据本发明实施例的掉电处理示意图。于第一个情境中,于处理第二个命令期间,掉电处理电路140检测到发生掉电的情况,发出命令CMD4驱动缓存控制器130,用以将第一个区域中的开始地址至安全指标Ps指向的地址间的数据610输出至存取接口170,并且,发出命令CMD5驱动存取接口170,用以写入数据610至储存子单元180_0_0中的可用区块,使得第一个命令指示的原子写入可成功地执行。图7B是依据本发明实施例的掉电处理示意图。于第二个情境中,于处理第三个命令指示的第二个单元的数据的原子写入期间,掉电处理电路140检测到发生掉电的情况,发出命令CMD4驱动缓存控制器130,但由于安全指标Ps还没有被更新,因此第二个区域中的所有数据都不会输出至存取接口170,使得第三个命令指示的原子写入全部失败。图7C是依据本发明实施例的掉电处理示意图。于第三个情境中,于处理第四个命令指示的第二个单元的数据的非原子写入期间,掉电处理电路140检测到发生掉电的情况,发出命令CMD4驱动缓存控制器130,用以将第二个区域中的开始地址至安全指标Ps指向的地址间的数据640及650a_1输出至存取接口170,并且,发出命令CMD5驱动存取接口170,用以写入数据640及650a_1至储存子单元180_0_1中的可用区块,使得第三个命令指示的原子写入可成功地执行。图7D是依据本发明实施例的掉电处理示意图。于第四个情境中,于处理第五个命令期间,掉电处理电路140检测到发生掉电的情况,发出命令CMD4驱动缓存控制器130,用以将第三个区域中的开始地址至安全指标Ps指向的地址间的数据650b输出至存取接口170,并且,发出命令CMD5驱动存取接口170,用以写入数据650b至储存子单元180_0_2中的可用区块,使得第五个命令指示的原子写入完全失败。
虽然图1至3中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图5的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改该多个步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,该多个描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
Claims (16)
1.一种固态硬盘***的原子写入方法,由一处理单元执行,其特征在于,包含:
接收一原子写入命令,指示写入少于一页面长度的一第一数据至一储存单元;
判断上述数据将触发一缓存器中的跨页面储存时,填充一虚拟数据至上述缓存器中的一第一区域的所有可用子区域;
判断上述数据将触发一缓存器中的跨页面储存时,储存上述第一数据至上述缓存器中的一第二区域;以及
成功储存上述第一数据至上述缓存器中的上述第二区域后,更新一安全指标用以指向上述第一数据所储存的上述第二区域的最后一个子区域的结束地址。
2.如权利要求1所述的固态硬盘***的原子写入方法,其特征在于,上述第一区域的长度组态为上述页面长度,以及上述第二区域的长度组态为上述页面长度。
3.如权利要求1所述的固态硬盘***的原子写入方法,其特征在于,上述缓存器中的跨页面储存是指若不做任何处理,上述第一数据将拆开储存至上述第一区域及上述第二区域。
4.如权利要求1所述的固态硬盘***的原子写入方法,其特征在于,更包含:
于填充上述虚拟数据至上述缓存器中的上述第一区域的所有可用子区域后,写入上述第一区域的数据至上述储存单元。
5.如权利要求1所述的固态硬盘***的原子写入方法,其特征在于,更包含:
于成功储存上述数据至上述缓存器中的上述第二区域前发生掉电,不写入上述第一数据至上述储存单元。
6.如权利要求1所述的固态硬盘***的原子写入方法,其特征在于,更包含:
于成功储存上述第一数据至上述缓存器中的上述第二区域后,接收一非原子写入命令,指示写入少于上述页面长度的一第二数据至上述储存单元;
储存上述第二数据至上述第二区域中接续于上述第一数据之后的一子区域。
7.如权利要求6所述的固态硬盘***的原子写入方法,其特征在于,更包含:
于成功储存上述第二数据至上述第二区域前发生掉电,将上述第二区域中的开始地址至上述安全指标指向的地址间的数据写入上述储存单元。
8.如权利要求7所述的固态硬盘***的原子写入方法,其特征在于,上述第二区域中的开始地址至上述安全指标指向的地址间的数据包含上述第一数据。
9.一种固态硬盘***的原子写入装置,包含:
一缓存控制器,通过一存取接口耦接至一储存单元;以及
一处理单元,从一主装置接收一原子写入命令,指示写入少于一页面长度的一第一数据至上述储存单元;判断上述数据将触发上述缓存器中的跨页面储存时,驱动上述缓存控制器填充一虚拟数据至上述缓存器中的一第一区域的所有可用子区域;判断上述数据将触发一缓存器中的跨页面储存时,驱动上述缓存控制器储存上述第一数据至上述缓存器中的一第二区域;
其中,成功储存上述第一数据至上述缓存器中的上述第二区域后,上述缓存控制器更新一安全指标用以指向上述第一数据所储存的上述第二区域的最后一个子区域的结束地址。
10.如权利要求9所述的固态硬盘***的原子写入装置,其特征在于,上述缓存控制器包含上述缓存器,上述第一区域的长度组态为上述页面长度,以及上述第二区域的长度组态为上述页面长度。
11.如权利要求9所述的固态硬盘***的原子写入装置,其特征在于,上述缓存器中的跨页面储存是指若不做任何处理,上述第一数据将拆开储存至上述第一区域及上述第二区域。
12.如权利要求9所述的固态硬盘***的原子写入装置,其特征在于,于填充上述虚拟数据至上述缓存器中的上述第一区域的所有可用子区域后,上述处理单元驱动上述缓存控制器输出上述第一区域的数据至上述存取接口,以及驱动上述存取接口写入上述第一区域的数据至上述储存单元。
13.如权利要求9所述的固态硬盘***的原子写入装置,其特征在于,于成功储存上述数据至上述缓存器中的上述第二区域前发生掉电,不写入上述第一数据至上述储存单元。
14.如权利要求9所述的固态硬盘***的原子写入装置,其特征在于,于成功储存上述第一数据至上述缓存器中的上述第二区域后,上述处理单元从上述主装置接收一非原子写入命令,指示写入少于上述页面长度的一第二数据至上述储存单元;驱动上述缓存控制器储存上述第二数据至上述第二区域中接续于上述第一数据之后的一子区域。
15.如权利要求14所述的固态硬盘***的原子写入装置,其特征在于,更包含:
一掉电处理电路,耦接于上述缓存控制器及上述存取接口,于成功储存上述第二数据至上述第二区域前检测到发生掉电,驱动上述缓存控制器,用以输出上述第二区域中的开始地址至上述安全指标指向的地址间的数据至上述存取接口;以及驱动上述存取接口,用以写入上述第二区域中的开始地址至上述安全指标指向的地址间的数据至上述储存单元。
16.如权利要求15所述的固态硬盘***的原子写入装置,其特征在于,上述第二区域中的开始地址至上述安全指标指向的地址间的数据包含上述第一数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610801521.6A CN107797755B (zh) | 2016-09-05 | 2016-09-05 | 固态硬盘***的原子写入方法以及使用该方法的装置 |
TW105134399A TWI592866B (zh) | 2016-09-05 | 2016-10-25 | 固態硬碟系統的原子寫入方法以及使用該方法的裝置 |
US15/354,082 US10402118B2 (en) | 2016-09-05 | 2016-11-17 | Methods for atomic writes in an SSD (solid state disk) system and apparatuses using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610801521.6A CN107797755B (zh) | 2016-09-05 | 2016-09-05 | 固态硬盘***的原子写入方法以及使用该方法的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107797755A true CN107797755A (zh) | 2018-03-13 |
CN107797755B CN107797755B (zh) | 2021-01-08 |
Family
ID=60048671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610801521.6A Active CN107797755B (zh) | 2016-09-05 | 2016-09-05 | 固态硬盘***的原子写入方法以及使用该方法的装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10402118B2 (zh) |
CN (1) | CN107797755B (zh) |
TW (1) | TWI592866B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609150A (zh) * | 2021-10-08 | 2021-11-05 | 阿里云计算有限公司 | 基于硬件的原子写方法、设备及*** |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI616807B (zh) * | 2016-11-17 | 2018-03-01 | 英屬維京群島商大心電子(英屬維京群島)股份有限公司 | 資料寫入方法以及儲存控制器 |
KR20220020143A (ko) * | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법 |
KR20220021796A (ko) * | 2020-08-14 | 2022-02-22 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US20240111417A1 (en) * | 2022-09-30 | 2024-04-04 | Silicon Motion, Inc. | Flash memory scheme capable of automatically generating or removing dummy data portion of full page data by using flash memory device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136005A (zh) * | 2011-03-29 | 2011-07-27 | 北京航空航天大学 | 数据查询方法和装置 |
CN102867046A (zh) * | 2012-09-06 | 2013-01-09 | 记忆科技(深圳)有限公司 | 基于固态硬盘的数据库优化方法及*** |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
US20130191565A1 (en) * | 2011-12-27 | 2013-07-25 | Kaminario Technologies Ltd. | Modified i/os among storage system layers |
US9098462B1 (en) * | 2010-09-14 | 2015-08-04 | The Boeing Company | Communications via shared memory |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105511802A (zh) * | 2015-11-24 | 2016-04-20 | 北京达沃时代科技有限公司 | 写缓存的方法和装置以及磁盘缓存区的同步方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US7599261B2 (en) | 2006-01-18 | 2009-10-06 | International Business Machines Corporation | Removable storage media with improved data integrity |
US7716192B2 (en) | 2007-05-08 | 2010-05-11 | Microsoft Corporation | Concurrent, lock-free object copying |
US8751860B2 (en) | 2009-06-03 | 2014-06-10 | Micron Technology, Inc. | Object oriented memory in solid state devices |
JP2010287744A (ja) | 2009-06-11 | 2010-12-24 | Elpida Memory Inc | 固体メモリ、データ処理システム及びデータ処理装置 |
-
2016
- 2016-09-05 CN CN201610801521.6A patent/CN107797755B/zh active Active
- 2016-10-25 TW TW105134399A patent/TWI592866B/zh active
- 2016-11-17 US US15/354,082 patent/US10402118B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098462B1 (en) * | 2010-09-14 | 2015-08-04 | The Boeing Company | Communications via shared memory |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
CN102136005A (zh) * | 2011-03-29 | 2011-07-27 | 北京航空航天大学 | 数据查询方法和装置 |
US20130191565A1 (en) * | 2011-12-27 | 2013-07-25 | Kaminario Technologies Ltd. | Modified i/os among storage system layers |
CN102867046A (zh) * | 2012-09-06 | 2013-01-09 | 记忆科技(深圳)有限公司 | 基于固态硬盘的数据库优化方法及*** |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105511802A (zh) * | 2015-11-24 | 2016-04-20 | 北京达沃时代科技有限公司 | 写缓存的方法和装置以及磁盘缓存区的同步方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609150A (zh) * | 2021-10-08 | 2021-11-05 | 阿里云计算有限公司 | 基于硬件的原子写方法、设备及*** |
CN113609150B (zh) * | 2021-10-08 | 2022-03-08 | 阿里云计算有限公司 | 基于硬件的原子写方法、设备及*** |
Also Published As
Publication number | Publication date |
---|---|
TWI592866B (zh) | 2017-07-21 |
US10402118B2 (en) | 2019-09-03 |
TW201812563A (zh) | 2018-04-01 |
CN107797755B (zh) | 2021-01-08 |
US20180067691A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102569783B1 (ko) | 비순차적 구역 네임스페이스들 | |
CN107797755A (zh) | 固态硬盘***的原子写入方法以及使用该方法的装置 | |
EP2973572B1 (en) | System and method of reading data from memory concurrently with sending write data to the memory | |
CN103650054B (zh) | 包含存储器***控制器的设备和相关方法 | |
EP3511814B1 (en) | Storage device storing data in order based on barrier command | |
US20130013853A1 (en) | Command executing method, memory controller and memory storage apparatus | |
CN105528299B (zh) | 读取命令排程方法以及使用该方法的装置 | |
CN107220185A (zh) | 基于闪存的数据存储方法、装置以及闪存芯片 | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
CN108932108A (zh) | 快闪存储器的命令排程及执行方法以及使用该方法的装置 | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
WO2018075290A1 (en) | Apparatuses and methods for an operating system cache in a solid state device | |
CN108628543A (zh) | 垃圾回收方法以及使用该方法的装置 | |
CN109697017B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
KR20200135549A (ko) | 카운터 업데이트 동작을 위한 장치 및 방법 | |
CN106484315B (zh) | 读取及写入命令排程方法以及使用该方法的装置 | |
CN107797756A (zh) | 固态硬盘***的优先写入方法以及使用该方法的装置 | |
CN109213423A (zh) | 基于地址屏障无锁处理并发io命令 | |
CN108628754A (zh) | 一般及垃圾回收的数据存取方法以及使用该方法的装置 | |
CN111813703A (zh) | 数据储存装置及逻辑至物理地址映射表的更新方法 | |
CN106527962B (zh) | 内部数据搬移方法以及使用该方法的装置 | |
CN112767976B (zh) | 平稳闪存写速度的方法、装置、存储介质和计算机设备 | |
CN113448487B (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
CN104714892B (zh) | 数据存取命令执行方法以及使用该方法的快闪存储器装置 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |