官术网_书友最值得收藏!

1.2 嵌入式處理器

1.2.1 哈佛結構和馮·諾依曼結構

相信學過計算機技術這門課程的讀者都知道,通用CPU采用的是馮·諾依曼結構,而很多嵌入式處理器多采用哈佛結構,那么這兩種結構究竟有什么區別,各自有什么優勢?在進入嵌入式處理器的學習之前有必要先搞清楚這個問題。因此,在開始嵌入式處理器的學習之前我們先來了解這兩種結構。

1.哈佛結構

哈佛結構(Harvard)是哈佛大學物理學家A·Howard于1930年提出的,其結構原理如圖1-5所示。哈佛結構的主要特點是將程序和數據存儲在不同的存儲器中,每個獨立的存儲器獨立編址,獨立訪問,這一點是與馮·諾依曼結構的主要區別。該結構在片內設置了與兩個存儲器相對應的程序總線和數據總線,取指令和執行能重疊運行,故數據的吞吐率提高了一倍。

圖1-5 哈佛結構示意圖

哈佛結構的微處理器通常具有較高的執行效率。其程序指令和數據指令分開組織和存儲,執行時可以預先讀取下一條指令。

目前使用哈佛結構的中央處理器和微控制器有很多,摩托羅拉公司的MC68系列、Zilog公司的Z8系列、最為常用的8051系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10、ARM11以及本書的主角Cortex-M3等系列。

哈佛結構是指程序和數據空間獨立的體系結構,目的是為了減輕程序運行時的訪存瓶頸。

例如,當一條指令同時取兩個操作數,在流水線處理時還有一個取指操作,如果程序和數據通過一條總線訪問,取指和取數必會產生沖突,而這對大運算量循環的執行效率很不利。

哈佛結構能基本上解決取指和取數的沖突問題,然而,對于一些需要高速運算和數據處理的場合,為了進一步提升運行速度和靈活性,人們在基本哈佛結構的基礎之上做了一些改進,提出了改進的哈佛結構,其主要特點如下。

(1)允許數據存放在程序存儲器中,并被算數運算指令直接使用,增強了芯片的靈活性。

(2)指令存儲在高速緩沖器中,當執行此指令時不需要再從存儲器中讀取指令,節約一個指令周期,大大提高了運行速度。

2.馮·諾依曼結構

馮·諾依曼結構(Von Neumann)也稱普林斯頓結構(Princeton Architecture),是一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構。程序指令存儲地址和數據存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數據的寬度相同,依靠指令計數器提供的地址來區分是程序代碼還是數據,由于取指令和取數據都訪問同一存儲器,數據吞吐量低,但是管理同一存儲器需要的總線數量少。

馮·諾依曼結構處理器具有以下幾個特點:①必須有一個存儲器;②必須有一個控制器;③必須有一個運算器,用于完成算術運算和邏輯運算;④必須有輸入和輸出設備,用于進行人機通信。馮·諾依曼的主要貢獻就是提出并實現了“存儲程序”的概念。由于指令和數據都是二進制碼,指令和操作數的地址又密切相關,因此,當初選擇這種結構是自然的。但是,這種指令和數據共享同一總線的結構,使得信息流的傳輸成為限制計算機性能的瓶頸,影響了數據處理速度的提高。

馮·諾依曼結構和哈佛結構各有特點。8位單片機數據線寬度小,為了提高CPU運行速度,多采用哈佛結構;通用數字信號處理器等為了提高處理速度,也多數采用哈佛結構。16位、一些32位處理器,為了便于統一編址、統一資源管理、減少外部接口數量,多采用馮·諾依曼結構。

1.2.2 CISC指令集與RISC指令集

指令強弱是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為復雜指令集(CISC)和精簡指令集(RISC)兩部分。相應地,微處理隨著微指令的復雜度也可分為CISC及RISC這兩類。

CISC是一種為了便于編程和提高記憶體訪問效率的晶片設計體系。在20世紀90年代中期之前,大多數的微處理器都采用CISC體系——包括Intel的80x86和Motorola的68K系列等,即通常所說的x86架構就是屬于CISC體系的。RISC是為了提高處理器運行的速度而設計的晶片體系。它的關鍵技術在于流水線操作(Pipelining):在一個時鐘周期里完成多條指令。而超流水線以及超標量技術已普遍在晶片設計中使用。RISC體系多用于非x86陣營高性能微處理器CPU。而ARM體系結構目前被公認為是業界領先的32位嵌入式RISC微處理器結構。所有ARM處理器共享這一體系結構。因此我們可以從其所屬體系比較入手,來進行x86指令集與ARM指令集的比較。

