CN108334276A - 快闪记忆体的动态对齐数据方法 - Google Patents
快闪记忆体的动态对齐数据方法 Download PDFInfo
- Publication number
- CN108334276A CN108334276A CN201710047851.5A CN201710047851A CN108334276A CN 108334276 A CN108334276 A CN 108334276A CN 201710047851 A CN201710047851 A CN 201710047851A CN 108334276 A CN108334276 A CN 108334276A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- offset
- data
- memory bank
- fast flash
- 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
本发明公开一种快闪记忆体的动态对齐数据方法,运用于具有微控制器及快闪记忆体的快闪储存装置,包括下列步骤:微控制器接收包括逻辑起始地址的数据写入指令;取得累积偏移量并依据逻辑起始地址及快闪记忆体的配置单位容量更新累积偏移量;将逻辑起始地址加上更新后累积偏移量以获得实体起始地址;及,由快闪记忆体的实体起始地址开始将对应数据写入指令的数据写入快闪记忆体。本发明可有效提升快闪记忆体的随机读写效率。
Description
技术领域
本发明涉及快闪记忆体,特别涉及快闪记忆体的动态对齐数据方法。
背景技术
快闪记忆体(如图1A、图1B所示快闪记忆体10)具有整页写入及区块抹除的特性,即进行数据写入时必须以页(page)为最小写入单位,进行数据抹除时必须以包括多个页的区块(block)为最小抹除单位。
为了依据快闪记忆体的上述特性来增进快闪记忆体的数据写入效率,现有的快闪储存装置是设置一组缓冲记忆体(如图1A、图1B所示缓冲记忆体12),其容量与快闪记忆体10的单页容量(如4096位元组,即4KB)相同。于收到欲写入快闪记忆体10的数据时,快闪储存装置是先将所收到的数据排列储存于缓冲记忆体12中,并于填满缓冲记忆体12的剩余空间后,再将缓冲记忆体12中的已排列数据全部写入至快闪记忆体10的特定实体起始地址。藉此,快闪储存装置可快速地以页为单位写入数据至快闪记忆体10。
请参阅图1A,其为现有循序写入的示意图并用以说明现有的快闪储存装置如何以页为单位执行循序写入。首先,快闪储存装置自外部(通常为主机)依序接收三笔欲写入的数据。接着,快闪储存装置以第一笔数据的部分数据D11及快闪记忆体10的旧数据X1填满缓冲记忆体12,并将缓冲记忆体12的所有数据直接写入快闪记忆体10。接着,快闪储存装置清空缓冲记忆体12,以第一笔数据的剩余数据D12及第二笔数据的部分数据D21填满缓冲记忆体12(循序写入的多笔数据,其记忆体地址是连续的),并将缓冲记忆体12的所有数据直接写入快闪记忆体10。接着,快闪储存装置清空缓冲记忆体12,以第二笔数据的剩余数据D22及第三笔数据的部分数据D31填满缓冲记忆体12,并将缓冲记忆体12的所有数据直接写入快闪记忆体10。最后,快闪储存装置以第三笔数据的剩余数据D32及快闪记忆体10的旧数据X2填满缓冲记忆体12,并将缓冲记忆体12的所有数据直接写入快闪记忆体10。藉此,快闪储存装置可以页为单位来写入多笔数据至快闪记忆体12。
续请参阅图1B,为现有的随机写入的示意图,用以说明现有的快闪储存装置如何以页为单位执行随机写入。
首先,快闪储存装置自外部依序接收三笔欲写入的数据及各数据的写入地址。接着,快闪储存装置以第一笔数据的部分数据D11及快闪记忆体10的旧数据X1填满缓冲记忆体12,并依据第一笔数据的写入地址将缓冲记忆体12的所有数据直接写入快闪记忆体10。接着,快闪储存装置清空缓冲记忆体12,以第一笔数据的剩余数据D12及快闪记忆体10的旧数据X2填满缓冲记忆体12,并依据第一笔数据的写入地址将缓冲记忆体12的所有数据直接写入快闪记忆体10。藉此,快闪储存装置完成第一笔数据的写入。
接着,快闪储存装置以第二笔数据的部分数据D21及旧数据X3填满缓冲记忆体12,依据第二笔数据的写入地址将缓冲记忆体12的所有数据写入快闪记忆体10,清空缓冲记忆体12,以第二笔数据的剩余数据D22及旧数据X4填满缓冲记忆体12,并依据第二笔数据的写入地址将缓冲记忆体12的所有数据写入快闪记忆体10。藉此,快闪储存装置完成第二笔数据的写入。
接着,快闪储存装置以第三笔数据的部分数据D31及旧数据X5填满缓冲记忆体12,依据第三笔数据的写入地址将缓冲记忆体12的所有数据写入快闪记忆体10,清空缓冲记忆体12,以第三笔数据的剩余数据D32及旧数据X6填满缓冲记忆体12,并依据第三笔数据的写入地址将缓冲记忆体12的所有数据写入快闪记忆体10。藉此,快闪储存装置完成第三笔数据的写入。
现有的快闪储存装置为了以页为单位执行随机写入,必须以快闪记忆体10的旧数据来填满缓冲记忆体12的剩余空间,而造成写入效能不彰。
以图1B为例,若快闪记忆体10单页容量(即缓冲记忆体12容量)为4KB,则现有的快闪储存装置为了写入各笔数据(占用空间为4KB),必须进行两次写入操作(共写入8KB的数据),即必须额外写入4KB的旧数据,而浪费写入频宽。
发明内容
本发明的主要目的,在于提供一种快闪记忆体的动态对齐数据方法,可有效减少数据随机写入快闪记忆体时的冗余数据量。
于一实施例中,一种快闪记忆体的动态对齐数据方法,运用于具有一微控制器及一快闪记忆体的一快闪储存装置,其特征在于,包括:
a)控制该微控制器持续检测该快闪储存装置的一使用状态;
b)接收一数据写入指令,其中该数据写入指令包括一逻辑起始地址;
c)于该使用状态符合一需对齐状态时取得一累积偏移量,并依据该逻辑起始地址及该快闪记忆体的一配置单位容量更新该累积偏移量以获得一更新后累积偏移量;
d)将该逻辑起始地址加上该更新后累积偏移量以获得一实体起始地址;及
e)由该快闪记忆体的该实体起始地址开始将对应该数据写入指令的数据写入该快闪记忆体。
优选地,该使用状态为该微控制器持续未更新该累积偏移量期间的一写入次数或一持续时间。
优选地,该步骤c是于该写入次数不小于一预设写入次数或该持续时间不小于一预设持续时间时更新该累积偏移量。
优选地,该步骤c更包括:
c1)计算一单次偏移量,其中该逻辑起始地址、所取得的该累积偏移量及该单次偏移量的和为该配置单位容量的倍数;及
c2)将该单次偏移量加上所取得的该累积偏移量以获得该更新后累积偏移量。
优选地,该步骤c1是计算该逻辑起始地址与所取得的该累积偏移量的和除以该配置单位容量后的一余数,并计算该配置单位容量与该余数的一差值以获得该单次偏移量。
优选地,该快闪记忆体的动态对齐数据方法更包括一步骤f)于该使用状态不符合该需对齐状态时将该逻辑起始地址加上该累积偏移量以获得该实体起始地址。
优选地,该步骤c之后更包括一步骤g)将该逻辑起始地址及该更新后累积偏移量对应记录于一查找表。
优选地,该快闪记忆体的动态对齐数据方法更包括:
h1)接收一数据读取指令,其中该数据读取指令包括该逻辑起始地址及一数据长度;
h2)查询该查找表以取得对应该逻辑起始地址的该更新后累积偏移量;
h3)将该逻辑起始地址加上该更新后累积偏移量来获得该实体起始地址;及
h4)依据该数据长度自该快闪记忆体的该实体起始地址开始连续读取对应该数据读取指令的数据。
优选地,该步骤e)是先将数据排列写入至该快闪储存装置的一缓冲记忆体,再将排列写入后的数据自该缓冲记忆体直接复制至该快闪记忆体并由该实体起始地址开始写入该快闪记忆体。
于一实施例中,一种快闪记忆体的动态对齐数据方法,运用于具有一微控制器及一快闪记忆体的一快闪储存装置,其特征在于,包括:
a)控制该微控制器接收一第一数据写入指令,其中该第一数据写入指令包括一第一逻辑起始地址;
b)依据该第一逻辑起始地址、该快闪记忆体的一配置单位容量及一初始累积偏移量计算一第一累积偏移量;
c)将该第一逻辑起始地址加上该第一累积偏移量以获得一第一实体起始地址;
d)由该快闪记忆体的该第一实体起始地址开始将对应该第一数据写入指令的数据写入该快闪记忆体;
e)接收一第二数据写入指令,其中该第二数据写入指令包括一第二逻辑起始地址;
f)依据该第二逻辑起始地址、该配置单位容量及该第一累积偏移量计算一第二累积偏移量;
g)将该第二逻辑起始地址加上该第二累积偏移量以获得一第二实体起始地址;及
h)由该快闪记忆体的该第二实体起始地址开始将对应该第二数据写入指令的数据写入该快闪记忆体。
优选地,该步骤b更包括:
b1)依据该第一逻辑起始地址及该配置单位容量计算一第一偏移量,其中该第一逻辑起始地址及该第一偏移量的和为该配置单位容量的倍数;及
b2)将该第一偏移量加上该初始累积偏移量以获得该第一累积偏移量;
该步骤f更包括:
f1)依据该第二逻辑起始地址及该配置单位容量计算一第二偏移量,其中该第二逻辑起始地址及该第二偏移量的和为该配置单位容量的倍数;及
f2)将该第二偏移量加上该第一累积偏移量以获得该第二累积偏移量。
优选地,该步骤b1是计算该第一逻辑起始地址与该初始累积偏移量的和除以该配置单位容量后的一第一余数,并计算该配置单位容量与该第一余数的一第一差值以获得该第一偏移量;该步骤f1是计算该第二逻辑起始地址与该第一累积偏移量的和除以该配置单位容量后的一第二余数,并计算该配置单位容量与该第二余数的一第二差值以获得该第二偏移量。
优选地,该步骤b之后更包括一步骤i)将该第一逻辑起始地址及该第一累积偏移量对应记录于一查找表;该步骤f之后更包括一步骤j)将该第二逻辑起始地址及该第二累积偏移量对应记录于该查找表。
优选地,该快闪记忆体的动态对齐数据方法更包括:
k1)接收一第一数据读取指令,其中该第一数据读取指令包括该第一逻辑起始地址及一第一数据长度;
k2)查询该查找表以取得对应该第一逻辑起始地址的该第一累积偏移量;
k3)将该第一逻辑起始地址加上该第一累积偏移量来获得该第一实体起始地址;
k4)依据该第一数据长度自该快闪记忆体的该第一实体起始地址开始连续读取对应该第一数据读取指令的数据;
k5)接收一第二数据读取指令,其中该第二数据读取指令包括该第二逻辑起始地址及一第二数据长度;
k6)查询该查找表以取得对应该第二逻辑起始地址的该第二累积偏移量;
k7)将该第二逻辑起始地址加上该第二累积偏移量来获得该第二实体起始地址;及
k8)依据该第二数据长度自该快闪记忆体的该第二实体起始地址开始连续读取对应该第二数据读取指令的数据。
本发明可有效提升快闪记忆体的随机读写效率。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1A为现有的循序写入的示意图;
图1B为现有的随机写入的示意图;
图2为本发明第一实施例的快闪储存装置的架构图;
图3为本发明第一实施例的动态对齐数据方法的流程图;
图4为本发明第二实施例的动态对齐数据方法的流程图;
图5为本发明的连续对齐示意图;
图6为图5的随机写入的示意图;
图7为本发明的条件对齐示意图;
图8为图7的随机写入的示意图。
其中,附图标记
10…快闪记忆体
12…缓冲记忆体
20…快闪储存装置
200…快闪记忆体
202…缓冲记忆体
204…微控制器
22…主机
X1-X6…旧数据
D11、D12、D21、D22、D31、D32、A1、A2、B1、B2、C1、C2…数据
O1、O2、O3…单次偏移量
S10-S16…写入步骤
S200-S220…读写步骤
具体实施方式
兹就本发明的一较佳实施例,配合附图,详细说明如后。
首请参阅图2,为本发明第一实施例的快闪储存装置的架构图。本发明的快闪储存装置20主要包括快闪记忆体200、缓冲记忆体202及微控制器204。
快闪记忆体200(如NAND快闪记忆体)用以储存数据,包括多个区块(Block,即数据抹除的最小单位),各区块包括多个页(page,即数据存取的最小单位)。
缓冲记忆体202电性连接快闪记忆体200,用以暂存数据。并且,缓冲记忆体202的容量为快闪记忆体200的页容量(如4KB、8KB或16KB)的倍数。
微控制器204(如MCU)电性连接缓冲记忆体202,并可电性连接(如经由USB接口或SATA接口)外部的主机22。微控制器204可依据来自主机22的数据写入指令或数据读取指令来将数据经由缓冲记忆体202写入至快闪记忆体200,或将数据经由缓冲记忆体202自快闪记忆体200读出。
续请参阅图3,为本发明第一实施例的动态对齐数据方法的流程图。本发明各实施例的动态对齐数据方法主要是由图2所示的快闪储存装置20来加以实现。具体而言,快闪储存装置20还包括固件(firmware),固件可被储存于微控制器204的内建记忆体中。并且,当微控制器204执行前述固件后,可实现控制快闪储存装置20执行本发明各实施例的动态对齐数据方法的各步骤。本实施的动态对齐数据方法的包括以下步骤。
步骤S10:微控制器204判断是否收到数据写入需求。具体而言,微控制器204判断是否自主机22收到任何数据写入指令。
于一实施例中,数据写入指令是包括基于逻辑区块定址(Logic Block Address)机制的一组逻辑起始地址及欲写入数据的数据长度。更具体地,逻辑区块定址机制是一种描述电脑(如主机22)储存装置上数据所在地址的通用机制,基于此机制的逻辑起始地址可被大部分电脑识别。
若微控制器204收到数据写入指令,则执行步骤S12。否则,结束动态对齐数据方法。
步骤S12:微控制器204取得累积偏移量及快闪记忆体200的配置单位容量,并依据所取得的配置单位容量更新所取得的累积偏移量以获得更新后累积偏移量。
具体而言,微控制器204依据所取得的累积偏移量及配置单位容量计算更新后累积偏移量。配置单位容量(如4KB、8KB或16KB)是快闪记忆体200的单次最小存取容量,即快闪记忆体200的单页的容量,其是于快闪记忆体200出厂时由制造商基于硬体规范所设定。
累积偏移量是用来指示通用的逻辑起始地址与基于快闪记忆体200的定址机制的实体起始地址之间的地址偏移量。
此外,累积偏移量的初始值为0(即快闪记忆体200未曾被写入数据,或虽曾写入数据但未执行地址偏移操作),并随着地址偏移操作的执行次数逐渐增加。
步骤S14:微控制器204依据数据写入指令的逻辑起始地址及更新后累积偏移量计算对应此逻辑起始地址的一组实体起始地址。
于一实施例中,微控制器204是将逻辑起始地址加上更新后累积偏移量作为对应的实体起始地址,其中此对应的方式可由微控制器204自行判定,且此方式可为本领域中具有通常知识者所熟知,故在此不进行赘述。
步骤S16:微控制器204由快闪记忆体200的实体起始地址开始将对应数据写入指令的数据写入快闪记忆体200。
于一实施例中,微控制器204先将对应数据写入指令的数据排列写入至缓冲记忆体202,再由快闪记忆体200的实体起始地址开始将排列写入后的数据自缓冲记忆体202直接写入至快闪记忆体200中。
值得一提的是,在现在技术中,当逻辑起始地址未对齐快闪记忆体200的任一页的实体起始地址时,若直接将逻辑起始地址作为实体起始地址进行数据写入,将使数据被分别写入不同的二页,而降低写入效率(一笔数据需进行两次写入操作)。因此,本发明是于进行写入操作时先执行地址偏移操作,计算逻辑起始地址与最接近页的实体起始地址之间的地址偏移量(即步骤S12),并进行偏移量补偿,来获得特定页的实体起始地址(即步骤S14)。藉此,当微控制器204自此实体起始地址开始连续写入数据至快取记忆体200时(即步骤S16),所写入的数据会位于同一页,而可提升写入效率(一笔数据仅需进行一次写入操作)。
接着,微控制器204再次执行步骤S10以判断是否收到其他写入需求。
续请参阅图5,为本发明的连续对齐示意图,用以示例性说明本发明如何执行数据对齐及随机写入操作。图5(A)所示为逻辑区块定址机制示意图,图5(B)所示为快闪记忆体200的定址机制示意图。于本例子中,快闪记忆体200的单页大小为8KB,累积偏移量的初始值(即初始累积偏移量)为0。
微控制器204初次自主机22接收数据写入指令,即第一数据写入指令write(4,8),表示第一逻辑起始地址为4(意指4K,即4096),欲写入数据的第一数据长度为8(单位为KB,即Kilo Bytes)。接着,微控制器204判断第一逻辑起始地址并未对齐快闪记忆体200的任一可写入页的实体起始地址(如0、8、16...)而须执行地址偏移操作,并算出单次偏移量O1(即第一偏移量)为4(意指4K,即4096),即第一逻辑起始地址偏移第一偏移量后可对齐快闪记忆体200的特定可写入页的实体起始地址(即第一实体起始地址)。
接着,微控制器204更新初始累积偏移量以获得更新后累积偏移量(为4,即第一累积偏移量),将第一逻辑起始地址(4)加上第一累积偏移量(4)来获得对应的第一实体起始地址(8),并自快闪记忆体200的第一实体起始地址(8)开始连续写入第一数据写入指令的数据。藉此,原本未对齐至快闪记忆体200的任一可写入页的数据,即可被写入至同一页(即第一实体起始地址(8)所对应的页)中。
并且,微控制器204还可执行记录指令record(4,4),来将第一逻辑起始地址(4)与所对应的第一累积偏移量(4)对应记录于查找表,以供日后读取此笔数据使用。
当微控制器204再次自主机22接收数据写入指令(即第二数据写入指令write(24,8))时,可判断第二逻辑起始地址(24)加上最新的第一累积偏移量(4)并未对齐快闪记忆体200的任一可写入页的实体起始地址(如32),而须执行地址偏移操作,并算出单次偏移量O2(即第二偏移量)为4。
接着,微控制器204更新第一累积偏移量以获得更新后累积偏移量(为8,即第二累积偏移量,为前次的第一累积偏移量(4)加上第二偏移量(4)),将第二逻辑起始地址(24)加上第二累积偏移量(8)来获得对应的第二实体起始地址(32),并自快闪记忆体200的第二实体起始地址(32)开始连续写入第二数据写入指令的数据。并且,微控制器204还执行记录指令record(24,8)来将第二逻辑起始地址(24)与所对应的第二累积偏移量(8)对应记录于查找表。
当微控制器204再次自主机22接收数据写入指令(即第三数据写入指令write(36,8))时,可判断第三逻辑起始地址(36)加上最新的第二累积偏移量(8)并未对齐快闪记忆体200的任一可写入页的实体起始地址(如48),而须执行地址偏移操作,并算出单次偏移量O3(即第三偏移量)为4。
接着,微控制器204更新累积偏移量以获得更新后累积偏移量(为12,即第三累积偏移量),将第三逻辑起始地址(36)加上第三累积偏移量(12)来获得对应的第三实体起始地址(48),并自快闪记忆体200的第三实体起始地址(48)开始连续写入第三数据写入指令的数据。藉此,原本未对齐快闪记忆体200的任一页的数据,会被写入至同一页(即实体起始地址(48)所对应的页)中。并且,微控制器204还执行记录指令record(36,12)来将第三逻辑起始地址(36)与所对应的第三累积偏移量(12)对应记录于查找表。
续请参阅图6,为图5的随机写入的示意图,用以更详尽说明本发明如何执行随机写入操作。于本例子中,缓冲记忆体202的容量是与快闪记忆体200的单页容量相同(如皆为8KB)。
微控制器204是先将第一数据写入指令的数据(包括子数据A1、A2)排列写入至缓冲记忆体202,再自快闪记忆体200的第一实体起始地址开始将缓冲记忆体202的所有数据写入快闪记忆体200的特定页。
接着,微控制器204清空缓冲记忆体202,并将第二数据写入指令的数据(包括子数据B1、B2)排列写入至缓冲记忆体202,再自快闪记忆体200的第二实体起始地址开始将缓冲记忆体202的所有数据写入快闪记忆体200的特定页。
接着,微控制器204清空缓冲记忆体202,并将第三数据写入指令的数据(包括子数据C1、C2)排列写入至缓冲记忆体202,再自快闪记忆体200的第三实体起始地址开始将缓冲记忆体202的所有数据写入快闪记忆体200的特定页。
值得一提的是,经过前述操作后,各数据写入指令的逻辑起始地址已被转换为对齐快闪记忆体200中的特定页的实体起始地址,即各数据写入指令的数据会被写入至同一页(仅需进行一次写入操作),而不会被写入至不同页(即不须进行多次写入操作)。
本发明经由对逻辑起始地址执行地址偏移操作,可有效将数据对齐写入至快闪记忆体的同一页,而可有效减少写入次数,进而延长快闪记忆体寿命并有效快闪记忆体的随机读写效率。
前述实施例的动态对齐数据方法虽可有效减少快闪记忆体的写入次数,然而,每次执行地址偏移操作都会造成快闪记忆体容量的浪费(如图5所示的单次偏移量O1、O2、O3所对应的记忆体空间不会储存数据),若对所有数据写入指令执行地址偏移操作,将使快闪记忆体的可用容量快速降低。
为解决上述问题,本发明更提出另一种态样的动态对齐数据方法,可于减少写入次数及减少快闪记忆体容量浪费中取得平衡。续请参阅图4,为本发明第二实施例的动态对齐数据方法的流程图。本实施例的动态对齐数据方法包括以下步骤。
步骤S200:微控制器204持续检测快闪储存装置20的使用状态。前述使用状态可为持续未更新累积偏移量期间累积的写入次数或持续时间、快闪记忆体200的剩余可用容量或特定区块(Block)的总写入次数或总抹除次数等,但不以此限定。
步骤S202:微控制器204判断是否收到数据读写需求。具体而言,微控制器204是判断是否自主机22收到任何数据写入指令或任何数据读取指令。
于一实施例中,数据读取指令是包括基于逻辑区块定址机制的一组逻辑起始地址及欲读取数据的数据长度。
若微控制器204收到数据写入指令,则执行步骤S204。若微控制器204收到数据读取指令,则执行步骤S216。若微控制器204未收到任何数据读写指令,则结束动态对齐数据方法。
步骤S204:微控制器204判断所检测的使用状态是否符合预设的需对齐状态。
举例来说,微控制器204可判断持续未更新累积偏移量期间累积的写入次数(如8次)是否不小于预设写入次数(如10次)、持续未更新累积偏移量期间的持续时间(如3分钟)是否不小于预设持续时间(如5分钟)、快闪记忆体200的剩余可用容量(如30GB)是否大于预设容量(如1GB)或特定区块(Block)的总写入次数或总抹除次数(如5万次)是否大于预设写入次数或预设抹除次数(如8万次)。
若微控制器204判断当前的使用状态符合需对齐状态,则执行步骤S206以先执行地址偏移操作后再执行写入操作。若判断当前的使用状态不符合需对齐状态,微控制器204执行步骤S210以直接执行写入操作。
步骤S206:微控制器204依据数据写入指令的逻辑起始地址、累积偏移量及快闪记忆体200的配置单位容量计算单次偏移量(如图5所示第一偏移量O1、第二偏移量O2或第三偏移量O3)。
于一实施例中,逻辑起始地址、累积偏移量及所算出的单次偏移量的和为快闪记忆体200的配置单位容量的倍数。举例来说,若逻辑起始地址为4、累积偏移量为0,配置单位容量为8,则单次偏移量可为4(最佳)、12、20...等。
于另一例子中,微控制器204是计算逻辑起始地址(如24)与累积偏移量(如4)的和(28),再计算此和除以配置单位容量(如8)后的余数(4),并计算配置单位容量(8)与此余数(4)的差值(4),再以差值(4)做为单次偏移量(4)。
步骤S208:微控制器204更新累积偏移量。具体而言,微控制器204将所算出的单次偏移量加上所取得的累积偏移量以获得更新后累积偏移量。
步骤S210:微控制器204将数据写入指令的逻辑起始地址加上更新后累积偏移量以获得实体起始地址。
值得一提的是,若使用状态符合需对齐状态,则微控制器204是将逻辑起始地址加上于步骤S208中获得的更新后累积偏移量以作为实体起始地址。若使用状态不符合需对齐状态(即于本次写入操作累积偏移量不会更新),则微控制器204是将逻辑起始地址加上所取得的累积偏移量作为实体起始地址。
步骤S212:微控制器204先将对应数据写入指令的数据排列写入至缓冲记忆体202,再由快闪记忆体200的实体起始地址开始将排列写入后的数据自缓冲记忆体202直接写入至快闪记忆体200中。
步骤S214:微控制器204将数据写入指令的逻辑起始地址及最新的累积偏移量(若有更新,则为更新后累积偏移量;若未更新,则为所取得的累积偏移量)对应记录于查找表。接着微控制器204再次执行步骤S202。
若于步骤S202中微控制器204是收到数据读取指令,则执行步骤S216:微控制器204查询查找表以取得对应此数据读取指令的逻辑起始地址的累积偏移量(即于步骤S214中所记录的更新后累积偏移量或所取得的累积偏移量)。
以图5为例,查找表记录有record(4,4)、record(24,8)及record(36,12)三笔数据。若数据读取指令的逻辑起始地址为4,则对应的累积偏移量为4,若逻辑起始地址为24,则对应的累积偏移量为8,若逻辑起始地址为36,则对应的累积偏移量为12。
步骤S218:微控制器204将数据读取指令的逻辑起始地址加上所查到的累积偏移量来获得对应的实体起始地址。举例来说,若逻辑起始地址为24,累积偏移量为8,则对应的实体起始地址为32。
步骤S220:微控制器204依据数据读取指令的数据长度自快闪记忆体200的实体起始地址开始连续读取对应数据读取指令的数据。
于一实施例中,微控制器204是先自快闪记忆体200的实体起始地址开始连续读取对应数据读取指令的数据,并将所读取的数据排列储存于缓冲记忆体202中,再将储存于缓冲记忆体202的数据传送至数据读取指令的来源(如主机22)。
值得一提的是,本发明由于已使快闪记忆体200所储存的所有数据对齐各页(即,使各数据写入指令对应的数据会储存于同页),当欲读取该笔数据时,微控制器204仅需对快闪记忆体200执行一次读取操作(读取单页),而可有效提升读取效率。。
续请参阅图7,为本发明的条件对齐示意图,用以示例性说明本发明如何有条件执行数据对齐及随机写入操作。图7(A)所示为逻辑区块定址机制示意图,图7(B)所示为快闪记忆体200的定址机制示意图。于本例子中,快闪记忆体200的单页大小为8KB,累积偏移量的初始值(即初始累积偏移量)为0。并且,微控制器204是间隔执行地址偏移操作,即于奇数次(如第1、3、5、7...次)收到数据写入指令时才执行数据对齐。
微控制器204第一次自主机22接收数据写入指令,即第一数据写入指令write(4,8)。接着,微控制器204依据设定判断需执行数据对齐(本次为奇数次),并进一步判断第一逻辑起始地址未对齐快闪记忆体200的任一可写入页的实体起始地址而须执行地址偏移操作,并算出单次偏移量O1(即第一偏移量)为4。
接着,微控制器204更新累积偏移量以获得更新后累积偏移量(为4,即第一累积偏移量),将第一逻辑起始地址(4)加上第一累积偏移量(4)来获得对应的第一实体起始地址(8),并自快闪记忆体200的第一实体起始地址(8)开始连续写入第一数据写入指令的数据。并且,微控制器204还执行记录指令record(4,4),来将第一逻辑起始地址(4)与所对应的第一累积偏移量(4)对应记录于查找表。
当微控制器204第二次自主机22接收数据写入指令(即第二数据写入指令write(24,8))时,可依据设定判断不需执行数据对齐(本次为偶数次),而直接取得最新的第一累积偏移量(4)并直接作为第二累积偏移量,将第二逻辑起始地址(24)加上第二累积偏移量(4)来获得对应的第二实体起始地址(28),并自快闪记忆体200的此实体起始地址(28)开始连续写入第二数据写入指令的数据。并且,微控制器204还执行记录指令record(24,4)来将第二逻辑起始地址(24)与所对应的第二累积偏移量(4)对应记录于查找表。
由图7(B)可看出,第二数据写入指令的数据并未对齐快闪记忆体200的单页,这使得此笔数据的读写效率较差。并且,由于未执行地址偏移操作,本次写入操作不会浪费额外的容量。
当微控制器204第三次自主机22接收数据写入指令(即第三数据写入指令write(36,8))时,可依据设定判断需执行数据对齐(本次为奇数次),并进一步判断第三逻辑起始地址(36)加上最新的第二累积偏移量(4)已对齐快闪记忆体200的特定页的实体起始地址(如40),而不须执行地址偏移操作,并算出单次偏移量O3(即第三偏移量)为0,而可直接将第二累积偏移量(4)作为第三累积偏移量。
接着,微控制器204将第三逻辑起始地址(36)加上第三累积偏移量(4)来获得对应的第三实体起始地址(40),并自快闪记忆体200的第三实体起始地址(40)开始连续写入第三数据写入指令的数据。并且,微控制器204还执行记录指令record(36,4)来将第三逻辑起始地址(36)与所对应的第三累积偏移量(4)对应记录于查找表。
藉此,原本未对齐的第三数据写入指令的数据经过数据对齐后会被写入至同页。
续请参阅图8,为图7的随机写入的示意图,用以更详尽说明本发明的如何执行随机写入操作。于本例子中,缓冲记忆体202的容量是与快闪记忆体200的单页容量相同(如皆为8KB)。
由于第一数据写入指令的数据已经过数据对齐(其子数据A1、A2位于同页),微控制器204仅需执行一次写入操作即可将第一数据写入指令的所有数据经由缓冲记忆体202写入快闪记忆体200的特定页。
由于第二数据写入指令的数据未经过数据对齐(其子数据B1、B2分别位于不同页),微控制器204必需执行两次写入操作才可将第二数据写入指令的所有数据写入快闪记忆体200,即第一次是以将子数据B1与快闪记忆体200的旧数据X1填满缓冲记忆体202后,再写入快闪记忆体200的特定页,第二次是以将子数据B2与快闪记忆体200的旧数据X2填满缓冲记忆体202后,再写入快闪记忆体200的特定页。
由于第三数据写入指令的数据已经过数据对齐(其子数据C1、C2位于同页),微控制器204仅需执行一次写入操作即可将第三数据写入指令的所有数据经由缓冲记忆体202写入快闪记忆体200的特定页。
本发明经由有条件地执行数据对齐,可有效减少写入次数,并可减少快闪记忆体容量浪费。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种快闪记忆体的动态对齐数据方法,运用于具有一微控制器及一快闪记忆体的一快闪储存装置,其特征在于,包括:
a)控制该微控制器持续检测该快闪储存装置的一使用状态;
b)接收一数据写入指令,其中该数据写入指令包括一逻辑起始地址;
c)于该使用状态符合一需对齐状态时取得一累积偏移量,并依据该逻辑起始地址及该快闪记忆体的一配置单位容量更新该累积偏移量以获得一更新后累积偏移量;
d)将该逻辑起始地址加上该更新后累积偏移量以获得一实体起始地址;及
e)由该快闪记忆体的该实体起始地址开始将对应该数据写入指令的数据写入该快闪记忆体。
2.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,该使用状态为该微控制器持续未更新该累积偏移量期间的一写入次数或一持续时间。
3.如权利要求2所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤c)是于该写入次数不小于一预设写入次数或该持续时间不小于一预设持续时间时更新该累积偏移量。
4.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤c)更包括:
c1)计算一单次偏移量,其中该逻辑起始地址、所取得的该累积偏移量及该单次偏移量的和为该配置单位容量的倍数;及
c2)将该单次偏移量加上所取得的该累积偏移量以获得该更新后累积偏移量。
5.如权利要求4所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤c1)是计算该逻辑起始地址与所取得的该累积偏移量的和除以该配置单位容量后的一余数,并计算该配置单位容量与该余数的一差值以获得该单次偏移量。
6.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,更包括一步骤f)于该使用状态不符合该需对齐状态时将该逻辑起始地址加上该累积偏移量以获得该实体起始地址。
7.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤c)之后更包括一步骤g)将该逻辑起始地址及该更新后累积偏移量对应记录于一查找表。
8.如权利要求7所述的快闪记忆体的动态对齐数据方法,其特征在于,更包括:
h1)接收一数据读取指令,其中该数据读取指令包括该逻辑起始地址及一数据长度;
h2)查询该查找表以取得对应该逻辑起始地址的该更新后累积偏移量;
h3)将该逻辑起始地址加上该更新后累积偏移量来获得该实体起始地址;及
h4)依据该数据长度自该快闪记忆体的该实体起始地址开始连续读取对应该数据读取指令的数据。
9.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤e)是先将数据排列写入至该快闪储存装置的一缓冲记忆体,再将排列写入后的数据自该缓冲记忆体直接复制至该快闪记忆体并由该实体起始地址开始写入该快闪记忆体。
10.一种快闪记忆体的动态对齐数据方法,运用于具有一微控制器及一快闪记忆体的一快闪储存装置,其特征在于,包括:
a)控制该微控制器接收一第一数据写入指令,其中该第一数据写入指令包括一第一逻辑起始地址;
b)依据该第一逻辑起始地址、该快闪记忆体的一配置单位容量及一初始累积偏移量计算一第一累积偏移量;
c)将该第一逻辑起始地址加上该第一累积偏移量以获得一第一实体起始地址;
d)由该快闪记忆体的该第一实体起始地址开始将对应该第一数据写入指令的数据写入该快闪记忆体;
e)接收一第二数据写入指令,其中该第二数据写入指令包括一第二逻辑起始地址;
f)依据该第二逻辑起始地址、该配置单位容量及该第一累积偏移量计算一第二累积偏移量;
g)将该第二逻辑起始地址加上该第二累积偏移量以获得一第二实体起始地址;及
h)由该快闪记忆体的该第二实体起始地址开始将对应该第二数据写入指令的数据写入该快闪记忆体。
11.如权利要求10所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤b)更包括:
b1)依据该第一逻辑起始地址及该配置单位容量计算一第一偏移量,其中该第一逻辑起始地址及该第一偏移量的和为该配置单位容量的倍数;及
b2)将该第一偏移量加上该初始累积偏移量以获得该第一累积偏移量;
该步骤f)更包括:
f1)依据该第二逻辑起始地址及该配置单位容量计算一第二偏移量,其中该第二逻辑起始地址及该第二偏移量的和为该配置单位容量的倍数;及
f2)将该第二偏移量加上该第一累积偏移量以获得该第二累积偏移量;。
12.如权利要求11所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤b1)是计算该第一逻辑起始地址与该初始累积偏移量的和除以该配置单位容量后的一第一余数,并计算该配置单位容量与该第一余数的一第一差值以获得该第一偏移量;该步骤f1)是计算该第二逻辑起始地址与该第一累积偏移量的和除以该配置单位容量后的一第二余数,并计算该配置单位容量与该第二余数的一第二差值以获得该第二偏移量。
13.如权利要求1所述的快闪记忆体的动态对齐数据方法,其特征在于,该步骤b)之后更包括一步骤i)将该第一逻辑起始地址及该第一累积偏移量对应记录于一查找表;该步骤f)之后更包括一步骤j)将该第二逻辑起始地址及该第二累积偏移量对应记录于该查找表。
14.如权利要求13所述的快闪记忆体的动态对齐数据方法,其特征在于,更包括:
k1)接收一第一数据读取指令,其中该第一数据读取指令包括该第一逻辑起始地址及一第一数据长度;
k2)查询该查找表以取得对应该第一逻辑起始地址的该第一累积偏移量;
k3)将该第一逻辑起始地址加上该第一累积偏移量来获得该第一实体起始地址;
k4)依据该第一数据长度自该快闪记忆体的该第一实体起始地址开始连续读取对应该第一数据读取指令的数据;
k5)接收一第二数据读取指令,其中该第二数据读取指令包括该第二逻辑起始地址及一第二数据长度;
k6)查询该查找表以取得对应该第二逻辑起始地址的该第二累积偏移量;
k7)将该第二逻辑起始地址加上该第二累积偏移量来获得该第二实体起始地址;及
k8)依据该第二数据长度自该快闪记忆体的该第二实体起始地址开始连续读取对应该第二数据读取指令的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710047851.5A CN108334276B (zh) | 2017-01-20 | 2017-01-20 | 快闪记忆体的动态对齐数据方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710047851.5A CN108334276B (zh) | 2017-01-20 | 2017-01-20 | 快闪记忆体的动态对齐数据方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334276A true CN108334276A (zh) | 2018-07-27 |
CN108334276B CN108334276B (zh) | 2021-01-29 |
Family
ID=62921986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710047851.5A Active CN108334276B (zh) | 2017-01-20 | 2017-01-20 | 快闪记忆体的动态对齐数据方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334276B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825435A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200401202A (en) * | 2002-05-30 | 2004-01-16 | Ibm | Direct addressed shared compressed memory system |
US20060136655A1 (en) * | 2004-12-16 | 2006-06-22 | Gorobets Sergey A | Cluster auto-alignment |
US20070143567A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for data alignment in non-volatile memories with a directly mapped file storage system |
US20100169555A1 (en) * | 2008-12-26 | 2010-07-01 | Asmedia Technology Inc. | Method of writing data into flash memory based on file system |
US20100185830A1 (en) * | 2009-01-21 | 2010-07-22 | Micron Technology, Inc. | Logical address offset |
CN105260320A (zh) * | 2015-10-12 | 2016-01-20 | 珠海格力电器股份有限公司 | 用于flash存储器的数据处理方法和装置 |
-
2017
- 2017-01-20 CN CN201710047851.5A patent/CN108334276B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200401202A (en) * | 2002-05-30 | 2004-01-16 | Ibm | Direct addressed shared compressed memory system |
US20060136655A1 (en) * | 2004-12-16 | 2006-06-22 | Gorobets Sergey A | Cluster auto-alignment |
US20070143567A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for data alignment in non-volatile memories with a directly mapped file storage system |
US20100169555A1 (en) * | 2008-12-26 | 2010-07-01 | Asmedia Technology Inc. | Method of writing data into flash memory based on file system |
US20100185830A1 (en) * | 2009-01-21 | 2010-07-22 | Micron Technology, Inc. | Logical address offset |
CN105260320A (zh) * | 2015-10-12 | 2016-01-20 | 珠海格力电器股份有限公司 | 用于flash存储器的数据处理方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825435A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
CN110825435B (zh) * | 2018-08-10 | 2023-01-24 | 昆仑芯(北京)科技有限公司 | 用于处理数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108334276B (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230152969A1 (en) | Memory system and method of controlling memory system | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
US9753847B2 (en) | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
KR101394845B1 (ko) | 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들 | |
US20190391760A1 (en) | Memory system | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
US8996791B2 (en) | Flash memory device, memory control device, memory control method, and storage system | |
JP5010723B2 (ja) | 半導体記憶制御装置 | |
US8825941B2 (en) | SLC-MLC combination flash storage device | |
WO2015185002A1 (zh) | 一种数据写入方法及装置 | |
US20120317365A1 (en) | System and method to buffer data | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
US8521947B2 (en) | Method for writing data into flash memory | |
KR20120086239A (ko) | 메모리 시스템 및 그 동작 방법 | |
WO2015054338A1 (en) | System and method of storing data in a data storage device with a selection of two writing orders in order to improve the reading speed of a differential look ahead reading mode. | |
US8892816B1 (en) | System and method for writing data to a memory | |
CN113419675B (zh) | 用于存储器的写操作方法及读操作方法 | |
TW201807580A (zh) | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 | |
US9298610B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
CN108733576B (zh) | 一种固态硬盘及其内存转换层对映方法 | |
CN116540950B (zh) | 一种存储器件及其写入数据的控制方法 | |
CN114077555A (zh) | 数据存储装置的逻辑到物理映射的方法和*** | |
CN108334276A (zh) | 快闪记忆体的动态对齐数据方法 | |
US20230350798A1 (en) | Namespace management for memory sub-systems |
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 |