Articulo de referencia

La taxonomía de Flynn

La taxonomía de Flynn es una clasificación de arquitecturas de computadoras , propuesta por Michael J. Flynn en 1966 [ 1 ] y ampliada en 1972. [ 2 ] El sistema de clasificación ...

La taxonomía de Flynn es una clasificación de arquitecturas de computadoras , propuesta por Michael J. Flynn en 1966 [ 1 ] y ampliada en 1972. [ 2 ] El sistema de clasificación se ha mantenido y se ha utilizado como herramienta en el diseño de procesadores modernos y sus funcionalidades. Desde el auge de las unidades centrales de procesamiento (CPU) multiprocesador , ha evolucionado un contexto de multiprogramación como una extensión del sistema de clasificación. El procesamiento vectorial , cubierto por la taxonomía de Duncan , [ 3 ] no está incluido en el trabajo de Flynn porque el Cray-1 se lanzó en 1977; el segundo artículo de Flynn se publicó en 1972.

Clasificaciones

Las cuatro clasificaciones iniciales definidas por Flynn se basan en el número de flujos de instrucciones (o control) y flujos de datos concurrentes disponibles en la arquitectura. [ 4 ] Flynn definió tres subcategorías adicionales de SIMD en 1972. [ 2 ]

Flujo de instrucciones único, flujo de datos único (SISD)

Un ordenador secuencial que no aprovecha el paralelismo ni en las instrucciones ni en los datos. Una única unidad de control (UC) recupera una única secuencia de instrucciones (SI) de la memoria. A continuación, la UC genera las señales de control adecuadas para dirigir un único elemento de procesamiento (EP) a operar sobre una única secuencia de datos (SD), es decir, una operación a la vez.

Ejemplos de arquitecturas SISD son las máquinas tradicionales de uniprocesador , como los ordenadores personales (PC) más antiguos (en 2010, muchos PC tenían varios núcleos) y los ordenadores centrales más antiguos .

Flujo de instrucciones único, flujos de datos múltiples (SIMD)

Una sola instrucción se aplica simultáneamente a múltiples flujos de datos diferentes. Las instrucciones pueden ejecutarse secuencialmente, como mediante segmentación, o en paralelo mediante múltiples unidades funcionales. El artículo de Flynn de 1972 subdividió SIMD en tres categorías adicionales: [ 2 ]

  • Procesadores de matriz conocidos hoy como SIMT : estos reciben la misma instrucción, pero cada unidad de procesamiento paralelo (PU) tiene su propia memoria y registro independientes . La memoria conectada a cada PU no se comparte entre las demás. Los primeros procesadores SIMT tenían PU escalares (1 bit en SOLOMON , 64 bits en ILLIAC IV ), pero los procesadores SIMT modernos ( GPU ) invariablemente tienen ALU SWAR .
  • Procesador segmentado : Estos reciben la misma instrucción, pero leen datos de un recurso central. Cada uno procesa fragmentos de esos datos (generalmente denominados "elementos") y luego escriben los resultados en el mismo recurso central. En la Figura 5 del artículo de Flynn de 1972, ese recurso es la memoria principal; en las CPU modernas, ese recurso suele ser el banco de registros.
  • Procesador asociativo : Estos reciben la misma instrucción, pero además, la unidad de control transmite a cada unidad de procesamiento (PU) un valor de registro. En cada PU,se toma una decisión independiente , basada en datos locales de la unidad, comparándolos con el valor transmitido , sobre si ejecutar la instrucción o omitirla.

Procesador de matriz

Procesador de matrices de taxonomía de Flynn de 1972, Figura 5a del artículo de Flynn de 1972 [ 2 ]

El término moderno para un procesador de matriz es " instrucción única, hilos múltiples " (SIMT). Esta es una clasificación distinta en la taxonomía de Flynn de 1972, como una subcategoría de SIMD. Se identifica porque los subelementos paralelos tienen su propio archivo de registros y memoria (caché y memoria de datos) independientes. Los artículos originales de Flynn citan dos ejemplos históricos de procesadores SIMT: SOLOMON e ILLIAC IV .

