Está en la página 1de 73

Clase 0: Microprocesadores y

rendimiento
IE0521: 1 Estructuras de computadoras II
Universidad de Costa Rica
Ing. Gerardo Castro
II semestre 2021
Microprocesador

• “…es una máquina diseñada para traer instrucciones de la


memoria, decodificarlas y ejecutarlas.” The Unabridged
Pentium 4 Architecture.
• Etapas básicas de un microprocesador:
• Fetch de instrucciones.
• Decodificación de instrucciones.
• Ejecución (Posible acceso a memoria)
• Write Back
Microprocesador

Fuente Imagen: https://www.sciencedirect.com/topics/engineering/program-execution


Microprocesador (Historia Intel)

• Unidades básicas de un
microprocesador Intel :
• Unidad de fetch de instrucciones
• Decodificador de instrucciones.
• Despachador de instrucciones.
• Unidad ejecución.
• Registros.
• Unidad de interface (Front Side
Bus).
Arquitecturas

Arquitectura Von Neumann Arquitectura Harvard

Memoria
Instrucción
Memoria
CPU Instrucción/
Datos
CPU

Memoria
Datos
Microprocesador

• Ecuación de tiempo de ejecución (o de CPU) del procesador:

• Ejemplo:
• Suponga que:
• Un programa ejecuta 4 millones de instrucciones
• El procesador tarda 3 ciclos de reloj en completar cada instrucción.
• La frecuencia de reloj del procesador es 100MHz.
• Cual es tiempo de ejecución?
Microprocesador

• CPU Time dependiente del tipo de instrucción:


• En MIPS:
• Instrucción tipo R:
• Aritméticas, Lógicas.
• Instrucción tipo I:
• Referencia a memoria.
• Aritméticas (inmediatas).
• Salto condicional.
• Instrucción tipo J:
• Salto Incondicional.
• Cada Instrucción puede tomar diferente cantidad de
ciclos para ejecutarse.
Microprocesador

• CPU Time dependiente del tipo de instrucción:


• En RISCV:
• Tipo R – Registro
• Tipo I – Immediato
• Tipo S - Escrituras
• Tipo U – Lecturas inmediatas.

• Cada Instrucción puede tomar diferente


cantidad de ciclos para ejecutarse.
Microprocesador

• Factores que afectan el tiempo de ejecución del procesador:


Comparar el rendimiento entre dos diseños

• X es N veces más rápido que Y:


Ley de Amdahl
• Permite estimar la ganancia de rendimiento o
desempeño al mejorar una porción de un diseño o
programa.

• El “speedup” indica cuanto mas rápido se ejecutará


una tarea en el sistema mejorado en comparación
con el original.
Ley de Amdahl

• Programa con 50 billones de instrucciones.


• La frecuencia de reloj de 2GHz.
• Se mejora las instrucciones de saltos de 4 a 2 CPI.
• El programa contiene:
• 40% (Inmediata). 1 CPI.
• 20 % (Salto). 4 CPI.
• 30% (Load). 2 CPI.
• 10% (Store). 3 CPI.
• Cual es la aceleración del programa?
Ley de Amdahl

• Solución:
• Opción1:
• .  incorrecto.
( . )
• Opción2:
• Porcentaje de tiempo: 0.2x4/
= 0.8/2.1=0.38
• .
( . )

• Opción3:
( . . . . )
• cpu_new/cpu_actual=
( . . . . )
.
Ley de Amdahl’s

• Porcentaje de tiempo:
• Ind 40% CPI 1.
• BR 20% CPI 3.
• LD 30% CPI 2.
• ST 10% CPI 3.
• BR CPI 3->2.
• ST CPI 3->2.
• Cual es mejor?
• Speedup BR:1/(1-0.2+0.2/1.5)=1.075
• Speedup ST: = 1/(1-0.1+0.1/1.5)=1.041
Arquitectura Segmentada (Pipeline)
• Concepto : Línea de ensamblado o de
producción.
• Es una técnica donde múltiple instrucciones
se ejecutan concurrentemente.
• La segmentación (Pipeline) no acelera la
ejecución de una sola instrucción. Acelera
la ejecución de un grupo de instrucciones.
• Un pipeline básico divide la etapas básicas
del CPU y en cada una de ellas se ejecuta
en un ciclo de reloj.
• La etapa mas lenta define la frecuencia de
reloj.
• Para balancear el pipeline, todas las etapas
requiere que duren un tiempo similar.
• El numero de etapas se llama: profundidad
de pipeline.
• Presenta: peligro (hazard) de datos, control
y estructurales.
Pipeline: Structural Hazard

