计算机组成原理 — 存储器(2)

高速缓冲存储器

大家好呀!我是小笙,由于存储器这部分章节内容较多,我分成二部分进行总结,以下是第二部分,希望内容对你有所帮助!

概述

目的:避免CPU空等现象

原理:程序访问的局部性原理(指令和数据在主存地址分布不是随机的,而是相对的簇聚,也就是说程序大部分访问都是少数的指令和数据)

image-20230722101550637

Cache 工作原理

主存和缓存的编址

  • 主存和缓存按块存储,块的大小相同(B 就是块的大小)
  • Cache 内的块内地址不仅大小和主存一样,而且取值也是一样的
  • Cache 内的标记就是来记录主存的主存块号

image-20230722101645431

命中与未命中

缓存共有 C 块,主存共有 M 块(M >> C)

  • 命中:CPU 所要访问的数据已经从主存储器映射到了 Cache 缓存中(用标记建立起与主存的关系)
  • 未命中:CPU 所要访问的数据没有在 Cache 缓存中找到
  • 命中率 h:CPU欲访问的信息在 Cache 中的比率(与 Cache 的容量和块长有关)
  • 访问效率 e:tc / (h * tc + (1-h) * (tm + tc)) * 100% (区间:[tc / tm ,1]) (访问 Cache 的时间 tc ; 访问主存的时间 tm)

示例详解

假设 CPU 执行某段程序时,共访问 Cache 命中3000次,访问主存 20 次。已知 Cache的存取周期为50ns,主存的存取周期为200ns,求Cache-主存系统的命中率、访问效率和平均访问时间?

  • 命中率 = 命中 Cache 的次数 / 总次数 = 3000 / (3000+20)
  • 平均访问时间 = Cache的存取周期 * 命中率 + (1 - 命中率) * 主存的存取周期 = 50ns * h + (1-h) * 200ns
  • 访问效率 e = 访问 Cache 的时间 / 平均访问时间 * 100% = 50ns / 50ns * h + (1-h) * 200ns

Cache 的基本结构

Cache 的基本结构原理框图

CPU(通过地址总线)给出地址,这个地址包括**(主存)块号块内地址**。块内地址直接传给Cache,使用块号在主存Cache地址映像机构中确认是否命中。如果发生命中,得到Cache的块号;如果未命中,查看Cache中是否有空间可装入主存块。若有,访问主存装入Cache;若没有,启用Cache替换机构,根据替换算法,决定Cache中哪块可以被替换,然后访问主存替换Cache即可

它主要由Cache存储体、地址映射变换机构、Cache替换机构几大模块组成

  • Cache存储体

    Cache存储体以块为单位与主存交换信息,为加速Cache与主存之间的调动,主存大多采用多体结构,且Cache访存的优先级最高

  • 地址映射变换机构

    地址映射变换机构是将CPU送来的主存地址转换为Cache地址

  • Cache替换机构

    当Cache内容已满,无法接受来自主存块的信息时,就由Cache内的替换机构按一定的替换算法来确定应从Cache内移出哪个块返回主存,而把新的主存块调入Cache

  • Cache的读写操作

    • 读操作

      image-20240220124748964
    • 写操作

      • 写直达

        写操作数据既写入Cache 又写入主存;写操作时间就是访问主存的时间

      • 写回法

        写操作只把数据写入到 Cache 缓存而不写入主存;当 Cache 写入的数据要被替换的时候才写入主存

注意:Cache 对用户来说是透明的


Cache 的改进

Cache 的改进框图

image-20230722112226441

片内缓存:也称单一缓存,是指在CPU和主存之间只设一个缓存

  • 片内缓存与CPU之间的数据通路很短,大大提高了存取速度,外部总线又可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率
  • 可是,由于片内缓存在芯片内,其容量不可能很大,这就可能致使CPU欲访问的信息不在缓存内,势必通过系统总线访问主存,访问次数多了,整机速度就会下降

