Forum: Mikrocontroller und Digitale Elektronik Register, RAM und Addressraum


von Ana (ana2803)


Lesenswert?

Guten Tag!

Ich bin Anfängerin und lerne aktuell pogrammieren.

Nun kommen aktuell soviele neue Begriffe auf mich zu die mich total 
verwirren.
Meine erste Frage ist:
>Ein 32bit register kann doch nur eine 32 Bit Zahl speichern richtig ? Kann ich 
mir das dann vorstellen wie eine Tabelle mit einer Zeile und >zwei spalten? Wie 
kann ich mir das visuellisieren?
>Z.b
>Addresse | 0101 0000 1110 0001 1000 1111 0001 1111
>=> wäre das schon Ein register ??

Denn gibt es noch was anderes wo an den Seiten Addressen sind die in 4 
bytes zählen (32bit). Was bedeutet das? Sind das auch register oder was 
ist das? Weil ich dachte ein register kann nur eine 32 Bit Zahl 
speichern. In der Tabelle sind das aber mehrer speicheraddressen mit 
32bit einträgen.

Z.b
0xbffff0c0. 0x00002000
0xbffff0c4. 0x00030000
0xbffff0c8. 0x00000000
0xbffff0cc. 0x00000000
0xbffff0d0. 0x00000034
0xbffff0d4. 0x00000003
0xbffff0d8. 0x00000004 (32bit zahl ) etc

>Ist das abgebildete ein register oder ein addressraum oder was stellt das da ?

Ab und zu steht dann auch das die PC aktuell 8 Bit im addressraum 
speichern. Ich dachte aber wir sind schon bei 64 Bit?

Wie ihr seht bin ich ziemlich verwirrt .

Ich hoffe auf eine schnell Antwort :)

Lieben dank

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ana schrieb:
> Wie
> kann ich mir das visuellisieren?
>>Z.b
>>Addresse | 0101 0000 1110 0001 1000 1111 0001 1111
>>=> wäre das schon Ein register ??
Ja. Bloss hat ein Register eher keine Adresse, sondern eher einen Namen, 
also sowas wie EAX, oder r0..r31, je nach Lyrikbewusstsein des 
Prozessorerfinders.

> Denn gibt es noch was anderes wo an den Seiten Addressen sind die in 4
> bytes zählen (32bit). Was bedeutet das? Sind das auch register oder was
> ist das?
Sieht nach einem Auszug aus dem Speicher (RAM/ROM) aus. Da wird 
traditionell die Adresse in Bytes gezaehlt, d.h. immer 4 Bytes zusammen 
ergeben einen 32bit Wert. Daher die 4er Spruenge in den Adressen.
Wie breit der Speicher an den Prozessor/Chipsatz angebunden ist 
(32/64/xx-Bit) ist fuer die Prozessorinnereien wie Register etc. eher 
wurscht.

Gruss
WK

von Steve van de Grens (roehrmond)


Lesenswert?

Ana schrieb:
>Ein 32bit register kann doch nur eine 32 Bit Zahl speichern richtig?
> Kann ich mir das dann vorstellen wie eine Tabelle mit einer Zeile
> und zwei spalten? Wie kann ich mir das visuellisieren?

Ich stelle mir Register wie eine Reihe Schalter vor. Ein 8 Bit Register 
sind 8 Schalter nebeneinander. Ein 32 Bit Register sind wie 32 Schalter 
in einer Reihe.

Manchmal sind es auch Taster, das steht dann aber deutlich in deren 
Beschreibung.

Eher selten sind Register, die tatsächlich Zahlenwerte repräsentieren 
(z.B. Messwerte eines ADC). Da entspricht dann jedes Bit einer Ziffer 
der Zahl in binärer Schreibweise.

Ana schrieb:
> Denn gibt es noch was anderes wo an den Seiten Addressen
> sind die in 4 bytes zählen (32bit)

Mit Adressen gibt man an, welches Register oder welche Speicherzelle man 
ansprechen will.

> Ab und zu steht dann auch das die PC aktuell 8 Bit im addressraum
> speichern. Ich dachte aber wir sind schon bei 64 Bit?

Ja, aktuelle PC haben einen 64 Bit Adressraum, Davor waren 32 Bit und 20 
Bit üblich. Einen IBM kompatiblen PC mit weniger als 20 Bit Adressraum 
hat es nach meinem Kenntnisstand nie gegeben. Das war eher die Welt der 
kleinen Heimcomputer (C64 und ähnliche).

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Ana schrieb:

>>Ein 32bit register kann doch nur eine 32 Bit Zahl speichern richtig ?

Reicht das nicht?

> Kann ich
> mir das dann vorstellen wie eine Tabelle mit einer Zeile und >zwei
> spalten? Wie

Hä? Einfach 32 Bit nebeneinander

32 Bit (binär) = 8 Stellen hexadezimal

