我知道每个内核都有自己的一组寄存器。是否包括AVX-512屏蔽寄存器k0-k7?我问是因为我的程序中存在随机数据错误;它广泛使用了掩码寄存器,因此,如果掩码寄存器是共享的,那就可以解释了。从逻辑上看,它们每个必须都有自己的一组掩码寄存器。
是,所有寄存器是内核/线程专用的,是操作系统必须在任务之间进行上下文切换时保存/恢复的每个内核体系结构状态的一部分。就像RAX..R15和ZMM0..ZMM31,段寄存器等等。
您猜到了,如果不同线程或逻辑内核都共享相同的体系结构掩码寄存器,则在多任务OS下AVX512掩码基本上将无法使用。
而且,使掩码寄存器在内核之间保持同步将是严重的CPU设计挑战。为每个内核分配自己的专用寄存器集要容易得多。