CPU 每一代之間的差距體現在什麼地方?

CPU 每一代之間的差距體現在什麼地方?

CPU的設計是一個系統工程,通常可以分為微結構(學術界喜歡把micro-architecture翻譯成“微結構”,傳媒上多見“微架構”)、電路,器件,工藝這幾大層面,每個層面內部都有很多細分方向,每個方向都有專家去研究,都有專門的工程團隊在做。現在接觸比較多的是微結構這塊,所以只說微結構的改進。

微結構內部有很多地方是可以修改的,下面僅列舉其中一部分:

  • 發射寬度(主要包括前端取指令的寬度、解碼寬度、dispatch/issue寬度,retire寬度)。
  • 分支預測(包括但不限於預測器結構,預測準確率,branch resolve的延遲,流水線回退的耗時,以及寄存器重命名錶能夠保存多少個分支的快照)
  • 亂序執行窗口的大小(包括ROB,Reservation Station)
  • Cache(擴充Cache大小,改進組織結構)
  • Interconnect
  • 各種bypass,loop cache,etc.

每次Intel,AMD,IBM等巨頭推出的新架構,能在各大媒體上看到的新聞宣傳,大多是從這些地方的參數入手,比如說Haswell把亂序執行窗口從168加大到192,諸如此類。

CPU 每一代之間的差距體現在什麼地方?

對於普通消費者而言,這些改進最終會貢獻多大分量的性能差別?

上面列了這麼多不明覺厲的術語,但是實際上,現在每一代新的CPU性能只能增長~10%左右。出處為Hotchips 2013 DARPA Microsystems Technology Office的Director Robert Colwell所做的Keynote.

微結構研究的黃金年代是在80年代~2005年前後,微結構上的很多經典成果,例如RISC,分支預測,超流水線這些東西,都是那時候火熱起來的,當時的CPU性能提高比較快,這麼多年過去,現在能挖的差不多都已經挖出來了,處理器的基本微結構已經相對固化,剩下的是一些小幅度的增量式改進,一點一點兒地摳性能。

現在業界的注意力已經轉向其他方向,比如異構計算的概念最近就被炒的很熱。

CPU 每一代之間的差距體現在什麼地方?

Bonus:CPU的性能瓶頸在什麼地方?如何判斷?

對於不同的程序,性能瓶頸也是不同的,比如說有的程序指令緩存miss率很高,流水線前端取不到指令導致停頓,有的程序是因為指令重命名時競爭寄存器的讀取端口,有的程序是因為cache裝不下工作集,所以很難一概而論。目前的大勢主要是訪存引發停頓。

通過CPU的參數判斷CPU的性能瓶頸,個人認為對於普通消費者而言是做不到的。那種一看網媒上公佈的粗略架構圖就嫩判斷出CPU性能瓶頸的決不是仙人,而是異想天開的民科。那些巨頭公司的架構師都是經過多年訓練經驗豐富,在大參數上犯下明顯錯誤的可能性幾乎為0,更不用說整個CPU是許多架構師的通力合作。

判斷性能瓶頸需要做精確的量化分析,現在的CPU內部一般都集成了成百上千個性能計數器,有perf之類的專用工具可以讀取這些地方的數值,統計各個不同部件的性能表現。這是一個比較專精化的領域,如果想要了解這方面的知識,可以閱讀《計算機體系結構:量化研究方法》作為起步。


分享到:


相關文章: