日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从LLVM说起,有关CPU架构,JIT等

發布時間:2024/3/26 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从LLVM说起,有关CPU架构,JIT等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • LLVM
    • CPU架構
      • PowerPC
      • ARM
      • X86
      • MIPS
    • 編譯執行和解釋執行
    • JIT編譯

LLVM

LLVM(Low Level Virtual Machine,不過官方為了避免混淆已經棄用該名稱,將LLVM作為項目的全名),這是一個用 C++ 編寫的開源項目,最開始作為伊利諾伊州大學的一個研究項目由 Swift 語言的創始人 Chris Lattner 進行開發。LLVM項目是模塊化、可重用的編譯器以及工具鏈技術的集合。

LLVM提供了與編譯器相關的支持,可以作為多種語言編譯器的后端來使用,能夠進行程序語言的編譯期優化、鏈接優化、在線編譯優化、代碼生成。

LLVM從一個學術研究項目進化成C、C++和Objective C編譯器的通用后端。成功的關鍵是性能和適應能力,兩者都得益于LLVM獨特的設計和實現。
傳統的編譯器架構為:
Source Code -> [ Frontend & Optimizer & Backend ] -> Machine Code
對比,LLVM的架構為:
Source Code @ x -> [ x Frontend ] -> [ LLVM Optimizer @ IR ] -> [ LLVM m Backend ] -> Machine Code @ m
其中,x為C/C++, Objcect C等多種語言;m為x86,PowerPC,ARM等多種CPU架構。

  • 不同的前端后端使用統一的中間代碼LLVM Intermediate Representation (LLVM IR)
  • 優化階段是一個通用的階段,它針對的是統一的LLVM IR,和具體語言無關;
  • 擴展性好:如果需要支持一種新的編程語言,那么只需要實現一個新的前端;如果需要支持一種新的硬件設備,那么只需要實現一個新的后端
  • 關于架構和示例,更詳盡的說明參見:https://www.jianshu.com/p/1367dad95445

    LLVM常見應用:

  • 作為一種編程語言的預先(AOT ahead-of-time)編譯器,或者用于即時編譯(JIT just-in-time)編譯器。
  • 使用 LLVM 進行自動代碼優化。
  • 創建一門新的語言。LLVM將創建語言過程中最麻煩的事情:把編程語言翻譯成多個平臺上的可執行代碼,做了支持和簡化,所以,更容易使它創建一門新的語言。
  • 為多種語言進行橋接,因為在IR層次多種語言是一致的,所以,你可以將你的語言轉換為其他任何支持LLVM的語言。
  • 使用LLVM豐富的工具鏈作為自己編程語言的強大支持。
  • CPU架構

    PowerPC

    二十世紀九十年代,IBM(國際商用機器公司)、Apple(蘋果公司)和Motorola(摩托羅拉)公司開發PowerPC芯片成功,并制造出基于PowerPC的多處理器計算機。
    后來,主流的PowerPC處理器制造商有IBM、Freescale? Semiconductor(原摩托羅拉半導體部)、AMCC、LSI等。其中以IBM和Freescale的PowerPC處理器最為流行。

    目前,PowerPC已經走向沒落。
    INTEL面對的是大眾市場,信奉“摩爾定律”,在競爭激烈的隔熱PC的市場,保持超強戰斗力。IBM面對專業市場,新一代出來后,做得好不好,銷量其實都差不多,技術人員向前發展的精神動力幾乎就沒有了。
    由于 IBM PC 兼容機的逐步普及,技術上相對落后的英特爾反而占了更多的市場份額。在業務上,半導體只是摩托羅拉的一個部門,而微機處理器又只是其半導體部門的一項業務,可是它對于英特爾來講卻是全部。隨著蘋果也開始使用英特爾的處理器,摩托羅拉徹底推出了微機處理器市場:2005年,喬幫主在WWDC大會上正式宣布將在2年內將全部電腦產品轉向Intel平臺,2006年1月,搭載Intel Core Duo處理器的iMac和Macbook Pro就已經面世。
    Android+ARM的陣營,使得一些公司做手機等終端的門檻大大的降低:小米、Oppo、華為這樣的廠商迅速崛起,也是得益于此。
    網關、交換機、路由等等本應該是屬于大功耗RISC處理器的應用場景,PowerPC、MIPS原本牢牢占據這個領域,但是隨著多核ARM的強大,逐步也失去優勢。

    ARM

    ARM架構,過去稱作進階精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位精簡指令集(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。

    ARM 公司本身并不靠自有的設計來制造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。例如,生產廠商有:TI (德州儀器)/Samsung(三星)/Freescale(飛思卡爾)/Marvell(馬維爾)/Nvidia(英偉達)。
    對于授權方來說,ARM 提供了 ARM 內核的整合硬件敘述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含 ARM CPU 硅芯片的銷售權。

    X86

    x86架構是重要地可變指令長度的CISC(復雜指令集電腦,Complex Instruction Set Computer),是英代爾Intel首先開發制造的一種微處理器體系結構的泛稱。

    架構底層有大量的硬件專利,x86架構做pc主板還有大量的外設和接口的專利,這么多年下來,形成了堅強的壁壘。第三方要想突破這樣的壁壘,還需要各種外設和操作系統來形成的新的標準和專利的話,基本不可能。
    那么只有從intel或者AMD獲得x86架構的授權一條路,現在想獲得授權,這兩家都不會賣了,就算賣也是天價,加上研發成本的投入,成本就太高了,沒法正常運營。
    現在Amd市場占有率現在也就是百分之十左右,在盈利和虧損之間徘徊,第三家介入的話,不會比AMD更好。
    intel的強大還在于它是最先進的半導體生產工藝制造商,三星和臺積電都要排在后面。

    威盛是除Intel、AMD之外,唯一一家擁有X86架構授權的公司,當然也是從intel授權來的,曾經有“臺灣英特爾”之稱,也曾于研發投入和人才各方面的原因,除了在低功耗等領域有領先的產品,后來也逐步退出了這個市場。

    MIPS

    MIPS是世界上很流行的一種RISC處理器。MIPS的意思是“無內部互鎖流水級的微處理器”(Microprocessor without interlocked piped stages),其機制是盡量利用軟件辦法避免流水線中的數據相關問題。
    MIPS技術公司是美國著名的芯片設計公司,MIPS自己只進行CPU的設計,之后把設計方案授權給客戶,使得客戶能夠制造出高性能的CPU。

    編譯執行和解釋執行

    編譯過程是將源代碼轉換為機器碼的過程。
    編譯執行:整體編譯完了,再開始執行。舉例:C/C++。
    解釋執行:直接解釋源代碼,并且直接執行,沒有編譯過程。舉例:JavaScript,python。

    無論是編譯執行還是解釋執行,都需要經過:源碼 -> 詞法分析 -> 單詞流 -> 語法分析 -> 抽象語法樹 的過程。
    此后,
    編譯執行會先將抽象語法樹經過優化器并產生優化后的中間代碼(可選),然后再生成目標代碼。
    解釋執行會先將抽象語法樹轉換為指令流(可選),然后再通過解釋器進行解釋執行。

    編譯器:把源程序的每一條語句都編譯成機器語言,并保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快。
    解釋器:只在執行程序時,才一條一條把字節碼解釋成機器語言給計算機來執行。

    Java的執行模式:

  • 方式一:用javac編譯器將java源代碼編譯成我們常見的 .class文件(其中實現的是字節碼,一種中間代碼),然后程序在運行時,JVM將需要用到的 .class文件加載到內存中,從class文件中逐行讀出每條指令,JVM中解釋器解釋每條指令并執行,即解釋執行。
  • 方式二:JDK1.2版本開始引入JIT編譯。開始依然是由javac編譯為.class文件,在程序運行時,JIT通過預熱(收集信息找出熱點)將熱點代碼以方法為單位,從字節碼轉換為機器碼。在這種情況下,部分熱點代碼就是編譯執行而不是解釋執行了。
  • 方式三:oracle JDK9就引入了實驗性的AOT特性,直接將字節碼編譯成機器碼,這樣避免了JIT等方面的預熱消耗。
  • JIT編譯

    動態編譯(dynamic compilation)指的是“在運行時進行編譯”;與之相對的是事前編譯(ahead-of-time compilation,簡稱AOT),也叫靜態編譯(static compilation)。
    JIT編譯(just-in-time compilation)狹義來說是當某段代碼即將第一次被執行時進行編譯,因而叫“即時編譯”。JIT編譯是動態編譯的一種特例。JIT編譯一詞后來被泛化,時常與動態編譯等價。

    sun公司在jdk8之后的JVM技術實現是HotSpot,這里還有一層關系,JDK是java開發環境,JRE是java運行環境,JDK包含JRE,而JRE包含JVM。也就是說HotSpot是JVM的實現技術,是用C+匯編語言編寫的,主要功能包括一個解釋器和兩個編譯器,這也是為什么jdk8之后的JAVA是編譯與解釋混合執行模式的原因。兩個編譯器可以成為JIT編譯器,即動態編譯器,是兩種模式,server模式和client模式。

    JVM(特指Oracle JDK的HotSpot虛擬機)中的JIT特性:

  • HotSpot虛擬機中內置了兩個即時編譯器:Client Complier和Server Complier,分別用在客戶端和服務端。默認是采用解釋器與其中一個編譯器直接配合的方式工作。
  • 用Client Complier可以獲取更高的編譯速度,用Server Complier可以獲取更好的編譯質量。程序使用哪個編譯器,取決于虛擬機運行的模式。HotSpot虛擬機會根據自身版本與宿主機器的硬件性能自動選擇運行模式,用戶也可以使用“-client”或“-server”參數去強制指定虛擬機運行在Client模式或Server模式。
  • 運行過程中會被即時編譯器編譯的“熱點代碼”有兩類:被多次調用的方法和被多次調用的循環體。
  • 在優化時,無論循環體還是方法,編譯器都是以整個方法作為編譯對象。
  • HotSpot虛擬機采用基于計數器的熱點探測方法,會設定方法調用計數器和回邊計數器。
  • 觸發了JIT編譯后,在默認設置下,執行引擎并不會同步等待編譯請求完成,而是繼續進入解釋器按照解釋方式執行字節碼;編譯工作在后臺線程中進行;當編譯工作完成后,下一次調用該方法或代碼時,就會使用已編譯的版本。
  • 對一般的Java方法而言,編譯后代碼的大小相對于字節碼的大小,膨脹比可能達到10倍以上。
  • 總結

    以上是生活随笔為你收集整理的从LLVM说起,有关CPU架构,JIT等的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美另类videos | 少妇精品 | 激情六月 | 国产一区 在线播放 | 亚洲视频在线观看网站 | 国产一级在线观看视频 | 国产精品视频导航 | 国产一区二区三区视频在线观看 | 88国产精品 | 中文字幕日韩在线观看 | 青娱乐超碰 | 天天干天天碰 | 亚洲av无码一区二区三区dv | 久久九九色| 百合sm惩罚室羞辱调教 | 国产凹凸一区二二区 | 天天综合网久久综合网 | 韩日视频在线观看 | 国产av一区二区三区 | 国产免费高清 | 狠狠干2020 | av不卡一区二区三区 | 色哟哟无码精品一区二区三区 | 成年人av在线 | 日韩综合中文字幕 | 亚洲一区二区三区四区不卡 | 国产精品v欧美精品v日韩精品 | 综合久久五月天 | 你懂的视频在线播放 | 日韩精品第三页 | 18禁一区二区三区 | 911香蕉视频 | 男女无套免费视频网站动漫 | 在线日韩成人 | 亚洲一区在线免费观看 | 亚洲三级黄色 | 在线中文字幕观看 | 污视频在线 | www.haoav| 蜜臀av性久久久久av蜜臀妖精 | 日韩亚洲欧美综合 | 91影院在线| av调教| 好吊一区二区三区 | 欧美在线一区视频 | 国产原创视频在线观看 | 米奇影音| 免费精品在线 | 美女扒开腿让男人 | 国产夜色精品一区二区av | 日韩在线视频看看 | 日韩区在线| 丝袜熟女一区二区三区 | 在线观看国产网站 | japanese中文字幕 | 午夜视频黄色 | 亚洲xxx视频| 国产乱码精品一区二区三区五月婷 | 伊人888| 美女色诱男人激情视频 | 韩日精品视频 | 激情婷婷综合网 | 午夜视频在线 | 国产精品污视频 | 欧美视频导航 | 亚洲天堂黄 | 日韩经典午夜福利发布 | 丁香婷婷深情五月亚洲 | 欧美久久久久久久久久久久久久 | 香蕉手机网 | a天堂资源在线 | 熟妇一区二区三区 | 国产啊啊啊啊 | 欧美性天堂 | 国产又粗又猛又黄又爽 | 国产又黄又粗 | 手机看片日韩 | 91精产国品 | 在线免费观看视频a | 涩av| 久草手机在线观看 | 国产五月天婷婷 | 中文字幕亚洲高清 | 强行挺进白丝老师翘臀网站 | 一区二区三区国产在线 | 一级片一级片 | 天天视频天天爽 | 欧美精品在线第一页 | 成人免费观看av | 久久久久久久亚洲 | 亚洲v欧美v | 视频一区二区三区在线观看 | 国产一区精品久久 | 五月天婷婷丁香 | 免费大片黄在线观看视频网站 | 亚洲激情三区 | 女儿的朋友4在线观看 | 无码人妻精品一区二区50 | 极品少妇xxxx精品少妇偷拍 |