태양에서 양자까지
제 3강 디지털 논리 회로와 컴퓨터
디지털 논리 회로는 산술이나 논리 연산을 하는 회로 입니다.
기초부터 시작하여 디지털 논리회로를 설명합니다.
1. 본 강의의 바탕이 되는 지식 분야
본 강의는 인공지능과 양자 컴퓨터를 쉽게 설명합니다.
우선 컴퓨터에 관한 지식을 먼저 다룹니다.
컴퓨터를 알려면 ① 반도체 ②컴퓨터 공학 ③컴퓨터 구조와 원리 ④알고리즘 ⑤운영체제 ⑥데이터베이스 ⑦네트워크 ⑧정보 보호(보안)에 대하여 공부를 해야 합니다.
그 책들 중 *반도체와 디지털 논리 회로*의 사진을 보여 드립니다. 본 강의를 보고 좀 더 자세한 공부를 하려고 할 때 참고가 될 것입니다.

2. 생각하는 기계와 불 대수
생각하는 기계를 만들 수 없을까? 생각하는 기계는 컴퓨터의 아버지 영국의 앨런 튜링(Alan Turing)에 의하여 논문으로 발표되었습니다. 그 내용은 다음과 같습니다.
튜링은 1936년 *계산이란 무엇인가?* 이라는 논문에서 튜링 머신(Turing Machine) 즉, Computing Machine의 원리를 설명했습니다.
①무한히 긴 테이프(기억 장치) ②읽고 쓰는 헤드(입출력 장치) ③상태표(연산 장치, 알고리즘)가 있으면 생각하는 기계를 만들 수가 있다고 주장했습니다.
이것이 바로 *In/Out(입출력 장치), Processing(연산 장치), Memory(기억 장치)*로 구성되는 컴퓨터 구조의 바탕 입니다.
이어서 프랑스 수학자 조지 불(George Bool)이 논리를 대수학으로 풀어 내는 불 대수(Boolean Algebra)를 창안해 냈습니다. 여기서 논리는 옳고 그름(True or False)을 구별해내는 인간 생각의 추론(Reasoning)을 말합니다.
불 대수 7대 공리를 설명합니다.
①어떤 논리 변수 A는 2진수 0또는 1의 논리 값을 가진다. 만약 A=1이라면 A bar(A의 반대)=0이 된다. 반대로 A=0이라면 A Bar=1이다.
②0∙0=0 ③0∙1=1∙0=0 ④1∙1=1 ⑤0+0=0 ⑥0+1=1+0=1 ⑦1+1=1
이런 공리(증명할 필요 없이 자명한 이치)를 활용하여 논리 처리 기계 즉, 컴퓨터의 논리 게이트(Logic Gate)와 논리 회로(Logic Circuit)를 만듭니다.
컴퓨터는 여러 개의 논리 게이트와 논리 회로에 알고리즘(컴퓨터가 작동하는 방법과 절차)을 적용하여, 기계어로 프로그램(Program)하면 작동합니다. 프로그램은 논리 회로가 알고리즘 대로 작동하게 기계어(Machine Language)로 작성하는 일을 말합니다. 컴퓨터 디자이너와 프로그래머 이라는 직업이 이 일을 취급합니다.
기계어는 우리가 앞에서 살펴본 Bit 0과 Bit 1을 말합니다. 프로그래밍의 작성은 프로그래밍 언어가 별도로 필요합니다. 파이썬(Python)이 대표적 프로그래밍 언어 입니다. 이들에 대하여 설명하려면 아주 깁니다. 이 정도만 알아도 생각하는 기계의 개념을 알 수가 있습니다.
최초의 컴퓨터는 1945년 제작된 ENIAC(펜실베니아 대학) 모델 입니다. 상업용 컴퓨터는 1964년 제작된 IBM의 *System 360 모델*입니다. 이 모델은 후속 *IBM 370, IBM 386* 등 더욱 고성능 기술로 발달하면서 컴퓨터 산업을 선도해 왔습니다.
IBM 컴퓨터는 중앙 집중식 시스템 입니다. 컴퓨터를 아주 크게 만들어야 합니다. 중앙에서 연산과 Memory 기능을 집중하여 다룹니다. 이 중앙 컴퓨터에 접속하는 컴퓨터를 더미(Dummy) 컴퓨터라고 합니다. 중앙 컴퓨터에 접속하여 데이터를 보기만 하는 컴퓨터 입니다. 더미가 많을 수록 중앙 컴퓨터에 부하가 많아져서 처리 속도가 느려집니다.
클라언트 서버(Client & Server) 시스템이 출현하였습니다. Client에 기초적인 연산과 메모리 기능을 분산하는 시스템 입니다. 분산형 컴퓨터의 대표 주자로서 노트북 컴퓨터가 널리 사용되고 있습니다. 보편적 컴퓨터 사용 시대가 열렸습니다. 이 노트북을 뛰어 넘은 것이 스마트폰(Smart Phone, 핸드폰+컴퓨터)입니다.
노트북과 스마트폰이 바로 Client Computer 입니다. Server의 대표적인 컴퓨터는 구글의 Server Computer 입니다. Client Computer에서 구글 검색을 하면 인터넷 망을 타고서 구글 Server Computer의 Memory에 접속합니다. 그 Memory는 구글 Database Server Computer 입니다. 그 DB Memory에서 검색한 정보를 알려 주는 것입니다.
스마트폰 세계화 시대를 관통하여, 컴퓨터의 핵심 장치에 쓰이는 반도체 IC의 제작 기술이 국가 간 경쟁력의 요체 입니다.
3. 인간이 일하는 방법과 논리
인간은 이치를 따라서 생각하고 행동합니다. 이치(理致)는 어떤 일의 앞뒤가 맞는 원리를 말합니다. 이치는 인간의 두뇌에서 생각하여 언어로 설명해야 알 수가 있습니다. *구슬이 서 말 이라도 꿰어야 보배*라는 속담처럼 생각을 언어로 표현하지 않으면 아무리 깊은 생각이라도 알 수가 없는 법입니다. 언어는 조리(條理)가 맞아야 합니다. 조리가 맞지않으면 *말도 안돼* 이라고 합니다. 조리는 말의 앞과 뒤가 맞아 떨어지는 갈피를 의미합니다.
이런 이치를 구사하여 인간의 일을 합니다. 이치는 논리로 판별합니다. 논리가 맞으면 옳다고 하고, 맞지 않으면 틀렸다고 합니다. 이런 논리는 여러가지 언어와 행동의 기준이 됩니다. Yes or No, 대소(大小), 고저(高低), 광협(廣狹) 등, 이처럼 논리는 인간의 생각과 자연 현상에 대한 인식의 기준이 됩니다.
이런 논리를 불 대수로 다듬고, 전기 스위치 트랜지스터로 기계어 프로그램을 작동시켜 디지털 논리 게이트를 만들어, 인간의 일을 컴퓨터가 하게 만듭니다.
4. 논리 처리를 하는 디지털 논리 게이트
논리(論理) 처리를 하는 기본적 디지털 논리 게이트는 AND Gate, OR Gate, NOT Gate가 있습니다.
가. AND Gate
불 대수의 이진법 숫자로 곱셈 논리 처리를 하는 것이 AND Gate(논리곱) 입니다.
『A 그리고(And) B가 사실이면(True) 그 결과는 사실이다』 이라고 판단하는 것을 *논리곱 추론*이라고 합니다. 그 전제에서 And를 사용하기 때문에 AND Gate 이라고 합니다. 불 대수 연산은 진리 표를 사용하여 나타냅니다. Gate의 흐름은 논리 기호를 사용하여 표시합니다.
설명의 편의 상 논리 게이트를 진리 표와 논리 기호를 함께 사용하여 나타냅니다.
AND 게이트의 진리표와 논리 기호는 다음 그림과 같습니다.

