CONVERSION DE CODIGO DE PROGRAMA CON TRADUCCION REDUCIDA.

Un método para realizar la conversión dinámica del código del programa de un código de programa informático,

estando el método caracterizado por los pasos de:

en una traducción inicial de una primera parte del código del programa (2), generar y almacenar solamente una representación intermedia (2a) que es requerida para ejecutar esa primera parte del código del programa con un primer conjunto de condiciones prevalentes (d0_state:surdXX); y

cada vez que subsiguientemente se entra en la primera parte del código del programa (2), determinar si la representación inmediata (2b) ha sido previamente generada y almacenada para esa primera parte del código del programa (2) para las condiciones entonces prevalentes (d0_state:surdXX), y si no se ha generado previamente tal representación intermedia, generar una representación intermedia adicional (2b) requerida para ejecutar dicha primera parte del código del programa (2) con dichas condiciones entonces prevalentes (d0_state:surdXX)

Tipo: Patente Europea. Resumen de patente/invención. Número de Solicitud: E03020509.

Solicitante: TRANSITIVE LIMITED.

Nacionalidad solicitante: Reino Unido.

Dirección: 5TH FLOOR ALDER CASTLE, 10 NOBLE STREET,LONDON.

Inventor/es: RAWSTHORNE,ALASDAIR, SOULOGLOU,JASON.

Fecha de Publicación: .

Fecha Solicitud PCT: 11 de Octubre de 1999.

Fecha Concesión Europea: 10 de Febrero de 2010.

Clasificación Internacional de Patentes:

  • G06F9/455W
  • G06F9/45E1
  • G06F9/45E9
  • G06F9/45R
  • G06F9/45T

Clasificación PCT:

  • G06F9/45

Clasificación antigua:

  • G06F9/45

Países PCT: Austria, Bélgica, Suiza, Alemania, Dinamarca, España, Francia, Reino Unido, Grecia, Italia, Liechtensein, Luxemburgo, Países Bajos, Suecia, Mónaco, Portugal, Irlanda, Finlandia, Chipre.

CONVERSION DE CODIGO DE PROGRAMA CON TRADUCCION REDUCIDA.

Fragmento de la descripción:

Conversión de código de programa con traducción reducida.

El presente invento se refiere a un método y un sistema para convertir un código de programa de un formato a otro. En particular, el invento se refiere a un método y a un sistema para proporcionar una representación intermedia de un programa informático o de un Bloque Básico de un programa (un Bloque Básico de un programa es un bloque de instrucciones que solamente tiene un punto de entrada, en una primera instrucción, y solamente un punto de salida, en una última instrucción del bloque). Por ejemplo, el presente invento proporciona un método y un sistema para la traducción de un programa informático que fue escrito para un procesador, de forma que el programa pueda funcionar de forma eficiente en un procesador diferente; utilizando la traducción una representación intermedia y siendo realizada en un modo bloque a bloque.

La representación intermedia es un término ampliamente usado en la industria informática para referirse a formas de lenguaje informático abstracto en el que se puede expresar un programa, pero que no es específico y no está previsto para ser ejecutado directamente en un procesador determinado. La representación intermedia está por ejemplo generalmente creada para permitir la optimización de un programa. Por ejemplo, un compilador traducirá un programa informático con un lenguaje de alto nivel a una representación intermedia, optimizará el programa aplicando diferentes técnicas de optimización a la representación intermedia, después traducirá la representación intermedia optimizada a códigos binarios ejecutables. La representación intermedia se usa también para permitir enviar programas a través de Internet en una forma que no es específica de un procesador determinado. Por ejemplo, Sun Microsystems ha desarrollado una forma de representación intermedia con este fin que es conocida como código de octetos. El código de octetos puede ser interrumpido en cualquier procesador en el que se emplee el bien conocido sistema Java (marca comercial) de tiempo de funcionamiento.

La representación intermedia también es usada normalmente por sistemas de emulación que emplean traducción binaria. Los sistemas de emulación de este tipo toman un código de soporte lógico que ha sido compilado para un tipo de procesador dado, lo convierten en una representación intermedia, optimizan la representación intermedia, y después convierten la representación intermedia en un código que es capaz de funcionar en otro tipo de procesador. La optimización de generación de una representación intermedia es un procedimiento conocido usado para minimizar la cantidad de código requerida para ejecutar un programa emulado. Existen varios métodos conocidos para la optimización de una representación intermedia.

