當前位置: 華文問答 > 數位

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

2014-01-10數位

我想您的問題可以分成兩個部份:


每一代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效能只能增長~10%左右。【出處為Hotchips 2013 DARPA Microsystems Technology Office的Director Robert Colwell所做的Keynote】

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

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


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

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

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

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