Wie schnell ist eine FPGA CPU?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Der FPGA selber braucht keinen Takt, den braucht man nur um seine "simulierte" Schaltung synchron zu halten. Der angegebene Takt gilt für die Zeit die ein Gatter braucht, schaltet man mehrere hintereinander braucht man ein vielfaches dieser zeit, der Takt der simulierten CPU ist also der maximale Takt des FPGAs geteilt durch die längste hintereinanderschaltung von Gattern die man hat. Hat man 9 Gatter hintereinander geschaltet, hat man in diesem Fall also nur noch 100MHz!

Das Zauberwort hier heißt "Asynchrone CPU". Das war vor 20 Jahren mal DAS Thema. Seitdem haben sich da unzählige Wissenschaftler und Privatleute mit beschäftigt und trotz Millioneninvestments ist bis heute nichts vernünftiges bei raus gekommen.

Damals habe ich mich auch damit beschäftigt. Das Problem ist die Signallaufzeit. Jedes Gatter verzögert. Teile der CPU brauchen also zwangsläufig länger als andere. Müssen die aber zusammenarbeiten, dann weiß man nicht, wann das Ergebnis gültig ist. Schlimmer noch, durch Laufzeitunterschiede der Teile die ihre Ergebnisse einem anderen Teil weiter geben, "überlegt" sich die CPU ihre Ergebnisse dauernd neu anders bis das endgültige Ergebnis anliegt. Dadurch hat man noch mehr herumschalterei und kann nicht sicher wissen, wann das Ergebnis Endgültig ist. Dadurch braucht man mehr Strom und hat entweder eine noch langsamere CPU erschaffen oder eine extrem unzuverlässige als wenn man einfach klassisch taktet.

Zudem würden die ganzen modernen Optimierungsstrategien wie Pipelines, Pre-Prediction, Multithreading usw. mit einer asynchronen CPU gar nicht funktionieren! Damit fallen die Nachteile der Asynchronen CPU noch viel stärker ins Gewicht, die Vorteile sind fast nicht existent.

Woher ich das weiß:eigene Erfahrung

bestfragen 
Beitragsersteller
 30.07.2020, 19:33

Ich habe zufälligerweise eine Asynchrone CPU Entwickelt die ich bauen will. Zuerst mache ich das mit 74HCxx TTL Chips. Aber dann will ich das mit einer FPGA oder so machen. ;-) Das Design habe ich auf die Transistorenzahl und die Menschliche Programmierbarkeit Optimiert. Mit TTL würde die bei ungefähr 20Mhz noch laufen. Denkst du das lohnt sich auf FPGA umzusteigen, oder sollte ich lieber diese RF High Speed Transistoren verwenden? Ich vermute das das mit Transistoren schneller ist, oder?

0

Auf jeden Fall erst mal FPGA, denn da kann man leicht Änderungen machen, das TTL-Grab ist immer sehr lästig zu verändern.

Aber andererseits kann man die Laufzeiten nur an einem TTL-grab richtig gut nachvollziehen und das ist die größte Hürde bei Asynchonbetrieb.


bestfragen 
Beitragsersteller
 30.07.2020, 20:55

Dann kann ich auch gleich die CPU am PC Simulieren. Ich will halt eine CPU bauen die wirklich existiert. Und nicht zwischen einsen und nullen. Man soll sie in der Hand halten können. Denn wozu sonst brauche ich sowas? Wenn es um die Leistung geht, dann kann ich noch immer auf FPGA umsteigen. Und ich habe die CPU schon fast fertig Designt. Da muss ich keine Änderungen machen. Und auf dem Breadboard kann man (zumindest ich) viel schneller Fehlerquellen finden und die Fehler beheben. Ich weiß nicht wie es anderen geht, aber ich komme mit Dingen die ich sehe viel besser umgehen, als mit welchen die ich durch das Display sehen kann und die nur zwischen einsen und nullen existieren.

0

Moin,

wenn Du eine CPU in eine FPGA reinprogrammierst (also ausgenommen fest verdrahtete IPs), dann spricht man von einem FPGA Soft Core. Die wirst Du taktmäßig nicht so schnell takten können wie ne richtige CPU, weil eben eine FPGA auf Rekonfigurierbarkeit ausgelegt ist. Dadurch werden i.d.R. die Signallaufzeiten länger werden - bspw. wegen Schalter (switch boxes), dafür dass man für (einfache) logische Funktionen ganze Lookup-Tables verwendet, und lange Leitungen. Die CPU kannst Du so schnell takten wie die Laufzeit des langsamsten Pfads.

Wie schnell eine CPU ist, lässt sich aber nicht nur durch Takt definieren. Eine sehr gut optimierte Architektur für eine bestimmte Aufgabe auf ner FPGA lässt sich vllt. schneller ausführen als auf ner viel schneller getakteten Computer-CPU.

LG. :)

Woher ich das weiß:Studium / Ausbildung – Masterstudent in Elektrotechnik 🤓