TAREA ACADEMICA

67
“Año de la Promoción de la Industria Responsable y del Compromiso Climático” UNIVERSIDAD INCA GARCILASO DE LA VEGA FACULTAD DE INGENIERÍA DE SISTEMAS, CÓMPUTO Y TELECOMUNICACIONES ARQUITECTURA DE PROCESADORES MULTINÚCLEO PRESENTADO POR: 0

description

tares

Transcript of TAREA ACADEMICA

Page 1: TAREA ACADEMICA

“Año de la Promoción de la Industria Responsable y del Compromiso Climático”

UNIVERSIDAD INCA GARCILASO DE LA VEGA

FACULTAD DE INGENIERÍA DE SISTEMAS, CÓMPUTO Y TELECOMUNICACIONES

ARQUITECTURA DE PROCESADORES MULTINÚCLEO

PRESENTADO POR:

YANGALES TRUJILLO, YOHAN ANDRÉ

106837630

0

Page 2: TAREA ACADEMICA

Tarea académica Microprocesadores

INDICEINTRODUCCION............................................................................................................................2

BREVE HISTORIA...........................................................................................................................3

ARQUITECTURAS SIMD, MIMD, SMT..........................................................................................15

PROGRAMACIÓN MULTINUCLEO...............................................................................................17

APLICACIONES............................................................................................................................28

ORGANIZADOR TEMATICO.........................................................................................................32

CONCLUSIONES..........................................................................................................................33

BIBLIOGRAFIA.............................................................................................................................34

1

Page 3: TAREA ACADEMICA

Tarea académica Microprocesadores

INTRODUCCION

En este presente trabajo de investigación de microprocesadores trata el tema de los

procesadores multinúcleo, dando un panorama de porque se decidió fabricarlos, historia,

como trabajan. Además se muestra algunos procesadores multinúcleos actuales, de

Intel, de AMD.

Eran muy lentos inicialmente los microprocesadores y con poco poder de cómputo, se

mejoró su arquitectura a través de los años, aumentando la frecuencia de reloj, el bus

tanto de datos como de direcciones, entre otras. El poder de cómputo de estos

microprocesadores es realmente sorprendente, sin embargo aun sigue siendo

insuficiente para efectos de investigación, como el modelado de clima, cómputo

financiero, entre otras.

Los fabricantes de microprocesadores pasaron a la era de los microprocesadores

multinúcleo para aumentar el poder de cómputo de sus microprocesadores,

abandonando así la era en que se mejoraban los procesadores incrementando la

frecuencia del reloj.

Las arquitecturas multinúcleo como lo es el procesador CELL de banda ancha, Intel

Core 2 Quad, Intel Core i7, AMD Opteron y Nvidia Tesla C1060, son procesadores con

un gran poder de cómputo, aunque algunos con precio muy elevado. Estas arquitecturas

no son aprovechadas en su totalidad, debido a que muchos programadores aún siguen

programando secuencialmente. Los lenguajes de programación de alto nivel como C y

Java tienen bibliotecas de funciones para el manejo y creación de procesos y hebras que

permiten de manera fácil y eficiente aprovechar estas arquitecturas multinúcleo.

2

Page 4: TAREA ACADEMICA

Tarea académica Microprocesadores

BREVE HISTORIA

En los últimos veinte años el rendimiento en los procesadores se ha duplicado

aproximadamente cada dos años. Los fabricantes de microprocesadores mejoran el

rendimiento en base a procesadores multinúcleo y multihebras (Multicore

Hyperthreading). Estas nuevas tecnologías abren una amplia gama de oportunidades a

desarrolladores de software.

Antes de ver este tema de procesadores multinúcleo revisaremos algunos conceptos:

El socket de CPU: es una matriz de pequeños agujeros (zócalo) existente en una placa

base donde encajan los pines de un microprocesador; dicha matriz, denominada Pin grid

array o PGA, permite la conexión entre el microprocesador y dicha placa base.

Ejemplos de socket de CPU son:

Socket 939 (AMD), Socket AM2 (AMD), Socket 478 (Intel), Socket 775 (Intel)

Propósito de la cache : actuar como una memoria temporal entre los registros de

CPU, limitados y de gran velocidad y la RAM, mucho más grande y lenta.

Los subsistemas de cache pueden ser de niveles múltiples; es decir, puede haber más de

un conjunto de cache entre el CPU y la memoria principal. Muchos sistemas tienen dos

niveles de cache:

Cache L1 ubicada en el chip de la CPU, se ejecuta a la misma velocidad que dicha CPU.

Cache L2 suele ser parte del modulo de la CPU, se ejecuta a las mismas velocidades que

la CPU (o casi) y es un poco más grande y lenta que la cache L1.

Algunos sistemas (normalmente servidores) también tienen cache L3 formando parte

del sistema de la placa base. La cache L3 es más grande y algo más lenta que la cache

L2.

MMX Es el acrónimo de Multimedia Extensions. Conjunto de instrucciones SIMD

(Single Instruction Multiple Data) diseñado por Intel e introducido en 1997 en sus

microprocesadores Pentium MMX. I MMX agrego 8 nuevos registros a la arquitectura,

conocida como MM0 a MM7. En realidad, estos nuevos registros son meros alias de los

registros de la pila de la FPU. Cada uno de los registros MMn es un número entero de

64 bits. El juego de instrucciones MMX utiliza el concepto del tipo de datos

compactados) en lugar de usar el registro completo para un solo numero entero de 64

3

Page 5: TAREA ACADEMICA

Tarea académica Microprocesadores

bits, se usa para almacenar dos enteros de 32 bits, cuatro enteros de 16 bits u ocho

enteros de 8 bits. Problema: MMX solo soporta operaciones con números enteros. Hace

algún tiempo, el uso de matemáticas de vector entero tenía sentido (operaciones 2D y

3D), pero cuando esta funcionalidad se pasa a las GPUs, la coma flotante se vuelve

mucho más importante.

SSE (Streaming SIMD Extensions) es una extensión al grupo de instrucciones MMX.

Estas instrucciones operan con paquetes de operandos en coma flotante de precisión

simple. Hay varios tipos de instrucciones SSE:

Instrucciones SSE de Transferencia de datos.

Instrucciones SSE de Conversión.

Instrucciones SSE Aritméticas.

Instrucciones SSE lógicas.

Con la tecnología SSE, se introducen 70 nuevas instrucciones y 8 registros nuevos: del

xmm0 al xmm7.

Los registros tienen una extensión de 128 bits. A diferencia de MMX, la utilización de

SSE no implicaba la inhabilitación de la FPU, por lo que no era necesario habilitarla

nuevamente, lo que significaba para MMX pérdida de velocidad.

La CPU está conectada a un bus que le permite comunicarse con el resto de

dispositivos. Gracias a este bus frontal de datos, llamado FSB (Front Side Bus), la CPU

recibe información y la envía a otros dispositivos.

El FSB se encuentra conectado al chip Northbridge, que es el núcleo de la placa base.

La frecuencia de un procesador se expresa en términos de la frecuencia del FSB

multiplicado por un valor predeterminado por el fabricante, por eso conocer bien el FSB

es vital en la práctica del Overclocking (forzar un procesador a trabajar a una velocidad

mayor que la de serie). Ejemplo) Multiplicador: x18, Frecuencia del FSB: 200MHz,

Frecuencia del procesador: 3600 MHz.

La fuerte competencia en el mundo de los procesadores, especialmente entre Intel y

AMD, ha producido que la tecnología actual de fabricación de procesadores está

llegando a sus límites. Cada vez la miniaturización de los componentes del procesador

es más difícil (el límite de construcción del silicio ronda los 15-20nm, donde el silicio

4

Page 6: TAREA ACADEMICA

Tarea académica Microprocesadores

empieza a ceder por falta de consistencia, ya se ha llegado a los 65nm), el problema de

la generación de calor a aumentado, produciendo que sea más difícil aumentar la

frecuencia principal del procesador. Todos estos problemas dificultan el aumento de

rendimiento de los procesadores.

Los procesadores actuales no sobrepasan los 3.8 GHz (obtenido por el Pentium 4

Prescott), necesitan grandes disipadores y ventiladores porque generan mucho calor. No

se podía continuar fabricando procesadores de la misma manera, se estaba llegando a un

“estancamiento”; era necesario tomar otro camino, utilizar otra variable que hiciera que

el rendimiento del procesador aumentará. Entonces, basándose en el procesamiento en

paralelo, se empezaron a construir los procesadores multinúcleo.

Antes de construir los procesadores multinucleo los fabricantes utilizaron tecnologías

que simulaban esta, tenemos a continuación:

Tecnologías empleadas por INTEL:

Hyper-Threading

