정말 많은 xPU가 필요합니까?

업데이트: 17년 2021월 XNUMX일

"최근 몇 년 동안 TPU, IPU, NPU의 세 글자로 된 새로운 프로세서 아키텍처에 대한 발표가 거의 매일 발표되었습니다. 그러나 실제로 그들을 구별하는 것은 무엇입니까? 고유한 프로세서 아키텍처가 정말 많습니까? 아니면 다른 일이 발생했습니까?

"

최근 몇 년 동안 새로운 프로세서 아키텍처에 대한 발표가 거의 매일 발표되었으며 TPU, IPU, NPU의 세 글자 약어가 제공되었습니다. 그러나 실제로 그들을 구별하는 것은 무엇입니까? 고유한 프로세서 아키텍처가 정말 많습니까? 아니면 다른 일이 발생했습니까?

2018년에는 John L. Hennessy와 David A. Patterson이 "컴퓨터 아키텍처의 새로운 황금 시대"라는 제목으로 Turing 강의를 했습니다. 그들은 CPU와 그 개발에 관심을 갖고 있지만 이는 전체 방정식의 작은 부분일 뿐입니다. Arteris IP 연구원이자 시스템 설계자인 Michael Frank는 "CPU 관점에서 볼 때 이러한 xPU의 대부분은 실제 프로세서가 아닙니다."라고 말했습니다. “그들은 특별한 작업 부하를 위한 가속기인 GPU에 가깝습니다. 그리고 그들은 내부에 많은 다양성을 가지고 있습니다. 머신러닝은 프로세서의 일종으로, 통틀어 머신러닝 가속기라고 부를 수 있지만 다양한 처리 부분을 가속화합니다.”

프로세서의 본질은 세 가지로 요약할 수 있다. Xilinx의 칩 마케팅 이사인 Manuel Uhm은 “최종 분석에서는 ISA(명령어 세트 아키텍처)로 돌아갑니다.”라고 말했습니다. “이것이 당신이 하고 싶은 일을 정의합니다. 그런 다음 ISA와 ISA가 수행하려는 작업을 지원하는 I/O와 메모리가 있습니다. 앞으로는 매우 흥미로운 시간이 될 것입니다. 지난 XNUMX~XNUMX년보다 더 많은 혁신과 변화가 필요한 시간이 될 것이기 때문입니다.”

많은 새로운 아키텍처는 단일 프로세서가 아닙니다. Cadence의 그룹 이사인 Pierre-Xavier Thomas는 "우리가 보고 있는 것은 동일한 SoC 또는 동일한 시스템에 존재하는 다양한 유형의 프로세서 또는 프로그래밍 가능 엔진의 조합입니다."라고 말했습니다. Technology 및 전략적 마케팅. “소프트웨어 작업을 다양한 하드웨어나 유연한 프로그래밍 가능 엔진에 배포합니다. 모든 프로세서는 공통 API를 공유할 수 있지만 실행 도메인은 다릅니다. 여기서는 실제로 다양한 유형의 특성을 지닌 다양한 처리 유형을 볼 수 있습니다.”

현실은 대부분의 이름이 마케팅이라는 것입니다.

Imperas Software의 CEO인 Simon Davidmann은 “중요한 점은 사람들이 이러한 이름과 약어를 두 가지 다른 목적으로 사용한다는 것입니다.”라고 말했습니다. “하나는 SIMD(Single Instruction Multiple Data)와 같은 프로세서의 아키텍처를 설명하는 데 사용됩니다. 다른 하나는 주소를 지정하는 애플리케이션 세그먼트를 정의합니다. 따라서 프로세서 아키텍처 또는 TPU(텐서 처리 장치) 브랜드 이름과 같은 것을 정의할 수 있습니다. 그들은 개별 프로세서가 아닌 이기종 또는 동종 아키텍처의 이름을 지정하고 있습니다.”

역사의 비트

XNUMX년 전에는 상황이 훨씬 간단했습니다. 그 당시에는 중앙 처리 장치(CPU)가 있었고 그 변형이 많았지만 기본적으로는 모두 폰 노이만 아키텍처를 사용하는 튜링 완전 프로세서였습니다. 각각은 특정 작업에 대해 더 효율적으로 만드는 서로 다른 명령어 세트를 가지고 있으며, CISC(복잡한 명령어 세트)와 RISC(축소 명령어 세트)의 상대적인 이점에 대해 많은 논의가 있습니다.

RISC-V의 등장으로 ISA에 많은 관심이 쏠렸습니다. Xilinx의 Uhm은 “사람들은 정의된 작업에 프로세서가 얼마나 최적화되는지 정의하는 것이 ISA이기 때문에 ISA를 이해하고 싶어합니다.”라고 말했습니다. “그들은 ISA를 보고 계산 주기를 시작할 수 있습니다. ISA에 기본 명령어가 있고 1GHz에서 실행되는 경우 동일한 기능에 대해 두 개의 명령어가 필요할 수 있지만 프로세서는 1.5GHz에서 실행되는 다른 프로세서 ISA와 비교할 수 있습니다. 어느 것이 나를 더 발전하게 만드는가? 중요한 기능에 대한 수학적 계산을 수행합니다.”

