chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

進迭時空 V8 RISC-V 后端優(yōu)化

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

掃碼添加小助手

加入工程師交流群


前 言

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


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

R I S C - V 后 端 優(yōu) 化



Load/Store 地址計算優(yōu)化


V8 的 LoadStoreSimplificationReducer Pass 會將 LoadOp(Load Operation)和 StoreOp(Store Operation)的地址計算規(guī)約為 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 立即數(shù)參數(shù)融合進 Load/Store 指令

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


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


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


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




Comparison + Branch 優(yōu)化

Comparison + Branch 一般位于 BasicBlock 結(jié)束處,用于條件分支跳轉(zhuǎn)。

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


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



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


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





Load + ChangeUint32ToUint64 優(yōu)化

在 Load + ChangeUint32ToUint64 匹配模式下,ChangeUint32ToUint64 用于將 LoadOp 加載出來的 uint32 類型數(shù)據(jù)轉(zhuǎn)化為 uint64 類型。


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


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




IsNumeric 優(yōu)化

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


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

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

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


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


同理,IsSharedStringInstanceType 函數(shù)也可以照此修改優(yōu)化。




DecompressTagged 優(yōu)化

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


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





AssembleReturn 優(yōu)化

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


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

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

parameter_slots != 0,即表示當前被調(diào)用函數(shù)的函數(shù)定義中參數(shù)數(shù)量不為 0


則需要將 JavaScript 函數(shù)參數(shù)從棧幀中移出。因?qū)嶋H傳入?yún)?shù)的數(shù)量和函數(shù)定義中參數(shù)的數(shù)量不一定相同,因此需要取兩者之中較大值來進行棧幀調(diào)整。


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



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





TaggedIsSmi 優(yōu)化

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


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

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


對應的 IR 節(jié)點則如下圖所示:


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 運算是與常數(shù) 1 進行 And 運算,必然是在 Word32 數(shù)據(jù)表示范圍內(nèi),故并不需要進行擴展操作。經(jīng)過優(yōu)化后,TaggedIsSmi 函數(shù)生成的指令序列可節(jié)省 2 條指令。


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



SwitchTable 二分查找優(yōu)化

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


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




CompareTaggedAndBranch 優(yōu)化

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

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




性 能 測 試

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

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



結(jié) 束 語

秉承著以 RISC-V 架構(gòu)數(shù)智未來的使命,進迭時空將持續(xù)關(guān)注和支持 RISC-V 生態(tài)的發(fā)展,下一步會陸續(xù)將優(yōu)化成果向 V8 開源社區(qū)貢獻,并與開源社區(qū)伙伴一起繼續(xù)努力,共建 RISC-V 生態(tài)。


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

    關(guān)注

    3

    文章

    4207

    瀏覽量

    46147
  • RISC-V
    +關(guān)注

    關(guān)注

    48

    文章

    2886

    瀏覽量

    53025
  • 進迭時空
    +關(guān)注

    關(guān)注

    0

    文章

    61

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    時空再獲數(shù)億元融資,下一代 RISC-V AI 芯片 K3 即將發(fā)布

    時空再獲數(shù)億元融資,下一代 RISC-V AI 芯片 K3 即將發(fā)布
    的頭像 發(fā)表于 01-15 19:07 ?383次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>再獲數(shù)億元融資,下一代 <b class='flag-5'>RISC-V</b> AI 芯片  K3 即將發(fā)布

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

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

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

    播客「RISC-V圓桌白話錄」「RISC-V圓桌白話錄」第三期播客上線!本期播客我們邀請到對話
    的頭像 發(fā)表于 11-07 20:26 ?717次閱讀
    <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計算生態(tài)企業(yè),時空攜前沿技術(shù)和量產(chǎn)產(chǎn)品精彩亮相,在現(xiàn)場設置展臺,發(fā)表了閃電演講,并向全球行業(yè)同仁分享了企業(yè)產(chǎn)品最新研發(fā)進展。在閃電演講環(huán)節(jié),
    的頭像 發(fā)表于 10-24 18:33 ?6891次閱讀
    <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圓桌白話錄」時空全新播客節(jié)目「RI
    的頭像 發(fā)表于 10-16 17:42 ?1368次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b>播客 |「<b class='flag-5'>RISC-V</b> 圓桌白話錄」首期正式上線!

    10萬獎金池,等你挑戰(zhàn)!CIE全國RISC-V創(chuàng)新應用大賽火熱報名中

    RISC-V高水平創(chuàng)新及應用大賽,邀請全球開發(fā)者、高校團隊及企業(yè)共同探索RISC-V的無限可能!本次大賽,電子發(fā)燒友攜手時空設立CIE-
    的頭像 發(fā)表于 09-16 08:07 ?859次閱讀
    10萬獎金池,等你挑戰(zhàn)!CIE全國<b class='flag-5'>RISC-V</b>創(chuàng)新應用大賽火熱報名中

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

    8月15日至25日,首屆烏鎮(zhèn)青少年科技嘉年華圓滿落幕。時空受邀亮相世界互聯(lián)網(wǎng)科技館"烏鎮(zhèn)硅谷"體驗區(qū),展示了多款基于K1芯片的智能產(chǎn)品,為青少年帶來沉浸式的
    的頭像 發(fā)表于 08-28 17:53 ?1313次閱讀
    <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驅(qū)動智能化應用發(fā)展

    2025RISC-V中國峰會在上海張江科學會堂隆重召開。作為全球三大RISC-V峰會之一和中國規(guī)模最大的RISC-V年度盛會,本次峰會由來自政府、學術(shù)和產(chǎn)業(yè)界數(shù)千名代表和與會嘉賓圍繞“開放、協(xié)同
    的頭像 發(fā)表于 07-18 22:03 ?1148次閱讀
    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驅(qū)動智能化應用發(fā)展

    迎接泛機器人時代:時空如何以RISC-V架構(gòu)數(shù)智未來

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

    RISC-V架構(gòu)下的編譯器自動向量化

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

    時空攜手珠海共建RISC-V生態(tài)應用中心

    該中心的成立標志著珠海在集成電路產(chǎn)業(yè)創(chuàng)新發(fā)展上邁出重要一步,將為區(qū)域產(chǎn)業(yè)生態(tài)注入新動能,推動珠海高新區(qū)集成電路產(chǎn)業(yè)高質(zhì)量發(fā)展。01珠海市RISC-V生態(tài)應用創(chuàng)新中心落子珠海高新區(qū)現(xiàn)場,珠海市政府副秘書長林日團、珠海高新區(qū)黨工委副書記、區(qū)管委會主任高磊、
    的頭像 發(fā)表于 06-06 16:55 ?1100次閱讀
    <b class='flag-5'>進</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>攜手珠海共建<b class='flag-5'>RISC-V</b>生態(tài)應用中心

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

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

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

    識別聯(lián)調(diào)。 時空致力于為智能機器人提供完整全棧優(yōu)化RISC-V AI軟硬件解決方案,第一代RIS
    發(fā)表于 04-25 17:59

    大象機器人×時空聯(lián)合發(fā)布全球首款RISC-V全棧開源小六軸機械臂

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

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

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