MX2013001941A - Combinacion de memoria temporal de escritura con metricas de vaciado dinamicamente ajustables. - Google Patents

Combinacion de memoria temporal de escritura con metricas de vaciado dinamicamente ajustables.

Info

Publication number
MX2013001941A
MX2013001941A MX2013001941A MX2013001941A MX2013001941A MX 2013001941 A MX2013001941 A MX 2013001941A MX 2013001941 A MX2013001941 A MX 2013001941A MX 2013001941 A MX2013001941 A MX 2013001941A MX 2013001941 A MX2013001941 A MX 2013001941A
Authority
MX
Mexico
Prior art keywords
write
memory
temporary
control circuit
cache
Prior art date
Application number
MX2013001941A
Other languages
English (en)
Inventor
Brian P Lilly
Peter J Bannon
Andrew J Beaumont-Smith
Ramesh Gunna
Wei-Han Lien
Jaidev P Patwardhan
Shih-Chieh R Wen
Tse-Yu Yeh
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of MX2013001941A publication Critical patent/MX2013001941A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

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)
  • Memory System (AREA)

Abstract

En una modalidad, una combinación de memoria temporal de escritura se configura para mantener una o más métricas de vaciado para determinar cuándo se transmiten las operaciones de escritura desde las entradas de la memoria temporal. La combinación de la memoria temporal de escritura puede configurarse para modificar dinámicamente las métricas de vaciado en respuesta a la actividad en la memoria temporal de escritura, modificando las condiciones bajo las cuales las operaciones de escritura se transmiten desde la memoria temporal de escritura al siguiente nivel menor de memoria. Por ejemplo, en una implementación, las métricas de vaciado pueden incluir categorizar las entradas de la memoria temporal de escritura como "colapsadas". Una entrada de memoria temporal de escritura colapsada y las operaciones de escritura colapsadas en la misma, pueden incluir al menos una operación de escritura que tiene datos sobre escritos que se escribieron por una operación de escritura previa en la entrada de la memoria temporal. En otra implementación, la combinación de la memoria temporal de escritura puede mantener el inicio de la plenitud del vaciado como una métrica de vaciado y puede ajustarlo en el tiempo con base en la plenitud de vaciado real.

Description

COMBINACIÓN DE MEMORIA TEMPORAL DE ESCRITURA CON MÉTRICAS DE VACIADO DINÁMICAMENTE AJUSTABLES CAMPO DE LA INVENCIÓN Esta invención se refiere al campo de procesadores y más particularmente a la combinación de memoria temporal (buffers) de escritura en caches.
ANTECEDENTES DE LA INVENCIÓN Los procesadores comúnmente implementan combinaciones de memorias temporales de escritura para capturar las operaciones de escritura que se han escrito a un nivel mayor de escritura a través del caché (es decir, un caché L1 ) para la memoria temporal de aquellas escrituras antes de actualizarlas a un caché de nivel inferior (es decir, un caché L2). La combinación de memoria temporal de escritura combina dos o más operaciones de escritura que se dirigen a datos dentro de un mismo bloque de caché y además presentan menos escrituras para el caché L2, La combinación de memoria temporal de escritura puede acumular las operaciones de escritura por algún tiempo. La determinación cuando las operaciones de escritura se vacían de una o más entradas de combinación de memoria temporal de escritura es un balance entre el ancho de banda y el funcionamiento. Por otro lado, si los datos se vacían durante mucho tiempo, el funcionamiento puede padecer como los datos que necesitan empujarse a cachés de nivel inferior o memorias que permanecen en la combinación de la memoria temporal de escritura.
SUMARIO DE LA INVENCIÓN En una modalidad, una combinación de memoria temporal de escritura se configura para mantener una o más métricas de vaciado para determinar cuándo transmitir las operaciones de escritura de las entradas de la memoria temporal. La combinación de la memoria temporal de escritura puede configurarse para modificar dinámicamente las métricas de vaciado en respuesta a í la actividad en la memoria temporal de escritura modificando las condiciones que causan que las operaciones de escritura sean transmitidas de la memoria temporal de escritura al siguiente nivel inferior de memoria. Además, el funcionamiento/balance del ancho de banda puede ajustarse dinámicamente con base en la actividad detectada.
En una implementación, las métricas de vaciado pueden incluir categorizar las entradas de la memoria intermedia de escritura como "colapsadas". Una entrada de memoria temporal de escritura colapsada y las operaciones de escritura colapsadas en la misma pueden incluir al menos una operación de escritura que tiene datos sobre-escritos por una operación de escritura previa en la entrada de la memoria temporal. Dichas entradas pueden continuar para acumular las operaciones de escritura que sobre-escriben los datos previos y al menos algunos de los datos pueden ser datos temporales que no se accesan de nuevo pronto. Por. ejemplo, las operaciones de escritura en la entrada de la memoria temporal de escritura pueden ser parte de un área de derrame de registro en la memoria en donde los valores de registro del procesador se escriben para hacer los registros disponibles para almacenar otros datos. Las entradas de la memoria temporal de escritura colapsadas no pueden considerarse cuando se determina si la plenitud de la memoria temporal de escritura ha alcanzado un inicio específico en el cual las operaciones de escritura combinadas en una o más entradas de la memoria temporal de escritura se transmiten al siguiente nivel de memoria. Las entradas colapsadas en la memoria temporal pueden ignorarse temporalmente en el cálculo del inicio.
En otra implementación, la combinación de memoria temporal de escritura puede mantener el inicio de la plenitud de memoria temporal como una métrica de vaciado. La memoria temporal puede monitorearse para eventos' completos de la memoria temporal. Si un evento completo de la memoria temporal se detecta, entonces el inicio puede ser muy alto para el nivel actual de actividad y puede reducirse. Por otro lado, si un número de operaciones de escritura consecutivas se recibe dentro de la memoria temporal sin detectar un evento completo de la memoria temporal, entonces el inicio puede ser muy bajo y el inicio puede incrementarse. Por consiguiente, con base en la plenitud de la memoria temporal real que se detecta durante el tiempo, el inicio puede ajustarse.
BREVE DESCRIPCIÓN DE LAS FIGURAS La siguiente descripción detallada hace referencia a los dibujos que la acompañan que ahora se describirán brevemente.
La Figura 1 es un diagrama de bloque de una modalidad de un núcleo procesador, caches y una memoria temporal de combinación de escritura, en donde A = De/Al siguiente nivel de la jerarquía de la memoria.
La Figura 2 es un diagrama de flujo ilustrando la operación de una modalidad de la combinación de la memoria temporal de escritura en un nivel alto.
La Figura 3 es un diagrama de bloque de una modalidad de la combinación de, la memoria temporal de escritura, en donde B = Operación de escritura.
La Figura 4 es un diagrama de flujo ilustrando la operación de una modalidad de la combinación de la memoria temporal de escritura mostrada en la Figura 3 en respuesta para recibir una operación de escritura, en donde C= para cada entrada de memoria temporal.
La Figura 5 es un diagrama de flujo ilustrando la operación de una modalidad de la combinación de la memoria temporal de escritura mostrada en la Figura 3 para evaluar las métricas de vaciado.
La Figura 6 es un diagrama de bloque de otra modalidad de la combinación de la memoria temporal de escritura.
La Figura 7 es un diagrama de bloque que ilustra la operación de una modalidad de la combinación de la memoria temporal de escritura mostrada en la Figura 6 en respuesta para recibir una operación de escritura.
La Figura 8 es un diagrama de bloque de una modalidad de un sistema.
Mientras la invención es susceptible para varias modalidades y formas alternas, las modalidades especificas de las mismas se muestran por medio de ejemplo en los dibujos y en este documento se describirán en detalle. Debe entenderse sin embargo, que los dibujos y la descripción detallada de los mismos no se intenta para limitar la invención a la forma particular divulgada, pero por lo contrario, la intención es para cubrir todas las modificaciones, equivalentes y alternativas que caen dentro del espíritu y alcance de la presente invención como se define por las reivindicaciones anexas. Los encabezados usados en este documento son para propósitos organizacionales solamente y no se intentan que se usen para limitar el alcance de la descripción. Como se usa en toda la solicitud, la palabra "puede" usarse en un sentido permisivo (por ejemplo, significa tener el potencial de), más que el sentido estricto (és decir, debe significar). Similarmente, las palabras "incluye", "incluyendo" e "incluir" significan incluyendo pero no se limita a eso.
Varias unidades, circuitos u otros componentes pueden describirse como "configurado para" realizar una tarea o tareas. En dichos contextos, "configurado para", es una recitación amplia de la estructura generalmente significando "tener un circuito que" realiza la tarea o las tareas durante la operación. Como tal, la unidad/circuito/componente puede configurarse para realizar la tarea incluso cuando la unidad/circuito/componente no está actualmente encendido. En general, el circuito que forma la estructura correspondiente a "configurado para" puede incluir los circuitos de equipo. Similarmente, varias unidades/circuitos/componentes pueden describirse como realizando una tarea o tareas, para conveniencia en la descripción. Dichas descripciones deben interpretarse como incluyendo la frase "configurado para". Recitando una unidad/circuito/componente que se configura para realizar una o más tareas se expresa para invocar la interpretación del párrafo 6 del CEU 35 § 112, para esa unidad/circuito/componente.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Ahora regresando a la Figura 1 , un diagrama de bloque de una modalidad de un núcleo del procesador 10, un caché de datos de primer nivel (L1 ) 12, una unidad de interfase de segundo nivel (L2) 14 y un caché L2 16 se muestran. La unidad de interfase L2 14 puede incluir una memoria temporal de relleno 18 y una combinación de memoria temporal de escritura (CWB, por sus siglas en inglés) 20. La CWB 20 puede configurarse para mantener una o más métricas de vaciado 22. El núcleo del procesador 10 se acopla al caché de datos L1 12, que se acopla a la unidad de interfase L2 14. La unidad de interfase L2 14 además se acopla al caché L2 16, que además puede acoplarse al siguiente nivel de memoria en la jerarquía de la memoria (no mostrado en la Figura 1 ).
El núcleo del procesador 10 puede implementar cualquier arquitectura del juego de instrucciones y puede incluir los circuitos para ejecutar las instrucciones definidas en la arquitectura del juego de instrucciones. En varias modalidades, el núcleo del procesador 10 puede implementar cualquier microarquitectura, incluyendo superescalar o escalar, superentubados o entubados, fuera de orden o en el orden, especulativos o no especulativos, etc. Varias modalidades pueden emplear técnicas micro codificación o no, como se desee. Varias modalidades pueden emplear técnicas de micro codificación o no, como se desee.
La arquitectura del juego de instrucciones implementada por el núcleo del procesador 10 puede especificar instrucciones de carga explícitas definidas para transferir los datos de la memoria para el procesador (por ejemplo para un registro en el procesador) e instrucciones de almacenaje explícitas definidas para transferir los datos desde el procesador a la memoria. La transferencia puede completarse en el caché en varias modalidades. Alternativamente o en adición, la arquitectura del juego de instrucciones puede especificar las cargas y almacenajes implícitas (por ejemplo, para una instrucción que realiza una operación de almacenaje/no carga en un operando de la memoria). Por consiguiente, el núcleo del procesador 10 puede ser dicho para ejecutar una operación de carga o una operación de almacenaje. La operación de almacenaje/carga puede derivarse de la instrucción explícita o la carga/almacenaje explícito.
El núcleo del procesador 10 puede configurarse para generar una operación de lectura en respuesta a una operación de carga y puede configurarse para generar una operación de escritura en respuesta a una operación de almacenaje. Las operaciones de lectura/escritura pueden propagarse a una jerarquía de memoria que incluye uno o más niveles de caché y un sistema de memoria principal. Los cachés pueden ocultar los datos que también se almacenan en el subsistema de memoria principal y los datos es la jerarquía de la memoria que se identifica por una dirección de memoria definida en un espacio de dirección de memoria correspondiente al sistema de memoria principal. Por ejemplo, en la modalidad de la Figura 1 , los cachés L1 y L2 pueden ser niveles de la memoria en la jerarquía de la memoria. Existen niveles adicionales, incluyendo el nivel de memoria principal y opcionalmente uno o más niveles adicionales de caché. Otras modalidades no pueden incluir el caché L2 16 y el siguiente nivel de memoria del caché L1 puede • ser el subsistema de memoria principal. Generalmente, una operación de lectura/escritura puede ser ingresar la jerarquía de la memoria en la parte superior (el nivel más cercano al núcleo del procesador 10) y pueden programarse de un nivel al siguiente hasta que la operación se completa. El subsistema de memoria principal puede ser el nivel más bajo en la jerarquía de la memoria. Los datos pueden moverse a y desde el subsistema de memoria principal mediante varios dispositivos periféricos tales como los dispositivos de almacenaje de masa (por ejemplo, unidades de disco) o dispositivos de red, pero los datos no se identifican por la dirección de memoria en estos dispositivos (por ejemplo, los dispositivos de almacenaje de masa pueden tener su propio espacio de dirección para localizar los datos en el dispositivo, o la red para la cual el dispositivo de red se conecta puede incluir su propio espacio de dirección identificando los dispositivos en la red).
La operación de lectura puede completarse cuando los datos para la lectura se regresan desde la jerarquía de memoria (por ejemplo cualquier nivel de caché o el subsistema de memoria principal) y la operación de escritura puede completarse vía el núcleo del procesador 10 enviando los datos de escritura. La operación de escritura puede incluir la dirección, una indicación del tamaño de la escritura (por ejemplo en términos de bites), y los datos de escritura. La operación de escritura también puede incluir otros atributos de la escritura (por ejemplo, cacheabilidad, coherencia, etc.).
El caché de los datos 12 puede implementar cualquier capacidad y configuración (por ejemplo, mapeado directo, asociación de equipo, etc.). El caché de datos 12 puede configurarse para ubicar o desubicar el almacenaje en el caché en unidades de bloques de caché. Un bloque de caché puede tener cualquier tamaño (por ejemplo, 32 bites, 64 bites, 128 bites, etc.) y puede alinearse en la memoria en un límite de dirección natural para el tamaño del bloque (por ejemplo, un bloque de caché de 32 bites puede alinearse a un límite de 32 bites, un bloque de caché de 64 bites puede alinearse a un límite de 64 bites, etc.).
En la modalidad ilustrada, el caché de los datos 12 se escribe completamente (WT). En un caché completamente escrito, las operaciones de escritura que golpean en el caché se propagan al siguiente nivel de memoria además de actualizar el bloque de caché en el caché. Las operaciones de escritura que olvidan el caché también se propagan al siguiente nivel de memoria. Por otro lado, un caché de escritura de regreso (o de almacenaje en el caché) puede actualizar el bloque de caché almacenado y no pueden propagar la operación de escritura. En su lugar, el bloque de caché actualizado puede escribirse eventualmente de nuevo al siguiente nivel de la memoria cuando se expulsa desde el caché.
La unidad de la interfase L2 14 puede recibir las operaciones de escritura desde el caché de datos L1 12 y también puede recibir los cachés de lectura olvidados (como solicitudes de llenado). La unidad de interfase L2 14 puede configurarse para almacenar las operaciones de escritura en la CWB 20 y para almacenar las solicitudes de llenado en la memoria temporal de llenado 18. Las solicitudes de llenado pueden transmitirse al caché L2 16 (y los niveles inferiores de la jerarquía de memoria como se necesiten) y los datos de llenado pueden regresarse al caché de datos L1 12 y pueden escribirse al caché de datos L1 12.
La CWB 20 además puede intervenir en las operaciones de escritura y transmitirlas al caché L2 16 en varios puntos al mismo tiempo. Las operaciones de escritura pueden incluir escrituras completamente escritas que golpean en el caché 12 y actualizan el bloque de caché en las mismas. Las operaciones de escritura también pueden incluir escrituras completamente escritas que están olvidadas en el caché de datos 12. La CWB 20 puede incluir múltiples entradas de memoria temporal. Cada entrada de memoria temporal puede configurarse para almacenar las operaciones de escritura en una granularidad del bloque de caché. Esto es, La entrada puede ubicarse para una entidad de bloque dimensionado alineada con el limite del bloque de caché en la memoria. Cualquier escritura dentro del bloque de caché puede almacenarse en la entrada ubicada. Una operación de escritura inicial dentro del bloque de caché puede causar que la CWB ubique la entrada y los datos de escritura pueden almacenarse en la memoria temporal junto con la dirección y una indicación de cuales bites dentro del bloque de caché se actualizan (por ejemplo, una máscara de bites). Las operaciones de escritura subsecuentes puede unirse en la memoria temporal, escribiendo los datos dentro de los bites apropiados dentro del bloque de caché y actualizando la máscara de bites.
La CWB puede configurarse para acumular una o más métricas de vaciado 22 para determinar cuándo transmitir una o más operaciones de escritura combinadas de la entradas de la memoria temporal al caché L2 16. La CWB 20 puede configurarse para monitorear la actividad en la memoria temporal de escritura para determinar las métricas de vaciado 22. Además, las métricas de vaciado pueden ser datos dinámicamente generados que pueden usarse por la CWB 20 para determinar cuándo se tramiten las operaciones de escritura combinadas (o se vacía la entrada o entradas de la memoria temporal de escritura) al siguiente nivel de memoria. Porque las métricas de vaciado se generan dinámicamente, la frecuencia en la cual las operaciones de escritura combinadas se vacían puede variar durante el tiempo con base en la actividad de la memoria temporal de escritura detectada. Esto es, las métricas de vaciado pueden usarse junto con la plenitud de la memoria temporal de escritura (esto es, el número de entradas de la memoria temporal que se ocupan como se compara con el número total de las entradas de la memoria temporal) para determinar cuándo se transmite una o más operaciones de escritura combi nadas al siguiente nivel de memoria.
Por ejemplo, en una modalidad, las métricas de vaciado pueden incluir la detección de las entradas de la memoria temporal de escritura colapsadas. Una entrada de memoria temporal de escritura colapsada puede ser una entrada en la cual: al menos una operación de escritura ha sido unida dentro de la entrada, y la operación de escritura se ha sobre escrito en la menos un bite de los datos de escritura que se escribió en la entrada por una operación de escritura previa. Por ejemplo, si una máscara de bites se mantiene para indicar que bites dentro de lo bloque de caché se actualizan, la escritura colapsada puede detectarse si una operación de escritura se une dentro de la entrada y al menos un bite de la máscara que seria establecido debido a la operación de escritura unida ya se estableció. Otras modalidades pueden detectar el colapso en otros niveles de granularidad con el bloque de caché (por ejemplo, palabra, doble palabra, etc.). Otras modalidades solamente pueden detectar una escritura colapsada si todos los bites actualizados por la escritura tienen sus bites de máscara correspondiente establecidos antes de la escritura colapsada. Esto es, una escritura colapsada puede detectarse si la máscara de bites es el mismo valor antes y después de que la escritura colapsada se una.
La CWB 20 puede configurarse para remover las entradas de la memoria temporal de escritura colapsada de consideración en la detección de la llenura de la memoria temporal de escritura. Por ejemplo, la CWB 20 puede configurarse para transmitir las operaciones de escritura combinadas de una o más entradas de la memoria temporal como la CWB 20 alcanza la llenura (por ejemplo, cunado un nivel de inicio de llenura se cumple). Dado que las entradas de la memoria temporal de escritura colapsada no se consideran en la determinación de la llenura de la memoria temporal de escritura para vaciar las entradas de escritura, la memoria temporal de escritura puede tender a llegar a estar más llena (en términos de entradas ocupadas) cuando las entradas de la memoria temporal de escritura colapsada se detectan en la memoria temporal de escritura que cuando las entradas de la memoria temporal de escritura colapsada no se detectan en la memoria temporal de escritura. En una modalidad, un valor de inicio programable o fijo puede usarse para determinar que la CWB 20 está llegando a estar llena. El conteo de entradas que está en uso puede ser para compararse al valor de inicio menos cualquier entrada que está en estado colapsado. Cuando el valor de inicio se alcanza (por ejemplo, se cumple o excede), la CWB 20 puede vaciar una o más entradas de la memoria temporal de escritura. En una modalidad, la CWB 20 puede vaciar una entrada de la memoria temporal de escritura en respuesta al alcance del valor de inicio y puede continuar el vaciado de las entradas de la memoria temporal de escritura hasta que el número de entradas de la memoria temporal de escritura ocupadas cae abajo del valor de inicio. En otras modalidades, más de una entrada de la memoria temporal de escritura puede vaciarse concurrentemente. Dado que las entradas de la memoria temporal de escritura colapsadas no están contadas hacia el inicio de llenura, las entradas de la memoria temporal de escritura pueden vaciarse menos frecuentemente que cuando no existen entradas de la memoria temporal de escritura colapsadas.
El vaciado de la entrada de la memoria temporal de escritura puede involucrar una o más operaciones de escritura combinadas. Por ejemplo, para cada juego de bites actualizados contiguos en la entrada, una operación de escritura puede generarse. Existen tres aberturas de bites no actualizados en la entrada, múltiples operaciones de escritura pueden transmitirse. En otras modalidades, una operación de escritura combinada por entrada de escritura puede transmitirse con una máscara de bites u otra indicación identificando cuales bites están para actualizarse dentro de cada bloque. En aún otras modalidades, las escrituras de un tamaño dado (por ejemplo, una palabra) pueden generarse.
En otras modalidades, las métricas de vaciado 22 pueden incluir el valor de inicio. El valor de inicio puede modificarse dinámicamente con base en la detección de los eventos completos de la memoria temporal de escritura. Los eventos totales de la memoria temporal de escritura pueden indicar que la memoria temporal de escritura actualmente se llena (todas las entradas de memoria temporal permitidas para las operaciones de escritura). Por consiguiente, la CWB 20 puede vaciar las entradas de escritura con base en el valor de inicio y pueden detectar los eventos totales de la memoria temporal para indicar que el valor de inicio es para modificarse. Por ejemplo, si un evento completo de la memoria temporal se detecta, la CWB puede determinar que el valor de inicio es muy alto (por ejemplo, muy cercano a la totalidad de la memoria temporal), causando que la memoria temporal de escritura se llene antes de que el vaciado de cualquier entrada pueda completarse. La llenura dé la memoria temporal puede impactar el funcionamiento del núcleo del procesador. Por consiguiente, el valor de inicio puede reducirse en respuesta al evento completo de la memoria temporal. Por otro lado, si un cierto número de operaciones de escritura se escribe en la memoria temporal sin detectar un evento completo de memoria temporal, el valor de inicio puede ser muy bajo (por ejemplo, muy lejano de la llenura de la memoria temporal) y puede incrementarse. r Por consiguiente, el inicio puede adaptarse durante el tiempo con base en si la memoria temporal llega a estar llena o no. Si el tráfico se causa pro que la memoria temporal se llena muy rápido, el inicio puede reducirse. En este diseño, la escritura no puede respaldarse en la memoria temporal y causar que el núcleo del procesador 10 se pare. Si el tráfico está causando que la memoria temporal se llene menos rápidamente, el inicio puede incrementarse. Por lo tanto, la memoria temporal puede permitirse para almacenar las operaciones de escritura más grandes, reduciendo el tráfico (y el consumo de energía) en el caché L2 16. Esto es, la frecuencia de transmitir las escrituras desde una entrada de la memoria temporal de escritura al caché L2 16 puede incrementar y disminuir con los cambios en el inicio.
En otras modalidades, otras métricas de vaciado pueden acumularse (por ejemplo, como frecuentemente un bloque de caché de llenura de escrituras es reducido, las respuestas positivas snoop en la memoria temporal, etc.). La frecuencia del vaciado de las entradas de la memoria temporal de escritura al caché L2 16 puede modificarse con base en esas métricas también. Por ejemplo, la frecuencia del vaciado puede incrementarse si las respuestas positivas snoop están siendo detectadas (indicando, que los otros núcleos del procesador o circuitos en el sistema estén usando los datos siendo escritos).
En algunas modalidades, las operaciones de escritura almacenadas en la CWB 20 además pueden incluir operaciones de escritura no cacheables. Las operaciones de escritura no cacheables pueden ser combinables con escritura, y pueden unirse en una entrada de memoria temporal similar a las escrituras a través de la escritura anteriormente divulgada. Otras operaciones de escritura no cacheables no pueden ser combinables con escritura (o escritura combinando con otras escrituras no cacheables no pueden soportarse). En dichos casos, cada operación de escritura no cacheable puede ubicar su propia entrada separada en la CWB 20. Otras modalidades pueden almacenar las operaciones de escritura no cacheables en una memoria temporal de escritura diferente.
El caché L2 16 puede ser de cualquier dimensión y construcción, similar a la divulgación anterior para el caché de datos 12. El caché L2 16 puede ser escrito de nuevo o escrito a través en varias modalidades. El caché L2 16 además puede incluir una interfase para el siguiente nivel de memoria, que puede ser el subsistema de memoria principal o un caché de tercer nivel (L3) en varias modalidades.
Se nota que una memoria de escritura de combinación (CWB) 20 puede incluirse dentro de otros niveles de la jerarquía de la memoria también. Por ejemplo una CWB 20 puede incluirse debajo de cualquier nivel de caché que se escribe a través. Se nota que, en una modalidad, el núcleo del procesador 10, el caché de datos L1 12 y la interfase L2 14 (incluyendo la llenura de la memoria temporal 18 y la CWB 20) pueden integrarse juntos como un procesador. En otras modalidades, la interfase L2 14 puede compartirse con otro caché de datos 12/L1 del núcleo del procesador 10. En aún otras modalidades, el caché L2 16 puede integrarse dentro del procesador, y u otros componentes pueden integrarse (por ejemplo, en un sistema en una configuración de chip).
Ahora siguiendo la Figura 2, un diagrama de flujo ilustrando la operación de una modalidad de la CWB se muestra. Mientras los bloques se muestran en un orden particular para facilitar el entendimiento, otros órdenes pueden usarse. Los bloques pueden realizarse en paralelo en lógica combinada en la CWB 20. Los bloques, las combinaciones de bloques y/o el diagrama de flujo como un todo pueden entubarse sobre ciclos de reloj múltiples. La CWB 20 puede configurarse para implementar la operación mostrada en la Figura 2.
La CWB 20 puede configurarse para monitorear la actividad en la memoria temporal de escritura (bloque 30). Por ejemplo, la llenura de la memoria temporal, los números de operaciones de escritura unidas en la memoria temporal, las escrituras colapsadas, etc. pueden monitorearse por la CWB 20. Si la actividad detectada indica un cambio en la métrica de vaciado mantenida por la CWB 20 (bloque de decisión 32, extensión "si"), la CWB 20 puede modificar la métrica de vaciado (bloque 34). Si una combinación del estado de la memoria temporal y las métricas de vaciado 22 indican un vaciado de una o más entradas de la memoria temporal (bloque de decisión 36, extensión "sí"), la CWB 20 puede configurarse para transmitir una o más operaciones de escritura combinadas de una o más entradas de la memoria temporal al caché L2 16 (bloque 38). Más generalmente, las operaciones de escritura pueden transmitirse al siguiente nivel de memoria en la jerarquía de memoria.
Ahora regresando a la Figura 3, un diagrama de bloque de una modalidad de la CWB 20 se muestra. En la modalidad de la Figura 3, la CWB 20 incluye un circuito de control 40 acoplado a una memoria temporal de escritura 42. La memoria temporal 42 se acopla para recibir las operaciones de escritura del caché de datos L1 12 y para proporcionar operaciones de escritura combinadas al caché L2 16 (o más generalmente al siguiente nivel de memoria en la jerarquía de la memoria). El circuito de control 40 incluye un juego de registros 44A-44C que pueden almacenar un inicio de edad de colapso (CAge), un inicio de edad y un inicio de llenura, respectivamente. Los registros 44A-44C pueden implementarse como un registro o múltiples registros en general y pueden ser de programas dirigidos para la programación en algunas modalidades. En otras modalidades, uno o más inicios pueden fijarse.
Las entradas ejemplarizadoras 46A-46B en la memoria temporal 42 se muestran en . la Figura 3 y cada entrada incluye un campo de dirección (A), un campo de datos (D), un campo de máscara de bites (Máscara de Bites), un campo de contador de la edad (Age Ctr) y un campo de estado colapsado (Colapsado): Las entradas adicionales similares para las entradas ilustradas pueden incluirse en la memoria temporal 42. Tomados juntos, los estados colapsados a través de todas las entradas pueden representar la métrica de vaciado 22. El campo de dirección puede almacenar la dirección del bloque de caché representado en la entrada y el campo de datos puede incluir el almacenaje para el bloque de caché de los datos, aunque el bloque de caché total no puede ser válido. Esto es, la entrada puede almacenar un bloque de caché parcial de datos válidos en cualquier tiempo dado. El campo de máscara de bites puede incluir un bit para cada bite en el bloque de caché. El bit puede indicar si o no el bite correspondiente es válido en el campo de datos (esto es, si o no el bite se ha escrito por una operación de escritura representada en la entrada). En una modalidad, el bit de máscara puede establecerse para indicar que el bite es válido y puede ser claro para indicar la invalidez, aunque otras modalidades pueden usarse para los significados opuestos para el juego y aclarar los estados. El contador de edad puede indicar la edad de la entrada. El contador de edad puede establecerse inicialmente a cero, y puede incrementar cada ciclo de reloj que la escritura está en la memoria temporal 42 o para cada operación de escritura que se presenta para la memoria temporal 42. En otras modalidades, el contador de la edad puede iniciarse/restablecerse a un valor definido y disminuido. El estado colapsado puede indicar si o no la entrada se colapsa. Esto es, el estado colapsado puede indicar si o no al menos una escritura colapsada se ha detectado para la entrada. El estado colapsado puede, por ejemplo ser un bit indicativo cuando el juego de esa entrada se colapsa e indicativo cuando el aclarado de esa entrada no se colapsa (o viceversa). Otras modalidades pueden usar otras indicaciones del estado.
Regresando ahora a la Figura 4, un diagrama de flujo se muestra ilustrando la operación de una modalidad de la CWB 20 ilustrada en la Figura 3 en respuesta para recibir una operación escrita del caché de datos 12. Mientras los bloques se muestran en un orden particular para facilitar el entendimiento, otros órdenes pueden usarse. Los bloques pueden realizarse en paralelo en lógica combinatoria en la CWB 20. Los bloques, combinaciones de bloques y/o el diagrama de flujo como un todo puede entubarse sobre ciclos de reloj múltiples. La CWB 20 y particularmente el circuito de control 40 pueden configurarse para implementar la operación mostrada en la Figura 4.
La CWB 20 puede configurarse para comparar la dirección de la operación de escritura y las direcciones en la memoria temporal de escritura 42 (en una granularidad de línea de caché). Por ejemplo, el campo de dirección de las entradas en la memoria temporal de escritura 42 puede ¡mplementarse como una memoria con dirección de contenido (CAM). Si la operación de escritura es una respuesta positiva en una entrada de la memoria temporal (esto es, la operación de escritura está dentro del bloque de caché representado por la entrada - bloque de decisión 50, extensión "sí"), el circuito de control 40 puede configurarse para reestablecer el contador de edad en la entrada (bloque 52). Además, el contador de entrada puede ser la edad de la entrada dado que la operación de escritura más reciente fue unida en la entrada en esta modalidad. Si la operación de escritura sobre-escribe al menos un bite que ya ha sido escrito a la entrada por una operación de escritura previa (bloque de decisión 54, extensión "sí"), el circuito de control 40 puede configurarse para establecer el estado colapsado para indicar el colapso (bloque 56). El circuito de control 40 puede configurarse para actualizar la máscara de bites y para causar que los datos se escriban en el campo de datos de la entrada de respuestas positivas.
Si la operación de escritura es un faltante en la memoria temporal 72 (bloque de decisión 50, extensión "no"), el circuito de control 40 puede configurarse para colocar una nueva entrada (actualmente no ocupada) para la operación de escritura (bloque 60). El circuito de control 40 puede iniciar la entrada colocada con la información correspondiente para la operación de escritura (bloque 62). Particularmente, el circuito de control 40 puede causar que la entrada colocada a actualizar con la dirección y los datos de la operación de escritura, pueda establecer la máscara de bites para indicar los bites actualizados por la escritura, puede aclarar el contador de edad y puede aclarar el estado colapsado. Si la memoria temporal de escritura está completa (esto es, no existe actualmente entrada no ocupada), el circuito de control 40 puede presionar de nuevo el caché de datos L1 12/procesador 10 para terminar la operación de escritura antes de que la entrada esté disponible.
El bloque de decisión 54 y el juego del estado colapsado 56 pueden ser equivalentes del bloque de decisión 32 y el bloque 34, respectivamente, para la modalidad del CWB 20 mostrado en la Figura 3.
Ahora regresando a la Figura 5, un diagrama de flujo se muestra ilustrando la operación de una modalidad de la CWB 20 ilustrada en la Figura 3 para evaluar las entradas de la memoria temporal y determinar los eventos de vaciado. Mientras los bloques pueden realizarse en paralelo en lógica combinatoria eh la CWB 20. Los bloques, las combinaciones de bloques y/o los diagramas de flujo como un todo pueden entubarse sobre múltiples ciclos de reloj. La CWb 20 y particularmente el circuito de bloque 40 pueden configurarse para implementar la información mostrada en la Figura 5.
El circuito de control 40 puede configurarse para determinar un conteo completo como el número de entradas ocupadas menos el número de entradas colapsadas (bloque 70). Esto es, el conteo completo puede ser el número de entradas no colapsadas. Si el conteo completo ha alcanzado el inicio completo 44C (bloque de decisión 72, extensión "sí"), el circuito de control 40 puede configurase para transmitir las operaciones de escritura completas de una o más entradas para el caché L2 16 o el siguiente nivel de la jerarquía de la memoria (bloque 74). El circuito de control 40 puede configurarse para seleccionar cualquier entrada para transmitir las operaciones de escritura al caché L2 16. Por ejemplo, en una modalidad, el circuito de control 40 puede seleccionar la entrada más antigua (como se indica por el contador de edad) que no es una entrada colapsada. En otra modalidad, ambas las entradas colapsadas y no colapsadas pueden considerarse para la selección con base en la antigüedad. En otra modalidad, las entradas pueden vaciarse primero en, un primer orden (FIFO) de su ubicación. La combinación de bloques 70 y 72 puede ser el equivalente del bloque 36 y el bloque 74 puede ser el equivalente del bloque 38, en esta modalidad. En otra modalidad, un inicio adicional puede definirse (mayor que el inicio completo) para compararse en contra del número total de entradas ocupadas (ambas colapsadas y no colapsadas). Si el número total de entradas ocupadas alcanza el inicio adicional, el circuito de control 40 puede configurarse para transmitir las operaciones de escritura combinadas de una o más entradas de la memoria temporal al caché L2 16 (bloque 74).
El resto del diagrama de flujo ilustrado en la Figura 5 puede aplicarse a cada entrada de la memoria temporal en la memoria temporal 42 (es decir, en paralelo para cada entrada de la memoria temporal). Si el contador de edad ha alcanzado el inicio de la edad colapsada 44A (bloque de decisión 76, la extensión "sí"), el circuito de control 40 puede configurarse para reestablecer el estado colapsado en la entrada, indicando lo no colapsado (bloque 78). Además, dado que el contador de edad se reestablece en cada respuesta positiva de escritura para la entrada en esta modalidad, el entrada colapsada no se considerará más colapsada después de un número de ciclos de reloj iguales al inicio de la edad colapsada que ha pasado sin otra respuesta positiva de escritura para la entrada. Si el contador de edad ha alcanzado el inicio de la edad 44B (bloque de decisión 80, extensión "si"), el circuito de control 40 puede configurarse para vaciar la entrada (bloque 82), transmitiendo una o más operaciones de escritura combinadas para la entrada. Los bloques 80 y 82 pueden ser otro equivalente para los bloques 36 y 38, respectivamente para esta modalidad.
Ahora regresando a la Figura 6, se muestra un diagrama de bloque de otra modalidad de la CWB 20. En la modalidad de la Figura 6, la CWB 20 incluye un circuito de control 90 acoplada a una memoria temporal de escritura 92. La memoria temporal 92 se acopla para recibir las operaciones de escritura del caché de datos L1 12 y para proporcionar operaciones de escritura combinadas para el caché L2 16. El circuito de control 90 incluye un juego de registros 94A-94C que puede almacenar un inicio de escritura, un conteo de escritura y un inicio de llenura, respectivamente. Los registros 94A-94C pueden implementarse como un registro o más de un registro en general, y puede ser un programa dirigible para programación en algunas modalidades. En otras modalidades, el inicio de escritura puede fijarse.
En la modalidad de la Figura 6, la combinación del conteo de escritura 94B, y el inicio de llenura 94C que puede ser una métrica de vaciado 22. El conteo de escritura 94B puede ser un conteo de las operaciones de escritura que se han almacenado en la memoria temporal 92 desde que el -evento lleno la memoria temporal más reciente. El inicio de llenura 94C puede ser el inicio de las entradas de la memoria temporal a ocuparse antes de que se realice un vaciado, en esta modalidad. El inicio de llenura 94C puede vanarse en la actividad de la memoria temporal «de escritura como se divulgó anteriormente.
Las entradas ejemplarizadoras 94A-96B se muestran en la Figura 6, Las entradas adicionales similares para las entradas ilustradas pueden incluirse. La modalidad de la Figura 6 incluye un campo de dirección (A), un campo de datos (D), un campo de máscara de bites (Máscara de Bites) y un campo de contador de edad (Age Ctr) similar a los mismos campos anteriormente descritos con respecto a la Figura 3.
La Figura 7 es un diagrama de flujo ilustrando una operación de una modalidad de la CWB 20 ilustrada en la Figura 6 en respuesta para recibir una operación de escritura. Mientras los bloques se muestran en un orden particular para facilitar el entendimiento, otros órdenes pueden usarse. Los bloques pueden realizarse en paralelo en lógica combinatoria en la CWB 20. Los bloques, combinaciones de bloques, y/o el diagrama de flujo como un todo pueden entubarse sobre múltiples ciclos de reloj. La CWB 20 y particularmente el circuito de control 90 pueden configurarse para implementar la operación mostrada en la Figura 7. Además de la operación mostrada en la Figura 7, la modalidad de la Figura 6 puede detectar una respuesta positiva u omisión en la memoria temporal 92 y puede actualizar las entradas por consiguiente como se ilustra en los bloques 50, 52, 58, 60 y 62 en la Figura 4 y puede implementar los bloques 72 y 74 en la Figura 5 también. Opcionalmente, la modalidad de la Figura 6 también puede implementar el bloque 80 y 82 de la Figura 5 en algunas modalidades.
El circuito de control 90 puede configurarse para determinar si la operación de escritura recibida llena la memoria temporal 92 (bloque de decisión 100). Por ejemplo, si la operación de escritura recibida es una omisión en la memoria temporal 92 y la última entrada no ocupada se localiza para la operación de escritura recibida, la memoria temporal 92 está llena. Si es así (bloque de decisión 100, extensión "sí"), el circuito de control 90 puede configurase para reducir el inicio de llenura 94C (bloque 102) y para aclarar el conteo de escritura 94B (bloque 104). Por otro lado (bloque de decisión 100, extremidad "no"), el circuito de control 90 puede configurarse para incrementar el conteo de escritura 94B si la operación de escritura recibida no causa un evento de llenura (bloque 106). Si el conteo de escritura ha alcanzado el inicio de escritura (bloque de decisión 108, extremidad "sí"), el circuito de control 90 puede configurarse para incrementar el inicio de llenura. En esta modalidad, el diagrama de flujo de la Figura 7 puede ser el equivalente para los bloques 32 y 34 en la Figura 3.
Por consiguiente, el inicio de llenura puede modificarse dinámicamente en esta modalidad para causar un vaciado de una entrada (como se ilustra en los bloques 72 y 74, en donde el conteo de llenura es el número de entradas ocupadas en esta modalidad) para prevenir los eventos de llenura de ocurrir, mientras se permite a la memoria temporal 92 para conseguir la llenura tanto como sea posible con base en el tráfico detectado en la CWB 20. El conteo' de escritura puede determinarse en cualquier diseño dado. Por ejemplo, si un porcentaje dado de operaciones de escritura se espera que se unan en las entradas de la memoria temporal de escritura, el conteo de escritura puede ser igual al producto del número de operaciones de escritura por bloque de caché (es decir, el número de palabras en el bloque de caché), el número de entradas de la memoria temporal de escritura y el porcentaje de unión.
Regresando a la Figura 8, un diagrama de bloque de una modalidad de un sistema 350 se muestra. En la modalidad ilustrada, el sistema 350 incluye al menos un ejemplo de un circuito integrado 358 acoplado a una memoria externa 352. La memoria externa 352 puede formar el subsistema de memoria principal anteriormente divulgado con respecto a la Figura 1. El circuito integrado 358 puede incluir al menos el .núcleo del procesador 10 y el caché de datos L1 12 mostrado en la Figura 1 y puede incluir una o más de las unidades de interfase L2 14 y el caché L2 16. El circuito integrado 358 puede además incluir otros componentes como se desee. El circuito integrado 358 se acopla a uno o más periféricos 354 y la memoria externa 352. Un suministro de energía 356 también se proporciona lo cual suministra los voltajes de suministro para el circuito integrado 358 asó como uno o más voltajes de suministro para la memoria 352 y/o los periféricos 354. En algunas modalidades, más de un ejemplo del circuito integrado 358 puede incluirse (y más de una memoria externa 352 puede incluirse también).
La memoria 352 puede ser cualquier tipo de memoria, tal como una memoria de acceso aleatorio dinámico (DRAM), DRAM síncrono (SDRAM), proporción de dobles datos (DDR, DDR2, DDR3, etc.), SDRAM (incluyendo las versiones móviles de la SDRAM, tales como mDDR3, etc. y/o las versiones de baja energía de la SDRAMs tales como LPDDR2, etc.), RAMBUS DRAM (RDRAM), RAM estática (SRAM), etc. Uno o más dispositivos de memoria pueden acoplarse en un tablero de'circuito para formar los módulos de memoria tal como los módulos de memoria en línea simples (SIMMs), módulos de memoria en línea dual (DIMMs), etc. Alternativamente, los dispositivos pueden montarse con un circuito integrado 358 en una configuración chip en chip, una configuración paquete en paquete o una configuración de chips múltiples.
Los periféricos 354 pueden incluir cualquier circuito deseado, dependiendo del tipo de sistema 350. Por ejemplo, en una modalidad, el sistema 350 puede ser un dispositivo móvil (por ejemplo, asistente digital personal (PDA), teléfono inteligente, etc.) y los periféricos 354 pueden incluir dispositivos para varios tipos de comunicación inalámbrica, tal como wifi, Bluetooth, celular, sistema de posicionamiento global, etc. Los periféricos 354 también pueden incluir el almacenaje adicional, incluyendo el almacenaje RAM, almacenaje en estado sólido o almacenaje en disco. Los periféricos 354 pueden incluir dispositivos de interfase de usuario tales como una pantalla de despliegue, incluyendo pantallas de despliegue táctiles o pantallas de despliegue táctiles múltiples, teclados u otros dispositivos de entrada, micrófonos, bocinas, etc. En otras modalidades, el sistema 350 puede ser cualquier tipo de sistema de computación (por ejemplo, computadora personal de escritorio, computadora portátil, estaciones de trabajo, red superior, etc.).
Las numerosas variaciones y modificaciones llegarán a ser aparentes para aquellos expertos en la técnica una vez que la divulgación anterior se aprecie completamente. Se intenta que las siguientes reivindicaciones se interpreten para abarcar todas dichas variaciones y modificaciones.

