맨 왼쪽 PC(Program Counter)는 다음에 실행할 instruction의 주소를 가리키고 있다.
Instruction Memory는 data memory(stack, heap, static)의 아래 부분이다. 일반적으로 알고 있는 '코드' 부분이라고 보면 될 듯 하다.
add $1, $2, $3와 같은 코드가 들어있다.
Instruction Memory와 Register 사이에는 원래 instruction의 의미를 알기 위한 약간의 장치가 있다. (little bit for decoding)
코드에서 사용하는 register를 Registers에서 찾아서 가리킨다.
연산이 필요한 register를 ALU에 input으로 넣어 결과를 얻는다.
$2와 $3가 input으로 들어가서, ALU의 결과값으로 그 합을 받고,
이 결과값을 다시 돌아가서 $1에 저장하게 된다.
맨 위에 있는 MUX는
어떤 값이 새 PC 값이 될 지를 결정한다.
(PC+4 또는 분기 목적지 주소)
가운데에 있는 MUX는
ALU 출력과 데이터 메모리 출력 중 어떤 것을 레지스터에 쓸 지 결정한다.
ALU 출력 : 산술/논리 명령어의 경우
메모리 출력 : 적재 명령어의 경우
맨 아래에 있는 MUX는
ALU의 두 번째 입력을 레지스터 또는 명령어의 변위 필드 중 어디에서 받을 지 결정한다.
레지스터 : 산술/논리, 분기 명령어의 경우
명령어 변위 필드 : 적재 또는 저장 명령어
Information encoded in binary
두 가지 종류의 논리 소자