> kann ich mir das visuellisieren?
>>Z.b
>>Addresse | 0101 0000 1110 0001 1000 1111 0001 1111
>>=> wäre das schon Ein register ??

Das ist eine 32 Bit Binärzahl. Die kann im normalen Speicher stehen oder 
halt einem CPU-Register, siehe

https://www.mikrocontroller.net/articles/Speicher#Register

> Denn gibt es noch was anderes wo an den Seiten Addressen sind die in 4
> bytes zählen (32bit).

Wirr deiner Worte Sinn gar ist.

> Was bedeutet das? Sind das auch register oder was
> ist das? Weil ich dachte ein register kann nur eine 32 Bit Zahl
> speichern.

> In der Tabelle sind das aber mehrer speicheraddressen mit
> 32bit einträgen.

Welche Tabelle denn?

> Z.b
> 0xbffff0c0. 0x00002000
> 0xbffff0c4. 0x00030000
> 0xbffff0c8. 0x00000000
> 0xbffff0cc. 0x00000000
> 0xbffff0d0. 0x00000034
> 0xbffff0d4. 0x00000003
> 0xbffff0d8. 0x00000004 (32bit zahl ) etc

Das sieht nach einem Teil eines normalen Speichers aus. Erste Spalte die 
Adresse, 2. Spalte der Inhalt.

>>Ist das abgebildete ein register oder ein addressraum oder was stellt das da ?

Letzteres.

> Ab und zu steht dann auch das die PC aktuell 8 Bit im addressraum
> speichern. Ich dachte aber wir sind schon bei 64 Bit?

Normale PCs können pro Adresse im RAM 8 Bit speichern. Sie können aber 
auch mehr als 8 Bit mit einem mal speichern, seinen es 16, 32 oder gar 
64 Bit, die dann über mehrere Adressen im Speicher verteilt liegen.

Z.B.
Adresse   Inhalt
0x0010    0xAA
0x0011    0xBB
0x0012    0xCC
0x0013    0xDD
0x0014    0xEE
0x0015    0xFF
0x0016    0xAF
0x0017    0xFE

Ich kann 0xAA als 8 Bit auf Adresse 0x0010 speichern, aber auch 0xCCDD 
auf Adresse 0x0012 und 0x0013 oder auch 0xAABBCCDDEEFFAFFE auf Adresse 
0x0010.

Register in der CPU haben keine Adressen sondern Namen und werden auch 
direkt damit in Assembler angesprochen. In C und anderen Hochsprachen 
sieht man die nicht, dort gibt es nur Variablen. Der Compiler kümmert 
sich darum, daß die Daten (Variablen) die zwar im Normalfall im RAM 
liegen, zur Bearbeitung in die CPU-Register geladen und ggf. auch wieder 
gespeichert werden.

> Wie ihr seht bin ich ziemlich verwirrt .

In der Tat.

> Ich hoffe auf eine schnell Antwort :)

Ob du die auch so schnell verstehen wirst?

von Steve van de Grens (roehrmond)


Lesenswert?

Speicher sind eine große Ansammlung von "Schaltern", die nichts direkt 
steuern sondern einfach nur gesetzt und ausgelesen werden können. Jede 
Reihe Schalter hat eine Adresse, in der Regel sind diese fortlaufend 
durch nummeriert.

Es gibt Speicher mit unterschiedlicher Breite. Gängige Größen haben 1, 
4, 8, 32 oder 64 Bits pro Reihe/Adresse.

Beim PC verwischen die Grenzen zwischen der logischen Adressierung im 
Programm und der physikalischen Adressierung in der Hardware. Mein 
Laptop hat zwei RAM Riegel mit jeweils 32 Bit Breite. Man könnte meinen, 
dass ich somit pro Adresse nur wahlweise 32 oder 64 Bit speichern 
könnte.

Aber zwischen Programm und Hardware befindet sich ein Schaltkreis, der 
deutlich flexiblere Nutzung ermöglicht. Aus Sicht des Programms zeigt 
nämlich jede Adresse auf ein Byte (8 Bit), was folgendermaßen auf die 
RAM Riegel gemappt wird:
1
logische  logische
2
Adresse   Größe     Speicherplatz im 32 Bit RAM Riegel
3
4
0         1 Byte    erster  Riegel, erste Reihe, Bit 0-7
5
1         1 Byte    erster  Riegel, erste Reihe, Bit 8-15
6
2         1 Byte    erster  Riegel, erste Reihe, Bit 16-23
7
3         1 Byte    erster  Riegel, erste Reihe, Bit 17-31
8
4         1 Byte    zweiter Riegel, erste Reihe, Bit 0-7
9
5         1 Byte    zweiter Riegel, erste Reihe, Bit 8-15
10
6         1 Byte    zweiter Riegel, erste Reihe, Bit 16-23
11
7         1 Byte    zweiter Riegel, erste Reihe, Bit 17-31
12
13
8         1 Byte    erster  Riegel, zweite Reihe, Bit 0-7
14
9         1 Byte    erster  Riegel, zweite Reihe, Bit 8-15
15
10        1 Byte    erster  Riegel, zweite Reihe, Bit 16-23
16
11        1 Byte    erster  Riegel, zweite Reihe, Bit 17-31
17
12        1 Byte    zweiter Riegel, zweite Reihe, Bit 0-7
18
13        1 Byte    zweiter Riegel, zweite Reihe, Bit 8-15
19
14        1 Byte    zweiter Riegel, zweite Reihe, Bit 16-23
20
15        1 Byte    zweiter Riegel, zweite Reihe, Bit 17-31
21
22
usw.

