• No se han encontrado resultados

Diseño de un criptosistema para redes de sensores inalámbricos WSN basado en MPSOC

N/A
N/A
Protected

Academic year: 2020

Share "Diseño de un criptosistema para redes de sensores inalámbricos WSN basado en MPSOC"

Copied!
92
0
0

Texto completo

(1)DISEÑO DE UN CRIPTOSISTEMA PARA REDES DE SENSORES INALAMBRICOS WSN BASADO EN MPSOC. EDUARDO ALBERTO DELGADILLO GOMEZ. Proyecto de grado Dr. Néstor Peña Traslaviña Asesor del proyecto Msc Mauricio Guerrero Hurtado Coasesor del proyecto. UINIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA DEPARTAMENTO DE INGENIERIA ELECTRICA Y ELECTRONICA BOGOTA D.C.,COLOMBIA 2008.

(2) A Dios por haberme dado la posibilidad de trabajar en este proyecto, a mis padres, Esposa e hijos quienes son la luz de mi vida..

(3) AGRADECIMIENTOS El autor desea expresar sus agradecimientos: A Dios, fuente de suprema sabiduría Al Dr. Néstor Peña Traslaviña ,director del grupo de redes de sensores inalámbricos WSN, por su apoyo durante el desarrollo del proyecto. Al Ingeniero Mauricio Guerrero Hurtado, por su apoyo y asesoría en todas las fases del proyecto. Al ingeniero Javier castaño, por sus valiosos aportes, durante la ejecución del proyecto. Al ingeniero Fabián Velásquez, por sus valiosos aportes durante la ejecución del proyecto. Al Dr. Julio López, profesor de UNICAMP por sus valiosos aportes. Al Ingeniero Germán Castillo, por sus valiosos aportes en todas las fases del proyecto..

(4) CONTENIDO CONTENIDO .................................................................................................................................................. 4 INTRODUCCION........................................................................................................................................... 5 1. DEFINICION DEL PROBLEMA ......................................................................................................... 7 1.1. SERVICIOS BÁSICOS EN CRIPTOGRAFÍA ............................................................................................ 8 1.2. CRIPTOGRAFÍA DE LLAVE PÚBLICA.................................................................................................. 9 1.3. PROBLEMA DEL LOGARITMO DISCRETO ......................................................................................... 10 1.3.1. Grupos ...................................................................................................................................... 10 1.3.2. Logaritmo Discreto Generalizado ............................................................................................ 11 1.3.3. Parámetros de Dominio en Curvas Elípticas ........................................................................... 11 1.3.4. Generación de Llaves ............................................................................................................... 11. 2. FUNDAMENTOS MATEMÁTICOS ................................................................................................. 12 2.1 CAMPOS FINITOS ................................................................................................................................ 12 2.1.1 Aritmética Modular .................................................................................................................. 13 2.1.2 Campos Finitos Primos ............................................................................................................ 13 2.1.3 Campos Finitos Binarios .......................................................................................................... 13 2.2 CURVAS ELÍPTICAS ............................................................................................................................. 15 2.2.1 Curvas Elípticas sobre campos finitos...................................................................................... 15 2.3 LEY DE GRUPO .................................................................................................................................... 16 2.4 REPRESENTACIÓN DE PUNTOS ............................................................................................................ 18 2.4.1 Coordenadas Proyectivas......................................................................................................... 18 2.4.2 Coordenadas de López-Dahab ................................................................................................. 19 2.5 MULTIPLICACIÓN ESCALAR ELÍPTICA ................................................................................................. 20 2.6 REPRESENTACIÓN DEL FACTOR ESCALAR ........................................................................................... 21 2.6.1 Representación Binaria ............................................................................................................ 21. 3. DISEÑO ESL......................................................................................................................................... 21 3.1 INTRODUCCIÓN ................................................................................................................................... 21 3.2 DISEÑO DE SISTEMAS .......................................................................................................................... 22 3.3 DISEÑO ESL (ELECTRONIC SYSTEM LEVEL) ...................................................................................... 23 3.4 SYSTEMC............................................................................................................................................ 24 3.4.1 Proceso de Diseño .................................................................................................................... 25 3.5 SOC’S ................................................................................................................................................. 27 3.6 MPSOC’S ........................................................................................................................................... 29 3.6.1 Tipos de MPSOC’s ................................................................................................................... 30 3.6.2 Sistemas multiprocesador......................................................................................................... 30 3.6.3 Arquitecturas MPSoC............................................................................................................... 30 3.6.4 Software.................................................................................................................................... 32 3.6.5 Consumo ................................................................................................................................... 33. 4. ARQUITECTURA MPSOC SELECCIONADA .............................................................................. 33 4.1 MPSOC PROPELLER ........................................................................................................................... 33 4.1.1 Proceso de encendido o reset ................................................................................................... 34 4.1.2 Proceso de Ejecución ............................................................................................................... 35 4.1.3 Proceso de Apagado................................................................................................................. 35 4.2 ARQUITECTURA INTERNA ................................................................................................................... 35 4.2.1 Descripción de los Procesadores ............................................................................................. 36 4.2.2 Procesador Maestro ................................................................................................................. 38 4.2.3 Memoria ................................................................................................................................... 39 4.2.4 Lenguaje SPIN.......................................................................................................................... 40 4.2.5 Procesamiento Paralelo ........................................................................................................... 41.

(5) 5. DISEÑO DEL CRIPTOSISTEMA...................................................................................................... 43 5.1 FLUJO DE DISEÑO .............................................................................................................................. 43 5.1.1 Requerimientos ......................................................................................................................... 43 5.1.2 Especificación Funcional ......................................................................................................... 44 5.1.3 Desarrollo de la Especificación Funcional .............................................................................. 44 5.2 DESARROLLO ARITMÉTICA DE CAMPOS FINITOS ................................................................................ 46. GF(2163) ................................................................................................................ 47. 5.2.1. Suma en. 5.2.2 5.2.3. Multiplicador en .................................................................................................. 47 Inversión ................................................................................................................................... 51. GF(2163). GF(2163). 5.2.4 Generador de Pseudoaleatorios en ..................................................................... 54 5.3 ARITMÉTICA DE CURVAS ELÍPTICA ..................................................................................................... 55 5.3.1 Suma de puntos (Madd) ............................................................................................................ 58 5.3.2 Doblado de un punto (Mdouble)............................................................................................... 59 5.4 DISEÑO DEL SCHEDULING Y RTOS ..................................................................................................... 60 5.10 COMUNICACIÓN DE DATOS Y CONTROL.............................................................................................. 76 6. RESULTADOS ..................................................................................................................................... 77 6.1. 7. TIEMPO Y ESPACIO...................................................................................................................... 77 CONCLUSIONES Y TRABAJO FUTURO ..................................................................................... 81. REFERENCIAS ............................................................................................................................................ 83 ANEXOS ........................................................................................................................................................ 88.

