第六期"一生一芯"课程主页
学习目标
"一生一芯"将会培养大家的综合能力. 大家完成学习之后, 将会对以下问题有一定的认识:
- 处理器是如何设计的?
 - 程序是如何在计算机上运行的?
 - 如何对处理器的性能进行优化?
 - 如何使用/设计正确的工具高效地进行调试?
 - 如何自己编写测试用例进行单元测试?
 - RTL设计如何生成可流片的版图?
 
我们将会引导大家设计一款RISC-V流水线处理器, 并在自己设计的处理器上运行操作系统, 在操作系统上运行真实游戏. 达成指标的处理器将可以接入到SoC, 并获得流片机会.
教学资源
时间一栏是以小时为单位的预估完成时间- 预估完成时间为
2的内容, 一般没有相关的编程任务, 只有2小时的视频录播, 用于补充讲解相关知识 - 鉴于同学们的基础水平有高有低, 此处按照"中等水平"同学的能力来预估. 但这里的"中等水平"并不是指"程序设计课程总评80分以上", 而是指"学习心态端正, 编写过500行以上代码的单个程序, 并且懂得调试".
 - 如果你是零基础的初学者, 你应该预期花费这个数字
2~3倍的时间来完成学习. 不过你不必为此感到沮丧, 所谓"闻道有先后", 之所以其他同学学得快, 很大一部分原因是因为他们之前已经付出努力迈过了初学者的阶段. 
- 预估完成时间为
 - 可点击图标跳转到相应资源
 - 完整的讲义可通过页面右上方导航栏查看
 - 课件用reveal.js编写, 可导出为PDF文件, 具体见这里的操作
 - S阶段讲义内容仍然在🕊
 
C = C语言(程序/模拟器/系统软件) | R = RISC-V指令集 | P = 处理器设计 | T = 工具
| 阶段 | 序号 | 任务 | 时间 | 讲义 | 课件 | 视频 | C | R | P | T | 
|---|---|---|---|---|---|---|---|---|---|---|
| 预学习阶段 | 如何科学地提问 | 2 | 📚 | 📰 | 🎬 | |||||
| Linux系统安装和基本使用 | 10 | 📚 | 📰 | 🎬 | ||||||
| 计算机系统的状态机模型 | 2 | - | 📰 | 🎬 | ||||||
| 复习C语言 | 20 | 📚 | 📰 | 🎬 | ||||||
| 程序的执行和模拟器 | 2 | - | 📰 | 🎬 | ||||||
| 搭建verilator仿真环境 | 5 | 📚 | - | - | ||||||
| 数字电路基础实验 | 20 | 📚 | 📰 | 🎬 | ||||||
| 完成PA1 | 30 | 📚 | 📰 | 🎬 | ||||||
| 申请入学答辩 | ||||||||||
| 基础阶段 | 支持RV32IM的NEMU | 10 | 📚 | 📰 | 🎬 | |||||
| 程序的机器级表示(上) | 2 | - | 📰 | 🎬 | ||||||
| 程序的机器级表示(下) | 2 | - | 📰 | 🎬 | ||||||
| 用RTL实现最简单的处理器 | 5 | 📚 | - | - | ||||||
| AM运行时环境 | 5 | 📚 | 📰 | 🎬 | ||||||
| 工具和基础设施 | 5 | - | 📰 | 🎬 | ||||||
| 支持RV32E的单周期NPC | 10 | 📚 | 📰 | 🎬 | ||||||
| ELF文件和链接 | 2 | - | 📰 | 🎬 | ||||||
| 设备和输入输出 | 10 | 📚 | 📰 | 🎬 | ||||||
| 调试技巧 | 2 | - | 📰 | 🎬 | ||||||
| 异常处理和RT-Thread | 15 | 📚 | 📰 | 🎬 | ||||||
| 总线 | 10 | 📚 | 📰 | 🎬 | ||||||
| SoC计算机系统(上) | 15 | 📚 | 📰 | 🎬 | ||||||
| SoC计算机系统(下) | 15 | 📚 | 📰 | 🎬 | ||||||
| 性能优化和简易缓存 | 20 | 📚 | 📰 | 🎬 | ||||||
| 流水线处理器 | 20 | 📚 | 📰 | 🎬 | ||||||
| B阶段流片准备与考核 📚 | ||||||||||
| 课程总结 📚 | ||||||||||
| 进阶阶段 | 由于时间关系, 详细的A阶段讲义无法按时发布. 我们先列出一些大纲📚, 感兴趣的同学可以按照我们给出的方向自行探索. | 0 | ||||||||
| 专家阶段(香山邀请报告) | 高性能处理器的性能测算基础 | 0 | - | - | 🎬 | |||||
| 乱序访存单元入门 | 0 | - | - | 🎬 | ||||||
| 香山处理器昆明湖架构前端设计 | 0 | - | - | 🎬 | ||||||
| 处理器乱序执行基础 | 0 | - | - | 🎬 | ||||||
| 缓存基础与香山缓存 | 0 | - | - | 🎬 | ||||||
| 总结 | 课程总结 | 0 | - | 📰 | 🎬 | |||||
页面加载条卡住了?
跳转页面时, 如果进度条卡住 3 秒以上, 很可能是由于我们推送了网页版本更新.
 鉴于我们还在频繁更新、修订文档, 近期可能会比较容易遇到跳转卡住的情况.
 遇到这种情况, 只需要 刷新整个页面 即可继续学习咯
往期课程主页
可通过顶部导航栏的"课程主页"查看.
其他资源
- 《RISC-V开放架构设计之道》 大卫·帕特森 安德鲁·沃特曼 著,勾凌睿 陈璐 刘志刚 译
 - 《计算机系统——基于RISC-V+Linux平台》 袁春风 余子濠 陈璐 编著
 - Digital Design and Computer Architecture - Spring 2023, Onur Mutlu@ETH Zurich
 - 提问模板
 
活动记录
- 2024/07/14 - “一生一芯”2024暑期宣讲会
 - 2023/08/25 - 开源芯片技术生态论坛(原“一生一芯”技术论坛)
 - 2023/07/02 - 第六期“一生一芯”启动会
 - 2022/11/20 - 从软件工程视角看芯片开源与敏捷设计(包云岗)
 - 2022/08/28 - 第一届“一生一芯”技术论坛暨第五期启动会
 - 2022/03/12 - 软硬件协同能力在芯片设计中的应用(金越, 胡博涵, 高泽宇)
 
