2022年有关C6000DSP的Cache的操作.pdf

上传人:Q****o 文档编号:14529414 上传时间:2022-05-05 格式:PDF 页数:9 大小:676.05KB
返回 下载 相关 举报
2022年有关C6000DSP的Cache的操作.pdf_第1页
第1页 / 共9页
2022年有关C6000DSP的Cache的操作.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2022年有关C6000DSP的Cache的操作.pdf》由会员分享,可在线阅读,更多相关《2022年有关C6000DSP的Cache的操作.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、篇幅之一TI C64x+ DSP CACHE 一致性分析与维护作者:DSP 技术应用工程师陈永康摘要在各种数字信号处理系统中,CACHE被广泛用于弥补Core 与存储器之间的速度差异。在CACHE的使用过程中,存在不同类型存储器之间数据是否一致的问题。本文着重分析TI高性能 C64x+ DSP系列中各级CACHE之间数据一致性问题以及如何进行一致性维护。1. 概述CACHE作为 Core 和低速存储器之间的桥梁,基于代码和数据的时间和空间相关性,以块为单位由硬件控制器自动加载 Core 所需要的代码和数据。如果所有程序和数据的存取都由Core 完成,基于CACHE的运行机制, Core 始终能

2、够得到存储器中最新的数据。但是当有其它可以更改存储器内容的部件存在时,例如不需要 Core 干预的直接数据存取(DMA)引擎,就可能出现由于CACHE的存在而导致Core 或者 DMA 不能够得到最新数据的现象,也就是CACHE一致性的问题。2. C64x+ 存储器组织结构TI对高性能 C64x 核进行了改进,使其性能大大提升,称之为C64x+DSP核。基于 C64x+ 核开发的 DSP芯片,所有部件都以交换网络(SCR )为核心连接起来。 SCR上的部件分为两类: Master 和 Slave。 Master 包括 Core、EDMA以及串行高速IO(sRIO ) ,EMAC等外设。 Mas

3、ter 可以直接通过SCR发起到 Slave的数据传输。 Slave包括每一个 Core 的内存, DDR2外存以及其它不能直接发起数据传输的外设,Slave之间的数据传输,需要通过 DMA 协助完成。各款基于C64x+DSP 的数据手册上详细描述了SCR的配置和 Master、Slave的情况。C64x+系统的存储器框图如图1 所示。存储器被分成了三级:第一级是L1,包含数据存储器(L1D)和代码存储器 (L1P);第二级是代码和数据共用存储器(L2) ;第三级是外部存储器,主要是 DDR2存储器。 L1P、L1D和 L2 的 CACHE功能分别由相应的L1P控制器、 L1D控制器和 L2

4、控制器完成。表1 总结了 C64x+平台上可用的 CACHE情况。图1 C64x+存储器框图表1 C64x+ CACHE特性精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 9 页 - - - - - - - - - - 类型大小Line 大小L1P代码;直接映射;最大 32K 字节32 字节L1D数据; 2 路; 读分配最大 32K 字节64 字节L2代码、数据; 4 路;读写分配最大 256K 字节128 字节C64x+平台上 L1P用来存储或者缓存代码;L1D用来存储或者缓存数据。L1P

5、和 L1D 大小都是 32K 字节,可以分别配置 0K、4KB、8KB、16KB 或者 32KB作为 CACHE ,其余作为代码或者数据RAM。作为 CACHE的部分,用来缓存L2 和 DDR2的数据或代码。作为RAM 的部分,可以存储关键的代码或者数据使得Core 能够以很高的速度C64x+平台上 L2 存储器可用于存储代码和数据。L2 上最大可以分配256K 字节 CACHE来缓存 DDR2 中的数据或代码。 L2中其余部分作为RAM 存储代码和数据。图 2 描述了 Core 访问存储器内容的操作流程。在这个访问流程中, Core 对于存储器的访问总是先从离Core最近的一级存储器开始,如

6、果命中,Core 可以直接得到代码/数据,否则代码 / 数据会被加载到前几级的CACHE中,从而 Core 可以得到要处理的代码/数据。在这个动态访问过程中,各级CACHE中的内容和下一级存储器中的内容可能存在不一致,这种瞬态的不一致不会造成问题。但是,如果Core 或者其它 Master不能得到另外一方对存储器内容更新后的内容,就会出现CACHE一致性问题。图2 Core访问存储器流程3. CACHE 一致性问题分析在任何时刻, Core 或者其它 Master 访问存储器中数据时,由于CACHE的存在造成不能够得到最近更新过的数据,就会出现CACHE一致性问题。在一个特定的时间范围内,各级

7、 CACHE和它的下一级存储器中的内容不一致是正常的。因为 CACHE的作用是在一段时间内将低速存储器中的内容自动搬运到高速的CACHE中重复使用。 当 CACHE中的空间被后续的数据占用的时候,才将CACHE中的内容进行失效或者回写的操作。在失效或者回写之前,CACHE中的内容可能与物理存储器中的内容是不一致的。这种临时性的不一致是正常的,上述CACHE一致性问题的描述不包含此类正常情况。CACHE的引入是为了提高Core 存取数据的效率,所以出现CACHE一致性问题一定与Core 对存储器的访问有关。 Core 对存储器的访问分为两类:精品资料 - - - 欢迎下载 - - - - - -

8、 - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 9 页 - - - - - - - - - - 1. Core读代码或者数据;2. Core写代码或者数据。据此, CACHE的一致性问题分为两个大类:Core 读一致性问题和Core 写一致性问题。在下面两个小节中,分别描述了这两种情况的模型:Core 读一致性模型图 3 给出了 Core 读一致性的模型。在这个模型中,CACHE一致性问题的存在取决于图中虚线箭头指示的第二步操作能否在Core 从 CACHE中重新读数据之前完成。如果不能,则会造成Core 读取的数据不是其它Master 更新后的

9、数据,而是原来CACHE中的内容,从而导致一致性的问题。图3 Core读一致性模型L1P CACHE 对 L2内存或者 DDR2外存中的代码进行缓存。当 Core 第一次对 L2或者 DDR2 中的代码进行读操作的时候,由于代码不在L1P CACHE 中, CAHCE硬件会将 L2或者 DDR2中的代码读到L1P CACHE 中。 Core可以得到最新的代码,不存在一致性的问题。此后,如果其它Master 更新 L2 或者 DDR2中的代码,然后Core 再次读取此部分代码时,会发现相应的代码已经存在L1P CACHE 中,此时 Core 会直接从 L1P CACHE 中读取代码。由于Core

10、 不能得到最新的代码,就出现了Core 读一致性的问题。L1D Core读一致性问题的原理和L1P相同,只是L1D缓存的是 L2或者 DDR2中的数据。L2 CACHE 对 DDR2中的代码 /数据进行缓存,当Core 第一次对 DDR2中的代码 / 数据进行读操作,这时代码/数据不在 L2 CACHE中,需要进行L2 CACHE 的加载, Core 可以得到最新的代码/数据。之后,其它Master对 DDR2 中的代码 /数据进行更改, Core 重读此部分代码/数据的时候, Core 读到的是L2 CACHE 中的内容而不是 DDR2中最新的代码 /数据,因此也存在Core 读一致性的问题

11、。Core 写一致性模型图 4 给出了 Core 写一致性的模型。在这个模型中,CACHE一致性问题的存在取决于图中虚线箭头指示的第二步操作能否在其它Master 从存储器中读数据之前完成。如果不能,会造成其它Master 从存储器中读到的数据是原来的数据而不是Core 更新过的数据,从而导致一致性的问题。图4 Core写一致性模型当 Core 对 L2或者 DDR2中的代码 /数据进行写操作的时候,如果代码/数据已经在L1 CACHE 中,新的代码 /精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3