• Significa que la arquitectura no puede soportar la combinación de


instrucciones que se quieren ejecutar en el mismo ciclo de reloj (Memoria de
datos/instrucciones)
• Solución: Arquitectura Harvard.(Separar memorias).
Pipeline: Data Hazard
• Aparece cuando el pipeline tiene que esperar que otra etapa termine debido a
dependencias de datos:
• Read After Write(RAW).
• Write After Read (WAR).
• Write After Write (WAW).
• Genera que el pipeline se detenga, llamado burbuja.
• Solución: Forwarding or Bypassing.

WAR

WAW
Pipeline: Data Hazard

WAR
(bubble)
Pipeline: Data Hazard

WAW or RAW
(Forwarding)
Pipeline: Control Hazard

• Aparece cuando se requiere


tomar decisiones (saltos)
basado en resultados de
instrucciones que todavía se
están ejecutando en el
pipeline.
• Solución: Predicción de saltos:
• Branch Target Buffer (BTB).
• Estática.
• Dinámica
Predicción de saltos

• Esquema Estática:
• Predecir si salto ocurre o no para todas las ejecuciones.
• Lo mas común era asumir que salto se iba a tomar.
• Esta técnica ya no se utiliza.
• Esquema Dinámico:
• Esquemas simples revisando lo que ocurrió en el ultimo salto (se tomo o no).
Revisar el pasado.
• 1 bit :
• taken
• not taken.
• 2 bit (histéresis):
Predicción de saltos

• Tasa de predicción:
Predicción de saltos con historia privada
(pshare)
• Patrón de salto:
• TNTNT
• TTNTTN
• BHT (Branch History Table):
• Se actualiza el “History bit” si el salto se toma 1 y si no 0.
• Se actualiza el 2 Bit counter que utilizó en la ultima predicción.

PC History 2 Bit counter 2 Bit Counter


Bit (H==0) (H==1)
addrA 1 WN WN

addrB 0 SN WT
Predicción de saltos con historia

• Ejemplo:
• N, T, N, T, N

Iteración History Bit 2 Bit counter 2 Bit Predicción Salida Correcto?


(H==0) Counter
(H==1)
Predicción de saltos con historia

• Solución:

Iteración History Bit 2 Bit counter 2 Bit Predicción Salida Correcto?


(H==0) Counter
(H==1)
0 1 WN WN N N Si

1 0 WN SN N T No

2 1 WT SN N N Si

4 0 WT SN T T Si

5 1 ST SN N N Si

6 0 ST SN
Predicción de saltos con historia global
(Gshare)
• Ejemplo:
• If (variable == A) { //Branch1-PC1
Do something

}
• If (variable != A){ //Branch2-PC2
Do something

}
• Del código anterior se puede observar que el branch2 se toma si el branch1
no se toma.
• Existe una relación de salto entre PC distintos (PC1-PC2).
• Los predictores de historia global toman en cuenta la información de otros
saltos (predictores de correlación).
• Su implementación consiste en registro de corrimiento que indexa un
contador 2 bits. También se puede combinar con el PC actual.
Predictor de saltos tipo torneo (meta
predictor, predictor de 2 niveles)
Predicción de saltos

• BTB:
• Si se predice que el salto se va tomar, es necesario predecir la dirección
donde va saltar el programa.
• Se quiere una estructura similar a un cache: buffer de predicción de saltos,
que almacena las direcciones de los saltos y dirección objetivo donde se
debe saltar.
Predicción de saltos

• BTB:
Pre-fetching

• Prefetching ocurre cuando el procesador solicita instrucciones o datos a


memoria principal antes de que la necesite.
• Cuando la instrucción se requiere, se acceda mucho mas rápido dado que
ya se encuentra en el cache.
Intel 386 (1985)

