TRIP 아키텍처

TRIPS architecture
프로세서 트립

TRIPS텍사스 오스틴 대학 팀이 IBM, Intel 및 Sun Microsystems와 함께 설계한 마이크로프로세서 아키텍처입니다.TRIPs는 독립된 처리 요소에서 실행할 수 있는 대규모 명령(그래프) 그룹으로 쉽게 분류할 수 있도록 설계된 명령 집합 아키텍처를 사용합니다.이 설계에서는 관련 데이터를 그래프에 수집하여 고가의 데이터 읽기 및 쓰기를 피하고 처리 요소에 가까운 고속 메모리에 데이터를 보관합니다.시제품의 TRIPs 프로세서에는 16개의 요소가 포함되어 있습니다.2003년부터 2006년까지 논문이 [1]발표되었기 때문에 TRIPs는 단일 프로세서로 1 TFLOP에 도달하기를 희망했습니다.

배경

컴퓨터 프로그램은 메모리에 저장된 일련의 명령으로 구성됩니다.프로세서는, 메모리로부터 이러한 명령을 취득해 검사해, 명령이 호출하는 액션을 실행하는 것으로 프로그램을 실행합니다.

초기 머신에서는 메인 메모리의 속도는 일반적으로 프로세서 내의 기본 동작과 같은 시간 순서였습니다.예를 들어 두 개의 숫자를 추가하는 명령은 명령 사이클이 3~4회 걸리는 반면 메모리에서 숫자를 가져오는 데는 한두 번의 사이클이 걸릴 수 있습니다.이러한 기계에서는 데이터가 메인 메모리에 있는 경우 불이익이 발생하지 않으며 명령 집합 아키텍처는 일반적으로 메모리 내의 한 위치에서 추가 명령이 값을 가져와 다른 위치에서 값을 추가한 다음 결과를 세 번째 위치에 저장할 수 있도록 설계되었습니다.

점점 더 빠른 마이크로프로세서와 저렴하지만 느린 다이내믹 RAM의 도입은 이 방정식을 극적으로 변화시켰습니다.최신 시스템에서는 기본 메모리에서 을 가져오는 데 수천 사이클이 소요될 수 있습니다.RISC 개념의 주요 진보 중 하나는 이전 설계보다 더 많은 프로세서 레지스터를 포함한다는 것입니다(일반적으로 두세 개에서 수십 개에서 수십 개까지).이전에 제공된 메모리 위치는 레지스터에서만 작동하는 명령으로 대체되었습니다.데이터를 레지스터에 로드하는 것은 명시적이었고, 별도의 로드 액션을 수행해야 했으며, 결과를 다시 명시적으로 저장해야 했습니다.이러한 메모리 명령을 가능한 한 많이 제거함으로써 성능을 향상시킬 수 있습니다.이 기술은 빠르게 한계에 도달했고 1990년대 이후 최신 CPU는 로컬 스토리지를 늘리기 위해 더 많은 의 CPU 캐시를 추가했지만 캐시는 레지스터보다 느렸습니다.

1990년대 후반 이후 성능 향상은 대부분 일부 명령을 병렬로 실행할 수 있는 추가 "기능 장치"를 사용하여 이루어졌습니다.예를 들어, 서로 다른 데이터에 대해 작업하는 두 개의 추가 명령을 동시에 실행할 수 있으므로 프로그램 속도가 효과적으로 두 배로 빨라집니다.현대의 CPU에는 일반적으로 이러한 유닛이 수십 개 있습니다.어떤 유닛은 정수 연산과 부울 논리용 유닛, 어떤 유닛은 부동 소수점 연산용 유닛, 어떤 유닛은 롱 데이터 워드용 유닛, 그리고 다른 유닛은 메모리와 기타 집안일을 처리하기 위한 유닛입니다.그러나 대부분의 프로그램은 독립적인 데이터에 대해 작동하지 않고 한 계산의 출력을 다른 계산의 입력으로 사용합니다.이로 인해 프로세서가 즉시 검사할 수 있는 명령의 수에 따라 병렬로 실행할 수 있는 명령 집합이 일부 요소에 따라 달라집니다.2000년대 중반까지 교육 병렬화의 수준은 빠르게 안정되었다.

이 제한에서 벗어나기 위한 한 가지 시도는 매우명령어(VLIW) 개념입니다.VLIW는 컴파일러를 프로세서 자체에서 분리하여 명령 병렬 처리를 찾는 작업을 수행합니다.이론상으로는 프로그램 전체를 독립된 명령으로 검사하여 기능 유닛을 최대한 활용할 수 있는 순서로 프로세서로 전송할 수 있습니다.그러나 이는 실제로 어려운 것으로 판명되어 VLIW 프로세서는 널리 보급되지 않았습니다.

