VLIW
1. 개요
1980년 전후로 예일대에 재학 중이던 조셉 피셔(Joseph Fisher)가 박사학위 취득을 위해 발표한 CPU 명령어 처리 기법으로 Very long instruction word의 약자이다.
2. 상세
병렬화된 컴퓨팅 기술에 관한 개념은 무려 1946년 앨런 튜링 등의 학자들이 연구한 수평적 프로그래밍 개념으로부터 기원한다. 명령어를 일반적인 튜링 머신처럼 선형으로 처리하는 것보다 서로간에 종속성이 없는 명령어들을 한꺼번에 처리하면 더욱 효율적일 것이라는 아이디어를 시작으로 명령 처리의 병렬화에 관한 연구가 이루어졌고 그 결과 중 하나가 VLIW다.
즉 CISC 방식의 복잡한 명령어를 내부적으로 쪼개어 일정한 명령어 크기를 갖도록 가공해 명령어 처리의 효율성을 높이는 것이 RISC라면 VLIW는 그냥 처음부터 디코드 유닛에 한꺼번에 종속성이 없는 여러 명령어를 때려박고 그걸 한번에 처리하여 효율성을 높이는 방식이다. VLIW 방식의 디코딩을 하려면 처음부터 들어오는 명령어들이 어느 정도 일정한 크기와 적은 종속성을 가지고 있다고 가정하고 소프트웨어적으로 명령어를 가공해주어야 한다.
EPIC은 Explicitly Parallel Instruction Computing의 약자로, 인텔에서 개발한 VLIW의 개량형이다. VLIW의 코드는 스케줄된 파이프라인에 묶여져 있기 때문에 파이프라인의 깊이나 실행 유닛의 결합을 바꾸는 것이 불가능하거나, 바꾸기 위해서는 코드를 다시 컴파일해야 한다는 단점이 있다. EPIC은 이러한 단점을 해결했으며 레지스터 관련 기능 등이 추가되었다. 현재 사용되는 대다수의 VLIW 계열 CPU(인텔 아이테니엄 시리즈, 옐브루스 프로세서)는 EPIC을 사용하고 있다.
만일 상기한 이상적인 상태가 주어진다면 VLIW방식의 명령어 디코딩은 굉장한 명령어 처리 효율을 낼 수 있다. 그러나 하술할 단점들로 인해 1980년대~90년대를 거치며 많은 VLIW 방식으로 명령어를 처리하는 중앙처리장치들이 만들어졌음에도 대부분 혹평을 들었고 이후 하드웨어적으로 명령어 크기를 단순화하고 코드 재배치를 하여 명령어 병렬 처리를 하는 슈퍼스칼라가 나오면서 VLIW 방식의 디코딩은 일반 사용 목적용의 CPU 시장에서 사실상 사장되었다. 그러나 상황만 맞는다면 RISC나 CISC보다 훨씬 뛰어난 명령어 처리 효율을 보여주기 때문에 여전히 근근하게 명맥을 유지하고 있다.
3. 장점
- 이론적인 처리 속도는 정말 빠르다. 한번에 하나씩 처리하는 것보다는 당연히 여러개의 명령어를 한꺼번에 처리하는 것이 빠르다. VLIW 방식의 최대의 장점이다.
- 다양한 명령어 크기와 종속성 분석이 쉽지 않은 CISC 방식 명령어의 파이프라이닝보단 미리 종속성을 제거하고 크기가 일정하게 들어오는 VLIW 방식 명령어의 파이프라이닝이 더 간단할 수밖에 없다.
4. 단점
- 컴파일러 설계 난이도가 매우 높다. VLIW 방식 명령어 처리의 가장 큰 단점. VLIW 방식의 명령어 처리 기법을 효율적으로 쓰려면 애초에 Fetch되는 명령어의 크기가 일정하게 되어야 할 필요가 있다. 그러나 그렇게 하려면 컴파일러가 미리 바이너리 파일을 만들때 내부의 이진 코드의 크기를 일정하게 만들고 종속성이 최대한 줄어들도록 재배치해줘야 한다. 단순히 어셈블러를 바이너리 코드로 바꾸고 명령어 가공 및 스케쥴링을 하드웨어에 맡기기만 하면 되는 RISC, CISC 방식의 컴파일러보다 컴파일러 제작 난이도가 더 높을수 밖에 없다.
- 캐시 미스 등 명령어가 잘못 들어올 상황에 처할 경우 같이 처리하기 위해 들어왔던 다른 명령어들까지 한꺼번에 빼고 다시 명령어를 읽어들여야 해서 명령어 오류에 취약한 편이다.
- 종속성이 지나치게 높은 코드가 들어올 경우 여러개의 명령어가 들어올 것을 가정한 유닛에 한두개의 명령어만이 한번에 처리되고 나머지 공간은 NOP(명령어 없음) 상태로 채워지게 되어 의외로 효율성이 떨어질 수 있다.
5. 적용 제품
- 인텔 아이테니엄 시리즈
- 옐브루스 프로세서
- 트랜스메타의 크루소, 에피션 프로세서
- AMD의 TeraScale 셰이더 아키텍처
- Nuon 플레이어#
- Texas Instruments의 DSP들.