CPU FPGA, comment trouver la vitesse maximale?

14

J'entre dans les FPGA, et si je comprends bien, vous connectez des portes logiques ensemble à l'aide de code. Donc, si je conçois un CPU dans Verilog, il devrait connecter des portes logiques ensemble et fonctionner, mais comment savoir à quelle vitesse mon CPU DIY peut fonctionner? De quoi cela dépend-il?

Uwe Keim
la source
12
@KingDuken Je suis curieux de connaître l'alternative à Verilog pour concevoir quelque chose comme le CPU que vous avez en tête (pas VHDL je présume :))?
Eugene Sh.
1
@KingDuken Ce n'est pas le problème que j'ai, j'ai déjà fait mon CPU et son architecture sur une maquette et je veux le porter sur un FPGA. Ma question est, comment puis-je calculer quelle serait l'horloge de fréquence maximale pour mon CPU, qu'est-ce qui la limite?
4
Vous voudrez peut-être google "analyse de synchronisation statique"
The Photon
14
@KingDuken En tant que personne qui a conçu deux processeurs, cela ne prend pas vraiment beaucoup de temps. Vous pouvez avoir un processeur qui fonctionne en 1-2 mois, si vous savez ce que vous faites.
user110971
2
@KingDuken Fait amusant: Sun / Oracle a publié le code source Verilog pour ses processeurs UltraSPARC T1 et T2. Il se trouve que j'en ai vu plusieurs en personne et ils ont tous fonctionné. Pour info, ils sont même allés gagner SPECint_rate2006! : D Cela montre clairement à quel point il est impossible de concevoir des processeurs dans Verilog ou d'autres HDL. Je l'ai fait moi-même quelques fois comme passe-temps, et ce n'est vraiment rien d'impossible (une fois que vous l'avez fait, comme toujours)
Richard the Spacecat

Réponses:

29

La vitesse d'une conception est limitée par plusieurs choses. Le plus important sera probablement le retard de propagation dans la logique combinatoire de votre conception, appelé chemin critique . Si vous utilisez un FPGA rapide et écrivez votre HDL très soigneusement, vous pourriez probablement atteindre 700 MHz sur quelque chose comme un Virtex Ultrascale +. Sur un FPGA inférieur, par exemple un Spartan 6, un chiffre raisonnable est probablement plus proche de 250 MHz. Cela nécessite un pipelining partout pour que vous ayez le minimum absolu de logique combinatoire entre les composants avec état (minimiser les niveaux de logique), les faibles fan-out (minimiser le chargement sur les éléments logiques), et pas de nids de rats encombrés (chemins de routage efficaces).

La logique de matrice de différents FPGA aura différents paramètres de synchronisation. Des FPGA plus rapides et plus chers auront des retards plus petits et peuvent par conséquent atteindre des fréquences d'horloge plus élevées avec la même conception, ou exécuter une conception plus complexe ou une conception avec moins de pipelining à la même fréquence. Les performances au sein d'un processus particulier peuvent être similaires - par exemple, Kintex Ultrascale et Virtex Ultrascale sont réalisées sur le même processus et ont des retards de cellule et de routage similaires. Il est impossible de dire à quelle vitesse une conception donnée sera sans la parcourir à travers la chaîne d'outils et en regardant les rapports de synchronisation de l'analyse de synchronisation statique.

Lorsque vous effectuez des exécutions de chaîne d'outils pour déterminer la vitesse d'horloge maximale, gardez à l'esprit que les outils sont pilotés par la synchronisation: ils essaieront de respecter les contraintes de synchronisation spécifiées. Si aucune contrainte de temps n'est spécifiée, le résultat peut être très médiocre car les outils n'essayeront pas d'optimiser la conception pour la vitesse. Généralement, les outils devront être exécutés plusieurs fois avec différentes contraintes de période d'horloge pour déterminer la fréquence d'horloge maximale réalisable.

Si vous pouvez optimiser votre conception afin que le chemin critique ne soit pas la limite, vous rencontrerez des limitations dans la génération et la distribution d'horloge (PLL, DCM, tampons d'horloge et réseaux d'horloge globaux). Ces limites peuvent être trouvées dans des fiches techniques partielles, mais les approcher avec une conception non triviale est difficile. J'ai exécuté des trucs sur un Virtex Ultrascale à 500 MHz, mais ce n'était qu'une poignée de compteurs pour fournir des signaux de déclenchement à d'autres composants.

