在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 7824|回复: 18

cache 介绍

[复制链接]
发表于 2004-6-18 23:02:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
常用的存储器,存储周期需要100ns~200ns,在每次进行存储访问时,处理器都需要等待存储器将数据准备好,或者等待数据写入成功后才能继续执行,这样CPU更多的时间是处于等待状态。高速缓冲存储器(cache)和写缓冲区(write buffer)介于CPU和存储器之间,用于提高存储访问的性能。
在具有cache功能的存储系统中,cache被和划分成和存储器大小相同的块。当CPU对存储器访问时,地址首先送入 cache中,cache检查地址是否和自身已有的地址匹配,如命中,则从 cache 中读/写数据,否则从实际的存储器中读/写数据。Cache的容量是有限的,当cache容量已满时,可通过某种算法替换不常用的 cache 。由于程序的执行具有局部性的特点,在进行 cache操作时,一般都把临近地址的内容调入到cache,可提高cache的命中率。
在MMU的页表项中有C、B控制位,可以控制读/写缓存的属性。C位控制读缓冲,当C=1时,使能读缓冲。B位控制写缓冲,当B=1时,使能写缓冲。
Cache的存储缓冲作用对于程序员来说是透明的,cache的使用可以大大的提高系统的性能。在ARM920T中,cache分为两个独立的块,即Icache(指令缓冲)和Dcache(数据缓冲)。Dcache共有16KB,分为512块,每块包含32个字节(即8个字)。每块包含两个修改标志位(分别对应高4个字节和低4个字节)和一个有效位。在cache进行替换时,是以块为单位进行的。在使能cache并允许写缓冲时,CPU进行写操作,若命中,则处理器仅修改cache中对应地址的内容,并把修改标志位置为有效,并非对实际存储器进行操作。当cache由于替换算法或者是应用程序发出清除Dcache内容指令,而将某一块替换出cache后,协处理器对修改标志位进行检查,如有效,则将当前cache中内容写入实际存储器。
由上可知,cache未命中时,因在cache中进行地址匹配,延长访问时间,将会降低系统的性能。在ARM系统中引入了cache内容锁定技术,以降低这种不利影响。Cache内容锁定就是将关键代码和数据预取到cache中,设置一定的属性,使发生cache块替换时,这些关键代码和数据不被替换掉。在实时操作系统中,要不断的发生定时中断以及进行任务切换(每秒钟几十次到上百次),将这些关键代码进行cache锁定从一定程度上可以提高CPU的性能。
虽然cache有很多好处,但cache的使用也需注意很多问题,不当的使用会引起意想不到的问题。在ARM存储系统中,I/O空间和存储器空间统一编址。对I/O的操作与普通存储空间操作是相同的。在使用cache,并允许读/写缓冲时,向一个I/O空间写入数据,实际上并非真正写入到了I/O口,只是对cache中的内容进行了更新,只有该块被替换掉后才能执行真正的写I/O口地址的操作,特别是如果对同I/O口写进行多次写数据,只有最后一次的才是有效的;类似的,对I/O进行读操作,期望进行多次读操作返回不同的值,由于cache缓冲作用,每次返回的值都是从cache中取得的。因此对 I/O 空间的操作便不能使用 cache 技术。
使用cache后,必然对同一地址的内容保存有多个副本,如保存在读缓冲区中,写缓冲区中,实际存储器中。使用MMU建立了一套虚拟地址到物理地址的映射关系之后,假设此时A1地址的内容保存在cache中。当虚拟地址到物理地址映射关系发生变化时,物理地址A1中的内容却尚未更新,在映射关系变化前,需要先清空cache中内容,再重新映射。
发表于 2007-12-6 20:46:29 | 显示全部楼层
这个可是要点…
发表于 2008-1-3 19:02:18 | 显示全部楼层
很详细,谢谢
发表于 2008-9-26 23:39:25 | 显示全部楼层
简明扼要,谢谢了~
发表于 2008-9-27 10:36:57 | 显示全部楼层
讲的不错~!
如果CPU不带Cache自己设计实现是不是比较复杂?
发表于 2009-12-29 14:37:42 | 显示全部楼层
good!!!!
发表于 2009-12-30 23:40:20 | 显示全部楼层
器,存储周期需要100ns~200ns,在每次进行存储访问时,处理器都需要等待存储器将数据准备好,或者等待数据写入成功后才能继续执行,这样CPU更多的时间是处于等待状态。高速缓冲存储器(cache)和写缓冲区(write buffer
发表于 2010-4-5 21:19:39 | 显示全部楼层
学习了 呵呵
发表于 2010-4-26 04:21:27 | 显示全部楼层
不错~不过CACHE更明白的观念可以去看看操作系统...
发表于 2010-5-5 12:45:21 | 显示全部楼层
讲的不错~!
很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 01:41 , Processed in 0.038382 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表