PREVIEW
Memory Address Register (MAR)

Memory Address Register (MAR)

Advanced signal_cellular_alt Advanced schedule 22 min

Interactive Circuit

메모리 주소 레지스터 (MAR)

개요

  • 목적: 메모리 주소 레지스터(MAR)는 읽기/쓰기 연산을 위한 메모리 주소를 보유하는 8비트 레지스터입니다. CPU의 내부 주소 소스(프로그램 카운터, 명령 레지스터)와 외부 메모리 주소 버스 사이의 버퍼 역할을 하여, 주소 신호의 적절한 타이밍과 격리를 가능하게 합니다.
  • 기호: MAR은 8비트 데이터 입력 버스, 클럭(CLK) 입력, 로드 인에이블(LD) 제어 신호, 8비트 주소 출력 버스가 있는 직사각형 블록으로 표현됩니다.
  • DigiSim.io 역할: 주소 생성과 메모리 접근을 분리하는 CPU 설계의 필수 부품으로, 적절한 버스 타이밍을 가능하게 하고 8비트 컴퓨터 아키텍처에서 복잡한 주소 지정 모드를 지원합니다.

Memory Address Register component

기능 설명

논리 동작

메모리 주소 레지스터는 로드 인에이블(LD)이 HIGH일 때 CLK 신호의 상승 에지에서 8비트 주소 값을 래치합니다. 이 설계는 DigiSim 8비트 컴퓨터 아키텍처의 다른 동기 레지스터와 일관됩니다. 래치되면 새 주소가 로드될 때까지 출력 핀에서 주소가 지속적으로 구동됩니다. 트라이스테이트 부품과 달리 MAR은 항상 출력을 구동합니다.

기능 표:

CLK Edge LD 동작 A0-A7 출력
1 새 주소 래치 D0-D7 입력 데이터
0 유지 이전 주소
- X 유지 이전 주소

참고: ↑는 CLK 신호의 상승 에지를 나타냅니다 새 데이터를 래치하려면 상승 클럭 에지에서 LD가 HIGH여야 합니다 안정적인 주소 버스를 보장하기 위해 출력은 항상 구동됩니다 (트라이스테이트 아님)

입력 및 출력

  • 입력 (총 10개):

    • D0-D7[7:0]: 새 주소를 로드하기 위한 8비트 데이터 입력(버스 입력). 트라이스테이트 버퍼를 통해 여러 소스가 구동할 수 있도록 버스 입력으로 구성됩니다.
    • CLK: 클럭 입력 (상승 에지 트리거). LD가 HIGH일 때 CLK의 상승 에지에서 데이터가 래치됩니다.
    • LD: 1비트 로드 인에이블 입력 (레벨 감지). 새 데이터를 래치하려면 상승 CLK 에지에서 HIGH여야 합니다.
  • 출력 (총 8개):

    • A0-A7[7:0]: 메모리 부품(RAM/ROM)에 연결되는 8비트 주소 출력. 이 출력은 항상 구동됩니다 (트라이스테이트 아님).

핀 배치

입력 핀 (왼쪽):

  • 핀 0-7: D0-D7 (데이터/주소 입력 - 버스 입력)
  • 핀 8: CLK (클럭 - 상승 에지 트리거)
  • 핀 9: LD (로드 인에이블 - 레벨 감지)

출력 핀 (오른쪽):

  • 핀 0-7: A0-A7 (메모리로의 주소 출력)

설정 가능한 매개변수

  • 초기값: 전원 투입 시 주소 값 (일반적으로 0x00).
  • 에지 감도: CLK 신호에서 상승 에지 트리거 (LD가 HIGH일 때).
  • 전파 지연: CLK 상승 에지부터 안정 출력까지의 시간.

DigiSim.io에서의 시각적 표현

메모리 주소 레지스터는 직사각형 블록(128x192 픽셀, 8x12 그리드)으로 표시됩니다:

  • 왼쪽에 8개의 데이터 입력 핀(D0-D7), relativeY: 0.16667 ~ 0.75
  • 1개의 클럭 입력 핀(CLK), relativeY: 0.83333
  • 1개의 로드 인에이블 핀(LD), relativeY: 0.91667
  • 오른쪽에 8개의 주소 출력 핀(A0-A7), relativeY: 0.25 ~ 0.83333

부품 라벨 "MAR"이 중앙에 표시되며, "ADDR"이 주소 레지스터로서의 역할을 나타냅니다. 입력 핀은 여러 트라이스테이트 드라이버를 수용할 수 있는 더 두꺼운 연결 지점으로 표시된 버스 입력으로 표시됩니다.

교육적 가치

핵심 개념

  • 주소 버퍼링: 적절한 버스 타이밍을 위해 주소가 소스로부터 어떻게 격리되는지 보여줍니다.
  • 에지 트리거 래칭: 클럭/제어 신호 에지에서 데이터가 어떻게 캡처되는지 보여줍니다.
  • 버스 아키텍처: CPU 설계에서 주소 버스와 데이터 버스의 분리를 설명합니다.
  • 메모리 주소 지정: 컴퓨터 아키텍처의 기본 개념입니다.
  • 파이프라인 단계: MAR은 페치-디코드-실행 파이프라인의 한 단계를 나타냅니다.

