Cómo agregar SRA a una CPU MIPS de un ciclo

0

Estoy intentando agregar el comando MIPS SRA a la siguiente CPU de un ciclo: Si supiera la cantidad de bits necesarios para ser desplazados, podría reemplazar fácilmente los bits inferiores por 0, pero eso nunca se sabe hasta que se ejecuta la instrucción. ¿Cuál sería una forma de implementar esto de manera que no importa cuánto se deben desplazar los bits?

    
pregunta Raviga

1 respuesta

0

Utilice un rotador de un solo ciclo + enmascaramiento (para la operación de cambio). El rotador es como un mux acoplado de 32:32 (32 paralelos de 32: 1 con las mismas señales y entradas de selección, excepto que las entradas se desplazan en 1 bit por cada 32: 1 de mux posterior). La unidad de enmascaramiento es un decodificador de termómetro de 32 bits.

Si desea que esto funcione en un solo ciclo, es posible que deba pasar algo de tiempo en el rotador (ya que depende de los datos y la selección). Si nunca va a necesitar la rotación (en lugar de solo cambiar), puede ahorrar mucho tiempo en la ruta crítica al realizar un cableado fijo de la segunda etapa (y cualquier etapa posterior) del rotador LSB (que en un esquema de rotadores sería la MSB de la etapa anterior) a '0' o '1'; lo que quieras cambiar en la LSB.

Es casi seguro que la ruta crítica será a través de las selecciones al rotador (ya que debe alcanzar la primera etapa de los datos y desplegarse a 32 compuertas).

La unidad de enmascaramiento (también conocido como decodificador de termómetro de 32 bits) puede implementarse requiriendo solo las señales de selección y puede ser tan simple como un AND con cada bit (antes o después del rotador; la sincronización ideal depende de los tiempos de llegada de los selectos) vs. las señales de datos).

Por ejemplo, vea el cambiador de barril que se basa completamente en la lógica combinacional (y, por lo tanto, se puede completar en una sola ciclo, asumiendo que la lógica es lo suficientemente rápida).

    
respondido por el jbord39

Lea otras preguntas en las etiquetas