
정답
SELA의 값은 \(01\), SELC의 값은 \(11\) 이다. R3에 저장되는 값은 \((1010)_2\) 이고, 오버플로 비트 \(V\)는 \(V = C_3 \oplus C_4 = \overline{C_3}C_4 + C_3\overline{C_4}\) 로 표현된다.
출제 의도
레지스터 전송 레벨에서 명령어 형식을 해석하고, MUX와 디코더의 선택선 값으로 소스·목적지 레지스터를 지정하는 법을 묻는 문제이다. 또한 2의 보수 표현의 범위를 이용해 오버플로 발생 여부를 판단하고, 캐리 비트들을 이용해 오버플로 플래그를 설정하는 논리식을 구하는 것이 핵심이다.
풀이 과정
명령어 형식은 \( \text{ADD Reg1 Reg2 Reg3} \) 로, \(\text{Reg3} \leftarrow \text{Reg1} + \text{Reg2}\) 를 의미한다. 조건에서 Reg1, Reg2, Reg3는 각각 MUX1, MUX2, 디코더에서 선택된 레지스터 번호라고 했다. 문제에서 수행하려는 연산은 \(\text{R3} \leftarrow \text{R1} + \text{R2}\) 이다.
(1) MUX1은 선택선 SELA \((S_1,S_0)\) 로 4개의 입력 R0, R1, R2, R3 중 하나를 고른다. 그림의 MUX1, 디코더에 입력선 위에 0,1,2,3 이 표시되어 있으므로, 입력 0,1,2,3은 각각 R0, R1, R2, R3에 대응하고, 선택선은 이 번호의 2진수이다. 따라서 R1을 선택하기 위해서는
$$ \text{SELA} = S_1 S_0 = 01 $$
가 되어야 한다.
(2) 디코더는 선택선 SELC \((D_1,D_0)\) 로 출력선 0,1,2,3을 선택하고, 각각 R0, R1, R2, R3의 Load에 연결되어 있다. 목적지 레지스터는 R3이므로 출력 3이 선택되어야 하고,
$$ \text{SELC} = D_1 D_0 = 11 $$
이 된다.
(3) 이제 실제 덧셈을 한다. 레지스터 값은 \(\text{R1} = (0110)_2\), \(\text{R2} = (0100)_2\) 이다. ALU에서 4비트 덧셈을 수행하면,
$$ \begin{array}{cccccc} & C_4 & C_3 & C_2 & C_1 & C_0 \\ & & & & & 0 \\ & 0 & 1 & 1 & 0 & \text{(R1)}\\ +& 0 & 1 & 0 & 0 & \text{(R2)}\\ \hline & 0 & 1 & 0 & 1 & \text{(캐리)} \\ & 1 & 0 & 1 & 0 & \text{(합)} \end{array} $$
계산 과정을 비트별로 쓰면 다음과 같다.
\(\displaystyle C_0 = 0\) (초기 캐리) 이고, 0번째 비트: \(0 + 0 + C_0 = 0\) 이므로 \(C_1 = 0\). 1번째 비트: \(1 + 0 + C_1 = 1\) 이므로 \(C_2 = 0\). 2번째 비트: \(1 + 1 + C_2 = 0\) 이고 자리올림 \(C_3 = 1\). 3번째 비트: \(0 + 0 + C_3 = 1\) 이므로 \(C_4 = 0\) 이다.
따라서 결과는
$$ \text{R3} = (1010)_2 $$
가 된다.
(4) 정수는 2의 보수로 저장되고, 최상위 비트가 부호 비트이다. 4비트 2의 보수에서 표현 가능한 범위는 \(-8 \sim +7\) 이다. \((0110)_2 = +6\), \((0100)_2 = +4\) 이므로
$$ +6 + (+4) = +10 $$
이 되어 범위를 벗어난다. 실제 결과 비트 \((1010)_2\) 는 2의 보수에서 \(-6\) 이므로 양수와 양수의 합이 음수로 표현되어 오버플로가 발생한 것이다.
(5) 2의 보수 덧셈에서 오버플로 조건은 부호 비트로 들어가는 캐리와 부호 비트에서 나가는 캐리가 서로 다를 때이다. 즉, 3번째 비트(부호 비트)의 입력 캐리와 출력 캐리를 각각 \(C_3, C_4\) 라 하면
$$ V = C_3 \oplus C_4 $$
로 표현된다. XOR를 곱셈·덧셈 형태로 쓰면
$$ V = \overline{C_3}C_4 + C_3\overline{C_4} $$
가 되어, 이 논리식으로 오버플로 비트 \(V\)를 1로 세트할 수 있다.
<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>