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: