Sunteți pe pagina 1din 100

INSTITUTO POLITCNICO NACIONAL

CENTRO DE INVESTIGACION EN COMPUTACION


LABORATORIO DE MICROTECNOLOGA Y SISTEMAS EMBEBIDOS
Dr. Marco Antonio Ramrez Salinas
Jerarqua del Sistema de Memoria
Cache de
Instrucciones
Cache de
Datos
Tag de
Instrucciones
TLBs
Tag de
Datos
Procesador MIPSR10000
Un poco de Historia
John Von Neumann
Nace en Budapest, Hungria, (28/diciembre/1903-08/febrero/1957)
1926: Titulo de Ingeniero Qumico
1926: Titulo de Dr. en Matemticas
1926: Es profesor visitante de la Universidad de Gttingen,
en el Centro de la matemtica alemana, presidido por David Hilbert.
1927-1929: obtiene un puesto de profesor
(Privatdozent==pagado por alumnos)
en la Universidad de Berln.
Algebra, teora de conjuntos, teora cuntica.
Publicaba un articulo por mes.
1931: Investigador del IAS de la universidad de Princeton EEUU.
1937: Teniente del ejercito de EEUU.
1943: Se incorpora al proyecto Manhattan
La necesidad de realizar un gran numero de clculos hace indispensable, la construccin a gran escala de
maquinas de calcular".
En 1944, von Neumann se incorpora al proyecto que diseara el ENIAC, luego el EDVAC y,
posteriormente, se involucra en el diseo lgico de las computadoras.
En 1946 escribe, junto con Goldstine, un reporte para el ejercito donde aparece, por primera vez, la
idea de que una computadora debe tener una memoria central en la que se almacenen programas
que especifiquen las acciones que debe llevar a cabo la maquina para realizar distintas tareas.


Ideally one would desire an indefinitely large memory capacity such that any
particular word would be immediately available

We are forced to recognize the possibility of constructing a hierarchy of memory
, each of which has greater capacity than the preceding but which is less quickly
accessible

A. W. Burks, H. H. Golstine and J. Von Newmann

Preliminary Discussion of the Logical Design of an Electric Computing Instrument,1946


David A. Patterson and John L. Hennessy, Computer Organization & Design, 2
nd
Edition 1997 .
Diseo de la Jerarqua de Memoria

Que nos entrega un compilador
Introduccin:

Una herramienta de Compilacin traduce las instrucciones de alto nivel, a un
conjunto de instrucciones de una arquitectura especifica (ISA)

Una herramienta llamada Ensamblador, traduce el lenguaje ensamblador a
instrucciones en binario. Los ensambladores nos proporcionan una representacin
mas amigable que los 0s y 1s de las computadoras .

Un ensamblador lee un archivo fuente en lenguaje ensamblador (.asm) y nos
produce un archivo objeto (.obj) conteniendo las instrucciones de mquina y una
bitcora de informacin que nos ayuda a combinar varios archivos .obj en un
programa (.exe)

Estructura de un compilador
Formato de archivos objeto
ENCABEZADO: describe el tamao y posicin de las otras piezas del archivo.
SEGMENTO DE TEXTO: Contienen el cdigo en lenguaje maquina de las rutinas del archivo
fuente.
SEGMENTO DE DATOS: Contienen la representacin binaria de los datos del archivo fuente.
INF. DE REASIGNACION: Identifica instrucciones y datos que dependen de asignaciones
absolutas.
TABLA DE SIMBOLOS: Asocia direcciones con etiquetas externas en el archivo fuente y lista las
referencias no resueltas.
INF. PARA DEBUG: Contienen informacin concisa de cmo fue compilado el programa. -lneas,
instrucciones, estructuras, etc.
Los procesos que producen un archivo ejecutable
Archivo1.asm
Archivo2.asm
Archivo3.asm
ensamblador
ensamblador
ensamblador
Achivo1.obj
Achivo2.obj
Achivo3.obj
Linker
Liberias
Archivo.exe
Convirtiendo cdigo C a cdigo objeto Capitulo 3
Programa en Lenguaje C
(p1.c, p2.c)
Programa en Lenguaje Ensamblador
(p1.s, p2.s)
Programa Objeto
(p1.o, p2.o)
Programa Ejecutable
(p1, p2)
Libreras
Estticas
(*.a)
Compilador
Ensamblador
Ligador
Texto
Texto
Binario
Binario
Cdigo: archivos de texto
Compila con el comando:
-gcc p1.c, p2.c -o p.exe
Optimizaciones: - O
-O0:
-O1:
-O2:
Enlace (Link)
-Enlaza programas p1.o,
p2.o con libreras estticas.
Salida (-o p.exe)
-Pone el programa binario
en el archivo p.exe




.
Ensamblador de MIPS
# suma de dos enteros ASM

.data
A: .word 2011
B: .word -2011
C: .word 00

.text
lw $t4, A($0) # carga A al registro t4
lw $t5, B($0) # carga B al registro t5
add $t3, $t4, $t5 # suma A+B
sw $t3, C($0) # almacena resultado en C
/* Suma de enteros C */
int A=2011;
int B=-2011;
int C;

C = B + C;


