我正在用 C 为任何 Intel 或 AMD 系统构建套接字、NUMA 节点、缓存、内核和线程的拓扑树。
构建这个层次结构,我想确保硬件线程被适当地组合在一起,以便清楚谁精确地共享什么。我发现我可以设置线程的关联性,然后使用该cpuid指令获取我想要的很多信息,但不是全部。
如果包/套接字有多个 NUMA 节点,如何获取当前硬件线程的 NUMA 节点索引?如果NUMA节点有多个L3缓存,如何获取索引?
AMD在 NUMA 节点 ID 中有一些东西Fn8000_001E_ECX,但我找不到任何可与Intel相媲美的东西。没有任何关系:L3 索引。