Wenn ein Programm nur ein Byte ändern will, dann wird die ganze Reihe 
aus dem Riegel gelesen, dann 8 Bits verändert und dann wird die ganze 
Reihe zurück in den RAM Riegel geschrieben. Darum muss ich mir als 
Programmierer keine Gedanken machen, das passiert in der Hardware meines 
Laptops automatisch.

Ich kann den Laptop aber auch mit nur einem RAM Riegel betreiben, dann 
werden die logischen Adressen anders auf den RAM Riegel gemappt.

Die Zuordnung zwischen logischen und physikalischen Adressen lässt sich 
sehr flexibel konfigurieren. Mittlerweile wird da aus Sicherheitsgründen 
sogar ein Zufallsgenerator verwendet, damit schützenswerte Daten nicht 
an vorhersagbaren Stellen im RAM liegen.

Falk B. schrieb:
> Register in der CPU haben keine Adressen sondern Namen
> und werden auch direkt damit in Assembler angesprochen

Die Hardware arbeitet mit Adressen, nicht Namen. Der Compiler erzeugt 
Maschinencode mit Adressen.

Zu jedem Mikrocontroller gehört eine Textdatei, in der die Namen und 
Adressen der Register stehen. Ein Auszug aus einer solchen Datei:
1
#define PORTB _SFR_IO8(0x05)
2
#define PORTC _SFR_IO8(0x08)
3
#define PORTD _SFR_IO8(0x0B)

Im Programm-Quelltext benutzt man (in diesem Fall) die Namen PORTB, 
PORTC und PORTD. Der Compiler erzeugt daraus Maschinencode, welcher die 
Adressen 0x05, 0x08 und 0x0B enthält.

: Bearbeitet durch User
Beitrag #7550329 wurde vom Autor gelöscht.
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Zu den Grundlagen, siehe Zeropage des 6502 und die Data Becker Bücher 
dazu.

von Falk B. (falk)


Lesenswert?

Dieter D. schrieb:
> Zu den Grundlagen, siehe Zeropage des 6502 und die Data Becker Bücher
> dazu.

Jaja, ganz TOP aktuelle Informationen! ;-)

von Ana (ana2803)


Lesenswert?

Hallo,
Du hast mir gerade so schnell auf meine Nachricht geantworte 
(Entschuldige falls es doppelt kommt. Ich wollte dir eine Email 
schreiben aber da stand Fehlermeldung deshalb probiere ich es hier 
nochmal.)

Was der Unterschied zwischen einem Addressraum
und einem Register? Was ist überhaupt ein addressraum?
Register kann nur eine 32 Bit Zahl speichern und Addressräume mehrere ? 
Oder ist ein addressraum nur mit addressen?

Bei den Registern. Sagen wir mal EAX ( ein 32 Bit register).
Der hat dann dementsprechende keine Adddresse sondern nur diesen namen
und dort kann dann nur eine 32 Bit Zahl gespeichert werden, richtig ?
Wenn ich aber dann eine neue 33 Bit Zahl reinlade wird die alte
überschrieben (weil ich eben nur eine Speichern kann oder?)?

Wie kann ich mir den Arbeitsspeicher vorstellen? Hat der dann an der
Seite auch viele Addressen die in 4er Schritten gezählt werden oder wie
? Der Arbeitsspeicher ist ja dann kein Register weil der ja mehr als nur
eine 32 Bit Zahl speichern kann. Wie ist der dann aufgebaut ?

von Ana (ana2803)


Lesenswert?

Hallo,

Bedeutet das dann, dass eine 32bit Zahl in der RAM garnicht in "einer" 
Zeile steht sondern in 4 Zeilen mit jeweils 8 Bit?  Wenn ich dann ein 
Bit in der Zahl verändern will, hole ich dann die ganzen 4 Zeilen aus 
dem Speicher oder nur die betroffene ?
Wofür steht riegel?
Wie groß ist dann die RAM wenn sie pro 32bit zahl 4 Speicherplätze 
braucht

