Let’s start with two people A and B. A and B work together to build this system that we refer to as computer.
A focused on building the hardware and B focused on building the software. But before they set out to do their respective tasks they both came to an agreement which is that they will understand the same set of commands. B agreed that no matter what software they build, they will figure out a way to translate it to these commands while A agreed that they will build the necessary physical components (transistors, wires, etc. etc.) to make these commands work.
So both A and B went about doing their tasks independent of each other. This is only possible because of the agreement they have. Let’s call the set of commands that they agreed upon as Super Important Agreement (or SIA).
B focused on understanding what the user wants and focus on developing the necessary software, but as the user requirements become more and more complicated (for example, your phone is now expected to do the same tasks that your laptop/PC does while having different capabilities) B had three issues: 1. how do I gets these programs to share the resources in an efficient and fair manner, 2. how do I translate these huge number of programs into SIA and 3. how do I write newer programs to meet the user expectations.
The thing is B had to do all of these simultaneously. So B hired C,D and E to do these tasks.
C agreed to take the responsibility of converting the programs to SIA and the only caveat was that the programs had to follow the rules set out by C.
D agreed to take the responsibility of making sure that all these programs co-existed together and shared resources fairly and efficiently.
E agreed to take the responsibility of writing the newer programs (much to C and D’s annoyance).
Now coming back to A, A had to figure out how to convert Silicon into the necessary hardware that could implement SIA.
So A had to somehow figure out 1. how to convert a metal like Silicon to meet the user needs (e.g. shrink the size) 2. the structure of the building blocks to implement SIA.
A hired two guys F and G. F agreed to take the responsibility of the physical process i.e. moulding the silicon to meet the user demands. G agreed to take the responsibility of the figure out the building blocks. F and G work on the understanding that G would provide a basic surface where F could come and sketch out the structure of the building blocks. This is similar to how we build Legos. You have an instruction booklet and then a base plate. The instruction booklet tells you how to put together the building blocks while the base lets you physically put them together.
F started using physical switches as the building blocks but they were huge and failed frequently so then F came up with the idea of this basic building block called transistor. The beauty of this block was that it could implement the functionality of these huge physical switches but at the same time allow G to shrink or expand it as they wanted and it had an added bonus: The smaller you shrink the transistor, the faster it becomes. So everyone agreed that from now on we ll start using transistor.
So F used transistors as the basic building block and by putting these blocks in a specific order they could implement the SIA. They would figure the structure and the physical location for each of the components and would then communicate it to G. (Think of this as the instruction booklet that comes with the Lego set).
G in the meantime focused on preparing the base layer and then using the instructions provided by F it puts the blocks in the specified order and voila, you have your physical hardware.
A then gets the physical hardware from G and B then gets the software from C,D and E and puts it on the hardware.
A -> Intel, Apple, ARM, AMD
B -> Windows, Apple, Linux
C -> Compiler (GCC,python) and the rules that C sets out is your programming languages
D -> Operating System (Windows, Mac, Ubuntu etc.)
E -> Software applications (Video Games, Word editor, etc.)
F -> Physical Design (Synopsys, Cadence)
G -> Backend physical design/Foundry (TSMC, UMCIP)
SIA -> Instruction Set Architecture (ISA) e.g. x86, arm, RISCV
Latest Answers