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

        ?

        基于X86 平臺的ARM 指令集模擬器的設(shè)計

        2013-10-21 00:54:06賈少波
        電子設(shè)計工程 2013年12期
        關(guān)鍵詞:指令集譯碼模擬器

        賈少波

        (西安財經(jīng)學(xué)院 信息與教育技術(shù)中心,陜西 西安 710061)

        如今,仿真技術(shù)和虛擬技術(shù)被廣泛應(yīng)用各個領(lǐng)域,特別在嵌入式系統(tǒng)的開發(fā)過程中,由于在不同應(yīng)用領(lǐng)域中,嵌入式開發(fā)要求的硬件體系差別很大,用軟件進(jìn)行系統(tǒng)仿真或虛擬硬件非常必要。軟件仿真的重點(diǎn)是微控制器的仿真,而對微控制器的仿真重點(diǎn)又在指令仿真上,因此本文給出一種基于解釋型仿真策略的指令仿真器的實(shí)現(xiàn)。指令集仿真器(Instruction Set Simulator,ISS)是用來在宿主機(jī)仿真另一種目標(biāo)機(jī)上程序運(yùn)行過程的軟件工具。它通過仿真每條指令在目標(biāo)處理器上的執(zhí)行效果來仿真目標(biāo)機(jī)程序,是目標(biāo)處理器的軟件仿真器。在嵌入式軟硬件的并行開發(fā)中,指令仿真器是必不可少的工具之一,在目標(biāo)機(jī)可用之前,通過它就可以完成軟件的仿真調(diào)試,真正做到了軟硬件的并行開發(fā)。

        1 ARM 體系架構(gòu)及指令集模擬技術(shù)

        1.1 ARM 體系架構(gòu)

        到目前為止,ARM 微處理器以其體積小、低功耗、低成本、高性能、指令執(zhí)行速度快、尋址方式靈活簡單、執(zhí)行效率高、指令長度固定等優(yōu)點(diǎn)幾乎已經(jīng)深入到各個領(lǐng)域。ARM處理器實(shí)現(xiàn)加載/存儲(load/store)體系結(jié)構(gòu),是典型的RISC處理器。只有加載和存儲指令可以訪問存儲器。數(shù)據(jù)處理指令支隊(duì)寄存器的內(nèi)容進(jìn)行操作,傳統(tǒng)的CISC(Complex Instruction Set Computer,復(fù)雜指令集計算機(jī))技術(shù)的指令集隨著計算機(jī)的發(fā)展引入了各種各樣的復(fù)雜指令,已經(jīng)不堪重負(fù)。圖1 描述了ARM 微處理器的體系架構(gòu)。

        1.2 指令集模擬技術(shù)

        1.2.1 指令集模擬解釋型模擬技術(shù)

        解釋型模擬器的模擬流程是參照硬件環(huán)境中的指令執(zhí)行,并不進(jìn)行任何執(zhí)行信息的服用,故執(zhí)行起來性能不高,愛目前主流配置的主機(jī)上的運(yùn)行性能能一般從幾十到幾百個KIPS(Kilo-Instructions Per-Second)。由于解釋型模擬器實(shí)現(xiàn)較為簡單,同時能夠提供足夠的模擬精度以及靈活性,但解釋型模擬器的模擬性能低下,故在對于模擬性能沒有特別高的要求下,采用這種模擬技術(shù)是非常優(yōu)越的。目前絕大部分商用的模擬器是解釋型模擬器。這類模擬器的典型代表是Simple Scalar。

        圖1 ARM 微處理器體系架構(gòu)圖Fig.1 ARM microprocessor architecture diagram

        1.2.2 指令集模擬器動態(tài)翻譯模擬技術(shù)

        動態(tài)翻譯模擬是在解釋型模擬技術(shù)基礎(chǔ)上的一種優(yōu)化,由于使用了緩存技術(shù)盡可能大的復(fù)用已解析的信息,提高了模擬的效率。模擬器的工作流程是:模擬一條指令,先核對這條指令是否存在于緩沖頁,如果是,則調(diào)用存儲中已有的解碼結(jié)果,實(shí)現(xiàn)模擬;如果沒有,則翻譯該指令并將結(jié)果緩存頁中備用,同時按照解釋型模擬的模式,繼續(xù)進(jìn)行。由于啟動模擬編譯器的系統(tǒng)開銷較大,為了提高性能,每次啟動模擬編譯器完成若干條指令的翻譯,為了處理方便,每次編譯的指令數(shù)是固定的,稱為一個“翻譯頁”。在動態(tài)翻譯模擬技術(shù)中,翻譯和模擬的過程耦合度較低,可以分配給不同的線程完成,或結(jié)合多核技術(shù),將代碼的執(zhí)行工作分配給幾個CPU 同時來執(zhí)行,來提高模擬速度。目前采用動態(tài)翻譯技術(shù)的應(yīng)用的較好的模擬器有Intel IA-32 Execution Layer 等[1]。

        2 ARM 指令集模擬器的設(shè)計

        2.1 ARM 指令集模擬器系統(tǒng)總體框架設(shè)計

        本模擬器的主要功能是模擬ARM 處理器對指令集的處理能力,當(dāng)把內(nèi)容為ARM 指令的二進(jìn)制BIN 文件輸入時,可以模擬在真實(shí)ARM 處理器上的運(yùn)行效果。由圖2 指令集模擬器的總體架構(gòu)圖可以看出一個應(yīng)用程序在運(yùn)行的時候和指令集模擬器之間的關(guān)系。一個應(yīng)用程序在經(jīng)過ARM 交叉編譯器編譯生成基于ARM 指令集的二進(jìn)制可執(zhí)行文件,可執(zhí)行文件進(jìn)入ARM 指令集模擬器內(nèi)核被解釋執(zhí)行,最后得到運(yùn)行后的結(jié)果。

        圖2 指令集模擬器總體架構(gòu)圖Fig.2 Architecture instruction set simulator

        其中模擬器內(nèi)核是整個模擬器的核心部分,也是本文將要重點(diǎn)設(shè)計和實(shí)現(xiàn)的部分。它主要包含一下功能:對可執(zhí)行文件的加載,執(zhí)行取指令、指令譯碼、指令模擬執(zhí)行的三級流水和解析結(jié)果的展示。在模擬器內(nèi)核設(shè)計部分,模擬指令執(zhí)行的過程是內(nèi)核的核心部分,在本模擬器設(shè)計中,借鑒CPU模型中的指令流水設(shè)計內(nèi)核翻譯程序的取指、譯碼和指令執(zhí)行3個過程。圖3 描述了指令集模擬器內(nèi)核的總體架構(gòu)。如圖所示,整個內(nèi)核包含程序加載模塊、指令譯碼模塊、取指模塊、指令調(diào)度與模擬模塊、寄存器模擬模塊和數(shù)據(jù)存儲模塊。在此模擬器中,存儲模塊不做實(shí)現(xiàn),調(diào)用gdb 中的相應(yīng)模塊[2-3]。

        圖3 指令集模擬器內(nèi)核總體架構(gòu)圖Fig.3 Instruction set simulator kernel architecture diagram

        2.2 ARM 指令集模擬器的流程設(shè)計

        本模擬器是按照解釋型模擬器的模擬策略設(shè)計的。解釋型指令集模擬器基本上是以軟件實(shí)現(xiàn)的虛擬機(jī),它以解釋的形式在宿主機(jī)上執(zhí)行加載的目標(biāo)代碼,它的主體是一個具有3 步過程的循環(huán)體,分別對應(yīng)取指令、指令譯碼、指令執(zhí)行3步操作。因此本ARM 指令集模擬器的核心流程就是加載程序,之后進(jìn)入讀取指令、指令譯碼和指令執(zhí)行的循環(huán)體中,當(dāng)所有目標(biāo)代碼都執(zhí)行之后結(jié)束并顯示運(yùn)行結(jié)果。整個流程如圖4 指令模擬器的工作流程所示。

        圖4 指令集模擬器工作流程圖Fig.4 Instruction set simulators work flow chart

        2.3 ARM 指令集模擬器的主要功能模塊設(shè)計

        2.3.1 指令譯碼模塊

        指令譯碼模塊的功能就是根據(jù)ARM 指令集編碼,將要執(zhí)行的二進(jìn)制指令譯碼成操作碼、操作數(shù)、條件碼等指令模擬需要的信息。指令集模擬器的每一模擬步模擬一條指令的取指令、譯碼、執(zhí)行等各個階段,因此指令集模擬器中的指令譯碼與實(shí)際ARM 處理器的譯碼并不是完全對應(yīng),同時也不會影響模擬的正確性。

        在指令譯碼模塊中,本文采用分類的思想,將指令集按照一定的規(guī)律進(jìn)行分類解析,逐步解析,找到最終指令所對應(yīng)的解析函數(shù)。這樣做的目的是為了減少判斷指令時的條件判斷次數(shù),采用分治的思想提高指令譯碼的效率[2]。不過要想對指令譯碼效率有顯著性的提高,還是要采用改進(jìn)型的工作流程,主要原因是在指令譯碼的過程中,會出現(xiàn)大量的重復(fù)譯碼,所以改進(jìn)型的工作流程中提出的指令緩存技術(shù)會很好的提高譯碼效率,減少重復(fù)的譯碼工作[4]。

        2.3.2 指令模擬與調(diào)度模塊

        指令模擬與調(diào)度功能模塊是指令集模擬器的核心部分,也是實(shí)現(xiàn)代碼量最大的部分,主要包括與虛擬指令集定義對應(yīng)的一系列指令模擬函數(shù)、指令執(zhí)行控制函數(shù)、指令翻譯調(diào)度函數(shù)、中斷處理函數(shù)以及一些公用函數(shù)。指令執(zhí)行控制函數(shù)負(fù)責(zé)控制整個模擬過程,反匯編結(jié)果文件加載完畢后,程序就進(jìn)入核心部分的模擬循環(huán);指令翻譯調(diào)度函數(shù)負(fù)責(zé)將目標(biāo)指令轉(zhuǎn)化為虛擬指令形式,然后指令模擬函數(shù)按照相應(yīng)指令的功能定義完成指令的模擬,模擬結(jié)果是修改存儲器、寄存器值;公用函數(shù)主要包括尋址方式判別、指令操作數(shù)分析、指令條件碼判別、移位操作、ALU 操作以及寄存器訪問等。

        指令模擬與調(diào)度的循環(huán)過程如下:

        1)取指令

        該模擬器的輸入是二進(jìn)制可執(zhí)行文件,因此取指令時,根據(jù)PC 值取得的當(dāng)前的指令,進(jìn)行譯碼。

        2)翻譯

        調(diào)用指令翻譯函數(shù)獲得虛擬指令。

        3)調(diào)度

        根據(jù)指令類型,調(diào)用相應(yīng)的指令模擬函數(shù)。

        4)執(zhí)行

        指令模擬函數(shù)對指令進(jìn)行模擬。

        5)中斷檢測與調(diào)度

        為了對中斷系統(tǒng)進(jìn)行模擬,本文定義了對應(yīng)于FIQ、IRQ 的標(biāo)志變量,可以改變他們來模擬外部中斷輸入,每條指令模擬結(jié)束后,必須檢測上述兩個標(biāo)志,如果檢測到中斷發(fā)生,則調(diào)用相應(yīng)的異常進(jìn)入函數(shù),PC 被設(shè)定為中斷服務(wù)程序入口地址。

        6)更新PC 值

        如果本次循環(huán)沒有發(fā)生指令跳轉(zhuǎn)、加載PC 及中斷,PC 順序移向下一條指令。

        2.4 ARM 指令集模擬器的內(nèi)核設(shè)計

        模擬器內(nèi)核結(jié)構(gòu)如圖5 所示。

        2.4.1 內(nèi)核解碼模塊設(shè)計

        指令模擬器內(nèi)核中的解碼模塊包括取指令模型和指令轉(zhuǎn)換模型兩部分內(nèi)容,取指令模型介紹了內(nèi)核程序如何從加載的目標(biāo)代碼中取出逐條指令,指令轉(zhuǎn)換模型介紹了取出的逐條指令是如何轉(zhuǎn)換成中間語言指令來實(shí)現(xiàn)的。

        圖5 模擬器內(nèi)核結(jié)構(gòu)圖Fig.5 Simulator kernel structure

        1)取指令模型

        本文設(shè)計的模擬器中取指令模型結(jié)構(gòu)如圖6 所示,包括指令計數(shù)器、指令格式解析器、指令格式解析器、取指令邏輯控制器和指令地址更新邏輯。指令計數(shù)器是處理器都會有的一個寄存器。不同的處理器有不同的表現(xiàn)形式。

        圖6 取指令模型圖Fig.6 Fetch model diagram

        2)指令的轉(zhuǎn)換模型

        指令譯碼就是根據(jù)ARM 指令集編碼,將要執(zhí)行的指令譯成操作碼、操作數(shù)、條件碼等指令仿真需要的信息。譯碼的重點(diǎn)在于獲取不同尋址方式下的操作數(shù),通過分析指令字助記符和指令碼,可以很方便地得到不同尋址方式的操作數(shù)[3]。由于本文設(shè)計的指令集虛擬模擬ARM 的指令集,所以加入指令轉(zhuǎn)換模型,指令轉(zhuǎn)換是將一條目標(biāo)機(jī)器指令轉(zhuǎn)換為一條或幾條中間可執(zhí)行指令集的過程。轉(zhuǎn)換工作由指令轉(zhuǎn)換器完成。其工作模型如圖7 所示,一條源指令經(jīng)過指令譯碼模塊翻譯,生成一系列的中間語言隊(duì)列,在本模擬器中,中間語言就是能在X86 平臺上運(yùn)行的匯編語言。

        圖7 指令譯碼模型Fig.7 Instruction decoding model

        2.4.2 內(nèi)核指令模擬與調(diào)度模塊

        指令調(diào)度就是把指令字與完成相應(yīng)操作的功能函數(shù)對應(yīng)起來,使得仿真時取到該指令后能知道該調(diào)用哪個執(zhí)行過程。本文是基于傳統(tǒng)的解釋型仿真策略,其主體是一個大的switch 結(jié)構(gòu),并使用case 語句。這種設(shè)計模型會影響模擬速度,由于case 語句的種類非常多,所以在今后的工作中,這里將會是一個重點(diǎn)的研究對象,可以采用hash 結(jié)構(gòu)、壓縮算法或者指令緩存來提高指令譯碼的執(zhí)行效率,這也將會是模擬器的整體執(zhí)行效率得到一個很大的提高。

        指令模擬執(zhí)行模塊把指令分類處理并采用數(shù)據(jù)獲取和數(shù)據(jù)操作相分離的方法,使得執(zhí)行函數(shù)更具有通用性,當(dāng)新的指令系統(tǒng)添加時,只需要添加相應(yīng)的尋址方式和原系統(tǒng)中沒有的指令執(zhí)行過程,就能完成添加指令集的操作,提高了系統(tǒng)設(shè)計的可擴(kuò)展性[5-6]。

        3 結(jié)束語

        本文是針對嵌入式開發(fā)現(xiàn)階段的主要存在的問題,即傳統(tǒng)低下的開發(fā)效率和當(dāng)下對較短市場開發(fā)周期的要求之間的矛盾,提出了ARM 指令集模擬器的設(shè)計和實(shí)現(xiàn)方法。以及對指令集模擬技術(shù)的介紹和掌握。目前,與嵌入式系統(tǒng)相關(guān)的軟件開發(fā)復(fù)雜度越來越高,因此指令集模擬器的發(fā)展前景十分樂觀。

        [1]張帆.ARM指令集仿真器的設(shè)計與實(shí)現(xiàn)[D].武漢:湖北工業(yè)大學(xué),2008.

        [2]LV Ming-song,DENG Qing-xu,GUAN Nan,et al.ARMISS:an instruction set simulator for the ARM architecture[D].Institute of Computer Software and Theory,Northeastrn University,2008.

        [3]姜旭鋒.SmartSimular:基于虛擬指令集的嵌入式系統(tǒng)模擬器[D].杭州:浙江大學(xué),2006.

        [4]趙軍.通用指令集描述語言的設(shè)計和實(shí)現(xiàn)[D].杭州:浙江大學(xué),2006.

        [5]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2005.

        [6]羅蕾.嵌入式實(shí)時操作系統(tǒng)及應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2005.

        猜你喜歡
        指令集譯碼模擬器
        了不起的安檢模擬器
        盲盒模擬器
        基于校正搜索寬度的極化碼譯碼算法研究
        劃船模擬器
        3DNow指令集被Linux淘汰
        電腦報(2021年49期)2021-01-06 18:36:55
        從霍爾的編碼譯碼理論看彈幕的譯碼
        新聞傳播(2016年3期)2016-07-12 12:55:27
        實(shí)時微測量系統(tǒng)指令集及解析算法
        LDPC 碼改進(jìn)高速譯碼算法
        遙測遙控(2015年2期)2015-04-23 08:15:19
        動態(tài)飛行模擬器及其發(fā)展概述
        什么是AMD64
        亚洲av无码男人的天堂在线| 亚洲激情人体艺术视频| 亚洲熟伦在线视频| 女同av一区二区三区| 国产一精品一av一免费爽爽| 国产精选污视频在线观看| 水蜜桃无码视频在线观看| 亚洲日本va99在线| 久久久一本精品99久久| 国产三级c片在线观看| 国产女人精品视频国产灰线| 国产特级毛片aaaaaaa高清| 日日碰狠狠躁久久躁9| 亚洲AV无码专区国产H小说| 婷婷精品国产亚洲av| 亚洲成在人网站天堂日本| 日本强伦姧人妻一区二区| 热久久国产欧美一区二区精品| 香蕉视频在线精品视频| 久久久久久国产精品免费网站| 在线无码免费看黄网站| 日本免费看片一区二区三区| 日本免费视频| 男受被做哭激烈娇喘gv视频| 亚洲av在线播放观看| 日韩av中文字幕波多野九色| 观看在线人视频| 香蕉人妻av久久久久天天| 国产在线无码免费视频2021| 久久久国产精品三级av| 日本一区二区三区爆乳| 日本午夜精品理论片a级app发布| 国产熟妇搡bbbb搡bbbb搡| 国产一区二区精品网站看黄| 国产白色视频在线观看| 性无码一区二区三区在线观看 | 色妞www精品视频| 亚洲中文字幕无码久久2018| 翘臀诱惑中文字幕人妻| 亚洲av日韩综合一区久热| 男人添女人下部高潮全视频|