Each language version is independently generated for its own context, not a direct translation.
🏙️ 비유: CPU 와 GPU 가 사는 'ODIN'이라는 초거대 도시
우리가 만드는 것은 CPU 와 GPU 가 함께 사는 거대한 도시 (칩) 입니다.
- CPU: 도시의 행정관. 복잡한 지시와 제어 업무를 처리합니다.
- GPU: 거대한 공장. 수많은 작업을 동시에 처리하는 대량 생산 라인입니다.
- **NoC **(Network-on-Chip): 이 두 부품을 연결하는 거대한 도로망과 통신 시스템입니다.
문제점:
이 두 부품을 처음부터 함께 짓고 테스트하려니 너무 복잡합니다.
- 규모가 너무 큽니다: 도시 전체를 시뮬레이션 (가상 실험) 하려면 시간이 너무 오래 걸려서, 실제 도로가 뚫리기 전에 프로젝트가 끝날 수도 있습니다.
- 예측 불가능합니다: GPU 공장은 매순간 다른 일을 하므로, 언제 어떤 트래픽이 도로에 나올지 알 수 없습니다.
- 오류 찾기 어렵습니다: 도시 전체가 멈췄을 때, "도대체 어디서 문제가 생긴 걸까?"라고 찾기 위해 도로 전체를 뒤져야 합니다.
🎥 해결책: '리플레이 (Replay)' 엔진을 이용한 영화 촬영
이 논문은 이 난제를 해결하기 위해 **'리플레이 **(재연)라는 독특한 방법을 고안했습니다.
1. 기존 방식의 문제점 (BFM 이라는 나쁜 대본)
기존에는 CPU 와 GPU 를 연결할 때, GPU 가 어떻게 반응할지 예측하는 **'가상의 대본 (BFM)'**을 만들어서 테스트했습니다.
- 비유: 실제 배우 (GPU) 가 없는데, 대본 작가 (BFM) 가 "배우가 이렇게 연기할 거야"라고 가정을 하고 시나리오를 짭니다.
- 문제: 실제 배우 (실제 GPU 칩) 가 나와서 연기를 하면, 가상의 대본과 실제 연기가 달라서 계속 충돌이 일어납니다. 시뮬레이션용 대본과 실제 실험용 대본을 따로 만들어야 해서 관리가 매우 번거롭습니다.
2. 새로운 방식: '리플레이' (실제 촬영 필름의 재사용)
이 연구팀은 **"실제 배우의 연기를 그대로 찍어서, 나중에 그 필름을 다시 틀어주자"**라고 생각했습니다.
**1 단계: 독립적인 촬영 **(Capture)
먼저 GPU 칩 하나만 따로 떼어내서, 실제 작업을 시키며 **정확한 신호와 반응 **(파형)을 녹화합니다. 이때는 CPU 나 도시 전체가 없어도 됩니다. GPU 만이 "이렇게 일하고, 이렇게 답장했다"는 기록을 남깁니다.
- 비유: 배우가 혼자 대본을 읽으며 연기를 하고, 그 장면을 고화질로 촬영해 둡니다.
**2 단계: ROM 에 저장 **(Initialization)
이 녹화된 영상을 아주 작은 메모리 (ROM) 에 압축해서 저장해 둡니다.
- 비유: 촬영된 필름을 작은 SD 카드에 담아 둡니다.
**3 단계: 도시 건설 현장에 재연 **(Replay)
이제 CPU, GPU, 도로망 (NoC) 이 모두 모여 있는 거대한 도시 (SoC) 를 건설할 때, 이 SD 카드를 꽂아줍니다.
- 리플레이 엔진이 SD 카드에 있는 영상을 읽어와서, GPU 가 원래 하던 대로 신호를 보내고, 원래 받았던 답장을 그대로 돌려줍니다.
- 핵심: 실제 GPU 칩이 연산을 할 필요도, 복잡한 대본을 새로 쓸 필요도 없습니다. 이미 찍힌 '정답 영상'을 재생하는 것입니다.
🚀 이 방식이 가져온 놀라운 효과
시뮬레이션과 실제 실험이 하나가 됨:
- 컴퓨터로 가상 실험 (시뮬레이션) 할 때나, 실제 하드웨어 (Emulation) 에서 실험할 때나 **동일한 '녹화 필름 **(SD 카드)을 사용합니다.
- 비유: 영화 촬영장에서나, 극장에서 상영할 때나 같은 필름을 쓰므로, "장면이 안 맞는다"는 불평이 사라집니다.
**디버깅 **(오류 찾기)
- 도시 전체가 멈췄을 때, "어디서 문제가 생겼지?"라고 헤매지 않아도 됩니다. 녹화된 필름을 다시 돌려보면, "아, 이 지점에서 신호가 늦게 왔구나"라고 정확히 찾을 수 있습니다.
- 비유: 사고가 난 도로 구간을 CCTV(녹화 영상) 로 다시 보면, 사고 원인을 1 초 만에 찾을 수 있습니다.
속도와 효율:
- 복잡한 대본을 새로 쓸 필요가 없으므로, 도시를 완성하고 첫 번째 테스트를 시작하는 시간이 **한 분기 **(3 개월)로 단축되었습니다.
- CPU 와 GPU 가 완벽하게 조화되어 작동하는 것을 확인할 수 있게 되었습니다.
💡 요약
이 논문은 **"복잡한 CPU 와 GPU 칩을 통합할 때, 매번 새로운 대본을 짜는 대신, 실제 연기를 미리 찍어둔 '녹화 영상'을 다시 틀어주어 테스트하자"**는 아이디어를 제시했습니다.
이 **'리플레이 **(재연) 덕분에:
- 개발 시간이 획기적으로 줄었습니다.
- 오류를 찾을 때 헤매지 않게 되었습니다.
- CPU 와 GPU 가 완벽하게 조화되는 미래의 칩 (ODIN) 을 성공적으로 만들 수 있었습니다.
마치 복잡한 도시 교통 체증을 해결하기 위해, 실제 교통 상황을 녹화해서 신호등 시스템에 입력해 둔 것과 같은 효과를 낸 것입니다.
Each language version is independently generated for its own context, not a direct translation.
논문 요약: ODIN 기반 CPU-GPU 아키텍처를 위한 재생 (Replay) 주도 시뮬레이션 및 에뮬레이션
1. 문제 정의 (Problem Statement)
현대 AI 및 그래픽 워크로드를 처리하기 위해 CPU 와 GPU 기술의 통합은 필수적이지만, 칩릿 (Chiplet) 기반 아키텍처로 진화함에 따라 사전 실리콘 (Pre-silicon) 검증 과정에서 심각한 도전 과제가 발생하고 있습니다.
- 검증의 복잡성: CPU 서브시스템, 다수의 Xe GPU 코어, 구성 가능한 네트워크 온 칩 (NoC) 이 긴밀하게 결합된 시스템의 통합 검증은 설계 규모가 방대하고, 동시성 (Concurrency) 이 높으며, 비결정적 (Non-deterministic) 실행과 칩릿 경계에서의 복잡한 프로토콜 상호작용으로 인해 매우 어렵습니다.
- 기존 방법론의 한계:
- 전통적인 지시형 테스트 (Directed Testing): 현실적인 워크로드 하에서만 발생하는 통합 수준의 결함을 발견하기 부족합니다.
- 시뮬레이션 vs 에뮬레이션의 단절: 기존 버스 기능 모델 (BFM) 기반 흐름에서는 시뮬레이션과 에뮬레이션 간에 모델 컴파일, 구성, 실행 인프라가 달라 별도의 설계 데이터베이스를 유지해야 하며, 이로 인해 일관성 유지가 어렵고 디버깅 상관관계 (Debug correlation) 가 복잡해집니다.
- 디버깅의 비효율성: SoC 레벨의 실패 원인을 특정 IP 로 추적하는 데 많은 시간과 자원이 소모됩니다. 특히 GPU 는 메모리 트래픽에 의존적이므로 메모리 계층 구조와 프로토콜 순서 검증이 까다롭습니다.
2. 제안된 방법론 (Methodology)
이 논문은 재생 주도 검증 (Replay-Driven Validation) 방법론을 제시하며, 시뮬레이션과 에뮬레이션 환경에서 단일 설계 데이터베이스를 사용하여 결정론적 (Deterministic) 인 파형 캡처 및 재생을 가능하게 합니다.
- 재생 엔진 (Replay Engine) 아키텍처:
- 캡처: 독립적인 GPU IP 검증 단계에서 GPU IP 주변부 (Periphery) 의 타이밍 정확도 파형 (데이터, 제어, 응답 신호) 을 캡처합니다.
- 변환 및 저장: 캡처된 파형을 오프라인 후처리하여 사이클 순서 비트 표현으로 변환하고, 이를 ROM 기반 저장 구조로 인코딩합니다. 이 과정은 자극 (Stimulus) 과 응답 (Response) 정보를 모두 포함합니다.
- 재생: SoC 통합 단계에서 이 ROM 데이터를 읽어와 GPU 의 부팅 및 워크로드 실행에 필요한 프로토콜 상호작용을 결정론적으로 재생성합니다.
- 핵심 특징:
- BFM 불필요: 실시간 BFM 이나 외부 자극 생성기가 필요 없으며, 캡처된 파형 자체가 응답 에이전트 역할을 대신합니다.
- 단일 데이터베이스: 시뮬레이션과 에뮬레이션 모두 동일한 재생 아티팩트를 사용하여 환경 간 일관성을 보장합니다.
- 비침습적 (Non-invasive): GPU 내부에 침입적인 계측을 추가하지 않고, 명확한 서브시스템 경계에서 작동합니다.
3. 주요 기여 (Key Contributions)
- 통합 검증 가속화: 별도의 BFM 개발 및 유지보수 오버헤드를 제거하여 SoC 부팅 및 첫 번째 의미 있는 시스템 레벨 테스트 실행을 크게 단축했습니다.
- 시뮬레이션 - 에뮬레이션 간 일관성: 단일 재생 아티팩트를 공유함으로써 두 환경 간의 불일치를 해소하고, 에뮬레이션에서 발견된 문제를 시뮬레이션으로 정확히 재현하여 디버깅 효율성을 극대화했습니다.
- 확장 가능한 검증 프레임워크: ODIN 칩릿 아키텍처와 같은 복잡한 이종 시스템 (Heterogeneous Systems) 에 적용 가능한 확장 가능한 검증 방법론을 확립했습니다.
- 디버깅 효율성 향상: 결정론적 재생을 통해 시스템 레벨 실패를 특정 IP 인터페이스로 빠르게 추적 (Root-cause) 할 수 있게 되었습니다.
4. 결과 (Results)
- 성공적인 통합: 재생 주도 방법론을 통해 CPU, GPU, NoC 가 통합된 SoC 의 엔드 - 투 - 엔드 시스템 부팅 및 GPU 워크로드 실행을 1 분기 (Quarter) 이내에 달성했습니다.
- 에뮬레이션 성능: EP1 에뮬레이션 하드웨어 플랫폼 (16 보드, 64 FPGA 구성) 에서 전체 칩 설계를 매핑하여 실행했습니다.
- 자원 사용량 (LUT, RAM, URAM, REG) 이 플랫폼 용량 내에 적절히 분배되었으며, 디버깅 및 인프라 로직을 위한 여유 공간이 확보되었습니다.
- 시뮬레이션에서는 상세한 파형 가시성을, 에뮬레이션에서는 고속 실행을 통해 긴 시스템 워크로드를 검증했습니다.
- 검증 학습 (Key Learnings):
- 결정론적 파형 캡처가 시뮬레이션과 에뮬레이션 간 신뢰할 수 있는 재생의 핵심이었습니다.
- 내부 클로킹 로직의 전체 캡처 대신 클록 생성 기반 재생을 사용하여 ROM 풋프린트를 줄였습니다.
- 메타안정성 (Metastability) 검증을 위해 사용되던 플립플롭 무작위화 (Randomization) 를 비활성화하여 재생에 적합한 결정론적 행동을 확보했습니다.
5. 의의 (Significance)
이 연구는 CPU-GPU 긴밀 결합 시스템과 칩릿 아키텍처의 복잡성을 해결하기 위한 실용적인 검증 프레임워크를 제시합니다.
- 기존 방식의 대체: BFM 기반의 분리된 데이터베이스 유지 및 높은 통합 오버헤드 문제를 해결하여, 현대적인 SoC 설계 흐름에 더 적합하고 확장 가능한 접근법을 제공합니다.
- 신뢰성 확보: 결정론적 재생을 통해 시스템 레벨의 실패를 재현하고 특정 인터페이스로 원인을 규명함으로써, 사전 실리콘 검증의 신뢰도를 높이고 제품 출시 시간을 단축하는 데 기여합니다.
- 미래 지향성: ODIN 과 같은 차세대 칩릿 아키텍처가 보편화됨에 따라, 서브시스템 및 칩릿 경계에서의 정확한 인터페이스 검증을 위한 표준적인 방법론으로 자리 잡을 것으로 기대됩니다.