理解 Cache 机制与存储层次结构

需积分: 0 14 下载量 119 浏览量 更新于2024-08-20 1 收藏 6.51MB PPT 举报
"本资源为计算机系统基础第六章关于层次结构存储系统的讲解,重点讨论了Cache的计算方法和存储器的层次结构。" 在计算机系统中,Cache是一种高速缓冲存储器,用于减少CPU访问主存时的延迟。计算Cache容量的过程涉及到多个因素,包括Cache的行数(Lines)、块大小(Block Size)以及地址映射方式。 首先,以一个具体例子说明如何计算Cache的容量。例如,有一个Cache有64行,块大小为16字节。要确定字节地址1200映射到哪一行,可以通过将字节地址除以块大小并取模得到。1200除以16等于75,模64的结果是11,所以地址1200位于第11行。 接下来,我们考虑一个Cache的配置:直接映射,16K行数据,块大小为1个字(4字节),主存地址为32位。Cache的存储布局计算如下:每行需要存储32位的数据地址(因为主存地址为32位),加上额外的标记位(tag bits,用于区分不同主存块)和替换策略位(比如LRU或随机替换)。在这种情况下,由于地址已知为32位,且行数为16K(即2^14行),块大小为1个字(32位),因此标记位为32 - 14 - 2(32位地址中减去行号14位和块内偏移2位),加上1位的valid bit。所以,Cache的大小为2^14行乘以每行的总位数,即2^14 × (32 + (32 - 14 - 2) + 1),计算结果是784 Kbits。 如果块大小变为4个字(16字节),那么每行需要存储4倍的地址位,同时标记位和替换策略位保持不变。Cache的大小变为2^14 × (4 × 32 + (32 - 14 - 2 - 2) + 1),计算结果是2288 Kbits。 对于块大小为2^m个字的情况,计算方法类似,只是需要调整块大小的位数。 在层次结构存储系统中,CPU与主存之间的连接以及读写操作至关重要。存储器的层次结构包括CPU寄存器、L1 Cache、L2 Cache、L3 Cache(如果存在)直到主存,再往下可能是硬盘等慢速存储。这种层次结构的设计基于程序的局部性原理,即程序在一段时间内倾向于访问同一组数据或指令。通过将最近或最常访问的数据存放在接近CPU的快速存储中,可以显著提升系统性能。 虚拟存储器是另一个关键概念,它提供了比实际物理内存更大的地址空间,通过页面映射和页面替换策略,使得程序能够运行在不完全装入内存的情况下。在IA-32/Linux系统中,地址转换涉及到逻辑地址到线性地址,再到物理地址的转换,这通常需要查询页表和TLB(Translation Lookaside Buffer)。 总结来说,理解存储系统的层次结构,包括Cache的工作原理、容量计算以及虚拟存储器的管理,对于优化程序性能和理解计算机系统运行机制至关重要。这些知识不仅涉及理论,也直接影响到实际编程实践中的性能优化。