Intel 64 Architecture

Bit de desactivación de ejecución y seguridad

Tecnologías empleadas por AMD:

HyperTransport

AMD 64

Bit NX

Hyper-Threading:

Dos formas de brindar más potencia informática:

1 Aumentar la velocidad del reloj.

2 Realizar más trabajo en cada ciclo de reloj.

Un procesador compatible con la tecnología Hyper-Threading se presenta así mismo

ante las aplicaciones y los S.O. como dos procesadores virtuales.

El procesador puede entonces trabajar en dos conjuntos de tareas a la vez, utilizar los

recursos que de otro modo estarán inactivos y realizar más trabajo en la misma cantidad

de tiempo.

5

Page 7: TAREA ACADEMICA

Tarea académica Microprocesadores

En los PC de escritorio: La tecnología HT aprovecha la capacidad de subprocesos

múltiples integrada en WinXP y en muchas aplicaciones. El software con subprocesos

múltiples divide su carga de trabajo en procesos y subprocesos que se pueden programar

y enviar de forma independiente. Es parecido a un sistema multiprocesador pero con un

único procesador.

En los servidores: La tecnología HT permite el paralelismo a nivel de subprocesos al

duplicar el estado arquitectónico de cada procesador a la vez que se comparte un

conjunto de recursos de ejecución del procesador. Cuando programa subprocesos, el SO

considera los dos estados arquitectónicos claramente determinados como procesadores

“lógicos" separados

Intel 64:

La arquitectura Intel 64 proporciona computación de 64 bits cuando se combina con

software que la soporte. Mejora el rendimiento permitiendo a los sistemas direccionar

más de 4 gigabytes tanto de memoria virtual como física.

Bit de desactivación de ejecución y seguridad:

Previene ciertos tipos de ataques de desbordamiento de buffer cuando se combina con

un sistema operativo compatible. Permite que el procesador clasifique aéreas de la

memoria en función de donde se puede ejecutar el código de las aplicaciones.

HyperTransport:

Tecnología que induce en una mejora de las prestaciones del sistema, diseñada para

incrementar las mismas mediante la eliminación de cuellos de botella en la E/S, lo cual

mejora notablemente el ancho de banda y reduce la latencia. Las mejoras se centran en

cuatro apartados:

1) FSB del procesador: Sustituyendo el FSB por unas conexiones de E/S basadas en la

tecnología HyperTransport se consigue una extensión del ancho de banda desde los

2,1GB/s hasta los 6,4GB/s.

6

Page 8: TAREA ACADEMICA

Tarea académica Microprocesadores

2) Interfaz de memoria: Cuando ocurre un fallo en la cache, el procesador debe traer

información de memoria principal. En Northbridge/Southbridge, las transacciones de

memoria pasan por el chip Northbridge, creando latencias adicionales. Para resolver

este cuello de botella, AMD incorpora el controlador de memoria en su 8a generación

de procesadores.

3) Interconexión chip a chip: La integración simultanea de las tecnologías de alta

velocidad como AGP-8x, Gigabit Ethernet, PCI-X, etc. elimina virtualmente los cuellos

de botella en la E/S.

4) Capacidades de expansión de E/S hacia la industria de buses de alta velocidad: La

arquitectura Northbridge/Southbridge no está preparada para soportar más de dos

núcleos lógicos, ya que la funcionalidad deberá fijarse a una interfaz existente, y un bus

actual no tendrá su cliente ancho de banda para soportar tecnologías de alta velocidad.

AMD64:

Es una arquitectura basada en la extensión del conjunto de instrucciones x86 para

manejar direcciones de 64 bits. Además, contempla mejoras adicionales como duplicar

el número y el tamaño de los registros de uso general y de instrucciones SSE. I Bit NX:

el bit NX es una característica del procesador que permite al SO prohibir la ejecución

del código en ciertas aéreas de datos.

PROCESADORES MULTINUCLEO

Las arquitecturas multinúcleo se

refieren a microprocesadores que

combinan dos o más núcleos

independientes en un solo paquete

ó circuito integrado, los cuales

trabajan a la misma frecuencia. En

general, los microprocesadores

multinúcleos permiten que un

dispositivo computacional exhiba una cierta forma del paralelismo a nivel de hebras sin

incluir múltiples microprocesadores en paquetes físicos separados.

7

Page 9: TAREA ACADEMICA

Tarea académica Microprocesadores

Un microprocesador multinúcleo es el que combina dos o más procesadores en un

paquete, estos procesadores se basaron en los sistemas distribuidos y el procesamiento

en paralelo, este procesamiento consiste en la división de una aplicación en varias partes

para que sean ejecutadas a la vez por diferentes unidades de ejecución.

Una de las interrogantes más comunes es que si al adquirir un equipo con más de un

núcleo la velocidad de los procesos disminuirá drásticamente con respecto a los núcleos,

por ejemplo si se adquiere una computadora con un procesador Dual Core (dos núcleos)

la velocidad del proceso tardara la mitad, esto es una mentira, si es verdad que

disminuye pero el decir que si tenemos un equipo con 4 núcleos la velocidad aumentara

4 veces es falso, pero algo bueno de estos procesadores es que ayuda al ahorro de

energía, ya que la tendencia que tenían los procesadores era aumentar la velocidad del

reloj del chip, esto consumía mucha energía y podía causar un sobrecalentamiento, con

más de un procesador ya no es necesario aumentar la velocidad del reloj.

Intel es una empresa que va a la vanguardia, comenzando con el dual core de dos

núcleos. AMD saca el Quad Core de cuatro núcleos y que hoy en día es de los más

actuales, se puede decir que comenzó la guerra de los multinúcleos y ahora las empresas

se encargaran de crear mejores procesadores, con cada vez más núcleos y a un precio

accesible.

Hay una lucha constante entre AMD e Intel por presentar el mejor procesador, AMD

publico sus procesadores Opteron 6000 de 8 y 12 núcleos, mientras que Intel presentó

el Xenon de 8 núcleos orientado a servidores.

Cabe mencionar que fuera de los fabricantes

de procesadores más comerciales como Intel

y AMD, existen un gran número de empresas

tal es el caso de Tilera, esta joven empresa

anunció que tiene planes de crear un

procesador capaz de contener 100 núcleos,

además tendrá funciones especiales que le

permitirán evadir los problemas de falta de ancho de banda que sufren los procesadores

multinúcleo actuales.

8

Page 10: TAREA ACADEMICA

Tarea académica Microprocesadores

Se verá un resumen de los principales procesadores multinúcleo de la actualidad. Se

comienza por Intel, mostrando los procesadores multinúcleo que ha sacado al mercado,

luego viene AMD, y por último se muestra al nuevo procesador Cell, que próximamente

va a salir en la PlayStation 3.

Procesadores Multinúcleo de Intel

Actualmente Intel está fabricando procesadores de doble núcleo. Comenzó fabricando

los Pentium D en el 2005, luego en el 2006 lanzó los Core Duo y el Core 2 Duo.

Pentium D.

Los Pentium D están conformados por dos procesadores Pentium 4 Prescott sin

Hyperthreading. Luego Intel sacó el Pentium Extreme Edition (No confundir con el

Pentium 4 Extreme Edition) que era un procesador que tenía los procesadores P4

Prescott, con la tecnología Hyperthreading, lo que hacía que el software viera cuatro

procesadores.

Las características de los Pentium D son:

- Proceso de fabricación de 90nm

- Tienen la tecnología EM64T, que permite trabajar con 64 bits de forma nativa

- Utilizan núcleos SmithField (basados en los Prescott), cada uno de ellos tiene una

memoria caché L2 de 1MB

- Van desde 2.80GHz, del modelo menos potente, hasta 3.20GHz para el modelo más

potente.

El procesador que contiene dos núcleos Prescott se llama Smithfield. Los nuevos

procesadores de doble núcleo Pentium D se llaman Presler, están construidos con

tecnología de fabricación de 65nm y van desde 2.8 hasta 3.73Ghz. Tienen una caché L2

por cada núcleo de 2MB (4MB en total).

Core Duo

Los procesadores Core Duo es una versión para los portátiles, implementa 2MB de

caché de memoria compartida para ambos núcleos. Están hechos con la tecnología de

65nm. Su velocidad va desde 1.20 hasta 2.33Ghz. El FSB (bus del sistema) va desde

533Mhz del modelo menos potente hasta 667Mhz para los demás. El gasto de energía

va desde 9.0w hasta 31w. Por los datos se ve que tienen una gran relación

rendimiento/energía.

9

Page 11: TAREA ACADEMICA

Tarea académica Microprocesadores

Core 2 Duo

Esta nueva familia de procesadores de Intel está basado en la micro arquitectura Core,

