Hallo zusammen, die Frage ist eigentlich schon im Betreff zu lesen. Ich würde gerne wissen warum FPGA's im Gegensatz zu Prozessoren nur mit so "kleinen" Frequenzen arbeiten? Ich denke gängige Frequenzen sind so bis 300Mhz. Dagegen arbeiten Prozessoren ja mit viel höheren Frequenzen (mehreren GHz). Mir ist schon klar das man mit einem FPGA trotz kleinerer Frequenzen genauso schnelle oder höhere Übertragungsraten erzielen kann aufgrund der parallelen Arbeitsweise, aber ich verstehe nicht warum sie nicht mit höheren Frequenzen arbeiten können. Ich denke hierbei können mir einige Auskunft geben. Danke :) mfg Alex
Das liegt im Wesentlichen an der Konfigurierbarkeit. Die Verbindungen zwischen den Logikblöcken führen z.B. über eine Reihe von Switches, die den Weg des Signals über den Chip festlegen, und in diesen Swiches wird das Signal verzögert. Bei einem Prozessor hingegen sind die Verbindungen fest und es gibt keine Switches. Gleiches gilt innerhalb der Logikblöcke. Ein AND-Gatter mit 4 Eingängen ist einfacher und daher deutlich schneller als eine LUT die auf die gleiche Funktion programmiert ist Das Problem wird übrigens umso heftiger, je größer der FPGA ist, da die Anzahl der Switches auf einem Signal durchschnittlich größer wird. Hier muss man manchmal einen erheblichen Aufwand treiben (z.B. Bus Pipelining), um halbwegs schnelle Designs hinzubekommen. Hinzu kommt, das FPGAs im Allgemeinen 1-2 Technologiestufen hinter den Prozessoren herhinken, weil der Markt deutlich kleiner ist.
Alex schrieb: > die Frage ist eigentlich schon im Betreff zu lesen. Ich würde gerne > wissen warum FPGA's im Gegensatz zu Prozessoren nur mit so "kleinen" > Frequenzen arbeiten? Ich denke gängige Frequenzen sind so bis 300Mhz. Gegenbeispiel: https://www.altera.com/products/fpga/stratix-series/stratix-10/overview.smartphone.highResolutionDisplay.html
Bei einem Prozessor ist dem Hersteller die logische Verschaltung der internen Komponenten sehr bekannt. Die Laufzeiten innerhalb von Komponeten und deren Verbindungen auch und deshalb kann er sie bis in den GHz-Bereich optimieren. Den FPGA-Herstellern sind aber nur die konfigurierbaren Blöcke bekannt und nicht die Funktion, die ja der Benutzer festlegt. Je nach Einstellung des Synthese-Werkzeugs legt die SW die Komponenten mal eher weit, mal eher nah aneinander. Dadurch variieren die Laufzeiten und damit die maxi. Frequenzen. Dazu kommt noch, das die Blöcke ja konfiguriert werden können/müssen und meines wissen nach die "Fuses" der Blöcke über eine unterliegende SRAM-Zellenbereich gesetzt werden, welche zu einem, im Vergleich zu einem fest verdrahteten Prozessor, langsameren Zellenfunktion führt.
In den Prozessoren sind es nur begrenzte Abschnitte die mit der vollen Frequenz arbeiten. Z.B. ist es so, dass der L1 Cache meistens mit Kernfrequenz läuft, manchmal aber auch nur mit halber Frequenz. Die L2 und L3 Caches laufen schon mit niedrigeren Frequenz. Diese hohen Frequenzen können nur dadurch erreicht werden, weil die Logik fest verdrahtet ist. Eine Multiplikation braucht mehrere Taktzyklen. Das wird mit Pipelining erreicht. D.h. Wenn eine CPU mit 3 GHZ 3 Zyklen für eine Multiplikation braucht läuft eine Multiplikation effektiv im Bereich von ~ 1Ghz. Eine schöne Übersicht der Befehle, ihre Latency und dauer findest du hier: http://www.agner.org/optimize/instruction_tables.pdf Bei einem FPGA ist die Logik nicht fest verdrahtet sondern es gibt ein großes Netz zum Verteilen der Daten. Durch das große Netz haben die Leitungen eine größere Kapazität, ein Transistor braucht länger um die Spannung (und damit das Signal) zu ändern. Diese Netze sind zwar mit Pass-Transistor Logik begrenzt (https://en.wikipedia.org/wiki/Pass_transistor_logic) Aber trotzdem hat jeder dieser Transistoren eine zusätzliche Kapazität. Um die Langen Wege zu verringer gibt es noch dedizierte Carrychains oder andere Abkürzungen. Da kocht jeder Hersteller seine eigene Suppe. Infos findest du in den Dokumentationen. Außerdem sind fast alle Funktionen durch SRAM Lookuptabellen realisiert. Was bei Intel eine fest verdrahtete logik ist muss bei den FPGAs erstmal durch das SRAM durch, auch wenn es nur ein NOT ist. Und wenn mehrere dieser Lookuptabellen im FPGA hintereinander geschaltet sind, begrenzt die Laufzeit der längsten Kette die FPGA Taktfrequenz.
Man könnte es auch in einem Merksatz zusammenfassen: Konfigurierbarkeit und Flexibilität wird durch Langsamkeit erkauft.
Frank schrieb: > Gegenbeispiel: ... In diesem "Gegenbeispiel" ist das FPGA (oder eher das Design im FPGA) die langsamste Komponente. Und natürlich konnte auch ein altes Spartan3 schon mit 500MHz arbeiten. Aber eben nur sehr lokal begrenzt und nicht quer durchs FPGA.
Nun ja, ein S3 kann eigentlich so ziemlich an gar keiner Stelle mit 500 MHz arbeiten. Selbst eine rückgekoppelte LUT tont nur mit 300 MHz.
Weltbester FPGA Pongo schrieb im Beitrag #4433936: > Nun ja, ein S3 kann eigentlich so ziemlich an gar keiner Stelle mit 500 > MHz arbeiten. Selbst eine rückgekoppelte LUT tont nur mit 300 MHz. Nö, lt. Datenblatt S. 89 : http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf ist deutlich mehr drin. Und der S3 ist auch schon über 10 jahre alt.
Nö-Sager schrieb: > Weltbester FPGA Pongo schrieb im Beitrag #4433936: >> Nun ja, ein S3 kann eigentlich so ziemlich an gar keiner Stelle mit 500 >> MHz arbeiten. Selbst eine rückgekoppelte LUT tont nur mit 300 MHz. > > Nö, lt. Datenblatt S. 89 : > http://www.xilinx.com/support/documentation/data_s... > > ist deutlich mehr drin. Und der S3 ist auch schon über 10 jahre alt. Da steht "for export control" - das ist so eine Ami Geschichte weil potentiell "waffenfähiges FPGA" ;-) Denke nicht, dass das Aussagekräftig für die real erzielbare Taktrate sein soll.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.