Aktuelle AVR32 µC wie bsp der AP7000 machen heut zu Tage ja schon bis zu 210 DMIPS. Die Frage die ich mir nun stelle ist, welche Verarbeitungsgeschwindigkeiten werden dadurch erreicht? Sprich, der Controller hat eine, wie auch immer geartete, Datenquelle, verarbeitet diese Daten und gibt sie an, was auch immer, weiter. Welche Mengen an Informationen oder anderst wieviele Mbit/s können solche µC durchschleusen? Aufgekommen ist diese Frage durch meine derzeitige Arbeit einer Hochgeschwindigkeits-Wireless-Übertragungstrecke die ich mit einem µC implementieren soll. Kann man mit einem 32bitter überhaupt Datenmengen in der Größenordung 600Mbit/s - 1Gbit/s an ein Netzwerkmodul schaufeln?? Ich persöhnlich vermute man braucht für diese Datenmengen FPGA's oder ähnliches nur will mir keiner glauben ^.^ Viel suchen im Netz und bisschen Datenblätter wälzen hat leider keine stichfesten Informationen gebracht. Ich hoffe es kann einer ein bisschen Licht ins Dunkel bringen. P.S. wenn ich 1Gbit/s mit 32bit parallel verarbeite kann ich bei 210 DMIPS theoretisch 6 Zyklen zum Verarbeiten brauchen hab ich mir ausgerechnet. Allerdings weiß ich net ob ich da ne Milchmädchenrechnung gemacht habe. RECHNUNG: 1*10^9Gbits / 32Bit = 31 250 000boud; 210*10^6DMIPS / 31 250 000boud = 6,72 Zyklen Ich bitte um Korrektur falls falsch *gg**
So einfach ist die Rechnung nicht. Allerdings riecht das sehr verdächtig nach einer Hardwareimplementierung (FPGA oder SEMI Custom). Andernfalls werden da wohl keine Gigabit durchgehen. Selbst bei einem Binärdatenstrom ohne Anfang und End, bei dem lediglich ein paar Zeichen ersetzt werden sollen, wäre das nicht möglich. Für eine genaue Abschätzung muss man wissen, wie die Daten ankommen. Bei Ethernet kommen die als Paket an und werden auch so verarbeitet. Wenn das jetzt ein sehr schneller UART wäre, dann könnte man das evtl. eben mal kurz üern Daumen rechnen. Aber was für ein Protokoll wird bei der Übertragung benutzt. Wie kommen die Daten in den Prozessor? (Ethernet, SSI, SPI, UART, Mem-Map I/O, ? ) Was für eine Verarbeitung muss stattfinden? Immer die gleiche Prozedur, oder hängt die Dauer des Algorithmus von den Daten ab. Wieviele Zyklen braucht der Algorithmus..... Mit reinen MIPS bringt das nix!
Ich würde anders herum rechnen. Ein Controller mit xx MHz schafft bestenfalls xx Millionen Instruktionen pro Sekunde. Da die Daten aber nicht im Befehl kodiert sind braucht man schon mal je mindestens 1 Takt zum Lesen und 1 Takt zum Schreiben eines Datenwortes. Das ist dann der Bestcase ohne Waitstates, d.h. die Daten liegen in einem richtig schnellen RAM. Dann wird das ganze vermutlich in einer Schleife ablaufen, d.h. pro Durchlauf je mindestens 1 Takt zum updaten des Schleifenzaählers, 1 Takt zum testen auf die Endebedingung und 1..2 Takte für den Sprung. Das sind alles recht optimistische Annahmen, in der Realität kann man bestimmt mindestens einen Faktor 4 für die Laufzeit annehmen. Schließlich sollen ja evtl. auch noch Interrupts verarbeitet und der Puffer mit den Daten gefüllt werden und nicht jeder Controller kann die genannten Befehle wirklich so schnell ausführen. Die obigen Annahmen ergeben zusammengefasst mindestens 4 * 7 Takte für die Verarbeitung eines Wortes wenn die eigentliche Operation in einem Takt abläuft. Jens
Ich würde sagen, du suchst in der falschen Architektur, was du suchst ist eher ein DSP und kein uC. Ein DSP tut sich einfach leichter mit schnellen datenübertragungen, und man bekommt sie mitlerweile bis in die GHz. ein FPGA wäre auch geeignet, wobei man sich da schon fast länger einarbeiten muss. Musst du nur Daten schaufeln, oder auch Berechnungen durchführen, in jedem fall würde ich mir DMA anschaun, damit könntest du ev. noch etwas aus der architektur raus holen. lg Azrael
Stefan H. wrote: > Aufgekommen ist diese Frage durch meine derzeitige Arbeit einer > Hochgeschwindigkeits-Wireless-Übertragungstrecke die ich mit einem µC > implementieren soll. Kann man mit einem 32bitter überhaupt Datenmengen > in der Größenordung 600Mbit/s - 1Gbit/s an ein Netzwerkmodul schaufeln?? Wenn der Prozessor eine geeignete IO-Komponente besitzt und der Speicher schnell genug ist, sicher. Ob 32 Bit oder die Anzahl der MIPS ist da wenig relevant, da die Übertragung sowieso über DMA abgewickelt wird (werden muss, um in solche Regionen zu kommen). Ob der Prozessor schnell genug für deine Verarbeitung ist, hängt wohl davon ab was verarbeitet werden soll. Viel geht in 6.7 Taktzyklen jedenfalls nicht: 1 Takt laden, 1 Takt speichern, bleiben 4 Takte um vielleicht ein kurzes Filter oder eine CRC berechnen. Knapp.
Morgen, ich danke euch schon mal allen für eure Antworten. Als resumee zieh ich mal folgendes aus dem Thread: - Theoretisch ist es möglich, aber haarig - Wenn es machbar ist, dann nur mit einem DMA - Erfolgsversprechender ist es das ganze mit einem DSP oder FPGA zu realisieren. lg Stefan
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.