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

嵌入式系統設計實驗的Qt MIPS仿真軟件開發

2017-04-10 12:05:45姚英彪曾憲彬
實驗室研究與探索 2017年1期
關鍵詞:嵌入式指令設置

姚英彪, 曾憲彬

(杭州電子科技大學 通信工程學院,杭州 310018)

嵌入式系統設計實驗的Qt MIPS仿真軟件開發

姚英彪, 曾憲彬

(杭州電子科技大學 通信工程學院,杭州 310018)

針對嵌入式系統設計的實驗教學,采用Qt C++應用程序開發框架,開發了一款嵌入式軟硬件仿真平臺軟件Qt MIPS。Qt MIPS主要特點如下:集匯編代碼編輯、匯編、仿真和調試于一體,并具有友好的人機交互界面;支持周期準確的MIPS32指令仿真和分層存儲系統的參數化配置;提供多種性能統計工具,對學生開放仿真器源碼。Qt MIPS使用實踐表明,它能夠加深學生對嵌入式系統設計相關理論知識的理解,能夠培養學生的嵌入式系統編程能力和系統性能分析能力,有效提升嵌入式系統設計的實驗教學效果。

嵌入式系統; 仿真軟件; 實驗

0 引 言

近幾年來,隨著嵌入式系統在各行各業的應用,嵌入式系統設計已經成為高等院校電子信息類專業的一門重要基礎課程。在其理論和實踐教學過程中,如何讓學生更直觀的理解嵌入式系統組成和嵌入式處理器指令集,以及部件級(如CPU、內存)和系統級的性能評價與優化方法,一直是一個難點問題[1-2]。利用仿真技術,可以在沒有硬件實驗平臺的條件下(如各種開發板),通過軟件抽象建模嵌入式硬件系統的“軟”平臺,然后模擬指令序列在目標處理器上的執行[3-5]。這種方法因為可以更好的觀察指令執行過程,分析系統的部件和整體的性能,因此在嵌入式系統設計實踐教學過程中被廣泛采用。

目前,常見的嵌入式仿真軟件有ARM ADS1.2[6]、MIPS SPIM[7]、CCS[8]等。這些仿真軟件都是CPU廠家提供的商業軟件,主要面向嵌入式系統開發,存在源碼不開放、參數固定等諸多缺點,不適合應用于嵌入式系統設計課程的實踐教學。SimpleScalar[9]作為一款開源的仿真軟件,支持多種類型的處理器,但它沒有提供圖形用戶界面,需要在Linux系統中利用命令行進行相關參數配置,操作極其麻煩,因而也不適合嵌入式系統設計課程的實驗教學。MARS[10]雖然是面向教學開發的仿真軟件,但同樣存在源碼不開放,功能少等缺點。因此,專門面向嵌入式系統設計實驗教學的仿真軟件還是比較缺乏。

針對上述問題,本文設計了一款面向嵌入式系統設計課程實踐教學的仿真軟件Qt MIPS。Qt MIPS采用Qt C++應用程序開發框架開發,可以跨平臺運行[11];面向MIPS指令集[12-13],可以實現MIPS32指令集的周期準確仿真;支持參數化的存儲系統配置,可以進行存儲系統設計探索[14];支持處理器內部寄存器、存儲器的實時查看和修改,以及各種性能統計;為基于MIPS的嵌入式系統設計實驗提供了一個集匯編程序編輯、匯編、配置、調試、運行于一體的集成實驗環境。

1 整體結構

Qt MIPS采用模塊化的設計方法和C++語言開發完成。它可以分為5個模塊,分別為編輯器(Editor)、匯編器(Assembler)、仿真器(Simulator)、調試器(Debugger)、性能分析與展示器(Profiler),如圖1所示。圖中實線表示仿真流程,虛線表示控制流程。

圖1 Qt MIPS總體結構

Qt MIPS核心是仿真器,它由CPU流水線、片上內存和片外內存三部分組成,如圖2所示。CPU流水線采用經典5級流水線建模[12-13],分為取指(IF)、譯碼(ID)、執行(EXE)、訪存(MEM)和回寫(WB)。片上內存采用Scratch-Pad RAM(SPM)和高速緩存(Cache)建模[14]。

圖2 Qt MIPS的仿真器總體結構

Qt MIPS作為一款集編輯器、匯編器、仿真器、調試器于一體的面向“嵌入式系統設計”課程實驗教學的仿真平臺軟件,其基本功能包括:

