【考研408计算机组成原理】存储系统之Cache考点

2024-06-20 13:52

本文主要是介绍【考研408计算机组成原理】存储系统之Cache考点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                                                            苏泽 

“弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家

另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱,

我根据这一套知识图谱打造了这样一个408知识图谱问答系统

里面的每一个回答都是根据考研408的考点回复的

目前暂时只接入了微信,如果大家对这个问答系统感兴趣的话可以在我的主页里找到我的微信号

找我拉进测试群免费体验哦


这一篇来复习计算机组成原理当中 存储系统章节之Cache的知识点

目录

这一篇来复习计算机组成原理当中 存储系统章节之Cache的知识点

Cache和高速缓冲器

存储器层次化结构

映射方式:

考点考题解答示例

替换算法:

写策略:

1. 全写法(Write-Through Cache)

2. 写回法(Write-Back Cache)

3. 写分配法(Write-Allocate Cache)

4. 非写分配法(No-Write-Allocate Cache)

写策略的选择

要注意的细节

Cache写策略的考点

考题示例


Cache和高速缓冲器

Cache通常指的是高速缓冲存储器(High-Speed Buffer Storage),它是一种特殊的存储结构,用于提高数据访问速度。Cache的目的是解决CPU(中央处理单元)与主存(主存储器)之间的速度不匹配问题。

存储器层次化结构

以下是Cache的一些关键特性和功能:

  • 引入目的:Cache是为了缓解CPU和主存之间的速度差异而设计的。由于CPU的处理速度通常远远超过主存的访问速度,Cache作为两者之间的缓冲,存储了频繁访问的数据,从而加快了数据的访问速度

映射方式

  • 直接映射:主存数据块只能装入到Cache中唯一的位置。
  • 全相联映射:可以把主存数据块装入Cache中的任何位置。
  • 组相联映射:将Cache分为若干组,组间直接映射,组内全相联映射。

考点考题解答示例

  • 问题:如果一个系统有2GB的地址空间,Cache大小为256KB,使用直接映射和组相联映射,需要多少位来表示Tag?

    • 解答
      • 直接映射

        首先确定地址总长度,2GB地址空间需要 log⁡2(2×109)=31log2​(2×109)=31 位。Cache大小为256KB,即 218218,所以索引部分需要 log⁡2(218)=18log2​(218)=18 位。因此,Tag的长度为 31−18=1331−18=13 位。

      • 组相联映射:假设Cache分为16组(仅为示例,实际组数由Cache大小和路数决定),则组号需要 log⁡2(16)=4log2​(16)=4 位。剩余的位用于Tag,即 31−4=2731−4=27 位。
  • 问题:如果一个Cache使用组相联映射,每组有8个Cache行,且Cache大小为1MB,需要多少位来表示Tag和组号?

    • 解答
      • Cache大小为1MB,即 220220。每组8行,所以每组大小为128KB,即 2^17。索引部分需要 log⁡2(217)=17log2​(217)=17 位来确定组内Cache行的位置。组号需要 log⁡2(8)=3log2​(8)=3 位。因此,Tag的长度为 20−17=3 位,组号为3位。

替换算法

当Cache满时,需要决定哪些数据被替换。常见的替换算法包括先进先出(FIFO)、近期最少使用(LRU)、最不经常使用和随机算法。

当Cache满了,需要引入新的数据时,就需要决定哪些旧数据需要被替换。以下是几种常用的Cache替换算法:

  • 先进先出(FIFO - First In, First Out)算法

    • 这种方法按照数据被加载到Cache中的顺序来决定哪些数据被替换。最先进入Cache的数据块将最先被替换。
  • 近期最少使用(LRU - Least Recently Used)算法

    • LRU算法会替换那些在最近一段时间内最少被访问的数据块。这种方法假设如果数据最近被访问过,那么它在未来可能还会被访问。
  • 最不经常使用(LFU - Least Frequently Used)算法

    • LFU算法替换那些在总的访问历史中被访问次数最少的数据块。这种方法关注于整体访问频率,而不是近期访问模式。

写策略

几种常见的Cache写策略:

1. 全写法(Write-Through Cache)

  • 在这种策略下,每次对Cache中的写操作都会同时更新主存中的相应数据块。这意味着Cache和主存的数据始终保持一致。
  • 优点是实现简单,数据一致性容易维护。
  • 缺点是每次写操作都需要访问主存,这可能会降低写操作的性能

2. 写回法(Write-Back Cache)

  • 写回法只在Cache中进行数据的写操作,并不立即同步到主存。只有当Cache中的块被替换时,才会将数据写回主存。
  • 这种方式可以减少对主存的写操作,提高写操作的性能。
  • 优点是写操作速度快,因为不需要每次都访问主存。
  • 缺点是实现相对复杂,需要额外的标记(如脏位,用于标记数据块是否被修改过)来追踪数据块的状态。

3. 写分配法(Write-Allocate Cache)

  • 在写分配法中,当发生Cache未命中时,会将主存中的数据块加载到Cache中,然后执行写操作。
  • 这种方法适用于写操作不频繁的场景,可以减少不必要的数据加载。

4. 非写分配法(No-Write-Allocate Cache)

  • 非写分配法在发生Cache未命中时,不将数据块加载到Cache中,而是直接在主存中进行写操作。
  • 这种方式适用于写操作非常频繁的场景,可以避免不必要的数据加载和替换。

写策略的选择

选择哪种写策略取决于具体的应用场景和性能需求。例如,如果写操作非常频繁,可能会选择写回法以提高性能;如果数据一致性非常关键,可能会选择全写法。

要注意的细节

  • 脏位(Dirty Bit):在写回法中,每个Cache行通常都有一个脏位,用于标记该行数据是否被修改过。这样,在替换数据块时,只有被修改过的块才需要写回主存。
  • 同步操作:在全写法中,每次写操作都需要同步到主存,这可能会引入额外的延迟。

Cache写策略的考点

Cache写策略是计算机组成原理中的一个重要考点,主要涉及以下几个方面:

  1. 写策略的概念:了解和区分不同类型的Cache写策略,包括全写法和写回法。

  2. 全写法(Write-Through Cache)

    • 写操作在Cache和主存中同步更新。
    • 适用于非写分配策略。
  3. 写回法(Write-Back Cache)

    • 写操作仅在Cache中进行,当Cache块被替换时再写回主存。
    • 适用于写分配策略。
  4. 未命中时的处理

    • 写分配法:在发生写未命中时,先将主存数据调入Cache,再进行写操作。
    • 非写分配法:直接在主存中进行写操作,跳过Cache。
  5. 写策略的选择:理解不同写策略的优缺点和适用场景。

  6. 写策略与存储器性能:分析写策略对存储器性能的影响。

  7. Cache一致性:在多级Cache系统中,理解如何维护Cache一致性。

考题示例

  1. 选择题:选择正确的Cache写策略,并解释其工作原理。

    在Cache的写回法中,当发生写操作时,数据是先写入到Cache还是主存?
    A. 主存
    B. Cache写回法(Write-Back)也被称为写回缓存或写分配缓存。
    在这种策略中,当发生写操作时,数据首先被写入到Cache中,而不是直接写入到主存。
    只有在Cache行被替换时,脏行(即那些已经被修改的行)才会被写回主存。
    这种方式可以减少对主存的写操作次数,因为只有在必要时才进行写回,从而提高性能。
  2. 简答题:简述全写法和写回法的区别,并说明各自的优缺点。

    描述全写法和写回法在处理写操作时的不同之处,并分析它们各自可能的性能特点。全写法(Write-Through):数据在写入Cache的同时,也会立即写入主存。
    优点:保证了Cache和主存的数据一致性。
    缺点:每次写操作都会涉及到主存,可能会降低写操作的性能。
    写回法(Write-Back):数据首先写入Cache,只在必要时(如替换时)写回主存。
    优点:减少了对主存的写操作,提高了写操作的性能。
    缺点:需要额外的机制来跟踪哪些数据块是脏的,增加了复杂性。
  3. 计算题:给定一个场景,计算在不同的写策略下,Cache的写操作性能。

    假设有一个系统使用写回法的Cache,每次写操作需要10个时钟周期来写入Cache,
    而写回主存需要50个时钟周期。
    如果系统在1秒内发生了1000次写操作,请计算Cache写操作的总延迟时间。1秒内发生1000次写操作。
    每次写操作的延迟时间 = 写入Cache的时间 + 写回主存的时间(如果发生)。
    由于写回法只在Cache行替换时写回主存,假设1000次写操作中有10%的行被替换,即100次写回主存。
    Cache写操作总延迟 = (1000 * 10) + (100 * 50) = 10000 + 5000 = 15000个时钟周期。
  4. 分析题:分析在多级Cache系统中,如何通过写策略来维护数据一致性。

    在一个具有L1和L2 Cache的多级Cache系统中,
    当L1 Cache发生写命中时,如何确保L2 Cache中相应的数据块保持一致性?
    请分析可能的策略及其影响。
    

        写回(Write-Back):L1 Cache的写操作只更新L1 Cache,L2 Cache中的数据被视为过时的。当L2 Cache需要该数据块时,会从L1 Cache中获取最新的数据。

这篇关于【考研408计算机组成原理】存储系统之Cache考点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078319

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们