Implementación de un microprocesador embebido sobre un...

6
Implementación de un microprocesador embebido sobre un FPGA Spartan 6. Un estudio comparativo entre microprocesadores a ser implementados en FPGA. Sr. Mauro Cipollone, Lic. Carlos E. Maidana, Ing. Fernando I. Szklanny Grupo de Investigación en Lógica Programable Departamento de Ingeniería e Investigaciones Tecnológicas Universidad Nacional de La Matanza San Justo, P. Buenos Aires, Argentina [email protected] Abstract—En el presente se efectúa un análisis comparativo realizado a través de un programa de ensayo (testbench) entre los microprocesadores LEON3 y Microblaze, ambos descriptos en VHDL para poder ser implementados sobre una FPGA. El objetivo de este trabajo es hacer una diferenciación entre las distintas características de cada microprocesador, facilitando la elección entre uno y otro al momento de hacer un desarrollo. Luego de realizar una breve descripción de las características de cada microprocesador, se pasará a realizar una descripción de sus formas de implementación y se finalizará con un testbench en ambos microprocesadores, mostrando el resultado obtenido. Palabras clave — Microprocesador embebido, FPGA, rendimiento. I. INTRODUCCIÓN Como parte de un proyecto de investigación sobre lógica programable y lenguajes descriptores de hardware, se procedió a un estudio comparativo de dos microprocesadores, el conocido Microblaze y el procesador LEON3. El objeto del trabajo planteado consiste en la implementación de ambos procesadores sobre un dispositivo de lógica programable para permitir un análisis de sus características, una vez instalados sobre un circuito lógico FPGA. La implementación de ambos procesadores se realizó sobre una placa Digilent Atlys, la que incluye un circuito FPGA Xilinx Spartan-6 LX45 y puede ser programada utilizando el software Xilinx's iMPACT o Digilent Adept Software. II. ANÁLISIS COMPARATIVO A continuación, se hace un resumen de las características de cada procesador: LEON3 Este fue desarrollado por la compañía suiza Aeroflex Gaisler, la que se dedica principalmente al diseño de hardware digital (para implementación sobre ASICs y FPGAs) para uso comercial y aeroespacial. La principal rama de trabajo de esta empresa es el desarrollo de microprocesadores y herramientas de desarrollo para procesadores embebidos basados en la arquitectura SPARC. Entre otros modelos desarrollados por Aeroflex se encuentra el LEON3, cuyas características responden a un modelo de procesador RISC de 32 bits, descripto en VHDL, basado en la arquitectura SPARC V8. Este modelo, como lo recomiendan sus diseñadores, es especialmente adecuado para diseños de sistemas sobre un chip (system-on-a-chip - SoC). El código fuente del mismo se encuentra disponible bajo licencia GNU GPL, la que permite su uso en forma libre e ilimitada para investigación y educación. Si se desea otro tipo de uso se debe abonar una licencia, lo que permite su uso en cualquier tipo de aplicación comercial. Microblaze Este procesador fue desarrollado por la empresa norteamericana Xilinx, es un procesador RISC, también de 32 bits y descripto en VHDL, desarrollado para propósito general con el objetivo de reducir tiempos de desarrollo. Su arquitectura es similar a la arquitectura DLX descripta por John L. Hennessy y David A. Patterson [1], aunque con algunas diferencias. Respecto a la licencia, si bien con la instalación del ISE Webpack (licencia gratuita) se puede acceder al código fuente del Microblaze, para utilizar el EDK (Embedded development kit), que contiene el paquete de software utilizado para la configuración y programación del microprocesador, se requiere una licencia no gratuita. III. CARACTERÍSTICAS PRINCIPALES DEL LEON3 Las principales características de este procesador son: [2] Set de instrucciones SPARC V8 con extensión V8e. Trabajo en pipeline de 7 etapas. Unidades hardware de multiplicación, división y MAC (Media Access Control). IV Congreso Microelectrónica Aplicada (uEA 2013) 53 Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Transcript of Implementación de un microprocesador embebido sobre un...

Page 1: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

Implementación de un microprocesador embebido sobre un FPGA Spartan 6.

Un estudio comparativo entre microprocesadores a ser implementados en FPGA.

Sr. Mauro Cipollone, Lic. Carlos E. Maidana, Ing. Fernando I. SzklannyGrupo de Investigación en Lógica Programable

Departamento de Ingeniería e Investigaciones TecnológicasUniversidad Nacional de La MatanzaSan Justo, P. Buenos Aires, Argentina

[email protected]

Abstract—En el presente se efectúa un análisis comparativo realizado a través de un programa de ensayo (testbench) entre los microprocesadores LEON3 y Microblaze, ambos descriptos en VHDL para poder ser implementados sobre una FPGA. El objetivo de este trabajo es hacer una diferenciación entre las distintas características de cada microprocesador, facilitando la elección entre uno y otro al momento de hacer un desarrollo. Luego de realizar una breve descripción de las características de cada microprocesador, se pasará a realizar una descripción de sus formas de implementación y se finalizará con un testbench en ambos microprocesadores, mostrando el resultado obtenido.

Palabras clave — Microprocesador embebido, FPGA, rendimiento.

I. INTRODUCCIÓN

Como parte de un proyecto de investigación sobre lógica programable y lenguajes descriptores de hardware, se procedió a un estudio comparativo de dos microprocesadores, el conocido Microblaze y el procesador LEON3. El objeto del trabajo planteado consiste en la implementación de ambos procesadores sobre un dispositivo de lógica programable para permitir un análisis de sus características, una vez instalados sobre un circuito lógico FPGA.

La implementación de ambos procesadores se realizó sobre una placa Digilent Atlys, la que incluye un circuito FPGA Xilinx Spartan-6 LX45 y puede ser programada utilizando el software Xilinx's iMPACT o Digilent Adept Software.

II. ANÁLISIS COMPARATIVO

A continuación, se hace un resumen de las características de cada procesador:

LEON3

Este fue desarrollado por la compañía suiza Aeroflex Gaisler, la que se dedica principalmente al diseño de hardware digital (para implementación sobre ASICs y FPGAs) para uso comercial y aeroespacial.

La principal rama de trabajo de esta empresa es el desarrollo de microprocesadores y herramientas de desarrollo

para procesadores embebidos basados en la arquitectura SPARC.

Entre otros modelos desarrollados por Aeroflex se encuentra el LEON3, cuyas características responden a un modelo de procesador RISC de 32 bits, descripto en VHDL, basado en la arquitectura SPARC V8.

Este modelo, como lo recomiendan sus diseñadores, es especialmente adecuado para diseños de sistemas sobre un chip (system-on-a-chip - SoC). El código fuente del mismo se encuentra disponible bajo licencia GNU GPL, la que permite su uso en forma libre e ilimitada para investigación y educación. Si se desea otro tipo de uso se debe abonar una licencia, lo que permite su uso en cualquier tipo de aplicación comercial.

Microblaze

Este procesador fue desarrollado por la empresa norteamericana Xilinx, es un procesador RISC, también de 32 bits y descripto en VHDL, desarrollado para propósito general con el objetivo de reducir tiempos de desarrollo.

Su arquitectura es similar a la arquitectura DLX descripta por John L. Hennessy y David A. Patterson [1], aunque con algunas diferencias.

Respecto a la licencia, si bien con la instalación del ISE Webpack (licencia gratuita) se puede acceder al código fuente del Microblaze, para utilizar el EDK (Embedded development kit), que contiene el paquete de software utilizado para la configuración y programación del microprocesador, se requiere una licencia no gratuita.

III. CARACTERÍSTICAS PRINCIPALES DEL LEON3

Las principales características de este procesador son: [2]

• Set de instrucciones SPARC V8 con extensión V8e.

• Trabajo en pipeline de 7 etapas.

• Unidades hardware de multiplicación, división y MAC (Media Access Control).

IV Congreso Microelectrónica Aplicada (uEA 2013) 53

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Page 2: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

• Las instrucciones y los datos se almacenan de manera separada en la memoria caché (Arquitectura Harvard) [3].

• Interfaz Bus AMBA-2.0 (desarrollado por ARM).

• Soporte para depuración sobre sistema.

• Soporte para multiprocesamiento simétrico (Symmetric Multiprocessing - SMP).

• Modo apagado y Gating de reloj (power-down y clock-gating) [4].

• Diseño de reloj por flanco totalmente sincrónico.

• Puede llegar hasta una frecuencia de 125 MHz en FPGAs y 400 MHz en tecnología ASIC de 0.13 um.

Breve descripción de la arquitectura SPARC V8

Un procesador basado en esta arquitectura [5] está formado por una unidad de enteros (integer unit – IU), una unidad de punto flotante (floating point unit – FPU) y un coprocesador opcional (coprocessor – CP), cada una con sus propios registros.

Todos los registros (con una posible excepción de los del CP) tienen un ancho de 32 bits. A continuación se realiza una breve descripción de cada unidad.• IU: Esta unidad contiene registros de uso general y controla la operación del procesador; ejecuta las operaciones aritméticas de enteros y computa las direcciones de memoria para cargas y almacenamientos. Además maneja el contador de programa (Program Counter) y controla la ejecución de instrucciones de la FPU y el CP.

La implementación de la IU puede contener de 40 a 520 registros de propósito general.

• FPU: Esta unidad posee 32 registros de punto flotante de 32 bits. Los valores de doble precisión ocupan un par de registros par-impar, y los valores de cuádruple precisión ocupan un grupo de 4 registros cuádruples alineados. Así, los registros de punto flotante pueden retener un máximo de 32 valores de simple precisión, 16 de doble precisión u 8 de cuádruple precisión. Las instrucciones de carga y almacenamiento de punto flotante se utilizan para mover datos entre la FPU y la memoria. Las instrucciones de operación de punto flotante (Floating point operate – Fpop) ejecutan la aritmética real de punto flotante.

• CP: Esta unidad tiene su propio set de registros; la configuración real de los mismos dependerá de las características de la implementación, pero siempre un conjunto de estos será de 32 bits. Las instrucciones de carga y almacenamiento del coprocesador se utilizan para mover datos entre los registros del CP y la memoria.

Distribución del LEON3

El LEON3 se distribuye como parte de la biblioteca GRLIB (GRLIB IP library), junto con un paquete de distintos periféricos. Entre otros se ofrecen controladores de memoria, bloques RWM/ROM de memoria para ser implementados en un FPGA junto con el micro, controladores Ethernet, UARTs, controladores de interrupción y puertos de entrada/salida.

Esta biblioteca se puede descargar en forma totalmente gratuita de la web de Aeroflex.

IV. CARACTERÍSTICAS PRINCIPALES DEL MICROBLAZE

Entre otras características de este procesador [6], se pueden mencionar:

• Compatible con la norma IEEE 754.

• Optimizaciones para saltos y lógica para predicción de saltos.

• Tamaño de caché configurable: 2 kb a 64 kb.

• Tolerancia a fallas, incluyendo código corrector de errores (ECC – Error Correction Codes)

• Instrucciones para comparación de patrones

• Posibilidad de síntesis con bus AXI o PLB.

• Posibilidad de operación en pipeline de 3 etapas (para optimizar en tamaño) o en pipeline de 5 etapas (para optimizar en velocidad).

• Las instrucciones y los datos se almacenan de manera separada en la memoria caché (Arquitectura Harvard).

Breve descripción de la arquitectura de este procesador

Un sistema embebido desarrollado con un Microblaze como núcleo procesador comprende las siguientes unidades [7]: procesador (Microblaze processor core, es decir, el Microblaze como núcleo procesador), bloque de memoria RAM, BUS AXI o PLB, módulos periféricos y unidad de punto flotante (floating point unit – FPU).

