Cálculo inverso


Debido a que ofrece una posible solución al problema del calor al que se enfrentan los fabricantes de chips, la computación reversible se ha estudiado ampliamente en el área de la arquitectura de computadoras. La promesa de la computación reversible es que la cantidad de pérdida de calor para arquitecturas reversibles sería mínima para cantidades significativamente grandes de transistores. [1] [2] En lugar de crear entropía (y por lo tanto calor) a través de operaciones destructivas, una arquitectura reversible conserva la energía al realizar otras operaciones que preservan el estado del sistema. [3] [4]

El concepto de computación inversa es algo más simple que la computación reversible en el sentido de que la computación inversa solo es necesaria para restaurar el estado equivalente de una aplicación de software, en lugar de admitir la reversibilidad del conjunto de todas las instrucciones posibles. Los conceptos de computación reversible se han aplicado con éxito como computación inversa en áreas de aplicaciones de software tales como diseño de bases de datos, [5] puntos de control y depuración, [6] y diferenciación de códigos. [7] [8]

Basado en la aplicación exitosa de conceptos de Computación Inversa en otros dominios de software, Chris Carothers, Kalyan Perumalla y Richard Fujimoto [9] sugieren la aplicación de la computación inversa para reducir los gastos generales de ahorro de estado en la simulación de eventos discretos paralelos (PDES). Definen un enfoque basado en códigos de eventos inversos (que se pueden generar automáticamente) y demuestran las ventajas de rendimiento de este enfoque sobre el ahorro de estado tradicional para aplicaciones detalladas (aquellas con una pequeña cantidad de cálculo por evento). La propiedad clave que explota la computación inversa es que la mayoría de las operaciones que modifican las variables de estado son de naturaleza “constructiva”. Es decir, el deshacerLa operación para tales operaciones no requiere historial. Solo se requieren los valores más actuales de las variables para deshacer la operación. Por ejemplo, operadores como ++, ––, + =, - =, * = y / = pertenecen a esta categoría. Tenga en cuenta que los operadores * = y / = requieren un tratamiento especial en el caso de multiplicar o dividir por cero y condiciones de desbordamiento / subdesbordamiento. También pertenecen aquí operaciones más complejas como el desplazamiento circular (el intercambio es un caso especial) y ciertas clases de generación de números aleatorios .

Las operaciones de la forma a = b, cálculos de módulo y bit a bit que dan como resultado la pérdida de datos, se denominan destructivas. Normalmente, estas operaciones solo se pueden restaurar utilizando técnicas convencionales de ahorro de estado. Sin embargo, observamos que muchas de estas operaciones destructivas son consecuencia de la llegada de datos contenidos dentro del evento que se está procesando. Por ejemplo, en el trabajo de Yaun, Carothers, et al., Con simulación de TCP a gran escala , [10] la hora del último envío registra la marca de tiempo del último paquete reenviado en un proceso lógico de enrutador. La operación de intercambio hace que esta operación sea reversible.

En 1985, Jefferson introdujo el protocolo de sincronización optimista, que se utilizó en simulaciones de eventos discretos en paralelo, conocido como Time Warp. [11] Hasta la fecha, la técnica conocida como Computación Inversa solo se ha aplicado en software para la simulación de eventos discretos paralelos sincronizados de manera optimista.

En diciembre de 1999, Michael Frank se graduó de la Universidad de Florida . Su tesis doctoral se centró en la computación inversa a nivel de hardware, pero incluyó descripciones tanto de una arquitectura de conjunto de instrucciones como de un lenguaje de programación de alto nivel (R) para un procesador basado en la computación inversa. [12] [notas 1]


Lista de operaciones que son computables en reversa y sus costos.
Taxonomía de la simulación digital.