존 폰 노이만, 그리고 현대 컴퓨팅의 기원 - 윌리엄 어스프레이

존 폰 노이만, 그리고 현대 컴퓨팅의 기원 - 윌리엄 어스프레이

   요즘엔 Parallelism을 극대화한 컴퓨터를 만드는 분야에 관심을 갖고 연구 중이다. 부연하자면… Neuromorphic computing이라고 하는 분야로, 두뇌를 이루는 뉴런 세포들이 하듯이 각종 계산을 ‘모든곳에서/동시에’ 처리하는 processing unit을 만든 것을 목표로 한다. 이를 위해선 메모리와 연산 유닛의 통합이 매우 중요하다. 기억하는 머리와 계산하는 머리가 따로 있는게 아닌 것처럼 말이다. 가능한 응용분야로는 최근에 관심을 많이 받는 Deep learning을 포함하는 Machine learning 알고리즘 전용 가속기를 들 수 있겠다. 최근의 NVDIA가 GPU를 이용한 Machine learning 연산을 제공하지만, 사람의 욕심은 끝이 없다. 더 빠르고, 더 에너지가 덜 드는 칩을 만들려고 애쓰다보니 이 한 몸도 고생중인 것이다.

   이쪽 분야 논문의 소개란에는 “Non-von Neumann computing“이나 “The von Neumann bottleneck“ 이라는 말이 항상 붙는다. 폰 노이만이 만든  직렬식 구조(멀티코어나 파이프라인으로 어느 정도의 병렬성은 구현가능하지만..) 가 갖는 문제를 지적하면서, 새로운 구조를 제안하는 것이다. 문제는… 내가 비판하는 대상이 뭔지 잘 모른다는 점이다. Computer architecture에 대해선 쥐뿔도 모르면서, 그리고 그 발명가인 폰 노이만이 어떤 사람인지도 모르면서 그의 걸작을 비판하는 건 왠지 양심 찔리는 일이란 생각이 들었다. 이런 생각에 두 권의 책을 구했다. 하나는 폰노이만의 전기인 이 책 <존 폰 노이만, 그리고 현대 컴퓨팅의 기원>. 그리고 패터슨과 헤네시(D. A. Patterson & J. L. Hennesy)의 <컴퓨터 구조 및 설계, 5판>. 세워둔 작전은… 폰노이만의 전반적인 일생을 이해하고 나서, 그의 작품인 컴퓨터 구조를 교과서로 이해하자! 는 것이었다. 

   존 폰 노이만은(John von Neumann)은 1903년 겨울, 헝가리의 수도 부다페스트에서 태어났다. 출생년도를 보면 알 수 있겠지만, 그는 두 차례의 세계대전을 몸소 겪은 세대다. 고등학교 시절엔 조국 헝가리가 동맹국에 참전하여 세계1차대전을 치룬다. 패전의 결과로 맺어진 트리아농 조약에 의해 헝가리의 국력은 1/3 수준으로 줄어들었으며, 부다페스트도 작은 도시 수준으로 전락해버리고 말았다. 다행히 존은 변호사 아버지 밑에서 안정적인 교육을 받으며 성장할 수 있었다. 그는 어릴 때부터 ‘사진기억’급의 암기력을 갖춘 독서광이었다고 한다. 특히 역사 관련 서적을 좋아했다고 한다. 아마, 역사에 대한 이해를 바탕으로 온갖 지식을 흡수한 것이 아닌가 싶다. 언어도 잘했다고 하는데, 헝가리어/불어/독어/그리스어/라틴어를 구사했다고 하는걸 보니… 어린이 국가대표쯤 되는 듯하다. (이쯤 알았으면 그의 업적은 시기하지 않기로 한다. 태생이 천재인 사람이다.) 대학시절엔 수업엔 참석하지 않고 시험날짜에만 출석했다고 한다. (배우면 손해..라는건가..)  

   1923년에는 스위스 연방공과대학(ETH)에 등록해서 1925년에 화학공학 학위를 받았고, 1926년엔 부다페스트에서 수학박사 학위를 받았다. (응?) 1927년엔 사강사에 임명되어 프로 수학자의 길을 걷기 시작한다. 힐베르트의 영향을 받아 수리논리학 관련 논문을 여러편 작성했으나, 괴델의 불완전성에 관한 결과를 알고나서 논리와 기초에 관한 연구에서 손을 떼고 다른 분야를 공부하기 시작한다. 1920년대 후반은 양자역학의 해석에 대한 논쟁이 뜨거웠던 시기이기도 하다. 이 논쟁을 공부한 폰 노이만은 며칠만에 혁명적인 해석을 내놓는다. 

   폰 노이만은 그것을 보자마자 즉시 그것을 일반화하는 작업에 착수하였다. 며칠 만에 그는 무한 차원 벡터 공간(힐베르트 공간)에 관한 힐베르트 학파의 작업을 확장하였고 그것에 기반하여 양자역학의 수학적 기초에 대한 그 자신만의 접근 방식의 기본적인 내용들을 대략 정리해 내었다. 힐베르트는 매우 만족하였다. 1927년에 발표된 힐베르트, 노르트하임, 폰 노이만의 공동 논문은 이것을 주제로 한 것이다.

   개인적으로 양자역학을 좋아하는 이유가 여러가지 있지만, 여러 이론 중에서도 양자역학적 해의 공간이 무한차원 벡터공간이라는 해석을 가장 좋아한다. “수학 세계에나 존재할 법한 완비성(Completeness)이 현실세계에도 존재한다니.. 세상은 생각보다 아름다운 곳이구나~” 하고 감탄했던 이론이다. 양자역학을 접한지 며칠만에 이 해석을 내놨다고 하니, 정말 대단하다… 1930년에는 프린스턴 대학교에서 강의를 하고, 1933년 베블런, 제임스 알랙산더, 아인슈타인, 바일의 뒤를 이어 고등연구소(Institute of Advanced Study)의 5번째 교수로 임명된다. 프린스턴에 자리 잡은 후 그는 수학 뿐아니라 경제학에도 관심을 갖고, “최대최소정리”를 제안해 게임이론의 발전에도 기여한다.

   1941년, 그는 전쟁을 위해 필요한 수학과 계산 관련 연구프로그램에 참여한다. 미국의 탄도미사일 연구소, 국방 연구위원회, 해군 군수국에서 폭탄 관련 계산을 하다가 1943년 9월에는 원자폭탄의 제작을 목표로하는 ‘맨하탄 프로젝트‘의 일원이 된다. 맨하탄 프로젝트는 아인슈타인, 보어, 오펜하이머, 파인만, 베테, 텔러, 등등 수많은 스타 물리학자로 유명했지만, 이들에게도 풀기 힘든 문제가 있었다. 파인만이 제안한 원자폭탄의 내파 기법은 해석적으로 풀기 힘들어서, 기계를 이용한 수치계산법으로 풀어야할 필요가 있었는데 당시의 IBM펀치카드 장비는 너무 느려서 한계가 있었다. 로스알라모스로 불려간 폰 노이만은 당시의 컴퓨팅 기법을 공부하고나더니, 펀치카드의 업그레이드 방법을 제안해서 넘치는 계산 수요를 소화하는 한편, ENIAC의 뒤를 잇는 두번째 컴퓨터 EDVAC의 설계에도 참여했다. 

   전쟁이 마치고 나서 다시 연구에 집중할 수 있게 된 폰 노이만은 동료 골드스타인, 벅스와 함께 현대 컴퓨터 구조의 초석이 되는 논문을 발표한다. 1946년 6월 출판되고, 1947년 9월 두번째 판으로 재출간된 <전자식 컴퓨팅 장비의 논리설계에 대한 예비논의>(Preliminary Discussion of the Logical Design of an Electronic Computing Instrument)에서 제안된 컴퓨터 구조는 ‘폰 노이만 구조’로 불리며 첨단을 달리는 지금의 컴퓨터에서도 고스란히 사용되고 있다. 제안된 자동 컴퓨팅 시스템은 산술/저장/제어/입력/출력을 위한 단위장치를 포함했고, 이를 위한 기본 메모리 기관, 산술연산 기관, 제어기관들은 추상적인 기능 설명을 덧붙여두었다. 각 유닛의 기능에 대한 서술이 추상적인 이유는 간단했다. 해당하는 물리적 소자들이 아직 발명되지 않았기 때문이다. 말하자면, 폰 노이만의 이 논문은 일종의 예언서와 같은 글이었다. 그리고 그대로 이루어졌다.

    컴퓨터 구조에 대해 간단히 설명하면 이렇다. (잘 몰라서 간단히 쓸 수밖에 없음….) 단위 유닛에는 입력, 출력, 메모리, 중앙연산장치가 있다. 중앙연산장치 내부에는 명령어나 데이터의 흐름을 제어하는 제어유닛, 그리고 논리연산이나 계산을 맡는 연산 유닛이 있다. 데이터의 흐름은 입력->{메모리와 CPU의 데이터 교환}->출력 순서를 따르고, 메모리에 저장된 내장프로그램이 CPU의 연산과 제어 방식을 결정한다. 

   산술연산 기관에는 덧셈, 뺄셈, 곱셈을 할 수 있는 연산 유닛 뿐 아니라 연산값을 저장할 수 있는 레지스터(소수정예 메모리)도 포함된다. 레지스터는 연산 유닛의 속도에 맞춰 데이터를 읽고 쓸 수 있어야 하므로, 비싸더라도 매우 빠른 동작 속도를 가져야만 하고 물리적으로는 S-RAM이 그 일을 한다. 한편, 제어 장치는 CPU에 입력된 명령어를 수행하고 산술연산기관과 데이터의 흐름을 제어하는 역할을 한다.  

   폰 노이만 구조에선 메모리의 역할이 중요하다. 덧셈이나 곱셈같이 단순한 계산만 하던 펀치카드와 달리, 판단을 통한 조건 분기 등을 자동으로 수행하기 위해선 데이터 뿐만 아니라 ‘내장 프로그램’도 메모리에 저장해뒀다가 수시로 불러와야하기 때문이다. 폰 노이만은 이를 위해 메모리를 계층적으로 구성하는 설계방식을 제안했다. 1차 메모리는 빠른 속도로 임의 접근(random access) 할 수 있는 소자여야 하고, 물리적으로는 D-RAM에 해당한다. 이 1차 메모리는 CPU 내부에 진행될 연산의 준비물과 결과물을 저장하고, 기계어로 번역된 내장프로그램을 저장하고 있다. 2차 메모리는 일차 메모리보다 가격이 싼만큼 느지만 많은 데이터를 저장할 수 있도록 설계되었다. 지금의 하드디스크에 해당하는 메모리로, 자주 사용되지 않는 대용량의 데이터를 저장하는데 쓰인다. 최근의 메모리 회사들은 이 계층을 더 세분화 해서, 속도와 저장용량의 차이를 줄이려고 애쓰고 있다. 느린 대용량 저장장치인 플래시 메모리와 빠른 저용량 저장장치인 DRAM을 조합해서 만든 SSD(Solid state drive)를 예로 들 수 있다. 

   폰 노이만은 이렇게 천공카드와 EDVAC을 시작으로 컴퓨터를 접하고, 컴퓨터 구조의 설계를 만들어 ‘컴퓨터의 아버지’로 자리매김한다. 그 후에 수치 해석학, 수치 기상학, 천체 물리학, 유체동역학, 정보 처리 이론 등 수많은 분야에 중요한 기여를 한다. 특히 정보 처리 이론의 경우, 생물학자가 밝힌 두뇌의 원리를 이용해 정보 처리를 하는 추상적 기계 장치, ‘오토마타’를 제안하며 인공지능과 두뇌 연구에도 영향을 미친다. 그의 업적을 설명하려면 끝도 없으므로 이 정도에서 줄이겠다 

   존 폰 노이만. 개인적으로, 20세기를 대표하는 천재들을 순서대로 뽑으라고 하면 아인슈타인 다음으로 이 사람을 뽑고 싶다. 내가 아직 잘 모르는 천재들도 있겠지만, 현대 컴퓨터의 아버지인 그의 영향력과 다양한 분야를 섭렵한 그의 열정과 천재성을 고려하면 2등도 안타까울 정도다. (음… 아인슈타인은 외계인인게 분명하니깐 “인간 1위”는 노이만씨 차지가 될 수도……)

This is a preview of Clap Button, a new feedback and analytics tools for Hydejack, built by yours truly. You can try it out on localhost for free, but it will be removed (together with this message) when building with JEKYLL_ENV=production. To use Clap Button on your site, get a subscription
and set clap_button: true in your config file.