Lenguaje Mquina MIPS (Archivo.exe)
00111100000000010001000000000001

00000000001000000000100000100001

10001100001011000000000000000000

00111100000000010001000000000001

00000000001000000000100000100001

10001100001011010000000000000100

00000001100011010101100000100000

00111100000000010001000000000001

00000000001000000000100000100001

10101100001010110000000000001000
00000000000000000000011111011010

11111111111111111111100000100110

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000
.text
.data
Modelo de Ejecucin
Memoria de Instrucciones/Datos
31 0 63 32 95 64 127 96
31 0 63 32 95 64 127 96
31 0 63 32 95 64 127 96
31 0 63 32 95 64 127 96
31 0 63 32 95 64 127 96
31 0 63 32 95 64 127 96
CLK
1 2 3 4
Bsqueda y Extraccin de Instrucciones
Fetch-Queue
(Fetch) Es el primer estado del procesador y es el responsable de extraer las instrucciones de
memoria, este estado debe almacenar las instrucciones y contador de programa PC en un registro
inter-etapa para que en el siguiente ciclo se envi al prximo estado.
Acceso a memoria de datos
(MEM) Es el estado del pipeline que almacena datos de los registros fsicos a la memoria y carga
datos de la memoria a los registros fsicos del procesador.
Memoria de Instrucciones/Datos
31 0 63 32 95 64 127 96
31 0 31 0
31 0 31 0
31 0 31 0X0FF 0
31 (FF552408) 0 31 0X10 0 0
31 0 63 32 95 64 127 96
Cola de L/S
Registros Datos Direcciones
31 (FF552408) 0
31 (AA552223) 0 31 (AA552223) 0
SW $r3, 0X100($r0)
LW $r4, 0X0FF($r0)
Problema: Los tiempos de acceso (IF, MEM) estn limitados por la
velocidad del procesador (CLK) y la respuesta de la memoria.

Solucin: Dividir la memoria en cache para bsqueda de instrucciones
(IL1) y en memoria de acceso de datos (DL1):
- Se asume latencia de HIT para determinar el periodo de reloj del pipeline.
- Se para (STALL) el procesador en fallos (misses).

Variantes:
Separadas las Memorias Cache de I & D
- Cache L1 en el chip del CPU y L2 - L3 fuera del chip.
- Cache L1 y L2 en el chip del CPU, L3 fuera del chip.
- Cache L1, L2 y L3 en el Chip.
Diseo de la Jerarqua de Memoria

Diseo de la Jerarqua de Memoria


Anlisis de diseo y evaluacin de la jerarqua de memoria basada en tres
conceptos:

Hacer el caso comn rpido
Principio de localidad (Temporal y Espacial).
Los circuitos pequeos son mas rpidos.

Software de evaluacin:
CACTI-3.2 (consumo de energa y tiempo de ciclo)
SimpleScalar 3.0d (desempeo del CPU)

Software de diseo y plataformas de desarrollo:
HDL y FPGAs
Tanner
Mentor Graphics

Modelo de Ejecucin considerando memoria Cache
Localidad Temporal (localidad en el tiempo): si un dato es
referenciado, este tiende a ser referenciado de nuevo pronto.

Localidad Espacial (localidad en el espacio): si un dato es
referenciado, los datos cuyas direcciones estn cercanas a este, tienden
a ser referenciados pronto.









Diseo de la Jerarqua de Memoria

Existen varios niveles en una jerarqua de memoria tpica:
CPU
Registers
Cache L1
Cache L2
Main Memory
HDD
Cache
Main Memory
Virtual Memory
Capacity
S
p
e
e
d
Technology cost / GB Access time
SRAM ~ $10,000 ~ 1 ns
DRAM ~ $100 ~ 100 ns
Hard Disk ~ $1 ~ 10,000,000 ns
Diseo de la Jerarqua de Memoria

?

En cada nivel, la unidad de informacin
que esta presente o no es llamada un
bloque (BLOCK).

Usualmente se transfiere un bloque entero
cuando se transfiere informacin entre
niveles.
CPU
Registers
Cache L1
Cache L2
Data are Tranferred
Diseo de la Jerarqua de Memoria
Cache de Mapeo Directo L1: con 8-
Localidades
Memoria L2: 0-31 direcciones se mapean a
las 8-localidades de Cache L1.

Porque cada localidad de la cache L1 puede
contener datos de diferentes localidades de
memoria L2.

Preguntas:

Como puedo saber si la palabra que se
busca esta en cache L1 o no?

