11 noviembre 2010

Tema 2. Arquitectura de procesador Intel Core i7

                 Intel Core i7 es una familia de procesadores de cuatro núcleos de la arquitectura Intel x86-64. Los Core i7 son los primeros procesadores que usan la microarquitectura Nehalem de Intel y es el sucesor de la familia Intel Core 2. El identificador Core i7 se aplica a la familia inicial de procesadores con el nombre clave Bloomfield. Esta nueva generación de procesadores refleja los recientes e importantes avances en tecnología de Intel.

                Los procesadores Core i7 están basados en la micro-arquitectura Intel Nehalem. Cado uno de estos chips ofrece cuatro núcleos y velocidades que van de los 2,66GHz a los 3,20GHz. Algunos de estos procesadores forman la serie Extreme Edition, como el Core i7 965 Extreme Edition tiene una velocidad de 3,20GHz y tecnología QPI (QuickPath Interface) de 6,4GT/s que es su principal diferenciador.

10 noviembre 2010

Tema 2. Utilización del multithreading en las arquitecturas para gráficos y multimedia



                   El multhreading es la capacidad del Sistema Operativo de ejecutar las diferentes partes de un programa (threads o hilos) simultáneamente. En sistemas operativos, un thread es similar a un proceso en que ambos hilos representan una secuencia simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos nos permiten dividir un programa en dos o más tareas que corren simultáneamente, por medio de la multiprogramación.

                    Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde de manera más ágil a la interacción con el usuario. También pueden ser utilizados por una aplicación servidora para dar servicio a múltiples clientes.


07 noviembre 2010

Tema 2. Predictores de salto multinivel y adaptativos


                 El pipelining ofrece una gran ventaja aumentando la velocidad del procesador, pero desafortunadamente, la presencia de instrucciones de saltos condicionales en el programa en ejecución reduce fuertemente este aumento de la capacidad de procesamiento.

                 Esto se debe a que los saltos condicionales se resuelven (el salto es tomado o no) en las últimas etapas. Si el salto se realiza, debe vaciarse la mayoría de las etapas del pipeline, y completarse nuevamente con las instrucciones que siguen a la de la dirección de salto, lo cual significa una pérdida de tiempo. Esta pérdida de beneficio en el pipeline se realiza cada vez que un salto condicional ingresa al procesador, es decir por cada salto dinámico del código en ejecución. En el caso de los saltos incondicionales, no existe este problema, dado que se conoce de antemano la dirección de salto y no existe duda alguna de que éste será tomado. Sin embargo, el hardware del microprocesador debe identificar este tipo de instrucciones antes de que ingresen a la etapa DECODE. Para reducir la pérdida de eficacia del pipeline ante la presencia de saltoscondicionales se introdujo el concepto de Predicción de Salto (Branch Prediction).


05 noviembre 2010

Tema 2. Funcionamiento de los algoritmos de Pizarra y Tomasulo, con códigos ejemplo

Algoritmo de Tomasulo

                 Para reducir al máximo el número de paradas por riesgos estructurales y de datos, la planificación dinámica reordena las instrucciones en tiempo de ejecución. La emisión de instrucciones sigue en orden, pero permite la lectura de operandos y la ejecución fuera de orden. Existen para ello diferentes algoritmos de planificación, aunque casi todos derivan de los dos más conocidos:

- Algoritmo de la Pizarra
- Algoritmo de Tomasulo


Algoritmo de Pizarra

                El algoritmo de Pizarra es un método centralizado para programar dinámicamente un pipeline, de modo que las instrucciones se puedan ejecutar fuera de orden cuando no hay conflictos y el hardware está disponible. En una pizarra, las dependencias de datos de todas las instrucciones se registran. Las instrucciones se ponen en marcha sólo cuando la pizarra determina que no hay conflictos con instrucciones previamente manejadas o incompletas. Si una instrucción se detiene porque es inseguro continuar, la tabla monitorea el flow de las instrucciones ejecutándose hasta que todas las dependencias se hayan resuelto antes de que se maneje la instrucción parada.

04 noviembre 2010

Tema 2. Técnicas de resolución de riesgos en procesadores segmentados utilizando como ejemplo la arquitectura MIPS




             Haciendo bueno el dicho del gran emperador romano Julio César, "Divide y Vencerás", seguiremos su táctica de conquista para abordar este tema. Comentaremos primero qué es la segmentación, para pasar luego brevemente por los procesadores MIPS y, finalmente, terminaremos explicando con los riesgos de procesadores segmentados y las soluciones posibles.

La segmentación y sus problemas


              A finales de los años 90 aparecieron en el mundo de la informática los llamados microprocesadores supersegmentados. Estos microprocesadores se caracterizan por utilizar pipelines muy segmentadas, para tratar de alcanzar frecuencias lo más altas posibles. Los microprocesadores no ejecutan instrucciones “de una vez”, sino que dividen el proceso de ejecución en varias partes, que son ejecutadas una detrás de otra. Esto se llama “pipelining” y es un principio usado en muchos campos de la informática, como el envío de paquetes en redes, la ejecución de instrucciones en procesadores… Para ilustrar esta idea, podemos poner el ejemplo de una manzana. Imaginemos que una persona quiere comerse una manzana. Podríamos ver esta acción como una serie de pasos que deben realizarse en orden: primero se lava la fruta, luego se pela la piel, después se corta la manzana en partes más pequeñas, y finalmente se comen los trozos.


03 noviembre 2010

Tema 2. Diferencias entre arquitecturas y repertorios de instrucciones RISC y CISC


             Una arquitectura define el modo de trabajar del microprocesador, el repertorio de instrucciones y cómo estas se implementan en la práctica. RISC y CISC son dos arquitecturas para microprocesadores.

             Los CISC (Complex Instruction Set Computer) pertenecen a la primera corriente de construcción de procesadores, antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la familia Intel x86 usada en la mayoría de las computadoras personales del planeta. La utilización del término CISC comenzó tras la aparición de los procesadores RISC como nomenclatura despectiva por parte de los defensores/creadores de éstos últimos.

              Las arquitecturas CISC, tienen repertorios de instrucciones mucho más complicados que se traducen en diseños de la ruta de datos mucho más complejos, su conjunto de instrucciones se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones.


TEMA 2: Arquitectura de procesadores



a. (B) Diferencias entre arquitecturas y repertorios de instrucciones RISC y CISC.

b. (B) Explicación en detalle de las técnicas de resolución de riesgos en procesadores segmentados utilizando como ejemplo la arquitectura MIPS.

c. (E) Explicación en detalle del funcionamiento de los algoritmos de Pizarra y Tomasulo utilizando códigos ejemplo.

d. (B) Explicación en detalle de los predictores de salto multinivel y adaptativos.

e. (E) Explicación en detalle del funcionamiento de Tomasulo Especulativo.

f. (B) Utilización del multithreading en las arquitecturas para gráficos y multimedia.

g. (B) Análisis de una arquitectura de procesador de los dos últimos años diferente de las vistas en clase.

h. (B) Análisis de una arquitectura de GPU de los dos últimos años diferentes de las vistas en clase.

i. (E) Comparación exhaustiva de ambas arquitecturas.

j. (E) Modelos de programación de GPUs, comparación con los modelos tradicionales de CPUs, etc.

k. (E) Programación de GPUs con Cg.

l. (E) Programación de GPUs con CUDA.