Cada elemento de procesamiento también tiene un bit activo/inactivo independiente que habilita/deshabilita el PE:

para cada (PE j) // matriz concurrente síncrona si (bit de máscara activo j) entonces transmisión_instructiva_a(PE j)

Nvidia suele usar el término en sus materiales de marketing y documentos técnicos, donde argumenta a favor de la novedad de su arquitectura. [ 6 ] SOLOMON es anterior a Nvidia por más de 60  años.

Procesador en paralelo

Procesador en serie de taxonomía de Flynn de 1972, Figura 5b del artículo de Flynn de 1972 [ 2 ]

El artículo de Flynn de 1972 denomina a los procesadores segmentados una forma de procesamiento de matrices "multiplexadas en el tiempo", donde los elementos se leen secuencialmente de la memoria, se procesan en etapas (segmentadas) y se escriben, de nuevo secuencialmente en la memoria, desde la última etapa. A partir de esta descripción (página 954), es probable que Flynn se refiriera al encadenamiento vectorial y a los procesadores vectoriales de memoria a memoria como el TI ASC diseñado, fabricado y vendido entre 1966 y 1973, [ 7 ] y el CDC STAR-100 que acababa de ser anunciado en el momento de la redacción del artículo de Flynn.

En la época en que Flynn escribió su artículo de 1972, muchos sistemas utilizaban la memoria principal como recurso para la lectura y escritura en las tuberías. Cuando el recurso desde el que leen y escriben todas las tuberías es el archivo de registros escalares en lugar de la memoria principal, se generan variantes modernas de SIMD. Algunos ejemplos son Altivec , NEON y AVX .

Un nombre alternativo para este tipo de SIMD basado en registros es "SIMD empaquetado" [ 8 ] y otro es SIMD dentro de un registro (SWAR) .

Procesador asociativo

Diagrama de procesador de matriz asociativa de la taxonomía de Flynn de 1972, Figura 5c del artículo de Flynn de 1972 [ 2 ]

El término moderno para procesador asociativo es análogo a las celdas de memoria direccionable por contenido, cada una con su propio procesador. Dichos procesadores son muy raros.

broadcast_value = control_unit.register ( n ) broadcast_instruction = control_unit.array_instruction para cada ( PE j ) // de matriz asociativa possible_match = PE [ j ] .match_register si broadcast_value == possible_match PE [ j ] .execute ( broadcast_instruction )

El procesador de cadena asociativa (ASP) de Aspex Microelectronics [ 9 ] se autodenominó en su material de marketing como "MASVES SIMD", pero tenía ALUs a nivel de bit y predicación a nivel de bit (taxonomía de Flynn: procesamiento de matrices), y cada uno de los 4096 procesadores tenía sus propios registros y memoria, incluida la memoria direccionable por contenido (taxonomía de Flynn: procesamiento asociativo). El Linedancer, lanzado en 2010, contenía 4096 ALUs SIMD predicadas de 2 bits, cada una con su propia CAM, y era capaz de 800  mil millones de instrucciones por segundo. [ 10 ] El procesador SIMT de matriz asociativa ASP de Aspex es anterior a NVIDIA por 20  años. [ 11 ] [ 12 ] Hay cierta dificultad en clasificar este procesador según la taxonomía de Flynn, ya que tenía capacidad de procesamiento asociativo y procesamiento de matrices, ambos bajo control explícito del programador.

Múltiples flujos de instrucciones, un único flujo de datos (MISD)

Varias instrucciones operan sobre un mismo flujo de datos. Esta es una arquitectura poco común que generalmente se utiliza para la tolerancia a fallos. Los sistemas heterogéneos operan sobre el mismo flujo de datos y deben coincidir en el resultado. Un ejemplo es la computadora de control de vuelo del transbordador espacial . [ 13 ]

Múltiples flujos de instrucciones, múltiples flujos de datos (MIMD)

Múltiples procesadores autónomos ejecutan simultáneamente diferentes instrucciones sobre diferentes datos. Las arquitecturas MIMD incluyen procesadores superescalares multinúcleo y sistemas distribuidos , que utilizan un espacio de memoria compartida o un espacio de memoria distribuida.

Diagrama comparativo de clasificaciones

Estas cuatro arquitecturas se muestran visualmente a continuación. Cada unidad de procesamiento (UP) se muestra para una computadora de un solo núcleo o de múltiples núcleos:

Otras divisiones

A partir de 2006De hecho, los 10 mejores y la mayoría de los 500 mejores superordenadores se basan en una arquitectura MIMD.

Aunque estos no forman parte del trabajo de Flynn, algunos dividen aún más la categoría MIMD en las dos categorías que se indican a continuación, [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] e incluso se consideran subdivisiones adicionales en ocasiones. [ 19 ]

Programa único, múltiples flujos de datos (SPMD)

Múltiples procesadores autónomos que ejecutan simultáneamente el mismo programa (pero en puntos independientes, en lugar de en el paso sincronizado que impone SIMD) sobre datos diferentes. [ 20 ] También denominado proceso único, datos múltiples [ 18 ] - el uso de esta terminología para SPMD es técnicamente incorrecto, ya que SPMD es un modelo de ejecución paralela y asume múltiples procesadores cooperativos que ejecutan un programa. SPMD es el estilo más común de programación paralela explícita. [ 21 ] El modelo SPMD y el término fueron propuestos por Frederica Darema del equipo RP3. [ 22 ]

Múltiples programas, múltiples flujos de datos (MPMD)

Múltiples procesadores autónomos que ejecutan simultáneamente al menos dos programas independientes. En contextos de computación de alto rendimiento (HPC), estos sistemas suelen elegir un nodo como "anfitrión" ("el modelo de programación explícito anfitrión/nodo") o "administrador" (la estrategia "administrador/trabajador"), que ejecuta un programa que distribuye datos a todos los demás nodos, los cuales ejecutan un segundo programa. Estos nodos devuelven sus resultados directamente al administrador. Un ejemplo de esto sería la consola de videojuegos Sony PlayStation 3, con su procesador SPU/PPU .

MPMD es común en contextos que no son de computación de alto rendimiento (HPC). Por ejemplo, el sistema de compilación make puede compilar múltiples dependencias en paralelo, utilizando programas dependientes del objetivo además del propio ejecutable make. MPMD también suele adoptar la forma de tuberías. Un comando simple de la consola de Unix, como `-ls | grep "A" | more

Ambos enfoques se distinguen de la programación paralela explícita utilizada en la computación de alto rendimiento (HPC) en que los programas individuales son bloques de construcción genéricos en lugar de implementar parte de un algoritmo paralelo específico. En el enfoque de segmentación, la cantidad de paralelismo disponible no aumenta con el tamaño del conjunto de datos.

Véase también

Referencias

  1. Flynn, Michael J. (diciembre de 1966). "Sistemas informáticos de muy alta velocidad" (PDF) . Actas del IEEE . 54 (12): 1901–1909 . doi : 10.1109/PROC.1966.5273 .
  2. 1 2 3 4 5 6 Flynn, Michael J. (septiembre de 1972). "Algunas organizaciones informáticas y su eficacia" (PDF) . IEEE Transactions on Computers . C-21 (9): 948– 960. doi : 10.1109/TC.1972.5009071 . S2CID 18573685 . 
  3. Duncan, Ralph (febrero de 1990). "Un estudio de las arquitecturas de computadoras paralelas" (PDF) . Computer . 23 (2): 5– 16. doi : 10.1109/2.44900 . S2CID 15036692. Archivado del original (PDF) el 18 de julio de 2018. Recuperado el 18 de julio de 2018 . 
  4. "Paralelismo a nivel de datos en arquitecturas vectoriales, SIMD y GPU" (PDF) . 12 de noviembre de 2013.
  5. Flynn, Michael J. (septiembre de 1972). "Algunas organizaciones informáticas y su eficacia" (PDF) . IEEE Transactions on Computers . C-21 (9): 948–960 . doi : 10.1109/TC.1972.5009071 .
  6. "Arquitectura de computación CUDA de próxima generación de NVIDIA: Fermi" (PDF) . Nvidia .
  7. Cragon, Harvey G. (1984-05-21). "La historia de la computadora científica avanzada" . www.bitsavers.org . Archivado del original el 18 de febrero de 2025. Recuperado el 1 de junio de 2026 .
  8. Miyaoka, Y.; Choi, J.; Togawa, N.; Yanagisawa, M.; Ohtsuki, T. (2002). Un algoritmo de generación de unidades de hardware para la síntesis de núcleos de procesador con instrucciones SIMD empaquetadas . Conferencia Asia-Pacífico sobre Circuitos y Sistemas. págs. 171–176 . doi : 10.1109/APCCAS.2002.1114930 . hdl : 2065/10689 . ISBN  0-7803-7690-0.
  9. Lea, RM (1988). "ASP: Un microordenador paralelo rentable". IEEE Micro . 8 (5): 10– 29. doi : 10.1109/40.87518 . S2CID 25901856 . 
  10. "Linedancer HD – Descripción general" . Aspex Semiconductor . Archivado del original el 13 de octubre de 2006.
  11. Krikelis, A. (1988). Red neuronal artificial sobre una arquitectura asociativa masivamente paralela . Conferencia Internacional sobre Redes Neuronales. Dordrecht: Springer . doi : 10.1007/978-94-009-0643-3_39 . ISBN 978-94-009-0643-3.
  12. Ódor, Géza; Krikelis, Argy; Vesztergombi, György; Rohrbach, Francois. "Simulación eficaz de Monte Carlo en la arquitectura de procesamiento de cadenas asociativas masivamente paralelas de System-V" (PDF) .
  13. Spector, A.; Gifford, D. (septiembre de 1984). "El sistema informático principal del transbordador espacial" . Communications of the ACM . 27 (9): 872– 900. doi : 10.1145/358234.358246 . S2CID 39724471 . 
  14. "Single Program Multiple Data Stream (SPMD)" . Llnl.gov. Archivado del original el 4 de junio de 2004. Consultado el 9 de diciembre de 2013 .
  15. "Requisitos de programación para compilar, construir y ejecutar trabajos" . Guía del usuario de Lightning . Archivado del original el 1 de septiembre de 2006.
  16. "Taller virtual de CTC" . Web0.tc.cornell.edu . Consultado el 9 de diciembre de 2013 .
  17. "Introducción al NIST SP2: Programación de memoria distribuida" . Math.nist.gov. Archivado del original el 13 de diciembre de 2013. Consultado el 9 de diciembre de 2013 .
  18. 1 2 "Comprensión de la gestión de trabajos paralelos y el paso de mensajes en sistemas IBM SP" . Archivado del original el 3 de febrero de 2007.
  19. "9.2 Estrategias" . Programación de memoria distribuida . Archivado del original el 10 de septiembre de 2006.
  20. Este artículo se basa en material tomado de Flynn's+taxonomy en el Free On-line Dictionary of Computing antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" de la GFDL , versión 1.3 o posterior.
  21. "Programa único, múltiples datos" . Nist.gov. 17 de diciembre de 2004. Consultado el 9 de diciembre de 2013 .
  22. Darema, Frederica ; George, David A.; Norton, V. Alan; Pfister, Gregory F. (1988). "Un modelo computacional de un solo programa y múltiples datos para EPEX/FORTRAN". Computación paralela . 7 (1): 11– 24. doi : 10.1016/0167-8191(88)90094-4 .