¿Realmente necesitamos tantas xPU?

Actualización: 17 de noviembre de 2021

"En los últimos años, se han emitido anuncios sobre nuevas arquitecturas de procesadores casi todos los días, con un acrónimo de tres letras: TPU, IPU, NPU. Pero, ¿qué los distingue realmente? ¿Hay realmente tantas arquitecturas de procesador únicas o ha sucedido algo más?

"

En los últimos años, se han emitido anuncios sobre nuevas arquitecturas de procesadores casi todos los días, y se ha dado un acrónimo de tres letras: TPU, IPU, NPU. Pero, ¿qué los distingue realmente? ¿Hay realmente tantas arquitecturas de procesador únicas o ha sucedido algo más?

En 2018, John L. Hennessy y David A. Patterson dieron una conferencia de Turing titulada "La nueva edad de oro de la arquitectura informática". Están preocupados por la CPU y su desarrollo, pero esto es solo una pequeña parte de toda la ecuación. El investigador de IP y arquitecto de sistemas de Arteris, Michael Frank, dijo: "Desde la perspectiva de la CPU, la mayoría de estas xPU no son procesadores reales". “Se parecen más a una GPU, un acelerador para cargas de trabajo especiales. Y tienen mucha diversidad en su interior. El aprendizaje automático es un tipo de procesador, puede llamarlos aceleradores de aprendizaje automático colectivamente, pero aceleran la parte de procesamiento de una variedad de ”.

La esencia del procesador se puede reducir a tres cosas. “En el análisis final, vuelve a la arquitectura del conjunto de instrucciones (ISA)”, dijo Manuel Uhm, director de marketing de chips de Xilinx. “Esto define lo que quieres hacer. Luego tiene E / S y memoria, que son compatibles con ISA y las tareas que está tratando de realizar. Este será un momento muy interesante en el futuro, porque veremos más que los últimos dos o tres años. Es hora de más innovación y cambio ".

Muchas arquitecturas nuevas no son procesadores únicos. "Lo que vemos es una combinación de diferentes tipos de procesadores o motores programables que existen en el mismo SoC o en el mismo sistema", dijo Pierre-Xavier Thomas, director del grupo Cadence. Tecnología y Marketing Estratégico. “Distribuir tareas de software a diferentes hardware o motores programables flexibles. Todos los procesadores pueden compartir una API común, pero el dominio de ejecución será diferente. Aquí realmente verán diferentes tipos de procesamiento con diferentes tipos de características”.

La realidad es que la mayoría de los nombres son de marketing.

“El caso es que la gente usa estos nombres y acrónimos para dos propósitos diferentes”, dijo Simon Davidmann, director ejecutivo de Imperas Software. “Uno se utiliza para explicar la arquitectura del procesador, como SIMD (Single Instruction Multiple Data). El otro define el segmento de la aplicación al que se dirige. Por lo tanto, puede definir la arquitectura del procesador, o algo así como una unidad de procesamiento tensorial (TPU) Marcas. Están nombrando sus arquitecturas heterogéneas u homogéneas, no procesadores individuales ".

Un poco de historia

Hace cuarenta años, las cosas eran mucho más sencillas. En ese momento había una unidad central de procesamiento (CPU) y había muchas variantes de ella, pero básicamente eran todos procesadores Turing completos con arquitectura von Neumann. Cada uno tiene un conjunto de instrucciones diferente que los hace más eficientes para determinadas tareas, y hay mucha discusión sobre las ventajas relativas del conjunto de instrucciones complejas (CISC) y el conjunto de instrucciones reducido (RISC).

La aparición de RISC-V ha atraído mucha atención a ISA. “La gente quiere entender ISA porque es ISA el que define cuán optimizado está el procesador para tareas definidas”, dijo Uhm de Xilinx. “Pueden mirar el ISA y comenzar el ciclo de cálculo. Si un ISA tiene instrucciones nativas y funciona a 1 GHz, puedo compararlo con otro procesador ISA, que puede requerir dos instrucciones para la misma función, pero el procesador funciona a 1.5 GHz. ¿Cuál me hace ir más lejos? Hacen cálculos matemáticos para funciones importantes ".

Existen varios métodos de empaquetado para CPU. A veces, la IO o la memoria se colocan en el mismo paquete. Se denominan unidades de microcontrolador (MCU).

Cuando los módems se hicieron populares, aparecieron los procesadores de señales digitales (DSP), y su diferencia fue que usaban la arquitectura de Harvard. Esto separa el bus de comando del bus de datos. Algunos de ellos también han implementado la arquitectura SIMD para hacer más eficiente el procesamiento de datos.

La separación de instrucciones y datos tiene como objetivo mejorar el rendimiento, aunque limita algunas de las programaciones de borde que se pueden realizar, como los programas autoescritos. "Por lo general, las condiciones de contorno no son cálculos", dijo Uhm. “Es cada vez más E / S o memoria. La industria está pasando de aumentar la potencia informática a garantizar que haya suficientes datos para mantener la potencia informática y el rendimiento ".

Cuando un solo procesador ya no se vuelve más rápido, conectan varios procesadores juntos. Estos procesadores generalmente comparten memoria y mantienen el concepto de integridad de Turing para cada procesador y todo el grupo de procesadores. No importa en qué núcleo se ejecute cualquier parte del programa, porque el resultado es el mismo.

El siguiente gran desarrollo es la unidad de procesamiento de gráficos (GPU), que rompió la convención porque cada elemento de procesamiento o canalización tiene su propia memoria y no se puede direccionar fuera del procesador. Debido a que la memoria es limitada, esto significa que no puede realizar ninguna tarea de procesamiento arbitraria, sino que solo puede realizar tareas que se pueden colocar en el espacio de memoria provisto.

"Para ciertos tipos de funciones, las GPU son procesadores muy potentes, pero sus procesos son muy largos", señala Uhm. “Estas canalizaciones permiten que la unidad GPU procese datos de forma continua, pero en algún momento, si tiene que actualizar la canalización, será un gran golpe. El sistema incorpora mucha latencia e incertidumbre ".

Aunque se han definido muchos otros aceleradores, las GPU, y más tarde las GPU de propósito general (GPGPU), definieron un paradigma de programación y una pila de software que los hacían más fáciles de usar que los aceleradores anteriores. “Durante muchos años, ciertos trabajos se han especializado”, dijo Davidmann de Imperas. “Hay una CPU para programas secuenciales. Hay un procesador de gráficos, que se enfoca en procesar datos para el Pantalla y nos lleva a un mundo muy paralelo. Utiliza muchos elementos de procesamiento pequeños para realizar tareas. Ahora hay tareas de aprendizaje automático ".

¿Qué otras reglas de construcción pueden explicar toda la nueva arquitectura? En el pasado, las matrices de procesadores solían conectarse mediante memoria o topologías de red fija (como malla o anillo). Lo que ha surgido recientemente es la combinación de Network on Chip (NoC), que permite a los procesadores heterogéneos distribuidos comunicarse de una manera más flexible. En el futuro, también podrán comunicarse sin utilizar la memoria.

“En este momento, NoC solo transporta datos”, dijo Frank de Arteris. “En el futuro, NoC se puede extender a otras áreas donde la comunicación entre aceleradores va más allá de los datos. Puede enviar comandos, enviar notificaciones, etc. Los requisitos de comunicación de la matriz del acelerador pueden ser diferentes de los requisitos de comunicación de la CPU o el SoC estándar. Sin embargo, la red en el chip no lo restringirá a un subconjunto. Puede optimizar y mejorar el rendimiento respaldando las necesidades especiales de comunicación de los aceleradores ".

Arquitectura de implementación

