亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

16/32位混合架構(gòu)指令預(yù)取緩沖器裝置的制作方法

文檔序號:6434103閱讀:297來源:國知局
專利名稱:16/32位混合架構(gòu)指令預(yù)取緩沖器裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種指令預(yù)取緩沖器裝置,尤其涉及一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,通過一個表項緩存一條16位指令或者半條32位指令來簡化混合架構(gòu)指令取指,并提升取指性能。
背景技術(shù)
微處理器的設(shè)計中,指令取指是性能上重要的瓶頸,指令的取指影響流水線前級的指令供給,如果指令取指發(fā)生堵塞,則會影響下級流水線的執(zhí)行,流水線會出現(xiàn)氣泡,造成流水線下級空閑的狀況,這對資源和性能都是極大地浪費。流水線緩沖器的出現(xiàn)緩解了這個問題,當(dāng)后級流水線發(fā)生堵塞,前級流水可以把信息暫存入緩沖器后繼續(xù)工作,降低了流水線停滯的概率。目前,為了滿足在低成本的要求下獲得最大化的性能,處理器的指令集開始出現(xiàn)了變長指令集結(jié)構(gòu)。這些指令集中,基本分為兩種指令長度,指令長度較長的指令具有更多的操作數(shù)個數(shù),更長的立即數(shù)位數(shù)等,可以提供更高的性能,而指令長度較小的指令具有較高的代碼密度,占據(jù)更小的存儲空間,可以降低開發(fā)的成本。因此采用兩種長度的指令混合編程的架構(gòu),可以在性能和成本之間達到很好的平衡。目前主流的技術(shù)就是16/32位混合架構(gòu)。但是由于指令的長度不一樣,因此取指會很復(fù)雜,需要在取得指令的同時判斷該指令是哪種長度的指令,然后才能確定下一次取指的地址。這樣,會大大增加取指邏輯的復(fù)雜性,增加設(shè)計的風(fēng)險。

