La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #11 Performance.

Présentations similaires


Présentation au sujet: "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #11 Performance."— Transcription de la présentation:

1 INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #11 Performance de circuits numériques Partie 2: optimiser la performance

2 INF3500 : Conception et implémentation de systèmes numériques Implémentation des systèmes numériques Quatre considérations dimplémentation 2 Précision des calculs Puissance consommée Taille du système Taux de traitement Aujourdhui (notes, section 1.3)

3 INF3500 : Conception et implémentation de systèmes numériques Optimisation pour la surface ou le débit (8.6) – latence et débit – comment maximiser le débit – architectures à pipeline – minimiser la latence – minimiser la surface Exemple: conception dun filtre FIR, comparaison de trois designs Conception pour FPGA: (8.8) Documentation etc. (8.9 et 8.10) Plan pour aujourdhui 3

4 INF3500 : Conception et implémentation de systèmes numériques La « vitesse » dhorloge 4 (notes, section 8.6.1) Mieux vaut parler de fréquence ou de période dhorloge, de latence de calcul et de débit dinformation!

5 INF3500 : Conception et implémentation de systèmes numériques Latence et débit La latence de calcul est le temps nécessaire pour produire un résultat. Le débit dinformation est le nombre de résultats produits par unité de temps. 5 (notes, section 8.6.1) Exemple dune cafétéria avec 5 stations. Les délais de chaque station sont indiqués. Suppositions: un seul client dans la ligne à la fois chaque client passe par chaque station un client ne peut pas prendre son cabaret tant que le client précédent na pas fini à la caisse « Horloge » avec une période de 75 secondes. Latence de 1 cycle = 75 secondes pour servir un client. Débit = 3600 s/h ÷ 75 s/client = 48 clients par heure. cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s

6 INF3500 : Conception et implémentation de systèmes numériques Latence et débit Latence: – La latence est le temps entre le moment où une donnée est disponible et le moment où le résultat qui dépend de cette donnée est disponible à son tour. – Courte latence = meilleure performance. – La latence est souvent exprimée en nombre de cycles dhorloges. – Une fréquence dhorloge plus élevée correspond à une latence plus courte. Débit: – Le débit est le nombre de résultats par unité de temps ou par cycle dhorloge. – Grand débit = meilleure performance. – Si le débit est inférieur à un résultat par cycle, on donne plutôt le nombre de coups dhorloges nécessaires pour produire un résultat. – Quand on calcule le débit, on suppose quune quantité suffisante de données est disponible à lentrée du système pour le garder actif. – Une fréquence dhorloge plus élevée correspond à un débit plus grand. – Le parallélisme augmente le débit. (notes, section 8.6.1)

7 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit en augmentant la fréquence dhorloge (1) Réduire le délai sur le chemin critique (notes, section 8.6.2) cabarets 5 s boissons 10 s plat principal 25 s bar à salade 15 s caisse 12 s Cafétéria originale: période dhorloge 75 s, latence 1 cycle, débit 48 clients par heure Cafétéria modifiée: période dhorloge 67 s, latence 1 cycle, débit 53.7 clients par heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s

8 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit en augmentant la fréquence dhorloge (2) Insérer des registres de pipeline (notes, section 8.6.2) Avec pipeline naïf: cinq clients sont en ligne à la fois, un seul client par station. Période dhorloge 30 s, latence 5 cycles = 150 s, débit 120 clients par heure Avec pipeline ajusté: trois clients sont en ligne à la fois. Période dhorloge 30 s, latence 3 cycles = 90 s, débit 120 clients par heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Original: période dhorloge 75 s, latence 1 cycle, débit 48 clients par heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Attente 25 s Attente 20 s Attente 15 s Attente 15 s Attente 15 s

9 INF3500 : Conception et implémentation de systèmes numériques Questions En supposant une très longue file dattente qui ouvre à 12h00: – À quelle heure mangera le premier client, avec et sans pipeline? – À quelle heure mangera le 2 e client, avec et sans pipeline? – À quelle heure mangera le 3 e client, avec et sans pipeline? – À quelle heure mangera le 4 e client, avec et sans pipeline? 9 (notes, section 8.6.2) heurecabaret et boissonplatsalade et caissemanger 12:00:00 12:00:30 12:01:00 12:01:30 12:02:00 12:02:30 12:03:00 (Cas du pipeline ajusté)

10 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: Quelques observations sur le pipeline Le pipeline augmente le débit significativement: de 48 à 120 clients par heure. Pour le premier client, le pipeline nest pas intéressant, il perd 75 secondes dans le cas du pipeline naïf et 15 secondes dans le cas du pipeline ajusté. Pour le 3 e client, le pipeline est très intéressant: il pourra manger après 150 s (cinq coups dhorloge) au lieu de 225 s pour le cas sans pipeline. Le pipeline nest intéressant que sil y a suffisamment de clients pour le remplir. Pour plusieurs applications impliquant un flux de données, une latence supplémentaire est sans importance. – Dans le cas dun lecteur audio, le fait davoir quelques cycles de retard est sans effet. En supposant un taux de données de 44.1 KHz, une latence de 10 cycles dhorloge est inférieure à 250 μs. Ce retard est imperceptible pour un être humain qui vient de lancer la lecture dun fichier de musique. Pour certaines applications, une latence supplémentaire est à éviter. – Communications bidirectionnelles. – Transactions financières en bourse. 10 (notes, section 8.6.2)

