計算機硬體知識總結
計算機硬體對於軟體工程師來說很多時候只是停留在一個概念上,例如CPU和記憶體,硬碟等等,這些都屬於計算機組成原理裡面必然會介紹到的,博主大學前期接觸過大量的計算機硬體知識,曾幾何時我甚至考慮過全身心投入到半導體行業,但是考慮到環境限制因素和個人職業的發展,折中選擇了軟體方向,但是最近閱讀了一些機器學習相關的文章,也嘗試過自己去訓練模型,發現模型訓練對硬體的要求比較特殊,這也讓我有機會來從新總結一下硬體方面的知識,從軟體工程師的角度介紹一下我理解的硬體知識。
首先我主要介紹的是單機系統的硬體組成,不太涉及路由器和交換機等等網路裝置,畢竟即使是分散式系統也是由一臺臺機器組成的,分散式系統技術會涉及很多網路和資料一致性方面的問題,這在單機系統裡這些問題都幾乎被解決了,因為它是由系統匯流排與各種高速並且可靠協議的傳輸保證。
只要是計算機體系結構就離不開三個部分,處理運算模組,儲存模組,通訊模組。在單機系統裡對應就是CPU,記憶體與硬碟,系統匯流排。
無論是伺服器還是PC,體系都差不多,只是在各個具體的部件對於效能和穩定性有一些特殊的要求,例如伺服器更要求穩定性,因為伺服器要保證7x24服務,而個人電腦更多強調的是比較強勁的效能,偶爾宕機只需要重新啟動即可,這樣使用者是可以接受的。典型的電腦配置包含幾個部分:CPU,記憶體,硬碟,顯示卡,主機板,電源早期還有北橋(內建記憶體控制器等模組),南橋,還有散熱系統。
CPU是計算機的核心部件,也是計算機系統的核心,主要包含運算器,控制器,暫存器和之間的匯流排,還包含各個快取與指令集。CPU的主要引數包括主頻和多級快取,還有核心架構,還有製造工藝,核心數,一般來說主頻越高單位時間能夠做的處理越快,早期的CPU位寬比較低,現在位寬都是64位,只有64位處理器才支援64和32作業系統,32位只支援32,幸運的是現在CPU幾乎都是64。當然在同樣架構的情況下比較主頻才有意義,否則不同架構之間的單純的比較主頻是意義不大的。運算器進行邏輯運算會把中間值快取到多級快取,cache L1~L3,L1很小,但是速度最快,L3最次,這個當然是越大越好,但是由於其造價十分高昂,也由於空間限制,不可能製造的太大。因為同樣的運算結果往往會被多次訪問,這樣的快取結構能夠大大增加資料訪問的命中率,這樣就能大大消除運算與儲存之間的鴻溝。控制器能夠有條不紊的協調多個元件之間的執行,指令集是各種組合操作的一套原語集,優化各種指令的執行效率,感興趣可以瞭解下流水線的概念。CPU現在主要的是分為精簡RISC和複雜CISC兩個指令集,RISC主要是用簡單的指令組合成複雜的指令,執行效率高。CISC是用複雜的指令儘量多的包含常見操作,執行效率低。現在主流的x86架構是CISC,intel與AMD處理器就是x86架構,比較廣泛的RISC為IBM的powerPC,其應用在playstation遊戲上,或則是著名的ARM都是RISC,其廣泛應用在智慧手機上。CPU的製造工藝為SOC上的電晶體邏輯閘電路之間的距離,一般來說工藝為一個數字,這個數字越小代表著越精密,其在同樣範圍內的面積上能夠放越多的電晶體,同樣面積的範圍處理能力也就越強,漏電也會降低,功耗也就越低,按照著名的摩爾定律預測,從1960年代開始,每18個月大概同樣面積大小的晶片上的電晶體數量就會翻倍,當然最近幾年由於已經逼近10nm,摩爾定律的時間週期正在延長,個人認為這與人們對高能效計算需求的迫切性是有關係的,畢竟現在大部分人的手機都比十年前的PC效能都強,計算能力已經比較過剩,這也間接加速了雲端計算的發展。比較著名的CPU設計廠家為Intel, AMD,Qualcomm, ARM,IBM,三星,聯芯科技,聯發科。著名的代工廠有TSMC(臺積電),三星,global foundries。
記憶體:記憶體的存在也是為了解決CPU與硬碟之間的速度差異,記憶體的特點是易失性儲存,因為它的資料在斷電之後就會消失,所以無法做永久的資料儲存,但是其速度較快,因為早期的磁碟是機械部件,現在的儲存一般也是容量和價格並不能兼得,所以記憶體就是為了解決這個問題,任何程式都會直接從外部儲存先載入到記憶體,然後提供給CPU進行處理,記憶體的指標主要看記憶體型別,最先進的是DDR4記憶體,還要看頻寬,其與CPU之間的通訊是通過前端匯流排BUS去互動,外頻X倍頻=主頻,主頻x前端頻寬基本就能得到前端匯流排的頻寬,如果主機板上支援多個slot插口,同樣型別的記憶體還能組成雙通道,這樣就能大大提升頻寬。記憶體一般也是由快閃記憶體顆粒組成,快閃記憶體顆粒也分很多種,NAND SLC,TLC等等,主要是效能和壽命之間的差異。
硬碟:硬碟是真正儲存資料的介質,現在也主要分為機械硬碟和固態硬碟,因為在這幾十年,計算能力提升了上百倍,但是儲存的介面卻提升的十分緩慢,這就導致CPU出現了吃不飽的現象,木桶效應比較明顯,畢竟機械硬碟是由機械臂,磁碟,轉軸,控制器,硬碟快取幾個部件構成,雖然內部是真空,但是由於是機械部件,其尋磁軌的時間是非常緩慢的,提升快取一定程度可以提升速度但是無法根本上解決問題,這就導致了固態硬碟的發展,固態硬碟就是用快閃記憶體技術去儲存資料,電子會比機械跑的更快。快閃記憶體的介質包含很多種,SLC效能相對低(但是仍舊遠大於機械硬碟),但是壽命長點,TLC效能高,但是壽命短。固態硬碟也分多種介面,SATA是能夠直接跟老的機械硬碟無力介面相容,但是受到介面協議的限制,速度無法放開,理論也就600M/s,PCI-E和M.2介面是非常快的,至於介面,我在這裡不展開了,主要就是各種協議和通道的區別導致的理論速度的差異,還有不同的主控和寫入格式和製造工藝等等帶來的差異會導致市面上的固態硬碟價格也區別比較大。固態硬碟主要的廠家有三星,英特爾,浦科特等,機械硬碟主要有希捷,西部資料,和HGST等。
顯示卡:顯示卡主要由GPU和PCB面板構成,GPU全稱為(Graphic process unit)影象處理單元,早期的電腦是隻有整合顯示卡的,就是整合在主機板上,或則後來還有APU, GPU早期也只是協助影象的處理,因為影象的顯示是需要處理畫素單元的,這樣的運算讓CPU來做並不是特別的合適,CPU主要適合做一些複雜的邏輯運算,而影象顯示的處理更多是大量的簡單的工作,CPU的核心一般也就是4個或則8個,就算是伺服器,最多也就32個,這跟功耗和軟體支援都有很大關係,GPU天生的設計就是大量核心,但是每個核心都不是特別的複雜,這樣就非常適合做一些並行的操作,這也是現在火熱的比特幣挖礦的技術支援。GPU動輒上百個核心,每個核心能夠做細微的運算再合併到視訊記憶體進行輸出,這是顯示卡的原理。英偉達的CUDA框架也可以讓你用GPU做一些非影象的東西,例如深度學習模型的訓練等等。
主機板:主機板是很重要的,但是卻最容易被忽視的一個部分,它是所有硬體之間通訊的基礎,只有主機板能夠協調各個硬體的工作,才能讓整個計算機系統正常執行,主機板上主要包含電路板,主機板晶片,CMOS晶片和CPU與GPU和記憶體硬碟等插槽,IO面板等等。早期的主機板晶片分為南橋和北橋,北橋主要有記憶體控制器和整合顯示卡和連線南橋的通道,現在記憶體控制器早已整合到CPU,北橋在很多主機板已經消失,功能轉移到其他部件內。南橋就主要連線了CPU和各個IO部件的通訊。IO面板提供了滑鼠鍵盤網線等等介面。主機板也分為大板Ex-ATX和小板M-ATX和普通的主機板,ATX代表設計佈局,統一的佈局方便相容機箱。
以上是我對與計算機硬體比較核心的硬體的理解,很多比較細小的方面沒有詳細展開,也可能存在一定的錯誤,但是大的內容應該沒什麼問題,特此做個總結,後期如果有人感興趣,我可以更詳細分析各個部件的一些指標甚至是製造過程。