学习:开源项目Cheshire

Cheshire 项目全景分析

Cheshire 是苏黎世联邦理工(ETHZ)与博洛尼亚大学 PULP 项目下的最小化、可运行 Linux 的 64 位 RISC-V 主机平台 ,围绕 CVA6(原 Ariane)应用级核构建。它的定位不是"又一个玩具 SoC",而是给需要主机 CPU 的系统提供一个轻量、可配置、能自主引导的宿主子系统------从极简 Linux SoC,到众核加速器(DSA / PMCAs)的控制平面。


一、架构拆解

完整配置下(hw/cheshire_soc.sv 顶层 + cheshire_pkg 参数包):

子系统 实现要点
计算 最多 31 个 CVA6 核,采用 self-invalidation 基一致性(非硬件目录一致性,靠软件/自失效协议维持)
互连 AXI4 交叉开关(地址宽/数据宽/端口数可配),最多 16 个外部 AXI4 manager 口 + 16 个 AXI/Regbus subordinate 口;简单从设备走轻量 Regbus demux,压低面积与功耗
存储 LLC(axi_llc)可按路(per-way)运行时切换为 SPM 便签存储器 ;Boot ROM 仅 7.2 KiB(-Os + LTO)
外设 UART、I2C、SPI Host、GPIO、VGA(带内建 DMA)、全数字 chip-to-chip / D2D 串行链路、高吞吐 iDMA、SpinalHDL 实现的 USB 1.1(OHCI)
中断 CLINT、CLIC(含 vCLIC)、PLIC,支持动态中断路由与可配外部中断源/目标数
调试 RISC-V Debug Module + JTAG TTM,可调试 CVA6 及外部任意数量 hart(如加速器里的核)
实时性 每 manager 口独立的 AXI4 流量调节器(AXI-RT) ​ 做带宽隔离,以及 UNBENT 总线错误单元
引导 被动预加载(JTAG / UART / D2D)或自主引导(SPI Flash / I2C EEPROM / 支持 GPT 分区的 SD 卡)

内部地址空间固定在 0x0--0x2000_0000,关键节点:Debug ROM 0x0、Boot ROM 0x0200_0000、CLINT 0x0204_0000、PLIC 0x0400_0000、LLC/SPM 0x1000_0000;外部资源从 0x2000_0000 起,LLC 输出区默认 0x8000_0000


二、核心技术亮点

1. 首个开源可综合的 RPC DRAM 接口。 ​ 这是 Cheshire 论文最大的原创贡献:全数字、工艺无关的 reduced-pin-count DRAM 控制器,PHY 仅 22 个翻转 IO、3.5 kGE 面积 ,访问能耗 250 pJ/B ,200 MHz 下峰值 750 MB/s,优于同能效区间 HyperRAM 方案;32 B 传输访问外部 DRAM 仅需 8 个周期。

**2. "敏捷"存储层次。**​ LLC 逐路可切换为 SPM,让主机在需要时立刻获得片上 SRAM 级延迟;配合 AXI4 + Regbus 双层互连,把"高带宽突发"与"寄存器型低复杂度外设"分流。

3. 面向异构集成的接口设计。 ​ 可配数量的 AXI4 manager/subordinate 口 + 全数字 D2D 链路,本质上是把 Cheshire 设计成可插拔的 chiplet 宿主

4. 硅验证:Neo 芯片。 ​ TSMC 65 nm 流片,1.2 V 下最高 325 MHz ,数据密集型负载整芯片功耗 < 300 mW,面积约 6.4 mm²。这是开源 SoC 中少见的、完成 RPC DRAM 实测表征的流片案例。