: Bearbeitet durch User
von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Wie wäre es bei so umfassenden und grundlegenden 
Anfänger-Allgemeinfragen mit dem Kauf und der Lektüre eines Fachbuches? 
Das hat sich als zielführender herausgestellt als sich mit schnell 
verfassten individualinterpretationen diverser Menschen mit zu viel 
Tagesfreizeit zu texten zu lassen. Foren, in der Regel englischsprachige 
können später bei ganz konkreten Fragestellungen hilfreich sein.

von Steve van de Grens (roehrmond)


Lesenswert?

Ana schrieb:
> Was der Unterschied zwischen einem Addressraum
> und einem Register? Was ist überhaupt ein addressraum?

Ein Register kannst du dir wie gesagt als Ansammlung von Schaltern 
vorstellen. Wenn der Prozessorkern in ein Register schreiben will, muss 
er angeben, welche Register genau. Dazu hat jedes Register eine 
eindeutige Adresse.

Der ganze Adressraum eines Prozessors umfasst alle Adressen, die er 
ansprechen kann. Die wird oft in kleinere Abschnitte unterteilt, z.B. 
ein Adressraum für Grafikspeicher, einer für Arbeitsspeicher und einer 
für I/O Register.

Deine Fragen sind sehr allgemein gehalten, ohne Bezug auf eine konkrete 
Hardware. Nimm zur Kenntnis, dass es viele Varianten der Ausprägung 
gibt, die sich teilweise erheblich voneinander unterscheiden.

> Register kann nur eine 32 Bit Zahl speichern und Addressräume mehrere ?

Ein Register besteht aus einer Reihe von Schaltern. Das müssen nicht 
zwingend 32 sein. Bei STM32 Mikrocontrollern haben viele Register nur 16 
Bits/Schalter und es gibt auch welche mit ganz "krummer" Anzahl von 
Schaltern wie 27.

> Sagen wir mal EAX ( ein 32 Bit register).
> Der hat dann dementsprechende keine Adddresse sondern nur diesen
> namen und dort kann dann nur eine 32 Bit Zahl gespeichert
> werden, richtig ?

Ja. Mir scheint, dass du dich primär mit PC beschäftigst. Du stellst 
deine Fragen allerdings in einem Forum für Mikrocontroller, das ist ein 
andere Liga.

> Wenn ich aber dann eine neue 33 Bit Zahl reinlade wird die alte
> überschrieben (weil ich eben nur eine Speichern kann oder?)?

Das ist schlicht unmöglich. Bei einer Reihe mit 32 Schaltern kann man 
nicht 33 einstellen.

Lass uns mal von Registern zum Arbeitsspeicher wechseln. Stelle dir den 
Arbeitsspeicher als Bücherregal vor, wo jedes Buch ein Bit sei. Bei 
einer 32 Bit Maschine kann jede Reihe 32 Bücher aufnehmen. Da kannst du 
wahlweise ein Buch rein stellen (1) oder eine Lücke lassen (0). Aber 33 
Bücher gehen einfach nicht in eine Reihe, die müsstest du auf zwei 
Reihen (zwei Adressen) verteilen.

> Wie kann ich mir den Arbeitsspeicher vorstellen? Hat der dann an der
> Seite auch viele Addressen die in 4er Schritten gezählt werden

Dazu habe dir bereits vorher viel geschrieben. Wie gesagt werden die 
Adressen von Speicherzellen normalerweise fortlaufen in 1er Schritten 
hoch gezählt. Aber die Hardware kann das ändern, so dass es aus Sicht 
der Software anders aussieht. Da bist du an dem Punkt, wo du dich auf 
eine ganz konkrete Hardware beziehen musst um konkrete Antworten zu 
bekommen.

> Der Arbeitsspeicher ist ja dann kein Register

Korrekt

> Wie ist der dann aufgebaut ?

Wie ein Bücherregal. Mit vielen adressierbaren Reihen, die jeweils eine 
bestimmte Anzahl von Bits haben.

Ana schrieb:
> Bedeutet das dann, dass eine 32bit Zahl in der RAM garnicht in "einer"
> Zeile steht sondern in 4 Zeilen mit jeweils 8 Bit?

Kommt auf den Speicher und das Memory Mapping an.

> Wenn ich dann ein  Bit in der Zahl verändern will, hole ich dann
> die ganzen 4 Zeilen aus dem Speicher oder nur die betroffene ?

Man holt immer mindestens eine ganze Reihe aus dem Speicher, auch wenn 
man nur an wenigen Bits davon interessiert ist.

> Wofür steht riegel?

Physikalischer Arbeitsspeicher, siehe Foto.

> Wie groß ist dann die RAM wenn sie pro 32bit zahl 4 Speicherplätze
> braucht

Der Satz ist Unsinn. Kann man so nicht beantworten.

: Bearbeitet durch User
Beitrag #7550387 wurde vom Autor gelöscht.
von Vax W. (Gast)


Lesenswert?

