前端工程师设计项目
这些项目不是阅读题,而是从规格、RTL、验证到性能分析的完整训练。建议按顺序完成,并为每个项目保留设计文档、测试、波形和评审记录。
项目 1:三级预测流水控制器
实现不含具体预测算法的 s0~s3 流水壳,支持 ready/valid、下游 backpressure、s2/s3 override、backend redirect。要求:
- 写明同拍事件优先级;
- 随机 ready/redirect 测试;
- assertion 证明 flush 后旧事务不输出;
- 统计不同 stall 原因。
项目 2:可恢复全局历史
实现环形历史缓冲和多种折叠历史。建立简单移位 reference model,随机验证正常推进、每块多分支、指针绕回和 redirect 恢复。
项目 3:简化 FTB + bimodal predictor
支持一个取指块内两个条件分支和一个 tail jump。定义 target 编码、替换、更新、写旁路与 false hit。用真实 branch trace 评估命中率和 MPKI。
项目 4:FTQ
至少实现 BPU enqueue、IFU consume、backend redirect、commit update 四个独立进度指针。给出满空证明和同拍 enqueue/commit 行为。
项目 5:简化 VIPT ICache
实现参数化 set/way、同步 SRAM、TLB 延迟模型、一个或多个 MSHR、同 line miss 合并和 flush。加入 ECC 错误注入接口。
项目 6:前端性能探索
使用 trace 或仿真比较以下方案:
- 不同 FTB/TAGE 容量;
- s2 与 s3 更准确预测的覆盖收益;
- FTQ/IBuffer 深度;
- ICache 容量、way 与 MSHR 数;
- 不同 redirect latency。
最终交付一份架构评审:基于工作负载数据给出推荐配置,解释频率、面积、功耗和性能权衡,并列出方案失效的 workload 类型。
毕业标准
能独立完成项目 4 或 5,并在随机验证与至少一个真实 workload 上解释结果,才算达到前端模块工程师的入门水平;能完成项目 6 并提出下一版方案,才开始具备微架构工作能力。