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