• BUS AXI: AXI [8] (Advanced eXtensible Interface) es parte del BUS AMBA, desarrollado por ARM. Hoy en día, la última versión de este protocolo se conoce como AXI4 y fue desarrollada en el 2010.

Comprende 3 tipos de interfaces posibles:

• AXI4: para requerimientos de alta performance en memoria.

• AXI4-Lite: para una comunicación con memoria simple y de bajo rendimiento.

• AXI4-Stream: para flujo de datos de alta velocidad.

• BUS PLB: El protocolo PLB [9] (processor local bus), desarrollado por IBM, provee una estructura de bus para interconectar una cantidad de maestros y esclavos opcional a todo el sistema. Este protocolo consiste en una unidad controladora de bus, un temporizador watchdog y unidades separadas de lectura y escritura de direcciones, junto con una interfaz esclavo DCR (Device Control Register) opcional que provee acceso a sus registros de estado de error de bus (bus error status registers).

• Módulos periféricos: Los periféricos OPB de Microblaze (On-chip Peripheral Bus) proveen funciones como las siguientes:

• Temporizador watchdog

IV Congreso Microelectrónica Aplicada (uEA 2013) 54

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Page 3: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

• Temporizadores y contadores de propósito general

• Controladores de interrupciones

• UARTs

• Entradas y saludas de propósito general

• Controlador de memoria

(En la implementación del Microblaze se pueden agregar periféricos descriptos en VHDL por el usuario, si se desea, pero este tema no se trata en el presente).

• FPU: La unidad de punto flotante usa el formato de simple precisión descripto en la norma IEEE 754.

Esta unidad soporta operaciones de suma, resta, multiplicación, división, comparación y raíz cuadrada y genera bits de status para underflow, overflow, división por cero y operación inválida [10].

V. IMPLEMENTACIÓN DEL LEON3

El haber utilizado la placa Atlys para este proyecto fue un obstáculo en el LEON3, ya sus fabricantes no distribuyen una plantilla del LEON3 para esta placa en la biblioteca GRLIB. Como solución a este inconveniente se utilizó una plantilla hallada fuera de la web de Gaisler [11].

Como plataforma de trabajo se utilizó “Linux Mint 14 Nadia” en una netbook que cuenta con 2GB de RAM y un procesador Intel Atom. Este trabajo se puede realizar también sobre una plataforma Windows con Cywin (Cywin es un conjunto de herramientas para Windows que proporciona una funcionabilidad y entorno similar al de Linux), teniendo en cuenta que, de acuerdo con el fabricante, sobre esta plataforma se pueden encontrar algunos problemas y el trabajo será más lento.

A continuación se pasará a describir el proceso de implementación del procesador, el cual se puede dividir básicamente en tres categorías:

• Síntesis del código fuente del LEON3 (proyecto en VHDL) y programación de la FPGA.

• Generación de programa ejecutable para correr sobre el microprocesador.

• Comunicación con el microprocesador para cargar el programa y depurarlo.

Síntesis del código fuente y programación de la FPGA

En las plantillas del LEON3 para las distintas placas (la Atlys y todas las demás para las cuales se describió el microprocesador), el proceso se basa en tres archivos principales [12], a saber:

• config.vhd: Este archivo contiene parámetros de configuración de diseño (constantes y demás) y puede ser modificado mediante la herramienta de interfaz gráfica xconfig.

• leon3mp.vhd: Este archivo contiene la entidad principal (top level) e instancia todos los on-chip IP cores (periféricos sintetizados alrededor del procesador). Este usa el archivo config.vhd para configurar los periféricos instanciados.

• Testbench.vhd: Este archivo se utiliza para emular la placa (que no está disponible para el modelo de la Digilent-Atlys).

