logo资料库

MIPS cache指令说明.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
MIPS CACHE 指令快速参考 指令编码: 31..26 CACHE 101111 25..21 base 20..16 op 15..0 offset 格式:cache op, offset(base) 执行 op 指定的 cache 操作。16 位的 offset 经符号扩展,添加到 base 寄存器来形成有效地址。根据执行操 作的类型及操作 cache 的类型,有效地址的用途如下表: 操作需要一个 cache 类型 有效地址的使用 地址 虚地址 有效地址用于寻址 cache。对该有效地址的翻译可能发生,也可能不发生(可 能会出现 TLB Refill 或 TLB Invalid 异常) 地址 索引 实地址 有效地址由 MMU 翻译至物理地址,该物理地址用于 cache 寻址。 无关 有效地址由 MMU 翻译为一个物理地址。由实现决定使用有效地址或者翻译 后的物理地址来索引 cache。因此,对需要索引的 cache 操作,总是使用 kseg0 地址。 假定 cache 的总大小为 CS,相关性为 A,每个 tag 的字节数为 BPT,下面的 计算给出了地址的哪些字段用于确定 way 和 index: OffsetBit <- Log2(BPT) IndexBit <- Log2(CS/A) WayBit <- IndexBit + Ceiling(Log2(A)) Way <- Addr[WayBit-1..IndexBit] Index <- Addr[IndexBit-1..OffsetBit] 对直接映射的 cache,Way 计算被忽略,Index 值完全指定了 cache tag。 相关性的含义:Cache 的 way = A+1,见 Config1 寄存器的说明。 地址分割 Unused | Way | Index | byte index | CACHE 指令 op 字段低 2 位的含义(指令 Bits[17:16]) 编码 0b00 0b01 0b10 0b11 名称 I D T S 表示的 Cache 一级指令 Cache 一级数据 Cache 三级 Cache 二级 Cache
CACHE 指令 op 字段高 3 位的含义(指令 Bits[20:18]) 编码 Cache 类型 0b000 I 操作名称 索引作废 (Index Invalidate) 有效地址 操作类型 索引 D 索引回写作废 索引 (Index Writeback Invalidate) / 索引作废 (Index Invalidate) 实现的兼 容性 必须实现 必须实现 操作 将指定索引的 cache 块状态设置为无效。 常用于作废整个指令 cache。 对回写型 cache:如果指定索引的 cache 块 状态为有效且脏,将该块数据写回内存。操 作完成后,将 cache 块置为无效。如果该块 有效但不脏,仅将状态置为无效。 对直写型 cache:将指定索引的 cache 块设 为无效。 S, T 索引回写作废 索引 可选实现 (Index Writeback Invalidate) / 索引作废 (Index Invalidate) 0b001 所有 类型 索引加载 Tag (Index Load Tag) 索引 0b010 所有 类型 索引存储 Tag (Index Store Tag) 索引 该操作多用于作废整个数据 cache。 将指定索引处的 tag 值读到 TagLo 和 TagHi 寄存器。如果实现了 DataLo 和 DataHi 寄存 器 , 同 时 将 对 应 数 据 加 载 到 DataLo 和 DataHi 寄存器。该操作不允许引发 Cache 异常。 TagLo, TagHi, DataLo 及 DataHi 的定义与 具体实现相关。 将 TagLo 和 TagHi 寄存器的值写入指定索引 cache 块的 tag 区。该操作不允许引发 Cache 异常。 0b011 所有 与实现相关 未指定 与具体实现相关 类型 0b100 I, D 命中作废 (Hit 地址 Invalidate) 如果 cache 块包含指定地址,将该块设为无 效。 该操作多用于作废一个地址范围的指令 cache。 S, T 命中作废 (Hit 地址 Invalidate) 0b101 I 填充(Fill) D 命中回写作废 (Hit Writeback Invalidate) / 命中作废 (Hit Invalidate) 地址 地址 按指定地址填充 cache 对回写型 cache:如果指定地址的 cache 块 有效且脏,将内容写回内存。操作完成后, 将 cache 块置为无效。如果该块有效但不 脏,仅设置其状态为无效。 推荐实现 必须实现 可选实现 对指令 Cache 必须 实现,其它 情况推荐 实现 可选实现 推荐实现 必须实现
S, T 命中回写作废 地址 (Hit Writeback Invalidate) / 命中作废 (Hit Invalidate) 命中回写(Hit Writeback) 地址 0b110 D S, T 命中回写(Hit 地址 Writeback) 0b111 I, D 获取并锁定 地址 (Fetch and Lock) 对直写型 cache:如果 cache 块包含指定地 址,将该块的状态置为无效。 可选实现 该操作常用于作废一个地址范围的数据 cache。 如果包含指定地址的 cache 块有效且脏,将 内容写回内存。操作结束后,保留 cacheline 状态不变,但清除脏标记。对直写型 cache, 该操作可当作 nop。 推荐实现 可选实现 如果 cache 不包含指定的地址,则执行必要 的回写,并从内存中填充,将状态设为有效 且锁定。如果 cache 已经包含了指定地址, 将状态设为锁定。对组相联 cache 或全相联 cache,选择哪个 way 进行填充取决于具体 实现。 锁定状态可以通过执行索引作废、索引回写 作废、命中作废或命中回写作废来清除。也 可以通过索引存储 tag 来清除 lock 位(与具 体实现相关)。索引作废和索引回写作废也 依赖于 cache line 的组织。一般只有命中 作废和命令回写作废是可移植的操作。 本操作与依赖于具体实现,需要参考对应手 册。
分享到:
收藏