我正在设计一个偶尔需要复制大量内存的实时系统。内存由非微小区域组成,因此我预计复制性能将相当接近相关组件(CPU、RAM、MB)可以执行的最大带宽。这让我想知道现代商品机器可以召集什么样的原始内存带宽?
如果我使用 1 个线程,我老化的 Core2Duo 给我 1.5 GB/s memcpy()
(如果我同时使用两个内核,可以理解更少memcpy()
。)虽然 1.5 GB 是相当多的数据,但我正在处理的实时应用程序将有大约是 1/50 秒,这意味着 30 MB。基本上,几乎没有。也许最糟糕的是,当我添加多个内核时,我可以处理更多数据,而无需为所需的复制步骤增加任何性能。
但如今,低端 Core2Due 并不是很热门的东西。是否有任何网站提供有关当前和近期硬件上的原始内存带宽的信息,例如实际基准测试?
此外,对于在内存中复制大量数据,是否有任何捷径,或者memcpy()
尽可能好?
鉴于一堆核心无事可做,只能在短时间内复制尽可能多的内存,我能做的最好的事情是什么?
编辑:我仍在寻找有关原始内存复制性能的良好信息。我刚刚运行了我的旧memcpy()
基准。相同的机器和设置,现在提供 2.5 GB/s...