이성열

기억상실증 걸린 컴퓨터 고쳐주기

지난 글에서 AND, OR, NOT 같은 논리 게이트들을 조합하여 덧셈을 수행하는 계산기를 만들 수 있음을 배웠다. 하지만 이 계산기에는 한 가지 큰 한계가 있었다. 바로 계산 결과를 기억하지 못한다는 점이다.

가산기처럼 현재 입력값에만 의존해서 출력이 즉시 결정되는 회로조합 논리 회로(Combinational Logic Circuit) 라고 부른다. 입력이 바뀌면 출력도 바로 바뀌고, 이전에 어떤 입력이 들어왔었는지는 기억하지 못한다.

마치 벽의 전등 스위치를 누르는 동안만 불이 켜지고 손을 떼면 즉시 불이 꺼지는 것과 같다. 일반적인 전등 스위치는 한 번 누르면 불이 켜지고, 다시 누르면 불이 꺼지는 토글 방식으로 작동하는데, 조합 논리 회로로는 이런 기능이 불가능하다. 전등의 이전 상태가 무엇이었는지를 기억해야 새로운 상태를 계산할 수 있기 때문이다.

오늘은 컴퓨터의 기억상실증을 고쳐줄 회로, 바로 순차 논리 회로를 알아보자.

순차 논리 회로

반면 기억 능력을 가진 회로를 순차 논리 회로(Sequential Logic Circuit) 라고 한다. 순차 논리 회로는 현재 입력뿐만 아니라 이전 상태(기억된 값)에도 의존하여 출력을 결정한다.

SR 래치

그렇다면 순차 논리 회로는 어떻게 정보를 기억하는 걸까? 피드백(Feedback), 즉 회로의 출력이 다시 입력으로 돌아가는 구조가 핵심이다. 이 피드백 루프를 활용하여 가장 단순한 형태의 기억 장치인 SR 래치(SR Latch) 를 만들 수 있다.

SR 래치는 NOR 게이트 단 두 개만으로도 만들 수 있다.

S와 R을 클릭해 값을 토글할 수 있다. 다음 순서대로 조작해보자:

  1. S를 클릭해 1로 바꾸면 Q가 1이 된다. (설정)
  2. S를 다시 클릭해 0으로 돌리면, Q는 여전히 1이다. 값이 기억된다.
  3. R을 클릭해 1로 바꾸면 Q가 0으로 돌아간다. (리셋)

SR 래치는 두 가지 입력과 두 가지 출력을 가진다:

SRQ동작
00이전 상태 유지이전 상태 유지유지 (Hold)
0101리셋 (Reset)
1010설정 (Set)
11불안정불안정금지 상태

각 입력과 출력의 역할을 살펴보면:

  • Set (S) 입력: S가 1이 되면 래치는 Q 출력을 1로 ‘설정’한다. 즉, 1을 기억하게 된다.
  • Reset (R) 입력: R이 1이 되면 래치는 Q 출력을 0으로 ‘초기화’한다. 즉, 0을 기억하게 된다.
  • Q 출력: 래치가 현재 기억하고 있는 값을 나타낸다.
  • Q̅ 출력: 항상 Q와 반대의 값을 가진다.

S와 R 입력이 모두 0으로 돌아갔을 때 래치는 이전에 기억했던 값을 계속 유지한다는 점이 가장 큰 특징이다.

SR 래치의 문제점

SR 래치는 기본적인 ‘기억’ 기능을 제공하지만, 실제 컴퓨터에서 사용하기에는 몇 가지 문제가 있다.

가장 큰 문제는 S와 R이 동시에 1이 될 때 발생하는 불안정한 상태이다. S와 R이 모두 1이면 두 NOR 게이트의 출력은 강제로 0이 된다. 즉, Q=0, Q̅=0이 되는데, 이는 SR 래치의 기본 정의인 “Q와 Q̅는 항상 반대 값”이라는 조건을 위배한다.

더 큰 문제는 이 상태에서 다시 S=0, R=0으로 바꿀 때 발생한다. 두 NOR 게이트가 동시에 입력 0을 받게 되면서 서로의 출력을 기다리는 경쟁 상태에 빠진다. 어느 게이트가 먼저 반응하느냐에 따라 Q=1이 될 수도, Q=0이 될 수도 있다. 즉 결과를 예측할 수 없다.

D 래치

이러한 SR 래치의 문제를 해결하기 위해 등장한 것이 바로 D 래치(D Latch) 이다. D 래치는 AND를 활용해 SR 래치의 입력 회로를 변형하여 S와 R이 동시에 활성화되는 불안정한 상태를 원천적으로 방지한다.

D와 E를 클릭해 값을 토글할 수 있다. 다음 순서대로 조작해보자:

  1. D를 클릭해 1로 바꿔보자. E=0이라 Q는 변하지 않는다.
  2. E를 클릭해 1로 바꾸면, D의 값(1)이 Q에 반영된다.
  3. E를 클릭해 0으로 바꾸면, Q가 잠긴다. 이제 D를 바꿔도 Q는 변하지 않는다.

D 래치는 하나의 ‘데이터(Data, D)’ 입력과 ‘활성화(Enable, E)’ 입력만을 가진다.

활성화(E) 신호가 켜져 있는 동안에만 데이터(D) 입력의 값이 Q에 반영된다. 활성화 신호가 꺼지면 D 입력이 아무리 변해도 래치는 이전 값을 유지한다.

Q를 잠그는 자물쇠가 E라고 생각해도 좋다.

마무리

논리 게이트의 피드백 구조를 활용해 정보를 기억하는 래치를 만들었다. 하지만 D 래치에는 한 가지 한계가 남아있다. 활성화 신호가 켜져 있는 동안에는 입력 변화를 그대로 따라가기 때문에, 여러 래치가 연결된 시스템에서 데이터가 의도치 않게 전파될 수 있다.

다음 글에서는 이 문제를 더 자세히 살펴보고 이를 해결하는 클럭플립플롭을 다룬다.