Una forma de diferenciar el procesador es optimizarlo para un entorno operativo específico. Por ejemplo, el software puede ejecutarse en la nube, pero también puede ejecutar el mismo software en un dispositivo micro IoT. La arquitectura de implementación será muy diferente y logrará diferentes puntos operativos en términos de rendimiento, consumo de energía, costo o capacidad para operar en condiciones extremas.

“Algunas aplicaciones son para la computación en la nube, y ahora las estamos acercando al borde”, dijo Thomas de Cadence. “Esto puede deberse a requisitos de latencia, o energía o disipación de potencia, lo que requerirá un tipo diferente de arquitectura. Es posible que desee tener exactamente la misma pila de software para poder ejecutar en dos ubicaciones. La nube debe proporcionar flexibilidad porque recibirá diferentes tipos de aplicaciones y debe poder agregar una gran cantidad de usuarios. Esto requiere que el hardware del servidor tenga capacidades específicas de la aplicación, pero un tamaño no es adecuado para todos ".

ML ha aumentado sus propios requisitos. "Cuando se utilizan redes neuronales y aprendizaje automático para construir sistemas inteligentes, es necesario utilizar marcos de software y pilas de software generales para programar la nueva red y asignarla al hardware", añadió Thomas. “Entonces puede adaptar la aplicación de software al hardware adecuado desde una perspectiva de PPA. Esto impulsa la necesidad de diferentes tipos de procesamiento y procesadores para poder satisfacer estas necesidades a nivel de hardware ".

Estos requisitos los define la aplicación. “Una empresa ha creado un procesador para operaciones gráficas”, dijo Frank. “Optimizan y aceleran el seguimiento de los gráficos y realizan operaciones como reordenar los gráficos. Hay otras fuerzas brutas que aceleran el aprendizaje automático, a saber, la multiplicación de matrices. El acceso a la memoria es diferente para cada arquitectura. Es un problema especial porque cuando construyes un acelerador, el objetivo más importante es mantenerlo ocupado. Tienes que transferir la mayor cantidad de datos posible a la ALU porque se pueden consumir y producir ".

Muchas de estas aplicaciones tienen mucho en común. “Todos tienen algo de memoria local, tienen una red en un chip para comunicarse y cada procesador que ejecuta un algoritmo de software está procesando una pequeña parte de los datos”, dijo Davidmann. "Estos trabajos los programan los sistemas operativos que se ejecutan en CPU más tradicionales".

La parte complicada para los diseñadores de hardware es predecir qué tareas deberán realizar. “Aunque realizará tipos de operaciones similares en algunas capas, la gente está prestando atención a la diferenciación en las capas”, dijo Thomas. “Para poder procesar una red neuronal, se requieren varios tipos de potencia de procesamiento. Esto significa que debe poder procesar una parte de la red neuronal de alguna manera, y luego es posible que necesite otro tipo de operación para procesar otra capa. Movimiento de datos Y la cantidad de datos también está cambiando capa por capa ".

Esta diferenciación puede ir más allá del movimiento de datos. "Para la secuenciación del genoma, es necesario realizar algún procesamiento", dijo Frank. “Pero no se puede usar un solo tipo de acelerador para acelerar todo. Tienes que construir un conjunto completo de aceleradores diferentes para diferentes tuberías. La CPU se convierte en la guardiana del proceso de ejecución de la gestión. Configura, ejecuta DMA y proporciona la toma de decisiones entre los dos procesos. Comprender y analizar algoritmos y definir cómo desea optimizar su procesamiento es una tarea arquitectónica completa ".

Parte del proceso requiere particiones. “No existe un solo tipo de procesador que se pueda optimizar para cada tarea del procesador.FPGA no es bueno, la CPU no es buena, la GPU no es buena, el DSP también es necesario ”, dijo Uhm. “Creamos una serie de dispositivos que contienen todos estos, pero la parte difícil del lado del cliente es que tienen que proporcionar inteligencia para determinar qué partes del sistema general se dirigirán al procesador o la lógica programable, o en la IA. Motor. Todo el mundo quiere esa herramienta mágica automática, una herramienta que pueda decidir inmediatamente ponerla en la CPU, ponerla en la FPGA y ponerla en la GPU. Esa herramienta no existe hoy ".

Sin embargo, la CPU siempre jugará un papel. "La CPU es necesaria para ejecutar partes irregulares del programa", dijo Frank. “La programabilidad general de la CPU tiene sus ventajas. Si tiene estructuras de datos especializadas u operaciones matemáticas, no funcionará bien. La CPU es un procesador de propósito general y no está optimizado para nada. No sirve para nada. . "

Cambiar "abstracto"

En el pasado, el límite de hardware / software estaba definido por la ISA, y la memoria era continuamente direccionable. Cuando hay varios procesadores, generalmente están alineados con la memoria.

"La coherencia es un contrato", dijo Frank. “Este tipo de consistencia es muy importante y no desaparecerá. Pero puede imaginar que en un motor de flujo de datos, la coherencia no es tan importante, porque transfiere los datos que se mueven en el borde directamente de un acelerador a otro. Si divide el conjunto de datos, la coherencia se convertirá en un obstáculo porque le costará ciclos adicionales. Debes comprobar la información. Debe proporcionar información actualizada ".

Esto requiere una arquitectura de memoria diferente. "Tienes que pensar en la estructura de la memoria, porque tienes una cantidad limitada de memoria estrechamente acoplada", dijo Uhm. “Puede acceder a la memoria adyacente, pero rápidamente se quedará sin memoria adyacente y no podrá acceder a ella a tiempo. Esto debe entenderse en el diseño. A medida que la herramienta madura, la herramienta comenzará a aprender más. Hoy, lo hace la inteligencia humana, capaz de entender la arquitectura y aplicarla ”.

También se necesita un mayor nivel de abstracción. “Algunos marcos pueden mapear o compilar redes conocidas para apuntar al hardware”, dijo Thomas. “Tiene un conjunto de kernels o API de bajo nivel que se usarán en la pila de software y luego, eventualmente, el mapeador de la red neuronal las usará. A continuación, puede tener diferentes tipos de hardware, según lo que desee lograr, según los detalles de su producto. Logra la misma funcionalidad, pero no utiliza el mismo hardware ni las mismas compensaciones de PPA ".

Esto ejerce mucha presión sobre esos compiladores. "La pregunta principal es ¿cómo se programa el acelerador en el futuro?" Preguntó Frank. “¿Ha implementado un motor cableado como la primera generación de GPU? ¿O ha construido un pequeño motor programable con su propio conjunto de instrucciones? Ahora tienes que programar estas cosas por separado y ponerlas en cada una de ellas está conectada al flujo de datos para realizar tareas. Un procesador tiene un cierto subconjunto del conjunto completo de instrucciones, y el otro procesador tiene un subconjunto diferente, y todos compartirán algunas partes superpuestas del flujo de control. Es posible que tenga algunos Productos con capacidades de aceleración ligeramente diferentes. El compilador o las bibliotecas que lo comprendan se asignarán en consecuencia ".

Resumir

La arquitectura del procesador no ha cambiado. Todavía siguen las mismas opciones que han existido durante los últimos 40 años. Lo que está cambiando es la forma en que se construye el chip. Ahora contienen una gran cantidad de procesadores heterogéneos con memoria y comunicaciones optimizadas para un subconjunto de tareas de la aplicación. Cada chip hace una elección diferente para la función del procesador y su propósito de optimización, el rendimiento de datos requerido y el flujo de datos que normalmente ve.

Cada proveedor de hardware quiere distinguir su propio chip de otros chips, pero es mucho más fácil promocionarlo a través de la marca que hablar de detalles técnicos internos. Así que le dieron un nombre, lo llamaron el primero, el más rápido y el más grande, y lo vincularon a tipos específicos de problemas de aplicación. Estos acrónimos de tres letras se han convertido en nombres de tareas de aplicaciones, pero no definen la arquitectura del hardware.

