조지 불(George Boole)은 어떤 부류나 조건의 관계를 기호와 연산으로 나타내고, 복잡한 식을 서로 겹치지 않는 경우로 전개했습니다. 그 계산만으로 장치가 이전 값을 기억하는 것은 아닙니다. 그러나 후대의 회로 설계자는 불 대수로 ‘현재 값과 입력에서 다음 값을 정하는 규칙’을 쓰고, 별도의 저장 소자와 결합해 순서가 있는 동작을 만들었습니다.
01 · 불이 풀려던 문제
한 번의 입력표로 시간에 따라 달라지는 동작까지 설명할 수 있을까요?
앞선 회차의 가산기는 현재 들어온 비트가 같으면 언제나 같은 출력을 냅니다. 이런 조합 회로는 입력 조합의 표만으로 기능을 정할 수 있습니다. 하지만 문이 열렸는지, 버튼을 한 번 눌렀는지, 계산이 어느 단계까지 왔는지처럼 이전 순간의 정보가 필요한 장치는 현재 입력만으로 결과를 정할 수 없습니다.
불은 1854년 원전에서 시간에 따라 상태를 저장하는 회로를 제안하지 않았습니다. 그가 제공한 것은 주어진 기호 관계를 계산하고, 한 기호를 기준으로 경우를 나누어 식을 전개하는 방법입니다. 오늘은 그 방법을 후대의 상태 전이식에 적용하되, 기억 기능 자체는 저장 소자와 클록을 갖춘 순차회로의 발전이라고 구별합니다.
불의 제안은 현재 상태와 입력을 0·1 기호로 놓고 다음 상태 규칙을 계산하는 언어입니다. 상태를 실제로 보존하고 정해진 시점에 바꾸는 D 레지스터·클록·순차회로는 후대의 디지털 설계입니다.
02 · 불의 전개에서 상태 전이식으로
저장 명령 L을 기준으로 두 경우를 합칩니다
현재 저장된 값을 q, 새 입력을 d, 새 값을 받아들이라는 명령을 L이라고 정하겠습니다. L=0이면 현재 값 q를 유지하고, L=1이면 입력 d를 저장합니다. 두 경우를 서로 겹치지 않게 쓰면 다음 상태는 q′=(1−L)q+Ld입니다. 첫 항은 ‘저장하지 않음과 현재 값’, 둘째 항은 ‘저장함과 새 입력’에 해당합니다.
이 식은 불이 제5장에서 설명한 전개 형태 f=L·f(1)+(1−L)·f(0)와 같은 경우 나누기를 사용합니다. L=1을 넣으면 q′=d, L=0을 넣으면 q′=q가 됩니다. 덧셈되는 두 항은 L과 1−L 때문에 동시에 1일 수 없으므로 불의 원전 덧셈 조건에도 맞습니다.
현재 상태 q는 과거 단계에서 저장된 결과입니다. 따라서 d가 같아도 L=0일 때에는 q가 유지되어 q=0과 q=1의 다음 상태가 다를 수 있습니다. ‘같은 현재 입력이면 같은 출력’이라는 조합 회로의 표에서 한 칸 더 나아가, 현재 상태를 입력 열에 포함해야 하는 이유입니다.
03 · 불의 전개식으로 다음 상태 계산하기
현재 상태·저장 명령·입력의 여덟 행을 확인하세요
| 현재 q | 저장 L | 입력 d | (1−L)q | Ld | 다음 q′ | 뜻 |
|---|
먼저 ‘1 저장’을 누르면 현재 q=0, L=1, d=1인 행이 강조되고 q′=1이 됩니다. ‘한 단계 진행’을 누르면 그 1이 현재 상태가 됩니다. 이어 ‘1 유지’를 누르면 d=0이어도 L=0이므로 q′=1입니다. 입력 d 하나만 보았다면 설명할 수 없는 결과를 현재 상태 q와 함께 설명할 수 있습니다.
04 · 표에서 얻은 발견
표의 여덟 행은 상태 규칙의 모든 경우를 보여 줍니다
q·L·d 세 값이 각각 0 또는 1이므로 표에는 2³=8행이 있습니다. 이 8은 사람 수나 장치 수, 비율이나 확률이 아닙니다. 가능한 입력 조합의 수입니다. 각 행에서 (1−L)q와 Ld를 계산해 더하면 q′가 하나로 정해집니다.
L=0인 네 행에서는 d가 달라도 q′=q입니다. L=1인 네 행에서는 q가 달라도 q′=d입니다. 현재 상태와 다음 상태가 같을 때도 ‘아무 일도 일어나지 않았다’고만 쓰지 않습니다. 저장 명령이 0이어서 유지된 것인지, 1을 다시 저장한 것인지 표의 L과 d로 구별할 수 있습니다.
“입력 d=0인데 결과가 1이다”에서 멈추지 말고 “현재 q=1이고 L=0이어서 (1−L)q=1, Ld=0, 따라서 q′=1”이라고 현재 상태와 선택된 항을 함께 기록합니다.
05 · 오늘의 실제 적용
레지스터와 상태기계의 동작 명세를 검토합니다
MIT Computation Structures 자료는 순차 논리를 현재 상태와 현재 입력에서 다음 상태와 출력을 계산하는 조합 논리, 그리고 다음 상태를 저장하는 기억 소자의 결합으로 설명합니다. 클록의 상승 모서리에서 D 레지스터가 새 상태를 받아들이면 이후 한 주기 동안 그 값이 현재 상태로 쓰입니다.
웹 양식의 ‘임시 저장됨’, 엘리베이터의 현재 층, 통신 절차의 대기·전송·완료 단계처럼 순서가 필요한 기능을 명세할 때도 상태표를 사용할 수 있습니다. 실제 제품에서는 불 대수 식을 검증하고, 클록·지연·전원·초기 상태·동시에 바뀌는 신호와 안전 조건도 확인해야 합니다.
① 저장할 상태의 뜻을 정합니다. ② 현재 상태와 입력의 모든 조합을 나열합니다. ③ 불 식으로 다음 상태를 계산합니다. ④ 초기 상태와 유지·쓰기 경계를 시험합니다. ⑤ 실제 회로에서는 타이밍과 물리적 안전 조건을 추가로 검증합니다.
06 · 바르게 쓰는 기준
논리식과 기억 소자, 입력 변화와 상태 갱신을 나눕니다
q′는 다음 단계의 상태를 뜻합니다. 화면에서 q·L·d 버튼을 바꾸는 일은 현재 조건을 편집하는 동작이고, ‘한 단계 진행’은 계산된 q′를 새로운 q로 저장하는 동작입니다. 두 동작을 섞으면 같은 시각의 값과 다음 시각의 값을 구별하기 어렵습니다.
불 논리의 기호 계산은 다음 상태 규칙을 간결하게 쓰는 데 쓰입니다. 그러나 실제 기억은 피드백이나 레지스터 같은 물리적 구성과 시간 규칙이 필요합니다. 불이 D 래치나 유한상태기계를 직접 만들었다고 쓰지 않습니다.
불의 문제: 복잡한 관계를 기호와 전개로 계산하기. 불의 제안: 한 기호의 0·1 경우를 나누어 q′=(1−L)q+Ld 같은 규칙을 만들기. 오늘의 쓰임: 저장 소자와 결합해 현재 상태에서 다음 상태로 가는 순차 동작을 상태표로 검증하기.
07 · 자료와 출처
불의 원전과 순차 논리 공식 자료
- 조지 불, 『An Investigation of the Laws of Thought』(1854), 제5장 — 한 기호를 기준으로 함수를 0·1 경우로 전개하는 방법.
- Claude E. Shannon, A Symbolic Analysis of Relay and Switching Circuits(1937/1938) — 불 대수와 계전기·스위칭 회로 분석의 원문.
- MIT OpenCourseWare, 6.004 Sequential Logic, 5.1 — 현재 상태·입력·다음 상태, 기억 소자와 D 레지스터.
- MIT OpenCourseWare, 6.004 Finite State Machines, 6.1 — 상태표와 조합 논리·상태 저장의 관계.
- 조지 불 초상 판화 · Wikimedia Commons — 1865년 1월 21일 게재, 공개 영역.