que reemplaza a la antigua micro arquitectura Netburst que fue aplicada en los demás

procesadores y que ya estaba llegando a sus límites.

La arquitectura Core proviene de la arquitectura que produjo al Pentium M (utilizado

por los Intel Centrino), que destaca por el gran rendimiento que obtiene de la poca

energía que gasta. El Pentium M además proviene del Pentium III, y este del Pentium

Pro (Los Pentium 4 son una rama genealógica aparte).

Las subfamilias del Core 2 Duo son:

Merom, para portátiles.

Conroe, para equipos de sobremesa.

WoodCrest, para servidores.

Los Core 2 Duo, recién han salido en julio del 2006. Además de la versión normal, hay

una versión extrema. No se tienen todos los datos disponibles, pero ya se han probado

algunos de ellos.

Los Core 2 Duo que han sido probados, por la mayoría de testeadores, son el Core 2

Extreme X6800, el Core 2 Duo E6700 y el E6600. En las pruebas estos procesadores

demuestran tener más rendimiento que el más poderoso procesador del AMD, el AMD

FX-62. Los más fuertes (X6800 y E6700) vencen en casi todo al FX-62, en algunas

pruebas por un margen considerable y el tercero (E6600) está muy cerca.

Intel Core i7: Descripción y características del nuevo procesador de Intel.

Con el nombre en clave de Nehalem conocido hasta ahora desde hace varios años que

se lleva desarrollando, por fin llega al mercado rebautizado con el nombre comercial

Intel Core i7 en sus versiones de dos, cuatro y ocho núcleos.

Construido a 45 nm., es el primer procesador del Intel en conseguir poner cuatro y ocho

procesadores integrados de forma nativa compartiendo una misma memoria caché y

procesador de instrucciones. Así mismo vuelve la tecnología hyperthreading ya

utilizada en el Pentium 4, por lo el sistema operativo nos reportaría 16 procesadores si

tuviéramos instalado el Intel Core i7 Octo. Además el controlador de memoria va

integrado dentro del propio procesador con la nueva tecnología QuickPath, algo a lo que

AMD ya nos tiene acostumbrados desde hace bastante tiempo con su tecnología

10

Page 12: TAREA ACADEMICA

Tarea académica Microprocesadores

HyperTransport.

Tenemos cambio de socket y de chipsets, es decir, este procesador no será compatible

con ninguna de las placas madres desarrolladas para Intel Core 2 y procesadores

anteriores. Intel Core i7 necesita placas madre nuevas y chipsets nuevo. El zócalo para

el procesador ha crecido considerablemente de tamaño pasando a ser LGA1366 en

comparación con el anterior LGA775.

Procesadores Multinúcleo de AMD

Antes de sacar sus procesadores multinúcleo al mercado, AMD ya había conseguido un

gran éxito con su procesador Athlon 64, que incorporaba la capacidad de direccional 64

bits de memoria, la tecnología HyperTransport que era un nuevo bus bastante rápido

que eliminaba cuellos de botella anteriores, y otras tecnologías; este procesador fue

tomado como base para la construcción de su procesador de doble núcleo Athlon 64 X2,

que salió al mercado a partir del 2005.

Para Servidores, AMD sacó el procesador Opteron X2, que se basaba también en el

Opteron de un solo núcleo, el hermano mayor de los Athlon 64.

Para Portátiles AMD ha sacado el Turion X2, que lleva el poder de los procesadores de

doble núcleo al campo de los móviles.

AMD fue el primero en sacar la tecnología de 64 bits, y también fue la primera en sacar

los procesadores de doble núcleo para servidores, portátiles y computadoras de

escritorio. Han tenido un gran éxito, pero con la aparición de los Core 2 Duo de Intel,

basados en su exitoso Pentium M Centrino, la iniciativa vuelve a las manos de Intel en

todos los frentes. Hay que esperar a que AMD saque sus nuevos procesadores K8L, de 4

núcleos y con tecnologías mejoradas, como el HyperTransport 3 y una caché L3.

Procesador CELL

El procesador Cell, es un procesador multinúcleo diseñado por las empresas IBM, Sony

y Toshiba desde el marzo del 2001. Este procesador va a ser usado inicialmente por la

PlayStation 3, pero se tiene previsto usarlo también en los productos electrónicos que

fabrican estas empresas, que van desde televisores de alta definición hasta ordenadores.

11

Page 13: TAREA ACADEMICA

Tarea académica Microprocesadores

Los componentes del procesador son:

1 Power Processor Element (PPE).

8 Synergistic Processor Elements (SPEs).

Bus de Interconexión de los Elementos (EIB).

Controlador de Acceso Directo a Memoria (DMAC).

2 Controladores de Memoria Rambus XDR.

Una interfaz Rambus FlexIO (Input / Output).

El PPE es el núcleo principal, este se encarga de coordinar el trabajo de todos los demás

núcleos (SPEs), mediante la tecnología SMT (Simoultaneous Multi-Threading). El PPC

toma el control del sistema operativo y deja a los SPEs el trabajo de los demás procesos.

EL PPE está basado en la arquitectura PowerPC de 64 bits, tiene 32 KB de caché L1 y

512 KB de caché L2, tiene también tecnología de doble hilo y puede ejecutar dos

instrucciones por hilo. Este procesador esta hecho como los RISC clásicos, o sea no es

como los PowerPC tradicionales, por eso no tiene implementado la predicción de saltos,

y la ejecución de instrucciones es en orden; lo que ahorra una cantidad considerable de

transistores, pasando todo ese trabajo al compilador.

12

Page 14: TAREA ACADEMICA

Tarea académica Microprocesadores

Los SPE son los procesadores auxiliares, son unidades de cálculo vectorial. Pueden

ejecutar hasta dos instrucciones por ciclo. Cada SPE tiene 128 registros de 128 bits cada

uno, 4 unidades de coma flotante, 4 unidades aritméticas enteras y una memoria local de

256 KB (esta memoria es SRAM como las memorias caché, pero no es una de ellas). Al

no utilizar memoria caché, se simplifica el diseño del SPE. Los SPEs tienen memoria

local para tomar los datos que requieren más rápidamente.

El bus de interconexión de elementos, EIB, está compuesto por 4 canales de datos de

128 bits, permite la comunicación entre todos los elementos del procesador, permite

también cargar y mover 16GB de datos por segundo hacia y fuera del Cell

respectivamente. Para mantener lleno este ancho de banda, el procesador Cell utiliza en

sus controladores de I/O y la memoria las tecnologías diseñadas por la empresa Rambus

(conocida por haber fabricado las veloces memorias RAM para Pentium 4, las RIMM,

que no tuvieron aceptación en el mercado). La memoria XDR de Rambus es bastante

rápida, llegando a velocidades 12 veces superiores a las memorias convencionales de

533Mhz actuales.

El chip Cell ha ahorrado muchos transistores al no implementar caché para los SPEs,

ejecución fuera de orden, predicción de saltos, etc., dejando todo ese trabajo al

13

Page 15: TAREA ACADEMICA

Tarea académica Microprocesadores

compilador; con el fin de poner más procesadores (SPEs) lo que aumenta el poder de

procesamiento, y además para que el chip sea más sencillo y gaste menos energía. Este

chip es un monstruo con sus 234 millones de transistores, la mayoría dedicados al poder

de procesamiento por lo anteriormente expuesto, y como utiliza muchos “cerebros”, la

generación de calor se disemina por todo el procesador.

Otras características de este procesador son:

Fabricación en 90nm (nanómetros).

Frecuencia de trabajo desde 3.2 GHz

1,3 Voltios.

Operación a 85ºC con un disipador.

El prototipo tiene 221mm2.

Utiliza la tecnología SOI (Silicio sobre aislante)

Otras características que tiene el Cell es que es escalable, fue diseñado para poder

trabajar con otros Cell. Un PPC de un Cell tiene el potencial de comunicarse con un

PPC o un SPE de otro Cell que se encuentre en la misma placa madre, en la misma red

o en cualquier parte del mundo si ambos estos conectados a Internet.

Otros Procesadores

Otros procesadores multinúcleo importantes que han salido son:

- el PowerPC G5 para las Apple.

- El UltraSparc T1 Niagara, poderoso procesador para servidores, que genera un gran

ahorro de energía por su relación rendimiento/energía. Su fabricante Sun

Microsystems antes también ha sacado buenos procesadores multinúcleo para sus

servidores.

14

Page 16: TAREA ACADEMICA

Tarea académica Microprocesadores

ARQUITECTURAS SIMD, MIMD, SMT.

El sistema de una sola instrucción, múltiple dato (SIMD, del inglés Single Instruction

Multiple data) es un sistema en el que la misma instrucción manipula diferentes datos

