콘텐츠로 바로가기

ALU & Data Path Design

CPU의 연산 엔진인 ALU의 내부 구조와, 명령어 실행을 위해 데이터가 흐르는 물리적 통로인 데이터 패스의 연동 원리를 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

ALU 및 데이터 패스 설계(ALU & Data Path Design, ADP)는 추상적인 연산 명령이 하드웨어 내부에서 물리적인 에너지의 흐름으로 변환되는 CPU의 '심장부'와 '핏줄'을 구축하는 과정입니다.

학습자는 산술 및 논리 연산을 실제 게이트 단위에서 수행하는 **산술 논리 장치(ALU)**의 아키텍처와, 레지스터와 ALU 사이를 연결하여 데이터를 실어 나르는 **데이터 패스(Data Path)**의 물리적 구성을 배웁니다. 이는 명령어 실행 사이클(Fetch-Decode-Execute)을 하드웨어 레이아웃 관점에서 이해하고, 클록(Clock) 주기에 맞춰 데이터가 어떻게 충돌 없이 연산되어 레지스터로 돌아오는지를 설계하는 실무적 역량을 제공합니다.

2. Scope & Boundaries

In-Scope

  • ALU Interals: 가산기, 시프터(Shifter), 논리 연산 블록 및 제어 비트 연동
  • Data Path Architecture: 레지스터 파일, 내부 버스, ALU 연결망 물리
  • RTL Physics: 레지스터 전송 레벨에서의 데이터 흐름 및 멀티플렉싱
  • Flag Logic: Zero, Carry, Negative, Overflow 플래그의 생성 및 물리적 의미

Out-of-Scope

  • 명령어의 의미를 해석하는 제어 유닛(Control Unit) 상세 (02-01-04 ISA 영역으로 위임)
  • 외부 램(RAM)과의 시스템 버스 통신 (02-02 Memory 영역으로 위임)

Boundaries

  • ADP vs. Digital Logic: 디지털 논리가 '개별 소자'를 본다면, ADP는 이 소자들이 모여 하나의 '기능적 데이터 흐름(Data-flow)'을 완성하는 시스템 설계에 집중합니다.

3. Counterexample

  • 단순히 "덧셈은 가산기 회로를 쓴다"는 단편적인 지식은 ADP 학습이 아닙니다. 왜 특정 명령어 실행 시 **데이터 경로의 지연(Data path delay)**이 클록 주기를 초과하면 안 되는지 타이밍 측면에서 설명할 수 있어야 하고, 데이터 패스 설계 시 단일 버스 방식과 다중 버스 방식의 물리적 병목 차이를 인지하지 못한다면 ADP의 핵심을 놓치고 있는 것입니다.

4. Prerequisites

  • 디지털 논리 및 불리언 대수 (Basic): 게이트 조합과 조합 회로 지식이 필수입니다. (02-01-01 DLB)
  • Integer & Float Representations (Recommended): 보수 체계와 데이터 전송 단위 이해가 권장됩니다. (02-01-02 IFR)

5. Learning Map

  1. Arithmetic Engine: 단일 기능을 넘어 여러 연산을 수행하는 범용 연산 블록(ALU)을 구축합니다.
  2. State Storage Binding: 연산 결과가 임시 저장될 레지스터와 ALU를 물리적으로 연결합니다.
  3. Flow Multiplexing: 제어 신호에 따라 특정 데이터만 통과시키는 스위칭 경로(Data Path)를 설계합니다.
  4. Performance Hardening: 연산 지연 시간을 계산하여 프로세서의 동작 주파수 한계를 확정합니다.

6. Learning Topics

Basic

Core: 1비트 ALU에서 n비트 확장 (ALU Scaling)

  • Why to Learn: 복잡한 프로세서 연산기가 어떻게 단순한 1비트 빌딩 블록으로부터 조립되는지 이해하기 위함입니다.
  • What to Learn:
    • 1비트 연산 유닛: AND, OR, ADD 기능을 포함한 핵심 로직
    • 기능 선택(Control Input): MUX를 통한 연산 모드 물리적 전환
    • 비트 확장: 가산기의 Carry-out이 다음 비트로 전달되는 체이닝 구조
  • How to Learn:
    • 특정 제어 비트(Op0, Op1)의 값에 따라 ALU가 덧셈을 할지 AND 연산을 할지 선택하는 회로 분석
    • 4비트 리플 캐리 가산기(Ripple Carry Adder)의 내부 연산 전파 과정 실습
  • Implement: 제어 입력에 따라 다른 연산 결과와 플래그를 출력하는 가상 ALU 시뮬레이터

Core: 레지스터 파일과 데이터 흐름 (Register Transfer)

  • Why to Learn: CPU 내부의 유한한 자원인 레지스터들이 연산기와 어떻게 실시간으로 상호작용하는지 배우기 위해서입니다.
  • What to Learn:
    • 레지스터 파일 아키텍처: 읽기/쓰기 포트와 주소 디코딩 물리
    • 버스 공유: 여러 레지스터가 하나의 ALU 입력으로 데이터를 보낼 때의 경합 해결
    • 트리-스테이트 버퍼(Tri-state Buffer)를 이용한 데이터 패스 연결 기술
  • How to Learn:
    • $rs$rt 레지스터에서 값을 읽어 ALU에서 더한 뒤 $rd에 쓰는 데이터 이동 경로 작도 실습
    • 레지스터 읽기 활성화(Read Enable) 신호가 어떻게 물리적 전압으로 구현되는지 분석
  • Implement: 여러 레지스터와 하나의 ALU를 연결하고 버스 충돌 없이 데이터를 전송하는 흐름 제어 로직

