天天看點

《Linux裝置驅動開發詳解 A》一一2.1 處理器

本節書摘來華章計算機出版社《linux裝置驅動開發詳解 a》一書中的第2章,第2.1節,作者:宋寶華 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。1

2.1.1 通用處理器

目前主流的通用處理器(gpp)多采用soc(片上系統)的晶片設計方法,內建了各種功能子產品,每一種功能都是由硬體描述語言設計程式,然後在soc内由電路實作的。在soc中,每一個子產品不是一個已經設計成熟的asic器件,而是利用晶片的一部分資源去實作某種傳統的功能,将各種元件采用類似搭積木的方法組合在一起。

arm核心的設計技術被授權給數百家半導體廠商,做成不同的soc晶片。arm的功耗很低,在當今最活躍的無線區域網路、3g、手機終端、手持裝置、有線網絡通信裝置等中應用非常廣泛。至本書編寫時,市面上絕大多數智能手機、平闆電腦都使用arm soc作為主要晶片。很多arm主要晶片的內建度非常高,除了內建多核arm以外,還可能內建圖形處理器、視訊編解碼器、浮點協處理器、gps、wifi、藍牙、基帶、camera等一系列功能。比如,高通的snapdragon 810就內建了如圖2.1所示的各種子產品。

主流的arm移動處理晶片供應商包括高通(qualcomm)、三星(samsung)、英偉達(nvidia)、美滿(marvell)、聯發科(mtk)、海思(hisilicon)、展訊(spreadtrum)等。德州儀器(ti)、博通(broadcom)則已淡出手機晶片業務。

中央處理器的體系結構可以分為兩類,一類為馮·諾依曼結構,另一類為哈佛結構。intel公司的中央處理器、arm的arm7、mips公司的mips

處理器采用了馮·諾依曼結構;而avr、arm9、arm10、arm11以及cortex a系列等則采用了哈佛結構。

馮·諾依曼結構也稱普林斯頓結構,是一種将程式指令存儲器和資料存儲器合并在一起的存儲器結構。程式指令存儲位址和資料存儲位址指向同一個存儲器的不同實體位置,是以程式指令和資料的寬度相同。而哈佛結構将程式指令和資料分開存儲,指令和資料可以有不同的資料寬度。此外,哈佛結構還采用了獨立的程式總線和資料總線,分别作為cpu與每個存儲器之間的專用通信路徑,具有較高的執行效率。圖2.2描述了馮·諾依曼結構和哈佛結構的差別。

《Linux裝置驅動開發詳解 A》一一2.1 處理器

圖2.2 馮·諾依曼結構與哈佛結構

許多晶片采用的是如圖2.3所示的改進的哈佛架構,它具有獨立的位址總線和資料總線,兩條總線由程式存儲器和資料存儲器分時共用。是以,改進的哈佛結構針對程式和資料,其實沒有獨立的總線,而是使用公用資料總線來完成程式存儲子產品或資料存儲子產品與cpu之間的資料傳輸,公用的位址總線來尋址程式和資料。

從指令集的角度來講,中央處理器也可以分為兩類,即risc(精簡指令集計算機)和cisc(複雜指令集計算機)。csic強調增強指令的能力、減少目标代碼的數量,但是指令複雜,指令周期長;而risc強調盡量減少指令集、指令單周期執行,但是目标代碼會更大。arm、mips、powerpc等cpu核心都采用了risc指令集。目前,risc和csic兩者的融合非常明顯。

2.1.2 數字信号處理器

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

dsp分為兩類,一類是定點dsp,另一類是浮點dsp。浮點dsp的浮點運算用硬體來實作,可以在單周期内完成,因而其浮點運算處理速度高于定點dsp。而定點dsp隻能用定點運算模拟浮點運算。

德州儀器(ti)、美國模拟器件公司(adi)是全球dsp的兩大主要廠商。

ti的tms320? dsp平台包含了功能不同的多個系列,如2000系列、3000系列、4000系列、5000系列、6000系列,工程師也習慣稱其為2x、3x、4x、5x、6x。2010年5月,ti已經宣布為其c64x系列數字信号處理器與多核片上系統提供linux核心支援,以充分滿足通信與關鍵任務基礎設施、醫療診斷以及高性能測量測試等應用需求。ti也推出了軟體可程式設計多核arm + dsp soc,即keystone多核arm+dsp處理器,以滿足醫療成像應用、任務關鍵應用、測試和自動化應用的需求。

通用處理器和數字信号處理器也有互相融合以取長補短的趨勢,如數字信号控制器(dsc)即為mcu+dsp,adi的blackfin系列就屬于dsc。目前,晶片廠商也推出了許多arm+dsp的雙核以及多核處理器,如ti公司的omap 4平台就包括4個主要處理引擎:arm cortex-a9 mpcore、powervr sgx 540 gpu(graphic processing unit)、c64x dsp和isp(image signal processor)。

除了上面講述的通用微控制器和數字信号處理器外,還有一些針對特定領域而設計的專用處理器(asp),它們都是針對一些特定應用而設計的,如用于hdtv、adsl、cable modem等的專用處理器。

網絡處理器是一種可程式設計器件,它應用于電信領域的各種任務,如包處理、協定分析、路由查找、聲音/資料的彙聚、防火牆、qos等。網絡處理器器件内部通常由若幹個微碼處理器和若幹硬體協處理器組成,多個微碼處理器在網絡處理器内部并行處理,通過預先編制的微碼來控制處理流程。而對于一些複雜的标準操作(如記憶體操作、路由表查找算法、qos的擁塞控制算法、流量排程算法等),則采用硬體協處理器來進一步提高處理性能,進而實作了業務靈活性和高性能的有機結合。

對于某些應用場合,使用asic(專用內建電路)往往是低成本且高性能的方案。asic專門針對特定應用而設計,不具備也不需要靈活的程式設計能力。使用asic完成同樣的功能往往比直接使用cpu資源或cpld(複雜可程式設計邏輯器件)/fpga(現場可程式設計門陣列)來得更廉價且高效。

《Linux裝置驅動開發詳解 A》一一2.1 處理器

圖2.4 處理器分類

在實際項目的硬體方案中,往往會根據應用的需求選擇通用處理器、數字信号處理器、特定領域處理器、cpld/fpga或asic之一的解決方案,在複雜的系統中,這些晶片可能會同時存在,協同合作,各自發揮自己的長處。如在一款智能手機中,可使用mcu處理圖形使用者界面和使用者的按鍵輸入并運作多任務作業系統,使用dsp進行音視訊編解碼,而在射頻方面則采用asic。

綜合2.1節的内容,可得出如圖2.4所示的處理器分類。

繼續閱讀