Wieso kann ein 1Bit System theoretisch 1Byte an Ram adressieren?

5 Antworten

Bei einer 32-Bit Hardware sind je 32 Leitungen im Bussystem vorhanden (meine ich bin mir aber nicht zu 100% sicher) welche je zwei Zustände, 1 oder 0, annehmen können.

Wenn man nun die Anzahl der Zustände nimmt, also 2, und diese Zahl mit der Anzahl der Leitungen, 32, potenziert, dann kommt man auf 4 GiB / 4,29 GB. Ja der Schritt in dem die Bits in Bytes umgerechnet werden fällt aus. Das liegt daran, dass 2^32 Speicherstellen mit je 1 Byte adressiert werden können.

Ich denke der Begriff Bit ist ein wenig irrefuehrend, der Schritt mit dem Umrechnen von Bit in Byte fällt weg da ja 2^32 Byte adressierbar sind. Wieso genau es jetzt 32-Bit und nicht 32-Byte heißt weiß ich auch nicht mehr so genau, da muesste ich dann mal googlen. :)

Liebe Grueße

Wieso kann ein 1Bit System theoretisch 1Byte an Ram adressieren?

nein das ist falsch. Mit einem Bit kann man genau 2 Speicherstellen adressieren.
Ich verwende hier bewusst nicht das Wort Byte, weil es gleichgültig ist, wie breit (wie viel Bit ) eine Speicherstelle hat. ( 8Bit = 1Byte, 16 Bit = 1Wort ... )

Eine Speicherstelle ist dann auf der Adresse 0, die andere auf der Adresse 1
Genau so viele Möglichkeiten ( 0 und 1 ) hat ein Bit.

in meiner 1. Antwort habe ich nur die Überschrift betrachtet und eine Erklärung versucht.

Im Rest der Frage geht es wirklich etwas durcheinander.
Bei der Adressierung eines RAM benötigt man parallele Adressleitungen.
Mit 8 Leitungen wurde man 2^8 = 256 Speicherstellen adressieren können.
Mit 16 Leitungen sind das 2^16 , bei 32 Leitungen 2^23 usw.

Ein 8Bit Mikroprozessor wie der Z80 oder i8080 hat aber bereits 16 Adressleitungen, hier beziehen sich die 8Bit auf die Breite des Datenbusses und der ist da nur 8 Bit breit. Mit jeder der 2^16 Adressen lassen sich dann aber nur 8 Bit gleichzeitig lesen bzw. schreiben.

Mit einem 16Bit-Prozessor der dann vielleicht auch nur 16 Adressleitungen aber 16 Datenleitungen hat kann man auch nur 2^16 Speicherstellen adressieren. Mit jedem Zugriff ließt oder schreibt man dann aber gleichzeitig 16 Bit (oder 2 zusammenhängende Byte).

Bei der Angabe der Größe eines Speichers wir man immer nur Byte (also 8Bit) finden, auch wenn man (siehe oben) immer nur 2Byte gleichzeitig lesen/schreiben kann. Das Trennen oder zusammensetzen für eine Speicherstelle muss dann durch ein Programm ausgeführt werden.

Bei 64Bit-Prozessoren sind das dann schon immer 8 zusammenhängende Byte.
Da viele Befehle für den Mikroprozessor auch Adressen enthalten, sind 8 oder 16 Bit für einen Befehl viel zu wenig. Man muss sie also irgendwie mühsam zusammensetzen. Das kostet Zeit. Deshalb ist es günstig wenn der gesamte Befehl mit nur einem Speicherzugriff gelesen werden kann.

Wie du am Schluss auf 32Bit = 32Byte kommst kann ich nicht nachvollziehen.

Wenn es 32 Adressleitungen sind sind das 2^32 Speicherstellen. Das können dann je nach Architektur  vielleicht 2^32 Byte aber auch 2^32 Worte = 2^32 x 2Byte sein ....

Wie du sagtest ist 1 Byte die kleinste addressierbare Einheit im Arbeitsspeicher.
Das Betriebssystem (unschöne Formulierung, besseres fällt mir nicht ein) nutzt als Adresse, um das richtige Byte im Arbeitsspeicher zu adressieren, ein 32 Bit (unsigned) Integer, hat also 2^32 = 4294967296 mögliche Bytes, die es im Arbeitsspeicher ansprechen kann.

(Man könnte das alles wahrscheinlich hier noch schöner formulieren, aber ich denke mal, der Inhalt wird daraus klar.)

Mit 32 Bit kann man zirka 4.000.000.000 Adressen ansprechen (2^32). Jede dieser Adressen ist 1 Byte groß (der kleinste adressierbare Bereichen). Daher sind 4.000.000.000 Adressen mal 1 Byte =4.000.000.000Byte (4GB).