Un ejemplo de un sistema de emulación conocido que usa una representación intermedia para realizar una traducción binaria es el sistema FlashPort operado por AT&T. Un cliente proporciona a AT&T un programa para ser traducido (habiendo sido compilado el sistema para funcionar en un procesador de un primer tipo). El programa es traducido por AT&T a una representación intermedia, y la representación intermedia es optimizada mediante la aplicación de rutinas de optimización automáticas, con la ayuda de técnicos que proporcionan entrada de datos cuando fallan las rutinas de optimización. La intermedia optimizada es a continuación traducida por AT&T a un código que es capaz de funcionar en un procesador del tipo deseado. Este tipo de traducción binaria en el que un programa entero es traducido antes de ser ejecutado se denomina traducción "estática" binaria. Los tiempos de traducción pueden ser cualesquiera hasta varios meses.

En una forma de emulación alternativa, un programa en código de un procesador sujeto (es decir, un primer tipo de procesador para el que el código está escrito y que tiene que ser emulado) es traducido dinámicamente en Bloques Básicos mediante una representación intermedia a un código de un procesador objetivo (es decir, un segundo tipo de procesador en el que se realiza la emulación).

En la técnica relacionada, Afzal, T y otros: "Motorola PowerPC Migration Tools-Emulation and Translation" Resumen de Trabajos de la Computer Society Computer Conference Compcon, US, Los Alamitos, IEEE Comp.SOC.Press, vol CONF.41, 25-28 Febrero 1996, páginas 145-150, ISBN: 0-8166-7414-8 describe métodos de emulación y de traducción para transferir las aplicaciones existentes a la arquitectura Motorola PowerPC.

Otras exposiciones en el campo de los compiladores estáticos incluyen el US-A-5.230.050 que expone un método compilador de programa en el que un procedimiento siendo compilado se divide en una pluralidad de unidades y la optimización se realiza en cada una de las unidades. Tras la recompilación, se aplica la optimización del procedimiento solamente a las unidades que están afectadas por la modificación. La recompilación puede necesitar varias iteraciones, sustituyendo cada vez las unidades seleccionadas por versiones modificadas a la vez que se mantienen o se vuelven a usar las anteriores versiones de otras unidades.

También Vivek Nirkhe y otros: "A Partial Evaluator for the Maruti Hard Real-Time System" Real Time Systems, Kluwer Academia Publishers, Dordrecht, NL, vol. 5 nº 1, 1 Marzo 1993 (1993-03-01), páginas 13-30, XP000363176 ISSN: 0922-6443 expone que un programa que emplea un lenguaje de alto nivel interpreta tales repeticiones, bucles y arquitecturas dinámicas de datos está especializado en usar información sobre el entorno de ejecución en curso por evaluación parcial en un sistema de tiempo real neto (HRT). La evaluación parcial ayuda a la estimación del tiempo de ejecución requerido por un programa con el fin de ser programado por el sistema HRT.

Finalmente, Joel Ausländer y otros: "Fast, Effective Dynamic Compilation" ACM Sigplan Notices, ACM, Association for Computing Machinery, New Cork, NY, US, vol. 31, nº 5, 1 Mayo 1996 (1996-05-01), páginas 149-159, XP000593201 ISSN: 0362-1340 expone un compilador dinámico que permite optimizaciones del código ejecutable producido basado en los valores de datos invariantes calculados en tiempo de funcionamiento. En particular, un compilador estático primero produce plantillas de código máquina precompiladas cuyas instrucciones contienen huecos que serán llenados con valores constantes de tiempo de funcionamiento. Un compilador dinámico produce entonces un código ejecutable a partir de las plantillas usando el código y las directivas de establecimiento producidas por el compilador estático para llenar los huecos con las constantes apropiadas.

Incluso considerando la técnica relacionada, se desean eficiencias adicionales para reducir la cantidad de código producida por la conversión dinámica del código del programa.

De acuerdo con el presente invento se ha proporcionado un aparato y un método como el expuesto en las reivindicaciones anejas. Las características preferidas del presente invento serán evidentes a partir de las reivindicaciones dependientes, y de la descripción que sigue.

Realizaciones a modo de ejemplo del presente invento proporcionan un método de generación de una representación intermedia que reduce la cantidad de código traducido u optimizado.

