專利名稱:協(xié)處理器指令集的擴(kuò)展裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器設(shè)計(jì)中的協(xié)處理器指令集,尤其是一種協(xié)處理 器指令集的擴(kuò)展裝置。
背景技術(shù):
指令集是處理器軟硬件交互的接口 ,處理器通過自動從內(nèi)存中讀 取指令,并進(jìn)行譯碼和執(zhí)行,完成復(fù)雜的運(yùn)算和控制任務(wù)。每個處理 器都需要有特定的指令集與其進(jìn)行對應(yīng)。指令集的先進(jìn)與否,直接影 響到處理器的性能發(fā)揮,因此指令集是處理器設(shè)計(jì)的重要內(nèi)容。
目前的處理器設(shè)計(jì)中,除了需要為基本運(yùn)算和控制定義相應(yīng)的指 令集外,還需要設(shè)計(jì)面向特定應(yīng)用的指令集子系統(tǒng)。面向特定應(yīng)用的 指令集子系統(tǒng)是將復(fù)雜的運(yùn)算控制流程簡化為抽象的操作,并由處理 器根據(jù)解碼的信息直接運(yùn)行,避免通過基本指令集產(chǎn)生復(fù)雜控制運(yùn)算 流程。這種方法在目前的嵌入式處理器領(lǐng)域中得到了十分廣泛的應(yīng)用,
如ARM的SIMD指令集,MIPS的DSPASE等。
指令集擴(kuò)展技術(shù)目前主要可分為兩個大類主處理器指令集擴(kuò)展 和協(xié)處理器指令集擴(kuò)展。主處理器指令集擴(kuò)展技術(shù)是指在主處理器的 指令集空間內(nèi)進(jìn)行專用指令的擴(kuò)展,擴(kuò)展指令通常在主處理器內(nèi)部通 過增加特殊的執(zhí)行單元實(shí)現(xiàn)支持;協(xié)處理器指令集擴(kuò)展技術(shù)指在主處 理器指令集空間之外進(jìn)行專用指令的擴(kuò)展,擴(kuò)展指令通常通過協(xié)處理 器接口發(fā)送到目標(biāo)協(xié)處理器完成執(zhí)行。主處理器指令集擴(kuò)展技術(shù)與主處理器架構(gòu)的耦合度高,資源復(fù)用度高。協(xié)處理器指令集擴(kuò)展技術(shù)與 主處理器的耦合度相對較低,但擴(kuò)展相對靈活,可以根據(jù)應(yīng)用的特征 進(jìn)行靈活的支持。協(xié)處理器指令集擴(kuò)展技術(shù)由于擴(kuò)展方便、設(shè)計(jì)風(fēng)險(xiǎn) 小,成為目前指令集擴(kuò)展的主要形式。
目前的協(xié)處理器指令集擴(kuò)展技術(shù)通常是在主處理器指令編碼空間 中劃分一個特殊的區(qū)域用于協(xié)處理器指令集的定義,如MIPS處理器
將32位機(jī)器碼的最高4位為0100保留給協(xié)處理器使用。這種技術(shù)的 優(yōu)點(diǎn)是協(xié)處理器的指令可以由主處理器按照普通指令的方式進(jìn)行預(yù) 取,并通過解碼,將主處理器指令和協(xié)處理器指令進(jìn)行快速的區(qū)分。 這樣協(xié)處理器的取指就會變得簡單,主處理器和協(xié)處理器的接口定義
會變得清晰。但這種方法同樣存在著一些問題,主要表現(xiàn)在1、在指
令代碼空間相對緊湊的]£位指令集中擴(kuò)展空間難度較大;2、由于協(xié)-
處理器與主處理器共享取指和解碼單元,因此協(xié)處理器指令的格式受
到主處理器格式的影響。
發(fā)明內(nèi)容
為了克服已有的在主處理器指令編碼空間中劃分一個特殊的區(qū)域 用于協(xié)處理器指令集的擴(kuò)展性能差、靈活性差的不足,本發(fā)明提供一 種具有良好的擴(kuò)展性能、靈活性好的協(xié)處理器指令集的擴(kuò)展裝置。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
一種協(xié)處理器指令集的擴(kuò)展裝置,在與所述協(xié)處理器連接的主處 理器的指令集內(nèi)包括用于產(chǎn)生協(xié)處理器指令碼的立即數(shù)產(chǎn)生指令, 以及用于實(shí)現(xiàn)所述協(xié)處理器指令碼從主處理器通用寄存器到協(xié)處理器 指令寄存器的裝載的協(xié)處理器指令碼裝載指令;所述主處理器包括用于控制立即數(shù)產(chǎn)生指令先產(chǎn)生協(xié)處理器指 令碼的立即數(shù)產(chǎn)生單元,用于臨時(shí)存放由立即數(shù)產(chǎn)生指令產(chǎn)生的協(xié)處 理器指令碼的主處理器通用寄存器,以及用于將存放于主處理器通用 寄存器中的協(xié)處理器指令碼裝載進(jìn)協(xié)處理器指令寄存器的協(xié)處理器指 令裝載執(zhí)行單元;
所述協(xié)處理器包括:用于接收由主處理器裝載的協(xié)處理器指令碼, 并將接收的指令碼發(fā)送至協(xié)處理器執(zhí)行的協(xié)處理器指令寄存器,以及 用于從協(xié)處理器指令寄存器讀取指令并完成解碼和執(zhí)行的協(xié)處理器指 令執(zhí)行模塊。
進(jìn)一步,所述立即數(shù)產(chǎn)生指令由主處理器完成取指、解碼、執(zhí)行, 并將產(chǎn)生的立即數(shù)結(jié)果回寫至通用寄存器中。
更進(jìn)一步,所述協(xié)處理器指令碼裝載指令的源操作數(shù)存儲于主處 理器通用寄存器內(nèi),目的寄存器為協(xié)處理器指令寄存器。
更進(jìn)一步,所述立即數(shù)產(chǎn)生指令為復(fù)用主處理器中的原立即數(shù)產(chǎn) 生指令或者單獨(dú)設(shè)計(jì)專門用于產(chǎn)生協(xié)處理器指令碼立即數(shù)的指令。
所述的協(xié)處理器指令執(zhí)行模塊包括用于譯碼協(xié)處理器指令的協(xié) 處理器指令譯碼單元,用于執(zhí)行協(xié)處理器指令并產(chǎn)生相應(yīng)結(jié)果的協(xié)處 理器指令指令單元。
本發(fā)明的技術(shù)構(gòu)思為基'于本申請實(shí)現(xiàn)的協(xié)處理器擴(kuò)展技術(shù)將主 處理器與協(xié)處理器的指令空間有效隔離,實(shí)現(xiàn)了協(xié)處理器指令集擴(kuò)展 與主處理器相對獨(dú)立。通過該方法不僅可以擴(kuò)展出多個并行獨(dú)立的指 令集,同時(shí)也為用戶獨(dú)立進(jìn)行協(xié)處理器的開發(fā)打下了堅(jiān)實(shí)的基礎(chǔ)。
本發(fā)明的有益效果主要表現(xiàn)在1、具有良好的擴(kuò)展性能、靈活性好;2、有效簡化了協(xié)處理器指令集擴(kuò)展的方式,為在統(tǒng)一基本指令集 架構(gòu)上擴(kuò)展出各種面向應(yīng)用的用戶自定義指令提供了靈活高效的支 持。
圖1是立即數(shù)產(chǎn)生指令的編碼方式的示意圖。
圖2是協(xié)處理器指令碼裝載指令的編碼方式的示意圖。
圖3是協(xié)處理器指令集擴(kuò)展指令的執(zhí)行裝置框架示意圖。
圖4是通過預(yù)編譯獲得立即數(shù)產(chǎn)生的指令的執(zhí)行機(jī)制的示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。
參照圖1 圖4, 一種協(xié)處理器指令集的擴(kuò)展裝置,在與所述協(xié)處
理器連接的主處理器的指令集內(nèi)包括用于產(chǎn)生協(xié)處理器指令碼的立
- — 一
即數(shù)產(chǎn)生指令,以及用于實(shí)現(xiàn)所述協(xié)處理器指令碼從主處理器通用寄
存器到協(xié)處理器指令寄存器的裝載的協(xié)處理器指令碼裝載指令;
所述主處理器包括用于控制立即數(shù)產(chǎn)生指令先產(chǎn)生協(xié)處理器指
令碼的立即數(shù)產(chǎn)生單元,用于臨時(shí)存放由立即數(shù)產(chǎn)生指令產(chǎn)生的協(xié)處 理器指令碼的主處理器通用寄存器,以及用于將存放于主處理器通用 寄存器中的協(xié)處理器指令碼裝載進(jìn)協(xié)處理器指令寄存器的協(xié)處理器指
令裝載執(zhí)行單元; 所述協(xié)處理器包括:用于接收由主處理器裝載的協(xié)處理器指令碼,
并將接收的指令碼發(fā)送至協(xié)處理器執(zhí)行的協(xié)處理器指令寄存器,以及 用于從協(xié)處理器指令寄存器讀取指令并完成解碼和執(zhí)行的協(xié)處理器指 令執(zhí)行模塊。所述立即數(shù)產(chǎn)生指令由主處理器完成取指、解碼、執(zhí)行,并將結(jié) 果回寫至通用寄存器中。
所述協(xié)處理器指令碼裝載指令的源操作數(shù)存儲于主處理器通用寄 存器內(nèi),目的寄存器為協(xié)處理器指令寄存器。
所述立即數(shù)產(chǎn)生指令為復(fù)用主處理器中的原立即數(shù)產(chǎn)生指令或者 單獨(dú)設(shè)計(jì)專門用于產(chǎn)生協(xié)處理器指令碼立即數(shù)的指令。.
所述的協(xié)處理器指令執(zhí)行模塊包括用于譯碼協(xié)處理器指令的協(xié) 處理器指令譯碼單元,用于執(zhí)行協(xié)處理器指令并產(chǎn)生相應(yīng)結(jié)果的協(xié)處 理器指令指令單元。
本實(shí)施例的協(xié)處理器指令集擴(kuò)展指令是指立即數(shù)產(chǎn)生指令和協(xié)處 理器指令碼裝載指令兩條指令。
立即數(shù)產(chǎn)生指令可以復(fù)用主處理器中的原立即數(shù)產(chǎn)生指令,也可 以單獨(dú)設(shè)計(jì)專門用于產(chǎn)生協(xié)處理器指令碼立即數(shù)的指令。立即數(shù)產(chǎn)生 的過程既可通過將立即數(shù)編碼在指令碼中;也可以通過編譯器將立即 數(shù)預(yù)先編譯存放于內(nèi)存中,在程序運(yùn)行的過程中,通過特殊的載入指 令從內(nèi)存中動態(tài)獲得。立即數(shù)產(chǎn)生指令的目的寄存器是主處理器的通 用寄存器,目的寄存器的編號需要編入指令碼中。立即數(shù)產(chǎn)生指令的 兩種具體編碼方式如圖1所示(a)是立即數(shù)編入指令碼的一種方式, 11是該指令的操作碼,指令碼中的立即數(shù)13在執(zhí)行過程中被直接截 取,然后送入由12指示的目的寄存器中存儲;(b)是基于編譯器預(yù)先
編譯的立即數(shù)載入指令,14為操作碼,15為目的寄存器,16為當(dāng)前
指令的偏移量指示位,用于表示目標(biāo)立即數(shù)在內(nèi)存中相對當(dāng)前指令的協(xié)處理器指令碼裝載指令的功能是將臨時(shí)存放于主處理器通用寄 存器中的協(xié)處理器指令碼傳送至協(xié)處理器的指令寄存器中。該指令為 主處理器編碼空間內(nèi)的指令,本質(zhì)是一條特殊的傳送指令。協(xié)處理器 指令碼裝載指令的源寄存器是主處理器的通用寄存器,目的寄存器為 協(xié)處理器的指令寄存器。指令編碼時(shí),可以固定主處理器通用寄存器 和協(xié)處理器指令寄存器的編碼,也可以設(shè)計(jì)專用的比特用來指示該指 令所選中的主處理器通用寄存器和目的協(xié)處理器指令寄存器。如圖2 給出了協(xié)處理器指令碼轉(zhuǎn)載指令的具體編碼方式21為指令的操作 碼,22指示目標(biāo)協(xié)處理器的指令寄存器,通常一個協(xié)處理器只有一個
指令寄存器,因此這部分并不是指令碼中必須的,23指示存儲協(xié)處理
器指令碼的主處理器通用寄存器編號。
協(xié)處理器指-令集擴(kuò)展指令的執(zhí)行過程和框架如圖3所示,.其中
31為主處理器的取指單元,除預(yù)取普通主處理器指令外,同時(shí)還
預(yù)取本發(fā)明中增加的立即數(shù)產(chǎn)生指令和協(xié)處理器指令裝載指令。
32為主處理器的譯碼單元,除譯碼普通主處理器指令外,同時(shí)譯
碼本發(fā)明中增加的立即數(shù)產(chǎn)生指令和協(xié)處理器指令裝載指令,并將它 們分別發(fā)送到對應(yīng)的執(zhí)行單元中。
33為主處理器的立即數(shù)產(chǎn)生單元,用于執(zhí)行本發(fā)明所提出的立即 數(shù)產(chǎn)生指令。 '
34為主處理器的通用寄存器單元,存儲運(yùn)算的操作數(shù)和運(yùn)算結(jié) 果,本發(fā)明中由立即數(shù)產(chǎn)生單元33產(chǎn)生的協(xié)處理器指令碼也臨時(shí)存放 于通用寄存器單元中。
35為協(xié)處理器指令碼轉(zhuǎn)載執(zhí)行單元,用來執(zhí)行將協(xié)處理器指令碼從主處理器的通用寄存器中搬運(yùn)到相應(yīng)的協(xié)處理器指令寄存器的操 作。
36為協(xié)處理器指令寄存器,用于接收來自主處理器發(fā)送的協(xié)處理 器指令碼。
37為協(xié)處理器指令譯碼單元,譯碼協(xié)處理器指令。
38為協(xié)處理器指今指令單元,執(zhí)行協(xié)處理器指令,產(chǎn)生相應(yīng)結(jié)杲。
立即數(shù)產(chǎn)生指令的執(zhí)行過程為首先主處理器取指單元31從存儲
器中獲得指令,送至譯碼單元32中譯碼,若當(dāng)前指令為立即數(shù)產(chǎn)生指 令,則將該指令發(fā)送至立即數(shù)指令執(zhí)行單元33,立即數(shù)指令執(zhí)行單元 33根據(jù)指令的操作碼執(zhí)行相應(yīng)的立即數(shù)產(chǎn)生過程,最終將產(chǎn)生的結(jié)果 寫入到主處理器通用寄存器34中。
協(xié)處理器指令碼裝載指令的執(zhí)行過程為首先主處理器取指單元 31從存儲器中獲得指令,送至譯碼單元32中譯碼,若當(dāng)前指令為協(xié) 處理器指令碼裝載指令,則將該指令發(fā)送至協(xié)處理器指令碼裝載執(zhí)行 單元35,協(xié)處理器指令碼裝載執(zhí)行單元35從主處理器通用寄存器單 元34中讀取對應(yīng)的協(xié)處理器指令操作碼,然后將其傳送到協(xié)處理器指 令寄存器中36。
協(xié)處理器指令的執(zhí)行過程為從協(xié)處理器指令寄存器36中獲得指 令碼,然后將揞令碼發(fā)送到協(xié)處理器譯碼單元37,根據(jù)譯'碼結(jié)果將指 令發(fā)送到對應(yīng)的執(zhí)行單元38中進(jìn)行執(zhí)行。
立即數(shù)指令執(zhí)行單元33用于執(zhí)行立即數(shù)產(chǎn)生指令并生 目標(biāo)立 即數(shù)。對于立即數(shù)編入指令碼的方案圖1 (a)所示,執(zhí)行單元僅需對 指令碼進(jìn)行按位截取便可獲得相應(yīng)的立即數(shù)。對于立即數(shù)通過編譯器預(yù)編譯然后從內(nèi)存中獲得的方案,可以獲得位寬更寬的立即數(shù),其執(zhí) 行過程如圖4所示。指令被送入到立即數(shù)產(chǎn)生單元之后,指令的低位
41被截取,并于當(dāng)前指令的地址(PC)通過加法器43相加后獲得立 即數(shù)的目標(biāo)地址。于此同時(shí)由控制邏輯42向存儲器發(fā)起讀請求,獲得 的立即數(shù)結(jié)果最終被回寫通用寄存器組中。
通用寄存舉單元34為包含主處理器用于存儲操作數(shù)及其結(jié)果的 臨時(shí)緩沖空間。通過指令段中對應(yīng)位,如圖1中的12、 15,圖2中的 23進(jìn)行索引。
協(xié)處理器指令裝載執(zhí)行單元35在獲得指令后,從通用寄存器34 中獲得對應(yīng)的立即數(shù),然后送入到協(xié)處理器的指令寄存器中,實(shí)現(xiàn)協(xié) 處理器指令的成功裝載。
權(quán)利要求
1、一種協(xié)處理器指令集的擴(kuò)展裝置,其特征在于在與所述協(xié)處理器連接的主處理器的指令集內(nèi)包括用于產(chǎn)生協(xié)處理器指令碼的立即數(shù)產(chǎn)生指令,以及用于實(shí)現(xiàn)所述協(xié)處理器指令碼從主處理器通用寄存器到協(xié)處理器指令寄存器的裝載的協(xié)處理器指令碼裝載指令;所述主處理器包括用于控制立即數(shù)產(chǎn)生指令先產(chǎn)生協(xié)處理器指令碼的立即數(shù)產(chǎn)生單元,用于臨時(shí)存放由立即數(shù)產(chǎn)生指令產(chǎn)生的協(xié)處理器指令碼的主處理器通用寄存器,以及用于將存放于主處理器通用寄存器中的協(xié)處理器指令碼裝載進(jìn)協(xié)處理器指令寄存器的協(xié)處理器指令裝載執(zhí)行單元;所述協(xié)處理器包括用于接收由主處理器裝載的協(xié)處理器指令碼,并將接收的指令碼發(fā)送至協(xié)處理器執(zhí)行的協(xié)處理器指令寄存器,以及用于從協(xié)處理器指令寄存器讀取指令并完成解碼和執(zhí)行的協(xié)處理器指令執(zhí)行模塊。
2、 如權(quán)利要求1所述的協(xié)處理器指令集的擴(kuò)展裝置,其特征在于所 述立即數(shù)產(chǎn)生指令由主處理器完成取指、解碼、執(zhí)行,并將產(chǎn)生的立 即數(shù)結(jié)果回寫至通用寄存器中。
3、 如權(quán)利要求1所述的協(xié)處理器指令集的擴(kuò)展裝置,其特征在于所 述協(xié)處理器指令碼裝載指令的源操作數(shù)存儲于主處理器通用寄存器 內(nèi),目的寄存器為協(xié)處理器指令寄存器。
4、 如權(quán)利要求2所述的協(xié)處理器指令集的擴(kuò)展裝置,其特征在于所 述協(xié)處理器指令碼裝載指令的源操作數(shù)存儲于主處理器通用寄存器 內(nèi),目的寄存器為協(xié)處理器指令寄存器。
5、 如權(quán)利要求1一4之一所述的協(xié)處理器指令集的擴(kuò)展裝置,其特征 在于所述立即數(shù)產(chǎn)生指令為復(fù)用主處理器中的原立即數(shù)產(chǎn)生指令或 者單獨(dú)設(shè)計(jì)專門用于產(chǎn)生協(xié)處理器指令碼立即數(shù)的指令。
6、 如權(quán)利要求1一4之一所述的協(xié)處理器指令集的擴(kuò)展裝置,其特征 在于所述的協(xié)處理器指令執(zhí)行模塊包括用于譯碼協(xié)處理器指令的 協(xié)處理器指令譯碼單元,用于執(zhí)行協(xié)處理器指令并產(chǎn)生相應(yīng)結(jié)果的協(xié)
全文摘要
一種協(xié)處理器指令集的擴(kuò)展裝置,在與所述協(xié)處理器連接的主處理器的指令集內(nèi)包括用于產(chǎn)生協(xié)處理器指令碼的立即數(shù)產(chǎn)生指令,以及用于實(shí)現(xiàn)所述協(xié)處理器指令碼從主處理器通用寄存器到協(xié)處理器指令寄存器的裝載的協(xié)處理器指令碼裝載指令;處理器包括立即數(shù)產(chǎn)生單元、主處理器通用寄存器以及用于將存放于主處理器通用寄存器中的協(xié)處理器指令碼裝載進(jìn)協(xié)處理器指令寄存器的協(xié)處理器指令裝載執(zhí)行單元;協(xié)處理器包括協(xié)處理器指令寄存器和協(xié)處理器指令執(zhí)行模塊。本發(fā)明具有良好的擴(kuò)展性能、靈活性好。
文檔編號G06F9/318GK101650645SQ20091010222
公開日2010年2月17日 申請日期2009年9月4日 優(yōu)先權(quán)日2009年9月4日
發(fā)明者嚴(yán)曉浪, 孟建熠, 沙子巖, 葛海通 申請人:浙江大學(xué)