폰 노이만 구조

폰 노이만 구조의 개요 **폰 노이만 구조**(Von Neumann architecture)는 **폰 노이만 모델** 또는 **프린스턴 구조**라고도 불리며, 1945년 존 폰 노이만이 펜실베이니아 대학교 무어 전기 공학 학교에서 존 모클리 및 J. 프레스퍼 에커트와 논의한 설계 내용을 담은 에드박의 보고서 최초 초안을 바탕으로 한 컴퓨터 구조이다. 이 문서는 전자 디지털 컴퓨터의 설계 구조를 "기관"으로 묘사했으며, 이후 다음과 같은 구성 요소들을 포함하는 것으로 이해되었다: * 산술 논리 장치와 프로세서 레지스터를 모두 갖춘 처리 장치 * 명령 레지스터와 프로그램 카운터를 포함하는 제어 장치 * 데이터와 명령어를 저장하는 메모리 * 외부 대용량 스토리지 * 입력 및 출력 메커니즘.2009. 이 구조의 발명을 폰 노이만에게 귀속시키는 것은 논란의 여지가 있다. 특히 에커트와 모클리가 필요한 설계 작업을 상당 부분 수행했고, 폰 노이만 및 허먼 골드스타인과 논의하기 훨씬 전부터 프로그램 내장식 아이디어를 가지고 있었다고 주장하기 때문이다. "폰 노이만 구조"라는 용어는 명령어 인출과 데이터 연산이 동시에 발생할 수 없는 (공통 버스를 공유하므로) 모든 프로그램 내장식 컴퓨터를 지칭하는 의미로 진화했다. 이는 해당 시스템의 성능을 자주 제한하는 폰 노이만 병목 현상이라고 불린다.. 폰 노이만 구조는 하버드 아키텍처보다 간단하다 (하버드 아키텍처는 메모리 읽기 및 쓰기를 위한 주소 및 데이터 버스 세트와 명령어를 가져오기 위한 또 다른 주소 및 데이터 버스 세트가 따로 있다). 프로그램 내장식 컴퓨터는 프로그램 명령어와 데이터를 모두 인코딩하기 위해 동일한 기본 메커니즘을 사용하는 반면, 플러그판 배선이나 명령 구현을 위한 고정 제어 회로와 같은 메커니즘을 사용하는 설계와는 다르다. 프로그램 내장식 컴퓨터는 1940년대의 수동으로 재구성되거나 고정된 기능을 가진 컴퓨터인 콜로서스나 에니악에 비해 진보한 것이었다. 이들은 개폐기를 설정하고 패치 케이블을 삽입하여 다양한 기능 단위 간에 데이터 및 제어 신호를 라우팅하여 프로그래밍되었다. 대부분의 현대 컴퓨터는 데이터와 프로그램 명령어를 모두 인코딩하고 저장하기 위해 동일한 하드웨어 메커니즘을 사용하지만, CPU와 메모리 사이에 캐시를 가지고 있으며, CPU에 가장 가까운 캐시의 경우 명령어와 데이터에 대해 별도의 캐시를 가지고 있어 대부분의 명령어 및 데이터 인출이 별도의 버스를 사용한다 (분할 캐시 아키텍처).
# 역사
초기 컴퓨터는 고정된 프로그램을 가지고 있었다. 일부 매우 간단한 컴퓨터는 단순함이나 훈련 목적으로 여전히 이 설계를 사용한다. 예를 들어, 탁상 계산기는 (원칙적으로) 고정 프로그램 컴퓨터이다. 기본적인 수학 연산은 할 수 있지만, 워드 프로세서나 게임을 실행할 수는 없다. 고정 프로그램 기계의 프로그램을 변경하려면 기계를 재배선하거나 재구성하거나 재설계해야 한다. 초기 컴퓨터는 특정 작업을 위해 "프로그래밍"되었다기보다는 "설계"되었다고 볼 수 있다. "재프로그래밍"은 (가능했다 하더라도) 순서도와 종이 노트로 시작하여 상세한 엔지니어링 설계, 그리고 종종 육체적으로 기계를 재배선하고 재구축하는 고된 과정으로 이어지는 힘든 작업이었다. 에니악에서 프로그램을 설정하고 디버깅하는 데 3주가 걸릴 수도 있었다.p=104. 프로그램 내장식 컴퓨터의 제안과 함께 이것이 바뀌었다. 프로그램 내장식 컴퓨터는 설계상 명령어 집합을 포함하며, 컴퓨테이션을 상세히 설명하는 일련의 명령어(프로그램)를 메모리에 저장할 수 있다. 프로그램 내장식 설계는 또한 자체 수정 코드를 허용한다. 이러한 기능의 초기 동기는 프로그램이 명령어의 주소 부분을 증가시키거나 다른 방식으로 수정해야 할 필요성이었다. 이는 초기 설계에서 운영자가 수동으로 해야 했던 작업이었다. 인덱스 레지스터와 간접 주소 지정이 기계 구조의 일반적인 특징이 되면서 이 중요성은 줄어들었다. 또 다른 용도는 즉시 주소 지정을 사용하여 자주 사용되는 데이터를 명령어 스트림에 포함시키는 것이었다. 폰 노이만은 이 모델과 일반적으로 설명되는 용어와는 다른 용어로 자동 컴퓨팅 시스템을 설명했다. 에드박의 보고서 최초 초안에서 이 구조는 "고속 메모리 M, 중앙 연산 장치 CA, 외부 기록 매체 R, 입력 기관 I, 출력 기관 O, 그리고 중앙 제어 CC"로 구성되었다.page=10
# 기능
광범위하게 볼 때, 명령어를 데이터로 취급할 수 있는 능력은 어셈블러, 컴파일러, 링커, 로더 및 기타 자동화된 프로그래밍 도구를 가능하게 한다. 이는 "프로그램을 작성하는 프로그램"을 가능하게 한다.. 이로 인해 폰 노이만 구조를 기반으로 한 기계 주변에서 정교한 자체 호스팅 컴퓨팅 생태계가 번성하게 되었다. 일부 고급 프로그래밍 언어는 런타임에 실행 가능 코드를 조작하는 추상적이고 기계 독립적인 방법을 제공하거나(예: LISP), 런타임 정보를 사용하여 JIT 컴파일을 조정함으로써(예: 자바 가상 머신에서 호스팅되는 언어 또는 웹 브라우저에 내장된 언어) 폰 노이만 구조를 활용한다. 더 작은 규모에서는 비트 블릿 또는 픽셀 및 정점 셰이더와 같은 일부 반복 작업을 JIT 컴파일 기술을 사용하여 범용 프로세서에서 가속할 수 있다. 이는 여전히 인기 있는 자체 수정 코드의 한 가지 용례이다.
# 프로그램 내장식 개념의 발전
케임브리지 대학교의 맥스 뉴먼의 강연을 통해 수학 논리의 문제에 대해 알게 된 수학자 앨런 튜링은 1936년 런던 수학회 회보에 "계산 가능한 수에 대하여, 판정 문제의 응용과 함께"라는 제목의 논문을 발표했다. 및 . 이 논문에서 그는 유니버설 계산 기계라고 부르는 가상 기계를 설명했는데, 오늘날에는 "보편 튜링 기계"로 알려져 있다. 이 가상 기계는 명령어와 데이터를 모두 포함하는 무한 저장소(오늘날 용어로는 메모리)를 가지고 있었다. 존 폰 노이만은 1935년 케임브리지 방문 교수 재직 중, 그리고 튜링이 1936-1937년 프린스턴 (뉴저지주)의 프린스턴 고등연구소에서 박사 학위를 취득할 때 튜링과 알게 되었다. 그 당시 그가 튜링의 1936년 논문을 알고 있었는지는 명확하지 않다. 1936년, 콘라트 추제 또한 두 개의 특허 출원에서 기계 명령어가 데이터에 사용되는 것과 동일한 저장 공간에 저장될 수 있다고 예상했다.. 독립적으로, J. 프레스퍼 에커트와 존 모클리는 펜실베이니아 대학교의 무어 전기 공학 학교에서 에니악을 개발하던 중 1943년 12월에 프로그램 내장식 개념에 대해 저술했다. lccn=79-90567에니악 프로젝트 관리자 그리스트 브레이너드의 1943년 12월 에니악 개발 첫 기간 진척 보고서에서는 "가장 간단한 프로젝트를 위해 문제를 복잡하게 만들지 않기 위해" 에니악은 "자동 규제" 없이 구성될 것이라고 명시함으로써 프로그램 내장식 개념을 암묵적으로 제안했다 (동시에 에니악 구현에서는 이를 거부했다). 새로운 기계인 에드박을 계획하면서 에커트는 1944년 1월에 새로운 주소 지정 가능한 메모리 장치인 수은 금속 지연선 기억기에 데이터와 프로그램을 저장할 것이라고 썼다. 이는 실용적인 프로그램 내장식 기계의 건설이 처음으로 제안된 것이었다. 당시 그와 모클리는 튜링의 작업을 알지 못했다. 폰 노이만은 1944년 여름, 로스앨러모스 국립연구소의 맨해튼 계획에 참여했다. 이 계획은 엄청난 양의 계산을 필요로 했고, 그를 에니악 프로젝트로 이끌었다. 그곳에서 그는 프로그램 내장식 컴퓨터인 에드박의 설계에 대한 지속적인 논의에 참여했다. 그 그룹의 일원으로서 그는 에커트와 모클리의 작업을 바탕으로 "에드박 보고서 초안"이라는 제목의 설명을 작성했다. 그의 동료 허먼 골드스타인이 이를 배포했을 때 미완성 상태였고, 폰 노이만의 이름만 기재되어 있었다 (이는 에커트와 모클리에게 좌절감을 안겨주었다).p=113. 이 논문은 미국과 유럽의 수십 명의 폰 노이만 동료들에게 읽혔으며, 다음 세대 컴퓨터 설계에 영향을 미쳤다.날짜=2022년 3월 잭 코플랜드는 "전자 프로그램 내장식 디지털 컴퓨터를 '폰 노이만 기계'라고 부르는 것은 역사적으로 부적절하다"고 생각한다.. 그의 로스앨러모스 동료 스탠 프랭클은 튜링의 아이디어에 대한 폰 노이만의 존경에 대해 말했다: (를 인용한 작업). 나는 1943년경 또는 44년경 폰 노이만이 튜링의 1936년 논문의 근본적인 중요성을 잘 알고 있었다는 것을 안다.... 폰 노이만이 그 논문을 나에게 소개했고 그의 권유로 나는 그것을 주의 깊게 연구했다. 많은 사람들이 폰 노이만을 "컴퓨터의 아버지"(현대적인 의미에서)라고 칭송했지만, 나는 그가 스스로 그런 실수를 저지르지 않았을 것이라고 확신한다. 그는 아마 산파라고 불릴 수 있을 것이다. 그러나 그는 나에게, 그리고 다른 사람들에게도 분명히 강조했듯이, 근본적인 개념은 튜링에게서 비롯되었다는 것을 분명히 했다. (베비지가 예상한 정도는 아니지만).... 물론 튜링과 폰 노이만 둘 다 이러한 개념의 "실용화"에 상당한 공헌을 했지만, 나는 이것들을 메모리에 자신의 활동 프로그램을 저장하고 이러한 활동 과정에서 그 프로그램을 수정할 수 있는 컴퓨터의 개념을 도입하고 설명하는 것과 중요성을 비교할 수는 없을 것이라고 생각한다. "초안" 보고서가 유통될 당시, 튜링은 "제안된 전자 계산기"라는 제목의 보고서를 작성하고 있었다. 이 보고서는 그가 자동 컴퓨팅 엔진 (ACE)이라고 부른 기계에 대한 공학적 및 프로그래밍적 세부 사항을 설명했다.pp=108–111. 그는 1946년 2월 19일 영국 국립물리연구소의 집행 위원회에 이를 제출했다. 튜링은 블레츨리 파크에서의 전시 경험을 통해 자신이 제안한 것이 실현 가능하다는 것을 알고 있었지만, 이후 수십 년 동안 유지된 콜로서스에 대한 비밀 유지로 인해 그렇게 말할 수 없었다. ACE 설계의 다양한 성공적인 구현이 이루어졌다. 폰 노이만과 튜링의 논문은 모두 프로그램 내장식 컴퓨터를 설명했지만, 폰 노이만의 초기 논문이 더 널리 유통되었고 그가 개요를 제시한 컴퓨터 구조는 "폰 노이만 구조"로 알려지게 되었다. 1953년 출판된 "생각보다 빠르다: 디지털 컴퓨팅 기계에 대한 심포지엄"(B. V. 보든 편집)에서 컴퓨터 인 아메리카 장의 한 섹션은 다음과 같이 쓰여 있다:pp=176, 177.

> **프린스턴 고등연구소의 기계** 1945년, 에니악이 제작된 필라델피아의 무어 공과대학에서 근무하던 J. 폰 노이만 교수는 동료들과 함께 디지털 컴퓨터의 논리 설계에 대한 보고서를 발행했다. 이 보고서에는 이후 E.D.V.A.C. (전자 개별 변수 자동 컴퓨터)로 알려지게 된 기계의 설계에 대한 상세한 제안이 담겨 있었다. 이 기계는 최근에야 미국에서 완성되었지만, 폰 노이만 보고서는 케임브리지의 E.D.S.A.C. (전자 지연 저장 자동 계산기) 건설에 영감을 주었다 (130페이지 참조). 1947년, 벅스, 골드스타인, 폰 노이만은 또 다른 유형의 기계 (이번에는 병렬 기계)의 설계를 개괄한 또 다른 보고서를 발표했는데, 이 기계는 매우 빨라 초당 20,000회 연산이 가능할 것으로 예상되었다. 그들은 이러한 기계를 구축하는 데 있어 가장 중요한 문제는 즉시 접근 가능한 내용을 가진 적합한 메모리 개발이라고 지적했다. 처음에는 RCA 프린스턴 연구소가 발명한 "셀렉트론 튜브"라고 불리는 특수 진공관을 사용하는 것을 제안했다. 이 진공관은 비싸고 만들기가 어려웠기 때문에 폰 노이만은 이후 윌리엄스 메모리를 기반으로 하는 기계를 만들기로 결정했다. 1952년 6월 프린스턴에서 완성된 이 기계는 매니악으로 대중에게 알려지게 되었다. 이 기계의 설계는 현재 미국에서 건설 중인 적어도 반 다스 이상의 기계에 영감을 주었으며, 모두 애칭으로 "조니악"으로 불린다.

