软考知识点7:存储系统
## 考点 在计算机软考中,关于存储系统的考点通常涉及以下几个方面: - 存储层次结构:理解计算机存
渲染中...
## 考点 在计算机软考中,关于存储系统的考点通常涉及以下几个方面: - 存储层次结构:理解计算机存储系统的层次结构,包括内存、缓存、硬盘、网络存储等不同层次的存储设备,以及它们之间的关系和作用。 - 存储器类型:了解不同类型的存储器,包括随机存储器(RAM)、只读存储器(ROM)、闪存存储器等,以及它们的特点、应用场景和工作原理。 - 存储器管理:掌握存储器管理的基本原理和方法,包括内存分配、页面置换、内存保护、虚拟内存等方面的知识。 - 缓存技术:了解缓存技术的原理、作用和应用,包括缓存命中、缓存替换算法、缓存一致性等方面的知识。 - 存储系统性能优化:了解如何优化存储系统的性能,包括提高存储器访问速度、减少存储器访问延迟、降低能耗等方面的方法。 - 主存编址计算:掌握将逻辑地址(由程序生成的地址)转换为物理地址(实际存储器中的地址)的计算过程。 一般会出现一些概念性选择、判断题,1-2分的样子。我们重点学习存储层次结构、缓存技术(Cache)、主存编址计算。 > 关注公众号“**月上老狗**”,发送“**软件设计师**”,获取历年软件设计师软考真题。 > >  <!-- more --> ## 存储层次结构 计算机存储系统的存储层次结构通常由多个层次组成,包括主存、缓存、硬盘、网络存储等不同层次的存储设备。这些存储设备按照访问速度、容量、成本等方面的不同特点被组织成层次结构,以满足不同的存储需求和性能要求。 ### 层级 下面是典型的计算机存储系统的存储层次结构,自上而下依次是 **访问速度逐渐变慢、容量逐渐增大、成本逐渐降低** 的存储设备: - **寄存器**(`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 Cache`、`L2 Cache` 和 `L3 Cache`,它们位于处理器内部或靠近处理器,并具有不同的访问速度和容量。了解缓存由缓存行、缓存组和标记等组成,每个缓存行存储着主存中的数据副本。 - 缓存映射方式:包括直接映射、组相联映射和全相联映射。直接映射将主存块映射到唯一的缓存行,组相联映射将主存块映射到一组缓存行,而全相联映射则允许主存块映射到任意的缓存行。 - 缓存替换策略:最少使用(`LRU`)、先进先出(`FIFO`)、最不常用(`LFU`)等。这些策略用于确定在缓存未命中时应替换哪些缓存行。 - 缓存写策略:写回(`Write Back`)和写直达(`Write Through`)。写回策略在缓存行被替换时才将数据写回主存,而写直达策略在写操作时立即将数据写回主存。 - 缓存一致性:缓存一致性指的是在多处理器系统中,确保各级缓存中的数据与主存中的数据保持一致的机制。由于每个处理器都有自己的缓存,而且这些缓存可能包含相同的内存地址,因此必须确保当一个处理器对某个内存地址进行读写操作时,其他处理器的缓存中的数据也能够及时地更新或失效,以保持数据的一致性。 - 性能优化:了解如何优化缓存系统的性能,包括提高缓存命中率、减少缓存未命中率、优化缓存替换和写策略等方面的方法。 ## 主存编址相关计算 这部分考察内容主要是计算题目,但是大家不要害怕,涉及到的计算都很简单,只要理解几个概念的关系就由任何难度。 ### 一些概念 - bit:比特位,计算机最小计数单位,`1bit`只能存放一位二进制数字`0/1`; - 字节:B,存储单元的容量单位,一般默认`1字节=8bit`; - 存储地址:可认为是芯片的一个最小单元,一个芯片由多个地址排列组成,`1个存储地址通常 = 1字节`; - 存储单元:一堆存储地址组合在一起,可以称为一个存储单元,`1个存储单元 = n个存储地址`; - 芯片:一个芯片通常由很多一个存储单元组成排列组成,`1个芯片 = n个存储单元`; > 拓展:存储单位:`1GB = 1024MB`、`1MB = 1024KB`、`1KB = 1024B`、`1B = 8bit` ### 例题 该考点的计算题目,一般是给出上面概念中的几个数值,然后计算另一部分数值。 > PS:但是要注意一点,存储地址一般是 `2进制` 或 `16进制` 表示,为了便于计算,通常需要转化成 `10进制` 来参与计算。 题:一块内存芯片,按照字节编址,地址 `A000H` 到 `CFFFH` 区间的单元,共多少字节?一块 `360KB` 的内存芯片,需要多少这样的单元构成? 1. 十六进制转为十进制 `A000H` = `40960`, `CFFFH` = `53247`,则一共有 `53247 - 40960 + 1 = 12288` 个地址,则有`12288`个字节;(`拓展:12288 / 1024 = 12KB`); 2. `360 / 12 = 30`。 怎么样?是不是小学生也会做! ## 总结 1. 需要掌握计算机存储结构的概念,以及不同层次存储设备的特点; 2. 需要掌握缓存的作用,以及三类缓存映像方式的特点; 3. 需要掌握关于内存编址容量的一些简单计算。
END
评论
登录后查看和发表评论
前往登录