片外缓存:也称二级缓存,由比主存动态RAM和ROM存取速度更快的静态RAM组成

统一缓存和分立缓存的选取主要考虑两个因素:

  • 与主存结构有关。如果计算机的主存是统一的(指令和数据存储在统一主存中),则相应的Cache采用统一缓存;如果主存采用指令、数据分开存储的方案,则相应的Cache采用分立缓存
  • 与指令执行的控制方式有关。当采用超前控制或流水线控制方式时,一般采用分立缓存(所谓超前控制,是指在当前指令执行过程尚未结束时就提前将下一条准备执行的指令取出)

Cache - 主存的地址映射

由主存地址映射到Cache地址称为地址映射。地址映射方式很多,有直接映射、全相联映射、组相联映射三种

直接映射

  • 每个缓存块 i 可以和若干个主存块对应
  • 每个主存块 j 只能和一个缓存块对应
image-20240220223000655

说明

  • 主存字块标记(区号):将主存分成 2 的 t 次方倍的 Cache 大小,也就是 t 的位数取决于 主存 / Cache 的大小

  • Cache 字块地址(块号):主存每个区都会对应字块 2 的 c 次方块数,Cache中也会有对应的块号与之一一对应,只要区号和块号都一致,就可以知道Cache中是否有该数据

    image-20230722132835714

优点:实现简单,只需利用主存地址的某些位直接判断,就可确定所需字块是否在缓存中

缺点:不够灵活,因每个内存块只能固定地对应某个缓存块,即使缓存内还空着许多位置也不能占用,使缓存的存储空间得不到充分的利用。此外,如果程序恰好要重复访问对应同一缓存位置的不同主存块,就要不停地进行替换,从而降低命中率

全相联映射

允许主存中每一字块映射到Cache中的任何一块位置上

image-20240220223725460

优点:灵活,命中率高,缩短了块冲突率。

缺点

  • 主存字块标记需要与Cache的所有标记进行同时比较,电路会非常复杂。
  • 主存字块标记从t位增加到t+c位,这就使Cache”标记“的位数增多,比较器的长度就会增长。

组相联映射

组相联映射是对直接映射和全相联映射的一种折中

i = j mod Q (某一主存块 j 按模 Q 映射到缓存的第 i 组中的任一块)

image-20240220224232200

说明:主存的字块号对应了 Cache 的组数,Cache 的组数决定可以主存相同块号同时放入 Cache 中的数量

优点

  1. 减少了冲突失效:与直接映射相比,组相联映射通过将主存块映射到一组而不是单一的缓存块,减少了因为多个频繁访问的内存块映射到同一个缓存块而产生的冲突失效(冲突失效是指不同的内存块需要映射到同一个缓存块)
  2. 简化了替换策略:由于一个组内有多个块可供选择替换,因此替换策略(如最少使用替换或随机替换)的实施比全相联映射简单,因为它只需在组内进行选择,而不是在整个缓存中进行选择
  3. 灵活性和适应性:组相联映射可以根据缓存的大小和设计,调整组的大小,从而提供更好的性能和适应性
  4. 成本适中:与全相联映射相比,组相联映射在硬件实现上的成本更低,因为它不需要在整个缓存中搜索可替换的块

缺点

  1. 硬件复杂性:尽管组相联映射的硬件复杂性低于全相联映射,但它仍然比直接映射复杂,因为它需要额外的硬件来识别和选择组内的缓存块
  2. 有限的并行度:组相联映射的并行度低于全相联映射,因为它仍然存在一定程度的冲突失效,这限制了并行访问缓存的能力

例题详集

例题 1:直接映射

假设有一个Cache,容量为16KB,块大小为4字节,使用直接映射技术。主存地址为32位。求:

  1. Cache中有多少个块?
  2. Cache的索引位数是多少?
  3. 主存中的一个特定地址0x0000A5F8会被映射到Cache的哪个块?

