¿De qué depende el registro y el tamaño del autobús?

Así que aquí hay un multiplicador secuencial de hardware representado. El número A tiene un ancho de 51 bits, el número B tiene un ancho de 48 bits. Tengo que elegir el tamaño más eficiente de buses y registros (optimizar según el uso de memoria).

estructura multiplicadora general

Mi pregunta real es: ¿de qué dependen estos tamaños? ¿Cómo debo proceder en esta tarea? No estoy buscando una solución exacta, pero al menos una pista, porque no tengo idea de dónde comenzar mi búsqueda de información.

¿No dependen de cosas grabadas físicamente en semiconductores? ¿O quiere decir "qué tamaño de número cabe en un registro de 51 bits"?
@GradyPlayer: No es el registro el que tiene 51 bits, sino el primer multiplicando. Y sí, aquí no considero ninguna propiedad física.
Bueno, ¿cuántos bits necesitas para contener 2 ^ 51 * 2 ^ 48?
Ajá. Entonces, ¿todo lo que tengo que hacer para encontrar los tamaños de registro es calcular el peor tamaño posible del producto? Pero, ¿qué pasa con los autobuses entonces?
No es necesario que sea mayor que el valor máximo de log2 + los bits de control que pueda tener, pero los ints generalmente no tienen ninguno
No veo ningún autobús que vaya de B a ALU. El único bus es de B a la lógica de control. Esto, y el hecho de que hay señales de "desplazamiento" en el diagrama, sugiere que se trata de una multiplicación iterativa. Podemos tratar de adivinar qué algoritmo se emplea aquí, pero no soy un gran fanático de las conjeturas. Proporcione información adicional.

Respuestas (2)

Parece que se supone que el diseño debe realizar una multiplicación de 48x51 bits en 48 pasos, y cada paso agrega o no el registro "A" al registro del producto. También parece cambiar el registro "A", que no es necesario. Si desea cargar el registro B, iniciar la máquina y luego tener un resultado listo para leer, su registro de producto debe ser lo suficientemente grande como para contener todo el producto (la suma de las longitudes de los dos multiplicandos); el sumador tendrá que tener el mismo ancho si cambias "A" a medida que avanzas. Si en lugar de desplazar el registro "A", el producto calcula (Producto >> 1) o (Producto >> 1)+(A << 47) a medida que los bits se desplazan fuera del registro "B", entonces el sumador solo necesita agregar dos números de 51 bits para obtener un resultado de 52 bits.

Tenga en cuenta también que para un pequeño aumento en la complejidad, puede duplicar la velocidad de su multiplicador haciendo que la ALU elija entre cinco operaciones en cada paso: (Producto >> 2), (Producto >> 2)+(A << 46) , (Producto >> 2)+(A << 47), (Producto >> 2)-(A << 46), o (Producto >> 2)-(A << 47). Busque "Algoritmo de Booth" para obtener más información.

Gracias por una respuesta =) Hice esta pregunta hace bastante tiempo, y era una pregunta de examen. Por supuesto que ya lo he entendido, pero gracias de todos modos =)

bueno, creo que estos son multiplicadores incorporados de propósito general en FPGA (bloques DSP) u otros dispositivos heterogéneos. En ese caso, el tamaño de los registros es de propósito general. Depende de su aplicación, puede elegir el número requerido de bits. Puede tener un multiplicador de 32 bits fuera de este multiplicador incorporado. Por lo tanto, dependiendo de sus requisitos, puede arreglar el bus de datos.