亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VTEST的TMS320C3x指令集模擬器設(shè)計

        2013-09-08 10:18:16郭向英張西超
        計算機工程與設(shè)計 2013年6期
        關(guān)鍵詞:指令

        郭向英,盛 莊,張西超

        (北京控制工程研究所,北京100190)

        0 引 言

        VTEST是一個運行在X86宿主機上的嵌入式軟件仿真測試開發(fā)平臺[1,2],可用于構(gòu)建虛擬的軟件運行環(huán)境,目前主要應(yīng)用于航天嵌入式軟件的測試過程[3]。VTEST的核心是一個指令集模擬器[4,5],用于在軟件層面對目標(biāo)計算機的各個組成部分,包括目標(biāo)處理器指令集、中斷控制器、外設(shè)等進行全系統(tǒng)模擬,從而使得軟件能夠在不做任何修改前提下運行于不同體系結(jié)構(gòu)的計算機。在嵌入式軟件的開發(fā)過程中,以指令集模擬器為核心的仿真環(huán)境能夠提供一個接近于真實目標(biāo)機的運行環(huán)境,使軟件開發(fā)能夠與硬件開發(fā)同步進行[6]。TMS320C3x是RISC類型DSP處理器,可以在一個周期內(nèi)完成整數(shù)或浮點數(shù)乘法和算術(shù)邏輯單元的并行操作,其家族成員包括:C30、C31/LC31、C32和VC33。本文第一部分針對TMS320C3x指令尋址模式較多的特點,提出了雙線代碼指令模擬技術(shù),該技術(shù)能兼顧指令模擬效率與模擬器實現(xiàn)的復(fù)雜度;第二部分對中斷處理機制進行了研究,給出了中斷響應(yīng)模擬策略;第三部分基于VTEST提供的定時機制設(shè)計了事件驅(qū)動外設(shè)模擬方法;第四部分驗證了所設(shè)計模擬器的指令執(zhí)行速度,并測試了模擬中斷和外設(shè)時對模擬器性能的影響。

        1 指令集模擬

        1.1 純字節(jié)解釋與穿線代碼

        純字節(jié)解釋是一種比較簡單的模擬器實現(xiàn)方法,其核心是一個循環(huán),反復(fù)執(zhí)行取指、譯碼和執(zhí)行過程[7]。由于解釋一條指令需要經(jīng)歷取指、譯碼和模擬執(zhí)行3個階段,因此盡管這種方法易于實現(xiàn),但缺點是指令模擬的效率非常低。常見的改進方法是將譯碼和模擬分成兩個階段,譯碼時將目標(biāo)碼翻譯成中間格式代碼并進行緩存,模擬執(zhí)行時直接讀取中間碼,因為目標(biāo)碼往往被設(shè)計成更適合機器使用,而中間碼則被設(shè)計成更利于解釋器使用[8]。

        在這些改進方法中,運用較多的一種技術(shù)是穿線代碼,其執(zhí)行過程與硬件執(zhí)行指令的特點類似,如圖1所示,在譯碼階段確定指令對應(yīng)的模擬程序,一條指令的模擬程序執(zhí)行結(jié)束后直接跳轉(zhuǎn)到后繼指令的模擬程序,節(jié)省了不必要的循環(huán)執(zhí)行開銷。與純字節(jié)解釋方法相比,前者是一次譯碼,一次執(zhí)行,后者是一次譯碼,多次執(zhí)行[9]。

        圖1 穿線代碼

        1.2 雙線代碼

        TMS320C3x的指令共有四組尋址模式,每組模式可使用至少兩種尋址類型,如圖2所示,其中間接尋址又分為相對間接尋址、IR0索引或IR1索引間接尋址,以及兩項特殊的間接尋址,共計26種子類型。針對這些指令特點,使用穿線代碼技術(shù)開發(fā)指令集模擬器時,譯碼階段一般會選擇下面兩種方案之一進行處理:

        方案一:譯碼時不對組尋址模式和尋址類型進行解析,指令模擬執(zhí)行時在模擬程序中進行相應(yīng)地解析工作;

        圖2 指令尋址模式與尋址類型

        方案二:對指令的每種尋址方式分別編寫尋址解析程序,譯碼時解析出尋址方式并確定相應(yīng)的指令模擬程序,模擬程序執(zhí)行時不再進行尋址方式解析;

        上述兩種方案各有優(yōu)缺點,第一種方案的優(yōu)點是針對每條指令只編寫一個指令模擬程序,模擬器開發(fā)的工作量小,缺點是每次執(zhí)行時需要重復(fù)對指令進行尋址解析,模擬速度較低;第二種方案的優(yōu)點是執(zhí)行時不需要進行尋址方式解析,模擬速度較快,缺點是需要為一條指令編寫30多個模擬程序,模擬器開發(fā)工作量較大。

        綜合考慮上述兩種方案的優(yōu)缺點,可以采用一種兼顧指令模擬效率和模擬器開發(fā)工作量的折中方案,即為每條指令編寫一個模擬程序,但針對每種尋址類型分別編寫尋址解析程序,在譯碼階段解析出指令的尋址方式,并將尋址尋址方式對應(yīng)的尋址解析程序地址與指令模擬程序地址一起緩存。模擬指令執(zhí)行時,不必再進行指令尋址方式解析,而是直接進入相應(yīng)的尋址解析程序序取出操作數(shù),然后跳轉(zhuǎn)到指令模擬程序,其執(zhí)行過程如圖3所示。

        圖3 雙線代碼

        這里將這種方案稱為雙線代碼,它是對穿線代碼技術(shù)的一種改進。采用雙線代碼技術(shù)模擬指令時,緩存的中間碼包含兩條線,一條線指向?qū)ぶ方馕龀绦颍硪粭l線指向模擬程序,指令模擬執(zhí)行時須沿著這兩條線先后執(zhí)行。相對于第一種方案,編寫模擬程序的工作量沒有變化,只是在譯碼階段增加了對尋址處理程序的緩存工作,模擬器的空間復(fù)雜度有所升高,但模擬執(zhí)行效率卻可獲得較大提升;相對于第二種方案,雙線代碼多了一次跳轉(zhuǎn),指令模擬執(zhí)行時會增加3條X86機器指令,速度會略有降低,但由于針對每條指令僅需編寫一個模擬程序,因此,可節(jié)省90%以上的模擬程序開發(fā)工作量。

        1.3 中間碼格式

        由于穿線代碼將譯碼和調(diào)度執(zhí)行服務(wù)程序分成兩個獨立的階段,其中譯碼階段對目標(biāo)指令進行解析并緩存結(jié)果,調(diào)度執(zhí)行階段根據(jù)緩存的中間碼直接進行模擬執(zhí)行,因此要求中間碼包含足夠的信息以滿足執(zhí)行的需要。一般情況下,每個中間碼都包含兩個信息,一個是執(zhí)行時應(yīng)調(diào)用的模擬程序,另一個是調(diào)用時需要傳遞的參數(shù)。

        對于雙線代碼,除了上述兩個信息外,還需要一個指示尋址解析程序的信息。使用雙線代碼模擬時中間碼的結(jié)構(gòu)如圖4所示,這個結(jié)構(gòu)體主要包含3個參數(shù),其中參數(shù)parms存放模擬指令時需要的輸入?yún)?shù),如源寄存器、目的寄存器等,參數(shù)routine1指示尋址解析程序地址,參數(shù)routine2指示指令模擬程序地址;執(zhí)行階段以param作為輸入?yún)?shù),沿著routine1、routine2兩條線進行指令模擬。

        1.4 特殊中間碼

        圖4 雙線中間碼結(jié)構(gòu)

        TMS320C3x有一些特殊的指令,如延遲分支、RPTS等,它們的操作不是在一個機器周期內(nèi)完成,后繼指令執(zhí)行時仍受其副作用影響。如果在每條指令模擬時逐項判斷當(dāng)前是否存在某種特殊情況需要處理,將對模擬器的性能產(chǎn)生較大影響。為避免這種情況,一種處理方式是在特殊指令所影響的位置插入特殊中間碼,通過特殊中間碼完成相應(yīng)的后續(xù)操作。下面以延遲分支指令為例說明特殊中間碼的設(shè)置方式及工作機理,如圖5所示,指令 (1)是一條延遲分支指令,其執(zhí)行時如果標(biāo)志位Z沒有置位,則順序執(zhí)行,否則跳轉(zhuǎn)至寄存器R0所指向的目的地址,但跳轉(zhuǎn)操作并不立即執(zhí)行,而是在延遲3條指令之后,即在指令(4)執(zhí)行之后,指令 (5)執(zhí)行之前才跳轉(zhuǎn),所以將此位置的中間碼替換成特殊中間碼,在該處根據(jù)BZD指令執(zhí)行時的判斷情況控制程序順序或跳轉(zhuǎn)執(zhí)行。

        圖5 延遲分支特殊中間碼

        2 中斷模擬

        2.1 中斷識別

        TMS320C3x包含多個外部和內(nèi)部中斷,外部中斷有INT0INT3,內(nèi)部中斷包括DMA、定時器和串口中斷,其中C30、C31中斷向量地址是固定的,C32中斷向量地址是可配置的。TMS320C3x通過3個寄存器來控制中斷:狀態(tài)寄存器ST、中斷使能寄存器IE和中斷標(biāo)記寄存器IF。當(dāng)中斷產(chǎn)生時,中斷標(biāo)記寄存器IF標(biāo)記位被置位,如果狀態(tài)寄存器ST的全局中斷控制位GIE處于使能狀態(tài),且中斷使能寄存器IE相應(yīng)的位被使能,則響應(yīng)中斷。

        模擬器運行時,必須及時識別中斷并模擬中斷影響過程[10]。為了檢查指令模擬執(zhí)行后是否存在待響應(yīng)的中斷,需要在穿線代碼層進行判斷,但如果在穿線代碼執(zhí)行時每次均通過ST、IE、IF這3個寄存器來識別是否存在待響應(yīng)的中斷,需要增加下面操作:

        在X86機器上,實現(xiàn)上述操作至少需要3條讀內(nèi)存指令、一條位運算指令、一條邏輯運算指令以及一條條件轉(zhuǎn)移指令。由于模擬每條指令均要進行上述判斷,所以使用這種中斷識別方式會對模擬器性能產(chǎn)生較大的負(fù)面影響。一種更快的方式是定義一個中斷變量,用于標(biāo)記當(dāng)前是否存在待響應(yīng)的中斷,只有在中斷發(fā)生時才根據(jù)ST、IE和IF判斷產(chǎn)生的中斷是否需要響應(yīng),是則設(shè)置中斷變量對應(yīng)的標(biāo)記位,否則等待中斷響應(yīng)條件滿足后再進行設(shè)置。穿線代碼執(zhí)行時直接通過該中斷變量來識別是否進行中斷處理,這個過程只需要兩條X86機器指令。

        2.2 中斷響應(yīng)過程

        中斷響應(yīng)模擬過程如圖6所示,若執(zhí)行至某個中間碼時需要響應(yīng)中斷,在該指令執(zhí)行結(jié)束后,首先進行中斷現(xiàn)場保護,包括非使能全局中斷控制位GIE、清除中斷標(biāo)記位、當(dāng)前PC值壓棧等,然后轉(zhuǎn)到中斷向量入口地址執(zhí)行;模擬運行至服務(wù)程序出口時恢復(fù)現(xiàn)場,返回被中斷位置繼續(xù)執(zhí)行。

        圖6 中斷響應(yīng)過程

        3 外設(shè)模擬

        外設(shè)模擬是模擬器開發(fā)中必不可少的部分,同時外設(shè)模擬機制的選擇對模擬器性能有著重要的影響。TMS320C3x共有3種外設(shè):定時器、串口和DMA[11],但不同型號的外設(shè)數(shù)量不同,具體情況見表1。

        不同程序使用的外設(shè)可能不同,模擬器可根據(jù)VTEST提供的相關(guān)配置信息僅對程序?qū)嶋H使用的外設(shè)進行模擬。為降低外設(shè)模擬對模擬器性能的影響,設(shè)計TMS320C3x模擬器時采用了事件驅(qū)動方式來控制外設(shè)運行,即模擬器運行中需要外設(shè)響應(yīng)時才觸發(fā)外設(shè)模擬操作,而非每條指令執(zhí)行后實時更新外設(shè)狀態(tài)。

        表1 TMS320C3x外設(shè)配置

        3.1 定時器

        定時器通過3個映射到內(nèi)存的寄存器實現(xiàn)定時控制,它們分別是周期寄存器、計數(shù)寄存器和全局控制寄存器。周期寄存器用于設(shè)置定時周期,計數(shù)寄存器中是增量計數(shù)器的當(dāng)前值,該值與周期寄存器的值相等時清零并觸發(fā)定時中斷。全局控制寄存器中有3個控制位:和GO,控制定時器運行在脈沖或時鐘模式,控制定時器的使能位,該位在使能狀態(tài)下定時器才運行,GO用于重置計數(shù)寄存器并啟動定時器運行。如果定時器已經(jīng)在運行,那么修改或GO控制位均會影響定時事件的到達時刻。定時器有兩種基本工作模式:脈沖和時鐘,兩種模式下時鐘周期的計算公式分別如下:

        T脈沖模式= 周期寄存器/f(定時器時鐘周期);

        T時鐘模式= (2*周期寄存器)/f(定時器時鐘周期);

        基于VTEST的模擬器定時機制如圖7所示,模擬器根據(jù)VTEST設(shè)定的時序周期在執(zhí)行過程中定期向VTEST發(fā)送當(dāng)前的時序信息,定時器使能后,向VTEST發(fā)送定時啟動請求,由VTEST計算并反饋定時到達時刻,虛擬定時器對到達的定時事件處理后再向模擬器發(fā)送相應(yīng)的中斷請求。為描述基于VTEST的定時機制的模擬過程,我們定義下面幾個變量:

        Tb:向VTEST發(fā)送定時請求時模擬器運行時刻;

        Tc:當(dāng)前模擬器運行時刻;

        Tp:定時周期;

        Te:定時事件到達時刻;

        這幾個變量之間的關(guān)系如圖8所示,其中Te=Tb+Tp;模擬器向VTEST發(fā)送當(dāng)前的Tc信息,當(dāng)Tc等于Te時VTEST發(fā)送定時到達消息,并設(shè)置此時的Te為下一次定時周期的Tb,再次經(jīng)過Tp后將到達下一次的Te,如此循環(huán)往復(fù),直至定時器非使能或模擬器停止。

        采用事件驅(qū)動方式進行定時模擬時,由于沒有直接使用計數(shù)寄存器,所以未對其值進行實時更新,但有時需要使用該值 (如利用VTEST調(diào)試時),因此虛擬定時器還要求具備根據(jù)定時狀態(tài)逆向計算計數(shù)寄存器值的能力,計算公式如下

        3.2 串 口

        TMS320C3x為每個串口提供了八個映射到內(nèi)存的寄存器:全局控制寄存器、兩個I/O引腳控制寄存器、3個發(fā)送/接收定時寄存器、數(shù)據(jù)發(fā)送寄存器和數(shù)據(jù)接收寄存器。在全局控制寄存器的控制下,串口按照發(fā)送/接收定時寄存器設(shè)定的頻率通過接收和發(fā)送寄存器收發(fā)數(shù)據(jù)。串口發(fā)送/接收的定時原理與定時器相同,因此可用上節(jié)所述方法模擬串口;但與定時器不同的是,定時器的計數(shù)和周期寄存器是32位寄存器,串口收發(fā)定時用的是16位周期和計數(shù)寄存器。

        3.3 DMA

        TMS320C3x的DMA通道具有4個寄存器:控制寄存器、源地址寄存器、目的地址寄存器和傳輸計數(shù)寄存器。DMA的工作模式有4種:讀同步、寫同步、讀寫同步和無同步,可通過控制寄存器的SYNC(同步模式)位進行設(shè)置。對于前3種同步方式,DMA是在中斷事件的驅(qū)動下進行某種操作,因此可在中斷響應(yīng)模擬時進行DMA模擬;對于無同步模式,可利用VTEST創(chuàng)建一個周期定時器,在每次定時事件到達時進行DMA模擬。

        4 實 驗

        為驗證模擬器的性能,使用航天某型號的測距軟件對模擬器性能進行了測試,處理器主頻為40MHz,內(nèi)存等待周期為4。實驗所用計算機的處理器主頻為3.00GHz,型號是IntelCoreTM2Quad CPU Q9650,內(nèi)存大小是4G,操作系統(tǒng)是 Windows XP。通過實驗,測試了模擬器的速度,并先后設(shè)定了不同的定時周期來實驗?zāi)M中斷和外設(shè)對模擬器性能的影響,結(jié)果如圖9所示。

        圖9 模擬器性能的影響

        從圖中可以看出,隨著定時周期的縮短,模擬器的仿真速度會逐步下降。在定時器非使能情況下,模擬器仿真速度可達234MHz,但在定時周期為10us時,仿真速度僅為36MHz,造成這種情況的原因有3個:一是定時周期越短,VTEST要求模擬器發(fā)送時序信息的周期也越短,導(dǎo)致模擬器向VTEST發(fā)送時序信息的開銷大幅增加,對其性能產(chǎn)生了負(fù)面影響;二是由于虛擬定時器與模擬器工作在同一線程,定時事件頻繁到達,CPU搶占現(xiàn)象明顯;三是響應(yīng)中斷的次數(shù)增多,對模擬器性能產(chǎn)生了負(fù)面影響。

        5 結(jié)束語

        本文提出的雙線代碼指令模擬技術(shù)專門針對TMS320C3x指令尋址模式較多的特點,能夠兼顧指令模擬效率與模擬器開發(fā)的復(fù)雜度。同時,在設(shè)計模擬器時,充分利用了VTEST的擴展功能,模擬器能夠根據(jù)相關(guān)配置信息僅對程序?qū)嶋H使用的外設(shè)進行仿真,對于未使用的外設(shè),其對模擬器性能的影響幾乎為0。依據(jù)本文方法設(shè)計的TMS320C3x模擬器已經(jīng)在航天型號軟件的測試中有所應(yīng)用,模擬器的速度能夠很好地滿足測試需求。但通過實驗也發(fā)現(xiàn)在中斷與外設(shè)觸發(fā)頻率較高情況下,模擬器性能會有所下降,因此中斷與外設(shè)模擬機制還存在一定的改進空間。

        [1]WANG Lize.Research on an execution framework of embedded software testing system [J].Measure & Control Technology,2010,29 (12):82-86 (in Chinese).[王立澤.嵌入式軟件測試系統(tǒng)執(zhí)行框架研究 [J].測控技術(shù),2010,29 (12):82-86.]

        [2]CHEN Lin,ZHANG Yuping.Research and implementation of an automatic embedded test harness [J].Avionics Technology,2011,42 (1):29-33 (in Chinese). [陳琳,張育平.嵌入式軟件自動化測試平臺的研究與實現(xiàn) [J].航空電子技術(shù),2011,42 (1):29-33.]

        [3]YANG Fang,HE Hongwei.Research and design of embedded software object code simulation test platform [J].Computer Engineering and Design,2009,30 (19):4364-4367 (in Chinese).[楊芳,賀紅衛(wèi).嵌入式軟件目標(biāo)碼仿真測試平臺的研究 與 設(shè) 計 [J]. 計 算 機 工 程 與 設(shè) 計,2009,30 (19):4364-4367.]

        [4]ZHANG Youwei.Instruction-set simulator design and realization based on the virtual instruction [C]//Computer Science and Information Technology,2009:347-351.

        [5]Tse Chen Yeh,Kaohsiung.A fast cycle-accurate instruction set simulator based on QEMU and SystemC for SoC development[C]//IEEE Mediterranean Electrotechnical Conference,2010:1033-1038.

        [6]Almer O.Scalable multi-core simulation using parallel dynamic binary translation [C]//Embedded Computer Systems,2011:190-199.

        [7]Brunthaler S.Virtual-machine abstraction and optimization techniques [J].Electronic Notes in Theoretical Computer Science,2009,253 (5):3-14.

        [8]Ramsey D.Resourceable,retargetable,modular instruction selection using a machine-independent,type-based tiling of lowlevel intermediate code [C]//Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages,2011,46 (1):575-586.

        [9]Mehrdad R,Prabhat M,Nikil D.Instruction set compiled simulation:A technique for fast and flexible instruction set proceedings of simulation [C]//Design Automation Conference,2008:758-763.

        [10]Brandner F.Precise simulation of interrupts using a rollback mechanism [C]//Proceedings of 12th International Workshop on Software and Compilers for Embedded Systems,2009:71-80.

        [11]DANG Ruirong,GAO Guowang.TMS320C3xseries DSP principle and development technology [M].Xian:Xian Electronic and Science University Press,2011:11-13.

        猜你喜歡
        指令
        聽我指令:大催眠術(shù)
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        殺毒軟件中指令虛擬機的脆弱性分析
        巧用G10指令實現(xiàn)橢圓輪廓零件倒圓角
        中斷與跳轉(zhuǎn)操作對指令串的影響
        科技傳播(2015年20期)2015-03-25 08:20:30
        基于匯編指令分布的惡意代碼檢測算法研究
        一種基于滑窗的余度指令判別算法
        歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
        家電科技(2014年5期)2014-04-16 03:11:28
        MAC指令推動制冷劑行業(yè)發(fā)展
        汽車零部件(2014年2期)2014-03-11 17:46:27
        99香蕉国产精品偷在线观看| 亚洲美女主播内射在线| 视频在线国产一区二区| 亚洲a∨无码男人的天堂| 成人无码一区二区三区| 国产乱人偷精品人妻a片| 无码av一区二区大桥久未| 久久国产精品波多野结衣av| 综合图区亚洲另类偷窥| 国产夫妻自偷自拍第一页| 女人被男人爽到呻吟的视频| 亚洲欧美日韩中文无线码| 成人午夜免费福利| 久久久亚洲av成人乱码| 午夜爽爽爽男女污污污网站| 亚洲av无码资源在线观看 | 人妻少妇艳情视频中文字幕| 日韩人妻无码一区二区三区久久| 精品熟女少妇av免费观看| 激,情四虎欧美视频图片| 国产中文字幕免费视频一区| 人妻仑乱a级毛片免费看| 亚洲av日韩精品久久久久久| 女女同性av一区二区三区免费看| 中文字幕亚洲综合久久综合| 亚洲成av人片天堂网| 欧美在线综合| 日本精品久久中文字幕| 午夜视频国产在线观看| 台湾佬自拍偷区亚洲综合| 在线天堂中文一区二区三区| 亚洲长腿丝袜中文字幕| 人妻中文字幕在线中文字幕| 高清破外女出血av毛片| 在线无码国产精品亚洲а∨| 日韩有码中文字幕第一页| 久久精品国产av麻豆五月丁| 国产97在线 | 亚洲| 精品国产91久久综合| 亚洲一区二区三区成人网| 乱子伦在线观看|