• Características:
• Microprocesador de 32 bit.
• Introduce Modo protegido.
Permite un espacio de memoria
de 4G.
• Unidad de prefetcher & Queue:
trabaja con la suposición de que
el programa que se esta
ejecutando nunca salta. La
instrucciones que les hace pre-
fetch se almacenan en una cola
de 16 bytes.
• Unidad de manejo de memoria:
Segmentos, Paginación y TLB
(Protected mode).
Desempeño CPU/Memoria
• CPU: 60% por año  2X cada 1.5 años.
• DRAM: 5.5-7% por año. Menos de 2X en 10 años.
• Solución:
• Poner una pequeña pero rápida memoria entre el CPU y la DRAM, conocida como
cache.
• Crear una jerarquía de memoria.
Jerarquía de Memoria

• Presenta la mayor cantidad de memoria como la tecnología más barata.


• Provee de acceso con la velocidad de acceso de la tecnología más rápida.
Intel 486 (1989)

• Intel 486 fue el primer


microprocesador de IA-32 con un
cache integrado de 8-16kB (unificado
para datos y código).
• Unidad de pre-fetch de instrucciones
de 32 Bytes.
• Introduce un FPU en el chip.
Super-Scalar Architecture

• Considere la secuencia de código que


se presenta. Es posible ejecutar la
instrucción a y b al mismo tiempo?
• Observe que la instrucción a y b son
independientes, lo mismo para c y d.
• Un CPU como el Z80 ejecuta una
instrucción a la vez y en varios ciclos de
reloj (Sub-scalar).
• Un Intel 386 o 486 ejecuta una
instrucción por ciclo de reloj (Scalar).
• Una arquitectura 2-way Super-scalar:
• Ejecuta 2 instrucciones en paralelo.
• Dinámicamente revisa dependencia de datos.
En este ejemplo revisa que no hay
dependencia entre las instrucciones.
• Explota el paralelismo presente en
instrucciones adyacentes.
• Idealmente el desempeño del CPU se
incrementa al doble.
• Significa mas recursos: unidades de ejecución,
decodificadores de instrucciones, registros,
etc.
Arquitectura Super-scalar

• Considere el código de la secuencia


mostrada. Es posible ejecutar las
instrucciones e y f al mismo tiempo?
• Observe la dependencia entre la
instrucciones e y f, lo mismo con g y
h.
• En este caso, la arquitectura super-
scalar es reducida una instrucción
por ciclo.
• Código real es una combinación de
ambos código (a-d y e-f).
• La arquitectura puede obtener un
15%-30% de mejora en el
desempeño. Mas de dos
instrucciones continuas en paralelo
no tiene sentido.
Superscalar-Pipeline
Pentium (Arquitectura P5)
• Procesadores antes de Pentium
tenían un pipeline de una sola
instrucción y podía ejecutar una
sola instrucción por ciclo de reloj.
• Pentium fue el primer procesador
IA32 que empleaba unidades de
ejecución en paralelo capaces de
ejecutar múltiples instrucciones
simultáneamente (Super-scalar)
• Pentium tenia un pipeline de
instrucciones dual que ejecutaba
hasta 2 instrucciones por ciclo de
reloj.
• Los dos pipelines de instrucciones
eran llamados “u” y “v”.
• Instrucciones complejas era
ejecutadas por el pipe “u”.
• El pipeline “u” puede terminar
antes que “v” pero no al revés.
Pentium (Arquitectura P5)
• Fue el primero en incluir lógica de
predicción de saltos:
• Tenia un cache que mantenía la
historia de los saltos que se toman y
los que no (Branch Target Buffer
BTB).
• Resuelve el problema de saltos
relacionado al pre-fetecher.
• Separa el cache en uno de código y
otro de datos para evitar
contención en el cache (Riesgo
Estructural/ Arquitectura Harvard).
• 2 ALUs: una para cada pipeline.
• 2 Etapas decodificadores de
instrucciones para cada pipeline
“u” and “v”.
• Incluye arquitectura: “Machine
Check” y “Performance Monitors”.
Conceptos básicos RISCV

• Registros de propósito general de 32 Bit: x1,x2…x31.


• Sintaxis siempre OPERAND RD, RS1, RS2.
• Ejemplo:
• Lw x1, 0x200(x2) => lw x1, offset(base) => mueve la posición de memoria en
offset(base) al registro x1.
• BEQ rs1,rs2, address => BEQ rs1, rs2, label => Salta a la posición de memoria
etiquetada como “label” si ambos registers son iguales.
Ejercicio #1 Superscalar y Pipeline
• Dadas las siguientes instrucciones:
• 1. lw x1, 0x200[x2]
• 2. sw x1, 0x400[x6]
• 3. sub x3,x1
• 4. and x4,x1
• 5. lw x5, 0x600[x1]
• Suponga una maquina con:
• No pipeline.
• 5-Stage-Pipeline (IF,ID,EX,MEM,WB) sin Forwarding.
• 2-way superscalar.
• 2-way superscalar pipeline (IF,ID,EX,MEM,WB) sin Forwarding.
• Funciones de las etapas del pipeline:
• IF => fetch de Instrucciones.
• ID => Decodificación de instrucción y lectura de registros.
• EX => Ejecución de operación o calculo de dirección.
• MEM => acceso de operando en memoria.
• WB => escritura de resultado en registro.

• Dibuje la ejecución las instrucciones en una tabla y resuelva las dependencias de datos insertando
burbujas en el pipeline para garantizar la correcta ejecución.
Ejercicio #2 Superscalar y Pipeline
• Dadas las siguientes instrucciones:
• 1. label1 lw x1, 0x200(x2)
• 2. xor x3, x1
• 3. BEQ x3, x4 label1
• 4. add x5,x1
• 5. lw x3, 0x400(x1)
• Suponga una maquina con:
• No pipeline.
• 5-Stage-Pipeline (IF,ID,EX,MEM,WB) sin Forwarding.
• 2-way superscalar.
• 2-way superscalar pipeline (IF,ID,EX,MEM,WB) sin Forwarding.
• 5-Stage-Pipeline (IF,ID,EX,MEM,WB) sin Forwarding con predicción de salto estática (no se toma el salto).
• Funciones de las etapas del pipeline:
• IF => fetch de Instrucciones.
• ID => Decodificación de instrucción y lectura de registros.
• EX => Ejecución de operación o calculo de dirección.
• MEM => acceso de operando en memoria.
• WB => escritura de resultado en registro.

• Dibuje la ejecución las instrucciones en una tabla y resuelva las dependencias de datos insertando
burbujas en el pipeline para garantizar la correcta ejecución.
Paralelismo a nivel de instrucción (ILP)

• Desde 1985, todos los procesadores utilizan pipeline para traslapar la


ejecución de instrucciones y mejorar el rendimiento.
• El traslape potencial entre las instrucciones se conoce como
“Instruction Level Paralelism” dado que se evalúan en paralelo.
• Existen 2 enfoques:
• Programación Estática basado en SW.
• El compilador reorganiza la ejecución de las instrucciones preservando el orden del
programa.
• Programación Dinámica  basado en HW.
• El hardware reorganiza la ejecución de las instrucciones. Es una técnica mas poderosa
que la programación estática.
• Permite la ejecución fuera de orden de las instrucciones sin afectar el orden del
programa.
Calendarización estática y desenrolle de lazos
Calendarización estática y desenrolle de lazos

El compilador puede calendarizar las El compilador puede desenrollar el


instrucciones de tal forma de que se lazo. El desenrolle de lazos aumenta el
reduzcan las burbujas en el pipeline cuerpo del lazo (replica varias veces) y
ajusta la terminación del código
Calendarización estática y desenrolle de lazos

• La ejecución del lazo inicial 45, al cambiar la calendarización y desenrollar


el lazo se obtiene 14 ciclos de reloj.
Calendarización Estática
Calendarización Estática

