Wie viele Speicheradressen kann der RAM in meinem Computer aufnehmen?

Jun 18, 2025
Hardware

Eines Tages macht es Spaß, die Oberfläche des Computererlebnisses zu betrachten, und an anderen Tagen macht es Spaß, direkt in das Innenleben einzutauchen. Heute werfen wir einen Blick auf die Struktur des Computerspeichers und darauf, wie viel Material Sie in einen RAM-Stick packen können.

Die heutige Frage-Antwort-Sitzung wird uns mit freundlicher Genehmigung von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites.

Die Frage

Der SuperUser-Leser Johan Smohan setzt sich mit der Zusammenarbeit von Prozessortyp und Speichergröße auseinander, um eine Gesamtzahl von Adressen zu erhalten. Er schreibt:

Wie viele Speicheradressen können wir mit einem 32-Bit-Prozessor und 1 GB RAM erhalten und wie viele mit einem 64-Bit-Prozessor?

Ich denke, dass es so etwas ist:

1 GB RAM geteilt durch 32 Bit 4 Bit (?), Um die Anzahl der Speicheradressen zu erhalten?

Ich habe auf Wikipedia gelesen, dass 1 Speicheradresse 32 Bit breit oder 4 Oktette (1 Oktett = 8 Bit) ist, verglichen mit einem 64-Bit-Prozessor, bei dem 1 Speicheradresse oder 1 Ganzzahl 64 Bit breit oder 8 Oktette ist. Aber ich weiß auch nicht, ob ich es richtig verstanden habe.

Diese Art von Fragen kann einen neugierigen Geek nachts wach halten. Wie viele Adressen sind unter jedem der hypothetischen Systeme von Johan verfügbar?

Die Antwort

Der SuperUser-Mitarbeiter Gronostaj bietet einen Einblick in die Aufteilung und Nutzung des Arbeitsspeichers:

Kurze Antwort: Die Anzahl der verfügbaren Adressen entspricht der kleineren der folgenden:

  • Speichergröße in Bytes
  • Größte vorzeichenlose Ganzzahl, die im Maschinenwort der CPU gespeichert werden kann

Lange Antwort und Erklärung des oben Gesagten:

Der Speicher besteht aus Bytes (B). Jedes Byte besteht aus 8 Bits (b).

1 B = 8 b

1 GB RAM ist tatsächlich 1 GiB (Gibibyte, nicht Gigabyte). Der Unterschied ist:

1 GB  = 10^9 B = 1 000 000 000 B
1 GiB = 2^30 B = 1 073 741 824 B

Jedes Byte Speicher hat seine eigene Adresse, egal wie groß das CPU-Maschinenwort ist. Z.B. Die Intel 8086-CPU war 16-Bit und adressierte den Speicher in Bytes, ebenso wie moderne 32-Bit- und 64-Bit-CPUs. Dies ist die Ursache für das erste Limit. Sie können nicht mehr Adressen als Speicherbytes haben.

Die Speicheradresse ist nur eine Anzahl von Bytes, die die CPU vom Anfang des Speichers überspringen muss, um zu der gesuchten zu gelangen.

  • Um auf das erste Byte zuzugreifen, müssen 0 Bytes übersprungen werden. Die Adresse des ersten Bytes lautet also 0.
  • Um auf das zweite Byte zuzugreifen, muss 1 Byte übersprungen werden, daher lautet seine Adresse 1.
  • (und so weiter…)
  • Um auf das letzte Byte zuzugreifen, überspringt die CPU 1073741823 Bytes, daher lautet ihre Adresse 1073741823.

Jetzt müssen Sie wissen, was 32-Bit eigentlich bedeutet. Wie ich bereits erwähnt habe, hat es die Größe eines Maschinenworts.

Maschinenwort ist die Menge an Speicher, die die CPU zum Speichern von Zahlen verwendet (in RAM, Cache oder internen Registern). Die 32-Bit-CPU verwendet 32 ​​Bit (4 Byte), um Zahlen zu speichern. Speicheradressen sind ebenfalls Zahlen. Bei einer 32-Bit-CPU besteht die Speicheradresse aus 32 Bit.

Denken Sie jetzt darüber nach: Wenn Sie ein Bit haben, können Sie zwei Werte darauf speichern: 0 oder 1. Fügen Sie ein weiteres Bit hinzu und Sie haben vier Werte: 0, 1, 2, 3. Auf drei Bits können Sie acht Werte speichern : 0, 1, 2… 6, 7. Dies ist eigentlich ein Binärsystem und es funktioniert so:

Binäre Dezimalzahl
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

Es funktioniert genau wie die übliche Addition, aber die maximale Ziffer ist 1, nicht 9. Dezimal 0 ist 0000 , dann addierst du 1 und bekommst 0001 Fügen Sie noch einmal eine hinzu und Sie haben 0010 . Was hier passiert ist, ist wie mit einer Dezimalstelle 09 und Hinzufügen einer: Sie ändern 9 auf 0 und erhöhen die nächste Ziffer.

Aus dem obigen Beispiel können Sie ersehen, dass es immer einen Maximalwert gibt, den Sie in einer Zahl mit konstanter Anzahl von Bits behalten können. Wenn alle Bits 1 sind und Sie versuchen, den Wert um 1 zu erhöhen, werden alle Bits zu 0, wodurch der Wert gebrochen wird Nummer. Dies wird als Ganzzahlüberlauf bezeichnet und verursacht sowohl für Benutzer als auch für Entwickler viele unangenehme Probleme.

11111111 = 255
+ 1
-----------
  100000000 = 0 (9 Bits hier, also wird 1 getrimmt)
  • Für 1 Bit ist der größte Wert 1,
  • 2 Bits - 3,
  • 3 Bits - 7,
  • 4 Bits - 15

Die größtmögliche Anzahl ist immer 2 ^ N-1, wobei N die Anzahl der Bits ist. Wie ich bereits sagte, ist eine Speicheradresse eine Zahl und hat auch einen Maximalwert. Aus diesem Grund ist die Größe des Maschinenworts auch eine Begrenzung für die Anzahl der verfügbaren Speicheradressen. Manchmal kann Ihre CPU einfach keine Zahlen verarbeiten, die groß genug sind, um mehr Speicher zu adressieren.

Bei 32 Bit können Sie also Zahlen von 0 bis 2 ^ 32-1 halten, und das sind 4 294 967 295. Dies ist mehr als die größte Adresse in 1 GB RAM. In Ihrem speziellen Fall ist also die RAM-Größe der begrenzende Faktor.

Die RAM-Grenze für 32-Bit-CPU beträgt theoretisch 4 GB (2 ^ 32) und für 64-Bit-CPU 16 EB (Exabyte, 1 EB = 2 ^ 30 GB). Mit anderen Worten, eine 64-Bit-CPU könnte das gesamte Internet adressieren… 200-mal;) (geschätzt von Wolfram Alpha ).

In realen Betriebssystemen können 32-Bit-CPUs jedoch etwa 3 GiB RAM adressieren. Dies liegt an der internen Architektur des Betriebssystems. Einige Adressen sind für andere Zwecke reserviert. Sie können mehr darüber lesen 3 GB Barriere auf Wikipedia . Sie können diese Grenze mit aufheben Physische Adresserweiterung .

In Bezug auf die Speicheradressierung gibt es einige Dinge, die ich erwähnen sollte: virtueller Speicher , Segmentierung und Paging .

Virtueller Speicher

Wie @Daniel R Hicks in einer anderen Antwort hervorhob, verwenden Betriebssysteme virtuellen Speicher. Dies bedeutet, dass Anwendungen nicht mit realen Speicheradressen arbeiten, sondern mit solchen, die vom Betriebssystem bereitgestellt werden.

