linux 内核浮点,在Linux内核中使用浮点

本文探讨了操作系统如何通过关闭浮点单元(FPU)来提高上下文切换速度,仅在需要时才打开并恢复FPU状态。此外,文章还讨论了内核避免使用FPU的原因以及在某些情况下使用软件实现浮点运算的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为…

>许多程序不使用浮点或不使用它在任何给定的时间片;和

>保存FPU寄存器和其他FPU状态需要时间;因此

…操作系统内核可以简单地关闭FPU。 Presto,没有状态保存和恢复,因此更快的上下文切换。 (这是什么模式意味着,它只是意味着FPU已启用。)

如果程序尝试FPU操作,程序将陷入内核,内核将打开FPU,恢复可能已经存在的任何已保存的状态,然后返回以重新执行FPU操作。

在上下文切换时,它知道实际上通过状态保存逻辑。 (然后它可能再次关闭FPU。)

顺便说一句,我相信这本书的解释为什么内核(而不只是Linux)避免FPU操作是…不完全准确1

内核可以陷入自身,并为许多事情。 (定时器,页错误,设备中断,其他。)真正的原因是内核不特别需要FPU操作,也需要在没有FPU的架构上运行。因此,它通过不执行总是具有其他软件解决方案的操作来简单地避免管理其自己的FPU上下文所需的复杂性和运行时间。

有趣的是,注意如果内核想使用FP,FPU状态必须保存多久。 。 。每个系统调用,每个中断,每个内核线程之间的切换。即使需要偶尔的内核FP,2它可能会更快在软件中做。

也就是说,死了错了。有几种情况我知道内核软件包含一个浮点算术实现。一些架构在硬件中实现传统FPU操作,但对软件留下一些复杂的IEEE FP操作。 (思考:反正规算法)当一些奇怪的IEEE角落情况发生时,它们陷入软件,软件包含了可以陷阱的操作的一个完全正确的仿真。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值