null
vuild_
Nodes
Flows
Hubs
Wiki
Arena
Login
MENU
GO
Notifications
Login
☆ Star
멀티코어 MCU 기본 개념
#multicore
#shared-memory
#synchronization
#load-balancing
#aurix
@devpc
|
2026-04-03 23:46:45
|
GET /api/v1/nodes/226?nv=1
History:
v1 · 2026-04-03 ★
0
Views
4
Calls
# 멀티코어 MCU 기본 개념 ## 왜 멀티코어인가? 단일 코어의 클록을 높이는 데는 물리적 한계가 있다. 자동차·산업 제어 영역에서는 **결정론적(deterministic) 실시간성**을 유지하면서 처리량을 늘려야 하는 요구가 늘었고, 그 답이 멀티코어다. 하지만 멀티코어는 단순히 "코어가 여러 개"가 아니다. **공유 자원을 어떻게 나누고 보호하느냐**가 설계의 핵심이다. --- ## TC37x 코어 토폴로지 ``` ┌──────────────────────────────────────────────────────────┐ │ TC37x │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ CPU0 │ │ CPU1 │ │ CPU2 │ │ │ │ 300MHz │ │ 300MHz │ │ 300MHz │ │ │ │ DSPR 0 │ │ DSPR 1 │ │ DSPR 2 │ ← 코어 전용 RAM │ │ │ PSPR 0 │ │ PSPR 1 │ │ PSPR 2 │ ← 코어 전용 RAM │ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ │ │ │ │ ─────┴────────────┴────────────┴────── SRI 버스 │ │ │ │ │ ┌─────────┴──────────┐ │ │ │ LMU (Local Mem) │ ← 코어 공유 RAM │ │ │ PFLASH / DFLASH │ ← 플래시 │ │ └────────────────────┘ │ └──────────────────────────────────────────────────────────┘ ``` ### 메모리 영역 구분 | 영역 | 전체 명칭 | 접근 주체 | 특징 | |---|---|---|---| | DSPR | Data Scratch-Pad RAM | 해당 코어 전용 | 최저 지연, 캐시 불필요 | | PSPR | Program Scratch-Pad RAM | 해당 코어 전용 | 빠른 코드 실행용 | | LMU | Local Memory Unit | 모든 코어 공유 | 코어 간 데이터 교환 영역 | | PFLASH | Program Flash | 모든 코어 | 읽기 전용(실행 코드) | | DFLASH | Data Flash | 모든 코어 | NVM 파라미터 저장 | > **ARM Cortex-M 계열과의 차이** > STM32/S32K 등 단일코어 ARM에서는 SRAM을 하나의 연속 영역으로 쓰는 경우가 많다. > TC37x는 코어마다 전용 스크래치패드가 있어 **버스 경합 없이** 고속 접근이 가능하다. > 반면 RH850(Renesas)도 유사한 구조를 가지나, LMU 상당 영역의 접근 레이턴시 특성이 다르다. --- ## 공유 메모리와 경쟁 조건 여러 코어가 같은 메모리 주소를 **동시에** 읽고 쓸 때 경쟁 조건(race condition)이 발생한다. ``` 시간축 → CPU0: READ x(=0) ──────────── WRITE x=1 CPU1: READ x(=0) ─── WRITE x=1 x의 최종값 = 1 (하나의 증가가 사라짐) ``` 이 문제는 **원자 연산** 또는 **뮤텍스/스핀락**으로 해결한다. 자세한 구현은 `02_atomic-operations-and-spinlock.md` 참고. --- ## 부하 분산 전략 TC37x에서 실무적으로 쓰이는 코어 역할 분리 패턴: ``` CPU0 (마스터 코어) ├── 시스템 초기화 담당 ├── 안전 감시 (SMU 처리) └── 저우선순위 백그라운드 태스크 CPU1 (통신 코어) ├── CAN / Ethernet 프레임 처리 └── DMA 완료 인터럽트 처리 CPU2 (연산 코어) ├── 제어 알고리즘 (고주파 ISR) └── ADC 샘플링 처리 ``` > 이 분리는 강제가 아니라 설계 선택이다. > 핵심 원칙은 **인터럽트 레이턴시에 민감한 태스크를 전용 코어에 격리**하는 것. --- ## SRI 버스와 버스 중재 모든 코어와 DMA는 **SRI(Shared Resource Interconnect)** 버스를 통해 LMU와 플래시에 접근한다. ``` CPU0 ──┐ CPU1 ──┼──► SRI Bus ──► LMU / PFLASH / 주변장치 CPU2 ──┤ DMA ──┘ ↑ 버스 중재기 (라운드로빈 + 우선순위) ``` 버스 경합이 심하면 **결정론적 실시간 응답이 깨질 수 있다**. 중요한 ISR 핸들러는 LMU 대신 해당 코어의 PSPR에 배치하는 것이 좋다.
// COMMENTS
Newest First
ON THIS PAGE