같은 책에서 ACE 장의 처음 두 단락은 다음과 같다.p=135.

> **영국 국립물리연구소의 자동 계산** 자동 전자 계산 기술의 발전과 개선을 구현한 가장 현대적인 디지털 컴퓨터 중 하나가 최근 영국 국립물리연구소(테딩턴)에서 시연되었는데, 이 컴퓨터는 연구소 직원 중 소수의 수학자와 전자공학 연구원 팀이 잉글리시 일렉트릭 컴퍼니(English Electric Company, Limited)의 다수 생산 엔지니어의 도움을 받아 설계 및 제작했다. 연구소에 현재까지 설치된 장비는 훨씬 더 큰 설치물의 파일럿 모델에 불과하며, 자동 계산 엔진(Automatic Computing Engine)으로 알려질 것이지만, 크기는 비교적 작고 약 800개의 열전자관만을 포함하고 있음에도 불구하고, 판 XII, XIII, XIV에서 볼 수 있듯이 극도로 빠르고 다재다능한 계산 기계이다. 기계에 의한 계산의 기본 개념과 추상적인 원리는 1936년에 런던 수학회에서 A. M. 튜링 박사(F.R.S.)가 발표한 논문1에서 정식화되었지만, 영국에서의 그러한 기계에 대한 연구는 전쟁으로 인해 지연되었다. 그러나 1945년에 연구소의 수학과장이었던 J. R. 워머슬리 씨가 국립물리연구소에서 문제들을 검토했다. 그는 튜링 박사와 소수의 전문가 팀에 합류했고, 1947년까지 예비 계획은 이미 언급된 특별 그룹의 설립을 정당화할 만큼 충분히 진전되었다. 1948년 4월, 후자는 F. M. 콜브룩 씨의 지휘 아래 연구소의 전자 섹션이 되었다.

# 초기 폰 노이만 구조 컴퓨터
"초안"은 많은 대학과 기업에서 컴퓨터를 구축하는 데 사용된 설계를 설명했다.access-date=2011-05-26 이러한 다양한 컴퓨터 중 ILLIAC과 ORDVAC만이 호환되는 명령어 집합을 가지고 있었다. * ARC2 (버크벡 칼리지)는 1948년 5월 12일에 공식적으로 가동되었다.s2cid=14861159 * 맨체스터 베이비 (맨체스터 빅토리아 대학교, 잉글랜드)는 1948년 6월 21일에 저장된 프로그램의 첫 성공적인 실행을 기록했다. * 에드삭 (케임브리지 대학교, 잉글랜드)은 최초의 실용적인 프로그램 내장식 전자 컴퓨터였다 (1949년 5월). * 맨체스터 마크 1 (맨체스터 대학교, 잉글랜드)은 베이비에서 개발되었다 (1949년 6월). * CSIRAC (과학 및 산업 연구 위원회) 오스트레일리아 (1949년 11월). * MESM은 키이우의 키이우 전기 공학 연구소, 우크라이나 SSR (1950년 11월). * 에드박 (탄도 연구소, 애버딘 시험장 컴퓨터 연구소, 1951년). * IAS 머신은 프린스턴 고등연구소 (1951년). * ORDVAC (일리노이 대학교)은 애버딘 시험장, 메릴랜드 (1951년 11월 완성).. * MANIAC I은 로스앨러모스 과학 연구소 (1952년 3월). * ILLIAC은 일리노이 대학교 (1952년 9월). * BESM-1은 모스크바 (1952년). * AVIDAC은 아곤 국립 연구소 (1953년). * ORACLE은 오크리지 국립 연구소 (1953년 6월). * BESK는 스톡홀름 (1953년). * JOHNNIAC은 랜드 연구소 (1954년 1월). * DASK는 덴마크 (1955년). * WEIZAC은 이스라엘 레호보트의 바이츠만 과학 연구소 (1955년). * PERM은 뮌헨 (1956년). * SILLIAC은 시드니 (1956년).
# 초기 프로그램 내장식 컴퓨터
다음 연대기 정보는 정확한 순서로 정리하기 어렵다. 일부 날짜는 테스트 프로그램의 첫 실행 날짜이고, 일부 날짜는 컴퓨터가 처음 시연되거나 완성된 날짜이며, 일부 날짜는 첫 배송 또는 설치 날짜이다. * IBM SSEC는 명령어를 데이터로 처리할 수 있는 능력을 가지고 있었으며, 1948년 1월 27일 공개적으로 시연되었다. 이 능력은 미국 특허로 주장되었다.Selective Sequence Electronic Calculator (USPTO 웹사이트).Selective Sequence Electronic Calculator (Google Patents). 그러나 이는 부분적으로 전기기계적이었고, 완전히 전자적이지는 않았다. 실제로는 제한된 메모리 때문에 종이 테이프에서 명령어를 읽어들였다.. * 버크벡 칼리지의 앤드루 부스와 캐슬린 부스가 개발한 ARC2는 1948년 5월 12일에 공식적으로 가동되었다. 이 컴퓨터는 최초의 회전 드럼 저장 장치를 특징으로 했다.page=61date=April 2008 * 맨체스터 베이비는 프로그램 내장식으로 실행된 최초의 완전 전자식 컴퓨터였다. 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년까지 정식 가동되지 못했다. * CSIR Mk I은 1949년 11월에 첫 프로그램을 실행했다. * SEAC는 1950년 4월에 시연되었다. * 파일럿 에이스는 1950년 5월 10일에 첫 프로그램을 실행했으며, 1950년 12월에 시연되었다. * SWAC는 1950년 7월에 완성되었다. * Whirlwind는 1950년 12월에 완성되었고 1951년 4월에 실제 사용되었다. * 최초의 ERA Atlas (이후 상업용 ERA 1101/UNIVAC 1101)은 1950년 12월에 설치되었다.
# 진화
아키텍처의 단일 시스템 버스 진화 1960년대와 1970년대를 거치면서 컴퓨터는 전반적으로 더 작아지고 빨라졌으며, 이는 아키텍처의 진화를 이끌었다. 예를 들어, 메모리 맵 I/O는 입출력 장치를 메모리와 동일하게 취급할 수 있게 한다.. 단일 시스템 버스를 사용하여 비용을 낮춘 모듈식 시스템을 제공할 수 있었다. 이를 때로는 아키텍처의 "간소화"라고 부른다.. 이후 수십 년 동안, 간단한 마이크로컨트롤러는 비용과 크기를 줄이기 위해 모델의 기능을 때때로 생략했다. 더 큰 컴퓨터는 더 높은 성능을 위해 기능을 추가했다.
# 설계 한계

## 폰 노이만 병목 현상
명령어와 데이터를 가져오는 데 동일한 버스를 사용하면 폰 노이만 병목 현상이 발생한다. 이는 중앙 처리 장치(CPU)와 메모리 간의 제한된 처리량(데이터 전송률)을 메모리 용량과 비교했을 때 발생하는 문제이다. 단일 버스는 두 가지 유형의 메모리 중 하나만 한 번에 접근할 수 있기 때문에, 처리량은 CPU가 작업할 수 있는 속도보다 낮다. 이는 CPU가 많은 양의 데이터에 대해 최소한의 처리를 수행해야 할 때 효과적인 처리 속도를 심각하게 제한한다. CPU는 필요한 데이터가 메모리로 이동하거나 메모리에서 이동하기를 계속해서 기다려야 한다. CPU 속도와 메모리 크기는 그들 사이의 처리량보다 훨씬 빠르게 증가했기 때문에, 이 병목 현상은 더욱 심각한 문제가 되었고, 매 세대의 새로운 CPU가 나올 때마다 심각성이 증가한다. 폰 노이만 병목 현상은 존 배커스가 1977년 ACM 튜링상 강연에서 설명했다. 배커스에 따르면:

> 폰 노이만 병목 현상을 통해 방대한 양의 워드를 앞뒤로 밀어내는 것보다 저장소에 큰 변화를 줄 수 있는 덜 원시적인 방법이 분명히 있어야 한다. 이 파이프는 문제의 데이터 트래픽에 대한 문자 그대로의 병목 현상일 뿐만 아니라, 더 중요하게는 우리를 한 번에 한 단어씩 생각하는 것에 묶어두고 당면한 작업의 더 큰 개념적 단위로 생각하도록 장려하지 못한 지적인 병목 현상이다. 따라서 프로그래밍은 기본적으로 폰 노이만 병목 현상을 통한 방대한 단어 트래픽을 계획하고 세부화하는 것이며, 그 트래픽의 상당 부분은 실제 중요한 데이터 자체가 아니라 그것을 어디서 찾을 것인지에 관한 것이다.doi-access=freeauthor-link=에츠허르 데이크스트라

