콘텐츠로 바로가기

Computer Architecture & Embedded Systems

디지털 논리, 프로세서 마이크로아키텍처, 병렬 처리 및 실시간 임베디드 제어를 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

computer-architecture-embedded-systemscomputer-architectureembedded-systemsarchitecture-hardwarelearninghardwarevlsicomputer9 min read

1. Overview

컴퓨터 구조와 임베디드 시스템(Computer Architecture & Embedded Systems, CAES)은 하드웨어와 소프트웨어의 교차 지점에서 시스템의 물리적 실행 효율성을 극대화하는 원리를 다룹니다. 본 카테고리는 단순한 부품 조합을 넘어, 프로세서의 명령어 실행 메커니즘, 메모리 계층의 병목 해결, 그리고 제한된 자원 환경에서의 실시간 제어 성능을 보장하는 엔지니어링 설계를 탐구합니다.

CS2023의 Architecture and Organization (AR)Computer Engineering (CE) 영역을 근간으로 삼아, 현대 컴퓨팅 인프라의 성능적 토대와 IoT/임베디드 기기의 하드웨어 중심 소프트웨어 설계를 체계적으로 다룹니다.

현대의 CAES는 전통적인 x86/ARM 범용 프로세서를 넘어, **AI 가속기(NPU·GPU)**의 병렬 연산 설계, RISC-V 개방형 ISA 생태계, 그리고 엣지 디바이스에서의 온디바이스 추론(On-device Inference)으로 확장되고 있습니다. 운영체제(03. OSSM)가 하드웨어 자원을 추상화하여 공정하게 배분한다면, CAES는 그 물리적 자원 자체의 성능 한계를 규정하고 극한까지 활용하는 방법을 다룹니다.

2. Scope & Boundaries

In-Scope

  • 프로세서 아키텍처(Processor Design): 명령어 집합 아키텍처(ISA), 파이프라이닝, 분기 예측, 비순차 실행(OOO) 등 연산 엔진의 내부 설계.
  • 메모리 계층 구조(Memory Hierarchy): 다단계 캐시(L1/L2/L3) 설계, 가상 메모리 관리(MMU/TLB), 메모리 일관성 프로토콜(MESI/MOESI).
  • 임베디드 제어(Embedded Systems): RTOS(실시간 운영체제), 인터럽트 처리 기전, 하드웨어 추상화 계층(HAL), 전용 통신 프로토콜(I2C, SPI, UART, CAN).
  • 병렬 아키텍처(Parallelism): 멀티코어 시스템, SIMD 가속기, GPU 아키텍처 기초, NPU/AI 가속기의 연산 병렬화 원리.
  • 하드웨어 보안(HW Security): 부채널 공격(Side-channel Attack), 신뢰 실행 환경(TEE: TrustZone, Secure Enclave) 기초.

Out-of-Scope

  • 범용 커널 알고리즘: 운영체제의 고수준 프로세스 스케줄링 및 파일 시스템 추상화 → 03. OSSM 노드로 위임.
  • 순수 반도체 물리: VLSI 공정 설계 및 소자 물리학적 특성 탐구 (전자공학 전문 영역).
  • 상위 응용 프레임워크: React, Django와 같은 하드웨어와 격리된 고수준 애플리케이션 개발 로직 → 14. WET 노드로 위임.
  • 분산 시스템 설계: 다수의 컴퓨팅 노드 간 협업 및 합의 알고리즘 → 07. SADS 노드로 위임.

Boundaries

  • CAES는 물리적 제약 공간(Power, Time, Area) 내에서의 **'최적 하드웨어 구동'**에 집중하며, 운영체제(03. OSSM)는 이 물리 자원을 응용 프로그램에 공정하게 **'추상화 및 배분'**하는 데 집중합니다.
  • CAES가 다루는 성능 최적화는 CPU 클럭 레벨의 마이크로초 단위에서 이루어지며, 소프트웨어 계층의 밀리초 단위 최적화(알고리즘 개선 등)와는 수준이 다릅니다.

3. Counterexample

  • 단순 C 언어 문법 학습: 임베디드 핵심은 언어 문법이 아니라 **메모리 맵 I/O(MMIO)**의 레지스터 주소를 직접 읽고 쓰는 방법과 인터럽트 레이턴시를 마이크로초 단위로 통제하는 것입니다. volatile 키워드가 왜 컴파일러 최적화를 막아야 하는지 이해하지 못한 채 레지스터를 접근하면 하드웨어 오동작을 유발합니다.
  • 쓰레드 생성이 곧 병렬성: 멀티코어 하드웨어에서 **캐시 무효화(Cache Invalidation)**와 **메모리 배리어(Memory Barrier)**에 대한 이해 없이 쓰레드만 만드는 것은 하드웨어 경쟁 상태(Race Condition)를 무시한 위험한 접근입니다. CPU가 명령어를 재배치(Out-of-Order Execution)한다는 사실을 무시하면, 고수준 언어의 락(Lock)만으로는 충분하지 않은 경우가 생깁니다.
  • GPU는 CPU보다 무조건 빠르다: GPU는 수천 개의 작은 코어를 이용한 대규모 데이터 병렬 처리에 특화되어 있으며, 분기(Branch)가 많거나 순차 의존성이 높은 작업에서는 오히려 CPU보다 느립니다. 메모리 대역폭 병목과 PCIe 전송 비용까지 고려해야 진정한 가속 효과를 얻을 수 있습니다.

4. Prerequisites

  • 디지털 논리 기초 (Basic): 게이트(AND/OR/NOT), 플립플롭(D/SR), 이진 산술 연산, 16진수/2진수 변환 능력이 필수입니다. Logisim 같은 시뮬레이터로 직접 회로를 실습하면 효과적입니다. (P1)
  • C/C++ 시스템 프로그래밍 (Recommended): 포인터 연산과 메모리 레이아웃(Code/Data/Stack/Heap 세그먼트), struct 패딩·정렬 규칙에 대한 명확한 인지 능력이 요구됩니다. K&R C 또는 C++ Primer 수준이면 충분합니다. (P2)
  • 수학 및 컴퓨팅 논리 기초 (Recommended): 불 대수(Boolean Algebra)와 이진 연산으로 하드웨어 논리를 추론할 수 있어야 합니다. (P1)
  • 운영체제 개념 (Practical): 프로세스·스레드 모델, 인터럽트·예외 처리 개념의 개괄적 이해가 있으면 HW-SW 인터페이스 설계 학습이 빨라집니다. (P1)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Digital Logic & Pipeline 논리 게이트와 유한 상태 기계(FSM) 설계부터 명령어 파이프라인 및 해저드(Hazard) 제어까지, 연산 물리 엔진을 단계적으로 구축합니다. P1
2 Memory Hierarchy & Cohesion CPU와 RAM 사이의 속도 병목을 다단계 캐시로 극복하고, 멀티코어 환경에서 캐시 일관성(MESI)과 메모리 배리어를 통한 무결성을 확보합니다. P1
3 Parallel Mechanics 멀티코어 프로세서와 SIMD 가속기를 활용하여 하드웨어 병렬 처리의 물리적 한계를 탐구하고 연산 처리량(Throughput)을 극대화합니다. P1
4 Hardware Security 칩 레벨의 부채널 공격(Side-channel)을 방어하고, 신뢰 실행 환경(TEE)을 구축하여 프로세서 아키텍처 자체의 보안 무결성을 증명합니다. P1, Security
5 HW-SW Interface & DMA 메모리 맵 I/O(MMIO)와 인터럽트, 그리고 DMA 메커니즘을 통해 커널과 하드웨어가 CPU 개입을 최소화하며 통신하는 접점을 설계합니다. P1
6 Real-Time Physics 엄격한 시간 제약(Deadline) 내에서 마이크로초 단위의 결정론적 반응성(Determinism)을 보장하는 실시간 제어 스케줄링 기법을 익힙니다. P1
7 Edge Intelligence 자원이 제한된 IoT 기기에서 네트워크 대역폭을 절약하고 지연을 줄이기 위해 데이터 발생지 근처에서 지능형 연산을 수행합니다. P1
8 Robotic Mechanics 물리 세계를 인지하는 센서와 구동하는 액추에이터 간의 피드백 제어 루프를 기반으로 자율 제어 시스템의 물리적 모델을 완성합니다. P1

6. Learning Topics

Basic

