棋子 · 2019年12月18日

更多AXI读写顺序

在另一个发布中,给出的场景存在RAW危险,其中可缓冲写入之后是对重叠地址的读取。听起来主机在收到BRESP时的假设是可以发出具有地址重叠的读取,并且将在写入之后对AXI进行排序,以使读取返回新数据。

但是,如果没有地址重叠,则主机是否假设读取可能最终将写入超出AXI范围?

此外,什么才算是地址重叠?重叠范围是否被视为对写入和读取的AADDR,ASIZE,ALEN,ABURST信号所控制的范围的影响?

最后,为什么在规范第8.6节中的存储区域和外围区域之间有区别?如果主人不能在两者之间辨别,是否应该假设最悲观的观点,即假设处于外围区域?

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2019年12月18日

不需要任何地址重叠,只要主机看到任何写访问的BRESP,就可以假定传输已完成。

在更简单的地址重叠情况下,任何缓冲了写数据的从站都必须对后续的读访问进行危害检查。

在非重叠的情况下,我将写入描述为“控制”访问,只要主控制器看到BRESP,它就会尝试读取,前提是控制访问已切换任何需要的更改。

这就是为什么我建议不应将这种类型的“控制”写访问定义为可缓冲的,因此,只有在执行“控制”操作后才能获得BRESP。

至于什么是“地址重叠”,我希望这是AxADDR,AxSIZE,AxLEN和AxBURST控件定义的整个地址区域。

最后,规范中的内存和外围区域之间的区别大致是我们一直在讨论的内容,即,内存区域可以依靠AXI从属设备对缓冲写入进行危险检查,但是外围区域将是I / O类型访问,访问排序可能没有发生地址重叠检测很重要。

如果您想将某些内存映射用作支持可缓冲访问,则需要将其编程到AXI主设备中,以便它知道可以使用哪种访问类型。通常,这将在AXI主站内的某种MMU或MPU中完成。

这样,主AXI接口便知道外围区域和内存区域之间的区别,如果不知道,则必须假定所有可用内存空间都是不可缓冲的,以确保在有RAW或WAW排序要求的情况下正确排序。

无论如何,这是我的想法,也许其他人会有不同的看法。

你的回答