Remove outdated images and metadata from notes; add new styles and plugin configuration

This commit is contained in:
2025-02-17 10:39:58 +00:00
parent 6ab2eec11f
commit 96a868535e
63 changed files with 161 additions and 502 deletions

View File

@@ -1,7 +1,6 @@
---
title: Memory
description:
date: 2025-02-17T08:22:26+00:00
draft: false
tags:
- computer-science
@@ -12,21 +11,21 @@ showToc: true
## Remembering Data
An `OR` gate could be used to store a single bit.
![[image76.png]]
![image76](image76.png)
If the input `A` is changed to `1`, the `OR` gate will output `1`, and then receive it.
![[image77.png]]
![image77](image77.png)
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`.
![[image78.png]]
![image78](image78.png)
The inverse can be done with an `AND` gate.
![[image79.png]]
![image79](image79.png)
To remember either a `1` or a `0`, we can do the following:
![[image80.png]]
![image80](image80.png)
### 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:
![[image81.png]]
![image81](image81.png)
### GATED LATCH
@@ -36,39 +35,39 @@ This is not the only way to store data using logic gates, but it is one of the s
## Registers
A single bit isn't very useful, so we can use the previous circuit to create an 8bit register.
![[image82.png]]
![image82](image82.png)
## Binary Decoder
Select which circuit to activate, depending on the task at hand.
![[image83.png]]
![image83](image83.png)
## 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.
![[image84.png]]
![image84](image84.png)
To access a specific latch, binary decoders can be used.
![[image85.png]]
![image85](image85.png)
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.
![[image86.png]]
![image86](image86.png)
This new latch uses the same wire for both input and output.
![[image87.png]]
![image87](image87.png)
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.
![[image88.png]]
![[image89.png]]
![image88](image88.png)
![image89](image89.png)
### Storing Bytes Instead of Bits
![[image90.png]]
![image90](image90.png)
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.
![[image91.png]]
![image91](image91.png)
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.
![[image92.png]]
![image92](image92.png)
This kind of RAM is Static RAM (**S**RAM), which uses many transistors, making it faster, but more expensive to produce than **D**RAM.