有关C6000DSP的Cache的操作_第1页
有关C6000DSP的Cache的操作_第2页
有关C6000DSP的Cache的操作_第3页
有关C6000DSP的Cache的操作_第4页
有关C6000DSP的Cache的操作_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一部分:钛C64x高速缓存一致性的分析与维护作者:DSP技术应用工程师陈永康摘要在各种数字信号处理系统中,高速缓存广泛用于补偿内核和内存之间的速度差异。在使用CACHE的过程中,存在不同类型的存储器之间数据是否一致的问题。本文重点分析了TI高性能C64x DSP系列中不同层次缓存之间的数据一致性,以及如何保持一致性。1.概观缓存充当核心和低速内存之间的桥梁。基于代码和数据的时间和空间相关性,硬件控制器以块为单位自动加载核心所需的代码和数据。如果所有的程序和数据都被内核访问,内核总是可以根据缓存操作机制在内存中获得最新的数据。然而,当有其他组件可以改变存储器的内容时,例如不需要核心干预的直接数据访问(DMA)引擎,核心或DMA由于高速缓存的存在而不能获得最新数据的现象可能发生,这是高速缓存一致性的问题。2.C64x存储器组织结构德州仪器改进了高性能C64x内核,并大大提高了其性能。它被称为C64x数字信号处理器核心。以C64x为核心开发的数字信号处理器芯片为基础,所有元件均以开关网络为核心连接。可控硅上的元件分为两类:主元件和从元件。主设备包括核心设备、EDMA设备、串行高速输入输出设备(sRIO)、电磁兼容性和其他外围设备。主机可以通过可控硅直接向从机发送数据。从机包括每个内核的内存、DDR2外部内存和其他不能直接启动数据传输的外设。从机之间的数据传输需要DMA协助。基于C64x数字信号处理器的各种数据手册详细描述了可控硅配置和主从条件。C64x系统的存储器框图如图1所示。存储器分为三级:第一级是L1,包括数据存储器(L1D)和代码存储器(L1P);第二层是代码和数据共享存储器(L2);第三个层次是外部记忆,主要是DDR2记忆。L1P、L1D和L2的缓存功能分别由相应的L1P控制器、L1D控制器和L2控制器完成。表1总结了C64x平台上可用的CACHE。图1 C64x存储器框图表1 C64x高速缓存特性类型大小管道尺寸L1P代码;直接映射;最大32k字节32字节L1D数据;道路2;读取分配最大32k字节64字节L2代码和数据;道路4;读写分配最大256千字节128字节C64x平台上的L1P用于存储或缓存代码;L1D用于存储或缓存数据。L1P和L1D的大小为32K字节,可以分别配置0K、4KB、8KB、16KB或32KB作为缓存,其余部分作为代码或数据内存。作为缓存的一部分,它用于缓存L2和DDR2数据或代码。作为随机存取存储器的一部分,它可以存储关键代码或数据,使核心能够以非常高的速度运行。C64x平台上的L2存储器可以用来存储代码和数据。在L2最多可以分配256千字节的缓存,用于缓存DDR2的数据或代码。L2的其余部分将代码和数据存储在内存中。图2描绘了核心访问存储器内容的操作流程。在这个访问过程中,核心对内存的访问总是从离核心最近的内存级别开始。如果命中,核心可以直接获得代码/数据,否则代码/数据将被加载到先前级别的缓存中,以便核心可以获得要处理的代码/数据。在这个动态访问过程中,每个CACHE级别的内容和下一个内存级别的内容之间可能存在不一致,这种短暂的不一致不会导致问题。但是,如果核心或其他主机无法获得另一方更新的内存内容,就会出现缓存一致性问题。图2核心访问存储器流程3.缓存一致性分析在任何时候,当核心或其他主机访问内存中的数据时,都会出现CACHE一致性问题,因为由于CACHE的存在,无法获取最近更新的数据。在特定的时间范围内,每一级CACHE及其下一级存储器的内容不一致是正常的。因为CACHE的功能是自动将低速内存的内容传输到高速缓存,以便在一段时间内重用。当CACHE中的空间被后续数据占用时,CACHE中的内容将被无效或写回。在失效或回写之前,CACHE中的内容可能与物理内存中的内容不一致。这种暂时的不一致是正常的,上面对CACHE一致性问题的描述不包括这种正常情况。CACHE的引入是为了提高内核访问数据的效率,因此CACHE一致性问题必然与内核访问内存有关。核心对内存的访问分为两类:1.核心读取代码或数据;2.核心写代码或数据。据此,缓存一致性问题可分为两类:核心读一致性问题和核心写一致性问题。在以下两个小节中,分别描述了这两种情况的模型:3.1核心读取一致性模型图3显示了核心读取一致性的模型。在该模型中,CACHE一致性问题的存在取决于图中虚线箭头所示的第二个操作是否能够在内核从CACHE中重新读取数据之前完成。否则,核心读取的数据将不是其他主机更新的数据,而是原始缓存的内容,从而导致一致性问题。图3核心读取一致性模型L1P缓存将代码缓存在L2存储器或DDR2外部存储器中。当内核第一次在L2或DDR2读取代码时,CAHCE硬件会将L2或DDR2的代码读入L1P缓存,因为代码不在L1P缓存中。核心可以获得最新的代码,并且没有一致性问题。之后,如果其他主机在L2或DDR2更新代码,然后核心再次读取这部分代码,它会发现相应的代码已经存在于L1P缓存中,此时核心将直接从L1P缓存中读取代码。由于核心无法获得最新的代码,核心读取一致性的问题就出现了。L1D核心读取一致性的原则与L1P相同,只是L1D在L2或DDR2缓存数据。L2缓存在DDR2缓存代码/数据。当Core第一次在DDR2读取代码/数据时,代码/数据不在L2缓存中,需要加载。核心可以获得最新的代码/数据。之后,其他大师在DDR2更改了代码/数据。当核心重新读取这部分代码/数据时,核心读取的是L2缓存中的内容,而不是DDR2最新的代码/数据,因此也存在核心读取一致性的问题。3.2核心写入一致性模型图4显示了核心写一致性模型。在此模型中,CACHE一致性问题的存在取决于图中虚线箭头所示的第二个操作能否在其他主机从内存中读取数据之前完成。否则,其他主机从内存中读取的数据将是原始数据,而不是核心更新的数据,从而导致一致性问题。图4核心写入一致性模型当核心在L2或DDR2写入代码/数据时,如果代码/数据已经在L1高速缓存中,新的代码/数据将在L1高速缓存中更新。当其他主机从L2或DDR2读取代码/数据时,它们将直接从L2或DDR2读取相应的内容。如果L1高速缓存中的新代码/数据没有更新到L2或DDR2,其他主机将不会读取更新的内容,这将导致核心写入一致性问题。类似地,由核心更新的代码/数据可能仅被缓存在L2缓存中,并且由其他主机从DDR2读取的内容不是更新的内容,这也导致核心写入一致性的问题。3.3 C64x一致性分析C64x上的CACHE一致性问题需要根据代码/数据放置的相应位置进行分析。由于L1P、L1D和L2内存可同时用作C64x平台上的缓存和内存,因此在分析一致性问题时需要考虑以下情况案例1。L1P存储器中的代码;案例2。L2记忆中的代码;案例3在DDR2的记忆中。案例4。L1D存储器中的数据;案例5。L2记忆中的数据;数据在DDR2的记忆中。对于案例1,由于代码直接在L1P内存中,并且不需要CACHE,因此不存在一致性问题。对于案例2和案例3,涉及L1P CACHE,存在代码更新是否可由核心读取的问题。代码更新分为两种情况:第一,核心在运行过程中修改代码;第二,其他主代码更改。在这两种情况下,CACHE读取一致性问题都存在,需要由软件来维护。对于情况4,数据直接存储在L1D存储器中。内核始终可以读取其他主机更新到L1D存储器的内容,内核写入的数据也可以由其他主机直接从L1D存储器中读取。所以不会有一致性问题。对于案例5,数据在L2的记忆中。根据以上分析,将会出现CACHE读写一致性的问题。在这种情况下,C64x平台上的一致性问题将由硬件自动维护。对于案例6,还存在CACHE读写一致性的问题,这需要软件来维护CACHE的一致性。4.C64x缓存一致性维护操作在CACHE一致性问题的情况下,为了确保核心或其他主机在数据操作期间能够获得最新数据,需要进行CACHE一致性维护操作。维护CACHE一致性有两种方法:硬件自动维护和应用程序维护。以下是在上述条件下,C64x平台上如何处理缓存一致性的详细分析:4.1硬件维护的缓存一致性在C64x平台上,硬件将自动保持案例5的数据一致性。分析需要分为两种操作:阅读和写作。图5和图6分别描述了Core对L2数据的读取和写入。图5内核读取L2数据图6核心写入L2数据当其他主机想要更新L2的内容时,L2控制器将根据更新数据的地址确定相应的地址是否在L1D缓存中。如果地址在L1D CACHE中,硬件会自动将更新的数据复制到L1D CACHE中。当内核在L2再次处理这部分数据时,如果要读取的数据已经在L1D缓存中,内核可以直接从L1D缓存中获取更新后的数据。如果要读取的数据不在L1D缓存中,L1D控制器将自动从L2加载数据,并且核心也可以获得更新的数据。该过程在图1和图5的图2中示出,因此可以解决一致性问题。当其他主机在L2读取内容时,L2控制器将确定要读取的数据地址是否在L1D高速缓存中。对于L1D CACHE中的数据,硬件将自动从L1D CACHE中读取最新数据。对于不在L1D缓存中的数据,这意味着L2的数据是最新数据,可以直接从L2读取。通过这样的处理,可以保证其他主机读取核心的更新数据,从而解决一致性问题。该过程在图1和图6的图2中示出。4.2软件维护的缓存一致性在C64x平台上,案例2、案例3和案例6需要通过软件进行一致的维护,以确保核心或其他主机能够获得最新数据。4 . 2 . 1 C64X软件一致性维护的实施C64x平台上有三种由软件控制的一致性维护操作:CACHE数据失效、CACHE数据回写和CACHE数据回写及失效。开始维护操作需要配置相应的基址和计数寄存器。当计数寄存器中的值变为0时,操作完成。TI提供的芯片支持库也提供了相应的接口来完成相应的功能。表2列出了各种操作中涉及的各级CACHE的一致性操作控制寄存器。全局写回寄存器INV:全球无效注册WBINV:全局写回和无效寄存器部分故障基址寄存器部分故障计数寄存器部分回写基址寄存器WWC:部分写回计数寄存器WIBAR:基址寄存器的部分回写和无效部分写回和失败计数寄存器表2 C64x高速缓存一致性维护寄存器类型L1P CACHEL1D CACHEL2 CACHE全球失败L1PINVL1DINVL2INV全局写回不支持L1DWBL2WB全局写回和无效不支持L1DWBINVL2WBINV部分失效立普巴L1PIWCL1DIBARL1DIWCL2IBARL2IWC部分写回不支持L1DWBARL1DWWCL2WBARL2WWC部分写回和无效不支持L1DWIBARL1DWIWCL2WIBARL2WIWC例如,有必要在L2缓存上执行部分回写操作。有必要配置回写DDR2到L2WBAR的地址,并将32位长度的数据写回L2计数寄存器L2WWC。当L2WWC中的值变为0时,写回操作完成。4.2.2代码缓存一致性图7描述了在L2对代码的其他主修改。在这种情况下,当核心第一次执行这部分代码时,它将被加载到L1P中。之后,如果被其他主机修改,核心仍将从L1P读取原始代码,而不是更新后的代码。因此,需要软件来执行图2所示的操作。软件不需要移动代码,只要L1P的这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论