11 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit en parallélisant les calculs Instancier plusieurs unités de traitement permet de traiter plusieurs données en parallèle et augmenter le débit. Exemple: pour un processeur vidéo, on peut décomposer une image en régions indépendantes et associer le traitement de chaque région à un processeur différent. 11 (notes, section 8.6.2) Période dhorloge 75 s, latence 1 cycle, 2 clients simultanés, débit 2 clients/cycle = 96 clients/heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s

12 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit avec pipeline et parallélisation des calculs 12 (notes, section 8.6.2) cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Période dhorloge 30 s, latence 3 cycles, 2 clients simultanés, débit 2 clients/cycle = 240 clients/heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Attente 15 s

13 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit avec pipeline et parallélisation des calculs et réduction du délai 13 (notes, section 8.6.2) cabarets 5 s boissons 10 s bar à salade 15 s Période dhorloge 27 s, latence 3 cycles, 2 clients simultanés, débit 2 clients/cycle = clients/heure cabarets 5 s boissons 10 s bar à salade 15 s plat principal 25 s caisse 12 s plat principal 25 s caisse 12 s Attente 2 s Attente 12 s

14 INF3500 : Conception et implémentation de systèmes numériques Augmenter le débit en parallélisant les calculs (cas FPGA extrême …) 14 (notes, section 8.6.2) cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Période dhorloge 30 s, latence 3 cycles, 20 clients simultanés, débit 20 clients/cycle = 2400 clients par heure cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s cabarets 5 s boissons 10 s plat principal 30 s bar à salade 15 s caisse 15 s Attente 15 s

15 INF3500 : Conception et implémentation de systèmes numériques Architecture à pipeline pour circuit numérique Lutilisation darchitectures à pipeline est une puissante technique pour augmenter la fréquence dhorloge dun système et son débit. Rappel - la période minimale de lhorloge est donnée par : Pour diminuer T min, il faut réduire la somme des termes. – t d, t su (délai de propagation et de préparation des bascules): Ces valeurs sont en général fixes. – t comb (délai de propagation de la logique combinatoire): Une architecture à pipeline sattaque aux délais de la logique combinatoire en décomposant le chemin critique. – t prop (délai de propagation des interconnexions): Il faut réduire la longueur des interconnexions en disposant judicieusement les composantes du sur le chemin critique. 15 (notes, section 8.6.3)

16 INF3500 : Conception et implémentation de systèmes numériques Architecture à pipeline pour circuit numérique 16 (notes, section 8.6.3) Supposons (t d, t su, t prop ) = (2 ns, 1 ns, 0 ns) T min = = 11 ns T min1 = = 7 ns T min2 = = 7 ns T min = 7 ns ** On ne peut pas réduire T min de 50%, le pipeline vient avec une pénalité, on ne peut pas diviser ni t d ni t su.

17 INF3500 : Conception et implémentation de systèmes numériques Le pipeline en pratique Le désavantage principal dune architecture avec pipeline est son coût élevé en matériel. – Quand on introduit un étage de pipeline il faut synchroniser tous les signaux de cet étage, même sils ne sont pas dans le chemin critique (exemple, dans la diapositive précédente, de la bascule C à la porte NON-OU). – Cependant, pour les FPGAs, la présence dune très grande quantité de bascules prédéfinies à lintérieur des blocs de logique programmable rend possible et efficace lutilisation darchitectures à pipeline. On ne peut enlever le délai t d ni le temps de préparation t su aux étages de pipeline. Il faut bien balancer les nouveaux chemins. La fréquence maximale dopération du circuit est limitée par le chemin le plus lent du circuit. (notes, section 8.6.3)

18 INF3500 : Conception et implémentation de systèmes numériques Le pipeline: stratégie Pour ajouter un étage de pipeline, on peut suivre la stratégie suivante: 1.Représenter le circuit avec les signaux qui vont de gauche à droite. 2.Si une boucle de rétroaction est présente, la décomposer en répétant le registre cible à la droite du registre source. 3.Identifier le chemin critique et placer un registre de façon à le couper en formant deux moitiés avec les délais les plus semblables possible. 4.Former une courbe verticale qui traverse le circuit et qui passe à travers du registre de pipeline ajouté. 5.Ajouter un registre de pipeline à chaque intersection de la courbe et dun signal horizontal. (notes, section 8.6.3)

19 INF3500 : Conception et implémentation de systèmes numériques Exercice de pipeline 19 (notes, section 8.6.3) Pipeliner le circuit. Donner le code VHDL avant et après le pipeline.

