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