I am developing a real-time system that sometimes has to duplicate a large amount of memory. The memory consists of small areas, so I expect that the copy performance will be close enough to the maximum bandwidth that the corresponding components (CPU, RAM, MB) can perform. It made me think about what type of memory for primary memory can be used to collect product data?
My aging Core2Duo gives me 1.5 GB / s if I use 1 stream before memcpy() (and, of course, less if I memcpy() with both cores at the same time.) Although 1.5 GB is enough data, In real time, the application I'm working on will have approximately 1/50 of a second, which means 30 MB. In fact, almost nothing. And perhaps worst of all, as I add several cores, I can process much more data without increasing performance for the necessary duplication step.
But the low-end Core2Due these days is not quite hot. Are there any sites with information, such as actual benchmarks, about raw memory bandwidth in the current and near future?
Also, to duplicate large amounts of data in memory, are there any shortcuts or is memcpy() as good as it gets?
Given a bunch of cores that have nothing to do with duplicating as much memory as possible in a short amount of time, what can I do best?
EDIT: I'm still looking for good information on raw memory performance. I just ran my old memcpy() test. The same computer and settings now give 2.5 GB / s ...
source share