FPGA 구현을 위한 RISC-V CPU 설계 ① Python으로 배우는 RV32I 명령어 구조와 실행 원리
CPU를 만들겠다고 마음먹으면 대개 회로도부터 찾습니다. 그런데 도면을 펼치는 순간 답할 수 없는 질문이 생깁니다. 이 블록은 왜 여기 있어야 합니까? 레지스터를 읽는 포트는 왜 두 개입니까? 답은 모두 명령어에 있습니다. 명령어가 무엇을 요구하는지 알면 어떤 회로가 필요한지가 정해집니다. 반대 순서로는 되지 않습니다. RISC-V 강의는 이미 여럿 있습니다. 하지만 대부분 슬라이드에 값을 띄우고 "이렇게 됩니다"라고 말한 뒤 넘어갑니다. 수강생은 그 값이 맞는지 확인할 방법이 없습니다. 이 강의는 파이썬 명령어 실행 시뮬레이터를 함께 드립니다. run ADD 라고 치면 그 자리에서 기계어가 조립되고, 32비트가 필드별로 펼쳐지고, 레지스터가 어떻게 바뀌는지 화면에 나옵니다. 교재의 모든 숫자가 이 도구의 실행 결과이며, 여러분 화면에서 똑같이 재현됩니다. 상용 디버거는 라이선스가 필요하고 시뮬레이터는 설치가 벽입니다. 이 도구는 파이썬만 있으면 됩니다. 보드도, 라이선스도, 설치도 필요 없습니다. RV32I 명령어 40개를 하나도 빠뜨리지 않고 직접 실행하며, 회로가 무엇을 해야 하는지 스스로 알아내는 과정입니다.