在CA53的TRM中,关于ACE transfer有以下描述
For Non-cacheable transactions:• INCR N (N:1, 2, or 4) 128-bit for write transfers.
想请教一下,CPU中执行什么样的指令,会在总线上产生 INCR4 128bit的write transfer
多谢!
下面的code可以让A53产生一个128bit INCR4 burst write.
ldr x2, =0x4
loop: stp x0, x1, [x10] ;; x10 is normal non-cacheable memory address and aligned to 64 bytes
add x10, x10, #0x10
subs x2, x2, #1
bne loop
Hi Joey,
非常感谢你的答复。
如果按下面的写法,是否也能产生128Bit的INCR4呢?
;; x10 is normal non-cacheable memory address
stp x0, x1, [x10]
add x10, x10, #10
stp x2, x3, [x10]
如果x10是个Device地址,nGnRnE, 按照上面的写法,能否也产生128bit的INCR4呢?
BR
Yu
你好,你的code只写了64x4 bits数据,所以应该不会看到INCR4的Burst (应该是一个INCR2的Burst)。如果把memory type改成Device memory,我的code也不能产生INCR4的Burst。
Joey,你好,
在A53的TRM中,提到ACE transfer feature
For Device transactions:• INCR N (N:1, 2, or 4) 128-bit read transfers.• INCR N (N:1, 2, or 4) 128-bit write transfers.
如果按照下面的写法,会产生INCR4的Burst吗?
;; x10 is Device memory address
stp x0, x1, [x10], #16
stp x2, x3, [x10], #16
stp x4, x5, [x10], #16
stp x6, x7, [x10], #16
Hi Yu, 你好。
如果是Device-GRE memory的话,你的上面的code可以产生INCR4 burst write。如果是其它Device memory type不能产生INCR4 burst。
如果要使用其它Device memory type (比如Device nGnRE),只能在aarch32下用STM产生INCR4 burst write。比如:
stm [r0], {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13}
非常感谢你的回答。