매우 긴 명령어
Very long instruction wordVLIW(Very long instruction word)는 ILP(Instruction Level Parallelassism)를 이용하도록 설계된 명령 집합 아키텍처를 말합니다.종래의 중앙 처리 장치(CPU, 프로세서)에서는, 프로그램의 실행 순서를 지정할 수 있는 것이 대부분이지만, VLIW 프로세서는, 프로그램이 병렬로 실행하는 순서를 명시적으로 지정할 수 있습니다.이 설계는 일부 다른 설계에 내재된 복잡성 없이 더 높은 성능을 제공하는 것을 목적으로 합니다.
개요
프로세서의 퍼포먼스를 향상시키는 종래의 수단에는, 명령어를 서브 스텝으로 분할해, 명령어를 부분적으로 동시에 실행할 수 있도록(템플라이닝), 개별의 명령어를 프로세서의 다른 부분(슈퍼 서버 아키텍처)으로 디스패치 하는 것, 및 명령어의 실행이 포함됩니다.프로그램과는 다른 순서(오더 실행).이러한 방법은 모두 하드웨어(회로의 증가, 코스트 및 소비전력의 증가)를 복잡하게 합니다.이러한 방법이 동작하려면 프로세서가 내부적으로 모든 결정을 내려야 하기 때문입니다.이와는 대조적으로 VLIW 방식은 동시에 실행할 명령과 충돌 해결 방법에 대한 모든 결정을 제공하는 프로그램에 따라 달라집니다.실제로 이는 컴파일러(최종 프로그램을 만드는 데 사용되는 소프트웨어)가 훨씬 더 복잡해졌지만 하드웨어는 다른 많은 병렬화 수단보다 단순하다는 것을 의미합니다.
동기
모든 명령을 차례로 실행하는 프로세서(즉, 비파이프라인 스칼라 아키텍처)는 프로세서 리소스를 비효율적으로 사용하여 잠재적인 성능 저하를 초래할 수 있습니다.성능은 순차 명령의 여러 하위 단계를 동시에 실행하거나(터링된 파이프라이닝), 슈퍼스케일러 아키텍처에서처럼 여러 명령을 완전히 동시에 실행함으로써 향상될 수 있습니다.순서부여 실행이라고 불리는 프로그램에서 발생하는 명령과는 다른 순서로 명령을 실행함으로써 한층 더 개선을 도모할 수 있다.
이들 3가지 방법은 모두 하드웨어의 복잡성을 증가시킵니다.병렬로 작업을 수행하기 전에 프로세서는 명령어에 상호의존성이 없음을 확인해야 합니다.예를 들어 첫 번째 명령의 결과가 두 번째 명령의 입력으로 사용되면 동시에 실행할 수 없고 첫 번째 명령 전에 두 번째 명령을 실행할 수 없습니다.최신 프로세서가 고장나면서 하드웨어 리소스가 증가하여 명령을 스케줄하고 상호의존성을 판단합니다.
이와는 대조적으로 VLIW는 프로그램 컴파일 시 결정된 일정표에 따라 병렬로 작업을 수행합니다.동작의 실행 순서(동시에 실행할 수 있는 동작을 포함한다)를 결정하는 것은 컴파일러에 의해서 처리되기 때문에, 프로세서는 상기의 3개의 방법에 필요한 스케줄링 하드웨어를 필요로 하지 않습니다.따라서 VLIW CPU는 대부분의 슈퍼스케일러 CPU보다 하드웨어의 복잡성은 낮지만 컴파일러의 복잡성은 더 높아 더 많은 컴퓨팅을 제공합니다.
설계.
슈퍼스칼라 설계에서는 명령 집합에는 실행 단위의 수가 보이지 않습니다.각 명령은 하나의 작업만 인코딩합니다.대부분의 슈퍼스칼라 설계의 경우 명령 폭은 32비트 이하입니다.
한편, 1개의 VLIW 명령은, 디바이스의 각 실행 유닛에 대해서 적어도 1개의 조작, 복수의 조작을 부호화한다.예를 들어 VLIW 디바이스에 5개의 실행 유닛이 있는 경우 해당 디바이스의 VLIW 명령에는 5개의 조작 필드가 있으며 각 필드는 대응하는 실행 유닛에서 수행해야 할 조작을 지정합니다.이러한 조작 필드에 대응하기 위해 VLIW 명령어는 보통 최소 64비트의 폭을 가지며 아키텍처에 따라서는 훨씬 넓습니다.
예를 들어 SHARC(Super Harvard Architecture Single-Chip Computer)에 대한 지침은 다음과 같습니다.하나의 사이클로 부동소수점 곱셈, 부동소수점 가산 및 2개의 자동 증분 부하를 수행합니다.이 모든 것을 48비트 명령으로 실행할 수 있습니다.
f12 = f0 * f4, f8 = f8 + f12, f0 = dm(i0, m3), f4 = pm(i8, m9);
컴퓨터 [1]아키텍처의 초창기 이후 일부 CPU는 병렬로 동작하기 위해 여러 개의 산술 논리 유닛(ALU)을 추가했습니다.슈퍼스케일러 CPU는 런타임에 병렬로 실행할 수 있는 작업을 결정하기 위해 하드웨어를 사용하는 반면 VLIW CPU는 소프트웨어(컴파일러)를 사용하여 병렬로 실행할 수 있는 작업을 미리 결정합니다.명령 스케줄링의 복잡성이 컴파일러로 이동되기 때문에 하드웨어의 복잡성이 [clarification needed]대폭 감소됩니다.
병렬 가능한 명령의 결과가 브랜치 입력으로 사용되는 경우에도 유사한 문제가 발생합니다.대부분의 최신 CPU는 계산이 완료되기 전에 어떤 브랜치를 사용할지 추측하기 때문에 브랜치 명령을 로드하거나 (아키텍처에 따라서는) 그것들을 추측적으로 계산하기 시작합니다.CPU의 추측이 틀릴 경우 이들 명령과 그 컨텍스트를 모두 플래시하고 올바른 명령어를 로드해야 합니다.이것에 시간이 걸립니다.
이로 인해 정확한 추측을 시도하는 명령어 디스패치 로직이 점점 더 복잡해지고 원래의 RISC(Reduced Instruction Set Computing) 설계의 단순성이 훼손되고 있습니다.VLIW에는 이 논리가 없기 때문에 에너지 사용, 설계상의 결함 가능성 및 기타 부정적인 측면이 없습니다.
VLIW에서는 컴파일러는 휴리스틱스 또는 프로파일 정보를 사용하여 브랜치의 방향을 추측합니다.이것에 의해, 브랜치를 취득하기 전에 추측적으로 조작을 이동 및 사전 스케줄 할 수 있게 되어, 브랜치를 통과할 가능성이 높은 패스가 우선됩니다.브랜치가 예기치 않은 방법을 취할 경우 컴파일러는 프로그램 의미를 유지하기 위해 추측 결과를 폐기하는 보정 코드를 이미 생성했습니다.
벡터 프로세서 코어(벡터라고 불리는 대규모 1차원 데이터 어레이용으로 설계)는 후지쯔 FR-V 마이크로프로세서 등의 VLIW 아키텍처와 조합할 수 있기 때문에 스루풋과 [citation needed]속도가 더욱 향상됩니다.
역사
VLIW 아키텍처의 개념과 VLIW라는 용어는 1980년대 [2]초 예일 대학의 그의 연구 그룹에서 Josh Fisher에 의해 발명되었습니다.VLIW의 컴파일 방법으로서 트레이스 스케줄링을 개발한 것은, 그가 뉴욕 대학 대학원생이었을 때에 개발되었습니다.VLIW 이전에는 수평 마이크로코드를 개발하는 실무에서 소프트웨어에서 실행 유닛과 명령 수준의 병렬화를 사전 결정하는 개념이 잘 확립되어 있었습니다.Fisher 이전에, 후에 VLIW라고 불리게 되는 이론적인 측면은 60년대 군사 지향의 M-9 및 M-10 컴퓨터에 대한 그의 연구를 바탕으로 소련 컴퓨터 과학자 미하일 카르세프에[3] 의해 개발되었다.그의 아이디어는 피셔의 주요 논문보다 2년 전에 교과서의[4] 일부로 개발되어 출판되었지만, 철의 장막과 카르세프의 업적은 대부분 군과 관련된 것이었기 때문에 서양에서는 거의 알려지지 않았다.
피셔의 혁신은 일반적인 프로그래밍 언어로 작성된 프로그램에서 수평 마이크로코드를 대상으로 할 수 있는 컴파일러를 개발하는 것을 포함했습니다.그는 좋은 성능을 얻어 광범한 기계를 공략하기 위해서는 기본 블록 내에서 일반적으로 그 이상의 병렬성을 찾아야 한다는 것을 깨달았다.그는 또한 기본 블록을 넘어선 병렬성을 식별하기 위한 지역 스케줄링 방법을 개발했습니다.트레이스 스케줄링은 이러한 방법으로, 스케줄이 완료될 때까지 기본 블록의 가장 가능성이 높은 경로를 먼저 스케줄링하고, 추측성 모션을 처리하기 위한 보정 코드를 삽입하고, 두 번째로 가능성이 높은 트레이스를 스케줄링하는 등의 작업을 수행합니다.
Fisher의 두 번째 혁신은 타깃 CPU 아키텍처가 컴파일러의 합리적인 타깃이 되도록 설계되어야 한다는 개념이었습니다. 컴파일러와 VLIW 프로세서의 아키텍처는 코드화되어야 합니다.이것은 부분적으로 Fisher가 예일대에서 관찰한 Floating Point Systems의 FPS164와 같은 아키텍처의 컴파일 어려움에서 비롯되었습니다.이것은 복잡한 명령 집합 컴퓨팅(CISC) 아키텍처를 가지고 있어서 명령 개시를 결과를 저장하는 명령에서 분리하고 매우 복잡한 스케줄링 알고리즘을 필요로 했습니다.Fisher는 자체 배수 파이프라인, 광범위한 멀티 포트 레지스터 파일 및 메모리 아키텍처와 같은 적절한 VLIW 설계를 특징짓는 일련의 원칙을 개발했습니다.이러한 원리로 컴파일러는 고속 코드를 쉽게 내보낼 수 있게 되었습니다.
첫 번째 VLIW 컴파일러는 존 엘리스가 피셔가 감독한 박사학위 논문에서 기술되었다.그 컴파일러의 이름은 예일대의 [5]마스코트의 이름을 따서 불독으로 명명되었다.
Fisher는 1984년에 Yale을 떠나 공동 창업자인 John O'Donnell, John Ruttenberg와 함께 Multiflow라는 신생 회사를 설립했다.멀티플로우는 1987년에 첫 기계를 출하한 VLIW 미니 슈퍼컴퓨터의 TRACE 시리즈를 생산했습니다.멀티로우의 VLIW는 명령당 28개의 연산을 병렬로 발행할 수 있습니다.TRACE 시스템은 중규모 인테그레이션(MSI), 대규모 인테그레이션(LSI) 및 매우 대규모 인테그레이션(VLSI)을 혼합하여 캐비닛에 패키지화되어 구현되었습니다.이 테크놀로지는 프로세서의 모든 컴포넌트(메모리 제외)를 하나의 칩에 통합하는 비용 효율이 높아짐에 따라 폐지되었습니다.
멀티로우는 칩 아키텍처가 CPU를 [clarification needed]여러 개 사용할 수 있게 되었을 때 후속 추세를 따라잡기에는 너무 빨랐습니다.주요 반도체 업체들은 이러한 맥락에서 멀티로우 기술의 가치를 인정했기 때문에 컴파일러와 아키텍처는 이후 이들 업체 대부분에 라이선스되었습니다.
실장
Cywordn은 같은 기간(1980년대 후반)에 이미터 결합 논리(ECL) 집적회로를 사용하여 VLIW 수치 프로세서를 생산하는 회사였습니다.이 회사는 멀티플로우처럼 몇 년 후에 파산했다.
멀티로우 테크놀로지의 라이선스 계약자 중 하나는 Hewlett-Packard로, Josh Fisher가 Multiflow가 사망한 후 합류했다.Cythodn의 설립자인 Bob Rau도 Cythodn이 실패하자 HP에 입사했다.이 둘은 1990년대에 Hewlett-Packard의 컴퓨터 아키텍처 연구를 이끌었습니다.
상기의 시스템과 함께, 인텔은 같은 시기(1989~1990년)에 인텔 i860에 VLIW를 실장해, 최초의 64비트 마이크로프로세서, 및 1개의 [6]칩에 VLIW를 실장했습니다.이 프로세서는, 심플 RISC 모드와 VLIW 모드 양쪽에서 동작합니다.
1990년대 초에 인텔은 i860 RISC 마이크로프로세서를 발표했습니다.이 심플한 칩에는 스칼라 모드와 VLIW 모드의 2가지 동작 모드가 있습니다.VLIW 모드에서는 프로세서는 항상2개의 명령어를 취득하고 한쪽은 정수 명령어와 다른 한쪽은 부동소수점이라고 [6]가정했습니다.
i860의 VLIW 모드는 임베디드 디지털 신호 프로세서(DSP) 애플리케이션에서 광범위하게 사용되었습니다.이는 애플리케이션 실행과 데이터 세트가 단순하고, 순서가 적절하며, 예측이 가능하기 때문에 설계자는 VLIW에 의해 구현된 병렬 실행 이점을 충분히 활용할 수 있기 때문입니다.VLIW 모드에서는 i860은 20~40의 배 정밀도 MFLOPS 범위에서 부동소수점 성능을 유지할 수 있었습니다.이것은 25~50Mhz로 동작하는 프로세서로서는 매우 높은 값입니다.
1990년대에 Hewlett-Packard는 PA-RISC 프로세서 패밀리에 대한 지속적인 작업의 부작용으로 이 문제를 조사했습니다.CPU에서 복잡한 디스패치 로직을 제거하고 컴파일러에 배치함으로써 CPU를 대폭 간소화할 수 있다는 것을 알게 되었습니다.오늘날의 컴파일러는 1980년대 컴파일러보다 훨씬 복잡하기 때문에 컴파일러의 복잡성은 적은 비용으로 간주되었습니다.
VLIW CPU는 일반적으로 독립적으로 동작하는 여러 RISC와 같은 실행 유닛으로 구성됩니다.현대의 VLIW에는 보통 4~8개의 메인 실행 유닛이 있습니다.컴파일러는 기존 CPU와 거의 동일한 방법으로 VLIW CPU의 초기 명령 시퀀스를 생성하여 RISC와 같은 일련의 명령을 생성합니다.컴파일러는 종속 관계 및 리소스 요구 사항에 대해 이 코드를 분석합니다.그런 다음 이러한 제약 조건에 따라 명령을 예약합니다.이 프로세스에서는 독립된 명령을 병렬로 스케줄링할 수 있습니다.VLIW는 일반적으로 개별 명령어를 포함하는 긴 명령어와 병렬로 스케줄된 명령을 나타내기 때문에 특정 사이클에서 실행할 명령어를 지정하는 opcode(매우 긴 명령어)가 훨씬 길어집니다.
현대의 VLIW CPU의 예로는 NXP(구 Philips Semiconductors)의 TriMedia 미디어 프로세서, 아날로그 디바이스의 SHARC(Super Harvard Architecture Single-Chip Computer), STMicroelectonics의 Lx 아키텍처(Josh Fisher's Architecture)를 기반으로 한 ST200 시리즈 등이 있습니다.Pixelworks의 BSP15/16[7], CEVA의 CEVA-X DSP, Prov Systems의 Jazz DSP, 실리콘 하이브의 HiveFlex 시리즈 및[8] Kalray의 MPPA Manycore 제품군입니다.Texas Instruments TMS320 DSP 라인은 C6000 패밀리에서 이전의 C5000 패밀리와는 달리 VLIW와 같이 진화했습니다.이러한 최신 VLIW CPU는 주로 가전제품용 임베디드 미디어 프로세서로 성공하고 있습니다.
VLIW 기능은 시스템 온 어 칩(SoC) 설계를 위해 구성 가능한 프로세서 코어에 추가되었습니다.예를 들어 Tensilica의 Xtensa LX2 프로세서는 다중 조작 명령이 가능한 플렉시블 길이 명령 eXtensions(FLIX)라는 기술을 통합하고 있습니다.Xtensa C/C++ 컴파일러는 32비트 또는 64비트 FIX 명령과 16비트 또는 24비트 폭의 Xtensa 프로세서의 원 오퍼레이션 RISC 명령을 자유롭게 혼재시킬 수 있습니다.복수의 조작을 32비트 또는 64비트의 명령어에 정리하고, 이러한 복수의 조작 명령과 RISC의 짧은 명령어를 혼재시키는 것으로써, SoC 설계자는 초기 VLIW 아키텍처의 코드 블롯을 배제하면서 VLIW의 퍼포먼스 이점을 실현할 수 있습니다.Infineon Carmel DSP는 SoC용 또 다른 VLIW 프로세서코어입니다또한 구성 가능한 긴 명령어(CLIW)[9]라고 하는 유사한 코드 밀도 개선 방법을 사용합니다.
임베디드 프로세서 시장 이외에서는 인텔의 Itanium IA-64가 널리 사용되는 VLIW CPU 아키텍처의 유일한 예로서 명시적인 병렬 명령 컴퓨팅(EPIC)과 Elbrus 2000이 있습니다.그러나 EPIC 아키텍처는 완전한 명령어 프레딕션, 회전 레지스터 파일 및 병렬이 아닌 명령 그룹을 인코딩할 수 있는 매우 긴 명령어를 지원하므로 순수한 VLIW 아키텍처와 구별되는 경우가 있습니다.VLIW는 그래픽스 처리 장치(GPU) 시장에서도 큰 인기를 끌었지만, Nvidia와 AMD 모두 그래픽스 이외의 워크로드의 퍼포먼스를 향상시키기 위해 RISC 아키텍처로 이행했습니다.
ATI 테크놀로지(ATI)와 어드밴스드 마이크로 디바이스(AMD) 테라스케일 그래픽 처리 장치(GPU)용 마이크로 아키텍처는 VLIW 마이크로 아키텍처입니다.
2015년 12월,[10] 러시아에서 VLIW CPU Elbrus-4s를 탑재한 PC가 최초로 출하되었습니다.
Neo by REX Computing은 전력 [11]효율을 목표로 한 VLIW 코어의 2D 메쉬로 구성된 프로세서입니다.
하위 호환성
이 섹션은 확인을 위해 추가 인용문이 필요합니다.(2016년 6월 (이 및 ) |
실리콘 테크놀로지에 의해 (더 많은 실행 유닛을 가진) 더 넓은 구현이 가능하게 되었을 때, 바이너리 명령어의 인코딩은 머신의 실행 유닛의 수에 의존했기 때문에 이전 세대의 컴파일된 프로그램은 더 넓은 구현에서 실행되지 않았습니다.
Transmeta는 x86 아키텍처의 Cruse 구현에 바이너리 투 바이너리 소프트웨어 컴파일러 레이어(termed code morping)를 포함시킴으로써 이 문제를 해결했습니다.이 메커니즘은 기본적으로 런타임에 x86 opcode를 다시 컴파일, 최적화 및 CPU 내부 머신 코드로 변환하도록 광고되었습니다.따라서 Transmeta 칩은 내부적으로는 VLIW 프로세서이며, 실제로 실행하는 x86 CISC 명령어세트에서 분리됩니다.
인텔의 Itanium 아키텍처(특히)는 보다 일반적인 메커니즘으로 하위 호환성 문제를 해결했습니다.각 다중 opcode 명령에서는 프로그램 명령 스트림 내의 이전 VLIW 명령에 대한 의존성을 나타내기 위해 비트 필드가 할당된다.이러한 비트는 컴파일 시에 설정되므로 하드웨어가 이 의존관계 정보를 계산하지 않아도 됩니다.이 의존관계 정보를 명령 스트림에 부호화함으로써 광범위한 실장에서는 사이클마다 여러 개의 비의존 VLIW 명령을 병렬로 발행할 수 있습니다.한편 좁은 실장에서는 사이클당 발행하는 VLIW 명령의 수가 적어집니다.
VLIW 설계의 또 다른 단점은 하나 이상의 실행 유닛이 유용한 작업을 하지 않아 No Operation NOP 명령을 실행해야 할 때 발생하는 코드 블러트입니다.이 문제는 코드에 종속성이 있으며 이후 작업을 진행하기 전에 명령 파이프라인이 배출되도록 허용해야 할 때 발생합니다.
칩 상의 트랜지스터 수가 증가함에 따라 VLIW의 인식된 단점은 중요성이 감소했습니다.VLIW 아키텍처는 특히 임베디드 시스템 시장에서 인기가 높아지고 있습니다.이 시장에서는 시스템 온 칩의 애플리케이션에 맞는 프로세서를 커스터마이즈할 수 있습니다.
「 」를 참조해 주세요.
- 명시적 병렬 명령 컴퓨팅(EPIC)
- Elbrus(컴퓨터)
- 아이테니엄
- Movidius(SHAVE 코어)
- 단일 명령, 다중 데이터
- 단일 명령, 다중 스레드
- 전송 트리거 아키텍처(TTA)
레퍼런스
- ^ "Control Data 6400/6500/6600 Computer Systems Reference Manual". 1969-02-21. Archived from the original on 2014-01-02. Retrieved 2013-11-07.
- ^ Fisher, Joseph A. (1983). "Very Long Instruction Word architectures and the ELI-512". Proceedings of the 10th annual international symposium on Computer architecture. International Symposium on Computer Architecture. New York, NY, USA: Association for Computing Machinery (ACM). pp. 140–150. doi:10.1145/800046.801649. ISBN 0-89791-101-6.
- ^ Kartsev, Mikhail (1970). "Вопросы построения многопроцессорных вычислительных систем" [Building the multiprocessor computer systems]. Radioelectronic matters, electronic computing technics (in Russian) (5–6): 3–19.
- ^ Kartsev, Mikhail; Brik, Vladimir (1981). Вычислительные системы и синхронная арифметика [Compuring systems and synchronous arythmetics] (in Russian). Moscow: Radio i Svyaz.
- ^ "ACM 1985 Doctoral Dissertation Award". Association for Computing Machinery (ACM). Archived from the original on 2008-04-02. Retrieved 2007-10-15.
For his dissertation Bulldog: A Compiler for VLIW Architecture.
- ^ a b "An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture" (PDF). Philips Semiconductors. Archived from the original (PDF) on 2011-09-29.
- ^ "Pixelworks BSP15/16". Archived from the original on 1996-12-24. Retrieved 2016-07-28.
- ^ "silicon hive Products". Silicon Hive. Silicon Hive BV. Archived from the original on 2012-01-28. Retrieved 2012-01-28.
- ^ "EEMBC Publishes Benchmark Scores for Infineon Technologies' Carmel - DSP Core and TriCore - TC11IB Microcontroller". eembc.org. Retrieved 2016-07-28.
- ^ "ТАСС". tass.ru. Retrieved 2016-07-28.
- ^ "The Tiny Chip That Could Disrupt Exascale Computing". The Next Platform. Stackhouse Publishing Inc. 12 March 2015. Retrieved 26 April 2021.
외부 링크
- VLIW를 소개한 문서
- VLIW 선구기업 멀티로우컴퓨터 역사서적
- VLIW를 도입한 ISCA의 '베스트 페이퍼' 회고전
- VLIW 및 임베디드 처리
- FR500 VLIW 아키텍처 고성능 임베디드 마이크로프로세서
- EPIC 명령 집합 아키텍처의 과거 배경
- DIS: 신속한 LISP 실행을 위한 아키텍처.LISP를 지향하는 병렬 컴파일러를 사용하는 것과 같은 VLIW 아키텍처.