Hallo =) Ich lerne derzeit für meine kommenden Prüfungen und hänge an einer Aufgaben"stellung" fest, welche vorallem meine Vorstellungsgabe ausser Gefecht setzt :/ Bisher nahm ich an, ich wüsste ganz gut wie ich Speichervolumen, Adressraum usw. berechne. Immer auf Grundlage davon, dass ich 3 Dinge weiss: -m(CPU) Adressbus -n(CPU) Datenbus -n(Adr) kleinste Adressierbare Einheit Allerdings fehlt mir bei der Aufgabenstellung völlig der Bezug dazu. Ich weiß das in der CPU der Registerblock, die ALU ist, usw. Aber gut, ich zeig einfach mal die Aufgabenstellung: "Der CPU-Kern eines Mikrocontrollers besitzt einen linearen Adressraum, 32-Bit-breite Adressregister, einen 16-Bit-breiten Datenbus und eine 16-Bit-breite ALU. Die kleinste adressierbare Einheit ist 1 Byte. Auf dem Chip (on chip) wird ein lediglich 24-Bit-breiter Adressbus eingesetzt, für Speichererweiterungen werden sogar nur die unteren 19 Adressleitungen des Adressbusses und nur 8 Datenleitungen nach außen geführt (external, A18..A0,D7..D0)." 1.) Ich mein, was ist mit "Auf dem Chip" gemeint, die CPU oder der Mikrocontroller??? o_O Weiß nicht was man sich unter "Chip" vorstellen soll. In Definitionen heisst es z.B.: Mikroprozessor: CPU auf einem Chip, Speicher und Peripherie in seperaten Chips. Mikrocontroller: CPU, Speicher und Ein-Ausgabe-Peripherie auf einem Chip. Soll ich mir das jetzt aussuchen oder wie? o_O 2.) Oder was soll "16-Bit-breite ALU" heissen, der Datenbus oder der Adressbus der ALU?? 3.) Dann besitzt die CPU einen 16-Bit Datenbus, von dem aber nur 8 Datenleitungen nach aussen geführt werden, was hat das für einen Sinn?? 4.) Und werden nun 24 Adressleitungen nach aussen geführt oder nur die unteren 19 Adressleitungen?? Hab schon mein komplettes Script durchforstet, aber keine Hinweise bekommen auf meine Fragen. Wäre sehr dankbar wenn mir vllt jemand die eine oder andere Frage beantworten könnte =) MFG Neo887
John Müller schrieb: > Soll ich mir das jetzt aussuchen oder wie? o_O Ja. ;-) Im Ernst: Bei vielen Mikrocontrollern lässt sich trotz internem ROM und RAM auch extern noch zusätzlich Speicher anschliessen. Der Übergang von Mikrocontroller zu Mikroprozessor ist in der Realität ohnehin nicht in Stein gemeisselt. > 2.) Oder was soll "16-Bit-breite ALU" heissen, der Datenbus oder der > Adressbus der ALU?? Seit wann hat eine ALU einen Adressbus? Für Adressrechnungen hat man ab und zu auch mal einen separaten Adder, aber keine ALU. > 3.) Dann besitzt die CPU einen 16-Bit Datenbus, von dem aber nur 8 > Datenleitungen nach aussen geführt werden, was hat das für einen Sinn?? Muss eine mögliche externe Speicher- oder I/O-Erweiterung als Ergänzung zum internen Bestand unbedingt in voller Breite ausgeführt werden? > 4.) Und werden nun 24 Adressleitungen nach aussen geführt oder nur die > unteren 19 Adressleitungen?? Steht doch da.
:
Bearbeitet durch User
Vielen Dank A.K.! > Seit wann hat eine ALU einen Adressbus? Für Adressrechnungen hat man ab > und zu auch mal einen separaten Adder, aber keine ALU. Okay, das ärgert mich auch gerade. Hatte eine Skizze gemacht in der die ALU ein Daten/Adressbus hatte und hab mich so darauf gestützt, dass ich mir garkeine Gedanken mehr um die ALU selbst gemacht hab o_O War natürlich völliger Quatsch. Als Teil des Rechenwerks führt sie ja nur die eigentlichen Berechnungen durch. > Muss eine mögliche externe Speicher- oder I/O-Erweiterung als Ergänzung > zum internen Bestand unbedingt in voller Breite ausgeführt werden? Natürlich eine ironische Frage mit einem erwartetenden "Nein". Aber da fehlt mir wahrscheinlich die Vorstellung dazu. Oder ist es einfach so, dass alle Datenleitungen durchaus aus der CPU hinausführen auf den Mikrocontroller. Aber dieser eben nur 8 Datenleitungen aussen anbietet. Das selbe wahrscheinlich mit den Adressleitungen. Die CPU hat "m(CPU) Adressbus = 24", aber nur die unteren 19 kann man am Mikrocontroller abgreifen für zusätzlichen Speicher. Die anderen 6 werden dann wahrscheinlich intern verwendet, was dann das maximale Speichervolumen V(CPU) des Prozessors wäre (Adressraum des Chips MINUS dem externen Adressraum) Und mit dem Chip ist wohl die CPU gemeint. Ich glaub mich hatten die 32bit Adressregister der CPU verwirrt, in dem Bezug auf den 24bit Adressbus des "Chip". Mit Adressregister ist natürlich nicht der Adressbus gemeint -.- Leider konnt ich jetzt auf die schnelle auch nicht per Google herausfinden was der Adressregister eig tut, ausser das er in Verbindung mit den Daten- und Adressbus steht und für die Berechnung von Speicheradressen eines Operanden oder Befehls genutzt wird. Wahrscheinlich ist der Adressregister für die Aufgabe ehr uninteressant. Aber nochmals Vielen Dank für deine Antwort! =) Hoffe ich habs einigermaßen verstanden ^^ LG Neo887
John Müller schrieb: > Oder ist es einfach so, dass alle Datenleitungen durchaus aus der CPU > hinausführen auf den Mikrocontroller. Ja. > Aber dieser eben nur 8 Datenleitungen aussen anbietet. Ja. > Das selbe wahrscheinlich mit den Adressleitungen. Die CPU hat "m(CPU) > Adressbus = 24", aber nur die unteren 19 kann man am Mikrocontroller > abgreifen für zusätzlichen Speicher. Ja. Entsprechend vordekodiert, so dass nur Zugriffe in einem bestimmten xxxKB Bereich extern auftauchen. > was dann das maximale Speichervolumen > V(CPU) des Prozessors wäre (Adressraum des Chips MINUS dem externen > Adressraum) Das ergibt den internen Adressraum. Der Gesamtadressraum ist 2^24 Bytes. > Und mit dem Chip ist wohl die CPU gemeint. Nein. Chip = Die = Silizium-Plättchen. > Leider konnt ich jetzt auf die schnelle auch nicht per Google > herausfinden was der Adressregister eig tut, ausser das er in Verbindung > mit den Daten- und Adressbus steht und für die Berechnung von > Speicheradressen eines Operanden oder Befehls genutzt wird. Adressregister sind Register, die vorrangig der Adressierung des Speichers dienen. Kann Opcode-Bits einsparen, wenn man an Stelle von 8 Universalregistern 4 Datenregister und 4 Adressregister verwendet. Die im Opcode nur 2 statt 3 Bits benötigen, weil klar ist, dass der AND Befehl sich auf Datenregister bezieht, die Adressierung des Speichers aber Adressregister verwendet. Manche Architekturen trennen das auf (68000, M16C), viele besitzen jedoch einen homogenen Registersatz (MSP430, ARM).
:
Bearbeitet durch User
Du hast mir wirklich weitergeholfen A.K. Leider kann ich dir nicht mehr als mein Dank geben! Vielen vielen Dank =) LG John
>Die im Opcode nur 2 statt 3 Bits benötigen, Nur wegen eines Bits Ersparnis im OPcode wird das wohl keiner machen. Es kommt wohl daher, dass es urspr. (PDP..) wegen der Kosten getrennt war, und danach sug. erweitert wurde. Archit mit Univ.Registern sind neuer, flexibler und besser. (Ausnahme viell. DSPs) >Manche Architekturen trennen das auf (68000, M16C), Stimmt nur zur Hälfte. M16C-Nachfolger haben auch Univ.Register.
MCUA schrieb: > Nur wegen eines Bits Ersparnis im OPcode wird das wohl keiner machen. Dass die 8 Universalregister einer PDP-11 zu wenig waren, darüber war man sich ziemlich einig. Motorola 68000 und MSP430: Beiden Operanden eines mem-to-mem MOVE müssen zusammen mit ein paar Bits Opcode in 16 Bits passen. Da gibts dann entweder 4 Bits für Universalregister mit eingeschränkten Adressierungsarten wie bei MSP430 (und TI9900), oder 3 Bits mit Funktionstrennung für 2 Registersätze und umfangreiche Adressierungsarten wie bei 68000. Man hätte das auch anders halten können, indem das fixe 16-Bit Befehlsformat aufgehoben wird, aber dass bei 68000 die Bitkalkulation im Opcode eine Rolle spielte scheint mir sicher. > Stimmt nur zur Hälfte. M16C-Nachfolger haben auch Univ.Register. Ganz ohne Gegenrede gehts bei uns beiden wohl nicht, wie? Hab ich was von Nachfolgern geschrieben? Dass Renesas auch anders kann hatte ich nicht in Abrede gestellt. ;-) > Archit mit Univ.Registern sind neuer, flexibler und besser. Korrekt, ausser dass diese Idee nicht direkt neu ist. Nur geht es hier im Thread ausdrücklich um eine CPU mit separaten Adressregistern, die zudem breiter als die Datenregister sind (dazu hab ich auch einen Renesas im Angebot: M32C ;-). Das ist schlicht die Vorgabe.
:
Bearbeitet durch User
"Adressregister" ist eigentlich nicht eindeutig. Es können Universalregister damit gemeint sein (die im Gegensatz zu den übrigen (Data)Registern zusätzlich auch für Adress. benutzt werden können) oder eben Register die fast nur f. Adress. zuständig sind (wie bei 68k oder bei manchen DSPs).
MCUA schrieb: > Es können Universalregister damit gemeint sein (die im Gegensatz zu den > übrigen (Data)Registern zusätzlich auch für Adress. benutzt werden > können) Bist du mal bei Intel gewesen, so ungefähr vor 40 Jahren? ;-)
John Müller schrieb: > 3.) Dann besitzt die CPU einen 16-Bit Datenbus, von dem aber nur 8 > Datenleitungen nach aussen geführt werden, was hat das für einen Sinn?? Weniger Pins und Leitungen = Kostenersparnis. Das ändert nicht unbedingt was an der Speicherorganisation, weil die CPU durchaus in der Lage sein kann, ein 16bit-Wort in 2 Zyklen mit je 8bit einzulesen. Oft ist externer Speicher sowieso byteweise organisiert und A0 unterscheidet zwischen Hibyte und Lobyte eines 16bit-Wortes. Auch die Tatsache, dass man ein x8 Ram oder Rom verwenden kann ist eine Kostenersparnis. Für den Programmierer ist das völlig transparent und hat nur Einfluss auf die Ausführungszeit eines 16bit-Transfers. Bekanntestes Beispiel sind wohl 8086 und 8088. Georg
uwe schrieb: > Hört sich nach MC68008 an. Die Ähnlichkeit fällt auf. Der hat aber 20 Adressleitungen und ist kein Mikrocontroller.
:
Bearbeitet durch User
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.