Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MICROPROCESSOR SYSTEM INCLUDING A RECONFIGURABLE HARDWIRED CONTROL UNIT AND METHOD FOR OPERATING A MICROPROCESSOR
Document Type and Number:
WIPO Patent Application WO/2010/018254
Kind Code:
A1
Abstract:
The invention relates to a microprocessor system comprising a microprocessor including a data path (1) and a hardwired control unit (2). The system is configured to reconfigure the control unit in response to a reconfiguration instruction (200), such that, prior to reception of the reconfiguration instruction, the control unit is configured such that the microprocessor processes instructions from a program compiled for a first processor architecture and, following reception of said reconfiguration instruction, the control unit is reconfigured so that it remains configured such that the microprocessor processes instructions from a program compiled for a second processor architecture different from the first processor architecture.

Inventors:
CASTILLO VILLAR JAVIER (ES)
MARTINEZ TORRES JOSE IGNACIO (ES)
Application Number:
PCT/ES2009/000396
Publication Date:
February 18, 2010
Filing Date:
July 27, 2009
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
UNIV REY JUAN CARLOS (ES)
CASTILLO VILLAR JAVIER (ES)
MARTINEZ TORRES JOSE IGNACIO (ES)
International Classes:
G06F9/30
Foreign References:
US5600845A1997-02-04
US5774686A1998-06-30
Download PDF:
Claims:
REIVINDICACIONES

1. - Sistema microprocesador que comprende un microprocesador que comprende: un camino de datos (1) que comprende, al menos, una unidad aritmético-lógica (14) , registros (13) , una memoria de instrucciones (12) configurada para contener instrucciones de un programa que el microprocesador debe

• ejecutar, y una memoria de datos (15) configurada para contener datos con los que pueda operar el programa; y una unidad de control (2) configurada para recibir instrucciones de programa de la memoria de instrucciones (12) y para generar señales de control y aplicarlas al camino de datos (1) de manera que se realicen, en el camino de datos, operaciones de acuerdo con las instrucciones de programa; siendo la unidad de control (2) una unidad de control cableada; caracterizado. porque el sistema está configurado para, como respuesta a una instrucción de reconfiguración (200) contenida en las instrucciones de programa, reconfigurar la unidad de control, de manera que la unidad de control, antes de recibir dicha instrucción de reconfiguración, está configurada para que el microprocesador procese instrucciones de un programa compilado para una primera arquitectura de procesador, y después de recibir dicha instrucción de reconfiguración, se reconfigure para quedar configurada para que el microprocesador procese instrucciones de un programa compilado para una segunda arquitectura de procesador, distinta de la primera arquitectura de procesador.

2.- Sistema según la reivindicación 1, caracterizado porque comprende una memoria (3) que contiene ai menos dos conjuntos de datos indicativos de respectivas configuraciones lógicas de la unidad de control (2) .

3.- Sistema según la reivindicación 2, caracterizado porque comprende un dispositivo reconfigurador (4) configurado para, como respuesta a la instrucción de reconfiguración, modificar la configuración de la unidad de control de acuerdo con los datos de uno de dichos conjuntos de datos.

4. - Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque la unidad de control está implementada en un dispositivo de lógica programable.

5.- Sistema según cualquiera de las reivindicaciones 1-3, caracterizado porque la unidad de control está implementada en un circuito ASIC que comprende al menos una parte de lógica reconfigurable correspondiente a la unidad de control .

6.- Sistema según cualquiera de las reivindicaciones anteriores, caracterizado porque está configurado para cambiar la configuración de la unidad de control repetitivamente para, durante un período de funcionamiento, operar con programas compilados para diferentes arquitecturas, con el fin de dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema.

7.- Sistema según cualquiera de las reivindicaciones- anteriores, caracterizado porque está configurado para realizar cambios • de la configuración de la unidad de control repetitivamente para, durante un período de funcionamiento, operar con programas compilados para diferentes arquitecturas, realizándose dichos cambios de forma aleatoria o pseudoaleatoria.

