• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式32位RISC CPU兼容性設計概述

      2012-07-25 03:20:26闖,林
      微處理機 2012年4期
      關鍵詞:流水線嵌入式指令

      羅 闖,林 楠

      (中國電子科技集團公司第四十七研究所,沈陽110032)

      1 前言

      目前,嵌入式技術的發(fā)展越來越成熟,嵌入式產(chǎn)品也越來越受到廣大年輕人的青睞。兼容型微處理器設計在高等教育領域也越來越受歡迎。

      2 設計思路

      設計兼容型微處理器的好處是可以借鑒ARM、MIPS、Nios II、PowerPC、SPARC、LEON、OR1000、OpenSparcT1/T2等幾大系列嵌入式微處理器的設計經(jīng)驗,其中前五類是具有自主知識產(chǎn)權(quán)的,各種資源比較豐富,學習一下是可以的,但是不能用于商業(yè)目的,而后三類是開源的,獲取GPL后則可以自由使用;因此設計思路是從目前主流微處理器的發(fā)展過程中汲取經(jīng)驗。

      3 設計過程概述

      嵌入式32位RISC CPU兼容性設計需從硬件和軟件兩個方面來考慮。

      3.1 硬件方面

      硬件方面主要包括以下幾個方面:

      3.1.1 指令集分析

      指令是微處理器的靈魂,也是構(gòu)成指令集的最小單位,可以保證與目標微處理器百分之百的二進制兼容。

      指令集主要包括:

      ·指令種類:通常包括運算類,分支類、數(shù)據(jù)傳送類及其他等。運算類主要用于算術運算、邏輯運算、乘法、除法等操作。分支類主要用于實現(xiàn)程序的跳轉(zhuǎn),靈活控制程序的執(zhí)行過程,滿足條件控制的需要。數(shù)據(jù)傳送類主要用來與存儲器進行數(shù)據(jù)交換。其他是一些雜項指令。

      ·指令編碼格式:指令包括操作碼和操作數(shù)兩部分。操作碼實現(xiàn)指令的具體操作。操作數(shù)包括立即數(shù)、內(nèi)部寄存器、地址等。指令編碼格式確定操作碼和操作數(shù)在指令編碼表中的位置。

      ·指令助記符:如 MOV、ADD、SUB、MUL、DIV等,縮寫簡明易懂,便于程序員記憶和直接使用指令進行匯編語言編寫目標程序。

      ·指令尋址方式:主要有立即尋址、寄存器尋址、寄存器間接尋址、寄存器變址尋址、相對尋址等。

      ·指令周期:如指令單周期、指令多周期、指令數(shù)據(jù)相關周期等,必須與目標微處理器一致。

      通過分析,將所有指令的執(zhí)行過程進行細化、歸類和簡化,為指令譯碼器、控制單元、ALU等功能模塊的設計提供必要的理論依據(jù),尤其是譯碼器輸出信號的種類和數(shù)量,因為譯碼器是一大塊組合邏輯,而其占據(jù)流水線的一個階段,結(jié)構(gòu)設計不合理會直接影響系統(tǒng)性能。表1是以邏輯運算指令和算術運算指令為例給出的各階段指令分解動作簡表。

      表1 各階段指令分解動作簡表

      3.1.2 體系架構(gòu)設計

      體系架構(gòu)是微處理器設計的關鍵,用來保證與不同指令集版本的兼容性。體系架構(gòu)中的關鍵是流水線技術,也是RISC微處理器的一大特點。隨著性能要求的提高,流水線的深度也越來越深,即級數(shù)越來越多,同時帶來的流水線問題也更加復雜。

      目前,常用的流水線深度有3級、5級、6級、8級、十幾級,有的甚至達到幾十級。下面以5級流水線為例,分為取指、譯碼、執(zhí)行、存儲器和回寫。取指級主要完成指令的預取,即程序計數(shù)器PC的生成。譯碼級主要完成指令譯碼、操作數(shù)的讀取和選擇。執(zhí)行級主要完成操作數(shù)的移位、邏輯運算、算術運算、乘法運算、除法運算、訪問數(shù)據(jù)存儲器地址的產(chǎn)生。存儲器級主要完成數(shù)據(jù)的讀寫或是簡單緩沖一個周期以保證流水線的完整性,也可以直接將執(zhí)行結(jié)果寄存到回寫級,以縮短指令的周期?;貙懠壷饕瓿蛇\算結(jié)果的寫回操作。此外還有一個更重要的部件是系統(tǒng)控制單元,根據(jù)輸入的數(shù)據(jù)產(chǎn)生對應的流水線控制信號,用來實現(xiàn)微處理器的有序工作。一般情況下流水線組織結(jié)構(gòu)如圖2所示。完成流水線所對應的功能需要相應的功能模塊。圖2中只是根據(jù)流水線的組織情況,將對應的功能模塊放在流水線中,相當于完成了系統(tǒng)的頂層模塊劃分,還沒有進行數(shù)據(jù)通路和控制通路的規(guī)劃。數(shù)據(jù)通路的規(guī)劃是在內(nèi)部各個主要的功能模塊之間建立起相互之間的聯(lián)系:同級的模塊可能是串行或是并行,需要根據(jù)指令的功能而定;不同級之間的模塊需要通過流水線寄存器進行數(shù)據(jù)交換。數(shù)據(jù)通路的規(guī)劃是根據(jù)當前流水線中指令的執(zhí)行情況、指令功能和指令周期,由系統(tǒng)控制單元給出對應的控制信號。系統(tǒng)控制單元是微處理器的核心,主要由一個有限狀態(tài)機構(gòu)成,包括系統(tǒng)復位、正常運行、系統(tǒng)調(diào)試和中斷/異常四個狀態(tài),如圖3所示。

      3.1.3 總線接口設計

      目前,在SoC設計中使用的片上總線主要有ARM的32位總線AMBA 2.0(AHB、APB)和64位總線 AXI 1.0/2.0,MIPS 的OCP 2.1,Nios II的Avalon-Bus(包括 Avalon-MM、Avalon-TRI、Avalon-MM、Avalon-MM)、PowePC 的 CoreConnect(PLB、OPB、DCR)以及Silicore的Wishbone總線。六種總線都是同步總線,使用時鐘沿驅(qū)動和采樣信號??偩€的基本操作幾乎沒有區(qū)別,最大的區(qū)別在于提供的特性和規(guī)范的完整性。下面以AMBA AHB為例進行簡要說明。圖4為最基本的AHB總線時序:一個周期為輸出地址周期,輸出需要訪問的地址和對應的控制信號;接下來一個周期為數(shù)據(jù)周期,輸出或是讀入上一個周期對應的數(shù)據(jù)信號。如果外設速度較慢,可以在數(shù)據(jù)周期插入等待信號,即將 HREADY置為“低”,從而可以使得總線接口部件的控制邏輯處于等待狀態(tài),以保證得到正確的數(shù)據(jù)。因為AHB是一個比較完整的總線協(xié)議,可以適應很多種情況,所以還需要增加更加復雜的邏輯,同時再根據(jù)微處理器的具體需要進行適當裁剪,這樣既可以保證與AHB協(xié)議的兼容性,還可以降低硬件的總體成本。

      3.2 軟件方面

      軟件方面主要是通過對應軟件開發(fā)工具來進行程序設計,從而提高程序的設計效率、質(zhì)量和規(guī)模。每種微處理器都有對應的軟件開發(fā)工具。一般情況下,微處理器廠商會開發(fā)自己的專用工具,如ARM的ADS和RealView;也有第三方為某個微處理器廠商設計的兼容性開發(fā)工具,如Keil為ARM開發(fā)的μVision;還可以使用免費的GNU工具鏈,不過可能需要花一些時間和精力來進行相應的環(huán)境設置。

      圖4 基本AHB總線時序

      軟件開發(fā)工具是一個集成開發(fā)環(huán)境IDE,可以進行匯編語言、C語言、C++等程序的編譯、鏈接、軟件調(diào)試、在線調(diào)試等。對于嵌入式32位微處理器來說,軟件開發(fā)工具的在線調(diào)試功能是非常重要的。因此,必須清楚調(diào)試工具的工作原理。目前使用的調(diào)試方式主要有兩種:一種是JTAG調(diào)試,如ARM、MIPS、NiosII、PowerPC等;另一種是串口調(diào)試,如LEON2/3/4、SparcV7/8/9等。下面以JTAG調(diào)試為例進行簡要說明。軟件開發(fā)工具在PC端運行,通過并口/USB接口與硬件仿真器相連。硬件仿真器通過內(nèi)部硬件實現(xiàn)與PC并口協(xié)議/USB協(xié)議到串行JTAG協(xié)議的轉(zhuǎn)換,并與微處理器的調(diào)試部件相連實現(xiàn)在線調(diào)試功能。圖5為使用JTAG接口調(diào)試的框圖。

      圖5 使用JTAG接口調(diào)試的框圖

      JTAG 接口主要包括 TCK、TMS、TDI、TDO 和TRST五個信號,使用簡單,連接方便,是目前采用最多的一種調(diào)試方式。JTAG調(diào)試部件的核心是Test access port(TAP)控制器狀態(tài)機,共有16個狀態(tài),其狀態(tài)轉(zhuǎn)換過程如圖6所示。

      圖6 JTAG TAP控制器狀態(tài)轉(zhuǎn)換圖

      工作原理是先運行JTAG指令,才能進行對應掃描鏈的操作,即在TCK和TMS的共同作用下,實現(xiàn)不同狀態(tài)之間的轉(zhuǎn)換。如果是進行數(shù)據(jù)操作,需要先進入到Select-DR-Scan狀態(tài),再進入到Capture-DR、Shift-DR、Exit1-DR 和 Update-DR 狀態(tài),最后回到 Run-Test/Idle或是 Select-DRScan狀態(tài),即在中間的*-DR狀態(tài)來完成對所有掃描鏈的讀寫操作。如果使用JTAG指令,則需要進入右邊*-IR狀態(tài)來完成對應的指令動作。

      4 結(jié)束語

      以上只是簡要概述了嵌入式32位RISC CPU兼容性設計的主要方面,若要設計一個完全與之兼容的微處理器,還需要進行大量的設計工作。

      [1] [英]Steve Furber,著.ARM SoC體系結(jié)構(gòu)[M].田澤,于敦山,盛世敏,譯.北京:航空航天大學出版社,2002.

      [2] 朱子玉,李亞民.CPU芯片邏輯設計技術[M].北京:清華大學出版社,2005.

      [3] 孫天澤,袁文菊.嵌入式設計及Linux驅(qū)動開發(fā)指南-基于ARM9處理器(第2版)[M].北京:電子工業(yè)出版社,2007.

      [4] IEEE.Standard Test Access Port and Boundary-Scan Architecture[M]2001.

      猜你喜歡
      流水線嵌入式指令
      Gen Z Migrant Workers Are Leaving the Assembly Line
      聽我指令:大催眠術
      流水線
      ARINC661顯控指令快速驗證方法
      測控技術(2018年5期)2018-12-09 09:04:26
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
      報廢汽車拆解半自動流水線研究
      Altera加入嵌入式視覺聯(lián)盟
      SIMATIC IPC3000 SMART在汽車流水線領域的應用
      自動化博覽(2014年6期)2014-02-28 22:32:05
      郴州市| 饶河县| 西乌珠穆沁旗| 庄河市| 自贡市| 溧阳市| 姚安县| 柏乡县| 龙井市| 丹东市| 涞水县| 中牟县| 高安市| 武安市| 仁布县| 大兴区| 阳城县| 敦化市| 赤峰市| 扶余县| 三明市| 安福县| 遵义市| 木里| 泾源县| 乐都县| 金阳县| 桐梓县| 乌兰浩特市| 锦州市| 秦安县| 长宁县| 邵东县| 合川市| 高唐县| 垣曲县| 永善县| 行唐县| 邢台县| 招远市| 喀喇|