Autosave: 2022-12-18 13:00:05

This commit is contained in:
thomasabishop 2022-12-18 13:00:05 +00:00
parent 44e4f19f54
commit d187579bff
3 changed files with 46 additions and 5 deletions

View file

@ -6,3 +6,22 @@ tags: [abstraction, modules]
---
# 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:
![](/img/hardware-abstraction-hierarchy.png)

View file

@ -0,0 +1,22 @@
---
categories:
- Logic
tags: [propositional-logic, algebra]
---
# Boolean algebra
Many of the laws that obtain in the mathematical realm of algebra also obtain for Boolean expressions.
## The Commutative Law
$$
x \land y = y \land x \\
$$
$$
x \lor y = y \lor x
$$
## The Associative Law

View file

@ -1,7 +1,7 @@
---
categories:
- Mathematics
tags: [logic]
- Logic
tags: [logic, propositional-logic]
---
# Boolean functions
@ -14,9 +14,9 @@ $$
Here is a work through where $f(1, 0, 1)$:
- The first disjunction : $ \lnot(x) \land z $ is false because $x$ is 1 and $z$ is 1
- The second disjunction: $x \land y$ is true because $x$ is 1 and $y$ is 1
- The overall function returns true because the main connective is disjunction and one of the disjuncts (the second) evaluates to 1. Thus the output is 1.
- The first disjunction : $ \lnot(x) \land z $ is false because $x$ is 1 and $z$ is 0
- The second disjunction: $x \land y$ is false because $x$ is 1 and $y$ is 1
- The overall function returns false because the main connective is disjunction and both of its disjuncts are false
We can compute all possible outputs of the function by constructing a [truth-table](/Logic/Propositional_logic/Truth-tables.md) with each possible variable as the truth conditions and the output of the function as the truth value: