一种命令控制方法及存储设备的制造方法

文档序号:10511839阅读:526来源:国知局
一种命令控制方法及存储设备的制造方法
【专利摘要】本发明公开了一种命令控制方法及存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;所述方法包括:利用所述控制器接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。
【专利说明】
_种命令控制方法及存储设备
技术领域
[0001 ]本发明涉及控制技术,尤其涉及一种命令控制方法及存储设备。
【背景技术】
[0002]目前,固态硬盘(SSD,SolidState Drives)越来越多的出现在消费领域,因而SSD控制器也成为当前系统级芯片(SoC,System on Chip)的设计热点。
[0003]SSD中存储的数据越来越多,需要的吞吐量也就越来越大,这就要求处于核心位置的SSD控制器也要具有非常强的数据处理能力。如何设计SSD控制器中的数据通道成为非常关键的技术问题。

【发明内容】

[0004]为解决上述技术问题,本发明实施例提供了一种命令控制方法及存储设备。
[0005]本发明实施例提供的命令控制方法,应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;所述方法包括:
[0006]利用所述控制器接收命令;
[0007]按照预设策略,确定所述命令的优先级;
[0008]将所述命令发送至与所述命令的优先级相对应的队列中;
[0009]按照优先级由高至低顺序,执行各个队列中的命令。
[0010]本发明实施例中,所述按照预设策略,确定所述命令的优先级,包括:
[0011 ]当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级;
[0012]当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级;
[0013]当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;
[0014]当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级;
[0015]其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。
[0016]本发明实施例中,所述按照优先级由高至低顺序,执行各个队列中的命令,包括:
[0017]检测当前是否正在执行指令;
[0018]当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0019]本发明实施例中,所述方法包括:
[0020]当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0021 ]本发明实施例中,所述方法还包括:
[0022]获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部;
[0023]响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;
[0024]从所述优先级最高的队列的头部获取所述指令并执行。
[0025]本发明实施例提供的存储设备,包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;
[0026]所述控制器,用于接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。
[0027]本发明实施例中,所述控制器,还用于当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级;当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级;当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级;
[0028]其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。
[0029]本发明实施例中,所述控制器,还用于检测当前是否正在执行指令;当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0030]本发明实施例中,所述控制器,还用于当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0031 ]本发明实施例中,所述存储设备还包括:通信接口,用于获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部;
[0032]所述控制器,还用于响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;从所述优先级最高的队列的头部获取所述指令并执行。
[0033]本发明实施例的技术方案中,存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;利用所述控制器接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。可见,本发明实施例对命令进行了分类管理,能够合理的对各种优先级的命令进行有效的处理,并且不影响存储设备的整体性能,对于吞吐量较大的存储设备而言,明显提升了数据处理能力。
【附图说明】
[0034]图1为本发明实施例一的命令控制方法的流程示意图;
[0035]图2为本发明实施例二的命令控制方法的流程示意图;
[0036]图3为本发明实施例三的命令控制方法的流程示意图;
[0037]图4为本发明实施例四的命令控制方法的流程示意图;
[0038]图5为本发明实施例五的存储设备的结构组成示意图;
[0039]图6为本发明实施例六的存储设备的结构组成示意图。
【具体实施方式】
[0040]为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
[0041]图1为本发明实施例一的命令控制方法的流程示意图,本示例中的命令控制方法应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;如图1所示,所述命令控制方法包括以下步骤:
[0042]步骤101:利用所述控制器接收命令。
[0043]本发明实施例中,存储设备尤指SSD。存储设备包括:存储器和控制器。其中,存储器用于存储数据,例如Nand Flash。一般,Nand Flash按照物理页存储数据。控制器用于处理与所述存储器相关联的命令,例如Nand Flash控制器。
[0044]本发明实施例的存储设备可应用于各种类型的电子设备中,例如笔记本、主机、一体机、服务器等。这类电子设备一般具有处理器,例如中央处理器(CPU ,CentralProcessing Unit),CPU能够与存储设备进行交互。
[0045]以存储设备为SSD为例,CPU接收到主机(Host)的命令后,向NandFlash控制器发送Flash命令,Nand Flash控制器则会执行Flash命令,从而对存储器进行相关操作,例如读数据操作、或写数据操作、或擦除操作。
[0046]本发明实施例中,控制器从CPU接收到的命令为各种各样的命令,有些命令与存储器中存储的数据相关,例如读数据命令、或重读数据命令、程序调用参数命令等等。这里,重读数据命令与读数据命令被区分开,重读数据命令是指在某次读数据命令失败后再次进行的同一读数据命令。可见,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短。此外,有些命令与存储器中存储的数据无关,例如读取特性信息命令、系统维护命令等等。这里,系统维护命令可以是磨损平衡命令、垃圾回收命令等。读取特性信息命令可以是读取剩余存储容量命令等等。
[0047]步骤102:按照预设策略,确定所述命令的优先级。
[0048]本发明实施例中,预设策略用于确定接收到的各个命令的优先级。
[0049]在一实施方式中,预设策略以表格形式展不,表格中包括多条表项,每条表项均包括如下信息:命令满足的条件以及满足条件时命令对应的优先级。这种方式中,控制器接收到一个命令后,就将该命令与预设策略中的各条表项逐一进行对比,直至查找到命令满足条件时,即可确定出该命令的优先级。
[0050]在另一实施方式中,预设策略以判定关系形式展示,这种方式中,控制器接收到一个命令后,就将该命令与预设的判定关系进行比对,当满足判定关系时,则可确定出该命令的优先级;当不满足判定关系时,则继续将该命令与其他判定关系进行比对,直至确定出该命令的优先级。
[0051]当然,本发明实施例的预设策略并不限定以上所述,可以根据用户的需求,灵活设置策略。
[0052]例如,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短,因此,将重读数据命令的优先级设置为最高。此外,根据需求,将读取特性信息命令的优先级设置为次高;将读数据命令或者程序调用参数命令的优先级设置为中等;将系统维护命令的优先级设置为最低。
[0053]步骤103:将所述命令发送至与所述命令的优先级相对应的队列中。
[0054]本发明实施例中,对于控制器的设计,支持多个不同优先级的命令队列;不同的队列对应不同的功能或者应用场景需求。例如,执行与A业务相关的所有指令被分配到同一队列中,执行与B业务相关的所有指令被分配到另外同一队列中。再例如,执行与M应用相关的所有指令被分配到同一队列中,执行与N应用相关的所有指令被分配到另外同一队列中。
[0055]本发明实施例中,按照命令的优先级来划分队列,具体地,控制器接收到命令后,将该命令发送至与该命令对应的优先级相对应的队列中。这样,同一队列中的命令具有相同的优先级。
[0056]步骤104:按照优先级由高至低顺序,执行各个队列中的命令。
[0057]本发明实施例中,同一队列中的命令具有相同的优先级,首先执行优先级最高的队列中的命令,执行时,按照命令写入的先后顺序依次执行同一队列中的各个命令。当优先级最高的队列中的命令执行完后,再执行优先级次高的队列中的命令,以此类推,直至执行完所有的命令。
[0058]本发明实施例中,在执行命令的同时,控制器还继续接收命令,将命令按照优先级发送至相应的队列中。
[0059]本发明实施例中,当主机发起了数据读/写操作,而当前存储设备正在进行垃圾回收等操作时,正常的读/写命令被发送到中等优先级的命令队列中,已经投放在维护命令队列中的维护命令仍旧继续执行,直至该命令执行完成后,即刻执行中等优先级的命令队列中的命令。
[0060]本发明实施例的技术方案,对命令进行分类管理,不会造成命令的堵塞;专用命令队列,不会影响正常命令的执行,对性能影响较小;平衡命令执行的性能,不会形成太大的性能抖动,保障用户的体验;对于专用的重读命令,避免了将该命令放在优先级较低的命令队列中造成延迟过大;次高优先级的命令队列,适用于快速返回的命令,能够加速系统运行,缩短某些命令的执行时间;维护命令队列,适用与后台维护时,主机发来新的读/写命令,避免造成命令堵塞及系统反应过慢。
[0061]图2为本发明实施例二的命令控制方法的流程示意图,本示例中的命令控制方法应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;如图2所示,所述命令控制方法包括以下步骤:
[0062]步骤201:利用所述控制器接收命令。
[0063]本发明实施例中,存储设备尤指SSD。存储设备包括:存储器和控制器。其中,存储器用于存储数据,例如Nand Flash。一般,Nand Flash按照物理页存储数据。控制器用于处理与所述存储器相关联的命令,例如Nand Flash控制器。
[0064]本发明实施例的存储设备可应用于各种类型的电子设备中,例如笔记本、主机、一体机、服务器等。这类电子设备一般具有处理器,例如CPU,CPU能够与存储设备进行交互。
[0065]以存储设备为SSD为例,CPU接收到主机(Host)的命令后,向NandFlash控制器发送Flash命令,Nand Flash控制器则会执行Flash命令,从而对存储器进行相关操作,例如读数据操作、或写数据操作、或擦除操作。
[0066]本发明实施例中,控制器从CPU接收到的命令为各种各样的命令,有些命令与存储器中存储的数据相关,例如读数据命令、或重读数据命令、程序调用参数命令等等。这里,重读数据命令与读数据命令被区分开,重读数据命令是指在某次读数据命令失败后再次进行的同一读数据命令。可见,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短。此外,有些命令与存储器中存储的数据无关,例如读取特性信息命令、系统维护命令等等。这里,系统维护命令可以是磨损平衡命令、垃圾回收命令等。读取特性信息命令可以是读取剩余存储容量命令等等。
[0067]步骤202:当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级。
[0068]本发明实施例中,按照预设策略,确定所述命令的优先级;预设策略用于确定接收到的各个命令的优先级。
[0069]本示例中,重读类命令是指再次请求读取某个数据的命令,例如,当读取A数据失败时,则会要求重新读取A数据,重新读取A数据的命令即为重读类命令。紧急操作类命令是指要求时延低的一类命令,例如,当调整系统性能参数时需要立即调整,对应的调整命令即为紧急操作类命令;再例如,当读取重要性级别最高的数据时,对应的读取命令即为紧急操作类命令。
[0070]本示例中,重读类命令或者紧急操作类命令要求的延迟相比其他命令而言,要更短,因此,将重读类命令或者紧急操作类命令的优先级设置为最高。
[0071 ]步骤203:当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级。
[0072]本示例中,管理类命令可以是与系统相关的一些命令,例如读取系统参数命令、设置系统参数命令等等。管理类命令的优先级相对于重读类命令或者紧急操作类命令而言较低,将管理类命令的优先级设置为第二优先级。
[0073]本示例中,对数据库中的数据按照重要性级别进行分类,例如,将数据库中的数据分为两类,第一类数据的重要性级别高于第二类数据的重要性级别。当然不局限于此,还可以将数据库中的数据分为更多类。对于重要性级别较高的数据,则要求的时延更短,对这类数据进行操作的命令对应的优先级则更高。基于此,将与第一类数据相关的读操作类命令的优先级设置为第二优先级。
[0074]步骤204:当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级。
[0075]其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。
[0076]本示例中,对数据库中的数据按照重要性级别进行分类时,可以将与用户相关的普通用户数据分类至第二类数据;将与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令的优先级设置为第三优先级。
[0077]本示例中,系统维护类命令可以是:磨损平衡命令、垃圾回收命令等等,由于系统维护类命令要求的时延相对于其他命令而言较长,因此,将系统维护命令的优先级设置为最低。
[0078]本发明实施例中,上述各个命令对应的优先级顺序只是一种实施方式,实际应用中,可以根据各个命令要求的时延灵活设置各个命令对应的优先级。
[0079]步骤205:将所述命令发送至与所述命令的优先级相对应的队列中。
[0080]本发明实施例中,对于控制器的设计,支持多个不同优先级的命令队列;不同的队列对应不同的功能或者应用场景需求。例如,执行与A业务相关的所有指令被分配到同一队列中,执行与B业务相关的所有指令被分配到另外同一队列中。再例如,执行与M应用相关的所有指令被分配到同一队列中,执行与N应用相关的所有指令被分配到另外同一队列中。
[0081]本发明实施例中,按照命令的优先级来划分队列,具体地,控制器接收到命令后,将该命令发送至与该命令对应的优先级相对应的队列中。这样,同一队列中的命令具有相同的优先级。
[0082]步骤206:按照优先级由高至低顺序,执行各个队列中的命令。
[0083]本发明实施例中,同一队列中的命令具有相同的优先级,首先执行优先级最高的队列中的命令,执行时,按照命令写入的先后顺序依次执行同一队列中的各个命令。当优先级最高的队列中的命令执行完后,再执行优先级次高的队列中的命令,以此类推,直至执行完所有的命令。
[0084]本发明实施例中,在执行命令的同时,控制器还继续接收命令,将命令按照优先级发送至相应的队列中。
[0085]本发明实施例中,当主机发起了数据读/写操作,而当前存储设备正在进行垃圾回收等操作时,正常的读/写命令被发送到中等优先级的命令队列中,已经投放在维护命令队列中的维护命令仍旧继续执行,直至该命令执行完成后,即刻执行中等优先级的命令队列中的命令。
[0086]本发明实施例的技术方案,对命令进行分类管理,不会造成命令的堵塞;专用命令队列,不会影响正常命令的执行,对性能影响较小;平衡命令执行的性能,不会形成太大的性能抖动,保障用户的体验;对于专用的重读命令,避免了将该命令放在优先级较低的命令队列中造成延迟过大;次高优先级的命令队列,适用于快速返回的命令,能够加速系统运行,缩短某些命令的执行时间;维护命令队列,适用与后台维护时,主机发来新的读/写命令,避免造成命令堵塞及系统反应过慢。
[0087]图3为本发明实施例三的命令控制方法的流程示意图,本示例中的命令控制方法应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;如图3所示,所述命令控制方法包括以下步骤:
[0088]步骤301:利用所述控制器接收命令。
[0089]本发明实施例中,存储设备尤指SSD。存储设备包括:存储器和控制器。其中,存储器用于存储数据,例如Nand Flash。一般,Nand Flash按照物理页存储数据。控制器用于处理与所述存储器相关联的命令,例如Nand Flash控制器。
[0090]本发明实施例的存储设备可应用于各种类型的电子设备中,例如笔记本、主机、一体机、服务器等。这类电子设备一般具有处理器,例如CPU,CPU能够与存储设备进行交互。[0091 ]以存储设备为SSD为例,CPU接收到主机(Host)的命令后,向Nand Flash控制器发送Flash命令,Nand Flash控制器则会执行Flash命令,从而对存储器进行相关操作,例如读数据操作、或写数据操作、或擦除操作。
[0092]本发明实施例中,控制器从CPU接收到的命令为各种各样的命令,有些命令与存储器中存储的数据相关,例如读数据命令、或重读数据命令、程序调用参数命令等等。这里,重读数据命令与读数据命令被区分开,重读数据命令是指在某次读数据命令失败后再次进行的同一读数据命令。可见,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短。此外,有些命令与存储器中存储的数据无关,例如读取特性信息命令、系统维护命令等等。这里,系统维护命令可以是磨损平衡命令、垃圾回收命令等。读取特性信息命令可以是读取剩余存储容量命令等等。
[0093]步骤302:按照预设策略,确定所述命令的优先级。
[0094]本发明实施例中,预设策略用于确定接收到的各个命令的优先级。
[0095]在一实施方式中,预设策略以表格形式展不,表格中包括多条表项,每条表项均包括如下信息:命令满足的条件以及满足条件时命令对应的优先级。这种方式中,控制器接收到一个命令后,就将该命令与预设策略中的各条表项逐一进行对比,直至查找到命令满足条件时,即可确定出该命令的优先级。
[0096]在另一实施方式中,预设策略以判定关系形式展示,这种方式中,控制器接收到一个命令后,就将该命令与预设的判定关系进行比对,当满足判定关系时,则可确定出该命令的优先级;当不满足判定关系时,则继续将该命令与其他判定关系进行比对,直至确定出该命令的优先级。
[0097]当然,本发明实施例的预设策略并不限定以上所述,可以根据用户的需求,灵活设置策略。
[0098]例如,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短,因此,将重读数据命令的优先级设置为最高。此外,根据需求,将读取特性信息命令的优先级设置为次高;将读数据命令或者程序调用参数命令的优先级设置为中等;将系统维护命令的优先级设置为最低。
[0099]步骤303:将所述命令发送至与所述命令的优先级相对应的队列中。
[0100]本发明实施例中,对于控制器的设计,支持多个不同优先级的命令队列;不同的队列对应不同的功能或者应用场景需求。例如,执行与A业务相关的所有指令被分配到同一队列中,执行与B业务相关的所有指令被分配到另外同一队列中。再例如,执行与M应用相关的所有指令被分配到同一队列中,执行与N应用相关的所有指令被分配到另外同一队列中。
[0101]本发明实施例中,按照命令的优先级来划分队列,具体地,控制器接收到命令后,将该命令发送至与该命令对应的优先级相对应的队列中。这样,同一队列中的命令具有相同的优先级。
[0102]步骤304:按照优先级由高至低顺序,执行各个队列中的命令。
[0103]本发明实施例中,同一队列中的命令具有相同的优先级,首先执行优先级最高的队列中的命令,执行时,按照命令写入的先后顺序依次执行同一队列中的各个命令。当优先级最高的队列中的命令执行完后,再执行优先级次高的队列中的命令,以此类推,直至执行完所有的命令。
[0104]本发明实施例中,在执行命令的同时,控制器还继续接收命令,将命令按照优先级发送至相应的队列中。
[0105]步骤305:检测当前是否正在执行指令;当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0106]本发明实施例中,为了保障优先级较高的队列中的命令优先被执行,在一种情况下,优先级最高的队列中无命令,这时执行优先级次高的队列中的命令,如果此时优先级最高的队列中又重新写入命令,当执行完当前命令后,即可执行优先级最高的队列中的命令。
[0107]例如,当主机发起了数据读/写操作,而当前存储设备正在进行垃圾回收等操作时,正常的读/写命令被发送到中等优先级的命令队列中,已经投放在维护命令队列中的维护命令仍旧继续执行,直至该命令执行完成后,即刻执行中等优先级的命令队列中的命令。
[0108]步骤306:当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0109]本发明实施例的技术方案,对命令进行分类管理,不会造成命令的堵塞;专用命令队列,不会影响正常命令的执行,对性能影响较小;平衡命令执行的性能,不会形成太大的性能抖动,保障用户的体验;对于专用的重读命令,避免了将该命令放在优先级较低的命令队列中造成延迟过大;次高优先级的命令队列,适用于快速返回的命令,能够加速系统运行,缩短某些命令的执行时间;维护命令队列,适用与后台维护时,主机发来新的读/写命令,避免造成命令堵塞及系统反应过慢。
[0110]图4为本发明实施例四的命令控制方法的流程示意图,本示例中的命令控制方法应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;如图4所示,所述命令控制方法包括以下步骤:
[0111]步骤401:利用所述控制器接收命令。
[0112]本发明实施例中,存储设备尤指SSD。存储设备包括:存储器和控制器。其中,存储器用于存储数据,例如Nand Flash。一般,Nand Flash按照物理页存储数据。控制器用于处理与所述存储器相关联的命令,例如Nand Flash控制器。
[0113]本发明实施例的存储设备可应用于各种类型的电子设备中,例如笔记本、主机、一体机、服务器等。这类电子设备一般具有处理器,例如CPU,CPU能够与存储设备进行交互。
[0114]以存储设备为SSD为例,CPU接收到主机(Host)的命令后,向NandFlash控制器发送Flash命令,Nand Flash控制器则会执行Flash命令,从而对存储器进行相关操作,例如读数据操作、或写数据操作、或擦除操作。
[0115]本发明实施例中,控制器从CPU接收到的命令为各种各样的命令,有些命令与存储器中存储的数据相关,例如读数据命令、或重读数据命令、程序调用参数命令等等。这里,重读数据命令与读数据命令被区分开,重读数据命令是指在某次读数据命令失败后再次进行的同一读数据命令。可见,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短。此外,有些命令与存储器中存储的数据无关,例如读取特性信息命令、系统维护命令等等。这里,系统维护命令可以是磨损平衡命令、垃圾回收命令等。读取特性信息命令可以是读取剩余存储容量命令等等。
[0116]步骤402:按照预设策略,确定所述命令的优先级。
[0117]本发明实施例中,预设策略用于确定接收到的各个命令的优先级。
[0118]在一实施方式中,预设策略以表格形式展不,表格中包括多条表项,每条表项均包括如下信息:命令满足的条件以及满足条件时命令对应的优先级。这种方式中,控制器接收到一个命令后,就将该命令与预设策略中的各条表项逐一进行对比,直至查找到命令满足条件时,即可确定出该命令的优先级。
[0119]在另一实施方式中,预设策略以判定关系形式展示,这种方式中,控制器接收到一个命令后,就将该命令与预设的判定关系进行比对,当满足判定关系时,则可确定出该命令的优先级;当不满足判定关系时,则继续将该命令与其他判定关系进行比对,直至确定出该命令的优先级。
[0120]当然,本发明实施例的预设策略并不限定以上所述,可以根据用户的需求,灵活设置策略。
[0121]例如,重读数据命令要求的延迟相比读数据命令或者程序调用参数命令而言,要更短,因此,将重读数据命令的优先级设置为最高。此外,根据需求,将读取特性信息命令的优先级设置为次高;将读数据命令或者程序调用参数命令的优先级设置为中等;将系统维护命令的优先级设置为最低。
[0122]步骤403:将所述命令发送至与所述命令的优先级相对应的队列中。
[0123]本发明实施例中,对于控制器的设计,支持多个不同优先级的命令队列;不同的队列对应不同的功能或者应用场景需求。例如,执行与A业务相关的所有指令被分配到同一队列中,执行与B业务相关的所有指令被分配到另外同一队列中。再例如,执行与M应用相关的所有指令被分配到同一队列中,执行与N应用相关的所有指令被分配到另外同一队列中。
[0124]本发明实施例中,按照命令的优先级来划分队列,具体地,控制器接收到命令后,将该命令发送至与该命令对应的优先级相对应的队列中。这样,同一队列中的命令具有相同的优先级。
[0125]步骤404:按照优先级由高至低顺序,执行各个队列中的命令。
[0126]本发明实施例中,同一队列中的命令具有相同的优先级,首先执行优先级最高的队列中的命令,执行时,按照命令写入的先后顺序依次执行同一队列中的各个命令。当优先级最高的队列中的命令执行完后,再执行优先级次高的队列中的命令,以此类推,直至执行完所有的命令。
[0127]步骤405:获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部;响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;从所述优先级最高的队列的头部获取所述指令并执行。
[0128]本发明实施例中,在执行命令的同时,控制器还继续接收命令,将命令按照优先级发送至相应的队列中。
[0129]本发明实施例中,第一操作是指用户需要紧急处理的操作,例如获取某个关键数据的操作。这时,存储设备将与第一操作相关的指令插入至优先级最高的队列的头部;这样,控制器响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;从所述优先级最高的队列的头部获取所述指令并执行。通过对本发明实施例的实施,可以对紧急插入的指令优先进行处理。
[0130]本发明实施例中,当主机发起了数据读/写操作,而当前存储设备正在进行垃圾回收等操作时,正常的读/写命令被发送到中等优先级的命令队列中,已经投放在维护命令队列中的维护命令仍旧继续执行,直至该命令执行完成后,即刻执行中等优先级的命令队列中的命令。
[0131 ]本发明实施例的技术方案,对命令进行分类管理,不会造成命令的堵塞;专用命令队列,不会影响正常命令的执行,对性能影响较小;平衡命令执行的性能,不会形成太大的性能抖动,保障用户的体验;对于专用的重读命令,避免了将该命令放在优先级较低的命令队列中造成延迟过大;次高优先级的命令队列,适用于快速返回的命令,能够加速系统运行,缩短某些命令的执行时间;维护命令队列,适用与后台维护时,主机发来新的读/写命令,避免造成命令堵塞及系统反应过慢。
[0132]图5为本发明实施例五的存储设备的结构组成示意图,所述存储设备包括存储器51和控制器52,其中,所述存储器51能够存储数据,所述控制器52能够处理与所述存储器51相关联的命令;
[0133]所述控制器52,用于接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。
[0134]所述控制器52,还用于当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级;当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级;当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级;
[0135]其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。
[0136]所述控制器52,还用于检测当前是否正在执行指令;当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0137]所述控制器52,还用于当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0138]本领域技术人员应当理解,图5所示的存储设备中的各单元的实现功能可参照前述命令控制方法的相关描述而理解。
[0139]图6为本发明实施例六的存储设备的结构组成示意图,所述存储设备包括存储器61和控制器62,其中,所述存储器61能够存储数据,所述控制器62能够处理与所述存储器61相关联的命令;
[0140]所述控制器62,用于接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。
[0141]所述控制器62,还用于当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级;当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级;当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级;
[0142]其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。
[0143]所述控制器62,还用于检测当前是否正在执行指令;当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0144]所述控制器62,还用于当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。
[0145]所述存储设备还包括:通信接口63,用于获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部;
[0146]所述控制器62,还用于响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;从所述优先级最高的队列的头部获取所述指令并执行。
[0147]本领域技术人员应当理解,图6所示的存储设备中的各单元的实现功能可参照前述命令控制方法的相关描述而理解。
[0148]本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
[0149]在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0150]上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0151]另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0152]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
【主权项】
1.一种命令控制方法,应用于存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令;所述方法包括: 利用所述控制器接收命令; 按照预设策略,确定所述命令的优先级; 将所述命令发送至与所述命令的优先级相对应的队列中; 按照优先级由高至低顺序,执行各个队列中的命令。2.根据权利要求1所述的命令控制方法,所述按照预设策略,确定所述命令的优先级,包括: 当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级; 当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级; 当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别; 当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级; 其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。3.根据权利要求1所述的命令控制方法,所述按照优先级由高至低顺序,执行各个队列中的命令,包括: 检测当前是否正在执行指令; 当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。4.根据权利要求3所述的命令控制方法,所述方法包括: 当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。5.根据权利要求1至4任一项所述的命令控制方法,所述方法还包括: 获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部; 响应所述第一操作,将指定的指令插入至优先级最高的队列的头部; 从所述优先级最高的队列的头部获取所述指令并执行。6.一种存储设备,所述存储设备包括存储器和控制器,其中,所述存储器能够存储数据,所述控制器能够处理与所述存储器相关联的命令; 所述控制器,用于接收命令;按照预设策略,确定所述命令的优先级;将所述命令发送至与所述命令的优先级相对应的队列中;按照优先级由高至低顺序,执行各个队列中的命令。7.根据权利要求6所述的存储设备,所述控制器,还用于当所述命令是重读类命令或者紧急操作类命令时,确定所述命令的优先级为第一优先级;当所述命令是管理类命令或者与第一类数据相关的读操作类命令时,确定所述命令的优先级为第二优先级;当所述命令是与第二类数据相关的读操作类命令、或写操作类命令、或擦除类操作命令时,确定所述命令的优先级为第三优先级;所述第一类数据的重要级别高于所述第二类数据的重要级别;当所述命令是系统维护类命令时,确定所述命令的优先级为第四优先级; 其中,优先级由高至低的顺序为:所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级。8.根据权利要求6所述的存储设备,所述控制器,还用于检测当前是否正在执行指令;当当前正在执行指令时,指令执行结束后,从优先级最高的所述队列中按照时间先后顺序获取最早存储的指令并执行。9.根据权利要求8所述的存储设备,所述控制器,还用于当所述优先级最高的队列中无指令时,从优先级次高的所述队列中按照时间先后顺序获取最早存储的指令并执行。10.根据权利要求6至9任一项所述的存储设备,所述存储设备还包括:通信接口,用于获得第一操作,所述第一操作用于指示将指定的指令插入至优先级最高的队列的头部; 所述控制器,还用于响应所述第一操作,将指定的指令插入至优先级最高的队列的头部;从所述优先级最高的队列的头部获取所述指令并执行。
【文档编号】G06F3/06GK105867844SQ201610182508
【公开日】2016年8月17日
【申请日】2016年3月28日
【发明人】毛兴中
【申请人】联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1