Forum: PC Hard- und Software CPU Erläuterung bzgl Adressen


von John M. (neo887)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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
von John M. (neo887)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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
von John M. (neo887)


Lesenswert?

Du hast mir wirklich weitergeholfen A.K.
Leider kann ich dir nicht mehr als mein Dank geben!
Vielen vielen Dank =)
LG John

von MCUA (Gast)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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
von MCUA (Gast)


Lesenswert?

"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).

von (prx) A. K. (prx)


Lesenswert?

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? ;-)

von Georg (Gast)


Lesenswert?

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

von uwe (Gast)


Lesenswert?


von (prx) A. K. (prx)


Lesenswert?

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