欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

存取緩沖器的制作方法

文檔序號(hào):6353219閱讀:229來源:國知局
專利名稱:存取緩沖器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于對(duì)用于分組緩沖的諸如一個(gè)或多個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 之類的一個(gè)或多個(gè)存儲(chǔ)器器件的存取進(jìn)行控制的存取緩沖器。本發(fā)明也涉及包括這種存取 緩沖器的存儲(chǔ)器控制器并且涉及包括該存儲(chǔ)器控制器的數(shù)據(jù)處理系統(tǒng)。
背景技術(shù)
因?yàn)閯?dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)的低成本和低功率,所以往往使用動(dòng)態(tài)隨機(jī)存取 存儲(chǔ)器(DRAM)來實(shí)施分組緩沖器,例如排隊(duì)器件。然而,DRAM由于其長的等待時(shí)間以及其 對(duì)隨機(jī)存取的約束而提出挑戰(zhàn)。DRAM被成排(bank)地組織并且DRAM的物理性質(zhì)對(duì)排存 取提出限制。例如,存取參數(shù)行循環(huán)時(shí)間tRC給出對(duì)DRAM排的兩個(gè)連續(xù)存取之間的最小時(shí) 間。另一個(gè)存取參數(shù)滾動(dòng)時(shí)間幀tFAW限制時(shí)間窗口內(nèi)的行激活命令的數(shù)量,在所述滾動(dòng)時(shí) 間幀tFAW中可以同時(shí)進(jìn)行對(duì)相同DRAM器件的最大四行激活。行是排的一部分。在可以執(zhí) 行對(duì)行內(nèi)的地址的讀或?qū)懼?,必須激活該行。DRAM的存儲(chǔ)器控制器接收針對(duì)DRAM的不同排的讀和寫請(qǐng)求。由于就每時(shí)間單位 的存取而言DRAM帶寬往往是瓶頸,所以DRAM的存儲(chǔ)器控制器可以重新布置讀和寫請(qǐng)求的 順序,使得最大化存儲(chǔ)器接口的利用。一種優(yōu)化是以固定的順序循環(huán)地存取這些排,因而確保對(duì)任一 DRAM排的兩個(gè)連 續(xù)存取之間的時(shí)間超過行循環(huán)時(shí)間tRC。另一種優(yōu)化是重新布置讀請(qǐng)求和寫請(qǐng)求,使得多個(gè)讀請(qǐng)求后面是多個(gè)寫請(qǐng)求;例 如,把序列Sl = (Rl, W2, R3, W4)重新布置成S2 = (Rl, R3, W2, W4),其中R代表讀,W 代表寫并且數(shù)字指示其中存儲(chǔ)器控制器接收請(qǐng)求的順序。對(duì)于在對(duì)DRAM的讀和寫存取之 間的轉(zhuǎn)向而言經(jīng)常存在帶寬懲罰,因此S2比Sl在更短的時(shí)間內(nèi)完成。Bains的已公開美國申請(qǐng)US 2004/0236921 Al揭示了一種改進(jìn)高速緩存數(shù)據(jù)總 線上的帶寬使得可以更高效地使用諸如DRAM之類的高速緩存存儲(chǔ)器的方法。在一個(gè)實(shí)施 例中,重新排序讀或?qū)懘嫒∫愿咝У乩脭?shù)據(jù)總線上的帶寬。Van Hook等人的美國專利US 6,564,304 Bl揭示了一種用于對(duì)圖形處理系統(tǒng)中的 存儲(chǔ)器進(jìn)行存取的存儲(chǔ)器處理系統(tǒng),其中存儲(chǔ)器控制器仲裁來自多個(gè)存儲(chǔ)器請(qǐng)求器的存儲(chǔ) 器存取請(qǐng)求。讀被分組在一起并且寫被分組在一起以避免模式切換。然而,例如,如果DRAM排中的地址在變成寫之前被讀,則諸如讀和寫存取之類的 存取的重新排序可能造成邏輯錯(cuò)誤。例如,在上面提及的序列Sl = (Rl, W2, R3, W4)和 S2 = (Rl, R3, W2, W4)中,W2和R3可能存取相同的排地址。如果W2寫數(shù)據(jù)結(jié)構(gòu)(例如鏈 接表)的元素并且R3存取該數(shù)據(jù)結(jié)構(gòu)的相同元素,則如果如以S2那樣重新排序W2和R3, 將發(fā)生邏輯錯(cuò)誤,原因在于這將使程序在地址被寫完之前讀該地址。即,重新排序?qū)⑹菇馕?該鏈接表的程序使用陳舊的指針,造成程序故障。Laskshmanamurthy等人的已公開美國申請(qǐng)US 2007/0156946 Al揭示了一種利用 排分類(sort)和調(diào)度的存儲(chǔ)器控制器。存儲(chǔ)器控制器包括FIFO緩沖器、仲裁器、排FIFO集和排調(diào)度器。來自FIFO緩沖器的輸出被饋送到把存儲(chǔ)器請(qǐng)求分類到適當(dāng)?shù)呐臚IFO中的仲 裁器中,每個(gè)排FIFO被配置成存儲(chǔ)讀和寫存儲(chǔ)器請(qǐng)求。仲裁器可以使用循環(huán)仲裁方案來分 類和優(yōu)先化輸入請(qǐng)求流。排調(diào)度器接收來自排FIFO集的輸出并且循環(huán)地處理這些請(qǐng)求。在 每個(gè)循環(huán)中,排調(diào)度器可以選擇對(duì)讀/寫效率進(jìn)行優(yōu)化的業(yè)務(wù),例如排調(diào)度器可以對(duì)讀和/ 或?qū)戇M(jìn)行分組以最小化讀寫周轉(zhuǎn)。在US 2007/0156946 Al中,如上面所描述的邏輯錯(cuò)誤的問題由“無序”機(jī)構(gòu)解決, 該“無序”機(jī)構(gòu)確保從不違反支配對(duì)相同地址的讀和寫的業(yè)務(wù)排序規(guī)則,即地址在其被寫完 之前不能被讀。
US 2007/0156946 Al的存儲(chǔ)器控制器的缺點(diǎn)/問題在于其未提供存儲(chǔ)器帶寬的 加權(quán)公平共享。通過把讀和寫存儲(chǔ)器請(qǐng)求存儲(chǔ)在相同的排FIFO中,讀和寫之間的共享由請(qǐng) 求到達(dá)過程確定而不由存儲(chǔ)器控制器調(diào)整。進(jìn)一步,US 2007/0156946 Al的存儲(chǔ)器控制器 具有確保例如在寫請(qǐng)求之前不發(fā)出讀請(qǐng)求(如果這些請(qǐng)求是針對(duì)相同地址的話)的仲裁器。 因而,盡管存在要在存儲(chǔ)器控制器的內(nèi)部儲(chǔ)存器中讀的數(shù)據(jù),還發(fā)出對(duì)DRAM的讀請(qǐng)求。這 意味著DRAM未被最優(yōu)地利用并且讀等待時(shí)間未被最小化。進(jìn)一步,US 2007/0156946 Al的 存儲(chǔ)器控制器沒有裝置來優(yōu)先化需要低等待時(shí)間的請(qǐng)求,例如與控制信息有關(guān)的請(qǐng)求,使 得它們在容忍較長等待時(shí)間的請(qǐng)求(例如與分組數(shù)據(jù)有關(guān)的請(qǐng)求)之前被服務(wù)。