(6) Índice de Figuras. FIGURA 1.2:. FIGURA 1.1: MODELO BÁSICO DE COMUNICACIÓN …………………………………………………………………………………… ……………….5 MODELO BÁSICO DE LA LLAVE PÚBLICA ............................................................................................5. FIGURA 2.2: CURVAS ELÍPTICAS DEFINIDAS SOBRE ...........................................................................................15 FIGURA 2.3: ADICIÓN Y DOBLADO DE PUNTOS GEOMÉTRICO. ...............................................................................17 FIGURA 3.2. FLUJO DE DISEÑO DE UN SISTEMA....................................................................................................23 FIGURA 3.3. DISEÑO ELECTRÓNICO A NIVEL DE SISTEMA ......................................................................................24 FIGURA 3.4.1. CDFG EJEMPLO .......................................................................................................................26 FIGURA 3.5.SOC DIGITAL ...................................................................................................................................27 FIGURA 3.5.1 SOC DIGITAL ...............................................................................................................................27 FIGURA 3.5.2. SOC DIGITAL ..............................................................................................................................28 FIGURA 3.5.3. CSOC ARQUITECTURA .................................................................................................................28 FIGURA 3.5.4. CSOC CON ELEMENTOS DISTRIBUIDOS .........................................................................................29 FIGURA 3.5.5. SOC DEDICADO A COMUNICACIONES ............................................................................................29 FIGURA 3.6.2. MULTIPROCESAMIENTO MEMORIA COMPARTIDA ............................................................................31 FIGURA 3.6.3. ARQUIETECTURA DE MEMORIA COMPARTIDA Y QUEUES ................................................................32 FIGURA 3.6.4 METODOLOGÍA DE DISEÑO MPSOC’S............................................................................................33 FIGURA 4.2. ARQUITECTURA DEL PROPELLER DE PARALLAX ................................................................................36 FIGURA 4.2.1. ARQUITECTURA DEL PROCESADOR ................................................................................................37 FIGURA 4.2.1.1. REGISTROS DE PROPÓSITO GENERAL ..........................................................................................38 FIGURA 4.2.2. INTERACCIÓN ENTRE PROCESADORES MAESTRO – ESCLAVO ............................................................38 FIGURA 4.2.3. MAPA DE MEMORIA ROM PROPELLER ..........................................................................................39 FIGURA 4.2.4. DESARROLLO DE APLICACIONES PROPELLER ..................................................................................40 FIGURA 4.2.4.1 DESCARGA DE APLICACIÓN ALA RAM..........................................................................................40 FIGURA 4.2.5 .DOS COG’S EN EJECUCIÓN..........................................................................................................41 FIGURA 5.1.3. NIVELES JERÁRQUICOS EN DESARROLLO DE CRIPTOGRAFÍA ECC...................................................45 FIGURA 5.2.1. SIMBOLOGIA OPERACIONES EN EL CAMPO ......................................................................47 FIGURA 5.3.2.2 MULTIPLICADOR EN EL CAMPO. F2m ..........................................................................................48. FIGURA 5.2.3.4. ELEVADOR AL CUADRADO ..........................................................................................................54 FIGURA 5.3.3 LFSR FIBONACCI..........................................................................................................................55 FIGURA 5.9.1. ARQUITECTURA TOTAL DEL SISTEMA ..............................................................................................76.

(7) Índice de Tablas TABLA 4.1. CARACTERÍSTICAS DEL PROCESADOR PROPELLER ..............................................................................34 TABLA 5.1.3: COMPARACIÓN DE IMPLEMENTACIONES EN WSN............................................................................45 TABLA 5.2.3.1: EJEMPLO EXPONENCIACIÓN (LSB-FIRST) ....................................................................................53 TABLA 5.3.4.1: COSTO COMPUTACIONAL ARITMÉTICA ELÍPTICA (SUMA) ...............................................................56 TABLA 6.1.1. RESULTADOS OPERACIONES EN EL CAMPO ......................................................................................77 TABLA 6.1.2. RESULTADOS OPERACIONES ARITMÉTICA DE CURVAS ELÍPTICAS ......................................................78 TABLA 6.1.3 TABLA DE CONSUMO DE ENERGIA ...................................................................................................79 TABLA 6.1.3 IMPLEMENTACIONES EN EL CAMPO. ...............................................................................80.

(8) INTRODUCCION Las redes de sensores inalámbricos están compuestas por grupos de pequeños dispositivos (nodos sensores) que tienen como fin interactuar para lograr un objetivo común. Su tarea principal es monitorear una variable física (aire, humedad, luz, etc.), o también pueden enviar o recibir mensajes de avisos, o recibir mensajes de consulta de alguna estación base, que puede ser un dispositivo con mayores recursos que los nodos sensores, y sirve como enlace entre los nodos y la aplicación. Este tipo de redes es vulnerable en la parte de seguridad, por ser un campo todavía en desarrollo con una tecnología muy nueva, que hoy por hoy está siendo muy demandada en diferentes campos de aplicación, sin importar la variada información que allí se maneje. Cabe resaltar que uno de los retos planteados por los expertos en el campo es básicamente asegurar todos los niveles [1] incluyendo los datos, protocolos y tipos de servicio. Labor nada sencilla teniendo en cuenta que las plataformas desarrolladas son bastante limitadas en sus recursos. Como ejemplo de nodos en redes de sensores. Sobresalen dos básicamente, el nodo Mica [2] y el nodo TelosB [3], cada uno de los cuales está compuesto por procesadores de baja gama y muy poca memoria RAM Y ROM.1 En este documento se desarrolla una breve introducción a la criptografía por curvas elípticas, se plantea una metodología de trabajo basada en ESL, y se realiza una implementación en un sistema MPSOC2 como desarrollo de prototipado para sistemas multicore, teniendo en cuenta que el núcleo fundamental de todo el problema es la multiplicación escalar. Los motivos de la vulnerabilidad se deben ante todo a restricciones hardware y software existentes en los nodos que restringen la inclusión de mecanismos de seguridad. Otro factor importante es de hecho la comunicación inalámbrica utilizada, debido al carácter distribuido y las posibilidades de fallo en los nodos que repercuten en el funcionamiento de todo el sistema. En seguridad de redes en general la criptografía ha sido ampliamente utilizada, tipos de criptografía de claves simétricas y de clave pública, han sido utilizadas en redes convencionales y tienen sus extensiones en las redes de sensores inalámbricos,. 1. RAM (Random access memory) ROM (Read Only Memory) 2 MPSOC Multiprocessor system on chip. 5.

(9) La Criptografía de Curvas Elípticas (ECC) [4]. Se Fundamenta en conceptos algebraicos relacionados con curvas elípticas cuya estructura se puede 2 3 Fp F(2m ) y = x + ax + b representar con la ecuación sobre un campo finito o .. Dados a y c, la seguridad de este tipo de criptografía, está en el cálculo que se debe realizar de la ecuación ab = c, y que se conoce como el problema del logaritmo discreto. El avance tecnológico que ha impactado a la comunidad permitiendo la implementación de algoritmos de criptografía basados en problemas como la factorización entera y el problema del logaritmo discreto, de una forma eficiente con el segundo problema se interactúa en el desarrollo de este proyecto, la criptografía de curvas elípticas desarrollada por Koblitz y Miller en 1985 , ha tomado adeptos debido a la capacidad de proveer la misma funcionalidad comparada contra esquemas criptográficos como el RSA, los niveles de seguridad son bastantes interesantes, una llave de 160 bits en curvas elípticas equivale a una llave de 1024 bits en RSA.[5] La criptografía de curvas elípticas aparece en el campo WSN un poco más tarde que en otros campos aunque la mayoría de implementaciones se encuentra sobre los nodos antes mencionados y librerías que integran en el entorno, la mayoría de implementaciones que puede encontrarse consumen gran cantidad de tiempo y energía, de que nace el interés por presentar una arquitectura basada en un MPSOC que presente un buen desempeño en tiempo de computo y en consumo de energía. En este trabajo se presenta un diseño MPSOC basado inicialmente en los procesadores de la firma Tensilica[6], pero la implementación final queda en un pequeño pero poderoso sistema llamado propeller de la firma Parallax. Aunque las plataformas hardware presentan un excelente desempeño debido a que la aritmética en el campo se implementa de manera eficiente y la relación que tiene la multiplicación escalar con la aritmética modular un excelente plataforma podría ser hardware o un asic, pero la idea inicial se centro en trabajar multiprocesamiento, donde el campo de WSN no muestra todavía publicaciones en este tipo de plataformas, también se tuvo en cuenta el costo a nivel de consumo de potencia. Los objetivos del proyecto son los siguientes: • • • • • •. Diseñar un sistema para criptografía de curvas elípticas basado en una plataforma MPSOC. Diseñar una arquitectura multiprocesador que resuelva la aritmética modular. Diseñar una arquitectura para operaciones con aritmética elíptica. Superar el desempeño en WSN en el área de criptografía de curvas elípticas. Realizar un cifrado y descifrado tipo “El Gamal” Poner a punto lo anterior con una implementación y además realizar una validación.. 6.