en paralelo. Aquí el número de datos es el número de procesadores trabajando

simultáneamente. En la figura se ilustra el modelo SIMD.

El modelo múltiple instrucción, múltiple dato (MIMD, del inglés Multiple Instruction

Multiple Data) se refiere a un sistema multiprocesador, que es un sistema que tiene

múltiples procesadores y capaz de trabajar independientemente y producir resultados

para el sistema global. Cada procesador es capaz de ejecutar una instrucción diferente

con un dato diferente. En la figura se ilustra el modelo MIMD.

15

Page 17: TAREA ACADEMICA

Tarea académica Microprocesadores

Simultaneous multithreading (SMT): dentro de un procesador superescalar fuera de

orden ya hay mecanismos Hw para soportar la ejecución de más de un thread

Gran numero de registros físicos donde poder mapear los registros arquitectónicos de

los diferentes threads

El renombrado de registros proporciona un identificador único para los operandos de

una instrucción, por tanto instrucciones de diferentes thread se pueden mezclar sin

confundir sus operados

La ejecución fuera de orden permite una utilización eficaz de los recursos.

Solo necesitamos sumar una tabla de renombrado por thread y PC separados

Commit independiente se soporta con un ROB por thread (Lógico o físico)

Ejemplos; Pentium4, Power5 y 6, Nehalem (2008)

16

Page 18: TAREA ACADEMICA

Tarea académica Microprocesadores

PROGRAMACIÓN MULTINUCLEO.

Hoy en día la mayoría de las CPUs tienen varios núcleos, desde 2 hasta 8 o 16, y cada

vez más y más. Para que tus aplicaciones aprovechen esta característica de llevar varios

procesos en paralelo se da a conocer y aplicar metodologías de programación y las

herramientas para análisis de rendimiento diseñadas para lograr el funcionamiento más

eficiente de sus programas en ambientes de cómputo basados en procesadores de

múltiples núcleos y de procesamiento concurrente:

Ada es un lenguaje de programación de alto nivel estructurado, con tipos estáticos, y

orientado a objetos que permite el desarrollo de aplicaciones de tiempo real y de gran

tamaño de una manera sencilla. Más importante aun es el hecho de que tiene un gran

soporte para paralelismo debido a varios mecanismos que incluye como el paso

síncrono de mensajes y los objetos protegidos. Como ya se ha mencionada algunas

veces antes, Ada tiene muy buen soporte para paralelismo y concurrencia debido a la

manera en que se estructuran sus programas. Para Ada, la unidad básica para la

concurrencia es la tarea (task en inglés). Es importante mencionar que de hecho, por lo

menos en cierto modo, hay dos tipos de tareas: las tareas sencillas y los tipos tarea. Las

tareas simplemente son una tarea única y especial, es decir, que solo hay una de ellas.

Por otro lado, un tipo tarea es una especie de plantilla para tareas y se permite tener

varias tareas del mismo tipo. Las tareas tienen la capacidad de comunicarse entre ellas a

través de paso de mensajes y pueden compartir variables a través de una memoria

compartida. Estas características son posibles gracias a un mecanismo “de citas”

(rendezvous en inglés) que establece un punto de sincronización entre dos tareas. Debo

mencionar que este mecanismo hace que una de las tareas se suspenda hasta que la otra

tarea alcance el mismo punto. Es también importante dejar claro que las tareas no son

llamadas como lo son los procedimientos o las funciones, sino que comienzan a

ejecutarse cuando el procedimiento principal inicia y solo se detienen para esperar los

valores especificados en los puntos de entrada. Ada es un lenguaje bastante interesante

que ha sabido mantenerse como una buena opción para los desarrolladores debido a las

actualizaciones que ha tenido con el tiempo y la gran comunidad que lo respalda

(incluido el departamento de defensa de los Estados Unidos). Su estructura en bloques

me parece algo rara pero relativamente sencilla de entender y su implementación de

17

Page 19: TAREA ACADEMICA

Tarea académica Microprocesadores

18

Page 20: TAREA ACADEMICA

Tarea académica Microprocesadores

paralelismo es también muy sencilla. Claro que tiene ventajas y desventajas como

todos los lenguajes, pero me parece una alternativa bastante buena, especialmente para

proyectos grandes.

Chapel es un lenguaje de programación paralelo emergente en el que su diseño y

desarrollo está dirigido por Cray Inc. Chapel está siendo desarrollado como un proyecto

de open-source con contribuciones de academia, industria y centros computacionales

científicos. Chapel está diseñado para mejorar la productividad de los usuarios finales

mientras también sirve como un modelo portable de lenguaje de programación paralelo

que pueda ser usado en clusters o bien en computadoras multinucleo, tratando de

semejar o mejorar el desempeño y portabilidad de los modelos de programación

actuales como los Message Passing Interface (MPI). Chapel soporta un modelo de

ejecución de múltiples hilos gracias a un nivel alto de abstracción para la paralelizacion

de la información, concurrencia y paralelismo anidado. Es importante remarcar que el

diseño de Chapel es a partir de sus propios principios, en lugar de basarse en algún

lenguaje ya existente. Es un lenguaje de estructura de bloque imperativo, de fácil

aprendizaje para los usuarios de C, C++, Fortran, Java, Perl, Matlab y otros lenguajes de

programación populares. El lenguaje está basado en el modelo de vista global de High-

Performance Fortran (HPF), el cual es muy fuerte trabajando con lenguajes comunes

para computación científica a un nivel de abstracción muy alto pero evita la debilidad de

HPF’s, la cual es que únicamente tiene como estructura de datos a los arreglos. Chapel,

para corregir este problema, implementa programación multitareas y estructuras de

datos arbitrarias con afinidad a nivel de objetos. A diferencia de OpenMP que crea hilos

con mucho peso y un esquema de compartir trabajo, Chapel no usa un esquema basado

en hilos, sino que utiliza subcomputaciones que se pueden ejecutar de manera

concurrente. Eliminando el concepto de hilo, no es necesario un manejador de los

mismos, haciendo que cada módulo en el código de Chapel puede expresar su

concurrencia libremente. Chapel está diseñado para soportar la programación paralela

general a través del uso de abstracciones del lenguaje de alto nivel. También soporta un

modelo de programación de perspectiva global que incrementa el nivel de abstracción al

expresar tanto la información como el control de flujo, comparado con los modelos de

programación paralelos usados actualmente.

19

Page 21: TAREA ACADEMICA

Tarea académica Microprocesadores

Chapel podría parecer como cualquier otro lenguaje de programación, pues comparte

muchas características similares a los que ya hemos estudiado. Soporta programación

orientada a objetos como C++, Java, etc., tiene manejo de reduce como Erlang o

Clojure; pero el verdadero potencial de Chapel es que su arquitectura y diseño lo

vuelven un lenguaje de programación fácil de utilizar, cuenta con distintas declaraciones

para paralelizar y evita el uso de manejadores de hilos, lo cual lo hace sumamente

práctico. También podemos percibir que Chapel se enfoca en la eficiencia, por la forma

en que maneja sus multitareas y provee herramientas poderosas para el programador,

brindándole la oportunidad de desarrollar con un poco más de libertad que con otros

lenguajes; un ejemplo de esto es que permite que el programador sea libre de utilizar y

manejar sus propios iteradores paralelos y que utilice la programación acorde a la

localidad, donde especificará en donde deberá ir tanto la información como el poder de

cómputo.

Cilk es un lenguaje algorítmico basado en múltiples threads. La idea de Cilk es que un

programador debe concentrarse en estructurar su programa en forma paralela sin tenerse

que preocupar por como será la corrida en el sistema para mejorar su eficiencia en la

plataforma. La corrida de un programa Cilk se encarga de detalles como el balanceo de

carga y comunicación entre los procesadores. Cilk básicamente se asegura de que se

asignen las cargas de trabajo de forma eficiente y con un desempeño predecible. Cilk es

una implementación muy natural de paralelismo para C y C++, ya que, al incluir pocas

instrucciones es fácil de aprender y difícil de cometer errores. El hecho de que sea

compatible con C y C++ lo hacen ideal para una gran cantidad de proyectos. El lenguaje

Cilk es bastante sencillo si ya sabes C. Consiste en el lenguaje C con seis palabras

claves para ocuparse del paralelismo y la sincronización. Un programa en Cilk tiene la

misma semántica que un programa en C si se eliminan las palabras claves de Cilk.

Cuando se corre un programa en un procesador y sin estas palabras claves el programa

es llamado “serial eleison” o un “C eleison” que básicamente significa que el programa

en Cilk tiene el mismo desempeño que la versión de C.

Curry es un lenguaje de programación universal, multi-paradigmatico, fuertemente

