픽셀 비주얼 코어

**픽셀 비주얼 코어**(Pixel Visual Core, **PVC**)는 구글이 설계한 ARM 기반 시스템 인 패키지(SiP) 이미지 프로세서 시리즈이다.access-date=2019-02-02 PVC는 모바일 장치 및 향후 IoT를 위한 완전 프로그래밍 가능한 이미지, 비전 및 AI 다중 코어 도메인 특화 아키텍처(DSA)이다.pages=579–606 이 칩은 2017년 10월 19일에 출시된 구글 픽셀 2 및 2 XL에 처음 등장했다. 또한 구글 픽셀 3 및 3 XL에도 탑재되었다. 픽셀 4부터는 이 칩이 픽셀 뉴럴 코어로 대체되었다.
# 역사
구글은 이전에 구글 넥서스 및 구글 픽셀 장치의 영상 처리를 위해 스냅드래곤의 CPU, GPU, IPU 및 DSP를 사용했다. 계산사진술 기술의 중요성이 커지면서 구글은 픽셀 비주얼 코어(PVC)를 개발했다. 구글은 PVC가 CPU 및 GPU를 사용하는 것보다 전력을 덜 사용하면서도 완전 프로그래밍이 가능하다고 주장하는데, 이는 TPU ASIC과는 다르다. 실제로 기존 모바일 장치는 고정된 기능을 가진 이미지 신호 프로세서(ISP) 파이프라인을 갖추고 있다. 이와 대조적으로 PVC는 이미지 처리에만 국한되지 않는 유연한 프로그래밍 기능을 가지고 있다. 구글 픽셀 2 및 2 XL에 탑재된 PVC는 SR3HX X726C502로 표시되어 있다.access-date=2019-02-02 구글 픽셀 3 및 3 XL에 탑재된 PVC는 SR3HX X739F030으로 표시되어 있다.access-date=2019-02-02 PVC 덕분에 픽셀 2와 픽셀 3는 모바일 DxOMark에서 각각 98점date=4 October 2017과 101점date=18 September 2019을 획득했다. 후자는 아이폰 XR과 동점으로 단일 렌즈 모바일 DxOMark 최고 점수를 기록했다.date=6 December 2018
# 소프트웨어
PVC 프로그래머를 위한 커널의 유향 비순환 그래프 보기 PVC의 일반적인 영상 처리 프로그램은 Halide로 작성된다. 현재는 부동 소수점 연산이 없고 제한된 메모리 접근 패턴을 가진 Halide 프로그래밍 언어의 하위 집합만 지원한다.title=The Pixel Visual Core: Google's Fully Programmable Image, Vision and AI Processor for Mobile Devices. HotChips2018 Halide는 도메인 특화 언어로, 사용자가 알고리즘과 실행의 스케줄링을 분리할 수 있게 한다. 이러한 방식으로 개발자는 대상 하드웨어 아키텍처에 최적화된 프로그램을 작성할 수 있다.
# 명령어 집합
PVC는 가상 ISA와 물리적 ISA의 두 가지 유형의 명령어 집합 아키텍처(ISA)를 가지고 있다. 먼저, 고급 언어 프로그램은 대상 하드웨어 세대와 완전히 분리된 RISC-V ISA에서 영감을 받은 가상 ISA(vISA)로 컴파일된다. 그런 다음 vISA 프로그램은 VLIW ISA인 물리적 ISA(pISA)로 컴파일된다. 이 컴파일 단계에서는 대상 하드웨어 매개변수(예: PE 크기 배열, STP 크기 등)를 고려하고 메모리 이동을 명시적으로 지정한다. vISA와 pISA의 분리는 vISA가 교차 아키텍처 및 세대 독립적이며, pISA는 오프라인 또는 JIT 컴파일을 통해 컴파일될 수 있도록 한다.
# 아키텍처
4개의 코어를 가진 PVC의 예시 픽셀 비주얼 코어는 2개에서 16개 코어 설계 사이의 짝수로 구성된 확장 가능한 멀티 코어 에너지 효율적인 아키텍처로 설계되었다. PVC의 핵심은 이미지 처리에 특화된 프로그래밍 가능한 장치인 **이미지 처리 장치**(IPU)이다. 픽셀 비주얼 코어 아키텍처는 SR3HX와 같이 자체 칩으로 또는 시스템 온 칩(SOC)용 IP 블록으로도 설계되었다.
## 이미지 처리 장치 (IPU)
IPU 코어는 스텐실 프로세서(STP), 라인 버퍼 풀(LBP) 및 NoC를 가지고 있다. STP는 주로 2D SIMD 처리 요소(PE) 배열을 제공하며, 작은 픽셀 주변 영역에 대한 스텐실 계산을 수행할 수 있다. 시스톨릭 배열 및 파동면 계산과 유사해 보이지만, STP는 명시적인 소프트웨어 제어 데이터 이동을 가지고 있다. 각 PE는 2개의 16비트 산술 논리 장치(ALU), 1개의 16비트 곱셈 누산기(MAC), 10개의 16비트 레지스터, 그리고 10개의 1비트 프레디케이트 레지스터를 특징으로 한다.
### 라인 버퍼 풀 (LBP)
DRAM 접근이 가장 에너지 비용이 많이 드는 작업 중 하나임을 고려하여, 각 STP는 데이터 국부성을 높이기 위한 임시 버퍼인 LBP를 가지고 있다. 사용되는 LBP는 다양한 크기의 읽기 및 쓰기를 수용하는 2D FIFO이다. LBP는 단일 생산자 다중 소비자 행동 모델을 사용한다. 각 LBP는 8개의 논리적 LB 메모리와 DMA 입출력 작업을 위한 하나를 가질 수 있다. 메모리 시스템의 실제적인 높은 복잡성 때문에 PVC 설계자들은 LBP 컨트롤러를 가장 어려운 구성 요소 중 하나로 꼽는다. 사용되는 NoC는 에너지 절약 및 파이프라인 계산 패턴 보존을 위해 이웃 코어와만 통신하는 링 네트워크 온 칩이다.
### 스텐실 프로세서 (STP)
PE의 2D 배열 표현. 흰색은 전체 PE(16x16), 회색은 "헤일로"(144)의 일부이다. 명확성을 위해 모든 연결이 보고되지는 않았다. STP는 PE의 2D 배열을 가지고 있다. 예를 들어, 16x16 배열의 전체 PE와 "헤일로"라고 불리는 4개의 단순화된 PE 레인이다. STP는 작은 명령어 메모리로 제어 명령어를 추가하는 스칼라 레인(SCL)이라는 스칼라 프로세서를 가지고 있다. STP의 마지막 구성 요소는 시트 생성기(SHG)라고 불리는 로드 스토어 유닛으로, 여기서 시트는 PVC 메모리 접근 유닛이다.
# SR3HX 설계 요약
SR3HX PVC는 64비트 ARMv8a ARM Cortex-A53 CPU, 8개의 이미지 처리 장치(IPU) 코어, 512MB LPDDR4, MIPI, PCIe를 특징으로 한다. 각 IPU 코어는 256개의 처리 요소(PE)가 16 x 16 2차원 배열로 배열된 512개의 산술 논리 장치(ALU)로 구성된다. 이 코어들은 사용자 정의 VLIW ISA를 실행한다. 각 처리 요소에는 두 개의 16비트 ALU가 있으며, 독립, 결합, 융합의 세 가지 방식으로 작동할 수 있다.access-date=2019-02-02 SR3HX PVC는 TSMC의 28HPM HKMG 공정을 사용하여 SiP로 제조된다. 이는 인텔과 협력하여 4년 이상 설계되었다. (코드명: 모네트 힐)access-date=2019-02-02 구글은 SR3HX PVC가 스냅드래곤 835보다 7~16배 더 에너지 효율적이라고 주장한다. 또한 SR3HX PVC는 초당 3조 회의 연산을 수행할 수 있으며, HDR+는 스냅드래곤 835보다 5배 빠르게, 그리고 10분의 1 미만의 에너지로 실행될 수 있다.access-date=2019-02-02 Halide를 이용한 이미지 처리와 텐서플로를 이용한 기계 학습을 지원한다. 현재 칩은 426MHz로 작동하며, 단일 IPU는 1 TeraOPS 이상을 수행할 수 있다.