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