VLIW(Very Long Instruction Word) 아키텍처는 한때 병렬 처리의 미래로 주목받았다. 단일 명령어에 여러 연산을 담아 하드웨어 복잡성을 줄이고, 컴파일러가 병렬성을 책임지는 구조는 매력적이었다. 그러나 시장은 결국 슈퍼스칼라와 SIMD의 손을 들어줬다. 지금 이 논문을 다시 들여다보는 이유는 단순한 역사적 관심이 아니다. VLIW가 실패한 것이 아니라, 우리가 그 실패로부터 무엇을 배울 수 있는지를 묻기 위해서다.
Bulldog 컴파일러는 1980년대 후반 예일대에서 개발된 VLIW 전용 컴파일러로, 당시로서는 혁신적인 접근을 시도했다. 가장 인상적인 부분은 ‘트레이스 스케줄링(trace scheduling)’이라는 개념이다. 기본 블록을 넘어 프로그램의 실행 흐름을 예측하고, 그 흐름에 맞춰 명령어를 재배치하는 방식은 오늘날의 예측 실행이나 추측적 최적화와도 통하는 면이 있다. Bulldog는 컴파일러가 하드웨어의 병렬성을 최대한 활용하도록 설계된 도구였지만, 그 한계도 명확했다.
VLIW의 가장 큰 문제는 ‘하드웨어가 아닌 소프트웨어가 병렬성을 책임져야 한다’는 점이었다. 이는 컴파일러 기술의 한계를 그대로 노출시켰다. Bulldog는 정적 분석에 의존했지만, 동적 실행 패턴을 예측하는 것은 당시 기술로는 불가능에 가까웠다.
이 논문을 읽으면서 드는 생각은, VLIW가 실패한 이유가 기술적 한계라기보다 ‘시장의 선택’이었다는 점이다. 슈퍼스칼라 아키텍처는 하드웨어가 동적으로 병렬성을 관리하기 때문에 개발자에게 더 친숙했다. 반면 VLIW는 컴파일러의 최적화 능력에 모든 것을 걸어야 했고, 이는 개발자 생태계를 구축하는 데 큰 장벽이 되었다. Bulldog가 증명하듯, 기술적으로는 가능했지만 상용화에는 이르지 못했다.
하지만 VLIW의 아이디어는 완전히 사라지지 않았다. 인텔의 Itanium(IA-64)이 대표적인 사례지만, 이마저도 시장에서 외면당했다. 최근에는 GPU나 TPU 같은 도메인 특화 아키텍처에서 VLIW의 정신을 일부 계승하고 있다. 특히 머신러닝 가속기에서는 정적 스케줄링의 효율성이 재조명되고 있다. Bulldog의 트레이스 스케줄링은 오늘날의 ML 컴파일러에서도 비슷한 방식으로 활용된다.
VLIW가 남긴 교훈은 명확하다. 기술은 그 자체로 완성되어도, 생태계와 시장의 수용 여부가 결정적이라는 점이다. Bulldog는 컴파일러 기술의 가능성을 보여주었지만, 하드웨어와 소프트웨어의 균형이 맞지 않으면 성공할 수 없다는 것을 증명했다. 어쩌면 우리는 지금, VLIW가 실패한 이유보다 그 실패가 남긴 빈틈을 어떻게 채울지를 고민해야 할 때다.
이 논문은 단순한 기술 문서가 아니다. 컴퓨팅 아키텍처의 패러다임 전환을 고민하게 만드는 기록이다. VLIW가 다시 주목받을 일은 없을지 모른다. 하지만 그 아이디어가 남긴 질문은 여전히 유효하다. Bulldog: A compiler for VLIW architectures에서 그 질문을 다시 만나볼 수 있다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.