專利名稱:處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有轉(zhuǎn)發(fā)(forwarding)控制的處理器,尤其涉及低耗電化。
背景技術(shù):
以往,在被流水線化的處理器中,為了提高處理性能采用了轉(zhuǎn)發(fā)(FWD) 控制。轉(zhuǎn)發(fā)控制是指,將作為指令的執(zhí)行結(jié)果的數(shù)據(jù),從輸出在先執(zhí)行的 指令的執(zhí)行結(jié)果的階段(例如,MEM(存儲(chǔ)器訪問)階段、WB(寫回)階段) 提前到讀取在后指令的數(shù)據(jù)的階段(EX階段)執(zhí)行。據(jù)此,由于可以通過 旁路(bypass)來傳送作為在先執(zhí)行的指令的執(zhí)行結(jié)果的數(shù)據(jù),因此可以 解除或降低數(shù)據(jù)競爭(data hazard)。
圖1示出了具有轉(zhuǎn)發(fā)控制結(jié)構(gòu)的、以往的被流水線化的處理器的結(jié)構(gòu)。 圖中粗線主要表示數(shù)據(jù),細(xì)線主要表示控制信號。
如該圖所示,具有轉(zhuǎn)發(fā)控制結(jié)構(gòu)的、以往的被流水線化的處理器包括 指令譯碼部910、指令控制部920、指令執(zhí)行部930、以及寄存器文件940。 指令控制部920具有FWD控制電路921、寄存器文件寫入電路922、 流水線緩沖控制電路923、運(yùn)算處理控制電路924、以及存儲(chǔ)器存取控制 電路925。指令執(zhí)行部930具有運(yùn)算處理執(zhí)行電路931、存儲(chǔ)器存取執(zhí) 行電路932、 FWD選擇器933、MEM選擇器934、流水線緩沖器(EX)935、 流水線緩沖器(MEM)936、以及流水線緩沖器(WB)937。寄存器文件940 具有以寄存器編號(并0 并N)管埋的多個(gè)寄存器(Reg并0 Reg并N)所構(gòu)成的 數(shù)據(jù)保持部942。并且,流水線包括五個(gè)階段DEC(Decode :譯碼)階段、 ED(Instruction Dispatch and register fetch :指令發(fā)行/寄存器讀取) 階段、EX(EXecute :執(zhí)行)階段、MEM(MEMory access :存儲(chǔ)器訪問)階 段、以及WB(Write Back :寫回)階段。
首先,按各個(gè)流水線的階段對以往的被流水線化的處理器中指令執(zhí)行
時(shí)的工作進(jìn)行說明。
在DEC階段,指令譯碼部910生成ID階段以后被使用的指令譯碼信 息,并輸出到指令控制部920。
在ID階段,按照指令譯碼信息從寄存器文件940中讀取寄存器數(shù)據(jù), 從而生成指令執(zhí)行時(shí)所使用的輸入數(shù)據(jù),并輸出到流水線緩沖器(EX)935。
在EX階段,按照指令譯碼信息,對流水線緩沖器(EX)935中所存儲(chǔ)的 指令執(zhí)行輸入數(shù)據(jù),運(yùn)算處理控制電路924或存儲(chǔ)器存取控制電路925生 成控制信號,并使運(yùn)算處理執(zhí)行電路931和存儲(chǔ)器存取執(zhí)行電路93 2工作。
并且,流水線緩沖控制電路923將針對執(zhí)行運(yùn)算處理的指令的指令執(zhí) 行結(jié)果存儲(chǔ)到流水線緩沖器(MEM)936,所述執(zhí)行運(yùn)算處理的指令即是運(yùn)算 處理執(zhí)行電路931的輸出。
在MEM階段,流水線緩沖控制電路923按照指令譯碼信息,生成選 擇控制信號,并輸出到MEM選擇器934,以使MEM選擇器934選擇流 水線緩沖器(MEM)936的值或存儲(chǔ)器存取執(zhí)行電路932的輸出的任一個(gè), 所述存儲(chǔ)器存取執(zhí)行電路932的輸出是指,針對進(jìn)行存儲(chǔ)器存取的指令的 指令執(zhí)行結(jié)果。
并且,流水線緩沖控制電路923將作為MEM選擇器934的輸出的指 令執(zhí)行結(jié)果存儲(chǔ)到流水線緩沖器(WB)937。
在WB階段,按照指令譯碼信息,寄存器文件寫入控制電路922生成 針對寄存器文件940的寫入控制信號,并通過將作為流水線緩沖器 (WB)937的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件940,從而使數(shù)據(jù)保持 部942得以更新。
以下,對轉(zhuǎn)發(fā)控制結(jié)構(gòu)進(jìn)行說明。
FWD控制電路921進(jìn)行判斷,判斷由作為在先被執(zhí)行的指令的EX階 段、MEM階段、WB階段的指令寫入的各寄存器,和由作為在后被執(zhí)行的 指令的ID階段的指令讀取的寄存器是否一致。根據(jù)上述的判斷結(jié)果,可分 為以下(1)一(4)的工作。
(l)判斷結(jié)果為,由ID階段的指令讀取的寄存器,和由EX階段、MEM 階段、WB階段的指令寫入的寄存器中的某個(gè)一致的情況下,F(xiàn)WD控制電 路921生成選擇控制信號,作為指令執(zhí)行輸入數(shù)據(jù)輸出到FWD選擇器
933,以使FWD選擇器933選擇從寄存器文件940中讀取的寄存器數(shù)據(jù)。
(2) 在由ID階段的指令讀取的寄存器,和由EX階段的指令寫入的寄 存器一致的情況下,由于針對應(yīng)該被讀取的寄存器的指令執(zhí)行結(jié)果還沒有 被正確地寫入,因此,F(xiàn)WD控制電路921使流水線暫時(shí)停止。
(3) 在由ID階段的指令讀取的寄存器,和由MEM階段的指令寫入的 寄存器一致的情況下,由于存在將指令執(zhí)行結(jié)果從MEM階段轉(zhuǎn)發(fā)到ID階 段的通路,因此,F(xiàn)WD控制電路921生成選擇控制信號,作為指令執(zhí)行 時(shí)所使用的輸入數(shù)據(jù)輸出到FWD選擇器933,以使FWD選擇器933選 擇將指令執(zhí)行結(jié)果從MEM階段轉(zhuǎn)發(fā)到ID階段的通路。
(4) 在由ID階段的指令讀取的寄存器,和由WB階段的指令寫入的寄 存器一致的情況下,由于存在將指令執(zhí)行結(jié)果從WB階段轉(zhuǎn)發(fā)到ID階段的 通路,因此,F(xiàn)WD控制電路921生成選擇控制信號,作為指令執(zhí)行時(shí)所 使用的輸入數(shù)據(jù)輸出到FWD選擇器933,以使FWD選擇器933選擇將 指令執(zhí)行結(jié)果從WB階段轉(zhuǎn)發(fā)到ID階段的通路。據(jù)此,實(shí)現(xiàn)了從WB階段 轉(zhuǎn)發(fā)到ID階段的工作。
流水線緩沖控制電路923將作為FWD選擇器933的輸出的指令執(zhí)行 輸入數(shù)據(jù),存儲(chǔ)到流水線緩沖器(EX)935。
接著,利用圖2A到圖2D,對實(shí)現(xiàn)轉(zhuǎn)發(fā)工作的指令串的一個(gè)例子進(jìn)行 說明。
圖2A示出了具有數(shù)據(jù)依賴關(guān)系的指令串的一個(gè)例子。該圖的在先被 執(zhí)行的加敏ld)指令是指,從存儲(chǔ)器中讀取值為Reg并31的地址的數(shù)據(jù),并 將讀取的數(shù)據(jù)加載到Reg并0。接在后邊的加法(add)指令是指,使Reg#0 的值和Reg并l的值相加,將相加后的結(jié)果存儲(chǔ)到Reg孝2。
圖2B示出了在轉(zhuǎn)發(fā)的定時(shí),尤其是從MEM階段向ID階段進(jìn)行轉(zhuǎn)發(fā) 的定時(shí)的一個(gè)例子,示出了在執(zhí)行圖2A的指令串時(shí)的流水級和執(zhí)行周期。 不過,省略DEC階段以前的階段。上述的加載指令在ID階段、EX階段、 MEM階段、WB階段以tl到t4這四個(gè)周期被順序地進(jìn)行了流水線處理, 沒有發(fā)生流水線競爭。上述的add指令在上述的四個(gè)階段以t2到t5這五 個(gè)周期被處理,在t3周期發(fā)生了流水線競爭。在t3周期,由于在先被執(zhí) 行的加載指令的執(zhí)行(從存儲(chǔ)器中讀取應(yīng)該被存儲(chǔ)到Reg并O中的數(shù)據(jù))還
沒有結(jié)束,因此,接在后邊的add指令的執(zhí)行中所需要的輸入數(shù)據(jù)(應(yīng)該 被存儲(chǔ)到Reg并0中的數(shù)據(jù))沒有被讀取。但是,在t3周期(尤其是后半 部分),由在先被執(zhí)行的加載指令的MEM階段對接在后邊的加法指令的ID 階段,輸入數(shù)據(jù)(應(yīng)該被存儲(chǔ)到Reg并O中的數(shù)據(jù))通過FWD選擇器933, 由MEM選擇器934被轉(zhuǎn)發(fā)到流水線緩沖器(EX)935。據(jù)此,在從t3周期 變化為t4周期時(shí),即使向Reg并0的寫入沒有結(jié)束,接在后邊的add指令 也可以從ID階段轉(zhuǎn)移到EX階段。
另外,圖2B的定時(shí)與在圖2A中的加載指令和加法指令之間插入一個(gè) 不進(jìn)行存儲(chǔ)器存取的單純指令(例如,寄存器、作為指示對存儲(chǔ)器不進(jìn)行 任何處理的指令的nop指令等)時(shí)的定時(shí)相同。這樣,從MEM階段向ID 階段的轉(zhuǎn)發(fā)工作,在圖2A的指令串的情況,或?qū)τ趫D2A的指令串,在加 載指令和加法指令之間插入一個(gè)單純的指令的情況下被執(zhí)行。并且,在插 入一個(gè)指令的情況下不發(fā)生流水線競爭。
圖2C示出了在轉(zhuǎn)發(fā)的定時(shí),尤其是從WB階段向ID階段進(jìn)行轉(zhuǎn)發(fā)的 定時(shí)的一個(gè)例子,示出了在圖2A中的加載指令和加法指令之間插入兩個(gè) 不進(jìn)行存儲(chǔ)器存取的單純指令時(shí)的流水級和執(zhí)行周期。在該例子中,將被 插入到加載指令和加法指令之間的兩個(gè)指令表示為instl、 inst2。上述的 add指令在上述的四個(gè)階段以t4到t7這四個(gè)周期被處理。在此,在t4周 期(尤其是后半部分),在先被執(zhí)行的加載指令的WB階段針對接在后邊的 加法指令的ID階段,輸入數(shù)據(jù)(應(yīng)該被存儲(chǔ)到Reg并0的數(shù)據(jù))由MEM選擇 器934通過FWD選擇器933,被轉(zhuǎn)發(fā)到流水線緩沖器(EX)935。據(jù)此, 在t4周期,即使向Reg并0的寫入沒有結(jié)束,接在后邊的add指令也可以 從ID階段移動(dòng)到EX階段。據(jù)此,在從t4變化到t5周期時(shí),即使Reg并0 的讀取不能執(zhí)行,接在后邊的add指令也可以從ID階段移動(dòng)到EX階段。 這樣,從WB階段向ID階段的轉(zhuǎn)發(fā)工作是在針對圖2A的指令串,在加載 指令和加法指令之間插入兩個(gè)單純的指令的情況下被執(zhí)行的,而且,像這 樣的指令串是不會(huì)發(fā)生流水線競爭的。
圖2D示出了在以不具有轉(zhuǎn)發(fā)結(jié)構(gòu)的處理器執(zhí)行圖2A的指令串時(shí)的流
水級和執(zhí)行周期。在這種情況下三個(gè)周期發(fā)生流水線競爭。在在先被執(zhí)行 的加載指令的WB階段,向Reg#0的寫入結(jié)束后,接在后邊的add指令
7
在ID階段讀取Reg#0。
非專利文獻(xiàn)1^ 3 > L,、才、'〉一 、f、 e卜'a "夕一 v >著 「 3 >匕。-一夕o構(gòu)成t設(shè)計(jì)第2版(下)一/、一卜'々工7i:/7卜々工 TO^^夕7-一7一 (計(jì)算機(jī)的構(gòu)成和設(shè)計(jì)第2版(下)硬件與軟件的接 口)」日經(jīng)BP社發(fā)行、2005年6月2日、p440 452
然而,在上述的以往技術(shù)中出現(xiàn)的問題是由于向寄存器文件的不必 要的寫入而造成的耗費(fèi)電量的情況。具體而言,在以往的技術(shù)中,作為在 先被執(zhí)行的指令的執(zhí)行結(jié)果的寄存器數(shù)據(jù)僅被接在后邊的一個(gè)指令參考, 且在發(fā)生轉(zhuǎn)發(fā)工作的情況下,根據(jù)在先被執(zhí)行的指令的指令執(zhí)行結(jié)果即使 被寫入到寄存器文件940,執(zhí)行結(jié)果的值也不會(huì)由以后的指令讀取。
發(fā)明內(nèi)容
本發(fā)明鑒于上述課題,目的在于提供一種低耗電量的處理器,并且該 處理器可以消減因向寄存器文件的不必要的寫入而造成的電量。
為了達(dá)成上述的目的,本發(fā)明的處理器具有轉(zhuǎn)發(fā)功能,包括保持單
元,保持與向寄存器的寫入抑制有關(guān)的屬性信息;以及控制單元,在發(fā)生
了轉(zhuǎn)發(fā)時(shí),按照屬性信息來抑制被轉(zhuǎn)發(fā)的數(shù)據(jù)向寄存器的寫入。 根據(jù)此構(gòu)成,可以消減因?qū)拇嫫魑募M(jìn)行不必要的寫入而耗費(fèi)的電
量,可以使耗電量降得更低。
在此,也可以是,所述保持單元保持至少與一個(gè)寄存器相對應(yīng)的所述
屬性信息。
根據(jù)此構(gòu)成,可以將是否抑制向寄存器的不必要的寫入作為寄存器的 屬性來設(shè)定。
在此,也可以是,所述處理器具有在流水級間按順序傳遞數(shù)據(jù)的多級
流水線緩沖器;所述保持單元為多個(gè)流水線緩沖器的一部分,將所述屬性 信息與轉(zhuǎn)發(fā)對象的數(shù)據(jù)一起傳遞給后級的流水線緩沖器。
根據(jù)此構(gòu)成,可以將是否抑制向寄存器的不必要的寫入作為以指令指 定的操作數(shù)的屬性來設(shè)定。
在此,也可以是,所述處理器進(jìn)一步具有指令譯碼部,在對包含寄存 器寫入抑制指示的指令進(jìn)行譯碼時(shí),將所述屬性信息輸出到流水線緩沖器。
根據(jù)此構(gòu)成,可以按照各個(gè)指令來設(shè)定寄存器寫入抑制指示(屬性)。 在此,也可以是,所述處理器具有在流水級間按順序傳遞數(shù)據(jù)的多級
流水線緩沖器;所述抑制單元進(jìn)一步在數(shù)據(jù)被轉(zhuǎn)發(fā)時(shí),抑制該數(shù)據(jù)向該階
段以后的流水線緩沖器的寫入。
根據(jù)此構(gòu)成,除可以抑制向寄存器的不必要的寫入之外,由于還可以
抑制已被轉(zhuǎn)發(fā)的數(shù)據(jù)向該階段以后的流水線緩沖器的寫入,因此可以進(jìn)一
步降低耗電量。
在此,也可以是,所述處理器進(jìn)一步具有控制寄存器,指示是否抑制 向寄存器的寫入;所述保持單元保持與控制寄存器中所保持的數(shù)據(jù)相對應(yīng) 的屬性信息。
根據(jù)此構(gòu)成,可以根據(jù)控制寄存器的設(shè)定來變更保持單元的屬性信息。 例如,在控制寄存器被設(shè)定為不抑制向寄存器的寫入的情況下,可以維持 與現(xiàn)有的程序的兼容性,在控制寄存器被設(shè)定為抑制向特定的寄存器的寫 入的情況下,可以執(zhí)行新的程序。
在此,也可以是,所述處理器進(jìn)一步通過執(zhí)行變更屬性信息的屬性變 更指令,來改寫所述保持單元的屬性信息。
根據(jù)此構(gòu)成,可以根據(jù)屬性變更指令,任意地變更設(shè)定是否抑制向寄 存器的不必要的寫入的寄存器的屬性。
并且,本發(fā)明的程序變換裝置,將原始程序變換為以權(quán)利要求l所述 的處理器為對象的程序,包括抽出單元,從原始程序中抽出存儲(chǔ)在寄存 器中的變量;檢測單元,檢測被抽出的變量的生存區(qū)間;第一判斷單元, 判斷在生存區(qū)間中參考所述變量的參考指令是否僅為一個(gè);第二判斷單元, 判斷在所述生存區(qū)間中,定義所述變量的定義指令和所述參考指令是否為 轉(zhuǎn)發(fā)的對象;以及生成單元,在判斷為參照指令在生存區(qū)間中僅為一個(gè), 且是轉(zhuǎn)發(fā)的對象的情況下,生成包含抑制指令的程序,該抑制指令抑制由 所述定義指令進(jìn)行的寄存器寫入。
根據(jù)此構(gòu)成,可以消減因向寄存器文件的不必要的寫入而消耗的電量, 可以生成耗電量更低的程序。
并且,本發(fā)明的程序變換方法具有與上述相同的單元。
并且,屬性信息表示,在發(fā)生了轉(zhuǎn)發(fā)工作的情況下,是否將指令的執(zhí)
行結(jié)果寫入到寄存器文件。
據(jù)此,在發(fā)生了轉(zhuǎn)發(fā)工作的情況下,可以根據(jù)屬性信息來判斷是否進(jìn) 行向寄存器文件的寫入,在判斷為不需要寫入的情況下,通過抑制向寄存 器文件的寫入,從而消減耗電量。
發(fā)明效果
因此,根據(jù)本發(fā)明可以消減因向寄存器文件的不必要的寫入而造成的 電量,同時(shí)可以提供一種能夠?qū)崿F(xiàn)低耗電量的處理器。
圖1示出了以往技術(shù)中具有轉(zhuǎn)發(fā)控制結(jié)構(gòu)的流水線處理器的結(jié)構(gòu)。
圖2A示出了具有數(shù)據(jù)依賴關(guān)系的指令串的一個(gè)例子。
圖2B是從MEM階段轉(zhuǎn)發(fā)到ED階段的定時(shí)的示例圖。
圖2C是從WB階段轉(zhuǎn)發(fā)到ID階段的定時(shí)的示例圖。
圖2D示出了在以不具有轉(zhuǎn)發(fā)結(jié)構(gòu)的處理器執(zhí)行時(shí)的流水級和執(zhí)行周期。
圖3示出了實(shí)施例1中的處理器的結(jié)構(gòu)。 圖4示出了寄存器寫入抑制電路的結(jié)構(gòu)。 圖5示出了實(shí)施例2中的處理器的結(jié)構(gòu)。 圖6示出了實(shí)施例3中的處理器的結(jié)構(gòu)。 圖7示出了實(shí)施例4中的處理器的結(jié)構(gòu)。 圖8示出了實(shí)施例5中的處理器的結(jié)構(gòu)。 圖9示出了編譯裝置的結(jié)構(gòu)。
圖10示出了實(shí)施例5中的擴(kuò)展匯編程序的處理流程。
圖11示出了實(shí)施例6中的處理器的結(jié)構(gòu)。
圖12示出了屬性保持部以及寄存器寫入抑制電路的結(jié)構(gòu)。
圖13示出了編譯裝置的結(jié)構(gòu)。
圖14示出了擴(kuò)展匯編程序的處理流程。
標(biāo)記說明
110、 510、 610指令譯碼部
120、 620指令控制部
121 FWD控制電路
122寄存器文件寫入控制電路
123流水線緩沖控制電路
124運(yùn)算處理控制電路
125存儲(chǔ)器存取控制電路
126、 626寄存器寫入抑制電路
126 a 屬性選擇器
126b "與"門
126c 屬性選擇器
126d "與"門
130 指令執(zhí)行部
131 運(yùn)算處理執(zhí)行電路
132 存儲(chǔ)器存取執(zhí)行電路
133 FWD選擇器
134 MEM選擇器
135、 635流水線緩沖器(EX)
136、 636流水線緩沖器(MEM)
137、 637流水線緩沖器(WB)
138、 139、 201、 638、 639抑制門 139抑制門
140寄存器文件
141、 641屬性保持部
142 數(shù)據(jù)保持部
341 屬性信息
602 編譯器
604、 804 擴(kuò)展匯編程序
具體實(shí)施例方式
(實(shí)施例1)
實(shí)施例1中的處理器具有寄存器文件,并根據(jù)屬性信息來控制向寄存 器文件的寫入的有無,所述寄存器文件由多個(gè)寄存器組成,且該多個(gè)寄存 器都分別具有自己的屬性信息。
以下,參照附圖對本發(fā)明所涉及的實(shí)施例l進(jìn)行說明。
圖3示出了實(shí)施例1中的處理器的結(jié)構(gòu)。圖中粗線主要表示數(shù)據(jù),細(xì) 線主要表示控制信號。本處理器被流水線化,且具有轉(zhuǎn)發(fā)功能。如圖所示, 本處理器包括指令譯碼部IIO、指令控制部120、指令執(zhí)行部130、以 及寄存器文件140。
指令控制部120具有FWD控制電路121、寄存器文件寫入電路 122、流水線緩沖控制電路123、運(yùn)算處理控制電路124、存儲(chǔ)器存取控 制電路125、以及寄存器寫入抑制部126。并且,指令執(zhí)行部130具有 運(yùn)算處理執(zhí)行電路131、存儲(chǔ)器存取執(zhí)行電路132、 FWD選擇器133、 MEM選擇器134、流水線緩沖器(EX)135、流水線緩沖器(MEM)136、流 水線緩沖器(WB)137、抑制門138、以及抑制門139。其中,寄存器寫入 抑制部126、抑制門138以及抑制門139可以作為控制單元來發(fā)揮功能, 在發(fā)生轉(zhuǎn)發(fā)時(shí),按照屬性信息抑制被轉(zhuǎn)發(fā)的數(shù)據(jù)向寄存器的寫入。
寄存器文件140包括以寄存器編號(弁0 弁N)管理的屬性信息保持部 141以及數(shù)據(jù)保持部142。屬性信息保持部141保持有與寄存器編號相對 應(yīng)的多個(gè)屬性信息(Atr并0 Atr并N)。數(shù)據(jù)保持部142包括保持有數(shù)據(jù)的、 與寄存器編號相對應(yīng)的多個(gè)寄存器(Reg并0 Reg并N)。屬性信息保持部141 保持與向寄存器的寫入抑制有關(guān)的屬性信息。各屬性信息表示"在發(fā)生了轉(zhuǎn) 發(fā)工作的情況下,是否將指令的執(zhí)行結(jié)果寫入到對應(yīng)的寄存器中","在發(fā) 生了轉(zhuǎn)發(fā)工作的情況下,將指令的執(zhí)行結(jié)果寫入到寄存器"的情況被設(shè)定為 0,"在發(fā)生了轉(zhuǎn)發(fā)工作的情況下,不將指令的執(zhí)行結(jié)果寫入到寄存器"的情 況被設(shè)定為1。
并且,上述的處理器包括五個(gè)流水級,即DEC階段、ED階段、EX 階段、MEM階段、WB階段。
關(guān)于具有以上這樣的結(jié)構(gòu)的本實(shí)施例中的處理器的工作,將按照各個(gè) 流水級來進(jìn)行說明。 (DEC階段)
在DEC階段,由指令譯碼部110生成ID階段以后將被使用的指令譯 碼信息,并輸出到指令控制部120。 (ID階段)
在ID階段,生成在執(zhí)行指令時(shí)讀取寄存器的值以作為指令執(zhí)行輸入數(shù) 據(jù),并輸出到指令執(zhí)行部130。
首先,F(xiàn)WD控制電路121進(jìn)行判斷,判斷作為后續(xù)的指令而被執(zhí)行 的ID階段的指令所讀取的寄存器,和作為在先的指令而被執(zhí)行的EX階段、 MEM階段、WB階段的指令所寫入的寄存器是否一致。根據(jù)此判斷結(jié)果可 以分為以下(1)到(4)的工作。
(1) ID階段的指令所讀取的寄存器,和EX階段、MEM階段、WB階 段的指令所寫入的寄存器均不一致的情況下,F(xiàn)WD控制電路121生成選 擇控制信號,以作為指令執(zhí)行輸入數(shù)據(jù)輸出到FWD選擇器133,以使來 自寄存器文件140的值被選擇。
(2) 在ID階段的指令所讀取的寄存器,和EX階段的指令所寫入的寄 存器一致的情況下,由于針對應(yīng)該讀取的寄存器的指令執(zhí)行結(jié)果不能被讀 取,因此FWD控制電路121使流水線暫時(shí)停止。
(3) 在由ID階段的指令讀取的寄存器,和由MEM階段的指令寫入的 寄存器一致的情況下,由于存在將指令執(zhí)行結(jié)果從MEM階段轉(zhuǎn)發(fā)到ID階 段的通路,因此,F(xiàn)WD控制電路121生成選擇控制信號,以作為指令執(zhí) 行輸入數(shù)據(jù)輸出到FWD選擇器133,以使FWD選擇器133選擇將指令 執(zhí)行結(jié)果從MEM階段轉(zhuǎn)發(fā)到ID階段的通路。這樣,就進(jìn)行了從MEM階 段向ID階段的轉(zhuǎn)發(fā)工作。
此時(shí),若作為接受被轉(zhuǎn)發(fā)的數(shù)據(jù)的寫入的寄存器所對應(yīng)的屬性信息為 1,則寄存器寫入抑制電路126將屏蔽信號MASK—MEM斷言(assert)給 抑制門138。在屏蔽信號MASK—MEM被斷言的情況下,由于屏蔽了從流 水線緩沖器(MEM)136輸出到流水線緩沖器(WB)137的WE(Write Enable) 信號,從而抑制門138抑制被轉(zhuǎn)發(fā)來的數(shù)據(jù)向寄存器的寫入。
(4) 在由ID階段的指令讀取的寄存器,和由WB階段的指令寫入的寄 存器一致的情況下,由于存在將指令執(zhí)行結(jié)果從WB階段轉(zhuǎn)發(fā)到ID階段的 通路,因此,F(xiàn)WD控制電路121生成選擇控制信號,作為指令執(zhí)行時(shí)所
13
使用的輸入數(shù)據(jù)輸出到FWD選擇器133,以使FWD選擇器133選擇將 指令執(zhí)行結(jié)果從WB階段轉(zhuǎn)發(fā)到ID階段的通路。流水線緩沖控制電路123 將作為FWD選擇器133的輸出的指令執(zhí)行輸入數(shù)據(jù)存儲(chǔ)到流水線緩沖器 (EX)135。這樣,就進(jìn)行了從WB階段向ID階段的轉(zhuǎn)發(fā)工作。
此吋,若作為接受被轉(zhuǎn)發(fā)的數(shù)據(jù)的寫入的寄存器所對應(yīng)的屬性信息為 1,則寄存器寫入抑制電路126將屏蔽信號MASK—WB斷言(assert)給抑 制門139。在屏蔽信號MASK—WB被斷言的情況下,由于屏蔽了從流水 線緩沖器(WB)137輸出到寄存器文件140的WE(Write Enable)信號,從 而抑制門139抑制被轉(zhuǎn)發(fā)來的數(shù)據(jù)向寄存器的寫入。 (EX階段)
在EX階段,對于被存儲(chǔ)在流水線緩沖器(EX)13S中的指令執(zhí)行輸入數(shù) 據(jù),運(yùn)算處理控制電路124或存儲(chǔ)器存取控制電路125按照指令譯碼信息 生成控制信號,以使運(yùn)算處理執(zhí)行電路131、存儲(chǔ)器存取執(zhí)行電路132工 作。
并且,流水線緩沖控制電路123將作為運(yùn)算處理執(zhí)行電路131的輸出 的、針對進(jìn)行運(yùn)算處理的指令的指令執(zhí)行結(jié)果存儲(chǔ)到流水線緩沖器 (MEM)136。
(MEM階段)
在MEM階段,流水線緩沖控制電路123按照指令譯碼信息,生成選 擇控制信號并輸出到MEM選擇器134,以使MEM選擇器134選擇流水 線緩沖器(MEM)136的值或作為指令執(zhí)行結(jié)果的存儲(chǔ)器存取執(zhí)行電路132 的輸出的任一個(gè),所述指令執(zhí)行結(jié)果是針對進(jìn)行存儲(chǔ)器存取的指令的執(zhí)行 結(jié)果。
并且,流水線緩沖控制電路123將作為MEM選擇器134的輸出的指 令執(zhí)行結(jié)果存儲(chǔ)到流水線緩沖器(WB)137。 (WB階段)
在WB階段,寄存器文件寫入控制電路122按照指令譯碼信息,生成 針對寄存器文件140的寫入控制信號,并通過將作為流水線緩沖器 (WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件140,從而數(shù)據(jù)保持部 142得以更新。
但是,屬性信息保持部141的值為1,且在MEM階段或WB階段, 由后續(xù)的指令從FWD控制電路121中檢測出由轉(zhuǎn)發(fā)指令執(zhí)行結(jié)果的工作 進(jìn)行的讀取的情況下,寄存器文件寫入控制電路122不生成針對寄存器文 件140的寫入控制信號,并且也沒有將作為流水線緩沖器(WB)137的輸出 的指令執(zhí)行結(jié)果向寄存器文件140的寫入,數(shù)據(jù)保持部142不被更新。
圖4是寄存器寫入抑制電路126及其周邊的結(jié)構(gòu)示例圖。在該圖中, 寄存器寫入抑制電路126包括屬性選擇器126a、"與"門126b、屬性選 擇器126c、以及"與"門126d。并且,在該圖中示出了,在流水級之間按 順序傳遞數(shù)據(jù)的多級流水線緩沖器中的,流水線緩沖器(EX)135、流水線緩 沖器(MEM)136、以及流水線緩沖器(WB)137的一部分。圖中的WN(Write Number)表示接受寫入的寄存器的編號。WE表示給寄存器的寫入控制信 號。FWD-MEM信號是表示從MEM階段向ID階段轉(zhuǎn)發(fā)的信號,由FWD 控制電路121輸出。FWD-WB信號是表示從WB階段向ID階段轉(zhuǎn)發(fā)的信 號,由FWD控制電路121輸出。
屬性選擇器126a選擇屬性信息保持部141中所保持的屬性信息 (Atr并0 ATR并N)中的、與流水線緩沖器(MEM)136所保持的WN所示出 的寄存器編號相對應(yīng)的屬性信息。即,被選擇的屬性信息是表示接受MEM 階段的數(shù)據(jù)的寫入的寄存器編號。
"與"門126b對由屬性選擇器126a所選擇的屬性信息和FWD-MEM 信號進(jìn)行邏輯乘運(yùn)算,并作為屏蔽信號MASK-MEM輸出。即,"與"門126b 將作為指令執(zhí)行結(jié)果的數(shù)據(jù)從MEM階段轉(zhuǎn)發(fā)向ID階段,且接受該數(shù)據(jù)的
寫入的寄存器的屬性信息為"不將指令的執(zhí)行結(jié)果寫入到寄存器文件"的情 況下,斷言屏蔽信號MASK-MEM。
屬性選擇器126c選擇屬性信息保持部141中所保持的屬性信息 (Atr并0 ATR并N)中的、與流水線緩沖器(WB)l 3 7所保持的WN所示出的 寄存器編號相對應(yīng)的屬性信息。即,被選擇的屬性信息是表示接受WB階 段的數(shù)據(jù)的寫入的寄存器編號。
"與"門126d對由屬性選擇器126c所選擇的屬性信息和FWD-WB 信號進(jìn)行加法運(yùn)算,并作為屏蔽信號MASK-WB輸出。即,"與"門126d 將作為指令執(zhí)行結(jié)果的數(shù)據(jù)從WB階段轉(zhuǎn)發(fā)向ID階段,且接受該數(shù)據(jù)的寫
入的寄存器的屬性信息為"不將指令的執(zhí)行結(jié)果寫入到寄存器文件"的情況
下,斷言屏蔽信號MASK-WB。
抑制門138按照屏蔽信號MASK-MEM,屏蔽從流水線緩沖器 (MEM)136輸出到流水線緩沖器(WB)137的WE(WriteEnable)信號。這樣, 向被轉(zhuǎn)發(fā)的數(shù)據(jù)的寄存器的寫入被抑制。
抑制門139按照屏蔽信號MASK-WB,屏蔽從流水線緩沖器(WB)137 輸出到寄存器文件140的WE(WriteEnable)信號。這樣,向被轉(zhuǎn)發(fā)的數(shù)據(jù) 的寄存器的寫入被抑制。
這樣,在本發(fā)明所涉及的實(shí)施例l中的處理器,在發(fā)生了轉(zhuǎn)發(fā)工作的 情況下,按照屬性信息保持部141中所保持的屬性信息,寄存器寫入抑制 電路126可以抑制被轉(zhuǎn)發(fā)的數(shù)據(jù)的寄存器的寫入。據(jù)此,通過抑制向寄存 器文件140的不必要的寫入,從而可以消減耗電量。
并且,也可以固定屬性信息Atr#l—#N中的全部或一部分的屬性信 息。并且,關(guān)于處理器的流水線級數(shù),只要轉(zhuǎn)發(fā)通路至少存在一個(gè)多少級 都可以。
(實(shí)施例2 )
以下,參照附圖對本發(fā)明所涉及的實(shí)施例2進(jìn)行說明。 實(shí)施例2中的處理器除具有實(shí)施例1中的處理器的特點(diǎn)以外,還可以 控制作為指令執(zhí)行部的內(nèi)部資源的流水線緩沖器的變更的有無。
在考慮以上這點(diǎn)的基礎(chǔ)上對本發(fā)明中的實(shí)施例2中的處理器進(jìn)行說明。
圖5示出了實(shí)施例2中的處理器的結(jié)構(gòu)。圖5中的處理器結(jié)構(gòu)和實(shí)施 例1中處理器結(jié)構(gòu)的不同之處是,增加了抑制門201。
下面將對具有以上這種結(jié)構(gòu)的的本實(shí)施例中的處理器的工作進(jìn)行說 明,并且,對于與實(shí)施例l中的處理器相同之處省略說明,僅對不同之處 (MEM階段)進(jìn)行說明。
抑制門201按照MASK—WB信號,對向流水線緩沖器(WB)137的寫 入控制信號進(jìn)行屏蔽。據(jù)此,由于向流水線緩沖器(WB)137的寫入工作得 到了抑制,再加上寄存器文件140的耗電量得到了降低,因此,可以降低 流水線緩沖器(WB)137的耗電量。
(MEM階段)
在MEM階段,流水線緩沖控制電路123按照指令譯碼信息,生成選 擇控制信號并輸出到MEM選擇器134,以使MEM選擇器134選擇流水 線緩沖器(MEM)236的值或作為指令執(zhí)行結(jié)果的存儲(chǔ)器存取執(zhí)行電路132 的輸出的任一個(gè),所述指令執(zhí)行結(jié)果是針對進(jìn)行存儲(chǔ)器存取的指令的執(zhí)行 結(jié)果。
并且,流水線緩沖控制電路123根據(jù)向流水線緩沖器(WB)137的寫入 控制信號,將作為MEM選擇器134的輸出的指令執(zhí)行結(jié)果存儲(chǔ)到流水線 緩沖器(WB)137。
不過,屬性信息保持部141的值為l,且在MEM階段由后續(xù)的指令 檢測出由轉(zhuǎn)發(fā)工作指令執(zhí)行結(jié)果被讀取的情況下,MASK—WB信號被斷 言。這樣,抑制門201屏蔽向流水線緩沖器(WB)137的寫入控制信號。
結(jié)果是,流水線緩沖控制電路123不將作為MEM選擇器134的輸出 的指令執(zhí)行結(jié)果存儲(chǔ)到流水線緩沖劉WB)137。
根據(jù)以上所述,在本發(fā)明所涉及的實(shí)施例2的處理器中,在發(fā)生了轉(zhuǎn) 發(fā)工作的情況下,可以根據(jù)屬性信息保持部141來抑制向流水線緩沖器 (WB)137的不必要的存儲(chǔ),從而可以減少耗電。
并且,寫入的抑制對象不僅限于最終級的流水線緩沖器,只要抑制從 轉(zhuǎn)發(fā)數(shù)據(jù)的階段向后級的流水線緩沖器的寫入即可。并且,也可以不是抑 制向流水線緩沖器的全部的寫入工作,可以是抑制向流水線緩沖器的一部 分(至少是保持WN和WE的部分)的寫入工作。 (實(shí)施例3)
以下利用圖6對本發(fā)明所涉及的實(shí)施例3進(jìn)行說明。 實(shí)施例3中的處理器與實(shí)施例1中的處理器的不同之處是沒有屬性信 息的變化。
圖6示出了實(shí)施例3中的處理器的結(jié)構(gòu)。圖6的處理器的結(jié)構(gòu)和實(shí)施 例1中的處理器的結(jié)構(gòu)的不同之處是,包括具有屬性信息保持部141的寄 存器文件340,以取代寄存器文件140,以及包括寄存器寫入抑制電路 326,以取代寄存器寫入抑制電路126。
下面對具有以上這種結(jié)構(gòu)的本實(shí)施例中的處理器的工作進(jìn)行說明,對
于與實(shí)施例l中的處理器相同之處省略說明,在此,僅對不同之處進(jìn)行說 明。
不具有保持與寄存器文件340中所包含的各個(gè)寄存器相對應(yīng)的屬性的 屬性信息保持部141,而具有保持與特定的寄存器(寄存器編號Reg并N) 相對應(yīng)的屬性(時(shí)常為1)的屬性信息保持部341。
寄存器寫入抑制電路326即使與寄存器寫入抑制電路126具有相同的 結(jié)構(gòu)也不會(huì)有問題,但電路結(jié)構(gòu)也可以是,刪除圖4所示的屬性選擇器 126a、 126c,將Atr#N分別直接輸入給"與"門126b、 126d。 (WB階段)
在WB階段,寄存器文件寫入控制電路122按照指令譯碼信息,生成 針對寄存器文件340的寫入控制信號,并通過將作為流水線緩沖器 (WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件340,從而數(shù)據(jù)保持部 142得以更新。
但是,在被寫入到特定的寄存器(寄存器編號Reg并N)的指令被檢測 出的情況下,且在MEM階段或WB階段,由后續(xù)的指令從FWD控制電路 121中檢測出由轉(zhuǎn)發(fā)工作指令執(zhí)行結(jié)果被讀取的情況下,寄存器文件寫入 控制電路122不生成針對寄存器文件340的寫入控制信號,并且也沒有將 作為流水線緩沖器(WB)137的輸出的指令執(zhí)行結(jié)果向寄存器文件340的寫 入,數(shù)據(jù)保持部142不被更新。
根據(jù)以上所述,在本發(fā)明所涉及的實(shí)施例3中的處理器,通過將屬性 信息保持部341與特定的寄存器相對應(yīng),從而可以簡化控制電路的全體。
并且,特定的寄存器不僅限于一個(gè),也可以是多個(gè)。 (實(shí)施例4)
以下參照附圖對本發(fā)明所涉及的實(shí)施例4進(jìn)行說明。
實(shí)施例4中的處理器除具有與實(shí)施例2中的處理器相同之處以外,還
具有處理器狀態(tài)寄存器。以下,在考慮以上這點(diǎn)的基礎(chǔ)上,對本發(fā)明中的
實(shí)施例4中的處理器進(jìn)行說明。
圖7示出了實(shí)施例4中的處理器的結(jié)構(gòu)。圖7的處理器結(jié)構(gòu)與實(shí)施例
l中的處理器結(jié)構(gòu)的不同之處是,增加了處理器狀態(tài)寄存器412,且其輸
出與屬性信息保持部141相連接。
以下對于具有以上這種結(jié)構(gòu)的本實(shí)施例中的處理器的工作進(jìn)行說明, 對于與實(shí)施例1中的處理器相同之處省略說明,在此對不同之處進(jìn)行說明。
處理器狀態(tài)寄存器412作為控制寄存器來發(fā)揮功能,其指示是否抑制 向寄存器的寫入。屬性信息保持部141保持與處理器狀態(tài)寄存器412 (控 制寄存器)所保持的數(shù)據(jù)相對應(yīng)的屬性信息。 (WB階段)
在WB階段,寄存器文件寫入控制電路122按照指令譯碼信息,生成 針對寄存器文件140的寫入控制信號,并通過將作為流水線緩沖器 (WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件140,從而數(shù)據(jù)保持部 142得以更新。
但是,屬性信息保持部141為1,且在MEM階段或WB階段,由后 續(xù)的指令從FWD控制電路121中檢測出由轉(zhuǎn)發(fā)指令執(zhí)行結(jié)果的工作進(jìn)行 的讀取的情況下,寄存器文件寫入控制電路122不生成針對寄存器文件 140的寫入控制信號,并且也沒有將作為流水線緩沖器(WB)137的輸出的 指令執(zhí)行結(jié)果向寄存器文件140的寫入,數(shù)據(jù)保持部142不被更新。
并且,通過將處理器狀態(tài)寄存器的值設(shè)定為特定的值,從而可以將屬 性信息保持部141全部變更為0。
如以上所述,在本發(fā)明所涉及的實(shí)施例4的處理器中,屬性信息保持 部141的控制可以由處理器狀態(tài)寄存器412來設(shè)定。例如,為了使屬性信 息Atr#0—#N全部為0而設(shè)定處理器狀態(tài)寄存器412的話,本處理器的 工作就可以變更為以往的處理器的工作,這樣,可以保持在軟件上的處理 器工作的互換性。
也可以僅將屬性信息Atr#N作為1而設(shè)定處理器狀態(tài)寄存器412,也 可以依賴于安裝了處理器的裝置,來固定處理器狀態(tài)寄存器412的數(shù)據(jù),
還可以進(jìn)行動(dòng)態(tài)變更。 (實(shí)施例5)
實(shí)施例5中的處理器除與實(shí)施例1中的處理器具有相同之處以外,還 具有作為指令的屬性變更指令。在考慮以上這點(diǎn)的基礎(chǔ)上,對本發(fā)明的實(shí) 施例5中的處理器進(jìn)行說明。
圖8示出了實(shí)施例5中的處理器的結(jié)構(gòu)。圖8的處理器結(jié)構(gòu)與實(shí)施例
19
1中的處理器結(jié)構(gòu)的不同之處是,作為WB階段的流水線緩沖器137的輸 出的指令執(zhí)行結(jié)果與屬性信息141相連接。
以下對有關(guān)具有以上這種結(jié)構(gòu)的本實(shí)施例中的處理器的工作進(jìn)行說 明,省略與實(shí)施例1的處理器相同之處,對不同之處(WB階段)進(jìn)行說 明。
(WB階段)
在WB階段,寄存器文件寫入控制電路122按照指令譯碼信息,生成 針對寄存器文件140的寫入控制信號,并通過將作為流水線緩沖器 (WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件140,從而數(shù)據(jù)保持部 142得以更新。
但是,屬性信息保持部141的值為1,且在MEM階段或WB階段, 由后續(xù)的指令從FWD控制電路121中檢測出由轉(zhuǎn)發(fā)指令執(zhí)行結(jié)果的工作 進(jìn)行的讀取的情況下,寄存器文件寫入控制電路123不生成針對寄存器文 件140的寫入控制信號,并且也沒有將作為流水線緩沖器(WB)137的輸出 的指令執(zhí)行結(jié)果向寄存器文件140的寫入,數(shù)據(jù)保持部142不被更新。
在執(zhí)行屬性變更指令"seLattributeReg紐"的情況下,寄存器文件寫 入控制電路522生成針對寄存器文件140的寫入控制信號,并通過將作為 流水線緩沖器(WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件140,從 而屬性信息保持部141得以更新,被設(shè)定為l。
并且,在執(zhí)行屬性變更指令"reset—attributeReg紐"的情況下,寄存 器文件寫入控制電路522生成針對寄存器文件140的寫入控制信號,并通 過將作為流水線緩沖器(WB)137的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件 140,從而屬性信息保持部141得以更新,被設(shè)定為0。
這樣,在本發(fā)明所涉及的實(shí)施例5的處理器中,可以通過軟件任意變 更與各寄存器相對應(yīng)的屬性信息保持部141。
以下將參照附圖對實(shí)施例5中的程序變換裝置進(jìn)行說明。實(shí)施例5中 的程序變換裝置為編譯裝置,與實(shí)施例5的處理器相對應(yīng),分析程序結(jié)構(gòu) 并自動(dòng)插入屬性變更指令。
以下在考慮到以上這點(diǎn)的基礎(chǔ)上,對本發(fā)明的實(shí)施例5中的編譯裝置 進(jìn)行說明。
圖9示出了實(shí)施例5中的編譯裝置的結(jié)構(gòu)。
如該圖所示,該編譯裝置具有編譯程序602和擴(kuò)展匯編程序604。編 譯程序602將作為高級語言的C語言的源代碼601變換為由與以往相同 的指令構(gòu)成的匯編程序代碼603。
擴(kuò)展匯編程序604將匯編程序代碼603變換為添加了屬性變更指令的 匯編程序代碼605。
以下對有關(guān)具有以上結(jié)構(gòu)的本實(shí)施例中的編譯程序的工作進(jìn)行說明。 首先,編譯程序602根據(jù)以往的編譯流,將作為高級語言的C語言源
代碼601變換為匯編程序代碼(以往)603。
作為一個(gè)例子,對匯編程序代碼(以往)603的內(nèi)容進(jìn)行說明。
第l行將轉(zhuǎn)移指令執(zhí)行時(shí)的接受轉(zhuǎn)移方的地址作為Label來表示的
偽指令。
第2行將Reg#31的數(shù)據(jù)作為地址來進(jìn)行向存儲(chǔ)器的讀取,并將讀 取的數(shù)據(jù)存儲(chǔ)到Reg#0的加載指令。
第3行對Reg并0和Reg#l數(shù)據(jù)進(jìn)行加法運(yùn)算,并存儲(chǔ)到Reg#2的 加法指令。
第4行將Reg#31的數(shù)據(jù)作為地址,將Reg#0的數(shù)據(jù)向存儲(chǔ)器寫入 的存儲(chǔ)指令。
第5行使Reg并31和立即數(shù)1相加,并存儲(chǔ)到Reg約l的加法指令。 第6行在第i行進(jìn)行轉(zhuǎn)移(循環(huán)執(zhí)行)的轉(zhuǎn)移指令。 接著,擴(kuò)展匯編程序604將匯編程序代碼(以往)603變換為添加了 屬性變更指令的匯編程序代碼(添加新建指令)605。在此,擴(kuò)展匯編程 序604判斷Reg#0的數(shù)據(jù)由擴(kuò)編程序代碼(以往)603中的第2行寫入,并 僅以緊接在后邊的第3行的指令讀取,并將屬性變更指令(set—attribute Reg并0)插入到馬上就要執(zhí)行循環(huán)的指令,以使Reg并O的屬性被設(shè)定為1。 該指令指示將屬性Atr#0設(shè)定為1。并且,插入屬性變更指令 (reset—attribute Reg#0),以使在循環(huán)執(zhí)行被遺漏時(shí)將Reg#0的屬性設(shè)定 為0。該指令指示將屬性Atr#0設(shè)定為0。
圖10示出了實(shí)施例5中的擴(kuò)展匯編程序604的處理流程。如該圖所 示,擴(kuò)展匯編程序604從原始的匯編程序代碼603中抽出由原始程序存儲(chǔ)
到寄存器的變量以及數(shù)據(jù)相關(guān)關(guān)系(S81),并且,根據(jù)指令間的相關(guān)關(guān)系 檢測生存區(qū)伺(S82)。生存區(qū)間是指,從定義變量的指令(稱為定義指令) 開始到最后參考該變量的指令(稱為參考指令)為止的區(qū)間。而且,擴(kuò)展 匯編程序604抽出變量中跨過基本塊的不參考的局部變量(S83),并判斷 參考該變量的參考指令在生存區(qū)間中是否僅為一個(gè)(S84),并判斷在生存 區(qū)間中定義該變量的定義指令和參考的參考指令是否成為轉(zhuǎn)發(fā)的對象 (S85)。此時(shí),定義指令和參考指令是否成為轉(zhuǎn)發(fā)的對象取決于定義指令 和參考指令之間的距離。該距離是指從定義指令到參考指令的指令數(shù),例 如,在定義指令的后邊緊接著的是參考指令的情況下,此時(shí)的距離就為l。 換而言之,插入到定義指令和參考指令之間的指令數(shù)加1就是距離。在這 種情況下,若在本實(shí)施例的處理器中距離為3以上,則判斷為是轉(zhuǎn)發(fā)的對 象。
在此判斷中,參考指令被判斷為在生存區(qū)間僅存在一個(gè)且是轉(zhuǎn)發(fā)對象 的情況下,擴(kuò)展匯編程序604添加抑制由定義指令進(jìn)行寄存器寫入的抑制 指令,以便抑制由所述定義指令進(jìn)行的寄存器寫入(S86、 S87)。在此所 謂的抑制指令是指屬性變更指令(set-attribute Reg^)和屬性變更指令 (reset_attribute Reg#n),屬性變更指令(set—attribute Reg紐)設(shè)定在生 存區(qū)間之前抑制向應(yīng)該存儲(chǔ)變量的寄存器的寫入的屬性信息,屬性變更指 令(reset—attribute Regfn)設(shè)定在生存區(qū)間之后不抑制向應(yīng)該存儲(chǔ)變量的 寄存器的寫入的屬性信息。擴(kuò)展匯編程序604在存在下一個(gè)局部變量的情 況下(S88),再次處理步驟S83以后的步驟。
并且,在此判斷中,參考指令被判斷為在生存區(qū)間中存在的不是一個(gè), 或沒有成為轉(zhuǎn)發(fā)的對象的情況下,擴(kuò)展匯編程序604在存在下一個(gè)局部變 量的情況下(S88),再次處理步驟S83以后的步驟。
通過以上所述,軟件開發(fā)人員可以不必特意地對屬性變更指令進(jìn)行編 程,就可以通過實(shí)施例5中的處理器來實(shí)現(xiàn)降低耗電量的效果。
并且,(set—attribute Regt)指令可以是緊靠定義指令的前一個(gè)指令, (reset—attribute Reg紐)指令可以是緊靠參考指令的后一個(gè)指令,后者的 指令最好是插入到圖9所示的循環(huán)以外的位置。 (實(shí)施例6 )
以下參照附圖對本發(fā)明所涉及的實(shí)施例6進(jìn)行說明。在本實(shí)施例中屬 性信息不是與各個(gè)寄存器對應(yīng)而被保持的,而是與轉(zhuǎn)發(fā)對象的各個(gè)數(shù)據(jù)相 對應(yīng)并被保持在多級流水線緩沖器中,以下對傳遞給多個(gè)流水線緩沖器的 結(jié)構(gòu)進(jìn)行說明。
圖11示出了實(shí)施例6中的處理器的結(jié)構(gòu)。圖11所示的處理器與實(shí)施 例1中的處理器相比較不同之處是,具有寄存器文件640以取代寄存器文 件140,具有指令控制部620以取代指令控制部120,具有指令譯碼部 610以取代指令譯碼部110,具有流水線緩沖器635—637以取代流水線 緩沖器135 — 137,具有抑制門638、 639以取代抑制門138、 139。
寄存器文件640雖然包括數(shù)據(jù)保持部142,但不具有各個(gè)寄存器所對 應(yīng)的屬性信息保持部141。在本實(shí)施例中,因保持對應(yīng)于轉(zhuǎn)發(fā)對象的數(shù)據(jù) 的屬性信息S,所以流水線緩沖器635—637的一部分具有屬性信息保持 單元的功能。
指令譯碼部610除具有指令譯碼部110的功能以外,還可以譯碼包含 寄存器寫入抑制指示的指令。本處理器可以支援作為向寄存器寫入數(shù)據(jù)的
指令的通常指令和抑制指令的這兩種指令,通常指令不包含寄存器寫入抑 制指示,抑制指令包含寄存器寫入抑制指示。例如,對于通常的加載指令 (ldReg#0, (Reg弁31))也可以執(zhí)行附帶有抑制指示的加載指令(1(^ Reg#0, (Reg#31))。抑制指令的記憶碼的表示法是在通常的指令上附加*。
指令控制部620與指令控制部120相比不同之處是不具有寄存器寫入 抑制電路126。
圖12是流水線緩沖器365 — 367的一部分和抑制門638、 639的結(jié) 構(gòu)示例圖。
流水線緩沖器635—637與流水線緩沖器135 — 137同樣,具有在流 水級間按順序傳遞數(shù)據(jù)的功能,除此之外還將轉(zhuǎn)發(fā)對象的數(shù)據(jù)以及與該轉(zhuǎn) 發(fā)對象的數(shù)據(jù)相對應(yīng)的屬性信息巧傳遞到后級的流水線緩沖器。在指令譯 碼部610對上述的抑制指令進(jìn)行譯碼時(shí),該屬性信息"和WN信號或WE 信號一起由指令譯碼部610寫入到流水線緩沖器635,并被傳遞到后級的 流水線緩沖器636、 637。這樣,流水線緩沖器635—637的一部分與轉(zhuǎn) 發(fā)對象的數(shù)據(jù)相對應(yīng),構(gòu)成保持屬性信息S的屬性保持部641,并作為屬
性信息保持單元來發(fā)揮功能。
抑制門638、 639除具有抑制門138、 139的功能以外,還具有寄存 器寫入抑制電路126的功能。
抑制門638被輸入有FWD—MEM信號、屬性信息^S、以及WE信號, 所述FWD—MEM信號表示從MEM階段向ID階段的轉(zhuǎn)發(fā)工作,所述屬性 信息^S從流水線緩沖器(MEM)636輸出,所述WE信號由流水線緩沖器 (MEM)636輸出。關(guān)于這些輸入信號,由FWD—MEM信號斷言,且在屬 性信息^為1 (寄存器寫入抑制)的情況下,通過抑制門638將WE信號 屏蔽,從而可以抑制被轉(zhuǎn)發(fā)來的數(shù)據(jù)的寄存器寫入。
抑制門639被輸入有FWD—WB信號、屬性信息3、以及WE信號, 所述FWD—WB信號表示從WB階段向ID階段的轉(zhuǎn)發(fā)工作,所述屬性信 息S從流水線緩沖器(WB)637輸出,所述WE信號由流水線緩沖器 (WB)637輸出。關(guān)于這些輸入信號,由FWD—WB信號斷言,且在屬性信 息^S為1 (寄存器寫入抑制)的情況下,通過抑制門639將WE信號屏蔽, 從而可以抑制被轉(zhuǎn)發(fā)來的數(shù)據(jù)的寄存器寫入。這樣,抑制門638、 639構(gòu) 成寄存器寫入抑制電路626,并作為抑制寄存器寫入的控制單元發(fā)揮功能。
以下對具有如以上結(jié)構(gòu)的本實(shí)施例中的處理器的工作進(jìn)行說明,對于 與實(shí)施例l中的處理器相同之處省略說明,在此對不同之處進(jìn)行說明。 (WB階段)
在WB階段,寄存器文件寫入控制電路723按照指令譯碼信息,生成 針對寄存器文件740的寫入控制信號,并通過將作為流水線緩沖器 (WB)737的輸出的指令執(zhí)行結(jié)果寫入到寄存器文件740,從而數(shù)據(jù)保持部 142得以更新。
但是,在檢測出被執(zhí)行的指令為作為寄存器寫入抑制指令而被定義的 指令,且在MEM階段或WB階段,由后續(xù)的指令從FWD控制電路721 中檢測出由轉(zhuǎn)發(fā)指令執(zhí)行結(jié)果的工作進(jìn)行的讀取的情況下,寄存器文件寫 入控制電路723不生成針對寄存器文件740的寫入控制信號,并且也沒有 將作為流水線緩沖器(WB)737的輸出的指令執(zhí)行結(jié)果向寄存器文件740的 寫入,數(shù)據(jù)保持部142不被更新。
通過以上所述,本發(fā)明所涉及的實(shí)施例6中的處理器由于不具有屬性
信息保持部從而可以消減電路規(guī)模,且可以得到與實(shí)施例1的處理器相同 的效果。
接著,參照附圖對本實(shí)施例中的程序變換裝置進(jìn)行說明。
實(shí)施例6中的程序變換裝置也就是編譯裝置,與本實(shí)施例的處理器相 對應(yīng),解析程序結(jié)構(gòu),并將以往的指令變換為寄存器寫入抑制指令。
以下,在考慮以上這點(diǎn)的基礎(chǔ)上,對本發(fā)明的實(shí)施例6中的編譯裝置 進(jìn)行說明。
圖13示出了實(shí)施例6中的編譯裝置的結(jié)構(gòu)。
如該圖所示,本編譯裝置作為高級語言的C語言源代碼601由編譯程 序602被變換為匯編程序代碼(以往)603,匯編程序代碼(以往)603 進(jìn)一步由擴(kuò)展匯編程序804被變換為添加了屬性變更指令的匯編程序代碼 (添加新建指令)805。
以下對本編譯器的工作進(jìn)行說明。
首先,編譯程序602根據(jù)以往的編譯流,將作為高級語言的C語言源
代碼601變換為匯編程序代碼(以往)603。
作為一個(gè)例子,對有關(guān)匯編程序代碼(以往)603的內(nèi)容進(jìn)行說明。
第l行是表示轉(zhuǎn)移指令執(zhí)行時(shí)的接受轉(zhuǎn)移方的地址的標(biāo)記。
第2行將Reg并31的數(shù)據(jù)作為地址來進(jìn)行向存儲(chǔ)器的讀取,并將讀
取的數(shù)據(jù)存儲(chǔ)到Reg#0的加載指令。
第3行對Reg#0和Reg#l數(shù)據(jù)進(jìn)行加法運(yùn)算,并存儲(chǔ)到Reg#2的
加法指令。
第4行將Reg并31的數(shù)據(jù)作為地址,將Reg并2的數(shù)據(jù)向存儲(chǔ)器寫入 的存儲(chǔ)指令。
第5行使Reg#31和立即數(shù)1相加,并存儲(chǔ)到Reg#31的加法指令。 第6行在第i行進(jìn)行轉(zhuǎn)移(循環(huán)執(zhí)行)的轉(zhuǎn)移指令。 之后,由擴(kuò)展匯編程序804將匯編程序代碼(以往)603變換為將以 往的指令變換為寄存器寫入抑制指令的匯編程序代碼(添加新建指令) 805。在此,在擴(kuò)展匯編程序804判斷為,Reg#0被寫入在匯編程序代碼 (以往)603中的第2行,并僅以緊接在后邊的第3行的指令來讀取,將 給第2行的存儲(chǔ)器的讀取指令(ld)變換為附帶寄存器寫入抑制指令的指令
(ld*)。
圖14示出了圖13中的擴(kuò)展匯編程序的處理流程。該圖與圖9所示的 處理流程相比較不同之處是,取代步驟S86、 S87的是具有步驟S101。對 于相同之處省略說明,以下對不同之處進(jìn)行說明。
在S84、 S85的判斷中,參考指令被判斷為在生存區(qū)間僅存在一個(gè), 且成為轉(zhuǎn)發(fā)對象的情況下,由于抑制了由所述定義指令進(jìn)行的寄存器寫入, 因此,擴(kuò)展匯編程序804將定義指令從通常的指令變換為伴隨有寄存器寫 入的抑制的抑制指令(上述附帶有*的指令)(SIOI)。
通過以上所述,軟件開發(fā)人員可以不必特意地對屬性變更指令進(jìn)行編 程,就可以通過實(shí)施例6中的處理器來實(shí)現(xiàn)降低耗電量的效果。
并且,本發(fā)明不僅可以作為處理器來實(shí)現(xiàn),而且也可以作為控制處理 器的方法(以下稱為控制方法)等來實(shí)現(xiàn)。并且,也可以作為由處理器提 供的功能而組成的LSI、將處理器功能形成在FPGA、 CPLD等可編程邏輯 器件的IP芯片(以下稱為處理器芯片)、以及記錄處理器芯片的記錄介質(zhì) 來實(shí)現(xiàn)。
并且,上述的實(shí)施例是可以自由組合的。例如,將實(shí)施例5與實(shí)施例 6組合在一起也不會(huì)產(chǎn)生矛盾,可以得到效果。
本發(fā)明可作為搭載在移動(dòng)電話等上的處理器等來利用,尤其可以利用 于需要降低電量消耗的領(lǐng)域。
2權(quán)利要求
1.一種處理器,具有轉(zhuǎn)發(fā)功能,其特征在于,包括保持單元,保持與向寄存器的寫入抑制有關(guān)的屬性信息;以及控制單元,在發(fā)生了轉(zhuǎn)發(fā)時(shí),按照屬性信息來抑制被轉(zhuǎn)發(fā)的數(shù)據(jù)向寄存器的寫入。
全文摘要
本發(fā)明的處理器具有轉(zhuǎn)發(fā)功能,包括屬性信息保持部(141),保持與向寄存器的寫入抑制有關(guān)的屬性信息;以及寄存器寫入抑制電路(126),在發(fā)生轉(zhuǎn)發(fā)時(shí),按照屬性信息抑制被轉(zhuǎn)發(fā)的數(shù)據(jù)向寄存器的寫入。屬性信息保持部(141)至少與一個(gè)寄存器相對應(yīng)保持所述屬性信息。或所述屬性信息保持部是多個(gè)流水線緩沖器的一部分,將轉(zhuǎn)發(fā)對象的數(shù)據(jù)和所述屬性信息一起傳遞給后級的流水線緩沖器。
文檔編號G06F9/38GK101361039SQ200680051248
公開日2009年2月4日 申請日期2006年10月16日 優(yōu)先權(quán)日2006年1月20日
發(fā)明者川村信, 深井慎一郎 申請人:松下電器產(chǎn)業(yè)株式會(huì)社