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
- Arithmetic Engine: 단일 기능을 넘어 여러 연산을 수행하는 범용 연산 블록(ALU)을 구축합니다.
- State Storage Binding: 연산 결과가 임시 저장될 레지스터와 ALU를 물리적으로 연결합니다.
- Flow Multiplexing: 제어 신호에 따라 특정 데이터만 통과시키는 스위칭 경로(Data Path)를 설계합니다.
- 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 시뮬레이터
Recommended
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
8. References
Primary
- [P1] CS2023 - AR/Processor Organization — High-level hardware specs.
- [P2] SWEBOK v4.0 - Computing Foundations / Computer Architecture — Structural standards.
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비트 가산기 회로에서 특정 비트의 합()과 올림수()가 이전 비트들의 결과에 논리적으로 종속되는 과정을 소통 가능한가? (P1)
- ALU 컨트롤 비트 조합에 따라 동일한 하드웨어가 덧셈, 뺄셈, 논리 연산으로 물리적 목적이 바뀌는 메커니즘을 입증할 수 있는 가? (P1)
Secondary
- 데이터 패스 설계를 보고, 특정 명령어(예:
ADD $1, $2, $3) 실행 시 어느 제어 신호가 1(Active)이 되어야 하는지 물리적으로 서술 가능한가? - 왜 레지스터 파일의 읽기 포트 개수가 동시에実行 가능한 연산 명령어 수를 물리적으로 제약하는지 설명할 수 있는 가?
Industry
- 고주파 프로세서 설계 시, Critical Path 상의 게이트 수를 줄이기 위해 연산 논리를 분화(Split-combine)하는 개선안을 제안할 수 있는 가? (SFIA)
- 하드웨어 검증(Verification) 시, 데이터 패스 상의 모든 가능한 경로에 대해 레이스 컨디션(Race Condition)이 발생하지 않음을 물리적으로 증명할 수 있는 가?