This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AXI transaction when ldm/stm instruction used on  cortex-a9

Note: This was originally posted on 15th September 2011 at http://forums.arm.com

HI, ARM experts

I used ldm/stm instruction to copy(read-write) memory with caches disabled. The code is listed as:
int memcpy_8_regs(uint32_t * dst, uint32_t * src, uint32_t len)
{
    asm volatile ("stmfd   sp!, {r3-r10}\n");
    while(len){
        asm volatile ("ldmia   r1!, {r3-r10}\n");
        asm volatile ("stmia   r0!, {r3-r10}\n");
        len -= 32;
    }
    asm volatile ("ldmfd  sp!, {r3-r10}\n");

    return 0;
}
[font="Arial"]The code was run in a simulation enviroment and the operation of arm core can be observed.
The arm core issued a axi transaction with 16(bits) * 4(length) for write access, while a  32(bits) * 8(length) transaction for read access. It is kind of werid. Why not a 32(bits) * 8(length) transaction can be issued to get a maximum throughput? The limitation is because of the cortex-a9 arch?

BR
Jerry

[/font]


0