AER-RT: Interfaz de Red con Topología en Anillo para SNN Multi-FPGA

TESIS DE MÁSTER: AER-RT: Interfaz de Red con Topología en Anillo para SNN Multi-FPGA Estudios: Máster en Ingeniería Electrónica Autor: Taho Dorta Pé

1 downloads 84 Views 11MB Size

Recommend Stories


Interfaz para línea telefónica
Laboratorio de Sistemas Electrónicos Digitales Departamento de Ingeniería Electrónica E.T.S.I. de Telecomunicación Universidad Politécnica de Madrid

Guía de instalación y configuración para el regulador de la interfaz de red Sprint
Guía de instalación y configuración para el regulador de la interfaz de red Sprint Contenido Introducción prerrequisitos Requisitos Componentes Utilizados Convenciones Relación al sistema ICM Red ICM Relación a la red Sprint Enlace de comunicaciones

Interfaz Aspel-NOI con Aspel-COI
Interfaz Aspel-NOI con Aspel-COI Para facilitarte la generación de pólizas de nómina podrás realizar la interfaz con Aspel-COI, generarás de manera rá

Story Transcript

TESIS DE MÁSTER:

AER-RT: Interfaz de Red con Topología en Anillo para SNN Multi-FPGA

Estudios: Máster en Ingeniería Electrónica Autor: Taho Dorta Pérez Supervisor: Jordi Madrenas Fecha: Julio 2013

INTERFAZ DE RED AER-RT

ii

Índice general 1. Introducción

1

1.1.

Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2.

Deniciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2.1.

SNN . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2.2.

AER . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.2.3.

Ubichip

. . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.2.4.

SNAVA

. . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.3.

Objetivos y requisitos

1.4.

Material de trabajo . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

6

1.5.

Realización del proyecto

6

. . . . . . . . . . . . . . . . . . . . .

5

2. Diseño

7

2.1.

Estudio de la topología . . . . . . . . . . . . . . . . . . . . . .

7

2.1.1.

Topología en Anillo . . . . . . . . . . . . . . . . . . . .

7

2.1.2.

Topología en Estrella

9

2.1.3.

Topología Punto a Punto

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.2.

Estudio red jerárquica

. . . . . . . . . . . . . . . . . . . . . .

11

2.3.

Conclusión estudio arquitectura de red . . . . . . . . . . . . .

13

2.4.

Elección de bus serie frente a paralelo

13

2.5.

Elección Aurora 8B/10B como protocolo serie de alta velocidad 14

. . . . . . . . . . . . .

3. Protocolo AER-RT

17

3.1.

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2.

Problemática de diseño . . . . . . . . . . . . . . . . . . . . . .

18

3.3.

Sincronización entre los nodos del anillo

. . . . . . . . . . . .

19

3.3.1.

Sincronización de nodos mediante líneas punto a punto

19

3.3.2.

Sincronización de nodos mediante línea adicional de ready en pipeline . . . . . . . . . . . . . . . . . . . . .

3.3.3. 3.4.

Sincronización de nodos mediante paquetes de control

Protocolo AER-RT . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1.

Tipos de paquetes

3.4.2.

Estructura de los paquetes

. . . . . . . . . . . . . . . . . . . .

3.4.3.

Campos de los paquetes

iii

17

19 20 21 22

. . . . . . . . . . . . . . .

23

. . . . . . . . . . . . . . . . .

24

INTERFAZ DE RED AER-RT

3.4.4. 3.5.

iv

Detección de errores

. . . . . . . . . . . . . . . . . . .

Interfaz entre AER-RT y sistema multiprocesador

. . . . . .

3.5.1.

Interfaz de datos

. . . . . . . . . . . . . . . . . . . . .

25

3.5.2.

Handshaking (o señales eo_exec y eo_distrib) . . .

27

3.5.3.

Señal de Error

27

. . . . . . . . . . . . . . . . . . . . . .

4. Arquitectura AER-RT 4.1.

4.2.

4.3.

4.4.

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

29

4.1.1.

Diferentes versiones . . . . . . . . . . . . . . . . . . . .

33

4.1.2.

Metodología . . . . . . . . . . . . . . . . . . . . . . . .

33

Interfaz con sistema Multiprocesador . . . . . . . . . . . . . .

35

4.2.1.

Problema adicional: 2 dominios de reloj

. . . . . . . .

35

4.2.2.

Input FIFO. Sincronización de datos de entrada . . . .

36

4.2.3.

AER_2_SNAVA. Sincronización datos de salida

37

. . .

Aurora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.3.1.

Introducción

39

4.3.2.

Generar Core . . . . . . . . . . . . . . . . . . . . . . .

40

4.3.3.

Conguración utilizada . . . . . . . . . . . . . . . . . .

41

4.3.4.

Sistema de compensación de clock

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

41

AER Tx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

4.4.1.

Conexión con otros bloques

. . . . . . . . . . . . . . .

42

4.4.2.

Diagrama de bloques . . . . . . . . . . . . . . . . . . .

42

4.4.3.

Tx Controller . . . . . . . . . . . . . . . . . . . . . . .

45

4.4.4.

Tx Sync . . . . . . . . . . . . . . . . . . . . . . . . . .

47

4.4.5.

Tx Bypass . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.4.6.

Tx Start . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.4.7.

Tx Data . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.4.8.

Tx Finish

. . . . . . . . . . . . . . . . . . . . . . . . .

50

4.4.9.

Tx Idle . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.4.10. Modo Debug 4.5.

24 25

. . . . . . . . . . . . . . . . . . . . . .

50

AER Rx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

4.5.1.

Conexión con otros bloques

. . . . . . . . . . . . . . .

52

4.5.2.

Diagrama de bloques . . . . . . . . . . . . . . . . . . .

53

4.5.3.

Detector de paquetes . . . . . . . . . . . . . . . . . . .

56

4.5.4.

Contadores de paquetes

57

4.5.5.

Generación AER ON . . . . . . . . . . . . . . . . . . .

57

4.5.6.

Generación AER Done . . . . . . . . . . . . . . . . . .

58

4.5.7.

Filtro Bypass (o escritura en FIFO de todos los paque-

4.5.8.

Interfaz de salida AER_RX (o desencapsulación de los

tes a retransmitir)

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

paquetes de datos) . . . . . . . . . . . . . . . . . . . .

58 59

4.6.

Bypass FIFO

. . . . . . . . . . . . . . . . . . . . . . . . . . .

59

4.7.

AER Cong . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

4.8.

AER Error

61

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

INTERFAZ DE RED AER-RT

5. Resultados 5.1. 5.2.

v

Simulación con retardos (o Timing Simulation)

. . . . . . . .

63 63

Medidas de latencia para diferente número de nodos y diferente número de spikes . . . . . . . . . . . . . . . . . . . . . .

63

5.2.1.

Medidas anillo un nodo

. . . . . . . . . . . . . . . . .

63

5.2.2.

Medidas anillo dos nodos

. . . . . . . . . . . . . . . .

65

5.2.3.

Medidas anillo 3 nodos . . . . . . . . . . . . . . . . . .

67

5.3.

Latencia del sistema AER-RT . . . . . . . . . . . . . . . . . .

67

5.4.

Área utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

5.5.

Máxima frecuencia

5.6.

Consumo

. . . . . . . . . . . . . . . . . . . . . . . .

69

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

6. Sistema completo AER-RT + emulador de SNAVA 7. Conclusiones

71 77

INTERFAZ DE RED AER-RT

vi

Índice de guras 1.1.

Esquema sistema Ubichip[4] . . . . . . . . . . . . . . . . . . .

3

1.2.

Interfaz de red AER previo de bus compartido[3]

. . . . . . .

4

2.1.

Ring Topology

. . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.2.

Latencia de la red en función del número de nodos (o chips) .

9

2.3.

Star Topology . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.4.

Red en malla

. . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.5.

Distribución de probabilidad de localidad en redes SNN[2] . .

11

2.6.

Red jerárquica híbrida . . . . . . . . . . . . . . . . . . . . . .

12

3.1.

Anillo AER-RT con 2 nodos . . . . . . . . . . . . . . . . . . .

17

3.2.

Anillo AER-RT con 3 nodos . . . . . . . . . . . . . . . . . . .

18

3.3.

Sincronismo línea externa punto a punto . . . . . . . . . . . .

20

3.4.

Sincronismo entre chips mediante línea de control en pipeline

20

3.5.

Arquitectura pipeline en anillo

22

3.6.

Esquema de la unión entre sistema MP y AER-RT en red con 3 nodos

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

3.7.

Cronograma Handshaking entre AER-RT y sistema MP

4.1.

Esquema AER-RT simplicado

4.2.

Versión denitiva Diagrama de bloques AER-RT

4.3.

Primera versión diagrama de bloques (Diciembre 2012) . . . .

34

4.4.

Primer paso en el diseño incremental . . . . . . . . . . . . . .

35

4.5.

Input FIFO Xilinx IP Core

37

4.6.

Diagrama de bloques AER_2_SNAVA . . . . . . . . . . . . .

38

4.7.

Output FIFO Xilinx IP Core

38

4.8.

Diagrama de estados máquina de estados de AER_2_SNAVA

39

4.9.

Puertos AER_TX

43

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

27 30 31

4.10. Diagrama de bloque AER TX . . . . . . . . . . . . . . . . . .

44

4.11. Cronograma AER TX

. . . . . . . . . . . . . . . . . . . . . .

45

4.12. Diagrama de estados Tx Controller . . . . . . . . . . . . . . .

46

4.13. Primera versión Maquina de estados de Tx Controller (totalmente descartada)

. . . . . . . . . . . . . . . . . . . . . . . .

47

4.14. Diagrama de estados Tx Sync . . . . . . . . . . . . . . . . . .

48

vii

INTERFAZ DE RED AER-RT

viii

4.15. Diagrama de estados Tx Bypass . . . . . . . . . . . . . . . . .

49

4.16. Diagrama de estados Tx Start . . . . . . . . . . . . . . . . . .

50

4.17. Diagrama de estados Tx Data . . . . . . . . . . . . . . . . . .

51

4.18. Diagrama de estados Tx Finish

51

4.19. Puertos AER_RX

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

53

4.20. Diagrama de bloque AER RX . . . . . . . . . . . . . . . . . .

54

4.21. Cronograma AER RX

56

. . . . . . . . . . . . . . . . . . . . . .

4.22. Diagrama de estados detector de paquetes de datos propios

.

57

. . . . . . . . .

58

4.24. Bypass FIFO Xilinx IP Core . . . . . . . . . . . . . . . . . . .

60

5.1.

Latencia en anillo de un nodo transmitiendo un único spike

.

64

5.2.

Latencia en anillo de un nodo transmitiendo 10 spikes

. . . .

65

5.3.

Latencia en anillo con dos nodos y transmitiendo un único spike 66

5.4.

Latencia en anillo con dos nodos y transmitiendo 10 spikes . .

66

5.5.

Latencia en anillo de tres nodos y transmitiendo 1 spike

67

5.6.

Latencia en anillo con tres nodos y transmitiendo 10 spikes

5.7.

Estimación de consumo AER-RT

4.23. Diagrama de estados generación de AER ON

6.1.

.

68

. . . . . . . . . . . . . . . .

70

Sistema AER-RT + emulador de SNAVA implementado en tres Kintex-7

6.2.

. . . . . . . . . . . . . . . . . . . . . . . . . . .

72

Detalle conexiones en sistema AER-RT + emulador de SNAVA implementado en tres Kintex-7

6.3.

. . .

. . . . . . . . . . . . . . .

73

Detalle de señales en el chip 0 tomadas con el analizador lógico virtual de Xilinx

. . . . . . . . . . . . . . . . . . . . . . . . .

75

Índice de cuadros 2.1.

Tabla comparativa con los ejemplos numéricos vistos en cada topología

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

3.1.

Tipos de paquetes AER-RT

3.2.

Paquete de Control AER-RT

3.3.

Paquete de datos AER-RT . . . . . . . . . . . . . . . . . . . .

24

3.4.

Cabecera AER-RT

. . . . . . . . . . . . . . . . . . . . . . . .

25

3.5.

Cabecera de control

. . . . . . . . . . . . . . . . . . . . . . .

25

4.1.

. . . . . . . . . . . . . . . . . . .

23

. . . . . . . . . . . . . . . . . .

24

Equivalencia entre frecuencia de transmisión (serie) y frecuencia de trabajo (paralelo) . . . . . . . . . . . . . . . . . . . . .

41

4.2.

Diferentes códigos para el modo Debug . . . . . . . . . . . . .

52

5.1.

Medidas anillo con un nodo

64

5.2.

Medidas anillo con dos nodos

. . . . . . . . . . . . . . . . . .

65

5.3.

Medidas anillo con dos nodos

. . . . . . . . . . . . . . . . . .

67

. . . . . . . . . . . . . . . . . . .

ix

INTERFAZ DE RED AER-RT

x

Palabras clave AER, chip-to-chip network architecture, ring topology, Aurora 8b/10b, SNN, SNAVA

xi

INTERFAZ DE RED AER-RT

xii

Resum En aquesta tesi de màster es presenta la interfície de xarxa AER-RT, una interfície de xarxa dissenyada per treballar conjuntament amb un sistema multiprocessador (MP) i crear així una xarxa SNN multi-xip ecient i escalable. La creació de la interfície de xarxa AER-RT sorgeix amb l'objectiu de millorar les prestacions del sistema MP SNAVA, el qual està sent desenvolupat pel grup d'investigació AHA de la UPC. SNAVA és un sistema MP emulador de xarxes SNN en hardware. Abans de la realització del projecte, la interfície de xarxa mostrava un conjunt de deciències en quant a velocitat de transmissió i exibilitat per formar xarxes multi-xip, dos aspectes fonamentals en aquest tipus de xarxes. AER-RT apareix com un substitut de l'antiga interfície de xarxa de SNAVA, amb l'objectiu de millorar l'eciència i l'escalabilitat del sistema global. La interfície de xarxa dissenyada introdueix dos canvis que son clau per millorar l'eciència i l'escalabilitat del sistema. 1) La transmissió de les dades xip-a-xip passa de ser paral·lela a ser sèrie d'alta velocitat; 2) La topologia de la xarxa passa de ser en bus compartit a ser en anell. El primer canvi s'aconsegueix utilitzant el protocol per a comunicacions sèrie xip-a-xip Aurora 8b/10b de Xilinx. I el segon, creant un nou protocol que permeti la transmissió de paquets en una xarxa multi-xip amb topologia en anell. La interfície de xarxa dissenyada es prova conjuntament amb un emulador de SNAVA, formant així una xarxa AER-RT real a nivell hardware. La xarxa es compon de 3 FPGAs Kintex-7 connectades en anell. L'elevada velocitat de la nova interfície de xarxa i la gran facilitat per fer-la créixer en nombre de xips fan que l'objectiu marcat a l'inici del projecte s'hagi assolit àmpliament.