(1) 編輯功能。Editor實現指令高亮顯示,字符查找等功能,方便進行匯編代碼編輯。

(2) 匯編功能。Editor里的匯編代碼,可以通過Assembler進行匯編,然后仿真執行。

(3) 仿真功能。Simulator支持周期準確的MIPS32指令集仿真,并且支持仿真時單步/多步執行時指令跳轉高亮動態跟蹤功能。

(4) 調試功能。Debugger支持快捷的仿真執行控制功能,如斷點,執行次數,多步執行的步數設置,寄存器與內存內容查看等。

此外,為方便“嵌入式系統設計”課程實驗教學,還具有如下特色功能:

(1) 跨平臺特性。采用Qt編程實現,可以運行于Windows、Linux等多種操作系統下,實現了仿真軟件的跨平臺性。

(2) 參數化設計。CPU的時鐘、片上/片外內存的大小、性能,以及Cache的組織方式都是參數化設計。在實驗過程中,通過設置這些參數,就能改變嵌入式系統的性能,這樣學生更容易理解嵌入式系統性能的影響因素。

(3) 詳盡的性能統計工具。仿真器在仿真時,實時統計程序執行時鐘周期數,片上內存命中次數,片外內存訪問次數等各種統計數據,便于學生深入理解嵌入式系統的部件級和系統級的性能評價。

(4) Simulator源碼開放。對嵌入式系統設計特別感興趣的同學,可以查看Simulator源碼,深入理解嵌入式系統組成、軟件執行過程、現代CPU的原理等內容,甚至在提供的Simulator源碼基礎上還可以進行二次開發。

2 模塊功能

2.1 編輯器

Editor實現匯編程序新建、打開、保存、編輯等功能。Qt MIPS支持的匯編程序為*.s結尾的文本文件,打開效果如圖3所示??梢钥吹?,Editor支持不同類型關鍵字用不同顏色表示,所在行代碼高亮顯示。此外,Editor也可以打開機器碼文件(工具欄第3個按鈕)。最后,Editor也實現了常用的文本編輯器所具有的字符查找、剪切、復雜等功能,方便學生編輯和調試MIPS匯編代碼。

圖3 Editor打開*.s匯編文件

2.2 調試器

調試器主要實現寄存器設置、存儲設置、斷點設置、運行設置(單步、多步、執行次數等)等。其中,存儲設置是Qt MIPS的一個亮點,它包括內存結構設置和內存顯示控制設置,分別如圖4和圖5所示。從圖4中可以看到,Qt MIPS可以實現SPM添加及其大小配置,Cache的大小及組織方式設置,具體包括Cache的組數、塊大小、相聯映射方式、替換策略、寫策略、寫缺失策略等。由圖5可見,Qt MIPS內存顯示設置包括顯示數據類型、內存類型、起始地址及長度設置、訪問次數統計地址設置等。

圖4 內存結構設置圖5 內存顯示設置

2.3 性能分析與展示器

在指令仿真運行期間,Qt MIPS重載匯編代碼的機器碼,在Profiler展示,如圖6所示。Text Segment窗口實現了單步/多步執行時指令跳轉高亮動態跟蹤,最左邊的是機器碼,中間是指令的存儲地址,右邊是對應的匯編代碼。Console窗口實時顯示程序指令執行條數t1,數據內存總訪問次數t2,SPM的訪問次數t3,以及數據Cache的訪問次數t4,命中次數t5,以及指令Cache的訪問次數t6,命中次數t7等實時仿真統計結果。Registers和Memory窗口實時顯示寄存器或內存的值。Labels窗口顯示匯編代碼中的標號情況(數據對象和函數對象的首地址)。

根據圖6Console窗口輸出的性能統計結果,可粗略評價嵌入式系統的處理性能,即程序執行時間T可以近似為:

T=[t1+t3(Nspm-1) +(t5+t7)(Nhit-1)+ (t4+t6-t5-t7)Nmiss]·CCT

式中:CCT是處理器的時鐘周期(假設指令都為單周期指令);Nspm是SPM訪問時鐘周期;Nhit是Cache訪問命中時的時鐘周期;Nmiss是Cache訪問缺失時訪問外存的時鐘周期。

3 匯編器與仿真器設計

3.1 匯編器

Qt MIPS的匯編器是利用Flex和Bison這兩個開源工具實現[15]。Flex是一款詞法分析器生成工具,利用Flex可以快速地生成詞法分析器,識別文本中的詞素。Bison則是一款語法分析器生成工具,可以根據用戶設定好的語法,快速生成相應的語法識別程序。因為它們生成的匯編器是串行匯編,分支、跳轉、子程序調用及存取指令若在符號地址定義之前出現的話,就會出現匯編錯誤。

