Вы находитесь на странице: 1из 10

Memoria

Principal
Disco Duro

MEMORY
HIERARCHY

2GB

150.0 ns

1TB

10 000 000 ns

Octubre 2,2014

1. INTRODUCCION
Hasta ahora, hemos trabajado
con modelos de computacin como la
palabra RAM o modelo de sonda celular.
Esos modelos cuentan, para la
comunicacin con memoria, una palabra
a la vez: si necesitamos leer 10 palabras
esto cuesta 10 unidades.
En computadoras modernas, esto
es un caso imposible

Hasta ahora hemos trabajado


con modelos de computacin como
la palabra RAM o modelos de sonda
celular.
Estos modelos representan la
comunicacin con la memoria una
palabra a la vez: si necesitamos leer
10 palabras, esto cuesta 10 unidades.
En los equipos modernos, esto
es casi nunca el caso. Las
computadoras modernas tienen una
jerarqua de memoria que tiende a
acelerar
las
operaciones
de
memoria. Los niveles tpicos de la
jerarqua de memoria son:

Nivel
de Tamao Tiempo
Memoria
respuesta
Registros del 100 B
CPU
Cach L1
64KB
Cach L2
1MB

0.5 ns
1.0 ns
10.0ns

Es evidente que los niveles de


memoria
ms
rpidos
son
sustancialmente ms pequeo que las
ms lentas. Generalmente, cada nivel
tiene una conexin directa con slo y
nicamente el nivel inmediatamente
inferior
en
la
jerarqua. Adicionalmente los niveles
ms pequeos, los ms rpidos, son
mucho ms caros de producir, as
que no esperes 1GB de espacio en el
registro muy pronto. Muchos de los
niveles se comunican en bloques. Por
ejemplo, pidiendo a la memoria
principal que lea un entero
normalmente tambin transmitir un
"bloque" de datos cercanos. As
procesando los otros miembros de
bloque no requiere de ninguna
transferencia
de
memoria
adicional. Este problema se agrava
cuando la comunicacin con el disco:
los 10ms est dominado por el
tiempo necesario para encontrar los
datos (mover la cabeza de lectura
sobre el disco). Los discos modernos
son circulares, girando a 7.200 rpm,
as una vez que la cabeza es en
posicin, leer todos los datos en ese
de"anillo" es mucho ms rpido.
Esto habla de la necesidad de
algoritmos que estn diseados para
hacer frente a los "bloques" de
datos. Algoritmos que aprovechan
adecuadamente la jerarqua de
memoria ser mucho ms rpido en

la prctica; y el modelo de memoria


lo cual describen correctamente la
jerarqua de memoria sern ms
tiles para el anlisis. Vamos a ver
algunos modelos fundamentales con
algunos
resultados
asociados
actuales.

2. Modelo de Memoria
Externa
El modelo de memoria externa se
introdujo por Aggarwal y Vitter en
1988 [1] ; tambin se le llama el "
I/O Model" o el "Disc Acces Model"
(DAM). El modelo de memoria
externa simplifica la jerarqua de
memoria a slo dos niveles. El CPU
est conectada a una memoria de
cach rpida de tamao M; esta
cach a su vez est conectado a un
disco mucho ms lento de tamao
efectivamente infinita. Tanto la
memoria cach y el disco se dividen
en bloques de tamao B, por lo que
hay
M/B
bloques
en
el
cach. Transferir un bloque de cach
al disco (O viceversa) cuesta 1
unidad. Operaciones de memoria en
bloques residen en la memoria cach
libre. Por lo tanto, la meta natural es
la de minimizar el nmero de
transferencias entre cach y disco. Es
evidente que cualquier algoritmo
referido al modelo de la palabra
RAM con tiempo de ejecucin T (N)
no requiere ms que T (N)
transferencias de la memoria y en el
modelo de memoria externa (como
mximo una transferencia de
memoria por

Operacin). El lmite inferior, que


suele ser ms difcil de obtener, es
, donde tomamos perfecta
ventaja de la localidad cach; es
decir, cada bloque es de slo
ledo/escrito un nmero constante de
veces.
Tenga en cuenta que, el
modelo de memoria externa es una
buena primera aproximacin a la
conexin ms lenta en la jerarqua de
memoria. Para una gran base de
datos, "cach" puede ser el sistema
RAM y "disco" podra ser
el disco duro. Por una pequea
simulacin, "cache" debe ser L2 y
"disco" puede ser la RAM del
sistema.

2.1

Escaneo

Escanear n elementos trivialmente


cuesta O(
) transferencias de
memoria. El tope es importante
porque
si
N=o(B)
entonces
terminaramos
leyendo
mas
elementos de lo necesario.

2.2 Bsqueda
La bsqueda se logra con un
rbol B-ario utilizando un factor de
ramificacin que es (B). En la
prctica, se quiere que sea
exactamente B + 1, de modo que un
solo nodo encaja en un bloque de
memoria y siempre tendremos un
factor de ramificacin 2. Insertar,
eliminar y bsquedas de sucesores/
predecesoras
estn
entonces
manipulados con O (
)
transferencias de memoria. Esto

requerir O (log n)
veces en
comparacin al modelo1; por lo que
hay una mejora por un factor de O
(log B).
La cota de O (
) es de
hecho
ptima
para
bsquedas; podemos ver esto desde
una informacin del argumento
terico. Queremos averiguar dnde
nuestros elementos encajan entre
todos los N elementos. Hay N +1
posiciones en las que nuestros
elementos puede caber y necesitamos
(log N + 1) bits de informacin
para especificar una de esas
posiciones. Cada lectura de la cach
(un bloque) nos dice donde el
elementos encaja entre B elementos,
rendimiento
O (log (B + 1)) bits de
informacin. As que necesitamos al
menos
(
)
o

(
)
transferencias de la memoria para
revelar todo
(log (N + 1)) bits.
Sin embargo, para insertar /
borrar, esta cota no es ptima.

2.3 Ordenamiento
En el modelo de la palabra
RAM, un rbol B-ario puede ser
ordenado en tiempo ptimo: basta
con insertar todos los elementos y
luego hacer un recorrido en
orden. Sin embargo, la misma
tcnica se obtiene O (N
)
(amortizado) de transferencia de
memoria externa, lo cual no es
ptimo.

Un algoritmo ptimo es una


versin de mergesort para
, que
obtiene un rendimiento mediante la
resolucin de sub-problemas que
cabe en la memoria cach, lo que
lleva a un total de O (
)
transferencias de la memoria. Esta
cota es actualmente ptimo en el
modelo de comparacin [1].
Este no es el modelo de
comparacin estndar; aqu nos
referimos que la nica operacin
permisible en los elementos es
compararlos por parejas.

2.4 Permutacin
El problema de permutacin
es: dado N elementos en un orden y
un nuevo ordenamiento, reorganizar
los elementos que aparecen en el
nuevo orden. Ingenuamente, esto
toma O (N) operaciones: slo
intercambiar cada elemento en su
nueva posicin. Puede ser ms rpido
para asignar a cada elemento una
clave igual a su orden de
permutacin y luego aplicar el
algoritmo de ordenamiento ptimo
antes mencionad. Esto nos da una
cota de
O (min {N,

) (amortizado).

Tenga en cuenta que este resultado


slo se mantiene en el "modelo
indivisible"

donde las palabras no pueden ser


cortadas y reempaquetadas en otras
palabras

2.5 rboles Buffer


rboles
Buffer
son
esencialmente una versin dinmica
de ordenamiento. rboles Buffer
archivan O (
) (Amortizadas)
transferencias de la memoria por
operacin. La cota tiene que ser
amortizado, ya que suele ser o (1).
Tambin logran archivar la ptima
cota de ordenamiento si todos los
elementos son insertados, elimina el
mnimo
secuencialmente. Las
operaciones son las actualizaciones
por lotes (insertar/ eliminar-min) y
consultas retardadas. Si hacemos una
consulta, no conseguiremos la
respuesta
correcta
a
continuacin; esto es retrasado. Hay
una nueva operacin llamada fflush,
que devuelve todas las respuestas de
todas las consultas no atendidas si en
O(
de tiempo. As que si
lo hacemos O (N) operaciones y
luego hacer fflush, no se necesita
ningn tiempo extra. Buscar-min
consultas son gratis; el min elemento
se mantiene todo el tiempo. Pueden
ser utilizados como eficientes colas
de prioridad de memoria externa.

3. Cache
Model

Oblivious

El modelo de cach ajeno es una


variacin del modelo de memoria
externa introducida por Frigo, Leiserson, Prokop, y Ramachandran en
1999 [10, 11]. En este modelo, el
algoritmo no sabe el tamao de
bloque (B) o el tamao total de la
memoria (M). En particular, nuestros
algoritmos parecern un normal
algoritmo de RAM, pero vamos a
analizarlo de manera diferente. Para
los supuestos del modelo, vamos a
suponer que el almacenamiento en
cach se realiza automticamente. Nosotros tambin asumiremos
que
el
mecanismo
de
almacenamiento en cach es ptima
(en el sentido de conexin). En la
prctica, esto puede ser logrado con
tanto LRU (Least Recently Used) o
FIFO (First In First Out), ya que son
O (1) - comparados con el algoritmo
ptimo offline si tienen un cach con
el doble de tamao. Dado que
ninguno de nuestros algoritmos
cambian reemplazando el tamao de
la cach M con 2M, esto hace que no
cambien nuestras cotas. Los buenos
algoritmos para este modelo nos dan
buenos algoritmos para todos los
valores de B y M. Son
especialmente til para multiniveles
de cachs y para cachs con valores
cambiantes de B y M.

3.1 Escaneo
La cota es idntica a la memoria
externa: O (
) transferencias de

memoria. Podemos utilizar el mismo


algoritmo que antes, ya que slo
dependemos de B en el anlisis.

3.2 Buscar rboles


Una variante de cache-oblivious del
rbol B-ario [4, 5, 9] proporciona las
operaciones de insertar, borrar , y
buscar
con O (
)
(amortizado)
transferencias
de
memoria, como en el modelo de
memoria externa. La segunda mitad
de esta lectura se centra en el rbol
B-ario de la cache -oblivious

3.3 Ordenamiento
Como en el modelo de
memoria externa-, ordenando N
elementos pueden ser realizados
usando cache-oblivious usando O
(
transferencias
de
la

supone un alto cach que establece:


M=(
).

4. rbol
B-ario
Cahe-Oblivious

de

Ahora vamos a discutir y analizar


la estructura de datos que lleva al
estado anterior de cache-oblivious
que
resulta
el
rbol
de
bsqueda. Vamos a utilizar una
estructura de datos que comparte
muchas caractersticas con el rbol
B-ario estndar. Esto requerir la
modificacin ya que no conocemos
B, al contrario que en el modelo de
memoria
externa. Para
empezar,vamos a construir una
estructura esttica apoyada en la
bsqueda en O (
) de tiempo.

memoria [10, 7].

3.4 Permutando
El min {} ya no es posible ya
que eso depende de saber M y B.
Ambos componentes lmites de la
memoria externa son todava validas,
slo que del cual no daremos el
mnimo.

3.5 Colas de Prioridad


Una cola de prioridad se puede
implementar para que ejecute las
operaciones de ingreso, eliminacin,
y la eliminacin del mnimo, en
O
(
(amortizado)
transferencias de memoria .Esto

3.1Busqueda de arboles
estticos
En primer lugar, vamos a
construir un rbol de bsqueda
binaria completo sobre todos los N
elementos. Para
lograr
la
complejidad O (
)
En transferencias de memoria, el
rbol estar representada en el disco
en el diseo van Emde Boas .La
disposicin VEB se define de forma
recursiva. El rbol se dividir por la
mitad por la altura; el subrbol
superior tiene altura
)/2 y sostiene O(
elementos. El tope del subrbol

superior se enlaza a su vez a O(


cada
subrbol
con
O(
elementos. Cada uno de los
subrboles est a su vez divididos
segn la disposicin VEB. En el
disco, el sub-rbol superior se
almacena en primer lugar, con los
subrbol inferiores establecido de
forma secuencial despus de
ella. Esta disposicin puede ser
generalizado a los rboles donde la
altura no es un
potencia de 2 con una ramificacin
de O (1) de factor ( 2) [4].
Tenga en cuenta que cuando la
recursividad alcanza un subrbol que
es lo suficientemente pequeo
(tamao inferior a B), podemos
parar.
Trabajando con conjuntos ms
pequeos
no
ganaramos
o
perderamos nada, ya que no se
requiere
ninguna
transferencia
adicional de memoria.
Reclamacin 1 Mejorar una
bsqueda en un rbol de bsqueda en
el diseo van Emde Boas requiere
)
transferencias
de
memoria.
Prueba. Considere el nivel de detalle
que "se extiende a" B. Es decir,
continuar cortando el rbol en medio
hasta que la altura de cada subrbol
se convierte primero en logB a este
punto, la altura debe ser tambin
mayor que log B. Obsrvese que el
tamao de los subrboles es al menos
y a lo sumo B, dando entre B y
elementos de este nivel
"transzonales".

En la (bsqueda) trayectoria de la
raz hasta la hoja , vamos a tener
acceso a no ms de log
subrboles . Cada subrbol a
este nivel requiere almenos entonces
como mximo 2 transferencias de
memoria para acceder.
Por lo tanto toda la bsqueda
requiereO (
) transferencias
de la memoria.

4.2 Bsqueda Dinmica de un


rbol
Tenga en cuenta que la siguiente
descripcin es el modelo de la obra
de [5], que es una simplificacin de
[4].

4.2.1 Mantenimiento
Orden de Fila

por

En primer lugar, vamos a


necesitar una estructura de datos de
soporte adicional que resuelve el
mantenimiento
Ordered
File
Maintenance (OFM). Por ahora,
tratarlo como una caja negra; los
detalles se dar en la prxima
lectura.
El problema del OFM implica
almacenar N elementos en una
matriz de tamao O (N) con un
ordenamiento especificado.
Tenga en cuenta que esto
implica una brecha de tamao O (1)
son permisibles en la estructura. La
estructura de datos OFM soporta las
operaciones de insercin (entre dos
elementos consecutivos dados) y

Eliminacin. Esto logra que cada


movimiento de los elementos en un
intervalo de tamao de O (log2N)
(amortizado) a travs del escaneo
intercalado de O (1). De ello se
deduce que las operaciones requieren
O(

) transferencias.

APARTADO: Se conjetura que el


tiempo de O(log2N) (amortizado) es
ptimo.

4.2.2 Volver
rboles:

Buscar

Enlazando el diseo VEB y


OFM. Ahora, queremos permitir
tambin las operaciones de bsqueda
rpida.
Para ello, se construye sobre
un OFM las N llaves, ms las
brechas
necesarios.
Entonces,
creamos un rbol de distribucin
VEB sobre los elementos de OFM, el
resultado es mostrado en la Figura1.
Observe que todas las llaves son las
hojas. Nodos internos contienen el
mximo de los subrboles enraizadas
con sus hijos (brechas cuentan como
-).
La altura del rbol es
O (log N); las alturas del subrbol
son (log B).
Aunque cada subrbol tiene
tamao a lo sumo B, no pueden
alinear con los lmites de cach; por
ejemplo, la mitad de cache linea
i y la otra mitad en la lnea i + 1.

Con esta estructura, buscar es


logrado por chequear cada hijo
izquierdo del nodo para decidir si
ramificar a la izquierda o derecha
esto toma
) .
INSERT requiere primero una
bsqueda para el sucesor del
elemento que se inserta. A
continuacin, insertamos el elemento
de la OFM, y por ltimo
actualizamos el rbol, de las hojas
que se han cambiado hasta la
raz. Tenga en cuenta que las
actualizaciones se deben realizar en
post-orden, de modo que cada nodo
puede calcular el nuevo mximo de
sus hijos. El proceso se ilustra en la
Figura 2. BORRAR se comporta de
manera anloga: buscamos en el

rbol, borramos la OFM, y


actualizamos el rbol.
Ahora nosotros queremos analizar las
operaciones de actualizacin.
Afirmacin:
Insertar

borrar

toma

)lecturas

de

de la raz de todo el rbol. Esta


divisin se ilustra en la Figura 3.

bloques.
Prueba:
Nosotros
notamos
inmediatamente que encontrando el
elemento para actualizar toma
) lecturas de bloque y
actualizar el OFM O(

).

Para ver cunto tiempo se


necesita para actualizar el rbol,
tenemos que considerar tres capas de
rboles separados independientemente .
Para la primera capa,
nosotros
definimos
pequeos
tringulos VEB ser subrboles en el
rbol que 1) tiene
tamao menor (o igual) a B y 2)
estn en uno de los dos ltimos
niveles del rbol. Adems, vamos a
considerar tringulo grande VEB,
cada uno de ellos con 1) el tamao
ms grande que B y 2) contienen dos
niveles de pequeos tringulos VEB.
Para la segunda capa, se considera el
sub rbol cuyas hojas son las races
de
los bloques ms grandes de VEB.
Para la tercera capa, consideramos
que el camino de la raz del subrbol

