UN: how to computer
55
content/.obsidian/workspace.json
vendored
@@ -4,11 +4,11 @@
|
|||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "929b0fcada89ed0e",
|
"id": "da1c1c5ba8d6b94f",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "28c9848f88828495",
|
"id": "ab03f7100c1ce0fb",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
@@ -20,18 +20,6 @@
|
|||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "index"
|
"title": "index"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "5b5978f088ca6b22",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "image",
|
|
||||||
"state": {
|
|
||||||
"file": "notes/ready/how_to_computer/input_selector.png"
|
|
||||||
},
|
|
||||||
"icon": "lucide-image",
|
|
||||||
"title": "input_selector"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -167,7 +155,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 249.5
|
"width": 200
|
||||||
},
|
},
|
||||||
"left-ribbon": {
|
"left-ribbon": {
|
||||||
"hiddenItems": {
|
"hiddenItems": {
|
||||||
@@ -181,26 +169,22 @@
|
|||||||
"table-editor-obsidian:Advanced Tables Toolbar": false
|
"table-editor-obsidian:Advanced Tables Toolbar": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "b73f137a8a755c19",
|
"active": "ab03f7100c1ce0fb",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"notes/ready/how_to_computer/input_selector.png",
|
"3bit_decoder.png",
|
||||||
"notes/ready/how_to_computer/index.md",
|
"notes/ready/how_to_computer/index.md",
|
||||||
"notes/ready/how_to_computer/bit_switch.png",
|
"decoder.png",
|
||||||
"notes/ready/how_to_computer/bus.png",
|
"Pasted image 20250224154920.png",
|
||||||
"notes/ready/how_to_computer/signed_negator.png",
|
"Pasted image 20250224154916.png",
|
||||||
"notes/ready/how_to_computer/full_adder_8bit.png",
|
"transistor_latch.png",
|
||||||
"notes/ready/how_to_computer/full_adder.png",
|
"8bit_register.png",
|
||||||
"notes/ready/how_to_computer/half_adder.png",
|
"notes/ready/memory/index.md",
|
||||||
"notes/ready/binary_operations/index.md",
|
|
||||||
"notes/ready/how_to_computer/image.png",
|
|
||||||
"notes/ready/how_to_computer/OR_gates_big.png",
|
|
||||||
"notes/ready/how_to_computer/image4.png",
|
|
||||||
"TODO.md",
|
|
||||||
"notes/ready/transistors/index.md",
|
|
||||||
"notes/ready/diodes.md",
|
|
||||||
"notes/drafts/nvim.md",
|
|
||||||
"notes/drafts/linux/index.md",
|
|
||||||
"posts/notes-update.md",
|
"posts/notes-update.md",
|
||||||
|
"notes/ready/how_to_computer/signed_negator.png",
|
||||||
|
"notes/ready/how_to_computer/input_selector.png",
|
||||||
|
"notes/ready/how_to_computer/image49.png",
|
||||||
|
"notes/ready/how_to_computer/image47.png",
|
||||||
|
"notes/ready/how_to_computer",
|
||||||
"_Templates/post.md",
|
"_Templates/post.md",
|
||||||
"_Templates/note.md",
|
"_Templates/note.md",
|
||||||
"posts/personal-web.md",
|
"posts/personal-web.md",
|
||||||
@@ -208,15 +192,20 @@
|
|||||||
"posts/local-llm.md",
|
"posts/local-llm.md",
|
||||||
"posts/nix-starter-guide.md",
|
"posts/nix-starter-guide.md",
|
||||||
"posts/dotfiles.md",
|
"posts/dotfiles.md",
|
||||||
|
"notes/drafts/linux/index.md",
|
||||||
|
"TODO.md",
|
||||||
"notes/ready/flask.md",
|
"notes/ready/flask.md",
|
||||||
"notes/ready/gdb.md",
|
"notes/ready/gdb.md",
|
||||||
"notes/ready/git.md",
|
"notes/ready/git.md",
|
||||||
"notes/ready/http.md",
|
"notes/ready/http.md",
|
||||||
"notes/ready/html.md",
|
"notes/ready/html.md",
|
||||||
|
"notes/ready/binary_operations/index.md",
|
||||||
"notes/ready/firewall.md",
|
"notes/ready/firewall.md",
|
||||||
"drafts/nvim.md",
|
"drafts/nvim.md",
|
||||||
"drafts/rust.md",
|
"drafts/rust.md",
|
||||||
"drafts/swift.md",
|
"drafts/swift.md",
|
||||||
"drafts/TODO.md"
|
"drafts/TODO.md",
|
||||||
|
"drafts/Untitled.md",
|
||||||
|
"drafts/hardware-tools.md"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
BIN
content/3bit_decoder.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
content/8bit_register.png
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
content/Pasted image 20250224154916.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
content/Pasted image 20250224154920.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
content/decoder.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@@ -530,7 +530,105 @@ A Bus is useful to simplify wiring. One bit controls which input should be selec
|
|||||||
|
|
||||||
![[bus.png]]
|
![[bus.png]]
|
||||||
|
|
||||||
### ASCII
|
### 1 Bit of Memory
|
||||||
|
|
||||||
|
There are many ways to achieve a bit of memory.
|
||||||
|
|
||||||
|
#### Using Transistors and a Tick Delay
|
||||||
|
|
||||||
|
The oval component is a delay. This replaces the concept of a clock, however, in an electronic circuit, the save and load states are attached to a clock.
|
||||||
|
|
||||||
|
![[transistor_latch.png]]
|
||||||
|
|
||||||
|
#### AND-OR Latch
|
||||||
|
|
||||||
|
TODO!!!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 8bit Register
|
||||||
|
|
||||||
|
After obtaining one bit of memory, a byte of memory can be built.
|
||||||
|
|
||||||
|
![[8bit_register.png]]
|
||||||
|
|
||||||
|
### Binary Decoder
|
||||||
|
|
||||||
|
A decoder splits two states of a bit into two separate outputs.
|
||||||
|
|
||||||
|
![[decoder.png]]
|
||||||
|
|
||||||
|
### 3bit Decoder
|
||||||
|
|
||||||
|
![[3bit_decoder.png]]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Remembering Data
|
||||||
|
|
||||||
|
An `OR` gate could be used to store a single bit.
|
||||||
|

|
||||||
|
If the input `A` is changed to `1`, the `OR` gate will output `1`, and then receive it.
|
||||||
|

|
||||||
|
Even after the input `A` is set to `0`, the output does not change. The `OR` gate "remembers" that, at one point in the past, the `A` input was set to `1`.
|
||||||
|

|
||||||
|
The inverse can be done with an `AND` gate.
|
||||||
|

|
||||||
|
To remember either a `1` or a `0`, we can do the following:
|
||||||
|
|
||||||
|
|
||||||
|
### AND-OR LATCH
|
||||||
|
|
||||||
|
The input `A` sets the output to `1`, and the input `B` sets the output to `0`. This circuit is able to store a bit of information, while powered on, even after both inputs are set to `0`.
|
||||||
|
A slightly more advanced and intuitive version can be built as follows:
|
||||||
|

|
||||||
|
|
||||||
|
### GATED LATCH
|
||||||
|
|
||||||
|
The input `A` is the value to store, and when `B` is set to `1`, the value is stored.
|
||||||
|
This is not the only way to store data using logic gates, but it is one of the simplest.
|
||||||
|
|
||||||
|
## Registers
|
||||||
|
|
||||||
|
A single bit isn't very useful, so we can use the previous circuit to create an 8bit register.
|
||||||
|

|
||||||
|
|
||||||
|
## Binary Decoder
|
||||||
|
|
||||||
|
Select which circuit to activate, depending on the task at hand.
|
||||||
|

|
||||||
|
|
||||||
|
## RAM
|
||||||
|
|
||||||
|
Registers don't scale well, however, as storing a large amount of data would require millions of wires.
|
||||||
|
We can organize latches in a matrix instead of a long, horizontal line.
|
||||||
|

|
||||||
|
To access a specific latch, binary decoders can be used.
|
||||||
|

|
||||||
|
This way, a single, short memory address can select any latch in the matrix.
|
||||||
|
|
||||||
|
### Reading and Writing to the Matrix
|
||||||
|
|
||||||
|
We can modify the latch to reduce the amount of wires needed.
|
||||||
|

|
||||||
|
This new latch uses the same wire for both input and output.
|
||||||
|

|
||||||
|
This circuit would store the same value on every latch, which isn't useful. With some modifications, however, we can use the memory address to select which latch to modify.
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
### Storing Bytes Instead of Bits
|
||||||
|
|
||||||
|

|
||||||
|
In this example, we can provide 1 byte of information, a `write` or `read` signal, and a memory address. Since we are storing a full byte, the same memory address applies for all 8, single bit circuits.
|
||||||
|
This configuration is more commonly known as **RAM**.
|
||||||
|
To make it easier to understand, we can abstract these concepts further.
|
||||||
|

|
||||||
|
The largest the Address Bus is, the more bits can be managed. This is why a 32bit CPU can't manage more than 4 GB of RAM.
|
||||||
|

|
||||||
|
This kind of RAM is Static RAM (**S**RAM), which uses many transistors, making it faster, but more expensive to produce than **D**RAM.
|
||||||
|
|
||||||
|
## ASCII
|
||||||
|
|
||||||
Binary can also be used to represent characters.
|
Binary can also be used to represent characters.
|
||||||
|
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
---
|
|
||||||
title: Memory
|
|
||||||
description:
|
|
||||||
draft: false
|
|
||||||
tags:
|
|
||||||
- computer-science
|
|
||||||
author: TrudeEH
|
|
||||||
showToc: true
|
|
||||||
---
|
|
||||||
|
|
||||||
## Remembering Data
|
|
||||||
|
|
||||||
An `OR` gate could be used to store a single bit.
|
|
||||||

|
|
||||||
If the input `A` is changed to `1`, the `OR` gate will output `1`, and then receive it.
|
|
||||||

|
|
||||||
Even after the input `A` is set to `0`, the output does not change. The `OR` gate "remembers" that, at one point in the past, the `A` input was set to `1`.
|
|
||||||

|
|
||||||
The inverse can be done with an `AND` gate.
|
|
||||||

|
|
||||||
To remember either a `1` or a `0`, we can do the following:
|
|
||||||

|
|
||||||
|
|
||||||
### AND-OR LATCH
|
|
||||||
|
|
||||||
The input `A` sets the output to `1`, and the input `B` sets the output to `0`. This circuit is able to store a bit of information, while powered on, even after both inputs are set to `0`.
|
|
||||||
A slightly more advanced and intuitive version can be built as follows:
|
|
||||||

|
|
||||||
|
|
||||||
### GATED LATCH
|
|
||||||
|
|
||||||
The input `A` is the value to store, and when `B` is set to `1`, the value is stored.
|
|
||||||
This is not the only way to store data using logic gates, but it is one of the simplest.
|
|
||||||
|
|
||||||
## Registers
|
|
||||||
|
|
||||||
A single bit isn't very useful, so we can use the previous circuit to create an 8bit register.
|
|
||||||

|
|
||||||
|
|
||||||
## Binary Decoder
|
|
||||||
|
|
||||||
Select which circuit to activate, depending on the task at hand.
|
|
||||||

|
|
||||||
|
|
||||||
## RAM
|
|
||||||
|
|
||||||
Registers don't scale well, however, as storing a large amount of data would require millions of wires.
|
|
||||||
We can organize latches in a matrix instead of a long, horizontal line.
|
|
||||||

|
|
||||||
To access a specific latch, binary decoders can be used.
|
|
||||||

|
|
||||||
This way, a single, short memory address can select any latch in the matrix.
|
|
||||||
|
|
||||||
### Reading and Writing to the Matrix
|
|
||||||
|
|
||||||
We can modify the latch to reduce the amount of wires needed.
|
|
||||||

|
|
||||||
This new latch uses the same wire for both input and output.
|
|
||||||

|
|
||||||
This circuit would store the same value on every latch, which isn't useful. With some modifications, however, we can use the memory address to select which latch to modify.
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
### Storing Bytes Instead of Bits
|
|
||||||
|
|
||||||

|
|
||||||
In this example, we can provide 1 byte of information, a `write` or `read` signal, and a memory address. Since we are storing a full byte, the same memory address applies for all 8, single bit circuits.
|
|
||||||
This configuration is more commonly known as **RAM**.
|
|
||||||
To make it easier to understand, we can abstract these concepts further.
|
|
||||||

|
|
||||||
The largest the Address Bus is, the more bits can be managed. This is why a 32bit CPU can't manage more than 4 GB of RAM.
|
|
||||||

|
|
||||||
This kind of RAM is Static RAM (**S**RAM), which uses many transistors, making it faster, but more expensive to produce than **D**RAM.
|
|
||||||
BIN
content/transistor_latch.png
Normal file
|
After Width: | Height: | Size: 85 KiB |