¿Cómo las computadoras dividen los números rápidamente?

Los algoritmos de división en diseños digitales se pueden dividir en dos categorías principales. División lenta y división rápida.

Te sugiero que leas cómo funciona la suma y resta binarias si aún no estás familiarizado con estos conceptos.

División lenta

Los métodos lentos más simples funcionan básicamente de la siguiente manera. Tome el número que se dividirá (numerador o dividendo) y reste el divisor. Haga esto recursivamente con el resultado de cada resta hasta que el resto sea menor que el divisor. Esta cantidad restante es el resto. La cantidad de iteraciones es el cociente.

Ejemplo:

7/3:

  1. 7−3 = 4

2. 4−3 = 1

3.1 <3

Por lo tanto, la respuesta es 2 resto 1. Para que esta respuesta sea un poco más relevante, aquí hay algunos antecedentes. La resta binaria se realiza mediante la adición de lo negativo, por ejemplo: 7 – 3 = 7 + (-3). Esto se logra mediante el uso de dos números binarios complementarios. Cada número binario se agrega mediante una serie de sumadores completos:

Donde cada sumador completo de 1 bit se implementa de la siguiente manera:

División rápida

Si bien la división lenta es fácil de entender, requiere iteraciones repetitivas. Existen varios algoritmos “rápidos” pero todos se basan en la estimación.

Considere el método Goldschmidt:

Haré uso de lo siguiente:

Q = ND

Este método funciona de la siguiente manera:

  1. Multiplicar N y D con una fracción F es tal que D se acercó a 1.
  2. Cuando D se acerca a 1, N se acerca a Q

Este método utiliza la multiplicación binaria que se realiza mediante la suma iterativa. También se usa en las CPU modernas de AMD.

Las computadoras realizan tareas deslumbrantemente complejas, pero los chips del microprocesador dentro de ellas solo son capaces de realizar operaciones matemáticas muy básicas, como sumar y comparar números binarios.

La utilización de este conjunto de herramientas limitado para realizar cálculos y otras operaciones matemáticas avanzadas fue un logro notable de los primeros días de la informática electrónica. El profesor del instituto y ex decano de ingeniería Joel Moses fue parte de ese esfuerzo revolucionario, y explica que la solución consistía en dividir los problemas grandes y complejos en problemas más pequeños y simples.

Las matemáticas complejas requieren el manejo de dos tipos de operaciones: numéricas que involucran valores numéricos específicos, y simbólicas , como las de álgebra y cálculo, que involucran símbolos como “x” e “y”.

Moses señala que las operaciones numéricas se pueden dividir en suma, resta, multiplicación y división, que son tareas básicas para un microprocesador.

Para acomodar un rango más amplio de valores numéricos sin abrumar la memoria y los recursos de procesamiento, las computadoras usan el sistema de punto flotante, reemplazando los números comunes (digamos, 1,300,000) con valores de punto flotante (digamos, 1.3 x 106).

Este enfoque generalmente produce solo una aproximación del resultado, pero con cierto cuidado hace que los valores sean extremadamente cercanos a la respuesta “correcta”. (Una excepción notable: algunos chips Intel Pentium a principios de la década de 1990 tenían un error de punto flotante que en casos raros causaba cálculos incorrectos).

Las operaciones simbólicas son un desafío mayor. “El primer problema”, explica Moses, “es cómo representar símbolos utilizando solo los 0 y 1 disponibles en una computadora binaria. Esto se hace con la codificación, donde ‘x’ está representado por un número y ‘y’ por otro “.

El hardware y el software de la computadora los entiende como códigos, en lugar de valores numéricos. Las expresiones más complejas se pueden representar mediante una descomposición de expresiones en partes más simples, que están conectadas por punteros en la memoria de la computadora. Esto permite la representación y el procesamiento de expresiones como “x + 2y”.

Por ejemplo, una diferenciación puede reducirse en pasos que diferencien expresiones más simples.

Los resultados de tales expresiones diferenciadas se pueden representar como sumas, productos, constantes y variables.

El resultado final es un procedimiento que incorpora un algoritmo de diferenciación completo pero que solo usa números y funciones compatibles con la computadora.

Otras operaciones, como la integración simbólica, pueden ser aún más complejas, pero el concepto básico suele ser el mismo: reducir el problema complejo a uno más simple y calcular.

Si bien estos procedimientos pueden ser largos y, a veces, llevar mucho tiempo, los microprocesadores de hoy en día son tan potentes que hacen un trabajo corto al realizar miles de millones de operaciones por segundo.