www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina Sistemas en Chip acelerados por hardware: comparación de performance en aplicaciones criptográficas Marcos J. Oviedo Pablo A. Ferreyra Carlos A. Marqués Facultad de Ingeniería Instituto Universitario Aeronáutico Córdoba, AR [email protected] Facultad de Matemática, Astronomía y Física Universidad Nacional de Córdoba Posgrado en Sistemas Embebidos Instituto Universitario Aeronáutico Córdoba, AR [email protected] Facultad de Matemática, Astronomía y Física Universidad Nacional de Córdoba Córdoba, AR [email protected] tradicionales, como el desarrollo de sistemas embebidos en un SoC de alta performance (HPSoC). Abstract— El procesamiento de datos de alta performance se ha convertido en un desafío para la tecnología de los sistemas embebidos actuales. Una alternativa para suplir los requerimientos de performance es la utilización de aceleradores de hardware implementados en lógica programable. En el presente trabajo se muestran los resultados obtenidos de dos implementaciones del algoritmo criptográfico TripleDES a través del uso de aceleradores de hardware. En un HPSoC la arquitectura de hardware esta optimizada para que la plataforma de cómputo que lo compone trabaje cooperativamente con aceleradores de hardware. En el curso de desarrollo de un HPSoC, las funcionalidades que componen al mismo son definidas primero en software, para que luego parte de las mismas sea trasladada a hardware. La implementación en hardware a través de lógica programable es una alternativa válida que se puede utilizar para lograr sustanciales incrementos en performance, teniendo en cuenta el alto nivel de paralelismo que se puede conseguir con la utilización de una plataforma de lógica programable. Keywords; Computación de Alta Performance, Sistema en Chip, Encriptación de datos Standard, Optimizaciones de Hardware, Aceleradores de Hardware. I. INTRODUCCION Avances en la industria de los semiconductores han permitido que utilizando componentes de lógica programable sea posible implementar sistemas digitales complejos. Un sistema en chip programable (SoC) es un sistema digital que en una sola pastilla de silicio, implementa un sistema embebido, dispositivos de aplicación específica y software de aplicación y control. En el presente trabajo se mostrará en forma teórica una metodología de desarrollo de un HPSoC para luego finalizar con una comparación de performance entre los resultados obtenidos de dos alternativas de implementación del algoritmo de encriptación simétrico TripleDES en un HPSoC. La implementación se realizo sobre una plataforma de lógica programable que contiene una FPGA Xilinx Virtex 4. Uno de los conceptos más poderosos atrás del diseño SoC es que la funcionalidad del sistema puede ser especificada y asignada no sólo al software que corre sobre el procesador, sino también a los componentes de hardware que lo constituyen. Permitiendo así, que para efectos de aceleración de procesamiento, sea posible implementar unidades de procesamiento de alta performance encargadas de realizar ciertos tipos de operaciones computacionales de forma óptima y por lo tanto a mayor velocidad que el procesador del sistema embebido, ayudando así a incrementar la performance del sistema. Este paper está organizado de la siguiente forma: La sección II presenta información teórica sobre las limitaciones de los sistemas basados en procesador que motivan el presente trabajo. La sección III presenta la metodología de trabajo propuesta para desarrollar este tipo de sistemas digitales. La sección IV presenta un enfoque en distintos niveles sobre las técnicas y mecanismos disponibles para incrementar la performance de un HPSoC. La sección V presenta dos implementaciones de HPSoC que proveen aceleradores criptográficos desarrollados siguiendo la metodología propuesta. La sección VI muestra y compara los resultados obtenidos. Por último, en la sección VII se muestran los resultados obtenidos y se presentan las conclusiones del presente trabajo. Debido a la creciente demanda de tecnológica de la sociedad moderna, los sistemas embebidos que componen los equipos electrónicos actuales debe ser capaces de evolucionar constantemente a modo de soportar la creciente demanda de capacidad de procesamiento a los que están sometidos. A modo de resolver esto existen alternativas a los sistemas embebidos 64 www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina II. III. LIMITACIONES DE LOS SISTEMAS BASADOS EN PROCESADOR En la metodología propuesta, el diseño de un HPSoC consistirá en dos áreas separadas pero que requieren interacción entre ellas. Una de esas áreas es la creación del soporte necesario para implementar un sistema embebido en la FPGA basado en microprocesador y la otra es la optimización de la aplicación en vistas de una posterior implementación basada en un codiseño hardware-software. En este codiseño el componente de hardware se implementara como un componente acelerador que se comunicara con el componente de software a través del diseño embebido. Los procesadores fueron concebidos para realizar computación de propósito general. Esta decisión de diseño produjo que los procesadores no sean eficientes a la hora de realizar tareas de cómputo específicas y por lo tanto, que no puedan satisfacer la performance de procesamiento que demandan algunos sistemas embebidos actuales. Persiguiendo la ley de Moore, a lo largo de los años se ha buscado alternativas para mejorar la performance de las plataformas de cómputo basadas en procesador. Sin embargo estas alternativas no han sido eficientes ni aplicables en muchos escenarios en donde la performance era un requerimiento. Como se enuncia en [1], esto se debe principalmente a que existen limitaciones físicas inherentes a los procesadores que en muchos casos y dada la tecnología actual, impiden que estas alternativas se apliquen arbitrariamente: • El hecho de aumentar la cantidad de transistores y la frecuencia a la que estos trabajan, introduce serios problemas de disipación de calor (barrera de potencia). • La frecuencia no puede ser incrementada arbitrariamente, no solo por la barrera de potencia, si no también debido a una inherente limitación física en los tiempos de conmutación de los transistores utilizados en el diseño del microprocesador (barrera de frecuencia). • En un sistema de cómputo actual, el ancho de banda del microprocesador es generalmente 70 veces superior al de la memoria externa, convirtiendo el acceso a la misma en un cuello de botella. El uso de complejas jerarquías de memorias locales al microprocesador (caches) disminuye considerablemente el tiempo de acceso a los datos, pero debido a la imposibilidad tecnológica de incrementar el tamaño del cache arbitrariamente, el acceso a memoria sigue siendo un problema real (barrera de memoria). • Finalmente los procesadores en si tienen una limitación fundamental: Un diseño basado en ejecución serial, que hace extremadamente difícil extraer niveles de paralelismo de un flujo de ejecución de instrucciones. Como se menciona en [2] existen complejos diseños y técnicas en las arquitecturas de los procesadores actuales que intentan extraer el paralelismo en las instrucciones y mitigar esta limitación. METODOLOGIA DE DESARROLLO DE UN HPSOC En primera instancia, el desarrollo de sistemas embebidos se realiza utilizando herramientas EDA que permiten interconectar, a través de una jerarquía de buses de interconexión, un microprocesador (que puede ser un softcore, o un hardcore como se menciona en [3]), con un conjunto de dispositivos que vuelven al sistema embebido una plataforma de computo funcional. El desarrollo de sistemas embebidos no es estandarizado y varía dependiendo del fabricante de FPGAs que se utilice. En el presente trabajo se utilizó FPGAs de la firma Xilinx, por lo cual se trabajo con el ecosistema de desarrollo de Xilinx para implementar el sistema embebido. Esto consistió en utilizar las herramientas EDK, ISE y las librerías de componentes de hardware XilinxProcessorIPLib. En segunda instancia, se deberá trabajar sobre la aplicación que se busca optimizar. Para esto se debe realizar un prototipo por software de la aplicación o algoritmo a implementar en el HPSoC. Este prototipo será luego caracterizado y evaluado mediante herramientas como profilers y analizadores de código, a modo de poder detectar cuales son los segmentos o áreas de la misma en donde más procesamiento se realiza (secciones críticas en términos de performance). Con esta información y a través de un enfoque top-down, se procederá a estudiar el algoritmo que define la aplicación, a modo de refactorizar la misma y que las secciones críticas puedan ser optimizadas y aisladas para ser implementadas en hardware. La implementación en hardware de las secciones críticas de la aplicación permiten que las operaciones computacionales puedan ser representadas en lenguajes de descripción de hardware y que a través de una estrategia de optimización por niveles, se puedan implementar componentes aceleradores de hardware, es decir hardware de procesamiento especifico que permita realizar computo altamente performante y eficiente. Para el desarrollo del componente acelerador se puede utilizar un lenguaje de descripción de hardware como VHDL o utilizar una herramienta ESL como ImpulseC [4]. El componente acelerador además, deberá integrarse dentro del diseño embebido del HPSoC, por lo que un canal de comunicación de alta velocidad entre hardware y software deberá también ser desarrollado. La utilización de lógica programable y la realización de un HPSoC es una valida alternativa para lograr sustanciales incrementos en performance en sistemas donde la performance es el principal requerimiento. En el presente trabajo se demostrara la implementación de un HPSoC que permitirá crear una plataforma de computo especifica y orientada a la aplicación, a modo de optimizar el camino de ejecución de datos (a través de extraer e implementar paralelismo), optimizar el uso de la memoria (aumento la localidad y el acceso), disminuir la disipación de potencia (hardware especifico requiere menor número de transistores) y disminuir la frecuencia de trabajo (posible debido a que en cada ciclo de reloj se realizan múltiples operaciones). Por otro lado, cabe mencionar que el componente de software del codiseño HW/SW puede correr directamente sobre el procesador o bajo el control y soporte de un sistema operativo (como una aplicación más de espacio de usuario). Dado los beneficios que provee un sistema operativo, en nuestra metodología se brinda soporte de un sistema operativo para el componente de software. 65 www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina detalles de bajo nivel que definen la implementación del mismo. Entonces, si posibles paralelizaciones son detectadas, y siempre cumpliendo con los requerimientos funcionales iniciales, se buscara implementar las modificaciones necesarias en el código del algoritmo, de modo de que este deje de lado su flujo de ejecución serial y adopte un modelo de funcionamiento en paralelo. Una vez que estas dos instancias del HPSoC estén completas, el diseño de hardware tiene que ser trasladado y mapeado en el fabric de una FPGA, y las imágenes binarias del software correspondiente tienen que ser almacenadas en las memorias correspondientes para su posterior evaluación. IV. OPTIMIZACION DE PERFORMANCE EN UN DISEÑO HPSOC Además de detectar niveles de paralelización y optimizaciones en el flujo de ejecución del algoritmo, otra interesante técnica que se puede utilizar para optimizar la performance a nivel de aplicación es el uso de precomputo de datos. Esto consiste básicamente en acotar el rango de acción del algoritmo, tomando asumpciones sobre el espacio de trabajo del algoritmo, a modo de precomputar y simplificar sus operaciones y de ese modo acelerar la ejecución del mismo. Existen diversos factores que pueden ser modificados y técnicas que pueden ser aplicadas en la arquitectura de un HPSoC a modo de incrementar la performance general del mismo. Estos factores pueden ser agrupados en tres áreas a las que llamaremos niveles de optimización. A. Optimizaciones a nivel de Sistema Describimos como sistema a la plataforma física en donde se implementa la aplicación. Las optimizaciones a nivel de sistema están ligadas a la forma en que se pueden implementar las aplicaciones en esta plataforma, y las modificaciones que pueden ser realizadas en la misma para que estas se ejecuten más rápido y para que el throughput sea más elevado. C. Optimizaciones a nivel de micro arquitectura Describimos como micro arquitectura a los componentes de lógica programable que implementan los detalles de bajo nivel del algoritmo que define la aplicación que se ejecutara sobre el HPSoC. Algunas técnicas para mejorar la performance de la micro arquitectura del componente acelerador son las siguientes. La optimización trivial es modificar el diseño de hardware que compone la plataforma de cómputo para que los diversos componentes de esta funcionen a la máxima velocidad admisible. Además, es óptimo establecer canales de comunicaciones de alta velocidad entre los componentes de uso frecuente por el procesador, por ejemplo los bancos de memorias o la comunicación con el fabric de la FPGA. El uso de caches de memorias (preferentemente memoria RAM en bloque) puede aumentar la localidad de datos y así mejorar la performance. 1) Replicar los arrays o bancos de memoria que contienen los datos: Una de las ventajas más importantes que nos ofrece la programación en hardware es la posibilidad de acceder a múltiples bancos de memoria en un solo ciclo de reloj. A diferencia de una implementación de software, en la que un CPU esta conectado a uno o mas dispositivos de memoria física siempre a través de un solo bus, una implementación en hardware permite la flexibilidad de generar una topología de conexionado arbitraria, en la que un conjunto de operaciones al ser ejecutadas puedan acceder a datos distribuidos en varios bancos de memoria en una sola operación de reloj. Es por esto que un factor importante a tener en cuenta, es que para lograr resultados óptimos debemos replicar nuestro set de datos en diferentes bancos de memoria. Con esto lograremos tener bancos de memoria separados, cada uno con su puerto de lectura/escritura, lo que permitirá acceder a los mismos en forma paralela para su posterior operación/procesamiento. Así mismo, las herramientas de síntesis que sintetizan el diseño de hardware permiten configurar restricciones de tiempo y aumentar el nivel esfuerzo, a modo de mejorar el rendimiento disminuyendo el tiempo de propagación de datos a través del hardware. Por otra parte, a nivel de sistema se puede paralelizar el procesamiento de datos a nivel de componente acelerador. Siempre que el algoritmo a procesar lo permita, es decir que el algoritmo de procesamiento trabaje con un conjunto de datos independiente unos de otros, y que además exista disponibilidad de recursos en la FPGA utilizada, se puede implementar más de un componente acelerador y procesar así varios conjuntos de datos en paralelo. 2) Operaciones sobre bucles: En un algoritmo, los bucles son una de las construcciones que contienen un alto grado de paralelismo inherente, y por lo tanto, son una de las construcciones que se apunta a optimizar. Los bucles generalmente realizan operaciones repetitivas sobre un set de datos. Si cada de las operaciones del bucle no depende de datos calculados en interacciones anteriores, es decir si en cada iteración se puede operar sobre set de datos independientes, el grado de paralelismo que se puede obtener es elevado. Existen dos técnicas para optimizar las operaciones sobre bucles, estas son el desenrollado del bucle y la generación de “líneas de ensamblado”, o mas conocido por su término en ingles, pipelines. El desenrrollado de bucles consiste en expandir el conjunto de iteraciones consideradas por el bucle y reacomodar el algoritmo para que estas puedan B. Optimizaciones a nivel de aplicación Describimos como aplicación al algoritmo computacional que cumple un cierto número de requerimientos con el fin de implementar por software o hardware la funcionalidad principal del HPSoC. El objetivo de las optimizaciones a nivel de aplicación es estudiar el algoritmo que define las operaciones críticas en performance de la aplicación, a modo detectar el paralelismo inherente en el mismo y optimizar el procesamiento. Cabe aclarar que las optimizaciones sobre el algoritmo se harán sobre los detalles de alto nivel del mismo, y no sobre los 66 www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina componentes necesarios para volver al sistema embebido y su procesador una plataforma de computo funcional. Además la herramienta permitió, desarrollar un canal de comunicación de alta velocidad entre el componente acelerador implementado en la lógica programable y el microprocesador del sistema embebido. ser realizadas en paralelo y en una sola iteración del bucle. El desarrollo de pipelines consiste en dividir el trabajo a procesar en subtareas, a modo de que a medida que van entrando los datos a procesar, cada subtarea pueda ir procesando en forma concurrente un diferente set de datos. Entonces, si cada iteración del bucle requiere ejecutar N subtareas, en una implementación sin pipeline, el bucle realizara una cantidad (N * cantidad_elementos_de_datos) de iteraciones para completar su trabajo. En cambio en una implementación con pipeline, la totalidad de datos serán procesados en una cantidad (N + 1) de iteraciones. La teoría de pipelines y desenrollado de bucles ha sido extensamente desarrollada en [5] y [6]. V. Se genero el soporte necesario para que el PPC pueda comunicarse a través de los buses PLB, OPB, FCB, OCM y DCR a los distintos dispositivo. Estos buses pertenecen a la familia de buses CrossConnect y están descriptos en [10]. Cabe aclarar que este procesador solo soporta conexión directa a los buses PLB, OCM, DCR y FCB, por lo que los dispositivos atrás del bus OPB se alcanzaran a través de un bridge PLB2OPB. Una vez definida la arquitectura de buses, sus tamaños y frecuencias de trabajo, así como también los elementos adicionales necesarios para su correcto funcionamiento, se escogió a los dispositivos del kit de desarrollo a los cuales se les dará soporte y como estarán conectados estos a la jerarquía de buses, a modo de que estos sean visibles al procesador PPC. La configuración de los mismos, es particular de cada caso y dependiente del diseño adoptado, aunque por lo general esta configuración especifica incluye aspectos como el tipo de DMA que utilizara, velocidad de funcionamiento, tipo de clock al que estará conectado, pines y redes al que estará conectado, cantidad, tipo de interrupciones que generara y áreas de memoria que estarán reservadas en el mapa de memoria del sistema para los registros del mismo. Cada IPCore de la librería de hardware XilinxProcessorIPLib posee un datasheet que detalla sus parámetros de configuración posibles. DESARROLLO DE UN HPSOC CRIPTOGRAFICO A modo de evaluar las mejoras obtenidas a través de la implementación de un HPSoC acelerado por hardware, se desarrollo un SoC prototipo sin aceleración (implementación solo por software), y dos versiones de un HPSoC con aceleración por hardware. En estos dos últimos casos, el componente acelerador fue desarrollado en VHDL y con la herramienta de síntesis de alto nivel ImpulseC respectivamente. La aplicación criptográfica consistió en obtener un set de datos de memoria y cifrarlos a través del algoritmo de cifrado simétrico TripleDES. El algoritmo de cifrado simétrico TripleDES se utilizó en modo ECB, siguiendo los lineamientos mencionados en [7] y [8]. Siguiendo la metodología propuesta en el presente trabajo, después de diseñar e implementar el sistema embebido en el SoC, se desarrollo en software un prototipo no optimizado del algoritmo a utilizar. Este prototipo sirvió para estudiar el algoritmo y caracterizarlo. Con los datos obtenidos y evaluando las técnicas de optimización enumeradas en [9], se procedió a desarrollar los componentes aceleradores y aplicar los niveles de optimización anteriormente descritos. El canal de comunicaciones de alta velocidad utilizado se implemento por medio del controlador APU, una funcionalidad del procesador PPC descripta en [11]. El controlador APU provee una interfase de comunicación flexible y de alta velocidad entre el fabric de la FPGA y el procesador PPC. Esta interfase de comunicación conecta directamente el pipeline de instrucciones del PPC a uno o más componentes aceleradores de hardware. Cabe aquí citar que para la implementación de los prototipos se utilizó el kit de desarrollo FX12 Minimodule, provisto por la firma Avnet y que cuenta con una FPGA Virtex4 FX12 y diversos componentes externos descritos en la página del fabricante. El diagrama en bloque del HPSoC desarrollado puede verse en la figura 1. B. Desarrollo del soporte del software de control del HPSoC El componente de software de la aplicación del HPSoC se ejecutara con soporte de un sistema operativo. Se eligió Linux como sistema operativo de soporte. Para esto se preparo el sistema operativo Linux a modo que controle los distintos componentes de hardware del sistema embebido. Se genero además un root filesystem con las aplicaciones necesarias para volver funcional al sistema. Se desarrollo además un mecanismo para que el kernel pueda ser cargado en memoria de ejecución mediante el uso de XMD, un debugger provisto por EDK y que a través de JTAG puede bajar y ejecutar binarios ELF compilados para el procesador PPC. Esto permitió que el kernel se pueda ejecutar sobre el sistema embebido, inicializarse, detectar el hardware sobre el que se ejecuta, configurar las interfaces de red, autoconfigurar su dirección de red a través de DHCP y bootear un root filesystem remoto a través de NFS. En la figura 2 se puede observar la iteración de protocolos durante el booteo del kernel. A. Desarrollo del sistema embebido del SoC Durante el desarrollo del diseño embebido se dio soporte a todos los dispositivos físicos de hardware del kit de desarrollo, utilizando los IP Cores de Hardware necesarios para el funcionamiento del sistema embebido. Para implementar el diseño embebido se utilizó la herramienta EDK de Xilinx descrita en [10]. El procesador elegido para el diseño embebido fue un recurso de hardware que posee la FPGA elegida, es decir el hardcore de un PowerPC 405 (PPC). Mediante esta herramienta se desarrollo un sistema embebido que permitió comunicar el procesador PPC con los dispositivos externos del kit de desarrollo, tales como la Memoria RAM, la memoria FLASH, el puerto UART, la PHY de Gigabit Ethernet así como también implementar 67 www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina Ethernet RAM de bloque Bus FCB Power PC 405 I cache HPSoC OPB Bus Bridge Controlador DDR Controlador UART Controlador GPIO Arbitro Arbitro Servidor de pruebas con: - Servicio DHCP server - Servicio NFS server - Entorno de Desarrollo - Buildroot - Crosscompiladores D cache PLB Controlador PHY Componente Acelerador de HW Figura 2. Flujo de consultas para booteo del sistema operativo Controlador HWICAP e) Se incremento la transferencia de datos para utilizar el máximo ancho de banda provisto por el canal APU. Esto es 64 bits de datos. Figura 1. Diagrama en bloques de la arquitectura HPSoC desarrollada La versión de Linux utilizada es la 2.6.20. Se realizaron modificaciones masivas sobre el código del kernel, utilizando código provisto por el fabricante y modificaciones ad-hoc. 2) Optimizaciones a nivel de aplicación: A nivel de aplicación se realizaron optimizaciones sobre el algoritmo TripleDES en si mismo. Como se describe en [9], se pueden realizar cambios en distintos puntos del algoritmo que mejoraran drásticamente la performance del mismo a través del precomputo de datos y de la optimización de las operaciones lógicas de permutación y tablas de búsqueda (operaciones sobre las cajas S). a) Precomputo de datos de las subllaves: Se realizo el precomputo de las subllaves necesarias para operar el algoritmo TripleDES. Esto permitio que las subllaves puedan ser accesibles de forma inmediata. Ademas, el hecho de precomputarlas de antemano permitio que los valores de las mismas puedan ser replicados espacialmente de modo que puedan ser utilizados de forma eficiente en las operaciones del algoritmo TripleDES. El precomputo se puede realizar debido a que se asume que el valor de la llave no será cambiado por el usuario en el futuro. La generación y precomputo de las subllaves se realiza en forma externa y el código se embebe en la descripción del hardware. Además, para poder soportar el canal de comunicaciones APU, hubo que habilitar el bit 6 del registro MSR, MachineState Register del procesador PPC. Este registro define el estado de funcionamiento del procesador, y debe ser configurado en tiempo de inicialización del sistema operativo. En este modo de funcionamiento, el procesador puede utilizar instrucciones vectoriales para transmitir datos a través del canal de comunicación de alta performance entre el hardware y el software. C. Desarrollo de la aplicación del HPSoC Como se mencionó, se desarrollaron tres versiones de la aplicación. Una desarrollada enteramente en software que sirvió como punto de estudio del algoritmo de encriptación. A partir de este prototipo, se desarrollaron dos versiones de componentes aceleradores. Una versión utilizando la herramienta ImpulseC y otra versión desarrollada en VHDL. A ambas versiones se les aplicaron las mismas optimizaciones descritas a continuación. b) Precomputo y combinación de la tabla de permutación P con las cajas S: El algoritmo DES provee un mecanismo de expansión de información a través de un conjunto predefinido de bits conocido como cajas S. El algoritmo incluye además tablas de permutación bits, conocidas como tabla P, que a fines de performance y teniendo en cuenta ciertas modificaciones en la implementación del mismo, pueden ser combinadas con tablas S para precomputar futuro procesamiento. Estas cajas combinadas se llaman cajas SP. 1) Optimizaciones a nivel de sistema: Las optimizaciones a nivel de sistema realizadas sobre la plataforma serán listadas a continuación. a) Se incremento la frecuencia del clock del procesador embebido a 200 Mhz. b) Se incrementaron la frecuencia de los buses PLB y OPB. c) Se incremento componente acelerador. la frecuencia de trabajo Flujo de consultas <- Consulta DHCP -> Respuesta DHCP con información de red y información de servidor NFS <- Petición de montaje a traves de NFS -> Informacion de punto de Montaje del c) Tabla de expansión E embebida: La tabla de expansión E se utiliza en DES para llevar un bloque de datos de 32 bits a un formato de 48 bits, necesario para poder XORear las subllaves con este valor expandido. Con fines de performance, se embebió el proceso de expansión de la tabla E en las operaciones de translación de las cajas SP. d) Se utilizó el máximo nivel de esfuerzo en la síntesis. Esto se logro editando el archivo etc/fast_runtime.opt. Este archivo contiene las opciones de ejecución de las utilidades de mapeo y ruteo de componentes. Ambas utilidades (map y place) fueron seteadas con la opción –ol a high (lo que indica máximo esfuerzo en la síntesis necesario para obtener un diseño optimizado). 3) Optimizaciones a nivel de microarquitectura: A nivel de microarquitectura no se realizaron optimizaciones sobre el algoritmo TripleDES en si mismo, si no que se busco 68 www.sase.com.ar 2 al 4 de marzo de 2011 UTN­FRBA, Buenos Aires, Argentina TABLA I. optimizar las formas en que las operaciones se realizan, así como también la implementación de pipelines, desenrollado de bucles y replicación de datos para favorecer la paralelización de operaciones. a) Implementación de la técnica de secuencias de permutación: A modo de implementar las permutaciones inicial y final de bits de forma optimizada, se utilizó la técnica "secuencias de permutación" descrita también en [9]. Esta técnica es ampliamente utilizada en diversos algoritmos de cifrado de datos, así como también en algoritmos de corrección de errores en la industria. HPSoC TripleDES Implementación Frecuencia de operación Throughput (aplicación userspace) Ganancia 300 Mhz 42.096 Kbps 1X 50 Mhz 17.929 Mbps 415X 50 Mhz 19.280 Mbps 458X Software Hardware ImpulseC Hardware VHDL b) Replicación de datos: Se genero código replicado de entidades de memoria que almacenan los datos de las 8 cajasSP. Esto permitió realizar operaciones de búsqueda en las tablas de forma paralela. El código de estas entidades de memoria fue desarrollado para que durante la sintesis las construcciones infieran en recursos de RAM en bloque. TABLA II. RESULTADOS DE SINTESIS HPSOC CRIPTOGRAFICO HPSoC con componente desarrollado en ImpulseC c) Pipelines: A modo de aumentar el throughput de procesamiento de datos, se subdividió el procesamiento del algoritmo en diferentes etapas que pueden funcionar en forma aislada. Estas etapas se encargan en la gran mayoría de realizar el proceso de combinar las cajas SP con los datos de entrada. El pipeline permitió que se procesen varios datos al mismo tiempo. VI. RESULTADOS DE IMPLEMENTACION HPSOC CRIPTOGRAFICO RESULTADOS OBTENIDOS Las métricas obtenidas de la ejecución del los componentes aceleradores de hardware desarrollados, así como también de la versión en software de la aplicación pueden verse en la tabla I. Recurso Utilización Porcentaje de uso BUFGs 11 out of 32 34% DCM_ADVs 2 out of 4 50% ILOGICs 29 out of 320 9% External IOBs 73 out of 240 30% LOCed IOBs 73 out of 73 100% OLOGICs 54 out of 320 16% RAMB16s 26 out of 36 72% SLICES 5470 out of 5472 99% SLICEMs 355 out of 2736 12% Este trabajo concluye que la utilización de un HPSoC es una alternativa técnicamente viable para mejorar la performance de los sistemas digitales embebidos del mundo actual. En esta tabla se muestra que la aceleración obtenida al implementar parte del algoritmo de la aplicación en un HPSoC con un componente acelerador es de alrededor de 400X en ambos casos. El throughput expuesto corresponde a la medición del tiempo de ejecución de la función de SW que envía los datos al componente acelerador. REFERENCIAS [1] [1] Wohlmuth, Otto, “High performance computing based on FPGAS” IEEE Field Programmable Logic and Applications, FPL, 2008. [2] Ramakrishna, Rau and Fisher, Joseph, "Instruction-level parallel processing: History, overview, and perspective", The Journal of Supercomputing, Volume 7, Numbers 1-2. [3] Meyer-Baese, Uwe, "Digital signal processing with field programmable gate arrays", Third Edition, Springer, pagina 589. [4] D. Pellerin and S. Thibault, “Practical FPGA Programming in C”. Prentice Hall Professional Technical Reference, 2005. [5] Pai, Vijay and Adve, Sarita, "Code transformations to improve memory parallelism", Proceedings of the 32nd annual ACM/IEEE international symposium on Microarchitecture, Pages: 147 - 155, 1999. [6] Wolf, M.E, Chen, Ding-Kai, "Combining loop transformations considering caches and scheduling", 29th Annual IEEE/ACM International Symposium on Microarchitecture, 1996. [7] Bruce Schneier, “Applied Cryptography Second Edition”. John Wiley, 2004. [8] Federal Information Processing Standars Publication, “DATA ENCRYPTION STANDARD (DES)”. FIPS PUB 46-3. [9] PK Yuen, “Practical Cryptology and Web Security”. Pearson Education Limited, Chap 4, 2006. [10] Xilinx Documentation files, “EDK Concepts, Tools, and Techniques”. [11] Shenoy, "Accelerating Software Applications Using the APU Controller and C-to-HDL Tools", Xilinx Application note XAPP 901. Se muestra además en la tabla II un extracto del reporte de la síntesis del componente acelerador más significativo (desarrollado en ImpulseC) que muestra el porcentaje de recursos usados en la FPGA. VII. CONCLUSIONES En el presente trabajo se presentaron los beneficios, en términos de performance, obtenidos a través de la implementación de aceleradores criptográficos utilizando HPSoCs. Las implementaciones realizadas muestran cómo es posible incrementar la performance de una aplicación de software corriendo en un sistema embebido en varios órdenes de magnitud. Los resultados comparativos mostraron que luego de aplicar la metodología propuesta se obtuvo una ganancia de alrededor de 400X en ambos casos. En el presente trabajo se utilizaron además herramientas del estado del arte en el desarrollo de lógica programable para implementar el sistema embebido y los componentes aceleradores. 69