当前位置:首页 > 单片机 > 单片机
[导读]高速缓存(CACHE)作为内核和低速存储器之间的桥梁,基于代码和数据的时间和空间相关性,以块为单位由硬件控制器自动加载内核所需要的代码和数据。如果所有程序和数据的存取都由内核完成,基于CACHE的运行机制,内核始终能够得到存储器中最新的数据。但是当有其它可以更改存储器内容的部件存在时,例如不需要内核干预的直接数据存取(DMA)引擎,就可能出现由于CACHE的存在而导致内核或者DMA不能够得到最新数据的现象,也就是CACHE一致性的问题。

高速缓存(CACHE)作为内核和低速存储器之间的桥梁,基于代码和数据的时间和空间相关性,以块为单位由硬件控制器自动加载内核所需要的代码和数据。如果所有程序和数据的存取都由内核完成,基于CACHE的运行机制,内核始终能够得到存储器中最新的数据。但是当有其它可以更改存储器内容的部件存在时,例如不需要内核干预的直接数据存取(DMA)引擎,就可能出现由于CACHE的存在而导致内核或者DMA不能够得到最新数据的现象,也就是CACHE一致性的问题。

C64x+ 存储器架构

德州仪器(TI)公司对高性能C64x核进行了改进,使其性能大副提升,称之为C64x+DSP核。C64x+系统的存储器框图如图1所示。存储器被分成了三级:第一级是L1,包含数据存储器(L1D)和代码存储器(L1P);第二级是代码和数据共用存储器(L2);第三级是外部存储器,主要是DDR2存储器。L1P、L1D和L2的CACHE功能分别由相应的L1P控制器、L1D控制器和L2控制器完成。表 1总结了C64x+平台上可用的CACHE情况。


图1 C64x+ 存储器框图


表 1 C64x+ CACHE特性

C64x+平台上L1P用来存储或者缓存代码;L1D用来存储或者缓存数据。L1P和L1D大小都是32K字节,可以分别配置0K、4KB、8KB、16KB或者32KB作为CACHE,其余作为代码或者数据RAM。作为CACHE的部分,用来缓存L2和DDR2的数据或代码。作为RAM的部分,可以存储关键的代码或者数据使得内核能够以很高的速度访问。C64x+平台上L2 存储器可用于存储代码和数据。L2上最大可以分配256K字节CACHE来缓存DDR2中的数据或代码。L2中其余部分作为RAM存储代码和数据。


图 2 内核访问存储器流程

高速缓存一致性问题分析

在任何时刻,内核或者其它主机访问存储器中数据时,由于CACHE的存在造成不能够得到最近更新过的数据,就会出现CACHE一致性问题。CACHE的一致性问题分为两个大类:内核读一致性问题和内核写一致性问题。在下面两个小节中,分别描述了这两种情况的模型:

内核读一致性模型

图 3给出了内核读一致性的模型。在这个模型中,CACHE一致性问题的存在取决于图中虚线箭头指示的第二步操作能否在内核从CACHE中重新读数据之前完成。如果不能,则会造成内核读取的数据不是其它主机更新后的数据,而是原来CACHE中的内容,从而导致一致性的问题。


图 3 内核读一致性模型

  

L1P CACHE对L2内存或者DDR2外存中的代码进行缓存。当内核第一次对L2或者DDR2中的代码进行读操作的时候,由于代码不在L1P CACHE中,CAHCE硬件会将L2或者DDR2中的代码读到L1P CACHE中。内核可以得到最新的代码,不存在一致性的问题。此后,如果其它主机更新L2或者DDR2中的代码,然后内核再次读取此部分代码时,会发现相应的代码已经存在L1P CACHE中,此时内核会直接从L1P CACHE中读取代码。由于内核不能得到最新的代码,就出现了内核读一致性的问题。L1D 内核读一致性问题的原理和L1P相同,只是L1D缓存的是L2或者DDR2中的数据。

内核写一致性模型

图 4给出了内核写一致性的模型。在这个模型中,CACHE一致性问题的存在取决于图中虚线箭头指示的第二步操作能否在其它主机从存储器中读数据之前完成。如果不能,会造成其它主机从存储器中读到的数据是原来的数据而不是内核更新过的数据,从而导致一致性的问题。


图 4 内核写一致性模型

  

当内核对L2或者DDR2中的代码/数据进行写操作的时候,如果代码/数据已经在L1 CACHE中,新的代码/数据会被更新到L1 CACHE中。当其它主机从L2或者DDR2中读代码/数据的时候,会直接从L2或者DDR2中读取相应的内容,如果L1 CACHE中新的代码/数据未被更新到L2或者DDR2中,则其它主机读取的不是更新后的内容,就会出现内核写一致性的问题。

