Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen
Resumen
Introducción
Espectro de diseño
Tanto los CPUs multihilos, como los multinúcleo, explotan concurrencia ejecutando
múltiples hilos, aunque sus objetivos de diseño son distintos.
Los CPUs multihilos soportan hilos ejecutados concurrentemente, pero lo hacen a
nivel de instrucción, apuntando a una mejor utilización de la CPU, planteando instrucciones
desde múltiples hilos.
Los CPUs multinúcleo alcanzan la concurrencia de hilos a un nivel más alto
concentrándose menos en la utilización por núcleo y apuntando a la escalabilidad vía
replicación de núcleos.
Núcleos Multihilos
CPUs Multinucleo
Los núcleos Multihilos tienen una limitada escalabilidad, atado por el punto de
saturación de las unidades de ejecución y el costo de hilos adicionales. En cambio los CPU’s
multinúcleos prometen mas potencia por escalabilidad. Los primeros chips multicore fueron
construidos como una simple unión de diseños de CPU’s de un solo núcleo ya existentes.
Estos chips retuvieron mucha de la arquitectura de su precedente, replicando solo el control
y unidades de ejecución y compartiendo las unidades faltando por chip: cache, controlador
de memoria, unidades de procesamiento secundarias como unidades de punto flotante
(FPUS, componentes de enfriamiento y pines de salida del micro.
Sin embargo, tienen una desventaja en relación con el intercambio de contención de
los recursos compartidos.
Las tendencias de desarrollo indican un movimiento hacia la replicacion adicional
sobre los componentes de chips, como los controladores de memoria y cache, que pueden
ser privadas o compartidas.
Tolerancia a fallas
Fallas:
Ruido Eléctrico.
Defectos menores permanentes en el silicio (Fallas en componentes
individuales) que se expanden provocando la falla del chip entero.
Soluciones:
Particionamiento de unidades replicadas y separables.
Múltiples interconexiones dentro del chip.
Controladores de memoria.
Múltiples bancos de cache.
Esto lleva a soportar diferentes grados de aislación contra compartición y separación
de componentes que funcionan de los que no funcionan.
Estas soluciones incrementan mucho la tolerancia a fallos.
Interconexiones
Diseños especializados
Conclusiones:
Las aplicaciones que pueden explotar mucho del pico teórico de desempeño
(intensivas en punto flotante, alto paralelismo de instrucciones en aplicaciones
numéricas) pueden tener mejores resultados si se usan núcleos más
complejos.
Una mejora para el desempeño por hilo seria colocar más recursos del chip
dinámicamente, como ejecución especulativa.
Esto beneficia aplicaciones con mucha dependencia de datos y errores de cache.
Una implementación ya aplicada en algunos CPUs multihilos coloca recursos
particionados a un hilo si se corre en modo “Única Tarea”.
La investigación indica que los procesadores que poseen muchos núcleos simples y
unos pocos núcleos de alto rendimiento pueden proveer el mayor poder de procesamiento
para un dado espacio de chip y presupuesto energético. Pero esto tiene como desventaja
que dichos procesadores no se obtienen comercialmente, y además, son difíciles de diseñar
y programar.
En el futuro, la tendencia dice que habrá CPUS de cada vez más hilos y más núcleos.
Sin embargo, la concurrencia de hardware solo puede ser explotada con múltiples
programas seriales o con aplicaciones en paralelos.
Hay limites para mejorar el desempeño por hilo ya que las instrucciones seriales
deben ejecutarse una tras otra, por lo tanto, el código serial debe ser cuidadosamente
optimizado.
La mayor parte de los softwares no esta preparado para la concurrencia. Las
posibilidades para extraer paralelismo automáticamente están limitadas y el paralelismo
debe ser expresado explícitamente.
Herb Sutter considera que cambiar hacia programación paralela sea la próxima
revolución después de la introducción de programación orientada a objetos.
Escribiendo correcta y eficientemente programas paralelos es un gran desafío que
requiere mejores herramientas y modelos de programación más abstractos para hacer la
programación de hilos más segura y conveniente.
Incluso si la información puede ser compartida, muchos programadores usan
exclusivamente procesos sin que importen los beneficios de usar softwares multithreaded en
memoria compartida de nodos simétricos multiprocesales.
Los clusters HPC con nodos de muchos núcleos pueden requerir el uso de
programación de hilos/modelos de procesos híbridos para mayor eficiencia y escalabilidad.
Las aplicaciones HPC van a necesitar mostrar un grado mayor de paralelismo que antes
para explotar la concurrencia de hardware ofrecidos por los CPUS multinucleos.
Un factor limitante es que el desempeño de núcleos adicionales es menor que el de
CPUS adicionales, excepto cuando los hilos comparten información.
Sobre los sistemas operativos: los organizadores (schedulers) de los CPUS
tradicionales necesitaron modificaciones para acomodar la heterogeneidad y diferencias de
desempeño en la jerarquía de CPUS, núcleos e hilos de hardware.
Schedulin con el objetivo de minimizar la contención de recursos es importante si la
maquina esta con carga total.
Según la ley de Moore, los diseños de chips van a crecer a grandes números de
núcleos e hilos de hardware. Sin embargo las comunicaciones fuera del chip y los límites de
pines ponen restricciones significantes en la escalabilidad y programabilidad de los chips, ya
que impactan en la tasa de transferencia de datos desde y hacia los núcleos.
Para computación común se opta por diseños híbridos. Un bajo nº de hilos sobre un
chip puede añadirse por relativamente poca circuitería adicional y pueden incrementar
significativamente el Througput. Así el espacio del chip es generalmente mejor explotado
para más núcleos, cache u otros componentes.
Con respecto a los límites de software, pocas aplicaciones pueden usar muy alta
concurrencia para incrementos en el performance.
El éxito de diseños de multinucleos depende altamente de que existan las
herramientas de programación correcta, librerías y modelos.
Los cpus actuales en el mercado, ofrecen diferentes opciones de acuerdo a su diseño
y uso del espacio del chip.
Consideraciones de diseño NO solo incluyen el número de núcleos e hilos sino
también la complejidad de los núcleos, interconexiones, tamaños de cache y el grado en que
los componentes se comparten.
Ya que las decisiones de diseño incluyen cambios (algo por algo, no puedo mejorar
algo sin descuidar otra cosa) son necesarios diseños que se concentren en la relación
funcional entre las partes y el todo, llevados por las aplicaciones de destino y criterios
adicionales de optimización como la consumición de energía, la disipación de calor,
tolerancia a falla y costo