專利名稱:嵌入式處理器片內(nèi)指令和數(shù)據(jù)推送裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種指令和數(shù)據(jù)推送裝置,特別涉及嵌入式處理器片內(nèi)指令和數(shù)據(jù)推
送裝置。
背景技術(shù):
文獻(xiàn)1 "專利號(hào)為5778423的美國(guó)專利"公開了一種指令預(yù)取的裝置,該裝置通過 預(yù)測(cè)分支目標(biāo)來預(yù)取新的指令,這樣可以提高性能。但是這種方法會(huì)增加上層存儲(chǔ)系統(tǒng)對(duì) 下層存儲(chǔ)系統(tǒng)的請(qǐng)求次數(shù),增加了數(shù)據(jù)的流量,而且也會(huì)受到分支誤預(yù)測(cè)的影響。該專利中 還提到可以利用標(biāo)準(zhǔn)長(zhǎng)度的指令中沒被使用的位來標(biāo)示出可能要跳轉(zhuǎn)到的地址,這種方法 需要對(duì)部分指令的格式進(jìn)行修改,不但需要硬件的支持也需要軟件的支持。
文獻(xiàn)2 "專利號(hào)為7246205 B2的美國(guó)專利"公開了一種推送Cache的裝置,該裝 置可以通過監(jiān)控系統(tǒng)的性能參數(shù)也可以通過監(jiān)控設(shè)備信用值來決定時(shí)候使用推送Cache 操作。參照?qǐng)D5。該裝置基于哈佛結(jié)構(gòu)的片內(nèi)Cache層次結(jié)構(gòu),包括指令單元、Load/Store 單元、一級(jí)指令Cache、一級(jí)數(shù)據(jù)Cache、缺失隊(duì)列、缺失隊(duì)列/寫回隊(duì)列、二級(jí)混合Cache, 既沒有預(yù)取裝置也沒有推送裝置,在常見的處理器中被廣泛使用,例如AMD Opteron、ARM的 Cortex-48等。但是在這種結(jié)構(gòu)中,由于一級(jí)Cache的命中率較低,整個(gè)處理器的性能與有 預(yù)取或推送的裝置的處理器相比性能較低。 參照?qǐng)D6。 文獻(xiàn)3 "Improving Direct-M即ped Cache Performance by the Addition of a SmallFully-Associative Cache and Prefetch Buffers,17th Annual International Symposium on ComputerArchitecture, PP364_373,1990, ISBN : 0-8186-2047-1"公開了一種預(yù)取裝置,該裝置可以使高層次存儲(chǔ)系統(tǒng)( 一級(jí)Cache)從低 層次存儲(chǔ)系統(tǒng)中預(yù)取指令和數(shù)據(jù),提高一級(jí)Cache的命中率,使處理器的性能得到提升。但 是,該裝置導(dǎo)致高層存儲(chǔ)系統(tǒng)過多的進(jìn)行對(duì)低層次存儲(chǔ)系統(tǒng)的訪問操作。在哈佛結(jié)構(gòu)的存 儲(chǔ)系統(tǒng)中,這個(gè)問題將導(dǎo)致過多的一級(jí)指令和數(shù)據(jù)Cache同時(shí)訪問二級(jí)混合Cache的沖突, 降低數(shù)據(jù)預(yù)取的時(shí)效性,并增加了總線上數(shù)據(jù)傳輸?shù)牧髁?。預(yù)取時(shí)效性的降低,導(dǎo)致處理器 性能的損失,這種損失嚴(yán)重的時(shí)候可能會(huì)抵消預(yù)取帶來的性能提升。圖6給出了該文獻(xiàn)中 提出的用于存放預(yù)取數(shù)據(jù)的stream buffer和Cache連接的結(jié)構(gòu),該結(jié)構(gòu)可以消除Cache污 染問題。但是本文中的push buffer被訪問時(shí)是所有行都一起并行被查詢,而不像stream buffer只有最上面一行被查詢。另外文獻(xiàn)3中地址的計(jì)算由Stream Buffer中的加法器來 完成。
發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)總線上數(shù)據(jù)流量大的不足,本發(fā)明提供一種嵌入式處理器片內(nèi) 指令和數(shù)據(jù)推送裝置,利用一級(jí)Cache與二級(jí)Cache之間總線的空閑時(shí)間向一級(jí)Cache順 序推送指令和數(shù)據(jù)。可以像預(yù)取一樣提高一級(jí)Cache的命中率、提高系統(tǒng)性能,克服預(yù)取帶 來的影響,有效的減少一級(jí)數(shù)據(jù)和指令Cache同時(shí)訪問二級(jí)Cache的可能性,提高數(shù)據(jù)預(yù)取的時(shí)效性,并可以有效的減少總線上數(shù)據(jù)的流量。 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案一種嵌入式處理器片內(nèi)指令和數(shù)據(jù)推 送裝置,包括指令單元、Load/Store單元、一級(jí)指令Cache 、一級(jí)數(shù)據(jù)Cache 、指令缺失隊(duì)列、 數(shù)據(jù)缺失隊(duì)列、數(shù)據(jù)寫回隊(duì)列以及二級(jí)混合Cache,其特征在于還包括推送地址保存和產(chǎn) 生單元、推送時(shí)機(jī)控制單元、指令推送Buffer和數(shù)據(jù)推送Buffer,所述推送地址保存和產(chǎn) 生單元包括指令推送地址寄存器、數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推送地址寄存器, 指令單元取指令時(shí)將地址同時(shí)發(fā)送到指令推送Buffer和一級(jí)指令Cache,指令推送Buffer 和一級(jí)指令Cache都缺失時(shí),地址被發(fā)送到二級(jí)混合Cache, 二級(jí)混合Cache將所需的指令 傳遞給一級(jí)指令Cache并用缺失地址更新指令推送地址寄存器;Load/Store單元存/取數(shù) 據(jù)時(shí)將地址同時(shí)發(fā)送到數(shù)據(jù)推送Buffer和一級(jí)數(shù)據(jù)Cache,數(shù)據(jù)推送Buffer和一級(jí)數(shù)據(jù) Cache都缺失時(shí),地址被發(fā)送到二級(jí)混合Cache, 二級(jí)混合Cache將所讀到的數(shù)據(jù)優(yōu)先傳遞 給一級(jí)數(shù)據(jù)Cache并用缺失地址同時(shí)更新數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推送地址 寄存器,總線空閑時(shí),二級(jí)混合Cache根據(jù)推送地址保存和產(chǎn)生單元中的地址向指令推送 Buffer和數(shù)據(jù)推送Buffer分別推送指令和數(shù)據(jù)。 本發(fā)明的有益效果是由于在二級(jí)混合Cache端增加了推送地址保存和產(chǎn)生單 元,推送時(shí)機(jī)控制單元,使指令和數(shù)據(jù)調(diào)度的主動(dòng)權(quán)由高層次存儲(chǔ)系統(tǒng)轉(zhuǎn)移到了低層次存 儲(chǔ)系統(tǒng),由于低層次存儲(chǔ)系統(tǒng)能夠更好對(duì)訪問進(jìn)行有效調(diào)度,解決了一級(jí)Cache的訪問沖 突問題,并且也不需要一級(jí)Cache發(fā)送大量的訪問請(qǐng)求,減少了總線上數(shù)據(jù)的流量。指令推 送Buffer和數(shù)據(jù)推送Buffer的增加可以消除推送帶來的Cache污染問題。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說明。
圖1是本發(fā)明嵌入式處理器片內(nèi)指令和數(shù)據(jù)推送裝置的結(jié)構(gòu)框圖。 圖2是圖1中推送地址保存和產(chǎn)生單元詳圖。 圖3是圖1中推送時(shí)機(jī)控制單元詳圖。 圖4是圖1中推送Buffer的結(jié)構(gòu)詳圖。 圖5是現(xiàn)有技術(shù)基于哈佛結(jié)構(gòu)的片內(nèi)Cache層次結(jié)構(gòu)圖。 圖6是文獻(xiàn)3中Stream Buffer與cache連接結(jié)構(gòu)圖。
具體實(shí)施例方式
參照?qǐng)D1 4,本發(fā)明采用了指令和數(shù)據(jù)的推送裝置,包括指令單元、Load/Store 單元、 一級(jí)指令Cache 、 一級(jí)數(shù)據(jù)Cache 、缺失隊(duì)列、缺失隊(duì)列/寫回隊(duì)列、二級(jí)混合Cache 、推 送地址保存和產(chǎn)生單元、推送時(shí)機(jī)控制單元、指令推送Buffer和數(shù)據(jù)推送Buffer,所述推 送地址保存和產(chǎn)生單元包括指令推送地址寄存器、數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推 送地址寄存器。推送地址保存和產(chǎn)生單元用于保存和計(jì)算下一個(gè)需要推送的指令或數(shù)據(jù)的 地址。 增加了這些裝置后整個(gè)信號(hào)的流向如下 指令單元需要讀取指令的時(shí)候,同時(shí)將地址發(fā)送到指令推送Buffer和一級(jí)指令 Cache。這兩個(gè)裝置分別檢查是否命中,并根據(jù)后面介紹的替換算法進(jìn)行數(shù)據(jù)替換。如果它們都沒有命中,那么發(fā)生一級(jí)指令Cache缺失,地址被發(fā)送到二級(jí)混合Cache, 二級(jí)混合 Cache將同時(shí)進(jìn)行以下過程(數(shù)據(jù)缺失優(yōu)先處理)1、根據(jù)地址讀二級(jí)混合Cache,并將所 讀到的指令傳遞給一級(jí)指令Cache ;2、用缺失地址更新指令推送地址寄存器。以后每個(gè)時(shí) 鐘周期都根據(jù)指令推送地址寄存器的地址,在推送時(shí)機(jī)控制單元的控制下推送指令,直到 指令推送Buffer滿為止。 Load/Store單元需要讀寫數(shù)據(jù)的時(shí)候,同時(shí)將地址發(fā)送到數(shù)據(jù)推送Buffer和一 級(jí)數(shù)據(jù)Cache中。這兩個(gè)裝置分別檢查是否命中,并根據(jù)后面介紹的替換算法進(jìn)行數(shù)據(jù)替 換。如果它們都沒有命中,那么發(fā)生一級(jí)數(shù)據(jù)Cache缺失,地址被發(fā)送到二級(jí)混合Cache, 二 級(jí)混合Cache將同時(shí)進(jìn)行以下過程1根據(jù)地址讀二級(jí)混合Cache,并將所讀到的數(shù)據(jù)優(yōu)先 傳遞給一級(jí)數(shù)據(jù)Cache ;2用缺失地址同時(shí)更新數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推送 地址寄存器。以后每個(gè)時(shí)鐘周期都首先根據(jù)數(shù)據(jù)正向推送地址寄存器中的地址,在推送時(shí) 機(jī)控制單元的控制下推送數(shù)據(jù),直到正向數(shù)據(jù)推送Buffer滿;然后根據(jù)數(shù)據(jù)反向推送地址 寄存器中的地址,在推送時(shí)機(jī)控制單元的控制下推送數(shù)據(jù),直到反向數(shù)據(jù)推送Buffer滿。
指令推送地址寄存器結(jié)構(gòu)如圖2(a),該寄存器保存下一個(gè)將要推送的指令行的 地址,如果一級(jí)指令Cache沒有發(fā)生缺失的話,每推送一行指令,地址加1,如果一級(jí)指令 Cache發(fā)生缺失的話,該寄存器的值為缺失指令的行地址加1。 數(shù)據(jù)正向推送地址寄存器結(jié)構(gòu)如圖2(b),該寄存器保存下一個(gè)將要按照地址增
加方式推送的行地址,如果一級(jí)數(shù)據(jù)Cache沒有發(fā)生缺失的話,每推送一行數(shù)據(jù),該地址加
l,如果一級(jí)數(shù)據(jù)Cache發(fā)生缺失的話,該寄存器的值為缺失數(shù)據(jù)的行地址加1。 數(shù)據(jù)反向推送地址寄存器結(jié)構(gòu)如圖2(c),該寄存器保存下一個(gè)將要按照地址減
少方式推送的行地址,如果一級(jí)數(shù)據(jù)Cache沒有發(fā)生缺失的話,每推送一行數(shù)據(jù),該地址減
l,如果一級(jí)數(shù)據(jù)Cache發(fā)生缺失的話,該寄存器的值為缺失數(shù)據(jù)的行地址減1。 推送時(shí)機(jī)控制單元的作用是決定指令和數(shù)據(jù)推送的時(shí)機(jī)。因?yàn)橹噶詈蛿?shù)據(jù)的推
送必須不能影響正常的指令和數(shù)據(jù)的請(qǐng)求,所以該單元必須保證推送發(fā)生在總線空閑的時(shí)
候,并且此時(shí)一級(jí)指令Cache沒有對(duì)二級(jí)混合Cache的讀取請(qǐng)求, 一級(jí)數(shù)據(jù)Cache沒有對(duì)二
級(jí)混合Cache的讀寫請(qǐng)求。具體推送的時(shí)機(jī)如下 (a)當(dāng)發(fā)現(xiàn)按照地址增加數(shù)據(jù)推送Buffer沒有滿并且一級(jí)指令Cache和一級(jí)數(shù)據(jù) Cache的缺失隊(duì)列為空,一級(jí)數(shù)據(jù)Cache的寫回隊(duì)列也為空的情況下,按照數(shù)據(jù)正向推送地 址寄存器中的地址進(jìn)行推送。 (b)然后如果發(fā)現(xiàn)按照地址減少數(shù)據(jù)推送Buffer沒有滿并且一級(jí)指令Cache和一 級(jí)數(shù)據(jù)Cache的缺失隊(duì)列為空,一級(jí)數(shù)據(jù)Cache的寫回隊(duì)列也為空的情況下,按照數(shù)據(jù)反向 推送地址寄存器中的地址進(jìn)行推送。 (c)最后如果發(fā)現(xiàn)指令推送Buffer沒滿并且一級(jí)指令Cache和一級(jí)數(shù)據(jù)Cache的 缺失隊(duì)列為空,一級(jí)數(shù)據(jù)Cache的寫回隊(duì)列也為空的情況下,按照指令推送地址寄存器中 的地址進(jìn)行推送。 通過這樣的具有優(yōu)先級(jí)的判斷就能保證數(shù)據(jù)的推送是在一級(jí)指令Cache和一級(jí) 數(shù)據(jù)Cache與二級(jí)混合Cache之間總線空閑時(shí)進(jìn)行,并且推送的優(yōu)先級(jí)如下最先按照地址 增加推送數(shù)據(jù)、其次是按照地址減少推送數(shù)據(jù),最后是推送指令。 為了避免由推送帶來的Cache污染問題,在一級(jí)指令Cache端增加了指令推送Buffer,在一級(jí)數(shù)據(jù)Cache端增加了數(shù)據(jù)推送Buffer。數(shù)據(jù)推送Buffer又在邏輯上分成了 兩個(gè)部分, 一部分存放按照地址增加方式推送來的數(shù)據(jù),另一部分存放按照地址減少方式 推送來的數(shù)據(jù)。推送Buffer的結(jié)構(gòu)如圖3,每一行包括三個(gè)部分
標(biāo)簽存儲(chǔ)該行數(shù)據(jù)的行地址。
有效位表明這行數(shù)據(jù)是否有效。
數(shù)據(jù)存儲(chǔ)一個(gè)Cache行的數(shù)據(jù)。 增加了指令推送Buffer和數(shù)據(jù)推送Buffer后,處理器核訪問一級(jí)Cache需要并 行的訪問一級(jí)Cache和相應(yīng)的推送Buffer。如果他們有一個(gè)命中則算命中,都沒命中才算 缺失。另外處理器訪問推送Buffer的時(shí)候是用數(shù)據(jù)的行地址與所有推送Buffer行中的 標(biāo)簽同時(shí)進(jìn)行比較,以確定所需數(shù)據(jù)或指令是否在推送Buffer中。推送Buffer與相應(yīng)的 Cache替換策略如下 參如果所取的指令(數(shù)據(jù))在指令(數(shù)據(jù))推送Buffer中命中,在cache中沒命 中的話指令(數(shù)據(jù))推送Buffer中的命中Block替換進(jìn)cache,并清除推送Buffer中的 該Block塊; 參如果所取的指令(數(shù)據(jù))在推送Buffer中命中,在cache中也命中的話置在 推送Buffer中命中的Block無效; 參如果所取的指令(數(shù)據(jù))在推送Buffer中缺失,在cache中也缺失的話推送 Buffer中的所有行被清除,從缺失地址后(前后兩側(cè))開始推送,這個(gè)地方應(yīng)該跳過缺失的 Block,因?yàn)檫@個(gè)塊是一級(jí)cache向二級(jí)cache正常的請(qǐng)求塊; 參如果所取的指令(數(shù)據(jù))在推送Buffer中缺失,在cache中命中的話推送 Buffer中數(shù)據(jù)無變化。 嵌入式處理器片內(nèi)指令和數(shù)據(jù)推送裝置的工作流程如下 (a)檢測(cè)一級(jí)Cache與二級(jí)混合Cache之間總線是否空閑;檢測(cè)一級(jí)指令Cache的 缺失隊(duì)列是否為空;檢測(cè)一級(jí)數(shù)據(jù)Cache的寫回隊(duì)列是否為空。如果以上三個(gè)條件都滿足, 轉(zhuǎn)到步驟(b),否則重新執(zhí)行步驟(a)。 (b)檢測(cè)正向數(shù)據(jù)推送Buffer是否滿。如果沒滿,轉(zhuǎn)到步驟(c),否則轉(zhuǎn)到步驟 (d)。 (c)根據(jù)正向數(shù)據(jù)推送地址寄存器中的地址,從二級(jí)混合Cache中取數(shù)據(jù),并將取 到的數(shù)據(jù)推送到距向數(shù)據(jù)推送Buffer中。然后轉(zhuǎn)到步驟(a)。 (d)檢測(cè)反向數(shù)據(jù)推送Buffer是否滿。如果沒滿,轉(zhuǎn)到步驟(e),否則轉(zhuǎn)到步驟 (f)。 (e)根據(jù)反向數(shù)據(jù)推送地址寄存器中的地址,從二級(jí)混合Cache中取數(shù)據(jù),并將取 到的數(shù)據(jù)推送到反向數(shù)據(jù)推送Buffer中。然后轉(zhuǎn)到步驟(a)。 (f)檢測(cè)指令推送Buffer是否滿。如果沒滿,轉(zhuǎn)到步驟(g),否則轉(zhuǎn)到步驟(a)。
根據(jù)指令推送地址寄存器中的地址,從二級(jí)混合Cache中取數(shù)據(jù),并將取到的數(shù) 據(jù)推送到指令推送Buffer中。然后轉(zhuǎn)到步驟(a)。 由于使用推送的裝置,可以增加一級(jí)指令Cache和一級(jí)數(shù)據(jù)Cache的命中率,這就 可以減少一級(jí)指令Cache和一級(jí)數(shù)據(jù)Cache對(duì)二級(jí)混合Cache的訪問請(qǐng)求,增加了總線空 閑的時(shí)間,也就是說有更多的時(shí)間可以用于數(shù)據(jù)和指令的推送。
權(quán)利要求
一種嵌入式處理器片內(nèi)指令和數(shù)據(jù)推送裝置,包括指令單元、Load/Store單元、一級(jí)指令Cache、一級(jí)數(shù)據(jù)Cache、指令缺失隊(duì)列、數(shù)據(jù)缺失隊(duì)列、數(shù)據(jù)寫回隊(duì)列以及二級(jí)混合Cache,其特征在于還包括推送地址保存和產(chǎn)生單元、推送時(shí)機(jī)控制單元、指令推送Buffer和數(shù)據(jù)推送Buffer,所述推送地址保存和產(chǎn)生單元包括指令推送地址寄存器、數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推送地址寄存器,指令單元取指令時(shí)將地址同時(shí)發(fā)送到指令推送Buffer和一級(jí)指令Cache,指令推送Buffer和一級(jí)指令Cache都缺失時(shí),地址被發(fā)送到二級(jí)混合Cache,二級(jí)混合Cache將所需的指令傳遞給一級(jí)指令Cache并用缺失地址更新指令推送地址寄存器;Load/Store單元存/取數(shù)據(jù)時(shí)將地址同時(shí)發(fā)送到數(shù)據(jù)推送Buffer和一級(jí)數(shù)據(jù)Cache,數(shù)據(jù)推送Buffer和一級(jí)數(shù)據(jù)Cache都缺失時(shí),地址被發(fā)送到二級(jí)混合Cache,二級(jí)混合Cache將所讀到的數(shù)據(jù)優(yōu)先傳遞給一級(jí)數(shù)據(jù)Cache并用缺失地址同時(shí)更新數(shù)據(jù)正向推送地址寄存器和數(shù)據(jù)反向推送地址寄存器,總線空閑時(shí),二級(jí)混合Cache根據(jù)推送地址保存和產(chǎn)生單元中的地址向指令推送Buffer和數(shù)據(jù)推送Buffer分別推送指令和數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種嵌入式處理器片內(nèi)指令和數(shù)據(jù)推送裝置,用于解決現(xiàn)有技術(shù)下總線上數(shù)據(jù)流量大的技術(shù)問題,其技術(shù)方案是在二級(jí)混合Cache端增加一個(gè)推送地址保存和產(chǎn)生單元、一個(gè)推送時(shí)機(jī)控制單元,在一級(jí)指令Cache端增加一個(gè)指令推送Buffer,在一級(jí)數(shù)據(jù)Cache端增加一個(gè)數(shù)據(jù)推送Buffer。由于有了推送地址保存和產(chǎn)生單元、推送時(shí)機(jī)控制單元,使指令和數(shù)據(jù)調(diào)度的主動(dòng)權(quán)由高層次存儲(chǔ)系統(tǒng)轉(zhuǎn)移到了低層次存儲(chǔ)系統(tǒng),由于低層次存儲(chǔ)系統(tǒng)能夠更好對(duì)訪問進(jìn)行有效調(diào)度,解決了一級(jí)Cache的訪問沖突問題,并且也不需要一級(jí)Cache發(fā)送大量的訪問請(qǐng)求,減少了總線上數(shù)據(jù)的流量。指令推送Buffer和數(shù)據(jù)推送Buffer的增加消除了推送帶來的Cache污染問題。
文檔編號(hào)G06F12/08GK101697146SQ20091021867
公開日2010年4月21日 申請(qǐng)日期2009年10月29日 優(yōu)先權(quán)日2009年10月29日
發(fā)明者張盛兵, 張萌, 樊曉椏, 王黨輝, 田杭沛, 鄭喬石, 鄭然 , 高德遠(yuǎn), 魏廷存, 黃小平 申請(qǐng)人:西北工業(yè)大學(xué);