最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談linux kernel對(duì)于浮點(diǎn)運(yùn)算的支持

 更新時(shí)間:2019年06月28日 11:05:48   作者:kerneler_  
今天小編就為大家分享一篇淺談linux kernel對(duì)于浮點(diǎn)運(yùn)算的支持,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

目前大多數(shù)CPU都支持浮點(diǎn)運(yùn)算單元FPU,F(xiàn)PU作為一個(gè)單獨(dú)的協(xié)處理器放置在處理器核外,但是對(duì)于嵌入式處理器,浮點(diǎn)運(yùn)算本來(lái)就少用,有些嵌入式處理器就會(huì)去掉浮點(diǎn)協(xié)處理器。

X86處理器一般都是有FPU的。而ARM PPC MIPS處理器就會(huì)出現(xiàn)沒有FPU的現(xiàn)象。

linux kernel如何處理浮點(diǎn)運(yùn)算,我們就分為帶FPU的處理器和不帶FPU的處理器來(lái)討論。

(以下為個(gè)人知識(shí)總結(jié),研究不深,錯(cuò)誤之處希望大家指正,共同學(xué)習(xí))

一 對(duì)于帶FPU的處理器

1 對(duì)于linux kernel來(lái)說(shuō),kernel本身編譯默認(rèn)使用了-msoft-float選項(xiàng),默認(rèn)編譯為軟浮點(diǎn)程序,軟浮點(diǎn)含義是有g(shù)cc編譯器模擬浮點(diǎn)運(yùn)算(glibc庫(kù)提供),將浮點(diǎn)運(yùn)算代碼替換為定點(diǎn)運(yùn)算。

對(duì)于帶FPU的處理器,我們可以將編譯選項(xiàng)-msoft-float去掉,一般是在arch/xxx/Makefile中。將kernel編譯為硬浮點(diǎn),也就是讓處理器的浮點(diǎn)指令計(jì)算浮點(diǎn),

硬浮點(diǎn)運(yùn)算肯定要比模擬的定點(diǎn)運(yùn)算效率高。(kernel代碼中一般不會(huì)有浮點(diǎn)運(yùn)算,所以效率影響不大)

2 對(duì)于運(yùn)行在kernel上的app來(lái)說(shuō),特別是對(duì)于圖形程序,如QT,浮點(diǎn)運(yùn)算較多,我們直接編譯即可,因?yàn)樘幚砥髦С指↑c(diǎn)運(yùn)算,支持浮點(diǎn)運(yùn)算指令。

二 對(duì)于不帶FPU處理器

1 對(duì)于linux kernel來(lái)說(shuō),編譯默認(rèn)使用了-msoft-float選項(xiàng),默認(rèn)編譯為軟浮點(diǎn)程序,linux kernel編譯不依賴鏈接任何庫(kù),kernel中來(lái)實(shí)現(xiàn)對(duì)應(yīng)的模擬浮點(diǎn)ABI。

2 對(duì)于運(yùn)行在kernel之上的app來(lái)說(shuō),如何處理浮點(diǎn)運(yùn)算,這里就有2種方法了:

(1)由kernel來(lái)模擬軟浮點(diǎn).

應(yīng)用程序使用硬浮點(diǎn)直接編譯(編譯器默認(rèn)就是編譯成硬浮點(diǎn)程序)。

而對(duì)于kernel,我所了解的PPC MIPS處理器都有專門的浮點(diǎn)運(yùn)算異常處理,程序運(yùn)行碰到浮點(diǎn)指令,無(wú)法運(yùn)行浮點(diǎn)指令時(shí),硬件會(huì)產(chǎn)生相應(yīng)的中斷異常,kernel浮點(diǎn)異常處理程序根據(jù)指令內(nèi)容進(jìn)行軟浮點(diǎn)模擬操作,將運(yùn)算結(jié)果返回之后再恢復(fù)到用戶空間執(zhí)行。

對(duì)于ARM我在其異常介紹中沒有找到對(duì)于浮點(diǎn)計(jì)算的異常入口,但是kernel中也有對(duì)于其軟浮點(diǎn)的支持,

在配置ARM Linux內(nèi)核時(shí),應(yīng)該都會(huì)看到這樣的配置:

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

這個(gè)是用來(lái)配置在內(nèi)核里面模擬浮點(diǎn)處理器。

具體ARM如何實(shí)現(xiàn)支持異常模擬軟浮點(diǎn),具體實(shí)現(xiàn)有時(shí)間還需要仔細(xì)看代碼,在arch/arm/nwfpe中。

這樣的方式好處在于應(yīng)用程序不需要重新編譯,需要在kernel中把浮點(diǎn)模擬打開即可,使用起來(lái)非常方便。

但是缺點(diǎn)也很明顯,每次浮點(diǎn)操作都要觸發(fā)中斷異常,用戶空間和內(nèi)核空間切換,執(zhí)行效率太低。

(2)使用軟浮點(diǎn)重新編譯app

這樣可以避免上述問題,app編譯時(shí)需要連接glibc庫(kù)的,使用--msoft-float,使用glibc的模擬浮點(diǎn),替換為定點(diǎn)運(yùn)算,這樣的好處是運(yùn)行性能上會(huì)好一些。

