Wie kann RAM eine "Memory Map" enthalten, wenn RAM das Gesamtsystem nicht kennt?

3

Diese Frage betrifft mehr Hardware als Software. Grundsätzlich heißt es in diesem Artikel zu Memory Maps:

In der Informatik ist eine Speicherkarte eine Datenstruktur (die sich normalerweise im Speicher selbst befindet), die angibt, wie der Speicher angeordnet ist.

Quelle: http://en.wikipedia.org/wiki/Memory_map

Es gibt extreme Unklarheiten in Bezug auf diesen einleitenden Satz. Wie kann RAM zunächst wissen, wie Speicher für den Adressraum der CPU ausgelegt wird, wenn der Zweck des RAM vom System abhängt?

Zweitens kann der RAM geändert werden. Wenn sich die Daten im RAM befinden, sind alle RAM-Chips fest verdrahtet, um eine Struktur zu haben, die den Speicher beschreibt? Das macht keinen Sinn, weil der Umfang der CPU vage ist und noch weniger Sinn macht, wenn man den Umfang des RAM betrachtet (ein System kann zu jeder Zeit einen anderen Speicher haben, unterschiedliche Hardware, unterschiedliche Adressen, andere Architektur usw.).

Drittens behauptet der Artikel, dass die Speicherzuordnung für ein Betriebssystem an die Firmware übergeben wird. Dies ist nur dann sinnvoll, wenn der Arbeitsspeicher fest verdrahtet ist oder die Karte mit dem Adressraum der CPU synchron ist.

Grundsätzlich bin ich zu 100% ahnungslos und verliere mich dabei. Ich verstehe in keiner Weise, wie dies eindeutig Sinn macht. Der RAM kann keine Adressen für ein System zuordnen, wenn er die Systemstruktur nicht kennt.

Der Hochstapler
quelle
Erstens ist der Wikipedia-Artikel etwas vage (sie weisen auf den Mangel an guten Quellen hin). Ein bisschen mehr Forschung könnte Ihnen mehr Informationen geben. Zweitens ist es nicht wünschenswert, auf jedes Byte im RAM zuzugreifen, daher wird es "partitioniert" und über Adressen zugegriffen, die normalerweise 4 Byte oder 8 oder 16 oder 32 Byte lang sind (ich kann mich jedoch nicht an die Details erinnern).
Doktoro Reichard

Antworten:

4

In der Informatik ist eine Speicherkarte eine Datenstruktur (die sich normalerweise im Speicher selbst befindet), die angibt, wie der Speicher angeordnet ist.

Quelle: http://en.wikipedia.org/wiki/Memory_map

Es gibt extreme Unklarheiten in Bezug auf diesen einleitenden Satz. Wie kann RAM zunächst wissen, wie Speicher für den Adressraum der CPU ausgelegt wird, wenn der Zweck des RAM vom System abhängt?

Normalerweise wird die Speicherkarte selbst in einem nichtflüchtigen Speicher des Geräts gespeichert, der die Speicherkarte beim Systemstart in den Prozessor / die MMU lädt. Als Benutzer des Geräts können Sie die Speicherzuordnung selbst ändern , obwohl das Layout auf Systemen mit Betriebssystemen weniger relevant ist, da das Betriebssystem dann den Speicherzugriff steuern muss. Der DIY-Ansatz ist normalerweise nur in eingebetteten Systemen erforderlich, in denen Sie selbst RAM / ROM-ICs physisch an eine vorhandene Schaltung anschließen.

Übergang zu modernen Computersystemen ...

Zweitens kann der RAM geändert werden. Wenn sich die Daten im RAM befinden, sind alle RAM-Chips fest verdrahtet, um eine Struktur zu haben, die den Speicher beschreibt? Das macht keinen Sinn, weil der Umfang der CPU vage ist und noch weniger Sinn macht, wenn man den Umfang des RAM betrachtet (ein System kann zu jeder Zeit einen anderen Speicher haben, unterschiedliche Hardware, unterschiedliche Adressen, andere Architektur usw.).

Drittens behauptet der Artikel, dass die Speicherzuordnung für ein Betriebssystem an die Firmware übergeben wird. Dies ist nur dann sinnvoll, wenn der Arbeitsspeicher fest verdrahtet ist oder die Karte mit dem Adressraum der CPU synchron ist.

Genau - aus diesem Grund bietet RAM selbst SPD (Serial Presence Detection), damit das BIOS / UEFI feststellen kann, welcher RAM in Ihrem System vorhanden ist (und ob er sich seit dem letzten Start des Computers geändert hat!).

