El circuito más eficiente para la multiplicación de 2048 bits y cómo procesarlo de manera efectiva

0

Entonces, esto no es para una aplicación de hardware, pero sigo pensando que será extremadamente relevante para aquellos que son diseñadores de chips / entusiastas de EE.

Estoy intentando hacer un análisis sobre la multiplicación vista como una función booleana. Para esto quiero construir una función booleana de dos vectores \ $ X, Y \ $ cada uno de longitud 2048. Por supuesto, una representación simbólica de esta función corresponde a un circuito real, así que implícitamente, lo que quiero hacer es construir lo más pequeño posible. circuito (es decir, el menor número de puertas seguidas por la menor profundidad) para multiplicar dos números de 2048 bits y almacenar el resultado en un archivo de texto (utilizando And y NOT y Or)

Ahora con esto viene un par de partes:

  1. Elección del algoritmo: Estoy pensando en construir el circuito implementando El algoritmo de Karatsuba sería una buena idea ( es 2048 bits lo suficientemente grande como para justificar ¿Toom-Cook ? Sé que es definitivamente demasiado pequeño para < a href="https://en.wikipedia.org/wiki/Sch%C3%B6nhage%E2%80%93Strassen_algorithm"> Técnicas de transformación de Fourier de Strassen ).

  2. Al cambiar de algoritmo, debería existir algún valor N, para el cual la multiplicación de los números de N dígitos es más rápida a través de la multiplicación tradicional del estilo de la escuela primaria, que aumentar mis costos al implementar los multiplicadores del estilo Karatsuba en ese nivel.

  3. Una vez que haya construido el algoritmo, ¿cuál es la mejor manera de representarlo simbólicamente en un archivo de texto? Mi instinto es hackear esto con un largo guión, pero quizás conozca algunas herramientas que le permiten generar circuitos de manera abstracta y escribir los resultados que serían más rápidos para mí convertir a mis formas deseadas que intentar reinventar la rueda python.

pregunta frogeyedpeas

1 respuesta

1

En primer lugar, depende de lo que sea el resto de su hardware. ¿Es solo el multiplicador, o hay algún otro hardware, por ejemplo? controladores de memoria, etc., que se necesitarán de todos modos y puede utilizar. En segundo lugar, ¿tienes un piso en el rendimiento? ¿Puedo pensar en implementaciones de pequeños multiplicadores que serán bastante lentas?

Desde la parte superior de mi cabeza, hay 8051 implementaciones que están por debajo de 3000 puertas. Elimine la canalización y todas las instrucciones y el hardware no utilizados, y puede tener una MCU con unos pocos cientos de puertas lógicas. Ahora, agregue algo de RAM y tendrá su multiplicador de puerta muy bajo.

Creo que la implementación más pequeña incluirá una ALU mínima con las siguientes operaciones: agregar, cambiar y XOR. Esto es todo lo que necesitas para implementar la multiplicación. Puede utilizar la memoria RAM para almacenar sus datos. Agregue algunas instrucciones y una unidad de control básica, y tendrá un procesador rudimentario. A continuación, descargue toda la complejidad en forma de instrucciones.

Además, ¿qué cuentas como una puerta? ¿Buscas un conteo mínimo de puertas lógicas o un conteo mínimo de transistores? ¿Qué pasa con las chancletas? Diferentes respuestas a estas preguntas pueden producir resultados muy diferentes.

    
respondido por el user110971