tipado, con inferencia de tipos y tipado estático que tiene como objetivo principal

conjuntar los paradigmas más importantes de programación declarativa: la

20

Page 22: TAREA ACADEMICA

Tarea académica Microprocesadores

programación funcional, la programación lógica y programación de restricciones.

Además, abarca los principios operativos más importantes desarrollados en el ´área de

lenguajes lógicos-funcionales: residuation y narrowing. Curry combina una serie de

características de la programación funcional (expresiones anidadas, funciones de orden

superior, lazy evaluation), de la programación lógica (variables lógicas, estructuras

parciales de datos, built-in search), y la programación concurrente (evaluación

concurrente de las expresiones con la sincronización en variables lógicas). El desarrollo

de Curry es una iniciativa internacional que surgió la década pasada cuyo objetivo es

proporcionar una plataforma común para la investigación, la enseñanza y la aplicación

de lenguajes lógicos-funcionales. Su principal diseñador es Michael Hanus. Curry

ofrece una forma muy sencilla y transparente para incorporar concurrencia en sus

programas. Esto lo logra al momento de ejecutar restricciones con ayuda de variables

free. Este tipo de variables se encuentran sin instanciar o sin relacionar. El objetivo

principal al tener restricciones y variables free es asignarle valores a las variables hasta

que la expresión sea reducible, esto significa que la expresión llegue a un caso terminal

y se satisfaga la restricción. Curry es un lenguaje muy completo, resultado de la mezcla

de los paradigmas que lo componen. Esto permite que se resuelvan los problemas de

forma más sencilla ya que el programador puede modelar su código de forma muy

similar a la realidad. El implementar concurrencia en Curry es muy fácil gracias al uso

de restricciones combinado con el operador “&” ya que el programador no tiene que

agregar código extra y si se ejecuta en un equipo multinucleo adquiere la característica

de paralelo. El inconveniente de esta facilidad es que el problema a resolver tiene que

modelarse enfocado a restricciones para aprovechar la concurrencia. Pienso que es un

lenguaje que está en crecimiento por lo que puede adherir nuevas características y

funcionalidades para implementar concurrencia aprovechando las características de los

paradigmas que lo conforman.

D es un lenguaje de sistemas que surge como una mejora práctica de C++, pero

enriquecido de muchas maneras por otros lenguajes. Fue diseñado desde su incepción

para ser multiparadigma, pues soporta la programación orientada a objetos, funcional,

imperativa, concurrente y la meta programación. En este artículo se expondrá una breve

introducción a D y se discutirá su enfoque en la concurrencia. Siendo D un lenguaje de

21

Page 23: TAREA ACADEMICA

Tarea académica Microprocesadores

sistemas, se ofrece una variedad de formas para crear programas concurrentes. A

continuación se mencionan las formas y herramientas incluidas en el lenguaje. La forma

principal y sugerida por D es la utilización de threads aislados que se comunican a

través de paso de mensajes. Sin embargo, también se provee sincronización de las

conocidas secciones críticas protegidas por mutexes y variables de evento. Cualquier

uso de operaciones o funciones que no se consideren seguras (a través de la propiedad

@safe) es responsabilidad del programador. D es un lenguaje que nos ofrece una

versión aumentada y mejorada de C++. Tenemos a nuestra disposición todas las

herramientas para desarrollar cualquier aplicación que deseemos con un altísimo grado

de control, teniendo al mismo tiempo la posibilidad de utilizar elementos del mismo

lenguaje que nos facilitan ciertas tareas. Es agradable ver que D nos provee de

soluciones que necesitan atención especial en C++ y que nos dan la ventaja de

despreocuparnos de particularidades que sólo nos quitarían tiempo de desarrollo o

pruebas. De igual manera es interesante ver que la concurrencia manejada en D tiene un

enfoque sumamente moderno, desafiando paradigmas de los lenguajes sobre los que

está basado, ya que toma partes probadas de otros lenguajes para resolver problemas

con diferentes paradigmas de programación. Esta flexibilidad e innovación le da al

programador diversas herramientas empaquetadas en un mismo lenguaje de

programación para que no necesite disponer de bibliotecas a la hora de desarrollar

aplicaciones o al enfrentarse a problemas. Cabe destacar que D, al reunir lo mejor de

diferentes lenguajes, requiere de un dominio de conceptos que van de nivel intermedio a

avanzado de programación. La transición desde un lenguaje como C o C++ resulta

natural y fluida, pero tener conocimientos de programación funcional y concurrente y de

meta programación son los que desatan el verdadero potencial de un programador que

utiliza D. El manejo y soporte por parte de D para la concurrencia es bastante

sofisticado, sobre todo por el rol tan importante que juega el compilador en la

validación de código mientras se asegura de eliminar la mayor cantidad posible de

problemas que pueden surgir al correr programas que utilizan el paralelismo. De las

formas en las cuales D soporta la concurrencia, se recomienda más la utilización de

variables explícitamente no compartidas en los threads y la comunicación entre ellos por

paso de mensajes. En caso de compartir datos, es recomendable que se haga uso de

22

Page 24: TAREA ACADEMICA

Tarea académica Microprocesadores

variables inmutables.

El lenguaje Fortress debe su nombre a la idea de ser un Fortran seguro que provee fuerte

abstracción y seguridad en tipos según los principios de los lenguajes de programación

modernos. Entre sus características principales se encuentran un paralelismo implícito

para los ciclos más comunes y facilitando el trabajado de administrar los hilos de

ejecución, soporte para caracteres Unicode y una sintaxis muy concreta similar a la

notación matemática. Fortress está desarrollado para crear programas paralelos con

facilidad combinando una gran funcionalidad con bibliotecas desarrolladas en Java pero

optimizando todos los procesos . El desarrollo de este trabajo nos ha ayudado a expandir

nuestro conocimiento sobre lenguajes de programación y los diferentes alcances en lo

que refiere a la programación concurrente y paralela sobre la forma que los autores la

ven y diseñan. Cuando vimos por primera vez un programa escrito en Fortress nos

pareció algo extraño ver la notación matemática en un programa computacional debido

a que no estamos acostumbrados a ello. Estudiándolo nos dimos cuenta que al crear de

esa manera el lenguaje, la forma de programar es más intuitiva para los matemáticos. Ya

no diseñarían y analizarían sus problemas en papel, ahora seria en una computadora. Por

el otro lado, sentimos que al lenguaje le faltaron más formas de expansión para darse a

conocer en todos los rubros porque la idea de que el paralelismo sea una característica

por defecto lo hace interesante y el manejo de hilos de ejecución es muy sencillo. A

pesar de que Oracle no continuará con más investigación y desarrollo del lenguaje

pensamos que varias características de este lenguaje deberían ser tomadas en cuenta

para el desarrollo de futuros lenguajes de programaci´on.

F# es un lenguaje de programación que opera sobre la plataforma .NET e incluye

paradigmas como programación funcional, así como también programación imperativa

y programación orientada a objetos. F# es una variante de ML y es compatible con

implementaciones de OCaml. F# fue originalmente desarrollado por Don Syme en los

Laboratorios de Investigación de Microsoft en Cambridge y actualmente se distribuye

como un lenguaje totalmente soportado en la plataforma .NET y en Visual Studio. F# es

un lenguaje que utiliza inferencia de tipos y además soporta declaraciones de tipos

explicitas. F# soporta todos los tipos que están dentro del Common Language

Infrastructure (CLI) y además categoriza esos tipos como inmutables, lo cual facilita el

23

Page 25: TAREA ACADEMICA

Tarea académica Microprocesadores

diseño de aplicaciones multinucleo, o como mutables. F# es un lenguaje de

programación simple y pragmático que tiene fortalezas particulares en programación

orientada a datos, programación paralela de operaciones de entrada/salida, programaci

´on paralela en CPU, scripting y desarrollo de algoritmos. Además permite el acceso a

una gran biblioteca de herramientas base ya incluidas en Visual Studio. F# ofrece varias

opciones para paralelizar programas secuenciales, desde el manejo directo con hilos a

nivel sistema operativo hasta modelos y patrones de diseño que abstraen el manejo de

bajo nivel. Además, la infraestructura de .NET incluye muchas clases útiles para la

concurrencia y tareas asíncronas, aunque no todas ofrecen la misma simplicidad en F#

que ofrecen otros lenguajes de .NET. Al ofrecer opciones de diferente grado de control

y complejidad, F# hace un buen trabajo al atacar los temas de paralelizacion,

concurrencia y tareas asíncronas, aunque todavía hay campo para mejorar; la existencia

de expresiones computacionales, tipos inmutables y la inclusión del paradigma

funcional en su sintaxis son una ventaja mientras que la disponibilidad y

