專利名稱:無序的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器序列器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于控制存儲(chǔ)器存取操作以便實(shí)現(xiàn)增加有效存儲(chǔ)器帶寬的存儲(chǔ)控制器的體系結(jié)構(gòu)和操作方法。
背景技術(shù):
在大多數(shù)計(jì)算機(jī)或數(shù)據(jù)處理系統(tǒng)中,主有源存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器(RAM)均是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。DRAM的結(jié)構(gòu)通常由組織成多個(gè)存儲(chǔ)體的多個(gè)存儲(chǔ)單元組成。每個(gè)存儲(chǔ)體對應(yīng)于存儲(chǔ)單元陣列,每個(gè)存儲(chǔ)單元分別與唯一的存儲(chǔ)地址有關(guān)聯(lián)。特別地,存儲(chǔ)體內(nèi)的存儲(chǔ)地址分別用行地址和列地址表示,其中每個(gè)行地址定義為存儲(chǔ)頁。因此,存儲(chǔ)器的每頁包含對應(yīng)于該頁內(nèi)的不同列表示的多個(gè)存儲(chǔ)單元。
當(dāng)執(zhí)行一系列存取請求時(shí),如果在當(dāng)前具有打開的另一頁的相同存儲(chǔ)體中找到當(dāng)前請求的頁,將這種狀況稱為“頁沖突”,因此,必須首先關(guān)閉,或“預(yù)充電”先前打開的頁。在預(yù)充電后,然后打開,或“激活”所請求的頁,然后執(zhí)行讀取或?qū)懭氩僮?。如果在不具有打開頁的存儲(chǔ)體中找到當(dāng)前請求的頁,出現(xiàn)“頁丟失”,因此,執(zhí)行要求激活過程。當(dāng)當(dāng)前存儲(chǔ)器存取請求是由于先前存儲(chǔ)器存取請求而已經(jīng)打開的頁時(shí),則出現(xiàn)所謂“頁命中”。
由于相對于頁命中請求,對頁沖突和頁丟失存儲(chǔ)器存取必須執(zhí)行額外的處理,所以執(zhí)行前者的兩個(gè)處理所需的時(shí)間顯著大于后者。在微型處理器技術(shù)發(fā)展的早期階段,在先入、先出的基礎(chǔ)上,接收和履行用于讀取和寫入操作的存取DRAM存儲(chǔ)器頁的請求。這種處理趨向于非常低效,導(dǎo)致大量頁丟失和沖突,因此,要求大量的專用處理器和/或存儲(chǔ)控制器資源來預(yù)充電和激活存儲(chǔ)頁。
最近,已經(jīng)開發(fā)了存儲(chǔ)器存取基于優(yōu)先級的更先進(jìn)的處理方法。存取請求的優(yōu)先級可以基于各種因素,諸如發(fā)送請求的設(shè)備的類型、所請求的存取類型,通過該請求存取所需的存儲(chǔ)器地址等等。然而,嚴(yán)格地根據(jù)優(yōu)先級提供存儲(chǔ)器存取的問題在于在不可接受的長時(shí)間周期中,會(huì)拒絕訪問低優(yōu)先級請求。
此外,隨著每個(gè)新一代計(jì)算機(jī)發(fā)展,顯著地增加存儲(chǔ)器時(shí)鐘的速度。隨著存儲(chǔ)器時(shí)鐘的速度增加,頁丟失存儲(chǔ)器操作、存儲(chǔ)體忙沖突和其他沖突的潛在出現(xiàn)及其損失的時(shí)間也變得日益顯著。特別地,在預(yù)充電、激活、等待存儲(chǔ)體可用性等期間,用來將信息傳送到每個(gè)被訪問的存儲(chǔ)單元和從每個(gè)被訪問的存儲(chǔ)單元傳送信息的數(shù)據(jù)總線是空閑的。
因此,需要一種解決方案來降低上述缺陷。特別地,如果重新排列所接收的存儲(chǔ)器存取請求序列的順序以避免或減小沖突,將大大地提高存儲(chǔ)器處理效率。通過避免或減小沖突,在減小或消除存儲(chǔ)器數(shù)據(jù)總線的空閑時(shí)間中,更有效地利用存儲(chǔ)器數(shù)據(jù)總線,因此,有效地增加存儲(chǔ)器系統(tǒng)的存儲(chǔ)器帶寬,以及允許在比先前盡可能的更短時(shí)間量中,出現(xiàn)更多存儲(chǔ)器存取事務(wù)。
發(fā)明內(nèi)容
本發(fā)明試圖通過重新排列順序接收的DRAM存取請求的順序以最小化沖突和延伸,諸如上述,同時(shí)按與初始接收請求相同的順序?qū)⑺埱蟮男畔⒎祷氐秸埱髥卧獊斫鉀Q在現(xiàn)有技術(shù)中識(shí)別的問題。
在本發(fā)明中,在存儲(chǔ)控制器的輸入隊(duì)列中,接連地接收存儲(chǔ)器存取請求。在請求輸入隊(duì)列后,排列序列矩陣,由此,由沖突檢測器識(shí)別連續(xù)請求之間的沖突或潛在延遲。沖突檢測器重新排序存儲(chǔ)器核心存取請求以便優(yōu)化到數(shù)據(jù)總線和來自數(shù)據(jù)總線的數(shù)據(jù)流。例如,如果在順序接收的存儲(chǔ)器請求中,由沖突檢測器識(shí)別出存儲(chǔ)體忙狀況或其它延遲,存儲(chǔ)控制器重新排列將執(zhí)行未決的存儲(chǔ)器請求的順序以便如果可能的話消除沖突或延遲,或者最小化延遲。
只要最早請求沒有尋址沖突,就能夠無序執(zhí)行寫入請求。
重新排序的序列保留在執(zhí)行隊(duì)列中,其中,標(biāo)記每個(gè)請求以表示在原始序列中的位置,使得在存儲(chǔ)控制器中適當(dāng)?shù)刂匦屡判蚍祷財(cái)?shù)據(jù)以匹配輸入的存儲(chǔ)器存取請求的順序。
命令選擇器選擇將由執(zhí)行隊(duì)列執(zhí)行的一個(gè)命令或多個(gè)命令。命令選擇器包含允許恒定速度DRAM序列器與多個(gè)時(shí)鐘速度接口而沒有復(fù)雜的時(shí)鐘相位調(diào)整操作的接口定時(shí)特性。
讀取返回隊(duì)列跟蹤從DRAM獲得的返回?cái)?shù)據(jù)?;谂c每個(gè)返回?cái)?shù)據(jù)有關(guān)聯(lián)的標(biāo)記,使讀取返回隊(duì)列按原始順序?qū)⒆x取數(shù)據(jù)返回到各自的請求器。特別地,在執(zhí)行讀取請求時(shí),如果與返回?cái)?shù)據(jù)有關(guān)聯(lián)的標(biāo)記對應(yīng)于存儲(chǔ)控制器中具有最長等待時(shí)間的讀取請求,將返回?cái)?shù)據(jù)返回到請求數(shù)據(jù)的系統(tǒng)單元。如果標(biāo)記不與具有最長等待時(shí)間的讀取請求有關(guān)聯(lián),則使返回?cái)?shù)據(jù)存儲(chǔ)在緩沖器中直到用于具有最長等待時(shí)間的所有讀取請求的返回?cái)?shù)據(jù)返回到它們各自的請求器為止。
另外,基于所接收的請求序列,能為每個(gè)請求指定緩沖區(qū)單元。當(dāng)從DRAM獲得的返回?cái)?shù)據(jù)放入對應(yīng)于輸入隊(duì)列中最早接收的讀取請求的緩沖區(qū)單元時(shí),將那個(gè)數(shù)據(jù)返回到適當(dāng)?shù)恼埱笃?。否則,所返回的數(shù)據(jù)保留在緩沖器中,直到執(zhí)行在輸入隊(duì)列中所接收的所有先前讀取的請求為止。用這種方式,按原始接收它們的順序,讀取返回隊(duì)列返回來自緩沖區(qū)單元的數(shù)據(jù)。
從下述結(jié)合附圖所述的本發(fā)明的優(yōu)先實(shí)施例的詳細(xì)描述,本發(fā)明的另外的特征、方面和優(yōu)點(diǎn)將變得顯而易見,其中圖1是根據(jù)本發(fā)明的存儲(chǔ)控制器的框圖。
圖2是示例說明用于按原始接收的請求順序,將通過重新排序的讀取請求執(zhí)行獲得的請求數(shù)據(jù)返回到它們各自的請求器的過程的流程圖。
圖3是在檢測到當(dāng)前定時(shí)矩陣中的沖突或延伸時(shí),由存儲(chǔ)控制器中的順序加載邏輯單元的沖突重新排序過程的第一實(shí)施例。
圖4是在檢測到當(dāng)前定時(shí)矩陣中的沖突或延伸時(shí),由存儲(chǔ)控制器中的順序加載邏輯單元的沖突重新排序過程的第二實(shí)施例。
圖5是在檢測到當(dāng)前定時(shí)矩陣中的沖突或延伸時(shí),由存儲(chǔ)控制器中的順序加載邏輯單元的沖突重新排序過程的第三實(shí)施例。
圖6是用于示例說明本發(fā)明的操作的時(shí)序圖。
圖7是可以利用本發(fā)明的存儲(chǔ)控制器的處理系統(tǒng)的框圖。
具體實(shí)施例方式
為便于描述,結(jié)合動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)設(shè)備,論述本發(fā)明的優(yōu)選實(shí)施例。不過,應(yīng)注意到本發(fā)明不限于包含DRAM的應(yīng)用。相反,應(yīng)該強(qiáng)調(diào),可以結(jié)合其他類型的隨機(jī)存取存儲(chǔ)器,諸如靜態(tài)RAM(SRAM)和許多不同次種類的DRAM,包括例如快頁模式DRAM(FPM DRAM)、擴(kuò)展數(shù)據(jù)輸出DRAM(EDO DRAM)、突發(fā)EDO DRAM、同步DRAM(SDRAM)、雙倍數(shù)據(jù)速率DRAM(DDR DRAM)、Rambus DRAM(RDRAM)等等,使用本發(fā)明的存儲(chǔ)控制器和方法。
圖1表示根據(jù)本發(fā)明的存儲(chǔ)控制器10,以及包括輸入隊(duì)列12、命令解析器14、命令發(fā)送器16、序列矩陣18、沖突檢測器20、命令序列器22、執(zhí)行隊(duì)列24、命令選擇器26、輸入/輸出緩沖器28、讀取返回隊(duì)列30和返回?cái)?shù)據(jù)緩沖器32。
存儲(chǔ)器存取請求進(jìn)入存儲(chǔ)控制器10以及根據(jù)先入先出被接收在輸入隊(duì)列12中。然后,通過命令解析器14順序地處理所接收的請求以便從每個(gè)請求信號中獲得相關(guān)信息,諸如存儲(chǔ)器地址(MA)數(shù)據(jù)、片選(CS)命令(指示將存取的請求存儲(chǔ)體)、行地址選擇(RAS)命令和列地址選擇(CAS)命令,以及用于表示該請求是讀取還是寫入操作的允許寫入(WE)狀態(tài)。
然后,將所獲得的信息提供到命令發(fā)送器16,其根據(jù)在序列矩陣18中接收的時(shí)鐘信號將所接收的存儲(chǔ)器存取請求放入序列矩陣18中。注意在啟動(dòng)該處理后,按在命令發(fā)送器16中接收它們的順序,將存取請求加載到該矩陣中。
沖突檢測器20監(jiān)視序列矩陣18中的信息以及校驗(yàn)在按序列矩陣中的當(dāng)前順序執(zhí)行矩陣中的請求序列時(shí)可能會(huì)發(fā)生的任何沖突或延遲。將由沖突檢測器20檢測到的任何沖突或延遲報(bào)告回到命令發(fā)送器16,然后,重新排列矩陣中的請求順序以便最小化或消除由于所識(shí)別出的沖突或延遲而使存儲(chǔ)器數(shù)據(jù)總線為空閑的時(shí)間??梢杂蓻_突檢測器20檢測到的沖突例如包括但不限于頁沖突和存儲(chǔ)體忙狀況,其中存儲(chǔ)體忙于執(zhí)行另一讀取或?qū)懭氩僮?。由沖突檢測器識(shí)別的延遲是在存儲(chǔ)器數(shù)據(jù)總線為空閑的時(shí)間期間,要求執(zhí)行準(zhǔn)備步驟的狀況,但不一定與執(zhí)行另一存儲(chǔ)器存取請求沖突。
通常,可以在序列矩陣18中量新排序讀取和寫入型存儲(chǔ)器存取請求。然而,如果有必要的話,最好在重新排序的序列不會(huì)產(chǎn)生與進(jìn)入輸入隊(duì)列中的先前接收的請求的任何尋址沖突或者干擾存儲(chǔ)在或?qū)⒋鎯?chǔ)在與矩陣中的任何其他存儲(chǔ)器存取請求有關(guān)的相關(guān)存儲(chǔ)單元中的數(shù)據(jù)的范圍上,僅重新排列寫入請求。
當(dāng)另外的存儲(chǔ)器存取請求移入序列矩陣18時(shí),同時(shí)也通過命令發(fā)送器16重新排列以便解決沖突或者減少延遲,將在序列前面的請求移入用作執(zhí)行重新排列的請求等待的發(fā)送緩沖器的執(zhí)行隊(duì)列24。根據(jù)用在命令發(fā)送器16中的沖突判決處理,按成批多個(gè)存取請求,根據(jù)時(shí)鐘信息在連續(xù)基礎(chǔ)上,或基于請求的預(yù)定累積大小,將請求移入執(zhí)行隊(duì)列24中。最好,用于執(zhí)行隊(duì)列24的時(shí)鐘(CLK)是與引導(dǎo)加載序列矩陣18相同的時(shí)鐘(CLK)。
命令序列器22排列與將從序列矩陣18中傳送到執(zhí)行隊(duì)列24的每個(gè)請求有關(guān)聯(lián)的各種命令,當(dāng)有必要插入數(shù)據(jù)控制命令和/或臨時(shí)將數(shù)據(jù)控制命令與特定的存儲(chǔ)器存取請求的讀取或?qū)懭朊罘珠_。例如,如果發(fā)送到執(zhí)行隊(duì)列24的讀取或?qū)懭胝埱笠箢A(yù)充電和/或激活操作,在相關(guān)讀取或?qū)懭氩僮髑?,將初始化預(yù)充電和/或激活操作的數(shù)據(jù)控制命令放入執(zhí)行隊(duì)列中,至少一個(gè)其它的讀取或?qū)懭朊钆c位于預(yù)充電和/或激活命令和相關(guān)聯(lián)的讀取或?qū)懭朊钪g的不同存取請求有關(guān)。
通過用這種方式將讀取或?qū)懭朊钆c這些數(shù)據(jù)控制命令分開來實(shí)現(xiàn)本發(fā)明的優(yōu)點(diǎn)。具體地,在上述例子中,能執(zhí)行上述例子中的預(yù)充電和/或激活操作,同時(shí)能立即執(zhí)行用于另一存儲(chǔ)器存取請求的讀取或?qū)懭朊睢R虼?,在?zhí)行預(yù)充電和/或激活操作期間,存儲(chǔ)器數(shù)據(jù)總線不必空閑。
當(dāng)將每個(gè)讀取請求傳送到執(zhí)行隊(duì)列時(shí),將標(biāo)記臨時(shí)增加到用于那個(gè)請求的數(shù)據(jù)控制命令,用于識(shí)別如在輸入隊(duì)列12中接收的每個(gè)請求的最初相對位置。另外,為每個(gè)讀取請求指定讀取緩沖器32中的各個(gè)緩沖區(qū)單元,這將在下面更詳細(xì)地描述。
根據(jù)輸入到命令選擇器26中的命令選擇時(shí)鐘(CMD CLK)信號,選擇來自執(zhí)行隊(duì)列24的前面的一個(gè)或多個(gè)存儲(chǔ)存取請求,以便在適當(dāng)?shù)腄RAM存儲(chǔ)體中執(zhí)行。例如,如果命令選擇時(shí)鐘信號是將請求加載到序列矩陣18中的時(shí)鐘速度的四倍速度,那么對隊(duì)列24的每個(gè)時(shí)鐘信號,從執(zhí)行隊(duì)列24中移出四個(gè)存取請求。在這種情況下,命令選擇器26調(diào)節(jié)請求選擇過程,使得以平均間隔執(zhí)行從隊(duì)列24中一次選擇的四個(gè)存取請求。如果從執(zhí)行隊(duì)列中選擇命令用于以和新請求進(jìn)入序列矩陣18相同的時(shí)鐘速度執(zhí)行,那么從存儲(chǔ)控制器10中省略命令選擇器26。
I/O緩沖器28是在每個(gè)存取請求中指定的讀取或?qū)懭氩僮髌陂g使用的過渡緩沖器。如果將執(zhí)行的當(dāng)前存取請求是寫入操作,將寫入所選擇的存儲(chǔ)單元中的數(shù)據(jù)臨時(shí)寫入到I/O緩沖器28中。類似地,在讀取操作中,從所選擇的存儲(chǔ)單元中讀取的數(shù)據(jù)臨時(shí)存儲(chǔ)在I/O緩沖器28中。
在執(zhí)行所請求的存儲(chǔ)器存取時(shí),將每個(gè)讀取請求放入到讀取返回列隊(duì)30中。讀取返回列隊(duì)30在執(zhí)行讀取請求時(shí),管理從DRAM中讀取的請求數(shù)據(jù),以及按在它們被接收在輸入隊(duì)列中的順序?qū)⑺埱蟮臄?shù)據(jù)返回到各個(gè)請求器。根據(jù)與返回的請求數(shù)據(jù)有關(guān)聯(lián)的標(biāo)簽或指定的緩沖區(qū)單元,從DRAM中讀取的數(shù)據(jù)被直接傳送到請求器或者被放入到返回?cái)?shù)據(jù)緩沖器32中。
現(xiàn)在參考圖2,在執(zhí)行讀取請求后,將所執(zhí)行的讀取請求以及通過暫時(shí)保存在I/O緩沖器28中的請求所獲得的數(shù)據(jù)返回到讀取請求隊(duì)列30中(步驟100)。如果讀取請求隊(duì)列30在步驟110確定返回讀取請求與最當(dāng)前標(biāo)記或指定的緩沖區(qū)單元有關(guān)聯(lián),在步驟120將通過那個(gè)請求獲得的數(shù)據(jù)返回到請求器,以及在步驟S130,更新當(dāng)前標(biāo)記/緩沖區(qū)單元信息。
標(biāo)記或緩沖區(qū)單元在其被指定到存儲(chǔ)控制器10中具有最長等待時(shí)間的讀取請求或者與其有關(guān)時(shí)則為“當(dāng)前”。讀取返回隊(duì)列30可以記錄最當(dāng)前標(biāo)記或緩沖區(qū)單元,例如,通過每次將返回?cái)?shù)據(jù)傳送到其請求器時(shí)使表示當(dāng)前標(biāo)記或緩沖區(qū)單元的計(jì)數(shù)值遞增。
如果返回讀取請求具有不是當(dāng)前的標(biāo)記或指定的緩沖區(qū)單元,則將數(shù)據(jù)放入讀取數(shù)據(jù)緩沖器32中(步驟140),直到相關(guān)標(biāo)記或緩沖區(qū)單元變成當(dāng)前為止。在步驟140中,將返回?cái)?shù)據(jù)放入緩沖器32中后,或在步驟130更新當(dāng)前標(biāo)記或緩沖區(qū)單元后,讀取返回隊(duì)列30確定是否能在返回?cái)?shù)據(jù)緩沖器32中找到對應(yīng)于當(dāng)前標(biāo)記或緩沖區(qū)單元的返回?cái)?shù)據(jù)。如果“是”,處理返回到步驟120,其中將當(dāng)前返回?cái)?shù)據(jù)傳送到那個(gè)數(shù)據(jù)的請求器,以及在步驟130中再次更新當(dāng)前標(biāo)記或緩沖區(qū)單元。如果在緩沖器32中未找出對應(yīng)于當(dāng)前標(biāo)記或緩沖區(qū)單元的返回?cái)?shù)據(jù),該處理返回到步驟100以便接收通過執(zhí)行該執(zhí)行隊(duì)列中的下一個(gè)讀取請求所獲得的返回?cái)?shù)據(jù)。由于圖2中所示的這一過程,按請求被接收在輸入隊(duì)列12中的順序?qū)⒆x取數(shù)據(jù)返回到各個(gè)請求器。
如果使用標(biāo)記來表示讀取請求的初始接收順序,在每個(gè)請求的數(shù)據(jù)控制命令中臨時(shí)插入標(biāo)記,但不包括在返回到請求器的讀取數(shù)據(jù)中。最好,根據(jù)對應(yīng)于DRAM的時(shí)鐘速度或其整數(shù)倍的時(shí)鐘速度執(zhí)行讀取返回隊(duì)列30和返回?cái)?shù)據(jù)緩沖器32的功能。同樣地,能分別通過更新當(dāng)前標(biāo)記/緩沖區(qū)單元和傳送返回?cái)?shù)據(jù),協(xié)調(diào)在讀取返回隊(duì)列30和返回?cái)?shù)據(jù)緩沖器32中接收的返回讀取請求和返回?cái)?shù)據(jù)。
將參考圖3所示的流程圖,描述由于所檢測的沖突或延遲,可以使用命令發(fā)送器16重新安排存儲(chǔ)器存取請求的沖突重新排序處理的第一實(shí)施例。在步驟200,將解析的最后一個(gè)存儲(chǔ)器存取請求放入到序列矩陣18中。在步驟210,校驗(yàn)存取所需的存儲(chǔ)體的狀態(tài)以便確定如果在序列矩陣18中的當(dāng)前位置執(zhí)行新到達(dá)的存儲(chǔ)器存取請求,是否發(fā)生任何沖突或延遲。
如果命令發(fā)送器16根據(jù)新到來的請求檢測沖突或延遲,命令發(fā)送器“在步驟240確定在其當(dāng)前位置前在存儲(chǔ)器存取請求的序列中是否能找到更適當(dāng)?shù)亩〞r(shí)位置。特別地,命令發(fā)送器16在新存取請求前首先確定在序列中是否存在未解決的沖突或延遲,以及如果是的話,在沒有沖突的時(shí)間期間能否執(zhí)行新存取請求。如果沒有未決的沖突或延遲,命令發(fā)送器16校驗(yàn)在矩陣的任何點(diǎn)處是否可以重新安排新存取請求,而在先前安排的請求中不引起任何新的沖突或延遲。如果不是,過程被重新引到步驟230,其中在具有未解決狀況的當(dāng)前定時(shí)序列的末端處留下新存取請求。如果在序列中提前發(fā)現(xiàn)適當(dāng)?shù)亩〞r(shí)位置,將新到來的請求插入序列中的那個(gè)位置處(步驟250)。然后,該過程返回到步驟200以便重復(fù)下一個(gè)輸入存儲(chǔ)器存取請求。
另一方面,如果相對于新到來的存取請求沒有檢測到?jīng)_突或延遲,則沖突檢測器20在步驟220接著確定在新到來的請求的當(dāng)前位置前,在定時(shí)矩陣中是否存在任何未解決的沖突或延遲。如果找到未解決的沖突或延遲,處理被重引到如上所述的步驟240。如果未找到現(xiàn)有沖突,命令發(fā)送器16在步驟230使該請求處于序列矩陣18中的其當(dāng)前位置,然后返回到步驟200以便重復(fù)用于下一個(gè)輸入存儲(chǔ)器存取請求的處理。
在該實(shí)施例中,隨著命令發(fā)送器16的后來重復(fù),在新存取請求到來的情況中,可以或不可以稍后解決任何未解決的沖突或延遲。如果沒有適當(dāng)?shù)恼埱蟮絹硪越档蜎_突或延遲,則存儲(chǔ)器存取請求將繼續(xù)按指定的順序被處理,但由于未解決的沖突或未降低的延遲,在利用存儲(chǔ)器數(shù)據(jù)總線方面有些低效。
在圖4所示的流程圖中,示例說明由命令發(fā)送器16執(zhí)行的沖突重新排序過程的第二實(shí)施例。當(dāng)另一存儲(chǔ)器存取請求移出序列矩陣18到執(zhí)行列隊(duì)24時(shí),在步驟300,使序列矩陣中下一行中的存取請求移入該序列矩陣中的第一單元。在步驟310,沖突檢測器20確定關(guān)于在序列矩陣頭處的存取請求(即,矩陣請求中的最早的一個(gè))是否存在沖突或延遲。如果未找到?jīng)_突,則在步驟320,存取請求傳送到執(zhí)行隊(duì)列24上,以及該過程返回到步驟300。
另一方面,如果在步驟310中檢測到?jīng)_突或延遲,沖突檢測器20將其注意力轉(zhuǎn)變到序列矩陣中的下一個(gè)存取請求,以及在步驟330確定在沒有任何沖突的時(shí)間位置處是否能執(zhí)行那個(gè)請求。如果通過在那個(gè)時(shí)間位置調(diào)整存取請求,沒有產(chǎn)生沖突或延遲,則在步驟320將該請求發(fā)送到執(zhí)行隊(duì)列24,以及該過程返回到步驟300。如果發(fā)現(xiàn)沖突或延遲,則該過程重復(fù)步驟330直到找到在那個(gè)時(shí)間位置適合執(zhí)行的請求為止。
在該實(shí)施例中,如果發(fā)現(xiàn)存在和序列矩陣頭處的請求的存儲(chǔ)器存取有關(guān)的沖突或延遲,則任何后續(xù)請求、拒絕的請求仍然保持在序列中的它們的當(dāng)前位置直到找到該請求的適當(dāng)時(shí)隙為止。通過該處理,不將存儲(chǔ)器存取發(fā)送到具有沖突或延遲狀況的執(zhí)行隊(duì)列24。同時(shí),基于等待時(shí)間為每個(gè)請求指定優(yōu)先級,以及在其中通過那個(gè)請求的定時(shí)未產(chǎn)生沖突狀況的最早可能時(shí)隙執(zhí)行每個(gè)請求。
參考圖4所示的實(shí)施例的變形如圖5所示,其中如果發(fā)現(xiàn)和序列矩陣頭處的存取請求的當(dāng)前定時(shí)位置有關(guān)的沖突或延遲,將不歡迎的請求發(fā)送到序列的后面,而不是留在序列中的其當(dāng)前位置。具體地,如果在步驟310發(fā)現(xiàn)沖突,執(zhí)行步驟420,其中將具有沖突或延遲的請求發(fā)送到序列的后面。然后,沖突檢測器20移動(dòng)到行中的下一個(gè)存取請求以便確定是否發(fā)現(xiàn)與那個(gè)請求有關(guān)的任何沖突或延遲(步驟430)。如果未檢測到?jīng)_突或延遲,將該請求發(fā)送到執(zhí)行隊(duì)列24,與圖4所示的過程類似。如果檢測到?jīng)_突或延遲,該過程返回到步驟420。
現(xiàn)在,參考圖6,示出了時(shí)序圖,其示例說明在操作本發(fā)明時(shí)獲得的結(jié)果。在該實(shí)例中,按所列出的順序?qū)⒆x取請求RD0、RD1和RD2接收在輸入隊(duì)列中。假定已經(jīng)檢測到關(guān)于RD0的頁沖突狀況,以及RD1和RD2均是其它存儲(chǔ)體中的頁命中。因?yàn)槿绻试S在RD1和RD2之前完成執(zhí)行RD0,則導(dǎo)致延遲,所以重新排列請求以便當(dāng)正執(zhí)行RD0的預(yù)充電操作時(shí),執(zhí)行用于RD1和RD2的讀取存儲(chǔ)器存取。用這種方式重新排列命令使得在等待RD0的預(yù)充電操作以完成執(zhí)行時(shí)最小化存儲(chǔ)器數(shù)據(jù)總線空閑的時(shí)間,從而導(dǎo)致存儲(chǔ)器數(shù)據(jù)總線的更高效利用。
在從DRAM中讀取用于RD1和RD2的數(shù)據(jù)后,執(zhí)行用于RD0的激活操作,然后執(zhí)行用于RD0的讀取訪問命令。按執(zhí)行讀取操作的順序?qū)⒆x取數(shù)據(jù)“1111”和“2222”傳送到返回?cái)?shù)據(jù)緩沖器。然而,在從適當(dāng)?shù)拇鎯?chǔ)單元中獲得“0000”數(shù)據(jù)后,首先將該數(shù)據(jù)返回到RD0的請求器。然后,按此順序?qū)?shù)據(jù)“1111”和“2222”返回到它們各自的請求器。
圖7示例說明可以利用本發(fā)明的存儲(chǔ)控制器10的示例性處理系統(tǒng)900。處理系統(tǒng)900包括連接到局部總線904的一個(gè)或多個(gè)處理器901。存儲(chǔ)控制器10和主總線橋903均連接局部總線904。處理系統(tǒng)900可以包括多個(gè)存儲(chǔ)控制器10和/或多個(gè)主總線橋903。存儲(chǔ)控制器10和主總線橋903可以被集成為單個(gè)器件906。
存儲(chǔ)控制器10還連接到一個(gè)或多個(gè)存儲(chǔ)器數(shù)據(jù)總線907。每個(gè)存儲(chǔ)器總線接受包括至少一個(gè)存儲(chǔ)器設(shè)備902的存儲(chǔ)元件908。存儲(chǔ)元件908形成為存儲(chǔ)卡或存儲(chǔ)器模塊。用在該系統(tǒng)900中的存儲(chǔ)器模塊的例子包括單內(nèi)聯(lián)存儲(chǔ)器模塊(SIMMs)和雙內(nèi)聯(lián)存儲(chǔ)器模塊(DIMMs)。存儲(chǔ)元件908可以包括一個(gè)或多個(gè)附加器件909。例如,在SIMM或DIMM中,該附加器件909可以是配置存儲(chǔ)器,諸如連續(xù)存在檢測(SPD)存儲(chǔ)器。
存儲(chǔ)控制器10還可以連接到高速緩沖存儲(chǔ)器905。高速緩沖存儲(chǔ)器905可以僅是處理系統(tǒng)中的高速緩沖存儲(chǔ)器。另外,其它的設(shè)備,例如處理器901也可以包括高速緩沖存儲(chǔ)器,其可以形成具有高速緩沖存儲(chǔ)器905的高速緩存體系。如果處理系統(tǒng)900包括為總線主控器或支持直接存儲(chǔ)器存取(DMA)的外設(shè)或控制器,存儲(chǔ)控制器10可以實(shí)現(xiàn)高速緩存相干協(xié)議。如果存儲(chǔ)控制器10連接到多個(gè)存儲(chǔ)器總線907,每個(gè)存儲(chǔ)器總線907可以并行操作,或可以將不同地址范圍映射到不同存儲(chǔ)器總線907。
主總線橋903連接到至少一個(gè)外圍總線910。各個(gè)設(shè)備,諸如外設(shè)或另外的總線橋可以連接到外圍總線910。這些設(shè)備可以包括存儲(chǔ)控制器911、其他I/O設(shè)備914、次總線橋915、多媒體處理器918和傳統(tǒng)設(shè)備接口920。主總線橋903還可以連接到一個(gè)或多個(gè)專用高速端口922。在個(gè)人計(jì)算機(jī)中,例如,專用端口可以是加速圖形接口(AGP),用來將高性能視頻卡連接到處理系統(tǒng)900。
存儲(chǔ)控制器911經(jīng)存儲(chǔ)總線912將一個(gè)或多個(gè)存儲(chǔ)設(shè)備913連接到外圍總線910。例如,存儲(chǔ)控制器911可以是SCSI控制器以及存儲(chǔ)設(shè)備913可以是SCSI盤。I/O設(shè)備914可以是任何類型的外設(shè)。例如,I/O設(shè)備914可以是局域網(wǎng)接口,諸如Ethernet卡。次總線橋可以用來經(jīng)另一總線將另外的設(shè)備連接到處理系統(tǒng)。例如,次總線橋可以是通用串行端口(USB)控制器,用來將USB設(shè)備917連接到處理系統(tǒng)900。多媒體處理器918可以是聲卡、視頻俘獲卡或任何其它類型的媒體接口,也可以連接到一個(gè)另外的設(shè)備,諸如揚(yáng)聲器919。傳統(tǒng)設(shè)備接口920用來將傳統(tǒng)的設(shè)備,例如老式鍵盤和鼠標(biāo)連接到處理系統(tǒng)900。
圖7中所示的處理系統(tǒng)900僅是示例性的處理系統(tǒng),通過該系統(tǒng)可以使用本發(fā)明。盡管圖7示例說明特別適合于通用計(jì)算機(jī)諸如個(gè)人計(jì)算機(jī)或工作站的處理體系結(jié)構(gòu),應(yīng)意識(shí)到,能做出眾所周知的改進(jìn)以便將處理系統(tǒng)900配置成更適合于用在各種應(yīng)用中。例如,使用依賴于連接到存儲(chǔ)元件908和/或存儲(chǔ)設(shè)備902的CPU901的更簡單的體系結(jié)構(gòu),可以實(shí)現(xiàn)要求處理的許多電子設(shè)備。這些電子設(shè)備可以包括,但不限于音頻/視頻處理器和記錄器、游戲控制臺(tái)、數(shù)字電視機(jī)、有線或無線電話、導(dǎo)航設(shè)備(包括基于全球定位系統(tǒng)(GPS)和/或慣性導(dǎo)航的系統(tǒng))以及數(shù)碼相機(jī)和/或記錄器。改進(jìn)可以包括例如消除不必要的元件,增加專用設(shè)備或電路,和/或集成多個(gè)設(shè)備。
盡管根據(jù)特定的實(shí)施例描述了本發(fā)明,許多其他的變形和改進(jìn)以及其他用途對本領(lǐng)域的技術(shù)人員來說是顯而易見的。因此,可取的是,本發(fā)明不是由在此具體公開的內(nèi)容來限定,而是由附加權(quán)利要求書來限定。
權(quán)利要求
1.一種存儲(chǔ)控制器,包括輸入隊(duì)列,用于按原始接收的順序從至少一個(gè)請求器中接收多個(gè)存儲(chǔ)器存取請求;序列矩陣,在其中排列多個(gè)存儲(chǔ)器存取請求,其中所述序列矩陣按排列順序存儲(chǔ)多個(gè)存儲(chǔ)器存取請求;命令發(fā)送器,用于排列所述序列矩陣中的多個(gè)存儲(chǔ)器存取請求的時(shí)標(biāo)序列;沖突檢測器,用于檢測在通過所述命令發(fā)送器在所述序列矩陣中排列的存儲(chǔ)器存取請求序列中是否出現(xiàn)沖突或延遲;執(zhí)行隊(duì)列,按不同于排列順序的次序排列存儲(chǔ)器存取請求以便執(zhí)行,從而避免或降低在所述檢測器中檢測的沖突或延遲;讀取返回隊(duì)列,用于在執(zhí)行來自所述執(zhí)行隊(duì)列的存儲(chǔ)器存取請求后,記錄存儲(chǔ)器存取請求的原始接收順序,以及用于按存儲(chǔ)器存取請求的原始接收順序?qū)⒄埱髷?shù)據(jù)返回到至少一個(gè)請求器;以及返回?cái)?shù)據(jù)緩沖器,用于保存從存儲(chǔ)器中讀取的請求數(shù)據(jù)直到將該數(shù)據(jù)返回到相關(guān)聯(lián)的存取請求的請求器為止。
2.如權(quán)利要求1所述的存儲(chǔ)控制器,進(jìn)一步包括命令解析器,用于將存儲(chǔ)器存取請求至少解析成讀取或?qū)懭朊?,以及?shù)據(jù)控制命令;命令序列器,用于排列用于在所述執(zhí)行隊(duì)列中的每個(gè)存取請求的數(shù)據(jù)控制命令以及讀取或?qū)懭朊睢?br>
3.如權(quán)利要求2所述的存儲(chǔ)控制器,進(jìn)一步包括命令選擇器,用于一次從所述執(zhí)行隊(duì)列中選擇用于執(zhí)行的至少一個(gè)命令。
4.如權(quán)利要求3所述的存儲(chǔ)控制器,其特征在于,一次選擇的命令數(shù)量取決于輸送到所述命令選擇器的命令選擇時(shí)鐘信號。
5.如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述檢測器能檢測順序執(zhí)行的存儲(chǔ)器存取請求中的潛在的存儲(chǔ)體忙狀況。
6.如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述檢測器能檢測順序執(zhí)行的存儲(chǔ)器存取請求中的潛在的頁沖突狀況。
7.如權(quán)利要求1所述的存儲(chǔ)控制器,其特征在于,所述檢測器能檢測順序執(zhí)行的存儲(chǔ)器存取請求中的潛在的頁丟失狀況。
8.一種存儲(chǔ)控制器,包括命令發(fā)送器,用于從多個(gè)請求器中接收多個(gè)存儲(chǔ)器存取請求信號,所述命令發(fā)送器按對應(yīng)于從所述請求器中接收請求的順序的次序接收存儲(chǔ)器存取請求信號,其中存儲(chǔ)器存取請求信號包括讀取請求和/或?qū)懭胝埱螅恢匦屡帕袉卧?,用于基于所檢測的在序列中的暫時(shí)最相鄰的請求之間的存儲(chǔ)器存取沖突或延遲,重新排列存儲(chǔ)器存取請求信號的順序,由此將按重新排列的順序完成存儲(chǔ)器存取請求的執(zhí)行;執(zhí)行單元,用于按重新排列的順序執(zhí)行存儲(chǔ)器存取請求;以及重新排序單元,用于將執(zhí)行的讀取請求重新排序成原始接收該請求的順序,由此按重新排序的順序?qū)⑼ㄟ^執(zhí)行讀取請求獲得的數(shù)據(jù)返回到所述請求器。
9.如權(quán)利要求8所述的存儲(chǔ)控制器,其特征在于,所述重新排列單元重新排列存儲(chǔ)器存取請求的序列,以避免在序列中暫時(shí)最鄰近請求之間的所檢測的存儲(chǔ)體忙狀況。
10.如權(quán)利要求8所述的存儲(chǔ)控制器,其特征在于,所述重新排列單元重新排列存儲(chǔ)器存取請求的序列,以使得在序列中暫時(shí)最鄰近請求之間的所檢測的存儲(chǔ)體忙狀況期間由等待存儲(chǔ)體變?yōu)榭捎糜诖嫒∷a(chǎn)生的延遲最小化。
11.如權(quán)利要求8所述的存儲(chǔ)控制器,其特征在于,所述重新排列單元重新排列存儲(chǔ)器存取請求的序列,以避免序列中暫時(shí)最鄰近請求之間的所檢測的頁沖突狀況。
12.如權(quán)利要求8所述的存儲(chǔ)控制器,其特征在于,所述重新排列單元重新排列存儲(chǔ)器存取請求的序列,以使得在序列中的暫時(shí)最鄰近請求之間的所檢測的頁沖突狀況期間由等待準(zhǔn)備存取存儲(chǔ)體所產(chǎn)生的延遲最小化。
13.如權(quán)利要求8所述的存儲(chǔ)控制器,其特征在于,所述重新排列單元重新排列存儲(chǔ)器存取請求的序列,以使得在序列中的暫時(shí)最鄰近請求之間的所檢測的頁丟失狀況期間由等待準(zhǔn)備存取存儲(chǔ)體所產(chǎn)生的延遲最小化。
14.一種存儲(chǔ)控制器,包括命令發(fā)送器,用于從多個(gè)請求器中接收多個(gè)存儲(chǔ)器存取請求信號,所述命令發(fā)送器按對應(yīng)于從所述請求器中接收請求的順序的次序接收存儲(chǔ)器存取請求信號,其中存儲(chǔ)器存取請求信號包括讀取請求和/或?qū)懭胝埱螅恢匦屡帕袉卧?,用于重新排列存?chǔ)器存取請求信號的順序,以便通過最小化存儲(chǔ)器數(shù)據(jù)總線的空閑時(shí)間,使得用來將數(shù)據(jù)傳送到存儲(chǔ)器結(jié)構(gòu)或傳送來自存儲(chǔ)器結(jié)構(gòu)的數(shù)據(jù)的存儲(chǔ)器數(shù)據(jù)總線的使用最大化,由此將按重新排列的順序完成存儲(chǔ)器存取請求的執(zhí)行;執(zhí)行單元,用于按重新排列的順序執(zhí)行存儲(chǔ)器存取請求;以及重新排序單元,用于將執(zhí)行的讀取請求重新排序成原始接收該請求的順序,由此按重新排序的順序?qū)⑼ㄟ^執(zhí)行讀取請求獲得的數(shù)據(jù)返回到所述請求器。
15.一種存儲(chǔ)控制器,包括輸入電路,用于按到來順序存儲(chǔ)多個(gè)存儲(chǔ)器存取請求;存儲(chǔ)器存取請求重新排列電路,用于將所存儲(chǔ)的存儲(chǔ)器存取請求重新排列成存儲(chǔ)器存取請求執(zhí)行順序,所述重新排列電路基于按所存儲(chǔ)的存儲(chǔ)器存取請求的順序檢測到存在的存儲(chǔ)器存取沖突和存儲(chǔ)器存取延遲的至少一個(gè),將所存儲(chǔ)的存儲(chǔ)器存取請求的順序重新排列成執(zhí)行順序;以及發(fā)送電路,用于按執(zhí)行順序輸出存儲(chǔ)器存取請求。
16.如權(quán)利要求15所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路基于檢測到的存儲(chǔ)體忙沖突,重新排列所存儲(chǔ)的存儲(chǔ)器存取請求。
17.如權(quán)利要求16所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路重新排列所存儲(chǔ)的存儲(chǔ)器存取請求,以避免所檢測的存儲(chǔ)體忙沖突。
18.如權(quán)利要求16所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路重新排列所存儲(chǔ)的存儲(chǔ)器存取請求,以便使得在按所存儲(chǔ)的存儲(chǔ)器存取請求順序執(zhí)行存儲(chǔ)器存取請求時(shí),在檢測的存儲(chǔ)體忙沖突期間由等待存儲(chǔ)體變?yōu)榭捎糜诖嫒∷a(chǎn)生的延遲最小化。
19.如權(quán)利要求15所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路基于按所存儲(chǔ)的存儲(chǔ)器存取請求的順序檢測的頁沖突狀況,重新排列所存儲(chǔ)的存儲(chǔ)器存取請求。
20.如權(quán)利要求19所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路重新排列所存儲(chǔ)的存儲(chǔ)器存取請求,以避免所檢測的頁沖突。
21.如權(quán)利要求19所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路重新排列所存儲(chǔ)的存儲(chǔ)器存取請求,以便使得在按所存儲(chǔ)的存儲(chǔ)器存取請求的順序檢測的頁沖突狀況期間由等待準(zhǔn)備存取存儲(chǔ)體所產(chǎn)生的延遲最小化。
22.如權(quán)利要求15所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路基于按所存儲(chǔ)的存儲(chǔ)器存取請求的順序檢測的頁丟失狀況,重新排列所存儲(chǔ)的存儲(chǔ)器存取請求。
23.如權(quán)利要求22所述的存儲(chǔ)控制器,其特征在于,所述重新排列電路重新排列所存儲(chǔ)的存儲(chǔ)器存取請求,以便使得在按所存儲(chǔ)的存儲(chǔ)器存取請求的順序檢測的頁丟失狀況期間由等待準(zhǔn)備存取存儲(chǔ)體所產(chǎn)生的延遲最小化。
24.如權(quán)利要求15所述的存儲(chǔ)控制器,進(jìn)一步包括執(zhí)行電路,用于按執(zhí)行順序執(zhí)行所存儲(chǔ)的存儲(chǔ)器存取請求;以及跟蹤電路,用于在執(zhí)行后,記錄所存儲(chǔ)的存儲(chǔ)器存取請求的到來順序。
25.如權(quán)利要求24所述的存儲(chǔ)控制器,其特征在于,所述跟蹤電路將標(biāo)記與對應(yīng)于在到來順序中其各自位置的每個(gè)存儲(chǔ)器存取請求相關(guān)聯(lián)。
26.如權(quán)利要求24所述的存儲(chǔ)控制器,其特征在于,所述跟蹤電路包括緩沖器,用于在執(zhí)行存儲(chǔ)器存取請求時(shí)組織從各個(gè)存儲(chǔ)單元中讀取的數(shù)據(jù),由此排列在該緩沖器中的數(shù)據(jù)能按原始到來順序從所述存儲(chǔ)控制器中被傳送出來。
27.一種用于控制存儲(chǔ)器存取操作的方法,包括按所接收的順序接收多個(gè)存儲(chǔ)器存取請求;檢測在序列中暫時(shí)最鄰近請求之間的存儲(chǔ)器存取沖突和延遲中的至少一個(gè);基于檢測結(jié)果,重新排列請求的順序;以及按重新排列的順序,執(zhí)行存儲(chǔ)器存取請求。
28.如權(quán)利要求27所述的方法,其特征在于,所述存儲(chǔ)器存取請求包括將數(shù)據(jù)寫入指定的存儲(chǔ)器地址的寫入請求以及從指定的存儲(chǔ)器地址讀出數(shù)據(jù)的讀取請求。
29.如權(quán)利要求28所述的方法,進(jìn)一步包括按接收序列中的原始順序,從所述存儲(chǔ)控制器中輸出通過執(zhí)行讀取請求從指定的存儲(chǔ)器地址中獲得的數(shù)據(jù)。
30.如權(quán)利要求28所述的方法,進(jìn)一步包括在執(zhí)行后,記錄存儲(chǔ)器存取請求的接收順序;以及按重新排列的順序,將通過執(zhí)行讀取操作獲得的請求數(shù)據(jù)傳送到各個(gè)請求器,其中按對應(yīng)于各個(gè)讀取請求的接收順序的次序?qū)⑺埱蟮臄?shù)據(jù)傳送到各個(gè)請求器。
31.如權(quán)利要求30所述的方法,其特征在于,記錄所接收的順序包括在重新排列請求順序之后將標(biāo)記與每個(gè)讀取請求相關(guān)聯(lián)以便表示原始接收讀取請求的順序。
32.如權(quán)利要求30所述的方法,其特征在于,記錄所接收的順序包括在重新排列請求順序之后指定將存儲(chǔ)在執(zhí)行每個(gè)各自的讀取請求后獲得的數(shù)據(jù)的緩沖區(qū)單元,其中所指定的緩沖區(qū)單元表示原始接收讀取請求的順序。
33.如權(quán)利要求27所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在按接收順序的當(dāng)前位置中執(zhí)行最新接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生沖突。
34.如權(quán)利要求33所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在按接收順序的當(dāng)前位置中執(zhí)行最新接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生存儲(chǔ)體忙沖突。
35.如權(quán)利要求34所述的方法,其特征在于,執(zhí)行重新排列步驟以避免存儲(chǔ)體忙沖突。
36.如權(quán)利要求34所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在所檢測的存儲(chǔ)體忙沖突期間由等待存儲(chǔ)體變?yōu)榭捎糜诖嫒∷a(chǎn)生的延遲最小化。
37.如權(quán)利要求33所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最近接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生頁沖突。
38.如權(quán)利要求37所述的方法,其特征在于,執(zhí)行重新排列步驟以避免頁沖突。
39.如權(quán)利要求37所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在檢測頁沖突期間由等待準(zhǔn)備存取的存儲(chǔ)體所產(chǎn)生的延遲最小化。
40.如權(quán)利要求27所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最近接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生延遲。
41.如權(quán)利要求40所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最近接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生頁丟失。
42.如權(quán)利要求41所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在檢測頁丟失期間由等待準(zhǔn)備存取的存儲(chǔ)體所產(chǎn)生的延遲最小化。
43.如權(quán)利要求27所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最早接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生沖突。
44.如權(quán)利要求43所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最早接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生存儲(chǔ)體忙沖突。
45.如權(quán)利要求44所述的方法,其特征在于,執(zhí)行重新排列步驟以避免存儲(chǔ)體忙沖突。
46.如權(quán)利要求44所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在檢測存儲(chǔ)體忙沖突期間由等待存儲(chǔ)體變?yōu)榭捎糜诖嫒∷a(chǎn)生的延遲最小化。
47.如權(quán)利要求43所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最早接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生頁沖突。
48.如權(quán)利要求47所述的方法,其特征在于,執(zhí)行重新排列步驟以避免頁沖突。
49.如權(quán)利要求47所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在所檢測的頁沖突期間由等待準(zhǔn)備存取的存儲(chǔ)體所產(chǎn)生的延遲最小化。
50.如權(quán)利要求43所述的方法,其特征在于,如果檢測到和所接收的序列中的最早接收的存儲(chǔ)器存取請求有關(guān)的沖突,則重新排列步驟包括將該最早接收的存儲(chǔ)器存取請求移動(dòng)到通常和序列中的最新接收的存儲(chǔ)器存取請求后的位置相對應(yīng)的序列的末端。
51.如權(quán)利要求27所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最早接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生延遲。
52.如權(quán)利要求51所述的方法,其特征在于,執(zhí)行檢測步驟以便檢測在執(zhí)行在所接收的序列的當(dāng)前位置中的最早接收的存儲(chǔ)器存取請求時(shí)是否產(chǎn)生頁丟失。
53.如權(quán)利要求52所述的方法,其特征在于,執(zhí)行重新排列步驟以便使得在檢測頁丟失期間由等待準(zhǔn)備存取的存儲(chǔ)體所產(chǎn)生的延遲最小化。
54.如權(quán)利要求51所述的方法,其特征在于,如果檢測到和所接收的序列中的最早接收的存儲(chǔ)器存取請求有關(guān)的沖突,則重新排列步驟包括將該最早接收的存儲(chǔ)器存取請求移動(dòng)到通常和序列中的最新接收的存儲(chǔ)器存取請求后的位置相對應(yīng)的序列的末端。
55.如權(quán)利要求27所述的方法,進(jìn)一步包括步驟將每個(gè)存儲(chǔ)器存取請求至少解析成讀取或?qū)懭朊钜约皵?shù)據(jù)控制命令;在重新排列請求序列的步驟中,單獨(dú)地排列用于所重新排列的序列中的每個(gè)請求的讀取或?qū)懭朊钜约皵?shù)據(jù)控制命令;以及從重新排列的序列中一次選擇至少一個(gè)命令以便執(zhí)行。
56.一種用于控制存儲(chǔ)器存取操作的方法,包括按接收順序接收包括讀取請求和寫入請求的多個(gè)存儲(chǔ)器存取請求;重新排列存儲(chǔ)器存取請求的順序以便最大化存儲(chǔ)器數(shù)據(jù)總線的利用;按重新排列的順序執(zhí)行存儲(chǔ)器存取請求。
57.如權(quán)利要求56所述的方法,進(jìn)一步包括步驟在按重新排列的順序執(zhí)行讀取請求時(shí),根據(jù)各個(gè)讀取請求的原始接收順序,排列通過執(zhí)行讀取請求所讀取的數(shù)據(jù);以及按排列順序從所述存儲(chǔ)控制器中輸出讀取數(shù)據(jù)。
58.一種用于控制存儲(chǔ)器存取操作的方法,包括按接收順序接收包括讀取請求和寫入請求的多個(gè)存儲(chǔ)器存取請求;重新排列存儲(chǔ)器存取請求的順序以便最小化存儲(chǔ)器存取沖突和延遲;按重新排列的順序執(zhí)行存儲(chǔ)器存取請求。
59.如權(quán)利要求58所述的方法,進(jìn)一步包括步驟在按重新排列的順序執(zhí)行讀取請求時(shí),根據(jù)各個(gè)讀取請求的原始接收順序,排列通過執(zhí)行讀取請求所讀取的數(shù)據(jù);以及按排列順序從所述存儲(chǔ)控制器中輸出讀取數(shù)據(jù)。
60.一種處理器系統(tǒng),包括處理器;至少一個(gè)存儲(chǔ)器設(shè)備,用于與所述處理器交換數(shù)據(jù);以及存儲(chǔ)控制器,用于管理從所述處理器到所述至少一個(gè)存儲(chǔ)器設(shè)備的存儲(chǔ)器存取請求,所述存儲(chǔ)控制器包括命令發(fā)送器,用于從多個(gè)請求器中接收多個(gè)存儲(chǔ)器存取請求信號,所述命令發(fā)送器按對應(yīng)于從所述請求器中接收請求的順序的次序接收存儲(chǔ)器存取請求信號,其中存儲(chǔ)器存取請求信號包括讀取請求和/或?qū)懭胝埱?;重新排列單元,用于基于所檢測的在序列中的暫時(shí)最相鄰的請求之間的存儲(chǔ)器存取沖突或延遲,重新排列存儲(chǔ)器存取請求信號的順序,由此將按重新排列的順序完成存儲(chǔ)器存取請求的執(zhí)行;執(zhí)行單元,用于按重新排列的順序執(zhí)行存儲(chǔ)器存取請求;以及重新排序單元,用于將執(zhí)行的讀取請求重新排序成原始接收該請求的順序,由此按重新排序的順序?qū)⑼ㄟ^執(zhí)行讀取請求獲得的數(shù)據(jù)返回到所述請求器。
61.一種處理器系統(tǒng),包括處理器;至少一個(gè)存儲(chǔ)器設(shè)備,用于與所述處理器交換數(shù)據(jù);以及存儲(chǔ)控制器,用于管理從所述處理器到所述至少一個(gè)存儲(chǔ)器設(shè)備的存儲(chǔ)器存取請求,所述存儲(chǔ)控制器包括命令發(fā)送器,用于從多個(gè)請求器中接收多個(gè)存儲(chǔ)器存取請求信號,所述命令發(fā)送器按對應(yīng)于從所述請求器中接收請求的順序的次序接收存儲(chǔ)器存取請求信號,其中存儲(chǔ)器存取請求信號包括讀取請求和/或?qū)懭胝埱?;重新排列單元,用于重新排列存?chǔ)器存取請求信號的順序,以便通過最小化存儲(chǔ)器數(shù)據(jù)總線的空閑時(shí)間,使得用來將數(shù)據(jù)傳送到存儲(chǔ)器結(jié)構(gòu)或傳送來自存儲(chǔ)器結(jié)構(gòu)的數(shù)據(jù)的存儲(chǔ)器數(shù)據(jù)總線的使用最大化,由此將按重新排列的順序完成存儲(chǔ)器存取請求的執(zhí)行;執(zhí)行單元,用于按重新排列的順序執(zhí)行存儲(chǔ)器存取請求;以及重新排序單元,用于將執(zhí)行的讀取請求重新排序成原始接收請求的順序,由此按重新排序的順序?qū)⑼ㄟ^執(zhí)行讀取請求獲得的數(shù)據(jù)返回到所述請求器。
全文摘要
在存儲(chǔ)控制器的存儲(chǔ)器請求隊(duì)列中順序地接收存儲(chǔ)器存取請求。檢測在按所接收的順序執(zhí)行存儲(chǔ)器存取請求時(shí)將發(fā)生的在暫時(shí)最鄰近的請求之間的任何沖突或潛在延遲,以及重新排列該存儲(chǔ)器存取請求的接收順序以避免或最小化沖突或延遲,以及優(yōu)化到存儲(chǔ)器數(shù)據(jù)總線的數(shù)據(jù)流或來自存儲(chǔ)器數(shù)據(jù)總線的數(shù)據(jù)流。按重新排序的順序執(zhí)行存儲(chǔ)器存取請求,同時(shí)跟蹤請求的原始接收順序。在執(zhí)行后,按原始接收讀取請求的順序?qū)⑼ㄟ^執(zhí)行讀取型存儲(chǔ)器存取請求從存儲(chǔ)器設(shè)備中讀取的數(shù)據(jù)傳送到各個(gè)請求器。
文檔編號G06F13/16GK1669011SQ03816773
公開日2005年9月14日 申請日期2003年5月14日 優(yōu)先權(quán)日2002年5月14日
發(fā)明者J·M·耶德洛 申請人:微米技術(shù)有限公司