논리곱의 진리 표에서 입력 값 A와 B가 둘 다 1이면 출력 값은 1입니다. 그 외의 경우는 출력 값이 모두 0입니다.
염색하는 기계에 A는 붉은 색 염료를 나오게 하고, B는 노란색 염료가 나오게 만듭니다. A와 B를 모두 막으면(A=0, B=0) 염색이 안 됩니다. A만 틀고 B를 막거나(A=1, B=0), B를 틀고 A를 막아도(A=0, B=1) 염색이 안 됩니다. 둘 다 틀어야(A=1, B=1) 초록색(빨강∙노랑=초록)으로 염색이 됩니다.
이런 원리의 Flow로 일을 하는 자동(Automated) 염색 기계는 AND 논리 알고리즘을 적용한 일하는 컴퓨터의 일 사례입니다.
나. OR Gate
불 대수의 덧셈은 *0+0=0, 0+1=1+0=1, 1+1=1* 입니다. 이런 덧셈 논리 처리를 하는 것이 OR Gate(논리 합) 입니다.
OR Gate의 진리 표와 논리 기호는 다음 그림과 같습니다.

논리 합 진리 표에서 0+0=0 이고 그 외는 모두 1 입니다.
버튼이 A와 B 2 개의 학습용 간이 계산기가 있습니다. A를 누르면(A=1, B=0) 4가 나오고, B를 누르면(A=0, B=1) 5가 나오게 합니다. A와 B를 동시에 누르면(A=1, B=1) 9가 나오게 설계를 합니다. 이런 간이 계산기로 어린이에게 산수 학습을 시킬 수가 있습니다. 오락기 이라서 흥미를 가지고 공부를 할 수가 있습니다.
이런 원리의 Flow로 일을 하는 자동 기계가, OR 논리 알고리즘을 적용한 사례입니다.
가. NOT Gate
불 대수 *A와 A bar 연산(A=1 A bar=0)*을 논리 회로에 적용합니다. 이런 논리를 처리하는 게이트를 NOT 게이트(부정 논리) 이라고 합니다. NOT 게이트 진리 표와 논리 부호를 그림으로 설명합니다.

