ARM系統架構

ARM系統架構

一.ARM概要

ARM架構,曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

ARM家族佔比所有32位嵌入式處理器的75%,成爲佔全世界最多數的32位架構。

ARM處理器廣泛使用在嵌入式系統設計,低耗電節能,非常適用移動通訊領域。消費性電子產品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子遊戲,和計算機),電腦外設(硬盤、桌上型路由器),甚至導彈的彈載計算機等軍用設施。

ARM架構包含了下述RISC特性:

讀取/儲存 架構

不支援地址不對齊內存存取(ARMv6內核現已支持)

正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

大量的16 ×
32-bit 寄存器陣列(register file)

固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。

大多均爲一個CPU週期執行。

爲了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設計:

大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

算數指令只會在要求時更改條件編碼(condition code)

32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

強大的索引尋址模式(addressing
mode)

精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否爲有條件式的

這大大的減低了在內存存取指令時用到的編碼位,換句話說,它避免在對小型敘述如if做分支指令。有個標準的範例引用歐幾里得的最大公因子算法:

在C編程語言中,循環爲:

int gcd (int i,
int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 彙編語言中,循環爲:

loop CMP Ri, Rj
; 設定條件爲 “NE”(不等於) if (i
!= j)

;
“GT”(大於) if (i > j),

; or
“LT”(小於) if (i < j)

SUBGT Ri, Ri, Rj
; 若 “GT”(大於), i = i-j;

SUBLT Rj, Rj, Ri
; 若 “LT”(小於), j = j-i;

BNE loop ; 若 “NE”(不等於),則繼續迴圈

這避開了then和else子句之間的分支。

另一項指令集的特色是,能將位移(shift)和迴轉(rotate)等功能併成"資料處理"型的指令(算數、邏輯、和暫存器之間的搬移),因此舉例來說,一個C語言的敘述

a += (j <<
2);

在ARM之下,可簡化成只需一個word和一個cycle即可完成的指令

ADD Ra, Ra, Rj,
LSL #2

這結果可讓一般的ARM程式變得更加緊密,而不需經常使用內存存取,流水線也可以更有效地使用。即使在ARM以一般認定爲慢速的速度下執行,與更復雜的CPU設計相比它仍能執行得不錯。

ARM處理器還有一些在其他RISC的架構所不常見到的特色,例如PC-相對尋址(的確在ARM上PC爲16個暫存器的其中一個)以及 前遞加或後遞加的尋址模式。

另外一些注意事項是 ARM
處理器會隨着時間,不斷地增加它的指令集。某些早期的 ARM 處理器(比ARM7TDMI更早),譬如可能並未具備指令可以讀取兩 Bytes 的數量,因此,嚴格來講,對這些處理器產生程式碼時,就不可能處理如 C 語言物件中使用 “volatile short” 的資料型態。

ARM7 和大多數較早的設計具備三階段的流水線化(Pipeline):提取指令、解碼,並執行。較高效能的設計,如 ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預測邏輯線路。

這個架構使用“協處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下 MCR、MRC、MRRC和MCRR 等指令來對協處理器尋址。協處理器空間邏輯上通常分成16個協處理器,編號分別從 0 至 15 ,而第15號協處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運算(若包含於處理器時)。

在 ARM 架構的機器中,周邊裝置連接處理器的方式,通常透過將裝置的實體暫存器對應到 ARM 的內存空間、協處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協處理器的存取延遲較低,所以有些周邊裝置(例如 XScale 中斷控制器)會設計成可透過不同方式存取(透過內存和協處理器)。

二.ARM
微處理器的應用領域及特點

ARM處理器市場覆蓋率最高、發展趨勢廣闊,基於ARM技術的32位微處理器,市場的佔有率目前已達到80%。絕大多數IC製造商都推出了自己的ARM結構芯片。我國的中興集成電路、大唐電訊、華爲海思、中芯國際和上海華虹,以及國外的一些公司如德州儀器、意法半導體、Philips、Intel、Samsung等都推出了自己設計的基於ARM核的處理器。

工業控制領域:作爲32
的RISC 架構,基於ARM 核的微控制器芯片不但佔據了高端微控制器市場的大部分市場份額,同時也逐漸向低端微控制器應用領域擴展,ARM 微控制器的低功耗、高性價比,向傳統的8 位/16 位微控制器提出了挑戰。

無線通訊領域:目前已有超過85%的無線通訊設備採用了ARM 技術,
ARM 以其高性能和低成本,在該領域的地位日益鞏固。

網絡設備:隨着寬帶技術的推廣,採用ARM 技術的ADSL 芯片正逐步獲得競爭優勢。此外,ARM 在語音及視頻處理上進行了優化,並獲得廣泛支持,也對DSP 的應用領域提出了挑戰。

消費類電子產品:ARM 技術在目前流行的數字音頻播放器、數字機頂盒和遊戲機中得到廣泛採用。

成像和安全產品:現在流行的數碼相機和打印機中絕大部分採用ARM 技術。手機中的32位SIM 智能卡也採用了ARM 技術。

ARM處理器的特點:

1、體積小、低功耗、低成本、高性能;

2、支持Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容8 位/16 位器件;

3、大量使用寄存器,指令執行速度更快;

4、大多數數據操作都在寄存器中完成;

5、尋址方式靈活簡單,執行效率高;

6、指令長度固定;

ARM相關的幾個重要概念

馮·諾依曼體系

結構模型:
在這裏插入圖片描述

馮·諾依曼體系的特點:

1、數據與指令都存儲在同一存儲區中,取指令與取數據利用同一數據總線。

2、被早期大多數計算機所採用。

3、ARM7——馮諾依曼體系結構簡單,但速度較慢。取指不能同時取數據。

哈佛體系

結構模型:

在這裏插入圖片描述

結構特點:

1、程序存儲器與數據存儲器分開.

2、提供了較大的存儲器帶寬,各自有自己的總線。

3、適合於數字信號處理.

4、大多數DSP都是哈佛結構.

5、ARM9是哈佛結構,取指和取數在同一週期進行,提高速度,改進哈佛體系結構分成三個存儲區:程序、數據、程序和數據共用。

CISC複雜指令集(Complex Instruction Set Computer)

特點:

1、具有大量的指令和尋址方式

2、8/2原則:80%的程序只使用20%的指令

3、大多數程序只使用少量的指令就能夠運行。

4、CISC CPU 包含有豐富的單元電路,因而功能強、面積大、功耗大。

三.RISC精簡指令集(Reduced Instruction Set Computer)

特點:

1、在通道中只包含最有用的指令,只提供簡單的操作。

2、確保數據通道快速執行每一條指令。

3、Load-store結構—— 處理器只處理寄存器中的數據,load-store指令用來完成數據在寄存器和外部存儲器之間的傳送。

4、使CPU硬件結構設計變得更爲簡單, RISC CPU包含較少的單元電路,因而面積小、功耗低。

四.RISC與CISC主要差別

1、寄存器方面

RISC指令集:擁有更多的通用寄存器,每個可以存放數據和地址,寄存器爲所有的數據操作提供快速的存儲訪問。

CISC指令集:多用於特定目的的專用寄存器。

2、LOAD –STORE結構方面

RISC結構:Cpu 僅處理寄存器中的數據,採用獨立的、專用的LOAD –STORE 指令來完成數據在寄存器和外存之間的傳送。(訪存費時,處理和存儲分開,可以反覆的使用保存在寄存器中的數據,而避免多次訪問外存)。

CISC結構:能直接處理存儲器中的數據。

五.ARM存儲格式

ARM存儲器以8位爲一個單元存儲數據(一個字節),每個存儲單元分配一個存儲地址。

ARM將存儲器看作是從零地址開始的字節的線性組合。作爲32位的微處理器,ARM體系結構所支持的最大尋址空間爲4GB(232字節)。從零字節到三字節放置第一個存儲的字數據,從第四個字節到第七個字節放置第二個存儲的字數據,依次排列。32位的字數據要使用4個地址單元,16位半數據要使用2個地址單元。這樣,就存在一個所存儲的字或半字數據的排列順序問題。ARM體系結構可以用兩種方法存儲字數據,稱爲大端格式和小端格式。

大端格式(big-endian):字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。

在這裏插入圖片描述

小端格式(low-endian):與大端存儲格式相反。低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。缺省設置爲小端格式。

在這裏插入圖片描述

六.ARM體系結構

ARM系列產品表示
在這裏插入圖片描述
在這裏插入圖片描述

七.ARM處理器的分類

基於指令集體系結構的分類:v1,v2,v5,v5TEJ,v6等。

基於處理器內核的分類:ARM7,ARM9,ARM10,ARM11,StrongARM,XScale等。

八.ARM體系結構版本

ARM架構自誕生至今,已經發生了很大的演變,至今已定義的版本有:V1版架構、V2版架構、V3版架構、V4版架構、V5版架構、V6版架構。

V1版架構

該版架構只在原型機ARM1出現過,其基本性能:

1、基本的數據處理指令(無乘法)

2、字節、半字和字的LOAD/STORE指令

3、轉移指令,包括子程序調用及鏈接指令

4、軟件中斷指令

5、尋址空間:64M字節(26)

V2版架構

該版架構對V1版進行了擴展,如ARM2架構,增加了以下功能:

1、乘法和乘加指令

2、支持協處理器操作指令

3、快速中斷模式

4、SWP/SWPB基本存儲器與寄存器交換指令

5、尋址空間:64M字節

V3版架構

1、把尋址空間增至32位(4G字節),

2、增加了當前程序狀態寄存器CPSR和程序狀態保存寄存器SPSR以便於異常的處理。

3、增加了中止和未定義二種處理器模式。

4、ARM6就採用該版架構。

5、指令集變化:增加了MRS/MSR指令,以訪問新增的CPSR/SPSR寄存器;增加了從異常處理返回的指令功能。

V4版架構

V4版架構是目前應用最廣的ARM體系結構,對V3版架構進行了進一步擴充,有的還引進了16位的Thumb指令集,使ARM使用更加靈活。ARM7、ARM8、ARM9和StrongARM都採用該版架構。

指令集中增加了以下功能:

1、有符號、無符號的半字和有符號字節的Load/Store指令。

2、增加了16位Thumb指令集

3、完善了軟件中斷SWI指令的功能

4、增加了處理器的特權模式。

V5版架構

這是最近幾年推出ARM架構,在V4版基本上增加了一些新的指令,ARM10和XScale都採用該版架構,這些新增指令有:

1、帶有鏈接和交換的轉移BLX指令

2、計數前導零CLZ指令

3、BKPT軟件斷點指令

4、增加了信號處理指令

5、爲協處理器增加更多可選擇的指令

v6版架構

1、適合使用電池供電的便攜式設備

2、增加了 SIMD功能擴展,提高了嵌入式應用系統的音頻、視頻處理能力。

九.ARM芯片選擇的一般原則

從應用的角度,對在選擇ARM芯片時所應考慮的主要因素有:

1、ARM芯核:如果希望使用WinCE或Linux等操作系統以減少軟件開發時間,就需要選擇ARM720T以上帶有MMU功能的ARM芯片.

2、系統時鐘控制器:系統時鐘決定了ARM芯片的處理速度。ARM7的處理速度爲0.9MIPS/MHz,常見的ARM7芯片系統主時鐘爲20MHz-133MHz,ARM9的處理速度爲1.1MIPS/MHz,常見的ARM9的系統主時鐘爲100MHz-233MHz, ARM10最高可以達到700MHz。

3、內部存儲器容量:在不需要大容量存儲器時,可以考慮選用有內置存儲器的ARM芯片。

4、GPIO數量:在某些芯片供應商提供的說明書中,往往申明的是最大可能的GPIO數量,但是有許多引腳是和地址線、數據線、串口線等引腳複用的。這樣在系統設計時需要計算實際可以使用的GPIO數量。

5、USB接口:許多ARM芯片內置有USB控制器,有些芯片甚至同時有USB Host和USB Slave控制器。

6、中斷控制器:ARM內核只提供快速中斷(FIQ)和標準中斷(IRQ)兩個中斷向量。但各個半導體廠家在設計芯片時加入了自己不同的中斷控制器,以便支持諸如串行口、外部中斷、時鐘中斷等硬件中斷。外部中斷控制是選擇芯片必須考慮的重要因素,合理的外部中斷設計可以很大程度的減少任務調度的工作量。

7、LCD控制器:些ARM芯片內置LCD控制器,有的甚至內置64K彩色TFT
LCD控制器。在設計PDA和手持式顯示記錄設備時,選用內置LCD控制器的ARM芯片較爲適宜。

8、擴展總線:大部分ARM芯片具有外部SDRAM和SRAM擴展接口,不同的ARM芯片可以擴展的芯片數量即片選線數量不同,外部數據總線有8位、16位或32位。某些特殊應用的ARM芯片如德國Micronas的PUC3030A沒有外部擴展功能。

9、封裝:主要的封裝有QFP、TQFP、PQFP、LQFP、BGA、LBGA等形式,BGA封裝具有芯片面積小的特點,可以減少PCB板的面積,但是需要專用的焊接設備,無法手工焊接。另外一般BGA封裝的ARM芯片無法用雙面板完成PCB佈線,需要多層PCB板佈線。

Thumb技術

ARM的RISC體系結構的發展中已經提供了低功耗、小體積、高性能的方案。而爲了解決代碼長度的問題,ARM體系結構又增加了T變種,開發了一種新的指令體系,這就是Thumb指令集,它是ARM技術的一大特色。

Thumb是ARM體系結構的擴展。它有從標準32位ARM指令集抽出來的36條指令格式,可以重新編成16位的操作碼。這能帶來很高的代碼密度。

支持Thumb的ARM體系結構的處理器狀態可以方便的切換、運行到Thumb狀態,在該狀態下指令集是16位的Thumb指令集。

十.與ARM指令集相比.Thumb指令集具有以下侷限:

1、完成相同的操作,Thumb指令通常需要更多的指令,因此在對系統運行時間要求苛刻的應用場合ARM指令集更爲適合;

2、Thumb指令集沒有包含進行異常處理時需要的一些指令,因此在異常中斷時,還是需要使用ARM指令,這種限制決定了Thumb指令需要和ARM指令配合使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章