AXI学习笔记(2)

在write transaction中,如果数据握手早于地址握手时会出问题吗?

一般情况下,在master的输出时一般会将数据以及地址存放在寄存器中,使得bus可以尽快进行下一个数据尽快发出来,slave可以使用buffer进行数据预存,提高数据的吞吐量。

 

AxCACHE这个信号的功能?

AxCACHE这个信号主要分为bufferable和cacheable,在AXI4中将cacheable改成了modifiable。

Master在发出读写的request时,中间需要经过很多的buffer才能送到memory中,这些buffer的添加主要是为了时序性能等方面的优化。Buffer分为两种:一种为FIFO结构,仅仅是保存发送request给下一级或者返回response给上一级。另一种buffer在接受了上一级的request后立刻给上一级回response,告诉上一级这个操作已经完成了,但是实际上这个操作并没有发送到下一级buffer,更没有送到memory中。Read操作中,如果某处的buffer的write data channel中有read需要的数据,就可以直接返回,而不需要访问memory,如果没有则要把request发送到下一级。总之,所有的访问都是需要经过buffer的,是否bufferable取决于何时由谁返回response,在于是否要把request送到最终的memory。

Cacheable表示在transaction从master发起到最终的memory过程中,是否需要去经过的cache中查找自己需要的数据,或者是是否更新cache。

 

Read/write through/back/allocate区别

CPU读cache时:

l  若hit,则CPU直接从Cache中读取数据

l  若miss,有两种处理方式:

Read through,即直接从内存中读取数据

Read allocate,先把数据读取到cache中,再从cache中读数据

CPU写cache时:

l  若hit,有两种处理方式:

Write through,把数据同时写道cache和memory中

Write back,先把数据写到cache中而不写入内存。只有在数据被替换出缓存时,被修改的缓存数据才会被写到memory中。

l  若miss,有两种处理方式:

Write allocate,先把数据从memory中加载到cache中,然后再写cache

No write allocate,直接把要写的数据写入memory中。

posted on 2019-07-24 10:20  六六六六的学习笔记  阅读(931)  评论(0编辑  收藏  举报