下面简要描述一个假想的直接映射缓存的工作流程。这个缓存共有四个缓存块,每个块16字节,即4个字,因此共有64字节存储空间。使用写回(Write back)策略以保证数据一致性。 系统启动时,缓存内没有任何数据。之后,数据逐渐被载入或换出缓存。假设在此后某一时间点,缓存和内存布局如右图所示。此时,若处理器执行数据读取指令,控制逻辑依如下流程: (将地址由高至低划分为四个部分:标签、索引、块内偏移、字节偏移。其中块内偏移和字节偏移各占两位,后者在以下操作中不使用。) 用索引定位到相应的缓存块。 用标签尝试匹配该缓存块的对应标签值。如果存在这样的匹配,称为命中(Hit);否则称为未命中(Miss)。 如命中,用块内偏移将已定位缓存块内的特定字取出,送回处理器。 如未命中,先用此块地址(标签+索引)从内存读取数据并载入到当前缓存块,再用块内索引将位于此块内的特定数据单元取出,送回处理器。这里要注意的是,(1)读入的数据会冲掉之前的内容。为保证数据一致性,必须先将数据块内的现有内容写回内存。(2)尽管处理器请求的只是一个字,缓存仍必须在读取的时候把整个数据块都填充满。(3)缓存的读取是按缓存块大小为边界对齐的。