芯片詳細講解,從而區分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU

目錄

芯片的概念結構

芯片的派系劃分

通用芯片(CPU,MPU,GPU,DSP)

定制芯片(FPGA,ASIC)

芯片之上的集成(MCU,SOC,ECU)

軟硬件的匹配設計


芯片的概念結構

打個比方,假如芯片是一個“銀行”,這個銀行很小就兩個人。

一個負責撥算盤(計算),其他它都不管。

一個負責記錄文檔(存儲),把“算什么?”(數據)和“咋么算?”(程序)都完整的用文檔記錄下來,方便和撥算盤的人溝通。

他們之間定義了一個溝通方式(一組總線),內容包括了“文檔從哪里取?放回哪里?”(尋址總線)和“文檔具體內容是什么?”(數據總線)兩大部分,換句話說,一組總線包括一個地址總線和一個數據總線。特別注意這里的總線上的“數據”對應著一份文檔,不要和文檔里 “算什么?”的這個數據概念混淆了。

當下芯片結構是復雜的,但簡單劃分就三種概念結構。馮.諾依曼結構,哈弗結構和改進哈弗結構。

馮.諾依曼結構: 客戶把原始的需求文檔(包含輸入數據和程序)交給負責記錄的人后,根據定義的溝通方式,和負責實際計算的人一起反復來回的傳遞文檔(拿程序指令,拿數據,返結果),最后把最終的計算結果通過記錄的人反饋給客戶。上面這種分工思路就是馮.諾依曼結構的核心,關鍵的特點就是客戶只用和一個記錄人員溝通就行,再復雜的需求都可以一股腦的給一個人,剩下的都是他們之間的事。整個過程非常靈活,這也是馮.諾依曼結構的最大優勢。這種結構下程序指令存儲地址和數據存儲地址指向同一存儲器的不同物理位置,因此程序指令和數據的寬度相同。但這種方式效率不高,因為記錄的人每個時刻只能干一件事,要么告訴撥算盤的人咋么算,要么告訴它算什么。

哈弗結構:因此出現了哈佛結構,將程序指令和數據分開存儲,指令和數據可以有不同的數據寬度。采用了獨立的一組程序總線和一組數據總線。這就相當于原來2個人,現在三個人,記錄員分了個工,一個就負責記錄傳遞計算方法(程序),一個人就負責記錄傳遞計算內容(數據)。兩個人和撥算盤的人點對點溝通,但相互之間老死不往來。這種并行化自然提高了效率,原來要至少兩個周期做完的事,一個周期就搞定了。可這種方法讓客戶要同時對應2個毫無聯系的記錄員這非常不友好。且如果需求側重點不同,兩個人的工作量常常不均衡導致浪費,如果由一個人擔當(馮.諾依曼結構),這些問題都不存在。

改進哈弗結構:為了解決這個平衡問題出現了改進哈弗結構。它只有一組總線供程序存儲器和數據存儲器分時共用。原來的哈佛結構需要4條(2組)總線,改進后需要兩條(1組)總線,且保留了兩個獨立并行的存儲器。也就是說,記錄員還是為了效率做了分工,但溝通方式升級,走上了“敏捷之路”。不再是兩兩溝通的老國企做派,把客戶和撥算盤的人也加入進來做了個四方溝通會(分時公用),歸口統一保證了靈活性,同時分時也對并行化影響不大。

芯片的派系劃分

接著我們聊下芯片的分類,梳理分類首先要區分芯片的兩個大類:

通用芯片(CPU, GPU, DSP等)和定制芯片(FPGA, ASIC等),這個大類劃分很重要,兩者有本質上的不同。同樣用銀行做比喻,通用芯片就是“銀行柜員”而定制芯片就是“ATM機”。

通用芯片

