Cache容量计算例题:

假定主存地址位数为32位,按字节编址,主存和cache之间采用4-路组相联映射方式,主存块大小为4个字,每字32位,采用直写(Write Throght)方式和LRU替换策略,则能存放32K字数据的cache的总容量至少应有( )位。

得分/总分

A.

4672K

B.

1168K

C.

1184K

D.

4736K

正确答案:C

解析: C、cache共有32K字/4字=8K行,因为采用4-路组相联,因而共有8K/4=2K组,组号占11位;每个主存块为4字=4×32位=16B,故块内地址占4位。因此,标志占32-11-4=17位。4路组相联方式下,LRU替换算法需要每行有2位LRU位 (因为要表示0-3的数字吧);直写(Write Throght)方式无需修改位(dirty bit)。因而cache总容量为8K×(1+17+2+4×32)=1184K位。

Cache 写穿和写回模式

CPU使用高速缓存(dcache)时,它对内存的的写操作有两种模式:写穿(write-throuht)、写回(write-back)。

写穿(write-throuht)模式: 也叫直写式

该模式下,CPU对主存写数据时,不经过dcache直接写到内存,此时对于写的实现比较简单,如果系统只用写穿模式的话,dcache则变成了读缓存了。

写回(write-back)模式:

  1. 什么是写回 

    CPU写入数据时,不直接将数据写入内存,而是写入cache,当cache数据被替换出去时才写回主存。 

    此时存在一个问题,并不是所有的cache中的数据都被修改过,因此没必要把所有替换出去的数据都重新写入主存。 

    为了表示哪些数据被修改过(dcache中是数据和主存中的数据是否不一致),cache中每一块增加了一个记录信息位,CPU修改过的cache时,设置此记录信息位(此时数据块为脏的(dirty), cache数据写入到主存时清理此位(此时数据块为干净的(clean)。 

    有了次记录信息位,数据从cache替换到主存时只替换脏的数据块即可),
  2. 为什么有写回模式 

    大家都是知道cache速度远大于RAM(主存)。通过dcache吸收系统的写操作,在必要的时候再统一写入主存,从而减少频繁的相对较慢的对主存的写操作,这样明显能加速系统。同样的思想在主存与磁盘中也存在。

cache容量计算总结:

有效位1位必存在。

如果是写回法:多个1位脏位;如果是直写法,不用多脏位;

在组相联映射中,如果采用LRU替换,2路组相联映射:有1位LRU位,4路组相联映射,有2位LRU位

 

 

计算机系统原理:cache容量计算的更多相关文章

  1. [svc][op]磁盘(结构)容量计算

    磁盘结构和容量计算 fdisk -l显示信息详解 [root@www.linuxidc.com ~]# fdisk -l Disk /dev/sda: bytes heads, sectors/tra ...

  2. Ceph中的容量计算与管理

    转自:https://www.ustack.com/blog/ceph%ef%bc%8drongliang/ 在部署完Ceph集群之后,一般地我们可以通过Ceph df这个命令来查看集群的容量状态,但 ...

  3. 【转】Android SDCard操作(文件读写,容量计算)

    android.os.Environment 提供访问环境变量 java.lang.Object     android.os.Environment   Environment 静态方法: 方法 : ...

  4. 软考计算机网络原理之IP计算问题汇总

    转自 http://www.cnblogs.com/jyh317/archive/2013/04/14/3018650.html 1.IP地址 分类: ①A类IP地址 ②B类IP地址 ③C类IP地址 ...

  5. HTTP Cache怎样计算Age

    这里的Age指的是响应头Age.以下内容有部分翻译,也有部分自己的理解.欢迎讨论. 我们用now表示当前主机的当前时间,用request_time表示缓存发起请求的时间,用response_time表 ...

  6. zabbix (三) 所需磁盘容量计算

    一.zabbix 磁盘容量大小 zabbix的数据库大小取决于NVPS(new values per second)大小,NVPS从总体上反应了处理速度,与监控项的数目,监控项的类型,取值间隔,His ...

  7. BP原理 - 前向计算与反向传播实例

    Outline 前向计算 反向传播 很多事情不是需要聪明一点,而是需要耐心一点,踏下心来认真看真的很简单的. 假设有这样一个网络层: 第一层是输入层,包含两个神经元i1 i2和截距b1: 第二层是隐含 ...

  8. Cache的原理、设计及实现

    Cache的原理.设计及实现 前言 虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构.指令结构.信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特 ...

  9. 【底层原理】深入理解Cache (下)

    得到了我的PC的cache参数如下: L1 Cache : 32KB , 8路组相连,linesize为 64Byte 64个组 L2 Cache:256KB 8路组相连,linesize为 64By ...

随机推荐

  1. RabbitMQ基础教程

    目录 RabbitMQ相关概念介绍 生产者和消费者 队列 交换器.路由键.绑定 交换器类型 RabbitMQ运转流程 AMQP协议介绍 AMQP生产者流转过程 AMQP消费者流转过程 安装Rabbit ...

  2. 使用.net5 创建具有身份验证和授权的Blazor应用程序

     

  3. postman接口测试之设置全局变量和设置环境变量和全局变量

    一.概念 1.环境变量 就是接口的域名或IP地址. 2.全局变量 就是一个作用域为整个postman的变量. 二.使用场景 1.环境变量 在测试的过程中,经常会频繁切换环境,本地环境验证.发布到测试环 ...

  4. FreeBSD 中文TTY控制台

    freebsd新型终端VT,支持cjk,所以丢个字体进去,就能显示中文了1,首先你没有改过控制台程序,使用的是默认的,,2,最新版本,本说明是以freebsd12.1release字体格式为.fnt命 ...

  5. JVM 中的垃圾回收

    说到JVM,总是绕不开垃圾回收,因为其是JVM的核心之一,因为对象的创建是非常频繁的,想要提高程序的执行效率,拥有一个高效的垃圾回收机制是必不可少的. 首先要明确,因为对象的创建只在堆中,所以垃圾回收 ...

  6. Python基础(1)——变量和数据类型[xiaoshun]

    目录 一.变量 1.概述 Variables are used to store information to be referenced(引用)and manipulated(操作) in a co ...

  7. Codeforces Round #546 C. Nastya Is Transposing Matrices

    题面: 传送门 题目描述: 给出两个n x m的矩阵A,B.矩阵A可以把正方子矩阵进行"转置操作",问:可不可以对矩阵A进行多次这样的操作,使矩阵A变为矩阵B?   题目分析: 这 ...

  8. Codeforces 784B Santa Claus and Keyboard Check

    题面: 传送门 B. Santa Claus and Keyboard Check Input file: standard input Output file: standard output Time ...

  9. mobx 的学习

    1.初始化项目 第一步用create-react-app初始化一个项目,并打开webpack配置项 npx create-react-app react-mobx-demo cd react-mobx ...

  10. 想了解FlinkX-Oracle Logminer?那就不要错过这篇文章

    FlinkX-Oracle Logminer模块是FlinkX基于Logminer对Oracle重做日志进行实时采集分析,可对Oracle进行实时同步也可以通过指定SCN或者时间戳从某个节点进行同步, ...