Comenzamos a notar que un


bloque de tamao menor (o igual) a
B puede abarcar a lo mucho dos
bloques en memoria (cuando est
entre los dos). Por lo tanto, la lectura
de un pequeo tringulo VEB
requiere a lo mas dos bloques.
Porque estamos actualizando la
estructura en post-orden, cuando
estamos en los ltimos dos niveles
slo necesitamos conservara 4
bloques en cach, dos para el
pequeo tringulo VEB y dos para el
padre del pequeo tringulo VEB
siendo evaluados. Siempre y cuando
tengamos al menos 4 bloques de
cach disponible, podemos entonces
actualizar todos los dos niveles ms
bajos con una cantidad constante
amortizada de lectura de bloques por

Actualizar

los

tringulos

VEB.

Puesto que hay O(1 +


)
tringulos
que
necesitan
ser
actualizados en los dos niveles ms
bajos,
actualizarlos
toma
O(
)(amortizado)
bloque
Continuando

componentes de los
tcnica de indireccin.

usando la

de

4.2.3 Ajustar hacia Arriba:


Agregando Indireccin

arriba,

Indireccin envuelve grupos


de elementos en (
) grupos de

lecturas

hacia

o(logN log log N). Afortunadamente,


podemos montar nuestros propios

notamos que los O(


) races de
tringulos VEB grandes son las hojas
de un rbol de tamao O(
).
Notar que la raz de es el LCA de
todos los elementos que fueron
modificados en las hojas. El tamao
de es igual (asintticamente) a la
cantidad de lecturas que ya hicimos
para las 2 capas ms bajas. Por lo
tanto, podemos evadir la lectura de
un bloque entero para actualizar cada
elemento de sin aadirlo al tiempo
de ejecucin. As que, cualquier
algoritmo simple puede ser usado
para actualizar .
Por ltimo, para actualizar el
camino desde a la raz de toda la
estructura, hacemos O (logB + 1N)
ms lecturas de bloque. Por lo tanto,
podemos actualizar el rbol entero en
).
A
este
punto,
todava
querramos mejorar la cota an ms.
Lo que queramos lograr es
) (que podemos obtener
con rboles B-ario), y lo que tenemos
es tambin costoso si B fuese igual a

tamao (logN) elementos cada uno.


Ahora crearemos la estructura que
describimos justo sobre el mnimo de
cada grupo (logN). Como un
resultado, El BST de estilo VEB
sobre el arreglo OFM actuar sobre
(
) hojas en vez de (N) hojas.
El Almacenamiento VEB nos
permite buscar el tope de la
estructura en
); tambin
tendremos que escanear un grupo
ms bajo en costo O(
) para un
costo
total
de
)
transferencias de memoria.
Ahora,
INSERTAR
Y
BORRAR nos requerirn reformar
un grupo entero a la vez, pero esto
cuesta
O(
)
=
)
transferencias de memoria, lo cual es
suficientemente barato. Como con
los rboles y-fast, tambin queremos
administrar el tamao de los grupos:
ellos deberan estar entre el 25% y el
100%. Los grupos que son muy
pequeos o muy llenos pueden ser
unidos, luego separarlos o unirlos

(respectivamente)
como
sea
necesario por destruir y/o formar
nuevos
grupos.
Necesitaremos
(logN) actualizaciones para causar
una unin o separacin. Por lo tanto
el costo de unin y separacin puede
ser cargado al actualizar, as, el costo
de su amortizado es O(1). El mnimo
elemento
solo
necesita
ser
actualizado cuando ocurre la unin o
separacin.
Entonces,
La
actualizacin costosa a la estructura
VEB solo ocurre cada actualizacin
O(logN)
al
costo
de
O(
) = O(
) =
O
. Por lo tanto todas las
operaciones de Bsqueda, Insercin
y
Eliminacin
cuestan
O
.

Вам также может понравиться