爱意满满的作品展示区。
ksco

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

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

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

    /proc/sys/fs/binfmt_misc/register

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

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


    @favourstreet
    有一些简单的库可以做 jit ,像上面提到的 sljit ,还有 gnu lighting 啥的,不过性能优化啥的应该是比不过专业级的 llvm
    ksco
    ksco
    OP
    Jan 16, 2023
    9
    @favourstreet 不是很想碰 LLVM API 那一大坨东西呀
    ksco
    ksco
    OP
    Jan 16, 2023
    10
    @pursuer 不带优化的 JIT 挺慢的,你可以把你的虚拟机和 V8 做个 benchmark 对比看看。
    xieren58
    xieren58
    Jan 17, 2023
    11
    @roycestevie6761 换 rust, 更容易推广... 看起来现代化点.
    wslzy007
    wslzy007
    Jan 18, 2023❤️1
    12
    @ksco 不错,简洁易懂。已 start
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   910 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    ♥ Do have faith in what you're doing.