En particular, las realizaciones del presente invento reducen la cantidad del código traducido permitiendo bloques múltiples, pero más simples, del código de representación intermedia de Bloques Básicos sencillos del código sujeto. En la mayor parte de los casos se requerirá sólo un bloque traducido más simple.

Por ejemplo, en una realización preferida del invento el método incluye realizar en un ordenador los pasos de:

generar un Bloque de Representación Intermedia (Bloque IR) de representación intermedia para cada Bloque Básico del código de programa a medida que sea requerido el programa, representando cada Bloque IR un Bloque Básico respectivo del código del programa para una condición de entrada particular;
almacenar el código objetivo correspondiente a cada Bloque IR; y
cuando el programa requiera la ejecución de un Bloque Básico para una condición de entrada dada, ya sea:
a) si hay un código objetivo almacenado que representa ese Bloque Básico para esa condición de entrada dada, usar dicho código objetivo almacenado; o
b) si no hay un código objetivo almacenado que representa...

 


Reivindicaciones:

1. Un método para realizar la conversión dinámica del código del programa de un código de programa informático, estando el método caracterizado por los pasos de:

en una traducción inicial de una primera parte del código del programa (2), generar y almacenar solamente una representación intermedia (2a) que es requerida para ejecutar esa primera parte del código del programa con un primer conjunto de condiciones prevalentes (d0_state:surdXX); y

cada vez que subsiguientemente se entra en la primera parte del código del programa (2), determinar si la representación inmediata (2b) ha sido previamente generada y almacenada para esa primera parte del código del programa (2) para las condiciones entonces prevalentes (d0_state:surdXX), y si no se ha generado previamente tal representación intermedia, generar una representación intermedia adicional (2b) requerida para ejecutar dicha primera parte del código del programa (2) con dichas condiciones entonces prevalentes (d0_state:surdXX).

2. El método de acuerdo con la reivindicación 1, en el que las condiciones son condiciones de entrada para la primera parte del código del programa (2).

3. El método de la reivindicación 1 ó 2, que comprende:

generar un Bloque de Representación Intermedia (Bloque IR) (1,2,3) de representación intermedia para cada Bloque Básico del código del programa a medida que es requerido por el programa, representando cada Bloque IR (1,2,3) un Bloque Básico respectivo del código del programa para una condición de entrada particular;

almacenar el código objetivo correspondiente a cada Bloque IR (1,2,3); y

cuando el programa requiera la ejecución de un Bloque Básico (2) para una condición de entrada dada, ya sea:

a) si hay un código objetivo almacenado que representa ese Bloque Básico (2a) para esa condición de entrada dada, usar dicho código objetivo almacenado; o

b) si no hay un código objetivo almacenado que representa ese Bloque Básico (2a) para esa condición de entrada dada, generar un bloque IR (2b) adicional representativo de ese Bloque Básico para esa condición de entrada dada.

4. El método de cualquier reivindicación anterior, que comprende:

en la primera iteración de una instrucción de código de programa particular que tiene una pluralidad de posibles efectos o funciones, generar y almacenar una representación intermedia (2a) del caso especial que representa solamente la funcionalidad específica requerida en esa iteración;

en cada iteración subsiguiente de la misma instrucción del código del programa, determinar si se ha generado una representación intermedia (2a) de caso especial para la funcionalidad requerida en dicha iteración subsiguiente; y

generar una representación intermedia (2b) del caso especial específica adicional de esa funcionalidad si no ha sido generada previamente tal representación intermedia del caso especial.

5. El método de acuerdo con la reivindicación 4, en el que cuando dicha representación intermedia (2a,2b) del caso especial es generada y almacenada, se genera y almacena un procedimiento de prueba asociado para determinar en las iteraciones subsiguientes de la instrucción del código del programa respectivo si la funcionalidad requerida es la misma que la representada por la representación intermedia (2a,2b) del caso especial almacenada asociada, y cuando sea requerida una representación intermedia (2b) de caso especial adicional, un procedimiento de prueba adicional asociado con esa representación intermedia (2b) del caso especial se genera y almacena con esa representación intermedia (2b) del caso especial adicional.

6. El método de acuerdo con la reivindicación 5, en el que la representación intermedia (2b) del caso especial adicional para una instrucción del código del programa particular y el procedimiento de prueba asociado adicional son almacenados al menos inicialmente en relación subordinada con cualquier representación intermedia (2a) del caso especial existente y los procedimientos de prueba asociados son almacenados para representar la misma instrucción sujeto, de tal forma que tras la segunda y subsiguientes iteraciones de una determinación de instrucción del código del programa de si la representación intermedia (2a,2b) de caso especial requerida ha sido o no previamente generada se hace realizando dichos procedimientos de prueba en el orden en el que fueron generadas y almacenadas hasta que se haya determinado que la representación intermedia (2a,2b) del caso especial de la funcionalidad requerida existe o bien se ha determinado que no existe tal representación intermedia (2a,2b) del caso especial requerida, en cuyo caso se generan más representaciones intermedias adicionales (2b) y otro procedimiento de prueba asociado.

7. El método de acuerdo con la reivindicación 5 ó 6, en el que la representación intermedia (1,2,3) es optimizada ajustando el ordenamiento de los procedimientos de prueba de forma que los procedimientos de prueba asociados con la representación intermedia (2b) del caso especial más frecuentemente usada son ejecutados antes que los procedimientos de prueba asociados con la representación intermedia (2a) del caso especial menos frecuentemente usada antes que ordenar los procedimientos de prueba en el orden en el que son generados.

8. El método de cualquier reivindicación precedente, en el que dicha representación intermedia (1,2,3) es generada y almacenada para un bloque del código de programa (2) y subsiguientemente vuelta a usar si el mismo bloque del código de programa (2) es más tarde vuelto a introducir, y en el que al menos un bloque de dicho código del programa (2) tiene condiciones o efectos de entrada alternativos no usados y dicha representación intermedia (2a) solamente es generada y almacenada inicialmente si es requerida para ejecutar ese bloque del código del programa con un conjunto de condiciones entonces prevalentes.

9. El método de acuerdo con la reivindicación 8, en el que para un bloque del código dado para ser traducido se ha determinado si una representación intermedia (2a) previamente almacenada fue por tanto para el mismo conjunto de condiciones ahora actualmente prevalentes y, si no, entonces generar y almacenar una representación intermedia (2b) adicional según se requiera para ejecutar el bloque del código para el nuevo conjunto de condiciones ahora actualmente prevalentes.

10. El método de cualquier reivindicación anterior, en el que la generación de la representación intermedia comprende:

(i) generar una pluralidad de objetos de registro para mantener valores variables para ser generados por el código del programa; y

(ii) generar una pluralidad de objetos de expresión que representan valores fijos y/o relaciones entre dichos valores fijos y dichos valores variables de acuerdo con dicho código del programa.

11. El método de cualquier reivindicación anterior, que comprende traducir el código del programa informático escrito para su ejecución por un procesador de un primer tipo, de forma que el programa sea ejecutado en su lugar por un procesador de un segundo tipo.

12. El método de cualquier reivindicación anterior, que comprende traducir dinámicamente un primer código del programa informático, hecho para funcionar en una primera máquina programable, a un segundo código de programa informático que funciona en una segunda máquina programable diferente, que incluye los pasos de:

(a) generar dicha representación intermedia para un bloque de dicho primer código de programa;

(b) generar un bloque de dicho segundo código del programa informático a partir de dicha representación intermedia;

(c) ejecutar dicho bloque del código del programa informático en dicha segunda máquina programable; y

(d) repetir los pasos (a)-(c) para bloques seleccionados de dicho primer código de programa informático necesario para una ejecución emulada en curso del primer código del programa informático en dicha segunda máquina programable.

13. El método de cualquiera de las reivindicaciones 1 a 10, que comprende:

generar la representación intermedia, y

optimizar dicha representación intermedia.

14. El método de acuerdo con la reivindicación 13, que comprende la optimización del código del programa informático escrito para ejecución por un procesador de un primer tipo, de forma que el programa sea ejecutado más eficientemente por el procesador del primer tipo.

15. Un aparato dispuesto para realizar una conversión dinámica de código de programa, que comprende:

una memoria que almacena un código de programa informático;

un procesador; y

caracterizado por:

un sistema de emulación dispuesto para convertir dinámicamente el código del programa almacenado en la memoria en un código del programa ejecutado por el procesador, que incluye los pasos de:

en una traducción inicial de una primera parte del código del programa (2), generar y almacenar solamente una representación intermedia (2a) que es requerida para ejecutar esa primera parte del código del programa con un primer conjunto de condiciones prevalentes (d0_state:surdXX); y

