<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0254-0770</journal-id>
<journal-title><![CDATA[Revista Técnica de la Facultad de Ingeniería Universidad del Zulia]]></journal-title>
<abbrev-journal-title><![CDATA[Rev. Téc. Ing. Univ. Zulia]]></abbrev-journal-title>
<issn>0254-0770</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad del Zulia]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0254-07702007000200008</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[Cache memory coherence protocol for distributed systems]]></article-title>
<article-title xml:lang="es"><![CDATA[Protocolo de coherencia de memoria cache para sistemas distribuidos]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Aguilar Castro]]></surname>
<given-names><![CDATA[José Lisandro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Sumoza Matos]]></surname>
<given-names><![CDATA[Rodolfo Leonardo]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de Los Andes Escuela de Ingeniería de Sistemas, CEMISID ]]></institution>
<addr-line><![CDATA[Mérida ]]></addr-line>
<country>Venezuela</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad Simón Bolívar 2Departamento de Computación ]]></institution>
<addr-line><![CDATA[Sartenejas-Baruta ]]></addr-line>
<country>Venezuela</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2007</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2007</year>
</pub-date>
<volume>30</volume>
<numero>2</numero>
<fpage>170</fpage>
<lpage>178</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_arttext&amp;pid=S0254-07702007000200008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_abstract&amp;pid=S0254-07702007000200008&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_pdf&amp;pid=S0254-07702007000200008&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[This work proposes a protocol which manages the coherence in the cache memory in systems with distributed memory. Cache memory is distributed in different system’s nodes, for this reason-stored information in them must to be maintained coherent. This protocol was proved using a methodology based on the formal description using a finites states machine and the Spin tool]]></p></abstract>
<abstract abstract-type="short" xml:lang="es"><p><![CDATA[Este trabajo propone un protocolo que gestiona la coherencia a nivel de la memoria cache en sistemas con memoria distribuida. La memoria cache se encuentra distribuida a través de los diferentes nodos del sistema, por lo que se debe mantener coherente la información almacenada en ellas. El protocolo se validó utilizando una metodología basada en la descripción formal, utilizando una máquina de estados finitos y la herramienta de software Spin]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[Cache memory]]></kwd>
<kwd lng="en"><![CDATA[coherence protocols]]></kwd>
<kwd lng="en"><![CDATA[distributed Systems]]></kwd>
<kwd lng="es"><![CDATA[Memoria cache]]></kwd>
<kwd lng="es"><![CDATA[protocolos de coherencia]]></kwd>
<kwd lng="es"><![CDATA[sistemas distribuidos]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  <BASEFONT SIZE="3">     <P align="CENTER" style="word-spacing: 0; line-height: 100%"><b><font color="#1f1a17" face="Verdana" size="3">Cache memory coherence protocol for distributed systems&nbsp;</font></b></P>     <P align="CENTER" style="word-spacing: 0; line-height: 100%"><font size="2" face="Verdana"><b><FONT COLOR="#1f1a17"> Jos&#233; Lisandro Aguilar Castro<SUP>1</SUP> and Rodolfo Leonardo Sumoza Matos<SUP>2&nbsp;</SUP></FONT></b></font></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><font face="Verdana" size="2"><sup>1</sup>Escuela de Ingenier&#237;a de Sistemas, CEMISID, Universidad de Los Andes.  M&#233;rida, Venezuela, C&#243;digo Postal 5101, Tel&#233;fono: 0274-2447111. aguilar@ula.ve</font></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><font face="Verdana" size="2"><sup>2</sup>Departamento  de Computaci&#243;n, Universidad Sim&#243;n Bol&#237;var. Sartenejas-Baruta, Venezuela,  C&#243;digo Postal 1080, Tel&#233;fono: 0212-9063241. sumoza@ldc.usb.ve</font></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> Abstract&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> This work proposes a protocol which manages the coherence in the cache  memory in systems with distributed memory. Cache memory is distributed  in different system&#146;s nodes, for this reason-stored information in them  must to be maintained coherent. This protocol was proved using a methodology  based on the formal description using a finites states machine and the  Spin tool.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> Key words:&nbsp;</FONT></B><FONT COLOR="#1f1a17" size="2" face="Verdana">Cache memory, coherence protocols, distributed Systems.&nbsp; </FONT></P>     <p style="word-spacing: 0; line-height: 100%" align="center"><FONT COLOR="#1f1a17" size="2" face="Verdana"> <b> Protocolo de coherencia de memoria cache para sistemas distribuidos&nbsp;</b> </FONT>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> Resumen&nbsp; </FONT></B> </P>     ]]></body>
<body><![CDATA[<P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Este trabajo propone un protocolo que gestiona la coherencia a nivel de  la memoria cache en sistemas con memoria distribuida. La memoria cache  se encuentra distribuida a trav&#233;s de los diferentes nodos del sistema,  por lo que se debe mantener coherente la informaci&#243;n almacenada en ellas.  El protocolo se valid&#243; utilizando una metodolog&#237;a basada en la descripci&#243;n  formal, utilizando una m&#225;quina de estados finitos y la herramienta de software  Spin.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> Palabras clave:&nbsp;</FONT></B><FONT COLOR="#1f1a17" size="2" face="Verdana">Memoria cache, protocolos de coherencia, sistemas distribuidos.</FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> <b>Recibido </b>el 05 de Mayo de 2006&nbsp;<b>En forma revisada</b> el 14 de Mayo de 2007&nbsp;</FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 1. Introducci&#243;n&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Este trabajo propone un protocolo que gestiona la coherencia a nivel de  la memoria cache en sistemas con memoria distribuida (no compartida), en  el cual tambi&#233;n la memoria cache est&#225; distribuida, es decir, la arquitectura  subyacente es un sistema de Memoria Cache Distribuida, cuya red de interconexi&#243;n  puede ser de cualquier tipo. Principalmente se han realizado estudios en  cuanto a la coherencia de la cache cuando se utiliza memoria compartida  distribuida [1-8], como por ejemplo el caso de DASH cc-NUMA, que utiliza  un mecanismo de coherencia para la memoria cache, pero bajo una arquitectura  de memoria compartida distribuida. En cuanto a memorias distribuidas, hasta  ahora la mayor&#237;a de los trabajos se han basado en plantear la distribuci&#243;n  de la memoria principal, y su interacci&#243;n con sus respectivas cache, y  no abordan el tema de la cache distribuida espec&#237;ficamente [2, 9, 5]. Este  trabajo se organiza como sigue: inicialmente presentamos el marco te&#243;rico  usado, despu&#233;s presentamos el protocolo propuesto. Finalmente se presentan  las verificaciones hechas y las conclusiones.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 2. Marco Te&#243;rico&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 2.1. Memoria cache&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Es una memoria temporal, generalmente de existencia oculta y autom&#225;tica  para el usuario, que proporciona acceso r&#225;pido a los datos de uso m&#225;s frecuente.  La forma de trabajar de la memoria cache es simple, los datos pedidos por  el procesador son buscados primero en la memoria cache, y despu&#233;s, si no  est&#225;n disponibles en ella, se buscan en la memoria principal.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Existen una serie de mecanismos para la administraci&#243;n y gesti&#243;n de la  memoria cache que son utilizados por los distintos tipos de plataformas  distribuidas (memoria compartida, memoria distribuida, etc.), los cuales  influyen directamente en el rendimiento y el costo de este recurso. Entre  los mecanismos est&#225; [2, 13, 4, 5] el<B> </B>denominado Write Through o Write Update  en el cual la data es escrita en la memoria principal al mismo tiempo que  es almacenada en la memoria cache.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> La distribuci&#243;n de la memoria cache en sistemas con memoria principal distribuida,  significa que cada procesador posee su propia cache y su propia memoria  principal. Los mecanismos presentados previamente establecen una relaci&#243;n  entre la memoria principal y su cache, sin considerar a los otros nodos  del sistema. Es en estos casos donde el problema de coherencia deviene  crucial. El uso de la Memoria Cache Distribuida es importante en ambientes  donde hay muchos accesos a datos remotos por aplicaciones, en los cuales  las actualizaciones de los mismos ocurren con muy poca frecuencia. Por  ejemplo, en los Grid de Datos donde las consultas remotas son importantes.&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 2.2. Coherencia&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> La coherencia significa que cualquier lectura debe retornar el valor de  la escritura m&#225;s reciente. Mientras m&#225;s estricta sea esta idea, m&#225;s dif&#237;cil  de implementar ser&#225;. Para explicarlo de otra forma, la coherencia se logra  cuando cualquier escritura debe ser vista por una lectura, y todas las  escrituras son vistas en el orden apropiado (serializaci&#243;n). Para el mantenimiento  coherente de las cache se utilizan b&#225;sicamente dos tipos de protocolos:&nbsp; </FONT></P> <UL>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Protocolo entrometido, de sondeo o snoopy: </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Su mecanismo b&#225;sico es el de  distribuir la informaci&#243;n permanentemente usando las pol&#237;ticas de Invalidaci&#243;n  en Escritura o Escribir-Invalidar y Actualizaci&#243;n en Escritura, Escribir-Actualizar  [2, 5].&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Protocolo con directorio (mantiene la coherencia utilizando la memoria  principal): </FONT></B> <FONT COLOR="#1f1a17" face="Verdana">  Implementa una estructura, llamada tabla o directorio, que  registra cu&#225;l procesador o nodo ha gravado en su memoria cache cualquier  bloque dado de la memoria principal [12].&nbsp; </FONT></font></LI>     </UL>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3. Presentaci&#243;n de la Propuesta&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3.1. Generalidades&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Se propone el dise&#241;o de un protocolo para la gesti&#243;n de la coherencia en  sistemas distribuidos, con memoria principal y memoria cache distribuidas,  cuyo espacio de direcciones (direccionamiento) se gestiona a nivel local.  El entorno del que se est&#225; hablando es uno que utiliza la conexi&#243;n en red  de un conjunto de nodos, donde cada uno representa un computador con un  CPU, una memoria cache y una memoria principal, conectado a trav&#233;s de una  red de interconexi&#243;n con el resto de los nodos.&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Cada nodo, inicialmente tiene un conjunto de datos en su memoria principal,  y para ese conjunto de datos, ese nodo representa su nodo hogar o Home.  Adem&#225;s cuenta con un directorio local que registra ese conjunto de datos  que pueden estar almacenados en memoria cache local o remota. El nodo hogar  es el due&#241;o de ese conjunto de datos, por ende, ning&#250;n otro nodo puede  tener alg&#250;n dato de ese conjunto en su memoria principal, pero si en su  memoria cache.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> El protocolo propuesto utiliza como base para la gesti&#243;n de la consistencia  el paradigma de Directorios Distribuidos, implementados localmente en cada  nodo a trav&#233;s de &#193;rboles Binarios Balanceados como estructura din&#225;mica (<a href="#fig1">Figura&nbsp;1</a>), como mecanismo de coherencia se utiliza la Actualizaci&#243;n en  Escritura (Write update), y la exclusi&#243;n mutua distribuida la cual est&#225;  impl&#237;cita en el procedimiento. En la Actualizaci&#243;n en Escritura implementada,  cuando un procesador cambia un dato este mecanismo actualiza de forma inmediata  la memoria principal y la memoria cache local donde pertenece el dato.  En el caso de actualizaciones remotas, la cache remota queda actualizada  junto con la cache y la memoria principal del nodo al que pertenece el  dato (nodo hogar). En todos los casos, el resto de las memorias cache de  los otros nodos que comparten el dato y que est&#225;n registrados en el directorio  que se encuentra en el nodo hogar son invalidadas. Para identificar al  nodo hogar (nodo propietario) se utiliza uno de los campos del directorio (<a href="#fig1">Figura&nbsp;1</a>), el cual contiene una direcci&#243;n de memoria principal (apuntador),  en los casos donde el dato pertenezca al nodo local, o una direcci&#243;n IP,  para los casos donde el dato pertenezca a un nodo remoto.</FONT></P>     <P align="center" style="word-spacing: 0; line-height: 100%"><a name="fig1"><img border="0" src="/img/fbpe/rtfiuz/v30n2/art08fig1.gif" width="571" height="331"></a></P>     
<P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Cada dato posee tres (3) estados posibles: Limpio, Inv&#225;lido y Bloqueado.  El primer caso representa un dato que no ha sido modificado por alg&#250;n procesador  desde su &#250;ltima actualizaci&#243;n. El segundo caso ocurre cuando un dato ha  sido modificado por alg&#250;n otro nodo, tal que a su vez se actualiza la memoria  en el nodo hogar y se invalida el resto de los nodos que comparten el dato,  estas invalidaciones se hacen a trav&#233;s del env&#237;o de mensajes a los nodos  registrados en el directorio (haciendo un broadcasting). El tercer caso  ocurre cuando un nodo intenta modificar un dato, y esta acci&#243;n no se ha  completado en la memoria principal del nodo hogar; as&#237;, el estado en la  memoria cache del nodo el cual realiza la actualizaci&#243;n ser&#225; el de bloqueado;  de esta forma ning&#250;n otro proceso puede acceder a este dato hasta terminar  la acci&#243;n que se est&#225; realizando sobre &#233;l. La consistencia se garantiza  por los mecanismos de exclusi&#243;n mutua distribuida de acceso al dato objeto  de estudio, y a trav&#233;s de la propagaci&#243;n de mensajes (broadcasting) a los  sitios involucrados en las operaciones de manejo de coherencia. Cada directorio  tiene los siguientes campos:&nbsp; </FONT></P> <ul>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo de Referencia del Dato o crd: Es un apuntador al dato que se almacena  en la memoria, y es el &#237;ndice de b&#250;squeda del directorio. Para los casos  en los cuales los datos no pertenecen al nodo, dicho apuntador ser&#225; la  direcci&#243;n IP del nodo hogar del dato.&nbsp; </FONT></li>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo de Informaci&#243;n del Estado o cie: Contiene la informaci&#243;n del estado  actual del dato (Limpio, Inv&#225;lido o Bloqueado).&nbsp; </FONT></li>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo del identificador Remoto del Dato o ivr: Es el nombre que le asigna  el nodo remoto al dato. Este se utiliza con la finalidad de evitar inconsistencias  a nivel de nombres de datos locales y remotos. Para el caso cuando el dato  pertenece a ese nodo el valor de este campo es el mismo que el campo ivl.&nbsp; </FONT></li>       ]]></body>
<body><![CDATA[<li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo del Identificador Local del Dato o ivl: Es el nombre que le asigna  el nodo local al dato. Tambi&#233;n se utiliza con la finalidad de evitar inconsistencias  a nivel de nombres de datos remotos y locales.&nbsp; </FONT></li>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo de la direcci&#243;n de memoria cache o dcl: Identifica el sitio en la  memoria cache donde se encuentra el dato.&nbsp; </FONT></li>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campos de informaci&#243;n de la presencia del Dato o cid1 y cid2: Son dos campos  apuntadores utilizados para construir el &#193;rbol Binario que contiene la  informaci&#243;n (las direcciones IP) del resto de los nodos (computadoras)  que en un momento dado comparten el dato (<a href="#fig1">Figura 1</a>). Cada uno de los &#147;nodos&#148;  del &#193;rbol Binario posee tres campos: Uno indica la direcci&#243;n IP del nodo,  el otro es un conmutador utilizado para el balanceo, y el tercero es un  par de apuntadores a sus &#147;nodos&#148; hijos.</FONT></li>       <li>         <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Campo conmutador conm: Refleja la &#250;ltima asignaci&#243;n hecha en el &#225;rbol,  es decir, si fue en su rama izquierda o derecha. Se utiliza para fines  del balanceo de dicho &#225;rbol.&nbsp; </FONT></li>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Cuando el dato es remoto, es decir no pertenece al nodo, los campos conm,  cid1 y cid2 son nulos.&nbsp; </FONT></LI>     ]]></body>
<body><![CDATA[</ul>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> El esquema de dicho protocolo se presenta como la interacci&#243;n entre el  procesador, la memoria principal, y la memoria cache de los nodos que conforman  el sistema. La comunicaci&#243;n entre nodos se realiza a trav&#233;s de pases de  mensajes administrados segun una pol&#237;tica FIFO. En la <a href="#fig2"> Figura 2 </a> se muestra  la m&#225;quina de estados finitos que describe el comportamiento del protocolo  a nivel de la memoria cache.</FONT></P>     <P align="center" style="word-spacing: 0; line-height: 100%"><a name="fig2"><img border="0" src="/img/fbpe/rtfiuz/v30n2/art08fig2.gif" width="555" height="436"></a></P>     
<P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3.2. Reglas que rigen el comportamiento del protocolo en cada uno de sus  componentes&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3.2.1. Reglas para las solicitudes del procesador&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> La <a href="#Tabla 1"> Tabla 1</a> muestra el conjunto de reglas asociadas al procesador.&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> <b><a name="Tabla 1"> Tabla 1</a>. </b> Reglas del procesador&nbsp; </FONT></P>     <div align="center">       <center> <TABLE width="500" border="1"> <TR> <TD WIDTH="91" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Instrucci&#243;n&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Edo. Inicial Cache&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Acci&#243;n&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Edo. Final Cache&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="91" ROWSPAN="4">     <P ALIGN="center"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Load(a)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Limpio)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finalizar Load&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda (a,v,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Invalido)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;CacheSol,a&gt; <b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">&nbsp; Memo&nbsp;</FONT></FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-CachePendiente)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="170" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Bloqueado)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finalizar Load&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Bloqueado)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> cache&nbsp;</FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;CacheSol,a&gt; <b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">&nbsp; Memo&nbsp;</FONT></FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,CachePendiente)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="91" ROWSPAN="3">     <P ALIGN="center"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Store(a,v)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Limpio)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Wu,a,v&gt; <b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">&nbsp; Memo&nbsp;</FONT></FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, Bloqueado)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="170" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Invalido)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finalizar Store&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, Invalido)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v1,Bloqueado)&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finalizar Store&nbsp; </FONT></P> </TD> <TD WIDTH="170" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v1,Bloqueado)&nbsp; </FONT></P> </TD> </TR> </TABLE>   </center> </div>     <P align="justify" style="word-spacing: 0; line-height: 100%"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Explicaci&#243;n y notaci&#243;n:</FONT></B><FONT COLOR="#1f1a17" face="Verdana">&nbsp;</FONT></font></P>     <blockquote>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &nbsp;<I><B>Instrucci&#243;n (a,v)</B></I>, representa una instrucci&#243;n que puede ser: <I>Store(a,v)  o solicitud de escritura de un dato y Load(a) o solicitud de lectura, </I>que  utilizan la direcci&#243;n de memoria <I>a</I> y el valor del dato <I>v</I> (puede ser opcional,  seg&#250;n sea el caso).&nbsp; </FONT>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> En cuanto a los estados de la cache, <I><B>Celda (a,v,Estado)</B></I> representa una  Celda o Bloque en la memoria cache con direcci&#243;n <I>a, </I>valor del dato <I>v </I>(opcional)  y su estado actual que puede ser Limpio, Inv&#225;lido o Bloqueado.&nbsp; </FONT>       ]]></body>
<body><![CDATA[<p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> La acci&#243;n que se representa con un patr&#243;n como el siguiente: <B>&lt;</B><I><B>cmd,a,v</B></I><B>&gt;</B>,  simboliza un mensaje cuyo comando asociado es <I>cmd</I>, con direcci&#243;n en memoria  principal <I>a</I> y valor del dato <I>v</I> (puede ser opcional, seg&#250;n el caso). Para  el caso de las reglas del procesador, &lt;cmd,a,v&gt; <FONT COLOR="#1f1a17">&#224; Memo, quiere decir que  el mensaje se ha enviado a la memoria principal (Memo). El comando es la  parte que indica qu&#233; es lo que el mensaje est&#225; requiriendo. Los mensajes  pueden ser <I><B>&lt;Wu,a,v&gt; </B></I>y<I><B> &lt;CacheSol,a&gt;.&nbsp;</B></I></FONT> </FONT>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <I><B><FONT COLOR="#1f1a17" face="Verdana"> &lt;Wu,a,v&gt; </FONT></B></I> <FONT COLOR="#1f1a17" face="Verdana">  representa un mensaje de solicitud de escritura o actualizaci&#243;n  <I>Write Update</I>, a la direcci&#243;n de memoria <I>a</I> con el valor del dato <I>v</I>.&nbsp; </FONT></font>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"><I><B><FONT COLOR="#1f1a17" face="Verdana"> &lt;CacheSol,a&gt; </FONT></B></I> <FONT COLOR="#1f1a17" face="Verdana">  representa un mensaje que solicita el valor o dato que posee  la direcci&#243;n de memoria <I>a</I>.&nbsp; </FONT></font>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Un estado <I><B>CachePendiente</B></I> es un estado moment&#225;neo que representa la espera  de la respuesta a la solicitud hecha a la memoria de un dato.&nbsp; </FONT> </blockquote>     <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <img border="0" src="/img/fbpe/rtfiuz/v30n2/art08form1.gif" width="15" height="17"> cache, quiere decir que la direcci&#243;n de memoria <I>a</I> no se encuentra almacenado  en la Cache.&nbsp; </FONT>     
<p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"><I><B><FONT COLOR="#1f1a17" face="Verdana"> Reconcile(a,id) </FONT></B></I> <FONT COLOR="#1f1a17" face="Verdana">  elimina f&#237;sicamente el dato &#147;a&#148;, con direcci&#243;n &#147;id&#148;, de  la memoria cache local. Una de las posibles causas es cuando la memoria  cache est&#225; llena y el mecanismo de reemplazo sustituye a &#147;a&#148;. Ahora bien,  cuando un nodo remoto, el cual no es el propietario del dato &#147;a&#148;, decide  sacar de su memoria cache al dato &#147;a&#148;, &#233;ste le env&#237;a un mensaje al nodo  hogar (id) para que actualice su directorio (&#225;rbol), desincorporando dicho  nodo remoto del registro relacionado al dato &#147;a&#148;.&nbsp; </FONT></font>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Una instrucci&#243;n <I>Load</I> finaliza despu&#233;s que el dato ha sido enviado al procesador,  y una instrucci&#243;n <I>Store</I> se finaliza despu&#233;s que la memoria principal y  la cache han sido modificadas en el nodo hogar.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3.2.2. Reglas de la cache y de la memoria principal&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Las reglas que establecen el funcionamiento l&#243;gico del protocolo en la  memoria cache se muestra en la <a href="#Tabla 2"> Tabla 2</a>.</FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> <b><a name="Tabla 2"> Tabla 2</a>. </b> Reglas mandatorias del motor de cache.</FONT></P>     ]]></body>
<body><![CDATA[<div align="center">       <center> <TABLE width="500" border="1"> <TR> <TD WIDTH="131" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Mensaje (*)&nbsp; </FONT></P> </TD> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Edo. inicial cache&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Acci&#243;n&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Pr&#243;ximo edo. cache&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="131" ROWSPAN="3">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Cache,a,v&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> cache&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Fin,a,v&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b> Memo&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,CachePendiente)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Fin,a,v&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b> Memo&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Bloqueado)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP"> <font face="Verdana" size="2"> &nbsp;&nbsp;&nbsp;</font></TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="131" ROWSPAN="4">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Limpio)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP"> <font face="Verdana" size="2"> &nbsp;&nbsp;&nbsp;</font></TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Invalido)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Inv&#225;lido)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP"> <font face="Verdana" size="2"> &nbsp;&nbsp;&nbsp;</font></TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-, Invalido)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Bloqueado)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP"> <font face="Verdana" size="2"> &nbsp;&nbsp;&nbsp;</font></TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-, Invalido)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,CachePendiente)&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP"> <font face="Verdana" size="2"> &nbsp;&nbsp;&nbsp;</font></TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-, Inv&#225;lido)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="131" ROWSPAN="4">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;ActualizaNet,a,v,id&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Limpio)&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> id <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">¹</span> idl&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b>dir-idl&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v1,Bloqueado)&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> id <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">¹</span>idl&nbsp;</FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b>id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Bloqueado)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v1,Limpio)&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> id <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> idl&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b>dir-id-idl&nbsp;</FONT> </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Cache,a,v&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b>id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,Limpio)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="180" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Bloqueado)&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> id = idl&nbsp; </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;<FONT COLOR="#1f1a17"><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b>dir&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="145" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, Limpio)&nbsp; </FONT></P> </TD> </TR> </TABLE>   </center> </div>     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> (*)Desde Memoria Principal del nodo local, o memoria cache o principal  del nodo remoto hogar.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Las reglas de la memoria principal pueden verse en la<a href="#Tabla 3"> Tabla 3</a>.</FONT></P>     <P ALIGN="CENTER"><font face="Verdana" size="2"><b><FONT COLOR="#1f1a17"> <a name="Tabla 3"> Tabla 3</a>. </FONT></b><FONT COLOR="#1f1a17" face="Verdana"> Reglas mandatorias del motor de memoria&nbsp; </FONT></font></P>     <div align="center">       <center> <TABLE width="500" border="1"> <TR> <TD WIDTH="108" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Mensaje&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Edo. inicial de memoria&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Acci&#243;n&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Pr&#243;ximo edo. memoria&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="108" ROWSPAN="2">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;CacheSol,a&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(-,-,D[dir]) a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> dir&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoSol,a&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">Memo&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda (-,-,D[dir])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,D[dir]) a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span> dir&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoSol,a&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">Memo&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda (a,-,D[dir])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="108" ROWSPAN="2">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Wu,a,v1&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, D[idl | dir])&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> Memo&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Invalidar,a&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">dir-idl&nbsp;</FONT> </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Cache,a,v&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">idl&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v1, D[idl])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, D[id | dir])&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span> Memo&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;ActualizaNet,a,v,idl&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v, D[id|dir])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="108" ROWSPAN="3">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoSol,a,&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(-,-,D[dir])&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> Memo&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Cache,a,v&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,D[id|dir])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,D[dir])&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span> Memo&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoNet,a,v&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">Net&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,NetPendiente)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,D[dir]) a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> Memo&nbsp;</FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span>&nbsp; Dir&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoNet,a,v&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,NetPendiente)&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="108" ROWSPAN="2">     <P ALIGN="LEFT"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;MemoNet,a,v&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Memo)&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span>Memo&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Cache,a,v&gt;<b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17">id&nbsp;</FONT> </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,D[id|dir])&nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,-,Memo)&nbsp; </FONT></P>     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> a <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Ï</span> Memo&nbsp;</FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finaliza&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &nbsp; </FONT></P> </TD> </TR> <TR> <TD WIDTH="108" VALIGN="TOP">     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> &lt;Fin,a,v&gt;&nbsp; </FONT></P> </TD> <TD WIDTH="177" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,NetPendiente)&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Finaliza&nbsp; </FONT></P> </TD> <TD WIDTH="158" VALIGN="TOP">     <P ALIGN="CENTER"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Celda(a,v,D[id|dir])&nbsp; </FONT></P> </TD> </TR> </TABLE>   </center> </div>     <P align="justify" style="word-spacing: 0; line-height: 100%"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Explicaci&#243;n y notaci&#243;n:</FONT></B><FONT COLOR="#1f1a17" face="Verdana">&nbsp;</FONT></font></P> <UL>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> El origen y el destino de un mensaje pueden ser un sitio en cache (<I>id y  idl</I> representan la direcci&#243;n IP, o IP local respectivamente), un conjunto  de sitios cache o nodos (<I>dir</I>), la memoria principal local o remota (<I>Memo</I>),  o el procesador.&nbsp; </FONT></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Un mensaje recibido en la memoria principal es siempre enviado del sitio  <I>id,</I> del procesador<I>, </I>de una memoria remota o de la misma memoria local,  mientras que un mensaje recibido en la cache es siempre enviado desde la  memoria principal local o remota.&nbsp; </FONT></LI>     <LI>       ]]></body>
<body><![CDATA[<p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"><I><B><FONT COLOR="#1f1a17" face="Verdana"> &lt;cmd,a,v&gt;</FONT></B></I><b><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span></b><FONT COLOR="#1f1a17" face="Verdana"><I><B>   dir</B></I> quiere decir el envío del mensaje con un comando cmd a un   conjunto de sitios de cache (dir), con dirección de memoria a y valor del   dato v (opcional).&nbsp;</FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;cmd,a,v&gt;<span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">®</span>Memo, a </FONT></font><font size="2" COLOR="#1f1a17" face="Verdana"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-size: 14.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: Verdana; mso-fareast-font-family: Times New Roman; mso-hansi-font-family: Verdana; mso-bidi-font-family: Times New Roman; mso-ansi-language: ES; mso-fareast-language: ES; mso-bidi-language: AR-SA">Î</span>Memo,   &lt;Wu,a,v&gt;, CacheSol, CachePendiente</font></B><font size="2" COLOR="#1f1a17" face="Verdana">   tienen la misma significación que en las reglas del procesador.&nbsp;</font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;Cache,a,v&gt; </FONT></B> <FONT COLOR="#1f1a17" face="Verdana">  representa un mensaje que le indica a la cache que almacene el valor o dato <I>v</I>  con dirección de memoria <I>a</I>.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;Invalidar,a&gt; </FONT></B> <FONT COLOR="#1f1a17" face="Verdana">  representa un mensaje que le solicita a la cache que invalide su contenido o dato, y elimina el apuntador en el directorio del nodo hogar a ese dato, de tal forma que el espacio del dato inválido pueda ser reutilizado.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Para el caso de la memoria <B>Celda(a,v, D[dir])</B>, representa una celda en la memoria principal con dirección de memoria a, valor del dato v, y con un directorio el cual contiene almacenado el conjunto de referencias a nodos <I>dir</I>.&nbsp; </FONT></LI>     <LI>       ]]></body>
<body><![CDATA[<p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Celda(a,v,D[id|dir]), </FONT></B> <FONT COLOR="#1f1a17" face="Verdana">  también relacionado a la memoria, representa una celda en la memoria principal con dirección a, valor del dato v, y con un directorio el cual contiene el conjunto de referencias a nodos dir, en el que se incluye la referencia id, de forma específica.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Celda (a,v,MemoPendiente) </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Representa una celda en la parte de la memoria principal que almacena el directorio, la cual posee un estado de espera por una respuesta que debe provenir de la otra parte de la memoria, pero fuera del directorio, es decir, en su contenido general.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> Celda(a,v,NetPendiente) </FONT></B> <FONT COLOR="#1f1a17" face="Verdana">  Representa una celda en la parte de la memoria principal que almacena el directorio, la cual posee un estado de espera por una respuesta que debe provenir de la red (de otro nodo).&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;MemoSol,a&gt; </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Representa un mensaje que envía la parte de la memoria que posee el directorio, a la parte de la memoria general de la memoria.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;MemoNet,a,v&gt; </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Representa un mensaje enviado por la memoria principal a la red, solicitando un dato con dirección <I>a</I>  y valor <I>v</I>.&nbsp; </FONT></font></LI>     <LI>       ]]></body>
<body><![CDATA[<p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;ActualizaNet,a,v,id&gt; </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Es un mensaje enviado por la red desde <I>id</I>, el cual solicita la actualización del dato en los nodos. Para este caso en particular, si es el nodo hogar actualiza el dato, de lo contrario lo invalida.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><font size="2"> <B><FONT COLOR="#1f1a17" face="Verdana"> &lt;Fin,a,v,id&gt; </FONT> </B><FONT COLOR="#1f1a17" face="Verdana"> Es un mensaje generado con la intención de cambiar el estado NetPendiente de la celda de la memoria.&nbsp; </FONT></font></LI>     <LI>       <p style="word-spacing: 0; line-height: 100%" align="justify"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Cada regla de la memoria, cuando está asociada a un conjunto de referencias a nodos (con sus memorias cache), es decir, cuando envía un mensaje a un dir, la memoria lo distribuye a todos los nodos, y cada nodo lo gestiona de forma local.&nbsp; </FONT></LI>     </ul>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 4. Validación&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> La validación se realizó de dos formas, la primera, a la que se le dio el nombre de validación analítica, consiste en verificar analíticamente que en todos los procesos generados por el protocolo se obtenga siempre alguna respuesta (criterio de completitud). La segunda forma de validación consiste en evaluar algunos criterios de correctitud en forma práctica, es decir, criterios que permitan establecer si el protocolo realiza todos los procesos de forma correcta.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 4.1. Validación analítica&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> En esta parte se evaluará el criterio de “completitud”. La completitud consiste en una propiedad de los sistemas relacionada a la capacidad de finalizar de forma adecuada cada uno de los procesos que inicia, es decir, que cada proceso iniciado debe ser finalizado, y de una forma que se considere correcta. Para esto, en el primer tipo de evaluación para verificar la consistencia lógica se utilizó la máquina de estados finitos de la<a href="#fig2"> Figura 2</a>. Este estudio se basa en establecer que cada uno de los estados que se representan pueden ser alcanzados de alguna manera por la dinámica del sistema. Así, la evaluación de completitud consiste en establecer de forma gráfica cada uno de los caminos posibles que pueden tener los procesos que se pueden desarrollar utilizando el protocolo propuesto en este trabajo.&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Este modelo representa la máquina de estados finitos de un solo nodo, y la dinámica se replica de igual manera para el resto de los nodos. El modelo del protocolo se sometió a un análisis exhaustivo de los estados que pueden o no ser alcanzados, a través de un algoritmo exhaustivo propuesto en [6]. Esta verificación es simple, aunque exhaustiva, ya que consiste en recorrer la máquina de estados finitos comenzando por un estado cualquiera, y se van chequeando el resto de los estados que pueden ser alcanzados. La segunda forma de evaluación de la completitud consiste en evaluar de forma gráfica que cada instrucción generada por un procesador (load, store) se ejecute en su totalidad. Esta evaluación se basa en el seguimiento de las reglas y dinámicas especificadas en las <a href="#Tabla 1">Tablas 1</a>, <a href="#Tabla 2">2</a> y <a href="#Tabla 3">3</a>, las cuales muestran las reglas del procesador, de la memoria principal y cache. Tal como se muestra en las <a href="#Tabla 1">Tablas 1</a>, <a href="#Tabla 2">2</a> y <a href="#Tabla 3">3</a>, al realizar un seguimiento de cada uno de los procesos ejecutados por un procesador, la culminación de cada ejecución o proceso debe ser llevado a cabo por una acción que indique la finalización de la instrucción de forma directa (por ejemplo, “<I>Finalizar Load</I>”) o eliminando cualquier estado de transición (por ejemplo, CachePendiente), a través del desarrollo de cada uno de los pasos que se señalan en dichas tablas.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 4.2. Validación experimental&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> En esta parte se evaluarán criterios de “correctitud”. Consiste en encontrar de forma experimental un error en el diseño que impida la ejecución esperada y adecuada del protocolo. La herramienta utilizada se denomina Spin, la cual es un interpretador de un Meta Lenguaje denominado PROMELA (Process Meta Languaje) [14].&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Para el modelo de esta investigación, sólo se consideraron los criterios de correctitud siguientes: Verificación de la no Existencia de abrazos mortales y/o lazos infinitos. Inicialmente se elaboró un modelo del protocolo propuesto utilizando PROMELA, en el cual se consideraron sólo dos nodos, cada uno con su procesador, su memoria cache y su memoria principal.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> El análisis utilizando Spin mostró que se ejecutaron en la simulación 5 procesos. Pero lo más importante es que al final se observa un indicador que menciona que el modelo posee un estado válido de finalización (valid end state). Lo que quiere decir es que al ejecutar los procesos aplicando cada una de las reglas del protocolo no se generaron abrazos mortales, ni lazos infinitos, ya que de lo contrario la simulación no hubiese finalizado.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Por otro lado, se utilizó Spin como un verificador exhaustivo, capaz de verificar rigurosamente la validez de los requerimientos de correctitud especificados. De esta forma no se encontraron ningún tipo de conflictos, por lo que no se generaron estados finales inválidos. Los estados finales inválidos surgen cuando se generan lazos infinitos o abrazos mortales. De esta manera los criterios de correctitud fueron probados y no indicaron errores de diseño.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> 5. Conclusión&nbsp; </FONT></B> </P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Para lograr el diseño del protocolo propuesto se realizó un análisis exhaustivo del problema de mantenimiento de la coherencia en las memorias cache distribuidas. El protocolo cumplió con las exigencias de correctitud y consistencia lógica requeridas en los protocolos en los sistemas distribuidos. Principalmente, el protocolo propuesto se caracteriza por utilizar un método que usa directorios distribuidos en cada nodo del sistema, los cuales almacenan la información sobre los datos guardados en las memorias cache, incluyendo sus estados actuales. Por medio de estos directorios distribuidos se logra manejar la coherencia de las memorias cache. Los directorios usan como estructura de datos dinámica un Árbol Binario Balanceado.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> El protocolo se basa en un conjunto de reglas que establecen el manejo de la memoria principal y cache en cada nodo del sistema, así como los intercambios de información entre los nodos. Todo esto garantiza la coherencia de los datos almacenados en las diferentes memorias del sistema.&nbsp; </FONT></P>     <P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> Se realizó una validación basada en dos criterios: el primero denominado  <I>completitud</I>, para lo cual se utilizó por un lado un algoritmo exhaustivo, y por otro lado un análisis gráfico, dando como resultado un diseño que cumple con las exigencias de <I>completitud</I>. El segundo criterio se llamo  <I>correctitud</I>, que se evaluó a través de una simulación y utilizando un verificador exhaustivo (ambos usando <I>Spin</I>), las cuales demostraron que el protocolo no contiene errores de diseño. Falta aun evaluar el rendimiento del protocolo bajo distintos esquemas de funcionamiento sobre plataformas reales. Antes que nada, este protocolo no tiene requerimientos especiales a nivel de hardware o software, y en cuanto a su desempeño el costo mas importante es a nivel de la comunicación entre nodos. Si el protocolo se utiliza para soportar aplicaciones que involucren constantes actualizaciones de los datos, tendría tiempos de respuestas muy inferiores con respecto a su utilización en aplicaciones que se ejecuten bajo esquemas de consultas o con muy pocas actualizaciones.&nbsp; </FONT></P>     ]]></body>
<body><![CDATA[<P align="justify" style="word-spacing: 0; line-height: 100%"> <B><FONT COLOR="#1f1a17" size="2" face="Verdana"> Referencias Bibliográfícas&nbsp; </FONT></B> </P>     <!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 1.&nbsp;Aguilar J. y Leiss E.: “A Cache Memory System based on a Dynamic/Adaptive Replacement Approach”. Revista Colombiana de Computación. Vol. 4, No. 1, (2003) 7-20.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345110&pid=S0254-0770200700020000800001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 2.&nbsp;Aguilar J. y Leiss E.: “Introducción a la Computación Paralela”. Editorial Venezolana, Universidad de Los Andes, Mérida, 2004.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345111&pid=S0254-0770200700020000800002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 3.&nbsp;Aguilar J. y Leiss E.: “A Coherence-Replacement Protocol for Web Proxy Cache Systems”. International Journal of Computers and Applications, Vol. 28. No. 1, (2006) 12-18.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345112&pid=S0254-0770200700020000800003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 4.&nbsp;Censier L. y Feautrier A.: “New Solution to Coherence Problems in Multicache Systems”. IEEE, Trans. Comput, Vol. C(27), (1978) 1112-1118.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345113&pid=S0254-0770200700020000800004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 5.&nbsp;El-Ghazawi T.: “Introduction to Cache and Distributed Memory Concepts”, Technical Report. The George Washington University. Estados Unidos, 2002.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345114&pid=S0254-0770200700020000800005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 6.&nbsp;Heinrich M.: “The Performance And Scalability of Distributed Shared Memory Cache Coherence Protocols”. PhD Dissertation. Department of Electrical Engineering. Stanford University, 1998.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345115&pid=S0254-0770200700020000800006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 7.&nbsp;Hennessy J., Heinrich M. y Gupta A.: “Cache Coherent Distributed Shared Memory: Perspectives on Its Development and Future Challenges”. Proceedings of the IEEE, Vol. 87, No. 3 (1999).&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345116&pid=S0254-0770200700020000800007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 8.&nbsp;Vega M., Martín R., Zarallo F., Sánchez J. y Gómez J.: “SMPCache: Simulador de Sistemas de Memoria Caché en Multiprocesadores Simétricos”. XI Jornadas de Paralelismo. Granada, 2000.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345117&pid=S0254-0770200700020000800008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 9.&nbsp;Chandra S., Richard B. y Larus J.: “Language support for writing memory coherence protocols”. University of Wisconsin, Madison, WI, United States, 1996.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345118&pid=S0254-0770200700020000800009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 10.&nbsp;Shen X., Arvind y Rudolph L.: “CACHET: An Adaptive Cache Coherence Protocol for Distributed Shared-Memory”. Technical Report. Massachusetts Institute of Technology. Proceedings of the 13th ACM-SIGARCH International Conference on Super Computing. Rhody, Greece, 1999.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345119&pid=S0254-0770200700020000800010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 11.&nbsp;Shen X., Arvind y Rudolph L.: “Commit-Reconcile &amp; Fence (CRF: A New Memory Model for Architects and Compiler Writers)”. Technical Report. Massachusetts Institute of Technology, 1999.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345120&pid=S0254-0770200700020000800011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 12.&nbsp;Archibald J. y Baer J.: “An Economical Solution to the Cache Coherence Problem, Technical Report”. Department of Computer Science. University of Washington. Seattle. 1984.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345121&pid=S0254-0770200700020000800012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 13.&nbsp;Alexander T. y Kedem G.: “Distributed Prefetch-buffer/Cache Design for High Performance Memory Systems”. Technical Report. Duke University, 1996.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345122&pid=S0254-0770200700020000800013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P align="justify" style="word-spacing: 0; line-height: 100%"><FONT COLOR="#1f1a17" size="2" face="Verdana"> 14.&nbsp;Spin On line. Disponible en: http://spinroot. com/spin/whatispin.html.&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=2345123&pid=S0254-0770200700020000800014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body>
<back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Aguilar]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Leiss]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Cache Memory System based on a Dynamic/Adaptive Replacement Approach]]></article-title>
<source><![CDATA[Revista Colombiana de Computación]]></source>
<year>2003</year>
<volume>4</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>7-20</page-range></nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Aguilar]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Leiss]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<source><![CDATA[Introducción a la Computación Paralela]]></source>
<year>2004</year>
<publisher-loc><![CDATA[Mérida ]]></publisher-loc>
<publisher-name><![CDATA[Editorial Venezolana, Universidad de Los Andes]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Aguilar]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Leiss]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Coherence-Replacement Protocol for Web Proxy Cache Systems]]></article-title>
<source><![CDATA[International Journal of Computers and Applications]]></source>
<year>2006</year>
<volume>28</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>12-18</page-range></nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Censier]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Feautrier]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[New Solution to Coherence Problems in Multicache Systems]]></article-title>
<source><![CDATA[IEEE, Trans. Comput]]></source>
<year>1978</year>
<volume>27</volume><volume>1112-1118</volume>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[El-Ghazawi]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Introduction to Cache and Distributed Memory Concepts]]></source>
<year>2002</year>
<publisher-name><![CDATA[Technical Report. The George Washington University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Heinrich]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[The Performance And Scalability of Distributed Shared Memory Cache Coherence Protocols]]></source>
<year>1998</year>
<publisher-name><![CDATA[PhD Dissertation. Department of Electrical Engineering. Stanford University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hennessy]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Heinrich]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Gupta]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Cache Coherent Distributed Shared Memory: Perspectives on Its Development and Future Challenges]]></article-title>
<source><![CDATA[Proceedings of the IEEE]]></source>
<year>1999</year>
<volume>87</volume>
<numero>3</numero>
<issue>3</issue>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Vega]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Martín]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Zarallo]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Sánchez]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Gómez]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[SMPCache: Simulador de Sistemas de Memoria Caché en Multiprocesadores Simétricos]]></source>
<year></year>
<conf-name><![CDATA[XI Jornadas de Paralelismo]]></conf-name>
<conf-date>2000</conf-date>
<conf-loc>Granada </conf-loc>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chandra]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Richard]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Larus]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Language support for writing memory coherence protocols]]></source>
<year>1996</year>
<publisher-loc><![CDATA[Madison ]]></publisher-loc>
<publisher-name><![CDATA[University of Wisconsin]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shen X]]></surname>
<given-names><![CDATA[Arvind  ]]></given-names>
</name>
<name>
<surname><![CDATA[Rudolph]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<source><![CDATA[CACHET: An Adaptive Cache Coherence Protocol for Distributed Shared-Memory]]></source>
<year></year>
<conf-name><![CDATA[ Technical Report. Massachusetts Institute of Technology. Proceedings of the 13th ACM-SIGARCH International Conference on Super Computing]]></conf-name>
<conf-date>1999</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shen X]]></surname>
<given-names><![CDATA[Arvind]]></given-names>
</name>
<name>
<surname><![CDATA[Rudolph]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<source><![CDATA[Commit-Reconcile & Fence (CRF: A New Memory Model for Architects and Compiler Writers)]]></source>
<year>1999</year>
<publisher-name><![CDATA[Technical Report. Massachusetts Institute of Technology]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Archibald]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Baer]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[An Economical Solution to the Cache Coherence Problem, Technical Report]]></source>
<year>1984</year>
<publisher-name><![CDATA[Department of Computer Science. University of Washington. Seattle]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Alexander]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Kedem]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<source><![CDATA[Distributed Prefetch-buffer/Cache Design for High Performance Memory Systems]]></source>
<year>1996</year>
<publisher-name><![CDATA[Technical Report. Duke University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<source><![CDATA[]]></source>
<year></year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
