写了一个高性能 RISC-V JIT 模拟器 - V2EX
爱意满满的作品展示区。
ksco

写了一个高性能 RISC-V JIT 模拟器

  •  
  •   ksco Jan 16, 2023 2867 views
    This topic created in 1215 days ago, the information mentioned may be changed or developed.

    [前情提要] https://v2ex.com/t/861895

    上次写了一个全系统的 RISC-V 模拟器,可以运行 xv6 ,但因为没有做任何优化,实际的性能很差。这次又整了个新活,写了一个 Linux 用户态程序模拟器,可以运行静态链接的 RISC-V 程序。

    这次是用 JIT 技术来实现的,检测到热点代码后会编译成 native 的代码来执行,性能还是不错的。绝大部分场景下都比 QEMU 快,而且是快很多。

    地址: https://github.com/ksco/rvemu

    12 replies    2023-01-18 09:48:54 +08:00
    xieren58
        1
    xieren58  
       Jan 16, 2023
    c 换成 rust 会更好点...
    ksco
        2
    ksco  
    OP
       Jan 16, 2023
    @xieren58 就目前来说 C 的受众还是更广一些。
    roycestevie6761
        3
    roycestevie6761  
       Jan 16, 2023
    @xieren58 为啥?
    roycestevie6761
        4
    roycestevie6761  
       Jan 16, 2023
    start 了,支持一下
    favourstreet
        5
    favourstreet  
       Jan 16, 2023 via Android   1
    点进去看了一下 makefile ,发现没有链接 llvm ,心想 2023 年了,写 jit 不用 llvm ,楼主技术可以啊!
    然后点搜索,搜 mmap ,原来文件名叫缓存。
    继续看代码,发现编译方式是把 rv 机器码翻译成等价的 c 语言程序,然后启动一个 clang ,把拼起来的 c 语言字符串送给 clang ,好吧,到底还是用了 llvm 。

    楼主,你这 jit 让我有点失望啊!要是我的电脑里没安装 clang 怎么办?
    duke807
        6
    duke807  
       Jan 16, 2023 via Android
    linux 用户态运行其它架构程序有标准且好用的框架,查关键词:

    /proc/sys/fs/binfmt_misc/register

    gentoo chroot binfmt_misc
    ksco
        7
    ksco  
    OP
       Jan 16, 2023
    @duke807 binfmt 只是个虚拟机的 wrapper 。
    pursuer
        8
    pursuer  
       Jan 16, 2023
    我也写过一个 webassembly 的 jit 运行环境,没用 llvm ,用的是更简单的 sljit 。感兴趣的可以看看

    https://github.com/partic2/pwart
    https://gitee.com/partic/pwart


    @favourstreet
    有一些简单的库可以做 jit ,像上面提到的 sljit ,还有 gnu lighting 啥的,不过性能优化啥的应该是比不过专业级的 llvm
    ksco
        9
    ksco  
    OP
       Jan 16, 2023
    @favourstreet 不是很想碰 LLVM API 那一大坨东西呀
    ksco
        10
    ksco  
    OP
       Jan 16, 2023
    @pursuer 不带优化的 JIT 挺慢的,你可以把你的虚拟机和 V8 做个 benchmark 对比看看。
    xieren58
        11
    xieren58  
       Jan 17, 2023
    @roycestevie6761 换 rust, 更容易推广... 看起来现代化点.
    wslzy007
        12
    wslzy007  
       Jan 18, 2023   1
    @ksco 不错,简洁易懂。已 start
    About     Help     Advertise     Blog     API     FAQ     Solana     5832 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 79ms UTC 06:40 PVG 14:40 LAX 23:40 JFK 02:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86