20 INF3500 : Conception et implémentation de systèmes numériques Exercice de pipeline 20 (notes, section 8.6.3)

21 INF3500 : Conception et implémentation de systèmes numériques Exercice de pipeline 21 (notes, section 8.6.3)

22 INF3500 : Conception et implémentation de systèmes numériques Exercice de pipeline 22 (notes, section 8.6.3)

23 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: optimiser le pipeline (pas dans les notes) C: coût du circuit pipeliné G: coût du circuit sans pipeline k: nombre détages de pipeline L: coût en registres par étage de pipeline T p : délai du circuit avec pipeline T: délai du circuit sans pipeline P: performance du circuit avec pipeline = 1/T p S: délai dun registre de pipeline C/P: rapport cout/performance k opt : nombre détages de pipeline pour optimiser le rapport coût/performance Quelle est la valeur de L pour un FPGA? Quel est le k opt correspondant?

24 INF3500 : Conception et implémentation de systèmes numériques Minimiser la latence (1) Certains processeurs ne traitent pas un flux important de données, mais traitent plutôt des données ponctuelles à intervalles irréguliers. Dans un tel cas, il est plus important de réduire la latence que le débit. Stratégies: – Réduire le délai sur le chemin critique. – Réorganiser lordre dans lequel les calculs sont faits. – Paralléliser les calculs sur plusieurs unités. – Éviter le pipeline. (notes, section 8.6.4)

25 INF3500 : Conception et implémentation de systèmes numériques Minimiser la latence (2) La façon de répartir les calculs peut avoir une incidence importante sur la latence. Par exemple, considérons le problème de laddition de quatre nombres. Il y a deux façons dorganiser les calculs, chacun avec sa façon de modéliser le circuit en VHDL. Dans la version de gauche, laddition est faite en série. Dans celle de droite, on parallélise le premier calcul. La latence est réduite de 33%. (notes, section 8.6.4) Somme <= A + B + C + D;Somme <= (A + B) + (C + D);

26 INF3500 : Conception et implémentation de systèmes numériques Minimiser la surface (1) Pour minimiser la surface utilisée, on peut utiliser le partage des ressources. Lexemple montre deux interprétations à un modèle VHDL. La différence entre les deux est basée sur la sélection dune somme ou dun opérande. Le chemin critique est le même pour les deux, mais la version de droite nutilise quun seul additionneur. (notes, section 8.6.5) process (D1, D2, D3, S) begin if S = '1' then D5 <= D1 + D2; else D5 <= D1 + D3; end if; end process;

27 INF3500 : Conception et implémentation de systèmes numériques Minimiser la surface (2) Une autre approche consiste à utiliser des stratégies contraires à celles utilisées pour maximiser le débit en éliminant le parallélisme dans les calculs. Au lieu dinstancier plusieurs composantes identiques pour effectuer des calculs, on en nutilise quune seule et on en contrôle laccès à laide dune unité de contrôle qui implémente une machine à états. (notes, section 8.6.5)

28 INF3500 : Conception et implémentation de systèmes numériques Parenthèse: favoriser la surface ou le délai lors de la synthèse (pas dans les notes)

29 INF3500 : Conception et implémentation de systèmes numériques Niveaux de compromis de design et leur impact En règle générale, plus une décision de design est prise à un haut niveau dabstraction et plus son impact sera grand sur la performance et la surface dun système. Une bonne décision prise à un bas niveau dabstraction ne peut pas en général compenser pour une mauvaise décision prise à un haut niveau dabstraction. (notes, section 8.6.6) choix de lalgorithme choix de limplémentation de lalgorithme (p. ex. parallèle ou sérielle) choix de la précision des calculs choix des circuits

30 INF3500 : Conception et implémentation de systèmes numériques Optimisation pour la surface ou le débit (8.6) – latence et débit – comment maximiser le débit – architectures à pipeline – minimiser la latence – minimiser la surface Exemple: conception dun filtre FIR, comparaison de trois designs Conception pour FPGA: (8.8) Documentation etc. (8.9 et 8.10) Plan pour aujourdhui 30

31 INF3500 : Conception et implémentation de systèmes numériques Exemple de conception: réduction du bruit dans un signal audio à laide dun filtre 31

32 INF3500 : Conception et implémentation de systèmes numériques Exemple: filtre numérique Structure dun filtre numérique à réponse impulsionnelle finie. 32

33 INF3500 : Conception et implémentation de systèmes numériques Design #1: forme directe de base 33 entity fir is generic ( Win : positive := 8; Wout : positive := 20 ); port ( reset_n, clk : in std_logic; x : in signed(Win - 1 downto 0); y : out signed(Wout - 1 downto 0) ); end fir; Lentrée est exprimée sur 8 bits, la sortie sur 20. Au fil des calculs, plus de bits sont nécessaires pour représenter les résultats intermédiaires. Par exemple deux nombres de 8 bits multipliés ensemble donnent un résultat exprimé sur 16 bits. Les coefficients h(i) sont des constantes. Exercice: donner le code VHDL: a.de la ligne de délai; b.des produits et de leur accumulation.

