国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

進迭時空 V8 RISC-V 后端優化

進迭時空 ? 2025-07-31 09:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前 言

V8 是 Google 開發及開源的 JavaScript 和 WebAssembly 語言編譯引擎,是 Chromium 項目的一部分,主要應用于 Chrome 瀏覽器 和 Node.js 等項目,在瀏覽器生態中發揮著至關重要的作用。自 2020 年起,中科院軟件所 PLCT 實驗室等團隊開始為 V8 引擎開發 RISC-V 后端,并持續推動 V8 對 RISC-V 架構的支持,不斷完善功能完整性,持續優化性能表現。目前,V8 引擎的 RISC-V 后端已經完成了解釋器和 JIT 編譯器的開發,實現了基本功能的完整支持。全球 RISC-V 生態共建者正在積極推動更多高級特性的開發與完善,持續優化 V8 在 RISC-V 平臺上的性能與兼容性。


RISC-V 作為新興的架構,其后端仍有不少優化機會。本文將介紹一些進迭時空在 V8 JavaScript 引擎 RISC-V 后端的優化工作,并說明這些優化如何提升 JavaScript 在 RISC-V 架構上的執行效率和整體性能表現。

R I S C - V 后 端 優 化



Load/Store 地址計算優化


V8 的 LoadStoreSimplificationReducer Pass 會將 LoadOp(Load Operation)和 StoreOp(Store Operation)的地址計算規約為 Base + Index 的形式,Base 表示基地址,Index 表示索引偏移,比如指令 ld t3, 8(t1) 中 Base 為 t1,Index 為 8,加載地址為 t1 + 8。


·使用 Shift And Add 指令計算 Base

RISC-V Zba Extension 提供了 shift and add 系列指令來快速完成地址計算,使用該系列指令可在地址計算過程省去 1 條指令。以如下代碼為例,在計算 Base 過程中使用了 slli + add 來完成對 Base 的計算,可被 shift and add 指令替換。


07921c9a-6daa-11f0-9080-92fbcf53809c.png

·Index 立即數參數融合進 Load/Store 指令

有時候 Index 并不一定是立即數,而是一個通過 WordBinopOp::Add 節點計算得到的寄存器值,并且該 WordBinopOp::Add 節點的參數中存在符合 RISC-V Load/Store 指令索引偏移范圍 [-2048, 2047] 的立即數,則可以將 Index 中的立即數參數融合進 Load/Store 指令中,從而節省 1 條指令。


079d7be4-6daa-11f0-9080-92fbcf53809c.png


更進一步地,如果上述兩種優化方法的條件都符合,則可以同時使用兩種優化方法,從而節省 2 條指令。


07a6cbc2-6daa-11f0-9080-92fbcf53809c.png




Comparison + Branch 優化

Comparison + Branch 一般位于 BasicBlock 結束處,用于條件分支跳轉。

