Rubén Domínguez Falcón Curso 08/09 INTRODUCCIÓN .......................................................................................................... 3 HISTORIA ...................................................................................................................... 3 ESPECIFICACIONES DEL PROCESADOR ........................................................... 6 LA VELOCIDAD .............................................................................................................. 6 BUSES DEL PROCESADOR .............................................................................................. 6 El bus de datos.......................................................................................................... 6 El bus de direcciones................................................................................................ 6 Registros internos ..................................................................................................... 6 MEMORIA CACHE .......................................................................................................... 7 ORGANIZACIÓN DE LA CACHE ........................................................................................ 8 Mapeo directo........................................................................................................... 8 Mapeo totalmente asociativo.................................................................................... 8 Mapeo asociativo por conjuntos .............................................................................. 9 CARACTERÍSTICAS DEL PROCESADOR ............................................................. 9 SMM ( MODO DE GESTIÓN DEL SISTEMA)...................................................................... 9 EJECUCIÓN SUPERESCALAR ........................................................................................... 9 MMX ............................................................................................................................ 9 SSE SSE2 Y SSE3 ...................................................................................................... 10 EJECUCIÓN DINÁMICA ................................................................................................. 10 Predicción de salto Múltiple: ................................................................................. 10 Análisis del Flujo de Datos: ................................................................................... 11 Ejecución Especulativa: ......................................................................................... 11 ARQUITECTURA DE BUS DUAL INDEPENDIENTE............................................................ 11 HYPER-THREADING ..................................................................................................... 11 CONCLUSIÓN ............................................................................................................. 12 Introducción A lo largo de este documento hablaremos de la evolución que han sufrido los procesadores desde sus comienzos hasta la actualidad. Comentaremos también las principales características de un procesador así como algunas de las técnicas que se han usado para optimizar el rendimiento de estos. Historia La historia de los microprocesadores comienza en 1971 cuando Intel lanza al mercado su 4004, en un principio se creo como un chip para calculadoras para una compañía Japonesa, luego gracias a que era programable se le encontraron otras utilidades, como semáforos o analizadores de sangre. Era un procesador que corría a una velocidad de 108 Khz., tenía un bus de datos de 4 bits y era capaz de gestionar 640 bytes de memoria. En abril de 1972 Intel saco al mercado el 8008 con una frecuencia de reloj inicial de 200 Khz.(0.2Mhz.).Este procesador contenía 3500 transistores integrados. La gran diferencia con respecto al 4004 fue la ampliación de su bus de datos, de 4 a 8 bits., y era capaz de gestionar 16Kb de memoria. El siguiente chip en la línea de evolución de Intel fue el 8080, que aparece ene l mercado en Abril de 1974. Corría a una velocidad inicial de 2Mhz., tenía un bus de datos de 8 bits y podía gestionar 64Kb de memoria. Con este procesador comenzó la carrera por la creación del ordenador personal (PC). MITS uso este procesador para construir el primer intento de PC, el Altair 8800. Una curiosidad es que el primer sistema operativo de Microsoft fue escrito para esta maquina, el Microsoft BASIC para Altair. Sin embargo el 8080 no era el procesador más popular por aquel entonces. Intel no gozaba aun del prestigio que tiene hoy en día y una compañía (Zilog) formada por ex ingenieros de Intel fabricó un clon del 8080 con características muy similares a este pero de menor coste, lo que lo convirtió en el procesador de moda. Dos años más tarde Intel lanza al mercado el 8085 mejorando las características del 8080 en un intento de mejorar su popularidad, sin embargo no surtió efecto y el Z-80 de Zilog continuo siendo más popular. En otra linea de arquitectura MOS Technologies introduce en 6502. Un procesador bastante similar al 8080 pero muchísimo más económico que acabo convirtiéndose en el procesador usado para los primeros ordenadores de Apple. Este procesador también fue usado en consolas como la NES. En Junio de 1978 Intel saca al mercado el 8086 y con el da un giro a la línea que llevaba hasta ese entonces. EL 8086 se convirtió en el primer procesador de 16 bits, tenia registros internos de 16 bits, un bus de datos de 16 bits y era capaz de gestionar 1Mb de memoria. Corría a una velocidad inicial de 5Mhz. y llevaba 29000 transistores integrados. Con el nació también el conjunto de instrucciones X86, que se encuentra presente aun en los procesadores actuales. Aunque el 8086 era un gran chip, era demasiado caro para la época, el hecho de que tuviese un bus de 16 bits encarecía su producción y hacia que las placas de la época fuesen obsoletas para él, por lo que era necesario modificar las placas a la hora de usar este procesador. A la vista de estas consecuencias, Intel decidió lanzar al mercado una versión simplificada del 8086,el 8088. Este nuevo procesador tenia las mismas características que su predecesor, pero el bus de datos fue limitado a 8 bits, con lo que se consiguió un abaratamiento de su coste. A la vista de esto IBM eligió este ultimo procesador para fabricar el que se convertiría en el primer PC de la historia. En 1985 Intel vuelve a cambiar su línea de arquitectura con la fabricación del 386, el primer procesador del mercado con registros internos de 32 bits, con una velocidad inicial de 33Mhz. y capaz de gestionar 4Gb de memoria. En los últimos años hemos visto otro avance en la arquitectura de los procesadores con la aparición de los procesadores de 64 bits, el problema es que aún no hay software para este tipo de procesadores, se tardaron 16 años en sentar bien las bases de los procesadores de 32 bits, ahora se abren de nuevo las puertas a una nueva tecnología y habrá que desarrollar sistemas que hagan buen uso de ella. Últimamente han empezado a salir al mercado procesadores de doble núcleo, consistentes en dos núcleos integrados dentro del mismo chip, con ello se consigue la ejecución simultanea de varias aplicaciones siempre y cuando el sistema operativo sea multitarea e incluso la ejecución en paralelo de una sola aplicación, si esta se puede paralelizar. En el siguiente esquema podemos ver una línea del tiempo con la evolución de los distintos procesadores de Intel. Como vemos en un recorrido de poco menos de 40 años hemos pasado de una arquitectura de 8 bits a una de 64, hemos conseguido gestionar desde 1 MB del 8086 a los 4 GB que puede gestionar cualquier procesador actual y hemos visto como el número de transistores se ha incrementado exponencialmente, pasando de los 29000 del 8086 a los 233 millones de transistores que puede tener un dual core. Sin duda el avance ha sido extraordinario, y promete seguir siéndolo mientras el silicio de oportunidad a ello. Especificaciones del procesador Podemos definir 3 características esenciales en un microprocesador que son su velocidad, sus buses, y sus memoria. La velocidad Es un parámetro simple, se mide en Mhz o Ghz e indica millones o miles de millones de ciclos por segundo respectivamente. No nos sirve para comparar un procesador con otro, puesto que a la hora de comparar el rendimiento hemos de tener en cuenta la arquitectura en la que nos basamos, por ejemplo un 286 a 133Mhz nunca tendrá mejor rendimiento que un Pentium a 75Mhz Buses del procesador Existen 3 tipos de buses elementales en la estructura de un procesador, el bus de datos , el bus de direcciones y los registros internos. El bus de datos Es el encargado de controlar la entrada o salida de los datos al procesador Su tamaño y velocidad definen la tasa de transferencia de los datos. cuanto mayor sea su tamaño, mayor cantidad de datos podrán ser transferidos en una unidad de tiempo. En los procesadores actuales su tamaño esta entre los 64 y 128 bits El bus de direcciones Es el encargado de llevar la información que nos indica la posición de memoria donde el dato va a ser enviado o de donde debe ser recuperado. EL tamaño del bus de direcciones indica la cantidad máxima de memoria que podemos tener. Si el tamaño del bus es “n”, podemos tener una memoria de tamaño máximo dos elevado a n. En los procesadores actuales su tamaño oscila entre los 32 y los 40 bits Registros internos El tamaño de los registros internos indica con cuanta información puede trabajar el procesador en una unidad de tiempo. El tamaño de los registros nos indica el tipo de instrucciones con las que puede trabajar el procesador, por ejemplo un procesador con registros internos de 32 bits puede manejar instrucciones de 32 bits, cosa que uno con registros de 16 bits no podría. También es el encargado de decirnos frente a que tipo ce procesador nos encontramos. La mayoría de los procesadores actuales son aun de 32 bits, aunque aparecen cada vez mas procesadores de 64 bits. Memoria Cache Es una memoria muy rápida que hace de puente entre el procesador y la memoria RAM para evitar la pérdida de ciclos que se produce al tener que buscar un dato en RAM. La función de esta memoria es almacenar los datos con los que el procesador esta trabajando, de manera que si se demanda un dato por parte del procesador este lo busca en la memoria cache, si lo encuentra , se produce un acierto y el procesador obtiene el dato pedido, en caso de no encontrarlo se produce un fallo y es necesario buscar el dato en el siguiente nivel de memoria. Existen tres niveles de memoria cache Cache de nivel 1 Esta memoria se encuentra presente en todos los procesadores desde el 486, se encuentra integrada en el núcleo del procesador y trabaja a la misma velocidad que este de modo que los accesos a ella no producen ningún retraso. Cache de nivel 2 En un principio esta cache se encontraba situada fuera del procesador, pero con la intención de hacer los accesos a ella más rápidos se introdujo también dentro del chip, aunque a diferencia de la cache de nivel uno esta no se encuentra integrada en el núcleo del procesado y es de mayor tamaño. Sí existe penalización de tiempo al acceder a esta memoria, pero su tiempo de acceso en comparación al de la RAM es mínimo. Cache de nivel 3 Este tercer nivel de memoria suele encontrarse fuera del procesador, y actúa de intermediario entre la cache de nivel 2 y la memoria principal. La penalización al acceder a esta memoria es mayor puesto que se encuentra fuera del procesador, pero su velocidad de transferencia continua siendo mayor que la de la memoria principal. Organización de la cache No podemos mantener en cache todos los datos disponibles, por tanto hemos de buscar un método que nos permita saber que datos están en cache y a que posición de memoria corresponden. Para ello guardamos en una parte de la cache llamada Tag Ram las direcciones de memoria de los datos que se encuentran en esta. Existen tres procesos para gestionar esta zona de memoria. Mapeo directo A cada posición de memoria principal le corresponde únicamente una posición en cache. Las ventajas de este método son que su implementación es mas sencilla y que los accesos son más rápidos, pero por otro lado existe la posibilidad de que a dos bloques de memoria principal les corresponda la misma posición en memoria, y si estuviésemos continuamente accediendo a datos de estos dos bloques, la tasa de fallos se incrementaría muchísimo. Mapeo totalmente asociativo. A una dirección de memoria le corresponde cualquier posición en el Tag RAM. La ventaja es que ahora los datos no tienen que competir por estar en una posición determinada, pueden colocarse en cualquier lugar, y el uso de la cache se vuelve mas eficiente, no tendrían porque dejarse huecos vacíos como podía suceder en el caso de la anterior pero a la hora de comprobar si un dato se encuentra, hemos de acceder a todas las líneas a la vez y comprobar si se encuentra en alguna y el circuito para realizar esta operación es más costoso. Mapeo asociativo por conjuntos Es un híbrido entre las dos anteriores, la Tag se divide en una serie de conjuntos y a cada conjunto a su vez se divide en un numero de líneas . A cada página de memoria se le asigna un conjunto, y dentro de ese conjunto se organiza de manera asociativa Características del procesador A lo largo del tiempo buscando una mayor eficiencia de los procesadores se han ido añadiendo nuevas características a las implementaciones de estos, en esta sección vamos a hablar un poco de algunas de ellas SMM ( modo de gestión del sistema) Es un circuito que se incorporo pensando en los ordenadores portátiles, permite al procesador controlar el uso de energía y alargar la vida de la batería. Esta integrado dentro del chip, pero opera de forma independiente para controlar el uso de energía del procesador en función de su nivel de actividad. Ejecución superescalar Es la capacidad que tiene un procesador para ejecutar varias instrucciones durante un mismo ciclo. En un procesador superescalar, el procesador maneja más de una instrucción en cada etapa. El número máximo de instrucciones en una etapa concreta del pipeline se denomina grado, así un procesador superescalar de grado 4 en lectura (fetch) es capaz de leer como máximo cuatro instrucciones por ciclo. El grado de la etapa de ejecución depende del número y del tipo de las unidades funcionales. MMX Esta tecnología se incorporo a partir del primer Pentium y su función era agilizar las operaciones con archivos multimedia ( compresión y decomprensión de video, manipulación de imágenes ...) para ello introdujo 2 nuevas características en el procesador: Un aumento el tamaño de la cache de nivel 1 del cual carecían los procesadores que no fuesen del tipo MMX La Incorporación de 57 nuevas instrucciones diseñadas especialmente para el tratamiento de archivos multimedia. SSE SSE2 y SSE3 SSE (Streaming SIMD Extensions) es una extensión al grupo de instrucciones MMX para procesadores Pentium III. Las instrucciones SSE son especialmente adecuadas para decodificación de MPEG2 , procesamiento de gráficos tridimensionales y software de reconocimiento de voz.. En febrero de 2001, AMD agregó esta tecnología en su procesador Athlon XP. Estas instrucciones operan con paquetes de operandos en coma flotante de precisión simple(FP). 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, los microprocesadores x86 fueron dotados de setenta nuevas instrucciones y de ocho registros nuevos: del xmm0 al xmm7. En noviembre de 2000 junto con el Pentium 4 se lanza una nueva actualización que incluye 144 instrucciones nuevas y se le conoce como SSE2 En febrero de 2004 aparece la SSE3 que aporta 13 instrucciones mas. Ejecución dinámica La Ejecución Dinámica es una ra combinación de tres técnicas de procesamiento diseñada para ayudar al procesador a manipular los datos más eficientemente. Éstas son la predicción de salto múltiple, el análisis del flujo de datos y la ejecución especulativa. La ejecución dinámica hace que el procesador sea más eficiente manipulando datos en lugar de sólo procesar una lista de instrucciones. La forma en que los programas de software están escritos puede afectar al rendimiento del procesador. Por ejemplo, el rendimiento del software será afectado negativamente si con frecuencia se requiere suspender lo que se está haciendo y "saltar" a otra parte en el programa. También pueden producirse retardos cuando el procesador no puede procesar una nueva instrucción hasta completar la instrucción original. La ejecución dinámica permite al procesador alterar y predecir el orden de las instrucciones. La Ejecución Dinámica consta de: Predicción de salto Múltiple: Predice el flujo del programa a través de varias ramificaciones: mediante un algoritmo de predicción de salto múltiple, el procesador puede anticipar los saltos en el flujo de las instrucciones. Análisis del Flujo de Datos: Analiza y ordena las instrucciones a ejecutar en una sucesión óptima, independiente del orden original del programa: mediante el análisis del flujo de datos, el procesador observa las instrucciones de software decodificadas y decide si están listas para ser procesadas o si dependen de otras instrucciones. Entonces el procesador determina la sucesión óptima para el procesamiento y ejecuta las instrucciones en la forma más eficiente. Ejecución Especulativa: Aumenta la velocidad de ejecución observando las instrucciones posteriores al contador de programa y ejecutando las instrucciones que posiblemente van a necesitarse. Arquitectura de bus dual independiente Consiste en tener 2 buses de datos, uno para la transferencia entre el procesador y la placa (FSB) y el otro para la cache de nivel 2 Esto elimina el cuello de botella que se producía en el bus de datos. Cada bus tiene su propia velocidad, el FSB va a la velocidad de la placa mientras que el bus de la L2 va a la velocidad del procesador lo que permite una mayor velocidad a la hora de llevar datos al procesador Hyper-threading Permite a un procesador mono-núcleo trabajar como si se tratase de un procesador con dos núcleos, es decir convierte un procesador físico en 2 procesadores virtuales. Internamente habría 2 conjuntos de registros de propósito general,de registros de control, pero ambos procesadores lógicos compartirían la misma cache, la mima unidad de ejecución y los mismos buses . Si bien no alcanza la mejora de un dual core autentico se puede conseguir un aumento de hasta el 25 % de la velocidad Conclusión Hemos hecho un recorrido a lo largo de los 37 años de historia de los procesadores, viendo su evolución y comentando sus características mas importantes. Hemos definido las principales características de un procesador, como son su velocidad o sus buses, y como estos afectan de manera directa a la eficiencia de nuestro sistema, por ejemplo en el caso del bus de direcciones que nos limita la capacidad de memoria de la que disponer o la ubicación y tipo de organización de la cache, que nos hace mass o menos productivo nuestro sistema. Y por último hemos comentado algunas de las características añadidas a nuestros procesadores con la intención de hacerlos mas eficientes. Si bien estas características ya se encontraban presentes en los supercomputadores de los años setenta, hemos conseguido reducirlas al tamaño de un procesador actual. Preguntas Test: 1-) El primer procesador de 16 bits fue: a-) El 8085 y era capaz de gestionar 1 Mb. de memoria b-) El 8086 y tenia un bus de datos de 16 Bits c-) El 8088 y tenia un bus de datos de 8 Bits 2-) El Intel 8088 era un procesador...: a-) Con las mismas características que el 8086 pero con registros internos de 8 bits b-) Con las mismas características que el 8086 pero capaz de gestionar hasta 4 Mb. de memoria c-) Con las mismas características que el 8086 pero con un bus de datos de 8 bits 3-) El primer procesador de 32 bits del mercado fue: a-) el 386 b-) el 486 c-) el 286 4-) La velocidad de un procesador indica... a-) Numero de operaciones por ciclo b-) Número de operaciones por segundo c-) Número de ciclos por segundo 5-) Si tenemos un bus de datos de 64 bits podemos afirmar que: a-) Nuestro procesador es de 64 bits b-) que la transferencia de datos desde/hacia el procesador es de 64 bits c-) Que podemos ejecutar instrucciones de 64 bits 6-) El bus de direcciones es importante por a-) Nos indica la cantidad de memoria que podemos tener b-) nos limita la velocidad a la que se calculan las posiciones de memoria c-) ambas son verdaderas 7-) Si tenemos un procesador de 32 bits podemos gestionar hasta un máximo de memoria de : a-) 2 x 32 b-) 232 c-) 322 8-) De un procesador que tiene registros internos de 32 bits podemos afirmar que : a-) Es un procesador de 32 bits b-) Que puede trabajar con instrucciones de 32 bits c-) todas las anteriores son ciertas 9-) Los accesos a la cache L1: a-) no conllevan penalización b-) conllevan una penalización similar a la L2 c-) Conllevan una penalización alta pero rentable en comparación con la de RAM 10-) Una de las desventajas del mapeo directo de memoria es que : a-) Puede darse el caso de que aumente mucho la tasa de fallos b-) Es demasiado caro de implementar c-) Ambas son falsas 11-) El mapeo totalmente asociativo: a-)Es un sistema de gestión en donde un dato puede ubicarse en cualquier dirección de la cache b-) Es muy costoso por lo que no suele implementarse mucho c-) Ambas son verdaderas 12-) La ejecución dinámica es una técnica que permite: a-) La manipulación de los datos para ejecutar un código de forma mas eficiente b-) Que se ejecuten múltiples fragmentos de código a la vez c-) El uso de punteros en ensamblador 13-) Los SSE son: a-) Actualizaciones para la mejor gestión del firewire b-) Instrucciones para el manejo de vectores c-) Actualizaciones para las instrucciones MMX 14-) El Altair 8800 fue construido con el procesador a-) 8086 b-) 8008 c-) 8080 15-) El primer ordenador personal de IBM fue construido con el procesador a-)80386 b-) 8088 c-) 80286 16-) La ejecución especulativa consiste en: a-) Ejecutar todas las instrucciones posteriores a un salto b-) Predecir siempre salto no tomado c-) Ejecutar instrucciones posteriores al contador de programa que posiblemente van a necesitarse 17-) En un procesador con hyper-Threading la memoria cache a-) Es compartida b-) se divide en dos partes iguales c-) se duplica 18-) La ejecución superescalar es: a-) La capacidad que tiene un procesador para ejecutar varias instrucciones en el mismo ciclo b-) La capacidad de ejecutar varias instrucciones al mismo tiempo c-) La capacidad de gestionar un cauce de ejecución 19-) La tecnología MMX se usa para: a-) Gestionar de manera mas eficiente las operaciones en coma flotante b-) Agilizar las operaciones con archivos multimedia c-) Corregir fallos en las operaciones de lectura a memoria 20-) EL hyper-Threading permite: a-) Que un procesador mononúcleo trabaje como un multinúcleo b-) La ejecución paralela de múltiples hilos c-) Aumentar el rendimiento del procesador un 80%