Es ist so oder so Trollerei, aber vielleicht eine Einfuehrung in 
Microprozessoren waere eine gute Wahl, z.B.
https://www.ch-r.de/et/nue-atmmk-mikroprozessoren.pdf

oder

https://homepages.thm.de/~hg6458/mpt-Dateien/MPT.pdf

Mit Antworten aus einem Forum wirst Du nicht gluecklich werden.

Und wenn es 32 bit sein muessen, natuerlich das vax architecture 
reference manual

http://bitsavers.trailing-edge.com/pdf/dec/vax/archSpec/EY-3459E-DP_VAX_Architecture_Reference_Manual_1987.pdf

Oder, im TAOCP Volume 1, findest Du alles: 
https://www-cs-faculty.stanford.edu/~knuth/taocp.html

Wenn man bedenken Tut, als ich den Computer-Quatsch angefangen hatte da 
gab es solche wundervollen Buecher nicht, Strukturiertes Programmieren 
war ganz neu (Algorithmen und Datenstrukturen).

von Steve van de Grens (roehrmond)


Angehängte Dateien:

Lesenswert?

>> Wofür steht riegel?
> Physikalischer Arbeitsspeicher, siehe Foto.

Upps, Foto vergessen. Hier ist es.

: Bearbeitet durch User
von Ana (ana2803)


Lesenswert?

Tut mir leid,
Aber ich bin einfach nur langsam was das angeht. Ich studiere aktuell 
aber bin sehr überfordert mit den ganzen Begriffen weil das in jedem 
Modul anders dargestellt wird etc

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ana schrieb:
> Wie ihr seht bin ich ziemlich verwirrt .
So ist das immer, wenn die entsprechenden Grundlagen fehlen. Das mit dem 
Fachbuch zu den Grundlagen der Prozessortechnik wurde schon erwähnt. 
Nimm irgendeines, das dir von Schreibstil liegt und arbeite es durch 
(nur Lesen alleine im Sinne von Durchblättern reicht nicht). Du wirst 
sehen, dass du dann diese Fragen nach dem Urschleim nicht mehr stellen 
musst.

> Ab und zu steht dann auch das die PC aktuell 8 Bit im addressraum
> speichern. Ich dachte aber wir sind schon bei 64 Bit?
Überleg mal, wie die Zahlen 8, 16, 32 und 64 miteinander in Beziehung 
stehen könnten.

von Falk B. (falk)


Lesenswert?

Ana schrieb:

> Was der Unterschied zwischen einem Addressraum
> und einem Register?

Ein Register ist ein kleiner Speicher der logisch und physisch in der 
CPU liegt, z.B. ein 32 Bit Register in einer 32 Bit CPU. Register werden 
in Assembler per Namen angesprochen, Z.B. r1, r2 etc.

Ein Adressraum sind sehr viele Speicher logisch und physisch außerhalb 
einer CPU, sei es im RAM, ROM, EPROM oder sonstwas. Adressräume werden 
per Adresse angesprochen, z.B. 0x1234

> Bei den Registern. Sagen wir mal EAX ( ein 32 Bit register).
> Der hat dann dementsprechende keine Adddresse sondern nur diesen namen
> und dort kann dann nur eine 32 Bit Zahl gespeichert werden, richtig ?

Ja

> Wenn ich aber dann eine neue 33 Bit Zahl reinlade wird die alte
> überschrieben (weil ich eben nur eine Speichern kann oder?)?

Ja logisch! Auf eine Zettel Kann ich pro Zeile auch nur eine Zahl 
schreiben. Wenn ich die ÜBERschreibe, ist die erste weg.

> Wie kann ich mir den Arbeitsspeicher vorstellen?

Sehr viele Speicherzellen. Sehr viele "Zettel".

> Hat der dann an der
> Seite auch viele Addressen die in 4er Schritten gezählt werden oder wie
> ?

Vergiss die 4er Schritte, das ist ein Detail, das für das 
Grundverständnis unwichtig ist.

>Der Arbeitsspeicher ist ja dann kein Register

Ja logisch, das sagt schon der Name.

> weil der ja mehr als nur
> eine 32 Bit Zahl speichern kann. Wie ist der dann aufgebaut ?

Aus sehr vielen Speicherzellen. Wie das im Detail passiert, ist für die 
Logik unwichtig. Es reicht zu wissen, daß die vielen Speicherzellen per 
Adresse angesprochen werden.

von Achim H. (pluto25)


Lesenswert?

