先來(lái)談一下ARM的發(fā)展史:1978年12月5日,物理學(xué)家赫爾曼·豪澤(Hermann Hauser)和工程師Chris Curry,在英國(guó)劍橋創(chuàng)辦了CPU公司(Cambridge Processing Unit),主要業(yè)務(wù)是為當(dāng)?shù)厥袌?chǎng)供應(yīng)電子設(shè)備。1979年,CPU公司改名為Acorn計(jì)算機(jī)公司。
80年代中期,Acorn的一個(gè)小團(tuán)隊(duì)要為他們的下一代計(jì)算機(jī)挑選合適的處理器,根據(jù)他們提供的技術(shù)需求,在當(dāng)時(shí)的市場(chǎng)上無(wú)法找到合適的處理器,于是Acorn決定自己設(shè)計(jì)一個(gè)處理器(真有魄力)。一個(gè)小團(tuán)隊(duì)僅僅用了18個(gè)月就完成了從設(shè)計(jì)到實(shí)現(xiàn)的全過(guò)程,這是一臺(tái)RISC指令集的計(jì)算機(jī),叫做Acorn RISC Machine(簡(jiǎn)稱ARM)。后來(lái)Acorn公司沒(méi)落了,而處理器設(shè)計(jì)部門(mén)被分了出來(lái),組成了一家新公司。
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了,先來(lái)看看51單片機(jī)的內(nèi)部結(jié)構(gòu)
ARM9系列
ARM9 系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點(diǎn):
- 5 級(jí)整數(shù)流水線,指令執(zhí)行效率更高。
- 提供 1.1MIPS/MHz 的哈佛結(jié)構(gòu)。
?。?支持 32 位 ARM 指令集和 16 位 Thumb 指令集。
- 支持 32 位的高速 AMBA總線接口。
?。?全性能的 MMU,支持 Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
?。?MPU支持實(shí)時(shí)操作系統(tǒng)。
?。?支持?jǐn)?shù)據(jù) Cache 和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。
ARM9 系列微處理器主要應(yīng)用于無(wú)線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。
ARM9 系列微處理器包含 ARM920T、ARM922T和 ARM940T 三種類型,以適用于不同的應(yīng)用場(chǎng)合。
ARM9E系列
ARM9E 系列微處理器為可綜合處理器,使用單一的處理器內(nèi)核提供了微控制器、DSP、Java
應(yīng)用系統(tǒng)的解決方案,極大的減少了芯片的面積和系統(tǒng)的復(fù)雜程度。ARM9E 系列微處理器提供了
增強(qiáng)的 DSP 處理能力,很適合于那些需要同時(shí)使用 DSP 和微控制器的應(yīng)用場(chǎng)合。
ARM9E 系列微處理器的主要特點(diǎn)如下:
- 支持 DSP 指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。
?。?5 級(jí)整數(shù)流水線,指令執(zhí)行效率更高。
?。?支持 32 位 ARM 指令集和 16 位 Thumb 指令集。
- 支持 32 位的高速 AMBA總線接口。
?。?支持 VFP9 浮點(diǎn)處理協(xié)處理器。
?。?全性能的 MMU,支持 Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
?。?MPU支持實(shí)時(shí)操作系統(tǒng)。
?。?支持?jǐn)?shù)據(jù) Cache 和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。
?。?主頻最高可達(dá) 300MIPS。
ARM9 系列微處理器主要應(yīng)用于下一代無(wú)線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。
ARM9E 系列微處理器包含 ARM926EJ-S、ARM946E-S 和 ARM966E-S 三種類型,以適用于不同的應(yīng)用場(chǎng)合。
ARM920T的結(jié)構(gòu)與特性
三星S3C2440A芯片自稱處理器,但其實(shí)它是采用了ARM公司設(shè)計(jì)的ARM920T CPU加上一些其他組件,然后把它們封裝在一起形成的一個(gè)多功能芯片。這里關(guān)注的是ARM920T CPU,下面就去看一看它的內(nèi)部結(jié)構(gòu)。
ARM920T CPU結(jié)構(gòu)
mini2440開(kāi)發(fā)板采用了S3C2440A芯片,而S3C2440A芯片又采用了ARM公司設(shè)計(jì)的ARM920T CPU。上次研究了計(jì)算平臺(tái)—mini2440開(kāi)發(fā)板。發(fā)現(xiàn)上面有個(gè)叫S3C2440A的黑盒子,并打開(kāi)了它,發(fā)現(xiàn)它里面又有許多黑盒子,并且對(duì)其中一些黑盒子做了簡(jiǎn)要的介紹,如圖3-1所示。另外,為了便于閱讀,把2-4的圖又搬過(guò)來(lái),筆者覺(jué)得雖然增加篇幅,但是節(jié)省了回去翻書(shū)的時(shí)間。
圖就是S3C2440A這個(gè)黑盒子內(nèi)部結(jié)構(gòu)圖,其實(shí)早已看過(guò),不過(guò)上次我們沒(méi)有繼續(xù)拆開(kāi)它里面的黑盒子。其中有個(gè)非常重要的黑盒子—ARM920T,它才是這次要關(guān)注的重點(diǎn),下面打開(kāi)它,看看它里面又有什么,如圖3-2所示。
ARM920T里面的黑盒子以及功能單元如下:
1)JTAG:一種調(diào)試或者測(cè)試芯片的接口,可以通過(guò)JTAG接口訪問(wèn)CPU的內(nèi)部寄存器和掛在總線上的設(shè)備,如Flash、RAM等,我們不必過(guò)多關(guān)注。
2)ARM9TMDI:它才是真正運(yùn)行程序的。
3)指令、數(shù)據(jù)MMU:包括兩個(gè)C13一起處理內(nèi)存地址映射的。
4)指令、數(shù)據(jù)Cache:包括寫(xiě)回PATAG RAM、寫(xiě)緩沖,一起完成高速緩存的功能。
5)CP15:這里是用于控制MMU和Cache的,還可以控制別的器件,不同的系統(tǒng)配置下是不同的。
6)外部協(xié)處理器接口:ARM920T可以加入多達(dá)15個(gè)協(xié)處理器,如增加一個(gè)浮點(diǎn)運(yùn)算處理器等。
7)AMBA總線接口:ARM920T內(nèi)部就是通過(guò)它和外部?jī)?nèi)存及其他設(shè)備通信的。
不過(guò)不需要把所有的東西都弄得一清二楚。我們主要關(guān)注4個(gè)部分:①CPU內(nèi)核:和ARM920T內(nèi)部的其他部件一起工作,用來(lái)運(yùn)行程序。包括操作系統(tǒng)內(nèi)核和應(yīng)用程序。②MMU:映射內(nèi)存,主要用于實(shí)現(xiàn)虛擬內(nèi)存,什么是虛擬內(nèi)存后面會(huì)介紹的。③Cache:緩存內(nèi)存中的指令和數(shù)據(jù),它比內(nèi)存小很多但快很多,把內(nèi)存中的一部分內(nèi)容放在Cache里面,這樣可以加快程序的運(yùn)行速度,后面也會(huì)詳細(xì)介紹的。④CP15:它在ARM920T內(nèi)部稱為協(xié)處理器,在這里是專門(mén)用于控制MMU和Cache的。可以看到ARM920T還能通過(guò)外部協(xié)處理器接口增加其他協(xié)處理器。
CPU內(nèi)核對(duì)應(yīng)于圖3-2中的ARM9TMDI。操作系統(tǒng)和應(yīng)用程序都需要它執(zhí)行,所以我們寫(xiě)操作系統(tǒng)內(nèi)核之前,必須先仔細(xì)了解它,以及ARM920T的其他組件。后面會(huì)重點(diǎn)研究ARM920T的程序員模型,即指令集、工作模式、寄存器等。
MMU對(duì)應(yīng)于圖3-2中的指令MMU、數(shù)據(jù)MMU。為什么有兩個(gè)MMU,通常情況下一個(gè)MMU不就夠了嗎?是的,大部分CPU確實(shí)只有一個(gè)MMU,然而這里有兩個(gè),這是因?yàn)锳RM920T內(nèi)部采用了哈佛架構(gòu)。哈佛架構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器架構(gòu)。是一種并行體系架構(gòu),指令和數(shù)據(jù)可以獨(dú)立存取,這樣就大大提高了程序的運(yùn)行性能。
Cache對(duì)應(yīng)于圖3-2中的指令Cache、數(shù)據(jù)Cache,同樣也是因?yàn)楣鸺軜?gòu)才會(huì)有兩個(gè)Cache。它們都是16KB。關(guān)于Cache的工作機(jī)制,后面會(huì)專門(mén)介紹,現(xiàn)在只要知道它是用來(lái)緩存內(nèi)存中的數(shù)據(jù)的,速度比內(nèi)存快很多。
CP15對(duì)應(yīng)于圖3-2中的CP15,稱為協(xié)處理器。在ARM920T中,CP15控制著MMU和Cache,比如我們要打開(kāi)或者關(guān)閉MMU、改變地址映射關(guān)系、打開(kāi)或者關(guān)閉Cache、鎖定Cache中的內(nèi)容、使Cache中的數(shù)據(jù)變?yōu)闊o(wú)效等。這些功能都將通過(guò)操作CP15協(xié)處理器而達(dá)到
評(píng)論
查看更多