How does one become a computer architect? What type of education and knowledge does one need for this type of job? Is a Ph.D required? What are the roles that need to be filled in computer architecture?
Background: I was in the architecture group at Nvidia Bangalore for a few years before I quit to pursue an MS in Computer Architecture at Wisconsin-Madison. Now, I am a performance architect at Oracle. I agree with most of what has already been said in the prior answers. You need to be in the right place at the right time to get into an architecture group. In Oracle for example, there is a team of 1200 engineers in Micro-Electronics group, but only 13 engineers in the Performance Architecture group. To get into this group, you would need a PhD from a top architecture school and/or work experience that is extremely relevant to the company's focus. A PhD is not a sufficient condition to get in contrary to what Dan might think. Tens of architecture students graduate from the top universities every year, but there are only a handful of architecture positions open every year. There are different kinds of architects as has been pointed out as well. If micro-architecture is your cup of tea, then the best way is to start with a verif/design role in a RTL group. After a few years, you will understand the guts of the unit well enough to actually suggest meaningful changes to the design. This means that you will take a few years before you can make a dent to the architecture of the unit. The downside is that your focus is still extremely narrow. With the exception of the interactions of your unit with other units, you will still know very little about the rest of the system. In my own case, I am passionate about learning all about the system. Since a high end processor today is almost as (if not more complicated) than designing a rocket ship, this can mean a lifetime of learning. Getting into performance architecture is great starting point for this. Since you build simulators and models to predict the performance of a future processor, you can abstract away a tonne of micro-architectural details in the model. You can also simulate a couple of orders of magnitude more of the workload on the performance simulator than is possible from the RTL simulator. This allows you to be in a unique position to evaluate the design from a performance standpoint that even the designers don't have access to. Even more useful is that fact that you can experiment at the stage of the project where there is no RTL since there is no specification. This gives you the power to infuence the project during the product inception stage. It should be said that a detailed performance simulator that correlates well with the RTL also takes several years to get right. But once you get that out of the way, you can really do amazing things with the simulator by performing what if experiments and giving feedback to the designers on key proposals. Often, you are in a position to identify bottlenecks in the system and make proposals to enhance the design. Something like that would ordinarily take several years if you go through the traditional micro-arch route. Finally, in order to be a successful architect, I would say that you need a undying thirst to learn more and dip your hands in as many different challenges as possible. Apart from understanding the processor design on some level, you also need to understand the software stack and its interaction with hardware. You can also expand your scope further to understand the interactions of the processor with other system level aspects like network, I/O, virtualization, scaling etc.Regardless of the route you take to becoming a computer architect, it can be extremely fulfilling role if you have the patience to persevere.