用于存儲器的工作調(diào)度方法及其存儲系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種工作調(diào)度方法,用于一存儲系統(tǒng)中的多個存儲器。該方法包括將該多個工作中每一工作分類至多個工作類型當(dāng)中任一工作類型;根據(jù)該多個工作類型,配置多個工作隊(duì)列,其中每一工作隊(duì)列存儲該多個工作中的一工作;指定該多個工作類型中每一工作類型的一優(yōu)先權(quán);配置至少一執(zhí)行隊(duì)列;以及將存儲在該多個工作隊(duì)列中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第一執(zhí)行隊(duì)列。該第一執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
【專利說明】 用于存儲器的工作調(diào)度方法及其存儲系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種工作調(diào)度方法及其存儲系統(tǒng)。
【背景技術(shù)】
[0002]存儲器控制器常用于存儲系統(tǒng)(特別是非揮發(fā)性存儲系統(tǒng))中,用來進(jìn)行工作管理。一般來說,當(dāng)非揮發(fā)性存儲系統(tǒng)的電源關(guān)閉時,存儲在非揮發(fā)性存儲系統(tǒng)的數(shù)據(jù)不會遺失,因此非揮發(fā)性存儲系統(tǒng)可作為一種用來存儲系統(tǒng)數(shù)據(jù)的重要裝置。在各類非揮發(fā)性存儲系統(tǒng)中,由于與非門閃存(NAND flash memory)具有低功耗及速度快的優(yōu)點(diǎn),因此,伴隨近年來可移動式裝置的普及化,與非門閃存已被廣為采用。
[0003]然而,與非門閃存具有一些缺點(diǎn)。例如,與非門閃存中每一區(qū)塊的存取次數(shù)存在一上限;此外,在區(qū)塊被抹除以前,數(shù)據(jù)不可直接寫入其中。為了克服這些缺點(diǎn),用于與非門閃存的控制器必須執(zhí)行一些工作,如平均讀寫存儲區(qū)塊(wear leveling)、垃圾回收(garbagecollection)、故障區(qū)塊管理(bad block management)等。因此,存儲器控制器在與非門閃存中扮演重要角色,而許多工作都可由與非門閃存的控制裝置所執(zhí)行。一般來說,大多數(shù)工作可分類為以下四種主要工作類型:用戶數(shù)據(jù)存取、詮釋數(shù)據(jù)(metadata)管理、平均讀寫存儲區(qū)塊控制以及垃圾回收。用戶數(shù)據(jù)存取是存儲器的基本存取運(yùn)作,如讀取及寫入。詮釋數(shù)據(jù)管理可管理存儲器中使用者存取數(shù)據(jù)的位置,例如使用一表格或目錄來顯示哪一區(qū)塊存有資料,或哪一區(qū)塊是空的而可用來存取其它用戶數(shù)據(jù)。平均讀寫存儲區(qū)塊是將較常修改的數(shù)據(jù)搬移至較少使用的區(qū)塊,并將較少修改的數(shù)據(jù)搬移至較常使用的區(qū)塊,進(jìn)而使每一區(qū)塊的使用頻率相等,以避免部分區(qū)塊由于太常使用而提早到達(dá)存取次數(shù)的上限,導(dǎo)致區(qū)塊損毀。垃圾回收用于清除每一區(qū)塊時,先在區(qū)塊中收集有用的剩余資料,再進(jìn)行清除。
[0004]請參考圖1,圖1為公知一存儲系統(tǒng)10的示意圖。如圖1所示,存儲系統(tǒng)10包括一閃存控制器100及一閃存數(shù)組150。閃存控制器100通過一閃存接口與閃存數(shù)組150進(jìn)行通信。閃存控制器100還通過一主機(jī)接口與一主機(jī)進(jìn)行通信,其中該主機(jī)可為需在存儲系統(tǒng)10存取數(shù)據(jù)的處理器或服務(wù)器。閃存控制器100包括一閃存轉(zhuǎn)換層(flash translationlayer,FTL) 110及一實(shí)體驅(qū)動程序120。閃存轉(zhuǎn)換層110可將由主機(jī)接收到的指令轉(zhuǎn)換為可在閃存中執(zhí)行的不同工作類型112A?112D的工作。閃存轉(zhuǎn)換層110還包括一仲裁單元114,用來管理及協(xié)調(diào)這些工作。實(shí)體驅(qū)動程序120用來驅(qū)動閃存數(shù)組150中的閃存來執(zhí)行這些工作。所有閃存都配置在閃存數(shù)組150中,閃存數(shù)組150的每一欄可表示為通道ChO?Ch3,而每一通道中的閃存可由使能信號CEO?CE3來控制。因此,信道ChO?Ch3及使能信號CEO?CE3可用來存取閃存數(shù)組150中的存儲器。每當(dāng)實(shí)體驅(qū)動程序120欲驅(qū)動某一特定存儲器時,對應(yīng)于此特定存儲器的使能信號會啟動,使得工作可在此特定存儲器執(zhí)行。
[0005]根據(jù)上述結(jié)構(gòu),當(dāng)主機(jī)下指令于存儲系統(tǒng)10時,閃存轉(zhuǎn)換層110接收指令,進(jìn)而指示欲執(zhí)行的工作。接著,仲裁單元114會監(jiān)控實(shí)體驅(qū)動程序120。一般來說,當(dāng)實(shí)體驅(qū)動程序120處在空閑狀態(tài)時,仲裁單元114會指示實(shí)體驅(qū)動程序120以驅(qū)動閃存數(shù)組150中一特定存儲器,使工作可在此特定存儲器執(zhí)行。另一方面,當(dāng)實(shí)體驅(qū)動程序120處在忙碌狀態(tài)時,必須等到前一工作完成以后,才執(zhí)行下一個工作。閃存10的效率可能會因此受到影響,而無法維持一定大小的吞吐量以提供予使用者。有鑒于此,公知技術(shù)實(shí)有改善的必要。
【發(fā)明內(nèi)容】
[0006]因此,本發(fā)明的主要目的即在于提供一種可指定多個工作的優(yōu)先權(quán),以通過最佳化順序來執(zhí)行此多個工作,進(jìn)而改善存儲系統(tǒng)效率的工作調(diào)度方法及其存儲系統(tǒng)。
[0007]本發(fā)明公開一種工作調(diào)度方法,用于一存儲系統(tǒng)中的多個存儲器,該方法包括有將該多個工作中每一工作分類至多個工作類型當(dāng)中任一工作類型;根據(jù)該多個工作類型,配置多個工作隊(duì)列,其中每一工作隊(duì)列存儲該多個工作中的一工作,該工作屬于該多個工作類型之一且為欲執(zhí)行的工作;指定該多個工作類型中每一工作類型的一優(yōu)先權(quán);配置至少一執(zhí)行隊(duì)列;以及將存儲在該多個工作隊(duì)列中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第一執(zhí)行隊(duì)列;其中,該第一執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
[0008]本發(fā)明還公開一種存儲系統(tǒng),包括有多個存儲器;以及一存儲器控制器。該存儲器控制器可實(shí)現(xiàn)為一程序代碼,用來指示一處理器執(zhí)行一種用于該存儲系統(tǒng)中該多個存儲器的工作調(diào)度方法,該方法包括有將該多個工作中每一工作分類至多個工作類型當(dāng)中任一工作類型;根據(jù)該多個工作類型,配置多個工作隊(duì)列,其中每一工作隊(duì)列存儲該多個工作中的一工作,該工作屬于該多個工作類型之一且為欲執(zhí)行的工作;指定該多個工作類型中每一工作類型的一優(yōu)先權(quán);配置至少一執(zhí)行隊(duì)列;以及將存儲在該多個工作隊(duì)列中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第一執(zhí)行隊(duì)列;其中,該第一執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
【專利附圖】
【附圖說明】
[0009]圖1為公知一存儲系統(tǒng)的示意圖。
`[0010]圖2為本發(fā)明實(shí)施例一存儲系統(tǒng)的示意圖。
[0011]圖3為本發(fā)明實(shí)施例存儲在工作隊(duì)列的工作的示意圖。
[0012]圖4為本發(fā)明實(shí)施例存儲在執(zhí)行隊(duì)列的命令的示意圖。
[0013]圖5A為本發(fā)明實(shí)施例存儲在工作隊(duì)列的工作欲根據(jù)優(yōu)先權(quán)轉(zhuǎn)換為命令的示意圖。
[0014]圖5B為本發(fā)明實(shí)施例根據(jù)優(yōu)先權(quán)將工作轉(zhuǎn)換為命令的示意圖。
[0015]圖5C為本發(fā)明實(shí)施例當(dāng)數(shù)個命令正在執(zhí)行且數(shù)個工作及數(shù)個命令正在執(zhí)行隊(duì)列中等待時,一新工作到達(dá)的示意圖。
[0016]圖為本發(fā)明實(shí)施例具有較高優(yōu)先權(quán)的工作轉(zhuǎn)換為命令的示意圖。
[0017]圖6為本發(fā)明實(shí)施例一存儲器控制流程的示意圖。
[0018]圖7為本發(fā)明實(shí)施例通過一交錯方式執(zhí)行命令的示意圖。
[0019]其中,附圖標(biāo)記說明如下:
[0020]10存儲系統(tǒng)
[0021]100閃存控制器[0022]110閃存轉(zhuǎn)換層
[0023]112A~112D工作類型
[0024]114仲裁單元
[0025]120實(shí)體驅(qū)動程序
[0026]150閃存數(shù)組
[0027]ChO ~Ch3通道
[0028]CEO~CE3使能信號
[0029]20存儲系統(tǒng)
[0030]200閃存控制器
[0031]220實(shí)體驅(qū)動程序
[0032]230虛擬驅(qū)動程序`
[0033]232A~232D工作隊(duì)列
[0034]234A~234D執(zhí)行隊(duì)列
[0035]242工作調(diào)度單元
[0036]244執(zhí)行調(diào)度單元
[0037]250閃存數(shù)組
[0038]252、254、256、258 存儲器空間
[0039]60存儲器控制流程
[0040]600 ~612 步驟
【具體實(shí)施方式】
[0041]請參考圖2,圖2為本發(fā)明實(shí)施例一存儲系統(tǒng)20的不意圖。如圖2所不,存儲系統(tǒng)20包括一閃存控制器200及一閃存數(shù)組250。與存儲系統(tǒng)10相同,閃存控制器200通過一閃存接口與閃存數(shù)組250進(jìn)行通信。閃存控制器200還通過一主機(jī)接口與一主機(jī)進(jìn)行通信,其中該主機(jī)可為需在存儲系統(tǒng)20存取數(shù)據(jù)的處理器或服務(wù)器。閃存數(shù)組250與閃存數(shù)組150相似。由于閃存數(shù)組250具有四個欄以及四個列,因此通道ChO~Ch3及使能信號CEO~CE3可用來存取閃存數(shù)組250中的閃存。在其它實(shí)施例中,閃存數(shù)組可能具有任何大小的欄數(shù)以及任何大小的列數(shù),因此信道及使能信號的數(shù)量都可任意決定。在部分實(shí)施例中,對應(yīng)于一信道及一使能信號的存儲器可對應(yīng)于數(shù)個存儲器單元(如邏輯單元的數(shù)量)。在此情況下,必須使用特定的使能信號來存取這些存儲器單元中某一特定的存儲器單
J Li ο
[0042]請繼續(xù)參考圖2。如圖2所示,存儲系統(tǒng)20與存儲系統(tǒng)10的主要差異在于「閃存控制器」的部分。圖2中的存儲系統(tǒng)20的閃存控制器200還包括一虛擬驅(qū)動程序230,而刪除仲裁單元114。虛擬驅(qū)動程序230包括一實(shí)體驅(qū)動程序220、工作隊(duì)列232A~232D、執(zhí)行隊(duì)列234A~234D、一工作調(diào)度單元242及一執(zhí)行調(diào)度單元244。實(shí)體驅(qū)動程序220與實(shí)體驅(qū)動程序120的架構(gòu)相似。工作隊(duì)列232A~232D可用來存儲工作,其中每一工作隊(duì)列對應(yīng)于一工作類型,并存儲屬于相對應(yīng)工作類型且欲執(zhí)行的工作。舉例來說,請參考圖3,圖3為存儲在工作隊(duì)列232A~232D的工作的示意圖。如圖3所示,二個欲執(zhí)行的用戶數(shù)據(jù)存取112A的工作存儲在工作隊(duì)列232A,一欲執(zhí)行的詮釋數(shù)據(jù)管理112B的工作存儲在工作隊(duì)列232B,一欲執(zhí)行的平均讀寫存儲區(qū)塊控制112C的工作存儲在工作隊(duì)列232C,而一欲執(zhí)行的垃圾回收112D的工作存儲在工作隊(duì)列232D。此四種工作類型的分類僅為可用于存儲系統(tǒng)20的其中一種可行的實(shí)施例,在其它實(shí)施例中,工作可通過任何方式分類。因此,存儲系統(tǒng)20中可能存在任何數(shù)量的工作類型,因此可能存在任何數(shù)量的工作隊(duì)列,以分別對應(yīng)于不同工作類型。在一般與非門閃存(NAND flash memory)中,多數(shù)工作都可分類為上述四種工作類型(即用戶數(shù)據(jù)存取112A、詮釋數(shù)據(jù)管理112B、平均讀寫存儲區(qū)塊控制112C及垃圾回收112D),因此本實(shí)施例的存儲系統(tǒng)20可將所有工作根據(jù)工作類型112A?112D進(jìn)行分類。工作調(diào)度單元242耦接至每一工作隊(duì)列232A?232D,用來判斷工作優(yōu)先權(quán),并將屬于工作類型112A?112D的工作分別轉(zhuǎn)換為可存儲在執(zhí)行隊(duì)列234A?234D的命令。
[0043]另一方面,執(zhí)行調(diào)度單元244耦接至實(shí)體驅(qū)動程序220,可用來根據(jù)工作優(yōu)先權(quán),配置帶寬以提供予執(zhí)行隊(duì)列234A?234D中的命令。執(zhí)行隊(duì)列234A?234D可用來存儲命令,而這些命令可在閃存數(shù)組250中的存儲器執(zhí)行,其中可執(zhí)行的命令是由存儲在工作隊(duì)列232A?232D而欲執(zhí)行的工作通過工作調(diào)度單元242轉(zhuǎn)換而成。執(zhí)行隊(duì)列234A?234D中每一執(zhí)行隊(duì)列可對應(yīng)于信道ChO?Ch3中的一通道,而每一執(zhí)行隊(duì)列存儲須在此信道中的存儲器執(zhí)行的命令。舉例來說,請參考圖4,圖4為存儲在執(zhí)行隊(duì)列234A?234D的命令的示意圖。如圖4所示,一平均讀寫存儲區(qū)塊控制112C的命令、一垃圾回收112D的命令、一詮釋數(shù)據(jù)管理112B的命令及一用戶數(shù)據(jù)存取112A的命令存儲在執(zhí)行隊(duì)列234A,一垃圾回收112D的命令及一用戶數(shù)據(jù)存取112A的命令存儲在執(zhí)行隊(duì)列234B,一用戶數(shù)據(jù)存取112A的命令存儲在執(zhí)行隊(duì)列234C,以及一用戶數(shù)據(jù)存取112A的命令存儲在執(zhí)行隊(duì)列234D。此四個執(zhí)行隊(duì)列234A?234D的配置僅為一種可能的實(shí)施例,在其它實(shí)施例中,由于閃存數(shù)組中可能具有任何大小的欄數(shù),其可能對應(yīng)于任何數(shù)量的通道。因此,任何數(shù)量的執(zhí)行隊(duì)列都可能實(shí)現(xiàn)在虛擬驅(qū)動程序230中,以對應(yīng)于閃存數(shù)組250的信道數(shù)量。
[0044]詳細(xì)來說,每一工作都可被分類為工作類型112A?112D之一。當(dāng)欲執(zhí)行一工作時,可將此工作存儲在所屬的工作類型所對應(yīng)的工作隊(duì)列,其包括在工作隊(duì)列232A?232D中。當(dāng)欲執(zhí)行的工作排入工作隊(duì)列232A?232D以后,虛擬驅(qū)動程序230根據(jù)相對應(yīng)工作類型的優(yōu)先權(quán),將此工作轉(zhuǎn)換為可執(zhí)行的命令。每一工作可由工作調(diào)度單元242轉(zhuǎn)換為至少一可執(zhí)行命令,進(jìn)而通過執(zhí)行調(diào)度單元244配置在執(zhí)行隊(duì)列234A?234D中至少一執(zhí)行隊(duì)列。舉例來說,如圖2所示,若一平均讀寫存儲區(qū)塊控制112C的工作是由一存儲器空間252將數(shù)據(jù)搬移至一存儲器空間254,此工作可被轉(zhuǎn)換為二個命令:從存儲器空間252讀取數(shù)據(jù)以及將數(shù)據(jù)寫入存儲器空間254。因此,讀取命令可配置在執(zhí)行隊(duì)列234A,而寫入命令可配置在執(zhí)行隊(duì)列234C。接著,實(shí)體驅(qū)動程序220可依序執(zhí)行讀取命令及寫入命令,進(jìn)而完成此平均讀寫存儲區(qū)塊控制112C的工作。
[0045]一般來說,針對在閃存接口傳送的數(shù)據(jù),閃存系統(tǒng)可定義一吞吐量。舉例來說,若存儲系統(tǒng)20的吞吐量為IOMB / S,則存儲系統(tǒng)20的帶寬也為IOMB / S。另一方面,工作類型112A?112D中每一工作類型也具有一吞吐量,其定義為該工作類型的工作由實(shí)體驅(qū)動程序220執(zhí)行時,其占據(jù)存儲系統(tǒng)20的帶寬大小。若工作類型112A?112D的吞吐量加總小于存儲系統(tǒng)20的吞吐量時,工作隊(duì)列232A?232D中所有工作都可順利執(zhí)行。若工作類型112A?112D的吞吐量加總大于存儲系統(tǒng)20的吞吐量時,部分工作必須在工作隊(duì)列232A?232D或執(zhí)行隊(duì)列234A?234D中等待,而無法及時被執(zhí)行。因此,必須通過優(yōu)先權(quán)來判斷哪些工作可先執(zhí)行,以通過最佳化順序來執(zhí)行所有工作,進(jìn)而改善存儲系統(tǒng)20的效率。
[0046]舉例來說,假設(shè)存儲系統(tǒng)20的帶寬為IOMB / S。用戶數(shù)據(jù)存取112A工作的吞吐量表示為U MB / S,詮釋數(shù)據(jù)管理112B工作的吞吐量表示為M MB / S,平均讀寫存儲區(qū)塊控制112C工作的吞吐量表示為W MB / S,以及垃圾回收112D工作的吞吐量表示為G MB /
S。若U+M+W+G〈=10時,所有工作隊(duì)列232A?232D中的工作都可順利執(zhí)行。若U+M+W+G>10時,部分工作必須在工作隊(duì)列232A?232D中等待,而無法及時被執(zhí)行。因此,必須通過優(yōu)先權(quán)來進(jìn)行調(diào)度。
[0047]值得注意的是,優(yōu)先權(quán)可根據(jù)存儲系統(tǒng)20的狀態(tài)進(jìn)行調(diào)整。一般來說,預(yù)設(shè)的優(yōu)先權(quán)順序由高至低排列可能為詮釋數(shù)據(jù)管理112B、用戶數(shù)據(jù)存取112A、垃圾回收112D及平均讀寫存儲區(qū)塊控制112C。由于存儲在詮釋數(shù)據(jù)中的閃存數(shù)組250狀態(tài)須時常更新,詮釋數(shù)據(jù)管理112B通常擁有最高優(yōu)先權(quán)。在部分實(shí)施例中,若閃存數(shù)組250的可用空間不足以至于無法存取用戶數(shù)據(jù),或可用空間少于一臨界值時,垃圾回收112D可擁有最高優(yōu)先權(quán)。實(shí)體驅(qū)動程序220可先清除數(shù)據(jù)并執(zhí)行垃圾回收112D,進(jìn)而回收利用這些可用空間,以利后續(xù)操作。在部分實(shí)施例中,若存儲系統(tǒng)20的效率為主要考慮時,用戶數(shù)據(jù)存取112A可擁有最高優(yōu)先權(quán),以維持一定程度的吞吐量提供予使用者。實(shí)際上,優(yōu)先權(quán)可通過不同方式?jīng)Q定,使得工作的執(zhí)行達(dá)到最佳化。如上所述,閃存中可能包括任何數(shù)量的工作類型以及任何分類方式,因此,優(yōu)先權(quán)的決定可依據(jù)不同工作類型進(jìn)行調(diào)整,而不限于此。
[0048]請參考圖5A,圖5A為本發(fā)明實(shí)施例存儲在工作隊(duì)列232A?232D的工作欲根據(jù)優(yōu)先權(quán)轉(zhuǎn)換為命令的示意圖。如圖5A所示,用戶數(shù)據(jù)存取112A的工作Ul?U3、一詮釋數(shù)據(jù)管理112B的工作Ml、一平均讀寫存儲區(qū)塊控制112C的工作Wl以及一垃圾回收112D的工作Gl分別存儲在工作隊(duì)列232A?232D。假設(shè)存儲系統(tǒng)20的帶寬為16MB / S,而每一命令(由工作類型112A?112D中的一工作通過工作調(diào)度單元242轉(zhuǎn)換而得)占有的吞吐量為4MB / S。因此,最多四個命令可順利執(zhí)行。一般來說,存儲系統(tǒng)20的帶寬16MB / s可平均分配至四個信道ChO?Ch3,因此每一通道分配有4MB / S,使得每一執(zhí)行隊(duì)列中僅有一個命令可順利執(zhí)行。根據(jù)優(yōu)先權(quán)的預(yù)設(shè)順序(即詮釋數(shù)據(jù)管理112B、用戶數(shù)據(jù)存取112A、垃圾回收112D及平均讀寫存儲區(qū)塊控制112C),工作調(diào)度單元242先將詮釋數(shù)據(jù)管理112B的工作Ml轉(zhuǎn)換為命令,并存儲在執(zhí)行隊(duì)列234A?234D中相對應(yīng)的執(zhí)行隊(duì)列。接著,用戶數(shù)據(jù)存取112A的工作Ul?U3及垃圾回收112D的工作Gl依序被轉(zhuǎn)換為命令,并根據(jù)優(yōu)先權(quán)以及欲進(jìn)行工作的存儲器位置,存儲在執(zhí)行隊(duì)列234A?234D中相對應(yīng)的執(zhí)行隊(duì)列,如圖5B所示。此時,假設(shè)平均讀寫存儲區(qū)塊控制112C的工作Wl欲在信道ChO執(zhí)行的存儲器,而必須分配至執(zhí)行隊(duì)列234A,但執(zhí)行隊(duì)列234A的空間已完全被占據(jù)時,工作Wl必須在工作隊(duì)列232C中等待,直到執(zhí)行隊(duì)列234A的存儲空間釋放出來。
[0049]每當(dāng)一新工作進(jìn)入工作隊(duì)列232A?232D時,必須將優(yōu)先權(quán)套用于此新工作,以通過最佳化順序來執(zhí)行,進(jìn)而改善存儲系統(tǒng)20的效率。請參考圖5C,圖5C為圖5B所示的狀態(tài)下當(dāng)數(shù)個命令正在執(zhí)行且數(shù)個工作及數(shù)個命令正在執(zhí)行隊(duì)列234A?234D中等待時,一新工作U4到達(dá)的示意圖。假設(shè)新到達(dá)的工作U4屬于用戶數(shù)據(jù)存取112A的工作類型,且用于信道ChO的存儲器,因此,工作U4配置在工作隊(duì)列232A且欲轉(zhuǎn)換至執(zhí)行隊(duì)列234A。此時,由于執(zhí)行隊(duì)列234A的空間已完全被占據(jù),因此工作Wl及U4須分別在工作隊(duì)列232C及232A中等待。當(dāng)每一執(zhí)行隊(duì)列中,部分對應(yīng)于工作(如Ml及Ul)的命令完成以后,帶寬及執(zhí)行隊(duì)列234A?234D的存儲空間同時被釋放出來,使得工作隊(duì)列232A?232D中部分工作可轉(zhuǎn)換為命令。此時,工作調(diào)度單元242可根據(jù)優(yōu)先權(quán)選擇工作隊(duì)列232A?232D中欲轉(zhuǎn)換為命令的工作。由于工作Wl及工作U4都用于信道ChO的存儲器,工作調(diào)度單元242必須根據(jù)優(yōu)先權(quán)將工作轉(zhuǎn)換至執(zhí)行隊(duì)列234A。再者,由于用戶數(shù)據(jù)存取112A的工作相較于平均讀寫存儲區(qū)塊控制112C的工作具有較高優(yōu)先權(quán),即使工作U4較晚進(jìn)入工作隊(duì)列,仍先被轉(zhuǎn)換為命令,而工作Wl須在工作隊(duì)列232C等待,如圖所示。更進(jìn)一步地,根據(jù)優(yōu)先權(quán),存儲在執(zhí)行隊(duì)列234A?234D中的命令的順序也可能改變。因此,在執(zhí)行隊(duì)列234A中,工作U4轉(zhuǎn)換為命令以后存儲在對應(yīng)于工作Gl的命令以前的位置,且可在工作U2及U3對應(yīng)的命令執(zhí)行完成以后被執(zhí)行。
[0050]一程序代碼可實(shí)現(xiàn)在存儲器控制器200中,用來指示一處理器執(zhí)行上述操作。而上述操作可歸納為一存儲器控制流程60,如圖6所示。存儲器控制流程60包括以下步驟:
[0051]步驟600:開始。
[0052]步驟602:將多個工作中每一工作分類至工作類型112A?112D當(dāng)中任一工作類型。
[0053]步驟604:根據(jù)工作類型112A?112D,配置工作隊(duì)列232A?232D,其中每一工作隊(duì)列存儲多個工作中的一工作,此工作屬于工作類型112A?112D之一且為欲執(zhí)行的工作。
[0054]步驟606:指定工作類型112A?112D中每一工作類型的一優(yōu)先權(quán)。
[0055]步驟608:配置執(zhí)行隊(duì)列234A?234D。
[0056]步驟610:將存儲在工作隊(duì)列232A?232D中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在執(zhí)行隊(duì)列234A?234D中一第一執(zhí)行隊(duì)列,其中,第一執(zhí)行隊(duì)列中的至少一命令是根據(jù)對應(yīng)于第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
[0057]步驟612:結(jié)束。
[0058]值得注意的是,本發(fā)明的主要精神在于可通過最佳化順序執(zhí)行存儲系統(tǒng)中的工作,進(jìn)而改善存儲系統(tǒng)的效率。本領(lǐng)域普通技術(shù)人員當(dāng)可據(jù)以修飾或變化,而不限于此。舉例來說,在上述實(shí)施例中,工作調(diào)度的方法是用于快閃類型的存儲系統(tǒng)20中,但在部分實(shí)施例中,只要包括有存儲器控制器,任何類型的存儲系統(tǒng)都可使用上述工作調(diào)度方法。另一方面,如圖2?圖所示,每一工作隊(duì)列232A?232D中存儲工作的空間以及每一執(zhí)行隊(duì)列234A?234D中存儲命令的空間都為4個單元,但在其它實(shí)施例中,用來存儲工作或命令的空間可能具有不同大小,或可根據(jù)系統(tǒng)需求而進(jìn)行調(diào)整,而不限于此。更進(jìn)一步地,在部分實(shí)施例中,執(zhí)行調(diào)度單元244可根據(jù)系統(tǒng)需求,依照任何順序?qū)⒚罘峙湓趫?zhí)行隊(duì)列中,因此,排列在執(zhí)行隊(duì)列的命令可依照任何順序來執(zhí)行。以下實(shí)施例中,命令是通過一交錯方式執(zhí)行。
[0059]請參考圖7,圖7為本發(fā)明實(shí)施例通過一交錯方式執(zhí)行命令的示意圖。如圖7所示,用戶數(shù)據(jù)存取112A的工作U4及U5存儲在工作隊(duì)列232A中。工作U4可轉(zhuǎn)換為命令U4A及U4B并在位于信道ChO的一存儲器空間256執(zhí)行,工作U5可轉(zhuǎn)換為命令U5A及U5B并在同樣位于通道ChO的另一存儲器空間258執(zhí)行。在此情況下,實(shí)體驅(qū)動程序220可依照U4A、U5A、U4B及U5B的順序來執(zhí)行命令。當(dāng)在存儲器空間256執(zhí)行命令U4時,即使實(shí)體驅(qū)動程序220已完成其任務(wù)且準(zhǔn)備好執(zhí)行后續(xù)命令,存儲器空間256可能仍在進(jìn)行數(shù)據(jù)轉(zhuǎn)傳而處在忙碌狀態(tài)。此時,命令U4B必須在執(zhí)行隊(duì)列中等待,直到存儲器空間256空出以后才可執(zhí)行。此時若存儲器空間258處在空閑狀態(tài),實(shí)體驅(qū)動程序220可先執(zhí)行命令U5A,以提升效率。如此一來,命令可通過交錯方式執(zhí)行,進(jìn)而達(dá)到存儲系統(tǒng)20的較高效率。在其它實(shí)施例中,工作U4及U5可先分割為較小的工作,再將較小工作轉(zhuǎn)換為命令U4A、U4B、U5A及U5B,此命令也可通過交錯方式執(zhí)行。
[0060]一般來說,大多數(shù)閃存定義一種吞吐量的規(guī)格,如一等級四(class-4)閃存代表用戶數(shù)據(jù)存取的吞吐量至少須大于4MB / s,一等級六(class-6)閃存代表用戶數(shù)據(jù)存取的吞吐量至少須大于6MB / S。在此情況下,須確保用戶數(shù)據(jù)存取112A的工作的吞吐量大于一目標(biāo)值。舉例來說,在上述實(shí)施例中,存儲系統(tǒng)20的帶寬為IOMB / S,若用戶數(shù)據(jù)存取112A工作的目標(biāo)吞吐量設(shè)定為6MB / S,僅剩下4MB / s帶寬提供予其它工作類型的工作使用。因此,在上述實(shí)施例中,可定義一種新的規(guī)則。若M+W+G〈=4時,所有工作隊(duì)列232A?232D中的工作都可順利執(zhí)行。若M+W+GM時,部分工作必須在工作隊(duì)列232A?232D中等待,而無法及時被執(zhí)行。在此情況下,可確保用戶數(shù)據(jù)存取112A工作的吞吐量大于6MB / S。然而,在少數(shù)情況下,若存儲系統(tǒng)20的帶寬被某些須緊急處理的工作占據(jù)時,使用者資料存取112A工作的吞吐量仍可能下降至低于目標(biāo)吞吐量。
[0061]在公知技術(shù)中,當(dāng)實(shí)體驅(qū)動程序處在忙碌狀態(tài)時,必須等到現(xiàn)有工作完成以后,才執(zhí)行下一個工作。因此,實(shí)體驅(qū)動程序必須先完成前一個工作,再開始執(zhí)行后續(xù)工作。如此一來,閃存的效率可能會降低。相較之下,本發(fā)明可指定多個工作的優(yōu)先權(quán),以通過最佳化順序執(zhí)行多個工作,進(jìn)而改善閃存的效率。
[0062]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種工作調(diào)度方法,用于一存儲系統(tǒng)中的多個存儲器,該方法包括有:將該多個工作中每一工作分類至多個工作類型當(dāng)中任一工作類型;根據(jù)該多個工作類型,配置多個工作隊(duì)列,其中每一工作隊(duì)列存儲該多 個工作中的一工作,該工作屬于該多個工作類型之一且為欲執(zhí)行的工作; 指定該多個工作類型中每一工作類型的一優(yōu)先權(quán); 配置至少一執(zhí)行隊(duì)列;以及 將存儲在該多個工作隊(duì)列中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第一執(zhí)行隊(duì)列; 其中,該第一執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)欲執(zhí)行的一第二工作到達(dá)時,該第二工作被分類至該多個工作類型中一第二工作類型并存儲在對應(yīng)于該第二工作類型的一第二工作隊(duì)列。
3.如權(quán)利要求2所述的方法,其特征在于,該方法還包括將存儲在該多個工作隊(duì)列中該第二工作隊(duì)列的該第二工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第二執(zhí)行隊(duì)列。
4.如權(quán)利要求3所述的方法,其特征在于,該第二執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第二工作隊(duì)列的一第二工作類型的優(yōu)先權(quán)來執(zhí)行。
5.如權(quán)利要求2所述的方法,其特征在于,該方法還包括將存儲在該多個工作隊(duì)列中該第二工作隊(duì)列的該第二工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中該第一執(zhí)行隊(duì)列。
6.如權(quán)利要求5所述的方法,其特征在于,該第二工作的優(yōu)先權(quán)高于該第一工作的優(yōu)先權(quán),由該第二工作轉(zhuǎn)換的命令先被執(zhí)行,再執(zhí)行由該第一工作轉(zhuǎn)換的命令。
7.如權(quán)利要求1所述的方法,其特征在于,當(dāng)該多個工作隊(duì)列中所有工作吞吐量的加總大于該存儲系統(tǒng)的一帶寬時,該第一工作是根據(jù)對應(yīng)于該第一工作隊(duì)列的該第一工作類型的優(yōu)先權(quán)進(jìn)行選擇。
8.如權(quán)利要求1所述的方法,其特征在于,該方法還包括在該多個工作類型中一工作類型定義一目標(biāo)吞吐量。
9.如權(quán)利要求1所述的方法,其特征在于,該至少一執(zhí)行隊(duì)列中每一執(zhí)行隊(duì)列對應(yīng)于該多個存儲器中至少一存儲器。
10.如權(quán)利要求9所述的方法,其特征在于,該至少一命令是通過一交錯方式在該多個存儲器中執(zhí)行。
11.如權(quán)利要求1所述的方法,其特征在于,該多個工作類型中每一工作類型的該優(yōu)先權(quán)是根據(jù)該存儲系統(tǒng)的一狀態(tài)來指定。
12.—種存儲系 統(tǒng),包括有: 多個存儲器;以及 一存儲器控制器,可實(shí)現(xiàn)為一程序代碼,用來指示一處理器執(zhí)行一種用于該存儲系統(tǒng)中該多個存儲器的工作調(diào)度方法,該方法包括有: 將該多個工作中每一工作分類至多個工作類型當(dāng)中任一工作類型;根據(jù)該多個工作類型,配置多個工作隊(duì)列,其中每一工作隊(duì)列存儲該多個工作中的一工作,該工作屬于該多個工作類型之一且為欲執(zhí)行的工作; 指定該多個工作類型中每一工作類型的一優(yōu)先權(quán); 配置至少一執(zhí)行隊(duì)列;以及 將存儲在該多個工作隊(duì)列中一第一工作隊(duì)列的一第一工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第一執(zhí)行隊(duì)列; 其中,該第一執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第一工作隊(duì)列的一第一工作類型的優(yōu)先權(quán)來執(zhí)行。
13.如權(quán)利要求12所述的存儲系統(tǒng),其特征在于,當(dāng)欲執(zhí)行的一第二工作到達(dá)時,該第二工作被分類至該多個工作類型中一第二工作類型并存儲在對應(yīng)于該第二工作類型的一第二工作隊(duì)列。
14.如權(quán)利要求13所述的存儲系統(tǒng),其特征在于,該方法還包括將存儲在該多個工作隊(duì)列中該第二工作隊(duì)列的該第二工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中一第二執(zhí)行隊(duì)列。
15.如權(quán)利要求14所述的存儲系統(tǒng),其特征在于,該第二執(zhí)行隊(duì)列中的該至少一命令是根據(jù)對應(yīng)于該第二工作隊(duì)列的一第二工作類型的優(yōu)先權(quán)來執(zhí)行。
16.如權(quán)利要求13所述的存儲系統(tǒng),其特征在于,該方法還包括將存儲在該多個工作隊(duì)列中該第二工作隊(duì)列的該第二工作轉(zhuǎn)換為至少一命令,以存儲在該至少一執(zhí)行隊(duì)列中該第一執(zhí)行隊(duì)列。
17.如權(quán)利要求16所述的存儲系統(tǒng),其特征在于,該第二工作的優(yōu)先權(quán)高于該第一工作的優(yōu)先權(quán),由該第二工作轉(zhuǎn)換的命令先被執(zhí)行,再執(zhí)行由該第一工作轉(zhuǎn)換的命令。
18.如權(quán)利要求12所述的存儲系統(tǒng),其特征在于,當(dāng)該多個工作隊(duì)列中所有工作吞吐量的加總大于該存儲系統(tǒng)的一帶寬時,該第一工作是根據(jù)對應(yīng)于該第一工作隊(duì)列的該第一工作類型的優(yōu)先權(quán)進(jìn)行選擇。
19.如權(quán)利要求12所述的存儲系統(tǒng),其特征在于,該方法還包括在該多個工作類型中一工作類型定義一目標(biāo)吞吐量。
20.如權(quán)利要求12所述的存儲系統(tǒng),其特征在于,該至少一執(zhí)行隊(duì)列中每一執(zhí)行隊(duì)列對應(yīng)于該多個存儲器中至少一存儲器。
21.如權(quán)利要求20所述的存儲系統(tǒng),其特征在于,該至少一命令是通過一交錯方式在該多個存儲器中執(zhí)行。
22.如權(quán)利要求12所述的存儲系統(tǒng),其特征在于,該多個工作類型中每一工作類型的該優(yōu)先權(quán)是根據(jù)該存儲系統(tǒng)的一狀態(tài)來指定。
23.—種工作調(diào)度方法,用于一存儲系統(tǒng)中的多個存儲器,該方法包括有: 接收一工作; 判斷該工作的一工作類型; 根據(jù)該工作的該工作類型,將該工作排列在一相對應(yīng)的工作隊(duì)列; 根據(jù)該工作的該工作類型,賦予該工作一優(yōu)先權(quán); 根據(jù)該工作的該優(yōu)先權(quán),將該工作轉(zhuǎn)換為至少一命令;以及 根據(jù)該工作的該優(yōu)先權(quán),將由該工作轉(zhuǎn)換而成的該至少一命令排入一相對應(yīng)的執(zhí)行隊(duì)列。
【文檔編號】G06F3/06GK103809917SQ201310091661
【公開日】2014年5月21日 申請日期:2013年3月21日 優(yōu)先權(quán)日:2012年11月12日
【發(fā)明者】張鈺堂, 劉亦峻 申請人:擎泰科技股份有限公司