En los últimos años, se han emitido anuncios sobre nuevas arquitecturas de procesadores casi todos los días, con un acrónimo de tres letras: TPU, IPU, NPU. Pero, ¿qué los distingue realmente? ¿Hay realmente tantas arquitecturas de procesador únicas o ha sucedido algo más?

En 2018, John L. Hennessy y David A. Patterson dieron una conferencia de Turing titulada "La nueva edad de oro de la arquitectura informática". Están preocupados por la CPU y su desarrollo, pero esto es solo una pequeña parte de toda la ecuación. El investigador de IP y arquitecto de sistemas de Arteris, Michael Frank, dijo: "Desde la perspectiva de la CPU, la mayoría de estas xPU no son procesadores reales". “Se parecen más a una GPU, un acelerador para cargas de trabajo especiales. Y tienen mucha diversidad en su interior. El aprendizaje automático es un tipo de procesador, puede llamarlos aceleradores de aprendizaje automático colectivamente, pero aceleran la parte de procesamiento de una variedad de ”.

La esencia del procesador se puede reducir a tres cosas. “En el análisis final, vuelve a la arquitectura del conjunto de instrucciones (ISA)”, dijo Manuel Uhm, director de marketing de chips de Xilinx. “Esto define lo que quieres hacer. Luego tiene E / S y memoria, que son compatibles con ISA y las tareas que está tratando de realizar. Este será un momento muy interesante en el futuro, porque veremos más que los últimos dos o tres años. Es hora de más innovación y cambio ".

Muchas arquitecturas nuevas no son procesadores únicos. “Lo que vemos es una combinación de diferentes tipos de procesadores o motores programables que existen en el mismo SoC o en el mismo sistema”, dijo Pierre-Xavier Thomas, director del Grupo de Marketing Estratégico y Tecnología de Cadence. “Distribuya las tareas de software a diferentes hardware o motores programables flexibles. Todos los procesadores pueden compartir una API común, pero el dominio de ejecución será diferente. Aquí, de hecho, verá diferentes tipos de procesamiento con diferentes tipos de características ".

La realidad es que la mayoría de los nombres son de marketing.

“El caso es que la gente usa estos nombres y acrónimos para dos propósitos diferentes”, dijo Simon Davidmann, director ejecutivo de Imperas Software. “Uno se utiliza para explicar la arquitectura del procesador, como SIMD (Single Instruction Multiple Data). El otro define el segmento de la aplicación al que se dirige. Por lo tanto, puede definir la arquitectura del procesador, o algo así como una unidad de procesamiento tensorial (TPU) Marcas. Están nombrando sus arquitecturas heterogéneas u homogéneas, no procesadores individuales ".

Un poco de historia

Hace cuarenta años, las cosas eran mucho más sencillas. En ese momento había una unidad central de procesamiento (CPU) y había muchas variantes de ella, pero básicamente eran todos procesadores Turing completos con arquitectura von Neumann. Cada uno tiene un conjunto de instrucciones diferente que los hace más eficientes para determinadas tareas, y hay mucha discusión sobre las ventajas relativas del conjunto de instrucciones complejas (CISC) y el conjunto de instrucciones reducido (RISC).

La aparición de RISC-V ha atraído mucha atención a ISA. “La gente quiere entender ISA porque es ISA el que define cuán optimizado está el procesador para tareas definidas”, dijo Uhm de Xilinx. “Pueden mirar el ISA y comenzar el ciclo de cálculo. Si un ISA tiene instrucciones nativas y funciona a 1 GHz, puedo compararlo con otro procesador ISA, que puede requerir dos instrucciones para la misma función, pero el procesador funciona a 1.5 GHz. ¿Cuál me hace ir más lejos? Hacen cálculos matemáticos para funciones importantes ".

Existen varios métodos de empaquetado para CPU. A veces, la IO o la memoria se colocan en el mismo paquete. Se denominan unidades de microcontrolador (MCU).

Cuando los módems se hicieron populares, aparecieron los procesadores de señales digitales (DSP), y su diferencia fue que usaban la arquitectura de Harvard. Esto separa el bus de comando del bus de datos. Algunos de ellos también han implementado la arquitectura SIMD para hacer más eficiente el procesamiento de datos.

La separación de instrucciones y datos tiene como objetivo mejorar el rendimiento, aunque limita algunas de las programaciones de borde que se pueden realizar, como los programas autoescritos. "Por lo general, las condiciones de contorno no son cálculos", dijo Uhm. “Es cada vez más E / S o memoria. La industria está pasando de aumentar la potencia informática a garantizar que haya suficientes datos para mantener la potencia informática y el rendimiento ".

Cuando un solo procesador ya no se vuelve más rápido, conectan varios procesadores juntos. Estos procesadores generalmente comparten memoria y mantienen el concepto de integridad de Turing para cada procesador y todo el grupo de procesadores. No importa en qué núcleo se ejecute cualquier parte del programa, porque el resultado es el mismo.

El siguiente gran desarrollo es la unidad de procesamiento de gráficos (GPU), que rompió la convención porque cada elemento de procesamiento o canalización tiene su propia memoria y no se puede direccionar fuera del procesador. Debido a que la memoria es limitada, esto significa que no puede realizar ninguna tarea de procesamiento arbitraria, sino que solo puede realizar tareas que se pueden colocar en el espacio de memoria provisto.

"Para ciertos tipos de funciones, las GPU son procesadores muy potentes, pero sus procesos son muy largos", señala Uhm. “Estas canalizaciones permiten que la unidad GPU procese datos de forma continua, pero en algún momento, si tiene que actualizar la canalización, será un gran golpe. El sistema incorpora mucha latencia e incertidumbre ".

Aunque se han definido muchos otros aceleradores, las GPU, y más tarde las GPU de propósito general (GPGPU), definieron un paradigma de programación y una pila de software que los hacían más fáciles de usar que los aceleradores anteriores. “Durante muchos años, ciertos trabajos se han especializado”, dijo Davidmann de Imperas. “Hay una CPU para programas secuenciales. Hay un procesador de gráficos, que se enfoca en procesar datos para la pantalla y nos lleva a un mundo altamente paralelo. Utiliza muchos elementos de procesamiento pequeños para realizar tareas. Ahora hay tareas de aprendizaje automático ".

¿Qué otras reglas de construcción pueden explicar toda la nueva arquitectura? En el pasado, las matrices de procesadores solían conectarse a través de memoria o topologías de red fija (como malla o anillo). Lo que ha surgido recientemente es la combinación de Network on Chip (NoC), que permite a los procesadores heterogéneos distribuidos comunicarse de una manera más flexible. En el futuro, también podrán comunicarse sin utilizar la memoria.

“En este momento, NoC solo transporta datos”, dijo Frank de Arteris. “En el futuro, NoC se puede extender a otras áreas donde la comunicación entre aceleradores va más allá de los datos. Puede enviar comandos, enviar notificaciones, etc. Los requisitos de comunicación de la matriz del acelerador pueden ser diferentes de los requisitos de comunicación de la CPU o el SoC estándar. Sin embargo, la red en el chip no lo restringirá a un subconjunto. Puede optimizar y mejorar el rendimiento respaldando las necesidades especiales de comunicación de los aceleradores ".

Arquitectura de implementación

Una forma de diferenciar el procesador es optimizarlo para un entorno operativo específico. Por ejemplo, el software puede ejecutarse en la nube, pero también puede ejecutar el mismo software en dispositivos micro IoT. La arquitectura de implementación será muy diferente y logrará diferentes puntos operativos en términos de rendimiento, consumo de energía, costo o capacidad para operar en condiciones extremas.