Die 8Bit (ein Byte) sind eine Größenangabe mit der man rechnen kann/die 
Größe angibt.. Telweise wird auch bit genannt.
z.B. Ein 24C02 hat 2kbit = 256 Byte. Der kann 64 Werte von 32 bit breite 
aufnehmen. Der bekommt seine Daten der Reihe nach (bitweise).
Der Rigel (die entfernbare Speichermodulplatine) vom Steve bekommen 32 
bit gleichzeitig. Aber auch Ihre Größe wird in (Mega)Byte angegeben 
obwohl 4 Byte gleichzeitig geschrieben werden.
Intern benötigt jeder Speicher eine Zelle für jedes Bit. Auch das 
Register hat 32 einzelne Zellen die konstruktionsbedingt gleichzeitig 
angesprochen werden.
Der Übersicht halber werden die zu 4 Byte zusammen gefasst.
Eigentlich seltsam das man sich darauf geeinigt hat. Zur Darstellung 
wird das Byte ja in zwei 4 bit Gruppen geteilt um es dar zu stellen (2 
Hexziffern)
Nun wären 256 verschiedene Zeichen schwer zu lernen / dar zu stellen ;-)

von (prx) A. K. (prx)


Lesenswert?

Falk B. schrieb:
> Ein Register ist ein kleiner Speicher der logisch und physisch in der
> CPU liegt, z.B. ein 32 Bit Register in einer 32 Bit CPU. Register werden
> in Assembler per Namen angesprochen, Z.B. r1, r2 etc.

Logisch ja, physisch nur meistens. Da gab es historisch auch andere 
Varianten. Eine echte Gemeinsamkeit ist eigentlich nur die kurze 
Adressierung.

von Daniel A. (daniel-a)


Lesenswert?

CPUs können sehr vielfältig funktionieren. Ein paar Dinge, die die 
meisten tun, sind das Laden von Instruktionen, das Laden von Daten, das 
Senden von Daten, und das verarbeiten von Daten.

Beim Laden von Daten und/oder Instruktionen wird häufig ein Datenbus 
verwendet. Wenn es der Selbe ist, ist es ne Von Neumann Architektur. 
Wenn es 2 getrennte sind, ist es ne Harvard Architektur.

Die CPU gibt dann an, welche Adresse, ob gelesen oder gesendet werden 
soll, und falls gesendet wird, sendet es den Wert, sonst liest es den 
Wert der ihm gesendet wird. Der Wert, der zur CPU beim Lesen gesendet 
wird, kann von RAM, oder auch von einem anderen Gerät kommen. Genauso 
auch in die andere Richtung. So wurden früher oft Geräte über den 
Datenbus an CPUs angebunden, die dann wie Speicher angesprochen werden 
konnten, und alles was es dafür brauchte, war ein paar Kabel für 
Adresse, Wert, ob gesendet / empfangen wird, und etwas logik, welche 
Addressbereiche für welche Geräte sind.

Die CPU muss aber auch Daten verarbeiten. Man hat Hardware, die Daten 
manipuliert, z.B. zum Rechnen. Diese braucht Eingabewerte, und einen 
Ausgabewert. Oft gibt es was, was diese Ein und Ausgabewerte 
zwischenspeichert. Und oft gibt es Instruktionen zum laden von Daten, 
und zum Setzen dieser Zwischenspeicher. Diese Zwischenspeicher sind dann 
Register. Eine Instruktion könnte aber auch den Zustand von Pins 
abfragen oder Setzen, oder interne Zustände abfragen, das wären dann 
auch Register.
Register sind also Zustände oder Daten der CPU, auf die mittels 
Instruktionen direkt zugegriffen werden kann.

Heute ist aber alles oft viel komplizierter und abstrakter. Da gibt es 
CPU Caches, RAM und andere Peripherie sind getrennt, die Instruktionen 
wurden zu einem eigenen Bytecode der erst zum echten Maschinencode 
übersetzt wird (Microcode), es gibt virtuelle Addressen und Tabellen die 
versteckt zu den Physischen mappen, MMUs, Spekulative Ausführung, selbst 
Register haben mittlerweile manchmal manchmal ein eigenes 
Prozessorinternens Memory Management! Gott weiss was in den CPUs intern 
tatsächlich abgeht.

Das kann einem aber eigentlich alles Egal sein. Bei jeder CPU hat man 
idealerweise ein Datenblatt, wo drin steht, welche Instruktionen es 
gibt, auf welche Register man es anwenden kann, welche Register es gibt, 
wie viele Bits die gross sind, usw. Wie die CPU das dann tatsächlich 
umsetzt, weiss eh keiner mehr.

Und mit einem OS und High Level Programmiersprachen, sind dann auch die 
CPU Details relativ egal.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Ana schrieb:
> Tut mir leid,
> Aber ich bin einfach nur langsam was das angeht. Ich studiere aktuell
> aber bin sehr überfordert mit den ganzen Begriffen weil das in jedem
> Modul anders dargestellt wird etc

