Hi ich wollte mal fragen ob mir hier jemand den unteschied zwischen nem mikrokontroller und nem mikroprozessoer erklären kann! danke ne! schickt die antwort bitte per e-mail!
Sonst noch Wünsche? Vielleicht noch eine Überweisung auf dei Konto zwischendurch?
Bin mir zwar nicht 100%-ig sicher obs eine Definition gibt, aber für mich ist ein -Prozessor eine "dumme" ALU mit Adress- und Daten-Bus. Bei einem -Kontroller sind ALU, RAM, ROM und div. Peripherie in einem Baustein vereint. grüsse leo9
Hi Auch die mir bekannte Definition ist, das ein "Mikroprozessor" nur die reine Recheneinheit mit Businterface ist (Z80,6502,x86) und ein "Mikrocontroller" eben die heute bekannten dinger (Pic,AVR) mit Ram,Rom,und IO Ports ist. Mfg Suschman
Letzteres trifft auf einen Pentium (1-4) oder Athlon auch zu...
Hm, mein Duron hat nen ROM? Cool. Und was steht da drin? Mikroprozessor ist die reine Recheneinheit, die lediglich ein Bussystem hat (8080, 8086...), während der µController den Programm- und Datenspeicher intus hat und meist mit so netten Funktionen wie A/D- und D/A-Wandler, SPI, I²C, UART usw. usf. ausgerüstet ist.
Tja, Erdi, in Deinem Duron laufen Mikroprogramme ab. Damit werden dann die x86er Befehle ausgeführt, die jeweils aus einigen dieser Mikrobefehlen bestehen. Und selbstverständlich hat Dein Duron so Sachen wie RAM (Cache), Counter, etc. Schau einfach mal in ein Datenblatt sowie ein entsprechendes Lehrbuch. Die Zeiten, wo sich die beiden Begriffe so einfach trennen ließen, sind schon lange vorbei...
Schon richtig, er hat aber keinen eigenen Programmspeicher, also kein ROM. Und Counter und so Zeug sind Standart bei nem Mikroprozessor. Das hat jeder µController auch. Der Unterschied ist nur, dass der µController auch ohne externe Peripherie funktioniert. Während der Mikroprozessor (Duron oder ähnliches) immer nen Programmspeicher braucht, bevor er weiß, was er zu tun hat. Nach deiner Erklärung ließe sich gar keine Trennung zwischen Mikrocontroller und Mikroprozessor machen. Es gibt keinen ROM im Duron. Die Befehle sind Hardwaremäßig realisiert und kein Assemblerbefehl sorgt dafür, dass mehrere dieser Befehle nacheinander abgerufen werden. Das mit den Mikroporgrammen ist Schwachsinn. (Belehrt mich eines Besseren, dalls die Aussage falsch ist.)
und warum kann ich in einem Debugger sehen, welche Assembler befehle zu meiner CPU geschickt werden?
@Erdi: Was Du schreibst, ist Schwachsinn. Schon der 286er hatte ein MicrocodeROM, in dem recht umfangreiche Mikrocode-Programme abgelegt sind. Dein Duron hat natürlich wesentlich mehr davon. Wie geschrieben, lesen bildet. Alternativ kannst Du natürlich auch jede Vorlesung über Rechnerarchitekturen bzw. -Strukturen lesen, dort sollte das auch stehen. Der Grund für die Mikroprogramme ist natürlich die Performance. Prozessoren haben mittlerweile so tiefe Pipelines, dass es nahezu unmöglich wäre, die x86-Befehle rein in Hardware zu entwickeln, so dass die Pipelines ausgenützt würden. Deshalb wird das in Mikrocode gemacht.
Hi in einem modernen Prozessor laufen schon µProgramme ab. Ein x86-Maschinenbefehl wird in mehrere µOps zerlegt welche dann durch die Pipline geschickt und damit verarbeitet werden. An die Ebene der µOps ist von Außen kein rankommen. Matthias
@Matthias: "An die Ebene der µOps ist von Außen kein rankommen": Leider falsch. Genau das passiert mit den BIOS-Updates. Wenn also Intel oder AMD einen Fehler entdecken, ändern sie den Mikrocode und geben ihn an die BIOS-Hersteller weiter, die ihn dann wiederum an die Boardhersteller weitergeben, so dass der Code dann in die Prozis kommt. Im Prinzip kannst Du also auch den Mikrocode ändern...
Hi @Dieter Mikrocode und µOps sind zwei Dinge: Am Beispiel des PII: Dieser besitzt drei Dekoder die x86-Befehle direkt in µOps übersetzen. Zwei dieser Dekoder übersetzen einen x86-Befehl in eine µOp. Der dritte übersetzt einen komplexeren x86-Befehl in vier µOps. Es gibt aber auch x86-Befehle die wesentlich mehr als vier µOps benötigen. Und genau hier kommt der Mikrocode zum Einsatz. Die komplexen x86-Befehle werden an den Microcode Instruction Sequencer weitergeleitet der diese Befehle in µOps umsetzt. Mit dem Mikrocode kann man also "nur" die Umsetzung kmplexer Befehle in µOps beeinflussen. Matthias
Das ist richtig, aber trotzdem hat der Mikroprozessor dazu ein ROM. Und letztlich sind die x86-Befehle "nur" eine höhere Programmiersprache, die der "Interpreter" umsetzt. Von daher hat Dieter schon recht, dass sich MCs und Prozzis sehr ähneln und sich schlecht anhand der Funktionseinheiten unterscheiden lassen. Es gibt ja auch etliche MCs, die kein Flash-ROM onboard haben und nur eine sehr beschränkte Ausstattung (kein A/D, nur Digitalports, ein Timer).
Ein Prozessor hat aber kein RAM mit dem es (richtig) arbeiten kann. Der Cache wird nur mit Daten gefüllt wenn vom "echten" RAM Daten kommen oder ins echte RAM Daten geschrieben werden. Ob die Daten überhaupt im Cache landen, entscheidet eine eigene Logik, darauf hat der Prozessor (aus Softwaresicht) keinen Einfluss. Eigentlich hat der Prozessor also keinen "direkten" Zugriff auf den Cache (also aus Programmsicht) sondern bekommt statt dem RAM Inhalt die Daten halt vom Cache wenn sie drin vorhanden sind. Der Cache ist für die CPU nur eine Durchreiche. Man merkt es auch daran, dass der Cache nicht linear adressierbar ist, in ihm könne Datenteile stehen, die im RAM Gigabyte-weit auseinander sind. Weiters kannst du einen Prozessor auch nicht per Assembler so programmieren dass er auf sein "ROM" (wie manche hier das Microcode-ROM bezeichnen) zugreifen kann. Der Microcode ist bloss die Softwareemulation für Hardware. Mit dem Vorteil, dass man sie *in Grenzen* ändern kann. Man kann mit einem neuen Microcode natürlich nicht alle Prozessorbugs beseitigen, nur die, die im Microcode sind :-) Ich hoffe, jetzt endgültig alle verwirrt zu haben.
Tja, und ich setze noch eins drauf: Etliche MCs haben auch kein RAM, siehe diverse ATtinys, die haben genau wie Prozzis nur Register... Und man kann selbstverständlich mit neuem Microcode auch Fehler beseitigen bzw. umgehen, die nicht im Microcode sind. Wird ja auch zuhauf gemacht. Also die Unterscheidung zwischen MC und Prozzi ist wohl nicht leicht ;)
Das Killerkriterium, um die beiden doch noch hablwegs unterscheiden zu können lautet : µController haben auf einem Chip vereint einen Prozessorkern, einen internen Bus, sowie Peripheriekomponenten. Dazu kommen können noch Programmspeicher, Datenspeicher, sowie beliebig viele komplexe Schnittstellen, Zeitgeber und andere höhere Ein-/Ausgabegeräte. Des weiteren kommen in Microcontrollern sehr umfangreiche Maßnahmen zur Energieeinsparung zum Einsatz, da diese meist mit limitierten Resourcen bezüglich Energiereserve oder Abwärmekpazität konfrontiert sind. Last but not least wird bei den Microcontrollern größter Wert auf zeitliche Vorhersagbarkeit des Ablaufs bzw. der Ergebnisse gelegt. Micorprozessoren besitzen einen Prozessorkern, möglicherweise einen internen Bus, sowie diverse Speicher- und Speicherzugriffseinheiten. Nicht integriert sind jedoch Schnittstellen zur direkten Kommunikation mit Peripheriegeräten. Bezüglich µOps, µInstructions und Macro-Ops, und wie sie alle heißen mögen, kann ich nur ein Buch empfehlen. (Microcontroller und Microprozessoren von U.Brinkschulte und T.Ungerer). Ihr habt oben so viele Konzepte und Techniken, sowie Microarchitektur und Architektur durcheinanderegewürfelt, dass keiner mehr durchblickt. Desweiteren möchte ich bezweifeln, dass hier jeder überhaupt das Rüstzeug hat, sich überhaupt hier über die modernste Technik in Prozessoren zu diskutieren (das dürfte erheblich Vorschädigung in Informatik und Elektrotechnik voraussetzen). Ich hoffe eine die Unterschiede etwas hervorgehoben zu haben. Ich habe das aus der zum Buch gleichnamigen Vorlesung an der Universität Karlsruhe. MfG, Khani
hmm,ja eine sehr knifflige Frage. Also meiner Ansicht nach liegt der Unterschied darin, da µController ein abgeschlossenes System darstellen. Also mit ALU, Speicher(in form einen EEProm, oder SRam,oder was auch immer) und Peripherie (also Ein und Ausgänge, A/D Wandler). Wie hald ein kompletter PC auch. So der µProzessor ist kein vollständiges System, denn er braucht externen Speicher, externe Peripherie um überhaupt mal zu funktionieren. Ich denke daran kann man die 2 Systeme am besten von einander unterscheiden.
Hi robi_N, 'goggel' mal nach : "Ein Mikrokontroller ist" "Ein Mikroprozessor ist" .....dann erhälst Du die Antwort. Gruss; Winfried
Tja, es gibt ja mittlerweile auch DSPs, die nach obigen Definitionen Mikrocontroller sind. Und wenn man aktuelle PC-Proz. anschaut, so haben diese auch diverse DSP-Funktionalitäten... Es gibt sogar komplette PCs on a chip. Als Fazit lässt sich wohl sagen, dass die Grenzen schwimmend sind und sich viele Prozessoren, Mikrocontroller und DSPs nicht mehr eindeutig nur einer Kategorie zuordnen lassen.
Für mich ist ein Mikrocontroller ein Baustein, der sich programmieren lässt und dann autonom funktionieren kann, also einen Single-Chip-Betrieb möglich macht. Ein Mikroprozessor benötigt als Programmspeicher externe Bauteile. Ich habe noch nie einen Mikroprozessor gesehen, der das auszuführende Programm direkt einprogrammiert hat. Ist vielleicht etwas zu einfach, aber sicher verständlich...
@m@u: Tja, demnach sind viele Mikrocontroller also in Wirklichkeit Mikroprozessoren... Ist also in der Tat zu einfach.
Ich staune nur, daß sonst so nüchterne und pragmatische Elektroniker hier zu emotional geführten philosophischen Diskussionen auflaufen. :-) Meine (zweckorientierte) Sicht der Dinge: Es kommt auf die konkrete Anwendung an. Wenn ich eine bestimmte Regelungs-/meßtechnische oder vergleichbare Aufgabe lösen will, suche ich mir einen Chip, der es mir erlaubt, mit minimaler Zusatzbeschaltung und ausreichender Rechenleistung dieses Problem zu lösen. Das wäre imho ein Microcontroller. Z.B. habe ich schon einen Z80 (kennt den noch jemand? ;-) als intelligente Türklingel gesehen, augestattet lediglich mit einem Eprom und etwas diskreter Beschaltung. Dabei wäre der Z80 eigentlich ein klassischer Microprozessor. Verwendet wurde er im Beispiel aber als Controller. Ein Microprozessor würde ich dann brauchen, wenn ich eine bestimmte Rechenleistung zur Lösung einer Aufgabe haben muß und den gewählten Chip dann mit der nötigen Peripherie ergänze, um diese Rechenleistung aus ihm herauszukitzlen und nutzbar zu machen. Beispiel: PC, mainframes Manche Chips sind von ihrem Entwurf her eher als Prozessor geeignet (hat schon mal jemand versucht, mit einem nackten Duron ein 2x16 LCD-Display anzusteuern?), andere eher als Controller. Es gibt auch Zwitter wie z.B. den 80C186, den man wie einen 8086 in einem PC betreiben kann, aber auch unter Nutzung der auf dem Chip vorhandenen Peripherie als Microcontroller verwenden kann. PS: Das elektor-Microcontroller-Handbuch definiert wie folgt: "Spezifisch an Microcontrollern ist, daß neben dem eigentlichen Prozessor noch eine Menge Peripherie auf einem Chip integriert ist, so daß mit wenig zusätzlicher Hardware ein eigenständiger Microcomputer entstehen kann."
was für ein kunde der threadsteller! durch die beantwortung der fragen im forum habe ich jetzt 6 jahre später ein paar gute antworten parat... man man man kunden gibts..
sind da in den letzten 6 Jahren keine neuen dazu gekommen? :-)
Egon, der den das interessierte hat vor über ""6 JAHREN" danach gefragt!
Das verdient die Auszeichnung "Rostiger Spaten mit Stern" ;) für das Ausgaben eines so alten Threads. Schönes Wochenende, Eric.
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.