Para comenzar con la implementación del LEON3 lo primero que se debe realizar es una edición del archivo config.vhd para adecuar las características del microprocesador sintetizado a las deseadas por el usuario. Para esto, Aeroflex otorga como parte de la biblioteca una herramienta de interfaz gráfica llamada xconfig, que permite reformar este archivo sin la necesidad de tener que interpretar el código VHDL (Ver Fig.1).

Una vez modificado el código fuente conforme a las necesidades del proyecto, se debe proceder a sintetizar el microprocesador, para esto, entre otras herramientas, se puede utilizar el ISE de Xilinx [12].

Una vez terminada la síntesis se obtiene un archivo llamado leon3mp.bit, el cual debe cargarse en el FPGA por medio de la herramienta iMPACT de Xilinx.

Generación de programa ejecutable para correr sobre el microprocesador

Una vez terminada la carga del procesador en el FPGA, junto con los periféricos deseados, se pasará a crear un programa ejecutable para correr en el microprocesador, para lo que se cuenta con dos herramientas:

• Por un lado se puede utilizar usar el Eclipse CDT (Eclipse con complemento para programar en C/C++) junto con un complemento que agrega al eclipse las herramientas para compilar el programa conforme a la arquitectura de este microprocesador. Pero esta opción, que fue la elegida para este trabajo, a pesar de parecer a primera vista la más sencilla en cuanto a su uso, por su interfaz gráfica, tiene algunos problemas:

• El primero es que este complemento desarrollado por Gaisler, solo fue desarrollado para las versiones de eclipse 3.6 y 3.7, y luego no se siguió actualizando. Por lo tanto, se deben utilizar estas versiones antiguas del eclipse para poder correrlo.

• Por otro lado, descargando el Eclipse CDT por un lado y luego instalándole el complemento no se obtuvieron buenos resultados, ni en Linux ni en Windows. Lo más recomendable es descargar y utilizar la versión distribuida por el mismo Gaisler (“GRTools installer for Windows”), la que contiene, entre otras, el Eclipse 3.6 con este complemento ya instalado. Para este trabajo se utilizó esta última opción, la que funciona correctamente en Windows y que además pudo funcionar en Linux utilizando el paquete “WINE”, el que permite correr aplicaciones nativas de Windows en Linux.

Fig.1 Herramienta xconfig

IV Congreso Microelectrónica Aplicada (uEA 2013) 55

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Page 4: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

• Como segunda opción de compiladores se puede utilizar cualquier compilador que pueda trabajar para la arquitectura SPARC V8. Para simplificar el desarrollo del software, Aeroflex provee el BCC (Bare C Cross Compiler), compilador en modo consola basado en el GCC, y la biblioteca Newlib embedded C-library. Esta opción no se describe en el presente y es la opción en principio mas complicada de implementar, debido a la falta de interfaz gráfica, pero se recomienda para aplicaciones mas grandes por sobre la utilización del Eclipse.

Comunicación con el microprocesador para cargar el programa y depurarlo

Finalmente, una vez que el procesador se encuentra sintetizado y cargado dentro de la FPGA y el programa de aplicación compilado, los pasos siguientes consisten en la carga del programa en el microprocesador y su depuración y puesta en marcha. Para este último paso Aeroflex provee una herramienta en modo consola llamada Grmon (Ver Fig. 2). Esta herramienta se puede descargar en forma gratuita con una licencia de evaluación para uso académico/investigación de 6 meses. La licencia para uso profesional se debe abonar.

El Grmon se comunica con el LEON3 DSU (Debug Support Unit) y permite una depuración no intrusiva de todo el sistema. Este permite, entre otras funcionalidades:

• Lectura y escritura sobre todos los registros y memoria.

• Descarga y ejecución de aplicaciones.

• Utilización de comandos definidos por el usuario.

• Programación de memorias flash Intel o AMD.

• Interfaces de depuración Ethernet, JTAG, PCI y USB.

VI. IMPLEMENTACIÓN DEL MICROBLAZE

