历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2021年11月25日 | ARM基础学习-Cache和写缓冲器

2021-11-25 来源:eefocus

Cache介绍


CPU的主频可以达到200MHZ,而一般性能的主存储器操用DRAM。其存储周期仅为100ns-200ns,主存储的性能将会影响整个系统的性能,Cache和写缓冲区位于主存储区和CPU之间,主要用来提高存储系统性能;


而cache经常与写缓冲器(write buffer)一起使用,使用writer buffer的目的是,将处理器和cache从较慢的对主存的写操作中脱离出来。

这里写图片描述

在处理器和MMU之间的cache称为逻辑cache,逻辑cache在虚拟地址空间存储数据,处理器可以直接通过cache访问数据,而无需通过MMU。逻辑cache又称为虚拟cache。


在MMU与物理存储器之间的cache称为物理cache,当处理器访问存储器时,MMU必须先把虚拟地址转换成物理地址,cache存储器才可以向处理器内核提供数据。

这里写图片描述

通过引入cache和写缓冲区,存储系统的性能得带很大提高,但是也带来了一些问题:

1. 由于数据存在于系统中不同的物理位置,可能造成数据的不一致性;

2. 由于写缓冲区的优化作用,可能有写操作的执行顺序不是用户期望的顺序,从而造成操作错误;


cache工作原理


在cache存储系统中,把cache和主存储器划分成相同大小的快,因此主存地址可以由块号B和块内地址W两部分组成,同样cache的地址也可以由块号b和块内地址w组成;

这里写图片描述

当CPU要访问cache时,CPU送来主存地址,放到主存地址寄存器中,通过地址变换部件把主存地址中的块号B变换成cache的块号b,并放到cache地址寄存器当中;同时将主存地址中的块内地址W直接作为cache的块内地址w装入到地址寄存器当中,如果变换成功(cache命中),就用cache的地址区访问cache,从cache中读取数据送到CPU中;如果不成功,则产生cache失效信息,并且用主存地址访问主存储器,从主存储器读出一个字送往CPU,同时把包含被访问字在内的一整块都从主存储器当中读取出来,放到cache中去;如果cache满了,通过替换策略来腾出空间;


cache结构


图12.4是一个4KB大小的cache存储器,这个cache存储器分为256行,每行由三部分组成:目录存储段,状态信息段和数据项段。


目录存储段:用来记录每个cache行所对应的主存中的地址,即告诉cache这个行里存放的数据时从主存的什么地方拷贝进来的。这个目录项里的数据被称为“cache标签”;


状态信息段:用来记录状态信息的状态位,两个常见的状态信息位是有效位(valid bit)和脏位(dirty bit)。有效位用来标记当前的cache行是活动的,即当前的cache行已经存放了从主存中取得的数据,并且可以被处理器所使用。脏位用来标记该cache行中所含的内容是与主存中的内容是否一致,即该cache行中的数据已经被改变,但还没有被写回到主存中,主存中的数据还是旧的数据。


数据项段:从主存中拷贝来的数据放在数据项段;


这个cache存储器拥有4KB的大小,被分成256行,而每行所占的大小为4个字(16字节)大小,所以为4KB。注意cache标签和状态信息位所占的空间并不计算在内。

这里写图片描述

cache的映射


cache的映射方式有三种:直接映射,组相联映射和全相联映射;


(1)直接映射


这里写图片描述

上图12.5便是一个直接映射的显示,在直接映射cache中,由于主存的容量要远远大于cache的容量,所以为了让大容量的主存能够全部映射到小容量的cache中,往往是主存中的多个地址对应cache中的一行。在上图12.5的例子中行,组索引的值为0x82,于是便找到了cache存储器中对应的一个cache行。


注意,因为这一个cache行对应了多个主存地址,在本例中一个cache行对应了1M的主存地址范围,而在任一时刻,该cache行只能对应着1M地址范围中的一个主存地址,所以要用标签再确定该cache行中具体的一个主存地址。用cache行中的cache标签与标签域中的标签比较,如果相等,则cache命中,然后便对该cache行进行读写操作。如果不相等,则cache失效,那么这个cache行的整个数据会被删除,并替换为CPU要访问的主存地址的内容,同时也将数据送到处理器中,这个过程称为替换。


优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。

缺点:替换操作频繁,命中率比较低。


(2)组相联映射