Core Topic 01: 디지털 논리와 상태 머신 설계 (Digital Logic & FSM)

  • Why to Learn: 디지털 장치의 모든 동작은 명확히 정의된 상태의 변화(Transition)로 규정되며, 이를 제어하기 위한 수리적·물리적 최소 단위이기 때문입니다. 이 개념 없이는 마이크로컨트롤러 펌웨어 디버깅이 불가능합니다.
  • What to Learn:
    • Concepts: 논리 게이트(NAND/NOR complete), 플립플롭(SR/D/JK), 클럭 동기화, 유한 상태 기계(FSM: Moore & Mealy), 메타스태빌리티(Metastability).
    • Skills: 부울 대수 최적화(Karnaugh Map), 진리표 기반 회로 합성, 타이밍 다이어그램 분석.
    • Tools: Logisim-evolution, HDL 기초(Verilog/VHDL), 오실로스코프(Oscilloscope) 기본 판독.
    • Trade-offs: 게이트 지연(Propagation Delay)과 면적(Area) 사이의 설계 타협 — 파이프라인을 더 깊게 쪼갤수록 클럭 주파수를 높일 수 있지만 해저드 처리 복잡도가 올라갑니다.
  • How to Learn:
    • 1단계: 간단한 4-bit 카운터나 인코더를 Logisim 시뮬레이터에서 설계하고 클럭 에지별 상태 전이를 직접 관찰합니다.
    • 2단계: 신호등 제어 로직과 같은 현실 문제를 Moore FSM 상태 전이도로 변환하고, 상태 수를 최소화하는 최적화를 수행합니다.
  • Implement: 특정 시퀀스 검출기 설계도 및 게이트 수준 회로도.

Core Topic 02: 명령어 파이프라인과 해저드 관리 (Instruction Pipeline & Hazards)

  • Why to Learn: 명령어 실행 과정을 세분화하고 병렬화함으로써 프로세서의 처리량(Throughput)을 비약적으로 높이는 현대 아키텍처의 정수입니다. 고성능 임베디드 코드 작성 시 컴파일러 최적화 결과를 예측하는 데도 필수입니다.
  • What to Learn:
    • Concepts: 표준 5단계 파이프라인(IF-ID-EX-MEM-WB), 데이터 해저드(RAW/WAR/WAW), 제어 해저드(Branch Misprediction), 구조적 해저드, 비순차 실행(OOO) 기초.
    • Skills: 파이프라인 스톨(Stall) 최소화 기법, 바이패싱/포워딩(Forwarding) 로직 설계, 어셈블리 명령어 재배치.
    • Tools: RISC-V/MIPS 프로세서 시뮬레이터(gem5, Spike), 역어셈블러(objdump).
    • Trade-offs: 파이프라인 깊이(Stage Depth) 증대를 통한 클럭 향상 vs 회로 복잡도·분기 예측 실패 페널티 증가.
  • How to Learn:
    • 1단계: 어셈블리 명령어가 파이프라인 단계별로 어떻게 점유되는지 시공간 차트(Pipeline Diagram)를 손으로 그립니다.
    • 2단계: 데이터 의존성이 있는 코드에서 스톨을 제거하기 위해 명령어를 재배치하고, 컴파일러 최적화 플래그(-O2) 적용 전후의 어셈블리를 비교합니다.
  • Implement: 파이프라인 스톨 유발 사례 분석 보고서 및 최적화된 어셈블리 실행 로그.

Practical

Core Topic 03: 하드웨어 연동과 DMA 제어 (Hardware Interfacing & DMA)

  • Why to Learn: CPU의 개입 없이 대량의 데이터를 수신하거나 하드웨어를 직접 제어함으로써 전체 시스템의 결정론적 반응성(Determinism)을 확보하기 위함입니다. 실시간 센서 데이터 처리, 모터 제어, 오디오 스트리밍 등 임베디드 실무의 핵심입니다.
  • What to Learn:
    • Concepts: 메모리 맵 I/O(MMIO), 인터럽트 벡터 테이블(IVT), Direct Memory Access(DMA) 메커니즘, HAL 드라이버 구조, volatile 키워드의 역할.
    • Skills: 인터럽트 우선순위 설계(NVIC), 실시간 지연 시간(Worst-Case Latency) 측정 및 보장.
    • Tools: STM32(STM32CubeIDE), Arduino(AVR/ARM), Saleae Logic Analyzer, 오실로스코프.
    • Trade-offs: 폴링(Polling)의 단순성 vs 인터럽트의 효율성 vs DMA의 고속 처리량 — CPU 사용률과 반응 지연을 기준으로 선택합니다.
  • How to Learn:
    • 1단계: MCU 보드에서 GPIO 인터럽트를 이용해 버튼 입력을 비동기적으로 처리하고, 로직 애널라이저로 인터럽트 발생부터 핸들러 진입까지의 지연을 측정합니다.
    • 2단계: DMA를 사용하여 UART/SPI 버스를 통해 CPU 대기 없이 센서 데이터를 대량 수집하고, CPU 부하 감소율을 정량적으로 측정합니다.
  • Implement: 인터럽트 우선순위가 설정된 핸들러 및 DMA 기반 고속 데이터 전송 드라이버 코드.

Advanced

Core Topic 04: 멀티코어 캐시 일관성과 동기화 (Cache Coherence & Synchronization)

  • Why to Learn: 현대의 모든 고성능 시스템은 멀티코어 구조이며, 코어 간 공유 데이터의 무결성을 깨뜨리는 하드웨어 수준의 버그를 방지하고 극한의 병렬 성능을 뽑아내기 위함입니다. 이는 소프트웨어 수준의 동기화(뮤텍스)와는 별개의 하드웨어 계층 문제입니다.
  • What to Learn:
    • Concepts: 캐시 일관성 프로토콜(MESI/MOESI), 메모리 배리어(Memory Barriers: mfence, sfence), 거짓 공유(False Sharing), 캐시 라인 크기(64B), 아토믹 연산(Compare-and-Swap).
    • Skills: 캐시 미스(L1/L2/L3) 프로파일링, 하드웨어 아토믹 연산을 활용한 Lock-free 자료구조 구현.
    • Tools: Intel VTune Profiler, Valgrind(Cachegrind), Linux perf stat.
    • Trade-offs: 강한 일관성(Strong Consistency) 유지를 위한 버스 트래픽 비용 vs 완화된 메모리 모델(Relaxed Ordering)을 통한 성능 향상 — 아키텍처마다 메모리 모델이 다름에 주의.
  • How to Learn:
    • 1단계: 같은 캐시 라인을 공유하는 두 스레드 벤치마크와 다른 라인을 사용하는 경우를 비교하여 False Sharing의 성능 영향을 수치로 확인합니다.
    • 2단계: 메모리 펜스(Fence) 명령을 삽입·제거하며 다중 코어에서 공유 데이터의 가시성(Visibility) 보장 여부를 실험합니다.
  • Implement: 캐시 라인 패딩(Padding)을 통한 False Sharing 제거 최적화 코드 및 before/after 벤치마크 결과.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Instruction Set Architecture (ISA) 하드웨어가 이해하는 유일한 언어이자 소프트웨어와 하드웨어 사이의 추상적 계약입니다. 기본 인터페이스 Microarchitecture x86 vs. ARM 특정 칩 모델(SoC) 자체와 혼동 Primary core
Pipeline Hazard, 파이프라인 해저드 이전 명령어의 실행이 완료되지 않아 다음 명령어가 실행되지 못하는 지연 상황입니다. 권장 성능 병목 Stall, Forwarding vs. Branch Misprediction 단순한 논리 버그와 혼동 Primary core
Memory Mapped I/O (MMIO) 하드웨어 장치의 레지스터를 일반 메모리 주소 공간에 매핑하여 접근하는 방식입니다. 실무 HW 제어 Peripheral vs. Port-Mapped I/O 일반 RAM 영역으로 오인하여 캐싱 활성화 Primary core
Cache Coherence, 캐시 일관성 다중 프로세서 환경에서 동일 데이터에 대한 여러 캐시 복사본들 간의 일치성을 보장하는 성질입니다. 심화 데이터 무결성 MESI Protocol vs. Consistency Model OS 수준의 뮤텍스 동기화와 동일시 함 Primary core

8. References

Primary References

Secondary References

  • [H&P] Computer Architecture: A Quantitative Approach — Hennessy & Patterson (The Bible).
  • [Nand2Tetris] The Elements of Computing Systems — Noam Nisan, Shimon Schocken.

Industry References

  • [ARM Developer] Cortex-M Technical Reference Manual — 임베디드 실무 표준 가이드.
  • [Intel 64 Architectures Software Developer’s Manual] — x86 최적화 및 보안 아키텍처 상세.

9. Final Checklist

Primary Checklist

  • 특정 ISA의 명령어 실행 과정을 단계별(Fetch-Decode-Execute)로 상세히 설명할 수 있는 있는가? (P1-AR)
  • 캐시 미스(Cache Miss)가 발생하는 원인을 식별하고 이를 소프트웨어 데이터 구조 최적화로 완화할 수 있는가? (P1-AR-MH)

Secondary Checklist

  • 어셈블리 수준의 정적 분석을 통해 파이프라인 스톨(Stall) 유발 요인을 정의하고 재배치 전략을 제시할 수 있는는가?
  • 실시간 제어 루프의 최악 사례 실행 시간(WCET)을 측정하고 시스템 제약 조건을 수치적으로 검증했는가?

Industry Checklist

  • DMA 설정을 통해 대량의 I/O 처리 시 CPU 부하를 30% 이상 절감하는 최적화 시나리오를 설계했는가?
  • 하드웨어 부채널 공격(Side-channel attacks: Spectre/Meltdown)의 원리를 이해하고 안전한 메모리 접근 패턴을 고안했는가?

Architecture Hardware

2 / 9