Una arquitectura específica de dominio (DSA) es una arquitectura informática programable diseñada específicamente para funcionar de forma muy eficiente dentro de los límites de un dominio de aplicación determinado. El término se suele utilizar en contraste con las arquitecturas de propósito general, como las CPU , que están diseñadas para funcionar en cualquier programa informático . [1]
Historia
En conjunción con el auge de los semiconductores que comenzó en la década de 1960, los arquitectos informáticos se vieron obligados a encontrar nuevas formas de explotar la cantidad cada vez mayor de transistores disponibles. La Ley de Moore y el escalamiento de Dennard permitieron a los arquitectos centrarse en mejorar el rendimiento de los microprocesadores de uso general en programas de uso general. [2] [3]
Estos esfuerzos dieron como resultado varias innovaciones tecnológicas, como cachés multinivel , ejecución fuera de orden , secuencias de instrucciones profundas , subprocesamiento múltiple y multiprocesamiento . El impacto de estas innovaciones se midió en puntos de referencia generalistas como SPEC , y los arquitectos no se preocuparon por la estructura interna o las características específicas de estos programas. [1]
El fin del escalamiento de Dennard empujó a los arquitectos informáticos a pasar de un único procesador muy rápido a varios núcleos de procesador . La mejora del rendimiento ya no se podía conseguir simplemente aumentando la frecuencia de funcionamiento de un único núcleo. [4]
El fin de la Ley de Moore hizo que el foco se alejara de las arquitecturas de propósito general y se dirigiera hacia hardware más especializado. Aunque es probable que las CPU de propósito general tengan un lugar en cualquier sistema informático, los sistemas heterogéneos compuestos por componentes de propósito general y específicos del dominio son la tendencia más reciente para lograr un alto rendimiento. [ cita requerida ]
Si bien los aceleradores de hardware y los circuitos integrados de aplicación específica se han utilizado en dominios de aplicación muy especializados desde el inicio de la industria de los semiconductores, generalmente implementan una función específica con una flexibilidad muy limitada. Por el contrario, el cambio hacia arquitecturas específicas de dominio pretende lograr un mejor equilibrio entre flexibilidad y especialización. [5]
Un ejemplo notable de arquitectura programable específica de dominio son las GPU. Este hardware especializado se desarrolló específicamente para operar dentro del dominio del procesamiento de imágenes y gráficos de computadora . [6] Estas unidades de procesamiento programables encontraron una adopción generalizada tanto en consolas de juegos como en computadoras personales. Con la mejora de la pila de hardware/software para las GPU NVIDIA y AMD , estas arquitecturas se están utilizando cada vez más para la aceleración de tareas masivas y vergonzosamente paralelas , incluso fuera del dominio del procesamiento de imágenes. [7]
Desde el renacimiento de la inteligencia artificial basada en el aprendizaje automático en la década de 2010, se han desarrollado varias arquitecturas específicas de dominio para acelerar la inferencia para diferentes formas de redes neuronales artificiales . Algunos ejemplos son TPU de Google , NVDLA de NVIDIA [8] y MLP de ARM . [9]
Directrices para el diseño de DSA
John Hennessy y David Patterson describieron cinco principios para el diseño de DSA que conducen a una mayor eficiencia del área y ahorro de energía. El objetivo en este tipo de arquitectura es a menudo también reducir los costos de ingeniería no recurrente (NRE) para que la inversión en una solución especializada se pueda amortizar más fácilmente. [1]
- Minimizar la distancia a la que se trasladan los datos: trasladar datos en jerarquías de memoria de propósito general requiere una cantidad notable de energía para intentar minimizar la latencia de acceso a los datos. En el caso de las arquitecturas específicas de dominio, se espera que la comprensión de los dominios de aplicación por parte de los diseñadores de hardware y compiladores permita jerarquías de memoria más simples y especializadas, donde el movimiento de datos se maneja en gran medida en software, con memorias hechas a medida para funciones específicas dentro del dominio. [1]
- Invertir los recursos ahorrados en unidades aritméticas o memorias más grandes: dado que se puede ahorrar una cantidad notable de recursos de hardware al abandonar optimizaciones arquitectónicas de propósito general, como ejecución fuera de orden, precarga , fusión de direcciones y especulación de hardware, los recursos ahorrados se deben reinvertir para explotar al máximo el paralelismo disponible , por ejemplo, agregando más unidades aritméticas o resolver cualquier problema de ancho de banda de memoria agregando memorias más grandes. [1]
- Utilizar la forma más sencilla de paralelismo que coincida con el dominio: dado que los dominios de aplicación de destino casi siempre presentan una forma inherente de paralelismo, es importante decidir cómo aprovechar este paralelismo y exponerlo al software. Si, por ejemplo, una arquitectura SIMD puede funcionar en el dominio, será más fácil de usar para el programador que una arquitectura MIMD . [1]
- Reducir el tamaño y el tipo de datos a los mínimos necesarios para el dominio: siempre que sea posible, el uso de tipos de datos más simples y acotados ofrece varias ventajas. Por ejemplo, reduce el costo de mover datos para aplicaciones limitadas en memoria y también puede reducir la cantidad de recursos necesarios para implementar las unidades aritméticas respectivas. [1]
- Utilizar un lenguaje de programación específico del dominio para portar el código al DSA: uno de los desafíos para los DSA es la facilidad de uso y, más específicamente, poder programar eficazmente la arquitectura y ejecutar aplicaciones en ella. Siempre que sea posible, se recomienda utilizar lenguajes específicos del dominio (DSL) existentes, como Halide [10] y TensorFlow [11], para programar un DSA más fácilmente. La reutilización de cadenas de herramientas de compilación y marcos de software existentes hace que el uso de un nuevo DSA sea significativamente más accesible. [1]
DSA para redes neuronales profundas
Uno de los dominios de aplicación en los que los DSA han tenido más éxito es el de la inteligencia artificial . En particular, se han desarrollado varias arquitecturas para la aceleración de redes neuronales profundas (DNN). [12] En las siguientes secciones, presentamos algunos ejemplos.
TPU
La TPU de Google se desarrolló en 2015 para acelerar la inferencia de DNN, ya que la compañía proyectó que el uso de la búsqueda por voz requeriría duplicar los recursos computacionales asignados en ese momento para la inferencia de redes neuronales. [13]
El TPU fue diseñado para ser un coprocesador que se comunica a través de un bus PCIe , para ser fácilmente incorporado en servidores existentes. Es principalmente un motor de multiplicación de matrices que sigue una ISA CISC (Complex Instruction Set Computer) . El motor de multiplicación utiliza la ejecución sistólica para ahorrar energía, reduciendo el número de escrituras en SRAM . [14]
La TPU se fabricó con un proceso de 28 nm y se sincroniza a 700 MHz. La parte de la aplicación que se ejecuta en la TPU se implementa en TensorFlow. [14]
La TPU calcula principalmente números enteros de precisión reducida, lo que contribuye aún más al ahorro de energía y al aumento del rendimiento. [14]
Catapulta de Microsoft
El Proyecto Catapult [15] de Microsoft colocó un FPGA conectado a través de un bus PCIe en servidores de centros de datos, con la idea de usar el FPGA para acelerar varias aplicaciones que se ejecutaban en el servidor, aprovechando las capacidades de reconfiguración del FPGA para acelerar muchas aplicaciones diferentes.
A diferencia del TPU de Google, el FPGA Catapult necesitaba ser programado mediante lenguajes de descripción de hardware como Verilog y VHDL . Por este motivo, una de las principales preocupaciones de los autores del marco era la limitada programabilidad. [16]
Microsoft diseñó un acelerador CNN para el marco Catapult que fue diseñado principalmente para acelerar la función de clasificación en el motor de búsqueda Bing . La arquitectura propuesta proporcionó un diseño reconfigurable en tiempo de ejecución basado en una matriz sistólica bidimensional. [17] [18]
NVDLA
NVDLA es el acelerador de inferencia de aprendizaje profundo de NVIDIA. Es un diseño de hardware de código abierto disponible en una variedad de configuraciones altamente parametrizables. El modelo NVDLA pequeño está diseñado para implementarse en escenarios con recursos limitados, como IoT, donde el costo, el área y la energía son las principales preocupaciones. Por el contrario, el modelo NVDLA grande es más adecuado para escenarios de HPC . NVDLA proporciona su propia infraestructura de capacitación dedicada, herramientas de compilación y una pila de software de tiempo de ejecución. [19]
DSA para otros dominios
Además de su aplicación en inteligencia artificial, los DSA se están adoptando en muchos dominios dentro de la computación científica, el procesamiento de imágenes y las redes. [20] [21]
Núcleo visual de píxeles
Pixel Visual Core (PVC) es un procesador de imágenes basado en ARM diseñado por Google . El PVC es una arquitectura de dominio específico (DSA) multinúcleo de imagen , visión e IA totalmente programable para dispositivos móviles y, en el futuro, para IoT . Apareció por primera vez en Google Pixel 2 y 2 XL , que se presentaron el 19 de octubre de 2017. También apareció en Google Pixel 3 y 3 XL . A partir del Pixel 4 , este chip fue reemplazado por el Pixel Neural Core . [22]
Anton3

