Hi,
在使用cortex-a53访问normal non-cacheable属性空间时遇到如下问题,麻烦专家们帮忙解答,多谢
1.cortex-a53访问normal non-cacheable属性的地址空间,使用连续的ldp,发出的读传输都是arlen=0的传输,如何才能发出INCR(2 or 4)的读传输呢? 2.cortex-a53访问normal non-cacheable属性的地址空间,使用连续的stp,目前发出的写传输均是awlen>0的传输,想问一下,什么情况下连续的stp发出的写传输awlen会是0呢?
1:在AArch64下,使用LDP访问normal non-cacheable memory,如果地址是对齐的,AXI的transaction attribute和一条LDP指令传输的size是match的。例如:如果使用 ldp x0, x1, [x10],会看到一个single 128bit的read。如果使用ldp q0, q1, [x10], 会看到INCR2 128bit的一个read。(AArch64应该很难发INCR4的burst)。
2: 对normal memory(包括normal non-cacheable)的写操作,处理器都会尝试在Store buffer进行merge之后再往外发,所以你看到的现象是符合预期的。如果想让A53发single的wirte, 可以在指令之间插dmb或者dsb指令。
感谢您的回答!
还有个问题需要问一下,如果没有配置fpu,那么LDP访问normal non-cacheable memory就不能发INCR2的read了,是吗?
期待您的答复。
是的,如果地址是对齐的话。
如果地址不对齐,LDP还是有可能发INCR2或者INCR4的burst。
顺便提一下,我们一般不expect客户会不配FPU。
感谢提醒!
你好,如果配置的属性是Device bufferable,stp/ldp可以发出INCR2或INCR4传输吗?我这边仿真看波形,是不会merge的,但是Device bufferable不是也应该进store buffer进行merge吗?
期待您的专业解答!
Device bufferable具体是指哪种?如果是Device-GRE的write,应该是可以merge的。
嗯,明白了!因为我配置的是nGnRE,所以不会merge,多谢多谢!
对于Device-GRE属性,什么场景下会设置这种属性呢?我们现在的应用中外设都是设置的Device-nGnRE.
Device-GRE和Normal Non-cacheable很像,但是不允许speculative access。一般外设都会使用Device-nGnRE type因为通常我们不会希望write可以merge。
感谢您的专业解答!!