cpu為什麼需要那麼多晶體管?
對cpu怎樣工作基本沒概念,只知道是從寄存器(或是內存)取一條指令,執行,結果存回去,接著取下一條....,這些指令也就幾十上百種,而且基本不會變動,那麼cpu為什麼要動輒上億個晶體管呢? 是不是這些指令的每一個都非常複雜,要很複雜的電路才能完成?
隨著cpu不斷更新換代,晶體管數量成倍增長,不考慮多核,在執行的指令沒有增加變動的情況下,增加的晶體管都完成了什麼功能?
cpu里執行指令計算的是最基本的功能,在這裡面,複雜指令機不同的指令分解開了就是一系列微命令,精簡指令大多都是直接電路執行。這些不僅僅是執行存回這麼簡單的過程,而是執行步驟每一步都有不同功能電路配合,例如:取指、執行、發射、回寫。就單單一步里,例如取指,就要涉及IR、DR、AR、PC模塊。每一個模塊都是一個小功能,所以要涉及的晶體管特別多。不過這些都是最基本的功能,一個大一學生都可以用verilog寫出來。
還有一個就是緩存,在晶元圖裡,很大一部分都是緩存面積,基本快達到Core的面積。
其實麻煩的在於指令並行技術,分支預測、多流水線、防止數據和結構衝突、發射順序等等功能,其中分支預測就是一個較大的模塊,也是一個現代處理器提速不可少的模塊。要實現指令記錄緩存和分析,並且預測下一條指令的行為並且提前做好最大可能的工作,看吧,是不是有種蠻人工智慧感覺,每一步指令小步都需要一個寄存器來預防數據衝突等,這些都是開銷。這裡耗費的晶體管數量也是很可觀的。
更複雜的就是多核、多核並行問題、各種新技術,都是晶體管需求量翻倍的技術。謝題主邀一般CPU有上千條指令,有些指令,如浮點數運算等還是挺複雜的。這些指令的存儲,讀取,編譯,執行,以及所需控制邏輯要消耗大量晶體管。另外cache也佔了很大一部分晶體管。
不考慮多核,在執行的指令沒有增加變動的情況下,增加的晶體管都完成了什麼功能?
即使不考慮多核,CPU也在更新換代,人們會設計新的,更優化的體系架構,如增加並行化,一次處理多條指令;增加預測功能,如分支預測,指令預測/預取;亂序執行;更好的調度系統。
雖然都是CPU,但你看看CPU的頻率,處理能力是越來越強,這些都是靠大量晶體管堆積起來的。研究了這麼多年,CPU差不多遇到瓶頸了,再繼續提高已經越來越難,所需的晶體管越來越多,所以提出多核,以量取勝。經過這麼多年的發展,CPU的內部比你想像的要複雜的多。計算機體系架構已經是一門藝術了。
緩存是大頭,一個bit的SRAM至少要6個管,頻率稍微高一點每bit管數就要更多2333,自己算算光是i7的6M L3就要多少個管子...
遠少於人類腦細胞數量
就像你身體里有很多細胞一樣。
有些比較高級的指令看上去挺簡單的,但是將那些演算法做出來需要一個獨立的專用功能模塊
根本原因,多多益善
推薦閱讀:
※為什麼Hajimiri能教導出那麼多高水平的高級知識分子?
※國內知名的 IC 設計公司有哪些?
※微電子學生如何在半年時間內提升自己能力?
※AI晶元是否就是用硬體描述語言HDL去實現機器學習演算法?
※華為會開發伺服器晶元么?