專利名稱:重排序命令和按原先的命令順序恢復數(shù)據(jù)的方法和裝置的制作方法
發(fā)明
背景技術:
領域本發(fā)明涉及處理對資源的命令的領域,特別是對資源的命令的處理順序的重新排列的系統(tǒng)和方法。
涉及的技術現(xiàn)代計算機系統(tǒng)包括許多的設備,這些設備為了訪問在計算機系統(tǒng)中的各種資源而通過一個或多個總線被連接。例如,計算機系統(tǒng)可能包括中央處理器(CPU),圖形系統(tǒng),和若干外圍設備,其中每一種都可以訪問一種資源,例如主存儲器。為了使等待時間最少,來自設備的起始對資源的訪問的命令必須盡可能高效率地被傳遞和完成。命令在資源和起始設備之間被傳遞的速度主要受制于介入的總線和在計算機系統(tǒng)中所采用的判優(yōu)方案。在資源上命令被執(zhí)行的速度則取決于該資源的性質以及,在許多情況中,取決于資源執(zhí)行來自起始設備的命令的順序。資源將命令執(zhí)行得越快,設備就能愈迅速地繼續(xù)它的操作并且資源就能夠更快地可被其它設備使用。
資源效率對于命令順序的依賴性可以參照存儲資源來理解,諸如隨機存取存儲器(“RAM”),硬盤和軟盤、光盤(CD)只讀存儲器,數(shù)字視盤(DVD)以及類似器件。這些存儲資源的每一種都是可尋址數(shù)據(jù)存儲單元的二維陣列、每個單元由兩個參數(shù)來指定,例如行/列,磁道/扇區(qū),頁/列,等等。傳送每個參數(shù)至存儲設備并且激活相關的行、列、道、區(qū)、頁等等,貢獻一個時間延遲或開銷給該存取。達到不更新兩個參數(shù)就能訪問存儲單元的范圍,以致對該資源的存取時間能夠被減少并且能使資源操作更為有效。分頁存儲器和其它存儲器的結構正是為作到這一點而設計的。例如以分頁方式操作的存儲器能夠訪問相同頁打開上的諸地址(列)的范圍而不招致與更新頁參數(shù)相聯(lián)系的延遲。
某些存儲資源例如DRAM,還用一個循環(huán)時間來表征,該循環(huán)時間表示為在存取之間對資源預充電所需的時間。循環(huán)時間限制了能夠對DRAM進行連續(xù)存取的速率,交叉存儲器被組成為DRAM組或存儲體以使循環(huán)時間引起的開銷最小化。相連的數(shù)據(jù)的塊被映射到不同的存儲體(交錯的),并且通過對不同存儲體的重疊訪問數(shù)據(jù)塊被檢索。這減小了每個DRAM循環(huán)時間對數(shù)據(jù)存取時間的影響并使得資源操作更有效率。
通過以適當?shù)膶ぶ贩桨复鎯?shù)據(jù)塊,分頁交叉,以及其它策略允許目標命中數(shù)據(jù)塊的命令被以減小的等待時間完成。然而,只有在相繼的對資源的命令碰巧存取那些符合由存儲器結構所規(guī)定的順序的數(shù)據(jù)時,這些益處才越過命令的限制。事實上,分頁,交叉,以及類似的策略增加了關于由給定命令所目標命中的數(shù)據(jù)的有效的資源操作,但是沒有提供任何將這些有效性擴展至多命令的機制。這種機制需要按資源的狀態(tài)重排序發(fā)給該資源的命令。
命令重排序已經(jīng)在幾種特殊情況中被實現(xiàn)。例如,有的處理器能重排指令以消除數(shù)據(jù)相關性和避免可歸因于無法利用的資源和流水線停機,然而,這種重排序發(fā)生在處理器內部且不牽涉利用在處理器之外的資源的效率。某些芯片增補了“緩寫”,即在完成一個對相同地址的寫之前,等待一個對地址的讀命中。但是,這是一個被動的方法,它沒有主動地重排序在命令流中的命令。
因此,需要一種系統(tǒng),能以許可資源更有效地工作并減少完成對資源的命令的等待時間的方式重排序對資源的命令。
發(fā)明概述本發(fā)明是用于為提高資源利用效率而重排序對資源命令的系統(tǒng)和方法。本發(fā)明適用于具有由完成資源操作的順序部份地決定的等待時間的資源。
按照本發(fā)明,起始設備發(fā)送命令給由效率準則表征的資源,效率準則被施加于命令,滿足該準則的命令被傳送給與處理有關的資源。
在本發(fā)明的一個實施例中,通過重排序邏輯將命令由起始設備連接至資源。重排邏輯包括兩個或更多個重排序槽,它們是通過命令選擇邏輯被連接到資源。由起始設備發(fā)送的命令被裝入重排序槽,命令選擇邏輯監(jiān)測反映該資源的有效操作的參數(shù)并根據(jù)所監(jiān)測的參數(shù)選擇發(fā)布給資源的命令。例如,在資源是分頁存儲器的場合,參數(shù)可以是當前打開的頁而準則可以是所選的命令命中在打開頁上的資源地址。
附圖的簡要說明本發(fā)明可以參照隨后的詳細說明和在這里所簡要說明的附圖來理解。
圖1是一個包含有按照本發(fā)明的命令重排序邏輯的計算機系統(tǒng)的方塊圖。
圖2A是圖1中的命令重排序邏輯的一個實施例的方塊圖。
圖2B是圖2A的命令邏輯選擇邏輯的方塊圖。
圖2C是圖1的命令重排序邏輯的實施例的方塊圖,在此例中一子集命令被重排序。
圖2D是圖1的命令重排序邏輯的實施例的方塊圖,適合于重排序寫命令。
圖3表示一個按照本發(fā)明的用于重排序對資源的命令的方法。
圖4A為表示用于重排序讀命令的圖3的方法的實施例的詳細流程圖。
圖4B為表示用于重排序寫命令的圖3的方法的實施例的詳細流程圖。
圖5A和5B是關于按照原先的命令順序返還在響應重排讀命令時所提供的數(shù)據(jù)的方法的流程圖。
發(fā)明的詳細說明本發(fā)明是關于重排序由起始設備發(fā)送給資源的命令的系統(tǒng)和方法。命令被重排的方式是使得資源被利用的效率為最高。本發(fā)明可以利用重排序邏輯在起始設備和資源之間耦合數(shù)據(jù)來實現(xiàn),且適用于那些滿足某種準則的資源和起始設備,具體講,合適的起始設備是那些流水線式輸送命令給資源的設備并且至少有一類的命令能夠在傳輸給資源之前被重排序。
合適的資源是那些能夠通過命令重排序更有效地進行操作的資源,例如DRAM,閃速存儲器,CDROM,DVD,硬盤和軟盤這樣的資源,它們可以通過重排序命令得以減少存儲器存取時間或消除在相繼命令之間的存儲器循環(huán)時間延遲從而更有效地操作。合適的效率準則可能包括目標地址的空間位置,命令的暫時位置或者目標地址的交錯位置。
空間位置準則的一個實施例通過選擇分頁存儲器的當前打開頁(行)上的目標位置即命令,例如資源的當前打開的地址范圍中的一個地址,來減小存儲器存取的開銷。暫時位置準則的實施例減少存儲器存取開銷是通過以群集的方式發(fā)布瞄向存儲器的一個局部的區(qū)域的命令,例如頁,行,或道。這允許命令群集能在頁、行、道緩沖區(qū)被刷新之前對相同的頁、行、道被處理。交錯位置準則的實施例選擇預測存儲體的交替的命令,這種交替發(fā)生在交叉存儲器中。這減少了可歸因于任何一個存儲體的循環(huán)時間的開銷。
這些效率準則傾向于是說明性的而非窮舉性的,本質上,任何以減小資源的訪問或操作開銷的方式選擇有關處理命令的準則都適合在本發(fā)明中的使用。在存儲器資源的情況下,命令目標命中那些能以減小的開銷被存取的地址是適合的準則。
在所揭示的實施例中,起始設備是一個圖形系統(tǒng)而資源是一個具有分頁存儲結構的存儲設備。在本討論中,“分頁存儲結構”意思是存儲器被設計成在一給定時間一些可得到的存儲子集可以以低于存儲的其余部分的等待時間被訪問。典型上,存儲器被分成為相等大小的頁,其中一頁(或者偶爾多頁)可以在任意給定時間被打開,剩余的頁是“關閉的”,訪問在這些頁上的地址要耗費附加的開銷。為方便起見,下面的討論提到打開頁應理解為本發(fā)明還包括這些可以同時打開一頁以上的資源,此外,舉例講,在分頁存儲器的當前打開頁內的,在交叉存儲器中被訪問的下一個存儲體中的,或者能夠以減小的開銷被訪問的相類似的資源特征中的資源地址被當作是打開地址。
注意,提供用作說明的是開放式分頁存儲器資源。例如,該資源可以是任意能夠通過命令重排序減少數(shù)據(jù)存取時間的存儲器件或者具有命令順序有關的等待時間的任意其它資源。
圖形系統(tǒng)有能力向存儲器設備以流水線方式傳送讀和寫請求,這些命令類型的任何一種都可以在指定的條件下被重排序。在本發(fā)明的一個實施例中,讀命令被考慮重排序,并且重排序試驗由存儲設備的分頁結構提供。正如上面所指出的,分頁存儲器在相繼的讀命令目標命中同一頁上的地址時有較少的等待時間。因此可以按照它們命中的地址和在存儲中當前打開的頁來重排命令。
首先參考圖1,畫出是包含本發(fā)明的重排序邏輯的計算機系統(tǒng)100的一個實施例的方框級圖。計算機系統(tǒng)100包括處理器110,存儲設備120,圖形系統(tǒng)130,以及包括重排序邏輯150的橋接器140。處理器110,存儲器設備120以及圖形系統(tǒng)130分別通過處理器總線112,存儲器總線122,以及互連線180被連接至橋接器140,圖1還畫出總線170(任選),用來將外圍設備(沒畫出)連接到計算機系統(tǒng)100。計算機系統(tǒng)100的配置只提供用作說明,不是為實現(xiàn)本發(fā)明所要求的。
在本發(fā)明的一個實施例中,互連接180是一個加速圖形端口(“A.G.P”)且I/Q總線170是一個輔助元件互連(“PCI”)總線,A.G.P被說明于,例如,由英特公司于1996年7月31日發(fā)表的加速圖形端口接口說明書(Accelerated Graphics Port InterfaceSpecification)修訂版1.0中。PCI被說明于,例如,由Shanley和Anderson所著的書<PCI System Architecture,Addison Wesley ReadingMassachusetts(1995)。
橋接器在處理器110,存儲設備120,圖形系統(tǒng)130,以及任意在總線170上的輔助設備之間發(fā)送數(shù)據(jù)和命令。在橋接器140中的重排序邏輯150接收從圖形系統(tǒng)130發(fā)往存儲設備120的命令并重排序這些命令以提高它們被存儲設備120處理的效率。對于讀命令,重排邏輯150還接收存儲設備在響應重排序的讀命令時所提供的數(shù)據(jù)并將所接收的數(shù)據(jù)發(fā)送給圖形系統(tǒng)130。在一個本發(fā)明的實施例中,重排序邏輯150返還響應數(shù)據(jù)給圖形系統(tǒng)130,其順序是由圖形系統(tǒng)130初起始送相應命令的順序(初始命令順序或者OCO)。
現(xiàn)在參考圖2A,該圖畫的是重排序邏輯150的方框圖,適用于重排序讀命令以及,在需要處,重存在響應重排序過的命令時所提供的OCO數(shù)據(jù),重排序邏輯150包括命令重排序邏輯210和響應重排序邏輯260。命令重排序邏輯210重排序由圖形系統(tǒng)130發(fā)送給存儲器120的命令,根據(jù)是效率準則。在一個本發(fā)明的實施例中,準則是基于由命令所命中的存儲器地址和存儲器120的當前打開頁。在此實施例中,命令重排序邏輯210根據(jù)存儲器120中存取的最新頁的指示挑選出命令以減小由于對存儲器120的訪問而產(chǎn)生的分頁數(shù)。例如,重排序邏輯210可以選擇一個用作發(fā)布的命令,其指定的存儲器地址與由存儲器120提供的打開頁指示相匹配,或者它可以選擇瞄向與發(fā)給存儲器120的最近的命令所命中的頁相同的頁的命令。在后一種情況下,命令重排序邏輯210不需要來自存儲器120的輸入。由重排序邏輯為提高資源操作的效率而產(chǎn)生的命令順序此后被稱為資源順序(RO)。
響應重排序邏輯260被引入的場合是起始設備必須以相同于起始設備發(fā)布相應的讀命令的順序接收讀響應數(shù)據(jù)。例如,在互連接180為A.G.P互連的場合,響應被期望返還給起始設備,其順序和起始設備發(fā)出的命令的順序相同。因此,響應重排序邏輯260重排序由存儲器120在響應從RO到OCO的重排序讀命令時所提供數(shù)據(jù)。
仍然參照圖2A,命令重排序邏輯210包括一個命令隊列220,它被通過重排序槽230和命令選擇邏輯240耦合至存儲器120。選通邏輯250被耦合至命令列220并與讀數(shù)據(jù)返回緩沖器(“RDRB”)270連接。從圖形系統(tǒng)130接收的命令被送進命令隊列220并且按照選通邏輯250所作的決定被轉送至重排序槽。在一個實施例中,命令被以先進先出的順序(FIFO)通過命令隊列移動到重排序槽。當命令到達命令隊列220的首部時,選通邏輯250決定條件是否允許繼續(xù)進一步地處理命令。并且在條件適合時轉送命令至重排槽230。例如,選通邏輯250可以為了寄存響應數(shù)據(jù)而阻止一個命令直到在RDRB270中有可用空間。對于寫命令重排序,選通邏輯250可以阻止一個寫命令直到待寫的數(shù)據(jù)在一個單獨的寫數(shù)據(jù)緩沖器(沒有畫出)中被接收。
為了避免死鎖,選通邏輯250檢驗在RDRB270中的存儲桶的可用性以提供在響應讀命令時所提供的數(shù)據(jù)。此處,“存儲桶”指的是存儲數(shù)據(jù)用的單元,而“存儲槽”指的是用來存儲命令的單元。選通邏輯250確定讀命令在請求的數(shù)據(jù)規(guī)模并且將請求的數(shù)據(jù)規(guī)模與在RDRB270中可用的存儲桶272相比較。當著在RDRB270中充足的存儲桶270可用時,讀命令被轉送至重排槽230以提供在讀命令中所請求的數(shù)據(jù)規(guī)模。
許多起始設備要求讀響應數(shù)據(jù)以相同于該設備發(fā)出對應的讀命令的順序,即OCO,返還,對于這些設備,在RDRB270中以OCO順序保留了用于讀響應數(shù)據(jù)的空間,保留單元以循環(huán)方式圍繞RDRB270卷纏。讀響應數(shù)據(jù)占據(jù)RDRB270的一個或多個存儲桶,取決于讀命令所請求的數(shù)據(jù)塊的規(guī)模。每個存儲桶272的可用性通過一個相關的有效數(shù)據(jù)位274被跟蹤。例如,當數(shù)據(jù)被裝進相關的槽272′中時有效數(shù)據(jù)位274′被置位而在數(shù)據(jù)從相關存儲槽272′卸載時則有效數(shù)據(jù)位274′被復位。選通邏輯250必須以允許命令重排序無死鎖地進行的方式分配存儲桶272。
在一個實施例中,選通邏輯250利用有效位274來決定為提供讀命令所請求的數(shù)據(jù)規(guī)模是否有足夠的連續(xù)的存儲桶272是可用的。在此實施例中,選通邏輯250保持指針對著第一個可用存儲桶272′,確定為提供所請求數(shù)據(jù)規(guī)模必需的存儲桶272的數(shù)目N,并且確定跟隨在首個存儲桶272′后的N-1個存儲桶272是否是可用的,也即相關的有效位274是否已經(jīng)復位。如果是,命令連同存儲桶272已經(jīng)為了讀響應被保留的指示一起被轉送至重排槽230。如果不,命令被留在命令隊列220中直到足夠的存儲桶272可用于響應數(shù)據(jù)。
選通邏輯的另外一個實施例使用一個計數(shù)器電路來跟蹤在系統(tǒng)中當前未處理的數(shù)據(jù)的量以及,從而,在RDRB270中可用的存儲桶272的數(shù)目。指針跟蹤首個可用的存儲桶272。讀命令所請求的數(shù)據(jù)規(guī)模與可利用的存儲桶272的數(shù)目相比較,以及讀命令是轉送至重排序槽230還是被阻止,取決于在RDRB270中是否有足夠的可用作響應的空間。
一旦選通邏輯250確定命令的轉送進程可以繼續(xù),也即在RDRB270中用于如讀命令所請求數(shù)據(jù)的空間是可利用的,命令被轉送至重排序槽230中之一。重排序槽230通過命令選擇邏輯240連接至存儲器120。命令選擇邏輯240監(jiān)視存儲器120最新被訪問的區(qū)域的標記。命令選擇邏輯240還監(jiān)測重排序槽230以確定哪些存儲地址被這些存儲槽中的讀命令所命中。按照一個效率準則,命令選擇邏輯240從重排序槽230中選擇一個命令,該命令瞄向存儲器120中的具有減少了的存取等待時間的地址,也即命令命中在分頁存儲器中的打開頁。
正如上面所指出的,當著此被命中的地址是在存儲器120中當前打開頁上時分頁存儲器120能夠更迅速地訪問一個命中的存儲器地址。訪問不同的頁產(chǎn)生分頁,這要花費更長的服務。命令選擇邏輯240的一個實施例檢驗存儲器120中當前打開頁的標記并確定在重排存儲槽230中是否有任何命令命中該頁。這個標記可以用各種各樣的方式提供。例如,命令選擇邏輯240可以從存儲器120接收一個關于它的當前打開頁的暗示。這種方法具有跟蹤起因于發(fā)自其他設備的命令的頁更換的優(yōu)點,另一方面,命令選擇邏輯240可以跟蹤在它所發(fā)出的最新命令中所指定的存儲單元。當著這種方法不計及由來自其它的設備的訪問所引起的頁更換時,實現(xiàn)比較簡單,另外一種可供選擇的方法是當在存儲器120中探測到分頁時,使得從命令選擇邏輯240所選擇的最新的命令所得到的標記無效。
當瞄向當前頁的命令出現(xiàn)在重排序槽230中時,命令選擇邏輯選擇此命令來發(fā)給存儲器120。如果多于一個的命令瞄向當前頁,命令選擇邏輯240可以應用第二準則在這些命令中作判別。在本發(fā)明的一個實施例中,命令選擇邏輯240選擇那個已在重排序槽中最長久的命令并將其送往存儲器120。其余的用來在指向打開的頁的命令之間進行選擇的可能的準則包括選擇與最大的或最小的數(shù)據(jù)塊相關聯(lián)的命令或者隨機地選擇一個命令。
如果在重排存儲槽230中無一個是瞄向存儲器120中的當前打開頁,命令選擇邏輯240可以根據(jù)第二準則或者再另一個準則選擇一個命令。
第二準則即選擇在重排序槽中最長久的命令可以用多種不同的方法來實現(xiàn)。在一個實施例中,存儲槽230的單元可以被用來指示在存儲槽230中所保留的命令的相對壽命。例如,重排序槽可以從頂?shù)降妆慌判?,并且命令在重排序?30中呆得越長,它在重排序槽230中占據(jù)的位置越高。按照這種安排,如果在重排序槽230中沒有一個命令瞄向存儲器120的當前頁,命令選擇邏輯240將存儲槽中最頂上的命令送往存儲器120。槽230中的其余的命令被向上移并從命令隊列220輸送一個新的命令。
另一種方法,每個命令可以在它被裝載進入重排序槽230的時候,被標上時間。當在重排序槽230中沒有一個命令是瞄向存儲器中的當前頁時,命令選擇邏輯240檢驗命令的時間標記并且選擇具有最老時間標記的命令。這種處理需要識別最老命令的附加邏輯,但它消除了每次向存儲器120發(fā)送命令時移動在重排存儲槽中的命令的需求。
現(xiàn)在參看圖2B,該圖顯示一個按照本發(fā)明的命令選擇邏輯240的實施例。盡管在圖2B的實施例被畫成帶有四個重排序槽230,本發(fā)明不限制于這個數(shù)。命令選擇邏輯240包括緩沖器242,比較模塊244(a)-244(d),以及選擇邏輯246。緩沖器242存儲在存儲器120中被訪問的最新頁的標記。正如上面所指出的,該標記可以從存儲器120得到或者從由命令選擇邏輯240選作發(fā)出的最新命令得出。
比較模塊244(a)-244(d)各自與一個重排序槽230以及與緩沖器242和選擇邏輯246相連接。比較模塊244(a)-244(d)比較由存儲在它們相關的重排序槽230中的命令所指定的目標地址與在緩沖器242中指示的當前打開頁。根據(jù)一組準則,選擇邏輯246發(fā)往存儲器120的命令位于重排序槽230最頂部(第二準則),目標瞄向在緩沖器242中所指定的相同的頁(效率準則)。如果比較模塊244(a)-244(d)無一指示肯定的比較,選擇邏輯246按照缺省準則發(fā)出一個命令。一個此類準則發(fā)出在重排序槽230最頂上的命令,即在重排序槽230中最長久的命令。
當著存儲器120中的當前打開頁的標記是由重排邏輯210所發(fā)出最新命令的目標地址所提供的時候,此信息被存儲在緩沖器242中。當其它設備在來自圖形系統(tǒng)130的命令之間訪問存儲器120的不同頁上的地址時,緩沖器242中的頁標記將不是精確的。在另一個命令選擇邏輯240的實施例中,緩沖器242可以被連接至存儲器120,使得如果此類插入訪問發(fā)生存儲器緩沖器242的存儲信息可以被作廢。在命令選擇邏輯246的又一個實施例中,緩沖器242可以接收在此類插入訪問中的目標頁的標記并且相應地更新它的內容。一般講,打開頁標記可以以內部存儲的數(shù)據(jù)或者以從外部源例如資源控制器所接收的數(shù)據(jù)為基礎,并且在兩種情況中,外部作用因素可以提供一個附加的“暗示”例如通過在緩沖器242中使頁標記作廢。
再次參考圖2A,命令選擇邏輯240在圖中被連接至資源順序(RO)緩沖器294。當命令選擇邏輯240發(fā)出一個命令給存儲器120時,它也提供一個指定接收相應讀響應數(shù)據(jù)的存儲桶272的標記。這允許將按資源順序(RO)發(fā)出給存儲器120的命令通過裝載邏輯280按OCO裝進RDRB270中。這個過程在下面還要非常詳細地討論。
正如上面指出的,并非所有的命令可適于重排序。為支持某些命令的重排序而需要的校驗邏輯要證明效率增進可能是太昂貴和復雜了。另一方面,命令可以由起始設備按照不同的準則進行排序,重排序這些命令可能擾亂由起始設備所完成的排序方案。
現(xiàn)在參看圖2C,圖中顯示命令重排序邏輯210(210′)的實施例的方框圖,此實施例適應不同類型的命令。例如,所揭示的命令重排邏輯210′的實施例適用于產(chǎn)生高和低優(yōu)先級讀和寫命令的起始設備。必須以低等待時間發(fā)出的命令被作為高優(yōu)先權命令發(fā)出,且一般不適合用作重排序,在此情況下,命令重排邏輯210′分出用作重排序的低優(yōu)先權命令并將高優(yōu)先權命令送往高優(yōu)先權命令隊列。
在低優(yōu)先權寫以及高優(yōu)先權讀和寫按OCO處理給存儲器120的同時考慮命令重排序邏輯210′重排序低優(yōu)先權讀的情況,在這個命令重排序邏輯210′的實施例中,關于低優(yōu)先權讀的命令隊列本質上如在圖2A中所指出的那樣。但是,低優(yōu)先權寫隊列222和高優(yōu)先權讀/寫隊列224也包括在重排序邏輯210′中。此外,命令譯碼器214被引入在圖形系統(tǒng)130以及命令隊列220,222,224之間,以便將命令譯碼并將它們發(fā)送給適當?shù)年犃小?br>
重排序邏輯210′還包括一個命令判優(yōu)器248用來從隊列220,222,224接收命令并且有選擇地將其轉送給存儲器120。在這個重排序邏輯210′的實施例中,低優(yōu)選權的讀命令被重排序以便頁錯誤最小化,就像在上面所說明的,高優(yōu)先權的讀和寫通過命令判優(yōu)器按照不同的優(yōu)先權方案被發(fā)給存儲器120。典型地,高優(yōu)先權讀和寫將先于低優(yōu)先權的讀和寫被發(fā)送。由于高優(yōu)先讀還必須返還數(shù)據(jù)。命令隊列224將具有相關的選通邏輯(沒畫出)用于確保返還緩沖空間對于響應數(shù)據(jù)是可用的。選通邏輯可被并入列命令判優(yōu)器248中以便監(jiān)測在專用的高優(yōu)先權讀數(shù)據(jù)返還緩沖器中槽口可用性。(沒畫出)。選通邏輯可以與隊列220共同RDRB270,在這種情況下,高優(yōu)先權讀命令必須分別在OCO和RO緩沖器290和294中被跟蹤,以確保讀響應數(shù)據(jù)與槽口272正確地相關聯(lián)。
一般講,命令判優(yōu)器248提供一個附加的命令選擇級,以確保高優(yōu)先權命令不被低優(yōu)先權的讀和寫延誤。在重排邏輯21O′的一個實施例中,命令判優(yōu)器248可以被與命令選擇邏輯240的緩沖器242耦聯(lián)以反映由插入的低優(yōu)先寫或高優(yōu)先讀/寫所命中的頁。
再次參見圖2A,響應重排序邏輯260將由存儲器120在響應重排序的讀命令時所提供的數(shù)據(jù)恢復到OCO。正如前面討論的。命令重排序邏輯210(210′)將命令從OCO向RO作重排序,并且存儲器120處理這些讀命令以產(chǎn)生在RO中的讀響應數(shù)據(jù)。響應重排序邏輯260被包括,在必要的場合,以便返還響應數(shù)據(jù)至OCO。
響應重排序邏輯260包括裝入邏輯280,轉存邏輯284,RDRB270,初始命令順序緩沖器290和資源順序(RO)緩沖器294。RDRB270通過裝入邏輯280連接至存儲器120并通過轉存邏輯284連接至圖形系統(tǒng)130。OCO緩沖器290被連接是為了監(jiān)測由圖形系統(tǒng)130發(fā)給重排序邏輯150的命令和將這些命令上的信息提供給轉存邏輯284,用來從RDRB270檢索數(shù)據(jù)。OCO緩沖器290監(jiān)測在OCO中的數(shù)據(jù)請求的規(guī)模。
RD緩沖器294被連接在命令選擇邏輯240和轉存邏輯280之間。RO緩沖器294記錄發(fā)給存儲器120的讀命令的順序,即RO,以及在RDRB270中為相應的響應數(shù)據(jù)而保留的單元,裝入邏輯280利用這個信息將讀響應數(shù)據(jù)裝入到RDRB中適當?shù)拇鎯ν?72。如上面所指出的,存儲桶272是由選通邏輯250按OCO指配的。在圖2C的命令重排序邏輯210′的實施例中,關于存儲桶272分配的信息可以由命令選擇邏輯240或者由命令判優(yōu)器248提供給RO緩沖器294。
轉存邏輯284將讀響應數(shù)據(jù)按OCO從RDRB270傳輸?shù)綀D形系統(tǒng)130。為此目的,OCO緩沖器290將在OCO中的下一個讀命令所期望的數(shù)據(jù)響應的規(guī)模提供給轉存邏輯。轉存邏輯284利用這個信息來決定存儲桶272中的哪一個保存對應于OCO中下一個讀的響應數(shù)據(jù)以及何時裝進了這些存儲桶中的數(shù)據(jù)適用于傳送給圖形系統(tǒng)130。
轉存邏輯284以下面的方式檢索按OCO的響應數(shù)據(jù)。轉存邏輯284保持一個讀指針(RPTR),該指針指向的存儲桶緊隨最新的從RPRB270讀的數(shù)據(jù)響應。在初始化時RPTR指向RDRB270中的另一存儲桶。轉存邏輯248利用在OCO緩沖器290中為下一個讀命令規(guī)定的數(shù)據(jù)容量來決定指向最近的存儲桶的指針(VPTR)。該存儲桶應由在響應這個讀命令時所提供的數(shù)據(jù)所占據(jù)。例如,如果每個存儲桶保存Q字的響應數(shù)據(jù)并且在OCO緩沖器290的頭部所請求的數(shù)據(jù)長度L個Q字是VPTR=RPTR+L-1在此實施例中,轉存邏輯248監(jiān)視在由VPTR所指示的存儲桶上的有效位,當著在響應讀命令時所提供的最新的Q字已經(jīng)被裝進了RDRB270中時這個有效位被置位,所以全部與該讀命令有關的數(shù)據(jù)都被準備用來傳送給圖形系統(tǒng)130。轉存邏輯284轉存L個Q字,將它們傳送給圖形系統(tǒng)130,將在L槽口上的有效位清Q,并重置RPTR為VPTR+1。
重排序邏輯210的另一個實施例利用標記來跟蹤命令順序。在此實施例中,例如與選通邏輯250或命令隊列220相關聯(lián)的標記邏輯標記命令以反映它被接收時的順序(OCO),已標記的命令通過重排序槽230和命令選擇邏輯240被轉送給資源,就如前面那樣。在讀命令的情況,例如,轉存邏輯280利用命令標記將命令響應裝入RDRB270中適當?shù)拇鎯ν啊_@種方法的一個優(yōu)點除了由重排序邏輯210所進行的命令重排序之外是它允許資源,例如存儲器120,進行它自己的命令重排序,由于OCO數(shù)據(jù)隨同命令一起送給資源,任何由資源作的命令重排序不影響附加的OCO信息。
雖然前面的說明集中在重排序讀命令上,寫命令也可以被重排序以改善存儲器120的工作效率,在所揭示的發(fā)明的實施例中,寫命令和它寫的數(shù)據(jù)分別被耦合至重排序邏輯150。因此,重排序邏輯210將包括一個寫數(shù)據(jù)緩沖區(qū)(WDB,圖2D)以存儲被接收的數(shù)據(jù),也即在OCO中。
現(xiàn)在參考圖2D,圖中顯示一個適用于重排序寫命令的命令重排邏輯210的實施例。在所揭示的實施例中,選通邏輯250被連接至WDB254以監(jiān)測寫數(shù)據(jù)的到達。在此配置下,選通邏輯250能夠將寫命令阻止在命令隊列220中直到它的相應的寫數(shù)據(jù)已經(jīng)被接收進入WDB254。一旦數(shù)據(jù)被接收,寫命令能夠被處理,選通邏輯250將把寫命令轉送至重排序槽230。
在所揭示的實施例中,寫數(shù)據(jù)被接收OCO存入WDB254,由于寫命令是按RO發(fā)送給存儲器120的,命令重排序邏輯210必須識別在WDB254中哪個存儲桶256對應于正被發(fā)送給存儲器120的寫命令。這個轉換可以通過,例如,標記寫命令以指示它們的OCO,并且當寫命令發(fā)出時讀此標記以決定哪個存儲桶256保存相關的數(shù)據(jù)。其它的方法,包括上面描述過的用于讀命令在OCO和RO之間轉換的各種方法,可以被用來將WDB254中的數(shù)據(jù)與由命令選擇邏輯240所發(fā)出的重排序寫命令關聯(lián)起來。
在命令被重排序時可能發(fā)生某些風險,當著命中存儲器120中的相同單元的若干寫命令被重排序時出現(xiàn)一個此類風險,因為一個對該單元的后繼讀可能恢復失效數(shù)據(jù)。為此理由,本發(fā)明的優(yōu)選實施例不允許對存儲器120中相同單元的寫被重排序。讀和寫命令的重排序也可能產(chǎn)生冒險。為了與上面給出的相似的理由,本發(fā)明的優(yōu)選實施例不許可對存儲器120中的相同單元的寫命令前面的讀命令被重排序。反之,本發(fā)明可以重排序在讀命令前面的對于相同的存儲器120中的單元的寫命令,因為這樣提供給讀命令的是最新的可用數(shù)據(jù),其他的風險可以根據(jù)它們對數(shù)據(jù)的精確處理所造成的危險被識別和處理。
現(xiàn)在參考圖3,圖中顯示的流程圖提供一個關于按照本發(fā)明重排序對資源的命令的一般方法300的概要。從起始方,例如圖形系統(tǒng)130,接收來的命令被排隊310,以及任何關于命令的轉送處理的前提條件被檢驗320。在讀命令的情況下,在讀響應緩沖器,例如RDRB270中的空間的可用性被檢驗。在這樣的寫命令的情況中,讀/寫命令重排序被完成以使得處理器停機最少,前提條件可能是所有的未決的讀已被發(fā)送給資源。對于其它的命令類型,唯一的前提條件可能是命令到達命令隊列的前端。
當任何所需的前提條件被滿足320時,命令被加到330其它的用于向資源發(fā)出的候選命令的集合中。效率準則被應用到340這個集合的候選命令,例如目標為存儲器當前打開頁的地址的命令。滿足準則340的命令在它滿足發(fā)送準則時被轉送350給資源進行處理。
現(xiàn)在參看圖4A,圖中顯示一個用于為減少分頁的方式重排序發(fā)給存儲設備的讀命令的方法的更詳細的流程圖。所揭示的實施例從高和低優(yōu)先權的讀和寫命令中間識別低優(yōu)先權讀(LPRs)并且重排序LPRs以減少分頁。
一開始,命令被譯碼410并且命令類型被確定420。如果命令已被確定為低優(yōu)先權讀(LPR),也即用于重排序的候選者,所請求數(shù)據(jù)的長度被記錄430,并且命令被加到440 LRP命令隊列中。其他的命令,例如,低優(yōu)先權寫,高優(yōu)先權讀和寫,被傳送424給它們各自的命令隊列。當著LPR命令到達LPR隊列的首部,例如,隊列中在它前面的LPR命令已經(jīng)被處理之后,確定讀響應緩沖區(qū)是否有足夠容量接納那些在響應LPR命令時所返還的數(shù)據(jù)。如果容量是得不到的,命令被阻止直到容量變成可得到的。如果容量是可得到的,命令被加(460)到有資格向存儲器發(fā)出的LPR集合,也即重排序集合中。
一旦進入重排序集合,命令和其余有資格的LPR一起對照效率準則被進行分析470。在本發(fā)明的一個實施例中,效率準則識別重排序集合中那個目標為存儲器中當前打開頁地址的LPR命令。如果在該集合中無一LPR命令滿足此準則或者多個命令滿足,第二準則,即在集合中最長久的LPR命令被應用。由各種準則所識別的命令被記錄(480)和發(fā)給(490)存儲進行處理。
現(xiàn)在參看圖4B,圖中顯示用于按減少存取等待時間的方式重排序發(fā)給存儲資源的寫命令的方法400′的更為詳細的流程圖。方法400′的步驟類似于方法400的步驟,故用相同的標號數(shù)標志。主要的差別是步驟420′識別LP寫,步驟440傳送寫命令到LPW隊列,步驟450′檢驗對應的寫數(shù)據(jù)已經(jīng)到達,以及步驟480′在寫命令被選作發(fā)出時檢索寫數(shù)據(jù)。
現(xiàn)在參考圖5A和5B那里展示的是流程圖500,502,表示按原先的命令順序返還讀響應數(shù)據(jù)給起始設備的方法。方法500和502本質上對應于由圖2A的裝入邏輯280和轉存邏輯284所分別完成的功能。
首先參看圖5A,來自資源,例如存儲器120,如數(shù)據(jù)被檢測,這些數(shù)據(jù)是在響應LPR時所提供的,并且為這些數(shù)據(jù)分配的存儲桶是被識別的520。數(shù)據(jù)被裝入被識別的存儲桶530并且與這些存儲桶相聯(lián)系的有效位被置位540以指示數(shù)據(jù)可用于轉存。
現(xiàn)在參考圖5B,在響應按照OCO的下一個LPR命令時所提供的數(shù)據(jù)的存儲單元被確認550以及RDRB被檢驗以確定數(shù)據(jù)是否已經(jīng)是可得到的。當數(shù)據(jù)是可得到的時候,例如在DRDB中被指定的存儲桶的有效位被置位時,它被傳送給請求設備(570)且有效位被清零(580)。
于是,已經(jīng)提供了按照有助于更有效地利用資源的準則重排序對資源的命令的系統(tǒng)和方法。已經(jīng)又提供一種按原先的命令順序返還在響應重排序過的命令時所提供的數(shù)據(jù)給請求設備的系統(tǒng)和方法。命令重排序可以對諸如存儲設備這樣的資源便利地完成。在這種情況下,重排序將那些存取在相對局部的地址范圍內的數(shù)據(jù)的命令聚集在一起,以消除與更為隨機的存取方法相關聯(lián)的開銷。
權利要求
1.一種利用許多重排序槽重排序對資源的命令的方法,該方法包括的步驟有接收來自起始設備的命令;傳送命令至許多個重排序槽中的一個;對命令使用效率準則;以及在效率準則被滿足時發(fā)送命令給資源。
2.權利要求1的方法,其中傳送步驟包括的子步驟有將轉送進程準則用于命令以決定命令是否能繼續(xù)進行;當轉送進程準則被滿足時將命令傳送給許多個重排序槽中的一個。
3.權利要求2的方法,其中接收命令的步驟包括接收讀命令。
4.權利要求3的方法,其中應用轉送進程準則的步驟包括確定命令的處理是否會引起死鎖。
5.權利要求1的方法,其中應用效率準則的步驟包括比較在命令中指定的資源目標地址與資源的當前打開地址范圍。
6.權利要求5的方法,其中發(fā)出步驟包括在指定的資源地址落在有關資源的當前打開地址范圍內并且命令滿足第二準則時發(fā)出命令。
7.權利要求6的方法,其中第二準則是從一組準則選擇的,這些準則包括命令是最老的命令,命令請求最大的數(shù)據(jù)塊,和命令請求最小的數(shù)據(jù)塊。
8.權利要求2的方法,其中接收命令的步驟包括接收寫命令。
9.權利要求8的方法,其中應用轉送進程準則包括確定與寫命令有關的數(shù)據(jù)是否可得到。
10.權利要求1的方法,包括附加的監(jiān)測所發(fā)命令,以確定命令被發(fā)給資源的順序的步驟。
11.權利要求1的方法,包括監(jiān)測所接收的命令以確定由起始設備發(fā)出的命令的順序的一個附加步驟。
12.權利要求11的方法,包括一個按照命令被起始設備發(fā)送時的順序返還一個對命令的響應給起始設備的附加步驟。
13.重排序由起始設備發(fā)給資源的命令的方法,方法包括的步驟有應用效率準則選擇由起始設備發(fā)出的命令;以及在命令滿足效率準則時傳送一個所選擇的命令給資源。
14.權利要求13的方法,其中傳送步驟包括的子步驟有識別所選擇的滿足效率準則的命令;在所選的命令中只有一個滿足資源效率準則時,傳送這一個命令給資源;在有許多個所選命令滿足效率準則時,根據(jù)第二準則將所選的許多個命令中的一個進行傳送;以及當無一所選命令滿足資源效率準則時,根據(jù)第三準則傳送所選命令中的一個。
15.權利要求14的方法,其中第一和第三準則是相同的準則。
16.權利要求13的方法,其中應用步驟包括比較由每個所選命令指定的資源地址與打開資源地址范圍。
17.權利要求13的方法,包括為提供關于資源處理命令的順序的標記而跟蹤傳送給資源的命令的附加步驟。
18.重排序由起始設備發(fā)給資源的命令的線路,該線路包括用于接收來自起始設備的命令的命令排隊;耦聯(lián)接收來自命令排隊的命令的多個重排序槽;以及與多個重排序槽和資源耦聯(lián)的命令重排序邏輯,用來確定與資源有關的效率參數(shù)和根據(jù)命令參數(shù)和效率參數(shù)之間的比較結果從多個命令重排序槽選擇用于傳送給資源的命令。
19.權利要求18的線路,進一步包括與命令排隊耦聯(lián)的命令順序排隊,用于存儲由命令排隊所接收的命令的標記以便跟蹤起始設備發(fā)送命令給資源的順序;以及資源順序排隊,耦聯(lián)命令重排序邏輯,用于存儲傳送給資源的命令的標記以跟蹤資源處理命令的順序。
20.權利要求18的線路,進一步包括讀數(shù)據(jù)返還緩沖區(qū)(RDRB)具有許多個用于存儲在響應讀命令時由資源所提供的數(shù)據(jù)的存儲桶;以及選通邏輯,與命令排隊和RDRB相耦聯(lián),用于識別讀命令所請求的數(shù)據(jù)規(guī)模,確定RDRB是否有足夠的容量接納所請求的數(shù)據(jù)規(guī)模,以及在RDRB有足夠的容量時分配RDRB存儲桶給讀命令。
21.權利要求20的線路,進一步包括裝入邏輯,耦聯(lián)于資源、資源順序排隊、和RDRB,用于將響應讀命令時所提供的數(shù)據(jù)按規(guī)定路線發(fā)送給為該數(shù)據(jù)分配的RDRB存儲桶。
22.權利要求20的線路,還包括轉存邏輯,耦聯(lián)于命令順序排隊和RDRB,用于使用來自命令順序排隊的信息將來自RDRB的讀響應數(shù)據(jù)傳送至起始設備。
23.權利要求18的線路,其中資源效率參數(shù)提供一個可以以減少了的開銷被訪問的資源地址的標記而命令參數(shù)則是一個指定的資源地址。
24.權利要求23的線路,其中的標記是由資源提供的。
25.權利要求23的線路,其中的標記是由先前的命令所指定的資源地址所提供。
26.權利要求18的線路,還包括標記邏輯,用于以命令接收的順序的標記來標記命令。
27.權利要求26的線路,還包括轉存邏輯,與資源相耦聯(lián),用于按照接收命令的順序傳送在響應命令時所提供的數(shù)據(jù)給起始設備。
28.計算機系統(tǒng),包括產(chǎn)生待處理命令的起始設備;以由效率參數(shù)表征的速率處理起始設備所產(chǎn)生的命令的資源;耦聯(lián)起始設備和資源的橋邏輯,用來將命令從起始設備傳送給資源。橋邏輯包括命令重排序邏輯,用來監(jiān)測由起始設備產(chǎn)生的命令,比較所監(jiān)測的命令和效率參數(shù),以及按比較所提供的順序將命令送至資源。
29.權利要求28的計算機系統(tǒng),還包括命令順序邏輯,此橋邏輯相耦聯(lián),用于確定命令從起始設備被接收的原始的順序以及命令被傳送給資源的資源順序。
30.權利要求29的線路還包括響應重排序邏輯,此命令順序邏輯,資源和起始設備相耦聯(lián),用于按資源順序接收來自資源的響應數(shù)據(jù)并按照原先的命令順序將該數(shù)據(jù)提供給起始設備。
全文摘要
提供一種用于提高由資源處理從起始設備發(fā)給該資源的命令的效率的系統(tǒng)和方法。系統(tǒng)包括命令排隊,多個與命令排隊相耦聯(lián)的命令重排序槽,以及與資源和命令重排序槽相結的命令選擇邏輯。為處理準備的命令被裝入命令重排序槽,命令選擇邏輯將效率準則應用于所裝入的命令。滿足效率準則的命令被傳送給資源處理,系統(tǒng)還可以包括響應重排序邏輯,它與命令重排序邏輯相耦聯(lián),響應重排序邏輯將在響應重排序讀命令時所提供的數(shù)據(jù)返回到原先的命令順序。
文檔編號G06F3/06GK1259214SQ9880571
公開日2000年7月5日 申請日期1998年1月28日 優(yōu)先權日1997年4月7日
發(fā)明者D·J·哈里曼, B·K·朗根多夫, R·J·里森曼 申請人:英特爾公司