Claims (12)

REIVINDICACIONES
1. Un aparato que comprende: un caché; una memoria temporal de escritura acoplada al caché y configurada para reducir las operaciones de escritura que accesan al caché, en donde la memoria temporal de escritura comprende una pluralidad de entradas, cada entrada configurada para combinar las operaciones de escritura en una granularidad de bloque de caché y un circuito de control acoplado a la memoria temporal de escritura, en donde el circuito de control se configura para causar que la memoria temporal de escritura transmita una o más operaciones de escritura combinadas de una o más entradas de la pluralidad de entradas para un siguiente nivel de memoria abajo del caché sensible para una o más métricas de vaciado aplicadas por el circuito de control y sensibles para alcanzar un nivel de inicio de llenura de la memoria temporal de escritura y en donde el circuito de control se configura para modificar dinámicamente una o más métricas de vaciado sensible a la actividad en la memoria temporal de escritura, en donde la modificación dinámicamente dé una o más métricas de vaciado cambia una frecuencia en la cual el circuito de control causa la transmisión de operaciones de escritura combinadas de la memoria temporal de escritura al siguiente nivel de memoria.
2. El aparato de conformidad con la reivindicación 1 , en donde una o más métricas de vaciado comprende un estado de colapso en cada entrada de la pluralidad de entradas, en donde ef estado de colapso indica sí o no al menos una escritura colapsada ha sido detectada en las operaciones de escritura combinadas en esa entrada, y en donde una escritura colapsada es una operación de escritura que sobre-escribe los datos escritos por una operación de escritura previa en esa entrada, y en donde el circuito de control se configura para causar la transmisión de una o más operaciones de escritura combinadas sensibles al número de entradas de memoria temporal ocupada que no están en el estado de colapso alcanzando el nivel de inicio de llenura.
3. El aparato de conformidad con la reivindicación 2, en donde además el circuito de control además se configura para detectar la escritura colapsada en una primera entrada, y para modificar un primer estado colapsado de la primera entrada para indicar lo colapsado.
4. El aparato de conformidad con la reivindicación 3, que además comprende un contador de edad correspondiente a cada entrada de la pluralidad de entradas, en donde el circuito de control se configura para modificar el estado de colapso en una segunda entrada de la pluralidad de entradas para indicar lo no colapsado en respuesta al contador de edad alcanzado un segundo inicio y en donde el circuito de control se configura para restablecer el contador de edad en respuesta a un operación dé escritura de respuesta positiva en la segunda entrada.
5. El aparato de conformidad con la reivindicación 1 , en donde una o más métricas de vaciado comprende el nivel de inicio de llenura de la memoria temporal de escritura, en donde el circuito de control se configura para causar que una o más operaciones de escritura combinadas se transmita sensible a un número de entradas ocupadas en la memoria temporal de escritura alcanzando el inicio de llenura, y en donde el circuito de control se configura para disminuir el inicio sensiblé para detectar un evento de llenura de la memoria temporal.
6. El aparato de conformidad con la reivindicación 5, en donde el circuito de control se configura para incrementar el nivel de inicio de llenura sensible a un número predefinido de operaciones de escritura siendo recibidas son una ocurrencia del evento de llenura de la memoria temporal.
7. El aparato de conformidad con cualquiera de las reivindicaciones precedentes que además comprende: un núcleo del procesador configurado para ejecutar las operaciones de almacenaje y para generar las operaciones de escritura sensibles a las operaciones de almacenaje y un caché de segundo nivel acoplado para recibir las operaciones de escritura combinadas de la memoria temporal de escritura y configurado para actualizar los bloques de caché almacenados en el mismo con las operaciones de escritura combinadas y en donde el caché es un caché a través de escritura.
8. Un método comprendiendo: un circuito de control monitoreando la actividad en una memoria temporal de escritura; sensible a la actividad, el circuito de control modificando una o más métricas de vaciado mantenidas por el circuito de control y el circuito de control causando una o más operaciones de escritura de al menos una entrada de la memoria temporal en la memoria temporal de escritura a escribirse a un siguiente nivel de memoria sensible a una o más métricas de vaciado y además sensible para alcanzar un nivel dé inicio de llenura de la memoria temporal de escritura, en donde la modificación de una o más métricas de vaciado cambia una frecuencia en la cual el circuito de control causa una o más operaciones de escritura a escribirse al siguiente nivel de memoria.
9. El método de conformidad con la reivindicación 8, en donde el monitoreo comprende detectar una primera operación de escritura que es una respuesta positiva en una primera entrada de la memoria intermedia de escritura y que actualiza al menos un bite que ya se actualizó en la primera entrada y en donde una o más métricas de vaciado comprende un estado en cada entrada, y en donde la modificación comprende establecer un estado en la primera entrada indicando la detección.
10. El método de conformidad con la reivindicación 9, que además comprende comparar un número de entradas de la memoria temporal de escritura que se almacena en las operaciones de escritura para el nivel de inicio de llenura, en donde la primera entrada se excluye del número.
11. El método de conformidad con la reivindicación 8, en donde la actividad comprende un primer número de operaciones de escritura consecutiva sin llenar la memoria temporal de escritura y en donde una o más métricas de vaciado comprende el nivel de inicio de llenura y en donde la modificación comprende incrementar el nivel de inicio de llenura.
12. El método de conformidad con la reivindicación 11 , en donde la actividad comprende un evento de llenura de la memoria temporal y en donde la modificación comprende disminuir el nivel de inicio de llenura.
MX2013001941A 2010-08-20 2011-08-11 Combinacion de memoria temporal de escritura con metricas de vaciado dinamicamente ajustables. MX2013001941A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/860,505 US8352685B2 (en) 2010-08-20 2010-08-20 Combining write buffer with dynamically adjustable flush metrics
PCT/US2011/047389 WO2012024158A1 (en) 2010-08-20 2011-08-11 Combining write buffer with dynamically adjustable flush metrics

Publications (1)

Publication Number Publication Date
MX2013001941A true MX2013001941A (es) 2013-03-18

Family

ID=45594979

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2013001941A MX2013001941A (es) 2010-08-20 2011-08-11 Combinacion de memoria temporal de escritura con metricas de vaciado dinamicamente ajustables.

Country Status (8)

Country Link
US (2) US8352685B2 (es)
JP (1) JP5621048B2 (es)
KR (1) KR101335860B1 (es)
CN (1) CN103069400B (es)
AU (1) AU2011292293B2 (es)
BR (1) BR112013003850B1 (es)
MX (1) MX2013001941A (es)
WO (1) WO2012024158A1 (es)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110112798A1 (en) * 2009-11-06 2011-05-12 Alexander Branover Controlling performance/power by frequency control of the responding node
US8977834B2 (en) * 2011-02-14 2015-03-10 Seagate Technology Llc Dynamic storage regions
US8943248B2 (en) * 2011-03-02 2015-01-27 Texas Instruments Incorporated Method and system for handling discarded and merged events when monitoring a system bus
CN102736987A (zh) * 2011-04-15 2012-10-17 鸿富锦精密工业(深圳)有限公司 监控数据缓存方法及系统
JP2012234254A (ja) * 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US20120284459A1 (en) * 2011-05-05 2012-11-08 International Business Machines Corporation Write-through-and-back cache
JP5492156B2 (ja) * 2011-08-05 2014-05-14 株式会社東芝 情報処理装置およびキャッシュ方法
CN104254841A (zh) * 2012-04-27 2014-12-31 惠普发展公司,有限责任合伙企业 屏蔽存储器设备
US9280479B1 (en) * 2012-05-22 2016-03-08 Applied Micro Circuits Corporation Multi-level store merging in a cache and memory hierarchy
US9645917B2 (en) * 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9111039B2 (en) * 2012-08-29 2015-08-18 Apple Ii 'c. Limiting bandwidth for write transactions across networks of components in computer systems
JP2014086116A (ja) * 2012-10-25 2014-05-12 Toshiba Corp 磁気ディスク装置およびデータライト方法
JP2014182488A (ja) * 2013-03-18 2014-09-29 Fujitsu Ltd 演算処理装置、及び演算処理装置の制御方法
US9423978B2 (en) * 2013-05-08 2016-08-23 Nexgen Storage, Inc. Journal management
US20150006820A1 (en) * 2013-06-28 2015-01-01 Texas Instruments Incorporated Dynamic management of write-miss buffer to reduce write-miss traffic
US9262337B2 (en) 2013-10-09 2016-02-16 Microsoft Technology Licensing, Llc Dynamically determining a translation lookaside buffer flush promotion threshold value
US9798631B2 (en) * 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US9990400B2 (en) 2015-10-26 2018-06-05 Salesforce.Com, Inc. Builder program code for in-memory cache
US9984002B2 (en) 2015-10-26 2018-05-29 Salesforce.Com, Inc. Visibility parameters for an in-memory cache
US10013501B2 (en) 2015-10-26 2018-07-03 Salesforce.Com, Inc. In-memory cache for web application data
US9858187B2 (en) * 2015-10-26 2018-01-02 Salesforce.Com, Inc. Buffering request data for in-memory cache
US20170249257A1 (en) * 2016-02-29 2017-08-31 Itu Business Development A/S Solid-state storage device flash translation layer
US10310997B2 (en) * 2016-09-22 2019-06-04 Advanced Micro Devices, Inc. System and method for dynamically allocating memory to hold pending write requests
US10915498B2 (en) * 2017-03-30 2021-02-09 International Business Machines Corporation Dynamically managing a high speed storage tier of a data storage system
US10795575B2 (en) 2017-03-31 2020-10-06 International Business Machines Corporation Dynamically reacting to events within a data storage system
US10289552B2 (en) * 2017-05-03 2019-05-14 Western Digital Technologies, Inc. Storage system and method for flush optimization
US10642745B2 (en) 2018-01-04 2020-05-05 Salesforce.Com, Inc. Key invalidation in cache systems
CN110018897B (zh) 2018-01-09 2023-05-26 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
US11194722B2 (en) * 2018-03-15 2021-12-07 Intel Corporation Apparatus and method for improved cache utilization and efficiency on a many core processor
KR102495539B1 (ko) * 2018-07-16 2023-02-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200046495A (ko) * 2018-10-24 2020-05-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102605566B1 (ko) * 2018-11-22 2023-11-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11347647B2 (en) * 2018-12-18 2022-05-31 Western Digital Technologies, Inc. Adaptive cache commit delay for write aggregation
US11210100B2 (en) 2019-01-08 2021-12-28 Apple Inc. Coprocessor operation bundling
US11256622B2 (en) 2020-05-08 2022-02-22 Apple Inc. Dynamic adaptive drain for write combining buffer
US10802762B1 (en) * 2020-06-08 2020-10-13 Open Drives LLC Systems and methods for asynchronous writing of synchronous write requests based on a dynamic write threshold
US11500579B1 (en) * 2021-04-23 2022-11-15 EMC IP Holding Company, LLC Consolidated write system and method
US11373727B1 (en) * 2021-06-17 2022-06-28 Kepler Computing Inc. Apparatus for improving memory bandwidth through read and restore decoupling
US11403259B1 (en) * 2021-10-29 2022-08-02 Snowflake Inc. Catalog query framework on distributed key value store
US11627345B1 (en) * 2022-05-10 2023-04-11 Dish Network Technologies India Private Limited Buffer management for optimized processing in media pipeline

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6431238A (en) * 1987-07-27 1989-02-01 Fujitsu Ltd System for controlling store buffer
JPH0298754A (ja) * 1988-10-06 1990-04-11 Nec Corp 主記憶制御方式
JPH0373040A (ja) * 1989-08-14 1991-03-28 Nec Corp キャッシュメモリ
US5664106A (en) * 1993-06-04 1997-09-02 Digital Equipment Corporation Phase-space surface representation of server computer performance in a computer network
US5561780A (en) * 1993-12-30 1996-10-01 Intel Corporation Method and apparatus for combining uncacheable write data into cache-line-sized write buffers
US5630075A (en) 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
JPH09114734A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd ストアバッファ装置
US6167473A (en) * 1997-05-23 2000-12-26 New Moon Systems, Inc. System for detecting peripheral input activity and dynamically adjusting flushing rate of corresponding output device in response to detected activity level of the input device
US6546462B1 (en) 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US7020587B1 (en) * 2000-06-30 2006-03-28 Microsoft Corporation Method and apparatus for generating and managing a language model data structure
US6671747B1 (en) 2000-08-03 2003-12-30 Apple Computer, Inc. System, apparatus, method, and computer program for execution-order preserving uncached write combine operation
US6658533B1 (en) * 2000-09-21 2003-12-02 Intel Corporation Method and apparatus for write cache flush and fill mechanisms
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
JP3785165B2 (ja) * 2003-07-07 2006-06-14 株式会社東芝 ディスクアレイ装置および筐体内レプリケーション方法
KR100515059B1 (ko) 2003-07-22 2005-09-14 삼성전자주식회사 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법
JP4111910B2 (ja) * 2003-12-26 2008-07-02 富士通株式会社 ディスクキャッシュ装置
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US7444478B2 (en) * 2005-11-18 2008-10-28 International Business Machines Corporation Priority scheme for transmitting blocks of data
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US8250316B2 (en) * 2006-06-06 2012-08-21 Seagate Technology Llc Write caching random data and sequential data simultaneously
US7962679B2 (en) 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US7730248B2 (en) 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US8190826B2 (en) * 2008-05-28 2012-05-29 Advanced Micro Devices, Inc. Write combining cache with pipelined synchronization
TW201015321A (en) * 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method

Also Published As

Publication number Publication date
JP5621048B2 (ja) 2014-11-05
AU2011292293B2 (en) 2014-02-06
CN103069400B (zh) 2015-07-01
KR101335860B1 (ko) 2013-12-02
US20120047332A1 (en) 2012-02-23
US8566528B2 (en) 2013-10-22
JP2013536526A (ja) 2013-09-19
AU2011292293A1 (en) 2013-02-21
KR20120018100A (ko) 2012-02-29
US20130103906A1 (en) 2013-04-25
CN103069400A (zh) 2013-04-24
BR112013003850A2 (pt) 2016-07-05
US8352685B2 (en) 2013-01-08
BR112013003850B1 (pt) 2020-12-01
WO2012024158A1 (en) 2012-02-23

Similar Documents

Publication Publication Date Title
MX2013001941A (es) Combinacion de memoria temporal de escritura con metricas de vaciado dinamicamente ajustables.
US9563575B2 (en) Least recently used mechanism for cache line eviction from a cache memory
US9298620B2 (en) Selective victimization in a multi-level cache hierarchy
US10331567B1 (en) Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US9886385B1 (en) Content-directed prefetch circuit with quality filtering
US10621100B1 (en) Unified prefetch circuit for multi-level caches
US9904624B1 (en) Prefetch throttling in a multi-core system
US9529730B2 (en) Methods for cache line eviction
US8806232B2 (en) Systems and method for hardware dynamic cache power management via bridge and power manager
US9563567B2 (en) Selective cache way-group power down
TWI569142B (zh) 記憶體中成本感知之頁面調換及替換之技術
US9135177B2 (en) Scheme to escalate requests with address conflicts
US10963392B1 (en) Victim allocations in shared system cache
US20180188797A1 (en) Link power management scheme based on link's prior history
CA2787560C (en) System and method for locking data in a cache memory
US20130132682A1 (en) Push Mechanism for Quality of Service (QoS) Support in Coherency Port
US11256622B2 (en) Dynamic adaptive drain for write combining buffer
EP2420933A1 (en) Combining write buffer with dynamically adjustable flush metrics
US20170255554A1 (en) Cache memory and operation method thereof

Legal Events

Date Code Title Description
FG Grant or registration