Depuis le début des années 70 et la naissance du 4004 (1971), la grande majorité des puces grand public (CPU, GPU, ...) possèdent un circuit imprimé « statique ». Autrement dit, le circuit imprimé possède une architecture figée épaulée par des micro-instructions permettant l’exécution d’une tâche spécifique tel que la compression/décompression (MMX), l’accélération 3D (3DNow), …

Les applications logicielles doivent alors êtres programmées en fonction de l’architecture de la puce. Ces applications peuvent ensuite êtres optimisées pour une architecture spécifique, ce qui leur permet de s’exécuter plus rapidement.

Par exemple, le logiciel Samplitude 6.0 (séquençage MIDI, fonctions audio et vidéo) est optimisé pour l’architecture Intel Pentium 4 et l’Hyper-Threading (simulation de deux processeurs logiques avec un unique CPU). Ce logiciel fonctionne donc plus rapidement sur des Pentiums 4 que sur des Athlons XP.

Une puce avec un circuit imprimé classique a l’avantage de pouvoir faire fonctionner n’importe quelle application conçue pour son architecture. Mais malgré les optimisations possibles, les applications fonctionneront toujours plus lentement avec ce type de circuit qu’avec un circuit spécialement conçu pour une application (accélération matérielle au lieu de logicielle).

En effet, en informatique, une solution matérielle est beaucoup plus rapide qu'une solution logicielle (exemple des cartes accélératrices 3D des ordinateurs personnels). Il serait donc intéressant de pouvoir modifier la structure interne et donc le fonctionnement de la puce électronique pour accélérer « matériellement » une application.

C’est ce que proposent les puces FPGA (Field Programmables Gates Arrays) L’histoire des puces programmables connut plusieurs phases : En 1975, les concepteurs commencent à remplacer des circuits logiques standards par des circuits programmables. Les fonctions réalisées sont majoritairement des interfaces et des transcodages. Dans le courant des années 1980, la société Californienne Xilinx invente une nouvelle famille de puces programmable appelée FPGA.

Dès 1985 des contrôleurs et des circuits périphériques complexes commencent à être implantés autour des microprocesseurs. Ces cartes sont utilisées de plus en plus pour effectuer du traitement du signal et dans le domaine des télécoms. De leur côté, les FPGA se développent.

En 1987, une première standardisation des langages de descriptions du hardware est créée. Cette standardisation permet d’étendre le design de circuit aux particuliers. En effet, avant cette standardisation, les entreprises utilisaient leur propre code propriétaire. Cela donna naissance à deux langages : Le VHDL, IEEE.1076, facile à appréhender mais peu compact, principalement utilisé en Europe Et le Verilog, proche du C, propriétaire jusqu'à son acceptation IEEE.1364 en 1995, principalement utilisé aux Etats-Unis depuis les années 1995, la puissance des circuits logiques programmables FPGA permettent d'implanter en leur sein à la fois le microprocesseur (ou le DSP) et le pré ou post traitement associé.

Au début du XXIe siècle, le prix des puces FPGA commence à baisser et devient progressivement abordable pour le grand public. Parallèlement à cela, la modernisation des fonderies permet d’atteindre une finesse de gravure de plus en plus réduite, donc de créer des puces FPGA de plus en plus puissantes (fréquence en hausse et nombre de portes accrues).

Lors de leur création vers 1980, les puces FPGA ont tout d'abord su séduire les électroniciens. Ils y voyaient un moyen de prototypage rapide et peu cher. En effet, les puces FPGA peuvent êtres reprogrammées sans nécessiter de matériel lourd. Cela leur permet de tester un nouveau circuit sans avoir à racheter des composants ou pire de les reconcevoir à chaque amélioration. Puis les informaticiens ont commencé à s'y intéresser de près comme moyen d'augmenter la rapidité de leur application en leur donnant une assise matérielle (accélération hardware).

Depuis le Geforce 3 de nVidia (NV20), toutes les cartes graphiques du marché possèdent un circuit figé et une partie programmable (vertex shader et pixel shader).

Depuis quelque temps, un certain nombre de chercheurs intéressé par les principes d'évolution Darwinienne du hardware utilisent des puces FPGA dans leurs expériences. Elles sont pour eux intéressantes à plus d'un titre. Elles permettent de faire évoluer des algorithmes génétiques à des vitesses électroniques et de concevoir des processeurs dédiés par ces mêmes techniques d'algorithmes génétiques.

Les FPGA ont été perçus par beaucoup comme une alternative à la fonte même d'un composant : les universités par exemple y voient un moyen concret d'enseigner le design digital.

Les start-up de l'électronique peuvent à moindre coût prouver que leur idée est bonne et viable pour lever des fonds sans attendre un retour de fonderie qui mobilise des capitaux importants, et pour plus d'un mois la plupart de temps.

