ARM處理器體系結構簡要總結

2021-03-04 04:00:57 字數 3151 閱讀 5360

關鍵字:arm處理器體系結構

搞arm兩個月了,有點收穫,就談它了。本文主要介紹arm7系列處理器。呵呵,不是相關專業可能有很多人不知道arm是個什麼東西吧,我現在簡要介紹一下各種處理器分類,目前我們的處理器陣營中分為cisc和risc兩大系列,cisc是複雜指令集處理器,這種處理器每條指令可以執行比較多的複雜操作,而且指令長度不定,我知道的有x86處理器是cisc處理器,目前intel和amd出的處理器主要都是x86處理器,intel的x86從8086開始到80186,283,386,486,pemtium,pentium pro,pentium 2,pentium 3,pentium 4,扣肉2,四核志強等,還有賽揚,pentium m,pentium d等很多變種,有些提供高的價效比,有的專用於移動領域或低功耗領域。

amd的x86有毒龍,速龍,酷龍等。從8086到386是一次飛躍,實現了保護模式和虛86模式,以此為基礎才有後來的window3.1,386到pentium是一次飛躍,硬體上從硬連邏輯轉換到微指令實現,pentium 到扣肉又是一次較大的飛躍,從乙個處理器核到兩個,為多工提供了充分的支援。

risc處理器種模擬較多,指令長度固定,執行週期固定,從微控制器、mips、arm、alpha、powerpc、sun sparc等。微控制器子類又很多,目前很多較小的嵌入式控制場合都用得是微控制器,比如sim卡,一**,電子錶等,有微控制器、pic、lpc等。mips是mips公司研究出的一套體系結構,目前龍芯,聚芯都是基於mips,個人認為10年內會銷聲匿跡。

alpha不了解,很少用到。powerpc是ibm,hp等公司合力出的一套,挺複雜,結構嚴謹,但推廣不好,sparc只在sun得到大力支援。arm是目前應用最廣泛的一套指令系統,支援多工,只要是超出微控制器能力、x86又太浪費的場合大部分都用arm。

90%的智慧型手機都是arm處理器。

arm處理器有7個處理器模式(x86有3個),使用者模式、管理模式、未定義模式、中止模式、特權模式、irq模式,fiq模式。

使用者模式和管理模式:共用r0-r14個通用暫存器,pc暫存器,共用乙個cpsr。

未定義模式、中止模式、特權模式、irq模式:共享使用者模式和管理模式的r0-r12,各自專用的r13-r14,注意和使用者模式的r13-r14不同,pc暫存器,各自專用的cpsr和spsr。

fiq模式:共享使用者模式和管理模式的r0-r7,專用的r8-r14,pc暫存器,各自專用的cpsr和spsr。

注意pc暫存器是所有模式共享乙個。

程式設計時如果c和彙編共存要遵守atpcs標準,簡單的說這個標準要求函式呼叫時r0-r3傳遞引數,如果引數多於四個通過堆疊傳遞,從右往左壓參。如果有返回值用r0表示。

使用者模式相當於x86中的第三特權級,用於執行普通任務,不可以執行特權操作,不能切換模式等,

未定義模式用於執行一條未定義指令時觸發,可通過軟體模擬執行,用於模擬浮點或dsp等.

中止模式用於取指出錯或訪存出錯,內在原因可能是需要調頁,或訪問了非法區域.

特權模式在reset後自動進入,通過swi軟指令中斷也可進入.

irq用於普通中斷處理,速度慢,進irq後預設關普通中斷,但開fiq.fiq用於快速中斷處理,有專用的r8-r14暫存器,一般不需要儲存現場,進fiq後所有中斷標記都關掉.

除使用者模式外其他模式都有特權,可以為所欲為.

r13預設用來作為堆疊暫存器,r14用於儲存返回位址.

使用者模式和管理模式只有cpsr,沒有spsr。cpsr是當前狀態暫存器,內含算數執行標記位,irq和fiq標記,模式位,保留位。spsr是cpsr的備份。

arm處理器支援arm指令集和thumb指令集,arm指令集是32位,thumb指令集是16位,具有arm指令集的子集功能,實現同樣的功能用thumb指令集所需空間較小,但執行時間有可能變長。arm**向thumb**跳轉通過bx指令完成。bx指令通過判斷資料項的最後一位來確定是否轉入thumb或arm模式,跳轉後會設定cpsr中的模式位。

