潮声隔雨深 · 2020年04月05日

cortex-a53 A64模式 如何发出INCR(2 or 4)传输去访问normal non-cacheable属性空间

在使用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 个回答 得票排序 · 时间排序
一知半解 · 2020年04月05日

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指令。

你的回答