CPU에는 여러 가지 패키징 방법이 있습니다. 때로는 IO 또는 메모리가 동일한 패키지에 배치됩니다. 마이크로컨트롤러 유닛(MCU)이라고 합니다.

모뎀이 대중화되면서 DSP(Digital Signal Processor)가 등장했는데, 그 차이점은 Harvard 아키텍처를 사용했다는 것입니다. 이것은 데이터 버스에서 명령 버스를 분리합니다. 그들 중 일부는 데이터 처리를보다 효율적으로 만들기 위해 SIMD 아키텍처를 구현했습니다.

명령어와 데이터를 분리하면 처리량이 향상되지만 자체 작성 프로그램과 같이 수행할 수 있는 일부 엣지 프로그래밍이 제한됩니다. 엄씨는 “보통 경계조건은 계산이 아니다”라고 말했다. “점점 I/O나 메모리가 늘어나고 있습니다. 업계는 컴퓨팅 성능을 높이는 것에서 컴퓨팅 성능을 유지하고 성능을 유지하기에 충분한 데이터가 있는지 확인하는 방향으로 전환하고 있습니다.”

단일 프로세서가 더 이상 빨라지지 않으면 여러 프로세서를 함께 연결합니다. 이러한 프로세서는 일반적으로 메모리를 공유하고 각 프로세서와 전체 프로세서 클러스터에 대한 튜링 완전성 개념을 유지합니다. 결과가 동일하기 때문에 프로그램의 어떤 부분이 실행되는지는 중요하지 않습니다.

다음 주요 개발은 GPU(그래픽 처리 장치)로, 각 처리 요소 또는 파이프라인에는 자체 메모리가 있고 프로세서 외부에서 처리할 수 없기 때문에 규칙을 어겼습니다. 메모리가 제한되어 있기 때문에 임의의 처리 작업을 수행할 수 없고 제공된 메모리 공간에 배치할 수 있는 작업만 수행할 수 있습니다.

Uhm은 “특정 유형의 기능에 있어서 GPU는 매우 강력한 프로세서이지만 파이프라인이 매우 깁니다.”라고 지적합니다. “이러한 파이프라인을 사용하면 GPU 유닛이 지속적으로 데이터를 처리할 수 있지만 어느 시점에서 파이프라인을 새로 고쳐야 한다면 큰 타격이 될 것입니다. 시스템에는 많은 대기 시간과 불확실성이 내재되어 있습니다.”

다른 많은 가속기가 정의되었지만 GPU(및 이후 GPGPU)는 이전 가속기보다 사용하기 쉽게 만드는 프로그래밍 패러다임과 소프트웨어 스택을 정의했습니다. Imperas의 Davidmann은 "수년 동안 특정 직업은 전문화되었습니다."라고 말했습니다. “순차 프로그램을 위한 CPU가 있습니다. 데이터 처리에 초점을 맞춘 그래픽 프로세서가 있습니다. 화면 우리를 고도로 평행한 세계로 안내합니다. 작업을 수행하기 위해 많은 작은 처리 요소를 사용합니다. 이제 기계 학습 작업이 있습니다.”

모든 새로운 아키텍처를 설명할 수 있는 다른 구성 규칙은 무엇입니까? 과거에 프로세서 어레이는 일반적으로 메모리 또는 고정 네트워크 토폴로지(예: 메시 또는 링)로 연결되었습니다. 최근에 등장한 것은 분산된 이기종 프로세서가 보다 유연한 방식으로 통신할 수 있도록 하는 NoC(Network on Chip)의 조합입니다. 미래에는 메모리를 사용하지 않고 통신할 수도 있습니다.

Arteris의 Frank는 "현재 NoC는 데이터만 전달합니다."라고 말했습니다. “향후 NoC는 가속기 간 통신이 데이터를 넘어서는 다른 영역으로 확장될 수 있습니다. 명령을 보내고 알림을 보내는 등의 작업을 수행할 수 있습니다. 가속기 어레이의 통신 요구 사항은 CPU 또는 표준 SoC의 통신 요구 사항과 다를 수 있습니다. 그러나 네트워크 온 칩은 사용자를 하위 집합으로 제한하지 않습니다. 액셀러레이터의 특별한 통신 요구 사항을 지원함으로써 성능을 최적화하고 향상시킬 수 있습니다.”

구현 아키텍처

프로세서를 차별화하는 한 가지 방법은 특정 운영 환경에 맞게 최적화하는 것입니다. 예를 들어 소프트웨어는 클라우드에서 실행될 수 있지만 마이크로 IoT 장치에서 동일한 소프트웨어를 실행할 수도 있습니다. 구현 아키텍처는 매우 다르며 성능, 전력 소비, 비용 또는 극한 조건에서 작동하는 능력 면에서 다른 작동 지점을 달성합니다.

Cadence의 Thomas는 "일부 애플리케이션은 클라우드 컴퓨팅용인데 이제 우리는 이를 엣지에 더 가깝게 만들고 있습니다."라고 말했습니다. “이는 대기 시간 요구 사항이나 에너지 또는 전력 소비로 인해 다른 유형의 아키텍처가 필요할 수 있습니다. 두 위치에서 실행될 수 있도록 정확히 동일한 소프트웨어 스택을 갖고 싶을 수도 있습니다. 클라우드는 다양한 유형의 애플리케이션을 수신하고 많은 수의 사용자를 통합할 수 있어야 하기 때문에 유연성을 제공해야 합니다. 이를 위해서는 서버의 하드웨어가 애플리케이션별 기능을 갖추어야 하지만 단일 크기가 모든 사람에게 적합한 것은 아닙니다.”

ML은 자체 요구 사항을 늘렸습니다. "신경망과 기계 학습을 사용하여 지능형 시스템을 구축하는 경우 소프트웨어 프레임워크와 일반 소프트웨어 스택을 사용하여 새로운 네트워크를 프로그래밍하고 하드웨어에 매핑해야 합니다."라고 Thomas는 덧붙였습니다. “그런 다음 PPA 관점에서 소프트웨어 애플리케이션을 올바른 하드웨어에 적용할 수 있습니다. 이로 인해 하드웨어 수준에서 이러한 요구 사항을 충족할 수 있는 다양한 유형의 처리 및 프로세서가 필요하게 되었습니다.”

이러한 요구 사항은 애플리케이션에 의해 정의됩니다. “한 회사가 그래픽 작업을 위한 프로세서를 만들었습니다.”라고 Frank는 말했습니다. “그래프를 추적하는 방법을 최적화하고 가속화하며 그래프 재정렬과 같은 작업을 수행합니다. 기계 학습을 가속화하는 다른 무차별적인 힘, 즉 행렬 곱셈이 있습니다. 메모리 액세스는 아키텍처마다 다릅니다. 가속기를 구축할 때 가장 중요한 목표는 이를 계속 바쁘게 유지하는 것이기 때문에 특별한 문제입니다. 데이터는 소비되고 생산될 수 있기 때문에 최대한 많은 데이터를 ALU로 전송해야 합니다.”

이러한 응용 프로그램 중 다수에는 공통점이 많습니다. Davidmann은 "모두 로컬 메모리가 있고, 통신할 수 있는 네트워크 온 칩이 있으며, 소프트웨어 알고리즘을 실행하는 각 프로세서가 작은 데이터 조각을 처리하고 있습니다."라고 말했습니다. "이러한 작업은 보다 전통적인 CPU에서 실행되는 운영 체제에 의해 예약됩니다."

하드웨어 설계자에게 까다로운 부분은 수행해야 할 작업을 예측하는 것입니다. Thomas는 “일부 레이어에서는 유사한 유형의 작업을 수행하지만 사람들은 레이어의 차별화에 주목하고 있습니다.”라고 말했습니다. “신경망을 처리하려면 여러 유형의 처리 능력이 필요합니다. 이는 어떤 방식으로든 신경망의 일부를 처리할 수 있어야 하며, 다른 레이어를 처리하려면 다른 유형의 작업이 필요할 수 있음을 의미합니다. 데이터 이동 그리고 데이터의 양도 계층별로 변화하고 있습니다.”

이러한 차별화는 데이터 이동 그 이상일 수 있습니다. “게놈 서열 분석을 위해서는 약간의 처리가 필요합니다.”라고 Frank는 말했습니다. “그러나 단일 유형의 가속기를 사용하여 모든 것을 가속화할 수는 없습니다. 다양한 파이프라인에 대해 다양한 가속기 전체 세트를 구축해야 합니다. CPU는 관리 실행 프로세스의 수호자가 됩니다. DMA를 설정하고 실행하며 두 프로세스 간의 의사결정을 제공합니다. 알고리즘을 이해 및 분석하고 처리를 최적화하는 방법을 정의하는 것은 완전한 아키텍처 작업입니다.”

프로세스의 일부에는 파티셔닝이 필요합니다. “각 프로세서 작업에 최적화할 수 있는 단일 프로세서 유형은 없습니다.FPGA 좋지 않다, CPU도 좋지 않다, GPU도 좋지 않다, DSP도 필요하다”고 말했다. “우리는 이 모든 것을 포함하는 일련의 장치를 만들었지만 고객 측에서 어려운 부분은 전체 시스템의 어느 부분이 프로세서나 프로그래밍 가능한 논리 또는 AI를 대상으로 할지 결정하기 위한 인텔리전스를 제공해야 한다는 것입니다. 엔진. 모두가 원합니다 자동 마법 도구, CPU에 넣을지, FPGA에 넣을지, GPU에 넣을지 즉시 결정할 수 있는 도구입니다. 그 도구는 현재 존재하지 않습니다.”

