芯片设计预备役
同学你好,我也是体系结构方向,在几个大厂做过面试官。我的建议是:用开源项目作为核心,但一定要有自己的“增量工作”。
单纯复现(把开源项目跑通)加分有限,因为这只算“验证了别人的工作”。但如果你能在理解透彻的基础上进行有意义的修改和优化,那这个项目的分量就非常重了。IBM这个L2 Cache本身就是一个非常完整的教学和研究样本,代码规范和复杂度都是工业级的。你通过这个项目展示的是“理解和改造复杂系统”的能力,这正是企业需要的。自己从头写一个简单的Cache,虽然能体现对原理的理解,但深度和复杂度往往不够,面试官几个深入的问题就可能问到底了。
对于你提到的修改,替换策略和ECC都是很好的方向。但要注意,不要只做功能实现,一定要有量化分析。比如,把替换策略从LRU改成你设计的某种策略后,在某个特定负载trace下,miss率降低了多少?在FPGA上实现后,频率、面积、功耗的变化是怎样的?这些数据才是硬通货。
面试官考察的维度,除了楼上说的时序、资源、协同,我特别看重两点:
一是问题定位和调试能力。你可以准备一个故事:在实现过程中遇到一个最难调的bug是什么?现象是什么?你是怎么一步步缩小范围、提出假设、并用仿真或在线调试最终定位到根本原因的?这个过程能完美体现你的工程思维。
二是权衡取舍(Trade-off)的意识。比如,你增加ECC功能,必然会增加延迟和面积。你是如何决策的(比如是每字都加ECC,还是只对Tag或数据部分加)?在满足可靠性的前提下,如何最小化开销?这种思考是高级工程师的核心素质。
最后提个醒:确保你对Chisel和它生成的Verilog都有一定理解,面试可能会问到层次。这个项目经历绝对够格,好好打磨细节,祝你成功。
