Sind FPGAs so leistungsfähig wie die Anzahl ihrer Gates?

7

Angenommen, ich habe ein 1-Millionen-Gate-FPGA. Ich habe einige Prozessoren auf OpenCores gefunden, die nur 50.000 Gates benötigen. Wäre es also möglich, beispielsweise einen 8-Kern-Prozessor mit einem solchen FPGA herzustellen? Oder gibt es Grenzen für FPGAs, wenn es darum geht, massiv parallele Dinge zu implementieren?

Tut mir leid, wenn es neu klingt, aber ich bin ein Neuling in FPGAs.

Thomas O.
quelle

Antworten:

5

Ja im Prinzip. Wenn Sie möchten, dass sie miteinander kommunizieren, wird möglicherweise viel mehr Logik für Arbitrierung, Busumschaltung usw. verwendet, und wenn Busse um das FPGA herum betrieben werden, werden möglicherweise viele Gates und Verbindungskapazitäten für das Routing verbraucht.

mikeselectricstuff
quelle
8

Sie stellen grundsätzlich zwei Fragen:

- "Sind FPGAs so leistungsfähig wie die Anzahl ihrer Gates?"

Ich würde eigentlich sagen, dass die Antwort "nein" ist. Die Größe sagt Ihnen, wie "groß" sie sind, aber nicht, wie "mächtig" sie sind, weil:

  1. "leistungsstark" ist sehr subjektiv für Ihre Endanwendung.
  2. "Leistungsstark" ist normalerweise eher mit dem Technologieknoten verbunden als mit der Größe des Chips (ein kleines Gerät der aktuellen Generation kann dieselbe Größe haben wie eines einer älteren Generation - sind sie gleichermaßen "leistungsstark"?)

- Paraphrasierung: "Kann ich die Anzahl der erforderlichen" Gates "durch die Anzahl der gesamten" Gates "teilen und die Anzahl der Kerne ermitteln, die ich in das Gerät einbauen könnte?"

Die Antwort darauf lautet auch "nein". Dies liegt daran, dass das Routing von FPGAs begrenzt ist. Dies bedeutet, dass:

  1. Obwohl möglicherweise genügend Logikressourcen auf dem Chip vorhanden sind, kann die Software nicht so viele Kerne routen, insbesondere wenn Konnektivitätsaufwand besteht.
  2. Insgesamt wird das Design wahrscheinlich nicht die Timing-Leistung des einzelnen Kerns erfüllen.

Ein weiteres Problem ist der Umgang mit Off-Chip-E / A. Gibt es genügend Bandbreite und Anzahl der E / A, um Daten von dieser Anzahl von Kernen zu liefern / zu lesen?