8.- Método para operar un microprocesador que comprende: un camino de datos (1) que comprende, al menos, una unidad aritmético-lógica (14) , registros (13) , una memoria de instrucciones (12) configurada para contener instrucciones de un programa que el microprocesador debe ejecutar, y una memoria de datos (15) configurada para contener datos con los que pueda operar el programa; y una unidad' de control (2) configurada para recibir instrucciones de programa de la memoria de instrucciones

(12) y para generar señales de control y aplicarlas al camino de datos (1) de manera que se realicen, en el camino de datos, operaciones de acuerdo con las instrucciones de programa ; siendo la unidad de control (2) una unidad de control cableada; caracterizado porque el método comprende los pasos de como respuesta a una instrucción de reconfiguración (200) contenida en las instrucciones de programa, reconfigurar la unidad de control, de manera que la unidad de control - pase de estar configurada para que el microprocesador procese instrucciones de un programa compilado para una primera arquitectura de procesador, - .a estar configurada para que el microprocesador procese instrucciones de un programa compilado para una segunda arquitectura de procesador, distinta de la primera arquitectura de procesador.

9.- Método según la reivindicación 8, caracterizado porque el paso de reconfigurar la unidad de control se realiza accediendo a datos indicativos de configuración lógica de la unidad de control alojados en una memoria (3) que contiene al menos dos conjuntos de datos indicativos de respectivas configuraciones lógicas de la unidad de control .

10.- Método según la reivindicación 9, caracterizado porque como respuesta a la instrucción de reconfiguración se accede a uno de dichos conjuntos de datos y, mediante un dispositivo hardware, se reconfigura la unidad de control de acuerdo con dicho conjunto de datos.

11.- Método según cualquiera de las reivindicaciones 8-10, caracterizado porque la reconfiguración se realiza sobre una unidad de control implementada en un dispositivo de lógica programable.

12.- Método según cualquiera de las reivindicaciones 8-10, caracterizado porque la reconfiguración se realiza sobre una unidad de control implementada en un circuito ASIC que comprende al menos una parte de lógica reconfigurable correspondiente a la unidad de control .

13.- Método según cualquiera de las reivindicaciones 8-12, que comprende el paso de reconfigurar repetitivamente la unidad de control para que el microprocesador opere, en diferentes momentos de un periodo de funcionamiento del microprocesador, con programas compilados para diferentes arquitecturas de microprocesador.

14.- Método según la reivindicación 13, caracterizado porque durante dicho período de funcionamiento se reconfigura la unidad de control de forma aleatoria o pseudoaleatoria .

15.- Método según cualquiera de las reivindicaciones 8-14, que comprende el paso de, como respuesta a la instrucción de reconfiguración pero antes reconfigurar la unidad de control, terminar el procesamiento de instrucciones recibidas antes de la recepción de la instrucción de reconfiguración .

16.- Uso de un dispositivo según cualquiera de las reivindicaciones 1-7, para dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema.

17.- Uso del método según cualquiera de las reivindicaciones 8-15, con el fin de dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema.

Description:
SISTEMA MICROPROCESADOR CON UNIDAD DE CONTROL CABLEADA RECONFIGURABLE, Y MÉTODO PARA OPERAR UN MICROPROCESADOR

CAMPO TÉCNICO DE LA INVENCIÓN La invención se engloba en el campo de los microprocesadores .

ANTECEDENTES DE LA INVENCIÓN

En la actualidad la mayor parte de los microprocesadores de propósito general están construidos siguiendo la arquitectura denominada RISC (Reduced Instruction Set Computer) . En este tipo de arquitectura, la cantidad de diferentes instrucciones que puede ejecutar el procesador ha sido reducida para simplificar el diseño del procesador.

Básicamente, un procesador RISC comprende dos partes diferenciadas, a saber, la unidad de control y el camino de datos .