但缺點(diǎn)是因?yàn)槭褂昧瞬煌木幾g選項(xiàng),使用的ABI可能就發(fā)生了變化,如果某個(gè)庫(kù)或者應(yīng)用沒有使用同樣的編譯選項(xiàng)(ABI不同),

系統(tǒng)運(yùn)行時(shí)會(huì)出現(xiàn)意想不到的情況,甚至造成崩潰。

根據(jù)最近對(duì)PPC一款處理器的調(diào)試記錄,kernel正常啟動(dòng)進(jìn)入console后死在某一地址,用戶空間浮點(diǎn)運(yùn)算多,詢問IC后得知FPU去掉,而處理器浮點(diǎn)異常沒有使能。

這樣遇到浮點(diǎn)指令,處理器不會(huì)觸發(fā)異常,也不知道該如何運(yùn)行該指令。

所以進(jìn)行kernel移植時(shí)對(duì)于處理器有無(wú)FPU也要搞清楚,如果處理器去掉了FPU,而核沒有做相應(yīng)的處理(使能浮點(diǎn)異常),那么APP的浮點(diǎn)指令運(yùn)行結(jié)果就是無(wú)法預(yù)測(cè)的,這時(shí)可以采用軟浮點(diǎn)工具鏈來(lái)編譯APP。

這里有一點(diǎn)思考:

對(duì)于一款處理器,處理器設(shè)計(jì)中有浮點(diǎn)異常(MIPS PPC都是),其外也可以接FPU。

在接FPU后,處理器核內(nèi)就要屏蔽掉浮點(diǎn)異常,不然浮點(diǎn)運(yùn)算還是產(chǎn)生浮點(diǎn)異常,F(xiàn)PU就沒有實(shí)用意義了。

無(wú)FPU,則處理器核內(nèi)要使能浮點(diǎn)異常,不然就跟我上面遇到的問題一樣,處理器不知道該如何運(yùn)行該浮點(diǎn)指令,結(jié)果就無(wú)法預(yù)測(cè)了。

以上這篇淺談linux kernel對(duì)于浮點(diǎn)運(yùn)算的支持就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解linux pwm驅(qū)動(dòng)編寫

    詳解linux pwm驅(qū)動(dòng)編寫

    這篇文章主要介紹了詳解linux pwm驅(qū)動(dòng)編寫,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Centos7安裝ElasticSearch 6.4.1入門教程詳解

    Centos7安裝ElasticSearch 6.4.1入門教程詳解

    這篇文章主要介紹了Centos 7安裝ElasticSearch 6.4.1入門教程詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Linux環(huán)境下nodejs的安裝圖文教程

    Linux環(huán)境下nodejs的安裝圖文教程

    這篇文章主要介紹了Linux環(huán)境下nodejs的安裝圖文教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Linux netstat命令詳細(xì)解析

    Linux netstat命令詳細(xì)解析

    以下是對(duì)Linux中的netstat命令進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • Apache ActiveMQ任意文件寫入漏洞(CVE-2016-3088)復(fù)現(xiàn)

    Apache ActiveMQ任意文件寫入漏洞(CVE-2016-3088)復(fù)現(xiàn)

    這篇文章主要介紹了Apache ActiveMQ任意文件寫入漏洞(CVE-2016-3088)復(fù)現(xiàn),需要的朋友可以參考下
    2019-08-08
  • Centos 7下利用crontab定時(shí)執(zhí)行任務(wù)詳解

    Centos 7下利用crontab定時(shí)執(zhí)行任務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于Centos 7下利用crontab定時(shí)執(zhí)行任務(wù)的相關(guān)資料,文中對(duì)crontab進(jìn)行了詳細(xì)的介紹,并給出了一些實(shí)例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • 關(guān)于crontab定時(shí)任務(wù)命令解讀

    關(guān)于crontab定時(shí)任務(wù)命令解讀

    這篇文章主要介紹了關(guān)于crontab定時(shí)任務(wù)命令的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Linux刪除文件不同方法效率對(duì)比

    Linux刪除文件不同方法效率對(duì)比

    這篇文章主要介紹了Linux刪除文件不同方法效率對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Linux上也有10個(gè)流行的Windows應(yīng)用程序

    Linux上也有10個(gè)流行的Windows應(yīng)用程序

    今天小編就為大家分享一篇關(guān)于在linux上也流行的windows程序,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-09-09
  • 圖文詳解Linux服務(wù)器搭建JDK環(huán)境

    圖文詳解Linux服務(wù)器搭建JDK環(huán)境

    這篇文章主要以圖文結(jié)合的方式詳細(xì)介紹了Linux服務(wù)器搭建JDK環(huán)境的過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論

思茅市| 手机| 乐亭县| 来安县| 醴陵市| 南康市| 天等县| 西峡县| 方正县| 武川县| 彝良县| 平邑县| 离岛区| 尼木县| 华安县| 隆林| 县级市| 汝南县| 平遥县| 合山市| 克什克腾旗| 庄浪县| 中江县| 建德市| 治多县| 文登市| 图片| 大英县| 宁武县| 嘉鱼县| 崇信县| 乌兰察布市| 南漳县| 镇康县| 西乌| 汪清县| 黎平县| 广平县| 鸡西市| 巢湖市| 中方县|