En este caso, la implementación es mucho más sencilla que en el caso del LEON3. Xilinx ofrece un entorno de desarrollo único, con una interfaz totalmente gráfica, en el cual el usuario puede realizar todos los pasos recién mencionados para la implementación del LEON3 (síntesis del código fuente y programación de la FPGA, generación del programa ejecutable y carga de programa y depuración) pero para el Microblaze.

Los programas a utilizar son el XPS (Xilinx Platform Studio) y el SDK (Software development kit), los que vienen junto con la instalación del ISE Webpack.

Para esta implementación se utilizó como plataforma un sistema operativo Windows 7, en una netbook que cuenta con 2GB de RAM y un procesador Intel Atom. Este trabajo se puede realizar también sobre una plataforma Linux.

Fig.2 Interfaz Grmon

A diferencia del LEON3, en el cual la descarga de la biblioteca del microprocesador debe hacerse desde la web de Gaisler, en este caso las plantillas del procesador (que en el diseño de los proyectos en Microblaze se llaman BSB - Base System Builder) están todas incluidas en la instalación del ISE Webpack. Pero al igual que en el LEON3, Xilinx no incluye una plantilla para la placa Atlys, pero esta se consigue fácilmente desde la web de Digilent.

Creación del proyecto y adaptación del mismo a las necesidades del usuario

Lo primero que se debe realizar, al igual que con el LEON3, es establecer que características se requieren de parte del procesador (entre otras cosas el tipo de bus a utilizar, si el sistema tendrá uno o varios procesadores, la frecuencia y memoria destinada a programa), junto con los periféricos que se desean agregar en la síntesis. Para esto se debe utilizar el XPS, y mediante la herramienta BSB Wizard se podrán adaptar todas estas características a las necesidades del usuario. El XPS permite al usuario crear fácilmente desde pequeños sistemas embebidos hasta microprocesadores RISC de 32 bits (en este caso, el Microblaze) [13].

Una vez terminados todos los pasos del BSB Wizard se pueden ver las características del proyecto creado, antes de sintetizarlo, y además se pueden agregar o quitar periféricos (incluidos por defecto en el proyecto o creados por el usuario). Por otro lado, se puede ver como cada uno de estos se conecta al bus y reformar a gusto el código fuente (archivos .vhd) del microprocesador y los periféricos.

Finalmente, una vez que el proyecto tomó la forma deseada, se pasa al SDK, cuya funcionalidad se describe en la sección siguiente.

Programación de la FPGA, redacción de programa ejecutable, compilación y depuración

Todos los pasos que se ven en el título se han englobado en una sola sección puesto que se realizan en una forma muy sencilla con el mismo programa, el SDK. Este software está basado en el Eclipse y permite redactar el programa ejecutable en lenguaje C (al igual que en el LEON3), programar el FPGA con el archivo .bit correspondiente al proyecto, compilar el programa, cargarlo en el microprocesador y monitorearlo para hacer depuración sobre el mismo. Todo esto es una gran ventaja sobre el LEON3, el que, según se ha dicho, requiere de varios programas distintos para realizar todos estos pasos. Esto tal vez no sea un problema para un usuario avanzado, pero para el principiante implica un tiempo mucho menor de aprendizaje del uso de las herramientas de desarrollo.

Algunas de las características principales del SDK [14] son:

• Entorno de diseño integrada (IDE) que se conecta tanto al entorno de diseño de hardware Vivado e ISE.

• Completo diseño de software, incluye nueva tecnología para sistemas con múltiples procesadores y la capacidad de depuración de hardware / software.

• Editor, compilador, manejo de memoria flash y posibilidad de depuración JTAG/GDB.

• Bibliotecas personalizadas y controladores para los distintos periféricos.

IV Congreso Microelectrónica Aplicada (uEA 2013) 56

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Page 5: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

• Multiprocesamiento para desarrollo homogéneo y heterogéneo.

VII. COMPARACIÓN Y ENSAYO

