¿Cómo funciona la multiplicación y división en la CPU?

Hay varios métodos de multiplicación diferentes, pero la mayoría de ellos, en la base, usan algún tipo de tabla de búsqueda. Esto es, si tienes cierta edad, de la misma manera que a los niños en la escuela se les enseñó sus tablas de multiplicar:

“Una vez que dos son dos, dos son cuatro, tres son seis …”

Cuando necesita multiplicar 5 por 8, no lo resuelve, solo recuerda que “cinco ochos son 40” . O al menos lo hago. Los jóvenes whippersnappers de hoy probablemente usan la aplicación de calculadora en su teléfono.

En binario, hay 256 posibles resultados de 8 bits al multiplicar dos números binarios de 4 bits. 256 bytes es un tamaño conveniente para una tabla de búsqueda codificada con todos los resultados posibles, por lo que una CPU puede multiplicar dos números de 8 bits dividiendo cada uno de ellos en dos números de 4 bits, buscando los cuatro productos parciales 4 × 4 y agregándolos, con compensaciones variables de 4 bits, para producir el producto de 16 bits. Esto es muy rapido. Las CPU de matriz más grandes pueden permitir el espacio para hacer tablas de búsqueda más grandes: una tabla de multiplicación de 8 por 8 requiere 65.536 palabras de 16 bits (131kB). Por encima de 8 × 8, las tablas se vuelven inviablemente grandes. Los chips más pequeños pueden usar una tabla 2 × 2 con más etapas sumadoras. También sería posible hacerlo en microcódigo, utilizando el algoritmo tradicional shift-and-add, pero eso sería muy lento. No conozco ninguna CPU moderna que lo haga de esa manera.

La división es mucho más difícil. Se puede hacer en lógica combinatoria, así:

Cada una de las cajas cuadradas contiene una docena de puertas lógicas, así:

Por lo tanto, un divisor de n bits necesita n * n elementos que ocupan mucho espacio. En consecuencia, la mayoría de las CPU pequeñas lo implementan en microcódigo utilizando el algoritmo tradicional de desplazamiento y sustracción, o (más típicamente) lo omiten por completo. Solo cuando se alcanzan las CPU a escala de millones de transistores, el método lógico se vuelve económico.

More Interesting

¿Es posible ingresar a Oxford para la informática y las matemáticas sin una pasantía pero excelentes calificaciones?

¿La teoría del caos ha alcanzado su potencial? ¿Cómo ha cambiado la vida de las personas desde que se descubrió?

¿Cuál es un ejemplo de una categoría no representable en matemáticas?

¿Qué es el álgebra abstracta? ¿Cómo es útil en matemáticas?

¿Cuál es una explicación intuitiva del teorema de Cochran?

¿Cuál es el mejor sitio web para estudiar matemáticas?

Has viajado por el mundo durante un largo período de tiempo, ¿qué viene después cuando llegas a casa?

¿Existe una función matemática en la que pueda tomar 2 números, como 2 y 3, y hacer que la respuesta sea los números en sucesión? Por ejemplo, si usara los números 2 y 3, sería 23, y 4 y 6 serían 46.

En el estudio y la aplicación de todos los niveles de las matemáticas, ¿básicamente todo representa o se reduce a los cuatro fundamentos: suma, resta, multiplicación y división?

¿Cuáles son algunos conceptos matemáticos interesantes?

Cómo encontrar argumentos de [math] z [/ math] (en [math] \ pi [/ math]) if [math] z ^ 3 = \ left (\ frac {1 + i} {1-i} \ right ) ^ 5 [/ matemáticas]

¿Son las matemáticas y nuestra interpretación del universo y la vida (la ciencia, tal vez) como un lenguaje? ¿Hay alguna manera de que podamos aprender las leyes 'verdaderas' en las que se basa el universo?

Cómo encontrar el valor de 2 para el poder de la raíz 3

¿Cómo haríamos para resolver la conjetura de Collatz?

¿Qué es 25 ^ 12 mod 15?