El camino de datos comprende todo el hardware necesario para realizar las tareas que demanda cada instrucción ensamblador o código máquina, incluyendo la unidad aritmético-lógica (ALU: "Arithmetic-Logic Unit") encargada de realizar cálculos, la memoria de instrucciones que contiene el programa a ejecutar, la memoria de datos que contiene los datos con los que opera el programa/procesador, registros (por ejemplo, organizados en un banco de registros) , así como una gran cantidad de otros elementos, incluyendo sumadores, desplazadores, multiplexores, etc. - Por otra parte, la unidad de control (CU: "Control Unit") se encarga de recibir las instrucciones del programa contenidas en la memoria de instrucciones y generar las señales de control necesarias para que el camino de datos realice las operaciones necesarias para ejecutar dichas instrucciones.

Existen diversas formas de implementar físicamente una unidad de control, siendo las más habituales la unidad de control cableada ( "hardwired" ) y la microprogramada ("πύcroprogrammed") .

La unidad de control cableada tiene una configuración básicamente rígida. Mediante circuitos lógicos se interpreta la instrucción y se generan las salidas de control hacia el camino de datos.

La unidad de control microprogramada contiene en su interior una serie de microinstrucciones que se encargan de detallar los pasos de bajo nivel que debe ejecutar el camino de datos para ejecutar la instrucción.

Generalmente, la unidad de control cableada es mucho más rápida y eficiente en consumo de recursos (área de silicio) y es por tanto la más comúnmente usada en procesadores RISC. Sin embargo, la unidad de control microprogramada dota de mayor flexibilidad al sistema ya que es posible cambiar el microprograma para corregir errores, añadir soporte para nuevas instrucciones o incluso cambiar toda la codificación del juego de instrucciones convirtiendo virtualmente el microprocesador en otro diferente. De esta manera se puede, por ejemplo, cambiar las microinstrucciones contenidas en una unidad de control microprogramada para que el microprocesador, en lugar de ejecutar código o programas compilados para una determinada arquitectura de procesador (por ejemplo, para PowerPC, MIPS, Intel x86, SPARC, ARM, Alpha, etc.) pueda ejecutar programas compilados para otro tipo de arquitectura. Lógicamente, esto hace que el procesador sea mucho más flexible.

Esta flexibilidad de las unidades de control microprogramadas ha sido explotada para diseñar procesadores que puedan ejecutar juegos de instrucciones de diferentes arquitecturas (es decir, programas compilados para diferentes arquitecturas de procesador) únicamente modificando el microprograma. Esto es posible debido a las grandes similitudes existentes entre los juegos de instrucciones de las diferentes arquitecturas, de tal forma que es posible ejecutar todos estos diferentes juegos de instrucciones sobre el mismo camino de datos sin apenas modificaciones . En la práctica puede haber alguna instrucción de un juego de instrucciones que no se pueda ejecutar sobre un .determinado camino de datos originalmente configurado para otra arquitectura de procesador; por lo tanto, puede ser conveniente, para mayor flexibilidad, que el camino de datos disponga del hardware adicional para ejecutar esa instrucción. Por lo tanto, para disponer de una flexibilidad máxima el procesador debe tener un camino de datos que contenga el conjunto de hardware necesario para ejecutar el mayor número posible de juegos de instrucciones diferentes sin modificaciones. Es decir, puede tratarse de un camino de datos que representa un "superconjunto" de los caminos de datos de diferentes procesadores, por ejemplo, de los diferentes procesadores RISC.

US-A-2004/0133770 (Pappálardo, et al.) describe un procesador que comprende dos unidades de control, una cableada (con las ventajas que ello implica en cuanto a rapidez y consumo de recursos) y otra microprogramada (con las ventajas que ello implica en cuanto a flexibilidad) . Por lo tanto, el microprocesador puede adaptarse a programas compilados para otras arquitecturas (distintas de las que originalmente se han previsto al diseñar la unidad de control cableada) modificando la programación de la unidad de control microprogramada . Por lo tanto, en un principio, se combinan las ventajas de ambos tipos de unidad de control, aunque con la desventaja de tener que disponer de dos unidades de control, lo cual implica una mayor cantidad de hardware, con las desventajas que ello implica en cuanto a, por ejemplo, el uso de superficie .

