¿Por qué división de hardware de tomar mucho más tiempo que la multiplicación por un microcontrolador? E. g., en un dsPIC, una división lleva 19 ciclos, mientras que la multiplicación se lleva sólo un ciclo de reloj.
Me fui a través de algunos tutoriales, incluyendo el algoritmo de la División y el algoritmo de la Multiplicación en la Wikipedia. Aquí está mi razonamiento.
Un algoritmo de la división, como un lento método de la división con restauración en la Wikipedia, es un algoritmo recursivo. Esto significa que (intermedio) los resultados del paso k
se utilizan como entradas a paso k+1
, lo que significa que estos algoritmos no puede ser paralelizado. Por lo tanto, se necesitan al menos n
ciclos para completar la división, mientras que n
es un número de bits en el pago de un dividendo. Para la 16 bits de dividendos, esto es igual a por lo menos 16 ciclos.
Un algoritmo de la multiplicación no necesita ser recursivo, lo que significa que es posible paralelizar. Sin embargo, hay muchos tipos diferentes de algoritmos de la multiplicación, y no tengo ni idea que puede ser usado por los microcontroladores. ¿Cómo multiplicación de trabajar en un hardware/microcontrolador?
He encontrado un Dadda multiplicador de algoritmo, que se supone tendrá sólo un ciclo de reloj para terminar. Sin embargo, lo que no entiendo aquí es que Dadda del algoritmo procede en tres pasos, mientras que los resultados del paso 1 se utiliza en el paso 2, etc. De acuerdo a esto, esto requeriría por lo menos tres ciclos de reloj para terminar.