La technologie FPGA intéressa aussi l’armée de par la possibilité de programmation des puces en cours de fonctionnement. En effet, lors d’une guerre, la réactivité d’un radar d’avion de chasse par exemple est déterminante pour la survie du pilote. La possibilité de reprogrammer une puce de type FPGA permet à ce radar de s’adapter à n’importe quelle situation tout en ayant une accélération hardware permanente. Globalement, l'armée est intéressée par des puces FPGA pour les instruments de vols et les systèmes de communications militaires nécessitant la possibilité d'être reconfigurés et de fonctionner dans une large gamme de températures (les deux dernières puces de marque Altera, EP1S80 et EP1S60, peuvent fonctionner entre - 40° et 100° C).

Une puce FPGA de marque Xilinx fut également choisie par la Nasa pour l’exploration de Mars par les Rovers Spirit et Opportunity. Ces puces appartiennent à la famille Virtex et sont spécialement étudiées pour résister aux radiations solaires qui frappent Mars continuellement (la faible atmosphère qui entoure Mars ne peut stopper ces radiations et une puce classique serait détruite en peu de temps). Elle se charge de contrôler le bras articulé du Rover et les divers appareils de mesure qui le composent (une accélération hardware permet ici une plus grande précision).

Ce type de puce a été utilisé pour d’autres missions spatiales tel que Mars orbiter (2005).

De par leur prix de moins en moins élevé (une puce à la carte contenant 1 million de portes s’achète 15 dollars), de plus en plus de personnes voient un moyen de créer leur propres ordinateurs entièrement personnalisés à bas prix.

Le hardware libre est né vers 2000. Les concepteurs digitaux en herbe peuvent acheter des puces FPGA puis créer leur propre design de puce et mettre ce design à disposition d’autres concepteurs. A l’instar du mouvement logiciel libre, une communauté de concepteurs passionnés se développe, permettant de s’affranchir des grands industriels de la micro-électronique.

1. PLD.

1.1. Structure.

Un circuit logique programmable (en anglais Programmable Logic Device ou PLD) est un dispositif qui peut être configuré par l'utilisateur pour réaliser une fonction logique quelconque. La plupart des PLD sont constitués de deux réseaux de portes logiques, un réseau AND suivi d'un réseau OR. Les équations des fonctions programmées sont écrites sous la forme minterme ou somme de produits.

Cette structure interne nous permet pour l’instant de traiter que les équations logiques combinatoires. Pour les équations séquentielles, il faut insérer une bascule et un rebouclage de la sortie vers les entrées.

1.2. Convention de notation.

La structure des PLD étant très différente de celle des portes TTL ordinaires, de nouvelles notations logiques ont été développées comme illustrées ci-dessous.

 

  • Une porte AND est appelée une ligne de produits.
  • Les lignes verticales sont les entrées du PLD.
  • Les "X" représentent des fusibles.
  • Les fusibles relient les entrées du PLD aux entrées de la porte AND.
  • Lors de la programmation d'un PLD un fusible indésirable est ouvert et le "X" disparaît.

 

1.3. Symbolisation normalisée.

1.4. Classification des PLD.

Nous pouvons citer deux types de base de PLD : les PAL, les PLA. Un GAL (Generic Array Logic) est un PAL effaçable électriquement.

1.4.1. PLA (Programmable Logic Array).

Les deux réseaux AND et OR sont programmable.

1.4.2. PAL (Programmable Array Logic).

Le réseau AND est programmable et le réseau OR est fixe.

2. CPLD.

Les circuits PLD étudiés jusqu'à maintenant sont connus comme SPLD (Simple Programmable Logic Devices), pour les différencier des circuits plus complexes: les CPLD (Complex Programmable Logic Devices). Les CPLD sont composés d'un certain nombre de SPLD qui partagent une matrice d'interconnexion programmable commune. En plus de la configuration des différents SPLD, il est donc également possible de configurer les interconnexions entre les blocs. Le nombre de portes peut varier entre 100 et 100 000 portes logiques et entre 16 et 1000 bascules voir plus.

3. FPGA (Field Programmable Gate Array).

Ce circuit programmable est composé d’un réseau de petits blocs logiques, de cellules d’entrée-sortie et de ressources d’interconnexion totalement flexibles.

4. ASIC (Application Specific Integrated Circuit).

Si les composants précédents pouvaient être développés avec un simple ordinateur, ceux que nous abordons maintenant nécessitent l'intervention d'un fondeur qui produira le circuit demandé à partir des masques fournis par son client. Ici encore, le terme programmable n'est pas des plus judicieux, les connexions entre les éléments étant dessinées sur les masques. Les temps et coûts de productions sont importants.

On distingue trois types d'ASIC classés par ordre croissant de configurabilité.

  1. Les ASIC prédiffusés (gate arrays). Ils contiennent une nébuleuse de transistors ou de portes à interconnecter avec les problèmes de routage et de délais que cela comporte.
  2. Les ASIC précactérisés (standard cell). On utilise cette fois des bibliothèques de cellules standards à placer sur le semi-conducteur
  3. Les AISC "fulls customs". Ils sont entièrement définissables par le client. Ces circuits conduisent à la réalisation de tous les composants VLSI comme les microprocesseurs.

2016-10-17 19:37:20 / mazoughou@magoe.gn

4 commentaires


  1.  

Votre impression compte aussi