Taxonomía de Flynn

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 24 de diciembre de 2019; las comprobaciones requieren 4 ediciones . Clasificación Flynn
  Flujo de instrucciones único
Múltiples flujos de
instrucciones
Flujo de datos
único (datos únicos)
SISD
(OKOD)
MISD
(MISD)
Múltiples flujos de
datos
SIMD
(JMD)
MIMD
(MKMD)

La taxonomía de Flynn ( Clasificación ) es una clasificación general de las arquitecturas informáticas basada en la presencia de paralelismo en los flujos de comandos y datos. Fue propuesto por Michael Flynn en 1966 [1] y ampliado en 1972 [2] [3] .  

Descripción

Toda la variedad de arquitecturas informáticas en esta taxonomía de Flynn se reduce a cuatro clases [4] :

Dado que el paralelismo se utiliza como criterio principal en la taxonomía, la taxonomía de Flynn se menciona con mayor frecuencia en la literatura técnica [5] [6] [7] [4] [8] cuando se clasifican los sistemas informáticos paralelos . MISD es una arquitectura poco utilizada, principalmente con el propósito de protección contra fallas (por ejemplo, para redundancia en caliente de computadoras en sistemas de vuelo como " Space Shuttle " o " Energy-Buran ", en SCADA , crítica a fallas, etc.) . Dado que una máquina SISD no es una máquina paralela, y MISD no es una arquitectura paralela típica, todos los sistemas informáticos paralelos pertenecen a la clase de SIMD o MIMD.

Con el desarrollo de la tecnología, las clases SIMD y MIMD comenzaron a cubrir demasiadas máquinas que son radicalmente diferentes entre sí. En este sentido, en la literatura técnica [9] [10] se utiliza un criterio adicional: la forma de trabajar con la memoria desde el punto de vista del programador. De acuerdo con este criterio, los sistemas se dividen en "sistemas con memoria compartida" ( ing.  memoria compartida , SM) y "sistemas con memoria distribuida" ( ing.  memoria distribuida , DM). En consecuencia, cada clase, SIMD y MIMD, se divide en subclases: SM-SIMD/DM-SIMD y SM-MIMD/DM-MIMD.

Presta especial atención a la aclaración "desde el punto de vista del programador". El hecho es que hay sistemas informáticos en los que la memoria se distribuye físicamente entre los nodos del sistema, pero para todos los procesadores del sistema es visible como un único espacio de direcciones global común. Vea a continuación para obtener más información sobre esto.

SISD

La arquitectura SISD  es una computadora de arquitectura tradicional von Neumann con un solo procesador que ejecuta una instrucción tras otra en secuencia, operando en un solo flujo de datos. Esta clase no utiliza paralelismo de datos ni de instrucciones y, por lo tanto, la máquina SISD no es paralela. Los procesadores de canalización , superescalares y VLIW también se conocen comúnmente como esta clase .

SIMD

Los representantes típicos de SIMD son los procesadores vectoriales , los procesadores modernos ordinarios cuando funcionan en el modo de ejecutar instrucciones de extensión vectorial, así como una subespecie especial con una gran cantidad de procesadores  : los procesadores matriciales. En las máquinas SIMD, un procesador carga una instrucción, un conjunto de datos, y realiza la operación descrita en esta instrucción en todo el conjunto de datos al mismo tiempo.

SM-SIMD (memoria compartida SIMD)

Esta subclase incluye procesadores vectoriales . En computación científica, la mayoría de las operaciones implican aplicar una sola operación a una gran cantidad de datos. Además, esta operación se puede realizar en cada elemento de datos de forma independiente, es decir, hubo paralelismo de datos, para cuyo uso se crearon procesadores vectoriales.

Los procesadores vectoriales se generalizaron a principios de los años 70, principalmente en las supercomputadoras de la época (CDC STAR-100, Cray-1 ). Desde mediados de la década de 1970 hasta finales de la de 1980, todas las supercomputadoras eran máquinas vectoriales, y una supercomputadora en esos años significaba una máquina vectorial. Las supercomputadoras vectoriales todavía se utilizan en la industria y la computación científica, y todavía se incluyen en la lista de productos de casi todos los principales fabricantes de supercomputadoras: NEC , Fujitsu , Hitachi , Cray . El desarrollo de la miniaturización en la tecnología informática ha permitido agregar un método vectorial de procesamiento de datos a los microprocesadores modernos, donde están representados por un conjunto de instrucciones especiales, extensiones del ensamblador [11] [12] . Al ejecutarlos, el procesador cambia a modo vectorial y se convierte en una máquina SM-SIMD por este tiempo.

DM-SIMD (memoria distribuida SIMD)

Los llamados " procesadores de matriz " pertenecen a esta subclase . Son una matriz de procesadores que están controlados por un procesador de control, que realiza una operación en su propia porción de datos almacenados en la memoria local a su disposición. Dado que no hay comunicación entre los procesadores, no se requiere sincronización, lo que permite lograr enormes velocidades de cómputo y expandir fácilmente el sistema simplemente aumentando la cantidad de procesadores. Para entender el trabajo de un procesador matricial, basta con imaginar lecciones matutinas de aeróbic en la televisión, donde un actor establece movimientos en el estudio, y millones de espectadores los repiten al ritmo de forma simultánea en todo el país.

Dado que los procesadores matriciales solo se pueden usar para una gama limitada de tareas, durante mucho tiempo existieron solo en forma de máquinas experimentales altamente especializadas. Además, su producción requería la creación de procesadores especializados. El primer intento (bastante infructuoso) de construir un procesador matricial fue la computadora ILLIAC IV13] principios de los años 70, el segundo intento famoso fueron las máquinas CM-1 y CM-2 de Thinking Machines y las supercomputadoras de MasPar a principios de la década de 1970. años 80 [13] . El desarrollo de la miniaturización en la informática ha permitido retomar la idea de los procesadores matriciales y revivirla en las tarjetas gráficas ( GPGPU ), que se utilizan para la informática de alto rendimiento.

MISD

Varios investigadores incluyen computadoras transportadoras en la clase MISD , pero esto no ha encontrado un reconocimiento final. También es posible considerar los sistemas MISD como sistemas de espera activa. Además, algunos se refieren a la arquitectura MISD como matrices sistólicas de procesadores.

MIDM

La clase MIMD incluye sistemas multiprocesador , donde los procesadores procesan múltiples flujos de datos. Esto incluye máquinas multiprocesador tradicionales , procesadores de múltiples núcleos y subprocesos múltiples , y clústeres de computadoras .

Al trabajar con la memoria, esta clase se divide en subclases.

SM-MIMD (MIMD de memoria compartida)

Este grupo incluye máquinas multiprocesador con memoria compartida , procesadores multinúcleo con memoria compartida.

El ejemplo clásico y más común son los multiprocesadores : servidores SMP  multiprocesador . En tales máquinas, la memoria es visible para cada procesador como un espacio de direcciones común y los procesadores se comunican entre sí a través de un bus de direcciones común a través de variables compartidas . Para cada procesador, el acceso a cualquier ubicación de memoria es el mismo (ver UMA ).

Como se mencionó anteriormente, la memoria, que es visible para el programador como un espacio de direcciones común, puede distribuirse físicamente entre los nodos del sistema. Tal subclase de máquinas se llama DSM-MIMD ( MIMD de memoria compartida distribuida ). En esta subclase de máquinas, cada procesador tiene su propia memoria local y el procesador accede a otras áreas de la memoria a través de una conexión de alta velocidad. Dado que el acceso a diferentes partes de la memoria compartida no es el mismo (es más rápido para su parte local, más lento para otras), tales sistemas se denominan NUMA (de Non-Uniform Memory Access ). Debido a que la memoria está distribuida físicamente, se vuelve difícil para cada procesador ver los cambios realizados por otros procesadores en la memoria. Hay varias formas de resolver este problema: a través de la coherencia de caché - ccNUMA , sin coherencia de caché - nccNUMA.

Los sistemas NUMA tienen una mayor escalabilidad, lo que permite la creación de sistemas de computación masivamente paralelos, donde el número de procesadores alcanza varios miles.

El modelo de programación en dichos sistemas sigue siendo el mismo: los hilos de ejecución intercambian datos entre sí a través de variables compartidas.

Pros: Relativamente fácil de programar, la compatibilidad con SMP existe desde hace mucho tiempo en todos los principales sistemas operativos .

La desventaja de estas máquinas es su baja escalabilidad : cuantos más procesadores haya en el sistema, mayor será la carga en el bus común . En las versiones comerciales de dichos sistemas, el número máximo de procesadores no supera los 64.

DM-MIMD (MIMD de memoria distribuida)

Esta subclase incluye máquinas MIMD multiprocesador de memoria distribuida.

Cada procesador tiene su propia memoria local que no es visible para otros procesadores. Cada procesador en dicho sistema realiza su tarea con su propio conjunto de datos en su memoria local. Si un procesador necesita datos de la memoria de otro procesador, este procesador intercambia mensajes con otro procesador, es decir, en tales sistemas se utiliza el modelo de programación Message Passing , utilizando la Máquina Virtual Paralela (PVM) o alguna implementación del Message Passing Interfaz (MPI).

La principal ventaja de las máquinas DM-MIMD es su alta escalabilidad , que permite crear sistemas paralelos de forma masiva de varios cientos de miles de procesadores.

Los clústeres de computadoras como Beowulf también pertenecen a esta clase como red de estaciones de trabajo .

SPMD y MPMD

En la literatura especializada [14] [15] , también se pueden encontrar tales subclases de la clase MIMD: SPMD ( programa único, datos múltiples ) y MPMD ( programas múltiples, datos múltiples ).

SPMD (programa único, datos múltiples): describe un sistema en el que solo se ejecuta un programa en todos los procesadores de una máquina MIMD, y en cada procesador procesa diferentes bloques de datos.

MPMD (programas múltiples, datos múltiples): describe un sistema, a) donde el programa maestro se ejecuta en un procesador de la máquina MIMD y el programa esclavo en el otro, cuyo trabajo está controlado por el programa maestro (principio maestro / esclavo o amo/trabajador ); b) donde diferentes programas se ejecutan en diferentes nodos de la máquina MIMD que procesan la misma matriz de datos de diferentes maneras (el principio del análisis acoplado ), en su mayor parte funcionan de forma independiente entre sí, pero de vez en cuando intercambian datos para ir al siguiente paso.

Características

La proporción de máquinas específicas para una clase específica depende en gran medida del punto de vista del investigador. Por lo tanto, las máquinas transportadoras se pueden asignar a la clase SISD (tubería: un solo procesador) y a la clase SIMD (flujo de datos vectoriales con un procesador de tubería) y a la clase MISD (muchos procesadores de tubería procesan un flujo de datos secuencialmente), ya la clase MIMD, como la ejecución de una secuencia de diferentes comandos (operaciones de etapas de canalización) con un flujo de datos escalares múltiples (vector).

Teniendo en cuenta el complejo informático en diferentes niveles de integración, se puede atribuir a diferentes clases: por ejemplo, la supercomputadora paralela masiva de alto rendimiento ASCI Blue Pacific era una máquina DM-MIMD, donde cada nodo se comunicaba con otro mediante el paso de mensajes, pero cada uno nodo en esta supercomputadora, a su vez, era un servidor multiprocesador RS/6000 SMP, es decir, era una máquina SM-MIMD. Al mismo tiempo, la supercomputadora paralela masiva de alto rendimiento ASCI Blue Mountain era un sistema de servidores SMP (SM-MIMD) vinculados a una máquina de memoria compartida distribuida compartida (es decir, DSM-MIMD).

Notas

  1. Flynn M. J.   Computadores de muy alta velocidad // Proc IEEE, 1966, 54 . - Pág. 1901-1901.
  2. Flynn M. J.   Algunas organizaciones informáticas y su eficacia // IEEE Transactions on Computers, 1972, 21 (9). - Pág. 948-960.
  3. Padua, 2011 , pág. 689.
  4. 12 Padua , 2011 , pág. 689-697.
  5. Severance_Dowd, 1998 , p. 258.
  6. Stallings, 2009 , pág. 630.
  7. Patterson_Hennessy, 2011 , pág. 649.
  8. Valentin Sedykh / Multiprocesamiento hoy. 2004 . Consultado el 18 de octubre de 2013. Archivado desde el original el 19 de octubre de 2013.
  9. DESCRIPCIÓN GENERAL DE LAS SUPERCOMPUTADORAS RECIENTES: Las principales clases arquitectónicas (enlace descendente) . Consultado el 8 de octubre de 2013. Archivado desde el original el 31 de diciembre de 2013. 
  10. Severance_Dowd, 1998 , p. 259-267.
  11. EES
  12. ¡3D ahora!
  13. 1 2 Patterson_Hennessy, 2011 , pág. 7.14.
  14. RS/6000SP, 1996 , pág. 3.
  15. Programación práctica de MPI, 1999 , p. 7.

Literatura