CN111045961A - 数据处理方法及使用所述方法的存储控制器 - Google Patents
数据处理方法及使用所述方法的存储控制器 Download PDFInfo
- Publication number
- CN111045961A CN111045961A CN201811194038.1A CN201811194038A CN111045961A CN 111045961 A CN111045961 A CN 111045961A CN 201811194038 A CN201811194038 A CN 201811194038A CN 111045961 A CN111045961 A CN 111045961A
- Authority
- CN
- China
- Prior art keywords
- block
- write
- full
- buffer
- partial
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 239000000872 buffer Substances 0.000 claims abstract description 208
- 238000012546 transfer Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 4
- 238000012005 ligant binding assay Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提出一种数据处理方法及存储控制器。数据处理方法包括:接收写入指令对应的多个写入扇区并将写入扇区传送到部分区块缓冲器或满区块缓冲器;当对应第一区块的写入扇区被传送到部分区块缓冲器时,启动对应第一区块的计时器;当部分区块缓冲器接收到对应第一区块的第一写入扇区,且第一写入扇区与部分区块缓冲器中对应第一区块的写入扇区形成满的第一区块时,第一区块在计时器到期之前或到期时被传送到满区块缓冲器;以及当计时器到期且满的第一区块还没在部分区块缓冲器中形成时,根据对应第一区块的写入扇区进行读取修改写入操作。
Description
技术领域
本发明涉及一种数据处理方法及使用所述方法的存储控制器,尤其涉及一种能够减少读取修改写入(Read-Modify-Write,RMW)操作的执行次数的数据处理方法及使用所述方法的存储控制器。
背景技术
对于存储装置而言,内部数据缓冲器常在存储控制器中使用以调节主机系统及存储媒体之间的数据传输。内部数据缓冲器的单位大小(例如,区块大小)通常是多个主机逻辑区块大小。这是基于主机接口协定并能被档案系统所利用。也就是说,从主机逻辑区块地址(Logic Block Address,LBA)到内部区块地址具有映射关系。举例来说,主机的逻辑区块大小可为512字节且内部缓冲器的单位大小可为4千字节(例如,一个单位对应一个区块且一个区块包括8个大小为512字节的扇区)。
对于主机输入输出写入指令的传输,可能会有最先的几个主机逻辑区块或最后的几个主机逻辑区块无法在存储系统中形成一个完整的内部区块。在使用区块大小作为逻辑转实体映射表的存储系统中,读取修改写入操作需要用于这种类型的部分区块写入。然而,读取修改写入操作花费很多系统资源且降低系统性能。此外,对于有些存储媒体(例如,反及快闪存储器),读取修改写入操作会减少存储媒体的寿命。因此,如何减少存储装置中读取修改写入操作的执行次数,是本领域技术人员应致力的目标。
发明内容
本发明提供一种数据处理方法及使用所述方法的存储控制器,能够减少读取修改写入操作的执行次数。
本发明提出一种数据处理方法,适用于存储控制器。存储控制器用于存取存储媒体并耦接至主机系统。数据处理方法包括:接收写入指令对应的多个写入扇区并将写入扇区传送到部分区块缓冲器或满区块缓冲器,其中写入扇区对应至少一区块;当对应第一区块的写入扇区被传送到部分区块缓冲器时,启动对应第一区块的计时器;当部分区块缓冲器接收到对应第一区块的至少一第一写入扇区,且至少一第一写入扇区与部分区块缓冲器中对应第一区块的写入扇区形成满的第一区块时,第一区块在计时器到期之前或在计时器到期时从部分区块缓冲器被传送到满区块缓冲器;以及当计时器到期且满的第一区块还没在部分区块缓冲器中形成时,根据对应第一区块的写入扇区进行读取修改写入操作。
在本发明的一实施例中,当满区块缓冲器接收到对应第二区块的写入扇区时,部分区块缓冲器中对应第二区块的写入扇区被无效。
在本发明的一实施例中,当满区块缓冲器接收到对应第二区块的写入扇区时,对应第二区块的读取修改写入操作被无效。
在本发明的一实施例中,当写入扇区可形成满区块时,写入扇区被传送到满区块缓冲器;以及当写入扇区无法形成满区块时,写入扇区被传送到部分区块缓冲器。
在本发明的一实施例中,上述读取修改写入操作包括从存储媒体取得至少一读取扇区,并将对应第一区块的写入扇区与至少一读取扇区传送到满区块缓冲器。
在本发明的一实施例中,当至少一第一写入扇区与部分区块缓冲器中对应第一区块的写入扇区形成满的第一区块时,计时器被重置。
在本发明的一实施例中,当计时器到期并根据对应第一区块的写入扇区进行读取修改写入操作时,计时器被重置。
在本发明的一实施例中,当存储控制器支持多个逻辑区块地址大小时,区块大小等于逻辑区块地址大小的公倍数且扇区大小为逻辑区块地址大小的公因数。
在本发明的一实施例中,上述满区块缓冲器及部分区块缓冲器各包括多个项目(entry),每个项目的容量等于区块大小且部分区块缓冲器的每个项目对应一个计时器。
在本发明的一实施例中,当写入扇区无法形成满区块且部分区块缓冲器的每个项目都具有有效数据时,选择计时器最接近到期的部分区块缓冲器的项目的第一项目进行读取修改写入操作并无效第一项目。
在本发明的一实施例中,当满的第一区块在计时器到期之前形成且部分区块缓冲器在计时器到期之前接收到对应第一区块的第二写入扇区,则将第二写入扇区覆写到部分区块缓冲器中的满的该第一区块。
本发明提出一种存储控制器,用于存取存储媒体并耦接至主机系统。存储控制器包括:部分区块缓冲器;满区块缓冲器;写入数据路由器,耦接到部分区块缓冲器及满区块缓冲器;以及处理器,耦接到写入数据路由器、部分区块缓冲器及满区块缓冲器。写入数据路由器接收写入指令对应的多个写入扇区并将写入扇区传送到部分区块缓冲器或满区块缓冲器,其中写入扇区对应至少一区块。当对应第一区块的写入扇区被传送到部分区块缓冲器时,处理器启动对应第一区块的计时器。当部分区块缓冲器接收到对应第一区块的至少一第一写入扇区,且至少一第一写入扇区与部分区块缓冲器中对应第一区块的写入扇区形成满的第一区块时,第一区块在计时器到期之前或在计时器到期时从部分区块缓冲器被传送到满区块缓冲器。当计时器到期且满的第一区块还没在部分区块缓冲器中形成时,处理器根据对应第一区块的写入扇区进行读取修改写入操作。
在本发明的一实施例中,当满区块缓冲器接收到对应第二区块的写入扇区时,部分区块缓冲器中对应第二区块的写入扇区被无效。
在本发明的一实施例中,当满区块缓冲器接收到对应第二区块的写入扇区时,对应第二区块的读取修改写入操作被无效。
在本发明的一实施例中,当写入扇区可形成满区块时,写入扇区被传送到满区块缓冲器;以及当写入扇区无法形成满区块时,写入扇区被传送到部分区块缓冲器。
在本发明的一实施例中,上述读取修改写入操作包括从存储媒体取得至少一读取扇区,并将对应第一区块的写入扇区与至少一读取扇区传送到满区块缓冲器。
在本发明的一实施例中,当至少一第一写入扇区与部分区块缓冲器中对应第一区块的写入扇区形成满的第一区块时,计时器被重置。
在本发明的一实施例中,当计时器到期并根据对应第一区块的写入扇区进行读取修改写入操作时,计时器被重置。
在本发明的一实施例中,当存储控制器支持多个逻辑区块地址大小时,区块大小等于逻辑区块地址大小的公倍数且扇区大小为逻辑区块地址大小的公因数。
在本发明的一实施例中,上述满区块缓冲器及部分区块缓冲器各包括多个项目(entry),每个项目的容量等于区块大小且部分区块缓冲器的每个项目对应一个计时器。
在本发明的一实施例中,当写入扇区无法形成满区块且部分区块缓冲器的每个项目都具有有效数据时,处理器选择计时器最接近到期的部分区块缓冲器的项目的第一项目进行读取修改写入操作并无效第一项目。
在本发明的一实施例中,当满的第一区块在计时器到期之前形成且部分区块缓冲器在计时器到期之前接收到对应第一区块的第二写入扇区,则处理器将第二写入扇区覆写到部分区块缓冲器中的满的该第一区块。
基于上述,本发明的数据处理方法及使用所述方法的存储控制器可将无法形成满区块的写入扇区传送到部分区块缓冲器,并将能够形成满区块的写入扇区传送到满区块缓冲器。当部分区块被传送到部分区块缓冲器时,计时器被启动。当部分区块缓冲器的中对应一个区块的项目的空扇区在计时器到期之前被填满时,处理器将填满的区块传送到满区块缓冲器。当部分区块缓冲器的中对应一个区块的项目在计时器到期时还没被填满,则处理器对没还被填满的区块进行读取修改写入操作。通过本发明的数据处理方法及使用所述方法的存储控制器,可有效地减少读取修改写入操作的执行次数,从而节省系统资源并提高系统性能。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1为根据本发明一实施例的存储控制器的方块图;
图2为根据本发明另一实施例的存储控制器的方块图;
图3A为根据本发明一实施例的部分区块缓冲器处理流程的流程图;
图3B为根据本发明另一实施例的部分区块缓冲器处理流程的流程图;
图4为根据本发明一实施例的满区块缓冲器处理流程的流程图;
图5A及图5B为根据本发明一实施例的数据处理方法的范例;
图6A到图6C为根据本发明一实施例的数据处理方法的另一范例。
附图标号说明:
100、200:存储装置
110、210:存储控制器
120、220:动态随机存取存储器
130、230:存储媒体
140、240:数据输入区块
150:区块数据缓冲器
245:写入数据路由器
251:部分区块缓冲器
252:满区块缓冲器
151、253、256:项目
254:计时器
255:部分区块缓冲器信息表
257:满区块缓冲器信息表
258:部分区块缓冲器信息检查器
160、260:媒体接口区块
170、270:读取修改写入区块
180、181、280、281:处理器
190、290:主机系统
191、291:主机存储器
S301~S310:部分区块缓冲器处理流程的步骤
S401~S414:满区块缓冲器处理流程的步骤
具体实施方式
图1为根据本发明一实施例的存储控制器的方块图。
请参照图1,本发明的存储装置100包括存储控制器110、动态随机存取存储器(Dynamic Random Access Memory,DRAM)120及多个存储媒体130。存储控制器110的数据输入区块140可从主机系统190的主机存储器191接收写入数据。写入数据可被传送到区块数据缓冲器150。区块数据缓冲器150可包括多个项目(entry)151,且每个项目可存储满的(full)区块数据或不满(non-full)的区块数据。满的区块数据包括了对应一个区块的所有扇区数据。不满的区块数据则包括了一个区块的部分扇区数据。当一个项目存储满的区块数据时,此项目的区块数据可被传送到媒体接口区块160并被写入存储媒体130。当一个项目存储不满的区块数据时,不满的区块数据会被传送到读取修改写入区块170利用存储媒体130中的一到多个扇区将区块填满后再回传到区块数据缓冲器150,最后才通过媒体接口区块160写入存储媒体130。存储媒体130可为可复写式非易失性存储器模块(RewritableNon-Volatile Memory Module)。处理器180负责主机系统190的输入输出指令的处理。除了处理器180之外,存储控制器110还可包括一到多个处理器181,负责主机输入输出指令以外的指令的处理。
在本实施例中,只要一个项目151接收到不满的区块数据时,处理器180或处理器181就要进行一次读取修改写入操作。这会花费很多系统资源并降低系统性能。
图2为根据本发明另一实施例的存储控制器的方块图。
请参照图2,图2与图1相同或类似的组件就不再赘述其功能,例如动态随机存取存储器220及处理器280、281。
当数据输入区块240接收到一个写入指令对应的多个写入扇区(或称为写入扇区对应的写入数据)时,会根据写入指令信息对每个写入扇区分派一个区块号码(BlockNumber,BN)、一个扇区号码(Sector Number,SN)及一个满区块指标(Full BlockIndicator,FBI)。在一实施例中,具有同一个区块号码的多个写入扇区可具有连续的扇区号码,且满区块指标用来指示一个写入扇区是否可与同一写入指令中扇区号码相邻的写入扇区形成一个满区块。例如,满区块指标为1的写入扇区代表此写入扇区可与同一写入指令中扇区号码相邻的写入扇区形成一个满区块,而满区块指标为0的写入扇区代表此写入扇区无法与同一写入指令中扇区号码相邻的写入扇区形成一个满区块。
当写入指令对应的多个写入扇区会被传送到写入数据路由器245之后,写入数据路由器245会根据每个写入扇区的满区块指标将写入扇区传送到部分区块缓冲器251或满区块缓冲器252。例如,将满区块指标为0的写入扇区传送到部分区块缓冲器(PartialBlock Buffer,PBB)251并将满区块指标为1的写入扇区传送到满区块缓冲器(Full BlockBuffer)252。
部分区块缓冲器251可包括一到多个项目(Entry)253。在一实施例中,每个项目的容量等于区块大小且每个项目所包含的每个单元的容量等于扇区大小。每个项目253可对应设置一个计时器254。
部分区块缓冲器251还可包括一个部分区块缓冲器信息表(PBB InformationTable,PIT)255,记录每个项目253的区块号码(BN)、扇区有效比特(Sector Valid Bit,SVB)、占用比特(Occupy Bit,OB)及有效比特(Valid Bit,VB)。区块号码代表一个项目253对应的区块号码。扇区有效比特代表一个项目253中的一个单元是否存储对应写入扇区的有效数据。占用比特代表一个项目253是否正在被使用。有效比特代表一个项目253是否还可接收来自写入数据路由器245的写入扇区数据。
当部分区块缓冲器251从写入数据路由器245接收到写入扇区的传输请求时,部分区块缓冲器251会查找部分区块缓冲器信息表255。当部分区块缓冲器251的其中一个项目253的OB=1且VB=1且此项目253的BN与接收的写入扇区的BN相同时,这个写入扇区被写入此项目253的一个单元且此单元的SVB被更新为1。当部分区块缓冲器251没有项目253能符合OB=1且VB=1且此项目253的BN与接收的写入扇区的BN相同时,部分区块缓冲器251选择一个OB=0的项目253并将此项目的OB与VB设定为1,起始此项目253对应的计时器254,根据扇区数据更新BN及SVB并将此扇区写入项目253中。
当一个项目253的所有单元的SVB=1且满区块缓冲器252准备要接收此项目253的数据时,此项目253对应的计时器254被重置,VB被设定为0并开始传送满区块的项目数据到满区块缓冲器252。当满区块的项目数据传送完成之后,将此项目253的OB与SVB设定为0。
当一个项目253对应的计时器254已经到期且读取修改写入区块270准备要处理此项目253的数据时,此项目253对应的计时器254被重置,VB被设定为0并开始传送此项目253的部分区块数据到读取修改写入区块270。当部分区块数据传送完成之后,将此项目的OB与SVB设定为0。
满区块缓冲器252可包括满区块缓冲器信息表(FBB Information Table,FIT)257及部分区块缓冲器信息检查器(PBB Information Checker,PIC)258。满区块缓冲器252可包括一到多个项目256且每个项目256的大小等于区块大小。满区块缓冲器信息表257记录每个项目256的BN、SVB、OB及VB,与部分区块缓冲器信息表255类似。
当满区块缓冲器252从写入数据路由器245接收到写入扇区的传输请求时,满区块缓冲器252会查找满区块缓冲器信息表257。当满区块缓冲器252的其中一个项目256的OB=1且VB=1且此项目256的BN与接收的写入扇区的BN相同时,这个写入扇区被写入此项目256的一个单元且此单元的SVB被更新为1。当满区块缓冲器252没有项目256能符合OB=1且VB=1且此项目256的BN与接收的写入扇区的BN相同时,满区块缓冲器252选择一个OB=0的项目256并将此项目的OB与VB设定为1,并根据扇区数据更新BN及SVB并将此扇区写入项目256中。
值得注意的是,当写入扇区在满区块缓冲器252产生一个满区块,也就是一个项目256的全部SVB从0被更新为1时,满区块缓冲器252会通知读取修改写入区块270,以将与此满区块的区块号码相同的扇区的读取修改写入程序无效。此外,满区块缓冲器252还会启动部分区块缓冲器信息检查器258去扫描部分区块缓冲器251中的部分区块缓冲器信息表255以判断是否有OB=1且VB=1的项目253的BN与满区块的区块号码相同。若找找符合此条件的项目253,则无效此项目253并将此项目253的OB、SVB、VB都设定为0。
当满区块缓冲器252从部分区块缓冲器251接收到满区块数据传输请求时,选择一个OB=0的项目256将OB与VB设定为1,根据区块信息更新BN及SVB(全部为1),并将满区块写到此项目256。同时,通知读取修改写入区块270以将与此满区块的区块号码相同的扇区的读取修改写入程序无效。
当满区块缓冲器252从读取修改写入区块270接收到满区块数据传输请求时,选择一个OB=0的项目256将OB与VB设定为1,根据区块信息更新BN及SVB(全部为1),并将满区块写到此项目256。读取修改写入区块270会将从部分区块缓冲器251来的部分区块数据与从媒体接口区块260来的部分区块数据合并成一个满区块,并将合并的满区块传送到满区块缓冲器252。
在一实施例中,媒体接口区块260会从满区块缓冲器252接收满区块数据,并通过将基于区块(block-based)的数据转换成具有媒体存取协定的格式(format of mediaaccessing protocol)的数据,以将满区块数据写入到存储媒体230。媒体接口区块260也会通过将具有媒体存取协定的格式的数据转换成基于扇区的数据,以将读取数据传送到读取修改写入区块270来进行读取修改写入程序。
当媒体接口区块260准备要处理满区块缓冲器252的一个项目256的项目数据时,满区块缓冲器252将VB设定为0并开始传送满区块项目数据到媒体接口区块260,接着当数据传输完成时将OB及SVB设定为0。
在一实施例中,主机系统290所定义的逻辑区块可被分割成一到多个扇区。也就是说,扇区大小可相同于逻辑区块大小或逻辑区块大小的几分之一(integer divisor)。在存储装置200可支持多种逻辑区块大小的情况下,若存储装置200只使用一组部分区块缓冲器251及满区块缓冲器252,则可选择多种逻辑区块大小的公因数(例如,最大公因数)作为扇区大小;若存储装置200使用多组部分区块缓冲器251及满区块缓冲器252,则每组部分区块缓冲器251及满区块缓冲器252可定义不同的扇区大小。
在一实施例中,区块大小可定义为相同或不同于存储媒体230的存取单元大小。在存储装置200可支持多种逻辑区块大小的情况下,若存储装置200只使用一组部分区块缓冲器251及满区块缓冲器252,则可选择多种逻辑区块大小的公倍数(例如,最小公倍数)作为区块大小;若存储装置200使用多组部分区块缓冲器251及满区块缓冲器252,则每组部分区块缓冲器251及满区块缓冲器252可定义不同的区块大小。
在一实施例中,主机系统290发送的输入输出指令及对应的数据传输可通过主机接口协定来达成。主机接口协定例如是快速非易失性存储器(Non-Volatile MemoryExpress,NVMe)、串行ATA(Serial Advanced Technology Attachment,SATA)、通用串行总线(Universal Serial Bus,USB)、小型电脑系统接口(Small Computer SystemInterface,SCSI)或其他协定。
值得注意的是,当写入数据路由器245有部分区块数据要传送到部分区块缓冲器251但部分区块缓冲器251没有项目253能符合OB=1且VB=1且此项目253的BN与接收的写入扇区的BN相同且部分区块缓冲器251没有OB=0的项目253时,存储控制器210可根据一个预定规则选出一个OB=1的项目253进行读取修改写入操作,或是直接暂停部分区块数据的传输直到有OB=0的项目253出现。在一实施例中,上述预定规则可为选出计时器最接近到期的项目253进行读取修改写入操作。当写入数据路由器245有满区块数据要传送到满区块缓冲器252但满区块缓冲器252没有OB=0的项目256时,写入数据路由器245可暂停满区块数据的传输直到有OB=0的项目256出现。
在一实施例中,写入数据路由器245、部分区块缓冲器信息表255、满区块缓冲器信息表257、部分区块缓冲器信息检查器258可以韧件方式或以硬件电路方式实作。本发明不限定上述元件的实作方式。
图3A为根据本发明一实施例的部分区块缓冲器处理流程的流程图。
在步骤S301中,存储控制器处于闲置状态。
在步骤S302中,判断是否有数据传输请求。
若无数据传输请求,则回到步骤S301。若有数据传输请求,在步骤S303中,查找部分区块缓冲器信息表。
在步骤S304中,判断是否有VB=1的项目具有相同BN。具体来说,判断是否有VB=1的PBB的项目与数据传输请求对应的写入扇区具有相同BN。
若没有VB=1的项目具有相同BN,则在步骤S305中,选择一个OB=0的项目将OB及VB设定为1,启动计时器,更新BN及SVB并将扇区数据写入项目,并回到步骤S301。
若有VB=1的项目具有相同BN,在步骤S306中,将扇区数据写入此项目并更新SVB。
在步骤S307中,判断是否产生满区块。
若已经产生满区块,在步骤S308中,重置计时器,将VB设定为0,并将满区块传送到FBB,并回到步骤S301。
若尚未产生满区块,在步骤S309中,判断此项目的计时器是否到期。
若此项目的计时器还没到期,回到步骤S301。
若此项目的计时器已经到期,在步骤S310中,重置计时器,将VB设定为0,并将部分区块的项目数据传送到读取修改写入区块,并回到步骤S301。
图3B为根据本发明另一实施例的部分区块缓冲器处理流程的流程图。
图3B的各个步骤S301到S310的内容与图3A的各个步骤S301到S310的内容相同,但图3B的步骤S307到S310的执行顺序与图3A的S307到S310的执行顺序不同。具体来说,在图3A中,在产生满区块(S307,是)或计时器到期(S309,是)的情况下,PBB都会被释放(即,PBB的项目数据被传送到FBB或读取修改写入区块)。然而,在图3B中,只有在计时器到期(S309,是)时PBB才会被释放。也就是说,在图3B中,即使有满区块在计时器到期之前产生,PBB也暂时不会被释放,使得满区块中的扇区数据在计时器到期之前有机会被覆写(overwritten)。
图4为根据本发明一实施例的满区块缓冲器处理流程的流程图。
在步骤S401中,存储控制器处于闲置状态。
在步骤S402中,判断是否有数据传输请求。
若无数据传输请求,则回到步骤S401。若有数据传输请求,在步骤S403中,判断数据传输请求是否从写入数据路由器来。
若数据传输请求从写入数据路由器来,在步骤S404中,判断是否有VB=1的FBB项目具有相同BN。具体来说,判断是否有VB=1的FBB的项目与数据传输请求对应的写入扇区具有相同BN。
若没有VB=1的项目具有相同BN,则在步骤S405中,选择一个OB=0的项目将OB及VB设定为1,更新BN及SVB并将扇区数据写入项目。
若有VB=1的项目具有相同BN,则在步骤S406中,将扇区数据写入此项目并更新SVB。
在步骤S407中,判断是否产生满区块。
若已经产生满区块,在步骤S408中,部分区块缓冲器信息检查器扫描部分区块缓冲器信息表。
在步骤S409中,判断判断是否有VB=1的PBB项目具有相同BN。
若没有VB=1的PBB项目具有相同BN,在步骤S410中,开始传输满区块项目数据到媒体接口区块。
若有VB=1的PBB项目具有相同BN,在步骤S411中,无效具有相同BN的PBB项目并清除此PBB项目的OB、SVB及VB。
在步骤S412中,通知读取修改写入区块来无效冗余的读取修改写入操作。也就是无效具有相同BN的写入扇区的读取修改写入操作。
若在S403中,若数据传输请求不是从写入数据路由器来,则在步骤S413中,选择一个OB=0的项目将OB及VB设定为1,更新BN及SVB并将满区块数据写入项目。
在步骤S414中,判断请求是否从PBB来。
若请求从PBB来,则进入步骤S412。
若请求不从PBB来,代表请求是从读取修改写入区块来,则进入步骤S410。
图5A及图5B为根据本发明一实施例的数据处理方法的范例。
请参照图5A及图5B,假设区块大小等于扇区大小的八倍且扇区大小等于逻辑区块地址的大小。图5A显示了存储控制器210接收写入指令W1及W2,W1对应的SLBA(即,起始LBA)及ELBA(即,结束LBA)为8及14,W2对应的SLBA及ELBA为15及23。W1的LBA可被分为7个扇区,其中BN为1且SN为0到6。由于W1对应的LBA无法形成一个满区块,因此FBI全部被设定为0。W2的LBA可被分为9个扇区,其中LBA15的BN为1且SN为7,而剩余LBA的BN为2且SN为0到7。由于W2对应的LBA16到LBA23可形成一个满区块,因此对应LBA16到LBA23的FBI被设定为1。
在图5B的初始状态(即,状态0)中,PBB的SVB及PIT与FBB的SVB及FIT的栏位都为0。
在状态(state)1中,写入数据路由器245分派W1的数据到PBB的项目A并更新PIT。计时器(TMR)开始计时(Start)。
在状态2中,PBB的项目A形成满区块因此将计时器重置(Rst)。写入数据路由器245分派W2的数据到PBB的项目A及FBB项目P并更新FIT。
在状态3中,由于PBB的项目A形成满区块,因此PBB的项目A的数据被传送到FBB项目Q。在数据传送过程中PBB的项目A的VB会被设定为0。
在状态4中,FBB项目P的数据被传送到媒体接口区块260,且所有PBB项目A的数据已经传送到FBB的项目Q。因此,FBB的项目P的VB会被设定成0。PBB的项目A的OB会被设定成0以代表PBB的项目A已经不存在有效数据。
在状态5中,所有FBB项目P的数据已经传送到媒体接口区块260,且FBB项目Q的数据被传送到媒体接口区块260。因此,FBB项目P的OB会被设定成0。FBB项目Q的VB会被设定成0。
在状态6中,所有FBB项目Q的数据已经传送到媒体接口区块260。因此,FBB项目Q的OB会被设定成0。
在本范例中,若没有采用部分区块缓冲器251及满区块缓冲器252,在写入W1的LBA8到LBA14及写入W2的LBA15各需要执行一次读取修改写入操作。然而,在采用部分区块缓冲器251及满区块缓冲器252的情况下,则不需要执行读取修改写入操作。也就是说,执行读取修改写入操作的次数可从2次降低为0次。
图6A到图6C为根据本发明一实施例的数据处理方法的另一范例。
请参照图6A到图6C,假设区块大小等于扇区大小的八倍且扇区大小等于逻辑区块地址的大小。图6A显示了存储控制器210接收写入指令W1及W2,W1对应的SLBA及ELBA为39及58,W2对应的SLBA及ELBA为54及63。填写每个LBA对应的BN、SN、FBI的方法与图5A类似,因此不再赘述。
在状态(state)0中,PBB的SVB及PIT与FBB的SVB及FIT的栏位都为0。
在状态1中,写入数据路由器245分派W1的数据到PBB项目A及B。写入数据路由器245分派W1的数据到FBB项目P及Q。PIT及FIT被更新。
在状态2中,写入数据路由器245分派W2的数据到PBB项目C。写入数据路由器245分派W2的数据到FBB项目R。由于PIC 258判断PBB项目B的BN与FBB项目R的BN相同,因此PBB项目B会被无效,对应的OB及VB会被设定成0,且对应的计时器会被重置(Rst)。值得注意的是,在计时器(TMR)栏位的Run代表计时器已经开始且正在计时。
在状态3中,FBB项目P对应区块5的数据被传送到媒体接口区块260。由于PBB项目A的计时器到期(Exp),因此PBB项目A中对应区块4的数据会被传送到读取修改写入区块270。PBB项目A的VB会被设定为0且PBB项目P的VB也被设定为0。
在状态4中,所有PBB项目A对应区块4的数据已经传送到读取修改写入区块270。所有FBB项目P对应区块5的数据已经被传送到媒体接口区块260。FBB项目Q的数据被传送到媒体接口区块260。PBB项目A的OB会被设定为0且计时器会被重置。
在状态5中,FBB项目P从读取修改写入区块270接收到对应区块4的数据。所有FBB项目Q对应区块6的数据已经被传送到媒体接口区块260。FBB项目R对应区块7的数据被传送到媒体接口区块260。由于PBB项目C的计时器到期,因此PBB项目C中对应区块6的数据会被传送到读取修改写入区块270。
在状态6中,所有PBB项目C对应区块6的数据已经传送到读取修改写入区块270。所有FBB项目R对应区块7的数据已经被传送到媒体接口区块260。FBB项目P对应区块4的数据被传送到媒体接口区块260。
在状态7中,所有FBB项目P对应区块4的数据已经被传送到媒体接口区块260。FBB项目R从读取修改写入区块270接收到对应区块6的数据。
在状态8中,FBB项目R对应区块6的数据被传送到媒体接口区块260。
在状态9中,所有FBB项目R对应区块6的数据已经被传送到媒体接口区块260。
在本范例中,若没有采用部分区块缓冲器251及满区块缓冲器252,在写入W1的LBA39及LBA56到LBA58及写入W2的LBA54到LBA55各需要执行一次读取修改写入操作,共三次读取修改写入操作。然而,在采用部分区块缓冲器251及满区块缓冲器252的情况下,则只需要执行2次读取修改写入操作(即,对区块4及区块6执行读取修改写入操作)。也就是说,执行读取修改写入操作的次数可从3次降低为2次。
综上所述,本发明的数据处理方法及使用所述方法的存储控制器可将无法形成满区块的写入扇区传送到部分区块缓冲器,并将能够形成满区块的写入扇区传送到满区块缓冲器。当部分区块被传送到部分区块缓冲器时,计时器被启动。当部分区块缓冲器的中对应一个区块的项目的空扇区在计时器到期之前被填满时,处理器将填满的区块传送到满区块缓冲器。当部分区块缓冲器的中对应一个区块的项目在计时器到期时还没被填满,则处理器对没还被填满的区块进行读取修改写入操作。通过本发明的数据处理方法及使用所述方法的存储控制器,可有效地减少读取修改写入操作的执行次数,从而节省系统资源并提高系统性能。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中技术人员,在不脱离本发明的精神和范围内,当可作些许的更改与润饰,故本发明的保护范围当视权利要求所界定的为准。
Claims (22)
1.一种数据处理方法,适用于存储控制器,所述存储控制器用于存取存储媒体并耦接至主机系统,其特征在于,所述数据处理方法包括:
接收写入指令对应的多个写入扇区并将所述多个写入扇区传送到一部分区块缓冲器或满区块缓冲器,其中所述多个写入扇区对应至少一区块;
当对应第一区块的所述多个写入扇区被传送到所述部分区块缓冲器时,启动对应所述第一区块的计时器;
当所述部分区块缓冲器接收到对应所述第一区块的至少一第一写入扇区,且所述至少一第一写入扇区与所述部分区块缓冲器中对应所述第一区块的所述多个写入扇区形成满的所述第一区块时,所述第一区块在所述计时器到期之前或在所述计时器到期时从所述部分区块缓冲器被传送到所述满区块缓冲器;以及
当所述计时器到期且满的所述第一区块还没在所述部分区块缓冲器中形成时,根据对应所述第一区块的所述多个写入扇区进行读取修改写入操作。
2.根据权利要求1所述的数据处理方法,其中当所述满区块缓冲器接收到对应第二区块的所述多个写入扇区时,所述部分区块缓冲器中对应所述第二区块的所述多个写入扇区被无效。
3.根据权利要求1所述的数据处理方法,其中当所述满区块缓冲器接收到对应第二区块的所述多个写入扇区时,对应所述第二区块的所述读取修改写入操作被无效。
4.根据权利要求1所述的数据处理方法,其中当所述多个写入扇区可形成满区块时,所述多个写入扇区被传送到所述满区块缓冲器;以及当所述多个写入扇区无法形成满区块时,所述多个写入扇区被传送到所述部分区块缓冲器。
5.根据权利要求1所述的数据处理方法,其中所述读取修改写入操作包括从所述存储媒体取得至少一读取扇区,并将对应所述第一区块的所述多个写入扇区与所述至少一读取扇区传送到所述满区块缓冲器。
6.根据权利要求1所述的数据处理方法,其中当所述至少一第一写入扇区与所述部分区块缓冲器中对应所述第一区块的所述多个写入扇区形成满的所述第一区块时,所述计时器被重置。
7.根据权利要求1所述的数据处理方法,其中当所述计时器到期并根据对应所述第一区块的所述多个写入扇区进行所述读取修改写入操作时,所述计时器被重置。
8.根据权利要求1所述的数据处理方法,其中当所述存储控制器支持多个逻辑区块地址大小时,区块大小等于所述多个逻辑区块地址大小的公倍数且扇区大小为所述多个逻辑区块地址大小的公因数。
9.根据权利要求1所述的数据处理方法,其中所述满区块缓冲器及所述部分区块缓冲器各包括多个项目,每个所述多个项目的容量等于区块大小且所述部分区块缓冲器的每个所述多个项目对应一个所述计时器。
10.根据权利要求9所述的数据处理方法,其中当所述多个写入扇区无法形成满区块且所述部分区块缓冲器的每个所述多个项目都具有有效数据时,选择所述计时器最接近到期的所述部分区块缓冲器的所述多个项目的第一项目进行所述读取修改写入操作并无效所述第一项目。
11.根据权利要求1所述的数据处理方法,其中当满的所述第一区块在所述计时器到期之前形成且所述部分区块缓冲器在所述计时器到期之前接收到对应所述第一区块的第二写入扇区,则将所述第二写入扇区覆写到所述部分区块缓冲器中的满的所述第一区块。
12.一种存储控制器,用于存取存储媒体并耦接至主机系统,其特征在于,所述存储控制器包括:
部分区块缓冲器;
满区块缓冲器;
写入数据路由器,耦接到所述部分区块缓冲器及所述满区块缓冲器;以及
处理器,耦接到所述写入数据路由器、所述部分区块缓冲器及所述满区块缓冲器,其中
所述写入数据路由器接收写入指令对应的多个写入扇区并将所述多个写入扇区传送到部分区块缓冲器或满区块缓冲器,其中所述多个写入扇区对应至少一区块;
当对应第一区块的所述多个写入扇区被传送到所述部分区块缓冲器时,所述处理器启动对应所述第一区块的计时器;
当所述部分区块缓冲器接收到对应所述第一区块的至少一第一写入扇区,且所述至少一第一写入扇区与所述部分区块缓冲器中对应所述第一区块的所述多个写入扇区形成满的所述第一区块时,所述第一区块在所述计时器到期之前或在所述计时器到期时从所述部分区块缓冲器被传送到所述满区块缓冲器;以及
当所述计时器到期且满的所述第一区块还没在所述部分区块缓冲器中形成时,所述处理器根据对应所述第一区块的所述多个写入扇区进行读取修改写入操作。
13.根据权利要求12所述的存储控制器,其中当所述满区块缓冲器接收到对应第二区块的所述多个写入扇区时,所述部分区块缓冲器中对应所述第二区块的所述多个写入扇区被无效。
14.根据权利要求12所述的存储控制器,其中当所述满区块缓冲器接收到对应第二区块的所述多个写入扇区时,对应所述第二区块的所述读取修改写入操作被无效。
15.根据权利要求12所述的存储控制器,其中当所述多个写入扇区可形成满区块时,所述多个写入扇区被传送到所述满区块缓冲器;以及当所述多个写入扇区无法形成满区块时,所述多个写入扇区被传送到所述部分区块缓冲器。
16.根据权利要求12所述的存储控制器,其中所述读取修改写入操作包括从所述存储媒体取得至少一读取扇区,并将对应所述第一区块的所述多个写入扇区与所述至少一读取扇区传送到所述满区块缓冲器。
17.根据权利要求12所述的存储控制器,其中当所述至少一第一写入扇区与所述部分区块缓冲器中对应所述第一区块的所述多个写入扇区形成满的所述第一区块时,所述计时器被重置。
18.根据权利要求12所述的存储控制器,其中当所述计时器到期并根据对应所述第一区块的所述多个写入扇区进行所述读取修改写入操作时,所述计时器被重置。
19.根据权利要求12所述的存储控制器,其中当所述存储控制器支持多个逻辑区块地址大小时,区块大小等于所述多个逻辑区块地址大小的公倍数且扇区大小为所述多个逻辑区块地址大小的公因数。
20.根据权利要求12所述的存储控制器,其中所述满区块缓冲器及所述部分区块缓冲器各包括多个项目,每个所述多个项目的容量等于区块大小且所述部分区块缓冲器的每个所述多个项目对应一个所述计时器。
21.根据权利要求20所述的存储控制器,其中当所述多个写入扇区无法形成满区块且所述部分区块缓冲器的每个所述多个项目都具有有效数据时,所述处理器选择所述计时器最接近到期的所述部分区块缓冲器的所述多个项目的第一项目进行所述读取修改写入操作并无效所述第一项目。
22.根据权利要求12所述的存储控制器,其中当满的所述第一区块在所述计时器到期之前形成且所述部分区块缓冲器在所述计时器到期之前接收到对应所述第一区块的第二写入扇区,则所述处理器将所述第二写入扇区覆写到所述部分区块缓冲器中的满的所述第一区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811194038.1A CN111045961B (zh) | 2018-10-12 | 2018-10-12 | 数据处理方法及使用所述方法的存储控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811194038.1A CN111045961B (zh) | 2018-10-12 | 2018-10-12 | 数据处理方法及使用所述方法的存储控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045961A true CN111045961A (zh) | 2020-04-21 |
CN111045961B CN111045961B (zh) | 2023-10-20 |
Family
ID=70230608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811194038.1A Active CN111045961B (zh) | 2018-10-12 | 2018-10-12 | 数据处理方法及使用所述方法的存储控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045961B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226999A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为技术有限公司 | 应用于固态硬盘的存储方法及存储控制器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5235693A (en) * | 1989-01-27 | 1993-08-10 | Digital Equipment Corporation | Method and apparatus for reducing buffer storage in a read-modify-write operation |
WO2015099922A1 (en) * | 2013-12-26 | 2015-07-02 | Intel Corporation | Managing a transfer buffer for a non-volatile memory |
CN107783916A (zh) * | 2016-08-26 | 2018-03-09 | 大心电子股份有限公司 | 数据传输方法、存储控制器与清单管理电路 |
TWI668704B (zh) * | 2018-10-01 | 2019-08-11 | 大陸商深圳大心電子科技有限公司 | 資料處理方法及使用所述方法的儲存控制器 |
-
2018
- 2018-10-12 CN CN201811194038.1A patent/CN111045961B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5235693A (en) * | 1989-01-27 | 1993-08-10 | Digital Equipment Corporation | Method and apparatus for reducing buffer storage in a read-modify-write operation |
WO2015099922A1 (en) * | 2013-12-26 | 2015-07-02 | Intel Corporation | Managing a transfer buffer for a non-volatile memory |
CN107783916A (zh) * | 2016-08-26 | 2018-03-09 | 大心电子股份有限公司 | 数据传输方法、存储控制器与清单管理电路 |
TWI668704B (zh) * | 2018-10-01 | 2019-08-11 | 大陸商深圳大心電子科技有限公司 | 資料處理方法及使用所述方法的儲存控制器 |
US20200104072A1 (en) * | 2018-10-01 | 2020-04-02 | Shenzhen Epostar Electronics Limited Co. | Data management method and storage controller using the same |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226999A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为技术有限公司 | 应用于固态硬盘的存储方法及存储控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN111045961B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI668704B (zh) | 資料處理方法及使用所述方法的儲存控制器 | |
CN102763090B (zh) | 用于利用nand存储器件同时读写的系统和方法 | |
EP3792776B1 (en) | Nvme-based data reading method, apparatus and system | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
US9015445B2 (en) | Method and system for manipulating data | |
US20130246716A1 (en) | Memory system and data writing method | |
CN102279712A (zh) | 一种适用于互联网存储系统的存储控制方法、系统和装置 | |
CN113282234B (zh) | 存储装置、存储系统、及其操作方法 | |
US11550504B2 (en) | System including an application processor and a data storage device providing data | |
US11520520B2 (en) | Memory system and method of controlling nonvolatile memory | |
JP5152006B2 (ja) | 記憶装置、記憶装置のデータ転送方法 | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
WO2008020389A2 (en) | Flash memory access circuit | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
CN111045961B (zh) | 数据处理方法及使用所述方法的存储控制器 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
US20060277326A1 (en) | Data transfer system and method | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus | |
CN109165172B (zh) | 缓存数据处理方法及相关设备 | |
JP3747213B1 (ja) | シーケンシャルromインターフェース対応nand型フラッシュメモリーデバイス及びそのコントローラ | |
TWI844174B (zh) | 主機命令的邏輯位址區間搜索方法及裝置 | |
CN111158582A (zh) | 存储装置和电子装置 | |
KR102697447B1 (ko) | 하프-매치(half match) 중복 제거를 수행하는 메모리 시스템 및 이의 동작 방법 | |
TW202422344A (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
KR20230034535A (ko) | 플래시 메모리 저장장치의 동작방법 |
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 |