首頁 > 硬體

什麼是推土機架構

2020-10-19 16:16:31

什麼是推土機架構

CMP和SMT

  CMP:CMP的方式非常直接,簡單來說,CMP是通過「複製」物理核心來擴充套件處理器在多執行緒軟體中的效能,這是獲得最佳效能一種最簡單和最有效的方式。但CMP的缺點是製造成本很昂貴,並且也要受到處理器製造工藝的限制,畢竟不能將晶片做的越來越大。並且CMP的方式對負載要求也很高,只有經過適當並行優化的負載才能充分發揮CMP的效能,很多核心的CMP常常會浪費資源,在一些應用中,主頻更高、結構更簡單的雙核和四核處理器就往往可以獲得更好的效能。

  SMT:SMT是一個相對廉價的技術,比如英特爾的Hyper-Threading,允許每個物理核心執行兩個同步執行緒。SMT的設計思想是充分利用每個核心的資源。如果一個物理核心只有一個執行執行緒,那麼在等待記憶體中的關鍵程式碼或資料的時候,執行緒處於停頓狀態,這樣核心的利用率是低下的。而SMT技術允許一個物理核心執行兩個或更多的執行緒,可以根據當前的狀況動態進行切換,如果一個執行緒處於停頓狀態等待記憶體,另一個執行緒的指令則可以使用這個物理核心的所有執行單元,讓物理核心利用的更加充分。

  為了讓SMT正常工作,處理器的所有程式碼和儲存部分需要被複制或分割區。例如,一個雙執行緒SMT處理器需要兩套架構暫存器和重新命名暫存器,一套給執行緒A,一套給執行緒B。另外組成指令視窗的共用指令佇列要具備很大的空間,這樣指令視窗才能容納足夠多的來自兩個執行緒的指令,讓執行單元可以保持在忙碌狀態。最後,兩個執行緒任何共用單元,比如處理管線不同部分的指令快取,都不能被任一個執行緒獨佔。換句話說,SMT核心的兩個執行緒需要和另一個緊密的共用資源,保證核心的快取單元不會空置沒有執行緒利用。

  

推土機架構分析

  AMD“推土機」將採用32nmSOI工藝,這讓“推土機」相比“馬尼庫爾」皓龍處理器可以在不增加功耗的前提下增加33%的核心數量、增加50%的吞吐量。與AMD之前所有處理器都有所不同的是,“推土機」採用了“模組化」的設計,每個“模組」包含兩個處理器核心,這有些像一個啟用了SMT的單核處理器。每個核心具有各自的整數排程器和四個專有的管線,兩個核心共用一個浮點排程器和兩個128位元FMAC乘法累加器。

  所不同的,在K10架構中,ALU和AGU共用三個管線(平均1.5個),“推土機」中每個核心整數單元管線的數量增加為4個,2個AGU專有、2個ALU專有。L1快取也有所不同,在K10架構中,每個核心具有64KB L1指令快取和64KB L1資料快取;而“推土機」每個核心具有16KBL1資料快取、每個模組具有64KB雙向L1指令快取,至於減小的L1快取是否會影響效能還有待觀察。兩個核心共用L2快取,模組之間共用L3快取及北橋。

AMD“推土機」模組

  “模組」和“核心」,這讓我們不免會產生混淆,實際對於使用者們來說,沒必要去刻意的關注“模組」的概念,這只不過是AMD在設計上的稱謂,而當產品投放市場的時候,依舊會以核心數量為標識,比如我們說採用推土機架構的“Interlagos」伺服器處理器具有16個核心,而不會說是8個模組。對於為何採用這種“模組」設計的主要原因,AMD表示是“為了減少CPU的冗餘電路」。

  如果採用CMP的方式,隨著核心數量的增加,CPU的核心面積也會越來越大,重複的電路也會越來越多,功耗也會隨之增加——因為CMP是採用複製核心的方式。而採用“模組」設計可以大大減少冗餘電路,這對核心的大量增加很有意義。比如“推土機」,兩個核心共用浮點部分,對於大部分伺服器應用來說,整數運算的部分要遠遠高於浮點運算(高效能運算除外),所以將浮點執行單元共用並不會影響大多數應用中的效能。而整數部分則不是共用的,否則會造成瓶頸。

  上文我們回顧過CMP和SMT設計的特點,我們可以把AMD“推土機」架構看做是介於這兩種之間的一種設計:兩個執行緒(核心)共用浮點執行單元,但是各自具有獨立的整數執行資源。這看上去像是SMT的另一種形式,或者說是經過AMD改良的一種“AMD式的第三種方式」。但與傳統的SMT設計不同,SMT僅僅複製的是核心的儲存部分,一個執行緒一個儲存模組(registerfile),而AMD“推土機」架構中,每個執行緒複製的是完整的整數執行單元硬體,一個執行緒具有一個儲存模組(registerfile)和一組完整的整數執行單元。


IT145.com E-mail:sddin#qq.com