• Ejemplo RISC-V.
Calendarización dinámica
• Explota el paralelismo de código que la arquitectura super-scalar no
puede ver.
• Calendarización dinámica permite la ejecución fuera de orden (out of
order execution)
• Calendarización dinámica  Hardware especulativo.
Ejecución fuera de orden y hardware
especulativo
• Considere la secuencia que se muestra. Es
posible conocer si el salto se va a ejecutar o
no?
• Ejecutemos el código (foo) sin saber si el
salto se va tomar o no, si se toma puede
ganar mucho en el tiempo de ejecución.
• En la ejecución fuera de orden se crea un
estado especulativo.
• El código se ejecuta en un forma
especulativa pero los resultados deben
reflejarse al estado real solo si el estado
especulativo es correcto.
• El programa entra en orden (1), se ejecuta
en desorden (2) y se retiran en orden (3).
• Ejecución fuera de orden requiere
calendarización dinámica y predicción de
saltos.
• Que sucede si el estado especulativo es
incorrecto: causa perdida de tiempo,
perdida de potencia y el desempeño
decrece.
Ejecución fuera de orden

• Las etapas de fetch y decodificación en un procesador en orden y un


procesador fuera de orden no cambian.
• En un procesador en orden la ejecución de instrucciones puede
bloquearse por dependencias de datos tipo RAW y WAW.
• En un procesador fuera de orden las dependencias WAR y WAW se
pueden evitar con una técnica conocida como renombre de registros.

• Si se tuvieran otros registros para la instrucción i3 e i4 la dependencia se


podría evitar. Por ejemplo un R10 y R11?
• Otra opción es renombrar los registros. Esto requiere separar los
registros físicos y registros de lógicos o de arquitectura (ISA).
Renombre de registros

… … 2-pipe schedule
MOV EAX, ECX MOV p2, p1 Clock0
ADD EAX, 16 ADD p2, 16 MOV p2, p1
MOV mem3, EAX MOV mem3, p2 MOV p3, 5
MOV p3, 5 Clock1
MOV EAX, 5
ADD p3, p0 ADD p2, 16
ADD EAX, EBX
IMUL p3, 7 ADD p3, p0
IMUL EAX, 7
... Clock2
...
 registers renamed MOV mem3, p2
• without renaming - requires more IMUL p3, 7
than 6 clock cycles to schedule
• false dependencies can be caused
by the need to reuse registers for
unconnected reasons
Dependencias

• Dependencia real y de salida:


• Ocurre cuando dos instrucciones van a guardar el resultado en el mismo
lugar.
• Por ejemplo:

• Existe una dependencia real entre la primera instrucción y la segunda.


• Existe una dependencia de salida entre la primera y la tercera instrucción. La
única razón para detener la instrucción MOVE es porque escribe al mismo
registro que la primera R1.
Dependencias

• Antidependencia:
• Ocurre cuando una instrucción lee y otra escribe de un mismo lugar.
• Por ejemplo:

• Existe una antidependencia entre la primera instrucción y la segunda porque


una lee y otra escribe al mismo lugar (R2).
Renombre de registros

• Se utiliza una tabla conocida como RAT (Register Alias Table) donde se
realiza un mapeo entre registros físicos y registros de arquitectura.
• Algoritmo:
• Los registros lógicos se renombran a registros físicos cuando la instrucción
termina la ultima etapa del front-end (fetch & decode).
• Los operandos se reemplazan por registros físicos a los cuales mapean y el
registro destino se le asigna un nuevo registro físico.

• Es posible que las instrucciones i3 e i4 se terminen de ejecutar antes que


las instrucciones i1 y i2. Es decir se ejecutarían fuera de orden.
• Sin embargo se debe mantener el orden a nivel lógico. Para esto se
requiere un componente que vuelva a ordenador las instrucciones para
ser retiradas.
Renombre de registros

• Ejemplo: • RAT
• ADD R1 R3 R3 • R1
• SUB R4 R1 R5
• R2
• XOR R6 R7 R8
• MUL R5 R8 R4 • R3
• ADD R4 R8 R9 • R4
• SUB R7 R4 R1 • R5
• R6
• R7
• R8
• R9
Renombre de registros

