Los sistemas informáticos paralelos son sistemas informáticos físicos, así como sistemas de software que implementan de una forma u otra el procesamiento de datos en paralelo en muchos nodos informáticos. [una]
Por ejemplo, para ordenar rápidamente una matriz en una máquina con dos procesadores, puede dividir la matriz por la mitad y ordenar cada mitad en un procesador independiente. Ordenar cada mitad puede llevar una cantidad de tiempo diferente, por lo que es necesaria la sincronización .
La idea de la paralelización de los cálculos se basa en el hecho de que la mayoría de las tareas se pueden dividir en un conjunto de tareas más pequeñas que se pueden resolver simultáneamente. Por lo general, la computación paralela requiere coordinación de acciones. La computación paralela se presenta en varias formas: paralelismo a nivel de bits, paralelismo a nivel de instrucciones, paralelismo de datos y paralelismo de tareas. La computación paralela se ha utilizado durante muchos años principalmente en computación de alto rendimiento, pero recientemente ha habido un aumento en el interés debido a la existencia de restricciones físicas en el aumento de la frecuencia de reloj de los procesadores. La computación paralela se ha convertido en el paradigma dominante en la arquitectura informática , principalmente en forma de procesadores multinúcleo . [2]
Escribir programas para sistemas paralelos es más difícil que para sistemas secuenciales [3] , ya que la contención de recursos representa una nueva clase de posibles errores de software ( bugs ), entre los cuales la condición de carrera es la más común. La comunicación y sincronización entre procesos representa una gran barrera para obtener un alto rendimiento en sistemas paralelos. En los últimos años, también se ha comenzado a considerar el tema del consumo de energía por parte de las computadoras paralelas. [4] La naturaleza del aumento en la velocidad del programa como resultado de la paralelización se explica por las leyes de Amdahl y Gustavson .
Esta forma de paralelismo se basa en aumentar el tamaño de una palabra de máquina . Aumentar el tamaño de la palabra de la máquina reduce el número de operaciones requeridas por el procesador para operar en variables cuyo tamaño es mayor que el tamaño de la palabra de la máquina. Por ejemplo: en un procesador de 8 bits, debe agregar dos números enteros de 16 bits. Para hacer esto, primero debe sumar los 8 bits inferiores de los números, luego sumar los 8 bits superiores y sumar el valor de la bandera de acarreo al resultado de su suma . Un total de 3 instrucciones. Con un procesador de 16 bits, puede realizar esta operación con una sola instrucción.
Históricamente, los microprocesadores de 4 bits fueron reemplazados por los de 8 bits, luego aparecieron los de 16 y 32 bits. Los procesadores de 32 bits han sido durante mucho tiempo el estándar en la informática cotidiana. Con la llegada de la tecnología x86-64 , se empezaron a utilizar procesadores de 64 bits para estos fines.
Un programa de computadora es esencialmente un flujo de instrucciones ejecutadas por un procesador. Pero puedes cambiar el orden de estas instrucciones, distribuirlas en grupos que se ejecutarán en paralelo, sin cambiar el resultado de todo el programa. Esta técnica se conoce como paralelismo a nivel de instrucción. Los avances en el desarrollo del paralelismo a nivel de instrucción en la arquitectura de computadoras ocurrieron desde mediados de la década de 1980 hasta mediados de la década de 1990.
Los procesadores modernos tienen una canalización de instrucciones de varias etapas . Cada etapa de la canalización corresponde a una determinada acción realizada por el procesador en esta instrucción en esta etapa. Un procesador con N etapas de canalización puede tener simultáneamente hasta N instrucciones diferentes en diferentes niveles de integridad. Un ejemplo clásico de un procesador segmentado es un procesador RISC con 5 etapas: obtener una instrucción de la memoria (IF), decodificar una instrucción (ID), ejecutar una instrucción (EX), acceder a la memoria (MEM), escribir el resultado en registros (WB). ) . El procesador Pentium 4 tiene un pipeline de 31 etapas [5] .
Algunos procesadores, además de utilizar canalizaciones, tienen la capacidad de ejecutar varias instrucciones al mismo tiempo, lo que proporciona un paralelismo adicional a nivel de instrucción. Es posible implementar este método utilizando superscalar , cuando las instrucciones se pueden agrupar para la ejecución en paralelo (si no tienen dependencias de datos (dependencias de datos)). También son posibles las implementaciones que usan paralelismo explícito a nivel de instrucción: VLIW y EPIC .
La idea principal del enfoque basado en el paralelismo de datos es que una operación se realiza inmediatamente en todos los elementos de la matriz de datos. Los diferentes fragmentos de una matriz de este tipo se procesan en un procesador vectorial o en diferentes procesadores de una máquina paralela. El programa es responsable de la distribución de datos entre los procesadores. La vectorización o paralelización en este caso se realiza con mayor frecuencia en la etapa de compilación: la traducción del código fuente del programa en instrucciones de máquina. El papel del programador en este caso generalmente se reduce a establecer la configuración de optimización paralela o vectorial del compilador , las directivas de compilación paralela y el uso de lenguajes especializados para la computación paralela.
Un estilo de programación basado en el paralelismo de tareas implica que una tarea computacional se divide en varias subtareas relativamente independientes y cada procesador se carga con su propia subtarea.
Un sistema operativo distribuido, al asignar trabajo de forma dinámica y automática a diferentes máquinas en el sistema para su procesamiento, obliga a un conjunto de máquinas en red a procesar información en paralelo. El usuario de un sistema operativo distribuido, por lo general, no tiene conocimiento de la máquina en la que se realiza su trabajo. [6]
Un sistema operativo distribuido existe como un único sistema operativo en un sistema informático. Cada computadora en una red que ejecuta un sistema operativo distribuido realiza parte de las funciones de este sistema operativo global. Un sistema operativo distribuido une todas las computadoras en una red en el sentido de que trabajan en estrecha cooperación entre sí para utilizar de manera eficiente todos los recursos de una red informática.
El trabajo en dirección a la creación de sistemas informáticos paralelos en los EE. UU. y la URSS ha sido intensivo desde la década de 1960 . El desarrollo de la tecnología de procesamiento de datos paralelos y la creación de sistemas informáticos electrónicos paralelos en los Estados Unidos por orden de la Agencia de Proyectos de Investigación Avanzada de Defensa de los Estados Unidos fue llevado a cabo por departamentos de investigación de empresas y universidades: [7]
El trabajo fue supervisado por la Oficina de Computación y Procesamiento de Información de ARPA en el Pentágono , Virginia , y el Centro de Investigación de la Fuerza Aérea de EE. UU. en Roma , Nueva York .
En la Unión Soviética , un trabajo de naturaleza similar fue llevado a cabo por instituciones dentro del Comité Estatal de Electrónica de Radio (luego transformado en el Ministerio de Industria de Radio ), el Ministerio de Defensa y la Academia de Ciencias de la URSS : [8]
A principios de la década de 1970, en el Laboratorio de Inteligencia Artificial del MIT, Marvin Minsky y Seymour Papert comenzaron a desarrollar una teoría que llamaron la " Sociedad de la Mente " que veía el cerebro biológico como una máquina informática masivamente paralela . En 1986, Minsky publicó el popular libro The Society of Mind, en el que argumenta que "la mente del cerebro está formada por muchos pequeños agentes que no tienen mente propia". [9] La teoría ha intentado explicar cómo lo que llamamos inteligencia puede ser el producto de la interacción de partes simples llamadas agentes, que en sí mismas no son inteligentes. Minsky afirmó que la mayor fuente de ideas sobre la teoría de la "sociedad de la mente" fue su trabajo al tratar de construir una máquina que ensamblaría bloques de bebés usando un brazo robótico, una cámara de video y una computadora. [10] El libro de teoría de la Sociedad de la Mente fue escrito para el público en general, a diferencia de la mayoría de los trabajos publicados previamente de Minsky.
Modelos similares (que también consideran el cerebro biológico como una máquina de computación masivamente paralela, es decir, consideran que el cerebro consiste en muchos agentes independientes o semiindependientes) también describen:
diccionarios y enciclopedias | |
---|---|
En catálogos bibliográficos |