Para realizar una comparación del rendimiento de ambos microprocesadores se han escrito y ejecutado dos programas en ambos, el primero, consistente en sumas sucesivas realizadas en forma cíclica. En la Fig.3 se observa un algoritmo de dicho programa. Y el segundo, consistente en un producto booleano de matrices enteras y un producto booleano de matrices de punto flotante. En la Fig.4 se observa un algoritmo de este otro programa.

Se observa que en cualquier pin del puerto manejado se podrá medir una señal cuadrada cuyo semiciclo tiene una duración igual al tiempo que se demora en realizar las sumas sucesivas (para el caso del primer programa). Y en el segundo caso se podrá medir una señal rectangular cuyo semiciclo en estado bajo corresponde con la demora del micro en realizar el producto entre las matrices enteras y el semiciclo en estado alto corresponde con la demora del micro en realizar el producto entre las matrices de punto flotante.

Se debe aclarar que para este testbench ambos microprocesadores fueron sintetizados configurados para trabajar a una frecuencia de 50 MHz y ambos con unidad de punto flotante. Para asegurar de que las diferencias en tiempo no correspondían también a una diferencia en el tamaño de las variables utilizadas en los programas, se desarrolló un programa auxiliar para ver el tamaño que utilizan los compiladores para las variables int y float, lo que permitió confirmar que en ambos microprocesadores se utiliza el mismo tamaño para ambos tipos de variables.

Fig.3 Algoritmo de prueba 1

Fig.4 Algoritmo de prueba 2

Resultados obtenidos

La Fig.5 muestra los resultados obtenidos para cada uno de los procesadores analizados con el primer algoritmo y la Fig.6 muestra los resultados obtenidos con el segundo algoritmo.

VIII. CONCLUSIONES

Como se puede observar en la Fig.5, bajo las mismas condiciones de operación, el LEON3 corrió el primer algoritmo aproximadamente 9,5 (16,26 kHz/1,71 kHz) veces mas rápido que el Microblaze. Y para el segundo algoritmo se observa una diferencia mucho más grande de tiempos, involucrando operaciones de multiplicación con variables enteras y de punto flotante. Se puede observar que en ejecutar la multiplicación de matrices de enteros la relación de tiempos es de 4523 veces (380*10-6/84*10-9 , siendo 380*10-6 seg. el tiempo que demora el Microblaze en realizar la multiplicación de matrices enteras y 84*10-9 seg. el tiempo que demora el LEON3, ambos medidos en el osciloscopio) y en ejecutar la multiplicación de matrices de punto flotante la relación de tiempos es de 4295 veces (2.62*10-3 / 610*10-9 , siendo 2.62*10-3 seg el tiempo que demora el Microblaze en realizar la multiplicación de matrices de punto flotante y 610*10-9 seg es el tiempo que demora el LEON3, ambos medidos conl osciloscopio). Esto concuerda con el resultado obtenido en el trabajo Evaluation of Synthesizable CPU Cores [15], al aplicar el programa de prueba Paranoia (desarrollado para detectar posibles fallas en operaciones de punto flotante) en el cual se observa que para el

IV Congreso Microelectrónica Aplicada (uEA 2013) 57

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE

Page 6: Implementación de un microprocesador embebido sobre un ...uea2013.frbb.utn.edu.ar/wp-content/uploads/S3_3.pdf · realizado a través de un programa de ensayo ... Breve descripción

LEON2 (predecesor del LEON3) prácticamente no se encuentran fallas en la implementación de operaciones de punto flotante, mientras que para el caso del Microblaze se encuentran una gran cantidad de fallas al aplicar este programa de prueba. Esto muestra una gran diferencia en las arquitecturas de ambos micros y una superioridad del LEON3 para aplicaciones en las cuales se necesite mayor eficiencia y velocidad de cálculo, tanto para operaciones de enteros como en punto flotante.

