專利名稱:基于突發(fā)亂序的存儲器控制器、系統(tǒng)及其訪存調度方法
技術領域:
本發(fā)明涉及一種存儲器控制器,尤其涉及一種基于突發(fā)亂序訪存調度 的存儲器控制器。
本發(fā)明還涉及一種基于突發(fā)亂序訪存調度的存儲器系統(tǒng)。 本發(fā)明還涉及一種基于突發(fā)亂序的存儲器控制器的訪存調度方法。
背景技術:
隨著處理器性能的不斷提升,處理器對存儲器的數(shù)據需求量越來越 大,存儲器的帶寬已經成為了制約處理器系統(tǒng)性能提高的瓶頸。存儲器的 峰值帶寬是由存儲器芯片的頻率和總線寬度這兩個特征參數(shù)決定的。采用 好的存儲器訪問調度控制策略可以使存儲器的帶寬被更好的利用。
同步動態(tài)隨機存儲器(SDRAM)通常采用三維(Bank-Row-Column) 的硬件結構。其內部可以分成多個塊(bank),每個塊又分成行(row)和列 (cohmm)。 SDRAM里的數(shù)據訪問也是按照塊、行、列的順序來尋址的。 存儲器訪存操作可以劃分為行命中(row hit)、行沖突(row conflict)和行空 (rowempty)三種類型。行命中指的是訪問預先已經被行激活(activate)的 訪存;行沖突指的是需要預先釆取行關閉(precharge)的訪存;行空(row empty)指的是不需要行關閉但是需要行激活操作的訪存。因為行沖突需要 行關閉、行激活以及列訪問(column access )三個SDRAM操作,所以它 的訪存延時最長;行空需要行激活和列訪問兩個操作,其訪存延時次之; 而行命中只需要列訪問一個操作,它的訪存延時最小。通過對存儲器的訪 問進行亂序調度,使得對同 一塊同 一行的訪問或者不同塊的訪存并發(fā)執(zhí) 行,可以極大的減少訪存延時,提高存儲器帶寬利用率。
在2003年10月22日由H. G. Rotithor, R. B. Osborne, and N. Aboulenein 等人遞交的名稱為 "Method and Apparatus for Out of Order Memory Scheduling"的美國專利申請(以下簡稱為文獻1)中,公開了 Intel公司 的一種存儲器亂序調度技術。其中為每一個塊分別建立了 一個讀隊列和一個寫隊列,讀寫訪存都按照時間順序進入隊列,讀訪存的優(yōu)先級要大于寫 操作,塊仲裁器按照最老時間的方式選擇一個當前訪問延時最短的訪存。 這種調度策略沒有利用突發(fā)亂序訪存調度,而且控制起來比較復雜。
Jun Shao, Brian T. Davis等人在文獻"A Burst Scheduling Access Reordering Mechanism, In HPCA 2007: IEEE 13th International Symposium on High Performance Computer Architecture, pages 285-294, IEEE Computer Society, 10-14 Feb., 2007"(以下筒稱為文獻2)中對文獻1的存儲器亂序 調度技術進行了改進,并公開了一種突發(fā)調度技術。其中也為每一塊分別 建立了讀和寫隊列,讀訪問按照行命中的方式保存,同一塊同一行的訪存 形成一個突發(fā),每個塊都有一個仲裁器從當前的讀隊列中選擇時間最老的 突發(fā)出來。讀比寫優(yōu)先,只有當寫隊列滿或者超過某一個門限值的時候才 有可能被選擇出來。在文獻2中,寫訪存在進入寫隊列時完全"l姿照時間的 一維方式順序組織保存。最先進入隊列的寫訪存放在隊列的最前端,后進 入的寫訪存即使和前面某一個是行命中的關系,也只放在隊列的末尾,而 不是和前面的行命中組成一個行突發(fā)。在對塊進行訪存的仲裁時,只有寫 隊列滿,寫隊列長度超過某個門限值或者讀隊列空而寫隊列非空時,寫訪 存才會被響應。這樣的結構以及組織形式使得控制器每次發(fā)給SDRAM的 訪問是以單個寫訪存為單位而不是以延時少的寫突發(fā)的為單位,這對于存 儲器總線的帶寬是一種浪費。
因此,迫切需要綜合考慮各種仲裁考慮因素,并通過改變寫隊列的結 構以增加對寫隊列的行突發(fā)的考慮,以便增加存儲器與控制器之間的帶寬 容量,進一步減少處理器的執(zhí)行時間。
發(fā)明內容
本發(fā)明目的在于解決存儲器帶寬的瓶頸問題,通過改變寫隊列的結
器數(shù)據帶寬,減少處理器的執(zhí)行時間。
為了實現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種存儲器控制器,包括將 從處理器而來的讀寫訪存均以二維方式保存的讀寫隊列模塊;用于在每個 存儲器時鐘周期從各個塊中仲裁出 一個突發(fā)訪問的塊仲裁模塊;以及用于 從所述各個塊仲裁后的突發(fā)中選擇最終的訪存操作發(fā)送給存儲器的事件 選擇模塊。根據本發(fā)明優(yōu)選實施例的存儲器控制器,其中所述塊仲裁模塊均利用
公式ax等待時間+bx突發(fā)的長度+讀或寫突發(fā)優(yōu)先級,計算一個突發(fā) 訪問優(yōu)先級,從所述各個讀寫隊列模塊中仲裁出一個突發(fā)訪問,其中a和 b是實數(shù)。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,其中a與b的比值介于l: 1 至1: IO之間。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,a與讀突發(fā)優(yōu)先級的比值介 于1: 1,000至1: 10,000之間。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,a與寫突發(fā)優(yōu)先級的比值為 1: 1。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,其中a為1, b為1,對于所 述讀突發(fā)優(yōu)先級為5,000,對于所述寫突發(fā)優(yōu)先級為1。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,其中所述二維方式保存是指 所述讀寫隊列模塊均在垂直方向從上到下按照時間順序依次保存所述突 發(fā),在水平方向按照時間順序保存對同 一行的行命中訪存。
根據本發(fā)明優(yōu)選實施例的存儲器控制器,針對各個塊分別建立一個讀 隊列模塊和一個寫隊列模塊。
本發(fā)明還提供了 一種利用本發(fā)明實施例提供的存儲器控制器實現(xiàn)基 于突發(fā)亂序的訪存調度方法,包括下列步驟把從處理器來的存儲器訪問 保存到讀寫隊列模塊中;在塊仲裁模塊中根據優(yōu)先級公式對保存在某個塊 的所述讀寫隊列模塊中的讀寫訪問進行選擇;以及事件選擇模塊從各個塊 仲裁出來的突發(fā)中選擇一個最終的突發(fā),并安排當前的訪存事件。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述把從處理器來的存 儲器訪問保存到讀寫隊列模塊中的步驟還包括下列步驟檢測從所述處理 器來的存儲器訪問;分析在新的讀寫操作加入隊列前所述相應的讀寫隊列 模塊中數(shù)據保存情況;以及把所述新來的讀寫操作加入到所述相應隊列模 塊中。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述在塊仲裁模塊中根 據優(yōu)先級公式對保存在某個塊的所述讀寫隊列模塊中的讀寫訪問進行選 擇的步驟還包括下列步驟檢測所述塊的讀寫隊列模塊中數(shù)據的保存情 況;根據所述讀寫隊列模塊中保存的數(shù)據情況,對所述隊列中的每個突發(fā) 分別計算優(yōu)先級;從所述讀寫隊列模塊中選擇出經計算后擁有最大優(yōu)先級的突發(fā)作為當前塊仲裁的結果;以及把所述仲裁的結果送到所述事件選擇 模塊中選擇一個最終的突發(fā)。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述事件選擇模塊按照 下列優(yōu)先順序進行選擇l.列訪問優(yōu)先;2.行激活以及不同塊的行關閉其 次;3.相同塊不同行的行關閉最后;4.在上述的同一優(yōu)先順序中,讀訪存 優(yōu)先于寫訪存。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述把從處理器來的存 儲器訪問保存到所述讀寫隊列模塊中的步驟之前還包括當一個讀訪存進 入所述讀隊列模塊之前,考慮讀后寫的數(shù)據相關性,搜索所述寫隊列模塊 中是否有與所述讀隊列模塊的物理地址相同的訪存,如果有,直接從該寫 訪存中取出需要的數(shù)據返回給所述處理器,如果沒有,再進入讀隊列模 塊。。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述事件選擇模塊還考 慮數(shù)據相關問題。
根據本發(fā)明優(yōu)選實施例的訪存調度方法,其中所述事件選擇模塊對于 寫后讀的數(shù)據沖突的處理如下在選擇某個寫訪存之后,先搜索同一塊中 的讀隊列,如果有相同物理地址的讀訪存,那么優(yōu)先處理所述具有相同物 理地址的讀訪存之后,再執(zhí)行當前的寫訪存。
本發(fā)明還提供了 一種存儲器系統(tǒng),所述存儲器系統(tǒng)包括本發(fā)明實施例 提供的存儲器控制器。
通過上述本發(fā)明具體實施例,可以解決存儲器帶寬的瓶頸問題。通過
對訪存亂序調度,以增加存儲器數(shù)據帶寬,減少處理器的執(zhí)行時間。
以下,結合附圖來詳細說明本發(fā)明的實施例,其中
圖1為根據本發(fā)明實施例的存儲器控制器100的結構示意圖2為根據本發(fā)明實施例的讀隊列模塊或寫隊列模塊101的結構示意
圖3為根據本發(fā)明實施例的塊仲裁模塊102的功能示意圖; 圖4為根據本發(fā)明實施例的存儲器系統(tǒng)的結構示意圖。
具體實施例方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,下面參考附圖
并通過具體實例來對本發(fā)明進行更進一步的說明
請參考圖1、圖4,圖1為根據本發(fā)明實施例的存儲器控制器100的 結構示意圖;圖4為根據本發(fā)明實施例的存儲器系統(tǒng)的結構示意圖。如圖 l所示,該控制器100主要由三部分組成讀或者寫的訪存突發(fā)隊列模塊 (以下簡稱為讀隊列模塊或寫隊列模塊)101、塊仲裁模塊102、 SDRAM 事件選擇模塊(以下簡稱為事件選擇模塊)103。另一方面,如圖4所示, 該存儲器系統(tǒng)包括存儲器控制器100、處理器200以及存儲器300,與圖1 所示的存儲器控制器相比,如圖4所示的控制器IOO還包括但不限于初始 化模塊104和時鐘模塊105。在此不再對上述兩個模塊進行贅述。
在本發(fā)明實施例中,讀隊列模塊或寫隊列模塊101將從處理器200而 來的訪存都以突發(fā)的方式保存,這與文獻2不同;在本發(fā)明實施例中,是 把寫隊列模塊和讀隊列模塊按照同樣的"二維"方式來組織,請參考圖3, 圖3為根據本發(fā)明實施例的塊仲裁模塊102的功能示意圖,與文獻2相比, 從圖3中可以看出本發(fā)明實施例對于寫隊列模塊101的改進,即垂直方向 從上到下按照時間順序保存突發(fā),水平方向按照時間順序保存對同 一個行 的行命中訪存;每一個塊都有一個塊仲裁模塊102,用于在每個存儲器時 鐘周期從該塊中仲裁出 一個突發(fā)訪問,仲裁的原則依據后續(xù)提出的優(yōu)先級 表達公式,當塊仲裁模塊102在進行仲裁時,也針對讀寫隊列模塊101中 的所有突發(fā)利用統(tǒng)一的優(yōu)先級表達公式進行仲裁,以便在后面詳細描述的 優(yōu)先級公式中體現(xiàn)讀寫突發(fā)的優(yōu)先級區(qū)別;事件選擇模塊103用于從各個 塊仲裁后的突發(fā)中選擇最終的訪存操作發(fā)送給存儲器300。優(yōu)選地,讀隊 列模塊與寫隊列模塊ioi的結構完全相同,并且存儲器300為SDRAM, 但是本發(fā)明并不以此為限。
以下將參考圖2、圖3,對控制器100中的讀隊列模塊或寫隊列模塊 101、塊仲裁模塊102以及事件選擇模塊103的功能以及訪存調度方法分 別詳細描述如下
請參考圖2,圖2為根據本發(fā)明實施例的讀隊列模塊或寫隊列模塊101 的結構示意圖。從處理器200來的存儲器讀寫訪問根據其物理地址進入相 應塊的讀寫隊列模塊101。如圖2所示,垂直方向從上到下按照時間順序 依次保存突發(fā),水平方向按照時間順序保存對同一行的行命中訪存。 一個新的訪存進入隊列時應加入已有的同一4亍的行命中的突發(fā)尾部,如果該突 發(fā)不存在,那么它便在隊列垂直方向的尾部新建一個突發(fā)。這一步要考慮
讀后寫(Read-After-Write)的數(shù)據相關性,當 一個讀訪存進入讀隊列模塊之 前,它首先應該搜索寫隊列模塊中是否有和它物理地址相同的訪存,如果 有的話,直接從該寫訪存中取出需要的數(shù)據返回給處理器200即可,而不 需要再進入讀隊列模塊;如果沒有的話,再進入讀隊列模塊。
接下來參考圖1、圖2,詳細描述當有存儲器訪存請求時,訪存調度 方法包括首先把從處理器來的存儲器訪問保存到讀寫隊列模塊101中的過 程。在本實施例中,僅以讀操作為例,如圖2所示,將從處理器來的存儲 器訪問保存到讀寫隊列模塊101中的過程具體包括以下步驟
步驟S201:;險測從處理器200來的存儲器訪問。在圖2中,示意了有 兩個讀操作存儲器訪問等待加入隊列,但是本發(fā)明還包括處理更多個存儲 器訪問,并不以此為限。如圖2所示,第一個讀訪問的地址是第1塊第2 行的第3列,接下來一個的地址是同一塊里第5行的第8列。
步驟S202:分析在新的讀操作加入隊列前讀隊列模塊101里數(shù)據保存 情況。如圖2所示,(0, 14)表示的是對該塊第0行第14列的訪問,在 水平方向的 一行是對該塊里同 一行的多個列訪問組成的突發(fā), 一行里最左 邊的方框代表這個突發(fā)的頭節(jié)點。每一個突發(fā)最后面的(n)表示這個突 發(fā)已經在隊列中等待了 n個時鐘周期,它表示的是這個突發(fā)的頭節(jié)點已經 等待的時間。例如圖2中的(25)表示這個突發(fā)已經等待了 25個時鐘周 期,即該突發(fā)的頭節(jié)點是在25個時鐘周期前進入隊列的。以后每過一個 時鐘周期,這個數(shù)值都將加1。隊列中的每個突發(fā)都有一個等待時間作為 其屬性。在隊列中,多個突發(fā)是按照等待時間長短順序排列的,等待最久 的突發(fā)排在隊列的最前面。
步驟S203: 把新來的這兩個讀操作加入到讀隊列模塊101中,如圖 2所示的是兩個訪問加入以后讀隊列模塊101里的數(shù)據保存情況??梢钥?到,由于隊列里已經存在對第2行的突發(fā),所以(2, 3)這個讀訪問會被 加到該突發(fā)的尾部。而對(5, 8)這個訪問,由于目前隊列里沒有對第5 行的突發(fā),那么就以這個訪問作為頭節(jié)點建立一個新的突發(fā)加到了整個隊 列的尾部。這時,對(5, 8)這個單獨的節(jié)點組成的突發(fā),它的等待時間 記為1,同時其他的突發(fā)的等待時間都增加一個時鐘周期。
當把新來的讀寫操作保存到對應的讀寫隊列模塊101之后,接下來詳細描述塊仲裁模塊102的功能以及如何在塊仲裁模塊102進行突發(fā)優(yōu)先級 的仲裁
請繼續(xù)參考圖3,圖3為根據本發(fā)明實施例的塊仲裁模塊102的功能 示意圖。塊仲裁的目的是要從當前塊中選出一個最優(yōu)的突發(fā),作為最終送 給SDRAM訪存的候選。本發(fā)明對此提出了一個優(yōu)先級表達公式,該表達 式形式如下
優(yōu)先級-ax等待時間+bx突發(fā)的長度+讀或寫突發(fā)優(yōu)先級
(公式l)
與文獻1和文獻2中的調度算法只考慮單個調度因素不同,上述表達式綜 合考慮了三個優(yōu)先級因素,包括某個突發(fā)在讀隊列模塊或寫隊列模塊101 中等待的存儲器周期數(shù)、某個突發(fā)的長度以及讀或者寫突發(fā)的優(yōu)先級。因 為讀操作是影響處理器性能的關鍵因素并且訪存操作中讀操作的數(shù)量通 常要大于寫操作,因此,讀操作的優(yōu)先級應該比寫操作的高很多,盡量優(yōu) 先讀訪問。在公式1中,a、 b分別是等待時間和突發(fā)的長度的系數(shù),其中, 等待時間與突發(fā)的長度均為變量。讀或寫突發(fā)的優(yōu)先級為預先設定的常 量。a、 b通過經驗設定和反復實驗修正后確定,實驗結果表明,a、 b之 間的比例關系在以下范圍時,系統(tǒng)性能較優(yōu)a與b的比值取1:1到1:10 之間;對讀突發(fā),a:讀突發(fā)優(yōu)先級取1:1000到1:10000之間;對寫突發(fā), a:寫突發(fā)優(yōu)先級保持1:1即可,此設定是為了讓讀突發(fā)優(yōu)先于寫突發(fā)。優(yōu) 選地,當a、 b分別耳又1時,寫突發(fā)優(yōu)先級取1,讀突發(fā)優(yōu)先級取5000, 在保持一定的權重比例的前提下,除了實現(xiàn)的硬件復雜度問題,a、 b和讀 或寫突發(fā)的優(yōu)先級的具體數(shù)值對系統(tǒng)性能影響不大,對于a、 b和讀或寫 突發(fā)的優(yōu)先級的具體取值,本發(fā)明并不以上述取值為限。各個塊(bank) 的塊仲裁模塊102根據公式1中的優(yōu)先級表達公式計算出當前塊中的各個 突發(fā)的優(yōu)先級,并選擇出一個優(yōu)先級最高的突發(fā)作為最終發(fā)送給SDRAM 操作的候選。
隨后詳細描述在塊仲裁模塊102中根據本發(fā)明提出的優(yōu)先級公式對保 存在某個塊的讀寫隊列模塊101中的讀寫訪問進行選擇的過程。請再次參 考圖1和圖3,圖3是塊仲裁模塊102對讀寫訪問進行選擇過程的流程圖。 對每個塊都要進行同樣的這個操作。如圖3所示,具體包括以下步驟
步驟S301: 檢測塊的讀寫隊列模塊101中數(shù)據的保存情況,包含本 發(fā)明提出的優(yōu)先級計算公式對每個突發(fā)要用到的該突發(fā)在讀寫隊列模塊101中已經等待的時間、突發(fā)的長度以及該突發(fā)是讀還是寫這三個信息。
突發(fā)的長度指的是該突發(fā)里包含的數(shù)據訪問的個數(shù)。如圖3所示,對讀隊 列中以(O, 14)作為頭節(jié)點的這個突發(fā),它的突發(fā)長度是l,等待時間是 26個時鐘周期;而對讀隊列里以(10, 3)為頭節(jié)點的突發(fā),它的突發(fā)長 度是3,等待時間是18。從圖3還可以看出,寫隊列里突發(fā)的等待時間要 遠大于讀隊列,這也是優(yōu)先級公式里選擇讀操作優(yōu)先于選擇寫操作的結 果。
步驟S302: 根據讀寫隊列模塊101中保存的數(shù)據情況,對隊列中的 每個突發(fā)分別計算優(yōu)先級。例如對以(0, 14)作為頭節(jié)點的突發(fā),其優(yōu) 先級計算如下優(yōu)先級=&*26 + b*l +讀突發(fā)的優(yōu)先級。
步驟S303: 從讀寫隊列模塊101中選擇出經計算后擁有最大優(yōu)先級 的突發(fā)作為該塊的仲裁結果。從這里可以看出,由于隊列中最老的突發(fā)不 一定有最長的突發(fā)長度,所以不一定擁有最高的優(yōu)先級,所以優(yōu)先級公式 實現(xiàn)了 一個亂序的調度過程,它可以選出最適合的突發(fā)來訪問存儲器300。
步驟S304: 把該塊仲裁后的結果送到下一階段進行操作。
接下來,事件選擇模塊103用于從各個塊仲裁出來的突發(fā)中選擇一個 最終的突發(fā),并安排當前的訪存事件。為了減少訪存的延時并增加帶寬的 利用率,對于送給SDRAM的訪存的事件安排應該遵從如下原則
1 .列"i方問(Column access)^尤先;
2.行激活(Activate)以及不同塊的行關閉(Precharge)其次; 3 .相同塊不同行的行關閉(Precharge)最后; 4.在上述三個優(yōu)先級的同一級中,讀訪存優(yōu)先于寫訪存。 此外,事件選擇模塊103還要考慮數(shù)據相關問題。因為對于同一塊同 一行的寫訪存都是按照時間先后順序保存在突發(fā)中的,因此不存在寫后寫 (Write-After-Write)的數(shù)據沖突。對于寫后讀(Write-After-Read)的數(shù)據沖突 的處理如下在選擇一個寫訪存之后,先搜索同一塊中的讀隊列,如果有 相同物理地址的讀訪存,那么優(yōu)先處理這個讀訪存之后,再執(zhí)行當前的寫 訪存。
根據本發(fā)明實施例的存儲器控制器100通過在M5仿真平臺上運行訪 存密集型的SPEC CPU2000以及Stream基準程序來驗證其可行性。實驗結 果表明,本發(fā)明與傳統(tǒng)的不經調度的順序執(zhí)行訪存操作的控制器相比,數(shù) 據總線利用率提高74%,執(zhí)行時間減少41%。與不將寫操作以突發(fā)形式保存且不使用優(yōu)先級表達式的文獻2中的突發(fā)調度相比,數(shù)據總線利用率
提高9 % ,執(zhí)行時間減少5 % 。實驗數(shù)據證明了本發(fā)明的優(yōu)越性。
通過上述本發(fā)明具體實施例,可以解決存儲器帶寬的瓶頸問題。通過
改變寫隊列的結構,采用本發(fā)明提出的優(yōu)先級表達式進行塊的突發(fā)仲裁來
對訪存亂序調度,以增加存儲器數(shù)據帶寬,減少處理器的執(zhí)行時間。
雖然本發(fā)明已經通過優(yōu)選實施例進行了描述,然而本發(fā)明并非局限于
這里所描述的實施例,在不脫離本發(fā)明范圍的情況下還包括所做出的各種
改變以及變化。
權利要求
1. 一種存儲器控制器,其特征在于,所述存儲器控制器包括讀寫隊列模塊,用于將來自處理器的讀寫訪存以二維方式保存;塊仲裁模塊,用于在每個存儲器時鐘周期從各個塊中仲裁出一個突發(fā)訪問;以及事件選擇模塊,用于從所述各個塊仲裁后的突發(fā)中選擇要執(zhí)行的訪存操作。
2. 根據權利要求1所述的存儲器控制器,其特征在于,所述塊仲裁 模塊均利用公式ax等待時間+bx突發(fā)的長度+讀或寫突發(fā)優(yōu)先級,計 算一個突發(fā)訪問優(yōu)先級,從所述各個讀寫隊列模塊中仲裁出 一個突發(fā)訪 問,其中a、 b是實數(shù)。
3. 根據權利要求2所述的存儲器控制器,其特征在于,a與b的比值 介于1: 1至1: IO之間。
4. 根據權利要求2或3所述的存儲器控制器,其特征在于,a與讀突 發(fā)優(yōu)先級的比值介于1: 1,000至1: 10,000之間。
5. 根據權利要求2或3所述的存儲器控制器,其特征在于,a與寫突 發(fā)優(yōu)先級的比值為1: 1。
6. 根據權利要求2所述的存儲器控制器,其特征在于,a為l, b為 1,所述讀突發(fā)優(yōu)先級為5,000,所述寫突發(fā)優(yōu)先級為1。
7. 根據權利要求1所述的存儲器控制器,其特征在于,對于所述讀 寫隊列,所述讀寫隊列模塊用于在垂直方向從上到下按照時間順序依次保 存所述突發(fā),以及在水平方向按照時間順序保存對同 一行的行命中訪存。
8. 根據權利要求1所述的存儲器控制器,其特征在于,針對所述塊 分別建立一個讀隊列模塊和一個寫隊列模塊。
9. 一種利用根據權利要求1 - 8中任一項所述的存儲器控制器實現(xiàn)基 于突發(fā)亂序的訪存調度方法,其特征在于,所述訪存調度方法包括下列步 驟把從處理器來的存儲器訪問保存到讀寫隊列模塊中; 的讀寫訪問進行選擇;以及事件選擇模塊從各個塊仲裁出來的突發(fā)中選擇一個最終的突發(fā),并安 排當前的訪存事件。
10. 根據權利要求9所述的訪存調度方法,其特征在于,所述把從處 理器來的存儲器訪問保存到讀寫隊列模塊中的步驟還包括下列步驟檢測從所述處理器來的存儲器訪問;分析在新的讀寫操作加入隊列前所述相應隊列模塊中數(shù)據保存情況;以及把所述新來的讀寫操作加入到所述相應隊列模塊中。
11. 根據權利要求9所述的訪存調度方法,其特征在于,所述在塊仲 裁模塊中根據優(yōu)先級公式對保存在某個塊的所述讀寫隊列模塊中的讀寫 訪問進行選擇的步驟還包括下列步驟檢測所述塊的讀寫隊列模塊中數(shù)據的保存情況;根據所述讀寫隊列模塊中保存的數(shù)據情況,對所述隊列中的每個突發(fā) 分別計算優(yōu)先級;從所述讀寫隊列模塊中選擇出經計算后擁有最大優(yōu)先級的突發(fā)作為 該塊仲裁后的結果;以及把所述塊仲裁后的結果送到所述事件選擇模塊。
12. 根據權利要求9所述的訪存調度方法,其特征在于,所述事件選 擇模塊按照下列優(yōu)先順序選擇訪存操作1) 列訪問優(yōu)先;2) 行激活以及不同塊的行關閉其次;3) 相同塊不同行的行關閉最后;4) 在上述同一優(yōu)先順序中,讀訪存優(yōu)先于寫訪存。
13. 根據權利要求9所述的訪存調度方法,其特征在于,所述把從處 理器來的存儲器訪問保存到所述讀寫隊列模塊中的步驟之前還包括當一 個讀訪存進入所述讀隊列模塊之前,考慮讀后寫的數(shù)據相關性,搜索所述 寫隊列模塊中是否有與所述讀隊列模塊的物理地址相同的訪存,如果有, 直接從該寫訪存中取出需要的數(shù)據返回給所述處理器,如果沒有,再進入 讀隊列模塊。
14. 根據權利要求12所述的訪存調度方法,其特征在于,所述事件 選擇模塊還考慮數(shù)據相關問題。
15. 根據權利要求14所述的訪存調度方法,其特征在于,所述事件選擇模塊對于寫后讀的數(shù)據沖突的處理如下在選擇某個寫訪存之后,先 搜索同一塊中的讀隊列,如果有相同物理地址的讀訪存,那么優(yōu)先處理所 述具有相同物理地址的讀訪存之后,再執(zhí)行當前的寫訪存。
16. —種存儲器系統(tǒng),其特征在于,所述存儲器系統(tǒng)包括權利要求 1 - 8中任一項所述的存儲器控制器。
全文摘要
本發(fā)明提供一種基于突發(fā)亂序訪存調度的存儲器控制器。該存儲器控制器用于存儲器訪問的突發(fā)亂序訪存調度,該存儲器控制器包括將從處理器而來的讀寫訪存均以二維方式保存的讀寫隊列模塊;用于在每個存儲器時鐘周期從各個塊中仲裁出一個突發(fā)訪問的塊仲裁模塊;以及用于從所述各個塊仲裁后的突發(fā)中選擇最終的訪存操作發(fā)送給存儲器的事件選擇模塊。通過改變寫隊列的結構,采用本發(fā)明提出的優(yōu)先級表達式進行塊的突發(fā)仲裁來對訪存亂序調度,以增加存儲器數(shù)據帶寬,減少處理器的執(zhí)行時間。
文檔編號G06F13/16GK101470678SQ20071030850
公開日2009年7月1日 申請日期2007年12月29日 優(yōu)先權日2007年12月29日
發(fā)明者侯朝煥, 張鐵軍, 磊 時, 磊 楊, 王東輝, 珺 逄 申請人:中國科學院聲學研究所