왜 x86 CPU용 코드를 다시 작성하지 않는가?

지난달, 구글 보안 연구팀은 AMD의 Zen 마이크로아키텍처 기반 프로세서 마이크로코드를 수정할 수 있는 툴인 Zentool을 공개했습니다. 이는 보안 취약점임과 동시에 일부에게는 기회가 되기도 합니다. 중국의 Jiachen Project 팀원들은 AMD의 최신 Zen 기반 CPU에 대한 마이크로코드를 개발하여 해당 CPU가 RISC-V 프로그램을 네이티브로 실행하도록 하는 콘테스트를 진행하고 있습니다. 궁극적인 목표는 기존에 사용 가능한 실리콘을 활용하여 궁극적인 RISC-V CPU를 구축하는 것입니다.
x86은 약 48년 전 개발된 복잡 명령어 세트 컴퓨터(CISC) 명령어 세트 아키텍처(ISA)입니다. 그러나 현대 x86 코어는 복잡한 명령을 처리하기 위해 RISC(Reduced Instruction Set Computer) ISA를 실행하는 독점 엔진에 의존합니다. 내부 RISC ISA는 문서화되어 있지 않지만, Arm이나 RISC-V와 같은 잘 알려진 RISC ISA와 일반적으로 유사할 것으로 예상됩니다. CPU 마이크로코드는 복잡한 x86 CISC 명령을 CPU 하드웨어가 실행하는 간단한 RISC 유사 내부 명령으로 번역하는 저수준 계층(low-level layer)입니다. CPU 마이크로코드는 원래 CPU 벤더만이 수정할 수 있도록 되어 있지만, 항상 그런 것은 아니며, 놀랍게도 Zentool을 사용해 AMD의 Zen 1, 2, 3, 4 마이크로코드 일부를 변경할 수 있다는 사실이 확인되었습니다.
Jianchen Project 팀원들은 현대 프로세서(예: EPYC 9004-series)의 AMD Zen CPU 마이크로코드를 수정하여 RISC-V 바이너리 실행이 가능한 전문가를 찾고 있습니다. 이 패치 작업은 RISC-V 프로그램의 직접 실행을 가능하게 하거나, 동일 하드웨어에서 에뮬레이션을 사용하는 경우와 비교하여 런타임 속도를 크게 향상시킬 것으로 기대됩니다. 이 작업은 Coremark나 Dhrystone과 같은 벤치마크의 RISC-V 버전을 사용해 테스트되어야 합니다. 최종 제출물에는 바이너리 또는 소스 코드, 구성 파일, 의존성 및 테스트 지침이 모두 포함되어야 합니다. 마감일인 6월 6일 이전에 바이너리만 제출하는 경우, 동일한 소스 코드는 추후 풀 리퀘스트(pull request)를 통해 추가해야 합니다. 우승자는 ¥20,000 (약 $2,735)를 받게 됩니다.
AMD의 EPYC 9004-series 및 유사 프로세서는 현재 사용 가능한 RISC-V 기반 프로세서가 제공할 수 없는 수준의 성능과 코어 수를 제공하므로, EPYC에서 독점 RISC-V 프로그램을 구동하는 것은 충분히 개연성 있는 아이디어입니다. 하지만 Ycombinator 측에서는 마이크로코드가 전면 ISA를 완전히 대체하기보다는 내부 버그를 수정하도록 설계된 것이며, 마이크로코드를 완전히 재작성할 수 있을지는 불분명하다고 지적합니다.
다른 사용자는 (중략) 경연 방식에 대해 (중략) 주장을 펼쳤습니다.
(이하 생략)
(최종 결론) 경연 대회는 (중략)로 결론지어졌습니다.