ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 01. 컴퓨터 원리
    레거시/Tucker의 Go언어 프로그래밍 2021. 6. 3. 21:24
    반응형

    01. 컴퓨터 원리

    이 문서는 책 "Tucker의 Go 언어 프로그래밍"을 읽고 작성되었습니다. 최대한 요약해서 책 내용을 최소로 하는데 목표를 두고 있어서, 더 친절하고 정확한 내용을 원하신다면 책을 구매하시는 것을 추천드립니다. 책 링크

    01장에서 배우는 것

    01장에서 배우는 것은 다음과 같다.

    • 트랜지스터 원리
    • 논리소자부터 계산기까지
    • 튜링 머신과 폰 노이만 머신
    • 컴퓨터 동작 원리

    모든 내용을 톺아볼 것이며, 간단하게만 내용을 요약한다.

    사실 컴퓨터란?

    컴퓨터는 매우 단순한 기계이다. 아래 그림처럼 컴퓨터는 사람의 말을 이해할 수 없다.

    다만 컴퓨터에서 구동되는 프로그램은 0, 1로 구성된 수 많은 명령어들을 저장하고 있는데, 컴퓨터는 엄청난 속도의 연산으로 명령어를 실행하는 것 뿐이다.

    즉 컴퓨터는 0, 1밖에 모르며 이를 엄청나게 빠른 계산을 통해서 0, 1로 구성된 명령어들을 수행할 뿐이다.

    트랜지스터

    트랜지스터는 연산을 수행하는 가장 기본이 되는 소자이다.

    트랜지스터는 크게 다음의 기능을 할 수 있다.

    1. 스위칭
    2. 증폭기

    컴퓨터에서는 스위칭기능을 주로 사용한다. 원리를 간단하게 설명하자면, 베이스에 전압을 가하지 않을 때는 전류를 막는 물질이 된다.

    하지만 베이스에 전압을 가하게 되면 전류가 흐르는 물질이 된다.

    이런 성질 덕분에 전구가 꺼졌을 때(전류를 막는 물질일 때)를 0, 켜졌을 때(전류가 흐르는 물질일 때)를 1로 표현할 수 있으며 즉, 스위칭 역할을 하게 된다.

    트랜지스터에서 논리소자로

    대표적으로 사용되는 논리 소자는 다음과 같다.

    • AND
    • OR
    • NOT
    • XOR

    트랜지스터를 2개로 논리 소자 AND을 표현할 수 있다.

    입력 2개에 대한 출력의 결과는 다음과 같다.

    In A In B Out
    0 0 0
    0 1 0
    1 0 0
    1 1 1

    OR 역시 트랜지스터 2개로 표현될 수 있다.

    입력 2개에 대한 출력의 결과는 다음과 같다.

    In A In B Out
    0 0 0
    0 1 1
    1 0 1
    1 1 1

    NOT트랜지스터 1개로 표현될 수 있다.

    입력 1개에 대한 출력의 결과는 다음과 같다.

    In Out
    0 1
    1 0

    XOR은 회로로 표현하면 꽤 복잡하니 패쓰한다. 하지만 입/출력은 중요하니 알아두고 가자. 입력 2개에 대한 출력의 결과는 다음과 같다.

    In A In B Out
    0 0 0
    0 1 1
    1 0 1
    1 1 0

    논리소자에서 계산기로

    이제 논리소자들을 이용해서 사칙연산을 할 수 있는 계산기를 만들 수 있다. 먼저 이진법에서 덧셈을 알아보자.

    0 + 0 = 00
    0 + 1 = 01
    1 + 0 = 01
    1 + 1 = 10

    왼쪽이 입력, 오른쪽이 결과라고 했을 때, 결과에서 첫 번째 줄을 살펴보자.

    0 + 0 = [0]0
    0 + 1 = [0]1
    1 + 0 = [0]1
    1 + 1 = [1]0

    결과를 살펴보자. 이를 입/출력으로 나타내면 AND 게이트와 같다. 이번엔 결과에서 두 번째 줄을 살펴보자.

    0 + 0 = 0[0]
    0 + 1 = 0[1]
    1 + 0 = 0[1]
    1 + 1 = 1[0]

    이는 XOR 게이트와 같다. 즉, 가산기는 AND 게이트와 XOR 게이트를 이용해서 덧셈 연산을 만들 수 있다. 이를 가산기라 한다. 회로로 나타내면 다음과 같다.

    반대로 뺄셈은 감산기라는 것이 수행한다. 회로도로 보면 다음과 같다.

    입력 A쪽에 NOT 게이트가 붙었는데 결과를 살펴보자. 먼저 뺄셈을 나타내면 다음과 같다.

    0 - 0 = 00
    0 - 1 = 11 # 여기서 1은 윗 자리에서 빌린 수이다.
    1 - 0 = 01
    1 - 1 = 00

    그럼 입력에 대해서 이렇게 나타낼 수 있다.

    In A In A'(NOT) In B Out
    0 1 0 00
    0 1 1 11
    1 0 0 01
    1 0 0 00

    즉 도표를 보면 회로에서처럼 결과에서 왼쪽 줄은 입력 A에 NOT한 결과, 입력 A'와 입력 B를 AND한 결과와 같다. 결과에서 오른쪽 줄은 입력 A와 입력 B를 XOR한 결과와 같다.

    또한 가산기를 여러 번 이용하면 곱셈, 감산기를 여러 번 이용하면 나눗셈을 구현할 수 있다. 이렇게 해서 사칙연산을 모두 논리 소자로 구성할 수 있고 이는 계산기가 된다.

    계산기에서 컴퓨터로, 그리고 동작 원리

    계산기가 컴퓨터로 진화하는 과정에서 앨런 튜링과 폰 노이만이라는 과학자들이 큰 기여를 했다. 앨런 튜링은 튜링 머신을 상상 속에서 만들었는데 컴퓨터 동작의 기초를 정립하였다. 그리고 폰 노이만은 이 튜링 머신을 기초로 현재의 컴퓨터 아키텍처 기초를 정립하게 되었다. 아래는 폰 노이만이 만든 이른 바, 폰 노이만 구조이다.

    컴퓨터의 동작 원리는 크게 다음과 같은 단계를 거친다고 보면 된다.

    1. 프로그램 로드
    2. 데이터 로드 및 캐싱
    3. 연산 및 저장
    4. 프로그램 종료 때까지 2-3번 반복

    '레거시 > Tucker의 Go언어 프로그래밍' 카테고리의 다른 글

    00. Go언어를 배우기 전에  (0) 2021.05.17
Designed by Tistory.