计算机组成-高速缓冲存储器Cache

    以前计算机是两层存储结构:主存和辅存。

     现在大多出计算机中的三层存储结构是:高速缓存Cache、主 存储器和辅助存储器。

     那为什么要提出高速缓存呢?

    主要的原因是为了提高存储器的平均访问速度。使存储器的速度与CPU的速度想匹配。

     那高速缓存是如何提高存储器的速度?

     首先介绍一下高速缓存,名叫Cache,Cache有两部分组成:控制部分和Cache部分。Cache部分用来存放主存的部分复制信息。(后面会介绍)控制部分的功能是:判断CPU要访问的信息是否在Cache中。

      CPU与Cache之间的数据交换是以字交换的,而Cache与主存储器之间的数据交换是以块交换的。一个数据块是由若干个字组成的。

     所以当CPU访问主存的一个信息时,于是把信息的内存地址通知给Cache和主存。此时Cache中的Cache部分(上面提到的)会根据内存地址判断此信息是否在Cache中,若在,则命中,即直接把信息从Cache传给CPU,若不在,则未命中。那如何办呢?首先主存会把此信息的传递给CPU,然后再把此信息的数据块存放到Cache,防止CPU下次读取。

   其实CPU访问的过程中,若是Cache未命中,主存把信息数据块存放到Cache中,涉及到局部性原理。

    那既然提到了局部性,那么我们介绍一下局部性原理,记得这在操作系统中虚拟存储器页面置换中提到过。

     局部性可以分为时间局部性和空间局部性。

     时间局部性是指:当一个数据访问完之后,在最近一段时间内再次访问。

     这种情况我们可以想想循环,循环就是此种情况。

     空间局部性是指:当一个数据访问完之后,在最近一段时间内会访问它周围的数据。

      这种情况我们可以想想数组,是不是这种情况哈。

 

       刚才提到命中,理论是有了,那如何计算命中率呢?

       命中率=Cache完成存取的次数/Cache完成存取的次数+主存完成的次数

        h=N/N+M

        那系统的访问时间:

      =  命中率*Cache的周期+(1-命中率)*主存的周期

      

       主存与Cache的地址映射:若是Cache中未命中,为了防止下次访问,则需要把主存中的字存放到Cache中,那如何定位主存的地址呢?

        Cache的地址映射可以分为三种:直接映射、全相联映射、组相联映射

        介绍一下这三种的原理。

        首先Cache中的数据块称为行,而主存中的数据块称为块。

         直接映射:主存中的地址只能映射到Cache中的确定的某一行。

         主存的地址分为:块号地址S位和块内容(字)w位。

         在直接映射中,Cache把主存块地址S分为两部分:r和s-r,其中r位作为cache的行地址, s-r位作为标记(tag)与块数据(字)保存在此行。若CPU访问主存中的数据,则cache用r位找到此行,然后用地址中的s-r 的标记部分与cache中r行的标记部分做对比,若相等则命中,否则失中。

         在全相联映射中,Cache把主存地址s直接作为标记部分。若访问,直接把地址中的标记部分和cache中的标记部分进行比较。

         在组相联映射中,主存地址首先确定分到cache的那个组(采用直接映射),然后分到确定组的任意行(采用全相联映射)。

        直接相联优点:地址变换简单。

                缺点:若是主存地址映射到Cache同一行中,则会出现冲突,灵活性较差。

        全相联优点:主存地址可以存放cache中的任意一行,灵活。

                 缺点:地址变换复杂。

         组相联:集上述两种优点一身。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值