最近在 LinkedIn 讀到了 Jonathan Combs (Intel Atom 架構師)為嚮往處理器架構師的學生所撰寫的文章,一開頭就是讓我覺得很有意思的話:
Very few folks "start" in architecture. For most, it's an earned position. If you get lucky coming straight out of school as an MS or PhD, it's usually due to being within a very specific computer architecture centered research group/program at select universities. If you have to ask if your university is one of those select few, then the answer is "probably not".
字面上看來,處理器架構部門是非常難進去的,除非你在學生時期便在傳統計算機架構名校做過研究(UT Austin, UMich, UIUC, UC Berkley, Cambridge, etc)據我所知,很多在台灣的架構師跟老師都是從 UMich 回來的。文章的下一段便解釋其困難之處:
With the Atom (E-core) team, our performance architects spend most their time in the C/C++ timing model and rely on both their excellent programming skills (lots of CS classes are a must) and their understanding of modern cpu microarchitecture. We additionally have unit/cluster level microarchitects within our architecture team who spend their time thinking in boolean/Verilog and working mainly with the design team. Every one of our microarchitects earned their position as essentially being world class designers who showed acumen for solving large scale microarchitectural problems in the RTL. They were technical leads in their design teams with a penchant for understanding performance and capable of moving to our architecture team to drive the microarchitectural evolution of the CPU.
除了本身的程式設計的能力要優秀外,對處理器的微架構必須非常清楚,教科書上的知識僅僅是門檻。而當代微架構的知識是需要長時間去累積的,試想一顆處理器的設計累積多少人的心血,更別說經歷了多少個世代。短時間拾起這些知識的能力需得要多年的經驗,更別說為下一代處理器架構提供建議。Jonathan 給這些學生具體的建議如下:
If you're hoping to be in one of these positions someday, I suggest you first work your way anywhere into a world class CPU design\validation team. Every place is a great place to start! There are often paths through validation into performance, design into performance, validation into design, as well as paths from design to microarchitecture. Plus there's a ton of microarchitecture that happens within the design organization itself and not micro-managed by "architects". The ideal front-end RTL design team is filled with expert microarchitects.
從一個接近你的領域的職缺開始了解處理器微架構的。例如:電機系的學生可以從 Designer 開始,資工系的學生可以從 Performance Validation 或 Design Verification 開始。這些都是很好的地方開始累積對微架構的知識。
我很幸運地在研究所時期,指導老師讓我去為 RISC-V Vector Extension 開發指令集模擬器及設計處理器架構,並為其開發效能模型。也因為這個經歷,讓我錄取了 SiFive 的處理器架構部門,得以一窺產業界是如何做事的。以下是我在 SiFive 四年的經歷,希望能讓更多人多了解處理器架構部門。