[Computer Architecture] -“컴퓨터 시스템의 개요와 역사”
[Computer Architecture] -“컴퓨터 시스템의 개요와 역사”
컴퓨터란?
우리는 컴퓨터라는 말을 매우 자주 사용합니다. 2001년에 태어난 저의 세대와 같은 경우에는 더 이상 생소한 단어가 아니게 되었죠. 저는 제가 하고 있는 일과 공부에 컴퓨터를 달고 살고 있어 거의 신체의 일부가 되었고, 개발자를 직업으로 가지지 않는 사람들의 사무실에도 각자의 자리에 컴퓨터 한 대씩은 꼭 놓아져 있게 되었습니다.
그런데, 게임을 원하면 게임 속 거대한 이야기 속으로 들어가게 해 주고, 동영상을 원하면 수많은 컨텐츠를 제공해 주고, 계산을 원하면 엄청난 속도로 그것을 수행해 주는 컴퓨터는 대체 무엇이고 언제부터 생겨나게 된 걸까요? 지금은 컴퓨터라는 것이 우리가 원하는 많은 것들을 처리해 주지만, 세상에 마법은 없습니다. 이 모든 것들을 밑바닥부터 만들어내신 위대한 선배님, 박사님들이 계실 뿐이죠. 이번 글에서 우리는 컴퓨터는 뭔지, 당장 이 글을 읽고 있는 독자인 여러분 앞에 놓인 컴퓨터라는 것은 어떻게 생겨난 것인지에 대해 알아보고자 합니다.
‘컴퓨터'(computer)라는 명칭의 유래는 먼저 계산한다는 뜻의 라틴어 ‘콤푸타레'(computare)에서 유래했습니다. 이전의 컴퓨터라는 단어는 ‘계산하는 사람들’ 을 뜻하는 말이었지만, 최초의 현대적인 컴퓨터로 불리는 ENIAC
이 생겨났고, 그것을 조작하는 사람들을 ‘컴퓨터’ 라고 부르며 오늘날 우리가 생각하는 그 기계를 의미하는 말이 되었습니다.
이후 선배님들의 끊임없는 노력과 연구로 컴퓨터는 수많은, 그리고 복잡한 양의 데이터를 다룰 수 있게 되었습니다. ‘시스템’ 이라는 말은 ‘각 구성요소들이 상호작용하거나 상호의존하여 복잡하게 얽힌 통일된 하나의 집합체’ 로 정의되는데, ‘컴퓨터 시스템’ 이라는 말을 이해하기 위해서는 ‘컴퓨터는 어떤 구성요소가 있고, 어떻게 상호작용하며, 어떻게 얽혀 있는가?? 각 구성요소는 무엇이고, 어떻게 작동하는가?’ 를 탐구해 보아야 합니다.
컴퓨터 시스템은 외부의 데이터를 컴퓨터가 알아먹을 수 있는 데이터로 변환해 기억 장치로 전달해 주는 입력장치, 필요한 모든 데이터를 저장하는 기억장치, 실제 데이터를 처리하는 중앙처리장치, 처리된 데이터를 사람이 읽을 수 있는 상태로 변환해 주는 출력장치로 구성되어 있습니다. 역시나 이들 또한 그냥 생겨난 것이 아니죠. 이들은 어떤 역사로 생겨났고, 각각의 세대를 거치며 어떤 발전을 해 왔을까요?
대선배님들 등장이오, 제 1세대 컴퓨터 (1940s)
최초의 범용 전자식 컴퓨터, ENIAC
제 1세대 컴퓨터는 진공관이라는, 진공 속에서 전자의 움직임을 제어함으로써 전기 신호를 증폭시키거나 교류를 직류로 정류하는 데 사용하는 전기 장비 로 만들어졌습니다. 오른쪽 사진에서 보시다시피, ENIAC
은 무게 30톤, 가로 10m, 세로 3m, 높이 3m 의 엄청난 크기를 가지고 있었습니다. 이 시절, 프로그래밍을 한다는 것은, 천공 카드라는 것에 구멍을 송송 뚫어 데이터를 부호 형식으로 직접 바꿔 기록하는 낭만적인 행위였습니다. 기억 장치라고 불릴 만한 것이 없었기 때문에, 컴퓨터로 다른 동작을 수행하기 위해서는 수많은 천공카드와 플러그 노가다가 필요했고, 그 거대한 몸집만큼 잡아먹는 전력의 양도 어마무시했습니다.
폰 노이만 구조의 등장, EDVAC
헝가리 출신의 컴퓨터과학자, 수학자, 과학자, 경제학자인 폰 노이만은 이를 안타깝게 여겼고 새로운 컴퓨터 구조를 고안해 냈습니다. 지금까지는 컴퓨터가 다른 동작을 수행하고 싶을 때마다 엄청난 노가다인, 천공 카드에 구멍을 송송 뚫거나 플러그를 뽑고 다시 꼽는 행동들을 반복해야 했습니다. 그가 새로 고안한 방법은 프로그램을 컴퓨터 안에 내장하는 것이었는데, 오늘날의 대부분의 컴퓨터가 채택하고 있는 방식이었습니다. ENIAC
을 개선해 만들어진 EDVAC
은 프로그램 내장형 컴퓨터였고, 주기억장치와 보조기억장치, 2진수 표현을 사용하는 컴퓨터였습니다.
어렵고 거대하신 선배님들, 자리 좀 비켜주세요! 제 2세대 컴퓨터 (1950s)
1세대 컴퓨터들은 진공관 자체에서 오는 부피가 크고 수명이 짧다는 첫 번째 단점, 프로그램을 변경하기 위해서 기계어나 어셈블리어를 직접 다루어야 한다는 문제점을 가지고 있었습니다. 새로이 만들어진 트랜지스터라는 반도체 소자는 첫 번째 문제를, 고급 프로그래밍 언어인 ALGOL, FORTRAN, COBOL
은 두 번째 문제를 해결해 주었죠.
또한, 주기억장치에 자기코어와 자기소자와 같은 부품이 사용되어 기억 용량이 늘어났고, 입출력 처리장치가 도입되었으며, 시스템 프로그래밍의 개념이 등장해 컴파일러나 소프트웨어 라이브러리와 같은 도구들이 제공되었습니다. 이 밖에도 하드웨어 설계에 모듈화의 개념이 도입되고 자기 디스크가 개발되는 등, 여러 발전이 일어났습니다.
집적 트랜지스터, 제 3세대 컴퓨터 (1960s)
집적 회로는 다음과 같이 정의된다:[3]
물리학, 전자공학의 발달은 컴퓨터를 더 작게, 더 빠르게 만들고자 하는 인간의 욕구를 해소해 나가기 시작했습니다. 2세대 컴퓨터의 제작 과정에서, 그곳에 사용되는 각종 전자장비들은 저항이나 트랜지스터와 같은 부품들을 하나하나 납땜하여 장착되어야 했습니다. 하지만, 그런 부품들을 하나의 칩에 집적시켜 만든 집적 회로의 발명은 기존의 단점인 제작의 어려움과 비용을 쉽고 싸게 만들어 주었습니다.
크기, 가격 면에서 모두 혁신적이었던 집적 회로는 기존의 트랜지스터 기반 시스템들을 빠르게 대체해 나가기 시작했죠. 반도체의 발전으로, 주기억장치도 자기코어 기반에서 반도체 기반으로 대체되기 시작했습니다.
IBM 360
, 컴퓨터 구조와 구현의 분리
IBM 360
은 컴퓨터 계열 이라는 개념을 도입한 최초의 컴퓨터입니다. 같은 컴퓨터 계열들의 컴퓨터들은 동일한 명령어 집합을 가지고 똑같이 동작하지만, 구현의 세부 사항은 다를 수 있죠. 컴퓨터 제작자의 입장에서는 컴퓨터를 추상적인 구조에 따라 만들기만 하면 되었기에 발달된 기술을 동일한 컴퓨터에 적용할 수 있어 좋았고, 따라서 프로그래머들은 동일한 명령어 집합을 가지는 더욱 고성능의 컴퓨터를 사용할 수 있어 좋았습니다.
대규모 집적회로(LSI
), 초대규모 집적회로(VLSI
).. 4세대 컴퓨터 (1970s ~)
4세대 컴퓨터들에서는 여러 개의 집적회로를 또 하나의 패키지에 집적한 대규모 집적회로(LSI
), 더 고도화하여 만들어진 초대규모 집적회로(VLSI
)의 등장으로 컴퓨터 CPU의 기능을 한 개 또는 몇 개 이내의 집적회로에 집약한 마이크로프로세서 가 등장하였습니다. 마이크로프로세서의 등장은 위에서 보이는 IBM-PC-XT
와 같은 개인용 PC 의 보급에도 영향을 끼치게 되었습니다.
또한, 컴퓨터의 주변장치들이 저렴해지며 일상생활에서 각종 작업들을 컴퓨터를 이용해 자동화하기 시작했으며, 네트워크 기술(클라이언트-서버 모델, 인터네트워킹 개념)이 발달함에 따라 사용자가 다른 사용자의 컴퓨터 자원을 이용할 수도 있었죠.
컴퓨터 성능의 고점은..? 차세대 컴퓨터 (1980s~)
집적회로, 대규모집적회로로 발전되어 온 전자회로 부품의 소형 경량화를 더욱 진전시킨 회로인 초대규모 집적회로 (Very-large-scale integration; VLSI
) 기술의 발전은 고성능 설계 기술을 마이크로프로세서에 포함시킬 수 있게 하였고, 컴퓨터의 성능을 더더욱 향상시킬 수 있게 되었습니다. 이러한 하드웨어들의 발달은 앞으로 수많은 처리장치를 가진 대규모 병렬처리 컴퓨터(Massively Parallel Prossing computer
), 광 컴퓨터(optical computer
), 인간의 신경계통 다섯 가지를 모방한 신경망 컴퓨터(neural-net computer
) 에 대한 연구를 활발하게 진행시킬 수 있게 되었습니다.
컴퓨터 시스템의 전체적인 구조
컴퓨터 시스템은 하드웨어를 제어하여 원하는 결과를 얻도록 하는 소프트웨어, 컴퓨터의 기계 장치를 의미하는 하드웨어의 측면에서 그 구조를 구분할 수 있습니다. 각각에 대해 알아봅시다.
하드웨어들아, 일해라! 소프트웨어
컴퓨터의 입장에서 소프트웨어는 컴퓨터의 하드웨어들에게 명령을 내리는 역할을 합니다. 소프트웨어는 시스템 자체의 운영을 제어하고 지원하는 프로그램들(컴파일러, 어셈블러, 로더, 운영체제)인 시스템 프로그램, 사용자의 편의를 위해 만들어진 응용 프로그램(워드프로세서, 데이터베이스 등) 으로 구분될 수 있습니다.
네, 형님! 하드웨어
하드웨어는 컴퓨터의 기계적인 장치를 의미하는 용어입니다. 컴퓨터에는 어떤 장치들이 있고, 그들은 각각 어떤 역할을 할까요?
입력장치
우리는 세상을 있는 그대로 보고 있다는 중대한 착각을 합니다. 눈이 오면 눈이 오고, 비가 오면 비가 오는 것이 느껴지니까요. 하지만 뇌는 피부, 눈과 같은 우리의 감각기관으로부터 전달되는 전기 신호를 지금까지 쌓아온 인생의 경험에 비추어 끊임없이 해석할 뿐입니다.
컴퓨터 또한 세상을 있는 그대로 바라보질 못 합니다. 적어도 처리할 수 있는 데이터는 세상 그 자체가 아니라 데이터일 뿐이죠. 하여 세상에서 들어오는 데이터, 예컨대 사용자의 입력을 컴퓨터가 알아들을 수 있는 데이터 형태로 바꿀 수 있는 장치가 필요한데, 그것을 입력 장치라고 합니다. 예컨대, 위의 사진처럼 사용자의 입력을 받을 수 있는 키보드와 같은 장치가 있습니다. 물론 저는 지금 맥북의 내장 키보드를 통해 저의 컴퓨터에게 저의 글을 입력하고 있지만요 :)
출력장치
컴퓨터는 입력장치로부터 입력받은 데이터를 처리하고 결과를 생성해 냅니다. 우리의 마음이 그렇듯, 마음만 있고 그것을 표현하지 못하면 안 되죠. 컴퓨터에서 처리된 데이터를 사용자가 알아들을 수 있는 데이터의 형태로 변환해 주는 장치를 출력 장치라고 합니다.
기억장치
입력장치로부터 컴퓨터 내부로 들어온 데이터는 앞으로 처리되기 위해 어딘가에 기억되어야 합니다. 이렇게, 2진수 형태로 변환된 데이터를 저장하는 역할을 하는 장치를 기억장치라고 합니다. 컴퓨터에서 중앙처리장치가 처리할 데이터를 저장하는 주기억장치(RAM - 휘발성, ROM - 비휘발성
), 주기억장치와 중앙처리장치 사이에 위치하는 캐시, 전원이 꺼져도, 대용량의 데이터를 저장하기 위해 사용되는 보조기억장치가 있습니다.
중앙처리장치
중앙처리장치는 논리연산장치(ALU
)를 사용해 컴퓨터의 실제 연산을 수행하고, 제어장치(control unit
) 을 이용해 컴퓨터의 각 요소들을 순서에 맞추어 작동시킵니다. 그 연산처리 과정에서 필요한 데이터나 결과들을 일시적으로 보관해 두는 장치인 레지스터도 중앙처리장치의 요소 중 하나죠.
시스템 버스
버스(bus
) 는 컴퓨터 내부 구성 요소 간 또는 컴퓨터 간에 데이터를 전송하는 통신 시스템입니다. 그리고 컴퓨터 시스템은 여러 형태의 버스를 포함하고 있는데, 위에서 소개한 입력장치 & 출력장치 & 기억장치 & 중앙처리장치들을 서로 연결해 주는 장치를 시스템 버스라고 합니다. 이 버스라는 것은 한 번에 하나의 장치만 데이터를 전송할 수 있다는, 이진수로 표현되는(0 혹은 1) 데이터를 전송할 수 있다는 특징이 있습니다. (한 버스가 3개의 선으로 구성되어 있다면, 2^3=8 개의 데이터를 동시에 전송할 수 있습니다.)
요약
이번 글에서, 우리는 컴퓨터 시스템의 간략한 역사와 함께, 컴퓨터 시스템은 어떻게 구성되어 있는지를 알아보았습니다.
- 시스템은 그 시스템에 부여된 목적을 달성하기 위해 상호작용하는 구성요소들의 집합 으로 정의할 수 있는데, 컴퓨터 시스템은 기억장치, 중앙처리장치, 입력장치, 출력장치와 같은 구성요소들로 구성되어 있습니다.
- 컴퓨터들은 진공관을 사용한 1세대 컴퓨터, 트랜지스터와 고급 프로그래밍을 사용하게 된 2세대 컴퓨터, 집적 회로가 등장한 3세대 컴퓨터, 대규모 집적회로를 사용한 4세대 컴퓨터를 거치며 발전해 왔습니다.
- 컴퓨터 시스템은 소프트웨어(응용 소프트웨어, 시스템 소프트웨어)와 하드웨어(입력장치, 출력장치, 기억장치, 중앙처리장치, 시스템 버스)로 구성되어 있습니다.
다음