两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于嵌入式專用指令集處理器的指令集編碼方法

文檔序號:6423844閱讀:184來源:國知局
專利名稱:基于嵌入式專用指令集處理器的指令集編碼方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機技術(shù)領(lǐng)域,更進(jìn)一步涉及到微處理器指令集中的一種基于嵌入式專用指令集處理器(ASIP)的指令集編碼方法,該方法定義的指令集根據(jù)現(xiàn)場可編程門陣列(FPGA)內(nèi)部存儲器與數(shù)據(jù)總線資源均以18位為基本位寬的特點進(jìn)行優(yōu)化,適用于 FPGA嵌入式處理系統(tǒng)。
背景技術(shù)
專用指令集處理器(ASIP)技術(shù)是微處理器領(lǐng)域的新興技術(shù)。其核心思想是根據(jù)特定的應(yīng)用領(lǐng)域,開發(fā)出一套專門的微處理器指令集以及實現(xiàn)該指令集的微處理器體系結(jié)構(gòu)。ASIP通常采用嵌入的方式在FPGA中實現(xiàn),可以充分利用FPGA可實現(xiàn)的電路規(guī)模大、片內(nèi)資源豐富及可重構(gòu)等特性,在FPGA內(nèi)可以相對容易地在單個芯片中集成多個ASIP處理單元(PE),以ASIP陣列的結(jié)構(gòu)形式實現(xiàn)完全并行的高速信號處理。目前的處理器指令集及其體系結(jié)構(gòu)均針對傳統(tǒng)的專用集成電路流片生產(chǎn)的實現(xiàn)方式進(jìn)行設(shè)計,沒有考慮到FPGA芯片內(nèi)部電路資源、存儲器資源及布線資源的特殊性,因此難以直接移植到FPGA中實現(xiàn)。如北京理工大學(xué)申請的專利“一種支持高級語言部分語句功能的處理器指令集”(專利申請?zhí)?00810100863. 0,公開號CN101246435A)公開了一種支持高級語言部分語句功能的處理器指令集的定義方法。該專利中定義指令的機器代碼長度為64位(bit)長,包括Ι-bit保留位、6-bit操作碼字段、9-bit尋址方式描述符字段和 48-bit地址碼字段。其中操作碼字段位置固定,尋址方式描述符字段給出3個操作數(shù)的7 種尋址方式,地址碼字段給出3個操作數(shù)的地址。該專利的不足之處是指令集的機器代碼字長太長,且只有一種應(yīng)用模式,其相應(yīng)的處理器體系結(jié)構(gòu)難以在FPGA內(nèi)高效運行;一條指令只能完成一種功能,沒有用戶自定義的后處理操作,操作數(shù)的尋址方式復(fù)雜,降低了指令執(zhí)行速度;沒有保護性指令(Guarded Instruction)控制字段,從而不能用于構(gòu)建具有指令自主能力的單指令流-多數(shù)據(jù)流(SIMD)并行處理系統(tǒng)。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,提出一種能夠在FPGA內(nèi)高效實現(xiàn)的基于嵌入式專用指令集處理器的指令集編碼方法。本發(fā)明實現(xiàn)的思路是,在嵌入式專用指令集處理器中采用完整與精簡兩種應(yīng)用模式,并且指令集采用適于FPGA實現(xiàn)的18或16-bit程序總線位寬,其機器代碼位寬在完整與精簡兩種應(yīng)用模式下分別限制在18或16-bit之內(nèi)。所有的指令均為單字長、單周期格式,包括算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類三大類共16條多功能指令。其中,在算術(shù)邏輯運算類指令中,用戶可以自定義四種后處理操作。嵌入式專用指令集處理器包括算術(shù)運算單元、通用寄存器單元、數(shù)據(jù)地址產(chǎn)生單元、程序定序單元、輸入/輸出數(shù)據(jù)存儲器單元、程序存儲器單元和數(shù)據(jù)交換接口單元。本發(fā)明實現(xiàn)的具體步驟如下
(1)定義機器代碼位寬,將嵌入式專用指令集處理器的數(shù)據(jù)存儲器單元和程序存儲器單元總線設(shè)置為8-bit與16-bit,將完整應(yīng)用模式與精簡應(yīng)用模式下的機器代碼位寬分別定義為18-bit與16-bit。(2)定義指令類型,將指令集的指令類型定義為算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類三大類共16條多功能指令,算術(shù)邏輯運算類指令除可完成相關(guān)的算術(shù)運算外,還可以附帶由用戶自己定義的四種操作功能。(3)定義尋址方式,對指令集指令中的操作數(shù)尋址定義為立即數(shù)尋址、寄存器尋址、變址尋址三種尋址方式。立即數(shù)尋址完成對立即數(shù)的尋址,寄存器尋址完成對通用寄存器和特殊寄存器的尋址,變址尋址包括輸入數(shù)據(jù)存儲器單元的讀/寫地址、輸出數(shù)據(jù)存儲器單元的讀/寫地址4套地址指針。(4)劃分指令代碼字段,將指令的機器代碼劃分為六個字段2_bit保護性指令字段、4-bit指令代碼字段、兩個2-bit輔助功能字段、4或3-bit目的/源寄存器字段、4或 3-bit源寄存器字段。(5)編碼,采用指令組合編碼方式定義各個字段中的具體編碼。本發(fā)明提出的指令集編碼方法是基于嵌入式專用指令集處理器實現(xiàn)的,其電路體系結(jié)構(gòu)包括算術(shù)運算單元、通用寄存器單元、數(shù)據(jù)地址產(chǎn)生單元、程序定序單元、輸入/輸出數(shù)據(jù)存儲器單元、程序存儲器單元和數(shù)據(jù)交換接口單元。算術(shù)運算單元完成操作數(shù)的算術(shù)、邏輯和乘法運算;通用寄存器單元為算術(shù)運算單元提供操作數(shù)和暫存運算結(jié)果,以及與存儲器單元交換數(shù)據(jù);數(shù)據(jù)地址產(chǎn)生單元實現(xiàn)算術(shù)運算結(jié)果在通用寄存器組中存放地址的尋址,以及與通用寄存器單元進(jìn)行數(shù)據(jù)交換的地址尋址;程序定序單元控制各單元的程序執(zhí)行;輸入/輸出數(shù)據(jù)存儲器單元高速緩存系統(tǒng)中的局部數(shù)據(jù);程序存儲器單元存放指令代碼;數(shù)據(jù)交換接口單元完成通用寄存器單元的數(shù)據(jù)與外部數(shù)據(jù)的交換。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點第一、由于本發(fā)明在定義嵌入式ASIP指令集時,根據(jù)FPGA內(nèi)部存儲器與數(shù)據(jù)總線均以18-bit為基本位寬的特點對機器代碼字長進(jìn)行了優(yōu)化,具有完整與精簡兩種應(yīng)用模式,克服了現(xiàn)有技術(shù)中機器代碼字長太長、應(yīng)用模式單一的不足,提高了 FPGA內(nèi)部電路資源特別是布局/布線資源的利用效率,相應(yīng)的處理器體系結(jié)構(gòu)可以在FPGA內(nèi)高效的運行。第二、由于本發(fā)明中算術(shù)邏輯運算類指令具有一個以上的功能,克服了現(xiàn)有技術(shù)中一條指令只能完成一種功能的不足,在算術(shù)邏輯運算類指令中,除可完成相關(guān)的算術(shù)運算外,還可以附帶由用戶自己定義的操作,如將加法運算結(jié)果再進(jìn)行邏輯右移操作,提高了指令的執(zhí)行效率。第三、由于本發(fā)明中尋址方式僅有立即數(shù)尋址、寄存器尋址、變址尋址三種,并設(shè)置了 4套地址指針,克服了現(xiàn)有技術(shù)中操作數(shù)的尋址方式復(fù)雜的不足,實現(xiàn)對數(shù)據(jù)存儲器中的兩個數(shù)據(jù)進(jìn)行快速讀/寫操作,提高了指令的執(zhí)行速度。第四、由于本發(fā)明在劃分指令代碼字段時包含了保護性指令字段,克服了現(xiàn)有技術(shù)中沒有保護性指令字段的指令集不能用于構(gòu)建具有指令自主能力的SIMD并行處理系統(tǒng)的不足,便于在FPGA內(nèi)實現(xiàn)具有指令自主能力的大規(guī)模SIMD并行處理系統(tǒng)。


