Escolar Documentos
Profissional Documentos
Cultura Documentos
Paralelismo Lenguajes de
Tecnología
Programación
Aplicaciones
Arquitectura del Computador: Diseño de las Interfaces
• Diseño del Set de Instrucciones (ISA)
• Organización
• Hardware
{int temp;
temp=v[k]; Programa en Assembler
swap: Ensamblador (MIPS)
v[k]=v[k+1];
v[k+1]=temp; muli $t1, $a1,4
Peripherals Computer
Central Main
Processing Memory
Unit
Computer
Systems
Interconnection
Input
Output
Communication
lines
Estructura: la CPU
CPU
Computer Arithmetic
Registers and
I/O
Login Unit
System CPU
Bus
Internal CPU
Memory Interconnection
Control
Unit
Estructura: Unidad de Control
Control Unit
CPU
Sequencing
ALU Login
Control
Internal
Unit
Bus
Control Unit
Registers Registers and
Decoders
Control
Memory
Generaciones de Computadores
Tubos de vacío - 1946-1957
Transistores - 1958-1964
Small scale integration - 1965 en adelante
Hasta 100 transistores en un chip
Medium scale integration - hacia 1971
100-3,000 transistores en un chip
Large scale integration - 1971-1977
3,000 - 100,000 transistores en un chip
Very large scale integration - 1978 a la fecha
100,000 - 100,000,000 transistores en un chip
Ultra large scale integration
Over 100,000,000 transistores en un chip
Aumentando la velocidad…
Algunas técnicas para mantener la CPU
trabajando siempre:
Pipelining
On board cache
On board L1 & L2 cache
Branch prediction
Data flow analysis
Ejecución especulativa
Problemas de Performance…
Incremento en
velocidad del
Procesador
Incremento en
capacidad de memoria
Velocidad de acceso a
la memoria crece
mucho menos!
Soluciones
Incrementar la cantidad de bits accedidos cada
vez
DRAM “más ancha”
Cambio de la interfaz de memoria
Caché
Reducir la frecuencia de acceso a memoria
Cachés más complejas, caché en el chip
Incrementar el ancho de banda de la
interconexión
Buses de alta velocidad
Jerarquía de buses
Estructura de la máquina de
von Neumann
Componentes
La Unidad de Control y la
Unidad Aritmético-Lógica
constituyen la Unidad
Central de Proceso (CPU)
Datos e instrucciones deben
ingresar al sistema, y los
resultados deben salir
Entrada/Salida
Almacenamiento temporal
de código y resultados
Memoria principal
Jerarquía de buses
Ciclo de Instrucción
Dos pasos:
Fetch
Execute
Ciclo de Instrucción con
Interrupciones
Microprocesador
CPU
Es el corazón del microprocesador.
Operación
Obtiene una instrucción de memoria
Decodifica la instrucción
Ejecuta la instrucción
Incluye:
Registros
ALU
Unidad de control
Interconexión
CISC vs RISC
CISC Complex Instruct Set Computers
RISC Reduced Instruct Set Computers
Características de CISC
Gran número de instrucciones.
Instrucciones útiles para el programador.
Hardvard vs Princeton
Princeton (Von
Neumann)
Memoria común para
almacenar el programa y
las variables.
Permite la ejecución de
código automodificable.
Un único bus entre la CPU
y la memoria.
Harvard vs Princeton
Harvard
Ejecuta las
instrucciones en
menor cantidad de
ciclos por instrucción,
pues logra un
paralelismo a nivel de
instrucción mayor
Cada palabra (datos e
instrucción) tiene un
tamaño adecuado.
El diseño del procesador
La CPU ejecuta o supervisa la ejecución de las
instrucciones que componen un programa, y por
lo tanto tiene un impacto fundamental en la
performance del sistema
Está constituido por unidades funcionales que
incluyen:
El datapath (camino de datos)
• Set de registros
• ALU
La Unidad de Control
Algunas decisiones
importantes
Cantidad, ancho y reglas de uso del set de
registros
Direccionamiento
Tecnología del dispositivo
Set de Instrucciones
Diseño de la Unidad de Control: cableada o
microprogramada?
Ejemplos de organización de
los registros
Modos de direccionamiento (i)
Tipos
Inmediato
Directo
Indirecto
Registro
Indirecto con registro
Con desplazamiento
Pila
Algunas ideas para mejorar la
Performance…
Obvio: incrementar la frecuencia del reloj
Mayor frecuencia –> mayor velocidad de procesamiento
Estado del Arte: >2GHz
Pero…los tiempos de acceso a memoria y E/S pueden ser un cuello de
botella…
Ancho de los registros
Mayor procesamiento por ciclo
Ancho del bus de datos
Mayor tasa de transferencia
Ancho del bus de direcciones
NO mejora la velocidad de acceso
Pero se puede direccionar más memoria directamente…
• Programas mas grandes
• Menos uso de la memoria virtual. OK!
Más ideas para mejorar la
performance
Pipelining
On board cache
On board L1 & L2 cache
Branch prediction
Data flow analysis
Ejecución especulativa
…..
Pipelining: es Natural!
Ejemplo Lavandería A B C D
Ana, Beto, Carina, David tienen cada
uno una carga de ropa para lavar,
secar y ordenar
Lavadora lleva 30 minutos
Secadora lleva 40 minutes
“Ordenar” lleva 20 minutos
Lavandería Secuencial
6 PM 7 8 9 10 11 Medianoche
Tiempo
O 30 40 20 30 40 20 30 40 20 30 40 20
r
d A • Lavandería secuencial
e lleva 6 horas para 4
n cargas
B • Cuánto les llevaría si
T aprendieran
a pipelining?
r C
e
a
s
D
Lavandería en Pipeline
6 PM 7 8 9 10 11 Medianoche
Tiempo
O
r 30 40 40 40 40 20
d
e A • Lavandería en Pipeline
n lleva 3.5 horas para 4
cargas!
T B
a
r
e C
a
s D
Pipelining no mejora la
Lecciones del Pipeline latencia de cada tarea, sino
el throughput de toda la
carga de trabajo
Velocidad del Pipeline
6 PM 7 8 9 limitada por el paso más
Tiempo lento
O Tareas múltiples operando
r 30 40 40 40 40 20 simultaneamente
d
Aceleración potential =
e A Cantidad de pasos del
n
pipeline
T B Largo desbalanceado de los
a pasos del pipeline reduce la
r aceleración
e C
a Tiempo para “llenar” y
s “vaciar” el pipeline reduce la
D aceleración
Pipeline primitivo:
Prefetch (o pipeline de dos etapas) (i)
Pipeline primitivo:
Prefetch (o pipeline de dos etapas) (ii)
Fetch accede a memoria principal
Ejecución no accede a memoria
Se puede buscar la próxima instrucción durante la
ejecución de la instrucción actual:
Prefetch de instrucciones
Mejora la performance
Pero no la duplica:
Fetch usualmente más corto que la ejecución
• Prefetch de más de una instrucción?
Pero: saltos pueden provocar descarte de las instrucciones
cargadas mediante prefetch
Más etapas de pipeline para mejorar performance?
Pipelining:
etapas a considerar
Fetch de instrucción (FI)
Decodificar instrucción (DI)
Calcular operandos (CO)
Fetch de operandos (FO)
Ejecutar instrucción (EI)
Escribir resultados (write – WO)
Etapas de
igual duración
Sin saltos
Sin conflictos
de acceso a
memoria y
registros
Pipeline de
seis etapas
Lógica del pipeline
considerando
saltos e
interrupciones
Problemas del pipeline
Límites del pipeline: los hazards (obstáculos)
pueden impedir que la próxima instrucción se
ejecute en el ciclo correspondiente
Hazards estructurales: conflicto de HW que impide
determinada combinación de instrucciones
Hazards de datos: instrucción actual depende del
resultado de una instrucción previa que aún está en
el pipeline
Hazards de control: causados por retardos entre el
fetch de instrucciones y la decisión de cambios en el
flujo de instrucciones (bifurcaciones, saltos)
Como resolver un hazard
estructural?
Definición: intento de usar el mismo hardware para dos
propósitos diferentes a la vez
Solución 1: Esperar…
Se debe detectar el problema
Y tener mecanismos para “no hacer nada”
Datapath Salida
Control Tertiary
Secondary Storage
Storage (Disk/Tape)
Second Main
(Disk)
On-Chip
Registers
Level Memory
Cache
Principio de Localidad:
Los programas acceden una porción relativamente
pequeña del espacio de direcciones en un determinado
instante de tiempo.
Se aplica también al acceso a datos (en menor %)
Localidad temporal
• Si un ítem es referenciado, tenderá a ser referenciado
nuevamente a la brevedad
Localidad Espacial
• si un ítem es referenciado, los items con direcciones
“cercanas” tenderán a ser referenciados a la brevedad
Como se maneja la jerarquía?
Localidad Temporal
Mantener los datos más recientemente accedidos
“cercanos” al procesador
Localidad Espacial
Mover bloques de palabras contiguas al nivel superior
Memoria
Al Procesador Memoria Nivel Inferior
Nivel Superior
Blk X
Del Procesador Blk Y
Memoria Principal:
La organización mejora la performance
Simple:
CPU, Cache, Bus, Memoria mismo ancho(32 bits)
Ancho (Wide):
CPU/Mux 1 palabra; Mux/Cache, Bus, Memory N palabras
Entrelazado (Interleaved):
CPU, Cache, Bus 1 palabra: Memoria N Módulos; el ejemplo
de 4 módulos, word interleaved ( estrelazado de palabra)
Interleaving
Patrón de Acceso sin Interleaving: CPU Memoria
D1 disponible
InicioAcceso de D1 InicioAcceso de D2
Memoria
Patrón de Acceso con Interleaving de 4 vías: Banco 0
Memoria
Banco 1
CPU
Memoria
Banco 2
Acceso Banco 0
Memoria
Banco 3
Acceso Banco 1
Acceso Banco 2
Acceso Banco 3
Podemos Acceder Banco 0 nuevamente
Resumen hasta el momento
Dos Tipos de Localidad:
Temporal
Espacial
Tomando ventaja del principio de localidad:
Construir un sistema con mucha memoria de tecnología baratas
Proveer acceso a la velocidad ofrecida por las tecnologías más
rápidas
La DRAM es lenta, pero de alta densidad y barata:
Presenta al usuario un sistema de memoria GRANDE.
La SRAM es rápida, pero de baja densidad y cara:
Presentar al usuario un sistema de memoria RÁPIDO.
El Arte del diseño de un Sistema de Memoria consiste en
Optimizar la organización para minimizar el tiempo de acceso
promedio para las cargas de trabajo típicas
Cache
Memoria rápida, escasa
Se instala entre la memoria principal y la CPU
Puede estar en el chip de la CPU (L1) o en módulo
externo (L2)
Ahora veremos
Memoria virtual
Resumen de ideas para mejorar performance
CISC vs. RISC
•
•
RISC
La reunión de todas las “buenas ideas”!
Como es?
La importancia del compilador
Recordemos:
Jerarquía de Memoria
Nivel Superior
Registros Más rápido
Instr. Operandos
Cache
Bloques
Memoria
Páginas
Disco
Archivos
Soluciones
Buenos algoritmos de reemplazo
Reducir cantidad de procesos en ejecución
Más memoria!
Estructura de la Tabla de
Páginas (i)
Tabla de páginas
Traducción de dirección virtual a dirección física
Tamaño variable, potencialmente muy grande (ej. 4GB en
sistemas con 32 bits de direcciones)
No se puede alojar en la CPU -> en memoria!
Pero se debe limitar el uso de memoria principal para
almacenar Tablas de Páginas….
…se almacenan en memoria virtual
Entonces...se necesitan esquemas de paginación en
niveles
Directorio y tablas de páginas
Tabla invertida
Estructura de la Tabla de
Páginas (ii)
Invertida: se
utiliza un hash
para indexar en
la tabla
Usado en
PowerPC
Tabla de hash
usa
encadenamiento
(chaining)
Ventaja: porción
fija de memoria
real para tablas
Translation Lookaside Buffer
Virtual Address Physical Address Dirty Ref Valid Access
Pascal C Average
Integer constant 16 23 20
Scalar variable 58 53 55
Array/structure 26 24 25
Llamadas a Procedimientos
Consumen mucho tiempo
Dependen de
Cantidad de parámetros pasados
Nivel de anidamiento
La mayoría de los programas usan pocos
argumentos
La mayoría de las variables son locales
La “profundidad” de anidamiento es baja
O sea, no es frecuente tener muchas llamadas seguidas
de muchos retornos
Que se concluye?
Se deben optimizar las características más
usadas y que consumen más tiempo
Mejor soporte a lenguajes de alto nivel
Gran cantidad de registros
Referencias a variables locales optimizada
Se debe diseñar el pipeline con cuidado
Tener en cuenta efectos de bifurcaciones
Entonces…
Se necesita asegurar (por hard o soft) el uso intensivo de
registros
Solución hardware: muchos registros!
Ventanas de Registros
Se usan pocos parámetros
Poca profundidad de llamadas
Analizar rendimiento
Finalmente
Las innovaciones y mejoras continuan ... cambios notables:
Memoria magneto-óptica
Diseños de CPUs superscalares
Instrucciones multimedia
Ejecución anticipada y carga especulativa
Multiprocesadores simétricos, clusters, sistemas de acceso a
memoria no uniforme
Nuevos sistemas operativos, compiladores y middlewares
Arquitecturas reconfigurables