网站运营
位置:首页>> 网站运营>> 浅谈linux kernel对于浮点运算的支持

浅谈linux kernel对于浮点运算的支持

作者:kerneler_  发布时间:2023-08-05 04:52:30 

标签:linux,kernel,浮点运算

目前大多数CPU都支持浮点运算单元FPU,FPU作为一个单独的协处理器放置在处理器核外,但是对于嵌入式处理器,浮点运算本来就少用,有些嵌入式处理器就会去掉浮点协处理器。

X86处理器一般都是有FPU的。而ARM PPC MIPS处理器就会出现没有FPU的现象。

linux kernel如何处理浮点运算,我们就分为带FPU的处理器和不带FPU的处理器来讨论。

(以下为个人知识总结,研究不深,错误之处希望大家指正,共同学习)

一 对于带FPU的处理器

1 对于linux kernel来说,kernel本身编译默认使用了-msoft-float选项,默认编译为软浮点程序,软浮点含义是有gcc编译器模拟浮点运算(glibc库提供),将浮点运算代码替换为定点运算。

对于带FPU的处理器,我们可以将编译选项-msoft-float去掉,一般是在arch/xxx/Makefile中。将kernel编译为硬浮点,也就是让处理器的浮点指令计算浮点,

硬浮点运算肯定要比模拟的定点运算效率高。(kernel代码中一般不会有浮点运算,所以效率影响不大)

2 对于运行在kernel上的app来说,特别是对于图形程序,如QT,浮点运算较多,我们直接编译即可,因为处理器支持浮点运算,支持浮点运算指令。

二 对于不带FPU处理器

1 对于linux kernel来说,编译默认使用了-msoft-float选项,默认编译为软浮点程序,linux kernel编译不依赖链接任何库,kernel中来实现对应的模拟浮点ABI。

2 对于运行在kernel之上的app来说,如何处理浮点运算,这里就有2种方法了:

(1)由kernel来模拟软浮点.

应用程序使用硬浮点直接编译(编译器默认就是编译成硬浮点程序)。

而对于kernel,我所了解的PPC MIPS处理器都有专门的浮点运算异常处理,程序运行碰到浮点指令,无法运行浮点指令时,硬件会产生相应的中断异常,kernel浮点异常处理程序根据指令内容进行软浮点模拟操作,将运算结果返回之后再恢复到用户空间执行。

对于ARM我在其异常介绍中没有找到对于浮点计算的异常入口,但是kernel中也有对于其软浮点的支持,

在配置ARM Linux内核时,应该都会看到这样的配置:


menu "Floating point emulation"
comment "At least one emulation must be selected"
config FPE_NWFPE
 ...

这个是用来配置在内核里面模拟浮点处理器。

具体ARM如何实现支持异常模拟软浮点,具体实现有时间还需要仔细看代码,在arch/arm/nwfpe中。

这样的方式好处在于应用程序不需要重新编译,需要在kernel中把浮点模拟打开即可,使用起来非常方便。

但是缺点也很明显,每次浮点操作都要触发中断异常,用户空间和内核空间切换,执行效率太低。

(2)使用软浮点重新编译app

这样可以避免上述问题,app编译时需要连接glibc库的,使用--msoft-float,使用glibc的模拟浮点,替换为定点运算,这样的好处是运行性能上会好一些。

但缺点是因为使用了不同的编译选项,使用的ABI可能就发生了变化,如果某个库或者应用没有使用同样的编译选项(ABI不同),

系统运行时会出现意想不到的情况,甚至造成崩溃。

根据最近对PPC一款处理器的调试记录,kernel正常启动进入console后死在某一地址,用户空间浮点运算多,询问IC后得知FPU去掉,而处理器浮点异常没有使能。

这样遇到浮点指令,处理器不会触发异常,也不知道该如何运行该指令。

所以进行kernel移植时对于处理器有无FPU也要搞清楚,如果处理器去掉了FPU,而核没有做相应的处理(使能浮点异常),那么APP的浮点指令运行结果就是无法预测的,这时可以采用软浮点工具链来编译APP。