(Übrigens versuchen wir, eine SE-Site für FPGAs zu starten. Erwägen Sie, diese zu unterstützen. Http://area51.stackexchange.com/proposals/20632/programmable-logic-and-fpga-design?referrer= YmxhQ2OJUo-FAaI1gMp5oQ2 )

Saar Drimer
quelle
4

Sie werden feststellen, dass die Anzahl der Gates kaum Schätzungen sind und keine einfachen Fakten über die FPGAs. Bei näherer Betrachtung umfassen die angekündigten Gate-Zählungen beispielsweise die Verwendung von Teilen des Block-RAM für die Logik, und die von Ihnen synthetisierte Logik wird nicht auf einen einzelnen Standard-Gate-Typ reduziert, als ob Sie nur mit NAND-Gattern mit zwei Eingängen bauen würden Die Logikblöcke sind etwas komplexer - normalerweise mit LUTs mit 4 oder mehr Eingängen für jedes Register.

Die eigentliche Frage ist also, wie effizient die Synthesesoftware Ihr spezifisches Design auf Ihren spezifischen Chip abbilden kann. Sie können wahrscheinlich problemlos einen 8-Kern-Prozessor ausführen - wenn die Kerne und ebenso wichtig ihre Verbindungen gut genug zum Chip passen. Es ist durchaus möglich, dass ein Design aufgrund fehlender Signalführung und nicht aufgrund fehlender Logik fehlschlägt.

Yann Vernier
quelle
2

Neben On-Die-Peripheriegeräten (die bei Dingen wie Block-RAM, eingebetteten Multiplikatoren usw. einen großen Unterschied in Bezug auf "Leistung" bewirken können) und Taktrate / "Timing-Closure" ist ein weiterer begrenzender Faktor für FPGAs häufig der Pin Anzahl.

Sicher, Sie können 8 Kerne in ein FPGA einbauen, aber dann müssen Sie diese 8 Kerne dazu bringen, mit der Außenwelt zu sprechen. Um die Sache noch schlimmer zu machen, müssen Sie, sobald Sie einige hundert Pins überschritten haben, ein BGA-Paket verwenden, für das es viel schwieriger ist, eine Leiterplatte zu entwerfen.

ajs410
quelle
2

Ja, FPGAs eignen sich hervorragend für die Implementierung von massiv parallelen Dingen. Viele Leute haben 8 oder mehr CPUs in ein FPGA eingebaut - es ist nicht nur "im Prinzip".

Schauen Sie sich das Grundrissbild im Artikel "Ein 24-Prozessor-System auf Chip-FPGA-Design mit Netzwerk auf Chip" von Zhoukun WANG und Omar HAMMAMI an.

Dieser Grundriss macht es ziemlich offensichtlich, dass dieses spezielle FPGA ziemlich voll ist. Die 24 CPU-Kerne - jeder eine 32-Bit-MicroBlaze-CPU mit insgesamt 32 KByte lokalem Befehls- und Datenspeicher - füllen ungefähr die Hälfte des FPGA (um den Umfang herum) aus. Das Routing zwischen den CPU-Kernen und den 4 unabhängigen externen Bussen füllt den gesamten Rest des FPGA aus. (Die externen Busse sind jeweils 64 Datenbits breit und enthalten einige Steuersignale, die jeweils zu einem unabhängigen DDR2-Speichermodul führen.)

(Dieser spezielle IC enthält neben der FPGA-Struktur auch zwei PowerPC 405-CPU-Festkerne - Zhoukun und Omar haben sich anscheinend nicht darum gekümmert).

Wie andere hier bereits betont haben, ist es zu optimistisch, "Anzahl der Gates in einem FPGA" durch "Anzahl der Gates in einer CPU" zu teilen. In diesem Fall ergeben 142.128 LUTs auf einem Xilinx FPGA Virtex-4 FX140 geteilt durch etwa 1000 LUTs, die für eine MicroBlaze-Mindestgröße erforderlich sind, (optimistisch) 142 CPUs pro Chip. Sind Sie also enttäuscht, dass anscheinend "nur" 24 CPUs in diese FPGA-Struktur passen (ohne die beiden PowerPC 405-Hardcore-Kerne außerhalb der FPGA-Struktur auf diesem IC)?

Ein 1-Millionen-Gate-FPGA geteilt durch eine 50.000-Gate-CPU ergibt (optimistisch) 20 CPUs pro Chip. Ich denke, Sie werden das Glück haben, sogar 4 CPUs auf dieses FPGA zu drücken.

"Es ist erstaunlich, was Sie auf diese Teile drücken können, wenn Sie die Maschinenarchitektur sorgfältig entwerfen, um FPGA-Ressourcen zu nutzen. Im Gegensatz dazu gab es in einer kürzlich erschienenen EE Times einen sehr interessanten Artikel von einem Kollegen von VAutomation, der virtuelle 6502 in VHDL ausführte und dann synthetisierte Sie wurden in beliebige FPGA-Architekturen zerlegt. Obwohl das 6502-Design nur etwa 4000 "ASIC-Gates" verwendete, passte es nicht ganz in ein XC4010, ein sogenanntes "10.000-Gate" -FPGA. Dass ein 32-Bit-RISC mit zwei Ausgaben passen sollte und ein 4-MHz-6502 sagt nicht viel über VHDL-Synthese vs. manuelle Platzierung, über Legacy-Architekturen vs. benutzerdefinierte und vielleicht sogar etwas über CISC vs. RISC aus ... "- Jan Gray

Der Wikipedia-Artikel "Soft Processor" enthält weitere Informationen zum Packen mehrerer CPUs auf einem einzigen FPGA.

Davidcary
quelle
Komisch, dass ein 6502 4000 "ASIC-Gatter" verwenden würde, wenn der Realteil ungefähr 5000 Transistoren hätte.
Supercat
1

Mehr oder weniger.

Zusätzlich zu den Unterschieden bei On-Die-Peripheriegeräten (RAM, E / A-Puffer usw.) müssen Sie auch die Tatsache berücksichtigen, dass unterschiedliche FPGAs für unterschiedliche Taktraten ausgelegt sind.

Sie haben vielleicht zwei 500k-Gate-FPGAs, aber wenn einer einen maximalen Takt von 50 MHz hat und der andere bis zu 1 GHz geht, ist einer deutlich leistungsfähiger als der andere.

In der realen Welt ist dies im Allgemeinen nicht so einfach, da FPGAs durch Ausbreitungsverzögerungen stärker eingeschränkt sind als die reine Taktrate. Verschiedene Geräte verfügen jedoch über schnellere oder langsamere Logikeinheiten, die ändern, wie komplex Ihre Logik sein kann, ohne synchrone Pufferung oder Probleme mit der Metastabilität auftreten.

Connor Wolf
quelle