DISEÑO DE PLATAFORMAS DE
COMPUTO BASADAS EN FPGAS
Introducción
Oviedo Marcos
<[email protected]>
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
2/
Oviedo /
10/3/2015
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.
3/
Oviedo /
10/3/2015
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.
4/
Oviedo /
10/3/2015
Arquitectura de
una FPGA
K
LUT
Inputs
Out
D FF
Clock
Programmable
IO
BLE
#1
Programmable
I
Logic (CLB) Inputs
N
N
Outputs
I
BLE
#N
Clock
Programmable
Routing
5/
Oviedo /
10/3/2015
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.
6/
Oviedo /
10/3/2015
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.
7/
Oviedo /
10/3/2015
Porque el creciente interés de las FPGAs
Field Programmable Gate Arrays
• Increasing speed & density
• Increased I/O pin count and
bandwidth
• Lower cost per gate
• Integration of hard IP (e.g. multipliers,
PowerPC cores)
Operations
250
Maximum Floating-Point
Multiply-Accumulates
200
150
100
50
0
1998
1999
2000
$350
Cost per 1 Million Gates
300
2002
2005
• Emergence of hardware synthesis
tools based on conventional software
languages (C, Fortran…)
• Improved hardware compiler
optimization techniques
• Lower power
Maximum Sustained Single-Precision
Floating Point Operations (GFLOPS)
Architectural Synthesis
FPGA Costs
• Mapping of software design patterns
to hardware
80’s
90’s
Now
$300
$250
$200
$150
$100
$50
$0
1998 1999 2000 2001 2002 2003
8/
Oviedo /
10/3/2015
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ón
JTAG.
9/
Oviedo /
10/3/2015
Implementación de un SoC (continuación)
PUERTO
ETHERNET
LEDs
DE PRUEBA
ETHERNET
PHY
LEDs
DE LINK
VIRTEX 4
MEMORIA
FX12 FPGA DDR 64MB
MEMORIA FLASH
DE PLATAFORMA
MEMORIA FLASH
DE USUARIO
10 /
Oviedo /
10/3/2015
Implementación de un SoC (continuación)
PUERTO DE
CONECTORES PUERTO PUERTO PUERTO
CONECTOR 5V
PROGRAMACION DE EXPANSION JTAG
SERIAL
USB
LED
PROGRAMACION
SWITCH
ENCENDIDO
SWITCH DE
PROGRAMACION
CLOCK
USUARIO
CONECTORES
DE EXPANSION
PANEL
LCD
FUENTE
2.5V
FUENTE
VCCINT
FUENTE
3.3V
LEDs SWITCHES DE PRUEBA
11 /
Oviedo /
10/3/2015
SoC sin personalización
FPGA
uP
FPGA Board
FLASH
GPIO
SDRAM
Serial Port
Ethernet
I/O Connector
I/O Connector
12 /
Oviedo /
10/3/2015
SOC - Diseño Puramente HW
FPGA
uP
FPGA Board
FLASH
GPIO
SDRAM
Logic
Serial Port
Ethernet
I/O Connector
I/O Connector
13 /
Oviedo /
10/3/2015
SOC - Diseño Embebido basado en PPC
PowerPC
PLB Bus
FPGA
FLASH Controller
FPGA Board
FLASH
GPIO Controller
GPIO
SDRAM Controller
SDRAM
UART Controller
Serial Port
Ethernet Controller
Ethernet
I/O Connector
I/O Connector
14 /
Oviedo /
10/3/2015
SOC - Codiseño HW/SW basado en PPC
PowerPC
FPGA
FLASH Controller
FPGA Board
FLASH Card
PLB Bus
Logic
Serial Port
UART Controller
Ethernet
SDRAM Controller
SDRAM
I/O Connector
I/O Connector
15 /
Oviedo /
10/3/2015
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
16 /
Oviedo /
10/3/2015
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.
17 /
Oviedo /
10/3/2015
Diseño embebido en una FPGA (SoC)
(continuación)
FPGA
Hardware Virgen
Microprocesador
Comunicaciones
HW-SW
Componente de HW Lógica Fija
Componente de HW Lógica Fija
18 /
Oviedo /
10/3/2015
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.
19 /
Oviedo /
10/3/2015
Detalle de sistema embebido
basado en PPC
RocketIO
Dedicated Hard IP
DSOCM
BRAM
PowerPC
405 Core
Off-Chip
Memory
OPB
Processor Local Bus
Hi-Speed
Peripheral
e.g.
Memory
Controller
ZBT SRAM
DCR Bus
Data
PLB
Flexible Soft IP
GB
E-Net
DDR SDRAM
IBM CoreConnect™
on-chip bus standard
PLB, OPB, and DCR
Bus
On-Chip Peripheral Bus
Bridge
UART
SDRAM
GPIO
Arbiter
Arbiter
Instruction
ISOCM
BRAM
On-Chip
Peripheral
Full system customization to meet
performance, functionality, and
cost goals
Source: Xilinx20 /
Oviedo /
10/3/2015
Detalle de sistema embebido
basado en Microblaze
Local Memory
MicroBlaze
Bus
32-Bit RISC Core
LocalLink™
FIFO Channels
0,1…….32
Custom
Functions
Arbiter
D-Cache
BRAM
Configurable
Sizes
Possible in Dedicated Hard IP
PowerPC
Virtex-II Pro
405 Core
Instruction
OPB
Bus
Processor Local Bus
Bridge
Hi-Speed
Peripheral
UART
10/100
E-Net
Data
PLB
On-Chip Peripheral Bus
Custom
Functions
Off-Chip
Memory
Flexible Soft IP
e.g.
Memory
Controller
Arbiter
BRAM
I-Cache
BRAM
GB
E-Net
On-Chip
Peripheral
FLASH/SRAM
Source: Xilinx21 /
Oviedo /
10/3/2015
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
22 /
Oviedo /
10/3/2015
Motivación para utilizar un SO
(continuación)
MATH
LIBRARY
APPLICATION (mpg123)
Decoder
HTTP
sin
log
pow
tan
Initialization
Network
I/O
_isnan
fprintf
valloc
socket
Networking
malloc
_sbrk
Memory
Management
Caminos de
ejecución
scanf
qsort
vfprintf
write
Filesystems
read
rand
wait
STANDARD C
LIBRARY
Device
Control
Process
Management
Character
Devices
Architecture
Dependent
Code
b
OPERATING
SYSTEM
Network
Subsystem
Memory
Manager
File System
Devices
Disk
Network Interfaces
Memory
CPU
23 /
Oviedo /
10/3/2015
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.
24 /
Oviedo /
10/3/2015
Componentes aceleradores en FPGA
(continuación)
2
y = Ax + Bx + C
Temporal Computation
t1
t1 = x
t2 = t1 * A
t2 = t2 + B
t2 = t2 * t1
y = t2 + C
Spatial Computation
x
*
B
*
t2
C
A
A
B
*
+
C
+
Y
25 /
Oviedo /
10/3/2015
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
26 /
Oviedo /
10/3/2015
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
27 /
Oviedo /
10/3/2015
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.
28 /
Oviedo /
10/3/2015
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
29 /
Oviedo /
10/3/2015
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.
30 /
Oviedo /
10/3/2015
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.
31 /
Oviedo /
10/3/2015
Preguntas?
Gracias!
32 /
Oviedo /
10/3/2015
Descargar

Presentacion Powerpoint