funcionamiento de varios tipos de candados para el manejo de memoria compartida

puede mejorar. En general, F# cumple con las características necesarias para mejorar la

programaci´on serial a través del diseño paralelo y concurrente.

En el año 2009 Google Inc. anunció un nuevo lenguaje de programación llamado Go,

que es un lenguaje de programación concurrente y compilado inspirado en la sintaxis de

C. Go está diseñado para incrementar la eficiencia, para que así pueda ser usado para

escribir grandes aplicaciones con el menor tiempo de compilación. Soporta

concurrencia usando Goroutines y un canal de comunicación tipo CPS, y gracias a ello,

hace más fácil el escribir programas para obtener el máximo rendimiento de las

maquinas multinucleo y en red. Los ingenieros que desarrollan el lenguaje, lo describen

como rápido, divertido y productivo, donde pueden escribir sus programas más rápido,

más efectivo y que soporta los grandes sistemas distribuidos que conectan miles de

maquinas y el tipo de problemas que se encuentran al escribir ese tipo de programas El

lenguaje de programación Go de Google es relativamente nuevo, con tan sólo 2 o 3 años

desde su lanzamiento, y aunque sigue en una fase experimental, los ingenieros de

Google han probado su velocidad en Web Crawl contra lenguajes como Python, Ruby y

Scala. Este lenguaje ha recibido muy buenas críticas entre comunidades de

24

Page 26: TAREA ACADEMICA

Tarea académica Microprocesadores

programadores, que usándolo por poco tiempo, se han adaptado muy bien y lo han

descrito como efectivo y rápido, aunque nunca hayan programado en un ambiente

paralelo. El lenguaje es fácil de instalar, incluye muchas bibliotecas y tiene la

documentación suficiente para que la gente pueda empezar a usarlo y esté a la par de

lenguajes como Erlang. Go recopila aspectos de C++ y C, y escribir en este lenguaje

tiene muchas ventajas, pero es importante comprender que tiene sus propias

propiedades y convenciones.

Io es un lenguaje de programación orientado a objetos basado en prototipos, dinámico y

fuertemente tipado. Su autor, Steve Dekorte, cita a Smalltalk, Newtonscript, Lua y Lisp

como sus principales influencias. Al igual que Ruby, Io es un lenguaje de programación

con facilidades importantes de meta programación que le permiten modificar incluso la

sintaxis del lenguaje. Además, al igual que Erlang, Scala y Clojure tiene un modelo de

concurrencia orientado a actores, en el cuál un componente corre en su propio thread,

aislado del resto. Io es un lenguaje que ofrece un modelo de concurrencia que a

comparación de algunos otros lenguajes, es más sencillo de usar. Esto es una fuerte

ventaja, sin embargo el problema que tiene Io es que no es un lenguaje muy eficiente. Si

bien es un lenguaje no tan veloz, su capacidad de concurrencia es una parte importante

que lo hace poder competir con otros lenguajes más veloces. Es una lástima que no sea

un lenguaje más usado, al punto de que no llega ni al top 50 del TIOBE Índex.

Esperamos que su popularidad aumente o que si no, al menos que lleguen nuevos

lenguajes con ideas similares con respecto al modelo de concurrencia.

Modula-3 fue diseñado a finales de los años ochenta en Digital Equipment Corporation

(DEC) y Olivetti Research Center (ORC) por Luca Cardelli, Jim Donahue, Mick Jordan,

Bill Kalsow y Eric Muller. Modula- 3 es un lenguaje miembro descendiente de la

familia Pascal, es el sucesor inmediato de Modula-2+ y por su naturaleza por Modula-2.

Mejorando muchas deficiencias de sus predecesores e incorporando nuevas

funcionalidades, Modula-3 es un lenguaje de programación orientado a objetos, tiene

manejo de excepciones, encapsulamiento, un recolector de basura automático y la

característica principal de este articulo: manejo de Threads. Para esa época eran pocos

los lenguajes de programación que implementaban el paradigma orientado a objetos y

el recolector de basura automático, además Modula-3 es un leguaje bastante robusto por

25

Page 27: TAREA ACADEMICA

Tarea académica Microprocesadores

lo que sería interesante analizar por qué no es uno de los lenguajes más utilizados hoy

en día, sin embargo, no es el objetivo de este articulo. El objetivo principal del lenguaje

era crear un lenguaje imperativo que implementara las características más importantes

de los lenguajes modernos de ese tiempo de una manera sencilla y segura, es por esa

razón que se omiten características como sobrecarga de operadores, herencia múltiple y

otras características que son consideradas complicadas y “peligrosas”. Modula-3 es un

lenguaje de programación que cuenta con la mayoría de las necesidades que hoy en día

utilizamos. Es interesante ver que a pesar de ello, no es un lenguaje que se mencione

mucho o que se utilice al mismo nivel que lenguajes que soportan lo que este lenguaje

soporta, se menciona que puede ser un lenguaje más orientado a la enseñanza sin

embargo uno de los problemas más grandes es que se le dejó de dar soporte al lenguaje

convirtiéndose en un lenguaje olvidado. Es sin duda un lenguaje interesante para

trabajar y para la época uno de los lenguajes que revolucionaron el concepto de la

Programación Orientada a Objetos, pues como se mencionó se creó a finales de los

ochenta y para 1991 no muy lejos se comenzaba a idear Java. En cuanto al manejo de

concurrencia, tiene implementados los mecanismos necesarios de sincronización para el

manejo de Threads lo que nos permitiría escribir programas “Thread-safe”, sin

embargo, su implementación es un poco confusa a diferencia de otros lenguajes como

Java. Probablemente en parte es porque ya estamos acostumbrados a desarrollar en Java

que no es un lenguaje modular por lo que se nos hace más fácil instanciar objetos y

escribir programas con uso de Threads.

OpenCL es un lenguaje diseñado para utilizar cualquier procesador que se encuentre, ya

sea CPU, GPU u otros y fue diseñado principalmente por Apple Inc quien hizo partícipe

del proyecto al grupo Khronos. Actualmente apoyan el proyecto diferente OEMs

(Original Equipment Manufacturer) como IBM, AMD, Intel, Nvidia, EA, Ericsson,

entre muchos otros. Actualmente el proyecto le pertenece a Nvidia. La primera versión

que fue liberada al público fue el 8 de Diciembre de 2008, para la cual se trabajó 5

meses (de Junio de 2008 hasta Noviembre de 2008) y después el grupo Khronos revisó

y aprobó el proyecto. OpenCL significa Open Computing Language y su objetivo es

hacer que máquinas heterogéneas de diferentes fabricantes puedan trabajar

26

Page 28: TAREA ACADEMICA

Tarea académica Microprocesadores

conjuntamente. OpenCL, básicamente, es un framework de programación para

desarrollar aplicaciones que aprovechen recursos computacionales heterogéneos y

permite ejecutar código en plataformas mixtas (sin importar el fabricante o cuántos

procesadores tiene) que pueden consistir en CPUs, GPUs y otros tipos de procesadores.

Este framework incluye un lenguaje propio el cual mantiene similaridades con el

lenguaje C. También hace uso de las GPUs para realizar tareas diferentes a graficas

computacionales (a esto se le llama General Purpose GPU). OpenCL también se

compone de un API que corre en la computadora anfitriona y hace posible el manejo y

control de objetos y código de OpenCL, así como lidiar con los dispositivos de

procesamiento viéndolos como unidades de procesamiento abstractas e independientes.

Sin embargo, se tiene que entender que OpenCL no proporciona los SDKs, estos son

proporcionados por la compañía correspondiente. Es decir, para el SDK de AMD tienes

que ingresar al portal oficial de AMD y descargar el SDK de OpenCL para AMD, de

igual forma para las tarjetas gráficas Nvidia OpenCL es un tema complejo. Programar la

aplicación más sencilla puede poner a prueba al desarrollador, ya que se necesita

comprensión sobre programación en un anfitrión, programación para dispositivos y los

mecanismos necesarios para transferir datos entre ambos. Sin embargo, si se logra

dominar un framework tan poderoso como este, es evidente el jugo que se le puede

sacar. Además, un framework con un soporte tan grande, de parte de tantos

distribuidores conocidos sencillamente brinda al programador la tranquilidad de que el

framework está desarrollado de manera correcta, utilizando estándares de la industria de

la tecnología de la información. Además de que es seguro de que los problemas serán

solucionados velozmente, por un grupo altamente calificado de desarrolladores.

OpenCL es un framework extremadamente robusto, que tiene una funcionalidad muy

extensa, imposible de describir completamente en un artículo como este. Sin embargo,

creemos que con lo descrito en el, alguien que desee conocer el funcionamiento general

