Why? If Apple was going this way you can bet they would have already done a significant amount of the work involved. They might even have actual processors running in their labs right now. You don't just get up one morning and decide to make a desktop CPU and start cranking them out a few months later.
[doublepost=1553971465][/doublepost]
Based on your history in the industry, I'm curious if you could provide a list of the people involved from top to bottom and what their responsibilities would be. Also how many people are at each stage. Apple obviously has 100's of engineers working on processors, so I'm really curious how their tasks would be broken down.
I don’t know exactly how Apple has it broken down, but since many of the people there are from AMD or from Intrinsity (which was EVSX which was Exponential’s Texas office), and since I worked at AMD and Exponential, I can guess that it’s staffed more like those places and less like Intel.
Typically you have an architecture team that is responsible for both the high level architecture (how many cores? What kind of external buses? How much cache? How many pipelines? What should the pipelines do?) and for creating a model (typically in a C-based language, or in Verilog) that simulates the design at a high level. They also do performance analysis, etc. (Hint: every proposed change always makes 10% difference).
I’ve been on teams where there is NO single person in charge of that (e.g. Athlon 64) and teams where there are 1 or 2. The full team usually has maybe 10 or 12 people, working on multiple chips at a time.
Then you have a global design team. This team is often responsible for global floorplanning (how big should the blocks be? Where should they be? Where do the on-chip buses go? What should the cell library look like? What do the power rails look like? How big is the chip? What’s the power budget? Etc.).
I’ve done a little of the first job, and a lot of the second job. Global design usually involves a handful of people. Usually these people are also working on other things, too.
They you have physical design. These people translate the architects vision for the various blocks into the actual circuits. We always did this almost entirely by hand (i.e. we didn’t use synopsys design compiler). I wrote many tools to make this easier to do. It involves deciding what logic cells to use to implement the logic, what sizes they should be, and where they should be located. We also have to get the wires in the right places to connect them, add buffers and repeaters, make sure we meet the circuit timing and power requirements, etc. I did a ton of this. In a given core there would be maybe 10 “top level blocks” (e.g. integer-execution, instructions decode, instruction fetch, floating point execute, load/store, etc). Typically one person is in charge of each (I’ve been that person a lot). Within each top level block there are typically multiple sub-blocks. For example. Integer execution may have a multiplier block, adder/shifter blocks, register file block, etc. Each block may have a person in charge. So the entire physical design team is often two dozen or three dozen people.
Then you have people responsible for actually massaging the chip into its final form, layout the polygons in standard cells etc. That could be a half dozen or dozen people.
You also have design verification people who make sure that the chip is logically correct, etc. Another dozen, say.
Again, people are often working on multiple chips at a time, so the numbers can be misleading.