圖6 Profiler結構

圖3中Edit窗口第14行“la$16, my_bs+4”與第18行“sw 0, my_bs+1036”這兩條匯編指令,由于my_bs符號在18行之前未定義,在沒有進行任何處理的情況下,匯編器會串行匯編將my_bs的值設定為0,然而在圖3 Labels窗口中可見,my_bs的地址是0x10005430,所以匯編器會發生串行匯編錯誤。為解決這個問題,本文提出了SR(保存恢復)算法,它用到兩種映射容器類Map和Multimap。Map容器是一對一映射容器,Multimap是一對多映射容器,如圖7所示。其中,infoLine是一個用戶定義的結構體,用來保存含符號的指令行信息。

main0x00400024my_bs0x10005430……

Map

Multimap

圖7 Map與Multimap容器類

SR算法是根據符號label出現位置分別處理。①label出現在定義處:此時先將label保存到Map中,然后判斷label是否出現在Multimap中;如果出現,說明在label定義之前已經有指令用到該label,需要恢復Multimap中的使用該label的指令;如果沒出現,不需要做任何處理。②label出現在指令中:此時需要判斷label是否出現在Map中,如果出現,說明label已經在之前定義好,可以直接使用Map中該label的值匯編該指令;否則,說明label還未定義,需要將該label保存到Multimap容器,等到該label定義后再恢復。

3.2 仿真器

3.2.1 CPU流水線仿真

Qt MIPS的仿真器采用經典的5級流水線,分別為IF、ID、EXE、MEM和WB,每級流水線的功能為:

IF——訪問指令內存,得到32 bit的指令。

ID——對指令進行譯碼,根據譯碼結果讀取CPU寄存器的內容。

EXE——完成指令執行。

MEM——Load/Store指令完成數據內存訪問。

WB——指令執行結果保存到寄存器文件中。

為便于學生理解CPU硬件結構,這5級流水線分別編寫相應函數。在程序實現時,碰到的一個難點問題是MIPS體系結構的延遲槽指令的程序流程控制,它反映在IF和EXE流水級。為此,在Qt MIPS的仿真器設計中,使用了兩個指針PC和Delay_PC,以及一個分支跳轉指令狀態標志BJ_Flag來實現指令執行順序的控制。程序執行流程控制的偽代碼為:

(1) IF階段的流水線控制

1. if (BJ_Flag=0)

2. Access(PC); Delay_PC=PC+4;

3. else if (BJ_Flag==1)

4. Access(Delay_PC); Delay_PC=PC; BJ_Flag=2;

5. else

6. Access(Delay_PC); PC=Delay_PC; Delay_PC=PC+4; BJ_Flag=0;

IF階段:①BJ_Flag=0,代表EXE級的指令不是跳轉指令,下一條指令地址在PC處,因而通過Access(PC)取指,并設置延遲槽指令地址Delay_PC為PC+4。②BJ_Flag=1,代表EXE級的指令是跳轉指令,下一條指令需要取延遲槽里面的指令,即在Delay_PC處,因而通過Access(Delay_PC)到延遲槽中取指,然后設置Delay_PC為上一條跳轉指令真正的目標地址PC,最后設置BJ_Flag=2進入跳轉狀態。③BJ_Flag=2,代表需要執行跳轉指令真正目標地址處的指令,因而通Access(Delay_PC)取指,最后將PC、Delay_PC和BJ_Flag恢復為正常指令執行狀態。

(2) EXE階段的流水線控制

1. if跳轉指令

2. BJ_Flag=1;

3. if跳轉成功

4. PC=目標地址;

5. else

6. PC+=8;

7. else

8. BJ_Flag=0; PC+=4;

EXE階段:需要對指令類型進行判斷,①如果該指令不是跳轉指令,設置BJ_Flag=0,PC=PC+4,表示流水線處于正常狀態;②如果該指令是跳轉指令,設置BJ_Flag=1,表示流水線即將進入延遲狀態;然后判斷跳轉指令跳轉是否成功,如果成功,設置PC為新的目標地址,否則設置PC=PC+8(由于存在延長槽)。

3.2.2 存儲系統仿真