WO-A-2007/015258 (Gopi, et al.) hace referencia a una unidad de control configurable . Para ello, se ha previsto un juego de instrucciones con cierta capacidad de configuración. Para ciertas aplicaciones puede ser interesante cambiar el comportamiento de algunas instrucciones y para ello cada instrucción tiene un campo con atributos que cambia la respuesta de la unidad de control a dicha instrucción. La unidad de control interpreta dichos atributos y ejecuta esa instrucción de forma diferente en función del atributo. Es decir, el juego de instrucciones presenta unos campos especiales que son capaces de modificar algunas propiedades de esa unidad de control, como por ejemplo el tiempo que la instrucción tarda en ejecutarse. Esta funcionalidad está soportada por un hardware adicional en la unidad de control .

DESCRIPCIÓN DE LA INVENCIÓN

Un primer aspecto de la invención se refiere a un sistema microprocesador que comprende un microprocesador que comprende : (i) un camino de datos que comprende, al menos, una unidad aritmético-lógica, registros, una memoria de instrucciones configurada para contener instrucciones de un programa que el microprocesador debe ejecutar, y una memoria de datos configurada para contener datos con los que pueda operar el programa; y

(ii) una unidad de control configurada para recibir instrucciones de programa de la memoria de instrucciones y para generar señales de control y aplicarlas al camino de datos de manera que se realicen, en el camino de datos, operaciones de acuerdo con las instrucciones de programa; esta unidad de control es una unidad de control cableada.

De acuerdo con la invención, el sistema está configurado para, como respuesta a una instrucción de reconfiguración contenida en las instrucciones de programa, reconfigurar la unidad de control, de manera que la unidad de control, que antes de recibir dicha instrucción de reconfiguración ' estaba configurada para que el microprocesador procese instrucciones de un programa compilado para una primera arquitectura de procesador, después de recibir dicha instrucción de reconfiguración se reconfigure para quedar configurada para que el microprocesador procese instrucciones de un programa compilado para una segunda arquitectura de procesador, distinta de la primera arquitectura de procesador.

De esta manera, se consigue combinar la flexibilidad de los microprocesadores con unidad de control microprogramada con la rapidez y bajo consumo de los microprocesadores con unidad de control cableada. Es decir, se consigue un sistema que combina lo mejor de ambos conceptos. Por lo tanto, se puede, cuando sea conveniente, cambiar la configuración lógica de la unidad de control para que el microprocesador, que antes estaba configurado para procesar instrucciones de un programa compilado para una arquitectura de procesador, pase a estar configurado para procesar, correctamente, instrucciones de un programa compilado para otra arquitectura de procesador. Ejemplos de arquitecturas de procesador son: PowerPC, MIPS, Intel x86, SPARC, ARM, Alpha, etc.

Por ejemplo: 1) En la arquitectura MIPS la instrucción de suma se codifica de la siguiente forma: add, rt,rs,rd rt=rs+rd donde rt es el registro destino (rl, r2 , r3) y rs,rd son los registros fuente. Se codifica como:

V000000 rs rd rt 00000 100000" (estando rs,rt y rd codificados con 5 bits) siendo por tanto la operación "add r3=r2+rl" como sigue: "000000 00001 00010 00011 00000 100000"

2) En la arquitectura ARM la misma instrucción se codifica de la siguiente forma: "add Rd = Rn + Rm"

"1111 00 0 0100 0 Rn Rd 00000000 Rm" Por tanto "add r3=r2+rl" sería:

"1111 00 0 0100 0 0011 0010 00000000 0001" Por tanto, la "reconfiguración" de la unidad de control desde "compatibilidad" con MIPS a "compatibilidad" con ARM implica que si la unidad de control, antes de recibir la instrucción de reconfiguración, emitía un determinado conjunto de señales como respuesta a "000000 00001 00010 00011 00000 100000", después de la "reconfiguración debe generar las mismas señales de control como respuesta a

"1111 00 0 0100 0 0010 0010 00000000 0001". La invención puede servir como base para muchas aplicaciones interesantes, por ejemplo:

- Ejecución de código de diferentes microprocesadores (es decir, de código compilado para. diferentes "arquitecturas" de microprocesador) . Se puede modificar la unidad de control al arrancar el microprocesador y a partir de entonces utilizarlo para un determinado tipo de código compilado, sin modificar la configuración durante la operación del microprocesador.

- "Virtualización" -. La virtualización permite ejecutar código generado para otro procesador sobre una máquina diferente (es decir, sobre una máquina que en un principio no presenta la arquitectura correspondiente al código) . Se puede estar ejecutando código de las dos (o más) maquinas

(es decir, compilado para las dos -o más- arquitecturas) secuencialmente durante un mismo ciclo o período de funcionamiento del microprocesador, cambiando entre uno y otro. Con la invención resulta posible modificar, en tiempo de ejecución, la unidad de control, de tal forma que ambos códigos se ejecuten de forma nativa sobre el procesador sin apenas perdida de rendimiento (salvo la pérdida debida a la reprogramación o reconfiguración de la unidad de control) . En este caso puede ser necesario implementar un mecanismo que detenga la ejecución de instrucciones (y opcionalmente para vaciar el camino de datos y/o atender todas las interrupciones pendientes) mientras se lleva a cabo la reconfiguración (de manera que cualquier instrucción sea procesada por la "arquitectura" que corresponda) . - Aleatorización del juego de instrucciones: Por motivos de seguridad y para prevenir ataques DPA en sistemas con altos requerimientos de seguridad, puede ser interesante cambiar cada cierto tiempo la codificación del juego de instrucciones para evitar que un atacante pueda averiguar qué programa está ejecutando el microprocesador

(o qué datos está procesando) , analizando el consumo energético del mismo. (El ataque DPA -Differential Power

Analysis- consiste en analizar el consumo del procesador para "adivinar" que instrucciones está ejecutando; cambiando la codificación del juego de instrucciones su consumo también varía, haciendo más difícil este tipo de ataque . )

El sistema puede comprender una memoria que contenga al menos dos conjuntos de datos indicativos de respectivas configuraciones lógicas de la unidad de control. Además, el sistema puede comprender un dispositivo reconfigurador configurado para, como respuesta a la instrucción de reconfiguración, modificar la configuración de la unidad de control de acuerdo con los datos de uno de dichos conjuntos de datos .

La unidad de control puede estar implementada en un dispositivo de lógica programable . Ejemplos de dispositivos de lógica programable son: FPGA (Field Programmable Gate Array) , PLD (Programmable Logic Device) , CPLD (Complex

Programmable Logic Device) , PAL (Programmable Array Logic) , y GAL (Generic Array Logic) . Alternativamente, la unidad de control puede está implementada en un circuito ASIC

("Application Specific Integrated Circuit") que comprende al menos una parte de lógica reconfigurable correspondiente a la unidad de control . El sistema puede estar configurado para cambiar la configuración de la unidad de control repetitivamente para, durante un período de funcionamiento, operar con programas compilados para diferentes arquitecturas, con el fin de dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema (y, por lo tanto, para dificultar "ataques DPA", tal y como se ha indicado más arriba) .

El sistema puede estar configurado para realizar cambios de la configuración de la unidad de control repetitivamente para, durante un período de funcionamiento, operar con programas compilados para diferentes arquitecturas, realizándose dichos cambios de forma aleatoria o pseudoaleatoria. La "aleatorización" se puede referir a la frecuencia con la que se realizan los cambios de configuración y/o a los momentos en los que se producen los cambios de configuración, y/o a cuál será la nueva configuración que se selecciona, entre las diferentes configuraciones disponibles (por ejemplo, en una memoria del sistema) . Es decir, el momento en el que se produce el cambio de configuración se puede determinar de forma aleatoria (o pseudoaleatoria) , y/o la configuración a la que se cambia puede ser elegida de forma aleatoria (o pseudoaleatoria) . Este aspecto de la invención puede tener aplicaciones interesantes en, por ejemplo, el campo de la seguridad.