### 완화
폰 노이만 성능 병목 현상을 완화하는 여러 알려진 방법이 있다. 예를 들어, 다음 모두 성능을 향상시킬 수 있다:날짜=2015년 11월 * CPU와 주 메모리 사이에 캐시를 제공한다. * 데이터와 명령어를 위한 별도의 캐시 또는 별도의 접근 경로를 제공한다 (소위 변형 하버드 아키텍처). * 분기 예측 알고리즘 및 로직을 사용한다. * 제한된 CPU 스택 또는 기타 온칩 스크래치패드 메모리를 제공하여 메모리 접근을 줄인다. * CPU와 메모리 계층 구조를 시스템 온 칩으로 구현하여 참조 국부성을 높이고 따라서 프로세서 레지스터와 주 메모리 간의 지연 시간을 줄이고 처리량을 증가시킨다. 이 문제는 불균일 기억 장치 접근(NUMA) 아키텍처를 사용하는 병렬 컴퓨팅을 통해 어느 정도 피할 수도 있다. 이 접근 방식은 슈퍼컴퓨터에서 흔히 사용된다. 백커스가 비판했던 지적인 병목 현상이 1977년 이후 크게 변했는지는 덜 명확하다. 백커스가 제안한 해결책은 큰 영향을 미치지 않았다. 현대 함수형 프로그래밍과 객체 지향 프로그래밍은 이전 언어인 포트란만큼 "방대한 양의 단어를 앞뒤로 밀어내는"날짜=2025년 4월 데 초점을 맞추지 않지만, 내부적으로는 고도로 병렬화된 슈퍼컴퓨터조차도 여전히 많은 시간을 그렇게 보낸다.
## 자체 수정 코드
자체 수정 코드 폰 노이만 병목 현상 외에도, 프로그램 수정은 의도적이든 아니든 상당히 해로울 수 있다. 일부 간단한 프로그램 내장식 컴퓨터 설계에서날짜=2025년 4월 오작동하는 프로그램은 자신이나 다른 프로그램, 또는 운영 체제를 손상시켜 컴퓨터 충돌을 일으킬 수 있다. 그러나 이 문제는 경계 검사가 없는 일반 프로그램에도 적용된다. 메모리 보호 및 다양한 접근 제어는 일반적으로 우발적이고 악의적인 프로그램 변경으로부터 보호한다.
# 추가 자료
참고 자료 시작 * * * 재출판: * Can Programming be Liberated from the von Neumann Style?. 배커스, 존. 1977 ACM 튜링상 강연. Communications of the ACM, 1978년 8월, 21권 8호 온라인 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페이지) * * * url=https://archive.org/details/eniac00scot * url=https://archive.org/details/computerfrompasc00herm * isbn=0-393-01804-0 참고 자료 끝