Leute… entweder das ist Trollerei, oder ich verstehe die Welt nicht 
mehr. Ich habe mir im Alter von zwölf Jahren Assembler mit nur einem 
einzigen Buch, von Data Becker beigebracht. Siehe Link. Was Bits und 
Bytes sind, ob aus 8,16, oder 32 Bits versteht man wenn man sich mit der 
Materie ausgiebig beschäftigt. Nicht beschäftigen möchte, sondern 
beschäftigt! Damals gabs weder Foren, noch Internet oder ähnliches. Mit 
13. hab ich‘s andern beigebracht. Und heute sind Studenten mit all den 
modernen Medien nicht in der Lage, sich ein paar Grundlagen anzueignen, 
die nun wirklich kein Hexenwerk sind? Wenn dem so ist, erscheint die 
Begrifflichkeit  von der „letzten Generation“ in einem ganz anderen 
-realerem- Licht. Allerdings nicht wegen dem Wetter.

https://www.pagetable.com/docs/Das%20Maschinensprache%20Buch%20zum%20Commodore%2064.pdf

von Falk B. (falk)


Lesenswert?

Thomas H. schrieb:
> Leute… entweder das ist Trollerei, oder ich verstehe die Welt nicht
> mehr.

Da ist wohl leider viel Wahres dran . . . 8-0

> 13. hab ich‘s andern beigebracht. Und heute sind Studenten mit all den
> modernen Medien nicht in der Lage, sich ein paar Grundlagen anzueignen,
> die nun wirklich kein Hexenwerk sind? Wenn dem so ist, erscheint die
> Begrifflichkeit  von der „letzten Generation“ in einem ganz anderen
> -realerem- Licht. Allerdings nicht wegen dem Wetter.

Der Dativ ist dem Genitiv sein Tod! ;-)

von Steve van de Grens (roehrmond)


Lesenswert?

Steve van de Grens schrieb:
> Ein Register kannst du dir wie gesagt als Ansammlung von Schaltern
> vorstellen. Wenn der Prozessorkern in ein Register schreiben will, muss
> er angeben, welche Register genau. Dazu hat jedes Register eine
> eindeutige Adresse.

Ich möchte dazu etwas ergänzen.

Als ich das schrieb hatte ich Mikrocontroller im Sinn, weil das hier ein 
Forum für Mikrocontroller ist. Nun hat Ana allerdings nach dem EAX 
Register, vermutlich von einem x86 Prozessor, gefragt.

Diese CPU Internen Register werden nicht wie RAM und I/O Register über 
Adressen angesprochen. Manche Befehle beziehen sich hart codiert auf ein 
bestimmtes CPU Register. Andere Befehle können auf mehrere Register 
angewendet werden. Im Maschinen-Befehl dienen dann ein paar Bits dazu, 
das gewünschte Register zu anzugeben.

Schau mal auf 
https://www-user.tu-chemnitz.de/~heha/hsn/chm/x86.chm/x86.htm Absatz 9.3 
für den ADD Befehl. Da sind drei Bits (REG) reserviert, um das zu 
addierende Register auszuwählen. Diese Bits würde ich allerdings nicht 
"Adresse" nennen.

Da du das studierst könnte der ganze Bereich 
http://www.c-jump.com/CIS77/CIS77syllabus.htm für dich hilfreich sein.

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?

Thomas H. schrieb:
> oder ich verstehe die Welt nicht mehr.

So wird das sein. Aus der Anfrage einer einzelnen phantasierst du dir 
gleich eine total marode Jugend zusammen.

von Ana (ana2803)


Lesenswert?

Ich find es echt unverschämt mich so zur schnecke zu machen. Das Forum 
ist dazu da fragen zu stellen. Sie sind nicht verpflichtet hier zu 
antworten. Ich bin dankbar für jede hilfreiche Antwort, ich bin eben 
nicht die hellste Kerze und deshalb setzte ich mich damit auseinander um 
es zu lernen.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Ana schrieb:
> Ich find es echt unverschämt mich so zur schnecke zu machen. Das Forum
> ist dazu da fragen zu stellen. Sie


Die Schnecke!

>ich bin eben nicht die hellste Kerze

Ok.

von Georg M. (g_m)


Lesenswert?

Thomas H. schrieb:
> Und heute sind Studenten

studierenden

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

H. H. schrieb:
> Thomas H. schrieb:
>> oder ich verstehe die Welt nicht mehr.
>
> So wird das sein. Aus der Anfrage einer einzelnen phantasierst du dir
> gleich eine total marode Jugend zusammen.

So ist es!

von Vax W. (Gast)


Lesenswert?

Deswegen benutze ein Buch ueber "Einfuehrung Microprozessoren" (die 
beiden Skripte waren fuer Anfaenger nicht so schlecht). Der TAOCP ist 
vielleicht etwas Mathelastig, aber was erwartet man bei Knuth?

 Beim Eintrag "Mikroprozessor" in der dt. Wikipedia findest Du bei unter 
Literatur ein paar Buecher die Du aus der Bibliothek bekommen koenntest 
(heute sind viele Buecher digitalisiert und Du kannst das Buch sofort am 
Schirm lesen. Ich musste immer ein bis zwei Wochen warten)

