Linux驅動開發之 二 (那些必須要瞭解的硬件知識 之 處理器篇)

Linux驅動開發之 二 (那些必須要瞭解的硬件知識 之 處理器篇)


本文中部分內容源自網絡,如有侵權請聯繫博主,謝謝


老謝一直以“軟硬通殺”的標準來要求自己。搞軟件的工程師,有必要了解底層硬件的基本原理;搞驅動的工程師,則必須知道底層硬件的工作原理;而搞最底層的硬件工程師,同樣需要了解一些基本的軟件知識。

也許有的人會不同意這個看法,他們認爲一個優秀的系統,最理想的境界是應用層和底層硬件完全隔離,即應用層的開發完全脫離硬件基礎。這一點老謝也認同,但是我們討論的是工程師本素質問題,而不是嵌入式系統開發問題。作爲工程師的基本素質,老謝堅持認爲:軟硬互通,有所專向,或軟或硬,方爲王道。

那麼,在Linux驅動開發學習過程中,有哪些硬件知識是我們必須要知道的呢? 老謝計劃用幾個篇幅逐一地和大家一起學習。

而,今天的主角是處理器,以它作爲硬件知識篇的開始。


一、搞清MPU和MCU的關係

MPU,Micro Process Unit,微處理器;
MCU,Micro Control Unit,微控制器。

MPU通常代表一個CPU(中央處理器),而MCU則強調把CPU、存儲器、外圍電路集成在一顆IC內部。

定位不同的產品(MCU)可能包含共同的CPU核,但是集成的擴展電路則不一樣,取決於這顆MCU的功能定位或市場定位。

一個典型的MCU框架圖如下:

這裏寫圖片描述

目前比較主流的CPU核

  1. Advanced RISC Machines的ARM
  2. Silicon Graphics的MIPS
  3. IBM和Motorola的PowerPC

ARM的功耗低,在手持設備、通信設備中應用最爲廣泛。

CPU的體系架構,分爲兩類:馮.諾依曼結構和哈弗結構。從指令集的角度,CPU又可分爲RISC精簡指令集計算機和CISC複雜指令集計算機。CSIC 強調增強指令的能力、減少目標代碼的數量,但是指令複雜,指令週期長;而RISC強調儘可能減少指令集、指令單週期執行,但是目標代碼會更大。ARM、MIPS、PowerPC等CPU內核都採用了RISC指令集。目前,RISC和CSIC的融合非常明顯。

我們瞭解這些概念即可,如需展開討論,請百度。


二、DSP數字信號處理器

數字信號處理器(DSP)針對通信、圖像、語音和視頻處理等領域的算法而設計。它包含獨立的硬件乘法器。DSP的乘法指令一般在單週期內完成,且優化了卷積、數字濾波、FFT(快速傅立葉變換)、相關、矩陣運算等算法中的大量重複乘法。

DSP分爲兩類,一類是定點DSP,一類是浮點DSP。浮點DSP的浮點運算用硬件來實現,可以在單週期內完成,因而其浮點運算處理速度高於定點DSP。而定點DSP只能用定點運算模擬浮點運算。

MCU和DSP也有相互融合以取長補短的趨勢,如數字信號控制器(DSC)即爲MCU+DSP。


三、專用集成電路ASIC

對於某些應用場合,使用ASIC(專用集成電路)往往是低成本且高性能的方案。ASIC專門針對特定應用而設計,不具備也不需要靈活的編程能力。使用ASIC完成同樣地功能往往比直接使用CPU資源或CPLD(複雜可編程邏輯器件)/FPGA(現場可編程門陣列)更廉價、高效。


最後,處理器的分類框圖如下圖

這裏寫圖片描述

在實際項目的硬件方案中,往往會根據應用的需求選擇通用處理器、數字信號處理器、特定領域處理器、CPLD/FPGA 或ASIC 之一的解決方案,在複雜的系統中,這些芯片可能會同時存在,協同合作,各自發揮自己的長處。

老謝特別感謝宋寶華老師對Linux驅動的知識分享分析。


itxiebo
20160427

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章