發(fā)明內(nèi)容
為了克服現(xiàn)有處理器的指令取指過程中流水線堵塞造成性能損失、對變長指令取指過程中邏輯過于復(fù)雜,設(shè)計風(fēng)險性高的問題,本發(fā)明提供一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,可以實現(xiàn)流水線緩沖功能,同時簡化對變長指令取指的復(fù)雜度,提升性能同時降低成本。為了解決上述技術(shù)問題采用的技術(shù)方案一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,包括循環(huán)緩沖器,用于連接于指令存儲器的輸出端,將從指令存儲器中取出的數(shù)據(jù)作為指令緩存起來,指令有16位和32位兩種長度,緩存過程中新指令以循環(huán)的方式覆蓋緩沖器內(nèi)最舊的指令;數(shù)據(jù)選通器,用于連接于循環(huán)緩沖器輸出端,在循環(huán)緩沖器和指令存儲器之間選通一路獲得指令,發(fā)往下級流水線,在指令旁路時選通指令存儲器,否則選通循環(huán)緩沖器;控制模塊,用于檢測循環(huán)緩沖器狀態(tài),控制模塊連接循環(huán)緩沖器,維護循環(huán)緩沖器中指令的創(chuàng)建,控制模塊連接數(shù)據(jù)選通器,為數(shù)據(jù)選通器提供選通信號,控制指令信息發(fā)送到下級流水線;當(dāng)控制模塊監(jiān)測循環(huán)緩沖器中沒有指令時,控制模塊控制數(shù)據(jù)選通器選通指令存儲器通路,指令存儲器中的指令將繞過循環(huán)緩沖器直接被發(fā)射到流水線后級;當(dāng)控制模塊監(jiān)測到循環(huán)緩沖器中存在指令時,控制模塊控制數(shù)據(jù)選通器選通循環(huán)緩沖器輸出的指令。進一步,每次從指令存儲器中取出數(shù)據(jù)的位寬與所訪問的指令存儲器的寬度相同,其中有效數(shù)據(jù)的位寬根據(jù)訪問地址的字對齊狀況不同而變化。再進一步,所述循環(huán)緩沖器以16位指令長度為單位緩存指令,所述單位緩存指包含的表項數(shù)目是可配置的。更進一步,循環(huán)緩沖器的每個表項容納一條16位指令或半條32位指令。作為優(yōu)選的一種方案控制模塊包括第一創(chuàng)建指針單元、第二創(chuàng)建指針單元、第一發(fā)射指針單元、第二發(fā)射指針單元和預(yù)解碼單元,所述第一創(chuàng)建指針單元和第二創(chuàng)建指針單元指示當(dāng)前從指令存儲器中獲取的數(shù)據(jù)在循環(huán)緩沖器中創(chuàng)建的位置,第二創(chuàng)建指針單元在第一創(chuàng)建指針單元基礎(chǔ)上偏移一個表項;第一發(fā)射指針單元和第二發(fā)射指針單元為當(dāng)前從循環(huán)緩沖器中讀取的目標(biāo)指令的位置,第二發(fā)射指針單元在第一發(fā)射指針單元的基礎(chǔ)上偏移一個表項。進一步,若向循環(huán)緩沖器中創(chuàng)建32位數(shù)據(jù)時,在第一創(chuàng)建指針單元和第二創(chuàng)建指針單元指向的表項中各創(chuàng)建16位數(shù)據(jù),同時第一創(chuàng)建指針單元和第二創(chuàng)建指針單元分別向后移動兩個表項;若向循環(huán)緩沖器中創(chuàng)建16位數(shù)據(jù)時,在第一創(chuàng)建指針單元指向的表項中創(chuàng)建16位數(shù)據(jù),第二創(chuàng)建指針單元對應(yīng)的表項不創(chuàng)建內(nèi)容,同時第一創(chuàng)建指針單元和第二創(chuàng)建指針單元分別向后移動一個表項。再進一步,當(dāng)數(shù)據(jù)選通器從循環(huán)緩沖器中選通32位指令時,將第一發(fā)射指針單元和第二發(fā)射指針單元指向的表項中的數(shù)據(jù)組合成32位指令輸出,同時第一發(fā)射指針單元和第二發(fā)射指針單元分別向后移動兩個表項;當(dāng)數(shù)據(jù)選通器從循環(huán)緩沖器中選通16位指令時,將第一發(fā)射指針單元指向的表項中的16位指令輸出,同時第一發(fā)射指針單元和第二發(fā)射指針單元分別向后移動一個表項。控制核心通過預(yù)譯碼單元譯碼對從指令存儲器中取出的數(shù)據(jù)進行預(yù)譯碼,判斷當(dāng)前指令為16位或者32位指令。作為優(yōu)選的另一種方案在循環(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包括1條16位或者32位指令,該指令不進入循環(huán)緩沖器,直接進入后級流水線?;蛘呤窃谘h(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包含1條 16位指令及其他指令,16位指令不進入循環(huán)緩沖器,直接進入后級流水線,剩余指令進入循環(huán)緩沖器。再或者是,在循環(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包含半條32位指令,則半條32位指令先進入循環(huán)緩沖器緩存,等待后續(xù)半條指令進入循環(huán)緩沖器后一起發(fā)射到后級流水線。本發(fā)明和現(xiàn)有的流水線緩沖器技術(shù)和變長指令取指技術(shù)相比,具有以下有益效果1)節(jié)省資源,本發(fā)明中循環(huán)緩沖器中每個表項只緩存變長指令中指令長度較小的指令,指令長度較大的指令通過兩個表項分開緩存,和傳統(tǒng)的一個表項存儲一條指令的流水線緩沖器相比,對硬件資源的利用更加充分;2)提高性能,本發(fā)明通過指令的旁路,當(dāng)循環(huán)緩沖器中沒有指令的時候可以將指令直接發(fā)送到下級流水線,不需要經(jīng)過循環(huán)緩沖器,省去了在循環(huán)緩沖器中緩存的一個周期; 3)降低設(shè)計復(fù)雜度,本發(fā)明通過循環(huán)緩沖器將指令取指地址的計算和16位32位指令的判斷分隔開來,不需要在取得指令的同時馬上譯碼判斷指令的長度從而計算得到下一條指令的取指地址,而是只需要通過簡單的對循環(huán)緩沖器的維護,便可判斷16位32位指令并且發(fā)往下級流水線。