“Algunas aplicaciones son para la computación en la nube, y ahora las estamos acercando al borde”, dijo Thomas de Cadence. “Esto puede deberse a requisitos de latencia, o energía o disipación de potencia, lo que requerirá un tipo diferente de arquitectura. Es posible que desee tener exactamente la misma pila de software para poder ejecutar en dos ubicaciones. La nube debe proporcionar flexibilidad porque recibirá diferentes tipos de aplicaciones y debe poder agregar una gran cantidad de usuarios. Esto requiere que el hardware del servidor tenga capacidades específicas de la aplicación, pero un tamaño no es adecuado para todos ".

ML ha aumentado sus propios requisitos. "Cuando se utilizan redes neuronales y aprendizaje automático para construir sistemas inteligentes, es necesario utilizar marcos de software y pilas de software generales para programar la nueva red y asignarla al hardware", añadió Thomas. “Entonces puede adaptar la aplicación de software al hardware adecuado desde una perspectiva de PPA. Esto impulsa la necesidad de diferentes tipos de procesamiento y procesadores para poder satisfacer estas necesidades a nivel de hardware ".

Estos requisitos los define la aplicación. “Una empresa ha creado un procesador para operaciones gráficas”, dijo Frank. “Optimizan y aceleran el seguimiento de los gráficos y realizan operaciones como reordenar los gráficos. Hay otras fuerzas brutas que aceleran el aprendizaje automático, a saber, la multiplicación de matrices. El acceso a la memoria es diferente para cada arquitectura. Es un problema especial porque cuando construyes un acelerador, el objetivo más importante es mantenerlo ocupado. Tienes que transferir la mayor cantidad de datos posible a la ALU porque se pueden consumir y producir ".

Muchas de estas aplicaciones tienen mucho en común. “Todos tienen algo de memoria local, tienen una red en un chip para comunicarse y cada procesador que ejecuta un algoritmo de software está procesando una pequeña parte de los datos”, dijo Davidmann. "Estos trabajos los programan los sistemas operativos que se ejecutan en CPU más tradicionales".

La parte complicada para los diseñadores de hardware es predecir qué tareas deberán realizar. “Aunque realizará tipos de operaciones similares en algunas capas, la gente está prestando atención a la diferenciación en las capas”, dijo Thomas. “Para poder procesar una red neuronal, se requieren varios tipos de potencia de procesamiento. Esto significa que debe poder procesar una parte de la red neuronal de alguna manera, y luego es posible que necesite otro tipo de operación para procesar otra capa. Movimiento de datos Y la cantidad de datos también está cambiando capa por capa ".

Esta diferenciación puede ir más allá del movimiento de datos. "Para la secuenciación del genoma, es necesario realizar algún procesamiento", dijo Frank. “Pero no se puede usar un solo tipo de acelerador para acelerar todo. Tienes que construir un conjunto completo de aceleradores diferentes para diferentes tuberías. La CPU se convierte en la guardiana del proceso de ejecución de la gestión. Configura, ejecuta DMA y proporciona la toma de decisiones entre los dos procesos. Comprender y analizar algoritmos y definir cómo desea optimizar su procesamiento es una tarea arquitectónica completa ".

Parte del proceso requiere particiones. "No hay un solo tipo de procesador que pueda optimizarse para cada tarea de procesador: FPGA no es bueno, CPU no es bueno, GPU no es bueno, DSP también es necesario", dijo Uhm. “Creamos una serie de dispositivos que contienen todos estos, pero la parte difícil del lado del cliente es que tienen que proporcionar inteligencia para determinar qué partes del sistema general se dirigirán al procesador o la lógica programable, o en la IA. Motor. Todo el mundo quiere esa herramienta mágica automática, una herramienta que pueda decidir inmediatamente ponerla en la CPU, ponerla en la FPGA y ponerla en la GPU. Esa herramienta no existe hoy ".