解答

  1. Cache的总块数 = Cache容量 / 块大小 = 16KB / 4B = 4096个块
  2. Cache的索引位数 = log2(总块数) = log2(4096) = 12位
  3. 对于直接映射,Cache的索引部分直接由主存地址的中间部分给出(忽略最低的块偏移量和最高的主存标记位)。假设Cache的起始地址为0,那么地址0x0000A5F8的索引部分是A5F8的后12位,即0xA5F8的最低12位,所以索引是0x5F8。这个索引值将指定Cache中的相应块

例题 2:组相联映射

假设有一个Cache,容量为32KB,块大小为8字节,使用2路组相联映射技术。主存地址为32位。求:

  1. Cache中有多少个块?
  2. Cache的组数是多少?
  3. 主存地址0x00012345会被映射到Cache的哪个组?

解答

  1. Cache的总块数 = Cache容量 / 块大小 = 32KB / 8B = 4096个块
  2. 由于是2路组相联映射,每个组包含2个块,所以组数 = 总块数 / 每组的块数 = 4096 / 2 = 2048组
  3. 对于组相联映射,Cache的索引位数 = log2(组数) = log2(2048) = 11位。地址0x00012345的索引部分是中间的11位,即0x12345的最低11位,所以索引是0x345。这个索引值将指定Cache中的相应组

例题 3:全相联映射

假设有一个Cache,容量为8KB,块大小为16字节,使用全相联映射技术。主存地址为32位。求:

  1. Cache中有多少个块?
  2. 主存地址0x00005678会被映射到Cache中的哪个块(假设使用最少使用替换策略)?

解答

  1. Cache的总块数 = Cache容量 / 块大小 = 8KB / 16B = 512个块
  2. 对于全相联映射,不需要索引位,因为Cache中的任何块都可以映射到任何一个地址。但是,替换策略(在这个例子中最少使用)决定了哪个块将被替换。地址0x00005678映射到Cache中的哪个块取决于当前的Cache状态和替换策略。全相联映射没有固定的映射规则,需要额外的硬件来跟踪每个块的使用情况

替换算法

先进先出(FIFO)算法

选择最早调入Cache的字块进行替换,它不需要记录各字块的使用情况

  • 优点:比较容易实现,开销小
  • 缺点:没有根据访存的局部性原理,故不能提高 Cache 的命中率

近期最少使用(LRU)算法

LRU算法比较好地利用访存局部性原理,替换出近期用得最少的字块。它需要随时记录 Cache中各字块的使用情况,以便确定哪个字块是近期最少使用的字块。

优点:它实际是一种推测的方法,比较复杂,一般采用简化的方法,只记录每个块最近一次使用的时间,LRU算法的平均命中率比FIFO的高

辅助存储器(了解)

概述

辅助存储器,也称为外部存储器或第二存储器,是计算机系统中用于长期存储大量数据和程序的设备,与主存储器(RAM)相对。辅助存储器不像主存储器那样直接由CPU访问,但其存储容量通常要大得多,而且数据在断电后仍然可以保持

image-20230722135011004

  • 记录密度:它决定了磁盘上可以存储多少数据位(磁带存储器则用位密度表示;磁盘沿半径方向单位长度的磁道数为道密度)
  • 存储容量:硬盘的存储容量主要由磁盘的数量、磁盘的尺寸以及存储密度决定
  • 平均寻址时间:包括寻道时间和等待时间。寻道时间是磁头移动到正确磁道的时间,等待时间是磁头等待所需数据旋转到磁头下方的时间
  • 数据传输速率:受限于磁盘的旋转速度和磁头的读写能力(记录密度 Db;记录介质的运动速度 V)
  • 误码率:通常与存储介质的品质、磁头的技术以及读写过程的准确性有关

磁记录原理

概述

磁记录原理是利用磁性的变化来存储和读取数据的技术。在磁记录中,信息被转换成电信号,这些电信号通过磁头产生变化的磁场,进而改变磁记录介质(如磁带或硬盘)上的磁化方向,以此来记录数据

本质就是利用磁体的南北极来对应二进制的 0 和 1

写入(记录)过程

  • 输入信息首先被转换成电信号
  • 这些电信号通过磁头线圈产生磁场
  • 当磁场强度足够大,能够克服磁介质的矫顽力时,磁介质表面会产生磁化区域
  • 磁化区域的方向(北极指向南极)代表二进制信息中的一个位(0或1)
image-20240221182502228

读取(再现)过程

  • 磁头移动到磁化区域上方,磁介质的磁化状态会影响磁头的磁场
  • 这种变化被转换成电信号,通过放大和处理,恢复成原始的输入信息
image-20240221182522647

总的来说,磁记录是一种成熟且广泛应用的存储技术,它通过改变磁性材料表面的磁化方向来存储和读取数字信息


硬磁盘存储器

概述

硬磁盘存储器是一种利用磁记录技术进行数据存储的辅助存储设备。它由一个或多个快速旋转的磁盘(盘片)组成,每个磁盘表面都涂有一层磁性材料。硬磁盘存储器通过磁头在磁盘表面读写数据,这些磁头悬浮在磁盘表面非常小的距离上,不会与磁盘表面直接接触

硬磁盘存储器的类型

  • 固定磁头和移动磁头

    image-20240221183158043
  • 可换盘和固定盘(可换盘片指盘片可以脱机保存;固定盘磁盘存储器是指磁盘不能从驱动器中取下,更换时要把整个头盘组合体一起更换)

硬磁盘储存器的结构

硬磁盘存储器由磁盘驱动器、磁盘控制器和盘片3大部分组成

image-20240221183435766
  • 磁盘驱动器:这是硬磁盘存储器的核心部件,负责控制磁头的移动以及磁盘的旋转。它通常包括磁头组件、盘片组件、电机和控制器等
  • 磁盘:磁盘是硬磁盘存储器的数据存储介质,通常由一个或多个铝或玻璃制成的盘片组成。每个盘片都涂有一层磁性材料,用于存储数据
  • 磁头:磁头是硬磁盘存储器中读取和写入数据的关键部件。它通常安装在磁头臂上,可以精确地移动到磁盘的指定位置进行读写操作
  • 硬盘控制器:硬盘控制器是硬盘存储器和计算机主板之间的接口,负责管理数据传输和磁盘操作。常见的硬盘控制器标准有IDE、SCSI、SATA等

磁盘驱动器

磁盘驱动器是主机外的一个独立装置,又称磁盘机,主要包括主轴、定位驱动及数据控制等3部分

image-20240221183604478

磁盘控制器

磁盘控制器通常制作成一块电路板,插在主机总线插槽中

作用:接收由主机发来的命令,将它转换成磁盘驱动器的控制命令,实现主机和驱动器之间的数据格式转换和数据传送,并控制驱动器的读/写

image-20240221183954078

磁盘控制器是主机与磁盘驱动器之间的接口

  • 接收主机发来的命令,转换成磁盘驱动器的控制命令
  • 实现主机和驱动器之间的数据格式转换
  • 控制磁盘驱动器读写

盘片

由硬质铝合金材料制成


软磁盘存储器

概述

软磁盘存储器与硬磁盘存储器的存储原理和记录方式是相同的,但在结构上有较大的区别

硬盘软盘
速度
磁头固定、活动(浮动)活动(接触盘片)
盘片固定盘、盘组大部分不可换可换盘片
价格
环境苛刻不苛刻

软盘片

是一种已经较为过时的存储介质,它由一个柔软的磁性圆盘封装在一个方形或圆形的保护套中。软盘片在个人电脑和计算机历史上曾广泛使用,但因其有限的存储容量和相对较慢的数据传输速度,已经被更高效的大容量存储设备所取代

软盘片的工作原理

软盘片的工作原理与硬磁盘驱动器类似,都是利用磁性材料记录数据。软盘片的数据存储在磁盘的磁性涂层上,通过改变磁性的方向来表示二进制数据(0和1)。读写数据时,软盘驱动器中的磁头会接触(或非常接近)磁盘表面的磁性涂层,进行数据的读取或写入。


