为 QEMU softfloat 添加用于神经网络计算的浮点精度

QEMU 的 softfloat 源码位于 fpu/ 和 include/fpu/ 路径中,代码最初源自 Berkeley SoftFloat IEC/IEEE 浮点运算包的 2a 版本(SoftFloat 2a),后续经过 QEMU 项目贡献者修改。 目前我已经为 softfloat 添加了 tfloat32 和 float8e4m3 和 float8e5

2025-07-20 · 4 min · zevorn

浅析适用于 LLM 的 AI FPU 硬件的虚拟原型平台的浮点精度

本文首发于微信公众号: GTOC 业界经常使用量化的手段来提高大模型的训练和推理效率和节省成本,因此衍生了很多浮点精度和格式,比如 TF32、BF16、FP8、FP4 等。 在 AI 芯片的虚拟原型平台开发中,对于各类 FPU 硬件的 model 建模,一般采用软浮点的方式来模拟,常使用 C/C++ 来实现,在保证准确性的同时,性能也不会太差。 常见的模拟器

2025-07-16 · 9 min · zevorn

从接口的角度谈虚拟化

本文首发于微信公众号:GTOC 总结了「虚拟机系统与进程的通用平台」一书中,关于虚拟机导论的内容。 一、抽象层次。 管理计算机系统复杂性的经典手段,是通过一些定义明确的接口,把系统划分成不同的抽象层次。不同的抽象层次,分工明确,一般越靠近底层的,越关注硬件实现;越靠近上层的,越关注业务实现。 同时,抽象层次允许忽略或简化系统设计的底层实现细节,从而简化高层组

2025-07-03 · 5 min · zevorn

浅析 QEMU 的调试利器 tracing 工具

本文首发于微信公众号 GTOC 。 本文参考 QEMU 的 tracing 文档,相对路径为:docs/devel/tracing.rst QEMU 有一个很好用的调试工具 tracing,可以用来跟踪 QEMU 内部函数的执行情况,以及性能调优。 比如追踪客户机程序的访存情况,可以将 QEMU 的 memory region 的读写记录打印出来,只要注册了

2025-07-02 · 5 min · zevorn

使用 QEMU 体验 RISC-V 虚拟化

PS: 本文首发于格维开源社区微信公众号 GTOC 。 目前支持 RISCV 虚拟化扩展的硬件不是很多,对于想尝鲜的朋友,可以使用 QEMU 来模拟。下文给出详细的教程。 基本思路是采用 QEMU 软件模拟一个 RISCV SoC(virt Machine),在上面运行 Ubuntu 发行版,然后在 Ubuntu 上使用虚拟化运行 Linux 。 一、基本环

2025-06-30 · 3 min · zevorn

谈谈我对"好的提问"以及"通过 STFW 和 RTFM 独立解决问题"的看法

前言 大约是六年前,我在大学生电子综合赛(一个全国赛事)的校内培训上,遇到了培训阶段的第一个难题:如何在 win10 上安装 Keil 和 Proteus,前者是嵌入式开发常用的 IDE,后者提供了电路仿真和模拟 MCU 的功能。 当时实验室老师提供的 Keil 和 Proteus 的版本比较老,在代码补全和调试方面,体验欠佳。为了让自己编码体验好一些,我尝

2025-03-12 · 4 min · zevorn

RVV 向量扩展 v1.0 中文手册

导言 作为 RISC V 国际批准过程的一部分,此版本 1.0 被视为已冻结以供公众审查。 1.0 版被认为足够稳定,可以开始开发工具链以及功能模拟器和实现,包括在上游软件项目中,并且预计不会有不兼容的更改,除非在批准期间发现严重问题。一旦获得批准,该规范将获得 2.0 版。 该规范包括完整的当前冻结向量指令集。其他在开发过程中考虑过但未出现在本文档中的说明

2025-01-16 · 3 min · zevorn

2024 年总结:星光不负赶路人

今年我与开源世界的联系更多了,重新拾起 B 站 up 主的身份( 绝对是泽文啦,即将 4000 粉丝),格维开源社区的活跃度再创新高,继续在基础软件领域深耕。 QEMU PATCH v2 0/2 riscv: Enhanced VSTART and VL checks for vector instructions (https://lore.kernel.

2024-12-30 · 2 min · zevorn

Rust In Qemu 的发展与现状

发展背景 在 2021 年 KVM 的论坛会议,进行了一场以 “QEMU+Rust BoF” 为主题的讨论,会议摘要可以通过 QEMU blog 2022 Rust 板块找到: QEMU+Rust BoF, KVM Forum 2021 1 。 在这个会议上,对 QEMU 引入 Rust 的相关话题,进行了充分讨论,可以总结为以下几个方面: 1. 混合使用

2024-11-28 · 4 min · zevorn

GDB 调试进程手动加载动态库的方法

如果进程通过 dlopen() 手动加载动态库,某些情况下不能被 GDB 识别调试符号,这个时候可以通过 GDB 的 add symbol file file address 命令来手动添加调试符号,address 是动态库在进程中的 text 段 entry 地址,考虑动态库只有加载到进程中,才能得知真正的内存地址,因此我们可以通过 GDB 的 info

2024-11-28 · 1 min · zevorn

使用 tmux 进行远程开发

简单教程 本文记录一个极简的 tmux 配置教程,来满足基本的开发需求。 首先打开 tmux 配置文件: 然后键入一下内容: 成品 tmux 配置 这里使用 https://github.com/gpakosz/.tmux 的配置,命令如下: 编辑 /.tmux.conf.local ,将 tmux conf copy to os clipboard 的值改

2024-11-27 · 2 min · zevorn

如何使用 git send-email 参与开源社区

本篇文章首发于 Nano Code 维基百科 1 可以选择使用 git send email 发送邮件补丁到社区,下面给出具体步骤。 安装 Git Email 1. ubuntu 默认不会安装完全版的 git ,因此需要我们在安装 git 以后( ulan 默认安装了 git ),再安装 git email : 如果安装失败,比如遇到下面的问题: 可以手动添

2024-11-25 · 2 min · zevorn