VLIW의 경우에도 다른 문제가 발생하고 있습니다.기존의 모든 설계에서는 데이터와 명령은 CPU의 다른 부품으로 처리됩니다.처리 속도가 낮을 때는 문제가 발생하지 않았지만, 성능이 향상됨에 따라 칩의 한쪽(레지스터)에서 다른 쪽(기능 유닛)으로의 통신 시간이 증가하여 전체 처리 시간의 중요한 부분이 되었습니다.성능을 더욱 향상시키려면 레지스터를 기능 유닛에 가깝게 분배해야 합니다.

엣지

TRIPs는, EDDE(Explicit Data Graph Execution) 컨셉에 근거하는 프로세서입니다.EDGE는 최신 시스템을 [2]지배하게 된 특정 성능 병목 현상을 우회하려고 합니다.

EDGE는 프로세서가 전송되는 명령 스트림을 개별 명령의 선형 스트림으로 보는 것이 아니라 격리된 데이터를 사용하는 단일 작업과 관련된 명령 블록으로 보는 것을 기반으로 합니다.EDGE는 이러한 모든 명령을 블록으로 실행하려고 하며 처리해야 [3]하는 모든 데이터와 함께 내부적으로 배포합니다.컴파일러는 코드를 조사하고 특정 방법으로 정보를 공유하는 코드 블록을 찾습니다.그런 다음 컴파일된 "하이퍼 블록"으로 조립되어 CPU에 공급됩니다.컴파일러는 이들 블록 사이에 특정 상호의존성이 있음을 보증하기 때문에 프로세서는 자신의 로컬 메모리를 사용하여 하나의 기능 유닛으로 코드를 분리할 수 있습니다.

메모리에서 2개의 숫자를 더하고 그 결과를 메모리의 다른 값에 추가하는 간단한 예를 생각해 봅시다.이 경우 기존 프로세서는 종속성을 인식하고 명령을 차례로 실행하도록 스케줄링하여 중간 결과를 레지스터에 저장해야 합니다.EDGE 프로세서에서 코드 내의 데이터 간의 상호의존성은 컴파일러에 의해 인식되며, 컴파일러는 이러한 명령어를 단일 블록으로 컴파일합니다.그런 다음 블록은 완료에 필요한 모든 데이터와 함께 단일 기능 단위와 자체 레지스터 세트에 공급됩니다.이것에 의해, 추가의 메모리 취득이 불필요할 뿐만 아니라, 레지스터가 그러한 값을 필요로 하는 기능 유닛에 물리적으로 가까워지는 것을 확인할 수 있습니다.

이 중간 데이터에 의존하지 않는 코드는 별도의 하이퍼 블록으로 컴파일됩니다.물론 프로그램 전체가 동일한 데이터를 사용하는 것이 가능하기 때문에 컴파일러는 데이터를 다른 코드로 넘겨주고 원래 블록에 의해 효과적으로 버림받은 인스턴스를 찾습니다.이것은 일반적인 액세스 패턴입니다.이 경우 컴파일러는 여전히 두 개의 개별 하이퍼블록을 생성하지만 데이터를 단순히 공유 메모리 위치에 저장하는 것이 아니라 데이터의 핸드오프를 명시적으로 인코딩합니다.이것에 의해, 프로세서는 이러한 통신 이벤트를 「표시」해, 적절한 순서로 실행하도록 스케줄 할 수 있습니다.트랜스포트 병목현상을 피하기 위해 컴파일러에 의해 상당한 상호의존성이 있는 블록이 재배열됩니다.

이 변경의 효과는 개별 기능 단위의 분리를 크게 증가시키는 것입니다.EDGE 프로세서는 온칩 시스템이 아닌 컴파일러의 기능에 의해 병렬 처리가 제한됩니다.최신 프로세서는 4폭 병렬로 고원에 도달하고 있지만 EDGE 설계는 훨씬 더 넓게 확장할 수 있습니다.또한 공유된 값으로 인해 경합이 감소하도록 예약된 체인으로 블록을 한 유닛에서 다른 유닛으로 전달하여 "디퍼(deeper)" 확장할 수 있습니다.

트립

텍사스 대학교 오스틴이 EDGE 개념을 구현한 것은 TRIPS 프로세서, Tera-op, 신뢰성 높은 인텔리전트 적응형 프로세싱 시스템입니다.TRIPs CPU는 1개의 기본 기능 유닛을 필요한 횟수만큼 반복함으로써 구축됩니다.TRIPS 설계에서는 엔마스크로 로드된 하이퍼 블록을 사용하여 투기적인 실행이 크게 향상됩니다.기존 설계에는 기능 유닛에 대한 가능한 스케줄링을 검토하는 수백 개의 명령이 있을 수 있는 반면, TRIP 설계에는 하이퍼 블록당 수천 개의 명령과 수백 개의 하이퍼 블록이 검토됩니다.이를 통해 기능 유닛의 활용도가 크게 향상됩니다.TRIPS는 일반적인 4가지 슈퍼스케일러 설계로 성능을 확장하여 사이클당 약 3배의 명령을 처리할 수 있습니다.

