• Aucun résultat trouvé

Chapitre 2 Revue de littérature

2.1 Publications

2.1.1 Routage : les différentes approches explorées

2.1.1.4 Approches dites séquentielles

Les algorithmes séquentiels se basent essentiellement sur une approche « Enlève et re-route » (« rip-up and re- route») ou R&R [56, 57]. Les heuristiques étudiées cherchent à définir principalement l’ordre dans lequel les routes sont calculées, les techniques de calcul de congestion, et l’estimation de la « marge de manœuvre » (« slack ») [58, 59, 60, 34, 38]. La première force de cette famille d’algorithmes est sa complexité de calcul pratique : ils sont clairement plus rapides que l’approche d’optimisation globale. Ils sont donc très utilisés pour les plateformes de prototypage (principalement les outils pour FPGA). Dans le domaine du VLSI, ils sont les plus utilisés, et sont les vainqueurs des compétitions ISPD [61, 41].

Le « recuit simulé » (« simulated annealing ») est une approche qui a fait ses preuves dans les algorithmes de routage pour FPGA, à partir du milieu des années 1990. Les algorithmes de routage efficaces pour la gestion de la congestion des ressources de routage, tels Versatile Place and Route (VPR [62, 63]), PathFinder [64] et leurs évolutions [65, 66] attaquent les problèmes de congestion en associant un coût à chaque ressource utilisée, après un premier routage sans gestion de conflits. Ce coût permet, via la technique de « recuit simulé », d’assigner les ressources les plus demandées (i.e. au coût le plus élevé) aux chemins les plus critiques.

De manière générale, les algorithmes de gestion de congestion décomposent le routage en quelques étapes [64] : 1. Router chaque chemin sans tenir compte des conflits ;

2. Associer à chaque ressource un coût proportionnel à leur demande (ie. nombre de conflits) ;

3. Pour chaque chemin en conflit, router ce dernier à nouveau à l’aide d’un parcours d’arbre, c’est-à-dire le parcours des ressources de routage. Chaque nœud est choisi en fonction d’une ou plusieurs métriques, fonction notamment du délai restant (comparé aux contraintes), des congestions environnantes, et souvent d’autres métriques ; 4. Itérer sur 3 selon une certaine condition d’arrêt telles que contraintes non résolues, « température » trop basse. Ces algorithmes ont donc besoin d’une heuristique pour calculer la criticité des chemins. Celle-ci est en général réalisée par la combinaison d’une analyse temporelle statique [67, 68], de la liste des contraintes fournies par l’utilisateur (par exemple objectifs de fréquence d’opération du circuit, de puissance consommée) mais aussi par une heuristique d’allocation de la « marge de manœuvre » existant entre le délai estimé à priori et les contraintes de délai maximal (slack allocation). Cette heuristique est appliquée en général entre les étapes précédentes 2 et 3, et diffère selon les algorithmes. Elle permet à ceux-ci de ne pas calculer l’ensemble des chemins possible (très coûteux en calcul) mais de faire des choix entre les différentes branches lors de la gestion des congestions. Cette approche est notamment utilisée par les outils commerciaux des grandes entreprises (Xilinx, Altera) mais également au sein d’outils CAD VLSI (Cadence, Mentor Graphics). On peut également noter le travail de Ozdal et al. [69, 70], qui ont travaillé notamment sur des algorithmes de routages avec équilibrage des délais (cf. section 2.1.3), mais ont proposé une approche avec gestion efficace de l’historique de congestion [39], aujourd’hui battu par notamment NTHU-route [61].

Un autre domaine dans lequel les algorithmes de routage sont très étudiés est le routage des paquets tels les routeurs réseau pour les applications TCP/IP, la qualité de service, réseaux sans fil, traffic sur réseau routier, etc. Bien que la problématique soit sensiblement différente, notamment l’aspect routage dynamique et évolutif du réseau, le cadre théorique dans le domaine de la qualité de servise (QoS) a été nettement plus recherché et la littérature très nombreuse depuis le début des années 1990, cinq ans avant les publications de VPR et PathFinder. Une formulation couramment utilisée aujourd’hui dans ce domaine est notée « » ou « Delay-constraint least cost problem » (DCLC).

La littérature en rapport avec la QoS décrit de nombreux algorithmes pour attaquer ce problème prouvé NP- difficile [45] lorsque l’expression du coût d’un lien, c(l), est la somme de 2 ou plusieurs métriques. La gestion de la qualité de service demande de tenir compte de nombreux paramètres, tels que le nombre de sauts, la bande passante, le délai, la probabilité de perte de paquets, etc. Cependant, il est également connu que le problème du plus court chemin associé à une seule contrainte est NP-complet, comme analysé dans [71].

On dénote deux types d’approches pour le DCLC : la première effectue une recherche pour chaque métrique, et propose une solution pour mixer les différentes solutions entre elles. La deuxième calcule une métrique comme une combinaison (linéaire ou non) des métriques de coût et de délai, et applique un algorithme de recherche de plus court chemin. La première catégorie fut historiquement la première étudiée. Une approche optimale et naïve est décrite dans [72], et consiste à énumérer l’ensemble des contraintes sur l’ensemble des chemins possibles. Sa complexité en pire cas est exponentielle, et donc non praticable pour des problèmes de taille significative tels qu’adressés dans cette thèse. Une approche « gestion d’échec par règle » (rule-based fallback) est décrite dans [44] : une route la plus courte est calculée selon une première contrainte. Si les autres contraintes ne sont pas respectées, alors la route est re-calculée selon une autre contrainte. Cette approche est facile à implémenter, mais est aujourd’hui dépassée par des algorithmes comme LARAC citée dans la section précédente.

Dans la deuxième catégorie d’algorithmes utilisant une approche séquentielle, une proposition de combinaison linéaire de plusieurs contraintes en une seule est faite dans [73]. Les auteurs utilisent cette approche pour calculer les extrêmes de chaque contrainte, mais laissent inexplorés les chemins intermédiaires. Les mêmes auteurs proposent dans [8] une amélioration utilisant l’algorithme de Dijkstra (plutôt que Bellman-Ford), capable d’explorer ces chemins intermédiaires. Cet algorithme, nommé QoSRDKS, calcule les extrêmes pour chaque contrainte, mais est capable de construire une combinaison des différentes solutions pour en construire une meilleure. Cette solution exige cependant la combinaison préalable des différentes contraintes en une seule, réduisant la complexité du problème à la recherche du plus court chemin et du chemin le moins coûteux. De manière générale, la combinaison linéaire de plusieurs contraintes est séduisante et peut être efficace pour un problème particulier, mais rend l’algorithme très dépendant des poids choisis pour la combinaison linéaire des différentes contraintes [44]. Ces techniques sont applicables au WaferIC, cependant représentent un surcoût en terme de complexité de calcul face aux techniques de routage développées dans cette thèse. En effet, l’attrait de ces techniques est également dans leur généricité : elles sont applicables à tout graphe. Le WaferIC

ayant un réseau régulier plutôt dense en comparaison aux FPGA, VLSI ou PCB, il est possible d’utiliser des approches s’appuyant sur cette régularité pour réduire la complexité, et donc les temps de calcul.