直接映射虽然简单方便,但是如果程序同时用到了对应于同一个cache行中的两个主存地址,那么就会发生冲突,结果就是导致这个cache行不停的进行替换操作。所以就有了组相联映射;


组相联映射将这cache存储器中的256个行分为了4路,每路有64个cache行。这时根据组索引找到的 cache行不再是一个,而是同时找到 4个 cache行,所以才被称为组索引。每路中包含一个cache行。


因为现在每路中有 64 个 cache 行,所以组索引的宽度变成了6位,而标签域的标签宽度变成了12位。


直接映射中组索引一次只能对应一个cache 行,而现在组相联映射中组索引一次能对应4个cache行,所以现在主存中的一个地址可以存放到4个cache行中的任意一行。 而在直接映射中,主存中的一个地址只能存放到对应的一个cache行中。所以一个cache行被替换的概率减少为原来的四分之一。

这里写图片描述

优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。

缺点:实现难度和造价要比直接映象方式高。


(3)全相联映射


随着cache的相联度提高,冲突的可能性小了。理想的目标是,尽量提高组相联程度,使主存中的一个地址能够映射到cache存储器中的任意的cache行,这样的映射关系被称为全相联映射。


简单来说直接映射可以看成是一个只有1路的组相联映射,每路有256个cache行。上面的组相联映射有4路,每路有64个cache行。而全相联映射有很多路,每路中只有一个cache行。

这里写图片描述

优点:命中率比较高,Cache存储空间利用率高。

缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。


写缓冲区


写缓冲器是一个非常小的告高速存储缓冲器,用来临时存放处理器将要写入到主存中的数据,在没有写缓冲器的系统中,处理器直接写数据到主存中。在带有写缓冲器的系统中,cache直接将数据先写到写缓冲器中,然后写缓冲器再以低速写入主存中。这就将高速的CPU和cache从对主存的低速读写中脱离了出来。


写缓冲器同时还改善了cache的性能,这体现在cache行被替换时。当cache控制器要替换出一个脏的cache行时,它只将该cache行中的数据放入写缓冲器中,而不写入主存。这样就可以快速填充新的cache行数据,处理器就可以继续从cache存储器中读/写数据。


写缓冲器中的数据在没有被写入主存之前,是不能被读取的。同样,被替换的cache行在写缓冲器中时也不能进行读操作。这也是为什么写缓冲器的深度通常比较小的原因之一,一般只有几个cache行的深度。


cache替换策略


替换策略用于选择要替换cache行中的数据,应该替换哪个cache行。总的来说,组索引在各个way(路)中选择可用的一组cache行,而替换策略决定在该组中哪一路中的cache行会被新的数据替换。


1.轮转法: 简单地将当前分配的cache行的下一行作为被替换的行。


2.伪随机替换法:从特定的位置上随机地选出一行替换出去。


大多数ARM核两种策略都支持,相比之下,轮转法有更好的可预测性。然而,轮转法在存储器访问发生很小的变化时,有可能照成cache性能有较大的变化。


清理和清除cache


ARM使用清理和清除表示对cache的两种基本操作。


清理就是把脏的(即被改写过的)cache行强制写到主存,并把cache行中的脏位清零。清理cache可以重建cache和主存之间的一致性,它只是用在回写策略的D-cache上。


清除就是指清除cache中存储的全部数据,其实就是将cache使无效,将cache行中的有效位清零,让所有访问这个cache行的操作都不命中。


对cache进项清理和清除的操作是通过协处理器CP15中的寄存器C7实现的,具体操作指令看CP15协处理器寄存器详解。

推荐阅读

史海拾趣

Codeco Corporation Of Vermont公司的发展小趣事

在电子行业的浪潮中,Codeco Corporation Of Vermont(以下简称Codeco)由几位热衷于科技创新的工程师创立。他们看到了电子产品日益普及的趋势,决定投身这个充满机遇的领域。初创时期,资金短缺、市场竞争激烈,Codeco面临着巨大的挑战。然而,凭借着对技术的执着追求和对市场的敏锐洞察,他们成功开发出了一款具有创新性的电子产品,迅速在市场上占得一席之地。

Delkin Devices公司的发展小趣事

Delkin Devices始终将客户放在第一位,致力于为客户提供优质的服务和体验。公司建立了完善的客户服务体系,包括售前咨询、售后服务、技术支持等多个方面。通过专业的服务团队和高效的服务流程,Delkin Devices能够及时解决客户的问题和需求,赢得了客户的信任和好评。同时,Delkin Devices还注重品牌塑造和宣传推广,通过参加行业展会、举办技术研讨会等方式,不断提升品牌知名度和影响力。这些努力使得Delkin Devices在电子行业中树立了良好的口碑和形象。

