调度方法与装置与流程

文档序号:14077631阅读:125来源:国知局
调度方法与装置与流程

本发明涉及存储技术领域,尤其涉及一种调度方法与装置。



背景技术:

nvm(非易失存储器,non-volatilememory)用于实现存储功能,具有非易失性特点。图1是固态存储设备的框图,固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。

nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)等是常见的nvm。

接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。

控制部件104用于控制在接口103、nvm芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式;控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令;控制部件104还可以耦合到dram110,并可访问dram110的数据;在dram可存储ftl表和/或缓存的io命令的数据。

控制部件104包括闪存接口控制器(或称为闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。nvm芯片105的接口协议包括“toggle”、“onfi”等公知的接口协议或标准。

存储器目标(target)是闪存颗粒105封装内的共享芯片使能(ce,chipenable)信号的一个或多个逻辑单元(logicunit),每个逻辑单元具有逻辑单元号(lun,logicunitnumber)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在http://www.onfi.org/~/media/onfi/specs/onfi_3_2%20gold.pdf获得的“opennandflashinterfacespecification(revision3.2)”中,提供了关于目标(target)、逻辑单元、lun、平面(plane)的含义,以及也提供了操作nvm芯片的命令。

在公开号为cn1414468a的中国专利申请中,提供了通过执行微指令序列来处理cpu(centralprocessingunit,中央处理单元)指令的方案。当cpu要处理特定指令时,转换逻辑电路将特定指令转换成与之对应的微指令序列,通过执行微指令序列来实现特定指令的功能。微指令序列或者微指令序列的模板存储在rom(readonlymemory,只读存储器)中。在将特定指令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定指令相对应。

另外,在中国专利申请cn201610009789.6与cn201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置。

由于用于nvm存储器中的nvm控制器通常耦合到多个nvm芯片,nvm芯片包括多个lun(逻辑单元)或管芯,多个lun和管芯可以并行响应及访问nvm命令,又由于每个lun或管芯上可以有多个待处理的nvm命令,因此nvm控制器需要对多个nvm命令或多段微指令序列进行调度,以维护多个在处理中或待处理的nvm命令,或者维护多段用于生成nvm命令的微指令序列。

现有技术中,提供了多个命令队列,每个命令队列用于指示不同的优先级,对从高优先级队列接收的命令优先处理,而对从低优先级队列接收的命令以较低优先级处理,但是没有基于当前命令或微指令序列的执行状态对调度策略进行调整,且存在配置灵活度差的技术问题。



技术实现要素:

本发明的目的在于提供调度方法与装置,用于基于当前命令的执行状态或被调度事件进行调度。

本发明的第一方面提供一种调度方法,该调度方法包括:

从寄存器组中选择具有第一值的第一寄存器;其中第一寄存器对应第一待处理事件;调度同第一寄存器对应的第一线程对第一待处理事件进行处理。

结合本发明的第一方面,在第一种可能的实现方式中,寄存器组包括多个寄存器,每个具有第一值的寄存器对应一个待处理事件,寄存器组中的寄存器组织为行与列,相同列用于指示操作相同资源的线程,相同行的寄存器属于相同的优先级组。

结合本发明的第一方面,及其第一种可能的实现方式,在第二种可能的实现方式中,线程调度方法还包括:响应于第一待处理事件处理完成,将寄存器组中对应于第一待处理事件的寄存器修改为第二值,以指示第一待处理事件处理完成。

结合本发明的第一方面,及其第一种可能的实现方式,在第三种可能的实现方式中,线程调度方法还包括:响应于第一待处理事件处理完成,将寄存器组中对应于第一待处理事件的寄存器修改为第二值,以指示第一待处理事件处理完成;以及在寄存器组中将对应第二待处理命令的寄存器设置为第一值,以指示第二待处理事件。

结合本发明的第一方面的第三种可能的实现方式,在第四种可能的实现方式中,第一待处理事件指示写命令的数据传输阶段,第二待处理事件指示写命令的结果查询阶段;以及对应第一待处理事件的寄存器所在的优先级组具有比对应第二待处理事件的寄存器所在的优先级组低的优先级。

结合本发明的第一方面、第一种至第四种可能的实现方式,在第五种可能的实现方式中,线程调度方法还包括:依据优先级组的优先级,选择指示有待处理事件的高优先级组;以及从高优先级组中,以轮转方式选择具有第一值的第一寄存器。

结合本发明的第一方面、第一种至第五种可能的实现方式,在第六种可能的实现方式中,线程调度方法还包括:从命令队列中获取待处理命令,为待处理命令设置第一优先级;以及依据待处理命令所操作的资源,从具有第一优先级的优先级组中,将对应于待处理命令所操作的资源的寄存器设置为第一值。

结合本发明的第一方面的第六种可能的实现方式,在第七种可能的实现方式中,依据待处理命令的类型和/或获取待处理命令的命令队列,确定第一优先级。

结合本发明的第一方面的第六种或第七种可能的实现方式,在第八种可能的实现方式中,若待处理命令是写命令,为写命令设置第一优先级,依据写命令所操作的资源,从具有第一优先级的优先级组中,将对应于所述写命令所操作的资源的寄存器设置为第一值;响应于写命令的数据传输阶段完成,为写命令的结果查询阶段设置第二优先级;依据写命令所操作的资源,从具有第二优先级的优先级组中,将对应于所述写命令所操作的资源的寄存器设置为第一值;以及所述第二优先级高于所述第一优先级。

结合本发明的第一方面的第七种或第八种可能的实现方式,在第九种可能的实现方式中,更新待处理命令的类型和/或获取待处理命令的命令队列与优先级组的对应关系。

由于本发明的第一方面的调度方法使寄存器对应于线程,寄存器组包括具有不同优先级的优先级组,又使具有第一值的寄存器指示存在一个待调度的待处理事件,从而实现对寄存器组的优先级以及寄存器的值进行预设置操作,以映射待处理事件的调度情况,又由于寄存器组可支持多种调度策略,配置灵活度高,从而可通过优化并调整调度策略来提高待处理事件的调度效率。

本发明的第二方面提供一种调度装置,该调度装置包括命令队列、微指令存储器、微指令执行单元、寄存器组、调度器与nvm介质接口;其中命令队列用于接收来自用户或上层系统的命令;微指令执行单元通过执行线程来操作nvm介质接口对待处理命令进行处理,其中线程是可被执行的微指令序列;寄存器组用于指示待处理的事件与待处理事件的优先级;调度器用于依据寄存器组中的寄存器,对线程进行调度;微指令执行单元接收调度器的指示,执行被调度的线程。

结合本发明的第二方面,在第一种可能的实现方式中,寄存器组包括多个寄存器,每个具有第一值的寄存器指示一个待处理事件,寄存器组中的寄存器组织为行与列,相同列的寄存器用于指示操作相同资源的线程,相同行的寄存器属于相同的优先级组。

结合本发明的第二方面,在第二种可能的实现方式中,调度装置还包括上下文存储器,其中,上下文存储器用于保存线程的执行状态;当线程的执行被中止时,将线程的状态保存到上下文存储器,而当恢复线程的执行时,从上下文存储器中恢复线程的状态。

结合本发明的第二方面、第一种或第二种可能的实现方式,在第三种可能的实现方式中,调度装置还包括掩码寄存器组,用于指示寄存器组中指示的待处理事件是否需要被处理。

结合本发明的第二方面、第一种至第三种可能的实现方式,在第四种可能的实现方式中,调度装置还包括映射器,所述映射器依据命令队列中的待处理命令选择寄存器组的具有第一优先级的第一优先级组;以及依据待处理命令所操作的资源,从具有第一优先级的第一优先级组中,将对应于待处理命令所操作的资源的寄存器设置为第一值。

结合本发明的第二方面、第一种至第四种可能的实现方式,在第五种可能的实现方式中,调度器选择指示有待处理事件的高优先级组,从高优先级组中,以轮转方式选择具有第一值的第一寄存器,以及调度处理第一寄存器指示的待处理事件的线程。

结合本发明的第二方面的第五种可能的实现方式,在第六种可能的实现方式中,若高优先级组中指示没有待处理事件,所述调度器从低优先级组中,以轮转方式选择具有第一值的第二寄存器,以及调度处理第二寄存器指示的待处理事件的线程。

结合本发明的第二方面、第一种至第六种可能的实现方式,在第七种可能的实现方式中,响应于命令队列的待处理命令是写命令,将具有第一优先级的第一优先级组中对应所述写命令所访问资源的寄存器设置为第一值;以及微指令执行单元完成写命令的数据传输阶段后,将具有第二优先级的第二优先级组中对应所述写命令所访问资源的寄存器设置为第一值;其中所述第二优先级高于所述第一优先级。

结合本发明的第二方面、第一种至第七种可能的实现方式,在第八种可能的实现方式中,所述资源是nvm的逻辑单元。

本发明的第三方面提供一种io命令调度方法,该io命令调度方法包括:

从寄存器组的高优先级组中选择具有第一值的第一寄存器;其中第一寄存器对应第一待处理命令;对第一待处理命令进行处理。

结合本发明的第三方面,在第一种可能的实现方式中,寄存器组包括多个寄存器,每个具有第一值的寄存器对应一个待处理命令,寄存器组中的寄存器组织为行与列,相同列的寄存器用于指示操作相同资源的待处理命令,相同行的寄存器属于相同的优先级组。

结合本发明的第三方面,及其第一种可能的实现方式,在第二种可能的实现方式中,命令调度方法还包括:响应于第一待处理命令处理完成,将寄存器组中对应于第一待处理命令的寄存器修改为第二值,以指示第一待处理命令处理完成。

结合本发明的第三方面,及其第一种可能的实现方式,在第三种可能的实现方式中,命令调度方法还包括:响应于第一待处理命令的第一阶段处理完成,将寄存器组中对应于第一待处理命令寄存器修改为第二值,以指示第一待处理命令或第一待处理命令的第一阶段处理完成;以及在寄存器组中将对应第一待处理命令的第二阶段的寄存器设置为第一值,以指示第一待处理命令的第二阶段等待处理。

结合本发明的第三方面的第三种可能的实现方式,在第四种可能的实现方式中,第一待处理命令为写命令,第一待处理命令的第一阶段为数据传输阶段,第一待处理命令的第二阶段为结果查询阶段;以及对应第一待处理命令的第二阶段的寄存器所在的优先级组具有比对应第一待处理命令的第一阶段的寄存器所在的优先级组低的优先级。

结合本发明的第三方面、第一种至第四种可能的实现方式,在第五种可能的实现方式中,命令调度方法还包括:依据优先级组的优先级,选择指示有待处理命令的高优先级组;以及从高优先级组中,以轮转方式选择具有第一值的第一寄存器。

结合本发明的第三方面、第一种至第五种可能的实现方式,在第六种可能的实现方式中,命令调度方法还包括:在执行了指定数量的同第一优先级组的寄存器对应的命令后,降低第一优先级组的优先级。

结合本发明的第三方面、第一种至第五种可能的实现方式,在第七种可能的实现方式中,命令调度方法还包括:若第二优先级组长时间没有被调度,调高第二优先级组的优先级。

结合本发明的第三方面、第一种至第七种可能的实现方式,在第八种可能的实现方式中,命令调度方法还包括:从命令队列中获取待处理命令,为待处理命令设置第一优先级;以及依据待处理命令所操作的资源,从具有第一优先级的优先级组中,将对应于待处理命令所操作的资源的寄存器设置为第一值。

结合本发明的第三方面的第八种可能的实现方式,在第九种可能的实现方式中,其中依据待处理命令的类型和/或获取待处理命令的命令队列,确定第一优先级。

结合本发明的第三方面的第八种或第九种可能的实现方式,在第十种可能的实现方式中,若待处理命令是写命令,为写命令设置第一优先级;响应于写命令的数据传输阶段完成,为写命令的结果查询阶段设置第二优先级;以及所述第二优先级高于所述第一优先级。

结合本发明的第三方面的第九种或第十种可能的实现方式,在第十一种可能的实现方式中,命令调度方法还包括:更新待处理命令的类型和/或获取待处理命令的命令队列与优先级组的对应关系。

结合本发明的第三方面、第一种至第十种可能的实现方式,其中所述命令是nvm接口命令,以及所述资源是nvm的逻辑单元。

本发明的第四方面提供一种nvm接口控制器,该nvm接口控制器包括:命令队列、寄存器组、调度器和nvm命令处理单元,其中,命令队列用于接收来自用户或上层系统的命令;寄存器组用于指示命令的调度优先级;调度器用于依据寄存器组中的寄存器,对命令进行调度,并指示待处理命令;nvm命令处理单元接收调度器的指示,对待处理命令进行处理。

结合本发明的第四方面,在第一种可能的实现方式中,寄存器组包括多个寄存器,每个具有第一值的寄存器对应一个待处理命令,寄存器组中的寄存器组织为行与列,相同列的寄存器用于指示操作相同资源的待处理命令,相同行的寄存器属于相同的优先级组。

结合本发明的第四方面,在第二种可能的实现方式中,调度器依据优先级组的优先级,选择指示有待处理命令的高优先级组;以及从高优先级组中,以轮转方式选择具有第一值的第一寄存器,并调度执行同第一寄存器对应的待处理命令。

结合本发明的第四方面、第一种或第二种可能的实现方式,在第三种可能的实现方式中,调度器调度了指定数量的同第一优先级组的寄存器对应的命令后,降低第一优先级组的优先级。

结合本发明的第四方面、第一种至第三种可能的实现方式,在第四种可能的实现方式中,若第二优先级组长时间没有被调度,所述调度器调高第二优先级组的优先级。

结合本发明的第四方面、第一种至第四种可能的实现方式,在第五种可能的实现方式中,nvm接口控制器还包括映射器,所述映射器依据命令队列中的待处理命令的类型,将待处理命令映射到第一优先级;以及依据待处理命令所操作的资源,从具有第一优先级的优先级组中,将对应于待处理命令所操作的资源的寄存器设置为第一值。

结合本发明的第四方面、第一种至第五种可能的实现方式,在第六种可能的实现方式中,映射器的映射规则可被更新。

结合本发明的第四方面、第一种至第五种可能的实现方式,在第七种可能的实现方式中,nvm命令处理单元完成对第一命令的处理后,将寄存器组中与第一命令对应的寄存器设置为第二值。

结合本发明的第四方面、第一种至第七种可能的实现方式,在第八种可能的实现方式中,为待处理的写命令设置第一优先级;nvm命令处理单元完成对写命令的数据传输阶段的处理后,为写命令的结果查询阶段设置第二优先级,以及所述第二优先级高于所述第一优先级。

结合本发明的第四方面、第一种至第八种可能的实现方式,在第九种可能的实现方式中,nvm命令处理单元耦合到nvm芯片,并依据待处理命令访问nvm芯片。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中固态存储设备的示意图;

图2为本发明实施例一的nvm接口控制器示意图;以及

图3为本发明实施例二的nvm接口控制器的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图2是根据本发明实施例一的固态存储设备的控制部件(也参看图1,控制部件104)的nvm接口控制器的框图。nvm接口控制器包括命令队列210、寄存器组220、调度器230与nvm命令处理单元240。

命令队列210用于接收来自用户或上层系统的命令。来自用户或上层系统的命令可以包括读出、写入、删除、标记为无效等命令,还可以包括读取nvm芯片状态、读取/设置nvm芯片特征(feature)等命令,另外,还可以包括用户自定义命令。命令队列210可由存储器、先进先出存储器或寄存器堆等实现。

nvm命令处理单元240从命令队列210获取命令,并根据命令的指示向nvm芯片发送符合nvm芯片接口标准的nvm接口命令或依照nvm芯片接口标准从nvm接收数据或状态。nvm命令处理单元240耦合到多个nvm芯片,示例性地,在图2中,nvm命令处理单元240通过2个通道耦合到4颗nvm芯片,每个nvm芯片包括2个lun,在通道1的nvm芯片提供了lun0-lun3,在通道2的nvm芯片提供lun4-lun7。

寄存器组220包括多个寄存器。为了展示的目的,寄存器组220中的寄存器组220组织为行与列,每一列的寄存器用于相同的lun,而每一行的寄存器属于相同的优先级组。图2中,寄存器组220中从左向右第1列的每个值为1寄存器,指示了存在一个待调度的访问lun0的命令;寄存器组220中从左向右第2列的每个值为1寄存器,指示了存在一个待调度的访问lun1的命令。类似地,寄存器组220中从左向右第8列的每个值为1寄存器,指示了存在一个待调度的访问lun7的命令。寄存器组220的第1行为优先级组p1;寄存器组220的第2行为优先级组p2;以及寄存器组220的第3行为优先级组p3。

可选地,寄存器组220的每一列用于相同的管芯或nvm芯片。

当从命令队列210获取了待处理命令,依据其命令类型、访问的lun,而设置寄存器组220。如图2所示,响应于从命令队列210获取访问lun0的读命令,将寄存器组220第1行第1列的寄存器设置为1。接着,从命令队列210获取了访问lun0的写命令,将寄存器组220第3行第1列的寄存器设置为1,以指示该写命令的调度优先级低于前面的读命令。

可选地,可依据固态存储设备的工作状态(启动、掉电、低功耗、正常等)为访问nvm的命令设置不同的调度优先级。

可选地,从命令队列210获取的命令中也包括优先级指示,还依据命令的优先级指示为命令设置调度优先级。

依然可选地,写命令包括两个处理阶段,数据传输阶段与结果查询阶段。如图2所示,在收到写命令时,为执行数据传输阶段,将寄存器组220第3行第1列的寄存器设置为1;而当数据传输阶段完成后,将寄存器组220第3行第1列的寄存器设置为0,而将寄存器组220第2行第1列的寄存器设置为1,以指示写命令的结果查询阶段的调度优先级高于数据传输阶段。

在根据本发明的实施例中,优先级组p1具有最高的优先级,优先级组p2具有居中的优先级,优先级组p3具有最低的优先级。在优先级组p1的多个寄存器的任何一个指示有待处理命令时,选取优先级组p1进行调度;仅在高优先级组中不存在待处理命令时,才选择较低优先级的优先级组。

选取优先级组后,调度器从该优先级组中选取待处理命令。例如,以轮转方式选择访问多个lun之一的待处理命令。

可选地,对优先级组的选取,和/或对选中的优先级组中的待处理命令的选取,可采用多种调度策略。示例性地,可采用轮转、加权轮转、基于优先级的调度、最高响应比优先等调度策略对优先级组进行选取,和/或,对选中的优先级组中的待处理命令进行选取。

调度器230依据寄存器组220选择待处理命令,并向nvm命令处理单元240指示待处理命令。nvm命令处理单元240依据调度器的指示,对待处理命令进行处理。在命令处理完成,或命令的阶段处理完成后,修改寄存器组220中的寄存器,以指示命令或命令阶段处理完成。

作为举例,在一个场景中,从命令队列210获取了访问lun0的读命令与擦除命令。为处理读命令,将优先级组p1中对应lun0的寄存器设置为1,以及为处理擦除命令,将优先级组p3中对应lun0的寄存器置为1。从而调度器230优先处理优先级组p1中的对应lun0的寄存器指示的读命令。在读命令处理完成后,优先级组p1中对应lun0的寄存器被清零。接下来,调度器230选择优先级组p3中对应lun0的寄存器指示的擦除命令。这样减少了具有长处理延迟的擦除命令对读命令的阻塞,降低了读命令的平均处理延迟。

作为又一举例,在一个场景中,命令队列210中有大量的写命令与少量的读命令。从命令队列210中获取待处理的读命令或写命令。依据待处理命令要访问的lun,将优先级组p2的寄存器设置为1。可选地,若优先级组p2中,指示lun2的寄存器已经被置位(例如,设置为1)(表明在lun2上有属于优先级组p2的待处理命令),而将优先级组p3的指示lun2的寄存器置位。写命令包括两个处理阶段,数据传输阶段与结果查询阶段。而读命令包括两个阶段,命令传输与结果查询阶段。当读命令的命令传输阶段处理完成后,清除寄存器组中对该读命令的指示,以及在优先级组p1中,将与读命令访问的lun对应的寄存器置位,以将读命令的结果查询阶段设置为高优先级。而当写命令的数据传输阶段处理完成后,清除寄存器组中对该写命令的指示,以及在优先级组p3中,将与写命令访问的lun对应的寄存器置位,以将写命令的结果查询阶段设置为低优先级。这样可以减少读命令的结果查询阶段被写命令的数据传输所阻塞的概率,降低读命令的平均处理延迟。

在依然又一个例子中,从命令队列210中获取待处理命令。若待处理命令是写命令,依据该写命令要访问的lun,将优先级组p1的寄存器设置为1。若待处理命令是读命令,依据该写命令要访问的lun,将优先级组p2的寄存器设置为1。当写命令的数据传输阶段处理完成后,清除寄存器组中对该写命令的指示,以及在优先级组p3中,将与该写命令访问的lun对应的寄存器置位,以将写命令的结果查询阶段设置为低优先级。而当读命令的命令传输阶段处理完成后,清除寄存器组中对该读命令的指示,以及在优先级组p1中,将与读命令访问的lun对应的寄存器置位,以将读命令的数据传输阶段设置为高优先级。

实施例二

图3是本发明实施例二的固态存储设备的控制部件(也参看图1,控制部件104)的nvm接口控制器的框图。nvm接口控制器通过处理微指令来生成操作nvm芯片的命令。为实现对微指令的处理,nvm接口控制器包括微指令执行单元310、命令队列320、nvm介质接口330、微指令存储器340、上下文存储器360和/或通用寄存器350。

微指令存储器340用于存储微指令。微指令执行单元310从微指令存储器340中读取并执行微指令。微指令使得微指令执行单元通过nvm介质接口330向nvm芯片发出操作nvm芯片的命令。示例性地,上述命令包括读出、编程、擦除、暂停、读取特征(feature)和/或设置特征等命令。微指令也使得微指令执行单元310通过nvm介质接口330获得从nvm芯片读出的数据。一条或多条微指令对应于操作nvm芯片的命令之一。微指令还包括分支、跳转微指令,其使得微指令执行单元改变执行微指令的顺序。另外,也可以在微指令序列中提供让步(yield)微指令,当执行到让步微指令时,微指令执行单元可调度并执行其他微指令序列。

微指令存储器340中可存储一段或多段微指令序列。作为举例,在图3的微指令存储器340中,存储了n段微指令序列,即微指令序列1、微指令序列2......微指令序列n。微指令序列1、微指令序列2......微指令序列n中的每段微指令序列均包括多条微指令。

在每段微指令序列中的多条微指令可由微指令执行单元310执行。每段微指令序列拥有自己的执行状态,从而微指令执行单元310能够中止正在执行的微执行序列,并选择执行其他微指令序列。微指令执行单元310暂停正在执行的微指令序列,或者执行让步微指时,正在执行的微指令序列的执行状态被保存;当微指令执行单元恢复微指令序列的执行时,读出被保存的执行状态,从而继续被恢复的微指令序列的执行。

在一个例子中,通用寄存器350耦合到微指令执行单元310,用于保存和提供微指令序列的执行状态。通用寄存器350保存的微指令序列的执行状态包括程序计数器(pc)、通用寄存器(gr)、物理地址寄存器和/或定时器等。程序计数器用于指示微指令序列中当前执行的微指令地址。物理地址寄存器用于指示微指令序列访问的nvm芯片的地址。

在另一个例子中,上下文存储器360用于保存微指令序列的执行状态。上下文存储器360保存的微指令序列的执行状态可包括通用寄存器350的内容。在上下文存储器360中,可保存一条或多条微指令序列的执行状态。在上下文存储器360中保存了状态信息的微指令序列,可被调度恢复执行。通过将上下文存储器360中保存的对应于一条微指令序列的状态信息恢复到通用寄存器350中,微指令执行单元310可恢复该微指令序列的执行。将执行的微指令序列称作线程。同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。在上下文存储器360中,为每个线程存储执行状态。

此外,微指令执行单元310可访问命令队列320。例如,在执行微指令时,依据微指令,微指令执行单元310访问命令队列320。

在处理命令队列320中的命令时,获取与该命令对应的微指令序列,并由微指令执行单元310执行该微指令序列,以完成对命令队列320中的命令的处理。可由转换电路(未示出)实现从处理命令队列320中的命令到微指令序列的转换。也可以由微指令执行单元310实现从处理命令队列320中的命令到微指令序列的转换。在获取微指令序列的过程中,可以基于命令队列320中的命令对微指令序列进行填充或适配,以使微指令序列同命令队列320中的命令相适应。作为另一个例子,微指令序列控制微指令执行单元310访问并处理命令队列320中的命令。并依据命令队列320中的命令来选择执行对应的微指令序列。

在根据本发明的实施例中,基于所要访问的lun来创建或使用线程。例如使用线程1来访问lun1,和/或使用线程2来访问lun2。在一个例子中,上下文存储器360可容纳的线程数量同图3的处理微指令的部件所耦合的闪存颗粒的lun的数量相同。为每一个lun分配或保留线程。当处理对一个lun的请求时,调度与该lun相对应的线程。在另一个例子中,上下文存储器360可容纳的线程数量小于同图3的闪存接口控制器所耦合的lun的数量。当处理对访问lun的命令时,使用已分配来处理该lun的线程或者分配新线程来处理该命令。

提供lun缓存(未示出)来存储从lun读出或向lun写入的数据。为每个线程提供lun缓存,其中,lun缓存的大小对应于nvm芯片的页尺寸,提供更大尺寸的lun缓存对提高性能是有利的。

在另一个例子中,由dram(dynamicrandomaccessmemory,动态随机访问存储器)或其他外部于图3的nvm接口控制器的存储器来提供lun缓存。

线程可以被调度。nvm接口控制器还包括寄存器组370。寄存器组370包括多个寄存器。为了展示的目的,寄存器组370中的寄存器组织为行与列,每一列的寄存器用于相同的lun,而每一行的寄存器属于相同的优先级组。作为举例,lun与线程一一对应,一个线程专用于处理访问与其对应的lun的命令。图3中,寄存器组370中从左向右第1列的每个值为1的寄存器,指示了存在一个待处理的访问lun0的事件;寄存器组370中从左向右第2列的每个值为1寄存器,指示了存在一个待处理的访问lun1的事件。类似地,寄存器组370中从左向右第8列的每个值为1寄存器,指示了存在一个待处理的访问lun7的事件。事件有多种含义。在一个例子中,基于命令队列320中待处理的命令,生成事件。命令可对应一个或多个事件。例如,一个事件指示待处理的读取/设置闪存颗粒特征(feature)的命令。或者一个事件指示待处理的写命令的数据传输阶段或读命令的命令传输阶段,而另一个事件指示读/写命令的结果查询阶段。

寄存器组370的第1行为优先级组p1;寄存器组370的第2行为优先级组p2;以及寄存器组370的第3行为优先级组p3。

可选地,寄存器组370的每一列用于相同的管芯或nvm芯片。

在根据本发明的实施例中,为处理事件而调度线程。依据待处理事件所指示的被访问的lun而调度与该lun相对应的线程。

当从命令队列获取了1个待处理命令,为处理该命令而创建或调度线程。以及依据获取命令的命令队列、命令类型和/或访问的lun,而设置寄存器组,来指示存在待处理的事件。例如,从命令队列获取访问lun0的读命令,为指示该读命令待处理,将寄存器组第1行第1列的寄存器设置为1。接着,从命令队列获取了访问lun0的写命令,为指示该写命令待处理,将寄存器组第3行第1列的寄存器设置为1。以及寄存器组第3行的优先级低于寄存器组第1行的优先级。

可选地,写命令包括两个处理阶段,数据传输阶段与结果查询阶段。以访问lun0的写命令为例,为指示待处理数据传输阶段,将寄存器组370第1行第3列的寄存器设置为1;而当数据传输阶段完成后,将寄存器组370第3行第1列的寄存器设置为0,而将寄存器组370第2行第1列的寄存器设置为1,以指示结果查询阶段的调度优先级高于数据传输阶段。

调度器380依据寄存器组370对线程进行调度,来处理寄存器组指示的待处理事件。在图3的例子中,调度器380首先选取优先级组。作为举例,选取具有待处理事件、且优先级最高的优先级组。例如,优先级组p1具有最高的优先级,而优先级组p3具有最低的优先级。在优先级组p1的多个寄存器的任何一个指示有待处理事件时,选取优先级组p1进行调度;仅在优先级组p1中不存在待处理事件时,才选择较低优先级的优先级组。以及可选地,在对于一个优先级组,其优先级可以翻转,临时地调整该优先级组的优先级。选取优先级组后,调度器380从该优先级组中选取待处理事件。例如,以轮转方式选择访问多个lun之一的待处理事件。

可选地,对优先级组的选取,和/或对选中的优先级组中的待执行线程的选取,都可采用多种调度策略,例如,轮转、加权轮转、基于优先级的调度、最高响应比优先的调度等。

调度器380依据选出的待处理事件,调度处理该选出的待处理事件的线程。例如,依据该事件所访问的lun,调度与该lun对应的线程来处理调度器380选出的待处理事件。调度器380还向微指令执行单元310指示所调度的线程。

可选地,调度器380还向微指令执行单元310指示被调度的待处理事件。在一个lun上有多个待处理事件时,向微指令执行单元310指示被调度的待处理事件是有利的。可选地,由被调度的线程识别与其对应的lun上具有最高优先级的待处理事件,并对事件进行处理。

微指令执行单元310依据调度器380的指示,对待执行线程进行处理。在线程执行完成,或线程的阶段处理完成后,修改寄存器组370中的寄存器,以指示线程或线程阶段处理完成。

为开始执行线程,微指令执行单元330从上下文存储器360获取线程的上下文,依据线程上下文恢复线程所使用的通用寄存器350的值,或者切换上下文存储器360的寄存器窗口。以及在线程阶段处理完成(例如,线程执行了“让步”微指令)时,微指令执行单元330将当前线程的上下文保存在上下文存储器360中,并从调度器380获取下一待执行线程。

作为举例,在一个场景中,命令队列320中有大量的写命令或少量的读命令,从命令队列320中获取待处理的读命令或写命令。为每个lun创建或恢复线程来处理访问该lun的读命令和/或写命令的线程。依据命令访问的lun,对于读命令,将优先级组p2的寄存器设置为1,对于写命令,将优先级组p3的寄存器设置为1。读命令包括两个阶段,命令传输与结果查询阶段。而写命令包括两个处理阶段,数据传输阶段与结果查询阶段。在每个阶段完成后,线程通过执行让步微指令中止自身的执行。当处理读命令的线程的命令传输阶段处理完成后,清除寄存器组370中对应的指示,以及在优先级组p1中,将与该线程访问的lun对应的寄存器置位(设置为1),以将该读命令的结果查询阶段设置为高优先级。而当处理写命令的线程的数据传输阶段处理完成后,清除寄存器组370中对应的指示,以及在优先级组p3中,将与该线程访问的lun对应的寄存器置位,以将写命令的结果查询阶段设置为低优先级。这样可以减少处理读命令的线程的结果查询阶段被处理写命令的线程所阻塞的概率,降低读命令的平均处理延迟。

在进一步的实施方式中,命令队列320包括n个命令队列,例如n=2。两个队列分别是高优先级队列与低优先级队列。而寄存器组370中包括m个优先级组,其中m为整数,且m>n。通过映射器(图3中未示出)将n个命令队列中的命令映射到寄存器组370。

映射规则可以被调整或配置。示例性地,映射器(图3中未示出)可将高优先级队列的命令映射到优先级组p1,将低优先级队列的命令映射到优先级组p3,以及将低优先级组的读命令映射到优先级组p2,将高优先级组的写命令映射到优先级组p2。

可选地,nvm接口控制器还包括掩码寄存器组,用于指示寄存器组370中指示的待处理事件是否需要被调度。在一个例子中,掩码寄存器(未示出)包括3个比特,分别对应寄存器组370的每个优先级组,当掩码寄存器的比特被置位时,允许与其相对应的优先级组被调度,而当掩码寄存器的比特被清除时,与其对应的优先级组不会被调度。在另一个例子中,掩码寄存器包括8个比特,分别对应每个lun,仅当掩码寄存器的比特被置位时,才调度访问与被置位比特对应的lun的命令或线程。在依然另一个例子中,掩码寄存器包括与寄存器组370相同数量的寄存器,掩码寄存器的比特与寄存器组370中的比特一一对应;掩码寄存器的每个比特用于指示寄存器组370中与之对应的寄存器所指示的命令或事件是否应被处理。

在上面的实施例中,被调度的对象是待处理的线程或命令。以及一般地,被调度对象还可以有多种形态,例如,进程、任务、指令序列等。以及上面的实施例中,被调度对象操作的资源包括lun、管芯或nvm芯片,并且寄存器组370的每列指示被调度对象操作的资源之一。以及一般地被调度对象操作的资源可以有其他形态,例如,队列、存储器区域等。

应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。

这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。

因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。

虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。

这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1