MERGEB3<-?B2,B1? 21:Phi(#16,#19)[Tagged]? 22:Constant()[heap?object:?0x00ec00000011?? 23:Comparison(#4,#22)[Equal, Tagged]? 24:Branch(#23)[B319,B4,False]


如果 ComparisonOp 的 RegisterRepresentation 是 Tagged 類型,則可以將 Tagged 類型映射為 Word32 或者 Word64 類型,如此便可在對 Branch 節點做指令選擇時,選擇 kRiscvCmp 虛擬指令而不是選擇 kRiscvCmpZero 虛擬指令,同時會將 ComparisonOp 的參數和 FlagsCondition(表示判斷條件)融合進 kRiscvCmp 虛擬指令中。因此 ComparisonOp 節點計算結果不再被直接使用,所以不會對 ComparisonOp 生成指令,從而達到節省指令的目的。



原來使用 kRiscvCmpZero 節點時,需要使用 xor + slt 指令來計算 ComparisonOp 的結果然后再傳給 Branch 指令。切換為 kRiscvCmp 節點后,可以將 ComparisonOp 操作融合進 Branch 指令中,從而省去 xor 和 slt 指令。


07b13788-6daa-11f0-9080-92fbcf53809c.png





Load + ChangeUint32ToUint64 優化

在 Load + ChangeUint32ToUint64 匹配模式下,ChangeUint32ToUint64 用于將 LoadOp 加載出來的 uint32 類型數據轉化為 uint64 類型。


但當 LoadOp 需要加載的數據其符號類型為 unsigned,MachineRepresentation 類型為 Word32 時,會選擇 lwu 指令來進行加載,該指令加載數據時自身會進行零擴展,故不需要再額外使用 zext.w 指令來進行零擴展,從而省去 zext.w 指令。


07c100aa-6daa-11f0-9080-92fbcf53809c.png




IsNumeric 優化

IsNumeric(value) 用于判斷給定的 JavaScript 值是否是一個 Number 類型或 BigInt 類型:


Number:表示浮點數和整數(如 42,3.14)

BigInt:表示任意精度的大整數(如 123456789012345678901234567890n)

在 IsNumberic 函數實現中,需要對 IsHeapNumber 和 IsBigInt 函數返回值進行 or 運算,而因為 IsBigInt 函數需要數條指令完成,所以如果 IsHeapNumber 返回值為 1,則兩者 or 運算的結果可以直接用 1 來表示,避免通過 IsBigInt 函數引入較多的指令。


07ca0786-6daa-11f0-9080-92fbcf53809c.png


同理,IsSharedStringInstanceType 函數也可以照此修改優化。




DecompressTagged 優化

RISC-V Zba Extension 中提供了 zext.w 偽指令可用于零擴展。當使能 V8 Compress pointer 機制時,需要通過DecompressTagged 函數對 Tagged 類型數據進行解壓縮。DecompressTagged 函數實現中,存在對 source register 上的數據執行 And 0xFFFFFFFF 的操作,而 0xFFFFFFFF 需要使用 3 條 RISC-V 基礎指令來構造。當存在 RISC-V Zba Extension 時,可以使用 zext.w 指令來替換 And 0xFFFFFFFF 操作,從而節省 3 條指令。


07d7116a-6daa-11f0-9080-92fbcf53809c.png





AssembleReturn 優化

V8 中 AssembleReturn 用于對 ArchRet 節點生成指令,當符合下列條件時:


frame_access_state()->has_frame(),即表示當前是否正在使用棧幀。

call_descriptor->IsJSFunctionCall(),即表示當前是否為 JavaScript 函數調用。

parameter_slots != 0,即表示當前被調用函數的函數定義中參數數量不為 0


則需要將 JavaScript 函數參數從棧幀中移出。因實際傳入參數的數量和函數定義中參數的數量不一定相同,因此需要取兩者之中較大值來進行棧幀調整。


RISC-V Zbb Extension 提供了 max 指令來獲取兩個參數的較大值,既減少 1 條指令,又能避免產生分支指令導致分支預測失敗時需要清空流水線。



07e758e0-6daa-11f0-9080-92fbcf53809c.jpg





TaggedIsSmi 優化

在 V8 中,為了提高性能和減少內存使用,小整數被直接編碼到 Tagged 類型值中,這種編碼方式使得小整數無需分配額外的內存即可存儲,并且可以直接在寄存器中傳遞,從而提高了運算速度。


TaggedIsSmi 函數用于判斷 Tagged 類型值是否為 Smi(Small Integer)數據,在 V8 中屬于高頻使用函數。對于 Smi 類型,最低位通常設置為 0;而對于指向堆對象的 Tagged 類型值,最低位則設置為 1。TaggedIsSmi 源碼如下:

TNodeCodeStubAssembler::TaggedIsSmi(TNode a) { staticassert(kSmiTagMask


對應的 IR 節點則如下圖所示:


25:TaggedBitcast(#0)[Compressed, Word32, TagAndsmiBits]26:Constant()[word32:1]27:Change(#25)[Truncate, NoAssumption, Word64, Word32]28:WordBinop(#27,#26)[BitwiseAnd,Word32]29:Branch(#28)[B5,B4,None]


此處的 BitwiseAnd 運算是與常數 1 進行 And 運算,必然是在 Word32 數據表示范圍內,故并不需要進行擴展操作。經過優化后,TaggedIsSmi 函數生成的指令序列可節省 2 條指令。


07f02574-6daa-11f0-9080-92fbcf53809c.png



SwitchTable 二分查找優化

AssembleArchBinarySearchSwitch 是用于為 switch-case 語句(特別是 case 值為整數時)生成高效匯編代碼的方法。它通過使用二分查找算法來優化 switch-case 結構的執行效率,從而減少條件分支的數量,提高性能。當使能 Compress pointer 時,會在二分查找比較時將輸入值進行符號擴展操作,然而實際上,輸入值在整個二分查找階段并不會發生變化,可以對其做循環不變量提升,減少符號擴展操作的數量。


08092470-6daa-11f0-9080-92fbcf53809c.jpg




CompareTaggedAndBranch 優化

CompareTaggedAndBranch 是用于比較兩個值,并根據比較結果執行條件跳轉的函數。當使能 Compress pointer 時,兩個值需要進行符號擴展之后才能比較。但是如果一個參數為立即數并在 [0, 0x7FFFFFFF] 范圍內,實際上并不需要進行符號擴展。

0821ddc6-6daa-11f0-9080-92fbcf53809c.jpg




性 能 測 試

經過進迭時空的多項優化,包括但不限于上述改進,V8 基準性能測試的各項指標均取得了不同程度的提升。

082b5838-6daa-11f0-9080-92fbcf53809c.png



結 束 語

秉承著以 RISC-V 架構數智未來的使命,進迭時空將持續關注和支持 RISC-V 生態的發展,下一步會陸續將優化成果向 V8 開源社區貢獻,并與開源社區伙伴一起繼續努力,共建 RISC-V 生態。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    4056

    瀏覽量

    45649
  • RISC-V
    +關注

    關注

    48

    文章

    2820

    瀏覽量

    52107
  • 進迭時空
    +關注

    關注

    0

    文章

    51

    瀏覽量

    308
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Vol.4 | 時空孫彥邦:RISC-V的答案,不是篩選“幸存者”,而是集結“共建者”

    播客「RISC-V圓桌白話錄」「RISC-V圓桌白話錄」第四期播客已上線!延續上期對RISC-V技術的探討,本期節目我們與
    的頭像 發表于 11-18 18:07 ?1700次閱讀
    Vol.4 | <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>孫彥邦:<b class='flag-5'>RISC-V</b>的答案,不是篩選“幸存者”,而是集結“共建者”

    播客 | Vol.3對話孫彥邦:用胡子賭一個未來,RISC-V是AI時代的“終極答案”

    播客「RISC-V圓桌白話錄」「RISC-V圓桌白話錄」第三期播客上線!本期播客我們邀請到對話
    的頭像 發表于 11-07 20:26 ?466次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b>播客 | Vol.3對話孫彥邦:用胡子賭一個未來,<b class='flag-5'>RISC-V</b>是AI時代的“終極答案”

    時空參加2025 RISC-V北美峰會,披露第二代RISC-V AI CPU芯片 K3 進展

    RISC-VAICPU計算生態企業,時空攜前沿技術和量產產品精彩亮相,在現場設置展臺,發表了閃電演講,并向全球行業同仁分享了企業產品最新研發進展。在閃電演講環節,
    的頭像 發表于 10-24 18:33 ?6413次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>參加2025 <b class='flag-5'>RISC-V</b>北美峰會,披露第二代<b class='flag-5'>RISC-V</b> AI CPU芯片 K3 進展

    播客 |「RISC-V 圓桌白話錄」首期正式上線!

    播客「RISC-V圓桌白話錄」時空全新播客節目「RI
    的頭像 發表于 10-16 17:42 ?1166次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b>播客 |「<b class='flag-5'>RISC-V</b> 圓桌白話錄」首期正式上線!

    時空與青少年共赴RISC-V AI科技未來!

    8月15日至25日,首屆烏鎮青少年科技嘉年華圓滿落幕。時空受邀亮相世界互聯網科技館"烏鎮硅谷"體驗區,展示了多款基于K1芯片的智能產品,為青少年帶來沉浸式的
    的頭像 發表于 08-28 17:53 ?1037次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>與青少年共赴<b class='flag-5'>RISC-V</b> AI科技未來!

    2025RISC-V中國峰會|時空RISC-V AI CPU驅動智能化應用發展

    2025RISC-V中國峰會在上海張江科學會堂隆重召開。作為全球三大RISC-V峰會之一和中國規模最大的RISC-V年度盛會,本次峰會由來自政府、學術和產業界數千名代表和與會嘉賓圍繞“開放、協同
    的頭像 發表于 07-18 22:03 ?903次閱讀
    2025<b class='flag-5'>RISC-V</b>中國峰會|<b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b><b class='flag-5'>RISC-V</b> AI CPU驅動智能化應用發展

    迎接泛機器人時代:時空如何以RISC-V架構數智未來

    21世紀經濟報道記者趙娜杭州報道“這是我們的時代。”今年8月的一天,21世紀經濟報道記者來到時空杭州總部。
    的頭像 發表于 06-06 17:00 ?868次閱讀
    迎接泛機器人時代:<b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>如何以<b class='flag-5'>RISC-V</b>架構數智未來

    RISC-V架構下的編譯器自動向量化

    時空專注于研發基于RISC-V的高性能新AICPU,對于充分發揮CPU核的性能而言,編譯器是不可或缺的一環,而在AI時代,毫無疑問向量算力將發揮越來越重要的作用。
    的頭像 發表于 06-06 16:59 ?988次閱讀
    <b class='flag-5'>RISC-V</b>架構下的編譯器自動向量化

    高校賽事 | 時空攜手藍橋杯,誠邀全國高校學子共啟RISC-V人工智能應用創新賽道

    以下文章來源于RISC-V先鋒,作者時空2025年5月12日,第十六屆藍橋杯數字科技創新(RISC-V應用創新)命題賽正式啟動。本次大賽
    的頭像 發表于 06-06 16:55 ?1702次閱讀
    高校賽事 | <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>攜手藍橋杯,誠邀全國高校學子共啟<b class='flag-5'>RISC-V</b>人工智能應用創新賽道

    大象機器人攜手時空推出 RISC-V 全棧開源六軸機械臂產品

    識別聯調。 時空致力于為智能機器人提供完整全棧優化RISC-V AI軟硬件解決方案,第一代RIS
    發表于 04-25 17:59

    大象機器人×時空聯合發布全球首款RISC-V全棧開源小六軸機械臂

    ? ? 在全球AI與機器人技術高速發展的浪潮中,中國公司始終堅定走在自研創新的道路上。 ? ? 4月25日,大象機器人與 國內RISC-V AI CPU芯片領軍企業【時空】 強強聯
    的頭像 發表于 04-25 14:19 ?1493次閱讀
    大象機器人×<b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>聯合發布全球首款<b class='flag-5'>RISC-V</b>全棧開源小六軸機械臂

    香蕉派 BPI-CM6 工業級核心板采用時空K1 8RISC-V 芯片開發

    。 SpacemiT K1主要用于單板計算機、網絡存儲、云計算機、智能機器人、工業控制、邊緣計算機等。 主要特點 時空8RISC-V
    發表于 03-25 14:40

    RISC-V+OpenHarmony5.0:時空與中科院共筑數字世界新基石

    解決方案的推出,標志著RISC-V架構與OpenHarmony操作系統的深度融合,為數字世界的未來發展奠定了堅實的基礎。RISC-V以其靈活、開源的特性,為芯片設計提供了全新的思路;而OpenHarmony5.0則以其開放、可裁剪的優勢,為物聯網、智能終端等領域帶來了全新
    的頭像 發表于 02-19 11:30 ?1175次閱讀

    時空完成A+輪數億元融資 加速RISC-V AI CPU產品迭代

    近日,時空完成A+輪數億元人民幣的融資。本輪融資由香港BrizanIII期基金領投,將主要用于高性能RISC-VAICPU、服務器AICPU產品的研發及市場拓展,加速
    的頭像 發表于 02-18 14:22 ?1094次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>完成A+輪數億元融資 加速<b class='flag-5'>RISC-V</b> AI CPU產品迭代

    時空亮相RISC-V產業發展大會:新AI CPU引領大模型時代

    12月28日,以“發揮標準優勢,繁榮產業發展”為主題的RISC-V產業發展大會在北京亦莊經開區通明湖會展中心舉行。作為基于新一代RISC-V架構的計算生態企業,
    的頭像 發表于 12-31 17:32 ?1195次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>亮相<b class='flag-5'>RISC-V</b>產業發展大會:新AI CPU引領大模型時代