Cache与主存地址映像知识点及例题分析

 Cache与主存地址映像知识点及例题分析

例题:

      容量为64 块的Cache 采用组相联方式映像,字块大小为128 字节,每4 块为一组,若主容量为4096 块,且以字编址,那么主存地址为(19 )位,主存区号为(6 )位。

 

      这是一道Cache 与主存地址映像的问题,即主存以什么规则装入Cache 。它是计算机系统结构中存储体系的一部分内容。好了,觉得还是先把相关的知识点写一下先的好,不然只看答案可能有点难懂。

 

知识点:Cache 与主存地址映像

 

Cache 和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和Cache 的数据交换是以块为单位,需要考虑二者地址的逻辑关系。

 

地址映像:把主存地址空间映像到Cache 地址空间,即按某种规则把主存的块复制到Cache 中。

 

一、 全相连映像

 

主存中任何一个块均可以映像装入到Cache 中的任何一个块的位置上。主存地址分为块号和块内地址两部分,Cache 地址也分为块号和块内地址。Cache 的块内地址部分直接取自主存地址的块内地址段。主存块号和Cache 块号不相同,Cache 块号根据主存块号从块表中查找。Cache 保存的各数据块互不相关,Cache 必须对每个块和块自身的地址加以存储。当请求数据时,Cache 控制器要把请求地址同所有的地址加以比较,进行确认。

 

特点:灵活,块冲突率低,只有在Cache 中的块全部装满后才会出现冲突,Cache 利用率高。但地址变换机构复杂,地址变换速度慢,成本高。

 

公式:

       主存地址位数=块号+ 块内地址;

       Cache 地址位数=块号+ 块内地址。

 

二、 直接映像

 

把主存分成若干区,每区与Cache 大小相同。区内分块,主存每个区中块的大小和Cache 中块的大小相等,主存中每个区包含的块的个数与Cache 中块的个数相等。任意一个主存块只能映像到Cache 中唯一指定的块中,即相同块号的位置。主存地址分为三部分:区号、块号和块内地址,Cache 地址分为:块号和块内地址。直接映像方式下,数据块只能映像到Cache 中唯一指定的位置,故不存在替换算法的问题。它不同于全相连Cache ,地址仅需比较一次。

 

特点:地址变换简单、速度快,可直接由主存地址提取出Cache 地址。但不灵活,块冲突率较高,Cache 空间得不到充分利用。

 

公式:

      主存地址位数=区号+ 区内分块号+ 块内地址;

      Cache 地址位数=块号+ 块内地址。

 

三、 组相连映像

 

组相连映像是前两种方式的折衷。主存按Cache 容量分区,每个区分为若干组,每组包含若干块。Cache 也进行同样的分组和分块。主存中一个组内的块数与Cache 中一个组内的块数相等。组间采用直接方式,组内采用全相连方式。组的容量=1 时,即直接映像,组的容量=整个Cache 的容量时,即全相连映像。Cache 的存在对于程序员透明,Cache 的地址变换和数据块的替换算法都采用硬件实现。

 

公式:

 

主存地址位数=区号+ 组号+ 主存块号+ 块内地址;

Cache 地址位数=组号+ 组内块号+ 块内地址。

 

 

四、 主存地址和Cache 地址的相关计算

 

&主存地址的位数A 由主存容量N 决定

    A log2N= 区号位数+块号位数+块内地址位数

 

Cache 地址的位数BCache 容量H 决定

   B LOG2H =块号位数+块内地址位数

 

&区号根据Cache 容量划分,区号长度=主存地址位数-Cache 地址位数

 

&主存的块号和Cache 块号的长度相同,位数K 取决于Cache 中能容纳的个数

J KLOG2J

 

     &主存的块内地址和Cache 的块内地址长度相同,位数M 取决于块的容量  Q           MLOG2Q          

 

 

 

 

 

 

 

例题解析:

 

方法一

 

       分区数=主存容量/Cache 容量=40966464

       区内分组数=64/4=16;

       组内分块数=4 块/组;

       块内地址=128 字节;

 

       所以根据公式:

 

主存地址位数=6+4+2+719

             主存区号=6 位。

方法二:

     

   &主存地址的位数A 由主存容量N 决定

         A log2N= 区号位数+块号位数+块内地址位数

      

       所以:

           A LOG2NLOG24096*128 )=LOG22 ^ 12*2 ^ 7 )=LOG22 ^ 19

            19

   Cache 地址的位数BCache 容量H 决定

     B LOG2H =块号位数+块内地址位数

 

   所以:

       B LOG264*128 )=13.

  

   区号的计算方法同上!

 

方法三:

  

       主存地址=主存块地址+ 块内地址=12+719

   主存区号地址=主存块地址-Cache 块地址=12-66.

 

http://blog.chinaunix.net/u2/70445/showart_1308837.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值