Qt MIPS的存儲系統支持片上SPM大小,Cache塊數、塊大小、地址映射策略、替換策略、寫策略等的參數化配置。其中,Cache地址映射策略包括直接映射、組相聯映射策略;替換策略包括最近最少使用(LRU)策略和先入先出(FIFO)策略;寫策略包括寫透(Write Through)和寫回(Write Back)策略[16]。Qt MIPS存儲系統建模的難點在于Cache的建模,其模型如圖8所示。圖中,FIFO/LRU替換策略的主要差別在于:

(1) 在訪問Cache命中時,采用FIFO策略,不需要更新FIFO隊列順序;采用LRU策略,需要將命中項調整到LRU隊列的最近訪問位置。這一點體現在圖9中的第4和第6請求,此時FIFO隊列順序不變,而LRU隊列順序發生變化。

(2) 在Cache未命中需要選擇剔除項時,雖然形式上都是選擇隊尾的項進行剔除,但是物理意義不一樣。FIFO隊尾項代表該項是最先進入隊列,而LRU隊尾項代表該項是最近最少使用。這一點體現在圖9中的第5請求,此時FIFO策略選擇剔除“0”,LRU策略選擇剔除“1”。

由于這兩點的不同,故FIFO/LRU替換策略的性能不一樣。例如,在圖9示例中,當處理第4請求“0”時,隊列順序已經不一樣;當處理第5請求“3”時,隊列內容已經不一樣;當處理第7請求“0”時,命中情況已經不一樣,即性能不一樣。

圖8 Qt MIPS的Cache讀寫模型

圖9 FIFO/LRU替換策略舉例(假設Cache的容量為3,初始為空)

4 結 語

針對嵌入式系統設計的實驗教學,采用Qt跨平臺C++應用程序開發框架,開發了一款支持MIPS32指令集的嵌入式軟硬件仿真軟件Qt MIPS。它集MIPS32匯編代碼編輯、匯編、仿真和調試于一體,并且其仿真器的源碼開放。學生在學習嵌入式系統設計相關理論知識的同時,通過使用Qt MIPS仿真和學習其源碼,可以更直觀地理解嵌入式系統的組成、嵌入式CPU的指令集和流水線,以及部件級(如CPU、存儲)和系統級的性能評價與優化方法等。Qt MIPS在我校的“嵌入式系統設計”實驗教學中使用結果表明,它能明顯加深學生對嵌入式系統設計相關理論知識的理解和融會貫通,同時對增強學生的嵌入式系統設計興趣也起到意外的效果。

[1] 仲偉波, 包亞萍, 付躍文, 等. 關于嵌入式系統教學的幾點思考[J]. 實驗室研究與探索, 2006, 25(12),1565-1568.

[2] 左冬紅, 羅 杰, 張 林, 等. 計算機原理與接口技術實踐教學改革[J]. 實驗室研究與探索, 2015, 34(10), 187-190.

[3] 龔 軍, 羅 杰, 汪小燕. 基于仿真的嵌入式系統教學實驗方法[J]. 實驗室研究與探索, 2009, 28(5), 53-56.

[4] 付琳 , 胡 錦, 梁利平. 指令集仿真器的關鍵技術[J]. 計算機應用, 2015, 35(5): 1421-1425.

[5] 王盛朋, Vania Joloboff, 鄧仰東. 一種基于近似計時模型的嵌入式CPU仿真器[J]. 計算機仿真, 2014, 31(5): 238-242.

[6] 李哲英, 駱 麗, 劉元盛. ARM 核嵌入式系統的開發平臺ADS[J]. 半導體技術, 2002, 27(2): 13-16.

[7] Larus. J. SPIM: A MIPS32 simulator[EB/OL]. http://pages.cs.wisc.edu/~larus/spim.html.

[8] 陽 華, 劉海濤. 新一代TI集成開發環境Code Composer Studio[J]. 微處理機, 2001(2): 24-26.

[9] SimpleScalar[EB/OL]. http://www.simplescalar.com/.

[10] K. Vollmar and P. Sanderson. MARS: an education-oriented MIPS assembly language simulator[J]. ACM SIGCSE Bulletin, 2006, 38 (1): 239-243.

[11] Qt參考文檔[EB/OL]. http://www.qtopia.org.cn/doc/qiliang.net/qt/index.html.

[12] 左冬紅. 計算機原理與接口技術——基于MIPS架構[M]. 北京: 清華大學出版社, 2014.

[13] 趙俊良, 張福新, 陶 品. MIPS處理器設計透視[M]. 北京:北京航天航空大學出版社, 2005.

