999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VTEST的TMS320C3x指令集模擬器設計

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

郭向英,盛 莊,張西超

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

0 引 言

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

1 指令集模擬

1.1 純字節解釋與穿線代碼

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

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

圖1 穿線代碼

1.2 雙線代碼

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

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

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

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

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

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

圖3 雙線代碼

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

1.3 中間碼格式

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

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

1.4 特殊中間碼

圖4 雙線中間碼結構

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

圖5 延遲分支特殊中間碼

2 中斷模擬

2.1 中斷識別

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

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

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

2.2 中斷響應過程

中斷響應模擬過程如圖6所示,若執行至某個中間碼時需要響應中斷,在該指令執行結束后,首先進行中斷現場保護,包括非使能全局中斷控制位GIE、清除中斷標記位、當前PC值壓棧等,然后轉到中斷向量入口地址執行;模擬運行至服務程序出口時恢復現場,返回被中斷位置繼續執行。

圖6 中斷響應過程

3 外設模擬

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

不同程序使用的外設可能不同,模擬器可根據VTEST提供的相關配置信息僅對程序實際使用的外設進行模擬。為降低外設模擬對模擬器性能的影響,設計TMS320C3x模擬器時采用了事件驅動方式來控制外設運行,即模擬器運行中需要外設響應時才觸發外設模擬操作,而非每條指令執行后實時更新外設狀態。

表1 TMS320C3x外設配置

3.1 定時器

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

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

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

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

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

Tc:當前模擬器運行時刻;

Tp:定時周期;

Te:定時事件到達時刻;

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

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

3.2 串 口

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

3.3 DMA

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

4 實 驗

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

圖9 模擬器性能的影響

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

5 結束語

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

[1]WANG Lize.Research on an execution framework of embedded software testing system [J].Measure & Control Technology,2010,29 (12):82-86 (in Chinese).[王立澤.嵌入式軟件測試系統執行框架研究 [J].測控技術,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). [陳琳,張育平.嵌入式軟件自動化測試平臺的研究與實現 [J].航空電子技術,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).[楊芳,賀紅衛.嵌入式軟件目標碼仿真測試平臺的研究 與 設 計 [J]. 計 算 機 工 程 與 設 計,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.

猜你喜歡
指令
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
巧用G10指令實現橢圓輪廓零件倒圓角
時代農機(2015年3期)2015-11-14 01:14:29
中斷與跳轉操作對指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設備等產品安全規定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動制冷劑行業發展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 欧美黑人欧美精品刺激| 日韩国产一区二区三区无码| 欧美日韩第三页| 国产亚洲欧美日韩在线观看一区二区 | 国产在线小视频| 白浆免费视频国产精品视频| 中文字幕中文字字幕码一二区| 精品撒尿视频一区二区三区| 久久国产精品麻豆系列| 久久精品国产999大香线焦| 免费亚洲成人| 青草娱乐极品免费视频| 国产免费好大好硬视频| 国产一区二区福利| 精品国产Av电影无码久久久| 国产麻豆永久视频| 自拍亚洲欧美精品| 99在线视频免费| 国产精品片在线观看手机版| 国产靠逼视频| 91精品视频网站| 日韩天堂在线观看| 国产丝袜第一页| 亚洲日韩AV无码一区二区三区人| 色综合久久无码网| 在线观看欧美精品二区| 欧美19综合中文字幕| 狠狠色香婷婷久久亚洲精品| 色偷偷一区| 香蕉在线视频网站| 国产在线视频导航| 久草性视频| 欧美色图第一页| 一区二区自拍| 一本大道东京热无码av| 欧美成人a∨视频免费观看| 国产极品美女在线播放| 成年看免费观看视频拍拍| 美女无遮挡被啪啪到高潮免费| 91最新精品视频发布页| 美女被操黄色视频网站| 热久久国产| 国产黄色爱视频| 3D动漫精品啪啪一区二区下载| 国产精品美女自慰喷水| 亚洲欧美成人综合| 国产精品网址你懂的| 国产久操视频| 国产拍揄自揄精品视频网站| 精品精品国产高清A毛片| 国产精品亚洲一区二区三区在线观看| 成人毛片免费在线观看| 色噜噜中文网| 国产日韩丝袜一二三区| 强奷白丝美女在线观看| 欧美一级高清免费a| 国产一区在线观看无码| 亚洲成综合人影院在院播放| 直接黄91麻豆网站| 免费在线看黄网址| 久久综合婷婷| 亚洲品质国产精品无码| 高清不卡毛片| 国产日产欧美精品| 另类专区亚洲| 久久综合亚洲鲁鲁九月天| 欧美翘臀一区二区三区| 蜜桃视频一区| 91视频99| 色综合网址| 色天天综合久久久久综合片| 精品国产香蕉在线播出| 久久人与动人物A级毛片| a级毛片视频免费观看| 亚洲第一视频网| 国产簧片免费在线播放| 国产精品香蕉在线观看不卡| 免费在线一区| 最新精品久久精品| swag国产精品| 国产91在线免费视频| 国产精品尤物在线|