Como puedo saber si el dato en la cache L1,
corresponde a la misma palabra requerida en
L2?
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
0
1
1
1
1
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
(
0
0
)
(
0
1
)
(
0
2
)
(
0
3
)
(
0
4
)
(
0
5
)
(
0
6
)
(
0
7
)
(
0
8
)
(
0
9
)
(
1
0
)
(
1
1
)
(
1
2
)
(
1
3
)
(
1
4
)
(
1
5
)
(
1
6
)
(
1
7
)
(
1
8
)
(
1
9
)
(
2
0
)
(
2
1
)
(
2
2
)
(
2
3
)
(
2
4
)
(
2
5
)
(
2
6
)
(
2
7
)
(
2
8
)
(
2
9
)
(
3
0
)
(
3
1
)
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
(
0
0
)
(
0
1
)
(
0
2
)
(
0
3
)
(
0
4
)
(
0
5
)
(
0
6
)
(
0
7
)
Diseo de la Jerarqua de Memoria
Accediendo a Cache L1
Index V Tag Data
000 N
001 N
010 N
011 N
100 N
101 N
110 N
111 N
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10110 (22d)
Index V Tag Data
000 N
001 N
010 N
011 N
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss

Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 11010 (26d)
Index V Tag Data
000 N
001 N
010 Y 11 Memory(11010)
011 N
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10110 (22d)
Index V Tag Data
000 N
001 N
010 Y 11 Memory(11010)
011 N
100 N
101 N
110 Y 10 Memory(10110)
111 N
Hit
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 11010 (26d)
Index V Tag Data
000 N
001 N
010 Y 11 Memory(11010)
011 N
100 N
101 N
110 Y 10 Memory(10110)
111 N
Hit
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10000 (16d)
Index V Tag Data
000 Y 10 Memory(10000)
001 N
010 Y 11 Memory(11010)
011 N
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 00011 (03d)
Index V Tag Data
000 Y 10 Memory(10000)
001 N
010 Y 11 Memory(11010)
011 Y 00 Memory(00011)
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10000 (16d)
Index V Tag Data
000 Y 10 Memory(10000)
001 N
010 Y 11 Memory(11010)
011 Y 00 Memory(00011)
100 N
101 N
110 Y 10 Memory(10110)
111 N
Hit
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10010 (18d)
-MISS!!!-
Index V Tag Data
000 Y 10 Memory(10000)
001 N
010 Y 11 Memory(11010)
011 Y 00 Memory(00011)
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss
Diseo de Memoria Cache L1
Accediendo Cache L1, Direccin: 10010 (16d)
-Remplazo !!!-
Index V Tag Data
000 Y 10 Memory(10000)
001 N
010 Y 10 Memory(10010)
011 Y 00 Memory(00011)
100 N
101 N
110 Y 10 Memory(10110)
111 N
Miss
Diseo de Memoria Cache L1
Accediendo Cache L1 (Resumen)
Decimal Binary Address of
reference
Hit/Miss Assign Cache Block
22 10110 Miss 22 % 8 =6
26 11010 Miss 26 % 8 = 2
22 10110 Hit 22 % 8 = 6
26 11010 Hit 26 % 8 =2
16 10000 Miss 16 % 8 = 0
03 00011 Miss 3 % 8 = 3
16 10000 Hit 16 % 8 = 0
18 10010 Miss 18 % 8 =2
Diseo de Memoria Cache L1
Index: Usado para Seleccionar el
block.
Tag: Usado para comparar con el
valor del campo de Tag de la
Cache.
Offset: Usado para seleccionar el
byte del campo de datos.
Campos de direccin
1 0
(BYTE OFFSET)
11...2
(INDEX)
31....12
(TAG)
ADDRESS
V Tag Data Index
0
1
2
...
...
1023
1022
1021
=
Hit
Data
Subdivisin de la Direccin de Memoria
(MIPS R3000) Cache
Contiene 16K Blocks de una palabra por bloque 1 0
(BYTE OFFSET)
15...2
(INDEX)
31....16
(TAG)
ADDRESS
32 bits 16 bits
V Tag Data Index
0
1
2
...
...
16384
16387
16386
=
Hit
Data
/32 /16
/14 /16
1
6
K

e
n
t
r
i
e
s
64KB = 16K words = 2
14
words

Tag = 32-14-2 = 16bits
Data = 32 bits
Valid bit = 1 bit

