CN110716691A - 调度方法、装置、闪存设备和系统 - Google Patents
调度方法、装置、闪存设备和系统 Download PDFInfo
- Publication number
- CN110716691A CN110716691A CN201810769590.2A CN201810769590A CN110716691A CN 110716691 A CN110716691 A CN 110716691A CN 201810769590 A CN201810769590 A CN 201810769590A CN 110716691 A CN110716691 A CN 110716691A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- read
- data
- request
- read request
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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]
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)
Abstract
本申请提供一种调度方法、装置、闪存设备和系统,该方法应用于闪存设备,该闪存设备包括闪存控制器以及多个闪存晶圆,该闪存控制器通过通道与该多个闪存晶圆相连,该方法包括:在通过该通道传输写请求的过程中,该闪存控制器确定有待传输的第一读请求或第一数据,该第一读请求用于主机从该多个闪存晶圆中的第一闪存晶圆中读取数据,该第一数据为从该多个闪存晶圆中的任一个闪存晶圆中读取的数据;闪存控制器暂停通过该通道传输该写请求,以调度该第一读请求或该第一数据通过该通道传输,降低闪存设备处理读请求的时延。
Description
技术领域
本申请涉及存储领域,并且更具体地,涉及调度方法、装置、闪存设备和系统。
背景技术
闪存设备是一种以闪存为存储介质的存储设备,例如固态硬盘(solid statedrives,SSD)。对于闪存设备的服务质量(quality of service,QoS)而言,闪存设备处理读请求产生的读时延会影响整个闪存设备的处理效率和时长。
通常,闪存设备包括闪存控制器和闪存晶圆(flash die),闪存控制器与闪存晶圆之间可以通过内部总线相连,其中,闪存控制器与各个闪存晶圆之间连接的通路称为通道,闪存控制器可以调度待传输度的请求或数据通过该通道传输。在读写混合的场景下,一方面,由于通道同一时间只能传输一个请求(读请求或写请求)或数据,如果有待发送的读请求,而该通道正在传输其他请求(读请求或写请求)或数据时,需要等待通道中正在传输的其他请求或数据传输完成,才能传输读请求。另一方面,如果闪存晶圆根据读请求读取完成数据,即闪存晶圆有待发送的数据,而该通道正在传输其他请求(读请求或写请求)或数据时,该闪存晶圆需要等待通道中正在传输的其他请求或数据传输完成,才能传输上述待传输的数据。
因此,传统的调度方式使得闪存设备的读时延较长。如何在读写混合的场景下,降低闪存设备处理读请求的时长成为亟待解决的问题。
发明内容
本申请提供一种调度方法、装置、闪存设备和系统,能够减少闪存设备处理读请求的时长。
第一方面,提供一种调度方法,该方法应用于闪存设备,该闪存设备包括闪存控制器以及多个闪存晶圆,该闪存控制器通过内部总线与该多个闪存晶圆相连,该方法包括:在通过目标通道传输写请求的过程中,该闪存控制器确定有待传输的第一读请求或第一数据,该目标通道为所述闪存控制器与该多个闪存晶圆连接的通路,该第一读请求用于主机从该多个闪存晶圆中的第一闪存晶圆中读取数据,该第一数据为从该多个闪存晶圆中的任一个闪存晶圆中读取的数据;该闪存控制器暂停通过该目标通道传输该写请求,以调度该第一读请求或该第一数据通过该目标通道传输。
上述目标通道可以是闪存控制器与多个闪存晶圆之间传输请求或数据的通道,即闪存控制器与执行该写请求的闪存晶圆之间的通道,还可以是传输上述写请求以及第一读请求的通道。
上述闪存设备确定有待传输的第一读请求时,调度第一读请求通过该目标通道传输,可以指通过该目标通道向第一闪存晶圆传输第一读请求;上述闪存设备确定有待传输的第一数据,调度第一数据通过该目标通道传输,可以指通过目标通道从上述任一个闪存晶圆中将第一数据读出。
在本申请中,当目标通道正在传输写请求的过程中,有待传输的第一读请求或第一数据时,可以暂停目标通道中正在传输的写请求,以便于调度第一读请求和第一数据通过目标通道传输,避免了,传统的调度方式中,第一读请求和第一数据需要等待目标通道中正在传输的写请求传输完成后,才能通过该目标通道被传输,以减少第一读请求和第一数据等待的时长,能够减少闪存设备处理读请求的时长。
在一种可能的实现方式中,所述写请求用于请求向所述第一闪存晶圆中写数据,在所述闪存控制器暂停通过所述通道传输所述写请求之后,所述方法还包括:所述第一闪存晶圆暂停执行所述写请求,以使所述通道执行所述读请求,或者说所述第一闪存晶圆暂停执行所述写请求,以执行所述读请求。
在一种可能的实现方式中,所述写请求包含待写入的数据,所述待写入的数据包括第二数据和第三数据,所述第二数据为通过所述通道传输的数据,所述第三数据为未通过所述通道传输的数据,所述方法还包括:所述闪存控制器根据写命令确定存储所述待写入的数据的第一存储地址;所述闪存控制器根据所述第一存储地址确定存储所述第三数据的第二存储地址;在通过所述通道传输完成所述第一读请求后,所述闪存控制器继续通过所述通道传输所述第三数据以及所述第二存储地址。
在执行上述写请求的闪存晶圆接收到上述第三数据以及第二存储地址后,可以按照第二存储地址存储第三数据。
上述第一存储地址用于指示存储第二数据以及第三数据的存储空间,上述第二存储地址用于指示存储第三数据的存储空间。第二存储地址指示的存储空间是第一存储地址指示的存储空间中原本用于存储第三数据的存储空间。
上述存储地址可以是物理地址。
本申请中,闪存控制器通过在通道传输第三数据的同时传输存储第三数据的第二存储地址,以使接收第三数据的闪存晶圆可以按照第二存储地址存储第三数据。
在一种可能的实现方式中,该闪存设备存储有多个第一命令队列,该多个第一命令队列用于存储读请求,该读请求用于主机从该多个闪存晶圆中读取数据,该多个第一命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,该闪存控制器确定有待传输的第一读请求,包括:该闪存控制器确定该多个第一命令队列中的至少部分第一命令队列的状态从该空状态转变为该非空状态;该闪存控制器从处于该非空状态的第一命令队列中确定该第一读请求。
在本申请中,闪存控制器通过检测第一命令队列中是否有待传输的请求,以确定是否有待传输的第一读请求。
在一种可能的实现方式中,该多个闪存晶圆的工作状态包括处于执行读请求的读忙碌状态,以及处于未执行读请求的读空闲状态,该闪存控制器确定有待传输的第一数据,包括:该闪存控制器确定该第一闪存晶圆的工作状态由该读忙碌状态转为该读空闲状态;该闪存控制器确定该第一闪存晶圆有待传输的该第一数据。
在本申请中,闪存控制器通过检测闪存晶圆的工作状态是否由该读忙碌状态转为该读空闲状态,以确定闪存晶圆中是否有待传输的第一数据。
在一种可能的实现方式中,所述闪存设备还存储有多个第二命令队列,所述多个第二命令队列用于存储所述多个闪存晶圆需要执行的请求,且所述多个第二命令队列用于存储除所述读请求之外的请求,传输所述多个第一命令队列中的请求的优先级高于传输所述多个第二命令队列中的请求的优先级,所述多个第二命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,所述方法还包括:所述闪存控制器获取所述多个第一命令队列的状态和所述多个第二命令队列的状态;所述闪存控制器从处于所述非空状态的第一命令队列中选择第二读请求,所述第二读请求用于从所述多个闪存晶圆中的第二闪存晶圆中读取数据;所述闪存控制器从处于所述非空状态的第二命令队列中选择目标请求;所述闪存控制器根据所述优先级,从所述第二读请求以及所述目标请求中选择所述第二读请求作为待传输的请求;所述闪存控制器通过所述目标通道向所述第二闪存晶圆传输所述第二读请求。
在本申请中,闪存控制器根据优先级原则,从处于非空状态的第一命令队列以及处于非空状态的多个第二命令队列中选择第一读请求作为当前传输的请求,避免了传统的调度机制中,调度不同的闪存晶圆需要执行的请求时,读请求在其他请求之后被传输,减少了闪存设备中处理读请求的时长。
在一种可能的实现方式中,该方法还包括:该闪存控制器获取该多个第一命令队列的状态,该状态包括存储有请求的非空状态和未存储有请求的空状态;该闪存控制器从处于该非空状态的第一命令队列中选择第二读请求,该第二读请求用于从该多个闪存晶圆中的第二闪存晶圆中读取数据;该闪存控制器通过该目标通道向该第二闪存晶圆传输该第二读请求。
在本申请中,闪存控制器从处于非空状态的第一命令队列中选择第二读请求,作为通过目标通道当前传输的读请求,避免了传统的调度机制中,调度不同的闪存晶圆需要执行的请求时,读请求在其他请求之后被传输,减少了闪存设备中处理读请求的时长。
在一种可能的实现方式中,该方法还包括:该闪存控制器获取该多个闪存晶圆的工作状态,该工作状态包括未执行读请求的读空闲状态和正在执行读请求的读忙碌状态;该闪存控制器从处于该读空闲状态的闪存晶圆中确定该第二闪存晶圆;该闪存控制器从处于该非空状态的第一命令队列中选择第二读请求,包括:该闪存控制器从处于该非空状态的第一命令队列中,选择用于从该第二闪存晶圆中读取数据的该第二读请求。
在本申请中,闪存控制器结合第一命令队列的状态,以及闪存晶圆的工作状态,选择第二读请求作为通过目标通道当前传输的请求,以便于第二闪存晶圆在接收到第二读请求后,可以立刻执行第二读请求,有利于减少闪存设备处理读请求的时延。
第二方面,提供一种调度装置,该装置包括用于执行第一方面或第一方面任一种可能实现方式中的调度方法的各个模块。
第三方面,提供一种闪存设备,包括处理器和存储器。该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该控制器执行上述方法。
第四方面,提供一种存储系统,所述存储系统包括至少一个闪存设备,每个闪存设备包括闪存控制器和多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,所述闪存控制器用于执行上述方法。
第五方面,提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请对此不作具体限定。
第六方面,提供一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
附图说明
图1是本发明实施例适用的存储系统的示意性框图。
图2示出了传统的调度方法中占用通道传输请求的时序的示意图。
图3是本发明实施例适用的SSD的示意性框图。
图4示出了本发明实施例的调度方法的示意性流程图。
图5示出了本发明另一实施例的调度方法的示意性流程图。
图6是本发明另一实施例的调度方法的示意性流程图。
图7是本发明实施例的调度装置的示意图。
图8是本发明实施例的闪存控制器的示意图。
图9是本申请实施例的闪存接口处理单元的示意图。
具体实施方式
图1是本发明实施例适用的存储系统的示意性框图。图1所示的存储系统100包括:存储系统控制器和至少一个存储介质。本发明的以下实施例中以存储介质为固态硬盘(solid state drive,SSD)为例进行描述。也即是存储系统100中包括SSD控制器110和至少一个SSD120。SSD控制器用于管理至少一个SSD120。每个SSD120包括闪存(flash)控制器121和至少一个NAND闪存芯片122,每个NAND闪存芯片中又包括多个闪存晶圆(die),闪存控制器和至少一个闪存晶圆之间通过内部总线连接。其中,内部总线例如三星、东芝的闪存NAND芯片采用的Toggle标准总线,英特尔(Intel)、镁光(Micron)、海力士(SKhynix)等公司的闪存NAND芯片采用的开放NAND闪存接口(open NAND flash interface,ONFI)标准总线。同一个闪存控制器配置有多个通道,每个通道对应一组内部总线,多个通道间可以并发处理读请求或写请求。例如,图1所示的存储系统100中,闪存控制器121通过通道1与闪存晶圆0和闪存晶圆1通信,通过通道2与闪存晶圆2和闪存晶圆3通信,通道0和通道1可以同时处理SSD控制器下发的读请求或写请求。
在SSD中,最小读写单元为1个页(page),而擦除则是以块(block)为最小单元。闪存晶圆是多个页的组合,不同厂商的NAND闪存颗粒结构可能不同。示例地,1个页为4KB,1个块由256个页组成,1个闪存晶圆有两个平面(plane)组成,1个平面包括2048个块。
应理解,图1所示的闪存控制器管理的通道的数量,以及每个通道中NAND闪存芯片的数量并不构成对本发明实施例的限制。
存储系统控制器110,用于对至少一个SSD120进行管理。
至少一个SSD120,用于为存储系统提供存储空间。每个SSD通常包括一个闪存控制器121,以及多个闪存晶圆122。其中,闪存控制器与多个闪存晶圆之间可以通过多个通道相连,例如,闪存晶圆0和闪存晶圆1通过通道0与闪存控制器相连,闪存晶圆2和闪存晶圆3通过通道1与闪存控制器相连。具体地,每个通道可以包含一个总线,用于在闪存控制器和闪存晶圆之间传输请求和数据。
多个闪存晶圆122,用于为SSD中存储的数据提供存储空间。
闪存控制器121,用于对多个闪存晶圆中存储的数据进行中转,并通过多个通道对多个闪存晶圆发送请求,以对多个通道上挂载的多个闪存晶圆进行并行控制。其中,上述请求可以大致分为两种,即主机向存储系统发送的读请求,以及除上述读请求之外的其他请求,例如,用于对存储空间进行管理的请求,包括基于垃圾回收生成的读命令、擦除命令以及写命令等。
闪存控制器将上述读请求发送至执行该读请求的闪存晶圆后,该闪存晶圆将该读请求请求读取的数据读出,并将读出的数据通过通道传输至闪存控制器,其中,闪存晶圆将数据读出的过程,又可以称为数据准备过程。
若上述其他请求为写请求时,闪存控制器向闪存晶圆发送写请求的过程可以包括闪存控制器向闪存晶圆发送该写请求中写命令,以及闪存控制器向闪存晶圆发送该写请求携带的数据两个过程。
应理解,图1所示的闪存控制器管理的通道的数量,以及每个通道中闪存晶圆的数量并不构成对本发明实施例的限制。
在传统的调度方法中,由于上述通道每次仅能支持传输一个请求,如果该通道有待传输的读请求,且该通道被其他请求占用,则读请求只能等待,直到该通道中正在传输的其他请求被传输完成,读请求才能通过该通道传输,导致闪存设备中处理读请求的时延较长。下面基于图1所示的存储系统,结合图2说明占用通道传输请求的时序。
图2示出了传统的调度方法中占用通道传输请求的时序的示意图。一个写请求由写命令和写的数据组成,假设WrCmd0表示向闪存晶圆0中写数据的写命令,数据WrCmd0表示WrCmd0向闪存晶圆中写的数据,WrCmd0与数据WrCmd0一起构成第一写请求;RdCmd1表示从闪存晶圆1中读取数据的读请求。从图2可以看出,当主机在第一时刻向闪存设备发送WrCmd0后,通道处于没有请求正在传输的空闲态,可以直接通过该通道传输向闪存晶圆0传输WrCmd0,以及数据WrCmd0。在通过通道传输WrCmd0以及数据WrCmd0的过程中,主机又向闪存设备发送RdCmd1,此时通道处于正在传输WrCmd0以及数据WrCmd0的忙碌状态,RdCmd1需要等待WrCmd0以及数据WrCmd0传输完成,大约150us。在RdCmd1通过总线传输至闪存晶圆1后,闪存晶圆1需要查询RdCmd1读取的数据(即上文中的数据准备过程),需要占用一段时间读取数据。在这段时间内,通道是处在空闲状态的,为了提高通道的利用率,如果需要通过通道向挂载在该通道上的闪存晶圆0中写数据,则可以直接占用通道。然而,如果在占用通道的时间段内,若闪存晶圆1将上述数据读取完成,那么读取完成的数据需要等待新的写请求通过通道传输完成,才能通过通道传输至闪存控制器。
在上述读写混合的场景下,使用传统的调度机制传输读请求或读数据时,如果通道正在传输其他请求(例如,写请求),待传输的读请求和读数据都无法立刻被传输,导致闪存设备处理读请求的时长增大。
为了降低闪存设备处理读请求的时长,本发明实施例提供了一种调度机制。为了便于理解,以图3所示的场景为例,简单介绍本申请实施例适用的场景。应理解,图3所示的SSD中与图1所示的存储系统功能相同的单元使用相同的标号。
图3是本发明实施例适用的SSD的示意性框图。图3所示的SSD100包括:闪存控制器121,以及至少一个闪存晶圆。应理解,图3仅仅以一个通道为例,描述使用本发明实施例适用的SSD的架构。本发明实施例中闪存控制器管理的通道的数量,以及每个通道中闪存晶圆的数量并不构成对本发明实施例的限制。
闪存控制器121,用于从命令队列中获取待传输的请求,并将该请求传输至可以执行该请求的闪存晶圆。
每个闪存晶圆都有各自对应的第一命令队列和第二命令队列,即闪存晶圆对应的第一命令队列以及对应的第二命令队列中存储的命令都是该闪存晶圆需要执行的命令。通常,第一命令队列用于存储主机发送的读请求,第二命令队列用于存储除读请求之外的其他请求。例如,图3中,第一命令队列331以及第二命令队列332,用于存储闪存晶圆0需要执行的请求,第一命令队列333以及第二命令队列334,用于存储闪存晶圆1需要执行的请求。另外,传输第一命令队列中的读请求的优先级高于传输第二命令队列中的其他请求的优先级。
每个闪存晶圆对应的两类命令队列(即第一命令队列以及第二命令队列)中,第一命令队列的数量可以为一个或多个,第二命令队列的数量也可以为一个或多个。每个第二命令队列可以存储多种类型的其他命令,也可以仅存储一种类型的其他命令,当每个第二命令队列仅存储一种类型的其他命令时,可以设置多个第二命令队列,不同的第二命令队列存储不同类型的其他命令。
需要说明的是,图3仅仅以示例的方式介绍了本申请实施例适用的场景,本申请实施例使用的场景并不限于此。本申请实施例适用的场景还可以是,每个闪存晶圆对应的命令队列不再区分存储读请求和其他请求的命令队列,也就是说,每个命令队列中可以既存储有读请求又存储有写请求。
下文基于图3所示的场景,结合图4介绍基于该调度机制,调度读请求通过通道进行传输的过程,结合图5介绍基于该调度机制,调度读请求读取的数据通过通道进行传输的过程。应理解,在图4以及图5所示的方法中,待传输的请求可以存储在命令队列中,(参见图3)还可以以其他方式存储,本申请实施例对于待传输的请求的存储方式不作限定。
图4示出了本发明实施例的调度方法的示意性流程图。应理解,图4所示的方法可以由图2所示的闪存控制器执行。该方法包括:
S410,在通过通道传输写请求的过程中,确定有待传输的第一读请求。
通常,待传输的读请求可以存储至读命令队列(第一命令队列)中,因此,上述确定有待传输的第一读请求,可以通过检测读命令队列的状态确定。当读命令队列的状态,由空状态转为非空状态时,可以确定读命令队列中有待传输的请求。其中,空状态用于指示命令队列中未存储有待发送的命令,非空闲状态用于指示命令队列中存储有待传输的请求。
上述写请求用于向挂载在该通道上的任意一个闪存晶圆中写数据。即,接收写请求的闪存晶圆与接收第一读请求的闪存晶圆可以是相同的闪存晶圆,也可以是不同的闪存晶圆。当上述两个闪存晶圆为相同的闪存晶圆时,该闪存晶圆可以是支持工作状态跳转功能的闪存晶圆,例如,三维三层单元(3dimensional trinary-level cell,3D TLC)介质的闪存晶圆,该类闪存晶圆可以从正在执行其他命令的状态跳转为执行读请求的状态,如此,闪存晶圆可以由执行写请求的工作状态跳转为执行读请求的工作状态。其中,传输写请求的通道也可以称为目标通道。
当上述两个闪存晶圆为不同的闪存晶圆时,上述两个闪存晶圆可以是上文中支持工作状态跳转功能的闪存晶圆,也可以是不支持工作状态跳转功能的闪存晶圆,例如,二维双层单元(2dimensional multi-level cell,2D MLC)介质的闪存晶圆。
S420,暂停通过所述通道传输所述写请求,以调度所述第一读请求通过所述通道传输。
上述调度第一读请求通过所述通道传输,可以指将第一读请求通过通道传输至执行第一读请求的闪存晶圆,即第一闪存晶圆,第一闪存晶圆也可以称为目标闪存晶圆。进一步地,执行第一读请求的闪存晶圆中闪存晶圆也可以称为目标闪存晶圆。
可选地,上述写请求包括写命令和待写入的数据,步骤S410包括:在通过通道传输写请求携带的数据的过程中,确定有待传输的第一读请求;步骤S420包括:暂停通过所述通道传输所述写请求携带的数据,以调度所述第一读请求通过所述通道传输。
具体地,上述写请求携带的数据包括第二数据和第三数据,其中第二数据可以是在传输第一读请求之前已经通过通道传输的数据,第三数据是还未通过通道传输的数据,在第一读请求通过通道传输完成后,可以继续通过该通道传输写请求携带的数据(即第三数据)。为了第一闪存晶圆可以确定存储继续传输的数据的物理地址,闪存控制器可以在暂停通道传输数据时,根据写请求中指示的存储第二数据和第三数据的存储地址,确定存储第三数据存储地址,并记录存储第三数据的存储地址,在继续传输数据之前,将存储第三数据的存储地址与第三数据都发送至存储第三数据的闪存晶圆,以便存储第三数据的闪存晶圆按照上述存储第三数据的存储地址存储第三数据,其中,存储地址可以是物理地址。
图5示出了本发明实施例提供的另一种调度方法的示意性流程图。应理解,图5所示的方法可以由闪存控制器执行。图5与图4的差异在于,图5中存在待传输的从闪存晶圆中读取的数据。图5所示的方法包括:
S510,在通过通道传输写请求的过程中,确定有待传输的第一数据,其中,第一数据为从所述多个闪存晶圆中的任一个闪存晶圆中读取的数据。
上述通道又称目标通道,可以是闪存控制器与多个闪存晶圆之间传输请求或数据的通道,即闪存控制器与执行该写请求的闪存晶圆之间的通道,还可以是传输上述写请求以及第一数据的通道。
上述第一数据为主机需要从闪存设备中读取的数据,因此,上述待传输的第一数据可以指闪存晶圆有待传输的数据需要通过通道传输。
上述确定有待传输的第一数据,可以通过检测闪存晶圆的工作状态确定,当闪存晶圆的工作状态,由读忙碌状态转为读空闲状态时,可以确定该闪存晶圆有待发送的数据。其中,读忙碌状态用于指示闪存晶圆正在执行读请求。读空闲状态用于指示闪存晶圆当前未执行读请求,需要注意的是,处于读空闲状态的闪存晶圆可以正在执行写请求,或者未执行任何请求。
检测闪存晶圆的工作状态可以按照传统的闪存晶圆检测方式,例如,经过预设的时间段后,闪存总线控制器通过通道向挂载在通道上的闪存晶圆发送状态查询请求,收到状态查询请求的闪存晶圆将当前的工作状态通过通道传输至闪存总线控制器。其中,预设的时间段可以根据通道上挂载的闪存晶圆的读写性能设定,还可以随意设定,本发明实施例对此不作限定。
S520,暂停通过所述通道传输所述写请求,以调度所述第一数据通过所述通道传输。
上述调度第一数据通过所述通道传输,可以指将第一数据通过通道由闪存晶圆传输至闪存控制器,以便闪存控制器将第一数据传输至主机。
当然,在第一数据通过通道传输完成后,可以继续通过该通道传输写请求。继续传输写请求的方式可以参见图4中描述的继续传输写请求的方式,为了简洁,在此不再赘述。
下文结合具体的示例,描述在通道正在传输上述其他请求时,调度读请求或读请求读取的数据通过该通道传输的2种策略。假设通道0上挂载了4个闪存晶圆,即闪存晶圆0,闪存晶圆1,闪存晶圆2以及闪存晶圆3,且每个闪存晶圆需要执行的请求可以存储在两个命令队列中,即第一命令队列(又称读请求队列)和第二命令队列,其中第一命令队列用于存储主机发送至存储系统的读请求,第二命令队列用于存储其他请求。
策略一,表1示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表1中可以看出,上述4个闪存晶圆处于读空闲状态,且仅仅闪存晶圆2对应的第二命令队列处于非空状态,而其他闪存晶圆对应的第二命令队列和第一命令队列都处于空状态。此时,可以直接从闪存晶圆2对应的第二命令队列中选择待传输的请求。在传输闪存晶圆2对应的第二命令队列中的请求的过程中,闪存晶圆1对应的第一命令队列的状态由空状态转为非空状态,由于传输第一命令队列中的请求的优先级高于传输第二命令队列中的请求的优先级,此时,可以暂停通过通道传输第二命令队列的请求,优先通过通道传输第一命令队列的请求。直到第一命令队列中的请求都被传输完成后,再继续传输第二命令队列中的请求。
表1
在本发明实施例中,当第一命令队列的状态从空状态转为非空状态时,说明第一命令队列中有待传输的读请求需要传输,则可以暂停该通道中正在传输的其他请求,以调度读请求通过该通道传输,以减少存储设备处理读请求的时长。
策略二,表2示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表2中可以看出,上述4个闪存晶圆处于读空闲状态,且仅仅闪存晶圆2对应的第二命令队列处于非空状态,而其他闪存晶圆对应的第二命令队列和第一命令队列都处于空状态。此时,可以直接从闪存晶圆2对应的第二命令队列中选择待传输的请求。在传输闪存晶圆2对应的第二命令队列中的请求的过程中,如果检测到闪存晶圆1的工作状态由读忙碌状态转为读空闲状态,说明闪存晶圆1已经读取待发送的数据完成,此时,可以暂停传输第二命令队列中的请求,优先将闪存晶圆1中的待发送的数据通过通道传输至闪存控制器。然后再继续传输第二命令队列中的请求。
表2
闪存总线控制器检测通道中闪存晶圆的工作状态的方式,可以包括闪存总线控制器经过预设的时间段后,通过通道向挂载在通道上的闪存晶圆发送状态查询请求,收到状态查询请求的闪存晶圆将当前的工作状态通过通道传输至闪存控制器。
上述预设的时间段可以根据通道上挂载的闪存晶圆的读写性能设定,还可以随意设定,本发明实施例对此不作限定。
在本发明实施例中,当闪存晶圆的工作状态从读忙碌状态转为读空闲状态时,说明该闪存晶圆已经准备好读请求读取的数据,则可以暂停该通道中正在传输的其他请求,以调度读请求读取的数据通过该通道传输,以减少存储设备处理读请求的时长。
本发明实施例还提供了一种调度方法,该调度方法用于选择待发送的读请求的策略。下文基于图3所示的场景,结合图6介绍选择待发送的读请求的策略。
图6是本发明另一实施例的调度方法的示意性流程图。图6所示的方法可以由闪存控制器执行,该闪存设备还包括挂载在同一通道上的多个闪存晶圆。图6所示的方法包括步骤610至步骤630。
S610,获取多个第一命令队列的状态,每个所述第一命令队列用于存储主机发送的从所述多个闪存晶圆中的一个闪存晶圆中读取数据的读请求,所述状态包括存储有请求的非空状态和未存储有请求的空状态。
上述多个第一命令队列可以是闪存控制器需要传输的全部第一命令队列,还可以是闪存接控制器需要传输的一部分第一命令队列。
S620,从处于所述非空状态的第一命令队列中选择目标读请求,所述目标读请求用于从所述多个闪存晶圆中的目标闪存晶圆中读取数据。
上述从处于非空状态的第一命令队列中选择目标读请求的方式,可以包括从处于非空状态的第一命令队列中随机选择目标读请求;或者按照轮询仲裁的方式,从处于非空状态的第一命令队列中选择目标读请求;或者结合多个闪存晶圆的工作状态,从处于非空状态的第一命令队列中选择目标读请求,其中结合多个闪存晶圆的工作状态,选择目标读请求的方式在下文中详细介绍,本发明实施例对于上述方式不作具体限定。
S630,通过所述通道向所述目标闪存晶圆传输所述目标读请求。
上述通道又称目标通道,可以是闪存控制器与多个闪存晶圆之间传输请求或数据的通道,即传输上述目标读请求的通道。
在本发明实施例中,从处于非空状态的第一命令队列中选择目标读请求,并通过通道将目标读请求传输至目标闪存晶圆,避免了使用传统的调度方法中,调度不同的闪存晶圆对应的请求时,其他请求在读请求之前被传输,有利于降低闪存设备处理读请求的时延。
可选地,在上述存储设备中还包括多个第二命令队列,每个第二命令队列用于存储其他请求。闪存控制器在执行步骤610时,还可以同时获取多个第二命令队列的状态,并从处于非空状态的第二命令队列中选择目标请求;根据优先级,从目标请求以及目标读请求中,选择目标读请求作为当前传输的请求,其中传输目标请求的优先级低于传输目标读请求的优先级,或者说,传输第二命令队列中的请求的优先级低于传输第一命令队列中的请求的优先级。
在本发明实施例中,通过设置上述优先级原则,以确保在有读请求和其他请求需要传输时,优先传输读请求,以减少闪存设备处理读请求的时长。
对于传统的闪存晶圆而言(例如,2D MLC介质的闪存晶圆),如果目标闪存晶圆处在正在执行请求的非空闲状态,即使接收到了读请求也不能马上执行,因此,为了进一步减少闪存设备处理读请求的时长,在选择读请求的过程中,还可以结合闪存晶圆的工作状态,也就是说,选择处于空闲状态的闪存晶圆作为目标闪存晶圆,再从处于非空状态的第一命令队列中,选择用于从所述目标闪存晶圆中读取数据的读请求作为目标读请求。
另外,还存在一类闪存晶圆(例如,3D TLC介质的闪存晶圆),该类闪存晶圆支持工作状态跳转的功能,即可以从正在执行其他请求的状态跳转为执行读请求的状态。对于这类闪存晶圆而言,如果目标闪存晶圆处在正在执行读请求的读忙碌(busy)状态,即使接收到了读请求也不能马上执行,因此,为了进一步减少SSD处理读请求的时长,在选择读请求的过程中,还可以结合闪存晶圆当前的工作状态,也就是说,选择处于读空闲状态的闪存晶圆作为目标闪存晶圆,再从处于非空状态的第一命令队列中,选择用于从所述目标闪存晶圆中读取数据的读请求作为目标读请求。
可选地,所述方法还包括S640至S650。
S640,获取所述多个闪存晶圆的工作状态,所述工作状态包括未执行读请求的读空闲状态和正在执行读请求的读忙碌状态。
S650,从处于所述读空闲状态的闪存晶圆中确定所述目标闪存晶圆。
S620还包括:从处于所述非空状态的第一命令队列中,选择用于从所述目标闪存晶圆中读取数据的读请求为所述读请求。
应理解,本发明实施例对上述S640与S610之间执行顺序不作限定,即S640可以在S610之前执行,S640还可以在S610之后执行,S640还可以与S610同时进行。
当然,为了减少在获取闪存晶圆的工作状态时产生的信令开销,在获取了第一命令队列的状态之后,还可以仅获取处于非空状态的第一命令队列对应的闪存晶圆的状态,并从中选择目标闪存晶圆。
上述获取闪存晶圆的过程与传统的获取闪存晶圆的过程相同,可以由闪存总线控制器向多个闪存晶圆分别发送状态查询信令,收到状态查询信令的闪存晶圆可以将当前的工作状态反馈至闪存总线控制器。
下文结合具体的例子,描述在通道空闲的情况下,根据命令队列的状态以及闪存晶圆的工作状态,选择目标读请求的4种策略。假设通道0上挂载了4个闪存晶圆,即闪存晶圆0,闪存晶圆1,闪存晶圆2以及闪存晶圆3,且每个闪存晶圆对应一个第一命令队列和一个第二命令队列。
策略三,表3示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表3中可以看出,上述4个闪存晶圆处于读空闲状态,且仅仅闪存晶圆1对应的第一命令队列处于非空状态,而其他闪存晶圆对应的第一命令队列处于空状态,此时,由于传输第一命令队列中命令的优先级高于传输第二命令队列中命令的优先级,因此无论每个闪存晶圆对应的第二命令队列的状态为空或者非空,都可以优先从闪存晶圆1对应的第一命令队列中获取目标读请求进行传输,直到闪存晶圆1对应的第一命令队列中的请求传输完成,且其他闪存晶圆对应的第一命令队列的状态任为空状态,则可以从处于非空状态的第二命令队列中选择待传输的请求。
需要说明的是,上述从处于非空状态的第二命令队列中选择待传输的请求的方式,可以与传统的请求传输机制中选择待传输请求的方式相同,例如,可以采用轮询仲裁的方式,从处于非空状态的第二命令队列中选择待传输的请求。
表3
在本发明实施例中,无论第二命令队列中是否有待传输的请求,都优先从处于非空状态的第一命令队列中选择读请求,作为当前传输的请求,有利于减少存储设备处理读请求的时长。
策略四,表4示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表4中可以看出,上述4个闪存晶圆中仅有闪存晶圆1处于读忙碌状态,而其他闪存晶圆都处于读空闲状态。闪存晶圆1对应的第一命令队列以及闪存晶圆2对应的第一命令队列处于非空状态,而其他闪存晶圆对应的第一命令队列处于空状态。此时,由于传输第一命令队列中命令的优先级高于传输第二命令队列中命令的优先级,因此无论每个闪存晶圆对应的第二命令队列的状态处在空状态或者非空状态,都可以优先从闪存晶圆2对应的第一命令队列中获取目标读请求进行传输,直到闪存晶圆2对应的第一命令队列中的请求传输完成。
若在闪存晶圆2对应的第一命令队列中的请求传输完成后,闪存晶圆的工作状态由读忙碌状态变化为读空闲状态,则可以按照上述策略一传输请求。若在闪存晶圆2对应的第一命令队列中的请求传输完成后,闪存晶圆的工作状态仍处在读忙碌状态,则可以从处于非空状态的第二命令队列中选择待传输的请求的方式。
需要说明的是,上述从处于非空状态的第二命令队列中选择待传输的请求的方式可以参见策略一中的描述。
表4
在本发明实施例中,无论第二命令队列中是否有待传输的请求,都优先从处于非空状态的第一命令队列中选择读请求,作为当前传输的请求,并且执行该读请求的闪存晶圆当前处于读空闲状态,使得该闪存晶圆接收到读请求之后,可以立刻执行读请求,有利于减少存储设备处理读请求的时长。
策略五,表5示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表5中可以看出,上述4个闪存晶圆处于读空闲状态,且仅仅闪存晶圆3对应的第一命令队列处于空状态,而其他闪存晶圆对应的第一命令队列处于非空状态,此时,由于传输第一命令队列中命令的优先级高于传输第二命令队列中命令的优先级,因此无论每个闪存晶圆对应的第二命令队列的状态为空状态或者非空状态,都可以优先从处于非空状态的第一命令队列中获取目标读请求进行传输,直到处于非空状态的第一命令队列中的请求传输完成,则可以从处于非空状态的第二命令队列中选择待传输的请求。
需要说明的是,上述从处于非空状态的第二命令队列中选择待传输的请求的方式可以参见策略一中的描述。
上述从处于非空状态的第一命令队列中选择待传输的请求,可以包括从处于非空状态的第一命令队列中随机选择待传输的请求;或者基于轮询仲裁的方式,从处于非空状态的第一命令队列中选择待传输的请求,本发明实施例对此不作具体限定。
表5
策略六,表6示出了上述4个闪存晶圆的工作状态,以及每个闪存晶圆对应的命令队列的状态。从表6中可以看出,上述4个闪存晶圆处于读空闲状态,且仅仅闪存晶圆2对应的第二命令队列处于非空状态,而其他闪存晶圆对应的第二命令队列处于非空状态,同时,4个闪存晶圆对应的第一命令队列的状态都为空状态。此时,可以直接从闪存晶圆2对应的第二命令队列中选择待传输的请求。
表6
闪存晶圆0 | 闪存晶圆1 | 闪存晶圆2 | 闪存晶圆3 | |
闪存晶圆的工作状态 | 读空闲状态 | 读空闲状态 | 读空闲状态 | 读空闲状态 |
第一命令队列的状态 | 空状态 | 空状态 | 空状态 | 空状态 |
第二命令队列的状态 | 空状态 | 空状态 | 非空状态 | 空状态 |
当然,在4个闪存晶圆对应的第一命令队列的状态为空状态时,如果处于非空状态的第二命令队列的数量为多个,可以随机从第二命令队列中选择待传输的请求;或者基于轮询仲裁的原则,从第二命令队列中选择待传输的请求;或者结合闪存晶圆的工作状态,从第二命令队列中选择待传输的请求。本发明实施例对此不作具体限定。
上文结合图1至图6详细介绍了本发明实施例的调度方法,下文结合图7至图9详细地描述本发明实施例的装置。需要说明的是,图7至图9所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
图7是本发明实施例的调度装置的示意图,图7所示的装置700应用于闪存设备,该所述闪存设备包括闪存控制器以及多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,装置700包括:确定单元710以及处理单元720。
确定单元710,用于在通过所述目标通道传输写请求的过程中,确定有待传输的第一读请求或第一数据,所述第一读请求用于主机从所述多个闪存晶圆中的第一闪存晶圆中读取数据,所述第一数据为从所述多个闪存晶圆中的任一个闪存晶圆中读取的数据;
处理单元720,用于暂停通过所述目标通道传输所述写请求,以调度所述第一读请求或所述第一数据通过所述目标通道传输。
可选地,作为一个实施例,所述写请求包含待写入的数据,所述待写入的数据包括第二数据和第三数据,所述第二数据为通过所述通道传输的数据,所述第三数据为未通过所述通道传输的数据,所述确定单元,用于:根据写命令确定存储所述待写入的数据的第一存储地址;根据所述第一存储地址确定存储所述第三数据的第二存储地址;所述处理单元,用于在通过所述通道传输完成所述第一读请求后,继续通过所述通道传输所述第三数据以及所述第二存储地址。
可选地,所述闪存设备存储有多个第一命令队列,所述多个第一命令队列用于存储读请求,所述读请求用于主机从所述多个闪存晶圆中读取数据,所述多个第一命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,所述确定单元还用于:确定所述多个第一命令队列中的至少部分第一命令队列的状态从所述空状态转变为所述非空状态;从处于所述非空状态的第一命令队列中确定所述第一读请求。
作为一个可能的实施例,所述闪存设备还存储有多个第二命令队列,所述多个第二命令队列用于存储所述多个闪存晶圆需要执行的请求,且所述多个第二命令队列用于存储除所述读请求之外的请求,传输所述多个第一命令队列中的请求的优先级高于传输所述多个第二命令队列中的请求的优先级,所述多个第二命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,所述处理单元还用于:获取所述多个第一命令队列的状态和所述多个第二命令队列的状态;从处于所述非空状态的第一命令队列中选择第二读请求,所述第二读请求用于从所述多个闪存晶圆中的第二闪存晶圆中读取数据;从处于所述非空状态的第二命令队列中选择目标请求;根据所述优先级,从所述第二读请求以及所述目标请求中选择所述第二读请求作为待传输的请求;通过所述目标通道向所述第二闪存晶圆传输所述第二读请求。
可选地,所述多个闪存晶圆的工作状态包括处于执行读请求的读忙碌状态,以及处于未执行读请求的读空闲状态,所述确定单元还用于:确定所述第一闪存晶圆的工作状态由所述读忙碌状态转为所述读空闲状态;确定所述第一闪存晶圆有待传输的所述第一数据。
图8是本发明实施例的闪存控制器的示意图,图8所示的闪存控制器800可以包括主机接口处理单元810、片上数据缓存单元820、闪存转换层(flash translation layer,FTL)处理单元830、双倍数据速率(double data rate,DDR)接口控制单元840、DDR850以及闪存接口处理单元860。其中闪存接口处理单元可以执行图3至图6所示的方法。
主机接口处理单元810,与主机相连,用于从主机(host)获取命令,例如读请求或写命令。目前SSD与主机之间的通信接口主要有序列式小型计算机系统接口(serialattached small computer systeminterface,SAS)和PCIe(peripheral componentinterconnect express)接口。
片上数据缓存单元820,用于缓存待写入的数据、从逻辑单元中读取的数据,并为命令队列提供存储空间。
DDR接口控制模块840,与DDR850组成DDR存储器,可以辅助片上数据缓存单元缓存用于缓存待写入的数据、从逻辑单元中读取的数据,以及为命令队列提供存储空间,以提高闪存控制器的缓存容量。
FTL处理单元830,用于对主机接口处理单元获取的命令进行寻址,并将寻址后的命令存储至片上数据缓存单元或DDR的命令队列(command queue,cmd queue)中;还用于通过垃圾回收(garbage collection,GC)机制,对闪存晶圆提供的存储空间进行管理,并将基于垃圾回收生成的读命令、擦除命令以及写命令存储至命令队列中。
闪存接口处理单元860,用于通过多通道,与挂载在不同通道上的不同闪存晶圆进行并行通信,其中并行通信包括将闪存晶圆中的数据转发至主机,或将数据以及命令传输至闪存晶圆。
可选地,作为一个实施例,图8所示的闪存接口处理单元860在执行图6所示的方法时,可以通过轮询仲裁单元、优先级仲裁单元以及闪存总线时序产生单元等实现。
图9是本申请实施例的闪存接口处理单元的示意图。图9所示的闪存接口处理单元900包括轮询仲裁单元910,轮询仲裁单元920,优先级仲裁单元930以及闪存总线时序产生单元940。
从图9所示闪存接口处理单元包括两级仲裁单元,其中,两级仲裁单元中第一级的仲裁单元是轮询仲裁单元,第二级仲裁单元是优先级仲裁单元。
第一级轮询仲裁单元包括轮询仲裁单元910以及轮询仲裁单元920,轮询仲裁单元910用于获取挂载在通道0中全部的闪存晶圆的第一命令队列的状态,并基于轮询仲裁原则,根据闪存晶圆的工作状态,从非空状态的第一命令队列中选择目标第一命令队列。轮询仲裁单元920用于获取挂载在通道0中全部的闪存晶圆的第二命令队列的状态,并基于轮询仲裁原则,根据闪存晶圆的工作状态,从非空状态的第二命令队列中选择目标第二命令队列。具体地选择策略请参见上文图6中描述,以及策略三至策略六的介绍,为了简洁,在此不作赘述。
第二级优先级仲裁单元,用于基于命令队列的优先级,从轮询仲裁单元910中获取目标第一命令队列,以及轮询仲裁单元920中获取目标第二命令队列,选择优先级较高的命令队列中的请求作为当前传输的请求,其中,传输第一命令队列中请求的优先级高于传输第二命令队列中请求的优先级。
应理解,图9仅仅以举例的方式介绍本发明实施例使用的闪存控制器的架构,本发明实施例还可以适用于其他的SSD架构。
应理解,在本发明实施例中,上文中的处理器可以采用中央处理单元(centralprocessing unit,CPU),该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应该理解到,本申请所提供的几个实施例所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,具体地,装置中单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统。另外,本发明实施例中描述的单元之间的相互耦合或通信连接可以是直接耦合或通信连接,还可以是通过一些接口,装置或单元的间接耦合或通信连接,还可以是电性,机械等其它的形式。
上文中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个设备,或者也可以分布到多个设备中,可以根据实际的需要选择其中的部分或者全部单元来实现本实施例的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种调度方法,其特征在于,所述方法应用于闪存设备,所述闪存设备包括闪存控制器以及多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,所述方法包括:
在通过目标通道传输写请求的过程中,所述闪存控制器确定有待传输的第一读请求或第一数据,所述目标通道为所述闪存控制器与所述多个闪存晶圆连接的通路,所述第一读请求用于主机从所述多个闪存晶圆中的第一闪存晶圆中读取数据,所述第一数据为从所述多个闪存晶圆中的任一个闪存晶圆中读取的数据;
所述闪存控制器暂停通过所述目标通道传输所述写请求,以调度所述第一读请求或所述第一数据通过所述目标通道传输。
2.如权利要求1所述的方法,其特征在于,所述写请求用于请求向所述第一闪存晶圆中写数据,
在所述闪存控制器暂停通过所述通道传输所述写请求之后,所述方法还包括:
所述第一闪存晶圆暂停执行所述写请求,以使所述通道执行所述读请求。
3.如权利要求1或2所述的方法,其特征在于,所述写请求包含待写入的数据,所述待写入的数据包括第二数据和第三数据,所述第二数据为通过所述目标通道传输的数据,所述第三数据为未通过所述目标通道传输的数据,所述方法还包括:
所述闪存控制器根据写请求确定存储所述待写入的数据的第一存储地址;
所述闪存控制器根据所述第一存储地址确定存储所述第三数据的第二存储地址;
在通过所述通道传输完成所述第一读请求后,所述闪存控制器继续通过所述目标通道传输所述第三数据以及所述第二存储地址。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述闪存设备存储有多个第一命令队列,所述多个第一命令队列用于存储读请求,所述读请求用于主机从所述多个闪存晶圆中读取数据,所述多个第一命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,
所述闪存控制器确定有待传输的第一读请求,包括:
所述闪存控制器确定所述多个第一命令队列中的至少部分第一命令队列的状态从所述空状态转变为所述非空状态;
所述闪存控制器从处于所述非空状态的第一命令队列中确定所述第一读请求。
5.如权利要求1-3中任一项所述的方法,其特征在于,所述多个闪存晶圆的工作状态包括处于执行读请求的读忙碌状态,以及处于未执行读请求的读空闲状态,所述闪存控制器确定有待传输的第一数据,包括:
所述闪存控制器确定所述第一闪存晶圆的工作状态由所述读忙碌状态转为所述读空闲状态;
所述闪存控制器确定所述第一闪存晶圆有待传输的所述第一数据。
6.如权利要求4所述的方法,其特征在于,所述闪存设备还存储有多个第二命令队列,所述多个第二命令队列用于存储所述多个闪存晶圆需要执行的请求,且所述多个第二命令队列用于存储除所述读请求之外的请求,传输所述多个第一命令队列中的请求的优先级高于传输所述多个第二命令队列中的请求的优先级,所述多个第二命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,所述方法还包括:
所述闪存控制器获取所述多个第一命令队列的状态和所述多个第二命令队列的状态;
所述闪存控制器从处于所述非空状态的第一命令队列中选择第二读请求,所述第二读请求用于从所述多个闪存晶圆中的第二闪存晶圆中读取数据;
所述闪存控制器从处于所述非空状态的第二命令队列中选择目标请求;
所述闪存控制器根据所述优先级,从所述第二读请求以及所述目标请求中选择所述第二读请求作为待传输的请求;
所述闪存控制器通过所述目标通道向所述第二闪存晶圆传输所述第二读请求。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
所述闪存控制器获取所述多个闪存晶圆的工作状态,所述工作状态包括未执行读请求的读空闲状态和正在执行读请求的读忙碌状态;
所述闪存控制器从处于所述读空闲状态的闪存晶圆中确定所述第二闪存晶圆;
所述闪存控制器从处于所述非空状态的第一命令队列中选择第二读请求,包括:
所述闪存控制器从处于所述非空状态的第一命令队列中,选择用于从所述第二闪存晶圆中读取数据的所述第二读请求。
8.一种调度装置,其特征在于,所述装置应用于闪存设备,所述闪存设备包括闪存控制器以及多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,
所述闪存设备还包括:
确定单元,用于在通过所述目标通道传输写请求的过程中,确定有待传输的第一读请求或第一数据,所述目标通道为所述闪存控制器与所述多个闪存晶圆连接的通路,所述第一读请求用于主机从所述多个闪存晶圆中的第一闪存晶圆中读取数据,所述第一数据为从所述多个闪存晶圆中的任一个闪存晶圆中读取的数据;
处理单元,用于暂停通过所述目标通道传输所述写请求,以调度所述第一读请求或所述第一数据通过所述目标通道传输。
9.如权利要求8所述的装置,其特征在于,所述写请求包含待写入的数据,所述待写入的数据包括第二数据和第三数据,所述第二数据为通过所述目标通道传输的数据,所述第三数据为未通过所述目标通道传输的数据,
所述确定单元,用于根据写命令确定存储所述待写入的数据的第一存储地址;根据所述第一存储地址确定存储所述第三数据的第二存储地址;
所述处理单元,用于在通过所述目标通道传输完成所述第一读请求后,继续通过所述目标通道传输所述第三数据以及所述第二存储地址。
10.如权利要求8或9所述的装置,其特征在于,所述闪存设备存储有多个第一命令队列,所述多个第一命令队列用于存储读请求,所述读请求用于主机从所述多个闪存晶圆中读取数据,所述多个第一命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,
所述确定单元,还用于确定所述多个第一命令队列中的至少部分第一命令队列的状态从所述空状态转变为所述非空状态;从处于所述非空状态的第一命令队列中确定所述第一读请求。
11.如权利要求8或9所述的装置,其特征在于,所述多个闪存晶圆的工作状态包括处于执行读请求的读忙碌状态,以及处于未执行读请求的读空闲状态,
所述确定单元,还用于确定所述第一闪存晶圆的工作状态由所述读忙碌状态转为所述读空闲状态;确定所述第一闪存晶圆有待传输的所述第一数据。
12.如权利要求10所述的闪存设备,其特征在于,所述闪存设备还存储有多个第二命令队列,所述多个第二命令队列用于存储所述多个闪存晶圆需要执行的请求,且所述多个第二命令队列用于存储除所述读请求之外的请求,传输所述多个第一命令队列中的请求的优先级高于传输所述多个第二命令队列中的请求的优先级,所述多个第二命令队列的状态包括存储有读请求的非空状态和未存储有读请求的空状态,
所述处理单元,还用于获取所述多个第一命令队列的状态和所述多个第二命令队列的状态;从处于所述非空状态的第一命令队列中选择第二读请求,所述第二读请求用于从所述多个闪存晶圆中的第二闪存晶圆中读取数据;从处于所述非空状态的第二命令队列中选择目标请求;根据所述优先级,从所述第二读请求以及所述目标请求中选择所述第二读请求作为待传输的请求;通过所述目标通道向所述第二闪存晶圆传输所述第二读请求。
13.如权利要求12所述的装置,其特征在于,
所述处理单元,还用于获取所述多个闪存晶圆的工作状态,所述工作状态包括未执行读请求的读空闲状态和正在执行读请求的读忙碌状态
从处于所述读空闲状态的闪存晶圆中确定所述第二闪存晶圆
从处于所述非空状态的第一命令队列中,选择用于从所述第二闪存晶圆中读取数据的所述第二读请求。
14.一种闪存设备,其特征在于,所述闪存设备包括闪存控制器以及多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,所述闪存控制器用于执行如权利要求1-7中任一项所述的方法。
15.一种存储系统,其特征在于,所述存储系统包括至少一个闪存设备,每个闪存设备包括闪存控制器和多个闪存晶圆,所述闪存控制器通过内部总线与所述多个闪存晶圆相连,所述闪存控制器用于执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810769590.2A CN110716691B (zh) | 2018-07-13 | 2018-07-13 | 调度方法、装置、闪存设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810769590.2A CN110716691B (zh) | 2018-07-13 | 2018-07-13 | 调度方法、装置、闪存设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716691A true CN110716691A (zh) | 2020-01-21 |
CN110716691B CN110716691B (zh) | 2021-10-01 |
Family
ID=69208472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810769590.2A Active CN110716691B (zh) | 2018-07-13 | 2018-07-13 | 调度方法、装置、闪存设备和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716691B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204309A (zh) * | 2020-02-03 | 2021-08-03 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
WO2021168626A1 (zh) * | 2020-02-24 | 2021-09-02 | 华为技术有限公司 | 一种存储装置、带宽调整方法及电子设备 |
CN116661684A (zh) * | 2023-05-10 | 2023-08-29 | 珠海妙存科技有限公司 | 一种闪存数据的读取方法、系统、设备及介质 |
CN117472294A (zh) * | 2023-12-28 | 2024-01-30 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据处理方法 |
CN117668318A (zh) * | 2023-12-29 | 2024-03-08 | 深圳市安信达存储技术有限公司 | 基于芯片闪存晶圆的叠加电路检索方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089488A1 (en) * | 2007-09-28 | 2009-04-02 | Kabushiki Kaisha Toshiba | Memory system, memory read method and program |
US20100100666A1 (en) * | 2007-02-05 | 2010-04-22 | Zeen Information Technologies Inc. | System and method for controlling flash memory using descriptor array |
US20110022781A1 (en) * | 2009-07-24 | 2011-01-27 | Nir Jacob Wakrat | Controller for optimizing throughput of read operations |
CN105264505A (zh) * | 2012-10-26 | 2016-01-20 | 美光科技公司 | 用于具有可变等待时间的存储器操作的设备及方法 |
CN106445851A (zh) * | 2016-08-26 | 2017-02-22 | 北京中电华大电子设计有限责任公司 | 一种提高FlashNFC‑SIM智能卡接口响应能力的方法 |
CN106708441A (zh) * | 2016-12-29 | 2017-05-24 | 忆正科技(武汉)有限公司 | 一种用于降低固态存储读延迟的操作方法 |
CN107092445A (zh) * | 2017-05-31 | 2017-08-25 | 郑州云海信息技术有限公司 | 一种多通道ssd固态盘io调度方法及装置 |
CN107562654A (zh) * | 2016-07-01 | 2018-01-09 | 北京忆恒创源科技有限公司 | Io命令处理方法与装置 |
CN107957852A (zh) * | 2017-10-13 | 2018-04-24 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘性能一致性的方法 |
-
2018
- 2018-07-13 CN CN201810769590.2A patent/CN110716691B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100100666A1 (en) * | 2007-02-05 | 2010-04-22 | Zeen Information Technologies Inc. | System and method for controlling flash memory using descriptor array |
US20090089488A1 (en) * | 2007-09-28 | 2009-04-02 | Kabushiki Kaisha Toshiba | Memory system, memory read method and program |
US20110022781A1 (en) * | 2009-07-24 | 2011-01-27 | Nir Jacob Wakrat | Controller for optimizing throughput of read operations |
CN105264505A (zh) * | 2012-10-26 | 2016-01-20 | 美光科技公司 | 用于具有可变等待时间的存储器操作的设备及方法 |
CN107562654A (zh) * | 2016-07-01 | 2018-01-09 | 北京忆恒创源科技有限公司 | Io命令处理方法与装置 |
CN106445851A (zh) * | 2016-08-26 | 2017-02-22 | 北京中电华大电子设计有限责任公司 | 一种提高FlashNFC‑SIM智能卡接口响应能力的方法 |
CN106708441A (zh) * | 2016-12-29 | 2017-05-24 | 忆正科技(武汉)有限公司 | 一种用于降低固态存储读延迟的操作方法 |
CN107092445A (zh) * | 2017-05-31 | 2017-08-25 | 郑州云海信息技术有限公司 | 一种多通道ssd固态盘io调度方法及装置 |
CN107957852A (zh) * | 2017-10-13 | 2018-04-24 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘性能一致性的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204309A (zh) * | 2020-02-03 | 2021-08-03 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
WO2021168626A1 (zh) * | 2020-02-24 | 2021-09-02 | 华为技术有限公司 | 一种存储装置、带宽调整方法及电子设备 |
CN116661684A (zh) * | 2023-05-10 | 2023-08-29 | 珠海妙存科技有限公司 | 一种闪存数据的读取方法、系统、设备及介质 |
CN116661684B (zh) * | 2023-05-10 | 2024-02-23 | 珠海妙存科技有限公司 | 一种闪存数据的读取方法、系统、设备及介质 |
CN117472294A (zh) * | 2023-12-28 | 2024-01-30 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据处理方法 |
CN117472294B (zh) * | 2023-12-28 | 2024-04-09 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据处理方法 |
CN117668318A (zh) * | 2023-12-29 | 2024-03-08 | 深圳市安信达存储技术有限公司 | 基于芯片闪存晶圆的叠加电路检索方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110716691B (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110716691B (zh) | 调度方法、装置、闪存设备和系统 | |
US11467769B2 (en) | Managed fetching and execution of commands from submission queues | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US9563367B2 (en) | Latency command processing for solid state drive interface protocol | |
US10120586B1 (en) | Memory transaction with reduced latency | |
US20200089537A1 (en) | Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants | |
US9489141B2 (en) | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device | |
KR101486987B1 (ko) | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 | |
US8683126B2 (en) | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory | |
US20070156955A1 (en) | Method and apparatus for queuing disk drive access requests | |
US11835993B2 (en) | System on chip having semaphore function and method for implementing semaphore function | |
TW201234188A (en) | Memory access device for memory sharing among multiple processors and access method for the same | |
US20080301381A1 (en) | Device and method for controlling commands used for flash memory | |
CN111475438A (zh) | 提供服务质量的io请求处理方法及其装置 | |
US20120311241A1 (en) | Scheduler for memory | |
CN112015527B (zh) | 管理从提交队列获取和执行命令 | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
US6836831B2 (en) | Independent sequencers in a DRAM control structure | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
JP5911548B1 (ja) | 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
US20120159024A1 (en) | Semiconductor apparatus | |
US10268388B2 (en) | Access control method, storage device, and system | |
US8135878B1 (en) | Method and apparatus for improving throughput on a common bus | |
CN115756311A (zh) | 固态驱动器、设备和固态驱动器的操作方法 |
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 |