1,021 B
		
	
	
	
	
	
	
	
			
		
		
	
	
			1,021 B
		
	
	
	
	
	
	
	
| tags | |
|---|---|
  | 
Hardware abstraction and modularity
In computer architecture we deal with complexity by breaking the system into modules. For each module we distinguish abstraction from implementation.
- abstraction
 - what the module does
 - implementation
 - how it does it
 
When using a module as a building block you are to focus exclusively on the module's abstraction, ignoring completely its implementation details.
The abstraction-implementation paradigm helps developers manage complexity and maintain sanity: by dividing an overwhelming system into well-defined modules we create manageable chunks of implementation work and localize error detection and correction.
[N.Nisan, S.Schoken. 2021. The Elements of Computing Systems (Second Edition)]
The design of the diagram below emphasises the role of abstraction and modularity in the movement from transistors to chips:
