本次课内容:
老博士, 但参与教学的时间比读研究生还长(一些) 😂
博士方向研究指令集模拟器和二进制翻译
和业界现有的流程非常类似, 只不过使用开源组件
程序, 操作系统, 运行时环境, 指令集, 处理器, SoC, 板卡
FCEUX
RT-Thread
AM
RISC-V
NPC
ysyxSoC
NVBoard
1+2+...+10
芯片有几十种大门类, 上千种小门类
在众多芯片中, 处理器芯片设计复杂度高, 难度大
处理器芯片和其他芯片的最大区别 - 光靠自己无法工作, 需要运行程序
为了提升程序运行的性能, 处理器芯片中通常包含很多模块, 背后承载着各种技术
给处理器芯片 “画图纸”的工作, 称为架构设计(architecture design)
第一台通用电子计算机ENIAC(1945), 用于计算数值积分
电子管 = 开关 = 0/1(二进制表示)
电子管的连接方式反映了二进制信息如何被传递和处理, 从而在整体上实现数值积分的功能
有很多新的概念?
更重要的两个观念:
always @(posedge clk) begin
case (raddr[1:0])
2’b00: rdata <= reg0[31:0];
2’b01: rdata <= reg1[31:0];
2’b10: rdata <= reg2[31:0];
2’b11: rdata <= reg3[31:0];
endcase
end
一生一芯将引导大家用全新的方法和科学的现代处理器设计流程, 按计算机发展史的顺序(不同的学习阶段)设计处理器
通过我们设置的训练让你变强
老板分配任务 | 熟练工 | 专业人士 |
---|---|---|
跑RT-Thread | 软件跟我没关系 | 出了bug我能调对 |
尝试新工具 | 我没接触过 | 我来看手册 |
改进工具 | 工具会用不就行吗 | 我来分析瓶颈 |
实现新需求 | 我需要详细设计文档 | 我规划一下 |
熟练工: 可以很好地完成指定任务, 保证项目流程往前推进
专业人士: 具备独立解决未知问题的专业素质
基本原理 | 做事方案 | 正确性风险 | 代表例子 |
---|---|---|---|
阐述 | 明确 | 基本正确 | 高中物理实验 |
阐述 | 明确 | 可能出错 | 程序设计作业, 培训班 |
阐述 | 需要思考 | 基本正确 | 数学/算法题 |
阐述 | 需要思考 | 可能出错 | PA, 一生一芯 |
需要探索 | 需要思考 | 可能出错 | 业界和科研的真实问题 |
把知识包装成 “新问题”呈现给大家
实验课老师没有正经的处理器设计经验
据说这个实验曾经是计算机系最难的实验 😂
树立正确的专业世界观, 吸收过去数十年构建的知识体系, 接触领域前沿的真正研究
这期的S阶段又要🕊了, 但不管怎样:
如果你的回答是肯定的, 那就来参加一生一芯
如果在你设计的处理器上
你愿意从1,000,000,000个周期的波形中寻找错误的信号吗?
教科书/大作业并不会教你如何应对这些问题
2012年一篇总结七大互联网公司经验教训的博文
(对应2) Keep it simple - complexity will come naturally over time.
(对应3) Automate everything, including failure recovery.
(对应2) Iterate your solutions - be prepared to throw away a working component when
you want to scale it up to the next level.
(对应3) Use the right tool for the job, but don't be afraid to roll your own
solution.
(对应1) Use caching, where appropriate.
(对应1) Know when to favor data consistency over data availability, and vice versa.
这些做事的观念和方法, 就是工业界所需要的
不仅需要学习很多新知识, 在新环境中使用新工具
还需要锻炼出独立解决问题的意识和能力
更重要的是, 完成观念和心态上的转变
如果你只是想轻松愉快地写RTL, 网上已经有很多教程和MOOC
取决于你是否已转变观念和心态, 锻炼出独立解决问题的意识和能力
王晨宇@南通大学,
学习时大二(转专业), 获得第四期流片资格
烟雨松@北京101中学,
学习时高三, 已流片并成功点亮
另一个角度: 大家都有潜力完成一生一芯的学习
意义: 让你接受预期的训练, 锻炼出预期的能力
这是需要大家发自内心去认可和执行的: 我们很难约束大家
“凭什么不能参考别人的代码? 我都看懂了啊!”/“能抄对也是本事”
STFW - Search The Friendly Web
RTFM - Read The Friendly Manual
RTFSC - Read The Friendly Source Code
如果你在提问时收到了这些回复, 其背后的含义是:
但更重要的是它们的逆否命题在调bug中的应用
正确理解 “相比于我直接告诉你答案, 你自己获取答案能学到更多”
不是所有问题都值得问
开源社区中的一个真实案例:
一篇参考文章: 什么样的问题我不太想回答?
虚假的帮助: 面向结果, 解决当下问题优先
真实的帮助: 面向能力, 领悟学习方法优先
本质区别: 如果将来不再提供帮助, 学生能否独立解决类似的问题?
真实案例: 学生A询问某报错信息
躺平容易坚持难, 但如果你能坚持下来, 你就可以得到脱胎换骨的提升
这些做法和大家在课堂上接受的观念差别很大, 甚至是矛盾的
大家也处于血气方刚的年纪, 有自己的想法
为躺平找理由也很容易
我们来玩真的: 在线调试考核, 通过才能获得流片机会
这和大家将来遇到的实际问题非常接近
一生一芯不仅仅是训练大家编写RTL
大部分同学并不会感到舒适