ELI5, if it takes nearly thirty years to count to a billion, one second at a time, how are humans able design complex CPUs and Graphics cards containing multiple billions of transistors?



ELI5, if it takes nearly thirty years to count to a billion, one second at a time, how are humans able design complex CPUs and Graphics cards containing multiple billions of transistors?

In: Engineering

Our current silicon design are generally speaking an evolution of the designs that started in the 70s. When Intel or AMD release a new line of processors, it’s not 100% new design from scratch… Think of it like a car, if Ford had to start from scratch, designing the combustion engine, the drive train, the steering etc they’d never managed to release 50 new cars a year, but they don’t. The reuse existing designs with minor improvements.

In addition, people aren’t designing these chips with pen and paper, there is very advanced software tools for developing silicon chips and modelling their behaviour, their thermal profile etc.

Design is done at a higher level than traces and gates, there are memory modules and logic modules composed of many many transistors themselves, and these can be moved around on the chip layout as a single structure.

We’re also not counting the transistors one second at a time; the clock in a modern processor operates at multiple Gigahertz. It can effectively count to a billion in less than a second.

Multiple people all working on different blocks

CPUs aren’t laid out by one dude just going as fast as he can, they’re modular designs. A CPU will have a cache, cores, memory controllers. The cores will have instruction units, adders, multipliers, and other blocks.

There will be design teams for each blocks, and as each block is upgraded its design just gets pasted into the bigger structure where it fits. A team might optimize a multiplier that has 10000 transistors (~2500 gates), and that adder will be copied into the 8 cores of the CPU so they impacted 80,000 transistors without having to go through and count them all

GPUs are even more of a copy paste job. While a CPU might have 8 large cores that match, a GPU will have thousands of small cores that are grouped into medium sized blocks and those blocks are connected in large groups so adding a few transistors to the design for the small core can add tens of thousands to the overall chip

For CPUs these days, the biggest driver of transistor count is CPU cache. [You can see it on the labeled die images](https://images.anandtech.com/reviews/cpu/intel/IvyBridge/review/Ivy-Bridge_Die_Label.jpg) how big of an area the L3 cache takes up, and that’s from Ivy Bridge with just 8 MB of cache. It was 27% of the 1.4 Billion transistors on the chip. Something like a 10th gen intel chip with 20 MB of cache will have an even larger percentage of the die dedicated to it.

Because they’re not designed transistor by transistor. In much the same way that software is written using programming languages, not 1s and 0s, logic circuits can be designed using a [hardware description language](https://en.wikipedia.org/wiki/Hardware_description_language) to describe the logic at a high level, which can then be “compiled” into an actual circuit diagram using software.

Also, a CPU or graphics card is made up of many different sub-units, which are themselves made up of different components. For example, in an SRAM memory circuit, you’ll have a particular circuit to store 1 bit, which is then repeated millions of times to be able to store megabytes of data. That’s a lot of transistors, but most of it is just copies of the same circuit (there’s also addressing logic to allow data to be read/written, of course).

To design a CPU, the designers determines the higher level design, meaning the registers, memory, arithmetic unit, and other parts, and how they should be connected. This design is then coded in some hardware description language like VHDL and similar to how a compiler takes code and turns it in to a program, the VHDL environment takes the VHDL and generates a netlist and creates the lower level circuit design.

You’ve gotten multiple correct responses, but not all in one place. There’s not a single answer, there are several:

Cut and paste.
Multiple teams of people.
Using software tools to do much of the work.
Reuse of previous designs.