zoukankan      html  css  js  c++  java
  • 计算机原理 4.11 高速缓冲存储器例题选讲

    例1

    假定主存和Cache之间采用直接映射方式,块大小为16B。Cache数据区容量为64KB,主存地址为32位,按字节编址。要求

    1)给出直接映射方式下主存地址划分

    2)完成Cache访问的硬件实现

    3)计算Cache容量

    解:

    1)由题目条件知:

    数据块大小16B--------》块内偏移地址4位

    Cache数据区容量为64KB---------》64KB/16B=4096行Cache--------》index字段12位

    Tag字段的位数为---------》32-12-4=16位(Tag)

    2)

     3)计算Cache容量(假定Cache中除数据和标记外还包含一位有效位)

    第一问的解答可知:Tag为16bit

    由题目条件及Cache的工作原理知:

    Cache每行数据存储体容量为16*8=128bit

    Cache每行的总存储容量为:1+16+128=145bit

    Cache总容量为4096 x 145=580Kbit

     

    例2  设某机内容容量为16MB,Cache的容量16KB,每块8个字,每个字32位,设计一个四路组相联映射(即Cache内每组包含4个字块)的Cache组织方式

    1)求满足组相联映射的主存地址字段中各字段的位数

    2)设Cache的初态为空,CPU从主存第0号单元开始连续访问100个字(主存一次读出一个字),重复此次序读8次,求存储访问的命中率

    3)若Cache的速度是主存速度的6倍,求存储系统访问加速比

    解:

    1)每块8*32位=32B-----》块内偏移地址5位

    也可堆出Cache行数为16KB/32B=512行

    Cache的组数为----》512/4=128组-----》index字段7位

    Tag字段为:24-5-7=12位

    数据字长总字数为24位呢?

    因为内容容量为16MB,把它化为字节,就是16 x 1024 x 1024=224,所以数据字长为24位,一般都是默认按字节编址。

    2)

    主存100个单元分13块,处于主存0组,而Cache有128组,故访问主存前100号单元不发生页面调度

    初态为空,每块第一次不命中,后7次访问均命中

    100号单元对应13块,第一轮访问13次不命中,后七轮访问均命中

    循环8次的总命中率为:

    (100*8-13)/(8*100)=98.375%

    3)设Cache的存取周期为t,则主存存取周期为6t

    直接从内存读取所有数据所需时间为:

    T1=800*6t=4800t

    通过Cache访问800个数据的时间为:

    T2=13*6t+(800-13)*t=865t

    存储系统访问的加速比

    S=T1/T2=(4800t/865t)=5.5

    例3  局部性分析,以下程序A和B中,哪一个对数组A[2048][2048]引用的空间局部性更好?时间局部性呢?变量sum的空间局部性和时间局部性如何?

     

     程序段A:

    数组访问顺序与存放顺序一致,空间局部性好!

    数组虽在循环体中,但每个元素只用一次,时间局部性差!

    变量sum在循环体中,时间局部性好!

    变量sum只有一个变量,空间局部性差!

    程序段B:

    数组访问顺序与存放顺序不一致,空间局部性差!

    数组虽在循环体中,但每个元素只用一次,时间局部性差!

    变量sum在循环体中,时间局部性好!

    变量sum只有一个变量,空间局部性差!

  • 相关阅读:
    Redis Redis-Cell
    Redis Bloom Filter
    Redis HyperLogLog
    TCC、XA 、DTP区别
    MySQL索引最左匹配原则
    什么原因导致统计信息失效--SQL
    光标移动大法---落落大神
    mongo 导入导出
    oracle 10053 事件
    卸载12C
  • 原文地址:https://www.cnblogs.com/fate-/p/13172737.html
Copyright © 2011-2022 走看看