GAIA CPU와 C 컴파일러로 Xv6 OS 포팅 성공 경험
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

우리 집에서 만든 CPU와 C 컴파일러로 Xv6 유닉스 계열 OS를 구동한 경험

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

하드웨어-소프트웨어 통합, 임베디드 시스템, 저수준 프로그래밍에 관심 있는 학생 및 개발자.

핵심 요약

  • GAIA CPU와 Ucc 컴파일러를 기반으로 Xv6 운영체제 포팅 성공
  • 인터럽트, 가상 메모리, 캐시 버그 등의 난관을 Page Coloring 기법으로 해결
  • 인터랙티브 앱(SL, Minesweeper, 2048) 및 레이 트레이싱 실행으로 교육적·기술적 성취 달성
  • 자체 설계 ISA 기반 FPGA 구현C89 컴파일러 개발 경험 제공

섹션별 세부 요약

1. 프로젝트 개요

  • 직접 설계한 RISC ISA 기반 CPU(GAIA)자체 제작 C 컴파일러(Ucc)로 Xv6 포팅 시도
  • 하드웨어 설계, 컴파일러 개발, OS 이식 모든 요소 직접 구현
  • 인터럽트, 가상 메모리, 캐시 등 핵심 기능 설계에 도전

2. 기술적 난관과 해결

  • Xv6 이식성 문제: char/int 크기 차이로 인한 포인터 연산 오류 → char을 8비트로 강제 조정
  • 캐시 알리아스 이슈: Page Coloring 기법 도입으로 해결
  • 디버깅 도구: 시뮬레이터에 분해기, 상태 덤프 도입

3. 구현 과정

  • HDL(Verilog/VHDL)로 CPU 설계 → Vivado/Quartus로 FPGA 구현
  • Primitive Linker디버그 도구 직접 개발
  • OCaml 서브셋 컴파일러레이 트레이싱 프로그램 실행까지 성공

4. 교육적 영향

  • 하드웨어-소프트웨어 통합 경험 제공
  • 알고리즘, 저수준 구조 이해 증진
  • RISC-V ISA 채택, Linux 구동 등 후속 프로젝트 확장

결론

  • Page Coloring자체 디버깅 도구 개발이 캐시 및 인터럽트 문제 해결의 핵심
  • 자체 ISA 기반 FPGA 구현C89 컴파일러 개발은 실무 시스템 설계에 직접적 적용 가능
  • "직접 만드는 것만큼 배우는 것은 없다"는 교훈을 통해 하드웨어-소프트웨어 통합의 중요성 강조