TI中文支持网
TI专业的中文技术问题搜集分享网站

EDMA数据搬移(DM8148)

Hello,

用EDMA传送数据在L2内存和DDR3之间,该段内存没有被cache使能。

这样的话,我就不用在数据从DDR搬到L2之前,对其cache_Inv无效,处理完,从L2搬到DDR,也不用cache_Wb.

因为该段L2本事没有cache。这样的理解是否正确?

如果在没有cache的内存段L2,使用cache_Inv,cache_Wb会出现什么样的结果?

非常感谢!

BRS,
Meng

Chris Meng:

Lingcon Meng

该段内存没有被cache使能。

请问你这里说的内存是L2对么?如果是,你的理解有些偏差。L2如果不配置为cache,硬件是是会自动做cache维护,不需要用户手动调用代码。如果你是要EDMA搬移的DDR段设置为非cache,那就不需要对DDR段做cache_inv/cache_wb的相关操作了。

Lingcon Meng:

回复 Chris Meng:

Hello Chirs,

非常感谢您的回复!

我说的是对L2,我现在搬移数据是从先从 DDR3搬移到 L2,算法开始运算,运算完成后,然后将计算结果再搬移到另一片DDR3.

并且该L2段没有被Cache,外存DDR3的范围位cache。

按您的解释:

1) DDR3–>L2 之前, L2 不需要cache_inv()操作。

       直接EDMA搬移就可以。

2)

       数据在L2运算完成后,计算结果从L2–>DDR3(EDMA操作)之后,需要做cache_wb()操作。

       

      我的理解正确吗?

另外一个问题:

     

    如果我直接通过EDMA,从一段DDR3外存(cache)搬移到另一片DDR3(Cache)外存,这样的情况,cache如何操作。     

     非常感谢!

BRS,

Meng

Lingcon Meng:

回复 Chris Meng:

Hello Chris,

非常感谢您的回复!

a)

重新看了一下解释,有点地方没太理解。

估计是我没有把问题描述清楚。

目前,我们的应用情况是,DDR3地址是cache的,L2是没有被cache。

数据流方向如下:

DDR3(cached)—>L2(no cached)—>DDR3(cached)

每一个阶段数据传送都是通过EDMA3完成。

依据以前对cache一致性理解。DDR3数据搬移到L2之前,如果L2是被cache使能,需要cache_Inv()数据

到L2的目标地址,又结合您的解释,我们的L2是没有Cache的,因此L2 cache_Inv()是完全不

需要的。

那么DDR3—>L2之前,DDR3(cached)还需要做操作吗?如果是,都要做哪些操作?

b)

另外数据通过EDMA 从 L2(no cached)—>DDR3(cached),根据您的解释是不需要任何回写操作的。

c)

数据通过EDMA3,直接从cached的DDR3到cached的DDR3,也就是说 数据通过EDMA3 从DDR3(cached)—>DDR3(cached),

通过你提供的查阅的文档可以获得答案。

 

非常感谢您给与的支持!

 

BRS,

Meng

Chris Meng:

回复 Lingcon Meng:

Lingcon Meng

a)

重新看了一下解释,有点地方没太理解。

估计是我没有把问题描述清楚。

目前,我们的应用情况是,DDR3地址是cache的,L2是没有被cache。

数据流方向如下:

DDR3(cached)—>L2(no cached)—>DDR3(cached)

每一个阶段数据传送都是通过EDMA3完成。

依据以前对cache一致性理解。DDR3数据搬移到L2之前,如果L2是被cache使能,需要cache_Inv()数据

什么叫L2是被cache使能的?L2可以配置为L2 RAM或者是L2 cache,你说的是哪种?

如果按照DDR3(cached)—>L2 RAM—>DDR3(cached)并且 每一个阶段数据传送都是通过EDMA3完成。对于DDR3(cached)—>L2 RAM,要保证DDR3上的数据是最新的,所以需要对DDR做cache写回。对于L2 RAM—>DDR3(cached),不需做任何cache操作,因为L2 RAM的自动被L1 cache的,而L1 cache的维护是系统自动完成的。

Lingcon Meng:

回复 Chris Meng:

Hello Chris,

非常感谢您的回复,我说的是L2 SRAM。

根据您的回复,DDR3(cached)—>L2 RAM—>DDR3(cached),数据搬移都是通过EDMA3完成,

只要在DDR3(cached)—>L2 RAM数据搬移之前,将DDR3的内容进行回写。

这样的回写,是通过L2WBAR(L2 Writeback Base Address Register )和 L2WWC( L2 Writeback Word Count Register )寄存来设置完成的吗?

回写的基地址是与EDMA3相关联的DDR3 所对应的地址?

还是DDR3 本身有相关的回写操作寄存器?

另外,cache无效时,无效的是L1或者L2的地址,还是无效的是其相关的DDR3的地址?

cache一致性这一块,个人感觉还是比较复杂的,原来自己接触的也比较少!

谢谢您的帮助。

BRS,

Meng

 

 

 

赞(0)
未经允许不得转载:TI中文支持网 » EDMA数据搬移(DM8148)
分享到: 更多 (0)