Darüber hinaus bieten x86-Speicherverwaltungseinheiten Unterstützung für virtuellen Speicher, der für die Verwendung mit Betriebssystemen entwickelt wurde. Die MMU selbst überbrückt das physikalisch festverdrahtete RAM-Layout (bei dem es sich nur um eine große Anzahl von Daten- / Adressleitungen handelt, die mit allen DIMMs auf der Hauptplatine verbunden sind), sodass diese von der CPU selbst abstrahiert werden (auch wenn sich MMU und CPU auf der Hauptplatine befinden) derselbe Würfel, es sind logischerweise zwei verschiedene "Einheiten").

Der RAM kann keine Adressen für ein System zuordnen, wenn er die Systemstruktur nicht kennt.

Sie haben Recht, der Arbeitsspeicher selbst kann nicht (weshalb sie SPD / XMP-Profile haben) - die CPU / MMU erkennt bei jedem Neustart des Computers, welche Ressourcen im System verfügbar sind. Darüber hinaus ist dieser Prozess von allem unter dem Betriebssystem weit entfernt, da die meisten Betriebssysteme jetzt virtuellen Speicher verwenden , wodurch das Konzept des Systemspeichers vollständig vom physischen RAM getrennt wird (die meisten Leute kennen dieses Konzept durch Paging , wo das Betriebssystem es ablegen kann Teil des Arbeitsspeichers eines Prozesses auf der Festplatte, um RAM für andere Anwendungen freizugeben).

Durchbruch
quelle
2

Der Artikel sagt

Während des Startvorgangs wird eine Speicherzuordnung von der Firmware übergeben, um einen Betriebssystemkern über das Speicherlayout zu informieren. Sie enthält die Informationen zur Größe des gesamten Speichers sowie zu reservierten Bereichen und enthält möglicherweise weitere Details zur Architektur.

Und dann heißt es

Das PC-BIOS bietet eine Reihe von Routinen, die vom Betriebssystem zum Abrufen des Speicherlayouts verwendet werden können. Einige der verfügbaren Routinen sind: BIOS Function: INT 0x15, AX=0xE801Dieser BIOS-Interrupt-Aufruf wird vom laufenden Betriebssystem verwendet, um die Speichergröße für 64 MB + -Konfigurationen zu ermitteln

Um dann deine erste Frage zu beantworten. Der Artikel erwähnt nichts von CPU-Adressraum, und es ist nicht einfach, diesen Begriff im Internet zu finden! cos CPUs haben einige Register (CPU-Speicherplätze), aber nicht wie ein großer Raum, der eine Karte oder eine Art Index benötigt, um Dinge zu finden! Und der Begriff CPU kommt in dem Artikel, mit dem Sie verlinkt haben, nicht einmal vor. In dem Artikel heißt es, dass RAM die Informationen von einer anderen Stelle im System und nicht vom RAM abruft. Es bezieht es aus dem BIOS (das BIOS verwendet CMOS-Speicher. Dies ist ein Speicher, der über eine Batterie verfügt, die es mit Strom versorgt. Er wird im BIOS-Setup manuell festgelegt. Einige Dinge werden jedoch automatisch gefunden.). Und möglicherweise hat die Speicherkarte einen flexiblen Aspekt und es werden neue Dinge geladen. Aber der RAM startet, ohne dass eine Speicherkarte eingefügt wird.

Das beantwortet Ihre zweite Frage.

Und in Ihrer dritten Frage, die Sie falsch verstanden haben, heißt es nicht, dass die Speicherkarte an die Firmware übergeben wird - NEIN !! Es heißt das Gegenteil In the boot process, a memory map is passed on from the firmware (die Firmware ist kein RAM, es gibt keine RAM-Firmware).

Das Grundprogramm des BIOS wäre Firmware. Es können jedoch Daten gespeichert werden, die geändert werden können.

Und als zusätzliche Anmerkung: Es gibt eine Funktion namens SPD .., die DDR RAM verwendet, um Daten auf Anfrage an das BIOS zu senden (wie in diesem ziemlich fortgeschrittenen Artikel erwähnt). Http://www.simmtester.com/page/news/showpubnews. asp? num = 153 SPD wird im BIOS erwähnt. Ich habe ein BIOS auf einem System konfiguriert, auf dem angegeben wurde, dass RAM-Details von SPD abgerufen werden, um sie manuell einzugeben. (damit man den RAM übertakten kann). Natürlich gibt es keine Memory Map. Es ist nur eine grundlegende Frage, wie schnell es laufen soll und welche anderen Dinge SPD bekommt, die in diesem Artikel erwähnt werden. Andere Dinge im BIOS sind manuell eingegebene Daten.

Und um die oder eine Memory Map anzusehen

Bildbeschreibung hier eingeben

barlop
quelle
0

Wirklich alte Apple II-Computer verfügten über mindestens 4 KB RAM und DIP-Schalter, die eingestellt werden mussten, wenn weitere hinzugefügt wurden. Während des Startvorgangs werden die Positionen der Schalter gelesen und die Speicherkarte entsprechend eingerichtet. Frühe IBM PC-Systeme hatten auch DIP-Schalter und mindestens 64 KB RAM. Die Speicherkarte listet auf, wo sich verschiedene Dinge wie der Inhalt des Displays, Festplattenpuffer usw. im Speicher befinden und welche Adressbereiche RAM haben.

