Bloque II. Tema 1. Tecnologías actuales de ordenadores: de los dispositivos PDA a los superordenadores y arquitecturas escalables (grid, cluster, MPP, SMP, arquitecturas multinúcleo). Base tecnológica. Componentes, funcionalidades y capacidades.

Índice de contenido

Bloque II. Tema 1. 1. Tecnologías actuales de ordenadores: de los dispositivos PDA a los superordenadores y arquitecturas escalables (grid, cluster, MPP, SMP, arquitecturas multinúcleo). Base tecnológica. Componentes, funcionalidades y capacidades.        1

Arquitecturas escalables        1

Tecnologías de implementación de motores de búsqueda        1

Apache Lucene        2

ElasticSearch        2

Arquitectura de procesadores        2

Sandy Bridge        2

Almacenamiento en red        2

Tipos de procesadores        3

CISC y RISC        3

SIMD, SISD, MISD, MIMD        3

MMX [1996]        4

3dNow! [ - 2010]        4

Intel SSE4 [2006]        4

AVX [2008]        4

CVT16 [2009]        4

XOP [2009]        5

FMA [2013?]        5

MPP        5

MPI        5

SMP        5

Grid        5

Clúster        5

Multi-núcleo        6

Ley de Amdahl        6

 

Arquitecturas escalables

Tecnologías de implementación de motores de búsqueda

Un repaso de productos listos para ser instalados y que monten un servicio de indexación y búsqueda. Esto también está relacionado con “la nube”, puedes querer buscar a la vez en muchos servidores.

Apache Lucene

Software de búsqueda open-source, que incluye:

ElasticSearch

Un motor de búsqueda de código abierto basado en Lucene, con API REST. Si tenemos un sitio web y queremos que se busque en él. Usa JSON sobre HTTP, puede escalar desde un servidor hasta miles.

 

Arquitectura de procesadores

Sandy Bridge

Artículo Linux Magazine (Revistas/Linux Magazine/71 Movilidad/Sandy Bridge.pdf)

Almacenamiento en red

Protocolos de almacenmiento en red:

Tipos de almacenamiento en red:

Tipos de procesadores

CISC y RISC

CISC:

RISC:

SIMD, SISD, MISD, MIMD

Estas arquitecturas están definidas en la taxonomía de Flynn, una clasificación de arquitectura de computadores.

 

Single Instruction

Multiple Instruction

Single Data (Stream)

SISD

MISD

Multiple Data (Stream)

SIMD

MIMD

 

La clasificación está basada en el número de instrucciones concurrentes y los flujos de datos disponibles en la arquitectura.

En SISD no se explota el paralelismo a nivel de instrucciones ni de datos, el típico ejemplo es un PC de un solo núcleo. La unidad de control toma instrucciones de un flujo de instrucciones desde la memoria. La UC genera señales de control apropiadas para operar sobre flujos de datos sencillos, es decir, una operación al mismo tiempo.

En SIMD se explota el paralelismo a nivel de flujos de datos. Se van tomando instrucciones de un solo flujo de instrucciones, que van operando simultáneamente sobre diversos flujos de datos. Por ejemplo esto ocurre en una GPU. Se diferencia entre:

También se les conoce como procesadores en array o matriciales o procesadores vectoriales.

En MISD múltiples flujos de instrucciones operan sobre un solo flujo de datos. Es la estructura menos común que normalmente se dirige a una arquitectura tolerante a fallos, como el control de vuelo del Space Shuttle.

En MIMD hay múltiples procesadores autónomos ejecutando instrucciones diferentes en múltiples flujos de datos. Normalmente se reconoce a los sistemas distribuidos como arquitecturas MIMD, ya sea explotando un solo espacio de memoria compartido o un espacio de memoria distribuido.

MMX [1996]

Multi Media eXtension. Juego de instrucciones SIMD de Intel. Define 8 registros MM0 a MM7 de 64 bit. El uso principal del juego de instrucciones es el aprovechamiento de los packed datatypes que significa usar un registro completo para un entero de 64 bit, dos enteros de 32 bit, cuatro de 16 bit u 8 de 8 bit.

