폰 노이만 구조

@Super_E끌림·2025년 8월 2일
post-thumbnail

초기 컴퓨터 과학자 중에 한명이였던 폰 노이만은 컴퓨터에 대해 연산, 제어, 저장의 세 가지 기능이 꼭 필요하다고 생각했습니다.

  • 연산 & 제어 → 중앙처리장치 (Central Processing Unit, CPU)
  • 저장 → 기억장치 (Memory)
  • 신호 전달 매체 → 버스 (Bus)

중앙처리장치 🧠

  • ALU (Arithmetic Logic Unit) - 산술/논리 단위로 연산을 수행하게 됩니다.

    산술 연산은 기본적으로 덧셈, 뺄셈 그리고 이를 응용한 곱셈, 나눗셈이 있습니다.
    논리 연산은 AND, OR, NOT, XOR 등 비트를 가지고 연여 조건에 따라 데어터를 처리할 수 있습니다.
    그리고 데이터를 비교도 합니다.

    • Opcode : 연산자 ⇒ 덧셈, 곱셈, 나눗셈, AND, XOR 등
    • A,B : 피연산자 ⇒ 보내는 주체는 데이터 레지스터
    • Y : 연산결과 ⇒ AC(누적기)에 저장됨
    • Left Status : 이전 데이터의 상태 정보 ⇒ 보내는 주체는 제어신호
    • RIght Status : 연산한 데이터의 상태 정보 ⇒ 저장되는 주체는 상태 레지스터

    각각의 Status는 분기, 조건판단 등을 위한 값이다.

  • 레지스터 (Register) - 메모리의 한 종류로 속도가 빠르다.

    수만은 메모리가 있지만 때에 따라서 각각의 용도에 맞게 사용하게 됩니다.

    위에 보이는 사진처럼 레지스터는 저장 가능한 용량이 적지만 처리 속도는 빠릅니다.

    메모리의 종류로는

    • PC (Program Counter) - 프로그램을 순차적으로 처리하도록 프로그램의 순서를 카운트하는 역할

      어떤 명령어가 몇번째 순서에 실행되는지를 기록하는 역할로 다음에 실행될 명령어의 메모리 주소를 기억하고 있다.
      명령어가 실행될 때마다 자동으로 업데이트되며, 대게는 1씩 증가합니다.

    • MAR (Memory Address Register) - 메모리 주소를 저장하는 레지스터다.

      메모리에 접근 시, CPU는 MAR에 원하는 주소를 적어놓고 동작을 수행한다.

      READWRITE
      예시MAR ← 0x2000 / READMAR ← 0x3000 / MDR ← 0xDEADBEEF / WRITE
      설명메모리 주소 0x2000의 내용을 읽기 위해 MAR에 주소를 설정주소 0x3000에 데이터 0xDEADBEEF를 저장

      MDR은 메모리에서 읽어온 값 또는 저장할 값을 저장하는 곳이다.

    • MBR (Mamory Buffer Register)

      메모리에 저장되기 전 임시적으로 저장되는 공간이다.
      메모리에서 읽어온 값 또는 저장할 값을 저장하는 곳이다.
      이를, 다른 명칭으로 MDR로도 부른다.

    • IR (Instruction Register)

      Decoder(해석기)에 들어가기 전에 명령어를 기억하는 역할
      CPU가 무엇을 해야 할지 알려주는 정보의 중심이 되는 곳으로 명령어 저장, 디코딩 대상, 연산 제어의 역할이 있다.
      명령어 저장 : 메모리에서 읽어온 명령어를 임시 저장
      디코딩 대상 : 제어 유닛(Control Unit)이 해석할 명령어의 소스
      연산 제어 : 어떤 연산을 할지, 어떤 레지스터를 쓸지 등을 결정하는 기준

  • 제어장치 (Control Unit) - 명령어를 해석하고 실행하기 위한 제어 신호를 생성하여 다른 구성 요소들을 제어한다.

    지금 상태에서는 크게 필요 없는 내용이므로 개념만 알고 넘어 갑니다.

그럼 이제는 아래 그림의 흐름을 알 수 있을 겁니다.

기억장치 💾

  • 주기억장치 - 컴퓨터에서 프로그램 실행에 필요한 데이터와 명령어를 저장하는 기억 장치이다.

    기본적으로 읽기(R), 쓰기(W)의 요소가 있습니다.

    RAM(Random Access Memory) - 데이터를 읽고 변경이 가능하다 / 휘발성(프로그램이 종료되면 데이터가 삭제됨)
    ROM(Read Only Memory) - 데이터를 읽을 수만 있다 / 비휘발성(프로그램이 종료되어도 데이터가 보존됨)

    일반적으로 주기억장치라고 하면 RAM을 의미합니다.

  • 보조기억장치 - 컴퓨터 시스템에서 데이터를 장기적으로 저장하는 장치이다.

    주기억장치의 단점을 보조하는 역할을 합니다. (속도 ⬇️, 비휘발성, 저장용량 ⬆️)
    대표적으로 하드디스크(Hard Disk Drive, HDD), SSD(Solid State Drive)이 있다.

시스템 버스 🚌

크게 3가지만 보면 데이터, 주소, 제어가 있습니다.

  • 데이터 버스 - 데이터를 전달하는 경로

    각 구성요소(CPU, Memory, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용함

  • 주소 버스 - 메모리의 주소나 I/O Unit의 포트 번호 전달 (포드 번호 → 고유 식별 번호)

    단반향 경로를 사용하기 때문에 CPU → Memory로 전달이 된다.
    I/O Unit은 CPU와 Memory간 통신을 양방향 노선을 사용해 전달한다.

  • 제어 버스 - 제어 신호 전달

    Read 읽을 것인지 Write 변경할 것인지에 대한 신호를 전달한다.
    각 구성요소와는 양방향으로 통신이 이루어진다.

profile
SoC:) SoC:)

0개의 댓글