Level Two Interface
ARM DDI 0363E Copyright © 2009 ARM Limited. All rights reserved. 9-18
ID013010 Non-Confidential, Unrestricted Access
Example 9-1 Write merging
MOV r0, #0x4000
STRH r1, [r0, #0x18]; Store a halfword at 0x4018
STR r2, [r0, #0xC] ; Store a word at 0x400C
STMIA r0, {r4-r7} ; Store four words at 0x4000
STRB r3, [r0, #0x1D]; Store a byte at 0x401D
If the memory at address
0x4000
is marked as Strongly Ordered or Device type memory, the AXI
transactions shown in Table 9-23 are generated.
In the example above, each store instruction produces an AXI burst of the same size as the data
written by the instruction.
Table 9-24 shows a possible resulting transaction if the same memory is marked as
Non-cacheable Normal, or Cacheable write-through.
In this example:
• The store buffer has merged the
STRB
and
STRH
writes into one buffer entry, and therefore
a single AXI transfer, the fourth in the burst.
• The writes, which occupy three buffer entries, have been merged into a single AXI burst
of four transfers.
• The write generated by the
STR
instruction has not occurred, because it was overwritten by
the
STM
instruction.
• The write transfers have occurred out of order with respect to the original program order.
Table 9-23 AXI transactions for Strongly Ordered or Device type memory
AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM
0x4018
Incr 16-bit 1 data transfer 0b00000011
0x400C
Incr 32-bit 1 data transfer 0b11110000
0x4000
Incr 32-bit 4 data transfers 0b00001111
0b11110000
0b00001111
0b11110000
0x401D
Incr 8-bit 1 data transfer 0b00100000
Table 9-24 AXI transactions for Non-cacheable Normal or Cacheable write-through
memory
AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM
0x4000
Incr 64-bit 4 data transfers 0b11111111
0b11111111
0b00000000
0b00100011