專利名稱:基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器的領(lǐng)域,尤其是一種預(yù)解碼裝置。
背景技術(shù):
在處理器領(lǐng)域中,為了平衡指令操作的功能性和存儲(chǔ)成本,部分處理器采用可變長度指令集,一般來說,可變長度指令集包括具有基礎(chǔ)尺寸的指令以及具有整數(shù)倍基礎(chǔ)尺寸的較長指令,舉例來說,中天公司的16/32位混編指令,以及ARM的thumb 2 (16/32位混編)指令集。可變長度指令集的兼顧了指令功能和存儲(chǔ)成本的特點(diǎn)所帶來的缺點(diǎn)是,增加了指令解碼的難度,現(xiàn)有的解碼方法一般都是在確定了指令邊界后,按照16位和32位分別解碼的方法。在現(xiàn)有廣泛處理器架構(gòu)中,通過片上一級(jí)或多級(jí)高速緩沖存儲(chǔ)器以緩存所需的指令和數(shù)據(jù),以期獲得更高的處理器性能。一般情況下,處理器從指令高速緩沖存儲(chǔ)器中讀取指令,然后開始處理指令數(shù)據(jù)。而為了進(jìn)一步挖掘處理器性能,現(xiàn)有多數(shù)高性能處理器在第一級(jí)高速緩沖存儲(chǔ)器之前就開始對(duì)指令進(jìn)行處理,即對(duì)指令進(jìn)行部分有效信息的預(yù)解碼,這樣的預(yù)解碼裝置存在于片上第一級(jí)緩沖存儲(chǔ)器和第二級(jí)緩沖存儲(chǔ)器或片外存儲(chǔ)器之間,第一級(jí)緩沖存儲(chǔ)器存儲(chǔ)預(yù)譯碼信息,以期望在流水線處理器取指令之后有更好的時(shí)序性能。在可變長度指令集的處理器架構(gòu)中,所遇到的問題是,由于指令在數(shù)據(jù)塊中的位置是不確定的,即指令邊界是未知的,如果需要對(duì)數(shù)據(jù)塊進(jìn)行正確的譯碼,就必須要確定指令的邊界,而現(xiàn)有通常的做法是上述的預(yù)解碼裝置的首要工作就是確定指令的邊界,然后根據(jù)指令邊界得到的指令進(jìn)行下一步的解碼工作,這種做法的缺點(diǎn)在于,對(duì)指令的解碼是串行的操作,如果需要更多的預(yù)解碼信息,就需要更寬松的時(shí)序要求,而在高性能的流水線處理器中,插入于兩級(jí)緩沖存儲(chǔ)器之間的預(yù)解碼器往往不能完成更多的操作而只是得到指令邊界指示信息。比如,分支跳轉(zhuǎn)的響應(yīng)速度對(duì)流水線處理器的影響很大,為了提高性能, 往往希望更早的得到分支跳轉(zhuǎn)等預(yù)解碼信息,而現(xiàn)有的預(yù)解碼裝置不能獲得更多有效的信息用于提前流水線處理器下級(jí)操作速度和降低流水線處理器的下級(jí)設(shè)計(jì)難度,這樣的方式不利于進(jìn)一步挖掘處理器的性能。
發(fā)明內(nèi)容
為了克服在片上第一級(jí)高速緩存和片上第二級(jí)高速緩存或片外存儲(chǔ)器之間的預(yù)解碼裝置不能獲取更多指令解碼信息量、限制了處理器性能的不足,本發(fā)明提供了一種在滿足時(shí)序要求下能獲取更多有用解碼信息、提升處理器性能的基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是—種基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置,所述預(yù)解碼裝置包括數(shù)據(jù)回填緩沖器,用于緩存來自片外的指令數(shù)據(jù);
第二級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù);第一級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù)和預(yù)解碼信息;并行指令預(yù)解碼單元,用于從第二級(jí)高速緩存或數(shù)據(jù)回填緩沖器中選擇指令數(shù)據(jù)塊作為輸入,將獲取的指令數(shù)據(jù)按照最短指令長度劃分,并對(duì)每一個(gè)劃分后數(shù)據(jù)塊按照可變長度指令集中所有指令長度格式對(duì)所需信息進(jìn)行并行解碼,并產(chǎn)生預(yù)解碼信息,所述預(yù)解碼信息包括所有長度指令的正確解碼信息和長度整數(shù)倍于最短指令長度指令的冗余解碼信息,將該預(yù)解碼信息合并指令數(shù)據(jù)塊送入第一級(jí)高速緩存中;預(yù)解碼數(shù)據(jù)封裝單元,用于通過指令pc確定當(dāng)前指令數(shù)據(jù)塊中的第一條指令位置,并通過指令長度標(biāo)識(shí)位確定數(shù)據(jù)塊中的所有指令的指令邊界,按照指令邊界選擇對(duì)應(yīng)指令的預(yù)解碼信息并舍棄預(yù)解碼信息中的多余解碼信息,封裝為按照指令的預(yù)解碼信息。作為優(yōu)選的一種方案并行預(yù)解碼單元將第二級(jí)高速緩存中獲取的指令數(shù)據(jù)與并行預(yù)解碼產(chǎn)生的預(yù)解碼信息共同發(fā)送到第一級(jí)高速緩存中存儲(chǔ)。本發(fā)明的有益效果主要表項(xiàng)在更快更多的獲取指令預(yù)解碼信息,平衡處理器各級(jí)的解碼難度,提升處理器的性能。
圖1為一種基于兩級(jí)片上緩存的預(yù)解碼裝置示意圖。圖2為該裝置中預(yù)解碼單元示意圖。圖3位該裝置中預(yù)解碼信息封裝單元示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)D1 圖3,一種基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置,所述預(yù)解碼裝置包括數(shù)據(jù)回填緩沖器,用于緩存來自片外的指令數(shù)據(jù);第二級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù);第一級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù)和預(yù)解碼信息;并行指令預(yù)解碼單元,用于從第二級(jí)高速緩存或數(shù)據(jù)回填緩沖器中選擇指令數(shù)據(jù)塊作為輸入,將獲取的指令數(shù)據(jù)按照最短指令長度劃分,并對(duì)每一個(gè)劃分后數(shù)據(jù)塊按照可變長度指令集中所有指令長度格式對(duì)所需信息進(jìn)行并行解碼,并產(chǎn)生預(yù)解碼信息,所述預(yù)解碼信息包括所有長度指令的正確解碼信息和長度整數(shù)倍于最短指令長度指令的冗余解碼信息,將該預(yù)解碼信息合并指令數(shù)據(jù)塊送入第一級(jí)高速緩存中;預(yù)解碼數(shù)據(jù)封裝單元,用于通過指令pc確定當(dāng)前指令數(shù)據(jù)塊中的第一條指令位置,并通過指令長度標(biāo)識(shí)位確定數(shù)據(jù)塊中的所有指令的指令邊界,按照指令邊界選擇對(duì)應(yīng)指令的預(yù)解碼信息并舍棄預(yù)解碼信息中的多余解碼信息,封裝為按照指令的預(yù)解碼信息。并行預(yù)解碼單元將第二級(jí)高速緩存中獲取的指令數(shù)據(jù)與并行預(yù)解碼產(chǎn)生的預(yù)解碼信息共同發(fā)送到第一級(jí)高速緩存中存儲(chǔ)。本實(shí)施例中,數(shù)據(jù)回填緩沖器,其緩存來自片外的指令數(shù)據(jù),該數(shù)據(jù)用于回填片上第二級(jí)高速緩存,經(jīng)過預(yù)解碼單元預(yù)解碼后,該數(shù)據(jù)用于回填片上第一級(jí)高速緩存,該數(shù)據(jù)緩沖器為固定數(shù)據(jù)長度(如圖1所示為64位寬)。第二級(jí)高速緩存,為較大容量的指令數(shù)據(jù)高速緩存,其為預(yù)解碼單元提供指令數(shù)據(jù),一次讀取操作,會(huì)返回固定長度的指令數(shù)據(jù)塊(如圖1所示為64位),其通過數(shù)據(jù)回填緩沖器獲取其自身的回填指令數(shù)據(jù)。并行預(yù)解碼單元,如圖2所示,其包含四個(gè)并行預(yù)解碼子單元,預(yù)解碼單元將64位指令數(shù)據(jù)劃分為4個(gè)半字(16位),每個(gè)預(yù)解碼子單元對(duì)每個(gè)半字進(jìn)行預(yù)解碼,如圖2所示, 預(yù)解碼子單元中有兩個(gè)解碼單元,16位解碼單元和32位解碼單元,即,不僅將半字按照指令集中16位編碼長度的指令格式進(jìn)行解碼,又將半字按照指令集中32位編碼長度的指令格式的高半字進(jìn)行解碼(有用的預(yù)解碼信息都包含在了 32位指令的高16位中),最后將兩者的解碼信息求或后形成冗余的解碼信息。如圖2中,預(yù)解碼單元對(duì)指令的四種信息進(jìn)行了解碼(程序調(diào)用跳轉(zhuǎn),程序返回跳轉(zhuǎn),分支跳轉(zhuǎn),pc相關(guān)指令),每一種信息由Ibit表示,所以每個(gè)半字指令信息將產(chǎn)生4bit的預(yù)解碼信息。4個(gè)預(yù)解碼子單元的預(yù)解碼信息為 16bit。并行預(yù)解碼單元將預(yù)解碼的信息與指令數(shù)據(jù)(共80位)一起輸出到第一級(jí)指令高速緩存中。第一級(jí)高速緩存,為容量較小的指令高速緩存,其存儲(chǔ)指令數(shù)據(jù)和上述預(yù)解碼單元的預(yù)解碼信息。預(yù)解碼數(shù)據(jù)封裝單元,如圖3所示,其將指令數(shù)據(jù)和預(yù)解碼數(shù)據(jù)封裝為正確的指令和預(yù)解碼信息。如圖3可看出其包含一個(gè)緩沖器,大小為20位寬,存儲(chǔ)16位指令信息 (如圖3中H0)和相應(yīng)的4位預(yù)解碼信息(如圖3中h0),當(dāng)當(dāng)前數(shù)據(jù)塊中的最后一個(gè)有效半字為一條32位指令的高半字,它需存儲(chǔ)此半字的信息(圖3中利用數(shù)據(jù)選擇器選擇半字和相應(yīng)的預(yù)解碼信息存入H0,h0中),以在下一指令數(shù)據(jù)塊中構(gòu)成一條完整的指令。預(yù)解碼數(shù)據(jù)封裝單元首先利用程序當(dāng)前pc的低3位(最低一位始終為0,即 pc[2:1])確定指令在當(dāng)前指令數(shù)據(jù)塊中的位置,利用指令集中指令長度標(biāo)識(shí)位(圖3中的每個(gè)半字的最高位)確定當(dāng)前指令數(shù)據(jù)塊中的所有指令邊界,利用指令長度標(biāo)識(shí)位通過數(shù)據(jù)選擇器將相應(yīng)的數(shù)據(jù)塊選擇構(gòu)成完整的指令(如圖中instO,instl, inst2, inst3)。每個(gè)數(shù)據(jù)塊最多產(chǎn)生4條指令數(shù)據(jù),然后根據(jù)指令邊界挑選對(duì)應(yīng)的指令預(yù)解碼信息,32位指令取高半字的預(yù)解碼信息,舍棄低半字的預(yù)解碼信息(如圖中inst_preC 0,inst_precl, inst_prec2, inSt_prec3),最后將預(yù)解碼信息和指令整合輸出到處理器的后級(jí)流水線。
權(quán)利要求
1.一種基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置,所述預(yù)解碼裝置包括 數(shù)據(jù)回填緩沖器,用于緩存來自片外的指令數(shù)據(jù);第二級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù); 第一級(jí)高速緩存,用于存儲(chǔ)指令數(shù)據(jù)和預(yù)解碼信息; 其特征在于所述預(yù)解碼裝置還包括并行指令預(yù)解碼單元,用于從第二級(jí)高速緩存或數(shù)據(jù)回填緩沖器中選擇指令數(shù)據(jù)塊作為輸入,將獲取的指令數(shù)據(jù)按照最短指令長度劃分,并對(duì)每一個(gè)劃分后數(shù)據(jù)塊按照可變長度指令集中所有指令長度格式對(duì)所需信息進(jìn)行并行解碼,并產(chǎn)生預(yù)解碼信息,所述預(yù)解碼信息包括所有長度指令的正確解碼信息和長度整數(shù)倍于最短指令長度指令的冗余解碼信息,將該預(yù)解碼信息合并指令數(shù)據(jù)塊送入第一級(jí)高速緩存中;預(yù)解碼數(shù)據(jù)封裝單元,用于通過指令PC確定當(dāng)前指令數(shù)據(jù)塊中的第一條指令位置,并通過指令長度標(biāo)識(shí)位確定數(shù)據(jù)塊中的所有指令的指令邊界,按照指令邊界選擇對(duì)應(yīng)指令的預(yù)解碼信息并舍棄預(yù)解碼信息中的多余解碼信息,封裝為按照指令的預(yù)解碼信息。
2.如權(quán)利要求1所述的基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置,其特征在于并行預(yù)解碼單元將第二級(jí)高速緩存中獲取的指令數(shù)據(jù)與并行預(yù)解碼產(chǎn)生的預(yù)解碼信息共同發(fā)送到第一級(jí)高速緩存中存儲(chǔ)。
全文摘要
一種基于兩級(jí)片上緩存的可變長度指令集的預(yù)解碼裝置,包括數(shù)據(jù)回填緩沖器、第二級(jí)高速緩存和第一級(jí)高速緩存,以及并行指令預(yù)解碼單元,用于將獲取的指令數(shù)據(jù)按照最短指令長度劃分,并對(duì)每一個(gè)劃分后數(shù)據(jù)塊按照可變長度指令集中所有指令長度格式對(duì)所需信息進(jìn)行并行解碼,將該預(yù)解碼信息合并指令數(shù)據(jù)塊送入第一級(jí)高速緩存中;預(yù)解碼數(shù)據(jù)封裝單元,用于通過指令pc確定當(dāng)前指令數(shù)據(jù)塊中的第一條指令位置,并通過指令長度標(biāo)識(shí)位確定數(shù)據(jù)塊中的所有指令的指令邊界,按照指令邊界選擇對(duì)應(yīng)指令的預(yù)解碼信息并舍棄預(yù)解碼信息中的多余解碼信息,封裝為按照指令的預(yù)解碼信息。本發(fā)明在滿足時(shí)序要求下能獲取更多有用解碼信息、提升處理器性能。
文檔編號(hào)G06F9/38GK102426516SQ20111029326
公開日2012年4月25日 申請(qǐng)日期2011年9月29日 優(yōu)先權(quán)日2011年9月29日
發(fā)明者李春強(qiáng), 胡軍山, 莫鵬飛, 趙朝君 申請(qǐng)人:杭州中天微系統(tǒng)有限公司