Story Transcript
Procesadores de 32 bits Tecnologías, Organización y Micro Arquitectura
Tecnología de Integración Nanotecnología
Tecnología de Integración
65 nm nanotechnology
Imágenes obtenidas con TEM (Transmission Electron Microscope) de una cepa del virus de la influenza, y de un transistor construido con la tecnología de 65 nm reemplazada en el 2007 por la de 45 nm, con la que se construyen los procesadores Core2Duo y Xeon Quad Core de Intel. Los 30 nm representan el ancho del Gate del transistor NMOS Autor: Alejandro Furfaro - 2008
3
Tecnología de Integración: EUV MET EUV MET = Extreme Ultra Violet Micro Exposure Tool Luz Ultravioleta
Proceso de Litografía
Máscara
Autor: Alejandro Furfaro - 2008
Lentes para reducir la imagen Oblea de metal grabado a ser expuesta
Tamaño=K1*λ*NA K1: Factor de complejidad λ : Longitud de onda de la exposición NA: Apertura Numérica 4 (tamaño) del lente
Proceso y componentes de la técnica de Litografía
Litografía (Lithography): Proceso por el cual se crean patrones específicos en un chip. Los chips actuales consisten en un sustrato de silicio encima del cual se crean mas de 20 capas de materiales de diferentes tipos. Éstos forman los transistores y las pistas que los interconectan en una configuración particular, formando un microprocesador, su chipset, la memoria, o cualquier otro chip.
Autor: Alejandro Furfaro - 2008
5
Ley de Moore
Autor: Alejandro Furfaro - 2008
6
Pipeline Tecnológico: Fuente IDF2009
Autor: Alejandro Furfaro - 2008
7
Relación entre el pipeline tecnológico y las microarquitecturas
Autor: Alejandro Furfaro - 2008
8
Organización de un computador Conceptos generales: Arquitectura vs. Micro-Arquitectura
Arquitectura y Micro-Arquitectura
Arquitectura
Recursos accesibles para el programador
Registros
Set de instrucciones
Estructuras de memoria (descriptores de segmento y de página p. ej.)
Estos recursos se mantienen y evolucionan a lo largo de los diferentes modelos de procesadores de esa arquitectura
Micro Arquitectura
Implementación en el silicio de la arquitectura.
Es lo que hay detrás del set de registros y del modelo de programación
Puede ser muy simple o sumamente robusta y poderosa.
La arquitectura IA-32 se inicia con el procesador 80386 en 1985, y llega hasta el procesador Intel Core2Duo actualmente.
Esto se traduce en seis diferentes generaciones de MicroArquitectura para mas de 15 modelos de procesadores. Autor: Alejandro Furfaro - 2008
10
Enfoques
CISC (Complex Instruction Set Computer) Instrucciones que realizan tareas complejas
RISC (Reduced Instruction Set Computer) Instrucciones que realizan operaciones sencillas
Autor: Alejandro Furfaro - 2008
11
Ejemplo CISC (Intel) Prefijo
OpCode
0xF3
0xA4
Instrucción: REP MOVS Copia CX bytes de DS:SI, a ES:DI. MOVS: Copia el dato en DS:SI, a ES:DI. Dependiendo de un flag, SI y DI son incrementados (+1) o decrementados (-1) REP: Prefijo. Decrementa CX y hace que se repita la operación hasta que CX llegue a 0 Autor: Alejandro Furfaro - 2008
12
Ejemplo RISC La misma instrucción implementada en una MIPS: Asumamos que en $s3 esta el fuente, $s4 el destino y $s5 es el contador bucle: lb $t0,0,($s3) ; sb $t0,0, $s4 ; add $s3,$s3,1 add $s4,$s4,1 sub $s5,$s5,1 be $s5,0,fin j bucle fin:
t0 = mem[s3] mem[s4] = t0
Autor: Alejandro Furfaro - 2008
13
Ciclo de instrucciones: Etapas clock Búsq. Instruc.
Decod
Busq. Operando
Ejec
Result
Requiere una cantidad de hardware considerable. En los procesadores sencillos solo una parte del hardware se activa en un determinado momento: la que se necesita para resolver la micro operación. Este método es poco eficiente. En nuestro ejemplo el procesador podrá ejecutar una instrucción cada 5 ciclos de clock Autor: Alejandro Furfaro - 2008
14
Pipeline de instrucciones
Técnica que permite superponer en el tiempo la ejecución de varias B usq. B usq. instrucciones a la vez In st. 1 In st. 2 No requiere hardware adicional. Solo se necesita D e c .F I lograr que todas las partes In st. 1 del procesador trabajen a la vez Trabaja con el concepto de una línea de montaje:
Cada operación se descompone en partes Se ejecutan en un mismo momento diferentes partes de diferentes operaciones Cada parte se denomina etapa (stage)
B usq. B usq. B usq. Busq. B usq. In st. 3 In st. 4 In st. 5 In st. 6 In st. 7 D ec. D ec. D ec. D ec. D ec. In st. 2 In st. 3 In st. 4 In st. 5 In st. 6 B usq. O p. 1
B usq. O p. 2
B usq. O p. 3
Busq. O p. 5
E je c . E je c . E je c . E je c . In st. 1 In st. 2 In st. 3 In st. 4 E s c r ib . E s c r ib . E s c r ib . Res. 1 Res. 2 Res. 3
Resultado Una vez en régimen ejecuta a razón de una instrucción por ciclo de clock
Autor: Alejandro Furfaro - 2008
B usq. O p. 4
15
Etapas de un pipeline
Podemos desagregar mas las micro operaciones y generar pipelines de mas etapas. Ej:
Autor: Alejandro Furfaro - 2008
16
Etapas de un pipeline
Incluir el chequeo de interrupciones
Autor: Alejandro Furfaro - 2008
17
Profundidad del pipeline. Casos concretos μArchitecture Pipeline stages ARM7TDMI(-S) 3 ARM7EJ-S 5 ARM810 5 ARM9TDMI 5 ARM1020E 6 XScale PXA210/PXA250 7 ARM1136J(F)-S 8 ARM1156T2(F)-S 9 ARM Cortex-A5 8 ARM Cortex-A8 13 AVR32 AP7 7 AVR32 UC3 3 DLX 5 Intel P5 (Pentium) 5 Intel P6 (Pentium Pro) 14 Intel P6 (Pentium III) 10 Autor: Alejandro Furfaro - 2008
μArchitecture Pipeline stages Intel NetBurst (Willamette) 20 Intel NetBurst (Northwood) 20 Intel NetBurst (Prescott) 31 Intel NetBurst (Cedar Mill) 31 Intel Core 14 Intel Atom 16 LatticeMico32 6 R4000 8 StrongARM SA-110 5 SuperH SH2 5 SuperH SH2A 5 UltraSPARC 9 UltraSPARC T1 6 UltraSPARC T2 8 WinChip 4 LC2200 32 bit 5
18
Pipeline de seis etapas
Autor: Alejandro Furfaro - 2008
19
Efecto de un branch en un Pipeline de seis etapas
Autor: Alejandro Furfaro - 2008
20
Branchs versus eficiencia del pipeline Para
tratar de minimizar este impacto se implementan unidades de predicción de saltos.
Criterios Asumir
que nunca se salta
Asumir
que siempre se salta
Predecir Branch
por OpCOde de las instrucciones previas.
Target Buffer
Utilizar
una memoria ultrarrápida con una tabla de historia de saltos.
Autor: Alejandro Furfaro - 2008
21
Predicción de saltos Ej: JECXZ continuar
Asumir que nunca se salta
otro: lodsd ; aqui hacemos algo con eax stosb Asumir que loop otro
siempre se salta
continuar:
Autor: Alejandro Furfaro - 2008
22
Branch Target Buffer
Con un contador de 2 bits se implementa una máquina de estados.
Cada vez que salta incrementa. Cada vez que no salta decrementa. En los extremos de cuenta, satura.
Con los dos valores mas bajos del contador predice “No Saltar”
Con los dos mas altos predice “Saltar”
Autor: Alejandro Furfaro - 2008
23
Branch Target Buffer
Autor: Alejandro Furfaro - 2008
Algoritmo que salta una vez cada dos.
La máquina arranca “Strongly Not Taken”
Pasa de “Strongly Not Taken” a Weakly Not Taken”, y vuelve a “Srongly Not Taken”.
No acierta nunca!!
Con un buffer puede corregir y la máquina de estados avanza entre los estados 2 y 3 y predice correctamente24
Arquitectura Superescalar
Arquitectura de procesamiento en la que se puede iniciar varias instrucciones en forma simultánea y ejecutarse en forma independiente El pipeline permite que varias instrucciones estén ejecutándose en un mismo momento, pero siempre que se encuentren cada una en diferentes etapas del pipeline Un procesador superescalar extiende este paralelismo permitiendo que en una etapa del pipeline se puedan ejecutar varias instrucciones en forma independiente en un mismo ciclo de clock Existen dos modelos para lograr este efecto
Super pipeline Superescalar
Autor: Alejandro Furfaro - 2008
25
Arquitectura superescalar de dos vías. Dos Pipelines de instrucciones Al tener dos unidades de ejecución paralelas, se duplica la actividad interna del procesador alcanzando la velocidad teórica de dos instrucciones por ciclo de clock
Autor: Alejandro Furfaro - 2008
26
Limitaciones al modelo superescalar
Dos o mas instrucciones compiten por acceso en el mismo momento al mismo recurso:
Registro. Dirección de Memoria Unidad funcional del procesador
Las instrucciones de transferencia de flujo (denominadas branch, y que son generalmente saltos, o call), hacen que todas las que vienen a continuación sean descartadas de las etapas del pipeline en el que se ejecuta la instrucción de transferencia de flujo. Instrucciones con interdependencia de resultados. Una instrucción en la que uno de los operandos es el resultado de otra que se está ejecutando al mismo tiempo, debe ser detenida hasta que se obtenga el resultado mencionado. Autor: Alejandro Furfaro - 2008
27
Arquitectura super pipeline de dos vías. Cada etapa del pipeline se subdivide en su etapas de modo de procesar cada etapa varias instrucciones por cada ciclo de clock
Autor: Alejandro Furfaro - 2008
28
Comparaciones
Autor: Alejandro Furfaro - 2008
29
Efecto de las Dependencias
Autor: Alejandro Furfaro - 2008
30
Casos de Pipelining en el IA-32
Autor: Alejandro Furfaro - 2008
31
Ejemplo de Super pipeline: Pentium IV
Autor: Alejandro Furfaro - 2008
32
Memoria Cache
Memorias: Evolución Pioneros: Maurcice Wilkes con la primer memoria de tanque de mercurio para la computadora EDSAC. 2 bytes: 1947.
Visionarios…. "640K debe ser suficiente para cualquiera.” Bill Gates, 1981
Autor: Alejandro Furfaro - 2008
34
Tecnología de memorias: RAM Dinámica CAS RAS Cd
Buffer
Bit de datos de salida al bus
Transistor
Diagrama de un bit elemental de DRAM (Dynamic RAM).
Almacena la información como una carga en una capacidad espuria de un transistor. Una celda (un bit) se implementa con un solo transistor ⇒ máxima capacidad de almacenamiento por chip. Ese transistor consume mínima energía ⇒ Muy bajo consumo. Al leer el bit, se descarga la capacidad ⇒ necesita regenerar la carga ⇒ aumenta entonces el tiempo de acceso de la celda. Autor: Alejandro Furfaro - 2008
35
Tecnología de memorias: RAM Estática Línea de Bit
Línea de Bit Selección
1
3
4
2
5
6
Diagrama del biestable de un bit básico de SRAM (Static RAM).
Almacena la información en un biestable. Una celda (un bit) se compone de seis transistores ⇒ menor capacidad de almacenamiento por chip. 3 transistores consumen energía máxima en forma permanente y los otros 3 consumen mínima energía ⇒ Mayor consumo La lectura es directa y no destructiva ⇒ tiempo de acceso muy bajo Autor: Alejandro Furfaro - 2008
36
Estructura de Bus clásica
CONTROL
DATOS
ADDRESS
Procesador
Bus de Control
Buffer de Datos
Buffer de Address
Bus Local del Procesador
BUS DEL SISTEMA
Memoria del Sistema Autor: Alejandro Furfaro - 2008
E/S del Sistema
Desde fines de los años 80, los procesadores desarrollaban velocidades muy superiores a los tiempos de acceso a memoria.
En este escenario, el procesador necesita generar wait states para esperar que la memoria esté lista (“READY”) para el acceso.
¿Tiene sentido lograr altos clocks en los procesadores si no puede aprovecharlos por tener que esperar (wait) a la memoria? 37
Crecimiento de la velocidad de clock de las CPU versus memoria 1100 1000
Pentium III 1GHz
900 800 700 600
Pentium II 400 MHz.
500 400
486 DX4 100 MHz.
300 Memorias 200
386 DX 33 MHz
100
89
90
Autor: Alejandro Furfaro - 2008
91
92
93
94
95
96
97
98
99
00
38
El problema
RAM dinámica (DRAM)
Consumo mínimo. Capacidad de almacenamiento comparativamente alta. Costo por bit bajo. Tiempo de acceso alto (lento), debido al circuito de regeneración de carga. Si construimos el banco de memoria utilizando RAM dinámica, no aprovechamos la velocidad del procesador.
RAM estática (SRAM)
Alto consumo relativo. Capacidad de almacenamiento comparativamente baja. Costo por bit alto. Tiempo de acceso bajo (es mas rápida). Si construimos el banco de memoria utilizando RAM estática, el costo y el consumo de la computadora son altos.
Autor: Alejandro Furfaro - 2008
39
La solución: Memoria cache
Se trata de un banco de SRAM de muy alta velocidad, que contiene una copia de los datos e instrucciones que están en memoria principal
El arte consiste en que esta copia esté disponible justo cuando el procesador la necesita permitiéndole acceder a esos ítems sin recurrir a wait states.
Combinada con una gran cantidad de memoria DRAM, para almacenar el resto de códigos y datos, resuelve el problema mediante una solución de compromiso típica.
Requiere de hardware adicional que asegure que este pequeño banco de memoria cache contenga los datos e instrucciones mas frecuentemente utilizados por el procesador. Autor: Alejandro Furfaro - 2008
40
Referencias
El tamaño del banco de memoria cache debe ser:
Suficientemente grande para que el procesador resuelva la mayor cantidad posible de búsquedas de código y datos en esta memoria asegurando una alta performance
Suficientemente pequeña para no afectar el consumo ni el costo del sistema.
Se dice que se logra un hit cuando se accede a un ítem (dato o código) y éste se encuentra en la memoria cache. En caso contrario, se dice que el resultado del acceso es un miss. Se espera un hit rate lo mas alto posible
hit rate =
Cantidad de accesos con presencia en Memoria Cache Cantidad total de accesos a memoria
Autor: Alejandro Furfaro - 2008
41
Operación de Lectura de memoria Inicio CPU envía señal de lectura
Hit!!
Busca ítem en cache
Busca ítem en cache y envía a la CPU
Miss
Busca ítem en memoria del sistema Escribe ítem en el cache
Actualiza directorio cache
Envía ítem a la CPU
Fin Autor: Alejandro Furfaro - 2008
42
Estructura de Bus del sistema con cache
Memoria cache
CONTROL
ADDRESS
DATOS
CONTROL
Procesador
Bus Local del procesador
Controlador de Memoria caché
Buffer de Datos
Buffer de Address
Bus Local del controlador cache
Bus de Control
Autor: Alejandro Furfaro - 2008
BUS DEL SISTEMA
43
Como trabaja el controlador cache
El controlador cache trabaja mediante dos principios que surgen de analizar el comportamiento de los algoritmos de software que se emplean habitualmente.
Principio de vecindad temporal: temporal Si un ítem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta.
Principio de vecindad espacial: espacial Si un ítem es referenciado, es altamente probable que sean referenciados sus ítems vecinos.
Ejemplo: Algoritmo de convolución for (i = 0 ; i < 256 ; i++ ){ suma = 0.0f; for (j = 0 ; (j Tamaño Cache L1 Velocidad Cache L1 > Velocidad Cache L2
Autor: Alejandro Furfaro - 2008
CPU
Cache controller System Memory (DRAM)
56
Coherencia de cache
Protocolo MESI M - Modified: Línea presente solamente en éste cache que varió respecto de su valor en memoria del sistema (dirty). Requiere write back hacia la memoria del sistema antes que otro procesador lea desde allí el dato (que ya no es válido). E – Exclusive: Línea presente solo en esta cache, que coincide con la copia en memoria principal (clean). S – Shared: Línea del cache presente y puede estar almacenada en los caches de otros procesadores. I – Invalid: Línea de cache no es válida. Aplica a cache L1 de datos y L2/L3 Para cache L1 de código solo Shared e Invalid
Autor: Alejandro Furfaro - 2008
57
Implementaciones prácticas de memoria cache (1)
Intel 80486
8 Kbytes de cache L1 on chip Tamaño de línea: 16 bytes Organización asociativa de 4-vías
Pentium
dos caches on-chip, uno para datos y otro para instrucciones. Tamaño de cada cahe: 8 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 4-vías
PowerPC 601
cache on-chip de 32 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 8-vías
Autor: Alejandro Furfaro - 2008
58
Implementaciones prácticas de memoria cache (2)
PowerPC 603
PowerPC 604
Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 8 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 2-vías (organización del cache más simple que en el 601 pero un procesador mas fuerte) Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 16 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 4-vías
PowerPC 620
Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 32 Kbytes Tamaño de línea: 64 bytes Organización asociativa de 8-vías
Autor: Alejandro Furfaro - 2008
59
Micro-Arquitectura 386 80386DX, 80386SX
Antecedentes: Familia iAPx86 de Intel Se
presenta en 1978 con el Microprocesador 8086. Arquitectura
de 16 bits. Intel se compromete a mantener compatibilidad ascendente en los posteriores procesadores En
1982 se presenta el 80286.
Capacidad
de direccionamiento de Memoria 16
Mbytes. Mantiene la arquitectura de 16 bits Incorpora capacidades para implementar Multitarea Autor: Alejandro Furfaro - 2008
61
Procesador 80386DX (1985)
Primer miembro de la Arquitectura IA-32 de Intel Características Extiende la capacidad de los registros internos a 32 bits, manteniendo compatibilidad con los registros de 16 bits de los procesadores iAPx86. Buses de Datos y Direcciones de 32 bits.
Lee palabras de 32 bits en un solo ciclo de bus Direcciona hasta 4 Gbytes de memoria física (RAM).
Unidad de Gestión de Memoria Avanzada
Capacidad de Direccionamiento de 4 Gbytes de memoria Física y 64 Tbytes de Memoria Virtual. Gestión de memoria por Segmentación y por Paginación.
Arquitectura Pipeline avanzada 3 Modos de trabajo
Real Protegido Virtual 86
Autor: Alejandro Furfaro - 2008
62
Procesador 80386DX: Diagrama Interno B.I.U.
M.M.U.
BUS DE DIRECCION EFECTIVA
UNIDAD DE PAGINACION
32
SUMADOR DE 3 ENTRADAS
SUMADOR
32
RGISTROS DESCRIPTORES
32
PLA DE LIMITES Y ATRIBUTOS
ARCHIVO DE REGISTROS
DE
CONTROL
UNIDAD DE DECODIFICACION
DESPLAZADOR SUMADOR MULTIPLICAR DIVIDIR
BUS DE DES PLA ZAM IEN TO
UNIDAD DE EJECUCION
BUS
STATUS FLAG
ALU CONTROL
PRIORIZACION DE REQUERIMIENTOS
DRVER DE DIRECCIONES
C.P.U.
CONTROL DE PIPELINE / TAMAÑO DEL BUS
INTERNO
MULTIPLEXORES / TRANSCEPTORES UNIDAD DE BUSQUEDA
PREDECODIFICADOR DE INSTRUCCIONES
PREBÚSQUEDA / CHEQUEO DE LIMITES
ROM DE CONTROL
COLA DE HASTA 3 INSTRUCCIONES DECODIFICADAS
COLA DE HASTA 16 BYTES DE CÓDIGO
STREAM DE CODIGO DE 32 BITS
HOLD, INTR,NMI, ERROR, BUSY RESET,HLDA
CACHE DE PAGINAS
DECODIFICACION Y SECUENCIAMIENTO
CONTROL
32
PLA DE CONTROL Y ATRIBUTOS
BU S DE DI RE CCI ON ES LIN EAL ES
UNIDAD DE TESTEO Y PROTECCION
UNIDAD DE CONTROL DEL BUS
CON TRO L
BUS DE DIRECCION EFECTIVA
UNIDAD DE SEGMENTACION
BUS DE DIRECCIONES FISICAS
BE0 BE3 A2 - A31 M/IO, D/C, W/R, LOCK ADS, NA, BS16 READY D0 - D31
32
BUS DE BUSQUEDA DE CODIGO Y TABLA DE PAGINAS
32 BUS DEDICADO A LA ALU
Autor: Alejandro Furfaro - 2008
63
80386 - Pinout P 1 2
5 6 7
N
M
L
K
J
G
F
E
D
C
A8
V ss
V cc
V cc A 31 A 29 A 24
V ss A 18
V cc V ss
A13 A10
A7
A5
V ss
V ss V cc A 28 A 25 V ss A 19
V cc V ss
A12 A9
A6
A4
A3
D 29 V cc V ss
A2
NC
NC
D26 D 27 D 31
V cc V ss
V cc
V ss D 25 D 28
NC
V ss
D 24 V cc V cc
N C IN T R V cc
V cc D 23 V ss 10 11 12 13 14
A
A16 A15 A14 A11
8 9
B
A30 A27 A26 A23 A21 A20 A17
3 4
O
NC
R ESET B U SY# Vss V cc
D 19 D 17 V ss V ss
D 18 D 16 D 15 V cc C LK2 B e0# V cc
V ss
D 13 D 11 V cc D 8
D5
Vss D 1 READY# N C N C N A # B e1# B e2# B e3#
Vss D 9 H LD A D 6
D4
D3
D2
L
K
J
N
M
D0
V ss
D 14 D 12 D 10 V cc D 7
O
2 3 4 5 6 7 8
PREQ NM I ERRO R#
D22 D 21 D 20
P
1
Autor: Alejandro Furfaro - 2008
V c c N C M /IO #
V cc V ss A D S# H O LD B s16# V ss V cc G
F
E
D
C
B
9 10 11 12 13 14
Alimentación.
20 terminales para Vcc y 21 para Vss (o tierra)
Reloj CLK2
Bus de Datos
D0 a D31 Se pueden agrupar en bytes (D0-D7, D8-D15, D16-D23, D24-D31)
Bus de Address A2 a A31 BE0# BE1# BE2# BE3#
A
64
80386: Manejo de Memoria organizada en bytes con 32 líneas de address
0 4 8 C
A 2-A
1 5 9 D
A 2-A
2
A 2-A
E 3 B F
A 2-A
31
D
24
-D
31
D 0-D
16
-D
31
B y te A lin e a d o W o r d N o A l in e a d a D o b le W o r d N o A l in e a d a W o r d N o A l in e a d a B y t e N o A li n e a d o W o r d N o A l in e a d o D o b le W o r d A l in e a d a
31
D 8-D D
31
D i r e c c ió n 0 1 - 2 3 - 6 7 - 8 9 A - B C - F
23
A 2-A
7
15
D 0-D BE
80386
31
0
31
BE
1
BE
2
Be3
CS CS CS CS Autor: Alejandro Furfaro - 2008
65
80386 - Generación de A0 y A1 a partir de BE0-3# BE3# BE2# BE1#
BE0#
A1
A0 = BLE#
BHE#
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
0 0 x 1
0 1 0 0
0 x x 0
0 0 0 0
1 1 1 1
0 0 1 1
0 1 0 1
x x x 1
x x x 1
x x x 0
1 1 1 1 1
0 0 0 0 1
0 0 1 1 0
0 1 0 1 0
0 0 x 1 0
0 1 x 0 0
0 0 x 1 0
1 1
1 1
0 1
1 0
0 0
1 0
0 1
1
1
1
1
x
x
x
Significado
Dword alineada 3 1 eros bytes de dword no alineada * word o 2 1 eros bytes de dword no alineada * * * byte solo o principio de una word o dword no alineada 3 últimos bytes de dword no alineada word no alineada * Byte word alineada o mitad final de una dword no alineada byte byte solo o final de una word o dword no alineada ** BE3
BE1 BE0 00 BE2 00 01 11 10
Autor: Alejandro Furfaro - 2008
0 X 0 0
01
11
10
0 X 0 0
1 1 X X
X X 0 X
A1= BE1.BE0
BE1# BE0#
A1
66
80386 - Generación de A0 y A1 a partir de BE0-3# BE3
BE1 BE0 BE2 00 01 11 10
00
01
11
10
0 X 0 0
1 X 1 1
0 1 X 0
X X 0 X
A0= BE1.BE0+BE2.BE0= BLE# BE1# BE0#
A0
BE2# BE0#
BLE#
BE1 BE3
BE0 00 BE2 00 01 11 10
0 X 0 0
Autor: Alejandro Furfaro - 2008
01
11
10
0 X 0 0
0 0 X 1
X X 1 X
BHE#= BE1.BE30 BE1# BE3#
BHE#
67
80386 - Pinout Señales de estado del ciclo de Bus ciclo de bus = tiempo que transcurre para realizar una transferencia completa por el bus del sistema
W/R# : Write/Read#. M/IO# : Memoria/Input Output#. D/C# : Data/Control#. M/IO# D/C# W/R# 0 0 0 LOCK# 0 0 1 0 1 0 ADS# : Address 0 1 1 1 0 0 Status. 1 0 1
1
Autor: Alejandro Furfaro - 2008
1
0
Tipos de ciclo de Bus Reconocimiento de Interrupción
Bus Inhibido
-
Si -
Lectura de E/S Escritura de E/S
No No
Lectura de código de Memoria HALT SHUTDOWN Dirección = 2 Dirección = 0 BE0# = 1 BE0# = 0 BE1# = 1 BE1# = 1 BE2# = 0 BE2# = 1 BE3# = 1 BE3# = 1 A2-A31 = 0 A2-A31 = 0
No
Lectura de datos de memoria
No
Algunos ciclos
68
80386 - Pinout
Señales de estado del ciclo de Bus
Marcan la finalización de un ciclo de bus, el ancho del bus de datos para cada ciclo, y la posibilidad de adelantar durante el ciclo de bus en curso información correspondiente al ciclo de bus siguiente
Ready#
BS16# : Bus Size 16.
NA# : Next Address.
8
80386
HOLD : Requerimiento del bus.
HLDA : Reconocimiento de
requerimiento de bus.
D0-D7
MEMORIA CS
30 A2-A31
BE3# BE2# BE1# BE0#
Señales de Interrupción. INTR : INTerrupt Request.
NMI : Non Maskable Autor: Alejandro Furfaro - 2008
MEMORIA CS
8
Arbitraje del Bus
D8-D15
Interrupt
A1 LOGICA AUXILIAR
BLE# BHE#
69
Ejemplo: Interfaz entre la CPU 386DX y el controlador cache 82385 12
ó 13
Desde circuito de OSC/RESET
32
82385
A la memoria CACHE 4 2 2
CALEN
CLK2
CT/R#
RESET
CS0#-CS3#
CLK2
ADS#
ADS#
NA#
COEA#-COEB# CWEA#-CWEB#
NA#
LOCK#
BE0#-BE3#
BHLDA
READYO#
WBS
BRDYEN#
FLUSH
BREADY#
MISS#
BAOE#
BNA#
LDSTB
BADS#
DOE#
BBE0#-BBE3#
BT/R#
A2-A31 D0-D31 READY#
READY de otro 386DX
CAB OE# DIR SBA CBA
32
Autor: Alejandro Furfaro - 2008
BE0#-BE3#
BACP
BLOCK#
4
M/IO#,D/C#,W/R#
30 32
A2-A31
READY#
LOCK#
3 4
M/IO#,D/C#,W/R#
BHOLD
386D X
RESET
A
D 4x646
CP OE#
BUS LOCAL DEL 386DX
4x374
374
Q
B SAB
BD0-BD31
D
CP OE#
30
Q
BA2-BA31
3
BM/IO# BD/C# BW/R#
BREADY
70
Micro-Arquitectura 486
80486DX, 80486SX, 80486DX2, 80486DX4
Procesador 80486: Diagrama Interno
Autor: Alejandro Furfaro - 2008
72
Cache Multi Level (L1, y L2 cache)
Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta arquitectura Autor: Alejandro Furfaro - 2008
73
Micro-Arquitectura P5 Pentium, Pentium MMX
Procesador Pentium: Características
Arquitectura Superescalar
Dos pipelines de instrucciones
U pipeline: Ejecuta instrucciones enteras o de punto flotante (equivale a la Unidad de ejecución del 486) V pipeline. Ejecuta solo instrucciones enteras en paralelo con el U.
Dependencia de Información. Dependencia de Recursos.
Bus externo de datos de 64 líneas
Branch Prediction
Asegura la lectura de dos instrucciones a la vez ya que ejecuta dos instrucciones a la vez Branch Target Buffer
Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código (8 Kbytes) Autor: Alejandro Furfaro - 2008
75
Procesador Pentium: Diagrama Interno
Branch Prediction
Bus externo de datos de 64 líneas. Asegura la lectura de dos instrucciones a la vez para que pueda ejecutar dos instrucciones a la vez
Autor: Alejandro Furfaro - 2008
Dos pipelines de instrucciones U pipeline: Ejecuta instrucciones enteras V pipeline. Ejecuta o solo de punto flotante instrucciones (equivale a laparalelo Unidad enteras en decon ejecución el U. del 486)
Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código 76 (8 Kbytes)
Branch Prediction
Emplea Predicción estática de salto (es decir, asume que siempre salta).
Brach Target Buffer (BTB).
El procesador guarda en ese buffer la dirección destino de una instrucción de branch durante la etapa de decodificación.
En el caso de que la predicción almacenada por la Unidad de decodificación del pipeline (U o V) haya sido exacta la instrucción se ejecuta sin atascos ni flushes del pipeline.
Si al momento de la evaluación de la dirección de salto esta no coincide con la predicción almacenada en el BTB, debe buscarse el target correcto y se flushea el contenido de los pipelines.
4 ciclos de clock de demora en V pipeline
3 ciclos de clock de demora en el U Pipeline
Autor: Alejandro Furfaro - 2008
77
Interrupciones en SMP: El APIC
A partir del Procesador Pentium, Intel agregó al chip del procesador un módulo llamado APIC: Advanced Programable Interrupt Controller,
Controlador de Interrupciones embebido que soporta multiprocesamiento
El APIC requiere ser específicamente habilitado.
Su utilidad se nota cuando se diseñan sistemas con mas de un procesador (Symmetrical Multi Processor = SMP)
En un sistema Mono Procesador, se puede trabajar sin habilitarlo, y usar los conocidos PIC’s 8259 presentes en el motherboard (siempre!! Necesario para asegurar Compatibilidad)
Si se lo habilita el procesador transforma los pines de interrupción en:
PICCLK: Terminal de sincronización con el otro procesador
PICD0 y PICD1 bus de comunicación de dos alambres
Autor: Alejandro Furfaro - 2008
78
Interrupciones en SMP: El APIC
El I/O APIC está incluido en el chipset que acompaña a cada procesador
Si tenemos, por ejemplo, 4 procesadores, los APICs se conectan a través de un juego de tres líneas y por cada requerimiento de interrupción recibido desde los dispositivos de E/S conectados, el I/O APIC reparte las interrupciones entre los diferentes procesadores de acuerdo a las condiciones de disponibilidad obrando como balanceador de carga
Autor: Alejandro Furfaro - 2008
79
Interrupciones en SMP: El APIC
Autor: Alejandro Furfaro - 2008
80
APIC Interrupt Controller
Fuentes de interrupciones del APIC:
Locales: Ingresan por los pines del procesador (con el APIC habilitado se llaman LINT0 y LINT1).
Externas: El I/O APIC externo genera cuando recibe una interrupción desde algún dispositivo de E/S en particular.
Inter Processor Interrupts (IPIs): Son enviadas y recibidas por un procesador para interrumpir a otro o a un grupo de procesadores conectados al mismo bus de sistema.
Timer del APIC: Se lo programa para enviar a éste interrupciones periódicas
Overflow en el timer de Monitoreo de performance.
Sensor térmico. Estos procesadores se auto interrumpen cuando su temperatura supera un valor tope determinado.
Error interno en el APIC. SI se accede a un registro inexistente por ejemplo, el APIC se auto genera una interrupción.
Autor: Alejandro Furfaro - 2008
81
Micro-Arquitectura P6 Pentium Pro, Pentium II, Pentium II Xeon, Celeron, Pentium III, Pentium III Xeon
Micro Arquitectura Three core engines System Bus
L2 Cache
Bus Interface Unit L1 ICache Fetch
Fetch / Decode Unit
Dispatch /Execute Unit
L1 DCache Load
Store
Retire Unit
Instruction Pool Autor: Alejandro Furfaro - 2008
Emplea Dynamic Instruction Scheduling Basado en una ventana de instrucciones y no en un pipeline superescalar. Las instrucciones se traducen en micro operaciones básicas (µops) Las µops ingresan a un pool (ventana) en donde se mantienen para su ejecución Los tres cores tienen plena visibilidad de esa ventana de ejecución Se aplica la técnica de ejecución fuera de orden y ejecución especulativa. La unidad de despacho y ejecución mantiene el modelo superescalar y lo combina con un super pipeline de 20 etapas 83
Funcionamiento del Core Consideremos el siguiente código genérico r1