CN118131976A - 存储芯片的闪存命令队列管理方法以及相关装置 - Google Patents
存储芯片的闪存命令队列管理方法以及相关装置 Download PDFInfo
- Publication number
- CN118131976A CN118131976A CN202211547100.7A CN202211547100A CN118131976A CN 118131976 A CN118131976 A CN 118131976A CN 202211547100 A CN202211547100 A CN 202211547100A CN 118131976 A CN118131976 A CN 118131976A
- Authority
- CN
- China
- Prior art keywords
- command
- queue
- sub
- target
- logic unit
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 25
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 235000003642 hunger Nutrition 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/061—Improving I/O performance
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种存储芯片的闪存命令队列管理方法以及相关装置。所述存储芯片的闪存命令队列管理方法包括:将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。上述方案,使存储芯片对操作闪存的命令队列实现高效管理。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种存储芯片的闪存命令队列管理方法以及相关装置。
背景技术
Host(主机)在对存储芯片进行访问时,实际上最终都会通过FTL(闪存转换层)算法层转化为对Flash(闪存)的擦写读请求,而闪存具有以下特性:(1)写之前需要擦除;(2)擦除是以物理block(存储块)为单位;(3)写和读是以page(页)为单位,一个page的大小一般为16K;(4)写只能按照block中的page号顺序往下写,不能跳着写;(5)Flash识别命令的最小单位是die(逻辑单元),一般存储芯片中的闪存控制器会有多个通道,每个通道又可以连接多颗die;因此Host的读写请求,最终会转化为对每一个die上的擦写读请求,目前主流的做法是流水线处理,按照收到命令的先后顺序,一条条命令进行处理。现有的技术由于按照收到命令的先后顺序进行处理,因此无法做到让每个die同时并行起来。
发明内容
本申请主要解决的技术问题是提供一种存储芯片的闪存命令队列管理方法以及相关装置,能够使存储芯片对操作闪存的命令队列实现高效管理,从而获得更快的响应速度以及更高的读写性能。
为了解决上述问题,本申请第一方面提供了一种存储芯片的闪存命令队列管理方法,所述存储芯片的闪存命令队列管理方法包括:将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
其中,每个所述逻辑单元的命令队列中根据命令类型设置有对应的命令子队列;所述通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾,包括:通过所述目标逻辑单元所对应的闪存通道确定所述目标命令的命令类型,根据所述目标命令的命令类型将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾。
其中,所述逻辑单元的命令队列中的所有命令子队列根据不同的命令类型具有不同的优先级;所述轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令,包括:在轮询至当前逻辑单元的命令队列时,按照每个命令子队列的优先级执行各命令子队列中的命令。
其中,在同一逻辑单元的命令队列中,具有不同的优先级的命令子队列设置有不同的执行权重次数,每个命令子队列的执行权重次数表示该命令子队列对应的当前可执行的命令次数;所述按照每个命令子队列的优先级执行各命令子队列中的命令,包括:对于优先级较高的第一命令子队列和优先级较低的第二命令子队列,先获取所述第一命令子队列,判断所述第一命令子队列的执行权重次数是否为0;若所述第一命令子队列的执行权重次数不为0,则从所述第一命令子队列的头部获取一个命令并执行,同时将所述第一命令子队列的执行权重次数减一;若所述第一命令子队列的执行权重次数为0,则获取所述第二命令子队列,并根据所述第二命令子队列的执行权重次数执行所述第二命令子队列中的命令。
其中,所述逻辑单元的命令队列中的命令子队列的数量为四个,所述命令类型包括同步请求命令、随机读命令、其他host读命令和其他的擦写读命令;所述同步请求命令、所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的优先级依次降低。
其中,所述同步请求命令对应的命令子队列的执行权重次数为无限次数,所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的执行权重次数为依次减小的有限次数。
其中,每个所述逻辑单元的命令队列中所述随机读命令对应的命令子队列中,根据所述逻辑单元的每个平面设置有对应的命令叶子队列;当所述目标命令为所述随机读命令时,所述将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾的步骤,包括:根据所述随机读命令所在的目标平面,将所述随机读命令排列到所述随机读命令对应的命令子队列中与所述目标平面对应的命令叶子队列的末尾。
为了解决上述问题,本申请第二方面提供了一种存储芯片的闪存命令队列管理装置,所述存储芯片的闪存命令队列管理装置包括:连接模块,所述连接模块用于将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;确定模块,所述确定模块用于获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;排列模块,所述排列模块用于通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;处理模块,所述处理模块用于轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
为解决上述问题,本申请第三方面提供了一种存储芯片,所述存储芯片包括相互连接的处理器和存储器;所述存储器用于存储程序指令,所述处理器用于执行所述程序指令以实现上述第一方面的存储芯片的闪存命令队列管理方法。
为解决上述问题,本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令被处理器执行时实现上述第一方面的存储芯片的闪存命令队列管理方法。
本发明的有益效果是:区别于现有技术的情况,本申请通过将存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接,在获取到从主机输入的目标命令后,可以确定目标命令对应的多个逻辑单元中的目标逻辑单元,然后可以通过目标逻辑单元所对应的闪存通道将目标命令排列到目标逻辑单元的命令队列的末尾,于是可以轮询每个逻辑单元的命令队列,获取并处理可执行的命令。通过对存储芯片的每个逻辑单元设置对应的命令队列,将存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接,于是可以将主机输入的命令通过对应的闪存通道排列到相应逻辑单元的命令队列中,在执行命令时通过轮询每个逻辑单元对应的命令队列,可以提高逻辑单元并发操作性能,使存储芯片对操作闪存的命令队列实现高效管理,从而获得更快的响应速度以及更高的读写性能;并且,当闪存通道数以及逻辑单元的个数越多,那么能够同时并发操作的逻辑单元的数量也越多,此时对闪存的存取速度也越快。
附图说明
图1是本申请存储芯片的闪存命令队列管理方法一实施例的流程示意图;
图2是本申请一应用场景中存储芯片中闪存控制器与逻辑单元的连接示意图;
图3是本申请一应用场景中存储芯片的闪存命令队列管理方法的示意图;
图4是本申请另一应用场景中存储芯片的闪存命令队列管理方法的示意图;
图5是本申请存储芯片的闪存命令队列管理装置一实施例的结构示意图;
图6是本申请存储芯片一实施例的结构示意图;
图7是本申请计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请存储芯片的闪存命令队列管理方法一实施例的流程示意图。本实施例中的存储芯片的闪存命令队列管理方法,包括以下步骤:
步骤S11:将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接。
本申请的存储芯片的闪存命令队列管理方法可用于各种存储芯片的固件设计中,存储芯片可以是SD/EMMC/UFS/CSSD/ESSD等产品。请参阅图2,图2是本申请一应用场景中存储芯片中闪存控制器与逻辑单元(DIE)的连接示意图,具体地,主机控制器(UFS HOSTController)与设备控制器(UFS Device Controller)连接,设备控制器中的闪存控制器(NAND FLASH Controller)具有多个闪存通道(CHANNEL),每个闪存通道可以与一个或者多个逻辑单元连接,主机控制器可以将命令通过闪存通道传输到对应的逻辑单元。
步骤S12:获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元。
步骤S13:通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾。
本申请实施例将存储芯片中闪存的擦写读命令队列,以逻辑单元为单位进行分queue(队列)管理,当主机输入目标命令后,通过闪存控制器可以确定目标命令所对应的目标逻辑单元,然后可以通过该目标逻辑单元所对应的闪存通道将目标命令排列到该目标逻辑单元的命令队列的末尾进行命令管理。
步骤S14:轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
对应的命令均管理在各自逻辑单元的中,由于每个逻辑单元的请求都用独立的命令队列去管理,这样就可以轮询每个逻辑单元的命令队列,去每个逻辑单元的命令队列上取命令,让多个逻辑单元做到同时并发操作,从而大幅提升性能。
上述方案,通过对存储芯片的每个逻辑单元设置对应的命令队列,将存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接,于是可以将主机输入的命令通过对应的闪存通道排列到相应逻辑单元的命令队列中,在执行命令时通过轮询每个逻辑单元对应的命令队列,可以提高逻辑单元并发操作性能,使存储芯片对操作闪存的命令队列实现高效管理,从而获得更快的响应速度以及更高的读写性能;并且,当闪存通道数以及逻辑单元的个数越多,那么能够同时并发操作的逻辑单元的数量也越多,此时对闪存的存取速度也越快。
在一实施例中,每个所述逻辑单元的命令队列中根据命令类型设置有对应的命令子队列;上述步骤S13具体包括:通过所述目标逻辑单元所对应的闪存通道确定所述目标命令的命令类型,根据所述目标命令的命令类型将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾。进一步地,每个逻辑单元的命令队列又进一步可以细分为多种命令子队列,每个命令子队列可以根据命令的命令类型进行划分,因此,在将目标命令排列到目标逻辑单元的命令队列时,具体可以根据目标命令的命令类型将目标命令排列到对应的命令子队列的末尾。
进一步地,所述逻辑单元的命令队列中的所有命令子队列根据不同的命令类型具有不同的优先级;此时上述步骤S14具体包括:在轮询至当前逻辑单元的命令队列时,按照每个命令子队列的优先级执行各命令子队列中的命令。可以理解的是,现有方案由于按照收到命令的先后顺序进行处理,因此不能优先响应某些优先级更高的请求,如随机的4K/8K读命令,于是本申请可以根据不同的命令类型设置各命令子队列的优先级,因此在轮询至某个逻辑单元的命令队列时,可以按照每个命令子队列的优先级执行各命令子队列中的命令。
进一步地,在同一逻辑单元的命令队列中,具有不同的优先级的命令子队列设置有不同的执行权重次数,每个命令子队列的执行权重次数表示该命令子队列对应的当前可执行的命令次数;上述按照每个命令子队列的优先级执行各命令子队列中的命令的步骤,具体包括:对于优先级较高的第一命令子队列和优先级较低的第二命令子队列,先获取所述第一命令子队列,判断所述第一命令子队列的执行权重次数是否为0;若所述第一命令子队列的执行权重次数不为0,则从所述第一命令子队列的头部获取一个命令并执行,同时将所述第一命令子队列的执行权重次数减一;若所述第一命令子队列的执行权重次数为0,则获取所述第二命令子队列,并根据所述第二命令子队列的执行权重次数执行所述第二命令子队列中的命令。可以理解的是,为了防止低优先级的命令子队列饿死,可以为具有不同的优先级的命令子队列设置有不同的执行权重次数,例如对于高优先级的命令子队列(HighQ)、中优先级的命令子队列(Middle Q)和低优先级的命令子队列(Low Q)设置各自的执行权重次数,命令子队列(Queue)的执行权重次数表示该Queue最多可以连续执行的命令次数,当执行某Queue中的命令次数达到上限或者Queue的可执行的命令次数为空时,此时就会开始执行优先级次之的队列,如当High Q中有请求(size不为0)且剩余的执行权重次数不为0时,则会从High Q队列头部取出一笔命令进行执行同时剩余的执行权重次数也会减一;否则就看Middle Q,依此类推。另外,当所有命令子队列的剩余的执行权重次数均减小至0后,则可以重置所有命令子队列的执行权重次数。
在一实施例中,所述逻辑单元的命令队列中的命令子队列的数量为四个,所述命令类型包括同步请求命令、随机读命令、其他host读命令和其他的擦写读命令;所述同步请求命令、所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的优先级依次降低。具体地,将优先级最高的命令子队列设置为SYNC Q,其次优先级依次减小的命令子队列分别设置为HIGH Q、MIDDLE Q和LOW Q,SYNC Q里面放需要立即执行的同步请求命令,HIGH Q主要放随机读命令,本申请实施例中的随机读命令具体可以为随机的Host 4K/8K读命令,MIDDLE Q则放其他host读命令,本申请实施例中的其他host读命令具体可以为除随机的Host 4K/8K读命令之外的其他的Host读命令,其他的擦写读命令则全部放在LOW Q中。
请结合图3,图3是本申请一应用场景中存储芯片的闪存命令队列管理方法的示意图,每个DIE(逻辑单元)都有不同优先级的操作请求队列,且每个队列都可分配一定比例的执行权重次数,这样不仅可以优先响应某些高优先级的请求命令,而且还让低优先级的队列有机会执行,不会饿死。每个DIE的请求都用独立的Queue(命令子队列)去管理,这样就可以轮询去每个DIE上取命令,让多个DIE做到同时并发操作,从而大幅提升性能。对于单个DIE来说,SYNC Q的优先级最高,主要用来存放一些需要立即执行的同步请求,如errorhandle以及BANK OVERLAY去load Firmware代码等特定场景;High Q、Middle Q和Low Q的优先级则依次降低,主要用来存放对响应速度和性能要求较高的异步命令。如果收到的是host 4K/8K的读请求,那么应该优先响应,会将其放到High Q(4K/8K read High Q)队列的尾部;其他非4K/8K的host读请求则依次放在Middle Q(Non 4K/8K read Middle Q)队列尾部,而优先级较低的擦写请求则依次放在Low Q(Program&Erase Low Q)队列尾部。每个队列都是一个单向链表,存放命令时从尾部开始,取出命令时从队列头部开始,这样可以保证同一类型Queue中的命令依次顺序执行。而将Program和Erase命令放到优先级最低的Low Q中进行管理,能够方便的支持3D NAND的一些新特征,如Program/Erase Suspend,即在做Program/Erase的时候,如果收到优先级更高的Host读请求,则可以将正在进行的Program/Erase操作暂停住,优先取出High Q或者Middle Q中的读命令进行处理,等处理完读的命令后再继续之前没有完成的Program/Erase操作,这样能够更快的响应读请求,提升用户体验。
进一步地,所述同步请求命令对应的命令子队列的执行权重次数为无限次数,所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的执行权重次数为依次减小的有限次数。具体地,同步请求命令对应的SYNC Q的优先级最高,其执行权重次数为无限次数,即只要收到请求就会优先执行,且以同步的方式执行;随机的Host 4K/8K读命令、其他的Host读命令和其他的擦写读命令对应的HIGH Q、MIDDLE Q和LOWQ的优先级则依次降低,为了防止低优先级的Queue(命令子队列)饿死,将它们的执行权重次数设置为依次减小的有限次数。
在一实施例中,每个所述逻辑单元的命令队列中所述随机读命令对应的命令子队列中,根据所述逻辑单元的每个平面设置有对应的命令叶子队列;当所述目标命令为所述随机读命令时,上述将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾的步骤,具体包括:根据所述随机读命令所在的目标平面,将所述随机读命令排列到所述随机读命令对应的命令子队列中与所述目标平面对应的命令叶子队列的末尾。可以理解的是,如果闪存支持AIPR(Asynchronous Independent Plane Read)功能,则随机的Host 4K/8K读命令对应的HIGH Q又可按Plane(平面)细分为不同的Plane Queue(平面对应的命令叶子队列),随机读时就能按照Plane的顺序取4K/8K读命令,让多个Plane并行起来实现随机读性能的大幅提升。
请结合图4,图4是本申请另一应用场景中存储芯片的闪存命令队列管理方法的示意图,将4K/8K read High Q按照4K/8K读所在的Plane进行分队列管理,得到多个PLANE Q(平面对应的命令叶子队列),如PLANE0的4K/8K读命令放在对应的PLN0 Q,PLANE1的4K/8K读命令放在对应的PLN1 Q,……,PLANEn的4K/8K读命令放在对应的PLNn Q;这样在发命令的时候,就可以遍历所有的PLANE Q,将当前非空(存放有命令)的PLANE Q的头部4K/8K读命令一次发出去,就能够让所有的Plane同时对NAND阵列进行读操作,最大程度的发挥出AIPR功能的功效,从而获得更高的随机读性能。
请参阅图5,图5是本申请存储芯片的闪存命令队列管理装置一实施例的结构示意图。本实施例中的存储芯片的闪存命令队列管理装置50包括相互连接的连接模块500、确定模块502、排列模块504和处理模块506;所述连接模块500用于将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;所述确定模块502用于获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;所述排列模块504用于通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;所述处理模块506用于轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
在一实施例中,每个所述逻辑单元的命令队列中根据命令类型设置有对应的命令子队列;所述排列模块504执行通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾的步骤,包括:通过所述目标逻辑单元所对应的闪存通道确定所述目标命令的命令类型,根据所述目标命令的命令类型将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾。
在一实施例中,所述逻辑单元的命令队列中的所有命令子队列根据不同的命令类型具有不同的优先级;所述处理模块506执行轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令的步骤,包括:在轮询至当前逻辑单元的命令队列时,按照每个命令子队列的优先级执行各命令子队列中的命令。
在一实施例中,在同一逻辑单元的命令队列中,具有不同的优先级的命令子队列设置有不同的执行权重次数,每个命令子队列的执行权重次数表示该命令子队列对应的当前可执行的命令次数;所述处理模块506执行按照每个命令子队列的优先级执行各命令子队列中的命令的步骤,具体包括:对于优先级较高的第一命令子队列和优先级较低的第二命令子队列,先获取所述第一命令子队列,判断所述第一命令子队列的执行权重次数是否为0;若所述第一命令子队列的执行权重次数不为0,则从所述第一命令子队列的头部获取一个命令并执行,同时将所述第一命令子队列的执行权重次数减一;若所述第一命令子队列的执行权重次数为0,则获取所述第二命令子队列,并根据所述第二命令子队列的执行权重次数执行所述第二命令子队列中的命令。
在一实施例中,所述逻辑单元的命令队列中的命令子队列的数量为四个,所述命令类型包括同步请求命令、随机读命令、其他host读命令和其他的擦写读命令;所述同步请求命令、所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的优先级依次降低。
在一实施例中,所述同步请求命令对应的命令子队列的执行权重次数为无限次数,所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的执行权重次数为依次减小的有限次数。
在一实施例中,每个所述逻辑单元的命令队列中所述随机读命令对应的命令子队列中,根据所述逻辑单元的每个平面设置有对应的命令叶子队列;当所述目标命令为所述随机读命令时,所述排列模块504执行将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾的步骤,具体可以包括:根据所述随机读命令所在的目标平面,将所述随机读命令排列到所述随机读命令对应的命令子队列中与所述目标平面对应的命令叶子队列的末尾。
关于本申请存储芯片的闪存命令队列管理装置50实现存储芯片的闪存命令队列管理方法的具体内容请参阅上述存储芯片的闪存命令队列管理方法实施例中的内容,此处不再赘述。
请参阅图6,图6是本申请存储芯片一实施例的结构示意图。本实施例中的存储芯片60包括相互连接的处理器602和存储器601;存储器601用于存储程序指令,处理器602用于执行存储器601中存储的程序指令,以实现上述任一存储芯片的闪存命令队列管理方法实施例的步骤。在一个具体的实施场景中,存储芯片60可以包括但不限于:微型计算机、服务器。
具体而言,处理器602用于控制其自身以及存储器601以实现上述任一存储芯片的闪存命令队列管理方法实施例的步骤。处理器602还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器602可能是一种集成电路芯片,具有信号的处理能力。处理器602还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器602可以由集成电路芯片共同实现。
请参阅图7,图7是本申请计算机可读存储介质一实施例的结构示意图。本申请计算机可读存储介质70,其上存储有程序指令700,程序指令700被处理器执行时实现上述任一存储芯片的闪存命令队列管理方法实施例中的步骤。
该计算机可读存储介质70具体可以为U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等可以存储程序指令700的介质,或者也可以为存储有该程序指令700的服务器,该服务器可将存储的程序指令700发送给其他设备运行,或者也可以自运行该存储的程序指令700。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、设备和装置,可以通过其它的方式实现。例如,以上所描述的设备和装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种存储芯片的闪存命令队列管理方法,其特征在于,所述存储芯片的闪存命令队列管理方法包括:
将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;
获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;
通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;
轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
2.根据权利要求1所述的存储芯片的闪存命令队列管理方法,其特征在于,每个所述逻辑单元的命令队列中根据命令类型设置有对应的命令子队列;
所述通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾,包括:
通过所述目标逻辑单元所对应的闪存通道确定所述目标命令的命令类型,根据所述目标命令的命令类型将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾。
3.根据权利要求2所述的存储芯片的闪存命令队列管理方法,其特征在于,所述逻辑单元的命令队列中的所有命令子队列根据不同的命令类型具有不同的优先级;
所述轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令,包括:
在轮询至当前逻辑单元的命令队列时,按照每个命令子队列的优先级执行各命令子队列中的命令。
4.根据权利要求3所述的存储芯片的闪存命令队列管理方法,其特征在于,在同一逻辑单元的命令队列中,具有不同的优先级的命令子队列设置有不同的执行权重次数,每个命令子队列的执行权重次数表示该命令子队列对应的当前可执行的命令次数;
所述按照每个命令子队列的优先级执行各命令子队列中的命令,包括:
对于优先级较高的第一命令子队列和优先级较低的第二命令子队列,先获取所述第一命令子队列,判断所述第一命令子队列的执行权重次数是否为0;
若所述第一命令子队列的执行权重次数不为0,则从所述第一命令子队列的头部获取一个命令并执行,同时将所述第一命令子队列的执行权重次数减一;
若所述第一命令子队列的执行权重次数为0,则获取所述第二命令子队列,并根据所述第二命令子队列的执行权重次数执行所述第二命令子队列中的命令。
5.根据权利要求4所述的存储芯片的闪存命令队列管理方法,其特征在于,所述逻辑单元的命令队列中的命令子队列的数量为四个,所述命令类型包括同步请求命令、随机读命令、其他host读命令和其他的擦写读命令;所述同步请求命令、所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的优先级依次降低。
6.根据权利要求5所述的存储芯片的闪存命令队列管理方法,其特征在于,所述同步请求命令对应的命令子队列的执行权重次数为无限次数,所述随机读命令、所述其他host读命令和所述其他的擦写读命令分别对应的命令子队列的执行权重次数为依次减小的有限次数。
7.根据权利要求5所述的存储芯片的闪存命令队列管理方法,其特征在于,每个所述逻辑单元的命令队列中所述随机读命令对应的命令子队列中,根据所述逻辑单元的每个平面设置有对应的命令叶子队列;
当所述目标命令为所述随机读命令时,所述将所述目标命令排列到所述目标逻辑单元的命令队列中对应的命令子队列的末尾的步骤,包括:
根据所述随机读命令所在的目标平面,将所述随机读命令排列到所述随机读命令对应的命令子队列中与所述目标平面对应的命令叶子队列的末尾。
8.一种存储芯片的闪存命令队列管理装置,其特征在于,所述存储芯片的闪存命令队列管理装置包括:
连接模块,所述连接模块用于将所述存储芯片中的闪存控制器通过多个闪存通道与多个逻辑单元进行对应连接;
确定模块,所述确定模块用于获取从主机输入的目标命令,确定所述目标命令对应的所述多个逻辑单元中的目标逻辑单元;
排列模块,所述排列模块用于通过所述目标逻辑单元所对应的闪存通道将所述目标命令排列到所述目标逻辑单元的命令队列的末尾;
处理模块,所述处理模块用于轮询每个所述逻辑单元的命令队列,获取并处理可执行的命令。
9.一种存储芯片,其特征在于,所述存储芯片包括相互连接的处理器和存储器;
所述存储器用于存储程序指令,所述处理器用于执行所述程序指令以实现如权利要求1-7任一项所述的存储芯片的闪存命令队列管理方法。
10.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时实现权利要求1至7任一项所述的存储芯片的闪存命令队列管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211547100.7A CN118131976A (zh) | 2022-12-02 | 2022-12-02 | 存储芯片的闪存命令队列管理方法以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211547100.7A CN118131976A (zh) | 2022-12-02 | 2022-12-02 | 存储芯片的闪存命令队列管理方法以及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118131976A true CN118131976A (zh) | 2024-06-04 |
Family
ID=91241170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211547100.7A Pending CN118131976A (zh) | 2022-12-02 | 2022-12-02 | 存储芯片的闪存命令队列管理方法以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118131976A (zh) |
-
2022
- 2022-12-02 CN CN202211547100.7A patent/CN118131976A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9317204B2 (en) | System and method for I/O optimization in a multi-queued environment | |
US8959249B1 (en) | Cooperative cloud I/O scheduler | |
CN109947362B (zh) | 管理闪存存储器读取操作 | |
CN102073461B (zh) | 输入输出请求调度方法、相关装置和存储阵列 | |
US10712972B2 (en) | Read commands scheduling method in storage device | |
US11010094B2 (en) | Task management method and host for electronic storage device | |
JP2010152571A (ja) | Raidドライバ及びこれを備えた電子機器並びにraidに対するアクセス要求調停方法 | |
JP2020194523A (ja) | アクセス請求を処理する方法、装置、デバイスならびに記憶媒体 | |
KR20190113490A (ko) | NVMe 컨트롤러에 의한 명령 인출 관리 방법 및 시스템 | |
CN106681660A (zh) | Io调度方法及io调度装置 | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
CN114546606A (zh) | 非易失性存储器存储模块及其操作方法 | |
CN117076353B (zh) | 描述符的配置方法和描述符的配置装置 | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
US11194619B2 (en) | Information processing system and non-transitory computer readable medium storing program for multitenant service | |
CN110399219B (zh) | 内存访问方法、dmc及存储介质 | |
EP4425334A1 (en) | Storage control method, storage controller, storage chip, network card, and readable medium | |
CN118131976A (zh) | 存储芯片的闪存命令队列管理方法以及相关装置 | |
CN116225991A (zh) | 固态硬盘控制器、命令调度方法、固态硬盘及存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN115202842A (zh) | 任务调度方法及装置 | |
US8667188B2 (en) | Communication between a computer and a data storage device | |
US11620083B2 (en) | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device | |
CN117055820B (zh) | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 | |
CN113076138B (zh) | 一种NVMe命令处理方法、设备及介质 |
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 |