ES2334196A1 - Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados. - Google Patents
Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados. Download PDFInfo
- Publication number
- ES2334196A1 ES2334196A1 ES200900442A ES200900442A ES2334196A1 ES 2334196 A1 ES2334196 A1 ES 2334196A1 ES 200900442 A ES200900442 A ES 200900442A ES 200900442 A ES200900442 A ES 200900442A ES 2334196 A1 ES2334196 A1 ES 2334196A1
- Authority
- ES
- Spain
- Prior art keywords
- reconfigurable
- execution
- unit
- vector
- operations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
Abstract
Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados. Dispositivo para la mejora de la seguridad de sistemas empotrados basados en microprocesador, de tipo reconfigurable y de bajo consumo, que permite la ejecución de operaciones vectoriales, y que comprende, al menos: (a) una primera unidad vectorial reconfigurable (1) diseñada como una ruta de datos segmentada con múltiples contextos configurables independientemente, y que comprende, al menos, tres etapas o bloques: (i) una primera etapa de decodificación (101) configurada para la obtención de la información de la operación y los operandos involucrados en la ejecución; (ii) una segunda etapa de ejecución (102) que a su vez comprende una pluralidad de unidades reconfigurables básicas conectadas en cascada; y (iii) una tercera etapa de salida (103); (b) una segunda unidad de carga y almacenamiento vectorial (2) integrada en la unidad de ejecución (3) de la ruta de datos principal (100).
Description
Dispositivo para la mejora de la seguridad de
microprocesadores en sistemas empotrados.
El objeto de la presente invención es un
dispositivo y un método para mejorar la seguridad de los
microprocesadores en los sistemas empotrados, todo ello basado en
una unidad vectorial reconfigurable. La presente invención se
encuadra dentro del ámbito de los sistemas empotrados y es
especialmente relevante en el campo de las redes de sensores.
Diferentes aproximaciones como el
Differential Power Analysis (Análisis de potencia
diferencia, DPA) y sus variantes, que involucran muchos aspectos del
diseño de sistemas, tanto HW (hardware) como SW
(software), cifrado entre otros, ofrecen retos adicionales
para los proyectos de ingeniería en sistemas empotrados, puesto que
los riesgos de seguridad deben manejarse en distintos niveles de
abstracción y no deben ser expuestos a niveles superiores. Algunas
de las contramedidas propuestas incluyen la utilización de relojes
aleatorios con objeto de introducir no-determinismo
en el sistema [O. Kömmerling and M. G. Kuhn, "Design principles
for tamper-resistant smartcard processors", in
Proceedings of the USENIX Workshop on Smartcard Technology,
Chicago, 10-11 May, 1999., 1999, pp.
9-20], enmascaramiento de los datos antes de operar
con ellos para ocultar la información sensible, ver patente
JP2000-66585, US 10/825,291 y US 10/851,123
[Publicado posteriormente en C. H. Gebotys, "A
split-mask countermeasure for
low-energy secure embedded systems", Trans. on
Embedded Computing Sys., vol. 5, no. 3, pp.
577-612, 2006], uso de amplitudes de señal muy
reducidas, y la introducción de ruido en las posibles medidas de
potencia [T. S. Messerges, E. A. Dabbish, and R. H. Sloan,
"Examining smartcard security under the threat of power analysis
attacks", IEEE Trans. Comput., vol. 51, no. 5, pp.
541-552, 2002] [P. Kocher, J. Jaffe, and B. Jun,
"Differential power analysis", Lecture Notes in Computer
Science, vol. 1666, pp. 388-397, 1999]. Todas estas
medidas sólo consiguen que sea necesario un mayor número de
muestras para descubrir las claves, pero no eliminan el riesgo.
Recientemente [D. Hwang, K. Tiri., A. Hodjat,
B.-C. Lai, S. Yang, P. Schaumont, and I. Verbauwhede,
"AES-based security coprocessor IC in
0.18-\mum CMOS with resistance to differential
power analysis side-channel attacks", IEEE
Journal:of Solid-State Circuits, vol. 41, no. 4, pp.
781-792, April 2006] se ha propuesto la utilización
de un estilo de lógica dinámica denominado wave dynamic
differential logic (WDDL) junto con una técnica de rutado
denominada rutado diferencial para combatir las técnicas de
análisis de potencia diferencial (DPA). Por supuesto, el coste es un
aumento significativo del área y el consumo (un orden de magnitud
superior) y una pérdida significativa del rendimiento máximo (0,99
Gb/s frente a 3,89 Gb/s de la implementación estándar). La patente
US/6654884 describe un método para mantener constante la distancia
de Hamming con puertas especiales (lo que implica un mayor
coste).
Lo que hace específica esta invención es la
utilización de lógica reconfigurable para permitir que el hardware
del dispositivo esté cambiando continuamente, lo que dificulta
enormemente ataques basados en análisis de consumo o emisiones
electromagnéticas. Esto permite que el dispositivo se defienda de
estos ataques al mismo tiempo que mejora su rendimiento.
Por otro lado, a diferencia de otras unidades
reconfigurables propuestas, la estructura en forma de ruta de datos
segmentada hace que las comunicaciones sean muy locales. Al no
existir líneas largas con muchas conexiones, las capacidades son
menores y el consumo es menor.
Como ha sido mencionado, los ataques a sistemas
empotrados más comunes, incluyendo DPA (Differential Power
Analysis) y sus variantes, se basan en el análisis estadístico de
muchas capturas que pueden filtrar información de la clave (consumo,
emisiones electromagnéticas, tiempos de ejecución, etc). Al
considerar muchas capturas se elimina la dependencia que puede
tener con los datos de entrada. El éxito del ataque se basa en que
el dispositivo se comporta de la misma forma para todas esas
capturas.
El dispositivo que se describe a continuación
varía de forma aleatoria el propio hardware del dispositivo,
utilizando la lógica reconfigurable para variar la implementación
física de la ruta de datos, lo que determina en cada momento el
patrón de consumo emisiones electromagnéticas, y tiempo de
ejecución.
El dispositivo reconfigurable y de bajo consumo
para la mejora de la seguridad de microprocesadores para sistemas
empotrados, de forma básica comprende, al menos:
(a) una primera unidad vectorial reconfigurable
diseñada como una ruta de datos segmentada con múltiples contextos
configurables independientemente, y que está dividida en tres
etapas:
- (i)
- una primera etapa de decodificación configurada para la obtención de la información de la operación y los operandos involucrados en la ejecución y que, a su vez, comprende, al menos:
- -
- una unidad de control configurada para controlar la ejecución en función de la información específica de cada operación que almacena en una memoria interna el software de soporte de ejecución;
- -
- un bloque de registros de propósito general configurados para almacenar los datos que se van cargando de la memoria principal y los resultados parciales de las operaciones de la primera unidad vectorial reconfigurable en ejecución;
- (ii)
- una segunda etapa de ejecución que a su vez comprende una pluralidad de unidades reconfigurables básicas conectadas en cascada; y
- (iii)
- una tercera etapa de salida configurada para llevar a cabo, al menos, dos operaciones:
- -
- una primera operación de preparación de la escritura de resultados intermedios al bloque de registros internos; y
- -
- una segunda operación de gestión de un buffer de salida para la escritura vectorial de resultados a la memoria principal.
(b) una segunda unidad de carga y almacenamiento
vectorial integrada en la unidad de ejecución de la ruta de datos
principal configurada para desacoplar la extracción de operandos de
las operaciones vectoriales de la primera unidad vectorial
reconfigurable de la operación normal de la ruta de datos
principal.
\vskip1.000000\baselineskip
Puede pensarse que la variación de la
implementación física de la ruta de datos reconfigurable sólo añade
algo de ruido a las muestras y por tanto, al igual que ocurre
cuando se introducen consumos adicionales aleatorios, sólo obliga a
obtener más muestras para atacarlo. Sin embargo, cada bucle puede
implementarse de múltiples formas en la unidad reconfigurable, de
forma que incluso cambia el patrón de acceso a memoria. Por tanto,
no es fácil saber qué dato se está procesando en cada momento. Por
otro lado, el cambio de implementación no está sincronizado con el
cambio de dato a cifrar, sino que puede producirse en cualquier
momento durante la ejecución del bucle.
El problema de la lógica reconfigurable en
sistemas empotrados es el elevado consumo que suele tener. Sin
embargo, esto se debe en gran medida a las elevadas capacidades
asociadas a las líneas largas de interconexión. Para reducir el
consumo, la unidad reconfigurable propuesta restringe fuertemente el
flujo de datos dentro de la unidad reconfigurable, de forma que las
comunicaciones son muy locales y las capacidades mucho más
reducidas.
La arquitectura reconfigurable que proponemos
para el procesador del sistema empotrado la denominamos SORU
(Stream Oriented Reconfigurable Unit o unidad vectorial
reconfigurable), y está especialmente diseñada para soportar la
auto-adaptación dinámica.
Existe un gran número de diseños de
arquitecturas reconfigurables pero, hasta donde sabemos, ninguna es
apta para este escenario de cambio constante porque la generación
de la configuración de la lógica reconfigurable tiene un coste
computacional muy elevado.
La arquitectura vectorial reconfigurable está
basada en un procesador RISC de propósito general con una unidad
vectorial reconfigurable dentro de la ruta de datos del procesador.
Es este sentido es similar al procesador Nano, PRISC, DISC,
Chimaera o Onechip98. Sin embargo, la unidad funcional
reconfigurable está segmentada, con múltiples contextos de
configuración por cada etapa, y con bloques reconfigurables de
grano grueso, al estilo de
PipeRench.
PipeRench.
A diferencia de otros diseños de procesadores
reconfigurables, la unidad funcional reconfigurable es vectorial,
utilizando la memoria principal para almacenar los vectores, y
cuenta con un bloque de registros interno que puede ser utilizado
para minimizar y homogeneizar los accesos a memoria. Incluye
también una unidad de control sencilla que permite la ejecución de
bloques completos sin la intervención de la ruta de datos
principal.
RSVP es un coprocesador vectorial diseñado
previamente con el objetivo de ofrecer una interfaz sencilla pero
eficiente. SORU ha sido diseñado para ser más sencillo de usar para
optimización dinámica y mucho más pequeño, ya que el objetivo
principal no es aumentar el rendimiento, sino hacer posible una
adaptación óptima de los recursos disponibles a los requisitos
computacionales de cada momento, incluso para procesadores de baja
gama.
Por otro lado, en el dispositivo permite
implementar un método para aprovechar las características del
dispositivo, a partir del código de un procesador escalar,
caracterizado por las siguientes etapas: identificación de bucles,
normalización de bucles, comprobación de la forma del bucle, los
patrones de acceso a memoria y la posibilidad de implementar el
cuerpo del bucle como instrucciones de la ruta de datos
reconfigurable, estimación del beneficio de la vectorización y
planificación del cuerpo del bucle.
Igualmente, se implementa un método para mejorar
la resistencia a los ataques basados en análisis de consumo y
emisiones electromagnéticas, basado en el dispositivo y el método
anterior, así como una fase de generación de soluciones
alternativas. Este método se caracteriza por cambiar en cada
iteración, y de forma aleatoria, la implementación de un bucle de
entre las pre-configuradas en el dispositivo
reconfigurable. Además, en este método se generan implementaciones
alternativas del cuerpo del bucle de forma dinámica.
A lo largo de la descripción y las
reivindicaciones la palabra "comprende" y sus variantes no
pretenden excluir otras características técnicas, aditivos,
componentes o pasos. Para los expertos en la materia, otros
objetos, ventajas y características de la invención se desprenderán
en parte de la descripción y en parte de la práctica de la
invención. Los siguientes ejemplos y dibujos se proporcionan a modo
de ilustración, y no se pretende que sean limitativos de la
presente invención. Además, la presente invención cubre todas las
posibles combinaciones de realizaciones particulares y preferidas
aquí indicadas.
Fig 1. muestra el diagrama de bloques mostrando
la integración de la unidad reconfigurable en una ruta de datos
tipo MIPS, como parte integrante del dispositivo objeto de la
presente invención.
Fig 2. muestra el diagrama representativo del
método de vectorización, parte integrante del método objeto de la
presente invención.
La figura 1 muestra la estructura general de un
prototipo de procesador que implementa la arquitectura propuesta.
La unidad vectorial reconfigurable de SORU ha sido diseñada como
una extensión a la etapa de ejecución de un procesador RISC, aunque
es fácilmente adaptable a cualquier procesador RISC de propósito
general.
El dispositivo para la mejora de la seguridad de
microprocesadores en sistemas empotrados de tipo reconfigurable y
de bajo consumo para la ejecución de operaciones vectoriales en
procesadores empotrados comprende, al menos:
(a) una primera unidad vectorial reconfigurable
(1) diseñada en una ruta de datos segmentada con múltiples
contextos configurables independientemente, y que consta de tres
etapas:
- (i)
- una primera etapa de decodificación (101) configurada para la obtención de la información de la operación y los operandos involucrados en la ejecución y que, a su vez, comprende, al menos:
- -
- una unidad de control configurada para controlar la ejecución en función de la información específica de cada operación que almacena en una memoria interna (101a) el software de soporte de ejecución, bien una librería de bajo nivel comprendiendo el código de inicialización, bien un sistema operativo de tiempo real;
- -
- un bloque de registros de propósito general (101c) configurados para almacenar los datos que se van cargando de la memoria principal (104) y los resultados parciales de las operaciones de la primera unidad vectorial reconfigurable (1) en ejecución;
- (ii)
- una segunda etapa de ejecución (102) que a su vez comprende una pluralidad de unidades reconfigurables básicas conectadas en cascada; y
- (iii)
- una tercera etapa de salida configurada para llevar a cabo, al menos, dos operaciones:
- -
- una primera operación de preparación de la escritura de resultados intermedios al bloque de registros internos; y
- -
- una segunda operación de gestión de un buffer de salida para la escritura vectorial de resultados a la memoria principal (104);
(b) una segunda unidad de carga y almacenamiento
vectorial (2) integrada en la unidad de ejecución (3) de la ruta de
datos principal (100) configurada para desacoplar la extracción de
operandos de las operaciones vectoriales de la primera unidad
vectorial reconfigurable (1) de la operación normal de la ruta de
datos principal (100);
\vskip1.000000\baselineskip
La etapa de ejecución de la unidad
reconfigurable (102) está divida en 4 unidades reconfigurables
básicas (BRU) conectadas en cascada. Cada BRU tiene 3 entradas de
datos de 32 bits: el resultado de la BRU previa, un nuevo dato del
bloque de registros interno y el último resultado calculado por esa
BRU. El resultado de una operación de una BRU se almacena en un
registro de la pipeline, de forma que pueda ser usado por la
siguiente BRU en el siguiente ciclo de reloj. Este resultado
intermedio también puede almacenarse en un registro del bloque de
registros interno.
Internamente, cada BRU tiene varios contextos de
configuración de los cuales sólo uno puede estar activo en cada
instante. La configuración de estos contextos se puede realizar de
forma dinámica, de acuerdo a las necesidades del programa. En
nuestro caso, utilizamos esta característica para variar
continuamente la implementación física de la ruta de datos, y por
tanto el patrón de consumo.
La configuración de las BRUs se realiza
invocando a la operación SCONF, que inicia una transferencia de un
bloque de memoria principal a la memoria de configuración de una
BRU inactiva.
Las diferentes configuraciones para operaciones
de un ciclo (una BRU) pueden prepararse previamente y almacenarse
en memoria externa. El compilador es el responsable de insertar el
código de configuración para escribir los distintos contextos antes
de que sean necesarios para la ejecución del programa. Por otro
lado, el soporte de ejecución (ya sea sistema operativo o librerías
de soporte) puede usar información dinámica para
re-optimizar partes del programa utilizando
contextos diferentes. Esto hace que las distintas implementaciones
de los bucles de cifrado no tengan que estar prefijadas en tiempo
de compilación, sino que se pueden instalar servicios de
transformación de código que utilizan los sistemas empotrados en
tiempo de ejecución.
El juego de instrucciones del procesador
principal es necesario extenderlo con las siguientes operaciones:
configuración de un contexto de una BRU (SCF), inicio de una carga
vectorial (LV), inicio de almacenamiento vectorial (SV), movimiento
de escalares entre la ruta de datos principal y la unidad
reconfigurable (MOVI2S, MOVS2I), ejecución de operaciones SIMD en
la unidad reconfigurable (SRE), y parada de la ruta de datos
principal durante un número de ciclos o hasta que se produzca una
interrupción (WAIT).
La arquitectura reconfigurable de la unidad
vectorial reconfigurable hace su función como un coprocesador de un
procesador escalar, pero, como hemos visto, su integración es mucho
mayor que la de un coprocesador para obtener un mayor rendimiento y
menor consumo.
El uso de lógica reconfigurable permite que la
arquitectura sea independiente de la aplicación, proporcionando en
cada caso los recursos necesarios para acelerar las operaciones
críticas de dicha aplicación.
Para conseguir una mayor utilización de estos
recursos, así como una mayor flexibilidad, la lógica reconfigurable
de las BRUs es de baja granularidad, pudiendo reconfigurar dichos
recursos a nivel de bit, de forma similar a como lo haría una FPGA
o la unidad funcional reconfigurable Chimaera.
La estructuración de los recursos es otro
aspecto fundamental. La definición de unidades funcionales o
elementos preestablecidos dentro de la arquitectura, como ocurre en
PipeRench y DART, facilita enormemente el proceso de rutado de los
diseños en los recursos reconfigurables y favorece la
reconfiguración dinámica de dichos recursos, así como el consumo
del sistema.
La unidad reconfigurable no está provista de
operaciones de control, tales como saltos, llamadas a subrutinas,
etc. Su función es exclusivamente procesar datos. El procesador
escalar es el encargado de toda esta lógica de control, incluyendo
la carga de datos en la unidad reconfigurable, ponerla en
funcionamiento y el guardado de datos.
La figura 2 describe el algoritmo seguido por el
compilador para vectorizar los bucles de los algoritmos, es decir,
para convertir los bucles internos en operaciones óptimas de la
unidad vectorial reconfigurable. Una vez obtenida esta solución, se
aplica un recocido simulado para la obtención de implementaciones
alternativas. Sólo se almacenan aquellas implementaciones que sean
óptimos de Pareto en el espacio tridimensional formado por memoria
necesaria, eficiencia y consumo. Esta generación de
implementaciones alternativas puede hacerse también en tiempo de
ejecución y se transmiten al sistema empotrado, que puede descartar
alguna de las implementaciones que ya tenía para reducir el uso de
la memoria.
En el optimizador, cada bucle se divide en
fragmentos que puedan implementarse como una única instrucción
SIMD.
Cada bucle susceptible de ser transformado en
una operación SIMD se transforma a la forma normalizada y el cuerpo
del bucle se descompone en uno o más grafos dirigidos acíclicos
(DAG). La escritura de resultados se asigna a la última etapa y el
resto de los nodos se asigna con algoritmo ALAP (planificación tan
tarde como sea posible) a los diferentes contextos que quedan
libres, siempre teniendo en cuenta las restricciones de la
arquitectura.
Los movimientos posibles para el recocido
simulado que obtiene las implementaciones alternativas son: el
orden de ejecución de los fragmentos del bucle (esto se aplica
también a bucles externos), el intercambio de índices en bucles
anidados, movimientos en la correspondencia de las operaciones
sencillas en la unidad reconfigurable (siempre que se respeten las
dependencias), cambios en la implementación de operaciones
sencillas, reestructuración de los diagramas de flujo de datos del
cuerpo del bucle (de forma que los resultados intermedios que se
almacenan en el bloque de registros cambien).
La conmutación entre las diferentes
implementaciones de un bucle se produce en función del valor
mapeado en memoria de un generador de números aleatorios, que puede
ser hardware o software. El compilador inserta las solicitudes de
cambio, normalmente antes de cada operación SIMD.
Claims (5)
1. Dispositivo para la mejora de la seguridad de
microprocesadores en sistemas empotrados de tipo reconfigurable y
de bajo consumo para la ejecución de operaciones vectoriales en
procesadores empotrados caracterizado porque comprende, al
menos:
(a) una primera unidad vectorial reconfigurable
(1) diseñada como una ruta de datos segmentada con múltiples
contextos configurables independientemente, y que consta de tres
etapas:
- (i)
- una primera etapa de decodificación (101) configurada para la obtención de la información de la operación y los operandos involucrados en la ejecución y que, a su vez, comprende, al menos:
- -
- una unidad de control configurada para controlar la ejecución en función de la información específica de cada operación que almacena en una memoria interna (101a) el software de soporte de ejecución;
- -
- un bloque de registros de propósito general (101c) configurados para almacenar los datos que se van cargando de la memoria principal (104) y los resultados parciales de las operaciones de la primera unidad vectorial reconfigurable (1) en ejecución;
- (ii)
- una segunda etapa de ejecución (102) que a su vez comprende una pluralidad de unidades reconfigurables básicas conectadas en cascada; y
- (iii)
- una tercera etapa de salida configurada para llevar a cabo, al menos, dos operaciones:
- -
- una primera operación de preparación de la escritura de resultados intermedios al bloque de registros internos; y
- -
- una segunda operación de gestión de un buffer de salida para la escritura vectorial de resultados a la memoria principal (104);
(b) una segunda unidad de carga y almacenamiento
vectorial (2) integrada en la unidad de ejecución (3) de la ruta de
datos principal (100) configurada para desacoplar la extracción de
operandos de las operaciones vectoriales de la primera unidad
vectorial reconfigurable (1) de la operación normal de la ruta de
datos principal (100).
\vskip1.000000\baselineskip
2. Dispositivo de acuerdo con la reivindicación
1 donde el software de soporte de ejecución es una librería de bajo
nivel comprendiendo el código de inicialización.
3. Dispositivo de acuerdo con la reivindicación
1 donde el software de soporte de ejecución es un sistema operativo
de tiempo real.
4. Dispositivo de acuerdo con la reivindicación
1 donde la segunda etapa de ejecución (102) comprende cuatro
unidades reconfigurables básicas.
5. Dispositivo de acuerdo con la reivindicación
1 y 4 donde cada una de dichas unidades reconfigurables básicas
comprende, al menos, tres entradas de datos de 32 bits siendo estas
tres entradas: el resultado de cada unidad reconfigurable previa,
un nuevo dato del bloque de registro interno y el último resultado
calculado por esa dicha unidad reconfigurable básica; siendo además
dicho resultado de una operación en una unidad reconfigurable básica
almacenado en un registro, de forma que pueda ser usado por la
siguiente unidad reconfigurable básica en el siguiente ciclo de
reloj.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200900442A ES2334196B2 (es) | 2009-02-17 | 2009-02-17 | Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200900442A ES2334196B2 (es) | 2009-02-17 | 2009-02-17 | Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados |
Publications (2)
Publication Number | Publication Date |
---|---|
ES2334196A1 true ES2334196A1 (es) | 2010-03-05 |
ES2334196B2 ES2334196B2 (es) | 2011-02-09 |
Family
ID=41694824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES200900442A Active ES2334196B2 (es) | 2009-02-17 | 2009-02-17 | Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados |
Country Status (1)
Country | Link |
---|---|
ES (1) | ES2334196B2 (es) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050603A1 (en) * | 2002-08-07 | 2007-03-01 | Martin Vorbach | Data processing method and device |
US20080263323A1 (en) * | 2007-04-13 | 2008-10-23 | Mould Nick A | Reconfigurable Computing Architectures: Dynamic and Steering Vector Methods |
-
2009
- 2009-02-17 ES ES200900442A patent/ES2334196B2/es active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050603A1 (en) * | 2002-08-07 | 2007-03-01 | Martin Vorbach | Data processing method and device |
US20080263323A1 (en) * | 2007-04-13 | 2008-10-23 | Mould Nick A | Reconfigurable Computing Architectures: Dynamic and Steering Vector Methods |
Non-Patent Citations (8)
Title |
---|
ARMANDO ASTARLOA, "{}Reconfiguración dinámica de sistemas modulares multi-procesador en dispositivos SoPC"{}, Tesis doctoral Mayo 2005. Páginas 45 y 46. <URL: http://det.bi.ehu.es/~apert/datos/TESIS\_armando\_050512.pdf> * |
ARMANDO ASTARLOA, "Reconfiguración dinámica de sistemas modulares multi-procesador en dispositivos SoPC", Tesis doctoral Mayo 2005. Páginas 45 y 46. * |
HAUCK, FRY, HOSLER y KAO, "{}The Chimaera Reconfigurable Functional Unit"{}; Universidad de Northwestern. IEEE Symposium on FPGAs for Custom Computing Machines, 1997. * |
HAUCK, FRY, HOSLER y KAO, "The Chimaera Reconfigurable Functional Unit"; Universidad de Northwestern. IEEE Symposium on FPGAs for Custom Computing Machines, 1997. * |
LEE, SINGH, LU, BAGHERZADEH y KURDAHI, "{}Design and Implementation of the Morphosys Reconfigurable Computing Processor"{}; Universidad de california; Publicación Journal of VLSI Signal Processing Systems, páginas 147-164; Marzo 2000. * |
LEE, SINGH, LU, BAGHERZADEH y KURDAHI, "Design and Implementation of the Morphosys Reconfigurable Computing Processor"; Universidad de california; Publicación Journal of VLSI Signal Processing Systems, páginas 147-164; Marzo 2000. * |
WILTON, LEONG, LUK y QUINTON, "{}A Synthesizable Datapath-Oriented Embedded FPGA Fabric"{} - 20.02.2007; figura 1. * |
WILTON, LEONG, LUK y QUINTON, "A Synthesizable Datapath-Oriented Embedded FPGA Fabric" - 20.02.2007; figura 1. * |
Also Published As
Publication number | Publication date |
---|---|
ES2334196B2 (es) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2933675T3 (es) | Sistemas, métodos y aparatos para informática heterogénea | |
May et al. | Non-deterministic processors | |
Narasiman et al. | Improving GPU performance via large warps and two-level warp scheduling | |
US20160246602A1 (en) | Path selection based acceleration of conditionals in coarse grain reconfigurable arrays (cgras) | |
Fritzmann et al. | Towards reliable and secure post-quantum co-processors based on RISC-V | |
Karimi et al. | A timing side-channel attack on a mobile gpu | |
Zhao et al. | A lightweight isolation mechanism for secure branch predictors | |
Huang et al. | Managing dynamic reconfiguration overhead in systems-on-a-chip design using reconfigurable datapaths and optimized interconnection networks | |
Taram et al. | Mobilizing the micro-ops: Exploiting context sensitive decoding for security and energy efficiency | |
Sinharoy et al. | Advanced features in IBM POWER8 systems | |
Cong et al. | Optimization of interconnects between accelerators and shared memories in dark silicon | |
Cao et al. | Streamline ring oram accesses through spatial and temporal optimization | |
Aweke et al. | Øzone: Efficient execution with zero timing leakage for modern microarchitectures | |
Mert et al. | Medha: Microcoded hardware accelerator for computing on encrypted data | |
Hammond et al. | Evaluating the Marvell ThunderX2 server processor for HPC workloads | |
Gautschi et al. | SIR10US: A tightly coupled elliptic-curve cryptography co-processor for the OpenRISC | |
Seuschek et al. | Side-channel leakage models for RISC instruction set architectures from empirical data | |
Maene et al. | Atlas: Application confidentiality in compromised embedded systems | |
Armanuzzaman et al. | Byotee: Towards building your own trusted execution environments using fpga | |
ES2334196A1 (es) | Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados. | |
Rutzig et al. | A transparent and energy aware reconfigurable multiprocessor platform for simultaneous ILP and TLP exploitation | |
Chattopadhyay et al. | Designing high-throughput hardware accelerator for stream cipher HC-128 | |
US20230318802A1 (en) | A computing platform for preventing side channel attacks | |
Rawat et al. | Vector instruction set extensions for efficient computation of keccak | |
CN112906015B (zh) | 一种基于硬件标签的内存敏感数据加密保护系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EC2A | Search report published |
Date of ref document: 20100305 Kind code of ref document: A1 |
|
FG2A | Definitive protection |
Ref document number: 2334196 Country of ref document: ES Kind code of ref document: B2 Effective date: 20110209 |