부정 논리 진리 표에서 1을 입력하면 0이 나오고, 0을 입력하면 1이 나옵니다. 기업이 업무에서 작동(A=1) 하거나 정지(A bar=0)하는 일의 Flow에 NOT 게이트를 적용합니다.
이 3개 기본 게이트 외에도 XOR, NAND, NOR, XNOR, NAND Flash 등 다양한 논리 게이트가 있습니다.
XOR 게이트는 두 입력 값이 모두 같으면 0 각각 다르면 1을 출력 합니다. NAND는 AND의 반대 값, NOR은 OR의 반대 값을 출력 합니다. XNOR은 XOR의 반대 값을
논리 게이트를 조합하여 디지털 논리 회로를 만듭니다.
5. 컴퓨터의 논리 & 연산 기능 디지털 논리 회로
컴퓨터는 디지털 논리 회로를 사용하여 논리 & 연산 체제(System)를 구성 시킵니다.
컴퓨터의 구조는 입력 장치(Input Device), 출력 장치(Output Device), 중앙 처리 장치(Central Processing Unit, CPU)와 데이터 저장 장치(Memory Device)로 구성 됩니다.
CPU는 산술&연산 장치(Arithmetic & Logic Unit, ALU)와 제어 장치(Control Unit, CU)로 구성 됩니다. ALU는 연산(논리 처리와 계산 기능, Operation)을 담당하고, CU는 ALU에게 명령어로 지시하여 작동하게 합니다. 컴퓨터의 ALU와 CU로 구성된 CPU가 핵심 장치 입니다.
컴퓨터의 명령어는 기계어(Machine Language)로 작성하고, CPU는 오직 기계어 만을 인식하여 Operating 합니다. Bit 0과 Bit 1이 바로 기계어 입니다. 명령어는 CPU 가 작동하게 하는 기계어 입니다.
AI는 컴퓨터 바탕 위에 구축합니다. AI의 데이터는 문자, 그림, 사진과 동영상 등을 사용하는 복합 데이터 입니다. 이처럼 입력 데이터가 다양하면 AI용 CPU의 연산 기능이 떨어집니다.
복합 데이터 연산 처리기 GPU가 이런 속도 문제를 해결합니다. GPU는 복합 데이터를 한꺼번에 병렬로 처리 합니다. AI Agent의 전성시대를 맞아서 GPU가 아주 귀한 기술로 자리 잡고 있습니다.
CPU & GPU는 디지털 논리 회로를 사용하여 만듭니다. 디지털 논리 회로는 조합 논리 회로, 순차 논리 회로와 레지스터(Register)로 나뉩니다. 조합 논리 회로와 순차 논리 회로의 개념은 그림을 보면 쉽게 이해할 수가 있습니다.

