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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

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

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

CPU的原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CPU設計過程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

時鐘給處理器的設計帶來了另一個挑戰(zhàn),因為隨著時鐘頻率的不斷增加,物理定律開始阻礙它的發(fā)展。盡管光速非??欤珜τ诟咝阅芴幚砥鱽碚f,光速還不夠快。如果你將時鐘連接到芯片的一端,當信號到達另一端時,它會出現(xiàn)相當嚴重的不同步。為了使芯片的所有部分保持相同時間,時鐘使用所謂的H-Tree來分配。這是一種結構,可確保所有端點與中心的距離完全相同。

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

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

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

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

大部分設計工作都是自動化的,但這應該會讓你對你購買的新CPU有多么復雜有了新的認識。

構建芯片:芯片的布局和物理構建

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

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

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

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

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

硅制反相器的物理結構。每個著色區(qū)域具有不同的導電特性。注意不同的硅組件與右邊的原理圖的對應關系。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關注

    9

    文章

    1128

    瀏覽量

    40585
  • 寄存器
    +關注

    關注

    31

    文章

    5268

    瀏覽量

    119640
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10769

    瀏覽量

    210420
  • 晶體管
    +關注

    關注

    77

    文章

    9582

    瀏覽量

    137462

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

文章出處:【微信號:bdtdsj,微信公眾號:中科院半導體所】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ICOM各型號電臺CPU復位方法詳細資料免費下載

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

    CAD電氣制圖的詳細資料說明

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

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

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

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

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

    iPhone 6各種阻值的詳細資料說明

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

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

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

    電機驅動的詳細資料說明

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

    使用LabVIEW設計掃雷游戲的詳細資料說明

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

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

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

    AD快捷鍵的詳細資料說明

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

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

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

    CPU結構與指令集的詳細資料說明

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

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

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

    LabVIEW的程序實例詳細資料說明

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

    Bluetooth藍牙的詳細資料說明

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