超長指令字vliw的處理器和處理方法
2023-06-07 05:50:36 1
專利名稱:超長指令字vliw的處理器和處理方法
技術領域:
本發明涉及一種超長指令字VLIW的處理器和處理方法。
背景技術:
VLIff (Very Long Instruction Word,超長指令字)一種非常長的指令組合,它把許多條指令連在一起,同時執行,増加了運算的速度,提高並行度。在VLIW結構中有並行指令條數固定的結構,即每次並行執行的指令條數是固定的;也有並行指令條數可變的結構,即每次並行執行的指令條數是靈活可變的。專利03818755. 8中介紹了ー種超長指令字VLIW的架構。這種架構中指令的存儲是按照指令條數不變的VLIW來存儲的,每個存儲單元都存儲了可並行指令條數的最大值,需要用NOP(空操作)指令來填充程序存儲器的空間,其程序存儲器消耗和並行指令條數固 定的VLIW結構是相同的。在取指令時,通過特殊的程序存儲器組織方式和指令首部來判斷是否需要讀取相應的程序,根據指令首部判斷當前的指令是否為N0P,如果為NOP則不進行取指令操作,反之則取指令井指令。這樣做需要増加不必要的程序存儲器,並且增加了取指令時的判斷邏輯。專利US 5,774,737公開了ー種並行指令條數可變VLIW的處理器,添加了ー個指令字長寄存器用來指示當前並行的指令的條數,通過當前指令中VLIW指令字長重寫指令來更新這個寄存器。這樣的架構增加了寫指令字長寄存器的過程,増加了取指令時的複雜度。論又Architecture Design of Variable lengths Instructions Expansionfor VLIff中提出了一種並行指令條數固定的VLIW架構,毎次並行的指令條數是固定的,但其單條指令的長度是可變的16bits或32bits,這樣的架構需要在指令發射時添加必要的邏輯來判斷出當前單條指令的比特數,増加了指令發射的複雜性。
發明內容
針對上述問題,本發明提供一種每次並行運行的指令條數是可變的取指令和發射指令方便,運行周期短,硬體結構簡單超長指令字VLIW的處理器和處理方法。為達到上述目的,本發明超長指令字VLIW的處理器,包括電連接的程序存儲器、取指發射裝置、指令寄存器裝置和執行裝置,其中,所述程序存儲器,用於存放指令,包括多個並行排列的存儲單元,所述指令連續存放在所述程序存儲器內;其中,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位和用於確定本指令所屬指令組的組別標誌位;所述取指發射裝置,用於從程序存儲器中提取指令,依據指令的條數標誌位確定本次需要並行運行的指令,依據指令的組別標誌位將本次需要並行運行的指令輸入指令寄存器裝置的不同指令寄存器中分別存放,沒有指令輸入的指令寄存器置空;所述指令寄存器裝置,包括與指令組別相同數量的指令寄存器,每個指令寄存器對應ー組指令組,且每個指令寄存器用於存放與其對應的指令組中的指令;所述執行裝置,包括與所述指令寄存器一一對應的指令處理通路,所述指令處理通路用於執行相對應指令寄存器中的指令。進ー步地,所述取指發射裝置,包括電連接的指令順序拼接模塊、並行指令條數判斷模塊、指令選擇模塊以及指令緩存模塊,其中所述指令順序拼接模塊,用於提取程序存儲器中的指令,將提取的指令和指令緩存模塊中的指令按所述的指令在程序存儲器中的存儲順序進行排序,並依據本次並行運行的指令條數輸出本次並行指令至指令選擇模塊;所述並行指令條數判斷模塊,用於讀取經所述指令順序拼接模塊排序後的每個並行指令中的條數標誌位,判斷該指令是否為本次並行指令中的最後一條,並將本次並行運
行指令條數輸出至指令順序拼接模塊和指令選擇模塊;指令選擇模塊,用於接收指令順序拼接單元發送來本次並行運行的指令、以及並行條數判斷模塊發送的並行指令條數,讀取本次並行運行指令的組別標誌位判斷出每條指令應該放到哪個指令寄存器,並將各指令輸入相對應的各指令寄存器中存放,並且置空沒有指令輸入的指令寄存器;指令緩存模塊,用於存儲在指令的一個運行周期內沒有發射的指令。進ー步地,所述取指發射裝置還包括指令跳轉模塊,用於在指令順序拼接模塊提取指令前,輸出指示指令跳轉位置的指示指令,令存放在指令緩存模塊中指令無效,並且所述指令順序拼接模塊依據所述指示指令提取指令跳轉位置以後的指令。特別地,所述程序存儲器的每個存儲單元分配有存儲與所述指令組別數量相等條數的指令。進ー步地,所述指令寄存器裝置包括的指令寄存器的數量根據處理器的應用刪減或者増加。為達到上述目的,本發明超長指令字VLIW的處理方法,包括步驟SI將指令連續存放在程序存儲器內,其中,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位和用於確定本指令所屬指令組的組別標誌位;S2從程序存儲器中提取指令,依據指令的條數標誌位確定本次需要並行運行的指令,依據指令的組別標誌位將本次需要並行運行的指令輸入指令寄存器裝置的不同指令寄存器中分別存放,沒有指令輸入的指令寄存器置空;S3執行所述指令寄存器中的指令。進ー步地,在指令並行運行的一個運行周期內,步驟S2具體步驟包括Sll按程序存儲器的地址提取指令,並提取在上ー個指令運行周期沒有發射的指令;S12將本次提取的指令和上一指令運行周期沒有發射的指令,按所述的指令在程序存儲器內存儲的先後順序進行排序;S13讀取按指令運行順序排序後指令的條數標誌位,根據每條指令中的條數標誌位判斷出本次並行運行的最後一條指令的位置,確定本次並行運行的指令的條數;S14讀取每個指令的組別標誌位,將本次並行運行的各指令輸入相對應的各指令寄存器中存放,本次運行周期沒有發射的指令輸入指令緩存模塊存放,且其他未有指令輸入的指令寄存器置空。進ー步地,在並行指令的一個運行周期內,步驟S2具體步驟包括S21在提取指令之前接收跳轉指令,依據跳轉指令按跳轉後的位置提取指令,上一指令運行周期沒有發射的指令無效;S22將步驟S21提取的指令按所述的指令在程序存儲器內存儲的先後順序進行排序,讀取提取的各指令的條數標誌位,若提取的指令中,存在某一指令的條數標誌位表示該指令為本次並行運行的最後一條的指令時,確定本次並行指令的條數 ,跳轉到步驟S23 ;若提取的指令中,不存在某一指令的條數標誌位表示該指令為本次並行運行的最後一條的指令時,跳轉到步驟S24 ;S23通過讀取本次並行運行的指令的組別標誌位,依據本次並行運行的指令的組別標誌位,將本次並行運行的各指令輸入相對應的各指令寄存器中存放,其他本次運行周期沒有發射的指令輸入指令緩存模塊存放,且其他未有指令輸入的指令寄存器置空;S24所有指令存儲器置空,提取的指令輸入指令緩存模塊存放。特別地,在所述程序存儲器的每個存儲地址中存儲與指令組別數量相等條數的指令。進ー步地,所述指令的分組組別個數是根據處理指令的具體應用確定的。本發明超長指令字VLIW的處理器和處理方法I、現有的並行指令處理方法在由指令寄存器裝置進入執行裝置執行之前要先經過指令選擇模塊對指令進行分組選擇分別進入執行裝置中與各條所述的並行指令相互對應的指令處理通路中執行,實現此方法的處理器在指令寄存器以後有較多的邏輯電路,一個指令寄存器後面驅動的指令解碼電路為全部指令集的解碼電路,指令運行過程比較複雜邏輯運算時間長。2、本發明改變了原有指令寄存器的結構,經現有處理器中設置在執行裝置之前的對指令進行選擇進入不同的指令處理通路執行的指令選擇模塊設置在取指發射裝置內,並且該處理器的指令寄存器裝置包括與指令的分組組別相同數量的指令寄存器,每個指令寄存器對應ー組包括相同組別標誌位的指令組,且每個指令寄存器用於存放與其對應的ー組指令組中的指令,同時,在執行裝置中設置與所述指令寄存器一一對應的指令處理通路,用於處理相對應指令寄存器中的指令,使得ー個指令寄存器後面驅動的指令解碼電路僅為該組指令的解碼電路,而不是全部指令集的解碼電路,從而減少了指令寄存器的輸出選擇邏輯,降低了指令寄存器的輸出,減少了指令寄存器的讀端ロ,方便了面積的優化和後端的布局布線,方便後續的指令執行,提高了並行指令的運行速度。3、本發明通過在每條指令中設置I或2bit的條數標誌位以及組別標誌位,通過指令自身來指示該指令是否為需要並行運行的最後一條指令確定本次並行指令的條數以及該指令的組別,上述步驟均發生在指令進入指令寄存器裝置之前;指令的條數以及組別的判斷均通過指令寄存器裝置之前的取指發射裝置執行,具體地,並行指令條數判斷模塊來讀取指令中條數標誌位,以確定本次並行運行的指令的條數,在處理器上避免了指令字長寄存器或其他指示並行運行指令條數的硬體結構的使用,在處理方法上省去了更新指令字長寄存器的操作,通過指令選擇模塊讀取指令中的組別標誌位確定指令的組別,簡化了指令運行過程。4、本發明指令存儲器中的每個存儲單元分配有存儲與所述指令組別數量相等條數的指令,指令在程序存儲器中的存儲方法是每個存儲地址存儲的指令條數與指令的組別數量相等,連續存儲,此程序存儲器結構及存儲方法讀取程序存儲器的一個地址単元就讀取了可並行運行指令條數的最大值相等條數的指令,減少了讀取程序存儲器的次數,節省了指令的讀取時間,同時連續存儲即不存在空指令的存儲,可以避免空指令的判斷的步驟,以及為實現該步驟的硬體結構,簡化了取指的過程。5、每個單條指令的長度是相等的,省去了對指令長度判斷的操作,減少了判斷指令字長硬體的使用,簡化了取指指發射裝置的硬體結構。
圖I是本發明超長指令字VLIW的處理器的實施例的架構示意圖;圖2是本發明超長指令字VLIW的處理器和方法的實施例中的處理器的結構示意圖;圖3是本發明超長指令字VLIW的處理器和處理方法的實施例的存儲器裝置存儲指令結構示意圖;圖4是本發明超長指令字VLIW的處理器和處理方法的實施例的正常發射方式發射的過程圖;圖5是本發明超長指令字VLIW的處理器和處理方法的實施例的跳轉發射方式發射的過程圖。圖6是本發明超長指令字VLIW的處理器和處理方法的實施例的指令寄存器的選擇模塊的數據過程圖。圖7是本發明超長指令字VLIW的處理器和處理方法的實施例的指令跳轉的示意圖;圖8是本發明超長指令字VLIW的處理器和處理方法的實施例的指令跳轉的示意圖;圖9是本發明超長指令字VLIW的處理器和處理方法的實施例的指令跳轉的示意圖;圖10是本發明超長指令字VLIW的處理器和處理方法的實施例的指令跳轉的示意圖;圖11是本發明超長指令字VLIW的處理器取指發射方法的實施例的流程圖。
具體實施例方式下面結合說明書附圖對本發明做進ー步的描述。如圖I所示,本發明超長指令字VLIW的處理器和處理方法,以同時執行n條指令,n >= I。所述的處理器的構架包括程序存儲器、取指發射裝置、指令寄存裝置和執行裝置。本發明超長指令字VLIW的處理方法處理數據的過程是待並行指令數據存儲在指令存儲器裝置中,由取指發射裝置將指令從指令存儲器裝置中取出放到指令寄存器裝置中,執行裝置執行從指令寄存器裝置中讀取指令數據,並完成執行過程。指令寄存器裝置直接和執行裝置相連,在把指令存到指令寄存器裝置時就已經做出了選擇,將每個指令處理通路能處理的指令放到與其對應的指令寄存器中去。在通常情況下,指令寄存器裝置之後的指令處理通路的運算單元比較多,組合邏輯延時比較長,在指令寄存器裝置之後,如果還有除指令處理通路外的其他邏輯電路,會進一步增加組合邏輯延時,造成處理器頻率和處理能力的降低,本發明將指令分組選擇電路指令選擇模塊放到指令寄存器裝置之前,可以減少指令寄存器裝置之後的組合邏輯延吋,進而可以提高處理器的設計頻率和處理能力。如圖2所示,本發明超長指令字VLIW的處理器的結構包括電連接的程序存儲器、取指發射裝置、指令寄存器裝置和執行裝置,其中,所述程序存儲器,用於存放指令,包括多個並行排列的存儲單元,所述指令連續存放在所述程序存儲器內;其中,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位和用於確定本指令所屬指令組的組別標誌位; 所述取指發射裝置,用於從程序存儲器中提取指令,依據指令的條數標誌位確定本次需要並行運行的指令,依據指令的組別標誌位將本次需要並行運行的指令輸入指令寄存器裝置的不同指令寄存器中分別存放,沒有指令輸入的指令寄存器置空;所述指令寄存器裝置,包括與指令組別相同數量的指令寄存器,每個指令寄存器對應ー組指令組,且每個指令寄存器用於存放與其對應的指令組中的指令;所述執行裝置,包括與所述指令寄存器一一對應的指令處理通路,所述指令處理通路用於執行相對應指令寄存器中的指令。本發明超長指令字VLIV的處理器通過以下實施例進行具體介紹實施例一一、本實施例超長指令字VLIW的處理器的程序存儲器的具體介紹如圖3所示,本實施例超長指令字VLIW的處理器的程序存儲器的每個存儲地址可以存儲與指令組數量相等條數的指令的結構,將指令分為四個不同的組別,則程序存儲器的每個地址單元存儲的指令條數為四條,即指令I,指令2,指令3,指令4這四條指令組合在一起放入程序存儲器的地址0中,指令5,指令6,指令7,指令8這四條指令組合在一起放入程序存儲器地址2中,依次類推,指令i,指令i+1,指令i+2,指令i+3,4條指令組合在一起放入程序存儲器的地址n中。ニ、本實施例超長指令字VLIW的處理器的取指發射裝置的具體介紹如圖4和圖6所示,本實施例所述的取指發射裝置,包括電連接的指令順序拼接模塊、並行指令條數判斷模塊、指令選擇模塊以及指令緩存模塊,其中所述指令順序拼接模塊,用於提取程序存儲器中的指令,將提取的指令和指令緩存模塊中的指令按所述的指令在程序存儲器中的存儲順序進行排序,並依據本次並行運行的指令條數輸出本次並行指令至指令選擇模塊;所述並行指令條數判斷模塊,用於讀取經所述指令順序拼接模塊排序後的每個並行指令中的條數標誌位,判斷該指令是否為本次並行指令中的最後一條,並將本次並行運行指令條數輸出至指令順序拼接模塊和指令選擇模塊;指令選擇模塊,用於接收指令順序拼接單元發送來本次並行運行的指令、以及並行條數判斷模塊發送的並行指令條數,讀取本次並行運行指令的組別標誌位判斷出每條指令應該放到哪個指令寄存器,並將各指令輸入相對應的各指令寄存器中存放,並且置空沒有指令輸入的指令寄存器;指令緩存模塊,用於存儲在指令的一個運行周期內沒有發射的指令。三、本發明超長指令字VLIW的處理器的指令寄存器裝置的具體介紹本實施例中的指令寄存器裝置,包括四個指令寄存器,指令寄存器0用於存儲A組指令,指令寄存器0的存儲範圍不超過A組指令包含的指令範圍;指令寄存器I用於存儲B組指令,指令寄存器I的存儲範圍不超過B組指令包含的指令範圍;指令寄存器2用於存儲C組指令,指令寄存器2的存儲範圍不超過C組指令包含的指令範圍;指令寄存器3用於存儲D組指令,指令寄存器3的存儲範圍不超過D組指令包含的指令範圍。四、本發明超長指令字VLIW的處理器的執行裝置的具體介紹
本實施例中的執行裝置,包括4個與所述指令寄存器一一對應指令處理通路,本實施例中,指令處理通路0對應指令寄存器0,僅用於執行存放在指令寄存器0中的A組指令,指令處理通路I對應指令寄存器I,僅用於執行存放在指令寄存器I中的B組指令,指令處理通路2對應指令寄存器2,僅用於執行存放在指令寄存器2中的C組指令,指令處理通路3對應指令寄存器3,僅用於執行存放在指令寄存器3中的D組指令。實施例ニ 如圖5和圖6所示,本實施例超長指令字VLIW處理器的裝置結構和實施例一中的裝置結構基本相同,僅是在所述的取指發射裝置中増加了指令跳轉模塊,其中所述的指令跳轉模塊,用於在指令順序拼接模塊提取指令前,輸出指示指令跳轉位置的指示指令,令存放在指令緩存模塊中指令無效,並且所述指令順序拼接模塊依據所述指示指令提取指令跳轉位置以後的指令。上述各實施例隨著指令的組別的數量的不同對程序存儲器每個存儲單元的最大存儲容量做相應的改變,以使所述程序存儲器的每個存儲單元分配有存儲與所述指令組別數量相等條數的指令。指令寄存器裝置的指令存儲器的數量與指令的組別個數相等。本發明超長指令字VLIW的處理方法通過以下一、ニ、三、四,幾個方面進行的具體介紹一、實施例中所述的超長指令字VLIW的處理方法,將並行指令進行分組,需要並行運行的指令分屬不同的組別。對於不同的指令並行運行目的,會有不同的分組規則,如為了提高執行速度會將指令分為更多的組別,方便並行執行,或者為了提高資源的利用率會將指令分為更少的組別。為了方便說明實施例,將指令劃分為了四個組別,即A組指令,B組指令,C組指令和D組指令,如圖11所示,並行指令的處理方法包括步驟SI將指令連續存放在程序存儲器內,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位;S2從程序存儲器中提取指令,確定本次並行運行的指令,將本次並行運行的指令輸入指令寄存器裝置的不同的指令寄存器中分別存放,每個指令寄存器對應ー組指令組,且每個指令寄存器中存放與其對應的指令組的指令,沒有指令輸入的指令寄存器置空;S3執行所述指令寄存器中的指令。
實施例中指令的組別標誌位通過在指令中設置標誌位進行識別,每個指令通過兩個標誌位來區分指令所屬的組別,指令的兩個標誌位為00時,指令是A組指令;指令的兩個標誌位為01時,指令是B組指令;指令的兩個標誌位為10時;指令是C組指令,指令的兩個標誌位為11時,指令是D組指令。ニ、為了更好的說明實施例所述的並行指令的處理方法的幾點說明說明I :實施例中每個運行周期並行運行的指令條數,通過處理器的硬體設備指令條數判斷模塊讀取指令的標誌位來確定並行運行的指令的條數,指令的標誌位在每條指令中佔用指令的I個Mt,若該標誌位上的數字是0表示該指令是本次並行指令的最後ー條;若該標誌位上的數字為I表示該指令不是本次並行指令的最後一條。說明2 :指令i_指令i+3,這四條指令是從程序存儲器的一個地址中一次讀出來的,指令i_指令i+3這四條指令是有先後順序的,按照字節地址,指令i排在最前,指令i+3排在最後。指令緩存模塊用來存放上ー個指令運行周期沒有發射出去的指令。 說明3 :在指令條數判斷模塊在讀取本次並行運行的指令的條數之前,先要進過指令順序拼接模塊對指令進行排序,實施例中指令順序拼接模塊輸出結果對應關係如下,其中「-」表示「結果為」的意思,這裡的第n(n= 1、2、3、4)條指令指的是指令的順序關係,這裡的順序是指其字節地址的先後。說明4 :對於步驟S2的具體實施方式
在處理器中有三種情況,三種方式分別是第I種,指令在每個運行周期均以不發生跳轉按照運行順序的發射方式,由取指發射裝置取出發射至相對應的指令寄存器裝置中存放;第2種,指令在每個運行周期均發生跳轉的發射方式,由取指發射裝置取出發射至相對應的指令寄存器裝置中存放;第3種,指令以不發生跳轉和發生跳轉先後進行的發射方式,由取指發射裝置中發射至指令寄存器裝置中。三、下面就在一個運行周期內,步驟S2中的指令發射到指令寄存器裝置中的兩種發射方式,即指令不發生跳轉的正常發射方式和指令發生跳轉的跳轉發射方式通過以下I、2,兩部分進行整體的說明I、指令不發生跳轉的正常發射方式通過以下(I)、(2)兩點進行具體說明(I)確定本次並行運行指令條數和將指令輸出的過程的具體說明如果當前並行的指令條數是I個,即在第一個時鐘周期將指令I發射出去,在第ニ個時鐘周期時發射指令吋,就要判斷指令2、指令3、指令4和指令5的關係,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,因為第二個時鐘周期發送的指令條數不固定。如果當前並行的指令條數是2,即在第一個時鐘周期將指令I和指令2發射出去,在第二個時鐘周期時發射指令吋,就要判斷指令3、指令4、指令5和指令6的關係,繼續根據標誌位來判斷需要在第二個周期發射出去的指令。如果當前並行的指令條數是3,即在第一個時鐘周期將指令I、指令2和指令3發射出去,在第二個時鐘周期時發射指令吋,就要判斷指令4、指令5、指令6和指令7的關係,繼續根據標誌位來判斷需要在第二個周期發射出去的指令。如果當前並行的指令條數是4,即在第一個時鐘周期將指令I、指令2、指令3和指令4發射出去,在第二個時鐘周期時發射指令吋,就要判斷指令5、指令6、指令7和指令8的關係,繼續根據標誌位來判斷需要在第二個周期發射出去的指令。如圖4所示,指令i-指令i+3,這四條指令是從程序存儲器的一個地址中一次讀出來的,可見圖3的程序存儲器結構,指令i_指令i+3這四條指令是有先後順序的,按照字節地址,指令i排在最前,指令i+3排在最後。指令緩存模塊用來存放上次指令發射時沒有發射出去的指令。當前讀出的四條指令和指令緩存模塊中的指令通過指令順序拼接模塊,將指令進行排序,並通過硬體插入空操作N0P。這四條指令和指令緩存模塊中的指令一起通過指令順序拼接模塊。順序拼接模塊輸出Inst0-Inst3。指令順序拼接模塊輸出結果對應關係如下,其中「-」表示「結果為」的意思,這裡的第n(n= 1、2、3、4)條指令指的是指令的順序關係,這裡的順序是指其字節地址的先後。當前並行指令條數為IInstO-第 I 條指令;Instl_N0P ;Inst2_N0P ;Inst3_N0P ;InstO可以是ABCD四組中的任意一組。未發射的指令需要寫入指令緩存模塊。當前並行指令條數為2InstO-第 I 條指令;Instl-第 2 條指令;Inst2_N0P ;Inst3_N0P ;InstO, Instl屬於不同的分組,可以是AB⑶四組中的任意兩組。未發射的指令需要寫入指令緩存模塊。當前並行指令條數為3InstO-第 I 條指令;Instl-第 2 條指令;Inst2_ 第 3 條指令;Inst3_N0P ;InstO, Instl, Inst2屬於不同的分組,可以是AB⑶四組中的任意三組。未發射的指令需要寫入指令緩存模塊。當前並行指令條數為4InstO-第I條指令;Instl-第2條指令;Inst2_第3條指令;Inst3_第4條指令;InstO, Instl, Inst2, Inst3屬於不同的分組,可以是ABO)任何組合方式。無未發射指令。(2)根據本次並行運行指令條數和將指令組別標誌位輸入相應的指令寄存器中存放過程的具體說明對Inst0-Inst3的結果進行選擇,根據當前並行指令的條數和InstO_Inst3中的指令屬於哪個分組(ABCD組),來將指令放到如圖2所示的四個指令寄存器中去。如圖6所示,指令選擇的結構圖,通過當前並行的指令條數和指令的分組情況來確定指令寄存器i (i=1、2、3或4)中的內容,具體到每個指令寄存器會有細微差別,但四個指令寄存器的指令選擇都是相同的結構。當前並行運行的指令,不能是同一組中的指令,但可以是AB⑶四組指令中,任意I組、2組、3組或者4組的組合。指令選擇模塊按照如下方式進行選擇。指令寄存器0指令寄存器0中需要存放A組指令。當前並行的指令為IInstO為A組的指令時,指令寄存器0存放InstO ;否則指令寄存器0存放空操作NOP
當前並行的指令為2InstO或者Instl為A組指令吋,指令寄存器0存放InstO或Instl ;如果InstO和Instl都不是A組指令,指令寄存器0存放空操作N0P。當前並行的指令為3InstO、Instl或者Inst2為A組指令吋,指令寄存器0存放InstO、Instl或者Inst2 ;如果InstO、Instl和Inst3都不是A組指令,指令寄存器0存放空操作N0P。當前並行的指令為4 此時Inst0-Inst3,四條指令中肯定有一條是A組指令,指令寄存器0中存放該條屬於A組的指令。指令寄存器I指令寄存器I中需要存放B組指令。當前並行的指令為IInstO為B組的指令時,指令寄存器I存放InstO ;否則指令寄存器I存放空操作NOP當前並行的指令為2InstO或者Instl為B組指令時,指令寄存器I存放InstO或Instl ;如果InstO和Instl都不是B組指令,指令寄存器I存放空操作N0P。當前並行的指令為3InstO、Instl或者Inst2為B組指令吋,指令寄存器I存放InstO、Instl或者Inst2 ;如果InstO、Instl和Inst3都不是B組指令,指令寄存器I存放空操作N0P。當前並行的指令為4此時Inst0-Inst3,四條指令中肯定有一條是B組指令,指令寄存器I中存放該條屬於B組的指令。指令寄存器2指令寄存器2中需要存放C組指令。當前並行的指令為IInstO為C組的指令時,指令寄存器2存放InstO ;否則指令寄存器2存放空操作NOP當前並行的指令為2InstO或者Instl為C組指令吋,指令寄存器2存放InstO或Instl ;如果InstO和Instl都不是C組指令,指令寄存器2存放空操作N0P。當前並行的指令為3InstO、Instl或者Inst2為C組指令吋,指令寄存器2存放InstO、Instl或者Inst2 ;如果InstO、Instl和Inst3都不是C組指令,指令寄存器2存放空操作N0P。當前並行的指令為4此時Inst0-Inst3,四條指令中肯定有一條是C組指令,指令寄存器2中存放該條屬於C組的指令。指令寄存器3指令寄存器3中需要存放D組指令。
當前並行的指令為IInstO為D組的指令時,指令寄存器3存放InstO ;否則指令寄存器3存放空操作NOP當前並行的指令為2InstO或者Instl為D組指令時,指令寄存器3存放InstO或Instl ;如果InstO和Instl都不是D組指令,指令寄存器3存放空操作N0P。當前並行的指令為3InstO、Instl或者Inst2為D組指令吋,指令寄存器3存放InstO、Instl或者Inst2 ;如果InstO、Instl和Inst3都不是D組指令,指令寄存器3存放 空操作N0P。當前並行的指令為4此時Inst0-Inst3,四條指令中肯定有一條是D組指令,指令寄存器3中存放該條屬於D組的指令。2、指令發生跳轉的跳轉發射方式通過以下(I)、(2)兩點進行具體說明(I)確定本次並行運行指令條數和將指令輸出的過程的具體說明指令存在跳轉發射的不同點在於指令順序拼接模塊,如圖5所示,當處理跳轉需要在圖4中的指令順序拼接模塊添加相應的跳轉相關的信號即可。這些信號包括用於指示跳轉發生標誌和跳轉位置信號。程序存儲器地址i中可存放四條指令,用來指示新指令具體在哪個位置的就是跳轉位置。此外這時的並行指令條數需要從新的指令位置開始判斷。跳轉到指令I的位置,要判斷指令I、指令2、指令3和指令4的關係,繼續根據標誌位來判斷接下來需要發射的指令的條數。跳轉到指令2的位置,要判斷指令2、指令3、指令4和指令5的關係,繼續根據標誌位來判斷接下來需要發射的指令的條數。跳轉到指令3的位置,要判斷指令3、指令4、指令5和指令6的關係,繼續根據標誌位來判斷接下來需要發射的指令的條數。跳轉到指令4的位置,要判斷指令4、指令5、指令6和指令7的關係,繼續根據標誌位來判斷接下來需要發射的指令的條數。如圖7所示,跳轉位置為指令i當前並行指令條數為IInstO-指令 i ;Instl-N0P ;Inst2_N0P ;Inst3_N0P ;InstO可以是ABCD四組中的任意一組。指令i+1,指令i+2,指令i+3寫入指令緩存模塊。當前並行指令條數為2InstO-指令 i ;Instl_ 指令 i+1 ;Inst2_N0P ;Inst3_N0P ;InstO, Instl屬於不同的分組,可以是AB⑶四組中的任意兩組。指令i+2,指令i+3寫入指令緩存模塊。當前並行指令條數為3InstO-指令 i ;Instl_ 指令 i+1 ;Inst2_ 指令 i+2 ;Inst3_N0P ;InstO, Instl,Inst2屬於不同的分組,可以是AB⑶四組中的任意三組。指令i+3寫入指令緩存模塊。
當前並行指令條數為4InstO-指令 i ;Instl_指令 i+1 ;Inst2_指令 i+2 ;Inst3_指令 i+3 ;InstO, Instl,Inst2, Inst3屬於不同的分組,可以是AB⑶任何組合方式。無指令寫入指令緩存模塊。如圖8所示,跳轉位置為指令i+1當前並行指令條數為IInstO-指令 i+1 ;Instl-NOP ;Inst2_N0P ;Inst3_N0P ;InstO可以是ABCD四組中的任意一組。指令i+2,指令i+3寫入指令緩存模塊。 當前並行指令條數為2InstO-指令 i+1 ;Instl-指令 i+2 ;Inst2_N0P ;Inst3_N0P ;InstO, Instl屬於不同的分組,可以是AB⑶四組中的任意兩組。指令i+3寫入指令緩存模塊。當前並行指令條數為3InstO-指令 i+1 ;Instl_ 指令 i+2 ;Inst2_ 指令 i+3 ;Inst3_N0P ;InstO, Instl, Inst2屬於不同的分組,可以是AB⑶四組中的任意三組。無指令寫入指令緩存模塊。當前並行指令條數為4InstO-NOP ;Instl-NOP ;Inst2_N0P ;Inst3_N0P ;指令i+1,指令i+2,指令i+3寫入指令緩存模塊。如圖9所示,跳轉位置為指令i+2當前並行指令條數為IInstO-指令 i+2 ; Instl-NOP ;Inst2_N0P ;Inst3_N0P ;InstO可以是AB⑶四組中的任意一組。指令i+3寫入指令緩存模塊。當前並行指令條數為2InstO-指令 i+2 ;Instl_ 指令 i+3 ;Inst2_N0P ;Inst3_N0P ;InstO, Instl屬於不同的分組,可以是AB⑶四組中的任意兩組。無指令寫入指令緩存模塊。當前並行指令條數為3或4 (具體要根據接下來的程序存儲模塊中的指令確定)InstO-NOP ;Instl-NOP ;Inst2_N0P ;Inst3_N0P ;此時將指令寄存器中輸入空指令,等待指令取指發射裝置讀取下一個地址的指令,開始新一周期的取指發射,此種情況符合上述的本次並行的指令存儲在兩個存儲地中的情況。指令i+2,指令i+3寫入指令緩存模塊。如圖10所示,跳轉位置為指令i+3當前並行指令條數為IInstO-指令 i+3 ;Instl-NOP ;Inst2_N0P ;Inst3_N0P ;InstO可以是ABCD四組中的任意一組。
無指令寫入指令緩存模塊。當前並行指令條數為2、3或4 (具體要根據接下來的程序存儲模塊中的指令確定)InstO-NOP ;Instl-NOP ;Inst2_N0P ;Inst3_N0P ;指令i+3寫入指令緩存模塊;此時將寄存等待指令取指發射裝置讀取下一個地址的指令,開始新一周期的取指發射,此種情況符合上述的本次並行的指令存儲在兩個存儲地中的情況。(2)根據本次並行運行指令條數和將指令組別標誌位輸入相應的指令寄存器中存放過程的具體說明·指令發生跳轉發射到指令寄存器裝置和指令正常發射到指令寄存器裝置中的根據組別標誌位輸入不同的指令寄存器中存放的過程如上述正常發射的情況相同,只是可能存在四個指令寄存器同時輸入空指令的情況。四、以下是本發明超長指令字VLIW的處理方法,分別對應上述說明4中,對於步驟S2的具體實施方式
在處理器中有三種發射方式的幾個具體實施例I、對應第I種發射情況,相對應的通過上述處理器的實施例的實施例一的裝置實現,超長指令字VLIW的處理方法的實施例如下實施例I :本次並行的指令條數為I條,下ー個周期運行的指令條數為2條如圖4所示,取指發射裝置由指令地址0中取出指令I,指令2,指令3和指令4共4個指令,根據標誌位來判斷本次並運行指令的條數,本次並行運行的指令為I條,即在第一個時鐘周期將指令I發射出去,即InstO-指令I ;Instl-N0P ;Inst2_N0P ;Inst3_N0P ;本實施例中InstO分屬A組指令,將InstO輸入指令寄存器0中,指令寄存器I、指令寄存器
2、指令寄存器3中均輸入空指令。將未發射的指令2,指令3和指令4輸入緩存模塊中進行存放。在第二個時鐘周期時發射指令時,取指發射裝置由指令地址I中取出指令5,指令6,指令7和指令8共4個指令,就要對存在緩存寄存模塊中的指令2、指令3、指令4和指令5進行排序,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,本次並行運行的指令為2條,即在第二個時鐘周期將指令2、指令3、發射出去,即InstO-指令2 ;Instl-指令
3、;Inst2_N0P;Inst3-N0P ;本實施例中InstO分屬A組指令、InstO分屬B組指令,將InstO輸入指令寄存器0中、Instl輸入指令寄存器I中,指令寄存器2、指令寄存器3中均輸入空指令。將未發射的指令4,指令5和指令6、指令I輸入緩存模塊中進行存放。實施例2 本次並行的指令條數為3條,下ー個周期運行的指令條數為4條如圖4所示,取指發射裝置由指令地址0中取出指令I,指令2,指令3和指令4共4個指令,根據標誌位來判斷本次並運行指令的條數,本次並行運行的指令為3條,即在第一個時鐘周期將指令I、指令2、指令3發射出去,即InstO-指令I ;Instl-指令2 ;Inst2-指令3 ;Inst3-N0P ;本實施例中InstO分屬A組指令,Instl分屬B組指令,Inst2分屬C組指令,將InstO輸入指令寄存器0中,Instl輸入指令寄存器I中,Inst2輸入指令寄存器2中,指令寄存器3中輸入空指令。將未發射的指令4輸入緩存模塊中進行存放。在第二個時鐘周期時發射指令時,取指發射裝置由指令地址I中取出指令5,指令6,指令7和指令8共4個指令,就要對存在緩存寄存模塊中的指令4、和指令5、指令6和指令7進行排序,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,本次並行運行的指令為4條,即在第二個時鐘周期將指令4、指令5、指令6、指令7發射出去,即InstO-指令4 ;Instl-指令5、Inst2-指令6Inst3_指令7 ;本實施例中InstO分屬A組指令、Instl分屬B組指令、Inst2分屬C組指令、Inst3分屬D組指令,將InstO輸入指令寄存器0中、Instl輸入指令寄存器I中、Inst2輸入指令寄存器2中、Inst3輸入指令寄存器3中,指令8輸入緩存模塊中進行存放。2、對應第2種發射情況,相對應的通過上述處理器的實施例的實施例ニ的裝置實現,超長指令字VLIW的處理方法的實施例如下實施例I :運行周期並行的指令條數為I條,指令跳轉到指令I的位置。如圖5所示,取指發射裝置由指令地址0中取出指令I,指令2,指令3和指令4共 4個指令,指令跳轉到指令I的位置,根據標誌位來判斷本次並運行指令的條數,本次並行運行的指令為I條,即在第一個時鐘周期將指令I發射出去,即InstO-指令I ;Instl-N0P ;Inst2-N0P ;Inst3-N0P ;本實施例中InstO分屬A組指令,將InstO輸入指令寄存器0中,指令寄存器I中輸入空指令、指令寄存器2中輸入空指、令指令寄存器3中輸入空指令。將未發射的指令2、指令3、指令4輸入緩存模塊中進行存放。實施例2 運行周期運行的指令條數無法由本次讀取的指令判斷,指令跳轉到指令7的位置,並行條數大於2:取指發射裝置由指令地址2中取出指令5,指令6,指令7和指令8共4個指令,指令跳轉到指令7的位置,指令7、指令和指令8進行排序,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,由於當前並行指令條數大於2,接下來要發射的指令還沒有讀取,InstO-NOP, Instl-NOP, Inst2_N0P、Inst3_N0P ;指令寄存器0中輸入空指、令指令寄存器I中輸入空指令、指令寄存器2中輸入空指、令指令寄存器3中輸入空指令。將未發射的指令7、指令8輸入緩存模塊中進行存放,指令5,指令6為跳轉之前的指令,應該丟棹。3、對應第3種發射情況,相對應的通過上述處理器的實施例的實施例ニ的裝置實現,超長指令字VLIW的處理方法的實施例如下實施例I :第一個運行周期正常發射並行的指令條數為I條,下ー個周期運行的指令跳轉發射,跳轉位置為,指令6的位置,並行指令條數為3條如圖4所示,取指發射裝置由指令地址0中取出指令I,指令2,指令3和指令4共4個指令,根據標誌位來判斷本次並運行指令的條數,本次並行運行的指令為I條,即在第一個時鐘周期將指令I發射出去,即InstO-指令;Instl-NOP ;Inst2-N0P ;Inst3-N0P ;本實施例中InstO分屬A組指令,將InstO輸入指令寄存器0中,指令寄存器I、指令寄存器2、指令寄存器3中均輸入空指令。將未發射的指令2,指令3和指令4輸入緩存模塊中進行存放。如圖5所示,在第二個時鐘周期時發射指令時,取指發射裝置由指令地址I中取出指令5,指令6,指令7和指令8共4個指令,指令跳轉到指令6的位置,指令6、指令7、指令和指令8進行排序,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,由於指令8的標誌位上的值為O,即第二個周期運行的指令條數為3條,即在第二個時鐘周期將指令6、指令7、指令8發射出去,即InstO-指令6 ;Instl-指令7 ;Inst2-指令8 ;Inst3-N0P ;本實施例中InstO分屬A組指令,Instl分屬B組指令,Inst2分屬C組指令,將InstO輸入指令寄存器0中,Instl輸入指令寄存器I中,Inst2輸入指令寄存器2中,指令寄存器3中輸入空指令。未發射的指令5,為跳轉前的指令,應該丟棄。實施例2 第一個運行周期跳轉發射並行的指令條數為2條,跳轉位置為指令3的位置,下一個周期運行的指令正常發射,並行指令條數為4條如圖5所示,取指發射裝置由指令地址0中取出指令I,指令2,指令3和指令4共4個指令,指令跳轉到指令3的位置,指令3、指令4、進行排序,繼續根據標誌位來判斷需要在第一個周期發射出去的指令,本次並行運行的指令為2條,即在第一個時鐘周期將指令3、指令4發射出去,即InstO-指令3 ;Instl-指令4 ;Inst2_N0P ;Inst3_N0P ;本實施例中 InstO分屬A組指令、Instl分屬B組指令,將InstO輸入指令寄存器0中,Instl輸入指令寄存器I中、指令寄存器2、指令寄存器3中均輸入空指令。未發射的指令I和指令2,為跳轉前的指令,應該丟棄。如圖4所示,在第二個時鐘周期時發射指令時,取指發射裝置由指令地址I中取出指令5,指令6,指令7和指令8共4個指令,就要對存在緩存寄存模塊中的指令5、指令6、指令7和指令8進行排序,繼續根據標誌位來判斷需要在第二個周期發射出去的指令,本次並行運行的指令為4條,即在第二個時鐘周期將指令5、指令6、指令7、指令8、發射出去,即InstO-指令5 ; Instl-指令6、Inst2_指令7、Inst3_指令8 ;本實施例中InstO分屬A組指令、InstO分屬B組指令,InstO分屬C組指令,InstO分屬D組指令,將InstO輸入指令寄存器0中、Instl輸入指令寄存器I中,Inst2輸入指令寄存器2中、Inst3輸入指令寄存器3中。上述各實施例中的指令的字節數固定省去了對指令長度判斷的操作,使取指發射裝置取指過程中複雜度降低。在指令中添加了一個標誌位來指示該指令是否是本次並行指令的最後一條指令,以確定本次並行指令的條數,在讀取指令的時候就對其進行判斷,節省了運行時間。每條指令中的標誌位可以為I個bit即可,例如標誌位上的數字是0時,表示該指令是本次並行運行的最後一條指令,本次並行運行的指令為這條指令以及這條指令以前的指令;如果標誌位上的數字是I時,表示該指令不是本次並行運行的最後一條指令,本次並行運行的指令還包括其後的ー些指令。對本發明超長指令字VLIW的處理器和處理方法的其他說明本發明中所有的指令是連續存儲的,不需要插入空操作N0P,每個存儲器地址存儲的指令個數為可並行執行的指令條數的最大值。本次並行運行的指令組成指令包,該指令包中的指令可以存儲在存儲器的同一個存儲地址,也可以存儲在連續的兩個地址中,但需要並行的指令應該連續存放,不論其是否在同一個地址。此結構的好處是減少讀取程序存儲器的次數,讀取一次程序存儲器,就可以包括所有並行個數。對於不能一次發射的指令,可以暫存在寄存器中。
以與上述實施例中所述的將指令分為四個組別為例進行說明,如果當前需要並行的指令為4條,並行的指令存儲在地址0中,則這四條指令會存儲在指令I,指令2,指令3,指令4的位置中;如果是當前需要並行的指令為3條則存儲在指令I,指令2,指令3的位置中;如果是當前需要並行的指令為2條則存儲在指令1,指令2的位置中;如果當前需要並行的指令為I條會存儲在指令I的位置中。並行指令存儲在地址1、2、3......n中亦然。如果 本次需要並行的指令存儲在地址0和地址I中,當需要並行的指令條數為4,貝IJ指令存儲的所有組合包括指令2、指令3、指令4、指令5,或者為指令3、指令4、指令5、指令6 ;或者為指令4、指令5、指令6、指令7,3種組合方式;當需要並行的指令條數為3,則指令存儲的所有組合包括指令3、指令4、指令5或者為指令4指令5、指令6,2種組合方式;當需要並行的指令條數為2條,則指令存儲的組合只能為指令4、指令5。如果本次並行的指令存儲在其他兩個連續的地址中亦然。本處理器的硬體結構決定了並行的指令必須分屬不同的分組,但指令的某個分組可以存儲在程序存儲器的任意位置,不會影響指令並行性。如圖3所示,具體到本實施例中,程序存儲器地址0中存放的4條指令,可以是任意的並行條數和分組的組合,如果當前並行的指令條數為4 指令I-A組,指令2-B組,指令3-C組,指令4-D組;指令I-B組,指令2-A組,指令3-C組,指令4-D組;......最多4 !種組合。如果當前並行的指令條數為3條指令I-A組,指令2-B組,指令3-C組;指令I-B組,指令2-A組,指令3-C組;......最多有4 !種組合。如果當前並行的指令條數為2條指令I-A組,指令2-B組;指令トB組,指令2-A組;......最多有12種組合。如果當前並行的指令條數為I條指令I-A 組;指令I-B組;......最多有4種組合。本發明超長指令字VLIW的處理方法通過超長指令字VLIW的處理器實現,處理器中指令寄存器裝置直接和執行裝置相連,在把指令存到指令寄存器裝置時就已經做出了選擇,將每個指令處理通路能處理的指令放到與其對應的指令寄存器中去。在通常情況下,指令寄存器裝置之後的指令處理通路的運算單元比較多,組合邏輯延時比較長,在指令寄存器裝置之後,如果還有除指令處理通路外的其他邏輯電路,會進一步增加組合邏輯延時,造成處理器頻率和處理能力的降低。將指令分組選擇電路放到指令寄存器裝置之前,可以減少指令寄存器裝置之後的組合邏輯延時,進而可以提高處理器的設計頻率和處理能力。上述關於處理器的實施例和處理器的方法的實施例中的指令的分組還可以是其他的例如5、6、7等,同時圖2中的指令寄存器的個數也應發生相應的變化,本發明的超長指令字VLIW的處理器。取指發射裝置通過地址訪問程序存儲器,從程序存儲器中取得數據,並將需要並行的指令分發到指令寄存器裝置中去,有執行裝置讀取寄存器完成整個數據處理過程。本發明未具體處理器的流水線級數,實際設計中可根據需要進行改迸。以上,僅為本發明的較佳實施例,但本發明的保護範圍並不局限於此,任何熟悉本 技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求所界定的保護範圍為準。
權利要求
1.一種超長指令字VLIW的處理器,包括電連接的程序存儲器、取指發射裝置、指令寄存器裝置和執行裝置,其特徵在於其中, 所述程序存儲器,用於存放指令,包括多個並行排列的存儲單元,所述指令連續存放在所述程序存儲器內;其中,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位和用於確定本指令所屬指令組的組別標誌位; 所述取指發射裝置,用於從程序存儲器中提取指令,依據指令的條數標誌位確定本次需要並行運行的指令,依據指令的組別標誌位將本次需要並行運行的指令輸入指令寄存器裝置的不同指令寄存器中分別存放,沒有指令輸入的指令寄存器置空; 所述指令寄存器裝置,包括與指令組別相同數量的指令寄存器,每個指令寄存器對應ー組指令組,且每個指令寄存器用於存放與其對應的指令組中的指令; 所述執行裝置,包括與所述指令寄存器一一對應的指令處理通路,所述指令處理通路用於執行相對應指令寄存器中的指令。
2.根據權利要求I所述的超長指令字VLIW的處理器,其特徵在於所述取指發射裝置,包括電連接的指令順序拼接模塊、並行指令條數判斷模塊、指令選擇模塊以及指令緩存模塊,其中 所述指令順序拼接模塊,用於提取程序存儲器中的指令,將提取的指令和指令緩存模塊中的指令按所述的指令在程序存儲器中的存儲順序進行排序,並依據本次並行運行的指令條數輸出本次並行指令至指令選擇模塊; 所述並行指令條數判斷模塊,用於讀取經所述指令順序拼接模塊排序後的每個並行指令中的條數標誌位,判斷該指令是否為本次並行指令中的最後一條,並將本次並行運行指令條數輸出至指令順序拼接模塊和指令選擇模塊; 指令選擇模塊,用於接收指令順序拼接單元發送來本次並行運行的指令、以及並行條數判斷模塊發送的並行指令條數,讀取本次並行運行指令的組別標誌位判斷出每條指令應該放到哪個指令寄存器,並將各指令輸入相對應的各指令寄存器中存放,並且置空沒有指令輸入的指令寄存器; 指令緩存模塊,用於存儲在指令的一個運行周期內沒有發射的指令。
3.根據權利要求2所述的超長指令字VLIW的處理器,其特徵在於所述取指發射裝置還包括指令跳轉模塊,用於在指令順序拼接模塊提取指令前,輸出指示指令跳轉位置的指示指令,令存放在指令緩存模塊中指令無效,並且所述指令順序拼接模塊依據所述指示指令提取指令跳轉位置以後的指令。
4.根據權利要求I至3任一所述的超長指令字VLIW的處理器,其特徵在於所述程序存儲器的每個存儲單元分配有存儲與所述指令組別數量相等條數的指令。
5.根據權利要求I所述的超長指令字VLIW的處理器,其特徵在於所述指令寄存器裝置包括的指令寄存器的數量根據處理器的應用刪減或者増加。
6.一種超長指令字VLIW的處理方法,其特徵在於,包括步驟 Si將指令連續存放在程序存儲器內,其中,所述的各指令中包含有用於區分本指令是否為本次並行運行的最後一條指令的條數標誌位和用於確定本指令所屬指令組的組別標誌位; S2從程序存儲器中提取指令,依據指令的條數標誌位確定本次需要並行運行的指令,依據指令的組別標誌位將本次需要並行運行的指令輸入指令寄存器裝置的不同指令寄存器中分別存放,沒有指令輸入的指令寄存器置空; S3執行所述指令寄存器中的指令。
7.根據權利要求I所述的超長指令字VLIW的處理方法,其特徵在於,在指令並行運行的一個運行周期內,步驟S2具體步驟包括 Sll按程序存儲器的地址提取指令,並提取在上ー個指令運行周期沒有發射的指令;S12將本次提取的指令和上一指令運行周期沒有發射的指令,按所述的指令在程序存儲器內存儲的先後順序進行排序; S13讀取按指令運行順序排序後指令的條數標誌位,根據每條指令中的條數標誌位判斷出本次並行運行的最後一條指令的位置,確定本次並行運行的指令的條數; S14讀取每個指令的組別標誌位,將本次並行運行的各指令輸入相對應的各指令寄存器中存放,本次運行周期沒有發射的指令輸入指令緩存模塊存放,且其他未有指令輸入的指令寄存器置空。
8.根據權利要求I所述的超長指令字VLIW的處理方法,其特徵在於,在並行指令的一個運行周期內,步驟S2具體步驟包括 S21在提取指令之前接收跳轉指令,依據跳轉指令按跳轉後的位置提取指令,上一指令運行周期沒有發射的指令無效; S22將步驟S21提取的指令按所述的指令在程序存儲器內存儲的先後順序進行排序,讀取提取的各指令的條數標誌位, 若提取的指令中,存在某一指令的條數標誌位表示該指令為本次並行運行的最後一條的指令時,確定本次並行指令的條數,跳轉到步驟S23 ; 若提取的指令中,不存在某一指令的條數標誌位表示該指令為本次並行運行的最後ー條的指令時,跳轉到步驟S24; S23通過讀取本次並行運行的指令的組別標誌位,依據本次並行運行的指令的組別標誌位,將本次並行運行的各指令輸入相對應的各指令寄存器中存放,其他本次運行周期沒有發射的指令輸入指令緩存模塊存放,且其他未有指令輸入的指令寄存器置空; S24所有指令存儲器置空,提取的指令輸入指令緩存模塊存放。
9.根據權利要求6至9任一所述的超長指令字VLIW的處理方法,其特徵在於在所述程序存儲器的每個存儲地址中存儲與指令組別數量相等條數的指令。
10.根據權利要求6所述的超長指令字VLIW的處理方法,其特徵在於所述指令的分組組別個數是根據處理指令的具體應用確定的。
全文摘要
本發明公開一種超長指令字VLIW的處理器和處理方法,主要為了提供一種取指簡便,運行周期短的超長指令字VLIW的處理器和處理方法。本發明超長指令字VLIW的處理器,將對指令進行分組判斷進入不同的指令處理通路硬體結構指令選擇模塊設置在指令寄存器之前,減少了執行裝置之前的邏輯電路;配合在指令進入指令寄存器前就通過判斷指令的組別信息,把指令存儲到相應的指令寄存器裝置中存儲,分別執行各個指令寄存器中的指令的處理方法,縮短了指令的運行周期。本發明通過將本次並行的指令存放在不同的指令寄存器,簡化了後期指令執行過程的複雜度,提高了處理器的頻率。
文檔編號G06F9/30GK102855120SQ201210343250
公開日2013年1月2日 申請日期2012年9月14日 優先權日2012年9月14日
發明者石晶林, 朱子元, 於亞軒 申請人:北京中科晶上科技有限公司