首页 > 解决方案 > 每个内核都有自己的掩码(k0-k7)寄存器吗?

问题描述

我知道每个内核都有自己的一组寄存器。这是否包括 AVX-512 掩码寄存器 k0 - k7?我问是因为我有一个随机数据错误的程序;它广泛使用掩码寄存器,所以如果掩码寄存器是共享的,那么这可以解释它。从逻辑上讲,它们似乎都必须有自己的一组掩码寄存器。

标签: multithreadingx86-64cpu-architecturemulticore

解决方案


是的,所有寄存器都是核心/线程私有的,是操作系统必须在任务之间的上下文切换时保存/恢复的每个核心架构状态的一部分。就像 RAX..R15 和 ZMM0..ZMM31、段寄存器等等。

正如您所猜测的,如果不同的线程或逻辑内核都共享相同的架构掩码寄存器,那么 AVX512 掩码在多任务操作系统下基本上无法使用。

此外,在您假设的疯狂设计中,保持内核之间的掩码寄存器同步将是严重的 CPU 设计挑战。为每个内核提供自己的一组私有寄存器要容易得多。在约 4GHz 的内核之间以单周期延迟进行通信会很困难。


推荐阅读