專利名稱:減少處理器中寫入通信量的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般屬于數(shù)字計算電路領(lǐng)域,尤其涉及一種以處理器方式使用的指令執(zhí)行設(shè)備的方法和系統(tǒng)。
背景技術(shù):
通常微處理器設(shè)計動機(jī)的標(biāo)準(zhǔn)在于,例如,減少這些設(shè)備的體積及能量消耗,以及減少整個成本。特別指出,在這一點(diǎn)上,可實(shí)現(xiàn)同時并行的大量指令的指令執(zhí)行體系結(jié)構(gòu)的發(fā)展代表此項技術(shù)的發(fā)展。
現(xiàn)有的系統(tǒng)和方法提供上述類型的指令執(zhí)行體系結(jié)構(gòu),例如,微處理器指令設(shè)置體系(ISAs)。有代表性地,實(shí)現(xiàn)這些ISAs使用一種所謂的“管道”方法來覆蓋并發(fā)指令的不同執(zhí)行階段。
一個傳統(tǒng)的4-階段管道包括(1)取數(shù)據(jù),(2)解碼,(3)執(zhí)行以及(4)寫回。數(shù)據(jù)傳輸類型的指令如一加載指令,通常需要另外一個指令管道階段。
在該周期的第一階段,處理器從存儲器取得一條指令。所取得指令的地址存儲在稱為程序寄存器或PC的內(nèi)部寄存器。由于處理器正在等待存儲器對指令做出響應(yīng),因此PC增1。這意味著下一周期的取數(shù)據(jù)階段將取出存儲器中下一連續(xù)位置的指令(除非PC被該周期的較后階段修改)。
在解碼階段,處理器存儲另一稱為指令寄存器或IR的內(nèi)部寄存器返回的信息。上述IR將一條單獨(dú)的機(jī)器指令解碼為一二進(jìn)制數(shù)。處理器再將IR中的數(shù)值解碼以決定下一階段將執(zhí)行哪一操作。
在執(zhí)行階段,處理器執(zhí)行該指令。這一步驟通常需要更多的存儲操作。例如,該指令可指示處理器從存儲器中讀取兩個操作數(shù)(例如,將它們存入操作數(shù)寄存器),把它們相加以及將結(jié)果存儲在第三位置(該操作數(shù)及結(jié)果的目的地址均被編碼作為指令的一部分)。
在管道的寫回階段,管道中的上述計算結(jié)果被寫入(回收)一個寄存器文件中的一目的寄存器中。
在另一種已有的管道方法中,提供電路為允許操作數(shù)或結(jié)果值不經(jīng)過該寄存器文件。使用這種旁路電路,上述操作數(shù)及結(jié)果值在產(chǎn)生操作數(shù)指令被回收之前已經(jīng)可用于并發(fā)指令(舉例來說,寫回到寄存器文件)。
然而,這些傳統(tǒng)類型的管道有許多缺點(diǎn)。例如,傳統(tǒng)的管道方法通常在一寄存器文件種需要大量獨(dú)立的寄存器來充分執(zhí)行大量同時并行的指令。有代表性的,大寄存器文件占整個能量消耗的大部分。另外,每一條指令執(zhí)行時管道的每一階段都必須運(yùn)行。這些缺點(diǎn)依次體現(xiàn)在能量消耗和處理器的體積上。因此,管道中所需的管道階段和電路元件的數(shù)量的任何減少都在處理器中運(yùn)行指令執(zhí)行時可以引起(1)改善整個能量消耗以及(2)縮小處理器的整個體積。
發(fā)明內(nèi)容
本發(fā)明的一個目的是解決如上所述的包括處理器的指令執(zhí)行設(shè)備的局限性。
本發(fā)明的另一個目的是提供一種處理器指令設(shè)置體系來減少管道方法中寄存器文件的寫操作次數(shù);另外一個優(yōu)點(diǎn)是還可以減少處理器的整個能量消耗。另外,由于所需的寫端口的數(shù)量減少寄存器文件的尺寸或硅面積減少了。
處理器中寄存器寫入通信量的缺點(diǎn)被與本發(fā)明中提供的指令執(zhí)行設(shè)備的思想一致的設(shè)計所克服或減少。所述指令執(zhí)行設(shè)備包括一個產(chǎn)生一條指令的一個結(jié)果的指令管道,一個至少包括一個用于存儲結(jié)果的寫入端口的寄存器文件,一個旁路電路用于允許訪問結(jié)果,一個用于指出結(jié)果是否僅被另外一條指令所用的裝置,以及一個用于控制當(dāng)上述結(jié)果經(jīng)旁路電路存取以及被用于另外一條指令時防止該結(jié)果存入寫入端口的寄存器文件。
在本發(fā)明的一個實(shí)施例中,用來指出結(jié)果是否被另外一條指令所用的方法包括對每一條指令編碼。例如,每一條指令的“操作碼”所指定的一個所謂的“死數(shù)據(jù)”域被指出上述結(jié)果是否將僅被另外一條指令所用。
在本發(fā)明的另一個實(shí)施例中,用來表明第一結(jié)果是否僅被第二條指令所用的方法包括一個指令通道,用于決定在指令管道中的一條指令的結(jié)果以及該指令管道中另一條指令的另一結(jié)果是否被存儲在寄存器文件的同一個寫入端口。由于寄存器文件的寫入端口被一條已在指令管道中的隨后的指令“再使用”的,這表明第一個結(jié)果將僅被另外一條指令所用。
本發(fā)明的這些和另外的實(shí)施例將在隨后的介紹中詳細(xì)描述。
本發(fā)明的特點(diǎn)和優(yōu)勢將參考以下帶有附圖的最佳實(shí)施例的詳細(xì)描述來理解,其中附圖包括圖1給出本發(fā)明一個指令執(zhí)行設(shè)備的例子的一個框圖;圖2給出本發(fā)明另一個指令執(zhí)行設(shè)備的例子的一個框圖;以及圖3給出一個描述如圖1和2所示的減少寄存器寫入通信量的處理過程的流程圖。
實(shí)施例說明隨后詳細(xì)描述的一部分體現(xiàn)在計算機(jī)存儲器中數(shù)據(jù)位上的操作的符號表示法和算法或程序。這些算法描述以及表示法是一些數(shù)據(jù)處理技術(shù)的技術(shù)人員把他們的工作內(nèi)容傳達(dá)給其他也熟悉該技術(shù)的人員時所使用的方法。該算法通常設(shè)計為一系列有條理的步驟以得出所想要的結(jié)果。這些步驟需要物理量的物理操作。通常,但不是必須,這些物理量以電,磁或光信號的形式被存儲,傳輸,結(jié)合,比較或進(jìn)行其他操作。
如圖1所示,給出本發(fā)明一個指令執(zhí)行設(shè)備的例子的一個框圖。圖1只是就效果進(jìn)行了簡要說明,而適用于本發(fā)明的整個處理器環(huán)境會包括例如緩沖存儲器,RAM和ROM存儲器,編譯器或匯編程序等所有無需陳列于此的裝置。通常,指令執(zhí)行裝置10會采用一個從121到12n(下文中全部稱為“管道12”)的階段-n管道指令設(shè)置寄存器體系(ISA),一個傳統(tǒng)旁路電路14,一個寄存器文件16以及一個寄存器文件控制器18。
上述管道12包括一定數(shù)量的管道階段(例如,讀數(shù)據(jù),解碼,執(zhí)行和寫回)。然而,應(yīng)當(dāng)理解,本發(fā)明不只是限制于一種特殊的管道體系。例如,管道中的階段可以包括指令讀取,解碼,操作數(shù)讀取,ALU執(zhí)行,存儲器存取以及把操作結(jié)果寫回。另外,所述管道中的一系列階段能夠再細(xì)分。管道中的階段數(shù)量是一種能夠根據(jù)對類似指令的專門闡述而相應(yīng)改變的體系結(jié)構(gòu)特征。
寄存器文件16包括至少一個用于存儲數(shù)據(jù)可設(shè)定地址的目的寫入端口20。本領(lǐng)域普通技術(shù)人員可以理解,所述寄存器文件可以是任何能夠存儲及允許存取記錄/數(shù)據(jù)的傳統(tǒng)的數(shù)據(jù)庫/索引存儲裝置。
寄存器文件控制器18包括許多用于控制把寫數(shù)據(jù)寫回寄存器文件16操作的邏輯,控制,管理,及傳輸功能。寄存器文件控制器18還包括如圖3描述的操作程序。正如以下詳述,這些程序的運(yùn)行實(shí)現(xiàn)了減少寄存器文件寫操作數(shù)到管道中的次數(shù)所必需的功能。
指令可分為如下三種主要類型運(yùn)算/邏輯,數(shù)據(jù)傳輸,及控制。運(yùn)算和邏輯指令提供一種或兩個變量的簡單的功能,例如相加,相乘或邏輯AND。
每一個階段的時間取決于處理器的內(nèi)部結(jié)構(gòu)和所執(zhí)行指令的復(fù)雜性。調(diào)節(jié)操作的時間片單元被稱為時鐘周期。指示處理器內(nèi)部的操作的邏輯被外部時鐘例如可以是一個在選定周期產(chǎn)生方波的電路來控制。執(zhí)行一個操作數(shù)所需的時鐘周期的數(shù)量決定它將需要的時間總和。
我曾提到大量的指令產(chǎn)生一個結(jié)果僅被同一算法中隨后的一條指令使用,(我將把在前指令稱為“產(chǎn)生者”在后指令稱為“消耗者”)。另外,在SPEC基準(zhǔn)的一個寄存器數(shù)據(jù)分析中揭露了70%的整數(shù)結(jié)果和80-99%的浮點(diǎn)結(jié)果僅被使用一次,參見由M.Franklin等人撰寫的一篇文章,題為“Register Traffic Analysis for Streamlining Inter-Operation Communication in Fine Grain Parallel Processors”,刊登于1992年12月微型體系結(jié)構(gòu)國際討論會年刊第25期(MICRO-25),第236頁至245頁。此外,大部分情況下,產(chǎn)生者回收之前消耗者已進(jìn)入管道結(jié)構(gòu)。對于特殊類型的控制器這種情況更多,例如超標(biāo)量體系結(jié)構(gòu)和VLIM處理器。因此,消耗者除了寄存器文件之外還可通過某種方法獲得結(jié)果值,例如,旁路電路。然而,所述結(jié)果仍然寫回寄存器文件。
更重要的是,我已認(rèn)識到這種情況下的產(chǎn)生者的結(jié)果值不必須寫回到寄存器文件,因為它不將被任何其它消耗者使用。一旦產(chǎn)生者的結(jié)果值不被消耗者使用就變?yōu)橐弧八罃?shù)據(jù)”。因此,依照本發(fā)明的一方面,寄存器文件控制器16決定一特殊指令是否應(yīng)寫回階段-n例如寫回階段或其他階段中的寄存器文件16。
如圖1所示,每一條指令的顯式編碼表明特殊指令的結(jié)果值是否將僅被另一個消耗者所用(或者將僅被管道中的其它消耗者所用)。編碼指令中被編譯器或者匯編程序(未示出)設(shè)置或清除的一個專用的“死數(shù)據(jù)”位(一指令中所謂的“操作碼”)將依照其消耗程度來使用。如果所述死數(shù)據(jù)位被設(shè)置,則該結(jié)果值不被寫回到管道12的階段-n中的寄存器文件16。特殊情況,與相鄰指令的指令-標(biāo)識符相同,所述死數(shù)據(jù)位提供給寄存器文件控制器18,通過一寫使能信號依次控制寄存器文件16寫回或不寫回結(jié)果值。另一方面,如果一專用位是無效的,則只有一些被分配可選操作碼以示出消耗程度的有用指令(例如,ADD和LOAD)可被選擇。
如圖2所示另一實(shí)施例,每一條指令的隱式編碼表明特殊指令的結(jié)果值是否將僅被一消耗者所用(或者將僅被管道中的其他消耗著所用)。特別地,管道12決定管道中另一指令是否將用與管道中的一隨后指令相同的目的地址(例如寄存器文件16中的寫端口20)。這能通過許多方法決定。例如,如果階段-3中的指令結(jié)果值被指定目的地址為寄存器文件16中的寫端口20并且階段-1121中的指令的結(jié)果值也被指定寄存器文件16中的相同的目的地址,則階段-3中指令的結(jié)果值會“活”在階段-2,否則將“死”于階段-1,因為其目的地址將被管道中另一條指令再利用。換言之,只有一個消耗者使用該結(jié)果值。另一方面,這種方法也用于多于一個消耗者(管道中的)使用該結(jié)果值的情況。例如,如果階段-n 12n中的指令的結(jié)果值被指定目的地址為寄存器文件16中的寫端口20的目的地址并且階段-1121中的指令的結(jié)果值也被指定寄存器文件16中的相同的目的地址,則階段-n中指令的結(jié)果值會通過階段n-1“活”在階段-2,否則將“死”于階段-1。以這種方式結(jié)果值“活”狀態(tài)時可被許多消耗者使用。因此,一旦結(jié)果值“死”它就被寫回到寄存器文件16中。
在圖2所示的實(shí)施例中,傳統(tǒng)的門和邏輯電路22,例如OR門,如圖2所示,用于把死數(shù)據(jù)位提供給寄存器文件控制器18。指令的指令-標(biāo)識符也被提供給寄存器文件控制器18。然而,就像本技術(shù)領(lǐng)域所公知的那樣,由于所述處理器已經(jīng)包括了一個檢測寄存器再用的結(jié)構(gòu),支持重命名寄存器的微型-體系結(jié)構(gòu)不需要門和邏輯電路。
圖3給出運(yùn)行于圖1和2中的裝置來實(shí)現(xiàn)寄存器寫入通信量的減少的一流程圖。簡單來說,圖1中實(shí)施例用于描述本發(fā)明原理的操作。然而,可以理解,圖3中所描述步驟同樣適用于圖2中的實(shí)施例。
圖1和3中還同時提到,本發(fā)明預(yù)先設(shè)置的處理過程于圖3中的步驟300開始啟動,即當(dāng)一條指令進(jìn)入管道12時。在步驟302,寄存器文件控制器18決定所述死數(shù)據(jù)位是否已經(jīng)被設(shè)置,如上所述。如果所述死數(shù)據(jù)位沒有被設(shè)置,則處理過程繼續(xù)在傳統(tǒng)管道方式下運(yùn)行,由步驟304實(shí)現(xiàn)。如果所述死數(shù)據(jù)位已被設(shè)置,所述寄存器文件控制器18,在步驟306中,決定特殊指令的結(jié)果值是否已經(jīng)被管道12中另一條指令所使用,例如通過所述旁路電路。如果該決定是否定的,處理過程進(jìn)行到步驟304,并繼續(xù)運(yùn)行于傳統(tǒng)管道方式下。如果該決定是肯定的,處理過程進(jìn)行到步驟308。在步驟308中,所述寄存器文件控制器決定相應(yīng)于從管道12接受到的指令id的所述結(jié)果值并棄置它。例如,所述寄存器文件控制器18不允許所述寫回階段把結(jié)果值存入寄存器文件16中的一寫入端口(或目的寄存器)。
接下來只是對本發(fā)明的原則進(jìn)行解釋。本領(lǐng)域普通技術(shù)人員設(shè)計出的這里并沒有進(jìn)行明確的描述的各種情況,均包含在本發(fā)明原則中及并落入本發(fā)明的思想及保護(hù)范圍之內(nèi)。另外,這里所述全部的本發(fā)明中的原理和實(shí)施例,像其中的具體實(shí)施例一樣,其中包含類似的結(jié)構(gòu)和功能。此外,這些類似物包括已經(jīng)熟知的及在將來完善的類似物,即,能支持相同功能但不同結(jié)構(gòu)的任何元件。
這里的權(quán)利要求中,任何元件作為支持一特殊功能的裝置希望包含了能實(shí)現(xiàn)所述功能的所有方式,如a)完成該功能的所有電路元件的結(jié)合b)包括固件,微代碼或類似的結(jié)合適當(dāng)電路來運(yùn)行完成所述功能的軟件的任何形式軟件。權(quán)利要求所定義的本發(fā)明中,各種形式的方法實(shí)現(xiàn)的功能與權(quán)利要求所要求的方式結(jié)合在一起。因此,申請人對能支持上述功能的任何方法和此處所給出的方法一視同仁。
權(quán)利要求
1.一種用于一個處理器的指令執(zhí)行設(shè)備,該指令執(zhí)行設(shè)備包括一個指令管道(12),用于產(chǎn)生一個第一條指令的一個第一結(jié)果;一個與所述指令管道相連的寄存器文件(16),該寄存器文件包括至少一個寫入端口(20)用于存儲所述第一個結(jié)果;一個與所述指令管道(12)相連的旁路電路(14),該旁路電路(14)允許存取所述第一結(jié)果;一個用于指示所述指令管道中所述第一結(jié)果是否被一個第二條指令所用的裝置;以及一個與所述指令管道(12)和寄存器文件(16)相連的寄存器文件控制器(18),該寄存器文件控制器(18)用于當(dāng)所述第一結(jié)果已由所述旁路電路(18)存取以及已被管道(12)中的所述第二條指令所用時防止所述第一結(jié)果存入所述寫入端口(20)。
2.根據(jù)權(quán)利要求1所述的指令執(zhí)行設(shè)備,其特征在于,所述指令管道(12)有多個階段。
3.根據(jù)權(quán)利要求2所述的指令執(zhí)行設(shè)備,其特征在于,所述指令管道(12)在所述多個階段中處理多條指令。
4.根據(jù)權(quán)利要求1所述的指令執(zhí)行設(shè)備,其特征在于,用于指示所述第一結(jié)果是否僅被所述第二條指令所用的裝置包括編碼所述第一條指令以指示所述第一結(jié)果是否將僅被所述第二條指令所用。
5.根據(jù)權(quán)利要求4所述的指令執(zhí)行設(shè)備,其特征在于,編碼所述第一條指令包括在所述第一條指令的操作碼中規(guī)定一個域來指出所述第一結(jié)果是否將僅被所述第二條指令所用。
6.根據(jù)權(quán)利要求5所述的指令執(zhí)行設(shè)備,其特征在于,每一條指令均被編碼以指示其各自的結(jié)果是否僅被另外一條指令所用。
7.根據(jù)權(quán)利要求3所述的指令執(zhí)行設(shè)備,其特征在于,用于指示所述第一結(jié)果是否僅被所述第二條指令所用的裝置包括所述指令管道決定所述指令管道中的所述第一條指令的所述第一結(jié)果和所述第二條指令的一個第二結(jié)果是否被指定存儲到寄存器文件中的所述第一寫入端口中。
8.根據(jù)權(quán)利要求7所述的指令執(zhí)行設(shè)備,其特征在于,用于指示所述第一結(jié)果是否僅被所述第二條指令所用的裝置還包括門和邏輯電路(20)
9.一種在處理器中執(zhí)行一條指令的方法,該方法包括以下步驟用一個指令管道從一個第一條指令產(chǎn)生一個第一結(jié)果;用旁路電路(14)允許對所述第一結(jié)果進(jìn)行存取;決定所述第一結(jié)果是否僅被所述指令管道中的一個第二條指令所用;防止當(dāng)所述第一結(jié)果已存取以及已被所述第二條指令所用時所述第一結(jié)果存入寄存器文件(16)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述決定步驟包括編碼所述第一條指令來指示所述第一結(jié)果是否將僅被所述第二條指令所用。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述決定步驟包括所述指令管道(12)決定所述指令管道(12)中的所述第一條指令的所述第一結(jié)果和所述第二條指令的一個第二結(jié)果在寄存器文件(16)中是否有相同的存儲地址。
12.一種包括處理一條指令的代碼的機(jī)讀存儲器介質(zhì),該介質(zhì)包括指令管道代碼,用于從一個第一條指令產(chǎn)生一個第一結(jié)果;所述第一結(jié)果的存取允許代碼,當(dāng)所述第一條指令在所述指令管道中時;指示代碼,用于決定所述第一結(jié)果是否被所述指令管道中的一個第二條指令所用;以及防止代碼,用于防止當(dāng)所述第一結(jié)果已存取以及已被所述第二條指令所用時所述第一結(jié)果存入。
13.根據(jù)權(quán)利要求12所述的存儲介質(zhì),其特征在于,所述指示代碼包括編碼所述第一條指令來指出所述第一結(jié)果是否將僅被所述第二條指令所用。
14.根據(jù)權(quán)利要求12所述的存儲介質(zhì),其特征在于,所述指示代碼包括所述指令管道決定所述指令管道中的所述第一條指令的所述第一結(jié)果和所述第二條指令的一個第二結(jié)果在寄存器文件中是否有相同的存儲地址。
全文摘要
公開了一種用于減少處理器中寫入通信量的指令執(zhí)行設(shè)備和方法。該指令執(zhí)行設(shè)備包括一個指令管道,用于產(chǎn)生一條指令的一個結(jié)果,一個寄存器文件包括至少一個寫入端口用于存儲所述結(jié)果,一個旁路電路允許存取所述結(jié)果,一個用于決定所述結(jié)果是否僅另一條指令所用的裝置,以及一個寄存器文件控制器,用于當(dāng)所述結(jié)果已由所述旁路電路存取以及已僅被另一條指令所用時防止所述結(jié)果存入所述寫入端口。
文檔編號G06F9/38GK1363063SQ01800216
公開日2002年8月7日 申請日期2001年1月18日 優(yōu)先權(quán)日2000年2月16日
發(fā)明者P·斯特拉維爾斯 申請人:皇家菲利浦電子有限公司