ARM架構(gòu)解析
先來談一下ARM的發(fā)展史:1978年12月5日,物理學(xué)家Hermann Hauser和工程師Chris Curry,在英國劍橋創(chuàng)辦了CPU公司(Cambridge Processing Unit),主要業(yè)務(wù)是為當(dāng)?shù)厥袌龉?yīng)電子設(shè)備。1979年,CPU公司改名為Acorn計(jì)算機(jī)公司。
本文引用地址:http://butianyuan.cn/article/201609/303442.htm80年代中期,Acorn的一個(gè)小團(tuán)隊(duì)要為他們的下一代計(jì)算機(jī)挑選合適的處理器,根據(jù)他們提供的技術(shù)需求,在當(dāng)時(shí)的市場上無法找到合適的處理器,于是Acorn決定自己設(shè)計(jì)一個(gè)處理器。一個(gè)小團(tuán)隊(duì)僅僅用了18個(gè)月就完成了從設(shè)計(jì)到實(shí)現(xiàn)的全過程,這是一臺RISC指令集的計(jì)算機(jī),叫做Acorn RISC Machine(簡稱ARM)。后來Acorn公司沒落了,而處理器設(shè)計(jì)部門被分了出來,組成了一家新公司。
ARM公司主要設(shè)計(jì)ARM系列AISC處理器內(nèi)核,它不生產(chǎn)芯片,只提供IP核。先以一個(gè)例子解釋一下架構(gòu)、核、處理器和芯片:S3C2440,這是一款SoC芯片,注意,它不是cpu,2440和我們熟知的51單片機(jī)有點(diǎn)類似,都屬于嵌入式,嵌入式的發(fā)展到目前經(jīng)歷了三個(gè)階段,分別是SCM、MCU、SoC。51屬于SCM或MCU,而2440就屬于SoC了,先來看看51單片機(jī)的內(nèi)部結(jié)構(gòu)
其內(nèi)部結(jié)構(gòu)可以簡單的分成兩部分:cpu和外設(shè)。再來看2440的:
中間的那個(gè)arm920t就是它的處理器,處理器和核在我看來在這里是一個(gè)概念,只不過一個(gè)是硬概念,一個(gè)是軟概念。這里的920t就既是處理器又是核。而三星做的就是除了這個(gè)cpu外其他的東西。
那架構(gòu)呢?再來看一張圖。
其中左側(cè)的就是架構(gòu),右側(cè)的是處理器,也可以叫核。arm首個(gè)最成功的cpu是ARM7TDMI,是基于ARMv4的。ARM架構(gòu)包含了下述RISC特性:
讀取/儲(chǔ)存 架構(gòu)
不支援地址不對齊內(nèi)存存取(ARMv6內(nèi)核現(xiàn)已支援)
正交指令集(任意存取指令可以任意的尋址方式存取數(shù)據(jù)Orthogonal instruction set)
大量的16 × 32-bit 寄存器陣列(register file)
固定的32 bits 操作碼(opcode)長度,降低編碼數(shù)量所產(chǎn)生的耗費(fèi),減輕解碼和流水線化的負(fù)擔(dān)。
大多均為一個(gè)CPU周期執(zhí)行。
不同版本的架構(gòu)會(huì)有所調(diào)整。
和三星相同的其他和arm合作的各大廠商通常會(huì)把它的CPU和各類外圍IP都放到一起,然后自己拿著圖紙去流片,生產(chǎn)出來的也是一個(gè)正方形,下面有很多引腳,這個(gè)東西不僅包含了CPU,還包含了其他的控制器,這個(gè)東西就叫做SOC(system on chip)。從英文來看,所謂的四核SOC什么的,本意就不是單指CPU,而是四核系統(tǒng)。
所以目前各大廠商所做的事情,就是買來ARM的授權(quán),得到ARM處理器的源代碼,而后自己搞一些外圍IP(或者買或者自己設(shè)計(jì)),組成一個(gè)SOC后,去流片。不同的SOC,架構(gòu)不同(就是CPU如何和IP聯(lián)系起來,有的以總線為核心,有的以DDR為核心),所以,海思是擁有自主產(chǎn)權(quán)的SOC架構(gòu)??墒?,無論任何廠商,再怎么折騰,都沒有怎么動(dòng)過CPU,ARM核心就好好的呆在那里,那就是中央處理器。
目前ARM的產(chǎn)品天梯:
ARM命名規(guī)則:
第一個(gè)數(shù)字:系列名稱:eg.ARM7、ARM9
第二個(gè)數(shù)字:Memory system
2:帶有MMU
4:帶有MPU
6:無MMU與MPU
第三個(gè)數(shù)字:Memory size
0:標(biāo)準(zhǔn)Cache(4-128k)
2:減小的Cache
6:可變的Cache
第四個(gè)字符:T:表示支持Thumb指令集
D:表示支持片上調(diào)試(Debug)
M:表示內(nèi)嵌硬件乘法器(Multiplier)
I :支持片上斷點(diǎn)和調(diào)試點(diǎn)
E:表示支持增強(qiáng)型DSP功能
J :表示支持Jazelle技術(shù),即Java加速器
S:表示全合成式
評論