34 INF3500 : Conception et implémentation de systèmes numériques Design #1: forme directe de base définition de constantes et de types 34 library IEEE; use ieee.numeric_std.all; package firpack is constant Win : integer := 8; constant Wout : integer := 20; type coefficients is array(natural range <>) of integer range -(2 ** (Win - 1)) to 2 ** (Win - 1); constant h : coefficients := (-12, 8, 17, 4, -20, -11, 47, 107, 107, 47, -11, -20, 4, 17, 8, -12); type ligneDelais is array(0 to h'length - 1) of signed(Win - 1 downto 0); type produits is array(0 to h'length - 1) of signed(2 * Win - 1 downto 0); end firpack; Il existe des algorithmes pour obtenir la valeur des coefficients en fonction de la réponse en fréquence désirée pour le filtre. Les coefficients montrés ici ont été obtenus à laide de MATLAB.

35 INF3500 : Conception et implémentation de systèmes numériques Design #1: forme directe de base codage de la ligne de délais ligne de délais process(clk) begin if rising_edge(CLK) then if (reset_n = '0') then xDelai (others => '0')); else for k in xDelai'length - 1 downto 1 loop xDelai(k) <= xDelai(k - 1); end loop; xDelai(0) <= x; end if; end process; La ligne de délai est composée de 16 registres en série pour entreposer des versions retardées de x(n), x(n-1), x(n-2), …, x(n- 15).

36 INF3500 : Conception et implémentation de systèmes numériques Design #1: forme directe de base codage des produits et de leur accumulation génération et addition des produits, et sortie finale -- y <= h(0) * xDelai(0) + h(1) * xDelai(1) h(15) * xDelai(15); process(clk) variable somme : integer := 0; begin if rising_edge(CLK) then if reset_n = '0' then y '0'); else somme := 0; for k in 0 to xDelai'length - 1 loop somme := somme + to_integer(h(k) * xDelai(k)); end loop; y <= to_signed(somme, y'length); end if; end process; Les produits sont calculés et additionnés tous ensemble. Une boucle simplifie lécriture mais nimplique pas de séquence de calcul: tout est concurrent. Latence de 1 registre, 1 cycle. (On ne compte pas le premier registre dans lequel on place la donnée en entrée)

37 INF3500 : Conception et implémentation de systèmes numériques Ressources utilisées: – Number of Slices: 190 out of % – Number of Slice Flip Flops: 148 out of % – Number of 4 input LUTs: 270 out of % – Number of MULT18X18s: 12 out of 136 8% Période minimale dhorloge et chemin critique – Minimum period: ns (Maximum Frequency: MHz) – Source: xDelai_0_0 (FF) – Destination: y_19 (FF) – Data Path Delay: ns (Levels of Logic = 40) Latence: – 1 cycle Design #1: forme directe de base résultats de synthèse 37

38 INF3500 : Conception et implémentation de systèmes numériques Filtre numérique 38 Exercice: Proposer une architecture pour maximiser le débit.

39 INF3500 : Conception et implémentation de systèmes numériques Design #2: forme directe avec les produits pipelinés et un arbre binaire dadditions pipeliné 39 Chaque produit est placé dans un registre. Les produits sont accumulés deux à la fois, ce qui correspond aux modules daddition sur les FPGA. Chaque somme est placée dans un registre. Dans cette version, le chemin critique est le plus court possible, mais il nest pas clair à partir du schéma où celui-ci se trouve. niveau 1 niveau 2 niveau 3 niveau 4: addition finale Latence de 5 registres, 5 cycles. niveau 0 type addniv1 is array(0 to h'length / 2 - 1) of signed(2 * Win downto 0); type addniv2 is array(0 to h'length / 4 - 1) of signed(2 * Win downto 0); type addniv3 is array(0 to h'length / 8 - 1) of signed(2 * Win downto 0); Exercice: donner le code VHDL de larbre binaire dadditions.

40 INF3500 : Conception et implémentation de systèmes numériques Design #2: forme directe avec les produits pipelinés et un arbre binaire dadditions pipeliné ligne de délais process(clk) begin if rising_edge(CLK) then if (reset_n = '0') then xDelai (others => '0')); else for k in xDelai'length - 1 downto 1 loop xDelai(k) <= xDelai(k - 1); end loop; xDelai(0) <= x; end if; end process; -- registres des produits process (clk) begin if rising_edge(CLK) then if (reset_n = '0') then lesproduits (others => '0')); else for k in 0 to lesproduits'length - 1 loop lesproduits(k) <= h(k) * xDelai(k); end loop; end if; end process; La même ligne de délai que pour le design #1.

