0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPU的原理介紹和如何設(shè)計和生產(chǎn)CPU的詳細(xì)資料說明

電子工程師 ? 來源:未知 ? 2019-05-26 10:06 ? 次閱讀

我們都認(rèn)為CPU是計算機的“大腦”,但這到底是什么意思呢?用數(shù)十億個晶體管讓你的計算機工作到底是怎么回事?在這篇文章中,我們將專注于計算機硬件設(shè)計,涵蓋計算機工作原理的來龍去脈。

文章將涵蓋計算機架構(gòu)、處理器電路設(shè)計、超大規(guī)模集成電路VLSI)、芯片制造和未來的計算趨勢。如果你一直對處理器內(nèi)部工作原理的細(xì)節(jié)感興趣,請繼續(xù)關(guān)注,因為這就是你想要了解的內(nèi)容。

CPU的原理

我們將從一個非常高的層次開始,了解處理器的功能,以及各個組成部分在功能設(shè)計中是如何組合在一起的。這包括處理器內(nèi)核、內(nèi)存層次結(jié)構(gòu)、分支預(yù)測等等。首先,我們需要知道CPU的基本定義。最簡單的解釋是CPU遵循一組指令,對一組輸入執(zhí)行某些操作。例如,可能是從內(nèi)存中讀取一個值,然后將其加上另一個值,最后將結(jié)果存儲在不同位置的內(nèi)存中。如果前一次計算的結(jié)果大于零,那么也可能是更復(fù)雜的事情,如將兩個數(shù)字相除。

當(dāng)你想要運行一個像操作系統(tǒng)或游戲這樣的程序時,程序本身就是CPU要執(zhí)行的一系列指令。這些指令從內(nèi)存中加載,并在一個簡單的處理器上逐一執(zhí)行,直到程序完成。當(dāng)軟件開發(fā)人員用高級語言(如C++Python)編寫程序時,處理器無法理解。它只能理解1和0,所以我們需要一種方式來表示這種格式的代碼。

程序被編譯成一組稱為匯編語言的低級指令,作為指令集體系結(jié)構(gòu)(ISA)的一部分。這是CPU用來理解和執(zhí)行的一組指令。一些最常見的ISA是x86、MIPS、ARM、RISC-V和PowerPC。就像用C++編寫函數(shù)的語法與用Python編寫相同函數(shù)的語法不同一樣,每種ISA也有不同的語法。

這些ISA可以分為兩大類:固定長度和可變長度。RISC-V ISA使用固定長度的指令,這意味著每條指令中一定數(shù)量的預(yù)定義位決定了它是哪種類型的指令。這與x86不同,x86使用可變長度指令。在x86中,指令可以按照不同的方式進(jìn)行編碼,并且針對不同的部分使用不同的位數(shù)。由于這種復(fù)雜性,x86 CPU中的指令解碼器通常是整個設(shè)計中最復(fù)雜的部分。

固定長度的指令允許更容易的解碼,因為它們有規(guī)則的結(jié)構(gòu),但限制了ISA可以支持的總指令數(shù)。雖然普通版本的RISC-V架構(gòu)有大約100條指令,而且是開源的,但是x86是專有的,沒有人知道究竟有多少條指令。人們通常認(rèn)為有幾千條x86指令,但確切的數(shù)字并不公開。 盡管ISA之間存在差異,但它們都具有基本相同的核心功能。

一些RISC-V指令的示例。右邊的操作碼是7位,它決定了指令的類型。每條指令還包含要使用的寄存器和要執(zhí)行的功能的位。這就是匯編指令如何被分解成二進(jìn)制以便CPU理解。

現(xiàn)在我們準(zhǔn)備好打開計算機,開始運行程序。指令的執(zhí)行實際上有幾個基本部分,這些部分通過處理器的許多階段分解。

第一步是將指令從內(nèi)存提取到CPU中開始執(zhí)行。第二步對指令進(jìn)行解碼,以便CPU能夠確定它是什么類型的指令。有很多類型,包括算術(shù)指令、分支指令和內(nèi)存指令。一旦CPU知道它正在執(zhí)行的指令類型,就從CPU中的存儲器或內(nèi)部寄存器收集指令的操作數(shù)。如果你想把數(shù)字A和數(shù)字B相加,在你真正知道A和B的值之前不能進(jìn)行相加。大多數(shù)現(xiàn)代處理器都是64位的,這意味著每個數(shù)據(jù)值的大小都是64位。

64位是指CPU寄存器、數(shù)據(jù)路徑,以及內(nèi)存地址的寬度。對于普通用戶來說,這意味著一臺計算機一次可以處理多少信息,最好與較小的32位體系結(jié)構(gòu)相比較來理解。64位體系結(jié)構(gòu)一次處理的信息位數(shù)是32位的兩倍。

在CPU有了指令的操作數(shù)之后,就移動到執(zhí)行階段,在此階段對輸入執(zhí)行操作??赡苁菍?shù)字相加,對數(shù)字執(zhí)行邏輯操作,或者只是傳遞數(shù)字而不對其進(jìn)行修改。計算結(jié)果后,可能需要訪問內(nèi)存來存儲結(jié)果,或者CPU可以將值保存在其內(nèi)部寄存器中。存儲結(jié)果后,CPU將更新各個元素的狀態(tài),然后轉(zhuǎn)到下一條指令。