y los objetivos de OpenCL puede hacerlo al leer el presente artículo. En general,

programar en OpenCL es cómo manejar un camión grande, de dieciséis llantas. Los

principios de manejar son los mismos, pero al tener tanta carga en la caja, se tiene que

lidiar y manejar pensando en muchas otras preocupaciones”.

27

Page 29: TAREA ACADEMICA

Tarea académica Microprocesadores

Oz es un lenguaje de programación el cual fue creado por Gert Smolka, junto con sus

estudiantes en el año de 1991. En 1996 el desarrollo de Oz fue continuado gracias al

grupo de investigación de Seif Haridi y Peter Van Roy en el Instituto Sueco de las

Ciencias Computacionales. Ésa versión fue conocida como Oz 2. A partir del año 1999

Oz, fue desarrollado por el grupo internacional conocido como el Consorcio Mozart. El

grupo fue conformado por la Universidad del Sarre, SICS, y la Universidad Católica de

Lovania. La implementación principal de Oz es el sistema Mozart, el cual fue liberado

bajo una licencia de código abierto, por lo tanto Mozart y Oz son software libre,

también conocido como open source. Actualmente Mozart implementa Oz 3, el cual

está basado en un modelo concurrente y con restricciones. Después de haber revisado y

analizado las diversas características del lenguaje se concluye que Oz posee diversas

características interesantes sobre el manejo de programas de forma concurrente, como

implementación de estructuras de datos complejas y esquemas de cómputo distribuido

que posiblemente han sido de cierta influencia en otros lenguajes de programación o

han tenido efecto en el desarrollo de varias bibliotecas que presentan muchas similitudes

con diversas características del lenguaje como manejo de estructuras de datos

concurrentes, siendo un ejemplo de ello Intel Threading Building Blocks.

Scala, un lenguaje de programación multiparadigma, como una opción atractiva para el

desarrollo de software paralelo. Está dirigido a personas con conocimientos de lenguaje

orientado a objetos y que tengan noción sobre programación concurrente y/o paralela.

Scala fue diseñado por Martin Odersky y liberado a finales del 2003 e inicios del

siguiente año. Los sistemas de tipo que utiliza son static, strong, structural e inferred.

Este lenguaje de programación fue influenciado por Eiffel, Erlang, Haskell, Java, Lisp,

Pizza, Standard ML, OCaml, Scheme y Smalltalk; y a la vez, ha influenciado a otros

como Fantom, Ceylon y Kotlin. Corre sobre las plataformas JVM y CLR (Common

Language Runtime). Para terminar este artículo con broche de oro no nos queda más

que comentar que la experiencia de trabajar con Scala por lo menos en dos ejemplos fue

bastante agradable.

28

Page 30: TAREA ACADEMICA

Tarea académica Microprocesadores

APLICACIONES

Los procesadores con varios núcleos son habituales en las configuraciones tanto de los

equipos de sobremesa como de los portátiles. Desde dos núcleos hasta seis, pasando por

tres y cuatro, tanto Intel como AMD han visto en ellos la fórmula para incrementar el

rendimiento de los PCs sin necesidad de aumentar la frecuencia de reloj de los

microprocesadores.

Multiprocesador y multinúcleo, parecido pero no igual

Estos dos términos se prestan a cierta confusión; sin embargo, aunque presentan cierta

similitud, no deben confundirse. Un sistema multiprocesador es aquel que tiene más de

un zócalo donde «pinchar» un procesador. A su vez, un procesador puede contener uno

o más núcleos, en cuyo caso se habla de procesador multinúcleo, o multi-core si se usa

el término anglosajón.

En ambos casos, se trata de configuraciones donde se emplea el paralelismo como

método para aumentar el rendimiento efectivo de un equipo, pero mediante estrategias

distintas. Los equipos multiprocesador encajan mejor en entornos empresariales, en los

que se necesita un nivel de paralelismo mayor que el que puede ofrecer un sistema con

un único procesador y varios núcleos. Por ejemplo, los sistemas Xeon de dos

procesadores pueden acomodar hasta 12 núcleos físicos y 24 núcleos en total

Paralelismo

Frente a estos impedimentos para el aumento del rendimiento a partir de un único

procesador, tanto Intel como AMD adoptaron la estrategia del paralelismo. Si en un

sistema con una sola CPU y un único núcleo las tareas en ejecución tenían que ir

alternando el uso de la CPU, en un sistema con varios procesadores y/o núcleos la

táctica consiste en repartir la ejecución de las tareas entre los distintos procesadores /

núcleos.

Este reparto de los recursos se realiza de forma automática por parte del sistema

operativo, que asigna prioridades a los procesos y servicios en ejecución, aunque de un

modo poco inteligente. Es decir, no hay una forma especial de asignar prioridades ni

29

Page 31: TAREA ACADEMICA

Tarea académica Microprocesadores

afinidades dependiendo de su relevancia para los usuarios. Por ejemplo, para el sistema

operativo un antivirus está en igualdad de condiciones que Office cuando se trata de

asignar recursos de procesador, pero también se podría intentar dar más recursos a una

aplicación si en determinadas circunstancias importa más finalizar una tarea dada

mientras las demás se siguen ejecutando con menos recursos.

Este tipo de personalización es posible usando tanto herramientas del sistema como

programas específicos para ello, como Ashampoo Core Tuner o AMD OverDrive. Estas

utilidades permiten asignar los distintos núcleos presentes en el sistema a diferentes

aplicaciones y procesos.

OverDrive es específica para procesadores de AMD y es todo un compendio de

tecnología dedicada a sacar el máximo partido a las CPUs. No obstante, Ashampoo

Core Tuner presenta problemas con el procesador Core i7 980X de 6 núcleos,

mostrando solo cuatro de ellos (ocho si se contabilizan los virtuales a partir de la

presencia de Hyper-Threading). Por su parte, OverDrive, en el caso de que tengas un

procesador AMD, sí presenta un funcionamiento impecable, con un completo sistema

para gestionar perfiles personalizados en los cuales se puede definir con precisión la

afinidad para cada aplicación que se esté ejecutando en el sistema.

En realidad, OverDrive contempla bastantes más apartados que el de la asignación de

núcleos a programas dependiendo de nuestras necesidades particulares, con una gestión

completa de los parámetros de velocidad de los núcleos, el voltaje, la memoria, etc. Pero

para el caso que nos ocupa, y suponiendo que tenemos un procesador de al menos

cuatro núcleos, la parte interesante es la que hace posible crear perfiles para las

aplicaciones en los cuales se asignan afinidades diferentes según el reparto que se quiera

hacer de los núcleos.

Así, se podría asignar a un programa como Photoshop la totalidad de los núcleos,

mientras que a un antivirus se le podría dejar uno solo. Al mismo tiempo, al Explorador

de archivos se le podría asociar con uno o dos núcleos, de modo que en caso de que se

«cuelgue» sea más sencillo hacerse con el control del sistema.

El disco adecuado

De poco vale tener el procesador más potente del mercado con seis núcleos, como es el

30

Page 32: TAREA ACADEMICA

Tarea académica Microprocesadores

caso del Intel Core i7 980X, y tener instalada una cantidad de memoria por debajo de 4

Gbytes con un disco duro lento. Lo que se gana con un procesador más potente se puede

perder si el resto de los componentes «frenan» al sistema.

Además, en un escenario multitarea lo más probable es que todas las aplicaciones hagan

uso del disco duro para leer y guardar datos. Esto supone un problema para los discos

magnéticos, por ejemplo, que se ralentizan enormemente frente al acceso múltiple desde

distintos procesos y aplicaciones simultáneas.

Por ello, uno de los primeros componentes que resulta interesante revisar para conseguir

aprovechar al máximo un sistema multinúcleo es el disco duro, que preferiblemente será

de tipo SSD, precisamente para minimizar el impacto negativo de los accesos múltiples

al disco. Las pruebas de rendimiento son incontestables.

Memoria: cantidad frente a velocidad

Otro de los componentes que hay que dimensionar correctamente es la memoria

principal. No se trata tanto de instalar la más rápida como de implantar una cantidad lo

más generosa que sea posible. Las aplicaciones usan la RAM preferentemente y, cuanta

más haya, menos necesidad hay de leer y escribir en un disco duro.

Eso sí, con una cantidad de RAM por encima de 4 Gbytes es interesante deshabilitar el

archivo de intercambio para reducir al mínimo el uso de los discos duros. Con 8 Gbytes

habrá más que suficiente para abordar las tareas y aplicaciones en un escenario

doméstico avanzado. Insistimos, no hace falta que sea la más rápida ni con las latencias

más agresivas, solo necesitamos que supere los 1.066 MHz