三、工程与生态

  • 构建体系 :Bender 管 IP 依赖 + GNU Make 编排;依赖 GNU Make ≥3.82、CMake ≥3.24、Python ≥3.11、Bender ≥0.27.1、RISC-V GCC ≥11.2,Python 侧已有 pyproject.toml + uv 可复现环境。
  • 目录hw(RTL)、sw(软件栈/测试)、target(仿真/FPGA/ASIC)、utildoc
  • 目标平台 :仿真(QuestaSim 为主流,另有 VCS 流程)、Xilinx FPGA(Genysys2、VCU118、VCU128 支持 Linux 启动;ZCU102 因缺 SPI Flash/SD 而无法启动 Linux)、以及作为 IP 被集成。
  • 软件栈 :通过 cva6-sdk 构建 GCC / OpenSBI / U-Boot / Linux,生成 *.gpt.bin 镜像烧录 SD 卡或 SPI。
  • 许可证 :硬件与工具脚本 Solderpad 0.51,寄存器生成代码 Apache 2.0,USB OHCI 为 MIT,软件 Apache 2.0------整体商业友好。
  • 生态位 :它已被 Carfield(面向汽车混合关键性 SoC)用作主 host domain,负责常驻控制、时钟/复位域管理与对外 IO;也被 Headsail 等后续芯片工作引用。

四、需要留意的短板

  1. IO 一致性靠软件兜底 。USB、DMA 等非一致设备直写内存时,CVA6 缓存可能看不到;RISC-V 基础 ISA 无 CMO 指令,需依赖 Zicbom 扩展(2021 年 11 月 ratified)做 clean/invalidate/flush,靠上游 Linux 驱动侧维护一致性。ETHZ 已把"在 CVA6 + HPDCache + Cheshire 上集成验证 CMO、用 OHCI 驱动打通 USB 1.1"列为明确课题------说明这仍是进行中的痛点。
  2. 主存带宽天花板。RPC DRAM 是"低引脚数换集成成本"的取舍,750 MB/s 远低于 LPDDR 级别,不适合当作通用算力平台的主存方案。
  3. 工具链部分依赖商用 EDA。主流仿真流程绑定 QuestaSim/VCS,FPGA 流程绑定 Vivado;虽有开源 RTL,但完整验证体验并不"全开源"。
  4. 成熟度:仓库自述"仍在早期开发,接口与约定可能无预告变更";版本节奏为 v0.1.0(2024-10)→ v0.3.0(2025-04)→ v0.3.1(2025-06),2026 年仍在持续迭代(VCU128 DRAM 修复、CI 环境迁移、用 RDL 生成地址替代硬编码等)。

五、选型建议

适合:做 DSA/加速器 chiplet 的宿主控制平面、需要可流片的 Linux-capable RV64 基线、研究缓存一致性/实时互连/低引脚 DRAM、教学与体系架构实验(参数化干净、文档齐全)。

不适合:追求高内存带宽或 SMP 强一致性的通用计算、没有商用仿真器又要完整回归验证的团队、希望开箱即用的产品级平台。

上手路径建议:先 make all + QuestaSim 跑通 helloworld.spm.elf,再切 Genesys2 板卡启动 Linux,最后读 docs/um/archcheshire_pkg.sv 理解参数化边界。

相关推荐
撩得Android一次心动1 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
xian_wwq3 小时前
【学习笔记】OWASP Agentic 应用安全(二)
笔记·学习·安全·owasp
小弥儿4 小时前
GitHub今日热榜 | 2026-09-04:Agent省 token 成今日主线
学习·开源·github
前端精髓4 小时前
NestJS 是什么(对着 Spring Boot 一起学习)
spring boot·后端·学习
kyrie_sakura5 小时前
MySQL数据库学习笔记2--系统函数(分组,单行,窗口函数)
数据库·学习·mysql
dadaobusi5 小时前
学习:XS-Gem5参数
学习
LearnYard6 小时前
技术博主实测:2026年大语言模型辅助学习工具横向对比
人工智能·学习·语言模型
M78佐菲6 小时前
HTML学习笔记
linux·笔记·学习·tcp/ip·html
我还可以再学点8 小时前
QUIC学习笔记
笔记·学习