這裡我不打算描述arm或thumb指令集,因為那需要太大的篇幅,但arm和x86相比有一些很大的特殊之處就是它的堆疊可以向上或向下增長,而且存數與累加誰在先都可,這樣就有四種堆疊方式;另外每條arm指令都帶有執行條件,像溢位,進製等,只有在滿足特定條件下指令才會得到執行;當然arm指令集不存在像x86指令集那樣的向下相容性,386支援16位實模式,相容8086,但32位arm卻沒法識別16位arm指令集。

這是我對arm處理器內部的一些了解。

下面談談philips公司出的一款lpc2214處理器,內含arm7tdmi-s處理器核,支援jtag除錯和跟蹤。lpc2214一共有三條內部匯流排,一條是內部區域性匯流排,用來連線內部ram和rom,rom有256kb,ram16k。另一條是amba匯流排ahb,主要連線向量中斷控制器和外部儲存器介面,第三條是vpb,通過vpb橋橋接到ahb,用於低速外設,有點x86主機板的味道,不過它把這三個匯流排都整合在乙個處理器裡面。

vpb上連線了好多外設,像uart,i2c,spi,timer,pwm,a/d,rtc,hot dog,系統控制,外部中斷。這些外設通常以主頻的1/2,1/4,1倍速度執行,這裡我不會講這些外設如何控制,如何設定暫存器,那楊可以寫一本資料手冊了。我只講我覺得這個處理器裡我覺得比較有意思的東西。

這個處理器內含振盪器,可以外接晶振也可直接接時鐘,還含有pll,我們使用時通常讓它在振盪器模式下啟動執行,然後切換到pll模式,可以提高執行速度。這個處理器有掉電模式和空閒模式,空閒模式只禁止cpu的時鐘,但是外設時鐘繼續執行,在掉電模式pll停止執行,掉電模式通過reset可復位,空閒模式通過reset或外部中斷可復位。lpc2214可以外接各類介面晶元,它一共有四個外接裝置位址空間,每個空間有16m,可以按8,16,32位模式訪問。

lpc2214有乙個儲存器加速模組,可以設定是否預取,可以設定不預取,連續指令預取,所有指令資料都預取,開機預設是不預取。其實第三個情況就類似x86中的二級cache,因為目前的家用x86處理器cache設計都是兩極結構,第一級是哈佛結構,第二級就是指令資料共享乙個cache。其實即使在不預取的情況下因為lpc2214是**流水線結構,也會預取兩條指令,當前指令位址為pc+2,這只是層次和說法上的問題。

最後就是處理器的位址空間布局,lpc2214不存在io空間,它是記憶體空間統一編址,0位址開始是rom,256k,1g以上是ram,16k,2g以上是外部位址空間,64m,2.5g以上是vpb和ahb位址空間;其中rom空間的頂端是boot block塊,8k,這8k還對映到2g的頂端。最低64位元組是中斷向量表,可以對映到boot block,內部rom,內部ram,外部空間,具體對映可以設定memmap暫存器。

X86處理器與ARM處理器

摘要arm架構在嵌入式系統 超級計算機領域有著龐大的市場占有量。本文從x86架構出發,通過對比體現arm架構處理器的結構和特性。x86架構與arm架構的最根本區別是採用了不同的指令集。arm處理器採用32位元精簡指令集 risc 處理器架構,x86架構處理器採用可變指令長度的複雜指令集計算機 cis...

計算機體系結構DLX處理器程式設計實驗報告

計算機系統結構實驗實驗三 dlx處理器程式設計 一 實驗目的 學習使用dlx 組合語言程式設計,進一步分析相關現象。二 實驗裝置環境 dlx組合語言環境 三 實驗內容和要求 自編一段彙編 完成一維向量加法運算,並輸出結果。觀察程式中出現的資料 控制 結構相關。注 使用一維陣列表示一維向量。四 清單及...

吊裝說明上部結構預處理器

預處理器上部吊裝說明 預處理器上部吊裝如圖一所示 迴轉半徑15公尺,吊車高度按照1公尺計算,吊裝物放置高度頂部為19公尺,底部為14.1公尺,吊裝用繩按16公尺計算,16公尺繩,筒體半徑為6750mm,則吊裝角度為arccos0.422 65 如圖二 垂直方向高度即為14.5公尺,外加1.5公尺勾頭...