當(dāng)然,這種描述是極大的簡化,大多數(shù)現(xiàn)代處理器將把這幾個階段分解為20個或更多更小的階段,以提高效率。這意味著盡管處理器將在每個周期中啟動和完成多個指令,但是任何一條指令從開始到結(jié)束可能需要20個或更多的周期。這個模型通常被稱為流水線,因為它需要一段時間來填充流水線,讓液體通過流水線,但是一旦流水線滿了,就會得到一個恒定的輸出。

4級流水線示例。彩色方框表示相互獨立的指令。(圖片來源:維基百科)

指令經(jīng)過的整個周期是一個非常精心編排的過程,但并非所有指令都可以同時完成。例如,加法非???,而除法或從內(nèi)存加載可能需要數(shù)百個周期。大多數(shù)現(xiàn)代處理器都是無序執(zhí)行的,而不是在一條緩慢的指令完成時使整個處理器停止運行。這意味著處理器將確定在給定時間執(zhí)行哪條指令最有益,并緩沖其他未準(zhǔn)備好的指令。如果當(dāng)前指令尚未就緒,則處理器可以在代碼中向前跳轉(zhuǎn),以查看是否有其他指令準(zhǔn)備就緒。

除了無序執(zhí)行之外,典型的現(xiàn)代處理器還采用了所謂的超標(biāo)量體系結(jié)構(gòu)(superscalar architecture)。這意味著在任何時候,處理器都在流水線的每個階段同時執(zhí)行許多指令。它可能還在等待數(shù)百條指令開始執(zhí)行。為了能夠一次執(zhí)行許多指令,處理器將在每個流水線階段中包含多個副本。如果處理器看到兩條指令已經(jīng)準(zhǔn)備好執(zhí)行,并且它們之間沒有依賴關(guān)系,那么它將同時執(zhí)行這兩條指令,而不是等待它們分別完成。這種方法的一個常見實現(xiàn)稱為同步多線程(SMT),也稱為超線程。英特爾AMD處理器目前支持雙向SMT,而IBM已開發(fā)出支持多達(dá)八路SMT的芯片

為了完成這種精心編排的執(zhí)行,處理器除了基本核心之外還有許多額外的元素。在一個處理器中有數(shù)百個單獨的模塊,每個模塊都有特定的用途,但我們將只簡單介紹一下基本的功能。兩個最大和最有益的是緩存和分支預(yù)測器。我們不會涉及重新排序緩沖區(qū)、寄存器別名表和保留站這些結(jié)構(gòu)。

緩存的目的常常令人困惑,因為它們像RAM或SSD一樣存儲數(shù)據(jù)。緩存的不同之處在于它們的訪問延遲和速度。盡管RAM非???,但對于CPU來說,它的速度慢了幾個數(shù)量級。RAM可能需要數(shù)百個周期才能對數(shù)據(jù)做出響應(yīng),處理器可能會陷入無事可做的境地。如果數(shù)據(jù)不在RAM中,則可能需要數(shù)萬個周期才能訪問SSD上的數(shù)據(jù)。沒有緩存,我們的處理器就會陷入停頓。

處理器通常具有三級緩存,形成所謂的內(nèi)存層次結(jié)構(gòu)。L1緩存最小且速度最快,L2位于中間,L3是最大且最慢的緩存。在層次結(jié)構(gòu)中的緩存之上是小型寄存器,在計算期間存儲單個數(shù)據(jù)值。這些寄存器是系統(tǒng)中速度最快的存儲設(shè)備。當(dāng)編譯器將高級程序轉(zhuǎn)換成匯編語言時,它將確定使用這些寄存器的最佳方法。

當(dāng)CPU從內(nèi)存中請求數(shù)據(jù)時,它將首先檢查該數(shù)據(jù)是否已經(jīng)存儲在L1緩存中。如果是,則可以在幾個周期內(nèi)快速訪問數(shù)據(jù)。如果不存在,CPU將檢查L2緩存并隨后搜索L3緩存。緩存的實現(xiàn)方式通常對核心是透明的。核心只需要在指定的內(nèi)存地址中請求一些數(shù)據(jù),層次結(jié)構(gòu)中的任何級別都將響應(yīng)它。當(dāng)我們進(jìn)入內(nèi)存層次結(jié)構(gòu)的后續(xù)階段時,大小和延遲通常會增加幾個數(shù)量級。最后,如果CPU在任何緩存中都找不到它要查找的數(shù)據(jù),那么它就會進(jìn)入主內(nèi)存(RAM)。

在典型的處理器上,每個核心將有兩個L1緩存:一個用于數(shù)據(jù)緩存,一個用于指令緩存。L1緩存的總?cè)萘客ǔT?00KB左右,大小可能因芯片和代際而異。每個核心通常也有一個L2緩存,盡管在某些體系結(jié)構(gòu)中,它可能在兩個核心之間共享。L2緩存通常為幾百KB。最后,還有一個L3緩存在所有核心之間共享,大小為幾十MB。

當(dāng)處理器執(zhí)行代碼時,它最常用的指令和數(shù)據(jù)值將被緩存。這極大地加快了執(zhí)行速度,因為處理器不需要不斷地訪問主存來獲取所需的數(shù)據(jù)。在本系列的第2部分和第3部分中,我們將更多地討論如何實現(xiàn)這些內(nèi)存系統(tǒng)。