Mit dieser Technik kann das Betriebssystem einige Daten aus dem RAM in eine sogenannte Auslagerungsdatei (Windows) oder einen Swap (* NIX) verschieben. Die Festplatte ist nur wenige Größenordnungen langsamer als der Arbeitsspeicher, stellt jedoch kein ernstes Problem für Daten dar, auf die nur selten zugegriffen wird, und ermöglicht es dem Betriebssystem, Anwendungen mehr Arbeitsspeicher bereitzustellen, als Sie tatsächlich installiert haben.

Paging

Worüber wir bisher gesprochen haben, nennt man flaches Adressierungsschema.

Paging ist ein alternatives Adressierungsschema, mit dem Sie mehr Speicher adressieren können, als Sie normalerweise mit einem Maschinenwort im flachen Modell verwenden könnten.

Stellen Sie sich ein Buch mit 4 Buchstaben vor. Angenommen, auf jeder Seite befinden sich 1024 Nummern. Um eine Nummer zu adressieren, müssen Sie zwei Dinge wissen:

  • Die Anzahl der Seiten, auf denen dieses Wort gedruckt wird.
  • Welches Wort auf dieser Seite ist das, nach dem Sie suchen?

Genau so gehen moderne x86-CPUs mit Speicher um. Es ist in 4 KiB-Seiten (jeweils 1024 Maschinenwörter) unterteilt und diese Seiten haben Nummern. (Tatsächlich können Seiten auch 4 MiB groß oder 2 MiB groß sein PAE ). Wenn Sie die Speicherzelle adressieren möchten, benötigen Sie die Seitenzahl und die Adresse auf dieser Seite. Beachten Sie, dass auf jede Speicherzelle genau ein Zahlenpaar verweist, was bei der Segmentierung nicht der Fall ist.

Segmentierung

Nun, dieser ist dem Paging ziemlich ähnlich. Es wurde in Intel 8086 verwendet, um nur ein Beispiel zu nennen. Adressgruppen werden jetzt als Speichersegmente und nicht als Seiten bezeichnet. Der Unterschied besteht darin, dass sich Segmente überlappen können und sich häufig überlappen. Beispielsweise waren auf 8086 die meisten Speicherzellen aus 4096 verschiedenen Segmenten verfügbar.

Ein Beispiel:

Nehmen wir an, wir haben 8 Bytes Speicher, die alle Nullen enthalten, mit Ausnahme des 4. Bytes, das 255 entspricht.

Abbildung für Flat-Memory-Modell:

_____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

Illustration für ausgelagerten Speicher mit 4-Byte-Seiten:

SEITE0
 _____
| 0 |
| 0 |
| 0 | SEITE 1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

Abbildung für segmentierten Speicher mit um 1 verschobenen 4-Byte-Segmenten:

SEG 0
 _____ SEG 1
| 0 | _____ SEG 2
| 0 | | 0 | _____ SEG 3
| 0 | | 0 | | 0 | _____ SEG 4
| 255 | | 255 | | 255 | | 255 | _____ SEG 5
 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6
         ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7
                 ----- | 0 | | 0 | | 0 | | 0 | _____
                         ----- | 0 | | 0 | | 0 | | 0 |
                                 ----- ----- ----- -----

Wie Sie sehen können, kann das 4. Byte auf vier Arten adressiert werden: (Adressierung von 0)

  • Segment 0, offset 3
  • Segment 1, offset 2
  • Segment 2, offset 1
  • Segment 3, offset 0

Es ist immer dieselbe Speicherzelle.

In realen Implementierungen werden Segmente um mehr als 1 Byte verschoben (für 8086 waren es 16 Byte).

Was an der Segmentierung schlecht ist, ist, dass sie kompliziert ist (aber ich denke, das wissen Sie bereits;). Gut ist, dass Sie einige clevere Techniken verwenden können, um modulare Programme zu erstellen.

Sie können beispielsweise ein Modul in ein Segment laden, dann so tun, als wäre das Segment kleiner als es tatsächlich ist (gerade klein genug, um das Modul zu halten), dann das erste Segment auswählen, das sich nicht mit diesem pseudo-kleineren überlappt, und als nächstes laden Modul und so weiter. Grundsätzlich erhalten Sie auf diese Weise Seiten mit variabler Größe.


Haben Sie der Erklärung etwas hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie weitere Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Den vollständigen Diskussionsthread finden Sie hier .

.eintragsinhalt .Eintrittsfußzeile

How Many Memory Addresses Can We Get With A 32-bit Processor And 1gb Ram? (5 Solutions!!)

Memory Addresses, Computer Science Lecture | Sabaq.pk |

Q. 7.8: (a) How Many 32K * 8 RAM Chips Are Needed To Provide A Memory Capacity Of 256Kbytes? (b) How

How Computer Memory Works - Kanawat Senanan

Assembly Program - Obtaining Memory Addresses

What Is Virtual Memory? – Gary Explains

The Fetch-Execute Cycle: What's Your Computer Actually Doing?

256KB Memory Design Using 64KB Ram Blocks-Microprocessors Example

How Much RAM Do You ACTUALLY Need? (2020)

Registers And RAM: Crash Course Computer Science #6

Lesson 9.3 : Pointers Containing Memory Addresses Of Multi Byte Variables


Hardware - Die beliebtesten Artikel

So aktivieren Sie G-SYNC auf FreeSync-Monitoren: GID SYNC-kompatibel von NVIDIA erklärt

Hardware Jan 16, 2025

Beim CES 2019 NVIDIA gab bekannt, dass es endlich FreeSync unterstützt. Nun, irgendwie - was das Unternehmen tatsächlich angekündigt hat, war ein "G-SYNC-kompatibl..


Was sind die ARCore- und ARKit Augmented Reality-Frameworks?

Hardware Apr 11, 2025

UNCACHED INHALT ARCore und ARKit sind die jeweiligen Augmented Reality-Frameworks von Google und Apple, mit denen mehr AR-Apps auf ihre Plattformen gebr..


Die besten (und schlechtesten) PC-Teile zum Kauf Überholt

Hardware May 24, 2025

UNCACHED INHALT Ein Teil der Attraktivität der Montage Ihres eigenen Desktop-PCs besteht darin, im Vergleich zu denselben Teilen einer vorgefertigten Maschine viel Geld zu sparen..


So ändern Sie Ihr Apple Watch-Band (ohne eine Tonne auszugeben)

Hardware Nov 11, 2024

UNCACHED INHALT Es gibt eine sehr große Preisspanne für die Apple Watch, und viele dieser Variationen können auf Variationen im Bandstil zurückgeführt werden. Sie müssen App..


So verwandeln Sie einen alten PC in einen Home File Server

Hardware Jul 10, 2025

Haben Sie irgendwo einen alten Desktop-PC in einem Schrank? Verwenden Sie es durch Installation FreeNAS . FreeNAS ist ein kostenloses Open-Source-Betriebssystem, das ..


Ja, es ist in Ordnung, den Computer mit dem Netzschalter herunterzufahren

Hardware Jul 11, 2025

UNCACHED INHALT Viele Computerbenutzer wurden geschult, ihre PCs niemals durch Drücken des Netzschalters auf dem Gehäuse ihres Desktop-PCs auszuschalten. Früher verursachte die..


Gefahr: Warum Sie keine billigen Akkus von Drittanbietern für Laptops oder Smartphones kaufen sollten

Hardware Sep 22, 2025

UNCACHED INHALT Offizielle Ersatzbatterien können teuer sein. Unabhängig davon, ob Sie einen Laptop- oder Smartphone-Akku suchen, könnten Sie versucht sein, den billigen Weg zu..


Verbessern Sie Ihre Fotodrucke, indem Sie Ihren Drucker richtig vorbereiten

Hardware Dec 17, 2024

UNCACHED INHALT Unabhängig davon, ob Ihr Fotodrucker neu ist oder zwischen den Feiertagen Staub angesammelt hat, haben Sie wahrscheinlich einige frustrierende Momente damit verbr..


Kategorien