1 / 23

Le temps de routage pour FPGA : importance, réduction par réplication

Séminaire COSI ‘ 01. Le temps de routage pour FPGA : importance, réduction par réplication. E. Fabiani Projet COSI. Plan . Contexte Expérimentations de placement structurel La réplication du routage Exemple pour Xilinx Virtex Conclusion. Contexte.

keisha
Download Presentation

Le temps de routage pour FPGA : importance, réduction par réplication

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

E N D

Presentation Transcript


  1. Séminaire COSI ‘ 01 Le temps de routage pour FPGA : importance, réduction par réplication E. Fabiani Projet COSI

  2. Plan • Contexte • Expérimentations de placement structurel • La réplication du routage • Exemple pour Xilinx Virtex • Conclusion E. Fabiani

  3. Contexte L’implémentation de réseaux réguliers sur circuits reconfigurables Méthode choisie : Placement structurel pour réduction du temps de placement routage et amélioration de la fréquence d ’horloge E. Fabiani

  4. Génération des formes description structurelle de processeurs sans placement Placement du réseau en serpentin bibliothèque d'opérateurs technologie du description structurelle Placement interne FPGA ciblé des processeurs avec placement Contexte FRAP : Fpga Regular Array Placer E. Fabiani

  5. Expérimentations Expérimentations sur circuits FPGAs Xilinx XC40250 et XCV800 • Réseaux réguliers: • convolution unidirectionnelle avec multiplieur constant (4, 8, 16 bits) • samba (comparaison de séquences ADN) • algorithme k-means pour images hyperspectrales • 2 types de FPGAs Xilinx : • XC40250 : famille 4000XV, 92x92 CLBs (16928 LUTs) • XCV800 : famille Virtex, 56x84 CLBs (18816 LUTs) • Mesures : placement/routage avec ou sans contraintes de placement • temps de placement • temps de routage • temps total • fréquence d ’horloge E. Fabiani

  6. Gains en temps de placement Gains en fréquence d’horloge Expérimentations E. Fabiani

  7. Gains en temps de routage Gains en temps de placement/routage Expérimentations E. Fabiani

  8. Gains en temps de placement/routage Gains en fréquence d’horloge Expérimentations Expérimentations avec contraintes de délai critique sur Virtex 800 E. Fabiani

  9. Amélioration de la fréquence d ’horloge mais diminution limitée du temps de placement/routage Pourquoi? • Soient Tp1 et Tr1 : temps de placement et routage sans contraintes • Tp2 et Tr2 : temps de placement et routage avec contraintes • gain de temps g = (Tp1+Tr1)/(Tp2+Tr2) • Si on suppose : Tp1 >>> Tp2 et Tr1<= Tr2 • alors g <= 1 + Tp1/Tr1 Quantifier le ratio Tp1/Tr1 Expérimentations Observations • Evolution des outils : le temps de placement/routage est devenu un argument de vente • Meilleur compromis des outils entre temps de placement/routage et fréquence • Exemple : avec contraintes de délai : + 50% pour la fréquence, • + 300% pour le temps de placement/routage • Temps de routage pas diminué systématiquement, voire plus long • FRAP : nombre maximal de processeurs, unidirectionnel : congestion ? • Autres raisons ? E. Fabiani

  10. conv4 conv8 conv16 samba kmean • L ’importance du temps de routage limite le gain de temps potentiel • cela semble s ’accentuer avec l ’évolution technologique Expérimentations Ratio temps de placement/ temps de routage • 2 solutions : • faire un placement tenant compte de la congestion • répliquer le routage quand c’est possible E. Fabiani

  11. ... ... • outils pour la réplication • architecture du FPGA • routage sans conflits Limitations : Réplication de routage Principe 1.Trouver un routage intra-processeur et le répliquer 2.Trouver un routage inter-processeurs et le répliquer E. Fabiani

  12. Réplication de routage Limitations : architecture du FPGA Architecture de routage L ’Architecture de routage doit être régulière = mêmes ressources de routage accessibles en tout point du FPGA E. Fabiani

  13. Réplication de routage Limitations : architecture du FPGA contre-exemple E. Fabiani

  14. Réplication de routage Limitations : architecture du FPGA Granularité des blocs logiques reconfigurables Perte de surface E. Fabiani

  15. Réplication de routage Limitations : conflits de routage • Il y a conflit si : • un routage sort du périmètre des BLs utilisés • cette ressource de routage est utilisée par le PE voisin • Solutions : • considérer le périmètre de routage comme périmètre du processeur • empêcher tout routage en dehors d ’un périmètre pré-défini (cf thèse R. Tessier) • autoriser le routage en dehors du périmètre, en contrôlant l ’absence de conflit E. Fabiani

  16. .vhd .edf placement/routage .xdl .ncd fpga_editor bitgen .bit JBits Exemple pour Virtex • Architecture : • routage OK sauf lignes transversales (long lines) • granularité : 1 BL = 2x2 (Lut + registre) • Conflits de routage : • pas de possibilité de contraindre le routage dans une zone • (contrairement au placement) • => prendre le périmètre de routage comme limite • Outil de réplication de routage : • pas de moyen technique direct • => pistes : • avec fpga_editor • avec XDL (Xilinx Design Language) • avec JBits E. Fabiani

  17. Un module (avec entrées/sorties) défini en VHDL .edf placement/routage .ncd fpga_editor module pré-placé et pré-routé (.nmc) .xdl Instanciation du module dans fichier VHDL script pour fpga_editor Extraction d'informations : nom des nets et blocs d'E/S périmètre du module fichier VHDL pour encapsuler le module nom et placement des ports d'E/S Exemple pour Virtex définition de modules pré-routés par fpga_editor E. Fabiani

  18. Description .ncd Description .nmc Exemple pour Virtex Exemple : conv16 sur Virtex • Elimination des nets d’E/S • Elimination des blocs d’E/S • Définition des ports externes • Définition du BL de référence Problème : PAR n ’arrive pas à router les modules dans certaines zones du FPGA E. Fabiani

  19. Exemple : inst "Xinby119p01<13>" "SLICE" , placed R81C6 CLB_R81C6.S0 , module "hset" "hset" "Xinby119p01<13>" , cfg "YUSED::0 XUSED::0 F:kcm01_pm/BU13:#LUT:D=((~A2*((~A1*A3)+A1))@A4) G:kcm01_pm/BU12:#LUT:D=((~A3*((~A1*A4)+A1))@A2) GYMUX::G FXMUX::F _MACRO:hset:-1 ; net "Ytrans<65><8>" , cfg "_MACRO::hset" , outpin "Ytrans<65><8>" XQ , inpin "Ytrans<66><8>" F2 , pip R12C39 S1_XQ -> OUT1 , pip R12C39 OUT1 -> W5 , pip R12C38 E5 == W5 , pip R12C37 E5 -> E_P5 , pip R12C37 E_P5 -> S1_F_B2 , Exemple pour Virtex XDL : Xilinx design langage Description d ’une configuration sous forme textuelle Méthode : sauvegarder le module au format XDL et construire un fichier XDL avec le routage répliqué Problème : passage de xdl a ncd avec routage : plus long que placement/routage ! E. Fabiani

  20. Exemple pour Virtex JBits Classes Java pour la lecture et l’écriture directe de bitstream Exemple : … private static final int[] INVERTER1 = Util.InvertIntArray(Expr.F_LUT(« ~F1 »)); … Bitstream.set(row,col, LUT.SLICE0_F, INVERTER1); Bitstream.set(row,col, S0Control.X.X, S0Contol.X.FOUT); … Bitstream.set(row,col, OUT4.OUT4, OUT4.S0_XQ); Bitstream.set(row,col, HexNorth2.HexNorth2, HexNorth2.OUT4); Bitstream.set(row,col, HexNorth2.OUTPUT, HexNorth2.ON); Bitstream.set(row+6,col, HexSouth2.OUTPUT, HexSouth2.OFF); Bitstream.set(row+6,col, BiHexToSingle.SINGLE_EAST12_TO_HEX_SOUTH2, BiHexToSingle.ON); Bitstream.set(row+6,col, S0F1.SF1, S0F1.SINGLE_EAST12); E. Fabiani

  21. Un module (avec entrées/sorties) défini en VHDL .edf placement/routage .ncd .ncd (modifié) .bit fpga_editor .xdl JBits corps du module script pour fpga_editor Extraction d'informations : nom des nets et blocs d'E/S interface du module périmètre du module Core JBits instanciable nom et placement des ports d'E/S Exemple pour Virtex Méthode : extraction de module placé/routé à partir du bistream E. Fabiani

  22. Exemple pour Virtex Routage inter-processeurs • 2 possibilités : • Méthode similaire au routage interne : • faire une description de 2 processeurs de routage identique, • isoler le routage inter-proceseurs et le sauvegarder sous forme JBits • Utiliser JRoute pour router les connexions entre 2 macros(processeurs) • et répliquer le routage trouvé E. Fabiani

  23. Conclusion • La phase de routage ne peut plus être négligée • La réplication de routage est techniquement faisable, résultats à expérimenter • Méthode pour extraire un module pré-placé et pré-routé de n ’importe quelle configuration (.ncd) • Notion de module pré-routé également utile pour : • bibliothèque de modules pré-routés pour réduire temps de routage et avoir estimation de performance plus précise. • reconfiguration partielle : insertion de modules pré-routés sans risque de conflit de routage • Perspectives : connexion aux outils de L. Lagadec, routeur confiné. E. Fabiani

More Related