在计算机软考中,关于存储系统的考点通常涉及以下几个方面:
一般会出现一些概念性选择、判断题,1-2分的样子。我们重点学习存储层次结构、缓存技术(Cache)、主存编址计算。
关注公众号“月上老狗”,发送“软件设计师”,获取历年软件设计师软考真题。
计算机存储系统的存储层次结构通常由多个层次组成,包括主存、缓存、硬盘、网络存储等不同层次的存储设备。这些存储设备按照访问速度、容量、成本等方面的不同特点被组织成层次结构,以满足不同的存储需求和性能要求。
下面是典型的计算机存储系统的存储层次结构,自上而下依次是 访问速度逐渐变慢、容量逐渐增大、成本逐渐降低 的存储设备:
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
):指程序在访问某个数据或指令时,往往会同时访问其附近的数据或指令。这意味着如果某个数据或指令被访问过,那么与其相邻的数据或指令也可能会被访问。一些可以利用局部性原理实现的功能:
缓存是一种用于临时存储数据的高速存储器,位于CPU和主存之间,用于提高数据访问速度和系统性能。
缓存的主要原理是利用局部性原理,即时间局部性和空间局部性。根据这一原理,程序在执行过程中倾向于频繁地访问相同的数据或指令,以及其附近的数据或指令。基于这种特性,缓存将主存中频繁访问的数据复制到高速缓存中,并且根据缓存替换策略来管理缓存中的数据。
当 CPU
需要访问数据时,首先会在缓存中查找,如果命中(即所需数据已经在缓存中),则可以直接从缓存中获取数据,避免了访问主存的时间延迟;如果未命中,则需要从主存中加载所需数据到缓存中,并更新缓存中的内容。通过这种方式,缓存可以大大减少CPU对主存的访问次数,提高数据访问速度和系统性能。
缓存功能(缓存地址与主存地址的映射关系)一般由硬件自行完成。
PS:在高级考试中,可能会考到缓存命中率和周期的计算,中级一般不会考到,这里不做讲解。
常见的缓存映射方式有三种:
Direct Mapping
):通过取主存地址的一部分作为缓存的索引,将主存块映射到对应的缓存行。例如,主存地址的一部分作为缓存的索引,另一部分作为标记,用于确定缓存行是否命中。Set-Associative Mapping
):将主存地址的一部分作为缓存的索引,将主存块映射到一个缓存组中的某个位置。在同一个缓存组中,可以存储多个主存块,并通过比较标记确定是否命中。Fully Associative Mapping
):主存地址的一部分作为标记,而不是用于确定索引。缓存中的每个位置都存储主存块的标记和数据,而不需要索引。在进行缓存访问时,对所有缓存行的标记进行比较,确定是否命中。映像方式 | 优点 | 缺点 |
---|---|---|
直接映射 | 实现简单,硬件成本低,缓存命中时访问速度快 | 容易发生冲突,造成缓存替换,影响性能,不适用于访问模式不规律的情况 |
组相联映射 | 解决了直接映射中的冲突问题,减少了缓存替换,对不规则访问模式有一定的适应性 | 硬件复杂度较高,需要额外的标记存储和比较逻辑,对于高度并发的访问模式,可能导致组的冲突 |
全相联映射 | 解决了直接映射和组相联映射中的冲突问题,具有最高的灵活性,适用于任意访问模式 | 硬件复杂度最高,成本较高;缓存访问速度较慢,需要比较所有缓存行的标记;不适用于高并发的访问模式,可能出现比较瓶颈 |
L1 Cache
、L2 Cache
和 L3 Cache
,它们位于处理器内部或靠近处理器,并具有不同的访问速度和容量。了解缓存由缓存行、缓存组和标记等组成,每个缓存行存储着主存中的数据副本。LRU
)、先进先出(FIFO
)、最不常用(LFU
)等。这些策略用于确定在缓存未命中时应替换哪些缓存行。Write Back
)和写直达(Write Through
)。写回策略在缓存行被替换时才将数据写回主存,而写直达策略在写操作时立即将数据写回主存。这部分考察内容主要是计算题目,但是大家不要害怕,涉及到的计算都很简单,只要理解几个概念的关系就由任何难度。
1bit
只能存放一位二进制数字0/1
;1字节=8bit
;1个存储地址通常 = 1字节
;1个存储单元 = n个存储地址
;1个芯片 = n个存储单元
;拓展:存储单位:
1GB = 1024MB
、1MB = 1024KB
、1KB = 1024B
、1B = 8bit
该考点的计算题目,一般是给出上面概念中的几个数值,然后计算另一部分数值。
PS:但是要注意一点,存储地址一般是
2进制
或16进制
表示,为了便于计算,通常需要转化成10进制
来参与计算。
题:一块内存芯片,按照字节编址,地址 A000H
到 CFFFH
区间的单元,共多少字节?一块 360KB
的内存芯片,需要多少这样的单元构成?
A000H
= 40960
, CFFFH
= 53247
,则一共有 53247 - 40960 + 1 = 12288
个地址,则有12288
个字节;(拓展:12288 / 1024 = 12KB
);360 / 12 = 30
。怎么样?是不是小学生也会做!
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!