본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
요즘 화제
임의의 문서로
sitesupport
사용자 모임
사랑방
사용자 모임
관리 요청
편집 안내
소개
도움말
정책과 지침
질문방
한울위키
검색
검색
보이기
로그인
개인 도구
로그인
폰 노이만 구조 문서 원본 보기
문서
토론
한국어
읽기
원본 보기
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
원본 보기
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
보이기
사이드바로 이동
숨기기
←
폰 노이만 구조
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
일반 사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[파일:Von Neumann Architecture.svg|섬네일|upright=1.35|폰 노이만 구조의 개요]] '''폰 노이만 구조'''({{llang|en|Von Neumann architecture}})는 '''폰 노이만 모델''' 또는 '''프린스턴 구조'''라고도 불리며,<ref name ="FirstDraftReport" /> 1945년 [[존 폰 노이만]]이 펜실베이니아 대학교 [[무어 전기 공학 학교]]에서 [[존 모클리]] 및 [[J. 프레스퍼 에커트]]와 논의한 설계 내용을 담은 [[에드박의 보고서 최초 초안]]을 바탕으로 한 [[컴퓨터 구조]]이다. 이 문서는 전자 [[디지털 컴퓨터]]의 설계 구조를 "기관"으로 묘사했으며, 이후 다음과 같은 구성 요소들을 포함하는 것으로 이해되었다: * [[산술 논리 장치]]와 [[프로세서 레지스터]]를 모두 갖춘 [[중앙 처리 장치|처리 장치]] * [[명령 레지스터]]와 [[프로그램 카운터]]를 포함하는 [[제어 장치]] * [[데이터 (컴퓨팅)|데이터]]와 [[명령어 집합|명령어]]를 저장하는 [[주기억장치|메모리]] * 외부 [[대용량 스토리지]] * [[입력 및 출력]] 메커니즘<ref name="FirstDraftReport">{{인용|author-last=von Neumann |author-first=John |author-link=John von Neumann |title=First Draft of a Report on the EDVAC |date=1945 |url=https://sites.google.com/site/michaeldgodfrey/vonneumann/vnedvac.pdf |access-date=2011-08-24 |archive-url=https://web.archive.org/web/20130314123032/http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf |archive-date=2013-03-14}}.</ref><ref name="GanesanCh4">{{괄호 없는 하버드 인용|Ganesan|2009}}.</ref> 이 구조의 발명을 폰 노이만에게 귀속시키는 것은 논란의 여지가 있다. 특히 에커트와 모클리가 필요한 설계 작업을 상당 부분 수행했고, 폰 노이만 및 [[허먼 골드스타인]]과 논의하기 훨씬 전부터 프로그램 내장식 아이디어를 가지고 있었다고 주장하기 때문이다.<ref name="FiftyYearsOfArmyComputing">{{인용|author-last=Bergin |author-first=Thomas J. |title=Fifty Years of Army Computing: From ENIAC to MSRC, U.S. Army Research Laboratory |date=2000 |page=34 |url=https://www.govinfo.gov/app/details/GOVPUB-D105-PURL-LPS58495 |access-date=2024-11-05}}</ref> "폰 노이만 구조"라는 용어는 [[명령어 인출]]과 데이터 연산이 동시에 발생할 수 없는 (공통 [[버스 (컴퓨팅)|버스]]를 공유하므로) 모든 [[프로그램 내장식 컴퓨터]]를 지칭하는 의미로 진화했다. 이는 해당 시스템의 성능을 자주 제한하는 [[#폰 노이만 병목 현상|폰 노이만 병목 현상]]이라고 불린다.<ref>{{인용|author-last=Markgraf |author-first=Joey D. |title=The Von Neumann Bottleneck |date=2007 |url=http://aws.linnbenton.edu/cs271c/markgrj/ |archive-url=https://web.archive.org/web/20131212205159/http://aws.linnbenton.edu/cs271c/markgrj/ |archive-date=December 12, 2013 |url-status=dead |df=mdy-all }}.</ref> 폰 노이만 구조는 [[하버드 아키텍처]]보다 간단하다 (하버드 아키텍처는 메모리 읽기 및 쓰기를 위한 주소 및 데이터 버스 세트와 [[명령어 인출|명령어]]를 가져오기 위한 또 다른 주소 및 데이터 버스 세트가 따로 있다). [[프로그램 내장식 컴퓨터]]는 [[컴퓨터 프로그램|프로그램 명령어]]와 데이터를 모두 인코딩하기 위해 동일한 기본 메커니즘을 사용하는 반면, [[플러그판]] 배선이나 명령 [[구현]]을 위한 고정 제어 회로와 같은 메커니즘을 사용하는 설계와는 다르다. 프로그램 내장식 컴퓨터는 1940년대의 수동으로 재구성되거나 고정된 기능을 가진 컴퓨터인 [[콜로서스 (컴퓨터)|콜로서스]]나 [[에니악]]에 비해 진보한 것이었다. 이들은 [[개폐기]]를 설정하고 [[패치 케이블]]을 삽입하여 다양한 기능 단위 간에 데이터 및 제어 신호를 라우팅하여 프로그래밍되었다. 대부분의 현대 컴퓨터는 데이터와 프로그램 명령어를 모두 인코딩하고 저장하기 위해 동일한 하드웨어 메커니즘을 사용하지만, CPU와 메모리 사이에 [[CPU 캐시|캐시]]를 가지고 있으며, CPU에 가장 가까운 캐시의 경우 명령어와 데이터에 대해 별도의 캐시를 가지고 있어 대부분의 명령어 및 데이터 인출이 별도의 버스를 사용한다 ([[변형 하버드 아키텍처#분할 캐시 (또는 거의 폰 노이만) 아키텍처|분할 캐시 아키텍처]]). ==역사== 초기 컴퓨터는 고정된 프로그램을 가지고 있었다. 일부 매우 간단한 컴퓨터는 단순함이나 훈련 목적으로 여전히 이 설계를 사용한다. 예를 들어, 탁상 [[계산기]]는 (원칙적으로) 고정 프로그램 컴퓨터이다. 기본적인 [[수학]] 연산은 할 수 있지만, [[워드 프로세서]]나 게임을 실행할 수는 없다. 고정 프로그램 기계의 프로그램을 변경하려면 기계를 재배선하거나 재구성하거나 재설계해야 한다. 초기 컴퓨터는 특정 작업을 위해 "프로그래밍"되었다기보다는 "설계"되었다고 볼 수 있다. "재프로그래밍"은 (가능했다 하더라도) [[순서도]]와 종이 노트로 시작하여 상세한 엔지니어링 설계, 그리고 종종 육체적으로 기계를 재배선하고 재구축하는 고된 과정으로 이어지는 힘든 작업이었다. [[에니악]]에서 프로그램을 설정하고 디버깅하는 데 3주가 걸릴 수도 있었다.<ref>{{괄호 없는 하버드 인용|Copeland|2006|p=104}}.</ref> 프로그램 내장식 컴퓨터의 제안과 함께 이것이 바뀌었다. 프로그램 내장식 컴퓨터는 설계상 [[명령어 집합]]을 포함하며, [[컴퓨테이션]]을 상세히 설명하는 일련의 명령어([[컴퓨터 프로그램|프로그램]])를 메모리에 저장할 수 있다. 프로그램 내장식 설계는 또한 [[자체 수정 코드]]를 허용한다. 이러한 기능의 초기 동기는 프로그램이 명령어의 주소 부분을 증가시키거나 다른 방식으로 수정해야 할 필요성이었다. 이는 초기 설계에서 운영자가 수동으로 해야 했던 작업이었다. [[인덱스 레지스터]]와 [[주소 지정 방식|간접 주소 지정]]이 기계 구조의 일반적인 특징이 되면서 이 중요성은 줄어들었다. 또 다른 용도는 [[주소 지정 방식|즉시 주소 지정]]을 사용하여 자주 사용되는 데이터를 명령어 스트림에 포함시키는 것이었다. 폰 노이만은 이 모델과 일반적으로 설명되는 용어와는 다른 용어로 자동 컴퓨팅 시스템을 설명했다. [[에드박의 보고서 최초 초안]]<ref name ="FirstDraftReport" />에서 이 구조는 "고속 메모리 M, 중앙 연산 장치 CA, 외부 기록 매체 R, 입력 기관 I, 출력 기관 O, 그리고 중앙 제어 CC"로 구성되었다.<ref>{{서적 인용|last1=von Neumann |first1=Jon |title=Theory of Self-reproducing Automata |url=https://archive.org/details/theoryofselfrepr0000vonn_x7g0 |date=1966 |publisher=University of Illinois Press |isbn=978-0252727337 |page=[https://archive.org/details/theoryofselfrepr0000vonn_x7g0/page/n33 10]}}</ref> ==기능== 광범위하게 볼 때, 명령어를 데이터로 취급할 수 있는 능력은 [[어셈블리어#어셈블러|어셈블러]], [[컴파일러]], [[링커 (컴퓨팅)|링커]], [[로더 (컴퓨팅)|로더]] 및 기타 자동화된 프로그래밍 도구를 가능하게 한다. 이는 "프로그램을 작성하는 프로그램"을 가능하게 한다.<ref>{{인용|url=http://catb.org/~esr/jargon/html/M/MFTL.html |title=MFTL (My Favorite Toy Language) entry Jargon File 4.4.7 |access-date=2008-07-11}}.</ref> 이로 인해 폰 노이만 구조를 기반으로 한 기계 주변에서 정교한 자체 호스팅 컴퓨팅 생태계가 번성하게 되었다. 일부 [[고급 프로그래밍 언어]]는 런타임에 [[실행 파일|실행 가능 코드]]를 조작하는 추상적이고 기계 독립적인 방법을 제공하거나(예: [[LISP]]), 런타임 정보를 사용하여 [[JIT 컴파일]]을 조정함으로써(예: [[자바 가상 머신]]에서 호스팅되는 언어 또는 [[웹 브라우저]]에 내장된 언어) 폰 노이만 구조를 활용한다. 더 작은 규모에서는 [[비트 블릿]] 또는 [[고급 셰이더 언어|픽셀 및 정점 셰이더]]와 같은 일부 반복 작업을 JIT 컴파일 기술을 사용하여 범용 프로세서에서 가속할 수 있다. 이는 여전히 인기 있는 자체 수정 코드의 한 가지 용례이다. ==프로그램 내장식 개념의 발전== [[케임브리지 대학교]]의 [[맥스 뉴먼]]의 강연을 통해 수학 논리의 문제에 대해 알게 된 수학자 [[앨런 튜링]]은 1936년 런던 수학회 회보에 "계산 가능한 수에 대하여, 판정 문제의 응용과 함께"라는 제목의 논문을 발표했다.<ref name="Turing1936">{{인용|author-last=Turing |author-first=Alan M. |author-link=Alan M. Turing |publication-date=1937 |date=1936 |title=On Computable Numbers, with an Application to the Entscheidungsproblem |periodical=Proceedings of the London Mathematical Society |series=2 |volume=42 |pages=230–265 |doi=10.1112/plms/s2-42.1.230|s2cid=73712 }} 및 {{인용|author-last=Turing |author-first=Alan M. |author-link=Alan M. Turing |publication-date=1937 |title=On Computable Numbers, with an Application to the Entscheidungsproblem. A correction |periodical=Proceedings of the London Mathematical Society |series=2 |volume=43 |pages=544–546 |doi=10.1112/plms/s2-43.6.544 |date=1938 |issue=6}}.</ref> 이 논문에서 그는 유니버설 계산 기계라고 부르는 가상 기계를 설명했는데, 오늘날에는 "[[보편 튜링 기계]]"로 알려져 있다. 이 가상 기계는 명령어와 데이터를 모두 포함하는 무한 저장소(오늘날 용어로는 메모리)를 가지고 있었다. [[존 폰 노이만]]은 1935년 케임브리지 방문 교수 재직 중, 그리고 튜링이 1936-1937년 [[프린스턴 고등연구소|프린스턴 (뉴저지주)]]의 [[프린스턴 고등연구소]]에서 박사 학위를 취득할 때 튜링과 알게 되었다. 그 당시 그가 튜링의 1936년 논문을 알고 있었는지는 명확하지 않다. 1936년, [[콘라트 추제]] 또한 두 개의 특허 출원에서 기계 명령어가 데이터에 사용되는 것과 동일한 저장 공간에 저장될 수 있다고 예상했다.<ref>{{인용|title=Electronic Digital Computers |journal=Nature |date=September 25, 1948 |volume=162 |page=487 |doi=10.1038/162487a0 |df=mdy-all |last1=Williams |first1=F. C. |last2=Kilburn |first2=T. |issue=4117 |bibcode=1948Natur.162..487W |s2cid=4110351 |doi-access=free }}.</ref> 독립적으로, [[J. 프레스퍼 에커트]]와 [[존 모클리]]는 [[펜실베이니아 대학교]]의 [[무어 전기 공학 학교]]에서 [[에니악]]을 개발하던 중 1943년 12월에 프로그램 내장식 개념에 대해 저술했다. <ref name="Lukoff_1979">{{서적 인용|author-last=Lukoff |author-first=Herman |author-link=Herman Lukoff |title=From Dits to Bits: A personal history of the electronic computer |url=https://archive.org/details/fromditstobitspe0000luko |date=1979 |publisher=Robotics Press |location=Portland, Oregon|isbn=0-89661-002-0 |lccn=79-90567}}</ref><ref>에니악 프로젝트 관리자 그리스트 브레이너드의 1943년 12월 에니악 개발 첫 기간 진척 보고서에서는 "가장 간단한 프로젝트를 위해 문제를 복잡하게 만들지 않기 위해" 에니악은 "자동 규제" 없이 구성될 것이라고 명시함으로써 프로그램 내장식 개념을 암묵적으로 제안했다 (동시에 에니악 구현에서는 이를 거부했다).</ref> 새로운 기계인 [[에드박]]을 계획하면서 에커트는 1944년 1월에 새로운 주소 지정 가능한 메모리 장치인 수은 금속 [[지연선 기억기]]에 데이터와 프로그램을 저장할 것이라고 썼다. 이는 실용적인 프로그램 내장식 기계의 건설이 처음으로 제안된 것이었다. 당시 그와 모클리는 튜링의 작업을 알지 못했다. 폰 노이만은 1944년 여름, [[로스앨러모스 국립연구소]]의 [[맨해튼 계획]]에 참여했다. 이 계획은 엄청난 양의 계산을 필요로 했고, 그를 [[에니악]] 프로젝트로 이끌었다. 그곳에서 그는 프로그램 내장식 컴퓨터인 [[에드박]]의 설계에 대한 지속적인 논의에 참여했다. 그 그룹의 일원으로서 그는 에커트와 모클리의 작업을 바탕으로 "에드박 보고서 초안"<ref name ="FirstDraftReport"/>이라는 제목의 설명을 작성했다. 그의 동료 허먼 골드스타인이 이를 배포했을 때 미완성 상태였고, 폰 노이만의 이름만 기재되어 있었다 (이는 에커트와 모클리에게 좌절감을 안겨주었다).<ref>{{괄호 없는 하버드 인용|Copeland|2006|p=113}}.</ref> 이 논문은 미국과 유럽의 수십 명의 폰 노이만 동료들에게 읽혔으며, 다음 세대 컴퓨터 설계에 영향을 미쳤다.{{모호함|날짜=2022년 3월}} [[잭 코플랜드]]는 "전자 프로그램 내장식 디지털 컴퓨터를 '폰 노이만 기계'라고 부르는 것은 역사적으로 부적절하다"고 생각한다.<ref>{{인용|author-last=Copeland |author-first=Jack |author-link=Jack Copeland |title=A Brief History of Computing: ENIAC and EDVAC |date=2000 |url=http://www.alanturing.net/turing_archive/pages/Reference%20Articles/BriefHistofComp.html#ACE |access-date=2010-01-27}}.</ref> 그의 로스앨러모스 동료 [[스탠 프랭클]]은 튜링의 아이디어에 대한 폰 노이만의 존경에 대해 말했다:<ref>{{인용|author-last=Copeland |author-first=Jack |author-link=Jack Copeland |title=A Brief History of Computing: ENIAC and EDVAC |date=2000 |url=http://www.alanturing.net/turing_archive/pages/Reference%20Articles/BriefHistofComp.html#ACE |access-date=2010-01-27}} ({{인용|author-last=Randell |author-first=Brian |author-link=Brian Randell |title=On Alan Turing and the Origins of Digital Computers |editor-last=Meltzer |editor-first=B. |editor-last2=Michie |editor-first2=D. |page=10 |place=Edinburgh |publisher=[[에든버러 대학교 출판부]] |journal=Machine Intelligence |volume=7 |date=1972 |isbn=0-902383-26-4}}를 인용한 작업).</ref> {{인용문| 나는 1943년경 또는 44년경 폰 노이만이 튜링의 1936년 논문의 근본적인 중요성을 잘 알고 있었다는 것을 안다.... 폰 노이만이 그 논문을 나에게 소개했고 그의 권유로 나는 그것을 주의 깊게 연구했다. 많은 사람들이 폰 노이만을 "컴퓨터의 아버지"(현대적인 의미에서)라고 칭송했지만, 나는 그가 스스로 그런 실수를 저지르지 않았을 것이라고 확신한다. 그는 아마 산파라고 불릴 수 있을 것이다. 그러나 그는 나에게, 그리고 다른 사람들에게도 분명히 강조했듯이, 근본적인 개념은 튜링에게서 비롯되었다는 것을 분명히 했다. (베비지가 예상한 정도는 아니지만).... 물론 튜링과 폰 노이만 둘 다 이러한 개념의 "[[실용화]]"에 상당한 공헌을 했지만, 나는 이것들을 메모리에 자신의 활동 프로그램을 저장하고 이러한 활동 과정에서 그 프로그램을 수정할 수 있는 컴퓨터의 개념을 도입하고 설명하는 것과 중요성을 비교할 수는 없을 것이라고 생각한다. }} "초안" 보고서가 유통될 당시, 튜링은 "제안된 전자 계산기"라는 제목의 보고서를 작성하고 있었다. 이 보고서는 그가 [[자동 컴퓨팅 엔진|자동 컴퓨팅 엔진 (ACE)]]이라고 부른 기계에 대한 공학적 및 프로그래밍적 세부 사항을 설명했다.<ref>{{괄호 없는 하버드 인용|Copeland|2006|pp=108–111}}.</ref> 그는 1946년 2월 19일 영국 [[영국 국립물리연구소|국립물리연구소]]의 집행 위원회에 이를 제출했다. 튜링은 블레츨리 파크에서의 전시 경험을 통해 자신이 제안한 것이 실현 가능하다는 것을 알고 있었지만, 이후 수십 년 동안 유지된 [[콜로서스 (컴퓨터)|콜로서스]]에 대한 비밀 유지로 인해 그렇게 말할 수 없었다. ACE 설계의 다양한 성공적인 구현이 이루어졌다. 폰 노이만과 튜링의 논문은 모두 프로그램 내장식 컴퓨터를 설명했지만, 폰 노이만의 초기 논문이 더 널리 유통되었고 그가 개요를 제시한 컴퓨터 구조는 "폰 노이만 구조"로 알려지게 되었다. 1953년 출판된 "생각보다 빠르다: 디지털 컴퓨팅 기계에 대한 심포지엄"(B. V. 보든 편집)에서 컴퓨터 인 아메리카 장의 한 섹션은 다음과 같이 쓰여 있다:<ref>{{괄호 없는 하버드 인용|Bowden|1953|pp=176, 177}}.</ref> <blockquote> '''프린스턴 고등연구소의 기계''' 1945년, 에니악이 제작된 필라델피아의 무어 공과대학에서 근무하던 J. 폰 노이만 교수는 동료들과 함께 디지털 컴퓨터의 논리 설계에 대한 보고서를 발행했다. 이 보고서에는 이후 E.D.V.A.C. (전자 개별 변수 자동 컴퓨터)로 알려지게 된 기계의 설계에 대한 상세한 제안이 담겨 있었다. 이 기계는 최근에야 미국에서 완성되었지만, 폰 노이만 보고서는 케임브리지의 E.D.S.A.C. (전자 지연 저장 자동 계산기) 건설에 영감을 주었다 (130페이지 참조). 1947년, 벅스, 골드스타인, 폰 노이만은 또 다른 유형의 기계 (이번에는 병렬 기계)의 설계를 개괄한 또 다른 보고서를 발표했는데, 이 기계는 매우 빨라 초당 20,000회 연산이 가능할 것으로 예상되었다. 그들은 이러한 기계를 구축하는 데 있어 가장 중요한 문제는 즉시 접근 가능한 내용을 가진 적합한 메모리 개발이라고 지적했다. 처음에는 RCA 프린스턴 연구소가 발명한 "[[셀렉트론 튜브]]"라고 불리는 특수 [[진공관]]을 사용하는 것을 제안했다. 이 진공관은 비싸고 만들기가 어려웠기 때문에 폰 노이만은 이후 [[윌리엄스관|윌리엄스 메모리]]를 기반으로 하는 기계를 만들기로 결정했다. 1952년 6월 프린스턴에서 완성된 이 기계는 매니악으로 대중에게 알려지게 되었다. 이 기계의 설계는 현재 미국에서 건설 중인 적어도 반 다스 이상의 기계에 영감을 주었으며, 모두 애칭으로 "조니악"으로 불린다. </blockquote> 같은 책에서 ACE 장의 처음 두 단락은 다음과 같다.<ref>{{괄호 없는 하버드 인용|Bowden|1953|p=135}}.</ref> <blockquote> '''영국 국립물리연구소의 자동 계산''' 자동 전자 계산 기술의 발전과 개선을 구현한 가장 현대적인 디지털 컴퓨터 중 하나가 최근 영국 국립물리연구소(테딩턴)에서 시연되었는데, 이 컴퓨터는 연구소 직원 중 소수의 수학자와 전자공학 연구원 팀이 잉글리시 일렉트릭 컴퍼니(English Electric Company, Limited)의 다수 생산 엔지니어의 도움을 받아 설계 및 제작했다. 연구소에 현재까지 설치된 장비는 훨씬 더 큰 설치물의 파일럿 모델에 불과하며, 자동 계산 엔진(Automatic Computing Engine)으로 알려질 것이지만, 크기는 비교적 작고 약 800개의 열전자관만을 포함하고 있음에도 불구하고, 판 XII, XIII, XIV에서 볼 수 있듯이 극도로 빠르고 다재다능한 계산 기계이다. 기계에 의한 계산의 기본 개념과 추상적인 원리는 1936년에 런던 수학회에서 [[앨런 튜링|A. M. 튜링]] 박사(F.R.S.)가 발표한 논문<sup>1</sup>에서 정식화되었지만, 영국에서의 그러한 기계에 대한 연구는 전쟁으로 인해 지연되었다. 그러나 1945년에 연구소의 수학과장이었던 J. R. 워머슬리 씨가 국립물리연구소에서 문제들을 검토했다. 그는 튜링 박사와 소수의 전문가 팀에 합류했고, 1947년까지 예비 계획은 이미 언급된 특별 그룹의 설립을 정당화할 만큼 충분히 진전되었다. 1948년 4월, 후자는 F. M. 콜브룩 씨의 지휘 아래 연구소의 전자 섹션이 되었다. </blockquote> ==초기 폰 노이만 구조 컴퓨터== "초안"은 많은 대학과 기업에서 컴퓨터를 구축하는 데 사용된 설계를 설명했다.<ref>{{웹 인용|url=http://www.ias.edu/people/vonneumann/ecp/ |title=Electronic Computer Project |date=September 11, 2009 |publisher=[[프린스턴 고등연구소]] |access-date=2011-05-26}}</ref> 이러한 다양한 컴퓨터 중 ILLIAC과 ORDVAC만이 호환되는 명령어 집합을 가지고 있었다. * [[APEXC|ARC2]] ([[버크벡 칼리지]])는 1948년 5월 12일에 공식적으로 가동되었다.<ref name="birkbeck">{{서적 인용|author-last1=Campbell-Kelly |author-first1=Martin |title=The Development of Computer Programming in Britain (1945 to 1955) |journal=IEEE Annals of the History of Computing |date=April 1982 |volume=4 |issue=2 |pages=121–139 |doi=10.1109/MAHC.1982.10016|s2cid=14861159 }}</ref> * [[맨체스터 베이비]] ([[맨체스터 빅토리아 대학교]], 잉글랜드)는 1948년 6월 21일에 저장된 프로그램의 첫 성공적인 실행을 기록했다. * [[에드삭]] ([[케임브리지 대학교]], 잉글랜드)은 최초의 실용적인 프로그램 내장식 전자 컴퓨터였다 (1949년 5월). * [[맨체스터 마크 1]] ([[맨체스터 대학교]], 잉글랜드)은 베이비에서 개발되었다 (1949년 6월). * [[CSIRAC]] ([[오스트레일리아 연방 과학 산업 연구 기구|과학 및 산업 연구 위원회]]) 오스트레일리아 (1949년 11월). * [[MESM]]은 [[키이우]]의 [[키이우 전기 공학 연구소]], [[우크라이나 소비에트 사회주의 공화국|우크라이나 SSR]] (1950년 11월). * [[에드박]] ([[미사일 연구소|탄도 연구소]], [[애버딘 시험장]] 컴퓨터 연구소, 1951년). * [[IAS 머신]]은 [[프린스턴 고등연구소]] (1951년). * [[ORDVAC]] (일리노이 대학교)은 [[애버딘 시험장]], 메릴랜드 (1951년 11월 완성).<ref>{{인용|author-first=James E. |author-last=Robertson |title=Illiac Design Techniques |publisher=report number UIUCDCS-R-1955–146, Digital Computer Laboratory, University of Illinois at Urbana-Champaign |date=1955}}.</ref> * [[MANIAC I]]은 [[로스앨러모스 과학 연구소]] (1952년 3월). * [[ILLIAC]]은 [[일리노이 대학교 어배너-섐페인|일리노이 대학교]] (1952년 9월). * [[BESM|BESM-1]]은 모스크바 (1952년). * [[AVIDAC]]은 [[아곤 국립 연구소]] (1953년). * [[ORACLE (컴퓨터)|ORACLE]]은 [[오크리지 국립 연구소]] (1953년 6월). * [[BESK]]는 스톡홀름 (1953년). * [[JOHNNIAC]]은 [[랜드 연구소]] (1954년 1월). * [[DASK]]는 덴마크 (1955년). * [[WEIZAC]]은 이스라엘 [[레호보트]]의 [[바이츠만 과학 연구소]] (1955년). * [[PERM (컴퓨터)|PERM]]은 뮌헨 (1956년). * [[SILLIAC]]은 시드니 (1956년). ==초기 프로그램 내장식 컴퓨터== 다음 연대기 정보는 정확한 순서로 정리하기 어렵다. 일부 날짜는 테스트 프로그램의 첫 실행 날짜이고, 일부 날짜는 컴퓨터가 처음 시연되거나 완성된 날짜이며, 일부 날짜는 첫 배송 또는 설치 날짜이다. * [[IBM SSEC]]는 명령어를 데이터로 처리할 수 있는 능력을 가지고 있었으며, 1948년 1월 27일 공개적으로 시연되었다. 이 능력은 [[미국 특허법|미국 특허]]로 주장되었다.<ref>{{미국 특허|2636672|src=uspto|Selective Sequence Electronic Calculator (USPTO 웹사이트)}}.</ref><ref>{{미국 특허|2636672|Selective Sequence Electronic Calculator (Google Patents)}}.</ref> 그러나 이는 부분적으로 [[전기기계공학|전기기계적]]이었고, 완전히 전자적이지는 않았다. 실제로는 제한된 메모리 때문에 [[천공 테이프|종이 테이프]]에서 명령어를 읽어들였다.<ref name="herb">{{인용|author-first=Herbert R. J. |author-last=Grosch |title=Computer: Bit Slices From a Life |date=1991 |publisher=Third Millennium Books |isbn=0-88733-085-1 |url=http://www.columbia.edu/acis/history/computer.html |author-link=Herb Grosch}}.</ref> * [[버크벡 칼리지]]의 [[앤드루 도널드 부스|앤드루 부스]]와 [[캐슬린 부스]]가 개발한 [[APEXC|ARC2]]는 1948년 5월 12일에 공식적으로 가동되었다.<ref name="birkbeck"/> 이 컴퓨터는 최초의 [[자기 드럼|회전 드럼 저장 장치]]를 특징으로 했다.<ref>{{서적 인용|editor-last1=Lavington |editor-first1=Simon |title=Alan Turing and his Contemporaries: Building the World's First Computers |url=https://archive.org/details/isbn_9781906124908 |date=2012 |publisher=[[영국 컴퓨터 학회]] |location=London |isbn=978-1906124908 |page=[https://archive.org/details/isbn_9781906124908/page/n74 61]}}</ref><ref>{{웹 인용|author-last1=Johnson |author-first1=Roger |title=School of Computer Science & Information Systems: A Short History |url=http://www.dcs.bbk.ac.uk/site/assets/files/1029/50yearsofcomputing.pdf |website=Birkbeck College |publisher=[[런던 대학교]] |access-date=2017-07-23 |date=April 2008}}</ref> * [[맨체스터 베이비]]는 프로그램 내장식으로 실행된 최초의 완전 전자식 컴퓨터였다. 1948년 6월 21일, 간단한 나눗셈 프로그램과 두 수가 [[서로소 아이디얼|상대적으로 소수]]임을 보여주는 프로그램을 실행한 후 52분 동안 인수분해 프로그램을 실행했다. * [[에니악]]은 원시적인 [[고정 기억 장치|읽기 전용]] 프로그램 내장식 컴퓨터로 작동하도록 수정되었으며, 1948년 9월 16일 [[애들 골드스타인]]이 폰 노이만을 위해 작성한 프로그램을 실행하는 방식으로 시연되었다. * [[BINAC]]은 1949년 2월, 3월, 4월에 일부 테스트 프로그램을 실행했지만, 1949년 9월까지는 완성되지 않았다. * [[맨체스터 마크 1]]은 베이비 프로젝트에서 발전했다. 마크 1의 중간 버전은 1949년 4월에 프로그램을 실행할 수 있었지만, 1949년 10월까지는 완성되지 않았다. * [[에드삭]]은 1949년 5월 6일에 첫 프로그램을 실행했다. * [[에드박]]은 1949년 8월에 인도되었지만, 문제가 있어 1951년까지 정식 가동되지 못했다. * [[CSIRAC|CSIR Mk I]]은 1949년 11월에 첫 프로그램을 실행했다. * [[SEAC (컴퓨터)|SEAC]]는 1950년 4월에 시연되었다. * [[파일럿 에이스]]는 1950년 5월 10일에 첫 프로그램을 실행했으며, 1950년 12월에 시연되었다. * [[SWAC (컴퓨터)|SWAC]]는 1950년 7월에 완성되었다. * [[Whirlwind (컴퓨터)|Whirlwind]]는 1950년 12월에 완성되었고 1951년 4월에 실제 사용되었다. * 최초의 [[유니박 1101|ERA Atlas]] (이후 상업용 ERA 1101/UNIVAC 1101)은 1950년 12월에 설치되었다. ==진화== [[파일:Computer system bus.svg|섬네일|아키텍처의 단일 [[시스템 버스]] 진화]] 1960년대와 1970년대를 거치면서 컴퓨터는 전반적으로 더 작아지고 빨라졌으며, 이는 아키텍처의 진화를 이끌었다. 예를 들어, [[메모리 맵 I/O]]는 입출력 [[주변기기|장치]]를 메모리와 동일하게 취급할 수 있게 한다.<ref>{{인용|title=A New Architecture for Mini-Computers – The DEC PDP-11 |author-first1=C. Gordon |author-last1=Bell |author-link1=고든 벨 |author-first2=R. |author-last2=Cady |author-first3=H. |author-last3=McFarland |author-first4=J. |author-last4=O'Laughlin |author-first5=R. |author-last5=Noonan |author-first6=W. |author-last6=Wulf |work=Spring Joint Computer Conference |pages=657–675 |date=1970 |url=http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/New%20Architecture%20PDP11%20SJCC%201970%20c.pdf}}.</ref> 단일 [[시스템 버스]]를 사용하여 비용을 낮춘 모듈식 시스템을 제공할 수 있었다. 이를 때로는 아키텍처의 "간소화"라고 부른다.<ref>{{인용|title=The essentials of computer organization and architecture |author-first1=Linda |author-last1=Null |author-first2=Julia |author-last2=Lobur |publisher=[[존스 & 바틀렛]] Learning |date=2010 |isbn=978-1-4496-0006-8 |edition=3rd |pages=36, 199–203 |url=https://books.google.com/books?id=f83XxoBC_8MC&pg=PA36}}.</ref> 이후 수십 년 동안, 간단한 [[마이크로컨트롤러]]는 비용과 크기를 줄이기 위해 모델의 기능을 때때로 생략했다. 더 큰 컴퓨터는 더 높은 성능을 위해 기능을 추가했다. ==설계 한계== ===폰 노이만 병목 현상===<!-- [[랜덤 액세스 메모리]]에 링크됨 --> 명령어와 데이터를 가져오는 데 동일한 버스를 사용하면 폰 노이만 병목 현상이 발생한다. 이는 [[중앙 처리 장치]](CPU)와 메모리 간의 제한된 [[처리량]](데이터 전송률)을 메모리 용량과 비교했을 때 발생하는 문제이다. 단일 버스는 두 가지 유형의 메모리 중 하나만 한 번에 접근할 수 있기 때문에, 처리량은 CPU가 작업할 수 있는 속도보다 낮다. 이는 CPU가 많은 양의 데이터에 대해 최소한의 처리를 수행해야 할 때 효과적인 처리 속도를 심각하게 제한한다. CPU는 필요한 데이터가 메모리로 이동하거나 메모리에서 이동하기를 계속해서<!-- http://en.wiktionary.org/wiki/continual#Usage_notes --> [[대기 상태|기다려야]] 한다. CPU 속도와 메모리 크기는 그들 사이의 처리량보다 훨씬 빠르게 증가했기 때문에, 이 병목 현상은 더욱 심각한 문제가 되었고, 매 세대의 새로운 CPU가 나올 때마다 심각성이 증가한다. 폰 노이만 병목 현상은 [[존 배커스]]가 1977년 ACM [[튜링상]] 강연에서 설명했다. 배커스에 따르면: <blockquote>폰 노이만 병목 현상을 통해 방대한 양의 [[워드 (컴퓨터 구조)|워드]]를 앞뒤로 밀어내는 것보다 저장소에 큰 변화를 줄 수 있는 덜 원시적인 방법이 분명히 있어야 한다. 이 파이프는 문제의 데이터 트래픽에 대한 문자 그대로의 병목 현상일 뿐만 아니라, 더 중요하게는 우리를 한 번에 한 단어씩 생각하는 것에 묶어두고 당면한 작업의 더 큰 개념적 단위로 생각하도록 장려하지 못한 지적인 병목 현상이다. 따라서 프로그래밍은 기본적으로 폰 노이만 병목 현상을 통한 방대한 단어 트래픽을 계획하고 세부화하는 것이며, 그 트래픽의 상당 부분은 실제 중요한 데이터 자체가 아니라 그것을 어디서 찾을 것인지에 관한 것이다.<ref name="backus">{{서적 인용|doi=10.1145/359576.359579 |s2cid=16367522 |title=Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs |author-last=Backus |author-first=John W. |author-link=존 배커스 |journal=Communications of the ACM |volume=21 |issue=8 |date=August 1978 |pages=613–641 |doi-access=free }}</ref><ref>{{웹 인용|url=http://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD692.html |title=E. W. Dijkstra Archive: A review of the 1977 Turing Award Lecture |access-date=2008-07-11 |author-first=에츠허르 데이크스트라 |author-last=Dijkstra |author-link=에츠허르 데이크스트라}}</ref></blockquote> ====완화==== 폰 노이만 성능 병목 현상을 완화하는 여러 알려진 방법이 있다. 예를 들어, 다음 모두 성능을 향상시킬 수 있다:{{왜?|날짜=2015년 11월}} * CPU와 [[주 메모리]] 사이에 [[CPU 캐시|캐시]]를 제공한다. * 데이터와 명령어를 위한 별도의 캐시 또는 별도의 접근 경로를 제공한다 (소위 [[변형 하버드 아키텍처]]). * [[분기 예측]] 알고리즘 및 로직을 사용한다. * 제한된 CPU 스택 또는 기타 온칩 [[스크래치패드 메모리]]를 제공하여 메모리 접근을 줄인다. * CPU와 [[메모리 계층 구조]]를 [[시스템 온 칩]]으로 구현하여 [[참조 국부성]]을 높이고 따라서 [[프로세서 레지스터]]와 주 메모리 간의 지연 시간을 줄이고 처리량을 증가시킨다. 이 문제는 [[불균일 기억 장치 접근]](NUMA) 아키텍처를 사용하는 [[병렬 컴퓨팅]]을 통해 어느 정도 피할 수도 있다. 이 접근 방식은 [[슈퍼컴퓨터]]에서 흔히 사용된다. 백커스가 비판했던 지적인 병목 현상이 1977년 이후 크게 변했는지는 덜 명확하다. 백커스가 제안한 해결책은 큰 영향을 미치지 않았다. 현대 [[함수형 프로그래밍]]과 [[객체 지향 프로그래밍]]은 이전 언어인 [[포트란]]만큼 "방대한 양의 단어를 앞뒤로 밀어내는"{{어떻게?|이유=객체는 명확한 구조로 배열된 방대한 양의 단어일 뿐입니다. 함수형 언어는 함수 자체가 매개변수로 전달될 수 있고 결국 데이터에서 작동할 것이기 때문에 잠재적으로 더 많은 데이터를 밀어낼 수 있습니다.|날짜=2025년 4월}} 데 초점을 맞추지 않지만, 내부적으로는 고도로 병렬화된 슈퍼컴퓨터조차도 여전히 많은 시간을 그렇게 보낸다. ===자체 수정 코드=== {{본문|자체 수정 코드}} 폰 노이만 병목 현상 외에도, 프로그램 수정은 의도적이든 아니든 상당히 해로울 수 있다. 일부 간단한 프로그램 내장식 컴퓨터 설계에서{{어느?|이유=이것이 현대 기계에 관련이 있습니까?|날짜=2025년 4월}} 오작동하는 프로그램은 자신이나 다른 프로그램, 또는 운영 체제를 손상시켜 컴퓨터 충돌을 일으킬 수 있다. 그러나 이 문제는 [[경계 검사]]가 없는 일반 프로그램에도 적용된다. [[메모리 보호]] 및 다양한 접근 제어는 일반적으로 우발적이고 악의적인 프로그램 변경으로부터 보호한다. == 같이 보기 == * [[CARDboard Illustrative Aid to Computation]] * [[인터커넥트 병목]] * [[리틀 맨 컴퓨터]] * [[랜덤 접근 기계]] * [[하버드 아키텍처]] * [[튜링 기계]] == 각주 == {{각주}} ==추가 자료== {{참고 자료 시작}} * {{인용|publication-date=1953 |editor-last=Bowden |editor-first=B. V. |title=Faster Than Thought: A Symposium on Digital Computing Machines |publication-place=런던 |publisher=Sir Isaac Pitman and Sons Ltd.}} * {{인용|publication-date=2000 |editor-last1=Rojas |editor-first1=Raúl |editor-last2=Hashagen |editor-first2=Ulf |title=The First Computers: History and Architectures |publisher=[[MIT 프레스]] |isbn=0-262-18197-5 |date=2000}} * {{인용|author-last=Davis |author-first=Martin |author-link=마틴 데이비스 |publication-date=2000 |title=The universal computer: the road from Leibniz to Turing |publication-place=뉴욕 |publisher=[[W. W. Norton & Company Inc.]] |isbn=0-393-04785-7 |date=2000}} 재출판: {{인용|author-last=Davis |author-first=Martin |author-link=마틴 데이비스 |title=Engines of Logic: Mathematicians and the Origin of the Computer |place=뉴욕 |publisher=[[W. W. 노턴 & 컴퍼니]] |date=2001 |isbn=978-0-393-32229-3}} * Can Programming be Liberated from the von Neumann Style?. [[존 배커스|배커스, 존]]. 1977 ACM 튜링상 강연. Communications of the ACM, 1978년 8월, 21권 8호 [http://www.stanford.edu/class/cs242/readings/backus.pdf 온라인 PDF] {{웹아카이브|url=https://web.archive.org/web/20070621162552/http://www.stanford.edu/class/cs242/readings/backus.pdf |date=2007년 6월 21일 }} 자세한 내용은 https://www.cs.tufts.edu/~nr/backus-lecture.html 참조 * Bell, C. Gordon; Newell, Allen (1971), Computer Structures: Readings and Examples, [[맥그로-힐 북 컴퍼니]], 뉴욕. 방대함 (668페이지) * {{인용|author-last=Copeland |author-first=Jack |publication-date=2006 |contribution=Colossus and the Rise of the Modern Computer |editor-last=Copeland |editor-first=B. Jack |title=Colossus: The Secrets of Bletchley Park's Codebreaking Computers |publication-place=옥스퍼드 |publisher=[[옥스퍼드 대학교 출판부]] |isbn=978-0-19-284055-4 |date=2006}} * {{인용|author-last=Ganesan |author-first=Deepak |title=The von Neumann Model |date=2009 |url=http://none.cs.umass.edu/~dganesan/courses/fall09/handouts/Chapter4.pdf |access-date=2011-10-22 |archive-date=2012년 4월 25일 |archive-url=https://web.archive.org/web/20120425083227/http://none.cs.umass.edu/~dganesan/courses/fall09/handouts/Chapter4.pdf |url-status=dead }} * {{서적 인용|ref=SCOTT |author-last=McCartney |author-first=Scott |title=ENIAC: The Triumphs and Tragedies of the World's First Computer |publisher=Walker & Co. |date=1999 |isbn=0-8027-1348-3 |url=https://archive.org/details/eniac00scot }} * {{서적 인용|ref=HHG |author-last=Goldstine |author-first=Herman H. |author-link=허먼 골드스타인 |title=The Computer from Pascal to von Neumann |publisher=[[프린스턴 대학교 출판부]] |date=1972 |isbn=0-691-08104-2 |url=https://archive.org/details/computerfrompasc00herm }} * {{서적 인용|ref=JOEL |author-last=Shurkin |author-first=Joel |title=Engines of the Mind: A history of the Computer |publisher=[[W. W. 노턴 & 컴퍼니]] |date=1984 |location=뉴욕, 런던 |isbn=0-393-01804-0}} {{참고 자료 끝}} == 외부 링크 == {{위키공용분류}} * [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka11516.html 하버드 대 폰 노이만] * [https://web.archive.org/web/20080219131555/http://home.gna.org/vov/ 폰 노이만 기계의 동작을 에뮬레이트하는 도구] * [http://sourceforge.net/projects/johnnysimulator/ JOHNNY: 교육 목적으로 사용되는 간단한 오픈 소스 폰 노이만 기계 시뮬레이터] {{프로세서 기술}} {{위키데이터 속성 추적}} [[분류:컴퓨터 구조]] [[분류:컴퓨터의 유형]] [[분류:호칭 논란]] [[분류:참조 모형]] [[분류:플린 분류]] [[분류:존 폰 노이만]]
폰 노이만 구조
문서로 돌아갑니다.
검색
검색
폰 노이만 구조 문서 원본 보기
새 주제