深入了解DSP与ARM的区别与联系
這些天正準備找工作的事,對于一些理論上的,或者說表面上的知識需要梳理下,所以有空整理了這篇簡陋的比較,權當從另一個側面理解下這兩款主流處理器的特點了吧!
?
DSP:
DSP(digital singnal processor)是一種獨特的微處理器,有自己的完整指令系統,是以數字信號來處理大量信息的器件。一個數字信號處理器在一塊不大的芯片內包括有控制單元、運算單元、各種寄存器以及一定數量的存儲單元等等,在其外圍還可以連接若干存儲器,并可以與一定數量的外部設備互相通信,有軟、硬件的全面功能,本身就是一個微型計算機。DSP采用的是哈佛設計,即數據總線和地址總線分開,使程序和數據分別存儲在兩個分開的空間,允許取指令和執行指令完全重疊。也就是說在執行上一條指令的同時就可取出下一條指令,并進行譯碼,這大大的提高了微處理器的速度。另外還允許在程序空間和數據空間之間進行傳輸,因為增加了器件的靈活性。
其工作原理是接收模擬信號,轉換為0或1的數字信號,再對數字信號進行修改、刪除、強化,并在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,源源超過通用微處理器,是數字化電子世界中日益重要的電腦芯片。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。
?
????DSP芯片,由于它運算能力很強,速度很快,體積很小,而且采用軟件編程具有高度的靈活性,因此為從事各種復雜的應用提供了一條有效途徑。其主要應用是實時快速地實現各種數字信號處理算法。根據數字信號處理的要求,DSP芯片一般具有如下主要特點:
?
????(1)在一個指令周期內可完成一次乘法和一次加法;
????(2)程序和數據空間分開,可以同時訪問指令和數據;
????(3)片內具有快速RAM,通常可通過獨立的數據總線在兩塊中同時訪問;
????(4)具有低開銷或無開銷循環及跳轉的硬件支持;
????(5)快速的中斷處理和硬件I/O支持;
????(6)具有在單周期內操作的多個硬件地址產生器;
????(7)可以并行執行多個操作;
????(8)支持流水線操作,使取指、譯碼和執行等操作可以重疊執行。
?
????當然,與通用微處理器相比,DSP芯片的其他通用功能相對較弱些。
?
DSP優勢在于其有獨特乘法器,一個指令就可以完成乘加運算,但GPP(通用處理器)處理一般是用加法代替乘法,要n多cpu周期,盡管cpu主頻很快,但還是要相當時間,這一點現在的GPP已經基本上可以做到內部單周期運算乘加指令了。
?
數字信號處理是一種通過使用數學技巧執行轉換或提取信息,來處理現實信號的方法,這些信號由數字序列表示。在過去的二十多年時間里,數字信號處理已經在通信等領域得到極為廣泛的應用
?
?ARM:
?
ARM?(?Advanced RISC Machines?),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。1991?年?ARM?公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用?ARM技術知識產權(?IP?)核的微處理器,即我們通常所說的?ARM?微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基于?ARM?技術的微處理器應用約占據了?32位?RISC?微處理器?75?%以上的市場份額,?ARM?技術正在逐步滲入到我們生活的各個方面。?ARM?公司是專門從事基于?RISC?技術芯片設計開發的公司,作為知識產權供應商,本身不直接從事芯片生產,而是轉讓設計許可由合作公司生產各具特色的芯片,世界各大半導體生產商從ARM公司購買其設計的?ARM?微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的?ARM?微處理器芯片進入市場。目前,全世界有幾十家大的半導體公司都使用?ARM?公司的授權,因此既使得?ARM?技術獲得更多的第三方工具、制造、軟件的支持,又使整個系統成本降低,使產品更容易進入市場被消費者所接受,更具有競爭力。
?
ARM最大的優勢在于速度快、低功耗、芯片集成度高,多數ARM芯片都可以算作SOC,基本上外圍加上電源和驅動接口就可以做成一個小系統了。
?
基于ARM核心處理器的嵌入式系統以其自身資源豐富、功耗低、價格低廉、支持廠商眾多的緣故,越來越多地應用在各種需要復雜控制和通信功能的嵌入式系統中。
?
ARM與DSP的比較:
?
區別:
由于兩大處理器在各自領域的飛速發展,如今兩者中的高端或比較先進的系列產品中,都在彌補自身缺點、且擴大自身優勢,從而使得兩者之間的一些明顯不同已不再那么明顯了,甚至出現兩者部分結合的趨勢(如ARM的AMBA總線,可以把DSP或其他處理器集成在一塊芯片中;又如DSP中的兩個系列OMAP和達芬奇系列,就是直接針對兩者的廣泛應用而將兩者結合在一起,從而最大發揮各自優勢),另外,兩者各自不同系列的產品側重點也不盡相同,所以這里討論的是一些傳統意義上比較。
?
總的來說主要區別有:
?
ARM具有比較強的事務管理功能,可以用來跑界面以及應用程序等,其優勢主要體現在控制方面,它的速度和數據處理能力一般,但是外圍接口比較豐富,標準化和通用性做的很好,而且在功耗等方面做得也比較好,所以適合用在一些消費電子品方面;
而DSP主要是用來計算的,比如進行加密解密、調制解調等,優勢是強大的數據處理能力和較高的運行速度。由于其在控制算法等方面很擅長,所以適合用在對控制要求比較高的場合,比如軍用導航、電機伺服驅動等方面。
如果只是著眼于嵌入式應用的話,嵌入式CPU和DSP的區別應該只在于一個偏重控制一個偏重運算了。
?
另外:
內核源碼開放的Linux與ARM體系處理器相結合,可以發揮Linux系統支持各種協議及存在多進程調度機制的優點,從而使開發周期縮短,擴展性增強。
?
詳細來說:
DSP的優勢主要是速度,它可以在一個指令周期中同時完成一次乘法和一次加法,這非常適合快速傅立葉變換的需求。DSP有專門的指令集,主要是專門針對通訊和多媒體處理的;而ARM使用的是RISC指令集(當然ARM的E系列也支持DSP指令集)是通用處理用的。
?
存儲器架構和指令集特點不一樣
????單片機為了存儲器管理的方便(便于支持操作系統),一般采用指令、數據空間統一編碼的馮·諾依曼結構。?DSP為了提高數據吞吐的速度,基本上都是指令、數據空間獨立的哈佛結構。
????單片機對于數字計算方面的指令少得多,DSP為了進行快速的數字計算,提高常用的信號處理算法的效率,加入了很多指令,比如單周期乘加指令、逆序加減指令(FFT時特別有用,不是ARM的那種逆序),塊重復指令(減少跳轉延時)等等,甚至將很多常用的由幾個操作組成的一個序列專門設計一個指令可以一周期完成(比如一指令作一個乘法,把結果累加,同時將操作數地址逆序加1),極大的提高了信號處理的速度。由于數字處理的讀數、回寫量非常大,為了提高速度,采用指令、數據空間分開的方式,以兩條總線來分別訪問兩個空間,同時,一般在DSP內部有高速RAM,數據和程序要先加載到高速片內ram中才能運行。DSP為提高數字計算效率,犧牲了存儲器管理的方便性,對多任務的支持要差的多,所以DSP不適合于作多任務控制作用。
?
1?對密集的乘法運算的支持
GPP不是設計來做密集乘法任務的,即使是一些現代的GPP,也要求多個指令周期來做一次乘法。而DSP處理器使用專門的硬件來實現單周期乘法。DSP處理器還增加了累加器寄存器來處理多個乘積的和。累加器寄存器通常比其他寄存器寬,增加稱為結果bits的額外bits來避免溢出。同時,為了充分體現專門的乘法-累加硬件的好處,幾乎所有的DSP的指令集都包含有顯式的MAC指令。
?
2?存儲器結構
傳統上,GPP使用馮.諾依曼存儲器結構。這種結構中,只有一個存儲器空間通過一組總線(一個地址總線和一個數據總線)連接到處理器核。通常,做一次乘法會發生4次存儲器訪問,用掉至少四個指令周期。
??大多數DSP采用了哈佛結構,將存儲器空間劃分成兩個,分別存儲程序和數據。它們有兩組總線連接到處理器核,允許同時對它們進行訪問。這種安排將處理器存貯器的帶寬加倍,更重要的是同時為處理器核提供數據與指令。在這種布局下,DSP得以實現單周期的MAC指令。
還有一個問題,即現在典型的高性能GPP實際上已包含兩個片內高速緩存,一個是數據,一個是指令,它們直接連接到處理器核,以加快運行時的訪問速度。從物理上說,這種片內的雙存儲器和總線的結構幾乎與哈佛結構的一樣了。然而從邏輯上說,兩者還是有重要的區別。
GPP使用控制邏輯來決定哪些數據和指令字存儲在片內的高速緩存里,其程序員并不加以指定(也可能根本不知道)。與此相反,DSP使用多個片內存儲器和多組總線來保證每個指令周期內存儲器的多次訪問。在使用DSP時,程序員要明確地控制哪些數據和指令要存儲在片內存儲器中(CMD文件的編寫)。程序員在寫程序時,必須保證處理器能夠有效地使用其雙總線。
此外,DSP處理器幾乎都不具備數據高速緩存。這是因為DSP的典型數據是數據流。也就是說,DSP處理器對每個數據樣本做計算后,就丟棄了,幾乎不再重復使用。
?
3?零開銷循環
如果了解到DSP算法的一個共同的特點,即大多數的處理時間是花在執行較小的循環上,也就容易理解,為什么大多數的DSP都有專門的硬件,用于零開銷循環。所謂零開銷循環是指處理器在執行循環時,不用花時間去檢查循環計數器的值、條件轉移到循環的頂部、將循環計數器減1(逆序加減指令)。
與此相反,GPP的循環使用軟件來實現。某些高性能的GPP使用轉移預報硬件,幾乎達到與硬件支持的零開銷循環同樣的效果。
?
4?定點計算
大多數DSP使用定點計算,而不是使用浮點。雖然DSP的應用必須十分注意數字的精確,用浮點來做應該容易的多,但是對DSP來說,廉價也是非常重要的。定點機器比起相應的浮點機器來要便宜(而且更快)。為了不使用浮點機器而又保證數字的準確,DSP處理器在指令集和硬件方面都支持飽和計算、舍入和移位。
?
發展趨勢:
?
DSP是否將作為手機的心臟生存下去,目前的爭論非常激烈。今天的手機生產采用的是雙核方式:DSP芯片處理通信,如調制解調器功能和語音處理等;一塊通用處理器(通常是ARM設計的RISC處理器)負責處理手機上運行的各種程序,如用戶界面和控制協議堆棧等。隨這兩種處理器的功能日益強大,或許它們中的一方將會接管另一方目前執行的功能。但問題在于:是ARM取代DSP,還是DSP擠掉ARM?
?
如果將這三者結合起來,即由DSP結合采樣電路采集并處理信號,由ARM處理器作為平臺,運行Linux操作系統,將經過DSP運算的結果發送給用戶程序進行進一步處理,然后提供給圖形化友好的人機交互環境完成數據分析和網絡傳輸等功能,就會最大限度的發揮三者所長。
?
擴展了解FPGA:
?
FPGA 是英文 Field Programmable Gate Array (現場可編程門陣列)的縮寫,它是在 PAL 、 GAL 、 PLD 等可編程器件的基礎上進一步發展的產物,是專用集成電路( ASIC )中集成度最高的一種。 FPGA 采用了邏輯單元陣列 LCA ( Logic Cell Array )這樣一個新概念,內部包括可配置邏輯模塊 CLB ( Configurable Logic Block )、輸出輸入模塊 IOB ( Input Output Block )和內部連線( Interconnect )三個部分。用戶可對 FPGA 內部的邏輯模塊和 I/O 模塊重新配置,以實現用戶的邏輯。它還具有靜態可重復編程和動態在系統重構的特性,使得硬件的功能可以像軟件一樣通過編程來修改。作為專用集成電路( ASIC )領域中的一種半定制電路, FPGA 既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。可以毫不夸張的講, FPGA 能完成任何數字器件的功能,上至高性能 CPU, 下至簡單的 74 電路,都可以用 FPGA 來實現。 FPGA 如同一張白紙或是一堆積木,工程師可以通過傳統的原理圖輸入法,或是硬件描述語言自由的設計一個數字系統。通過軟件仿真,我們可以事先驗證設計的正確性。在 PCB 完成以后,還可以利用 FPGA 的在線修改能力,隨時修改設計而不必改動硬件電路。使用 FPGA 來開發數字電路,可以大大縮短設計時間,減少 PCB 面積,提高系統的可靠性。 FPGA 是由存放在片內 RAM 中的程序來設置其工作狀態的,因此工作時需要對片內的 RAM? 進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。加電時, FPGA 芯片將 EPROM 中數據讀入片內編程 RAM 中,配置完成后, FPGA 進入工作狀態。掉電后, FPGA 恢復成白片,內部邏輯關系消失,因此, FPGA 能夠反復使用。 FPGA 的編程無須專用的 FPGA 編程器,只須用通用的 ?EPROM 、 PROM 編程器即可。當需要修改 FPGA 功能時,只需換一片 EPROM 即可。這樣,同一片 FPGA ,不同的編程數據,可以產生不同的電路功能。因此, FPGA 的使用非常靈活。可以說, FPGA 芯片是小批量系統提高系統集成度、可靠性的最佳選擇之一。目前 FPGA 的品種很多,有 XILINX 的 ?XC 系列、 TI 公司的 TPC 系列、 ALTERA 公司的 FIEX 系列等。總結
以上是生活随笔為你收集整理的深入了解DSP与ARM的区别与联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MMU探索之旅
- 下一篇: 了解DSP的体系结构