학습 목표

  • 메모리 연산에서 주소 레지스터의 역할을 이해합니다.
  • 주소 버퍼링이 복잡한 메모리 접근 패턴을 어떻게 가능하게 하는지 배웁니다.
  • 메모리 주소 셋업 및 홀드의 타이밍 요구 사항을 인식합니다.
  • CPU 메모리 인터페이스 설계에 MAR 개념을 적용합니다.
  • 여러 주소 소스(PC, IR, ALU)가 단일 메모리 주소 버스를 어떻게 공유할 수 있는지 이해합니다.

사용 예시

  • 명령어 페치: ROM/RAM에서 명령어를 페치하기 전에 PC 값을 MAR에 로드합니다.
  • 데이터 로드/저장: 데이터 메모리 접근을 위해 IR의 피연산자 주소를 MAR에 로드합니다.
  • 간접 주소 지정: 포인터 기반 접근을 위해 ALU의 계산된 주소를 로드합니다.
  • 스택 연산: 푸시/팝 연산을 위해 스택 포인터 값을 로드합니다.
  • DMA 연산: 직접 메모리 접근을 위해 외부 주소 소스가 값을 로드할 수 있습니다.

8비트 컴퓨터에서의 통합

DigiSim 8비트 컴퓨터 아키텍처에서 MAR은 중앙 주소 버퍼로 사용됩니다:

┌─────────────────────────────────────────────────────────────┐
│                     ADDRESS SOURCES                          │
│  ┌────────┐   ┌─────────────────┐   ┌──────────────┐       │
│  │   PC   │   │       IR        │   │     ALU      │       │
│  │ (8-bit)│   │ (4-bit address) │   │  (computed)  │       │
│  └───┬────┘   └───────┬─────────┘   └──────┬───────┘       │
│      │                │                     │                │
│      ▼                ▼                     ▼                │
│  ┌───────────────────────────────────────────────┐          │
│  │              TRI-STATE BUFFERS                │          │
│  │         (controlled by Control Unit)          │          │
│  └───────────────────────┬───────────────────────┘          │
│                          │                                   │
│                          ▼                                   │
│                    ┌───────────┐                            │
│                    │    MAR    │◄──── LD (from CU)          │
│                    │  (8-bit)  │                            │
│                    └─────┬─────┘                            │
│                          │                                   │
│                          ▼                                   │
│                   ┌──────────────┐                          │
│                   │  RAM / ROM   │                          │
│                   └──────────────┘                          │
└─────────────────────────────────────────────────────────────┘

제어 신호

제어 유닛은 특정 마이크로코드 단계에서 MAR_LD 신호를 생성합니다:

  • FETCH 상태: 다음 명령어를 읽기 위해 PC 값을 로드 (MAR_LD=1, CLK 상승 에지에서)
  • EXECUTE 상태: 메모리 연산을 위해 피연산자 주소를 로드 (MAR_LD=1, CLK 상승 에지에서)

CLK 신호는 모든 동기 부품과 공유되는 시스템 클럭입니다.

기술 참고사항

  • MAR은 명령 레지스터의 4비트 주소 출력에 비해 전체 8비트 주소 지정(256바이트)을 가능하게 합니다.
  • 버스 입력은 명시적 멀티플렉싱 없이 여러 트라이스테이트 소스를 연결할 수 있게 합니다.
  • 상승 에지 클럭 트리거링은 글리치 없는 깨끗한 주소 전환을 보장합니다.
  • 메모리 접근 중 안정적인 주소 버스를 유지하기 위해 출력은 항상 구동됩니다.
  • 메모리 읽기/쓰기 신호를 어서트하기 전에 MAR을 로드해야 합니다.
  • 타이밍에 민감한 설계에서는 전파 지연을 고려해야 합니다.
  • 클럭 입력(CLK)은 MAR을 다른 CPU 부품과 동기화합니다.

관련 부품

  • 프로그램 카운터 (PC): 명령어 페치 중 주소의 주요 소스.
  • 명령 레지스터 (IR): 메모리 연산을 위한 피연산자 주소를 제공.
  • RAM: MAR 출력에 의해 주소가 지정되는 랜덤 액세스 메모리.
  • ROM: MAR 출력에 의해 주소가 지정되는 읽기 전용 메모리.
  • 제어 유닛: 적절한 시점에 LD 신호를 생성.
  • 데이터 버스: 메모리와의 데이터 전송을 위한 별도의 버스.
  • 트라이스테이트 버퍼: MAR 입력에 서로 다른 주소 소스를 게이트하는 데 사용.

school 학습 경로

arrow_back 사전 요구 사항

arrow_forward 다음 단계

help_outline 자주 묻는 질문

MAR이란 무엇인가요?

메모리 주소 레지스터는 액세스할 메모리 위치의 주소를 보유합니다. 주소 버스에 연결되어 메모리 위치를 선택합니다.

MAR과 PC는 어떻게 다른가요?

PC는 다음 명령어의 주소를 보유합니다. MAR은 모든 메모리 액세스(명령어 인출, 데이터 읽기, 데이터 쓰기)를 위한 주소를 보유합니다.

play_arrow 실시간 회로 실행

다른 컴포넌트 보기