Home > Study > AI Algorithm Structure > Day1: AI Algotirhm and Structure

Day1: AI Algotirhm and Structure

Von Neumann Architecture

  1. 폰 노이만 구조
  2. 폰 노이만 병목 현상
  3. 하버드 구조
  4. 파이프라인

1. 폰 노이만 구조

폰 노이만 구조란?

  • 폰 노이만 구조가 등장하기 전까지는 하드와이어드 프로그래밍 방식을 사용했다. 폰 노이만 구조가 등장하면서, 프로그램 내장 방식을 사용하게 되었고, 특징은 명령어와 데이터가 같은 메모리 공간에 저장되고 순차적으로 실행된다.

    • 하드와이어드 프로그래밍 방식 : 폰 노이만 구조가 등장하기 전까지는 계산을 할 때마다 손으로 직접 진공관의 회로 스위치를 조정하여 새 입력을 처리하는 하드웨어 프로그램 방식

폰 노이만 구조의 주요 구성 요소

    1. 중앙처리장치(CPU)
    1. 메모리(Memory)
    1. 입출력장치(In.Out Device)
    1. 버스 시스템(Bus)

Von Neumann Architecture

폰 노이만 구조의 동작 원리

  • 폰 노이만 구조의 컴퓨터는 명령어 실행 사이클을 반복 동작한다.
    1. 명령어 인출(Fetch): 메모리에서 명령어를 가져온다.
    2. 명령어 해석(Decode): 메모리에서 가져온 명령어가 어떤 명령어인지 해석한다.
    3. 명령어 실행(Execute): 명령어를 실행한다.
    4. 메모리 연산(Data Memory): 명령어 수행을 위해 메모리와 데이터 레지스터 간의 데이터 이동을 처리
    5. 저장(WriteBack): 연산 결과를 메모리에 저장한다.

//사진 넣기

2. 폰 노이만 구조의 병목 현상

폰 노이만 구조의 단점

  • 폰노이만 구조의 가장 치명적인 단점은 폰노이만 병목현상이다.
  1. 단일 버스 구조
    • 명령어와 데이터가 같은 버스를 공유하기 때문에 나타나는 현상이다. CPU는 한번에 명령어 또는 데이터를 가져올 수 있기 때문에 동시에 불가능하다.
  2. 메모리 벽
    • CPU의 성능은 기하급수적으로 발전했지만, 메모리의 속도가 그에 미치지 못해 이 속도 격차가 CPU의 대기 시간을 늘려 CPU의 제 성능을 발휘하지 못한다.
  3. 순차적 처리
    • 명령어가 순차적으로 실행이 되는데, 이러한 처리 방식은 갈수록 데이터 종류가 다양해지고, 대규모 병렬 연산이 필요한 현대 사회에서는 비효율적이다.

폰 노이만 구조의 병목현상이 미치는 영향

  • 상대적으로 메모리보다 빠른 CPU가 대부분의 시간을 메모리를 기다리게 되므로 시스템의 성능 저하로 이어진다. (CPU의 유후 시간 증가)
  • 데이터가 CPU와 메모리를 왔다갔다하는 것이 전력 소모가 크다.

    -> 신호 전이(Transition)에 따른 전력 소모

    • 버스에서 데이터가 0->1, 1->0으로 바뀔 때마다 transition이 발생 -> transition의 횟수가 많아질수록 전력 소모 증가

    -> 캐패시터 충전과 방전

    • 버스의 선로는 캐패시터 역할을 함 -> 데이터가 변경 될 때마다 커패시터를 충방전하게 된다 -> 더 빠른 스위칭을 위해서는 높은 과도 전류가 필요하게 되어 전력 소모가 증가하게 된다.

3. 하버드 구조

하버드 구조란?

  • 폰 노이만 구조에서는 하나의 버스 시스템에서 데이터와 명령어가 이동했지만, 하버드 구조는 명령어와 데이터를 물리적으로 분리된 메모리에 저장하고 접근하는 구조이다.

harvard Architecture

폰 노이만 구조 vs 하버드 구조

  1. 하버드 구조에서는 폰 노이만 구조와 달리 명령어를 메모리로부터 읽는 것과 데이터를 메모리로부터 읽는 것을 동시에 할 수 있다.
  2. 하버드 구조는 병렬 처리를 통한 성능 향상이 가능하다. 현재 명령어를 처리함과 동시에 다음 명령어를 읽을 수 있다. (파이프라인)

하버드 구조 적용 사례

  1. 디지털 신호 처리기 (DSP)에서 주로 사용한다. 실시간 데이터 처리가 중요한 프로세서로, 하버드 구조의 병렬 메모리 접근 능력이 더 높은 메모리 대역폭을 제공하기 때문이다.
    • 메모리 대역폭이란?

      -> 단위 시간당 전송 가능한 데이터의 양, 초당 얼마나 많은 비트(bit)를 주고받을 수 있는 지.
      -> CPU가 명령어를 인출하면서 동시에 데이터 메모리에서 연산에 필요한 데이터를 읽어올 수 있다. 즉, 두 개의 독립된 명령어 버스, 데이터 버스를 통해 동시에 전송이 가능하므로 전체 메모리 대역폭을 두배로 사용 가능.