Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
AXI transaction when ldm/stm instruction used on cortex-a9
Locked
Locked
Replies
5 replies
Subscribers
119 subscribers
Views
4611 views
Users
0 members are here
Options
Share
More actions
Related
How was your experience today?
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
Jerry Fan
over 12 years ago
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
Quote