Practical

Core: 데이터 패스의 타이밍과 클록 (Timing & Clocking)

  • Why to Learn: 프로그램이 에러 없이 동작하기 위해 하드웨어가 지켜야 할 '시간의 한계'를 인지하기 위함입니다.
  • What to Learn:
    • 셋업 시간(Setup Time)과 홀드 시간(Hold Time)의 하드웨어적 제약
    • 래치(Latch) vs 플립플롭(Flip-Flop) 환경에서의 데이터 안정화 물리
    • 클록 스큐(Clock Skew): 동일한 시점에 신호가 도달하지 못할 때 발생하는 문제
  • How to Learn:
    • 데이터가 한 레지스터를 떠나 ALU 연산을 마치고 다음 레지스터 입구에 도달하기까지의 최장 경로(Critical Path) 계산
    • 클록 주파수를 높였을 때 왜 데이터 패스 연산 결과가 깨질 수 있는지 수리적 증명
  • Implement: 게이트 지연 시간이 포함된 데이터 패스 상에서 클록 주기에 따른 데이터 정합성 테스트 모듈

Advanced

Core: 고속 연산 데이터 패스 최적화 (Advanced Datapath)

  • Why to Learn: 프로세서의 성능을 극한으로 끌어올리기 위한 특수 회로와 경로 다중화 기법을 익히기 위해서입니다.
  • What to Learn:
    • Carry Look-ahead 가산기: 연쇄적 전파를 기다리지 않는 고속 올림수 물리
    • 배럴 시프터(Barrel Shifter): 한 클록 내에 다중 비트 이동을 수행하는 하드웨어 레이아웃
    • 포워딩 경로(Forwarding Path): 나중 명령어가 앞 명령어의 결과값을 즉각 낚아채는 우회로 설계
  • How to Learn:
    • 일반 가산기와 고속 가산기의 게이트 레이어 수(Gate Levels) 차이에 따른 응답 속도 비교 연습
    • 특정 파이프라인 스테이지 간의 버스 병목을 해소하기 위한 멀티-레벨 데이터 패스 아키텍처 분석
  • Implement: 특정 거리의 시프팅 명령 시 게이트 통과 횟수를 최소화하는 멀티플렉서 트리 설계

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Register File 여러 개의 CPU 레지스터를 하나의 메모리 블록처럼 관리하는 고속 저장 장소 물리입니다. 기본 자원 관리 Register Address 외부 '메인 메모리'와 혼동 P1:CS2023/ProcessorProgs core
Datapath 연산에 필요한 데이터가 CPU 구성 요소들 사이를 흐르는 물리적인 배선 통로입니다. 추천 실행 통로 ALU / MUX Control Unit '소프트웨어 경로'와 혼동 P1:CS2023/ProcessorProgs core
Critical Path 데이터 패스 내에서 신호가 시작에서 끝까지 도달하는 데 가장 긴 시간이 걸리는 경로입니다. 실무 성능 결정 Delay Clock Speed '가장 중요한 기능'으로 오해 Industry Design core
Forwarding 앞선 연산 결과가 레지스터에 기록되기 전에 직접 다음 연산의 입력으로 넣어주는 물리적 우회 기술입니다. 심화 성능 가속 Hazzard Pipeline '데이터 전송' 일반과 혼동 P1:CS2023/ProcessorProgs core

8. References

Primary

Secondary

  • [Computer Organization and Design (MIPS Edition)] Patterson & Hennessy — The definitive "Green Book" for DP.
  • [Digital Systems: Principles and Applications] Tocci — Practical implementation of ALU/DP.

Industry

  • [ARM Cortex-M Series Architecture Reference Manual] — Real-world ALU flags and data paths.
  • [Synopsys Design Compiler Guidelines] — Industry timing and path analysis standards.

9. Final Checklist

Primary

  • 32비트 가산기 회로에서 특정 비트의 합(SS)과 올림수(CC)가 이전 비트들의 결과에 논리적으로 종속되는 과정을 소통 가능한가? (P1)
  • ALU 컨트롤 비트 조합에 따라 동일한 하드웨어가 덧셈, 뺄셈, 논리 연산으로 물리적 목적이 바뀌는 메커니즘을 입증할 수 있는 가? (P1)

Secondary

  • 데이터 패스 설계를 보고, 특정 명령어(예: ADD $1, $2, $3) 실행 시 어느 제어 신호가 1(Active)이 되어야 하는지 물리적으로 서술 가능한가?
  • 왜 레지스터 파일의 읽기 포트 개수가 동시에実行 가능한 연산 명령어 수를 물리적으로 제약하는지 설명할 수 있는 가?

Industry

  • 고주파 프로세서 설계 시, Critical Path 상의 게이트 수를 줄이기 위해 연산 논리를 분화(Split-combine)하는 개선안을 제안할 수 있는 가? (SFIA)
  • 하드웨어 검증(Verification) 시, 데이터 패스 상의 모든 가능한 경로에 대해 레이스 컨디션(Race Condition)이 발생하지 않음을 물리적으로 증명할 수 있는 가?