32 lines
1,021 B
Markdown
32 lines
1,021 B
Markdown
---
|
|
tags: [nand-to-tetris]
|
|
---
|
|
|
|
# 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_**.
|
|
|
|
<dl>
|
|
<dt>abstraction</dt>
|
|
<dd>what the module does</dd>
|
|
<dt>implementation</dt>
|
|
<dd>how it does it</dd>
|
|
</dl>
|
|
|
|
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:
|
|
|
|

|