光盘存储器

概述

是一种使用光学技术来读取和写入数据的存储设备。光盘存储器利用激光束在光盘表面形成的小凹槽(即“坑”)来存储信息。这些凹槽代表二进制数据,通过激光读取凹槽的反射差异来识别数据

  • 采用光存储技术 —- 利用激光写入和读出
  • 第一代光存储技术 —- 采用非磁性介质 — 不可擦写
  • 第二代光存储技术 —- 采用磁性介质 — 可擦写

光盘存储器的工作原理

  • 写入数据:在可写或可重写光盘上,激光束会加热光盘表面的特殊染料或相变材料,使其融化或改变相位,形成凹槽
  • 读取数据:读取数据时,激光束照射在光盘表面,当激光遇到凹槽时,反射率会发生变化,光传感器检测到这些变化并将其转换为电信号,进而解码为数字数据

光盘的存储原理

  • 只读型和只写一次型 — 热作用(物理或化学)
  • 可擦写光盘 — 热磁效应

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/411856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【王道数据结构】【chapter6图】【P258t7】

试编写 利用DFS实现有向无环图的拓扑排序的算法 #include <iostream> #define maxsize 10 typedef struct node{int data;struct node *next; }node ,*pnode;pnode buynode(int x) {pnode tmp(pnode) malloc(sizeof (node));tmp->datax;tmp->next nullptr;return t…

【K8s】初识PV和PVC

​ 目录 收起 O、致谢 一、前言 二、Volume 2.1 什么是Volume 2.2 为什么要引入Volume 2.3 Volume类型有哪些 2.4 Volume如何使用 2.4.1 通过emptyDir共享数据 2.4.2 使用HostPath挂载宿主机文件 2.4.3 挂载NFS至容器 三、PV和PVC 3.1 什么是PV和PVC 3.2 为什么要引入PV和PVC 3…

Remainder Problem(根号分治)

Educational Codeforces Round 71 (Rated for Div. 2) F. Remainder Problem 题目链接 F. Remainder Problem 题意&#xff1a; 给你一个由 500000 500000 500000 个整数&#xff08;编号从 1 1 1 到 500000 500000 500000 &#xff09;组成的数组 a a a 。最初 a a a…

【JavaEE】网络原理: HTTPS协议相关内容

目录 HTTPS 是什么 HTTPS 的工作过程 对称加密 非对称加密 引入证书 理解数据签名 通过证书解决黑客攻击 HTTPS 是什么 HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…

minHash(最小哈希)和LSH(局部敏感哈希)

在数据挖掘中,有一个比较基本的问题,就是比较两个集合的相似度。关于这个问题,最笨的方法就是用一个两重循环来遍历这两个集合中的所有元素,进而统计这两个集合中相同元素的个数。但是,当这两个集合里的元素数量非常庞大时,同时又有很多个集合需要判断两两之间的相似度时…

代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

文章目录 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/)2.将有序数组转换为二叉搜索树3.把二叉搜索树转换为累加树 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/) 遇到超范围节点&…

论文精读--GPT3

不像GPT2一样追求zero-shot&#xff0c;而换成了few-shot Abstract Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnos…

探究前端路由hash和history的实现原理(包教包会)

今天我们来讲一讲前端中很重要的一个部分路由&#xff08;router&#xff09;&#xff0c;想必前端小伙伴对‘路由’一词都不会感到陌生。但是如果哪天面试官问你&#xff0c;能大概说一说前端路由的实现原理吗&#xff1f; 你又会如何应对呢&#xff1f; 今天勇宝就带着大家一…

Educational Codeforces Round 160 (Rated for Div. 2) D. Array Collapse(笛卡尔树+DP)