圖1為本發(fā)明第圖2為本發(fā)明第圖3為本發(fā)明第圖4為本發(fā)明第圖5為本發(fā)明第圖6為本發(fā)明第圖7為本發(fā)明第符號說明循環(huán)緩沖器10控制模塊14第一創(chuàng)建指針單元18第一發(fā)射指針單元22指令存儲器沈
實施例的結(jié)構(gòu)圖。
實施例中循環(huán)緩沖器表項的結(jié)構(gòu)圖。 實施例對指令進行旁路的第一種情況的示意圖。 實施例對指令進行旁路的第二種情況的示意圖。 實施例對指令進行旁路的第三種情況的示意圖。 實施例在不能旁路時對指令的處理情況的示意圖< 實施例在處理一段程序的情況的示意圖。
數(shù)據(jù)選通器12 指令預(yù)譯碼單元16 第二創(chuàng)建指針單元20 第二發(fā)射指針單元M 指令譯碼單元觀。
具體實施例方式下面結(jié)合附圖對本發(fā)明做進一步說明。參照圖1 圖7,一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,包括循環(huán)緩沖器10,用于連接于指令存儲器沈的輸出端,將從指令存儲器沈中取出的數(shù)據(jù)作為指令緩存起來,指令有16位和32位兩種長度,緩存過程中新指令以循環(huán)的方式覆蓋緩沖器內(nèi)最舊的指令;數(shù)據(jù)選通器12,用于連接于循環(huán)緩沖器輸出端,在循環(huán)緩沖器和指令存儲器之間選通一路獲得指令,發(fā)往下級流水線,在指令旁路時選通指令存儲器,否則選通循環(huán)緩沖器;控制模塊14,用于檢測循環(huán)緩沖器狀態(tài),控制模塊連接循環(huán)緩沖器,維護循環(huán)緩沖器中指令的創(chuàng)建,控制模塊連接數(shù)據(jù)選通器,為數(shù)據(jù)選通器提供選通信號,控制指令信息發(fā)送到下級流水線;當(dāng)控制模塊14監(jiān)測循環(huán)緩沖器10中沒有指令時,控制模塊14控制數(shù)據(jù)選通器12 選通指令存儲器26通路,指令存儲器沈中的指令將繞過循環(huán)緩沖器10直接被發(fā)射到流水線后級;當(dāng)控制模塊14監(jiān)測到循環(huán)緩沖器10中存在指令時,控制模塊14控制數(shù)據(jù)選通器 12選通循環(huán)緩沖器10輸出的指令。每次從指令存儲器中取出數(shù)據(jù)的位寬與所訪問的指令存儲器的寬度相同,其中有
6效數(shù)據(jù)的位寬根據(jù)訪問地址的字對齊狀況不同而變化。所述循環(huán)緩沖器以16位指令長度為單位緩存指令,所述單位緩存指包含的表項數(shù)目是可配置的。循環(huán)緩沖器的每個表項容納一條16位指令或半條32位指令。請參照圖1所示,為本發(fā)明第一實施例的結(jié)構(gòu)圖。本裝置在處理器流水線中位于指令存儲器26的出口端。本裝置將指令存儲器沈中取出的指令進行緩存后發(fā)送至指令譯碼單元觀進行譯碼,或者將指令存儲器沈中取出的指令不經(jīng)過緩存,直接旁路至指令譯碼單元觀進行譯碼。指令存儲器26的寬度為32位,每次訪問指令存儲器沈都會得到32位數(shù)據(jù)。指令存儲器26中的指令有16位指令和32位指令兩種。訪問指令存儲器沈的地址有字對齊和半字對齊兩種,若訪問地址是字對齊的,則從指令存儲器26中取出32位數(shù)據(jù)都是有效數(shù)據(jù),數(shù)據(jù)的組織形式有四種一條32位指令、兩條16位指令、一條16位指令和半條32位指令、半條32位指令和另一個半條32位指令(分別屬于不同的32位指令);若訪問地址是半字對齊的,則從指令存儲器沈中取出32位數(shù)據(jù)中只有16位有效數(shù)據(jù),數(shù)據(jù)的組織形式有兩種一條16位指令、半條32位指令。本裝置包括一循環(huán)緩沖器10,一數(shù)據(jù)選通器12,一控制模塊14。循環(huán)緩沖器10以表項為基本單位,表項的數(shù)目是可配置的,本實施例中表項的數(shù)目為八,每個表項中可以存儲一條16位指令或者半條32位指令,以及伴隨指令的一些控制信息??刂颇K14通過第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20將從指令存儲器沈中取出的有效數(shù)據(jù)創(chuàng)建到循環(huán)緩沖器10中,第二創(chuàng)建指針單元20在第一創(chuàng)建指針單元18偏移一位的基礎(chǔ)上得到。 若往循環(huán)緩沖器10中創(chuàng)建32位數(shù)據(jù),則將32位數(shù)據(jù)拆分為兩個16位數(shù)據(jù),分別存儲到第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20所指的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動兩位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項;若往循環(huán)緩沖器 10中創(chuàng)建16位數(shù)據(jù),則將16位數(shù)據(jù)直接存儲到第一創(chuàng)建指針單元18所指的表項中,第二創(chuàng)建指針單元20對應(yīng)的表項不創(chuàng)建內(nèi)容,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元 20分別向后移動一位,指向下一次將要存儲數(shù)據(jù)的表項??刂颇K14通過第一發(fā)射指針單元22和第二發(fā)射指針單元M從循環(huán)緩沖器10中選取數(shù)據(jù),拼裝出具體指令后輸出到數(shù)據(jù)選通器12的輸入端,第二發(fā)射指針單元M在第一發(fā)射指針單元22偏移一位的基礎(chǔ)上得到。若從循環(huán)緩沖器10中發(fā)射32位指令,則第一發(fā)射指針單元22和第二發(fā)射指針單元M 所指的表項中的數(shù)據(jù)組合成一條32位指令輸出到數(shù)據(jù)選通器12的輸入端,同時第一發(fā)射指針單元22和第二發(fā)射指針單元M分別向后移動兩位,指向下一次將要發(fā)射數(shù)據(jù)的表項; 若從循環(huán)緩沖器10中發(fā)射一條16位指令,則第一發(fā)射指針單元22所指的表項中的數(shù)據(jù)作為一條16位指輸出到數(shù)據(jù)選通器12的輸入端,同時第一發(fā)射指針單元22和第二發(fā)射指針單元M分別向后移動一位,指向下一次將要發(fā)射數(shù)據(jù)的表項。另外,控制模塊14通過第一發(fā)射指針單元22檢測循環(huán)緩沖器10的狀態(tài),因為第一發(fā)射指針單元22所指向的表項中的數(shù)據(jù)是循環(huán)緩沖器10中最老的數(shù)據(jù),所以當(dāng)?shù)谝话l(fā)射指針單元22所指向的表項中的數(shù)據(jù)無效時,表示循環(huán)緩沖器10中沒有指令。循環(huán)緩沖器10中數(shù)據(jù)的創(chuàng)建和發(fā)射都采用循環(huán)的方式,從循環(huán)緩沖器10的一端開始創(chuàng)建和發(fā)射,隨著數(shù)據(jù)的創(chuàng)建和發(fā)射,第一創(chuàng)建指針單元18、第二創(chuàng)建指針單元20、第一發(fā)射指針單元22、第二發(fā)射指針單元M向循環(huán)緩沖器 10的另一端移動,直至移動到循環(huán)緩沖器10到另一端端口之后,第一創(chuàng)建指針單元18、第二創(chuàng)建指針單元20、第一發(fā)射指針單元22、第二發(fā)射指針單元M重新回到循環(huán)緩沖器10 的起始端開始創(chuàng)建和發(fā)射數(shù)據(jù),創(chuàng)建的新數(shù)據(jù)依次覆蓋之前的舊數(shù)據(jù),如此循環(huán)往復(fù)。運行過程中,第一發(fā)射指針單元22、第二發(fā)射指針單元M不能超過第一創(chuàng)建指針單元18、第二創(chuàng)建指針單元20,因為數(shù)據(jù)需要先創(chuàng)建到循環(huán)緩沖器10中才能被發(fā)射,最極端的情況是第一發(fā)射指針單元22、第二發(fā)射指針單元M和第一創(chuàng)建指針單元18、第二創(chuàng)建指針單元20 重合,表示循環(huán)緩沖器中沒有指令可以被發(fā)射??刂颇K14通過指令預(yù)譯碼單元16對指令存儲器26中取出的數(shù)據(jù)進行預(yù)譯碼,得出數(shù)據(jù)中是否至少包括一條完整的16位或者32 位指令。控制模塊14通過數(shù)據(jù)選通器12從指令存儲器沈和循環(huán)緩沖器10中選通一路獲得具體指令,發(fā)往指令譯碼單元觀進行譯碼??刂颇K14判斷下屬條件一、譯碼得出從指令存儲器26中取出的數(shù)據(jù)中至少包括一條指令;二、此時循環(huán)緩沖器10中沒有指令。若同時滿足上述兩個條件,則對指令進行旁路,控制模塊14控制數(shù)據(jù)選通器12選通指令存儲器26輸出的指令,將指令直接旁路到下級流水線,若此時從指令存儲器沈中取出的數(shù)據(jù)包含多于一條指令,則控制模塊14將剩余的數(shù)據(jù)通過創(chuàng)建指針創(chuàng)建到循環(huán)緩沖器10中。若上述兩個條件中至少有一個不滿足,則不能對指令進行旁路,控制模塊14通過第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20將從指令存儲器沈中取出的數(shù)據(jù)創(chuàng)建到循環(huán)緩沖器10 中。請參照圖2所示,為本發(fā)明第一實施例中循環(huán)緩沖器10中一個表項的結(jié)構(gòu)圖。本實施例中一個表項包含18比特信息。其中16比特為從指令存儲器沈中取出的指令數(shù)據(jù), 有可能是一條16位指令,或者半條32位指令。表項中包含一比特異常信息,用來表示在訪問指令存儲器26時發(fā)生的異常信息,本實施例中表示發(fā)生訪問錯誤異常。表項中包含一比特的有效位信息,用來表示該表項中的數(shù)據(jù)是有效的,否則不管表項中其他比特為什么值, 均是無效的,該有效位在控制模塊14通過第一創(chuàng)建指針單元18或者第二創(chuàng)建指針單元20 將數(shù)據(jù)創(chuàng)建到表項中時被置位,在控制模塊14通過第一發(fā)射指針單元22或者第二發(fā)射指針單元M將數(shù)據(jù)從表項中發(fā)射出去時被清零。請參照圖3所示,為本發(fā)明第一實施例在跳轉(zhuǎn)到字對齊地址時對一條16位指令進行旁路時的一種情況。圖3(A)為一段程序,當(dāng)程序發(fā)生跳轉(zhuǎn),轉(zhuǎn)移到該程序段時,因為程序段的入口地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖3(A)中所示的程序段指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為一條16位指令(指令1)和半條32位指令(指令i)??刂颇K14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中沒有有效數(shù)據(jù),表示循環(huán)緩沖器10中沒有指令。因此,滿足指令旁路的兩個條件。如圖3(B)所示,控制模塊14控制數(shù)據(jù)選通器12選通指令內(nèi)存的數(shù)據(jù),將其中的一條完整指令,即指令1發(fā)往指令譯碼單元觀。因為從指令存儲器26取出的數(shù)據(jù)中除了被旁路的指令外,還包含其他數(shù)據(jù),這里具體為半條指令2,控制模塊14將這半條指令2創(chuàng)建到第一創(chuàng)建指針單元18所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動一位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。請參照圖4所示,為本發(fā)明第一實施例在跳轉(zhuǎn)到字對齊地址時對一條32位指令進行旁路時的一種情況。圖4(A)為一段程序,當(dāng)程序發(fā)生跳轉(zhuǎn),轉(zhuǎn)移到該程序段時,因為程序段的入口地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖3 (A)中所示的程序段指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為一條32位指令(指令1)??刂颇K14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中沒有有效數(shù)據(jù),表示循環(huán)緩沖器10中沒有指令。因此,滿足指令旁路的兩個條件。如圖4(B)所示,控制模塊14控制數(shù)據(jù)選通器12選通指令內(nèi)存的數(shù)據(jù),將其中的一條完整指令,即指令1發(fā)往指令譯碼單元觀。因為從指令存儲器沈取出的數(shù)據(jù)中除了被旁路的指令外,不包含其他數(shù)據(jù),所以沒有數(shù)據(jù)創(chuàng)建到循環(huán)緩沖器10中。請參照圖5所示,為本發(fā)明第一實施例在跳轉(zhuǎn)到非字對齊地址時對一條16位指令進行旁路時的一種情況。圖5(A)為一段程序,當(dāng)程序發(fā)生跳轉(zhuǎn),轉(zhuǎn)移到該程序段時,因為程序段的入口地址是非字對齊的,所以從指令存儲器26中取出16位有效數(shù)據(jù),控制模塊14 通過指令預(yù)譯碼單元16對取出的16位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖5(A)中所示的程序段指令排布情況,通過預(yù)譯碼得出此16位數(shù)據(jù)的組織形式為一條16位指令(指令1)??刂颇K 14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中沒有有效數(shù)據(jù),表示循環(huán)緩沖器10中沒有指令。因此,滿足指令旁路的兩個條件。 如圖5(B)所示,控制模塊14控制數(shù)據(jù)選通器12選通指令內(nèi)存的數(shù)據(jù),將其中的一條完整指令,即指令1發(fā)往指令譯碼單元觀。因為從指令存儲器沈取出的數(shù)據(jù)中除了被旁路的指令外,不包含其他數(shù)據(jù),所以沒有數(shù)據(jù)創(chuàng)建到循環(huán)緩沖器10中。請參照圖6所示,為本發(fā)明第一實施例在跳轉(zhuǎn)到非字對齊地址時不能對一條32位指令進行旁路時的一種情況。圖6(A)為一段程序,當(dāng)程序發(fā)生跳轉(zhuǎn),轉(zhuǎn)移到該程序段時,因為程序段的入口地址是非字對齊的,所以從指令存儲器沈中取出16位有效數(shù)據(jù),控制模塊 14通過指令預(yù)譯碼單元16對取出的16位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖6 (A)中所示的程序段指令排布情況,通過預(yù)譯碼得出此16位數(shù)據(jù)的組織形式為半條32位指令(指令1)。取出的數(shù)據(jù)沒有包含一條完整的指令,因此,不滿足指令旁路條件。如圖6 (B)所示,控制模塊14將這半條指令1創(chuàng)建到第一創(chuàng)建指針單元18所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動一位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。請參照圖7所示,為本發(fā)明第一實施例在處理一段程序的情況。如圖7㈧所示, 該段程序分為兩個小段,第一段的入口地址是字對齊的,第二段的入口地址是非字對齊的。當(dāng)程序跳轉(zhuǎn)到第一段程序時,因為入口地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼, 根據(jù)圖7(A)中所示的程序段指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為一條16位指令(指令1)和半條32位指令(指令i)??刂颇K14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中沒有有效數(shù)據(jù),表示循環(huán)緩沖器10中沒有指令。因此,滿足指令旁路的兩個條件??刂颇K14控制數(shù)據(jù)選通器12選通指令內(nèi)存的數(shù)據(jù),將其中的一條完整指令,即指令1發(fā)往指令譯碼單元觀。因為從指令存儲器26取出的數(shù)據(jù)中除了被旁路的指令外,還包含其他數(shù)據(jù),這里具體為半條指令2,如圖7(B)所示,控制模塊14將這半條指令2創(chuàng)建到第一創(chuàng)建指針單元18所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動一位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。下一周期,因為訪問地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖7 (A)中所示的程序指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為半條32位指令(指令 2)和另外半條32位指令(指令幻??刂颇K14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中有有效數(shù)據(jù),表示循環(huán)緩沖器10 中有指令。所以不能對指令進行旁路。這時第二發(fā)射指針單元M所指向的表項中沒有有效的數(shù)據(jù),因此整個循環(huán)緩沖器10中只有半條指令(指令2、,因此也不能從循環(huán)緩沖器10 中選取指令發(fā)射??刂颇K14控制數(shù)據(jù)選通器12不選通循環(huán)緩沖器10以及指令存儲器沈中的任何一路,即沒有指令發(fā)射到指令譯碼單元觀。如圖7(C)所示,控制模塊14將半條指令2和半條指令3創(chuàng)建到第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動兩位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。當(dāng)程序跳轉(zhuǎn)到第二段程序時,因為入口地址是非字對齊的,所以從指令存儲器沈中取出16位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的16位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖7(A)中所示的程序指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為半條32位指令(指令16)。取出的數(shù)據(jù)沒有包含一條完整的指令,所以不能對指令進行旁路。 如圖7(D)所示,控制模塊14將半條指令16創(chuàng)建到第一創(chuàng)建指針單元18所指向的表項中, 同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動一位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。下一周期,因為訪問地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖7 (A)中所示的程序指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為半條32位指令(指令 16)和一條16位指令(指令17)。控制模塊14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中有有效數(shù)據(jù),表示循環(huán)緩沖器10中有指令。所以不能對指令進行旁路。這時第二發(fā)射指針單元M所指向的表項中沒有有效的數(shù)據(jù),因此整個循環(huán)緩沖器10中只有半條指令(指令16),因此也不能從循環(huán)緩沖器10 中選取指令發(fā)射??刂颇K14控制數(shù)據(jù)選通器12不選通循環(huán)緩沖器10以及指令存儲器 26中的任何一路,即沒有指令發(fā)射到指令譯碼單元觀。如圖7(E)所示,控制模塊14將半條指令16和一條指令17創(chuàng)建到第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動兩位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。下一周期,因為訪問地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖7 (A)中所示的程序指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為一條32位指令(指令 18)??刂颇K14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中有有效數(shù)據(jù),表示循環(huán)緩沖器10中有指令。所以不能對指令進行旁路。如圖7(F)所示,控制模塊14控制數(shù)據(jù)選通器12從循環(huán)緩沖器10中選取指令發(fā)射到指令譯碼單元28,因為此時第一發(fā)射指針單元22和第二發(fā)射指針單元M所指向的表項中的數(shù)據(jù)可以合成一條完整的32位指令,即指令16,所以從循環(huán)緩沖器10中發(fā)射一條 32位指令,同時第一發(fā)射指針單元22和第二發(fā)射指針單元M分出向后偏移兩位,指向下一次將要發(fā)射數(shù)據(jù)的表項。控制模塊14將一條指令18創(chuàng)建到第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20分別向后移動兩位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。 經(jīng)過兩個周期,第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元20已經(jīng)在移動到循環(huán)緩沖器10的一端端口之后又重新回到起始端口開始創(chuàng)建數(shù)據(jù),一次覆蓋已經(jīng)被發(fā)射的舊數(shù)據(jù),如圖7(G)所示。此時因為訪問地址是字對齊的,所以從指令存儲器沈中取出32位有效數(shù)據(jù),控制模塊14通過指令預(yù)譯碼單元16對取出的32位數(shù)據(jù)進行預(yù)譯碼,根據(jù)圖 7(A)中所示的程序指令排布情況,通過預(yù)譯碼得出此32位數(shù)據(jù)的組織形式為一條32位指令(指令20)。控制模塊14通過指令第一發(fā)射指針單元22檢測循環(huán)緩沖器10狀態(tài),此時第一發(fā)射指針單元22指向的表項中有有效數(shù)據(jù),表示循環(huán)緩沖器10中有指令。所以不能對指令進行旁路。如圖7(G)所示,控制模塊14控制數(shù)據(jù)選通器12從循環(huán)緩沖器10中選取指令發(fā)射到指令譯碼單元28,因為此時第一發(fā)射指針單元22和第二發(fā)射指針單元M所指向的表項中的數(shù)據(jù)可以合成一條完整的32位指令,即指令18,所以從循環(huán)緩沖器10中發(fā)射一條32位指令,同時第一發(fā)射指針單元22和第二發(fā)射指針單元M分別向后移動兩位, 指向下一次將要發(fā)射數(shù)據(jù)的表項??刂颇K14將一條指令20創(chuàng)建到第一創(chuàng)建指針單元18 和第二創(chuàng)建指針單元20所指向的表項中,同時第一創(chuàng)建指針單元18和第二創(chuàng)建指針單元 20分別向后移動兩位,指向下一次將要創(chuàng)建數(shù)據(jù)的表項。
1權(quán)利要求
1.一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于所述指令預(yù)取緩沖器裝置包括循環(huán)緩沖器,用于連接于指令存儲器的輸出端,將從指令存儲器中取出的數(shù)據(jù)作為指令緩存起來,指令有16位和32位兩種長度,緩存過程中新指令以循環(huán)的方式覆蓋緩沖器內(nèi)最舊的指令;數(shù)據(jù)選通器,用于連接于循環(huán)緩沖器輸出端,在循環(huán)緩沖器和指令存儲器之間選通一路獲得指令,發(fā)往下級流水線,在指令旁路時選通指令存儲器,否則選通循環(huán)緩沖器;控制模塊,用于檢測循環(huán)緩沖器狀態(tài),控制模塊連接循環(huán)緩沖器,維護循環(huán)緩沖器中指令的創(chuàng)建,控制模塊連接數(shù)據(jù)選通器,為數(shù)據(jù)選通器提供選通信號,控制指令信息發(fā)送到下級流水線;當(dāng)控制模塊監(jiān)測循環(huán)緩沖器中沒有指令時,控制模塊控制數(shù)據(jù)選通器選通指令存儲器通路,指令存儲器中的指令將繞過循環(huán)緩沖器直接被發(fā)射到流水線后級;當(dāng)控制模塊監(jiān)測到循環(huán)緩沖器中存在指令時,控制模塊控制數(shù)據(jù)選通器選通循環(huán)緩沖器輸出的指令。
2.如權(quán)利要求1所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于每次從指令存儲器中取出數(shù)據(jù)的位寬與所訪問的指令存儲器的寬度相同,其中有效數(shù)據(jù)的位寬根據(jù)訪問地址的字對齊狀況不同而變化。
3.如權(quán)利要求1所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于所述循環(huán)緩沖器以16位指令長度為單位緩存指令,所述單位緩存指包含的表項數(shù)目是可配置的。
4.如權(quán)利要求1所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于循環(huán)緩沖器的每個表項容納一條16位指令或半條32位指令。
5.如權(quán)利要求1 4之一所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于 所述控制模塊包括第一創(chuàng)建指針單元、第二創(chuàng)建指針單元、第一發(fā)射指針單元、第二發(fā)射指針單元和預(yù)解碼單元,所述第一創(chuàng)建指針單元和第二創(chuàng)建指針單元指示當(dāng)前從指令存儲器中獲取的數(shù)據(jù)在循環(huán)緩沖器中創(chuàng)建的位置,第二創(chuàng)建指針單元在第一創(chuàng)建指針單元基礎(chǔ)上偏移一個表項;第一發(fā)射指針單元和第二發(fā)射指針單元為當(dāng)前從循環(huán)緩沖器中讀取的目標(biāo)指令的位置,第二發(fā)射指針單元在第一發(fā)射指針單元的基礎(chǔ)上偏移一個表項。
6.如權(quán)利要求5所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于若向循環(huán)緩沖器中創(chuàng)建32位數(shù)據(jù)時,在第一創(chuàng)建指針單元和第二創(chuàng)建指針單元指向的表項中各創(chuàng)建16位數(shù)據(jù),同時第一創(chuàng)建指針單元和第二創(chuàng)建指針單元分別向后移動兩個表項;若向循環(huán)緩沖器中創(chuàng)建16位數(shù)據(jù)時,在第一創(chuàng)建指針單元指向的表項中創(chuàng)建16位數(shù)據(jù),第二創(chuàng)建指針單元對應(yīng)的表項不創(chuàng)建內(nèi)容,同時第一創(chuàng)建指針單元和第二創(chuàng)建指針單元分別向后移動一個表項。
7.如權(quán)利要求5所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于當(dāng)數(shù)據(jù)選通器從循環(huán)緩沖器中選通32位指令時,將第一發(fā)射指針單元和第二發(fā)射指針單元指向的表項中的數(shù)據(jù)組合成32位指令輸出,同時第一發(fā)射指針單元和第二發(fā)射指針單元分別向后移動兩個表項;當(dāng)數(shù)據(jù)選通器從循環(huán)緩沖器中選通16位指令時,將第一發(fā)射指針單元指向的表項中的16位指令輸出,同時第一發(fā)射指針單元和第二發(fā)射指針單元分別向后移動一個表項。
8.如權(quán)利要求1 4之一所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于在循環(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包括1條16位或者32位指令,該指令不進入循環(huán)緩沖器,直接進入后級流水線。
9.如權(quán)利要求1 4之一所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于 在循環(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包含1條16位指令及其他指令,16位指令不進入循環(huán)緩沖器,直接進入后級流水線,剩余指令進入循環(huán)緩沖器。
10.如權(quán)利要求1 4之一所述的16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,其特征在于在循環(huán)緩沖器為空的情況下,若從指令存儲器中取出的數(shù)據(jù)中包含半條32位指令,則半條32位指令先進入循環(huán)緩沖器緩存,等待后續(xù)半條指令進入循環(huán)緩沖器后一起發(fā)射到后級流水線。
全文摘要
一種16/32位混合架構(gòu)指令預(yù)取緩沖器裝置,包括循環(huán)緩沖器,用于將從指令存儲器中取出的數(shù)據(jù)作為指令緩存起來,指令有16位和32位兩種長度,緩存過程中新指令以循環(huán)的方式覆蓋緩沖器內(nèi)最舊的指令;數(shù)據(jù)選通器,用于在循環(huán)緩沖器和指令存儲器之間選通一路獲得指令,發(fā)往下級流水線,在指令旁路時選通指令存儲器,否則選通循環(huán)緩沖器;當(dāng)控制模塊監(jiān)測循環(huán)緩沖器中沒有指令時,控制數(shù)據(jù)選通器選通指令存儲器通路,指令存儲器中的指令將繞過循環(huán)緩沖器直接被發(fā)射到流水線后級;當(dāng)監(jiān)測到循環(huán)緩沖器中存在指令時,控制數(shù)據(jù)選通器選通循環(huán)緩沖器輸出的指令。本發(fā)明實現(xiàn)流水線緩沖功能,同時簡化對變長指令取指的復(fù)雜度,提升性能同時降低成本。
文檔編號G06F9/38GK102436367SQ20111028770
公開日2012年5月2日 申請日期2011年9月26日 優(yōu)先權(quán)日2011年9月26日
發(fā)明者孟建熠, 李春強, 郭宇波, 陳晨 申請人:杭州中天微系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1