fpga embedded soft hard ip cores - iuma -...

24
Microprocesadores para Comunicaciones FPGA embedded Soft and Hard IP cores Diciembre de 2013 Jaime Roberto Ticay Rivas

Upload: others

Post on 13-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

Microprocesadores para Comunicaciones

FPGA em bedded Soft and Hard IP cores

Diciembre de 2013 Jaime Roberto Ticay Rivas

Page 2: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

2

Índice

1. Introducción ................................................................................................. 3 2. IP Cores ....................................................................................................... 4

2.1 Soft cores ......................................................................................................................................... 4  2.2 Hard cores ....................................................................................................................................... 5

3. Soft processor IP cores ................................................................................ 5

3.1 Xilinx 8b PicoBlaze ........................................................................................................................ 5  3.2 MicroBlaze ...................................................................................................................................... 9  3.3 NIOS II .......................................................................................................................................... 12

4. Hard Processor IP cores ............................................................................. 18

4.1. XILINX PowerPC 405 ................................................................................................................. 18  4.2. Altera ARM ................................................................................................................................. 21

5. Conclusión ................................................................................................. 24 Bibliografía .................................................................................................... 24  

 

Page 3: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

3

1.  Introducción   La industria electrónica ha experimentado un gran crecimiento gracias al desarrollo de nuevas técnicas de fabricación e integración de semiconductores, un avance con un gran impacto dado el espectro de segmentos en los que tiene aplicación: procesadores de datos electrónicos, electrónica de consumo, industria automovilística, industria aereo-espacial, equipo industrial, electro-medicina, telecomunicaciones y aplicaciones específicas. La industria electrónica se caracteriza por la elevada especialización de las empresas a lo largo de la cadena de generación de valor. La configuración modular de los productos electrónicos, permite a las empresas externalizar fases de la producción y adquirir componentes y módulos a fabricantes especializados. En estas cadenas de suministro, la mayoría de las empresas se concentra en la actualidad en sus competencias básicas, que normalmente no son más de uno o dos procesos. Los procesos no básicos se externalizan a socios especializados y, cada vez más, al sector de EMS (Servicios de Fabricación Electrónica, en sus siglas en inglés) para conseguir ahorro de costos, un aumento de la eficiencia de la gestión de activos y una reducción de los plazos de comercialización, compartir el riesgo empresarial y concentrarse en las competencias básicas. La fabricación de productos electrónicos se ha convertido en una actividad completamente globalizada, con todo lo que ello comporta: fusiones y adquisiciones internacionales, competencia mundial en precios y formación de núcleos regionales de producción, especializados en una actividad productiva concreta. La reñida competencia, la acelerada caída de precios, la impredecible demanda de los consumidores y la limitada oferta de materiales conforman la realidad de la cadena de suministro electrónica mundial. La búsqueda de precios y márgenes más elevados propicia la constante aparición de productos nuevos, que permiten demandar un sobreprecio durante un corto plazo antes de convertirse en productos estándar. Este es el desafiante ciclo al que diariamente se enfrenta el grueso de las empresas activas en la práctica. Se debe considerar que para los fabricantes de electrónica, el plazo de puesta en el mercado adquiere una importancia crucial. Una gestión más acertada de las cadenas de ingeniería y suministro garantiza menores costes y unos plazos de desarrollo de productos más reducidos. Cuestiones como la globalización, los bajos márgenes, los cortos ciclos de vida de los productos, los cortos plazos de comercialización, la necesidad de contar con productos específicos para cada cliente y, por último en orden aunque no en importancia, la caída constante de los precios (de componentes y productos finales) llevan décadas en el candelero, aunque se han vuelto más acuciantes en los últimos años. La tendencia del uso de los dispositivo re-configurables es cada vez mayor ya que además de sus ventajas técnicas permite a la industria dar una buena respuesta de time-to-market. El uso de FPGAs con procesadores embebidos representan una poderosa solución desde el punto de vista económico y técnico, sobre todo cuando es necesaria la optimización de sistemas con el fin de aprovechar al máximo la interacción de arquitecturas hardware y software.

Page 4: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

4

En este trabajo se presenta una breve descripción de las tecnologías más importantes del mercado de los Soft Processor IP cores, y los denominados Hard Procesor IP cores. El resto del trabajo está estructurado de la siguiente manera: en la sección 2 se definirán los conceptos de IP cores, Soft cores y Hard cores. La sección 3 describe los Soft Processor IP cores del fabricante Xilinx, Picoblaze y Microblaze así como el Soft Processor IP core del fabricante Altera, NIOS II. La sección 4 trata los Hard Processor IP cores, PowerPC del fabricante Xilinx y el Hard Processor IP core ARM del fabricante Altera. Finalmente en la sección 5 se presenta una breve conclusión.

