Unidad de ejecución exclusiva en la etapa de canalización para la ejecución de las instrucciones de acceso a la memoria

0

Estaba estudiando el concepto de tubería en microarquitectura. Mi profesor me dijo que las operaciones de lectura y escritura en la memoria tardan más tiempo en ejecutarse, ya que la DRAM tiene una frecuencia máxima de 1333 MHz. Por lo tanto, cuando se ejecuta una operación de memoria de E / S, la ejecución lleva más tiempo. Esto aumenta la latencia del procesador. Otras instrucciones (recuperadas después de las instrucciones de memoria de E / S) se "retrasan". Estaba pensando en una vaga idea de por qué no podemos tener un bloque de ejecución diferente para realizar todas las operaciones de memoria. En el hardware de recuperación, una vez que sabemos que la instrucción es una instrucción mem, en lugar de ser ejecutada por la unidad de ejecución principal, podríamos tener una unidad de ejecución diferente para dichas instrucciones. ¿Podría alguien comentar sobre el pensamiento? ¿Debo proponer esta idea a mi profesor? ¡Es un poco gruñón!

    
pregunta Yash Karundia

2 respuestas

2

No hay razón por la que no puedas hacer eso, pero tampoco hay razón obvia por la que quieras hacerlo. Tenga en cuenta que tal mecanismo sería inútil cuando se trata de lecturas de memoria, ya que la memoria se lee para que la unidad de ejecución pueda hacer algo con los datos recuperados. Ya sea que los datos se lean a través de la unidad de ejecución o algún mecanismo dedicado, la CPU tendrá que esperar los datos antes de poder hacer otra cosa.

Es cierto que puede ahorrar un poco de tiempo al transferir las operaciones de escritura al mecanismo propuesto, pero eso no ayudaría mucho y requeriría una considerable complejidad de circuito adicional.

Tenga en cuenta que el enfoque estándar para tratar el ancho de banda de memoria externa limitado es el caché, y el administrador de caché es posiblemente un ejemplo de lo que propone.

    
respondido por el WhatRoughBeast
0

Sí, esto se hace en muchos diseños (anteriores a la pregunta por muchos años), aunque normalmente el frente de la tubería será común. Una vez que la instrucción se decodifica hasta el punto de tener disponible principalmente la información de transferencia de memoria, se puede descargar a una unidad dedicada que puede realizar un seguimiento de un pequeño número de transacciones pendientes.

Lo más importante que debes recordar es que estas instrucciones de carga o almacenamiento (es mucho más trivial en un conjunto de instrucciones RISC, el compilador puede optimizar la programación) tendrá que interactuar con otras instrucciones, no puedes simplemente disparar y Olvida una carga. Esto significa que su simple vista de canalización ya no se mantendrá real - hay funciones de interbloqueo de peligro que necesitan imponer el orden correcto, y lo más probable es que desee reenviar rutas - por lo que un almacén que depende solo de una carga por ejemplo) puede obtener sus datos directamente desde la unidad de carga, en lugar de que la tienda permanezca en la tubería principal hasta que la carga haya devuelto datos.

El orden de las instrucciones y una definición claramente definida del orden de transferencia de datos son fundamentales para que el software funcione correctamente. Incluso si el programador se da cuenta de que al procesador se le permite realizar instrucciones fuera de orden, necesitan un mecanismo para controlar cuándo es importante realizar el pedido. En un sistema multiproceso o multiprocesador, estos problemas presentan aún más complejidades.

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas