1 / 32

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS. Oviedo Marcos <moviedo@gmail.com>. Introducción. Agenda. Arquitecturas Mixtas Lógica Programable en FPGAs Ventajas y desventajas de plataformas basadas en FPGAs Porque el creciente interés de las FPGAs Implementación de un SoC

kylene
Télécharger la présentation

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS Oviedo Marcos <moviedo@gmail.com> Introducción

  2. Agenda • Arquitecturas Mixtas • Lógica Programable en FPGAs • Ventajas y desventajas de plataformas basadas en FPGAs • Porque el creciente interés de las FPGAs • Implementación de un SoC • Diseño embebido en una FPGA (SoC) • Motivación para utilizar un SO • Componentes aceleradores en FPGA • Canal de comunicación entre componentes de hardware y software • Temas propuestos

  3. Arquitecturas Mixtas • Una arquitectura mixta se basa en la utilización conjunta de un sistema embebido y módulos de computación reconfigurable a través de FPGAs. • Esta integración de componentes también se conoce como Sistemas en Chip • Un sistema en chip (SoC) es la habilidad de colocar múltiples funcionalidades de hardware o "sistemas" en una sola pastilla de silicio. • Esto permite por ejemplo desarrollar un sistema embebido basado en microprocesador que trabaje en conjunto con un componente acelerador implementado en una FPGA.

  4. Lógica Programable en FPGAs • Una FPGA (Field Programmable gate array) es un chip de lógica programable que contiene: • Bloques lógicos programable • Matrices de interconexión programables • Puertos de entrada/salida programables • RAM en bloque • Puede contener microprocesadores necesarios para implementar sistemas embebidos • Computación reconfigurable • Bloques de hardware que se pueden reprogramar e interconectar de manera diferente para implementar un nuevo componente de aplicación especifica.

  5. Arquitectura de una FPGA Programmable Logic (CLB) K Out Inputs D FF LUT Clock BLE # 1 N N Programmable Routing I Outputs I Inputs BLE # N Clock Programmable IO

  6. Ventajas y desventajas de plataformas basadas en FPGAs • Ideal para prototipado de sistema • La gran variedad de kits de desarrollo disponibles permiten encontrar los requerimientos de hardware que necesitamos para desarrollar un prototipo de nuestro sistema. • Se simplifican las actualizaciones en campo • La arquitectura es reconfigurable! Simplemente se baja un nueva configuración (bitstream) y se actualiza la funcionalidad.

  7. Ventajas y desventajas de plataformas basadas en FPGAs (continuación) • Existe un gran numero de funcionalidades de hardware en forma de librerías (IP Cores) disponibles para usar. • Procesadores por software, buses de alta velocidad, interfaces de telecomunicaciones, etc. • Esto permite elegir los componentes necesarios y crear nuestra plataforma. • Como desventaja, el uso de plataformas basadas en FPGAs requiere conocimientos muy diferentes a los necesarios para utilizar plataformas de computo tradicionales. • La curva de aprendizaje es reducida mediante el uso de herramientas EDA y ESL.

  8. 80’s 90’s Now Porque el creciente interés de las FPGAs • Field Programmable Gate Arrays • Increasing speed & density • Increased I/O pin count and bandwidth • Lower power • Lower cost per gate • Integration of hard IP (e.g. multipliers, PowerPC cores) • Architectural Synthesis • Emergence of hardware synthesis tools based on conventional software languages (C, Fortran…) • Improved hardware compiler optimization techniques • Mapping of software design patterns to hardware

  9. Implementación de un SoC • Para implementar el SoC se puede utilizar el kit de desarrollo Avnet FX12 Minimodule, compuesto por: • Una FPGA Virtex4 de la empresa XILINX. • Un puerto PHY 10/100/1000 Ethernet. • 64 MB DDR RAM. • Interfase serial RS232. • Interface de programaciónJTAG.

  10. Implementación de un SoC (continuación)

  11. Implementación de un SoC (continuación)

  12. SoC sin personalización FPGA Board FPGA uP FLASH GPIO SDRAM Serial Port Ethernet I/O Connector I/O Connector

  13. SOC - Diseño Puramente HW FPGA Board FPGA uP FLASH GPIO SDRAM Logic Serial Port Ethernet I/O Connector I/O Connector

  14. SOC - Diseño Embebido basado en PPC FPGA Board FPGA PowerPC FLASH Controller FLASH GPIO Controller GPIO PLB Bus SDRAMController SDRAM UART Controller Serial Port Ethernet Controller Ethernet I/O Connector I/O Connector

  15. SOC - Codiseño HW/SW basado en PPC FPGA Board FPGA PowerPC FLASH Controller FLASH Card Logic PLB Bus Serial Port UART Controller Ethernet SDRAM Controller SDRAM I/O Connector I/O Connector

  16. Diseño embebido en una FPGA (SoC) • La implementación del SoC se realiza a través de la creación de un sistema embebido y uno o mas componentes de aplicación especifica sobre la FPGA utilizada. • El sistema embebido desarrollado esta compuesto por un microprocesador (hard-core/soft-core), un conjunto de componentes de hardware necesarios para el funcionamiento del mismo y el sw de control necesario. • Los componentes de aplicación especifica son independientes del sistema embebido y están implementados en el HW virgen de la FPGA

  17. Diseño embebido en una FPGA (SoC) (continuación) • Desarrollo del sistema embebido basado en microprocesador. • Desarrollo de software de control. • Desarrollo de arquitectura de hardware que soporte el sistema embebido • Desarrollo del componente acelerador/aplicación especifica implementado en hardware. • Desarrollo del canal de comunicación hardware/software.

  18. Diseño embebido en una FPGA (SoC) (continuación) FPGA Hardware Virgen Microprocesador SISTEMA EMBEBIDO Diseño embebido Power PC Comunicaciones HW-SW COMPONENTE ACELERADOR Componente de HW - Lógica Fija Componente de HW - Lógica Fija

  19. Diseño embebido en una FPGA (SoC) (continuación) • Se desarrollara una infraestructura de interconexión entre los bloques lógicos • Buses propietarios como la familia CrossConnect de XILINX • El procesador disponible en la FPGA se interconectara también utilizando la infraestructura de buses establecida.

  20. IBM CoreConnect™ on-chip bus standard PLB, OPB, and DCR RocketIO Dedicated Hard IP DSOCM BRAM ISOCM BRAM Flexible Soft IP PowerPC 405 Core DCR Bus Instruction Data PLB OPB Bus Bridge Arbiter Arbiter Processor Local Bus On-Chip Peripheral Bus e.g. Memory Controller Hi-Speed Peripheral GB E-Net On-Chip Peripheral UART GPIO Off-Chip Memory ZBT SRAM DDR SDRAM SDRAM Detalle de sistema embebidobasado en PPC Full system customization to meet performance, functionality, and cost goals Source: Xilinx

  21. MicroBlaze 32-Bit RISC Core Possible in Virtex-II Pro LocalLink™ FIFO Channels OPB On-Chip Peripheral Bus Arbiter 0,1…….32 Custom Functions Custom Functions On-Chip Peripheral 10/100 E-Net UART Detalle de sistema embebidobasado en Microblaze I-Cache BRAM Local Memory Bus Flexible Soft IP BRAM Configurable Sizes D-Cache BRAM Off-Chip Memory FLASH/SRAM Source: Xilinx

  22. Motivación para utilizar un SO • Las aplicaciones necesitan un entorno de ejecución. • Portabilidad, interfaces standard • Acceso controlado a archivos y dispositivos • Multitarea preemptiva • Memoria virtual (memoria protegida, paginacion, etc) • Librerias compartidas • Soporte de stack TCP/IP • etc • Soporte para integrar nuevos dispositivos de hardware. • Framework para escribir drivers para distintos subsistemas • Abstracciones de funcionalidades de drivers • Soporte de módulos de extensión

  23. Motivación para utilizar un SO (continuación) • Caminos de ejecución

  24. Componentes aceleradores en FPGA • Dispositivos inherentemente paralelos • Las operaciones computacionales se implementan espacialmente. • Elimina el cuello de botella causado por la ejecución serial de las arquitecturas Von Neumman (procesadores actuales). • Computación temporal (serial): Solo una operación computacional puede ser ejecutada a la vez. El procesador tiene que encargarse de traer datos o código antes de ejecutar la operación. • Computación espacial: Distintos bloques de circuiteria programable procesan en paralelo distintas partes del algoritmo computacional.

  25. Componentes aceleradores en FPGA (continuación)

  26. Componentes aceleradores en FPGA (continuación) • Los sistemas basados en procesador ofrecen posibilidad de implementar computación flexible pero al costo de minimizar la performance. • Los sistemas basados en hardware no son óptimos para implementar computación de propósito general. • Diseño único, no es practico diseñar/comprar una nueva maquina cada vez que corremos una aplicación diferente • El diseño de hardware requiere un esfuerzo considerable. • Barreras de costo para la implementación. • Los sistemas reconfigurables ofrecen lo mejor de los mundos. • Aplicación especifica con flexibilidad

  27. Canal de comunicación entre componentes de hardware y software • Se necesita establecer un mecanismo físico para poder comunicar los componentes de HW y SW • En la arquitectura de XILINX: • Se puede utilizar Memory Mapped I/O a través de algún BUS • Se puede utilizar el controlador APU del procesador PowerPC para interfacear el hardware y el software

  28. Temas Propuestos • GNU LINUx • - Overview de GNU Linux (Kernel y entorno GNU) • - Overview del kernel y su arquitectura. Subsistemas. Interaccion entre userspace y kernelspace. Scheduler. Modos de booteo del kernel. • - Userland. Entorno GNU. Toolchains de compilacion. • - Compilacion del kernel. Configuracion de los dispositivos soportados. Configuracion de los subsistemas. • - Codigo a desarrollar: Construccion de un driver basico. Modos de comunicacion entre el hardware y el software. Codigo de Interaccion con el MMU. Codigo de Interaccion con dispositivos de IO. Inspeccion de drivers avanzados.

  29. Temas Propuestos (continuación) • SISTEMAS EMBEBIDOS CON XILINX • - FPGAs de Xilinx. Caracteristicas. Desarrollo de logica especifica y desarrollo de sistemas embebidos. Interaccion de sistemas embebidos con logica especifica. • - Arquitectura de sistemas embebidos propietaria de xilinx: Procesadores disponibles, buses de interconexion, IP cores disponibles, etc. Modos de uso. • - Herramientas de desarrollo para sistemas embebidos: EDK y ISE. Herramientas de desarrollo de IP cores utilizables en EDK: ImpulseC. • - Desarrollo del hardware un sistema embebido. Alternativas basadas en procesador por hardware o procesador por software. Configuracion de controladores y IP cores a usar. Configuracion de mapas de memoria. Desarrollo de hardware dedicado que interactue con un bus propietario en VHDL. • - Desarrollo de software para el sistema embebido. Compilacion y ejecucion sobre el sistema embebido. Herramientas de prueba y debuggeo. Comunicacion entre el hardware y el software. • - Uso de Impact para grabar la platform FLASH y la FPGA. Utilizacion Basica de XMD

  30. Temas Propuestos (continuación) • DESARROLLO DE IP CORE PARA SISTEMA EMBEBIDO XILINX USANDO HERRAMIENTAS ESL- Herramientas ESL: ImpulseC, Matlab, etc. • - Desarrollo hardware/software con ImpulseC. Primitavas de CSP. • - Modelado de una aplicacion, caracterizacion mediante profiling y porting a ImpulseC. • - Generacion de componentes de hardware y software. • - Tecnicas de paralelizacion. Optimizacion y debuggeo del codigo obtenido. • - Simulacion de hardware con ModelSIM. • - Simulacion de software con GDB. • - Creacion de IP Core con ImpulseC. Canales de comunicacion a utilizar.

  31. Temas Propuestos (continuación) • LINUX SOBRE SISTEMAS EMBEBIDOS DE XILINX • - Customizacion de linux para que soporte el sistema embebido. • - Soporte de canales de comunicacion hardware/software. • - Modos de ejecucion de binarios ELF compilados para la arquitectura del sistema embebido. • - Crosscompilacion de linux. Ejecucion sobre el sistema embebido. • - Creacion de drivers que interactuen con componentes de hardware (Comunicacion Hardware/software) • - Debuggeo del kernel y del sistema embebido. Uso de GDB, GDB Server y XMD. • - Desarrollo de toolchain y herramientas de userspace usando buildroot. • - Booteo del kernel a traves de RED. • - Bootloader para el kernel usando uboot. • - Optimizacion de performance de dispositivos de red.

  32. Gracias! Preguntas?

More Related