一種命令控制方法及存儲(chǔ)設(shè)備的制造方法
【專利摘要】本發(fā)明公開了一種命令控制方法及存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;所述方法包括:利用所述控制器接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
【專利說明】
_種命令控制方法及存儲(chǔ)設(shè)備
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及控制技術(shù),尤其涉及一種命令控制方法及存儲(chǔ)設(shè)備。
【背景技術(shù)】
[0002]目前,固態(tài)硬盤(SSD,SolidState Drives)越來越多的出現(xiàn)在消費(fèi)領(lǐng)域,因而SSD控制器也成為當(dāng)前系統(tǒng)級(jí)芯片(SoC,System on Chip)的設(shè)計(jì)熱點(diǎn)。
[0003]SSD中存儲(chǔ)的數(shù)據(jù)越來越多,需要的吞吐量也就越來越大,這就要求處于核心位置的SSD控制器也要具有非常強(qiáng)的數(shù)據(jù)處理能力。如何設(shè)計(jì)SSD控制器中的數(shù)據(jù)通道成為非常關(guān)鍵的技術(shù)問題。
【發(fā)明內(nèi)容】
[0004]為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種命令控制方法及存儲(chǔ)設(shè)備。
[0005]本發(fā)明實(shí)施例提供的命令控制方法,應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;所述方法包括:
[0006]利用所述控制器接收命令;
[0007]按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);
[0008]將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;
[0009]按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0010]本發(fā)明實(shí)施例中,所述按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí),包括:
[0011 ]當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí);
[0012]當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí);
[0013]當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷?、或擦除類操作命令時(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;
[0014]當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí);
[0015]其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。
[0016]本發(fā)明實(shí)施例中,所述按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令,包括:
[0017]檢測(cè)當(dāng)前是否正在執(zhí)行指令;
[0018]當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0019]本發(fā)明實(shí)施例中,所述方法包括:
[0020]當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0021 ]本發(fā)明實(shí)施例中,所述方法還包括:
[0022]獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;
[0023]響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;
[0024]從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。
[0025]本發(fā)明實(shí)施例提供的存儲(chǔ)設(shè)備,包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;
[0026]所述控制器,用于接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0027]本發(fā)明實(shí)施例中,所述控制器,還用于當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí);當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí);當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷?、或擦除類操作命令時(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí);
[0028]其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。
[0029]本發(fā)明實(shí)施例中,所述控制器,還用于檢測(cè)當(dāng)前是否正在執(zhí)行指令;當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0030]本發(fā)明實(shí)施例中,所述控制器,還用于當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0031 ]本發(fā)明實(shí)施例中,所述存儲(chǔ)設(shè)備還包括:通信接口,用于獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;
[0032]所述控制器,還用于響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。
[0033]本發(fā)明實(shí)施例的技術(shù)方案中,存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;利用所述控制器接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令??梢?,本發(fā)明實(shí)施例對(duì)命令進(jìn)行了分類管理,能夠合理的對(duì)各種優(yōu)先級(jí)的命令進(jìn)行有效的處理,并且不影響存儲(chǔ)設(shè)備的整體性能,對(duì)于吞吐量較大的存儲(chǔ)設(shè)備而言,明顯提升了數(shù)據(jù)處理能力。
【附圖說明】
[0034]圖1為本發(fā)明實(shí)施例一的命令控制方法的流程示意圖;
[0035]圖2為本發(fā)明實(shí)施例二的命令控制方法的流程示意圖;
[0036]圖3為本發(fā)明實(shí)施例三的命令控制方法的流程示意圖;
[0037]圖4為本發(fā)明實(shí)施例四的命令控制方法的流程示意圖;
[0038]圖5為本發(fā)明實(shí)施例五的存儲(chǔ)設(shè)備的結(jié)構(gòu)組成示意圖;
[0039]圖6為本發(fā)明實(shí)施例六的存儲(chǔ)設(shè)備的結(jié)構(gòu)組成示意圖。
【具體實(shí)施方式】
[0040]為了能夠更加詳盡地了解本發(fā)明實(shí)施例的特點(diǎn)與技術(shù)內(nèi)容,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例的實(shí)現(xiàn)進(jìn)行詳細(xì)闡述,所附附圖僅供參考說明之用,并非用來限定本發(fā)明實(shí)施例。
[0041]圖1為本發(fā)明實(shí)施例一的命令控制方法的流程示意圖,本示例中的命令控制方法應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;如圖1所示,所述命令控制方法包括以下步驟:
[0042]步驟101:利用所述控制器接收命令。
[0043]本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備尤指SSD。存儲(chǔ)設(shè)備包括:存儲(chǔ)器和控制器。其中,存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù),例如Nand Flash。一般,Nand Flash按照物理頁存儲(chǔ)數(shù)據(jù)??刂破饔糜谔幚砼c所述存儲(chǔ)器相關(guān)聯(lián)的命令,例如Nand Flash控制器。
[0044]本發(fā)明實(shí)施例的存儲(chǔ)設(shè)備可應(yīng)用于各種類型的電子設(shè)備中,例如筆記本、主機(jī)、一體機(jī)、服務(wù)器等。這類電子設(shè)備一般具有處理器,例如中央處理器(CPU ,CentralProcessing Unit),CPU能夠與存儲(chǔ)設(shè)備進(jìn)行交互。
[0045]以存儲(chǔ)設(shè)備為SSD為例,CPU接收到主機(jī)(Host)的命令后,向NandFlash控制器發(fā)送Flash命令,Nand Flash控制器則會(huì)執(zhí)行Flash命令,從而對(duì)存儲(chǔ)器進(jìn)行相關(guān)操作,例如讀數(shù)據(jù)操作、或?qū)憯?shù)據(jù)操作、或擦除操作。
[0046]本發(fā)明實(shí)施例中,控制器從CPU接收到的命令為各種各樣的命令,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)相關(guān),例如讀數(shù)據(jù)命令、或重讀數(shù)據(jù)命令、程序調(diào)用參數(shù)命令等等。這里,重讀數(shù)據(jù)命令與讀數(shù)據(jù)命令被區(qū)分開,重讀數(shù)據(jù)命令是指在某次讀數(shù)據(jù)命令失敗后再次進(jìn)行的同一讀數(shù)據(jù)命令??梢?,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短。此外,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)無關(guān),例如讀取特性信息命令、系統(tǒng)維護(hù)命令等等。這里,系統(tǒng)維護(hù)命令可以是磨損平衡命令、垃圾回收命令等。讀取特性信息命令可以是讀取剩余存儲(chǔ)容量命令等等。
[0047]步驟102:按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí)。
[0048]本發(fā)明實(shí)施例中,預(yù)設(shè)策略用于確定接收到的各個(gè)命令的優(yōu)先級(jí)。
[0049]在一實(shí)施方式中,預(yù)設(shè)策略以表格形式展不,表格中包括多條表項(xiàng),每條表項(xiàng)均包括如下信息:命令滿足的條件以及滿足條件時(shí)命令對(duì)應(yīng)的優(yōu)先級(jí)。這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)策略中的各條表項(xiàng)逐一進(jìn)行對(duì)比,直至查找到命令滿足條件時(shí),即可確定出該命令的優(yōu)先級(jí)。
[0050]在另一實(shí)施方式中,預(yù)設(shè)策略以判定關(guān)系形式展示,這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)的判定關(guān)系進(jìn)行比對(duì),當(dāng)滿足判定關(guān)系時(shí),則可確定出該命令的優(yōu)先級(jí);當(dāng)不滿足判定關(guān)系時(shí),則繼續(xù)將該命令與其他判定關(guān)系進(jìn)行比對(duì),直至確定出該命令的優(yōu)先級(jí)。
[0051]當(dāng)然,本發(fā)明實(shí)施例的預(yù)設(shè)策略并不限定以上所述,可以根據(jù)用戶的需求,靈活設(shè)置策略。
[0052]例如,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短,因此,將重讀數(shù)據(jù)命令的優(yōu)先級(jí)設(shè)置為最高。此外,根據(jù)需求,將讀取特性信息命令的優(yōu)先級(jí)設(shè)置為次高;將讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令的優(yōu)先級(jí)設(shè)置為中等;將系統(tǒng)維護(hù)命令的優(yōu)先級(jí)設(shè)置為最低。
[0053]步驟103:將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。
[0054]本發(fā)明實(shí)施例中,對(duì)于控制器的設(shè)計(jì),支持多個(gè)不同優(yōu)先級(jí)的命令隊(duì)列;不同的隊(duì)列對(duì)應(yīng)不同的功能或者應(yīng)用場景需求。例如,執(zhí)行與A業(yè)務(wù)相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與B業(yè)務(wù)相關(guān)的所有指令被分配到另外同一隊(duì)列中。再例如,執(zhí)行與M應(yīng)用相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與N應(yīng)用相關(guān)的所有指令被分配到另外同一隊(duì)列中。
[0055]本發(fā)明實(shí)施例中,按照命令的優(yōu)先級(jí)來劃分隊(duì)列,具體地,控制器接收到命令后,將該命令發(fā)送至與該命令對(duì)應(yīng)的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。這樣,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí)。
[0056]步驟104:按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0057]本發(fā)明實(shí)施例中,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí),首先執(zhí)行優(yōu)先級(jí)最高的隊(duì)列中的命令,執(zhí)行時(shí),按照命令寫入的先后順序依次執(zhí)行同一隊(duì)列中的各個(gè)命令。當(dāng)優(yōu)先級(jí)最高的隊(duì)列中的命令執(zhí)行完后,再執(zhí)行優(yōu)先級(jí)次高的隊(duì)列中的命令,以此類推,直至執(zhí)行完所有的命令。
[0058]本發(fā)明實(shí)施例中,在執(zhí)行命令的同時(shí),控制器還繼續(xù)接收命令,將命令按照優(yōu)先級(jí)發(fā)送至相應(yīng)的隊(duì)列中。
[0059]本發(fā)明實(shí)施例中,當(dāng)主機(jī)發(fā)起了數(shù)據(jù)讀/寫操作,而當(dāng)前存儲(chǔ)設(shè)備正在進(jìn)行垃圾回收等操作時(shí),正常的讀/寫命令被發(fā)送到中等優(yōu)先級(jí)的命令隊(duì)列中,已經(jīng)投放在維護(hù)命令隊(duì)列中的維護(hù)命令仍舊繼續(xù)執(zhí)行,直至該命令執(zhí)行完成后,即刻執(zhí)行中等優(yōu)先級(jí)的命令隊(duì)列中的命令。
[0060]本發(fā)明實(shí)施例的技術(shù)方案,對(duì)命令進(jìn)行分類管理,不會(huì)造成命令的堵塞;專用命令隊(duì)列,不會(huì)影響正常命令的執(zhí)行,對(duì)性能影響較小;平衡命令執(zhí)行的性能,不會(huì)形成太大的性能抖動(dòng),保障用戶的體驗(yàn);對(duì)于專用的重讀命令,避免了將該命令放在優(yōu)先級(jí)較低的命令隊(duì)列中造成延遲過大;次高優(yōu)先級(jí)的命令隊(duì)列,適用于快速返回的命令,能夠加速系統(tǒng)運(yùn)行,縮短某些命令的執(zhí)行時(shí)間;維護(hù)命令隊(duì)列,適用與后臺(tái)維護(hù)時(shí),主機(jī)發(fā)來新的讀/寫命令,避免造成命令堵塞及系統(tǒng)反應(yīng)過慢。
[0061]圖2為本發(fā)明實(shí)施例二的命令控制方法的流程示意圖,本示例中的命令控制方法應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;如圖2所示,所述命令控制方法包括以下步驟:
[0062]步驟201:利用所述控制器接收命令。
[0063]本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備尤指SSD。存儲(chǔ)設(shè)備包括:存儲(chǔ)器和控制器。其中,存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù),例如Nand Flash。一般,Nand Flash按照物理頁存儲(chǔ)數(shù)據(jù)。控制器用于處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令,例如Nand Flash控制器。
[0064]本發(fā)明實(shí)施例的存儲(chǔ)設(shè)備可應(yīng)用于各種類型的電子設(shè)備中,例如筆記本、主機(jī)、一體機(jī)、服務(wù)器等。這類電子設(shè)備一般具有處理器,例如CPU,CPU能夠與存儲(chǔ)設(shè)備進(jìn)行交互。
[0065]以存儲(chǔ)設(shè)備為SSD為例,CPU接收到主機(jī)(Host)的命令后,向NandFlash控制器發(fā)送Flash命令,Nand Flash控制器則會(huì)執(zhí)行Flash命令,從而對(duì)存儲(chǔ)器進(jìn)行相關(guān)操作,例如讀數(shù)據(jù)操作、或?qū)憯?shù)據(jù)操作、或擦除操作。
[0066]本發(fā)明實(shí)施例中,控制器從CPU接收到的命令為各種各樣的命令,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)相關(guān),例如讀數(shù)據(jù)命令、或重讀數(shù)據(jù)命令、程序調(diào)用參數(shù)命令等等。這里,重讀數(shù)據(jù)命令與讀數(shù)據(jù)命令被區(qū)分開,重讀數(shù)據(jù)命令是指在某次讀數(shù)據(jù)命令失敗后再次進(jìn)行的同一讀數(shù)據(jù)命令。可見,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短。此外,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)無關(guān),例如讀取特性信息命令、系統(tǒng)維護(hù)命令等等。這里,系統(tǒng)維護(hù)命令可以是磨損平衡命令、垃圾回收命令等。讀取特性信息命令可以是讀取剩余存儲(chǔ)容量命令等等。
[0067]步驟202:當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí)。
[0068]本發(fā)明實(shí)施例中,按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);預(yù)設(shè)策略用于確定接收到的各個(gè)命令的優(yōu)先級(jí)。
[0069]本示例中,重讀類命令是指再次請(qǐng)求讀取某個(gè)數(shù)據(jù)的命令,例如,當(dāng)讀取A數(shù)據(jù)失敗時(shí),則會(huì)要求重新讀取A數(shù)據(jù),重新讀取A數(shù)據(jù)的命令即為重讀類命令。緊急操作類命令是指要求時(shí)延低的一類命令,例如,當(dāng)調(diào)整系統(tǒng)性能參數(shù)時(shí)需要立即調(diào)整,對(duì)應(yīng)的調(diào)整命令即為緊急操作類命令;再例如,當(dāng)讀取重要性級(jí)別最高的數(shù)據(jù)時(shí),對(duì)應(yīng)的讀取命令即為緊急操作類命令。
[0070]本示例中,重讀類命令或者緊急操作類命令要求的延遲相比其他命令而言,要更短,因此,將重讀類命令或者緊急操作類命令的優(yōu)先級(jí)設(shè)置為最高。
[0071 ]步驟203:當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí)。
[0072]本示例中,管理類命令可以是與系統(tǒng)相關(guān)的一些命令,例如讀取系統(tǒng)參數(shù)命令、設(shè)置系統(tǒng)參數(shù)命令等等。管理類命令的優(yōu)先級(jí)相對(duì)于重讀類命令或者緊急操作類命令而言較低,將管理類命令的優(yōu)先級(jí)設(shè)置為第二優(yōu)先級(jí)。
[0073]本示例中,對(duì)數(shù)據(jù)庫中的數(shù)據(jù)按照重要性級(jí)別進(jìn)行分類,例如,將數(shù)據(jù)庫中的數(shù)據(jù)分為兩類,第一類數(shù)據(jù)的重要性級(jí)別高于第二類數(shù)據(jù)的重要性級(jí)別。當(dāng)然不局限于此,還可以將數(shù)據(jù)庫中的數(shù)據(jù)分為更多類。對(duì)于重要性級(jí)別較高的數(shù)據(jù),則要求的時(shí)延更短,對(duì)這類數(shù)據(jù)進(jìn)行操作的命令對(duì)應(yīng)的優(yōu)先級(jí)則更高?;诖?,將與第一類數(shù)據(jù)相關(guān)的讀操作類命令的優(yōu)先級(jí)設(shè)置為第二優(yōu)先級(jí)。
[0074]步驟204:當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷?、或擦除類操作命令時(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí)。
[0075]其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。
[0076]本示例中,對(duì)數(shù)據(jù)庫中的數(shù)據(jù)按照重要性級(jí)別進(jìn)行分類時(shí),可以將與用戶相關(guān)的普通用戶數(shù)據(jù)分類至第二類數(shù)據(jù);將與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷睢⒒虿脸惒僮髅畹膬?yōu)先級(jí)設(shè)置為第三優(yōu)先級(jí)。
[0077]本示例中,系統(tǒng)維護(hù)類命令可以是:磨損平衡命令、垃圾回收命令等等,由于系統(tǒng)維護(hù)類命令要求的時(shí)延相對(duì)于其他命令而言較長,因此,將系統(tǒng)維護(hù)命令的優(yōu)先級(jí)設(shè)置為最低。
[0078]本發(fā)明實(shí)施例中,上述各個(gè)命令對(duì)應(yīng)的優(yōu)先級(jí)順序只是一種實(shí)施方式,實(shí)際應(yīng)用中,可以根據(jù)各個(gè)命令要求的時(shí)延靈活設(shè)置各個(gè)命令對(duì)應(yīng)的優(yōu)先級(jí)。
[0079]步驟205:將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。
[0080]本發(fā)明實(shí)施例中,對(duì)于控制器的設(shè)計(jì),支持多個(gè)不同優(yōu)先級(jí)的命令隊(duì)列;不同的隊(duì)列對(duì)應(yīng)不同的功能或者應(yīng)用場景需求。例如,執(zhí)行與A業(yè)務(wù)相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與B業(yè)務(wù)相關(guān)的所有指令被分配到另外同一隊(duì)列中。再例如,執(zhí)行與M應(yīng)用相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與N應(yīng)用相關(guān)的所有指令被分配到另外同一隊(duì)列中。
[0081]本發(fā)明實(shí)施例中,按照命令的優(yōu)先級(jí)來劃分隊(duì)列,具體地,控制器接收到命令后,將該命令發(fā)送至與該命令對(duì)應(yīng)的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。這樣,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí)。
[0082]步驟206:按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0083]本發(fā)明實(shí)施例中,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí),首先執(zhí)行優(yōu)先級(jí)最高的隊(duì)列中的命令,執(zhí)行時(shí),按照命令寫入的先后順序依次執(zhí)行同一隊(duì)列中的各個(gè)命令。當(dāng)優(yōu)先級(jí)最高的隊(duì)列中的命令執(zhí)行完后,再執(zhí)行優(yōu)先級(jí)次高的隊(duì)列中的命令,以此類推,直至執(zhí)行完所有的命令。
[0084]本發(fā)明實(shí)施例中,在執(zhí)行命令的同時(shí),控制器還繼續(xù)接收命令,將命令按照優(yōu)先級(jí)發(fā)送至相應(yīng)的隊(duì)列中。
[0085]本發(fā)明實(shí)施例中,當(dāng)主機(jī)發(fā)起了數(shù)據(jù)讀/寫操作,而當(dāng)前存儲(chǔ)設(shè)備正在進(jìn)行垃圾回收等操作時(shí),正常的讀/寫命令被發(fā)送到中等優(yōu)先級(jí)的命令隊(duì)列中,已經(jīng)投放在維護(hù)命令隊(duì)列中的維護(hù)命令仍舊繼續(xù)執(zhí)行,直至該命令執(zhí)行完成后,即刻執(zhí)行中等優(yōu)先級(jí)的命令隊(duì)列中的命令。
[0086]本發(fā)明實(shí)施例的技術(shù)方案,對(duì)命令進(jìn)行分類管理,不會(huì)造成命令的堵塞;專用命令隊(duì)列,不會(huì)影響正常命令的執(zhí)行,對(duì)性能影響較小;平衡命令執(zhí)行的性能,不會(huì)形成太大的性能抖動(dòng),保障用戶的體驗(yàn);對(duì)于專用的重讀命令,避免了將該命令放在優(yōu)先級(jí)較低的命令隊(duì)列中造成延遲過大;次高優(yōu)先級(jí)的命令隊(duì)列,適用于快速返回的命令,能夠加速系統(tǒng)運(yùn)行,縮短某些命令的執(zhí)行時(shí)間;維護(hù)命令隊(duì)列,適用與后臺(tái)維護(hù)時(shí),主機(jī)發(fā)來新的讀/寫命令,避免造成命令堵塞及系統(tǒng)反應(yīng)過慢。
[0087]圖3為本發(fā)明實(shí)施例三的命令控制方法的流程示意圖,本示例中的命令控制方法應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;如圖3所示,所述命令控制方法包括以下步驟:
[0088]步驟301:利用所述控制器接收命令。
[0089]本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備尤指SSD。存儲(chǔ)設(shè)備包括:存儲(chǔ)器和控制器。其中,存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù),例如Nand Flash。一般,Nand Flash按照物理頁存儲(chǔ)數(shù)據(jù)。控制器用于處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令,例如Nand Flash控制器。
[0090]本發(fā)明實(shí)施例的存儲(chǔ)設(shè)備可應(yīng)用于各種類型的電子設(shè)備中,例如筆記本、主機(jī)、一體機(jī)、服務(wù)器等。這類電子設(shè)備一般具有處理器,例如CPU,CPU能夠與存儲(chǔ)設(shè)備進(jìn)行交互。[0091 ]以存儲(chǔ)設(shè)備為SSD為例,CPU接收到主機(jī)(Host)的命令后,向Nand Flash控制器發(fā)送Flash命令,Nand Flash控制器則會(huì)執(zhí)行Flash命令,從而對(duì)存儲(chǔ)器進(jìn)行相關(guān)操作,例如讀數(shù)據(jù)操作、或?qū)憯?shù)據(jù)操作、或擦除操作。
[0092]本發(fā)明實(shí)施例中,控制器從CPU接收到的命令為各種各樣的命令,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)相關(guān),例如讀數(shù)據(jù)命令、或重讀數(shù)據(jù)命令、程序調(diào)用參數(shù)命令等等。這里,重讀數(shù)據(jù)命令與讀數(shù)據(jù)命令被區(qū)分開,重讀數(shù)據(jù)命令是指在某次讀數(shù)據(jù)命令失敗后再次進(jìn)行的同一讀數(shù)據(jù)命令??梢姡刈x數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短。此外,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)無關(guān),例如讀取特性信息命令、系統(tǒng)維護(hù)命令等等。這里,系統(tǒng)維護(hù)命令可以是磨損平衡命令、垃圾回收命令等。讀取特性信息命令可以是讀取剩余存儲(chǔ)容量命令等等。
[0093]步驟302:按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí)。
[0094]本發(fā)明實(shí)施例中,預(yù)設(shè)策略用于確定接收到的各個(gè)命令的優(yōu)先級(jí)。
[0095]在一實(shí)施方式中,預(yù)設(shè)策略以表格形式展不,表格中包括多條表項(xiàng),每條表項(xiàng)均包括如下信息:命令滿足的條件以及滿足條件時(shí)命令對(duì)應(yīng)的優(yōu)先級(jí)。這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)策略中的各條表項(xiàng)逐一進(jìn)行對(duì)比,直至查找到命令滿足條件時(shí),即可確定出該命令的優(yōu)先級(jí)。
[0096]在另一實(shí)施方式中,預(yù)設(shè)策略以判定關(guān)系形式展示,這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)的判定關(guān)系進(jìn)行比對(duì),當(dāng)滿足判定關(guān)系時(shí),則可確定出該命令的優(yōu)先級(jí);當(dāng)不滿足判定關(guān)系時(shí),則繼續(xù)將該命令與其他判定關(guān)系進(jìn)行比對(duì),直至確定出該命令的優(yōu)先級(jí)。
[0097]當(dāng)然,本發(fā)明實(shí)施例的預(yù)設(shè)策略并不限定以上所述,可以根據(jù)用戶的需求,靈活設(shè)置策略。
[0098]例如,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短,因此,將重讀數(shù)據(jù)命令的優(yōu)先級(jí)設(shè)置為最高。此外,根據(jù)需求,將讀取特性信息命令的優(yōu)先級(jí)設(shè)置為次高;將讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令的優(yōu)先級(jí)設(shè)置為中等;將系統(tǒng)維護(hù)命令的優(yōu)先級(jí)設(shè)置為最低。
[0099]步驟303:將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。
[0100]本發(fā)明實(shí)施例中,對(duì)于控制器的設(shè)計(jì),支持多個(gè)不同優(yōu)先級(jí)的命令隊(duì)列;不同的隊(duì)列對(duì)應(yīng)不同的功能或者應(yīng)用場景需求。例如,執(zhí)行與A業(yè)務(wù)相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與B業(yè)務(wù)相關(guān)的所有指令被分配到另外同一隊(duì)列中。再例如,執(zhí)行與M應(yīng)用相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與N應(yīng)用相關(guān)的所有指令被分配到另外同一隊(duì)列中。
[0101]本發(fā)明實(shí)施例中,按照命令的優(yōu)先級(jí)來劃分隊(duì)列,具體地,控制器接收到命令后,將該命令發(fā)送至與該命令對(duì)應(yīng)的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。這樣,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí)。
[0102]步驟304:按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0103]本發(fā)明實(shí)施例中,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí),首先執(zhí)行優(yōu)先級(jí)最高的隊(duì)列中的命令,執(zhí)行時(shí),按照命令寫入的先后順序依次執(zhí)行同一隊(duì)列中的各個(gè)命令。當(dāng)優(yōu)先級(jí)最高的隊(duì)列中的命令執(zhí)行完后,再執(zhí)行優(yōu)先級(jí)次高的隊(duì)列中的命令,以此類推,直至執(zhí)行完所有的命令。
[0104]本發(fā)明實(shí)施例中,在執(zhí)行命令的同時(shí),控制器還繼續(xù)接收命令,將命令按照優(yōu)先級(jí)發(fā)送至相應(yīng)的隊(duì)列中。
[0105]步驟305:檢測(cè)當(dāng)前是否正在執(zhí)行指令;當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0106]本發(fā)明實(shí)施例中,為了保障優(yōu)先級(jí)較高的隊(duì)列中的命令優(yōu)先被執(zhí)行,在一種情況下,優(yōu)先級(jí)最高的隊(duì)列中無命令,這時(shí)執(zhí)行優(yōu)先級(jí)次高的隊(duì)列中的命令,如果此時(shí)優(yōu)先級(jí)最高的隊(duì)列中又重新寫入命令,當(dāng)執(zhí)行完當(dāng)前命令后,即可執(zhí)行優(yōu)先級(jí)最高的隊(duì)列中的命令。
[0107]例如,當(dāng)主機(jī)發(fā)起了數(shù)據(jù)讀/寫操作,而當(dāng)前存儲(chǔ)設(shè)備正在進(jìn)行垃圾回收等操作時(shí),正常的讀/寫命令被發(fā)送到中等優(yōu)先級(jí)的命令隊(duì)列中,已經(jīng)投放在維護(hù)命令隊(duì)列中的維護(hù)命令仍舊繼續(xù)執(zhí)行,直至該命令執(zhí)行完成后,即刻執(zhí)行中等優(yōu)先級(jí)的命令隊(duì)列中的命令。
[0108]步驟306:當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0109]本發(fā)明實(shí)施例的技術(shù)方案,對(duì)命令進(jìn)行分類管理,不會(huì)造成命令的堵塞;專用命令隊(duì)列,不會(huì)影響正常命令的執(zhí)行,對(duì)性能影響較小;平衡命令執(zhí)行的性能,不會(huì)形成太大的性能抖動(dòng),保障用戶的體驗(yàn);對(duì)于專用的重讀命令,避免了將該命令放在優(yōu)先級(jí)較低的命令隊(duì)列中造成延遲過大;次高優(yōu)先級(jí)的命令隊(duì)列,適用于快速返回的命令,能夠加速系統(tǒng)運(yùn)行,縮短某些命令的執(zhí)行時(shí)間;維護(hù)命令隊(duì)列,適用與后臺(tái)維護(hù)時(shí),主機(jī)發(fā)來新的讀/寫命令,避免造成命令堵塞及系統(tǒng)反應(yīng)過慢。
[0110]圖4為本發(fā)明實(shí)施例四的命令控制方法的流程示意圖,本示例中的命令控制方法應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;如圖4所示,所述命令控制方法包括以下步驟:
[0111]步驟401:利用所述控制器接收命令。
[0112]本發(fā)明實(shí)施例中,存儲(chǔ)設(shè)備尤指SSD。存儲(chǔ)設(shè)備包括:存儲(chǔ)器和控制器。其中,存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù),例如Nand Flash。一般,Nand Flash按照物理頁存儲(chǔ)數(shù)據(jù)。控制器用于處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令,例如Nand Flash控制器。
[0113]本發(fā)明實(shí)施例的存儲(chǔ)設(shè)備可應(yīng)用于各種類型的電子設(shè)備中,例如筆記本、主機(jī)、一體機(jī)、服務(wù)器等。這類電子設(shè)備一般具有處理器,例如CPU,CPU能夠與存儲(chǔ)設(shè)備進(jìn)行交互。
[0114]以存儲(chǔ)設(shè)備為SSD為例,CPU接收到主機(jī)(Host)的命令后,向NandFlash控制器發(fā)送Flash命令,Nand Flash控制器則會(huì)執(zhí)行Flash命令,從而對(duì)存儲(chǔ)器進(jìn)行相關(guān)操作,例如讀數(shù)據(jù)操作、或?qū)憯?shù)據(jù)操作、或擦除操作。
[0115]本發(fā)明實(shí)施例中,控制器從CPU接收到的命令為各種各樣的命令,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)相關(guān),例如讀數(shù)據(jù)命令、或重讀數(shù)據(jù)命令、程序調(diào)用參數(shù)命令等等。這里,重讀數(shù)據(jù)命令與讀數(shù)據(jù)命令被區(qū)分開,重讀數(shù)據(jù)命令是指在某次讀數(shù)據(jù)命令失敗后再次進(jìn)行的同一讀數(shù)據(jù)命令??梢?,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短。此外,有些命令與存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)無關(guān),例如讀取特性信息命令、系統(tǒng)維護(hù)命令等等。這里,系統(tǒng)維護(hù)命令可以是磨損平衡命令、垃圾回收命令等。讀取特性信息命令可以是讀取剩余存儲(chǔ)容量命令等等。
[0116]步驟402:按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí)。
[0117]本發(fā)明實(shí)施例中,預(yù)設(shè)策略用于確定接收到的各個(gè)命令的優(yōu)先級(jí)。
[0118]在一實(shí)施方式中,預(yù)設(shè)策略以表格形式展不,表格中包括多條表項(xiàng),每條表項(xiàng)均包括如下信息:命令滿足的條件以及滿足條件時(shí)命令對(duì)應(yīng)的優(yōu)先級(jí)。這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)策略中的各條表項(xiàng)逐一進(jìn)行對(duì)比,直至查找到命令滿足條件時(shí),即可確定出該命令的優(yōu)先級(jí)。
[0119]在另一實(shí)施方式中,預(yù)設(shè)策略以判定關(guān)系形式展示,這種方式中,控制器接收到一個(gè)命令后,就將該命令與預(yù)設(shè)的判定關(guān)系進(jìn)行比對(duì),當(dāng)滿足判定關(guān)系時(shí),則可確定出該命令的優(yōu)先級(jí);當(dāng)不滿足判定關(guān)系時(shí),則繼續(xù)將該命令與其他判定關(guān)系進(jìn)行比對(duì),直至確定出該命令的優(yōu)先級(jí)。
[0120]當(dāng)然,本發(fā)明實(shí)施例的預(yù)設(shè)策略并不限定以上所述,可以根據(jù)用戶的需求,靈活設(shè)置策略。
[0121]例如,重讀數(shù)據(jù)命令要求的延遲相比讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令而言,要更短,因此,將重讀數(shù)據(jù)命令的優(yōu)先級(jí)設(shè)置為最高。此外,根據(jù)需求,將讀取特性信息命令的優(yōu)先級(jí)設(shè)置為次高;將讀數(shù)據(jù)命令或者程序調(diào)用參數(shù)命令的優(yōu)先級(jí)設(shè)置為中等;將系統(tǒng)維護(hù)命令的優(yōu)先級(jí)設(shè)置為最低。
[0122]步驟403:將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。
[0123]本發(fā)明實(shí)施例中,對(duì)于控制器的設(shè)計(jì),支持多個(gè)不同優(yōu)先級(jí)的命令隊(duì)列;不同的隊(duì)列對(duì)應(yīng)不同的功能或者應(yīng)用場景需求。例如,執(zhí)行與A業(yè)務(wù)相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與B業(yè)務(wù)相關(guān)的所有指令被分配到另外同一隊(duì)列中。再例如,執(zhí)行與M應(yīng)用相關(guān)的所有指令被分配到同一隊(duì)列中,執(zhí)行與N應(yīng)用相關(guān)的所有指令被分配到另外同一隊(duì)列中。
[0124]本發(fā)明實(shí)施例中,按照命令的優(yōu)先級(jí)來劃分隊(duì)列,具體地,控制器接收到命令后,將該命令發(fā)送至與該命令對(duì)應(yīng)的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中。這樣,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí)。
[0125]步驟404:按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0126]本發(fā)明實(shí)施例中,同一隊(duì)列中的命令具有相同的優(yōu)先級(jí),首先執(zhí)行優(yōu)先級(jí)最高的隊(duì)列中的命令,執(zhí)行時(shí),按照命令寫入的先后順序依次執(zhí)行同一隊(duì)列中的各個(gè)命令。當(dāng)優(yōu)先級(jí)最高的隊(duì)列中的命令執(zhí)行完后,再執(zhí)行優(yōu)先級(jí)次高的隊(duì)列中的命令,以此類推,直至執(zhí)行完所有的命令。
[0127]步驟405:獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。
[0128]本發(fā)明實(shí)施例中,在執(zhí)行命令的同時(shí),控制器還繼續(xù)接收命令,將命令按照優(yōu)先級(jí)發(fā)送至相應(yīng)的隊(duì)列中。
[0129]本發(fā)明實(shí)施例中,第一操作是指用戶需要緊急處理的操作,例如獲取某個(gè)關(guān)鍵數(shù)據(jù)的操作。這時(shí),存儲(chǔ)設(shè)備將與第一操作相關(guān)的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;這樣,控制器響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。通過對(duì)本發(fā)明實(shí)施例的實(shí)施,可以對(duì)緊急插入的指令優(yōu)先進(jìn)行處理。
[0130]本發(fā)明實(shí)施例中,當(dāng)主機(jī)發(fā)起了數(shù)據(jù)讀/寫操作,而當(dāng)前存儲(chǔ)設(shè)備正在進(jìn)行垃圾回收等操作時(shí),正常的讀/寫命令被發(fā)送到中等優(yōu)先級(jí)的命令隊(duì)列中,已經(jīng)投放在維護(hù)命令隊(duì)列中的維護(hù)命令仍舊繼續(xù)執(zhí)行,直至該命令執(zhí)行完成后,即刻執(zhí)行中等優(yōu)先級(jí)的命令隊(duì)列中的命令。
[0131 ]本發(fā)明實(shí)施例的技術(shù)方案,對(duì)命令進(jìn)行分類管理,不會(huì)造成命令的堵塞;專用命令隊(duì)列,不會(huì)影響正常命令的執(zhí)行,對(duì)性能影響較小;平衡命令執(zhí)行的性能,不會(huì)形成太大的性能抖動(dòng),保障用戶的體驗(yàn);對(duì)于專用的重讀命令,避免了將該命令放在優(yōu)先級(jí)較低的命令隊(duì)列中造成延遲過大;次高優(yōu)先級(jí)的命令隊(duì)列,適用于快速返回的命令,能夠加速系統(tǒng)運(yùn)行,縮短某些命令的執(zhí)行時(shí)間;維護(hù)命令隊(duì)列,適用與后臺(tái)維護(hù)時(shí),主機(jī)發(fā)來新的讀/寫命令,避免造成命令堵塞及系統(tǒng)反應(yīng)過慢。
[0132]圖5為本發(fā)明實(shí)施例五的存儲(chǔ)設(shè)備的結(jié)構(gòu)組成示意圖,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器51和控制器52,其中,所述存儲(chǔ)器51能夠存儲(chǔ)數(shù)據(jù),所述控制器52能夠處理與所述存儲(chǔ)器51相關(guān)聯(lián)的命令;
[0133]所述控制器52,用于接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0134]所述控制器52,還用于當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí);當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí);當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷睢⒒虿脸惒僮髅顣r(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí);
[0135]其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。
[0136]所述控制器52,還用于檢測(cè)當(dāng)前是否正在執(zhí)行指令;當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0137]所述控制器52,還用于當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0138]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,圖5所示的存儲(chǔ)設(shè)備中的各單元的實(shí)現(xiàn)功能可參照前述命令控制方法的相關(guān)描述而理解。
[0139]圖6為本發(fā)明實(shí)施例六的存儲(chǔ)設(shè)備的結(jié)構(gòu)組成示意圖,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器61和控制器62,其中,所述存儲(chǔ)器61能夠存儲(chǔ)數(shù)據(jù),所述控制器62能夠處理與所述存儲(chǔ)器61相關(guān)聯(lián)的命令;
[0140]所述控制器62,用于接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。
[0141]所述控制器62,還用于當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí);當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí);當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷睢⒒虿脸惒僮髅顣r(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí);
[0142]其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。
[0143]所述控制器62,還用于檢測(cè)當(dāng)前是否正在執(zhí)行指令;當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0144]所述控制器62,還用于當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。
[0145]所述存儲(chǔ)設(shè)備還包括:通信接口63,用于獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;
[0146]所述控制器62,還用于響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。
[0147]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,圖6所示的存儲(chǔ)設(shè)備中的各單元的實(shí)現(xiàn)功能可參照前述命令控制方法的相關(guān)描述而理解。
[0148]本發(fā)明實(shí)施例所記載的技術(shù)方案之間,在不沖突的情況下,可以任意組合。
[0149]在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的方法和智能設(shè)備,可以通過其它的方式實(shí)現(xiàn)。以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,如:多個(gè)單元或組件可以結(jié)合,或可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機(jī)械的或其它形式的。
[0150]上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個(gè)地方,也可以分布到多個(gè)網(wǎng)絡(luò)單元上;可以根據(jù)實(shí)際的需要選擇其中的部分或全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0151]另外,在本發(fā)明各實(shí)施例中的各功能單元可以全部集成在一個(gè)第二處理單元中,也可以是各單元分別單獨(dú)作為一個(gè)單元,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中;上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0152]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種命令控制方法,應(yīng)用于存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令;所述方法包括: 利用所述控制器接收命令; 按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí); 將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中; 按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。2.根據(jù)權(quán)利要求1所述的命令控制方法,所述按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí),包括: 當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí); 當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí); 當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷?、或擦除類操作命令時(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別; 當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí); 其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。3.根據(jù)權(quán)利要求1所述的命令控制方法,所述按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令,包括: 檢測(cè)當(dāng)前是否正在執(zhí)行指令; 當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。4.根據(jù)權(quán)利要求3所述的命令控制方法,所述方法包括: 當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的命令控制方法,所述方法還包括: 獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部; 響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部; 從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。6.一種存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括存儲(chǔ)器和控制器,其中,所述存儲(chǔ)器能夠存儲(chǔ)數(shù)據(jù),所述控制器能夠處理與所述存儲(chǔ)器相關(guān)聯(lián)的命令; 所述控制器,用于接收命令;按照預(yù)設(shè)策略,確定所述命令的優(yōu)先級(jí);將所述命令發(fā)送至與所述命令的優(yōu)先級(jí)相對(duì)應(yīng)的隊(duì)列中;按照優(yōu)先級(jí)由高至低順序,執(zhí)行各個(gè)隊(duì)列中的命令。7.根據(jù)權(quán)利要求6所述的存儲(chǔ)設(shè)備,所述控制器,還用于當(dāng)所述命令是重讀類命令或者緊急操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第一優(yōu)先級(jí);當(dāng)所述命令是管理類命令或者與第一類數(shù)據(jù)相關(guān)的讀操作類命令時(shí),確定所述命令的優(yōu)先級(jí)為第二優(yōu)先級(jí);當(dāng)所述命令是與第二類數(shù)據(jù)相關(guān)的讀操作類命令、或?qū)懖僮黝惷?、或擦除類操作命令時(shí),確定所述命令的優(yōu)先級(jí)為第三優(yōu)先級(jí);所述第一類數(shù)據(jù)的重要級(jí)別高于所述第二類數(shù)據(jù)的重要級(jí)別;當(dāng)所述命令是系統(tǒng)維護(hù)類命令時(shí),確定所述命令的優(yōu)先級(jí)為第四優(yōu)先級(jí); 其中,優(yōu)先級(jí)由高至低的順序?yàn)?所述第一優(yōu)先級(jí)、所述第二優(yōu)先級(jí)、所述第三優(yōu)先級(jí)、所述第四優(yōu)先級(jí)。8.根據(jù)權(quán)利要求6所述的存儲(chǔ)設(shè)備,所述控制器,還用于檢測(cè)當(dāng)前是否正在執(zhí)行指令;當(dāng)當(dāng)前正在執(zhí)行指令時(shí),指令執(zhí)行結(jié)束后,從優(yōu)先級(jí)最高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。9.根據(jù)權(quán)利要求8所述的存儲(chǔ)設(shè)備,所述控制器,還用于當(dāng)所述優(yōu)先級(jí)最高的隊(duì)列中無指令時(shí),從優(yōu)先級(jí)次高的所述隊(duì)列中按照時(shí)間先后順序獲取最早存儲(chǔ)的指令并執(zhí)行。10.根據(jù)權(quán)利要求6至9任一項(xiàng)所述的存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備還包括:通信接口,用于獲得第一操作,所述第一操作用于指示將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部; 所述控制器,還用于響應(yīng)所述第一操作,將指定的指令插入至優(yōu)先級(jí)最高的隊(duì)列的頭部;從所述優(yōu)先級(jí)最高的隊(duì)列的頭部獲取所述指令并執(zhí)行。
【文檔編號(hào)】G06F3/06GK105867844SQ201610182508
【公開日】2016年8月17日
【申請(qǐng)日】2016年3月28日
【發(fā)明人】毛興中
【申請(qǐng)人】聯(lián)想(北京)有限公司