그럼에도 불구하고 CPU는 항상 중요한 역할을 합니다. Frank는 “프로그램의 불규칙한 부분을 실행하려면 CPU가 필요합니다.”라고 말했습니다. “CPU의 일반적인 프로그래밍 가능성에는 장점이 있습니다. 특수한 데이터 구조나 수학적 연산이 있으면 제대로 작동하지 않습니다. CPU는 범용 프로세서이며 어떤 용도로도 최적화되지 않았습니다. 아무것도 좋지 않습니다. .”

"추상" 변경

과거에는 하드웨어/소프트웨어 경계가 ISA에 의해 정의되었으며 메모리는 지속적으로 주소 지정이 가능했습니다. 프로세서가 여러 개인 경우 일반적으로 메모리 정렬됩니다.

Frank는 “일관성은 계약입니다.”라고 말했습니다. “이런 일관성은 매우 중요하며 사라지지 않을 것입니다. 그러나 데이터 흐름 엔진에서는 에지에서 이동하는 데이터를 한 액셀러레이터에서 다른 액셀러레이터로 직접 전송하기 때문에 일관성이 그다지 중요하지 않다고 생각할 수 있습니다. 데이터 세트를 분할하면 추가 주기가 소요되므로 일관성이 장애물이 됩니다. 정보를 확인하셔야 합니다. 최신 정보를 제공해야 합니다.”

이를 위해서는 다른 메모리 아키텍처가 필요합니다. 엄씨는 “밀접하게 결합된 메모리가 너무 많기 때문에 메모리 구조를 생각해야 한다”고 말했다. “인접 메모리에 접근할 수 있지만, 인접 메모리가 빨리 소진되어 시간 내에 접근할 수 없게 됩니다. 이것은 디자인에서 이해되어야합니다. 도구가 성숙해짐에 따라 도구는 더 많은 것을 배우기 시작할 것입니다. 오늘날 이는 아키텍처를 이해하고 적용할 수 있는 인간의 지능에 의해 수행됩니다.”

더 높은 수준의 추상화도 필요합니다. Thomas는 "일부 프레임워크는 알려진 네트워크를 대상 하드웨어에 매핑하거나 컴파일할 수 있습니다."라고 말했습니다. “소프트웨어 스택에서 사용된 다음 결국 신경망의 매퍼에서 사용되는 하위 수준 커널 또는 API 세트가 있습니다. 아래에서는 귀하의 제품 세부 정보에 따라 달성하려는 목표에 따라 다양한 유형의 하드웨어가 있을 수 있습니다. 동일한 기능을 달성하지만 동일한 하드웨어나 동일한 PPA 절충안을 사용하지 않습니다."

이는 해당 컴파일러에 많은 부담을 줍니다. "가장 중요한 질문은 미래에 가속기를 어떻게 프로그래밍합니까?" 프랭크가 물었다. “XNUMX세대 GPU와 같이 유선 엔진을 구현했습니까? 아니면 자신만의 명령어 세트로 프로그래밍 가능한 소형 엔진을 구축하셨나요? 이제 이런 것들을 따로 프로그래밍해서 넣어야 합니다. 각각은 데이터 흐름에 연결되어 작업을 수행합니다. 한 프로세서에는 전체 명령어 세트의 특정 하위 세트가 있고 다른 프로세서에는 다른 하위 세트가 있으며 모두 제어 흐름의 일부 겹치는 부분을 공유합니다. 가속 기능이 약간 다른 일부 제품이 있을 수 있습니다. 이를 이해하는 컴파일러나 라이브러리는 그에 따라 매핑됩니다.”

요약

프로세서의 아키텍처는 변경되지 않았습니다. 그들은 여전히 ​​지난 40년 동안 존재했던 동일한 선택을 따릅니다. 변화하는 것은 칩이 구성되는 방식입니다. 이제 여기에는 애플리케이션 작업의 하위 집합에 최적화된 메모리 및 통신이 포함된 다수의 이기종 프로세서가 포함됩니다. 각 칩은 프로세서 기능과 최적화 목적, 필요한 데이터 처리량, 일반적으로 보는 데이터 흐름에 대해 서로 다른 선택을 합니다.

모든 하드웨어 공급업체는 자체 칩을 다른 칩과 구별하기를 원하지만 내부 기술 세부 사항에 대해 이야기하는 것보다 브랜딩을 통해 홍보하는 것이 훨씬 쉽습니다. 그래서 그들은 그것을 첫 번째, 가장 빠른, 가장 큰 이름으로 명명하고 특정 유형의 응용 프로그램 문제와 연결했습니다. 이 세 글자의 약어는 애플리케이션 작업 이름이 되었지만 하드웨어 아키텍처를 정의하지는 않습니다.

최근 몇 년 동안 TPU, IPU, NPU의 세 글자로 된 새로운 프로세서 아키텍처에 대한 발표가 거의 매일 발표되었습니다. 그러나 실제로 그들을 구별하는 것은 무엇입니까? 고유한 프로세서 아키텍처가 정말 많습니까? 아니면 다른 일이 발생했습니까?

2018년에는 John L. Hennessy와 David A. Patterson이 "컴퓨터 아키텍처의 새로운 황금 시대"라는 제목으로 Turing 강의를 했습니다. 그들은 CPU와 그 개발에 관심을 갖고 있지만 이는 전체 방정식의 작은 부분일 뿐입니다. Arteris IP 연구원이자 시스템 설계자인 Michael Frank는 "CPU 관점에서 볼 때 이러한 xPU의 대부분은 실제 프로세서가 아닙니다."라고 말했습니다. “그들은 특별한 작업 부하를 위한 가속기인 GPU에 가깝습니다. 그리고 그들은 내부에 많은 다양성을 가지고 있습니다. 머신러닝은 프로세서의 일종으로, 통틀어 머신러닝 가속기라고 부를 수 있지만 다양한 처리 부분을 가속화합니다.”

프로세서의 본질은 세 가지로 요약할 수 있다. Xilinx의 칩 마케팅 이사인 Manuel Uhm은 “최종 분석에서는 ISA(명령어 세트 아키텍처)로 돌아갑니다.”라고 말했습니다. “이것이 당신이 하고 싶은 일을 정의합니다. 그런 다음 ISA와 ISA가 수행하려는 작업을 지원하는 I/O와 메모리가 있습니다. 앞으로는 매우 흥미로운 시간이 될 것입니다. 지난 XNUMX~XNUMX년보다 더 많은 혁신과 변화가 필요한 시간이 될 것이기 때문입니다.”

많은 새로운 아키텍처는 단일 프로세서가 아닙니다. Cadence의 기술 및 전략 마케팅 그룹 이사인 Pierre-Xavier Thomas는 "우리가 보는 것은 동일한 SoC 또는 동일한 시스템에 존재하는 다양한 유형의 프로세서 또는 프로그래밍 가능 엔진의 조합입니다."라고 말했습니다. “소프트웨어 작업을 다양한 하드웨어나 유연한 프로그래밍 가능 엔진에 배포합니다. 모든 프로세서는 공통 API를 공유할 수 있지만 실행 도메인은 다릅니다. 여기서는 실제로 다양한 유형의 특성을 지닌 다양한 처리 유형을 볼 수 있습니다.”

현실은 대부분의 이름이 마케팅이라는 것입니다.

Imperas Software의 CEO인 Simon Davidmann은 “중요한 점은 사람들이 이러한 이름과 약어를 두 가지 다른 목적으로 사용한다는 것입니다.”라고 말했습니다. “하나는 SIMD(Single Instruction Multiple Data)와 같은 프로세서의 아키텍처를 설명하는 데 사용됩니다. 다른 하나는 주소를 지정하는 애플리케이션 세그먼트를 정의합니다. 따라서 프로세서 아키텍처 또는 TPU(텐서 처리 장치) 브랜드 이름과 같은 것을 정의할 수 있습니다. 그들은 개별 프로세서가 아닌 이기종 또는 동종 아키텍처의 이름을 지정하고 있습니다.”

역사의 비트

XNUMX년 전에는 상황이 훨씬 간단했습니다. 그 당시에는 중앙 처리 장치(CPU)가 있었고 그 변형이 많았지만 기본적으로는 모두 폰 노이만 아키텍처를 사용하는 튜링 완전 프로세서였습니다. 각각은 특정 작업에 대해 더 효율적으로 만드는 서로 다른 명령어 세트를 가지고 있으며, CISC(복잡한 명령어 세트)와 RISC(축소 명령어 세트)의 상대적인 이점에 대해 많은 논의가 있습니다.

RISC-V의 등장으로 ISA에 많은 관심이 쏠렸습니다. Xilinx의 Uhm은 “사람들은 정의된 작업에 프로세서가 얼마나 최적화되는지 정의하는 것이 ISA이기 때문에 ISA를 이해하고 싶어합니다.”라고 말했습니다. “그들은 ISA를 보고 계산 주기를 시작할 수 있습니다. ISA에 기본 명령어가 있고 1GHz에서 실행되는 경우 동일한 기능에 대해 두 개의 명령어가 필요할 수 있지만 프로세서는 1.5GHz에서 실행되는 다른 프로세서 ISA와 비교할 수 있습니다. 어느 것이 나를 더 발전하게 만드는가? 중요한 기능에 대한 수학적 계산을 수행합니다.”

