專(zhuān)利名稱(chēng):對(duì)商品盤(pán)驅(qū)動(dòng)器上的命令進(jìn)行優(yōu)先級(jí)排序的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)磁驅(qū)動(dòng)器上的命令進(jìn)行排序,更具體地說(shuō),涉及根據(jù)命令的優(yōu)先級(jí)和盤(pán)驅(qū)動(dòng)器的可用性來(lái)確定是否向該盤(pán)驅(qū)動(dòng)器發(fā)出該命令。
圖1是計(jì)算機(jī)系統(tǒng)100的方塊圖。它的主要部件是主機(jī)110、盤(pán)控制器115和盤(pán)驅(qū)動(dòng)器125。盤(pán)驅(qū)動(dòng)器125可以是市場(chǎng)上的現(xiàn)用(off-the-shelf)部件,有時(shí)稱(chēng)作商品盤(pán)驅(qū)動(dòng)器,它遵從小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議。
主計(jì)算機(jī)110對(duì)存儲(chǔ)在盤(pán)驅(qū)動(dòng)器125上的數(shù)據(jù)進(jìn)行操作。當(dāng)主計(jì)算機(jī)110希望讀數(shù)據(jù)時(shí),它向盤(pán)控制器115發(fā)出一個(gè)標(biāo)識(shí)該數(shù)據(jù)的讀命令。按順序,盤(pán)控制器115向盤(pán)驅(qū)動(dòng)器125發(fā)出一個(gè)讀命令。當(dāng)盤(pán)驅(qū)動(dòng)器125執(zhí)行這個(gè)讀命令時(shí),它把數(shù)據(jù)發(fā)送給盤(pán)控制器115,盤(pán)控制器115把數(shù)據(jù)傳送給主計(jì)算機(jī)110。對(duì)于主計(jì)算機(jī)110希望寫(xiě)數(shù)據(jù)的情況,它向盤(pán)控制器115發(fā)送一個(gè)寫(xiě)命令,并發(fā)送相關(guān)聯(lián)的數(shù)據(jù)。然后,盤(pán)控制器115向盤(pán)驅(qū)動(dòng)器125發(fā)出一個(gè)寫(xiě)命令。當(dāng)盤(pán)驅(qū)動(dòng)器125準(zhǔn)備好執(zhí)行寫(xiě)命令時(shí),它通知盤(pán)控制器115,盤(pán)控制器115向盤(pán)驅(qū)動(dòng)器125發(fā)送相關(guān)聯(lián)的數(shù)據(jù)。
盤(pán)控制器115包括一個(gè)處理器117和相關(guān)的存儲(chǔ)器118,用于執(zhí)行和與主機(jī)110及盤(pán)驅(qū)動(dòng)器125交換信息有關(guān)的過(guò)程。它還包括一個(gè)控制器命令隊(duì)列120,其中含有尚待向盤(pán)驅(qū)動(dòng)器125發(fā)出的命令。
盤(pán)驅(qū)動(dòng)器125也包括以處理器(未畫(huà)出)和相關(guān)存儲(chǔ)器128形式存在的某些本機(jī)智能部件,它包括盤(pán)驅(qū)動(dòng)器命令隊(duì)列130。盤(pán)驅(qū)動(dòng)器命令隊(duì)列包含已發(fā)送給盤(pán)驅(qū)動(dòng)器125但尚未被盤(pán)驅(qū)動(dòng)器125執(zhí)行的那些命令。
像計(jì)算機(jī)系統(tǒng)100那樣的系統(tǒng)的性能經(jīng)常利用響應(yīng)時(shí)間和吞吐量來(lái)評(píng)價(jià)。響應(yīng)時(shí)間,有時(shí)也稱(chēng)作等待時(shí)間(latency),是一命令被發(fā)出的時(shí)刻和它被執(zhí)行的時(shí)刻之間的時(shí)間間隔。短的響應(yīng)時(shí)間比長(zhǎng)的響應(yīng)時(shí)間更可取。吞吐量是在指定時(shí)間段內(nèi)由一系統(tǒng)處理的命令總數(shù)。較大的吞吐量比較小的吞吐量更可取。
盤(pán)控制器115和盤(pán)驅(qū)動(dòng)器125每個(gè)包括若干特性,以求減小響應(yīng)時(shí)間和增大吞吐量。這些特性包括給予命令以?xún)?yōu)先級(jí)并對(duì)控制器命令隊(duì)列120和盤(pán)控制器命令隊(duì)列130上的命令進(jìn)行組織。
盤(pán)控制器115給將發(fā)送到盤(pán)驅(qū)動(dòng)器125的命令賦予一個(gè)優(yōu)先級(jí)。最重要的命令被賦予最高優(yōu)先級(jí)。有三個(gè)優(yōu)先級(jí)與本討論相關(guān),它們是立即級(jí)(demand stage)、前置級(jí)(prestage)和分離級(jí)(destage)。
立即級(jí)優(yōu)先級(jí)是最高優(yōu)先級(jí)。它與主計(jì)算機(jī)110希望讀數(shù)據(jù)的命令相關(guān)聯(lián)。一般而言,當(dāng)主計(jì)算機(jī)向盤(pán)控制器115發(fā)出讀命令時(shí),主計(jì)算機(jī)110對(duì)該數(shù)據(jù)有立即的需要。因此,當(dāng)盤(pán)控制器115收到來(lái)自主計(jì)算機(jī)110的讀命令時(shí),它給該讀命令賦予立即級(jí)優(yōu)先級(jí)。
前置級(jí)優(yōu)先級(jí)是次最高優(yōu)先級(jí)。它被賦予由盤(pán)控制器115發(fā)起的讀命令,而不是由主計(jì)算機(jī)110發(fā)起的讀命令。盤(pán)控制器115評(píng)估從主計(jì)算機(jī)110收到的命令的近期歷史,并試圖預(yù)測(cè)主計(jì)算機(jī)將發(fā)出的下一個(gè)命令。例如,當(dāng)主計(jì)算機(jī)已發(fā)出了讀兩個(gè)相鄰數(shù)據(jù)塊的讀命令的情況下,盤(pán)控制器115可以預(yù)測(cè)來(lái)自主計(jì)算機(jī)110的下一個(gè)命令將是讀第三個(gè)相鄰數(shù)據(jù)塊的讀命令。在預(yù)期這一命令時(shí),盤(pán)控制器115向盤(pán)驅(qū)動(dòng)器125發(fā)出一個(gè)讀這第三相鄰數(shù)據(jù)塊的命令。在預(yù)期一個(gè)來(lái)自主計(jì)算機(jī)110的讀命令時(shí)由盤(pán)控制器做出的這樣一個(gè)讀命令被賦予前置級(jí)優(yōu)先級(jí)。
分離級(jí)優(yōu)先級(jí)低于前置級(jí)優(yōu)先級(jí)。盤(pán)控制器115賦予寫(xiě)命令分離級(jí)優(yōu)先級(jí),它希望以此命令向盤(pán)驅(qū)動(dòng)器125寫(xiě)數(shù)據(jù)。當(dāng)主計(jì)算機(jī)110向一存儲(chǔ)裝置寫(xiě)數(shù)據(jù)時(shí),通常它已結(jié)束了對(duì)數(shù)據(jù)的處理,至少對(duì)短時(shí)間是如此。主計(jì)算機(jī)110把數(shù)據(jù)傳送到盤(pán)控制器115,然后轉(zhuǎn)向其他任務(wù)。主計(jì)算機(jī)110不等待盤(pán)控制器115把數(shù)據(jù)實(shí)際寫(xiě)入盤(pán)驅(qū)動(dòng)器125,所以不急于讓盤(pán)驅(qū)動(dòng)器125立即執(zhí)行寫(xiě)命令。
盤(pán)控制器115按優(yōu)先級(jí)順序組織控制器命令隊(duì)列120中的命令。就是說(shuō),具有最高優(yōu)先級(jí)的命令放在控制器命令隊(duì)列120的前面,而具有最低優(yōu)先級(jí)的命令放在控制器命令隊(duì)列120的末尾。具有相同優(yōu)先級(jí)的命令按照它們已在隊(duì)列中的時(shí)間量排序。就是說(shuō),命令按照優(yōu)先級(jí)和年齡排序。在控制器命令隊(duì)列120前面的命令是盤(pán)控制器115希望發(fā)給盤(pán)驅(qū)動(dòng)器125的下一個(gè)命令。對(duì)控制器命令隊(duì)列120中命令的這種組織是要使最高優(yōu)先級(jí)的命令的響應(yīng)時(shí)間達(dá)到極小。
盤(pán)控制器115能把命令從前置級(jí)優(yōu)先級(jí)提升到立即級(jí)優(yōu)先級(jí)。當(dāng)這樣的一個(gè)命令被提升為立即級(jí)時(shí),該命令被放到立即級(jí)優(yōu)先級(jí)的其他命令當(dāng)中,并進(jìn)一步按命令的年齡排序。當(dāng)一命令被提升時(shí),如果必要的話(huà),盤(pán)控制器115將對(duì)控制器命令隊(duì)列120重新排序。請(qǐng)注意,分離級(jí)優(yōu)先級(jí)的命令沒(méi)有資格提升。
盤(pán)控制器115還利用一個(gè)老化(aging)算法,它在一個(gè)預(yù)先確定的時(shí)間段之后使控制器命令隊(duì)列120中的所有命令的優(yōu)選級(jí)進(jìn)級(jí)。更具體地說(shuō),在已經(jīng)過(guò)了一個(gè)預(yù)先確定的時(shí)間之后,在控制器命令隊(duì)列120中的所有命令都被進(jìn)級(jí)到一個(gè)較高的優(yōu)先級(jí)。老化算法是要防止新命令有較高優(yōu)先級(jí)的情況下一個(gè)低優(yōu)先級(jí)命令處于饑餓狀態(tài),即不被服務(wù)的狀態(tài)。請(qǐng)注意,老化算法應(yīng)用于所有命令,不管其優(yōu)先級(jí)如何,但它不對(duì)命令隊(duì)列120重新排序。
盤(pán)驅(qū)動(dòng)器125把尚待執(zhí)行的命令保持在盤(pán)驅(qū)動(dòng)器命令隊(duì)列120中。盤(pán)驅(qū)動(dòng)器125能以?xún)煞N方式中的任何一種操作,即“按順序”方式和重新排序方式。在按順序方式期間,盤(pán)驅(qū)動(dòng)器125把命令放到盤(pán)驅(qū)動(dòng)器命令隊(duì)列130中,并按它們從盤(pán)控制器115接收的順序來(lái)執(zhí)行這些。在重新排序方式,盤(pán)驅(qū)動(dòng)器125改變盤(pán)驅(qū)動(dòng)器命令隊(duì)列130中命令的順序,以使執(zhí)行相繼命令之間的尋道時(shí)間和轉(zhuǎn)動(dòng)延時(shí)最小,從而改進(jìn)吞吐量。
在重新排隊(duì)順序,隨著盤(pán)驅(qū)動(dòng)器命令隊(duì)列130中命令數(shù)的增加,盤(pán)驅(qū)動(dòng)器125變得更有效,因?yàn)楫?dāng)選擇下一個(gè)要執(zhí)行的命令時(shí),它可有更多的命令從中去選擇。所以吞吐量增大了。然而,隨著盤(pán)驅(qū)動(dòng)器命令隊(duì)列130中命令數(shù)的增加。,對(duì)于給定命令的可能最大等待時(shí)間也增大了。還有,請(qǐng)注意,盤(pán)驅(qū)動(dòng)器125不知道盤(pán)控制器115所用的優(yōu)先級(jí),結(jié)果,在重新排序方式下,它可能在一高優(yōu)先級(jí)命令之前執(zhí)行一個(gè)或多個(gè)低優(yōu)先級(jí)命令。
另一個(gè)特性,稱(chēng)作隊(duì)列頭選項(xiàng)(Head of Queue Option),允許盤(pán)控制器115堅(jiān)持把一個(gè)特定的命令放到盤(pán)驅(qū)動(dòng)器命令隊(duì)列130的頭部。當(dāng)盤(pán)控制器115發(fā)出一個(gè)命令并指定隊(duì)列頭選項(xiàng)時(shí),這一指定防止盤(pán)驅(qū)動(dòng)器125對(duì)盤(pán)驅(qū)動(dòng)器命令隊(duì)列130重新排序,而且所指定的指令將是由盤(pán)驅(qū)動(dòng)器125執(zhí)行的下一個(gè)指令。這一特性使所指定的命令等待時(shí)間最小,但犧牲了盤(pán)驅(qū)動(dòng)器的效率和增大了盤(pán)驅(qū)動(dòng)器命令隊(duì)列130中其他命令的等待時(shí)間。
當(dāng)幾個(gè)相繼命令以隊(duì)列頭選項(xiàng)方式發(fā)出,而且發(fā)出速度快于盤(pán)驅(qū)動(dòng)器125能執(zhí)行這些命令的速度時(shí),問(wèn)題便發(fā)生了。以隊(duì)列頭選項(xiàng)按順序C1、C2、C3發(fā)出的3個(gè)命令將按C3、C2、C1的順序執(zhí)行。最老的命令C1將是最后執(zhí)行的命令,不管它的優(yōu)先級(jí)如何。還有,因?yàn)殛?duì)列頭選項(xiàng),盤(pán)驅(qū)動(dòng)器不能對(duì)命令重新排序以改進(jìn)吞吐量。結(jié)果,在這種情況中,隊(duì)列頭選項(xiàng)不利地影響了命令C1的響應(yīng)時(shí)間和計(jì)算機(jī)系統(tǒng)100的總吞吐量。
一個(gè)理想的系統(tǒng)將使響應(yīng)時(shí)間最小而使吞吐量最大。下列專(zhuān)例代表了用于對(duì)付這一挑戰(zhàn)的一些先有技術(shù)。
美國(guó)專(zhuān)利4,425,615號(hào)提供了具有帶多盤(pán)命令隊(duì)列的高速緩存/盤(pán)子系統(tǒng)的層次存儲(chǔ)器系統(tǒng)。它描述的一個(gè)盤(pán)子系統(tǒng)包括多個(gè)盤(pán)驅(qū)動(dòng)器,那里為每個(gè)盤(pán)驅(qū)動(dòng)器提供一個(gè)命令隊(duì)列。對(duì)每個(gè)命令隊(duì)列賦予一個(gè)優(yōu)先級(jí)值和一個(gè)序列號(hào),從而當(dāng)對(duì)應(yīng)于該隊(duì)列的盤(pán)驅(qū)動(dòng)器變?yōu)榭臻e時(shí),隊(duì)列最高優(yōu)先級(jí)的命令號(hào)被執(zhí)行。
美國(guó)專(zhuān)利5,548,795號(hào)提供了在命令隊(duì)列重新排序過(guò)程中確定命令執(zhí)行依賴(lài)性的方法。這一發(fā)明描述的方法用于計(jì)算最小等待時(shí)間、在盤(pán)驅(qū)動(dòng)器命令隊(duì)列中保持依賴(lài)性信息和使用這一信息約束以時(shí)間上和計(jì)算上有效的方式對(duì)命令重新排序。
美國(guó)專(zhuān)利5,469,560號(hào)提供了在自動(dòng)存儲(chǔ)器庫(kù)中對(duì)待決讀請(qǐng)求賦予優(yōu)先級(jí)。它描述了一種信息處理系統(tǒng),該系統(tǒng)具有一種優(yōu)先級(jí)化的方法從一自動(dòng)存儲(chǔ)器庫(kù)中的盤(pán)中讀取對(duì)象,以使等待時(shí)間最小。
美國(guó)專(zhuān)利5,729,718號(hào)提供一個(gè)系統(tǒng)用于確定引導(dǎo)時(shí)間延遲作為頭切換、尋道和轉(zhuǎn)動(dòng)延遲的函數(shù)并利用嵌入的盤(pán)驅(qū)動(dòng)器控制器進(jìn)行命令隊(duì)列記錄。它描述一個(gè)系統(tǒng)用于記錄由盤(pán)驅(qū)動(dòng)器收到的命令。對(duì)于隊(duì)列中的命令,相對(duì)于一個(gè)現(xiàn)正執(zhí)行的命令計(jì)算出引導(dǎo)時(shí)間延遲。具有最小引導(dǎo)時(shí)間延遲的命令被選出并提升到隊(duì)列前面,在那里它將在這現(xiàn)正執(zhí)行的命令之后被執(zhí)行。
美國(guó)專(zhuān)利5,848,226號(hào)提供了數(shù)字印刷系統(tǒng)中通過(guò)緩沖存儲(chǔ)器進(jìn)行的優(yōu)先級(jí)化數(shù)據(jù)傳送。在一盤(pán)驅(qū)動(dòng)器內(nèi)的一個(gè)控制裝置給軟件實(shí)體的命令輸出賦予優(yōu)先級(jí)值并執(zhí)行具有最高優(yōu)先級(jí)的命令。
用于減小響應(yīng)時(shí)間或增大吞吐量的先有技術(shù)通常指向這樣一些方法,它們積極地對(duì)命令重新賦予優(yōu)先級(jí)或?qū)﹃?duì)列重新排序,以改善系統(tǒng)效率。通常,響應(yīng)時(shí)間的改善伴有對(duì)吞吐量的損害,反之亦然。還有,這些技術(shù)往往是復(fù)雜的,而且不一定與商品盤(pán)驅(qū)動(dòng)器相容。
因此,本發(fā)明的一個(gè)目的是提供一種盤(pán)控制器和方法用于確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出一個(gè)命令,它使高優(yōu)先級(jí)命令的響應(yīng)時(shí)間達(dá)到極小而又使所有命令的吞吐量達(dá)到極大。
本發(fā)明的另一目的是提供這樣的盤(pán)控制器和方法,它與商品盤(pán)驅(qū)動(dòng)器的操作相容。
在一個(gè)包括一盤(pán)控制器和一盤(pán)驅(qū)動(dòng)器的計(jì)算機(jī)系統(tǒng)中,盤(pán)控制器通過(guò)考慮一命令伴有的優(yōu)先級(jí)和盤(pán)驅(qū)動(dòng)器的可用性二者來(lái)確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出一個(gè)命令。
在最佳實(shí)施例中,盤(pán)控制器保持一個(gè)待完成命令計(jì)數(shù),即這些命令已向盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被盤(pán)驅(qū)動(dòng)器執(zhí)行。當(dāng)考慮是否向盤(pán)驅(qū)動(dòng)器發(fā)出一個(gè)命令時(shí),盤(pán)控制器首先確定該命令的優(yōu)先級(jí)。如果該命令優(yōu)先級(jí)是最高優(yōu)先級(jí),則只有當(dāng)待完成命令計(jì)數(shù)小于8時(shí)才發(fā)出該命令。如果該命令優(yōu)先級(jí)不是最高級(jí),則只有當(dāng)待完成命令計(jì)數(shù)小于2時(shí)才發(fā)出該命令。
通過(guò)在考慮高優(yōu)先級(jí)命令時(shí)使用第一閾值值,即8個(gè)待完成命令,而在考慮較低優(yōu)先級(jí)命令時(shí)使用第二閾值值,即2個(gè)待完成命令,盤(pán)控制器能容易地適應(yīng)這樣的需要,即對(duì)高優(yōu)先級(jí)命令使其響應(yīng)時(shí)間最小而又不會(huì)不利地影響盤(pán)驅(qū)動(dòng)器對(duì)所有命令的吞吐量。
圖1是根據(jù)先有技術(shù)的計(jì)算機(jī)系統(tǒng)方塊圖;圖2是特別適應(yīng)于實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)方塊圖;以及圖3是根據(jù)本發(fā)明用于確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出命令的過(guò)程的流程圖。
圖2是計(jì)算機(jī)系統(tǒng)200的方塊圖。其主要部件是主計(jì)算機(jī)210、盤(pán)控制器215和盤(pán)驅(qū)動(dòng)器225。這些部件的操作以及它們彼此的關(guān)系與上文圖1的內(nèi)容中所描述的類(lèi)似。
盤(pán)驅(qū)動(dòng)器225可以是市場(chǎng)上的現(xiàn)用部件,有時(shí)稱(chēng)作商品盤(pán)驅(qū)動(dòng)器,它遵從小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議。然而,本發(fā)明不限于SCSI協(xié)議,而是能應(yīng)用于根據(jù)執(zhí)行命令效率對(duì)命令重新排序的任何盤(pán)驅(qū)動(dòng)器。
盤(pán)驅(qū)動(dòng)器225包括一個(gè)處理器(未畫(huà)出)和相關(guān)的存儲(chǔ)器228,它包括一個(gè)盤(pán)驅(qū)動(dòng)器命令隊(duì)列230。盤(pán)驅(qū)動(dòng)器命令隊(duì)列230包含已發(fā)送給盤(pán)驅(qū)動(dòng)器225但尚未被盤(pán)驅(qū)動(dòng)器225執(zhí)行的那些命令。盤(pán)驅(qū)動(dòng)器225能對(duì)盤(pán)驅(qū)動(dòng)器命令隊(duì)列230中的命令重新排序。
盤(pán)控制器215包括處理器216和相關(guān)的存儲(chǔ)器217,用于執(zhí)行和與主計(jì)算機(jī)210及盤(pán)驅(qū)動(dòng)器225交換信息有關(guān)的過(guò)程??刂破髅铌?duì)列220包含尚待向盤(pán)驅(qū)動(dòng)器225發(fā)出的命令。盤(pán)控制器215還保持一個(gè)盤(pán)可用性值218,它指出盤(pán)驅(qū)動(dòng)器225的可用性。盤(pán)可用性值218可以是任何定量指示值,它代表盤(pán)驅(qū)動(dòng)器225的可用性,例如執(zhí)行待完成命令的估計(jì)時(shí)間或待完成命令個(gè)數(shù)。命令發(fā)出過(guò)程219確定是否向盤(pán)驅(qū)動(dòng)器225發(fā)出一個(gè)命令。
在最佳實(shí)施例中,盤(pán)可用性值218是一個(gè)待完成命令計(jì)數(shù)(OCC),即已向盤(pán)驅(qū)動(dòng)器225發(fā)出但尚未被盤(pán)驅(qū)動(dòng)器225執(zhí)行的命令計(jì)數(shù)。換言之,盤(pán)可用性值218指出盤(pán)驅(qū)動(dòng)器命令隊(duì)列230中的命令數(shù)。當(dāng)盤(pán)控制器215向盤(pán)驅(qū)動(dòng)器225發(fā)出一個(gè)命令時(shí),它使盤(pán)可用性值218中的待完成命令計(jì)數(shù)增1。當(dāng)盤(pán)驅(qū)動(dòng)器225執(zhí)行一個(gè)命令時(shí),盤(pán)控制器215使盤(pán)可用性值218中的待完成命令計(jì)數(shù)減1。
盤(pán)控制器215把一優(yōu)先級(jí)賦予它將發(fā)送給盤(pán)驅(qū)動(dòng)器225的每個(gè)命令。如前面在圖1的內(nèi)容中討論的那樣,立即級(jí)是最高優(yōu)先級(jí)。在該最佳實(shí)施例中,一個(gè)命令的優(yōu)先級(jí)可以是在立即級(jí),或可在一較低優(yōu)先級(jí)。較低優(yōu)先級(jí)彼此不再區(qū)分。就是說(shuō),一個(gè)命令優(yōu)先級(jí)或者是在立即級(jí),或者不在立即級(jí)。然而,在一般情況下,本發(fā)明能操作于任何數(shù)量的優(yōu)先級(jí)。
當(dāng)考慮是否向盤(pán)驅(qū)動(dòng)器225發(fā)出一個(gè)命令時(shí),命令發(fā)出過(guò)程219首先確定該命令的優(yōu)先級(jí)。如果該命令的優(yōu)先級(jí)是處于立即處,則只有當(dāng)待完成命令計(jì)數(shù)小于8時(shí)才發(fā)送該命令。如果該命令的優(yōu)先級(jí)不是處在立即級(jí),則只有當(dāng)待完成命令計(jì)數(shù)小于2時(shí)才發(fā)送該命令。
當(dāng)計(jì)算機(jī)系統(tǒng)足夠忙以至積累了8個(gè)立即級(jí)命令時(shí),當(dāng)8個(gè)較低優(yōu)先級(jí)命令已因老化而被提升到立即級(jí)時(shí),或當(dāng)這兩種情況的組合時(shí),這一算法允許多達(dá)8個(gè)命令被排隊(duì)到盤(pán)驅(qū)動(dòng)命令隊(duì)列230中。如果計(jì)算機(jī)系統(tǒng)200在輕工作負(fù)擔(dān)情況下操作,則一立即級(jí)命令將待待到不落后于2個(gè)以上先前發(fā)出的命令。這一方案給予立即級(jí)命令以?xún)?yōu)先的處置,從而使它們的響應(yīng)時(shí)間達(dá)到極小值,而它又允許對(duì)盤(pán)驅(qū)動(dòng)器命令隊(duì)列230中的命令重新排序,從而使吞吐量達(dá)到極大。
圖3是命令發(fā)出過(guò)程219的流程圖。當(dāng)盤(pán)控制器必須決定是否向盤(pán)驅(qū)動(dòng)器225發(fā)出一個(gè)命令時(shí),命令發(fā)出過(guò)程219便被調(diào)用。這將發(fā)生在從主計(jì)算機(jī)110收到一個(gè)新命令時(shí),先前發(fā)出的一個(gè)命令已被盤(pán)驅(qū)動(dòng)器125完成時(shí),或一個(gè)命令已被提升為較高優(yōu)先級(jí)時(shí),所考慮的命令是在控制器命令隊(duì)列220前面的命令。
如前面提到的那樣,盤(pán)可用性218指出盤(pán)驅(qū)動(dòng)器225的一種可用性,而在該最佳實(shí)施例中它保持一個(gè)待完成命令計(jì)數(shù)。如圖3所示,命令發(fā)出過(guò)程219對(duì)待完成命令計(jì)數(shù)(OCC)305進(jìn)行評(píng)估。
在步驟310,該過(guò)程以確定所考慮的命令是否為立即級(jí)優(yōu)先級(jí)開(kāi)始。如果該優(yōu)先級(jí)是處在立即級(jí),則過(guò)程前進(jìn)到步驟315。如果優(yōu)先級(jí)不是處在立即級(jí),則過(guò)程前進(jìn)到325。請(qǐng)注意,在這一實(shí)施例中,立即級(jí)是一個(gè)閾值優(yōu)先級(jí),不需要考慮優(yōu)先級(jí)大于立即級(jí)的情況。因?yàn)榱⒓醇?jí)是最高可能優(yōu)先級(jí)。然而,在一般情況中,閾值優(yōu)先級(jí)不需要是最高優(yōu)先級(jí),于是該過(guò)程將確定該命令優(yōu)先級(jí)是否大于或等于該閾值優(yōu)先級(jí)。
在步驟315,該過(guò)程確定待完成命令計(jì)數(shù)305是否小于第一閾值計(jì)數(shù)8。換言之,它確定盤(pán)驅(qū)動(dòng)器命令隊(duì)列230包含的待完成命令數(shù)是否少于8。如果待完成命令計(jì)數(shù)小于8,則過(guò)程前進(jìn)到步驟320。如果待完成命令計(jì)數(shù)不小于8,則過(guò)程前進(jìn)到步驟335。
在步驟320,該過(guò)程向盤(pán)驅(qū)動(dòng)器225發(fā)出所考慮的命令。然后,過(guò)程前進(jìn)到步驟335。
在步驟325,該過(guò)程確定待完成命令計(jì)數(shù)305是否小于第二閾值計(jì)數(shù)2。換言之,它確定盤(pán)驅(qū)動(dòng)器命令隊(duì)列230包含的待完成命令數(shù)是否少于2。如果待完成命令計(jì)數(shù)小于2,則過(guò)程前進(jìn)到步驟330。如果待完成命令計(jì)數(shù)不小于2,則過(guò)程前進(jìn)到步驟335。
在步驟330,該過(guò)程向盤(pán)驅(qū)動(dòng)器225發(fā)出所考慮的命令。然后,過(guò)程前進(jìn)到步驟335。
在步驟335,該過(guò)程終止。
請(qǐng)注意,命令發(fā)出過(guò)程220并不使用先前討論過(guò)的隊(duì)列頭選項(xiàng)。盤(pán)驅(qū)動(dòng)器225能工作在重新排序方式并對(duì)盤(pán)驅(qū)動(dòng)器命令隊(duì)列230中的命令重新排序。這允許盤(pán)驅(qū)動(dòng)器230使其吞吐量最優(yōu)化,使其達(dá)到在重新排序方式下所能達(dá)到的程度。
盡管本發(fā)明這里所需執(zhí)行的過(guò)程被指明為已經(jīng)加載到盤(pán)控制器215的存儲(chǔ)器217中,但它們可能被配置在一存儲(chǔ)器介質(zhì)上,如圖2中所示數(shù)據(jù)存儲(chǔ)器250,使其后加載到存儲(chǔ)器217中。
應(yīng)該理解,上面的描述只是對(duì)本發(fā)明的說(shuō)明。本領(lǐng)域技術(shù)人員可以設(shè)計(jì)出各種變體或修改而不離開(kāi)本發(fā)明。例如,該過(guò)程不一定必須限于兩個(gè)優(yōu)先級(jí)或兩個(gè)盤(pán)可用性閾值。多優(yōu)先級(jí)和多閾值能被考慮。其次,盤(pán)控制器不需要是圖2中盤(pán)控制器215所代表的獨(dú)立部件,而是可以嵌入到另一裝置中,如主計(jì)算機(jī)210中。再有,本發(fā)明不限于只有一個(gè)盤(pán)驅(qū)動(dòng)器的計(jì)算機(jī)系統(tǒng)。在具有多個(gè)盤(pán)驅(qū)動(dòng)器的系統(tǒng)中,盤(pán)控制器215為這多個(gè)盤(pán)驅(qū)動(dòng)器的每一個(gè)維持一個(gè)控制器命令隊(duì)列220和一個(gè)盤(pán)可用性218。因此,本發(fā)明想要包括落入所附權(quán)利要求范圍內(nèi)的所有這些替換、修正和變化。
權(quán)利要求
1.確定是否從盤(pán)控制器向盤(pán)驅(qū)動(dòng)器發(fā)出命令的方法,所述盤(pán)控制器保持一個(gè)盤(pán)可用性值定量地代表所述盤(pán)驅(qū)動(dòng)器的可用性,所述命令伴有一個(gè)優(yōu)先級(jí),所述盤(pán)控制器完成如下步驟(A)確定所述優(yōu)先級(jí)是否大于或等于一個(gè)閾值優(yōu)先級(jí);(B)當(dāng)步驟A確定所述優(yōu)先級(jí)是大于或等于所述閾值優(yōu)選級(jí)時(shí),確定所述盤(pán)可用性值是否小于第一閾值值;(C)當(dāng)步驟A確定所述優(yōu)先不是大于或等于所述閾值優(yōu)先級(jí)時(shí),確定所述盤(pán)可用性值是否小于第二閾值值;(D)當(dāng)或者步驟B確定所述盤(pán)可用性值小于所述第一閾值值時(shí),或者步驟C確定所述盤(pán)可用性值小于所述第二閾值值時(shí),向所述盤(pán)驅(qū)動(dòng)器發(fā)出所述命令。
2.權(quán)利要求1中敘述的方法,其中所述盤(pán)驅(qū)動(dòng)器包括一個(gè)盤(pán)隊(duì)列,該盤(pán)隊(duì)列包含已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的待完成命令。
3.權(quán)利要求2中敘述的方法,其中所述盤(pán)驅(qū)動(dòng)器能對(duì)所述盤(pán)隊(duì)列中的所述待完成命令重新排序。
4.權(quán)利要求1中敘述的方法,其中所述盤(pán)可用性值是已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的那些待完成命令的計(jì)數(shù)。
5.權(quán)利要求4中敘述的方法,其中當(dāng)所述命令被發(fā)給所述盤(pán)驅(qū)動(dòng)器時(shí)所述待完成命令計(jì)數(shù)增1,而當(dāng)所述命令被所述盤(pán)驅(qū)動(dòng)器執(zhí)行時(shí)該計(jì)數(shù)減1。
6.權(quán)利要求1中敘述的方法,其中所述優(yōu)先級(jí)是多個(gè)優(yōu)先級(jí)之一。
7.權(quán)利要求1中敘述的方法,其中所述控制器包括一個(gè)含有未發(fā)出命令的隊(duì)列。
8.確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出命令的盤(pán)控制器,所述命令伴有一個(gè)優(yōu)先級(jí),所述盤(pán)控制器包含(A)盤(pán)可用性指示器,用于保持一個(gè)盤(pán)可用性值,該值定量地代表所述盤(pán)驅(qū)動(dòng)器的可用性;(B)第一比較器,用于確定所述優(yōu)先級(jí)是否大于或等于一閾值優(yōu)先級(jí);(C)第二比較器,用于當(dāng)所述第一比較器確定所述優(yōu)先級(jí)是大于或等于所述閾值優(yōu)先級(jí)時(shí)確定所述盤(pán)可用性值是否小于第一閾值值;(D)第三比較器,用于當(dāng)所述第一比較器確定所述優(yōu)先級(jí)不是大于或等于所述閾值優(yōu)先級(jí)時(shí)確定所述盤(pán)可用性值是否小于第二閾值值;以及(E)命令發(fā)出器,用于當(dāng)或者所述第二比較器確定所述盤(pán)可用性值小于所述第一閾值值,或者所述第三比較器確定所述盤(pán)可用性值小于所述第二閾值值時(shí),向所述盤(pán)驅(qū)動(dòng)器發(fā)出所述命令。
9.權(quán)利要求8中敘述的盤(pán)控制器,其中所述盤(pán)驅(qū)動(dòng)器包括一個(gè)盤(pán)隊(duì)列,該隊(duì)列中含有已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的命令。
10.權(quán)利要求9中敘述的盤(pán)控制器,其中所述盤(pán)驅(qū)動(dòng)器能對(duì)所述盤(pán)隊(duì)列中的所述待完成命令重新排序。
11.權(quán)利要求8中敘述的盤(pán)控制器,其中所述盤(pán)可用性值是已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的那些待完成命令的計(jì)數(shù)。
12.權(quán)利要求11中敘述的盤(pán)控制器,其中當(dāng)所述命令被發(fā)給所述盤(pán)驅(qū)動(dòng)器時(shí)所述盤(pán)可用性指示器使所述待完成命令計(jì)數(shù)增1,而當(dāng)所述命令被所述盤(pán)驅(qū)動(dòng)器執(zhí)行時(shí)該計(jì)數(shù)器減1。
13.權(quán)利要求8中敘述的盤(pán)控制器,其中所述優(yōu)先級(jí)是多個(gè)優(yōu)先級(jí)之一。
14.權(quán)利要求8中敘述的盤(pán)控制器,還包含一個(gè)含有未發(fā)出命令的隊(duì)列。
15.一個(gè)存儲(chǔ)器介質(zhì),它存儲(chǔ)盤(pán)控制器所用的程序,該盤(pán)控制器確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出命令,所述盤(pán)控制器保持一個(gè)盤(pán)可用性值,該值定量地代表所述盤(pán)驅(qū)動(dòng)器的可用性,所述命令伴有一個(gè)優(yōu)先級(jí),所述存儲(chǔ)器介質(zhì)包含(A)控制所述盤(pán)控制器的手段,用于確定所述優(yōu)先級(jí)是否大于或等于閾值優(yōu)先級(jí);(B)控制所述盤(pán)控制器的手段,用于在手段A確定所述優(yōu)先級(jí)是大于或等于所述閾值優(yōu)先級(jí)時(shí)確定所述盤(pán)可用性值是否小于第一閾值值;(C)控制所述盤(pán)控制器的手段,用于在手段A確定所述優(yōu)先級(jí)不是大于或等于所述閾值優(yōu)先級(jí)時(shí)確定所述盤(pán)可用性值是否小于第二閾值值;以及(D)控制所述盤(pán)控制器的手段,用于當(dāng)或者手段B確定所述盤(pán)可用性值小于所述第一閾值值,或者手段C確定所述盤(pán)可用性值小于所述第二閾值值時(shí),向所述盤(pán)驅(qū)動(dòng)器發(fā)出所述命令。
16.權(quán)利要求15中敘述的存儲(chǔ)器介質(zhì),其中所述盤(pán)驅(qū)動(dòng)器包括一盤(pán)隊(duì)列,該隊(duì)列包含已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的那些待完成命令。
17.權(quán)利要求16中敘述的存儲(chǔ)器介質(zhì),其中所述盤(pán)驅(qū)動(dòng)器能對(duì)所述盤(pán)隊(duì)列中的待完成命令重新排序。
18.權(quán)利要求15中敘述的存儲(chǔ)器介質(zhì),其中所述盤(pán)可用性值是已向所述盤(pán)驅(qū)動(dòng)器發(fā)出但尚未被所述盤(pán)驅(qū)動(dòng)器執(zhí)行的那些待完成命令的計(jì)數(shù)。
19.權(quán)利要求18中敘述的存儲(chǔ)器介質(zhì),還包含控制所述盤(pán)控制器的手段,用于當(dāng)所述命令被發(fā)出給所述盤(pán)驅(qū)動(dòng)器時(shí)使所述待完成命令計(jì)數(shù)增1,當(dāng)所述命令被所述盤(pán)驅(qū)動(dòng)器執(zhí)行時(shí)使所述待完成命令計(jì)數(shù)減1。
20.權(quán)利要求15中敘述的存儲(chǔ)器介質(zhì),其中所述優(yōu)先級(jí)是多個(gè)優(yōu)先級(jí)之一。
21.權(quán)利要求15中敘述的存儲(chǔ)器介質(zhì),其中所述盤(pán)控制器包括一個(gè)含有未發(fā)出命令的隊(duì)列。
全文摘要
在一個(gè)包括盤(pán)控制器和盤(pán)驅(qū)動(dòng)器的計(jì)算機(jī)系統(tǒng)中,盤(pán)控制器通過(guò)考慮命令伴有的優(yōu)先級(jí)和盤(pán)控制器的可用性二者來(lái)確定是否向盤(pán)驅(qū)動(dòng)器發(fā)出一個(gè)命令。
文檔編號(hào)G06F3/06GK1282030SQ0012018
公開(kāi)日2001年1月31日 申請(qǐng)日期2000年7月20日 優(yōu)先權(quán)日1999年7月26日
發(fā)明者理查德·C·克里文格, 肯特·D·普勞西 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司