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?
fpga
cpu
homebrew-cpu
Uwe Keim
la source
la source
Réponses:
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.
la source
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.
la source
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.
la source
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.
la source