CPU에는 여러 가지 패키징 방법이 있습니다. 때로는 IO 또는 메모리가 동일한 패키지에 배치됩니다. 마이크로컨트롤러 유닛(MCU)이라고 합니다.

모뎀이 대중화되면서 DSP(Digital Signal Processor)가 등장했는데, 그 차이점은 Harvard 아키텍처를 사용했다는 것입니다. 이것은 데이터 버스에서 명령 버스를 분리합니다. 그들 중 일부는 데이터 처리를보다 효율적으로 만들기 위해 SIMD 아키텍처를 구현했습니다.

명령어와 데이터를 분리하면 처리량이 향상되지만 자체 작성 프로그램과 같이 수행할 수 있는 일부 엣지 프로그래밍이 제한됩니다. 엄씨는 “보통 경계조건은 계산이 아니다”라고 말했다. “점점 I/O나 메모리가 늘어나고 있습니다. 업계는 컴퓨팅 성능을 높이는 것에서 컴퓨팅 성능을 유지하고 성능을 유지하기에 충분한 데이터가 있는지 확인하는 방향으로 전환하고 있습니다.”

단일 프로세서가 더 이상 빨라지지 않으면 여러 프로세서를 함께 연결합니다. 이러한 프로세서는 일반적으로 메모리를 공유하고 각 프로세서와 전체 프로세서 클러스터에 대한 튜링 완전성 개념을 유지합니다. 결과가 동일하기 때문에 프로그램의 어떤 부분이 실행되는지는 중요하지 않습니다.

다음 주요 개발은 GPU(그래픽 처리 장치)로, 각 처리 요소 또는 파이프라인에는 자체 메모리가 있고 프로세서 외부에서 처리할 수 없기 때문에 규칙을 어겼습니다. 메모리가 제한되어 있기 때문에 임의의 처리 작업을 수행할 수 없고 제공된 메모리 공간에 배치할 수 있는 작업만 수행할 수 있습니다.

Uhm은 “특정 유형의 기능에 있어서 GPU는 매우 강력한 프로세서이지만 파이프라인이 매우 깁니다.”라고 지적합니다. “이러한 파이프라인을 사용하면 GPU 유닛이 지속적으로 데이터를 처리할 수 있지만 어느 시점에서 파이프라인을 새로 고쳐야 한다면 큰 타격이 될 것입니다. 시스템에는 많은 대기 시간과 불확실성이 내재되어 있습니다.”

다른 많은 가속기가 정의되었지만 GPU(및 이후 GPGPU)는 이전 가속기보다 사용하기 쉽게 만드는 프로그래밍 패러다임과 소프트웨어 스택을 정의했습니다. Imperas의 Davidmann은 "수년 동안 특정 직업은 전문화되었습니다."라고 말했습니다. “순차 프로그램을 위한 CPU가 있습니다. 화면의 데이터 처리에 중점을 두고 우리를 고도의 병렬 세계로 안내하는 그래픽 프로세서가 있습니다. 작업을 수행하기 위해 많은 작은 처리 요소를 사용합니다. 이제는 머신러닝 작업이 있습니다.”

모든 새로운 아키텍처를 설명할 수 있는 다른 구성 규칙은 무엇입니까? 과거에는 프로세서 어레이가 일반적으로 메모리 또는 고정 네트워크 토폴로지(예: 메시 또는 링)를 통해 연결되었습니다. 최근에 등장한 것은 분산된 이기종 프로세서가 보다 유연한 방식으로 통신할 수 있도록 하는 NoC(Network on Chip)의 조합입니다. 미래에는 메모리를 사용하지 않고 통신할 수도 있습니다.

Arteris의 Frank는 "현재 NoC는 데이터만 전달합니다."라고 말했습니다. “향후 NoC는 가속기 간 통신이 데이터를 넘어서는 다른 영역으로 확장될 수 있습니다. 명령을 보내고 알림을 보내는 등의 작업을 수행할 수 있습니다. 가속기 어레이의 통신 요구 사항은 CPU 또는 표준 SoC의 통신 요구 사항과 다를 수 있습니다. 그러나 네트워크 온 칩은 사용자를 하위 집합으로 제한하지 않습니다. 액셀러레이터의 특별한 통신 요구 사항을 지원함으로써 성능을 최적화하고 향상시킬 수 있습니다.”

구현 아키텍처

프로세서를 차별화하는 한 가지 방법은 특정 운영 환경에 맞게 최적화하는 것입니다. 예를 들어 소프트웨어는 클라우드에서 실행될 수 있지만 마이크로 IoT 장치에서도 동일한 소프트웨어를 실행할 수 있습니다. 구현 아키텍처는 매우 다르며 성능, 전력 소비, 비용 또는 극한 조건에서 작동하는 능력 면에서 다른 작동 지점을 달성합니다.

