Von Neumann 병목 현상은 버스를 사용하여 프로세서, 메모리, 장기 저장 장치 및 주변 장치 간에 데이터를 전송하는 자연스러운 결과입니다. 버스가 작업을 얼마나 빨리 수행하더라도 이를 압도하는 것, 즉 속도를 줄이는 병목 현상을 형성하는 것은 항상 가능합니다. 시간이 지남에 따라 프로세서 속도는 계속 증가하는 반면 메모리 및 기타 장치 개선 사항은 더 적은 공간에 더 많이 저장할 수 있는 밀도에 초점을 맞춥니다. 결과적으로 병목 현상은 개선될 때마다 더욱 문제가 되어 프로세서가 많은 시간을 유휴 상태로 보내게 됩니다.
합리적으로 Von Neumann 병목 현상을 둘러싼 몇 가지 문제를 극복할 수 있으며 작지만 눈에 띄는 응용 프로그램 속도 증가를 생성할 수 있습니다. 다음은 가장 일반적인 솔루션입니다.
- 캐싱: Von Neumann 아키텍처로 충분히 빠르게 메모리에서 데이터를 얻는 문제가 분명해지자 하드웨어 공급업체는 버스 액세스가 필요하지 않은 현지화된 메모리를 추가하여 신속하게 대응했습니다. 이 메모리는 프로세서 외부에 있지만 프로세서 패키지의 일부로 나타납니다. 그러나 고속 캐시는 비싸므로 캐시 크기가 작은 경향이 있습니다.
- 프로세서 캐싱: 불행히도 외부 캐시는 여전히 충분한 속도를 제공하지 않습니다. 사용 가능한 가장 빠른 RAM을 사용하고 버스 액세스를 완전히 차단하더라도 프로세서의 처리 용량 요구 사항을 충족하지 못합니다. 결과적으로 공급업체는 내부 메모리를 추가하기 시작했습니다. 캐시는 외부 캐시보다 작지만 프로세서의 일부이기 때문에 훨씬 더 빠르게 액세스할 수 있습니다.
- 프리페칭: 캐시의 문제는 올바른 데이터가 포함된 경우에만 유용하다는 것입니다. 불행히도 캐시 히트는 많은 데이터를 사용하고 다양한 작업을 수행하는 애플리케이션에서 낮은 것으로 판명되었습니다. 프로세서가 더 빠르게 작동하도록 하는 다음 단계는 응용 프로그램이 다음에 필요로 하는 데이터를 추측하고 응용 프로그램이 필요로 하기 전에 캐시에 로드하는 것입니다.
- 특수 RAM 사용: 대부분의 사람들이 상상하는 것보다 더 많은 종류의 RAM이 있기 때문에 RAM 알파벳 수프에 묻혀버릴 수 있습니다. 각 종류의 RAM은 Von Neumann 병목 현상 문제의 적어도 일부를 해결한다고 주장하며 한계 내에서 작동합니다. 대부분의 경우 개선 사항은 메모리에서 버스로 더 빠르게 데이터를 가져오는 아이디어를 중심으로 이루어집니다. 메모리 속도 (메모리가 데이터를 이동하는 속도)와 대기 시간 (특정 데이터 조각을 찾는 데 걸리는 시간 )이라는 두 가지 주요(및 많은 사소한) 요소가 속도에 영향을 줍니다 . 기억 과 기억 에 영향을 미치는 요인 에 대해 자세히 읽어보십시오 .
다른 많은 기술 분야와 마찬가지로 과대 광고가 문제가 될 수 있습니다. 예를 들어, 멀티스레딩은 프로세서가 한 번에 하나씩 처리할 수 있는 개별 실행 단위로 응용 프로그램 또는 기타 명령 세트를 분리하는 행위로 종종 폰 노이만 병목 현상을 극복하기 위한 수단으로 선전되지만 실제로는 그렇지 않습니다. 오버헤드를 추가하는 것 이상입니다(문제를 악화시킴). 멀티스레딩은 애플리케이션을 보다 효율적으로 만드는 또 다른 문제에 대한 해답입니다. 응용 프로그램이 Von Neumann 병목 현상에 대기 시간 문제를 추가하면 전체 시스템이 느려집니다. 멀티스레딩은 프로세서가 사용자나 응용 프로그램을 기다리는 데 더 많은 시간을 낭비하지 않고 항상 수행할 작업을 갖도록 합니다. 애플리케이션 대기 시간은 Von Neumann 아키텍처뿐만 아니라 모든 프로세서 아키텍처에서 발생할 수 있습니다. 비록 그렇다 하더라도,