發(fā)明內(nèi)容
本發(fā)明的目標(biāo)是克服現(xiàn)有技術(shù)的問題和/或缺點(diǎn)。用于基于從連接到存取緩沖器的處理器接收的存儲(chǔ)器寫請(qǐng)求和存儲(chǔ)器讀請(qǐng)求來 控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件的存取的發(fā)明存取緩沖器的實(shí)施例包括
一許多寫FIFO隊(duì)列,被配置成存儲(chǔ)所述一個(gè)或多個(gè)存儲(chǔ)器器件的存儲(chǔ)器地址和要寫 到所述存儲(chǔ)器地址的數(shù)據(jù),所述存儲(chǔ)器地址和所述數(shù)據(jù)被包括在所接收的寫請(qǐng)求中;以及
一搜索單元,被配置成接收包括存儲(chǔ)器地址和屬性的讀請(qǐng)求,所述搜索單元被配置成 借助于所述存儲(chǔ)器地址在所述寫FIFO隊(duì)列中搜索與讀請(qǐng)求的存儲(chǔ)器地址對(duì)應(yīng)的存儲(chǔ)器地 址,并且如果找到對(duì)應(yīng)的存儲(chǔ)器地址,則所述搜索單元找到命中請(qǐng)求并且被配置成檢索在 其中找到地址的寫FIFO隊(duì)列中存儲(chǔ)的數(shù)據(jù)并且取消存儲(chǔ)器寫請(qǐng)求,由此要讀的所請(qǐng)求數(shù) 據(jù)可以在不存取所述一個(gè)或多個(gè)存儲(chǔ)器器件的情況下被讀。在實(shí)施例中,搜索單元被配置成把讀請(qǐng)求的屬性以及具有與讀請(qǐng)求對(duì)應(yīng)的存儲(chǔ)器 地址的寫請(qǐng)求的數(shù)據(jù)存儲(chǔ)在命中FIFO隊(duì)列中,且其中所述存取緩沖器被配置成把存儲(chǔ)的 屬性和數(shù)據(jù)以先進(jìn)先出的方式傳達(dá)到重新排序器件。實(shí)施例進(jìn)一步包括許多讀FIFO隊(duì)列,被配置成存儲(chǔ)在所接收的讀請(qǐng)求中包括的 存儲(chǔ)器地址和屬性;其中所述搜索單元被配置成如果所述搜索單元不能在寫FIFO隊(duì)列中 找到對(duì)應(yīng)的存儲(chǔ)器地址則把所述存儲(chǔ)器地址和屬性存儲(chǔ)在讀FIFO隊(duì)列中。實(shí)施例進(jìn)一步包括存取調(diào)度器,被配置成基于寫FIFO隊(duì)列和讀FIFO隊(duì)列中的信 息來選擇寫請(qǐng)求和讀請(qǐng)求中的一個(gè)請(qǐng)求;以及命令生成器,被配置成基于一個(gè)選擇的請(qǐng)求 來生成存儲(chǔ)器命令并且把所述存儲(chǔ)器命令傳輸?shù)剿鲆粋€(gè)或多個(gè)存儲(chǔ)器器件之一且把選 擇的請(qǐng)求的請(qǐng)求類型和序列標(biāo)識(shí)傳輸?shù)街匦屡判蚱骷?。?shí)施例進(jìn)一步包括仲裁器,被配置成執(zhí)行在由存取調(diào)度器選擇的請(qǐng)求和由搜索單元找到的一個(gè)或多個(gè)命中請(qǐng)求之間的調(diào)度。 實(shí)施例進(jìn)一步包括一個(gè)或多個(gè)可搜索地址儲(chǔ)存器,被配置成存儲(chǔ)所接收的存儲(chǔ) 器請(qǐng)求的數(shù)據(jù)和/或?qū)傩?。?shí)施例進(jìn)一步包括復(fù)用器,被配置成在從不同數(shù)據(jù)儲(chǔ)存器可搜索地址儲(chǔ)存器傳 輸?shù)牟煌瑪?shù)據(jù)和/或?qū)傩灾g選擇。在實(shí)施例中,一個(gè)或多個(gè)FIFO隊(duì)列被配有背壓(backpressure)級(jí)別并且被配置 成如果FIFO隊(duì)列的填充級(jí)別超過背壓級(jí)別則把背壓傳達(dá)到處理器,由此所述處理器被配 置成阻止相同類型的進(jìn)一步存取請(qǐng)求直到FIFO隊(duì)列的填充級(jí)別返回到在背壓級(jí)別之下的 級(jí)別為止。本發(fā)明也涉及一種存儲(chǔ)器控制器,其用于基于從連接到所述存儲(chǔ)器控制器的處理 器接收的存儲(chǔ)器寫請(qǐng)求和存儲(chǔ)器讀請(qǐng)求來控制對(duì)連接到所述存儲(chǔ)器控制器的一個(gè)或多個(gè) 存儲(chǔ)器器件的存取。存儲(chǔ)器控制器的實(shí)施例包括發(fā)明存取緩沖器的實(shí)施例;以及重新排 序器件,連接到存取緩沖器。所述重新排序器件被配置成接收來自一個(gè)或多個(gè)存儲(chǔ)器器件 的響應(yīng)數(shù)據(jù)并且對(duì)接收的響應(yīng)數(shù)據(jù)進(jìn)行分類,使得以與處理器發(fā)送存取請(qǐng)求相同的順序產(chǎn) 生到處理器的存取響應(yīng)。本發(fā)明也涉及一種用于基于從連接到存取緩沖器的處理器接收的存儲(chǔ)器寫請(qǐng)求 和存儲(chǔ)器讀請(qǐng)求來控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件的存取的方法。該方法的實(shí)施例包括以下 步驟
一提供許多寫FIFO隊(duì)列,其被配置成存儲(chǔ)所述一個(gè)或多個(gè)存儲(chǔ)器器件的存儲(chǔ)器地址 和要寫到所述存儲(chǔ)器地址的數(shù)據(jù),所述存儲(chǔ)器地址和所述數(shù)據(jù)被包括在所接收的寫請(qǐng)求 中;以及
一借助于搜索單元
一一接收包括存儲(chǔ)器地址和屬性的讀請(qǐng)求;
一一借助于所述存儲(chǔ)器地址在所述寫FIFO隊(duì)列中搜索與讀請(qǐng)求的存儲(chǔ)器地址對(duì)應(yīng)的 存儲(chǔ)器地址,以及
一一如果找到對(duì)應(yīng)的存儲(chǔ)器地址,則找到命中請(qǐng)求,檢索在其中找到地址的寫FIFO隊(duì) 列中存儲(chǔ)的數(shù)據(jù)并且取消存儲(chǔ)器寫請(qǐng)求,由此要讀的所請(qǐng)求數(shù)據(jù)可以在不存取所述一個(gè)或 多個(gè)存儲(chǔ)器器件的情況下被讀。方法的實(shí)施例進(jìn)一步包括以下步驟把讀請(qǐng)求的屬性以及具有與讀請(qǐng)求對(duì)應(yīng)的存 儲(chǔ)器地址的寫請(qǐng)求的數(shù)據(jù)存儲(chǔ)在命中FIFO隊(duì)列中;以及把存儲(chǔ)的屬性和數(shù)據(jù)以先進(jìn)先出 的方式傳達(dá)到重新排序器件。方法的實(shí)施例進(jìn)一步包括以下步驟
一提供許多讀FIFO隊(duì)列,其被配置成存儲(chǔ)在所述接收的讀請(qǐng)求中包括的存儲(chǔ)器地址 和屬性;以及
一借助于所述搜索單元如果所述搜索單元不能在寫FIFO隊(duì)列中找到對(duì)應(yīng)的存儲(chǔ)器 地址,則把所述存儲(chǔ)器地址和屬性存儲(chǔ)在讀FIFO隊(duì)列中。方法的實(shí)施例進(jìn)一步包括以下步驟
一借助于存取調(diào)度器,基于寫FIFO隊(duì)列和讀FIFO隊(duì)列中的信息來選擇寫請(qǐng)求和讀請(qǐng) 求中的一個(gè)請(qǐng)求;以及一借助于命令生成器基于一個(gè)選擇的請(qǐng)求來生成存儲(chǔ)器命令;把所述存儲(chǔ)器命令傳 輸?shù)剿鲆粋€(gè)或多個(gè)存儲(chǔ)器器件之一;以及把選擇的請(qǐng)求的請(qǐng)求類型和序列標(biāo)識(shí)傳輸?shù)街?新排序器件。方法的實(shí)施例進(jìn)一步包括以下步驟借助于仲裁器,在由存取調(diào)度器選擇的請(qǐng)求 和由搜索單元找到的一個(gè)或多個(gè)命中請(qǐng)求之間調(diào)度。方法的實(shí)施例進(jìn)一步包括以下步驟借助于一個(gè)或多個(gè)可搜索地址儲(chǔ)存器,存儲(chǔ) 所接收的存儲(chǔ)器請(qǐng)求的數(shù)據(jù)和/或?qū)傩?。方法的?shí)施例進(jìn)一步包括以下步驟借助于復(fù)用器,在從不同數(shù)據(jù)儲(chǔ)存器可搜索 地址儲(chǔ)存器傳輸?shù)牟煌瑪?shù)據(jù)和/或?qū)傩灾g選擇。方法的實(shí)施例進(jìn)一步包括以下步驟借助于配有背壓級(jí)別的一個(gè)或多個(gè)FIFO隊(duì) 列如果FIFO隊(duì)列的填充級(jí)別超過背壓級(jí)別,則把背壓傳達(dá)到處理器,由此阻止相同類型 的進(jìn)一步存取請(qǐng)求直到FIFO隊(duì)列的填充級(jí)別返回到在背壓級(jí)別之下的級(jí)別為止。包括例如寫后讀轉(zhuǎn)發(fā)和寫取消的發(fā)明存取緩沖器的實(shí)施例具有以下特征和優(yōu)
點(diǎn);
一把待定寫請(qǐng)求存儲(chǔ)在每一 DRAM排的一個(gè)FIFO緩沖器中。一把待定讀請(qǐng)求存儲(chǔ)在每一 DRAM排的另一個(gè)FIFO緩沖器中。一如果讀請(qǐng)求針對(duì)待定寫請(qǐng)求的地址,則從FIFO緩沖器取得響應(yīng),從而打斷FIFO 順序,而不是從DRAM讀它。在這種情況下,DRAM寫被取消。一防止重新排序錯(cuò)誤。一在存取緩沖器中包括的FIFO緩沖器可以進(jìn)一步被劃分成每一優(yōu)先級(jí)一個(gè)FIFO 緩沖器,即一個(gè)用于高優(yōu)先級(jí)而一個(gè)用于低優(yōu)先級(jí)。一存取緩沖器對(duì)發(fā)出存儲(chǔ)器存取請(qǐng)求的處理器是透明的。透明的意思是存取緩沖 器以功能上對(duì)處理器不可見的方式操縱請(qǐng)求。包括發(fā)明存取緩沖器的發(fā)明存儲(chǔ)器控制器適合用于緩沖器系統(tǒng),即以諸如隊(duì)列 之類的結(jié)構(gòu)暫時(shí)存儲(chǔ)在輸入上接收的數(shù)據(jù)以等待傳輸?shù)捷敵錾系南到y(tǒng);例如用于通信量 (traffic)管理器。通信量管理器是一種例如通過組合用于隊(duì)列管理、調(diào)度、通信量整形和 阻塞控制但不限于此類使用的機(jī)構(gòu)而給聯(lián)網(wǎng)系統(tǒng)中的流提供帶寬管理的器件。進(jìn)一步,這樣的發(fā)明存儲(chǔ)器控制器產(chǎn)生
存儲(chǔ)器接口的高利用,即存儲(chǔ)器請(qǐng)求序列被重新排序,使得對(duì)于任何序列的存儲(chǔ)器請(qǐng) 求的速率(rate)接近最優(yōu)重新排序序列的速率;
到高帶寬的可伸縮性,即發(fā)明存儲(chǔ)器控制器容易適于與任意數(shù)量的DRAM器件一起使
用;
有限的等待時(shí)間,即從發(fā)送要求來自存儲(chǔ)器控制器的響應(yīng)的請(qǐng)求(例如讀請(qǐng)求)起的時(shí) 間具有已知的上限;
存取類型之間的存儲(chǔ)器帶寬的受控共享,即DRAM帶寬的已知(例如最小)共享可以被分 配給存取類型,例如讀存取或?qū)懘嫒?;以?br> 數(shù)據(jù)相對(duì)于請(qǐng)求順序的不重新排序,即如果處理器向存儲(chǔ)器控制器產(chǎn)生后面是第二請(qǐng) 求的第一請(qǐng)求,其中這兩個(gè)請(qǐng)求觸發(fā)響應(yīng)(例如讀請(qǐng)求),則存儲(chǔ)器控制器在對(duì)第二請(qǐng)求的 響應(yīng)之前返回對(duì)第一請(qǐng)求的響應(yīng)。


