專利名稱:利用頁標(biāo)志寄存器跟蹤存儲器裝置內(nèi)物理頁的狀態(tài)的制作方法
背景技術(shù):
本發(fā)明總的涉及計算系統(tǒng)。更具體地,本發(fā)明涉及訪問計算系統(tǒng)如多處理器計算機系統(tǒng)等內(nèi)的共享的資源。更進一步說,本發(fā)明提供了通用訪問共享資源的裝置和方法。
背景技術(shù):
在基本的計算機系統(tǒng)中,中央處理器或CPU,按照存儲在相應(yīng)的存儲器內(nèi)的預(yù)定的程序或指令集來運行,除了存儲處理器借助運行的指令集或程序外,還提供了在處理器存儲器或相關(guān)的附加的存儲器中的存儲空間,以便于中央處理器在處理過程中處理信息?;谀囊粋€處理器用于執(zhí)行程序,附加的存儲器用作由處理器生成的信息的存儲器和臨時信息的存儲器,或“中間結(jié)果暫存器(scratchpad)”。另外,為了利用系統(tǒng)的輸出裝置,相關(guān)的存儲器提供放置處理器操作指令集的輸出信息的位置。
在為了訪問內(nèi)存,很多組件(處理器、硬盤等)必須共享公共的總線的系統(tǒng)中,很可能出現(xiàn)存儲器訪問沖突。尤其是在多處理器計算機系統(tǒng)中,系統(tǒng)使用不同的處理器同時的操作,訪問內(nèi)存或共享的資源,變得復(fù)雜了。由于各個處理器或處理器系統(tǒng)很可能同時請求訪問同一個內(nèi)存,處理器之間的沖突通常是不可避免的。實質(zhì)上,在多處理器計算機系統(tǒng)中,兩個或者多個處理器或處理器系統(tǒng)周期性的導(dǎo)致關(guān)于公共內(nèi)存的存儲指令的重疊。
解決共享內(nèi)存的存儲器訪問請求的沖突的傳統(tǒng)方法包括,一種情況是,各個處理器使用完全冗余的內(nèi)存,并隔離處理器系統(tǒng)。但是,這種解決沖突的存儲器訪問請求的方法經(jīng)常不能發(fā)揮多處理器系統(tǒng)的優(yōu)勢。如果按照同一數(shù)據(jù)提供并行的計算的方式操作,系統(tǒng)中一個處理器支持其它處理器的操作,這樣的多處理器系統(tǒng)極其高效。傳統(tǒng)地,這種處理器系統(tǒng)可能是分時的(time shared),其中的處理器競爭訪問共享的資源如內(nèi)存,或者處理器系統(tǒng)是雙重端口的,其中的各處理器由自己的內(nèi)存總線,比如其它的已經(jīng)給予訪問時,對其進行排隊。
已經(jīng)有多種方法用于避免上述的沖突問題。一種方法是,通過順序操作處理器或者通過分時操作處理器,來達(dá)到避免沖突。這種方法中,為了避免沖突,處理器只是的“依次”訪問共享的資源。通常使用的這種系統(tǒng)包括“通行鈴(passing the ring)”或“標(biāo)記系統(tǒng)”,系統(tǒng)中,可能沖突的處理器被系統(tǒng)簡單的輪詢,按照預(yù)定的與關(guān)于一組用戶的通行鈴?fù)瑯拥捻樞颉?br>
不幸的是,使用順序的處理器訪問方法對整個計算機系統(tǒng)有很大的限制。這種限制源自于系統(tǒng)輪詢競爭的處理器所用的實際時間。另外,如果單個的處理器在運行并請求訪問共享的內(nèi)存,比如,由于系統(tǒng)單步調(diào)試序列,處理器訪問共享的資源時,在每個內(nèi)存周期后有一個延時產(chǎn)生。
另一個傳統(tǒng)的避免沖突的方法是依靠在計算機系統(tǒng)內(nèi)的處理器中建立優(yōu)先級。這種方法假定各個處理器具有分配給它的關(guān)于系統(tǒng)重要性層次的優(yōu)先權(quán)。每次出現(xiàn)沖突時,存儲器控制器只為具有最高優(yōu)先權(quán)的處理器提供訪問。比如,在一個具有兩個處理器的系統(tǒng)中,第一和第二處理器訪問共享的存儲器,該存儲器一般是要求周期性刷新存儲器所保留的存儲數(shù)據(jù)的動態(tài)RAM(DRAM)型存儲器。一般地,DRAM型存儲器由單獨的獨立更新系統(tǒng)刷新。在這樣的多處理系統(tǒng)中,兩個處理器和更新系統(tǒng)都爭相訪問公共存儲器。系統(tǒng)存儲器控制器將處理存儲器訪問請求沖突,或者命令,正如分配給處理器的不同的優(yōu)先權(quán)和更新系統(tǒng)所決定的那樣。盡管這種系統(tǒng)解決了沖突,并且在一定程度上比純粹的順序沖突避免系統(tǒng)的效率更高,但該系統(tǒng)仍然缺乏靈激活。
另一種解決沖突的方法包括在存儲器控制器中加入決策能力。遺憾的是,存儲器控制器的決策部分要在時鐘系統(tǒng)的控制和時序下操作,問題就來自于,在存儲器控制器能夠授權(quán)訪問公共存儲器之前,用來執(zhí)行真正的決策的實際時間。
不幸的是,執(zhí)行真正的決策的問題很大程度上削弱了傳統(tǒng)的存儲器控制器授權(quán)訪問多條型存儲器系統(tǒng)的能力。在多存儲體(multi-bank)型存儲器系統(tǒng)中,實際的存儲器核心被分成指定的區(qū)域和組,其中存儲著要檢索的數(shù)據(jù)。雖然準(zhǔn)備了更快更有效的存儲器訪問,但傳統(tǒng)的存儲器控制器在處理多存儲體型存儲裝置時所要求的復(fù)雜性實際上減緩了整個系統(tǒng)的總的訪問速度。
如上所述,很顯然,可以期望有一種分優(yōu)先級訪問外部裝置的方法和設(shè)備。
發(fā)明概述按照本發(fā)明,公開了一種方法,通過存儲器控制器加速包括在多存儲體型存儲器中的存儲體內(nèi)的存儲頁的存儲訪問速度。在一個實施方案中,存儲器控制器包括多個頁寄存器,每個頁寄存器對應(yīng)多個存儲體中的一個,其中對應(yīng)特定存儲體的頁寄存器用于存儲特定的存儲體編號、位于特定的存儲體編號內(nèi)的打開的頁地址和打開的頁狀態(tài)。存儲器控制器還包括連接到多個頁寄存器的每個頁寄存器的可調(diào)整的比較器單元。存儲器控制器接收輸入的系統(tǒng)地址請求,包括請求的存儲體編號和請求的頁編號。然后,由比較器定位對應(yīng)請求的存儲體編號的頁寄存器,之后,包含在被定位的頁寄存器內(nèi)的存儲頁地址與請求的頁地址相比較。當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址相匹配時,訪問在對應(yīng)請求的存儲體編號的存儲體中的請求的頁。
參考說明書的其余部分和附圖,可以更進一步的理解本發(fā)明的特性和優(yōu)點。
附圖簡述下面借助附圖中的實例來解釋本發(fā)明,而不意味著限制;附圖中相同的標(biāo)號代表相同的單元,其中
圖1A示出了符合本發(fā)明一個實施方案的通用控制器的概略的實現(xiàn);圖1B示出了如圖1A所示的通用控制器的具體實現(xiàn);圖1C示出了符合本發(fā)明一個實施方案的連接到通用控制器的地址空間控制器;圖1D示出了如圖1C所示的地址空間控制器的具體實現(xiàn);圖1E示出了按照本發(fā)明一個實施方案的典型的請求/響應(yīng)ID編號;圖2A示出了按照本發(fā)明一個實施方案的一般的通用指令;圖2B示出了適合于請求存儲頁讀指令的如圖2A中所示的具體的通用指令;圖2C示出了由圖2B所示的典型指令的指令組成之間提供適當(dāng)?shù)臅r序間隔所構(gòu)成的順序指令的示例;圖3示出了按照本發(fā)明一個實施方案的資源標(biāo)志;圖4示出了按照本發(fā)明一個實施方案,通用控制器詳細(xì)處理訪問共享的資源的流程圖;圖5示出了按照本發(fā)明一個實施方案,通用控制器確定資源的狀態(tài)和執(zhí)行操作的步驟的處理;圖6示出了按照本發(fā)明一個實施方案,通用控制器根據(jù)處理確定操作步驟之間適當(dāng)?shù)臅r序的處理;圖7A和7B示出了按照本發(fā)明一個實施方案,頁命中/錯過控制器;圖8示出了按照本發(fā)明一個實施方案的存儲體訪問控制器;圖9A示出了按照本發(fā)明一個實施方案的基于多處理器系統(tǒng)的典型的SLDRAM;圖9B為一個時序圖示出了如圖9A所示的多處理器的典型的SLDRAM總線交易;圖10是一個符合本發(fā)明一個實施方案的存儲器控制器的方框圖;圖11是一個符合本發(fā)明一個實施方案的約束模塊的方框圖;圖12是符合本發(fā)明一個實施方案的典型的SLDRAM指令時序圖;圖13A-13C示出了存儲器指令的重排序的時間線,按照本發(fā)明的一個特殊的實施方案;圖14是一個按照本發(fā)明的一個特殊實施方案設(shè)計的存儲器控制器的部分方框圖;圖15是一個按照本發(fā)明的一個特殊實施方案設(shè)計的重排序電路的方框圖;圖16,如圖15的重排序電路的更詳細(xì)的方框圖;圖17是一個符合本發(fā)明的一個特殊實施方案的指令隊列項內(nèi)容圖;圖18是一個地址移位器的特殊實施方案的方框圖;圖19是一個符合本發(fā)明的一個特殊實施方案的數(shù)據(jù)隊列項內(nèi)容圖;圖20示出了一個沖突檢測系統(tǒng),也就是如圖15所示的沖突檢測系統(tǒng)的另一個實現(xiàn);圖21示出了一個典型的時序圖,說明每次讀/寫指令到目標(biāo)裝置是如何涉及數(shù)據(jù)包傳輸?shù)模粓D22示出了一個預(yù)測器系統(tǒng),它具有N頁時鐘,存儲上一次發(fā)布到特定頁的指令與預(yù)測的下一個內(nèi)存的訪問之間的時間;和圖23示出了按照本發(fā)明一個實施方案的具有裝置訪問優(yōu)先權(quán)的裝置控制器。
圖24,示出的表4,匯總了按照本發(fā)明一個實施方案的約束模塊執(zhí)行的調(diào)度器。
優(yōu)選實施方案詳述在具有幾個裝置如處理器,共享公共的資源的系統(tǒng)中,已經(jīng)使用了多種方法來避免當(dāng)不止一個裝置請求訪問共享資源時的沖突。一種方法是,通過順序操作處理器和通過分時處理器來解決沖突。這時,為了避免沖突,處理器只是“依次地”訪問共享的資源。通常使用的這種系統(tǒng)包括“通行鈴”或“標(biāo)記系統(tǒng)”,系統(tǒng)中可能沖突的處理器被系統(tǒng)簡單的輪詢,按照預(yù)定的與關(guān)于一組用戶的通行鈴?fù)瑯拥捻樞颉?br>
遺憾的是,使用順序的處理器訪問方法通常會對整個計算機系統(tǒng)有很大的限制,由于用于輪詢競爭的處理器的實際時間總量。
另一個傳統(tǒng)的避免沖突的方法是依靠在計算機系統(tǒng)內(nèi)的處理器中建立優(yōu)先級。這種方法假定各個處理器具有分配給它的關(guān)于系統(tǒng)重要性層次的優(yōu)先權(quán)。盡管這種系統(tǒng)解決了沖突,并且在一定程度上比純粹的順序沖突避免系統(tǒng)的效率更高,但該系統(tǒng)仍然缺乏靈激活。
另一種解決沖突的方法包括在存儲器控制器中加入決策能力。遺憾的是,決策邏輯的復(fù)雜性要求在控制器能夠授權(quán)訪問共享的存儲器之前執(zhí)行實際決策的所使用的總的時間。
復(fù)雜邏輯降低了系統(tǒng)性能這個問題在多芯片模式存儲系統(tǒng)中更加嚴(yán)重,系統(tǒng)中具有在各具不同操作特點的互聯(lián)的多個存儲裝置中分布的內(nèi)存。由于傳統(tǒng)的邏輯不能用來補償在不同的存儲裝置中固有的各個不同的訪問特點,因而,整個系統(tǒng)的性能下降。
總的來說,如圖1A所示,本發(fā)明可以根據(jù)系統(tǒng)100來說明,系統(tǒng)100具有請求裝置102,它通過用于向任何數(shù)量和類型的共享的資源108提供訪問的系統(tǒng)總線106連接到通用裝置106的請求裝置控制器104。在一個實施方案中,系統(tǒng)總線106通過相關(guān)的系統(tǒng)接口層110連接到通用控制器104,而通用控制器104通過共享的資源接口109依次連接到共享的資源108。一般地,根據(jù)任何請求系統(tǒng)102發(fā)出的共享資源請求和共享資源操作的特征參數(shù)113,通用控制器104被用來確定共享資源108的狀態(tài)。
在這些情況下當(dāng)請求系統(tǒng)102是一個多處理器系統(tǒng)中的處理器,請求訪問作為存儲裝置108的共享的資源108,存儲裝置108被連接到它上面的其它處理器所共享,為了完成要求的資源請求,通用控制器104確定執(zhí)行操作的步驟。當(dāng)存儲器裝置108是,比如SDRAM,操作一般包括預(yù)充電、關(guān)閉頁、打開頁和讀頁或?qū)戫摗?br>
一旦確定了操作的具體步驟,通用控制器104就確定各步驟之間的適當(dāng)?shù)臅r序,為了避免諸如數(shù)據(jù)沖突或其它類型的沖突。在優(yōu)選的實施方案中,時序部分地根據(jù)存儲在如查對表內(nèi)的共享存儲裝置的操作特征。之后,適當(dāng)?shù)呐藕眯虻脑L問指令由通用控制器發(fā)布,然后由共享的資源作出回應(yīng)。
在下面的本發(fā)明的詳細(xì)描述中,為了完全地理解本發(fā)明,提供了多個特殊的實施方案。然而,對本領(lǐng)域技術(shù)人員來說是很顯然的,可以在沒有這些具體細(xì)節(jié)或使用改變的單元或步驟,來實現(xiàn)本發(fā)明。另一方面,對已經(jīng)熟知的處理、步驟、組件和電路,不再詳細(xì)說明,免得使本發(fā)明顯得晦澀難懂。
現(xiàn)在,將根據(jù)作為處理器與共享資源之間的聯(lián)絡(luò)的存儲器控制器來描述本發(fā)明。但是,應(yīng)該指出的是,本發(fā)明也可以象能夠控制訪問不論共享與否的任何資源的通用控制器來實現(xiàn)。這些資源不必一定是存儲器,實事上,本發(fā)明也可以用于控制訪問共享的系統(tǒng)總線,比如在多處理器系統(tǒng)中提供交通控制,減少總線訪問延時,從而提高系統(tǒng)總線帶寬的效率。
現(xiàn)在請參見圖1B,系統(tǒng)100具有請求裝置102,如處理器能夠通過系統(tǒng)總線106連接到通用控制器104??刂破?04依次連接到共享的資源108,如存儲器108可以采用很多形式,諸如DRAM、SDRAM、SLDRAM、EDO、FPM、RDRAM等。在所述的實施方案中,系統(tǒng)總線106包括單向地址總線106-1,用于把處理器102發(fā)出的存儲器地址請求傳送到通用控制器104。系統(tǒng)總線106包括單向指令總線106-2,它與地址總線106-1連接,傳輸關(guān)于存儲地址的指令。比如,當(dāng)處理器102請求一個存儲在存儲器108內(nèi)的特定存儲位置的可執(zhí)行指令時,處理器象指令總線106-2輸出讀請求(稱為系統(tǒng)指令),幾乎同時,在地址總線106-1上得到相應(yīng)的存儲地址請求(稱為系統(tǒng)地址)。系統(tǒng)地址和系統(tǒng)指令都被包括在控制器104內(nèi)的可配置的系統(tǒng)接口110所接收??梢宰⒁獾?,意味著通過配置,系統(tǒng)接口110可以用于處理接收到的無論是存儲器108要求的何種形式和方式的系統(tǒng)指令和系統(tǒng)地址。這樣,處理器102要求的數(shù)據(jù)就可以存儲在任何編號和類型的連接到控制器104的存儲裝置中,無需要求處理器102為每個存儲裝置生成定制的請求。
在所述的實施方案中,系統(tǒng)接口110用于把接收到的系統(tǒng)指令和系統(tǒng)地址轉(zhuǎn)換為被叫作通用指令200的指令,如圖2A所示的示例。在一個實現(xiàn)中,當(dāng)共享的資源是DRAM型存儲裝置(包括SLDRAM、SDRAM、EDO、DRAM等),通用指令200由5個數(shù)據(jù)字段構(gòu)成,包括執(zhí)行存儲器108的任何存儲器訪問所要求的所有操作。這些操作包括由預(yù)充電數(shù)據(jù)字段202標(biāo)識的預(yù)充電操作,用于表示是特定行否需要預(yù)充電。其它操作包括激活數(shù)據(jù)字段204、讀數(shù)據(jù)字段206、寫數(shù)據(jù)字段208和刷新數(shù)據(jù)字段210。如果,比如說,存儲器208具有存儲體1當(dāng)前激活(即在讀或?qū)懼蟠蜷_)的存儲頁1,以及隨后的處理器指令要求讀出存儲在存儲體1的2頁上的數(shù)據(jù)并輸出到處理器102。這時,為了處理器102執(zhí)行請求的指令,頁1必須關(guān)閉(即頁1被預(yù)充電),頁2必須被激活,頁2被激活后,讀頁2。所以,如圖2B所示的通用指令212,由通用指令發(fā)生器110生成,通用指令發(fā)生器110具有數(shù)據(jù)字段202、204和206,設(shè)置為“1”表示“執(zhí)行相關(guān)的操作”,而數(shù)據(jù)字段208和210設(shè)置為“0”表示“不執(zhí)行相關(guān)的操作”(即“NOP”,無操作)。
回過來參見圖1B,由于存儲器108的訪問是動態(tài)的這一特征,其中的多個不同的請求裝置共同訪問存儲器108,存儲器108的狀態(tài)是不斷改變的。存儲器的狀態(tài),意思是為在特定的存儲位置完整的執(zhí)行特定的操作,必須已知存儲器位置的狀態(tài)。比如,如果一個特定的存儲頁關(guān)閉了,為了執(zhí)行讀操作,該存儲頁必須被打開。因此,為了確定特定地址位置的當(dāng)前狀態(tài),大多數(shù)在特定位置已經(jīng)執(zhí)行了的當(dāng)前操作,用資源標(biāo)志300標(biāo)識,如圖3所示。在本發(fā)明的一個實施方案中,資源標(biāo)志300包括地址字段302,用于標(biāo)識特定的存儲器位置;包括最近發(fā)布的指令字段304,用于識別在302中標(biāo)識的地址的最近發(fā)布的指令;以及包括最近的指令數(shù)據(jù)字段306的時間。比如說,存儲器地址ADDs的資源標(biāo)志308表示在時間5Φ(代表5個時鐘周期)發(fā)布了讀頁面指令,而資源標(biāo)志310表示對同一個存儲器地址ADDs,在時間10Φ,在ADDs,在存儲頁上執(zhí)行了寫頁面指令。通過跟蹤存儲器地址ADDs的狀態(tài),通用控制器104得知在ADDs的存儲頁已經(jīng)打開,因而不用要求打開頁面的操作。
使用存儲在資源標(biāo)志緩沖器114內(nèi)的標(biāo)志300所提供的狀態(tài)信息,連接到可配置的系統(tǒng)接口112的指令定序器114提供通用指令200的指令項202-210之間的適當(dāng)?shù)臅r間間隔,以便提供排好序的指令220,如圖2C所示,在指令項202-204和204-206之間分別具有時間間隔t1和t2。應(yīng)該注意到,由于指令項208和210是“NOP”型字段,排好序的指令220包括任何引用這樣的字段,只要求時間周期實際上等于項202到206要求的時鐘周期相加的時間t1+t2。這樣,指令定序器114就能夠在處理器102和存儲器108之間提供優(yōu)化的指令和數(shù)據(jù)流。
在本發(fā)明的另一個實施方案中,當(dāng)共享的資源108是多存儲體型存儲裝置,如SDRAM,或當(dāng)共享的資源是多裝置存儲裝置如多芯片模式,比如,資源標(biāo)志緩沖器114能夠存儲在特定存儲體或裝置內(nèi)的所有打開頁的資源標(biāo)志。在一種實現(xiàn)中,比較器(未示出)檢測系統(tǒng)地址中的存儲體編號或裝置標(biāo)識號,并比較頁地址和具有標(biāo)志緩沖器114的內(nèi)容的系統(tǒng)地址。如果比較沒有“命中”(即地址不相匹配),通用控制器104就必須關(guān)閉使用來自標(biāo)志緩沖器114的地址的舊頁面,根據(jù)新的系統(tǒng)指令打開新頁面。
在通用控制器104要服務(wù)多個不同的裝置的情況下,可以期望能夠選擇那些只與關(guān)于輸入系統(tǒng)地址的特定裝置相關(guān)的操作參數(shù)。當(dāng)通用控制器服務(wù)多個不同的裝置時,地址空間控制器120連接到通用控制器104,如圖1C所示。在所述的實施方案中,地址空間控制器120提供只選擇與輸入系統(tǒng)地址相關(guān)的裝置的特定參數(shù)的能力。在一個特殊的實現(xiàn)中,如圖1D所示,地址空間控制器120包括比較器122,用于比較輸入系統(tǒng)地址和區(qū)域地址范圍緩沖器124的內(nèi)容,緩沖器124標(biāo)識哪一個裝置(或者哪一個存儲區(qū)域)與輸入的系統(tǒng)地址相關(guān)。一旦具體的裝置或者區(qū)域被標(biāo)識,就選定一組裝置參數(shù)寄存器126和128(各自連接到范圍緩沖器124并包含具體裝置的裝置特殊的參數(shù))其中之一。在有些實施方案中,被選定的裝置參數(shù)寄存器的內(nèi)容輸入到LUT118。這樣,任何數(shù)量的不同的裝置可以得到通用控制器104的服務(wù),從而,各裝置的特定的操作參數(shù)被標(biāo)識,并用于優(yōu)先級化相應(yīng)的通用指令的順序。
還應(yīng)該指出,有時連接到通用控制器中的一個裝置忙,不能接受新指令,能夠選擇等待在指令隊列中的任何其它指令是有益的。在本發(fā)明的一些實施方案中,裝置的每次響應(yīng)和通用控制器的每次請求都具有相關(guān)的ID編號150,在所述的實施方案中一個長度為5位的數(shù)據(jù)字,如圖1E所示。ID編號150通過配置為包括長為2位的組選擇器字段152和長為3位的請求標(biāo)號字段153。組選擇器(GS)確定請求屬于哪一組特定的系統(tǒng)(即處理器,比方說),而請求標(biāo)號(RN)表明組選擇器字段152內(nèi)所標(biāo)識的相關(guān)的組的響應(yīng)或者請求的標(biāo)號,這樣來自同一個收發(fā)器的連續(xù)的請求就具有連續(xù)的請求標(biāo)號。
在一些實施方案中,一組優(yōu)先級選擇器寄存器154包括請求或者響應(yīng)組的各自的優(yōu)先級值,從而具有更高優(yōu)先級的請求或響應(yīng)將代替具有較低優(yōu)先級值的請求或響應(yīng)。這樣,當(dāng)較低優(yōu)先級的請求或響應(yīng)不能在下一個時鐘周期內(nèi)處理時,具有更高優(yōu)先級的請求或響應(yīng)就能夠繞過具有較低優(yōu)先級值的請求或響應(yīng)。為了防止所謂的活鎖,活鎖計數(shù)器寄存器156包含關(guān)于具有較高優(yōu)先級的連續(xù)的請求(或響應(yīng))的編號,能夠繞過具有較低優(yōu)先級的請求(或響應(yīng))。用這樣的方法,較低優(yōu)先級的請求(或響應(yīng))就不能急需時鐘周期的實際編號。
還應(yīng)該注意到,為了同時優(yōu)化指令和數(shù)據(jù)流控制,應(yīng)該認(rèn)識到每個共享的資源都有與之相關(guān)的操作特性的設(shè)置(如訪問時間,比如在是DRAM型裝置時的CAS延時)。當(dāng)不止一個共享的資源被通用控制器104服務(wù)時,每個共享的資源具有不同的操作特性的設(shè)置,在有些實施方案中,這些特性的設(shè)置被存儲在連接到指令定序器116的查對表(LUT)118內(nèi)。指令定序器116使用由LUT118和存儲在資源標(biāo)志緩沖器114的資源標(biāo)志提供的信息,適當(dāng)?shù)嘏判蛑噶铐?02-210,形成排好序的指令220。當(dāng)共享的資源實際上是一組存儲裝置如多芯片模式,其中的每個裝置可以具有完全不同地操作特性時,尤其是這樣。
現(xiàn)在請參見圖4,按照本發(fā)明的實施方案通用控制器訪問共享的資源的過程400的詳細(xì)流程圖。過程400從402開始,系統(tǒng)生成訪問共享資源的指令。但共享的資源是基于存儲裝置的DRAM,該操作包括預(yù)充電、刷新、關(guān)閉、打開、讀和寫。比方說,處理器通過生成系統(tǒng)指令(即讀頁面)和相關(guān)的系統(tǒng)地址,請求存儲在共享的存儲器內(nèi)的存儲頁,相關(guān)的地址表明被請求的頁面被存儲的位置。在優(yōu)選的實施方案中,資源的狀態(tài)是在404確定的,使用,比如與共享的存儲器內(nèi)的激活的存儲位置相關(guān)的資源標(biāo)志。接下來,在406,決定了為執(zhí)行要求的共享資源的請求所要求的操作的步驟。在408,通用控制器基于執(zhí)行所要求的請求的要求的操作步驟,生成通用指令。比如,為了執(zhí)行讀頁面操作,先前打開的頁面必須關(guān)閉,新的頁面被激活,然后執(zhí)行讀操作,所有這些操作被理解為在一個單的通用指令結(jié)構(gòu)內(nèi)。一旦通用控制器構(gòu)成了通用指令,就使用共享資源的資源標(biāo)志和特殊的操作特性,然后在410,通用控制器確定在通用指令的不同項之間的適當(dāng)?shù)臅r序。排好序的指令在412發(fā)布到共享的資源,使用有些實施方案的實際步驟。最后,在414,共享的資源響應(yīng)排好序的指令,比如,提供存儲在由系統(tǒng)地址表示的位置內(nèi)的數(shù)據(jù)。
在本發(fā)明的一個實施方案中,通用控制器使用如圖5所示的過程500確定資源的狀態(tài)(402)和操作的步驟(404)。過程500從502開始,資源劃分標(biāo)識符(即存儲器地址寄存器)與資源標(biāo)識符(即資源標(biāo)志地址字段202)比較。在504,如果判定“命中”了(即新指令的地址和當(dāng)前的標(biāo)志地址字段相匹配),下一條指令(數(shù)據(jù)操作)就在506發(fā)布。反之,如果新指令的地址和當(dāng)前的標(biāo)志地址字段不相匹配(即未命中),就在508判斷舊頁面是否是打開的。如果舊頁面是打開的,就在510關(guān)閉舊頁面,在512打開新頁面。但是,如果舊頁面沒有打開,新頁面就在512被打開,以及無論什么情況,一旦新頁面被打開,下一條指令(數(shù)據(jù)操作)就在506發(fā)布。
在本發(fā)明的一個實施方案中,通用控制器根據(jù)如圖6所示的過程600確定操作步驟之間的適當(dāng)?shù)臅r序(410)。過程600從602開始,通用控制器比較指令的新步驟的第一指令和特定資源的最近的上一步驟的最后一條條指令。在604,通用控制器確定通用指令項之間的時序約束,通過比較新的通用指令的第一指令項和最近的上一條通用指令的最后的指令項。在一個實施方案中,通用控制器使用如表1所示的二維數(shù)組的形式的2索引地址查對表(LUT),其中數(shù)組的第一行代表舊的(即最近的上一條)指令,第一列代表新的指令。比如,參見表1,如果舊指令是讀頁面以及如果新指令是頁面關(guān)閉,新指令頁面關(guān)閉和舊指令讀頁面的交點(即5Φ)提供來那個操作之間最少的可以允許的時間量(即最少的實際發(fā)布時間)。一般地,存儲在LUT內(nèi)的信息是由共享資源制造商提供的。
表1
一旦確定了特定通用指令項的資源的實際約束,就將在606判斷是否還有其它指令項包括在通用指令中。如果沒有了其它指令項,在608,就存儲通用項及其相關(guān)的時序說明。反之,如果還有其它指令項包括在通用指令中,控制就返回到604,確定該項的相應(yīng)的物理時序約束。
但是,為了跟蹤具有存儲體編號的共享的存儲器108內(nèi)的物理頁的狀態(tài),比如說,大量的資源標(biāo)志要求大量的專用于資源標(biāo)志的緩沖器114的高速緩存器。這將減緩?fù)ㄓ每刂破?04的執(zhí)行,由于它要求大量的時間用于檢索存儲器的特定頁的特定資源標(biāo)志,每個存儲器可能位于分散的位置。參見圖7A,在一個實施方案中,頁面命中/錯過控制器702被包括在通用控制器104,用于減少頁面寄存器704的數(shù)量M,在多存儲體存儲器706中M比存儲體的數(shù)量N小,因為不是每個存儲體條都有它在M頁寄存器704內(nèi)的表達(dá)。在操作中,各M頁寄存器704存儲打開頁的地址和狀態(tài)數(shù)據(jù),以及隨機頁寄存器編號發(fā)生器708生成小于或等于對應(yīng)頁寄存器的M的隨機整數(shù),被打開頁的狀態(tài)所代替。比較器710并行地比較具有存儲體編號的輸入系統(tǒng)地址與所有M個寄存器的頁地址,具有四種可能的結(jié)果。
1)如果比較器710表明命中,請求的存儲體的要求的頁就是打開的,并準(zhǔn)備好訪問;2)如果比較器710表明命中存儲體,錯過頁面,通用控制器104就必須使用頁寄存器的頁地址關(guān)閉舊頁,使用系統(tǒng)地址的頁地址打開新頁;3)如果比較器710表明錯過了存儲體和頁,通用控制器104就必須關(guān)閉存儲體的所有頁,其編號由隨機頁號發(fā)生器給定,使用系統(tǒng)地址打開新頁,以及最后訪問請求的存儲體;和4)錯過了存儲體和頁,但至少有一個頁寄存器沒有被使用,該頁就將被利用以及新頁將被打開。
在一些實施方案中,隨機頁寄存器編號發(fā)生器708被最近最少使用(LUR)比較器712代替,如圖7B所示,判斷M個寄存器704中的哪一個最長時間沒有使用了(即最近最少使用)。
除了跟蹤多存儲體存儲器704中物理頁的狀態(tài),如圖8所示的存儲體訪問控制器800還包括N條寄存器802,對應(yīng)包括在多存儲體存儲器704內(nèi)的存儲體N的數(shù)量。存儲體寄存器802包括存儲體編號字段804,定義存儲體的標(biāo)識編號,關(guān)于存儲體的信息被存儲。存儲體寄存器802頁包括存儲體狀態(tài)字段,表明由存儲體編號字段804內(nèi)的存儲體編號識別的特定的存儲體的狀態(tài)。在一個特定的實施方案中,存儲體狀態(tài)字段806可以取表2中所示的那些值。
表2
隨著高速數(shù)據(jù)包定位的存儲器的發(fā)展,如同步鏈接動態(tài)隨機存取存儲器(SLDRAM),其傳輸總線數(shù)據(jù)速度達(dá)到400-800Mb/x/pin,存儲器訪問沖突帶來的問題大大增加了。如圖9A示出了按照本發(fā)明實施方案的基于多處理器系統(tǒng)900的一個典型SLDRAM。多處理器900包括通過系統(tǒng)總線906連接到控制器904的處理器。通用控制器904通過SLDRAM總線依次連接到同步鏈接DRAM(SDRAM)908和SLDRAM910,SLDRAM總線由單向指令總線912和雙向數(shù)據(jù)總線914構(gòu)成。應(yīng)該指出,盡管圖9A中只示出了兩個SLDRAM,任何數(shù)量的SLDRAM都可以通過總線912和914連接到通用控制器904。在一些情況下,SLDRAMs可以表現(xiàn)為緩沖模式,包括任何適當(dāng)?shù)臄?shù)量的SLDRAMs,如,該議題下的SLDRAM908。連接通用控制器904和各個SLDRAMs908和910的初始化/同步(I/S)總線916,為通用控制器904生成的初始信號和同步信號提供信號通道。
在本發(fā)明的一個實施方案中,打包的指令、地址和來自通用控制器904的控制信息,被選擇性地送到指令總線912上的SLDRAM908和SLDRAM910。數(shù)據(jù)總線914用于把打包的寫指令從通用控制器904傳輸?shù)絊LDRAM908和SLDRAM910中被選定的那個。或者,數(shù)據(jù)總線914也用于把打包的讀指令從SLDRAM908和SLDRAM910中被選定的一個傳輸?shù)酵ㄓ每刂破?04。應(yīng)該指出的是,指令總線912和數(shù)據(jù)914一般是以同樣的速度操作的,即400MB/s/p、600MB/s/p、800MB/s/p,等等。
多個控制信號由通用控制器904產(chǎn)生,并由指令總線912傳輸,這些信號包括,比如,差動自由運行時鐘信號(CCLK)、FLAG(標(biāo)志)信號、指令地址信號CA、LISTEN(監(jiān)聽)信號、LINKON(鏈路開)信號和RESET(復(fù)位)信號。一般地,數(shù)據(jù)包指令由4個連續(xù)的10位字組成,其中指令的第一字由FLAG信號的第一位“1”表示。在優(yōu)選的實施方案中,差動自由運行時鐘CCLK的兩個邊都被SLDRAM908和SLDRAM910使用,用來鎖存指令字。通過監(jiān)視指令總線912上的輸入信號,SLDRAM908和910響應(yīng)為HIGH的LISTEN信號??梢愿淖兊?,SLDRAM908和910響應(yīng)為LOW的LISTEN信號,通過輸入電源備用模式。LINKON信號和RESET信號分別用于關(guān)閉電源和上電,獲悉被選擇的SLDRAM908和910中的一個的狀態(tài),正如所期望的。
對本說明的剩余部分,將只詳細(xì)討論SLDRAM908,但是,認(rèn)為適當(dāng)?shù)娜魏螖?shù)量的SLDRAMs都可以連接到通用控制器904。如上所述,典型的SLDRAM裝置,如SLDRAM908,被分層地排列為存儲體、列、行、位以及存儲區(qū)域。重要的,應(yīng)該理解到各個可以實際觀察到的分層,彼此之間有不同的操作特性。這些操作特性包括但不局限于這些參數(shù)存儲器訪問時間、芯片調(diào)用時間、數(shù)據(jù)檢索時間等。應(yīng)該指出,多存儲體存儲器中的各存儲體一般具有相同的操作特性,而定義為不同裝置的區(qū)域如不同的存儲器類型或不同的存儲器組,各具不同指令和數(shù)據(jù)延時。比如說,本地存儲器組可以直接連接到存儲器控制器,而第二非本地存儲器組位于一塊板上,其中的干預(yù)驅(qū)動器增加了指令和數(shù)據(jù)延時,相對本地存儲器組來說。在其它情況下,用于構(gòu)成多芯片模式的不同的存儲器芯片可以看作是不同的存儲器區(qū)域。
更進一步參見圖9A所示的系統(tǒng),SLDRAM908是一個具有4個存儲器芯片的多芯片模式,芯片A、B、C、D各自能夠被指令總線912、數(shù)據(jù)總線914、I/S總線916單獨訪問。由于各個存儲器芯片A-D可以具有不同的操作特性(一般由制造商提供)為了優(yōu)化調(diào)度指令和數(shù)據(jù)包,通用控制器904能夠使用特定分層的和/或存儲區(qū)域的操作特性。
借助示例,圖9B示出了具有代表性的時序框圖,按照圖9所示的多處理器系統(tǒng)99的典型的SLDRAM交易。操作中,處理器通常生成處理器指令包,如讀指令950和寫指令952,于是SLDRAM908的適當(dāng)?shù)拇鎯w作出響應(yīng)。一般地,讀指令950和寫指令952是根據(jù)生成這些指令地處理器的特定的要求在系統(tǒng)總線906上管道傳輸?shù)模皇菫榱藘?yōu)化SLDRAM908的性能。系統(tǒng)時鐘CLKsys(未示出)提供必要的時序信號。
在本例中,處理器902a生成讀指令950,該指令具有位于SLDRAM908的內(nèi)存芯片A的內(nèi)存地址MA1,而處理器902b產(chǎn)生一個寫指令952,該指令同樣具有位于SLDRAM908的內(nèi)存芯片A的內(nèi)存地址MA2。在本例中,讀指令950比寫指令952先輸出到系統(tǒng)總線906。通用控制器904先接收讀指令950,接著根據(jù)該指令本身和指令地址MA1,用存儲于通用控制器904的目的地址的詳細(xì)信息執(zhí)行指令。一旦確定了最小傳送時間,通用控制器904就生成與接收到的處理器指令950相應(yīng)的SLDRAM指令包READ960,并發(fā)布到指令總線912。
通常,SLDRAM指令包由四個10位字組成,如表3所示典型情況,一個64M SLDRAM,具有8個存儲體,1024行地址和128列地址。如圖示,有3位是存儲體,10位是行地址,7位是列地址。必須指出的是,許多其它結(jié)構(gòu)和密度都是可能的,并且可以在所述的40位格式調(diào)節(jié),為任何被認(rèn)為適當(dāng)?shù)钠渌魏胃袷健I想姇r,通用控制器904根據(jù)SLDRAM對諸如存儲單元、行、列及其相關(guān)的操作特性等因素的輪詢,形成指令包,然后把它存儲起來。
指令包的第一個字包含芯片的ID位。SLDRAM將忽略與本地ID不匹配的所有指令。芯片的ID由通用控制器904在通電時用初始化和同步信號確定。這樣,通用控制器904借助生成單獨的芯片觸發(fā)信號和聯(lián)系邏輯,唯一尋址多處理器系統(tǒng)900中的各SLDRAM。
表3SLDRAM指令包結(jié)構(gòu)
由于讀指令950和寫指令952是管道傳輸?shù)?,通用控制?04在接收讀指令950(或者已經(jīng)存儲在緩沖器中)后才接收寫指令952,隨后根據(jù)寫指令952傳送SLDRAM指令包WRITE962。通用控制器904用MA2的詳細(xì)特征數(shù)據(jù)以及讀命令960的發(fā)布時間(即,發(fā)布時間)來生成最小發(fā)布時間和WRITE962的數(shù)據(jù)偏置,以避免與先前傳送的讀指令960相干擾,由于兩個指令都用到了同一個存儲體(A)。
以這種方法,至少根據(jù)特定的目標(biāo)尋址裝置的操作特性以及指令和數(shù)據(jù)包流的當(dāng)前狀態(tài),通用控制器904可以動態(tài)地調(diào)度SLDRAM指令包的發(fā)布。
現(xiàn)在參照圖10示出了按照本發(fā)明實施方案的的存儲控制器1000方框圖,應(yīng)當(dāng)說明的是,存儲控制器1000僅僅是圖1中的通用控制器104的一種可能的實施方案,因此不能被理解為本發(fā)明范圍的限制。存儲控制器1000包含系統(tǒng)接口1002,它通過系統(tǒng)總線906把處理器902和存儲調(diào)度器1006(被叫做調(diào)度器)連接起來。在本發(fā)明的一各實施方案中,系統(tǒng)接口1002用于將處理器902生成的存貯指令包的傳輸及其相應(yīng)的寫數(shù)據(jù)包提供給存儲器指令包調(diào)度器1004。如果調(diào)度器1006表明所有內(nèi)部緩沖器均滿,無法容納新指令,系統(tǒng)接口1002將拒絕任何新指令,直到調(diào)度器1006表示準(zhǔn)備號接受新指令。
一個同步鏈接媒介存取控制器(SLiMAC)1008提供調(diào)度器1006和SLDRAM908之間的物理接口。更具體地說,SLiMAC1008包含一個指令接口1010和一個數(shù)據(jù)接口1012,分別通過指令總線912和數(shù)據(jù)總線914把SLiMAC1008和SLDRAM908連接起來。在本發(fā)明優(yōu)選的實施方案中,指令接口1010按照相關(guān)的指令時鐘CCLK,將存儲指令從SLiMAC1008傳送到SLDRAM908。需要說明的是,在一些實施方案中,SLiMAC1008結(jié)合了一種時鐘加倍裝置,它用一種接口時鐘信號ICLK(可以達(dá)到大約100MHz)來生成指令時鐘信號CCLK,一般能達(dá)到200MHz。
在本發(fā)明的一個實施方案中,數(shù)據(jù)接口1012接受和傳送數(shù)據(jù)都通過數(shù)據(jù)總線914。需要說明的是,數(shù)據(jù)總線914的寬度大得足以支持所需的SLDRAM。因此,為了提供所需的帶寬,SLiMAC1008包括足夠多的數(shù)據(jù)接口。例如,如果數(shù)據(jù)總線914是32位寬(例如,每個SLDRAM16位),那么SLiMAC1008可以包括2個數(shù)據(jù)接口,每個能夠處理與SLDRAM相關(guān)的16位。按這種方法,SLiMAC1008包括的數(shù)據(jù)接口的數(shù)目可以與連接的SLDRAM的特定配置很好地相匹配。
與指令接口1010幾乎相同的方式,SLiMAC1008可以提供一個數(shù)據(jù)時鐘信號DCLK,同時讀數(shù)據(jù)從SLDRAM908傳送到SLiMAC1008。在本發(fā)明的一種實施方案中,數(shù)據(jù)時鐘DCLK是通過用時鐘加倍裝置把接口時鐘ICLK的頻率從大約100MHz加倍到大約1000MHz來產(chǎn)生。需要指出的是,接口時鐘信號ICLK,指令時鐘信號CCLK,和數(shù)據(jù)時鐘信號DCLK全部是同相的。
在本發(fā)明的一個優(yōu)選實施方案中,調(diào)度器1006包含了一個約束程序塊1016,用來從連接到其上的系統(tǒng)接口1002接收系統(tǒng)指令及其相關(guān)的系統(tǒng)地址數(shù)據(jù)。約束程序塊1016向重排序塊1018提供SLDRAM指令包數(shù)據(jù)及其相關(guān)的時序信息。寫緩沖器1020從系統(tǒng)接口1002接收寫數(shù)據(jù)。由于受調(diào)度器1006控制,讀數(shù)據(jù)通過讀緩沖器1022從數(shù)據(jù)接口1012傳輸,該緩沖器與數(shù)據(jù)總線相連,用來向系統(tǒng)接口1002提供讀數(shù)據(jù)。與初始化/同步化(I/S)總線916相連的I/S程序塊1024按需要向SLDRAM908提供合適的初始化和/或同步化信號。
操作中,調(diào)度器1006接收由處理器902產(chǎn)生的管道傳輸存儲指令包。一般地,存儲指令包由存儲指令及其相關(guān)的存儲地址組成。在本發(fā)明的一個實施方案中,調(diào)度器1006把與接收到的新指令相關(guān)的存儲地址譯碼,以便決定存儲指令和相關(guān)數(shù)據(jù)包(如果有的話)所指的目標(biāo)地址。一旦譯碼,調(diào)度器1006用所存儲的目標(biāo)地址特定裝置的特征數(shù)據(jù)以及與就在先前發(fā)布的存儲指令相關(guān)的信息,來傳送一個新的SLDRAM指令包。這個新的SLDRAM指令包輸出到指令總線912,并且最終送到由SLDRAM指令包中包含的芯片ID所指定的SLDRAM。
作為調(diào)度過程的一部分,調(diào)度器1006確定在前一個發(fā)布的指令后,發(fā)布新指令前所需的最少時間。由于,如上所述,分級標(biāo)準(zhǔn),比如SLDRAM的一個存儲單元,可以有不同的操作特性(通常由制造商提供),調(diào)度器1006輪詢各個在初始化中運行的SLDRAM。在一些實施方案中,如果為了確定操作參數(shù),相連的存儲器件不允許輪詢,那么存儲詳細(xì)參數(shù)(比如時序)可以直接寫入約束程序塊寄存器1016。一旦輪詢了SLDRAM,調(diào)度器1006就將存儲裝置詳細(xì)信息,以后將用來改進適當(dāng)?shù)恼{(diào)度協(xié)議。以這種方法,調(diào)度器1006能夠向任何數(shù)量和類型的SLDRAM恰當(dāng)?shù)靥峁┱{(diào)度服務(wù),而無須借助硬件或其它費時而昂貴的步驟。
圖11的示意圖中示出了按照本發(fā)明一個實施方案的約束程序塊1100。應(yīng)該理解,約束程序塊1100不過是如圖10所示的約束程序塊1016一個可能的實施方案,不能看作是限制。約束程序塊1100包括連接到系統(tǒng)接口1002的地址譯碼器1102,用于譯碼接收到的新的與處理器902生成的新存儲器指令相關(guān)的地址信號。譯碼后的新地址信號輸入到序列標(biāo)志寄存器1104,寄存器1104中存儲關(guān)于SLDRAM存儲體的狀態(tài)和相關(guān)信息,盡管有時只是存儲這些信息的一部分。序列標(biāo)志寄存器1104輸入到選擇器1106,根據(jù)譯碼后的新指令地址通過選擇的虛擬存儲體的相關(guān)的數(shù)據(jù),送到查對表(LUT)1108。
約束程序塊1100還包括頁連接到系統(tǒng)接口1102的區(qū)域比較器1110,用于接收新的地址信號提供區(qū)域標(biāo)識符表示新指令地址所在的存儲器區(qū)域。這樣,約束程序塊1100就能夠,至少根據(jù)部分的存儲區(qū)域的特定特性數(shù)據(jù),為新的存儲指令提供最佳的調(diào)度協(xié)議。區(qū)域比較器1110在輸入新指令信號時,向LUT1108提供區(qū)域標(biāo)識符。LUT1108依次提供最小的增量發(fā)布時間和數(shù)據(jù)偏置,用于將新指令及其相關(guān)的新地址轉(zhuǎn)換為SLDRAM指令包。應(yīng)該注意到,最小的增量發(fā)布時間是指發(fā)布新指令相對于只發(fā)布舊指令的增量時間(在時鐘周期內(nèi))。數(shù)據(jù)偏置時間是表示,為了在發(fā)布新指令后,接收關(guān)于新指令的讀數(shù)據(jù)包,在時鐘周期內(nèi)的增量時間。
在本發(fā)明的一個實施方案中,約束程序塊1100包括16個序列標(biāo)志存儲體寄存器,LUT1108能夠存儲4個時序區(qū)域的4個不同的參數(shù)設(shè)置,各具16個相關(guān)的寄存器。
圖12是SLDRAM總線信號的時序圖1200,按照本發(fā)明實施方案的接收到的處理器指令的響應(yīng)。應(yīng)該指出,表4匯總了由約束程序塊1100識別不同的生成的信號執(zhí)行的調(diào)度器。還應(yīng)該注意到,存儲器指令的形式為{指令,地址},其中“指令”代表要執(zhí)行的指令,“地址”是相應(yīng)的存儲位置。
參見表4和圖12,在系統(tǒng)時鐘周期Φ1期間,第一指令{OPENPAGE,1000}在地址譯碼器302和區(qū)域比較器1110同時接收到。對該示例,地址譯碼器1102把指令OPENPAGE的地址“1000”譯碼為“100”和“400”,區(qū)域比較器1110判斷該地址被包括在存儲器區(qū)域0之內(nèi)。由于指令OPENPAGE是接收到的第一條指令,沒有“命中”任何虛擬的存儲體B0-13,與之對應(yīng)的替代計數(shù)器設(shè)定為“0”。在所述的實施方案中,替代計數(shù)器根據(jù)偽隨機計數(shù)方案更新,而在其它實施方案中,可以使用隨機計數(shù)或其它適當(dāng)?shù)姆桨?。由于第一指令{OPENPAGE,1000}是開放型指令,沒有相應(yīng)的最小增量發(fā)布時間或數(shù)據(jù)偏置,因此,地址1000的頁面在第一指令時鐘周期ΦC1是打開的。
在下一個系統(tǒng)時鐘周期Φ2,指令{READ,1000}在約束程序塊1100被接收到,地址譯碼器1102將其譯碼為100和400(即,從前一個時鐘周期開始讀取在存儲地址1000打開的頁),又使區(qū)域比較器1110設(shè)定區(qū)域標(biāo)識符為REGION1。然而,這種情況下,已經(jīng)存儲在B0寄存器內(nèi)的先前的或其它被稱作“舊指令”的指令導(dǎo)致在B0“命中”,使選擇器輸出“READ”作為“舊指令”輸入到LUT1108。其它輸入包括區(qū)域比較器1104生成的區(qū)域標(biāo)識符REGION1和“新指令”輸入如READ。LUT1108利用存儲的特征數(shù)據(jù)生成3個指令周期Φ3的最小的增量發(fā)布時間,表明至少3個指令時鐘周期必須分開指令{OPENPAGE,1000}和指令{READ,1000}的發(fā)布。
這樣,在約束程序塊1100接收到的各個存儲指令包,根據(jù)存儲在LUT1108的特征數(shù)據(jù)和至少部分根據(jù)緊鄰的先前發(fā)布的指令。
現(xiàn)在將描述按照本發(fā)明的具體實施方案的從約束塊接收到的指令的重排序。圖13A-13C是時間線1302和1304,通過簡單的指令重排序示例,解釋一些借助重排序存儲指令可以實現(xiàn)的優(yōu)點,按照本發(fā)明的具體的實施方案。每條時間線示出了對應(yīng)兩個不同的存儲體的4條讀指令。CMD0和CMD1是針對相關(guān)存儲器的存儲體1的讀指令。CMD2和CMD3是針對相關(guān)存儲器的存儲體2的讀指令。時間線1302表示存儲指令排列在指令總線上,依次連接存儲器控制器和存儲器,其中的指令是存儲器控制器從系統(tǒng)處理器中接收的;CMD0占據(jù)時隙0,CMD1占據(jù)時隙3,CMD2占據(jù)時隙4,CMD3占據(jù)時隙7。每個時隙代表一個時鐘周期。
如上所述,給同一個存儲體的指令,在先前發(fā)布的指令的發(fā)布和調(diào)節(jié)服務(wù)之間必須具有一些小的延時。圖13A中每對指令之間由兩個時隙表明了這一點。如圖示,如果4條讀指令按照圖13A所示的順序發(fā)送到存儲器,指令總線將在可以利用的4個時鐘周期沒有被使用,即時隙1、2、5和6。正如將要討論的,根據(jù)本發(fā)明,通過重排序指令至少可以部分改善這種低效率現(xiàn)象。
圖13B和圖13C的時間線1304和1306,分別說明了根據(jù)本發(fā)明具體實施方案的圖13A的指令重排序和由此獲得的至少部分優(yōu)點。示例中,為了簡化起見,沒有考慮數(shù)據(jù)總線上的沖突。但是,如下所述,必須注意考慮存儲指令的有效重排序。由于CMD2和CMD3與CMD0和CMD1是針對不同的存儲體,兩對指令之間的存儲訪問延時是不相關(guān)的并可以忽略。也就是說,指令必須象時間線1304所示的那樣重新排列,CMD2排在緊接著CMD0之后的時隙1,CMD3排在緊接著CMD1之后的時隙4。這是因為在發(fā)布CMD0和CMD2或者CMD1和CMD3之間不需要任何延時,由于他們針對不同的存儲體。但是,如圖13C所示可以理解到的,最小的延時時間,如兩個時鐘周期,針對同一個存儲體的一對指令之間的延時必須保留。也就是說,指令的重排序并不包括試圖減少對同一存儲體的連續(xù)的指令之間的延時。
重排序指令的結(jié)果如圖13C所示,其中,4條指令在5個時鐘周期內(nèi)發(fā)布,只有兩個時隙沒有利用。當(dāng)然,將可以理解到,給另一個存儲體的第五條存儲指令可以插入到時隙2,從而進一步提高指令總線的利用率。
圖14為根據(jù)本發(fā)明具體實施方案設(shè)計的存儲器控制器的部分方框圖。重排序電路1400從系統(tǒng)處理器接收到輸入的存儲指令序列,即1、2、3。按照具體的實施方案,存儲指令通過約束電路(未示出)傳輸?shù)街嘏判螂娐?400,如前所述,約束電路施加發(fā)布時間限制到選擇的指令相對于給相關(guān)存儲器的同一邏輯存儲體的其它指令。指令被重排序在指令隊列1402中,由此把指令發(fā)布到存儲器。本例中,指令被重排序到序列1、3、2中。
原來的存儲指令序列,即1、2、3,被存儲在讀數(shù)據(jù)電路1406中的先進先出(FIFO)存儲器1404。在FIFO1404中的序列用于重排序從存儲器接受到的數(shù)據(jù),按照存儲器控制器原來接受到的指令的順序。但是,應(yīng)該說明,有些處理器期望有序的數(shù)據(jù),而其它處理器期望無序的數(shù)據(jù),因此,通過把FIFO1404切換為要求的開或者關(guān),就可以支持任何類型的數(shù)據(jù)順序。這是必要的,因為處理器“期望”接收到的數(shù)據(jù)的順序和原來傳輸?shù)酱鎯ζ骺刂破鞯闹噶畹捻樞蛳喾?br>
另外,因為來自存儲器的數(shù)據(jù)可能被存儲器控制器接收到的順序與處理器傳輸存儲質(zhì)量的原來的順序不相符,第三序列就存儲在數(shù)據(jù)隊列1408。該序列(本示例中是3、2、1)代表符合指令序列1、3、2的數(shù)據(jù),將被讀數(shù)據(jù)電路1406接收的順序。根據(jù)指令隊列序列和已知的關(guān)于存儲器的不同的邏輯存儲體的延時,重排序電路1400計算數(shù)據(jù)隊列序列。當(dāng)存儲器將數(shù)據(jù)按照存儲在數(shù)據(jù)隊列1408(即3、2、1)中的序列傳輸?shù)酱鎯ζ骺刂破鲿r,數(shù)據(jù)被存儲在讀數(shù)據(jù)緩沖器1410,并根據(jù)FIFO1404和數(shù)據(jù)隊列1408的信息重排序,這樣,數(shù)據(jù)就按照原來的指令序列順序即1、2、3,傳輸?shù)教幚砥鳌?br>
圖15為根據(jù)本發(fā)明的一個具體實施方案設(shè)計的那場控制器中的重排序電路1500的方框圖。重排序電路包括指令隊列1502,它存儲和重排序從系統(tǒng)處理器接收到的指令。指令隊列1502計算每條指令的發(fā)布時間、發(fā)布指令和從隊列中刪除指令,使用關(guān)于存儲器中同一邏輯存儲體的指令發(fā)布時間限制以及數(shù)據(jù)總線利用限制。
數(shù)據(jù)隊列1504存儲數(shù)據(jù)項表示對應(yīng)發(fā)布的存儲指令的的數(shù)據(jù)出現(xiàn)時間,計算隊列中每個新輸入的數(shù)據(jù)出現(xiàn)時間,并在相應(yīng)的存儲處理結(jié)束時刪除隊列輸入。
比較器陣列1506執(zhí)行沖突檢測功能,其中指令準(zhǔn)備從指令隊列1502(如圖通過多路復(fù)用器1508傳送的)發(fā)布的數(shù)據(jù)出現(xiàn)時間與在數(shù)據(jù)隊列1504中提交的先前發(fā)布的指令的數(shù)據(jù)出現(xiàn)時間比較。如果檢測到了沖突,就延時發(fā)布指令。
圖16是圖15所示的重排序電路1500的更詳細(xì)的方框圖。指令隊列1502包括6個指令隊列項1602,每個單元存儲61位關(guān)于特定存儲指令的信息,如圖17所示。指令字段1702包含40位指令包,詳細(xì)說明存儲指令。指令發(fā)布時間(Cd)字段1704為6位,表示指令可能被發(fā)布前的時鐘周期內(nèi)的增量時間。在1704內(nèi)的值由如上所述的限制電路確定,并涉及到對應(yīng)存儲器內(nèi)同一邏輯存儲體的最近的存儲指令。也就是說,在Cd字段內(nèi)的值表示到同一存儲體地兩條指令之間的延時。關(guān)于每個存儲體的要求的延時的信息存儲在限制電路內(nèi)并主要由存儲器的物理特性確定。只要在指令隊列中,Cd字段就對每個具有一些例外的時鐘周期遞減一次。比如,給同一邏輯存儲體的連續(xù)的指令之間的延時是不能改變的。因此,如果針對特定存儲體的指令的Cd字段達(dá)到0并沒有發(fā)布,到同一存儲體的其它指令的Cd字段也不能確定,直到第一指令被發(fā)布。
數(shù)據(jù)出現(xiàn)時間(Dd)字段1706為6位,表示存儲指令從指令隊列出現(xiàn)的時間到相應(yīng)的數(shù)據(jù)傳輸之間的時鐘周期的增量時間。Dd字段1706可能在指令隊列中不能改變。指令I(lǐng)D字段1708是5位的,唯一的識別指令包1702中的指令。該信息具有FIFO和數(shù)據(jù)隊列中的相應(yīng)的信息,用于跟蹤哪一個信息包是哪一個,以及哪些數(shù)據(jù)對應(yīng)哪些信息包,從而使指令和數(shù)據(jù)的重排序有效。邏輯存儲體(B)字段1710使3位的,表示指令包是針對存儲器內(nèi)的哪一個邏輯存儲體。最后,字符組指示器(Db)字段1712是1位的,表示數(shù)據(jù)是否被請求或?qū)懀紦?jù)一個或兩個時鐘周期。
回過來參見圖16,指令隊列的操作由指令隊列控制器1604來控制。控制器1604跟蹤可以利用的隊列項1602,控制輸入指令插入到特定的隊列1602,通過自由位置指示器1606??刂破?604也便于將指令隊列項信息插入到數(shù)據(jù)隊列1504,一旦對應(yīng)的指令已經(jīng)發(fā)布。根據(jù)具體的實施方案,指令插入到隊列1502,無須考慮在指令或數(shù)據(jù)總線上的自由時隙的可使用性。
指令可以通過多路復(fù)用器1608從指令隊列項1602中的任何一個發(fā)布到指令總線上,如果Cd的計數(shù)為0并且數(shù)據(jù)總線上沒有表示有沖突。也就是說,必須識別指令總線和/或數(shù)據(jù)總線上的空時隙。如果指令沒有讀或?qū)懼噶?因此不要求數(shù)據(jù)總線資源),就只需要指令總線時隙。如果指令是讀或者寫,在指令總線和數(shù)據(jù)總線上的時隙都需要。
控制器1604內(nèi)的0比較器1610用于作出第一判斷,即Cd=0。減法器1612用于,每個時鐘周期,從每個指令隊列項1602的Cd計數(shù)中減去“1”,除非出現(xiàn)如上所述的例外,即對沒有發(fā)布的特定指令Cd=0。在隊列控制器1604使用所有隊列項的Cd和B字段的情形下,生成一個屏蔽信號(M),防止發(fā)給同一邏輯存儲體的所有指令的Cd計數(shù)被減少。
根據(jù)具體的實施方案,如果有兩個隊列項的Cd=0,就發(fā)布具有最高優(yōu)先級的那一個(如最就的那個)。地址移位器1614確定隊列中的指令的優(yōu)先級,下面將結(jié)合附圖18更詳細(xì)地說明。按照另一個具體的實施方案,如果新指令到達(dá)指令隊列時其Cd計數(shù)已經(jīng)為0,該指令可以通過多路復(fù)用器1608直接傳輸?shù)酱鎯ζ鳌H绻鸆d計數(shù)為非0或者有其它Cd=0且優(yōu)先級更高的指令存儲在指令隊列,新指令就被存儲在指令隊列項1602內(nèi)。但是,如果指令隊列為空,新指令就可以被立即發(fā)布(如果Cd等于0)。
對讀或?qū)懼噶?,使用包含?zhǔn)備要發(fā)布的指令的指令隊列項1602的Dd和Db字段,檢測沖突。相應(yīng)指令的出現(xiàn)時間和寬度通過多路復(fù)用器1508傳送到比較器陣列1506,多路復(fù)用器1508由隊列控制器1604輪流控制。也就是說,隊列控制器1604控制多路復(fù)用器1508傳輸隊列項中指令發(fā)布時間即Cd為0的指令的數(shù)據(jù)出現(xiàn)時間和寬度(一個或者兩個時鐘周期)。寬度表示為一個或者兩時鐘周期,用加法器1616將Db位加上數(shù)據(jù)出現(xiàn)時間Dd,得到Dd+1為“0”(表示一個時鐘周期)或者為“1”(表示兩個時鐘周期)。然后,數(shù)據(jù)出現(xiàn)時間和寬度就在比較器陣列1506中與存儲在數(shù)據(jù)隊列1504中的先前發(fā)布的5條指令的數(shù)據(jù)出現(xiàn)時間和寬度相想比較。按照具體的實施方案,比較器陣列1506包括2×10個并行的比較器陣列。
圖18是圖16所示的地址移位器1614的具體實施方案的方框圖。如上所述,新指令按照空位置指示器1606被插入到任何自由指令隊列項1602。新指令要插入的指令隊列項1602的地址被插入到具有最高優(yōu)先級的第一個空位置(A0-A5)。結(jié)果是,地址移位器1614內(nèi)的位置A0存儲還沒有發(fā)布的舊指令的隊列項地址。當(dāng)指令從指令隊列發(fā)布,地址移位器1614內(nèi)的相應(yīng)項目舊被刪除,并且較低優(yōu)先級指令的地址移位到較高的優(yōu)先級位置。如上所述,當(dāng)指令隊列中的指令的Cd計數(shù)達(dá)到0,該指令可以被發(fā)布。但是,如果不止一條指令的Cd=0,最舊的指令,即具有最高優(yōu)先級的指令,正如地址移位器1614內(nèi)的其地址的位置所表明的,就被發(fā)布。
圖16中的數(shù)據(jù)隊列1504包括5個隊列項1652,各單元存儲關(guān)于先前發(fā)布的存儲指令的12位信息,如圖19所示。數(shù)據(jù)出現(xiàn)時間(Dd)字段1902是6位的,表示在指令隊列發(fā)布指令到接收到相應(yīng)的數(shù)據(jù)之間的時鐘周期內(nèi)的增量時間。每個指令隊列項1652的Dd計數(shù)被每個時鐘減,使用其中一個減法器1564,直到其值為0。當(dāng)Dd=0時,相應(yīng)的數(shù)據(jù)在數(shù)據(jù)總線上。因此,應(yīng)該理解到,在任何給定時間,只有一個數(shù)據(jù)隊列項1652的Dd=0。Dd計數(shù)達(dá)到0后,將對應(yīng)的數(shù)據(jù)隊列中的信息從數(shù)據(jù)隊列1504中刪除。
指令I(lǐng)D字段1904是5位的,它唯一的標(biāo)識發(fā)布的指令對應(yīng)的數(shù)據(jù)。該信息對于按照指令原來傳輸?shù)酱鎯ζ骺刂破鞯捻樞蛑嘏判驍?shù)據(jù)是很有用的。最后,字符組指示器(Db)字段1906是1位的,表明數(shù)據(jù)是否占據(jù)了一個或者兩個時鐘周期。
回過去參見圖16,如上所述,每個數(shù)據(jù)隊列項1652的數(shù)據(jù)出現(xiàn)時間(Dd)和寬度在比較器陣列1506中與準(zhǔn)備發(fā)布的,即Cd=0的指令隊列1502中的指令的Dd和寬度比較。寬度被表示為一個或者兩個時鐘周期,通過用加法器1656把Db位與數(shù)據(jù)出現(xiàn)時間相加,加法器向Dd+1提供“0”(表示一個時鐘周期)或者“1”(表示兩個時鐘周期)。如果比較的結(jié)果表明沒有沖突,就從指令隊列發(fā)布指令。
數(shù)據(jù)隊列控制器1658控制數(shù)據(jù)隊列1504的操作??瘴恢弥甘酒?660和指令隊列控制器1604一起,便于將新的數(shù)據(jù)隊列項信息插入到數(shù)據(jù)隊列項1652??瘴恢弥甘酒饕卜奖阌趶臄?shù)據(jù)隊列項1652刪除信息,當(dāng)相應(yīng)的存儲器訪問已經(jīng)結(jié)束時。0比較器1662和字符組指示器1664用于判定所有數(shù)據(jù)隊列項1652的Dd何時為0和數(shù)據(jù)傳輸何時不再占據(jù)數(shù)據(jù)總線,以及因而相應(yīng)的信息什么時候可以從數(shù)據(jù)隊列中刪除。
根據(jù)本發(fā)明的另一個具體實施方案,沖突檢測變得更復(fù)雜,盡管使用了二維的比較器和多路復(fù)用器數(shù)組。這種方法比前述的一維方法更加深入細(xì)致,它查看了指令隊列中的所有單元,而不僅僅查看準(zhǔn)備被發(fā)布的指令。其調(diào)度指令時不僅考慮先前發(fā)布的指令,還考慮數(shù)據(jù)總線上數(shù)據(jù)包的順序。
為了插入新指令,必須比較指令管道的準(zhǔn)備發(fā)布部分內(nèi)的每組兩個連續(xù)的階段,看是否能夠?qū)⑿轮噶畈迦肫渲?。比較實際是確定指令可以被插入的范圍。其范圍如下CLENx=指令長度Tcstart=tcA+CLENA(1)Tcend=tcB(2)其中的tcA和tcA是連續(xù)的管道單元A和B的發(fā)布時間。管道單元A在管道單元B之前,因此其發(fā)布時間是兩個發(fā)布時間中中較小的。如果要插入,在單元A和B之間至少必須有一個打開的時隙。因此N=Tcend-Tcstart+1(3)(其中,N=單元A和B之間發(fā)布時隙的數(shù)量)LEN<=tcb-tca-CLENA(4)在硬件中很容易簡化實現(xiàn)這樣的情況(tcB-CLENA)-(tcA+CLENA)=>0(5)范圍的起點和終點還規(guī)定了相關(guān)數(shù)據(jù)時隙的可能的范圍。該范圍必須與數(shù)據(jù)管道內(nèi)的各組連續(xù)的單元比較,看是否有重疊,以及新的范圍是什么。該比較存在5中不同的情況。
情況0在這種情況下,由數(shù)據(jù)時隙tdA和tdB描述的范圍完全在兩個連續(xù)的項M和N之外。這時tdA+CLENA=>tdN(6)或者,其中的DLENX=數(shù)據(jù)長度,tdB<=tdM+DLENM(7)在M和N之間不可能有數(shù)據(jù)時隙。
情況1在這種情況下,由數(shù)據(jù)時隙tdA和tdB描述的范圍完全在兩個連續(xù)的項M和N之內(nèi)。這時tdA+CLENA=>tdM+DLENM(8)和tdB-CLEN+DLEN<=tdN(其中CLEN是新指令長度,DLEN是時隙內(nèi)的新數(shù)據(jù)長度) (9)在這種情況下的可能的最早的數(shù)據(jù)時隙是tdA+LENA,具有對應(yīng)的指令發(fā)布時間tcA+CLENA情況2
在這種情況下,由數(shù)據(jù)時隙tdA和tdB描述的范圍跨越了項M。這時tdA+CLENA<tdM+DLENM(10)和tdB-CLEN+DLEN>tdM+DLENM和tdB-CLEN+DLEN<tdM(11)在這種情況下的可能的最早的數(shù)據(jù)時隙是tdM+DLENM+1,具有對應(yīng)的指令發(fā)布時間tdM+CLENM-DATA_OFFSET,其中DATA_OFFSET是指令發(fā)布時間和數(shù)據(jù)占用之間的時間。
情況3在這種情況下,由數(shù)據(jù)時隙tdA和tdB描述的范圍跨越了項N。這時tdA+CLENA>tdM+DLENM(12)和tdA+CLENA+DLEN<tdN(13)因此,在這種情況下的可能的最早的數(shù)據(jù)時隙是tdA+CLENM,具有對應(yīng)的指令發(fā)布時間tcA+CLENA+1。應(yīng)該指出,情況1也被包括在這種情況內(nèi)。
情況4在這種情況下,由數(shù)據(jù)時隙tdA和tdB描述的范圍,包括在由項M和項N定義的范圍內(nèi)。這時tdA+CLENA<tdM+DLENM(14)和tdB-LEN>CtdN(15)因此,在這種情況下的可能的最早的數(shù)據(jù)時隙是tdM+DLENM,具有對應(yīng)的指令發(fā)布時間tcM+CLENA+DATA_OFFSET,其中DATA_OFFSET=tdA-tCa。
很顯然,作為調(diào)度目的情況1和情況3是一樣的,因為總是使用可能的最早時隙。所以組合的情況就是情況3。類似的情況2和情況4是一樣的,由于期望的結(jié)果是tdM+LENM。在這種情況下,必須簡化地表示tdM被由tdA和tdB給出地范圍所跨越。輸入指令的附加的可能的最早發(fā)布時間(tc)和數(shù)據(jù)時隙(td)必須被考慮。必須比較每對指令管道的每對數(shù)據(jù)管道
<pre listing-type="program-listing"><![CDATA[ if(((tcB-CLEN)=>(tcA+CLENA))&&(tc<=(tcA+CLENA))){ if(((tdA+CLENA)<=(tdM+DLENM))&&((tdB-DLEN-(tdM+DLENM))>=0)){ td=tdM+DLENM; tc=tcA-tdA+tdM+DLENM;}else if(((tdN-(tdA+CLENA+DLENA))>=0)&&(tdA+CLENA)>=(tdM+DLENM)){ td=tdA+CLENA; tc=tcA+CLENA; } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; } } else if(((tcB-CLEN)=>tc)&&(tc>(tcA+CLENA))){ if((td<(tdM+DLENM))&&((tdB-DLEN-(tdM+DLENM))>=0)){ td=tdM+DLENM; tc=tc-td+tdM+DLENM; } else if(((tdN-(td+DLEN))>=0)&&td>=(tdM+DLENM)){ td=td; tc=tc; } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; } } else{ td=IMPOSSIBLE; tc=IMPOSSIBLE; }]]></pre>因此,對指令管道,需要的操作是tcB-CLEN=>tcA+CLENAtcB-CLEN=>tctc+CLEN<=tcBtc>tcA+CLENAtc<=tcA+CLENA而對數(shù)據(jù)管道需要的操作是tdA+CLENA<=tdM+DLENMtdA+CLENA>=tdM+DLENMtdB-DLEN>=tdM+DLENMtdN>=tdA+CLENA+DLENAtd<tdM+DLENMtdN>=td+DLENtd>=tdM+DLENM因此,判斷邏輯由上面所定義的比較器單元的陣列組成。優(yōu)化的選擇是最早的指令發(fā)布時間,這由簡單的優(yōu)先級編碼來確定。
重定序器管道控制邏輯必須動態(tài)地判斷指令和數(shù)據(jù)管道的各單元要進行什么操作。
在等待的指令管道內(nèi),每個管道單元具有4各可能的操作從先前的管道(管道接近)讀取,保持當(dāng)前管道(管道保持),從下一個單元讀取(管道備份),和從輸入指令總線讀取。正如前面所定義4種情況在管道內(nèi)的不同的點存在多種設(shè)定。同步鏈接媒介存取控制器(SLiMAC)所發(fā)布的單元被定義為項0,而發(fā)布的最快的單元被定義為項M。重定序器判斷邏輯發(fā)現(xiàn)在當(dāng)前管道中的最佳插入點是在項N-1和N之間,就在項N插入。
情況1-保持管道保持就是不發(fā)布到同步鏈接媒介存取控制器或者沒有插入新的指令。
情況2-保持&插入這種情況就是不發(fā)布到同步鏈接媒介存取控制器(SLiMAC),但要在管道中插入新的指令。如果是在項N插入,管道將從項0到項N-1保持,在項N插入,并從項N+1到項M備份。
情況3-發(fā)布這種情況是從單元0發(fā)布到SLiMAC,管道的復(fù)位將提前,因而單元0將包含單元1的內(nèi)容,單元1將包含單元2的內(nèi)容,以此類推,項M-1將包含項M的內(nèi)容。
情況4-發(fā)布&插入這種情況是從單元0發(fā)布到SLiMAC并在項N插入。這時,單元0到項N-2進行提前操作,項N-1進行插入操作,項N到項M保持。對單元進行提前操作就是存儲來自該單元后面項的數(shù)據(jù),在項N插入(在當(dāng)前管道的項N-1和項N之間插入項)實際上意味著插入的項將在更新的管道的位置N-1結(jié)束。
圖20示出了一個沖突檢測系統(tǒng)2000,它是圖15所示的沖突檢測系統(tǒng)的另一種實現(xiàn)方案。在這個實施方案中,沖突檢測系統(tǒng)2000重排序指令,以便達(dá)到最佳的指令順序,基于目標(biāo)響應(yīng)約束和在啟動程序控制器和目標(biāo)子系統(tǒng)之間確定數(shù)據(jù)傳輸?shù)淖罴褧r隙。因為指令的重排序不會導(dǎo)致總線上不同數(shù)據(jù)包的沖突,如果一指令數(shù)據(jù)傳輸涉及到特定指令將導(dǎo)致要求的數(shù)據(jù)沖突,插入檢測器2002就禁止發(fā)布該特定指令的。在所述的實施方案中,沖突檢測系統(tǒng)2000包括連接到指令隊列2004的沖突檢測器2002。
在所述的實施方案中,沖突檢測器2002檢測“將要發(fā)布的”指令(存儲在指令隊列2004中的指令)和“已經(jīng)發(fā)布的”指令(存儲在數(shù)據(jù)隊列2006)中所有的可能的數(shù)據(jù)沖突。在所述的實施方案中,有N個指令隊列2004,各自連接到多路復(fù)用器2008。N個指令隊列2004中的每一個通過排列用來存儲這些將要發(fā)布的指令,時間因素“d_timeND”,表明指令被發(fā)布到目標(biāo)裝置后,什么時候數(shù)據(jù)傳輸將出現(xiàn)在通用控制器104與目標(biāo)裝置(即共享的資源)108之間的數(shù)據(jù)總線上;字符組字節(jié)(bND)表明數(shù)據(jù)字符組傳輸;和讀/寫字節(jié)(rwND)。在所述的實施方案中,數(shù)據(jù)隊列2006存儲時間因素“d_timeD”表明對已經(jīng)發(fā)布到目標(biāo)裝置的請求,什么時候數(shù)據(jù)傳輸將出現(xiàn)在通用控制器104與目標(biāo)裝置108之間的數(shù)據(jù)總線上。指令隊列2006還存儲字符組字節(jié)(bND)和讀/寫字節(jié)(rwND)。
在優(yōu)選的實施方案中,沖突檢測系統(tǒng)2000包括隊列和鏈接控制器單元2010,用于存儲和重排序那些將要發(fā)布的指令。隊列和控制器單元2010還計算新的指令發(fā)布時間和數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上的時間。隊列和控制器單元2010也從指令隊列將發(fā)布了的項傳輸?shù)綌?shù)據(jù)隊列,以及當(dāng)指令被發(fā)布后系哦那個指令隊列中將其刪除。當(dāng)對存儲器的訪問結(jié)束后,隊列和控制器單元2010也從數(shù)據(jù)隊列中將數(shù)據(jù)項刪除。
參見圖21,每個對目標(biāo)裝置的讀/寫指令都有關(guān)于它的數(shù)據(jù)包傳輸,指令被發(fā)布到目標(biāo)裝置前,根據(jù)其時序信息檢查新數(shù)據(jù)包ND(新數(shù)據(jù)),看能否插入到數(shù)據(jù)隊列中而沒有沖突。如圖21所示的示例中,一個發(fā)布了的數(shù)據(jù)包D已經(jīng)被放在數(shù)據(jù)隊列中,一個新的數(shù)據(jù)包ND與發(fā)布了的數(shù)據(jù)包D相比較。應(yīng)該指出,關(guān)于發(fā)布了的數(shù)據(jù)包D和新的數(shù)據(jù)包ND都呈現(xiàn)字符組訪問。因此,在本示例中,在不導(dǎo)致沖突的前提下,新的數(shù)據(jù)包ND如何插入到發(fā)布了的數(shù)據(jù)包D,有兩種可能性。新的數(shù)據(jù)包ND可以放在發(fā)布了的數(shù)據(jù)包D的右側(cè)或者左側(cè)。
這個特定的示例說明了存儲器控制器的沖突檢測同時支持非字符組和字符組數(shù)據(jù)傳輸(即,4數(shù)據(jù)流)。由于數(shù)據(jù)總線的的雙向傳輸特性,一個時鐘周期必須插入到連續(xù)的讀-寫或者寫-讀傳輸之間。
應(yīng)該注意到,這里有很多可能的結(jié)果,現(xiàn)其中的一部分羅列如下。
1)如果ND放在D之前或之后,在D和ND之間不存儲沖突。
2)在連續(xù)的讀-寫或者寫-讀數(shù)據(jù)傳輸之間,插入了一個時鐘周期。每個指令單元和數(shù)據(jù)隊列存儲“rw”位,表明操作是否是“讀數(shù)據(jù)”(rw=0)或者“寫數(shù)據(jù)”(rw=1)。
3)數(shù)據(jù)包由一個數(shù)據(jù)流(沒有字符組傳輸)或者4個數(shù)據(jù)流(字符組傳輸)。每個指令單元和數(shù)據(jù)隊列存儲“burst”位,表明操作是否是“字符組傳輸”(burst=1)或者“沒有字符組傳輸”(burst=0)。
對每條將要發(fā)布的指令,必須比較要發(fā)布的數(shù)據(jù)包和發(fā)布了的數(shù)據(jù)包對<pre listing-type="program-listing"><![CDATA[//初始化變量collision=NO;//根據(jù)字符但位確定來自指令隊列的新數(shù)據(jù)色的結(jié)束if(burstND=1)then d_time_endND=d_timeND+3else d_time_endND=d_timeNDfori=1 to last_element_from_Data_Queuebegin//根據(jù)字符組位確定來自數(shù)據(jù)隊列的數(shù)據(jù)色的結(jié)束if (burstD[i]=1)then d_time_endD[i]=d_timeD[i]+3else d_time_endD[i]=d_timeD[i]//在一個周期內(nèi)必須執(zhí)行的兩個連續(xù)的讀/寫式寫/讀指令之間if- (rwD[i]=rwND)thenbegin d_time_endD[i]=d_time_endD[i]+1 d_time_endND=d_time_endND+1end//沖突檢測if NOT((d_timeND>d_time_endD[i])or(d_timeD[i]> d_time_endND))collision=Y(jié)ES; end.]]></pre>在本發(fā)明的其它實施方案中,公開了一種預(yù)測兩個連續(xù)的存儲器訪問之間的時間的裝置和方法,允許很快的計算新指令的最早的“指令發(fā)布時間”。請看圖22,它示出了一個預(yù)測器系統(tǒng)2200,該系統(tǒng)具有N頁計時器2202,存儲上一次發(fā)布指令到特定頁與預(yù)定下一次訪問該內(nèi)存之間的時間。下一次訪問同一頁可以是“關(guān)閉”、“打開”、“寫”或“讀”。輸入的新指令(比如,讀)選擇一特定的頁的表明特定頁訪問在發(fā)布之前要等待多長時間的計時器。之后,同一條新指令就選擇適當(dāng)?shù)臅r序查對表2204的內(nèi)容,必須插入到該指令(讀)與可能的下一條訪問同一頁的指令(關(guān)閉、打開、寫或讀)之間。計時器的分辨率為一個時鐘周期。
時序查對表-數(shù)據(jù)存儲時間,表明指令發(fā)布后多少個周期,數(shù)據(jù)總線上的數(shù)據(jù)將有效。如果新指令是非激活的,每個周期所有頁計數(shù)器的值直到其值達(dá)到“0”。
現(xiàn)在請參見圖23,在本發(fā)明的另一個實施方案中示出了具有根據(jù)本發(fā)明一個實施方案的裝置訪問優(yōu)先級區(qū)分器2302的裝置控制器2300。在所述的實施方案中,優(yōu)先級區(qū)分器2302包括請求隊列2303適合接收和存儲任何數(shù)量的裝置請求,連接到一個請求控制單元2304,部分用于從請求隊列2303的任何位置取特定的響應(yīng),并把所取到的響應(yīng)傳輸?shù)蕉鄠€共享裝置108中適當(dāng)?shù)哪且粋€。在所述的實施方案中,優(yōu)先級區(qū)分器2302還包括響應(yīng)隊列2306,用來接收和存儲連接到響應(yīng)控制器單元2308的共享的任何裝置108的響應(yīng),響應(yīng)控制器單元2308用于選擇發(fā)送到請求的裝置102的特定的存儲的響應(yīng)。
在優(yōu)選的實施方案中,每個響應(yīng)和請求具有與之相關(guān)的ID號150,如圖1E所示,這樣,每個請求及其相關(guān)的響應(yīng)具有相同的ID號150。如前所述,ID號150包括5個數(shù)據(jù)位,其中的第一和第二數(shù)據(jù)位是組選擇器字段152,識別特定的響應(yīng)/請求所屬的請求裝置的組(如在多處理器計算機環(huán)境中的處理器組)。還是如上所述,請求號字段(RN)153提供由組選擇器字段152識別的相關(guān)的請求的裝置的請求和/或響應(yīng)的編號,這樣,來自同一請求裝置的連續(xù)的請求,比如,具有連續(xù)的請求編號字段153。
在操作中,請求以及響應(yīng)控制器2304和2308都分別結(jié)合組優(yōu)先級選擇器寄存器154、活鎖計數(shù)器寄存器156和重排序寄存器2312結(jié)合。組優(yōu)先級選擇器寄存器154包括通過RN152識別的特定的請求/響應(yīng)組的優(yōu)先級信息,在一個實施方案中,值為“3”表示最高的優(yōu)先級,值為0表示最低的優(yōu)先級,這樣具有較高優(yōu)先級的請求就能繞過具有較低優(yōu)先級的請求。
為避免活鎖情況,活鎖計數(shù)器寄存器156包含關(guān)于多少具有較高優(yōu)先級的連續(xù)的請求(響應(yīng))能夠繞過具有較低優(yōu)先級的請求(響應(yīng))的信息。應(yīng)該指出,活鎖計數(shù)器寄存器156只有在具有較高優(yōu)先級的請求繞過具有較低優(yōu)先級的請求時,才是激活的。實際上,如果在適當(dāng)?shù)年犃兄袥]有具有較低優(yōu)先級的請求(響應(yīng)),活鎖計數(shù)器寄存器156就為非激活的。
盡管只是詳細(xì)地說明了本發(fā)明的很少的幾個實施方案,但我們應(yīng)該能夠理解到,在不背離本發(fā)明的實質(zhì)和超出本發(fā)明范圍的前提下,本發(fā)明可以用許多具體的形式實施。因此,所給出的示例是解釋性的,而不應(yīng)該看作是限制;本發(fā)明也不局限于在這里給出的細(xì)節(jié),卻可以在附后的權(quán)利要求的范圍內(nèi)改變。
權(quán)利要求
1.一種通過存儲器控制器加速包括在多存儲體型存儲器中的存儲體內(nèi)的存儲頁的存儲訪問速度的方法,其中的存儲器控制器包括多個頁寄存器,每個頁寄存器對應(yīng)多個存儲體中的一個,其中對應(yīng)特定存儲體的頁寄存器用于存儲特定的存儲體編號、位于特定的存儲體編號內(nèi)的打開的頁地址和打開的頁狀態(tài),以及其中的存儲器控制器還包括連接到多個頁寄存器的每個頁寄存器的可調(diào)整的比較器單元,包括接收輸入的系統(tǒng)地址請求,其中輸入的系統(tǒng)地址請求包括請求的存儲體編號和請求的頁編號;由比較器定位對應(yīng)請求的存儲體編號的頁寄存器;比較包括在定位的頁寄存器內(nèi)的頁地址和請求的頁地址;當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址相匹配時訪問在對應(yīng)請求的存儲體編號的存儲體中的請求的頁。
2.如權(quán)利要求1的方法,其中,當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址不相匹配時,則關(guān)閉對應(yīng)存儲的頁地址的存儲頁;打開對應(yīng)請求的頁地址的存儲頁;和訪問請求的存儲頁。
3.如權(quán)利要求2的方法,其中的存儲裝置是SDRAM。
4.如權(quán)利要求3的方法,其中的比較器是可調(diào)整比較器。
5.如權(quán)利要求4的方法,其中的可調(diào)整比較器根據(jù)多存儲體存儲裝置的操作特性進行配置。
6.如權(quán)利要求5的方法,其中的操作特性存儲在連接到存儲器控制器的地址空間控制器內(nèi)。
7.如權(quán)利要求6的方法,其中,當(dāng)確定了特定的存儲體編號時,特定存儲體的操作特性就用于配置可調(diào)整比較器。
8.一種通過存儲器控制器加速包括在具有一定數(shù)量的N存儲體的多存儲體型存儲器中的存儲體內(nèi)的存儲頁的訪問速度的方法,其中的存儲器控制器包括一些M頁寄存器,其中M頁寄存器的數(shù)量少于N存儲體的數(shù)量,因而不是N存儲體中的每一個都出現(xiàn)在M頁寄存器內(nèi),其中的頁寄存器用于存儲對應(yīng)于被選定的那個M存儲體的選定的存儲體編號,位于選擇的存儲體內(nèi)的打開頁地址和打開頁狀態(tài),以及其中的存儲器控制器還包括連接到多個頁寄存器的每個頁寄存器的可調(diào)整的比較器單元,以及其中的存儲器控制器還包括頁寄存器隨機編號發(fā)生器,用于隨機地生成1到M之間的一個整數(shù),包括接收輸入的系統(tǒng)地址請求,其中輸入的系統(tǒng)地址請求包括請求的存儲體編號和請求的頁編號;由比較器定位對應(yīng)請求的存儲體編號的頁寄存器;比較包括在定位的頁寄存器內(nèi)的頁地址和請求的頁地址;當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址相匹配時訪問在對應(yīng)請求的存儲體編號的存儲體中的請求的頁;和如果請求的存儲體和存儲的頁地址不相匹配時,使用頁地址關(guān)閉存儲體的寄存器的存儲的頁,存儲體的編號是由頁寄存器隨機編號發(fā)生器給定的;使用輸入的系統(tǒng)地址的頁地址打開新的頁;和訪問請求的存儲體。
9.如權(quán)利要求8的方法,其中的存儲裝置是SDRAM。
10.如權(quán)利要求9的方法,其中的比較器是可調(diào)整比較器。
11.如權(quán)利要求10的方法,其中的可調(diào)整比較器根據(jù)多存儲體存儲裝置的操作特性進行配置。
12.如權(quán)利要求11的方法,其中的操作特性存儲在連接到存儲器控制器的地址空間控制器內(nèi)。
13.如權(quán)利要求12的方法,其中,當(dāng)確定了特定的存儲體編號時,特定存儲體的操作特性就用于配置可調(diào)整比較器。
14.一種通過存儲器控制器加速包括在具有一定數(shù)量的N存儲體的多存儲體型存儲器中的存儲體內(nèi)的存儲頁的存儲訪問速度的方法,其中的存儲器控制器包括一些M頁寄存器,其中M頁寄存器的數(shù)量少于N存儲體的數(shù)量,因而不是N存儲體中的每一個都出現(xiàn)在M頁寄存器內(nèi),其中的頁寄存器用于存儲對應(yīng)于被選定的那個M存儲體的選定的存儲體編號、位于選擇的存儲體內(nèi)的打開頁地址和打開頁狀態(tài),以及其中的存儲器控制器還包括連接到多個頁寄存器的每個頁寄存器的可調(diào)整的比較器單元,以及其中的存儲器控制器還包括最近最少使用的發(fā)生器,用于隨機地生成最舊的沒有使用的頁寄存器的編號,包括接收輸入的系統(tǒng)地址請求,其中輸入的系統(tǒng)地址請求包括請求的存儲體編號和請求的頁編號;由比較器定位對應(yīng)請求的存儲體編號的頁寄存器;比較包括在定位的頁寄存器內(nèi)的頁地址和請求的頁地址;當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址相匹配時訪問在對應(yīng)請求的存儲體編號的存儲體中的請求的頁;和如果請求的存儲體和存儲的頁地址不相匹配時,使用頁地址關(guān)閉存儲體的寄存器的存儲的頁,存儲體的編號是由最近最少使用的編號發(fā)生器給定的;使用輸入的系統(tǒng)地址的頁地址打開新的頁;和訪問請求的存儲體。
15.如權(quán)利要求14的方法,其中的存儲裝置是SDRAM。
16.如權(quán)利要求15的方法,其中的比較器是可調(diào)整比較器。
17.如權(quán)利要求16的方法,其中的可調(diào)整比較器是根據(jù)多存儲體存儲裝置的操作特性進行配置。
18.如權(quán)利要求17的方法,其中的操作特性存儲在連接到存儲器控制器的地址空間控制器內(nèi)。
19.如權(quán)利要求18的方法,其中,當(dāng)確定了特定的存儲體編號時,特定存儲體的操作特性就用于配置可調(diào)整比較器。
全文摘要
描述了一種方法,通過存儲器控制器(904)加速包括在多存儲體型存儲器(908)中的存儲體內(nèi)的存儲頁的存儲器訪問速度。輸入的系統(tǒng)地址被存儲器控制器(904)接收,包括請求的存儲體編號和請求的頁編號。隨后,在包括在定位的頁寄存器內(nèi)的存儲的頁地址與請求的頁地址相比較之后,相應(yīng)請求的存儲體的頁寄存器編號被定位。然后,當(dāng)存儲的頁地址與請求的存儲體的請求的頁地址相匹配時,就訪問對應(yīng)請求的存儲體編號的存儲體內(nèi)的請求的頁。
文檔編號G06F12/06GK1333891SQ99815653
公開日2002年1月30日 申請日期1999年11月15日 優(yōu)先權(quán)日1998年11月16日
發(fā)明者H·斯特拉科夫斯基, P·斯扎貝爾斯基 申請人:因芬尼昂技術(shù)股份公司