cada vez que subsiguientemente se introduce la primera parte del código del programa (2), determinar si la representación intermedia (2b) ha sido previamente generada y almacenada para esa primera parte del código del programa (2) para las condiciones entonces prevalentes (d0_state:surdXX), y si tal representación intermedia no ha sido previamente generada, generar una representación intermedia (2b) adicional requerida para ejecutar dicha primera parte del código del programa (2) con dichas condiciones entonces prevalentes (d0_state:surdXX).

16. El aparato de la reivindicación 15, en el que el sistema de emulación (19) está dispuesto para ejecutar en un segundo ordenador el código del programa escrito para un primer ordenador.

17. El aparato de la reivindicación 16, en el que el segundo ordenador es de un tipo diferente de, y no compatible con, el primer ordenador.

18. El aparato de la reivindicación 15, en el que el sistema de emulación (19) es un acelerador dispuesto para optimizar el código del programa almacenado en la memoria y ejecutable por un procesador de un primer tipo, de forma que el código del programa sea ejecutado más eficientemente por el procesador también del primer tipo.

19. Un medio de almacenamiento del programa, caracterizado por tener registrado en él instrucciones que cuando son aplicadas por un ordenador realizan todos los pasos del método de cualquiera de las reivindicaciones 1 a 14.


 

Patentes similares o relacionadas:

Imagen de 'ARQUITECTURA PARA GENERAR REPRESENTACIONES INTERMEDIAS PARA LA…'ARQUITECTURA PARA GENERAR REPRESENTACIONES INTERMEDIAS PARA LA CONSERVACION DE CODIGOS DE PROGRAMAS, del 18 de Junio de 2010, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un método para generar una representación intermedia durante la traducción de código sujeto a código de objetivo , que comprende las […]

Método y sistema para generar un código, del 26 de Julio de 2017, de Deloitte innoWake GmbH: Un método implementado por ordenador para generar un código a partir del código fuente original, mediante el cual el código fuente original incluye al menos una […]

Método y sistema para generar un analizador y análisis de los datos complejos, del 12 de Julio de 2017, de Palantir Technologies, Inc: Un sistema configurado para generar un analizador, el sistema que comprende: un dispositivo de memoria configurado para almacenar un […]

Procedimiento de ejecución de una aplicación sin estar instalada, del 21 de Diciembre de 2016, de Microsoft Technology Licensing, LLC: Un procedimiento de ejecución de una aplicación en un sistema informático local sin que la aplicación esté instalada en el sistema informático local, […]

MÉTODO IMPLEMENTADO POR COMPUTADOR QUE EXPONE APLICACIONES TIPO SOFTWARE A PARTIR DE ESPECIFICACIONES DE DISEÑO, del 17 de Noviembre de 2016, de HUEBRA, Nadia Analía: El presente invento es un sistema y un método que, a partir de la entrada de estructuras lógicas de información en un dispositivo electrónico […]

PROCESO Y SISTEMA PARA GENERAR DOCUMENTOS DE ARQUITECTURA FUNCIONAL Y DOCUMENTOS DE ESPECIFICACIÓN DE ANÁLISIS Y DE DISEÑO DE SOFTWARE DE MANERA AUTOMÁTICA, del 3 de Noviembre de 2016, de HUEBRA, Nadia Analía: El presente invento es un sistema y un método implementado por computador para generar automáticamente documentos de Arquitectura Funcional, documentos de […]

Imagen de 'Método y equipo para la compilación de un lenguaje interpretativo…'Método y equipo para la compilación de un lenguaje interpretativo para televisión interactiva, del 15 de Febrero de 2016, de OPENTV, INC.: Método para compilar un script para ejecución en un dispositivo de cliente en un sistema de televisión interactiva que comprende: recibir una página de HTLM que contiene […]

Colocar instrucción de lanzamiento de excepción en código compilado, del 20 de Enero de 2016, de Microsoft Technology Licensing, LLC: Un método para traducir un código de programa informático desde una primera representación de lenguaje a una segunda representación de lenguaje, comprendiendo el método: […]

Utilizamos cookies para mejorar nuestros servicios y mostrarle publicidad relevante. Si continua navegando, consideramos que acepta su uso. Puede obtener más información aquí. .