검수요청.png검수요청.png

컴퓨터

해시넷
이동: 둘러보기, 검색

컴퓨터(computer)란 전자적 방법으로 정보를 처리하는 기계를 말한다. 좁은 의미로는 개인용 컴퓨터(PC), 서버컴퓨터, 노트북 등을 말하고, 넓은 의미로는 스마트폰, 태블릿 PC, 웨어러블 컴퓨터 등을 모두 포함하는 말이다. 초고속 대용량 연산 처리가 가능한 슈퍼컴퓨터가 있다. 기존의 전자 컴퓨터보다 수백만 배 이상 빠른 양자컴퓨터가 등장하였다.

개요

각종 정보를 저장, 처리하고, 수학적 계산을 하는 도구다. 현재 우리가 알고 있는 컴퓨터는 전자회로를 이용해 프로그램과 정보를 전자적 형태로 저장하고, 빠르게 계산하고, 입력된 데이터를 정해진 프로그래밍에 따라 처리하는 전자기기이다. 우리말로 전자계산기라고 하기도 하고, EDPS(Electronic Data Processing System), ADPS(Automatic Data Procesing System)으로 부르기도 한다. 계산하다라는 뜻을 가진 라틴어 ‘컴푸타레(computare)’에서 기원한 것으로, 폭넓게 보면 전자회로의 유무와는 상관없이, 계산을 할 수 있는 기기 전반을 가리킨다. 초기의 컴퓨터는 주산, 기계식 계산기로도 볼 수 있다.[1] 수식이나 논리적 언어로 표현된 일련의 산술 연산이나 논리 연산을 자동으로 수행하도록 지시하거나 입력된 데이터를 가공하고, 처리된 데이터를 유용한 정보로 출력한다. 컴퓨터에 대한 정의는 가리키는 범위가 너무 넓어 쉽게 설명하기가 어렵다.[2] 1940년대 이후부터는 거의 대부분의 컴퓨터가 폰 노이만의 ‘폰 노이만 구조’를 기반으로 설계된다.

특징

컴퓨터는 프로그램과 데이터가 주어지면, 절차와 목적에 따라 자동적으로 처리하는 성질인 자동성을 가지고 있다. 컴퓨터는 전자적인 장치기 때문에 1초란 시간은 컴퓨터에서는 상당히 긴 시간이다. 아무리 작고 느린 컴퓨터라고 할지라도 하나의 컴퓨팅 명령을 수행하는 데에 걸리는 시간은 일반적으로 1마이크로초보다 작다. 이는 1초에 백만 개 정도의 컴퓨팅 명령을 처리 할 수 있다는 것을 의미하고, 5세대 컴퓨터의 명령어 처리는 1피코초 정도로, 1초에 1조 개 정도의 명령을 처리할 수 있을 정도로 신속하다고 한다. 이처럼 컴퓨터는 신속성을 가져야 하지만, 단순히 빠르기만 해서는 안 되기 때문에 정확성도 함께 가져야 한다. 전자회로를 통해 프로그램과 데이터의 처리가 항상 정확하게 출력되어야 한다. 현재 컴퓨터는 다른 어떤 기계보다도 기계적 요소에 대한 의존도가 낮고, 실제로 중앙 처리 장치주기억 장치의 핵심 부분은 반영구적으로, 회로 적으로 안정된 반도체로 구성되어 있어 고장 날 요인이 상대적으로 적고, 신뢰성이 높다. 신뢰성 유지를 위해 컴퓨터는 정기적으로 유지 보수가 되어야 하고, 만약의 사고를 대비하여 데이터의 예비 보관 작업, 시스템 고장에 대비하여 컴퓨터의 이중화를 사용하기도 한다. 컴퓨터에는 매우 많은 양의 데이터와 프로그램을 저장할 수 있다. 대용량의 각종 기억 장치를 가지고 있어, 한 번 저장된 자료는 임의로 삭제하지 않는 한 영구적으로 저장 가능하기 때문에, 발생한 모든 데이터를 기억 시켜 놓은 후, 필요할 때 언제든 다시 찾아서 사용할 수 있도록 보유성을 가져야 한다. 이 외에도 대부분의 컴퓨터는 다양한 분야에 응용 가능하도록 응용성을 가지는 등 여러 가지 특성이 있다.[3]

역사

어원

컴퓨터의 어원인 라틴어 콤푸타레는 함께라는 의미의 ‘콤(com)’, 생각하다라는 의미의 ‘푸투스(putus)’의 합성어로, 생각을 정리하며 수식을 따라 계산하는 것을 의미한다. 과거에는 기계적인 도움의 유무와 관계없이, 수학 계산을 수행하는 사람을 가리키는 말로 사용했고, 현재에는 전자적 기계를 의미하는 경우가 훨씬 많지만, 수학을 계산하는 사람으로 사용되기도 한다. 1897년에 처음으로 기계적 계산을 수행하는 기계를 일컫는 말로 사용되었다.[2]

기계식 계산기

인류 역사상 최초의 계산기인 주판은 기원전 2400년경에 바빌로니아에서 개발된 이후, 기원전 2000년경 중국에서 개량을 거쳐 거의 2000년 이상 쓰였다. 하지만 주판은 사용 방법을 익히는 데 시간이 걸리고, 계산 과정에 상당한 부분을 사람의 머리에 의존했다. 자동으로 계산할 수 있는 최초의 계산 도구는 17세기부터 본격적으로 개발되기 시작했다. 기계식 계산기는 톱니나 피스톤과 같은 기계 부품으로 구성된 것으로, 이를 사람이나 엽의 힘으로 돌리면서 계산할 수 있었다. 그러나 물리적으로 맞물린 기계 부품으로 구성된 탓에 구조가 복잡한 데다, 고장이 잦아 관리가 어려웠다. 복잡한 계산을 할수록 뻑뻑해져 구동이 잘 되지 않는다는 단점도 있었다.

전자식 계산기

이러한 단점을 극복하기 위해 19세기부터 전자식 계산기, 즉 근대적 의미의 컴퓨터가 고안되기 시작했다. 1822년 영국의 찰스 배비지(Charles Babbage)가 기계식 디지털 계산기인 ‘차분기관(difference engine)’을 발표했다. 차분 기관은 기존의 기계식과 달리 로그 함수와 삼각 함수의 계산이 가능했고, 핸들을 돌려 작동하기는 했지만, 천공 카드를 이용해 디지털 데이터를 기록할 수 있다는 점에서 오늘날의 컴퓨터와 유사한 점이 있다. 1904년에 영국의 존 플레밍(John Ambrose Fleming)이 진공 상태에서 전자의 흐름을 조절해 신호의 변경과 증폭을 가능하게 하는 ‘진공관’을 개발했고, 1936년 영국의 앨런 튜링(Alan Turing)이 입력과 연산, 그리고 출력과 기억을 연속적으로 할 수 있는 ‘튜링 기계’의 개념을 정의한 논문을 발표했다. 진공관의 개발과 튜링 기계의 발표로, 근대적 컴퓨터의 핵심 부품과 기본 동작 원리가 확립되었다.[1] 전자식 계산기는 수를 저장하는 장치(기억장치), 저장된 수치들로 계산을 하는 장치(연산장치), 기계의 동작을 제어하는 장치(제어장치), 입출력 장치로 이루어져 오늘날 사용하는 자동 컴퓨터의 기본 요소를 모두 갖추고 있다.[4]

