專利名稱:固態(tài)驅(qū)動器命令分組的制作方法
固態(tài)驅(qū)動器命令分組相關(guān)申請的交叉引用本申請要求2009年2月2日提交的美國臨時申請第61/149,161號的優(yōu)先權(quán),該申請通過引用被全部并入。
背景技術(shù):
包括在背景部分中的信息并不是被承認(rèn)的現(xiàn)有技術(shù)。固態(tài)驅(qū)動器(solid-state drive)是具有固態(tài)存儲器的存儲器設(shè)備。固態(tài)存儲器包括很少的活動件(如果有的話)。 在有很少幾個或沒有活動件時,固態(tài)驅(qū)動器是可靠的??稍诠虘B(tài)驅(qū)動器上執(zhí)行讀和/或?qū)懨睢R獔?zhí)行的命令在執(zhí)行之前被評估。在確 定用在執(zhí)行命令中的通道時使用該評估。接著使用選定的通道執(zhí)行該命令。如果大量命令 將被執(zhí)行,則執(zhí)行這些命令可能花費(fèi)很長時間。
發(fā)明內(nèi)容
在一個實(shí)施方式中,第一命令和第二命令被分組到命令包中,其中第一命令和第 二命令不共享公共通道來執(zhí)行。固態(tài)驅(qū)動器被控制以在固態(tài)驅(qū)動器上執(zhí)行命令包,其中執(zhí) 行命令包使第一命令和第二命令同時在分離的通道上執(zhí)行。在另一實(shí)施方式中,一種裝置包括被配置成存儲第一命令和第二命令的數(shù)據(jù)存儲 器,其中第一命令和第二命令在固態(tài)驅(qū)動器上被執(zhí)行,且其中在固態(tài)驅(qū)動器上執(zhí)行命令將 會消耗通道。組織邏輯在確定第一命令和第二命令不共享公共通道來執(zhí)行時將第一命令和 第二命令安排到命令包中。功能邏輯控制將在固態(tài)驅(qū)動器上執(zhí)行的命令包,其中第一命令 和第二命令將被同時執(zhí)行。在另一實(shí)施方式中,一種裝置包括組織邏輯,其在確定第一命令和第二命令不共 享公共通道來執(zhí)行時將第一命令和第二命令安排到命令包中。管理邏輯產(chǎn)生第一命令和第 二命令之間的關(guān)系,其中該關(guān)系指示第一命令和第二命令是命令包的部分。功能邏輯使命 令包在固態(tài)驅(qū)動器上同時執(zhí)行第一命令和第二命令。
合并在說明書中并構(gòu)成說明書的一部分的附圖示出各種示例性系統(tǒng)、方法和本發(fā) 明的不同方面的其它示例性實(shí)施方式。應(yīng)認(rèn)識到,圖中的所示元件邊界(例如,方框、方框 組或其它形狀)表示邊界的一個示例。本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,在一些示例中,一個元件 可被設(shè)計(jì)為多個元件,或多個元件可被設(shè)計(jì)為一個元件。在一些示例中,被示為另一元件的 內(nèi)部部件的元件可被實(shí)現(xiàn)為外部部件,反之亦然。此外,元件可不按比例繪制。圖1示出用于對命令分組并控制那些分組的命令如何在固態(tài)驅(qū)動器上執(zhí)行的方 法的一個實(shí)施方式。圖2示出用于對命令分組、產(chǎn)生命令之間的關(guān)系并控制那些命令的執(zhí)行的裝置的 一個實(shí)施方式。
圖3示出不同命令執(zhí)行格式的時序圖的一個實(shí)施方式。圖4示出填充有用于在固態(tài)驅(qū)動器上執(zhí)行的命令的隊(duì)列的一個實(shí)施方式。圖5示出通道以及與通道相關(guān)的存儲器單元的一個實(shí)施方式。圖6示出隊(duì)列以及該隊(duì)列中的命令如何與通道相關(guān)的一個實(shí)施方式。圖7示出通道以及與那些通道相關(guān)的標(biāo)記線的一個實(shí)施方式。圖8示出隊(duì)列中的命令如何鏈接在一起的一個實(shí)施方式。圖9示出隊(duì)列中的命令如何基于命令打包鏈接在一起的一個實(shí)施方式。圖10示出在執(zhí)行命令包之后的標(biāo)記線的一個實(shí)施方式。圖11示出在第二命令打包傳遞發(fā)生和第二命令包被執(zhí)行之后的標(biāo)記線的一個實(shí) 施方式。
具體實(shí)施例方式這里所述的是示例性裝置和與固態(tài)設(shè)備命令分組相關(guān)的其它實(shí)施方式。下文包括 這里使用的所選擇的術(shù)語的定義。這些定義包括落在術(shù)語的范圍內(nèi)并可用于實(shí)現(xiàn)的部件的 各種示例和/或形式。這些示例沒有被規(guī)定為限制性的。術(shù)語的單數(shù)和復(fù)數(shù)形式可在定義 范圍內(nèi)。對“一個實(shí)施方式”、“實(shí)施方式”、“一個示例”、“示例”等的提及指示如此描述的實(shí) 施方式或示例可包括特定的特征、結(jié)構(gòu)、特點(diǎn)、特性、元件或限制,但不是每個實(shí)施方式或示 例必須包括該特定的特征、結(jié)構(gòu)、特點(diǎn)、特性、元件或限制。此外,短語“在一個實(shí)施方式中” 的重復(fù)使用不一定指同一實(shí)施方式,雖然它可以指同一實(shí)施方式。這里使用的“計(jì)算機(jī)可讀介質(zhì)”指儲存指令和/或數(shù)據(jù)的存儲介質(zhì)。計(jì)算機(jī)可讀 介質(zhì)可采取一些形式,包括但不限于非易失性介質(zhì)和易失性介質(zhì)。非易失性介質(zhì)可包括例 如光盤、磁盤等。易失性介質(zhì)可包括例如半導(dǎo)體存儲器、動態(tài)存儲器等。計(jì)算機(jī)可讀介質(zhì)的 一般形式可包括但不限于軟盤、軟性磁盤、硬盤、其它磁性介質(zhì)、專用集成電路(ASIC)、可編 程邏輯設(shè)備、光盤(CD)、其它光學(xué)介質(zhì)、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、存儲芯 片或存儲卡、存儲棒,以及計(jì)算機(jī)、處理器或其它電子設(shè)備可讀取的其它介質(zhì)。這里使用的“邏輯”包括但不限于硬件、儲存在存儲器中的固件、儲存在存儲介質(zhì) 上或在機(jī)器上執(zhí)行的固件、和/或每個的組合,以執(zhí)行功能或動作和/或從另一邏輯、方法 和/或系統(tǒng)產(chǎn)生功能或動作。邏輯可包括軟件控制的微處理器、分立的邏輯(例如,ASIC)、 模擬電路、數(shù)字電路、編程的邏輯設(shè)備、包含指令的存儲器設(shè)備等。邏輯可包括一個或多個 門、門的組合或其它電路部件。在描述多個邏輯的場合,將多個邏輯合并成一個物理邏輯是 可能的。類似地,在描述單個邏輯的場合,將所述單個邏輯分布在多個物理邏輯之間是可能 的。參考流程圖可更好地理解示例性方法。雖然為了解釋起來簡單,所示方法被顯示 和描述為一系列塊,但應(yīng)認(rèn)識到,這些方法并不被塊的順序限制,因?yàn)橐恍K可按與所示和 所述不同的順序和/或與其它塊同時發(fā)生。而且,可能需要少于示出的所有塊來實(shí)現(xiàn)示例 性方法。塊可被合并或分成多個部分。此外,額外的和/或可選的方法可使用額外的未示 出的塊。圖1示出方法1000。方法1000與分組命令和控制那些命令如何在固態(tài)驅(qū)動器(SSD)上執(zhí)行有關(guān)。在1010,方法1000包括將第一命令和第二命令分組到命令包中。第一命令和第二 命令不共享公共通道來執(zhí)行。命令可以是將在固態(tài)驅(qū)動器上執(zhí)行的讀命令或?qū)懨?。智?分組命令可產(chǎn)生執(zhí)行效率。在1020,方法1000包括控制SSD以在SSD上執(zhí)行命令包。執(zhí)行命令包使第一命令和第二命令在分離的通道上同時執(zhí)行。因?yàn)榈谝幻詈偷诙钔瑫r在分離的通道上被執(zhí) 行,所以與被獨(dú)立地執(zhí)行的情況相比,這些命令被更有效地執(zhí)行。在一個實(shí)施方式中,命令至少部分地基于管理方案被分組到命令包中。管理方案 可設(shè)計(jì)成例如最小化用于執(zhí)行命令集的命令包的數(shù)量。一個示例性命令集包括第一命令和 第二命令。命令集是在SSD上等待執(zhí)行的一組命令。命令可以或可以不基于命令的優(yōu)先級被分組到命令包中。例如,具有高優(yōu)先級的 第一命令可以不被分組到命令包中,而具有低優(yōu)先級的第二命令可以被分組到命令包中。命令還可基于與隊(duì)列相關(guān)的事件的出現(xiàn)而被分組到命令包中。隊(duì)列是被配置成存 儲等待被執(zhí)行的命令的單獨(dú)的存儲單元。隊(duì)列中的條件可隨著時間的過去而改變。這些變 化的條件可影響命令分組。這些條件包括但不限于隊(duì)列達(dá)到閾值水平、隊(duì)列超過閾值水 平、以及命令存在于隊(duì)列中達(dá)到預(yù)定的閾值時問。本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,閾值水平可以 是用戶定義的、硬編碼的等等。命令可在確定了命令大小不超過命令大小閾值時選擇性地被分組到命令包中。如 果命令相對較大,則使用足夠的通道,且分組不出現(xiàn)。本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,命令大小 閾值可為用戶定義的、硬編碼的等等。圖2示出裝置1200。裝置1200對命令分組并控制這些命令的執(zhí)行。裝置1200包 括數(shù)據(jù)存儲器1210。數(shù)據(jù)存儲器1210存儲第一命令和第二命令。第一命令和第二命令將 在固態(tài)驅(qū)動器1220上執(zhí)行。在固態(tài)驅(qū)動器1220上執(zhí)行命令消耗至少一個通道。消耗通道 包括在命令的執(zhí)行期間給予命令對該通道的獨(dú)占訪問。裝置1200還包括組織邏輯1230。組織邏輯1230將第一命令和第二命令安排到命 令包中。當(dāng)確定了第一命令和第二命令不共享公共通道來執(zhí)行時,發(fā)生這種安排。因?yàn)槊?令不共享公共通道,所以獨(dú)占訪問未被妨礙。因?yàn)楠?dú)占訪問未被妨礙,所以命令可被同時執(zhí) 行。裝置1200還包括功能邏輯1240。功能邏輯1240控制將在固態(tài)驅(qū)動器1220上執(zhí) 行的命令包。第一命令和第二命令將被同時執(zhí)行。命令可同時執(zhí)行是因?yàn)榻o命令包命令提 供了對必要通道的獨(dú)占訪問,且由于命令被分組在一起的方式這些必要通道彼此不競爭。在一個實(shí)施方式中,組織邏輯1230和功能邏輯1240以集成電路實(shí)現(xiàn)。集成電路 可例如為ASIC、現(xiàn)場可編程門陣列(FPGA)等。發(fā)送將在SSD 1220上執(zhí)行的命令的設(shè)備可通知裝置1200 該命令是高優(yōu)先級命 令。組織邏輯1230可被配置成當(dāng)確定了命令是高優(yōu)先級命令時不將命令分組到命令包中。 在本示例中,組織邏輯1230使功能邏輯1240獨(dú)立于命令包(例如,單獨(dú)地)而執(zhí)行命令。 組織邏輯1230還可被配置成當(dāng)確定了命令不是高優(yōu)先級命令時將命令分組到命令包中。在一個示例中,數(shù)據(jù)存儲器1210是結(jié)合附圖5-10討論的隊(duì)列200。當(dāng)數(shù)據(jù)存儲器 1210是隊(duì)列200時,組織邏輯1230被配置成當(dāng)識別出與隊(duì)列相關(guān)的事件時將第一命令和第二命令分組到命令包中。在本示例中,與隊(duì)列相關(guān)的事件是隊(duì)列達(dá)到閾值水平、隊(duì)列超過閾 值水平、以及命令存在于隊(duì)列中達(dá)到預(yù)定的閾值時間。從本公開和從這里的教導(dǎo)中,本領(lǐng)域 技術(shù)人員應(yīng)認(rèn)識到,數(shù)據(jù)存儲器1210可實(shí)現(xiàn)其它數(shù)據(jù)結(jié)構(gòu)(例如,列表、表格)。本領(lǐng)域技 術(shù)人員還應(yīng)認(rèn)識到,組織邏輯1230在識別出另一與數(shù)據(jù)結(jié)構(gòu)相關(guān)的事件時對命令分組。在一個示例中,組織邏輯1230在確定了命令大小超過或達(dá)到閾值時將命令分組 到命令包中。裝置1200因此對命令智能地分組,以使命令在固態(tài)驅(qū)動器1220上有效地執(zhí) 行。在一個實(shí)施方式中,裝置1200包括管理邏輯1250。管理邏輯1250產(chǎn)生第一命令 和第二命令之間的關(guān)系(例如,圖9的900)。該關(guān)系指示第一命令和第二命令是命令包的 部分。該關(guān)系可充當(dāng)如何組織命令包的指南。在一個示例中,管理邏輯1250刪除第一命令和第三命令之間的隊(duì)列關(guān)系。示例性 的被刪除的隊(duì)列關(guān)系是使用公共通道的命令之間的關(guān)系。隊(duì)列200是被配置成儲存等待被 執(zhí)行的命令的單獨(dú)的存儲單元。在一個實(shí)施方式中,組織邏輯1230至少部分地根據(jù)管理方案將命令分組到命令 包中。管理方案最小化用于執(zhí)行命令集的命令包的數(shù)量。第一命令和第二命令是命令集成 員。命令集是等待在固態(tài)驅(qū)動器1220上執(zhí)行的一組命令。在一個示例中,組織邏輯1230部分地準(zhǔn)備第一命令和第二命令。在將第一命令和 第二命令安排到命令包中之前,執(zhí)行部分準(zhǔn)備。例如,該部分準(zhǔn)備可包括選擇將被打包在一 起并執(zhí)行的候選命令。如下面在示例中更詳細(xì)描述的,從部分準(zhǔn)備的時間到最終打包的時 間,執(zhí)行條件和/或資源可用性可能改變。如果某些條件變化,則待分組的候選命令也可變 化。命令準(zhǔn)備包括對命令進(jìn)行調(diào)整以在通道上執(zhí)行。例如,對命令進(jìn)行調(diào)整可包括更改與 命令相關(guān)的隊(duì)列500中的一個或多個字段(例如,改變到下一個或最后一個命令的鏈接,從 而改變命令的順序/分組)。將第一命令和第二命令安排到命令包中完成了準(zhǔn)備。由于準(zhǔn) 備完成,命令被執(zhí)行?,F(xiàn)在轉(zhuǎn)到圖3,其示出與計(jì)算機(jī)系統(tǒng)中的讀/寫命令相關(guān)的時序圖。圖4-11示出 可由方法1000和/或裝置1200處理的命令。在計(jì)算機(jī)系統(tǒng)中,主機(jī)設(shè)備將讀和寫命令發(fā) 送到存儲器。存儲器可例如是SSD。命令由SSD執(zhí)行以實(shí)現(xiàn)期望的功能。在一個示例中,執(zhí) 行寫命令以將信息寫到存儲器單元。雖然命令可單獨(dú)地執(zhí)行,但是一起執(zhí)行命令包中的多 個命令更有效。因此,命令從主機(jī)設(shè)備被收集并保留在隊(duì)列中,直到指定的事件出現(xiàn)。當(dāng)指 定的事件出現(xiàn)時,命令被一起智能地分組到命令包中。命令包接著沿著通道被執(zhí)行,從而提 高了性能。SSD包括多個通道。通道是一種通信介質(zhì)。通道用于執(zhí)行命令。在一個實(shí)例中, SSD可包括16個通道。用于執(zhí)行命令的通道的數(shù)量至少部分地基于命令長度。在一個示例 中,如果命令為14個塊長,則14個通道用于執(zhí)行該命令。其余的兩個通道保持閑置。大的命令使用很多通道,而較小的命令使用較少的通道。在一個示例中,具有一個 塊長度的命令使用一個通道。如果命令被單獨(dú)執(zhí)行,則15個通道保持閑置。使15個通道 保持閑置是極大的資源浪費(fèi)。為了幫助減輕資源浪費(fèi),命令被一起執(zhí)行。命令被智能地分 組在一起,所以一次執(zhí)行較多的命令。圖3公開了不同的命令執(zhí)行格式的時序圖。時序圖100和110示出命令準(zhǔn)備。時序圖100示出與被單獨(dú)準(zhǔn)備和整體準(zhǔn)備的命令相關(guān)的時序。在100中示出的命令不進(jìn)行命 令打包。在不進(jìn)行命令打包時,大量時間被花費(fèi)來準(zhǔn)備每個命令。時序圖110示出與被單 獨(dú)但僅僅部分地準(zhǔn)備的命令相關(guān)的時序。部分準(zhǔn)備比整體準(zhǔn)備花費(fèi)更少的時間。時序圖120和130示出與命令執(zhí)行相關(guān)的時序。時序圖130還示出與命令打包相 關(guān)的時序。時序圖130是時序圖110的繼續(xù)。在時序圖110中,命令被部分地準(zhǔn)備。如時 序圖130所示,命令被打包以整體地準(zhǔn)備。接著執(zhí)行命令包。時序圖120示出與在不進(jìn)行 命令打包而執(zhí)行命令時相關(guān)的時序。時序圖120是時序圖100的繼續(xù)。如圖所示,時序圖 110和130示出比時序圖100和120花費(fèi)更少的被消耗的時間。例如在圖3中,時序圖100 和120在命令17結(jié)束之后結(jié)束。該時間點(diǎn)出現(xiàn)得比在時序圖110和130中最后一個命令 (亦表示命令17)完成時更晚。命令17沒有在時序圖130中標(biāo)出,因?yàn)樗c一組命令一起 被打包并執(zhí)行。因此,使用命令打包使命令執(zhí)行更有效。圖4示出填充有用于在SSD上執(zhí)行的命令的隊(duì)列200。隊(duì)列200中的命令具有五個字段。這些字段是標(biāo)記、上一個、下一個、邏輯塊地址(LBA)和長度。這些字段顯示關(guān)于 命令的信息。在一個示例中,LBA公開了命令的第一存儲器單元,而上一個和下一個是對其 它命令的指針。下面是用于構(gòu)造隊(duì)列200中的命令的偽代碼typedef struct uQCmdEntrymUINT_32count ;struct uQCmdEntry*pNext ;struct uQCmdEntry氺pPrevious ;mUINT_32Iba ;mUINT_16auDone ;mUINT_8tagNum ;union {mUINT_8 all ;struct {mUINT_8 trkEnd:l ;mUINT_8 opTypeffr:l ;mUINT_8 reserved:6 ;}bits;uFlags ;}mtUQ_CMD_ENTRY從本公開和從這里的教導(dǎo)中,本領(lǐng)域的普通技術(shù)人員應(yīng)認(rèn)識到,其它代碼也可用 于構(gòu)造隊(duì)列200中的命令。圖5示出16個通道(0-15)以及與通道(0_15)相關(guān)的存儲器單元。例如,通道2 與存儲器單元2、18、34、50、66和82相關(guān)。圖6示出隊(duì)列200和隊(duì)列200中的命令如何與通道(0_15)相關(guān)。例如,通道2與 標(biāo)記值為1的命令410和標(biāo)記值為5的命令420相關(guān)。命令1的LBA值為50,而命令5的 LBA值為82。命令1和5與通道2相關(guān),因?yàn)橥ǖ?用于訪問存儲器單元50和82。通道用 于訪問某些存儲器單元的命令。
圖7示出16個通道(0-15)以及與通道(0_15)相關(guān)的標(biāo)記線。圖7包括標(biāo)記線 500和510。標(biāo)記線510包括頭部520、尾部530和計(jì)數(shù)540。頭部520指示與通道2相關(guān) 的第一個命令。尾部530指示與通道2相關(guān)的最后一個命令。計(jì)數(shù)540指示標(biāo)記線的通道 的命令數(shù)量。標(biāo)記線510基于命令410和命令420 (圖6)。命令410的標(biāo)記值為1。命令 410是通道2的第一命令。頭部520是1,因?yàn)橥ǖ?上的第一個命令的標(biāo)記值為1。命令 420的標(biāo)記值為5。命令420是通道2的最后一個命令。尾部530是5,因?yàn)橥ǖ?上的最 后一個命令的標(biāo)記值為5。因?yàn)橥ǖ?具有兩個命令,所以標(biāo)記線510的計(jì)數(shù)540是2。用 于構(gòu)造標(biāo)記線510的示例性偽代碼包括typedef struct {mtUQ_CMD_ENTRY*pHead ;mtUQ_CMID_ENTRY*pTail ;mUINT_16 count ;} mtNvCmdTag ;用于構(gòu)造標(biāo)記線的陣列的示例性偽代碼包括typedef struct {mtNvCmdTag nvCmdTagLines[16];mUINT_32 totalBlock ;mUINT_16 numEntries ;mUINT_16 nextTag ;ImtNvCmdReqPool,從本公開和從這里的教導(dǎo)中,本領(lǐng)域的普通技術(shù)人員應(yīng)認(rèn)識到,其它代碼也可用 于構(gòu)造標(biāo)記線的陣列或單獨(dú)的標(biāo)記線。圖8示出隊(duì)列200中的命令如何鏈接在一起。通道2與命令1和5相關(guān)。隊(duì)列 200具有彎曲箭頭。彎曲箭頭將命令1和5鏈接在一起。彎曲箭頭表示隊(duì)列200中的命令 之間的關(guān)系。隊(duì)列200幫助解釋命令中的指針。對于命令1,上一個指針是、,而下一個指 針是*5。因?yàn)槊?是為通道2列出的第一個命令,所以沒有上一個指針,且示出空白的字 段、。因?yàn)槊?跟隨命令1,所以下一個指針是*5?!?5”指示命令5跟隨命令1。命令5 包括上一個指針,和下一個指針、,這是因?yàn)槊?跟隨命令1,且沒有命令跟隨通道2中 的命令5。智能打包允許一次執(zhí)行多于一個的命令。命令打包出現(xiàn)在傳遞中。下面是圖8中 的示例性的命令打包傳遞。命令0與通道0相關(guān)。命令0是3個塊長。因?yàn)槊?是三個 塊長,所以通道0、1和2被占用。通道3跟隨通道2。通道3被檢查,且沒有命令使用通道 3。因此,通道3被跳過。通道4跟隨通道3。通道4與命令2相關(guān)。命令2是1個塊長。 因?yàn)橥ǖ?未被使用,所以命令0和2被關(guān)聯(lián)在一起,以形成命令包。遵循上面的模式,命 令3、10、11和9被添加到命令包。命令9是2個塊長。命令9占用通道13,所以通道13不 能用于在該命令包中的命令8。命令14也被添加到命令包。在該命令包中使用十個通道。 使用十個通道比傳統(tǒng)操作中僅使用三個通道更有效,傳統(tǒng)操作中命令0可被單獨(dú)發(fā)送。命 令打包便于同時以不同的命令使用多個通道。圖9示出隊(duì)列200中的命令如何根據(jù)打包重新鏈接在一起。如圖8所示,在隊(duì)列200中,命令2與命令6鏈接,而如圖9所示,在隊(duì)列200中,命令2與命令0和命令3鏈接。鏈接發(fā)生變化,所以關(guān)系是基于命令包而不是通道的。圖8進(jìn)一步示出命令包710中的命 令之間的關(guān)系700。在一個實(shí)施方式中,命令打包持續(xù)到所有的命令被執(zhí)行為止。在一個示 例中,三個命令包被形成并被執(zhí)行,以傳遞保持在隊(duì)列200中的18個命令。相比發(fā)生18個 命令執(zhí)行實(shí)例,命令打包可提供更快的響應(yīng)。因此,方法1000和/或裝置1200執(zhí)行的命令 打包提高了性能。圖10示出在執(zhí)行了圖8所述的命令包之后的標(biāo)記線。標(biāo)記線800不同于圖7中 的標(biāo)記線500。因?yàn)槊钤谕ǖ?上被執(zhí)行,所以一個命令(命令4)保留。標(biāo)記線800的 頭部和尾部都是4,因?yàn)榈谝粋€命令和最后一個命令都是命令4。因?yàn)閷νǖ?有一個命令, 所以標(biāo)記線800的計(jì)數(shù)現(xiàn)在是1。在圖8所述的命令打包傳遞中不執(zhí)行來自通道2的命令。 由于沒有執(zhí)行來自通道2的命令,所以標(biāo)記線810與圖7的標(biāo)記線510相比未發(fā)生改變。圖11示出在第二命令打包傳遞發(fā)生和第二命令包被執(zhí)行之后的標(biāo)記線。通道0 不再有標(biāo)記線,因?yàn)橥ǖ?上的全部命令都被執(zhí)行了。在與圖10中的標(biāo)記線810的情況類 似的情況下,通道2上的標(biāo)記線910改變。在另一命令打包和命令包執(zhí)行之后,不再留有命 令。因此,18個命令通過執(zhí)行三個命令包而被執(zhí)行。至于術(shù)語“包括(includes),,或“包括(including),,在詳細(xì)描述或權(quán)利要求中使 用的程度,它被規(guī)定為包括在內(nèi)的,類似于術(shù)語“包含comprising”當(dāng)被用作權(quán)利要求中的 過渡詞時所作出的解釋。雖然通過描述示例來示出示例性系統(tǒng)、方法等,且雖然示例以相當(dāng)大的細(xì)節(jié)被描 述,但是申請人的意圖不是將所附權(quán)利要求的范圍限制或以任何方式限制到這樣的細(xì)節(jié)。 當(dāng)然,不可能為了描述這里所述的系統(tǒng)、方法等的目的來描述部件或方法的每個可以想到 的組合。因此,本發(fā)明不限于所示和所述的特定細(xì)節(jié)、代表性裝置和例證性示例。因此,本 申請旨在包括落在所附權(quán)利要求的范圍內(nèi)的變更、修改和變化。
權(quán)利要求
一種方法,包括將第一命令和第二命令分組到命令包中,其中所述第一命令和所述第二命令不共享公共通道來執(zhí)行;以及控制固態(tài)驅(qū)動器以在所述固態(tài)驅(qū)動器上執(zhí)行所述命令包,其中執(zhí)行所述命令包使所述第一命令和所述第二命令同時在分離的通道上執(zhí)行。
2.如權(quán)利要求1所述的方法,包括通過最小化用于執(zhí)行命令集的命令包的數(shù)量來將命令分組到所述命令包中,其中所述 第一命令和所述第二命令是命令集成員,且所述命令集是等待在所述固態(tài)驅(qū)動器上執(zhí)行的 一組命令。
3.如權(quán)利要求1所述的方法,包括當(dāng)確定了命令不是高優(yōu)先級命令時將所述命令分組到所述命令包中。
4.如權(quán)利要求3所述的方法,還包括當(dāng)確定了所述命令是高優(yōu)先級命令時不將所述命令分組到所述命令包中。
5.如權(quán)利要求1所述的方法,包括當(dāng)識別出與隊(duì)列相關(guān)的事件時,將所述第一命令和所述第二命令分組到所述命令包 中,其中隊(duì)列是被配置成存儲等待被執(zhí)行的命令的單獨(dú)的存儲單元。
6.如權(quán)利要求5所述的方法,其中所述與隊(duì)列相關(guān)的事件是以下事件中的至少一個 所述隊(duì)列達(dá)到閾值水平、所述隊(duì)列超過所述閾值水平、以及命令存在于所述隊(duì)列中達(dá)到預(yù) 定的閾值時間。
7.如權(quán)利要求1所述的方法,包括在確定命令大小不超過命令大小閾值時選擇性地將命令分組到所述命令包中。
8.一種裝置,包括數(shù)據(jù)存儲器,其被配置成存儲第一命令和第二命令,其中所述第一命令和所述第二命 令將在固態(tài)驅(qū)動器上執(zhí)行,且在所述固態(tài)驅(qū)動器上執(zhí)行命令將會消耗通道;組織邏輯,其被配置成在確定所述第一命令和所述第二命令不共享公共通道來執(zhí)行時 將所述第一命令和所述第二命令安排到命令包中;以及功能邏輯,其被配置成控制將在所述固態(tài)驅(qū)動器上執(zhí)行的所述命令包,其中所述第一 命令和所述第二命令將被同時執(zhí)行。
9.如權(quán)利要求8所述的裝置,其中所述組織邏輯和所述功能邏輯以集成電路實(shí)現(xiàn)。
10.如權(quán)利要求8所述的裝置,其中所述組織邏輯被配置成在確定命令不是高優(yōu)先級 命令時將所述命令分組到所述命令包中。
11.如權(quán)利要求10所述的裝置,其中所述組織邏輯配置成在確定所述命令是高優(yōu)先級 命令時不將所述命令分組到所述命令包中,并使所述功能邏輯獨(dú)立于所述命令包而控制將 被執(zhí)行的所述命令。
12.如權(quán)利要求8所述的裝置,其中所述數(shù)據(jù)存儲器是隊(duì)列,且所述組織邏輯被配置成 當(dāng)識別出與隊(duì)列相關(guān)的事件時將所述第一命令和所述第二命令分組到所述命令包中。
13.如權(quán)利要求12所述的裝置,其中所述與隊(duì)列相關(guān)的事件是以下事件中的至少一 個所述隊(duì)列達(dá)到閾值水平、所述隊(duì)列超過所述閾值水平、以及命令存在于所述隊(duì)列中達(dá)到 預(yù)定的閾值時間。
14.如權(quán)利要求8所述的裝置,其中所述組織邏輯被配置成在確定命令大小超過閾值 時選擇性地將命令分組到所述命令包中。
15. 一種裝置,包括組織邏輯,其被配置成在確定第一命令和第二命令不共享公共通道來執(zhí)行時將所述第 一命令和所述第二命令安排到命令包中;管理邏輯,其被配置成產(chǎn)生所述第一命令和所述第二命令之間的關(guān)系,其中所述關(guān)系 指示所述第一命令和所述第二命令是所述命令包的部分;以及功能邏輯,其被配置成使所述命令包在固態(tài)驅(qū)動器上同時執(zhí)行所述第一命令和所述第 二命令。
16.如權(quán)利要求15所述的裝置,其中所述組織邏輯被配置成基于最小化用于執(zhí)行命令 集的命令包的數(shù)量來將命令分組到所述命令包中,其中所述第一命令和所述第二命令是命 令集成員,且所述命令集是等待在所述固態(tài)驅(qū)動器上執(zhí)行的一組命令。
17.如權(quán)利要求15所述的裝置,其中所述管理邏輯被配置成刪除所述第一命令和第三 命令之間的隊(duì)列關(guān)系,其中隊(duì)列是被配置成儲存等待被執(zhí)行的命令的單獨(dú)的存儲單元。
18.如權(quán)利要求17所述的裝置,其中所述隊(duì)列關(guān)系指示所述第一命令和所述第三命令 使用所述公共通道。
19.如權(quán)利要求15所述的裝置,其中所述組織邏輯被配置成在將所述第一命令和所述 第二命令安排到所述命令包中之前部分地準(zhǔn)備所述第一命令和所述第二命令,其中命令準(zhǔn) 備包括對命令進(jìn)行調(diào)整以在所述通道上執(zhí)行。
20.如權(quán)利要求19所述的裝置,其中將所述第一命令和所述第二命令安排到所述命令 包中完成所述命令準(zhǔn)備。
全文摘要
本發(fā)明公開了固態(tài)驅(qū)動器命令分組。描述了一種與固態(tài)驅(qū)動器命令分組相關(guān)的方法和其它實(shí)施方式。在一個實(shí)施方式中,第一命令和第二命令被分組到命令包中,其中第一命令和第二命令不共享公共通道來執(zhí)行。固態(tài)驅(qū)動器被控制以在固態(tài)驅(qū)動器上執(zhí)行命令包,其中執(zhí)行命令包使第一命令和第二命令同時在分離的通道上執(zhí)行。
文檔編號G06F3/06GK101799744SQ20101011135
公開日2010年8月11日 申請日期2010年2月2日 優(yōu)先權(quán)日2009年2月2日
發(fā)明者佩里·瑙斯, 勞·恩古茵, 格沃羽赫·胡 申請人:馬維爾國際貿(mào)易有限公司