This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cache 的更新周期



关于二级cache 的更新问题。

当CPU上电的时候,所有的指令和数据都存在SDRAM中或者DDR中。

1.这个时候,cache中有没有数据?L1 p 中 l1d 中 以及L2 cache中。

2.把数据从DDR或者SDRAM调入到cache的这个过程是自动完成?还是要人为操作?多久更新一次L1P L1D L2?

  • CPU上电时,SDRAM或DDR中不会有数据,所以这时cache中也没有数据。当bootloader将程序搬移到SDRAM或DDR中后,CPU开始读数据,这时cache中才有数据。数据从DDR或SDRAM调入到cache是自动完成的。

  • Hank Zhao 说:

    CPU上电时,SDRAM或DDR中不会有数据,所以这时cache中也没有数据。当bootloader将程序搬移到SDRAM或DDR中后,CPU开始读数据,这时cache中才有数据。数据从DDR或SDRAM调入到cache是自动完成的。

    谢谢,能说说具体搬运的过程么?

    1.

    我的理解应该要分数据和指令的啊。指令和数据的cache在从无到有的过程中,是一下子就充满了cache,还是说,每次自动读入一个cache line的长度?

    2.

    因为,cache要分两级的,你所说“数据从ddr到cache自动完成”,指的是  比如,数据导入cache的话,那么无论是L1D cache还是L2 cache 都保存了DDR的

    副本呢?还是怎样?

    3.

    cache中的数据从无到有的时候,是说,cache已经被装满了,还是说,只是装入了一个cacheline大小? 那么就存在另外一个问题,cache 如何更新,什么时候

    更新,一次更新一个cache line 还是更新整个cache?

  • 你好,

      建议你先从CACHE的几个术语以及cahce的回写机制及结构入手,就能够明白整个cache的工作过程及原理。这个可以详细阅读《TMS320C6000 DSP Cache User’s Guide》,下面是以C6000系列DSP的cache为例,谈一下我的个人理解。

    1.

    我的理解应该要分数据和指令的啊。指令和数据的cache在从无到有的过程中,是一下子就充满了cache,还是说,每次自动读入一个cache line的长度?

    Louis: 确实cache分为Data Cache和Instruct Cache两类,下面是一个L1P cache的结构。最左边的L2 SRAM line0 应该是0~1Fh,这里应该是笔误,一个cache line是32byte. 通过图表可以看出,由于L1P空间小于L2RAM,这样对于L1P 的line0来说,0h 与 4000h 都map到了同一的地方,当不存在cache 冲突的时候,是不会回写或者将这行清出cache的。 在CACHE的过程中,cache的每次操作都是以行为单位的,是不可能每次都将全部cahce进行操作的,也就是在无到有的过程是一个一行一行cache的过程,不会一下子充满。有一种方法可以快速充满data cahce,那就是每隔32个byte去读一个byte,这样只需要读512次,就可以将整个L1D充满。

    2.

    因为,cache要分两级的,你所说“数据从ddr到cache自动完成”,指的是  比如,数据导入cache的话,那么无论是L1D cache还是L2 cache 都保存了DDR的

    副本呢?还是怎样?

    Louis:是的,L1与L2的cache一致性是由DSP内部进行保证的。 L1D 与L2CAHCE 都保存了DDR的映射,这只是一个笼统的说法。由于L1和L2的调度机制,大小以及具体的过程,比如L1 32K, L2 64K, 这样L2必定有部分映射了DDR却又不在L1当中。这个要分不同的情况进行讨论。

    3.

    cache中的数据从无到有的时候,是说,cache已经被装满了,还是说,只是装入了一个cacheline大小? 那么就存在另外一个问题,cache 如何更新,什么时候

    更新,一次更新一个cache line 还是更新整个cache?

    Louis: TI提供的CSL库的API,可以进行整个flash的cahce更新或者使无效操作。cahce的更新机制同样请详细阅读《TMS320C6000 DSP Cache User’s Guide》以及相关的TI文档。 对于CPU本身来说,一次cache操作仅一个cahce line。 但是一次cache miss 可能会出现多个cache 操作。