Direct Cache Accessについて理解を深める為、CPUのデータシートも読んでみる
CPUについては、Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide, Part 2に書いてある。
Table B-2. IA-32 Architectural MSRsにDCA関連のレジスタがあった:
1F8H | IA32_PLATFORM_DCA_CAP | DCA Capability (R) |
1F9H | IA32_CPU_DCA_CAP | If set, CPU supports Prefetch- Hint type. |
1FAH | IA32_DCA_0_CAP | DCA type 0 Status and Control register |
0 | DCA_ACTIVE: Set by HW when DCA is fuse-enabled and no defeatures are set. | |
2:1 | TRANSACTION | |
6:3 | DCA_TYPE | |
10:7 | DCA_QUEUE_SIZE | |
12:11 | Reserved. | |
16:13 | DCA_DELAY: Writes will update the register but have no HW side-effect. | |
23:17 | Reserved. | |
24 | SW_BLOCK: SW can request DCA block by setting this bit. | |
25 | Reserved. | |
26 | HW_BLOCK: Set when DCA is blocked by HW (e.g. CR0.CD = 1). | |
31:27 | Reserved. |
色々あるが、IA32_PLATFORM_DCA_CAPとIA32_CPU_DCA_CAPでCPUがDCAをサポートしているか判断でき、IA32_DCA_0_CAPでDCAの詳細な状態を取得出来るようにみえる。
SW_BLOCKというのは、ハードウェアからではなくソフトウェアからDCAリクエストが出来るという事だろうか。