如何使用 cpuid 获取 TLB 页面大小
Posted
技术标签:
【中文标题】如何使用 cpuid 获取 TLB 页面大小【英文标题】:How to get TLB page size with cpuid 【发布时间】:2012-05-22 09:34:47 【问题描述】:对于英特尔,我使用:
mov, eax, 2h
cpuid
它给出“描述符解码值” - 好的;
对于 AMD,我使用:
mov, eax, 80000005h
cpuid
它给出了 eax 中 4MB(ebx 中 4KB)的关联性和条目。
这里是:
EAX = FF30FF10 EBX = FF30FF20" FF - 全副。数据,48d 条目数据,FF - 完整关联。 instr, 16d 条目 instr
所以我有 4KB 和 4MB 还是什么?
附:我是对的,TLB 页面和 L1 缓存 - 不同的东西?或者也许是 L1 指令。缓存大小是我需要的?
【问题讨论】:
据我了解,现代架构同时提供 4kB 和 4MB。 这意味着如果我在 EAX\EBX 中得到正确的输出,我可以说它的 4MB\4KB? 我的小姐,amd 文档说“对于 2Mb 或 4MB 页面”。 “TLB 缓存大小为 64 项”表示如果 L1=64kb,那么 TLB 页面大小=64*64kb? 感谢帮助,但现在我很困惑 :) 我有一个 TLB 任务:1)关联性,2)条目,3)大小。我应该如何回答尺寸? 【参考方案1】:这个entry on wikipedia 可以帮助您消除一些关于不同 TLB 大小的困惑。它在“多个 TLB”的标题下:
例如,英特尔的 Nehalem 微架构具有四路集关联 L1 DTLB,其中 64 个条目用于 4 KiB 页面,32 个条目用于 2/4 MiB 页面,L1 ITLB 具有 128 个条目用于 4 KiB 页面,使用四向关联和 14 个用于 2/4 MiB 页面的完全关联条目(ITLB 的两个部分在两个线程之间静态划分)1 和一个用于 4 KiB 页面的统一 512 条目 L2 TLB,[2] 都是 4 路关联的。[3 ]
【讨论】:
以上是关于如何使用 cpuid 获取 TLB 页面大小的主要内容,如果未能解决你的问题,请参考以下文章