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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群


前 言

V8 是 Google 開發(fā)及開源的 JavaScript 和 WebAssembly 語言編譯引擎,是 Chromium 項目的一部分,主要應(yīng)用于 Chrome 瀏覽器 和 Node.js 等項目,在瀏覽器生態(tài)中發(fā)揮著至關(guān)重要的作用。自 2020 年起,中科院軟件所 PLCT 實驗室等團(tuán)隊開始為 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)化機會。本文將介紹一些進(jìn)迭時空在 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ù)融合進(jìn) Load/Store 指令

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


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


更進(jìn)一步地,如果上述兩種優(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(表示判斷條件)融合進(jìn) kRiscvCmp 虛擬指令中。因此 ComparisonOp 節(jié)點計算結(jié)果不再被直接使用,所以不會對 ComparisonOp 生成指令,從而達(dá)到節(jié)省指令的目的。



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


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





Load + ChangeUint32ToUint64 優(yōu)化

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


但當(dāng) LoadOp 需要加載的數(shù)據(jù)其符號類型為 unsigned,MachineRepresentation 類型為 Word32 時,會選擇 lwu 指令來進(jìn)行加載,該指令加載數(shù)據(jù)時自身會進(jìn)行零擴展,故不需要再額外使用 zext.w 指令來進(jìn)行零擴展,從而省去 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ù)返回值進(jìn)行 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 偽指令可用于零擴展。當(dāng)使能 V8 Compress pointer 機制時,需要通過DecompressTagged 函數(shù)對 Tagged 類型數(shù)據(jù)進(jìn)行解壓縮。DecompressTagged 函數(shù)實現(xiàn)中,存在對 source register 上的數(shù)據(jù)執(zhí)行 And 0xFFFFFFFF 的操作,而 0xFFFFFFFF 需要使用 3 條 RISC-V 基礎(chǔ)指令來構(gòu)造。當(dāng)存在 RISC-V Zba Extension 時,可以使用 zext.w 指令來替換 And 0xFFFFFFFF 操作,從而節(jié)省 3 條指令。


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





AssembleReturn 優(yōu)化

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


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

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

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


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


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



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 類型,最低位通常設(shè)置為 0;而對于指向堆對象的 Tagged 類型值,最低位則設(shè)置為 1。TaggedIsSmi 源碼如下:

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


對應(yīng)的 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 進(jìn)行 And 運算,必然是在 Word32 數(shù)據(jù)表示范圍內(nèi),故并不需要進(jìn)行擴展操作。經(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ù)量,提高性能。當(dāng)使能 Compress pointer 時,會在二分查找比較時將輸入值進(jìn)行符號擴展操作,然而實際上,輸入值在整個二分查找階段并不會發(fā)生變化,可以對其做循環(huán)不變量提升,減少符號擴展操作的數(shù)量。


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




CompareTaggedAndBranch 優(yōu)化

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

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




性 能 測 試

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

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



結(jié) 束 語

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


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

    關(guān)注

    3

    文章

    3875

    瀏覽量

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

    關(guān)注

    47

    文章

    2698

    瀏覽量

    50836
  • 進(jìn)迭時空
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    進(jìn)播客 |「RISC-V 圓桌白話錄」首期正式上線!

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

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

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

    進(jìn)時空與青少年共赴RISC-V AI科技未來!

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

    2025RISC-V中國峰會|進(jìn)時空RISC-V AI CPU驅(qū)動智能化應(yīng)用發(fā)展

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

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

    21世紀(jì)經(jīng)濟(jì)報道記者趙娜杭州報道“這是我們的時代。”今年8月的一天,21世紀(jì)經(jīng)濟(jì)報道記者來到進(jìn)時空杭州總部。進(jìn)
    的頭像 發(fā)表于 06-06 17:00 ?685次閱讀
    迎接泛機器人時代:<b class='flag-5'>進(jìn)</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)下的編譯器自動向量化

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

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

    全球80多個國家和地區(qū)。近日,大象機器人聯(lián)合進(jìn)時空推出全球首款RISC-V全棧開源六軸機器臂“myCobot280RISC-V”,為開發(fā)者
    的頭像 發(fā)表于 06-06 16:55 ?932次閱讀
    大象機器人攜手<b class='flag-5'>進(jìn)</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>推出 <b class='flag-5'>RISC-V</b> 全棧開源六軸機械臂產(chǎn)品

    進(jìn)時空攜手珠海共建RISC-V生態(tài)應(yīng)用中心

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

    高校賽事 | 進(jìn)時空攜手藍(lán)橋杯,誠邀全國高校學(xué)子共啟RISC-V人工智能應(yīng)用創(chuàng)新賽道

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

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

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

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

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

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

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

    RISC-V+OpenHarmony5.0:進(jìn)時空與中科院共筑數(shù)字世界新基石

    解決方案的推出,標(biāo)志著RISC-V架構(gòu)與OpenHarmony操作系統(tǒng)的深度融合,為數(shù)字世界的未來發(fā)展奠定了堅實的基礎(chǔ)。RISC-V以其靈活、開源的特性,為芯片設(shè)計提供了全新的思路;而OpenHarmony5.0則以其開放、可裁剪的優(yōu)勢,為物聯(lián)網(wǎng)、智能終端等領(lǐng)域帶來了全新
    的頭像 發(fā)表于 02-19 11:30 ?985次閱讀

    進(jìn)時空完成A+輪數(shù)億元融資 加速RISC-V AI CPU產(chǎn)品迭代

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

    進(jìn)時空亮相RISC-V產(chǎn)業(yè)發(fā)展大會:新AI CPU引領(lǐng)大模型時代

    12月28日,以“發(fā)揮標(biāo)準(zhǔn)優(yōu)勢,繁榮產(chǎn)業(yè)發(fā)展”為主題的RISC-V產(chǎn)業(yè)發(fā)展大會在北京亦莊經(jīng)開區(qū)通明湖會展中心舉行。作為基于新一代RISC-V架構(gòu)的計算生態(tài)企業(yè),進(jìn)
    的頭像 發(fā)表于 12-31 17:32 ?1012次閱讀
    <b class='flag-5'>進(jìn)</b><b class='flag-5'>迭</b><b class='flag-5'>時空</b>亮相<b class='flag-5'>RISC-V</b>產(chǎn)業(yè)發(fā)展大會:新AI CPU引領(lǐng)大模型時代