06b y 04a Microprocesadores 20201
06b y 04a Microprocesadores 20201
06b y 04a Microprocesadores 20201
Unidad nro 6b y 4a
Microprocesadores
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Junio 1978: lanzamiento del primer procesador x86, el 8086 de 16 bits. Un Año más
tarde se lanzó el Intel 8088.
Febrero 1982: se lanza el Intel 286 (80286) a 8 MHz. Utiliza modo protegido.
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Abril 1989: Intel anuncia el 486. Pipeline, Caché L1 y unidad de punto flotante
integrados.
Marzo 1992: el 486 DX2 es el primer procesador x86 con multiplicador de reloj. El
bus funcionaba hasta 33 MHz, pero el procesador a 66 MHz.
Marzo 1993: se lanza el Intel Pentium a 66 MHz. Diseño superescalar con dos
pipelines, Bus de 64 bits, unidad de punto flotante poderosa y cachés
independientes.
Noviembre 1995: se introduce la arquitectura P6 del Pentium Pro que más tarde
formaría parte del Pentium II y el Pentium III. Híbrido RISC y Pipelines profundos.
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Mayo 1997: Intel anuncia el Pentium II 300. Instrucciones MMX y doble Bus
Independiente.
Febrero 1999: Intel anuncia el Pentium III a 500 MHz. Instrucciones vectoriales SSE.
Noviembre 2001: Arquitectura Netburst del Intel Pentium 4 a 1500 MHz. Baja latencia
de cache y alta frecuencia gracias a un muy profundo pipeline.
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Abril 2003: AMD Opteron a 1,8 GHz, Arquitectura K8. Controlador de memoria
incorporado en el microprocesador.
Septiembre 2003: AMD Athlon 64. El primer X86 de 64 Bits para escritorio.
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Mayo 2005: Procesador Pentium D de doble núcleo basado en dos Pentium 4 unidos
por un bus. Frecuencia reducida de 3.2 GHz por alto consumo de Watts.
Julio 2006: Intel lanza el Core 2 Duo 6400 a 2130 MHz. Primer Procesador de doble
núcleo real de Intel con nueva Arquitectura hibrida. Bus de Pentium 4 y núcleo de
Pentium M (El Pentium M fue un procesador móvil basado en el Pentium III). Diseño
de núcleo con mayor cantidad de unidades de ejecución. Pipeline de 14 etapas. Tres
ALU’s, cuatro FPUs y tres unidades SSE de 128 bits. Menor consumo de Watts que
la arquitectura Netburst del Pentium 4.
Noviembre 2006: Intel lanza el Core 2 Quad. Procesador de cuatro núcleos basado
en dos Core 2 Duo que comparten el bus de datos y la memoria caché.
Jorge Echevarría
Reseña histórica de los microprocesadores x86
Diciembre 2009: Intel lanza el Atom. Este procesador está basado en el viejo
Pentium y fue especialmente diseñado para computadoras ultra portátiles como las
netbooks. Incluido en algunos Smartphones en el 2012.
Enero 2011: Intel lanza la segunda generación de Core i7 llamada Sandy Bridge con
tecnología de transistores de 32 nm. Este procesador alcanza una frecuencia de
3,4GHz y mediante turbo 3.8 GHz y hay modelos de seis núcleos.
Abril 2012: Intel lanza la tercera generación de Core i7 llamada Ivy Bridge con
tecnología de 22 nm. Alcanza los 3.5 GHz y 3.9 GHz con turbo.
Hasta 2020 se han producido procesadores de la línea Core de Intel con evoluciones
y mejoras continuas de dicha arquitectura.
Jorge Echevarría
Tabla histórica
Procesadores Intel 1979-2005
Fecha Número de Frecuencia MIPS
Transistores (Mhz)
8088 Junio 1979 29.000 4.77 Mhz 0,33
286 Febrero 1982 134.000 8 Mhz 1,2
386 Octubre 1985 275.000 16 Mhz 6
486 Abril 1989 1.2 millones 25 Mhz 20
Pentium Marzo 1993 3.1 millones 66 Mhz 117
Pentium Pro Noviembre 1995 5.5 millones 200 Mhz 689
Pentium II Mayo 1997 7.5 millones 300 Mhz 1035
Pentium III Febrero 1999 9.5 millones 500 Mhz 1723
Pentium 4 Noviembre 2000 44 millones 1500 Mhz 3935
P4B HT Noviembre 2002 55 millones 3060 Mhz 8769
P4E 570 Noviembre 2004 125 millones 3800 Mhz 11121
Pentium D 840 Abril 2005 230 millones 3200 Mhz 17427
Jorge Echevarría
Tabla histórica
Procesadores Intel 2005-2012
Core i7
noviembre 2008 731 millones 3200 Mhz 90750 45
Nehalem
Core i7 Sandy
enero 2011 995 millones 3400 Mhz 130550 32
Bridge
Core i7 Ivy
abril 2012 1400 millones 3500 Mhz 144820 22
Bridge
Jorge Echevarría
Unidad de control (UdC o CU)
Jorge Echevarría
Unidad de Control o UdC
Es uno de los componentes del CPU, junto con los registros y las unidades de
ejecución (ALU, FPU, SIMD, etc).
Jorge Echevarría
UdC
Cada instrucción pasa por su ciclo de instrucción desde que se busca la instrucción
hasta que se ejecuta. El ciclo es Búsqueda, Decodificación, Búsqueda de operandos
y ejecución.
Jorge Echevarría
UdC
Jorge Echevarría
UdC
Jorge Echevarría
UdC – Ejecución de microinstrucciones
Ejecución de una microinstrucción en una UdC
microprogramada
Ciclo de Instruction
Instrucción 1 Fetch
0000101010110
CALC.EXE INC AX
Microinstrucción
Ciclo de Instruction 1
Ejecución del Instrucción 2 Decode
programa 1111101011001
Microinstrucción
Operand 2
Fetch
1011010110000
INT 20h Microinstrucción
Execution
Ciclo de n
Instrucción
IF=1
m
Interruption
Jorge Echevarría
Formato de una instrucción
Jorge Echevarría
Recordemos el funcionamiento básico, ahora en más profundidad:
Cuando la computadora arranca se lee el BIOS que carga las primeras
instrucciones que buscan programas del sistema operativo almacenado en el disco
y los cargan en memoria principal. Luego alguna unidad de memoria secundaria,
como ser un disco rígido, provee un programa cuyas instrucciones pasarán a
través de buses hacia la memoria principal.
El microprocesador o CPU contiene un registro llamado contador de programa que
contiene la dirección de la próxima instrucción que se va a ejecutar. Utilizando
dicha dirección, mediante el bus de direcciones, el CPU direcciona a memoria
principal, encuentra y se conecta con la celda donde se encuentra la instrucción.
Por otro lado, el CPU enviará órdenes a través del bus de control, si la orden es
una lectura, se copiará la instrucción leída en la celda de memoria direccionada
para que viaje a través del bus de datos hacia el registro de instrucción o IR del
CPU (Aquí termina la búsqueda). Posteriormente la Instrucción será decodificada.
La unidad de control del CPU decodificará la instrucción (del programa creado por
el programador) que se encuentra en el registro de instrucción del CPU (IR) e
interpretará que operación se ejecutará(microinstrucciones) mediante el código de
operación, esto es de la siguiente forma:
Al decodificar, para interpretar la instrucción, la CPU lee algunos bits de la
instrucción llamados código de operación, cop o codop y utilizándolo como
dirección de entrada ubica una celda en una memoria interna de la unidad de
control del CPU llamada memoria de control. Esa celda tiene como contenido las
microinstrucciones del set de instrucciones del fabricante del CPU.
Si la instrucción necesita un operando o dato (por ej una suma) se buscará en los
registros internos, en la memoria caché o se direccionará la memoria principal y a
través del bus de datos llegará un dato a un registro del cpu, como ser el AX.
(Búsqueda de operandos). Finalmente se ejecutarán las microinstrucciones.
Jorge Echevarría
Etapas del ciclo de instrucción
Con la dirección guardada en el registro Contador de
Programa (CP o IP), la Unidad de Control direcciona
(usando el Bus de direcciónes) la próxima instrucción en
Fetch o Búsqueda memoria principal. La instrucción encontrada en memoria
es copiada en el bus de datos y se almacena en el
Registro de Instrucción (IR). De acuerdo con el tamaño en
bytes de la instrucción aumenta el contador de programa.
En la última etapa del pipeline que vimos además de ejecutar la instrucción se guarda
el resultado. Muchos procesadores tienen una etapa individual llamada Escritura o
Retiro que específicamente guarda los datos en la memoria. Para lo cual se debe
calcular la dirección y almacenar el resultado accediendo a memoria.
Robo de Ciclo: el DMA (direct memory access) puede hacer transferencias a memoria
sin incomodar al procesador para que éste pueda seguir trabajando.
Jorge Echevarría
UdC – Ciclo de Interrupción
Ahora que ocurre si el usuario abre un nuevo programa o si ocurre un error? Hay un
mecanismo que permite que el procesador interrumpa lo que está haciendo para pasar
a hacer un nuevo proceso. Esto se denomina Interrupción y hay una etapa al final del
pipeline que evalúa si hay un pedido de interrupción y la prioridad que tiene.
Como las CPUs están diseñadas para ser interrumpidas durante la ejecución de sus
programas (y por consiguiente en cada una de sus instrucciones), existen mecanismos
para esta situación que generan una interrupción
Jorge Echevarría
Diagrama de Bloque del procesador Intel 80386
Jorge Echevarría
Los comienzos de la búsqueda de mayor
performance
Jorge Echevarría
El concepto de pipeline
Jorge Echevarría
El concepto de pipeline
Jorge Echevarría
Segmentación y Paralelismo
Jorge Echevarría
Diagrama de Bloque del procesador Intel 80486
Jorge Echevarría
Diagrama de Bloque del procesador Intel Pentium
Jorge Echevarría
Diagrama de Bloque del procesador ARM Cortex A8
Samsung Galaxy S
Motorola Milestone I y II
Motorola Defy
Jorge Echevarría
Problemas de Pipelines Profundos
Cuanto más etapas tiene un pipeline cada una realiza menos trabajo y el circuito
es más simple por lo que se puede elevar la frecuencia del procesador y así
aumentar la performance. Pero elevar demasiado el número de etapas lleva a
problemas.
Jorge Echevarría
Problemas de Pipelines Profundos
Jorge Echevarría
Técnicas de tratamiento de salto
Jorge Echevarría
Arquitecturas RISC y CISC
RISC (Reduced Instruction Set Computing)
Conjunto de instrucciones simples de longitud fija que hacen menos cosas en
poco tiempo. Ej: ARM, PIC, Power, Sparc, PA-RISC.
Jorge Echevarría
Performance del Microprocesador
Minimizar ( Fetch
TB + TD
Decode + O.Fetch
T Ej + TE
Execute )
Jorge Echevarría
Resultados del Pipelining
Eficiencia
Etapas del Frecuencia
del
Procesador Pipeline de Máxima MIPS
Predictor
enteros (Ghz)
(%)
Pentium 5 80 0,23 413
Pentium III 10 90 1 3446
Pentium 4 20 95-98 1,5 3935
AMD athlon XP 10 92 2,2 9142
Pentium 4C 20 95-98 3,4 10102
Pentium 4E 31 98-99 3,8 11121
50% 14%
Jorge Echevarría
Resultados del Pipelining
Eficiencia
Etapas del Frecuencia
del
Procesador Pipeline de Máxima MIPS
Predictor
enteros (Ghz)
(%)
Pentium 5 80 0,23 413
Pentium III 10 90 1 3446
Pentium 4 20 95-98 1,5 3935
AMD athlon XP 10 92 2,2 9142
Pentium 4C 20 95-98 3,4 10102
Pentium 4E 31 98-99 3,8 11121
50% 10%
Jorge Echevarría
Prueba de Laboratorio: Frecuencia
Intel Pentium 4 AMD Athlon 64
Aumento de Performance en Super Pi con Aumento de Performance en Super Pi con
Frecuencia Variable y Bus de 800 Mhz Frecuencia Variable y Bus de 800 Mhz
58
52
56
Tiempo del test (s)
Jorge Echevarría
Elementos de
arquitecturas RISC:
El P6
Primer núcleo híbrido RISC. Microops
7 ciclos
de tamaño fijo y renombramiento de
registros.
Jorge Echevarría
La arquitectura P6
Jorge Echevarría
La arquitectura P6
Jorge Echevarría
La arquitectura P6
Rendimiento
30% mayor.
Pentium P6
Jorge Echevarría
Nota:
Jorge Echevarría
Problemas en procesadores superescalares X86
Dependencias
La unidad de despacho no puede Solución: el análisis del flujo de
enviar la instrucción 2 a la unidad datos, la ejecución fuera de orden y
1. A=C*2 de ejecución adecuada hasta el uso de buffers.
2. B=A+2 que la variable A no este escrita
en algún registro.
Jorge Echevarría
Las instrucciones vectoriales
Paralelismo de procesamiento de datos. Se procesan Vectores.
compresión (cps)
MMX
35 31,2
Velocidad de
SSE
30
25
19,6
20
15
10
5
0
sin optimizar MMX SSE
Tipo de optimización
Jorge Echevarría
Multithreading e Hypertreading
Sistema Monoprocesador Sistema de Multiprocesamiento Simétrico
Jorge Echevarría
Performance con Hypertreading
Sistema con Hypertreading Aumento de Performance en Sisoft Sandra 2004 sp2b
con Hyperthreading en Pentium 4 a 2,8Ghz
9000
8577
8500 Con HT
Performance (MIPS)
8000 Sin HT
7500 7210
7000
6500
6000
5500
5000
Con HT Sin HT
Procesadores (Mhz)
Jorge Echevarría
El Nuevo Paradigma:
los Procesadores de dos Núcleos
Pentium D Athlon 64 X2
Jorge Echevarría
Rendimiento en procesadores
de dos núcleos
Windows Sisoft
3dsmax7 Media Primodia Sandra 2004 Xmpeg/DivX
(s) Encoder (s) Multimedia (fps)
(s) Int
Xeon Nocona (prescott 3,2 Ghz) 238 209 315,71 23887 57,6
Pentium D 840 (3,2 Ghz) 130 147 271,86 39183 77,1
Diferencia 83,07% 42,18% 16,13% 64,03% 33,85%
Multitarea real.
Jorge Echevarría
Los Problemas a partir de 2004
Jorge Echevarría
La Pérdida de energía
Jorge Echevarría
La disipasión térmica
Disipación de
proceso de
Número de Frecuencia energía
Procesador Fecha fabricacion
Transistores (Mhz) máxima
(nm)
(Watts/cm2)
Pentium Marzo 1993 3.1 millones 66 800 15,5
Pentium Pro Noviembre 1995 5.5 millones 200 600 - 350 37,9
Jorge Echevarría
Consecuencias del problema energético
Aumento de Performance de los procesadores X86
en los últimos 11 años
12000
10000 Frecuencia
MIPS
Performance
8000
6000
4000
2000
0
1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
Año
Jorge Echevarría
Consecuencias del problema energético
Aumento de Performance de los procesadores X86 El rendimiento continuó
aumentando gracias a la
160000
140000 implementación de mayor
120000 MIPS
cantidad de unidades de
Performance
100000
80000 decodificación, cálculo y
60000
40000
número de cores o núcleos.
20000 Aumentó la cantidad de
0
Instrucciones ejecutadas
Año
por ciclo de reloj (IPC).
Jorge Echevarría
3 decodif.
por ciclo de
3 decodif. reloj.
por ciclo de
reloj.
2 ALU y 2
FPU
2 ALU (SIU)
y 1 FPU
Intel Pentium 3
Jorge Echevarría
Diagrama de bloque del
Core i7 Sandy Bridge –
1 Core
Buffers más grandes.
Decodificación de cuatro
instrucciones por ciclo de reloj.
12 unidades de ejecución.
Jorge Echevarría
Diagrama de bloque
del Core i7 Skylake
(6700K) – 1 Core
Buffers más grandes.
Decodificación de cinco
instrucciones por ciclo de
reloj.
Jorge Echevarría
Diagrama de bloques de AMD Ryzen 3700X (Zen2) –
1 Core
Jorge Echevarría
Páginas web complementarias
https://en.wikichip.org/wiki/
WikiChip
https://top500.org/
Jorge Echevarría