專利名稱:用于降低指令緩存功耗的分支序列緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式處理器領(lǐng)域,尤其是一種用于降低指令緩存功耗的分支序列緩
沖器。
背景技術(shù):
現(xiàn)代微處理器對(duì)存儲(chǔ)器容量和速度提出了較高的要求。為了獲取更優(yōu)秀的性能 與經(jīng)濟(jì)性,基于時(shí)間與空間局部性原理,存儲(chǔ)系統(tǒng)被設(shè)計(jì)為具有不同的層次。高速緩存 (Cache)是介于處理器和主存儲(chǔ)器之間的一個(gè)存儲(chǔ)層次,提供在一定程序執(zhí)行時(shí)間和空間 內(nèi),集中訪問的一部分代碼。緩存的目標(biāo)是盡量減少處理器因?yàn)樵L問主存儲(chǔ)器而造成的CPU 周期的浪費(fèi)。然而,在提高性能的同時(shí),緩存因其特性,成為處理器中主要的耗電單元。為 了降低處理器整體功耗,設(shè)計(jì)人員常采用降低緩存性能的折中方案,從而導(dǎo)致處理器整體 性能降低。 指令緩存用于緩存處理器從主存儲(chǔ)器中取得的指令代碼,一般分為索引標(biāo)志存儲(chǔ) 器和數(shù)據(jù)存儲(chǔ)器。索引標(biāo)志存儲(chǔ)器存儲(chǔ)的標(biāo)志信息用于校驗(yàn)緩存塊是否與來自于處理器的 塊地址匹配。數(shù)據(jù)存儲(chǔ)器存放被緩存的指令代碼信息。 以一個(gè)32位處理器的指令緩存來說明其工作原理,如圖l所示。該處理器采用了 一個(gè)16324字節(jié)(16KB)大小、4路組相聯(lián)的指令緩存,每一個(gè)塊(Block)的大小是16字節(jié)。 處理器取指令的地址一共32位,被分為28為塊地址和4位塊內(nèi)偏移,其中塊地址又由20 位標(biāo)志字段(Tag)和8位索引字段(Index)構(gòu)成。向指令緩存的一次取指令請(qǐng)求如圖1所 示,其流程為根據(jù)8位索引字段同時(shí)訪問4路中的4個(gè)緩存塊,在有效位置位的情況下取 得緩存塊標(biāo)志和數(shù)據(jù)信息。將標(biāo)志與指令塊地址中的標(biāo)志字段進(jìn)行比較,選取4個(gè)塊中結(jié) 果一致的塊數(shù)據(jù)作為指令代碼發(fā)送給處理器取指令單元,否則上報(bào)指令緩存缺失。因?yàn)樘?換算法保證,在上述的4個(gè)塊中至多只有1塊比較結(jié)果匹配。 由上述指令緩存取指令過程可知, 一次取指令需要開啟所有4路的索引標(biāo)志存儲(chǔ) 器和數(shù)據(jù)存儲(chǔ)器,是指令緩存功耗的主要消耗點(diǎn)。
發(fā)明內(nèi)容
為了克服已有的嵌入式處理器的指令緩存取指令過程中存在較大的緩存功耗的 不足,本發(fā)明提供一種能有效降低緩存功耗的用于降低指令緩存功耗的分支序列緩沖器。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是 —種用于降低指令緩存功耗的分支序列緩沖器,所述分支序列緩沖器包括指令 緩存單元,用于臨時(shí)存儲(chǔ)預(yù)取的指令,采用多路組相連結(jié)構(gòu),每個(gè)路包括標(biāo)志位存儲(chǔ)器和數(shù) 據(jù)存儲(chǔ)器;指令片段信息包括分支指令目標(biāo)地址、順序指令路選信息和分支指令,所述分支 序列緩沖器還包括 訪問控制單元,用于根據(jù)分支序列緩沖單元中的路選信息,控制指令緩存單元中 目標(biāo)路的訪問;
分支序列緩沖單元,用于緩存分支指令的目標(biāo)地址以及其后續(xù)順序指令路選信 息; 訪問控制單元獲得當(dāng)前指令片段信息,當(dāng)所述當(dāng)前指令片段信息中的分支指令目 標(biāo)地址與緩存的分支指令的目標(biāo)地址匹配時(shí),訪問控制單元讀取分支序列緩沖單元緩存的 順序指令路選信息,從分支序列緩沖單元中獲得當(dāng)前訪問的路選信息,并根據(jù)路選信息選 擇開啟指令緩存單元中相應(yīng)的路,直接獲得所需的順序指令,此時(shí)無關(guān)的路被關(guān)閉訪問;不 匹配時(shí),訪問控制單元記錄順序指令路選信息,分支序列緩沖單元存儲(chǔ)來自于訪問控制單 元的順序指令路選信息。 進(jìn)一步,所述的分支序列緩沖單元為一個(gè)循環(huán)表,所述循環(huán)表包括至少兩個(gè)表項(xiàng), 每個(gè)表項(xiàng)中存儲(chǔ)分支指令的目標(biāo)地址或順序指令路選信息。 再進(jìn)一步,存儲(chǔ)分支指令的目標(biāo)地址的目標(biāo)表項(xiàng)后跟隨存儲(chǔ)順序指令路選信息的 路選表項(xiàng),各個(gè)路選表項(xiàng)無間隔地存放于目標(biāo)表項(xiàng)之后。 更進(jìn)一步,所述表項(xiàng)中包含用以區(qū)分存儲(chǔ)內(nèi)容為分支指令的目標(biāo)地址或順序指令 路選信息的標(biāo)識(shí)位。 訪問控制單元讀取分支序列緩沖單元緩存的順序指令路選信息的過程以路指針 作為索引,訪問控制單元記錄順序指令路選信息的過程以路指針和項(xiàng)指針作為索引。
利用訪問控制單元從分支序列緩沖單元獲取到的順序指令路選信息,直接向指令 緩存單元相應(yīng)路的數(shù)據(jù)存儲(chǔ)器讀取指令。 本發(fā)明的技術(shù)構(gòu)思為分支指令是處理器的一類指令,它引起處理器執(zhí)行指令順 序的變化,這一行為稱為跳轉(zhuǎn)。處理器執(zhí)行至分支指令時(shí),通過判斷條件,決定下一條執(zhí)行 的指令,該指令即為目標(biāo)指令,其地址為分支指令的目標(biāo)地址。 處理器所執(zhí)行的指令序列,可看成是被分支指令打散的若干個(gè)順序指令片段。每 一個(gè)片段的首條指令是某個(gè)分支指令的目標(biāo)指令,末條指令是分支指令,其間的指令順序 執(zhí)行。如果在處理器首次執(zhí)行到某指令片段時(shí),順序記錄其后順序指令路選信息,那么當(dāng)再 次執(zhí)行到該片段時(shí),就可根據(jù)記錄的信息進(jìn)行指令緩存路選。這樣只需訪問一路中的一個(gè) 數(shù)據(jù)塊即可取得指令代碼,避免對(duì)該路標(biāo)志字段的訪問和比較,以及對(duì)其它路數(shù)據(jù)存儲(chǔ)器 的讀取。 由前述,完整的指令片段信息,包含分支指令目標(biāo)地址和順序指令路選信息。該片 段信息以分支指令的目標(biāo)地址為標(biāo)識(shí),若干個(gè)順序指令路選信息為數(shù)據(jù)。其中,目標(biāo)地址所 對(duì)應(yīng)的分支指令的行為,可以是直接跳轉(zhuǎn)或條件跳轉(zhuǎn),且不限定跳轉(zhuǎn)的方向(向前或者向 后跳轉(zhuǎn))。 分支序列緩沖器包括指令緩存單元,臨時(shí)存儲(chǔ)預(yù)取的指令,采用多路組相連結(jié) 構(gòu),每個(gè)路包括標(biāo)志位存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;訪問控制單元,根據(jù)分支序列緩沖單元中的路 選信息,控制指令緩存單元中目標(biāo)路的訪問;分支序列緩沖單元,緩存分支指令的目標(biāo)地址 以及其后續(xù)順序指令路選信息。 訪問控制單元從分支序列緩沖單元中獲得當(dāng)前訪問的路選信息,并根據(jù)路信息選 擇開啟指令緩存單元中相應(yīng)的路,直接獲得所需的順序指令,此時(shí)無關(guān)的路被關(guān)閉訪問。
本發(fā)明的有益效果主要表現(xiàn)在能有效降低緩存功耗。
圖1為現(xiàn)有技術(shù)中的典型指令緩存示意圖。
圖2為基于圖1指令緩存的分支序列緩沖器的結(jié)構(gòu)示意圖(讀取模式)。
圖3為基于圖1指令緩存的分支序列緩沖器的結(jié)構(gòu)示意圖(記錄模式)。
圖4為具有典型表項(xiàng)數(shù)的分支序列緩沖單元示意圖。
圖5為在圖4基礎(chǔ)上,循環(huán)記錄數(shù)據(jù)的分支序列緩沖單元示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。 參照?qǐng)D2 圖5,一種用于降低指令緩存功耗的分支序列緩沖器,所述分支序列緩 沖器包括指令緩存單元,用于臨時(shí)存儲(chǔ)預(yù)取的指令,采用多路組相連結(jié)構(gòu),每個(gè)路包括標(biāo) 志位存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;指令片段信息包括分支指令目標(biāo)地址、順序指令路選信息的數(shù) 據(jù)片段和分支指令,所述分支序列緩沖器還包括 訪問控制單元,用于根據(jù)分支序列緩沖單元中的路選信息,控制指令緩存單元中 目標(biāo)路的訪問; 分支序列緩沖單元,用于緩存分支指令的目標(biāo)地址以及其后續(xù)順序指令路選信 息; 訪問控制單元獲得當(dāng)前指令片段信息,當(dāng)所述當(dāng)前指令片段信息中的分支指令目 標(biāo)地址與緩存的分支指令的目標(biāo)地址匹配時(shí),訪問控制單元讀取分支序列緩沖單元緩存的 順序指令路選信息,從分支序列緩沖單元中獲得當(dāng)前訪問的路信息,并根據(jù)路選信息選擇 開啟指令緩存單元中相應(yīng)的路,直接獲得所需的順序指令,此時(shí)無關(guān)的路被關(guān)閉訪問;不匹 配時(shí),訪問控制單元記錄順序指令路選信息,分支序列緩沖單元存儲(chǔ)來自于訪問控制單元 的順序指令路選信息。 參照?qǐng)D2所示,本發(fā)明的分支序列緩沖器分為三個(gè)單元指令緩存單元、訪問控制 單元和分支序列緩沖單元。指令緩存單元采用多路組相連結(jié)構(gòu),在同一地址索引下可在多 路數(shù)據(jù)存儲(chǔ)器中臨時(shí)存儲(chǔ)取得的指令,并由相應(yīng)的標(biāo)志位存儲(chǔ)器進(jìn)行標(biāo)識(shí)。訪問控制單元 根據(jù)分支序列緩沖單元中的順序指令路選信息,控制指令緩存單元從目標(biāo)路數(shù)據(jù)存儲(chǔ)器中 取指令(圖2),以及向分支序列緩沖單元記錄順序指令路選信息(圖3)。分支序列緩沖單 元用于緩存分支指令的目標(biāo)地址以及其后續(xù)順序指令路選信息。 訪問控制單元根據(jù)分支指令的目標(biāo)地址,從分支序列緩沖單元獲得當(dāng)前訪問的順 序指令路選信息,開啟指令緩存單元中,該信息所指路的數(shù)據(jù)存儲(chǔ)器,獲取所需指令,此時(shí) 關(guān)閉該路標(biāo)志位存儲(chǔ)器和無關(guān)路的訪問。 分支序列緩沖單元組織為一個(gè)循環(huán)表,由若干表項(xiàng)構(gòu)成。表項(xiàng)數(shù)可依據(jù)性能與資 源需求任意選取。每個(gè)表項(xiàng)由一個(gè)標(biāo)識(shí)位和一個(gè)數(shù)據(jù)字段構(gòu)成。其中,數(shù)據(jù)字段有兩種類 型,可為分支指令的目標(biāo)地址,或若干順序指令路選信息。數(shù)據(jù)字段的長(zhǎng)度由分支指令跳轉(zhuǎn) 的目標(biāo)地址決定。 分支序列緩沖單元每個(gè)表項(xiàng)的首位為標(biāo)識(shí)位,用于區(qū)分?jǐn)?shù)據(jù)字段的類型,長(zhǎng)度為1 位。其中"0"表示存放的是順序指令路選信息,"1"表示該表項(xiàng)的數(shù)據(jù)字段存放分支指令 的目標(biāo)地址。
5
分支序列緩沖單元中,一個(gè)指令片段信息包含一個(gè)目標(biāo)地址和若干順序指令路選信息,存放于連續(xù)的數(shù)個(gè)表項(xiàng)。其中第一個(gè)表項(xiàng)為目標(biāo)地址表項(xiàng),順序指令路選信息表項(xiàng)無間隔地存放在對(duì)應(yīng)的目標(biāo)地址表項(xiàng)之后。 當(dāng)目標(biāo)地址匹配時(shí),分支序列緩沖單元向訪問控制單元提供緩存的順序指令路選信息,該讀取過程以路指針作為索引;不匹配時(shí),存儲(chǔ)來自于訪問控制單元的順序指令路選信息,該記錄過程同時(shí)以路指針和項(xiàng)指針?biāo)饕?例如,對(duì)于背景技術(shù)所述指令緩存,分支指令的目標(biāo)地址(塊地址)的長(zhǎng)度為28位,分支序列緩沖單元表項(xiàng)的數(shù)據(jù)字段寬度即為28位,該表項(xiàng)可存放一個(gè)目標(biāo)地址。在上述情況下,若表項(xiàng)的數(shù)據(jù)字段存放順序指令路選信息,則包含14條順序指令路選信息(4路組相連,每個(gè)順序指令路選信息占用2位,數(shù)據(jù)字段中不包含任何有效位)。如圖4所示的分支序列緩沖單元,有12個(gè)表項(xiàng)。第1、4、8、10表項(xiàng)存放分支指令的目標(biāo)地址,在首位以"1"標(biāo)識(shí),數(shù)據(jù)字段各存放一條目標(biāo)地址。第12項(xiàng)為無效項(xiàng),無效字段"X"以任意數(shù)據(jù)填充。其它表項(xiàng)存放順序指令路選信息,首位以"O"標(biāo)識(shí)。圖4表明,以目標(biāo)地址1開始的指令片段,包含16條順序指令,每一條指令的順序指令路選信息被組織為3個(gè)順序指令路選信息表項(xiàng),無間隔地存放在第4個(gè)目標(biāo)地址表項(xiàng)之后。若當(dāng)前操作為記錄,表示正在記錄"目標(biāo)地址3"片段中第6條指令的順序指令路選信息;若當(dāng)前操作為讀取,表示正在讀取"目標(biāo)地址2"片段中第6條或第13條指令的順序指令路選信息,或其它片段中指令的順序指令路選信息。 初始化時(shí),訪問控制單元將分支序列緩沖單元所有表項(xiàng)的標(biāo)識(shí)位置零。當(dāng)取得分支指令的目標(biāo)地址后,訪問控制單元將該目標(biāo)地址與分支序列緩沖單元中標(biāo)識(shí)位為"l"的表項(xiàng)的數(shù)據(jù)字段進(jìn)行比較。如某表項(xiàng)匹配,訪問控制單元進(jìn)入讀取模式,如圖2,讀取分支序列緩沖單元中,緊隨匹配項(xiàng)的下一表項(xiàng),數(shù)據(jù)字段前兩位為目標(biāo)指令的順序指令路選信息。數(shù)據(jù)字段的接下來兩位為目標(biāo)指令下一條指令的順序指令路選信息。依上述,訪問控制單元依次取得目標(biāo)指令及其后指令的順序指令路選信息。訪問控制單元的讀取過程以指令緩存單元取到分支指令作為結(jié)束。若讀取到數(shù)據(jù)字段末兩位順序指令路選信息仍未結(jié)束,則繼續(xù)讀取下一表項(xiàng)的數(shù)據(jù)字段。 如所有表項(xiàng)均不匹配,訪問控制單元進(jìn)入記錄模式,如圖3。首先,訪問控制單元從指令緩存單元取得分支指令的目標(biāo)地址,將該地址存放在分支序列緩沖單元中項(xiàng)指針?biāo)副眄?xiàng)的數(shù)據(jù)字段上,并置該表項(xiàng)的標(biāo)識(shí)位為"1",項(xiàng)指針指向下一表項(xiàng)。然后,指令緩存單元執(zhí)行正常的取指令流程。其間,訪問控制單元把來自于指令緩存單元的順序指令路選信息,存放在分支序列緩沖單元項(xiàng)指針?biāo)副眄?xiàng)的數(shù)據(jù)字段的前兩位,置該表項(xiàng)標(biāo)識(shí)位為"O"。指令緩存單元繼續(xù)饋入目標(biāo)指令下一條指令的順序指令路選信息。訪問控制單元將其存放在項(xiàng)指針?biāo)笖?shù)據(jù)字段的后兩位。若記錄至該表項(xiàng)數(shù)據(jù)字段末兩位后,記錄仍未結(jié)束,則將項(xiàng)指針指向下一表項(xiàng),置該表項(xiàng)標(biāo)識(shí)位為"O"。當(dāng)項(xiàng)指針需指向最后一個(gè)表項(xiàng)的下一表項(xiàng)時(shí),其將指向分支序列緩沖單元的第一個(gè)表項(xiàng)。如圖5所示,訪問控制單元記錄分支指令的"目標(biāo)地址4"及其后3條指令(包含該目標(biāo)指令)的順序指令路選信息將目標(biāo)地址存放在第12表項(xiàng),置標(biāo)志位為"1";順序指令路選信息存放在第1表項(xiàng),置標(biāo)志位為"O";項(xiàng)指針指向第2表項(xiàng)。 利用從分支序列緩沖單元獲取的順序指令路選信息,訪問控制單元直接從指令緩
6存單元中相應(yīng)路的數(shù)據(jù)存儲(chǔ)器讀取指令,無需訪問該路的標(biāo)志字段,以及其它路標(biāo)志字段和數(shù)據(jù)字段的訪問。
權(quán)利要求
一種用于降低指令緩存功耗的分支序列緩沖器,所述分支序列緩沖器包括指令緩存單元,用于臨時(shí)存儲(chǔ)預(yù)取的指令,采用多路組相連結(jié)構(gòu),每個(gè)路包括標(biāo)志位存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;其特征在于指令片段信息包括分支指令目標(biāo)地址、順序指令路選信息和分支指令,所述分支序列緩沖器還包括訪問控制單元,用于根據(jù)分支序列緩沖單元中的路選信息,控制指令緩存單元中目標(biāo)路的訪問;分支序列緩沖單元,用于緩存分支指令的目標(biāo)地址以及其后續(xù)順序指令路選信息;訪問控制單元獲得當(dāng)前指令片段信息,當(dāng)所述當(dāng)前指令片段信息中的分支指令目標(biāo)地址與緩存的分支指令的目標(biāo)地址匹配時(shí),訪問控制單元讀取分支序列緩沖單元緩存的順序指令路選信息,從分支序列緩沖單元中獲得當(dāng)前訪問的路選信息,并根據(jù)路選信息選擇開啟指令緩存單元中相應(yīng)的路,直接獲得所需的順序指令,此時(shí)無關(guān)的路被關(guān)閉訪問;不匹配時(shí),訪問控制單元記錄順序指令路選信息,分支序列緩沖單元存儲(chǔ)來自于訪問控制單元的順序指令路選信息。
2. 如權(quán)利要求1所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于所述 的分支序列緩沖單元為一個(gè)循環(huán)表,所述循環(huán)表包括至少兩個(gè)表項(xiàng),每個(gè)表項(xiàng)中存儲(chǔ)分支 指令的目標(biāo)地址或順序指令路選信息。
3. 如權(quán)利要求2所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于存儲(chǔ) 分支指令的目標(biāo)地址的目標(biāo)表項(xiàng)后跟隨存儲(chǔ)順序指令路選信息的路選表項(xiàng),各個(gè)路選表項(xiàng) 無間隔地存放于目標(biāo)表項(xiàng)之后。
4. 如權(quán)利要求2所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于所述 表項(xiàng)中包含用以區(qū)分存儲(chǔ)內(nèi)容為分支指令的目標(biāo)地址或順序指令路選信息的標(biāo)識(shí)位。
5. 如權(quán)利要求3所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于所述 表項(xiàng)中包含用以區(qū)分存儲(chǔ)內(nèi)容為分支指令的目標(biāo)地址或順序指令路選信息的標(biāo)識(shí)位。
6. 如權(quán)利要求l-5之一所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在 于訪問控制單元讀取分支序列緩沖單元緩存的順序指令路選信息的過程以路指針作為索 引,訪問控制單元記錄順序指令路選信息的過程以路指針和項(xiàng)指針作為索引。
7. 如權(quán)利要求l-5之一所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于利用訪問控制單元從分支序列緩沖單元獲取到的順序指令路選信息,直接向指令緩存 單元相應(yīng)路的數(shù)據(jù)存儲(chǔ)器讀取順序指令。
8. 如權(quán)利要求6所述的用于降低指令緩存功耗的分支序列緩沖器,其特征在于利用 訪問控制單元從分支序列緩沖單元獲取到的順序指令路選信息,直接向指令緩存單元相應(yīng) 路的數(shù)據(jù)存儲(chǔ)器讀取順序指令。
全文摘要
一種用于降低指令緩存功耗的分支序列緩沖器,包括指令緩存單元,用于臨時(shí)存儲(chǔ)預(yù)取的指令,采用多路組相連結(jié)構(gòu),每個(gè)路包括標(biāo)志位存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;訪問控制單元,用于根據(jù)分支序列緩沖單元中的路選信息,控制指令緩存單元中目標(biāo)路的訪問;分支序列緩沖單元,用于緩存分支指令的目標(biāo)地址以及其后續(xù)順序指令路選信息;訪問控制單元從分支序列緩沖單元中獲得當(dāng)前訪問的路選信息,并根據(jù)路選信息選擇開啟指令緩存單元中相應(yīng)的路,直接獲得所需的順序指令,此時(shí)無關(guān)的路被關(guān)閉訪問。本發(fā)明能有效降低緩存功耗。
文檔編號(hào)G06F9/38GK101727311SQ20091015514
公開日2010年6月9日 申請(qǐng)日期2009年12月3日 優(yōu)先權(quán)日2009年12月3日
發(fā)明者嚴(yán)曉浪, 劉暢, 孟建熠, 徐鴻明, 葛海通 申請(qǐng)人:浙江大學(xué)