Saltar al contenido
PS5PCEM
FuncionaFirmware y HLE

Memoria directa, memoria flexible y pools

Las direcciones del invitado son direcciones reales del anfitrión. La memoria directa es un pool físico compartido y disperso mapeado en ese espacio, y MemoryPool añade reserva, confirmación y operaciones por lotes sobre el mismo respaldo.

Notas del repositorio hasta el 10 de octubre de 2026

La dirección del invitado es la dirección del anfitrión

El código x86-64 del invitado se ejecuta de forma nativa y contiene direcciones absolutas, así que PS5PCEM no puede reubicar el proceso en una asignación arbitraria. El módulo de memoria reserva la disposición de la consola antes de cargar cualquier módulo. La ventana administrada por el sistema empieza en 0x40000 y llega hasta justo por debajo de 32 GiB. Después vienen las ventanas reservadas por el sistema y las de dispositivo. La ventana de usuario en Windows y Linux va de 0x10_0000_0000 a 0xFC_0000_0000, 944 GiB de espacio de direcciones. macOS empieza esa ventana más arriba y obtiene 560 GiB.

Esos rangos son reservas, no RAM confirmada. Las páginas se confirman en unidades de 16 KiB cuando se crea un mapeo, y desmapear anula su confirmación mientras la reserva exterior permanece. Otra asignación del anfitrión no puede robar la dirección del invitado entre usos.

Memoria directa y flexible

La memoria directa es el nombre que da el invitado a la memoria de vídeo física. El título reserva un rango físico y después lo mapea. Los dos pasos están separados. El mapeo comprueba que todo el rango físico estaba reservado, traduce la protección de CPU y de GPU, y o bien confirma la dirección fija exacta o busca un hueco alineado. El mismo desplazamiento físico puede mapearse en varias direcciones virtuales, y esos alias son coherentes porque comparten un único objeto de respaldo disperso.

Un mapa fijo sobre un rango que el título ya reservó se confirma dentro de la reserva. Liberar primero la reserva soltaría la reclamación del título sobre las piezas que todavía no ha mapeado. La memoria física se libera con la forma que pide el título, que puede ser un hueco en el medio o un tramo de varias reservas. La memoria flexible usa la misma tabla de espacio de direcciones, con un presupuesto predeterminado de la plataforma de 4 GiB, y busca en la ventana administrada por el sistema desde 0x02_0000_0000 antes de caer a la ventana de usuario.

MemoryPool y la confirmación en Windows

Las seis exportaciones MemoryPool de libkernel reservan una arena virtual, amplían la capacidad física, confirman y anulan la confirmación del respaldo compartido, ejecutan lotes ordenados e informan de estadísticas de bloque. Los bloques donados no pueden mapearse como memoria directa ordinaria ni liberarse mientras están confirmados. La confirmación, la anulación, la protección y los cambios de tipo por lotes funcionan. El MOVE por lotes sigue sin admitirse y devuelve un error en lugar de fingir que los bloques se movieron.

En Windows, las vistas alineadas de memoria directa comparten vistas de sección de 64 KiB. Por eso las subidas temporales, las lecturas de vuelta y las páginas invitadas de 16 KiB no se convierten cada una en su propio cargo de confirmación que crece sin parar. Las consultas de una reserva usan el registro de consulta virtual de 72 bytes del invitado e informan de rangos semiabiertos con los bits de protección originales.

Qué está implementado

  • Ventanas de direcciones fijas del invitado, confirmadas en páginas de 16 KiB y liberadas sin soltar la reserva.
  • Alias coherentes de un mismo desplazamiento físico de memoria directa.
  • Memoria flexible con el presupuesto predeterminado de 4 GiB y desmapeos fijos, sin sobrescritura y parciales.
  • Reserva, ampliación, confirmación, anulación de confirmación, estadísticas y lotes ordenados de MemoryPool, excepto MOVE.

Qué falta todavía

  • El MOVE por lotes de MemoryPool está explícitamente sin admitir.
  • Liberar un rango que el título no posee sigue siendo un error.
  • Las reservas son virtuales. Solo las páginas que mapea el título consumen confirmación del anfitrión.

Mecanismos relacionados

Qué describen estas páginas

El texto sigue las notas de arquitectura y los informes de octubre de 2026 del repositorio PS5PCEM. Un test concreto que pasa no es una tasa de fotogramas nueva ni una partida terminada nueva.

Todas las tecnologías