Cache缺失处理
当CPU需要访问数据时,首先会检查这些数据是否在Cache中。如果数据在Cache中,则称为Cache命中;如果不在,则称为Cache缺失。
Cache缺失处理的过程如下:
- 检测缺失:CPU发起数据访问请求时,Cache控制器会检查所需数据是否在Cache中。
- 选择替换策略:如果发生缺失,Cache控制器需要决定哪个Cache块将被替换。常见的替换策略有:最近最少使用(LRU)、最不经常使用(LFU)等。
- 从主存中读取数据:替换策略决定后,Cache控制器会从主存中读取所需的数据块。
- 更新Cache和标签:读取的数据块会被加载到Cache中,并更新相应的标签信息,以便后续的访问可以快速命中。
- 重启被中断的指令:一旦数据被加载到Cache中,CPU可以重新执行之前因Cache缺失而中断的指令。
缺页处理
缺页处理是虚拟内存管理中的一个重要概念。当程序尝试访问一个不在物理内存中的页面时,会发生缺页中断。
缺页处理的过程如下:
- 检测缺页:CPU在访问内存时,如果发现所需的页面不在物理内存中,会产生一个缺页中断。
- 中断处理:操作系统会响应这个中断,并查找所需的页面是否在磁盘上。
- 页面调度:如果页面在磁盘上,操作系统会选择一个页面替换算法(如最近最少使用算法)来决定哪个物理页面将被替换。
- 读取页面:操作系统从磁盘中读取所需的页面到物理内存中。
- 更新页表:更新页表以反映新的物理内存和虚拟内存之间的映射关系。
- 重启被中断的指令:一旦页面被加载到物理内存中,CPU可以重新执行之前因缺页而中断的指令。