Cache(高速缓存)的三种地址映像方式

1.直接映像方式 

 直接相连映像:每一个内存区都是和一个Cache块相对应的,也就是说,Cache块里有多少块,一个内存区里就有多少Cache块,每一块都是相互对应的。假设cache里有32块,那么内存里就会先算着32块总共有多大,在除以自己的容量,就可以得出自己该划分出多少的区,每一个区有n块(cache有多少块,一个内存区里就有多少块)。这样来一一对应。

优点:地址换算快,更好的运行效率。

缺点:冲突率太高,假设0区的第0块在和cache的第0块传递数据,第二区的第0块就不能传输,即使有别的cache块空闲着也不能传输,只能等。太浪费资源了。

2.全相连映像方式

 内存中不再分区,而是直接分块,就是你Cache有多大,我内存就按这个大小来分块,假设Cache有512kb,我内存中每一块就是512kb,我内存中每一块都相当于是一个Cache的副本(其实cache是内存的一个副本,这里为了方便理解,故此这样说)。例如,内存中的第0块中就有Cache中的每一块与之相对应。这样就很好的解决了冲突率高的问题,只有Cache中被填满了,才会有冲突产生。

优点:很好的解决了冲突高的问题,资源利用率高

缺点:造价相对昂贵,地址转换速度较慢。

3.组相连映像方式

是前两种的集大成者。它的分区方法是组对组的一种分区方式,每两块是一组。一个Cache对应一个内存中的区,内存区里的组数和Cache中的组数是一一对应的。Cache能够对应每一个内存区。这符合直接映像的优点。然而,每一个组内的数据也是可以自己替换的,比如内存中的第0区中的第8组的第0块中的数据可以替换到Cache第0组中的第0块,也可以去第0组的第一块。这就符合了全相连映像。所以说组采用直接映像,块采用全相连映像。 

 

如果看不懂,或许是关于cache和地址映像的一些知识还没有搞懂。在这里补充一下。

Cache:高速缓存:为了提供计算机的工作效率而存在的,这是因为CPU与内存的读取速度并不一致,所以出现了一个一级缓存Cache。它是内存的副本,一个计算机可能会运行多个程序,这些程序的进程在内存里。而一般人们会使用一个程序,这个可以称为主程序,你不能够要求张三一边打游戏一边写Word文档吧。但是内存的读取速度不够快,这个时候怎么办呢?就把CPU当前正在处理的主程序产生的数据传入Cache中,这样就可以解决内存速度不够的问题了。但是具体要怎么把内存中的数据给到Cache呢?这就需要使用到替换算法,因为Cache中的数据只是内存中的副本,所以需要用到替换算法来把内存中的相关信息替换到Cache中。

地址映像:因为CPU得到的只是内存地址,要从Cache中拿数据,就需要把这个地址转为Cache的地址,这个就叫做地址映像。地址转换完之后Cache得到相应的,有就给,没有再去内存里拿。

 

 个人原创,如有雷同,便是雷同。

 

 

 

 

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值