Sin embargo, la CPU siempre jugará un papel. "La CPU es necesaria para ejecutar partes irregulares del programa", dijo Frank. “La programabilidad general de la CPU tiene sus ventajas. Si tiene estructuras de datos especializadas u operaciones matemáticas, no funcionará bien. La CPU es un procesador de propósito general y no está optimizado para nada. No es bueno para nada ".

Cambiar "abstracto"

En el pasado, el límite de hardware / software estaba definido por la ISA, y la memoria era continuamente direccionable. Cuando hay varios procesadores, generalmente están alineados con la memoria.

"La coherencia es un contrato", dijo Frank. “Este tipo de consistencia es muy importante y no desaparecerá. Pero puede imaginar que en un motor de flujo de datos, la coherencia no es tan importante, porque transfiere los datos que se mueven en el borde directamente de un acelerador a otro. Si divide el conjunto de datos, la coherencia se convertirá en un obstáculo porque le costará ciclos adicionales. Debes comprobar la información. Debe proporcionar información actualizada ".

Esto requiere una arquitectura de memoria diferente. "Tienes que pensar en la estructura de la memoria, porque tienes una cantidad limitada de memoria estrechamente acoplada", dijo Uhm. “Puede acceder a la memoria adyacente, pero rápidamente se quedará sin memoria adyacente y no podrá acceder a ella a tiempo. Esto debe entenderse en el diseño. A medida que la herramienta madura, la herramienta comenzará a aprender más. Hoy, lo hace la inteligencia humana, capaz de entender la arquitectura y aplicarla ”.

También se necesita un mayor nivel de abstracción. “Algunos marcos pueden mapear o compilar redes conocidas para apuntar al hardware”, dijo Thomas. “Tiene un conjunto de kernels o API de bajo nivel que se usarán en la pila de software y luego, eventualmente, el mapeador de la red neuronal las usará. A continuación, puede tener diferentes tipos de hardware, según lo que desee lograr, según los detalles de su producto. Logra la misma funcionalidad, pero no utiliza el mismo hardware ni las mismas compensaciones de PPA ".

Esto ejerce mucha presión sobre esos compiladores. "La pregunta principal es ¿cómo se programa el acelerador en el futuro?" Preguntó Frank. “¿Ha implementado un motor cableado como la primera generación de GPU? ¿O ha construido un pequeño motor programable con su propio conjunto de instrucciones? Ahora tienes que programar estas cosas por separado y ponerlas en cada una de ellas está conectada al flujo de datos para realizar tareas. Un procesador tiene un cierto subconjunto del conjunto completo de instrucciones, y el otro procesador tiene un subconjunto diferente, y todos compartirán algunas partes superpuestas del flujo de control. Es posible que tenga algunos Productos con capacidades de aceleración ligeramente diferentes. El compilador o las bibliotecas que lo comprendan se asignarán en consecuencia ".

Resumir

La arquitectura del procesador no ha cambiado. Todavía siguen las mismas opciones que han existido durante los últimos 40 años. Lo que está cambiando es la forma en que se construye el chip. Ahora contienen una gran cantidad de procesadores heterogéneos con memoria y comunicaciones optimizadas para un subconjunto de tareas de la aplicación. Cada chip hace una elección diferente para la función del procesador y su propósito de optimización, el rendimiento de datos requerido y el flujo de datos que normalmente ve.

Cada proveedor de hardware quiere distinguir su propio chip de otros chips, pero es mucho más fácil promocionarlo a través de la marca que hablar de detalles técnicos internos. Así que le dieron un nombre, lo llamaron el primero, el más rápido y el más grande, y lo vincularon a tipos específicos de problemas de aplicación. Estos acrónimos de tres letras se han convertido en nombres de tareas de aplicaciones, pero no definen la arquitectura del hardware.