Documente Academic
Documente Profesional
Documente Cultură
333-TP
- 1/6
333
josem.avilad@gmail.com
TELFONO: 04129350595
CENTRO LOCAL:
CARRERA:
COJEDES
INGENIERA DE SISTEMAS
RESULTADOS DE CORRECCIN
OBJ N
0:NL
1:L
Ingeniera de Sistemas
Indice
Pg.
Introduccin. 3
Fundamentos de la memoria cach
10
12
14
17
19
Protocolo Firefly. 22
Conclusiones
24
Bibliografa
25
Introduccin
adyacentes a dicho dato. En el contexto de las cachs, se emplea el trmino bloque para
referirse a un conjunto de datos con direcciones contiguas que se utiliza como unidad de
transferencia entre la memoria principal y la cach. El espacio que tiene una cach para
albergar un bloque de memoria principal se denomina lnea.
Cuando se recibe una peticin de lectura de la CPU, el contenido del bloque
completo de memoria principal que contiene la direccin especificada se transfiere a la
cach. Posteriormente, cuando el programa referencia cualquiera de las direcciones del
bloque, el contenido correspondiente se lee directamente de la cach (solamente la
palabra o parte de la palabra referenciada, no el bloque completo).
acaba de referenciar. El conjunto de reglas que se utilizan para tomar esta decisin se
denominan algoritmos o polticas de sustitucin.
La CPU no necesita conocer explcitamente la existencia de la cach, sino que
genera una peticin de lectura o escritura utilizando direcciones de memoria principal, y la
circuitera de la cach determina si la palabra solicitada est o no est en ese momento en
la cach. Si est (se dice que se ha producido un acierto de cach), la operacin de lectura
o escritura se realiza sobre la direccin correspondiente en la cach, y si la operacin es
de lectura, la memoria principal no se ve implicada en la ejecucin. Si la operacin es una
escritura, la palabra afectada en la memoria cach deber actualizarse, en algn
momento, en la memoria principal, para que el contenido de un bloque en la cach sea
idntico al de su correspondiente en memoria principal. En estos casos, la actualizacin en
memoria principal de los bloques modificados en la cach se realiza segn una poltica de
escritura o de actualizacin.
Cuando el dato referenciado por una lectura de la CPU no est en la cach, se
produce una falta o fallo de cach. En este caso, el bloque que contiene la palabra
referenciada se copia de la memoria principal a la cach, y a continuacin, la palabra
solicitada se enva a la CPU. Otra opcin consiste en enviarle la palabra directamente de la
memoria principal a la CPU y al mismo tiempo cargarla en la cach. Esta ltima tcnica,
denominada carga directa (load through), aunque reduce el tiempo de espera de la CPU,
requiere un hardware ms complejo.
11
12
estado invlido al estado compartido dependiendo de si otra cach tiene una copia del
bloque. Cualquier otra cach con el bloque en el estado compartido observa el BusRd,
pero no toma ninguna accin especial, permitiendo que la memoria responda con el dato.
Sin embargo, si una cach tiene el bloque en el estado modificado (y nicamente puede
haber una) y observa una transaccin BusRd en el bus, debe participar en la transaccin ya
que la copia existente en memoria no es vlida. Esta cach enva los datos al bus en lugar
de la memoria y degrada su copia del bloque al estado compartido. La memoria y la cach
que peda el dato son actualizadas. Esto puede conseguirse mediante una transferencia
directa entre las cachs a travs del bus durante esta transaccin BusRd o indicando un
error en la transaccin BusRd y generando una transaccin de escritura para actualizar la
memoria. En el ltimo caso, la cach original volvera a realizar su solicitud para obtener el
bloque de la memoria. (Tambin es posible hacer que el dato puesto en el bus sea tomado
por la cach que realiz la peticin pero no por la memoria, dejando la memoria sin
actualizar, pero este caso requiere ms estados).
Una escritura en un bloque invlido implica cargar el bloque entero y despus
modificar los bytes que se deseen. En este caso se genera una transaccin de lectura
exclusiva en el bus, que causa que todas las otras copias del bloque sean invalidadas,
asegurando a la cach que realiza la peticin la propiedad exclusiva del bloque. El bloque
asciende al estado de modificado y despus se escribe. Si otra cach realiza una peticin
posterior de acceso exclusivo, en respuesta a su transaccin BusRdX el bloque se
degradar al estado de invlido despus de poner la copia exclusiva en el bus.
La transaccin ms interesante ocurre cuando se escribe en un bloque compartido.
El tratamiento en este caso es igual al de una escritura en un bloque invlido, usando una
transaccin de lectura exclusiva en el bus para adquirir la propiedad exclusiva del bloque.
Los datos que nos devuelve el bus pueden ser ignorados en este caso ya que ya existen en
la cach. De hecho, una optimizacin comn para reducir el trfico en el bus es introducir
una nueva transaccin, llamada actualizacin del bus o BusUpgr, para esta situacin. Un
BusUpgr obtiene la propiedad exclusiva al igual que un BusRdX, invalidando las dems
copias, pero no devuelve el bloque al que realiz la peticin. Independientemente de la
transaccin utilizada, el bloque pasa al estado modificado. Posteriores escrituras en el
bloque mientras permanece en ese estado no generan nuevas transacciones.
El reemplazamiento de un bloque de la cach lleva a dicho bloque al estado de
invlido (no presente) eliminndolo de la cach. Por lo tanto, un reemplazamiento supone
que dos bloques cambien de estado en la cach: el que es reemplazado pasa de su estado
actual al estado de invlido, el que ocupa su lugar de invlido a su nuevo estado. El ltimo
cambio no puede tener lugar antes del primero. Si el bloque a ser reemplazado estaba en
el estado de modificado, la transicin de reemplazamiento de M a I genera una
transaccin de post-escritura. Si estaba en el estado invlido o compartido, no es
necesario hacer nada.
13
14
El nombre del protocolo (MESI) viene de los nombres de los estados que puede
tomar una lnea: modificada, exclusiva, compartida e invlida que en ingls significan
Modified, Exclusive, Shared y Invalid. Una lnea que es propiedad de cualquier cach
puede estar como exclusiva o modificada. Las lneas que estn en el estado compartida no
son propiedad de nadie en concreto. La aproximacin MESI permite la determinacin de si
una lnea es compartida o no cuando se carga. Una lnea modificada es enviada
directamente al peticionario desde la cach que la contiene. Esto evita la necesidad de
enviar comandos de invalidacin para todas aquellas lneas que no estaban compartidas.
Las transiciones segn las operaciones realizadas sobre las cachs:
Cada lnea de cache tiene dos bits extra donde se guarda el estado de esa lnea. As
a la lnea vlida se la conoce tambin como consistente mltiple, a la reservada como
consistente nica, y la sucia como inconsistente nica, la vlida se queda con el mismo
nombre.
Para mantener la consistencia el protocolo requiere dos conjuntos de comandos.
Los comandos emitidos por el procesador local; son fallo de lectura, acierto de escritura y
fallo de escritura. Siempre que se produce un fallo de lectura la lnea entra en el estado de
valida. El primer acierto de escritura lleva a la lnea a su estado de reservada. Los aciertos
de escritura posteriores cambian el estado a sucia.
Los comandos de invalidacin emitidos por el resto de procesadores a travs del
bus de sondeo compartido. El comando invalidar en lectura lee una lnea o bloque e
invalida el resto de copias. El comando invalidar en escritura invalida todas las copias de
una lnea. El comando lectura de bus se corresponde con una lectura normal a memoria
por otro procesador.
Los eventos y acciones que tienen lugar en el sistema de memoria son:
18
Para poder implementar este protocolo en un bus, son necesarias unas lneas
adicionales para inhibir la memoria principal cuando se produce un fallo de lectura y hay
copias sucias. Muchos de los buses estndar no incluyen estas lneas por lo que resulta
complicado implantar protocolos de coherencia de cach, a pesar de que estos buses
incluyen multiprocesadores.
19
Las peticiones del procesador, las transacciones del bus y las acciones a realizar por
el protocolo son similares a las vistas en el protocolo MESI. El procesador todava enva
peticiones de lectura (PrRd) y escritura (PrWr). Sin embargo, dado que no tenemos un
Fallo en una lectura: Se genera una transaccin BusRd. Dependiendo del estado de
la seal compartida (S), el bloque se carga en el estado E o SC en la cach local.
Ms concretamente, si el bloque est en el estado M o SM en una de las otras
cachs, esa cach activar la lnea S y proporcionar el ltimo valor para ese
bloque en el bus, y el bloque se cargar en la cach local en el estado SC (tambin
20
21
Protocolo Firefly
El protocolo Firefly tiene 3 estados que son: lectura privada os Exclusivo (E), lectura
compartida o Compartida Consistente (SC) y sucia privada o Modificada (M). El estado de
lnea invlida se utiliza slo para definir la condicin inicial de una lnea de cach. El Firefly
23
Conclusiones
24
Bibliografa
25