eolas/zk/Hardware_abstraction_and_modularity.md

33 lines
1,021 B
Markdown
Raw Normal View History

2022-12-18 12:30:04 +00:00
---
2023-02-10 18:22:04 +00:00
tags: [nand-to-tetris]
2022-12-18 12:30:04 +00:00
---
# Hardware abstraction and modularity
2022-12-18 13:00:05 +00:00
In computer architecture we deal with complexity by breaking the system into
**modules**. For each module we distinguish **_abstraction_** from
**_implementation_**.
2022-12-18 13:00:05 +00:00
<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.
2022-12-18 13:00:05 +00:00
> 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.
2022-12-18 13:00:05 +00:00
[N.Nisan, S.Schoken. 2021. **The Elements of Computing Systems** (Second
Edition)]
2022-12-18 13:00:05 +00:00
The design of the diagram below emphasises the role of abstraction and
modularity in the movement from transistors to chips:
2022-12-18 13:00:05 +00:00
2024-02-16 16:14:01 +00:00
![](/img/hardware-abstraction-hierarchy.png)