2 ms·
>The movdqa instructions have to do with accessing memory, and it spends 32% of its time on those instructions So I think that means that it spends 32% of its t
by kevindqc 9y ago
>The movdqa instructions have to do with accessing memory, and it spends 32% of its time on those instructions So I think that means that it spends 32% of its time accessing RAM, and the other 68% of its time doing calculations.
I think that's wrong? The first movdqa (15%) moves from RAM to a register, but the second movdqa (17%) moves from one register to another?
17% seems a lot for something that simply moves from a register to another register! It's even slower than the first movdqa, moving from RAM to register, but registers are supposed to be something like 2 orders of magnitude faster to access than RAM (don't remember exactly).
Maybe it's because there are data dependencies? The 3 instructions before the 2nd movdqa use the register xmm0, so the movdqa has to wait for these to finish before it can execute (aka bubble or pipeline stall)
https://en.wikipedia.org/wiki/Bubble_(computing) https://en.wikipedia.org/wiki/Bubble_(computing)
- em3rgent0rdr 9y agoAlso I'm not sure it makes sense to say the program spends X% time with memory and (100-X)% time with computation. Really a CPU will overlap memory access with compute.