[만화] 2. 앨런 튜링과 폰노이만

joone의 이미지
안녕하세요. http://joone.net에서 연재 중인 제 만화를
소개합니다.

누가 지금과 같은 형태의 컴퓨터를 처음 만들었을까? 컴퓨터는 세계 2차 대전 이후, 
여러 나라에서 개발을 시도했지만, 처음으로 이론적 모델을 제시한 사람은 영국의 
수학자 앨런 튜링이다..

그는 1937년에 발표한 “On Computable Numbers, with an Application to the 
Entscheidungsproblem“논문에서 튜링 기계(Turing Machine)을 소개하였다. 
이는 표에 정의된 각 기호의 규칙대로 긴 테이프에 적힌 기호를 처리하는 추상 장치
였는데, 컴퓨터에 대한 수학적 모델을 정의한 것이다[1]. 여기서 튜링 머신에 입력되는 
기호가 적인 테이프를 소프트웨어라고 볼 수 있다.

이후 앨런 튜링은 세계 2차대전 동안, 독일 암호문을 해독하는 Bombe라는 장치를 
만들어 연합군 승리에 큰 기여를 한다[2]. 이처럼, 2차 대전 기간에 만들어진 컴퓨터는 
특정 목적에서만 사용되었으나, 전쟁이 끝나갈 무렵 미국에서는 다용도 컴퓨터인 
에니악(ENIAC)을 만들기 시작했다. 에니악은 펜실베니아 대학 존 에커트와 존 
모클리 교수팀이  1943년 부터 개발을 시작하여 1946년에 완성하였다. 이후, 
미군에 배치되어 미사일 탄도 계산을 위해 사용되었다. 프로그래밍 방식이 지금과 
아주 다른데, 일일히 배선을 연결해서 코딩을 해야 했고, 다른 프로그램을 실행하려면 
배선판을 바꿔야 했다. 게다가 무게는 30톤이였으며, 18000개의 진공관을 사용했기 
때문에 200KW의 전기를 소모해야만 했다[3].

이후, 에니악을 만들었던 팀은 1944년 부터 세계 최초로 프로그램 내장 방식인
 에드박(EDVAC) 개발 시작하여 1949년 미군 탄도 연구소(ballastics research 
laboratory)에 납품한다. 폰 노이만은 컨설턴트로 개발에 참여하여 1945년 
First Draft of a Report on the EDVAC 보고서를 작성하는데, 여기서 같은 
메모리에 프로그램과 데이터가 저장되는 컴퓨터 구조를 제안한다.

지금도 모든 컴퓨터는 이와 같은 컴퓨터 구조를 사용하고 있고, 이를 폰노이만 
구조라고 부른다.

그림에서 볼 수 있듯이,  폰노이만 구조는 크게 CPU, 메모리, 입출력 장치로 
구성되어 있으며, CPU안에는 산술/논리장치, 프로세서 레지스터를 포함하고
 있는 처리 장치(Processing Unit)와 명령어 레지스터와 프로그램 카운터를 
포함하는 제어장치로 구성된다. 메모리는 데이터와 명령어를 함께 저장할 수 
있다.
영국은 뒤늦게 미국에서 만든 에드박과 폰노이만이 작성한 보고서에 관해
알게 되었다.

그리고, 앨런 튜링에게 에드박과 같은 프로그램 내장 방식의 컴퓨터 개발을 
주문했다. 알랜 튜링은 1945년 부터 국립 물리학 연구소에서 
ACE(Automatic Computing Engine)라는 프로그램 내장형 컴퓨터를 
개발하면서 자신이 생각한 튜링 머신을 실제 구현해볼 수 있는 기회를 갖게 
되었다.

1946년 공개된 그의 논문을 보면 비록 폰노이만의 에드박 보고서 보다 늦게
 작성되었지만, 프로그램 내장 방식 컴퓨터에 대한 자세한 설계가 담겨져 있다. 
게다가 하드웨어는 최소한으로 구성하고 산술명령 조차 소프트웨어로 구현하
도록 설계되어 있어 오늘날 RISC 방식의 CPU와 같은 설계 철학을 갖고 있었다.
하지만,  예산 집행이 늦어져서  1947년 케임브리지 대학으로 돌아왔다[4].

결국, 케임브리지대학 수학 연구소는 앨런 튜링은 설계한 방식 보다 이미 
검증된 폰노이만 방식으로 에드삭(EDSAC)이라는 컴퓨터를 개발하고 
1949년 처음 사용하게 된다.

실제 내장형 컴퓨터에 대한 아이디어와 설계는 앨런 튜링은 앞섰지만, 
실제 구현은 미국이 주도하게 된 것이다. 사실, 앨런 튜링은 1937년
 폰노이만 지도 아래 박사 과정을 마쳤기 때문에, 아마도 폰노이만이
 앨런 튜링으로 부터 많은 아이디어를 얻었을 것으로 추정하고 있다. 
하지만, 폰노이만은 자신의 보고서에 그런 사실을 언급하지 않았다.

사실, 영국은 세계 2차 대전 중에 독일 군 암호 해독을 위해 먼저 
에니악과 같은 범용 컴퓨터를 만들었으나 기밀 보호를 위해 전쟁이 
끝난 후, 모든 폐기처분 하여 그 기술을 잘 발전시키지 못했다.
 독일도 마찬가지로 2차 대전 중에 컴퓨터를 만들었지만, 전쟁에 
졌기 때문에 계속 연구를 지속할 수 없었다.

하지만, 미국은 폰노이만 같은 이민자들이 초기 컴퓨터 개발에 많은 공헌을 하였고,
컴퓨터를 상업적으로 계속 발전시켜 컴퓨터 시대를 먼저 열게 되었다.

참고

[1] https://ko.wikipedia.org/wiki/튜링_기계
[2] https://ko.wikipedia.org/wiki/앨런_튜링
[3] https://ko.wikipedia.org/wiki/컴퓨터의_역사
[4] The universal computer, p.167~168, CRC press, 2012

참고로 이 만화는 만화로 나누는 자유/오픈소스 소프트웨어 이야기에서 연재되고 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.