計算機硬體對於軟體工程師來說很多時候只是停留在乙個概念上,例如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上的電晶體邏輯閘電路之間的距離,一般來說工藝為乙個數字,這個數字越小代表著越精密,其在同樣範圍內的面積上能夠放越多的電晶體,同樣面積的範圍處理能力也就越強,漏電也會降低,功耗也就越低,按照著名的摩爾定律**,從2023年代開始,每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代表設計布局,統一的布局方便相容機箱。
以上是我對與計算機硬體比較核心的硬體的理解,很多比較細小的方面沒有詳細展開,也可能存在一定的錯誤,但是大的內容應該沒什麼問題,特此做個總結,後期如果有人感興趣,我可以更詳細分析各個部件的一些指標甚至是製造過程。
計算機硬體知識
程式語言的作用是為了與計算機進行溝通。作業系統和硬體的關係,作業系統是硬體系統的首次擴充,可以控制和管理計算機硬體和軟體資源,合理對各類作業進行排程,以及方便使用者使用的一組程式的集合。應用程式是由程式語言有邏輯得組成,軟體必須執行在作業系統上方可使用。作業系統的作用是為了高效得應用計算機硬體而誕生...
計算機硬體
計算機 軟體與計算機語言 python 一套完整的計算機系統 作業系統 windows linux 底層硬體 cpu 記憶體 硬碟 計算機硬體 cpu 暫存器 最快的一種儲存裝置 核心態與使用者態 核心態與使用者態之間的互換 cpu指令集中的指令可以分成兩部分 合理地cpu工作狀態應該是取指令 解碼...
計算機硬體
計算機就是可以進行數 算和邏輯運算的機器,而且具有儲存和記憶功能。歷史上第一台計算機誕生於1946年2月15日於美國賓夕法尼亞大學投入使用,並命名為 eniac 是電子數值積分計算機 the electronic numerical intergrator and computer 的簡稱。第二代電...