티스토리 뷰
ALU ‧ 제어장치(CU) ‧ 레지스터 ― “CPU 속 3대 핵심 블록” 심화 노트
회로 세부·최신 마이크로아키텍처 관점을 덧붙여 정리했습니다.
1. ALU (Arithmetic Logic Unit)
포인트 상세 설명
역할 | 정수 덧셈·뺄셈·증가/감소, 논리 AND/OR/XOR/NOT, 시프트·회전, 비교, 비트 카운트 등 |
하드웨어 핵심 | • 가산기: Carry-Lookahead Adder(CLA)로 리플-캐리 지연을 O(log n)로 단축 ([PDF] Lecture 8:, [Carry Look-Ahead Adder |
입력 | ⓐ 두(또는 그 이상) 오퍼랜드 → 레지스터 파일에서 읽음 ⓑ 연산 선택 코드 → 제어장치가 ALU Control 라인으로 전송 |
출력 | ⓐ 결과 → 레지스터 파일로 Write-back ⓑ 플래그 비트 → 플래그 레지스터로 전달 (분기·예외 결정) |
모던 확장 | • SIMD/Vector ALU (AVX-512, SVE2) : 128-2048 bit 병렬 • FMA ( a × b + c ) 유닛: FP*·AI 가속 핵심 • 암호/비트 조작 확장 : RISC-V B·AES-NI |
2. 제어장치 (CU, Control Unit)
구분 Hard-wired CU Micro-programmed CU
원리 | 상태 머신 + PLA로 고정 로직 | 명령어 → 마이크로코드 ROM → 제어신호 |
장점 | 속도↑, 전력↓ | 명령어 세트 수정·확장 용이 |
단점 | ISA 변경 시 재설계 필요 | ROM 지연, 패치 필요 |
현대 사용처 | RISC 코어·DSP | x86 디코더, 복잡 ISA 백엔드 (Difference between Hardwired and Micro-programmed Control Unit, Hardwired v/s Micro-programmed Control Unit - GeeksforGeeks) |
입·출력 신호
- 입력: IR(명령어), 플래그, 클럭, 외부 인터럽트·DMA 요청
- 출력: ALU Op, 레지스터 읽기/쓰기, 버스 RD/WR, 분기 PC mux 선택 등
- 파이프라인 제어: Hazard 스톨, 분기 Flush, Reorder Buffer Commit( OoO )
3. 레지스터(Registers) – “CPU 한가운데 캐시”
범주 대표 비고
프로그램 제어 | PC/RIP, IR, CSR (status & control) | 흐름·권한·예외 관리 |
데이터 | GPR (x86 EAX… / ARM X0-X30) | 산술·주소·임시 저장 |
메모리 연동 | MAR, MDR/MBR | 버스 인터페이스 |
스택·프레임 | SP, BP/FP | 함수 호출 규약 |
플래그 | EFLAGS/APS-R/NZCV | ALU 상태 비트 |
특수·대형 | SIMD(XMM/YMM/Z), Vector(V0..), System(TTBR, TPIDR) | 128-2048 bit, MMU·스레드 ID |
마이크로-아키텍처 | 물리 레지스터 + Rename Map | OoO 코어당 150-300개 |
대부분 현대 코어는 다중 포트 레지스터 파일(읽기 6-10, 쓰기 4-6)과 포워딩 네트워크를 갖춰 1 사이클 내 데이터 의존을 해결한다. (ARM Data Types and Registers (Part 2) - Azeria Labs, General Purpose Registers | GeeksforGeeks)
4. 세 블록이 협업하는 한 사이클 예 (RISC-V ADD x5,x1,x2)
- Fetch — IR ⇠ I-Cache, PC + 4
- Decode / CU — opcode=ADD → ALU_OP=ADD, src= x1/x2, dst=x5
- Register Read — x1, x2 값 ALU 입력으로 포워딩
- ALU Execute — 합산, 플래그 생성(ZF 등)
- Write-back — 결과 → x5, CU가 분기 여부 판단(플래그 활용)
파이프라인 상태에 따라 위 단계들이 컨베이어처럼 엇갈려 흐르며, CU가 Hazard를 감시하고 ALU는 매 싸이클 다른 연산을 수행할 수 있다.
5. 학습 팁 & 실습 아이디어
무엇을 해보나 얻는 인사이트
가산기 RTL(Verilog) 시뮬레이션 + CLA 변환 | 리플-캐리 ↔ CLA 지연·게이트 수 비교 |
gdb / lldb 로 레지스터 덤프 | 함수 콜 전후 PC, SP, FP 변화 추적 |
Intel® VTune / perf 로 µop & stall 분석 | ALU 포트 사용률·레지스터 재네임 관찰 |
RISC-V 툴체인으로 objdump | 레지스터-중심 3-Address 명령 형식 체험 |
한 줄 정리
ALU는 “계산+플래그”, CU는 “시퀀서+신호”, 레지스터는 “초고속 기억”이다.
세 블록이 파이프라인·OoO·SIMD 같은 현대 기법과 엮이면서, 10⁹ 회/초 이상의 명령 처리가 가능해진다.
'다시 정리하는 CS 이론 > 컴퓨터구조론' 카테고리의 다른 글
[컴구론] 캐시 히트와 미스 탐구 (0) | 2025.05.01 |
---|---|
[컴구론] 명령어 사이클과 인터럽트 (0) | 2025.05.01 |
[컴구론] 명령어의 구조 (0) | 2025.05.01 |
[컴구론] C++ 실습 : 정적 링크 VS 동적 링크 (0) | 2025.05.01 |
[컴구론] 컴퓨터 구조론 컴퓨터 언어와 차이의 이해 (0) | 2025.05.01 |
Comments
최근에 올라온 글