專利名稱:訪存請求調(diào)度裝置以及用該裝置進(jìn)行訪存請求調(diào)度的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種調(diào)度裝置,特別是訪存請求調(diào)度裝置。還涉及用這種訪存請求調(diào)度裝置 進(jìn)行訪存請求調(diào)度的方法。
背景技術(shù):
文獻(xiàn)l"專利號為US20070156946的美國專利"公開了一種存儲器控制器電路。該裝置針 對不同設(shè)備提供多個并行的Bank訪問先進(jìn)先出(FIFO)訪存請求寄存器,仲裁器對這些Bank 訪存請求進(jìn)行切換,由于采用了 FIFO訪存請求寄存器,對訪存請求進(jìn)行順序組織,硬件實(shí) 現(xiàn)簡單,但是,多核處理器中多個線程同時發(fā)出訪存請求,這些訪存請求之間的局部性較差, 會引起較多的行激活、預(yù)充電指令,由于上述指令的延遲非常大,會引起平均訪存延遲的增 大,降低存儲器吞吐率。
文獻(xiàn)2"專利號為US20050246481的美國專利"公開了一種亂系訪存請求調(diào)度的存儲器控 制器。該裝置利用之前的訪存信息對訪存請求進(jìn)行調(diào)度,帶有一定的猜測性,猜測成功的基 礎(chǔ)是程序的行為比較固定,訪存局部性較好。在多核處理器中,多個處理器核并行計(jì)算組成 的程序行為并不穩(wěn)定,而且會產(chǎn)生局部性較差的訪存請求。因此,該裝置并不適合多核處理 器應(yīng)用。
文獻(xiàn)3"專利號為US20030033493的美國專利"公開了一種亂序訪存請求調(diào)度的存儲器控 制器。該裝置采用狀態(tài)機(jī)控制存儲器指令的流失執(zhí)行,命令調(diào)度器用于對存儲器命令,比如 行激活指令、預(yù)充電指令的亂序調(diào)度,同時,該命令調(diào)度器還可以對讀寫請求進(jìn)行亂序調(diào)度, 采用訪存請求的亂系調(diào)度可以減小訪存延遲,但是會造成某個局部性較差的請求被無限期推 后執(zhí)行,造成線程餓死,降低了處理器的最低性能表現(xiàn),影響計(jì)算實(shí)時性。因此,該處理器 無法解決多核處理器在實(shí)時流計(jì)算中的實(shí)時性需求。
參照圖5,公知的共享存儲器多核處理器中訪存請求處理裝置的組成包括分Bank的多個 訪存請求寄存器堆、Bank調(diào)度器及DRAM調(diào)度器。訪存請求寄存器堆用于保存處理器線程 發(fā)出的訪存請求,Bank調(diào)度器用于從訪存請求寄存器堆中選取某個請求發(fā)送給DRAM調(diào)度 器,DRAM調(diào)度器接收Bank調(diào)度器發(fā)出的訪存請求,并選擇一個訪存請求發(fā)送到DRAM調(diào) 度器。其中,Bank調(diào)度器將地址范圍集中的相同Bank、相同行訪存請求優(yōu)先調(diào)度,DRAM 調(diào)度器也將Bank調(diào)度器發(fā)送的相同Bank、相同行的訪存請求優(yōu)先調(diào)度。該裝置存在以下問 題如果多核處理器中某個線程持續(xù)發(fā)出大量地址范圍集中的訪存請求,該線程的所有訪存
請求將被優(yōu)先執(zhí)行,而其它線程發(fā)出的地址范圍分散的訪存請求將被無限期推后,導(dǎo)致線程餓死,降低了處理器的最低性能表現(xiàn)并影響程序執(zhí)行的實(shí)時性。
發(fā)明內(nèi)容
針對傳統(tǒng)多核處理器內(nèi)亂序訪存調(diào)度裝置影響線程處理實(shí)時性的問題,本發(fā)明提供一種 訪存請求調(diào)度裝置,在訪存請求調(diào)度電路中構(gòu)建了窗口約束電路,窗口約束電路保證Bank 調(diào)度器一次僅能對有限數(shù)量的訪存請求進(jìn)行調(diào)度,可以防止個別地址局部性較差的訪存請求 被Bank調(diào)度器無限期延后調(diào)度,可以消除訪存請求亂序調(diào)度造成的線程餓死,提高多核處理 器的最低處理能力。
本發(fā)明還提供利用這種訪存請求調(diào)度裝置進(jìn)行訪存請求調(diào)度的方法。首先對窗口約束電 路進(jìn)行初始化,在窗口長度寄存器中設(shè)置一次調(diào)度中可見的訪存請求數(shù)量;訪存請求到來后, 如果訪存請求對應(yīng)的Bank訪存請求寄存器堆不滿,將該訪存請求保存到請求寄存器堆中;窗 口約束模塊從窗口長度寄存器中讀取數(shù)值,并將Bank訪存請求寄存器中相應(yīng)數(shù)值的讀請求設(shè) 置為可見,并將所有的寫請求設(shè)置為可見。在Bank訪存請求寄存器堆中,Bank調(diào)度器將可 見的訪存請求發(fā)送到DRAM調(diào)度器,供DRAM調(diào)度器調(diào)度。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案 一種訪存請求調(diào)度裝置,包括若干個Bank的 訪存請求寄存器堆和若干個Bank調(diào)度器以及DRAM調(diào)度器,其特點(diǎn)是還包括若干個窗口約 束電路,窗口約束電路中包含一個訪存請求計(jì)數(shù)器及窗口長度寄存器,訪存請求寄存器將 Bank訪存請求寄存器堆中的寫請求設(shè)置為可見,訪存請求計(jì)數(shù)器對進(jìn)入訪存請求寄存器堆的 可見讀訪存請求進(jìn)行計(jì)數(shù),當(dāng)訪存請求計(jì)數(shù)器數(shù)值小于窗口長度寄存器數(shù)值時,訪存請求寄 存器中的不可見讀請求設(shè)置為可見,訪存請求計(jì)數(shù)值累計(jì),當(dāng)訪存請求計(jì)數(shù)器數(shù)值等于窗口 長度寄存器且訪存請求寄存器堆中的可見讀訪存請求都被執(zhí)行時,訪存請求計(jì)數(shù)器歸零,窗 口約束電路將訪存請求設(shè)置為Bank調(diào)度器可見,Bank調(diào)度器僅對可見的訪存請求進(jìn)行調(diào)度, DRAM調(diào)度器根據(jù)Bank調(diào)度器的結(jié)果向DRAM調(diào)度器發(fā)送存儲器指令。
一種利用上述訪存請求調(diào)度裝置進(jìn)行訪存請求調(diào)度的方法,其特點(diǎn)是包括以下步驟
(a) 初始化窗口約束電路,設(shè)置訪存請求計(jì)數(shù)器為零,窗口長度寄存器為預(yù)設(shè)值;
(b) 接收來自處理器的訪存請求,當(dāng)訪存請求對應(yīng)的Bank的訪存請求寄存器堆不滿時, 將該訪存請求保存到對應(yīng)的Bank的訪存請求寄存器堆中;
(c) 窗口約束電路對訪存請求寄存器堆中的訪存請求進(jìn)行設(shè)置,當(dāng)訪存請求為寫請求時, 則將其設(shè)置為可見,當(dāng)訪存請求為讀請求時,且訪存請求計(jì)數(shù)器值小于窗口長度寄存器值, 則將其設(shè)置為可見,否則設(shè)置為不可見;
(d) Bank調(diào)度器對訪存請求調(diào)度器中的可見請求進(jìn)行調(diào)度,將同Bank同行的請求優(yōu)先 發(fā)送到DRAM調(diào)度器;(e) DRAM調(diào)度器根據(jù)Bank調(diào)度器的訪存請求向DRAM調(diào)度器發(fā)出存儲器指令;
(f) 訪存請求執(zhí)行完畢后,將該訪存請求在訪存請求寄存器堆中的保存項(xiàng)設(shè)置為無效。 本發(fā)明的有益效果是由于在訪存請求調(diào)度電路中構(gòu)建了窗口約束電路,窗口約束電路
保證Bank調(diào)度器一次僅能對有限數(shù)量的訪存請求進(jìn)行調(diào)度,可以防止個別地址局部性較差的 訪存請求被Bank調(diào)度器無限期延后調(diào)度,消除了訪存請求亂序調(diào)度造成的線程餓死,提高了 多核處理器的最低處理能力。
下面結(jié)合附圖和實(shí)施例對本發(fā)明做詳細(xì)說明。
圖1是本發(fā)明訪存請求調(diào)度裝置的結(jié)構(gòu)框圖。 圖2是圖1中訪存請求寄存器堆的詳圖。 圖3是圖1中窗口約束電路的詳細(xì)說明圖。 圖4是圖1中Bank調(diào)度器的詳圖。 圖5是公知的訪存請求調(diào)度裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式
參照圖1~4,本發(fā)明在構(gòu)造上采用了窗口約束的訪存請求亂序調(diào)度裝置。整個裝置由分 Bank的訪存請求寄存器堆、分Bank的窗口約束電路、Bank調(diào)度器及DRAM調(diào)度器四大部 分組成。訪存請求寄存器堆用于保存處理器發(fā)出的訪存請求,由多個訪存請求寄存器組成, 圖2給出了由四個訪存請求寄存器組成的訪存請求寄存器堆。每個訪存請求寄存器由九項(xiàng)組 成,行地址項(xiàng)與列地址項(xiàng)用于保存訪存請求的地址信息,數(shù)據(jù)項(xiàng)用于保存寫請求的寫入數(shù)據(jù), 讀/寫項(xiàng)用于保存訪存的請求類型,有效位用于標(biāo)示該寄存器記錄的信息是否有效,時間標(biāo)記 保存請求的到達(dá)時間順序,可見標(biāo)記表明該寄存器保存的訪存請求是否對Bank調(diào)度器可見, 由窗口約束電路操作,當(dāng)前激活行表明該訪存請求的行是否被激活,狀態(tài)位跟蹤訪存請求的 執(zhí)行情況。窗口約束電路用于控制訪存請求寄存器堆中的訪存請求是否對Bank調(diào)度器可見, 主要由訪存請求計(jì)數(shù)器及窗口長度寄存器組成。Bank調(diào)度器對訪存請求寄存器堆中可見的訪 存請求進(jìn)行調(diào)度。DRAM調(diào)度器對Bank調(diào)度器發(fā)出的訪存請求進(jìn)行集中調(diào)度。
整個電路的信息流向?yàn)樘幚砥靼l(fā)出訪存請求,訪存請求調(diào)度器接收該訪存請求并根據(jù) 地址信息將該訪存請求保存到相應(yīng)的訪存請求寄存器堆中。窗口約束電路對訪存請求寄存器 堆中到達(dá)的訪存請求的可見標(biāo)記進(jìn)行操作,將訪存請求標(biāo)記為Bank調(diào)度器可見或者不可見。 Bank調(diào)度器從訪存請求寄存器堆中選取一個到達(dá)最早的訪存請求,將該訪存請求的行做為激 活行保存在激活行寄存器中,并將行信息等于激活行寄存器的訪存請求集中調(diào)度。Bank調(diào)度 器向DRAM調(diào)度器發(fā)出訪存請求,DRAM調(diào)度器對多個訪存請求同時響應(yīng) 向DRAM調(diào)度器發(fā)出存儲器命令。當(dāng)訪存請求執(zhí)行完畢后,Bank調(diào)度器將該其有效位設(shè)置為無效。 訪存請求調(diào)度裝置進(jìn)行訪存請求調(diào)度的方法具體如下
(1) 訪存請求調(diào)度裝置初始化。
(2) 接收來自處理器的訪存請求,將訪存請求保存到訪存請求寄存器堆中。訪存請求的 可見標(biāo)記設(shè)置為不可見。
(3) 如果訪存請求寄存器堆滿,則阻塞處理器發(fā)出訪存請求。
(4) 窗口約束電路檢査訪存請求寄存器堆中是否有讀訪存請求的可見標(biāo)記設(shè)置為不可 見,如有,如果訪存請求計(jì)數(shù)器的數(shù)值小于窗口長度寄存器,則將該讀請求設(shè)置為可見,窗 口約束電路將所有的寫請求設(shè)置為可見。
(5) Bank調(diào)度器對訪存請求寄存器堆中的可見訪存請求進(jìn)行調(diào)度,調(diào)度所采用的優(yōu)先級 順序?yàn)樾行畔⒌扔诩せ钚屑拇嫫鞯目梢娮x請求最高,行信息等于激活行的可見寫請求其次, 行信息不等于激活行寄存器的可見行請求的優(yōu)先級較弱,行信息不等于激活行寄存器的可見 寫請求的優(yōu)先級最低。
(6) Bank調(diào)度器將訪存請求的狀態(tài)位改為正在執(zhí)行。
(7) DRAM調(diào)度器響應(yīng)多個Bank調(diào)度器發(fā)出的訪存請求,向DRAM調(diào)度器發(fā)出存儲器 命令。
(8) 訪存請求執(zhí)行完成后,Bank調(diào)度器將訪存請求的狀態(tài)位改為已執(zhí)行,將有效位改為 無效。
上述第(2)、 (3)步作為訪存請求接收部分,第(4)步作為訪存請求加窗部分,其余部 分作為訪存請求調(diào)度部分,這三個部分的操作并行進(jìn)行,并且各個部分的操作是循環(huán)進(jìn)行的。
從執(zhí)行流程上可以看出,該裝置有以下幾個特點(diǎn)首先,在進(jìn)行訪存請求調(diào)度之前對訪 存請求的Bank調(diào)度器的可見性進(jìn)行設(shè)置,在一個處理器發(fā)出的訪存請求序列中,Bank調(diào)度 器僅能對其中一部分可見訪存請求進(jìn)行調(diào)度,只有當(dāng)該部分可見訪存請求都被發(fā)送到DRAM 調(diào)度器以后,窗口約束電路才將其它部分的訪存請求設(shè)置為可見,Bank調(diào)度器也才能對其它 部分的訪存請求進(jìn)行調(diào)度。該加窗約束的訪存請求調(diào)度策略保證訪存請求不被Bank調(diào)度器無 限期推后調(diào)度,消除了由訪存請求調(diào)度引起的線程餓死,提高了多核處理器的最低性能表現(xiàn), 保證了計(jì)算的實(shí)時性需求。其次,訪存調(diào)度采取了并行化的亂序調(diào)度,減少并掩蓋了預(yù)充電 行激活時間,提高了訪存帶寬。
權(quán)利要求
1、一種訪存請求調(diào)度裝置,包括若干個Bank的訪存請求寄存器堆和若干個Bank調(diào)度器以及DRAM調(diào)度器,其特征在于還包括若干個窗口約束電路,窗口約束電路中包含一個訪存請求計(jì)數(shù)器及窗口長度寄存器,訪存請求寄存器將Bank訪存請求寄存器堆中的寫請求設(shè)置為可見,訪存請求計(jì)數(shù)器對進(jìn)入訪存請求寄存器堆的可見讀訪存請求進(jìn)行計(jì)數(shù),當(dāng)訪存請求計(jì)數(shù)器數(shù)值小于窗口長度寄存器數(shù)值時,訪存請求寄存器中的不可見讀請求設(shè)置為可見,訪存請求計(jì)數(shù)值累計(jì),當(dāng)訪存請求計(jì)數(shù)器數(shù)值等于窗口長度寄存器且訪存請求寄存器堆中的可見讀訪存請求都被執(zhí)行時,訪存請求計(jì)數(shù)器歸零,窗口約束電路將訪存請求設(shè)置為Bank調(diào)度器可見,Bank調(diào)度器僅對可見的訪存請求進(jìn)行調(diào)度,DRAM調(diào)度器根據(jù)Bank調(diào)度器的結(jié)果向DRAM調(diào)度器發(fā)送存儲器指令。
2、 一種利用權(quán)利要求1所述訪存請求調(diào)度裝置進(jìn)行訪存請求調(diào)度的方法,其特征在于包 括以下步驟(a) 初始化窗口約束電路,設(shè)置訪存請求計(jì)數(shù)器為零,窗口長度寄存器為預(yù)設(shè)值;(b) 接收來自處理器的訪存請求,當(dāng)訪存請求對應(yīng)的Bank的訪存請求寄存器堆不滿時, 將該訪存請求保存到對應(yīng)的Bank的訪存請求寄存器堆中;(c) 窗口約束電路對訪存請求寄存器堆中的訪存請求進(jìn)行設(shè)置,當(dāng)訪存請求為寫請求時, 則將其設(shè)置為可見,當(dāng)訪存請求為讀請求時,且訪存請求計(jì)數(shù)器值小于窗口長度寄存器值, 則將其設(shè)置為可見,否則設(shè)置為不可見;(d) Bank調(diào)度器對訪存請求調(diào)度器中的可見請求進(jìn)行調(diào)度,將同Bank同行的請求優(yōu)先 發(fā)送到DRAM調(diào)度器;(e) DRAM調(diào)度器根據(jù)Bank調(diào)度器的訪存請求向DRAM調(diào)度器發(fā)出存儲器指令;(f) 訪存請求執(zhí)行完畢后,將該訪存請求在訪存請求寄存器堆中的保存項(xiàng)設(shè)置為無效。
全文摘要
本發(fā)明公開了一種訪存請求調(diào)度裝置以及用該裝置進(jìn)行訪存請求調(diào)度的方法,裝置包括若干個Bank的訪存請求寄存器堆和若干個Bank調(diào)度器以及DRAM調(diào)度器,其特點(diǎn)是還包括若干個窗口約束電路,窗口約束電路中包含一個訪存請求計(jì)數(shù)器及窗口長度寄存器。由于在訪存請求調(diào)度電路中構(gòu)建了窗口約束電路,窗口約束電路保證Bank調(diào)度器一次僅能對有限數(shù)量的訪存請求進(jìn)行調(diào)度,可以防止個別地址局部性較差的訪存請求被Bank調(diào)度器無限期延后調(diào)度,消除了訪存請求亂序調(diào)度造成的線程餓死,提高了多核處理器的最低處理能力。
文檔編號G11C7/10GK101625887SQ20091002358
公開日2010年1月13日 申請日期2009年8月14日 優(yōu)先權(quán)日2009年8月14日
發(fā)明者萌 張, 張盛兵, 樊曉椏, 王黨輝, 田杭沛, 然 鄭, 高德遠(yuǎn), 魏廷存, 黃小平 申請人:西北工業(yè)大學(xué)