2014-04-21 86 views
7

我一直在尋找相當長的一段時間,似乎無法找到一個官方/結論性數字,指出英特爾至強四核可以完成的單精度浮點運算/時鐘週期數。我有一個Intel Xeon四核E5530 CPU。每個週期的浮點運算 - 英特爾

我希望用它來計算我的CPU可以達到的最大理論FLOP/s。

MAX FLOPS =(芯#號)*(時鐘頻率(週期/秒))×(#FLOPS /循環)

任何指向我在正確的方向將是有用的。我發現這個 FLOPS per cycle for sandy-bridge and haswell SSE2/AVX/AVX2

的Intel Core 2和Nehalem的:

4個DP觸發器/週期:2-寬SSE2加成+ 2範圍內的SSE2乘法

8 SP觸發器/週期:4全SSE加+4全SSE乘法

但我不確定這些數字是在哪裏找到的。他們是否假設融合乘法加法(FMAD)操作?

編輯:在DP中使用這個,我計算出英特爾引用的正確的DP算術吞吐量爲38.4 GFLOP/s(引用here)。對於SP,我得到了兩倍,即76.8 GFLOP/s。我很確定4個DP FLOP /週期和8個SP FLOP /週期是正確的,我只是想確認他們如何得到4和8的FLOPs /週期值。

+2

( 8 SP FLOPs /週期)*(4核心)*(2.4GHz)= 76.8 GFLOP/s。處理器每個週期都可以執行加法和乘法指令。但他們沒有融合。 – Mysticial

+0

你可能找不到一個官方號碼,因爲它沒有一個 - 它高度依賴於你的指令組合,以及它們之間的依賴關係。理論上的最大值可能會被計算出來,但是有很少有用的真實世界的程序(合成基準除外)能夠正確地按照正確的順序完成指令組合,以達到最大限度的... – twalberg

+1

如果你好奇看看如何實現最大FLOP/s,看看:http://stackoverflow.com/questions/8389648/how-do-i-achieve-the-theoretical-maximum-of-4-flops-per -cycle這是一個雙精度,但它可以很容易地修改爲單精度。 – Mysticial

回答

6

Nehalem能夠執行4個DP或8個SP FLOP /循環。這是通過使用SSE完成的,該SSE對打包浮點值進行操作,2/DP寄存器和SP寄存器中的4 /寄存器。爲了達到4個DP FLOP /週期或8個SP FLOP /週期,核心必須在每個週期執行2個SSE指令。這是通過每個週期執行MULDP和ADDDP(或MULSP和ADDSP)來完成的。這是可能的原因是因爲Nehalem具有獨立的SSE乘法和SSE加法的執行單元,並且這些單元是流水線的,因此throughput是每個週期一個乘法和一個加法。乘法器流水線中的乘法在SP中有4個週期,在DP中有5個週期。添加劑在管道中進行3次獨立於SP/DP的循環。管道中的週期數被稱爲latency。要計算峯值FLOP /週期,您只需要知道吞吐量。因此,對於乘法器和加法器(2個執行單元),吞吐量爲1 SSE向量指令/週期,DP中有2 x 2 = 4 FLOP /週期,SP中有2 x 4 = 8 FLOP /週期。要實際維持這個峯值吞吐量,您需要考慮延遲(因此管道中的獨立操作數至少與管道深度一樣多),並且需要考慮能夠足夠快地提供數據。 Nehalem擁有​​一個集成的內存控制器,能夠從內存獲得非常高的帶寬,如果數據預取器能夠正確預測數據的訪問模式(從內存順序加載是一種可預期的微不足道的模式),它可以實現這一點。通常,沒有足夠的存儲器帶寬來維持以峯值FLOP /週期爲數據提供所有內核,因此爲了維持峯值FLOP /週期,必須重新緩存來自緩存的數據量。

有關獨立執行單元數量及其週期吞吐量和延遲信息的詳細信息。

請參閱第105頁8。9個執行單元本文檔的

http://www.agner.org/optimize/microarchitecture.pdf

它說,爲的Nehalem

端口0上的浮點乘法器有4個單精度和5雙和長雙精度的等待時間。除了Core2上的長雙精度外,浮點乘法器的吞吐量每個時鐘週期爲1次操作。浮點加法器連接到端口1.它的延遲爲3,並且是完全流水線的。

爲了獲得8個SP FLOP /週期,您需要4個SP ADD /週期和4個SP MUL /週期。加法器和乘法器位於不同的執行單元中,並從不同的端口分派,每個可以使用SSE打包(向量)指令(4x32bit = 128bits)同時在4個SP打包操作數上執行。每個時鐘週期都有1個操作的吞吐量。爲了獲得吞吐量,您需要考慮延遲......在指令發佈後多少個週期才能使用結果..因此您必須發佈幾條獨立的指令來覆蓋延遲。在單精度乘法器有4潛伏期和3

加法器可以將英特爾優化指南中找到的Nehalem這些相同的吞吐量和延遲的數字,表格C-15A

http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html