專利名稱:帶有流水線處理電路的信號處理器及其方法
技術領域:
本發(fā)明涉及帶有流水線電路的信號處理器及其方法。
安裝在數(shù)字信號處理器(DSP)內(nèi)的精簡指令集計算機(RISC)等通常如下所述那樣根據(jù)程序進行信號處理。也就是說,一個處理器通過順序地執(zhí)行下列指令步驟(階段)來對程序中的各條指令進行信號處理指令讀取步驟(IF步驟),它用于從指令存儲器中取出指令;指令譯碼步驟(ID步驟),它用于對取出的指令進行譯碼;執(zhí)行步驟(EX步驟),它用于執(zhí)行已譯碼的指令;存儲器訪問步驟(MEM步驟),它用于訪問存儲器;以及,寫入步驟(WB步驟),它用于將上述訪問所獲得的結果寫入存儲器。
在這種情況下,在把用于讀取指令的時間調(diào)整到用于前一指令的WB步驟結束之后時間時,對各個IF步驟、ID步驟、EX步驟、MEM步驟以及WB步驟來說,從開始讀取前一指令的時間到用于下一指令的WB步驟結束時間需要花費雙倍的總時間。
圖1是相關技術的計算機處理器1的框圖。
如圖1所示,處理器1包括一IF模塊2、一寄存器3、一ID模塊4、一寄存器5、一EX模塊6、一寄存器7、一MEM模塊8、一寄存器9、一WB模塊10以及一控制器11。
IF模塊2、ID模塊4、EX模塊6、MEM模塊8,WB模塊10分別執(zhí)行IF步驟、ID步驟、EX步驟、EX步驟、MEM步驟以及WB步驟。
這里,在處理器1中,為了增加單位時間的處理量,通常采用流水線處理,這種處理并行地執(zhí)行上述不同步驟的處理。
在流水線處理中,如圖2所示,在一個周期內(nèi)完成所有步驟的處理,就每個周期而言,指令順序地輸入給處理器,并且,并行地執(zhí)行有IF步驟、ID步驟、EX步驟、MEM步驟和WB步驟的不同指令。
具體地說,在圖1所示的處理器1中,在一個周期間隔將指令n至n+4輸入給處理器1。在周期20中,并行地執(zhí)行指令n的WB步驟、指令n+1的MEM步驟、指令n+2的EX步驟、指令n+3的IF步驟以及指令n+4的IF步驟。
通過這種方式,在使用五步流水線處理時,與不用流水線處理的情況相比,每個周期的處理量可增加四倍。
盡管參照使用五步流水線處理的實例說明了上述處理器1,但是,也可以對指令的處理進一步細分以簡化每一步驟中的處理,從而提高時鐘頻率并增加單位時間的處理量。
如上所述,在處理器1中,如圖2所示,在開始指令n的EX步驟時,就開始指令n+1的ID步驟和指令n+2的IF步驟。
當指令n是一轉(zhuǎn)移指令時,會在ID步驟中識別出指令n是否是轉(zhuǎn)移指令。但是,僅在處理EX步驟中的指令n時才判斷是否轉(zhuǎn)移,也即是否滿足轉(zhuǎn)移條件。因此,在確定了指令n是一轉(zhuǎn)移指令時,已經(jīng)取出了指令n之后的指令n+1和n+2。
這時,如果指令n+1和n+2繼續(xù)進入流水線處理,就會終止執(zhí)行用于非轉(zhuǎn)移目的地的指令(緊接著轉(zhuǎn)移指令之后的指令),從而不能正確地執(zhí)行。
為了避免上述情況,例如,如圖3所示,當在EX步驟中確定出一條指令是轉(zhuǎn)移指令時,就中斷業(yè)已取出的后續(xù)指令n+1和n+2,并且,順序地讀取下一個周期的轉(zhuǎn)移目的地處的指令m和m+1。
但是,中斷業(yè)已取出的指令具有降低處理效率的缺點。例如,在圖3所示的情況中,轉(zhuǎn)移會導致兩個周期的延時。
為了克服上述現(xiàn)象,使用了設置轉(zhuǎn)移指令之后的指令的“延時轉(zhuǎn)移”技術,因此,將以與判斷轉(zhuǎn)移指令是否存在無關的方式執(zhí)行的指令放置在緊接著轉(zhuǎn)移指令之后,并且,延時執(zhí)行那些與是否有轉(zhuǎn)移指令有關的指令。這里,轉(zhuǎn)移指令之后的指令中以與轉(zhuǎn)移無關的方式執(zhí)行的一組指令稱為“延時段(delay slot)”。
在使用上述延時轉(zhuǎn)移技術時,如果延時段中的指令數(shù)量大于取出之后因轉(zhuǎn)移而中斷的指令數(shù)量,則可以把延時段放置于緊接在轉(zhuǎn)移指令之后。如果不是這種情況,必須將一指示系統(tǒng)什么都不做的“nop”(空操作)指令放置于緊接在轉(zhuǎn)移指令之后。因此,存在處理效率下降的缺點。
還有諸如在ID步驟中識別出轉(zhuǎn)移指令時使流水線停止、僅在轉(zhuǎn)移判斷之后取出一轉(zhuǎn)移目的地或一非轉(zhuǎn)移目的地指令、然后使流水線重新開始之類的其它方法。
但是,不論使用什么方法,都不可能在執(zhí)行轉(zhuǎn)移指令(轉(zhuǎn)移判斷)之前指定取下一條指令,所以,流水線會停止,直至指定讀取的指令,從而處理效率會下降。
因此,使用流水線處理的處理器1具有由轉(zhuǎn)移指令所導致的“轉(zhuǎn)移損失”。不可能減少這種損失以便有更好的效率。
為了盡可能地減少這種轉(zhuǎn)移損失,存在有事先預測轉(zhuǎn)移的方法。但是,如果預測錯誤,則會導致較大的損失。還有,安裝預測電路具有增加處理器尺寸的缺點。
另一種方法是在ID步驟中進行轉(zhuǎn)移判斷并立即進行轉(zhuǎn)移。但是,如果轉(zhuǎn)移指令之前的指令(在EX步驟中)正在處理上述判斷所涉及的數(shù)據(jù),則會出現(xiàn)臨界的路徑,難以進行高速安裝。
本發(fā)明考慮到了上述相關技術。本發(fā)明的一個目的是提供一種用于流水線處理的信號處理器及其方法,所述信號處理器及方法能有效地抑制因轉(zhuǎn)移指令所導致的處理效率下降。
依照本發(fā)明的第一個方面,提供了一種信號處理器,它包括用于存儲指令的裝置;用于從上述指令存儲裝置中取出指令的裝置;用于對取出的指令進行譯碼的裝置;用于執(zhí)行上述譯碼后的指令的裝置;一存儲器;用于訪問上述存儲器的裝置;用于將所執(zhí)行的結果寫入被訪問的存儲器的裝置;以及,用于對指令讀取裝置、指令譯碼裝置、指令執(zhí)行裝置、存儲器訪問裝置以及寫入裝置中的操作進行流水線處理的裝置。所述指令讀取裝置包括一程序計數(shù)器,它以順序的方式指定指令存儲裝置中的地址;一地址存儲部分,它在譯碼后的指令是轉(zhuǎn)移指令時存儲一地址,該地址是被包括在轉(zhuǎn)移指令中的轉(zhuǎn)移目的地的地址;一指令存儲部分,它帶有多個其中存儲有指令的可同時訪問的存儲區(qū);一讀取部分,它可在譯碼后的指令是轉(zhuǎn)移指令時同時取出存儲在指令存儲裝置內(nèi)第一地址處的第一指令以及存儲在指令存儲裝置內(nèi)第二地址處的第二指令,所述第一地址由程序計數(shù)器來指示,所述第二地址由存儲在地址存儲裝置內(nèi)的地址來指示;以及,一選擇部分,它用于根據(jù)對轉(zhuǎn)移指令中的轉(zhuǎn)移條件的判斷而選擇同時取出的第一和第二指令中的一個并將該指令輸出給指令譯碼裝置。
最佳的是,指令存儲部分將一轉(zhuǎn)移指令的轉(zhuǎn)移目的地的指令以及該轉(zhuǎn)移指令的非轉(zhuǎn)移目的地的另一條指令存儲到不同的存儲區(qū)內(nèi)。
更佳的是,指令存儲部分將對應于存儲區(qū)數(shù)目的多個順序且連續(xù)處理的指令存儲到不同的存儲區(qū)。
最佳的是,指令存儲部分包括一單端口式存儲器,它具有一個單個的讀出端口。
最佳的是,指令讀取裝置還包括一標志存儲部分,該部分存儲表示存儲在地址存儲部分內(nèi)的地址合法性的標志,并且,該指令讀取裝置僅在存儲在標志存儲部分內(nèi)的標志表示地址是合法的時才取出存儲在指令存儲部分內(nèi)的地址,該地址由存儲在地址存儲部分內(nèi)的地址來指示。
最佳的是,指令讀取裝置內(nèi)的讀取部分根據(jù)地址的第一部分來指定存儲區(qū),并根據(jù)地址的第二部分指定存儲區(qū)內(nèi)的地址。
最佳的是,指令譯碼裝置包括一譯碼部分,它用于對在選擇部分處選定的指令進行譯碼并生成一控制信號以便執(zhí)行譯碼后的指令;以及,還包括一數(shù)據(jù)存儲部分,它存儲指令執(zhí)行裝置中所使用的數(shù)據(jù)。
最佳的是,指令執(zhí)行裝置包括一算法與邏輯處理部分以及一轉(zhuǎn)移判斷部分,該部分用于判斷轉(zhuǎn)移指令的轉(zhuǎn)移條件。
最佳的是,寫入裝置將指令執(zhí)行裝置的處理結果存儲進存儲器和指令譯碼裝置中的數(shù)據(jù)存儲部分。
更佳的是,所述信號處理器包括一單個指令讀取裝置、一單個指令譯碼裝置、一單個指令執(zhí)行裝置、一單個指令訪問裝置以及一單個寫入裝置。
依照本發(fā)明的第二個方面,提供了處理信號的方法,該方法包括下列步驟從指令存儲裝置中讀取出一條指令;對取出的指令進行譯碼;執(zhí)行譯碼后的指令;訪問存儲器;將執(zhí)行后的結果寫入所訪問的存儲器;以及,以流水線的方式處理所說的讀取、譯碼、執(zhí)行、訪問和寫入操作,所述讀取步驟包括下列步驟順序地指定指令存儲裝置中的地址以指明一非轉(zhuǎn)移目的地指令的地址;在譯碼后的指令是轉(zhuǎn)移指令時存儲一地址,該地址是被包括在轉(zhuǎn)移指令中的轉(zhuǎn)移目的地地址;將轉(zhuǎn)移目的地的指令和非轉(zhuǎn)移目的地的另一條指令存入指令存儲裝置中不同的可同時訪問的存儲區(qū)內(nèi);當譯碼后的指令是一轉(zhuǎn)移指令時,同時讀取存儲在指令存儲裝置中第一地址處的第一指令和存儲在指令存儲裝置中第二地址處的第二指令,所述第一地址由程序計數(shù)器來指示,所述第二地址由存儲在地址存儲裝置中的地址來指示;根據(jù)對轉(zhuǎn)移指令的轉(zhuǎn)移條件的判斷而選擇出同時取出的第一和第二指令中的一個;以及,對所選定的取出指令進行譯碼。
以下參照附圖詳細說明本發(fā)明的上述和其它目的及特點,在附圖中圖1是相關技術的處理器的框圖;圖2是圖1所示處理器中流水線處理的示意圖;圖3是在圖2的流水線處理中執(zhí)行一轉(zhuǎn)移指令時的處理過程的示意圖;圖4是本發(fā)明一個實施例的處理器的框圖;圖5是圖4所示指令存儲器的框圖;圖6是圖5中存儲器內(nèi)指令存儲格式的示意圖;以及圖7是在圖4所示的處理器中通過流水線處理來執(zhí)行一轉(zhuǎn)移指令時的處理過程的示意圖。
以下說明本發(fā)明一個實施例的處理器。
圖4是本發(fā)明實施例的處理器41的框圖。
如圖4所示,處理器41例如包括一模塊42、一寄存器43、ID模塊44、寄存器45、EX模塊46、寄存器47、MEM模塊48、寄存器49、WB模塊50以及控制器51。
IF模塊42、ID模塊44、EX模塊46、MEM模塊48以及WB模塊50分別執(zhí)行IF步驟、ID步驟,EX步驟、MEM步驟和WB步驟。
處理器41執(zhí)行與上述處理器1相同的流水線處理。但以不同于處理器1的方式處理轉(zhuǎn)移指令。也就是說,在處理器41中,以與圖1中處理器1相同的方式在一個周期內(nèi)完成對各個步驟的處理,指令在每個周期內(nèi)順序地輸入給處理器,通過流水線處理并行地執(zhí)行用于五個指令的IF步驟、ID步驟、EX步驟和MEM步驟。
但是,與處理器1不同,處理器41在ID模塊中對指令進行譯碼,并在把一指令識別為轉(zhuǎn)移指令時判斷下一個周期的EX模塊46中是否存在一個轉(zhuǎn)移,且在IF模塊42中同時取出用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令。在隨后的周期中,根據(jù)轉(zhuǎn)移判斷的結果選定取出的用于轉(zhuǎn)移目的地或非轉(zhuǎn)移目的地的指令中的一個,并在ID模塊44中對選出的指令進行譯碼。
以下詳細說明圖4所示的處理器41的結構單元。
首先說明IF模塊42。
如圖4所示,IF模塊42例如包括一程序計數(shù)器60、指令存儲器61以及用作一個選擇單元的多路轉(zhuǎn)換器62。
程序計數(shù)器60根據(jù)來自控制器51的控制信號S51a指示下次要讀取的指令在指令存儲器61內(nèi)的地址并在每一個周期均順序地使該地址增一。
圖5是指令存儲器61的框圖。
如圖5所示,指令存儲器61包括用作指令存儲單元的存儲器80、一標志寄存器81、地址寄存器82和83、訪問控制單元841至848以及多路轉(zhuǎn)換器86和87。
存儲器80是一單端口存儲器,它具有八個存儲單元例如801至88,可同時訪問這八個存儲單元。通過把一單端口存儲器用作存儲器80,可以減小設備的尺寸并降低成本。
最佳的是,將存儲器80的存儲單元的數(shù)量設置為2的冪。
如圖6所示,程序中的指令1、2、3、4、5、6、7和8順序地存儲在存儲單元801、802、803、804、805、806、807和808中,然后,指令9……順序地存儲于存儲單元801到808。因此,在一條轉(zhuǎn)移指令出現(xiàn)時,用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令被存儲到同一存儲單元內(nèi)的概率為八分之一。當用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令存儲在同一存儲單元內(nèi)時,不可能同時取出這些指令。當這種情況出現(xiàn)時,在不改變程序語義(意義)的情況下用另一條指令來替換這些指令中的一個。如果這種替換是不可能的,則將“nop”(空操作)指令插入移位指令,因此,用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令不會到達同一存儲單元。
結果,在轉(zhuǎn)移指令出現(xiàn)時,可以將用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令存入不同的存儲單元并能同時讀出這些指令。
當存儲器80具有如前所述那樣的8個存儲單元結構時,存儲在地址寄存器82和83中的地址的較低3位表示存儲單元號,較高位表示各存儲單元中的地址。
當存儲在地址寄存器82或83中的地址的較低三位分別是000,001,010,011,100,101,110和111時,存儲單元801至808被啟動。
地址寄存器82將地址存入存儲器80,存儲器80則存儲有由程序計數(shù)器60所指示的用于非轉(zhuǎn)移目的地的指令。
地址寄存器83將地址存入存儲器80,存儲器80則存儲有來自ID模塊44的用于轉(zhuǎn)移目的地輸入的指令。
因此,IF模塊42有兩個地址寄存器,它們用于同時訪問存儲器80的兩個存儲單元。
標志寄存器81存儲有一標志,它指示存儲在地址寄存器83內(nèi)的轉(zhuǎn)移目的地的地址是否合法。標志寄存器81在來自ID模塊44的轉(zhuǎn)移目的地的地址存入地址寄存器83時存儲有標志〔1〕,而在其它情況下則存儲有標志〔0〕。
多路轉(zhuǎn)換器851至858例如根據(jù)來自控制器51的控制信號S51a來選定存儲在地址寄存器82內(nèi)的用于非轉(zhuǎn)移目的地的指令地址和存儲在地址寄存器83內(nèi)的用于轉(zhuǎn)移目的地的指令地址這二者中的一個,并將它們輸出以便分別訪問控制單元841至848。
當來自多路轉(zhuǎn)換器851至858的地址的較低三位表示相應的存儲單元801至808時,訪問控制單元841至848會根據(jù)所說的來自多路轉(zhuǎn)換器851到858的地址用較高位分別從存儲單元801至808中讀出指令。
當存儲在標志寄存器中的標志表示〔1〕時,訪問控制單元841至848不會用存儲在地址寄存器83中的地址對存儲單元801至808進行讀操作。
多路轉(zhuǎn)換器86從自訪問控制單元841至848中讀取的結果之中選定從由存儲在地址寄存器82中的地址的較低三位所指定的存儲單元801至808中讀出的結果,并將選定的轉(zhuǎn)移目的地的指令S86輸出給多路轉(zhuǎn)換器82。
多路轉(zhuǎn)換器86從自訪問控制單元841至848中讀取的結果之中選定從由存儲在地址寄存器83中的地址的較低三位所指定的存儲單元801至808中讀出的結果,并將選定的轉(zhuǎn)移目的地的指令S87輸出給多路轉(zhuǎn)換器62。
在IF模塊42中,同時讀出由存儲在地址寄存器82中的地址所表示的非轉(zhuǎn)移目的地的指令地址和由存儲在地址寄存器82中的地址所表示的轉(zhuǎn)移目的地的指令地址。這時,轉(zhuǎn)移指令處于EX步驟并判斷是否進行轉(zhuǎn)移。在判斷周期結束之前,轉(zhuǎn)移判斷S46的結果從EX模塊46返回至多路轉(zhuǎn)換器62。因此,根據(jù)上述結果在多路轉(zhuǎn)換器62處選定已經(jīng)同時讀出的用于轉(zhuǎn)移目的地的指令S68或用于非轉(zhuǎn)移目的地的指令S87這二者中的一個,并且,結束IF模塊中處理。所選定的指令S62在鎖存于圖4所示寄存器43之后被輸出給ID模塊44。
以下說明圖4所示的ID模塊44。
如圖4所示,ID模塊44具有一譯碼器65和一寄存器文件66。
譯碼器65根據(jù)控制信號S51b對經(jīng)由寄存器43自IF模塊42輸入的指令S62進行譯碼、生成多個用于執(zhí)行指令的控制信號并將控制信號S65輸出給控制器51。同時,譯碼器訪問寄存器文件66并讀取要用于在EX模塊46中進行處理的數(shù)據(jù)。讀出的數(shù)據(jù)S66鎖存在寄存器45內(nèi)并輸出給隨后的EX模塊46。
還有,當對來自寄存器43的指令S62的譯碼結果表示該指令是一轉(zhuǎn)移指令時,譯碼器65就將轉(zhuǎn)移目的地的地址S44a輸出給圖5所示IF模塊42中的地址寄存器83以便進行存儲,并將標志〔1〕存入模塊42中的標志寄存器81。
結果,在隨后的周期中,對EX模塊46中的轉(zhuǎn)移指令進行轉(zhuǎn)移判斷。同時,在IF模塊42中同時讀取出用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令。
以下說明圖4所示的EX模塊46。
EX模塊46包括一ALU(算法與邏輯單元)67,它用于執(zhí)行算法處理;一轉(zhuǎn)移判斷電路68;以及,一未示出的地址生成電路。
ALU67根據(jù)控制信號S51c按照來自控制器51的譯碼結果用數(shù)據(jù)S66進行信號處理。
所述地址生成電路生成數(shù)據(jù)存儲器69內(nèi)的地址,而數(shù)據(jù)存儲器69則存儲有ALU67中處理結果的數(shù)據(jù)。
請注意,就算法處理而言,ALU68使用存儲在數(shù)據(jù)存儲器69中并通過訪問寄存器文件66輸出給寄存器文件66的數(shù)據(jù)。
還有,ALU67通過寄存器文件66將算法處理的結果存入存儲器69。
EX模塊46將ALU68所處理的算法結果以及地址生成電路所生成的地址通過寄存器47輸出給MEM模塊48。
當在ALU67中執(zhí)行的指令是轉(zhuǎn)移指令時,轉(zhuǎn)移判斷電路68就將指示進行轉(zhuǎn)移的轉(zhuǎn)移判斷結果S46輸出給IF模塊42。同時,對轉(zhuǎn)移條件求值,從而進行轉(zhuǎn)移判斷。IF模塊42根據(jù)轉(zhuǎn)移判斷的結果S46選擇在圖5所示的多路轉(zhuǎn)換器62處同時取出的用于轉(zhuǎn)移目的地的指令或用于非轉(zhuǎn)移目的地的指令這兩者之中的一個。
以下說明MEM模塊48。
MEM模塊48具有數(shù)據(jù)存儲器69和未示出的控制電路。
在接收到寫操作指令時,MEM模塊48根據(jù)來自控制器51的控制信號S51d將自EX模塊46輸入的算法處理結果數(shù)據(jù)存至(寫至)數(shù)據(jù)存儲器69中通過寄存器47自EX模塊46輸入的地址。
在接收到讀操作指令時,MEM模塊根據(jù)來自控制器51的控制信號S51d從數(shù)據(jù)存儲器69中通過寄存器47自EX模塊46輸入的地址讀取數(shù)據(jù)。
在接收到不需要訪問數(shù)據(jù)存儲器69的指令時,MEM模塊48通過寄存器49將通過寄存器47自EX模塊輸入的算法處理結果數(shù)據(jù)輸出給WB模塊50。
此外,MEM模塊根據(jù)來自控制器51的控制信號在多路轉(zhuǎn)換器處選定讀自數(shù)據(jù)存儲器69的數(shù)據(jù)或來自EX模塊的算法處理結果數(shù)據(jù)這兩者之中的一個,并將其通過寄存器49輸出至WB模塊50。
以下說明WB模塊50。
WB模塊50根據(jù)控制信號S51e將通過寄存器49自MEM模塊48輸入的數(shù)據(jù)存至ID模塊44中的寄存器文件66。
以下說明處理器41的操作。
圖1是處理器41中出現(xiàn)轉(zhuǎn)移時轉(zhuǎn)移指令的流水線處理的示意圖。
首先,在周期“1”中將指令n鎖存至圖4中所示的IF模塊42,然后,在下一個周期“2”中于ID模塊44處對指令n譯碼,同時,在IF模塊42處取出指令n+1。
這期間,在IF模塊42中,將表示〔0〕的標志存入圖5所示的標志寄存器81,并且,訪問控制器841至848根據(jù)程序計數(shù)據(jù)60所指示的存儲在地址寄存器82中的地址從存儲器80中讀出指令,并通過多路轉(zhuǎn)換器86和62將讀出的指令輸出給寄存器43。
而且,在ID模塊44處將指令n確認為一轉(zhuǎn)移指令,圖4所示的譯碼器65將標志〔1〕存入圖5所示的指令存儲器61的標志寄存器81內(nèi),并且,用于轉(zhuǎn)移目的地的指令的地址存在地址寄存器83內(nèi)。
然后,在圖1所示的周期“3”中,在EX模塊46的轉(zhuǎn)移判斷電路68處判斷指令n是否滿足轉(zhuǎn)移條件。當滿足所述條件時,將表示滿足該條件的轉(zhuǎn)移判斷結果S46輸出給圖4和圖5所示的多路轉(zhuǎn)換器62。
同時,在圖5所示的指令存儲器61中,訪問控制單元841至848根據(jù)存儲在地址寄存器82和83內(nèi)的地址從存儲器80中讀出用于轉(zhuǎn)移目的地的指令m和用于非轉(zhuǎn)移目的地的指令n+2。然后,將用于非轉(zhuǎn)移目的地的指令n+1(S86)和用于轉(zhuǎn)移目的地的指令m(S87)輸出給多路轉(zhuǎn)換器62,此后,根據(jù)轉(zhuǎn)移判斷的結果S46在多路轉(zhuǎn)換器62處選出用于轉(zhuǎn)移目的地的指令m,并將其作為指令S62通過寄存器47輸出給MEM模塊48。
在周期“2”中,中斷在IF模塊42處取出的指令n+1。
然后,在周期4中,MEM模塊48、ID模塊44和IF模塊42分別執(zhí)行指令n的MEM步驟、指令m的ID步驟以及指令m+1的IF步驟。
此后,在周期5中,WB模塊50、EX模塊46、ID模塊44以及IF模塊42分別執(zhí)行指令n的WB步驟、指令m的EX步驟、指令m+1的ID步驟以及指令m+2的IF步驟。
然后,只要沒有轉(zhuǎn)移指令,就可順序地執(zhí)行指令m+3、m+4、……的IF步驟、ID步驟、EX步驟、MEM步驟和WB步驟。
圖2是處理器41中轉(zhuǎn)移指令進行轉(zhuǎn)移時的流水線處理的示意圖。
在這種情況下,可在周期“1”和“2”中實現(xiàn)與上述因轉(zhuǎn)移指令而出現(xiàn)轉(zhuǎn)移的情況的流水線處理相同的處理。
然后,在周期“3”中,在EX模塊的轉(zhuǎn)移判斷電路68中判斷指令n是否滿足轉(zhuǎn)移條件。在不滿足上述條件時,將表示不滿足轉(zhuǎn)移條件的轉(zhuǎn)移判斷結果S46輸出給圖4和圖5所示的多路轉(zhuǎn)換器62。
同時,在圖5所示的指令存儲器61中,根據(jù)存儲在地址寄存器82和83中的地址,在訪問控制單元841至848內(nèi)從存儲器80讀出用于轉(zhuǎn)移目的地的指令m和用于非轉(zhuǎn)移目的地的指令n+2。然后,將用于非轉(zhuǎn)移目的地的指令n+2(S86)和用于轉(zhuǎn)移目的地的指令m(S87)輸出給多路轉(zhuǎn)換器62,其中,根據(jù)轉(zhuǎn)移判斷的結果S46選定用于非轉(zhuǎn)移目的地的指令n+2并將其作為指令S62通過寄存器47輸出給MEM模塊48。
而且,中斷周期“2”中在IF模塊42內(nèi)取出的指令n+1。
然后,在周期“4”中,MEM模塊48、ID模塊44以及IF模塊42分別執(zhí)行指令n的MEM步驟、指令n+1的ID步驟以及指令n+2的IF步驟。
此后,在周期“5”中,WB模塊50、EX模塊46、ID模塊44和IF模塊42分別執(zhí)行指令n的WB步驟、指令n+1的EX步驟、指令n+2的ID步驟以及指令n+3的IF步驟。
然后,只要沒有轉(zhuǎn)移指令,就指令n+4、n+5、……而言,可由IF步驟、ID步驟、EX步驟、MEM步驟以及WB步驟順序地實現(xiàn)相同的處理。
如上所述,依照處理器41,當在ID模塊44內(nèi)把一指令確認為轉(zhuǎn)移指令同時該轉(zhuǎn)移指令正被執(zhí)行并在下一個周期的EX模塊46中進行轉(zhuǎn)移判斷時,一旦獲得了轉(zhuǎn)移判斷的結果S46,就同時讀出用于轉(zhuǎn)移目的地的指令和用于非轉(zhuǎn)移目的地的指令,并且選出一適當?shù)闹噶睢=Y果,可以以與是否進行轉(zhuǎn)移的轉(zhuǎn)移判斷結果S46無關的方式在下一周期將用于轉(zhuǎn)移或非轉(zhuǎn)移目的地的指令輸出給ID模塊44。
所以,與相關技術的上述并行處理器1相比,在轉(zhuǎn)移時可以有效地防止處理效率下降。
具體地說,依照處理器41,與不預測轉(zhuǎn)移的傳統(tǒng)方法相比,在出現(xiàn)轉(zhuǎn)移指令時,可將處理時間縮短若干個周期。
此外,依照處理器41,與預測轉(zhuǎn)移出現(xiàn)的傳統(tǒng)方法相比,在預測被證明是錯誤的時,可將處理時間縮短若干個周期。
再者,依照處理器41,與傳統(tǒng)的延時轉(zhuǎn)移方法相比,當用若干插入的空操作指令來執(zhí)行轉(zhuǎn)移指令以便防止延時段為其它指令所占用時,可以降低無用的時鐘消耗(轉(zhuǎn)移損失)。
本發(fā)明并不局限于上述實施例。
例如,在上述實施例中,可將具有單個讀取端口的單個存儲器端口用作圖5所示的存儲器80,但是,也可以使用具有多個讀取端口的多端口存儲器。
而且,在上述實施例中,如圖4所示那樣說明了五步流水線處理的結果,但是,本發(fā)明也可用于多于五步的流水線處理。
此外,對于圖4所示的指令存儲器61的結構,只要具有相同的功能就不局限于具體如圖5所示的結構。
如上所述,依照本發(fā)明,可以有效地防止流水線處理的效率因轉(zhuǎn)移指令而下降。
權利要求
1.一種微處理器,它包括用于存儲指令的裝置;用于從上述指令存儲裝置中取出指令的裝置;用于對取出的指令進行譯碼的裝置;用于執(zhí)行上述譯碼后的指令的裝置;一存儲器;用于訪問上述存儲器的裝置;用于將所執(zhí)行的結果寫入被訪問的存儲器的裝置;以及,用于對指令讀取裝置、指令譯碼裝置、指令執(zhí)行裝置、存儲器訪問裝置以及寫入裝置中的操作進行流水線處理的裝置。所述指令讀取裝置包括一程序計數(shù)器,它以順序的方式指定指令存儲裝置中的地址;一地址存儲部分,它在譯碼后的指令是轉(zhuǎn)移指令時存儲一地址,該地址是被包括在轉(zhuǎn)移指令中的轉(zhuǎn)移目的地的地址;一指令存儲部分,它帶有多個其中存儲有指令的可同時訪問的存儲區(qū);一讀取部分,它可在譯碼后的指令是轉(zhuǎn)移指令時同時取出存儲在指令存儲裝置內(nèi)第一地址處的第一指令以及存儲在指令存儲裝置內(nèi)第二地址處的第二指令,所述第一地址由程序計數(shù)器來指示,所述第二地址由存儲在地址存儲裝置內(nèi)的地址來指示;以及,一選擇部分,它用于根據(jù)對轉(zhuǎn)移指令中的轉(zhuǎn)移條件的判斷而選擇同時取出的第一和第二指令中的一個并將該指令輸出給指令譯碼裝置。
2.如權利要求1的微處理器,其特征在于,所述指令存儲部分將一轉(zhuǎn)移指令的轉(zhuǎn)移目的地的指令以及該轉(zhuǎn)移指令的非轉(zhuǎn)移目的地的另一條指令存儲到不同的存儲區(qū)內(nèi)。
3.如權利要求1的微處理器,其特征在于,所述指令存儲部分將對應于存儲區(qū)數(shù)目的多個順序且連續(xù)處理的指令存儲到不同的存儲區(qū)。
4.如權利要求1的微處理器,其特征在于,所述指令存儲部分包括一單端口式存儲器,它具有一個單個的讀出端口。
5.如權利要求1的微處理器,其特征在于,所述指令讀取裝置還包括一標志存儲部分,該部分存儲表示存儲在地址存儲部分內(nèi)的地址合法性的標志,并且,該指令讀取裝置僅在存儲在標志存儲部分內(nèi)的標志表示地址是合法的時才取出存儲在指令存儲部分內(nèi)的地址,該地址由存儲在地址存儲部分內(nèi)的地址來指示。
6.如權利要求1的微處理器,其特征在于,所述指令讀取裝置內(nèi)的讀取部分根據(jù)地址的第一部分來指定存儲區(qū),并根據(jù)地址的第二部分指定存儲區(qū)內(nèi)的地址。
7.如權利要求1的微處理器,其特征在于,所述指令譯碼裝置包括一譯碼部分,它用于對在選擇部分處選定的指令進行譯碼并生成一控制信號以便執(zhí)行譯碼后的指令;以及,一數(shù)據(jù)存儲部分,它存儲指令執(zhí)行裝置中所使用的數(shù)據(jù)。
8.如權利要求1的微處理器,其特征在于,所述指令執(zhí)行裝置包括一算法與邏輯處理部分,以及一轉(zhuǎn)移判斷部分,該部分用于判斷轉(zhuǎn)移指令的轉(zhuǎn)移條件。
9.如權利要求1的微處理器,其特征在于,所述寫入裝置將指令執(zhí)行裝置的處理結果存儲進存儲器和指令譯碼裝置中的數(shù)據(jù)存儲部分。
10.如權利要求1的微處理器,所述微處理處理器包括一單個指令讀取裝置;一單個指令譯碼裝置;一單個指令執(zhí)行裝置;一單個指令訪問裝置以及一單個寫入裝置。
11.一種處理信號的方法,該方法包括下列步驟從指令存儲裝置中讀取出一條指令;對取出的指令進行譯碼;執(zhí)行譯碼后的指令;訪問存儲器;將執(zhí)行后的結果寫入所訪問的存儲器;以及,以流水線的方式處理所說的讀取、譯碼、執(zhí)行、訪問和寫入操作,所述讀取步驟包括下列步驟順序地指定指令存儲裝置中的地址以指明一非轉(zhuǎn)移目的地的指令的地址;在譯碼后的指令是轉(zhuǎn)移指令時存儲一地址,該地址是被包括在轉(zhuǎn)移指令中的轉(zhuǎn)移目的地地址;將轉(zhuǎn)移目的地的指令和非轉(zhuǎn)移目的地的另一條指令存入指令存儲裝置中不同的可同時訪問的存儲區(qū)內(nèi);當譯碼后的指令是一轉(zhuǎn)移指令時,同時讀取存儲在指令存儲裝置中第一地址處的第一指令和存儲在指令存儲裝置中第二地址處的第二指令,所述第一地址由程序計數(shù)器來指示,所述第二地址由存儲在地址存儲裝置中的地址來指示;根據(jù)對轉(zhuǎn)移指令的轉(zhuǎn)移條件的判斷而選擇出同時取出的第一和第二指令中的一個;以及,將所選定的取出指令輸出給指令譯碼裝置。
全文摘要
一種用于流水線處理的信號處理器及方法,該處理器能有效地避免因轉(zhuǎn)移指令而導致的處理效率下降,其中當獲得了關于ID模塊內(nèi)所譯碼的指令是轉(zhuǎn)移指令的結果時,就在下一個周期內(nèi)對EX模塊內(nèi)的轉(zhuǎn)移存在情況進行判斷,并在IF模塊內(nèi)同時取出轉(zhuǎn)移目的地的指令和非轉(zhuǎn)移目的地的指令,隨后在下一周期中,根據(jù)存在轉(zhuǎn)移的結果選定所取出的轉(zhuǎn)移目的地或非轉(zhuǎn)移目的地的指令,然后在ID模塊內(nèi)對該指令譯碼。
文檔編號G06F9/38GK1206145SQ98115530
公開日1999年1月27日 申請日期1998年6月29日 優(yōu)先權日1998年6月29日
發(fā)明者華木博一 申請人:索尼公司