41 INF3500 : Conception et implémentation de systèmes numériques Design #2: forme directe avec les produits pipelinés et un arbre binaire dadditions pipeliné addition des produits avec un arbre binaire pipeliné et sortie finale process(clk) variable somme : integer := 0; begin if rising_edge(clk) then if reset_n = '0' then lesaddniv1 (others => '0')); lesaddniv2 (others => '0')); lesaddniv3 (others => '0')); else for k in 0 to h'length / loop lesaddniv1(k) <= resize(lesproduits(2 * k), lesaddniv1(k)'length) + resize(lesproduits(2 * k + 1), lesaddniv1(k)'length); end loop; for k in 0 to h'length / loop lesaddniv2(k) <= resize(lesaddniv1(2 * k), lesaddniv2(k)'length) + resize(lesaddniv1(2 * k + 1), lesaddniv2(k)'length); end loop; for k in 0 to h'length / loop lesaddniv3(k) <= resize(lesaddniv2(2 * k), lesaddniv3(k)'length) + resize(lesaddniv2(2 * k + 1), lesaddniv3(k)'length); end loop; end if; somme := to_integer(lesaddniv3(0) + lesaddniv3(1)); y <= to_signed(somme, y'length); end process; La fonction resize est utilisée pour que les sommes progressent en largeur dun bit à la fois. Trois boucles donnent une écriture concise.

42 INF3500 : Conception et implémentation de systèmes numériques Résultats de la synthèse: – ressources utilisées: Number of Slices: 204 out of % Number of Slice Flip Flops: 360 out of % Number of 4 input LUTs: 242 out of % Number of MULT18X18s: 12 out of 136 8% – période minimale dhorloge et chemin critique Minimum period: 3.166ns (Maximum Frequency: MHz) Source: Mmult_lesproduits_8_mult0000 (MULT) Destination: lesaddniv1_4_16 (FF) Data Path Delay: 3.166ns (Levels of Logic = 18) – latence: 5 cycles Design #2: forme directe avec les produits pipelinés et un arbre binaire dadditions pipeliné 42

43 INF3500 : Conception et implémentation de systèmes numériques Sommaire circuit de base vs circuit pipeliné 43 designdétailsLUTFFMulT min (ns) Débit (cycles/ résultat) Débit (ns/résultat) Latence (cycles) Latence (ns) 1base pipeliné

44 INF3500 : Conception et implémentation de systèmes numériques Filtre numérique 44 Exercice: Proposer une architecture pour minimiser la surface. Conseil: utiliser un seul multiplicateur et un seul additionneur.

45 INF3500 : Conception et implémentation de systèmes numériques Design #3: forme compacte avec machine à états chemin des données 45 Un seul multiplicateur. Même ligne de délais que les deux autres designs. Un pointeur permet daccéder chaque donnée x et chaque coefficient, un à la fois. Une unité de contrôle doit régler la séquence des calculs ainsi que léchange des données x(n) et y(n) avec le monde extérieur. -- ligne de délais process(clk) begin if rising_edge(CLK) then if (reset_n = '0') then xDelai (others => '0')); elsif (etat = attente) and (go = '1') then for k in xDelai'length - 1 downto 1 loop xDelai(k) <= xDelai(k - 1); end loop; xDelai(0) <= x; end if; end process;

46 INF3500 : Conception et implémentation de systèmes numériques Design #3: forme compacte avec machine à états 46 type type_etat is (attente, accumulation); signal etat : type_etat; chemin des données intégré à lunité de contrôle controle : process (CLK) variable pointeur : integer range 0 to 15; variable somme : integer; begin if rising_edge(CLK) then if reset_n = '0' then etat <= attente; y '0'); else case etat is when attente => pointeur := 0; somme := 0; if go = '1' then etat <= accumulation; end if; when accumulation => somme := somme + to_integer(h(pointeur) * xDelai(pointeur)); if pointeur = 15 then etat <= attente; y <= to_signed(somme, y'length); else pointeur := pointeur + 1; end if; when others => etat <= attente; end case; end if; end process; pret <= '1' when etat = attente else '0';

47 INF3500 : Conception et implémentation de systèmes numériques Résultats de la synthèse: – ressources utilisées: Number of Slices: 127 out of % Number of Slice Flip Flops: 173 out of % Number of 4 input LUTs: 124 out of % Number of MULT18X18s: 1 out of 136 0% – période minimale dhorloge et chemin critique Minimum period: 7.420ns (Maximum Frequency: MHz) Source: pointeur_0 (FF) Destination: y_19 (FF) Data Path Delay: 7.420ns (Levels of Logic = 11) – latence: 17 cycles Design #3: forme compacte avec machine à états 47

48 INF3500 : Conception et implémentation de systèmes numériques Sommaire 48 Design #1 Design #2 Design #3

49 INF3500 : Conception et implémentation de systèmes numériques Sommaire 49 designdétailsLUTFFMulT min (ns) Débit (cycles/ résultat) Débit (ns/résultat) Latence (cycles) Latence (ns) C/P v. 1 C/P v.2 1base pipeliné compact Métrique Coût/Performance: On peut prendre Coût = nombre de LUTs (un petit nombre est bon!) et Performance = 1/Débit (un grand nombre est bon!) On obtient C/P = {6.59K, 0.77K, 15.6K} pour les designs 1, 2, 3. Le design #2 est donc le meilleur selon cette métrique. Avec C = #LUT + #FF × #Mul, on obtient C/P = {39K, 5.7K, 50K}, ce qui mène à la même conclusion. La morale: pour les FPGAs, il est très avantageux de pipeliner un design au maximum, à moins davoir à rencontrer des contraintes très strictes dutilisation des ressources.

50 INF3500 : Conception et implémentation de systèmes numériques Niveaux de compromis de design et leur impact Pour le problème de limplémentation dun filtre, on peut considérer les décisions à prendre aux quatre niveaux vus précédemment: (notes, section 8.6.6) choix de lalgorithme choix de limplémentation de lalgorithme (p. ex. parallèle ou sérielle) choix de la précision des calculs choix des circuits Quel type de filtre? Forme pipelinée ou compacte? Combien de bits de précision pour les entrées et pour les résultats intermédiaires? Quels types dadditionneurs et de multiplicateurs?

51 INF3500 : Conception et implémentation de systèmes numériques Optimisation pour la surface ou le débit (8.6) – latence et débit – comment maximiser le débit – architectures à pipeline – minimiser la latence – minimiser la surface Exemple: conception dun filtre FIR, comparaison de trois designs Conception pour FPGA: (8.8) Documentation etc. (8.9 et 8.10) Plan pour aujourdhui 51

52 INF3500 : Conception et implémentation de systèmes numériques Sept principes de conception FPGA Nous présentons sept principes de conception qui sont applicables principalement aux implémentations sur FPGA. 1.Adopter un style de conception synchrone; 2.Utiliser des bascules (flip-flop) plutôt que des loquets (latch); 3.Définir un signal dinitialisation globale; 4.Utiliser les réseaux de distribution de signaux dhorloge; 5.Exploiter toutes les ressources disponibles sur le FPGA; 6.Effectuer une disposition manuelle des blocs sur le chemin critique; et, 7.Favoriser larithmétique en virgule fixe plutôt que flottante. (notes, section 8.8)

53 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #1: conception synchrone On obtient en général de biens meilleurs résultats avec un FPGA en adoptant un style de conception synchrone. Les structures asynchrones sont mal adaptées aux FPGAs. Il faut aussi éviter de se fier aux délais dune composante ou du routage dun signal, surtout si on utilise un synthétiseur et des outils dimplémentation automatiques. Par exemple, on pourrait être tenté de retarder un signal en le faisant passer par deux inverseurs en cascade. Cependant, un synthétiseur aura tôt fait déliminer cette structure inutile du point de vue fonctionnel. Les signaux dinitialisation des bascules devraient aussi être synchrones. (notes, section 8.8.1)

54 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #2: bascules vs loquets Dans un ASIC sur mesure ou un ASIC à cellules normalisées, les loquets offrent plusieurs avantages. Tout dabord, ils requièrent la moitié des transistors dune bascule. En utilisant des techniques spéciales, on parvient à obtenir des circuits fiables et plus rapides quavec des bascules. Cependant, pour un FPGA le coût est identique entre une bascule et un loquet. Il est donc grandement avantageux de toujours utiliser des bascules. (notes, section 8.8.2) Xilinx inc., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012

55 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #3: initialisation globale Il est avantageux dutiliser un signal unique pour initialiser toutes les bascules parce que la plupart des FPGAs comportent un chemin spécial pour accomplir cette tâche. (notes, section 8.8.3)

56 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #4: génération et distribution de lhorloge Le routage inadéquat dun signal dhorloge peut résulter en un déphasage dhorloge et une réduction des performances du circuit. Un signal dhorloge généré sur le FPGA devrait être passé à un tampon dhorloge (Xilinx: Global Clock Buffer, un Virtex-5 en contient 32). Pour les outils de Xilinx, il faut insérer le symbole « BUFG » à la sortie du générateur dhorloge. (notes, section 8.8.4)

57 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #5: exploitation de toutes les ressources (1) Les ressources en place dans un FPGA sont gratuites. – Une fois une puce choisie pour un système, il ne coûte rien dutiliser toutes les ressources quelle contient. – Ce raisonnement nest pas vrai nécessairement pour les autres technologies, comme pour les ASICs à cellules normalisées. – On néglige ici la consommation de puissance. Dans ce cas, il est très avantageux dutiliser les registres présents dans les blocs logiques en adoptant une architecture à pipeline. – Cette approche peut réduire significativement les délais de propagation sur le chemin critique et accélérer ainsi le débit de données que le système peut supporter. – Le seul inconvénient est laugmentation de la latence. – Beaucoup dapplications sont insensibles à une latence de plusieurs dizaines de cycles dhorloge de 100 MHz ou plus, ce qui rend les architectures à pipeline très intéressantes. (notes, section 8.8.5)

58 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #5: exploitation de toutes les ressources (2) Un corolaire de ce principe est quil est avantageux de placer deux registres supplémentaires dans le chemin de chaque entrée et sortie du système. – Le premier registre est placé dans le bloc dentrées-sorties du FPGA, diminuant au minimum le délai pour la saisie du signal. – Le deuxième registre donne beaucoup de flexibilité au placeur et au routeur pour déterminer lemplacement optimal du module qui doit traiter ce signal. (notes, section 8.8.5)

59 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #5: exploitation de toutes les ressources (3) Les délais de propagation peuvent être grandement réduits en limitant la charge à la sortie dun module. – On peut atteindre ce but en employant un arbre de distribution. – Le principe consiste à faire mener une charge réduite composée dun groupe de bascules. – Chacune de ces bascules peut ensuite mener les modules qui doivent recevoir le signal. – Dans la description du circuit, il sagit dutiliser des noms différents pour des signaux identiques, ce qui devrait empêcher loutil de synthèse de les combiner. (notes, section 8.8.5)

60 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #6: disposition manuelle Il peut être très avantageux de faire la gestion manuelle de la disposition (floorplanning) pour les parties critiques dun circuit. Les manufacturiers de FPGA offre des outils qui permettent de déterminer la position absolue ou relative de certains registres sur la puce. On laisse ensuite les outils automatisés faire la disposition du reste du circuit. En plaçant manuellement les blocs les plus lents, on facilite la tâche du placeur automatique et on accélère cette étape. Lavantage principal, cependant, est quon peut en arriver à une solution réellement optimale (i.e. qui ne peut être améliorée). Linconvénient est que ce travail peut être ardu et pénible, et il devrait donc être réservé uniquement aux parties critiques dun système. (notes, section 8.8.6)

61 INF3500 : Conception et implémentation de systèmes numériques Principe de conception FPGA #7: arithmétique en virgule flottante ou fixe En pratique, on requiert rarement la très grande précision (8 chiffres significatifs et plus) offerte par les calculatrices et les microprocesseurs à usage général. À part pour les applications financières et certaines applications scientifiques, de trois à cinq chiffres significatifs suffisent amplement. Ceci est spécialement vrai pour les systèmes qui traitent des données provenant de phénomènes naturels comme les sons ou les signaux électromagnétiques. – La voix dans un système téléphonique est échantillonnée avec 8 bits. – Les sons enregistrés sur un CD audio le sont avec 16 bits. – Les pixels sont encodés sur 8 bits. Il y a au moins un ordre de grandeur de différence en complexité et en performance entre un circuit arithmétique qui fonctionne en virgule fixe par rapport à un circuit semblable qui fonctionne en virgule flottante. Il est utile lors de la modélisation du circuit de tenir compte de ce fait et de mesurer les conséquences dutiliser un système à virgule fixe. – 10 bits donnent une précision de 3 chiffres significatifs. – 20 bits donnent une précision de 6 chiffres significatifs. (notes, section 8.8.7)

62 INF3500 : Conception et implémentation de systèmes numériques Sept principes de conception FPGA Nous présentons sept principes de conception qui sont applicables principalement aux implémentations sur FPGA. 1.Adopter un style de conception synchrone; 2.Utiliser des bascules (flip-flop) plutôt que des loquets (latch); 3.Définir un signal dinitialisation globale; 4.Utiliser les réseaux de distribution de signaux dhorloge; 5.Exploiter toutes les ressources disponibles sur le FPGA; 6.Effectuer une disposition manuelle des blocs sur le chemin critique; et, 7.Favoriser larithmétique en virgule fixe plutôt que flottante. (notes, section 8.8)

63 INF3500 : Conception et implémentation de systèmes numériques Optimisation pour la surface ou le débit (8.6) – latence et débit – comment maximiser le débit – architectures à pipeline – minimiser la latence – minimiser la surface Exemple: conception dun filtre FIR, comparaison de trois designs Conception pour FPGA: (8.8) Documentation etc. (8.9 et 8.10) Plan pour aujourdhui 63

64 INF3500 : Conception et implémentation de systèmes numériques Documentation de systèmes numériques (1) La documentation adéquate dun système numérique est essentielle à toutes les étapes de son cycle de vie. Dans la phase de conception et de réalisation, la documentation formalise le processus en assurant que les procédures nécessaires sont suivies. Elle permet de suivre lévolution du design dans le temps par des balises définies systématiquement. Pour le travail en équipe, la documentation est absolument essentielle. Dans la phase de maintenance, la documentation permet de comprendre le fonctionnement du circuit pour le réparer et le mettre à jour. Ceci est vrai autant pour une personne qui doit modifier un système conçu par dautres que pour le cas où lon doit modifier son propre systèmes plusieurs mois plus tard. (notes, section 8.9)

65 INF3500 : Conception et implémentation de systèmes numériques Documentation de systèmes numériques (2) Tous les principes de documentation du logiciel sappliquent à la documentation dun système numérique. Cependant, elle comporte des éléments différents. On peut noter entre autres les éléments suivants. – Les diagrammes de bloc identifient les modules principaux du système ainsi que les interfaces entre les modules. Dans un diagramme de bloc, on devrait éviter didentifier des composantes particulières. Le but de ce diagramme est de donner une vue densemble du système sans nécessairement spécifier son implémentation. Il peut être utile de spécifier les noms des signaux dinterface de haut niveau. – Une description fonctionnelle du système sous forme de texte narratif permet dexpliquer comment celui-ci doit se comporter dans différentes situations. Cest aussi dans ce genre de document quon peut expliquer les particularités du système, la philosophie du design, et les raisons qui ont poussé les concepteurs à choisir certaines options plutôt que dautres. (notes, section 8.9)

66 INF3500 : Conception et implémentation de systèmes numériques Documentation de systèmes numériques (3) … suite … – Une description des fonctions logiques du système peut être formée dune combinaison de schémas logiques, de code HDL et de diagrammes détats. Pour le travail en équipe, le code HDL doit suivre des directives et conventions acceptées par le groupe. Ces conventions devraient inclure des paramètres aussi diversifiés quun format normalisé pour les en-têtes de fichiers, la façon de choisir des identificateurs et la façon décrire une structure de sélection. Des conventions doivent aussi être en place pour les schémas logiques et les diagrammes détats. Il faut éviter que les schémas logiques ressemblent à des spaghettis en limitant le nombre de modules sur un seul schéma en les hiérarchisant. On augmente grandement la lisibilité dun diagramme en réduisant la longueur des interconnexions et en réduisant le nombre dangles dans les interconnexions. – Des diagrammes de synchronisation décrivent les caractéristiques dynamiques du système. On spécifie habituellement trois paramètres : une valeur maximale, une valeur minimale, et une valeur typique. La valeur typique est celle quon peut sattendre dobserver dans la plupart des cas. Les valeurs minimale et maximale doivent être utilisées pour concevoir un système robuste en toute situation. (notes, section 8.9)

67 INF3500 : Conception et implémentation de systèmes numériques Documentation de systèmes numériques (4) … suite … – Les schémas électriques énumèrent les composantes matérielles du système et identifient les connexions de patte à patte. À partir du schéma, on doit pouvoir dresser la liste des matériaux nécessaires pour construire le circuit (bill of materials – BOM). En fait, il devrait être possible de construire le circuit sans en comprendre le fonctionnement. (notes, section 8.9)

68 INF3500 : Conception et implémentation de systèmes numériques Et pour finir, quelques principes généraux de conception (1) 1.De bons outils de conception et danalyse ne garantissent pas le succès mais facilitent la tâche. 2.Les circuits numériques sont bâtis avec des composantes analogiques et ont donc des caractéristiques analogiques dont il faut tenir compte. 3.Documenter, documenter, documenter. Pour les autres, et pour vous. 4.Utiliser des pratiques normalisées de codage et de documentation sauve beaucoup de temps. 5.La conception de machines à états est un art similaire à celui de la programmation. 6.Toujours rechercher la manière la plus efficace datteindre le but. 7.Le système qui doit être conçu devra éventuellement être fabriqué et testé. On gagne beaucoup à tenir compte de la testabilité du système pendant sa conception. (notes, section 8.10)

69 INF3500 : Conception et implémentation de systèmes numériques Et pour finir, quelques principes généraux de conception (2) 8.La logique programmable est dune grande utilité à cause de la flexibilité quelle offre au concepteur. 9.Éviter les systèmes asynchrones. 10.Porter une attention particulière à la synchronisation entre deux systèmes asynchrones lun par rapport à lautre. 11.Le débogage dun système est un art qui repose sur la maîtrise des trois principes suivants : – la compréhension de la spécification; – le contrôle des entrées du module à déboguer; et, – lobservation des signaux internes, de létat et des sorties du module à déboguer. (notes, section 8.10)

70 INF3500 : Conception et implémentation de systèmes numériques Notions à retenir et maîtriser Importance relative 1. Expliquer les concepts de débit dinformation et de latence de calcul, et comment ils sont reliés au délai du chemin critique, à la fréquence dhorloge et au parallélisme Pipeliner un circuit numérique pour en augmenter le débit. a.Synchroniser correctement le pipeline. b.Tenir compte du principe déquilibre entre les chemins. c.Donner la nouvelle latence de calcul, le nouveau débit et les coûts. d.Expliquer les particularités, avantages et inconvénients du pipeline sur FPGA Nommer et expliquer quatre stratégies pour minimiser la latence de calcul Nommer et expliquer deux stratégies pour minimiser la surface utilisée Énumérer et expliquer les principes suivants pour guider lutilisation de FPGA: conception synchrone, utiliser des bascules plutôt que des loquets, initialisation globale, distribution dhorloge, utilisation des ressources gratuites, disposition manuelle et calculs en virgule fixe 10 Total100 Résumé: performance – délai et espace 70


Télécharger ppt "INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Cours #11 Performance."

Présentations similaires


Annonces Google