3 ms·
If the problem was just the time taken to do a 1MB copy inside a loop, why did you say the problem was clearing the CPU caches?
by dbaupp 12y ago
If the problem was just the time taken to do a 1MB copy inside a loop, why did you say the problem was clearing the CPU caches?
- pling 12y agoBecause the CPU has 32k of cache in this case (ARM) so the memcpy was evicting the entire cache several times in the loop as a side effect of doing the work. The actual function of the loop had good cache locality as the data was 6 stack vars totalling about 8k.
- dbaupp 12y agoSo? Copying a megabyte is a really expensive thing to do inside a loop, even ignoring caches. (A full speed memcpy would take 40 microseconds, based on a memory bandwidth of 24 GB/s, which is a long time.)