“一生一芯”回顾
本次课内容:
刚毕业的老博士, 但参与教学的时间比读研究生还长(一些) 😂
博士方向研究指令集模拟器和二进制翻译
尝试课堂教学, 大家应该会有更好的学习体验
B站直播时间: 每周六19:00~21:00
大家都没流过片, 也没设计过完整的RISC-V处理器
和学生一起边做边学, 师生比例3:1😂
尝试小范围推广, 学生从零开始设计
项目组认识到不少问题, 尤其是学生欠缺独立解决问题的意识和能力
构建大规模人才培养流程
并不是讲义内容不完善, 而是为了培养独立解决问题的意识和能力
🙃
根据第三期的情况改进
不过迫于毕业压力, 我三月底就🕊了
加入PA, 学习内容 “丰富”多了
学习计划(部分)
S阶段学习成果(部分)
这一期尝试课堂教学, 我的出镜率变高了
但请不要忘记在后面支撑 “一生一芯”的老师和同学:
欢迎加入实习或工作(投简历至opensource-talents@pcl.ac.cn)
一般作为MCU使用, 无需配备操作系统(放不下 😂)
46条指令, 每条8位(指令集手册)
是个多周期处理器
1981年, IBM PC机发售, 搭载Intel 8088处理器(8位数据总线版本的8086)以及微软的MS-DOS操作系统
约256条指令, 指令长度1~6字节(指令集手册)
通过指令队列实现总线接口单元和执行单元的并发工作(流水)
并发工作的时序图(8086参考手册)
80186: 面向嵌入式系统, 主频6MHz~25MHz
80286: 面向多用户多任务场景, 主频4MHz~25MHz
80286的IPC(instruction per cycle, 同频性能)是8086的两倍以上
并发工作的时序图(80286硬件手册)
初代Microsoft Windows(2021年的一篇纪念博客)
可以在浏览器中借助IBM PC全系统模拟器体验
PC史上的一大里程碑: 第一款32位的(高端)x86 CPU
新功能太高端了, 当时的主流操作系统(16位DOS)几乎用不上
6级流水线, 配备TLB(硬件手册)
当年的旗舰级主板
主频16~100MHz, 但与80386相比, IPC提升了一倍(硬件手册)
搭配Windows 3.x, Wintel联盟进入了成长期
Windows 3.0新增功能:
Windows 3.1新增功能:
Intel发现数字不能注册商标, 于是换了名字
1996年加入了MMX多媒体指令集, 流水线增加为6级(硬件手册)
双发射流水线时空图
经典RPG游戏
在PA中后期, 你将会在自己的模拟器上运行仙剑
Pentium Pro取得了巨大的商业成功, P6架构及其变种延续了十多年
单核性能挤牙膏, 主频和功耗上不去
处理器空前复杂
Linux 4.17(2018年4月发布)删除了过时处理器的代码
Linux内核包含海量的模块, 交互关系非常复杂
译文: 计算机架构的新黄金时代
有很多新名词?
更重要的两个观念:
“一生一芯”的两种诠释
不过这些是次要的
你也许设计过处理器, 但却不一定知道以下问题的答案
某RTL工程师编写了若干设备寄存器供CPU访问
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
如果你只会写RTL, 大概率会觉得没问题
你也许设计过处理器, 但却不一定知道以下问题的答案
“一生一芯”将用全新的方法和流程, 按计算机发展史的顺序设计处理器
老板分配任务 | 熟练工 | 专业人士 |
---|---|---|
跑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
不仅需要学习很多新知识, 在新环境中使用新工具
还需要锻炼出独立解决问题的意识和能力
更重要的是, 完成观念和心态上的转变
取决于你是否已经完成观念和心态上的转变, 锻炼出独立解决问题的意识和能力
另一个角度: 大家都有潜力完成 “一生一芯”的学习
意义: 让你接受预期的训练, 锻炼出预期的能力
这是需要大家发自内心去认可和执行的: 我们很难约束大家
“凭什么不能参考别人的代码? 我都看懂了啊!”/“能抄对也是本事”
STFW - Search The Friendly Web
RTFM - Read The Friendly Manual
RTFSC - Read The Friendly Source Code
如果你在提问时收到了这些回复, 其背后的含义是:
不是所有问题都值得问
开源社区中的一个真实案例:
一篇参考文章: 什么样的问题我不太想回答?
虚假的帮助: 面向结果, 解决当下问题优先
真实的帮助: 面向能力, 领悟学习方法优先
本质区别: 如果将来不再提供帮助, 学生能否独立解决类似的问题?
真实案例: 学生A询问某报错信息
躺平容易坚持难, 但如果你能坚持下来, 你就可以得到脱胎换骨的提升
这些做法和大家在课堂上接受的观念差别很大, 甚至是矛盾的
大家也处于血气方刚的年纪, 有自己的想法
为躺平找理由也很容易
我们来玩真的: 在线调试考核, 通过才能获得流片机会
这和大家将来遇到的实际问题非常接近
“一生一芯”不仅仅是训练大家编写RTL
大部分同学并不会感到舒适