计算机组成原理 | 您所在的位置:网站首页 › 计算机缓存的工作原理是什么 › 计算机组成原理 |
高速缓冲存储器
|| 什么是 cache ?
cache 是一种小容量高速缓冲存储器,由 SRAM(static random access of memory)组成。直接制作在 CPU 芯片内,速度几乎与 CPU 一样快。程序运行时,CPU 使用的一部分数据/指令会预先拷贝在 cache中,cache 中的内容是主存储器中部分内容的映像。当CPU 需要从内存读写数据或指令时,先检查 cache,若有,就直接从 cache 中读取,而不访问主存。 实现 cache 机制需要解决的问题: 分块?主存块与 cache 之间如何映射?cache 的替换机制?写数据如何保持一致? || Cache 映射把主存空间划分成大小相等的 主存块(block) cache中存放一个主存块的对应单位称为 槽(slot)或行(line) cache 映射就是把访问的局部主存区域取到 cache 中,cache 行比主存块少,多个主存块映射到一个 cache 行中。 下面介绍三种映射方法: 直接映射(direct):每个主存块映射到cache的固定行
下面介绍几种淘汰策略: 1、先进先出 FIFO 最早装入的最早被替换
替换 cache 中引用次数最少的块。LFU 也用与每个行相关的计数器来实现。 4、随机替换算法 随机选择一行淘汰,与使用情况无关。 例题:
1、全写法 (write through) 对于读操作来说我们都已经知道 CPU 读操作的流程,但是对于写操作来说,由于Cache中的内容只是主存内容的副本,当对 cache 中内容更新的时候,主存并没有更新,为了保持主存与Cache内容的一直,我们就有了对于写操作的策略: 写操作时,若写命中,则同时写 cache 和主存;若写不命中,则有以下两种处理方式: (1)写分配法 (write allocate)。先在主存块中更新相应存储单元,然后分配一个 cache 行,将更新后的主存块装入到分配的 cache 行中。这种方式可以充分利用空间局部性,但每次写不命中都要从主存读一个块到 cache 中,增加了读主存块的开销。 (2)非写分配法(not write allocate)。仅更新主存单元而不装入到 cache 中,可以减少读入主存块的时间,但没有很好地利用空间局部性。 当然,为了减少写主存的开销,通常在 cache 和主存之间加一个写缓冲(write buffer)。在 CPU写 cache 的同时,也将信息写入写缓冲,然后由存储控制器将写缓冲中的内容写入主存。写缓冲是一个 FIFO 队列,如果写动作太频繁可能导致写缓冲区溢出。 2、回写法 (write back) 若写命中,则信息只被写入 cache 而不被写入主存;若写不命中,则在 cache 中分配一行,将主存块调入该 cache 行中并更新相应单元的内容。 在 CPU 执行写操作时,回写法不会主动更新主存单元,只有当 cache 行中的主存块被替换时,才将该块内容一次性写回主存。这种方式减少了写主存的次数,但是存在不一致的隐患,如果一直不被替换出去,那它的内容与主存块中的内容就不一致。而且这种方法还需要给每一块配置一位“脏位”,如果脏位为1则表明发生过写操作,那么替换出去就要更新主存块。 || 多级 cache
如有错误,还望指正 ~ O(∩_∩)O~~ |
CopyRight 2018-2019 实验室设备网 版权所有 |