2.  IP  Cores   En un diseño electrónico una IP Core (intellectual property core) es una unidad lógica, celda o diseño reutilizable que tiene la finalizar de realizar una tarea especifica. Una IP core puede ser propiedad de un grupo o de una única persona física y se utilizan como bloques dentro de diseños para chips ASIC o para diseños lógicos con FPGAs. Las IP cores se venden en el mercado a través de empresas especializas en diseñar estas unidades. Recientemente, empresas que fabrican y venden FPGA han empezado a ofrecer sus propias IP cores. Las IP cores reducen el tiempo de diseño así como la necesidad de mano de obra a los diseñadores que trabajan con FPGAs. Una de las principal es ventajas de estas unidades es que han sido previamente diseñadas y verificadas. También, pueden ser modificadas lo que significa que se puede añadir así como eliminar parte de la funcionalidad inicial con el fin de que se adapte a las necesidades del si sema que se este creando. Otra ventaja es que son portables entre diferentes fabricantes. Un problema de las IP cores es que a veces pueden ser caras. Otro aspecto a tener en cuenta son las características eléctricas, como puede ser tiempo o consumo, ya que estas pueden ser optimizadas hasta cierto punto pero las características actuales dependen del uso en un dispositivo en particular y también dependen de la lógica a la cual están conectadas. La compra de IP cores a terceros puede causar resultados no esperados especialmente cuando ha sido integrada en un diseño propio. Estos resultados adversos pueden ser causados por falta de velocidad y/o exceso de consumo. En cuanto a los tipos que existen, se puede decir que existen dos grupos. Las unidades soft cores y las hardcores. 2.1  Soft  cores     Las IP cores se ofrecen sintetizables RTL. RTL, en inglés register transfer language, es un término utilizado para describir representaciones intermedias muy cercanas al lenguaje ensamblador. Las IP cores sintetizables se distribuyen en un lenguaje de descripción de hardware como Verilog o VHDL. Estos son análogos a otros lenguajes de nivel alto como C en el campo de programación de computadores. Las IP cores se distribuyen a los fabricantes de chips en formato RTL permitiendo al diseñador de chips hacer modificaciones a nivel funcional, aunque la mayoría de distribuidores de estas unidades no aseguran un buen funcionamiento de las IP cores que han sido modificadas ni tampoco soporte a los diseñadores que han modificado estas unidades. A veces las IP cores se ofrecen como netlists a nivel de puertas genéricas (en ingles generic gate level

Page 5: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

5

netlists). Un netlist es una representación algebraica booleana de la función lógica de las IP cores implementadas en puertas genéricas o celdas estándar para procesos específicos. Una IP core implementada en puertas genéricas es portable a cualquier tecnología de procesos, mientras que, los netlist son análogos al código en ensamblador utilizados para programación de ordenadores, es decir, un netlist proporciona al distribuidor de IP cores una protección razonable contra la ingeniería inversa. 2.2  Hard  cores   Estas IP cores ofrecen una predicción mayor del rendimiento del chip en cuanto a área y rendimiento de la respuesta. Esto es gracias a la naturaleza de su representación a bajo nivel. La lógica analógica y mixta (digital-analógica) son generalmente definidas mediante descripciones físicas y a bajo nivel. Por esta razón, las IP cores analógicas (SerDes, PLLs, DAC, ADC, etc.) se distribuyen a los fabricantes de chip en formato de trazado de transistores como GDSII. El formato GDSII , en inglés Graphic Data System, es un formato de fichero de datos que desde hace años ha sido en la industria de los circuitos integrados el estándar para el intercambio de datos entre herramientas de diseño físico de chips. A veces, las IP cores digitales también se ofrecen en este formato. Estas IP cores , ya sean analógicas o digitales, se llaman hard IP cores porque su función no puede ser modificada por los diseñadores de chips.

 

3.  Soft  processor  IP  cores    