除了緩存之外,現(xiàn)代處理器的另一個關(guān)鍵組件是精確的分支預(yù)測器。分支指令類似于處理器的“if”語句。如果條件為真,將執(zhí)行一組指令,如果條件為假,將執(zhí)行另一組指令。例如,你可能想比較兩個數(shù)字,如果它們相等,則執(zhí)行一個函數(shù),如果它們不同,則執(zhí)行另一個函數(shù)。這些分支指令非常常見,大約占程序中所有指令的20%。

從表面上看,這些分支指令似乎沒什么問題,但對于處理器來說,它們實際上非常具有挑戰(zhàn)性。因為在任何時候,CPU可能同時執(zhí)行10條或20條指令,所以知道要執(zhí)行哪條指令是非常重要的。可能需要5個周期來確定當(dāng)前指令是否為分支,另外需要10個周期才能確定條件是否為真。在此期間,處理器可能已經(jīng)開始執(zhí)行許多附加指令,甚至不知道這些指令是否是要執(zhí)行的正確指令。

為了解決這個問題,所有現(xiàn)代高性能處理器都使用了一種稱為“推測”(speculation)的技術(shù)。這意味著處理器將跟蹤分支指令,并猜測是否將采用分支。如果預(yù)測是正確的,那么處理器已經(jīng)開始執(zhí)行后續(xù)指令,因此這將帶來性能提升。如果預(yù)測不正確,那么處理器將停止執(zhí)行,刪除已經(jīng)開始執(zhí)行的所有錯誤指令,并從正確的位置重新開始。

這些分支預(yù)測器(branch predictors )是機器學(xué)習(xí)的一些早期形式,因為預(yù)測器在運行過程中學(xué)習(xí)分支的行為。如果預(yù)測錯誤太多,它就會開始學(xué)習(xí)正確的行為。幾十年來對分支預(yù)測技術(shù)的研究已經(jīng)使現(xiàn)代處理器的準(zhǔn)確率超過90%。

雖然推測帶來了巨大的性能提升,因為處理器可以執(zhí)行準(zhǔn)備好的指令,而不必在繁忙的指令上排隊,但也暴露了安全漏洞。著名的幽靈攻擊(Spectre attack)就是利用了分支預(yù)測和猜測中的漏洞。攻擊者使用經(jīng)特殊設(shè)計的代碼來使處理器推測性地執(zhí)行會泄漏內(nèi)存值的代碼。推測的某些方面必須重新設(shè)計,以確保數(shù)據(jù)不會泄露,這導(dǎo)致性能略有下降。

在過去的幾十年里,現(xiàn)代處理器的體系結(jié)構(gòu)已經(jīng)取得了長足的進(jìn)步。創(chuàng)新和巧妙的設(shè)計帶來了更高的性能和對底層硬件的更好利用。不過,CPU制造商對其處理器中的技術(shù)非常保密,因此不可能確切知道其內(nèi)部究竟發(fā)生了什么。話雖如此,計算機工作的基本原理在所有處理器上都是標(biāo)準(zhǔn)化的。英特爾可能會增加他們的秘密調(diào)整以提高緩存命中率,AMD可能會添加一個高級分支預(yù)測器,但他們都是完成相同的任務(wù)。

CPU設(shè)計過程

既然我們已經(jīng)了解了處理器在高層次上的工作原理,現(xiàn)在是深入了解內(nèi)部組件是如何設(shè)計的時候了。

你可能知道,處理器和其他大多數(shù)數(shù)字技術(shù)都是由晶體管構(gòu)成的。思考晶體管的最簡單方法是把它想象成有三個引腳的可控開關(guān)。當(dāng)柵極打開時,電就可以通過晶體管。當(dāng)柵極關(guān)閉時,電流不能流動。就像你墻上的電燈開關(guān)一樣,但是要比電燈開關(guān)小得多,速度也快得多,而且可以用電來控制。

現(xiàn)代處理器中使用的晶體管主要有兩種:PMOS和NMOS。NMOS晶體管在柵極充電或設(shè)置為高電平時允許電流流過,PMOS晶體管在柵極放電或設(shè)置為低電平時允許電流流過。通過將這些類型的晶體管以互補的方式組合起來,我們可以創(chuàng)建CMOS邏輯門。在本文中,我們不會詳細(xì)討論晶體管的工作原理,但我們將在本系列的第3部分中討論它。

邏輯門是一種簡單的設(shè)備,它接受輸入,執(zhí)行一些操作,并輸出結(jié)果。例如,只有當(dāng)且僅當(dāng)門的所有輸入都處于打開狀態(tài)時,與門才會打開其輸出。如果輸入關(guān)閉,那么反相器或非門將打開其輸出。我們可以將這兩者結(jié)合起來,創(chuàng)建一個與非門。當(dāng)且僅當(dāng)所有輸入都不打開時,它才打開其輸出。還有其他具有不同邏輯功能的門,如或門、或非門、異或門和同或門。

下面我們可以看到兩個基本的邏輯門是如何從晶體管開始設(shè)計的:一個反相器和一個與非門。在反相器中,頂部有一個PMOS晶體管連接到VDD,底部有一個NMOS晶體管連接到GND。PMOS晶體管的畫法是一個小圓圈連接到柵極上。我們說過,PMOS器件在輸入關(guān)閉時導(dǎo)通,NMOS器件在輸入打開時導(dǎo)通,所以很容易看到輸出信號總是與輸入信號相反。再看看與非門,我們看到它需要四個晶體管,只要至少有一個輸入是關(guān)的,輸出就會打開。設(shè)計更先進(jìn)的邏輯門和處理器內(nèi)部其他電路也是這種過程——將晶體管連接成這樣的簡單網(wǎng)絡(luò)。