通過連同附圖一起閱讀時(shí)的本發(fā)明實(shí)施例的以下詳細(xì)描述,將更容易理解本發(fā)明 的目標(biāo)、優(yōu)點(diǎn)和效果以及特征,在附圖中
圖1示意性地示出根據(jù)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的實(shí)施例的概觀; 圖2示意性地示出根據(jù)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的另一個(gè)實(shí)施例的概觀; 圖3示意性地示出根據(jù)本發(fā)明的存取緩沖器的實(shí)施例; 圖4示出根據(jù)本發(fā)明的存取緩沖器的廣義實(shí)施例; 圖5示意性地示出存取調(diào)度器的實(shí)施例;以及 圖6示意性地示出存取調(diào)度器的廣義實(shí)施例。
具體實(shí)施例方式雖然本發(fā)明覆蓋各種修改以及可選方法、裝置和系統(tǒng),但是本發(fā)明的實(shí)施例在附 圖中被示出并且將在下文中被更詳細(xì)地描述。然而,要理解,特定的描述和附圖并不旨在把 發(fā)明限制為所揭示的特定形式。相反,所要求保護(hù)的發(fā)明的范圍旨在包括落入如在所附權(quán) 利要求到其等效物的整個(gè)范圍中表示的發(fā)明的精神和范圍內(nèi)的其所有修改和可選構(gòu)造。在 附圖中,相同的參考數(shù)字用于相同或類似的特征。圖1示出根據(jù)本發(fā)明的數(shù)據(jù)處理系統(tǒng)100的實(shí)施例的概觀。數(shù)據(jù)處理系統(tǒng)100包 括連接到存儲(chǔ)器控制器104的處理器102。處理器102被配置成把存取請(qǐng)求發(fā)送到存儲(chǔ)器 控制器104并且接收來自存儲(chǔ)器控制器104的存取響應(yīng),如箭頭所示的。處理器102可以是可以執(zhí)行計(jì)算機(jī)程序的中央處理器單元(CPU)、多處理器、網(wǎng)絡(luò) 處理器、可編程管線、IO處理器或者諸如有限狀態(tài)機(jī)之類的邏輯電路。存儲(chǔ)器控制器104經(jīng)由存儲(chǔ)器接口 400連接到一個(gè)或多個(gè)存儲(chǔ)器器件106并且被 配置成控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件106的存取。有時(shí)也被稱為分組緩沖器的存儲(chǔ)器器件 106可以是具有隨機(jī)存取約束的長等待時(shí)間存儲(chǔ)器,諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。在實(shí)施例中,存儲(chǔ)器控制器104包括存取緩沖器200、存取調(diào)度器300和存儲(chǔ)器接 口 400,參見圖1。如先前所提及的,存儲(chǔ)器接口 400被配置成把存儲(chǔ)器控制器104連接到 一個(gè)或多個(gè)存儲(chǔ)器器件106 (例如DRAM)并且實(shí)施通信協(xié)議(例如DRAM協(xié)議)。然而,如圖2示意性地所示的,應(yīng)當(dāng)理解,在實(shí)施例中存儲(chǔ)器接口 400可以被布置 在一個(gè)或多個(gè)存儲(chǔ)器控制器104的外部。在這樣的實(shí)施例中,存儲(chǔ)器接口 400可以借助于 交換機(jī)450而連接到一個(gè)或多個(gè)存儲(chǔ)器控制器104,參見圖2。該交換機(jī)可以例如是交叉開 關(guān)(crossbar)、網(wǎng)狀網(wǎng)絡(luò)、環(huán)或總線。優(yōu)選地,存儲(chǔ)器接口 400被微編碼并且被配置成響應(yīng)于接收的命令而執(zhí)行微編碼 的序列。該命令可以例如是從存取緩沖器200接收的讀請(qǐng)求或?qū)懻?qǐng)求。當(dāng)用于本描述中時(shí),措詞“微代碼”/ “微編碼”指代實(shí)施功能基元以供其它單元使 用的硬件級(jí)指令。微代碼駐留在特殊的存儲(chǔ)器(未示出)中并且把輸入轉(zhuǎn)換成電路級(jí)控制信 號(hào)序列。存儲(chǔ)器控制器104進(jìn)一步包括重新排序器件500,該重新排序器件500被連接成并 且被配置成從存取緩沖器200和/或從存儲(chǔ)器器件106接收響應(yīng)數(shù)據(jù)。在實(shí)施例中,重新排序器件500被連接成并且被配置成經(jīng)由存儲(chǔ)器接口 400以及也可能經(jīng)由交換機(jī)450從存 儲(chǔ)器器件106接收響應(yīng)數(shù)據(jù)。重新排序器件500被配置成對(duì)接收的響應(yīng)數(shù)據(jù)進(jìn)行分類,使 得以與處理器102向存儲(chǔ)器控制器104發(fā)出對(duì)應(yīng)的存取請(qǐng)求相同的順序產(chǎn)生到處理器102 的存取響應(yīng)。

