12

Linux 内核是否有自己的 SSE/AVX 上下文?

我的意思是,从内核模块的角度来看,我可以使用 SSE/AVX 指令而不用担心用户空间应用程序也可能使用它吗?还是我需要使用一些锁或手动保存一些上下文?

4

1 回答 1

13

Linux 内核默认不保存 FPU 或向量寄存器,以提高上下文切换的速度。但是,您可以在某些情况下使用它们。

http://agner.org/optimize/calling_conventions.pdf的第 6.3 节很好地描述了在 Windows 和 Linux 中内核模式下向量寄存器的使用。这是一个重要的报价:

需要使用向量寄存器的设备驱动程序必须首先调用函数 kernel_fpu_begin() 保存这些寄存器,并在返回或休眠之前调用 kernel_fpu_end() 恢复寄存器。

还有更多,比如你根本不能在中断上下文中使用它们,所以我建议阅读整个部分。

于 2013-09-03T15:06:40.557 回答