xiii

INTERFAZ DE RED AER-RT

xiv

Resumen En esta tesis de máster se presenta el interfaz de red AER-RT, un interfaz de red diseñado para trabajar junto a un sistema multiprocesador (MP) y crear una red SNN multi-chip eciente y escalable. La creación del interfaz de red AER-RT surge con el objetivo de mejorar las prestaciones del sistema MP SNAVA que se desarrolla en el grupo de investigación AHA de la UPC. SNAVA es un sistema MP emulador de redes SNN en hardware. Antes de la realización del proyecto el interfaz de red de SNAVA tiene una serie de deciencias en velocidad de transmisión y en exibilidad para formar redes multi-chip, dos aspectos fundamentales en este tipo de redes. AER-RT aparece como sustituto del antiguo interfaz de red de SNAVA con el objetivo de mejorar la eciencia y escalabilidad del sistema global. El interfaz de red diseñado introduce dos cambios clave para mejorar la eciencia y la escalabilidad del sistema. 1) La transmisión de los datos chipto-chip pasa de ser paralela a ser serie de alta velocidad; 2) La topología de la red pasa de ser en bus compartido a ser en anillo. El primer cambio se consigue utilizando el protocolo para comunicaciones serie chip-to-chip Aurora 8b/10b de Xilinx. Y el segundo creando un nuevo protocolo que permita la transmisión de paquetes en una red multi-chip con topología en anillo. El interfaz de red diseñado se prueba junto a un emulador de SNAVA implementando una red AER-RT real hardware. La red está compuesta por 3 FPGAs Kintex-7 conectadas en anillo. La elevada velocidad del nuevo interfaz de red y la gran facilidad para hacerla crecer en número de chips hacen que el objetivo marcado al inicio del proyecto se haya cumplido ampliamente.

xv

INTERFAZ DE RED AER-RT

xvi

Abstract This thesis presents AER-RT network interface, a network interface designed to work together a Multiprocessor System (MPS) and create an ecient and scalable multi-chip SNN network. The objective of AER-RT is to improve performance of SNAVA system. SNAVA is a MPS capable of SNN emulation in Hardware created by UPC's AHA research group. Before this thesis, the network interface of SNAVA have pitfalls regarding speed transmision and exibility to create multi-chip networks, two important aspects in this kind of networks. AER-RT appears as substitute of the old network interface of SNAVA with goal of improve speed and scalability of the global system. The network interface intruce two main changes to improve speed and scalability of the system. 1) The previous parallel chip-to-chip communication becomes high speed serial communication. 2) The previous shared bus topology becomes ring topology. The rst change is achieved by using Xilinx Aurora high speed communication protocol. And the second one, by creating a new protocol able to transmit packages in a multi-chip ring topology network. The designed network interface is proved together a emulation of SNAVA system forming a real AER-RT network in Hardware. The network consists in 3 Kintex-7 FPGAs connected forming a ring. The network works ne making the global SNN more ecient and more exible to grow.

xvii

INTERFAZ DE RED AER-RT

xviii

Capítulo 1

Introducción 1.1. Presentación En esta tesis de máster se presenta el interfaz de red AER-RT (AERRing Topology), una novedosa arquitectura de comunicaciones para SNN multi-chip con las siguientes características: Permite conectar un gran número de chips en anillo El diseño es simétrico en cada nodo del anillo. Por lo tanto no hay necesidad de establecer un nodo máster Es exible en cuanto al número de nodos en el sistema Permite altas velocidades de transmisión. La comunicación entre nodos es serie, punto a punto y de alta velocidad (del orden de Gbps) Para la distribución de spikes utiliza el protocolo AER-RT encapsulado en el protocolo serie de alta velocidad Aurora (protocolo propiedad de Xilinx) A continuación pasamos a introducir una serie de conceptos fundamentales para entender el contexto en el que se enmarca esta tesis.

1.2. Deniciones 1.2.1.

SNN

Las redes SNN (Spiking Neural Network) son un tipo de redes neuronales. Pertenecen a la tercera generación de redes neuronales y se caracterizan por representar de forma realista el funcionamiento neuronal. Su utilización en sistemas bioinspirados o para emular sistemas neuronales reales está sumamente extendido.

1

INTERFAZ DE RED AER-RT

2

Las redes SNN se pueden simular mediante Software o emular en Hardware. Debido a su arquitectura paralela, su gran demanda de cómputo y a la necesidad de trabajar en tiempo real, la emulación de redes SNN en Hardware está plenamente justicada.

Las redes SNN emuladas en Hardware se implementan mediante un sistema multiprocesador (MP), donde los procesaodres (PE) se interconectan entre ellos a través de un interfaz de red. Cada procesador emula a una neurona y la sinapsis se emula mediante la transmisión de spikes. Un spike es un evento que se produce en una determinada neurona y que se transmite a otras neuronas adyacentes.

En redes SNN implementadas en Hardware uno de los principales desafíos es el diseño de la arquitectura de comunicaciones. Interesa una arquitectura de red que permita conectar el mayor número de neuronas trabajando dentro de la ventana que marca el tiempo real.

1.2.2.

AER

AER es el acrónimo de Adress Event Representation. Es un protocolo que permite transmitir eventos de forma eciente dentro de una red, donde cada nodo es a la vez consumidor y generador de eventos. Los eventos se indican transmitiendo la dirección del elemento generador.

El Bus AER o protocolo AER es muy utilizado en redes SNN. En este tipo de redes las neuronas son generadores y consumidores de eventos. Y los eventos son los spikes que se transmiten en la red viajando de una neurona a otra.

1.2.3.

Ubichip

En el grupo de investigación AHA de la UPC se trabaja desde hace algunos años en el desarrollo de sistemas bioinspirados y redes neuromórcas. En concreto, enmarcado dentro del proyecto Perplexus [1], AHA presenta una novedosa arquitectura Hardware para emular redes de tipo SNN. Se trata de la arquitectura Ubichip.

La arquitectura Ubichip permite emular redes neuronales en un sistema multichip, donde cada chip, o Ubichip, contiene un array de hasta 10x10 neuronas. Para comunicar las neuronas entre sí se utiliza un interfaz de red basado en el protocolo AER. Ver gura 1.1 para un esquema detallado de Ubichip.

INTERFAZ DE RED AER-RT

3

Figura 1.1: Esquema sistema Ubichip[4]

El sistema multiprocesador implementado en un Ubichip es de tipo SIMD (Single Instruction Multiple Data). En este sistema el secuenciador se encarga de enviar las instrucciones a todos los elementos procesadores (PE) del array. Una vez el array de neuronas ha procesado los datos genera una serie de spikes para transmitir. Los spikes se transmiten por el bus AER. Cada Ubichip al recibir los spikes los decodica utilizando una memoria CAM. En la memoria CAM de cada chip está mapeado qué spikes harán que se dispare su potencial de membrana. Para una información más detallada sobre la arquitectura Ubichip consultar la referencia [4].

El interfaz de comunicaciones de Ubichip es un bus o chip con una topología de bus compartido. La comunicación es paralela con palabras de 8 bits. Este bus permite trabajar a frecuencias de hasta 5 MHz y admite una cierta escalabilidad, aunque el hecho de ser un bus compartido introduce algunas dicultades en cuanto a la implementación física. Además a medida que se conectan más chips al bus compartido la frecuencia de trabajo se reduce. Tenemos un esquema de este interfaz de red previo en la gura 1.2. A partir de ahora se hará referencia a esta arquitectura de red como el interfaz de red previo. Para una descripción más detallada sobre este interfaz de red previo consultar la referencia [3].

INTERFAZ DE RED AER-RT

4

Figura 1.2: Interfaz de red AER previo de bus compartido[3]

La duración estándar de un ciclo sináptico en el sistema Ubichip es de 1 ms, es la ventana de tiempo que impone el trabajar en tiempo real en redes de tipo SNN. Cada ciclo sináptico se divide en 1) Fase de ejecución y 2) Fase de distribución. Durante la fase de ejecución cada PE ejecuta sus instrucciones y genera una serie de spikes de salida. Durante la fase de distribución el interfaz de red distribuye los spikes generados por todos los chips que componen el sistema. Para simplicar supondremos que cada una de las fases emplea la mitad de la ventana de tiempo de 1 ms, es decir la fase de ejecución durará 0,5 ms y la fase de distribución otro tanto.

1.2.4.

SNAVA

Recientemente en el grupo de investigación AHA de la UPC se han mejorado las prestaciones del sistema Ubichip con la aparición de una nueva arquitectura multiprocesador para redes de tipo SNN: SNAVA. SNAVA conserva la misma losofía de Ubichip pero incorpora una serie de mejoras. Por ejemplo el cuello de botella que introducía el acceso a la memoria que contiene las instrucciones en cada chip se ha solucionado sustituyendo la memoria de tipo SRAM externa por memoria cache local. Otra novedad es la inclusión de un sistema de virtualización que permite emular más de una neurona en cada PE. Sin embargo uno de los principales cuellos de botella de Ubichip, SNAVA no lo soluciona. Es la distribución de spikes. El antiguo interfaz de red

INTERFAZ DE RED AER-RT

5

se muestra insuciente para distribuir todos los spikes que genera un sistema SNAVA multichip de manera eciente. Este interfaz previo es poco escalable por los problemas que introduce el bus compartido a la hora de incluir nuevos chips en la red. De hecho en la práctica sólo ha sido posible implementar una red SNN con un único chip. Además es poco eciente en cuanto a velocidad de transmisión con frecuencias que no superan los 5 MHz.

El interfaz de red AER-RT que se presenta en este proyecto se ha desarrollado con el propósito de contribuir a la mejora de prestaciones de la arquitectura Ubichip. En concreto AER-RT implementa un novedoso interfaz de red que mejora la eciencia y la escalabilidad del sistema global. Este interfaz ha sido adoptado por el sistema SNAVA como nuevo interfaz de red sustituyendo al interfaz previo de bus compartido.

1.3. Objetivos y requisitos El objetivo de este proyecto es el de desarrollar un interfaz de red que permita conectar neuronas en una red SNN multi-chip de forma eciente y escalable.

Características a optimizar con el diseño del interfaz de red AER-RT: Eciencia Escalabilidad Un interfaz de red eciente implica que la transmisión de spikes entre neuronas sea rápida. De esta manera tendremos capacidad para distribuir un mayor número de spikes, lo que supone poder emular un mayor número de neuronas en el sistema SNN.

Escalable hace referencia a la capacidad que tiene el sistema para crecer. En el caso que nos ocupa el interfaz de red tiene que permitir que el sistema multiprocesador que emula la red SNN crezca en número de chips y en número de neuronas. Buscamos que al aumentar el tamaño del sistema las prestaciones de éste no disminuyan y que la ampliación sea sencilla y barata de implementar.

La red estará formada por varios nodos, donde cada nodo es una FPGA. Las FPGAs tendrán que estar conectadas entre sí permitiendo la distribución de spikes por todo el sistema. Cada nodo contendrá un array de, según la última versión de SNAVA, 10x10 PE con capacidad para emular hasta 700 neuronas (7 neuronas emuladas en cada PE).

INTERFAZ DE RED AER-RT

6

El interfaz entre el bloque AER-RT y el sistema multiprocesador tiene que ser compatible con el que tenía el interfaz previo de bus compartido.

1.4. Material de trabajo Durante la realización del proyecto se dispone del siguiente material para implementar y depurar el diseño propuesto: 4 placas de evaluación KC705 [8]. Cada una de ellas con una FPGA de altas prestaciones Kintex-7 de Xilinx Cables SMA para transmisión de señales de alta frecuencia Programa para simulación de sistemas digitales Questa Sim (de la casa Mentor Graphics) Herramientas de síntesis y rutado de Xilinx (Suite ISE) Analizador lógico virtual ChipScope de Xilinx

1.5. Realización del proyecto La realización del proyecto consta de las siguientes etapas: 1. Estudio de diferentes arquitecturas de red. Finalmente se opta por un interfaz de red con topología en anillo y comunicación serie de alta velocidad. Este punto se explica en el capítulo 2 2. Diseño de protocolo AER-RT. En este punto se modica el protocolo AER para que pueda ser utilizado en una red con topología en anillo. Los detalles de este protocolo se encuentran explicados en el capítulo 3 3. Diseño de la arquitectura de red AER-RT. Esta es la parte donde se hace el diseño del sistema digital en VHDL . Los detalles de la arquitectura desarrollada están en el capítulo 4 4. Vericación de funcionamiento implementando un sistema SNN completo. Para completar este paso se construye un sistema digital que emula el comportamiento del sistema multiprocesador SNAVA y que se conectará con el interfaz AER-RT. Se verica el funcionamiento del sistema en una red en anillo con varios nodos y donde cada emulador de SNAVA genera spikes pseudo-aleatorios periódicamente Finalmente una vez validado el diseño, el interfaz AER-RT se ha incluido en el sistema SNAVA como nuevo interfaz de red con éxito.

Capítulo 2

Diseño En este capítulo se presentan las principales decisiones de diseño que se han adoptado a la hora de realizar el diseño del interfaz de red AER-RT, a saber: Topología en anillo frente a bus compartido Comunicación serie frente a comunicación paralela Elección del protocolo físico para comunicaciones serie de alta velocidad que permite la comunicación FPGA-to-FPGA

2.1. Estudio de la topología A continuación se estudian tres posibles topologías como sustitutas de la topología de bus compartido que presenta el interfaz de red previo. Para evaluar la eciencia de cada topología se analiza cuantos nodos o chips admitiría una red SNN respetando una ventana de tiempo para la distribución de spikes de 0,5 ms.

2.1.1.

Topología en Anillo

Para realizar el estudio de las diferentes topologías de red utilizaremos los siguientes parámetros: #chips: número de chips que tiene la red (equivale a número de nodos)

h

i

spikes neuronas AV : Spikes transmitidos por cada neurona en cada fase de

distribución (valor medio)

N/C : Número de neuronas por chip

7

INTERFAZ DE RED AER-RT

8

Figura 2.1: Ring Topology

h

i

spikes chip AV

=

h

i

spikes neurona AV

 N/C :

Spikes transmitidos por chip en cada

fase de distribución (valor medio) T: Latencia o tiempo en completarse la transmisión de todos los spikes. Tiempo de la fase de distribución de spikes spikes totales del sistema:

#chips 

h

i

spikes chip AV

En la gura 2.1 se puede observar la estructura de una red en anillo. La expresión de la latencia en este tipo de redes se presenta en la ecuación 2.1. Esta expresión se obtiene teniendo en cuenta que el retardo en un sistema en pipeline es igual al retardo que introduce el pipeline más el retardo introducido por el número de spikes total que viajan por el sistema. El retardo que introduce el pipeline es igual al número de elementos que lo forman, en este caso el número de chips del sistema. Y El retardo que introduce el número de spikes total que viaja por el anillo lo aproximamos por el número de spikes que tarnsmite cada chip por el número de chips del sistema.

    spikes Tanillo = #chips + #chips   1/fCLK chip AV

Tanillo

  spikes ∼  1/fCLK = #chips  chip AV T  fCLK i #chips = h

spikes chip AV

(2.1)

(2.2)

(2.3)

En la ecuación 2.2 simplicamos el cálculo de la latencia despreciando el retardo que introduce el pipeline, ya que comparado con el número de spikes que se transmiten en todo el sistema es muy pequeño. Por lo tanto podemos concluir que la latencia en este tipo de redes es proporcional al número de chips, el número de spikes por chip medio e inversamente proporcional a la

INTERFAZ DE RED AER-RT

9

Figura 2.2: Latencia de la red en función del número de nodos (o chips)

frecuencia de trabajo. En la ecuación 2.3 tenemos la expresión que indica el número de chips que acepta el sistema en función de la latencia, la frecuencia y el número de spikes transmitidos por chip.

Ejemplo numérico Si jamos la frecuencia de trabajo a 200MHz y el número de spikes transmitidos por chip en 105 (700 neuronas por chip y suponemos 15 spikes generadas cada 100 neuronas) el número máximo de chips que admite el sistema respetando la ventana de 0,5 ms para la fase de distribución es de 952 chips. Si cada chip como decíamos tiene 700 neuronas esto hace un total de 660k neuronas. En la gura 2.2 podemos ver la evolución de la latencia en función del número de chips del sistema.

2.1.2.

Topología en Estrella

En el caso de una topología en estrella (gura 2.3) surge la necesidad de utilizar un elemento adicional en la red que actúe como repetidor. En una red en estrella la latencia es igual a el retardo que introduce el chip con mayor número de spikes (peor caso) más el retardo introducido por el número de spikes global (ecuación 2.4). En este caso despreciamos el retardo que introduce el chip y obtenemos la misma expresión para la latencia que en el anillo (ecuación 2.5).

 Testrella =

spikes chip

 M AX



spikes + #chips  chip



  1/fCLK AV

(2.4)

INTERFAZ DE RED AER-RT

10

Figura 2.3: Star Topology

Figura 2.4: Red en malla



Testrella

spikes ∼ = #chips  chip

  1/fCLK

(2.5)

AV

La desventaja en este tipo de arquitectura es la necesidad de un gran número de elementos repetidores. El número de repetidores necesarios viene denido por la cantidad de puertos de transmisión que tengan.

Ejemplo numérico El número de chips máximo es el mismo que se obtiene con la topología en anillo: 952. El inconveniente es que necesitamos 90 repetidores en el sistema (suponiendo que cada repetidor dispone de 10 puertos de transmisión).

2.1.3.

Topología Punto a Punto

En una red punto a punto o en malla como la de la gura 2.4, la latencia es igual al tiempo de transmisión en uno sólo de los chips. Tomamos el chip con más spikes para transmitir como peor caso y obtenemos que la latencia es igual al número de spikes que se transmiten en ese chip por el inverso de la frecuencia de trabajo (ecuación 2.6).

INTERFAZ DE RED AER-RT

11

Figura 2.5: Distribución de probabilidad de localidad en redes SNN[2]



Tmalla

spikes = chip

  1/fCLK

(2.6)

M AX

Si el número de enlaces serie fuera innito en cada chip, ésta sería sin duda la mejor opción. Debido a que todos los spikes se transmiten de forma concurrente, la latencia sólo viene determinada por el número de spikes por chip y por la frecuencia de trabajo (no inuye el número de chips del sistema). El límite de esta topología lo impone el número de puertos de comunicación de cada chip. La topología punto a punto puede ser interesante para formar alguna topología híbrida.

Ejemplo numérico Si tomamos como ejemplo de chip una FPGA Kintex 7 disponemos de 28 puertos de comunicación serie bidireccionales. Esto nos permitiría implementar una red de hasta 28 chips (19k neuronas).

2.2. Estudio red jerárquica En este apartado estudiamos la posibilidad de establecer diferentes niveles de jerarquía en la red. Pensamos aprovechar la característica de localidad que tienen las neuronas al formar sinapsis. Según se desprende de la gura 2.5 las neuronas tienen más probabilidad de establecer lazos sinápticos con las neuronas más cercanas. Podemos aprovechar esta propiedad de localidad y por ejemplo crear una red con dos niveles de jerarquía: redes locales y red global. En la gura 2.6 se muestra un ejemplo de red jerárquica híbrida, en este caso cada chip tiene

INTERFAZ DE RED AER-RT

12

Figura 2.6: Red jerárquica híbrida

una red local intra-chip (dentro del chip) de tipo bus compartido, y cada chip forma una red global o-chip (fuera del chip) en anillo. En una red de este tipo cada spike que se transmite en cada chip tiene una característica de localidad. Puede ser local o global. Por lo tanto tendremos que añadir a cada spike esta propiedad.

Tjer´arquica = M AX(Tlocal , Tglobal )

(2.7)

Tjer´arquica = Tglobal

(2.8)

En una arquitectura de red jerárquica, con dos niveles de jerarquía, la latencia se divide en latencia de la red local y latencia de la red global. Si la distribución de spikes se realiza en paralelo en las dos redes la latencia será igual a la mayor de ellas (ecuación 2.7). En el caso de una red SNN la latencia está dominada por el tiempo que se invierte en transmitir los spikes globales, por lo que obtenemos la expresión 2.8 para la latencia en una red jerárquica. Por lo tanto siempre que no todos los spikes sean globales mejoraremos la eciencia del bus con respecto a una red no jerárquica (en el peor caso en el que todos los spikes sean globales la igualaremos).

INTERFAZ DE RED AER-RT

13

Anillo

Estrella

Punto a Punto

#chips

952

952

28 (limitado por #puertos en chip)

Hardware Adicional

NO

SI

NO

Cuadro 2.1: Tabla comparativa con los ejemplos numéricos vistos en cada topología

2.3. Conclusión estudio arquitectura de red De las diferentes topologías analizadas la topología en anillo parece ser la mejor elección. Tiene las mismas prestaciones que la topología en estrella y supone un ahorro signicativo en Hardware adicional (repetidores). La topología punto a punto o en malla tiene la mejor eciencia de bus pero está limitado por las conexiones que tenga cada chip, puede ser interesante para formar alguna topología híbrida. Queda alguna topología que puede ser interesante por estudiar: en mariposa torus-3D También se ha analizado que la mejor eciencia de red se consigue dotando de jerarquía a la arquitectura de red. Debido a que tenemos una latencia prácticamente igual a una red en estrella (o en bus compartido) y a su facilidad de implementación (no necesita Hardware adicional y necesita un reducido número de enlaces) decidimos desarrollar una arquitectura de comunicaciones con topología en anillo. Se contempla también la posibilidad de extenderla en el futuro a una red jerárquica.

2.4. Elección de bus serie frente a paralelo Uno de los objetivos del proyecto es diseñar un interfaz de red que sea eciente. Eso implica tener una velocidad elevada de transmisión de datos. Por este motivo se plantea la posibilidad de pasar de una comunicación paralela, utilizada en el interfaz de red previo de Ubichip, a una comunicación serie de alta velocidad. Trabajar a altas velocidades en un bus paralelo tiene una serie de desventajas: Más interferencias

INTERFAZ DE RED AER-RT

14

Dicultad de rutar las líneas para igualar retardos Además es más cara su implementación porque utiliza muchos puertos y líneas.

Por eso la tendencia en comunicaciones de alta velocidad es utilizar comunicaciones serie: Mejor integridad de la señal Mayores frecuencias Más barato Por lo tanto para tener un sistema eciente se ha optado por una comunicación serie. La comunicación serie permite trabajar a frecuencias más elevadas que la paralela, además presenta una serie de ventajas en cuanto a la implementación: más barato (menos líneas a rutar, menos puertos a utilizar), mayor inmunidad frente a ruido e interferencias. El hecho de que la transmisión sea serie añade además facilidad en cuanto a la conexión entre las diferentes tarjetas. Para conseguir velocidades elevadas decidimos utilizar los bloques Gigabit Transceivers que incorpora la FPGA Kintex-7. Esto supone la necesidad de utilizar un protocolo para transmitir los datos a alta velocidad. Existen varias posibilidades [7]: Inniband Fiber Channel SATA PCIe Finalmente nos decantamos por un protocolo que proporciona Xilinx de manera gratuita y que está ampliamente soportado por las FPGAs de altas prestaciones de este fabricante: Aurora.

2.5. Elección Aurora 8B/10B como protocolo serie de alta velocidad Al decidir utilizar comunicación serie de alta velocidad nos surge la necesidad de usar un protocolo adicional que encapsule los datos y los transmita a alta velocidad. Esto implica que el protocolo elegido nos tiene que asegurar

INTERFAZ DE RED AER-RT

15

una serie de prestaciones necesarias en comunicaciones de este tipo: compensación de errores, paridad, codicación, distribución de bits, etc. Estudiamos diferentes opciones (ethernet, crear un protocolo propio, etc) pero nalmente nos decidimos por utilizar el protocolo Aurora 8B/10B de Xilinx por 2 razones: 1) simplicidad, 2) prestaciones adecuadas a nuestras necesidades. Aurora 8B/10B [5] es un protocolo de nivel de enlace escalable y ligero para comunicaciones serie de alta velocidad. Para utilizar el protocolo en tu diseño Xilinx proporciona el Core de propiedad intelectual (IP) Aurora 8B/10B. El Core permite establecer transmisión de datos serie entre distintos dispositivos usando los Gigabit Transceivers GTX, GTP y GTH de Xilinx. La velocidad de salida de los datos es escalable desde 480 Mb/s hasta 84,48 Gb/s (si se utilizan varios transceivers en paralelo). Los canales de datos pueden ser full-duplex o simplex (bidireccionales o unidireccionales). Xilinx proporciona el Core en código VHDL o Verilog. En nuestro caso usamos la versión en VHDL por compatibilidad con SNAVA. El IP Core Aurora 8B/10B es versátil en cuanto a aplicaciones debido a su bajo coste, velocidad escalable y amigable interfaz de usuario. Una de las aplicaciones que se señala en el datasheet del fabricante es Chip-to-chip links(comunicaciones entre distintos chips). Se señala que con este Core puedes reemplazar fácilmente las conexiones paralelas entre chips por conexiones serie de alta velocidad, ya que el Core proporciona toda la lógica necesaria para utilizar los bloques Gigabit Transceivers de la FPGA. Además con un consumo reducido de la lógica de la FPGA. Como vemos el IP Core Aurora de Xilinx cumple el requisito de eciencia que estamos buscando para la red. Además combinado con la topología en anillo permitirá tener un sistema multi-chip escalable.

Ejemplo numérico La frecuencia de bus máxima en Aurora utilizando un transceiver es de 6,4 Gb/s. . Si seleccionamos el bus de datos con tamaño de 16 bits implica una frecuencia de trabajo a nivel de usuario de 312 MHz. Si aplicamos estos números a la fórmula para calcular la latencia en una red con topología en anillo (ecuación 2.3) obtenemos una escalabilidad de hasta 1485 chips, más de 1 millón de neuronas.

INTERFAZ DE RED AER-RT

16

Capítulo 3

Protocolo AER-RT 3.1. Introducción En este capítulo se presenta el protocolo AER-RT (AER-Ring Topology). Este protocolo permite la transmisión de spikes en una red SNN con topología en anillo. La transmisión de spikes se realiza encapsulando los spikes en paquetes de datos AER-RT que viajan a su vez encapsulados en el protocolo de comunicaciones serie de alta velocidad Aurora 8B/10B.

En las guras 3.1 y 3.2 podemos observar como sería la estructura de una red AER-RT con 2 y 3 nodos respectivamente. Cada nodo es una FPGA e incluye un bloque Aurora bidireccional.

A continuación se enumeran las principales características del protocolo AER-RT: Está basado en el protocolo AER: la transmisión de spikes se realiza transmitiendo sólo la dirección de la neurona que genera el spike Permite conectar múltiples chips en anillo Permite sincronizar todos los chips del anillo para entrar en fase de distribución al mismo tiempo

Figura 3.1: Anillo AER-RT con 2 nodos

17

INTERFAZ DE RED AER-RT

18

Figura 3.2: Anillo AER-RT con 3 nodos

Permite la distribución por todo el anillo de los spikes que genera cada chip Permite controlar si se pierde alguno de los spikes al viajar por el anillo Permite añadir un nuevo nodo o chip al anillo sin que suponga cambiar el diseño del interfaz No necesita que uno de los chips del anillo sea máster, el diseño es totalmente simétrico para todos los nodos del anillo El único requisito es que cada nodo o chip esté identicado con un identicador de chip que denominamos chip-id El interfaz entre AER-RT y el sistema multiprocesador (puede ser SNAVA u otro) está perfectamente denido y documentado

3.2. Problemática de diseño El desarrollo del protocolo AER-RT presenta los siguientes puntos críticos a la hora de realizar el diseño 1. Sincronización entre diferentes nodos del anillo 2. Distribución de spikes en el anillo (necesidad de establecer un canal de Bypass en cada anillo) 3. Detectar cuando se ha completado la distribución de spikes

INTERFAZ DE RED AER-RT

19

3.3. Sincronización entre los nodos del anillo Uno de los primeros problemas a solucionar es cómo sincronizar los diferentes chips del anillo. En el sistema multiprocesador que acompaña al interfaz de red AER-RT como sabemos hay un array de PE que emulan neuronas. Estos PE procesan los datos de entrada en la fase de ejecución y generan los spikes a distribuir durante la fase de distribución. El problema es que todos los chips no tienen por que contener la misma secuencia de instrucciones, por lo que en cada chip la fase de ejecución puede terminar en un momento distinto.

El problema a solucionar por lo tanto es como saber en un determinado chip que todos los chips han terminado la fase de ejecución y por lo tanto se puede comenzar con la fase de distribución.

A continuación presentamos 3 alternativas para realizar la sincronización.

3.3.1.

Sincronización de nodos mediante líneas punto a punto

Esta solución consiste en utilizar una puerta lógica de tipo AND donde cada una de sus entradas corresponde a una señal proviniente de cada uno de los chips con información de si se ha acabado la fase de ejecución (1: se ha acabado; 0: no se ha acabado). De esta manera cuando tengamos un 1 lógico a la salida de la puerta AND podremos asegurar que todos los nodos están listos para transmitir. Esta solución implica utilizar N + 1 cables en una red de N nodos. Además necesitamos lógica adicional para implementar la puerta AND con tantas entradas como nodos tenga el sistema (ver gura 3.3). Como punto positivo la arquitectura Hardware sería simétrica en todos los chips, ya que no necesita que un chip comience la transmisión, es decir no necesita que uno de los chips actúe como máster.

3.3.2.

Sincronización de nodos mediante línea adicional de ready en pipeline

Esta solución consiste en conectar cada chip con su vecino mediante una línea externa (línea de ready). Mediante esta línea cada chip propaga su estado y el de los chips que lo preceden. Cuando tenemos un positivo a la entrada hay que esperar a que éste sea estable como mínimo el tiempo que tarda en propagarse la señal ready por todo el anillo.

Esta solución necesita menos líneas adicionales que la anterior, pero presenta el inconveniente que uno de los chips tiene que actuar como máster e

INTERFAZ DE RED AER-RT

20

Figura 3.3: Sincronismo línea externa punto a punto

Figura 3.4: Sincronismo entre chips mediante línea de control en pipeline

iniciar la propagación de su estado (en la gura 3.4 el chip_1). Esto implica diferente lógica según el chip sea máster o no. O añadir un registro de conguración a cada chip que le indique si es máster. En la gura 3.4 la señal eo_exec se pone a '1' cuando se completa la fase de ejecución.

3.3.3.

Sincronización de nodos mediante paquetes de control

Esta solución consiste en utilizar el propio canal de comunicaciones para realizar la sincronización. El proceso de sincronización según este método consta de los siguientes pasos: 1. Cuando un chip ha terminado la fase de ejecución envía un paquete de sincronización con su chip-id. 2. Cada chip va contabilizando los paquetes de sincronización que recibe. 3. Cuando un determinado chip contabiliza n paquetes de sincronización y el número de chips en el sistema es de n, entonces está sincronizado y puede iniciar la fase de distribución. Hay un desfase de como máximo de n ciclos de reloj entre que empieza a transmitir el primer chip hasta que lo hace el último. Pero esto no implica

INTERFAZ DE RED AER-RT

21

ningún problema a nivel práctico.

Ésta es la solución que se utiliza nalmente. Reúne la ventaja de tener un diseño de Hardware simétrico para cada nodo del anillo (no hay necesidad de nodo máster), y además no es necesario utilizar ningún recurso adicional. Eso sí, implica introducir un mecanismo de sincronización dentro del propio protocolo.

3.4. Protocolo AER-RT El protocolo AER-RT se encarga de distribuir mensajes de tipo AER (transmisión de dirección de elemento generador de evento) en una red multiprocesador SNN. En primer lugar se encarga de sincronizar todos los nodos del anillo. Una vez sincronizados todos los nodos, comienza la distribución de todos los spikes del sistema. Además cada spike, una vez que ha sido procesado por todos los nodos de la red, regresa al chip que lo generó y en este punto muere. De esta manera podemos controlar en cada chip si se ha perdido algún paquete de los que él mismo generó.

En la gura 3.5 se presenta un esquema del funcionamiento del protocolo: el chip n crea paquetes y los envía. Estos paquetes son recibidos y procesados por el chip adyacente en el anillo n+1, el cual los reenvía al chip n+2 del sistema. Finalmente cuando el paquete alcanza otra vez el chip n, donde fue generado, muere.

El protocolo consta de tres fases: 1. Fase de sincronización: Se envían paquetes de sincronismo para asegurar que la distribución de spikes comienza cuando todos los chips han acabado la fase de ejecución 2. Distribución de spikes: Los spikes que genera cada chip son enviados como paquetes de datos. Cada paquete tiene un tiempo de vida limitado. Una vez que ha recorrido todo el anillo y vuelve al chip que lo generó muere 3. Fin distribución de spikes. Un chip sabe que ha recibido todos los spikes del sistema cuando recibe el paquete FINISH que él mismo generó previamente, o alternativamente cuando contabiliza tantos paquetes FINISH como nodos hay en el sistema. El paquete FINISH se envía como último paquete después de enviar el último spike en un determinado chip.

INTERFAZ DE RED AER-RT

22

Figura 3.5: Arquitectura pipeline en anillo

3.4.1.

Tipos de paquetes

En el interfaz de red diseñado, la información se transmite encapsulada en paquetes AER-RT de 16 bits. Hay dos tipos de paquetes: paquetes de datos y paquetes de control. En la tabla 3.1 se presentan los diferentes tipos de paquetes AER-RT.

Los paquetes de datos transmiten la dirección de la neurona fuente que genera el spike (protocolo AER). Sin embargo no contienen información sobre qué chip ha generado el spike (chip-id). La dirección de cada chip (chip-id) va contenida en los paquetes de control. Por esta razón los paquetes de datos siempre han de ir precedidos de un paquete de control START, para conocer de que chip provienen.

Los paquetes de datos se transmiten en ráfagas. Cada ráfaga corresponde a datos provenientes de un determinado chip y está precedida por un paquete de START. El paquete de START es imprescindible ya que proporciona información sobre el chip id de todos los paquetes de datos de la ráfaga. Finalmente la ráfaga naliza con un paquete de FINISH.

Dentro de los paquetes de control hay 4 subtipos: SYNC, START, FINISH y IDLE.

El paquete de control START se utiliza para transmitir el chip-id de los paquetes de datos que precede.

El paquete de control FINISH se encarga de señalar cuando termina una ráfaga de datos de un determinado chip. Además permite conocer cuando se ha terminado la fase de distribución. Cuando en el receptor contabilizamos

INTERFAZ DE RED AER-RT

Control

23

SYNC START FINISH IDLE

Datos Cuadro 3.1: Tipos de paquetes AER-RT

tantos paquetes FINISH como nodos hay en el sistema, podemos asegurar que la distribución de spikes se ha completado y que por lo tanto se ha completado un ciclo AER-RT. Los paquetes de control de sincronismo o paquetes SYNC son utilizados durante la fase de sincronización. Cada vez que un chip ha terminado la fase de ejecución en su sistema multiprocesador, y por lo tanto está listo para entrar en la fase de distribución de spikes, envía un paquete de sincronismo. Este paquete simplemente contiene el chip-id del chip que lo generó. De forma equivalente cada chip en el anillo hará lo mismo cuando esté listo para comenzar la fase de distribución de spikes. Finalmente cuando en un determinado chip se reciben todos los paquetes de sincronismo del sistema (tantos como nodos hay en el anillo), incluido el generado por él mismo, indica que ya están todos los chips listos. En este momento se empiezan a distribuir los spikes por el anillo. Los paquetes de control de tipo IDLE son paquetes que se generan cuando el sistema está en reposo, de ahí su nombre. Este tipo de paquetes se añadió posteriormente a la primera concepción del protocolo. Surge como necesidad después de observar que si no se transmiten datos por el enlace serie durante un periodo largo de tiempo, aparecen errores en el enlace. De esta manera en los momentos que el protocolo está en reposo se envían constantemente paquetes de tipo IDLE. Así el enlace se mantiene en perfectas condiciones y sin ningún error.

3.4.2.

Estructura de los paquetes

Los paquetes AER-RT son paquetes de 16 bits. Los paquetes de datos se distinguen de los de control por el primer bit. Es la cabecera AER-RT (H). Si tenemos un 0 son paquetes de control y si tenemos un 1 son paquetes de datos. En los paquetes de datos tan sólo hay un bit de cabecera, los 15 bits restantes se pueden utilizar para transmitir datos (en el sistema implementado sólo utilizamos 11 de estos bits). La decisión de no incluir la dirección de chip en el paquete de datos nos permite una mayor eciencia en el número

INTERFAZ DE RED AER-RT

24

1 bit

3 bits

5 bits

7 bits

H

H_CONT

UNUSED

chip-id

Cuadro 3.2: Paquete de Control AER-RT 1 bit

4 bits

11 bits

H

UNUSED

_____DATOS_____

Cuadro 3.3: Paquete de datos AER-RT

de neuronas que podemos direccionar dentro de un mismo chip. Ver gura 3.3. En los paquetes de control hay 3 bits adicionales de cabecera, es lo que llamaremos cabecera de control. Según el valor de éstos tres bits adicionales identicaremos los diferentes paquetes de control: SYNC, START, FINISH, IDLE. Además en los 7 bits de menos peso está contenido el chip-id. Ver gura 3.2.

3.4.3.

Campos de los paquetes

A continuación se enumeran los diferentes campos que contienen los paquetes AER-RT. En las tablas 3.4 y 3.5 se muestran los valores de las cabeceras AER-RT y de control según el tipo de paquete. 1. H (1 bit). Cabecera. Indica el tipo de paquete 2. H_CONT (3 bits). Cabecera de control. Indica el tipo de paquete de control 3. UNUSED. Bits no utilizados pero disponibles si se quiere aumentar los bits utilizados para datos (en paquetes de datos) o para chip-id (en paquetes de control) 4. chip-id (7 bits). Es la dirección del chip que generó el paquete. Nos permite hasta 128 chips (ampliable) 5. DATOS (11 bits). Es la dirección de la neurona que generó el spike. Permite hasta 2048 neuronas en cada chip. Ampliable hasta 32768 neuronas por chip si utilizamos los 15 bits de datos del paquete de datos.

3.4.4.

Detección de errores

El hecho de que los paquetes de datos viajen por el anillo y vuelvan al mismo chip que los generó permite conocer si se ha producido algún error o

Cabecera AER-RT

Tipo de paquetes

0

Control

1

Datos

Cuadro 3.4: Cabecera AER-RT Cabecera de control

Tipo de paquete

100

IDLE

101

SYNC

110

START

111

FINISH

Cuadro 3.5: Cabecera de control

alguna pérdida de datos. De esta manera se planea detectar pérdidas de paquetes mediante un contador en transmisión y otro en recepción. Y detectar la integridad de los datos mediante el cálculo del checksum de los paquetes de datos transmitidos y recibidos.

3.5. Interfaz entre AER-RT y sistema multiprocesador El interfaz AER-RT está ideado para trabajar en conjunto con un sistema multiprocesador. Por lo tanto es fundamental que quede bien denido el interfaz entre ambos subsistemas. En la gura 3.6 podemos observar la unión de estos bloques en un esquema de red con 3 chips.

3.5.1.

Interfaz de datos

¾Cómo le indica el sistema multiprocesador al interfaz AER-RT los spikes que quiere que se distribuyan por el sistema? El método consiste en escribir en la FIFO de entrada del interfaz AER-RT todos los spikes a transmitir, y acto seguido, una vez escritos todos los spikes, activar la señal que indica el nal de la fase de ejecución eo_exec.

Por su parte el interfaz de recepción AER-RT irá sacando datos en el bus de recepción a medida que los vaya recibiendo. Se planea construir un bloque adicional que traduzca y sincronice la recepción de estos datos con el interfaz de recepción del sistema SNAVA. Una vez recibidos todos los datos o spikes se genera un pulso en el puerto eo_didtrib que viaja hasta el sistema MP para indicar que la fase de distribución se ha completado.

25

Figura 3.6: Esquema de la unión entre sistema MP y AER-RT en red con 3 nodos

26

INTERFAZ DE RED AER-RT

27

Figura 3.7: Cronograma Handshaking entre AER-RT y sistema MP

3.5.2.

Handshaking (o señales eo_exec y eo_distrib)

Las señales de Handshaking entre AER-RT y el sistema MP permiten que cada bloque conozca en que punto del ciclo de emulación se encuentra. Recordamos que un ciclo de emulación se divide en fase de ejecución y fase de distribución de spikes. El comienzo del protocolo AER-RT se produce al recibir un nivel lógico alto en el puerto de entrada eo_exec (eo_exec=end of execution). El sistema multiprocesador le indica mediante esta señal al interfaz AER-RT que ha terminado la fase de ejecución, y por lo tanto puede empezar la fase de distribución. Una vez terminada la distribución de spikes y por lo tanto completado un ciclo AER-RT se le indica al sistema multiprocesador mediante un pulso en el puerto de salida eo_distrib (eo_distrib = end of distribution). De manera periódica se alternan fases de ejecución y de distribución con un cronograma para las señales eo_exec y ei_exec como el que vemos en la gura 3.7.

3.5.3.

Señal de Error

En el momento de generar la señal eo_distrib, que indica el nal de la fase de distribución, se actualiza la señal de error AER_error. Si la señal vale uno quiere decir que durante la fase de distribución se han perdido paquetes, en caso contrario la distribución de spikes se ha realizado con éxito.

INTERFAZ DE RED AER-RT

28

Capítulo 4

Arquitectura AER-RT 4.1. Introducción La función principal del interfaz de comunicaciones AER-RT es la de distribuir spikes (o paquetes de datos) a lo largo de un anillo con N nodos. Por lo tanto, a nivel de Hardware, necesitamos un transmisor, un receptor y un sistema de bypass que permita pasar los datos de un nodo a otro en el anillo. En la gura 4.1 podemos ver un esquema simplicado del interfaz AER-RT. Como se puede apreciar en el esquema simplicado de la gura 4.1, el sistema consta de cuatro bloques principales: Aurora, AER RX, BYPASS y AER TX.

El bloque Aurora se encarga de encapsular y desencapsular los datos que se transmiten y reciben con el protocolo serie de alta velocidad Aurora de Xilinx AER RX es el bloque de recepción donde se reciben los paquetes AERRT provenientes del interfaz de recepción de Aurora. Los paquetes de datos se desencapsulan y se envían al sistema multiprocesador BYPASS es el bloque encargado de transmitir desde recepción hasta transmisión los paquetes recibidos que hay que retransmitir AER TX se encarga de crear los paquetes AER-RT y de transmitirlos al bloque Aurora. Los paquetes de datos los crea a partir de los datos recibidos del sistema multiprocesador En la gura 4.2 podemos observar un diagrama de bloques del interfaz de red AER-RT más detallado. Vemos que el sistema de bypass se realiza mediante una FIFO, es la que llamaremos Bypass FIFO. Esta FIFO se

29

Figura 4.1: Esquema AER-RT simplicado

30

Figura 4.2: Versión denitiva 31 Diagrama de bloques AER-RT

encarga de amortiguar los datos que se tienen que retransmitir. La FIFO de entrada Input FIFO, por su parte, se encarga de almacenar los spikes provenientes del sistema multiprocesador y que hay que distribuir por el anillo. El bloque AER Cong se encarga de guardar los parámetros de conguración del sistema (chip-id, ring_size, debug_mode). Por su parte el bloque AER_error se encarga de comprobar se se han perdido datos durante un ciclo de distribución. Si nos jamos podemos ver que entre el bloque AER RX y AER TX hay 2 señales de control: AER_on y AER_done. Estas señales son fundamentales para el correcto funcionamiento del sistema AER-RT. AER_on permite identicar cuando se ha completado la fase de sincronización y puede empezar la fase de distribución; y AER_done indica n de la fase de distribución y de ciclo AER-RT. El bloque CC_MODULE que conecta con Aurora es el bloque encargado de la compensación de clock. La compensación de clock se produce periódicamente en el enlace Aurora y consiste en que el enlace queda inhabilitado durante un número de ciclos de reloj determinado mientras Aurorarealiza tareas de reajuste. Mientras el enlace está inhabilitado no se pueden transmitir datos y el sistema se tiene que poner en un estado de espera hasta que se vuelva a liberar el enlace. Una vez liberado el sistema AER-RT reanuda su funcionamiento en el mismo punto que se quedo en el inicio de la fase de compensación de clock.

En cuanto a los puertos de entrada/salida que dispone AER-RT para comunicarse con el sistema multiprocesador podemos distinguir 2 tipos. Las señales de Handshaking con el sistema multiprocesador: AER_eo_exec es una entrada. Permite que el sistema MP indique que ha terminado la fase de ejecución y que se puede comenzar un nuevo ciclo AER-RT AER_eo_distrib es una salida. Permite noticarle al sistema MP que la fase de distribución a concluido y los diferentes interfaces para realizar la transmisión de datos: Interfaz AER TX. El interfaz de transmisión permite que el sistema MP escriba los spikes que quiere que se distribuyan. Los spikes se almacenan en la FIFO de entrada Input FIFO hasta que se distribuyen por el anillo. El interfaz incluye la necesidad del reloj del sistema MP. El reloj se utilizará para escribir en Input FIFO, ya que el interfaz de entrada diferencia entre 2 dominios de reloj, el de escritura y el de lectura. De esta forma se puede realizar la sincronización de datos entre el sistema MP y el interfaz AER-RT. Estos dos bloques están alimentados con 2 señales de reloj físicamente diferente por lo que representan dominios de reloj independientes

32

INTERFAZ DE RED AER-RT

33

Interfaz AER RX. El interfaz de recepción devuelve al sistema multiprocesador los spikes que provienen de la red multichip. El interfaz consiste en una señal de validación y el bus de datos

4.1.1.

Diferentes versiones

La primera versión de la arquitectura de el interfaz AER-RT ya fue concebida en Diciembre de 2012 (gura 4.3). En esta primera versión ya está denida la arquitectura fundamental, aunque se irán introduciendo algunos cambios. Por ejemplo en un principio se pensaba utilizar el modo Simplex del IP Core Aurora (unidireccional) y nalmente se ha utilizado el modo Duplex (bidireccional). La razón de este cambio es que la conguración Duplex de Aurora es más robusta y más fácil de implementar. También se contemplaba la opción de que la arquitectura fuera jerárquica y que distinguiera entre spikes locales y globales tal como se aprecia al observar que hay varias FIFOs adicionales. Esta opción no se ha llegado a materializar por falta de tiempo.

4.1.2.

Metodología

Hemos tratado de crear un sistema lo más modular posible, además de tratar de simplicar al máximo el diseño (losofía KISS: Keep it simple, stupid), si algo puede ser simple y funcionar no lo hagas complicado. También se ha empleado con éxito la técnica de divide and conquer (divide y vencerás), lo que ha facilitado la implementación de los bloques más complejos como el controlador de transmisión. Además, una vez diseñado el sistema en papel, se sigue un método de diseño incremental para implementar el sistema. Este método consiste en comenzar impementando un sistema básico y, una vez probado y asegurada su robustez, ampliarlo con una nueva funcionalidad. Y así progresivamente hasta que tengamos el diseño completo.

Por ejemplo, en una primera etapa implementamos un anillo muy simple, dónde un chip actúa como generador/receptor de datos pseudoaleatorios y el resto de chips hacen un bypass de lo que reciben. En la gura 4.4 podemos ver esta primera etapa de diseño incremental. En esta primera etapa el diseño ya es simétrico para todos los chips, seleccionamos si establecer generación/recepción de datos o bypass mediante un multiplexor atacado por el parámetro de conguración chip-id. Progresivamente fuimos añadiendo funcionalidades al sistema. Primero sincronización, luego datos, nalmente detección de errores. Esta forma de trabajar permite localizar y depurar fácilmente las partes críticas del diseño.

INTERFAZ DE RED AER-RT

Figura 4.3: Primera versión diagrama de bloques (Diciembre 2012)

34

INTERFAZ DE RED AER-RT

35

Figura 4.4: Primer paso en el diseño incremental

4.2. Interfaz con sistema Multiprocesador 4.2.1.

Problema adicional: 2 dominios de reloj

El sistema resultante al unir el interfaz de red AER-RT y el sistema multiprocesador tiene dos dominios de reloj físicamente diferentes. El sistema AER-RT utiliza el reloj recuperado de los datos transmitidos por el enlace serie Aurora, y el sistema MP tiene su propio reloj. Estos relojes podemos ajustarlos a la misma frecuencia, pero son relojes físicamente diferentes y que no están relacionados (por ejemplo no conocemos la diferencia de fase que hay entre ellos). Por lo que forman distintos dominios de reloj. Por lo tanto necesitamos un mecanismo para poder establecer una comunicación entre señales que pertenecen a diferentes dominios de reloj. Para ello utilizamos sincronizadores. Para sincronizar señales de control utilizaremos registros en cascada alimentados con el reloj del dominio de clock al que viaja la señal. Los buses de datos se sincronizan mediante FIFOs de doble puerto con dominios de reloj independientes en la interfaz de escritura y en la de lectura. La sincronización de los datos de entrada la realizamos mediante una FIFO de sincronización. Este tipo de FIFOs tiene un reloj independiente para la escritura de datos y otro para la lectura. En nuestro caso esta función la desempeña INPUT FIFO, creada a partir de el IP Core de Xilinx FIFO Generator que permite la sincronización de los datos. La sincronización de los datos de salida se realiza utilizando otra FIFO

INTERFAZ DE RED AER-RT

36

de sincronización similar a la que se utiliza en la entrada. Es la FIFO OUTPUT FIFO que se encuentra en el bloque AER_2_SNAVA (ver sección 4.2.3 para más detalles sobre este bloque). Esta FIFO es similar a INPUT FIFO y permite sincronizar los datos entre los dos dominios de reloj.

El bloque adicional AER_2_SNAVA (ver gura 4.6) se presenta como un extra junto con el sistema AER-RT. Su función es la de adaptar el sistema AER-RT para trabajar conjuntamente con el sistema SNAVA. De esta manera las particularidades de la comunicación con SNAVA están contenidas en el componente AER_2_SNAVA y el bloque AER-RT conserva su universalidad para conectar con otros sistemas MP.

La sincronización de las señales de Handshaking, a saber: eo_exec (de entrada) y eo_distrib (de salida) la realizamos utilizando registros de sincronización conectados en cascada, en concreto utilizamos 3 registros en cascada para reducir al mínimo la probabilidad de que aparezca metaestabilidad. Al sincronizar eo_exec los registros de sincronización utilizan el reloj del AER-RT; Y al sincronizar eo_distrib los registros de sincronización utilizan el reloj del sistema multiprocesador. Los registros de sincronización se encuentran en el bloque adicional AER_2_SNAVA.

4.2.2.

Input FIFO. Sincronización de datos de entrada

Esta FIFO se encarga de la sincronización de los datos de entrada. Para ello utilizamos una FIFO de doble puerto con relojes independiente para lectura y escritura.

Al poner esta FIFO dentro del sistema AER-RT estamos forzando que uno de los puertos de entrada del sistema sea el reloj del bloque multiprocesador, que se utilizará como reloj de escritura en la FIFO de entrada.

Podríamos haber puesto la FIFO de entrada en el bloque externo AER_2_SNAVA para evitar el puerto de entrada con el clock de escritura (reloj del sistema multiprocesador). Pero hemos decidido incluirla en el bloque AER-RT ya que ésta está totalmente integrada con el bloque de transmisión, y además así el envío de spikes es tan intuitivo como escribir en una FIFO.

La profundidad es de 1024 palabras y tiene 4 ciclos de sincronización por seguridad. Se ha utilizado el IP Core de Xilinx FIFO Generator para implementarla (ver opciones de conguración del IP Core en la gura 4.5).

INTERFAZ DE RED AER-RT

37

Figura 4.5: Input FIFO Xilinx IP Core

4.2.3.

AER_2_SNAVA. Sincronización datos de salida

Este bloque actúa de interfaz entre el sistema de red AER-RT desarrollado y el sistema multiprocesador SNAVA. Se ha decidido poner este bloque fuera del sistema AER-RT para dotar a éste de mayor generalidad. Además en este bloque se realiza la sincronización de los datos recibidos entre los 2 dominios de reloj que hay en el sistema global.

El bloque AER-RT tiene su propio dominio de reloj. Y el Sistema SNAVA el suyo. La frecuencia de los relojes es la misma, pero son señales físicamente diferentes por lo tanto no es posible conocer cual será la diferencia de fase entre ellas. En el esquema de la gura 4.6 identicamos el reloj del AER en rojo y el del sistema multiprocesador en azul.

Para sincronizar los datos entre los dos dominios de reloj se utiliza una FIFO de sincronización, la OUTPUT FIFO, de manera similar a como hicimos con INPUT FIFO. OUTPUT FIFO es una FIFO de doble puerto donde hay una entrada de reloj diferente para escritura y para lectura. Por lo tanto los datos que se reciben del interfaz AER-RT se escriben en la FIFO de salida, con el reloj del AER-RT. Necesitamos una máquina de estados que se encargue de leer estos datos y enviarlos al sistema multiprocesador SNAVA, esta vez con el reloj del SNAVA. Podemos ver el diagrama de estados de esta máquina de estados en la gura 4.8. En este diagrama

INTERFAZ DE RED AER-RT

Figura 4.6: Diagrama de bloques AER_2_SNAVA

Figura 4.7: Output FIFO Xilinx IP Core

38

INTERFAZ DE RED AER-RT

39

Figura 4.8: Diagrama de estados máquina de estados de AER_2_SNAVA

se observa como, cuando se recibe la señal eo_distrib (que indica nal de fase de distribución, por lo que sabemos que se han escrito todos los datos recibidos en la FIFO de salida), se procede a la lectura de la FIFO y la validación de los datos leídos para que sean capturados por el sistema MP. A continuación cuando la FIFO de salida comunica que está vacía mediante la señal out_empty, lo que implica que se han leído y enviado todos los datos al sistema MP, se procede a generar la señal ei_exec que indicará a SNAVA el nal del ciclo AER-RT. Por último se comprueba que eo_exec se haya puesto a nivel bajo y se vuelve al estado de reposo IDLE_ST.

Señalar que es muy importante incluir en el chero de constraints del diseño (en Xilinx se usa el chero UCF), las restricciones de frecuencia de los dos dominios de reloj. Además hay que incluir en las restricciones que se analice el retardo entre los dominios, con la instrucción From: To. Nosotros no lo hicimos en un principio y tuvimos problemas de retardo en alguna de las líneas de lectura de la FIFO de salida. En todo caso el problema de retardo se puede solucionar añadiendo registros de pipeline en el camíno crítico (ver registros RP en gura 4.6).

4.3. Aurora 4.3.1.

Introducción

Aurora es un protocolo de comunicaciones creado por Xilinx. Permite implementar comunicaciones serie de alta velocidad de una forma sencilla. Utiliza los transceivers de alta velocidad incluidos en las siguientes FPGAs de Xilinx: Virtex-7, Kintex-7, Virtex-6 y Spartan-6. La forma de incluirlo en un diseño es generar el Core mediante la herramienta Core generator.

INTERFAZ DE RED AER-RT

40

Principales características: Serialización diferencial formato NRZ 8b/10b: DC balance, mismo número de 1 que 0 (disparity), bit transittion density (permite recuperar el clk en recepción) Clock compensation: permite hasta

±100ppm

de error entre Tx y Rx

wire speed: 1 - 12 Gbps Payload: 0,8 - 10Gbps SCRAMBLING: Distribuir datos de forma aleatoria pero de forma que se puedan recuperar

4.3.2.

Generar Core

Al generar el Core se pueden congurar los siguientes parámetros [6]: Aurora Lanes: Es el número de canales que tendrá el enlace. Se pueden elegir entre 1 y 16. Cada canal se implementa haciendo uso de un transceiver. Lane with: #bytes de datos a transmitir. Se pueden elegir 2 ó 4. Line rate: velocidad de transmisión de datos sin codicar. GT REFCLK: Frecuencia del Clock que utiliza el transceiver. El Core tiene las siguientes características de funcionamiento: Dataow Mode: Duplex o Simplex, es decir bidireccional (Transmisión y Recepción) o unidireccional (Transmisión o Recepción). En nuestro caso utilizaremos modo Duplex Interface: Framming o Streaming. Framing interesa si utilizas el bus AMBA. Streaming es tan sencillo como escribir o leer datos en o de una memoria. Usamos streaming Flow Control: Permite establecer prioridad y controlar el ujo de datos, velocidad, tipo. Ejemplo que no se rebose el buer de recepción. Evita pérdidas. Backchannel: 2 opciones: Sidebans o Timer. Permite comunicación entre Core simplex tx y Core simplex rx. Sidebans son 4 puertos en cada Core simplex que unimos mediante cable con su simplex partner. Timer es un sistema que mediante temporizador supone que la inicialización del partner se ha realizado correctamente. Usamos sidebands

INTERFAZ DE RED AER-RT

41

Frecuencia transmisión

Tamaño palabra @ Frecuencia trabajo

2.500 Gbps

16 bits @ 125 MHz

3.125 Gbps

16 bits @ 156 MHz

4.000 Gbps

16 bits @ 200MHz

6.250 Gbps

16 bits @ 312 MHz

3.125 Gbps

32 bits @ 77 MHz

6.250 Gbps

32 bits @ 145 MHz

Cuadro 4.1: Equivalencia entre frecuencia de transmisión (serie) y frecuencia de trabajo (paralelo)

4.3.3.

Conguración utilizada

La conguración utilizada es la siguiente: # Aurora lanes = 1 lane width = 2 lane rate = 2,5 Gbps -> User Clock =125 Mhz GT ref clock = 125 MHz. Reloj de jitter bajo Modo de ujo: Duplex Interfaz: Streaming Sin Flow Control Localización física del transceiver en Kintex-7: Utiliza el Quad X0Y8 [9] Dependiendo de la frecuencia a la que quieras trabajar en el sistema elegirás una determinada frecuencia de transmisión. En nuestro caso hemos congurado el Core a 2,5 Gbps ya que queremos trabajar a 125 MHz, que es la frecuencia a la que trabaja el sistema SNAVA. En la tabla 4.1 se pueden apreciar distintas conguraciones en función de la frecuencia de trabajo que se desee y del tamaño del bus de datos.

4.3.4.

Sistema de compensación de clock

La compensación de clock es un mecanismo fundamental en comunicaciones chip-to-chip dónde cada chip tiene su propio reloj. Este reloj es de la misma frecuencia en todos los chips del sistema pero son físicamente distintos. Por lo tanto aunque a priori tengan la misma frecuencia siempre habrá una pequeña diferencia de frecuencia entre los diferentes relojes. Esta diferencia se compensa periódicamente en el sistema realizando una parada en la transmisión de datos y enviando secuencias de compensación de clock.

INTERFAZ DE RED AER-RT

42

4.4. AER Tx 4.4.1.

Conexión con otros bloques

El bloque AER TX, como se aprecia en la gura 4.9, conecta con los siguientes bloques: Aurora. El interfaz consiste en habilitar datos para su transmisión siempre que la señal ready indique que el enlace Aurora está disponible Input FIFO. De aquí se obtienen los datos provenientes del sistema multiprocesador. Es decir, los spikes que se tienen que distribuir por todo el sistema. En la FIFO de entrada están los datos crudos, sin ningún tipo de cabecera AER-RT. Es un interfaz de lectura de la FIFO Bypass FIFO. Aquí se encuentran paquetes AER-RT, pueden ser de datos o de control, que esperan a ser retransmitidos. Es un interfaz de lectura de la FIFO AER RX. De el bloque AER RX se obtienen las principales señales internas de control del protocolo AER-RT: AER_on y AER_done. AER_on indica que la fase de sincronización se ha completado con éxito y que por lo tanto se puede comenzar la distribución de spikes; AER_done indica que la fase de distribución de spikes ha nalizado y que por lo tanto el ciclo AER-RT ha llegado a su n AER Cong. De este bloque se obtienen los parámetros de conguración y las entradas de habilitación del modo Debug. Los principales parámetros de conguración en cada chip son: chip-id, Ring_size y debug_mode AER Error. Este bloque se encarga de comprobar que no se han perdido datos durante la distribución de spikes. Comprueba que todos los paquetes de datos que genera un determinado chip llegan de nuevo al chip a través del anillo. No se garantiza el contenido de los paquetes de datos

4.4.2.

Diagrama de bloques

El funcionamiento del bloque AER TX consiste en la transmisión de los paquetes AER-RT. Desde el punto de vista del bloque AER TX, cada ciclo AER-RT se puede dividir en varias etapas: 1. IDLE. Etapa de reposo. Se envían paquetes de tipo IDLE constantemente para mantener el enlace de comunicaciones. 2. SYNC. Fase de sincronización. Se envían varios paquetes de sincronización. En la versión actual del sistema se envían 2 paquetes SYNC

INTERFAZ DE RED AER-RT

43

Figura 4.9: Puertos AER_TX

3. BYPASS SYNC. Se hace el bypass de paquetes de sincronismo recibidos de otros chips 4. START. Se envía el paquete de START 5. DATA. Se envían paquetes de datos 6. FINISH. Se envían paquetes de FINISH 7. BYPASS DATA. Bypass de los paquetes de START, DATOS y FINISH de otros chips 8. Fin. Cuando se recibe el último paquete de FINISH La transición entre estas diferentes fases, la dirige el bloque Tx Controller. Tx Controller habilita, según la fase de trabajo en que se encuentre, uno (nunca dos a la vez) de los diferentes bloques que podemos ver en la gura 4.10.

Esta aproximación modular de dividir el transmisor en varios submódulos con una función muy concreta, permite mayor exibilidad a la hora de modicar el protocolo y mayor robustez a la hora de identicar y depurar errores. El enfoque consiste en establecer una serie líneas de hand shake entre el Tx controller y los diferentes bloques de transmisión. Estas líneas permiten a Tx Controller habilitar cada módulo, y además permiten que cada módulo le comunique a Tx Controller si ha terminado su operación o si todavía la está ejecutando. Finalmente mediante un multiplexor se selecciona cual de los bloques transmisores se conecta con el puerto de salida de

INTERFAZ DE RED AER-RT

Figura 4.10: Diagrama de bloque AER TX

44

INTERFAZ DE RED AER-RT

45

Figura 4.11: Cronograma AER TX

datos que ataca el IP Core Aurora. En el cronograma de la gura 4.11 se puede apreciar como se habilitan los diferentes bloques de transmisión. Y como a la salida se multiplexa en cada caso la salida del bloque que interesa. Además podemos observar la proporción de tiempo que se emplea en cada etapa de transmisión. En este caso se está simulando un anillo con dos nodos, y la transmisión de un único paquete de datos.

4.4.3.

Tx Controller

Este bloque es el cerebro del transmisor, se encarga de dirigir su funcionamiento habilitando los diferentes bloques transmisores que hay en el sistema. En función de una serie de señales de control decide que bloque toca activar en cada momento y durante cuanto tiempo. En la gura 4.12 se puede observar la máquina de estados del bloque Tx Controller. Como se aprecia cada etapa de la transmisión se identica fácilmente: TX_IDLE. Estado de reposo. Se envían paquetes de tipo IDLE TX_SYNC. Envío paquete de sincronización

INTERFAZ DE RED AER-RT

46

Figura 4.12: Diagrama de estados Tx Controller

TX_BP_1. Bypass de paquetes de sincronización TX_START. Envío de paquete START TX_DATA. Envío de paquetes de datos, previa lectura de INPUT FIFO TX_FINISH. Envío paquete de FINISH TX_BP_2. Bypass paquetes de datos de otros chips TX_BP_XT. Estado extra de bypass, necesario por si queda algún paquete en la FIFO bypass cuando se recibe la señal AER_done TX_IDLE_2. Estado de reposo. Es necesario esperar que eo_exec baje a cero antes de ir al estado TX_IDLE. Se envían paquetes de tipo IDLE Cabe destacar que llegar a este diseño de el controlador no fue inmediato. La primera aproximación (en una etapa muy temprana) fue implementar todo el protocolo en una sola máquina de estados, tal como se aprecia en la gura 4.13. Pero enseguida fue evidente que su complejidad no era manejable y se optó por la solución modular que hemos visto. Utilizando un enfoque modular la máquina de estados del Tx controller es bastante intuitiva y por lo

INTERFAZ DE RED AER-RT

47

Figura 4.13: Primera versión Maquina de estados de Tx Controller (totalmente descartada)

tanto fácil de depurar y de ampliar si fuera necesario.

De hecho durante el diseño de el sistema hemos tenido que efectuar algún cambio o ampliación del protocolo. Haber seguido este enfoque modular desde primeras etapas en el diseño ha posibilitado la facilidad y rapidez con que estas modicaciones han sido incluidas. Por ejemplo en un primer momento el protocolo no utilizaba paquetes de START ni de IDLE. Con un enfoque no modular la inclusión de este tipo de paquetes en el protocolo supone el rediseño de toda la máquina de estados. Con un enfoque modular el cambio consiste en crear un bloque que se encargué de enviar este tipo de paquetes y hacer pequeños cambios en la máquina de estados de Tx Controller.

Por último señalar que es muy útil para la depuración del sistema, al probarlo en la placa, tener una salida con el estado de la máquina de estados de Tx Controller. De esta forma podemos saber en que fase de transmisión se encuentra el sistema en cualquier momento, ayudando así a depurar errores.

4.4.4.

Tx Sync

El bloque Tx Sync se encarga de enviar un paquete de sincronismo y de generar un acknowledge para el bloque Tx Controller cuando este paquete se ha enviado con éxito. La señal de acknowledge es necesaria porque puede suceder que en el momento que Tx controller habilite el bloque sync el enlace Aurora no esté listo (se encuentre en fase de compensación de reloj por ejemplo). De esta manera Tx controller espera hasta que Tx Sync le conteste que el paquete se ha enviado con éxito.

INTERFAZ DE RED AER-RT

48

Figura 4.14: Diagrama de estados Tx Sync

Como se aprecia en el diagrama de estados de la gura 4.14, el envío del paquete de sincronismo se produce cuando se recibe la señal de habilitación y además el canal de transmisión está listo (señal ready_tx). Después del envío se genera la señal sy_done para comunicarle a Tx Controller que se ha realizado la transmisión.

4.4.5.

Tx Bypass

Este bloque se encarga de: 1. Leer paquetes AER-RT de la FIFO Bypass 2. Transmitir los paquetes leídos 3. Detener la transmisión si se está realizando la compensación de clock en el enlace Aurora 4. Reanudar la transmisión cuando la compensación de clock ha sido completada Este bloque es el que implementa la estructura pipeline del anillo por lo tanto interesa que los datos se lean y se envíen en ráfaga (Burst). Esto se consigue realizando una primera lectura de la FIFO bypass, y a continuación leyendo y enviando a la vez. Estados BP_READ y BP_READ_WRITE en el diagrama de estados de la gura 4.15. Si nos jamos en este diagrama veremos el estado BP_PAUSE. A este estado viaja el bloque Tx Bypass cuando se habilita la señal que indica que hay una compensación de clock en el enlace Aurora.

INTERFAZ DE RED AER-RT

49

Figura 4.15: Diagrama de estados Tx Bypass

Cuando se activa la compensación de clock, la señal RDY se pone a cero para indicar que no se pueden transmitir datos a partir de ese momento hasta que se vuelva a poner a uno.

4.4.6.

Tx Start

De manera similar a Tx Sync el envío de paquetes de control de tipo Start se realiza siguiendo un mecanismo de Handshaking con Tx Controller. Diagrama de estados en gura 4.16.

4.4.7.

Tx Data

De manera similar a Tx Bypass, Tx Data se encarga de leer los datos de Input FIFO y de enviarlos hacia el bus AER-RT. Hay 2 diferencias fundamentales con Tx Bypass. 1. Lo que se lee de la FIFO son datos crudos no paquetes AER-RT. Por lo tanto a los datos leídos hay que añadirle la cabecera AER-RT antes de enviarlos a través del anillo.

INTERFAZ DE RED AER-RT

50

Figura 4.16: Diagrama de estados Tx Start

2. Sabemos según el protocolo establecido en la comunicación con el sistema multiprocesador, que al comenzar la fase de distribución de spikes todos los datos ha transmitir ya han sido escritos en la FIFO de entrada. Por lo tanto al terminar de leer la FIFO de entrada y de transmitir los paquetes de datos sabemos que no pueden haber nuevos datos en Input FIFO hasta un nuevo ciclo AER-RT. Diagrama de estados en gura 4.17.

4.4.8.

Tx Finish

Idem a Tx Start y Tx Sync. Diagrama de estados en gura 4.18.

4.4.9.

Tx Idle

Idem a Tx Start, Tx Sync y Tx Finish, con la única diferencia que la pérdida de alguno de los paquetes IDLE no es crítica. Por lo tanto no es necesario realizar handshake con Tx controller para asegurar que no se pierde ninguno de los paquetes IDLE generados por el bloque Tx Idle

4.4.10.

Modo Debug

Para facilitar la depuración del sistema se incluye en AER TX la posibilidad de habilitar los diferentes bloques de transmisión desde fuera del chip. Esto se consigue habilitando el modo Debug mediante un pulsador externo. Una vez el sistema está en modo Debug, podremos seleccionar mediante tres interruptores cual de los bloques de transmisión queremos activar. En la tabla 4.2 tenemos los códigos necesarios para activar cada uno de los bloques

INTERFAZ DE RED AER-RT

Figura 4.17: Diagrama de estados Tx Data

Figura 4.18: Diagrama de estados Tx Finish

51

INTERFAZ DE RED AER-RT

52

Switch

Modo

000

F_gen/F_check

001

Bypass

010

Sync

011

START

100

Data

101

Finish

110

Idle

Cuadro 4.2: Diferentes códigos para el modo Debug

de transmisión. El modo Debug ha facilitado la depuración Hardware del sistema permitiendo identicar qué tipos de paquetes o que fase de funcionamiento es la que produce algún error. Es una forma de aislar errores muy ecaz en un sistema tan complejo. El código 000 del modo Debug es una conguración extra que sólo se utiliza para depuración. Permite que en el chip seleccionado se generen datos pseudo-aleatorios. En AER RX a su vez hay un bloque, que igualmente sólo se usa en depuración, que comprueba si se ha perdido alguno de los datos pseudo-aleatorios. De esta forma podemos comprobar la calidad del enlace. Por ejemplo una conguración muy útil es poner uno de los chips en Modo 000 y los demás en modo Bypass. De esta forma podemos comprobar la calidad del anillo monitorizando si se pierde algún paquete. De hecho hay múltiples posibilidades de depuración combinando anillos con diferente número de nodos y con diferentes códigos de depuración en cada uno. Este modo de funcionamiento se añadió bastante pronto en el diseño al comprobar empíricamente que en el enlace se producían errores. Eran errores de tipo Software. Estos errores indican pérdida de alineamiento, paridad, etc. y es difícil de identicar la causa que los produce ya que en simulación no aparecen.

4.5. AER Rx 4.5.1.

Conexión con otros bloques

El bloque AER RX conecta con los siguientes bloques: Aurora. Recibe datos provenientes del enlace Aurora Bypass FIFO. Interfaz de escritura. AER RX escribe en bypass FIFO

Figura 4.19: Puertos AER_RX

los datos que necesitan ser retransmitidos AER TX. En AER RX se generan las señales AER_ON y AER_done que se envían hacia AER_TX AER Cong. De este bloque se obtienen los parámetros de conguración y las entradas de habilitación del modo Debug. Los principales parámetros de conguración en cada chip son: chip-id, Ring_size y Modo_debug AER Error. Este bloque se encarga de comprobar que no se han perdido datos durante la distribución de spikes. Comprueba que todos los paquetes de datos que genera un determinado chip llegan de nuevo al chip a través del anillo. No se garantiza el contenido de los paquetes de datos Contadores de paquetes AER-RT. Es muy útil tener la posibilidad de monitorizar los tipos de paquetes que llegan al receptor. La manera más eciente de realizar esta monitorización es mediante contadores de paquetes.

4.5.2.

Diagrama de bloques

El bloque AER RX se encarga de: 1. Detectar cuando naliza la fase de sincronización y empieza la fase de distribución de spikes. Lo hace contabilizando paquetes de sincronización y lo indica activando la señal interna de control AER_on

53

Figura 4.20: Diagrama de bloque AER RX

54

INTERFAZ DE RED AER-RT

55

2. Guardar el chip-id de cada ráfaga de datos que recibe. Lo hace guardando el chip-id de los paquetes de control START 3. Detectar el nal de la fase de distribución. Lo hace detectando el último paquete de control de FINISH, y lo indica activando la señal interna de control AER_done 4. Contabilizar e identicar los paquetes que se reciben. Lo hace mediante el uso de contadores 5. Filtrar los paquetes que se tienen que retransmitir. Lo hace mediante el bloque Filtro Bypass 6. Filtrar y desencapsular los paquetes de datos que se envían al sistema multiprocesador. Lo hace mediante el bloque Filtro AER RX Para realizar todas estas funciones nos valemos de señales de detección de diferentes tipos de paquetes. Es decir, tenemos una señal valid que nos indica que se ha recibido un paquete; Y además tenemos las señales de detección de tipo de paquete, que se activarán según el tipo de paquete recibido, Y señales de detección de paquete propio que se activarán si recibimos un paquete con nuestro chip-id. Utilizando estas señales de detección construimos una serie de bloques que realizarán las funciones antes descritas: 1. Bloque generador de AER_on 2. Chip-id extractor 3. Bloque generador de AER_done 4. Contadores 5. Filtro Bypass 6. Filtro AER RX En el cronograma de la gura 4.21 podemos ver un ciclo AER-RT para una red con 2 nodos y la transmisión de un spike por parte de cada nodo. En este cronograma los puntos 1 y 2 (en rojo) señalan el inicio y el nal de la fase de distribución respectivamente. 1. se genera AER_on al recibir los paquetes de sincronismo. En este caso se reciben 4 paquetes de sincronismo, dos por cada chip 2. se genera AER_done al detectar el último paquete de nish También se puede observar como se detectan los paquetes de start, nish y data de cada chip. Y como los datos del propio chip se distinguen activando la señal own_data_detected.

INTERFAZ DE RED AER-RT

56

Figura 4.21: Cronograma AER RX

4.5.3.

Detector de paquetes

Según la cabecera que contenga el paquete recibido activaremos la señal de tipo de paquete recibido que corresponda. Tenemos las siguientes señales que indican que el paquete recibido es de un tipo o otro: detect_sync. Indica que se ha recibido un paquete de sincronismo. Se utiliza en la generación de AER_on detect_start. Indica que se ha recibido un paquete de start. Se utiliza para detectar paquetes de datos propios. En concreto para guardar el chip-id asociado a una determinada ráfaga de datos detect_data. Indica que el paquete recibido es de datos. Se utiliza en el ltro de salida. También se utiliza para detectar datos propios. detect_nish. Indica que se ha recibido un paquete de nish. Se utiliza en la generación de AER_done detect_own_ctrl. Indica que el paquete de control recibido es propio. Se utiliza en el Filtro Bypass y para detectar paquetes de datos propios detect_own_data. Indica que el paquete de datos recibido es propio. Se utiliza en el Filtro Bypass En el caso de detectar si el paquete de datos recibido es propio (señal detect_own_data), es decir ha sido generado por el propio chip que lo está recibiendo, utilizamos una máquina de estados (ver gura 4.22). En el momento de recibir un paquete de tipo START, y además el campo chip-id de ese paquete corresponde con el chip-id del chip receptor, sabemos que los datos que recibiremos a continuación serán datos propios.

INTERFAZ DE RED AER-RT

57

Figura 4.22: Diagrama de estados detector de paquetes de datos propios

4.5.4.

Contadores de paquetes

Tenemos contadores para llevar un inventario de los diferentes tipos de paquetes que se recibe en el receptor. Contador de paquetes de sincronismo (cont_sync). Se utiliza en la generación de la señal de comienzo de distribución de spikes AER_on Contador de paquetes de start (cont_start). Contador de paquetes de datos (cont_data). Contador de paquetes de nish (cont_nish). Se utiliza en la generación de la señal de nal de protocolo AER_done Contador de paquetes de control propios (cont_own_ctrl). Contador de paquetes de datos propios (cont_own_data). Se utiliza en el control de errores, al comparar este contador con el contador de paquetes transmitidos, que se encuentra en AER_TX

4.5.5.

Generación AER ON

Lógica encargada de detectar y señalizar mediante la señal AER_on que la fase de sincronización se ha completado. Por lo tanto la distribución de spikes en AER_TX comienza cuando recibe AER_on a nivel alto. Como podemos apreciar en el diagrama de estados de la gura 4.23, AER_on

INTERFAZ DE RED AER-RT

58

Figura 4.23: Diagrama de estados generación de AER ON

se activa cuando se recibe un paquete de sincronismo y además el número de paquetes de sincronismo recibidos es mayor que el número de nodos en la red menos 1. Como en el diseño nal cada chip envía dos paquetes de sincronismo comparamos que el contador sea mayor que 2*N -1. Para que el contador esté actualizado en el momento de la comprobación, la señal de detección de SYNC se retrasa 2 ciclos de reloj mediante registros.

4.5.6.

Generación AER Done

Bloque encargado de generar la señal de nal de protocolo AER_done. AER done se genera cuando se detecta un paquete de tipo nish y además el contador de paquetes nish es mayor que el tamaño del anillo (Ring_SIZE) menos uno. Para que el contador esté actualizado en el momento de la comprobación, la señal de detección de FINISH se retrasa 2 ciclos de reloj mediante registros.

4.5.7.

Filtro Bypass (o escritura en FIFO de todos los paquetes a retransmitir)

Este bloque se encarga de escribir en la FIFO Bypass FIFO los paquetes, tanto de datos como de control, que hay que retransmitir. Hay que diferenciar qué paquetes hay que retransmitir y qué paquetes mueren en este punto. De ésto se encarga el ltro. Por norma general todos los paquetes propios, tanto de datos como de control mueren en este punto y por lo tanto no se retransmiten. La excepción son los paquetes de tipo IDLE que nunca

INTERFAZ DE RED AER-RT

59

se retransmiten, sean propios o no. Por lo tanto este bloque escribe los paquetes recibidos en la FIFO de bypass, siempre que no sean paquetes de tipo own_data, own_ctrl o idle.

4.5.8.

Interfaz de salida AER_RX (o desencapsulación de los paquetes de datos)

Este bloque se encarga de generar la salida que conectará con el sistema multiprocesador. Por lo tanto debemos enviar cada spike de datos con su correspondiente chip-id. Pasos: 1. Guardar chip-id correspondiente a cada ráfaga de datos recibida 2. Desencapsular los datos 3. Generar las señales de datos y habilitación que viajan hacia el sistema multiprocesador Para obtener el chip-id de cada ráfaga de datos utilizamos el bloque chipid_extractor. Este bloque se encarga de actualizar el registro que contiene el chip-id cada vez que se recibe un paquete de tipo start. Pra validar los datos recibidos ponemos en el bus de datos de salida los datos y el chip-id y activamos la señal de validación del interfaz AER de recepción. El bus de datos de recepción es un bus de 18 bits (11 bits de datos + 7 bits de chip-id)

4.6. Bypass FIFO Este bloque se encarga de almacenar los datos que se han de retransmitir. AER RX escribe los paquetes recibidos que se han de retransmitir en su puerto de escritura. AER_TX, por su parte, se encarga de su lectura. La inclusión de esta FIFO es fundamental porque no siempre que AER RX pone un paquete para retransmitir, AER-TX está listo para hacerlo. Por lo tanto tiene que existir la posibilidad de que los datos se mantengan durante un cierto tiempo en la FIFO. La elección del tamaño de la FIFO es muy importante. No debemos excedernos en su tamaño ya que desperdiciaríamos recursos, pero tampoco quedarnos cortos ya que podríamos perder datos si la FIFO se llena (overow). Por lo tanto hay que llegar a un compromiso entre área y seguridad de no perder datos. Elegimos una profundidad de 1024 palabras.

INTERFAZ DE RED AER-RT

60

Figura 4.24: Bypass FIFO Xilinx IP Core

Utilizamos el IP Core de Xilinx FIFO Generator para implementar la FIFO Bypass FIFO (en la gura 4.24 se puede ver la conguración del IP Core).

4.7. AER Cong Bloque dónde se conguran los diferentes parámetros del sistema: 1. chip-id. 2. Ring_size 3. Modo Debug 4. Código Debug Los diferentes parámetros del sistema se pueden congurar externamente. Mediante el interfaz ethernet que utiliza SNAVA podemos congurar los diferentes parámetros de conguración desde una aplicación en el PC. El procedimiento consiste en mapear en la memoria de el interfaz ethernet los registros de conguración. Alternativamente a la hora de depurar el funcionamiento del sistema AER_RT podemos congurar los diferentes valores de conguración mediante interruptores externos. Ahorrándonos así la necesidad de incluir el

INTERFAZ DE RED AER-RT

61

interfaz Ethernet en el diseño en la etapa de depuración. Tener el bloque que se encarga de guardar los registros de conguración aislado del sistema principal, permite exibilidad en cuanto al método que se utilizará para actualizar estos registros. De esta forma la decisión de cómo se conguren los registros no interere en el funcionamiento del sistema global. Además para facilitar la simulación, en el código VHDL del diseño se ha puesto la variable genérica ONLY_SIM, que en caso de valer '1' indica que los parámetros de conguración se obtienen directamente por Software. De esta manera se simplica la escritura de registros de conguración en simulación, permitiendo ahorrar tiempo y centrar esfuerzos en depurar el funcionamiento del protocolo.

4.8. AER Error Este bloque se encarga de comprobar si se ha perdido algún paquete de datos en la fase de distribución. Para ello nos valemos de una de las características del sistema AER-RT: Todos los datos generados por un determinado chip viajan por el anillo hasta que regresan a ese mismo chip. En el momento de regresar es cuando mueren y no continúan desplazándose por el anillo en una nueva vuelta. Esta característica permite que cada chip pueda comprobar si alguno de los paquetes que él genero se ha perdido durante su transmisión a través del anillo. Si uno de los chips detecta pérdida de paquetes se lo indicará al sistema multiprocesador mediante un pulso en el puerto de salida AER_error. Además hay un contador de salida de 8 bits que va contabilizando los paquetes perdidos en cada ciclo. El mecanismo para detectar una pérdida de paquete es muy sencillo. En Transmisión (AER TX) tenemos un contador que contabiliza todos los paquetes de datos generados por ese determinado chip. A su vez, en recepción (AER_RX) tenemos un contador de paquetes de datos propios recibidos. Al nalizar un ciclo AER-RT se comparan estos dos contadores si su valor es diferente se genera un pulso en la señal AER_error, y además se resetean los dos contadores. Este sistema permite saber si se ha perdido algún paquete, pero no asegura la integridad de los datos contenidos en cada paquete. La integridad de los datos se podría controlar añadiendo el checksum de los paquetes de datos en transmisión y comprobándolo en recepción.

INTERFAZ DE RED AER-RT

62

Capítulo 5

Resultados 5.1. Simulación con retardos (o Timing Simulation) Para realizar la simulación con retardos del diseño se utiliza el chero con extensión .sdf . Este chero se obtiene al realizar el Place and route con las herramientas de síntesis de Xilinx. En este chero se indica la posición física nal que ocupará la lógica en la FPGA. Por lo tanto incluye información sobre retardos que es muy útil a la hora de realizar una simulación más realista Para mantener la jerarquía del diseño al realizar una simulación con retardos es imprescindible incluir el atributo keep hierarchy en el código VHDL de cada modulo VHDL que se quiera vericar en simulación. De esta forma las señales resultantes para simulación mantienen una jerarquía, lo que facilita la localización de las señales a depurar. En caso contrario en un diseño grande es sumamente engorroso manejar todas la señales sin estructura jerárquica.

5.2. Medidas de latencia para diferente número de nodos y diferente número de spikes En este apartado se obtiene la latencia de nuestro sistema. La latencia equivale al tiempo que emplea el protocolo AER-RT en realizar la fase de distribución de spikes. La latencia se divide en 1) Fase de sincronización y 2) Fase de distribución. Para obtener la latencia del sistema se han realizado múltiples medidas.

5.2.1.

Medidas anillo un nodo

En primer lugar realizamos medidas de latencia en un anillo con un sólo nodo. El número de spikes que genera el sistema MP lo variamos de 0 hasta

63

INTERFAZ DE RED AER-RT

64

Spikes/chip

Fase Sinc. (en ciclos de reloj)

Fase Distr. (en ciclos de reloj)

0

43

45

1

43

49

5

43

53

10

43

58

Cuadro 5.1: Medidas anillo con un nodo

Figura 5.1: Latencia en anillo de un nodo transmitiendo un único spike

10 spikes. El resultado de estas medidas lo tenemos en la tabla 5.1. Hemos normalizado las medidas para mostrarlas en función de ciclos de reloj y no de tiempo absoluto. Las medidas absolutas dependen de la frecuencia de reloj que se utilice en el sistema AER-RT y, como sabemos, ésta es congurable. Las medidas se obtienen a partir de la simulación del sistema, en la gura 5.1 y 5.2 podemos apreciar el cronograma de un ciclo AER-RT al transmitir uno y 10 spikes respectivamente.

A partir de estas medidas generalizamos la latencia para un anillo de un nodo mediante las ecuaciones 5.1 y 5.2. Donde s es el número de spikes que se transmiten en cada nodo o chip.

Tn=1 [ciclos] [s = 0] = 43 + 45

(5.1)

Tn=1 [ciclos] [s > 0] = 43 + 49 + (s − 1)

(5.2)

INTERFAZ DE RED AER-RT

65

Figura 5.2: Latencia en anillo de un nodo transmitiendo 10 spikes Spikes/chip

Fase Sinc. (en ciclos de reloj)

Fase Distr. (en ciclos de reloj)

0

83

84

1

83

88

5

83

92

10

83

97

Cuadro 5.2: Medidas anillo con dos nodos

5.2.2.

Medidas anillo dos nodos

De manera análoga a la red con un nodo realizamos medidas en una red con dos nodos, donde el número de spikes que transmite cada nodo o chip puede variar. En la tabla 5.2 tenemos medidas de latencia normalizada para diferente número de spikes por nodo. En las guras 5.3 y 5.4 tenemos el detalle de las medidas cuando se realiza transmisión de 1 y 10 spikes en cada chip respectivamente. A partir de estas medidas obtenemos la expresión de la latencia en un anillo de dos nodos (ecuación 5.3 y 5.4). Donde s es el número de spikes transmitidas por nodo.

Tn=2 [ciclos] [s = 0] = 83 + 84

(5.3)

Tn=2 [ciclos] [s > 0] = 83 + 88 + (s − 1)

(5.4)

INTERFAZ DE RED AER-RT

66

Figura 5.3: Latencia en anillo con dos nodos y transmitiendo un único spike

Figura 5.4: Latencia en anillo con dos nodos y transmitiendo 10 spikes

INTERFAZ DE RED AER-RT

67

Spikes/chip

Fase Sinc. (en ciclos de reloj)

Fase Distr. (en ciclos de reloj)

0

120

121

1

120

125

5

120

129

10

120

134

Cuadro 5.3: Medidas anillo con dos nodos

Figura 5.5: Latencia en anillo de tres nodos y transmitiendo 1 spike

5.2.3.

Medidas anillo 3 nodos

El resultado de las medidas para un anillo con tres nodos lo encontramos en la tabla 5.3. Y el detalle de las medidas para transmisión de 1 y 10 spikes por nodo lo encontramos en las guras 5.5 y 5.6. A partir de estas medidas obtenemos en la latencia en un anillo de 3 nodos (ecuaciones 5.5 y 5.6). Donde s es el número de spikes.

Tn=3 [ciclos] [s = 0] = 120 + 121

(5.5)

Tn=3 [ciclos] [s > 0] = 120 + 125 + (s − 1)

(5.6)

5.3. Latencia del sistema AER-RT A partir de las medidas anteriores obtenemos la ecuación que dene la latencia para un sistema AER-RT con N nodos o chips. La expresión que

INTERFAZ DE RED AER-RT

68

Figura 5.6: Latencia en anillo con tres nodos y transmitiendo 10 spikes

dene esta latencia con unidades normalizadas a ciclos de reloj la encontramos en la ecuación 5.10. Donde s es el número de spikes transmitidas por nodo, y N es el número de nodos en el sistema. La expresión es aproximada (símbolo

∼ =)

porque el resultado puede variar algún ciclo arriba o abajo.

Ésto es debido a 2 motivos. 1) si s=0 la expresión cambia ligeramente como hemos visto; y 2) La latencia puede variar algunos ciclos en cada nueva fase AER-RT debido a el efecto de la compensación de reloj que se produce en el enlace Aurora.

TAER−RT [ciclos] = TSY N C + TDIST RIB

(5.7)

TSY N C [ciclos] ∼ = 40 ∗ N

(5.8)

TDIST RIB [ciclos] ∼ = 40 ∗ N + (s − 1)

(5.9)

TAER−RT [ciclos] ∼ = 40 ∗ N + 40 ∗ N + (s − 1)

(5.10)

Podemos observar que la latencia es directamente proporcional al número de nodos del sistema, por lo que se demuestra que el sistema es totalmente escalable: La pérdida de prestaciones al aumentar el número de chips del sistema es lineal.

INTERFAZ DE RED AER-RT

69

5.4. Área utilizada A continuación se presenta un resumen de la utilización de recursos lógicos al implementar el sistema AER-RT en una FPGA Kintex-7 de Xilinx

Device Utilization Summary: Slice Logic Utilization: Number of Slice Registers: 735 out of 407,600 Number used as Flip Flops: 735 Number used as Latches: 0 Number used as Latch-thrus: 0 Number used as AND/OR logics: 0 Number of Slice LUTs: 612 out of 203,800 Number used as logic: 507 out of 203,800 Number using O6 output only: 250 Number using O5 output only: 68 Number using O5 and O6: 189 Number used as ROM: 0 Number used as Memory: 54 out of 64,000 Number used as Dual Port RAM: 0 Number used as Single Port RAM: 0 Number used as Shift Register: 54 Number using O6 output only: 46 Number using O5 output only: 0 Number using O5 and O6: 8 Number used exclusively as route-thrus: 51 Number with same-slice register load: 46 Number with same-slice carry load: 5 Number with other load: 0

1%

1% 1%

1%

La utilización de recursos es muy baja lo que conrma la viabilidad de implementar el interfaz de red AER-RT junto con el sistema multiprocesador. Además el hecho de ocupar un mínimo de lógica permite más espacio para mapear más neuronas en el sistema MP.

5.5. Máxima frecuencia A continuación se presenta un informe sobre la máxima frecuencia de trabajo que admite el sistema AER-RT. Este informe lo genera la herramienta de síntesis y rutado de Xilinx que se utiliza para implementar el diseño. Y se basa en información de retardos en los caminos más críticos del sistema.

Timing Summary: --------------Speed Grade: -2

INTERFAZ DE RED AER-RT

70

Figura 5.7: Estimación de consumo AER-RT

Minimum Minimum Maximum Maximum

period: 2.704ns (Maximum Frequency: 369.790MHz) input arrival time before clock: 0.344ns output required time after clock: 1.023ns combinational path delay: 0.000ns

Se puede concluir a partir de estos resultados que el sistema permite trabajar a altas frecuencias (hasta 369 MHz). En la versión de AER-RT probada con SNAVA se trabaja a frecuencias de 125 MHz ya que es la máxima frecuencia a la que trabaja SNAVA. Si en un futuro SNAVA optimiza su arquitectura para trabajar a frecuencias más elevadas el interfaz de red AERRT podrá adaptarse y trabajar a esa nueva frecuencia de trabajo.

5.6. Consumo En la gura 5.7 se muestra el consumo de potencia medio del interfaz de red AER-RT. Vemos que el consumo total es de 524 mW. Destacar que prácticamente un 50 % (247 mW) del consumo se produce en el transceiver (GTXE2).

Capítulo 6

Sistema completo AER-RT + emulador de SNAVA Para acabar de vericar el funcionamiento del interfaz de red AER-RT se construye una red SNN con tres chips. El sistema MP que se utiliza para esta prueba es un bloque que emula el comportamiento de SNAVA. Para tener una vericación realista el emulador de SNAVA este bloque trabaja con un reloj físicamente diferente al que utiliza AER-RT, de esta manera tenemos dos dominios de reloj. En las guras 6.1 y 6.2 se presentan dos fotos del sistema físico con el que se han realizado las pruebas. Cada una de las placas de evaluación que se ve en las fotos es uno de los nodos del sistema AER-RT. En este caso tenemos tres chips o nodos. El chip superior tiene el chip-id 0, el del medio el chip-id 1 y el inferior el chip-id 2. El esquema de conexión es similar al que se presentó en la gura 3.2 de la sección 3. Los puertos de transmisión y recepción son diferenciales, de esta forma se consigue una señal más robusta y resistente a interferencias. En la gura 6.3 tenemos una instantánea del analizador lógico virtual de Xilinx conectado al chip con chip-id 0. En ella vemos la evolución de las diferentes señales internas del sistema AER-RT. De todas ellas nos jaremos en las que están resaltadas en rojo. A continuación describimos la función de estas señales en términos generales: AER_tx_wr_i es la señal de habilitación de escritura del interfaz AER TX. Indica escritura de spike en FIFO de entrada para su posterior transmisión AER_tx_data_i es el bus de datos del interfaz AER TX AER_eo_exec es la señal de Handshaking que indica n de la fase de ejecución

71

INTERFAZ DE RED AER-RT

72

Figura 6.1: Sistema AER-RT + emulador de SNAVA implementado en tres Kintex-7

INTERFAZ DE RED AER-RT

73

Figura 6.2: Detalle conexiones en sistema AER-RT + emulador de SNAVA implementado en tres Kintex-7

INTERFAZ DE RED AER-RT

74

aer_on_i es una señal interna del sistema AER-RT que indica n de la fase de distribución e inicio de la fase de distribución aer_done_cs es una señal interna del sistema AER-RT que indica n de la fase de distribución y n de un ciclo AER-RT aer_rx_valid_i es la señal de validación del interfaz AER RX. Indica dato válido en el bus de recepción aer_rx_data_1 son los bits de más peso del bus de recepción. En el viaja el chip-id aer_rx_data_2 son los bits de menos peso del bus de recepción. En el viajan los spikes Para facilitar la comprensión hemos numerado (en rojo) los diferentes acontecimientos que se pueden observar en la captura de pantalla de la gura 6.3: 1. El emulador de SNAVA escribe en la FIFO de entrada los spikes a distribuir, en este caso son 7 spikes 2. El emulador de SNAVA, una vez escritos los spikes, activa la señal de AER_eo_exec. En este punto comienza un ciclo AER-RT que como sabemos consta de fase de sincronización y fase de distribución 3. Se activa la señal interna AER_on, lo que indica que la fase de sincronización se ha completado. Empieza por tanto la fase de distribución 4. Durante la fase de distribución el chip 0 va recibiendo los spikes que han generado todos los chips que forman el anillo, incluido él mismo. Vemos un tren de tres pulsos, estos pulsos habilitan los spikes recibidos de cada chip. En primer lugar nos llegan los 7 spikes del chip 1, a continuación los 7 spikes del chip 2 y nalmente los 7 spikes generados por el chip 0 (es decir nosotros mismos) 5. Finalmente cuando se reciben todos los paquetes FINISH de todos los chips se activa la señal interna AER_done que indica que el ciclo AER-RT ha nalizado

INTERFAZ DE RED AER-RT

75

Figura 6.3: Detalle de señales en el chip 0 tomadas con el analizador lógico virtual de Xilinx

INTERFAZ DE RED AER-RT

76

Capítulo 7

Conclusiones A nivel personal ha sido un proyecto largo y complicado pero muy interesante. Me ha permitido trabajar con señales serie de alta velocidad en FPGA, que es un tema que está bastante de actualidad en la industria. A nivel de diseño digital me ha permitido adquirir soltura a la hora programar en VHDL. Además de profundizar en el manejo de herramientas avanzadas para la simulación y síntesis de circuitos digitales.

Una de las lecciones importantes a nivel de diseño, y que menciono en el capítulo de arquitectura, es la importancia de crear un diseño modular desde primeras etapas en el diseño. Este enfoque facilita la modicación y depuración del sistema enormemente.

A nivel más práctico de resultados el objetivo que nos propusimos al principio del proyecto se ha conseguido. Hemos creado un interfaz de red multi-chip eciente y escalable.

Tan eciente que el cuello de botella que introducía el interfaz de red previo ha desaparecido, ahora el interfaz de red puede trabajar a frecuencias iguales o incluso superiores que el sistema MP.

El interfaz diseñado permite que el sistema crezca en número de chips de manera fácil. Tan fácil como congurar dos parámetros en cada chip: chipid y Ring_size que indican la identicación de cada nodo en el anillo y el tamaño del anillo respectivamente. El sistema ha sido probado en un anillo de hasta 4 chips con éxito.

A continuación, como medida del nivel de escalabilidad que puede alcanzar el interfaz AER-RT, me gustaría demostrar la viabílidad de un sistema de hasta 4 millones de neuronas. El hecho de tener hasta 15 bits disponibles en los paquetes de datos nos permite una escalabilidad en número de neuro-

77

INTERFAZ DE RED AER-RT

78

nas por chip de hasta 32768. Con 7 bits para el chip-id podemos direccionar hasta 128 chips dentro del mismo sistema. Si hacemos cuentas esto supone la capacidad de implementar un sistema de hasta 4194304 neuronas. Calculamos la latencia de esta teórica red SNN con 4 Millones de neuronas y comprobamos que el requisito de no superar un tiempo de 0,5 ms se cumple ampliamente. La latencia es de 75,77 us, tan solo un 15 % de la máxima latencia permitida. En la ecuación 7.1 se muestran las operaciones realizadas. Como hacíamos en el capítulo de diseño suponemos que la frecuencia de generación de spikes es de 15 spikes cada 100 neuronas. Por lo tanto si cada chip tiene 32768 neuronas ésto hace un valor de 4915 spikes generados en cada chip (s en la ecuación). N hemos dicho que es 128 chips y la frecuencia la ponemos a 200 MHz que es una frecuencia razonable de trabajo.

T = [40 ∗ N + 40 ∗ N + (s − 1)] ∗

1 = 75, 77us f

(7.1)

s [spikes/chip] = 4915

f = 200M Hz N [chips] = 128 El otro objetivo que era ser adoptado por SNAVA como nuevo interfaz de red también se ha cumplido. El sistema se ha probado en un sistema de 2x2 neuronas en cada chip formando un anillo de hasta 4 chips con éxito. Como línea de trabajo futuro hay 2 mejoras que se podrían realizar en el interfaz AER-RT de manera no muy complicada y que se mencionan en este documento. 1. Dotar a el interfaz de red AER-RT de jerarquía. Una primera aproximación consistiría en diferenciar entre transmisión de spikes locales y transmisión de spikes globales. Por lo tanto estableceríamos una red de 2 niveles de jerarquía. El nivel global sería el anillo tal como está implementado actualmente. Y el nivel local consistiría en transmitir los spikes locales dentro del mismo chip, sin necesidad de distribuirlos a través del anillo. De esta manera se mejoraría la eciencia en función de la localidad de las neuronas en un determinado chip.

INTERFAZ DE RED AER-RT

79

2. Añadir una nueva prestación en el control de errores. Comprobar, no solo que no se pierdan paquetes de datos como se hace hasta ahora, sino también la integridad de los datos recibidos. La forma más sencilla de implementarlo sería añadiendo el checksum de los datos a los paquetes de datos que se transmiten. Una vez en recepción se compararía si el checsum calculado en recepción coincide con el de transmisión. En caso armativo podemos asegurar que todos los datos recibidos son correctos y en caso negativo sabemos que hay datos corruptos.

INTERFAZ DE RED AER-RT

80

Bibliografía [1] PERPLEXUS project, Contract no. 34632. Project reference TEC200806028/TEC [2] Javier Iglesias. Emergence of Oriented Circuits driven by Synaptic Pruning associated with Spike-Timing-Dependent Plasticity (STDP). Tesis de Doctorado, 2005 [3] Moreno, J.-M.; Fernández, D.; Kotynia, L., "Synchronous Digital Implementation of the AER Communication Scheme for Emulating LargeScale Spiking Neural Networks Models," Adaptive Hardware and Systems, 2009. AHS 2009. NASA/ESA Conference on , vol., no., pp.189,196, July 29 2009-Aug. 1 2009 doi: 10.1109/AHS.2009.14 [4] J. Madrenas, J. M. Moreno;  Strategies in SIMD Computing for Complex Neural Bioinspired Applications AHS; Proceedings of the 2009 NASA/ESA Conference on Adaptive Hardware and Systems, pp. 376381. Moscone Convention Center, San Francisco, California, USA, July 29  August 1, 2009.

http://www.xilinx. com/support/documentation/ip_documentation/aurora_8b10b_ protocol_spec_sp002.pdf

[5] Aurora

8B/10B

Protocol

Specication.

Link:

http: //www.xilinx.com/support/documentation/ip_documentation/ aurora_8b10b/v8_3/pg046-aurora-8b10b.pdf

[6] LogiCORE

IP

Aurora

8B/10B

v8.3

Product

Guide.

Link:

[7] High-Speed Serial I/O Made Simple A Designers' Guide, with FPGA

http:// www.xilinx.com/publications/archives/books/serialio.pdf Applications. Abhijit Athavale and Carl Christensen. Link:

[8] KC705

Evaluation

Board

for

the

Kintex-7

FPGA

User

Gui-

http://www.xilinx.com/support/documentation/boards_ and_kits/kc705/ug810_KC705_Eval_Bd.pdf de. Link:

[9] 7

Series

FPGAs

GTX/GTH

Transceivers

User

Guide.

Link:

http://www.xilinx.com/support/documentation/user_guides/ ug476_7Series_Transceivers.pdf

81

INTERFAZ DE RED AER-RT

82

[10] Frank Vahid. Digital Design with RTL Design, VHDL, and Verilog. Editorial Wiley, segunda edición 2011 [11] Steve Kilts. Advanced FPGA design : architecture, implementation, and optimization. Ed. Wiley, 2007 [12] J. Bhasker. A VHDL primer. Ed. Prentice Hall, 1999 [13] James D. McCabe. Network analysis, architecture, and design. Ed. MK/Morgan Kaufmann, segunda edición 2003

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.