Cache地址与主存地址对应关系

     

一,为什么需要cache


         程序的运行大致是这个样纸的:当我们要运行一个程序时,如,我们点击了一个.exe的文件,然后剩下的事情就交给计算机处理了:计算机会先将程序读到内存,然后再通过各种调度读到cup中执行。(注:本图只是个例子)


     

    

       但是对于经常使用的程序或文件,想想如果我们经常按照这个顺序读下来,举个极端点儿的例子,从硬盘读到内存要1000S,从内存读到cache要100s,从cache读到寄存器执行要1s,这是我们就应该想,对于常用的东西,为什么不就放在身边呢?但是考虑到寄存器的容量太小的问题,于是,我们就把常用的东西放到了cache里面。这里的cache起到了一个buffer的作用:暂时不用但以后常用的东西先存起来。


        这样,使用了Cache后,我们在运行程序时如果需要访问存储器,就会先访问Cache,看看在这里面有没有我们要找的信息,如果没有,再到主存中去寻找,如果找不到,再到辅存中去找。


   


   

二,Cache与主存地址的对应方法

    

    CPU访问要读取数据时,发出来的是主存的地址,而有可能我们要访问的内容在Cache中,所以,这时候就要将主存地址转换为Cache的地址,这里,有3中转换方法。      


  1,直接映像

   

     在进行映像的工作时,规定各区中的某一信息块只能映像到Cache中的一个固定的信息块中,即主存中的第0块映像到cache的第0个块框架,第1块映像到cache的第1块,以此类推的映像方式。

 

 2,全相联


   在全相联Cache中,存储的块与块之间,以及存储顺序或保存的存储器地址之间没有直接的关系。程序可以访问很多的子程序、堆栈和段,而它们是位于主存储器的不同部位上。


    这时,我们可以先来看一下cache结构:


  

     因为Cache保存着很多互不相关的数据块,所以,Cache必须对每个块和块自身的地址加以存储(就放在上面的tag里面)。当请求数据时,Cache控制器要把请求地址同所有地址加以比较,进行确认。



3, 组相连


    组相联Cache是介于全相联Cache和直接映像Cache之间的一种结构:通过直接映像决定组号,在一组内再用全相联的方式来决定cache中的块号。






综上,可得出:


    直接映射:一个块可以放到cache中的唯一的位置上

    全相联:一个块可以放到cache中的任意的位置上

    组相联:一个块可以放到cache的受限的组里,该块可以放置到组内的任意一个块里


   计算机内各种地址转换都很有规律:1,分级:比如,河北省——廊坊市——安次区——狼院——**宿舍楼; 2,逐一比较:比如,查找门牌号为515的房间,就从000这个房间挨个比较到找到515为止;3,综合上面1和2:比如,要从中国查找这个515房间,就先利用分级方法确定515大致位置,然后再利用逐个比较的方法找。


 

   小结:

   

在贝尔克的亡灵中,福尔摩斯对柯南说过:


     人生就是一束无色的线里交缠着名为杀人的血红色的线,而解开那线的工作,不就是我们的工作吗?

 

     最近感觉学习东西就像是解开一团线,越理就越清晰吧~


    

    

     



          

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值