由于組件就像邏輯門一樣簡單,所以很難看到它們?nèi)绾巫兂梢慌_正常運行的計算機。此設(shè)計過程涉及到將多個門組合在一起,以創(chuàng)建一個可以執(zhí)行簡單功能的小型器件。然后,你可以連接許多這樣的器件,形成能夠執(zhí)行更高級功能的器件。組合單個組件以創(chuàng)建工作設(shè)計的過程正是當(dāng)今用于創(chuàng)建現(xiàn)代芯片的過程。唯一不同的是,一個現(xiàn)代芯片有數(shù)十億個晶體管。

舉一個簡單的例子,我們將看到一個基本的加法器——1位全加器。它接受三個輸入——A、B和輸入進(jìn)位(Carry-In),并產(chǎn)生兩個輸出——和(Sum)與輸出進(jìn)位(Carry-Out)?;驹O(shè)計使用五個邏輯門,它們可以連接在一起,創(chuàng)建你想要的任意大小的加法器?,F(xiàn)代設(shè)計通過優(yōu)化一些邏輯和進(jìn)位信號來改進(jìn)這一點,但基本原理仍然相同。

如果A、B二者之一處于打開狀態(tài),或者存在輸入進(jìn)位信號,且A、B全開或全關(guān),那么輸出和就是開。輸出進(jìn)位有點復(fù)雜。當(dāng)A和B同時開時,或者存在輸入進(jìn)位信號且A、B二者之一處于打開狀態(tài),此時輸出進(jìn)位是有效的。要連接多個1位加法器以形成更寬的加法器,只需將前一位的輸出進(jìn)位連接到當(dāng)前位的輸入進(jìn)位。電路越復(fù)雜,邏輯就越混亂,但這是最簡單的兩個數(shù)字相加的方法。現(xiàn)代處理器使用更復(fù)雜的加法器,但是這些設(shè)計太復(fù)雜了,無法像這樣進(jìn)行概述。除了加法器,處理器還包含所有這些操作的除法、乘法和浮點運算的單元。

將一系列這樣的門組合起來對輸入執(zhí)行某種功能稱為組合邏輯(Combinational Logic)。然而,這種邏輯并不是計算機中唯一存在的東西。如果我們不能存儲數(shù)據(jù)或跟蹤任何東西的狀態(tài),那么就沒有多大用處。為此,我們需要具有存儲數(shù)據(jù)能力的時序邏輯。

時序邏輯是通過仔細(xì)連接反相器和其他邏輯門來構(gòu)建的,使得它們的輸出反饋到門的輸入。這些反饋回路用于存儲一位數(shù)據(jù),稱為靜態(tài)RAM或SRAM。它被稱為靜態(tài)RAM而不是動態(tài)DRAM的原因是,存儲的數(shù)據(jù)總是直接連接到正電壓或GND。

實現(xiàn)單個SRAM的標(biāo)準(zhǔn)方法是使用如下所示的6個晶體管。頂部信號(標(biāo)記為WL,Word Line)是地址,當(dāng)它被使能時,存儲在這個1位單元中的數(shù)據(jù)被發(fā)送到的位線(標(biāo)記為BL,Bit Line)。BLB輸出被稱為Bit Line Bar,即位線的翻轉(zhuǎn)值。你應(yīng)該認(rèn)識晶體管的兩種類型,并且M3、M1與M4、M2一起構(gòu)成了一個反相器。

SRAM用于在處理器中構(gòu)建超高速緩存和寄存器。它非常穩(wěn)定,但是需要6到8個晶體管來存儲每一位數(shù)據(jù)。這使得它與DRAM相比,在成本、復(fù)雜性和芯片面積方面生產(chǎn)成本極高。另一方面,動態(tài)RAM將數(shù)據(jù)存儲在微型電容中,而不是使用邏輯門。它被稱為動態(tài)的原因是電容器的電壓可以動態(tài)變化,因為它沒有連接到電源或GND。只有一個晶體管用于訪問存儲在電容器中的數(shù)據(jù)。

由于DRAM每位只需要一個晶體管,而且設(shè)計非??蓴U(kuò)展,因此可以密集且廉價地進(jìn)行封裝。DRAM的一個缺點是電容器中的電荷太小,需要不斷刷新。這就是為什么當(dāng)你關(guān)掉計算機時,電容全部耗盡,RAM中的數(shù)據(jù)丟失。

英特爾、AMD和英偉達(dá)公司當(dāng)然不會發(fā)布它們的處理器工作原理圖,所以對于現(xiàn)代處理器,無法展示完整的圖紙。但是,這個簡單的加法器應(yīng)該可以讓您很好地了解如何將處理器中最復(fù)雜的部分拆分為邏輯門、存儲單元,然后再拆分為晶體管。

既然我們已經(jīng)知道了處理器的一些組件是如何構(gòu)造的,那么我們就需要弄清楚如何將所有東西連接起來并同步它們。處理器中的所有關(guān)鍵部件都連接到時鐘信號上。它以預(yù)定義的間隔(稱為頻率)在“高”和“低”之間交替。處理器內(nèi)部的邏輯通常在時鐘從低到高時切換數(shù)值并執(zhí)行計算。通過將所有數(shù)據(jù)同步在一起,我們可以確保數(shù)據(jù)總是在正確的時間到達(dá),這樣處理器中就不會出現(xiàn)任何故障。