(10) DEFINICION DEL PROBLEMA. 1. De acuerdo a lo expuesto en la introducción se hace necesario incursionar en campos como el de MPSOC, el cual ha tenido un auge inesperado en los últimos cinco años, y el alcance del proyecto pretende abrir una brecha tecnológica en el uso de plataformas como la empleada en el proyecto no solo para realizar criptografía sino transcender su uso a un sin número de aplicaciones posibles, en el área de WSN. El tipo de criptografía como ya se ha mencionado es curvas elípticas, en el campo WSN3 como se menciono anteriormente esta en vía de desarrollo pero uno de los retos en general es optimizar operaciones en el campo y aceleramiento de la multiplicación escalar, tomando como punto de referencia que las aplicaciones realizadas y reportadas en WSN la gran mayoría son software. Teniendo en cuenta el anterior, en este proyecto se realizan las tareas como se indica a continuación. • • • • • •. Plantear una metodología tipo ESL4 para la solución del problema concreto, en este caso criptografía de curvas elípticas. Diseño de una arquitectura para la aritmética modular Diseño de una arquitectura para la aritmética elíptica Selección de un modelo de computo Realizar mediciones espacio – temporales de las arquitecturas antes mencionadas. Diseñar un protocolo de pruebas con todo lo anterior.. El proceso de optimización debe tener en cuenta los siguientes aspectos: • •. Acelerar las operaciones de aritmética modular y por ende las de aritmética elíptica, obviamente dentro del contexto WSN. Reducir el consumo de energía consumida al realizar la operación de cifrado y descifrado.. Vale la pena comentar que aunque existen plataformas hardware con desempeño muy eficiente, el desarrollo con plataformas MPSOC debe tomarse como el nuevo paradigma en las aéreas de desarrollo en el campo, buscando en el futuro nuevas aplicaciones y explorar nuevos campos de aplicación del área en cuestión WSN.. 3 4. WSN wireless sensors netwowrks ESL Electronic System Level. 7.

(11) 1.1.. Servicios Básicos en Criptografía. La criptografía engloba un amplio conjunto de diseños y análisis de técnicas matemáticas para lograr una comunicación segura. Y garantiza los cinco servicios más reconocidos, confidencialidad, autenticidad, integridad, no repudio en la Figura 1.1 se observa un esquema básico.. A. Canal Inseguro. B. E FIGURA 1.1: MODELO BÁSICO DE COMUNICACIÓN. En la Figura 1.1 A y B se comunican por un canal inseguro. Los servicios que provee la criptografía son confidencialidad, integridad de información, autenticación de origen de datos y de los participantes y no repudio. Pueden ser definidos como sigue a continuación: 1. Confidencialidad: Mantener el contenido de la comunicación secreta para quien no esté autorizado. 2. Integridad de Información: Asegurar que la información en la comunicación no será alterada por usuarios no autorizados. 3. Autenticación del origen de los datos: Poder corroborar la fuente de origen de los datos. 4. Autenticación de usuarios: Poder corroborar la identidad de los usuarios autorizados en la comunicación. 5. No Repudio: Garantizar que el canal de comunicación es seguro y la comunicación entre usuarios se garantiza. El mensaje que intercambian los usuarios A y B es llamado texto en claro. Codificar el contenido del mensaje de tal forma que el contenido, no pueda ser atacado por un usuario externo se le llama cifrado. El proceso de recuperar el texto plano a partir del mensaje cifrado, es llamado descifrado. Los procesos de cifrado y descifrado hacen uso de un elemento llamado llave. La única forma de recuperar el texto plano a partir de la cifra es a través del conocimiento de la llave correcta.. 8.

(12) 1.2.. Criptografía de Llave Pública. La criptografía se puede categorizar en dos clases secreta y publica [8], en la primera el núcleo son operaciones básicas como rotaciones, operaciones xor, permutaciones, generación de secuencias pseudoaleatorias , en la criptografía de clave publica el problema radica en la dificultad para resolver algunos problemas matemáticos [9]. En el caso de la criptografía de llave publica la llave con que se cifra el mensaje no es la misma que con la que se descifra. Las llaves son llamadas pública y privada respectivamente. Dichas llaves se seleccionan de tal forma que el problema que obtener la llave privada a partir la llave pública sea equivalente a un problema computacionalmente imposible. Los problemas matemáticos más utilizados para en criptografía de clave pública son: 1. El problema de la factorización de enteros, se usa en RSA para cifrar y firmar. 2. El problema del logaritmo discreto utilizado en el El Gamal . 3. El problema del logaritmo discreto en curva elípticas. Los algoritmos más usados bajo este esquema son RSA, DSA, El Gamal y Criptografía de Curvas Elípticas (Elliptic Curve Cryptography, ECC) [10]. Para que A establezca una comunicación segura con B es necesario que conozca la llave pública de B, eB, la cual es de dominio público. En cambio B es el único usuario que posee la llave privada correspondiente dB. Si A quiere enviar un mensaje confidencial a B entonces usa la función de cifrado ENC en el mensaje m para obtener la cifra c = ENCeB(m). La única forma de recuperar el mensaje original es conociendo la correspondiente llave privada y usando la función de descifrado m = DECdB(c).. dB. eB. m=Texto Plano. ENC. Cifra de m. DEC. FIGURA 1.2: MODELO BÁSICO DE LA LLAVE PÚBLICA. 9. m=Texto Plano.

(13) 1.3.. Problema del Logaritmo Discreto. El problema del logaritmo discreto puede ser descrito en términos de un grupo cíclico finito. Se hace indispensable hacer uso de la teoría de números y el algebra abstracta, como se desarrolla. 1.3.1. Grupos Un grupo abeliano (G, *) consiste de un conjunto G con una operación binaria * : G×G ← G que satisface las propiedades de conmutación, asociatividad, elemento identidad, e inverso. La operación de grupo es llamada adición (+) o multiplicación (·). En los grupos aditivos el elemento identidad se nota con un 0 y el inverso de α se nota con −α. A diferencia en multiplicativos , el elemento identidad es el 1 y el inverso multiplicativo del elemento α se nota con α−1. El grupo es finito si el conjunto G es finito. La cantidad de elementos en G es llamado el orden de G. Al definir las operaciones se hace teniendo en cuenta el conjunto de elementos que componen al grupo, sea el conjunto Fp = {0, 1, 2, . . . , p − 1} de los enteros operación + como la adición de enteros módulo p. cumpliendo con lo mencionado en el apartado anterior se tiene un modulo para la adicion y otro para la multiplicación elementos fundamentales en el campo. Sea G un grupo multiplicativo de orden n y g є G. Si t es el entero positivo más pequeño que cumple que gt = 1, t y se le llama orden del elemento g; t existe siempre y, es un divisor de n. El conjunto generado por las potencias de t, es un grupo bajo la misma operación que G y es llamado subgrupo cíclico de G generado por g. Las mismas definiciones pueden ser aplicadas a un grupo aditivo de manera análoga. Si definimos tg como la adición entre t copias de g, entonces decimos que el orden t de un elemento g є G es el elemento más pequeño que cumple que tg = 0 y es el subgrupo cíclico de G generado por g. Finalmente si existe un elemento g є G de orden n, entonces G es llamado un grupo cíclico y g es llamado generador de G.. 10.