通用芯片關鍵是“通用”二字,這意味著其必須具備處理各式各樣千奇百怪的指令要求,并且經常同時存在多個外部設備的請求,它必須擁有隨時中止目前的運算轉而進行其他運算,完成后再從中斷點繼續當前運算的能力。就好比銀行柜員,客戶要辦的業務千奇百怪,時常還來個缺德的插隊罵娘或者站著位置不走撩你兩下的人存在。柜員都要應對。而為了做到這一點通用芯片有復雜的控制取指譯碼流程,Cache內存分級機制(緩和高速CPU與低速內存的臨時指令存儲器),真正的計算單元ALU只占了通用芯片不大的一部分,更多設計是為了靈活性存在的,在計算效率和通用性上的權衡上犧牲前者選擇后者。

當我們在討論芯片結構的時候更多的是在討論通用芯片的結構,是在討論說滿足客戶變化需求的時候,哪種“人員組織形式和溝通方式”是最高效的。

定制芯片

而定制芯片就是完全的另一個概念,雖然它也有結構思想在里面,但是就像你不會去討論一個程序的“人員組織架構”一樣,在這種芯片里根本就沒有時序中斷,取指譯碼這些為了靈活性而設計的概念。相比通用芯片,定制芯片是沒有“人性”的,就是一個ATM機,其給客戶定義了清晰的操作流程,省去了中斷等大量靈活性設計,撩小姐姐的一套對機器人是不成立。

打個比方,比如一個比大小的邏輯用馮諾依曼結構的CPU至少需要幾條指令完成,但用FPGA就根本不用考慮時序周期,只要串聯幾個邏輯單元,在一個周期就搞定了。但如果再增加幾個邏輯,CPU還是在相同邏輯資源下用幾個指令完成,但是FPGA 就需要額外占用另一部分邏輯資源完成計算。再比如FPGA和GPU(GPU是通用芯片)在并行化上有類似的思想,但兩者實際沒有多少可比性,你不會把三個柜員的辦理通道和ATM機理存在在三個恰好并行的流程做比較一樣。還有人在信號處理效率上把DSP和FPGA拿出來對比,我覺得這些零零種種的比較都沒有太大意義。為靈活性存在的“人”(通用芯片),和為效率存在的“機器”(定制芯片)是兩個維度的事情,不要從性能上去強行比較。

從這里我們可以大致看出來,兩者的幾個重要差異。定制芯片是對已經固化的業務進行降本增效,就像銀行用ATM機,代替成本更高的柜員處理一些常規銀行業務。而通用芯片是為了對一些無法或者暫時沒有固化的業務作出的靈活設計。兩者沒有優劣之分。

通用芯片(CPU,MPU,GPU,DSP)

CPU和MPU可以簡單理解為一個概念,只是理解范疇上的區別。

CPU和GPU之間的區別更多的是核的數量。

CPU雖然有多核,但基本不超過兩位數,每個核都有足夠大的緩存和足夠多的數字和邏輯運算單元,并有更復雜的邏輯判斷硬件,就像銀行里常備的3-4個柜臺的柜員,擅長處理客戶很復雜的業務。

而GPU的核數遠超CPU,每個核擁有的緩存大小相對小,數字邏輯運算單元也少而簡單,更像是500多個電話客服柜員,處理一些相對簡單但數量眾多的客戶業務。

DSP(數字信號處理芯片)是一類特殊的CPU,采用了上面說的哈佛結構,且存在專用的硬件算法電路和專門的尋址模式。它具有通用芯片設計的靈活性,但在實時運算過程中很少變化,因此特化了業務流程的性能(記錄和計算過程)。就像是某個辦理“外匯存取”的專業柜臺會部署一些特化的柜員和流程。DSP對于專用信號(視頻編解碼,通訊信號)的處理能力遠遠的優于一般CPU。當然普通柜臺也可以處理展業柜臺的業務,但性價比就很差了,如果需求很多開設專門的柜臺就變得有意義,這些還是和客戶需求有關。用DSP處理專門的信號流常具有執行時間可控,芯片性價比高等優點。

定制芯片(FPGA,ASIC)