你可能聽說過,可以提高處理器的時鐘(稱為超頻)以提高其性能。這種性能提升來自于處理器內(nèi)部晶體管和邏輯的切換速度比設(shè)計的要快。由于每秒有更多的周期,所以可以完成更多的工作,處理器將具有更高的性能。不過在某種程度上,這是正確的。現(xiàn)代處理器通常運行在3.0GHz~4.5GHz之間,而在過去的十年中,這種情況似乎并沒有改變。就像金屬鏈的強度只取決于最弱的一環(huán)一樣,處理器的運行速度也只能和最慢的部分一樣快。在每個時鐘周期結(jié)束時,處理器中的每個部件都需要完成其操作。如果時鐘太快,有某個部分還沒有完成,處理器就無法工作。設(shè)計人員將這個最慢的部分稱為關(guān)鍵路徑,它設(shè)置了處理器運行的最大頻率。超過一定的頻率,晶體管無法足夠快地開關(guān),并將開始出現(xiàn)故障或產(chǎn)生不正確的輸出。

通過提高處理器的電源電壓,我們可以加快晶體管的開關(guān)速度,但這也只能在一定程度上起作用。如果我們施加太高的電壓,就有燒壞處理器的危險。當(dāng)我們提高處理器的頻率或電壓時,它總會產(chǎn)生更多的熱量,并消耗更多的能量。這是因為處理器的功率與頻率成正比,與電壓的平方成正比。為了確定處理器的功耗,我們通常認(rèn)為每個晶體管都是一個小電容,當(dāng)它改變值時必須充電或放電。

功率傳輸是處理器非常重要的一部分,在某些情況下,芯片上一半的物理引腳可能僅用于電源或接地。一些芯片在滿載時可能會產(chǎn)生超過150安培的電流,這些電流必須非常小心地管理。從這個角度看,CPU每單位面積產(chǎn)生的熱量要比核反應(yīng)堆多。

現(xiàn)代處理器中的時鐘約占其總功率的30%~40%,因為它非常復(fù)雜,必須驅(qū)動許多不同的器件。為了節(jié)約能源,大多數(shù)低功耗設(shè)計會在芯片不使用的時候關(guān)閉芯片的某些部分。這可以通過關(guān)閉時鐘(稱為時鐘門控)或關(guān)閉電源(稱為電源門控)來完成。

時鐘給處理器的設(shè)計帶來了另一個挑戰(zhàn),因為隨著時鐘頻率的不斷增加,物理定律開始阻礙它的發(fā)展。盡管光速非常快,但對于高性能處理器來說,光速還不夠快。如果你將時鐘連接到芯片的一端,當(dāng)信號到達(dá)另一端時,它會出現(xiàn)相當(dāng)嚴(yán)重的不同步。為了使芯片的所有部分保持相同時間,時鐘使用所謂的H-Tree來分配。這是一種結(jié)構(gòu),可確保所有端點與中心的距離完全相同。

在一個芯片中設(shè)計每一個晶體管、時鐘信號和電源連接看起來或許非常繁瑣和復(fù)雜,這肯定是真的。盡管英特爾、高通和AMD等公司有成千上萬名工程師,但他們不可能手動設(shè)計芯片的各個方面。為了在如此大的規(guī)模上組裝芯片,他們使用了各種先進(jìn)的工具來為他們生成設(shè)計和原理圖。這些工具通常會對組件應(yīng)該執(zhí)行的操作進(jìn)行高級別的描述,并確定滿足這些要求的最佳硬件配置。最近出現(xiàn)了一種名為“高級綜合”的技術(shù),它允許開發(fā)人員在代碼中指定他們想要的功能,然后讓計算機找出如何在硬件中以最佳方式實現(xiàn)它。

正如你可以通過代碼定義計算機程序一樣,設(shè)計人員也可以通過代碼定義硬件。Verilog和VHDL等語言允許硬件設(shè)計人員表達(dá)他們正在制作的任意電路的功能。仿真和驗證是在這些設(shè)計上進(jìn)行的,如果一切都通過了,它們就可以被合成到構(gòu)成電路的特定晶體管中。雖然驗證可能不像設(shè)計一個新的緩存或核心那樣華而不實,但它要重要得多。對于公司雇用的每位設(shè)計工程師,可能有五名或更多的驗證工程師。

驗證一個新設(shè)計通常比制造實際的芯片本身要花費更多的時間和金錢。公司在驗證上花費了大量的時間和金錢,因為一旦芯片投入生產(chǎn),就沒有辦法修復(fù)。使用軟件,你只需要發(fā)布一個補丁,但硬件不是這樣。例如,英特爾的某些奔騰芯片的浮點分區(qū)單元中存在bug,最終導(dǎo)致它們損失了大約20億美元。

你可能很難想象一個芯片如何擁有數(shù)十億個晶體管以及它們所做的一切。當(dāng)你把芯片分解成單獨的內(nèi)部組件時,事情就簡單多了。晶體管構(gòu)成邏輯門,邏輯門被組合成執(zhí)行特定任務(wù)的功能單元,這些功能單元連接在一起形成我們在第1部分中討論的計算機體系結(jié)構(gòu)。

大部分設(shè)計工作都是自動化的,但這應(yīng)該會讓你對你購買的新CPU有多么復(fù)雜有了新的認(rèn)識。

構(gòu)建芯片:芯片的布局和物理構(gòu)建

如何把一堆沙子變成高級處理器?讓我們看看。

如前所述,處理器和所有其他數(shù)字邏輯都是由晶體管構(gòu)成的。晶體管是一種電子控制開關(guān),我們可以通過施加或消除柵極上的電壓來打開或關(guān)閉它。我們討論了兩種主要類型的晶體管:當(dāng)柵極打開時允許電流流過的NMOS器件和在柵極關(guān)閉時允許電流流過的PMOS器件。處理器內(nèi)部的晶體管的基本結(jié)構(gòu)是硅。硅被稱為半導(dǎo)體,因為它不能完全導(dǎo)電或絕緣;它位于二者之間的某個位置。

為了通過添加晶體管將硅片變成有用的電路,制造工程師使用了一種稱為摻雜的工藝。摻雜工藝包括將精心選擇的雜質(zhì)添加到硅襯底中以改變其導(dǎo)電性。這里的目標(biāo)是改變電子的行為方式,以便我們能夠控制它們。就像有兩種晶體管一樣,摻雜也有兩種主要的對應(yīng)類型。

如果我們添加精確控制數(shù)量的電子給體元素,如砷、銻或磷,就可以創(chuàng)建一個n型區(qū)域。由于現(xiàn)在施加這些元素的硅區(qū)域具有多余的電子,因此它將帶負(fù)電。這就是n型和NMOS中的“n”的由來。通過在硅中加入硼、銦、鎵等電子受體元素,我們可以得到帶正電荷的p型區(qū)域。這就是p型和PMOS中的“p”的由來。將這些雜質(zhì)添加到硅中的具體過程稱為離子注入和擴(kuò)散,這超出了本文的范圍。

既然我們可以控制硅的某些部分的電導(dǎo)率,就可以結(jié)合多個區(qū)域的特性來制造晶體管。集成電路中使用的晶體管稱為MOSFET(金屬氧化物半導(dǎo)體場效應(yīng)晶體管),有四個連接。我們控制的電流流經(jīng)源極和漏極。在n溝道器件中,它通常從漏極流入從源極流出,而在p溝道器件中,它通常從源極流入從漏極流出。柵極是用來開關(guān)晶體管的開關(guān)。最后,器件的主體與處理器無關(guān),所以我們不在這里討論。

硅制反相器的物理結(jié)構(gòu)。每個著色區(qū)域具有不同的導(dǎo)電特性。注意不同的硅組件與右邊的原理圖的對應(yīng)關(guān)系。

晶體管的工作原理以及不同區(qū)域如何相互作用的技術(shù)細(xì)節(jié)足以填滿研究生水平的大學(xué)課程,因此我們將只觸及基礎(chǔ)知識。晶體管的工作原理的一個很好的類比是河上的吊橋。汽車就像晶體管中的電子,會從河的一邊流向另一邊,即晶體管的源極和漏極。以NMOS器件為例,當(dāng)柵極不帶電時,吊橋上升,電子不能流過溝道。當(dāng)我們放下吊橋時,河上形成了一條道路,汽車可以自由移動。同樣的事情也發(fā)生在晶體管上。充電的柵極在源極和漏極之間形成一個溝道,允許電流流動。

為了能夠精確控制硅的不同p和n區(qū)域,英特爾和臺積電這樣的制造商使用一種稱為光刻的工藝。這是一個非常復(fù)雜的多步驟工藝,公司花費數(shù)十億美元來完善它,以便能夠制造更小、更快、更節(jié)能的晶體管。想象一下,有一臺超精密打印機可以用來在硅片上繪制每個區(qū)域的圖案。

在芯片中制造晶體管的過程是從一個純晶圓開始的。晶圓在爐中加熱,頂部生長一層薄薄的二氧化硅。然后在二氧化硅上涂上一種光敏光刻膠聚合物。通過將特定頻率的光照射到光刻膠上,我們可以在我們想要摻雜的區(qū)域剝離光刻膠。這是光刻步驟,類似于打印機將墨水印到頁面的某些區(qū)域,只是尺度小得多。

晶圓被氫氟酸蝕刻以溶解除去光刻膠的二氧化硅。然后除去光刻膠,只留下下面的氧化層。摻雜離子可以被應(yīng)用到晶圓上,并且只能在氧化物中有間隙的地方植入。

這種掩膜、成像和摻雜的過程要重復(fù)數(shù)十次,才能慢慢地在半導(dǎo)體中建立起每個特征層。一旦硅基底完成,金屬連接將在頂部制造,以把不同的晶體管連接到一起。我們稍后會詳細(xì)介紹這些連接和金屬層。

當(dāng)然,芯片制造商并不是一次只生產(chǎn)一個晶體管。當(dāng)一個新芯片被設(shè)計出來時,他們將為制造過程中的每一步生成掩模。這些掩模將包含芯片上數(shù)十億個晶體管的每個元件的位置。多個芯片組合在一起,并在一個裸片上一次制造。

一旦晶圓被制造出來,各個裸片就會被切割和封裝。根據(jù)芯片的大小,每個晶圓可以容納數(shù)百個或更多的芯片。通常情況下,芯片的功能越強,裸片就越大,制造商從每個晶圓上得到的芯片就越少。

