每个内核是否都有自己的掩码 (k0-k7) 寄存器?
Does each core have its own mask (k0-k7) registers?
我知道每个内核都有自己的一组寄存器。这是否包括 AVX-512 掩码寄存器 k0 - k7?我问是因为我有一个随机数据错误的程序;它广泛使用掩码寄存器,因此如果共享掩码寄存器,则可以解释它。从逻辑上看,它们似乎每个人都必须有自己的一组掩码寄存器。
是的,所有 寄存器都是 core/thread-private,OSes 必须 save/restore 在上下文中的每个核心架构状态的一部分在任务之间切换。就像RAX..R15和ZMM0..ZMM31,段寄存器等等。
如您所料,如果不同的线程或逻辑内核都共享相同的架构掩码寄存器,AVX512 掩码在多任务处理下基本上无法使用OS。
此外,在您假设的疯狂设计中,保持内核之间的掩码寄存器同步将是严重的 CPU 设计挑战。为每个核心提供自己的一组私有寄存器要容易得多。在 ~4GHz 的内核之间进行单周期延迟通信将很困难。
我知道每个内核都有自己的一组寄存器。这是否包括 AVX-512 掩码寄存器 k0 - k7?我问是因为我有一个随机数据错误的程序;它广泛使用掩码寄存器,因此如果共享掩码寄存器,则可以解释它。从逻辑上看,它们似乎每个人都必须有自己的一组掩码寄存器。
是的,所有 寄存器都是 core/thread-private,OSes 必须 save/restore 在上下文中的每个核心架构状态的一部分在任务之间切换。就像RAX..R15和ZMM0..ZMM31,段寄存器等等。
如您所料,如果不同的线程或逻辑内核都共享相同的架构掩码寄存器,AVX512 掩码在多任务处理下基本上无法使用OS。
此外,在您假设的疯狂设计中,保持内核之间的掩码寄存器同步将是严重的 CPU 设计挑战。为每个核心提供自己的一组私有寄存器要容易得多。在 ~4GHz 的内核之间进行单周期延迟通信将很困难。