遇见数据集

arch-data

收藏
github2026-07-18 更新2026-07-19 收录
官方服务:

资源简介:

该仓库存储了用于Vesta编译器的已生成和序列化指令数据库,包括x86等架构的指令语法、语义、成本模型(如延迟、吞吐量、微操作)和微架构信息(如Intel Haswell到Arrow Lake、AMD Zen2到Zen5)。它提供了结构化数据文件(如.vxisa和.vxarch格式),用于编译器分析、成本模型和语言服务器,并包含一个可视化的指令表格网站和文本转储,以便于搜索和比较。

This repository hosts a generated and serialized instruction database for the Vesta compiler, covering instruction syntax, semantics, cost models including latency, throughput and micro-operations, as well as microarchitecture details for architectures such as x86, spanning from Intel Haswell through Arrow Lake and AMD Zen2 up to Zen5. It provides structured data files in formats like .vxisa and .vxarch for compiler analysis, cost modeling and language server development, and also includes a visual instruction table website and text dumps to facilitate searching and comparison.

创建时间:
2026-07-18
原始信息汇总

数据集概述

arch-data 是为 Vesta 编译器提供的预生成且序列化的指令数据集,包含微架构成本模型和所有指令的可读转储。

包含内容(x86 架构为例,后续将扩展至 ARM、RISC-V)

文件 内容说明
x86/x86.vxisa ISA 语法与语义:每行为一条指令形式(包含完整操作数、编码、效果、语义属性、文档)。
x86/<microarq>.vxarch 微架构成本模型:延迟、吞吐量、微操作(uops)和端口分配,针对调度类去重。当前包含 13 种微架构(Intel Haswell~Arrow Lake + E-cores, AMD Zen2~Zen5)。
x86/instr_form_ids.h 生成的 C 语言头文件:enum InstrFormIDkInstrFormCountkInstrChecksum[]
index.html + assets/ 可视化网站(GitHub Pages):指令表格,支持帮助、搜索、按 iclass 筛选、微架构选择、分页、排序和可展开行(描述、结构键、效果、按微架构的成本)。
analyzer.html 汇编分析器:粘贴 Intel 格式指令,报告匹配的指令形式、效果和各微架构的成本。
dump/x86-instructions.txt 纯文本转储所有指令形式,可用 grep 搜索或 diff 比较。

每条指令形式拥有一个稳定的标识符FormID),该标识符基于其结构签名派生,而非指令名称。

数据用途

数据集描述每条指令的:

  • 语义学:读取/写入的操作数、是否访问内存或标志位、是否为内存屏障、是否序列化、是否为原子操作、是否跳转或调用。
  • 按微架构的成本:按操作数路径的延迟、倒数吞吐量、微操作数量和端口分配。

编译器始终不读取原始 XML,而是直接加载本仓库的文件用于:

  • 内联汇编分析asm { }):根据每条指令的语义推导效果和块的约定(触及的寄存器、是否可能失败、堆栈使用量)并判断能否重新优化。
  • 成本模型/调度:按微架构查询延迟和端口分配,以排序指令并估算成本。
  • 语言服务器(LSP):在编辑器中显示每条指令的功能、用法以及在所选微架构下的成本。

数据来源与版本

文件通过可复现流程生成:

  • 源数据:来自 uops.infoinstructions.xml,日期 2026-03-29sha256 = e5e702caaf04c4fc1f75192a9bbe4d8554b3e174f7933a14d124cc33ca677ab3(哈希值也记录在每个 .vxisa / .vxarch 文件头部)。
  • 生成工具:Vesta 编译器仓库中的 tools/import/,提交 4030e35
  • 格式版本:1。身份方案版本:1。

生成和更新详情见 doc/GENERATION.md

仓库结构

text arch-data/ ├── README.md ├── index.html 可视化网站:指令表格(Pages) ├── analyzer.html 可视化网站:汇编分析器 ├── assets/ CSS + JS + 内嵌数据(db.js) ├── .nojekyll Pages 按原样提供文件 ├── doc/ │ └── GENERATION.md 文件生成与更新说明 ├── x86/ │ ├── x86.vxisa ISA 语法与语义 │ ├── <microarq>.vxarch 按微架构的成本模型(13 个文件) │ └── instr_form_ids.h C 头文件(FormID + 校验和) └── dump/ └── x86-instructions.txt 所有指令形式的纯文本转储

在线访问

可视化页面 index.html 为自包含的静态页面。启用 GitHub Pages(默认分支、根目录)后,可通过以下地址访问:

text https://vesta-lang.github.io/arch-data/

也可直接在浏览器中打开 index.html 文件,无需服务器。.nojekyll 文件用于避免 Pages 使用 Jekyll 处理站点。