(14) 1.3.2. Logaritmo Discreto Generalizado Una vez definido una grupo cíclico (G, ·) sobre un operador · de orden n con un generador g, se puede establecer un esquema de llave pública. Los parámetros g y n describen el grupo y la generación de sus elementos y son llamados parámetros de dominio. La llave pública es escogida al azar entre los n elementos pertenecientes al conjunto G potencialmente generados por g, ]. La llave privada y es generada como el -ésimo elemento generado por g, se El problema de determinar la llave privada y a partir de la llave pública conoce como el problema del logaritmo discreto. Cualquier grupo cíclico del mismo orden , son básicamente los mismos, diferenciándose por la representación de sus elementos. La elección de la representación de estos elementos puede llevar a mejoras en recursos de velocidad y/o memoria en algoritmos aplicados en el cálculo de su aritmética y por lo tanto en la solución del problema del logaritmo discreto. Los grupos más comúnmente utilizados para la definición de esquemas de firma digital son los subgrupos cíclicos multiplicativos sobre campos finitos, y los subgrupos cíclicos aditivos sobre curvas elípticas [11].. 1.3.3. Parámetros de Dominio en Curvas Elípticas Una curva elíptica E se describe por un conjunto de parámetros, de la misma manera, el desarrollo de un esquema de firma digital basado en el problema del logaritmo discreto necesita la descripción de un subgrupo cíclico sobre el cual generar elementos. La elección de los parámetros de dominio es fundamental para ofrecer un nivel de seguridad óptimo.. 1.3.4. Generación de Llaves Sea con orden , donde E es una curva elíptica. Entonces es posible generar un subgrupo cíclico [12] El campo q, la ecuación de la curva E, el punto P y el orden de son parámetros de dominio público. La llave privada es un entero seleccionado al azar entre el y la llave pública correspondiente es el punto . intervalo cerrado a partir de los puntos es el problema del El problema de determinar logaritmo discreto en curvas elípticas [12].. 11.

(15) Procedimiento para la generación de llaves con curvas elípticas Entrada: Parámetros de dominio público de la curva y llave privada . Salida: Llave pública 1. Seleccionar d al azar del intervalo cerrado 1, 2. Calcular Q = kP 3. Regresar (Q, d ) 2. Fundamentos Matemáticos. 2.1. Campos Finitos. Un grupo es un objeto matemático abstracto, posee un conjunto de elementos y se pueden realizar las siguientes operaciones. Un grupo es llamado abeliano si cumple las siguientes condiciones: 1. 2. 3. 4. 5.. Cerradura Asociatividad Conmutatividad: Elemento Neutro: Elementos Inversos. Un anillo está formado por un conjunto, con dos operaciones definidas en sus elementos, qué básicamente son adición y multiplicación. Una estructura es llamada un campo si F es un anillo en el cuál la multiplicación es conmutativa y cada elemento, excepto el 0, tiene un inverso multiplicativo. La substracción de un elemento está definida en términos de la adición: Un campo se dice finito si tiene un número finito de elementos. Los campos finitos más comúnmente usados en criptografía son los campos primos, los campos binarios y los campos óptimos extendidos. El orden del campo finito es el número de elementos en el campo, y se puede definir matemáticamente de la siguiente forma:. 12.

(16) 2.1.1 Aritmética Modular La aritmética de residuos módulo n es llamada aritmética modular, las operaciones básicas son la suma y productos modulares pueden definirse como:. 2.1.2 Campos Finitos Primos módulo n, para cualquier El conjunto de todos los residuos entero positivo , y la adición modular conforman un grupo abeliano. Este grupo es nombrado enteros módulo n y se denota . Un grupo puede ser llamado cíclico finito si existe un elemento g de este grupo el cual puede expresar cualquier otro elemento en G a través de sumas consecutivas de . Sea un número primo. El conjunto de los enteros módulo junto con las operaciones de adición y la multiplicación es módulo , conforman un campo finito de orden . El campo se denota . Cualquier entero a puede ser mapeado dentro del conjunto el módulo de se define como el residuo obtenido al dividir . A esta operación se le llama reducción módulo . 2.1.3 Campos Finitos Binarios Los campos finitos de orden 2m llamados campos binarios. La aritmética sobre campos binarios tiene aplicaciones en criptografía. Los elementos de se representan como polinomios y se hace uso de las aritmrtica polinomial para el manejo de estos.. Existe. se define con grado igual. .. Se puede definir un campo de 2m elementos para cualquier entero positivo . Los conjunto de elementos son el conjunto de polinomios residuo m obtenidos a partir de un polinomio irreducible ) de grado m.. El cual tiene 2m elementos.. 13.

(17) La suma y adición se definen módulo La leyes asociativa, conmutativa y distributiva hacen parte de las operaciones en aritmética entera y polinomial. El conjunto junto con la adición módulo conforman un grupo abeliano. Los elementos diferentes de cero de forman un grupo abeliano bajo la multiplicación El conjunto de residuos generados por , además de las operaciones de adición y multiplicación módulo ) forman un campo finito el cual se denota como ) que se refiere se a los campos de Galois. Cualquier entero positivo existe un polinomio irreducible de grado . Los coeficientes del polinomio se pueden tratar como una secuencia de bits y su tratamiento digital se hace más sencillo. Como ejemplo se puede ver lo siguiente.. Las operaciones en el campo se pueden definir de la siguiente forma: Cuerpo Finito • •. abeliano (0) abeliano (1). • Para todo •. 14.

(18) 2.2. Curvas Elípticas. La criptografía de curvas elípticas se basa en las operaciones existentes en grupos abelianos , existen dos posibilidades que el campo finito se binario o primo, en muchos casos la selección depende de la plataforma bien sea hardware o software. La aplicación de operaciones a un conjunto de puntos finito, de una clasificación en especial, para el caso en cuestión son las curvas elípticas.. 2.2.1 Curvas Elípticas sobre campos finitos Una curva elíptica Weirstrass:. sobre un campo. se puede definir con la ecuación de. FIGURA 2.2: CURVAS ELÍPTICAS DEFINIDAS SOBRE. es el discriminante de. 15. y se define como:.

(19) Las curvas de mayor interés para el presente trabajo son aquellas definidas sobre campos binarios y no-supersingulares. Las curvas elípticas pueden ser clasificadas de acuerdo a la característica del campo base: 1. • La curva se puede definir como:. o El discriminante 2. o La curva se puede definir como: El discriminante. 2.3. Ley de Grupo. El conjunto de puntos que pertenecen a la curva elíptica, en este caso no supersingular se conoce como orden del grupo se puede notar cómo E (k) Cumpliendo con las propiedades de campos finitos, es posible crear grupos abelianos partiendo de la definición de adición entre puntos que cumplan con todas las leyes para el campo finito La adición se puede definir geométricamente sobre los números reales. Sean dos puntos sobre distintos entre sí , El punto correspondiente a la suma entre se puede obtener de la siguiente forma se traza una línea que intercepte los puntos y a continuación se hace la proyección y a este punto se le puede atribuir el valor de la suma de dos puntos sobre una curva elíptica, como lo indica la figura 3.23(a). El doblado de un punto se puede ver como la adición de un punto con el mismo. Su representación geométrica puede ser obtenida a partir de la adición. Siendo el mismo punto, la secante se convierte en la tangente a la curva E sobre el punto P.. 16.

(20) FIGURA 2.3: ADICIÓN Y DOBLADO DE PUNTOS GEOMÉTRICO.. La tangente t interseca a la curva en un segundo punto definido como . Será el reflejo de sobre el eje . El proceso se muestra en la Figura 2.3(b). eje .Un grupo abeliano aditivo sobre el conjunto de puntos de una curva elíptica , cuya ecuación se indica a continuación:. Y campo finito binario base 1. Identidad: 2. Inverso Aditivo: Sea punto . 3. Adición. se define de la siguiente forma: . se denota por entre. El y es conocido como el puntos: donde. Entonces. se obtiene:. donde 4. Doblado de un punto: Sea Definimos. , donde como:. 17. Sea ..

(21) donde. 2.4. Representación de Puntos. Las dos operaciones básicas en aritmética de curvas elípticas son suma y doblado de puntos, cuando se da la representación de un punto es necesario dar en forma de una coordenada el resultado de las operaciones y el soporte para estas operaciones esta en las operaciones en el campo finito multiplicaciones e inversiones, en el primer tipo de coordenadas afines el costo computacional es bastante alto por lo que se busca otra opción la cual se describe a continuación. La otra forma de lograr un mejor desempeño es trabajar con coordenadas proyectivas es una forma equivalente de realizar el manejo, en este tipo de coordenadas se usan tres coordenadas en vez de dos y cada punto en coordenadas afines tiene su equivalente en proyectivas, además el costo computacional se reduce bastante. En el caso de estas coordenadas la reducción en costo computacional esta en las inversiones ya que solamente se reduce en muchos casos a una sola.. 2.4.1 Coordenadas Proyectivas Sean. enteros positivos sobre un campo. equivalencia en el conjunto. Es posible definir una clase de. de la siguiente forma.. La equivalencia en el espacio vectorial, puede expresarse de la siguiente forma y a esto se le denomina una clase: .. Se llama punto proyectivo, que representa a dicha clase, o sea que, cualquier punto dentro de la clase es un punto representativo.. 18.

(22) Se puede decir que, si , clase de equivalencia (X: Y: Z).. es un punto representativo de la. Se define el conjunto de todos los puntos proyectivos, para cada posible en el campo como se obtiene una y el conjunto de puntos afines: correspondencia uno-a uno entre el conjunto. Cada punto en sistema de coordenadas afines, puede ser mapeado con el conjunto definido por una clase de equivalencia en particular. El conjunto de puntos pertenecientes a es llamado la línea al infinito, porque esta clase no corresponde con ningún elemento en el conjunto de puntos afines. La ecuación de Weirstrass para la curva elíptica coordenadas proyectivas al reemplazando. por. puede ser definida en y. .. Los valores de las constantes determinarán las características de la aritmética de curvas elípticas y los algoritmos de adición que deben emplearse usando este tipo de coordenadas... 2.4.2 Coordenadas de López-Dahab El sistemas de coordenadas proyectivas más usadas son las estándar, donde , las jacobianas, con y las coordenadas proyectivas de López-Dahab. Estas últimas presentan algoritmos para calcular la suma entre un punto en coordenadas afines y otro en coordenada proyectivas con tan solo 8 multiplicaciones. Al definir la suma entre coordenadas mixtas en pocas operaciones de campo hace este sistema ideal para la implementación en el multiprocesador López y Dahab proponen un representación en puntos proyectivos para puntos sobre curvas elípticas donde . El punto proyectivo. 19.

(23) corresponde al punto afín , y finalmente, el punto negativo de Las fórmulas para calcular la suma. y el punto 1 corresponde a. son:. La ganancia de este método en el uso de la inversión modular ya que solo se necesita realizar una vez cuando se retorna al sistema de coordenadas afines además se ultra bajo consumo en potencia.. 2.5. Multiplicación Escalar Elíptica. El corazón de la criptografía por curvas elípticas es la multiplicación escalar elíptica, operación análoga a la exponenciación en grupos multiplicativos. Dado un entero y un punto es el resultado de sumar P consigo mismo. , la multiplicación escalar elíptica veces.. Cada sistema criptográfico se basa en un problema matemático difícil, improbable de resolver por medios computacionales en un tiempo razonable. El problema del logaritmo discreto es la base para la seguridad de muchos criptosistemas, incluidos los criptosistemas de curvas elípticas. Más específicamente la seguridad de curvas elípticas se basa en el problema del logaritmo discreto en curvas elípticas (ECDLP por sus siglas en inglés Elliptic Curve Discrete Logarithm Problem). Las operaciones de suma y doblado de puntos pueden ser usadas para obtener la suma de cualquier número de copias de un punto El cálculo del punto es llamado la multiplicación escalar de un punto.. 20.

(24) El ECDLP está basado en la dificultad de obtener el escalar puntos .. 2.6. a partir de los. Representación del Factor Escalar. La gran mayoría de algoritmos propuestos para calcular el producto forma eficiente está basado en la representación polinomial de Horner:. de una. . Donde el escalar es representado en forma polinómica y finalmente calculado el producto como una secuencia de Horner. La forma clásica de representación polinomial de un coeficiente es su representación binaria 2.6.1 Representación Binaria El método más simple y antiguo para calcular. representación binaria de . Si puede ser calculado como:. donde cada. Este método requiere doblados y Hamming (cantidad de coeficientes. 3. DISEÑO ESL. 3.1. Introducción. está basado en la. , entonces. sumas, donde es el peso ) de la representación binaria de. En la evolución electrónica y lo propuesto por Moore en crecimiento a nivel de escala de integración se plantea hoy un nuevo reto a nivel de metodologías de diseño y más concretamente con los SOC’s (system on chip) [14], dispositivos donde pueden residir CPU’s, Memorias, Mems, componentes análogos, RF, en aplicaciones diversas como video, multimedia, redes entre otros. Un plan estratégico desarrollado por los asiáticos buscando ser los número uno en MPSOC’s dentro de una década, hace pensar que un país como el nuestro se. 21.

(25) debe tener un plan, capacitando una nueva generación de ingenieros y buscando una relación universidad empresa.. 3.2. Diseño de sistemas. En el diseño de un sistema se inicia con la funcionalidad del sistema, se piensa en un sistema como la colección de varios subsistemas (sistemas embebidos). Además del modelamiento necesario para ensamblar todos los componentes ya que debido a su carácter heterogéneo demanda nuevas técnicas de modelamiento, lo que implica explorar nuevos lenguajes para especificación en donde interviene el carácter de la especificación a realizar; sincrónico, asincrónico, flujo de datos o algorítmico [15] En el diseño de un sistema se tienen las siguientes fases: Modelamiento • Descripción a nivel de sistema • Descripción a nivel de comportamiento Validación (verificación) • Verificación • Co-simulación • Emulación Estimación del Desempeño Mapeo y particionamiento • Entrada especificación funcional • Salida Arquitecturas HW/SW • Mecanismos de interconexión • Funciones optimizando costo,tiempo,area,comunicación • Síntesis Hardware en los diferentes niveles de abstracción. • Síntesis Software algoritmos simples, concurrentes • Síntesis de la interfaz a nivel de buses, mecanismos de comunicación En la grafica [16] se muestra el flujo de diseño para un sistema, la parte de codiseño está implícita en el diagrama.. System. Compil. System. Validatio. Partitionning and. Performace. Partitioned. Evaluati. SW. Interface22. Hw.

(26) FIGURA 3.2. FLUJO DE DISEÑO DE UN SISTEMA.5. 3.3. Diseño ESL (Electronic System Level). El nivel de complejidad en los algoritmos requiere el uso de lenguajes de alto nivel como el medio más eficaz para la descripción de sistemas, la flexibilidad y cambio en los requerimientos en un mercado en expansión, exige nuevas metodologías a niveles de integración que van desde las 1.5M compuertas, solicitando desarrollos rápidos de nuevas tecnologías , donde se requieren ingenieros especializados en diseño de hardware y un error en el diseño puede tener como costo la oportunidad de mercado. Todos los problemas que mencionaron anteriormente se relacionan con las ciencias de lo complejo y el manejo que hay desde los niveles de abstracción para dar solución, a medida que se ha evolucionado ejemplo esquemático a HDL, assembler, HLL(High level Language), el diseño de sistemas ha tomado un carácter netamente a nivel de sistema [17], en donde lenguajes como C,C++ y el codiseño HW/SW, las IP y el concepto de reuso son parte del flujo de una herramienta, en la figura[3.3], se muestra el flujo general de diseño en un SOC.. Requiremen ts. Algorithm Developmen. System Level Design. Preexisting Software. 5. Emdedded Software Developme. Hardware/ Software/ Coverificati. Hardware Developme nt. Tomado de www.celoxica.com. System Integration / Implementation. 23. Preexisting Hardware.

(27) FIGURA 3.3. DISEÑO ELECTRÓNICO A NIVEL DE SISTEMA6. Si se une la brecha existente entre HW/SW, se da un paso hacia el diseño de sistemas donde conviven las dos cosas, en la mayoría de soluciones al especificar un sistema se expresa como algoritmo de software y hoy los lenguajes más utilizados son C/C++ , se facilita en un tiempo más corto la verificación de todo el sistema, se reducen los riesgos en el diseño, se hace reuso(IP’), se utilizan las técnicas de desarrollo software, se simplifica además el particionamiento HW/SW, lo cual implica que un algoritmo escrito en C por ejemplo puede ser fácilmente portado a un dispositivo de lógica programable (Ej. FPGA), su código fácil de mantener y algunas ventajas que ya se mencionaron. La aplicación ideal debe tomar la descripción hecha en alto nivel y realizar la partición HW/SW de forma optima, el uso extensivo de estructuras en C/C++ debe aprovecharse (Depuradores, compiladores, lenguajes estándar), los desarrolladores y su fácil integración hacen de estos lenguajes los más adecuados para soportar los diferentes niveles de abstracción. En el caso de ESL (electronic system level) emergen como soporte a la descripción de sistemas, están basados en C/C++, permiten el modelamiento HW/SW, tienen soporte a vectores, concurrencia, sincronización, manejo de excepción características de lenguajes de alto nivel orientados a nivel de sistema.. 3.4. SystemC. SystemC es una librería de clases que permite: modelar, desarrollar, verificar, sintetizar, un sistema en un solo lenguaje [18]. En la comunicación se soportan señales para comunicación entre procesos y memorias FIFO para transferir datos entre procesos usando un buffer. Los procesos con hilos también son soportados, existe una función que permite síntesis sincrónica de hardware. Se pueden trabajar en tiempo de compilación o tiempo de ejecución.. 6. Tomado de www.celoxica.com. 24.

(28) Los tipos de datos soportados son los mismos de C++, con algunas restricciones para la síntesis [19], los tipos de datos manejados son de punto fijo, donde los efectos de cuantizacion y saturación no se tienen en cuenta. En el manejo de estructura de datos con apuntadores, uniones, estructuras. La síntesis depende de lo que suceda en tiempo de compilación, si es solucionable o no al igual que sus contenidos. A nivel de operadores y sentencias SystemC, tiene la misma sintaxis que C++, se pueden implementar un buen número de funciones ejemplo transcendentes e hiperbólicas. 3.4.1 Proceso de Diseño Se describen las siguientes fases en el proceso de diseño para las herramientas tipo systemC: • Generar un modelo de simulación del diseño en SystemC/C++. • Generar un testbench ( SystemC/C++). • Simular y verificar el modelo. • Refinar el diseño en simulación y convertirlo en código sintetizable. • Compilar el diseño a RTL. • Verificar el modelo sintetizable • Compilar para convertir a HDL (EDIF, VHDL). • Verificaciones temporales y de área. • Optimización en la síntesis • Ubicación y ruteo con las herramientas correspondientes. El código debe tener los encabezados necesarios y de soporte para SystemC, las funciones necesarias de síntesis, los hilos y métodos necesarios para describir la lógica del sistema, señales y memorias FIFO’s necesarias para comunicar los procesos. Las restricciones permiten realizar síntesis directa del proceso o afectar su salida , pueden estar en el modulo principal, reloj , Memoria, recursos, o la salida, en cada caso el papel que juegan las restricciones se mide retardos de tiempo necesarios para la sincronización entre submodulos especialmente cuando se hace uso de múltiples relojes. En el diseño de sistemas se pueden tomar dos alternativas, la primera corresponde a la programación secuencial donde se tiene un flujo de datos unido a una maquina de estados finitos, la segunda es la síntesis de alto nivel (HLS), donde se involucran los CDFG (control dataflow Graph)[3.6] figura [3.3], cada circulo encierra un recurso ejemplo multiplicadores, sumadores, otros y se debe optimizar el grafo compartiendo los recursos, para ello existen diferentes metodologías una de las mas promulgadas es la de Gjaski y Catapult C[20] herramienta de Mentor Graphics trabaja con esta metodología.. dx. dx u. 3. 3. y. X. 1. 2. x. x. 4. dx. 3. 8. ux. x. x. 5. x. 9. +. 6. 10. dx. x. u. <. +. xl D. 7. 11. -. 25. yl D.

(29) FIGURA 3.4.1. CDFG EJEMPLO7. Al comparar la síntesis de alto Nivel con la de software tradicional, en la primera se forma de un datapath propietario y una unidad de control que básicamente es una máquina de estados finito, en la segunda el datapath es fijo y el control está en la instrucciones residentes en memoria. En síntesis de alto nivel la especificación es sensitiva a desempeño, área, potencia, mientras que en software lo es al tiempo de compilación. Cuando se hace descripción a nivel de comportamiento, funcional se utiliza VHDL, Verilog que son los dos lenguajes más usados por los diseñadores de hardware, el uso de procesos, lazos, condicionales, detección del reloj acercan el diseño a nivel del hardware. Cuando se usa descripción a alto nivel se puede decir que el nivel de abstracción es mejor, el código es compacto y algo bien interesante es que la simulación es mucho más rápida, puede estar de 10 a 1000 veces. La existencia de herramientas tipo C va en aumento y las capacidades que se adicionan en este momento: concurrencia, temporización, estructura, son un agregado para el desarrollador. Aunque hay algunas desventajas en este momento con este tipo de lenguajes tales como; existen pocas arquitecturas y es poco intuitivo para diseñadores de hardware. SystemC se ve como el estándar de codiseño para la próxima generación de desarrolladores de grandes sistemas HW/SW,[21] gracias al manejo que tiene a nivel de lenguaje, concurrencia jerarquía, temporización y otras propiedades. Al ser cada día los algoritmos más complejos en muchas de las áreas que tiene la electrónica ejemplo: telecomunicaciones, procesamiento de señal, se hace más importante trabajar en un nivel de abstracción que facilite la descripción , tenga niveles de jerarquía y permita el trabajo de equipos de desarrollo., existen otras posibilidades en diseño ESL como System Verilog con su versión mejorada de BLUESPEC [22] ,para el caso de este proyecto se analizaron otras posibilidades que se discuten a continuación.. 7. Tomado de www.mentorgraphics.com. 26.

(30) 3.5 SOC’s En esta categoría se define como chip dentro del sistema [23], en una primera aproximación se analiza una tendencia a tener sobre una pastilla un ASIC mas una parte programable, que se puede asociar a una FPGA por ejemplo, en la figura [3.5], se observa un esquema de lo descrito anteriormente:. FIGURA 3.5.SOC DIGITAL8. En este caso el ASIC cumpliría con unas labores preestablecidas, por ejemplo de velocidad y en la FPGA puede estar la aplicación de usuario, en la figura [3.5.1], se muestra un diagrama.. FIGURA 3.5.1 SOC DIGITAL. Existe la posibilidad de integrar otras fuentes de procesamiento, se puede tener en un SOC varios mundos, ejemplo análogo + digital +mcu, a continuación se muestra una posibilidad en hardware programable y que aparece como una tendencia en el mundo electrónico moderno, aunque no se haya alcanzado el grado de integración de la parte digital es un campo en vía de expansión, en la figura [3.5.2] se observa un híbrido de un modulo digital o FPGA un procesador , periféricos y además la capacidad de procesamiento analógico, con un conversor análogo a digital. El diagrama muestra la posibilidad de integrar MPU, FPGA, periféricos en un mismo dispositivo, además de tener un A/D, que en la mayoría de los casos es de alta velocidad, en cuanto al procesador los fabricantes han tenido la tendencia de tener embebidos o dar la posibilidad con procesadores de 32 bits. 8. Tomado de www.laticcesemi.com. 27.

(31) FIGURA 3.5.2. SOC DIGITAL9. Cada día es más frecuente ver SOC’s con mayor escala de integración y mas robustez en sus periféricos, en la figura [3.5.3], se muestra un diagrama de bloques de un CSOC, [24] el procesador empleado es un ARM 32 bits lo cual ha sido una tendencia en los fabricantes de este tipo de dispositivos, en la figura [3.5.3] un ejemplo.. FIGURA 3.5.3. CSOC ARQUITECTURA10. En algunos grandes fabricantes el control de tareas puede estar distribuido en chip, como se muestra en la figura [3.5.4].. 9. Tomado de www.atmel.com Tomado de www.atmel.com. 10. 28.

(32) FIGURA 3.5.4. CSOC CON ELEMENTOS DISTRIBUIDOS11. Cuando las aplicaciones son muy especificas los fabricantes de SOC’s tienen variedad en el tipo de aplicación, en la figura [3.5.5], se muestra un sistema de comunicaciones con todos sus periféricos a bordo.. FIGURA 3.5.5. SOC DEDICADO A COMUNICACIONES12. En la siguiente sección se revisara las generalidades de los sistemas MPSOC, que son el eje del presente proyecto.. 3.6. MPSOC’s. Los sistemas en general hoy por hoy exigen capacidades de computo debido a que cada día la tendencia a incrementar el número de funciones es más grande, si se toma como ejemplo la telefonía celular se observan funciones como audio, video, conectividad con redes y demás, sumándole la aparición de nuevos algoritmos en diferentes áreas y cuya complejidad es cada vez más alta, sobre todo en el campo de procesamiento digital de señales [25]. Históricamente se ha venido incrementando la velocidad del reloj en los procesadores comerciales, pero obviamente este es un punto crítico pues entre mayor sea la velocidad, mayor será el consumo de energía [26]. 11 12. Tomado de www.atmel.com Tomado de www.atmel.com. 29.

(33) Con el aumento de las necesidades computacionales de los sistemas embebidos actuales, los procesadores de propósito general se quedan relegados y se han desarrollado nuevas oportunidades [27] Las tendencias de incremento del reloj se han ido relegando por lo mencionado anteriormente y las nuevas oportunidades se han abierto a sistemas con múltiples procesadores, para conformar lo que hoy se denomina como MPSoC (Multiprocessor System on Chip), al ser este un tema bastante extenso el proyecto desarrollado muestra tan solo una parte del universo de computo. 3.6.1 Tipos de MPSOC’s Existen diferentes categorías de MPSOC’s, se podría dar la siguiente división MPSOC’s de propósito general y de propósito especifico. El tipo de procesadores les da otra categoría si los núcleos son idénticos se habla de homogéneos y si son diferentes heterogéneos, en lo desarrollado hasta hoy los homogéneos se utilizan en tareas de propósito general, mientras que los heterogéneos en tareas especificas, como ejemplo un dispositivo de telefonía celular. 3.6.2. Sistemas multiprocesador. Existen básicamente dos divisiones los procesadores Hard-Core, y los Soft- Core Processors (SCP), popularizados los segundos por fabricantes de lógica programable como Xilinx y Altera respectivamente y de forma más evolucionada están los de Arc, Tensilica y Coware lideres en este tipo de tecnología. 3.6.3 Arquitecturas MPSoC Las arquitecturas son extensas pero en este proyecto se enfoco en una pequeña parte, la cual se describe a continuación. Las arquitecturas estudiadas y usadas están basadas en MPSoc’s homogéneos con una arquitectura interna donde se utiliza como estrategia de comunicación la memoria , que en este caso es compartida, usando como estrategia de comunicación entre procesadores el esquema productor-consumidor , a continuación se muestra uno de los posibles esquemas en la figura 3.6.2 , donde hay una memoria global que se comparte con los procesadores al igual que a través de otra sección también se comparten periféricos o recursos.. 30.

(34) FIGURA 3.6.2. MULTIPROCESAMIENTO MEMORIA COMPARTIDA13. Aunque en el ejemplo anterior se muestran diferentes núcleos o diferentes tipos de procesadores, la vía para paralelizar esta en usar varios procesadores dedicados y compartir la memoria [28], con esto me permite interrelacionar las tareas y compartir información entre ellas. La arquitecturas se fundamentan en nuevos conceptos NOC(Network on chip)[29], y las tradicionales con topologías maestro-esclavo, donde un procesador reparte las tareas a otros procesadores, en este proyecto se combinan las dos opciones memoria compartida y una topología preestablecida maestro esclavo, con algunos procesadores ejecutando tareas independientes. Partiendo de las arquitecturas básicas mencionadas: red, maestro-esclavo, memoria compartida, se logra desarrollar una metodología de diseño para cumplir con el objetivo planteado. En cada una de las configuraciones de memoria se trata de optimizar al máximo la arquitectura y se logre el mejor desempeño, como un agregado para optimizar en la grafica se observa una arquitectura de memoria compartida pero que agiliza la transferencia de información a través de buffers circulares o Queues, figura 3.6.2.. 13. Tomado de www.tensilica.com. 31.

(35) FIGURA 3.6.3. ARQUIETECTURA DE MEMORIA COMPARTIDA Y QUEUES14. En general lo que se busca es que el acceso a memoria sea mínimo, gracias a la gestión realizada por el sistema en general, un acceso a memoria tiene implicaciones en tiempo y energía, distribuyendo adecuadamente los accesos y realizando una planificación se logra un buen rendimiento en el dominio temporal igual que se reduce el consumo de energía. 3.6.4 Software Las aplicaciones con MPSoC’s son relativamente nuevas y no existe en este momento un estándar, aunque muchos fabricantes tomo SystemC [30] estándar para definir algunas partes en los entornos de desarrollo, los sistemas operativos son muchos aunque en el ámbito académico Linux es bien aceptado existen otro sistemas como QNX,VX-works muy bien posicionados en el area industrial, en el trabajo desarrollado se implemento un sistema tipo time triggered [31],con bastantes limitaciones pero que se ajusta bien a los recursos de la plataforma. Como algunas de las cosas innovadoras e importantes están las metodologías desarrolladas por investigadores académicos y de la industria, para enfrentar este nuevo paradigma que parece es el futuro de los sistemas embebidos y SOC’s, a continuación se muestra la metodología que sugiere uno de los fabricantes seleccionados. Essential Input/Output interfaces. Express I/O and computation as abstract Tomado de www.tensilica.com tasks with communicaitons. Allocate tasks to processors, parallelize tasks across processors, and optimize processors to task. 32. Select and optimize communications mode and interconnect mechanisms. Computati Optimizati. mputation timization. 14. Essential Computational Requirements.

(36) FIGURA 3.6.4 METODOLOGÍA DE DISEÑO MPSOC’S. 3.6.5 Consumo Una de las restricciones a tener en cuenta a la hora de diseñar con MPSoCs es el consumo de energía. Los sistemas multiprocesador se pueden usar, además de para aumentar el rendimiento de la aplicación, para reducir el consumo de energía de algunas aplicaciones. En este proyecto se presenta un sistema multiprocesador que al reducir la frecuencia de reloj, puede reducir de forma drástica el consumo de energía sin afectar el rendimiento en general, para el caso de esta aplicación el procesador escogido trabaja en un rango de frecuencia bajo pero al equipararlo con un procesador convencional se tendría que triplicar la frecuencia para igualar el desempeño lo que afectaría enormemente el consumo de energía.. 4. Arquitectura MPSOC Seleccionada. 4.1. MPSOC Propeller. 33.

(37) En el universo de cómputo existente se escogió un MPSOc de baja gama aunque no muy potente permite abordar el tema de multiprocesamiento desde una óptica bastante interesante, en el campo de criptografía por curvas elípticas en el entorno de redes de sensores inalámbricos. El procesador Propeller está diseñado para proporcionar un buen desempeño a sistemas embebidos mantiene un bajo consumo de energía rápido, el Propeller posee ocho procesadores, llamados Cogs, que tienen la capacidad de trabajar simultáneamente en tareas independientes. Dentro de algunas de sus características se encuentran las siguientes: • El mapa de memoria es plano. No hay necesidad de paginar los bloques del código, de datos o de variables. • Los acontecimientos asíncronos son más fáciles de controlar que con dispositivos que utilizan interrupciones. El Propeller puede funcionar de manera óptima para programarse en el dominio de la frecuencia, donde se permite revisar las tareas de cada procesador y realizar sus tareas a diferentes frecuencias. • El lenguaje ensamblador del Propeller tiene un set poderoso de instrucciones que permite un rápido desarrollo y tomar toda su capacidad de procesamiento (20 MIPS). Características del propeller se muestran en la tabla 4.1. Modelo Requerimientos de arranque Velocidad de Reloj Externo Velocidad de Reloj del Sistema Oscilador RC Interno. P8X32A 3.3 VDC DC a 80MHz (4MHz a 8 MHz con el Reloj PLL en ejecución) DC a 80 MHz. 12 MHz 0 20 KHz (aprox. Rango de 8 MHz-MHz, o 13 kHz-33 kHz, respectivamente) RAM/ROM Global 64 K bytes; 32 K RAM/32K ROM Cog RAM 2 K bytes; 32 K RAM/ 32 K ROM Organizacion RAM/ROM 32 bits (4 bytes) Pines E/S 32, CMOS, VDC, 1/” VDD umbral lógico de 1.65 V. Fuente/Sumidero Actual por 50 mA E/S Fuente/Sumidero actual por TBD mA chip Current Draw @ 3.3 Vdc, 500 uA por MIPS (MIPS=Freq en MHz/4* Número 70°F de Cogs Activos) Tabla 4.1. Características del procesador Propeller. 4.1.1 Proceso de encendido o reset Consta de tres pasos:. 34.

