/* * Escribir bloque de caché a memoria */ public void BloqueAMem(BloqueCacheDatos bloqueCache, int nBloque) { for (int i = 0; i < 4; i++) { memoriaPrincipal.SetPalabraDato(nBloque, i, bloqueCache.GetPalabra(i)); } }
/* * Constructor de la clase */ public CacheDatos() { bloques = new BloqueCacheDatos[CANTIDAD_BLOQUES]; for (int i = 0; i < CANTIDAD_BLOQUES; i++) { bloques[i] = new BloqueCacheDatos(); } }
/* * Copiar Bloque de una caché a la otra */ public void ModificarPalabraCache(int nucleoDestino, int iBloque, BloqueCacheDatos elBloque) { if (nucleoDestino == 0) { n0.GetCacheDatos().SetBloque(iBloque, elBloque); } else { n1.GetCacheDatos().SetBloque(iBloque, elBloque); } }
/* * Leer bloque de memoria */ public BloqueCacheDatos BloqueDeMem(int nBloque) { BloqueCacheDatos bloqueCache = new BloqueCacheDatos(); for (int i = 0; i < 4; i++) { bloqueCache.SetPalabra(i, memoriaPrincipal.GetPalabraDato(nBloque, i)); } bloqueCache.SetEtiqueta(memoriaPrincipal.GetEtiquetaDato(nBloque)); bloqueCache.SetEstado(BloqueCacheDatos.Estado.C); //Siempre se cargan compartidos return(bloqueCache); }
/* * SetBloque Colocar elBloque en la caché de datos * * @param int Indice del arreglo de bloques que se va a modificar * @param BloqueCacheDatos Bloque que se va a insertar */ public void SetBloque(int iBloque, BloqueCacheDatos elBloque) { bloques[iBloque] = elBloque; }