CN116225318A - 命令调度方法、闪存控制器、闪存设备及存储介质 - Google Patents
命令调度方法、闪存控制器、闪存设备及存储介质 Download PDFInfo
- Publication number
- CN116225318A CN116225318A CN202211697265.2A CN202211697265A CN116225318A CN 116225318 A CN116225318 A CN 116225318A CN 202211697265 A CN202211697265 A CN 202211697265A CN 116225318 A CN116225318 A CN 116225318A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- out queue
- command
- instruction
- priority
- 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
Images
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/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/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/0658—Controller construction 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/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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Memory System (AREA)
Abstract
本申请实施例涉及存储设备应用领域,公开了一种命令调度方法、闪存控制器、闪存设备及存储介质,该方法应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令,该命令调度方法包括:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。通过低优先级先入先出队列存放写命令,将获取的读命令下发至高优先级先入先出队列,并执行高优先级先入先出队列中的每一指令,本申请能够在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。
Description
技术领域
本申请涉及存储设备应用领域,特别是涉及一种命令调度方法、闪存控制器、闪存设备及存储介质。
背景技术
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是一种以半导体闪存(NAND Flash)作为介质的存储设备,其主要组成部分包括闪存介质、闪存控制器、动态随机存储器(DRAM)等。闪存控制器的一个重要功能就是作为闪存芯片的驱动器进行存储操作,其主要操作包括擦除、写入和读取。
随着闪存的功能越来越复杂,固化的闪存控制器越来越难以满足闪存的灵活控制需求,部分闪存控制器开始增加协处理器(Coprocessing Center Process Unit,S-CPU),通过软硬件结合的方式优化闪存操作的灵活性。
然而在考虑成本和功耗的情况下,闪存控制器使用的协处理器会尽量少,所以协处理器的算力通常较为紧张,协处理器会尽量去填满硬件先入先出队列(FIFO),然而当有新的读命令过来时,需要硬件先入先出队列中的已下发指令完成后才能开始处理新的读指令,这样就会导致读命令的延迟较大。
发明内容
本申请实施例提供一种命令调度方法、闪存控制器、闪存设备及存储介质,能够在维持总带宽的情况下,使得后下发的读指令优先于早下发的写指令执行,从而减小读命令的延迟。
本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令;
命令调度方法包括:
获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;
执行高优先级先入先出队列中的每一指令。
在一些实施例中,在获取读命令之前,方法包括:
确定高优先级先入先出队列与低优先级先入先出队列。
在一些实施例中,方法还包括:
获取写命令,并将写命令下发至低优先级先入先出队列,其中,写命令包括至少一个指令。
在一些实施例中,闪存控制器还包括仲裁模块,仲裁模块用于决策执行先入先出队列中的指令;
方法还包括:
控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令。
在一些实施例中,控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令,包括:
优先执行高优先级先入先出队列中的指令;
若在预设时间内未执行低优先级先入先出队列中的指令,则执行低优先级先入先出队列中的一个指令;
继续执行高优先级先入先出队列中的指令。
在一些实施例中,方法还包括:
在高优先级先入先出队列中的所有指令均执行完毕时,执行低优先级先入先出队列中的指令;
若高优先级先入先出队列中有新的指令,则继续执行高优先级先入先出队列中的指令。
在一些实施例中,每一指令均为原子性指令,每一原子性指令在执行过程中连续执行。
在一些实施例中,闪存控制器包括至少一个通道,每一通道均包括一个高优先级先入先出队列与一个低优先级先入先出队列。
第二方面,本申请实施例提供一种闪存控制器,应用第一方面的命令调度方法,该闪存控制器包括:
高优先级先入先出队列,用于存放读命令,其中,读命令包括至少一个指令;
低优先级先入先出队列,用于存放写命令,其中,写命令包括至少一个指令;
仲裁模块,用于决策执行先入先出队列中的指令。
第三方面,本申请实施例提供一种闪存设备,包括:
如第二方面的闪存控制器;
至少一个闪存介质,与闪存控制器通信连接。
第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,当计算机可执行指令被处理器所执行时,使处理器执行如第一方面的命令调度方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令,该命令调度方法包括:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。通过低优先级先入先出队列存放写命令,将获取的读命令下发至高优先级先入先出队列,并执行高优先级先入先出队列中的每一指令,本申请能够在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种闪存控制器的结构示意图;
图3是本申请实施例提供的一种命令调度的示意图;
图4是本申请实施例提供的一种命令调度方法的流程示意图;
图5是本申请实施例提供的另一种闪存控制器的结构示意图;
图6是本申请实施例提供的一种仲裁模块的示意图;
图7是本申请实施例提供的一种决策执行先入先出队列中的指令的流程示意图;
图8是步骤S701的细化流程示意图;
图9是本申请实施例提供的另一种决策执行先入先出队列中的指令的流程示意图;
图10是本申请实施例提供的另一种命令调度的示意图;
图11是本申请实施例提供的又一种闪存控制器的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
下面结合说明书附图具体说明本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。
闪存介质110,作为闪存设备100的存储介质,也称作闪存、NAND Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
控制器120,包括处理器121、缓存器122、闪存控制器123以及接口124。
处理器121,分别与缓存器122、闪存控制器123以及接口124连接,其中,处理器121与缓存器122、闪存控制器123以及接口124可以通过总线或者其他方式连接,处理器用于运行存储在缓存器122中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。在此基础上,通过固件开发,还用于负责闪存转换层(Flash translation layer,FTL)的核心处理。
缓存器122,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。
闪存控制器123,与闪存介质110、处理器121以及缓存器122连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O。
接口124,连接主机200以及处理器121以及缓存器122,用于接收主机200发送的数据,或者,接收处理器121发送的数据,实现主机200与处理器121之间的数据传输,接口124可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
请参阅图2,图2是本申请实施例提供的一种闪存控制器的结构示意图;
如图2所示,闪存控制器包括多个通道(channel,简称CH),例如:通道0(CH 0)、通道1(CH 1)、……、通道15(CH 15),每一通道(CH)均包括一个先入先出队列(First InputFirst Output,FIFO),每一通道(CH)下至少挂载一个闪存芯片(简称Die),例如:通道0(CH0)下挂载闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die3),通道1(CH 1)下挂载闪存芯片4(Die 4)、闪存芯片5(Die 5)、闪存芯片6(Die 6)和闪存芯片7(Die 7),……,通道15(CH 15)下挂载闪存芯片60(Die 60)、闪存芯片61(Die 61)、闪存芯片62(Die 62)和闪存芯片63(Die 63),其中,同一个通道下的多个闪存芯片(Die)共用一组控制总线(bus)。
其中,先入先出队列(FIFO)用于缓存读命令和/或写命令,并遵循先进先出的规则即第一个被写入队列的命令也是第一个从队列中被取出的命令。一个闪存颗粒中封装有多个闪存芯片(Die),闪存芯片(Die)是接收和执行闪存命令的基本单元,一个闪存芯片(Die)一次只能独立执行一个命令。
可以理解的是,闪存控制器的一个重要功能就是作为闪存芯片(Die)的驱动器进行存储操作,其主要操作包括擦除、写入和读取。闪存介质的擦除操作是以块(Block)为单位,写入和读取操作是以页(Page)为单位,一个块通常包含数百、数千个页。
具体的,在闪存控制器下发擦除命令和地址后,闪存介质开始执行擦除操作,通常需要消耗数毫秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待擦除完成。
具体的,在闪存控制器下发写命令、地址并传输写数据后,闪存介质开始执行写入操作,通常需要消耗数百微秒至数毫秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待写入完成。
具体的,在闪存控制器下发读命令和地址后,闪存介质开始执行读取操作,通常需要消耗数十微秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待读取完成。读取完成后,数据暂存在闪存介质的缓存空间内,随后闪存控制器可以开始传输读取数据,传输完成后读命令结束。
进一步地,闪存介质在执行擦除、写入、读取操作时,闪存介质处于忙碌(Busy)状态,此时闪存控制器可以发送查询状态(Read Status)命令确认闪存介质是否完成对应命令,进而确认是否可以发送后续操作指令。具体的,闪存控制器向一个闪存芯片(Die)下发完命令和数据后,该闪存芯片(Die)执行命令并处于忙碌(Busy)状态,闪存控制器可以通过控制总线(bus)向其他闪存芯片(Die)下发命令和数据,在向其他闪存芯片(Die)下发完命令和数据后,闪存控制器可以通过发送查询状态(Read Status)命令查询之前处于忙碌(Busy)状态的闪存芯片(Die)是否完成对应命令,如完成则可以向此闪存芯片(Die)下发后续命令,如此可以充分利用总线带宽,提高整体性能。
然而随着闪存的性能越来越高,功能也越来越强大和复杂,固化的闪存控制器越来越难以满足闪存的灵活控制需求,部分闪存控制器开始增加协处理器(CoprocessingCenter Process Unit,S-CPU),通过软硬件结合的方式优化闪存操作的灵活性。闪存控制器通常增加数个协处理器(S-CPU),每个协处理器(S-CPU)负责一个或多个通道(CH)的命令处理,其中,协处理器(S-CPU)是一种用于协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。
请参阅图3,图3是本申请实施例提供的一种命令调度的示意图;
在本申请实施例中,闪存控制器包括协处理器(S-CPU),闪存控制器的每一通道(CH)均包括一个先入先出队列(FIFO),在闪存设备接收到主机依次下发的上层命令后,由闪存控制器内的协处理器(S-CPU)将每一上层命令拆分为至少一个指令下发到硬件先入先出队列(FIFO)中,然后通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。
如图3所示,主机依次下发了四个命令:上层命令A、上层命令B、上层命令C和上层命令D,协处理器(S-CPU)将上层命令拆分并通过通道的控制总线(bus)依次向闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die 3)下发对应的指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。
具体的,协处理器(S-CPU)获取到上层命令A后,将上层命令A拆分得到指令A0,并下发指令A0到先入先出队列(FIFO)中,随后协处理器(S-CPU)依次获取到上层命令B、上层命令C和上层命令D,并将上层命令B拆分得到指令B0,将上层命令C拆分得到指令C0和指令C2,将上层命令D拆分得到指令D0和指令D2,然后依次下发指令B0、指令C0、指令D0至先入先出队列(FIFO)中。
进一步地,协处理器(S-CPU)通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发对应的指令和数据,例如:上层命令A是闪存芯片0(Die 0)的写命令,指令A0是上层命令A的写指令与数据传输指令,先入先出队列(FIFO)中的第一条指令是指令A0,因此,向闪存芯片0(Die 0)发送指令A0,其中,指令A0中包括的数据传输指令会占用较长时间,随后闪存芯片0(Die 0)开始执行写操作并处于忙碌(Busy)状态。
进一步地,协处理器(S-CPU)继续向闪存芯片1(Die1)发送先入先出队列(FIFO)中的下一条指令B0,然后依次向闪存芯片2(Die 2)发送先入先出队列(FIFO)中的指令C0,向闪存芯片3(Die3)发送先入先出队列(FIFO)中的指令D0。在各闪存芯片完成读操作或写操作退出忙碌(Busy)状态时,协处理器(S-CPU)继续依次下发指令C1、指令D1、指令A1至先入先出队列(FIFO),以查询指令C0、指令D0、指令A0是否执行完成,并分别向闪存芯片2(Die2)、闪存芯片3(Die3)、闪存芯片0(Die0)发送先入先出队列(FIFO)中的指令C1、指令D1、指令A1。
进一步地,在获取到指令C0、指令D0处于执行完成状态后,协处理器(S-CPU)继续下发指令C2、指令D2至先入先出队列(FIFO),并分别向闪存芯片2(Die2)、闪存芯片3(Die3)下发先入先出队列(FIFO)中的指令C2、指令D2,以分别进行上层命令C、上层命令D的数据传输,随后上层命令C、上层命令D执行完成,在协处理器(S-CPU)分别向闪存芯片0(Die0)、闪存芯片1(Die1)下发先入先出队列(FIFO)中的指令A1和指令B1后,上层命令A、上层命令B随之执行完成。
其中,上层命令A是闪存芯片0(Die 0)的写命令,上层命令B是闪存芯片1(Die 1)的写命令,上层命令C是闪存芯片2(Die 2)的读命令,上层命令D是闪存芯片3(Die 3)的读命令,指令A0是上层命令A的写指令与数据传输指令,指令B0是上层命令B的写指令与数据传输指令,指令C0是上层命令C的读指令,指令D0是上层命令D的读指令,指令A1是上层命令A的查询状态指令,指令B1是上层命令B的查询状态指令,指令C1是上层命令C的查询状态指令,指令D1是上层命令D的查询状态指令,指令C2是上层命令C的读数据传输指令,指令D2是上层命令D的读数据传输指令。
可以理解的是,闪存设备,例如固态硬盘对于读写命令的响应延迟是判断产品优劣的一项重要指标,主机端要求读写命令的响应越快越好。由于写命令的数据从主机端传输到固态硬盘内部后,固态硬盘就返回完成信号至主机端,所以后续将数据写入到闪存介质的延迟对主机端不可见;而读命令必须等待数据从闪存介质读出后进一步传输到主机端才算完成,所以读命令在闪存端的延迟是整个读命令延迟的一个重要部分。
然而,在考虑成本和功耗的情况下,闪存控制器使用的协处理器(S-CPU)会尽量少,所以协处理器(S-CPU)的算力通常较为紧张。因此协处理器(S-CPU)会尽量去填满硬件先入先出队列(FIFO),以尽量减小因协处理器(S-CPU)调度不及时导致的总线浪费,从而提高带宽。但是,当有新的读命令过来时,就需要先入先出队列(FIFO)中的已下发指令完成后才能开始处理新的读指令,这样就会导致读命令的延迟较大,例如:图3中协处理器(S-CPU)先下发指令A0和指令B0,当收到读命令C时,虽然指令B0还未开始执行,但读指令C0在先入先出队列(FIFO)中的位置处于指令B0后,只能等待指令B0执行后才能执行指令C0,导致读延迟较大。
基于此,本申请实施例提供一种命令调度方法,以在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。
请参阅图4,图4是本申请实施例提供的一种命令调度方法的流程示意图;
其中,该命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列(FIFO-H)和低优先级先入先出队列(FIFO-L),其中,低优先级先入先出队列用于存放写命令。
具体的,请参阅图5,图5是本申请实施例提供的另一种闪存控制器的结构示意图;
如图5所示,该闪存控制器包括至少一个通道(CH),例如:通道0(CH 0)、通道1(CH1)、……、通道15(CH 15),每一通道(CH)均包括一个高优先级先入先出队列(FIFO-H)和低优先级先入先出队列(FIFO-L),每一通道(CH)下至少挂载一个闪存芯片(简称Die),例如:通道0(CH 0)下挂载闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die 3),通道1(CH 1)下挂载闪存芯片4(Die 4)、闪存芯片5(Die 5)、闪存芯片6(Die 6)和闪存芯片7(Die7),……,通道15(CH 15)下挂载闪存芯片60(Die 60)、闪存芯片61(Die61)、闪存芯片62(Die 62)和闪存芯片63(Die 63),其中,同一个通道下的多个闪存芯片(Die)共用一组控制总线(bus)。
在本申请实施例中,闪存控制器还包括至少一个协处理器(S-CPU),协处理器(S-CPU)用于将主机发送的上层命令拆分为至少一个指令,并通过控制总线(bus)将指令下发到对应的高优先级先入先出队列(FIFO-H)和/或低优先级先入先出队列(FIFO-L)。
如图4所示,该命令调度方法,包括:
步骤S401:获取读命令,并将读命令下发至高优先级先入先出队列;
具体的,读命令包括至少一个指令,闪存控制器接收主机发送的读命令,并控制协处理器(S-CPU)将该读命令拆分得到读指令和读数据传输指令,然后通过控制总线(bus)将该读指令下发至高优先级先入先出队列(FIFO-H)。
在本申请实施例中,在获取读命令之前,方法包括:
确定高优先级先入先出队列与低优先级先入先出队列。
具体的,闪存控制器在获取读命令和/或写命令之前,确定高优先级先入先出队列(FIFO-H)和优先级先入先出队列(FIFO-L),其中,高优先级先入先出队列(FIFO-H)和优先级先入先出队列(FIFO-L)的位宽与深度相同。
在本申请实施例中,方法还包括:
获取写命令,并将写命令下发至低优先级先入先出队列。
具体的,写命令包括至少一个指令,闪存控制器接收主机发送的写命令,并控制协处理器(S-CPU)将该写命令拆分得到写指令与数据传输指令,然后通过控制总线(bus)将该写指令与数据传输指令下发至低优先级先入先出队列(FIFO-L)。
在本申请实施例中,闪存控制器还包括仲裁模块,仲裁模块用于决策执行先入先出队列中的指令,其中,仲裁模块包括但不限于轮询仲裁器(Round-Robin)、固定优先级仲裁器(Fixed-Priority)等仲裁器。优选地,本申请实施例中采用固定优先级仲裁器(Fixed-Priority)。
请参阅图6,图6是本申请实施例提供的一种仲裁模块的示意图;
如图6所示,仲裁模块分别与高优先级先入先出队列(FIFO-H)、优先级先入先出队列(FIFO-L)、控制总线(bus)连接。
具体的,仲裁模块有2个不同的接口分别对接高优先级先入先出队列和优先级先入先出队列,以此可以识别每一指令的来源。
步骤S402:执行高优先级先入先出队列中的每一指令。
具体的,闪存控制器控制仲裁模块决策执行高优先级先入先出队列(FIFO-H)中的每一指令。
请参阅图7,图7是本申请实施例提供的一种决策执行先入先出队列中的指令的流程示意图;
如图7所示,决策执行先入先出队列中的指令的流程,包括:
步骤S701:控制仲裁模块在高优先级先入先出队列(FIFO-H)与低优先级先入先出队列(FIFO-L)中选择一个先入先出队列,并执行所选择的先入先出队列中的指令。
具体的,请参阅图8,图8是步骤S701的细化流程示意图;
如图8所示,步骤S701:控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令,包括:
步骤S7011:优先执行高优先级先入先出队列中的指令;
具体的,仲裁模块优先执行高优先级先入先出队列(FIFO-H)中的指令,将指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。
步骤S7012:判断是否在预设时间内执行过低优先级先入先出队列中的指令;
具体的,预设时间由寄存器配置,根据硬件驱动时钟的周期数量决定,例如时钟为600MHz,配置为600*1024,则预设时间为1ms。
进一步地,若在预设时间内未执行过低优先级先入先出队列(FIFO-L)中的指令,则进入步骤S7013:执行低优先级先入先出队列中的一个指令;若在预设时间内执行过低优先级先入先出队列(FIFO-L)中的指令,则返回步骤S7011:优先执行高优先级先入先出队列中的指令。
步骤S7013:执行低优先级先入先出队列中的一个指令;
具体的,若在预设时间内未执行过低优先级先入先出队列(FIFO-L)中的指令,则仲裁模块将低优先级先入先出队列(FIFO-L)中的一个指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。
步骤S7014:继续执行高优先级先入先出队列中的指令。
具体的,在仲裁模块执行过低优先级先入先出队列(FIFO-L)中的一个指令后,如果高优先级先入先出队列(FIFO-H)中仍有指令,则仲裁模块继续将高优先级先入先出队列(FIFO-H)中的每一指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。
在本申请实施例中,通过判断是否在预设时间内执行过低优先级先入先出队列中的指令,本申请能够在减小读命令延迟的同时保证写命令及时执行。
在本申请实施例中,高优先级先入先出队列(FIFO-H)与低优先级先入先出队列(FIFO-L)中的每一指令均为原子性指令,每一原子性指令在执行过程中连续执行,例如:写指令A0包含了写命令A0-Cmd、写地址A0-Addr、写数据A0-Data,其为原子性操作,不能被打断,需要连续执行,其下发序列为:Start→A0-Cmd→A0-Addr→A0-Data→End,或者,读命令的原子性指令的下发序列为:Start→0x00→address→0x30→End,Start-End之间的指令需要连续执行,不能被打断。
可以理解的是,由于闪存操作需要遵循一定的规则,不能随意乱序,所以所有原子性指令都以Start指令为头,End指令为尾,Start-End之间的指令需要连续执行,不能被打断。
在本申请实施例中,通过每一原子性指令在执行过程中连续执行,本申请能够保证原子指令不被打断,适用于闪存类型操作原子性的规则。
请参阅图9,图9是本申请实施例提供的另一种决策执行先入先出队列中的指令的流程示意图;
如图9所示,决策执行先入先出队列中的指令的流程,包括:
步骤S901:在高优先级先入先出队列中的所有指令均执行完毕时,执行低优先级先入先出队列中的指令;
具体的,在高优先级先入先出队列(FIFO-H)中的所有指令均执行完毕时,仲裁模块将低优先级先入先出队列(FIFO-L)中的指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。
步骤S902:判断高优先级先入先出队列中是否有新的指令;
具体的,若高优先级先入先出队列(FIFO-H)中有新的指令,则进入步骤S903:继续执行高优先级先入先出队列中的指令;若高优先级先入先出队列(FIFO-H)中没有新的指令,则返回步骤S901,继续执行低优先级先入先出队列中的指令。
步骤S903:继续执行高优先级先入先出队列中的指令。
具体的,若高优先级先入先出队列(FIFO-H)中有新的指令,则仲裁模块将高优先级先入先出队列中的每一指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令,直到下一次到达预设时间时未执行过低优先级先入先出队列(FIFO-L)中的指令或者高优先级先入先出队列中的指令执行完毕时,执行低优先级先入先出队列(FIFO-L)中的指令。
请参阅图10,图10是本申请实施例提供的另一种命令调度的流程示意图;
在本申请实施例中,在闪存设备接收到主机依次下发的上层命令后,由闪存控制器内的协处理器(S-CPU)将每一上层命令拆分为至少一个指令,并将写命令的相应指令下发到低优先级先入先出队列(FIFO-L)中、将读命令的相应指令下发到高优先级先入先出队列(FIFO-H)中,然后由闪存控制器内的仲裁模块通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。
如图10所示,主机依次下发了四个命令:上层命令A、上层命令B、上层命令C和上层命令D,协处理器(S-CPU)将上层命令拆分为至少一个指令,下发到对应的高优先级先入先出队列(FIFO-H)或低优先级先入先出队列(FIFO-L)中,然后仲裁模块决策执行哪一先入先出队列中的指令并通过通道的控制总线(bus)依次向闪存芯片0(Die 0)、闪存芯片1(Die1)、闪存芯片2(Die 2)和闪存芯片3(Die 3)下发对应的指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。
具体的,协处理器(S-CPU)获取到上层命令A后,将上层命令A拆分得到指令A0,并下发指令A0到低优先级先入先出队列(FIFO-L)中,随后协处理器(S-CPU)依次获取到上层命令B、上层命令C和上层命令D,并将上层命令B拆分得到指令B0,将上层命令C拆分得到指令C0和指令C2,将上层命令D拆分得到指令D0和指令D2,然后依次下发指令B0到低优先级先入先出队列(FIFO-L)中、指令C0、指令D0到高优先级先入先出队列(FIFO-H)中。
可以理解的是,上层命令下发都需要时间,所以指令A0、指令B0、指令C0、指令D0下发的时间是依次递增的,并不是一瞬间并行下发。由于指令A0先下发了,高优先级先入先出队列(FIFO-H)中没有指令,低优先级先入先出队列(FIFO-L)中仅有指令A0,所以仲裁模块会先向闪存芯片0(Die 0)发送指令A0,闪存芯片0(Die 0)开始执行写操作并处于忙碌(Busy)状态。
由于指令A0执行也需要一段时间,而这个时间往往比软件下发单个指令的时间长的多,所以当指令A0执行完后,指令C0、指令D0已经处于高优先级先入先出队列(FIFO-H)中,所以接下来指令C0、指令D0可以优先执行。指令C0、指令D0执行完成后,高优先级先入先出队列(FIFO-H)中暂时没有指令,所以仲裁模块可以接着向闪存芯片1(Die1)发送低优先级先入先出队列(FIFO-L)中的指令B0,闪存芯片1(Die1)执行指令B0的这段时间,协处理器(S-CPU)会继续下发指令C1、指令D1到高优先级先入先出队列(FIFO-H)中,仲裁模块分别向闪存芯片3(Die3)、闪存芯片0(Die0)发送指令C1、指令D1,以查询指令C0、指令D0是否执行完成。
进一步地,在获取到指令C0、指令D0处于执行完成状态后,指令C2、指令D2已经处于高优先级先入先出队列(FIFO-H)中,仲裁模块继续分别向闪存芯片2(Die2)、闪存芯片3(Die3)下发指令C2、指令D2,以分别进行上层命令C、上层命令D的数据传输,随后上层命令C、上层命令D执行完成,在仲裁模块分别向闪存芯片0(Die0)、闪存芯片1(Die1)下发低优先级先入先出队列(FIFO-L)中的指令A1和指令B1后,上层命令A、上层命令B随之执行完成。
其中,上层命令A是闪存芯片0(Die 0)的写命令,上层命令B是闪存芯片1(Die 1)的写命令,上层命令C是闪存芯片2(Die 2)的读命令,上层命令D是闪存芯片3(Die 3)的读命令,指令A0是上层命令A的写指令与数据传输指令,指令B0是上层命令B的写指令与数据传输指令,指令C0是上层命令C的读指令,指令D0是上层命令D的读指令,指令A1是上层命令A的查询状态指令,指令B1是上层命令B的查询状态指令,指令C1是上层命令C的查询状态指令,指令D1是上层命令D的查询状态指令,指令C2是上层命令C的读数据传输指令,指令D2是上层命令D的读数据传输指令。
在本申请实施例中,通过提供一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令,该命令调度方法包括:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。通过低优先级先入先出队列存放写命令,将获取的读命令下发至高优先级先入先出队列,并执行高优先级先入先出队列中的每一指令,本申请能够在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。
请再参阅图11,图11是本申请实施例提供的又一种闪存控制器的结构示意图;
如图11所示,该闪存控制器111包括至少一个高优先级先入先出队列1111、至少一个低优先级先入先出队列1112以及至少一个仲裁模块1113。其中,图11中以一个高优先级先入先出队列1111、一个低优先级先入先出队列1112和一个仲裁模块1113为例。
具体的,该闪存控制器111包括至少一个通道(CH),每一通道(CH)均包括一个高优先级先入先出队列1111、一个低优先级先入先出队列1112以及一个仲裁模块1113,其中,仲裁模块1113通过2个端口分别与高优先级先入先出队列1111、低优先级先入先出队列1112通信连接。
闪存控制器111,用于执行上述任一实施例中的命令调度方法,例如:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。
高优先级先入先出队列1111,用于存放读命令,其中,读命令包括至少一个指令。
低优先级先入先出队列1112,用于存放写命令,其中,写命令包括至少一个指令。
仲裁模块1113,用于决策执行先入先出队列中的指令,例如:优先执行高优先级先入先出队列111中的指令;若在预设时间内未执行低优先级先入先出队列1112中的指令,则执行低优先级先入先出队列1112中的一个指令;继续执行高优先级先入先出队列1111中的指令。或者,用于在高优先级先入先出队列1111中的所有指令均执行完毕时,执行低优先级先入先出队列1112中的指令;若高优先级先入先出队列1111中有新的指令,则继续执行高优先级先入先出队列1111中的指令。
本申请实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如执行上述任意方法实施例中的命令调度方法,例如,执行以上描述的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种命令调度方法,其特征在于,所述方法应用于闪存控制器,所述闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,所述低优先级先入先出队列用于存放写命令;
所述方法包括:
获取读命令,并将所述读命令下发至所述高优先级先入先出队列,其中,所述读命令包括至少一个指令;
执行所述高优先级先入先出队列中的每一所述指令。
2.根据权利要求1所述的方法,其特征在于,在所述获取读命令之前,所述方法包括:
确定所述高优先级先入先出队列与所述低优先级先入先出队列;
所述方法还包括:
获取写命令,并将所述写命令下发至所述低优先级先入先出队列,其中,所述写命令包括至少一个指令。
3.根据权利要求1或2所述的方法,其特征在于,所述闪存控制器还包括仲裁模块,所述仲裁模块用于决策执行先入先出队列中的指令;
所述方法还包括:
控制所述仲裁模块在所述高优先级先入先出队列与所述低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令。
4.根据权利要求3所述的方法,其特征在于,所述控制所述仲裁模块在所述高优先级先入先出队列与所述低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令,包括:
优先执行所述高优先级先入先出队列中的指令;
若在预设时间内未执行所述低优先级先入先出队列中的指令,则执行所述低优先级先入先出队列中的一个指令;
继续执行所述高优先级先入先出队列中的指令。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述高优先级先入先出队列中的所有指令均执行完毕时,执行所述低优先级先入先出队列中的指令;
若所述高优先级先入先出队列中有新的指令,则继续执行所述高优先级先入先出队列中的指令。
6.根据权利要求1-2或4-5任一项所述的方法,其特征在于,每一所述指令均为原子性指令,每一所述原子性指令在执行过程中连续执行。
7.根据权利要求1-2或4-5任一项所述的方法,其特征在于,所述闪存控制器包括至少一个通道,每一所述通道均包括一个所述高优先级先入先出队列与一个所述低优先级先入先出队列。
8.一种闪存控制器,其特征在于,应用权利要求1-7任一项所述的方法,所述闪存控制器包括:
高优先级先入先出队列,用于存放读命令,其中,所述读命令包括至少一个指令;
低优先级先入先出队列,用于存放写命令,其中,所述写命令包括至少一个指令;
仲裁模块,用于决策执行先入先出队列中的指令。
9.一种闪存设备,其特征在于,包括:
如权利要求8所述的闪存控制器;
至少一个闪存介质,与所述闪存控制器通信连接。
10.一种非易失性计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,当所述计算机可执行指令被处理器所执行时,使所述处理器执行如权利要求1-7任一项所述的命令调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697265.2A CN116225318A (zh) | 2022-12-28 | 2022-12-28 | 命令调度方法、闪存控制器、闪存设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697265.2A CN116225318A (zh) | 2022-12-28 | 2022-12-28 | 命令调度方法、闪存控制器、闪存设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225318A true CN116225318A (zh) | 2023-06-06 |
Family
ID=86570628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697265.2A Pending CN116225318A (zh) | 2022-12-28 | 2022-12-28 | 命令调度方法、闪存控制器、闪存设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225318A (zh) |
-
2022
- 2022-12-28 CN CN202211697265.2A patent/CN116225318A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9563367B2 (en) | Latency command processing for solid state drive interface protocol | |
US10656873B2 (en) | Technologies for prioritizing execution of storage commands | |
JP5948628B2 (ja) | 記憶システム及び方法 | |
KR101051815B1 (ko) | 저장 컨트롤러 및 저장 시스템 | |
CN112765059A (zh) | 一种基于fpga的dma设备及dma数据搬移方法 | |
US20210019185A1 (en) | Compute task state encapsulation | |
US7724984B2 (en) | Image processing apparatus | |
US8928677B2 (en) | Low latency concurrent computation | |
JP2004171209A (ja) | 共有メモリデータ転送装置 | |
JP4184614B2 (ja) | バスシステム及びその実行順序の調整方法 | |
JP2006209778A (ja) | ダイレクトメモリアクセスの実現方法および装置、ダイレクトメモリアクセスコンピュータシステム | |
CN103106164A (zh) | 一种高效dma控制器 | |
US7913013B2 (en) | Semiconductor integrated circuit | |
US8756356B2 (en) | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size | |
US8909823B2 (en) | Data processing device, chain and method, and corresponding recording medium for dividing a main buffer memory into used space and free space | |
CN116225318A (zh) | 命令调度方法、闪存控制器、闪存设备及存储介质 | |
JP2006268753A (ja) | Dma回路及びコンピュータシステム | |
US9128924B2 (en) | Method and apparatus for wireless broadband systems direct data transfer | |
CN112306927B (zh) | 一种io请求的处理方法、装置及*** | |
US20120311236A1 (en) | Memory system, data control method, and data controller | |
US9110856B2 (en) | Interface control apparatus, data storage apparatus and method for interface control | |
US6829692B2 (en) | System and method for providing data to multi-function memory | |
JP2009037639A (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
CN117762342A (zh) | 命令调度方法、闪存设备及命令调度*** | |
JPWO2018003244A1 (ja) | メモリコントローラ、メモリシステムおよび情報処理システム |
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 |