我們很容易想到,我們應(yīng)該制造超級強大的、擁有數(shù)百個內(nèi)核的大規(guī)模芯片,但這是不可能的。目前,阻礙我們制造越來越大芯片的最大因素是制造工藝中的缺陷?,F(xiàn)代芯片有數(shù)十億個晶體管,如果其中一個的一個部分壞了,整個芯片可能需要廢棄。隨著處理器尺寸的增大,芯片出現(xiàn)故障的幾率也會增加。

公司從制造過程中獲得的實際收益是保密的,但70%~90%是很好的估計。公司通常會使用額外的功能來過度設(shè)計芯片,因為他們知道某些部件無法工作。例如,英特爾可能會設(shè)計一個8核芯片,但只將其作為6核芯片出售,因為他們估計一個或兩個核可能會損壞。在一個稱為“binning”的過程中,缺陷數(shù)量非常少的芯片通常被預(yù)留出來以更高的價格出售。

與芯片制造相關(guān)的最大營銷術(shù)語之一是特征尺寸。例如,英特爾正在努力實現(xiàn)10nm工藝,AMD正在為一些GPU使用7nm工藝,而臺積電已開始研發(fā)5nm工藝。但是,這些數(shù)字意味著什么呢?傳統(tǒng)上,特征尺寸表示晶體管的漏極和源極之間的最小寬度。隨著技術(shù)的進(jìn)步,我們已經(jīng)能夠縮小晶體管,以便能夠在單個芯片上容納越來越多的晶體管。隨著晶體管變得越來越小,它們也變得越來越快。

在查看這些數(shù)字時,需要注意的是,一些公司可能會根據(jù)不同的指標(biāo)而不是標(biāo)準(zhǔn)寬度來確定工藝尺寸。這意味著不同公司的不同尺寸的工藝實際上可能產(chǎn)生相同尺寸的晶體管。另一方面,在給定的工藝中,并非所有的晶體管都是相同的大小。設(shè)計師可能會根據(jù)某些權(quán)衡來選擇制造比其他晶體管更大的晶體管。對于給定的設(shè)計過程,較小的晶體管將更快,因為它的柵極充放電需要的時間更短。然而,較小的晶體管只能驅(qū)動很小數(shù)量的輸出。某個特定的部件,如果邏輯要驅(qū)動的東西需要很大的功率,如輸出引腳,它就需要做得更大。這些輸出晶體管可能比內(nèi)部邏輯晶體管大幾個數(shù)量級。

一張最新的AMD Zen處理器的照片。這個設(shè)計由幾十億個晶體管組成。

然而,設(shè)計和制造晶體管只是芯片的一半。我們需要根據(jù)原理圖把所有的東西連接起來。這些連接使用晶體管上方的金屬層制成。請設(shè)想多層公路交匯處,有上坡道、下坡道和相互交叉的不同道路。這正是芯片內(nèi)部發(fā)生的事情,不過尺度要小得多。不同的工藝在晶體管上方會有不同數(shù)量的金屬互連層。隨著晶體管變得越來越小,我們需要更多的金屬層來傳送所有的信號。臺積電即將推出的5nm工藝有15個金屬層。設(shè)想一座15層的垂直公路立交橋,這會讓你了解芯片內(nèi)部的布線有多復(fù)雜。

下面的顯微鏡圖像顯示了由七個金屬層組成的晶格。每一層都是平坦的,隨著它們的升高,這些層變得更大,以減小電阻。每一層之間都有被稱為通孔的小金屬圓柱體,用于跳躍到更高層。每一層通常與下面的一層在方向上交替,以便減少不必要的電容。奇數(shù)層可用作水平連接,偶數(shù)層可用作垂直連接。

正如你所能想象的,所有這些信號和金屬層都變得難以快速管理。為了幫助解決這個問題,計算機程序被用來自動放置和布線晶體管。根據(jù)設(shè)計的先進(jìn)程度,程序甚至可以將高級C代碼中的函數(shù)轉(zhuǎn)換為每根導(dǎo)線和晶體管的物理位置。通常情況下,芯片制造商會讓計算機自動生成大部分設(shè)計,然后他們會手工對某些關(guān)鍵部分進(jìn)行優(yōu)化。

當(dāng)公司想要制造一種新的芯片時,他們將從制造公司提供的標(biāo)準(zhǔn)單元開始他們的設(shè)計。例如,英特爾或臺積電將為設(shè)計師提供邏輯門或存儲單元等基本部件。設(shè)計人員可以將這些標(biāo)準(zhǔn)單元組合到他們想要構(gòu)建的任意芯片中。然后,他們將芯片的晶體管和金屬層的布局發(fā)送給代工廠,代工廠是將硅制造成功能芯片的地方。這些布局被轉(zhuǎn)換成掩模,在我們上面提到的制造過程中使用。接下來,我們將了解一個非?;镜男酒脑O(shè)計過程。

首先,我們看看反相器的布局,這是一個標(biāo)準(zhǔn)單元。頂部的斜切綠色矩形是PMOS晶體管,底部的透明綠色矩形是NMOS晶體管。垂直紅線為多晶硅柵極,藍(lán)色區(qū)域為金屬1,紫色區(qū)域為金屬2。輸入A位于左側(cè),輸出Y位于右側(cè)。電源和GND連接在金屬2的頂部和底部。

把幾個門結(jié)合起來,我們得到了一個基本的1位算術(shù)單元。這種設(shè)計可以對兩個1位輸入進(jìn)行加法、減法和邏輯運算。垂直方向的藍(lán)色切割導(dǎo)線是金屬3層。導(dǎo)線兩端稍大的正方形是連接兩層的通孔。

