CN118051165A - 固态硬盘及其数据缓冲区管理方法 - Google Patents
固态硬盘及其数据缓冲区管理方法 Download PDFInfo
- Publication number
- CN118051165A CN118051165A CN202211400668.6A CN202211400668A CN118051165A CN 118051165 A CN118051165 A CN 118051165A CN 202211400668 A CN202211400668 A CN 202211400668A CN 118051165 A CN118051165 A CN 118051165A
- Authority
- CN
- China
- Prior art keywords
- buffer
- lock
- operation command
- command
- processor
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 267
- 239000007787 solid Substances 0.000 title claims abstract description 52
- 238000007726 management method Methods 0.000 title claims abstract description 43
- 238000010586 diagram Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001680 brushing effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种固态硬盘及其数据缓冲区管理方法,所述固态硬盘包括至少一个处理器,所述数据缓冲区管理方法包括:处理器根据操作命令发出锁申请请求,以请求为该操作命令分配锁,所述操作命令包括主机下发的命令和固件服务任务;以及执行所述操作命令,其中,当所述操作命令分配到锁时,根据所述操作命令提供相应的可申请的最大缓冲区,以及给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。本申请提供的固态硬盘及其数据缓冲区管理方法,通过锁控制一些操作命令申请缓冲区数量的上限,从而保证获取到锁的命令能够申请到足够的缓冲区,提高缓冲区的利用率。
Description
技术领域
本申请涉及固态硬盘技术领域,特别涉及一种固态硬盘及其数据缓冲区管理方法。
背景技术
固态硬盘(SSD,Solid State Drives)是用固态电子存储芯片制作的存储硬盘,主要由控制器,存储介质和缓存单元组成。目前最主流的固态硬盘采用闪存存储器(FlashMemory)作为存储介质来存储数据,而采用控制器内部的SRAM(Static Random AccessMemory)或外部DRAM(Dynamic Random Access Memory)作为缓存。
对于DRAM-LESS方案的SSD而言,在SRAM当中分配有一定的空间作为数据缓冲池(Data Buffer Pool),数据缓冲池用于存储以下内容:1)主机下发的写命令对应的数据,2)主机下发的读命令对应的数据,3)刷表(Table Flush)时存储需要刷入NAND的L2P数据,4)垃圾回收操作(GC)时存储垃圾回收源区块(GC source block)的有效数据等。数据缓冲池的空间大小根据实际情况而定,如可以分配512KB的空间用于当作数据缓冲池,数据缓冲池包括多个数据缓冲区。一般而言,DRAM-LESS方案采用的二级映射表的映射颗粒度为4KB,即一个数据缓冲区可存储4KB的数据。
在已有的缓冲区分配的管理中,仅考虑保证某一操作模块的执行来控制不同操作命令申请缓冲区数量的上下限,在缓冲区数量有限时,对于有硬件(HW)自动申请缓冲区的方案下,该配置模式会造成一些操作命令申请不到空闲的缓冲区,进而造成一定的资源浪费。
发明内容
鉴于上述问题,本申请的目的在于提供一种固态硬盘及其数据缓冲区管理方法,通过锁控制一些操作命令申请缓冲区数量的上限,从而保证申请到锁的操作命令能够分配到足够的缓冲区,提高缓冲区的利用率。
根据本申请的一方面,提供一种固态硬盘的数据缓冲区管理方法,所述固态硬盘包括至少一个处理器,所述数据缓冲区管理方法包括:
处理器根据操作命令发出锁申请请求,以请求为该操作命令分配锁,所述操作命令包括主机下发的命令和固件服务任务;以及
执行所述操作命令,其中,当所述操作命令分配到锁时,根据所述操作命令提供相应的可申请的最大缓冲区,以及给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。
可选地,当所述操作命令未分配到锁时,根据所述操作命令提供相应的可申请的最小缓冲区。
可选地,不同的操作命令对应不同的缓冲编号,不同的缓冲编号对应的可申请的最小缓冲区和可申请的最大缓冲区的上限和下限不同。
可选地,分配到锁的所述操作命令为主机下发的写操作命令时,根据写操作命令提供相应的可申请的最大缓冲区为:预留量+当前编程所需的缓冲区,其中,所述预留量为:当所述写操作命令未分配到锁时,根据所述写操作命令提供相应的可申请的最小缓冲区。
可选地,所述固态硬盘还包括写高速缓冲器,当所述写操作命令未分配到锁时,限制所述写高速缓冲器中存储的命令描述符的数量为所述预留量。
可选地,分配到锁的所述操作命令为固件服务任务时,根据固件服务任务命令提供相应的可申请的最大缓冲区为:当前编程所需的分配单元对应的缓冲区。
可选地,所述操作命令执行完后,释放锁以及相应数量的缓冲区。
可选地,根据分配到锁的所述操作命令,将当前编程所需数量的分配单元对应的命令描述符推至先进先出队列中,以提供当前编程所需的缓冲区。
根据本申请的另一方面,提供一种固态硬盘,包括:主控芯片和闪存,主控芯片包括:
接口,用于与主机连接;
处理器,与所述接口连接,用于接收主机下发的操作命令;
缓冲池,与所述处理器连接,用于执行和存储所述操作命令;
锁管理模块,与所述处理器连接,用于接收所述操作命令的锁申请请求和分配锁,
其中,所述锁管理模块通过分配锁限制所述操作命令所能申请的缓冲区数量,同一时间,只有一个操作命令能够分配到锁,当操作命令分配到锁时,所述缓冲池根据所述操作命令提供相应的可申请的最大缓冲区,以及给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。
可选地,
所述处理器包括处理器一和处理器二,所述主控芯片还包括:
写高速缓冲器,与所述处理器一连接;
先进先出队列,分别与所述处理器一和所述处理器二连接,
其中,仅在主机写命令申请到锁时,从所述写高速缓冲器中推送当前一轮编程所需的分配单元对应的命令描述符到先进先出队列当中。
本申请提供的固态硬盘及其数据缓冲区管理方法,通过锁限制一些操作命令申请缓冲区数量的上限,使未能申请到锁的操作命令所能申请缓冲区数量的上限保持在维持性能所需的数量,从而对于SRAM中的缓冲区空间不足时,可以保证申请到锁的操作命令能够分配到足够的缓冲区,提高缓冲区的利用率。在缓冲区数量有限的情况下,该方法可以保证各个操作命令都能顺利执行。
进一步地,在多处理器的固态硬盘的写操作命令中,通过限制缓冲区中写高速缓冲器中存储的命令描述符的数量上限,以及仅允许写操作命令在申请到锁时,才能从写高速缓冲器中取出当前一轮编程所需的分配单元对应的描述符,并将其推进先进先出队列,从而控制了写操作命令在没有申请到锁的情况下,可申请到的缓冲区数量保持在下限,进而提高了其他操作命令在申请到锁的情况下,申请到足够的缓冲区数量的几率,从而提高缓冲区的利用率。
进一步地,锁在同一时间只有一个操作命令能够申请成功,因此其余没有申请到锁的操作命令申请到缓冲区的数量受到了限制,保证了申请到锁的操作命令在单位时间内可以申请到更多的缓冲区,提高了该操作命令的性能。
进一步地,本申请的提供的固态硬盘的数据缓冲区管理方法,可以适配更多的有着不同编程特性的NAND。
附图说明
通过以下参照附图对本申请实施例的描述,本申请的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1a和图1b示出了根据现有技术的固态硬盘的编程示意图;
图2示出了根据本申请实施例的固态硬盘的数据缓冲区管理方法;
图3示出了根据本申请第一实施例的固态硬盘的数据缓冲区管理结构图;
图4示出了根据本申请第二实施例的固态硬盘的数据缓冲区管理结构图;
图5示出了图4的数据缓冲区管理结构图中锁限制的位置。
具体实施方式
以下将参照附图更详细地描述本申请。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。此外,可能未示出某些公知的部分。为了简明起见,可以在一幅图中描述经过数个步骤后获得的半导体结构。
应当理解,在描述器件的结构时,当将一层、一个区域称为位于另一层、另一个区域“上面”或“上方”时,可以指直接位于另一层、另一个区域上面,或者在其与另一层、另一个区域之间还包含其它的层或区域。并且,如果将器件翻转,该一层、一个区域将位于另一层、另一区域“下面”或“下方”。
如果为了描述直接位于另一层、另一区域上面的情形,本文将采用“直接在……上面”或“在……上面并与之邻接”的表述方式。
图1a和图1b示出了根据现有技术的固态硬盘的编程示意图。
固态硬盘(SSD,Solid State Drives)是用固态电子存储芯片制作的存储硬盘,主要由控制器,存储介质和缓存单元组成。对于DRAM-LESS方案的SSD而言,在SRAM当中分配有一定的空间作为数据缓冲池(Data Buffer Pool),数据缓冲池用于存储以下内容:1)主机下发的写命令对应的数据,2)主机下发的读命令对应的数据,3)刷表(Table Flush)时存储需要刷入NAND的L2P数据,4)垃圾回收操作(GC)时存储垃圾回收源极区块(GC sourceblock)的有效数据等。数据缓冲池的空间大小根据实际情况而定,如可以分配512KB的空间用于当作数据缓冲池,数据缓冲池包括多个数据缓冲区。一般而言,DRAM-LESS方案采用的二级映射表的映射颗粒度为4KB,即一个缓冲区可存储4KB的数据。
对于申请数据缓冲区的操作命令来说,根据申请缓冲区的使用类型,或着说操作命令的类型,缓冲区分为6个类型,本文中称其为缓冲编号(Buffer ID),6个缓冲编号共用同一个数据缓冲池。不同操作命令需要缓冲数据时会申请不同缓冲编号的缓冲区。各类型缓冲编号具体信息如下:
1)HOST_WRITE_BUFFER:主机写缓冲区,用于缓存主机下发的写命令对应的数据。SSD主控接收到主机的数据,先缓存至主机写缓冲区中,而后再将其写进NAND当中。
2)HOST_READ_BUFFER:主机读缓冲区,用于缓存主机下发的读命令对应的数据。SSD主控会先从NAND当中读取数据到主机读缓冲区中,再传输到主机端。
3)FW_BUFFER:固件服务任务缓冲区,用于缓存如刷表(Table Flush),垃圾回收(GC)等产生的临时数据。
4)PARTIAL_BUFFER:部分主机写缓冲区,用于缓存主机下发非4K对齐的命令时,执行Partial Write流程产生的临时数据。
5)DUMMY_BUFFER:虚拟缓冲区,该缓冲区中存储全0的数据,当写缓冲中的数据量不足一个字线(Word Line)时,会将虚拟缓冲区中的数据写入NAND。
6)FRONT_END_BUFFER:前端缓冲区,用于缓存前端读取/写入NAND中的数据。
在现有的缓冲区分配的管理中,不同的缓冲编号设置其允许占用缓冲区的最大值与最小值不同。最大值指的是缓冲区充足的情况下,该缓冲编号能申请到的最多缓冲区的数量;最小值指的是能保证该缓冲编号能申请到的最小缓冲区的数量。在本申请中,数据缓冲池中有N个缓冲区(根据实际空间决定N),本申请中N=112,各缓冲编号允许占用缓冲区的最大值与最小值配置如下表一:
表一:缓冲编号(Buffer ID)与允许申请的缓冲区的最大值、最小值
传统NAND的编程中,一次编程可以编程一行存储页(page),如图1a所示,由于每个缓冲区的大小为4KB,每一个存储页(page)的大小为4个4KB单元,因此一次编程就需要16个缓冲区。通过控制缓冲编号对应的缓冲区数量的下限(如表一),来保证当前的操作命令可以申请到足够的缓冲区。
进一步地,在申请缓冲区时,SSD主控允许FW(Firmware,固件)申请缓冲区,同时也允许HW(Hardware,硬件)申请缓冲区,即硬件自动申请某个缓冲编号需要的缓冲区。HW申请缓冲区的速度高于FW申请缓冲区的速度,但HW申请缓冲区相比FW申请缓冲区有不灵活的缺点。
为兼顾性能与灵活性,主机写命令与主机读命令采用HW自动申请缓冲区,其余操作命令采用FW来申请缓冲区。为保证数据的准确性,同一时间只允许某一操作模块对NAND进行编程操作。已有的缓冲区分配模式仅考虑保证某一操作模块的执行来控制对缓冲区申请数量的上下限,对于有HW自动申请缓冲区的方案下,该配置模式具有如下特点:
1)SSD收到主机下发的写操作命令时,只要有空闲的缓冲区,HW便会持续申请缓冲区用于缓存写命令对应的数据,直到申请不到空闲的缓冲区或者没有收到新的写命令。
2)在进行如刷表、垃圾回收等操作时,主机写操作可能占用着大量的缓冲区(此时主机写操作对应的数据并不能写到NAND),造成一定的资源浪费。
此外,在某些NAND TLC模式下的编程需要一个Shared Page(3个Page,即一个WL)一齐进行编程(如图1b)从而保证数据稳定,使用已有缓冲区分配的管理方式会具有如下缺陷:
当执行主机写操作或者垃圾回收操作时,至少需要申请48个(16个/page*3page)缓冲区才能够对NAND进行编程操作。为保证能申请到足够的缓冲区,需要将主机写缓冲区(HOST_WRITE_BUFFER)、固件服务任务缓冲区(FW_BUFFER)申请缓冲区数量的最小值调整至48,如下表二。
表二:缓冲编号(Buffer ID)与允许申请的缓冲区的最大值、最小值
但是,由于缓冲池中缓冲区的总数N=112,在需要调整主机写缓冲区和固件服务任务缓冲区申请缓冲区数量的最小值为48时,会出现此时的缓冲区总量不足,且没有足够的空间用来增加数据缓冲区的大小,因此无法调整申请缓冲区数量的最小值至48个,进而会导致垃圾回收等模块在执行时,由于申请不到足够的缓冲区而无法进行编程操作。或者,缓冲区有限的情况下,会造成主机写操作申请不到足够的缓冲区导致写命令无法顺利执行。
针对上述问题,本申请提出了一种固态硬盘的数据缓冲区管理方法。
下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。
图2示出了根据本申请实施例的固态硬盘的数据缓冲区管理方法。图3示出了根据本申请第一实施例的固态硬盘的数据缓冲区管理结构图。
在本申请中,通过锁来限制未获取到锁的其他操作命令所能申请缓冲区的数量,进而使得获取到锁的操作命令能够申请到足够数量的缓冲区,提高Buffer的利用率,在Buffer有限的情况下,保证各个模块都能顺利执行,从而提高了固态硬盘的效率。以下的描述中,通过写操作命令以及写操作来进行描述。
参考图2,本申请的固态硬盘的数据缓冲区管理方法的步骤包括:
步骤S10:固态硬盘接收主机下发的操作命令或发起固件服务任务。
在该步骤中,固态硬盘接收主机下发的操作命令,主机下发的操作命令例如包括写操作、读操作等,固件服务任务包括垃圾回收操作、刷表操作等。在本申请中,固态硬盘接收主机下发的操作命令例如为写操作。
步骤S20:处理器根据接收到的操作命令发出锁申请请求,以请求为该操作命令分配锁。
在该步骤中,由于不同的操作命令执行时所需的缓冲区数量不同,因此,可以根据操作命令的不同给不同的缓冲编号设置可以申请的缓冲区数量的上限和下限。
在没有申请到锁的情况下,每种缓冲编号对应的操作命令只能保持在可申请的缓冲区数量下限的情况下执行操作命令。
在本申请中,锁(即互斥锁)在同一时间只有一个操作命令可以申请到,在该操作命令执行完之后,锁被释放,以供下一个操作命令对应的操作命令申请。此外,锁在被释放后,该操作命令的缓冲区数量也被减少到下限,释放的缓冲区被用于下一个获得锁的操作命令使用。
进一步地,参考图3,固态硬盘100包括主控芯片120和闪存130。主控芯片120包括接口121,处理器122,锁管理模块123以及缓冲池124。其中,接口121用于固态硬盘100与主机200的连接,处理器122与接口121连接,用于接收主机下发的操作命令;此外处理器122还分别与锁管理模块123,缓冲池124和闪存130连接,用于执行操作命令。本申请中,缓冲池124在SRAM中。
在该实施例中,锁管理模块123用于接收锁申请请求和分配锁。
在该实施例中,处理器122接收到主机下发的操作命令或自主发起固件服务任务,根据操作命令向锁管理模块123发出锁申请请求,以请求为该操作命令分配锁。
步骤S30:判断是否分配到锁。
在该步骤中,通过判断操作命令是否申请到锁,从而执行不同的步骤。当操作命令申请到锁时,执行步骤S50,当操作命令没有申请到锁时,执行步骤S40。
步骤S40:根据所述操作命令提供相应的可申请的最小缓冲区。
在该步骤中,由于操作命令未申请到锁,因此,该操作命令仅可以申请到可申请的最小缓冲区,用于维持该操作命令的基本性能。
步骤S50:根据所述操作命令提供相应的可申请的最大缓冲区。
在该步骤中,根据操作命令提供相应的可申请的最大缓冲区,给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。申请到锁的例如为写操作命令,此时允许写操作命令在可申请的缓冲区数量下限的基础上再申请当前写操作所需的缓冲区数量,从而提高该写操作的执行速率。
本申请通过锁来限制未获取到锁的其他操作命令所能申请缓冲区的数量,而获取到锁的操作命令能够申请到足够数量的缓冲区,可以提高Buffer的利用率,在Buffer有限的情况下,保证各个模块都能顺利执行,提高了固态硬盘的效率。
进一步地,不同的操作命令对应不同的缓冲编号,从而其基础的缓冲区数量的上限和下限也不同。在本申请中,下表三示出了本申请中不同的缓冲编号的缓冲区数量的上限和下限。
表三:缓冲编号(Buffer ID)与允许申请的缓冲区的最大值、最小值
如上表三所示,在本申请中,对每种缓冲编号对应的允许申请的缓冲区数量的最大值进行了限制。其中,各操作命令(除主机读命令)在申请到锁时,才能够申请该操作命令所需的缓冲区数量对NAND进行编程操作。此外,经由硬件(HW)申请缓冲区数量的操作模块,在不影响性能的前提下,当其未获取到锁期间,限制其申请缓冲区数量的上限。
在本申请的固态硬盘的数据缓冲区管理方法下,各缓冲编号申请缓冲区数量具有了以下的特点(仅描述相比于现有技术具有改动的情况)。
HOST_WRITE_BUFFER:主机写命令未申请到锁时,允许主机写命令申请少量的缓冲区用于缓存写命令对应的数据,用于保证写性能;当主机写模块申请到锁时,允许申请的缓冲区数量具有上限,数量为当前一轮编程(Program)所需的数量+预留量(16),其中预留量为允许申请的最小缓冲区,即上表三所示的缓冲区数量的最小值;当前一轮编程(Program)所需的数量根据固态硬盘方案的不同,其数量也不同,例如根据TLC方案block类型,可以为48/32/16;如扩展到QLC方案,可以为64/48/32/16。
HOST_READ_BUFFER:在保证自身模块能正常执行,且不影响性能的前提下,将所申请缓冲区数量的上限调至原来的最小值,即允许申请的缓冲区数量的最小值和最大值都为16;
FW_BUFFER:相关操作模块(Table Flush,GC等)获取到锁后,根据其当前一轮编程所需AU的数量(AU:allocate Unit,分配单元,4K大小的数据的名称)来申请相应数量的缓冲区。
FRONT_END_BUFFER:缓存TRIM命令长期占用一个缓冲区,其余命令(如获取SSD的smart信息等)需获取到锁后再去申请所需数量的缓冲区。
进一步地,对于双核CPU主控的FW方案,通过限制写高速缓冲器中命令描述符数量的上限,以及仅允许主机写命令申请到锁时,才能从写高速缓冲器中推送当前一轮编程所需的分配单元对应的命令描述符到先进先出队列(fifo)当中(参考图4),以限制主机写命令申请缓冲区的数量。
图4示出了根据本申请第二实施例的双核固态硬盘的数据缓冲区管理结构图;图5示出了图4的数据缓冲区管理结构图中锁限制的位置。相比于第一实施例的固态硬盘的数据缓冲区管理结构图,第二实施中的固态硬盘100具有两个处理器。
在该实施例中,参考图4,固态硬盘100例如包括主控芯片120和闪存130。其中,主控芯片120包括接口121,处理器一1221,处理器二1222,锁管理模块123,缓冲池124,写高速缓冲器125以及先进先出队列126。其中,接口121用于连接固态硬盘100和主机200,处理器一1221与接口连接,用于接收主机200下发的操作命令,锁管理模块123,缓冲池124以及先进先出队列126均是分别与处理器一1221和处理器二1222连接,写高速缓冲器125与处理器一1221连接。
在该实施例中,首先,处理器一1221的硬件(HW)接收到主机的写命令,若此时有空闲的缓冲区,且硬件直接内存存取(direct memory access,DMA)通道未满,则会申请缓冲区用于缓存写命令对应的数据以及配置对应的命令描述符(Desc)。而后将其缓冲区推送进硬件直接内存存取单元中,直接内存存取单元会将写命令对应数据从主机传输至申请的数据缓冲区中。
进一步地,处理器一1221的主机写模块从硬件直接内存存取的完成队列中将写命令对应的命令描述符取出并推送进写高速缓冲器125当中,限制写高速缓冲器125中的命令描述符的数量为主机写模块的预留量(本申请中为16)。优选地,写高速缓冲器125中允许存放命令描述符的数量为一个闪存颗粒上的存储平面(plane)数量*4个,此数量正好对应一个存储页(page)的编程,可以保证不影响写性能。
进一步地,当处理器一1221的主机写模块获取到锁时,计算出当前一***作命令所需要的缓冲区(分配单元)的数量(根据存储块(block)类型,可以为48/32/16;如扩展到QLC方案,可以为64/48/32/16)。并从写高速缓冲器125将此数量的命令描述符推送进处理器一1221与处理器二1222交互的先进先出队列126(FIFO)当中,如图4和5所示。
进一步地,获取到足够数量的缓冲区之后,执行编程操作:缓冲区指针对应的数据和LAA被编程到PAA对应的物理页。编程操作执行后释放锁,释放操作命令对应的缓冲区至允许申请的最小缓冲区。
本申请提供的固态硬盘的数据缓冲区管理方法,通过锁控制一些操作命令申请缓冲区数量的上限,使未能申请到锁的命令所能申请的缓冲区数量的上限保持在仅能维持性能所需的数量,从而对于SRAM中的缓冲池124空间不足时,可以保证申请到锁的操作命令能够分配到足够的缓冲区,提高缓冲区的利用率。在缓冲区数量有限的情况下,该方法可以保证各个操作命令都能顺利执行。
进一步地,在多处理器的固态硬盘的写操作命令中,通过限制缓冲区中写高速缓冲器中存储的命令描述符的数量上限,以及仅允许写操作命令在申请到锁时,才能从写高速缓冲器中取出当前一轮编程所需的分配单元对应的命令描述符,并将其推进先进先出队列,从而控制了写操作命令在没有申请到锁的情况下,可申请到的缓冲区数量保持在下限,进而提高了其他操作命令在申请到锁的情况下,申请到足够的缓冲区数量的几率,从而提高缓冲区的利用率。
进一步地,锁在同一时间只有一个操作命令能够申请的,因此其余没有申请到锁的操作命令申请到缓冲区的数量受到了限制,保证了申请到锁的操作命令在单位时间内可以申请到更多的缓冲区,提高了该操作命令的性能。
进一步地,本申请的提供的固态硬盘的数据缓冲区管理方法,可以适配更多的有着不同编程特性的NAND。
依照本申请的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该申请仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地利用本申请以及在本申请基础上的修改使用。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种固态硬盘的数据缓冲区管理方法,其特征在于,所述固态硬盘包括至少一个处理器,所述数据缓冲区管理方法包括:
处理器根据操作命令发出锁申请请求,以请求为该操作命令分配锁,所述操作命令包括主机下发的命令和固件服务任务;以及
执行所述操作命令,其中,当所述操作命令分配到锁时,根据所述操作命令提供相应的可申请的最大缓冲区,以及给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。
2.根据权利要求1所述的数据缓冲区管理方法,其中,当所述操作命令未分配到锁时,根据所述操作命令提供相应的可申请的最小缓冲区。
3.根据权利要求2所述的数据缓冲区管理方法,其中,不同的操作命令对应不同的缓冲编号,不同的缓冲编号对应的可申请的最小缓冲区和可申请的最大缓冲区的上限和下限不同。
4.根据权利要求1所述的数据缓冲区管理方法,其中,分配到锁的所述操作命令为主机下发的写操作命令时,根据写操作命令提供相应的可申请的最大缓冲区为:预留量+当前编程所需的缓冲区,其中,所述预留量为:当所述写操作命令未分配到锁时,根据所述写操作命令提供相应的可申请的最小缓冲区。
5.根据权利要求4所述的数据缓冲区管理方法,其中,所述固态硬盘还包括写高速缓冲器,当所述写操作命令未分配到锁时,限制所述写高速缓冲器中存储的命令描述符的数量为所述预留量。
6.根据权利要求1所述的数据缓冲区管理方法,其中,分配到锁的所述操作命令为固件服务任务时,根据固件服务任务命令提供相应的可申请的最大缓冲区为:当前编程所需的分配单元对应的缓冲区。
7.根据权利要求1所述的数据缓冲区管理方法,其中,所述操作命令执行完后,释放锁以及相应数量的缓冲区。
8.根据权利要求4或6所述的数据缓冲区管理方法,其中,根据分配到锁的所述操作命令,将当前编程所需数量的分配单元对应的命令描述符推至先进先出队列中,以提供当前编程所需的缓冲区。
9.一种固态硬盘,其特征在于,包括:主控芯片和闪存,主控芯片包括:
接口,用于与主机连接;
处理器,与所述接口连接,用于接收主机下发的操作命令;
缓冲池,与所述处理器连接,用于执行和存储所述操作命令;
锁管理模块,与所述处理器连接,用于接收所述操作命令的锁申请请求和分配锁,
其中,所述锁管理模块通过分配锁限制所述操作命令所能申请的缓冲区数量,同一时间,只有一个操作命令能够分配到锁,当操作命令分配到锁时,所述缓冲池根据所述操作命令提供相应的可申请的最大缓冲区,以及给未分配到锁的其他操作命令提供相应的可申请的最小缓冲区。
10.根据权利要求9所述的固态硬盘,其特征在于,所述处理器包括处理器一和处理器二,所述主控芯片还包括:
写高速缓冲器,与所述处理器一连接;
先进先出队列,分别与所述处理器一和所述处理器二连接,
其中,仅在主机写命令申请到锁时,从所述写高速缓冲器中推送当前一轮编程所需的分配单元对应的命令描述符到先进先出队列当中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211400668.6A CN118051165A (zh) | 2022-11-09 | 2022-11-09 | 固态硬盘及其数据缓冲区管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211400668.6A CN118051165A (zh) | 2022-11-09 | 2022-11-09 | 固态硬盘及其数据缓冲区管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118051165A true CN118051165A (zh) | 2024-05-17 |
Family
ID=91048852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211400668.6A Pending CN118051165A (zh) | 2022-11-09 | 2022-11-09 | 固态硬盘及其数据缓冲区管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118051165A (zh) |
-
2022
- 2022-11-09 CN CN202211400668.6A patent/CN118051165A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100483366C (zh) | 闪速存储器控制器高速缓存架构 | |
US8595414B2 (en) | Selectively combining commands for a system having non-volatile memory | |
US9183136B2 (en) | Storage control apparatus and storage control method | |
US9836226B2 (en) | Method of processing input/output in storage device and storage device and non-volatile memory device using the method | |
US8171239B2 (en) | Storage management method and system using the same | |
CN113138713A (zh) | 存储器*** | |
US11741010B2 (en) | Storage device storing data in order based on barrier command | |
US11126602B2 (en) | Key-value storage device and operating method thereof | |
US20160062885A1 (en) | Garbage collection method for nonvolatile memory device | |
KR102602694B1 (ko) | 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 | |
US20100287333A1 (en) | Data storage device and related method of operation | |
US20170228191A1 (en) | Systems and methods for suppressing latency in non-volatile solid state devices | |
US8862819B2 (en) | Log structure array | |
JP2011118469A (ja) | メモリ管理装置およびメモリ管理方法 | |
KR102646724B1 (ko) | 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치 | |
US20200110555A1 (en) | Write control method, associated data storage device and controller thereof | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
US20190243578A1 (en) | Memory buffer management for solid state drives | |
CN109799959B (zh) | 一种提高开放通道固态盘写并行性的方法 | |
US20220269602A1 (en) | Storage device and storage system including the same | |
CN108228483B (zh) | 处理原子写命令的方法和设备 | |
US10528285B2 (en) | Data storage device and method for operating non-volatile memory | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
CN115756327A (zh) | 一种固态硬盘及其数据写方法、装置、主机和存储介质 | |
US9558112B1 (en) | Data management in a data storage device |
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 |