GPU를 직접 설계하며 배우는 인터랙티브 게임 ‘Mvidia’
(jaso1024.com)- 트랜지스터에서 GPU까지의 전체 컴퓨팅 스택을 단계별로 구축하며 학습하는 시뮬레이션형 게임
- 각 단계는 ACT로 구성되어, 트랜지스터·논리 게이트·ALU·프로세서·GPU·셰이더 순으로 발전
- ACT 1에서는 NMOS·PMOS를 이용한 기본 논리 게이트를 만들고, ACT 2에서는 이를 확장해 ALU와 프로세서 코어를 완성
- 이후 단계인 소프트웨어·GPU·셰이더 파트는 현재 COMING SOON 상태로 개발 중
- 하드웨어 설계와 프로그래밍을 통합적으로 체험할 수 있는 교육용 인터랙티브 프로젝트임
Mvidia 게임 개요
- Mvidia는 사용자가 GPU를 직접 설계하고 구축하는 과정을 단계별로 체험하는 인터랙티브 학습형 게임
- 게임은 트랜지스터에서 시작해 논리 게이트, ALU, 프로세서, GPU로 발전하는 구조
- 각 단계는 ‘ACT’로 구분되며, 각 ACT는 여러 학습 및 구현 과제로 구성
- 진행 상황은 완료율(예: 0/10 COMPLETED) 형태로 표시되어 학습 진척도를 시각적으로 확인 가능
ACT 1: 첫날 (YOUR FIRST DAY)
- 주제는 Transistors → Logic Gates, 트랜지스터를 이용해 기본 논리 게이트를 구성하는 단계
- 주요 과제 구성
- 1.1 The Switch: NMOS를 스위치로 사용
- 1.2 The Other Switch: PMOS를 스위치로 사용
- 1.3 Two Halves: NMOS와 PMOS 결합
- 1.4 NAND It: NAND 게이트 구성
- 1.5 The Dual: 논리 게이트 쌍 구성
- 1.6 Truth Tables: 진리표 작성
- 1.7 AND Gate, 1.8 OR Gate, 1.9 XOR Gate: 기본 게이트 구현
- 1.10 Choose Wisely: 세 게이트를 조합해 선택 구조 완성
- ACT 1 완료 시 ACT 2: THE CORE가 해금됨
ACT 2: 코어 (THE CORE)
- 주제는 Gates → ALU → Processor, 논리 게이트를 이용해 산술논리장치(ALU)와 프로세서를 구성하는 단계
- 총 34개의 세부 과제로 구성되며, 각 과제는 이전 단계의 결과물을 기반으로 진행
- 주요 단계
- 2.1 Half Adder, 2.5 Full Adder: 덧셈 회로 구성
- 2.3 The Decoder, 2.25 Register File: 데이터 선택 및 저장 구조 설계
- 2.4 The Capacitor, 2.7 1T1C, 2.12 The Sense Amp, 2.17 The Array: 메모리 셀 및 감지 증폭기 구성
- 2.10 Adding Bytes, 2.13 Hex Racer, 2.15 Bit Twiddling: 바이트 단위 연산 확장
- 2.20 Edge Trigger, 2.21 Refresh, 2.31 Refresh Controller: 클록 및 메모리 갱신 제어
- 2.27 The ALU, 2.30 Fetch, Decode, Execute, 2.32 The Mvidia Core: 프로세서 핵심 구조 완성
- 2.33 DRAM Memory, 2.34 Mvidia Core v2: DRAM 기반 확장 및 코어 업그레이드
- ACT 2 완료 시 ACT 3: THE SOFTWARE가 해금됨
ACT 3: 소프트웨어 (THE SOFTWARE)
- 주제는 Programming the Processor, 완성된 프로세서를 프로그래밍하는 단계
- 현재 COMING SOON 상태로, 구체적 과제 내용은 미공개
ACT 4: GPU (THE GPU)
- 주제는 Building a Graphics Processor, 그래픽 처리 장치를 구성하는 단계
- 현재 COMING SOON 상태로, 향후 GPU 구조 설계 관련 과제가 추가될 예정
ACT 5: 셰이더 (THE SHADER)
- 주제는 Programming the GPU, GPU를 이용한 셰이더 프로그래밍 단계
- 현재 COMING SOON, 추후 GPU 프로그래밍 학습 콘텐츠로 확장 예정
Hacker News 의견들
-
정말 멋진 프로젝트임
다만 truth tables 단계에서 중복된 문제가 많았고 첫 문제는 시간 제한이 1초뿐이었음
커패시터 부분도 혼란스러웠음. 커패시터에는 ‘enable’ 게이트가 없는데, 2.7(1T1C)에서는 트랜지스터로 직접 만들어야 함
그런데 지금은 이미 primitive에 enable 게이트가 있어서 NMOS 게이트가 필요 없게 되어 있음
혹시 LLM 도움을 받아 만든 것인지 궁금함. 특히 UI를 이렇게 잘 만든 워크플로우가 인상적이었음- 커패시터 버그는 못 봤는데, 2.4 단계에 enable 게이트를 추가했음. 시뮬레이션 시스템 구조상 필요했음
커패시터 구현은 처음부터 좀 고민이 많았음. 완전한 커패시터 모델을 시뮬레이션 시스템에 맞게 만들기 어려웠음
truth tables 버그는 수정 예정임. 별점은 endless mode에서 플레이해야 얻을 수 있음
개발 과정에서 Claude를 많이 사용했음. 배선과 시뮬레이션 부분은 힘들었지만 그래픽은 세세하게 지시해서 완성했음 - truth tables 순서가 거꾸로임. 먼저 개념을 배우고 나서 퀴즈를 봐야 하는데, 지금은 반대임
NAND, NOR, Inverter 정의를 퀴즈 이후에 배우게 되어 있음. 순서를 바꾸면 좋겠음
또 타이머가 너무 짧음. 문제를 다 아는 나도 시간 내에 입력하기 힘들었음. 아예 타이머를 없애는 것도 고려할 만함
- 커패시터 버그는 못 봤는데, 2.4 단계에 enable 게이트를 추가했음. 시뮬레이션 시스템 구조상 필요했음
-
이 게임이 마음에 든다면 Turing Complete도 추천함
마지막에는 자신만의 CPU와 어셈블리 언어를 만들 수 있음. 다만 아직 Early Access 상태로 오래 멈춰 있음- 나도 이 게임을 정말 좋아함. 혹시 개발자들이 아직 활동 중인지 아는 사람 있음?
-
10년 넘게 mixed-signal IC를 설계했는데 첫 레벨도 통과 못 했음
NMOS를 입력이 1일 때 출력이 0으로, 0일 때는 Z 상태로 만들라는 문제였음
드레인은 출력에, 소스는 GND에, 게이트는 입력에 연결해야 함
그런데 테스트 절반이 실패했음. 나중에 보니 배경의 회색 굵은 선이 와이어처럼 보여서 착각했음. 직접 연결선을 추가해야 함- 나도 관련 경험 전혀 없는데 똑같이 실패했음
- 배경색이 와이어처럼 보여서 그런 것 같음. 색상 테마를 바꿔서 수정하겠음
- 혹시 지금은 소프트웨어 쪽으로 전향한 건지 궁금함
-
피드백 몇 가지 있음
아이디어는 좋지만 Turing Complete를 해본 입장에서는 초반 단계를 건너뛰고 GPU 특화 부분으로 가고 싶었음
NAND를 트랜지스터로 직관적으로 이해하기 어려워서 난이도 벽이 느껴졌음
난이도 편차가 크지만 easy 모드는 괜찮았음
커패시터 리프레시 단계는 너무 빨라서 키보드 입력이 따라가지 못했음
배선이 복잡해지면 가독성이 급격히 떨어지고, 색상 구분이나 수동 경로 지정이 안 되는 점이 불편했음
Firefox에서는 연결점 선택이 잘 안 됐고, 마우스 가장자리 드래그로 화면 이동(pan) 이 가능했으면 좋겠음
“show solution”은 실제 해답보다는 힌트 수준임. 테스트 케이스를 더 보여주는 옵션이 있으면 좋겠음 -
정말 멋진 아이디어임
하지만 기본 지식이 부족해서 튜토리얼 메시지를 이해하지 못했고 첫 레벨부터 막혔음- 피드백 고마움. 원래 Act 0에서 PMOS/NMOS의 기본 물리와 원리를 설명했는데, UI가 마음에 안 들어서 삭제했음. 다시 추가할 예정임
- 나도 같은 상황이었음. Turing Complete와 Zachtronics 게임들을 좋아하지만 3-state 로직은 처음 봤음
레벨 3의 NOT 게이트도 아직 감이 안 옴. 그래도 이런 3-state 회로 퍼즐은 처음이라 신선함. 귀여운 스토리만 얹으면 Steam에서도 통할 듯함
-
좋은 아이디어라서 HN Arcade에 추가했음
- 고마움!
-
“10번 시도했는데 안 되면 정답을 보여주는 버튼”이 필요함
그래야 문제 자체가 깨졌는지, 내가 틀린 건지 구분할 수 있음- 좋은 제안임. 다음 업데이트에 추가하겠음. 그동안은 copy circuit 버튼으로 회로를 복사해 GPT에게 검증받을 수도 있음. 혹시 몇 번째 레벨인지 알려줄 수 있음?
-
출력 테스트용 임시 노드가 있었으면 좋겠음
더 나아가면, 테스트 실행 없이 truth table이 실시간으로 갱신되면 학습에 도움이 될 것 같음 -
학습용으로는 약어(nmos, pmos, gnd, vdd) 를 한 번쯤 풀어서 설명해주면 좋겠음
인터페이스는 깔끔하고 교육용 틈새를 잘 채움- 정보 박스에 추가하면 언제든 클릭으로 볼 수 있을 듯함
다만 약어를 풀어도 직관적이지 않아서 큰 도움은 아닐 수도 있음 - 원래 Arc 0에서 이런 기본 개념을 자세히 다뤘는데, UI 문제로 삭제했음
임시 수정은 했지만, polished 버전으로 다시 추가할 예정임. 선택적으로 볼 수 있게 만들겠음
- 정보 박스에 추가하면 언제든 클릭으로 볼 수 있을 듯함
-
훌륭한 게임임. 학습용으로 각 레벨을 클리어한 뒤 모범 해답이나 해설을 볼 수 있으면 좋겠음
- 그 기능을 추가할 계획임. Gemini가 회로 구성을 분석해서 의견을 주고, 동적 힌트도 함께 제공할 예정임