Zum Inhalt springen
PS5PCEM
FunktioniertFirmware und HLE

Direkter Speicher, flexibler Speicher und Pools

Gastadressen sind echte Hostadressen. Direkter Speicher ist ein dünn belegter gemeinsamer physischer Pool, der in diesen Raum abgebildet wird, und MemoryPool setzt Reservierung, Commit und Batch-Operationen auf demselben Backing darauf.

Repository-Notizen bis 10. Oktober 2026

Die Gastadresse ist die Hostadresse

Gastcode für x86-64 läuft nativ und enthält absolute Adressen, daher kann PS5PCEM den Prozess nicht in eine beliebige Zuteilung verschieben. Das Speichermodul reserviert das Layout der Konsole, bevor irgendein Modul geladen wird. Das systemverwaltete Fenster beginnt bei 0x40000 und reicht bis knapp unter 32 GiB. Fenster für die Systemreservierung und für Geräte folgen. Das Benutzerfenster unter Windows und Linux reicht von 0x10_0000_0000 bis 0xFC_0000_0000, 944 GiB Adressraum. macOS beginnt dieses Fenster höher und erhält 560 GiB.

Diese Bereiche sind Reservierungen, kein zugesicherter RAM. Seiten werden in Einheiten von 16 KiB zugesichert, wenn eine Abbildung entsteht, und das Aufheben der Abbildung gibt sie frei, während die äußere Reservierung bleibt. Eine andere Zuteilung des Hosts kann sich die Gastadresse zwischen zwei Nutzungen nicht aneignen.

Direkter und flexibler Speicher

Direkter Speicher ist der Name des Gastes für physischen Videospeicher. Der Titel reserviert einen physischen Bereich und bildet ihn danach ab. Die beiden Schritte sind getrennt. Das Abbilden prüft, dass der gesamte physische Bereich reserviert war, übersetzt den Schutz von CPU und GPU und sichert entweder genau die feste Adresse zu oder sucht eine ausgerichtete Lücke. Derselbe physische Offset kann an mehreren virtuellen Adressen abgebildet sein, und diese Aliasse sind kohärent, weil sie ein gemeinsames, dünn belegtes Backing-Objekt teilen.

Eine feste Abbildung in einen Bereich, den der Titel bereits reserviert hat, sichert innerhalb der Reservierung zu. Die Reservierung zuerst freizugeben würde den Anspruch des Titels auf die Stücke aufgeben, die er noch nicht abgebildet hat. Physischer Speicher wird in der Form freigegeben, die der Titel verlangt; das kann ein Loch in der Mitte oder eine Spanne mehrerer Reservierungen sein. Flexibler Speicher nutzt dieselbe Adressraumtabelle, mit einem plattformüblichen Budget von 4 GiB, und durchsucht das systemverwaltete Fenster ab 0x02_0000_0000, bevor er auf das Benutzerfenster zurückfällt.

MemoryPool und der Windows-Commit

Die sechs MemoryPool-Exporte von libkernel reservieren eine virtuelle Arena, erweitern die physische Kapazität, sichern gemeinsames Backing zu und geben es frei, führen geordnete Batches aus und melden Blockstatistiken. Gespendete Blöcke lassen sich nicht als gewöhnlicher direkter Speicher abbilden und nicht freigeben, solange sie zugesichert sind. Commit, Decommit, Schutz- und Typänderung im Batch funktionieren. MOVE im Batch bleibt nicht unterstützt und liefert einen Fehler, statt so zu tun, als wären die Blöcke verschoben worden.

Unter Windows teilen sich ausgerichtete Sichten auf direkten Speicher Section-Views von 64 KiB. Temporäre Uploads, Rücklesen und Gastseiten von 16 KiB werden dadurch nicht jeweils zu einer eigenen, ständig wachsenden Commit-Last. Abfragen einer Reservierung nutzen den Virtual-Query-Datensatz des Gastes von 72 Byte und melden halboffene Bereiche mit den ursprünglichen Schutzbits.

Was umgesetzt ist

  • Feste Gastadressfenster, zugesichert in Seiten von 16 KiB und freigegeben, ohne die Reservierung aufzugeben.
  • Kohärente Aliasse eines physischen Offsets im direkten Speicher.
  • Flexibler Speicher mit dem Standardbudget von 4 GiB sowie feste, nicht überschreibende und teilweise Aufhebungen der Abbildung.
  • Reservierung, Erweiterung, Commit, Decommit, Statistiken und geordnete Batches von MemoryPool, außer MOVE.

Was noch fehlt

  • MOVE im Batch von MemoryPool ist ausdrücklich nicht unterstützt.
  • Das Freigeben eines Bereichs, den der Titel nicht besitzt, bleibt ein Fehler.
  • Die Reservierungen sind virtuell. Nur Seiten, die der Titel abbildet, verbrauchen Commit des Hosts.

Verwandte Mechanismen

Worum es auf diesen Seiten geht

Der Text folgt den Architektur-Notizen und den Berichten vom Oktober 2026 im PS5PCEM-Repository. Ein bestandener Einzeltest ist keine neue Bildrate und kein neuer Durchspielstand.

Alle Techniken