MIPS CACHE 指令快速参考
指令编码:
31..26 <!--[if !vml]-->CACHE 101111
25..21 base
20..16 op
15..0 oset
格式:cache op, oset(base)
执行 op 指定的 cache 操作。16 位的 oset 经符号扩展,添加到 base 寄存器来形成有效地址。根据执
行操作的类型及操作 cache 的类型,有效地址的用途如下表:
操作需要一个 cache 类
型
有效地址的使用
地址 虚地址 有效地址用于寻址 cache。对该有效地址的翻译可能发生,也可能不发生
(可能会出现 TLB Re*ll 或 TLB Invalid 异常)
地址 实地址 有效地址由 MMU 翻译至物理地址,该物理地址用于 cache 寻址。
索引 无关 有效地址由 MMU 翻译为一个物理地址。由实现决定使用有效地址或者翻
译后的物理地址来索引 cache。因此,对需要索引的 cache 操作,总是
使用 kseg0 地址。
假定 cache 的总大小为 CS,相关性为 A,每个 tag 的字节数为 BPT,下
面的计算给出了地址的哪些字段用于确定 way 和 index:
OsetBit <- Log2(BPT)
IndexBit <- Log2(CS/A)
WayBit <- IndexBit + Ceiling(Log2(A))
Way <- Addr[WayBit-1..IndexBit]
Index <- Addr[IndexBit-1..OsetBit]
对直接映射的 cache,Way 计算被忽略,Index 值完全指定了 cache
tag。
相关性的含义:Cache 的 way = A+1,见 Con*g1 寄存器的说明。
地址分割
Unused | Way | Index | byte index |
CACHE 指令 op 字段低 2 位的含义(指令 Bits[17:16])
编码 名称 表示的 Cache
0b00 I
一级指令 Cache
0b01 D
一级数据 Cache
评论0