조합 논리 회로는 논리 게이트를 용도에 맞게 조합하여 만듭니다.
순차 논리 회로는 조합 논리 회로에 Memory를 더하여서 만듭니다.
조합 논리 회로는 각종 연산을 하고, 순차 논리 회로는 Memory에 저장된 명령어와 데이터를 불러와서 연산을 합니다.
조합 논리 회로에는 인코더(Encoder), 디코더(Decoder), 멀티 플랙서(Multiplexer, MUX), 디멀티 플랙서(DeMUX), Flip Flop과 가산기(Adder)가 있습니다. 이 이외에도 다양한 조합 회로 등이 있습니다.
순차 논리 회로는 *CPU & GPU+RAM+ROM+보조 메모리* 체제 입니다.
그 중에서 인코더, 디코더, Flip Flop과 레지스터를 간략히 설명합니다. 나머지는 이 3개와 같은 원리를 적용하여 그 용도에 맞게 제작합니다. 순차 논리 회로는 너무 복잡하므로 상세한 설명을 생략합니다.
가. 인코더
인코더는 CPU 용 명령어 코드를 만드는 회로 입니다. 명령어 코드는 여러가지 명령어가 있습니다. 그 중 가장 핵심이 되는 ALU(논리 연산) 명령어는 8 가지 입니다.
① 000―ADD 가산 ②001―SHR Shift Right, ③010―SHL Shift Left, ④011―NOT, ⑤100―AND, ⑥101―OR, ⑦110―XOR,
⑧111―CMP, Compare
여기서 Shift는 오른쪽으로 한자리 이동이나 왼쪽으로 한 자리 이동 기능입니다. 이진수의 보수(補數)를 만들 때 사용 합니다. Compare는 두 숫자의 개념을 비교하는 A=B, A≥B, A≤B와 같이 비교하는 명령어 입니다.
이런 8가지 명령어는 *8 입력 3 출력 인코더*를 사용하여 만듭니다.
인코더를 그림으로 설명합니다.

이 그림의 출력 난을 보면 000~111의 3개 Bit 조합을 볼 수 있습니다. 이처럼 인코더로 연산 명령어 8개를 만드는 것입니다.
연산 명령어는 *ALU 명령어* 이외에도 MOV(이동), STORE(저장), JMP(특정 장치로 이동), FETCH(불러 옴) 등 다양한 것이 있습니다.
인코더는 이런 원리로 다양한 데이터 입력 모델을 만들 수가 있습니다.
나. 디코더
디코더는 인코더의 반대 개념입니다. 메모리에서 명령어 한 개를 불러 올 때 사용합니다.
000을 입력하면 ADD 명령어가 불려 나옵니다. 상세한 설명은 생략합니다.
다. 레지스터
레지스터는 CPU에서 *약방의 감초*와 같이 사용됩니다. ALU는 명령어와 연산 데이터를 레지스터에 저장해 놓고, 추가적 연산을 하여 그 결과를 임시 저장하기도 하는 등의 작동에 레지스터를 사용합니다. 일일이 RAM을 사용하는 시간을 줄여서 연산 속도를 높이기 위한 방법입니다.
ALU, CU와 레지스터 간 정보 흐름을 그림으로 설명합니다.

레지스터는 연산 기능 이외에도 Program Counter, Accumulator, Memory Address Register 등 다양하게 사용 됩니다.
라. Flip Flop
플립 플롭(Flip Flop)는 Memory 용 디지털 회로 입니다. 데이터를 저장할 때 사용합니다.
데이터 저장이란 Bit 0과 Bit 1로 만든 어떤 연산 자료를 Memory에 보관하는 것입니다. 데이터를 만들기 위해서는 알파벳을 기계어로 변환하는 아스키코드(ASCII Code)와 한글을 기계어로 변환하는 유니코드(Unicode)를 활용합니다.
이런 코드에서 찾아서 만든 기계어 데이터를 플립 플롭에 저장하는 것입니다.
플립 플롭을 그림으로 설명합니다.

플립 플롭의 Clk(Clock) 기능으로 Bit 0과 Bit 1을 생성 시키고, Set 기능으로 Q(t)에 데이터를 저장 시킵니다. 또한 Reset 기능으로 Q(t)’에 보수(Complement)를 저장 시킵니다. 이런 FF를 SR Flip Flop이라고합니다.
보수는 뺄셈에 활용합니다. 그 활용 방법은 뒤에서 설명합니다. 이런 기능이 RAM Memory에 데이터를 저장하는 것입니다.
Memory 저장 기능은 이외에도 다양하게 있습니다. 플립 플롭 하나만 알아도 충분합니다. 그 저장하는 원리는 비슷하기 때문입니다. .
제 3강 디지털 논리회로와 컴퓨터는 너무 길기 때문에 제 3-2강에서 컴퓨터를 설명합니다.
제 3-2 강 컴퓨터로 이어집니다.