12、页,共 9 页 - - - - - - - - - - 数据会被更新到L1 CACHE 中。 当其它 Master 从 L2或者 DDR2中读代码 / 数据的时候,会直接从 L2或者 DDR2中读取相应的内容,如果 L1 CACHE 中新的代码 /数据未被更新到L2或者 DDR2中,则其它 Master 读取的不是更新后的内容,就会出现Core 写一致性的问题。同样, Core 更新过的代码 /数据有可能只是缓存在L2 CACHE 中,其它 Master 从 DDR2中读取的内容不是更新后的内容,同样会出现Core 写一致性的问题。C64x+ 一致性分析在 C64x+上的 CACHE一致性问题

13、, 需要根据放置代码/数据的相应位置进行分析。由于在 C64x+ 平台上,L1P、L1D和 L2内存既可以作为CACHE又可以作为存储器使用,因此, 在分析一致性问题的时候,需要考虑以下几种情况Case1. 代码在 L1P存储器中;Case2. 代码在 L2存储器中;Case3. 代码在 DDR2存储器中;Case4. 数据在 L1D存储器中;Case5. 数据在 L2存储器中;Case6. 数据在 DDR2存储器中。对于 Case1 ,由于代码直接在L1P存储器中,不需要进行CACHE ,所以不会存在一致性的问题。对于 Case2和 Case3,涉及到 L1P CACHE ,存在代码的更新能

14、否被Core 读到的问题。 代码的更新分成两种情况:一是 Core 在运行过程中对代码进行修改;二是其它Master 对代码的修改。这两种情况下,都会存在CACHE读一致性问题,需要由软件来维护。对于 Case4 ,数据直接在L1D存储器中,Core 始终能够读到其它Master 更新到 L1D 内存中的内容, Core写过的数据也能够被其它Master 直接从 L1D内存中读到。所以不会存在一致性的问题。对于 Case5 ,数据在 L2存储器,按照上面的分析,会存在CACHE读和写一致性的问题。在C64x+平台上这种情况下的一致性问题会由硬件自动维护。对于 Case6 ,也会存在CACHE读

15、和写一致性的问题,这种情况需要软件进行CACHE一致性的维护。4. C64x+ CACHE 一致性维护操作出现 CACHE一致性问题时,为了保证Core 或者其它 Master 在进行数据操作的时候能够得到最新的数据,需要进行 CACHE的一致性维护操作。CACHE一致性问题维护在设计中,有两种处理方式:硬件自动维护和应用程序进行维护。下面具体分析以上几种情况在C64x+平台上如何进行CACHE一致性问题处理:硬件维护的 CACHE 一致性在 C64x+平台上, 硬件会对 Case5的情况自动进行数据一致性维护。分析需要分为读写两类操作进行,图 5和图6 分别描述了Core 对 L2上的数据进

16、行读和写的情况。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 9 页 - - - - - - - - - - 图5 Core读L2数据的情况图6 Core写L2数据的情况其它 Master 要对 L2 中的内容进行更新操作时,L2控制器会根据被更新数据的地址判断相应的地址是否在L1D CACHE 中,如果在L1D CACHE 中,硬件会自动将更新的数据拷贝一份到L1D CACHE 中。当 Core 重新对L2中的这部分数据进行处理的时候,如果要读取的数据已经在L1D CACHE 中, Cor

17、e 可以直接从L1D CACHE中得到更新过的数据。如果要读取的数据不在L1D CACHE 中,L1D 控制器会自动从L2 加载数据, Core 也可以得到更新后的数据。过程如图5 中的 1 和 2 所示,这样就可以解决一致性的问题。其它 Master 要对 L2 中的内容进行读操作的时候,L2 控制器会判断要读取的数据地址是否在L1D CACHE 中,对于在 L1D CACHE 中的数据, 硬件会自动从L1D CACHE 中读取最新的数据。 对于不在 L1D CACHE 中的数据,说明 L2中的数据已经是最新的数据,可以直接从L2中读取。通过这样的处理,可以保证其它Master 读到Core

