※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다.
이전 글들을 통해서
컴퓨터가 다양한 전류의 흐름을 제어하는 회로로 구성되어 있으며
각 회로는 사람의 언어로 대응되는 명령어 체계를 바탕으로 설계되었으며,
그렇기에, 사용자는 명령어를 컴퓨터에 입력하면
컴퓨터 내부의 대응되는 회로에 따라 명령어를 해석 및 처리함으로써,
다른 부품들을 제어하고 조작하는 복합적인 기계임을 알 수 있었다.
즉,
명령어를 입력으로 받고, 컴퓨터라는 거대한 회로를 통해,
출력되는 결과를 다른 부품/기계들로 보낸다고 볼 수 있다.
이에 대해서,
지금까지 명령어를 입력으로 받을 수 있는 회로를 구성하기 위해
기본적인 재료라 할 수 있는 게이트(특히 NAND 게이트)에 대해서,
전지, 전선, 스위치, 릴레이, 부울 대수 등을 통해 구현해 보며 알아보았다.
그렇다면 게이트로 어떻게 컴퓨터로 구현할까?
< 게이트로 컴퓨터를 구현한다는 것은 어떤 의미인가 >
(폰 노이만 구조)
위와 같은 질문을 시작으로 아래와 같이 무수한 질문들이 떠올랐다.
컴퓨터 명령어란 정확히 무엇인가?
컴퓨터는 어떠한 회로에 어떠한 명령어를 대응시켰는가?
컴퓨터는 어떻게 명령어를 해석 및 처리하는가?
컴퓨터는 어떻게 처리 결과를 다른 장치로 보낼 수 있는가?
등등
결국 무수히 떠오르는 질문들에 대해서 어떤 질문부터 탐구하면 좋을지 순서를 매겼고,
그 결과 처음으로 탐구해야 할 질문은 아래와 같았다.
컴퓨터는 어떠한 목적을 가지고 설계하고자 하였는가?
그리고 그다음 질문은 아래와 같았다.
어떠한 구조를 가져야, 다양한 명령어를 효율적으로 처리할 수 있을까?
따라서 위의 두 질문을 이번 글을 통해 탐구해 보겠다.
< 컴퓨터 설계의 목적 >
초기의 컴퓨터는 수학적 계산을 자동화함으로써
노동과, 시간 그리고 오류를 줄이며, 더 큰 규모의 문제를 해결하고자 했다.
즉,
컴퓨터는 초기에 게이트들을 통해서 논리 연산과, 산술 연산 등 수학적 연산을 하는
회로들을 구현하여 계산기 역할을 했다는 것을 알 수 있다.
이후, 아래와 같은 질문이 제기되었다.
“계산 결과들을 다시 재활용할 수 없을까”
그 결과 데이터를 저장하고, 필요할 때 다시 읽어 사용할 수 있는
메모리(memory) 시스템이 등장하게 되었다.
즉,
컴퓨터는 게이트들을 통해서 수학적 연산을 하는 산술/논리 회로와,
회로 연산 결과를 저장하고 다시 읽을 수 있는 메모리 회로 등을 통해
계산의 반복을 줄이고,
이전 데이터를 기반으로 새로운 작업을 수행할 수 있게 되었다.
이후 또 아래와 같은 라는 질문이 제기되었다.
"컴퓨터가 한 가지 계산만이 아니라
여러 가지 작업을 자동으로 수행할 수 있다면?”
그 결과, 산술/논리 연산 기능을 가진 회로와,
저장과 읽기 기능이 있는 메모리 시스템 회로를
연결해 주는 제어장치(Control Unit : CU)가 등장하게 되었다.
CPU는 계산 기능과 메모리 기능 등 각 기능으로 연결되는 회로를 구축하고,
각 회로 자체에 사람이 이해하기 쉬운 ADD, SUB와 같은 명령어(의미)를 부여했다.
뿐만 아니라, 그러한 명령어들이 순서에 맞게 실행할 수 있도록 설계되어
여러 줄의 다양한 명령어를 자동으로 처리할 수 있게 되었다.
즉,
컴퓨터는 게이트들을 통해서 수학적 연산을 하는 회로와,
회로 연산 결과를 저장하고 다시 읽을 수 있는 메모리 회로
그리고, CPU 회로를 통해서, 각 회로들과 연결하여 명령어 체계를 구축하고,
여러 줄의 다양한 명령어들이 순서에 맞게 실행할 수 있게 되었다.
그리고
그렇게 다양한 작업을 하는 여러 줄의 명령어 집합을 프로그램이라 부른다
그리고 모든 구성 요소는 게이트로 구현할 수 있다.
그리고 또, “다른 컴퓨터와 데이터를 주고받을 수 있다면”라는 질문은
컴퓨터를 통신의 도구로 발전시키게 되었다.
< 폰 노이만 구조 >
위와 같은 컴퓨터의 발전 과정 중에 수학자이자 과학자인 폰 노이만은
다양한 명령어를 처리함으로써 여러 가지 작업, 프로그램을
자동으로 수행하는 컴퓨터를 설계하기 위해 아래와 같은 구조를 제시했다.
이에 따라 다음 주제로는
기본적으로 어느 명령어가 필요한지, 몇 개의 명령어가 필요한지 등에 대해서
컴퓨터 설계 목적에 맞추어
우선 기본적으로 어떠한 수학적 연산 회로가 필요한지 알아보겠다.
※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다.
'[無에서 시작하는 컴퓨터&과학]' 카테고리의 다른 글
[컴퓨터][14] 산술/논리 연산 회로 - 2 (덧셈 회로 : 전가산기, 8bit 전가산기) (1) | 2024.09.01 |
---|---|
[컴퓨터][13] 산술/논리 연산 회로 - 1 (이진법과 비트 그리고 덧셈 회로 : 반가산기) (0) | 2024.08.30 |
[컴퓨터][11] NAND 게이트 변환 - 2 ( NOR, XOR, XNOR ) (0) | 2024.08.27 |
[컴퓨터][10] NAND 게이트 변환 - 1 ( NOT, AND, OR ) (0) | 2024.08.26 |
[컴퓨터][9] 논리 게이트 기호 (AND, OR, XOR, NOT, NAND, NOR, XNOR) (0) | 2024.08.25 |