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

时间:2013-09-03 10:58:38

标签: linux-kernel sse kernel-module avx

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

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

1 个答案:

答案 0 :(得分:12)

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

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

  

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

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