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]


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


    The MMU and caches are both disabled.

    OK, so there can't be any memory access optimization. All memory is treated as strongly ordered (sort of). This means that all accesses to load registers must be 32bit accesses. According to section 8.1.2 in the Cortex-A9 TRM, 32bit write transactions can only come in bursts of lengths 1 or 2. For reading, bursts lengths of up to 16 beats are supported. That explains the observed behavior.

    Kindly
    Marcus
Reply
  • Note: This was originally posted on 19th September 2011 at http://forums.arm.com


    The MMU and caches are both disabled.

    OK, so there can't be any memory access optimization. All memory is treated as strongly ordered (sort of). This means that all accesses to load registers must be 32bit accesses. According to section 8.1.2 in the Cortex-A9 TRM, 32bit write transactions can only come in bursts of lengths 1 or 2. For reading, bursts lengths of up to 16 beats are supported. That explains the observed behavior.

    Kindly
    Marcus
Children
No data