原题链接&#xff1a;D. Array Collapse 题目大意&#xff1a; 给你一个长度为 n n n 的排列 p p p &#xff0c;排列的定义为 [ 1 , 2 , 3 , . . , n ] [1,2,3,..,n] [1,2,3,..,n] 中每个数都出现 恰好 一次。 你可以做 任意多次 这样的操作&#xff1a; 选出一个任意长度…

8万就能买混动!秦PLUS、启源A05、帝豪L Hi-P谁值得买?

文 | AUTO芯球 作者 | 雷歌 你可以不买比亚迪&#xff0c;但一定要感谢比亚迪。 比亚迪凭着一己之力&#xff0c;将整个混动汽车的价格降到了7万元时代。 秦PLUS价格自9.98万直降2万来到7.98万后&#xff0c;它的直接竞争对手们开始降价&#xff0c;长安启源A05混动降至7.8…

Linux提权—服务漏洞,以MySQL-UDF提权为例

UDF(user defined function&#xff0c;用户自定义函数) 利用条件&#xff1a; 有对MySQL数据库进行创建&#xff0c;插入&#xff0c;删除的权限 secure_file_priv为空 利用过程 secure_file_priv的值为空或者是我们恰巧需要用到的目录&#xff0c;如下&#xff1a; 提权成…

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

C#通过泛型方法的重载分别调用主窗体和提示窗体

目录 一、涉及到的知识点 1.泛型方法的重载 2.使用泛型更好地实现通用化 二、示例&#xff1a;泛型方法及其重载 1.源码 2. 生成效果 实际开发项目时&#xff0c;有时会因为调用窗体或提示窗体过多&#xff0c;而难于管理&#xff0c;这时&#xff0c;可以通过泛型方法的…

关于 REST API,你了解多少?

什么是 REST API REST 是 REpresentational State Transfer 的缩写&#xff0c;是分布式超媒体系统的架构风格。Roy Fielding 于 2000 年在他的著名论文中首次提出了这一点。从那时起&#xff0c;它已成为构建基于 Web 的 API&#xff08;应用程序编程接口&#xff09;的最广泛…

保障工作效率!实时监管员工工作微信

随着移动办公的普及&#xff0c;员工使用微信进行工作沟通已成为常态。为了实时监管员工工作微信&#xff0c;企业可以通过个微管理系统来提高效率并确保合规&#xff1a; 给员工分配微信子账号 企业管理者可以直接在系统上给员工分配子账号&#xff0c;并轻松查看子账号的工…

leetcode hot100 买卖股票的最佳时机二

注意&#xff0c;本题是针对股票可以进行多次交易&#xff0c;但是下次买入的时候必须保证上次买入的已经卖出才可以。 动态规划可以解决整个股票买卖系列问题。 dp数组含义&#xff1a; dp[i][0]表示第i天不持有股票的最大现金 dp[i][1]表示第i天持有股票的最大现金 递归公…

ElasticSearch之bool多条件查询

写在前面 在实际的业务场景中&#xff0c;不可能只是简单的单值查询 &#xff0c;更多的是n个条件的综合查询&#xff0c;就像下面的搜索&#xff1a; 针对这种场景我们就需要依赖于bool查询了&#xff0c;本文就一起来看下这部分的内容。 1&#xff1a;bool查询介绍 bool查…

在github的README.md中插入视频;在github的README.md中添加gif演示动画

最近需要再github中上传项目的源代码&#xff0c;应导师的要求&#xff0c;需要再README中加入对实验视频的展示&#xff0c;但是github的README.md其实就是一个markdown文件&#xff0c;据我的理解这个文件里应该无法直接插入视频吧&#xff1f;&#xff08;如果后续有办法直接…

python中的类与对象(2)

目录 一. 类的基本语法 二. 类属性的应用场景 三. 类与类之间的依赖关系 &#xff08;1&#xff09;依赖关系 &#xff08;2&#xff09;关联关系 &#xff08;3&#xff09;组合关系 四. 类的继承 一. 类的基本语法 先看一段最简单的代码&#xff1a; class Dog():d_…