컴퓨터 과학자로서의 삶

존 코크(John Cocke)는 1925년 5월 30일에 미국 노스캐롤리아나 주의 샬럿에서 태어났다. 그의 아버지는 당시 듀크 전력 회사의 대표이면서 듀크 대학교의 관리 이사회에서 활동했다. 그는 한 인터뷰에서 자신을 움직인 가장 큰 요소로 호기심을 들었다. 그리고 아버지로부터 호기심을 물려받았다면서 아버지에 관한 다음과 같은 일화를 들려주었다.

하루는 그가 약국에 들렀다가 한쪽에 구멍이 나 있는 검은색 상자를 보게 되었습니다. 그는 그것이 뭐 하는 물건인지 궁금해졌습니다. 그래서 손가락을 구멍에 집어넣었는데 아주 심하게 상처를 입었습니다. 알고 보니 그 상자는 시가 담배의 끝을 잘라주는 물건이었습니다… 내 호기심은 그로부터 물려받았다는 생각이 듭니다. 다행스럽게도 아버지가 겪은 그런 나쁜 경험은 아직까지 한 적이 없네요.​5​

1946년에 듀크 대학교 기계공학과를 졸업한 그는 1956년에 듀크 대학교의 수학과에서 박사 학위를 받았다. 졸업 후 그는 컨설팅 회사인 아서 리틀에 취직했다가 곧 GE로 이직했다. 그런데 IBM에서 일하고 있던 친구가 그를 스티브 던웰Steve Dunwell에게 소개했다. 던웰은 당시 막 시작된 스트레치Stretch 프로젝트의 책임자였다. 던웰은 존 코크를 스트레치 프로젝트로 끌어들이는 데 성공했다.

사무실에서 그의 왼쪽은 제임스 포머린의 자리였고 오른쪽은 프레드 브룩스의 자리였다. 포머린은 프린스턴 대학교 고등연구소에서 존 폰 노이만의 전자식 컴퓨터 프로젝트에서 일했던 사람이다.​6​ 그는 윌리엄스 튜브를 도입했었다. 프레드 브룩스는 하버드 대학교에서 에이컨 교수 밑에서 컴퓨터 개발에 참여한 경험이 있었다.​*​

1956년부터 시작된 프로젝트는 1961년에 시장에 제품을 내놓으면서 마무리되었다. 스트레치 컴퓨터의 목표는 시작 당시 IBM의 주력 컴퓨터였던 704 모델보다 100배 빠른 컴퓨터를 만드는 것이었다. 그래서 일부에서는 스트레치 컴퓨터를 최초의 슈퍼컴퓨터라고 부르기도 한다. 존은 프로세서의 핵심 기술이었던 미리보기lookahead 기능을 구체적으로 설계했다. 이를 위해서 그는 포트란 언어로 시뮬레이터를 만들어서 동작의 정확성을 검증함과 동시에 다양한 선택지 중에서 가장 이상적인 답을 찾으려 노력했다. 하지만 이렇듯 성능 향상을 위한 획기적인 기법들이 적용되었음에도 불구하고 결국 전체적인 시스템 성능 향상은 목표치인 100배의 절반에도 미치지 못했다.

스트레치 컴퓨터 프로젝트가 실질적으로 실패로 결론이 난 후에 IBM은 새롭게 두 개의 프로젝트를 시작했다. 각각 X, Y라는 이름이 붙은 프로젝트였는데 X는 스트레치보다 10~20배 정도 빠른 컴퓨터를 목표로 했고, Y는 100배 빠른 컴퓨터를 목표로 했다.​7​ 그러던 중, CDC 6600 컴퓨터가 발표되었고 토머스 왓슨 2세는 크게 충격을 받았다.


고성능 컴퓨터의 주도권을 되찾으라는 토머스 왓슨 2세의 명령으로 IBM 경영진은 완전히 독립된 조직을 만들고 프로젝트 이름을 ACS(Advanced Computer Systems)라고 불렀다. 잭 버트램이 프로젝트의 최고 책임자를 맡았고 그는 IBM 내외에서 유능한 인물을 끌어들였다. 그가 첫 번째로 만난 이가 존 코크였다. 그리고 프랜시스 앨런, 브라이언 랜델, 허브 쇼어, 에드 서셍구스, 린 콘웨이 등이 팀에 합류했다.

ACS 프로젝트에서 존은 주로 컴파일러와 관련된 일을 했다. 이는 그가 스트레치 컴퓨터 프로젝트에서 느낀 바가 있었기 때문이었다.

704에서 포트란 I을 사용해 컴파일되어 나온 코드는 오늘의 기준으로 보아도 훌륭합니다… (하지만) 스트레치에서는 내부 구조가 가진 풍부함의 상당 부분이 컴파일러에 의해 활용되지 못했습니다. 그런 일이 벌어지리라고 존 배커스가 미리 예언했던 게 생각나는군요. 당시에 나를 포함하여 구조 설계자들이 포트란 컴파일러에 관해 더 많이 알고 있었다면 덕을 크게 봤을 겁니다.​1​

ACS 프로젝트의 첫 모델인 ACS-1은 분기branch 처리에 많은 신경을 썼다. 스트레치 컴퓨터에서 사용했던 미리보기lookahead 기법이 분기 때문에 예상보다 좋지 못한 성능을 보였기 때문이었다. 또한, 컴파일러를 사용하여 컴퓨터 프로세서 구조에 최적화된 코드를 생성하기 위한 기법들이 대거 도입되었다. 이러한 활동의 중심에는 존 코크가 있었다.

하지만 ACS 프로젝트도 1969년에 흐지부지 끝나고 말았다. 정확한 이유는 알 수 없으나 내부적으로 주도권을 둘러싼 소용돌이가 있었다. 본래 ACS 프로젝트는 독립적인 자율성을 가지는 프로젝트였다. 토머스 왓슨 2세는 오직 성능을 위해서라면 무엇을 해도 된다는 지침을 주었다. 그래서 명령어를 독자적으로 설계할 수 있었다. 그런데 여기에 조금 다른 의견을 가진 이가 있었다. 다름 아닌 진 암달이었다. 스트레치 프로젝트에서도 스티브 던웰과 주도권 다툼을 하다가 밀려나서 결국 회사를 떠나기까지 했었던 그는, 1960년에 다시 입사한 후 IBM 360 모델 설계에서 핵심적인 역할을 했다. 그는 ACS-1도 360 모델의 명령어를 따라야 한다고 생각했다. ACS 프로젝트 초창기부터 그런 주장을 내세웠지만 ACS 프로젝트 팀으로부터 환영받지 못했던 그는 1967년에 독자적으로 ACS의 변형 버전인 AEC/360을 설계했다. 그리고 1968년에 경영진은 ACS-1과 AEC/360을 비교하는 내부 작업을 진행했다. 결과는 AEC/360의 승리였다. 프로젝트의 방향이 완전히 바뀌면서 기존의 팀원들은 뿔뿔이 흩어졌다. 존 코크는 뉴욕 대학교의 쿠란트 수학 연구소로 안식년을 떠났다.​†​


안식년을 보내면서 존은 컴파일러에 대해 더 깊이 파고들 수 있는 기회를 얻었다. 자신의 아이디어를 글로 발표하는 일이 드문 그였지만 이때 비교적 왕성하게 논문 활동을 했다. 그리고 1972년에 그는 IBM의 펠로우로 선정되었다.

1975년에 그에게 완전히 예상치 못한 기회가 찾아왔다. IBM은 통신 회사인 에릭슨과 함께 전자교환기를 개발할 계획을 세웠다. 전자교환기는 복잡한 실수floating point 연산은 필요치 않았고 대신에 시간당 많은 통화 연결을 처리하기 위해 프로세서의 처리 속도가 빨라야 했다. 초당 처리되는 명령어의 수가 12,000,000개인 프로세서를 만드는 일에 존 코크가 참여했다. 그는 12 MIPS(Million Instructions Per Second)의 성능을 가지는 프로세서를 만들려면 명령어의 구조가 단순해야 한다고 생각했다. 그리고 메모리에 저장된 값을 대상으로 직접 연산 작업을 하는 것은 단위 명령어 처리 시간을 길게 만들어서 전체 성능을 떨어뜨린다고 보았다. 그래서 산술 연산은 내부 레지스터에서만 처리되도록 하고 메모리에는 읽기, 쓰기 동작만 벌어지는 명령어 구조를 생각했다. 단순한 명령어 구조로 인해 생기는 단점은 컴파일러 기술을 통해 만회하면 되었다. 이렇게 제안된 새로운 컴퓨터 시스템은 당시 연구소의 주소 번호를 따와서 801 컴퓨터라고 불렀다. 801 컴퓨터는 최초의 RISC(Reduced Instruction Set Computer) 컴퓨터로 간주된다.

전자교환기 개발은 취소되었지만 801 컴퓨터 개발은 계속되었다. 사실상 801 컴퓨터의 핵심은 컴파일러에 있었다. 그래서 존 코크는 PL/I 언어를 일부 축소한 PL.8 언어를 정의하고 이를 위한 컴파일러를 개발했다. 1978년에 개발이 완료되었을 때 801 프로세서의 성능은 좋은 성능을 보여주었다. PL.8 컴파일러의 성능은 고무적이었다. 심지어 PL.8 컴파일러로 생성된 실행 코드를 370 컴퓨터에서 시뮬레이션했을 때의 속도가, PL/I 컴파일러로 생성된 실행 코드를 370 컴퓨터에서 직접 수행했을 때보다 더 빨랐다. 그래서 801 프로세서는 대형 컴퓨터의 서브 시스템용으로 도입되었다.

하지만 IBM은 801 프로세서를 본격적으로 도입하는 데 주저했다. 그 사이에 썬 마이크로시스템즈 등과 같은 스타트업 기업들이 RISC 프로세서를 사용한 컴퓨터 시스템을 시장에 내놓아 큰 호응을 얻었다. IBM은 801 프로세서를 기반으로 RS/6000 시스템을 개발했고 PowerPC 구조로 진화시켰다. 모두 존 코크의 영향을 크게 받았다.


1992년에 은퇴할 때까지는 그는 왕성한 연구 활동을 보였다. RISC 구조 연구 외에도 음성 인식과 자동 번역 등에 관심을 보였다. 또한 늦은 나이에 결혼하여 행복한 결혼 생활을 보냈다. 그는 2002년에 몇 번의 뇌졸중을 겪은 후 세상을 떠났다.

1 2 3 4 5 6 7