本文從ARM的發展歷史着手,以S3C2440爲例與51單片機進行對比分析,詳細解析了ARM架構。架構
先來談一下ARM的發展史:1978年12月5日,物理學家Hermann Hauser和工程師Chris Curry,在英國劍橋創辦了CPU公司(Cambridge Processing Unit),主要業務是爲當地市場供應電子設備。1979年,CPU公司更名爲Acorn計算機公司。編碼
80年代中期,Acorn的一個小團隊要爲他們的下一代計算機挑選合適的處理器,根據他們提供的技術需求,在當時的市場上沒法找到合適的處理器,因而Acorn決定本身設計一個處理器。一個小團隊僅僅用了18個月就完成了從設計到實現的全過程,這是一臺RISC指令集的計算機,叫作Acorn RISC Machine(簡稱ARM)。後來Acorn公司沒落了,而處理器設計部門被分了出來,組成了一家新公司。設計
ARM公司主要設計ARM系列AISC處理器內核,它不生產芯片,只提供IP核。先以一個例子解釋一下架構、核、處理器和芯片:S3C2440,這是一款SoC芯片,注意,它不是cpu,2440和咱們熟知的51單片機有點相似,都屬於嵌入式,嵌入式的發展到目前經歷了三個階段,分別是SCM、MCU、SoC。51屬於SCM或MCU,而2440就屬於SoC了,先來看看51單片機的內部結構調試
其內部結構能夠簡單的分紅兩部分:cpu和外設。再來看2440的:code
中間的那個arm920t就是它的處理器,處理器和核在我看來在這裏是一個概念,只不過一個是硬概念,一個是軟概念。這裏的920t就既是處理器又是核。而三星作的就是除了這個cpu外其餘的東西。blog
那架構呢?再來看一張圖。ip
其中左側的就是架構,右側的是處理器,也能夠叫核。arm首個最成功的cpu是ARM7TDMI,是基於ARMv4的。ARM架構包含了下述RISC特性:內存
讀取/儲存 架構產品
不支援地址不對齊內存存取(ARMv6內核現已支援)it
正交指令集(任意存取指令能夠任意的尋址方式存取數據Orthogonal instruction set)
大量的16 × 32-bit 寄存器陣列(register file)
固定的32 bits 操做碼(opcode)長度,下降編碼數量所產生的耗費,減輕解碼和流水線化的負擔。
大多均爲一個CPU週期執行。
不一樣版本的架構會有所調整。
和三星相同的其餘和arm合做的各大廠商一般會把它的CPU和各種外圍IP都放到一塊兒,而後本身拿着圖紙去流片,生產出來的也是一個正方形,下面有不少引腳,這個東西不只包含了CPU,還包含了其餘的控制器,這個東西就叫作SOC(system on chip)。從英文來看,所謂的四核SOC什麼的,本意就不是單指CPU,而是四核系統。
因此目前各大廠商所作的事情,就是買來ARM的受權,獲得ARM處理器的源代碼,然後本身搞一些外圍IP(或者買或者本身設計),組成一個SOC後,去流片。不一樣的SOC,架構不一樣(就是CPU如何和IP聯繫起來,有的以總線爲核心,有的以DDR爲核心),因此,海思是擁有自主產權的SOC架構。但是,不管任何廠商,再怎麼折騰,都沒有怎麼動過CPU,ARM核心就好好的呆在那裏,那就是中央處理器。
目前ARM的產品天梯:
ARM命名規則:
第一個數字:系列名稱:eg.ARM七、ARM9
第二個數字:Memory system
2:帶有MMU
4:帶有MPU
6:無MMU與MPU
第三個數字:Memory size
0:標準Cache(4-128k)
2:減少的Cache
6:可變的Cache
第四個字符:T:表示支持Thumb指令集
D:表示支持片上調試(Debug)
M:表示內嵌硬件乘法器(Multiplier)
I :支持片上斷點和調試點
E:表示支持加強型DSP功能
J :表示支持Jazelle技術,即Java加速器
S:表示全合成式