드미트리 그린버그(Dmitry Grinberg)가 '그들은 더 잘 알았어야 했다(They Should Have Known Better)'라는 제목으로 RISC-V를 비판하는 긴 글을 발표했다. 이 글은 해커뉴스 첫 페이지에 올랐고 로버스터스에서도 논쟁을 불러일으켰다. 압축 명령어의 스토어 오프셋이 이상하다거나, Zicsr를 별도 확장으로 따로 요청해야 한다는 지적처럼 실제로 RV32E급 저가 칩을 다뤄본 사람이라면 공감할 만한 대목이 적지 않다. 그러나 이 반론을 쓴 트리니다드 토바고의 임베디드 엔지니어는 그린버그의 결론이 특정한 위치에서만 성립하는 편향된 시각이라고 본다. 그리고 그 '위치'가 이 논쟁의 핵심이라고 주장한다.
부품이 책상에 도착하는 문제
필자는 베네수엘라 앞바다의 작은 섬나라에서 일한다. 개발 보드를 하나 사려면 다음날 배송 버튼을 누르는 것이 아니라, 판매자가 이곳으로 발송이나 하는지, 통관에서 어떻게 될지, 최종 금액이 얼마인지를 따져야 한다. 다른 지역에서는 무료 배송되는 1달러짜리 칩 하나를 받는 데 그는 60~200달러의 배송비를 낸다. 한 유명 PCB 업체는 후원을 검토하다가 오직 배송지 문제만으로 거절했다고 한다. 이 관점에서 10센트 부품과 1달러 부품의 차이는 반올림 오차가 아니다. 그것은 서른 명의 학생이 각자 칩을 하나씩 손에 쥐는 수업과, 있으면 다행인 데모 보드 하나를 함께 바라보는 수업의 차이다. 명령어 집합의 우아함은 하드웨어가 이미 책상 위에 있을 때 따질 수 있는 문제이고, 하드웨어가 애초에 도달할 수 있느냐가 먼저다. 그는 대부분의 독자가 스크롤로 넘긴 그 문단이 글 전체에서 가장 중요하다고 말한다. RISC-V가 미국과 유럽 바깥의 나머지 99%에게 만들어준 공간, 이것은 아키텍처 문제가 아니라는 것이다.
저가 코어의 요건을 직접 유도한 비판자
흥미로운 것은 그린버그 자신이 저가 마이크로컨트롤러 코어가 무엇을 위한 것인지 원리부터 따져본 대목이다. 그의 답은 이런 코어가 MP3 플레이어, SD카드, USB 스틱 같은 더 큰 칩 안에서 레지스터를 건드리고 하드웨어 블록을 설정하는 역할을 한다는 것이다. 진짜 연산은 주변의 맞춤형 실리콘이 한다. 여기서 그는 필요 요건을 도출한다. 낮은 인터럽트 지연, 작은 다이 면적, 좋은 코드 밀도, 하드웨어 나눗셈기 불필요, 곱셈기조차 없어도 될 수 있음, 신뢰할 수 없는 코드가 돌지 않으니 특권 분리도 불필요. 필자의 지적은 통렬하다. 그것은 정확히 RV32IC(혹은 RV32EC)를 묘사한 것이며, 곧 10센트짜리 칩이 구현하는 명령어 집합이다. 이 달의 가장 신뢰받는 RISC-V 비판자가 저가 코어의 이상형을 유도했더니 결국 RISC-V가 그 시장을 가져갈 것이라고 스스로 인정한 셈이다. 그는 칩의 존재 근거를 도출한 뒤, 나머지 글에서 그 칩이 존재한다는 사실에 짜증을 낸다.
하나의 ISA가 양극단을 못 섬긴다는 주장
그린버그의 중심 주장은 고성능 CPU가 필요로 하는 것과 저가 절감형 코어가 필요로 하는 것이 정반대라는 것이다. 따라서 단일 ISA가 양쪽을 모두 섬길 수 없고, RISC-V 팬들은 스스로를 속이고 있다는 결론이다. 필자는 전제 자체는 참이지만 결론이 따라 나오지 않는다고 반박하며 책상 위의 부품 세 가지를 제시한다. CH32V003는 레지스터 16개, 곱셈기·나눗셈기 없음, 머신 모드만 지원, SRAM 2KB, 플래시 16KB, 10센트짜리로 그린버그가 명세한 코어 바로 그것이다. 필자는 이것으로 ToF 센서가 달린 쓰레기통 모니터와 농업용 도어 제어 제품을 출시했다. 반대편 끝에는 CH32H417이 있다. 400MHz의 QingKe V5F와 144MHz V3F 듀얼 코어, SRAM 896KB, 플래시 960KB, 5Gbps 트랜시버가 통합된 USB 3.2 Gen1, 100M 이더넷 MAC·PHY, SerDes 아이솔레이티드 트랜시버, 카메라 인터페이스, 디스플레이 컨트롤러, 그래픽 가속기를 갖췄고, 필자는 여기서 리눅스 없이 웹 브라우저와 150KB 미만 램으로 실시간 얼굴 인식을 돌렸다. 세 번째는 22nm 공정의 VexRISC-V 기반 Baochip으로, MMU를 갖추고 러스트 마이크로커널 Xous, seL4, 리눅스를 지원하며 특권 분리와 실제 프로세스 격리를 제공한다. 그린버그가 저가 영역에는 필요 없다던 바로 그 기능이다. 이 칩은 올해 DEFCON 34 배지에 들어갔고 필자가 베어메탈 C SDK를 작성했다.
전이 가능한 기술, 그리고 라이선스의 벽
필자가 이 목록을 늘어놓는 이유는 하나다. 이 부품들이 모두 같은 기반 명령어 집합을 공유한다는 것이다. 그는 배송비 포함 100달러 미만으로, 데이터센터 컴퓨트를 제외한 일회용 실리콘부터 PC급까지 하나의 아키텍처로 수직 스택 전체를 1년도 안 되어 탐색했다. 7달러로 디버거 포함 CH32V003 50개, 20달러짜리 H417 보드, 9.5달러짜리 Dabao 보드가 그 구성이다. 같은 디버거가 저가 칩과 고가 칩에 함께 쓰인다. ARM 부품용 세그거 J-Link 하나가 약 600달러, EDU 에디션조차 배송 포함 200달러에 칩은 하나도 딸려오지 않는 것과 대비된다. 기반 집합이 같으니 레지스터 모델, 호출 규약, 툴체인이 같고, 10센트 칩에서 어셈블리를 배우며 익힌 것이 듀얼 코어 MCU에서도, 리눅스 SBC에서도, 보안 칩에서도 그대로 통했다. 필요한 것은 ISA 매뉴얼과 C 컴파일러뿐이었다.
ARM 쪽에서 같은 여정을 밟으면 이야기가 달라진다. CH32V003에 해당하는 것은 ARMv6-M의 Cortex-M0급, 그 위는 ARMv7-M의 Cortex-M7, MMU를 얻어 리눅스나 seL4를 돌리려면 ARMv8-A 애플리케이션 프로세서로 넘어가야 한다. 이들은 서로 다른 ARM 프로파일이라 특권·예외·시스템 모델이 크게 다르고, 스택을 올라갈수록 단순히 RISC-V 확장 하나를 켜는 것보다 훨씬 많은 재학습이 필요하다. 성능 상단의 격차는 학습 곡선을 넘어선다. USB 3.0 슈퍼스피드 PHY를 통합한 Cortex-M 마이크로컨트롤러는 존재하지 않는다. 필요하면 i.MX 8이나 RK3xxx 같은 Cortex-A 급으로, 즉 MMU와 DDR와 PMIC가 딸린 다른 계층으로 넘어가야 한다. H417 평가 보드가 20달러 안팎인 반면, 가장 가까운 듀얼 코어 ARM 부품인 STM32H747은 그런 PHY도 없고 TFBGA240 패키지는 20주 리드타임에 주문 시 신원 확인을 요구하기도 한다.
필자가 그린버그의 프레임을 가장 정면으로 무너뜨리는 지점은 여기다. 그린버그는 작은 코어와 큰 코어 사이의 간극을 상반된 요건에서 필연적으로 나오는 '아키텍처적 사실'로 취급한다. 그러나 ARM에서 그 간극은 아키텍처적 사실이 아니라 라이선스로 강제되는 '제품 경계'다. 가상 메모리를 원하면 다른 코어 계열, 다른 프로파일, 다른 협상, 다른 로열티가 걸린 Cortex-A를 라이선스해야 한다. 점진적 경로는 없고, 벽이 있으며, 그 반대편에는 영업팀이 있다. RISC-V의 차이는 물리적 트레이드오프가 사라졌다는 것이 아니라, ISA 소유자가 그 경계를 어디에 그을지를 사용자 대신 결정하지 않는다는 데 있다. 명령어 인코딩을 둘러싼 논쟁이 흥미롭더라도, 부품이 어느 쪽이든 이미 선반 위에 있다는 사실은 무엇으로 배울지를 정하는 사람에게 아무런 영향을 주지 않는다는 것이 필자의 결론이다.