Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Proyecto de Memoria principal y cache.

Estas en el tema de Proyecto de Memoria principal y cache. en el foro de C/C++ en Foros del Web. Buenas amigos, tengo un pequeño problema, en la uni me han mandado un pequeño proyecto que debo realizar en C, el detalle es el siguiente ...
  #1 (permalink)  
Antiguo 29/03/2016, 17:49
 
Fecha de Ingreso: marzo-2016
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Pregunta Proyecto de Memoria principal y cache.

Buenas amigos, tengo un pequeño problema, en la uni me han mandado un pequeño proyecto que debo realizar en C, el detalle es el siguiente yo tengo muy poca (casi nada) de experiencia/conocimiento en C y a parte no cuento con un compañero para que me apoye, por lo que he pensado que quizás alguien del foro podría ayudarme ha entender que debo hacer y/o como debo hacerlo, el enunciado es medio largo espero me disculpen y al/los que me quiera ayudar estaré enormemente agradecido, sin mas que decir aquí el enunciado:

Resumen:

Es este proyecto, usted deberá implementar una simulación de una memoria principal y una caché de nivel 1. El objetivo es comprender tanto el funcionamiento de la caché como su estructura. Principalmente se debe simular tanto el movimiento de líneas de caché como la lectura y escritura de datos en estos dos niveles de la jerarquía de memoria.

Especificaciones:

Parte I (Recepción de parámetros)
Usted debe iniciar el proyecto analizando y entendiendo la estructura básica de la caché y la memoria principal. Recuerde que ambos niveles de memoria pueden ser simulados a través de un array lineal de datos. El programa, primeramente deberá recibir tres parámetros:

./sim <MP> <L1> <Bloque>

Donde:
MP hace referencia al número de bits necesarios para direccionar la memoria principal.
LI hace referencia al número de bits necesarios para direccionar la cache de nivel 1.
Bloque hace referencia al número de bits necesarios para direccionar el bloque.
Importante: Usted debe hacer uso de los parámetros de la línea de comandos (argc,argv) de lo contrario su proyecto no será corregido.

Ejemplo de entrada:
./sim 24 19 4

Memoria principal de 16MB
Caché L1 de 512KB
Bloque de 16Bytes

Una vez obtenidos los primeros datos de entrada, usted deberá estructurar tanto su memoria principal como su caché definiendo las unidades necesarias para el almacenamiento y movimiento de los datos.

Parte II (Carga de datos)
El estado de los dos niveles de memoria descritos anteriormente estarán guardados en dos archivos de texto, es decir que usted deberá cargarlos sobre las estructuras definidas de modo que pueda trabajar sobre cierto estado seguro. Cada archivo es una secuencia de caracteres. Asuma que cada vez que el programa se ejecuta, la caché está inicialmente vacía. Dichos archivos tienen el nombre de:
“main.txt” (Hace referencia a la memoria principal)
“cache_l1.txt” (Hace referencia a la caché L1)

Parte III (Recepción y ejecución de instrucciones)
Se definirán tres instrucciones que el programa ejecutará en un ciclo infinito. El formato de correspondencia que usted usará es correspondencia directa. Estas instrucciones se definen de la siguiente manera:

RD (Operación de lectura en caché)
Estructura:
RD <Correspondencia>
Ejemplo:
RD 000000000000000000000001
La operación RD leerá un byte de la línea de caché correspondiente en caso de que haya un acierto y mostrará por pantalla el mensaje <ACIERTO>, en caso contrario deberá traer el bloque correspondiente desde memoria principal, simplemente hará caching de la línea, al haber un fallo de caché se mostrará el mensaje <FALLO>.
Recuerde que debe asegurarse de que cada línea de caché sea válida y de que las etiquetas de la correspondencia y la línea coincidan para determinar que hay un acierto (O Fallo) de caché.

WR (Operación de escritura en memoria principal)
Estructura:
WR <Correspondencia>
Ejemplo:
WR 000000000000000000000001 0
La operación WR escribirá un byte en la dirección física especificada en la memoria principal e invalidará la línea de caché que contiene dicho byte de modo que los datos ya no sean válidos.

UP (Operación de escritura)
Estructura:
UP
Ejemplo:
UP
La operación UP guardará el estado de la memoria principal y la caché en sus respectivos archivos. Luego de realizar lo especificado, escribirá un mensaje por pantalla:
OK

Consideraciones:
El direccionamiento será por Byte, por lo que las operaciones de RD y WR leerán o escribirán un Byte, esto quiere decir que la palabra es de 1 Byte.
Antes de definir las estructuras, estudie la organización de la caché de modo que pueda entender la manera en que se realiza el movimiento de datos. Recuerde que el formato de correspondencia directa es:
| Etiqueta | Linea | Palabra |

Use la siguiente organización como referencia:

Bloque

| Etiqueta | Linea | Palabra |

Por lo que puede tomar en cuenta que Bloque puede referenciar a un bloque de memoria principal.

Ejemplo de prueba:

Archivo: main.txt
11111111111111112222222222222222333333333333333344 444444444444445
55555555555555566666666666666667777777777777777888 8888888888888

Archivo: cache_l1.txt
00000000000000000000000000000000


Ejecución:
./sim 7 5 4
RD 0000000
RD 1000001
WR 1110000 x
WR 1111111 f
RD 1110000
RD 1011010
WR 1010001 r
WR 1001010 g
RD 1010111
RD 1010111
RD 1001010
RD 1001010
UP

Salida (Pantalla):
FALLO
FALLO
FALLO
FALLO
FALLO
ACIERTO
FALLO
ACIERTO
OK

Estado final Archivo (main.txt)
11111111111111112222222222222222333333333333333344 444444444444445
555555555g555556r666666666666667777777777777777x88 888888888888f

Estado final Archivo (cache_l1.txt)
5555555555g555556r66666666666666

Si tienen alguna pregunta o alguna interrogante no duden en escribir, cualquier ayuda seria genial, de antemano gracias y espero contar con su ayuda.

Jose.

  #2 (permalink)  
Antiguo 29/03/2016, 23:09
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Proyecto de Memoria principal y cache.

Una cosa es que te ayudemos si te atascas en un punto, otra distinta es pedir que te hagamos la tarea, que eso ya va siendo pedir a cambio de nads... Pero pedir que te hagamos un ejercicio con tanto requisito es pasarse demasiado.

Y enviar mensajes privados para esto no te ayuda a reducir condena.

Tienes dos opciones en este foro: o te pones a ello y preguntas tus dudas o le pides a alguien presupuesto y pasas por caja. Con la segunda opción no aprenderás demasiado pero tendrás la práctica hecha.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 30/03/2016, 05:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Proyecto de Memoria principal y cache.

Apoyo lo dicho por eferion.

Foros del Web no es el Rincón del Vago, no te confundas.
Podemos guiarte en lo que no entiendas, o donde te trabes, pero no le hacemos los trabajos prácticos a nadie, y solicitarlos es descarado; y pedirlo por MP como hiciste también conmigo, es peor.
Si quieres ayuda, comienza a hacer el ejercicio y ve posteando tus dudas. Pero no esperes que te regalemos la solución.

Los foros de programación son meritocráticos. Tienes que mostrar que te esfuerzas pro ti mismo, y hasta ahora solo vemos que no lo estás haciendo.

Vuelve a consultarnos cuando tengas una pregunta concreta sobre un código concreto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cache, lenguajec, memoria, proyecto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.