C64x+ 一致性分析

C64x+上的CACHE一致性问题,需要根据放置代码/数据的相应位置进行分析。由于在C64x+平台上,L1P、L1D和L2内存既可以作为CACHE又可以作为存储器使用,因此,在分析一致性问题的时候,需要考虑以下几种情况:

1) 代码在L1P存储器中;2) 代码在L2存储器中;3)代码在DDR2存储器中;4)数据在L1D存储器中;5)数据在L2存储器中;6)数据在DDR2存储器中。

对于1),由于代码直接在L1P存储器中,不需要进行CACHE,所以不会存在一致性的问题。

  

对于2)和3),涉及到L1P CACHE,存在代码的更新能否被内核读到的问题。代码的更新分成两种情况:一是内核在运行过程中对代码进行修改;二是其它主机对代码的修改。这两种情况下,都会存在CACHE读一致性问题,需要由软件来维护。

  

对于4),数据直接在L1D存储器中, 内核始终能够读到其它主机更新到L1D内存中的内容,内核写过的数据也能够被其它主机直接从L1D内存中读到。所以不会存在一致性的问题。

  

对于5),数据在L2存储器,按照上面的分析,会存在CACHE读和写一致性的问题。在C64x+平台上这种情况下的一致性问题会由硬件自动维护。

  

对于6),也会存在CACHE读和写一致性的问题,这种情况需要软件进行CACHE一致性的维护。

C64x+ 高速缓存一致性维护操作

出现CACHE一致性问题时,为了保证内核或者其它主机在进行数据操作的时候能够得到最新的数据,需要进行CACHE的一致性维护操作。下面具体分析以上几种情况在C64x+平台上如何进行CACHE一致性问题处理:

硬件维护的CACHE一致性

在C64x+平台上,硬件会对5)的情况自动进行数据一致性维护。分析需要分为读写两类操作进行,图 5和图 6分别描述了内核对L2上的数据进行读和写的情况。


图 5 内核读L2数据的情况

  


图 6 内核写L2数据的情况

  

  

其它主机要对L2中的内容进行更新操作时,L2控制器会根据被更新数据的地址判断相应的地址是否在L1D CACHE中,如果在L1D CACHE中,硬件会自动将更新的数据拷贝一份到L1D CACHE中。如果要读取的数据不在L1D CACHE中,L1D控制器会自动从L2加载数据,内核也可以得到更新后的数据。过程如图 5中的1和2所示,这样就可以解决一致性的问题。

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

软件维护的CACHE一致性

在C64x+平台上,2)、3) 和6)的情况需要软件进行的一致性维护操作以保证内核或者其它主机可以得到最新的数据。

C64x+ 软件一致性维护实现

C64x+平台上由软件控制的一致性维护操作包含三种:CACHE数据失效、CACHE数据回写和CACHE数据回写并失效。启动维护操作需要配置相应的基地址和计数寄存器,当计数寄存器中的值变为0时表示操作完成。TI提供的芯片支持库中也提供了相应的API来完成相应的功能。各种操作涉及的各级CACHE的一致性操作控制寄存器列在表2中。


表 2 C64x+ CACHE一致性维护寄存器

代码CACHE一致性

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

  


图 7 其它主机修改L2代码的情况

图 8描述的是其它主机对DDR2中代码进行修改的情况。这种情况下,需要在内核重新执行此部分代码前,将L1P和L2 CACHE中的相应内容进行失效以保证内核执行时可以将最新的代码加载到L2和L1P CACHE中。操作顺序如下:内核对修改代码会转换为对存储器的写操作,由于L1D只对读不命中的情况才分配CACHE,所操作的代码一定不在L1D CACHE中,更新的代码会被直接写到L2中,如果修改的是DDR2中的代码,数据可能会被更新到L2 CACHE中。之后的所有操作与上述两种情况的处理相同。

 


图 8 其它主机修改DDR2代码的情况

 

数据CACHE一致性

对于数据部分的一致性维护,需要由软件维护的情况是6),包括内核对DDR2的读取和写两种情况。图 9和图 10分别描述了这两种情况。


图 9 内核对DDR2上的数据读的情况


图 10 内核对DDR2上的数据写的情况

本文小结

高速缓存一致性问题是DSP应用中常见的问题,TI C64x+ DSP是业界高性能信号处理平台,具有优良的高速缓存性能。C64x+平台上高速缓存一致性问题维护可以归纳为以下两点:1) 代码部分的一致性问题需要由软件来维护;2) 只有当内核和其它主机共同需要访问的数据缓冲区在外部存储器中的时候,数据高速缓存一致性问题才需要由软件来进行维护。其它情况下,数据高速缓存一致性都会由硬件自动完成。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