애니악은(는) 여기로 연결됩니다.
동명의 유튜버에 대한 내용은 애니악TV 문서 참고하십시오.1. 개요
Electronic Numerical Integrator, Analyzer and Computer에커트와 모클리의 공동 설계로 1946년 2월 14일에 만들어진 30톤짜리 컴퓨터이다. 원래의 목적은 군용으로, 포탄의 탄도학 계산을 위해 개발되었다. 제2차 세계 대전이 한창이던 1943년에 병기국 소속 미 육군 소장 글레이디언 반즈[1]의 의뢰로 개발이 시작되었지만, 완성은 2차 대전이 완전히 종결된 1945년 9월 2일 이후이었기에 전쟁에서는 활용되지 못했다. 이후 원래 목적인 탄도 계산뿐만 아니라 난수 연구, 우주선 연구, 풍동 설계, 일기 예보의 수치 예보 연구 등의 각종 과학 분야에서 사용되었으며, 초기형 수소 폭탄 시뮬레이션에도 쓰였다.
쉽게 설명하면 30톤짜리 공학용 계산기였다. 성능은 kHz에 불과했다. 알기 쉽게 이야기하면, 현재 우리가 가정이나 직장에서 흔히 쓰는 전자계산기만도 못한 수준이다. 그러나 이후 기술이 점차 발전하며 컴퓨터의 시초가 되었고, 넓게 보면 정보 기술의 발달에도 기여했다고 볼 수 있다.
영어 위키백과에 의하면 제작 비용은 당시 달러를 기준으로 최종적으로 50만 달러가량이였다고 하는데, 1946년의 50만 달러면 2018년의 가치로는 대략 645만 달러[2]쯤 된다.
2. 상세
에니악의 구조는 이후 개발되는 폰노이만 구조와는 달리 스위칭 소자를 배선으로 직접 이어서 프로그램을 구현하는 방식으로, 현대의 기준으로는 FPGA에 가까웠다.회로 구현에 진공관 18,800개, 캐패시터 1만 개, 기계식 스위치 6천 개, 그리고 메모리 용도로 저항 7만 개를 사용했다. 진공관은 대부분 쌍삼극관(듀얼 트라이오드)으로, 작동 안정성을 늘리기 위해 원래 6.3볼트로 작동하는 필라멘트를 5.7볼트로 언더볼팅했다. 이들 진공관은 작동 안정성을 확보하기 위해 온/오프 상태로만 사용되었다. 따라서 진공관 단위에서는 2진법을 따랐고, 이 진공관으로 구성된 10진법 링 카운터에 의해 십진법으로 숫자가 구현되었다. 진공관, 스위치와 메모리 저항으로 구성된 모듈 30개에는 기본적인 연산 기능(사칙 연산, 제곱근)과 더불어 논리 소자와 배선을 통한 프로그래밍 기능이 있었고, 모듈 내부와 외부의 연결을 변경하여 로직을 구현하는 식으로 다양한 목적의 병렬 연산을 수행할 수 있었다. 작동에 필요한 전력량은 총 180kW가량이었다.
클럭은 현대 기준으로 약 100kHz가량[3]이었는데, 미국에서 처음으로 만들어진 전자식 컴퓨터였다 보니 클럭당 효율(IPC)은 매우 낮은 편이었다. 하지만 1945년의 기준으로 볼 때는 이 정도만 해도 기적적으로 빠른 속도였다. 에니악이 처음 만들어진 용도인 탄도 계산을 기준으로 할 경우, 미분 방정식으로 60초간 포탄이 날아갈 궤적을 계산할 때 계산수가 20시간, 일반적인 릴레이 기반 전자 기계식 컴퓨터는 15분이 걸려야 겨우 할 수 있는 계산량을 에니악은 30초 안에 처리할 수 있었다. 따라서 에니악의 처리 속도는 단순한 계산 횟수만 따져도 인간 계산수의 약 2,400배, 전자 기계식 컴퓨터의 30배였고, 에니악의 유효 숫자[4]가 더 많은 것을 감안하면 실질적인 처리 속도는 인간 계산수의 10만 배, 전자 기계식 컴퓨터의 1,000배까지 늘어났다. 에니악의 유효 숫자는 '부호가 있는 10자리'인 데 비해 계산자로는 유효 숫자 5자리까지가 한계였다.
한번 제대로 세팅되면 인간과는 비교도 되지 않는 빠른 속도로 연산을 할 수 있었으므로 에니악은 1953년까지 꾸준히 업그레이드를 거치면서 활용되었고, 1955년 10월이 되어서야 퇴역하였다.
이런 빠른 속도를 1940년대에 구현한 대가로, 에니악의 구조에는 상당히 많은 병목이 있었다.
첫째는 진공관의 발열과 내구성이었다. 1만 8천개의 진공관이 일제히 내뿜는 열 때문에 에니악이 설치된 방은 작동 내내 에어컨으로 냉각해야 했고, 초창기에는 수시로 진공관이 터져나가면서 가동 시간의 절반이 진공관 교체에 할애되었다. 다행히도 가동 노하우가 쌓이면서 진공관이 터지는 주기는 2일에 1개 정도로 줄어들었고, 교체 시간도 15분 이내로 줄어들었다. 개발자의 인터뷰에 의하면 이 부분은 매분마다 진공관이 터져나갔다는 풍문과는 다르게 그렇게까지 심한 문제는 아니었다고 한다.[5]
둘째는 느린 입력과 출력 속도였다. 아직 자기 코어 메모리가 개발되지 않았기 때문에 IBM 천공 카드가 유일한 입력 수단이었고, 출력된 수치도 천공 카드에 찍혀야 했다. 천공 카드 출력 속도는 연산 속도의 1/20 정도로 매우 느렸다. 그리고 입력과 출력이 진행되는 동안에는 계산을 수행할 수 없었다.
셋째는 프로그래밍에 따르는 어려움이었다. 상술한 대로 에니악의 프로그래밍은 사람이 스위칭 소자와 배선을 직접 조작해서 구현하는 방식으로[6], 미리 작성된 프로그램과 연산에 필요한 변수를 하드웨어 수준에서 구현하는 과정에서만 며칠이나 걸렸다고 한다.[7] 이런 어려움은 존 폰노이만이 폰노이만 구조를 주창하게 되는 결정적인 원인이 된다.
출처: Arthur W. Burks, Electronic Computing Circuits of the ENIAC, 1947 |
3. 세계 최초의 컴퓨터인가?
한때 세계 최초의 컴퓨터라는 별명으로 유명했다. 그러나 이후 소송을 통해서 1973년 10월 19일 미국 법원이 "인류 최초의 전자계산기는 ABC다"라고 판결하였다. ABC(어태너소프-베리 컴퓨터)[8]는 1942년에 개발되었다.[9]이후 세계 최초의 실용화된 컴퓨터란 자리 또한 1943년에 개발된 콜로서스가 가지고 갔다. 제2차 세계 대전 동안 영국이 독일의 암호를 깨기 위해 사용한 실용화된 컴퓨터이다. 에니악보다 등장 시기가 빠르지만 전시 기밀이기 때문에 공개가 1975년에 될 정도로 늦어졌으며 공개가 늦어진 탓에 에니악이 최초의 컴퓨터라는 오해의 원인이 되었다고 한다. 공개가 늦어진 이유는 전쟁이 끝난 후 영국이 독립한 예전 식민지 국가들에게 독일의 암호 기계를 넘겨주고, 콜로서스를 계속 가동하면서 암호를 풀어냈기 때문이다. 1975년에 공개한 이유는 이즈음에 독일의 암호 체계가 거의 다 도태되어서이다. 즉, 에니악은 개발 당시에는 군용으로 개발되다 개발 완료 시기가 살짝 늦어 민간용으로 용도를 변경하여 공개된 제품이기에 세계 최초의 민간용 컴퓨터라는 수식어가 좀 더 정확하다.[10]
그럼에도 불구하고 에니악이 여전히 컴퓨터의 역사에서 매우 중요한 위치를 차지한다는 것은 사실이다. 모클리, 에커트와 존 폰노이만은 에니악이 개발 중인 1944년에 이미 에니악의 구조적인 불편함에 대해 인지하고 있었고, 이를 보완하기 위해 프로그램 내장형 컴퓨터인 EDVAC을 구상하고 있었다. EDVAC의 구조는 1945년 폰노이만의 1945년 논문을 통해 현대에까지 쓰이는 '폰노이만 구조'로 자리 잡게 되었다.
4. 여담
- 에니악의 이름을 따서 만들어진 모니악이란 컴퓨터도 존재한다.
- 프로그래밍 용어인 버그가 에니악에서 기원했다고 하는 설이 있다. 실제로는 1947년 Harvard Mk.2라는 컴퓨터를 다루던 코볼의 어머니이자 산업적인 의미에서 최초의 여성 프로그래머로 간주되는 그레이스 호퍼가 컴퓨터의 오작동 원인을 추적하다가 속에서 타 죽은 벌레를 발견해 노트에 기록한 것이 어원인 것으로 알려져 있다.
- 에니악의 소프트웨어 작업을 한 프로그래머들 중 대다수는 여성이었다. 당시의 컴퓨터 공학계는, 하드웨어 설계와 조립 같은 힘이 드는 일은 남성이 도맡아서 해야 한다고 생각했기에 상대적으로 덜 힘이 든다고 생각되는 소프트웨어 작업은 여성 프로그래머들에게 맡겼다.[11] 당시에 많은 여성들이 수학을 전공했고 사회적으로 여성이 취업할 수 있는 길 또한 한정적이었기에, 컴퓨터 공학 같은 새로운 분야를 개척하는 데 적극적이었다.[12] 또한 이미 사회에 진출한 수학 전공 여성 대부분이 인간 컴퓨터[13]로 일하고 있었기 때문에 이직도 쉬웠다. 덕분에 서브루틴, 모듈식 프로그래밍, 프로그램 컴파일 등의 소프트웨어 개념의 형성에 여성들이 지대한 역할을 끼치게 되었다.[14]
- 1995년에는 에니악 제작 50주년 기념으로 펜실베이니아 대학교에서 에니악의 구조와 기능을 그대로 재현한 CPU를 만들었다. 에니악의 모든 기능을 재현하는 데 필요한 칩의 면적은 7.44mm x 5.29mm, 소비 전력은 0.5W, 클럭은 20MHz로, 집채만 한 컴퓨터를 동전만 한 칩에 집어넣고 클럭 속도를 200배나 늘리면서 소비 전력을 35만 배나 줄인 것에서, 그리고 전용 클라이언트를 통해 더 편리하게 스위치 배선을 연결해 프로그래밍할 수 있게 된 것에서 기술력의 발전을 실감할 수 있다. 그리고 이마저도 동시기 펜티엄 1의 클럭 60MHz보다 훨씬 느렸다는 점에서 설계 기술의 발전 역시 엿볼 수 있다.
[1] Gladeon M. Barnes. M4 셔먼과 M26 퍼싱의 개발을 총괄했고 M1 대전차 로켓에 바주카라는 별명을 붙였다.[2] 2022년 10월 기준 한화 약 92억 원[3] 세계 최초의 민간용 CPU인 인텔 4004(740kHz)보다도 더 성능이 낮다. 물론 4004는 에니악 공개로부터 25년 후인 1971년에 나온 것을 감안해야 한다. 참고로 100kHz는 0.1MHz이며, 현재 나오는 인텔 CPU의 최대 클럭이 6.2GHz이니, 간단히 따져봐도 62,000배라는 엄청난 차이가 난다.[4] 1940년대에는 중요한 성능 지표였다.[5] A. Randall 5th., Q&A: A lost interview with ENIAC co-inventor J. Presper Eckert, 2006[6] 현대식으로 비유하면, FPGA 로직의 합성을 베릴로그를 통한 자동화 없이 사람이 일일이 소자를 조작해서 하는 것과 같다.[7] Alt, Franz (July 1972). Archaelogy of computers: reminiscences, 1945-1947. Communications of the ACM. 15 (7): 693–694.[8] 존 어태너소프(John Atanasoff)는 아이오와 주립 대학의 교수였고, 클리퍼드 베리(Clifford Berry)는 그의 제자다. 1939년 개발에 착수해 1942년에 실험을 거친 전자식 디지털 컴퓨터였다.[9] 이것이 잘못된 판결이라는 주장 또한 만만찮다. 모클리와 에커트가 에니악으로 특허를 신청하려고 했을 때 다른 컴퓨터 회사에서 재판에 유리한 증거로 써먹었던 자료에 불과한 것을 기술에 밝지 못한 판사가 엉뚱하게 최초의 컴퓨터로 판결해 버렸다는 것이다. 실제로 ABC는 컴퓨터라기보다는 전자계산기의 기술적 가능성을 보여준 정도에 불과하다고.[10] 이와 유사한 경우는 극초창기에 개발된 CPU인 인텔 4004로, 세계 최초의 CPU는 아니지만 세계 최초의 민간용 CPU라는 수식어가 있다.[11] 사실 이런 이유로 레스토랑 또한 여성들이 아니라 남성들이 주방을 보고 있다. 요리 같은 가사일은 여성이 하는 것이 당연시되던 시대였음을 감안하면 의외라고 볼 수 있을 텐데, 요리도 집에서 하는 게 아니라 식당에서 하는 쪽으로 넘어가면 대단히 힘들고 고된 일이라 남성이 할 수밖에 없었기 때문이다. 심지어 이건 현대에도 유효해서 특히 중국집 같은 조리 과정이 상당히 고된 식당은 99.99%가 남자 주방장으로만 이루어져 있다. 고든 램지나 제이미 올리버 같은 스타 셰프들이 죄다 남자인 것도 같은 이유 때문이다.[12] 사실, 세계 최초의 프로그래머부터가 여성이였다. 바로 영국의 시인 고든 바이런의 딸 에이다 러브레이스. 흠좀무한 건 러브레이스는 사실 컴퓨터가 개발되기도 전에 이미 프로그램을 짜놓았었다. 정확히 말하자면 러브레이스는 19세기의 사람이었는데, 말인즉 에니악이 나오기 100년 전에 먼저 프로그램부터 짜놓았다. 이렇게 된 데는 찰스 배비지가 개발 중이던 증기 기관 컴퓨터인 해석 기관의 설계도를 보고 프로그래밍을 했는데, 문제는 그 해석 기관이 시간과 예산, 기술력 부족으로 미완성으로 끝나서 프로그램만 남아버린 것. 한편 그 100년 전에 짜놓은 프로그램의 문법과 규칙들은 현재 사용되는 모든 프로그래밍 언어들의 근간이 되어 있다. 가장 대표적인 예로, 거의 모든 언어에 쓰이는 if문은 러브레이스가 정의한 문법을 그대로 따라 쓰고 있다. 심지어는 그녀의 업적을 기리기 위해 이름을 딴 동명의 프로그래밍 언어인 ADA도 존재한다(!)[13] 컴퓨터란 단어는 지금의 도구를 의미하는 것이 아니라 원래 계산원 직업을 지칭하는 말이였다.[14] 월터 아이작슨, <이노베이터>, 149-150쪽.