汽車系統(tǒng)級(jí)芯片SoC的核心構(gòu)成包括CPU、GPU、AI加速器和片上總線及互聯(lián)。CPU目前主要是ARM架構(gòu),x86架構(gòu)和RISC-V架構(gòu)。ARM架構(gòu)占據(jù)絕大多數(shù)市場。
圖片來源:互聯(lián)網(wǎng)
這是2013年ARM初創(chuàng)期的商業(yè)模式,時(shí)至今日變化不大,只是更新速度大大加快了,基本上一年一個(gè)新架構(gòu)。ARM的半導(dǎo)體協(xié)作者主要是晶圓代工廠,二者需要相互支持,目前能跟上ARM步伐的只有臺(tái)積電和三星。
ARM授權(quán)分4個(gè)等級(jí)。
圖片來源:互聯(lián)網(wǎng)
從1到4授權(quán)費(fèi)依次遞增,可定制的深度依次遞增,開發(fā)難度依次遞增。想開箱即用,選POP IP,基本上可以直接給晶圓代工廠制作芯片,ARM已在各方面優(yōu)化過了,沒有任何改動(dòng)空間。想要公版架構(gòu)無法給與的差異化性能與體驗(yàn),上架構(gòu)授權(quán)是不二選擇。指令集是通過物理硬件晶體管寄存器嵌入進(jìn)架構(gòu)里的,它不像是一個(gè)軟件,更像是一個(gè)硬件。因此要獲得架構(gòu)授權(quán)就必須獲得指令集授權(quán),兩者無法分割。但如果不是架構(gòu)授權(quán),就無需獲得指令集授權(quán)。
圖片來源:互聯(lián)網(wǎng)
BoC是2016年特別為高通打造的授權(quán)方式,也叫Cortex授權(quán)。
圖片來源:互聯(lián)網(wǎng)
上圖為BoC與架構(gòu)授權(quán)之間的區(qū)別,據(jù)說只有高通使用。架構(gòu)授權(quán)是最高級(jí)的,難度也最高,價(jià)格也最貴,靈活程度最高,蘋果是架構(gòu)授權(quán)里做得最好的,改動(dòng)幅度最大,特別是前端和指令集窗口,都做了大幅度改動(dòng)。其他廠家也有改動(dòng),但改動(dòng)幅度很小,特別是前端幾乎沒有任何改動(dòng)。
圖片來源:互聯(lián)網(wǎng)
微架構(gòu)就是像A57、A78這樣的稱之為微架構(gòu)。微架構(gòu)分前端、執(zhí)行引擎和存儲(chǔ)系統(tǒng)三個(gè)組成部分。依照關(guān)鍵程度有譯碼寬度、緩存容量、ALU數(shù)量、發(fā)射端口、指令緩存。
這一節(jié)只講譯碼寬度。影響CPU算力最關(guān)鍵的參數(shù)是Decode Wide譯碼寬度,譯碼寬度可簡單等同于每周期指令數(shù)量即IPC,即每個(gè)周期完成多少個(gè)指令。
資料來源:互聯(lián)網(wǎng)
譯碼寬度的增加是非常困難的,不是想多少就多少的。簡單來說每增加一位寬度,系統(tǒng)復(fù)雜度便會(huì)提高15%左右,裸晶面積也就是成本會(huì)增加15-20%左右。如果簡單地增加譯碼寬度,那么成本也會(huì)上漲,廠家就缺乏更新的動(dòng)力,所以ARM的做法是配合臺(tái)積電和三星的先進(jìn)工藝,利用晶體管密度的提高來減少裸晶面積降低成本,因此ARM的每一次譯碼寬度升級(jí)均需先進(jìn)制造工藝的配合,否則成本增加比較多。同時(shí)ARM也從商業(yè)角度考慮,每年小升級(jí)一次,年年都有提升空間。8位寬度是目前的極限,蘋果一次到位使用8位寬度,缺點(diǎn)是必須使用臺(tái)積電最先進(jìn)的制造工藝,但蘋果依然使用的是ARM的指令集。
此外,RISC和CISC還有區(qū)別,CISC增加寬度更難,但CISC的1位寬度基本可頂RISC的1.2-1.5位。英特爾是有實(shí)力壓制蘋果的,就是制造工藝不如臺(tái)積電。CISC指令的長度不固定,RISC則是固定的。因?yàn)殚L度固定,可以分割為8個(gè)并行指令進(jìn)入8個(gè)解碼器,但CISC就不能,它不知道指令的長度。因此CISC的分支預(yù)測器比RISC要復(fù)雜很多,當(dāng)然目前RISC也有長度可變的指令。遇到有些長指令,CISC可以一次完成,RISC因?yàn)殚L度固定,就像公交車站,一定要在某個(gè)站停留一下,肯定不如CISC快。也就是說,RISC一定要跟指令集,操作系統(tǒng)做優(yōu)化,RISC是以軟件為核心,針對某些特定軟件做的硬件,而CISC相反,他以硬件為核心,針對所有類型的軟件開發(fā)的。
要全面理解微架構(gòu),我們先取一個(gè)簡化模型,如下圖。
典型CPU簡化架構(gòu)
資料來源:互聯(lián)網(wǎng)
程序控制:控制程序中指令執(zhí)行的順序。
操作控制:產(chǎn)生指令執(zhí)行所需的操作控制信號(hào),以控制執(zhí)行部件運(yùn)行。
時(shí)序控制:控制每個(gè)操作控制信號(hào)的開始和持續(xù)時(shí)間。
數(shù)據(jù)加工:對數(shù)據(jù)進(jìn)行運(yùn)算,在相關(guān)部件間傳送。
中斷處理:及時(shí)響應(yīng)內(nèi)部異常和外部中斷請求。
指令簡單流程,資料來源:互聯(lián)網(wǎng)
一條指令的執(zhí)行通常包括以下4個(gè)步驟: 取值(Fetch):CPU里的控制器查詢下一條指令的地址,并向存儲(chǔ)器發(fā)起請求;存儲(chǔ)器返回該地址對應(yīng)的存儲(chǔ)單元上的指令給控制器并存放到存放當(dāng)前指令的位置上,此時(shí)控制器更新下一條指令的地址。譯碼(Decode):控制器解析指令,將之轉(zhuǎn)化為一系列的控制信號(hào)(包括去哪里取運(yùn)算數(shù),對應(yīng)的運(yùn)算符,運(yùn)算結(jié)果的存放位置等)。執(zhí)行(Execute):根據(jù)譯碼的控制信號(hào)執(zhí)行指令,從存儲(chǔ)器的存儲(chǔ)單元或CPU內(nèi)部的通用寄存器上讀取運(yùn)算數(shù),然后根據(jù)指令規(guī)定的運(yùn)算符,讓運(yùn)算器進(jìn)行運(yùn)算。回寫(Write-back):根據(jù)指令要求,把運(yùn)算器的運(yùn)算結(jié)果存儲(chǔ)到某個(gè)通用寄存器上。
寄存器Register,寄存器是CPU內(nèi)部用來存放數(shù)據(jù)的一些小型存儲(chǔ)區(qū)域,用來暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果。其實(shí)寄存器就是一種常用的時(shí)序邏輯電路,但這種時(shí)序邏輯電路只包含存儲(chǔ)電路。寄存器的存儲(chǔ)電路是由鎖存器或觸發(fā)器構(gòu)成的,因?yàn)橐粋€(gè)鎖存器或觸發(fā)器能存儲(chǔ)1位二進(jìn)制數(shù),所以由N個(gè)鎖存器或觸發(fā)器可以構(gòu)成N位寄存器。寄存器是中央處理器內(nèi)的組成部分。寄存器是有限存儲(chǔ)容量的高速存儲(chǔ)部件,可用來暫存指令、數(shù)據(jù)和位址。在計(jì)算機(jī)領(lǐng)域,寄存器是CPU內(nèi)部的元件,包括通用寄存器、專用寄存器和控制寄存器。寄存器擁有非常高的讀寫速度,所以在寄存器之間的數(shù)據(jù)傳送非常快。
通常芯片設(shè)計(jì)也只是到寄存器這一級(jí),剩下的可以交給EDA工具自動(dòng)生成。
圖片來源:互聯(lián)網(wǎng)
IR (instructionregister指令寄存器):即存放當(dāng)前指令的位置
PC (programcounter程序計(jì)數(shù)器):存放下一條指令的地址,可以自增更新下一條地址,即指令備忘錄
MAR (memoryaddress register存儲(chǔ)器地址寄存器):存放當(dāng)前訪問的存儲(chǔ)單元的地址
圖片來源:互聯(lián)網(wǎng)
這些控制信號(hào)在持續(xù)時(shí)鐘脈沖的同步下去控制CPU中各個(gè)控制部件的動(dòng)作
圖片來源:互聯(lián)網(wǎng)
算術(shù)運(yùn)算:加、減、乘、除、開方、平方、倒數(shù),邏輯運(yùn)算:與、或、非、異。算術(shù)運(yùn)算可以拆解為眾多個(gè)加法,更絕對一點(diǎn)兒說,計(jì)算的一切,也就只有加法。邏輯運(yùn)算近似于函數(shù)運(yùn)算。計(jì)算機(jī)一般采用二進(jìn)制,和就是'異/或’門,進(jìn)位就是'與’門。這樣用門電路就設(shè)計(jì)出一個(gè)加法器。只考慮了向后進(jìn)位,而沒有考慮前一個(gè)數(shù)皆進(jìn)位,因此我們稱這種裝置為半加器。如果將前一個(gè)進(jìn)位考慮進(jìn)來,只需再多一個(gè)半加器就可以了,這就是全加器。
圖片來源:互聯(lián)網(wǎng)
聯(lián)系客服