1939년, 미국 아이오와 주립대학의 존 아타나소프(John Vincent Atanasoff)와 그의 조수였던 클리포트 베리(Clifford Berry)가 ‘아타나소프 베리 컴퓨터’(Atanasoff-Berry Computer)라는 세계 최초의 완전한 전자식 컴퓨터를 발표했다. 약자를 따 ‘ABC’로 더 많이 불렸던 이 컴퓨터는 1939년 시험 모델 제작을 통해 최초 가동 실험을 했고, 1942년에 완성품이 발표되었다. 280개의 진공관과 1.6km 이상의 케이블로 구성되었고, 무게는 320kg 정도로, 디지털 방식의 데이터를 사용하며, 기계적인 장치 없이 완전한 전자식으로 연산이 가능했지만, 실험적인 의미가 강했기 때문에 실용성은 거의 없었다. 1944년, 영국에서 [[앨런 튜링]이 고안한 것을 바탕으로 체신청의 기술자인 토미 플라워스(Tommy Flowers)가 설계한 ‘콜로서스(Colossus)’라는 전자식 컴퓨터가 개발되었다. 콜로서스는 군사용으로 쓰였기 때문에 당시에는 존재 자체가 극비로, 외부에는 거의 알려지지 않았지만, 1975년 영국 정부기 기밀을 해제함으로써 알려졌다. 2차 세계대전 중 독일군의 암호를 해독하는 작업에 주로 쓰였고, 많은 성과를 올렸다고 한다. 콜로서스를 세계 최초의 ‘실용화된’ 컴퓨터로 분류하기도 한다.[5]

최초의 컴퓨터

1964년 2월, 최초의 전자식 진공관 컴퓨터 에니악(ENIAC: Electronic Numerical Integrator and Calculator)이 탄생했다. 미국 펜실베이니아 대학의 존 에커트(John Presper Eckert)와 존 모클리(John William Mauchly)가 미국 탄도연구소의 의뢰로 3년간의 연구 끝에 선보인 에니악은 일반인이 손으로 계산하는 것보다 20만 배나 빠른 초당 5000번의 연산을 할 수 있었다. 이전의 전기식 계산기인 ‘MARK 1’이 초당 3번의 연산을 할 수 있었던 것에 비하면 엄청나게 빨라졌다는 사실을 알 수 있다. 17,000개 이상의 진공관과 7만개 이상의 저항기로 구성된 에니악은 총 무게가 약 30톤에 달할 정도로 거대했고, 150KW의 소비전력으로 한번 가동하면 필라델피아 시내의 전등이 모두 깜빡거릴 정도였다고 한다. 지금의 컴퓨터와는 달리 입력장치와 기억장치가 없었고, 배전반을 연결하여 연산했기 때문에, 한 연산을 마치고 다른 연산을 시작하기 위해선 배선을 바꿔야 하는 번거로움이 있었다. 에니악은 미국 탄도연구소에 설치된 후 군사 프로젝트 개발을 위한 연산에 활용되었고, 2차 대전 후에는 일기예보 등에 활용되었다. 현재는 워싱턴의 스미스소니언 박물관에 보존되어있다. 한때 세계 최초의 컴퓨터로 알려지기도 했지만, 법정 공방의 끝에 에니악이 아닌 ABC가 세계 최초의 컴퓨터로 인정받게 되었다.[6]

근대 컴퓨터

애니악이 사용되던 시대의 컴퓨터는 새로운 작업을 할 때마다 회로와 기억장치를 바꿔 끼워야 하는 불편함이 있었다. 이러한 단점에 대응하여, 1945년 헝가리 출신의 미국 수학자 존 폰 노이만(John von Neumann)이 컴퓨터 내부의 기억장치소프트웨어 방식의 프로그램을 내장하여, 소프트웨어만 바꾸면 여러 가지 작업에 대응할 수 있도록 하는 프로그램 내장 방식 컴퓨터의 개념을 발표했다. 이를 바탕으로 1949년 처음으로 폰 노이만 구조(Von Neumann Architecture)를 실용화한 컴퓨터인 ‘에드삭(EDSAC: Electronic Delay Automatic Calculator)’이 등장했고, 몇 개월 후 에드삭의 개량형인 ‘에드박(EDVAC: Electronic Discrete Variable Automatic Computer)’도 발표되었다.[1]

상용 컴퓨터

앞의 과정들을 통해 실용적인 컴퓨터의 기본 개념은 거의 확립되었다. 이것을 바탕으로 1950년대부터 컴퓨터의 상용화가 시작되었다. 최초의 상용 컴퓨터는 1950년 완성되어 이듬해부터 출시를 시작한 레밍턴 랜드사의 ‘유니박(UNIBAC: Universal Automatic Computer)’로, 유니박 1은 대당 16만 달러에 판매되었다. 유니박 이후에도 여러 가지 상용 컴퓨터가 출시되었지만, 높은 가격과 큰 덩치로 인해 대부분 정부 기관이나 기업에서만 사용되었다. 1977년, 미국의 애플사에서 애플2라는 소형 컴퓨터가 출시되면서 컴퓨터의 대중화가 시작되었다. 크기가 작고 사용법도 간편했으며, 1,300달러 정도로 비교적 저렴한 가격으로 대중들 사이에서 인기를 끌었다. 현재 가장 많이 사용되고 있는 개인용 컴퓨터(PC)의 규격은 1981년, 미국의 IBM사에서 출시한 ‘IBM 퍼스널 컴퓨터 5150’으로부터 시작되었다. 비교적 값이 싸고 쉽게 구할 수 있는 부품들로 구성되었고, 내부 구조를 완전히 공개하여, 다른 회사나 개인이 직접 IBM 개인용 컴퓨터와 호환되는 기종을 만들 수 있었다. 이후 대부분의 개인용 컴퓨터의 기본적인 아키텍처는 IBM 개인용 컴퓨터의 호환 규격을 따르고 있다.[1]

구성

중앙처리장치

중앙처리장치(central processing unit)는 약자를 따서 CPU 라고 부르기도 한다. 컴퓨터의 5대 장치(제어장치, 연산장치, 기억장치, 입력장치, 츌력장치) 중 제어장치와 연산장치가 해당된다. 여기에 레지스터와 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있다. 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치다. 개인용 컴퓨터와 같은 소형 컴퓨터에서는 중앙처리장치를 마이크로프로세서라고 부르기도 한다.

제어장치

제어장치(unit control)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치로, 명령 레지스터에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시한다. 명령어 해석과 연산을 위해 여러 가지 레지스터를 사용하는데, 사용하는 레지스터들은 다음과 같다. 명령 레지스터는 현재 실행 중인 명령어의 내용을 기억하는 레지스터다. 명령 해독기(Decoder)는 명령 레지스터에 있는 명령어를 해독하는 회로, 제어신호 발생기, 부호기(Encoder)는 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성하는 회로다. 제어 주소 레지스터(CAR)에는 다음 실행할 마이크로명령어의 주소를 저장하는 레지스터로, 매핑의 결괏값, 주소 필드, 서브루틴 레지스터의 내용들이 적재되어 있다. 제어 버퍼 레지스터(CBR)는 제어 기억장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장하는 레지스터다. 제어 기억장치는 마이크로 명령어들로 이루어진 마이크로명령어 비트들을 일시적으로 저장하는 레지스터다. 순서 제어 모듈은 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합이고, 순차 카운터(Sequence counter)는 디코더에 의해 선택된 번호에 해당하는 타이밍 신호를 생성한다.

연산장치

연산장치(arithmetic logic unit)는 제어장치의 명령에 따라 실제로 연산을 수행하는 장치로, 주기억장치로부터 받은 자료에 대하여 프로그램 명령에 따라 산술연산과 논리연산을 실행한다.[7] 산술연산은 덧셈, 뺄셈, 곱셈, 나눗셈 사칙 연산을 가지고 수치에 대하여 계산하는 것이고, 논리 연산은 참과 거짓의 논리 값에 대하여 연산하는 것이다. 수행하는 것으로 구성요소로는 가산기, 누산기, 보수기, 데이터 레지스터, 오버플로 검출기, 시프트 레지스터 등으로 구성되어 있다. 가산기와 누산기는 데이터 레지스터의 두 수를 가산하는 기능을 하고, 덧셈 결과가 누산기에 저장된다. 데이터 레지스터는 실행 대상이 2개 필요할 경우, 주 기억 장치에서 읽어 들인 데이터를 임시 보관하는 역할을 한다.[8]

레지스터

레지스터(register)는 플립플롭이나 래치들을 병렬로 연결하여 구성한 것으로, 메모리 중에서 속도가 가장 빠른 것이다. 레지스터의 크기는 워드를 구성하는 비트 개수만큼의 플립플롭으로 구성되며, 여러 개의 플립플롭에는 공통 클록의 입력 때문에 동시에 여러 비트의 자료가 저장된다. 레지스터를 구성하는 플립플롭은 저장하는 값을 임의로 설정하기 위해 별도의 입력 단자를 추가할 수 있으며, 저장값을 0으로 하는 것을 설정해제(CLR)이라고 한다.

버스

버스(bus)는 중앙처리장치, 메모리, 입출력 장치 등과 상호 필요한 정보를 교환하기 위해 연결된 공동의 전송선으로, 컴퓨터 내부 회로에서 버스선을 사용하는 이유는, 결선 수를 줄이기 위함이다. 메모리나 입출력 장치가 제대로 작동하려면, 버스를 통해 전달되는 제어 신호 어드레스 신호 및 데이터 신호의 상호 시간적 관계가 잘 유지되어야 한다. 중앙처리장치 내부의 전송로를 내부 버스, 중앙처리장치와 주기억장치 및 주변장치로의 전송로를 외부 버스라고 한다. 한 번의 전송으로 본래 수 있는 데이터량을 버스폭이라고 하고, 비트 단위로 나타낸다. 전송하는 종류에 따라 번지 버스(Address Bus), 자료 버스(Data Bus), 제어 버스(Control Bus)로 분류할 수 있다. 번지 버스는 중앙처리장치가 메모리나 입출력장치의 주소를 지정할 때 사용하는 단방향 전송선이다. 자료 버스는 중앙처리장치와 메모리 또는 입출력장치 사이에서 데이터를 전송하는 양방향 전송선이다. 제어 버스는 중앙처리장치의 현재 상태나 상태 변경을 메모리 또는 입출력장치에 알리는 제어 신호를 전송하는데 사용하는 양방향 전송선이다.[7]

기억장치

기억장치는 속도, 용량, 성능에 따라 계층적으로 분류할 수 있다. 보조기억장치, 주기억장치, 캐시, 레지스터 4계층이 있는데, 이 중 보조기억장치는 실행되기 위해서는 프로그램이나 데이터가 주기억 장치로 옮겨져야 하고, 레지스터, 캐시, 주기억장치는 프로그램과 데이터를 직접 읽을 수 있다. 기억장치를 계층화하는 이유는 전체 메모리 시스템의 가격을 최소화하면서, 평균 접근 속도를 가능한 최소화하기 위한 것이다. 내용의 보존 여부, 전원 단절 시 내용 소멸 여부, 재충전(Refresh) 여부, 접근 방식에 따라 다음과 같이 4가지로 분류할 수 있다. 내용의 보존 여부에 따라 판독 후에 내용이 저장되는지 여부에 따라 파괴성 메모리와 비파괴성 메모리로 나뉜다. 파괴성 메모리는 자기코어와 같이 판독 후 저장된 내용이 파괴되는 메모리로, 파괴된 내용을 재생시키기 위해서는 저장 시간이 필요하다. 비파괴성 메모리는 자기코어를 제외한 기억장치들로, 판독 후에도 저장된 내용이 그대로 유지된다. 전원 단절 시 내용 소멸 여부에 따라서도 나눌 수 있다. 전원이 단절될 때, 메모리의 보존 여부에 따라 나뉘는데, 우리가 잘 알고 있는 (Read Only Memory)과 (Random Access Memory)이 분류에 해당된다. 램은 전원이 단절되면 모든 정보가 지워지는 휘발성 메모리이고, 롬은 전원이 단절되더라도, 기억된 정보가 보존되는 비휘발성 메모리이다. 재충전 여부에 따른 분류는 전원이 공급됨에 따라, 기억 내용이 계속 유지되는 지에 대한 여부에 따른 분류다. 전원이 공급되는 한 기억된 내용이 계속 유지되는 메모리를 정적메모리(SRAM)라 하고, 전원이 공급되어도 일정한 시간이 지나면 내용이 지워져, 재충전을 해줘야 하는 메모리를 동적 메모리(DRAM)이라 한다. 접근 방식에 따른 분류는 자료의 저장 위치에 순차적으로 접근해야 하는 경우와 직접적으로 접근할 수 있는지에 따라 구분된다. 자기 테이프와 같이 자료가 저장된 위치에 처음부터 순서대로 접근해야 원하는 위치가 검색되는 메모리를 순차 접근 저장 매체(SASD)라 하고, 순서를 거치지 않고 자료가 저장된 위치에 직접 접근할 수 있는 메모리를 직접 접근 저장 매체(DASD)라고 한다. 자기 테이프를 제외한 모든 기억장치는 직접 접근 저장 매체에 해당한다.[9]

주기억장치

주기억장치는 중앙처리장치가 직접 접근하여 처리할 수 있는 고속의 기억장치로, 현재 수행되는 프로그램과 데이터를 저장하고 있다. 종류에는 롬과 램이 있다. 램은 롬에 비해 늦게 개발되었는데, 램 개발 이전 1955년에서 1975년까지 약 20년 동안은 자기 코어가 메인 메모리로 사용되었다. 자기 코어 메모리는 중심을 통과하는 전선에 흐르는 전류의 방향에 따라 1 혹은 0의 값을 갖는다. 전류 일치기술에 의하여 기억장소가 선별되고, 파괴 메모리이기 때문에 내용을 읽은 후 지워진 내용을 기록하기 위해 재저장 시간이 필요하다. 저장을 위해 1bit마다 하나의 코어 플레임(core plane)이 필요하다. 부피에 비해 용량이 작고, 가격이 비싸 현재는 거의 사용하지 않고 있다. (ROM)은 비휘발성 메모리로, 기억된 내용을 읽을 수만 있는 기억장치로, 쓰기는 불가능하다. 주기억장치로 사용되기보다는 주로 입출력 시스템(BIOS), 자가 진단 프로그램(POSST) 같은 변경 가능성이 희박한 시스템 소프트웨어를 기억시키는 데 이용한다. 제조 공장에서 프로그램화하여 생산한 마스크 롬(MASK ROM)은 사용자가 내용을 변경시킬 수 없다. PROM(Programmable ROM)은 특수 장비를 이용하여 롬에 한 번만 내용을 기입할 수 있고, 이후에는 읽기만 가능하다. EPROM(Erasable PROM)은 자외선을 쏘여서 기입한 내용을 지울 수 있고, PROM 프로그램의 장치로 내용을 기록할 수 있는 롬으로, 사용자가 여러 번 반복해서 지우거나 기록할 수 있다. EAROM(Erasable Alterable ROM)은 전기적 특성을 이용하여 기록된 정보의 일부를 바꿀 수 있는 롬이다. EEPROM(Electronic EPROM)은 전기적인 방법을 이용하여 기록된 내용을 여러 번 수정하거나 새로운 내용을 기록할 수 있는 롬이다. (RAM)은 자유롭게 읽고 쓸 수 있는 휘발성 기억장치로, RWM(Read Write Memory)라고도 한다. 현재 사용 중인 프로그램이나 데이터가 저장되어 있고, 일반적으로 주기억장치 또는 메모리를 얘기할 경우 대부분이 램을 의미한다. 정보가 저장된 위치는 주소로 구분한다. 램은 재충전 여부에 따라 정적메모리와 동적 메모리로 나뉜다. 동적 메모리는 전원이 공급되어도 일정 시간이 지나면 전하가 방전되어 주기적으로 재충전이 필요한 램으로, 구성 소자로는 콘덴서가 사용된다. 전력 소모가 적고, 접근 속도가 느리고, 집적도가 높다. 일반적인 주기억장치로 사용되는 저가의 램이다. 정적메모리는 전원이 공급되는 동안에는 기억 내용이 유지되는 램으로, 구성 소자로 플립플롭이 사용된다. 전력 소모가 많지만, 접근속도가 빠르다. 집적도가 낮고, 주로 캐시메모리로 사용되는 고가의 램이다.[10]

보조기억장치

보조기억장치는 주기억장치의 단점을 보완하기 위한 기억장치이다. 주기억장치에 비해 속도는 느리지만, 전원이 차단되어도 내용이 그래도 유지되고 저장용량이 크다는 장점이 있다. 중앙처리장치와 직접 자료 교환이 불가능하고, 접근시간이 오래 걸린다. 일반적으로 주기억장치에 데이터를 저장할 때는 직접 메모리 접근(Direct Memory Access) 방식을 사용하고, 중앙처리장치는 보조기억장치에 직접적으로 접근할 수 없다는 등의 특징이 있다. 보조기억장치에는 자기 테이프, 자기 디스크, 자기 드럼이 있다. 자기 테이프는 주소의 개념 없이, 처음부터 차례대로 처리하는 순차처리만 할 수 있는 대용량 저장 매체로, 평균 처리 시간이 가장 길다. 자성물질이 코팅된 얇은 플라스틱 테이프를 동그란 릴에 감아 놓은 형태로, 가격이 저렴하고 용량이 커 자료의 백업용으로 많이 사용한다. 테이프의 시작과 끝부분을 알리는 은박지 사이의 정보 저장 부분을 7~9트랙으로 구성하였고, 블록 단위로 데이터를 전송하며, 블록과 블록 사이에는 데이터를 기록할 수 없는 공간인 갭(GAP)이 존재한다. 자기디스크는 자성 물질을 입힌 금속 원판을 여러 장 겹쳐서 만든 기억매체로 용량이 크고, 접근 속도가 빠르다. 자기 테이프와 달리 순차, 비순차 처리가 모두 가능하고, 개인용 컴퓨터에서 디스켓이나 하드디스크 형태로 많이 사용한다. 회전축에 여러 장의 디스크를 연결하고, 디스크의 상, 하면을 액세스암(Access Arm)에 연결하여 구성된 것으로, 가장 윗면과 가장 아랫면은 사용하지 않는다. 트랙, 섹터, 실린더로 구성되어 있다. 트랙은 디스크 표면에서 회전축을 중심으로 데이터가 기록되는 동심원이고, 섹터는 트랙을 일정한 크기로 구분한 부분으로, 정보 기록의 기본단위이다. 실린더는 서로 다른 면들에 있는 동일 위치의 트랙들의 모임으로, 실린더의 수는 한 면의 트랙 수와 동일하다.[11]

캐시기억장치

캐시기억장치는 주로 캐시 메모리라고 부르는데, 중앙처리장치의 처리속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 고속 버퍼 메모리이다. 주기억장치와 중앙처리장치 사이에 위치하여, 자주 사용하는 프로그램과 데이터를 기억하여, 주기억장치로의 접근 횟수를 줄여 컴퓨터의 처리속도를 향상시켜준다. 메모리 계층 구조에서 가장 빠른 소자로, 중앙처리장치의 속도와 비슷한 정도의 속도를 가진다. 캐시 주소표는 검색 시간을 단축시키기 위해 주로 연관 기억장치를 사용하고, 캐시의 크기는 보통 수십 KByte에서 수백 KByte이다. 주기억장치로부터 캐시 메모리로 데이터를 전송하는 매핑 프로세스에는 3가지 방법이 있다. 먼저 직접 매핑(Direct Mapping) 방식으로, 주기억장치의 블록들이 지정된 한 개의 캐시 라인으로만 사상될 수 있는 매핑 방법이다. 간단하고 구현하는 비용이 적게 들지만, 적중률이 낮아질 수 있다는 단점이 있다. 이 단점을 보완하기 위해 어소시에이티브 매핑(Associative Mapping)을 사용할 수 있는데, 다만 모든 태그들을 병렬로 검사하기 때문에 복잡하고 비용이 높다는 단점 때문에 거의 사용하지 않는다. 마지막으로, 직접 매핑과 어소시에이티브 매핑 장점만을 모아서 만든 세트-어소시에이티브 매핑(Set-Associative Mapping)이 있다.[12]

입력장치

인간이 정보를 해석하고 기억하는 방식과 달리 컴퓨터는 0과 1로만 정보를 표시하게 되어 있다. 이러한 정보를 인간이 사용하는 문자, 도형, 목소리, 숫자 등의 자료를 읽어 들여 0과 1의 이진수 형태로 바꾸어 컴퓨터가 처리를 할 수 있도록 해주는 역할을 하는 것이 입력 장치이다. 대표적인 입력장치에는 키보드, 마우스, 태블릿, 스캐너, 마이크 등등 컴퓨터에 내용을 입력할 수 있는 모든 장치가 포함된다.

출력장치

입력장치에 의해서 입력된 자료를 처리 장치에 의하여 나온 결과를 화면이나 프린터로 출력하게 해주는 장치이다. 대표적인 출력장치로는 모니터, 스피커, 프린터, 그래픽 카드 등등 출력할 수 있는 모든 장치가 포함된다.

분류

세대별 분류

  • 제1세대 컴퓨터: 진공관을 이용해 만든 컴퓨터로, 저급 언어(기계어)를 이용하여 프로그램을 작성하기 때문에 오랜 시간이 걸리고, 수학 전공자가 아니면 이해하기 어려웠다.
  • 제2세대 컴퓨터: 기억소자로 트랜지스터를 처음으로 도입했다. 트랜지스터는 진공관과 기능이 유사하지만 크기가 훨씬 작고, 발열 및 전력 소모에서 효율적이다. 2세대 컴퓨터를 바탕으로 COBOL, FORTRAN 등의 언어가 탄생했지만, 컴퓨터와 프로그래밍은 아직 일반인들과는 거리가 멀었다.
  • 제3세대 컴퓨터: 기억소자로서 직접 회로를 사용한다. 직접 회로는 수백 개의 트랜지스터와 부품들을 칩으로써 통합한 전자회로를 의미한다. 다중 프로그래밍의 개념이 처음으로 등장하였고, 고속 처리가 가능해졌다.
  • 제4세대 컴퓨터: 고밀도직접회로를 사용했고, 초고밀도 직접 회로를 통해 고성능 컴퓨터도 구비할 수 있게 되었다. 1970년대 단일 마이크로프로세서에서부터 인텔(intel) 운영체제를 가미한 상업용 개인용 컴퓨터도 출현했다. 1990년대에 들어서 우리가 알고 있는 윈도우가 등장했고, 고밀도직접회로의 상용화 덕에 많은 사람들이 PC를 가질 수 있게 되었다.
  • 제 5세대 컴퓨터: 인공지능을 갖춘 개인용 컴퓨터를 의미하는 것으로, 현재는 상용화되어있지 않지만, 앞으로 지적 대화 기능이나, 추론 기능에 대응할 수 있는 컴퓨터 시스템 개발을 과제로 이루어 나가야 할 목표이다. 컴퓨터 스스로 논리적인 추론이 가능하게 되고, 내부 및 외부의 데이터를 상호 조합할 수 있게 된다고 한다.[13] 제 5세대 컴퓨터에 포함되어야 할 주요 시스템으로 문제 해결 및 추론 시스템, 지식 베이스 시스템, 지적 인터페이스 시스템이 있다.
  1. 문제 해결 및 추론 시스템은 외부에서 주어진 지식뿐만 아니라, 시스템에 기억되어 있는 데이터를 사용하여 컴퓨터 스스로 논리적인 추론을 하여 문제를 해결하도록 하는 시스템이다. 연역, 귀납적 추론 등 지식계의 상호 보완에 의한 협조형 문제 해결 기능 등이 이 시스템에 포함된다.
  2. 지식 베이스 시스템은 데이터뿐만 아니라 합리적인 판단, 실험 결과 등을 체계적으로 정리한 지식을 시스템 내에 기억하여, 필요한 때에 검색하는 기능을 지닌 시스템이다.
  3. 지적 인터페이스 시스템은 컴퓨터에 인간이 말하는 자연 언어, 음성, 도형, 화상 등을 다루는 능력을 부여하여, 인간과의 대화가 순조롭게 진행되도록 하는 기능이다. 쉽게 말하자면 자연 언어의 이해를 중심으로 컴퓨터에 눈, 귀, 입을 부여하는 것이다.[4]

데이터 표현에 따른 분류

  • 아날로그 컴퓨터 : 연속되는 물리량(전류, 전압 온도 등의 아날로그 데이터)을 입력하고, 이들을 처리한 후에 결과를 곡선, 그래프 등 연속적인 값으로 나타내어 종이나 모니터에 출력하는 컴퓨터로, 주로 미적분 함수의 계산, 공정 관리를 위한 온도 조절, 프로세스 제어 및 미래 상품을 개발하고자 할 때 성능이나 특성에 대한 모의실험 등에 사용된다. 이 컴퓨터에는 증폭 회로가 주로 사용되며 속도는 빠르나 저장용량이 제한되어 있고, 디지털 컴퓨터에 비해서 정확도에 한계가 있으며 범용성과 호환성도 훨씬 취약하다. 따라서 일반적으로 사용하기보다는 특수 목적용 컴퓨터로 사용된다. 데이터의 발생 시점에서 변환 없이 바로 입력하여 처리 결과를 얻을 수 있다는 장점이 있지만, 저장 기능이 없고, 정밀도나 범용성이 디지털 컴퓨터에 비해 떨어진다.
  • 디지털 컴퓨터 : 숫자나 문자 등 모든 자료를 수치적으로 코드화하여 사용하며, 사칙 연산을 기본으로 논리 연산 등 다양한 처리 결과를 나타내는 컴퓨터다. 원하는 자릿수만큼 또는 필요한 정밀도까지도 결과를 얻을 수 있고, 논리회로가 주로 사용된다. 일반적으로 컴퓨터라고 하면 디지털 컴퓨터를 뜻한다. 모든 동작은 프로그램에 의하여 수행되고, 프로그램을 바꾸어 여러 가지 일을 수행할 수 있다. 아날로그 컴퓨터에 비해서 조금 느리긴 하지만, 최근 하드웨어와 소프트웨어의 발전 덕분에 크게 문제가 되지는 않고 있다.
  • 하이브리드 컴퓨터 : 아날로그 컴퓨터의 저렴한 가격, 신속한 처리 속도와 디지털 컴퓨터의 정확성 및 모든 장점들을 통합하여 제작된 컴퓨터로, 항공기 미사일 등의 복잡한 설계 및 기술 계산을 위한 특수 용도로 이용된다. 하이브리드 컴퓨터의 특징은 어떤 유형의 자료도 모두 처리하여 취급할 수 있도록, 아날로그 신호를 디지털 신호로 변화하기 위한 A/D 변환기(Analog/Digital Converter)와 디지털 신호를 아날로그 신호로 변화하기 위한 D/A 변환기(Digital/Analog Converter)가 내장되어 있다. 변환기를 통해 아날로그 형태로 입력된 데이터를 디지털 형태로 처리하고, 처리 결과를 아날로그 형태 또는 디지털 형태로 출력할 수 있다. 아날로그와 디지털 모드 취급할 수 있기 때문에, 수치적 데이터나 물리적인 값 등 모든 유형의 데이터를 출력 가능하다.[14]

사용 목적에 따른 분류

  • 범용 컴퓨터 : 사회 각 분야에서 광범위하게 사용할 수 있도록 일반적인 자료처리와 광범위한 문제들을 해결할 수 있도록 설계, 제작되었다. 일반 사무용과 과학 기술 계산용으로 구분된다. 기억 용량이 크고, 처리 속도가 빠를 뿐만 아니라, 입출력 장치가 다양하다. 일반 사무용은 기업체나 공공기관 등에서 사용되는 것으로, 주로 많은 양의 자료를 다루기 때문에 입력과 저장 및 검색 등의 효율성에 중심을 둔다. 과학 기술용은 일반적으로 연산 기능과 처리 속도가 빠르도록 설계한다.
  • 특수 목적 컴퓨터 : 컴퓨터가 해야 할 일을 미리 정하여, 그 작업만을 효율적으로 처리하도록 연산 기능이나 처리 속도 등 특정한 기능을 중심으로 설계된 컴퓨터를 말한다. 전용 컴퓨터라고 부르기도 한다. 특정한 문제의 해결이나 제한된 범위의 문제만을 처리하기 위해 설계되는 것으로, 특정 기계에 부착되어 정해진 프로그램에 의해 특정한 데이터만을 받아들여 처리한다. 미사일이나 항공기의 궤도를 추적하고, 유도탄의 자동 유도장치를 계산하기 위한 군사용 컴퓨터나, 핵반응 시설 제어나 자동공정 제어를 위한 산업용 컴퓨터, 지하철의 운행이나 개찰, 의료 단층 촬영 등을 위한 업무용 컴퓨터 등이 해당된다.[15]

처리 능력에 따른 분류

  • 슈퍼컴퓨터(Super computer) : 초대형 컴퓨터라고도 불리는 이 컴퓨터는 여러 개의 중앙처리장치를 병렬로 연결하여 용량이 큰 대신 대규모의 벡터 계산이나 행렬 계산의 처리 속도가 매우 빠르다. 대용량의 과학 계산을 효과적으로 처리할 수 있는 능력을 가지고 있어, 복잡하고 정밀한 연산이 필요한 특수한 장소나 환경에 설치되어 유지 및 관리된다. 석유 탐사, 지진 및 핵분열, 일기 예보 계산을 비롯하여 위성사진 분석, 항공기의 모의실험, 우주 개발 등 첨단 산업 개발에서 사용된다.
  • 메인프레임(Mainframe) : 슈퍼컴퓨터보다 용량은 작지만 다른 컴퓨터들에 비해 기억 용량이 크고, 다양한 데이터를 처리할 수 있는 범용의 컴퓨터로, 다수의 단말기가 연결되어 있다. 소형 컴퓨터보다 성능이나 규모 면에서 뛰어나지만, 가격이 비싸다. 여러 대의 단말기가 연결되어 있어, 여러 명의 사용자가 각자의 단말기를 통하여 공동으로 사용할 수 있다. 따라서 온라인 업무나 분산 처리 업무를 주로 하는 공공 단체, 대기업, 은행, 병원, 대학, 정부 기관 등에서 메인 프레임 컴퓨터를 효율적으로 활용하고 있다.[16]
  • 미니컴퓨터(Mini computer) : 1960년대 말, 연구, 기술, 교육 등을 목적으로 개발되었다. 성능과 크기 면에서 메인 프레임과 마이크로컴퓨터 사이의 컴퓨터를 말하는데, 현재는 메인 프레임과 미니컴퓨터의 구분이 모호해졌다. 미니컴퓨터 중 메인 프레임 컴퓨터와 비슷한 처리 능력과 성능을 가진 우수한 성능을 가진 경우 슈퍼미니컴퓨터라고 한다. 가격 면에서 메인 프레임보다 저렴한 중형 컴퓨터다.
  • 워크스테이션(Workstation) : 양질의 그래픽 환경을 제공하여, 개인용으로 사용하는 컴퓨터로, 자동차 및 항공기 또는 여러 기계의 고급 설계와 삼차원 모델링, 애니메이션 등의 컴퓨터 그래픽 분야에 주로 이용된다. 개인용 컴퓨터의 성장과 성능향상으로 워크스테이션의 명성은 예전 같지 않다.[17] 미니컴퓨터와 마이크로컴퓨터의 중간 형태로 RISC 방식의 마이크로프로세서를 사용하는 고성능 컴퓨터이고, 네트워크에서 서버로도 사용된다.
  • 마이크로컴퓨터 : 1970년대에 개발된 마이크로프로세서를 사용하여 만든 것으로, 일반적으로 개인용 컴퓨터를 뜻한다. 부피가 작아 설치가 용이하고, 가격이 저렴하기 때문에 널리 보급되어 활용 범위가 광범위하고, 다양한 일들을 수행할 수 있는 가장 작은 크기의 컴퓨터지만, 성능이나 처리 능력 면에서 다른 컴퓨터들에 비해 다소 떨어진다. 워크스테이션이나 메인 프레임 컴퓨터의 기능을 대부분 사용할 수 있고, 개인 사용자가 쉽게 사용할 수 있도록 만들어진 응용 소프트웨어를 주로 사용한다. 휴대 가능 여부에 따라 데스크톱 컴퓨터와 휴대용 컴퓨터(노트북)로 구분할 수 있다. 네트워크상에서 클라이언트로 사용된다.[16]

폰 노이만 구조

등장

폰 노이만 구조는 헝가리 출신의 미국 수학자 폰 노이만이 제시한 컴퓨터 아키텍처로, 프로그램 내장 방식(Stored Program Concept), 폰 노이만 아키텍처, 그의 소속 대학을 따 프린스턴 아키텍처(Princeton Architecture)로도 불린다. 폰 노이만은 컴퓨터 분야 외에도 수학, 경제학, 물리학 등 다양한 분야에 큰 영향을 끼친 인물로, 과학자들이 인정한 천재 중의 천재로 유명하다. 그 예로, 폰 노이만은 캐시 메모리가 발명되기 100년 전에 이미 캐시 메모리라는 것이 출현할 것을 예측했다. 약 100년 전부터 이미 현대의 컴퓨터의 모습을 예상하고 있었던 것이다. 폰 노이만 구조가 만들어지기 전에도 컴퓨터의 아버지라고 할 수 있는 앨런 튜링이 비슷한 시도를 했었다. 1942년 폰 노이만은 맨해튼 프로젝트 참여 당시 ‘전자계산기의 이론 설계 서론’이라는 논문을 발표했는데, 이 논문에서 최초로 프로그램 내장 방식 컴퓨터를 제안하였다.[18] 이것을 바탕으로 1945년 에드박의 보고서 최초초안에서 프로그램 내장 방식이 설명되었고, 1949년 에드삭과 에드박이 발표되었다. 그때부터 현재까지 모든 컴퓨터가 프로그램 내장 방식을 따르고 있다고 해도 과언이 아니다. 참고로 폰 노이만이 처음으로 컨설턴트에 참여한 컴퓨터는 1946년에 개발하기 시작하여 1952년에 완성된 IAS(Institute for advanced studies) 컴퓨터로, 폰 노이만이 직접 진두지휘했다고 한다.[19] 폰 노이만 구조는 병목 현상이나 중앙처리장치가 비효율적으로 활용된다는 단점이 있다. 폰 노이만 또한 이 단점들을 알았기 때문에, 인간의 두뇌와 똑같이 작동하는 컴퓨터를 만들기 위해 연구에 매달렸지만, 연구를 시작한 지 채 1년도 되지 않아 골수암으로 세상을 떠났다. 이에 대하여 폰 노이만의 동료들은 그가 조금만 더 오래 살았다면, 인간의 뇌와 똑같은 컴퓨터를 만들었을 것이라고 말했다.[20] 1940년대에 구상된 기술이 현대에도 쓰이고 있다는 것만으로도 그 구조가 얼마나 획기적이고, 놀라운 기술인지 짐작할 수 있게 해주는 폰 노이만 구조가 없었다면, 현재의 컴퓨터 또한 존재하지 않았을 것이다.

구조 및 동작

폰 노이만 구조는 중앙처리 장치(CPU), 메모리, 프로그램 크게 세 가지 요소로 구성되어 있다. CPU와 메모리는 서로 분리되어 있고, 둘을 연결하는 버스를 통해 명령어 읽기, 데이터 읽고 쓰기가 가능하다. 이때 메모리 안에 프로그램과 데이터 영역은 물리적 구분이 없기 때문에 명령어와 데이터가 같은 메모리, 버스를 사용하게 되는데, 같은 버스를 통해 중앙처리장치가 명령어와 데이터에 동시에 접근할 수 없다. 폰 노이만 구조는 내장 메모리 순차처리 방식을 따르고 있기 때문에, 중앙처리장치는 한 번에 하나의 명령어를 순차적으로 실행한다. 중앙처리장치는 메모리에 저장된 명령어를 받아와 계산할 때 메모리로부터 명령어를 가져오는 fetch, 명령어의 의미를 해석하는 decode, 명령어를 실행하는 execute, 결과를 저장하는 store의 순서에 따라 입력받은 명령을 실행한다.

특장점

프로그램 내장 방식 이전에는 원하는 연산을 하고 싶을 때마다, 진공관의 회로 스위치를 변경해야 했다. 하드웨어의 전선을 일일이 재배치해야 했기 때문에 상당한 시간과 인력, 비용이 소모되었다. 이에 비하면, 프로그램 내장 방식은 하드웨어는 그대로 두고, 사용할 소프트웨어(프로그램)만 교체하면 되기 때문에, 편의성이 크게 증가하였고, 다양한 목적으로 사용이 가능해져, 범용성이 높아졌다. 프로그램 내장 방식은 이전 방식의 문제를 해결하기 위해 데이터를 외부에서 받지 않고, 내부의 기억장치에 저장한 후 프로그램의 명령을 순서대로 꺼내 해독하고 실행하는 방식으로 고안되었다.

단점

병목 현상

폰 노이만 구조는 인간의 사고 과정과 비슷한 구조를 가지고 있다. 사람이 하나의 연산을 마주하게 되면, 머릿속의 기억을 불러와 계산하는 과정과 아주 유사한 구조이다. 그런데, 이러한 방식을 사용하게 되면, 뇌에서 계산 과정은 빠르게 처리할 수 있을지 몰라도, 기억을 불러오는 속도가 느릴 경우, 전반적으로 속도가 느려진다는 것이다. 이처럼 기억 장치의 속도가 전체 시스템의 성능 저하를 야기하는 현상을 폰 노이만 병목현상(Von Neumann Bottleneck)이라고 한다. 이 문제를 해결하기 위해 하버드 구조, 메모리 계층 구조, NUMA 등 다양한 기술과 구조들이 등장하였다. 하버드 구조는 병목 현상이 일어나는 근본적인 원인을 해결하고자 했다. 병목 현상은 프로그램 메모리와 데이터 메모리가 물리적 구분 없이 하나의 버스를 통해 CPU와 교류하기 때문에 발생하는 문제로, 중앙처리장치가 명령어와 데이터에 동시에 접근하는 것을 막고, 나열된 명령을 한 번에 하나씩 읽고 쓰게 만든다. 이를 보완하기 위해, 하버드 구조는 중앙처리장치가 명령어와 데이터를 동시에 사용할 수 있도록 명령용 버스와 데이터용 버스를 물리적으로 구분하여, 명령의 처리를 끝냄과 동시에 다음 명령을 읽어 들일 수 있어 빠른 속도를 낼 수 있다. 현대에 이르러서 중앙처리장치 외부적으로는 폰 노이만 구조를, 내부적으로는 하버드 구조를 적용하여 속도가 향상된 컴퓨터가 많이 등장하기는 했지만, 이 또한 폰 노이만 구조를 기반으로 만들어진 것이기 때문에 병목현상을 완전히 해결하지는 못했다.

중앙처리장치의 비효율적 활용

순차적으로 한 번에 하나의 명령어를 처리할 수 있기 때문에, 폰 노이만 구조를 사용하면 중앙처리장치를 효율적으로 사용하지 못하는 경우가 종종 있다. 순차처리 방식은 수치 계산이나 정밀하게 작성된 프로그램을 실행하는 데에는 탁월하지만, 이미지나 소리와 같은 아날로그 데이터를 처리하기에는 효율성이 낮다는 한계가 있다. 이를 해결하기 위해, 명령어 병렬처리, 대칭형 다중처리(SMP), 대규모 병렬 컴퓨터(MPP) 등 다양한 병렬처리 방식이 등장했다. 병렬처리 방식은 하나의 프로그램을 여러 개의 프로세서로 분담하여 동시에 처리함으로써 처리 속도의 향상과 높은 효율성을 추구하는 기술이다. 그런데 병렬처리를 기반으로 컴퓨터 구조를 만들게 되면 지나치게 복잡하고, 모든 문제에 효율적이지 않고, 처리를 위해 부가적으로 시간이 들어갈 경우 오버헤드가 발생한다는 등 여러 가지의 단점이 있어 이 또한, 폰 노이만 구조를 완전히 대체하지 못했다.[18]

영향

2011년 미국의 IBM사가 대량 생산이 가능한, 인간의 뇌처럼 정보를 처리하는 획기적인 컴퓨터 칩 ‘트루 노스’를 내놓았다. 이 새로운 프로세서는 뇌를 모방하여 뉴런(신경세포)와 시냅스(신경 접합부)에 해당하는 부분으로 구성되어 있어, 인간의 뇌처럼 정보를 처리하고, 인간 두뇌의 인지 역량과 초저전력 소모 면에서 기존 컴퓨팅 기술과 현격한 차이를 보였다. IBM사의 연구원들은 1946년부터 사용되어온 폰 노이만 구조를 뛰어넘어, 인간의 뇌와 프로세서 사이의 격차를 줄이기 위해 신경과학에서 영감을 받아 확장성과 효율성이 뛰어난 새로운 컴퓨터 아키텍처를 개발했다.[21] 트루 노스는 256개의 디지털 뉴런과 그것을 연결하는 26만여 개의 시냅스로 구성되어있는데, 이 디지털 뉴런들을 통해 생물학적 뉴런이 가지는 독립적 성격을 모사하면서, 서로 다른 응답 시간을 가능하도록 하고, 이웃하는 뉴런으로부터의 입력에 응답하는 패턴을 없애는 역할까지도 수행할 수 있다.[20] 이후 지속적인 개발을 통해 54억 개의 트랜지스터를 내장한 4,096개의 뉴로시냅틱 코어를 통해 약 2억 5600만 개의 디지털 시냅스로 연결되어있는 트루노스를 새롭게 선보였다. 각 코어 모듈은 메모리, 연산, 통신이 통합되었고, 이벤트 발생에 따라 병렬적으로 무정지형(fault tolerant) 방식으로 작동되는데, 단일 칩의 한계를 넘어 시스템을 확장하기 위해 인접한 칩들을 타일 구조로 배치하면, 칩들이 서로 원활하게 연결되면서 뉴토시냅틱 슈퍼컴퓨터를 위한 기반을 마련해준다.[21] 연구진은 이렇게 만든 트루 노스로 길거리를 지나는 사람과 자동차 등의 움직이는 물체를 실시간으로 구별하는 데 성공했다고 밝혔다. 또한 IBM사는 100억 개의 신경계를 수 조 개의 시냅스로 연결하여 신경계 시스템을 구현하는 것이 장기적인 목표이고, 단지 1킬로와트의 전력만을 소비하면서, 인간의 뇌 용량처럼 2리터 이하의 부피를 차지하는 것이 기술개발의 핵심이라고 밝혔다.[20]

데이터

단위

  • 비트(Bit) : 자료 표시의 최소 단위를 나타내는 것으로, 2진수(Binary Digital)의 약어다. 0 또는 1로 나타나며, 컴퓨터에서 자료를 표현하고 처리하는 기본 단위로, 0 또는 1, 참 또는 거짓, 온(on) 또는 오프(off) 등 두 가지의 상태를 나타낼 수 있다. 디지털 컴퓨터는 모든 자료를 2진수를 표현하고 처리하기 때문에, 2진수 한 단위는 최소 정보 단위인 참 또는 거짓을 구분할 수 있는 논리적인 수치의 한 단위가 될 수 있다.
  • 니블(Nibble) : 4비트를 말하는 것으로 16(2^4)개의 정보를 표현할 수 있고, 통신에서 사용될 경우 4개의 비트로 만들 수 있는 16개의 조합 중 하나인 “쿼드 비트”(Quad Bit)를 의미하기도 한다. 하나의 신호가 한 번에 하나의 비트가 아닌 쿼드 비트 단위로 부호화되는 경우가 있다.
  • 바이트(Byte) : 한 문자 단위의 표현으로, 컴퓨터에서 한 문자를 표현하는데 소요되는 단위를 말한다. 1바이트는 8비트로 구성된다. 영문, 숫자, 공백, 기호와 같은 문자 하나를 표현하는데 1바이트가 소요되고, 한글이나 한자와 같은 문자 하나를 표현하는 데는 2바이트가 소요된다. 1바이트는 256(2^8)가지의 상태를 표현할 수 있고, 문자를 표현하는 데 사용하는 단위라는 의미에서 캐릭터(character)라고도 한다. 바이트의 사용단위는 2^10씩 올라간다. 1KB는 2^10바이트, 1MB는 2^10KB, 1GB는 2^10MB를 의미하고, 그 뒤로도 TB, PB, EB, ZB, YB 순으로 앞과 같은 방식으로 크기가 늘어난다.
  • 워드(Word) : 명령 처리 단위로, 컴퓨터에서 한 번에 처리할 수 있는 데이터의 양을 나타낸다. 각종 명령을 처리하는 기본 단위를 의미하며, 여러 개의 바이트로 구성된다. 중앙처리장치에서 처리되는 자료의 단위로, 실제 연산의 기본 단위가 된다. 워드의 크기는 중앙처리장치 내부 버스의 폭에 따라 결정되며, 16비트의 하프 워드(Half Word)와 64비트의 더블워드(Double Word)가 있다. 명령 처리 단위로 어떠한 명령을 중앙처리장치나 램에 요청할 때 바이트와 같은 주소 단위로는 정보를 전달하는 데 한계가 있기 때문에, 워드라는 보다 큰 처리 단위를 통하여 좀 더 많은 정보를 전달하기 위한 명령어를 포함시킬 수 있다.
  • 필드(Field) : 자료의 구성단위로, 자료처리의 최소 단위다. 여러 개의 워드가 모여 구성되는, 의미 있는 정보를 표현하는 최소 단위로, 데이터베이스를 구성하는 기본 항목이고, 표 모양으로 작성된 데이터베이스에서는 각각의 열이 필드가 된다. 하나의 수치 또는 일련의 문자열로 구성되는 것으로 이름, 나이, 주소 등과 같이 특정한 의미를 전달할 수 있는 단위다.
  • 레코드(Record) : 프로그램 처리의 기본 단위로, 연관된 여러 필드가 모여 구성되는 하나의 완전한 정보를 표현할 수 있는 최소 단위이다. 데이터베이스를 구성하는 기본 항목으로 표 모양의 데이터베이스에서는 각각의 행이 레코드가 된다. 프로그램이 처리하는 자료의 기본 단위이며, 레코드 자체로 하나의 완결성을 갖는 정보의 단위라고 할 수 있다. 프로그램 처리 단위인 논리 레코드와 프로그램 입출력의 단위인 물리 레코드로 구분된다.
  • 블록(Block) : 프로그램 입출력 단위로 쓰인다. 데이터가 입출력될 때, 그에 대한 정보가 작은 비트의 형태가 아니라, 아주 큰 데이터 덩어리 형태로 이루어지는데, 이처럼 큰 데이터 덩어리 단위를 블록이라고 한다.
  • 파일(File) : 프로그램 구성의 기본 단위로, 관련된 여러 개의 레코드가 모여 하나의 파일이 된다. 즉, 연관성 있는 레코드들의 집합이다. 이렇게 구성된 파일은 프로그램을 구성하는 단위로 컴퓨터에서 정보를 저장하는 단위로 사용된다.
  • 데이터베이스(Database) : 서로 관련된 파일들의 집합을 의미한다. 상호 관련된 파일들을 모아 완전한 정보로서 구성된 데이터 집단을 말하며 단순하게 데이터를 모아 놓은 것이 아니라 특정한 체계에 의해 데이터를 분류하여 정리해 놓은 것으로 다량의 데이터에서 검색이 용이하며 보다 쉽게 새로운 데이터를 추가하거나 기존의 데이터를 삭제할 수 있다.
  • 데이터뱅크(Databank) : 여러 개의 데이터베이스를 모아 놓은 것을 말한다.[22]

표현

BCD

BCD 코드는 ‘Binary Coded Decimal’의 약자로, 해석하면 ‘이진화 십진법’, ‘십진수처럼 코딩된 이진수’라는 의미를 가지고 있다. 초기 컴퓨터에 주로 사용되었던 코드로, 10진수를 2진수로 표현하는 방법 중 하나다. 10진수를 표시하기 위해 0부터 9까지의 숫자를 4비트의 2진수로 표시하는 것으로, 10~15는 사용되지 않는다. 4비트의 2진수를 통해 표현되는데, 그 위치에 따라 왼쪽에서부터 각각 2의 8, 4, 2, 1의 가중치를 가지기 때문에 8421코드라고 부르기도 한다. BCD 코드는 10~15까지의 수는 사용하지 않기 때문에 일반적인 2진 가산법을 사용하면 문제가 생긴다. 따라서 9를 넘어서는 값이 나오면, 4비트로 표현할 수 있는 숫자가 16가지이기 때문에, 6에 해당하는 0110을 더해서 순환시켜줘야 한다. 10진수처럼 표현되기 때문에 사람들에게 친숙하고, 자릿수에 해당하는 변환기 하나만으로 구현할 수 있어, 다른 알고리즘에 비해 구현하기가 쉽다, 또한 사용자에게 입력받고 보여주는 작업을 할 때 효율적으로 처리할 수 있고, 아스키 코드에 비해 메모리의 사용이 적다. 그렇지만 연산 방법이 복잡하고, 덧셈과 뺄셈을 수행하는 방법이 다르다. 또한 10진수를 표현하는 경우 단순한 이진법으로 표현하는 것보다 더 많은 비트를 필요로 한다는 단점이 있다.[23]

EBCDIC

EBCDIC(Extended BCD Interchange Code)는 BCD 코드를 확장한 코드로, 확장 2진화 10진 코드라고 부르기도 한다. 8비트를 사용하여 256가지의 문자를 표현할 수 있고, 맨 앞에 1비트를 추가하여 패리 비트로 사용한다. 문자 사이에 일정한 체계가 없어서 복잡하다는 단점이 있다. 아스키코드가 사용되기 전까지는 IBM사의 대형 컴퓨터에서 기본 코드로 사용되거나, 주도적인 내부코드로 사용되었다.[24]

아스키

아스키 코드는 미국 정보교환 표준부호(American Standard Code for Information Interchange)로, 약자를 따서 ASCII라고도 한다. 이름에서부터 알 수 있듯이 미국에서 사용하던 표준코드로, 영어 알파벳의 대, 소문자와 0~9까지의 숫자, 공백을 비롯한 몇 가지 특수문자를 0부터 126까지의 숫자에 1대1로 매칭시킨 것이다. 8비트의 데이터를 사용하는데 아스키코드에서 실제로 사용되는 이진수는 7자리이다. 표에 표시되지 않은 한 자리는 패리티 비트(parity bit)로, 데이터의 오류를 탐지하기 위해 사용된다. 이진수에서 1이 홀수 개이면 1이 되고, 짝수 개이면 0이 된다. 아주 정밀하지는 않지만 어느 정도의 오류를 탐지할 수 있게 해준다. 패리티 비트를 제외하고, 총 7자리의 이진수를 문자로 나타낼 수 있기 때문에, 총 128(2^7)개의 문자를 나타낼 수 있다. 아스키코드에는 영어만이 존재하기 때문에, 다른 나라의 다양한 표준들과 함께 사용되면, 충돌이 발생하게 되고, 문자가 깨지면서 ‘걁궬뷀뒐’같은 이상한 문자들로 표현된다. 이러한 오류가 발생하는 것을 막기 위해 여러 가지 표준들을 하나로 합친 것이 유니코드이다.[25]

유니코드

각 나라별 언어를 모두 표현하기 위해 나온 코드체계로, 사용 중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드조합이다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다. 아스키코드에는 영어만 존재하기 때문에, 다른 나라의 언어로 아스키코드를 사용하게 되면 글자가 깨지는 것을 막고, 각 나라에서 사용하는 여러 가지 표준들을 하나로 합치기 위해 만들어진 것이 유니코드다. 아스키코드와 같은 방식으로, 전 세계의 모든 문자를 특정 숫자키에 1:1로 매핑한 것이다. 아스키코드에서 사용한 1바이트로는 부족했기 때문에 용량 크기를 좀 더 확장하여 2바이트로 65,536(2^16)개의 문자를 표현할 수 있다. 그런데 현재는 잘 쓰지 않는 고어, 토속어 같은 문자들을 담기 위해 약 백만 자가 넘는 문자들을 추가적으로 정의했다. 유니코드는 여러 나라의 언어 뿐 만이 아니라 특수문자를 비롯하여 여러 가지 문자들을 정의했기 때문에 각 문자를 표현하기 위한 바이트 수가 다르다는 문제점이 있다. 예를 들어 영어를 표현할 땐 1바이트, 한글을 표현할 땐 2바이트, 일부 특수문자는 3바이트 까지도 가변적으로 변한다. 이 문제로 인해 컴퓨터에 혼란을 주지 않도록, UTF-8, UTG-7, UTF-16, UTG-32 등 유니코드를 사용한 다양한 인코딩 방식이 존재한다.[25]

전망

컴퓨터의 기능은 갈수록 다양해지고, 세분화 되어가고 있다. 컴퓨터 연구가들은 더 빠르고, 성능이 좋은 하드웨어와 소프트웨어를 개발하고 있다. 그중에서도 특히 소프트웨어 연구는 단순히 자료를 다루는 것이 아니라 스스로 판단까지 할 수 있는 인공지능의 개발에 집중이 되고 있다. 컴퓨터를 더 작게 만들기 위한 노력도 계속되고 있는데, 전문가들은 대부분 가까운 미래에도 직접 회로로 만든 컴퓨터가 계속 사용될 것으로 예상한다. 그러나 몇몇 과학자들은 단순히 만드는 개념의 컴퓨터가 아니라, 기른다고 해야 할 생물학적 컴퓨터가 만들어지고, 단위분자에 데이터를 저장할 수 있게 될 것이라고 예측하기도 한다. 분자저장 시스템을 이용하면 책 한 권도 안 되는 작은 공간에 인류의 모든 지식을 저장할 수 있을 것이다. 또한 컴퓨터 과학자들은 인공지능 컴퓨터를 만들기 위해 노력 중이다. 일부 과학자들은 장래에는 인간과 대등하게 대화하고, 생각하고, 감정을 지니는 컴퓨터가 등장할지도 모른다고 생각한다. 장래의 인공지능 컴퓨터는 여기에서 더 나아가, 지식의 축적, 유추, 증명, 창작 등의 능력을 갖추게 될 것으로 기대된다.[4]

각주

  1. 1.0 1.1 1.2 1.3 컴퓨터〉, 《네이버 지식백과》
  2. 2.0 2.1 컴퓨터〉, 《위키백과》
  3. 잡고, 〈컴퓨터의 기능/특징〉, 《티스토리》, 2012-02-04
  4. 4.0 4.1 4.2 휴먼밸, 〈컴퓨터의 역사〉, 《오픈튜토리얼스》, 2017-01-02
  5. 김영우 기자, 〈인류의 삶을 바꾼 위대한 기계 – 컴퓨터(Computer)〉, 《아이티동아》, 2011-09-30
  6. 그때 그 발견! 인류 최초의 컴퓨터 에니악〉, 《삼성반도체이야기》, 2017-02-17
  7. 7.0 7.1 코딩팩토리, 〈(H/W) 중앙처리장치(CPU)란 무엇인가? CPU의 구조 총정리〉, 《티스토리》, 2019-04-24
  8. 영상제작,컴퓨터, 〈(컴퓨터구조) 하드웨어의 분류와 역할〉, 《티스토리》, 2017-12-20
  9. 코딩팩토리, 〈(H/W) 기억장치의 계층구조와 분류〉, 《티스토리》, 2019-04-27
  10. 코딩팩토리, 〈(H/W) 주 기억장치의 종류와 특징〉, 《티스토리》, 2019-04-28
  11. 코딩팩토리, 〈(H/W) 보조기억장치의 종류와 특징〉, 《티스토리》, 2019-04-29
  12. 코딩팩토리, 〈(H/W) 캐시메모리란 무엇인가?〉, 《티스토리》, 2019-04-30
  13. 안경잡이개발자, 〈컴퓨터의 역사에 대해서 알아보자!〉, 《티스토리》, 2016-06-04
  14. 자료 처리에 의한 분류〉, 《에듀웨어》
  15. Host, 〈컴퓨터의 분류 – 사용 목적에 따른 분류/ 범용 컴퓨터/ 특수 목적 컴퓨터〉, 《네이버 블로그》, 2011-09-18
  16. 16.0 16.1 Host, 〈컴퓨터의 분류 – 처리 능력에 따른 분류/ 슈퍼컴퓨터/ 메인 프레임 컴퓨터/ 워크스테이션/ 개인용 컴퓨터〉, 《네이버 블로그》, 2011-09-19
  17. SoNB31, 〈10. 컴퓨터의 종류〉, 《네이버 블로그》, 2020-02-07
  18. 18.0 18.1 과학기술정보통신부, 〈컴퓨터의 구조는 어떻게 생겼을까? 폰 노이만 구조〉, 《네이버 블로그》, 2020-05-28
  19. 강철현인, 〈프로그램 내장 방식의 폰 노이만 구조(Von Neumann Architecture)〉, 《티스토리》, 2019-12-02
  20. 20.0 20.1 20.2 이성규 객원편집위원, 〈폰 노이만 이후의 컴퓨터〉, 《사이언스타임즈》, 2014-08-11
  21. 21.0 21.1 John Jackson, 〈IBM, 인간의 뇌 닮은 칩“트루노스”개발…사물 인터넷 혁명 이끌까〉, 《아이티월드》, 2014-08-08
  22. 산새 이해수, 〈자료의 표현 단위(20060606화)〉, 《네이버 블로그》, 2015-09-27
  23. IT 양햄찌(Jhnyang), 〈(BCD,8421코드 총정리)BCD코드는 언제 사용할까, BCD 장점, BCD가산법, 계산하는 법, 왜 6을 더하는가? 이진화 십진법 특징〉, 《티스토리》, 2020-03-20
  24. Anderson Kim, 〈(컴퓨터 네트워크) BCD코드, EBCDIC코드, ASCII코드〉, 《블로거》, 2019-08-30
  25. 25.0 25.1 J’aimemin, 〈ASCII & Unicode (아스키코드와 유니코드)〉, 《벨로그》, 2020-09-02

참고자료

같이 보기


  질문.png 이 문서는 제품사진이 필요합니다.  

  검수요청.png검수요청.png 이 컴퓨터 문서는 컴퓨터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.