La placa base

En el caso de los procesadores AMD, la elección de una placa base es extremadamente

importante. La razón radica en el uso por parte de AMD de procesadores de cuatro y

seis núcleos físicos para comercializar productos etiquetados como de tres o cuatro

núcleos. Si se dispone de una placa base que permita desbloquear en la BIOS los

núcleos ocultos, se tiene la posibilidad de conseguir un sistema bastante más capaz a

partir de un procesador económico.

Utiliza la virtualización

Una de las mejores maneras de aprovechar al máximo las virtudes de un sistema

31

Page 33: TAREA ACADEMICA

Tarea académica Microprocesadores

multinúcleo es adoptar soluciones de virtualización. En esencia, se trata de hacer que un

mismo equipo físico sobre el que se instala un software de virtualización se vea de cara

al exterior como un conjunto de máquinas distintas.

Los ejemplos más habituales son la ejecución de Windows y Linux en una misma

máquina, o configurar aplicaciones que se ejecuten de manera independiente sobre una

máquina virtual. Los procesadores multinúcleo, junto con una cantidad de memoria

suficiente, permiten que el rendimiento global se incremente respecto al de sistemas

donde no se usan máquinas virtuales al aprovechar todo el potencial de rendimiento

disponible en el procesador.

Conexión a escritorio remoto

Si tienes un portátil, trabajas desde el salón de casa o el dormitorio y necesitas la

potencia del ordenador «grande», no tienes por qué dejar de estar delante del portátil. Si

estableces una conexión a escritorio remoto desde el laptop al PC podrás ejecutar

remotamente aplicaciones sin moverte de tu sillón.

Las únicas que presentan un comportamiento anómalo cuando se lanzan remotamente

son las de índole gráfica; pero, en general, no hay problema para trabajar con cualquier

programa instalado en el equipo remoto.

Las mayores ventajas se obtienen cuando esta conexión se realiza desde un equipo

portátil o incluso desde un móvil, puesto que, en esos casos, el portátil o el móvil se

comportarán «virtualmente» como si se tratase de un equipo de sobremesa, al cual se le

sacará un partido extraordinario al usarlo incluso cuando no se está delante de él

físicamente.

Existen distintas aplicaciones que facilitan la tarea de la conexión no solo dentro de la

misma red doméstica en casa, sino también desde cualquier ubicación remota donde

haya una conexión a Internet. Desde RDC en Windows o Conexión a Escritorio Remoto

en Mac, ambas de la propia Microsoft, hasta LogMeIn, que es una de las referencias en

esta área, permitiendo incluso establecer una conexión remota desde un móvil. De

especial interés es la conexión desde un smartphone con una pantalla de alta resolución,

como puede ser un iPhone 4 o un iPad.

32

Page 34: TAREA ACADEMICA

Tarea académica Microprocesadores

ORGANIZADOR TEMATICO

33

ARQUITECTURAS DE PROCESADORES MULTINUCLEO

BREVE HISTORIA

En los últimos veinte años el rendimiento en los procesadores se ha duplicado aproximadamente cada dos años

CONCEPTOSSOCKET : matriz de pequeños agujeros en la placa base donde encaja los pines del procesador.CACHE: actua como una memoria temporal en tre los registros de CPU.MMX : conjunto de instrucciones SIMD.SSE : extension al grupo de instruccion MMX.FSB : bus frontal de datos .

Antes de construir los procesadores multinucleo los fabricantes utilizaron tecnologías que simulaban esta, tenemos a continuación:Tecnologías empleadas por INTEL:• Hyper-Threading• Intel 64 Architecture• Bit de desactivación de ejecución y seguridadTecnologías empleadas por AMD:• HyperTransport• AMD 64• Bit NX

PROCESADORES MULTINUCLEO Las arquitecturas multinúcleo se refieren a microprocesadores que combinan dos o más núcleos independientes en un solo paquete ó circuito integrado,

procesadores Intel de escritorio:Pentium D:

Pentium Extreme Edition: Pentium 4 Prescott, Pentium Dual Core:

Intel Core 2 Duo: Intel Core 2 Quad:

procesadores AMD de escritorio:AMD Athlon 64 X2 Dual Core:

AMD Sempron:AMD Athlon 64:

AMD Athlon 64 FX: AMD Athlon X2 Dual Core

ARQUITECTURAS SIMD,MIMD,STM

SIMD :es un sistema en el que la misma instrucción manipula diferentes datos en paralelo

MIMD :es un sistema que tiene múltiples procesadores y capaz de trabajar independientemente y producir resultados para el sistema global

SMT dentro de un procesador superescalar fuera de orden ya hay mecanismos Hw para soportar la ejecución de más de un thread gran numero de registros físicos

PROGRAMACION MULTINUCLEOADA :un lenguaje de programación de alto nivel estructurado, con tipos estáticos, y orientado a objetosCHAPEL :es un lenguaje de programación paralelo emergente en el que su diseño y desarrollo está dirigido por Cray IncCILK :es un lenguaje algorítmico basado en múltiples threadsCURRY :es un lenguaje de programación universal, multi-paradigmatico, fuertemente tipado, con inferencia de tipos y tipado estático D :es un lenguaje de sistemas que surge como una mejora práctica de C++FORTRESS :debe su nombre a la idea de ser un Fortran seguro que provee fuerte abstracción y seguridad en tiposF# :es un lenguaje de programaci´on que opera sobre la plataforma .NET e incluye paradigmas como programación funcionalGO :es un lenguaje de programaci´on concurrente y compilado inspirado en la sintaxis de CIO :es un lenguaje de programaci´on orientado a objetos basado en prototipos, dinámico y fuertemente tipadoMODULA-3 :es un lenguaje miembro descendiente de la familia Pascal, es el sucesor inmediato de Modula-2+ OPENCL :es un lenguaje diseñado para utilizar cualquier procesador que se encuentre, ya sea CPU, GPUOZ :el cual está basado en un modelo concurrente y con restriccionesSCALA :un lenguaje de programación multiparadigma, como una opción atractiva para el desarrollo de software paralelo

APLICACION

PARALELISMO :en un sistema con varios procesadores y/o núcleos la táctica consiste en repartir la ejecución de las tareas entre los distintos procesadores / núcleos.EL DISCO ADECUADO :que preferiblemente será de tipo SSD, precisamente para minimizar el impacto negativo de los accesos múltiples al discoMEMORIA: cantidad frente a velocidad :no hace falta que sea la más rápida ni con las latencias más agresivas, solo necesitamos que supere los 1.066 MHzLA PLACA BASE :que permita desbloquear en la BIOS los núcleos ocultos, se tiene la posibilidad de conseguir un sistema bastante más capaz a partir de un procesador económico.UTILIZA LA VIRTUALIZACIÓN :se trata de hacer que un mismo equipo físico sobre el que se instala un software de virtualización se vea de cara al exterior como un conjunto de máquinas distintasCONEXIÓN A ESCRITORIO REMOTO :ventajas se obtienen cuando esta conexión se realiza desde un equipo portátil o incluso desde un móvil, puesto que, en esos casos, el portátil o el móvil se comportarán «virtualmente»

Page 35: TAREA ACADEMICA

Tarea académica Microprocesadores

34

Page 36: TAREA ACADEMICA

Tarea académica Microprocesadores

CONCLUSIONES

Todos creemos que un procesador con más de un núcleo aumentará su velocidad al

doble de lo que era, en parte aumenta la velocidad pero no a tal dimensión, también algo

muy importante es que el ahorro de energía aumenta considerablemente debido a que

entre más núcleos existan, la tarea que se esté procesando no aumentará la velocidad de

reloj por lo cual se reducirá el riesgo de un sobrecalentamiento. Hay que tener en cuenta

que aunque existan procesadores con 16 núcleos o más, que incluso se habló que podían

a llegar a ser 100, nosotros como usuarios simples jamás aprovecharíamos al máximo

esas características, sería más factible tratándose de grandes servidores.

35

Page 37: TAREA ACADEMICA

Tarea académica Microprocesadores

BIBLIOGRAFIA

Rodolfo jiménez cancino. “Análisis del Impacto de Arquitecturas Multi-núcleo en

Cómputo Paralelo”. Tesis de Especialización. Instituto Politécnico Nacional,

México, 2009.

Juan Alexander Peña Serna. Arquitectura de Procesadores Familias Intel y AMD,

Universidad Nacional de Piura, Perú ,2012.

El procesador: Aspectos Tecnológicos http://www.zator.com/Hardware/H3 1.htm

José Ignacio Alvarez Ruiz. “Microprocesadores multinucleo. Diseño de

procesadores y evaluación de configuraciones”. Universidad de Córdoba, Bolivia

2007.

36