[無에서 시작하는 컴퓨터&과학]

[컴퓨터][12] 게이트로 컴퓨터를 구현한다는 것은 어떤 의미인가 (폰 노이만 구조)

core-basic 2024. 8. 28. 19:06
728x90

※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다.


이전 글들을 통해서

컴퓨터가 다양한 전류의 흐름을 제어하는 회로로 구성되어 있으며

각 회로는 사람의 언어로 대응되는 명령어 체계를 바탕으로 설계되었으며,

그렇기에, 사용자는 명령어를 컴퓨터에 입력하면

컴퓨터 내부의 대응되는 회로에 따라 명령어를 해석 및 처리함으로써,

다른 부품들을 제어하고 조작하는 복합적인 기계임을 알 수 있었다.

즉,

명령어를 입력으로 받고, 컴퓨터라는 거대한 회로를 통해,

출력되는 결과를 다른 부품/기계들로 보낸다고 볼 수 있다.

이에 대해서,

지금까지 명령어를 입력으로 받을 수 있는 회로를 구성하기 위해

기본적인 재료라 할 수 있는 게이트(특히 NAND 게이트)에 대해서,

전지, 전선, 스위치, 릴레이, 부울 대수 등을 통해 구현해 보며 알아보았다.

 

[컴퓨터][10] NAND 게이트 변환 - 1 ( NOT, AND, OR )

※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다이전 글을 통해서논리 게이트들을 간편히 표현하기 위한게이트 기호들에 대해 알아보았다. [컴퓨터][9] 논리 게이

core-basic.tistory.com

 

[컴퓨터][11] NAND 게이트 변환 - 2 ( NOR, XOR, XNOR )

※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다이전 글을 통해서NAND 게이트만을 이용하여NOT, AND, OR 게이트를 구현해 보았다. [컴퓨터][10] NAND 게이트 변환 - 1 ( NOT

core-basic.tistory.com


그렇다면 게이트로 어떻게 컴퓨터로 구현할까?

< 게이트로 컴퓨터를 구현한다는 것은 어떤 의미인가 >
(폰 노이만 구조)

위와 같은 질문을 시작으로 아래와 같이 무수한 질문들이 떠올랐다.

컴퓨터 명령어란 정확히 무엇인가?

컴퓨터는 어떠한 회로에 어떠한 명령어를 대응시켰는가?

컴퓨터는 어떻게 명령어를 해석 및 처리하는가?

컴퓨터는 어떻게 처리 결과를 다른 장치로 보낼 수 있는가?

등등

결국 무수히 떠오르는 질문들에 대해서 어떤 질문부터 탐구하면 좋을지 순서를 매겼고,

그 결과 처음으로 탐구해야 할 질문은 아래와 같았다.

 

컴퓨터는 어떠한 목적을 가지고 설계하고자 하였는가?

 

그리고 그다음 질문은 아래와 같았다.

 

어떠한 구조를 가져야, 다양한 명령어를 효율적으로 처리할 수 있을까?

 

따라서 위의 두 질문을 이번 글을 통해 탐구해 보겠다.


< 컴퓨터 설계의 목적 >

초기의 컴퓨터는 수학적 계산을 자동화함으로써

노동과, 시간 그리고 오류를 줄이며, 더 큰 규모의 문제를 해결하고자 했다.

즉,
컴퓨터는 초기에 게이트들을 통해서 논리 연산과, 산술 연산 등 수학적 연산을 하는

회로들을 구현하여 계산기 역할을 했다는 것을 알 수 있다.


이후, 아래와 같은 질문이 제기되었다.

“계산 결과들을 다시 재활용할 수 없을까”

그 결과 데이터를 저장하고, 필요할 때 다시 읽어 사용할 수 있는

메모리(memory) 시스템이 등장하게 되었다.

즉,

컴퓨터는 게이트들을 통해서 수학적 연산을 하는 산술/논리 회로와,

회로 연산 결과를 저장하고 다시 읽을 수 있는 메모리 회로 등을 통해

계산의 반복을 줄이고,
이전 데이터를 기반으로 새로운 작업을 수행할 수 있게 되었다.


이후 또 아래와 같은 라는 질문이 제기되었다.

"컴퓨터가 한 가지 계산만이 아니라
여러 가지 작업을 자동으로 수행할 수 있다면?”

그 결과, 산술/논리 연산 기능을 가진 회로와,

저장과 읽기 기능이 있는 메모리 시스템 회로를

연결해 주는 제어장치(Control Unit : CU)가 등장하게 되었다.

CPU는 계산 기능과 메모리 기능 등 각 기능으로 연결되는 회로를 구축하고,

각 회로 자체에 사람이 이해하기 쉬운 ADD, SUB와 같은 명령어(의미)를 부여했다.

뿐만 아니라, 그러한 명령어들이 순서에 맞게 실행할 수 있도록 설계되어

여러 줄의 다양한 명령어를 자동으로 처리할 수 있게 되었다.

 

즉,

컴퓨터는 게이트들을 통해서 수학적 연산을 하는 회로와,

회로 연산 결과를 저장하고 다시 읽을 수 있는 메모리 회로

그리고, CPU 회로를 통해서, 각 회로들과 연결하여 명령어 체계를 구축하고,

여러 줄의 다양한 명령어들이 순서에 맞게 실행할 수 있게 되었다.

그리고

그렇게 다양한 작업을 하는 여러 줄의 명령어 집합을 프로그램이라 부른다

그리고 모든 구성 요소는 게이트로 구현할 수 있다.


그리고 또, “다른 컴퓨터와 데이터를 주고받을 수 있다면”라는 질문은

컴퓨터를 통신의 도구로 발전시키게 되었다.


< 폰 노이만 구조 >

위와 같은 컴퓨터의 발전 과정 중에 수학자이자 과학자인 폰 노이만은

다양한 명령어를 처리함으로써 여러 가지 작업, 프로그램을

자동으로 수행하는 컴퓨터를 설계하기 위해 아래와 같은 구조를 제시했다.

 

 

이에 따라 다음 주제로는

기본적으로 어느 명령어가 필요한지, 몇 개의 명령어가 필요한지 등에 대해서

컴퓨터 설계 목적에 맞추어

우선 기본적으로 어떠한 수학적 연산 회로가 필요한지 알아보겠다.


※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다.

728x90