Cadence의 Thomas는 "일부 애플리케이션은 클라우드 컴퓨팅용인데 이제 우리는 이를 엣지에 더 가깝게 만들고 있습니다."라고 말했습니다. “이는 대기 시간 요구 사항이나 에너지 또는 전력 소비로 인해 다른 유형의 아키텍처가 필요할 수 있습니다. 두 위치에서 실행될 수 있도록 정확히 동일한 소프트웨어 스택을 갖고 싶을 수도 있습니다. 클라우드는 다양한 유형의 애플리케이션을 수신하고 많은 수의 사용자를 통합할 수 있어야 하기 때문에 유연성을 제공해야 합니다. 이를 위해서는 서버의 하드웨어가 애플리케이션별 기능을 갖추어야 하지만 단일 크기가 모든 사람에게 적합한 것은 아닙니다.”

ML은 자체 요구 사항을 늘렸습니다. "신경망과 기계 학습을 사용하여 지능형 시스템을 구축하는 경우 소프트웨어 프레임워크와 일반 소프트웨어 스택을 사용하여 새로운 네트워크를 프로그래밍하고 하드웨어에 매핑해야 합니다."라고 Thomas는 덧붙였습니다. “그런 다음 PPA 관점에서 소프트웨어 애플리케이션을 올바른 하드웨어에 적용할 수 있습니다. 이로 인해 하드웨어 수준에서 이러한 요구 사항을 충족할 수 있는 다양한 유형의 처리 및 프로세서가 필요하게 되었습니다.”

이러한 요구 사항은 애플리케이션에 의해 정의됩니다. “한 회사가 그래픽 작업을 위한 프로세서를 만들었습니다.”라고 Frank는 말했습니다. “그래프를 추적하는 방법을 최적화하고 가속화하며 그래프 재정렬과 같은 작업을 수행합니다. 기계 학습을 가속화하는 다른 무차별적인 힘, 즉 행렬 곱셈이 있습니다. 메모리 액세스는 아키텍처마다 다릅니다. 가속기를 구축할 때 가장 중요한 목표는 이를 계속 바쁘게 유지하는 것이기 때문에 특별한 문제입니다. 데이터는 소비되고 생산될 수 있기 때문에 최대한 많은 데이터를 ALU로 전송해야 합니다.”

이러한 응용 프로그램 중 다수에는 공통점이 많습니다. Davidmann은 "모두 로컬 메모리가 있고, 통신할 수 있는 네트워크 온 칩이 있으며, 소프트웨어 알고리즘을 실행하는 각 프로세서가 작은 데이터 조각을 처리하고 있습니다."라고 말했습니다. "이러한 작업은 보다 전통적인 CPU에서 실행되는 운영 체제에 의해 예약됩니다."

하드웨어 설계자에게 까다로운 부분은 수행해야 할 작업을 예측하는 것입니다. Thomas는 "일부 레이어에서는 유사한 유형의 작업을 수행하지만 사람들은 레이어의 차별화에 주의를 기울이고 있습니다."라고 말했습니다. “신경망을 처리하려면 여러 유형의 처리 능력이 필요합니다. 이는 어떤 방식으로든 신경망의 일부를 처리할 수 있어야 하며, 다른 레이어를 처리하려면 다른 유형의 작업이 필요할 수 있음을 의미합니다. 데이터 이동 그리고 데이터의 양도 계층별로 변화하고 있습니다.”

이러한 차별화는 데이터 이동 그 이상일 수 있습니다. “게놈 서열 분석을 위해서는 약간의 처리가 필요합니다.”라고 Frank는 말했습니다. “그러나 단일 유형의 가속기를 사용하여 모든 것을 가속화할 수는 없습니다. 다양한 파이프라인에 대해 다양한 가속기 전체 세트를 구축해야 합니다. CPU는 관리 실행 프로세스의 수호자가 됩니다. DMA를 설정하고 실행하며 두 프로세스 간의 의사결정을 제공합니다. 알고리즘을 이해 및 분석하고 처리를 최적화하는 방법을 정의하는 것은 완전한 아키텍처 작업입니다.”

프로세스의 일부에는 파티셔닝이 필요합니다. "각 프로세서 작업에 최적화할 수 있는 단일 프로세서 유형은 없습니다. FPGA도 좋지 않고, CPU도 좋지 않고, GPU도 좋지 않고, DSP도 필요합니다."라고 엄씨는 말했습니다. “우리는 이 모든 것을 포함하는 일련의 장치를 만들었지만 고객 측에서 어려운 부분은 전체 시스템의 어느 부분이 프로세서나 프로그래밍 가능한 논리 또는 AI를 대상으로 할지 결정하기 위한 인텔리전스를 제공해야 한다는 것입니다. 엔진. 모두가 원합니다 자동 마법 도구, CPU에 넣을지, FPGA에 넣을지, GPU에 넣을지 즉시 결정할 수 있는 도구입니다. 그 도구는 현재 존재하지 않습니다.”