圖3示意性地示出根據(jù)本發(fā)明的存取緩沖器200的實(shí)施例。存取緩沖器200優(yōu)選 地基于先進(jìn)先出(FIFO),即存取緩沖器200包括許多FIFO緩沖器,所述FIFO緩沖器在本說 明書文本中也被稱為FIFO隊(duì)列。FIFO緩沖器被優(yōu)選地實(shí)施為環(huán)形緩沖器。另一種優(yōu)選實(shí) 施例是可尋址儲(chǔ)存器,其中地址的鏈接表維持所存儲(chǔ)元素的FIFO順序。圖3所示的存取緩沖器200的實(shí)施例被配置成處理兩個(gè)存儲(chǔ)器器件106 (例如 DRAM),每個(gè)具有8排,意味著每一請(qǐng)求類型存在16個(gè)FIFO隊(duì)列。由于與FIFO隊(duì)列關(guān)聯(lián)的 請(qǐng)求類型的數(shù)量為4 (管理請(qǐng)求不與FIFO隊(duì)列關(guān)聯(lián)),所以存取緩沖器200的所示實(shí)施例包 括總共64個(gè)FIFO隊(duì)列。為了清楚起見,在圖3中未示出所有64個(gè)FIFO隊(duì)列。然而,應(yīng)當(dāng)理解,F(xiàn)IFO隊(duì)列的數(shù)量可以根據(jù)要處理的存儲(chǔ)器器件的數(shù)量、在每個(gè)存 儲(chǔ)器器件中包括的排的數(shù)量和/或與一個(gè)或多個(gè)FIFO隊(duì)列關(guān)聯(lián)的請(qǐng)求類型的數(shù)量而不同。在實(shí)施例中,存取緩沖器200包括許多寫/讀低優(yōu)先級(jí)/高優(yōu)先級(jí)FIFO隊(duì)列 204 :"ffr Lo Prio FIFO,,,"ffr Hi Prio FIFO,,,"Rd Hi Prio FIFO,,禾口 "Rd Lo Prio FIFO,,;許多寫/讀低優(yōu)先級(jí)/高優(yōu)先級(jí)儲(chǔ)存器206 :"ffr LoPrio Storage","Rd LoPrio storage", "ffr HiPrio Storage,,和"Rd HiPrio Storage,,;搜索單元 208,仲裁器 210,復(fù) 用器212,存儲(chǔ)調(diào)度器300,以及命令生成器214。命令生成器214被配置成以所需的格式構(gòu) 造存儲(chǔ)器控制器命令并且經(jīng)由存儲(chǔ)器接口 400把所生成的命令發(fā)送到存儲(chǔ)器器件106。在實(shí)施例中,可搜索地址儲(chǔ)存器206是內(nèi)容可尋址相關(guān)存儲(chǔ)器(CAM)。進(jìn)一步,應(yīng)當(dāng)理解,在其它實(shí)施例中,存取調(diào)度器300可以被布置在存取緩沖器 200的外部并且與存取緩沖器200通信。如圖3的左手側(cè)的向右箭頭A1-A5示意性地所示的,不同類型的請(qǐng)求,例如讀/ 寫、高優(yōu)先級(jí)/低優(yōu)先級(jí)、和管理,可以從處理器發(fā)送到存取緩沖器200。然而,應(yīng)當(dāng)理解,其 它實(shí)施例可以包括其它請(qǐng)求類型,諸如DRAM刷新請(qǐng)求。在圖3中,示出以下不同請(qǐng)求類型管理請(qǐng)求‘‘Mgmt”;具有低優(yōu)先級(jí)的寫請(qǐng)求 “WriteLoPrio”,例如寫數(shù)據(jù)請(qǐng)求;具有高優(yōu)先級(jí)的寫請(qǐng)求“WriteHiPrio”,例如寫控制信 息數(shù)據(jù)請(qǐng)求;具有高優(yōu)先級(jí)的讀請(qǐng)求“ReadHiPrio”,例如讀控制信息數(shù)據(jù)請(qǐng)求;以及具有 低優(yōu)先級(jí)的讀請(qǐng)求“ReadLoPrio”,例如讀數(shù)據(jù)請(qǐng)求。在實(shí)施例中,例如參見圖3,寫請(qǐng)求包括要寫到存儲(chǔ)器器件的數(shù)據(jù)、與要寫數(shù)據(jù)的 存儲(chǔ)器器件的地址對(duì)應(yīng)的地址、以及定義該請(qǐng)求相對(duì)于其它請(qǐng)求的順序的屬性;而讀請(qǐng)求 包括與要讀數(shù)據(jù)的存儲(chǔ)器器件的地址對(duì)應(yīng)的地址、以及定義該請(qǐng)求相對(duì)于其它請(qǐng)求的順序 的屬性。在其它實(shí)施例中,例如參見圖4,寫請(qǐng)求不包括屬性。在這樣的實(shí)施例中,寫請(qǐng)求包 括要寫到存儲(chǔ)器器件的數(shù)據(jù)、以及與要寫數(shù)據(jù)的存儲(chǔ)器器件的地址對(duì)應(yīng)的地址;而讀請(qǐng)求 包括與要讀數(shù)據(jù)的存儲(chǔ)器器件的地址對(duì)應(yīng)的地址、以及定義該請(qǐng)求相對(duì)于其它請(qǐng)求的順序 的屬性。在實(shí)施例中,管理請(qǐng)求具有最高優(yōu)先級(jí),并且與寫和讀控制信息數(shù)據(jù)有關(guān)的請(qǐng)求一般具有比與寫和讀數(shù)據(jù)例如有效載荷數(shù)據(jù)有關(guān)的請(qǐng)求更高的優(yōu)先級(jí)。管理請(qǐng)求可以例如是對(duì)存儲(chǔ)器接口中的微代碼存儲(chǔ)器或配置參數(shù)的讀或?qū)懻?qǐng)求。數(shù)據(jù)請(qǐng)求可以例如是對(duì)在DRAM中緩沖的分組數(shù)據(jù)例如有效載荷數(shù)據(jù)的讀或?qū)懻?qǐng) 求??刂菩畔?shù)據(jù)請(qǐng)求可以例如是對(duì)與對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)有關(guān)的信息(諸如 鏈接表指針或分組長度)的讀或?qū)懻?qǐng)求。如圖3示意性地所示的,當(dāng)存取緩沖器200如箭頭Al所指示的那樣從處理器102 接收把例如低優(yōu)先級(jí)數(shù)據(jù)寫到存儲(chǔ)器器件106的請(qǐng)求“WriteLoPrio”時(shí),低優(yōu)先級(jí)數(shù)據(jù)的 地址將如箭頭Ala所指示的那樣被寫到在存取緩沖器200中包括的FIFO隊(duì)列“Wr LoPrio FIFO”之一。進(jìn)一步,寫低優(yōu)先級(jí)請(qǐng)求的數(shù)據(jù)和屬性(Attr)將被存儲(chǔ)在存取緩沖器200中 包括的可搜索地址儲(chǔ)存器“Wr LoPrio Storage” 206中,如箭頭Alb所指示的。 進(jìn)一步,如圖3示意性地所示的,當(dāng)存取緩沖器200如箭頭A2所指示的那樣從 處理器接收把例如控制信息數(shù)據(jù)寫到存儲(chǔ)器器件106的請(qǐng)求“WriteHiPrio”時(shí),請(qǐng)求 “WriteHiPrio”的地址將如箭頭A2a所指示的那樣被寫到在存取緩沖器200中包括的FIFO 隊(duì)列“Wr HiPrio FIFO”之一。進(jìn)一步,請(qǐng)求“WriteHiPrio”的數(shù)據(jù)和屬性將被存儲(chǔ)在存取 緩沖器200中包括的可搜索地址儲(chǔ)存器“Wr HiPrio Storage" 206中,如箭頭A2b所指示 的。而且,如圖3示意性地所示的,當(dāng)存取緩沖器200如箭頭A3所指示的那樣從處理 器接收例如從存儲(chǔ)器器件106讀控制信息數(shù)據(jù)的請(qǐng)求“ReadHiPrio”時(shí),請(qǐng)求“ReadHiPrio” 的地址將如箭頭A3a所指示的那樣被寫到在存取緩沖器200中包括的FIFO隊(duì)列“Rd HiPrio FIFO”之一。進(jìn)一步,請(qǐng)求“ReadHiPrio”的屬性將被存儲(chǔ)在存取緩沖器200中包括的可搜 索地址儲(chǔ)存器“Rd HiPrio Storage” 206中,如箭頭A3b所指示的。如圖3示意性地所示的,當(dāng)存取緩沖器200如箭頭A4所指示的那樣從處理器102 接收例如從存儲(chǔ)器器件106讀數(shù)據(jù)信息的請(qǐng)求“ReadLoPrio”時(shí),存取緩沖器200被配置成 借助于搜索單元208來(如虛線箭頭所示的那樣)搜索FIFO隊(duì)列“Wr LoPrio FIFO”以確定 請(qǐng)求“ReadLoPrio”的地址是否包括在FIFO隊(duì)列“Wr LoPrio FIFO”之一中。如果要讀的數(shù)據(jù)的地址是在FIFO隊(duì)列“Wr LoPrio FIFO”之一中,則搜索單元208 檢測到“命中(hit)”。搜索單元208從FIFO隊(duì)列“Wr LoPrio FIFO”去除該地址并且要讀 的數(shù)據(jù)和屬性從數(shù)據(jù)儲(chǔ)存器“Wr LoPrio Storage”進(jìn)行讀。在從“Wr LoPrio Storage”讀 之前,“Hit”請(qǐng)求可以如箭頭A4c所指示的那樣被寫到FIFO隊(duì)列“Hit Synch FIFO”,并且 如箭頭A6所指示的那樣借助于仲裁器210被調(diào)度,以便如箭頭A7所指示的那樣以有序的 且經(jīng)調(diào)度的方式從儲(chǔ)存器“Wr LoPrio Storage”讀數(shù)據(jù)和屬性。當(dāng)從儲(chǔ)存器“Wr LoPrio Storage”讀了數(shù)據(jù)和屬性時(shí),數(shù)據(jù)和屬性分別如箭頭A8b和ASc所指示的那樣被發(fā)送到重 新排序器件500。此后,重新排序器件500被配置成以正確的順序把存取響應(yīng)傳輸?shù)教幚砥?102,該響應(yīng)是基于所讀的數(shù)據(jù)和屬性,如圖3中的重新排序器件500中的符號(hào)“屬性+數(shù)據(jù) (命中)”所指示的。仲裁器210被配置成借助于嚴(yán)格的優(yōu)先級(jí)調(diào)度算法來執(zhí)行調(diào)度。在實(shí)施例中,由 存取調(diào)度器300選擇的存取請(qǐng)求應(yīng)當(dāng)優(yōu)先于“Hit”請(qǐng)求,原因在于存儲(chǔ)器接口的帶寬應(yīng)當(dāng) 被優(yōu)化。在這種情況下,“Hit”請(qǐng)求可以在Hit Synch FIFO中等待可用的時(shí)隙(例如存取調(diào)度器讀命令)。如 果要讀的地址不在FIFO隊(duì)列之一中,則搜索單元208檢測到“未中(miss)”。要 讀的數(shù)據(jù)的地址然后如箭頭A4d所指示的那樣被寫到在存取緩沖器200中包括的FIFO隊(duì) 列“Rd LoPrio FIFO”之一。進(jìn)一步,該請(qǐng)求的屬性(Attr)將被存儲(chǔ)在存取緩沖器200中 包括的儲(chǔ)存器“Rd LoPrio Storage”中,如箭頭A4b所指示的。如圖3所示的,存取調(diào)度器300被配置成基于存取緩沖器200的FIFO隊(duì)列204即 "ffr LoPrio FIFO","ffr HiPrio FIFO","Rd HiPrio FIFO” 禾口"Rd LoPrio FIFO” 中的信息 且基于如箭頭A5a所指示的那樣由存取調(diào)度器300接收的管理請(qǐng)求的可能地址來選擇存取 請(qǐng)求之一。存取調(diào)度器300被配置成借助于一個(gè)或多個(gè)仲裁器,基于調(diào)度算法例如如圖3 中用“RR”指示的循環(huán)調(diào)度算法、或先來先服務(wù)、或者另一種合適的調(diào)度算法來選擇存取請(qǐng) 求之一。存取調(diào)度器可以進(jìn)一步包括調(diào)度器和有限狀態(tài)機(jī)(FSM) 216,其被配置成執(zhí)行寫/ 讀/刷新請(qǐng)求調(diào)度并且確保不違反DRAM協(xié)議。然而,如箭頭A5b所指示的,管理請(qǐng)求的數(shù)據(jù)和屬性可以直接發(fā)送到被配置生成 命令的命令生成器214,所述命令借助于存儲(chǔ)器接口 400發(fā)送到存儲(chǔ)器器件106。進(jìn)一步,如箭頭A13所指示的,存取調(diào)度器300被配置成把選擇的存取請(qǐng)求的地址 傳輸?shù)矫钌善?14。當(dāng)存取請(qǐng)求被存取調(diào)度器300選擇時(shí),存取緩沖器200被配置成從 FIFO隊(duì)列清除該存取請(qǐng)求的地址并且從儲(chǔ)存器206之一讀所選擇請(qǐng)求的數(shù)據(jù)和/或?qū)傩?。如果例如選擇的存取請(qǐng)求是“WriteLoPrio”,即寫低優(yōu)先級(jí)請(qǐng)求,則存取調(diào)度器 300將如箭頭A12所指示的那樣把在“Wr LoPrio FIFO”中包括的所選擇存取請(qǐng)求的地址 傳達(dá)到“Wr LoPrio Storage”并且如箭頭A13所指示的那樣傳達(dá)到命令生成器214。進(jìn)一 步,如圖3所示,地址可以通過仲裁器210,以便在從“Wr LoPrio Storage”讀和去除數(shù)據(jù) 和屬性之前,基于搜索單元208所檢測的命中或者基于從存取調(diào)度器300選擇的寫低優(yōu)先 級(jí)請(qǐng)求來優(yōu)先化“Wr LoPrio Storage”中的讀。當(dāng)從“Wr LoPrio Storage”讀了數(shù)據(jù)和屬 性時(shí),數(shù)據(jù)和屬性被傳輸?shù)矫钌善?14,如箭頭ASa和A14所指示的。進(jìn)一步,當(dāng)從“Wr LoPrio Storage”讀了數(shù)據(jù)和屬性時(shí),數(shù)據(jù)和屬性被傳輸?shù)街匦屡判蚱骷?00,如箭頭A8b 和ASc所指示的。在實(shí)施例中,數(shù)據(jù)和屬性經(jīng)由復(fù)用器212被傳輸?shù)矫钌善?14以便在如箭頭 A8a、A9a、AlO和All所指示的那樣從不同數(shù)據(jù)儲(chǔ)存器傳輸?shù)牟煌瑪?shù)據(jù)和屬性之間進(jìn)行選擇。當(dāng)從“Wr LoPrio Storage”讀的數(shù)據(jù)和屬性在命令生成器214中被接收時(shí),其將 與從“Wr LoPrio FIFO”讀的地址組合成被傳輸?shù)酱鎯?chǔ)器器件的寫低優(yōu)先級(jí)命令。進(jìn)一步,如果例如所選擇的存取請(qǐng)求是“WriteHiPrio”,即寫高優(yōu)先級(jí)請(qǐng)求,則存 取調(diào)度器300將如箭頭A12所指示的那樣把在“Wr HiPrio FIFO”中包括的寫高優(yōu)先級(jí)請(qǐng) 求的地址傳達(dá)到“Wr HiPrio Storage”并且如箭頭A13所指示的那樣傳達(dá)到命令生成器 214。當(dāng)從“Wr HiPrio Storage”讀和去除了數(shù)據(jù)和屬性時(shí),數(shù)據(jù)和屬性被傳輸?shù)矫钌?器214,如箭頭AlO和A14所指示的??赡艿?,數(shù)據(jù)和屬性經(jīng)由復(fù)用器212被傳輸?shù)矫钌善?14以便在如箭頭A8a、 A9a、AlO和All所指示的那樣從不同數(shù)據(jù)儲(chǔ)存器傳輸?shù)牟煌瑪?shù)據(jù)和屬性之間進(jìn)行選擇。當(dāng)來自“Wr HiPrio Storage”的數(shù)據(jù)和屬性在命令生成器214中被接收時(shí),其將與從“Wr HiPrio FIFO”讀的 地址組合成被傳輸?shù)酱鎯?chǔ)器器件的寫高優(yōu)先級(jí)命令。而且,如果例如所選擇的存取請(qǐng)求是“ReadHiPrio”,即讀高優(yōu)先級(jí)請(qǐng)求,則存取調(diào) 度器300將如箭頭A12所指示的那樣把與所選擇的存取請(qǐng)求對(duì)應(yīng)的“Rd HiPrio FIFO”中 存儲(chǔ)的讀高優(yōu)先級(jí)請(qǐng)求的地址傳達(dá)到“Rd HiPrio Storage”并且如箭頭A13所指示的那樣 傳達(dá)到命令生成器214。當(dāng)從“Rd HiPrio Storage”讀和去除了屬性時(shí),屬性被傳輸?shù)矫?生成器214,如箭頭All和A14所指示的??赡艿兀瑢傩越?jīng)由復(fù)用器212被傳輸?shù)矫钌?器214以便在如箭頭A8a、A9a、AlO和All所指示的那樣從不同數(shù)據(jù)儲(chǔ)存器傳輸?shù)牟煌瑪?shù) 據(jù)和屬性之間進(jìn)行選擇。當(dāng)從“Rd HiPrio Storage”讀的屬性在命令生成器214中被接收 時(shí),其將與從“Rd HiPrio FIFO”讀的地址組合成被傳輸?shù)酱鎯?chǔ)器器件的讀高優(yōu)先級(jí)命令。如果例如所選擇的存取請(qǐng)求是“ReadLoPrio”,即讀低優(yōu)先級(jí)請(qǐng)求,則存取調(diào)度器 300將如箭頭A12所指示的那樣把與所選擇的存取請(qǐng)求對(duì)應(yīng)的“Rd LoPrio FIFO”的地址 傳達(dá)到“Rd LoPrio Storage”并且如箭頭A13所指示的那樣傳達(dá)到命令生成器214。當(dāng)從 "Rd LoPrio Storage”讀和去除了屬性時(shí),屬性被傳輸?shù)矫钌善?14,如箭頭A9a和A14 所指示的。進(jìn)一步,屬性也被傳輸?shù)街匦屡判蚱骷?00,如箭頭A9所指示的??赡艿?,屬性經(jīng)由復(fù)用器212被傳輸?shù)矫钌善?14以便在如箭頭A8a、A9a、A10 和All所指示的那樣從不同數(shù)據(jù)儲(chǔ)存器傳輸?shù)牟煌瑪?shù)據(jù)和屬性之間進(jìn)行選擇。當(dāng)從“Rd LoPrio Storage”讀的屬性在命令生成器214中被接收時(shí),其將與從“Rd LoPrio FIFO”讀的地址組合成被傳輸?shù)酱鎯?chǔ)器器件的讀低優(yōu)先級(jí)命令。當(dāng)命令從命令生成器214發(fā)送到存儲(chǔ)器器件時(shí),關(guān)于發(fā)送的請(qǐng)求類型例如寫/讀 低/高優(yōu)先級(jí)請(qǐng)求“Type”和關(guān)于請(qǐng)求的序列標(biāo)識(shí)“SerlD”的信息被發(fā)送到重新排序器件 500,如箭頭A15所指示的。在實(shí)施例中,SerID是由處理器設(shè)定的屬性。其用來識(shí)別回到處理器的響應(yīng)。另 夕卜,其被重新排序器件500用來恢復(fù)可能被存取調(diào)度器打斷的原始順序。例如,處理器可以 針對(duì)每個(gè)請(qǐng)求使SerID遞增一直到達(dá)到諸如65 535之類的最大值為止,此后SerID被復(fù)位 到O并且繼續(xù)按一遞增。重新排序器件500被配置成使用所接收的屬性來為與該屬性關(guān)聯(lián)的存取請(qǐng)求的 順序分配重新排序器件中的地址。因而,當(dāng)在重新排序器件500中接收存取響應(yīng)時(shí),該屬性 可以用來知道何時(shí)把存取響應(yīng)發(fā)送到處理器。因而借助于請(qǐng)求的屬性,知道該請(qǐng)求相對(duì)于 從處理器發(fā)送的其它請(qǐng)求的順序。如果例如該請(qǐng)求的順序在請(qǐng)求序列中是第二,則來自存 儲(chǔ)器器件的對(duì)這個(gè)請(qǐng)求的響應(yīng)應(yīng)當(dāng)在發(fā)送了對(duì)第一請(qǐng)求的響應(yīng)之后且在發(fā)送對(duì)第三請(qǐng)求 的響應(yīng)之前發(fā)送到處理器。圖4示出被配置成處理分別如箭頭Al’和A3’示意性地所示的所接收的寫請(qǐng)求和 讀請(qǐng)求的發(fā)明存取緩沖器200的廣義實(shí)施例。存取緩沖器200包括許多FIFO隊(duì)列例如寫、 讀和命中FIFO隊(duì)列204、搜索單元208,存取調(diào)度器300以及命令生成器214。進(jìn)一步,存取 緩沖器連接到被配置成如先前所描述的那樣運(yùn)行的重新排序器件500。當(dāng)如箭頭Al’所示的那樣接收包括地址和數(shù)據(jù)的寫請(qǐng)求時(shí),寫請(qǐng)求的地址和數(shù)據(jù) 被存儲(chǔ)在寫FIFO隊(duì)列“Wr FIFO”之一中。當(dāng)如箭頭A3’所示的那樣接收包括地址和屬性的讀請(qǐng)求時(shí),搜索單元208被配置 成在“Wr FIFO”中搜索與讀請(qǐng)求的地址匹配的地址。
如果找到這樣的地址,則搜索單元208檢測到命中并且可能經(jīng)由命中FIFO隊(duì)列 "Hit FIFO”把讀請(qǐng)求的屬性和地址傳輸?shù)街匦屡判蚱骷?00。如果未找到這樣的地址,則搜索單元208檢測到未中并且把地址和屬性存儲(chǔ)在讀 FIFO 隊(duì)列"RD FIFO” 之一中。如 先前所描述的,存取調(diào)度器300被配置成選擇請(qǐng)求之一。如果所選擇的請(qǐng)求是寫請(qǐng)求,則地址和數(shù)據(jù)從寫FIFO進(jìn)行檢索并且發(fā)送到命令 生成器214以生成寫命令。如果所選擇的請(qǐng)求是讀請(qǐng)求,則屬性被發(fā)送到重新排序器件500并且地址被發(fā)送 到命令生成器214以生成讀命令。命令生成器214被配置成把生成的命令發(fā)送到存儲(chǔ)器器件并且把請(qǐng)求類型例如 寫或讀“Type”以及SerID發(fā)送到重新排序器件500。進(jìn)一步,發(fā)明存取緩沖器的實(shí)施例可以被配置成具有擁有背壓閾值的一個(gè)或多個(gè) FIFO隊(duì)列。如果FIFO隊(duì)列的填充級(jí)別超過其背壓閾值,則存取緩沖器被配置成把這個(gè)背壓 傳達(dá)到處理器。從而,處理器被配置成阻止對(duì)存取緩沖器的相同類型(例如讀或?qū)懀蛘呔?有優(yōu)先級(jí)的讀或?qū)?的進(jìn)一步存取請(qǐng)求,直到存取緩沖器向處理器傳達(dá)FIFO隊(duì)列的填充級(jí) 別已返回到在閾值之下的級(jí)別。背壓級(jí)別應(yīng)當(dāng)被設(shè)定為使最大不可阻止請(qǐng)求流適應(yīng)FIFO 之一。如果例如FIFO可以包括16個(gè)請(qǐng)求并且不可阻止量是5個(gè)請(qǐng)求,則背壓閾值應(yīng)當(dāng)被 設(shè)定為11個(gè)請(qǐng)求。而且,發(fā)明存取緩沖器的實(shí)施例可以被配置成具有擁有應(yīng)急(panic)閾值的一個(gè) 或多個(gè)FIFO隊(duì)列。如果寫FIFO隊(duì)列或讀FIFO隊(duì)列的最大填充級(jí)別增長到大于應(yīng)急閾值, 則用于讀和寫的權(quán)重在存取調(diào)度器中被自動(dòng)地改變,使得寫或讀得到更高的相對(duì)帶寬共 享。當(dāng)填充級(jí)別返回到在閾值之下的級(jí)別時(shí),離開應(yīng)急模式并且把權(quán)重復(fù)位到正常值。圖5和6示出存取調(diào)度器300的實(shí)施例。存取調(diào)度器被配置為層次調(diào)度器,其中 也被稱為合格(eligibility)信息的狀態(tài)信息從葉子朝樹根傳播,如下面將描述的。在根中 做出調(diào)度決策以便選擇服務(wù)哪個(gè)請(qǐng)求,然后調(diào)度決策從根傳播到葉子,如下面將描述的。在 葉子處,請(qǐng)求信息被檢索并發(fā)送到基于所檢索的請(qǐng)求信息來生成DRAM命令的命令生成器。在實(shí)施例中,存取調(diào)度器300包括五個(gè)層次級(jí)別,如圖5示意性地所示的。然而, 如圖6示意性地所示的,存取調(diào)度器300的實(shí)施例可以包括樹層次級(jí)別。在圖6中,在存取 調(diào)度器300中包括三個(gè)級(jí)別級(jí)別1,級(jí)別4和級(jí)別5?,F(xiàn)在將參考圖5來描述合格信息從葉子到根的傳播。FIFO 隊(duì)列,諸如"Rd Hi FIFO”,"Rd Lo FIFO”,"ffr Hi FIFO”或者“Wr Lo FIFO” 中的一個(gè),在其不是空的且其排定時(shí)器屏蔽(mask)允許調(diào)度的情況下有資格由在第一級(jí)別 (級(jí)別1)處的調(diào)度器304調(diào)度。進(jìn)一步,如果由第一級(jí)別調(diào)度器304服務(wù)的任一 FIFO是合格的,則在級(jí)別1處的 第一級(jí)別調(diào)度器304有資格由在級(jí)別2處的第二級(jí)別調(diào)度器308調(diào)度。例如,為了第一級(jí) 別調(diào)度器304a有資格由第二級(jí)別調(diào)度器308a調(diào)度,讀高優(yōu)先級(jí)FIFO隊(duì)列“Rd Hi FIFO” 之一必須是合格的。如果由在級(jí)別3處的第三級(jí)別調(diào)度器312服務(wù)的在級(jí)別2處的任一第二級(jí)別調(diào)度 器308是合格的,則在級(jí)別2處的第二級(jí)別調(diào)度器308有資格由在級(jí)別3處的第三級(jí)別調(diào)度器312調(diào)度。 進(jìn)一步,如果由在級(jí)別4處的第四級(jí)別調(diào)度器318服務(wù)的在級(jí)別3處的任一第三 級(jí)別調(diào)度器312是合格的,則在級(jí)別3處的第三級(jí)別調(diào)度器312有資格由在級(jí)別4處的第 四級(jí)別調(diào)度器318調(diào)度。為了使第三級(jí)別調(diào)度器312是合格的,群組定時(shí)器315必須允許 調(diào)度。在級(jí)別5處,在級(jí)別4處的群組以循環(huán)的方式交替?,F(xiàn)在將參考圖5來描述調(diào)度決策從根到葉子的傳播。對(duì)于該群組,即在級(jí)別5處選擇的DRAM器件,如果也被稱為刷新定時(shí)器314的 用于刷新的計(jì)數(shù)器達(dá)到了在配置參數(shù)單元316中可配置的閾值,則該群組的有限狀態(tài)機(jī) (FSM)320選擇刷新操作。刷新操作可以被延遲,直到達(dá)到其中FSM否則將從讀切換到寫或 空閑或者從寫切換到讀或空閑的狀態(tài)為止。如果未選擇刷新,并且讀和/或?qū)懯呛细竦?,則 讀/寫仲裁器318使用例如虧損加權(quán)循環(huán)(DWRR)調(diào)度算法來選擇讀或?qū)?。否則調(diào)度器318 可以是空閑的。如果選擇讀或?qū)?,則被選擇的在級(jí)別3處的第三級(jí)別調(diào)度器312在合格的 第二級(jí)別調(diào)度器308之間選擇具有最高優(yōu)先級(jí)的第二級(jí)別調(diào)度器308。然后,被選擇的第二級(jí)別調(diào)度器308在合格的第一級(jí)別調(diào)度器304之間選擇具有 最高優(yōu)先級(jí)的第一級(jí)別調(diào)度器304。第一級(jí)別調(diào)度器304以循環(huán)方式選擇下一合格的FIFO 隊(duì)列。應(yīng)當(dāng)理解,合格信息從葉子到根的傳播以及調(diào)度決策從根到葉子的傳播在具有除 5之外的另一個(gè)層次級(jí)別數(shù)量的存取調(diào)度器中以相同的方式運(yùn)行。根據(jù)實(shí)施例,第一級(jí)別(級(jí)別1)包括一個(gè)或多個(gè)排定時(shí)器302,排定時(shí)器的數(shù)量對(duì) 應(yīng)于排的數(shù)量。排定時(shí)器302被配置成當(dāng)在存取緩沖器中包括的且與該排關(guān)聯(lián)的FIFO隊(duì) 列被存取時(shí)設(shè)定每排存儲(chǔ)器器件106的屏蔽位。在圖5中,屏蔽位的設(shè)定由環(huán)繞連接FIFO 與第一級(jí)別調(diào)度器304的線A40的環(huán)所示。通過當(dāng)相關(guān)FIFO隊(duì)列被存取時(shí)設(shè)定該排的屏蔽 位,該排不能被選擇用于另一個(gè)存取直到該屏蔽位被清除為止。進(jìn)一步,當(dāng)DRAM特定的隨 機(jī)存取時(shí)間tRC過期時(shí),借助于排定時(shí)器302來清除該屏蔽位。從而,可以防止存取錯(cuò)誤, 諸如在對(duì)排的先前存取之后過早地存取相同排。進(jìn)一步,調(diào)度器300包括一個(gè)或多個(gè)第一級(jí)別仲裁器304,例如與存取緩沖器中的 FIFO隊(duì)列關(guān)聯(lián)的每一存取請(qǐng)求類型的一個(gè)第一級(jí)別仲裁器304。第一級(jí)別仲裁器304被配 置成借助于調(diào)度算法諸如如圖5中由RR所示的循環(huán)調(diào)度算法,以公平的方式且基于所接收 的請(qǐng)求信息來選擇與排0-7關(guān)聯(lián)的FIFO隊(duì)列之一中包括的存取請(qǐng)求之一。因而,向排的工作守恒循環(huán)服務(wù)提供每一存取請(qǐng)求類型一個(gè)循環(huán);即每一讀高優(yōu) 先級(jí)請(qǐng)求、讀低優(yōu)先級(jí)請(qǐng)求、寫高優(yōu)先級(jí)請(qǐng)求和寫低優(yōu)先級(jí)請(qǐng)求一個(gè)循環(huán)。一旦選擇了存取請(qǐng)求,第一級(jí)別仲裁器304將把關(guān)于存儲(chǔ)與選擇的存取請(qǐng)求有關(guān) 的請(qǐng)求信息的FIFO的合格信息傳播到在下一級(jí)別(級(jí)別2)中包括的第二級(jí)別仲裁器308, 如線A42所指示的。如圖5示意性地所示的,用于調(diào)度讀高優(yōu)先級(jí)請(qǐng)求的第一級(jí)別仲裁器304a被配置 成基于與排0-7關(guān)聯(lián)的8個(gè)FIFO隊(duì)列“Read Hi FIFO”之一中包括的請(qǐng)求信息來選擇讀高 優(yōu)先級(jí)請(qǐng)求之一。以相同的方式,第一級(jí)別仲裁器304b、304c、304d被配置成分別從FIFO 隊(duì)列“Read Lo FIF0'\"Write Hi FIFO”和“Write Lo FIFO”選擇讀低優(yōu)先級(jí)請(qǐng)求、寫高優(yōu) 先級(jí)請(qǐng)求和寫低優(yōu)先級(jí)請(qǐng)求。
在最后儲(chǔ)存器306中,存儲(chǔ)來自調(diào)度器304的指針。該指針被配置成告訴哪個(gè)排 0-7是要服務(wù)的最后排。在調(diào)度決策之后最后指針被增加1模與調(diào)度器關(guān)聯(lián)的排的數(shù)量,以 指示調(diào)度器304接著要服務(wù)哪個(gè)排。根據(jù)實(shí) 施例,第二級(jí)別(級(jí)別2)包括一個(gè)或多個(gè)第二級(jí)別仲裁器308。優(yōu)選地,存 取調(diào)度器300包括每一請(qǐng)求類型(不管高低優(yōu)先級(jí))一個(gè)第二級(jí)別仲裁器308,即每一寫請(qǐng) 求一個(gè)和每一讀請(qǐng)求一個(gè)。因而,第一第二級(jí)別仲裁器308a被配置成在讀請(qǐng)求之間仲裁而 第二第二級(jí)別仲裁器308b被配置成在寫請(qǐng)求之間仲裁。第二級(jí)別仲裁器308被配置成借助于固定優(yōu)先級(jí)調(diào)度算法在低優(yōu)先級(jí)請(qǐng)求和高 優(yōu)先級(jí)請(qǐng)求之間執(zhí)行仲裁,即第二級(jí)別仲裁器308被配置成選擇具有最高優(yōu)先級(jí)的請(qǐng)求并 且把合格信息傳播到在下一級(jí)別(級(jí)別3)中包括的第三級(jí)別仲裁器312,如線A44所指示 的。因而,只要存在讀高優(yōu)先級(jí)請(qǐng)求,在選擇讀低優(yōu)先級(jí)請(qǐng)求之前,第一第二級(jí)別仲裁 器308a將選擇讀高優(yōu)先級(jí)請(qǐng)求。按照相同的推理,第二第二級(jí)別仲裁器308b被配置成在選擇寫低優(yōu)先級(jí)請(qǐng)求之 前選擇寫高優(yōu)先級(jí)請(qǐng)求。在第二級(jí)別(級(jí)別2)中,存取調(diào)度器300也包括管理請(qǐng)求單元310,其被配置成把 具有高優(yōu)先級(jí)的管理讀請(qǐng)求從存取緩沖器傳播到第三級(jí)別調(diào)度器312a并且把合格信息傳 播到第三級(jí)別調(diào)度器312b,如線A46所指示的。根據(jù)實(shí)施例,在第三級(jí)別(級(jí)別3)中,存取調(diào)度器300包括一個(gè)或多個(gè)第三級(jí)別仲 裁器312。第三級(jí)別仲裁器312被配置成在正常存取請(qǐng)求即讀請(qǐng)求和寫請(qǐng)求以及管理存取 請(qǐng)求之間調(diào)度。如先前所提及的,管理存取請(qǐng)求是高優(yōu)先級(jí)存取請(qǐng)求,其可以源自除處理器 之外的另一個(gè)部件;例如源自連接到存取調(diào)度器/存取緩沖器的控制平面CPU。如圖5示意性地所示的,第一第三級(jí)別仲裁器312a被配置成在讀請(qǐng)求和讀管理請(qǐng) 求之間選擇,而第二第三級(jí)別仲裁器312b被配置成在寫請(qǐng)求和寫管理請(qǐng)求之間選擇。由于 管理請(qǐng)求比讀請(qǐng)求和寫請(qǐng)求具有更高的優(yōu)先級(jí),所以只要管理請(qǐng)求可用于選擇,第三級(jí)別 仲裁器312將選擇管理請(qǐng)求。如線A48所指示的,合格信息被傳播到在下一級(jí)別(級(jí)別4)中包括的第四級(jí)別仲 裁器318。在實(shí)施例中,存取調(diào)度器300也包括刷新定時(shí)器314,其被配置成基于存儲(chǔ)在配置 參數(shù)單元316中的配置參數(shù)來指令有限狀態(tài)機(jī)(FSM) 320以生成刷新請(qǐng)求。該刷新請(qǐng)求可 以例如是對(duì)DRAM的維護(hù)請(qǐng)求,即請(qǐng)求維護(hù)DRAM以例如通過內(nèi)部電機(jī)構(gòu)來刷新存儲(chǔ)器的內(nèi) 容的請(qǐng)求。若不刷新,存儲(chǔ)器內(nèi)容變得走樣(corrupted)。刷新請(qǐng)求可以被周期性地發(fā)送并 且它們可以優(yōu)先于其它存取請(qǐng)求和管理請(qǐng)求。在實(shí)施例中,存取調(diào)度器包括一個(gè)或多個(gè)群組定時(shí)器315。群組定時(shí)器315被配 置成根據(jù)例如 tFAW、tRRD、tRead2write、tWrite2read 和 tCalibration 來設(shè)定群組即 DRAM 器件的屏蔽位。tFAW限制時(shí)間窗口內(nèi)的行激活命令的數(shù)量,并且tRRD是到DRAM器件的兩 個(gè)連續(xù)激活命令之間的最小時(shí)間。tRead2write是讀命令和后續(xù)寫命令之間的最小時(shí)間,而 tWrite2read是寫命令和后續(xù)讀命令之間的最小時(shí)間。tCalibration是兩個(gè)校準(zhǔn)命令之間 的時(shí)間周期??梢岳鐖?zhí)行校準(zhǔn)命令以補(bǔ)償操作條件的變化,諸如溫度變化。
在第四級(jí)別中,存取調(diào)度器可以包括配置參數(shù)單元316。配置參數(shù)單元316被 配置成把諸如在要執(zhí)行許多寫請(qǐng)求之前要執(zhí)行的讀請(qǐng)求的數(shù)量或者在寫之前要讀的突發(fā) (burst)的數(shù)量之類的配置參數(shù)傳遞到在第四級(jí)別(級(jí)別4)中包括的有限狀態(tài)機(jī)(FSM) 320。借助于配置參數(shù),F(xiàn)SM 320被配置成控制何時(shí)進(jìn)行讀、寫、刷新或空閑。FSM被配置成把也被稱為Ack信號(hào)的確認(rèn)信號(hào)傳輸?shù)揭粋€(gè)或多個(gè)FIFO隊(duì)列和傳輸 到與一個(gè)或多個(gè)第一級(jí)別仲裁器304關(guān)聯(lián)的一個(gè)或多個(gè)最后儲(chǔ)存器306,如圖3和4示意性 地所示的。Ack信號(hào)觸發(fā)從選擇的FIFO檢索請(qǐng)求。另外,其觸發(fā)在與選擇的FIFO關(guān)聯(lián)的 RR調(diào)度器304的最后儲(chǔ)存器306中更新RR指針。根據(jù)實(shí)施例,存取調(diào)度器在第四級(jí)別(級(jí)別4)中包括第四級(jí)別仲裁器318、有限狀 態(tài)機(jī)(FSM) 320、FSM定時(shí)器計(jì)數(shù)器322。第四級(jí)別仲裁器318被配置成在不考慮優(yōu)先級(jí)的情況下在請(qǐng)求之間即在寫請(qǐng)求、 讀請(qǐng)求、管理請(qǐng)求和刷新請(qǐng)求之間調(diào)度,即在第四級(jí)別處請(qǐng)求是具有低優(yōu)先級(jí)還是高優(yōu)先 級(jí)無關(guān)緊要。第四級(jí)別仲裁器318也可以被配置成調(diào)度在要執(zhí)行許多寫請(qǐng)求之前要執(zhí)行的 許多讀請(qǐng)求以便最小化存儲(chǔ)器存取的延遲,原因在于不同存取請(qǐng)求(例如讀、寫、管理、刷新 和維護(hù))之間的切換花費(fèi)時(shí)間并且也可能要求插入空閑循環(huán)。在實(shí)施例中,刷新定時(shí)器314被配置成對(duì)刷新請(qǐng)求之間的循環(huán)數(shù)量進(jìn)行計(jì)數(shù)并且 一個(gè)或多個(gè)FSM計(jì)算器322被配置成對(duì)寫和讀請(qǐng)求的數(shù)量以及對(duì)在諸如讀、寫和刷新之類 的命令類型之間切換時(shí)需要插入的循環(huán)的數(shù)量進(jìn)行計(jì)數(shù)。讀和寫帶寬是可配置的并且以公平、加權(quán)、工作守恒的方式被動(dòng)態(tài)地共享。在配置 參數(shù)單元316中包括的兩個(gè)可配置參數(shù)是“MaxRead” “MaxWrite”。參數(shù)“MaxWrite”指示 在轉(zhuǎn)向服務(wù)DRAM讀之前被寫(如果合格的話)的DRAM突發(fā)的數(shù)量。參數(shù)“MaxRead”指示在 轉(zhuǎn)向服務(wù)DRAM寫之前被讀(如果合格的話)的DRAM突發(fā)的數(shù)量。在實(shí)施例中,“MaxRead” 和“MaxWrite”是虧損加權(quán)循環(huán)(DWRR)調(diào)度器的權(quán)重。進(jìn)一步,第四級(jí)別仲裁器318被配置成把合格信息傳播到在存取調(diào)度器的下一級(jí) 別(級(jí)別5)中包括的第五級(jí)別仲裁器324,如線A50所指示的。根據(jù)實(shí)施例,存取調(diào)度器在第五級(jí)別(級(jí)別5)中包括第五級(jí)別仲裁器324,其被配 置成在到也被稱為第一群組0的第一存儲(chǔ)器器件106的存取請(qǐng)求和到也被稱為第二群組1 的第二存儲(chǔ)器器件106的存取請(qǐng)求之間選擇。在實(shí)施例中,這些群組共享地址總線但是具 有單獨(dú)的數(shù)據(jù)總線。在實(shí)施例中,第五級(jí)別仲裁器324在選擇到第一存儲(chǔ)器器件和到第二 存儲(chǔ)器器件的存取請(qǐng)求之間交替。為了最大化存儲(chǔ)器接口的利用,DRAM器件因而可以被組織成群組,例如組織成群 組0和群組1。通過在群組之間交替,如由tFAW參數(shù)表示的對(duì)時(shí)間窗口內(nèi)的行激活命令數(shù) 量的DRAM約束不會(huì)減損存儲(chǔ)器接口帶寬。在群組之間交替也防止由于tRRD即兩個(gè)連續(xù)行 激活命令之間的最小時(shí)間和tCCD即兩個(gè)列命令之間的最小時(shí)間引起的帶寬減損。命令生成器214被布置成與存取調(diào)度器300通信并且被配置成基于關(guān)于來自存取 調(diào)度器的優(yōu)勝者的請(qǐng)求信息且基于與請(qǐng)求關(guān)聯(lián)的且從FIFO隊(duì)列檢索的地址、數(shù)據(jù)和屬性 來生成命令。該命令然后經(jīng)由存儲(chǔ)器接口 400發(fā)送到DRAM。圖6示意性地示出存取調(diào)度器300的更廣義實(shí)施例。如所示的,存取調(diào)度器300的實(shí)施例在第一級(jí)別(級(jí)別1)中包括一個(gè)或多個(gè)排定時(shí)器302,排定時(shí)器的數(shù)量對(duì)應(yīng)于排的數(shù)量。排定時(shí)器302被配置成當(dāng)在存取緩沖器中包 括的且與該排關(guān)聯(lián)的FIFO隊(duì)列被存取時(shí)設(shè)定每排存儲(chǔ)器器件106的屏蔽位,如先前所描述 的。進(jìn)一步,調(diào)度器300包括一個(gè)或多個(gè)第一級(jí)別仲裁器304,例如與存取緩沖器中的 FIFO隊(duì)列關(guān)聯(lián)的每一存取請(qǐng)求類型一個(gè)第一級(jí)別仲裁器304。在所示的實(shí)施例中,存取請(qǐng) 求類型的數(shù)量是二 讀請(qǐng)求和寫請(qǐng)求。一旦選擇了存取請(qǐng)求,第一級(jí)別仲裁器304將把關(guān)于存儲(chǔ)與選擇的存取請(qǐng)求有關(guān) 的請(qǐng)求信息的FIFO的合格信息傳播到在下一級(jí)別(級(jí)別4)中包括的第四級(jí)別仲裁器318, 如線A44所指示的。在實(shí)施例中,存取調(diào)度器300也包括刷新定時(shí)器314、群組定時(shí)器315、配置參數(shù)單 元316、有限狀態(tài)機(jī)(FSM) 320和FSM計(jì)數(shù)器322,如先前所描述的。第四級(jí)別仲裁器318被配置成在請(qǐng)求之間即在寫請(qǐng)求、讀請(qǐng)求、管理請(qǐng)求和刷新 請(qǐng)求之間調(diào)度。第四級(jí)別仲裁器318也可以被配置成調(diào)度在要執(zhí)行許多寫請(qǐng)求之前要執(zhí)行 的許多讀請(qǐng)求以便最小化存儲(chǔ)器存取的延遲,原因在于不同存取請(qǐng)求(例如讀、寫、管理、刷 新和維護(hù))之間的切換花費(fèi)時(shí)間并且也可能要求插入空閑循環(huán)。進(jìn)一步,第四級(jí)別仲裁器318被配置成把合格信息傳播到在存取調(diào)度器的下一級(jí) 別(級(jí)別5)中包括的第五級(jí)別仲裁器324,如線A50所指示的。第五級(jí)別仲裁器324被配置成在到也被稱為第一群組0的第一存儲(chǔ)器器件106的 存取請(qǐng)求和到也被稱為第二群組1的第二存儲(chǔ)器器件106的存取請(qǐng)求之間選擇,如先前所 描述的。關(guān)于優(yōu)勝者的請(qǐng)求信息被傳輸?shù)矫钌善?14,該命令生成器214基于請(qǐng)求信息 且基于與請(qǐng)求關(guān)聯(lián)的且在FIFO隊(duì)列中存儲(chǔ)的地址、數(shù)據(jù)和屬性來生成命令。該命令然后經(jīng) 由存儲(chǔ)器接口 400發(fā)送到DRAM器件。
權(quán)利要求
1.一種存取緩沖器(200),用于基于從連接到所述存取緩沖器(200)的處理器(102) 接收的存儲(chǔ)器寫請(qǐng)求和存儲(chǔ)器讀請(qǐng)求來控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件(106)的存取,所述 存取緩沖器(200)包括一許多寫FIFO隊(duì)列(“fe FIFO”),被配置成存儲(chǔ)所述一個(gè)或多個(gè)存儲(chǔ)器器件(106)的 存儲(chǔ)器地址和要寫到所述存儲(chǔ)器地址的數(shù)據(jù),所述存儲(chǔ)器地址和所述數(shù)據(jù)被包括在所接收 的寫請(qǐng)求中;以及一搜索單元(208),被配置成接收包括存儲(chǔ)器地址和屬性的讀請(qǐng)求,所述搜索單元 (208)被配置成借助于所述存儲(chǔ)器地址在所述寫FIFO隊(duì)列Clr FIFO”)中搜索與所述讀 請(qǐng)求的存儲(chǔ)器地址對(duì)應(yīng)的存儲(chǔ)器地址,并且如果找到對(duì)應(yīng)的存儲(chǔ)器地址,則所述搜索單元 (208)找到了命中請(qǐng)求并且被配置成檢索在其中找到地址的寫FIFO隊(duì)列(“fe FIFO”)中存 儲(chǔ)的數(shù)據(jù)并且取消存儲(chǔ)器寫請(qǐng)求,由此要讀的所請(qǐng)求的數(shù)據(jù)能夠在不存取所述一個(gè)或多個(gè) 存儲(chǔ)器器件(106)的情況下被讀。
2.根據(jù)權(quán)利要求1的存取緩沖器(200),其中所述搜索單元(208)被配置成把讀請(qǐng) 求的屬性以及具有與所述讀請(qǐng)求對(duì)應(yīng)的存儲(chǔ)器地址的寫請(qǐng)求的數(shù)據(jù)存儲(chǔ)在命中FIFO隊(duì)列 ("Hit FIFO”)中,且其中所述存取緩沖器被配置成把存儲(chǔ)的屬性和數(shù)據(jù)以先進(jìn)先出的方式 傳達(dá)到重新排序器件(500)。
3.根據(jù)權(quán)利要求1或2的存取緩沖器(200),進(jìn)一步包括一許多讀FIFO隊(duì)列(“Rd FIFO”),被配置成存儲(chǔ)在所接收的讀請(qǐng)求中包括的存儲(chǔ)器地 址和屬性;且其中所述搜索單元(208)被配置成如果所述搜索單元(208)不能在寫FIFO隊(duì)列(“fe FIFO”)中找到對(duì)應(yīng)的存儲(chǔ)器地址則把所述存儲(chǔ)器地址和屬性存儲(chǔ)在讀FIFO隊(duì)列(“Rd FIFO”)中。
4.根據(jù)權(quán)利要求3的存取緩沖器(200),進(jìn)一步包括一存取調(diào)度器(300),被配置成基于寫FIFO隊(duì)列(Ir FIFO”)和讀FIFO隊(duì)列(“Rd FIFO”)中的信息來選擇寫請(qǐng)求和讀請(qǐng)求中的一個(gè)請(qǐng)求;以及一命令生成器(214),被配置成基于一個(gè)選擇的請(qǐng)求來生成存儲(chǔ)器命令并且把所述 存儲(chǔ)器命令傳輸?shù)剿鲆粋€(gè)或多個(gè)存儲(chǔ)器器件(106)之一且把選擇的請(qǐng)求的請(qǐng)求類型 (“Type”)和序列標(biāo)識(shí)(“krID”)傳輸?shù)街匦屡判蚱骷?500)。
5.根據(jù)權(quán)利要求4的存取緩沖器(200),進(jìn)一步包括仲裁器(210),被配置成執(zhí)行在 由所述存取調(diào)度器(300)選擇的請(qǐng)求和由所述搜索單元(208)找到的一個(gè)或多個(gè)命中請(qǐng)求 之間的調(diào)度。
6.根據(jù)權(quán)利要求1-5中任一項(xiàng)的存取緩沖器(200),進(jìn)一步包括一個(gè)或多個(gè)可搜索 地址儲(chǔ)存器(206),被配置成存儲(chǔ)所接收的存儲(chǔ)器請(qǐng)求的數(shù)據(jù)和/或?qū)傩浴?br> 7.根據(jù)權(quán)利要求6的存取緩沖器(200),進(jìn)一步包括復(fù)用器(212),被配置成在從不 同數(shù)據(jù)儲(chǔ)存器可搜索地址儲(chǔ)存器(206)傳輸?shù)牟煌瑪?shù)據(jù)和/或?qū)傩灾g選擇。
8.根據(jù)權(quán)利要求1-7中任一項(xiàng)的存取緩沖器(200),其中一個(gè)或多個(gè)FIFO隊(duì)列(“fe FIFO","Rd FIFO”)被配有背壓級(jí)別并且被配置成如果FIFO隊(duì)列的填充級(jí)別超過背壓級(jí)別 則把背壓傳達(dá)到處理器(102),由此所述處理器(102)被配置成阻止相同類型的進(jìn)一步存 取請(qǐng)求直到FIFO隊(duì)列的填充級(jí)別返回到在背壓級(jí)別之下的級(jí)別為止。
9.根據(jù)權(quán)利要求4-7中任一項(xiàng)的存取緩沖器(200),其中一個(gè)或多個(gè)FIFO隊(duì)列(“fe FIFO","Rd FIFO”)被配有應(yīng)急級(jí)別并且被配置成如果寫FIFO隊(duì)列(“fe FIFO”)或讀FIFO 隊(duì)列(“Rd FIFO”)的最大填充級(jí)別增長到大于所述應(yīng)急級(jí)別則在存取調(diào)度器(300)中自動(dòng) 地改變用于讀和寫的權(quán)重,使得寫或讀得到更高的相對(duì)帶寬共享,由此存取緩沖器(200)被 配置成當(dāng)寫FIFO隊(duì)列(“Wr FIFO”)或讀FIFO隊(duì)列(“Rd FIFO”)的填充級(jí)別返回到在應(yīng)急 級(jí)別之下的級(jí)別時(shí)離開應(yīng)急模式并且把權(quán)重復(fù)位到正常值。
10.一種存儲(chǔ)器控制器(104),用于基于從連接到所述存儲(chǔ)器控制器(104)的處理器 (102)接收的存儲(chǔ)器寫請(qǐng)求和存儲(chǔ)器讀請(qǐng)求來控制對(duì)連接到所述存儲(chǔ)器控制器(104)的一 個(gè)或多個(gè)存儲(chǔ)器器件(106)的存取,包括一根據(jù)權(quán)利要求1-9中任一項(xiàng)的存取緩沖器(200),以及一重新排序器件(500),連接到存取緩沖器(200)并且被配置成接收來自所述一個(gè)或 多個(gè)存儲(chǔ)器器件(106)的響應(yīng)數(shù)據(jù)以對(duì)接收的響應(yīng)數(shù)據(jù)進(jìn)行分類,使得以與處理器(102) 發(fā)送存取請(qǐng)求相同的順序產(chǎn)生到處理器(102)的存取響應(yīng)。
11.一種用于基于從連接到存取緩沖器(200)的處理器(102)接收的存儲(chǔ)器寫請(qǐng)求和 存儲(chǔ)器讀請(qǐng)求來控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件(106)的存取的方法,所述方法包括以下步 驟一在許多寫FIFO隊(duì)列(“fe FIFO”)中存儲(chǔ)所述一個(gè)或多個(gè)存儲(chǔ)器器件(106)的存儲(chǔ)器 地址和要寫到所述存儲(chǔ)器地址的數(shù)據(jù),所述存儲(chǔ)器地址和所述數(shù)據(jù)被包括在所接收的寫請(qǐng) 求中;以及一借助于搜索單元(208):一一接收包括存儲(chǔ)器地址和屬性的讀請(qǐng)求;一一借助于所述存儲(chǔ)器地址在所述寫FIFO隊(duì)列Clr FIFO”)中搜索與讀請(qǐng)求的存儲(chǔ) 器地址對(duì)應(yīng)的存儲(chǔ)器地址,以及一一如果找到對(duì)應(yīng)的存儲(chǔ)器地址,則找到命中請(qǐng)求;----檢索在其中找到地址的寫FIFO隊(duì)列(“Wr FIFO”)中存儲(chǔ)的數(shù)據(jù);并且----取消存儲(chǔ)器寫請(qǐng)求,由此要讀的所請(qǐng)求的數(shù)據(jù)能夠在不存取所述一個(gè)或多個(gè)存儲(chǔ)器器件(106)的情況下被讀。
12.根據(jù)權(quán)利要求11的方法,進(jìn)一步包括以下步驟一把讀請(qǐng)求的屬性以及具有與讀請(qǐng)求對(duì)應(yīng)的存儲(chǔ)器地址的寫請(qǐng)求的數(shù)據(jù)存儲(chǔ)在命中 FIFO 隊(duì)列(“Hit FIFO”)中;以及一把存儲(chǔ)的屬性和數(shù)據(jù)以先進(jìn)先出的方式傳達(dá)到重新排序器件(500)。
13.根據(jù)權(quán)利要求11或12的方法,進(jìn)一步包括以下步驟一在許多讀FIFO隊(duì)列(“Rd FIFO”)中存儲(chǔ)在所述接收的讀請(qǐng)求中包括的存儲(chǔ)器地址 和屬性;以及一借助于所述搜索單元(208)一一如果所述搜索單元(208)不能在寫FIFO隊(duì)列Clr FIFO”)中找到對(duì)應(yīng)的存儲(chǔ)器地 址,則把所述存儲(chǔ)器地址和所述屬性存儲(chǔ)在讀FIFO隊(duì)列(“Rd FIFO”)中。
14.根據(jù)權(quán)利要求13的方法,進(jìn)一步包括以下步驟 一借助于存取調(diào)度器(300):一一基于寫FIFO隊(duì)列(“Wr FIFO”)和讀FIFO隊(duì)列(“Rd FIFO”)中的信息來選擇寫請(qǐng) 求和讀請(qǐng)求中的一個(gè)請(qǐng)求;以及 一借助于命令生成器(214): 一一基于一個(gè)選擇的請(qǐng)求來生成存儲(chǔ)器命令;一一把所述存儲(chǔ)器命令傳輸?shù)剿鲆粋€(gè)或多個(gè)存儲(chǔ)器器件(106)之一;以及 一一把選擇的請(qǐng)求的請(qǐng)求類型(“Type”)和序列標(biāo)識(shí)(“krID”)傳輸?shù)街匦屡判蚱骷?(500)。
15.根據(jù)權(quán)利要求14的方法,進(jìn)一步包括以下步驟 一借助于仲裁器(210):一一在由存取調(diào)度器(300)選擇的請(qǐng)求和由搜索單元(208)找到的一個(gè)或多個(gè)命中請(qǐng) 求之間調(diào)度。
16.根據(jù)權(quán)利要求11-15中任一項(xiàng)的方法,進(jìn)一步包括以下步驟 一借助于一個(gè)或多個(gè)可搜索地址儲(chǔ)存器(206)一一存儲(chǔ)所接收的存儲(chǔ)器請(qǐng)求的數(shù)據(jù)和/或?qū)傩浴?br> 17.根據(jù)權(quán)利要求16的方法,進(jìn)一步包括以下步驟 一借助于復(fù)用器(212):一一在從不同數(shù)據(jù)儲(chǔ)存器可搜索地址儲(chǔ)存器(206)傳輸?shù)牟煌瑪?shù)據(jù)和/或?qū)傩灾g選擇。
18.根據(jù)權(quán)利要求11-17中任一項(xiàng)的方法,進(jìn)一步包括以下步驟一借助于配有背壓級(jí)別的一個(gè)或多個(gè)FIFO隊(duì)列(Ir FIFO", "Rd FIFO”) 一一如果FIFO隊(duì)列的填充級(jí)別超過背壓級(jí)別,則把背壓傳達(dá)到處理器(102);以及 一一阻止相同類型的進(jìn)一步存取請(qǐng)求直到FIFO隊(duì)列的填充級(jí)別返回到在背壓級(jí)別之 下的級(jí)別為止。
19.根據(jù)權(quán)利要求13-17中任一項(xiàng)的方法,進(jìn)一步包括以下步驟一借助于配有應(yīng)急級(jí)別的一個(gè)或多個(gè)FIFO隊(duì)列(“Wr FIFO", "Rd FIFO”) 一一如果寫FIFO隊(duì)列(“Wr FIFO”)或讀FIFO隊(duì)列(“Rd FIFO”)的最大填充級(jí)別增長 到大于應(yīng)急級(jí)別,則在存取調(diào)度器(300)中自動(dòng)地改變用于讀和寫的權(quán)重,使得寫或讀得到 更高的相對(duì)帶寬共享;以及一一當(dāng)寫FIFO隊(duì)列(“Wr FIFO”)或讀FIFO隊(duì)列(“Rd FIFO”)的填充級(jí)別返回到在應(yīng) 急級(jí)別之下的級(jí)別時(shí)離開應(yīng)急模式并且把權(quán)重復(fù)位到正常值。
全文摘要
本發(fā)明涉及一種基于從連接到存取緩沖器的處理器接收的存儲(chǔ)器寫請(qǐng)求和存儲(chǔ)器讀請(qǐng)求來控制對(duì)一個(gè)或多個(gè)存儲(chǔ)器器件的存取的存取緩沖器,其包括許多寫FIFO隊(duì)列,被配置成存儲(chǔ)一個(gè)或多個(gè)存儲(chǔ)器器件的存儲(chǔ)器地址和要寫到存儲(chǔ)器地址的數(shù)據(jù),存儲(chǔ)器地址和數(shù)據(jù)被包括在接收的寫請(qǐng)求中;和被配置成接收包括存儲(chǔ)器地址和屬性的讀請(qǐng)求的搜索單元,被配置成借助于存儲(chǔ)器地址在寫FIFO隊(duì)列中搜索與讀請(qǐng)求的存儲(chǔ)器地址對(duì)應(yīng)的存儲(chǔ)器地址,并且如果找到對(duì)應(yīng)的存儲(chǔ)器地址,則搜索單元找到命中請(qǐng)求并且被配置成檢索在其中找到地址的寫FIFO隊(duì)列中存儲(chǔ)的數(shù)據(jù)并且取消存儲(chǔ)器寫請(qǐng)求,由此要讀的所請(qǐng)求數(shù)據(jù)能夠在不存取一個(gè)或多個(gè)存儲(chǔ)器器件的情況下被讀。
文檔編號(hào)G06F13/16GK102129411SQ20111000898
公開日2011年7月20日 申請(qǐng)日期2011年1月17日 優(yōu)先權(quán)日2010年1月18日
發(fā)明者S·利夫內(nèi), V·蘇科尼克 申請(qǐng)人:厄塞勒拉特公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
赤峰市| 鹿邑县| 嘉黎县| 延长县| 华池县| 蒙城县| 土默特右旗| 英德市| 安阳市| 井研县| 长宁区| 宁陵县| 嵩明县| 丰顺县| 长武县| 洛扎县| 宁远县| 晴隆县| 南平市| 溆浦县| 三台县| 秀山| 宜阳县| 专栏| 沈阳市| 通许县| 锡林浩特市| 方城县| 榆林市| 乌兰浩特市| 阿拉善右旗| 平南县| 星子县| 东乌珠穆沁旗| 德化县| 扬州市| 湖南省| 梓潼县| 青浦区| 江安县| 保德县|