以上是关于Delkin Devices在电子行业发展的五个故事线索的概述。你可以根据这些线索进一步扩展和深入研究,以了解更多关于Delkin Devices的发展历程和成功经验。

绿宝石(BERYL)公司的发展小趣事

绿宝石公司注重品牌建设和形象提升。公司加大了广告宣传的投入力度,通过电视、网络、户外广告等多种渠道进行品牌推广。此外,绿宝石公司还积极参与社会公益活动,履行企业社会责任。这些举措不仅提升了公司的知名度和美誉度,也增强了消费者对绿宝石品牌的认同感和忠诚度。

Advanced Ceramic X Corporation公司的发展小趣事

绿宝石公司始终坚持品质至上的原则,对每一道生产工序都进行严格把控。公司引进了先进的生产设备和检测仪器,确保产品质量的稳定性和可靠性。此外,公司还建立了完善的售后服务体系,及时解决客户在使用过程中遇到的问题。凭借卓越的产品品质和优质的服务,绿宝石公司赢得了客户的广泛信赖和好评。

奇力新(chilisin)公司的发展小趣事

作为一家有社会责任感的企业,奇力新始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,奇力新还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了奇力新的社会责任担当,也为其赢得了更多客户和合作伙伴的信任和支持。

Decawave公司的发展小趣事

在2015年的微软室内定位大赛中,Decawave的UWB技术大放异彩。公司凭借其高精度、低误差的UWB定位解决方案,在激烈的竞争中脱颖而出,荣获最佳无线电定位解决方案奖。这一荣誉不仅证明了Decawave在UWB技术领域的领先地位,也为其在市场上的推广和应用奠定了坚实的基础。

问答坊 | AI 解惑

三星2440芯片

三星2440芯片结构…

查看全部问答>

求低成本电子体温计方案

不能用那种什么都集成好的直接输出驱动数码管的,因为我需要拿到数字信号有其它用途,DS18B20 满足技术上的要求,不过我想要精度更高一点的,能做到0.3以内最好 谢谢!…

查看全部问答>

求rt2880f的资料

求rt2880f数据手册 如果有daemon板的原理图更好 在网上找了不少时间都没有找到,以前好像都可以下的,但是现在下不到了 求各位大哥大姐,学弟学妹有的分享一下 先谢过各位了 …

查看全部问答>

从第四个起隔一个丢一个,困扰两天了

以下程序段的功能是:     以2400bps从计算机发送任一字节数据,当单片机收到该数据后, 在此数据前加上一序号然后连同此数据一起发送至计算机 出现的问题:     当发送abcdefgh时,收到的是1a2b3c4e5g    &nbs ...…

查看全部问答>

44b0x的中断优先级问题

44b0x的I_PSLV寄存器设置中断优先级,比如sGA (EINT0),是00最高,还是11最高?谢谢!…

查看全部问答>

一个CAN接口卡,两个SJA1000

我是搞单片机软件开发的,有一个问题,想问大家:一个CAN接口卡,两个SJA1000怎么协调工作?怎么工作的?能给解释以下吗?谢谢了!!…

查看全部问答>

有关LINUX移植的理解问题

书上有这么一段话: 众所周知,处理器只能执行存放在主存中的软件,而操作系统作为一种比较大的软件,在通常情况下,它只能存放在磁盘里。因此,就必须想办法在系统上电之后把它自磁盘提取出来并装入主存。       现在有块S3C ...…

查看全部问答>

stm32103xx请教DMA(DMA_Mode)使用问题!

DMA的正常(Normal)模式:采集到DMA_BufferSize 的个数后,DMA停止。DMA的循环模式:采集到DMA_BufferSize 的个数后,重新回到设置的RAM的起点位置,如此循环。 …

查看全部问答>

鼎阳SDS1102DL拆机图

近日在网上看到用户对鼎阳SDS1102DL的拆机图,给大家分享下,以后如考虑鼎阳示波器这也是个参考资料。 1,包装箱 2,型号,序列号标贴 3,软件版本 4,打开包装箱 内部摆设 5,配件大全 6,裸机观察 背部 CE标贴,接口,电源参数 QC、QA ...…

查看全部问答>