目录
软考学习
存储系统
层次化存储结构
通常,层次化存储结构包括以下几个层次:
-
寄存器:位于CPU内部的最快速和最小容量的存储器,用于暂时存储指令和数据。
-
高速缓存(Cache):位于CPU和主内存之间的存储器,用于存储CPU频繁访问的指令和数据。由于其距离CPU更近,其访问速度比主内存快,但容量较小。
-
主内存:位于计算机主板上的存储器,用于存储程序和数据。主内存的容量比缓存大,但访问速度较缓存慢。
-
磁盘存储:用于持久性存储大量的数据,例如操作系统、应用程序和用户文件。磁盘存储的访问速度较慢,但容量很大。
层次化存储结构的优势在于高速缓存和主内存可以提供更快的数据访问速度,从而减少了CPU对主存或磁盘的访问次数,提高了计算机系统的性能。
此外,通过在不同层次上组织数据,系统可以更有效地利用存储资源,并根据数据的访问模式优化数据的位置和传输。
Cache概念
局部性原理
局部性原理包括以下两个方面:
- 时间局部性(Temporal Locality):指的是在程序的执行过程中,刚刚被访问过的数据或指令很可能在短时间内再次被访问到。例如,在循环结构中,循环体内的指令和数据会被重复执行和访问。为了利用时间局部性,计算机系统常用的方法包括高速缓存(Cache)和预取(Prefetching)等。
- 空间局部性(Spatial Locality):指的是在程序的执行过程中,与当前正在访问的数据或指令相邻的数据或指令很可能在接下来的一段时间内被访问到。例如,数组和矩阵的元素通常在内存中是连续存储的,因此在访问一个数组元素时,其相邻的元素也会被预先加载到缓存中。为了利用空间局部性,计算机系统常用的方法包括缓存行(Cache Line)和预取(Prefetching)等。
- 工作集:可以理解为程序在某个时间段内所访问的内存地址的集合,它体现了程序使用的内存部分。工作集理论认为,程序在执行过程中,只需要有限的内存资源来保持其高效执行。**当工作集大小适中时,程序可以充分利用缓存和主存来提高内存访问速度,减少访问的延迟。**工作集理论为我们提供了一种量化分析程序的内存访问行为和性能的方法。通过合理地调整工作集大小和工作集窗口,我们可以更好地优化程序的内存访问模式,提高性能和效率。
如上图,刚刚访问过的 s 数据, 在短时间内又被访问到了。
主存—分类
根据存储介质和访问方式的不同,主存可以被分为以下几个主要分类:
-
随机存取存储器(RAM,Random Access Memory):RAM是一种易失性存储器,它可以随机访问存储的数据。它使用电子元件(通常是集成电路)来存储和读取数据。根据存储介质的不同,RAM又可以分为:
-
动态随机存取存储器(DRAM,Dynamic RAM):DRAM使用电容来存储数据,它需要周期性的刷新操作来维持数据的有效性。
-
静态随机访问存储器(SRAM,Static RAM):SRAM使用触发器(Flip-flop)来存储数据,它不需要刷新操作,速度更快但成本更高。
-
-
只读存储器(ROM,Read-Only Memory):ROM是一种非易失性存储器,其中存储的数据在设备断电后仍然保持有效。ROM的数据一般是在制造过程中被写入的,并且使用者无法直接修改其中的数据。常见的ROM类型包括:
-
可编程只读存储器(PROM,Programmable ROM):PROM在制造过程中不包含数据,在使用前需要通过特定的编程操作写入数据。
-
可擦写可编程只读存储器(EPROM,Erasable Programmable ROM):EPROM可以通过使用紫外线擦除数据,然后重新编程来修改其中的数据。
-
掩模式只读存储器(MROM,Mask ROM):掩模式只读存储器的内容是由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入的,写入之后任何人都无法改变其内容。
-
-
快闪存储器(Flash Memory):Flash存储器是一种非易失性存储器,它通过对电荷的累积来存储数据。Flash存储器可以通过电子擦除来修改其中的数据,但相对于RAM而言,其擦写速度较慢且有擦写次数限制。Flash存储器广泛应用于固态硬盘、闪存卡等设备中。
主存—编址
**编址是指将计算机主存中的每个存储单元分配一个唯一的地址。**在现代计算机系统中,主存(内存)通常被组织成连续的字节地址空间。编址的目的是为了让处理器能够访问指定存储单元中的数据。
编址方式可以是物理地址编址或者逻辑地址编址。
- 物理地址编址:处理器通过访问实际的物理内存地址来访问数据。物理地址编址将计算机系统的物理内存映射到处理器的地址空间中。在物理地址编址中,程序员通常不需要直接操作物理地址,而是通过操作逻辑地址来访问内存。
- 逻辑地址编址:逻辑地址是相对于逻辑地址空间的偏移量或虚拟地址。逻辑地址由程序员在编程时使用,而无需考虑物理内存的实际地址。计算机系统中的内存管理单元(MMU)负责将逻辑地址转换为物理地址。逻辑地址编址使得程序员可以使用抽象的地址空间来编写程序,而不必担心物理内存的具体细节。
?