Otro punto a comparar es el porcentaje de elementos ocupados por cada micro en la FPGA, para el caso del Microblaze se utilizan: El 6% de los Registros Slice y el 15% de las LUTs. Por otro lado, en el LEON3 tenemos que se utilizan el 15% de los Registros Slice y el 46% de las LUTs. Por lo tanto podemos concluir que a pesar del pobre rendimiento del Microblaze en comparación con el LEON3, una ventaja puede ser que deja una proporción del dispositivo programable mayor para poder ser utilizado, lo que puede

Fig.5 Resultados con algoritmo de prueba Nº 1

Fig.6 Resultados con algoritmo de prueba Nº 2

llegar a ser ventajoso en aplicaciones SoC que no demanden una gran potencia de cálculo del microprocesador.

Finalmente, como se adelantó previamente, la implementación del Microblaze es más sencilla que la del LEON3. Llegar a sintetizar el microprocesador, escribir y compilar el programa y finalmente cargarlo y depurarlo requiere de mucho menos esfuerzo y conocimientos previos en el Microblaze que en el LEON3, debido a la menor cantidad de software distinto involucrado en el desarrollo de aplicaciones en ambos casos. Por otro lado, en el Microblaze se tiene la ventaja de que todos los programas necesarios vienen juntos en la instalación del ISE Webpack, corren sin ningún problema tanto en Windows como en Linux y se actualizan con cada nueva versión del ISE que Xilinx distribuye. En cambio, en el caso del LEON3 se deben descargar los distintos programas para realizar los distintos pasos de la implementación y algunos corren mejor en Windows que en Linux o al revés, teniendo además la desventaja de que la actualización de archivos es mas espaciada que en el caso del Microblaze.

Por lo tanto, la conclusión final de este trabajo es que el Microblaze se recomienda para aplicaciones pequeñas, que no necesiten de una gran velocidad de trabajo y potencia de cálculo y usuarios novatos, los cuales puedan llegar a tener problemas para trabajar en modo consola y en el armado de la estructura de archivos necesaria. Pero, para aplicaciones más potentes, en las cuales se necesite un tiempo de respuesta superior y para usuarios avanzados a los cuales no les sea una dificultad la estructura de desarrollo planteada por Gaisler, se recomienda el LEON3.

IX. AGRADECIMIENTOS

Los autores desean agradecer al Ingeniero Elio De María y a Martín Ferreira Birón, del Grupo de Investigación en Lógica Programable, por toda la colaboración prestada durante la realización de este trabajo.

X. REFERENCIAS

[1] John L. Hennesy y David A. Patterson, "Computer Architecture, a quantitative approach",ISBN:9780123838728,Quinta edición, McGraw-Hill, 16/09/2011

[2] http://www.gaisler.com/index.php/products/processors/leon3

Terry Schmidt, “Factors in choosing a microcontroller architecture”, Microchip Technology, USA

[3] http://www.gaisler.com/doc/leon3_product_sheet.pdf

[4] http://www.gaisler.com/doc/sparcv8.pdf

[5] http://www.xilinx.com/tools/microblaze.htm

[6] http://www.xilinx.com/ipcenter/processor_central/microblaze/doc/hwref .pdf

[7] http://www.xilinx.com/support/documentation/ip_documentation/ug761 _axi_reference_guide.pdf

[8] http://www.xilinx.com/support/documentation/ip_documentation/plb_v4 6.pdf

[9] http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_1/ mb_ref_guide.pdf

[10] http://jorisvr.nl/leon3_insntiming.html

[12] http://gaisler.com/products/grlib/grlib.pdf

[13] http://www.xilinx.com/tools/xps.htm

[14] http://www.xilinx.com/tools/sdk.htm

[15] http://www.gaisler.com/doc/Evaluation_of_synthesizable_CPU_cores.p df

IV Congreso Microelectrónica Aplicada (uEA 2013) 58

Universidad Tecnológica Nacional - Facultad Regional Bahía Blanca RED_UIE