[14] Kumar T.S. Rajesh, Ravikumar C.P, Govindarajan R. Memory Architecture Exploration Framework for Cache Based Embedded SOC[C]. 21st International Conference on VLSI Design, 2008: 553-559.

[15] 曾憲彬. MIPS仿真器設計與應用[D]. 浙江: 杭州電子科技大學, 2013.

[16] J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach[M]. San Francisco: Morgan Kaufmann Publishers Inc, 2002.

Development of Qt MIPS Software for Embedded System Design Experiments

YAOYing-biao,ZENGXian-bin

(College of Communication Engineering, Hangzhou Dianzi University, Hangzhou 310018, China)

Focusing on the experimental teaching of embedded system design, we developed a simulation platform for an embedded software and hardware, briefly called as Qt MIPS. The platform is based on Qt C++ application development framework. The features of Qt MIPS include that it has integrated the editor, assembler, simulator and debugger together, and has friendly man-machine interface; it supports cycle-accurate MIPS32 instruction simulation and parameterizes hierarchical memory system; it provides several performance statistics tools and source codes of its simulator are open for students. The usage practice of Qt MIPS shows that it can help students to have a better understanding the relevant theoretical knowledge and train students programming capability and performance analytical ability of embedded system design. Therefore, it can greatly improve the experimental teaching effect of embedded system design.

embedded systems; simulation software; experiments

2016-03-01

杭州電子科技大學《單片機與嵌入式系統》教學模式改革項目;高教重點改革項目(SYZD1108)

姚英彪(1976-),男,湖北松滋人,博士,副教授,碩士生導師,研究方向為嵌入式系統設計。E-mail:yaoyb@hdu.edu.cn

TP 391.9

A

1006-7167(2017)01-0098-06

猜你喜歡
嵌入式指令設置
聽我指令:大催眠術
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 72种姿势欧美久久久久大黄蕉| 国产精品网址你懂的| 99精品国产自在现线观看| 国产精品无码久久久久AV| 国产欧美又粗又猛又爽老| 91福利国产成人精品导航| 强奷白丝美女在线观看| 欧美有码在线观看| 一级高清毛片免费a级高清毛片| 久久人搡人人玩人妻精品| 精品三级在线| 久久综合五月| 丁香婷婷在线视频| 91麻豆精品国产高清在线| 露脸国产精品自产在线播| 国产成人夜色91| 国产性生交xxxxx免费| 综合网天天| 国产精品污视频| 国产微拍精品| 婷婷丁香在线观看| 99精品热视频这里只有精品7| 国产真实乱子伦视频播放| 国产呦视频免费视频在线观看| 国产精品永久不卡免费视频 | 欧美亚洲激情| 国产综合色在线视频播放线视 | 亚洲午夜国产片在线观看| 欧美.成人.综合在线| 天堂成人在线| 大香网伊人久久综合网2020| 免费一级无码在线网站 | 日本一本在线视频| 日韩在线影院| 91福利在线观看视频| 永久毛片在线播| 午夜国产小视频| 久久99国产视频| 国产成人啪视频一区二区三区 | 宅男噜噜噜66国产在线观看| 波多野结衣无码AV在线| 亚洲欧洲日产国码无码av喷潮| 国产视频自拍一区| 久久动漫精品| 九色在线观看视频| 中国一级特黄大片在线观看| 国产噜噜噜| 成人福利在线免费观看| 亚洲天堂区| 国产精品女人呻吟在线观看| 亚洲乱码在线视频| 美女黄网十八禁免费看| 中文字幕亚洲另类天堂| 久久毛片基地| 91精品在线视频观看| 91精品啪在线观看国产91| 亚洲国产一区在线观看| 一级全免费视频播放| 激情六月丁香婷婷| 亚洲天堂免费在线视频| 国产激情无码一区二区三区免费| 中文字幕不卡免费高清视频| 伊人久久大香线蕉成人综合网| 免费一级毛片| 亚洲狠狠婷婷综合久久久久| 88国产经典欧美一区二区三区| 国产屁屁影院| 91欧美亚洲国产五月天| 91破解版在线亚洲| 国产精品尹人在线观看| 国产精品亚洲va在线观看| 丰满人妻被猛烈进入无码| 91精品国产91欠久久久久| 国产一级一级毛片永久| 国产中文一区二区苍井空| 亚洲国产成人精品一二区| 国产精品美女网站| 最近最新中文字幕在线第一页| 国产精品久久久免费视频| 狠狠色狠狠色综合久久第一次| 色网在线视频| 国产成人高清亚洲一区久久|