1 votos

¿Las ALU realizan todas/más de N operaciones antes de pasar por el multiplexor?

Estoy haciendo autoestudio sobre hardware y actualmente estoy implementando una ALU. La forma en que lo estoy diseñando es tal que tengo un N:1 MUX (N entradas producen una sola salida (número de 16 bits) basado en bits selectores). Introduzco 2 16-bit numbers con una serie de bits de control para obtener mi salida.

Mi pregunta es que tengo un montón de puertas que se ejecutan antes de que lleguen al MUX y luego el MUX dice "en base a estos bits de control voy a dar salida a este cálculo". Sólo me preguntaba si es ineficiente para ejecutar todas estas operaciones, incluso si no se utilizan / salida.

Por ejemplo, si simplemente quiero negar A, el circuito seguirá realizando otras operaciones aritméticas a pesar de no utilizarlas en absoluto en el resultado final. Parece que aumentaría el tiempo para obtener el resultado deseado, ya que está ejecutando a través de más puertas.

2voto

Brian Drummond Puntos 27798

Utilizando cualquier herramienta de síntesis moderna puedes estar razonablemente seguro de que optimizará cualquier redundancia que pueda, hasta el punto de que a veces eliminar todo el diseño si antes no se ha probado correctamente en simulación.

Así que, sí, esto es ineficiente; pero synth lo arreglará.

Es mejor que lo que escribas sea sencillo, limpio y claro. 16 ops y un MUX 16:1 cumplen ese requisito.

0voto

liveder Puntos 31

En caso de que todas las operaciones aritméticas se realicen en el mismo número de ciclos de reloj, algunas operaciones (por ejemplo, la multiplicación) limitarán la frecuencia de reloj máxima alcanzable.

Puedo decir dos soluciones similares. Voy a suponer que la multiplicación es el cuello de botella, como un ejemplo.

1. Canalización de operaciones cuello de botella

Digamos que todas las demás operaciones se realizan en un ciclo de reloj, aun así podemos dividir la multiplicación en varios ciclos de reloj, 2 ciclos por ejemplo. La CPU necesita detenerse durante un ciclo cuando se realiza la multiplicación. Esto conlleva cierta lógica de control adicional, pero duplica aproximadamente la frecuencia de reloj máxima.

Esta solución plantea dos retos. En primer lugar, el pipelining no es fácil para algunas operaciones aritméticas, pero la herramienta de síntesis puede hacerlo utilizando algunos comandos de retiming (equilibrio de registros). En segundo lugar, el área aumentará en unos 16 flip-flops.

2. Definición de trayectorias multiciclo

Creo que esta es una solución mejor. De nuevo se requiere lógica de control adicional para detener la CPU, pero no necesitamos canalizar y poner flip-flops adicionales. Simplemente debemos decirle a la herramienta de síntesis que la lógica de multiplicación es una ruta multiciclo. Por ejemplo set_multicycle_path puede utilizarse en Synopsys Design Compiler.

0voto

TEMLIB Puntos 1200

Puede que te interese la antigua ALU TI 74181 de 4bits que se utilizó en muchos miniordenadores en los años 70:

https://en.wikipedia.org/wiki/74181

Una ingeniosa disposición de compuertas para generar muchas operaciones diferentes.

  • Las sumas y restas pueden combinarse invirtiendo condicionalmente una entrada y utilizando el arrastre (para complemento a dos)
  • Las operaciones lógicas pueden fusionarse con algunas aritméticas eliminando la propagación de carry.
  • No / Neg igualmente está utilizando el inversor de resta y un carry-in. O Inc/Dec utilizando el sumador.
  • Desplazamiento a la izquierda como adición... etc.

Dependiendo de la cantidad de optimización que quieras conseguir, puedes dejar que una herramienta de síntesis lógica haga todas las optimizaciones a partir de una descripción de alto nivel, o afinarla manualmente. A veces, con los RISC, algunos bits de los opcodes de la CPU pueden utilizarse para controlar multiplexores o controlar constantes en la ALU sin necesidad de decodificarlos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X