这里有一点思考:

对于一款处理器,处理器设计中有浮点异常(MIPS PPC都是),其外也可以接FPU。

在接FPU后,处理器核内就要屏蔽掉浮点异常,不然浮点运算还是产生浮点异常,FPU就没有实用意义了。

无FPU,则处理器核内要使能浮点异常,不然就跟我上面遇到的问题一样,处理器不知道该如何运行该浮点指令,结果就无法预测了。

来源:https://blog.csdn.net/skyflying2012/article/details/45113193

0
投稿

猜你喜欢

  • 目前做网站写独立博客,空间流量小是个挺头疼的问题,PNG比GIF色数高,但也没多少人敢用,如果你的空间只有几个GB的月流量那连GIF也得悠着
  • 在用TCP/IP协议族架设的网络中,每一个节点都有一个唯一的IP地址,用来作为它们唯一的标志。然而,如果让使用者来记住这些毫无记忆规律的IP
  • 110多亿元境内外资本投向中部旅游业,再次证明了传统旅游业的火热。第四届华中旅游博览会(华博会)日前在湖北省武汉市开幕。中部六省20多个旅游
  • Godaddy虚拟主机支持ZEND和GD Library.Zend Optimizer™和GD Library 已经安装在所有的linux共
  • 架设一台FTP服务器其实很简单。首先,要保证你的机器能上网,而且有不低于ADSL 512Kbps的网络速度。其次,硬件性能要能满足你的需要。
  • 昨日晚间,有消息人士向计世网透露说,分众传媒董事长江南春近日将出任央视三维CEO一职。在过去三年整合了全国44个城市的200多家高端影院,1
  • 拼客(Pinker)是个地道的Chinglish(中国式英语),Pinke即拼客一词拼音,为了让它看起来更像一个英文单词,于是加上r之后就成
  • 1、网关主机设置 服务器上有两块网卡,eth0使用*.*.*.*IP地址连接Internet,eth1连接LAN,则其/etc/n
  • 一、在\wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf 修改如下 Name
  • 如果您在近期登陆网上帐户,应该会发现在选择 AdSense 产品时,产品名称已改为中文!是的,在继推出一系列具有“中国特色”的产品特性之后,
  • ASP防注入之解决方案特殊页面处理因为有些页通过流式传递(比如含有文件上传的表单)如果单一使用穷举Form对象的操作就会出错所以要把这些页面
  • 1)善用域名后缀(.com/.cn/.info)国别域名可以告诉谷歌和其他搜索引擎,你的网站所服务的对象来自特定的国家,这样你的网站在这个国
  • 今天像往常一样打开站长统计的后台,关心一下各种访问统计,当我点击搜索引擎 ->今日统计 时突然弹出(alert)了
  • SEO需要灵活运用。SEO技术是死的,但是我们的大脑不是死的!!!最近在好多地方见到朋友说自己的站已经好久没有被百度更新了。还有一个关系比较
  • 在众多网络应用中,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重要的资源就是软件资源,而各种各样的软件资源大多数都放
  • 将证书导入网站目录为了让目标网站所对应的目录文件信息全部使用SSL加密传输功能,我们需要将前面申请好的网站证书导入到目标网站所对应的目录中;
  • 一年一度的圣诞节又到了,asp之家为大家选了一些圣诞节的手机祝福短信,大家可以挑选一些发送给你的亲朋好友,给他们送上一个圣诞节的祝福!圣诞乐
  • 要说网站推广,大家的第一反应可能就是上论坛发软文和利用QQ群发软件疯狂的加人广发网址。尤其是群发,是搞SF和SE站长最喜欢用的就是一招。但是
  • 自己也是菜鸟一个(文中若有错误之处欢迎各位大虾们指出)但还是希望能将我自己的一些作站经历写出来,为广大菜鸟朋友们做一些参考。试验目的:在只有
  • 组策略是管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。通过使用组策略可以设置各种软件、计算机和用户策略。例如,可使用
手机版 网站运营 asp之家 www.aspxhome.com