컴퓨터의 정의는 여러 답변이 나올 수 있다. 이 중에서 가장 쉽게 정의를 내리자면 다음과 같다.
computer는 어떤 task를 수행하기 위한 program을 수행시킬 수 있는 전자적 기계장치이다.
정의를 더 쉽게 이해하기 위한 방법 중 하나는 비교를 하는 것이다.
먼저 공통점을 보자면 둘 다 계산을 할 수 있는 장치라는 것이다.
차이점은 computer는 기존의 operation을 조합해서 새로운 operation을 추가할 수 있다는 것이다.
다음으로는 컴퓨터의 역사를 다룰 것이다. 쉽게 이해하기 위해 세대를 구분했으나 사람마다 견해가 다르고 딱 잘라지지도 않는 부분이라 구분이 거의 무의미하다. 추가로 최초 논쟁은 더 무의미하다. 새로운 기술은 과거의 기술과 개념을 조합해서 만든 것이라 언제 최초인지 정확하게 말하기는 어렵다.
1943~1945년 개발
Alan Turing이 만든 bombe와 그의 확률론적 방식에 영향을 받음
독일군의 암호전신기인 Lorenz Chiper를 해독하기 위해 개발된 세계 최초의 프로그래밍(외장형)이 가능한 전자디지털 컴퓨터
군사기밀이었기에 존재가 한참 뒤에 알려짐
Vacuum tube를 사용했고, 스위치 및 플러그를 이용한 프로그래밍을 지원
bombe: 에니그마 해독의 초기 단계에서 나타난 모델
세계 최초의 전기 기계식(relay 사용) 컴퓨터
1944년 IBM사에서 개발
톱니바퀴로 가감산이 가능한 gear(치차식) 계산기의 극한으로 간 컴퓨터
relay: 전기적 즉 자동으로 작동하는 스위치
수은지연회로 (mercury acoustic delay lines), William 관 및 Magnetic drum 등
vacuum tube의 열로 인해 종이테이프가 탈 정도 였다고 함
H/W: 컴퓨터를 구성하는 물리적 기계장치
S/W: H/W를 운영하고 이용하기 위한 프로그램
Numerical
INtegrator and Calculator)10진수 체계, Vacuum tube(전자식)
1952년 von Neumann이 제안한 stored program computer architecture를 체택하여 개발된 최초의 이진수(binary) 기반 컴퓨터
ENIAC은 회로를 통해 컴퓨터 동작을 지시하며 program이 내장되어 있지 않음
von Neumann이 컨설팅을 담당
von Neumann architecture
stored program compute 구조로 현대 컴퓨터가 대부분 채택
다음과 같은 세 부분으로 구성됨
I/O device: data를 외부로부터 입력받고 처리 결과를 외부에 표시, 키보드, 모니터, 프린터 등
memory: data와 program의 저장을 담당하며 storage를 포함함
CPU: data를 program에 따라 처리 담당, Control Unitrhk ALU로 구성됨
data와 program이 저장되는 memory가 동일하여 bottleneck 현상이라는 단점을 가짐. 이를 보완하기 위해 두 memory를 분리한 Havard architecture가 등장함. 현대는 CPU 내부에선 Havard architecture, 외부에선 von Neumann architeture를 적용한 구조가 많음
EDVAC을 기점으로 software
라는 개념이 등장
상업용 컴퓨터
1952년 대통령 선거에서 매우 적은 sample만으로 정확히 당선자로 예측하는대 사용되어 유명해짐. 컴퓨터의 효용성을 대중에 크게 알린 사건임.
1950년대 후반 ~ 1960년대 중반 쯤
1949년에 개발된 Transistor
가 주 구성요소임
1세대보다 크기가 100분의 1 수준으로 소형화되고 생산단가가 낮아지면서 컴퓨터 보급이 원활해짐
memory
magnetic core(자기코어, primary memory)
secondary memory: magnetic tape(자기테이프), magnetic disc(자기디스크) 등
micro-second 단위의 연산속도
Operating System (OS)
의 등장
batch processing(1950년대)이 주로 사용되었으나 multiprogramming(1960년대)의 개념도 등장
batch processing이란 특정 시간에 다량의 데이터를 일괄적으로 처리하는 것을 의미함. 컴퓨터가 주어진 작업만 끝날 때까지 수행하게 되며 processor scheduling이라는 개념이 도입되기 전에는 거의 모든 작업이 batch processing이었음
machine language
와 assembler
를 사용함
multiprogramming
이란 I/O 처리로 CPU 연산이 필요하지 않으면 다른 프로그램에게 CPU를 사용할 수 있도록 해줌. 이전에는 한 프로그램이 끝날때까지 CPU를 점유하는 방식인 Uni-programming이 사용되었음
multiprogramming
vsmultitasking
multiprogramming은 CPU의 idle time(유휴 시간, CPU가 바쁘지 않은 시간의 양)을 줄이기 위해 도입된 개념
multitasking은 하나의 resource를 여러 process들이 공유하는 개념
resource에서 가장 중요한 것이 CPU이며 유사한 개념이지만 multiprogramming은 오직 단일 CPU의 idle time을 줄이기 위한 context changing에만 초점을 맞춘 것이고 multitasking은 multiprogramming에서 roundrobin sheduling algorithm과 같은 스케쥴링 알고리즘이 추가되어 여러 task를 수행하는 것처럼 보이기 위한 기술이다.
1964~1971년대
Integrated circuit(IC, chip)가 주요 구성요소
IC의 사용으로 높은 신뢰성과 처리속도와 용량을 보유한 컴퓨터가 작아질 수 있게 됨
UNIX
의 등장(1960년대 후반): 현대적인 OS의 등장
- UNIX는 현대 OS의 기본 개념을 수립한 OS로 가치가 있음
- 최초로
Multi-tasking
및 다중사용자가 가능하게 됨Time sharing system
(시분할 시스템)으로 여러 teminal 지원이 가능해짐
nano-second의 연산속도
컴퓨터에 family(개열) 개념이 일반화되면서 기종간 호환성이 커짐
IBM 360 (1964), CDC 7600, UNIVAC1108는 2세대로 기재되는 문헌도 있지만 여기서는 IC가 사용됐다는 점에서 3세대로 구분함
1964년의 BASIC을 기점으로 SW 자체가 상용으로 팔리는 제품으로 인정받기 시작함
1964년 교육용으로 개발됨
imperative language(명령형 언어)
interpreter 방식으로 시작됐으나 이후 compile도 도입됨
이전까지는 computer를 사면 SW는 Bundle로 제공되는 게 일반적이었지만 SW만으로 돈을 주고 사야하는 제품이 등장함. 그 시기 중 초창기에 가장 유명한 SW 제품이 BASIC 인터프리터(MS의 첫 제품)이었음.
8bit에 해당하는 byte라는 개념과 byte 단위의 memory address, word의 개념과 같이 오늘날 컴퓨터 기술에서 표준인 여러 기술이 적용된 컴퓨터
다중 사용자 접속을 제공했으며 많은 대학교와 연구소 등에서 사용됨
오늘날 PC의 CPU도 몇 백 GFLOPS임
정보처리 속도 단위
FLOPS(Floating-point Operation Per Second)
는 정보처리 속도 단위임사람은 LIPS(Logical Inference Per Second)로 적용할 수 있는데 보통 2LIPS 정도 가능
1LIPS는 대략 100~1000개의 instruction으로 구성된다고 알려짐
1970년대 ~ 현대
LSI
(Large Scaled integrated circuit)과 VLSI
(Very Large Scaled integrated circuit)이 사용됨
견해에 따라 오늘날의 컴퓨터는 5세대로 구분할 수도 있지만 여기서는 모두 4세대로 분류한다.
오늘날의 CPU라 불리는 MIcro-processor
가 등장한 세대인 동시에 PC(Personal computer)가 보급되기 시작한 세대임
Inte14004
(1981년에 개발된 최초의 Micro-processor, 4bit CPU)는 2,300개의 transistor로 구성되었고 초당 60,000개의 연산이 가능
Internet의 등장으로 Network가 일반화된 세대 그리고 휴대용 컴퓨터가 등장한 세대
1980년대 VLSI가 개발된 이후로 급격히 성장해 ULSI(Ultra LSI)와 구분 자체가 무의미해짐.
오늘날 사용되는 엄청난 집적도(같은 면적 안에 얼마나 많은 회로가 들어가는가)의 IC들도 그냥 VLSI로 불리고 있으며 실제로 PC에 사용되는 i7 cpu가 100억 수준의 소자가 집적되어 있음.
2010년 이후 기계학습의 발전으로 사람 이상의 성능을 스스로 학습하는 컴퓨팅이 가능해지고 있어도 세대 구분은 쉽지가 않음. 어차피 세대를 나누는 건 의미가 없고 기억하기 쉽게 하기 위한 개념임.
reference