天天看點

ARM的發展史以及架構解析

本文從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單片機的内部結構

  

ARM的發展史以及架構解析

  其内部結構可以簡單的分成兩部分:cpu和外設。再來看2440的:

  

ARM的發展史以及架構解析

  中間的那個arm920t就是它的處理器,處理器和核在我看來在這裡是一個概念,隻不過一個是硬概念,一個是軟概念。這裡的920t就既是處理器又是核。而三星做的就是除了這個cpu外其他的東西。

  那架構呢?再來看一張圖。

  

ARM的發展史以及架構解析

  其中左側的就是架構,右側的是處理器,也可以叫核。arm首個最成功的cpu是ARM7TDMI,是基于ARMv4的。ARM架構包含了下述RISC特性:

  讀取/儲存 架構

  不支援位址不對齊記憶體存取(ARMv6核心現已支援)

  正交指令集(任意存取指令可以任意的尋址方式存取資料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的發展史以及架構解析

  ARM命名規則:

  第一個數字:系列名稱:eg.ARM7、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:表示全合成式