(밑바닥부터 만드는 컴퓨팅 시스템 2판, 인사이트(insight), 2023)을 학습하고 개인 학습용으로 정리한 내용입니다.
- 데이타 플립-플롭(data filp-flop, DFF)
DFF는 Chapter 3에서 소개하는 순차 칩 중 가장 기초적인 칩이다.
DFF 입력에 1-bit 값을 넣으면 DFF의 상태가 이 값으로 설정되고, 다음 시간 단위에 이 값을 출력한다.
아래 그림에서 첫 번째 주기(Time 1)에서는 이전 주기 입력이 없으므로 DFF 출력이 없다. 그 뒤로는 이전 시간 입력이 현재 시간의 출력이 된다.
입력 : in
출력 : out
기능 : out(t+1) = in(t)
- 1-bit 레지스터(register)
1-bit 정보(0 또는 1)를 저장한다.
- 16-bit 레지스터(register)
16-bit 값을 처리한다는 점을 제외하고는 1-bit 칩과 동일하다.
입력 : in[16], load
출력 : out[16]
기능 : if load(t) then out(t+1) = in(t)
else out(t+1) = out(t)
- 임의 접근 메모리(Random Access Memory, RAM)
n개의 register로 구성된다.
RAM은 각 레지스터마다 특정 주소를 할당하고, 이 주소를 이용해 레지스터를 읽고 쓴다. 또한 선택된 메모리 레지스터에 접근하는 시간이 즉각적이고, RAM의 크기나 레지스터 주소와는 무관한다.
입력 : in[16], load, address[k] ( \(k = log_{2}n \) )
출력 : out[16]
기능 : out은 address로 지정된 메모리 위치에 저장된 값을 출력한다.
만약 load ==1 이면, address로 지정된 메모리 위치의 값이 in으로 설정된다.
불러온 값은 다음 시간 단위부터 out으로 출력된다.
- 프로그램 카운터(program counter, pc)
매 시간 단위마다 값을 1씩 증가시킨다.
입력 : in[16], load, inc, reset
출력 : out[16]
기능 : if reset(t) then out(t+1) = 0
else if load(t) then out(t1) = in(t)
else if inc(t) then out(t+1) = out(t) + 1 (정수 덧셈)
else out(t+1) = out(t)
pc를 제대로 활요하려면 load, inc, reset 중 하나 이상은 활성화되어야 한다.
load | inc | reset | |
PC 재설정 | 0 | 0 | 1 |
매 시간 단위마다 +1 | 0 | 1 | 0 |
PC 값을 in으로 설정 | 1 | 0 | 0 |
'밑바닥부터 만드는 컴퓨팅 시스템 (Nand to Tetris)' 카테고리의 다른 글
[Chapter 4] 기계어 (Machine Language) (0) | 2024.02.20 |
---|---|
[Chapter 3] project 03 (0) | 2024.02.18 |
[Chapter 3] Memory (0) | 2024.02.14 |
[Chapter 2] project 02 (0) | 2024.02.09 |
[Chapter 2] 산술 논리 장지 (Arithmetic Logic Unit, ALU) (0) | 2024.02.09 |