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/