VLIW

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
VLIW ISA를 사용하는 대표 CPU인 아이태니엄 2의 내부 구조

VLIW(Very Long Instruction Word)는 단일한 명령어 내에 여러 개의 Opcode를 묶는 CPU 명령어 처리 기법(Instruction Set Architecture의 설계 방식)이다.

역사[편집 | 원본 편집]

일반적으로 CPU, GPU 같은 프로세서 칩에서 하나의 명령어를 연속적으로 빠르게 처리하는 것보다 적당한 수준의 처리 속도에서 최대한 동시에 많은 명령어를 병렬적으로 처리하는 것이 더 빠르다. 그래서 앨런 튜링을 시작으로 많은 초기 컴퓨터공학자들은 하드웨어를 통해 병렬 처리가 가능한 수평적 프로그래밍을 하는 방법을 강구하고 있었다. 1980년 들어 뉴욕대 출신으로 예일대 조교수로 재임 중이던 조셉 피셔는 여기서 프로세서에 직접 명령어를 넣어줄 때부터 동시에 처리할 경우(Microcode-compaction) 훨씬 더 빠른 프로세서를 만들 수 있을 것이라고 생각하여 그의 박사 후 논문에 VLIW를 처음으로 구체화시켰다. 이후 여기서 고정된 파이프라이닝의 변경이 어렵다는 단점을 완화하기 위해 인텔에서 명령어 종류 간의 파이프라이닝을 분리하는 EPIC(Explicitly Parallel Instruction Computing)을 개발하여 인텔 아이태니엄 시리즈에 적용하였고 이후 러시아의 옐브루스 프로세서 등에도 도입되면서 현대 VLIW 아키텍처는 전부 EPIC 구조를 가지고 있다.

특징[편집 | 원본 편집]

  • 위에서 서술한 대로 실제 구현된 VLIW 디코딩을 하는 프로세서 칩은 명령어가 제대로 들어온다는 전제 하에 구조적 측면에서 IPC(Instruction Per Cycle)가 폭등하여 한번에 처리 가능한 명령어 처리량이 매우 많다.
  • 명령어의 앞뒤 순서(종속성)를 미리 소프트웨어적으로 재배치한 채로 디코딩을 하기 때문에 명령어 종속성을 제거하기 위해 추가적인 하드웨어를 배치할 필요가 없고 따라서 파이프라인의 단계 수를 획기적으로 줄일 수 있다. 오른쪽 위의 아이태니엄의 파이프라인 단계를 세어 보면 가장 단순한 CPU 구조인 Fetch-Decode-Execute-Write Back 4단계 파이프라인에 상당히 가깝다는 것을 알 수 있다. 즉 이상적 CPU 구조에 가장 가까운 아키텍처를 가질 수 있다.
  • 종속성 제거를 하드웨어가 아닌 소프트웨어(보통 프로그램을 기계어로 바꿔주는 컴파일러)가 담당하기 때문에 넣어 줄 소프트웨어 명령어를 기계어로 번역하는 컴파일러의 제작 난이도가 수직 상승한다. VLIW의 최대 단점으로 아이태니엄이 실패한 이유가 바로 이것이다. 이에 더해 그 컴파일러로 컴파일한 운영체제에서 신경 써야 하는 부분이 늘어난다.
  • 명령어가 잘못 들어올 수 있는 경우 파이프라인을 통째로 비우거나 CPU의 작업을 올스톱시켜야 한다. 대표적인 경우가 캐시 미스가 발생하여 한 명령어가 메모리에서 결과를 기다리는 동안 동시에 들어온 다른 명령어가 같이 기다리는 상황, 그리고 입력에 따라 조건문 같은 분기 명령어가 다르게 작동하는 상황이 있다. 이건 CISCRISC에도 있는 단점이지만 VLIW 아키텍처에서는 동시에 들어온 다른 명령어도 다같이 운명 공동체가 되기 때문에 훨씬 치명적이다. 이 때문에 분기 예측을 도입하여도 예측 실패 시의 페널티가 너무 커서 분기 예측 같은 성능 올리는 기법을 도입하기 너무 어렵다.
  • Read-After-Write 명령어 종속성 앞에서는 VLIW 아키텍처라도 어쩔 수 없이 직렬적인 명령어 처리를 하게 되는데, 이러면 VLIW의 장점이 가려진다. 트랜스메타 크루소의 경우 전체 명령어 중 60~70% 정도만 실행 유닛을 작동시키는 유효한 명령어였고 나머지는 NOP(CPU가 아무 것도 안 하게 하는 명령어)였다고 하니 분기 예측 기법 등으로 최대한 파이프라인을 유효한 명령어로 채울 수 있는 RISC에 비해 VLIW가 확실히 불리하다.

현황[편집 | 원본 편집]

VLIW는 이론적인 최강 성능을 실제 상황에서 제대로 못 내는 컴퓨터과학계의 대표적인 사례다. 어찌 보면 고성능, 저전력, 범용성 특성을 모조리 만족시키지 못한다는 암묵적인 규칙을 VLIW도 피하지 못한다고 볼 수 있다. 압도적인 병렬처리 능력에 기반한 고성능 특성과 간단한 파이프라인 구성을 통한 트랜지스터 절약으로 저전력을 추구한 VLIW ISA를 사용하려면 명령어 간 종속성을 수동으로 제거하는 소프트웨어 프로그래밍의 난이도가 대단히 높아지기 때문에 제대로 된 소프트웨어 생태계가 등장하기 대단히 어려웠으며, 그로 인해 성능 하락과 전력 소모 증가를 감수하고 쉬운 설계와 범용성을 갖췄던 CISC, 거기에 고성능(IBM POWER 및 썬 마이크로시스템즈 SPARC 등)이나 저전력(ARM, RISC-V) 중 하나를 추가로 얻은 RISC와 비교할 때 범용 소프트웨어 확보에 불리한 상품이 나올 수밖에 없었다고 볼 수 있다.

현재 트랜스메타 크루소 프로세서인텔 아이태니엄 시리즈 같이 일반 소비자를 위해 기획했던 VLIW 아키텍처 프로세서는 가끔씩 중고 시장에 등장하는 AMD의 Terascale GPU 아키텍처를 사용한 라데온 그래픽 카드를 제외하면[1] 대부분 사장된 지 오래되었고 군사용 특수 목적 CPU인 옐브루스 프로세서나 몇몇 DSP 정도에서만 근근이 명맥을 유지하고 있다. 그리고 VLIW가 장악하지 못한 일반 소비자용 칩에는 하드웨어 단계에서 동시에 실행 가능한 명령어를 끌어오는 슈퍼스칼라 기법이 대신 도입되었다.

특히 신경망 AI 가속기와의 상성이 좋을 수 있다는 연구들도 있다.예시

  1. GPU는 CPU에 비해 분기 명령을 처리할 일이 매우 적고 여러 화소를 같은 방식으로 처리하는 등 병렬적으로 데이터를 처리할 일이 많기 때문에 드라이버 소프트웨어만 잘 만들면 VLIW의 단점이 잘 가려진다. 다만 그때의 라데온의 드라이버 소프트웨어는 별명이 까탈리스트였을 정도로 제 성능 안 나오기로 유명했지만...