From Nand to Tetris系列(四)

Chapter 4. Memory

目前我們都沒有考慮關於”時間”,我們假設這些邏輯閘設定一個輸入就馬上產生對應的輸出,
然而實際上,在真實世界中我們需要考慮”時間”。

關於時間有三個問題可以考慮:
1.我們希望可以重複利用硬體:例如for迴圈。
2.我們希望硬體可以紀錄狀態:例如記錄總和。
3.執行速度

實際上為了確保邏輯閘的正確性,會使用時脈(Clock)來同步訊號。

如果邏輯閘的輸出只與當時的輸入有關,這類的邏輯閘稱為”Time-independent Logic”或者”Combinational Logic”。
相對應的,如果輸出與前一個時間(上一個clock)的狀態有關,這類的邏輯閘稱為”Sequential Logic”。

Flip Flops:
透過使用Flip Flops這樣的元件,可以做到紀錄”狀態”,從而建構記憶體之類的Sequential Logic元件。

Memory:
記憶單元可以指多個部分,包含主記憶體、次級記憶體、揮發性/非揮發性記憶體等…
本課程關心的是邏輯層面上的主記憶體(RAM)。
Main Memory: RAM
Secondary Memory: Disks
Volatile/non-volatile Memory

Register:
暫存器是最基礎的記憶單元,本課程使用16-bit寬的暫存器。

Counter:
計數器可以用來指引要執行的指令。
一個計數器需要提供至少三種功能:Reset(設定為0)、Next(加一)、以及Goto(指定)。

本節的作業需要實做其他的chip:
Bit, Register, RAM8, RAM64, RAM512, RAM4K, RAM16K, PC


From Nand to Tetris系列(四)
https://chris-suo.github.io/ChrisComplete/2024/06/28/Nand2Tetris-4/
Author
Chris Suo
Posted on
June 28, 2024
Licensed under