폰 노이만 구조
존 폰노이만이 제시한 컴퓨터 구조. 프로그램 내장 방식이라고도 불린다. 이론적으로는 튜링 머신과 같은 일을 할 수 있다.
그 이전의 컴퓨터들은 스위치를 설치하고 전선을 연결하여 데이터를 전송하고 신호를 처리하는 식으로 프로그래밍하였다.
폰노이만 구조의 디지털 컴퓨터에서는 ‘저장된 프로그램’(stored-program)의 개념이 도입되었는데, 이는 프로그램을 구성하는 명령어들을 임의 접근이 가능한 메모리상에 순차적으로 배열하고,
동시에 조건 분기를 무제한적으로 허용한다는 것을 뜻한다.
폰노이만 구조에서는 같은 메모리 속에 실행코드와 데이터가 따로 구분되지 않고 함께 섞여 있다.
프로그램과 데이터를 하나의 메모리에 저장하여 사용하는 방식
데이터는 메모리에 읽거나 쓰는 것이 가능하지만, 명령어는 메모리에서 읽기만 가능하다.
즉, CPU와 하나의 메모리를 사용해 처리하는 현대 범용 컴퓨터들이 사용하는 구조 모델이다.
장점과 단점
장점
컴퓨터에 다른 작업을 시키려고 할 때 굳이 하드웨어(전선)를 재배치할 필요 없이 소프트웨어(프로그램)만 교체하면 되기 때문에 범용성이 크게 향상된다.
전선을 일일이 교체할 경우 교체인원도 많이 필요하고 시간도 많이 잡아먹는 등 여러모로 불편함이 있지만,
폰노이만 구조를 도입하면 프로그램을 교체하는 것으로 모든 일이 끝난다 (범용성 향상)
단점
이 구조의 단점으로 폰노이만 병목현상이 있다
메모리와 CPU를 연결하는 버스는 하나이므로, 폰 노이만 구조는 순차적으로 정보를 처리하기 때문에 ‘고속 병렬처리’에는 부적합하다.
폰 노이만 구조는 순차적 처리이기 때문에 CPU가 명령어를 읽음과 동시에 데이터를 읽지는 못하는 문제가 있는 것이다.
또한 코드를 순차적으로 실행하기 때문에 정해진 입력에 따라 정해진 값만을 출력하는 멍청한 구조, 즉 ‘결정적 유한 오토마타’의 한계에 묶이기 쉽다
이를 해결하기 위해 대안으로 하버드 구조가 있다고 한다.
해결책과 한계
메모리를 명령어가 저장되는 곳과 데이터를 저장하는 곳으로 구분한 하버드 아키텍처가 있다
현대의 컴퓨터는 외부적으로는 폰노이만 구조를 쓰고 있으나, CPU 내부적으로는 하버드 아키텍처를 적용해서 속도를 향상시킨 것이 많은데,
이것또한 폰노이만 구조기반으로 만들어진것이기 때문에 병목현상만 해결할뿐 근본적인 구조자체는 변하지 않는다.
또 다른 재밌는 시도도있는데 , ‘뉴로모픽 컴퓨팅’이라고 하여,
인간과 같은 고등동물의 뇌 구조를 모방한 인공신경망 형태의 집적회로를 만들어 기존의 컴퓨터 구조가 지닌 한계를 극복하려는 것이다.
뉴런 하나하나가 작은 컴퓨터와 같은데 이를 모방하여 그물망처럼 병렬적으로 연결한 다음 각 유닛을 이벤트 구동 하는 방식으로 작동시키는 것이다
하지만 난이도가 높기때문에 아직은 연구 단계.
출처: https://namu.wiki/w/%ED%8F%B0%EB%85%B8%EC%9D%B4%EB%A7%8C%20%EA%B5%AC%EC%A1%B0 출처: https://github.com/gyoogle/tech-interview-for-developer/blob/master/Linux/Von%20Neumann%20Architecture.md