• Ejemplo: • RAT
• ADD R1 R3 R3 • R0
• SUB R4 R1 R5
• R1 P17
• XOR R6 R7 R8
• MUL R5 R8 R4 • R2
• ADD R4 R8 R9 • R3
• SUB R7 R4 R1 • R4 P18  P21
• R5 P20
• Solución: • R6 P19
• ADD P17 R3 R3 //R3 no tiene mapeo • R7  P22
• SUB P18 P17 R5 //R5 no tiene mapeo • R8
• XOR P19 R7 R8 // R7 y R8 no tienen mapeo • R9
• MUL P20 R8 P18 // R8 no tiene mapeo
• //R4 == P21
• ADD P21 R8 R9 // R8 y R9 no tienen mapeo
• SUB P22 P21 P17
Reorder buffer

• Cuando una instrucción entra a la etapa de


renombramiento de registros una entrada se inserta
en la cola del buffer con una bandera indicando que
la instrucción no se ha ejecutado.
• Cada entrada al buffer debe incluir:
• Una bandera para indicar si la instrucción ya se ejecuto o no.
• El valor resultante de la instrucción.
• El nombre del registro lógico donde los resultados se deben
almacenar.
• El tipo de instrucción, si es aritmética, salto, load o store.
Reorder Buffer
Estaciones de reserva

• Después que una instrucción pasa por la etapa de


renombre de registros y se inserta en el ROB, se
procede despacharla (Dispatch) a una estación de
reserva (Reservation Station).
• Una estación de reserva es un espacio que contiene :
• La operación a realizar.
• Los valores de los operandos o de los registros físicos.
• El registro físico donde almacenar el resultado.
• La entrada en el ROB donde se debe almacenar la el
resultado.
• La instrucción pasa a la etapa de Issue cuando los
operandos son validos (requiere una bandera de valido)
para que se ejecute en una unidad funcional.
• Cuando la instrucción termina se le comunica a todas
las estaciones de reserva el resultado del registro físico.
Algoritmo de Tomasulo (1966)
Algoritmo Tomasulo (1966)

• Las estaciones de reserva tienen los siguientes espacios:


• Op: Operación a realizar.
• Qj, Qk: La estación de reserva que va producir el operando. Cero significa que el
operando ya esta disponible en Vj, Vk o que es innecesario.
• Vj, Vk: los valores de los operandos. Para loads, Vk se utiliza para almacenar el
offset.
• A: almacena información de la dirección de memoria para loads y stores.
• Busy: Indica que la estación de reserva esta ocupada.
• El espacio de registros:
• Qi: El numero de la estación de trabajo cuyo resultado debe
almacenarse en el registro. Un cero significa que no actividad de
instrucciones que tenga el registro como destino.
Ejemplo
Arquitectura P6
• Pentium Pro, Pentium 2 and Pentium 3
son parte de la familia de procesadores
P6.
• P6 era una arquitectura 1.5X mas
rápida que la arquitectura P5 con la
misma frecuencia de reloj.
• No ejecuta instrucciones complejas,
instrucciones de byte múltiples de
IA32:
• Introduce una lógica para
decodificar instrucciones IA32 y las
divide en una o más primitivas de
tamaño fijo conocidas como micro-
operaciones. (CISC => RISC).
• On-die: Cache L2 unificado de 256KB,
cache L1 de código de 8KB y cache de
datos L1 de 8KB.
• Unidad ejecución fuera de orden:
ejecución especulativa de
instrucciones.
• Un super-pipeline de 10 etapas.
Arquitectura P6

