亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

對(duì)不同時(shí)間執(zhí)行的存儲(chǔ)器訪問(wèn),檢測(cè)在數(shù)據(jù)總線上的數(shù)據(jù)沖突的裝置和方法

文檔序號(hào):6419552閱讀:221來(lái)源:國(guó)知局
專利名稱:對(duì)不同時(shí)間執(zhí)行的存儲(chǔ)器訪問(wèn),檢測(cè)在數(shù)據(jù)總線上的數(shù)據(jù)沖突的裝置和方法
背景技術(shù)
本發(fā)明總的涉及計(jì)算系統(tǒng)。更具體地,本發(fā)明涉及訪問(wèn)計(jì)算系統(tǒng)如多處理器計(jì)算機(jī)系統(tǒng)等內(nèi)的共享的資源。更進(jìn)一步說(shuō),本發(fā)明描述了在無(wú)序的存儲(chǔ)器訪問(wèn)或者不同時(shí)間執(zhí)行的存儲(chǔ)器訪問(wèn)條件下檢測(cè)數(shù)據(jù)總線上的數(shù)據(jù)沖突的技術(shù)。
背景技術(shù)
在基本的計(jì)算機(jī)系統(tǒng)中,中央處理器或CPU,按照存儲(chǔ)在相應(yīng)的存儲(chǔ)器內(nèi)的預(yù)定的程序或指令集來(lái)運(yùn)行,除了存儲(chǔ)處理器借助運(yùn)行的指令集或程序外,還提供了在處理器存儲(chǔ)器或相關(guān)的附加的存儲(chǔ)器中的存儲(chǔ)空間,以便于中央處理器在處理過(guò)程中處理信息?;谀囊粋€(gè)處理器用于執(zhí)行程序,附加的存儲(chǔ)器用作由處理器生成的信息的存儲(chǔ)器和臨時(shí)信息的存儲(chǔ)器,或“中間結(jié)果暫存器(scratchpad)”。另外,為了利用系統(tǒng)的輸出裝置,相關(guān)的存儲(chǔ)器提供放置處理器操作指令集的輸出信息的位置。
在為了訪問(wèn)內(nèi)存,很多組件(處理器、硬盤等)必須共享公共的總線的系統(tǒng)中,很可能出現(xiàn)存儲(chǔ)器訪問(wèn)沖突。尤其是在多處理器計(jì)算機(jī)系統(tǒng)中,系統(tǒng)使用不同的處理器同時(shí)的操作,訪問(wèn)內(nèi)存或共享的資源,變得復(fù)雜了。由于各個(gè)處理器或處理器系統(tǒng)很可能同時(shí)請(qǐng)求訪問(wèn)同一個(gè)內(nèi)存,處理器之間的沖突通常是不可避免的。實(shí)質(zhì)上,在多處理器計(jì)算機(jī)系統(tǒng)中,兩個(gè)或者多個(gè)處理器或處理器系統(tǒng)周期性的導(dǎo)致關(guān)于公共內(nèi)存的存儲(chǔ)指令的重疊。
解決共享內(nèi)存的存儲(chǔ)器訪問(wèn)請(qǐng)求的沖突的傳統(tǒng)方法包括,一種情況是,各個(gè)處理器使用完全冗余的內(nèi)存,并隔離處理器系統(tǒng)。但是,這種解決沖突的存儲(chǔ)器訪問(wèn)請(qǐng)求的方法經(jīng)常不能發(fā)揮多處理器系統(tǒng)的優(yōu)勢(shì)。如果按照同一數(shù)據(jù)提供并行的計(jì)算的方式操作,系統(tǒng)中一個(gè)處理器支持其它處理器的操作,這樣的多處理器系統(tǒng)極其高效。傳統(tǒng)地,這種處理器系統(tǒng)可能是分時(shí)的(time shared),其中的處理器競(jìng)爭(zhēng)訪問(wèn)共享的資源如內(nèi)存,或者處理器系統(tǒng)是雙重端口的,其中的各處理器由自己的內(nèi)存總線,比如其它的已經(jīng)給予訪問(wèn)時(shí),對(duì)其進(jìn)行排隊(duì)。
已經(jīng)有多種方法用于避免上述的沖突問(wèn)題。一種方法是,通過(guò)順序操作處理器或者通過(guò)分時(shí)操作處理器,來(lái)達(dá)到避免沖突。這種方法中,為了避免沖突,處理器只是的“依次”訪問(wèn)共享的資源。通常使用的這種系統(tǒng)包括“通行鈴(passing the ring)”或“標(biāo)記系統(tǒng)”,系統(tǒng)中,可能沖突的處理器被系統(tǒng)簡(jiǎn)單的輪詢,按照預(yù)定的與關(guān)于一組用戶的通行鈴?fù)瑯拥捻樞颉?br> 不幸的是,使用順序的處理器訪問(wèn)方法對(duì)整個(gè)計(jì)算機(jī)系統(tǒng)有很大的限制。這種限制源自于系統(tǒng)輪詢競(jìng)爭(zhēng)的處理器所用的實(shí)際時(shí)間。另外,如果單個(gè)的處理器在運(yùn)行并請(qǐng)求訪問(wèn)共享的內(nèi)存,比如,由于系統(tǒng)單步調(diào)試序列,處理器訪問(wèn)共享的資源時(shí),在每個(gè)內(nèi)存周期后有一個(gè)延時(shí)產(chǎn)生。
另一個(gè)傳統(tǒng)的避免沖突的方法是依靠在計(jì)算機(jī)系統(tǒng)內(nèi)的處理器中建立優(yōu)先級(jí)。這種方法假定各個(gè)處理器具有分配給它的關(guān)于系統(tǒng)重要性層次的優(yōu)先權(quán)。每次出現(xiàn)沖突時(shí),存儲(chǔ)器控制器只為具有最高優(yōu)先權(quán)的處理器提供訪問(wèn)。比如,在一個(gè)具有兩個(gè)處理器的系統(tǒng)中,第一和第二處理器訪問(wèn)共享的存儲(chǔ)器,該存儲(chǔ)器一般是要求周期性刷新存儲(chǔ)器所保留的存儲(chǔ)數(shù)據(jù)的動(dòng)態(tài)RAM(DRAM)型存儲(chǔ)器。一般地,DRAM型存儲(chǔ)器由單獨(dú)的獨(dú)立更新系統(tǒng)刷新。在這樣的多處理系統(tǒng)中,兩個(gè)處理器和更新系統(tǒng)都爭(zhēng)相訪問(wèn)公共存儲(chǔ)器。系統(tǒng)存儲(chǔ)器控制器將處理存儲(chǔ)器訪問(wèn)請(qǐng)求沖突,或者命令,正如分配給處理器的不同的優(yōu)先權(quán)和更新系統(tǒng)所決定的那樣。盡管這種系統(tǒng)解決了沖突,并且在一定程度上比純粹的順序沖突避免系統(tǒng)的效率更高,但該系統(tǒng)仍然缺乏靈激活。
另一種解決沖突的方法包括在存儲(chǔ)器控制器中加入決策能力。遺憾的是,存儲(chǔ)器控制器的決策部分要在時(shí)鐘系統(tǒng)的控制和時(shí)序下操作,問(wèn)題就來(lái)自于,在存儲(chǔ)器控制器能夠授權(quán)訪問(wèn)公共存儲(chǔ)器之前,用來(lái)執(zhí)行真正的決策的實(shí)際時(shí)間。
不幸的是,執(zhí)行真正的決策的問(wèn)題很大程度上削弱了傳統(tǒng)的存儲(chǔ)器控制器授權(quán)訪問(wèn)多條型存儲(chǔ)器系統(tǒng)的能力。在多存儲(chǔ)體(multi-bank)型存儲(chǔ)器系統(tǒng)中,實(shí)際的存儲(chǔ)器核心被分成指定的區(qū)域和組,其中存儲(chǔ)著要檢索的數(shù)據(jù)。雖然準(zhǔn)備了更快更有效的存儲(chǔ)器訪問(wèn),但傳統(tǒng)的存儲(chǔ)器控制器在處理多存儲(chǔ)體型存儲(chǔ)裝置時(shí)所要求的復(fù)雜性實(shí)際上減緩了整個(gè)系統(tǒng)的總的訪問(wèn)速度。
如上所述,很顯然,可以期望有一種分優(yōu)先級(jí)訪問(wèn)外部裝置的方法和設(shè)備。
發(fā)明概述按照本發(fā)明,描述了在無(wú)序的存儲(chǔ)器訪問(wèn)或者不同時(shí)間執(zhí)行的存儲(chǔ)器訪問(wèn)條件下檢測(cè)數(shù)據(jù)總線上的數(shù)據(jù)沖突的技術(shù)。一種指令重排序系統(tǒng),根據(jù)目標(biāo)響應(yīng)約束,得到最佳的指令次序,確定在啟動(dòng)控制器和目標(biāo)子系統(tǒng)之間的數(shù)據(jù)傳輸?shù)淖罴褧r(shí)隙,通過(guò)禁止要導(dǎo)致數(shù)據(jù)沖突的指令的發(fā)布,包括指令隊(duì)列,用于存儲(chǔ)將要發(fā)布的指令,表明指令被發(fā)布后,數(shù)據(jù)傳輸出現(xiàn)在控制器和目標(biāo)裝置之間的數(shù)據(jù)總線上的時(shí)間,表明數(shù)據(jù)字符組傳輸和讀寫位(r/w)的字符組位。連接到指令隊(duì)列的數(shù)據(jù)隊(duì)列,用于存儲(chǔ)表明已經(jīng)發(fā)布到目標(biāo)裝置的請(qǐng)求的數(shù)據(jù)傳輸何時(shí)將出現(xiàn)在控制器值的數(shù)據(jù)總線上的時(shí)間,以及用于存儲(chǔ)字符組位和寫(w)位。該系統(tǒng)還包括連接到數(shù)據(jù)隊(duì)列和指令隊(duì)列的沖突檢測(cè)器,用于檢測(cè)在數(shù)據(jù)總線上存儲(chǔ)在指令隊(duì)列中將要發(fā)布的指令和存儲(chǔ)在數(shù)據(jù)隊(duì)列中已經(jīng)發(fā)布的指令之間的可能的沖突。該系統(tǒng)還包括連接到?jīng)_突檢測(cè)器和數(shù)據(jù)隊(duì)列和指令隊(duì)列的隊(duì)列和鏈接控制器,用于存儲(chǔ)和重排序?qū)⒁l(fā)布的指令,其中的控制器計(jì)算指令的新的發(fā)布時(shí)間和數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上的時(shí)間。
參考說(shuō)明書的其余部分和附圖,可以更進(jìn)一步的理解本發(fā)明的特性和優(yōu)點(diǎn)。
附圖簡(jiǎn)述下面借助附圖中的實(shí)例來(lái)解釋本發(fā)明,而不意味著限制;附圖中相同的標(biāo)號(hào)代表相同的單元,其中

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