그럼에도 불구하고 CPU는 항상 중요한 역할을 합니다. Frank는 “프로그램의 불규칙한 부분을 실행하려면 CPU가 필요합니다.”라고 말했습니다. “CPU의 일반적인 프로그래밍 가능성에는 장점이 있습니다. 특수한 데이터 구조나 수학적 연산이 있으면 제대로 작동하지 않습니다. CPU는 범용 프로세서이며 어떤 용도로도 최적화되지 않았습니다. 아무것도 좋지 않아요.”

"추상" 변경

과거에는 하드웨어/소프트웨어 경계가 ISA에 의해 정의되었으며 메모리는 지속적으로 주소 지정이 가능했습니다. 프로세서가 여러 개인 경우 일반적으로 메모리 정렬됩니다.

Frank는 “일관성은 계약입니다.”라고 말했습니다. “이런 일관성은 매우 중요하며 사라지지 않을 것입니다. 그러나 데이터 흐름 엔진에서는 에지에서 이동하는 데이터를 한 액셀러레이터에서 다른 액셀러레이터로 직접 전송하기 때문에 일관성이 그다지 중요하지 않다고 생각할 수 있습니다. 데이터 세트를 분할하면 추가 주기가 소요되므로 일관성이 장애물이 됩니다. 정보를 확인하셔야 합니다. 최신 정보를 제공해야 합니다.”

이를 위해서는 다른 메모리 아키텍처가 필요합니다. 엄씨는 “밀접하게 결합된 메모리가 너무 많기 때문에 메모리 구조를 생각해야 한다”고 말했다. “인접 메모리에 접근할 수 있지만, 인접 메모리가 빨리 소진되어 시간 내에 접근할 수 없게 됩니다. 이것은 디자인에서 이해되어야합니다. 도구가 성숙해짐에 따라 도구는 더 많은 것을 배우기 시작할 것입니다. 오늘날 이는 아키텍처를 이해하고 적용할 수 있는 인간의 지능에 의해 수행됩니다.”

더 높은 수준의 추상화도 필요합니다. Thomas는 "일부 프레임워크는 알려진 네트워크를 대상 하드웨어에 매핑하거나 컴파일할 수 있습니다."라고 말했습니다. “소프트웨어 스택에서 사용된 다음 결국 신경망의 매퍼에서 사용되는 하위 수준 커널 또는 API 세트가 있습니다. 아래에서는 귀하의 제품 세부 정보에 따라 달성하려는 목표에 따라 다양한 유형의 하드웨어가 있을 수 있습니다. 동일한 기능을 달성하지만 동일한 하드웨어나 동일한 PPA 절충안을 사용하지 않습니다."

이는 해당 컴파일러에 많은 부담을 줍니다. "가장 중요한 질문은 미래에 가속기를 어떻게 프로그래밍합니까?" 프랭크가 물었다. “XNUMX세대 GPU와 같이 유선 엔진을 구현했습니까? 아니면 자신만의 명령어 세트로 프로그래밍 가능한 소형 엔진을 구축하셨나요? 이제 이런 것들을 따로 프로그래밍해서 넣어야 합니다. 각각은 데이터 흐름에 연결되어 작업을 수행합니다. 한 프로세서에는 전체 명령어 세트의 특정 하위 세트가 있고 다른 프로세서에는 다른 하위 세트가 있으며 모두 제어 흐름의 일부 겹치는 부분을 공유합니다. 가속 기능이 약간 다른 일부 제품이 있을 수 있습니다. 이를 이해하는 컴파일러나 라이브러리는 그에 따라 매핑됩니다.”

요약

프로세서의 아키텍처는 변경되지 않았습니다. 그들은 여전히 ​​지난 40년 동안 존재했던 동일한 선택을 따릅니다. 변화하는 것은 칩이 구성되는 방식입니다. 이제 여기에는 애플리케이션 작업의 하위 집합에 최적화된 메모리 및 통신이 포함된 다수의 이기종 프로세서가 포함됩니다. 각 칩은 프로세서 기능과 최적화 목적, 필요한 데이터 처리량, 일반적으로 보는 데이터 흐름에 대해 서로 다른 선택을 합니다.

모든 하드웨어 공급업체는 자체 칩을 다른 칩과 구별하기를 원하지만 내부 기술 세부 사항에 대해 이야기하는 것보다 브랜딩을 통해 홍보하는 것이 훨씬 쉽습니다. 그래서 그들은 그것을 첫 번째, 가장 빠른, 가장 큰 이름으로 명명하고 특정 유형의 응용 프로그램 문제와 연결했습니다. 이 세 글자의 약어는 애플리케이션 작업 이름이 되었지만 하드웨어 아키텍처를 정의하지는 않습니다.