Forum: Mikrocontroller und Digitale Elektronik AVR32 Max. Verarbeitungsleistung


von Stefan H. (abudun)


Lesenswert?

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**

von Matthias (Gast)


Lesenswert?

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!

von Jens (Gast)


Lesenswert?

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

von Azrael (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Stefan H. (abudun)


Lesenswert?

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
Noch kein Account? Hier anmelden.