搜集汇总
数据集介绍
arch-data 数据集图片
构建方式
arch-data数据集专为Vesta编译器设计,存储已序列化的指令数据库,以避免每次编译时从约140MB的原始XML源(来自uops.info)重新生成。数据集通过可复现的流程构建:以2026年3月29日版本的uops.info XML文件为源,使用Vesta编译器仓库中特定commit(4030e35)的导入工具生成。所有生成文件的哈希值记录在头部,确保数据完整性。数据集涵盖x86架构(未来扩展至ARM、RISC-V),包含ISA语法语义文件、13种微架构(如Intel Haswell至Arrow Lake及E-cores、AMD Zen2至Zen5)的成本模型、C头文件以及文本转储。
特点
数据集的核心特点在于其结构化和稳定性。每条指令形式拥有基于结构签名派生的稳定标识符(FormID),而非名称,确保跨版本兼容。数据详尽描述了指令的语义(如读写操作数、内存和标志影响、原子性、跳转特性)以及每微架构的成本(包括延迟、吞吐量、微操作数和端口分配)。通过版本化已序列化结果,编译器无需网络依赖或启动时生成步骤,即可即时获取可复用的数据,实现高效的汇编分析、调度优化和语言服务器功能。
使用方法
编译器直接加载本仓库中的文件,从不读取原始XML。使用时,在线汇编块(asm {})可通过指令语义推导效应和合约,判断寄存器影响、失败可能性及栈使用,并决定是否重优化。成本模型利用微架构特定的延迟和端口分配进行指令排序和成本估算。语言服务器在编辑器中实时显示指令功能、用法及选定微架构下的成本。此外,数据集附带静态网页(index.html)提供可视化指令表,支持搜索、过滤和微架构选择;analyzer.html工具可粘贴Intel语法汇编,匹配指令形式并报告效应和成本。
背景与挑战
背景概述
arch-data数据集诞生于2026年,由Vesta编译器项目团队创建,旨在为编译优化与调度提供结构化、可复现的指令集与微架构数据。该数据集聚焦于x86指令集(未来将扩展至ARM、RISC-V),核心研究问题是如何摆脱对原始微架构源XML(约140MB)的依赖,实现编译器对指令语义与性能数据的即时、可重复访问。通过将uops.info等权威源的指令形式、语义及成本模型序列化为`.vxisa`和`.vxarch`等格式,arch-data为编译器内联汇编分析、调度器建模及语言服务器功能提供了关键支撑,推动了编译器对微架构感知优化领域的数据基础设施建设。
当前挑战
arch-data面临的首要挑战是领域问题:精确建模现代处理器指令集的复杂语义与性能特征,包括操作数依赖、内存屏障效应、原子性及跨微架构的延迟与吞吐差异。构建过程中,数据源高度依赖uops.info的庞大XML,手动处理不仅耗时且易出错;同时,13种微架构(Intel Haswell至Arrow Lake、AMD Zen2至Zen5)的数据整合需解决编码格式差异、调度类去重与成本模型一致性等问题。此外,维持数据版本与编译器工具链的同步演化,确保`FormID`识别的长期稳定,也是一项持续挑战。
常用场景
经典使用场景
arch-data数据集为Vesta编译器提供了预生成的指令集数据库,涵盖x86架构的语法、语义及微架构成本模型。其经典使用场景是编译器开发者无需从原始的~140 MB的uops.info XML源重新生成数据,直接加载已序列化的.vxisa和.vxarch文件即可获取每条指令的完整信息,包括操作数读写、内存访问、原子性等语义属性,以及针对Intel Haswell至Arrow Lake、AMD Zen2至Zen5等13种微架构的延迟、吞吐量、微操作数与端口分配。这种即取即用的设计大幅简化了编译器的构建流程,确保了数据依赖的零网络开销与高度可复现性。
实际应用
在实际工程中,arch-data数据集支撑了编译器Vesta的三大核心功能:首先,在内联汇编(asm {})分析中,编译器通过该数据推导出汇编块的语义契约(如寄存器干扰、栈使用、异常可能性),从而安全地进行跨语言优化。其次,在指令调度与成本估算阶段,调度器依据每个微架构的端口与延迟数据对基本块进行重排,以利用处理器执行单元的并行度。最后,在语言服务器协议(LSP)中,该数据集支持编辑器实时显示指令的含义、使用方式及选定微架构下的代价,为底层开发者提供了类似高成本IDE的交互式反馈,显著提升了系统级编程的调试与优化效率。
衍生相关工作
基于arch-data的数据模型与生成流程,衍生了一系列与之紧密相关的工具与资源。首先,数据集附带的静态网站(index.html)本身即是一个可交互的指令表与搜索工具,支持按iclass过滤、微架构选择、成本展开等功能,成为开发者无需安装编译器即可查阅指令语义的轻量级参考。其次,analyzer.html提供了汇编指令的在线分析器,用户粘贴Intel语法的指令后即可获得匹配的指令形式、语义效果与多微架构成本对比,这实质上构建了一个微架构感知的即时反汇编与标注服务。此外,文本转储文件(dump/x86-instructions.txt)使研究者能用grep快速检索指令形式,便于与diff工具结合进行版本间差异分析,这种纯文本呈现方式也催生了自定义脚本进行批量统计或性能建模的探索工作。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务