Anton3 es un DSA diseñado para calcular de manera eficiente simulaciones de dinámica molecular . Utiliza una red de interconexión especializada con topología de toro tridimensional para conectar varios nodos de computación. [21] Cada nodo de computación contiene un conjunto de 64 núcleos interconectados a través de una malla . Los núcleos implementan una tubería profunda especializada para calcular de manera eficiente el campo de fuerza entre moléculas. Este sistema heterogéneo combina hardware de propósito general y componentes específicos del dominio para lograr una velocidad de simulación récord. [23]
Referencias
- ^ abcdefgh Hennessy, John L.; Patterson, David A. (2019). Arquitectura informática: un enfoque cuantitativo . Krste Asanović (6.ª ed.). Cambridge, Mass.: Morgan Kaufmann Publishers, un sello editorial de Elsevier. pág. 540. ISBN 978-0-12-811905-1.
- ^ Moore, GE (enero de 1998). "Introducción de más componentes en circuitos integrados". Actas del IEEE . 86 (1): 82– 85. doi :10.1109/jproc.1998.658762. ISSN 0018-9219.
- ^ Dennard, derecha; Gaensslen, FH; Yu, Hwa-Nien; Paseo, VL; Bassous, E.; LeBlanc, AR (octubre de 1974). "Diseño de MOSFET implantados con iones con dimensiones físicas muy pequeñas". Revista IEEE de circuitos de estado sólido . 9 (5): 256– 268. Código bibliográfico : 1974IJSSC...9..256D. doi :10.1109/jssc.1974.1050511. ISSN 0018-9200. S2CID 283984.
- ^ Schauer, Bryan. «Procesadores multinúcleo: una necesidad» (PDF) . Archivado desde el original (PDF) el 25 de noviembre de 2011. Consultado el 6 de julio de 2023 .
- ^ Barr, Keith Elliott (2007). Diseño de ASIC en el entorno de pruebas de silicio: una guía completa para construir circuitos integrados de señal mixta . Nueva York: McGraw-Hill. ISBN 978-0-07-148161-8.
- ^ "¿Qué es una GPU?". Virtual Desktop . Consultado el 7 de julio de 2023 .
- ^ "Aplicaciones aceleradas de NVIDIA". NVIDIA . Consultado el 6 de julio de 2023 .
- ^ "NVDLA - Microarquitecturas - Nvidia - WikiChip". en.wikichip.org . Consultado el 6 de julio de 2023 .
- ^ "Procesador de aprendizaje automático (MLP) - Microarquitecturas - ARM - WikiChip". es.wikichip.org . Consultado el 6 de julio de 2023 .
- ^ Ragan-Kelley, Jonathan. "Halide". halide-lang.org . Consultado el 6 de julio de 2023 .
- ^ "TensorFlow". TensorFlow . Consultado el 6 de julio de 2023 .
- ^ Ghayoumi, Mehdi (12 de octubre de 2021), "Fundamentos y arquitecturas de las redes neuronales profundas (DNN)", Deep Learning in Practice , Boca Raton: Chapman and Hall/CRC, págs. 77-107 , doi :10.1201/9781003025818-5, ISBN 9781003025818, S2CID 241427658 , consultado el 6 de julio de 2023
- ^ Hennessy, John L.; Patterson, David A. (2019). Arquitectura informática: un enfoque cuantitativo . Krste Asanović (6.ª ed.). Cambridge, Mass.: Morgan Kaufmann Publishers, un sello editorial de Elsevier. pág. 557. ISBN 978-0-12-811905-1.
- ^ abc Hennessy, John L.; Patterson, David A. (2019). Arquitectura informática: un enfoque cuantitativo . Krste Asanović (6.ª ed.). Cambridge, Mass.: Morgan Kaufmann Publishers, un sello editorial de Elsevier. pág. 560. ISBN 978-0-12-811905-1.
- ^ "Proyecto Catapult". Microsoft Research . Consultado el 6 de julio de 2023 .
- ^ Putnam, Andrew; Caulfield, Adrian M.; Chung, Eric S.; Chiou, Derek; Constantinides, Kypros; Demme, John; Esmaeilzadeh, Hadi; Fowers, Jeremy; Gopal, Gopi Prashanth; Gray, Jan; Haselman, Michael; Hauck, Scott; Heil, Stephen; Hormati, Amir; Kim, Joo-Young (28 de octubre de 2016). "Una estructura reconfigurable para acelerar los servicios de centros de datos a gran escala". Comunicaciones de la ACM . 59 (11): 114– 122. doi :10.1145/2996868. ISSN 0001-0782. S2CID 3826382.
- ^ Hennessy, John L.; Patterson, David A. (2019). Arquitectura informática: un enfoque cuantitativo . Krste Asanović (6.ª ed.). Cambridge, Mass.: Morgan Kaufmann Publishers, un sello editorial de Elsevier. pág. 573. ISBN 978-0-12-811905-1.
- ^ "Un pico entre pingüinos". Bing . Consultado el 6 de julio de 2023 .
- ^ "Introducción a NVDLA: documentación de NVDLA" . nvdla.org . Consultado el 6 de julio de 2023 .
- ^ "Unidades de procesamiento de datos (DPU) NVIDIA BlueField". NVIDIA . Consultado el 6 de julio de 2023 .
- ^ ab Shaw, David E.; Adams, Peter J.; Azaria, Asaph; Bank, Joseph A.; Batson, Brannon; Bell, Alistair; Bergdorf, Michael; Bhatt, Jhanvi; Butts, J. Adam; Correia, Timothy; Dirks, Robert M.; Dror, Ron O.; Eastwood, Michael P.; Edwards, Bruce; Even, Amos (14 de noviembre de 2021). "Anton 3: Veinte microsegundos de simulación de dinámica molecular antes del almuerzo". Actas de la Conferencia internacional sobre computación de alto rendimiento, redes, almacenamiento y análisis. ACM. págs. 1– 11. doi :10.1145/3458817.3487397. ISBN 978-1-4503-8442-1.S2CID239036976 .
- ^ Cutress, Ian. "Hot Chips 2018: Blog en vivo de Google Pixel Visual Core (10 a. m., hora del Pacífico, 5 p. m., hora UTC)". www.anandtech.com . Consultado el 7 de julio de 2023 .
- ^ Russell, John (2 de septiembre de 2021). "Anton 3 es una bestia de simulación molecular que 'escupe fuego'". HPCwire . Consultado el 6 de julio de 2023 .
Lectura adicional
- Arquitectura de computadoras. Un enfoque cuantitativo. Sexta edición. John L. Hennessy. Universidad de Stanford. David A. Patterson. Universidad de California, Berkeley.