The Making Of A System Architect

It’s time for engineering schools to revamp their curricula to address real-world problems.


I mentor young people from the University of Illinois at Urbana-Champaign, where I got my MSEE. When I talk to them, they tell me they’re applying for chip architecture jobs. But when they graduate with their computer science degrees they all get channeled into verification jobs. Why verification jobs rather than architecture jobs? Because they don’t have a feel for the full architecture. They believe that because they’ve done computer architecture courses they should qualify. But the architecture books they use are the same ones I had 20 years ago. So that information needs updating.

I do think that the chip industry is going through a change. We are now building systems on the chip rather than a functional block. It’s no longer about building a microprocessor. It’s about integrating different chips that used to be on a PCB into a single socket. That socket is the system-on-a-chip.

What makes a good system designer is someone who has an architectural view of the end application. If they don’t understand the intended end, they won’t know how to design something that is suited for that specific application. They’ll make the wrong tradeoffs.

A good architect has a flair for computer architecture, compilers, and data structures. They understand how it all works and what the workloads are. If you talk to anyone who has designed an SoC for server-class machines, they’re not just thinking about a data path and the memory management unit. They are focused at a much higher level. They are thinking about which benchmarks they need to meet and how each benchmark stresses the system.

Most companies, and especially large companies, want to hire an experienced architect who has both breadth and depth. They want someone with a system-level perspective who understands complex subsystems well enough to marry them together. Architects don’t necessarily need critical depth because they can go to experts when needed. But they need to know enough so they can make the right design decisions. If they make a wrong decision in hardware, the impact on the software to support that wrong hardware decision is tremendous. It’s going to kill the performance.

While I believe the universities provide young engineers with the fundamentals they need, there is no substitute for experience when it comes to system architecture. I would like to see schools revamp their curriculum. For example, instead of having students implement a floating point unit, have them bring up some software on FPGAs. This will give them a more system-centric view rather than an EDA-centric one. For the time being, though, we need to invest in the people we have and provide them the tools and experiences that will enable them to become great architects.