18、 更新后的数据,从而可以解决一致性的问题。过程如图6 中的 1 和 2 所示。软件维护的 CACHE 一致性在 C64x+平台上,Case2、 Case3和 Case6的情况需要软件进行的一致性维护操作以保证Core 或者其它 Master可以得到最新的数据。C64x+ 软件一致性维护实现C64x+平台上由软件控制的一致性维护操作包含三种:CACHE数据失效、 CACHE数据回写和CACHE数据回写并失效。启动维护操作需要配置相应的基地址和计数寄存器,当计数寄存器中的值变为0 时表示操作完成。 TI提供的芯片支持库中也提供了相应的API 来完成相应的功能。各种操作涉及的各级CACHE的一致性操

19、作控制寄存器列在表2 中。WB:全局回写寄存器INV:全局失效寄存器WBINV:全局回写并失效寄存器IBAR: 部分失效基地址寄存器IWC:部分失效计数寄存器精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 9 页 - - - - - - - - - - WBAR:部分回写基地址寄存器WWC:部分回写计数寄存器WIBAR:部分回写并失效基地址寄存器WIWC:部分回写并失效计数寄存器表2 C64x+ CACHE一致性维护寄存器类型L1P CACHEL1D CACHEL2 CACHE全局失效L1PI

20、NVL1DINVL2INV全局回写不支持L1DWBL2WB全局回写并失效不支持L1DWBINVL2WBINV部分失效LIPIBAR L1PIWCL1DIBAR L1DIWCL2IBAR L2IWC部分回写不支持L1DWBAR L1DWWCL2WBAR L2WWC部分回写并失效不支持L1DWIBAR L1DWIWCL2WIBAR L2WIWC例如,需要对L2 CACHE进行部分回写操作,需要将回写的DDR2的地址配置到L2WBAR,同时将需要回写的数据 32-bit 长度写到 L2的计数寄存器L2WWC 中,当 L2WWC 中的值变为0 之后,表示回写操作已经完成。代码 CACHE 一致性图 7

21、 中描述了其它Master 对 L2中代码进行修改的情况。这种情况下,当Core 第一次执行此部分代码时,这部分代码会被加载到L1P中。之后如果被其它Master 修改, Core 仍会从 L1P中读取原来的代码而不是更新后的代码。因此需要软件进行图中2 指示的操作。软件不需要进行代码的搬移,只要在Core 重新执行此部分代码之前将L1P 中此部分内容失效。 当 Core 再次执行此部分代码的时候,会按照 CACHE的正常机制进行此部分代码的重新加载,从而保证Core 可以读取到更新后的代码。操作顺序如下:其它 Master 对 L2中的代码进行更新Core 在执行此段代码之前对L1P中的此段

22、地址进行失效操作图 8 描述的是其它Master 对 DDR2 中代码进行修改的情况。这种情况下,需要在Core 重新执行此部分代码前,将 L1P和 L2 CACHE 中的相应内容进行失效以保证Core 执行时可以将最新的代码加载到L2和 L1P CACHE中。操作顺序如下其它 Master 对 DDR2中的代码进行更新Core 在执行此段代码之前对L2 中的此段地址进行失效操作Core 在执行此段代码之前对L1P中的此段地址进行失效操作图7 其它Master修改L2代码的情况精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - -

23、 - - - -第 6 页,共 9 页 - - - - - - - - - - 图8 其它Master修改DDR2代码的情况Core 对修改代码会转换为对存储器的写操作,由于L1P只对读不命中的情况才分配CACHE ,所操作的代码一定不在 L1P CACHE 中,更新的代码会被直接写到L2中,如果修改的是DDR2 中的代码,数据可能会被更新到 L2 CACHE 中。之后的所有操作与上述两种情况的处理相同。数据 CACHE 一致性对于数据部分的一致性维护,需要由软件维护的情况是Case6 。包括 Core 对 DDR2 的读取和写两种情况。图 9 和图10 分别描述了这两种情况。图 9 描述的是

24、 Core 读取 DDR2 中数据进行处理的情况。 当其它 Master 对此部分数据进行更新之后,在 Core重新读取之前,为了保证DDR2 中的数据会被重新加载到L1D和 L2中,需要将L1D和 L2 CACHE中与此部分数据对应的内容失效。操作顺序如下:其它 Master 对 DDR2中的数据进行更新Core 在读此段数据之前对L2中的此段地址进行失效操作图9 Core对DDR2上的数据读的情况图 10 描述了 Core 对 DDR2中数据更新的情况,更新的数据可能被保存在L1D 或者 L2 CACHE中。为了保证其它 Master 能正确读取此部分数据,需要将 L1D或者 L2 CAC

25、HE中更新的此部分数据回写到DDR2。操作顺序如下:将 L1D CACHE 中的此部分数据进行回写将 L2 CACHE中的此部分数据进行回写其它 Master 可以从 DDR2中读到更新后的数据精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 9 页 - - - - - - - - - - 图10 Core对DDR2上的数据写的情况结论CACHE一致性问题是DSP应用中常见的问题, TI C64x+ DSP 是业界高性能信号处理平台,具有优良的CACHE性能。 C64x+平台 CACHE一致性问

26、题的维护操作情况总结如下:表3 C64x+平台CACHE一致性问题的维护操作类型是否存在 CACHE 一致性问题硬件 /软件维护代码在 L1P存储器中否不需要代码在 L2存储器中是软件代码在 DDR2存储器中是软件数据在 L1D存储器中否不需要数据在 L2存储器中是硬件数据在 DDR2存储器中是软件C64x+平台上 CACHE一致性问题维护可以归纳为以下两点:1. 代码部分的一致性问题需要由软件来维护;2. 只有当 Core 和其它 Master 共同需要访问的数据缓冲区在外部存储器中的时候,数据 CACHE一致性问题才需要由软件来进行维护。其它情况下,数据CACHE一致性都会由硬件自动完成。

27、篇幅之二dsp cache 优化以前我自己编写过乒乓结构的程序,后来查资料的时候发现乒乓结构还是很普遍的用法,但是我是初学者,其实编程优化方面,只是做过手工的软件流水,对于硬件的深入了解还远远不够,对CACHE的程序级优化还有待提高,下面是今天学习的一些摘录,我相信对我今后一定有很大用处对于一般的 CPU信号处理加上外围设备的DMA 数据读写情况, 处理方法是在内存中开辟pingpong 缓冲区。inbufa,outbufa,inbufb,outbufb四块内存区,当CPU处理 inbufa 的数据并将产生的结果放到outbufa, 这是外围器件 DMA 搬移数据到inbufb,另一外围设备将

28、数据从outbufb 搬出;同理当CPU处理 inbufb 并将产生的结果放到 outbufb 时,外围设备利用DMA 分别从 inbufa 和 outbufa 搬入数据和搬出数据。一般 L2RAM(内存 ) DMA 实现代码如下:for (i=0; i OutBuffA Processing */ /* */ External Memory DMA Double Buffering Code Example for (i=0; i OutBuffA Processing */ /* */ CACHE_wbInvL2(InBuffB, BUFSIZE, CACHE_WAIT); 数据进入 Cache后 ,有效位置 1;而当 CPU要对该数据进行修精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 9 页 - - - - - - - - - - 改时,数据只需写入主存储器并同时将该有效位清0。当要从 Cache中读取数据时要测试其有效位,若为1则直接从 Cache中取数,否则从主存中取数。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 9 页 - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