3.1  Xilinx  8b  PicoBlaze   PicoBlaze es la designación a una serie de tres núcleos de procesadores de Xilinx para ser usados en sus productos de FPGA y CLPD. Estos procesadores están basados en un arquitectura RISC de 8 bits y puede alcanzar hasta una velocidad de procesamiento de 100 MIPS en la familia de FPGA de Virtex 4. Tiene un juego de instrucciones reducido, 16 registros, 256 puertos direccionables, 64 posiciones de memoria scratchpad, interrupción enmascarable y puede obtenerse un rendimiento en MIPS igual a la mitad de la frecuencia de reloj utilizada, por ejemplo, 25 MIPS a 50 MHz. La memoria de programa que se puede conectar al PicoBlaze es de hasta 1024 instrucciones ( está pensado para utilizar exactamente una Block RAM de la FPGA). La licencia de los núcleos permite su uso de forma gratuita aunque solamente en dispositivos y utilizando las herramientas de diseño de Xilinx. El diseño original de PicoBlaze fue originalmente nombrado KCPSM lo cual se corresponde con “Constant(K) Coded Programmable State Machine” (anteriormente “Ken Chapman's PSM”). Ken Chapman fue el diseñador de sistemas de Xilinx quien ideó e implementó el microcontrolador. 3.1.1 Rendimiento Todas las instrucciones se ejecutan en dos ciclos de reloj, haciendo que el rendimiento del conjunto de instrucciones sea determinista. La respuesta a interrupciones no toma más que cinco ciclos de reloj.

Page 6: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

6

Como fuente de optimización, es posible que dos núcleos PicoBlaze compartan la misma PROM de instrucciones de tamaño 1k x 18, aprovechando la implementación dual de puertos en este bloque en las FPGA's de Xilinx. 3.1.2 Notas de arquitectura La figura 1 es un diagrama de bloque de un modulo de Picoblaze. Por ejemplo, los módulos de Spartan no requieren soporte externo y proporcionan un entorno flexible para otras conexiones lógicas dentro del modulo PicoBlaze.

Figura 1. Diagrama de bloque de un módulo PicoBlaze.

El módulo PicoBlaze es proporcionado como descripción en VHDL y como macro soft precompilada la cual es tratada por las herramientas en asignación de emplazamiento y de mapeado para converger en la lógica de un diseño. La figura 2 es un gráfico obtenido del visor del Editor de la FPGA ( herramienta de diseño de Xilinx) en donde se muestra la macro en aislamiento dentro del dispositivo más pequeño Spartan-IIE.

Figura 2. Vista del Editor FPGA de una macro PicoBlaze en una Spartan-IIE XC2S50E

En dispositivos más grandes, el módulo PicoBlaze se encuentra virtualmente libre (figura 3). La posibilidad de utilizar múltiples módulos de PicoBlaze es totalmente obvia.

Page 7: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

7

Figura 3. Vista del Editor FPGA de una macro PicoBlaze en una Spartan-IIE XC2S300E

En la figura 4 se muestra la arquitectura del PicoBlaze. A continuación describiremos brevemente cada uno de los componentes que la conforman.

• Registros de propósito general (Registers) El conjunto de características incluye 16 registros de propósito general de 8 bit. Todos las operaciones en los registros son completamente flexibles, sin ningún registro reservado para una tarea especial o con una prioridad mayor sobre otros registro. No existen acumuladores de forma que ningún registro puede ser adoptado para usarlo como acumulador.

• Unidad aritmético lógica (ALU) La unidad aritmético lógica proporciona todas las operaciones simples que se esperan en una unidad de procesamiento de 8 bits. Todas las operaciones se ejecutan usando un operando dado por cualquier registro. El resultado se devuelve al mismo registro. Para operaciones que requieren un segundo operando, se puede especificar un segundo registro o se puede proporcionar una constante con un valor de 8 bits. La capacidad de especificar cualquier valor constante sin ninguna penalización en el tamaño del programa o en el rendimiento, mejora el conjunto de instrucciones simples.

• Banderas para el control de flujo del programa. Los resultados de las operaciones en la ALU afectan las banderas ZERO y CARRY. Esta información determina la secuencia de ejecución del programa usando instrucciones de flujo de control condicionales y no condicionales. Los comandos JUMP especifican direcciones absolutas dentro del espacio del programa. Los comandos CALL y RETURN proporcionan facilidades de subrutinas para las secciones de uso general de código. Se ejecuta un comando CALL para una dirección absoluta especificada, mientras que un contador de pila de programa conserva la dirección obtenida. La pila proporciona CALL anidadas de hasta 15 niveles de profundidad, más que suficiente para el tamaño de los programas que

Page 8: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

8

puede implementar.

• Reset La entrada de RESET fuerza al procesador al estado inicial. El programa se ejecuta desde la dirección 00 y se deshabilitan las interrupciones. El estado de las banderas y la pila CALL/RETURN también son reinicializadas. Un aspecto a destacar es que los contenidos de los registros no se ven afectados.

Figura 4. Arquitectura del PicoBlaze

Page 9: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

9

• Entradas – salidas El modulo PicoBlaze tiene 256 puertos de entrada y 256 puertos de salida. Un valor de direcciones de 8 bits se proporciona en el bus PORT_ID junto con las señales READ_STROBE o con el WRITE_STROBE para indicar el puerto al que se accede. La dirección de puerto se puede dar de dos formas: en el programa como un valor absoluto o especificado indirectamente como el contenido de uno de los 16 registros. Durante la operación de INPUT, el valor dado en el puerto de entrada es transferido a cualquiera de los 16 registros. Una operación INPUT se indica por un pulso de salida READ_STROBE. Aunque el uso de esta señal no es estrictamente necesaria, indica que un dato ha sido adquirido por el módulo. Por otro lado, durante la operación OUTPUT, el contenido de cualquiera de los registros es transferido al puerto de salida. Al igual que la operación de entrada (INPUT operación) esta se indica con un pulso de salida WRITE_STROBE. Esta señal se usa para asegurar que solo se pasa un dato válido al sistema externo. Normalmente, WRITE_STROBE se usa como un entable de reloj o una señal entable de escritura.

• Interrupción El procesador proporciona una señal de entrada de interrupción. Usando lógica combi nacional simple, múltiples señales se pueden combinar y aplicar a esta única señal de entrada. Por defecto, la respuestas de la señal de interrupción vienen deshabilitadas y se deja al control del programa habilitarla o deshabilitarla en función de las necesidades. 3.2  MicroBlaze   El procesador soft Microblaze es parte del kit de desarrollo de procesador embebido (Embedded Processor Development Kit (EDK)). Como un procesador de núcleo soft, se encuentra totalmente definido e implementado mediante una descripción hardware y en este caso, optimizado para FPGAs de Xilinx. La figura 5 muestra un diagrama de bloque del núcleo del MicroBlaze.

Page 10: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

10

Figura 5. Diagrama de bloque del núcleo del MicroBlaze.

3.2.1. Repertorio de Instrucciones La restricción de espacio fuerza a un diseño sencillo, que encaja perfectamente con la idea de las arquitecturas tipo RISC (Reduced Instruction Set Computer), donde el limitado número de instrucciones permite simplificar la unidad de descodificación. En el caso de MicroBlaze, el número total de instrucciones que soporta son 87, si se consideran diferentes las instrucciones que operan con valores inmediatos de aquellas que realizan la misma operación con registros. Adicionalmente, cada instrucción se ha elegido para que el tamaño de la ALU también sea reducido. Las instrucciones que requieran un procesamiento complejo habrán de realizarse en un hardware específico, diseñado utilizando los restantes recursos de la FPGA. El mecanismo de conexión de estos co-procesadores con Microblaze se especifica en el protocolo FSL (Fast Simple Link). 3.2.2. Pipeline Una arquitectura RISC aumenta fácilmente su rendimiento por medio de la segmentación (Pipelining) . En el caso de MicroBlaze, el número de etapas de pipeline es 3, ejecutando una instrucción por ciclo de reloj. Como contrapartida, la segmentación debe incorporar mecanismos para evitar los problemas relacionados con los saltos de programa. En un salto, la pila está llena de instrucciones que no corresponden con el flujo de ejecución. Estos riesgos están tratados por hardware en MicroBlaze: cada vez que se produce un salto, el pipeline se vacía cuando el salto se hace efectivo. En el repertorio se incluyen un cierto número de instrucciones de salto que permiten la ejecución de la instrucción que les precede, con el objetivo de reducir la penalización de vaciado. Esta técnica es conocida como Delay

Page 11: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

11

Slots. 3.2.3. Registros Internos y Caché Las FPGAs actuales disponen de memoria distribuida con un tiempo de acceso corto, cuando son utilizadas por la lógica cercana. Este tipo de memoria es utilizada por MicroBlaze para materializar sus 32 registros internos, el contador de programa y el registro de estado. Este último sólo contiene el bit de acarreo, habilitación de cachés, indicador de estado de parada (break), error en el FSL y bit de excepción producida por división por cero. Además de estos registros internos, MicroBlaze utiliza un buffer de 16 instrucciones mapeado en los registros de desplazamiento SRL de los slices. Este recurso es fundamental para un buen rendimiento del procesador. Por ejemplo, en caso de que no disponer de multiplicador y/o divisor hardware, se aprovecha el tiempo que tarda en ejecutarse esta instrucción (32 ciclos) para tener preparadas las siguientes instrucciones. La utilización de cachés es una práctica habitual en arquitecturas modernas; el diseño de MicroBlaze no es una excepción. Pero en este caso, la utilización y configuración de los tamaños de caché pueden ser fijados por el usuario. Para ello, existe el siguiente conjunto de opciones a la hora de configurar el procesador: habilitación de caché de instrucciones y/o datos, tamaño, rango de direcciones y tamaño de palabra, aunque esta ultima opción solo es valida para la caché de datos. Opciones no configurables por el usuario son tamaño de los bloques de caché, la política de sustitución de bloques o el grado de asociatividad de la caché. Todas estas opciones se especifican antes de sintetizar el diseño. Las cachés son de tipo asociativo, por lo cual es necesario el calcular el número de bits de la dirección (tag bits) que especifican bloques contenidos en caché, mediante la ecuación (1). Numero tag bits = log2(rango de memoria cacheable) - log2(tamaño de la caché) (1) Las cachés utilizan los bloques de RAM fijos (BRAM) que contiene la FPGA. Sin embargo, códigos compactos también pueden mapearse en BRAM. Por lo tanto, la utilización de cachés será necesaria en aquellos casos donde el código o los datos utilizado por MicroBlaze residan fuera de la FPGA. 3.2.4. Buses del Sistema MicroBlaze sigue el modelo de arquitectura Harvard, donde datos e instrucciones son almacenados en memorias diferentes. De nuevo, gracias a la capacidad de reconfiguración de las FPGAs, es posible configurar el sistema con diferentes opciones sobre los buses , pudiéndose reducir de este modo el tamaño final del sistema. MicroBlaze utiliza el estándar CoreConnect creado por IBM, para conectar diferentes elementos en un circuito integrado. Un aspecto interesante es que CoreConnect permite reducir la carga capacitiva del bus , repartiéndola entre varios buses. Así, se consiguen mayores rendimientos, dado que los retardos de pistas globales son muy importantes en FPGAs. El estándar define tres tipos de buses, cada uno con unas características de velocidad y conectividad: LMB: (Local Memory Bus): Bus síncrono de alta velocidad, utilizado para conectar periféricos y los bloques de memoria interna de la FPGA. Solo admite un maestro en su implementación para MicroBlaze y puede ser utilizado tanto para instrucciones como para datos. Este buses compatible con el PLB (Processor Local Bus) incluido en el estándar CoreConnect, pero a diferencia de éste, el LMB no admite varios maestros ni tamaños de palabra diferentes a 32 bits.

Page 12: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

12

OPB: (On-chip Peripheral Bus): Bus síncrono utilizado para conectar periféricos con tiempos de acceso variables. Soporta varios maestros y la conectividad de muchos periféricos es sencilla gracias a su identificación por multiplexación distribuida. Soporta transferencias de tamaño de palabra dinámico. DCR: (Device Control Register): Bus síncrono diseñado para una conexión tipo anillo de periféricos con ancho de banda muy bajo. Solo soporta un maestro y está diseñado para minimizar el uso de lógica interna.

Tabla 1. Comparación de buses de MicroBlaze

Además de estos tres buses existe otra alternativa para comunicarse con el procesador MicroBlaze. Se trata de un protocolo de comunicación denominado FSL (Fast Simple Link) mencionado anteriormente, que permite la comunicación con el procesador a través de sus propios registros internos. El periférico actuaría a modo de co-procesador y la conexión se realiza de manera sencilla a través de unos registros de desplazamiento de 32 bits de ancho. La comunicación con estas FIFOs se realiza con dos instrucciones específicas del repertorio, que realizan las funciones de push y pop de estas memorias de desplazamiento. MicroBlaze soporta hasta 16 dispositivos conectados con este protocolo. 3.2.5. Interrupciones y excepciones El procesador MicroBlaze contiene una línea de interrupciones, la cual al ser activada hace que el procesador ejecute una rutina de manejo de interrupciones que ha de ser especificada al compilador. Las excepciones se tratan de forma similar. Cuando una de ellas ocurre, se paraliza el procesamiento de instrucciones y se ejecuta una rutina de manejo de excepciones. En el caso de que el sistema necesite manejar más de una interrupción, será necesario la utilización de un periférico específico (OPB Interrupt Controller), que se encarga de multiplexar e identificar las diferentes fuentes de interrupción. 3.3  NIOS  II   El Nios II es un núcleo procesador configurable proporcionado por el fabricante Altera para ser utilizado sobre sus FPGAs comerciales. Se trata de un procesador RISC de 32 bits de propósito general basado en una arquitectura tipo Harvard , (usa buses separados para instrucciones y para datos). Entre sus características principales encontramos:

• Juego completo de instrucciones, datos y direcciones de 32 bits.

Page 13: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

13

• 32 registros de propósito general.

• Juegos opcionales de registros shadow

• 32 fuentes de interrupción externa.

• Una interfaz de control de interrupciones externas para fuentes adicionales. • Instrucciones dedicadas para multiplicaciones de 64 y 128 bits.

• Instrucciones para operaciones de coma flotante en precisión simple.

• Operaciones de multiplicación y división de 32 bits.

• Acceso a variedad de periféricos integrados e interfaces para el manejo de memorias y

periféricos externos.

• Una memory management unit (MMU) opcional para soportar sistemas operativos que la necesiten.

• Una memory protection unit (MPU) opcional.

• Entorno de desarrollo de software basado en la herramienta GNU C/C++.

Figura 6. Diagrama de bloques del núcleo del procesador NIOS II.

3.3.1 Unidad Aritmético lógica La ALU del Nios II opera con datos almacenados en registros de propósito general. Las operaciones de la ALU reciben uno o dos datos de entrada desde los registros y almacena el resultado en otro. Las

Page 14: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

14

operaciones soportadas por la ALU del Nios II son:

Tabla 2. Operaciones soportadas por la ALU

3.3.2 Gestión de excepciones e interrupciones El procesador Nios II incluye hardware para el manejo de excepciones, incluyendo interrupción hardware. También incluye una interfaz de control de interrupciones externas opcional (EIC). La arquitectura del Nios II proporciona un controlador de excepciones muy simple para manejar todo tipo de ellas. Cada excepción, incluyendo las interrupciones internas de hardware, causa que el procesador transfiera la ejecución mediante una dirección de excepción. En dicha dirección, un controlador de excepciones determina la causa de la excepción y ejecuta la rutina correspondiente. Estas direcciones de excepción se pueden comprobar en el propio software de configuración del sistema Nios II, permitiendo así un control óptimo del diseño. Todas las excepciones son precisas. Esto quiere decir que el procesador tiene que completar la ejecución de todas las instrucciones precedentes a la causa que la genera, y no comenzará la ejecución de las instrucciones posteriores al momento de la generación de dicha interrupción hasta finalizar la rutina correspondiente. En el sistema Nios II encontramos dos tipos diferentes de excepciones:

1. Excepciones software: producida al aparecer en un programa una instrucción de interrupción que transfiriere el control a un programa diferente.

2. Excepciones hardware: cuando se produce un evento sobre cualquiera de las 32 entradas de

petición de interrupción disponibles en el microprocesador (IRQ0 a IRQ31). El controlador de interrupciones externo proporciona un control de interrupciones vectorizado (VIC, Vectored Interrupt Controller) con el que se da respuesta a las interrupciones a través de vectores de interrupción separados y según un determinado nivel de prioridad. Así, cuando se produce una interrupción se transfiere la ejecución directamente a la rutina de atención (ISR, Interrupt Service Rutine) apropiada, indicada por dicho vector a través de una instrucción de salto. Hay que tener en cuenta que, para que se pueda generar una interrupción, se deben cumplir las siguientes tres condiciones:

• Que se encuentre activado el bit (PIE) del registro de estado que habilita las interrupciones de forma global.

• Que se produzca una llamada a una de las entradas de atención de interrupción (IRQ).

• Que se encuentre activado el bit correspondiente a dicha entrada en el registro de control de

Page 15: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

15

interrupciones habilitadas (IENABLE). 3.3.3 Conexión y acceso a memoria y periféricos El núcleo del Nios II utiliza uno o más de los siguientes modos de conexión para acceder a memoria o a los periféricos:

• Puerto maestro de instrucciones y datos: Un puerto maestro del tipo Avalon Memory -Mapped (Avalon MM) que conecta las instrucciones o los datos almacenados en memoria mediante un sistema de interconexión por defecto para los sistemas Nios II.

• Conexión a través de caché (para datos e instrucciones): Una memoria caché interna y de

acceso rápido.

• Conexión directa a bloques de me moria externos al propio núcleo del Nios II. La propia arquitectura del Nios II oculta los detalles de configuración del hardware al diseñador, lo que permite un diseño sencillo sin necesidad de conocimientos específicos para su implementación.

Figura 7. Organización de la memoria y periféricos del NIOS II

Page 16: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

16

La arquitectura del Nios II proporciona buses separados para las instrucciones y los datos, (tipo Harvard). Ambos buses están implementados bajo las especificaciones del sistema Avalon-MM. Los puertos maestros de los datos se conectan tanto a las memorias como a los periféricos, mientras que los de instrucciones se conectan únicamente a las memorias. El bus de instrucciones del Nios II esta implementado como un puerto maestro de 32 bits del tipo Avalon-MM. Este puerto realiza una única función: recoge las instrucciones para ser ejecutadas por el procesador. Los puertos de instrucciones no realizan ningún tipo de operación de escritura. Este puerto maestro es del tipo pipelined Avalon-MM. Esta configuración minimiza el impacto de transferencias síncronas de memoria e incrementa la frecuencia máxima general de todo el sistema. Este maestro puede emitir peticiones de lectura sucesivas antes que el dato de peticiones previas haya sido registrado. Este maestro siempre devuelve datos de 32 bits, utilizando un sistema lógico dinámico para adecuar el ancho del bus contenido en los propios sistemas por defecto de interconexión. Gracias a ello, cada instrucción recogida devuelve una palabra completa independientemente del ancho de la memoria objetivo. El bus de datos del Nios II esta implementado como un puerto maestro de 32 bits del tipo Avalon-MM. Dicho maestro realiza dos funciones:

• Lectura de datos desde un dispositivo de memoria o un periférico cuando el procesador ejecuta una instrucción de carga.

• Escritura de datos a un dispositivo de memoria o periférico cuando el procesador ejecuta una

instrucción de almacenamiento. La señal de Byte enable en el maestro especifica cuáles de los cuatro bytes que forman el valor total del dato deben de ser utilizados durante las transferencias de escritura. La arquitectura del Nios II proporciona memorias caché tanto para los maestros de instrucciones como para los datos. Esta memoria caché reside dentro del propio núcleo del procesador Nios II como parte integral de éste. Este tipo de memorias permite la mejora del tiempo medio de acceso para los sistemas basados en Nios II que usan dispositivos de memoria externos lentos tales como un SDRAM. Las cachés de datos e instrucciones están habilitadas de manera permanente durante la ejecución del programa, pero se proporcionan métodos para el software con el objeto de evitar que los accesos a los periféricos no devuelvan datos a la caché. La gestión de la caché y su correcto funcionamiento está manejado por software. Estas memorias caché son opcionales y dependen directamente del objetivo del diseño a realizar. El núcleo de un procesador Nios II puede incluir una, ambas o ninguna de las memorias caché. Y en caso de ser usadas, ambas son completamente configurables por el diseñador. Su uso no afecta a la funcionalidad de los programas cargados, sin embargo sí que afecta a la velocidad a la que el procesador ejecuta las instrucciones y la lectura/escritura de los datos. Existen dos métodos para la derivación de la caché:

• Instrucciones de carga y almacenamiento para periféricos I/O: Instrucciones como dio o sitio derivan la caché de datos y fuerzan una transferencia de datos a una dirección específica.

• Método de derivación caché del bit-31: este procedimiento usa el bit 31 de la dirección como un

Page 17: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

17

marcador para indicar si el procesador debería transferir datos a/desde una caché, o bien derivarlos.

La conexión directa a bloques de memoria externos garantiza accesos de baja latencia para aplicaciones que lo necesiten. Entre los beneficios de este tipo de accesos se encuentran:

• Un rendimiento similar a la memoria caché. • El software puede garantizar que el código o los datos críticos se encuentran localizados en el

dispositivo de memoria externo.

• No existe sobrecarga en el almacenamiento a tiempo real, tales como carga, invalidación o borrado de memoria.

El mapa de direcciones para memoria y periféricos en un sistema basado en un procesador Nios II depende cada diseño. Dicho mapa de direcciones se especifica antes de generar el sistema. Hay tres direcciones que son parte del procesador y merecen una mención especial:

• La dirección de reset. • La dirección de excepción. • La dirección de ruptura del controlador.

La unidad de gestión de memoria opcional presente en los diseños basados en el procesador Nios II proporciona, entre otras, las siguientes funcionalidades:

• Mapeado virtual para direcciones físicas. • Protección de memoria. • Direcciones virtuales y físicas de 32 bits. • Un espacio de 512 MB de direcciones físicas disponible para accesos directos. • Hardware translation lookaside buffers (TLBs), que permite la aceleración de las • traducciones de las direcciones:

- TLBs separados para accesos a instrucciones y datos. - Lectura, escritura y ejecución de permisos controlados por sección.

• Formato de tablas de sección (o estructuras de datos equivalente) determinado por software. Los sistemas basados en Nios II pueden incluir bien un MPU o un MMU, pero no pueden incluir a ambos a la vez en el mismo núcleo del procesador. 3.3.4. Juego de instrucciones El procesador Nios II proporciona un juego de instrucciones de tipo RISC con una longitud de instrucción de 32 bits. Dentro del conjunto de instrucciones podemos encontrar diez categorías:

• Instrucciones de carga y almacenamiento: este tipo de instrucciones son las encargadas de realizar las transferencias de contenido entre las memorias o las interfaces de entrada/salida y

Page 18: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

18

los registros de propósito general. Esto permite la lectura o escritura a distintos niveles de palabras, (32,16 y 8 bits).

• Instrucciones aritméticas: Este tipo de instrucciones realizan las operaciones aritméticas básicas con los datos presentes en los registro s de propósito general o con un valor inmediato proporcionado por la instrucción.

• Instrucciones lógicas: Este tipo de instrucciones realizan las operaciones lógicas habituales con los datos presentes en los registros de propósito general o bien con un valor dado.

• Instrucciones de transferencia entre registros: Este tipo de instrucciones se encargan de copiar el contenido de un registro en otro o bien un valor indicado de forma inmediata.

• Instrucciones de comparación: Este tipo de instrucciones comparan el contenido de dos registros o el de un valor dado y el de un registro, y escriben el resultado en el registro designado para ello.

• Instrucciones de rotación y desplazamiento: Este tipo de instrucciones rotan o desplazan el contenido presente en un registro.

• Instrucciones de ruptura y salto: Este tipo de instrucciones se encargan de cambiar el flujo de ejecución de un programa bien de forma condicional o no.

• Instrucciones de llamada a subrutina: Este tipo de instrucciones permiten la llamada y el retorno de sub-rutinas.

• Instrucciones de manejo de excepciones: Este tipo de instrucciones generan una interrupción de software y el retorno de la rutina de atención de interrupción.

• Instrucciones de control: Este tipo de instrucciones especiales se utilizan para leer y escribir en los registros de control.

4.  Hard  Processor  IP  cores   4.1.  XILINX  PowerPC  405   El procesador PowerPC 405 es una realización embebida hard de 32 bits, de la arquitectura estándar de procesamiento industrial PowerPC Harvard RISC, con versiones 405D5 para FPGA Virtex-II Pro y 405F6 para Virtex-4 y Virtex-5. Estas versiones utilizan un modelo de software que asegura la compatibilidad con toda la familia de procesadores PowerPC, al nivel de programas de aplicación. Su manejo le proporciona al usuario la posibilidad de desarrollar sistemas embebidos completos, con alta flexibilidad para las particiones hardware/software y gran capacidad de aceleración y co-procesamiento hardware. 4.1.1 Organización y características. La organización del PowerPC 405 se divide en unidades de cache, unidad de administración de memorias (MMU), el GPP y los elementos de temporización y depuración (Figura 8), en una arquitectura que presenta las siguientes características generales:

Page 19: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

19

Figura 8. Organización del PowerPC 405

• Núcleo hard de procesador embebido de 450 MHz, 700+ DMIPS.

• Pipeline de datos de 5 estados (búsqueda, decodificación, ejecución, re-escritura y carga de re-

escritura), con ejecución de ciclo único de la mayoría de las instrucciones. • Unidad de ejecución de punto fijo, con arquitectura de 32 bits, conteniendo 32 registros de 32

bits de propósito general. • Módulos hardware de multiplicación/división, para acelerar la aritmética entera (multiplicación

en 4 ciclos, división en 35 ciclos). • Caches de datos e instrucciones, de conjuntos asociativos de 16 KB y 2 vías. • Unidad de administración de memoria (MMU), que habilita la realización de sistemas

operativos en tiempo real (RTOS), a partir de múltiples tamaños de páginas y una variedad de atributos de protección de almacenamiento y opciones de control de acceso.

• Buffers de traslación Look-aside (TLB) de 64 entradas unificadas. • Tamaño de pagina variable (1 KB – 16 KB). • Controladores avanzados de datos e instrucciones de memoria en chip (OCM), con Interface

directa a los bloques de RAM. • Soporte de arquitectura de bus IBM CoreConnect. • Lógica de depuración utilizando la Interface JTAG y soporte de trazo.

Page 20: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

20

4.1.2 Características de la arquitectura en el ambiente embebido El PowerPC 405 es una realización optimizada para ambientes embebidos, por lo que presenta características especificas que lo hacen propio para el diseño de SoC sobre FPGA:

• Administración de memoria optimizada para ambientes de software embebidos. • Instrucciones de administración del cache para optimizar el rendimiento y el control de la

memoria en aplicaciones gráfica y numéricamente intensivas. • Extensiones de la arquitectura del PowerPC para el soporte de aplicaciones embebidas:

operaciones true little-endian, administración flexible de memoria, instrucciones de multiplicación-acumulación para aplicaciones de cómputo intensivas, capacidad de depuración avanzada, base de tiempo de 64 bits, temporizadores de intervalos programables y fijos y temporizador guardián.

• Registros de propósito especial para controlar el uso de los recursos de depuración, recursos del

temporizador, interrupciones, atributos de almacenamiento en modo real, facilidades de administración de memoria y otros recursos del procesador.

• Un espacio de direcciones del registro de control del dispositivo para la administración de periféricos en chip tales como controladores de memoria.

• Estructura de interrupción de nivel dual e instrucción de control de interrupciones. • Recursos de depuración que habilitan las funciones de depuración hardware y software, tales

como puntos de rompimiento de instrucciones, puntos de rompimiento de datos y ejecución de programas paso a paso.

4.1.3. Interfaces de entrada y salida. El procesador PowerPC 405 cuenta con un grupo completo de Interfaces, puertos y líneas de entrada y salida, para su control, depuración e interconexión con la lógica y los componentes internos y externos de la FPGA:

• Interface de reloj y administración de energía (CPM), que habilita que las aplicaciones sensibles al consumo de energía controlen el reloj del procesador utilizando lógica externa.

• Interface de control del GPP, para proporcionar información de la configuración del GPP y reportar la detección de una condición de verificación de máquina al procesador.

• Interface de reset, para iniciar por hardware el bloque de procesamiento, en la energización o en cualquier momento durante la operación normal. En este último caso, la ejecución de instrucciones es detenida inmediatamente y el procesador pierde su estado.

• Interfaces del bus local del procesador (PLB), en los lados de instrucciones (ISPLB) y • datos (DSPLB). El ISPLB habilita a la unidad de cache de instrucciones del procesador (ICU)

para leer instrucciones como elemento maestro, desde cualquier dispositivo conectado al PLB, con un bus de direcciones de 30 bits y un bus de datos de 32 ó 64 bits. El DSPLB habilita a la unidad de cache de datos del procesador (DCU) para leer y escribir datos como elemento maestro, desde cualquier dispositivo de memoria conectado al PLB, con un bus de direcciones de 32 bits y dos buses de datos de 32 ó 64 bits (uno para lectura y otro de escritura).

• Interface del registro de control del dispositivo (DCR), en su versión normal e interna. La Interface DCR normal proporciona un mecanismo para que el bloque procesador inicialice y controle los dispositivos periféricos que residen en la misma FPGA. La DCR interna puede ser usada para controlar, configurar y mantener el estado de las diversas unidades funcionales del

Page 21: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

21

bloque procesador. • Interface de bus DCR externo, la cual consiste en un bus de direcciones de 10 bits, buses de

datos de entrada y salida separados de 32 bits y las señales de control y reconocimiento de lectura y escritura, para la conexión de una cadena distribuida y multiplexada de periféricos.

• Interface controladora de interrupciones externas, para el manejo de las dos clases de interrupciones externas que soporta el procesador: criticas (de mayor prioridad) y no criticas.

• Puerto de depuración JTAG, para el soporte de depuración de software por medio de herramientas como el depurador GNU (GDB) incluido en el EDK.

• Interface de depuración, que habilita a las herramientas de depuración externas para operar los recursos del procesador en modo de depuración externa, en el cual se puede alterar la ejecución normal del programa para depurar el sistema en hardware y software.

• Interfaces de trazo, para la operación del modo trazo-depuración en tiempo real. • Interface del registro de versión del procesador (PVR), para el bloque procesador de la Virtex-

4-FX, con la cual se accede a 8 bits del PVR, para identificar a cada procesador en un ambiente de multiprocesamiento o para codificar alguna descripción especial de procesamiento.

4.2.  Altera    ARM    

ARM es una arquitectura RISC de 32 bits desarrollada por ARM Holdings. Se llamó Advanced RISC Machine, y anteriormente Acorn RISC Machine. La arquitectura ARM es el conjunto de instrucciones de 32 bits más ampliamente utilizado en unidades producidas. Concebida originalmente por Acorn Computers para su uso en ordenadores personales, los primeros productos basados en ARM eran los Acorn Archimedes, lanzados en 1987. El juego de instrucciones del ARM es similar al del MOS 6502, pero incluye características adicionales que le permiten conseguir un mejor rendimiento en su ejecución. Para mantener el concepto tradicional de RISC, se estableció la ejecución de una orden en un tiempo, por lo general, de un ciclo. La característica más interesante es el uso de los 4 bits superiores como código de condición, haciendo que cualquier instrucción pueda ser condicional. Este corte reduce el espacio para algunos desplazamientos en el acceso a la memoria, pero permite evitar perder ciclos de reloj en el pipeline al ejecutar pequeños trozos de código con ejecución condicional. Otra característica única del juego de instrucciones es la posibilidad de añadir shifts y rotar en el procesamiento de datos. Todo esto ocasiona que se necesiten menos operaciones de carga y almacenamiento, mejorando el rendimiento. El procesador ARM también tiene algunas características que son raras en otras arquitecturas también consideradas RISC, como el direccionamiento relativo, y el pre y post incremento en el modo de direccionamiento.

Tiene dos modos de funcionamiento: el ARMI con instrucciones que ocupan 4 bytes, más rápidas y potentes (hay instrucciones que sólo están en este modo) pero con mayor consumo de memoria y de electricidad. Y el modo THUMB, más limitado, con instrucciones que ocupan 2 bytes y con menor consumo de corriente.

Page 22: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

22

4.2.1. FPGA ARM CORTEX-A9 MPCore

Actualmente ARM uno de los procesadores estándar para los sistemas embebidos. El ARM Cortex-A9 es uno de los procesadores de alto rendimiento y que cuenta con las últimas características implementadas. Es un procesador con dos núcleos que implementa el juego de instrucciones de ARMv7 e incluye las siguientes características.

• Multiprocesamiento de datos en ambos núcleos en donde ambos pueden realizar un multiprocesado simétrico (SMP) y multiprocesado asimétrico (AMP).

• Superescalar, fuera de orden, ejecución especulativa de 8 estados de pipeline.

• Predicción de salto avanzado.

• Precisión simple y doble (IEEE estándar 754-1985).

• ARM NEON motor de procesado multimedia de 128 bit Single Instruction Multiple Data (SIMD).

• Jazelle. Permite compilador dinámico byte-code.

• TrustZone. Arquitectura para aumentar sistemas de seguridad. La figura 9. Muestra el diagrama de bloque del ARM Cortex-A9 MPCore y en la figura 10 la estructura de la microarquitectura y las interfaces entres los núcleos.

Figura 9. Diagrama de bloques del Cortex A9 MPCore

Page 23: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

23

Figura 10. Microarquitectura del ARM Cortex A9 MPCore

La figura 11 muestra el sistema de procesador hardware (HPS) en donde se encuentra embebidos el Cortex A9 MPCore y su situación dentro de la FPGA. Como se puede observar, los periféricos embebidos eliminan la necesidad de implementarlos mediante funciones de lógica combinacional obteniendo un aumento en el rendimiento y un ahorro de recursos en la FPGA. Además el alto throughput entre el HPS y la FPGA proporcionan una interconectividad de fábrica que no es posible en una solución de dos chips. La integración tan ajustada de la HPS y la FPGA dan unos picos de alrededor de 125 Gbps de ancho de banda con una coherencia integrada de datos entre el procesador y la FPGA.

Figura 11. FPGA y HPS

Page 24: FPGA embedded soft hard IP Cores - IUMA - ULPGCnunez/clases-micros-para-com/mpc1314-trabajos/mpc13-6-Ticay-FPGA...utilizado para describir representaciones intermedias muy cercanas

24

5.  Conclusión   En este trabajo se han presentado las distintas alternativas en cuanto a procesadores embebidos se refiere. En primer lugar se han definido los conceptos de IP cores para luego concretar el significado de Soft IP core y Hard IP core. Se describieron brevemente las soluciones proporcionadas por los fabricantes Xilinx y Altera. Como Software Processors IP cores se describieron el PicoBlaze, el MicroBlaze y el NIOS II. Como Hard Processors IP cores se estudiaron el PowerPC y el ARM Cortex MPCore. Cada uno de ellos presenta unas características específicas que hacen posible conseguir el máximo rendimiento si se hace la elección correcta. Cabe destacar que actualmente ya se están empezando a integrar con las FPGA procesadores de alta gama como lo es el ARM Cortex A9 MPCore de doble núcleo y de 32 y 64 bits y trabando con tecnologías de 28 nm.

Bibliografía   www.xilinx.com www.altera.com http://www.altera.com/literature/manual/rm_cv_soc_dev_board.pdf http://www.xilinx.com/support/documentation/user_guides/ug011.pdf http://www.xilinx.com/products/intellectual-property/picoblaze.htm http://www.xilinx.com/support/documentation/sw_manuals/mb_ref_guide.pdf http://www.altera.com/devices/processor/nios2/ni2-index.html Pera Blanch Aubia, Coprocesador FPU (Floating -Point Unit), Escóla Técnica Superio Enginyeria, 2012