3dNow! [ - 2010]

Juego de instrucciones SIMD desarrollado por AMD para procesadores x86, permitiendo ejecutar procesamiento simple de vectores. El primero en implementarlo fue el K6-2. El 2010 significó el fin de ciclo, donde se eliminarán todas menos dos instrucciones. Por ejemplo PI2FD es conversión de enteros de 32 bit a punto flotante.

Intel SSE4 [2006]

Viene de Streaming SIMD Extension 4 / AVX. Es un conjunto de instrucciones no necesariamente específico de multimedia para hacer operaciones SIMD. Por ejemplo un comparador de igualdad de cuádruple palabra, en una sola instrucción, sería PCMPEQQ.

AVX [2008]

Advanced Vector eXtensions. Para procesadores Intel y AMD. Proporciona nueva funcionalidad, nuevas instrucciones y nuevos esquemas de codificación. Propone registros de 256 bit y se experan extensiones de registros de hasta 1024 bit. Introduce también instrucciones de 3 operandos. Se usa para cálculos intensivos en punto flotante como multimedia, ciencia y finanzas.

CVT16 [2009]

Extensión de las instrucciones SSE.

XOP [2009]

Extensión de las instrucciones SSE.

FMA [2013?]

Útiles para procesamiento digital de la señal, operaciones multiply-accumulate que realiza el producto de dos números y acumula el resultado en un acumulador. Intel lo planea en 2014 y AMD en 2011.

 

MPP

Para Massive Parallel Processing. Un computador masivamente paralelo es un sistema de:

que consiste en un muchos nodos individuales, cada uno de los cuales es esencialmente un ordenador independiente en sí mismo, y consiste en al menos un procesador, su propia memoria y un enlace a la red que lo une con el resto de nodos. El término masivo supone cientos o miles de nodos. Los nodos se comunican por paso de mensajes, usando estándares como MPI.

MPI

Message Passing Interface. Una API que permite a procesos comunicarse con otros enviando y recibiendo mensajes. Es un estándar de facto para programas paralelos ejecutandose en clusters de ordenadores y supercomputadores.

SMP

Symmetric Multiprocessing. Una arquitectura multiprocesador donde dos o más procesadores idénticos se conectan a una:

Y controlado por una sola instancia del sistema operativo. Está claro que está hablando de las máquinas PC de hoy día, donde cada chip es de doble o cuádruple núcleo, hay una memoria principal y hay un sistema operativo en ejecución.

Grid

Puede ser visto como un sistema distribuido. Lo que lo distingue de un clúster es que el grid tiende a estar más débilmente acoplado, heterogéneo y geográficamente disperso. Aunque se puede dedicar el grid a una aplicación específica, es más común que un solo grid se use para una variedad de propósitos diferentes. Normalmente los recursos no se administran de forma centralizada, se usan estándares abiertos y se obtiene calidad de servicio.

Clúster

Un grupo de ordenadores enlazados, trabajando juntos, colaborando estrechamente, formando uno solo en muchos aspectos. Normalmente están conectados por redes de área local rápidas. El servicio que se suele dar es mejorar la disponibilidad y el rendimiento. Distinguimos estas categorías:

Multi-núcleo

Los núcleos pueden o no compartir caché y pueden implementar métodos de comunicación:

Algunas topologías son:

Ley de Amdahl

Encontrar el máximo nivel de mejora para un sistema completo cuando solo una parte es mejorada. Se usa normalmente en computación paralela para predecir la mejora máxima teórica utilizando múltiples procesadores o núcleos.

Por ejemplo si un programa necesita 20 horas en un solo núcleo y una porción particular de 1 hora no puede ser paralelizada, pero las 19 horas restantes sí pueden serlo, entonces independientemente de cuantos procesadores utilicemos el mínimo tiempo de ejecución posible no puede ser menor a esa hora.