dcbtst (Data Cache Block Touch for Store) 指令
用途
允许程序在该程序实际需要高速缓存块访存之前请求该高速缓存块访存。
语法
| 位数 | VALUE |
|---|---|
| 0-5 | 31 |
| 6-10 | TH |
| 11-15 | RA |
| 16-20 | 经常预算 |
| 21-30 | 246 |
| 31 | / |
描述
德克布斯特 指令通过将存储器预测到寻址的字节来提高性能。 在程序需要块之前,包含由有效地址 (EA) 寻址的字节的块将被访存到数据高速缓存中。 该程序稍后可以对块执行存储,并且可能不会迂到由于将块访存到高速缓存而导致的额外延迟。 执行 德克布斯特 指令时不会调用系统错误处理程序。
德克布斯特 指令通过将通用寄存器 (GPR) 的内容 RA 添加到 GPR 经常预算的内容中来计算有效地址 (EA)。 如果 RA 字段为 0 ,那么 EA 是 经常预算 和 0 的内容之和。
使用 德克布斯特 指示信息时,请考虑以下事项:
- 如果 EA 指定了直接存储段地址,那么该指令将被视为无操作。
- 在保护方面,该访问被视为来自寻址的高速缓存块的负载。 如果保护不允许访问寻址的字节,那么 德克布斯特 指令不会执行任何操作。
- 如果程序不需要存储到数据高速缓存块中,请使用 布特 (Data Cache Block Touch) 指令。
德克布斯特 指令具有一个语法格式,并且不会影响 "条件寄存器" 字段 0 或 "定点异常" 寄存器。
Touch Hint (TH) 字段用于提供提示,提示该程序可能很快将存储到 EA 和 第 2 个 字段指定的存储位置。 对于禁止高速缓存或受保护的位置,将忽略该提示。 第 2 个 字段的编码取决于使用 命令 标志或 .machine pseudo-op 选择的目标体系结构。 第 2 个 字段的编码与针对 布特 指令的编码相同。
德克布斯特 指令同时充当基本助记符和扩展助记符。 包含三个操作数的 德克布斯特 助记符是基本形式,包含两个操作数的 德克布斯特 是扩展形式。 在扩展格式中,将省略 第 2 个 操作数,并假定为 0。 POWER5™ 和后续体系结构上 TH 字段的编码如下所示:
| TH 值 | 描述 |
|---|---|
| 0000 | 程序将可能存储到 EA 寻址的字节。 |
| 0001 | 该程序可能会存储到数据流中,该数据流由包含 EA 寻址的字节和无限数量的顺序跟随块组成。 前面按顺序排列的块是由 EA + n * block_size 寻址的字节数 0 其中 n 1 2 0,1,2 等。 |
| 0011 | 该程序将可能存储到数据流中,该数据流由包含 EA 寻址的字节的块以及无限数量的顺序前置块组成。 按顺序排列的前面的块是由 EA-n * block_size 寻址的字节, 0 n = 1 2 等。 |
| 1000 | 布特 指令提供了一个提示,用于描述数据流的某些属性,并 (可选) 指示程序将可能存储到该流。 EA 如 TH=0b1000 时的 EA 编码 中所述进行解释。 |
| 1010 | 布特 指令提供了一个提示,用于描述数据流的某些属性,或者指示程序可能将存储到已使用 布特 指令描述的数据流,其中 TH [0 1] = 1 或可能不再存储到此类数据流。 EA 如 TH=0b1010 时的 EA 编码 中所述进行解释 |
参数
| 项 | 描述 |
|---|---|
| RA | 指定操作的源通用寄存器。 |
| 经常预算 | 指定操作的源通用寄存器。 |
| TH | 指示何时可以修改数据高速缓存块的序列。 |