最后,將許多單元和大約2000個晶體管組合在一起,我們得到了一個基本的4位處理器,在四個金屬層上有8字節(jié)的RAM。看看它有多復(fù)雜,我們可以想象設(shè)計一個64位CPU的困難,它有兆字節(jié)的緩存、多個核心和20多個流水線階段??紤]到當(dāng)今高性能CPU可以擁有50億~100億個晶體管和12個金屬層,毫不夸張地說,它實際上要比這個復(fù)雜數(shù)百萬倍。

這應(yīng)該會讓你理解為什么你的新CPU是一項昂貴的技術(shù),以及為什么AMD和英特爾在產(chǎn)品發(fā)布之間花了這么長時間。一般來說,一個新芯片從設(shè)計階段進(jìn)入市場需要3~5年的時間。這意味著今天最快的芯片是用幾年前的技術(shù)制造出來的,而我們在許多年內(nèi)都不會看到使用當(dāng)今最先進(jìn)制造技術(shù)的芯片。

由此,我們完成了對處理器構(gòu)建方式的深入研究。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 解碼器
    +關(guān)注

    關(guān)注

    9

    文章

    1129

    瀏覽量

    40638
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119836
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10807

    瀏覽量

    210852
  • 晶體管
    +關(guān)注

    關(guān)注

    77

    文章

    9610

    瀏覽量

    137666

原文標(biāo)題:如何設(shè)計和生產(chǎn)CPU?這篇文章說得最詳細(xì)!

文章出處:【微信號:bdtdsj,微信公眾號:中科院半導(dǎo)體所】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ICOM各型號電臺CPU復(fù)位方法詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是ICOM各型號電臺CPU復(fù)位方法詳細(xì)資料免費下載。
    發(fā)表于 09-17 08:00 ?17次下載

    CAD電氣制圖的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是CAD電氣制圖的詳細(xì)資料說明。
    發(fā)表于 02-18 08:00 ?42次下載
    CAD電氣制圖的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    ADC和DAC的設(shè)計經(jīng)驗詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是ADC和DAC的設(shè)計經(jīng)驗詳細(xì)資料說明。
    發(fā)表于 03-12 08:00 ?31次下載
    ADC和DAC的設(shè)計經(jīng)驗<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    TI電源管理芯片的種類和介紹詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是TI電源管理芯片的種類和介紹詳細(xì)資料說明
    發(fā)表于 04-28 08:00 ?23次下載
    TI電源管理芯片的種類和<b class='flag-5'>介紹</b><b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    iPhone 6各種阻值的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是iPhone 6各種阻值的詳細(xì)資料說明包括了:座子,基帶CPU,基帶電源,觸摸顯示等
    發(fā)表于 04-29 08:00 ?8次下載
    iPhone 6各種阻值的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    GSM手機生產(chǎn)測試流程的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是GSM手機生產(chǎn)測試流程的詳細(xì)資料說明包括了:1.手機測試簡介,2.手機測試流程,3.測試工位
    發(fā)表于 05-06 08:00 ?5次下載
    GSM手機<b class='flag-5'>生產(chǎn)</b>測試流程的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    電機驅(qū)動的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是電機驅(qū)動的詳細(xì)資料說明。
    發(fā)表于 05-06 11:42 ?37次下載
    電機驅(qū)動的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    使用LabVIEW設(shè)計掃雷游戲的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用LabVIEW設(shè)計掃雷游戲的詳細(xì)資料說明免費下載。
    發(fā)表于 05-21 08:00 ?61次下載
    使用LabVIEW設(shè)計掃雷游戲的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    如何進(jìn)行CPU內(nèi)部Flash讀寫的實例資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行CPU內(nèi)部Flash讀寫的實例資料說明。
    發(fā)表于 05-29 17:36 ?12次下載
    如何進(jìn)行<b class='flag-5'>CPU</b>內(nèi)部Flash讀寫的實例<b class='flag-5'>資料</b><b class='flag-5'>說明</b>

    AD快捷鍵的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是AD快捷鍵的詳細(xì)資料說明
    發(fā)表于 03-17 08:00 ?0次下載

    電網(wǎng)距離保護(hù)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是電網(wǎng)距離保護(hù)的詳細(xì)資料說明。
    發(fā)表于 04-10 08:00 ?2次下載
    電網(wǎng)距離保護(hù)的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    CPU結(jié)構(gòu)與指令集的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是CPU結(jié)構(gòu)與指令集的詳細(xì)資料說明包括了:1 CPU結(jié)構(gòu) ,2 存
    發(fā)表于 07-13 08:00 ?5次下載
    <b class='flag-5'>CPU</b>結(jié)構(gòu)與指令集的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    SMT生產(chǎn)工藝流程圖的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是SMT生產(chǎn)工藝流程圖的詳細(xì)資料說明。
    發(fā)表于 11-23 08:00 ?0次下載
    SMT<b class='flag-5'>生產(chǎn)</b>工藝流程圖的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    LabVIEW的程序?qū)嵗?b class='flag-5'>詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW的程序?qū)嵗?b class='flag-5'>詳細(xì)資料說明。
    發(fā)表于 02-05 14:05 ?142次下載
    LabVIEW的程序?qū)嵗?b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>說明</b>

    Bluetooth藍(lán)牙的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Bluetooth藍(lán)牙的詳細(xì)資料說明
    發(fā)表于 02-26 11:14 ?26次下載