Arquitectura de computadoras II Unidad 2. Multiprocesamiento Ingeniería en Telemática
Programa de la asignatura:
Arquitectura de computadoras II
Unidad 2. Multiprocesamiento
Clave:
210930830
Universidad Abierta y a Distancia de México
Ciencias Exactas Ingeniería y Tecnología | Ingeniería en Telemática
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Índice Unidad 2. Multiprocesamiento............................................................................................ Multiprocesamiento ............................................................................................ 2 Presentación Presentaci ón de la unidad ................................................................................................. 2 Propósitos.......................................................................................................................... 5 Competencia Competenc ia especí específica fica ..................................................................................................... 5 2.1. Tipos de multiprocesamiento multiprocesamiento ...................................................................................... 6 2.1.1. Simétrico......................................................................................................... Simétrico ......................................................................................................... 12 2.1.2. Asimétrico ....................................................................................................... Asimétrico ....................................................................................................... 18 Actividad 1. Multiprocesos Multiprocesos básicos .................................................................................. 20 2.2. Procesamiento paralelo ............................................................................................ 21 2.2.1. Aspectos básicos ............................................................................................ básicos ............................................................................................ 23 2.2.2. Tipos de computación paralela ....................................................................... 26 2.2.3. Taxonomía de Flynn ....................................................................................... Flynn ....................................................................................... 30 Actividad 2. Tipos de multiproces multiprocesos os ................................................................................. 33 2.3. Sistemas de memoria compartida............................................................................. 34 2.3.1. Introducción a los sistemas de memoria compartida ....................................... 35 2.3.2. Redes de interconexión dinámicas .................................................................. 36 Actividad 3. Ventajas y desventajas desventajas de los tipos de de multiprocesamiento.......................... multiprocesamiento.......................... 40 2.4. Sistemas de memoria distribuida .............................................................................. 40 2.4.1. Introducción a los sistemas de memoria distribuida ........................................ 41 2.4.2. Clúster ............................................................................................................ ............................................................................................................ 42 Actividad 4. Aplicación Aplicación de los multiprocesos multiprocesos.................................................................... 44 Autoevaluación Autoeva luación ................................................................................................................ 45 Evidencia Eviden cia de aprendiz aprendizaje. aje. Multiproce Multiprocesamiento samiento ................................................................ 45 Autorreflexiones Autorrefle xiones............................................................................................................... 46 Cierre de la unidad .......................................................................................................... 47 Para saber más ............................................................................................................... 48 Fuentes de consulta ........................................................................................................ 48
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
1
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Unidad 2. Multiprocesamiento Presentación de la unidad Una de las tendencias en los últimos años, dentro del desarrollo de todo tipo de sistemas computacionales, es el diseño e implementación de arquitecturas internas, y específicamente, de microprocesadores que brinden un mejor rendimiento mediante el uso de varios procesadores. Este tipo de sistemas de multiprocesamiento se utiliza en diversos ámbitos, como en el de las supercomputadoras (computadoras de alto rendimiento, con especificaciones con una alta exigencia en procesamiento y de costos muy elevados, con el objetivo de reducir tiempos) y en los de altas prestaciones (llamados así porque poseen características técnicas muy superiores a los convencionales), así como en otros tipos de dispositivos. Su implementación abarca desde computadoras personales de escritorio y consolas de videojuego, hasta reproductores multimedia y otros sistemas empotrados, como las tabletas, que en modelos recientes utilizan un circuito integrado PP5021C-TDF con dos procesadores ARM, funcionando a 80Mhz (Huerta, 2009).
CI PP5021C-TDF
Conforme se ha desarrollado la tecnología en microprocesadores ha sido común encontrar sistemas complejos, compuestos por multitud de elementos en un único circuito integrado (CI). Este tipo de sistemas se conoce como SOC (por sus siglas en inglés, System On a Chip); sistemas que antes se fabricaban utilizando varios chips, ahora se producen en un CI (Huerta, 2009). Aunado a lo anterior, anterior, en años años recientes, recientes, muchos de los procesadores procesadores orientados orientados a los dispositivos móviles pertenecen a los ya mencionados SOC y poseen una arquitectura que responde a la miniaturización, que además implica que los chips incluyan otros componentes de hardware del sistema, como memoria, conectores, puertos de comunicación y tarjeta gráfica. Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
2
Arquitectura de computadoras II Unidad 2. Multiprocesamiento En este rubro existen dos grandes divisiones en las arquitecturas para los microprocesadores de teléfonos móviles: la x86, liderada por Intel, y la arquitectura ARM, presente en los microprocesadores fabricados por Apple, Samsung, Nvidia o Qualcomm. Por mencionar un ejemplo de la evolución de los microprocesadores, y mejor aún, de la tarea de multiprocesamiento, en el caso de Intel, la reciente arquitectura, denominada Silvermont, incluye transistores de 22 nanómetros (millonésima parte de un centímetro). La primera generación de éstos tuvo 45 nanómetros y la segunda 32; al mismo tiempo, los transistores del microprocesador tienen una estructura tridimensional. Esto presume una novedad en la fabricación de transistores de los microprocesadores de la gama Intel Atom, ya que hasta este momento momento habían habían sido planos planos (Delgado, (Delgado, 2013). 2013). En esta unidad examinarás cómo se ejecutan las instrucciones dentro de un microprocesador. Con la intención de familiarizarte con lo que aquí va a exponerse, es recomendable que consultes la siguiente liga, ahí encontrarás un video que también te puede servir como una visión general para esta unidad: https://www.youtube.com/watch?v=_qmArlrYSsg A lo largo de esta unidad unidad encontraras encontraras términos cuyo cuyo significado significado no conozcas, conozcas, pero pero que probablemente hayas escuchado; una de las intenciones será disipar las dudas que tengas en ese aspecto. Además de definir el multiprocesa multiprocesamiento, miento, es importante explicar cómo cómo se lleva lleva a cabo este proceso, así como sus distintos tipos, y por supuesto, su evolución. Estudiarás tanto el flujo de datos, como el flujo de instrucciones; además detectarás la importancia que tienen en la ejecución de tareas dentro de los equipos o dispositivos electrónicos. De igual forma, identificarás las ventajas y desventajas que se presentan de manera general dentro del multiprocesamiento; también podrás reconocer los Sistemas de Memoria Compartida y distribuida, cuya función consiste en compartir la memoria para la realización de procesos. Finalmente, como apoyo a esta presentación, en el siguiente mapa se han organizado, de manera breve, conceptos que representan los rasgos esenciales a estudiar, así como sus ventajas, desventajas, características, tipos de sistemas de memoria, tipos de multiprocesamiento y algunos ejemplos.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
3
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Multiprocesamiento
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
4
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Propósitos Al término de esta unidad lograrás:
Distinguir los tipos de multiprocesos que se dan en un microprocesador. Diferenciar entre los procesamientos simétricos, asimétricos y paralelos. Identificar los sistemas de memoria compartida y distribuida. Analizar las ventajas y desventajas del multiprocesamiento, tomando en cuenta las especificaciones de un microcontrolador y distinguiendo bajo qué condiciones se usaría un microprocesador.
Competencia específica
Clasificar los microprocesadores para distinguir las diferentes formas en las que se lleva a cabo el multiprocesamiento en los microprocesadores, identificando las propiedades de cada componente.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
5
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.1. Tipos de multiprocesamiento El multiprocesamiento es un conjunto de elementos organizados y relacionados, interactuantes entre sí, para lograr un mismo objetivo; indudablemente, esto hace referencia a un sistema. En esencia, consiste en usar más de un procesador (o bien una serie de computadoras con CPU o procesadores independientes). Estos sistemas progresan en importancia tecnológica, ya que permiten incrementar la cantidad de procesos a ejecutar con respecto a los sistemas de monoprocesamiento, que son aquéllos donde sólo hay una CPU capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo las de procesos de usuario, así como su importancia económica, ya que esto se ve reflejado al momento de realizar algún proceso, o ejecutar algún tipo de aplicación en los dispositivos, lo cual genera menores costos de espera.
Multiprocesamiento
De acuerdo con UDG, (2013), el multiprocesamiento posee tres ventajas principales: 1. Incrementan el rendimiento. Por incrementarse el número de procesadores, se incrementa la cantidad de trabajo en un tiempo menor. 2. Economía de escala. El costo de estos sistemas es menor que el de monoprocesamiento, gracias a que ellos pueden compartir periféricos, almacenamiento y suministro de energía. Por ejemplo, si varios programas operan sobre el mismo conjunto de datos, es más barato almacenar éstos en un disco y hacer que todos los procesadores los compartan, que tener muchas computadoras con discos locales y muchas copias de los datos.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
6
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 3. Mayor fiabilidad. Las funciones pueden ser distribuidas al tener más de un procesador, ya que al ocurrir un fallo, el sistema no se detiene, sino que se hace más lento. La mayoría de las computadoras supervisoras se diseñan específicamente para dar soporte a múltiples procesadores. Éstas incluyen un bus de altas prestaciones, decenas de MB para memoria con corrección de errores, sistemas de disco redundantes, arquitecturas avanzadas de sistemas que reducen los cuellos de botella, utilidades redundantes y múltiples fuentes de alimentación.
Diseños Existen dos diseños de sistemas multiprocesadores:
Simétricos. Comparten los recursos del sistema, como la entrada salida de memoria y disco. En ellos se distribuye uniformemente la carga de trabajo a los procesadores disponibles, de modo que uno no esté inactivo mientras otro tiene exceso de trabajo con una tarea específica. Asimétrico. Diferentes microprocesadores gobiernan las distintas tareas y recursos del sistema. El enfoque principal que adoptan es el incremento de rendimiento del sistema para múltiples usuarios de red en variados segmentos de red de área local.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
7
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Tipos de multiprocesamiento. Tomada de http://cdcp.dyndns.org/tesis/img5.png
¿Qué es el multiproceso? Tradicionalmente, el multiproceso es conocido como el uso de múltiples procesos, concurrentes en un sistema, en lugar de uno en un instante determinado. El multiproceso para tareas generales es a menudo bastante difícil de conseguir debido a que puede haber varios programas manejando datos internos (lo que se conoce como estado o contexto) en un mismo tiempo.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
8
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Multiproceso. Tomado de http://1.bp.blogspot.com/-
zRJZYmaJiXU/US525JqApzI/AAAAAAAAAF4/mu5RrOUrWww/s1600/SMP_00.png
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
9
Arquitectura de computadoras II Unidad 2. Multiprocesamiento ¿Qué es multitarea?
Multitarea . Tomada de
http://wwwbmxkazy.blogspot.mx/2012/01/uni dad-3-administracion-del-procesador.html
De acuerdo con Alegsa (2012), multitarea es una “característica de un sistema operativo que permite ejecutar varios procesos al mismo tiempo, usando uno o más microprocesadores”. Proporcionalmente, en informática como en otros ámbitos sociales, se llama multitarea a la capacidad o característica de realizar varias funciones al mismo tiempo. Hace unas pocas décadas esto no existía, ahora, dada la multiplicidad de procesos y tareas que deben realizarse en diversos ámbitos, por ejemplo, en el laboral o de negocios y hasta cotidianos, los procesadores tienen que disponer de capacidades más complejas y avanzadas para permitir la ejecución de distintas acciones que se sobrepongan, sin ralentizar ni entorpecer el aprovechamiento del equipo o dispositivo por parte del usuario.
Otra manera de ejemplificar una multitarea, es cuando al trabajar en la computadora personal, al estar realizando una acción específica, por ejemplo escribir un documento en un procesador de palabras, al mismo tiempo se ejecuta el antivirus o se tiene abierto un navegador, lo cual permite buscar información al mismo tiempo y hasta chatear .
Tipos de multitareas Existen diferentes tipos de multitareas:
Nula. Es aquel sistema operativo, SO, que carece de multitarea, aun así puede simularla, implementándola en un espacio de usuario o usando trucos como los TSR en MS-DOS (justamente, la familia DOS es un ejemplo de sistema operativo de multitarea nula). Cooperativa. Los procesos de usuario son los que ceden la CPU al sistema operativo a intervalos regulares. Es sumamente problemático, porque si por algún motivo el proceso de usuario es interrumpido, no cede la CPU al sistema operativo que lo ejecuta y, por lo tanto, quedará trabado (tildado). Windows, antes de la versión 1995, implementaba este tipo de multitarea. Preferente. El sistema operativo se encarga de administrar uno o más procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
10
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
que esperan utilizarlo (tareas en ejecución). Sistemas operativos que utilizan este tipo de multitareas son UNIX y sus clones (FreeBSD, Linux, etc.), VMS, AmigaOS, WindowsNT, etc. Real. El sistema operativo ejecuta los procesos al mismo tiempo, haciendo uso de múltiples procesadores (más de dos). La ejecución se realiza en distintos procesadores para cada proceso o tarea, obviamente, en caso de que los procesos o tareas sean más que la cantidad de procesadores, éstos comienzan a ejecutarse en procesadores “en uso” en la forma de multitarea preferente. Todos los sistemas operativos modernos soportan esta capacidad.
Multitarea nula. Tomado de http://2.bp.blogspot.com/868zU3bFtwo/Tp7dHePaNcI/AAAAAAAAC94/0cclyX 9zFXc/s1600/msdos.jpg
Multitarea cooperativa. Tomado de http://files.descargawindows.webnode.mx/200000012 -52d0f54891/2w4zjgw.png
Multitarea real . Tomado de
Multitarea preferente
http://3.bp.blogspot.com/qHeaIq7v8pY/UTbyhqHdkxI/AAAAAAAAAY4/oIDKGc aLqn0/s1600/Windows-8.jpg
+Ejemplos de multitareas [algunas de las marcas e imágenes usados son propiedad de Microsoft].
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
11
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.1.1. Simétrico
Arquitectura de memoria SMP. Tomada de http://www.reocities.com/SiliconValley/5659/DWH_HW_archivos/image001.jpg
Sistemas de Multiprocesamiento Simétrico o SMP (Symetric Multi Processing), que son sistemas multiprocesador donde dos o más procesadores idénticos están conectados a una misma memoria principal compartida y a una misma interfaz de entrada-salida (Hennessy, 1993). El término “simétrico” se usa porque todos los procesadores utilizan el mismo mecanismo
para acceder a la memoria, así como a los periféricos, y compiten en igualdad de condiciones para obtener dicho acceso. Por lo que a estos sistemas se les conoce con el nombre de Multiprocesadores de Memoria Compartida, MMC; a este tipo de arquitectura también se le conoce como UMA (Unified Memory Acces) en contraposición con otro tipo de sistemas multiprocesador con una arquitectura de memoria no uniforme, que se denominan Multiprocesadores de Memoria Distribuida MMD, también se denomina NUMA (Non Uniform Memory Acces). Entre las características de los MMC se encuentran: Tiempos de acceso a memoria uniformes, ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal. De cada uno de los procesadores, sus lecturas y escrituras tienen exactamente las mismas latencias.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
12
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Debido a que la gestión de la memoria de cada módulo es transparente para el programador; su programación es más fácil que en los MMD. Como consecuencia del accesos simultáneo a la memoria, se producen colisiones y esperas, lo que representa un problema. Conforme a la organización de la arquitectura, es poco escalable en número de procesadores, debido a que puede surgir un cuello de botella si se aumenta el número de CPU.
En la siguiente ilustración observarás un ejemplo de cómo se da esta relación:
Ejemplo de implementación de multiprocesamiento simétrico. Tomada de
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/image FAP.JPG
La comunicación entre los distintos procesadores en los sistemas SMP, se hace de forma implícita, a través de la Memoria Compartida, por lo que dentro de la clasificación de Flynn-Johnson, los sistemas SMP entran en la categoría MIMD-GMSV.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
13
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Procesadores
Procesadores
Procesadores
El procesamiento SMP, también llamado estrechamente acoplado o compartido, tiene la característica de ser muy sencillo, ya que está compuesto por un conjunto de procesadores donde se comparte la memoria RAM, las tareas se llevan a cabo entre varios procesadores. Este tipo de configuración tiene una desventaja, ya que al aumentar el número de procesadores, el tráfico en el bus de memoria se satura y crea un cuello de botella, claro está que si se coloca una memoria caché en cada uno de los procesadores disminuirá el tráfico en el bus, evitando así el cuello de botella.
Multiprocesamiento estrecho
El número recomendado para esta configuración es de no más de ocho procesadores, como se muestra en la figura siguiente, ya que después de esta cifra el rendimiento tiende a disminuir.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
14
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Uso de varios procesadores . Tomada de http://publiespe.espe.edu.ec/articulos/sistemas/arquitectura/arquitectura.htm
Los sistemas SMP abarcan desde procedimientos con varios procesadores de propósito general, o especifico, conectados a una misma placa base con soporte para varios procesadores; hasta los más recientes multi-core, que dentro de una misma pieza de silicio ubican varios procesadores.
Clasificación de Flynn-Johnson . Huerta, (2009).
Con el paso del tiempo se han creado multiprocesadores con multiprocesamiento simétrico, cuya característica principal es que comparten la memoria. A manera de
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
15
Arquitectura de computadoras II Unidad 2. Multiprocesamiento ejemplo, en la siguiente tabla se nombran algunos de estos dispositivos, existentes en el mercado, con algunas de sus especificaciones de fábrica.
Procesador
Núcleos Frecuencia
Caché
Memoria
Año
SPARC T3
16
1.65 GHz
6 MB L2
128 GB DDR3
2010
SPARC T4
16
2.85 GHz
2 MB L2 + 4 MB L3
-
2013
Intel Xeon W3690
6
3.46 GHz
12 MB L3
24 GB DDR3
2011
Intel Xeon E7 8800
10
3.20 GHz
32+16 KB L1
-
2011
256 KB L2 30 MB L3
MIPS32 1074k
4
1.5 GHz
32+32KB L1
-
2010
ARM Cortex A15
4
2 GHz
-
-
-
AMD Opteron 6100
12
2.5 GHz
12MB L3
-
2010
Tabla comparativa de modelos SMP en el mercado. Tomado de
http://www.atc.uniovi.es/inf_superior/4atc/trabajos/paralelas/4SM%20de%20Memoria%20Compartida%20comerciales-memoria.pdf
De la sección Para saber más, se sugiere que consultes el video Todo sobre multiprocesamiento simétrico, en el cual se retoma este tema de una forma peculiar: https://www.youtube.com/watch?v=_TkwTgsgZs0 Para brindar una explicación más amplia sobre el multiprocesamiento simétrico, se presenta la siguiente analogía centrada en la organización. En una oficina x , con un espacio bien delimitado, en la cual sólo pueden trabajar ocho personas; por políticas propias que pretenden volver eficiente el trabajo, todos los empleados (microprocesadores) tendrán los mismos privilegios, no hay jefes, por lo que se pretende que la disposición de los recursos se realice de manera equitativa. Todos compartirán ciertos recursos (impresora, teléfono, Internet, etc.), y también podrán realizar las mismas actividades (mensajería, enviar informes, hacer cálculos, entre otras).
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
16
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Por diferentes motivos, se pensó en la posibilidad de integrar una persona más (microprocesador), pero la oficina sólo ha sido construida y acondicionada únicamente para estas ocho personas, lo cual podría representar una desventaja. Contrario a lo que se cree, si entra una persona más, las cosas se pueden complicar en la oficina; repercutiendo en una desorganización, y hasta llegando a poner en riesgo el desempeño laboral de cada empleado. La analogía con un equipo computacional más, hace referencia a un riesgo en el desempeño, ya que al entrar en funcionamiento otro procesador, éste se disminuye; de tal forma, una decisión que se podría tomar en dicho caso es terminar el proceso y cerrar la aplicación o tarea que se esté ejecutando, lo cual representaría una desventaja. Algunas de las características distintivas para cada integrante son las siguientes: uso del ancho de banda, derecho a la misma cantidad de llamadas, así como a la cantidad de copias que dispone cada uno. En el mismo orden de ideas, tendrán semejante cantidad de trabajo, logrando así que no quede una tarea sin realizar, sólo en caso de que no haya trabajo, todos los empleados podrán descansar.
Analogía de multiprocesamiento sim étrico
En esta analogía se muestran algunas ventajas y desventajas que se dan en el multiprocesamiento simétrico. Ahora se presentará otro tipo de procesamiento, el multiprocesamiento asimétrico, para que después identifiques las diferencias entre uno y otro.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
17
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.1.2. Asimétrico Multiproceso asimétrico (ASMP) es uno de los dos tipos de sistemas multiprocesador actualmente utilizados. En este tipo, un procesador está reservado para el sistema, mientras que los demás se dedican a las aplicaciones. También conocido como procesamiento maestro-esclavo, el Kernel del sistema operativo corre en una CPU, y no puede ser dividido entre procesadores. Con base en la definición de Alegsa (2012) Kernel debe entenderse como el núcleo, o la parte esencial, de un sistema operativo que provee los servicios más básicos del sistema, también se encarga de gestionar los recursos, como el acceso seguro al hardware de la computadora y el multiplexado, estableciendo qué programa accederá a un determinado hardware , en caso de que dos, o más, requieran usarlo al mismo tiempo Actualmente no hay mucha información referente a este tipo de sistemas, por tal motivo sólo se ofrecen ideas generales acerca de su funcionamiento. Cada procesador se asigna a una tarea específica. Un procesador maestro controla el sistema, y el resto de los procesadores esperan que el maestro les dé instrucciones o tienen asignadas tareas predefinidas. Este esquema define una relación maestro-esclavo. El procesador maestro es el único que ejecuta las funciones del sistema operativo; también planifica y asigna el trabajo de los procesadores esclavos. Además, tiene el control sobre toda la memoria y de todos los recursos E/S. Los esclavos sólo ejecutan aplicaciones de usuario. Una vez que un proceso está activo y el esclavo necesita un servicio E/S, envía una solicitud al maestro y espera a que el servicio se lleve a cabo. Este esquema presenta desventajas: el maestro puede ser un cuello de botella en el rendimiento, y todo depende de él, si falla, entonces todo se viene abajo y no se puede continuar. Un ejemplo de un sistema operativo que trabaja con multiprocesamiento asimétrico es SunOS versión 4 (Sistemops, 2013).
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
18
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Mult ipr oc esam ient o asim é tric o
La información presentada en este tema es evidentemente breve, y con el siguiente ejemplo se pretende complementar la explicación sobre el multiprocesamiento asimétrico. Si se retoma la analogía anterior de los ocho trabajadores en una oficina, en este caso, uno de estos ocho trabajadores es el que coordina todas las actividades que cada uno desarrollará. Una ventaja es que con este coordinador se pretende equilibrar la carga de trabajo, pero ocurre un problema muy visible y es que si el encargado no asigna correctamente las actividades, se puede dar más trabajo a una persona que a otra, obteniendo como resultado la acumulación de responsabilidades; por lo tanto, se crea un cuello de botella con las actividades que se estén solicitando al departamento. Por tal motivo el coordinador deberá tomar medidas drásticas para recuperar el control de las actividades o tareas, para que ya no se tenga trabajo acumulado o pendiente por realizar; quizá una de las medidas drásticas que tome el encargado sea eliminar el trabajo que se esté llevando a cabo, para poder liberar de carga a los siete empleados restantes. Esto se ejemplifica en el siguiente esquema:
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
19
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
An alog ía de mu lti pr oc esam ient o as im é tri co
Actividad 1. Multiprocesos básicos ¡Bienvenido(a) a la primera actividad de esta unidad! Ha llegado el momento de detallar, mediante un organizador gráfico, el funcionamiento de los tipos de procesamiento atendidos hasta este momento. Adicionalmente a las recomendaciones que tu Facilitador(a) te haya sugerido: 1. Crea un documento en el software de presentaciones de tu elección. 2. Elabora un organizador gráfico, detallando el funcionamiento de cada tipo de procesamiento visto hasta el momento. 3. Incluye sus ventajas y desventajas. 4. En el mismo documento, en un breve texto, escribe a manera de síntesis la información que explique el funcionamiento de los tipos de procesamiento y su relevancia en la actualidad. 5. Guarda tu actividad con la nomenclatura KARQ2_ACT1_U2_XXYZ. Sustituye las XX por las primeras dos letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la inicial de tu apellido materno. 6. Sube tu archivo para su revisión y posterior retroalimentación; de ser requerido, Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
20
Arquitectura de computadoras II Unidad 2. Multiprocesamiento vuélvelo a enviar. *Consulta los criterios de evaluación para cada actividad.
2.2. Procesamiento paralelo
Esquema general del procesamiento paralelo. Basado en http://1.bp.blogspot.com/-SvOlcLBn6EE/USfsSj0XEeI/AAAAAAAAAIM/3XCI5UZhjHw/s1600/im1.png
En el esquema anterior se muestra, de manera muy resumida, la forma en que se organiza el procesamiento paralelo, en el tema 2.2.2., también se exponen los cuatro tipos de computación paralela. De igual forma, podrás identificar ciertas características específicas que tiene cada una de estas clasificaciones, así como distinguir, mediante un ejemplo, el beneficio de este tipo de procesamiento. El procesamiento paralelo está basado en un principio aparentemente simple: “Dividir los problemas grandes en varios pequeños y solucionarlos simultáneamente” (EcuRed, 2013), esto permite ejecutar más instrucciones en menos tiempo. Al procesamiento paralelo también se le conoce como computación paralela, que es una forma de computación en la que se realizan varias operaciones de manera simultánea (Gottlieb, 1989), basándose en el principio de que los problemas grandes pueden ser divididos en problemas más pequeños, que pueden ser resueltos de forma concurrente en varias unidades de procesamiento; esto permite que el trabajo se complete en un tiempo Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
21
Arquitectura de computadoras II Unidad 2. Multiprocesamiento menor. La idea de utilizar varias unidades de procesamiento para incrementar el rendimiento de las aplicaciones no es nueva, existe desde los inicios de la era de las computadoras electrónicas.
Procesamiento paralelo. Tomado de http://www.mastermagazine.info/termino/wp-content/uploads/proceso.jpg
Hace más de 40 años, Flynn propuso un modelo, que se sigue utilizando, para clasificar todas las computadoras. Éste tiene en cuenta el paralelismo, tanto en las instrucciones como en los datos, y según esa clasificación, todo computador pertenece a alguna de las siguientes categorías:
SISD (Single Instruction, Single Data Stream). Instrucción individual, datos individuales. SIMD (Single Instruction, Multiple Data Streams). Instrucción individual, datos múltiples. MISD (Multiple Instruction, Single Data Stream). Instrucción múltiple, flujo de datos individuales. MIMD (Multiple Instruction, Multiple Data Stream). Instrucciones múltiples, flujo de datos múltiples.
Estas categorías se explicarán con mayor detalle más adelante. Los primeros multiprocesadores eran de tipo SIMD, pero ese tipo de arquitectura cayó en desuso en la década de los noventa, a excepción de los procesadores vectoriales. Los multiprocesadores de tipo MIMD han calado con fuerza como la principal arquitectura para multiprocesadores de propósito general. Una de las principales razones del auge de los multiprocesadores de tipo MIMD es su flexibilidad. Con un soporte adecuado de hardware y software pueden funcionar como un multiprocesador monoprogramado, enfocado a aumentar el rendimiento de una aplicación concreta; o también como multiprocesadores multiprogramados, ejecutando diferentes tareas, o una combinación de ambas funciones (Huerta, 2009). Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
22
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Este tipo de taxonomía (Flynn) la verás con mayor profundidad en el tema 2.2.3. Mientras tanto estudiarás algunos aspectos básicos de este tipo de procesamiento, y de igual forma conocerás los tipos de procesamiento paralelo.
2.2.1. Aspectos básicos Jouppi y Wall (1989) hacen una importante distinción entre dos conceptos relacionados: el paralelismo en las instrucciones y el paralelismo de la máquina. Existe paralelismo en las instrucciones cuando las instrucciones de una secuencia son independientes y por tanto pueden ejecutarse en paralelo, solapándose. Como ejemplo del concepto de paralelismo en las instrucciones, considera los dos siguientes fragmentos de código (Jouppi, 1989): Load Add Add
R1 ← R2 R3 ← R3, “1” R4 ← R4, R2
Add Add Store
R3 ← R3, “1” R4 ← R3, R2 [R4] ← R0
Las tres instrucciones de la izquierda son independientes, y en teoría las tres podrían ejecutarse en paralelo. Por el contrario, las tres instrucciones de la derecha no pueden ejecutarse en paralelo porque la segunda usa el resultado de la primera, y la tercera usa el resultado de la segunda. El paralelismo en las instrucciones depende de la frecuencia de dependencias de datos verdaderos y dependencias relativas al procedimiento que haya en el código. Estos factores se subordinan, a su vez, a la arquitectura del repertorio de instrucciones y de la aplicación. El paralelismo en las instrucciones depende también de lo que Jouppi y Wall (1989) llaman latencia de una operación: el tiempo que transcurre hasta que el resultado de una instrucción está disponible para ser usada como operando de una instrucción posterior. La latencia determina cuánto retardo causará una dependencia de datos relativa al procedimiento. Guerrero (2011) define el paralelismo de la máquina como: Una medida de la capacidad del procesador para sacar partido al paralelismo en las instrucciones. El paralelismo de la máquina depende del número de instrucciones que pueden captarse y ejecutarse al mismo tiempo (número de cauces paralelos) y de la velocidad y sofisticación de los mecanismos que usa el procesador para localizar Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
23
Arquitectura de computadoras II Unidad 2. Multiprocesamiento instrucciones independientes. Tanto el paralelismo en las instrucciones como el paralelismo de la máquina son factores importantes para mejorar las prestaciones. Un programa puede no tener el suficiente nivel de paralelismo en las instrucciones como para sacar el máximo partido al paralelismo de la máquina. El empleo de una arquitectura con instrucciones de longitud fija, como un RISC, aumenta el paralelismo en las instrucciones. Por otra parte, un escaso paralelismo de la máquina limitará las prestaciones sin que importe la naturaleza del programa.
Procesamiento paralelo
En el procesamiento paralelo, la principal ventaja consiste en que cada procesador trabaja de manera independiente con cada tarea que le fue asignada, logrando así obtener resultados en menor tiempo; alguno de éstos puede tener mucha mayor actividad que otro. Como se puede ver en la imagen Procesamiento en paralelo con un procesador Intel CORE I5 , este equipo cuenta con un procesador con cuatro núcleos, mostrándose el desempeño de las actividades que realiza cada núcleo del procesador.
Procesamiento en paralelo con un p rocesador Intel CORE I5
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
24
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Desafortunadamente, una desventaja muy visible es que, como las tareas grandes se dividen en tareas más pequeñas asignándose a cada procesador, éste tiene que acceder a recursos que son compartidos, y que en ciertos casos, algún otro procesador puede estar ocupando dichos recursos. Esto generará ciertos retardos en las actividades, además de que no siempre se dividen las tareas de forma equitativa, debido a que es muy complicado, por tal motivo, la distribución de tamaños en las actividades es sesgada. Los anteriores sólo son algunos aspectos, muy generales, de este tipo de procesamiento; para entender algunas de sus ventajas, se usará el mismo escenario mencionado en el multiprocesamiento simétrico y asimétrico. En este caso, ya es posible contar con una oficina para más de ocho personas, las cuales se dividirán el trabajo entre ellas mismas sin tener un jefe o encargado, la tarea o actividad que tengan que realizar se dividirá en tareas o problemas más pequeños que se asignarán a cada empleado, así será posible tomar un descanso mientras se asigna una nueva tarea. Un pequeño problema que se presenta es que, desafortunadamente, no se pueden dividir de forma equitativa las actividades, por tal motivo algunos trabajarán más que otros. Otro problema que se presenta es que, como se reparten los recursos, puede ser un poco tardado en tener respuestas, ya que si un empleado quiere usar la impresora o fotocopiadora, deberá esperar a que su compañero termine de usarlas. Una de las desventajas del procesamiento paralelo consiste en que un procesador puede trabajar más que otro, y alguno de ellos puede estar en reposo, o bien, sin hacer nada.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
25
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Analogía de multiprocesamiento paralelo
Ahora se presentan los tipos de computación paralela básica que existen en el siguiente apartado, para de esta manera continuar con el estudio de este procesamiento.
2.2.2. Tipos de computación paralela La computación paralela se clasifica en cuatro tipos básicos: Paralelismo de bit Paralelismo de instrucción Paralelismo de datos Paralelismo de tareas
Paralelismo de bit La aceleración en la arquitectura de computadoras se lograba, en gran medida, duplicando el tamaño de la palabra en la computadora, la cantidad de información que el procesador puede manejar por ciclo (Culler, 1997). El aumento del tamaño de la palabra reduce el número de instrucciones que el procesador debe ejecutar para realizar una Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
26
Arquitectura de computadoras II Unidad 2. Multiprocesamiento operación en variable, cuyos tamaños son mayores que la longitud de la palabra. Por ejemplo, cuando un procesador de 8 bits debe sumar dos enteros de 16 bits, el procesador primero debe adicionar los 8 bits de orden inferior de cada número entero con la instrucción de adición, a continuación, añadir los 8 bits de orden superior utilizando la instrucción de adición con acarreo que tiene en cuenta el bit de acarreo de la adición de orden inferior. En este caso, un procesador de 8 bits requiere dos instrucciones para completar una sola operación; un procesador de 16 bits necesita una sola instrucción para poder completarla. Históricamente, los microprocesadores de 4 bits fueron sustituidos por los de 8 bits, luego de 16 bits y 32 bits, esta tendencia general llegó a su fin con la introducción de procesadores de 64 bits, lo que ha sido un estándar en la computación de propósito general durante la última década.
Paralelismo de instrucción Un programa computacional es, en esencia, una secuencia de instrucciones ejecutadas por un procesador. Estas instrucciones pueden reordenarse y combinarse en grupos que luego son ejecutados en paralelo sin cambiar el resultado del programa. Esto se conoce como paralelismo de instrucción. Los avances en el paralelismo de instrucción dominaron la arquitectura de computadores desde mediados de 1980 hasta mediados de la década de 1990 (Culler, 1997). Los procesadores modernos tienen pipeline de instrucciones de varias etapas. Cada etapa en el pipeline corresponde a una acción diferente que el procesador realiza; un procesador con un pipeline de n etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalización (Patt, 2004). El ejemplo canónico de un procesador segmentado es un procesador RISC, con cinco etapas: Pedir instrucción Decodificar Ejecutar Acceso a la memoria Escritura
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
27
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Pipeline canónico de cinco etapas en una máquina RISC (IF= Pedido de Instrucción, ID= Decodificación de instrucción, EX= Ejecutar, MEM= Acceso a la memoria, WB= Escritura). Tomada de
http://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Fivestagespipeline.png/800pxFivestagespipeline.png
El procesador Pentium 4 tenía un pipeline de 35 etapas.
Paralelismo de datos El paralelismo de datos es inherente en programas con ciclos; se centra en la distribución de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. “La paralelización de ciclos conduce , a menudo, a secuencias similares de operaciones (no necesariamente idénticas), o funciones que se realizan en los elementos de una gran estructura de datos” (Culler, 1997). Muchas de las aplicaciones científicas y de ingeniería muestran paralelismo de datos.
Paralelismo de datos en el código de una aplicación . Tomado de http://i.imgur.com/M9I4W.png
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
28
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Paralelismo de tareas El paralelismo de tareas es la característica de un programa paralelo en el que “cálculos completamente diferentes se pueden realizar en cualquier conjunto igual o diferente de datos” (Culler, 1997). Esto contrasta con el paralelismo de datos, donde se realiza el
mismo cálculo en distintos, o mismos grupos de datos. El paralelismo de tareas, por lo general, no escala con el tamaño de un problema.
Paralelismo de tareas
Como se puede observar, sólo son cuatro tipos básicos de procesamiento, continuando con el paralelismo, Flynn, en su taxonomía, muestra la clasificación de algunos procesamientos, como se observará en el siguiente tema.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
29
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.2.3. Taxonomía de Flynn
SISD, Single Intruction, Single Data Instrucción Individual
SIMD, Single Instruction Multiple Data InstrucciónIndividual
Taxonomía de Flynn MISD, Multiples secuencias de instrucciones y una secuencia de datos InstrucciónMúltiple
MIMD, Múltiples secuencias de instrucciones y múltiples secuencias de datos
Manipulación de datos
InstrucciónMúltiple
Método 1 Memoria físicamente compartida
Método 2
Taxonomía de Shore
Memoria lógicamente compartida y físicamente distribuida
Método 3 Memoria y memoria distribuida
Taxonomía de Flynn y Shore. Maccabe, 1993.
En primer lugar, Alegsa (2012) considera la taxonomía como la categorización o clasificación de cosas, basada en un sistema predeterminado. Hay dos categorías básicas para la clasificación de equipos: la de Flynn y aquélla de Shore. La taxonomía de Shore, al igual que la de Flynn, clasifica los equipos en función del número de elementos. Mientas la taxonomía de Flynn pretende clasificarlos por la organización del software (instrucciones y datos), la clasificación de Shore lo hace por la estructura del hardware (unidad de control, unidad de proceso y memoria de datos e instrucciones). En este caso se tocará únicamente de la clasificación que hace Flynn, basada en dos conceptos (Tanenbaum, 200): Flujos de instrucciones. Corresponde a un contador de programa. Un sistema que tiene n CPU, tiene n contadores de programa, y por tanto n flujos de instrucciones. Flujos de datos. Consiste en un conjunto de operandos.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
30
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Los flujos de instrucciones y de datos son, hasta cierto punto, independientes, por lo que existen cuatro combinaciones que se enumeran en la siguiente tabla: Flujos de Flujos instrucciones de datos
Nombre
1
1
SISD
Máquina clásica de Von Neumann
1
Varios
SIMD
Supercomputadora vectorial, procesador de arreglos
Varios
1
MISD
Tal vez ninguno
Varios
Varios
MIMD
Multiprocesador, multicomputadora
Ejemplos
Taxonomía de Flynn. Tomada de Tanenbaum, 2000.
SISD es la computadora secuencial clásica de Von Neumann; tiene un flujo de instrucciones, un flujo de datos y hace una cosa a la vez. Las máquinas SIMD tienen sólo una unidad de control que emite una instrucción al mismo tiempo, pero tienen múltiples ALU para ejecutarla, con varios conjuntos de datos. Existen máquinas SIMD modernas y se usan para cálculos científicos. Las máquinas MISD son una categoría un tanto extraña, en la que varias instrucciones operan con un mismo dato. No se sabe a ciencia cierta si existen máquinas de este tipo, aunque algunas personas clasifican a las máquinas con filas de procesamiento como MISD. Por último, se tienen las MIMD, que no son más que múltiples CPU independientes que operan como parte de un sistema mayor. Casi todos los procesadores paralelos pertenecen a esta categoría. Tanto los multiprocesadores como las multicomputadoras son máquinas MIMD. Estas categorías ya se habían mencionado; en este caso se extenderá un poco más su estudio de acuerdo con los fines que se plantean con este tema.
Una secuencia de instrucciones y una secuencia de datos (SISD, Single Instruction Single Data). Un único procesador interpreta una única secuencia de instrucciones para operar con los datos almacenados en una única memoria. Los equipos monoprocesador se encuentran es esta categoría (Stallings, 2007). Una secuencia de instrucciones y múltiples secuencias de datos (SIMD, Single Instruction Multiple Data). Una única instrucción máquina controla paso a paso la ejecución simultánea y sincronizada de un cierto número de elementos de proceso. Cada elemento de proceso tiene una memoria asociada, de forma que
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
31
Arquitectura de computadoras II Unidad 2. Multiprocesamiento cada instrucción es ejecutada por cada procesador con un conjunto de datos diferentes. Los procesadores vectoriales y los matriciales pertenecen a esta categoría (Stallings, 2007).
Múltiples secuencias de instrucciones y una secuencia de datos (MISD). Se transmite una secuencia de datos a un conjunto de procesadores, cada uno de los cuales ejecuta una secuencia de datos a un conjunto de procesadores que ejecuta una secuencia de instrucciones diferente de manera individual. Esta escritura nunca ha sido implementada (Stallings, 2007). Múltiples secuencias de instrucciones y múltiples secuencias de datos (MIMD). Un conjunto de procesadores ejecuta simultáneamente secuencias de instrucciones diferentes con conjuntos de datos diferentes. Los SMP, los clústers y los sistemas NUMA son ejemplos de esta categoría (Stallings, 2007).
La taxonomía de Flynn termina con este diagrama. Se ha dividido a SIMD en dos subgrupos. El primero es el de las supercomputadoras numéricas y otras máquinas que operan con vectores, realizando la misma operación con cada elemento del vector. El segundo es para las máquinas tipo paralelo, como la ILLIAC IV, en las que una unidad de control maestra difunde instrucciones a muchas ALU independientes.
Una taxonomía de computadoras paralelas. Tanenbaum, 2000
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
32
Arquitectura de computadoras II Unidad 2. Multiprocesamiento En esta taxonomía, la categoría MIMD se ha dividido en multiprocesadores (máquinas con Memoria Compartida) y multicomputadoras (máquinas que transfieren mensajes). Existen tres clases de multiprocesadores, que se distinguen por la forma en que se implementa la Memoria Compartida: acceso uniforme a la memoria (UMA, Uniform Memory Access), acceso no uniforme a la memoria (NUMA, Non Uniform Memory Access) y sólo acceso a memoria caché (COMA, Cache Only Memory Access). Estas categorías existen porque en los multiprocesadores grandes, normalmente, la memoria se divide en varios módulos. La otra categoría principal de máquinas MIMD comprende las multicomputadoras que, a diferencia de los multiprocesadores, no tienen una memoria primaria compartida en el nivel arquitectónico. En otras palabras, el sistema operativo de una CPU de multicomputadora no puede acceder a memoria conectada a una CPU distinta con sólo ejecutar una instrucción LOAD; tiene que enviar un mensaje explícito y esperar una respuesta. Las multicomputadoras se pueden dividir, a grandes rasgos en dos categorías. La primera contiene los procesadores masivamente paralelos (MPP, Massively Parallel Processors), que son supercomputadoras caras que consisten en muchas CPU, acopladas estrechamente por una red de interconexión patentada de alta velocidad; la segunda consiste en PC o estaciones de trabajo normales, tal vez montadas en anaqueles, y conectadas mediante tecnología comercial ordinaria.
Actividad 2. Tipos de multiprocesos Esta actividad consiste en la elaboración de un ensayo que permita reportar y plasmar tu propio criterio con base en un análisis, donde muestres en qué consiste cada sistema de memoria (compartida y distribuida); de igual forma debes evaluar la diferencia entre los tipos de procesamiento mencionados. También deberás valerte de los conocimientos adquiridos en tu experiencia profesional. Con base en lo anterior, realiza lo siguiente: 1. Define el título de tu ensayo. 2. En un documento de texto, en tus propias palabras, elabora una pequeña introducción de tu ensayo, mínimo media cuartilla. 3. Desarrolla el contenido, aportando especificaciones técnicas y esquemas o diagramas. 4. Sustenta tu ensayo con por lo menos tres fuentes bibliográficas o electrónicas reconocidas, no debes basarte en fuentes como Wikipedia o similares. También es importante reconocer y respetar los derechos de autor, dando los correspondientes créditos, así como evitar copiar y pegar, esto podría anular la
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
33
Arquitectura de computadoras II Unidad 2. Multiprocesamiento actividad. 5. Genera una conclusión de mínimo media cuartilla, aterrizando todas las ideas plasmadas durante tu desarrollo. 7. Guarda tu trabajo en un archivo llamado KARQ2_U2_A2_XXYZ. Sustituye las XX por las primeras dos letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la inicial de tu apellido materno. 6. Sube tu actividad para su revisión y aguarda la retroalimentación de tu Facilitador(a), atiende sus comentarios y, de solicitarlo, vuelve a enviar tu actividad. *La actividad será evaluada de acuerdo con su respectiva rúbrica, así que es importante que la consultes.
2.3. Sistemas de Memoria Compartida Una vez que has identificado la taxonomía de Flynn, deberás tomar en cuenta, para este tema y para el siguiente únicamente la clasificación: MIMD (Múltiples Instrucciones, Múltiples Datos), la cual se atendió en el tema anterior. Dentro de los multiprocesadores MIMD, se distinguen dos tipos bien diferenciados, atendiendo a la organización de la memoria y al modo en que se interconectan los procesadores: Sistemas con Memoria Compartida (SMC) y Sistemas con Memoria Distribuida (SMD) (Hennessy, 1993). En este tema atenderás únicamente los sistemas o multiprocesadores con Memoria Compartida.
Esquema general de Memoria compartida
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
34
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.3.1. Introducción a los sistemas de Memoria Compartida En el diagrama de la taxonomía de Flynn, se muestra cómo los sistemas MIMD se pueden dividir en multiprocesadores y multicomputadoras. En esta apartado se tomarán en cuenta únicamente los multiprocesadores. Un multiprocesador es un componente que tiene varias CPU y un espacio de direcciones visible para todas las CPU. La máquina ejecuta una copia del sistema operativo, con un conjunto de tablas que incluyen aquéllas en las que se lleva la contabilidad de cuáles páginas de memoria están ocupadas y las que están libres. Cuando un proceso se bloquea, su CPU guarda su estado en las tablas del sistema operativo y busca en ellas otro proceso que pueda ejecutar. Es esta imagen de sistema único la que distingue un multiprocesador de una multicomputadora (Tanenbaum, 2000). En los sistemas de Memoria Compartida, la memoria se organiza en uno o varios módulos, compartidos por todos los procesadores a través de distintos tipos de interconexión (tratados más adelante), con un acceso constante. El acceso a los módulos por parte de los procesadores se realiza en paralelo, pero cada módulo solamente puede atender una petición en cada instante de tiempo (Gargollo, 2011). En este tipo de sistemas, donde el número de procesadores no es muy elevado, es posible utilizar una memoria centralizada que comparten todos los procesadores, a través de un bus compartido, como se ve en la siguiente figura:
Estructura básica de un sistema con Memoria Compartida.
Hennessy, 1993.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
35
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Haciendo uso de unas cachés eficientes, la memoria y el bus compartidos pueden satisfacer las necesidades de un número no muy grande de procesadores. El hecho de tener una memoria y un bus compartidos, a los que acceden de forma simétrica todos los procesadores, ha derivado en que a estos sistemas se les conozca como Sistemas de Multiprocesamiento Simétrico o SMP. En estos sistemas, la comunicación entre procesadores se realiza de forma implícita, a través de la memoria.
2.3.2. Redes de interconexión dinámicas Un sistema con varios procesadores precisa de medios de comunicación cuyas funciones pueden realizarse de dos formas: Por Memoria Compartida. Usado en los sistemas multiprocesadores. Por paso de mensajes. Usado en los sistemas multicomputadores.
En ambos casos será necesaria una vía de comunicación física, bien para unir físicamente la Memoria Compartida a todos los procesadores, o para poder enviar mensajes de un elemento de proceso a otro. Antes de empezar a definir las características de las redes de interconexión, diremos que se denomina nodo a cualquiera de los dispositivos que se quiera conectar a la red, tales como elementos de proceso, módulos de memoria, procesadores de entrada/salida, etc. Las redes de interconexión dinámicas son convenientes en los casos que se desee una red de propósito general, ya que son fácilmente reconfigurables. También, por eso, este tipo de redes facilita mucho la escalabilidad. En general, las redes dinámicas necesitan de elementos de conexión específicos, como árbitros de bus, conmutadores, etc. Las principales topologías de redes dinámicas son las siguientes: Buses Se puede definir un bus como un conjunto de líneas que permite comunicar, selectivamente, un cierto número de componentes o dispositivos de acuerdo con ciertas normas de conexión. En nuestro caso, los componentes que se conectan son procesadores, bancos de memoria, etc. El inconveniente de un bus es que sólo permite una transferencia al mismo tiempo, por ello, en caso de que haya peticiones simultáneas de comunicación, debe haber un árbitro de bus que vaya ordenando y dando paso, una a una, a las diferentes peticiones. Este árbitro será un circuito digital que lleve control de los momentos en que el bus está ocupado. Para recalcar esta forma de funcionamiento, a veces a los buses también se les denomina buses de tiempo compartido. Los buses son una forma barata de comunicación que tiene la ventaja de ser reconfigurable fácilmente. Sus inconvenientes son su bajo ancho de banda y su gran
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
36
Arquitectura de computadoras II Unidad 2. Multiprocesamiento latencia, debida a las esperas que tienen que efectuar las peticiones de comunicación. En la siguiente figura se muestra una estructura de bus. Existen variantes de esta estructura que, incrementando muy poco el coste, pueden mejorar notablemente las prestaciones: estas variantes se basan en disponer de una jerarquía de buses, de forma que en cada uno de ellos pueda establecerse una comunicación en su nivel de forma independiente y simultánea a los demás. Un ejemplo de este tipo de estructura se ilustra en la figura (b).
Estructura de bus único (a) y bus jerarquizado (b). Tomada de http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf
Redes de líneas cruzadas o matriz de conmutación ( crossbar )
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
37
Arquitectura de computadoras II Unidad 2. Multiprocesamiento En esta red, cada nodo está conectado con todos los demás, a través de un conmutador de líneas cruzadas ( crossbar switch) en la forma indicada en la siguiente figura.
Red de líneas cruzadas ( crossbar ). Tomado de
http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf
La red de líneas cruzadas puede interpretarse como una central telefónica que conecta los nodos en función de las necesidades de cada momento. Cada conmutador puede proporcionar una conexión dedicada entre cada par de elementos que se quiera conectar. La posición de cada conmutador se cambia dinámicamente, según las necesidades del programa. Este tipo de redes se ha empleado para conectar procesadores con módulos de memoria. También pueden utilizarse las redes de líneas cruzadas para conectar n procesadores con ellos mismos; de esta forma, si se efectúan todas las conexiones posibles, de todas las formas distintas, se podrían construir las n permutaciones de los n procesadores. Las principales ventajas de las redes de líneas cruzadas son que no son bloqueantes y son fácilmente escalables. Su mayor inconveniente es que precisan gran número de conmutadores, ya que son necesarios n2 conmutadores para una red cuadrada de lado.
Redes multietapa o MIN ( Multistage Interconnection Network )
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
38
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Una red de este tipo está formada por una seria de capas de módulos conmutadores PXQ. Estos conmutadores pueden cambiar dinámicamente de posición para establecer las conexiones deseadas en cada momento. Las diferentes clases de redes multietapa que se verán a continuación, difieren en el tipo de módulo conmutador empleado y en la forma de interconectarlos (interconexión entre etapas, ISC, Inter Stage Connection ). Un esquema genérico de una red multietapa se muestra en la siguiente ilustración. La ventaja de las redes multietapa sobre las de líneas cruzadas es el menor número de conmutadores, que es del orden de n log 2 n, aunque varía en función del tipo concreto de red, sin embargo, algunas de ellas son bloqueantes.
Red genérica multietapa. Tomado de http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf
En la siguiente tabla se comparan algunas características de diferentes tipos de redes de interconexión, evaluadas cualitativamente.
Costo Velocidad Complejidad Escalabilidad
Hipercubo
Bus
Medio Media Media Media
Bajo Baja Baja Alta
Líneas cruzadas Alto Alta Alta Media
Multietapa Medio Alta Media Media
Resumen comparativo de diferentes redes de interconexión. Tomada de http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
39
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Actividad 3. Ventajas y desventajas de los tipos de multiprocesamiento El propósito de esta actividad es que, a través de un mapa conceptual, distingas algunas de las ventajas y desventajas de los diferentes tipos de multiprocesamiento vistos hasta este momento. 1. Crea un documento en el software de presentaciones de tu elección. 2. Elabora un organizador gráfico, se sugiere un mapa conceptual en el que detalles y agrupes las ventajas y desventajas de los diferentes tipos de multiprocesamiento. 3. En el mismo documento, anexa un breve texto, en el que describas una explicación del porqué de esas ventajas y desventajas. 4. Guarda tu actividad con la nomenclatura KARQ2_ACT3_U2_XXYZ. Sustituye las XX por las primeras dos letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la inicial de tu apellido materno. 5. Sube tu archivo para su revisión y posterior retroalimentación; de ser requerido, vuélvelo a enviar. *Consulta los criterios de evaluación para cada actividad.
2.4. Sistemas de memoria distribuida Recuerda que dentro de los multiprocesadores MIMD se distinguen dos tipos bien diferenciados. En este apartado conocerás los Sistemas con Memoria Distribuida (SMD) (Hennessy, 1993).
Esquema general de memoria distribuida
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
40
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
2.4.1. Introducción a los sistemas de memoria distribuida Este tipo de sistemas distribuye la memoria, de tal manera cada procesador posee uno o varios módulos de memoria propia, y está conectado mediante una red de interconexión al resto de los procesadores. Así, cada procesador podrá acceder tanto a su memoria local, como a la memoria remota de cualquiera de los otros. Este tipo de arquitectura se denomina NUMA (Non-Uniform Memory Access ). Para poder soportar un mayor número de procesadores, es imprescindible distribuir la memoria entre ellos, en lugar de utilizar una memoria centralizada. De otra forma, ésta no podría soportar el ancho de banda necesario para satisfacer las demandas de todos los procesadores. Para la comunicación entre procesadores es indispensable algún tipo de red de interconexión, tal como se muestra en la siguiente figura (Huerta, 2009).
Estructura b ásica de u n s istema con memo ria distribuida.
Hennessy, 1993.
Un ejemplo claro de este tipo de sistemas son los clústers, los cuales tienen como ventaja la rapidez para realizar procesos, un alto rendimiento, así como un buen precio, ya que son económicos de implementar. Desafortunadamente, en la interconexión puede haber pérdida de mensajes o saturación; éstas y otras características se explicarán con más detalle en el siguiente apartado.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
41
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 2.4.2. Clúster En la actualidad, los clústers han tenido mucho auge en centros de investigación y en las empresas, debido a que ciertos problemas que se desean resolver rebasan la capacidad de cómputo de una computadora personal. La solución más obvia consistiría en comprar una supercomputadora, pero existe un inconveniente al respecto: una supercomputadora cuesta, en ocasiones, varios millones de dólares, cantidad que va más allá de los presupuestos de inversión, tanto de las empresas como de los centros de investigación. Pero la necesidad de solucionar los problemas con los recursos que se cuentan, ha provocado que personal académico de diversas universidades y centros de investigación se den a la tarea de construir sus propias supercomputadoras, conectando computadoras personales y desarrollando software. Beowulf el primer clúster
La imagen da un ejemplo del primer clúster (llamado Beowulf ) que se construyó en 1994, en el Centro de Vuelos Espaciales Goddard de la NASA, con la finalidad de resolver problemas que aparecen en las ciencias de la Tierra y el espacio.
NASA 128-processor Beowulf clúster. Tomada de
http://www.cse.mtu.edu/cseri.html
Un clúster es la interconexión de dos o más computadoras independientes a través de una red, usadas como un recurso unificado de cómputo con el fin de aumentar el rendimiento en la ejecución de tareas (Torralba, 2002). Los clúster constituyen la alternativa a los multiprocesadores simétricos (SMP) para disponer de prestaciones y disponibilidad elevadas, y son particularmente atractivos en aplicaciones propias de un servidor.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
42
Arquitectura de computadoras II Unidad 2. Multiprocesamiento La arquitectura del clúster es uno de los diversos caminos para explotar el procesamiento en paralelo. Existen diferentes métodos importantes que se utilizan para realizar cómputo paralelo, entre los cuales se encuentran: SMP, NUMA, Procesamiento Masivamente Paralelo (MPP), entre otros. Los sistemas Tolerantes a Fallas (TF) explotan el procesamiento en paralelo para conseguir una buena integridad entre los diferentes componentes que forman el clúster. Cada diseño de estos clústers tiene como fin mejorar el desempeño, la integridad de los sistemas, o ambas cosas. En la siguiente ilustración se resumen las relaciones de las diferentes alternativas de diseño en un clúster: desempeño, integridad y escalabilidad.
Escalabilidad, desempeño contra disponibilidad. Tomada de Torralba, 2002.
Ventajas de los clústers
Cada una de las máquinas en un clúster puede ser un sistema completo para usarlo en un amplio rango de aplicaciones. El hardware de interconexión de red ha experimentado un constante decremento de precio, considerando que además se pueden logar ahorros adicionales empleando un monitor, un teclado y un ratón. Los clústers de computadoras pueden crecer hasta formar sistemas verdaderamente grandes, es decir, desde dos hasta varios cientos, lo cual no es posible con los sistemas SMP. Se puede reemplazar fácilmente una computadora del clúster que no esté funcionando correctamente. Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
43
Arquitectura de computadoras II Unidad 2. Multiprocesamiento
Si algún componente falla, el o los procesos pueden seguir ejecutándose en los demás nodos. El clúster se pude interconectar a una red de área local, permitiendo dar servicio a múltiples usuarios internos y externos a través de Internet.
Desventajas de los clústers
Si falla el nodo maestro, se pierde la ejecución de toda la tarea. Puede haber inconsistencia en los datos, provocada por alguna falla en el software o en el hardware
En la siguiente ilustración se muestra una arquitectura típica de clúster. Los equipos se conectan a través de una red de área local (LAN) de alta velocidad o mediante un conmutador. Cada equipo puede trabajar de forma independiente. Además, en cada uno se instala una capa software intermedia (middleware) que permite el funcionamiento de todos los equipos como un único clúster. El middleware del clúster proporciona al usuario una imagen unificada, conocida como imagen de sistema único ( single-system image). El middleware también es responsable de proporcionar alta disponibilidad, distribuyendo la carga y respondiendo a los fallos de los componentes.
Arquitectura de equipo de clúster. Stallings, 2007.
Actividad 4. Aplicación de los multiprocesos El propósito de esta actividad es que menciones el funcionamiento de los diferentes tipos de multiprocesamiento; así como sus ventajas y desventajas, distinguiendo bajo qué Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
44
Arquitectura de computadoras II Unidad 2. Multiprocesamiento condiciones se puede usar, de acuerdo con el ejemplo especificado por tu Facilitador(a). 1. Ingresa al foro de la actividad y participa sobre la pregunta o situación de apertura . 2. Sustenta tus puntos de vista y retroalimenta a mínimo dos de tus compañeros(as). 3. Anota lo que consideres importante de cada tipo y considera la conclusión final de tu Facilitador(a).
Autoevaluación Para reforzar los conocimientos relacionados con los temas que se abordaron en esta unidad, es necesario que resuelvas la autoevaluación. Ingresa al Aula para realizar tu actividad. Si tienes alguna duda consúltala con tu Facilitador(a) para disiparla lo antes posible.
Evidencia de aprendizaje. Multiprocesamiento Esta evidencia consiste en la elaboración de un diagrama de Venn que permita separar las diferentes características del procesamiento simétrico, asimétrico y en paralelo, así como los sistemas de memoria que se usan y si existe una relación con algún tipo de multiprocesamiento. Con base en lo anterior, realiza lo siguiente: 1. Define el título de tu trabajo. 2. En un documento de texto, en tus propias palabras, elabora una pequeña introducción de lo que vas a tratar en tu diagrama, mínimo media cuartilla. 3. Desarrolla el diagrama de Venn con sus respectivos conjuntos. 4. Indica los sistemas de memoria usados. 5. Indica la relación con cada tipo de multiprocesamiento. 6. Escribe la información que explique la relación del diagrama, así como la clasificación de los conjuntos.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
45
Arquitectura de computadoras II Unidad 2. Multiprocesamiento 7. Sustenta tu trabajo con por lo menos tres fuentes bibliográficas o electrónicas reconocidas, no debes basarte en recursos como Wikipedia o similares. También es importante reconocer y respetar los derechos de autor, dando los correspondientes créditos. 8. Genera una conclusión de mínimo media cuartilla, aterrizando todas las ideas plasmadas durante el desarrollo de tu evidencia. 9. Guarda tu trabajo en un archivo llamado KARQ2_U2_EA_XXYZ. Sustituye las XX por las primeras dos letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la inicial de tu apellido materno. 10. Envía tu actividad al Portafolio de evidencias y aguarda la retroalimentación de tu Facilitador(a), atiende sus comentarios y, de solicitarlo, envía una segunda versión de tu evidencia. *La evidencia será evaluada de acuerdo con su respectiva rúbrica, así que es importante que la consultes.
Autorreflexiones Como parte de cada unidad, es importante que ingreses al foro Preguntas de autorreflexión y leas los cuestionamientos que formuló tu Facilitador(a), ya que a partir de ellos debes elaborar tu autorreflexión y enviarla mediante la herramienta Autorreflexiones. No olvides que también se toman en cuenta para la calificación final.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
46
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Cierre de la unidad
Organización de procesos
Con este esquema se puede concluir y dar por terminada la segunda unidad; su finalidad es que puedas visualizar la forma en que están distribuidos los diferentes tipos de multiprocesamientos. También se explicaron, de manera muy general, los diferentes tipos de procesamientos básicos, esto te ayudará a analizar de qué forma se ejecutan las instrucciones dentro de los microprocesadores y cómo es que se han ido evolucionando. Posteriormente se explica la taxonomía de Flynn, que determina cómo se clasifican los equipos de acuerdo con sus instrucciones y datos, de esta forma, se centra el enfoque en la arquitectura MIMD para hacer notar que existen dos clasificaciones: los sistemas de Memoria Compartida y Distribuida. En la sección Para saber más , encontrarás algunos videos y artículos publicados en diferentes revistas de divulgación científica, con lo que se reforzarán algunos de los temas vistos, como los tipos de procesamiento y los sistemas de memoria, así como sus ventajas y desventajas, entre otros datos que pueden resultar de tu interés.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
47
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Para saber más Icaza, Ó., Todo sobre multiprocesamiento simétrico [video]. Recuperado de https://www.youtube.com/watch?v=_TkwTgsgZs0 Con este video reforzarás aspectos sobre el multiprocesamiento simétrico, así como algunas definiciones relacionadas con el tema de una forma interactiva, en éste encontrarás algunas metáforas y analogías con la vida real de cómo se puede aplicar el multiprocesamiento simétrico.
Si deseas conocer un poco más acerca de la Taxonomía de Flynn consulta los siguientes vínculos en los cuales encontrarás una descripción referente a la clasificación que hace con el uso de instrucciones y de datos, en el video se refuerzan los conocimientos adquiridos y en el artículo se muestra cómo se implementa un microprocesador en específico para procesamiento de imágenes: (s. a.). Taxonomía de Flynn . Recuperado de Ordaz, G. et ál. Implementación de un procesador elemental en un FPGA [documento pdf]. Recuperado de https://www.youtube.com/watch?v=53lw9N5pEJY http://www.uaz.edu.mx/eniinvie/eninvie2010/eninvielibro/instrumentacion/inst5.pdf
Fuentes de consulta Fuentes básicas
Hennessy, J. L. (1993). Arquitectura de computadores, un enfoque cuantitativo. México: McGraw Hill. Stallings, W. (2007). Organización y arquitectura de computadores , 7a. ed. México: Prentice Hall. Tanenbaum, A. S. (2000). Organización de computadoras, un enfoque estructurado, 7a. ed. México: Prentice Hall. Vázquez, G. J. (2012). Arquitectura de computadoras I . México: Red Tercer Milenio.
Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
48
Arquitectura de computadoras II Unidad 2. Multiprocesamiento Fuentes complementarias
Culler, D. (1997). Parallel Computer architecture . San Francisco: Morgan Kaufmann. Flynn, M.J. (1972). Some computer organizations and their effectiveness . Baltimore: IEEE Transactions on Computers. Gottlieb, G. (1989). Highly Parallel Computing . Redwood, USA: BenjaminCummings Publising. Grama, A. (2003). Introduction to Parallel Computing , 2a. ed. Nueva York: Addison Wesley. Hwang, K. (1993). Advanced Computer Architecture . India: McGraw-Hill. Jouppi N. (1989). The Nonuniform Distribution of Instruction-Level and Machine Parallelism and Its Effect on Performance . IEEE Transactions on Computers, vol. 38 , 1645-1658. Jouppi. N. y Wall. D. (1989 ). Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines . Procedimientos de la tercera conferencia internacional sobre apoyo arquitectónico para lenguajes de programación y sistemas operativos. Abril Palo Alto, California: Digital Western Research Laboratory. Disponible en: http://www.hpl.hp.com/techreports/Compaq-DEC/WRL89-7.pdf Maccabe, B, A. (1996). Architecture, organization, and programming . Boston: IRWIN. Stone, H. S. (1990). High-Performance Computer Architecture. 3a. ed. Massachusett: Addison-Wesley.
Fuentes electrónicas
Alegsa (2012). Diccionario de Informática . Recuperado de http://www.alegsa.com.ar/Dic/kernel.php Computational Science and Engineering (2007). Computational Science & Engineering Research Institute. Michigan Technological University. Recuperado de
http://www.cse.mtu.edu/cseri.html Delgado, A. (2013). Nuevos procesadores para móviles en 2013 . Eroski Consumer. Recuperado de http://www.consumer.es/web/es/tecnologia/hardware/2013/06/03/216846.php De la Torre, M. (2012). Todo sobre el multiprocesamiento simétrico [video]. Recuperado de https://www.youtube.com/watch?v=_TkwTgsgZs0 EcuRed. (2013). Enciclopedia Colaborativa. Recuperado de http://www.ecured.cu/index.php/Paralelismo_%28_inform%C3%A1tica%29 Ciencias Exactas Ingeniería y Tecnología |Ingeniería en Telemática
49