Von Neumann Architecture

Von Neumann architecture는 1945년 John von Neumann이 제안한 컴퓨터 아키텍처로, 현대 대부분의 컴퓨터 시스템의 기본이 되는 설계이다.

Von Neumann Architecture
Source: https://www.geeksforgeeks.org/computer-organization-von-neumann-architecture/

특징

  1. 순차적 실행:

    • 명령어를 메모리에서 한 번에 하나씩 순차적으로 가져와 실행
  2. 레지스터:

    • 프로그램 카운터 (PC): 다음 실행할 명령어의 주소 저장
    • 명령어 레지스터 (CIR): 현재 실행 중인 명령어 저장
    • 메모리 주소 레지스터 (MAR): 접근할 메모리 주소 저장
    • 메모리 데이터 레지스터 (MDR): 메모리와 주고받는 데이터 저장
    • 누산기 (Accumulator): 연산 결과 임시 저장
  3. 버스 시스템:

    • 데이터 버스: CPU와 메모리, 입출력 장치 간 데이터 전송
    • 주소 버스: 메모리 주소 전송
    • 제어 버스: 제어 신호 전송
  4. Fetch-Decode-Execute 사이클:

    • 명령어 인출 (Fetch)
    • 명령어 해독 (Decode)
    • 명령어 실행 (Execute)

핵심 구성 요소

  1. 제어 장치 (Control Unit):

    • 프로그램의 명령어를 해석하고 실행을 제어한다.
    • 다른 모든 구성 요소들의 동작을 조정한다.
    • 마치 오케스트라의 지휘자와 같은 역할을 한다.
  2. 산술 논리 장치 (Arithmetic Logic Unit, ALU):

    • 실제 계산과 논리 연산을 수행한다.
    • 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 수학적 연산을 처리한다.
    • AND, OR, NOT과 같은 논리 연산도 수행한다.
  3. 메모리 (Memory):

    • 프로그램과 데이터를 모두 저장한다.
    • 각 메모리 위치는 고유한 주소를 가진다.
    • 현대 컴퓨터에서는 RAM이 이 역할을 담당한다.
  4. 입력 장치 (Input Devices):

    • 외부로부터 데이터를 받아들인다.
    • 키보드, 마우스, 스캐너 등이 해당된다.
  5. 출력 장치 (Output Devices):

    • 처리된 결과를 외부로 전달한다.
    • 모니터, 프린터, 스피커 등이 해당된다.

작동 방식

폰 노이만 아키텍처의 작동 과정을 단계별로 살펴보자:

  1. 명령어 인출 (Fetch):

    1
    2
    
    Program Counter → Memory Address
    Memory → Instruction Register
    

    프로그램 카운터가 가리키는 메모리 주소에서 다음 실행할 명령어를 가져온다.

  2. 명령어 해석 (Decode):

    1
    2
    3
    4
    
    Control Unit analyzes instruction:
    - Operation to perform
    - Data locations
    - Next instruction
    

    제어 장치가 명령어를 해석하여 수행할 작업을 결정한다.

  3. 실행 (Execute):

    1
    2
    3
    4
    5
    6
    
    ALU performs operation:
    IF addition:
        result = operand1 + operand2
    ELSE IF comparison:
        result = compare(operand1, operand2)
    

    ALU나 다른 하드웨어 구성 요소가 명령어를 실행한다.

  4. 저장 (Store):

    1
    2
    3
    
    IF result needs storing:
        Memory[destination] = result
    Program Counter += instruction_length
    

    결과를 메모리에 저장하고 다음 명령어로 이동한다.

폰 노이만 아키텍처의 특징과 장단점

장점:

  1. 단순성: 명확한 구조로 인해 설계와 구현이 비교적 단순하다.
  2. 유연성: 프로그램을 쉽게 수정하고 업데이트할 수 있다.
  3. 범용성: 다양한 종류의 프로그램을 실행할 수 있다.

단점:

  1. 폰 노이만 병목 현상: 메모리와 처리 장치 사이의 단일 통로로 인한 성능 제한이 있다.
  2. 순차적 실행: 명령어가 순차적으로 실행되어 병렬 처리가 제한된다.
  3. 저장 프로그램 개념:
    • 프로그램과 데이터를 동일한 메모리에 저장
    • 이로 인해 프로그램의 수정과 실행이 용이해짐

현대적 발전과 적용

현대 컴퓨터는 기본적으로 폰 노이만 아키텍처를 따르지만, 여러 가지 개선 사항을 도입했다:

  1. 캐시 메모리:

    1
    2
    3
    4
    5
    6
    
    Memory Hierarchy:
    L1 Cache (Fastest, Smallest)
    L2 Cache
    L3 Cache
    RAM (Main Memory)
    Hard Drive (Storage)
    
  2. 파이프라이닝:

    1
    2
    3
    4
    
    Instruction Pipeline:
    Fetch → Decode → Execute → Store
           Fetch → Decode → Execute → Store
                  Fetch → Decode → Execute → Store
    
  3. 병렬 처리:

    1
    2
    3
    4
    
    Multiple Cores:
    Core 1: Instruction Stream 1
    Core 2: Instruction Stream 2
    Core N: Instruction Stream N
    

참고 및 출처