기존 설계에서는 다양한 유형의 단위, 정수, 부동소수점 등이 존재하여 4개의 전폭 스케줄러가 허용하는 것보다 더 많은 병렬화가 가능합니다.단, 모든 유닛을 활성 상태로 유지하려면 명령 스트림에 이러한 다른 유형의 명령어가 모두 포함되어야 합니다.실제로는 그렇지 않은 경우가 많기 때문에 기존 CPU에는 많은 유휴 기능 유닛이 있습니다.TRIP에서 개별 유닛은 범용이며 모든 명령을 모든 코어로 실행할 수 있습니다.이것에 의해, 다른 종류의 코어의 수를 신중하게 밸런스 할 필요가 없어질 뿐만 아니라, 특정의 퍼포먼스 요건에 도달하기 위해서 필요한 코어의 수에 관계없이, TRIP 설계를 구축할 수 있습니다.싱글코어 TRIPS CPU에서는 스케줄러가 심플(또는 배제)되어 있으면 수백 개의 코어가 있는 하이퍼블록과 같은 일련의 하이퍼블록이 동작하는 속도가 느려집니다.

게다가 퍼포먼스는 공급되는 데이터의 타입에 의존하지 않기 때문에, TRIPS CPU는 같은 레벨의 퍼포먼스로 보다 다양한 태스크를 실행할 수 있습니다.예를 들어 기존 CPU에 대량의 연산 부하가 공급되는 경우 모든 부동소수점 유닛이 비지 상태가 되면 정수 유닛이 아이돌 상태가 되어 버립니다.데이터베이스 작업처럼 데이터 집약적인 프로그램이 공급되면 부동소수점 단위는 유휴 상태가 되고 정수 단위는 대기 상태가 됩니다.TRIPS CPU에서는 모든 작업이 모든 장치에서 실행될 수 있기 때문에 모든 기능 유닛이 모든 작업의 성능을 향상시킵니다.설계자는 '폴리모픽 프로세서'라고 부릅니다.

이 점에서 TRIPs는 매우 유연하기 때문에 개발자들은 DSP와 같은 일부 맞춤형 고속 디자인을 대체할 수도 있다고 제안했습니다.TRIPS와 마찬가지로 DSP는 데이터 상호의존성을 제한함으로써 성능을 향상시키지만 TRIP와 달리 매우 제한된 워크플로우만 실행함으로써 성능을 향상시킵니다.TRIPs는 이러한 워크로드에 대해 커스텀 DSP와 같은 속도로 처리되지만 다른 워크로드를 동시에 실행할 수 있습니다.설계자가 지적한 바와 같이, 최신 그래픽 카드의 GPU와 같은 고도의 커스터마이즈 설계를 대체하기 위해 TRIPS 프로세서를 사용할 가능성은 낮지만, 미디어 처리에 사용되는 칩과 같은 많은 저성능 칩을 대체하거나 능가할 수도 있습니다.

글로벌 레지스터 파일의 감소도 눈에 띄지 않는 이득을 가져옵니다.최신 프로세서에 새로운 회로가 추가됨에 따라 프로세스 크기가 작아져도 전체적인 크기는 거의 변하지 않았습니다.그 결과, 레지스터 파일과의 상대적인 거리가 커져, 통신 지연에 의한 가능한 사이클 속도가 제한된다.EDGE에서는 일반적으로 데이터가 보다 로컬이거나 잘 정의된 코어 간 링크로 격리되므로 대규모 "크로스 칩" 지연이 발생하지 않습니다.즉, 개개의 코어를 훨씬 짧은 데이터 패스의 시그널링 시간에 의해 제한되는 고속으로 실행할 수 있습니다.

이러한 두 가지 설계 변경 효과를 조합하면 시스템 성능이 크게 향상됩니다.목표는 2012년까지 1개의 TFLOPS 성능을 갖춘 단일 프로세서 시스템을 생산하는 것입니다.단, 2008년 현재 ATI NVIDIA의 GPU는 이미 1테라플롭의 장벽을 넘어섰습니다(특수 어플리케이션의 경우).종래의 CPU에 대해서는, 2 코어 인텔 Xeon 를 사용하는 현재의(2007) Mac Pro 는, 1 [4]개의 애플리케이션으로 약 5 GFLOP 만을 실행할 수 있습니다.

2003년에 TRIPS 팀은 시제품 칩을 구현하기 시작했습니다.각 칩에는 2개의 완전한 코어가 있으며, 각 코어는 4개의 폭, 4개의 깊이 배열로 16개의 기능 유닛을 갖추고 있습니다.현재 구현에서 컴파일러는 각각 128개의 명령어로 구성된 하이퍼블록(hyperblocks)을 구성하며 시스템은 코어당 총 1,024개의 명령어를 동시에 "비행 중"으로 유지할 수 있습니다.기본 설계에는 최대 32개의 칩이 상호 연결되어 있으며, 500 GFLOPS에 [5]근접합니다.

레퍼런스