2024-04-24
藏龙卧虎
00
请注意,本文编写于 268 天前,最后修改于 202 天前,其中某些信息可能已经过时。

目录

考点
存储层次结构
层级
分类方式
局部性原理
缓存(Cache)
概念
缓存映像方式
拓展:一些知识点
主存编址相关计算
一些概念
例题
总结

考点

在计算机软考中,关于存储系统的考点通常涉及以下几个方面:

  • 存储层次结构:理解计算机存储系统的层次结构,包括内存、缓存、硬盘、网络存储等不同层次的存储设备,以及它们之间的关系和作用。
  • 存储器类型:了解不同类型的存储器,包括随机存储器(RAM)、只读存储器(ROM)、闪存存储器等,以及它们的特点、应用场景和工作原理。
  • 存储器管理:掌握存储器管理的基本原理和方法,包括内存分配、页面置换、内存保护、虚拟内存等方面的知识。
  • 缓存技术:了解缓存技术的原理、作用和应用,包括缓存命中、缓存替换算法、缓存一致性等方面的知识。
  • 存储系统性能优化:了解如何优化存储系统的性能,包括提高存储器访问速度、减少存储器访问延迟、降低能耗等方面的方法。
  • 主存编址计算:掌握将逻辑地址(由程序生成的地址)转换为物理地址(实际存储器中的地址)的计算过程。

一般会出现一些概念性选择、判断题,1-2分的样子。我们重点学习存储层次结构、缓存技术(Cache)、主存编址计算。

关注公众号“月上老狗”,发送“软件设计师”,获取历年软件设计师软考真题。

image

存储层次结构

计算机存储系统的存储层次结构通常由多个层次组成,包括主存、缓存、硬盘、网络存储等不同层次的存储设备。这些存储设备按照访问速度、容量、成本等方面的不同特点被组织成层次结构,以满足不同的存储需求和性能要求。

层级

下面是典型的计算机存储系统的存储层次结构,自上而下依次是 访问速度逐渐变慢、容量逐渐增大、成本逐渐降低 的存储设备:

  • 寄存器Registers):寄存器是位于 CPU 内部的最快速度的存储设备,用于存储 CPU 中的数据和指令。寄存器的容量很小,但访问速度非常快,用于存储当前正在执行的指令和临时数据。
  • 高速缓存Cache):高速缓存是位于 CPU 和主存之间的存储设备,用于提高 CPU 对数据的访问速度。缓存分为多级(L1、L2、L3等)并且容量逐级递增,但访问速度比主存快,用于存储 CPU 频繁访问的数据和指令。
  • 主存Main Memory):主存是计算机中的主要存储设备,用于存储程序和数据。主存的访问速度比缓存慢,但容量较大,通常被 CPU 直接访问。
  • 辅助存储器Secondary Storage):辅助存储器包括硬盘、固态硬盘(SSD)、光盘、磁带等,用于长期存储大量的数据和程序。辅助存储器的容量很大,但访问速度比主存慢,通常用于存储不常用的数据和程序。
  • 拓展:网络存储Network Storage):网络存储是通过网络连接的存储设备,用于实现数据共享和远程访问。网络存储可以是网络硬盘、云存储等形式,提供了跨网络的数据存储和访问功能。