alex.forencich
la source
22

Vous synthétisez votre conception dans la technologie cible (un FPGA particulier) et laissez les outils d'analyse de synchronisation statique vous dire quelle est la période d'horloge minimale.

Ou, vous ajoutez des contraintes à la conception en premier lieu, puis les outils vous permettront de savoir s'ils sont respectés ou non.

Dave Tweed
la source
Qu'est-ce qui entraînerait le non-respect des contraintes? Qu'est-ce qui limite la période d'horloge? Est-ce que cela dépend du FPGA que j'utilise ou est-ce la même chose pour toute la famille des FPGA? (Ou peut-être pour chaque FPGA existant?)
3
Cela dépend de la vitesse du FPGA et de la quantité de logique combinatoire que vous mettez entre les FF dans votre conception.
Dave Tweed
9
@ appmaker1358, avez-vous essayé de lire la fiche technique d'un FPGA? L'indice de vitesse est l'un des paramètres les plus importants mentionnés dans la fiche technique.
The Photon
2
La vitesse sera limitée par le chemin de synchronisation le plus long, qui sera le plus long retard de propagation à travers la logique et le routage entre deux éléments avec état (bascules, RAM, etc.). Différents FPGA auront des paramètres de synchronisation différents et donc une conception permettra d'atteindre des vitesses différentes sur différents FPGA. Cependant, certaines parties du FPGA sont limitées en fréquence - les composants de distribution d'horloge et les PLL ont généralement des limites, mais il est difficile d'écrire des HDL qui se rapprochent de ceux des conceptions non triviales.
alex.forencich
3
De plus, vous devez toujours ajouter des contraintes de temps. Le placement et le routage prennent en compte les contraintes et s'efforcent de les rencontrer. Si vous n'ajoutez aucune contrainte, les outils n'essaieront pas très fort et vous n'obtiendrez pas un nombre très optimiste.
alex.forencich
13

La vitesse d'exécution de votre CPU sera basée sur votre plus long délai de flop à flop dans votre conception synthétisée. Le délai de flop à flop comprendra l'horloge à Q, le routage, la logique / LUT et le temps de configuration du flop. Ces éléments ajoutés forment le chemin critique de votre chronométrage, que vous pouvez inspecter dans le rapport de chronométrage généré par l'outil de localisation et d'itinéraire.

Il existe des disciplines de conception entières consacrées à la création d'architectures qui minimisent ce délai pour tirer le meilleur parti d'un processus donné - pipelining, exécution parallèle, exécution spéculative, etc. C'est une tâche fascinante et impliquant, essorant cette dernière once de performance d'un FPGA (ou d'ailleurs, un ASIC.)

Cela dit, les fournisseurs de FPGA donneront différentes classes de vitesse pour leurs pièces, ce qui correspond à un taux de MHz maximum. Par exemple, un -2 Xilinx Artix est une partie '250 MHz' en gros, bien qu'il soit capable de fréquences d'horloge plus élevées pour les conceptions hautement pipelinées.

Lorsque vous interagissez avec les outils de synthèse et de localisation et de routage FPGA, vous devrez donner des contraintes pour votre conception. Ceux-ci indiquent au flux d'outils le délai cible flop à flop que vous essayez d'atteindre. Dans Quartus (Altera) et Vivado (Xilinx), ces contraintes utilisent une syntaxe appelée SDC, qui signifie Synopsys Design Constraints. SDC est originaire du monde ASIC et a également été adopté par l'industrie FPGA. Apprenez à connaître la DDC - cela vous aidera à obtenir les résultats souhaités.

Altera et Xilinx disposent de communautés en ligne pour vous aider à utiliser la syntaxe SDC et de nombreux autres sujets.

Cela dit, si vous vous souciez de la vitesse, vous devriez envisager un FPGA qui contient une macro dure du processeur, comme Zynq.

hacktastical
la source
-2

Le CPU ne fonctionnera pas plus vite que les horloges globales, ce qui placerait une limite supérieure sur la vitesse à laquelle il pourrait fonctionner. Généralement, les informations sur la fréquence d'horloge maximale sont répertoriées dans les fiches techniques FGPA.

Pic de tension
la source