(38) 1. El oscilador interno RC comienza a funcionar a 12 MHz; entonces, después de un retardo en el reset de 50 ms, el primer procesador (Cog 0) carga el Boot Loader y arranca. 2. El Boot Loader realiza las siguientes funciones: a. Detecta la comunicación de un host, con esta comunicación se puede enviar un programa a la RAM del sistema o la EEPROM. b. Si no se detectó host, el Boot Loader busca la EEPROM externa . c. Si no se detectó EEPROM, el Boot Loader para, detiene el Cog 0, el chip queda en un modo especial de parada. 3. Si los pasos anteriores pueden cargar un programa en la RAM general, y el host no ha mandado un comando de suspensión, el Cog 0 se re arranca con el intérprete Spin embebido y el código del usuario se ejecuta desde la RAM global. 4.1.2 Proceso de Ejecución El propeller posee dos lenguajes uno de alto nivel llamado “SPIN” el cual es interpretado en tiempo de ejecución por un procesador dedicado, aunque el verdadero potencial este en el lenguaje de maquina en este proyecto se mezclo el alto nivel con el desarrollo a bajo nivel, normalmente el Cog0 es el encargado de realizar este proceso, de ahí en adelante el sistema tiene el control sobre los procesadores y periféricos en general, aunque puede variar en tiempo de ejecución 4.1.3 Proceso de Apagado Este proceso es vital en el proyecto ya que una de los requerimientos a nivel funcional es el bajo consumo, este modo se obtiene llevando al propeller a un modo de apagado, donde todos los procesadores se detienen y la aplicación solicita un evento de reinicio.. 4.2. Arquitectura Interna. En la siguiente grafica se muestra la arquitectura del MPSOC de PARALLAX:. 35.

(39) FIGURA 4.2. ARQUITECTURA DEL PROPELLER DE PARALLAX. La arquitectura se basan en algunos recursos propios y otros compartidos todos estos, existe un procesador maestro el cual coordina el acceso a cada de recurso, el tipo de procesamiento para esta arquitectura es multiprocesamiento simétrico y homogéneo [32], debido a que todos procesadores tienen la misma arquitectura.. por tipo un los. Cuando se dice recursos comunes se está haciendo referencia a los que cualquier procesador puede acceder en cualquier momento, pero uno y solo uno tiene este privilegio.. 4.2.1 Descripción de los Procesadores El Propeller contiene ocho procesadores, llamados Cogs, Cada Cog contiene: un procesador, RAM 2 KB (512 x 32 bits), E/S y PLLs, un generador video.. 36.

(40) Cada Cog puede ejecutar tareas independientes y se manejan desde la misma fuente de reloj. Los Cogs se pueden arrancar y parar en ejecución y se pueden programar para realizar tareas simultáneamente, con diferentes mecanismos de sincronización y comunicación que pueden ser independientes o a cargo de otros procesadores, teniendo en cuenta los esquemas de de sincronización productor- consumidor, para este caso concreto con el uso de memoria compartida [33]. En la figura 4.2.1 se muestra la arquitectura del procesador y su estructura tipo token bus, con el mecanismo de acceso al HUB y el intérprete del lenguaje de alto nivel en la RAM del COG.. FIGURA 4.2.1. ARQUITECTURA DEL PROCESADOR. Con lo descrito anteriormente se logra tener un control sobre la planificación de tareas y algo vital el consumo de energía [3], factor importante en este proyecto. Cuando un Cog arranca, las posiciones desde la 0 ($000) a la 495 ($1EF) se cargan de la RAM principal/ROM y las de propósito especial, desde 496 ($1F0) a la 511 ($1FF), se inicializan a cero. Después, el Cog comienza a ejecutar teniendo en cuenta la posición inicial de la RAM del procesador, en este paso se evidencia la relación tiempo – energía para tener un buen desempeño [34].. 37.

(41) FIGURA 4.2.1.1. REGISTROS DE PROPÓSITO GENERAL. 4.2.2 Procesador Maestro En el esquema de multiprocesamiento, un procesador maestro mantiene la integridad del sistema [35], permitiendo que los recursos no sean accedidos sino por un solo procesador, se tiene un sistema cooperativo [36], el cual hace un barrido de todos los procesadores El maestro (HUB) le da la mano cada 16 ciclos de reloj del sistema, cuando se hace una descripción de lenguaje a bajo nivel el número de ciclos baja a 7. En la grafica se muestra uno de los casos básico de arbitramiento por parte del maestro:. FIGURA 4.2.2. INTERACCIÓN ENTRE PROCESADORES MAESTRO – ESCLAVO. El procesador posee un contador base que puede ser accesado por cualquiera de los recursos, permite ser utilizado como mecanismo de sincronización y espera, los procesadores pueden leerlo simultáneamente, así un procesador puede crear una base se tiempo y usarla como referencia o mecanismo de coordinación.. 38.

(42) Adicionalmente se pueden usar como mecanismo de planificación y acceso de recursos ocho semáforos, teniendo en cuenta que el esquema empleado es el de productor consumidor, el acceso a memoria compartida [7] se optimiza a través de estos mecanismos y con la ayuda del maestro quien mantiene la planificación y hace que el acceso se haga de forma eficiente. 4.2.3 Memoria La memoria principal es de 64 K bytes (16 K longs) accesible por todos los Cogs como recurso mutuo-exclusivo a través del Hub. Se conforma por 32 KB de RAM y 32 KB de ROM. En la figura 6.2.3, se muestra el mapa de memoria del procesador.. FIGURA 4.2.3. MAPA DE MEMORIA ROM PROPELLER. La primera mitad de la memoria se emplea para guardar variables, cuando se utiliza un host o una memoria externa para cargar la configuración de un programa, en las primeras posiciones se encuentra el interprete 0x0000 a 0x0010, a continuación se encuentra la aplicación. En la memoria ROM se encuentra el Boot loader y el intérprete, además de un conjunto de caracteres para poder implementar aplicaciones que relacionen video. En las últimas posiciones están el boot loader y el intérprete del lenguaje SPIN quien trae el programa de la RAM .. 39.

(43) 4.2.4 Lenguaje SPIN Es un lenguaje interpretado y puede funcionar en altos niveles de abstracción, normalmente se utiliza para coordinar las rutinas de bajo nivel, desde un lenguaje de alto nivel como lo es SPIN, trabajo con la filosofía de programación orientada a objetos donde existen métodos y objetos de carácter privado y público. Ejemplos de objetos pueden ser el Mouse, el teclado y otros periféricos que son hechos en el lenguaje nativo del procesador , y que luego pueden ser invocados desde el lenguaje SPIN. A continuación se muestra en las grafica 4.2.4, el proceso de desarrollo.. FIGURA 4.2.4. DESARROLLO DE APLICACIONES PROPELLER. Cuando hay una aplicación y se quiere transferir existen dos posibilidades, la primera se muestra en la figura 6.2.4. La cual como se había comentado al principio la descarga sobre la RAM, existe otra forma y esta utiliza una memoria EEPROM externa y luego si se descarga a la memoria RAM, en la grafica 6.2.4.1, se observa lo siguiente:. FIGURA 4.2.4.1 DESCARGA DE APLICACIÓN A LA RAM. 40.

Referencias

Documento similar

[r]

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Missing estimates for total domestic participant spend were estimated using a similar approach of that used to calculate missing international estimates, with average shares applied

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa