ES3056552T3 - System and method for managing a memory hierarchy - Google Patents

System and method for managing a memory hierarchy

Info

Publication number
ES3056552T3
ES3056552T3 ES24153952T ES24153952T ES3056552T3 ES 3056552 T3 ES3056552 T3 ES 3056552T3 ES 24153952 T ES24153952 T ES 24153952T ES 24153952 T ES24153952 T ES 24153952T ES 3056552 T3 ES3056552 T3 ES 3056552T3
Authority
ES
Spain
Prior art keywords
page
memory
pages
group
time period
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES24153952T
Other languages
English (en)
Inventor
Pratap Subrahmanyam
Venkata Subhash Reddy Peddamallu
Isam Wadih Akkawi
Andreas Georg Nowatzyk
Rajesh Venkatasubramanian
Yijiang Yuan
Adarsh Seethanadi Nayak
Nishchay Dua
Sreekanth Setty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Application granted granted Critical
Publication of ES3056552T3 publication Critical patent/ES3056552T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Una jerarquía de memoria incluye una primera memoria y una segunda memoria que se encuentra en una posición inferior a la primera. Un método para gestionar la jerarquía de memoria incluye: observar, durante un primer periodo, los accesos a las páginas de la primera memoria; al determinar que no se accedió a ninguna página de un primer grupo de páginas durante dicho periodo, mover cada página de dicho grupo de la primera memoria a la segunda; y, al determinar que el número de páginas de otros grupos de páginas de la primera memoria, a las que se accedió durante el primer periodo, es inferior a un número umbral, mover cada página del otro grupo de páginas, a las que no se accedió durante el primer periodo, de la primera memoria a la segunda. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0002] Sistema y procedimiento de gestión de una jerarquía de memoria
[0003] Campo
[0004] La presente divulgación se relaciona con el campo de la gestión de memoria.
[0005] Antecedentes
[0006] La memoria en un sistema informático se implementa como varios niveles o pisos porque ninguna tecnología de memoria puede satisfacer por sí sola todos los requisitos de memoria del sistema informático. La memoria cercana al procesador suele ser pequeña pero de acceso relativamente rápido, mientras que la memoria más alejada del procesador es grande pero de acceso relativamente lento. Por ejemplo, la memoria principal de un sistema informático tiene tiempos de acceso de cientos de nanosegundos, pero una memoria más distante, tal como la memoria flash no volátil, tiene tiempos de acceso mucho más largos. Dado que la memoria más cercana al procesador es más pequeña, es importante optimizar su uso, colocando en ella los elementos más útiles (los que se utilizan con más frecuencia). Los sistemas informáticos gestionan la memoria principal con un sistema de paginación. En el sistema informático, la memoria se divide en bloques de tamaño fijo (denominados páginas o marcos de página), y varias tablas de páginas, dispuestas en una jerarquía, llevan la cuenta de las ubicaciones de las páginas en la memoria principal y sus accesos. En concreto, las tablas de páginas contienen entradas de tabla de páginas, cada una de las cuales tiene varios indicadores que describen el estado de la página correspondiente. Las banderas incluyen un bit sucio, un bit presente, un bit de acceso y un bit protegido contra escritura. Si una página a la que apuntan las tablas de páginas no está presente o protegida contra escritura, entonces se incurre en un fallo de página si y cuando el procesador intenta acceder a la página. El documento US 2021/049101 A1 describe la monitorización de una temperatura de datos de páginas de memoria almacenadas en una memoria caché, la determinación de que una primera página de memoria satisface un primer criterio de umbral perteneciente a la temperatura de datos y el envío de un comando de migración para iniciar una transferencia de la primera página de memoria desde la memoria caché a un componente de almacenamiento mapeado en memoria. El documento US 9,330,015 B2 describe la degradación temporal de mapeos a páginas grandes seleccionadas a mapeos a páginas pequeñas y el seguimiento de accesos a estas páginas pequeñas. Para cada página grande seleccionada, se determina un nivel de actividad basado en los accesos rastreados a las páginas pequeñas incluidas en la página grande.
[0007] Manejar los fallos de página es bastante caro, ya que tiene una sobrecarga tanto de hardware como de software. Además, los fallos de página tienen efectos secundarios, tales como la anulación de la precarga especulativa de páginas y la interrupción del canal del procesador. La interrupción de la canalización del procesador conlleva una pérdida de tiempo de ejecución, durante el cual la canalización se restablece al estado anterior al fallo de página. Del mismo modo, la migración de página requiere reasignar la página actualizando la entrada de la tabla de páginas de la página para que apunte a un nuevo número de página. Además, con estas técnicas, a menudo es necesario vaciar el amortiguador de traducción (AT) para que los cambios en el ETP sean efectivos y visibles para el procesador, lo que altera las cachés del procesador y el AT en el proceso.
[0008] Sumario
[0009] Una o más realizaciones emplean un dispositivo que está acoplado a un procesador para gestionar una jerarquía de memoria que incluye una primera memoria y una segunda memoria que está en una posición inferior en la jerarquía de memoria que la primera memoria. Un procedimiento de gestión de la jerarquía de memoria, un sistema informático y un medio legible por ordenador no transitorio de acuerdo con una realización, se exponen en las reivindicaciones independientes.
[0010] Otras realizaciones se exponen en las reivindicaciones dependientes.
[0011] Breve descripción de los dibujos
[0012] FIG.1 muestra un sistema informático representativo en el que pueden funcionar las realizaciones.
[0013] FIG.2 es un diagrama de bloques de un dispositivo CXL implementado en el sistema informático de la FIG.1.
[0014] FIG.3 es un diagrama conceptual que muestra cómo se degradan las páginas de acuerdo con las realizaciones. FIG.4 es un diagrama conceptual que muestra cómo se promocionan las páginas de acuerdo con las realizaciones. FIG.5 representa un flujo de operaciones de un hilo de escáner para escanear, crear y actualizar tablas de páginas, de acuerdo con realizaciones.
[0015] FIG.6 representa un flujo de operaciones de un observador para rastrear los accesos a las entradas de la tabla de páginas y degradar las páginas, de acuerdo con las realizaciones.
[0016] FIG.7 representa un flujo de operaciones de un hilo de filtrado caliente para determinar páginas calientes, de acuerdo con realizaciones.
[0017] FIG. 8 representa un flujo de operaciones de un promotor para determinar qué páginas degradadas promover, de acuerdo con realizaciones.
[0018] FIG.9 representa un flujo de operaciones de un hilo promotor para promocionar páginas, de acuerdo con realizaciones.
[0019] Descripción detallada
[0020] Se describen en el presente documento realizaciones para gestionar una jerarquía de memoria que incluye una primera memoria y una segunda memoria que está en una posición inferior en la jerarquía de memoria que la primera memoria. La primera memoria es una memoria de sistema para una unidad central de procesamiento (UCP). La segunda memoria proporciona un acceso más lento a la memoria que la primera, pero es más grande que ésta. Un ejemplo de la segunda memoria es la memoria no volátil, tal como la memoria flash. En las realizaciones, la segunda memoria es gestionada por un dispositivo que está configurado para observar los accesos a las páginas de la primera memoria durante un periodo de tiempo predefinido y mover un grupo de las páginas de la primera memoria a la segunda memoria si no hay acceso a ninguna página del grupo durante el periodo de tiempo. Para un grupo de páginas de la primera memoria donde ha habido acceso durante el periodo de tiempo, la UCP mueve las páginas no accedidas dentro del grupo a la segunda memoria si se determina que una página grande que contiene ambos grupos de páginas es una página grande "fría". Además, si el número de páginas de la página grande a las que se accede durante el periodo de tiempo es mayor que el número umbral de páginas, todas las páginas de la página grande se reensamblan en una región de memoria contigua de la primera memoria y se actualiza una entrada de la tabla de páginas para la página grande para que apunte a esta región de memoria contigua.
[0021] FIG.1 representa un sistema informático anfitrión 100 en el que pueden operar las realizaciones. Como se ilustra, el sistema informático anfitrión 100 soporta múltiples máquinas virtuales (MV) 118<1>-118<N>, que son un ejemplo de instancias informáticas virtuales que se ejecutan y comparten una plataforma de hardware 102 común. La plataforma de hardware 102 incluye componentes de hardware informáticos convencionales, tales como la memoria de acceso aleatorio (MAA) 106, una o más interfaces de red 108, el adaptador de bus de anfitrión (ABA) 110 y una o más unidades centrales de procesamiento (UCP) 104. Las UCPs 104 pueden incluir unidades de procesamiento con múltiples núcleos, y cada una de las UCPs 104 incluye una unidad de gestión de memoria (UGM) 104a que está configurada para realizar traducciones de direcciones lógicas a físicas utilizando tablas de páginas y para almacenar en caché traducciones recientes en un amortiguador de traducción (AT) 104b. En las realizaciones, la plataforma hardware 102 también incluye un dispositivo CXL 112 acoplado a las UCPs 104 a través de una interconexión coherente con la caché 114 que se ajusta al estándar CXL (Computer Express Link), una memoria volátil local (MAA local 107) para el dispositivo CXL 112, y una memoria no volátil local (NMV 116), tal como una memoria flash, para el dispositivo CXL 112.
[0022] Una capa de software de virtualización denominada en lo sucesivo hipervisor 111, se instala sobre la plataforma de hardware 102. El hipervisor 111 hace posible la instanciación y ejecución concurrente de una o más MVs 118<1>-118<N>. La interacción de una MV 118 con el hipervisor 111 se ve facilitada por los monitores de máquina virtual (MMV) 134<1>-134<N>. Cada MMV 134<1>-134<N>se asigna a una MV 118<1>-118<N>correspondiente y la supervisa. En una realización, el hipervisor 111 es un hipervisor de metal desnudo tal como VMware ESXi<®>, que está disponible en VMware, Inc. de Palo Alto, CA. En una realización alternativa, el hipervisor 111 se ejecuta sobre un sistema operativo anfitrión, que a su vez se ejecuta en la plataforma de hardware 102. En tal realización, el hipervisor 111 opera por encima de un nivel de abstracción proporcionado por el sistema operativo anfitrión.
[0023] Tras la instanciación, cada una de las máquinas virtuales 118<1>-118<N>encapsula una plataforma de hardware virtual 120 que se ejecuta bajo el control del hipervisor 111. La plataforma de hardware virtual 120 de la MV 118<1>, por ejemplo, incluye pero no se limita a tales dispositivos virtuales como una o más UCPs virtuales (vUCPs) 122<1>-122<N>, una memoria de acceso aleatorio virtual (vMAA) 124, un adaptador de interfaz de red virtual (vAIR) 126, y un ABA virtual 128. La plataforma de hardware virtual 120 admite la instalación de un sistema operativo invitado (SO invitado) 130, capaz de ejecutar aplicaciones 132. Ejemplos de SO huésped 130 incluyen cualquiera de los sistemas operativos bien conocidos, tales como el sistema operativo Microsoft Windows<®>, el sistema operativo Linux<®>, y similares.
[0024] FIG. 2 es un diagrama de bloques del dispositivo CXL 112 implementado en el sistema informático anfitrión 100. El dispositivo CXL 112 incluye la lógica CXL 152, un controlador de caché 154, un procesador 158, un observador 156, un promotor 160 y una interfaz de memoria no volátil (MNV IF) 174, cada uno de los cuales está acoplado a un bus 170. En una realización, el dispositivo CXL 112 se implementa como una matriz de puertas programable en campo (MPPC).
[0025] La lógica CXL 152 es un circuito lógico que implementa el estándar CXL, que define tres protocolos diferentes: CXL.io, CXL.cache y CXL.mem. CXL.io se basa en PCIe 5.0 con algunas mejoras y proporciona configuración, inicialización y gestión de enlaces, descubrimiento y enumeración de dispositivos, interrupciones, acceso directo a memoria (ADM) y acceso de E/S de registro mediante cargas/almacenamientos no coherentes. CXL.cache permite al dispositivo CXL 112 acceder coherentemente y almacenar en caché la MAA 106 en la caché CXL 164 (que incluye la memoria configurada en el dispositivo CXL 112 y también puede incluir parte de la MAA local 107) con una interfaz de solicitud/respuesta de baja latencia. CXL.mem permite a las UCPs 104 acceder de forma coherente a la memoria CXL, que puede ser MAA local 107, MNV 116, o MAA/MNV remota a la que se accede a través de la interfaz de red 108. El dispositivo CXL 112 almacena en caché parte de esta memoria CXL en la memoria caché CXL 166, que incluye memoria configurada en el dispositivo CXL 112 y también puede incluir parte de la MAA local 107.
[0027] El controlador de caché 154 es un circuito de control que controla el almacenamiento en caché de la memoria CXL en la memoria caché CXL 166. El observador 156 es un circuito lógico que está configurado para rastrear accesos a entradas de tabla de páginas (ETPs) y páginas de degradación. Las operaciones del observador 156 se describen a continuación junto con la FIG.6. El promotor 160 es un circuito lógico que está configurado para determinar cuál de las páginas degradadas debe promoverse de nuevo a la MAA 106. MNV I/F 174 es un circuito de interfaz a la MNV 116 que gestiona los accesos de lectura y escritura a la MNV 116.
[0029] FIG.3 es un diagrama conceptual que muestra cómo se degradan las páginas de acuerdo con las realizaciones. Antes de cualquier degradación de página, el hilo de escaneo 302, que es un proceso que se ejecuta en el hipervisor 111, escanea un lote de entradas de tabla de páginas de nivel 2 (L2) (representadas como L2 ETPs 306 en la FIG.3). Cada L2 ETP puede incluir punteros a (direcciones de memoria de) tablas de páginas de nivel 1 (L1) o un único puntero a una página grande (por ejemplo, una página de 2 MB). Para cada L2 ETP que apunta a una página grande, el hilo de escaneo 302 crea una nueva tabla de páginas L1 que apunta al conjunto de páginas (por ejemplo, páginas de 4 KB) que componen la página grande. Las nuevas tablas de páginas L1 creadas de este modo se muestran en la FIG.3 como nuevos L1 PT 304. Después de escanear, el hilo de escaneo 302 llena una cola (representada como cola L1_ETP 308 en la FIG.3) para su tratamiento por el observador 156. A continuación, en cada intervalo de sondeo, el subproceso de escaneo 302 examina la cola para determinar si el observador 156 ha procesado todos las ETP de una nueva tabla de páginas L1. Si es así, el hilo de escaneo 302 actualiza la entrada de la tabla de páginas L2 correspondiente a la nueva tabla de páginas L1 para que apunte a la nueva tabla de páginas L1.
[0031] El observador 310 procesa las ETP de L1 que se identifican en la cola 308 de L1_ETP mediante la lectura exclusiva de contenidos de las ETP de L1 en la caché 164 de CXL, y establece un intervalo de temporizador para cada tabla de páginas de L1 cuando se han procesado todos los ETP de esa tabla de páginas de L1. Alternativamente, se puede establecer un intervalo de temporizador para cada línea de caché que contenga un conjunto de ETPs L1 (por ejemplo, 16 ETPs L1). Para cada tabla de páginas L1, el observador 310 degrada aquellas páginas correspondientes a ETPs que permanecen en la caché CXL 164 al expirar el intervalo del temporizador, moviéndolas de la MAA 106 a la MNV 116. Además, el observador 310 rellena una cola (representada como cola de filtrado L1_ETP 312) para su procesamiento por el hilo de filtrado en caliente 314, que es otro proceso que se ejecuta en el hipervisor 111.
[0033] La cola de filtrado L1_ETP 312 contiene un mapa de bits para cada tabla de páginas L1 que indica qué líneas de caché, cada una de las cuales contiene un conjunto de L1 ETPs, han sido desalojadas de la caché CXL 164. El hilo de filtrado en caliente 314 examina esta cola para identificar las ETPs que han sido desalojadas y cuenta el número de bits de acceso establecidos en estas ETPs. Alternativamente, el hilo de filtrado en caliente 314 cuenta el número de bits de acceso en estas ETPs y restablece los bits de acceso para su posterior observación. Basándose en este número contado o número contado re-observado, el hilo de filtrado en caliente 314 o bien realiza un reensamblaje de todas las páginas pequeñas de la tabla de páginas L1 para convertirse en una página grande, o bien degrada todas las páginas no accedidas de la tabla de páginas L1 moviéndolas de la MAA 106 a la MNV 116.
[0035] FIG.4 es un diagrama conceptual que muestra cómo se promocionan las páginas de acuerdo con las realizaciones. El promotor 402 realiza sus operaciones en cada página almacenada en la memoria caché CXL 166. Cuando el promotor 402 determina que se accede a una página almacenada en memoria caché CXL 166 más de un número umbral de veces durante un intervalo de temporizador, el promotor 402 añade un número de página de la página a una cola de promoción 404. El hilo promotor 406 es un proceso que se ejecuta en el hipervisor 111 y que promueve cada página identificada en la cola de promoción moviendo la página desde la MNV 116 a la MAA 106.
[0037] FIG. 5 representa un flujo de operaciones del hilo escáner 302. En la etapa 502, el subproceso de exploración 302 escanea un lote de entradas de tabla de páginas L2 (L2 ETPs 306) en busca de punteros a (por ejemplo, direcciones de máquina de) tablas de páginas L1 existentes, cada una de las cuales incluye ETPs que apuntan a un conjunto de páginas pequeñas, o a una página grande (por ejemplo, una página de 2 MB). Para cada entrada de tabla de páginas L2 que apunte directamente a una página grande (por ejemplo, una página de 2 MB) en lugar de a una tabla de páginas L1, en la etapa 504, el subproceso de exploración 302 crea una tabla de páginas L1 para la entrada de tabla de páginas L2. Cada una de estas tablas de páginas L1 contiene ETPs que apuntan a un conjunto de páginas pequeñas (por ejemplo, páginas de 4 KB) que componen la página grande. Las tablas de páginas L1, existentes o de nueva creación, se utilizan para la traducción de páginas para permitir al observador 310 rastrear los accesos a páginas pequeñas que se realizan a través de las entradas de la tabla de páginas L2 escaneadas. En la etapa 506, el hilo de escaneo 302 añade entradas a una cola L1_ETP 308. Cada entrada añadida corresponde a un conjunto de ETPs de una de las tablas de páginas L1 existentes o nuevas, y contiene una dirección de máquina (DM) de la ETP inicial del conjunto, un mapa de bits que indica cuáles de las ETPs del conjunto son válidas, y espacio para que el observador 310 indique que el observador 310 ha leído la entrada y ha extraído el conjunto de ETPs correspondiente a la entrada en la caché CXL 164.
[0038] Para sincronizar las operaciones del subproceso de escáner 302 y el observador 310 con respecto a la cola L1_ETP 308, el subproceso de escáner 302 establece un intervalo de sondeo para examinar la cola L1_ETP 308 para determinar si el observador 310 ha terminado o no de extraer todos las ETP de una tabla de páginas L1 a la caché CXL 164. Así, en cada intervalo de sondeo (etapa 508, Sí), si el subproceso de escaneo 302 determina a partir de la cola L1_ETP 308 que el observador 310 ha terminado de extraer todos las ETP de una tabla de páginas L1 en la caché CXL 164, el subproceso de escaneo 302 en la etapa 512 actualiza la entrada de tabla de páginas L2 correspondiente de acuerdo con sea necesario (para apuntar a una nueva tabla de páginas L1 si se creó en la etapa 504) y vacía la AT para que pueda observarse cualquier nuevo acceso a las páginas de la tabla de páginas L1 (existentes o nuevas). En la etapa 514, si el subproceso de exploración 302 determina a partir de la cola de ETP L1 308 que no todas las ETP de la cola de ETP L1308 se han extraído a la caché CXL 164 (etapa 514, Sí), el subproceso de exploración 302 vuelve al etapa 508 para el siguiente intervalo de sondeo. Si todos las ETPs de la cola L1_ETP 308 han sido arrastradas a la caché CXL 164 (etapa 514, No), la hebra de escaneo 302 espera un breve tiempo en la etapa 516 y a continuación reanuda las operaciones de la etapa 502.
[0040] FIG. 6 representa un flujo de operaciones del observador 310. El observador 310 rastrea los accesos a páginas pequeñas que se realizan a través de las entradas de la tabla de páginas L2 escaneadas por el subproceso de escaneo 302 y mueve las páginas pequeñas a las que no se accede durante un periodo de tiempo predefinido (denominado aquí periodo de "cocción") al espacio de direcciones de la MNV 116 (inicialmente a la memoria caché CXL 166 y posteriormente escritas de nuevo en la MNV 116). En la etapa 604, el observador 310 accede a la cola 308 de ETP L1 para recuperar ubicaciones de memoria de ETPs L1 y extrae (lee) las ETPs L1 en líneas de caché de la caché CXL 164. El tamaño de las líneas de caché de la caché CXL 164 puede ser cualquier tamaño típico de línea de caché, por ejemplo, 32, 64 y 128 bytes. Por lo tanto, una sola línea de caché de la caché CXL 164 es lo suficientemente grande como para almacenar múltiples ETPs L1, por ejemplo, 16 ETPs L1 si el tamaño de la línea de caché es de 64 bytes y cada ETP es de 4 bytes. El observador 310 también establece los bits en la cola 308 de ETP de L1 correspondientes a las ETP de L1 a medida que son arrastradas a la caché CXL 164, e inicia un temporizador, que se establece en el período de cocción, para cada tabla de páginas L1 cuando todas las ETP de la misma han sido arrastradas a la caché CXL 164. Luego, en la etapa 608, el observador 310 prepara un mapa de bits de línea de caché (LC) separado para cada una de las tablas de páginas L1. Cada bit de un mapa de bits LC representa un conjunto de L1 ETPs que han sido arrastradas a la línea de caché y es establecido por el observador 310 cuando una de las L1 ETPs es accedida, y la línea de caché que contiene el L1 ETP accedido es desalojada de la caché CXL 164. En la etapa 610, el observador 310 añade entradas a una cola de filtrado L1 ETP 312, que es utilizada por el hilo de filtrado en caliente 314. Cada entrada añadida contiene una dirección de máquina de una de las tablas de páginas L1 y el mapa de bits LC para la tabla de páginas L1, el mapa de bits LC indica las líneas de caché desalojadas de la caché CXL 164.
[0042] El observador 310 lleva a cabo las etapas restantes de la FIG.6 cada vez que expira un temporizador para una tabla de páginas L1 (o alternativamente, un temporizador para un conjunto de ETPs L1). Si el temporizador para una tabla de páginas L1 ha expirado (etapa 612, Sí), el observador 310 en la etapa 616 mueve todas las páginas de ETPs de dicha tabla de páginas L1 que permanecen en la caché CXL 164 (porque no fueron desalojadas de), de la MAA 106 a la MNV 116 (con la memoria caché CXL 166 funcionando como caché de la MNV 116). El proceso de traslado de cada una de estas páginas incluye las etapas de: (i) asignar una página en MNV 116; (ii) realizar una copia ADM de la página que reside en MAA 106 a la página que reside en MNV 116; y (iii) actualizar la ETP de la página para que apunte a la página que reside en MNV 116. Si, durante el proceso de mover las páginas, una línea de caché que contiene las ETPs es desalojada de la caché CXL 164, el observador 310 descarta la línea de caché y cualquier página de ETPs almacenada en la línea de caché desalojada que aún no haya sido movida, permanece en la MAA 106. Cuando los temporizadores de todas las tablas de páginas L1 han expirado (etapa 618, Sí), el observador 310 espera un corto tiempo en la etapa 620 y a continuación reanuda las operaciones en la etapa 604.
[0044] En la etapa 616, la actualización de la ETP de la página para que apunte a la página que reside en la MNV 116 se realiza atómicamente. La actualización atómica puede realizarse de varias maneras.
[0046] En primer lugar, el observador 310 puede estar configurado para soportar la actualización atómica, en particular una comparación e intercambio atómicos. Se realiza una operación de comparación e intercambio con el valor de comparación con el bit de acceso a 0. Si se accede a la página antes del intercambio, el bit A se activará y la comparación fallará, lo que significa que la dirección no se actualizará. La comprobación de que el bit de acceso es 0 cubre el caso de carrera, en el que se accede a la página y se desaloja la línea de caché, justo antes de la escritura para actualizar la ETP.
[0048] En segundo lugar, la lógica CXL 152 puede configurarse para soportar una escritura condicional que depende de que la línea de caché siga estando en la caché CXL 164. Este mecanismo no necesita tener el bit de acceso establecido por el observador 310. En su lugar, el observador 310 emitirá esta escritura condicional para actualizar la ETP.
[0049] En tercer lugar, el hardware y el software también pueden cooperar y realizar esta función sin necesidad de lógica especial, o bloqueos. Por ejemplo, en la arquitectura x86, como en la tabla de páginas extendida, el bit o bits de presente están en un byte separado como el bit de acceso, el hardware puede borrar el bit (o bits) de presente, con una escritura de byte, sin afectar a los otros bits. Tras el borrado, se comprueba si el bit de acceso sigue siendo 0, antes de actualizar la ETP con el bit o bits presentes habilitados. Si el anfitrión accede a la página antes de que se haya limpiado el bit actual, el bit de acceso será 1 y no se actualizará la dirección. Si el anfitrión accede a la página después de que el bit(s) presente(s) haya(n) sido borrado(s), se producirá un fallo de página, solicitando a un manejador de fallos de página que gestione el fallo de página.
[0051] En cuarto lugar, el hipervisor 111 realiza los remapeos. En este escenario, el dispositivo CXL 112 proporciona una lista de estados de línea de caché, con un 1 que indica qué línea de caché sigue presente en la caché CXL 164, y un 0 que indica qué línea de caché fue desalojada. Esta lista se utiliza junto con el bit de acceso para reasignar las páginas degradadas a la MNV 116.
[0053] En quinto lugar, son posibles varios enfoques híbridos en los que algunas de las reasignaciones son realizadas por el dispositivo CXL 112, y algunas son realizadas en el hipervisor 111. En estas situaciones, el dispositivo CXL 112 se encarga de las reasignaciones de las ETP en la granularidad de las líneas de caché que no fueron desalojadas, y el hipervisor 111 se encarga de las reasignaciones de as ETP individuales que están frías (no accedidas) dentro de las líneas de caché que fueron desalojadas.
[0055] FIG.7 representa un flujo de operaciones del subproceso de filtrado en caliente 314, que accede a la cola de filtrado L1_ETP 312 para determinar si las páginas de cualquier tabla de páginas L1 deben reensamblarse como una página grande y, en caso contrario, encontrar páginas adicionales para moverlas a una memoria más lenta, por ejemplo, de MAA 106 a MNV 116. Las operaciones de la FIG.7 se llevan a cabo para cada entrada de la cola de filtrado L1_ETP 312, que corresponde a una tabla de páginas L1 (etapa 702). En la etapa 704, el subproceso de filtrado en caliente 314 accede a las ETPs de la tabla de páginas L1 y cuenta el número de ETPs que tienen el bit A activado entre los ETPs accedidas. Si el número contado supera un número umbral (etapa 706, Sí), el subproceso de filtrado en caliente 314 en la etapa 708 vuelve a ensamblar las páginas de la tabla de páginas L1 en una página grande y actualiza la entrada de la tabla de páginas L2 para que apunte a la página grande. Por otro lado, si el número contado no excede un número umbral (etapa 706, No), el hilo de filtrado en caliente 314 en la etapa 712 mueve todas las páginas no accedidas de ETPs de la tabla de páginas L1 que estaban almacenadas en líneas de caché desalojadas de la MAA 106 a la MNV 116. El proceso de desplazamiento es el mismo que el descrito anteriormente para la etapa 616. Después de que cada entrada en la cola de filtros L1_ETP 312 se procesa de la manera anterior, el hilo de filtrado en caliente 314 espera un breve tiempo en la etapa 714 (por ejemplo, para que se añada una nueva entrada a la cola de filtros L1_ETP 312) y a continuación reanuda las operaciones en la etapa 702.
[0057] FIG.8 representa un flujo de operaciones del promotor 402. La tarea del promotor 402 es identificar aquellas páginas en la MNV 116 que pueden ser promovidas de vuelta a la MAA 106. Cada una de estas páginas se identifica mediante un número de página en el espacio de memoria CXL, en lo sucesivo denominado número de página CXL. Las operaciones de la FIG.8 se llevan a cabo para cada página que se introducen en la memoria caché CXL 166 (etapa 802). Una página que se introduce en la memoria caché CXL 166 puede ser de dos tipos. Las páginas que se introducen en la memoria caché CXL 166 cuando se almacenan en caché en la memoria caché CXL 166 en el proceso de moverlas a la MNV 116 en la etapa 616 y la etapa 712 descritos anteriormente, son de un primer tipo. Las páginas que se introducen en la memoria caché CXL 166 desde la MNV 116 como resultado de un acceso porque no están almacenadas en la memoria caché CXL 166 son de un segundo tipo. En la etapa 804, el promotor 402 establece un temporizador para la página. El período del temporizador puede ser diferente para el primer tipo de página y el segundo tipo de página para permitir flexibilidad. En una realización, el período del temporizador se establece para ser más corto para las páginas del primer tipo que para las páginas del segundo tipo, porque las páginas recientemente movidas desde la MAA 106 es probable que tengan un mayor grado de actividad, mientras que las que ya residen en la MNV 116 es probable que hayan estado inactivas durante un tiempo. En la etapa 808, el promotor 402 incrementa un recuento de acceso para la página cada vez que se accede a la página durante su período de temporizador. En algunas realizaciones, en lugar de almacenar un recuento de accesos para cada página, el promotor 402 utiliza una estructura Count-Min Sketch (CMS), que emplea una tabla a la que se accede mediante un hash del número de página para almacenar un recuento para la página. La estructura se consulta utilizando la función hash para recuperar el recuento de la página. Cuando se utiliza CMS, se necesitan menos ubicaciones para almacenar un recuento por cada página a la que se accede, pero el recuento almacenado es un recuento aproximado. Si, antes de que expire su temporizador, de acuerdo con se determina en la etapa 810, el recuento de accesos para la página supera un umbral de acceso (etapa 812, Sí), el número de página CXL de la página se añade a la cola de promoción 404 en la etapa 814. De forma similar al periodo del temporizador, el umbral de acceso puede establecerse de forma diferente para el primer tipo de página y el segundo tipo de página. Si el temporizador expira (etapa 810, Sí) antes de que el recuento de accesos de la página supere el umbral de acceso, la página se copia en la MNV 116 en la etapa 816 y se elimina de la memoria caché CXL 166 en la etapa 818. Cuando se procesan todas las páginas que se introducen en la memoria caché CXL 166, el promotor 402 espera un breve tiempo en la etapa 820 (por ejemplo, para que se inserte una página en la memoria caché CXL 166) y, a continuación, reanuda las operaciones en la etapa 802.
[0059] FIG.9 representa un flujo de operaciones del hilo promotor 406. La tarea del hilo promotor 406 es mover una página que reside en la MNV 116 de vuelta a la MAA 106. En la etapa 902, el hilo promotor 406 selecciona un lote de páginas residentes en la MNV 116 de la cola de promoción 404, para su promoción. A continuación, en la etapa 904, el hilo promotor 406 accede a un mapa posterior para localizar las ETP que apuntan a las páginas seleccionadas. El mapa trasero proporciona mapeados desde los números de página CXL de las páginas que residen en la MNV 116 a las direcciones de memoria de las ETPs que apuntan a ellas, y se actualiza cada vez que una página se mueve desde la MAA 106 a la MNV 116. En la etapa 906, el hilo promotor 406 asigna espacio de memoria en la MAA 106 para las páginas seleccionadas, actualiza las ETPs localizados en la etapa 904 con punteros al espacio de memoria asignado en la MAA 106, e invalida las ETPs porque el contenido de las páginas seleccionadas no ha sido copiado todavía. En la etapa 908, el AT es vaciado para que cualquier mapeo a las páginas seleccionadas que residen en la MNV 116 y que están en caché en el AT sean borradas. Luego, en la etapa 910, el hilo promotor 406 realiza una copia ADM del contenido de las páginas seleccionadas desde la MNV 116 al espacio de memoria asignado en la MAA 106, y valida los ETPs. Después de la etapa 910, el hilo promotor 406 espera un breve tiempo en la etapa 912 y a continuación reanuda las operaciones en la etapa 902 para un nuevo lote de páginas a promover.
[0060] Ciertas realizaciones como las descritas anteriormente implican una capa de abstracción de hardware sobre un ordenador anfitrión. La capa de abstracción de hardware permite que varios contextos compartan el recurso de hardware. Estos contextos están aislados unos de otros en una realización, cada uno con al menos un programa de aplicación de usuario que se ejecuta en el mismo. La capa de abstracción de hardware proporciona así ventajas de aislamiento y asignación de recursos entre los contextos. En las realizaciones anteriores, las máquinas virtuales se utilizan como ejemplo para los contextos y los hipervisores como ejemplo para la capa de abstracción de hardware. Como se ha descrito anteriormente, cada máquina virtual incluye un sistema operativo invitado en el que se ejecuta al menos un programa de aplicación. Cabe señalar que estas realizaciones también pueden aplicarse a otros ejemplos de contextos, tales como contenedores que no incluyen un sistema operativo invitado, denominados en el presente documento "contenedores sin SO" (véase, por ejemplo, www.docker.com). Los contenedores sin sistema operativo implementan la virtualización a nivel de sistema operativo, en la que se proporciona una capa de abstracción sobre el núcleo de un sistema operativo en un ordenador anfitrión. La capa de abstracción admite varios contenedores sin sistema operativo, cada uno de los cuales incluye un programa de aplicación y sus dependencias. Cada contenedor sin sistema operativo se ejecuta como un proceso aislado en el ritmo del usuario en el sistema operativo anfitrión y comparte el núcleo con otros contenedores. El contenedor sin sistema operativo se basa en la funcionalidad del núcleo para hacer uso del aislamiento de recursos (UCP, memoria, E/S de bloque, red, etc.) y espacios de nombres separados, así como para aislar completamente la visión del programa de aplicación de los entornos operativos. El uso de contenedores sin sistema operativo permite aislar recursos, restringir servicios y dotar a los procesos de una visión privada del sistema operativo con su propio espacio de ID de proceso, estructura de sistema de archivos e interfaces de red. Varios contenedores pueden compartir el mismo núcleo, pero cada contenedor puede limitarse a utilizar una cantidad definida de recursos, como UCP, memoria y E/S.
[0061] Ciertas realizaciones pueden implementarse en un ordenador anfitrión sin una capa de abstracción de hardware o un contenedor sin sistema operativo. Por ejemplo, ciertas realizaciones pueden implementarse en un ordenador anfitrión que ejecute un sistema operativo Linux<®>o Windows<®>.
[0062] Las varias realizaciones descritas en la presente memoria descriptiva pueden practicarse con otras configuraciones de sistemas informáticos, incluidos dispositivos portátiles, sistemas de microprocesador, sistemas electrónicos de consumo basados en microprocesador o programables, miniordenadores, ordenadores centrales y similares.
[0063] Una o más realizaciones de la presente invención pueden implementarse como uno o más programas de ordenador o como uno o más módulos de programa de ordenador incorporados en uno o más medios legibles por ordenador. El término soporte legible por ordenador hace referencia a cualquier dispositivo de almacenamiento de datos que pueda almacenar datos que posteriormente puedan introducirse en un sistema informático. Los soportes legibles por ordenador pueden basarse en cualquier tecnología existente o desarrollada posteriormente para incorporar programas informáticos de forma que puedan ser leídos por un ordenador. Ejemplos de un medio legible por ordenador incluyen un disco duro, almacenamiento conectado a la red (ACR), memoria de sólo lectura, memoria de acceso aleatorio (por ejemplo, un dispositivo de memoria flash), un CD (Disco Compacto) --CD-ROM, un CDR, o un CD-RW, un DVD (Disco Digital Versátil), una cinta magnética, y otros dispositivos de almacenamiento de datos ópticos y no ópticos. El medio legible por ordenador también puede distribuirse en un sistema informático acoplado a una red, de modo que el código legible por ordenador se almacene y ejecute de forma distribuida.
[0064] Aunque una o más realizaciones de la presente invención se han descrito con cierto detalle para mayor claridad de comprensión, será evidente que pueden realizarse ciertos cambios y modificaciones. Por consiguiente, las realizaciones descritas deben considerarse ilustrativas y no restrictivas, y pueden modificarse. En las reivindicaciones, los elementos y/o pasos no implican ningún orden particular de funcionamiento a menos que se indique explícitamente en las reivindicaciones.
[0065] Pueden proporcionarse instancias plurales para componentes, operaciones o estructuras descritas en el presente documento como una única instancia. Por último, los límites entre los distintos componentes, operaciones y almacenes de datos son un tanto arbitrarios, y las operaciones concretas se ilustran en el contexto de configuraciones ilustrativas específicas. Se prevén otras asignaciones de funcionalidad. En general, las estructuras y funcionalidades presentadas como componentes separados en configuraciones ejemplares pueden implementarse como una estructura o componente combinado. Del mismo modo, las estructuras y funcionalidades presentadas como un único componente pueden implementarse como componentes separados.

Claims (15)

1. REIVINDICACIONES
1. Un procedimiento para gestionar una jerarquía de memoria que incluye una primera memoria y una segunda memoria que está en una posición inferior en la jerarquía de memoria que la primera memoria, el procedimiento comprende:
observando, durante un primer período de tiempo, los accesos a las páginas de la primera memoria; determinar que no se ha accedido a ninguna página de un primer grupo de páginas de la primera memoria durante el primer periodo de tiempo;
en respuesta a la determinación de que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo, mover (616) cada página del primer grupo de páginas de la primera memoria a la segunda memoria;
generar (704) un recuento de páginas accedidas durante el primer periodo de tiempo en otros grupos de páginas de la primera memoria;
en respuesta a la determinación de que el recuento de páginas es menor (706:NO) que un número umbral de páginas, mover (712) cada página de un segundo grupo de páginas al que no se accedió durante el primer periodo de tiempo desde la primera memoria a la segunda memoria, en el que el segundo grupo de páginas es uno de los otros grupos de páginas e incluye al menos una página a la que no se accedió durante el primer periodo de tiempo y al menos una página a la que se accedió durante el primer periodo de tiempo;
antes del primer periodo de tiempo, almacenar las entradas de la tabla de páginas de un subconjunto de todas las páginas de la primera memoria en una caché, en la que el subconjunto incluye todas las páginas del primer grupo y de otros grupos y las entradas de la tabla de páginas de cada grupo de páginas se almacenan en una línea de caché correspondiente de la caché; y
desalojar de la caché una línea de caché que contiene las entradas de la tabla de páginas de un grupo de páginas si se accede a alguna de las páginas del grupo durante el primer periodo de tiempo, en el que
la etapa de determinar que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo incluye determinar que la línea de caché que contiene las entradas de la tabla de páginas del primer grupo de páginas permanece en la caché al final del primer periodo de tiempo.
2. El procedimiento de la reivindicación 1, en el que la etapa de generación del recuento de páginas incluye: examinar las entradas de la tabla de páginas que se almacenaron en las líneas de la caché que fueron desalojadas de la caché durante el primer período de tiempo; y
generar un recuento de las entradas de las tablas de páginas examinadas que tengan un bit de acceso activado.
3. El procedimiento de cualquiera de las reivindicaciones 1 a 2, en el que la etapa de mover (616, 712) una página de la primera memoria a la segunda memoria incluye:
copiar el contenido de la página desde una ubicación en la primera memoria a una ubicación en la segunda memoria; y
actualizar una entrada de la tabla de páginas de la página para que apunte a la ubicación en la segunda memoria.
4. El procedimiento de la reivindicación 3, que además comprende:
generar un recuento de accesos de una segunda página que reside en la segunda memoria; y
al determinar que el recuento de accesos es superior a un número umbral de accesos, mover la segunda página de la segunda memoria a la primera memoria.
5. El procedimiento de la reivindicación 4, que además comprende:
localizar una entrada de la tabla de páginas correspondiente a la segunda página; y
actualizar la entrada de la tabla de páginas para que apunte a una ubicación en la primera memoria a la que se movió la segunda página.
6. El procedimiento de cualquiera de las reivindicaciones 1 a 5, que comprende además: en respuesta a la determinación de que el recuento de páginas es mayor que el número umbral de páginas,
mover cada página del primer grupo de páginas de la segunda memoria a la primera memoria, y
actualizar una entrada de tabla de páginas que apunte a una tabla de páginas que contenga entradas de tabla de páginas del primer grupo de páginas y de los otros grupos de páginas para que apunte a una ubicación en la primera memoria que almacene una página grande que esté formada por el primer grupo de páginas y los otros grupos de páginas.
7. Un sistema informático (100) que comprende:
un procesador (104) y una primera memoria (106) para el procesador (104); y
un dispositivo (112) acoplado al procesador (104) y que incluye una memoria caché (164) y una segunda memoria (116),
en el que el dispositivo (112) está configurado para:
observar, durante un primer período de tiempo, los accesos a las páginas de la primera memoria (106); determinar que no se ha accedido a ninguna página de un primer grupo de páginas de la primera memoria (106) durante el primer periodo de tiempo; y
en respuesta a la determinación de que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo, mover cada página del primer grupo de páginas de la primera memoria (106) a la segunda memoria (116), y
en el que el procesador (104) está configurado para:
generar un recuento de páginas accedidas durante el primer periodo de tiempo en otros grupos de páginas de la primera memoria;
en respuesta a la determinación de que el recuento de páginas es inferior a un número umbral de páginas, mover cada página de un segundo grupo de páginas al que no se accedió durante el primer periodo de tiempo desde la primera memoria (106) a la segunda memoria (116), en el que el segundo grupo de páginas es uno de los otros grupos de páginas e incluye al menos una página a la que no se accedió durante el primer periodo de tiempo y al menos una página a la que se accedió durante el primer periodo de tiempo;
antes del primer período de tiempo, almacenar entradas de tabla de páginas de un subconjunto de todas las páginas de la primera memoria en la caché, en el que el subconjunto incluye todas las páginas del primer grupo y de otros grupos, y las entradas de tabla de páginas de cada grupo de páginas se almacenan en una línea de caché correspondiente de la caché;
desalojar de la caché una línea de caché que contenga las entradas de la tabla de páginas de un grupo de páginas si se accede a alguna de las páginas del grupo durante el primer periodo de tiempo, y
el dispositivo (112) determina que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo determinando que la línea de caché que contiene las entradas de la tabla de páginas del primer grupo de páginas permanece en la caché al final del primer periodo de tiempo.
8. El sistema informático (100) de la reivindicación 7, en el que el procesador (104) genera un recuento de páginas accedidas por:
examinar las entradas de la tabla de páginas que se almacenaron en las líneas de la caché que fueron desalojadas de la caché durante el primer período de tiempo; y
generar un recuento de las entradas de las tablas de páginas examinadas que tengan un bit de acceso activado.
9. El sistema informático (100) de cualquiera de las reivindicaciones 7 a 8, en el que
el dispositivo (112) mueve una página de la primera memoria (106) a la segunda memoria (116) mediante: copiar el contenido de la página desde una ubicación en la primera memoria (106) a una ubicación en la segunda memoria (116); y
actualizar una entrada de la tabla de páginas de la página para que apunte a la ubicación en la segunda memoria (116);
en particular
el dispositivo (112) está configurado además para generar un recuento de accesos de una segunda página que reside en la segunda memoria, y
el procesador (104) está configurado además para mover la segunda página de la segunda memoria (116) a la primera memoria (116) al determinar que el recuento de accesos es mayor que un número umbral de accesos;
en el que además en particular el procesador (104) está configurado además para:
localizar una entrada de la tabla de páginas correspondiente a la segunda página; y
actualizar la entrada de la tabla de páginas para que apunte a una ubicación en la primera memoria (106) a la que se movió la segunda página.
10. El sistema informático (100) de cualquiera de las reivindicaciones 7 a 9, en el que el procesador (104) está configurado además para: en respuesta a la determinación de que el recuento de páginas es mayor que el número umbral de páginas,
mover cada página del primer grupo de páginas de la segunda memoria a la primera memoria, y
actualizar una entrada de tabla de páginas que apunte a una tabla de páginas que contenga entradas de tabla de páginas del primer grupo de páginas y de los otros grupos de páginas para que apunte a una ubicación en la primera memoria que almacene una página grande que esté formada por el primer grupo de páginas y los otros grupos de páginas.
11. El sistema informático (100) de cualquiera de las reivindicaciones 7 a 10, en el que el dispositivo (112) está acoplado al procesador (104) a través de una interfaz de cola coherente (114).
12. Un medio legible por ordenador no transitorio que comprende instrucciones para llevar a cabo un procedimiento para gestionar una jerarquía de memoria que incluye una primera memoria y una segunda memoria que está en una posición inferior en la jerarquía de memoria que la primera memoria, comprendiendo el procedimiento: observando, durante un primer período de tiempo, los accesos a las páginas de la primera memoria; determinar que no se ha accedido a ninguna página de un primer grupo de páginas de la primera memoria durante el primer periodo de tiempo;
en respuesta a la determinación de que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo, mover cada página del primer grupo de páginas de la primera memoria a la segunda memoria;
generar un recuento de páginas a las que se ha accedido durante el primer periodo de tiempo en otros grupos de páginas de la primera memoria;
en respuesta a la determinación de que el recuento de páginas es inferior a un número umbral de páginas, mover cada página de un segundo grupo de páginas al que no se accedió durante el primer periodo de tiempo desde la primera memoria a la segunda memoria, en el que el segundo grupo de páginas es uno de los otros grupos de páginas e incluye al menos una página a la que no se accedió durante el primer periodo de tiempo y al menos una página a la que se accedió durante el primer periodo de tiempo;
antes del primer periodo de tiempo, almacenar las entradas de la tabla de páginas de un subconjunto de todas las páginas de la primera memoria en una caché, en la que el subconjunto incluye todas las páginas del primer grupo y de otros grupos y las entradas de la tabla de páginas de cada grupo de páginas se almacenan en una línea de caché correspondiente de la caché; y
desalojar de la caché una línea de caché que contiene las entradas de la tabla de páginas de un grupo de páginas si se accede a alguna de las páginas del grupo durante el primer periodo de tiempo, en el que la etapa de determinar que no se ha accedido a ninguna página del primer grupo de páginas durante el primer periodo de tiempo incluye determinar que la línea de caché que contiene las entradas de la tabla de páginas del primer grupo de páginas permanece en la caché al final del primer periodo de tiempo.
13. El medio no transitorio legible por ordenador de la reivindicación 12, en el que la etapa de generar el recuento de páginas incluye:
examinar las entradas de la tabla de páginas que se almacenaron en las líneas de la caché que fueron desalojadas de la caché durante el primer período de tiempo; y
generar un recuento de las entradas de las tablas de páginas examinadas que tengan un bit de acceso activado.
14. El medio no transitorio legible por ordenador de cualquiera de las reivindicaciones 12 a 13, en el que la etapa de mover una página de la primera memoria a la segunda memoria incluye:
copiar el contenido de la página desde una ubicación en la primera memoria a una ubicación en la segunda memoria; y
actualizar una entrada de la tabla de páginas de la página para que apunte a la ubicación en la segunda memoria.
15. El medio no transitorio legible por ordenador de la reivindicación 14, en el que el procedimiento comprende además: generar un recuento de accesos de una segunda página que reside en la segunda memoria; y
al determinar que el recuento de accesos es superior a un número umbral de accesos, mover la segunda página de la segunda memoria a la primera memoria.
ES24153952T 2023-01-26 2024-01-25 System and method for managing a memory hierarchy Active ES3056552T3 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US18/160,221 US20240256459A1 (en) 2023-01-26 2023-01-26 System and method for managing a memory hierarchy

Publications (1)

Publication Number Publication Date
ES3056552T3 true ES3056552T3 (en) 2026-02-23

Family

ID=89723046

Family Applications (1)

Application Number Title Priority Date Filing Date
ES24153952T Active ES3056552T3 (en) 2023-01-26 2024-01-25 System and method for managing a memory hierarchy

Country Status (3)

Country Link
US (1) US20240256459A1 (es)
EP (1) EP4407472B1 (es)
ES (1) ES3056552T3 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12505048B2 (en) * 2023-09-22 2025-12-23 Rambus Inc. Memory module with memory-ownership exchange

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195606B2 (en) * 2013-03-15 2015-11-24 Intel Corporation Dead block predictors for cooperative execution in the last level cache
TWI525635B (zh) * 2013-12-17 2016-03-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US9330015B2 (en) * 2014-06-11 2016-05-03 Vmware, Inc. Identification of low-activity large memory pages
US10108550B2 (en) * 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages
US11379373B2 (en) * 2019-08-13 2022-07-05 Micron Technology, Inc. Memory tiering using PCIe connected far memory
US12086446B2 (en) * 2019-10-21 2024-09-10 Intel Corporation Memory and storage pool interfaces
US12417121B2 (en) * 2021-10-29 2025-09-16 Intel Corporation Memory pool management

Also Published As

Publication number Publication date
EP4407472A1 (en) 2024-07-31
EP4407472B1 (en) 2025-09-17
US20240256459A1 (en) 2024-08-01

Similar Documents

Publication Publication Date Title
US10496547B1 (en) External disk cache for guest operating system in a virtualized environment
US7904692B2 (en) Iommu with translation request management and methods for managing translation requests
US8359449B2 (en) Prioritizing virtual real memory paging based on disk capabilities
US7702843B1 (en) Determining memory conditions in a virtual machine
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
Peleg et al. Utilizing the {IOMMU} scalably
US10248418B2 (en) Cleared memory indicator
KR102026877B1 (ko) 메모리 관리 유닛 및 그 동작 방법
US9928000B2 (en) Memory mapping for object-based storage devices
KR20060099404A (ko) 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
KR101355105B1 (ko) 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치
US10922137B2 (en) Dynamic thread mapping
US10846222B1 (en) Dirty data tracking in persistent memory systems
US12326809B2 (en) Dynamically allocatable physically addressed metadata storage
ES3056552T3 (en) System and method for managing a memory hierarchy
US10114759B2 (en) Trapless shadow page tables
US11074181B2 (en) Dirty data tracking in persistent memory systems
US9477613B2 (en) Position-based replacement policy for address synonym management in shared caches
US20190286573A1 (en) Suspending translation look-aside buffer purge execution in a multi-processor environment
US12105634B2 (en) Translation lookaside buffer entry allocation system and method
US20190065379A1 (en) Reducing translation latency within a memory management unit using external caching structures
US11163680B2 (en) Dynamic write-back to non-volatile memory
US11385926B2 (en) Application and system fast launch by virtual address area container
US20260010489A1 (en) Write-only swapping of memory pages in a computing environment
Caldwell FluidMem: Open source full memory disaggregation