• Técnicas de rendimiento:
• Super-pipelined.
• Super-Scalar.
• Ejecución fuera de orden (ejecución
especulativa.
• Renombre de registros.
• Predicción de saltos.
• Retiro de instrucciones en orden.
Simultaneous Multi-Threading (SMT)
• En un sistema operativo multi-tarea, un trabajo se
puede dividir en múltiples tareas (conocidas como
threads).
• Existen dos formas que el OS puede hacer que el
procesador cambie de tarea: tiempo compartido o
por eventos.
• En SMT, el procesador alterna el fetch de
instrucciones que están asociadas a dos programas
separados (threads).
• SMT permite que le procesador haga fetch y ejecute
2 threads simultáneamente.
• Implica que tiene 2 conjuntos de registros pero solo
un conjunto de unidades de ejecución.
• Un procesador SMT (físico) tiene 2 o más máquinas
lógicas (logical processor) capaces de alimentar las
unidades de ejecución.
• SMT no implementa 2 microprocesadores en vez
comparte recursos.
• Es necesario el soporte del OS: Windows XP en
adelante, Linux versión 2.4x en adelante.
Arquitectura Pentium 4 (2001)

• Microarqutiectura Hyper-pipelined. El núcleo


del procesador fue completamente
rediseñado y se le conoció como la
arquitectura NetBurst. Pentium 4 tenia 20
etapas de pipeline (familia P6 10 etapas)
• Implementa SMT (Simultaneous
Multithreading) a través de Hyper-Threading.
• 2 unidades de ejecuciones de enteros
(Double-pumped) Cada una podía ejecutar 2
instrucciones por ciclo (Rapid Execution
Engine).
• Un “Trace Cache” remplazó el cache L1 de
código. A diferencia de su predecesores, el
cache L1 de Pentium 4 no almacenaba
instrucciones si no que almacenaba uops ya
decodificados.
• Front Side Bus se optimiza para
multiprocesamiento.
Taxonomia Flynn
• En 1966, Flynn propuso una forma de
clasificar computadoras en paralelo.
• Su propuesta se basa en como las
instrucciones operan los datos.
• SISD  corresponde al tipo mas
simple.
• SIMD  por ejemplo un procesador de
vectores (Ex: GPU, AVX Intel).
• MISD  por ejemplo un grupo de
filtros digitales que operan en paralelo
sobre el mismo flujo de datos.
• MIMD  corresponde a una maquina
con un conjunto de procesadores
convencionales.
Procesamiento SIMD y de Vectores.

• SIMD (Single Instruction


Multiple Data) permite
obtener múltiples resultados
de una sola instrucción.
• Una sola instrucción dispara la
ejecución en paralelo de
múltiples elementos.
• Requiere un conjunto
instrucciones para ser utilizado
por el programador o que el
compilador identifique el
paralelismo.
Paralelismo a nivel de instrucción (ILP), Potencia,
límites de la frecuencia de reloj ( hasta 2010)
• Densidad de los chips continua
creciendo ~2X cada 2 anos. (Ley
de Moore).
• ILP, Potencia y frecuencia de
reloj crecen lentamente.
• Poco ILP to descubrirse.
Paralelismo a nivel de instrucción (ILP), Potencia,
límites de la frecuencia de reloj ( hasta 2020)
• La densidad de chip continúa
creciendo ~2X cada 2 años (Ley de
Moore).
• La potencia y la frecuencia de
reloj no se están incrementando.
• El paralelismo a nivel de
instrucción aumenta lentamente.
• Existe poco paralelismo a nivel de
instrucción por encontrarse.
• La industria cambió su curso en
2005 cuando Intel anunció
arquitecturas multiprocesador,
siguiendo el liderazgo del
procesador Power 4 de IBM y el
procesador Niagara de Sun
Microsystems. (Asanovic, 2006)
• El paralelismo se debe exponer al
software y el programador no
podrá continuar pensando en
términos un modelo de
programación serial.
Segmentos de mercado

Segmento de Rendimiento Costo Consumo de Peso


Mercado Potencia
(bacteria)
Celulares + + + +

Desktop/Laptop ++ ++ ++ ++
s
Servidores +++ +++ +++ +++
Back-up: Familia 80x86

• 4004 – Primer microprocesador; 1969


• 8080 – Primer microprocesador de 8bit de Intel.
• 8086/8088 – 16-bits; Usado en la primera PC; 1978
• 286 – Primera vez que se usa Modo protegido; 1982
• 386 – Registros completos de 32-bit; 1985
• 486 – FPU y cache en el chip; 1989
• Pentium – Pipelines duales, soporte MP; 1993
• P6 family – Pentium Pro, II, & III; 1995/97/99
• Pentium 4 – arquitectura “Netburst” , SSE2/3, CT, HT; 2001-2006
• Xeon - (2001-2006)
• Pentium M (2003 - )
• Core Duo/Solo … (2006 - )
• I7 (2008 -)

También podría gustarte