分类方式

  • 存储位置:内存(主存)、外存(辅助存储器
  • 存取方式:按内容存取(Cache)、按地址存取(内存、外存
  • 工作方式:随机存取(RAM-可读写)、只读(ROM

拓展:

  • 虚拟存储体系:内存-外存,边界虚化,内存不足时,可以使用外存充当内存使用。
  • 三级存储体系:缓存-内存-外存。

局部性原理

存储系统局部性原理(Locality Principle)是指在计算机程序的执行过程中,存在着数据访问和指令执行的局部性特征,即程序在一段时间内倾向于频繁地访问一组相关的数据或指令。

局部性原理通常分为两种类型:

  • 时间局部性(Temporal Locality):指在一段时间内,程序往往会多次访问相同的数据或指令。这意味着如果某个数据或指令被访问过一次,那么它在不久的将来可能会再次被访问。
  • 空间局部性(Spatial Locality):指程序在访问某个数据或指令时,往往会同时访问其附近的数据或指令。这意味着如果某个数据或指令被访问过,那么与其相邻的数据或指令也可能会被访问。

一些可以利用局部性原理实现的功能:

  • 缓存性能优化:利用局部性原理设计高效的缓存系统,通过预先加载程序可能访问的数据或指令,提高数据访问速度和程序执行效率。
  • 指令重排和预取:根据局部性原理对指令进行重排和预取,以减少指令执行的等待时间和提高指令执行效率。
  • 页面置换策略:在虚拟内存系统中,根据局部性原理设计页面置换策略,优先保留具有较高局部性的页面,以减少页面置换的频率和提高系统性能。

缓存(Cache)

概念

缓存是一种用于临时存储数据的高速存储器,位于CPU和主存之间,用于提高数据访问速度和系统性能。

缓存的主要原理是利用局部性原理,即时间局部性和空间局部性。根据这一原理,程序在执行过程中倾向于频繁地访问相同的数据或指令,以及其附近的数据或指令。基于这种特性,缓存将主存中频繁访问的数据复制到高速缓存中,并且根据缓存替换策略来管理缓存中的数据。

CPU 需要访问数据时,首先会在缓存中查找,如果命中(即所需数据已经在缓存中),则可以直接从缓存中获取数据,避免了访问主存的时间延迟;如果未命中,则需要从主存中加载所需数据到缓存中,并更新缓存中的内容。通过这种方式,缓存可以大大减少CPU对主存的访问次数,提高数据访问速度和系统性能。

缓存功能(缓存地址与主存地址的映射关系)一般由硬件自行完成。

PS:在高级考试中,可能会考到缓存命中率和周期的计算,中级一般不会考到,这里不做讲解。

缓存映像方式

常见的缓存映射方式有三种:

  1. 直接映射(Direct Mapping):通过取主存地址的一部分作为缓存的索引,将主存块映射到对应的缓存行。例如,主存地址的一部分作为缓存的索引,另一部分作为标记,用于确定缓存行是否命中。
  2. 组相联映射(Set-Associative Mapping):将主存地址的一部分作为缓存的索引,将主存块映射到一个缓存组中的某个位置。在同一个缓存组中,可以存储多个主存块,并通过比较标记确定是否命中。
  3. 全相联映射(Fully Associative Mapping):主存地址的一部分作为标记,而不是用于确定索引。缓存中的每个位置都存储主存块的标记和数据,而不需要索引。在进行缓存访问时,对所有缓存行的标记进行比较,确定是否命中。
映像方式优点缺点
直接映射实现简单,硬件成本低,缓存命中时访问速度快容易发生冲突,造成缓存替换,影响性能,不适用于访问模式不规律的情况
组相联映射解决了直接映射中的冲突问题,减少了缓存替换,对不规则访问模式有一定的适应性硬件复杂度较高,需要额外的标记存储和比较逻辑,对于高度并发的访问模式,可能导致组的冲突
全相联映射解决了直接映射和组相联映射中的冲突问题,具有最高的灵活性,适用于任意访问模式硬件复杂度最高,成本较高;缓存访问速度较慢,需要比较所有缓存行的标记;不适用于高并发的访问模式,可能出现比较瓶颈

拓展:一些知识点

  • 缓存结构:通常包括 L1 CacheL2 CacheL3 Cache,它们位于处理器内部或靠近处理器,并具有不同的访问速度和容量。了解缓存由缓存行、缓存组和标记等组成,每个缓存行存储着主存中的数据副本。
  • 缓存映射方式:包括直接映射、组相联映射和全相联映射。直接映射将主存块映射到唯一的缓存行,组相联映射将主存块映射到一组缓存行,而全相联映射则允许主存块映射到任意的缓存行。
  • 缓存替换策略:最少使用(LRU)、先进先出(FIFO)、最不常用(LFU)等。这些策略用于确定在缓存未命中时应替换哪些缓存行。
  • 缓存写策略:写回(Write Back)和写直达(Write Through)。写回策略在缓存行被替换时才将数据写回主存,而写直达策略在写操作时立即将数据写回主存。
  • 缓存一致性:缓存一致性指的是在多处理器系统中,确保各级缓存中的数据与主存中的数据保持一致的机制。由于每个处理器都有自己的缓存,而且这些缓存可能包含相同的内存地址,因此必须确保当一个处理器对某个内存地址进行读写操作时,其他处理器的缓存中的数据也能够及时地更新或失效,以保持数据的一致性。
  • 性能优化:了解如何优化缓存系统的性能,包括提高缓存命中率、减少缓存未命中率、优化缓存替换和写策略等方面的方法。

主存编址相关计算

这部分考察内容主要是计算题目,但是大家不要害怕,涉及到的计算都很简单,只要理解几个概念的关系就由任何难度。

一些概念

  • bit:比特位,计算机最小计数单位,1bit只能存放一位二进制数字0/1
  • 字节:B,存储单元的容量单位,一般默认1字节=8bit
  • 存储地址:可认为是芯片的一个最小单元,一个芯片由多个地址排列组成,1个存储地址通常 = 1字节
  • 存储单元:一堆存储地址组合在一起,可以称为一个存储单元,1个存储单元 = n个存储地址
  • 芯片:一个芯片通常由很多一个存储单元组成排列组成,1个芯片 = n个存储单元

拓展:存储单位:1GB = 1024MB1MB = 1024KB1KB = 1024B1B = 8bit

例题

该考点的计算题目,一般是给出上面概念中的几个数值,然后计算另一部分数值。

PS:但是要注意一点,存储地址一般是 2进制16进制 表示,为了便于计算,通常需要转化成 10进制 来参与计算。

题:一块内存芯片,按照字节编址,地址 A000HCFFFH 区间的单元,共多少字节?一块 360KB 的内存芯片,需要多少这样的单元构成?

  1. 十六进制转为十进制 A000H = 40960CFFFH = 53247,则一共有 53247 - 40960 + 1 = 12288 个地址,则有12288个字节;(拓展:12288 / 1024 = 12KB);
  2. 360 / 12 = 30

怎么样?是不是小学生也会做!

总结

  1. 需要掌握计算机存储结构的概念,以及不同层次存储设备的特点;
  2. 需要掌握缓存的作用,以及三类缓存映像方式的特点;
  3. 需要掌握关于内存编址容量的一些简单计算。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!