sisoputnfrba / foro

Foro de consultas para el trabajo práctico
151 stars 7 forks source link

Instrucciones y CPU #4301

Closed marianoSLamaison closed 1 month ago

marianoSLamaison commented 1 month ago

🛠️ Lenguaje

C

🖋️ Descripción

Buenos días. Queríamos consultarle, por que no comprendemos cómo va a funcionar en el TP el tema de las instrucciones y la CPU. Se comprende por el enunciado que describe la fase fetch del modulo CPU que este va a tener que solicitarle a memoria instrucciones una por una dando una direccion de memoria fija. A si que estamos en la duda de si las instrucciones seran o no cargadas en el void* de memoria que representa la totalidad de la memoria en forma codificada o si seria de otra manera.

📔 Citas del enunciado/videos

Esta es la cita la cual inicio la duda:

💭 Soluciones posibles

De momento estas son las dos formas que hemos interpretado podria implementarse siguiendo el enunciado por parte de kernel:

  1. El módulo memoria al preparar un proceso, codifica previamente su archivo de código, y lo carga en el puntero void que representa la memoria, en la partición asignada al proceso, y cada vez que queramos leer alguna instrucción, esta será leída de esa parte por la CPU.
  2. El módulo memoria simplemente dentro de sí mismo solicita leer una línea del archivo donde se encuentra el código de nuestro proceso ( la cual es especificada gracias al valor del PC), luego lo codifica y lo envía a la CPU

📝 Normas del foro

f-and commented 1 month ago

Buenas!

Para responder concisamente, no, las instrucciones son almacenadas por separado de la memoria de usuario, y lo que hace el CPU, como indica la cita que pusiste, es enviarle a memoria el PC del hilo actual y memoria debe ser capaz de devolverle la instrucción a ejecutar.

Extendiendome, la memoria se divide en dos, como indica el enunciado, una parte es la memoria de usuario, que contiene el void * que mencionas, y la otra es la memoria de sistema, y citando esta:

Archivos de pseudocódigo Por cada TID del sistema, se deberá leer su archivo de pseudocódigo y guardar de forma estructurada las instrucciones del mismo para poder devolverlas una a una a pedido de la CPU. Queda a criterio del grupo utilizar la estructura que crea conveniente para este caso de uso.

Por lo que, ustedes como equipo van a tener que definir una manera estructurada de almacenar y manejar los archivos de pseudocódigo de tal manera que, sabiendo el PID, TID, y PC, sea capaz de devolver la linea solicitada al CPU. Cabe mencionar, leyendo la segunda solución posible que indicas, que la memoria nada más va a enviar la instrucción, el CPU se encarga de "codificarla" en la etapa de Decode.

Saludos.-

marianoSLamaison commented 1 month ago

Perfecto. Con nuestro equipo decidimos hacer una estructura para memoria que almacene cada set de instrucciones por Proceso y por Thread, con una lista de string donde cada string es una instruccion individual, junto a sus argumentos. Y nuestro equipo esta interesado en saber si esta implementación podría generar inconvenientes.

marianoSLamaison commented 1 month ago

Muchas gracias por cierto!!!

iago64 commented 1 month ago

Buenas! Cómo va?

Si no les genera inconvenientes a nivel programación, del lado del enunciado no incumple ninguna restricción.

Saludos.-

marianoSLamaison commented 1 month ago

Excelente, muchísimas gracias. Y que tenga un buen día.