本發(fā)明涉及計算機,通訊及集成電路領(lǐng)域。
背景技術(shù):
存儲程序計算機中的中央處理器從存儲器中讀取指令或數(shù)據(jù)供處理器執(zhí)行,執(zhí)行的結(jié)果送回存儲器中存儲。隨著技術(shù)的進步,存儲器的容量增大,其訪問延遲增大,存儲器訪問的通道延遲也增大;而處理器的執(zhí)行速度卻增快,因此存儲器訪問延遲日益成為計算機性能提高的嚴(yán)重瓶頸。在此存儲器訪問延遲包括存儲器件內(nèi)部的訪問延遲;及存儲器間與處理器間的傳輸通道延遲,比如復(fù)數(shù)個芯片間在電路板或共用基底上或硅片通孔TSV的傳輸延遲,中間層次芯片如北橋的延遲,多個存儲芯片間接力串接的延遲,因傳輸格式轉(zhuǎn)換導(dǎo)致的延遲,因通信協(xié)議導(dǎo)致的延遲。
因此,存儲程序計算機使用緩存器試圖掩蓋存儲器訪問延遲以緩解此一瓶頸,但目前仍然無法完全掩蓋。為此某些存儲程序計算機使用預(yù)取試圖進一步掩蓋存儲器訪問延遲,但也遇到了困難。其中的一些困難是因為多層次緩存而導(dǎo)致,因為從較高緩存層次的預(yù)取請求要通過復(fù)數(shù)個存儲層次,層層傳遞才能到達最低層的存儲器。本發(fā)明提出的方法與系統(tǒng)裝置能直接解決上述或其他的一個或多個困難。
技術(shù)實現(xiàn)要素:
本發(fā)明提出了一種在處理器的存儲器層次結(jié)構(gòu)(Memory Hierarchy)中增設(shè)地址產(chǎn)生器的方法及其相應(yīng)系統(tǒng)裝置,該增設(shè)的地址產(chǎn)生器可以與處理器協(xié)同工作以解決上述或其他的一個或多個困難。所述增設(shè)的地址產(chǎn)生器可以先于處理器核產(chǎn)生預(yù)測地址,從較低的存儲器層次讀取指令及數(shù)據(jù)存入本層次的存儲器,以備處理器核使用。
本發(fā)明的目的在于提供一種存儲器層次系統(tǒng)、存儲器層次方法及存儲系統(tǒng),以提高設(shè)備運行速度。
為此,本發(fā)明提供了一種存儲層次預(yù)取系統(tǒng),包括:
較低存儲層次,用以存儲信息并根據(jù)收到的訪問地址或預(yù)測地址向存儲器提供信息塊;
存儲器,用以存儲信息并根據(jù)收到的訪問地址輸出當(dāng)前信息塊;
地址產(chǎn)生器,用以對初始地址或預(yù)測地址加一增量,持續(xù)產(chǎn)生預(yù)測地址,并對產(chǎn)生的地址進行篩選,向較低存儲層次提供篩選通過的預(yù)測地址,獲取相應(yīng)信息填充存儲器;當(dāng)預(yù)測地址未通過篩選時,所述地址產(chǎn)生器終止操作。
較高存儲層次,用以向存儲器提供訪問地址,接收存儲器輸出的當(dāng)前信息塊。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器通過如下產(chǎn)生方法一產(chǎn)生所述初始地址:
產(chǎn)生方法一、所述地址產(chǎn)生器在所述訪問地址上加一增量,產(chǎn)生所述初始地址。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器通過如下產(chǎn)生方法二產(chǎn)生所述初始地址:
產(chǎn)生方法二、所述地址產(chǎn)生器解析所述當(dāng)前信息塊,若判斷所述當(dāng)前信息塊中包含分支指令,則計算該分支指令的目標(biāo)地址,產(chǎn)生所述初始地址。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法一對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址的相應(yīng)信息是否已在所述存儲器中,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法二對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器產(chǎn)生的預(yù)測地址是否越過預(yù)設(shè)的地址邊界,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法三對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器根據(jù)一個訪問地址持續(xù)產(chǎn)生的所述預(yù)測地址計數(shù)是否達到預(yù)設(shè)的最大值,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法四對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷根據(jù)所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址從較低存儲層次獲得的信息塊中是否含有間接分支指令,若否,則當(dāng)時被檢測的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取系統(tǒng)中,所述預(yù)取按所述訪問地址訪問存儲器的時間點安排預(yù)取優(yōu)先權(quán),較晚訪問的所述訪問地址比較早訪問的訪問地址優(yōu)先;對超過一定限度的較早訪問放棄預(yù)取。
本發(fā)明還提供一種存儲層次預(yù)取方法,包括:
步驟A:所述地址產(chǎn)生器根據(jù)初始地址持續(xù)產(chǎn)生預(yù)測地址;
步驟B:所述地址產(chǎn)生器對產(chǎn)生的預(yù)測地址進行篩選;
步驟C:通過篩選的預(yù)測地址被向較低存儲層次發(fā)送;
步驟D:較低存儲層次輸出信息塊;
步驟E:所述信息塊存入存儲器;
步驟F:未通過篩選的預(yù)測地址使地址產(chǎn)生器終止操作。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器利用如下篩選方法一對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址的相應(yīng)信息是否已在所述存儲器中,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器通過如下產(chǎn)生方法二產(chǎn)生所述初始地址:
產(chǎn)生方法二、所述地址產(chǎn)生器解析所述當(dāng)前信息塊,若判斷所述當(dāng)前信息塊中包含分支指令,則計算該分支指令的目標(biāo)地址,產(chǎn)生所述初始地址。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器含有地址篩選器, 對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法一對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址的相應(yīng)信息是否已在所述存儲器中,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法二對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器產(chǎn)生的預(yù)測地址是否越過預(yù)設(shè)的地址邊界,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法三對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷所述地址產(chǎn)生器根據(jù)一個訪問地址持續(xù)產(chǎn)生的所述預(yù)測地址計數(shù)是否達到預(yù)設(shè)的最大值,若否,則該產(chǎn)生的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取方法中,所述地址產(chǎn)生器含有地址篩選器,對所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址進行篩選,所述地址篩選器利用如下篩選方法四對產(chǎn)生的所述預(yù)測地址進行篩選:
判斷根據(jù)所述地址產(chǎn)生器產(chǎn)生的所述預(yù)測地址從較低存儲層次獲得的信息塊中是否含有間接分支指令,若否,則當(dāng)時被檢測的所述預(yù)測地址通過篩選。
可選的,在所述的存儲層次預(yù)取方法中,所述預(yù)取按所述訪問地址訪問存儲器的時間點安排預(yù)取優(yōu)先權(quán),較晚訪問的所述訪問地址比較早訪問的訪問地址優(yōu)先;對超過一定限度的較早訪問放棄預(yù)取。
附圖說明
圖1是本發(fā)明實施例一的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例二的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖3是本發(fā)明實施例三的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例四的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例五的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例六的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖;
圖7是本發(fā)明實施例六的存儲層次系統(tǒng)的掃描器結(jié)構(gòu)示意圖;
圖8是本發(fā)明實施例六的存儲層次系統(tǒng)的掃描器結(jié)構(gòu)示意圖;
對于本領(lǐng)域?qū)I(yè)人士,還可以在本發(fā)明的說明、權(quán)利要求和附圖的啟發(fā)下,理解、領(lǐng)會本發(fā)明所包含其他方面內(nèi)容。
有益效果
本發(fā)明所述方法和系統(tǒng)裝置可以掩蓋處理器經(jīng)過存儲器層次結(jié)構(gòu)訪問信息的延遲。對于本領(lǐng)域?qū)I(yè)人士而言,本發(fā)明的其他優(yōu)點和應(yīng)用是顯見的。
具體實施方式
以下結(jié)合附圖和具體實施例對本發(fā)明作進一步詳細說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準(zhǔn)的比例,僅用以方便、明晰地輔助說明本發(fā)明實施例的目的。
需說明的是,為了清楚地說明本發(fā)明的內(nèi)容,本發(fā)明特舉多個實施例以進一步闡釋本發(fā)明的不同實現(xiàn)方式,其中,該多個實施例是列舉式并非窮舉式。此外,為了說明的簡潔,前實施例中已提及的內(nèi)容往往在后實施例中予以省略,因此,后實施例中未提及的內(nèi)容可相應(yīng)參考前實施例。
雖然該發(fā)明可以以多種形式的修改和替換來擴展,說明書中也列出了一些具體的實施圖例并進行詳細闡述。應(yīng)當(dāng)理解的是,發(fā)明者的出發(fā)點不是將該發(fā)明限于所闡述的特定實施例,正相反,發(fā)明者的出發(fā)點在于保護所有基于由本權(quán)利聲明定義的精神或范圍內(nèi)進行的改進、等效轉(zhuǎn)換和修改。同樣的元器件號碼可能被用于所有附圖以代表相同的或類似的部分。
此外,在本說明書中以包含處理器的體系結(jié)構(gòu)為例進行說明,本發(fā)明技術(shù)方案可以被應(yīng)用于包含任何合適的處理器(Processor)的體系結(jié)構(gòu)。例如,所述處理器可以是通用處理器(General Purpose Processor)、中央處理器(CPU)、微處理器(Microprocessor)、處理器核(Core)、微控制器(MCU)、數(shù)字信號處 理器(DSP)、圖象處理器(GPU)、片上系統(tǒng)(SOC)、專用集成電路(ASIC)等。所述存儲器或緩存可以由任何合適的存儲設(shè)備構(gòu)成,如:寄存器(register)或寄存器堆(register file)、靜態(tài)存儲器(SRAM)、動態(tài)存儲器(DRAM)、閃存存儲器(Flash memory)、硬盤(HD)、固態(tài)硬盤(SSD)以及任何一種合適的存儲器件或未來的新形態(tài)存儲器。本發(fā)明中所述信息可以是指令或數(shù)據(jù)。
【實施例一】
請參考圖1,其為本發(fā)明實施例一的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元(Tag Unit),20為緩存器存儲器(RAM),兩者共同構(gòu)成處理器的一個存儲器層次;18為增設(shè)的地址產(chǎn)生器,14為選擇器。13為存儲器訪問地址(Memory Access Address),來自處理器核或較高存儲器層次(Memory Hierarchi)以對本存儲器層次進行訪問;地址13被送到選擇器14的一個輸入端,經(jīng)選擇器14選擇后,經(jīng)總線11與標(biāo)簽單元10中存儲的標(biāo)簽比較匹配。如總線13上的地址在標(biāo)簽單元10中獲得匹配,則存儲器20中的相應(yīng)信息經(jīng)總線23送到較高存儲器層次或處理器核供使用。如訪問地址13在標(biāo)簽單元10中未獲匹配,則該地址經(jīng)總線11送出訪問較低存儲器層次,獲得的信息經(jīng)總線21存入本存儲器層次的存儲器20,總線11上的地址也被存入標(biāo)簽單元10中的相應(yīng)表項。此時訪問地址13在標(biāo)簽單元10中獲得匹配,相應(yīng)信息經(jīng)總線23送到較高存儲器層次或處理器核供使用。也可以將總線21上的信息在存入存儲器20的同時直接旁路到總線23上。地址產(chǎn)生器18基于總線11上的地址,在該地址上增加一個增量15,其增量為一個信息塊的大小,產(chǎn)生預(yù)測地址(Predicted Address)19送到選擇器14的另一個輸入端。圖中未顯示的仲裁器控制選擇器14,如訪問地址13有效,則仲裁器選擇訪問地址13放上總線11送到標(biāo)簽單元10匹配;如訪問地址13上無效,而預(yù)測地址19有效,則仲裁器選擇預(yù)測地址19放上總線11送到標(biāo)簽單元10匹配。
如預(yù)測地址19未在標(biāo)簽單元中獲得匹配,則該預(yù)測地址19經(jīng)總線11送出訪問較低存儲器層次,獲得的信息經(jīng)總線21存入本存儲器層次的存儲器20,總線11上的地址也被存入標(biāo)簽單元10中的相應(yīng)表項。此時總線21上的信息不需被旁路到總線23上。地址產(chǎn)生器18就如此循環(huán),在總線11的地址上增加增量15產(chǎn)生預(yù)測地址19;只要訪問地址13無效,仲裁器就控制選擇器14選擇預(yù)測 地址19經(jīng)總線11送到標(biāo)簽單元10匹配;只要預(yù)測地址與標(biāo)簽單元10中的標(biāo)簽不匹配,總線11上的預(yù)測地址就被送出訪問較低的存儲器層次獲取信息存入存儲器20;地址產(chǎn)生器18在總線11的地址上增加增量15產(chǎn)生預(yù)測地址19。當(dāng)預(yù)測地址19與標(biāo)簽單元10中的標(biāo)簽匹配時,則地址產(chǎn)生器18終止基于該預(yù)測地址的后續(xù)操作。即本實施例的地址產(chǎn)生器18由在標(biāo)簽單元10中未獲得匹配的訪問地址13觸發(fā),持續(xù)產(chǎn)生預(yù)測地址19以訪問較低的存儲器層次,獲取信息填充本存儲層次的存儲器20,直到預(yù)測地址在本層次的標(biāo)簽單元10中獲得匹配為止。也即以地址與標(biāo)簽單元10中的標(biāo)簽匹配來控制地址產(chǎn)生器的操作,未匹配的訪問地址觸發(fā)地址產(chǎn)生器18的操作,匹配的預(yù)測地址終止地址產(chǎn)生器18的操作。
實施例一中的地址產(chǎn)生器18在其產(chǎn)生的預(yù)測地址19與標(biāo)簽存儲器10中的標(biāo)簽匹配時會持續(xù)操作。某些情況下,需要地址產(chǎn)生器18在預(yù)測地址與標(biāo)簽仍然匹配的情況下終止操作,比如在程序的結(jié)尾處,以下三個實施例展示三種不同的終止方式。
【實施例二】
請參考圖2,其為本發(fā)明實施例二的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元,20為緩存器存儲器,18為地址產(chǎn)生器,13為訪問地址,19為預(yù)測地址,14為選擇器選擇13或19,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線,23為本層次與較高存儲層次或處理器核之間的信息總線,與圖1中相同。其操作也與實施例一相似,不再贅述。圖2中增加了指令譯碼器22。來自較高存儲層次或處理器核的訪問地址13有一伴隨信號指明要獲得的的信息是指令或數(shù)據(jù)。這一信號經(jīng)總線11送到地址產(chǎn)生器18,地址產(chǎn)生器18產(chǎn)生預(yù)測地址19時也保持這一信號。因此根據(jù)伴隨總線11上的預(yù)測地址的這一信號可以確定經(jīng)總線21來自較低存儲層次的信息塊是指令塊或數(shù)據(jù)塊。指令譯碼器22對總線21上的指令塊中指令進行譯碼。如果22譯出上述指令塊中有間接分支指令,則使地址產(chǎn)生器18終止產(chǎn)生預(yù)測地址。因為編譯后的程序都以間接分支指令結(jié)尾,如此就避免了對程序結(jié)尾以后的存儲器位置進行預(yù)取。
【實施例三】
請參考圖3,其為本發(fā)明實施例三的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元,20為緩存器存儲器,18為地址產(chǎn)生器,14為選擇器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線,23為本層次與較高存儲層次或處理器核之間的信息總線,與圖1中相同。其操作也與實施例一相似,不再贅述。圖3中增加了計數(shù)器12。計數(shù)器12對由地址產(chǎn)生器18根據(jù)總線13上的訪問地址產(chǎn)生的預(yù)測地址19賦予一個初始計數(shù)值‘N’。地址產(chǎn)生器每產(chǎn)生一個新的預(yù)測地址,計算器12中的計數(shù)值即減‘1’。當(dāng)計算器12中的計數(shù)值到‘0’時,使地址產(chǎn)生器18終止操作,使預(yù)取的信息塊數(shù)目不超過一個預(yù)設(shè)的最大值。如此可以防止預(yù)取太多處理器核的分支選擇不執(zhí)行的指令段或不使用的數(shù)據(jù)段。也可以防止預(yù)取太多程序結(jié)尾后的無效信息。
【實施例四】
請參考圖4,其為本發(fā)明實施例四的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元,20為緩存器存儲器,18為地址產(chǎn)生器,14為選擇器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線,23為本層次與較高存儲層次或處理器核之間的信息總線,與圖1中相同。其操作也與實施例一相似,不再贅述。圖4中增加了比較器16。比較器16將由地址產(chǎn)生器18根據(jù)總線13上的訪問地址產(chǎn)生的預(yù)測地址19與16中存儲的地址邊界比較。如預(yù)測地址19越過了比較器16中存儲的地址邊界,則使地址產(chǎn)生器18終止操作,使預(yù)取的信息塊不越過地址邊界。該地址邊界可以是分配給處理器的的最小存儲器區(qū)間,例如一個存儲頁面(page)或一個存儲段(segment)。如此可以防止預(yù)取超出本線程所獲分配的存儲器范圍。同樣可以防止預(yù)取太多處理器核選擇不執(zhí)行的指令段或不使用的數(shù)據(jù)段。所述地址邊界可以是預(yù)存在比較器16中或由程序?qū)懭氡容^器16中的寄存器中。
【實施例五】
請參考圖5,其為本發(fā)明實施例五的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元,20為緩存器存儲器,18為地址產(chǎn)生器,14為選擇器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較 低存儲層次與本層次之間的信息總線,23為本層次與較高存儲層次或處理器核之間的信息總線,與圖1中相同。其操作也與實施例一相似,不再贅述。圖5中增加了圖2中的指令譯碼器22,圖3中的計數(shù)器12以及圖4中的比較器16??梢愿鶕?jù)需要選用上述的部分或全部裝置以終止地址產(chǎn)生器18的操作。如果使用上述全部裝置,則在標(biāo)簽單元10中未獲得匹配的有效訪問地址13觸發(fā)地址產(chǎn)生器18產(chǎn)生預(yù)測地址19,預(yù)測地址經(jīng)總線11送出訪問較低存儲層次,獲取信息填充存儲器20。地址產(chǎn)生器18持續(xù)產(chǎn)生新的預(yù)測地址19直到預(yù)測地址與標(biāo)簽單元中的標(biāo)簽匹配,或預(yù)測地址越過預(yù)設(shè)的存儲器地址邊界,或產(chǎn)生的預(yù)測地址的數(shù)目達到了預(yù)設(shè)的最大值,或獲取的指令塊中有間接分支指令為止。
【實施例六】
請參考圖6,其為本發(fā)明實施例六的存儲層次系統(tǒng)的框結(jié)構(gòu)示意圖。其中10為緩存器標(biāo)簽單元,20為緩存器存儲器,14為選擇器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線,23為本層次與較高存儲層次或處理器核之間的信息總線,以上各模塊及總線與圖1中同樣號碼的模塊相同。新增掃描器28,其包含了實施例一至四中地址產(chǎn)生器18,計數(shù)器12,比較器16的功能,并能掃描通過總線28傳輸?shù)男畔K,根據(jù)其中分支指令產(chǎn)生分支目標(biāo)初始地址。實施例六可實現(xiàn)實施例五的所有功能。實施例六與實施例五以及實施例一至四的最大差異在于地址產(chǎn)生器操作不但可以由有效的訪問地址13在標(biāo)簽單元中未獲匹配而獲得;而且可以由有效的訪問地址13在標(biāo)簽單元10中獲得匹配觸發(fā)。
上述有效訪問地址13在標(biāo)簽單元中未獲匹配,因而觸發(fā)地址產(chǎn)生器及地址產(chǎn)生器操作的過程與實施例一中相同,在此不再贅述。有效的訪問地址13經(jīng)總線11在標(biāo)簽單元10中獲得匹配時,從存儲器20讀取相應(yīng)信息塊經(jīng)總線23送到較高存儲層次或處理器核,同時也將總線11上的有效訪問地址送到掃描器28。掃描器中的地址產(chǎn)生器根據(jù)上述在標(biāo)簽單元中標(biāo)簽匹配的有效訪問地址持續(xù)產(chǎn)生預(yù)測地址,并按實施例一至四中各條件終止產(chǎn)生預(yù)測地址。掃描器28中的地址產(chǎn)生器可以在上述有效地址中的塊地址(存儲器地址高位,例如標(biāo)簽與索引地址)上加上增量獲得順序下個信息塊的初始預(yù)測地址。進一步,掃描器28也可以譯碼總線23上指令塊中的各指令,對其中的分支指令,28中的地址產(chǎn)生器 以分支指令本身的地址加上分支指令中的分支偏移量得到分支目標(biāo)地址作為初始預(yù)測地址。此后地址產(chǎn)生器即產(chǎn)生初始預(yù)測地址后的順序預(yù)測地址直到終止條件使其終止產(chǎn)生預(yù)測地址。某些存儲器器層次結(jié)構(gòu)用緩存地址來直接對存儲器尋址,此時可以用緩存塊地址(緩存地址中的高位,例如路號與索引地址)讀出標(biāo)簽單元10中的標(biāo)簽與索引地址合并送到掃描器28作為存儲器塊地址。
【實施例七】
請參考圖7,其為本發(fā)明實施例六的存儲層次系統(tǒng)的掃描器結(jié)構(gòu)示意圖。實施例7可以完成以順序下塊地址為初始預(yù)測地址的操作。圖7中10為緩存器標(biāo)簽單元,20為緩存器存儲器,14為選擇器,22為指令地址譯碼器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線,以上各模塊及總線與圖5中同樣號碼的模塊相同。掃描器28包含了由寄存器30,加法器32,選擇器34構(gòu)成的地址產(chǎn)生器,其功能類似于實施例一中的地址產(chǎn)生器18;包含了由寄存器36,減法器38,選擇器40構(gòu)成的計數(shù)器,其功能類似于實施例三中的計數(shù)器12;包含了地址邊界比較器16,還包含了由存儲單元40及41構(gòu)成的有損棧(Loosy Stack)。
當(dāng)滿足實施例六所述的觸發(fā)條件時,(即訪問地址13有效時),選擇器40選擇預(yù)設(shè)最大預(yù)取數(shù)‘N’33送到減法器38減‘1’,其差存入寄存器36;同時選擇器34選擇總線11上的地址送到加法器32與增量15相加,其和存入寄存器30。30的輸出即為預(yù)測地址19,如此時訪問地址13無效,選擇器14選擇預(yù)測地址19經(jīng)總線11送到標(biāo)簽單元10匹配。如預(yù)測地址19與10中的標(biāo)簽匹配,則終止地址產(chǎn)生器的進一步操作。如預(yù)測地址19與10中的標(biāo)簽不匹配,則總線11上的地址被送到較低存儲層次讀取信息填入存儲器20;同時選擇器40選擇寄存器36的輸出37送到減法器38減‘1’,其差存入寄存器36;選擇器34選擇總線19上的預(yù)測地址送到加法器32與增量15相加,其和存入寄存器30。如此循環(huán)操作直到減法器38的輸出為‘0’;或預(yù)測地址19與標(biāo)簽單元10中標(biāo)簽匹配,或預(yù)測地址19越過邊界比較器16中預(yù)設(shè)的邊界;或指令譯碼器22譯出間接分支指令為止。
如果地址產(chǎn)生器操作過程中得知,訪問地址13將會有效,則選擇器14在本時鐘周期仍選擇預(yù)測地址19放上總線11送到標(biāo)簽單元10匹配。同時預(yù)測地 址19被壓入有損棧中存儲器46,總線37上的計數(shù)被壓入有損棧中存儲器48的同一行。下一時鐘周期,選擇器14選擇有效的訪問地址13放上總線11送到標(biāo)簽單元10匹配。如果不匹配,此后如前所述,掃描器28中選擇器34選擇總線11上新的訪問地址送到加法器32產(chǎn)生基于新的訪問地址的預(yù)測地址;同時選擇器40選擇最大預(yù)取塊數(shù)33送到減法器38計數(shù),開始基于新的訪問地址的預(yù)取。當(dāng)基于新的訪問地址的預(yù)取因為上述任何原因終止時,選擇器34選擇來自有損棧中存儲器46的總線31,將棧頂?shù)念A(yù)測地址送入加法器32與增量15相加;同時選擇器40選擇來自有損棧中存儲器48的總線35,將棧頂?shù)挠嫈?shù)值送入減法器38減‘1’;如此恢復(fù)被打斷的基于老的訪問地址的預(yù)取。棧的使用使得對處理器核最可能需要的信息的預(yù)取(當(dāng)前有效訪問地址13提出訪問請求的后續(xù)信息的預(yù)取)或較可能需要的信息的預(yù)取(最近的有效訪問地址13提出訪問請求的后續(xù)信息預(yù)取的地址在棧頂或接近棧頂)有優(yōu)先權(quán)。有損棧深度有限,當(dāng)有損棧填滿后繼續(xù)對其壓棧,會使位于其棧底的表項被拋棄。如此可以放棄對處理器核在短時間內(nèi)較少概率使用的信息(其地址可能在棧底)的預(yù)取。
圖7中實施例中掃描器28可以根據(jù)訪問地址產(chǎn)生順序預(yù)測地址,其與圖5中各模塊是完全等效的,可以將掃描器28應(yīng)用到圖5中以取代圖5中地址產(chǎn)生器18,計數(shù)器12及邊界比較器16。對圖7實施例稍做改變可以使其對經(jīng)總線23傳遞的分支指令做分支目標(biāo)預(yù)取。
【實施例八】
請參考圖8,其為本發(fā)明實施例六的存儲層次系統(tǒng)的掃描器結(jié)構(gòu)示意圖。實施例八可以完成以順序下塊地址為初始預(yù)測地址,以及以分支目標(biāo)地址為初始預(yù)測地址的操作。圖8中10為緩存器標(biāo)簽單元,20為緩存器存儲器,14為選擇器,22為指令地址譯碼器,13為訪問地址,19為預(yù)測地址,11為經(jīng)選擇器14選擇后的地址總線,21為較低存儲層次與本層次之間的信息總線。掃描器28包含了由寄存器30,加法器33,選擇器34構(gòu)成的地址產(chǎn)生器;包含了由寄存器36,減法器38,選擇器40構(gòu)成的計數(shù)器;包含了地址邊界比較器16,還包含了由存儲單元40及41構(gòu)成的有損棧(Loosy Stack)。以上各模塊及總線與圖7中同樣號碼的模塊相同。與圖7中相比增加了本層次與較高存儲層次或處理器核之間的信息總線23,掃描器28中也增添了指令譯碼器50及選擇器52以便支 持以分支目標(biāo)地址為初始預(yù)測地址的操作。
實施例中掃描器28產(chǎn)生兩種初始預(yù)測地址,順序初始預(yù)測地址,或者分支目標(biāo)初始預(yù)測地址。產(chǎn)生初始預(yù)測地址后都按在當(dāng)前預(yù)測地址上增加增量的方法產(chǎn)生下一個預(yù)測地址(也即按地址順序下一信息塊的地址)。不管訪問地址在標(biāo)簽單元10中是否匹配,掃描器28都會以總線11上的訪問地址加上增量15的方式產(chǎn)生順序初始預(yù)測地址,并在該順序初始預(yù)測地址上產(chǎn)生后續(xù)預(yù)測地址,從較低存儲層次預(yù)取信息存入本層次的存儲器20,直到終止條件使掃描器28中地址產(chǎn)生器終止產(chǎn)生預(yù)測地址為止。當(dāng)以順序地址為預(yù)測地址時,圖8中指令譯碼器50控制選擇器52選擇增量15送到加法器32的輸入端,其后的操作過程與實施例七及圖7完全一致,在此不再贅述。
只有當(dāng)總線11上的指令訪問地址在標(biāo)簽單元10中匹配,存儲器20經(jīng)總線23輸出相應(yīng)的指令塊時,掃描器28才會產(chǎn)生分支目標(biāo)初始預(yù)測地址。此時指令譯碼器50對總線23上的上述指令塊中的指令進行譯碼,對指令中的直接分支指令計算其分支目標(biāo)地址。此時指令譯碼器50控制選擇器52選擇總線23上該分支指令中的分支偏移量送到加法器32的一個輸入端;并且將該分支指令在指令塊中的塊內(nèi)地址偏移量經(jīng)總線54送出,與總線11上的塊地址拼合成分支指令的源地址送到加法器32的另一個輸入端。加法器32將分支指令的地址(源地址)與分支偏移量相加,輸出分支目標(biāo)地址。該分支目標(biāo)地址經(jīng)寄存器30寄存后輸出,是為分支目標(biāo)初始地址19。如此時訪問地址13無效,則該分支目標(biāo)初始地址被選擇器14選擇,經(jīng)總線11送往標(biāo)簽單元10匹配。若分支目標(biāo)初始地址與標(biāo)簽單元10中的標(biāo)簽匹配,則該分支目標(biāo)指令已在存儲器20中,不需基于該分支目標(biāo)初始地址進行任何預(yù)取。因此指令譯碼器50可以處理下一條直接分支指令。
如果分支目標(biāo)初始地址與標(biāo)簽單元10中的標(biāo)簽不匹配,則選擇器34選擇分支目標(biāo)初始地址19送到加法器32的一個輸入端,此時指令譯碼器50控制選擇器52選擇增量15送到加法器32的另一個輸入端,因此加法器32的輸出即分支目標(biāo)初始地址的順序下一個指令塊的地址。請注意標(biāo)簽單元10的匹配及對存儲器20訪問只使用塊地址,即地址的標(biāo)簽部分以及索引地址,因此預(yù)測地址19上的塊內(nèi)地址偏移量對上述匹配與尋址沒有影響;但是加法器32計算分支目 標(biāo)初始地址時需要將分支指令的塊內(nèi)地址偏移量經(jīng)總線54與總線11上的塊地址拼合送到加法器32的輸入端,否則產(chǎn)生的分支目標(biāo)初始地址可能有誤差,落在錯誤的指令塊上。此后的操作與實施例七及圖7相同,不再贅述。
根據(jù)本發(fā)明技術(shù)方案,還可以將本發(fā)明所公開的方法與系統(tǒng)應(yīng)用到不同結(jié)構(gòu)的存儲器層次結(jié)構(gòu)中。某些緩存系統(tǒng)使用緩存器地址直接訪問存儲器層次,緩存器地址沒有存儲器地址中的標(biāo)簽,而是已經(jīng)將標(biāo)簽映射為路號。因此緩存器塊地址只有路號及索引地址。掃描器28配合這種緩存系統(tǒng)時可以用緩存器塊地址尋址標(biāo)簽單元10,從中讀出相應(yīng)的標(biāo)簽,將該標(biāo)簽與緩存器塊地址中的索引地址拼合成存儲器塊地址經(jīng)總線11送到掃描器28中供其產(chǎn)生預(yù)測地址。其余操作與上述實施例八相同。本發(fā)明所公開的方法與系統(tǒng)適用于任何存儲器層次結(jié)構(gòu),特別適合于存儲器容量較大的存儲器層次,例如處理器中層次最低的存儲器層次,最后級緩存(Last Level Cache)。
根據(jù)本發(fā)明技術(shù)方案和構(gòu)思,還可以有其他任何合適的改動。對于本領(lǐng)域普通技術(shù)人員來說,所有這些替換、調(diào)整和改進都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護范圍。