1ALUs和CPUs
最近我一直在思考這個問題,下文是我的解釋。計算機的核心是一個稱為算術邏輯單元(ALU)的功能塊。毫不奇怪,這是執(zhí)行算術和邏輯運算的地方,比如算術上兩個數(shù)字相加求和、邏輯上兩個數(shù)值進行“與”運算。
算術邏輯單元(ALU)是計算機的核心
(圖片來源:Max Maxfield)
請注意,我沒有用任意形狀表示ALU,這種‘Y’字形是工程師通常使用的符號,因為ALU接受兩個輸入值并返回一個輸出。
當我們將ALU與一系列寄存器(另請參閱“寄存器vs鎖存器vs觸發(fā)器”)、一些指令邏輯、一些尋址邏輯和一些控制邏輯結(jié)合在一起使用時,我們最終會得到一個中央處理器(CPU)。請注意,在這種情況下,當我們說“邏輯”時,我們指的是用于形成數(shù)字電子系統(tǒng)的原始邏輯門和寄存器元件。
中央處理器(CPU)是計算機的大腦
(圖片來源:Max Maxfield)
中央處理器負責通過執(zhí)行由指令指定的算術、邏輯、控制和輸入/輸出(I/O)操作來執(zhí)行形成計算機程序的指令。
2內(nèi)存和CPU—內(nèi)存體系結(jié)構
為了讓CPU發(fā)揮魔力,它需要訪問用于存儲指令和數(shù)據(jù)的內(nèi)存子系統(tǒng)。這就是事情變得有點棘手的地方,因為有兩種基本的計算機體系結(jié)構,稱為馮·諾伊曼(或普林斯頓)體系結(jié)構和哈佛體系結(jié)構。元器件購買,上唯樣商城。
在馮·諾伊曼/普林斯頓體系結(jié)構中,數(shù)據(jù)和指令都存儲在相同的物理存儲空間中,并使用相同的地址、數(shù)據(jù)和控制總線進行訪問。相比之下,在哈佛體系結(jié)構中,指令和數(shù)據(jù)存儲在物理上不同的存儲器件中,使用它們自己的總線進行訪問。
基本計算機體系結(jié)構:馮·諾依曼/普林斯頓、哈佛和改良哈佛
(圖片來源:Max Maxfield)
還有一種風格稱為“改良哈佛體系結(jié)構”,其中指令和數(shù)據(jù)共享相同的物理存儲器件,但是使用它們自己的總線進行訪問(特殊的機制可以防止指令被誤認為數(shù)據(jù),反之亦然)。
在接下來的討論中,我們將重點討論馮·諾依曼/普林斯頓架構(因為它對我來說更容易畫),但是我們討論的所有內(nèi)容都適用于所有三種體系結(jié)構。
3有緩存嗎?
計算機的一個問題是,指令和數(shù)據(jù)在主存儲器和CPU之間來回傳遞需要相對較長的時間。問題是,絕大多數(shù)的程序都包含大量的小循環(huán),在這些小循環(huán)中,相同的操作被一次又一次地執(zhí)行。購買元器件,到唯樣商城解決方案是創(chuàng)建一個(相對)較小的高速內(nèi)存,稱為高速緩存,以及一個特殊的高速緩存控制器,它位于CPU附近,保存經(jīng)常訪問的指令和數(shù)據(jù)的副本。
高速緩存是一個(相對)小的高速內(nèi)存,位于CPU附近
(圖像來源:Max Maxfield)
請注意,上圖是一個粗略的簡化圖?,F(xiàn)代處理器有獨立的指令和數(shù)據(jù)緩存。此外,還有一個稱為L1、L2、L3等的緩存層次結(jié)構。(其中“L”代表“Level”,即級別)。L1緩存是最小、最快、最靠近CPU的緩存。
系統(tǒng)設計人員必須考慮的一個問題是,確保CPU對緩存內(nèi)容所做的任何更改隨后都反映在主內(nèi)存中(如果合適的話)。同步緩存和主內(nèi)存的內(nèi)容,同時保持這些內(nèi)容的完整性是一項極其復雜的任務,因此你會很高興地發(fā)現(xiàn),我們在這里將不再進一步討論它。
然而,我們必須提的一件事是緩存一致性,它在擁有多個CPU(每個CPU都有自己的高速緩存子系統(tǒng))共享公共內(nèi)存資源的系統(tǒng)中開始顯露出問題。
當多個CPU共享公共內(nèi)存資源時可能會出現(xiàn)問題
(圖片來源:Max Maxfield)
正如維基百科告訴我們的:“在一個共享內(nèi)存多處理器系統(tǒng)中,每個處理器都有一個單獨的高速緩存,因此可能有多個共享數(shù)據(jù)副本:一個副本在主存儲器中,一個副本在請求它的每個處理器的本地高速緩存中。當數(shù)據(jù)的一個副本發(fā)生更改時,其他副本必須反映這個更改。緩存一致性是確保共享操作數(shù)(數(shù)據(jù))值的變化在整個系統(tǒng)中及時傳播的規(guī)則?!蔽易约赫f得再好不過了。
4添加FPU
早期的CPU使用重復加法進行整數(shù)乘法運算。他們還使用了非常復雜的技術來進行整數(shù)除法運算。(另請參閱“計算機如何進行數(shù)學運算”)。沒過多久,設計師就開始添加特殊的乘法器/除法器功能。
類似地,許多早期的CPU被設計為執(zhí)行定點算術運算。當涉及到更復雜的浮點運算時,這些是通過將浮點運算分解成更簡單的運算序列并使用定點架構來執(zhí)行這些運算來實現(xiàn)的。
隨著人們越來越多地使用計算機,人們希望自己的計算機運行得越來越快,實現(xiàn)這一點的一種方法是添加一個特殊的浮點運算單元(FPU)。FPU的作用是對浮點數(shù)執(zhí)行加、減、乘、除、平方根和移位操作。
FPU對浮點數(shù)進行運算
(圖片來源:Max Maxfield)
FPU作為一個單獨的功能單元來實現(xiàn)是很常見的,但將一個或多個FPU集成為CPU中的特殊執(zhí)行單元也并不少見。
5內(nèi)存保護和管理:MPUs和MMUs
內(nèi)存保護單元允許特權軟件(如操作系統(tǒng))定義內(nèi)存中的區(qū)域,并為這些區(qū)域分配訪問權限和屬性。
添加內(nèi)存保護單元(MPU)
(圖片來源:Max Maxfield)
MPU監(jiān)視CPU和內(nèi)存之間的事務,并在檢測到訪問違規(guī)時發(fā)出警報(觸發(fā)故障異常)。MPU的主要目的是防止程序訪問沒有分配給它的內(nèi)存。這可以防止普通程序或惡意軟件程序中的無辜錯誤影響其他進程或操作系統(tǒng)本身。
層次結(jié)構的下一步是使用內(nèi)存管理單元(MMU),它通過附加功能增強了內(nèi)存保護單元(MPU)的功能。
將內(nèi)存保護單元升級為內(nèi)存管理單元(MMU)
(圖片來源:Max Maxfield)
這就是事情開始變得有點棘手的地方。最簡單的級別是在“裸機”上運行單個程序,裸機指的是計算機直接在中央處理器上執(zhí)行程序,沒有中間的操作系統(tǒng)。在這種情況下,可以使用絕對(物理)地址編譯程序。
更復雜的系統(tǒng)運行一種叫做操作系統(tǒng)(OS)的特殊程序。操作系統(tǒng)允許用戶同時運行多個程序。以你自己的個人計算機為例,你可能在計算機上同時運行文字處理程序、圖像程序和電子郵件程序。其工作方式是使用相對尋址來編譯這些程序。MMU的任務是將程序中的虛擬地址轉(zhuǎn)換成主內(nèi)存中的物理地址。
請注意,由于MMU包含了MPU的功能,因此它們是相互排斥的——一個系統(tǒng)可以有MMU,也可以有MPU(或兩個都沒有),但不能同時有兩個。
如今,當我們使用“計算機”一詞時,大多數(shù)人(非工程師)通常會想到他們的臺式機、筆記本電腦或平板電腦。相比之下,根據(jù)不同的領域,工程師可能會想到工作站或服務器,或想到微處理器和微控制器。
然而,在我們開始討論微處理器和微控制器之前,我們應該注意,上面討論的所有概念一般都適用于計算機體系結(jié)構。例如,大約在20世紀60年代早期的計算機是由一屋子的被稱為“大型機”的大柜子組成的。每個機柜都有不同的功能,比如CPU或主存儲器。通俗地說,這種類型的計算機被稱為“大鐵”機器。
大約在20世紀70年代作為集成電路(“芯片”)實現(xiàn)的第一批CPU被稱為微處理器(μP)。后來,它們開始被稱為微處理器/微處理單元(MPU)。如今,μP和MPU被認為是同義詞。
早期的MPU僅包含CPU。諸如浮點運算單元(FPU,也稱為數(shù)學協(xié)處理器)和內(nèi)存保護單元(MPU)或內(nèi)存管理單元(MMU)之類的功能是在單獨的器件上實現(xiàn)的,所有這些器件都緊密地安裝在印刷電路板上。
當然,使用MPU這三個字母代表同時微處理器單元和記憶保護單元只會增加樂趣和誤會,但你通??梢詮恼勗挼纳舷挛闹锌闯鋈藗冊谡f什么(如果沒有,那就讓他們先把事情說清楚,然后再掏錢)。
這些天,有成千上萬的MPU產(chǎn)品。一些只包含一個單獨的CPU,一些包含一個CPU以及緩存、FPU和內(nèi)存保護或內(nèi)存管理單元的各種組合,還有一些包含多個CPU、FPU等。(請注意,MPU可能包含額外功能——出于討論的目的,我們將重點放在核心功能上。)
微處理器單元(MPU)有多種形狀、大小和配置
(圖片來源:Max Maxfield)
與內(nèi)存管理單元(MMU)相反,一些微處理器單元(MPU)可能包含內(nèi)存保護單元(MPU),但是為了避免混淆,我們在這里寫出了全名。此外,根據(jù)經(jīng)驗,更常見的是在微處理器中找到內(nèi)存管理單元,在微控制器中找到內(nèi)存保護單元,如下所述。
微處理器的一個顯著特點是它不包含任何內(nèi)存(不包括任何緩存)。也就是說,它的所有內(nèi)存都是器件外部提供的。相比之下,微控制器(μC,也稱為微控制器單元,MCU)包含的存儲器包括Flash形式的非易失性程序存儲器(NVM)和SRAM形式的易失性工作存儲器。MCU通常包含各種附加功能和能力,包括計數(shù)器和定時器,以及帶有模數(shù)轉(zhuǎn)換器(ADC)的模擬輸入。
微控制器單元(MCU)有多種形狀、大小和配置
(圖片來源:Max Maxfield)
MCU通常不包含任何高速緩存存儲器的一個原因是它們經(jīng)常必須提供實時控制功能和性能。這可能涉及運行“裸機”程序——或者在內(nèi)核或?qū)崟r操作系統(tǒng)(RTOS)下運行程序——而擁有緩存內(nèi)存子系統(tǒng)往往會扼殺確定性。
此外,微處理器通常不運行像Linux或Unix這樣的復雜操作系統(tǒng),因此不需要內(nèi)存管理單元(MMU)。如果它們有內(nèi)存保護的話,也通常不會比內(nèi)存保護單元(MPU)更復雜。同樣,MCU可能包含額外的功能——出于討論的目的,我們將重點放在核心功能上。
7圖形處理單元(GPUs)
最后,但同樣重要的是,在本專欄中,我們會討論圖形處理單元(GPU)。雖然微處理器單元(MPU)僅包含幾個(例如,1個、2個、4個或8個)復雜的CPU內(nèi)核,但GPU可以包含數(shù)百或數(shù)千個較簡單的CPU核心,每個CPU核心具有少量的本地存儲器,以及FPU等。
顧名思義,GPU最初是為圖形應用程序設計的,在圖形應用中,需要在屏幕上對數(shù)十萬或數(shù)百萬像素執(zhí)行相同的操作。但是,GPU還可以在受益于大規(guī)模并行處理的應用程序中使用,包括硬件加速,網(wǎng)絡貨幣(“比特幣”)挖掘和高性能計算(HPC)。
MPU(微處理器)和GPU組合可以在手機、筆記本電腦、平板電腦、工作站和游戲機等系統(tǒng)中找到。同時,在嵌入式系統(tǒng)中可能會發(fā)現(xiàn)MCU(微控制器)和GPU組合。
以術語ASIC為例。當你聽到或看到這個詞時,你會想到什么?如果你的下意識反應是說ASIC指的是一種定制的數(shù)字集成電路,包含數(shù)十萬、數(shù)百萬甚至數(shù)十億個晶體管,那么這可能意味著你來自數(shù)字背景。
讓我們從ASIC代表特定應用集成電路的事實開始,即為執(zhí)行特定任務而創(chuàng)建的自定義器件。在這個標題中,我們看不到“數(shù)字”這個詞。同樣值得提醒自己的是,沒有所謂的模擬晶體管或數(shù)字晶體管——只有晶體管可以認為是在模擬域(信號在一個連續(xù)的范圍內(nèi)工作)或數(shù)字域(信號在一定數(shù)量的定義電平下工作)中發(fā)揮它們的魔力。
在現(xiàn)實中,我們可以創(chuàng)建包含晶體管和其他組件的模擬ASIC,以實現(xiàn)類似放大器或濾波器的模擬功能。這種器件通常只包含相對較少的晶體管(數(shù)量在幾十、幾百或幾千個),而且這些晶體管通常體積大而堅固,它們的形狀和大小都經(jīng)過了微調(diào),以滿足嚴格的規(guī)格要求。(我們所說的“大”指的是“在事物的體系中”,與用來制造數(shù)字集成電路的晶體管相比——它們在人類存在的尺度上仍然小得令人難以置信。)
我們也有可能創(chuàng)造出包含晶體管和其他元件的數(shù)字專用集成電路,以實現(xiàn)一系列的數(shù)字功能。這類器件通常包含相對大量的晶體管(以數(shù)十萬、數(shù)百萬或數(shù)十億計),而這些晶體管通常體積小、活躍、非常集中。
如果我們能把世界分成模擬和數(shù)字兩部分,生活就會變得如此簡單,但是,情況無疑會更復雜,因為許多ASIC包含模擬和數(shù)字功能的混合,因此被稱為混合信號器件。這類元件的典型例子是模數(shù)轉(zhuǎn)換器(ADC)和數(shù)模轉(zhuǎn)換器(DAC)。在現(xiàn)實中,即使是你可能認為是“純數(shù)字”的器件,也可能仍然包含一些以鎖相環(huán)(PLL)等功能形式存在的少量模擬功能。
而且,僅僅為了增加樂趣,還可以有射頻(RF)ASIC,有些人將其稱為射頻集成電路(RFIC)。
9ASICs與ASSPs
一般而言,專用集成電路(ASIC)是由單個公司在特定系統(tǒng)中設計和/或使用的組件。相比之下,專用標準部件(ASSP)是一種更通用的器件,旨在供多個系統(tǒng)中的多個系統(tǒng)設計機構使用(例如USB接口芯片)。這就引出了一個有趣的問題——我們是將ASIC和ASSP視為在模擬、數(shù)字、混合信號和RF之下(圖1a),還是將其看作相反的情況(圖1b)?
圖1 ASIC和ASSP器件與模擬、數(shù)字、混合信號和RF領域的關系是什么樣的?
(圖片來源:Max Maxfield)
在現(xiàn)實中(我不得不停止這樣說),這些術語都只是我們?yōu)樽约簞?chuàng)造的“盒子”,但反思一下不同的人以不同的方式思考這些事情仍然很有趣。(如果你愿意在下面的評論中分享你更喜歡哪種表達方式,那就太好了。)
每個實現(xiàn)域(模擬、數(shù)字等)通常基于自己的專用半導體襯底和工藝,并且每個開發(fā)團隊通常使用他們自己的專用設計、驗證和分析工具。
為了進行這些討論,我們假設我們談論的是數(shù)字ASIC和ASSP。此處要理解的關鍵點是,這些器件是使用相同的設計、驗證和分析工具開發(fā)的,而且是使用相同的半導體工藝和技術實現(xiàn)的。
ASIC與ASSP的惟一區(qū)別在于它的目標受眾和部署——特定系統(tǒng)(或系統(tǒng)系列)中的單個公司vs各類系統(tǒng)中的多個公司。我們甚至可以說,一個在早上被認為是ASIC的器件,如果它的主人決定與世界分享,那么它就可以在下午被改造成ASSP。
我們要說最后一點是,數(shù)字ASIC(或ASSP)有不同類型。就日益增加的復雜性而言,它們將被分為門陣列、結(jié)構化ASIC、標準單元和全定制。
圖2.不同風格的數(shù)字ASIC/ASSP
(圖片來源:Max Maxfield)
你會高興地發(fā)現(xiàn),我們不會在這個泥潭里挖得更深。我只想說,如果你想了解更多關于這些家伙的信息,我的書《Bebop to the Boolean Boogie》(世界上第一本也是唯一一本以海鮮秋葵湯食譜為特色的電子學書籍)對它們進行了極其詳細的討論。
10MPUs、MCUs、DSPs、FPGA和內(nèi)存器件
莎士比亞表現(xiàn)出了他一貫的先見之明,當他讓李爾王說:“哦,那是瘋狂的謊言?!蔽液芸隙ㄋ谙?,如果人們開始嘗試把微處理器(MPU)、微控制器(MCU)、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)和內(nèi)存器件(DRAM、SRAM、Flash等)分成ASIC和ASSP會如何。
不幸的是,如果你不小心,你會發(fā)現(xiàn)自己拼命地想要把一顆方釘子釘進一個圓孔里。就我個人而言,我花在這款游戲上的時間遠遠超過了應該花的時間。多年來,我已經(jīng)得出結(jié)論,說“MPU就是MPU”、“SRAM內(nèi)存芯片只是SRAM內(nèi)存芯片芯片”更容易,就這樣吧。
11片上系統(tǒng)(SoC)器件
片上系統(tǒng)(SoC)是指充當整個子系統(tǒng)的ASIC或ASSP。除了一堆定制功能塊(其中大多數(shù)通常是數(shù)字的,但也可以包括一些模擬和/或混合信號功能),SoC還包括一個或多個處理器內(nèi)核(處理器和/或DSP)、輔助內(nèi)核(例如FPU、計數(shù)器/定時器)、片上存儲器和外圍/通信內(nèi)核/功能。
有些人認為SoC比ASIC/ASSP“更高”,因為它們是基于ASIC/ASSP技術加上處理器核心等。相比之下,在并非所有ASIC/ASSP都包含處理器內(nèi)核的基礎上,其他人則認為ASIC/ASSP技術是父項,而SoC構成了這些器件的子集。
再說一次,這些術語都是我們?yōu)樽约簞?chuàng)造的“盒子”,但反映出不同的人以不同的方式思考這些事情仍然很有趣。
122.5D和3D ICs
最初,在集成電路的背景下,人們對于2.5D和3D有很多混淆。很多這種困惑是由公司造成的,他們有我們現(xiàn)在認為是2.5D IC的東西,而在他們的營銷文案中則聲稱是3D IC(小小的騙局)。
每個未封裝的集成電路稱為裸片。在2.5D IC的情況下,多個裸片安裝在稱為硅插入器的基礎層上。硅插入器及其所附的裸片全部呈現(xiàn)在單個封裝中。硅插入器用于將芯片相互連接,也可連接到封裝的端子(引腳或焊盤)。
在3D IC的情況下,多個裸片彼此堆疊,并使用硅通孔(TSV)進行連接。單個多裸片堆疊可以以其自己的封裝呈現(xiàn),或者多個多裸片堆疊可以安裝在硅插入器上,而整個組件以單個封裝呈現(xiàn)。
13SiPs、PiPs、PoPs和MCMs
多芯片組件(MCM)在概念上類似于2.5D IC,安裝裸片和其他組件的統(tǒng)一高密度互連(HDI)基板不同于硅插入器,范圍從陶瓷到印刷電路板(PCB)。
順便說一句,組成MCM的單個裸片被稱為“chiplet”。一切都放在一個單獨的封裝中,這意味著MCM在外界看來就像一個大型IC。
根據(jù)設計的復雜性和目標應用程序和/或環(huán)境的不同,MCM有多種風格。它們通常分為MCM-L(基板是多層層壓PCB)、MCM-D(組件使用薄膜技術沉積在基板上)和MCM-C(基板是陶瓷)。
術語System-in-Package(Sip)對不同的人意味著不同的事情。有些人認為SiP只是MCM的一個更現(xiàn)代和新潮的名字。其他人則認為SiP介于MCM(因為SiP的裸片可能堆疊在彼此的頂部)和3D IC之間(因為SiP不使用最高級別的TSV互連,而這正是3D IC的特點)。
到頭來,SiP需要將多個裸片和其他組件安裝在同一塊基板(通常是HDI PCB)上,并作為單個封裝呈現(xiàn)給外界。
最后,但同樣重要的是,對于我們討論的這一部分,我們有Package-in-Package(PiP)和Package-on-Package(PoP)。多個裸片(每個裸片在它們自己的芯片級封裝(CSp))和/或SiP被安裝、連接,并作為單個封裝呈現(xiàn)給外界。相比之下,在PoP組件的情況下,兩個或更多的封裝安裝在彼此的頂部,它們之間有一個接口來路由信號。所有這些技術都允許在移動電話、個人數(shù)字助理(PDA)、平板電腦、數(shù)碼相機等產(chǎn)品中實現(xiàn)更高的組件密度。
14COMs和SOMs
遺憾的是,術語嵌入式模塊計算機(COM)和系統(tǒng)模塊(SOM)同樣有多種解釋。
一種非常常見的解釋是將系統(tǒng)的所有功能集成在單個模塊上的PCB級電路(與SoC相反,SoC必須安裝在電路板上,并且通常依賴于諸如存儲器器件的外部組件來完成系統(tǒng))。
為了更好地理解COMs/SOMs的這種解釋,請參考來自Toradex的Apalis Arm家族COM和Colibri Arm家族SOM。此外,請參考我的專欄《COM-HPC為邊緣計算定義服務器級功能》。
另一種解釋是SOM不大于大型IC。這種解釋的一個經(jīng)典例子是Microchip Technology的SAMA5D27 SOM。
讓我們從SAMA5D27 SiP開始,它采用32位ARM Cortex-A5微控制器,128Mb、512Mb或1Gb DDR2內(nèi)存。該SiP可以用作獨立器件,也可以集成到更大的組件中,如SAMA5D27 SOM。
除了SAMA5D27 SiP之外,SAMA5D27 SOM還包含64Mb QSPI閃存器件、2Kb EEPROM芯片(帶有預編程MAC地址),帶時鐘的10/100以太網(wǎng)PHY、一個高性能電源管理IC(MIC2800)和103個輸入/輸出(I/O)。使用SAMA5D27 SOM的結(jié)果是縮小印刷電路板的尺寸和層數(shù),將設計風險降至最低,并大大縮短產(chǎn)品開發(fā)時間。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19286瀏覽量
229873 -
芯片
+關注
關注
455文章
50818瀏覽量
423728 -
cpu
+關注
關注
68文章
10863瀏覽量
211799
發(fā)布評論請先 登錄
相關推薦
評論