Welcher Prozessor arbeitet eigentlich schneller, der 40 MHz PIC18F452 (externer Takt 10 MHz, intern 40) oder ein 16 MHz Atmel. Microchip gibt den PIC mit 10 MIPS an, Atmel 16 MIPS. Heisst das das der Atmel trotz niedrigerer Taktfrequenz sogar schneller läuft ?
theoretisch ja. Die PICs haben schon immer das Problem, dass sie pro Befehl 4 Takte brauchen, während die AVRs von anfang an darauf ausgelegt waren, bei (fast) allen Befehlen nur einen takt zu benötigen.
Ja, der Atmel sollte schneller sein. So genau läßt sich das aber Anhand der Mips-Zahlen nicht sagen, dazu braucht man konkrete Anwendungen. Die Frage ist allerdings, ob beim AVR der Takt wirklich geringer ist, da der AVR die Frequenz intern vervielfacht. Markus
Ja, der AVR ist bei 16MHz mindestens 1,6-mal schneller. Mindestens deshalb, weil er vieles schneller machen kann. Er ist quasi ein PIC mit 32 WREGs, d.h. er kann vieles auf die Register verteilen und muß nicht ständig vom RAM in die Register hin- und herschaufeln. Praktisch dürfte er also bequem doppelt so schnell sein. Nur bei den Interrupts hat der AVR einen deutlichen Minuspunkt: Der PIC18F unterstützt nämlich mehrere Interruptprioritäten. Der AVR leider nicht, d.h. da kann ein einziger lahmer Interrupt das Echtzeitverhalten der gesamten Anwendung in die Knie zwingen. Deshalb nehme ich für größere Projekte mit mehreren Interrupts immer noch den guten alten 8051, dessen neuere Typen 4 Interruptprioritäten haben. Auch bei den MIPS kann er punkten (DS89C420: 33MIPS, C8051F127: 50MIPS), aber soviel habe ich noch nie gebraucht. Peter
im Prinzip hast du zwar Recht, aber man hat ja die Möglichkeit innerhalb einer ISR andere Ints freizugeben. Gibts eine lahmende ISR, können in dieser andere Ints durch Setzen von I freigegen werden. Das ist nichts anderes als 2 Interruptprioritäten. Sehe ich keinen Nachteil des AVR. Das einzige, was mir vom 8051 her fehlt, sind die jb/jnb/cpl bitadr-Befehle und der djnz, aber das auch eher wegen Schreibfaulheit. Lästig ist das fehlende parity-bit beim AVR, wenn man es denn mal braucht.
Hi dann kommt im lahmen INT der gleich nochmal und schon knallts. Also muß man im lahmen INT zusätzlich noch genau diesen deaktivieren bevor man I setzt. Matthias
Dann muß halt die Intelligenz des Programmierers "lahme" Ints verhindern. Ich sehe immer zu, daß Interruptroutinen so kurz als möglich sind.
eigentlich kann man davon ausgehen mehr mips==schnellerer prozessor, den mips== millionen instruktionen pro seklunde. es gibt natürlich auch fälle, wo es biischen anders kommt. der atmel brauch für sprünge immer 2 takte (für alles andere einen). es gibt bestimmt prozessoren, die es mit einem takt schaffen, oder auh einige dsp die in ECHT parallel arbeiten können (nicht alles, aber einiges). z.b. im falcon ist einer drin, der kann einige befehle in echt parallel (nicht wie dose (pc) nur theoretisch (ausser mulitiprozessorengeräte). soweit
@Jens: Die AVRs brauchen nicht nur für die Sprünge zwei Takte, sondern auch für einige andere. Die 16Mips sind also ziemlich optimistisch gerechnet. Die PC-Prozessoren können schon länger mehrere Befehle parallel ausführen; da solltest Du mal Deine Propagande updaten. Insbesondere können sie auch mehrere mathematische Operationen in einen Befehl packen. Recht interessant hab' ich da folgendes gefunden: http://www.fefe.de/ccccamp2003-simd.pdf Markus
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.