Otro aspecto de la invención se refiere a un método para operar un microprocesador (por ejemplo, del tipo descrito más arriba), cuyo microprocesador comprende: un camino de datos que comprende, al menos, una unidad aritmético-lógica, registros,- una memoria de instrucciones configurada para contener instrucciones de un programa • que el microprocesador debe ejecutar, y una memoria de datos configurada para contener datos con los que pueda operar el programa; y una unidad de control configurada para recibir instrucciones de programa de la memoria de instrucciones y para generar señales de control y aplicarlas al camino de datos de manera que se realicen, en el camino de datos, operaciones de acuerdo con las instrucciones de programa, siendo la unidad de control una unidad de control cableada. De acuerdo con la invención, el método comprende los pasos de como respuesta a una instrucción de reconfiguración contenida en las instrucciones de programa, reconfigurar la unidad de control, de manera que la unidad de control - pase de estar configurada para que el microprocesador procese instrucciones de un programa compilado para una primera arquitectura de procesador,

- a estar configurada para que el microprocesador procese instrucciones de un programa compilado para una segunda arquitectura de procesador, distinta de la primera arquitectura de procesador.

Lo que se ha dicho más arriba con respecto al sistema de la invención también aplica al método, mutatis mutandis .

El paso de reconfigurar la unidad de control se puede realizar accediendo a datos indicativos de configuración lógica de la unidad de control . Estos datos pueden estar alojados en una memoria en la que están alojados al menos dos conjuntos de datos indicativos de respectivas configuraciones lógicas de la unidad de control . Por ejemplo, como respuesta a la instrucción de reconfiguración, se puede acceder a uno de dichos conjuntos de datos (por ejemplo, accediendo a una posición de memoria indicada en la instrucción de rec ' onfiguración) y, mediante un dispositivo hardware (por ejemplo) , se puede reconfigurar la unidad de control de acuerdo con dicho conjunto de datos. La reconfiguración se puede realizar sobre una unidad de control implementada en un dispositivo de lógica programable, o sobre una unidad de control implementada en un circuito ASIC que comprende al menos una parte de lógica reconfigurable correspondiente a la unidad de control. El método puede comprender el paso de reconfigurar repetitivamente (por ejemplo, de forma aleatoria o pseudoaleatoria, . en cuanto a los momentos en los que se reconfigura y/o en cuanto a cuál será la nueva configuración) la unidad de control para que el microprocesador opere, en diferentes momentos de un periodo de funcionamiento del microprocesador, con programas compilados para diferentes arquitecturas de microprocesador .

El método puede comprender el paso de, como respuesta a la instrucción de reconfiguración pero antes reconfigurar la unidad de control, terminar el procesamiento de instrucciones recibidas antes de la recepción de la instrucción de reconfiguración, por ejemplo, para garantizar que cada instrucción sea procesada por la "arquitectura" que le corresponda.

Otro aspecto de la invención se refiere al uso de un dispositivo según lo que se ha descrito más arriba, para dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema (algo que puede servir para dificultar "ataques DPA") .

De la misma manera, otro aspecto de la invención se refiere al uso del método descrito, con el fin de dificultar un análisis de la operación del microprocesador a partir de un análisis del consumo energético del sistema.

DESCRIPCIÓN DE LAS FIGURAS Para complementar la descripción y con objeto de ayudar a una mejor comprensión de las características de la invención, de acuerdo con un ejemplo preferente de realización práctica de la misma, se acompaña como parte integrante de la descripción, un juego de figuras en el que con carácter ilustrativo y no limitativo, se ha representado lo siguiente:

La figura 1.- Muestra una vista esquemática de un sistema de acuerdo con una posible realización de la invención. La figura 2. - Muestra una vista esquemática de un dispositivo reconfigurador y su relación con una memoria principal y con la unidad de control del sistema.

La figura 3.- Muestra un flujograma que refleja una posible forma de llevar a cabo el método de la invención.

REALIZACIÓN PREFERENTE DE LA INVENCIÓN

En la figura 1 se refleja, de forma esquemática, una realización preferida de la invención, con un microprocesador que comprende un camino de datos 1 (que puede ser convencional) comprendiendo un contador de programa 11 (que lleva la cuenta de cual es la próxima instrucción del programa a ejecutar) , memoria (cache) de instrucciones 12, banco de registros 13, unidad aritmético- lógica 14, memoria (cache) de datos 15, multiplexores 16 (sólo se ha ilustrado uno), etc. Por otra parte, el microprocesador comprende una unidad de control 2 cableada. La unidad de control genera, como respuesta a las instrucciones que recibe de la memoria de instrucciones 12, señales que se aplican al camino de datos 1 para realizar las operaciones correspondientes. Todo esto' es convencional y no se considera necesario describirlo aquí con más detalle.

El sistema comprende también una memoria 3, a continuación denominada "memoria principal", algo que también es convencional en este tipo de sistemas.

Ahora bien, de acuerdo con la invención, esta memoria principal 3 incluye juegos o conjuntos de datos indicativos de configuraciones lógicas diferentes de la unidad de control 2 , en el sentido de que dependiendo de si la unidad de control 2 está configurada de acuerdo con uno u otro de dichos conjuntos de datos, el microprocesador (es decir, el ' conjunto de unidad de control 2 y camino de datos 1) puede procesar, correctamente, instrucciones de un programa compilado para una u otra arquitectura de procesador.

Por otra parte, el sistema incluye un elemento, subsistema o dispositivo reconfigurador 4 que también puede actuar como respuesta a las instrucciones que llegan desde la memoria de instrucciones . Al recibir (de forma directa o indirecta, por ejemplo, como en la figura 2, a través de la unidad de control 2) una instrucción determinada, que a continuación denominamos "instrucción de reconfiguración" , el dispositivo reconfigurador accede a la memoria principal

(por ejemplo, a una posición en la memoria principal indicada por la "instrucción de reconfiguración" ; esta posición puede estar indicada en un campo de la

"instrucción de reconfiguración") y accede allí a uno de los mencionados "conjuntos de datos", para luego acceder a la unidad de control y provocar una reconfiguración de la misma, de acuerdo con dicho conjunto de datos. Para ello, la unidad de control está implementada sobre hardware de lógica reconfigurable, por ejemplo, sobre un dispositivo FPGA (Field Programmable Gate Array) , PLD

(Programmable Logic Device) , CPLD (Complex Programmable Logic Device) , PAL (Programmable Array Logic) o GAL

(Generic Array Logic) , o sobre un ASIC (Application

Specific Integrated Circuit) que comprende al menos una parte de lógica reconfigurable .

La figura 2 refleja esquemáticamente cómo el dispositivo reconfigurador 4, que puede estar implementado con hardware y comprender un controlador de bus, es capaz de conectarse al bus 5 del sistema y leer datos de la memoria principal 3. Por ejemplo, como respuesta a una "instrucción de reconfiguración" 200, la unidad de control 2 (implementada sobre hardware de lógica configurable 21) genera, en adición a (o en lugar de) las señales de control 201 que aplica al camino de datos 1, una señal o instrucción 202 indicativa de que debe producirse una reconfiguración de la unidad de control, acompañada por (o incluyendo) una indicación 202A de la posición en la memoria principal 3 donde empieza el conjunto de datos que define la .nueva configuración de la unidad de control 2. Como respuesta a dicha señal o instrucción 202, el dispositivo reconfigurador 4 accede, a través del bus 5, a la memoria principal 3, lee allí el conjunto de datos que definen la nueva configuración de la unidad de control, y vuelca dicha nueva configuración en la lógica programable 21, a través de una puerta de reconfiguración 22. Por ejemplo, en el caso de un dispositivo FPGA del fabricante Xilinx ® , esto se puede hacer a través de su puerta ICAP (Internal Configuration Access Port) . Es decir, "volcando" la nueva configuración correspondiente al conjunto de datos obtenido en la memoria principal 3 (en la posición o área indicada por la instrucción de reconfiguración 200) , se modifica la "arquitectura" del microprocesador y, por lo tanto, puede quedar configurado para procesar un nuevo tipo de programas compilados.

La figura 3 refleja, esquemáticamente, cómo se puede implementar la invención.

Tanto la unidad de control 2 como el dispositivo de reconfiguración 4 están continuamente buscando nuevas instrucciones a su entrada, a donde las instrucciones llegan desde la memoria de instrucciones 12 con el ritmo que marca el contador de programa 11. Una vez que se detecta una nueva instrucción (paso 100) , ésta se decodifica (paso 101) y se comprueba (paso 102) si se trata de una "instrucción de reconfiguracón" . Si no se trata de una "instrucción de reconfiguración" , la unidad de control ejecuta (paso 103) la instrucción de forma convencional, y el procesador pasa a buscar la siguiente instrucción.

Ahora bien, si se trata de una instrucción de reconfiguración, el microprocesador pasa a ejecutar las interrupciones pendientes (paso 104) y a vaciar el camino de datos (paso 105) , y el dispositivo de reconfiguración

(en el paso 106 que puede ejecutarse después, antes o a la vez con los pasos 104-105) lee (el conjunto de datos indicativo de) la nueva configuración de la unidad de control 2 de la memoria principal 4 y vuelca (en el paso 107, que preferiblemente se realice después del pasó 105) dicha nueva configuración en la unidad de control 2 , quedando la misma por lo tanto reconfigurada. Básicamente, el funcionamiento podría ser el siguiente: El procesador está ejecutando un juego de instrucciones determinado contenido en la memoria de instrucciones 12. Dentro de ese juego de instrucciones existe una instrucción de reconfiguración y que básicamente sirve para "activar" el dispositivo de reconfiguración 4

(implementado en hardware) e indicarle la posición de la memoria principal 3 en la que comienza el conjunto de datos que corresponde a la nueva configuración de la unidad de control 2. - Cuando se ejecute dicha instrucción el procesador

(unidad de control 2 y camino de datos 1) termina todo lo que está haciendo hasta ese punto, atendiendo todas las interrupciones pendientes y vaciando el camino de datos.

(Como es sabido, las interrupciones en el sistema funcionan para atender eventos externos. Por ejemplo, cuando se pulsa una tecla en el procesador se activa una interrupción y se salta a una posición de memoria preestablecida para ese evento donde se encuentra el programa que hay que ejecutar en caso de que se pulse dicha tecla. Cuando se quiere reconfigurar la unidad de control para, básicamente, convertir la "arquitectura" del procesador en otra, aparte de cambiar el juego de instrucciones puede ser necesario cambiar la numeración de las interrupciones y la posición de memoria a la que hay que saltar cuando se produce el evento correspondiente. Esto se puede hacer modificando una tabla, que puede estar junto a la unidad de control.) De esta manera se deja el procesador en un estado conocido sin" nada pendiente de tal forma que al reiniciarlo con la nueva configuración de la unidad de control, no queden instrucciones codificadas de otra manera (es decir, correspondientes a la "arquitectura" anterior) por ejecutar. Si se cambia la configuración de la unidad de control y quedan eventos externos por atender -que lanzan interrupciones en el procesador- puede haber un riesgo de que se puedan mezclar instrucciones correspondientes a configuraciones -o "arquitecturas"- diferentes. Por eso puede ser conveniente dejar el procesador en un estado en el que no tenga nada de trabajo pendiente (y en caso de que el camino de datos esté segmentado, algo que es habitual, se termina de procesar todas las instrucciones anteriores a la instrucción de reconfiguraciδn) . - Una vez parado el procesador, el elemento reconfigurador 4 comienza a leer de la memoria principal 3 la nueva configuración de la unidad de control y a reconfigurar dicha unidad de control sobre el hardware reconfigurable correspondiente . En este texto, la palabra "comprende" y sus variantes (como "comprendiendo", etc.) no deben interpretarse de forma excluyente, es decir, no excluyen la posibilidad de que lo descrito incluya otros elementos, pasos etc.

Por otra parte, la invención no está limitada a las realizaciones concretas que se han descrito sino abarca también, por ejemplo, las variantes que pueden ser realizadas por el experto medio en la materia (por ejemplo, en cuanto a la elección de materiales, dimensiones, componentes, configuración, etc.), dentro de lo que se desprende de las reivindicaciones.