講完了通用芯片,定制芯片也有兩個主要方向,FPGA和ASIC。兩者核心的區別就是固化程度。FPGA仍然具有一定的靈活性(但遠遜于通用芯片),而ASIC則是完成固化的設計(也存在和FPGA類似的部分編輯的產品存在)。類似可以編程的ATM機和完全固化的ATM機,兩者區別最大的維度還是成本和功耗。

FPGA最早是從專用集成電路發展而來的半定制化的可編程電路,是高端的CPLD (Complex Programmable Logic Device復雜可編程邏輯器件)。FPGA可以實現一個DSP, GPU甚至是CPU的功能,就像之前說的把柜員業務固化為ATM機操作流程一樣。但不是說FPGA可以代替CPU,這是設計目的上的大方向差異,反復強調。

FPGA是一堆邏輯門,通過硬件描述語言HDL把它轉成電路連接,從最基本的邏輯門層面上連接成電路。雖然看起來像一塊CPU,其實是完全硬件實現的。根據一個固定的模式來處理輸入的數據然后輸出。FPGA片上大部分都是計算單元,沒有控制單元并不代表FPGA不會執行指令,事實上FPGA里控制單元的角色由單元和單元之間可編程邏輯連接線來完成的,通過HDL編程更改每個單元的運算邏輯和單元之間的連接方式,從而使其達到和一般的運行程序差不多的效果。由于省去了CPU的取指和譯碼兩個步驟,FPGA重復運行相同代碼的效率得到了極大的提高,也因此,其無法應對沒有被編程過的指令。

ASIC就是專用IC,沒有明確的定義。可以理解為除了單片機、DSP、FPGA之類的能叫出名的IC,剩下的都是ASIC。ASIC原本就是專門為某一項功能開發的專用集成芯片。后來ASIC發展了一些,稱為半定制專用集成電路,相對來說更接近FPGA,甚至在某些地方,ASIC是個大概念,FPGA屬于ASIC的一部分,也常常被作為ASIC開發的預研。其代表了在需求一定的情況下,對性價比的極致追求。

芯片之上的集成(MCU,SOC,ECU

在上面我偷偷遺漏了一個概念MCU,原因是其本身不是一種芯片類型而是一種集成方式,SOC芯片也是同樣的道理,兩者的區別是程度上的不同。

在自動駕駛汽車領域MCU更多的是集成了更多的輸入和輸出設備在芯片當中,方便更好的控制,因此叫做微控制器而不是微處理器。而SOC是在更高的層面上將不同的芯片做了進一步的集成,維度更高。如果MCU是一種人員組織最終形成一個公司對外服務,那SOC更像是公司級別的組織形成了一個行業對外服務。

單片機是MCU的通俗說法,經典的51系列就是一堆IO口,后來慢慢的把常用的PWM, AD之類的功能加入了單片機之中。其構成等價于一個帶了更多外設CPU,但側重點是討論其外設的部分。

在PWM,AD等之上繼續發展其外設也就形成了汽車行業熟悉的ECU即電子控制單元,同時泛指汽車上所有電子控制系統,可以是轉向ECU,空調ECU等。

ECU一般由MCU,擴展內存,擴展輸入和輸出(CAN/LIN,AD,PWM等),電源電路和其他一些電子元器件組成,特定功能的ECU還帶有諸如紅外線收發器、脈沖發生器,強弱電隔離等元器件。整塊電路板設計安裝與一個鋁質盒內,通過卡扣或者螺釘方便安裝于車身鈑金上。

在輸入處理電路中,ECU的輸入信號主要有三種形式,模擬信號、數字信號(包括開關信號)、脈沖信號。模擬信號通過A/D轉換為數字信號提供給微處理器。

在輸出電路中,微處理器輸出的信號往往用作控制電磁閥、指示燈、步進電機等執行件。微處理器輸出信號功率小,使用+5v的電壓,汽車上執行機構的電源大多數是蓄電池,需要將微處理器的控制信號通過輸出處理電路處理后(D/A,放大等)再驅動執行機構。

電源電路中,傳統車的ECU一般帶有電池和內置電源電路,以保證微處理器及其接口電路工作在+5v的電壓下。即使蓄電池電壓有較大波動時,也能提供穩定電壓保證系統的正常工作。

一般搭載8位MCU的ECU主要應用于風扇控制、空調控制、雨刷、天窗、門控等較低階的控制功能。

16位MCU主要應用如引擎控制、齒輪與離合器控制等。

32位MCU應用于多媒體信息系統,實時性的安全動力系統以及復雜的X-by-wire等傳動功能。

更復雜的功能就不在MCU或者ECU的討論范圍內了。

隨著自動駕駛的發展,ECU的概念進一步升級,更為流行的說法是域控制器,其無外乎就是把MCU變成了SoC(片上系統),同時集成了更多的外圍設備而已。目前域控制器搭載的主流通用芯片(GPP)多采用SoC的芯片設計方法,通過HDL語言在SoC內由電路集成各種功能芯片。在SoC中各種組件(IP核)采用類似搭積木的方法組合在一起。IP核(諸如典型的ARM內核設計技術)被授權給數百家半導體廠商,做成不同的SoC芯片。還可能集成GPU、編解碼器(DSP)、GPS、WiFi藍牙基帶等一系列功能。

如果看一下高通或者TI的芯片,基本是:

一個ARM核控制整體運算.

一個DSP處理語音編解碼

一個GPU負責圖像運算

一個基帶和天線處理模塊負責通信

以及GPS,安全加密等林林總總的特殊芯片。

過去極端情況下自動駕駛的原型處理器功耗可以高達5000W,不僅昂貴且需要搭載額外的散熱裝置。SoC和ASIC的發展給我們帶來很多啟示,回到我經常提及的貫穿整個自動駕駛系統的靈活性。在新的SoC世界里,你不會從不同的供應商那里組裝物理元件。相反,你從不同的供應商那里組裝IP從而獲得更好的集成度,也因此更容易降低功耗和成本。

軟硬件的匹配設計

大部分自動駕駛算法公司都想定制或自制ASIC/SOC計算平臺,原因還有另一個層面來源于軟硬件的匹配問題。算法的性能與硬件設計往往脫離不開。追求模塊化就要犧牲利用率。要提高利用率就需要軟硬件一體設計。你的算法是用GPU合適還是CPU合適,網絡模型一次用多少內存又同時使用多少MAC,由此來設計芯片。或者說反過來給定一個芯片,我的算法要如何兼容,是否要減少內存訪問次數提高利用率,還是要遷移部分CPU基于規則的算法,改為用GPU基于深度學習來實現。軟硬件一起考慮往往才能充分利用好系統性能。

不同的芯片,不同的算法和需求,往往有最優的組合方式。比如一個經典底層而常用的算法應用,需求是大量的且競爭是激烈的時候,ASIC就是很好的選擇。為了一個簡單功能(比如編解碼)支付一個ARM的授權是愚蠢的。

如果算法非常經典且底層,但仍然有改進的空間和需要適配的不同場景,信號流的處理(手機語音處理)可以直接使用DSP,而更復雜的輸入輸出邏輯算法(比如圖像SIFT特征處理),就可以交給FPGA來做,性能相對于CPU都可以由30-100倍的提升,且成本和耗能更小。

在復雜算法領域相對于CPU,GPU的眾核架構把同樣的指令流并行發送到眾核上,采用不同的輸入數據執行。所以GPU比CPU更適合并行算法,而串行的復雜規則邏輯則更適合CPU處理。更具體的說,如果標量視為零階張量,矢量視為一階張量,矩陣視為二階張量。

CPU對應標量計算,主要是路徑規劃和決策類算法,常用的傳感器融合如卡爾曼濾波算法也多是標量運算。用CPU編寫程序時,更適合通過精益化邏輯來提升性能。

GPU則對應矢量或者說向量計算,包括點云,地圖,深度學習,核心是矩陣運算。用GPU編寫程序時,則更合適利用算法并發處理來提升性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65585.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運動相機拍攝的視頻打不開怎么辦

3-10 GoPro和大疆DJI運動相機的特點,小巧、高清、續航長、拍攝穩定,很多人會在一些重要場合用來拍攝視頻,比如可以用來拿在手里拍攝快速運動中的人等等。 但是畢竟是電子產品,有時候是會出點問題的,比如意外斷電、摔重…

智能化文檔開發(DI)

這個文檔涉及到多模態(文本、發票、訂單、語音) 對于普通的文本,我們希望對某些實體的某些屬性挖空生成文檔模版,并根據預設字段填空最后生成正式文件對于發票、訂單,我們想提取它的字段信息,寫入DB對于一些…

CSS語言的編程范式

CSS語言的編程范式 引言 在現代網頁開發中,CSS(層疊樣式表)作為一種樣式語言,承擔著網站前端呈現的重要角色。無論是簡單的靜態網頁還是復雜的單頁應用,CSS都在人機交互中發揮著至關重要的作用。掩蓋在美觀背后的&am…

【輕松學C:編程小白的大冒險】--- C語言簡介 02

在編程的藝術世界里,代碼和靈感需要尋找到最佳的交融點,才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里,我們將共同追尋這種完美結合,為未來的世界留下屬于我們的獨特印記。 【輕松學C:編程小白的大冒險】…

零基礎 監控數據可視化 Spring Boot 2.x(Actuator + Prometheus + Grafana手把手) (上)

一、安裝Prometheus Releases prometheus/prometheus GitHubhttps://github.com/prometheus/prometheus/releases 或 https://prometheus.io/download/https://prometheus.io/download/ 1. 下載適用于 Windows 的二進制文件: 找到最新版本的發布頁面&#xf…

Idea日志亂碼

問題描述 前提:本人使用windows Idea運行sh文件,指定了utf-8編碼,但是運行過程中還是存在中文亂碼 Idea的相關配置都已經調整 字體調整為雅黑 文件編碼均調整為UTF-8 調整Idea配置文件 但是還是存在亂碼,既然Idea相關配置已經…

Linux 注冊線程化的中斷處理程序

1. 注冊線程化中斷處理函數 devmem_request_threaded_irq 是 Linux 內核中的一個函數,用于請求并注冊一個線程化的中斷處理程序。這個函數允許開發者注冊一個中斷處理函數,這個函數會在中斷發生時被調用,從而實現相應的中斷處理邏輯。它通過…

MySQL 數據表與索引設計藝術:打造高效數據存取架構

🐇明明跟你說過:個人主頁 🏅個人專欄:《MySQL技術精粹》🏅 🔖行路有良友,便是天堂🔖 目錄 一、引言 1、什么是MySQL 2、MySQL適用場景 二、MySQL的數據存儲與檢索 1、數據表…

安卓硬件加速hwui

安卓硬件加速 本文基于安卓11。 從 Android 3.0 (API 級別 11) 開始,Android 2D 渲染管道支持硬件加速,這意味著在 View 的畫布上執行的所有繪圖操作都使用 GPU。由于啟用硬件加速所需的資源增加,你的應用程序將消耗更多內存。 軟件繪制&am…

海信116英寸RGB-Mini LED:一朵綻放在科技穹頂的中國花火

東方古鎮的打鐵花,拉斯維加斯的煙花秀,盛大的花火表演總會在歲末年初的時候,吸引世界各地人們的目光。一年一度的科技展會,也起到煙花秀一樣的作用,讓人們提前望見未知的精彩。 CES還沒開始,CES 2025展會的…

超簡單,使用Kube-Vip實現K8s高可用VIP詳細教程

具體步驟如下: 以下步驟在其中一個 master 上操作即可, 1、參數配置 export VIP192.168.0.110 export INTERFACEens33 export KVVERSIONv0.8.7VIP 是虛擬IP地址,和主機同一個網段,且未被占用。INTERFACE 是你當前主機的網絡接口…

積分漏斗模型中5個指標統計

緣起 最近遇到一個積分漏斗模型的設計,這里記錄一下。以防止以后忘記了。其中畢竟關鍵的屬性是: 獲得積分可用積分已有積分 積分漏斗模型 這里隨著【當前日期】也就是今天日期。隨著時間一天天過去,積分也一天天過去。上面那個【填報時間】…

Ubuntu掛載Windows 磁盤,雙系統

首先我們需要在終端輸入這個命令,來查看磁盤分配情況 lsblk -f 找到需要掛載的磁盤,檢查其類型( 我的/dev/nvme2n1p1類型是ntfs,名字叫3500winData) 然后新建一個掛載磁盤的目錄,我的是/media/zeqi/3500wi…

程序血緣分析技術在工商銀行軟件工程中的應用

當前,隨著軟件領域技術更新換代速度的日益加快,市場需求也變得更加多樣化和個性化,業界普遍通過加速產品迭代來滿足客戶需求,但在此過程中也暴露出一些研發管理痛點問題,如服務和程序類資產信息分散于各個不同的應用和系統中,信息歸集費時費力;設計、開發和測試人員無法…

微信小程序中 隱藏scroll-view 滾動條 網頁中隱藏滾動條

在微信小程序中隱藏scroll-view的滾動條可以通過以下幾種方法實現: 方法一:使用CSS隱藏滾動條 在小程序的樣式文件中(如app.wxss或頁面的.wxss文件),添加以下CSS代碼來隱藏滾動條: scroll-view ::-webkit…

服務器證書不受信任是什么問題?

用戶在訪問某些網站時,可能會遇到“服務器證書不受信任”的警告。這一問題不僅影響用戶的瀏覽體驗,更可能對網站的信譽和安全性產生深遠影響。那么服務器證書不受信任是什么問題呢? 服務器證書的基本概念 服務器證書是由證書頒發機構(CA)簽…

【AI游戲】使用強化學習玩 Flappy Bird:從零實現 Q-Learning 算法(附完整資源)

1. 引言 Flappy Bird 是一款經典的休閑游戲,玩家需要控制小鳥穿過管道,避免碰撞。雖然游戲規則簡單,但實現一個 AI 來自動玩 Flappy Bird 卻是一個有趣的挑戰。本文將介紹如何使用 Q-Learning 強化學習算法來訓練一個 AI,使其能夠…

Web滲透測試之XSS跨站腳本攻擊 跨域是什么?同源機制又是什么? cors以及Jsonp是什么 一篇文章給你說明白

目錄 Cookie的Httponly屬性和逃過方式 瀏覽器同源機制 cors跨域和jsonp跨域和跨域標簽 Cors跨域 - 跨源 Jsonp 跨域 jsonp跨域原理: 說明: Cookie的Httponly屬性和逃過方式 Xss攻擊手段 最常用的目的獲取cookie Cookie中設置了 httponlyTrue 方式js操作獲…

【C++】字符串的 += 和 + 運算詳解

博客主頁: [小????????] 本文專欄: C 文章目錄 💯前言💯1. 字符串的 和 基本用法1.1 的用法1.2 的用法 💯2. 示例代碼的剖析與解釋代碼分析 💯3. 底層實現與性能分析3.1 的實現原理3.2 的實現原理3.…

CCLINK轉MODBUS-TCP協議轉換網關模塊應用案例

大家好,今天我們要聊的是生產管理系統中的CCLINK和MODBUS-TCP協議,它們的不同使得數據互通比較困難,但捷米特JM-CCLK-TCP網關的出現改變了這一切。 為了實現整個生產線的協同工作,需要這些設備之間能夠進行有效的數據交換和指令傳…