이 책은 컴퓨터 구조 강의를 듣기 전에 "컴퓨터" 자체에 대해서 잘 이해하고 싶어서 빌리게 된 책이다. 이 책은 이런 나의 목적에 부합하는 책이었다. 컴퓨터의 동작 원리에 대해서 깊고 복잡한 부분을 전부 알려준다기보다, 논리회로와 컴퓨터 내부구조, 정말 어떻게 동작하는 지에 대해서 논리 게이트부터 시작해서 운영체제에 이르기까지 유기적인 연결고리들로 이루어져있기 때문에 작은 단위부터 큰 단위로 순차적으로 이해하기에 적합한 책이다.

 

이 책을 읽고 나면 다음에 설명하는 단어들의 의미와, 그 단어들간의 유기적인 관계에 대해서 이해할 수 있고, 컴퓨터의 내부구조가 좀더 친근하고 쉽게 다가오게 된다. 컴퓨터 구조라는 과목을 배우는데 기초 근육을 기르게 해준다.

 

비트, 게이트, 비트 메모리, 바이트 메모리, 레지스터, 아스키코드, 버스 구조, 램, 2/8/16진수, 바이트 연산, 비트 시프트 연산, ALU, RAM, MAR

 

(내가 보려고 적는) 간단 정리

 컴퓨터는 가장 만들기 쉬운 NAND 게이트들의 연속으로 이루어져 있으며, NAND 게이트의 두 입력을 묶으면 NOT 게이트가 된다. 왠지 AND 게이트 두개로 NAND 를 만들것 같았는데 오히려 그 반대다. NAND가 게이트 중 가장 기본단위이며, NAND 게이트 두개로 AND 게이트를 만든다. 이러한 NAND게이트 4개로 비트 메모리를 만들 수 있는데, 이는 레지스터의 기반이 된다. 요약하자면, 입력 i와 s가 있을 때 i는 말그대로 입력이 되고, s는 해당 입력을 수용할지 아닐지를 결정하는 부분이다. s=1 일 때는 상태 변경이 가능하고 s=0 일 때는 이전 상태를 유지한다는 뜻이다. 이러한 1비트 메모리를 8개가 모이면 바이트 메모리가 된다. 단 하나의 입력으로는 모든 것을 표현하기 힘드니 데이터의 묶음을 만든 것이고 그 묶음이 바이트인 것이다. 이때 AND 게이트 8개를 묶은 출력 제어기(enabler)를 바이트 메모리와 묶어주면 그것이 바로 레지스터가 된다. 또 이러한 레지스터들을 연결해준 형태를 버스라고 한다. 이러한 버스 형태로 컴퓨터는 데이터를 복사하는 형태로 데이터를 이동하게 된다.

비트 메모리 바이트 메모리
출력 제어기 레지스터

 

 

 

 이제 램을 알아볼 차례이다. 램은 이전 값이 어디를 참조했느냐에 따라서 속도가 변하지 않는다. 따라서 바이트 메모리에 무작위로 접근하고 싶을 때 유용하다 램(RAM)은 Random Access Memory 의 약자이며, 메모리에 접근하기 위한 MAR 은 Memory Address Register 메모리 주소 레지스터의 약자이다. 또한 램의 각 교차점에는 AND 게이트가 상주하고 있으며, 수많은 격자중에 단 한 부분만이 AND 게이트의 두 입력이 모두 1이 되어 인식을 하게 된다.

레지스터의 입출력 표기법 256byte 램의 구조
램의 교차점을 확대한 모습 램의 구조

 

 

 

 바이트 연산은 크게 두 종류로 나뉘는 데, 하나는 하나의 레지스터에서 다른 레지스터로 바이트를 이동할 때 바이트 안에 들어 있는 내용물, 즉 '데이터'를 바꿀 수 있는 세 가지 연산이고 다른 하나는 바이트 데이터를 2개 입력해서 어떤 상호 작용을 거친 후 새로운 바이트를 출력할 수 있는 네가지 연산이다. 결국 바이트 단위로 할 수 있는 연산은 궁극적으로 총 일곱 가지 이며, 이는 컴퓨터가 실제로 바이트 단위의 작업을 수행하기 위해 하는 일이다.

 전자의 경우에는 2를 곱하고 나누어서 자리수를 이동하는 개념의 비트 시프트 연산, NOT게이트 장치의 다른 말인 인버터(inverter),  속한다. 후자의 경우에는 (아스키코드의 모든 대문자와 소문자는 세번째 비트 부호만 다르게 구성되어 있다는 사실을 이용해서) 모든 알파벳 문자를 대문자로의 변환시에 쓰일 수 있는 AND장치, (AND장치와 비슷한 이유로) 알파벳 대문자를 소문자로 변환할 수 있는 OR장치, 입력된 두 값이 서로 같은지 판별하는 데에 쓰일 수 있는 XOR장치, 두 이진수를 더하는 장치인 가산기가 속한다. 또, XOR장치에서 좀더 발전한 비교기가 있는데, 이는 두 값이 같은지 다른지 다르다면 어느 값이 더 큰지를 출력한다. 그리고 모든 입력이 0인지 판별하는 제로 검사기도 있다.

1비트 비교기 바이트 비교기

 

 

 

 마지막으로, 지금까지 살펴본 XOR, OR, AND, NOT, SHL(shift left), SHR(shift right), ADD 총 7가지 연산을 묶은 ALU(Arithmetic and Logic Unit) 산술 논리 장치로 다양한 연산을 수행한다.

ALU의 구조 op 코드

 

+ Recent posts