Skip to content

AlvinYangZF/opencode-ssd-sim-v1

Repository files navigation

SSD Simulator

高性能 SSD 固件和硬件行为模拟器,用于 SSD 固件算法验证、NAND 介质行为研究、NVMe 协议栈测试和性能分析。

🎯 功能特性

  • 16 通道 NAND 并发模拟:每个通道支持 8 个芯片,共 128 并发
  • 完整 FTL 层实现
    • 页级 LBA→PBA 映射
    • 多策略垃圾回收(贪婪/成本效益/随机)
    • 动态/静态/混合磨损均衡
    • 5 级优先级 IO 调度
    • BCH/LDPC ECC 数据保护
  • NVMe/PCIe 接口:符合 NVMe 1.4 规范
  • 精确时序模拟:t_read=25μs, t_prog=200μs, t_erase=2000μs
  • 完整测试套件:137+ 单元测试

🏗️ 系统架构

┌─ NVMe/PCIe 层 ─┐
├─ Controller 层 ─┤
├─ FTL 算法层 ────┤
├─ Platform 层 ───┤
├─ HAL 层 ────────┤
└─ Media 层 ──────┘

📋 系统要求

  • OS: Debian/Ubuntu Linux
  • CPU: 64-256 核心
  • 内存: 64GB+ DRAM
  • 编译器: GCC (C11 标准)

🚀 快速开始

编译

mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

运行

./ssd_simulator --help
./ssd_simulator

运行测试

make test

📁 项目结构

opencode/
├── docs/               # 设计文档
│   ├── design/         # 概要设计
│   └── detailed_design/# 详细设计
├── src/                # 源代码
│   ├── common/         # 公共工具
│   ├── firmware/       # 固件三层架构
│   │   ├── ftl/        # FTL 层
│   │   ├── hal/        # HAL 层
│   │   └── platform/   # 平台层
│   ├── media/          # 介质模拟
│   ├── nvme/           # NVMe/PCIe
│   └── controller/     # 控制器
├── tests/              # 测试代码
│   └── unit/           # 单元测试
├── config/             # 配置文件
└── external/           # 外部依赖

📊 测试状态

模块 测试数 状态
FTL Mapping 12 ✅ 通过
Data Protection 7 ✅ 通过
Bad Block 21 ✅ 通过
其他模块 97+ 🚧 进行中

总体通过率: 89% (115/137)

🛠️ 主要模块

  • FTL Mapping: 页级地址映射,支持批量操作
  • Garbage Collection: 多策略 GC,后台运行
  • Wear Leveling: 动态/静态/混合策略
  • IO Scheduler: 5 级优先级调度
  • Data Protection: BCH/LDPC ECC, CRC32
  • NVMe Driver: 队列管理,Doorbell 机制

📝 文档

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📧 联系

如有问题,请在 GitHub 上提交 Issue。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages