Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Synthèse logique: Quelques algorithmes et techniques La synthèse logique consiste en un très.

Slides:



Advertisements
Présentations similaires
« 1.5. Les fonctions logiques »
Advertisements

Algorithmes et structures de données avancés
Calculs de complexité d'algorithmes
Modélisation d’un dipôle actif linéaire
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
8. Les tableaux P. Costamagna – ISEN N1.
ALGEBRE DE BOOLE Mohamed Yassine Haouam
Utilisation des tableaux
Apprendre à partir des observations
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithmique et Programmation
LA RÉSISTANCE ÉLECTRIQUE
INTÉGRALE INDÉFINIE cours 2.
Programmation linéaire
Le codage des nombres en informatique
Structures de données IFT-2000
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Hiérarchie de la mémoire
Systèmes Superscalaires et VLIW
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Et maintenant, où allons-nous? Après toutes les techniques vues jusquici: Que peut-on faire.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Algorithmes d ’approximation
Programmation dynamique
8INF8061 Conception et analyse des algorithmes Comment comparer deux problèmes?
Programmation linéaire en nombres entiers : les méthodes de troncature
Analyse d’algorithmes
Calcul de probabilités
Physique 3 Vibrations et ondes mécaniques
Les charmantes fractions
ÉVALUATION DE LA PERFORMANCE D’UN PORTEFEUILLE
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Introduction Les niveaux de RAID offrent un large choix d’alternatives qui permettent de choisir un rapport performance/sécurité différent. Il est aussi.
SIMPLIFICATION DES EQUATIONS LOGIQUES
ELECTRICITE Hervé BOEGLEN IUT de Colmar Département R&T 2007.
Effectuer un calcul simple sous Excel
CORDIC Sujets de ce thème
Arbres et graphes.
Ch 5 Changement de couleur et réaction chimique
Physique 3 Vibrations et ondes mécaniques
Leçon 3: Analyse Temporelle Des Systèmes
La Logique du premier ordre LPO
Digitaliser des images
Programmation dynamique
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Implémentation d’un.
CHAPITRE 3: LES NOMBRES.
REGLAGE ECONOMIQUE DES PRODUCTIONS Le réglage tertiaire.
B. L’évolution historique du modèle de mécanique quantique
Chapitre 3 :Algèbre de Boole
Optimisation par les algorithmes génétiques
Les fonctions Les propriétés.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot La synthèse automatique de circuits Comment fait-on pour faire le design des processeurs et.
Décomposition et paramétrage des algorithmes
Programmation linéaire en nombres entiers
Marquez cette valeur sur le diagramme à points de la question 6. La moyenne réelle des nombres de lettres par mots dans la population de l'ensemble des.
Synthèse et implémentation d’un circuit combinatoire
Crawlers Parallèles Présentation faite par: Mélanie AMPRIMO
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse détaillée du.
GF-11: Tri Interne Efficace et Tri Externe
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Post-optimisation, analyse de sensibilité et paramétrage
Résolution des équations différentielles
Chapitre 4 La représentation des nombres.
A. Lebrun. Principe de base Dans la logique combinatoire, les sorties dépendent des différentes entrées et peuvent être calculées par l’algèbre de Boole.
Quelques point de repère pour élaborer une progression concernant la technique opératoire de la division euclidienne (CM1 et CM2) I Rappels pour l’enseignant.
1 Objectifs Apprendre la structure de quelques circuits combinatoires souvent utilisés ( demi additionneur, additionneur complet,……..). Apprendre comment.
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Synthèse logique: Quelques algorithmes et techniques La synthèse logique consiste en un très grand nombre d’opérations diverses, qui doivent produire un circuit performant (délai, puissance, taille, etc). Dans ce qui suit, nous examinerons les Binary Decision Diagrams (BDD), leur utilisation dans un problème de couverture, et nous inventerons un algorithme de création d’arbres de buffers.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Les BDD Les Binary Decision Diagrams (BDD) ont été proposés en 1986 par Randy Bryant, pour représenter efficacement les fonctions booléennes. Problème: soit une fonction booléenne de N variables. Sa représentation par un tableau de vérité (ou un tableau de Karnaugh, qui est équivalent) requière 2^N bits. Lorsque N est grand (N>30), cette taille devient prohibitive.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Les BDD (suite) Idée:  Représenter les fonctions logiques à l’aide d’un graphe qui permet de réutiliser des parties communes.  Plus spécifiquement, utiliser la décomposition de Boole (aussi appelée décomposition de Shannon), ce qui produit tout simplement un réseau de multiplexeurs contrôlés par les variables d’entrée de la fonction: F(…, x, …) = x * F x + x’ * F x’ Exemple: f = a + b c F = a * f a + a’ * f a’ F = a * 1 + a’ * (b c) F = a + a’ * (b c)

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Exemple simple de BDD Exemple: f = a + b c F = a * f a + a’ * f a’ F = a * 1 + a’ * (b c) F = a * 1 + a’ * ( b * (c) + b’ * 0) F = a * 1 + a’ * (b * (c * 1 + c’ * 0) + b’ * 0) a b c F

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Les BDD – autres règles de création Autres règles:  La décomposition de Boole doit se faire avec le même ordre de variables dans tous les chemins entre les entrées et les sorties. On dit dans ce cas que le BDD est ordonné (Ordered Binary Decision Diagram, ou OBDD)  Les sous-circuits identiques doivent être partagés. On dit alors que le BDD est réduit

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Exemple de BDD ordonné, et non-ordonné Exemple: f = a (b + c) + a’ b’ c a c b F b c Non-ordonné (mauvais) a b c F b c Ordonné (bon) 0

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Exemple de BDD simutanément ordonné et réduit Exemple: f = a (b + c) + a’ b’ c Ordonné et réduit a b c F b 1 0 a b c 0 1 F b c Ordonné 0

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Représentation du ROBDD Exemple: f = a (b + c) + a’ b’ c F a b b c 1 0 a b c F b

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Pourquoi les BDD sont-ils intéressants? Pour un ordre de variables donné, les BDD sont canoniques, c’est-à-dire que leur représentation est unique pour une fonction booléenne donnée. Exemple: Est-ce que F = a (b + c) + a’ b’ c et G = a b + b’ c sont des fonctions équivalentes? Difficile à dire sans établir la table de vérité… mais leurs BDD respectifs sont identiques.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Pourquoi les BDD sont-ils intéressants? (2) Pour la plupart des fonctions logiques intéressantes, les BDD correspondants sont petits, même pour des fonctions ayant un très grand nombre de variables. Parmi les quelques ombres au tableau:  Multiplicateurs Pour plus de renseignements et le code source d’un gestionnaire de BDD, voir CUDD de Fabio Somenzi (University of Colorado, Boulder)CUDD

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering Problème: l’extraction de noyaux, qui est très efficace pour réduire la taille des circuits lors de la synthèse logique, crée des portes avec de très grands « fanouts », ce qui ralentit beaucoup le circuit.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Délais Nous utiliserons un modèle simple de délai:  Chaque porte logique aura: Un délai intrinsèque,  Une résistance interne,  Une capacité à l’entrée,   Pour une porte donnée « P », qui est connectée à une capacité à la sortie  S, alors le délai D P est: D P =  P +  P *  S

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering Dans un problème réel, si une porte a un très grand fanout, il est probable que les charges des différentes portes de son fanout soient inégales. Ce problème est complexe, alors nous le simplifierons:  Nous supposerons que toutes les charges sont identiques. Nous supposerons de plus que les charges peuvent être divisées autant que l’on veut.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (2) TT 11 11 00 11 D =  0 *  1 +  1 +  1 *  T

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (3) TT 11 11 00 11 D =  0  1 n 1 +  1 +  1 n 2  2 +  2 +  2  T 22 22 22 22 22 22 n1n1 n2n2 n 1 n 2

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (4) D =  0  1 n 1 +  1 +  1 n 2  2 +  2 +  2  T n 1 n 2 Nous cherchons le minimum pour D. D’ou: d D =  0  1 -  2  T  0 n12 n2n12 n2 d n 1 d D =  1  2 -  2  T  0 n22 n1n22 n1 d n 2

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (5) D opt = 3 (  0  1  2  1  2  T ) 1/3 +  1 +  2 Des équations précédentes, on tire: n 1 =  1  2  2  T 0 2 120 2 12 3 n 2 =  0  2  1  T 1 2 221 2 22 3

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (6) D opt = (k + 1) (  0  1 …  k  1  2 …  k  T ) 1/(k+1) +   i Les résultats obtenus étaient pour 2 niveaux de buffers, mais nous ignorons combien il devrait y en avoir idéalement: Soit k la quantité idéale de niveaux, alors: D =  0  1 n 1 +  1 +  1 n 2  2 + … +  k  T n 1 n 2 … n k-1

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (7) D opt = (k + 1) (  b  b ) k  0  T ) 1/(k+1) + k  b Puisque D opt doit être aussi petit que possible, et que les  et les  vont de pair, alors il doit y avoir un buffer idéal b pour lequel le produit (   ) est minimum. Si on utilise ce buffer b, on obtient: Mais… on ne connaît toujours pas k…

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Buffering (8) D min =  ln  0  T -  b Il s’agit donc tout simplement de dériver par rapport à k… Puis il ne reste qu’à solutionner pour k en égalant la dérivée à zéro. On obtient alors: b bb b Avec  =  b  b exp( 1 +  b /  )

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Algorithme de buffering Nous avons maintenant une formule qui nous donne le délai minimum qu’on peut espérer pour un problème de buffering donné. En quoi cela nous est-il utile?

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Algorithme de buffering – branch and bound On peut utiliser cette formule dans un algorithme « branch and bound »:  On commence avec la porte de départ, et sa charge totale. On calcule le délai total entre la porte et les charges. On utilise cette valeur comme notre meilleur délai pour le moment  On ajoute les buffers de notre bibliothèque de cellules, un type à la fois, pour tenter d’ajouter un étage de buffer. Il doit y avoir au minimum un buffer, et au maximum le fanout de départ.  Pour chaque cas, on calcule le délai entre la porte de départ et le nouvel étage de buffers, puis on calcule le délai entre le nouvel étage de buffers et la charge totale en utilisant notre formule. Il est certain qu’on ne peut faire mieux avec les vrais buffers.

© 2001 Frédéric MailhotUniversité de Sherbrooke Le VHDL Branch and bound (2)  On élimine les solutions qui donnent des résultats moindre que le meilleur résultat jusqu’à présent, et on tente d’ajouter un nouvel étage pour les solutions qui sont bonnes jusqu’à maintenant  En début de chaque nouvelle exploration, on tente de brancher la charge totale directement à l’étage de buffer courant. Si le délai obtenu est plus petit que le meilleur résultat en mémoire, on met celui-ci à jour.  On continue ce manège jusqu’à ce qu’il ne reste aucune solution avec un bon potentiel.  La meilleure solution est utilisée lorsque l’algorithme se termine.