1.CISC

CISC復雜指令系統計算機通過增強計算機指令系統功能,通過程序去執行大量功能各異的指令,從而優化計算機系統的性能。

由于具有大量的指令,因此CISC體系的優缺點也很明顯,優點如下。

(1)具有豐富的指令系統,很大程度上簡化了程序設計的難度。

(2)CISC中不要求指令長度統一,可以節省存儲空間。

(3)CISC指令可以直接對存儲器操作,使得通用寄存器數目較少。

同時CISC指令系統也帶來很多問題,缺點如下。

(1)由于指令系統龐大,尋址方式、指令格式較多,指令長度不一,增加了硬件復雜程序,設計成本較高。

(2)指令操作復雜、執行周期長、速度低,難以優化編譯生成高效的機器語言。

(3)許多指令使用頻度低,增加了系統負擔,降低了性價比。

2.RISC

和CISC相比,RISC的指令就要少得多,通常在幾十條左右,其基本設計思想是盡量簡化計算機的指令功能,從而降低硬件執行指令的復雜度,因為軟件比硬件容易提供更大的靈活性和更高的智能,因此RISC的主要特點如下。

(1)精簡指令集:只保留了數量很少、功能簡單、能在一個機器周期內完成的指令,如果要執行復雜的程序功能則通過子程序而不是使用復雜指令來實現。

(2)指令長度相同:每條指令的長度都是相同的,可以在一個單獨操作里完成。

(3)單機器周期指令:大多數的指令都可以在一個機器周期里完成,并且允許處理器在同一時間內執行一系列的指令。

使用RISC指令具有以下優勢。

(1)精簡指令系統的設計適合超大規模集成電路的實現。由于指令條數相對較少,尋址方式簡單,指令格式規整,與CISC結構相比,控制器的譯碼和執行硬件相對簡單,因此芯片中用于實現控制器的晶體面積明顯減小。

(2)在使用相同的晶片技術和相同運行時鐘下,RISC系統具有更快的運行速度。精簡的指令系統可以加快指令的譯碼,控制器的簡化可以縮短指令的執行延時等,這些都可以提高程序的執行速度。

(3)可以提供直接支持高級語言的能力,簡化編譯程序的設計。指令總數減少,縮小了編譯過程中對功能類似的機器指令的選擇范圍,減輕了對各種尋址方式進行選擇、分析和變換的負擔,易于更換或取消指令、調整指令順序,提高程序運行速度。

(4)RISC處理器比相對應的CISC處理器設計更簡單,所需要的時間將變得更短,并可以比CISC處理器應用更多先進的技術,開發更快的下一代處理器。

相應地,RISC也存在一些缺點,主要有以下兩點。

(1)由于指令少,加重了匯編程序員的負擔,增加了機器語言程序的長度,從而占用了較大的存儲空間。

(2)相對來說,RISC對編譯器的要求更高,因為指令簡單,RISC結構的性能就依賴于編譯器的效率。編譯器的優劣直接影響處理器的性能發揮。

綜合上面所述,若要再進一步比較CISC與RISC之差異,可以由以下幾點來進行分析。

(1)指令形成:CISC因指令復雜,故采用微指令碼控制單元的設計,而RISC的指令90%由硬件直接完成,只有10%的指令是由軟件以組合的方式完成,因此指令執行時間上RISC較短,但RISC所需ROM空間相對的比較大,至于RAM使用大小應該與程序的應用有關系。

(2)定址模式:CISC需要較多的定址模式,而RISC只有少數的定址模式,因此CPU在計算記憶體有效位址時,CISC占用的周期較多。

(3)指令周期:CISC指令的格式長短不一,執行時的周期次數也不統一,而RISC結構剛好相反,故適合采用管線處理架構的設計,進而可以向達到平均一周期完成一指令的方向努力。顯然,在設計上RISC較CISC簡單,同時因為CISC的執行步驟過多,閑置的單元電路等待時間增長,不利于平行處理的設計,所以就效能而言,RISC較CISC還是占優,但RISC因指令精簡化后造成應用程式碼變大,需要較大的程式記憶體空間,且存在指令種類較多等缺點。

(4)大量使用寄存器:在CISC中,程序的調用、返回將上下文保存于堆棧中,因此需要內存操作,而RISC通過使用大量的寄存器,使得大部分的指令操作都在寄存器之間進行,提高了處理速度。

1.2.3 x86指令集和ARM指令集

1.x86指令集

x86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,后來的計算機為提高浮點數據處理能力而增加的x87芯片系列數學協處理器另外使用x87指令,以后就將x86指令集和x87指令集統稱為x86指令集。雖然隨著CPU技術不斷發展,Intel陸續研制出更新型的i80386、i80486,但為了保證計算機能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟件資源,Intel公司所生產的所有CPU仍然繼續使用x86指令集,所以它的CPU仍屬于x86系列。由于Intel x86系列及其兼容CPU都使用x86指令集,所以就形成了今天龐大的x86系列及兼容CPU陣容。除了具備上述CISC的諸多特性外,x86指令集有以下三個突出的缺點。

(1)通用寄存器組——對CPU內核結構的影響。x86指令集只有8個通用寄存器,所以,CISC的CPU執行大多數時間是在訪問存儲器中的數據,而不是寄存器中的,這就拖慢了整個系統的速度。RISC系統往往具有非常多的通用寄存器,并采用了重疊寄存器窗口和寄存器堆等技術使寄存器資源得到充分的利用。

(2)解碼——對CPU的外核的影響。解碼器(Decode Unit),這是x86CPU才有的東西。其作用是把長度不定的x86指令轉換為長度固定的類似于RISC的指令,并交給RISC內核。解碼分為硬件解碼和微解碼,對于簡單的x86指令只要硬件解碼即可,速度較快,而遇到復雜的x86指令則需要進行微解碼,并把它分成若干條簡單指令,速度較慢且很復雜。Athlon也好,PIII也好,老式的CISC的x86指令集嚴重制約了它們的性能表現。

(3)尋址范圍小——約束了用戶需要。AMD研發出x86-64架構時,雖然解決了傳統x86固有的一些缺點,比如尋址范圍的擴大,但這種改善并不能直接帶來性能上的提升。

2.ARM指令集

相比而言,以RISC為架構體系的ARM指令集指令格式統一,種類比較少,尋址方式也比復雜指令集少,當然處理速度就提高很多。ARM處理器都是所謂的精簡指令集處理機(RISC)。其所有指令都利用一些簡單的指令組成,簡單的指令意味著相應硬件線路可以盡量做到最佳化,而提高執行速率,相對的使得一個指令所需的時間減到最短。而因為指令集的精簡,許多工作都必須組合簡單的指令,而針對較復雜組合的工作便需要由“編譯程式”(Compiler)來執行,而CISC體系的x86指令集因為硬件所提供的指令集較多,所以許多工作都能夠以一個或是數個指令來代替,Compiler的工作因而減少許多。除了具備上述RISC的諸多特性之外,可以總結ARM指令集架構的其他一些特點如下。

(1)體積小,低功耗,低成本,高性能。

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

(3)大量使用寄存器,指令執行速度更快。

(4)大多數數據操作都在寄存器中完成。

(5)尋址方式靈活簡單,執行效率高。

(6)指令長度固定。

(7)流水線處理方式。

1.2.4 通用處理器(x86)與嵌入式處理器(ARM)小結

通過對體系結構以及指令集的介紹,相信讀者能夠對它們的優劣有一個簡要的認識。大量的復雜指令、可變的指令長度、多種的尋址方式這些CISC的特點,也是CISC的缺點,因為這些都大大增加了解碼的難度,而在現在的高速硬件發展下,復雜指令所帶來的速度提升早已不及在解碼上浪費的時間。因此,除了個人PC市場還在用x86指令集外,服務器以及更大的系統都早已不用CISC了。

目前,x86架構的處理器仍然占據著通用處理器領域的主要市場,存在的理由就是為了兼容大量x86平臺上的軟件,同時它的體系結構組成的實現不太困難。而RISC體系的ARM指令最大特點是指令長度固定,指令格式種類少,尋址方式種類少,大多數是簡單指令且都能在一個時鐘周期內完成,易于設計超標量與流水線,寄存器數量多,大量操作在寄存器之間進行,優點是不言而喻的,因此,ARM處理器才成為是當前最流行的處理器系列,是幾種主流的嵌入式處理體系結構之一。

RISC架構的處理器目前如日中天,微軟最新的操作系統——Windows 8增加了對ARM處理器的支持,Wintel(微軟和英特爾)聯盟也將要瓦解。實際上,隨著RISC處理器在嵌入式領域中大放異彩,傳統的x86系列CISC處理器在Intel公司的積極改進下也克服了功耗過高的問題,成為一些高性能嵌入式設備的最佳選擇,目前Intel公司大力發展的Atom處理器就是其中的代表。發展到今天,CISC與RISC之間的界限已經不再是那么涇渭分明,RISC自身的設計正在變得越來越復雜(當然并不是完全依著CISC的思路變復雜),因為所有實際使用的CPU都需要不斷提高性能,所以在體系結構中加入新特點就在所難免。另一方面,原來被認為是CISC體系結構的處理器也吸收了許多RISC的優點,比如Pentium處理器在內部實現中也采用RISC架構,復雜的指令在內部由微碼分解為多條精簡指令來運行,但是對于處理器外部來說,為了保持兼容性還是以CISC風格的指令集展示出來。

1.2.5 嵌入式處理器的分類

一般來說,通常將嵌入式處理器分為四類,即嵌入式微控制器(MicroController Unit,MCU)、嵌入式微處理器(MicroProcessor Unit,MPU)、嵌入式DSP(Digital Signal Processor)處理器和嵌入式片上系統(System on Chip,SoC)。

1.嵌入式微控制器

嵌入式微控制器(MicroController Unit,MCU)就是俗稱的單片機。顧名思義,其最大的特點就是單片化,芯片內部一般繼承了總線、總線邏輯、Flash、RAM、定時/計數器等必要的處理器外設,一般情況下只需要在外圍加上時鐘、電源等極少的電路就可以構成一個嵌入式系統。由于需要的外圍元件較少,采用單片機構成的系統通常具有體積小、功耗低、可靠性高、成本低的優勢。同時,各廠家可以根據單片機的使用對象,靈活配置相應的外設,設計不同性能的單片機。因此,經過30年的發展,單片機的種類非常豐富,在嵌入式設備中有著極其廣泛的應用。到目前為止,單片機還是嵌入式系統中應用最為廣泛的處理器,在整個嵌入式處理器市場中占有的比例最大,擁有的種類和數量也最多。圖1-6為最常用的單片機AT89C51的內部結構圖。

Atmel公司把51內核與其擅長的Flash制造技術相結合,推出可重復擦寫1000次以上且低功耗的AT89S51/52等產品,相對于傳統的89C51等產品,由于支持在線系統編程(In System Programming,ISP)功能,用戶可以在目標系統或印制電路板上對器件進行反復編程,不需要專用的編程器就可以進行單片機的實驗和開發,因此得到了尤其是學生用戶的廣泛認可。只需要購買或者自己制作一根成本不足10元的并口下載線,或者成本不足30元的USBASP下載線,就可以方便地進行編程,極大降低了開發成本。同樣,國內流行的STC系列51單片機由于突出的串口自編程技術,只需要使用串口就可以方便地進行編程,因此有著廣泛的應用。

雖然51系列單片機從性能上看有些老舊,但是在眾多領域仍然有著廣泛的應用,另外從嵌入式學習的角度來說,其廣泛的學習資源、較低的學習成本非常適合電子信息類專業的學生進行入門學習,51系列單片機也是很多高校的主要課程之一。有興趣的同學可以選擇一款AT89S51或者STC系列51單片機的開發板,這類開發板往往只有不到200元的售價,然而通過實踐卻可以極大提升動手能力,為后續嵌入式系統的學習打下基礎。

圖1-6 AT89C51單片機內部結構

Atmel公司生產的采用精簡指令集高速8位單片機AVR系列同樣是當前市場上流行的單片機之一。相對于傳統的51系列單片機,AVR系列采用超功能精簡指令,處理速度快,同時具備內部資源豐富、低功耗、高度保密性能、高效的C語言編程效率等眾多優勢,加上強大的軟件和硬件平臺支持使AVR系列單片機得到了廣泛的運用。

另外一類常用的是Microchip公司的PIC系列8位單片機,性能優越,價格低,能夠適應不同場合的需求,品種繁多,開發周期短,也有著廣泛的應用。特別值得一提的是,PIC系列單片機I/O口具有防瞬態能力,通過限流電阻可以接至220V交流電源,可直接與繼電器控制電路相連,無須光電耦合隔離,給應用帶來了極大的方便。目前,PIC單片機的新產品已經具備模擬量處理、掉電復位、低電壓檢測等多種功能。PIC品種非常齊全,引腳從8~84不等。

由于單片機的應用非常廣泛,因此為了適用不同的需求,很多單片機對某些特殊需求進行了優化,具有某一方面的突出優勢,如TI公司針對低功耗應用的MSP430系列,針對Zigbee應用的CC2430等,同時一般一個系列的單片機具有多種衍生品,每種衍生品的處理器內核都是一樣的,不同的是存儲器和外設的配置以及封裝。這樣可以使單片機最大限度地和應用需求相匹配,從而減少功耗和控制成本。

2.嵌入式微處理器

嵌入式微處理器(MicroProcessor Unit,MPU)是由通用計算機中的CPU演變而來的,一般位數都在32位以上,具有較高的性能。與通用計算機處理器不同的是,在實際嵌入式系統的應用中,它只保留與嵌入式應用緊密相關的功能部件,除去其他冗余功能部分,這樣就以最低的功耗和資源實現了嵌入式應用的特殊要求。因此,雖然嵌入式微處理器以通用處理器為基礎,但是一般在工作溫度、功耗控制、抗電磁干擾及可靠性等方面都做了各種增強。

嵌入式微處理器的典型代表就是ARM處理器,ARM是英文Advanced RISC Machines的縮寫。它既是公司的名稱,也是一種計算機架構的名稱。ARM是目前嵌入式產品中應用最為廣泛的處理器,本書的第3章將進行更為詳細的介紹。

雖然ARM是嵌入式微處理器領域的主角,但是其他兩個重要的角色也不能忽略,它們分別是MIPS系列微處理器和PowerPC系列微處理器。

MIPS處理器是20世紀80年代初期由斯坦福大學Hennessy教授領導的小組研制出來的。1984年成立的MIPS計算機公司是一家設計、制造高性能、高檔次的嵌入式32位和64位處理器的廠商,在RISC處理器方面占有重要地位。目前,MIPS公司的產品基本退出了桌面處理器市場,而將其重心完全轉移到嵌入式市場領域。在高速大數據量的嵌入式產品領域,MIPS公司的產品具有較大的影響力。我國自主研發的通用CPU龍芯使用的也是MIPS架構。

PowerPC微處理器在開發初期由IBM、Motorola和Apple公司共同投資,后來Apple退出,現在PowerPC處理器主要由IBM和Motorola生產。PowerPC處理器的種類較多,既有通用處理器,又有嵌入式控制器和內核,其應用范圍也非常廣泛,遍布從高端的工作站、服務器到桌面計算機系統,從消費類電子產品到大型通信設備等各方面。

3.嵌入式DSP處理器

嵌入式DSP(Digital Signal Processor)處理器是專門用于信號處理的處理器,DSP對系統結構和指令算法方面進行了特殊設計,使其適合于執行DSP算法,具有很高的編譯效率和執行速度。在數字濾波、FFT等方面DSP算法正大量進入嵌入式領域。

DSP的相關理論算法從20世紀70年代就已經開始出現,早期的DSP理論算法只能通過微處理器來實現,因此DSP的應用領域僅僅局限于一些尖端的高科技領域。隨著大規模集成電路技術的發展,1978年世界上誕生了單片的DSP芯片,其運算速度比普通的微處理器快幾十倍,在語音合成和編解碼器中得到了廣泛的應用。

根據數字信號的處理需求,DSP芯片一般具有如下特點。

(1)可以并行執行多個操作。

(2)支持流水線操作。

(3)快速的中斷處理。

(4)在一個指令周期內可以完成一次乘法和一次加法。

(5)程序和數據空間分開,可以同時訪問指令和數據。

(6)片內具有快速RAM。

(7)具有低開銷或者無開銷循環及跳轉指令的硬件支持。

(8)具有在單周期內操作的多個硬件地址產生器。

4. 嵌入式片上系統

嵌入式片上系統(System on Chip,SoC)是目前嵌入式應用領域最熱門的方向之一。SoC最大的特點就是成功實現了軟件和硬件的無縫結合,可以直接在片內嵌入操作系統的代碼模塊。SoC具有極高的綜合性,能夠使用硬件描述語言或者高級語言來實現一個復雜的系統。

對于采用SoC處理器的系統,由于其絕大部分構件都是在系統內部,整個系統就特別簡潔,不僅減小了系統體積和功耗,而且提高了系統的可靠性。

主站蜘蛛池模板: 湘西| 涿鹿县| 集贤县| 加查县| 巴塘县| 陇川县| 莱芜市| 沁源县| 南郑县| 白水县| 华阴市| 井冈山市| 韶山市| 沭阳县| 鹤岗市| 溧水县| 龙门县| 沁阳市| 柘荣县| 广德县| 昭平县| 明溪县| 博乐市| 大埔区| 海南省| 中山市| 平果县| 巴楚县| 大关县| 龙门县| 博乐市| 南丰县| 松滋市| 喀喇沁旗| 晴隆县| 抚宁县| 巨野县| 富宁县| 太保市| 平安县| 天水市|