Historia del procesador

Anuncio
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%
Descargar