【Microarchitecture of Intel and AMD CPU】 9 Sandy Bridge and Ivy Bridge pipeline 【9.1~9.3】

Intel命名Sandy Bridge 的微架構是基於Core 2 和Nehalem的第二代設計。在解碼器後面加入了新的uop cache,並且浮點執行單元從128bit擴展到256bit。

Sandy Bridge 有2-8 個core,其中的一些版本可以在每個core上運行雙線程。

支持新的AVX 指令。將16個128bit的XMM寄存器擴展到256bit的YMM寄存器用於支持浮點向量運算。大多數的XMM和YMM指令是AVX指令集中non-destructive three-operand 版本。

9.1 Pipeline

Sandy Bridge 和 Ivy Bridge 與Core2 和 Nehalem的流水線非常類似,但是在譯碼器後面增加了uop cache。

Sandy Bridge 的重排序緩衝區有168項,Ivy Bridge 的有192項。Sandy Bridge 的保留站有54項,Haswell有60項。Sandy Bridge 有160個整數寄存器和144個向量寄存器。Haswell各有168個。

9.2 取指和解碼

預先解碼和解碼器可以每週期處理16byte或者是4條指令。在macro-op fusion的情況下可以處理5條指令。這看上去基本上和Core2 和Nehalem中的基本一致。

任意個數前綴的指令都可以單週期被譯碼掉。

在一些case中,變長前綴的懲罰已經被解決。還有一部分遺留:

  • 使用立即數的move指令沒有懲罰
  • 使用立即數的算術和邏輯計算有2-3個週期的懲罰
  • 單16bit操作數的NEG,NOT,DIV,IDIV,MUL和IMUL指令沒有懲罰
  • 地址大小前綴沒有懲罰,即使已經改變了指令長度。

有4個譯碼器,可以在特定模式下處理一條或者多條uops。如下的指令在我個人的測試中,在單週期被成功地解碼。

  • 1-1-1-1
  • 2-1-1
  • 3
  • 4

產生3-4條uops的指令被單獨的譯碼。產生超過4條uop的指令由microcode處理,較爲低效。

多byte的NOP指令和操作數0F,1F 只能在Sandy Bridge的第一個譯碼器中譯碼。然而一個簡單的NOP,帶有格外的前綴(opcode 66 66 90)可以被四個譯碼器中的任意一個譯碼。Ivy Bridge 對此沒有限制。在Ivy Bridge 中,長NOPs可以按照每週期4條指令的速度譯碼。

9.3 uop cache

Sandy Bridge 和Ivy Bridge 在decoders之後有一個cache用於存放解碼過的微指令。考慮到平均指令長度超過4byte,fetch和譯碼單元每週期傳輸16byte將會是一個很嚴重的瓶頸。因此這個uop cache將會十分有效。uop cache使吞吐率加倍達到每週期32byte。

uop cache爲32sets * 8 ways * 6uops,總計最多可以存儲1536條uops。它一次最多分配3line * 6uops 給對齊且連續的32-byte 指令。

來自uop cache的code,不會被fetch和解碼單元所限制。它可以實現4uops的吞吐率,等效於每週期32byte的指令。

Uop cache很少能夠用滿1536條uops。無法發揮全部潛能的原因如下:

  • uop cache line是被分配到特定的32 byte 指令block。 新的uop cacheline將被分配到新的 32byte 邊界。即使前一條uop cacheline只被部分使用
  • 產生多條uops的指令不能佔用兩個uops cache line。如果指令不能完全的被兩條 cacheline所打斷,那麼剩餘的cache line就不會被使用。它會另起一行,放入新的cache line
  • 產生超過4條uops的使用microcode ROM。這樣的指令會使用完整的一條cacheline
  • 無條件跳轉和調用函數指令通常結束 uop cacheline
  • 要求超過32bit的存儲空間的指令可能佔用uop cache 中的兩項,加載時可能會多花費一個週期
  • 每週期不能加載超過一條cache line。這在多個指令使用兩項時,可能會造成瓶頸
  • 一個32byte 的指令block 產生超過18條uops 或者要求uop cache中的18 項的指令不會被分配到uop cache中
  • pipeline頻繁的在譯碼單元和uop cache之間切換,切換可能會花費一個週期。

 


翻譯自【Microarchitecture of Intel and AMD CPU  An optimization guide for assembly programmers and compiler makers】

歡迎關注我的公衆號《處理器與AI芯片》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章