圖1為本發(fā)明指令集編碼方法的流程圖;圖2為本發(fā)明的指令機器代碼格式示意圖;圖3為嵌入式專用指令集處理器的方塊圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)描述。參照圖1,本發(fā)明的具體步驟如下步驟1 定義機器代碼位寬。本發(fā)明根據(jù)FPGA內(nèi)部存儲器與數(shù)據(jù)總線均以18_bit 為基本位寬的結(jié)構(gòu)特點,將嵌入式專用指令集處理器的數(shù)據(jù)存儲器單元和程序存儲器單元總線設(shè)置為18-bit與16-bit,將每條指令機器代碼的位寬限制在18或16-bit之內(nèi),在完整應(yīng)用與精簡應(yīng)用兩種應(yīng)用模式下,將機器代碼的位寬分別定義為18和16-bit。這樣可以充分利用FPGA可實現(xiàn)的電路規(guī)模大、片內(nèi)資源豐富及可重構(gòu)等特性,特別是在FPGA內(nèi)可以比較容易地在單個芯片中集成多個ASIP處理單元(PE),以ASIP陣列的結(jié)構(gòu)形式實現(xiàn)完全并行的高速信號處理。步驟2 定義指令類型。將指令集的指令類型定義為算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類三大類共16條多功能指令。所有的指令均為單字長、單周期格式,指令精簡緊湊而且功能完備,適合嵌入式數(shù)字信號處理(DSP)應(yīng)用。算術(shù)邏輯運算類指令包括移位運算指令、邏輯運算指令、算術(shù)運算指令、乘法運算指令和乘后累加運算指令,除了能控制算術(shù)運算單元完成相關(guān)的算術(shù)邏輯運算外,還可以完成四種后處理操作,如將加法運算結(jié)果再進(jìn)行邏輯右移操作等。數(shù)據(jù)交換類指令包括寄存器數(shù)據(jù)傳輸指令、立即數(shù)高位裝載指令、立即數(shù)低位裝載指令、數(shù)據(jù)存儲器讀數(shù)據(jù)指令和數(shù)據(jù)存儲器寫數(shù)據(jù)指令。程序定序類指令包括空操作指令、軟件復(fù)位指令、休眠指令、程序跳轉(zhuǎn)指令、循環(huán)指令、子程序調(diào)用與返回指令。步驟3 定義尋址方式。本發(fā)明對操作數(shù)的尋址定義立即數(shù)尋址、寄存器尋址、變址尋址三種數(shù)據(jù)尋址方式。立即數(shù)尋址完成對立即數(shù)的尋址,立即數(shù)的位寬在完整與精簡應(yīng)用模式下分別定義為18和16-bit。寄存器尋址完成對通用寄存器和特殊寄存器的尋址。 在完整應(yīng)用模式下設(shè)置64個寄存器,其中16個作為通用寄存器(GrOO Grl5),用于為算術(shù)運算單元提供操作數(shù)并存儲運算結(jié)果,也可以用于與數(shù)據(jù)存儲器交換數(shù)據(jù),還可以存儲指令中的立即數(shù);其余寄存器為特殊功能寄存器,包括數(shù)據(jù)地址指針寄存器、累加寄存器和輸入/輸出(I/O)接口寄存器。在精簡應(yīng)用模式下設(shè)置56個寄存器,其中8個作為通用寄存器(GrOO Gr07),其余寄存器為特殊功能寄存器。步驟4 劃分指令代碼字段。參照圖2,本發(fā)明將機器代碼劃分為保護性指令字段(Grd)、指令代碼字段 (Func)、輔助功能字段2 (Aux2)、目的/源寄存器字段(Dest/Scrf)、輔助功能字段1 (Auxl) 和源寄存器字段(Scrl)六個字段。2-bit保護性指令字段,為可選字段,用于構(gòu)建具有指令自主能力的單指令流-多數(shù)據(jù)流(SIMD)并行處理系統(tǒng)。若不采用保護性指令執(zhí)行方式,兩種模式的指令字長則可縮短至16-bit和14-bit,這樣可以大幅提高FPGA內(nèi)部電路資源特別是布局/布線資源的利用效率。4-bit指令代碼字段,用于指示該指令的功能類別。2-bit輔助功能字段2,用于指示數(shù)據(jù)地址產(chǎn)生類指令的目的寄存器類型(通用寄存器、數(shù)據(jù)地址指針寄存器、累加寄存器與循環(huán)次數(shù)寄存器、I/O接口寄存器)或算術(shù)邏輯運算類指令的后處理操作。4或3-bit目的/源寄存器字段(Dest/Scrf),在數(shù)據(jù)地址產(chǎn)生類指令中指示目的寄存器,在算術(shù)邏輯運算類指令中指示第二個源操作數(shù)寄存器和目的寄存器。2-bit輔助功能字段1,用于指示數(shù)據(jù)地址產(chǎn)生類指令的源寄存器類型或算術(shù)邏輯運算類指令的具體處理操作。4或3-bit源寄存器字段,在數(shù)據(jù)地址產(chǎn)生類指令中指示源寄存器,在算術(shù)運算類指令中指示第一個源操作數(shù)寄存器。在完整應(yīng)用模式下,源寄存器字段與目的/源寄存器字段兩個字段均為4-bit,在精簡應(yīng)用模式下,這兩個字段均為3-bit。步驟5 編碼。為了滿足指令級各項功能,盡可能地降低指令機器代碼的長度,對指令的編碼采用指令組合編碼方式,即指令所實現(xiàn)的具體功能通過指令功能字段與兩個輔助功能字段組合表示。其中指令代碼字段指示指令的功能類別,如算術(shù)運算、邏輯運算或寄存器數(shù)據(jù)傳輸?shù)?。兩個輔助功能字段指示在此類別下的具體操作,如加法運算、邏輯或運算或源與目的寄存器的類型等。下面對本發(fā)明指令集中16條指令做進(jìn)一步的描述第1條,移位運算指令指令功能將源寄存器(Rs)內(nèi)容進(jìn)行移位運算和用戶自定義的算術(shù)邏輯后處理 (Seldef)操作,將結(jié)果存儲在目的寄存器(Rd)中。指令助記符Seldef LLA Rd, Rs ; Rs左移并后處理,結(jié)果存于Rd ;
Rs邏輯右移并后處理,結(jié)果存于Rd ; Rs算術(shù)右移并后處理,結(jié)果存于Rd ;Seldef NSFT Rd, Rs ; 執(zhí)行用戶自定義后處理,結(jié)果存于Rd。指令格式參照圖2 為Grd,0110,Aux2, Rd, Auxl,Rs格式說明2_bit的Aux2字段指示四種用戶自定義后處理操作;2_bit的Auxl 字段指示具體的移位操作00(LLA-左移),01(RL-邏輯右移),10(RA-算術(shù)右移), IKNSFT-無移位);Rd與Rs的類型只能是通用寄存器(GrOO Grl5或GrOO Gr07)。第2條,邏輯運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行邏輯運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中。Seldef RL Rd, RsSeldef RA Rd, Rs指令助記符Seldef LNOT Rd, RsSeldef LAND Rd, RsSeldef LOR Rd, RsSeldef LXOR Rd, Rs
Rs求反并后處理,結(jié)果存于Rd ; Rs、Rd “與”運算并后處理,結(jié)果存于Rd ; Rs, Rd “或”運算并后處理,結(jié)果存于Rd ; Rs、Rd “異或”運算并后處理,結(jié)果存于Rd。
指令格式參照圖2 為Grd,0111,Aux2, Rd, Auxl,Rs格式說明2_bit的Aux2字段指示四種用戶自定義后處理操作;2_bit的Auxl 字段指示具體的邏輯運算00(LN0T-邏輯非),01 (LAND-邏輯與),10(L0R-邏輯或), 1KLX0R-邏輯異或);Rd與Rs的類型只能是通用寄存器(GrOO Grl5或GrOO Gr07)。第3條,算術(shù)運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行算術(shù)運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中。指令助記符Seldef ADD Rd, Rs ; Rs+Rd 并后處理,結(jié)果存于 Rd ;Seldef ADC Rd, Rs ; Rs+Rd+Cy 并后處理,結(jié)果存于 Rd ;Seldef SUB Rd, Rs ; Rs-Rd 并后處理,結(jié)果存于 Rd ;Seldef SUBC Rd, Rs ; Rs-Rd-Cy 并后處理,結(jié)果存于 RcL指令格式參照圖2 為Grd,1000,Aux2, Rd, Auxl,Rs格式說明2_bit的Aux2字段指示四種用戶自定義后處理操作;2_bit的Auxl字段指示具體的算術(shù)運算00 (ADD-加),01 (ADC-帶進(jìn)位加),10 (SUB-減),11 (SUBC-帶借位減);Rd與Rs的類型只能是通用寄存器(GrOO Gr 15或GrOO Gr07)。第4條,乘法運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行乘法運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中。指令助記符Seldef MULT Rd, Rs ; Rs X Rd 并后處理,結(jié)果存于 RcL指令格式參照圖2 為Grd,1001,Aux2, Rd, Auxl,Rs格式說明2_bit的Auxl字段固定填充為00 ;Rd與Rs的類型只能是通用寄存器 (GrOO Gr 15 或 GrOO Gr07)。第5條,乘后累加運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行乘法運算后與累加寄存器(A)中的內(nèi)容相加,執(zhí)行用戶自定義的后處理操作(seldef),并將結(jié)果存儲在累加寄存器A中。指令助記符Seldef MAC Rd, Rs ; (Rs X R) +A并后處理,結(jié)果存于累加器A。指令格式參照圖2 為Grd,1010,Aux2, Rd, Auxl,Rs格式說明2_bit的Auxl字段固定填充為00 ;Rd與Rs的類型只能是通用寄存器 (GrOO Gr 15 或 GrOO Gr07)。第6條,寄存器數(shù)據(jù)傳輸指令指令功能將源寄存器Rs的內(nèi)容存儲在目的寄存器Rd中。指令助記符 LD Rd, Rs ; 將Rs中的數(shù)據(jù)存儲于Rd中。指令格式參照圖2 為Grd,0001,Aux2, Rd, Auxl,Rs格式說明2_bit的Aux2字段用于選擇目的寄存器類型;2_bit的Auxl字段選擇源寄存器類型;具體的寄存器編碼為00 (通用寄存器-GrOO Gr 15或GrOO Gr07),01 (數(shù)組指針寄存器-10, MO, II, Ml,12, M2,13,M3),10 (輸入 / 輸出寄存器-Stout, Stin, Ioout, loin) ,11(累加器Α、循環(huán)次數(shù)寄存器CE)。第7條,立即數(shù)高位裝載指令指令功能將立即數(shù)高12/10-bit數(shù)據(jù)寫入到高位立即數(shù)暫存寄存器(Drt_data_ h)中。指令助記符LD Drt_data_h ;將立即數(shù)高位數(shù)據(jù)寫入高位立即數(shù)暫存寄存器中。指令格式參照圖2 為Grd,0010,Drt_data_h (12 或 10-bit)格式說明在完整應(yīng)用模式下,Drt_data_h中存放立即數(shù)的高12_bit ;在精簡應(yīng)用模式下,Drt_data_h中存放立即數(shù)的高10_bit。第8條,立即數(shù)低位裝載指令指令功能將立即數(shù)低6-bit數(shù)據(jù)與高位立即數(shù)暫存寄存器的內(nèi)容拼接成 18/16-bit立即數(shù),存入目的寄存器Rd中。LD Rd, Drt_data_l ;將拼接好的立即數(shù)存儲于目的寄存器Rd中。指令格式參照圖2 為Grd,0011,PD, Rd, Drt_data_h格式說明2_bit的PD字段在完整應(yīng)用模式下固定填充00,在精簡應(yīng)用模式下,P 字節(jié)填充為0,D字節(jié)為立即數(shù)bit5 ;Rd的類型只能是通用寄存器(GrOO Grl5或GrOO Gr07)。第9條,數(shù)據(jù)存儲器讀數(shù)據(jù)指令指令功能將數(shù)組讀地址指針I(yè)O (或1 指示的數(shù)據(jù)存儲單元中的數(shù)據(jù)讀出,存放于目的寄存器Rd中,并用Ι0+Μ0 (或I2+M2)來更新IO (或12)。指令助記符LD Rd, (Ix);將Ix指示的存儲單元中數(shù)據(jù)讀出并存儲于Rd中。指令格式參照圖2 為:Grd,0100,00, Rd,01, Ix格式說明Ix字段固定為0000/000 (IO)或0100/100 (12),IO為輸入數(shù)據(jù)存儲器讀地址指針,12為輸出數(shù)據(jù)存儲器讀地址指針;Rd的類型只能是通用寄存器(GrOO Grl5 或 GrOO Gr07)。第10條,數(shù)據(jù)存儲器寫數(shù)據(jù)指令指令功能將源寄存器中數(shù)據(jù)讀出并寫入到數(shù)組寫地址指針I(yè)l (或13)指示的數(shù)據(jù)存儲單元中,并用I1+M1 (或I3+M3)來更新Il (或13)。指令助記符LD(Ix),Rs ;將Rs中的數(shù)據(jù)寫入il指示的輸入存儲單元中。指令格式參照圖2 為Grd,0101,01,Ix,00, Rs格式說明Ix字段固定為0010/010 (I 1)或0110/110 (13),Il為輸入數(shù)據(jù)存儲器寫地址指針,12為輸出數(shù)據(jù)存儲器寫地址指針;Rs的類型只能是通用寄存器(GrOO Grl5 或 GrOO Gr07)。第11條,空操作指令指令功能保持原有狀態(tài),不做任何操作。
指令助記符NOP ;保持原有狀態(tài),不做任何操作。指令格式參照圖2 為Grd,0000,00,PAD, 00, PAD格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或000。第12條,軟件復(fù)位指令指令功能將程序計數(shù)器(PC)復(fù)位至指定的復(fù)位服務(wù)程序入口地址處(用于軟件
T-MlA ) O指令助記符RST Num ; 將PC復(fù)位至指定的復(fù)位服務(wù)程序入口地址處指令格式參照圖2 為Grd,llll,00,PAD,00,Num格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或OOO ;Num 在完整模式下為4-bit,在精簡模式下為3-bit。第13條,休眠指令指令功能程序計數(shù)器(PC)值保持不變,直到ASIP指定引腳處有事件產(chǎn)生,程序 繼續(xù)執(zhí)行(用于程序執(zhí)行與外部指定事件的同歩)。指令助記符IDEL Num ; PC值保持不變,直至指定引腳處有事件產(chǎn)生。指令格式參照圖2 為Grd,1110,00,PAD,00,Num格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或OOO ;Num 在完整模式下為4-bit,在精簡模式下為3-bit。第14條,程序跳轉(zhuǎn)指令指令功能若指令指定的算木運算狀態(tài)標(biāo)志位或衍生狀態(tài)標(biāo)志位有效(置為 “1”),程序跳轉(zhuǎn)至指定地址處(當(dāng)前PC值+偏移地址Addr)執(zhí)行,否則順序執(zhí)行。指令助記符JZ Addr; 若“零”標(biāo)志位(AZ)置位則程序跳轉(zhuǎn);JN Addr; 若“符號”標(biāo)志位(AN)置位則程序跳轉(zhuǎn);JC Addr; 若“進(jìn)位”標(biāo)志位(AC)置位則程序跳轉(zhuǎn);JV Addr; 若“溢出”標(biāo)志位(AV)置位則程序跳轉(zhuǎn);JGT Addr ; 若“大于”標(biāo)志位(GT)置位則程序跳轉(zhuǎn);JLT Addr ; 若“小于”標(biāo)志位(LT)置位則程序跳轉(zhuǎn);JMP Addr ; 無條件跳轉(zhuǎn)。指令格式Grd,1101,CND,Addr格式說明完整應(yīng)用模式下,目的地址Addr為9-bit有符號數(shù);精簡應(yīng)用模式下, 目的地址Addr為7-bit有符號數(shù)。CND為對應(yīng)于上述各條跳轉(zhuǎn)指令的跳轉(zhuǎn)條件一算木運算狀態(tài)標(biāo)志位代碼OOO “零”標(biāo)志位(AZ);OOl “符號”標(biāo)志位(AN);OlO “進(jìn)位”標(biāo)志位(AC);Oll “溢出”標(biāo)志位(AV);
100 “大于”標(biāo)志位(GT);101 “小于”標(biāo)志位(LT);110:保留;111 無條件標(biāo)志(NCND),此狀態(tài)下,執(zhí)行無條件跳轉(zhuǎn)。第15條,循環(huán)指令指令功能程序在指定長度(Lp_lgth)的循環(huán)體內(nèi)往復(fù)執(zhí)行,直至循環(huán)計數(shù)器為 “0”。指令助記符D0Lp_lgth UNTL CE ;程序循環(huán)執(zhí)行,直至 CE 為 “0”。指令格式Grd,1100,Lp_lgth格式說明完整應(yīng)用模式下,循環(huán)體長度Lp_lgth為12-bit;精簡應(yīng)用模式下,循環(huán)體長度Lp_lgth為ΙΟ-bit ;循環(huán)指令無軟件開銷,允許兩重循環(huán)嵌套。第16條,子程序調(diào)用與返回指令指令功能若指令字中指示位(C/R)狀態(tài)為0,則將當(dāng)前程序計數(shù)器(PC)之值+1 后壓入堆棧(返回地址),程序跳轉(zhuǎn)至指定地址處(當(dāng)前PC值+偏移地址Addr)執(zhí)行(子程序調(diào)用);若指令字中指示位(C/R)狀態(tài)為1,將堆棧頂部數(shù)據(jù)內(nèi)容彈出并載入程序計數(shù)器(PC)中,繼續(xù)執(zhí)行程序(子程序返回)。指令助記符CALL Addr ; 子程序調(diào)用;RTS ;子程序返回。指令格式:Grd,1011,C/R, Addr格式說明C/R位為“0”時,執(zhí)行子程序調(diào)用,為“1”時,執(zhí)行子程序返回;完整應(yīng)用模式下,子程序調(diào)用地址Addr為11-bit無符號數(shù);精簡應(yīng)用模式下,子程序調(diào)用地址Addr 為9-bit無符號數(shù)。參照圖3,嵌入式專用指令集處理器包括算術(shù)運算單元、通用寄存器單元、數(shù)據(jù)地址產(chǎn)生單元、程序定序單元、輸入/輸出數(shù)據(jù)存儲器單元、程序存儲器單元和數(shù)據(jù)交換接口單元。在實際應(yīng)用時主要由FPGA器件來實現(xiàn),并且往往是以大規(guī)模并行處理單元陣列的方式來構(gòu)成高速實時信號處理系統(tǒng)。程序存儲器單元存放應(yīng)用程序的指令代碼。程序定序單元解釋程序指令,并向通用寄存器單元、數(shù)據(jù)地址產(chǎn)生單元、算術(shù)運算單元和數(shù)據(jù)交換接口單元發(fā)送指令代碼,以及控制保護性指令的執(zhí)行。數(shù)據(jù)地址產(chǎn)生單元根據(jù)程序定序單元發(fā)送的指令代碼對通用/專用寄存器進(jìn)行寄存器尋址、對數(shù)據(jù)存儲器進(jìn)行變址尋址,并將尋址結(jié)果發(fā)送到數(shù)據(jù)存儲器單元。數(shù)據(jù)存儲器單元一方面接收外部發(fā)送的待處理數(shù)據(jù)進(jìn)行存儲,另一方面根據(jù)來自數(shù)據(jù)地址產(chǎn)生器的尋址結(jié)果將存儲在對應(yīng)地址中的待處理數(shù)據(jù)發(fā)送給通用寄存器單元,同時接收來自通用寄存器單元的處理后數(shù)據(jù)進(jìn)行存儲。通用寄存器單元根據(jù)程序定序單元發(fā)送的指令代碼,一方面接收來自數(shù)據(jù)存儲器單元的待處理數(shù)據(jù)并轉(zhuǎn)發(fā)給算術(shù)運算單元,另一方面接收經(jīng)過算術(shù)運算單元處理后的數(shù)據(jù)并轉(zhuǎn)發(fā)給數(shù)據(jù)存儲器單元、數(shù)據(jù)交換接口單元, 同時還要接收來自數(shù)據(jù)交換接口單元的數(shù)據(jù)并轉(zhuǎn)發(fā)給算術(shù)運算單元。數(shù)據(jù)交換接口單元根據(jù)程序定序單元發(fā)送的指令代碼將來自通用寄存器單元的數(shù)據(jù)進(jìn)行存儲并轉(zhuǎn)發(fā)給系統(tǒng)外部,同時又將外部數(shù)據(jù)轉(zhuǎn)發(fā)給通用寄存器單元。算術(shù)運算單元根據(jù)程序定序單元發(fā)送的指令代碼對來自通用寄存器單元的操作數(shù)進(jìn)行各種運算操作,同時又將運算結(jié)果存入通用寄存器單元。
權(quán)利要求
1.一種基于嵌入式專用指令集處理器的指令集編碼方法,該方法步驟如下(1)定義機器代碼位寬,將嵌入式專用指令集處理器的數(shù)據(jù)存儲器單元和程序存儲器單元總線設(shè)置為18-bit與16-bit,將完整應(yīng)用模式與精簡應(yīng)用模式下的機器代碼位寬分別定義為18-bit與16-bit ;(2)定義指令類型,將指令集的指令類型定義為算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類三大類共16條多功能指令,算術(shù)邏輯運算類指令除可完成相關(guān)的算術(shù)運算外,還可以附帶由用戶自己定義的四種操作功能;(3)定義尋址方式,對指令集指令中的操作數(shù)尋址定義為立即數(shù)尋址、寄存器尋址、變址尋址三種尋址方式;立即數(shù)尋址完成對立即數(shù)的尋址,寄存器尋址完成對通用寄存器和特殊寄存器的尋址,變址尋址包括輸入數(shù)據(jù)存儲器單元的讀/寫地址、輸出數(shù)據(jù)存儲器單元的讀/寫地址4套地址指針;(4)劃分指令代碼字段,將指令的機器代碼劃分為六個字段2-bit保護性指令字段、 4-bit指令代碼字段、兩個2-bit輔助功能字段、4或3-bit目的/源寄存器字段、4或3-bit 源寄存器字段;(5)編碼,采用指令組合編碼方式定義各個字段中的具體編碼。
2.根據(jù)權(quán)利要求1所述的基于嵌入式專用指令集處理器的指令集編碼方法,其特征在于,所述步驟O)中的算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類三大類指令均為單字長、 單周期格式;其中,算術(shù)邏輯運算類指令包括移位運算指令、邏輯運算指令、算術(shù)運算指令、 乘法運算指令和乘后累加運算指令,除了能完成相關(guān)的算術(shù)邏輯運算外,用戶可以自己定義四種后處理操作;數(shù)據(jù)交換類指令包括寄存器數(shù)據(jù)傳輸指令、立即數(shù)高位裝載指令、立即數(shù)低位裝載指令、數(shù)據(jù)存儲器讀數(shù)據(jù)指令和數(shù)據(jù)存儲器寫數(shù)據(jù)指令;程序定序類指令包括空操作指令、軟件復(fù)位指令、休眠指令、無條件/有條件程序跳轉(zhuǎn)指令、循環(huán)指令、子程序調(diào)用與返回指令。
3.根據(jù)權(quán)利要求1所述的基于嵌入式專用指令集處理器的指令集編碼方法,其特征在于,所述步驟(3)中的通用寄存器在完整應(yīng)用模式下設(shè)置16個,在精簡應(yīng)用模式下設(shè)置8 個。
4.根據(jù)權(quán)利要求1所述的基于嵌入式專用指令集處理器的指令集編碼方法,其特征在于,所述步驟中的保護性指令字段為可選字段,用于構(gòu)建具有指令自主能力的單指令流-多數(shù)據(jù)流(SIMD)并行處理系統(tǒng);若不采用保護性指令執(zhí)行方式,完整應(yīng)用模式與精簡應(yīng)用模式兩種模式的指令字長則可縮短至16-bit和14-bit。
5.根據(jù)權(quán)利要求1所述的基于嵌入式專用指令集處理器的指令集編碼方法,其特征在于,所述步驟(5)中的編碼方式是對指令集中16條指令分別進(jìn)行編碼,其編碼格式和指令功能如下第1條,移位運算指令指令功能將源寄存器(Rs)內(nèi)容進(jìn)行移位運算和用戶自定義的算術(shù)邏輯后處理 (Seldef)操作,將結(jié)果存儲在目的寄存器(Rd)中;指令助記符Seldef LLA Rd, Rs ; Rs左移并后處理,結(jié)果存于Rd ;Seldef RL Rd, Rs ; Rs邏輯右移并后處理,結(jié)果存于Rd ;Seldef RA Rd, Rs ; Rs算術(shù)右移并后處理,結(jié)果存于Rd ; Seldef NSFT Rd, Rs ; 執(zhí)行用戶自定義后處理,結(jié)果存于Rd ; 指令格式:Grd,0110, Aux2, Rd, Auxl,Rs格式說明2-bit的Aux2字段指示四種用戶自定義后處理操作;2-bit的Auxl字段指示具體的移位操作00 (LLA-左移),01 (RL-邏輯右移),10 (RA-算術(shù)右移),11(NSFT-無移位);Rd與Rs的類型只能是通用寄存器(GrOO Gr 155或GrOO Gr07); 第2條,邏輯運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行邏輯運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中; 指令助記符Seldef LNOT Rd, Rs ; Rs求反并后處理,結(jié)果存于Rd ; Seldef LAND Rd, Rs ; Rs、Rd “與”運算并后處理,結(jié)果存于Rd ; Seldef LOR Rd, Rs ; Rs、Rd “或”運算并后處理,結(jié)果存于Rd ; Seldef LXOR Rd, Rs ; Rs、Rd “異或”運算并后處理,結(jié)果存于Rd ; 指令格式:Grd,0111, Aux2, Rd, Auxl,Rs格式說明2-bit的Aux2字段指示四種用戶自定義后處理操作;2-bit的Auxl字段指示具體的邏輯運算00 (LN0T-邏輯非),01 (LAND-邏輯與),10 (L0R-邏輯或),11 (LX0R-邏輯異或);Rd與Rs的類型只能是通用寄存器(GrOO Grl5或GrOO Gr07); 第3條,算術(shù)運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行算術(shù)運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中; 指令助記符Seldef ADD Rd, Rs ;Rs+Rd并后處理,結(jié)果存于Rd ; Seldef ADC Rd, Rs ;Rs+Rd+Cy 并后處理,結(jié)果存于 Rd ; Seldef SUB Rd, Rs ;Rs-Rd并后處理,結(jié)果存于Rd ; Seldef SUBC Rd, Rs ;Rs-Rd-Cy 并后處理,結(jié)果存于 Rd ; 指令格式:Grd, 1000,Aux2, Rd, Auxl,Rs格式說明2-bit的Aux2字段指示四種用戶自定義后處理操作;2-bit的Auxl字段指示具體的算術(shù)運算00 (ADD-加),01 (ADC-帶進(jìn)位加),10 (SUB-減),1KSUBC-帶借位減); Rd與Rs的類型只能是通用寄存器(GrOO Gr 15或GrOO Gr07); 第4條,乘法運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行乘法運算和用戶自定義的后處理操作(seldef),并將結(jié)果存儲在目的寄存器Rd中; 指令助記符Seldef MULT Rd, Rs ;Rs X Rd 并后處理,結(jié)果存于 Rd ; 指令格式:Grd, 1001,Aux2, Rd, Auxl,Rs格式說明2-bit的Auxl字段固定填充為00 ;Rd與Rs的類型只能是通用寄存器 (GrOO Gr 15 或 GrOO Gr07); 第5條,乘后累加運算指令指令功能將源寄存器Rs的內(nèi)容與目的寄存器Rd的內(nèi)容進(jìn)行乘法運算后與累加寄存器(A)中的內(nèi)容相加,執(zhí)行用戶自定義的后處理操作(seldef),并將結(jié)果存儲在累加寄存器A中;指令助記符Seldef MAC Rd, Rs ; (Rs X R) +A并后處理,結(jié)果存于累加器A ; 指令格式:Grd, 1010,Aux2, Rd, Auxl,Rs格式說明2-bit的Auxl字段固定填充為00 ;Rd與Rs的類型只能是通用寄存器 (GrOO Gr 15 或 GrOO Gr07); 第6條,寄存器數(shù)據(jù)傳輸指令指令功能將源寄存器Rs的內(nèi)容存儲在目的寄存器Rd中; 指令助記符LD Rd, Rs ; 將Rs中的數(shù)據(jù)存儲于Rd中; 指令格式:Grd,0001, Aux2, Rd, Auxl,Rs格式說明2-bit的Aux2字段用于選擇目的寄存器類型;2-bjt的Auxl字段選擇源寄存器類型;具體的寄存器編碼為00 (通用寄存器-GrOO Grl5或GrOO Gr07),01 (數(shù)組指針寄存器-10,M0, II,Ml, 12,M2, 13,M3),10 (輸入 / 輸出寄存器-Stout, Stin, Ioout, loin),11(累加器Α、循環(huán)次數(shù)寄存器CE); 第7條,立即數(shù)高位裝載指令指令功能將立即數(shù)高12/10-bit數(shù)據(jù)寫入到高位立即數(shù)暫存寄存器(Drt_data_h)中;指令助記符LD Drt_data_h ;將立即數(shù)高位數(shù)據(jù)寫入高位立即數(shù)暫存寄存器中; 指令格式:Grd,0010, Drt_data_h(12 或 10-bit)格式說明在完整應(yīng)用模式下,Drt_data_h中存放立即數(shù)的高12_bit ;在精簡應(yīng)用模式下,Drt_data_h中存放立即數(shù)的高10_bit ; 第8條,立即數(shù)低位裝載指令指令功能將立即數(shù)低6-bit數(shù)據(jù)與高位立即數(shù)暫存寄存器的內(nèi)容拼接成18/16-bit 立即數(shù),存入目的寄存器Rd中;LD Rd, Drt_data_l ;將拼接好的立即數(shù)存儲于目的寄存器Rd中; 指令格式:Grd,0011, PD, Rd, Drt_data_h格式說明2-bit的PD字段在完整應(yīng)用模式下固定填充00,在精簡應(yīng)用模式下,P字節(jié)填充為0,D字節(jié)為立即數(shù)bit5;Rd的類型只能是通用寄存器(GrOO Grl5或GrOO Gr07);第9條,數(shù)據(jù)存儲器讀數(shù)據(jù)指令指令功能將數(shù)組讀地址指針I(yè)O (或1 指示的數(shù)據(jù)存儲單元中的數(shù)據(jù)讀出,存放于目的寄存器Rd中,并用Ι0+Μ0 (或I2+M2)來更新IO (或12); 指令助記符LD Rd, (Ix); 將Ix指示的存儲單元中數(shù)據(jù)讀出并存儲于Rd中; 指令格式Grd,0100,00,Rd, 01, Ix格式說明ix字段固定為0000/000(10)或0100/100(1 ,IO為輸入數(shù)據(jù)存儲器讀地址指針,12為輸出數(shù)據(jù)存儲器讀地址指針;Rd的類型只能是通用寄存器(GrOO Grl5或 GrOO Gr07);第10條,數(shù)據(jù)存儲器寫數(shù)據(jù)指令指令功能將源寄存器中數(shù)據(jù)讀出并寫入到數(shù)組寫地址指針I(yè)i (或1 指示的數(shù)據(jù)存儲單元中,并用I1+M1 (或I3+M3)來更新Il (或13); 指令助記符LD(Ix) ,Rs; 將Rs中的數(shù)據(jù)寫入il指示的輸入存儲單元中; 指令格式Grd,0101,01,Ix,00, Rs格式說明Ix字段固定為0010/010(11)或0110/110(13),Il為輸入數(shù)據(jù)存儲器寫地址指針,12為輸出數(shù)據(jù)存儲器寫地址指針;Rs的類型只能是通用寄存器(GrOO Grl5或 GrOO Gr07);第11條,空操作指令指令功能保持原有狀態(tài),不做任何操作; 指令助記符NOP ; 保持原有狀態(tài),不做任何操作; 指令格式:Grd,0000,00, PAD, 00, PAD格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或000 ; 第12條,軟件復(fù)位指令指令功能將程序計數(shù)器(PC)復(fù)位至指定的復(fù)位服務(wù)程序入口地址處(用于軟件調(diào)試);指令助記符RST Num ;將PC復(fù)位至指定的復(fù)位服務(wù)程序入口地址處; 指令格式:Grd, 1111,00,PAD, 00, Num格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或000 ;Num在完整模式下為4-bit,在精簡模式下為3-bit ; 第13條,休眠指令指令功能程序計數(shù)器(PC)值保持不變,直到ASIP指定引腳處有事件產(chǎn)生,程序繼續(xù)執(zhí)行(用于程序執(zhí)行與外部指定事件的同步); 指令助記符IDEL Num ; PC值保持不變,直至指定引腳處有事件產(chǎn)生; 指令格式:Grd, 1110,00,PAD, 00, Num格式說明PAD在完整模式下固定填充0000,在精簡模式下固定填充或000 ;Num在完整模式下為4-bit,在精簡模式下為3-bit ; 第14條,程序跳轉(zhuǎn)指令指令功能若指令指定的算術(shù)運算狀態(tài)標(biāo)志位或衍生狀態(tài)標(biāo)志位有效(置為“1”),程序跳轉(zhuǎn)至指定地址處(當(dāng)前PC值+偏移地址Addr)執(zhí)行,否則順序執(zhí)行; 指令助記符JZ Addr ; 若“零”標(biāo)志位(AZ)置位則程序跳轉(zhuǎn);JN Addr ; 若“符號”標(biāo)志位(AN)置位則程序跳轉(zhuǎn); JC Addr ; 若“進(jìn)位”標(biāo)志位(AC)置位則程序跳轉(zhuǎn); JV Addr ; 若“溢出”標(biāo)志位(AV)置位則程序跳轉(zhuǎn); JGT Addr ; 若“大于”標(biāo)志位(GT)置位則程序跳轉(zhuǎn); JLT Addr ; 若“小于”標(biāo)志位(LT)置位則程序跳轉(zhuǎn); JMP Addr ; 無條件跳轉(zhuǎn); 指令格式:Grd, 1101,CND, Addr格式說明完整應(yīng)用模式下,目的地址Addr為9-bit有符號數(shù);精簡應(yīng)用模式下,目的地址Addr為7-bit有符號數(shù);CND為對應(yīng)于上述各條跳轉(zhuǎn)指令的跳轉(zhuǎn)條件——算術(shù)運算狀態(tài)標(biāo)志位代碼000“零”標(biāo)志位(AZ);001“符號”標(biāo)志位(AN);010“進(jìn)位”標(biāo)志位(AC);011“溢出”標(biāo)志位(AV);100“大于”標(biāo)志位(GT);101“小于”標(biāo)志位(LT);110保留;111無條件標(biāo)志(NCND),此狀態(tài)下,執(zhí)行無條件跳轉(zhuǎn); 第15條,循環(huán)指令指令功能程序在指定長度(Lp_lgth)的循環(huán)體內(nèi)往復(fù)執(zhí)行,直至循環(huán)計數(shù)器為“0”; 指令助記符D0Lp_lgth UNTL CE ;程序循環(huán)執(zhí)行,直至CE為“0” ; 指令格式Grd,1100,Lp_lgth格式說明完整應(yīng)用模式下,循環(huán)體長度Lp_lgth為12-bit ;精簡應(yīng)用模式下,循環(huán)體長度Lp_lgth為ΙΟ-bit ;循環(huán)指令無軟件開銷,允許兩重循環(huán)嵌套; 第16條,子程序調(diào)用與返回指令指令功能若指令字中指示位(C/R)狀態(tài)為0,則將當(dāng)前程序計數(shù)器(PC)之值+1后壓入堆棧(返回地址),程序跳轉(zhuǎn)至指定地址處(當(dāng)前PC值+偏移地址Addr)執(zhí)行(子程序調(diào)用);若指令字中指示位(C/R)狀態(tài)為1,將堆棧頂部數(shù)據(jù)內(nèi)容彈出并載入程序計數(shù)器(PC) 中,繼續(xù)執(zhí)行程序(子程序返回); 指令助記符CALL Addr ; 子程序調(diào)用; RTS ;子程序返回;指令格式:Grd, 1011,C/R, Addr格式說明C/R位為“0”時,執(zhí)行子程序調(diào)用,為“1”時,執(zhí)行子程序返回;完整應(yīng)用模式下,子程序調(diào)用地址Addr為11-bit無符號數(shù);精簡應(yīng)用模式下,子程序調(diào)用地址Addr為 9-bit無符號數(shù)。
6.根據(jù)權(quán)利要求1所述的基于嵌入式專用指令集處理器的指令集編碼方法是基于嵌入式專用指令集處理器實現(xiàn)的,其電路體系結(jié)構(gòu)包括算術(shù)運算單元、通用寄存器單元、數(shù)據(jù)地址產(chǎn)生單元、程序定序單元、輸入/輸出數(shù)據(jù)存儲器單元、程序存儲器單元和數(shù)據(jù)交換接口單元。
全文摘要
本發(fā)明提供一種基于嵌入式專用指令集處理器的指令集編碼方法,包括定義機器代碼位寬、定義指令類型、定義尋址方式、劃分指令代碼字段、編碼五個步驟。此指令集根據(jù)現(xiàn)場可編程門陣列(FPGA)內(nèi)部存儲器與數(shù)據(jù)總線資源均以18位為基本位寬的特點進(jìn)行優(yōu)化。指令集包括算術(shù)邏輯運算類、數(shù)據(jù)交換類和程序定序類16條多功能指令,指令包含用于構(gòu)建具有指令自主能力的單指令流-多數(shù)據(jù)流并行處理系統(tǒng)所需的保護性指令字段。本發(fā)明公開的指令集具有完整與精簡兩種應(yīng)用模式,在兩種應(yīng)用模式下,指令機器代碼長度可分別縮短至16-bit與14-bit,大幅提高了FPGA內(nèi)部電路資源的利用效率和處理器的指令執(zhí)行速度。
文檔編號G06F9/38GK102221987SQ20111012073
公開日2011年10月19日 申請日期2011年5月11日 優(yōu)先權(quán)日2011年5月11日
發(fā)明者封勇福, 張犁, 李嬌嬌, 李甫, 王娟 申請人:西安電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
鄂州市| 鹤山市| 澎湖县| 潞城市| 吴忠市| 胶南市| 天柱县| 金堂县| 茂名市| 宁河县| 莱芜市| 茂名市| 调兵山市| 屏山县| 资源县| 昭通市| 济源市| 屏东县| 清流县| 舞钢市| 长阳| 梨树县| 平阴县| 东阳市| 长治市| 威海市| 潍坊市| 柏乡县| 肥东县| 油尖旺区| 海林市| 双城市| 吉安市| 锡林浩特市| 浮梁县| 西盟| 枣阳市| 嘉定区| 广丰县| 开化县| 岗巴县|