Linux内核是否有自己的SSE / AVX上下文?
我的意思是,从内核模块的角度来看,我可以使用SSE / AVX指令而不必担心也可能使用它的用户空间应用程序吗?或者我是否需要使用某些锁或手动执行某些上下文保存?
Linux内核是否有自己的SSE / AVX上下文?
我的意思是,从内核模块的角度来看,我可以使用SSE / AVX指令而不必担心也可能使用它的用户空间应用程序吗?或者我是否需要使用某些锁或手动执行某些上下文保存?
默认情况下,Linux内核不保存FPU或向量寄存器以提高上下文切换的速度。但是,您可以在某些情况下使用它们。
第6.3节 http://agner.org/optimize/calling_conventions.pdf 很好地描述了在Windows和Linux中在内核模式下使用向量寄存器。这是一个重要的引用:
需要使用向量寄存器的设备驱动程序必须先保存 这些寄存器通过调用函数kernel_fpu_begin()并恢复 通过在返回之前调用kernel_fpu_end()来调用寄存器 睡眠。
还有更多,比如在中断环境中根本不能使用它们,所以我建议阅读整个部分。