Performance 哪个微处理器的指令延迟最低?

Performance 哪个微处理器的指令延迟最低?,performance,intel,future,cpu-architecture,microprocessors,Performance,Intel,Future,Cpu Architecture,Microprocessors,管道的性能取决于指令延迟。哪种微处理器在流水线上的性能最好?(英特尔)流水线技术在未来将如何发展?大多数CPU对常见指令(如add)有1个周期的延迟。英特尔CPU对整数SIMD指令(如padd xmm、xmm)有1个周期的延迟。FP math的延迟更高,如Skylake上的mul/add/FMA有4个周期 整数乘法和其他东西(例如popcnt、lzcnt)在Intel上是3个周期的延迟,在端口1的执行单元上运行。(唯一可以运行多周期延迟UOP的GP integer ALU。)Sandybridg

管道的性能取决于指令延迟。哪种微处理器在流水线上的性能最好?(英特尔)流水线技术在未来将如何发展?

大多数CPU对常见指令(如
add
)有1个周期的延迟。英特尔CPU对整数SIMD指令(如
padd xmm、xmm
)有1个周期的延迟。FP math的延迟更高,如Skylake上的mul/add/FMA有4个周期

整数乘法和其他东西(例如popcnt、lzcnt)在Intel上是3个周期的延迟,在端口1的执行单元上运行。(唯一可以运行多周期延迟UOP的GP integer ALU。)Sandybridge系列标准化延迟以简化调度程序(更容易避免写回冲突),因此没有2周期延迟UOP。(一些2-uop指令有2c延迟,每个uop 1个。)


英特尔自IvyBridge可以运行
mov-reg,reg
movdqa-xmm,xmm
指令,具有0个周期延迟
,在寄存器重命名阶段处理它们,而无需后端uop。看AMD,因为推土机可以为XMM寄存器做同样的事情,AMD,因为Zen也可以为整数寄存器做同样的事情

另请参阅指令表(延迟、前端uop成本和后端端口)和微通道指南,以了解这些数字的含义


除了零延迟之外,配备双泵ALU的英特尔奔腾4(普雷斯科特之前)是唯一一款拥有小于1周期延迟指令的x86 CPU。它可以在同一时钟周期内执行两个相关的
添加
指令;ALU潜伏期为0.5个周期。我不知道是否有任何非x86微体系结构曾经这样做过;我知道有些人使用了更窄的ALU,但通常这些都不是高性能的

64位P4(普雷斯科特/诺科纳)放弃了这一点;ALU仍然是双泵的吞吐量,但不能在同一周期内进行2次相关的加法。(). Agner Fog将
add
延迟显示为1个周期

不幸的是,P4的其余部分充满了瓶颈和性能陷阱/“玻璃颚”效应,因此真实世界的性能远低于现代CPU,如Sandybridge系列或Zen。IDK半周期整数ALU延迟对现代CPU有多大好处。(64位整数的实现可能有问题;即使P4 NoCONA也没有这样做。但是考虑起来很有趣。) 经常出现的无序执行会通过重叠独立工作来隐藏延迟。使代码尽量缩短关键路径的编译器会有所帮助

哪个微处理器在流水线上的性能最好

这是一个非常不同的问题,范围更广。参考SPECint和SPECPP等基准测试,了解真实工作负载上的性能。(尽管这包括内存)

管道技术在未来将如何发展

在更大的窗口上提取ILP时,更宽、更严重的错误

管道不太可能变得更长;P4在这条路上走到了分支机构预测失误成本过高的地步

但多周期延迟指令也不太可能获得更低的延迟。乘法比加法复杂,浮点复杂。在时钟周期中降低这些ALU的延迟将限制时钟速度,因为这些ALU中的一个阶段将位于传播延迟的关键路径上

(CPU中最长的单管道级,以门延迟或纳秒为单位,设置最大时钟速度=>最小周期时间。)

有些软件可以利用线程级并行性。当在同一物理内核上运行多个延迟受限线程时,CPU可以并且确实利用超线程(SMT)来保持执行单元的工作状态。值得注意的是,Xeon Phi(KNL)比Skylake具有更高的向量指令延迟,并且在单个指令流中没有足够ILP的代码中,依赖4宽SMT获得良好性能