Wenn Du die Einfuehrung geschafft hast, findest Du richtige 
Informationen unter dem Stichwort "Computerarchitecture", z.b. 
Malvino/Brown, Digital Computer Electronics, McGraw-Hill, 1993.

Die Problematik der verschiedenen Begriffe pro Vorlesung wird bei jedem 
Fach auftreten. Es ist Deine Aufgabe als Student diesen 
Sachverhalt/Aufgabe zu lesen und verstehen.

Lass Dich von diesen banalen Problemen mit der Nomenklatur nicht 
abschrecken, in den meisten Faellen hilft es, wenn man den Begriff 
erstmal ignoriert. Verstehen kommt dann spaeter.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Georg M. schrieb:
> Thomas H. schrieb:
>> Und heute sind Studenten
>
> studierenden

Ich nutze ausschließlich die maskuline Form.

von H. H. (Gast)


Lesenswert?

Thomas H. schrieb:
> Georg M. schrieb:
>> Thomas H. schrieb:
>>> Und heute sind Studenten
>>
>> studierenden
>
> Ich nutze ausschließlich die maskuline Form.

Es gibt antipsychotische Medikamente.

von Falk B. (falk)


Lesenswert?

H. H. schrieb:
>> Ich nutze ausschließlich die maskuline Form.
>
> Es gibt antipsychotische Medikamente.

Und Männer mit Eiern, nicht nur im Fußball.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

H. H. schrieb:

> Es gibt antipsychotische Medikamente.

Sie kennen sich, sicher nicht ohne Grund damit aus.

von Achim H. (pluto25)


Lesenswert?

Ana schrieb:
> Ich find es echt unverschämt mich so zur schnecke zu machen.

Das ist hier leider normal und kommt meist von Leuten die es selber 
nicht verstehen. (oder die Frage erst gar nicht gelesen haben :-(
Ruhig weiter fragen.
Das einfachste kann total kompliziert werden wenn in den Grundlagen 
etwas verpasst/missverstanden wurde.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Falk B. schrieb:
> Jaja, ganz TOP aktuelle Informationen! ;-)

Tja, die Basis oder die Luecke zwischen moderner MCTechnik und 
Logikbausteine 74LSxxxx.

: Bearbeitet durch User
von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Achim H. schrieb:
> Ana schrieb:
>> Ich find es echt unverschämt mich so zur schnecke zu machen.
>
> Das ist hier leider normal und kommt meist von Leuten die es selber
> nicht verstehen. (oder die Frage erst gar nicht gelesen haben :-(
> Ruhig weiter fragen.

Oder einfach via PM anschreiben, ich biete gegen entsprechendes Honorar 
Nachhilfe an.

von Daniel A. (daniel-a)


Lesenswert?

Ana schrieb:
> Ich dachte aber wir sind schon bei 64 Bit?

Die meisten 64bit CPUs, die ich Kenne, erlauben nur die Nutzung von 48 
der 64 Bits für Adressen, manchmal auch von 56bit, aber nicht alle 
64bit. 32bit CPU, 64bit CPU, das sagt eh nicht viel aus.

von H. H. (Gast)


Lesenswert?

Thomas H. schrieb:
> Oder einfach via PM anschreiben, ich biete gegen entsprechendes Honorar
> Nachhilfe an.

Aber erst nach erfolgreicher Therapie!

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

H. H. schrieb:
> Thomas H. schrieb:
>> Oder einfach via PM anschreiben, ich biete gegen entsprechendes Honorar
>> Nachhilfe an.
>
> Aber erst nach erfolgreicher Therapie!

Sehen Sie sich einmal die Statistiken an. Die Mehrheit der Menschen, 
selbst in diesem Land, lehnt den Genderschwachsinn ab. Wenn Sie der 
Meinung sind, diese Menschen müssten alle therapiert werden, 
unterschreiben Sie quasi ihre eigene Therapiebedürftigkeit. Zudem währe 
die Verabreichung von Psychopharmaka für politisch unbequeme 
Zeitgenossen nicht nur ein ethisch nicht vertretbarer Off-Label Use von 
Medikamenten, sondern würde zudem auch noch gegen die Menschenrechte 
verstoßen. Gehören Sie in die Ecke, die so etwas befürworten würde?

von (prx) A. K. (prx)


Lesenswert?

Thomas H. schrieb:
> Genderschwachsinn

Es heisst sowieso schon das Register, irgendwelche Registrierenden 
sind folglich genauso unnötig wie dieser Aspekt in diesem Thread.

von H. H. (Gast)


Lesenswert?

Thomas H. schrieb:
> Gehören Sie in die Ecke, die so etwas befürworten würde?

Ich befürworte deine Therapie.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

H. H. schrieb:
> Thomas H. schrieb:
>> Gehören Sie in die Ecke, die so etwas befürworten würde?
>
> Ich befürworte deine Therapie.

Wen interessiert was hinz und kunz denkt…

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.