Performance 现代CPU的每刻度缓存带宽

Performance 现代CPU的每刻度缓存带宽,performance,caching,cpu,cpu-architecture,cpu-cache,Performance,Caching,Cpu,Cpu Architecture,Cpu Cache,现代CPU的缓存访问速度是多少?英特尔P4、Core2、Corei7、AMD每个处理器时钟周期可以从内存中读取或写入多少字节 请用理论数字(ld/sd单元的宽度,其吞吐量以uOPs/tick为单位)和实际数字(即使是memcpy速度测试或流基准测试)回答(如果有) PS这是一个问题,与汇编程序中指令的最大加载/存储速率有关。可以有理论上的加载速率(每个刻度上的所有指令都是最宽的加载),但处理器只能给出其中的一部分,加载的实际限制。最宽的读/写是128位(16字节)SSE加载/存储。L1/L2/L

现代CPU的缓存访问速度是多少?英特尔P4、Core2、Corei7、AMD每个处理器时钟周期可以从内存中读取或写入多少字节

请用理论数字(ld/sd单元的宽度,其吞吐量以uOPs/tick为单位)和实际数字(即使是memcpy速度测试或流基准测试)回答(如果有)


PS这是一个问题,与汇编程序中指令的最大加载/存储速率有关。可以有理论上的加载速率(每个刻度上的所有指令都是最宽的加载),但处理器只能给出其中的一部分,加载的实际限制。

最宽的读/写是128位(16字节)SSE加载/存储。L1/L2/L3缓存具有不同的带宽和延迟,这些当然是特定于CPU的。在现代CPU上,典型的L1延迟是2-4个时钟,但通常每个时钟可以发出1或2条加载指令


我怀疑在这里的某个地方潜藏着一个更为具体的问题——你真正想要实现的是什么?你只想写最快的memcpy吗?

为nehalem:rolfed.com/nehalem/nehalemPaper.pdf

Each core in the architecture has a 128-bit write port and a
128-bit read port to the L1 cache. 
128位=16字节/时钟读取 及 128位=16字节/时钟写入 (我可以在一个周期内结合读写吗?)

L2和L3读写端口能否在单个时钟中使用

Each integrated memory controller has a theoretical bandwidth
peak of 32 Gbps.
延迟(时钟滴答声),一些由CPU-Z或lmbench的lat_mem_rd测量——两者都使用长链表遍历来正确测量现代无序内核,如Intel Core i7

           L1     L2     L3, cycles;   mem             link
Core 2      3     15     --           66 ns           http://www.anandtech.com/show/2542/5
Core i7-xxx 4     11     39          40c+67ns         http://www.anandtech.com/show/2542/5
Itanium     1     5-6    12-17       130-1000 (cycles)
Itanium2    2     6-10   20          35c+160ns        http://www.7-cpu.com/cpu/Itanium2.html
AMD K8            12                 40-70c +64ns     http://www.anandtech.com/show/2139/3
Intel P4    2     19     43          200-210 (cycles) http://www.arsc.edu/files/arsc/phys693_lectures/Performance_I_Arch.pdf
AthlonXP 3k 3     20                 180 (cycles)     --//--
AthlonFX-51 3     13                 125 (cycles)     --//--
POWER4      4     12-20  ??          hundreds cycles  --//--
Haswell     4     11-12  36          36c+57ns         http://www.realworldtech.com/haswell-cpu/5/    
延迟数据的良好来源是,例如,对于Haswell:


有关lat_mem_rd程序的更多信息,请参阅其or。

@osgx:转到serverfault等,这不是一个编程问题吗?@TFD,不,这与编程密切相关。请参阅Robert Sch¨one、Wolfgang E.Nagel和Stefan Pfl¨uger的“分析Intel Core 2体系结构上的缓存带宽”,德国德累斯顿科技大学信息服务与高性能计算中心,邮编:01062。本文介绍了计算核心与不同缓存之间的带宽测量结果。流基准1是科学家用来确定内存带宽的最常用内核之一。为了更深入的了解,重新设计了流基准,以获得小问题大小的精确值。那么,您想知道“最大加载/存储指令速率”或“加载字节/周期”中的答案吗?答案完全不同。最近的CPU受指令的限制(例如,2次加载/周期)大于字节(因此字节加载和32字节加载的成本大致相同),至少在接近核心的缓存级别。对于DRAM来说,它更多的是缓存线/周期:也就是说,无论您是加载整行还是从中加载1个字节,它的成本都是一样的。谢谢。每个时钟可以发出多少SSE负载?我想找到几代x86的峰值负载/存储带宽。不仅是memcpy,还是一个普通的读写(更接近流基准)@osgx-这取决于CPU-Core 2和Core i7都可以每个时钟发出2个SSE负载大约最快的memcpy-是的,这个问题可以被重新解释为“理论上最快的memcpy是什么”(没有实际实现),而不仅仅是对于非常大的数据(通常),但尺寸太小(高达L1/2尺寸、高达L2/2尺寸、L3/3尺寸)。回答您自己的问题?你还没有解释你想用这些信息达到什么目的。如果这样做,您可能会得到一个更好的答案。二级缓存的256位端口是否意味着,在一级缓存未命中和二级缓存命中以及占用64字节缓存块的情况下,读取二级缓存块以将其写入一级缓存将持续2圈?
           L1     L2     L3, cycles;   mem             link
Core 2      3     15     --           66 ns           http://www.anandtech.com/show/2542/5
Core i7-xxx 4     11     39          40c+67ns         http://www.anandtech.com/show/2542/5
Itanium     1     5-6    12-17       130-1000 (cycles)
Itanium2    2     6-10   20          35c+160ns        http://www.7-cpu.com/cpu/Itanium2.html
AMD K8            12                 40-70c +64ns     http://www.anandtech.com/show/2139/3
Intel P4    2     19     43          200-210 (cycles) http://www.arsc.edu/files/arsc/phys693_lectures/Performance_I_Arch.pdf
AthlonXP 3k 3     20                 180 (cycles)     --//--
AthlonFX-51 3     13                 125 (cycles)     --//--
POWER4      4     12-20  ??          hundreds cycles  --//--
Haswell     4     11-12  36          36c+57ns         http://www.realworldtech.com/haswell-cpu/5/