Total Cache size=
2
14
x(32+16+1)=784Kbits=96KB
DEC STATION CACHE
Aciertos y Fallos en Cache
Aciertos en Cache (HIT): EL CPU procede de forma normal.
Fallos en Cache:
-Se para el proceso de Fetch y se paran los dems estados del
procesador.
-Se remplaza el bloque del siguiente nivel de Cache.
-Se restablece la etapa de Fetch
-Se completa el acceso a memoria.
MIPS R3000
Procesador de 32 bits, L1=64KB, Tec=1.2um
Componentes de Tiempo de CPU
Ciclos de ejecucin de un programa
Incluye tiempo de HIT en la Cache
Ciclos de paro de Memoria
Principalmente debido a fallos (MISS) en Cache
Midiendo el Desempeo de la Cache
n Penalizaci Ciclos Fallos Frec
programa
Mem Accesos Nm
Mem Paro Ciclos _ _
_ _
_ _
n Penalizaci Ciclos
Inst
Fallos
programa
Inst Nm
Mem Paro Ciclos _
_
_ _
Clk Ciclo Tiempo Mem Paro Ciclos CPU Exe Ciclos CPU Tiempo _ _ ) _ _ _ _ ( _
Dado:
I-Cache (MISS RATE) = 2%
D-Cache(MISS RATE)= 4%
Ciclos de Penalizacin (Miss Penalty) = 100 Ciclos
Base CPI ( con Cache ideal)= 2
LD y ST son el 36% de las instrucciones
Evaluando Ciclos por Instruccin (por penalizacin)
I-Cache = 0.02 X 100 = 2
D-Cache=0.04 X 0.36 X 100 = 1.44
Ciclos de CPU por Paro de Memoria =2+1.44=3.44
CPI Actual
CPI con Paro de Memoria =2+3.44=5.44
Tiempo de CPU Con Paro de Memoria/Tiempo de CPU ideal=
IxCPI
stall
xCLK Cycle/IxCPI
ideal
xCLK Cycle=5.44/2=2.72 mas rpido

Ejemplo: Desempeo de la Cache
EL tiempo de HIT tambin es importante para el desempeo de la memoria.
Average Memory Acces Time (AMAT)
AMAT= HIT
time
+ MISS
rate
X MISS
Penalty

EJEMPLO:

CPU Clk
time
= 1ns
HIT
time
= 1Ciclo
MISS
Penalty
= 20 Ciclos
I-Cache MISS
rate
=5%

AMAT=1+0.05X20=2ns (2 ciclos por instruccin)

Tiempo de Acceso Promedio
Cuando el desempeo del CPU se incrementa:
La penalizacin por fallos es mas significante
Decrecer el CPI base:
Produce mayor proporcin de tiempo gastado en paro de memoria
por fallos
Incrementar velocidades de CLK
Paros de Memoria requieren mas ciclos de reloj



No se deberia ignorar el comportamiento de la cache cuando
evaluamos el desempeo de un sistema!
Desempeo de Memoria (Resumen)
Por una organizacin de bloques mas flexible:
Completamente Asociativa
Permite a un bloque dado ir a cualquier entrada de la cache.
Requiere que todas las entradas sean buscadas a la vez
Requiere un comprador por entrada (mayor consumo de energa)
Particionada en conjuntos asociativos de N-vias
Cada conjunto contiene N-entradas
Numero de Bloque determina el conjunto
(BlockNumber) modulo (# de conjuntos en cache)
Busca en todas las entradas de un conjunto dado
Requiere N comparadores (menor consumo de energa)
Reduciendo Fallos en Cache
Ejemplo de Cache Asociativa
BlocLocation: (BlockNumber) modulo (# de conjuntos en cache)
Localizacin del Bloque de datos:
12 % 8=4 12 % 4= 0 12 % 1=12
En cualquier lugar
Para Caches de 8 entradas
Espectro de Asociatividad










Cache de 4-bloques
Secuencia de accesos 0, 8, 0, 6, 8
Comparacin de Asociatividad en Cache
Block
address
Cache
index
Hit/miss Cache content after access
0 1 2 3
0%4 0 miss Mem[0]
8%4 0 miss Mem[8]
0%4 0 miss Mem[0]
6%4 2 miss Mem[0] Mem[6]
8%4 0 miss Mem[8] Mem[6]
Mapeo Directo
Cache de 4-bloques
Secuencia de accesos 0, 8, 0, 6, 8
Comparacin de Asociatividad en Cache
Asociativa de 2-Conjuntos
Block
address
Cache
index
Hit/miss Cache content after access
Set 0 Set 1
0 0 miss Mem[0]
8 0 miss Mem[0] Mem[8]
0 0 hit Mem[0] Mem[8]
6 0 miss Mem[0] Mem[6]
8 0 miss Mem[8] Mem[6]
Cache de 4-bloques
Secuencia de accesos 0, 8, 0, 6, 8
Comparacin de Asociatividad en Cache
Totalmente Asociativa
Block
address
Hit/miss Cache content after access
0 miss Mem[0]
8 miss Mem[0] Mem[8]
0 hit Mem[0] Mem[8]
6 miss Mem[0] Mem[8] Mem[6]
8 hit Mem[0] Mem[8] Mem[6]
Incrementar la Asociatividad disminuye los Fallos en Memoria (MISS rate):


Simulacin de un sistema con 64KB D-cache, 16-Word por bloque, SPEC2000
(MISSRATE).

1-Conjunto: 10.3%
2-Conjuntos: 8.6%
4-Conjuntos: 8.3%
8-Conjuntos: 8.1%
Cuanta Asociatividad es recomendable?
Organizacin de Cache de Conjuntos
Mapeo Directo:
No hay eleccin
Conjunto Asociativo:
Elige una entrada no valida si hay una
De otra forma elige entre las entradas del conjunto.
Ultimo Recientemente Usado(LRU)
Elige una no usada por largo tiempo
Simple para 2-vias, Manejable para 4-vias, Compleja de 8 en adelante
Aleatorio
Da aproximadamente el mismo rendimiento que LRU para asociatividades
altas
Poltica de Remplazo
Cache L1: Cercano al CPU
Pequea, pero de rpido acceso
Cache L2: sirve fallos de L1
Grande, Lenta, pero aun mas rpida
que L3
Algunos sistemas incluyen cache L3
Mas grande, mas lenta, que L2 pero
aun mas rpida que Memoria
Principal
Memoria Principal, sirve fallos de L3
En sistemas multi-core comparte
datos entre nucleos.

Cache Multinivel

Dada una arquitectura con niveles de cache L1 y Memoria Principal tenemos:
CPU base CPI=1
Clock Rate= 4GHz (T=0.25ns)
(Cache L1)MISS
rate
/Instruction=2%
(Memory)Access
Time
=100ns
(Memory)MISS
penalty
=100ns/0.25ns=400 ciclos

Evaluar el CPI efectivo:
CPI efectivo=(CPI
base
)+(MISS
rate
/Instruction)X(MISS
penalty
)
CPI efectivo=1+0.02X400=9

Memoria Multinivel

Ala arquitectura anterior adicionamos ahora L2
Tiempo de Acceso: 5ns
(Memoria) Global MISS
rate
: 0.5%
Fallo en L1 con Acierto en L2:
Penalizacin=5ns/0.25ns=20 Ciclos
Fallo en L1 con Fallo en L2:
Penalizacin extra=500 Ciclos
Evaluar el CPI:
CPI efectivo=(CPI
base
)+(MISS
rate
L1)X(MISS
penalty
L1) )+(MISS
rate
L2)X(MISS
penalty
L2)
CPI =1+0.02X20+0.005X500=3.9

Relacin de Desempeo= 9/3.9 = 2.3 (Speed up)

Memoria Multinivel
Sistema de Memoria Virtual
Es un mecanismo que expande el espacio de memoria fsica del CPU a un
espacio de direcciones mucho mayor denominado espacio de memoria
virtual.










Se consigue por traducir las direcciones virtuales (mayor ancho de palabra)
en direcciones fsicas (menor ancho de palabra)
Memoria Virtual
A
0
B
4K
C
8K
D
12K
Virtual
Memory
Virtual
Address
D
Disk
El tamao del bus de direcciones del procesador, determina el tamao de la memoria
virtual, pero el tamao de la cache es independiente del tamao del
direccionamiento del procesador.
0
4K
C 8K
12K
16K
B
20K
24K
A
28K
Physical Main
Memory
Physical
Address
Los sistemas de memoria virtual pueden ser categorizados en dos clases: aquellos
con tamao fijo de bloques llamados pginas, y aquellos con bloques de tamao
variable llamados segmentos.
HYBRID
CODE DATA
PAGING
SEGMENTATION
Memoria Virtual
Mapeo de una Direccin Virtual a una Direccin Fsica
MAIN MEMORY
VIRTUAL PAGE NUMBER OFFSET
PAGE
TABLE
VIRTUAL ADDRESS
PHYSICAL ADDRESS
Va una tabla de pginas
Memoria Virtual controlada por el S.O.
Interrupciones
Ejecuta un vector de interrupcin que revisa la tabla de pginas.
El S.O. define la estructura de la tabla de pginas.
Flexibilidad del mecanismo
Desventajas
Impacto en el desempeo
Un fallo en TLB implica la ejecucin de un vector de interrupcin de
entre 10-100 instrucciones.
Si el cdigo de la interrupcin no esta en Cache, el tiempo de atencin de un fallo en TLB puede
ser muy costoso que el esquema de hardware.


Memoria Virtual controlada por el TLB
Es una cache unificada de 64-entradas, totalmente asociativa.
El S.O. carga la tabla de pginas (PTE) en el TLB.
Polticas de Reemplazo: LRU, Aleatoria(Random)
Entradas divididas: Wired/Random
Instrucciones Asociadas al TLB utilizadas por S.O.
TLBWR: TLB write random, inserta una pgina a una entrada aleatoria
del TLB
TLBWI: TLB write indexed, indexa una pgina a una entrada especificada.
Revisar el conjunto de instrucciones de CP0 (MIPS), Inst. Privilegiadas
(IntelX86)

Translation Look-aside Buffer
Organizacin del TLB del Procesador Alpha 21264
Una entrada de TLB es idntica a una entrada de Cache, en dnde el campo TAG conserva
una porcin de la direccin virtual y el campo de DATOS conserva un nmero de trama de la
pgina fsica, un nmero de proteccin, un bit de validez, un bit de uso (use bit) y un bit de
pgina sucia/limpia (dirty bit).
VIRTUAL PAGE NUMBER<35> OFFSET<13>
VIRTUAL ADDRESS
PHYSICAL ADDRESS
Address Space
Register<8>
MUX<128:1>
ASN<8> PROT<4> V<1> TAG<35> Phy. Address<31>
High<31/28> Low<13>
El Registro Address Space Number (ASN) es utilizado como un
identificador de proceso ID para caches virtuales, por lo que el TLB no
es limpiado (flushed) en un cambio de contexto, solo cuando los
ASNs son reciclados.
ASN: User, Supervisor, or Kernel mode address space
Organizacin de TLB del Procesador Alpha 21264
VIRTUAL PAGE NUMBER<35> OFFSET<13>
VIRTUAL ADDRESS
PHYSICAL ADDRESS
Address Space
Register<8>
ASN<8> PROT<4> V<1> TAG<35> Phy. Address<31>
High<31/28> Low<13>
=
=
En
Organizacin de TLB y CACHE del Procesador Alpha 21264
64-bit Address which 44-/41-bit are translated
<26-bit> Virtual Page Number <14-bit> Page Offset
VIRTUAL ADDRESS<64>
8-bit Address
Space Number
Sign
Extended
8-entry
Instruction TLB
32-KB
2-Way Associative
Instruction Cache
<28-bit>
Page Frame Number
IL1 TAG: 28-bit
Page Frame Number
TAG
Compare
(Cache HIT/
MISS)
The MIPS R10K data TLB organization
64-Paired Entry
Fully Associative
main TLB
(Instruction/Data)
<28-bit>
Page Frame Number
IDL1 TAG: 28-bit
Page Frame Number
TAG
Compare
(Cache HIT/
MISS)
32-KB
2-Way Associative
Data Cache
Region
Organizacin de TLB y CACHE del Procesador MIPS R10000
Resumen de Memoria Virtual y Caches L1 & L2
<51> Virtual Page Number <13> Page Offset
VIRTUAL ADDRESS <64>
<6> Block
Offset
<7> Cache
Index
<8> TLB
Index
<43> TLB TAG Compare Address
TLB DATA
<28>
TLB TAG
<43>
=
L1 Tag <28>
L1 DATA
<256>
L1 Cache
TAG<43>
= To CPU
PHYSICAL ADDRESS <41>
<6> Block Offset <16> L2 Cache Index <19> L2 TAG
L2 DATA
<256>
L1 Cache
TAG<19>
= To CPU
La Unidad de Manejo de Memoria (MMU)
DataTLB (Maquina de estados en Hardware/Software)
Inst TLB (Mquina de estados en Hardware/Software)
TLB Slice (Prediccin de direcciones fsicas de L2)
Registros (Interface con el S.O.)
Fallos en Cach
Los fallos en la cache se han organizado en tres categoras:

Obligatorio, Comienzo en fri o de primera referencia: el primer acceso al
bloque no puede estar en la cache, por lo que el bloque deber ser copiado a
cache.

Capacidad: si la cache no puede tener todos los bloques necesarios durante la
ejecucin de un programa, los fallos debidos a capacidad ocurren por que los
bloques que son descargados mas tarde tienen que ser cargados a la cache
nuevamente.

Por Conflicto: si la estrategia de asignacin de bloques es de conjunto
asociativo o mapeo directo. Un conflicto de fallos (adems de los dos primeros)
puede ocurrir si los bloques que son asignados y mas tarde desasignados son
muchos y todos mapean al mismo conjunto, ha este fenmeno tambin se le
llama colisin de fallos o interferencia de fallos.
MIPSR10000: Formato de Direccin Virtual
ASID: Address Space Idenfier
Reduce la frecuencia de TLB-Flush en cambios de contexto
pertenece a registros especiales de la MMU
Identifica 256 procesos

ASN: Tres modos de operacin
Modo Usuario
Modo Supervisor
Modo Kernel

PAGE OFFSET
(13:0)-14-bits-
VIRTUAL PAGE NUMBER
(43:14) -26-bits-
SIGN EXTENDED
(51:44)-8-bits-
ASID
(59:52)-8-bits-
00 XKUSEG
01 XKSSEG
10 XKPHYS
11 XKSEG
ASN
(63:62) (61:60)
Espacio de Procesos de Usuario (XKUSEG)
Primeros 16 TB
Son siempre mapeados a travs del TLB
2
26
/64M posibles pginas en espacio de procesos
PAGE OFFSET
(13:0)-14-bits-
VIRTUAL PAGE NUMBER
(43:14) -26-bits-
00000000
(51:44)-8-bits-
00000000
(59:52)-8-bits-
00 XKUSEG
01 XKSSEG
ASN
(63:62)
00
(61:60)
Espacio en Modo Supervisor(XKSSEG)
16 TB iniciando en 0X4000 0000 0000 0000
Son siempre mapeados a travs del TLB
2
26
/64M posibles pginas en espacio de procesos
PAGE OFFSET
(13:0)-14-bits-
VIRTUAL PAGE NUMBER
(43:14) -26-bits-
00000000
(51:44)-8-bits-
00000000
(59:52)-8-bits-
00 XKUSEG
01 XKSSEG
ASN
(63:62)
00
(61:60)
Espacio en Modo Kernel (XKSEG)
El CPU entra en Modo Kernel cuando se detecta una excepcin y
permanece en este modo hasta que se restablece de la
excepcin.

16 TB iniciando en 0XC000 0000 0000 0000
Son siempre mapeados a travs del TLB
2
26
/64M posibles pginas en espacio de procesos
MIPS R10000: Espacio de direcciones de 64-bits
2
32
= 4.2E
+09
= 4.0 GB
2
44
= 17.5E
+12
= 16.0 TB
2
64
= 18.4E
+18
= 2.0 PB
16TB
0X0000 0FFF FFFF FFFF
XKUSEG
0X0000 0000 0000 0000
16TB
0X4000 0FFF FFFF FFFF
XKSSEG
0X4000 0000 0000 0000
16TB
0XBFFF FFFF FFFF FFFF
XKPHYS
0X8000 0000 0000 0000
16TB
0XC000 0FFF FFFF FFFF
XKSEG
0XC000 0000 0000 0000
NO USADO
NO USADO
NO USADO
NO USADO
Coherencia de datos en cache
70
En sistemas monoprocesadores el protocolo mas utilizado en la cache de datos es el MESI
(Modified-Exclusive-Shared-Invalid) conocido as por las siglas de los nombres de sus cuatro
estados. La cache de Instrucciones tiene de manera inherente proteccin contra escritura para
evitar corromper inadvertidamente el cdigo por lo que solo utiliza un subconjunto de este, solo
los estados SI (Shared-Invalid).
Fig.1.3 Organizacin conceptual de la Cachs de datos y de cdigo
Coherencia de datos en multi-Cache
Varios ncleos independientes y uno o varios niveles de memorias caches, mas
un nivel de memoria cache compartida adems de la principal.

Desafortunadamente en tales sistemas multiprocesadores una pieza de
informacin puede estar en varios lugares a la vez, y es importante que todos los
procesadores tengan acceso al mismo nico valor.
CACHE
L2
CACHE
L1
CACHE
L2
CACHE
L1
CACHE
L2
CACHE
L1
Iinterconexion Network
PROCESADOR
Shared Address Memory
PROCESADOR PROCESADOR
El problema de la coherencia de cache
Tiempo Evento
Contenido de la
Cache para el CPU A
Contenido de la
Cache para el CPU B
Contenido de
Memoria para la
localidad X
0 1
1 CPU A lee X 1 1
2 CPU B lee X 1 1
3 CPU A almacena 0 en X 0 1 0
CACHE
L2
CACHE
L1
CACHE
L2
CACHE
L1
CACHE
L2
CACHE
L1
Iinterconexion Network
PROCESADOR
Shared Address Memory
PROCESADOR PROCESADOR
Tendencia
Se han propuesto varias soluciones para este problema

1. Write Invalidate : el procesador invalida todas las copias del dato
compartido y actualiza este sin ms actividad en el bus.

2. Write-Broadcast o Write Update: el procesador actualiza todas las
copias compartidas en todas las caches.


El mismo protocolo de consistencia de memoria MESI puede ser extendido a
arquitecturas multiprocesadores.
Arquitectura de bus nico
- protocolo de coherencia de Indagacin
Shared Address Memory
Single Bus
CACHE
Tag &DATA
Snoop Bus
CACHE
Tag &DATA
PROCESADOR
CACHE
Tag &DATA
SNOOP
Tag
SNOOP
Tag
SNOOP
Tag
PROCESADOR PROCESADOR
Protocolo de Coherencia Snoopy de bus Write-Invalidate
[Stentrm90]


Invalid Valid
Dirty Reserved
P-Read
P-Write
Read-Blk
Write-Inv/Read-Inv
Read-Blk
Read-Inv
R
e
a
d
-
I
n
v
P-Write
P-Write
P-Read
Invalid (Invido): la copia es inconsistente.
Valid (Vlido): Existe una copia valida
consistente con la copia de la memoria.
Reserved (Reservado): El dato ha sido
escrito exactamente una vez (puede ser por el
procesador local) y la copia es inconsistente con
la copia de la memoria, la cual es la nica otra
copia.
Dirty (Sucio): El dato se ha modificado ms de
una vez, y la copia es la nica en el sistema.
Protocolo MESI para Multinucleos
I S
M E
Lectura
(R M S)
L
e
c
t
u
r
a

c
o
n

i
n
t
e
n
t
o

d
e

M
o
d
i
f
i
c
a
r

(
W

M
)
Lectura
(R M E)
Transicin
invlida
(W H)
Escritura
(W H)
(S H R)
(S H W)
(S H R)
(S H R)
(
S

H

W
)
I
n
v
a
l
i
d
a
c
i

n

p
o
r

e
l

b
u
s

S
n
o
o
p
y
(
S

H

W
)
R H
W H
R H
R H
S H R
Figura 1.3 Diagrama de estados del protocolo de consistencia MESI implementado en los Chips PowerPC
M: Modificado
E: Exclusivo
S: Compartido
I: Invalido
El nodo que intenta leer una dato de
cache que ha sido modificado por
otro nodo (este ultimo invalida las
copias) es obligado a esperar a que
se modifique el dato de memoria
principal para obtener su copia.
R H: Read Hit,
R M S: Read Miss Shared,
R M E: Read Miss Exclusive,
W H: Write Hit,
W M: Write Miss,
S H R: Snoop Hit Read Operation,
S H W: Snoop Hit Write Operation.
El estado compartido de un bloque de memoria fsica, se mantiene justo en una
localidad de una memoria llamada directorio, que tiene informacin de estado y una
lista de apuntadores, la cual permite enviar comandos de consistencia de forma
selectiva evitando "broadcast", [MagM99].

Esta memoria y directorio se construyen en memoria virtual y se implementa en el
nodo principal (Maestro).

Se clasifican en:
Full Map Directory (Mapero Completo): usa palabras de N bits, un bit por
procesador + 1 bit de sucio (Dirty). Cada representa el estado del bloque en la cache
del procesador.
Un bloque en cache mantienen dos bits de estado (valid/invalid) y (write-
enable/disable)

El protocolo de coherencia debe mantener los bits de estado en la memoria de
directorio y en la cache consistente.

Arquitectura de bus nico
- protocolo de coherencia basada en directorios
Arquitectura Multicore
- protocolo de coherencia basada en directorios
C X - - - - - Data
Shared Memory
Cache
P1
Read X Read X Read X
Cache Cache
P2 Pn
Arquitectura Multicore
- protocolo de coherencia basada en directorios
Cache Cache Cache
C X - - - - - Data
Shared Memory
Write X
Data
X
Data
X
Data
X
P1 P2 Pn
Cache
D X - - - - - Data
Shared Memory
Write X
Data'
X
Cache Cache
P1 P2 Pn
Arquitectura Multicore
- protocolo de coherencia basada en directorios
El protocolo de Directorio Limitado fue diseado para resolver el problema de
tamao del Directorio.
Restringiendo el nmero de copias de cache simultaneas de cualquier bloque
particular, se limita el crecimiento del directorio a un factor constante.

El protocolo de directorio puede ser clasificado como:
Dir
i
X donde el smbolo i indica en numero de apuntadores y X es NB para
esquemas que no realizan Broadcast y B para esquemas con Braodcast.
Un esquema de Mapeo Completo sin Broadcast es representado con Dir
N
NB
[Chaiken90].
Un protocolo de directorio limitado, que usa i<N apuntadores es denotado por
Dir
i
NB.
Arquitectura Multicore
- protocolo de coherencia basada en directorios limitados
Arquitectura Multicore
- protocolo de coherencia basada en directorios limitados
Cache Cache
C X 2 Data
Shared Memory
Read X
Data
X
Data
X
1
Cache
P1 P2 P3
Arquitectura Multicore
- protocolo de coherencia basada en directorios limitados
Cache Cache
Shared Memory
Data
X
Data
X
C X 3 Data 1
Cache
P1 P2 P3
Se invalida la copia de C2 y se reemplaza el apuntador a C3
Directorios encadenados es la tercera opcin de los esquemas de coherencia de
cache que no utilizan un mecanismo de Broadcast, realizan la escalabilidad de los
directorios limitados pero sin restringir el nmero de copias de bloques de datos
compartidos.

A este tipo de coherencia de cache se llama esquema encadenado por que
mantiene la ruta de todas las copias de datos compartidos en una cadena de
apuntadores de directorios.

Arquitectura Multicore
- protocolo de coherencia basada en directorios encadenados
Arquitectura Multicore
- protocolo de coherencia basada en directorios encadenados
Cache
C X 1 Data
Shared Memory
Read X
Cache Cache
P1 P2 P3
Data
X
CT
Arquitectura Multicore
- protocolo de coherencia basada en directorios encadenados
P1 P2 P3
Cache Cache
Shared Memory
Data
X
Data
X
C X 2 Data
1
CT
Write X
Cache
Arquitectura Multicore
- protocolo de coherencia basada en directorios encadenados
Se invalida a travs de la cadena de
apuntadores
P1 P2 P3
Cache Cache
Shared Memory
Data
X
Data
X
C X 2 Data
1
CT
Write X
Cache
hasta que el procesador con la Terminacin de Cadena CT enve la seal Acknowlegment-
Invalidation.
Multinucleos
Hay muchas razones para conectar ms de dos procesadores a un bus comn:


[1]Cada chip multi-ncleo es mucho mas pequeo que cualquier multiprocesador .

[2]La memoria Cach puede bajar el trfico en el bus.

[3]Se han desarrollado mecanismos para mantener consistencia en memoria principal y
Memoria Caches, de igual forma como la memoria principal y cach mantiene
consistencia con los dispositivos de almacenamiento de E/S en una PC, lo cual simplifica
la programacin.
El Reto: ILP vs Complejidad
No de Transistores
incrementndose
Velocidad de Reloj
Problemas de ruido
Consumo de energa
incrementndose
ILP
agotado
Grfico, D. Paterson. University of California
Tendencia
Ncleos Homogneos con:
o Interconexin basada en bus
o Memoria Compartida
o Perifricos tradicionales
Intel Core 2 Duo
Tendencia
Ncleos Heterogneos con:
o Interconexin basada en bus
o Memoria Distribuida
IBM Cell Processor
Intel CoreI7
Procesadores que utilizan Redes de Interconexin
Ncleos Homogneos con:
o Interconexin basada IN (Red de Interconexion)
o Memoria Distribuida
o Multithread
Intel Core i7
Tendencia
Ncleos Homogneos con:
o Interconexin basada IN (Red de Interconexion)
o Memoria Compartida
o Perifricos tradicionales
94
Tendencia
Ncleos Homogneos con:
o Interconexin basada en IN (Red de Interconexin)
o Memoria L1/L2 Distribuida y L3 Compartida
o Perifricos tradicionales
IBM Power 7
El nuevo problema
Las arquitecturas de los procesadores continan incrementando sus
recursos en un mismo chip (Multinucleos).

Para obtener mejores rendimientos de un Chip Multinucleo, se requiere
una fuerte cooperacin entre el compilador y el planificador del sistema
operativo (Scheduler).
95
Tendencias en las polticas de planificacin
Apagando Ncleos:
cuando no se
requieren.















Balanceo de carga:
Asignando threads a
diferentes ncleos.
SPECCPU2000
Planificador del S.O.
GZIP
GCC
MCF
SysCall
ILP vs Fallos en Cache L1
ILP vs Fallos en Cache L2
Gracias

S-ar putea să vă placă și