El Pixel Visual Core ( PVC ) es una serie de ARM basado en el sistema de paquetes (SIP) procesadores de imágenes diseñadas por Google . [1] El PVC es una imagen , visión e IA completamente programable de arquitectura de dominio específico (DSA) de múltiples núcleos para dispositivos móviles y, en el futuro, para IoT . [2] Apareció por primera vez en Google Pixel 2 y 2 XL, que se introdujeron el 19 de octubre de 2017. También apareció en Google Pixel 3 y 3 XL . Comenzando con Pixel 4, este chip fue reemplazado por Pixel Neural Core .
Historia
Google utilizó anteriormente la CPU , GPU , IPU y DSP de Qualcomm Snapdragon para manejar el procesamiento de imágenes para sus dispositivos Google Nexus y Google Pixel . Con la creciente importancia de las técnicas de fotografía computacional , Google desarrolló Pixel Visual Core (PVC). Google afirma que el PVC usa menos energía que el uso de CPU y GPU, sin dejar de ser completamente programable, a diferencia de su circuito integrado específico de aplicación (ASIC) de unidad de procesamiento de tensor (TPU ). De hecho, los dispositivos móviles clásicos equipan un procesador de señal de imagen (ISP) que es una tubería de procesamiento de imágenes de funcionalidad fija . En contraste con esto, el PVC tiene una funcionalidad programable flexible, que no se limita solo al procesamiento de imágenes.
El PVC en Google Pixel 2 y 2 XL está etiquetado como SR3HX X726C502. [3]
El PVC en Google Pixel 3 y 3 XL está etiquetado como SR3HX X739F030. [4]
Gracias al PVC, Pixel 2 y Pixel 3 obtuvieron un DxOMark móvil de 98 [5] y 101. [6] Este último fue el puntaje DxOMark móvil de lente única mejor clasificado, empatado con el iPhone XR. [7]
Software Pixel Visual Core
Un programa típico de procesamiento de imágenes del PVC está escrito en Halide . Actualmente, solo admite un subconjunto del lenguaje de programación Halide sin operaciones de punto flotante y con patrones de acceso a memoria limitados. [8] Halide es un lenguaje específico de dominio que permite al usuario desacoplar el algoritmo y la programación de su ejecución. De esta forma, el desarrollador puede escribir un programa optimizado para la arquitectura de hardware de destino. [2]
Pixel Visual Core ISA
El PVC tiene dos tipos de arquitectura de conjunto de instrucciones (ISA) , una virtual y otra física. Primero, se compila un programa de lenguaje de alto nivel en un ISA virtual (vISA) , inspirado en RISC-V ISA, [2] que se abstrae completamente de la generación de hardware de destino. Luego, el programa vISA se compila en el llamado ISA físico (pISA) , que es un VLIW ISA. Este paso de compilación tiene en cuenta los parámetros de hardware de destino (por ejemplo, matriz de tamaño de PE, tamaño de STP, etc.) y especifica explícitamente los movimientos de memoria. El desacoplamiento de vISA y pISA permite que el primero sea de arquitectura cruzada e independiente de la generación, mientras que pISA se puede compilar fuera de línea o mediante la compilación JIT . [8]
Arquitectura Pixel Visual Core
Pixel Visual Core está diseñado para ser una arquitectura de eficiencia energética de múltiples núcleos escalable, que van desde números pares entre diseños de 2 a 16 núcleos. [2] El núcleo de un PVC es la unidad de procesamiento de imágenes (IPU), una unidad programable diseñada para el procesamiento de imágenes. La arquitectura Pixel Visual Core también se diseñó para ser su propio chip, como el SR3HX, o como un bloque de IP para System on a chip (SOC) . [2]
Unidad de procesamiento de imágenes (IPU)
El núcleo de la IPU tiene un procesador de esténcil (STP), un grupo de búfer de línea (LBP) y un NoC . El STP proporciona principalmente una matriz 2-D SIMD de elementos de procesamiento (PE) capaces de realizar cálculos de esténcil , una pequeña vecindad de píxeles. Aunque parece similar a la matriz sistólica y los cálculos de frente de onda, el STP tiene un movimiento de datos explícito controlado por software. Cada PE presenta 2 unidades aritméticas lógicas (ALU) de 16 bits, 1 unidad de multiplicador-acumulador (MAC) de 16 bits , 10 registros de 16 bits y 10 registros de predicado de 1 bit. [2]
Grupo de búfer de línea (LBP)
Teniendo en cuenta que una de las operaciones más costosas de energía es el acceso a DRAM, cada STP tiene búferes temporales para aumentar la localidad de datos , a saber, LBP. El LBP usado es un FIFO 2-D que se adapta a diferentes tamaños de lectura y escritura. El LBP utiliza un modelo de comportamiento de múltiples consumidores de un solo productor. Cada LBP puede tener ocho memorias LB lógicas y una para operaciones de entrada-salida DMA . [8] Debido a la alta complejidad real del sistema de memoria, los diseñadores de PVC afirman que el controlador LBP es uno de los componentes más desafiantes. [2] El NoC utilizado es una red en anillo en un chip que se utiliza para comunicarse solo con núcleos vecinos para ahorrar energía y preservar el patrón computacional en canalización. [2]
Procesador de esténcil (STP)
El STP tiene una matriz 2-D de PE: por ejemplo, una matriz de 16x16 de PE completos y cuatro carriles de PE simplificados llamados "halo" . El STP tiene un procesador escalar, llamado carril escalar (SCL), que agrega instrucciones de control con una pequeña memoria de instrucciones. El último componente de un STP es una unidad de almacenamiento de carga llamada generador de hojas (SHG), donde la hoja es la unidad de acceso a la memoria de PVC. [2]
Resumen de diseño de SR3HX
El SR3HX PVC cuenta con una CPU ARMv8a ARM Cortex-A53 de 64 bits, 8 núcleos de unidad de procesamiento de imágenes (IPU), 512 MB LPDDR4 , MIPI, PCIe. Cada uno de los núcleos de la IPU tiene 512 unidades lógicas aritméticas (ALU) que constan de 256 elementos de procesamiento (PE) dispuestos como una matriz bidimensional de 16 x 16. Esos núcleos ejecutan un VLIW ISA personalizado. Hay dos ALU de 16 bits por elemento de procesamiento y pueden operar de tres formas distintas: independientes, unidas y fusionadas. [9] El PVC SR3HX es fabricado como SiP por TSMC usando su proceso HKMG de 28HPM . [1] Fue diseñado durante 4 años en asociación con Intel . (Nombre en clave: Monette Hill) [10] Google afirma que el PVC SR3HX es 7-16 veces más eficiente energéticamente que el Snapdragon 835 . [1] Y que el SR3HX PVC puede realizar 3 billones de operaciones por segundo, HDR + puede funcionar 5 veces más rápido y con menos de una décima parte de la energía que el Snapdragon 835 . [11] Es compatible con Halide para el procesamiento de imágenes y TensorFlow para el aprendizaje automático. [11] El chip actual funciona a 426MHz y la única IPU es capaz de realizar más de 1 TeraOPS. [2] [8]
Referencias
- ^ a b c Cortador, Ian. "Hot Chips 2018: el blog en vivo de Google Pixel Visual Core (10 a. M. PT, 5 p. M. UTC)" . www.anandtech.com . Consultado el 2 de febrero de 2019 .
- ^ a b c d e f g h yo j Hennessy, John; Patterson, David (2017). Arquitectura informática: un enfoque cuantitativo (Sexta ed.). Morgan Kaufmann. págs. 579–606. ISBN 978-0-12-811905-1.
- ^ "Desmontaje de Google Pixel 2 XL" . iFixit . 2017-10-19 . Consultado el 2 de febrero de 2019 .
- ^ "Desmontaje de Google Pixel 3 XL" . iFixit . 2018-10-16 . Consultado el 2 de febrero de 2019 .
- ^ "Pixel 2 DxOMark" .
- ^ "Pixel 3 DxOMark" .
- ^ "iPhone XR DxOMark" .
- ^ a b c d "Pixel Visual Core: Procesador de imagen, visión e inteligencia artificial totalmente programable de Google para dispositivos móviles. HotChips2018" (PDF) .
- ^ "Pixel Visual Core (PVC) - Google - WikiChip" . en.wikichip.org . Consultado el 2 de febrero de 2019 .
- ^ "Google se asoció con Intel para el chip Pixel Visual Core en el Pixel 2" . desarrolladores xda . 2017-10-25 . Consultado el 2 de febrero de 2019 .
- ^ a b "Pixel Visual Core: procesamiento de imágenes y aprendizaje automático en Pixel 2" . Google . 2017-10-17 . Consultado el 2 de febrero de 2019 .