Zumindest ein Teil der Speicherkarte ist also bekannt - ein Minimum an RAM an einem bekannten Ort. Ein Teil dieses Speichers wird zum Speichern der Speicherzuordnung und anderer Informationen verwendet, die vom Code verwendet werden, der den Rest erkennt und die vollständige Speicherzuordnung erstellt.

Moderne Systeme führen viel mehr Autokonfigurationen durch (keine DIP-Schalter mehr) und verwenden SPD-Chips auf RAM-Modulen, um Größe und Layout zu ermitteln. Die Grundlagen sind jedoch dieselben. Ein Minimum an Speicher muss sich an einem bekannten Ort befinden.

Brian
quelle
0

Es gibt hier definitiv einige Verwirrung, hauptsächlich aufgrund der Tatsache, dass der Artikel versucht, verschiedene, aber verwandte Dinge an einem Ort zu verpacken.

Es gibt zwei Haupttypen von "Speicherzuordnungen", die völlig verschiedene Dinge sind und denselben Namen verwenden.

  • Speicherlayout

    Was Sie in Bezug auf das BIOS und die Hardware sehen, sollte eigentlich eher als Speicherlayout bezeichnet werden. Dies ist ein Entwurf, wie Speicher angelegt und verwendet wird. In diesem Zusammenhang werden bestimmte Teile des Speichers zugewiesen, um für verschiedene Dinge verwendet zu werden.

    Diese Karte ist in der Hardware normalerweise nicht greifbar vorhanden, sondern eher ein Servietten- oder Whiteboard-Diagramm, das die Designer mithilfe von Arrays und Indizes in Hardware / Software umsetzen.

  • Speicherzuweisung

    Eine andere Verwendung des Begriffs Speicherzuordnung betrifft die Speicherzuordnung . In diesem Fall ist eine Speicherzuordnungszuordnung eine Liste, die der Speichermanager des Betriebssystems verwendet, um zu verfolgen, welche Teile des Speichers Programmen zugewiesen wurden und welche Teile des Speichers frei sind. Da verschiedene Programme unterschiedlich große Speicherbereiche in unbestimmten Mustern zuweisen und freigeben, wird der Speicher fragmentiert, genau wie bei einem Festplattenlaufwerk, wenn Dateien unterschiedlicher Größe erstellt und gelöscht werden.

    Da der Arbeitsspeicher fragmentiert wird, kann das Betriebssystem nicht einfach jedem Programm einen Teil des Arbeitsspeichers in der gewünschten Größe zur Verfügung stellen. Es wird freie Blöcke unterschiedlicher Größe geben, die von gebrauchten Blöcken umgeben sind. Um zu wissen, wie groß jeder freie Block ist, speichert der Speichermanager eine "Karte" des Speichers, die er als belegt oder frei markiert, wenn er Programmen Speicher zuweist oder freigibt. Diese Map ist wie eine Disk-Map (Abbildung 1), und Sie können sie sogar mit Tools wie VMMap (Abbildung 2) anzeigen . (Das in der Visualisierung verwendete Layout kann variieren. Bei den meisten Disk-Maps wird das Laufwerk beispielsweise zweidimensional dargestellt, während bei den meisten Memory-Tools der Speicher eindimensional dargestellt wird. Dies ist jedoch nur eine Entwurfsoption.)

    Diese Zuordnungszuordnung ist eine Literalzuordnung, die tatsächlich ein Array ist, das im Speicher gespeichert ist.

  • ( Speicherzuordnung )

    (Wenn es um das BIOS und Hardware kommt, gibt es auch den Begriff Gedächtnis- Mapping , die auf den Speicher - Mapping Teile von Hardware - Geräten bezieht sich , so dass Sie auf das Gerät lesen und schreiben kann durch einfaches Lesen und Schreiben auf Speicheradressen wie Sie würde auf den normalen Speicher zugreifen. Dies stellt jedoch eine noch andere Verwendung des Begriffs dar und trägt somit zur Verwirrung bei. In diesem Kontext bedeutet „Karte“ kein Layout , sondern eher eine mathematische Zuordnung, bei der eine Sache ist ein Analog / Alias ​​zu etwas anderem zugewiesen.)


Abbildung 1 : Vopts Disk-Map

Abbildung 2 : VMMap

Synetech
quelle
0

Schnelle Antwort: Der Arbeitsspeicher "weiß" nichts. Welche Strukturen auch immer im RAM gespeichert sind, um die Semantik anderer RAM-Inhalte zu bestimmen, sie werden vom Betriebssystem erstellt.

Jamie Hanrahan
quelle