首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个周期的浮点运算-英特尔

每个周期的浮点运算-英特尔
EN

Stack Overflow用户
提问于 2014-04-21 18:45:10
回答 1查看 18.2K关注 0票数 10

我已经寻找了很长一段时间,似乎找不到一个官方的/决定性的数字,引用了一个英特尔Xeon四核可以完成的单个精确浮点操作/时钟周期的数量。我有一个英特尔Xeon四核E5530处理器。

我希望用它来计算我的CPU所能达到的最大理论触发器。

最大触发器= (#核数)*(时钟频率(周期/秒))* (#触发器/周期)

任何指向正确方向的东西都是有用的。我找到了这个沙桥和haswell SSE2 2/AVX/AVX 2的每周期滑道

Intel Core 2和Nehalem: 4 DP触发器/周期:2宽SSE2加法+2宽SSE2乘法 8个SP触发器/周期:4宽SSE加法+4宽SSE乘法

但我不知道这些数字是在哪里找到的。他们是否假设一个融合乘法加法(FMAD)操作?

编辑:使用这个,在DP中,我计算出英特尔引用的正确的DP算术吞吐量为38.4GFLOP/s(引用了这里)。对于SP,我得到了两倍,76.8GFLOP/s。我很确定4DP触发器/周期和8个SP触发器/周期是正确的,我只想确认它们是如何得到FLOPs/周期值4和8的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 19:18:55

Nehalem能够执行4 DP或8 SP触发器/周期。这是使用SSE实现的,SSE对填充浮点值进行操作,DP中使用2/寄存器,SP中使用4/寄存器。为了实现4个DP触发器/周期或8个SP触发器/周期,核心必须每个周期执行2个SSE指令。这是通过每个周期执行MULDP和ADDDP (或MULSP和ADDSP)来实现的。之所以可以这样做,是因为Nehalem为SSE乘和SSE add有单独的执行单元,并且这些单元是流水线的,因此throughput是一个乘和一个加一个循环。乘法器在SP中有4个循环,在DP中有5个循环。与SP/DP无关,Adds在流水线上运行了3个周期。管道中的循环数称为latency。要计算峰值触发器/周期,您只需要知道吞吐量。因此,对于乘法器和加法器(2个执行单元),吞吐量为1 SSE向量指令/周期时,DP中为2x2=4触发器/周期,SP为2x4=8触发器/周期。要真正维持这个高峰吞吐量,您需要考虑延迟(因此,在管道中至少有与管道深度一样多的独立操作),并且需要考虑是否能够足够快地提供数据。Nehalem有一个集成的存储器控制器,它能够从内存中获得很高的带宽,如果数据预取器正确地预测数据的访问模式(从内存中顺序加载是它可以预测的一个微不足道的模式),它就可以实现这个功能。通常,没有足够的内存带宽来支持以峰值触发器/周期的方式向所有核心提供数据,因此需要对缓存中的数据进行一定量的重用才能维持峰值触发器/周期。

以下是有关独立执行单元的数量及其吞吐量和延迟的详细信息。

见本文档第105页8.9执行单元

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

上面写着尼哈勒姆

端口0上的浮点乘法器对于单精度和双长双精度的延迟分别为4和5。浮点乘法器的吞吐量除在Core2上长双精度外,每时钟周期为1次运算。浮点加法器连接到端口1,延时为3,完全流水线。

为了得到8个SP触发器/周期,您需要4个SP添加/循环和4个SP MUL/周期。加法器和乘法器在单独的执行单元上,并从不同的端口分配,每个加法器都可以使用SSE打包(向量)指令(4x32位=128位)在4个SP打包操作数上同时执行。两者的吞吐量为每个时钟周期一个操作。为了获得吞吐量,您需要考虑延迟.在使用结果之前,在指令问题发生后有多少周期。因此,您必须发布几个独立的指令来覆盖延迟。单精度乘法器的延时为4,加法器为3。

您可以在Intel优化指南(表C-15a )中找到Nehalem的这些相同的吞吐量和延迟号。

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23203710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档