ES2692855T3 - Generación de mediciones de uso aproximadas para sistemas de memoria caché compartida - Google Patents

Generación de mediciones de uso aproximadas para sistemas de memoria caché compartida Download PDF

Info

Publication number
ES2692855T3
ES2692855T3 ES15797233.2T ES15797233T ES2692855T3 ES 2692855 T3 ES2692855 T3 ES 2692855T3 ES 15797233 T ES15797233 T ES 15797233T ES 2692855 T3 ES2692855 T3 ES 2692855T3
Authority
ES
Spain
Prior art keywords
cache memory
qos
qosid
subdivisions
subdivision
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
ES15797233.2T
Other languages
English (en)
Inventor
Derek Robert HOWER
III Harold Wade CAIN
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2692855T3 publication Critical patent/ES2692855T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency 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/21Employing a record carrier using a specific recording technology
    • G06F2212/211Optical disk storage
    • G06F2212/2112Optical disk storage with a removable carrier, e.g. DVD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Un sistema de memoria caché compartida (100), que comprende: un medio para asociar cada subdivisión de memoria caché de una pluralidad de subdivisiones de memoria caché (200(0)-200(Y)) del sistema de memoria caché compartida con una clase de calidad de servicio, QoS, de una pluralidad de clases de QoS (112); un medio para recibir una solicitud de acceso a memoria que comprende un identificador de QoS, QoSID; un medio para acceder a una subdivisión de memoria caché correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria caché; un medio para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la clase de QoS de la pluralidad de clases de QoS asociadas con la subdivisión de memoria caché; un medio para actualizar una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID (202) asociadas con la subdivisión de memoria caché correspondiente a la solicitud de acceso a memoria basándose en los medios para determinar; y un medio para generar una medición de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basándose en la pluralidad de etiquetas de seguimiento de QoSID, caracterizado por que dicho medio para generar la medición de uso aproximada para la clase de QoS de la pluralidad de clases de QoS, basándose en la pluralidad de etiquetas de seguimiento de QoSID, comprende: un medio para determinar una fracción de la pluralidad de subdivisiones de memoria caché asociadas con la clase de QoS; un medio para determinar un recuento de la pluralidad de subdivisiones de memoria caché asociadas con la clase de QoS para la cual se establece la etiqueta de seguimiento de QoSID asociada; y un medio para dividir el recuento de la pluralidad de subdivisiones de memoria caché por la fracción para generar la medición de uso aproximada.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Generacion de mediciones de uso aproximadas para sistemas de memoria cache compartida
I. Campo de la divulgacion
[0001] La tecnologia de la divulgacion se refiere en general a sistemas de memoria cache compartida, y, en particular, a medir el uso de memorias cache compartidas.
II. Antecedentes
[0002] Un numero creciente de unidades de hardware de ordenador (por ejemplo, unidades centrales de procesamiento (CPU), unidades de procesamiento graficos (GPU), unidades procesamiento de senal digital (DSP), y/o motores de acceso directo a memoria (DMA), como ejemplos no limitativos) estan configurados para compartir recursos del sistema de memoria como memorias cache, memoria, ancho de banda de interconexion y ancho de banda de memoria cache. La interferencia de los recursos y los conflictos entre unidades de hardware podria tener consecuencias negativas, como la falta de un plazo en tiempo real en un sistema movil en chip (SoC) o la violacion de un acuerdo de nivel de servicio (SLA) en un servidor consolidado, como ejemplos limitativos. Ademas, los flujos de referencia asociados con algunas unidades de hardware informatico pueden tener poca localidad temporal, lo cual ocasiona la contaminacion de la memoria cache y un impacto negativo en el rendimiento general si no se controla. En consecuencia, supervisar los efectos del intercambio de recursos se ha vuelto mas importante para obtener un rendimiento optimo del sistema. En este sentido, puede ser deseable que los usuarios tengan la capacidad de supervisar el uso de los recursos compartidos.
[0003] Sin embargo, los sistemas de memoria cache convencionales, tales como los descritos en el documento titulado "CqoS: a framework for enabling QoS in shared caches of CMP platforms [CqoS: un marco para permitir QoS en memorias cache compartidas de plataformas CMP]" de Iyer R Ed - Association for Computing Machinery, DOI: 10.1145/1006209.1006246, ISBN: 978-1-58113-839-9, el documento titulado "Coloris [Coloris]" de Ying Ye etal, DOI: 10.1145/2628071.2628104, ISBN: 978-1-4503-2809-8, el documento titulado "CacheScouts: Fine-Grain Monitoring of Shared Caches in CMP Platforms [CacheScouts: Supervision fina de memorias cache compartidas en plataformas CMP]" por Li Zhao et al., ISBN: 978-0-7695-2944-8, US 2009/0164730 A1 y US 2013/0138889 A1, no proporcionan un mecanismo que ahorre espacio para supervisar el uso de la memoria cache. Como resultado, tales sistemas de memoria cache convencionales pueden permanecer infrautilizados para proteger contra el peor rendimiento en presencia de interferencia de memoria cache. Ademas, la falta de retroalimentacion con respecto a la ocupacion de la memoria cache puede hacer que los sistemas de procesamiento informatico no puedan proporcionar una programacion optima de las tareas del sistema.
SUMARIO DE LA DIVULGACION
[0004] La presente divulgacion se refiere a sistemas y procedimientos de memoria cache compartida, las caracteristicas de los cuales se exponen en las reivindicaciones adjuntas. Los aspectos ilustrativos divulgados en la descripcion detallada incluyen generar mediciones de uso aproximadas para sistemas de memoria cache compartida. A este respecto, en un aspecto, se proporciona un sistema de memoria cache compartida. El sistema de memoria cache compartida esta configurado para aproximar el uso de la memoria cache para cada una de una pluralidad de clases de Calidad de Servicio (QoS), teniendo cada clase de QoS un identificador QoS asociado (QoSID). El sistema de memoria cache compartida incluye una pluralidad de lineas de memoria cache que estan subdivididas en una pluralidad de subdivisiones de memoria cache. De acuerdo con algunos aspectos descritos en el presente documento, la pluralidad de subdivisiones de memoria cache puede comprender lineas de memoria cache individuales, conjuntos de lineas de memoria cache y/o bancos de lineas de memoria cache, como ejemplos no limitativos. Cada una de la pluralidad de subdivisiones de memoria cache esta asociada con una de la pluralidad de clases de QoS para las que se debe aproximar el uso de la memoria cache. El sistema de memoria cache compartida tambien proporciona una pluralidad de etiquetas de seguimiento de QoSID correspondientes a la pluralidad de subdivisiones de memoria cache. Tras recibir una solicitud de acceso a memoria que comprende un QoSID, un monitor de uso de memoria cache del sistema de memoria cache compartida se configura ademas para acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria. El monitor de uso de memoria cache esta configurado para determinar si el QoSID de la solicitud de acceso a memoria corresponde a una clase de QoS asociada a la subdivision de memoria cache. Basandose en esta determinacion, el monitor de uso de memoria cache actualiza una etiqueta de seguimiento de QoSID asociada a la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria. De esta manera, la pluralidad de etiquetas de seguimiento de QoSID puede mantenerse para indicar si una clase de QoS asociada con cada subdivision de memoria cache esta realmente usando esa subdivision de memoria cache en un momento dado.
[0005] El monitor de uso de la memoria cache esta configurado ademas para generar una medicion aproximada de utilizacion para una clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID. Al intercambiar la precision de la medicion de uso de memoria cache para reducir la sobrecarga de almacenamiento para la pluralidad de etiquetas de seguimiento de QoSID, el sistema de memoria cache compartida
5
10
15
20
25
30
35
40
45
50
55
60
65
puede proporcionar datos de medicion de uso suficientes para gestionar la asignacion de memoria cache, minimizando al mismo tiempo los impactos sobre el rendimiento del procesador y el consumo de energia.
[0006] En otro aspecto, se proporciona un sistema de memoria cache compartida. El sistema de memoria cache compartida comprende una pluralidad de subdivisiones de memoria cache. El sistema de memoria cache compartida comprende ademas una pluralidad de etiquetas de seguimiento de QoSID, cada una asociada con una subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache. El sistema de memoria cache compartida tambien comprende un monitor de uso de memoria cache. El monitor de uso de memoria cache esta configurado para asociar cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache con una clase de QoS de una pluralidad de clases de QoS. El monitor de uso de memoria cache esta configurado ademas para recibir una solicitud de acceso a memoria que comprende un QoSID. El monitor de uso de memoria cache tambien esta configurado para acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache. El monitor de uso de memoria cache esta configurado adicionalmente para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la clase de QoS asociada con la subdivision de memoria cache. El monitor de uso de memoria cache esta configurado ademas para actualizar una pluralidad de etiquetas de seguimiento de QoSID de etiquetas de seguimiento de QoSID asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basandose en la determinacion. El monitor de uso de memoria cache tambien esta configurado para generar una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID.
[0007] En otro aspecto, se proporciona un sistema de memoria cache compartida. El sistema de memoria cache compartida comprende un medio para asociar cada subdivision de memoria cache de una pluralidad de subdivisiones de memoria cache del sistema de memoria cache compartida con una clase de QoS de una pluralidad de clases de QoS. El sistema de memoria cache compartida comprende ademas un medio para recibir una solicitud de acceso a memoria que comprende un QoSID. El sistema de memoria cache compartida tambien comprende un medio para acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache. El sistema de memoria cache compartida comprende adicionalmente un medio para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la pluralidad de clases de QoS de las clases de QoS asociadas con la subdivision de memoria cache. El sistema de memoria cache compartida comprende ademas un medio para actualizar una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basandose en los medios para determinar. El sistema de memoria cache compartida tambien comprende un medio para generar una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID.
[0008] En otro aspecto, se proporciona un procedimiento para el uso de memoria cache compartida de aproximacion. El procedimiento comprende asociar cada subdivision de memoria cache de una pluralidad de subdivisiones de memoria cache de un sistema de memoria cache compartida con una clase de QoS de una pluralidad de clases de QoS. El procedimiento comprende ademas recibir una solicitud de acceso a memoria que comprende un QoSID. El procedimiento tambien comprende acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache. El procedimiento comprende adicionalmente determinar si el QoSID de la solicitud de acceso a memoria corresponde a la pluralidad de clases de QoS de las clases de QoS asociadas con la subdivision de memoria cache. El procedimiento comprende ademas la actualizacion de una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basandose en la determinacion. El procedimiento tambien comprende generar una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID.
BREVE DESCRIPCION DE LAS FIGURAS
[0009]
La Figura 1 ilustra un sistema de memoria cache compartida a modo de ejemplo que incluye un controlador de memoria cache que comprende un monitor de uso de memoria cache para generar mediciones de uso aproximadas para el sistema de memoria cache compartida;
Las Figuras 2A-2D ilustran implementaciones de sistemas de memoria cache compartida en las que las clases de Calidad de Servicio (QoS) y las etiquetas de seguimiento de identificador de QoS (QoSID) estan asociadas con subdivisiones de memoria cache que comprenden lineas de memoria cache, conjuntos de lineas de memoria cache y bancos de lineas de memoria cache, respectivamente;
Las Figuras 3A y 3B ilustran operaciones a modo de ejemplo del sistema de memoria cache compartida de la figura 1 para generar mediciones de uso aproximadas para el sistema de memoria cache compartida; y
La Figura 4 es un diagrama de bloques de un sistema basado en procesador a modo de ejemplo que puede incluir el sistema de memoria cache compartida de la figura 1 para proporcionar mediciones de uso aproximadas.
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION DETALLADA
[0010] Con referenda ahora a las figuras de los dibujos, se describen varios aspectos a modo de ejemplo de la presente divulgacion. El termino "a modo de ejemplo" se usa en el presente documento para indicar que "sirve de ejemplo, caso o ilustracion". Cualquier aspecto descrito en el presente documento como "a modo de ejemplo" no debe interpretarse necesariamente que es preferente o ventajoso con respecto a otros aspectos.
[0011] A este respecto, se proporciona la Figura 1 para ilustrar una estructura de un sistema de memoria cache compartida 100. El sistema de memoria de cache compartida 100 puede proporcionarse en una matriz de semiconductor, como un ejemplo no limitativo. En algunos aspectos, el sistema de memoria cache compartida 100 puede ser una memoria cache de nivel 1 (L1), una memoria cache de nivel 2 (L2), o una memoria cache de nivel 3 (L3), entre otros, en una jerarquia de memorias (no mostradas). En el ejemplo de la Figura 1, el sistema de memoria cache compartida 100 es una matriz de memorias organizadas en los bancos 102(0)-102(X). Cada uno de los bancos 102(0)-102(X) comprende uno o mas conjuntos 104(0)-104(Y), con cada uno de los conjuntos 104(0)-104(Y) compuesto por un subconjunto de lineas de memoria cache 106(0)-106(L). El numero Z de lineas de memoria cache 106(0)-106(L) en cada uno de los conjuntos 104(0)-104(Y) se denomina "asociatividad" del sistema de memoria cache compartida 100, y el grupo de lineas de memoria cache 106(0)-106(L) situadas en una posicion particular de 0-Z dentro de cada uno de los conjuntos 104(0)-104(Y) se denomina "via" 108(0)-108(Z) correspondiente. Cada via 108(0)-108(Z) se puede visualizar asi como un "fragmento" vertical de las lineas de memoria cache 106(0)-106(L) a traves de todos los conjuntos 104(0)-104(Y).
[0012] Ha de entenderse que los aspectos descritos en el presente documento no se limitan a cualquier disposicion particular de los elementos, y las tecnicas divulgadas pueden extenderse facilmente a diversas estructuras y disenos del sistema de memoria cache compartida 100. La configuracion ilustrada en la figura 1 es solo para fines ilustrativos. En algunos aspectos, el sistema de memoria cache compartida 100 puede comprender menos o mas bancos 102(0)- 102(X), menos o mas conjuntos 104(0)-104(Y), menos o mas lineas de memoria cache 106(0)-106(L), y/o menos o mas vias 108(0)-108(Z) que las aqui ilustradas.
[0013] Con referencia continuada a la figura 1, un controlador de memoria cache 110 esta acoplado a cada banco 102(0)-102(X). En el funcionamiento convencional, un agente solicitante (no mostrado), tal como una aplicacion de software de ejecucion, puede solicitar una instruccion o valor (no mostrado) almacenado en una direccion de memoria (no mostrada). Si la instruccion o el valor solicitado no se encuentra en el sistema de memoria cache compartida 100, se produce un error de memoria cache. En respuesta, el controlador de memoria cache 110 puede iniciar una operacion de llenado de memoria cache, que provoca que una parte de la memoria del sistema (no mostrada) sea igual al tamano de una o mas de las lineas de memoria cache 106(0)-106(L) y que contiene el valor o instruccion solicitado, para ser recuperado y almacenado en una de las lineas de memoria cache 106(0)-106(L).
[0014] El sistema de memoria cache compartida 100 proporciona soporte para las clases multiples de QoS 112(0)- 112(N) para la implementacion de soporte de QoS para el uso de memoria compartida. Cada una de las clases de QoS 112(0)-112(N) esta asociado con un unico QoSID 114(0)-114(N). Para asignar mas eficientemente las lineas de memoria cache 106(0)-106(L) entre multiples agentes solicitantes, el controlador de memoria cache 110 en algunos aspectos puede proporcionar un circuito de asignacion de memoria cache 116. El circuito de asignacion de memoria cache 116 puede habilitar el control del usuario de los recursos de memoria cache del sistema de memoria cache compartida 100 asociando cada uno de los QoSID 114(0)-114(N) con un agente solicitante en particular, y especificando una asignacion de las lineas de memoria cache 106(0)-106(L) a ese QoSID 114(0)-114(N).
[0015] Con la asignacion de las lineas de memoria cache 106(0)-106(L) entre los QoSID 114(0)-114(N) (asignando por lo tanto de manera efectiva las lineas de memoria cache 106(0)-106(L) entre las clases de QoS correspondientes 112(0)-112(N)), el sistema de memoria cache compartida 100 puede mejorar el rendimiento de la memoria cache en una serie de escenarios de casos de uso. Por ejemplo, en algunos aspectos, el sistema de memoria cache compartida 100 puede habilitar restricciones en tiempo real para asegurar que las operaciones criticas de latencia llevadas a cabo por los agentes solicitantes tengan suficiente memoria cache para satisfacer los requisitos en tiempo real. Para proporcionar un servicio receptivo a las restricciones en tiempo real, el circuito de asignacion de memoria cache 116 puede configurarse para garantizar que se preservara un conjunto de trabajo minimo de las lineas de memoria cache 106(0)-106(L) para un agente solicitante de tiempo critico en el sistema de memoria cache compartida 100. La asignacion de las lineas de memoria cache 106(0)-106(L) mediante el circuito de asignacion de memoria cache 116 tambien puede ser util para aplicar Acuerdos de Nivel de Servicio (SLA) de informatica de nube, y/o para restringir la asignacion de memoria cache de las lineas de memoria cache 106(0)-106(L) para ciertos agentes solicitantes para mejorar el rendimiento general de un sistema de procesamiento informatico.
[0016] La asignacion eficiente de las lineas de memoria cache 106(0)-106(L) entre los multiples agentes solicitantes implica el seguimiento de la utilizacion del sistema de memoria cache compartida 100 mediante diferentes clases de QoS 112(0)-112(N) con el fin de determinar los efectos de la asignacion de recursos en el rendimiento general del sistema. Sin embargo, los sistemas de memoria cache convencionales no proporcionan un mecanismo de espacio eficiente para supervisar el uso de la memoria cache. Para supervisar cuantas de las lineas de memoria cache 106(0)-
5
10
15
20
25
30
35
40
45
50
55
60
65
106(L) son utilizadas por una clase de QoS dada 112(0)-112(N), el sistema de memoria cache compartida 100 tiene la capacidad de identificar esas lfneas de memoria cache 106(0)-106(L) a los que accedio cada clase de QoS 112(0)- 112(N).
[0017] Un enfoque implica el etiquetado de cada una de las lfneas de memoria cache 106(0)-106(L) con el QoSID 114(0)-114(N) de la clase de QoS 112(0)-112(N) a la que la memoria cache las lfneas 106(0)-106(L) estan actualmente asignadas. Sin embargo, este enfoque puede ser prohibitivamente costoso en terminos de espacio de almacenamiento dentro del sistema de memoria cache compartida 100. Por ejemplo, en un sistema que soporta un numero N de clases de QoS 112(0)-112(N), cada QoSID 114(0)-114(N) tiene nominalmente log2(N) bits de ancho. Por ejemplo, si el sistema de memoria cache compartida 100 tuviera 32 megabytes de tamano, comprendiendo lfneas de 128 bytes etiquetadas con QoSID de 8 bits 114(0)-114(N), los QoSID 114(0)-114(N) representarfan 256 kilobytes, que puede ser aproximadamente el tamano de una memoria cache L2 convencional en algunos nucleos de procesador de ordenador.
[0018] A este respecto, el sistema de memoria cache compartida 100 reduce la sobrecarga de almacenamiento mediante la generacion de mediciones de uso aproximadas que son suficientemente precisas para uso en la determinacion y supervision de la asignacion de las lfneas de memoria cache 106(0)-106(L). El sistema de memoria cache compartida 100 proporciona asf un monitor de uso de memoria cache 118 para proporcionar mediciones de uso aproximadas, tales como las mediciones de uso aproximadas 120 proporcionadas al circuito de asignacion de memoria cache 116 del controlador de memoria cache 110. En algunos aspectos, los usuarios (no mostrados) pueden consultar el monitor de uso de memoria cache 118 utilizando los QoSID 114(0)-114(N) para descubrir una aproximacion del uso de memoria cache actual de la clase de QoS correspondiente 112(0)-112(N). En tales aspectos, las mediciones de uso aproximadas 120 pueden proporcionarse a traves de una interfaz asignada en memoria (no mostrada), como un ejemplo no limitativo.
[0019] Para proporcionar una supervision eficiente con el espacio de uso de la de memoria cache, el monitor de uso de la de memoria cache 118 en algunos aspectos puede asociar cada una de una pluralidad de subdivisiones de memoria cache de las lfneas de memoria cache 106(0)-106(L) con una de las clases de QoS 112(0)-112(N). De acuerdo con algunos aspectos, la pluralidad de subdivisiones de memoria cache puede comprender una o mas de las lfneas de memoria cache 106(0)-106(L), los conjuntos 104(0)-104(Y) de las lfneas de memoria cache 106(0)-106(L), las vfas 108(0)-108(Z) de las lfneas de memoria cache 106(0)-106(L), o los bancos 102(0)-102(X) de las lfneas de memoria cache 106(0)-106(L), como ejemplos no limitativos. Estas implementaciones a modo de ejemplo se analizan con mayor detalle a continuacion con respecto a las Figuras 2A-2D. Cada subdivision de memoria cache tambien esta asociada con una de una pluralidad de etiquetas de seguimiento de QoSID (no mostradas), cada una de las cuales puede ser utilizada por el monitor de uso de memoria cache 118 para realizar un seguimiento de si la clase de QoS 112(0)-112(N) esta actualmente utilizando la subdivision de memoria cache con la que esta asociada. De acuerdo con algunos aspectos, cada una de la pluralidad de etiquetas de seguimiento de QoSID puede comprender un solo bit. En algunos aspectos, la etiqueta de seguimiento de QoS puede comprender multiples bits, permitiendo que cada subdivision de memoria cache este asociada a multiples clases de QoS 112(0)-112(N). En algunos aspectos, la pluralidad de etiquetas de seguimiento de QoSID puede almacenarse en lfnea con las lfneas de memoria cache 106(0)- 106(L), mientras que algunos aspectos pueden hacer que la pluralidad de etiquetas de seguimiento de QoSID se almacenen en una estructura de datos de etiqueta de seguimiento de QoSID 122. Debe entenderse que, aunque la figura 1 ilustra la estructura de datos de etiqueta de seguimiento de QoSID 122 localizada dentro del controlador de memoria cache 110, la estructura de datos de etiqueta de seguimiento de QoSID 122 en algunos aspectos puede estar ubicada en otra parte dentro del sistema de memoria cache compartida 100 (por ejemplo, dentro del monitor de uso de memoria cache 118, como ejemplo no limitativo).
[0020] Al recibir una solicitud de acceso a memoria 124 que comprende un QoSID 126, el monitor de uso de la de memoria cache 118 accede a la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria 124, y determina si el QoSID 126 de la solicitud de acceso a memoria 124 corresponde a la clase de QoS 112(0)- 112(N) asociada a la subdivision de memoria cache. Basandose en esta determinacion, el monitor de uso de memoria cache 118 puede actualizar la etiqueta de seguimiento de QoSID de la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria 124. Por ejemplo, en algunos aspectos que proporcionan etiquetas de seguimiento de QoSID de un bit, si el QoSID 126 de la solicitud de acceso a memoria 124 corresponde a la clase de QoS 112(0)- 112(N) asociada a la subdivision de memoria cache, el monitor de uso de memoria cache 118 puede establecer la etiqueta de seguimiento de QoSID de la subdivision de memoria cache en un valor de uno (1). Si el QoSID 126 de la solicitud de acceso a memoria 124 no corresponde a la clase de QoS 112(0)-112(N) asociada a la subdivision de memoria cache, el monitor de uso de memoria cache 118 puede establecer la etiqueta de seguimiento de QoSID de la subdivision de memoria cache en un valor de cero (0). De esta manera, las etiquetas de seguimiento de QoSID pueden mantenerse para indicar si la clase de QoS 112(0)-112(N) asociada a cada subdivision de memoria cache esta realmente usando esa subdivision de memoria cache en un momento dado.
[0021] Basandose en las etiquetas de seguimiento de QoSID, el monitor de uso de la de memoria cache 118 puede generar las mediciones de uso aproximadas 120 de las lfneas de memoria cache 106(0)-106(L) para cada una de las clases de QoS 112(0)-112(N). En algunos aspectos, el monitor de uso de memoria cache 118 puede generar las mediciones de uso aproximadas 120 determinando una fraccion de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS 112(0)-112(N), y determinando ademas un recuento de las subdivisiones de memoria
5
10
15
20
25
30
35
40
45
cache asociadas con la clase de QoS 112(0)-112(N) para la cual se establece una etiqueta de seguimiento de QoSID asociada. El monitor de uso de memoria cache 118 puede entonces dividir el recuento de las subdivisiones de memoria cache por la fraccion para generar las mediciones de uso aproximadas 120.
[0022] Como un ejemplo no limitativo, se supone que el sistema de memoria cache compartida 100 proporciona dieciseis (16) conjuntos 104(0)-104(15) que representan las subdivisiones de memoria cache. Los conjuntos 104(0)- 104(7), o la mitad del numero total de conjuntos 104(0)-104(15), estan asociados con la clase de QoS 112(0) para fines de medicion, mientras que los conjuntos 104(8)-104(15) estan asociados con la clase de QoS 112(N) para fines de medicion. Por lo tanto, la fraccion de la pluralidad de subdivisiones de memoria cache asociadas con cada una de las clases de QoS 112(0) y 112(1), por ejemplo, es V o 0,5. Supongamos ademas que seis (6) de los conjuntos 104(0)- 104(5) que estan asociados con la clase de QoS 112(0) tienen una etiqueta de seguimiento de QoSID asociada que se establece. Por consiguiente, el monitor de uso de memoria cache 118 puede generar una medicion de uso aproximada 120 que estima que doce (12) (es decir, seis (6) divididos por 0,5) de los conjuntos 104(0)-104(15) estan actualmente siendo usados por la clase de QoS 112(0).
[0023] En algunos aspectos, el monitor de uso de la memoria cache 118 puede mejorar su precision mediante la asociacion de las subdivisiones de memoria cache solamente con clases de QoS activas 112(0)-112(N), en lugar de asociar las subdivisiones de memoria cache con un numero maximo fijo de clases de QoS 112(0)-112(N). Por ejemplo, si solo esta activa una clase de QoS 112(0), la clase de QoS activa 112(0) puede asociarse con cada linea de memoria cache 106(0)-106(L) en el sistema de memoria cache compartida 100, lo cual da como resultado mediciones de uso aproximadas 120 que tienen cero error. Algunos aspectos pueden hacer que, ademas de reducir el numero de bits necesarios para identificar una clase de QoS 112(0)-112(N), el monitor de uso de memoria cache 118 tambien pueda emplear procedimientos de muestreo convencionales. Como ejemplo no limitativo, las etiquetas de seguimiento de QoSID pueden asociarse solo con un subconjunto distribuido de las subdivisiones de memoria cache.
[0024] Las tecnicas de aproximacion se pueden combinar en algunos aspectos para proporcionar una configuracion del sistema de memoria cache compartida 100 que tiene un equilibrio aceptable entre sobrecarga y precision para una aplicacion dada. Los requisitos de almacenamiento para las combinaciones proporcionadas en algunos aspectos se ilustran en la Tabla 1 a continuacion. En la Tabla 1, se indica el almacenamiento total, en bytes, requerido por varias configuraciones. Cada entrada se calcula basandose en una memoria cache de 8 megabytes, 16 vias, linea de 128 bytes, 4 bancos y un sistema que soporta un maximo de 32 QoSID. El numero entre parentesis es el porcentaje de la sobrecarga relativa necesaria para realizar un seguimiento completo y preciso de la linea de memoria cache que se adjunta con un QoSID de 5 bits.
Tabla 1
Seguimiento completo
40960 bytes (100%)
Muestra 256 conjuntos por banco
10240 bytes (25%)
Muestra 4 vias por conjunto
10240 bytes (25%)
1 bit QoSID por linea
8192 bytes (20%)
Muestra 128 conjuntos por banco
5120 bytes (12,5%)
Muestra 2 vias por conjunto
5120 bytes (12,5%)
Muestra 512 conjuntos por banco, 8 vias por conjunto muestreado y 1 bit QoSID por linea muestreada
2048 bytes (5%)
Muestra 256 conjuntos por banco, 8 vias por conjunto muestreado y 1 bit QoSID por linea muestreada
2048 bytes (2,5%)
Muestra 128 conjuntos por banco, 8 vias por conjunto muestreado y 1 bit QoSID por linea muestreada
2048 bytes (1,25%)
[0025] Como se ha senalado anteriormente, en algunos aspectos, las subdivisiones de memoria cache puede comprender una o mas de las lineas de memoria cache 106(0)-106(L), los conjuntos 104(0)-104(Y) de las lineas de memoria cache 106(0)-106(L), las vias 108(0)-108(Z) de las lineas de memoria cache 106(0)-106(L), o los bancos 102(0)-102(X) de las lineas de memoria cache 106(0)-106(L). A este respecto, las figuras 2A-2d se permiten ilustrar aspectos a modo de ejemplo que proporcionan subdivisiones de memoria cache 200(0)-200(L), 200(0)-200(Y), 200(0)- 200(Z), 200(0)-200(X) que comprenden las lineas de memoria cache 106(0)-106(l), los conjuntos 104(0)-104(Y) de las lineas de memoria cache 106(0)-106(L), las vias 108(0)-108(Z) de las lineas de memoria cache 106(0)-106(L), y los bancos 102(0)-102(X) de las lineas de memoria cache 106(0)-106(L), respectivamente. En la figura 2A, las subdivisiones de memoria cache 200(0)-200(L) corresponden a una de las lineas de memoria cache 106(0)-106(L), con las lineas de memoria cache 106(0), 106(2) y 106(L) asociadas con la clase de QoS 112(0) y las lineas de memoria cache 106(1), 106(3) asociadas con la clase de QoS 112(1). Cada una de las subdivisiones de memoria cache 200(0)-
5
10
15
20
25
30
35
40
45
50
55
60
65
200(L) tambien esta asociada con una etiqueta de seguimiento de QoSID correspondiente 202(0)-202(L), que comprende un solo bit. Las etiquetas de seguimiento de QoSID 202(0)-202(L) indican que la lfnea de memoria cache 106(1) esta actualmente siendo usada por la clase de QoS 112(1) asociada, mientras que las Ifneas de memoria cache 106(2) y 106(L) actualmente estan siendo usadas por la clase de QoS 112(0) asociada. Asimismo, la etiqueta de seguimiento de QoSID 202(0) indica que la lfnea de memoria cache 106(0) no esta siendo utilizada actualmente por la clase de QoS 112(0) asociada, y la etiqueta de seguimiento de QoSID 202(3) indica que la lfnea de memoria cache 106(3) no esta actualmente siendo usada por la clase de QoS 112(1) asociada.
[0026] En el ejemplo de la figura 2B, cada una de las subdivisiones de memoria cache 200(0)-200(Y) corresponde a uno de los conjuntos 104(0)-104(Y) de las lfneas de memoria cache 106(0)-106(L). Los conjuntos 104(0), 104(2) y 104(Y) estan asociados con la clase de QoS 112(0), mientras que los conjuntos 104(1), 104(3) estan asociados con la clase de QoS 112(1). Las etiquetas de seguimiento de QoSID 202(0)-202(Y) asociadas con las subdivisiones de memoria cache 200(0)-200(Y) indican que el conjunto 104(1) esta actualmente siendo usado por la clase de QoS 112(1) asociada, mientras que los conjuntos 104(2) y 104(Y) estan actualmente siendo usados por la clase de QoS 112(0) asociada. De forma similar, la etiqueta de seguimiento de QoSID 202(0) indica que el conjunto 104(0) no esta actualmente siendo usado por la clase de QoS 112(0) asociada, y la etiqueta de seguimiento de QoSID 202(3) indica que el conjunto 104(3) no esta actualmente siendo usado por la clase de QoS 112(1) asociada.
[0027] En la figura 2C, cada una de las subdivisiones de memoria cache 200(0)-200(Z) corresponde a una de las vfas 108(0)-108(Z) de las lfneas de memoria cache 106(0)-106(L). Las vfas 108(0), 108(2) y 108(Z) estan asociadas con la clase de QoS 112(0), mientras que las vfas 108(1), 108(3) estan asociadas con la clase de QoS 112(1). Las etiquetas de seguimiento de QoSID 202(0)-202(Z) asociadas a las subdivisiones de memoria cache 200(0)-200(Z) indican que la vfa 108(1) esta actualmente siendo usada por la clase de QoS 112(1) asociada, mientras que las vfas 108(2) y 108(Z) estan actualmente siendo usadas por la clase de QoS 112(0) asociada. Asimismo, la etiqueta de seguimiento de QoSID 202(0) indica que la vfa asociada 108(0) no esta actualmente siendo usada por la clase de QoS 112(0) asociada, y la etiqueta de seguimiento de QoSID 202(3) indica que la vfa108(3) no esta actualmente siendo usada por la clase de QoS 112(1) asociada.
[0028] En referencia ahora a la figura 2D, cada una de las subdivisiones de memoria cache 200(0)-200(X) en este ejemplo corresponde a uno de los bancos 102(0)-102(X) de las lfneas de memoria cache 106(0)-106(L). Los bancos 102(0), 102(2) y 102(X) estan asociados con la clase de QoS 112(0), mientras que los bancos 102(1), 102(3) estan asociados con la clase de QoS 112(1). En este ejemplo, las etiquetas de seguimiento de QoSID 202(0)-202(X) asociadas con las subdivisiones de memoria cache 200(0)-200(X) indican que el banco 102(1) esta actualmente siendo usado por la clase de QoS 112(1) asociada, mientras que los bancos 102(2) y 102(X) estan actualmente siendo usados por la clase de QoS 112(0) asociada. De forma similar, la etiqueta de seguimiento de QoSID 202(0) indica que el banco 102(0) no esta actualmente siendo usado por la clase de QoS 112(0) asociada, y la etiqueta de seguimiento de QoSID 202(3) indica que el banco 102(3) no esta actualmente siendo usado por la clase de QoS 112(1) asociada.
[0029] Para ilustrar operaciones a modo de ejemplo del sistema de memoria cache compartida 100 de la Figura 1 para generar las mediciones de uso aproximadas 120, se proporciona las figuras 3A-3B. Al describir las Figuras 3A-3B, se hace referencia a los elementos de las Figuras 1 y 2A-2D en aras de la claridad. En la figura 3A, las operaciones comienzan con el monitor de uso de memoria cache 118 de la figura 1 asociando cada subdivision de memoria cache 200(0) de la pluralidad de subdivisiones de memoria cache (por ejemplo, subdivisiones de memoria cache 200(0)- 200(l), 200(0)-200(Y), 200(0)-200(Z), 200(0)-200(X)) del sistema de memoria cache compartida 100 con una clase de QoS 112(0) de una pluralidad de clases de QoS 112(0)-112(N) (bloque 300). A este respecto, el monitor de uso de memoria cache 118 puede denominarse en el presente documento "un medio para asociar cada subdivision de memoria cache de una pluralidad de subdivisiones de memoria cache del sistema de memoria cache compartida con una clase de QoS de una pluralidad de clases de QoS".
[0030] El monitor de uso de la memoria cache 118 recibe a continuacion una solicitud de acceso a memoria 124 que comprende un QoSID 126 (bloque 302). En consecuencia, el monitor de uso de memoria cache 118 se puede denominar en el presente documento "un medio para recibir una solicitud de acceso a memoria que comprende un QoSID". El monitor de uso de memoria cache 118 accede a una subdivision de memoria cache 200(0) correspondiente a la solicitud de acceso a memoria 124 entre la pluralidad de subdivisiones de memoria cache 200(0)-200(L), 200(0)- 200(Y), 200(0)-200(Z), 200(0)-200(X) (bloque 304). El monitor de uso de memoria cache 118 se puede denominar en la presente documento "un medio para acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache".
[0031] Con referencia continuada a la Figura 3A, el monitor de uso de la memoria cache 118 determina si el QoSID 126 de la solicitud de acceso a memoria 124 corresponde a la clase de QoS 112(0) asociada con la subdivision de memoria cache 200(0) (bloque 306). A este respecto, el monitor de uso de memoria cache 118 se puede denominar en el presente documento "un medio para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la pluralidad de clases de QoS de las clases de QoS asociadas con la subdivision de memoria cache". Basandose en la determinacion, el monitor de uso de memoria cache 118 actualiza la etiqueta de seguimiento de QoSID 202(0) asociada con la subdivision de memoria cache 200(0) correspondiente a la solicitud de acceso a memoria 124 basandose en la determinacion (bloque 308). Por consiguiente, el monitor de uso de memoria cache 118 puede
5
10
15
20
25
30
35
40
45
50
55
60
65
denominarse en el presente documento "un medio para actualizar una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basada en los medios para determinar". El procesamiento se reanuda luego en el bloque 310 de la figura 3B.
[0032] Volviendo ahora a la figura 3B, el monitor de uso de la memoria cache 118 genera una medicion de uso aproximada 120 para una clase de QoS 112(0) de la pluralidad de clases de QoS 112(0)-112(Z), basandose en la pluralidad de etiquetas de seguimiento de QoSID 202(0)-202(N) (bloque 310). El monitor de uso de memoria cache 118 se puede denominar de este modo "un medio para generar una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSlD". En algunos aspectos, las operaciones del bloque 310 para generar la medicion de uso aproximada 120 pueden incluir el monitor de uso de memoria cache 118 primero determinando una fraccion de la pluralidad de subdivisiones de memoria cache 200(0)-200(X) asociadas con la clase de QoS 112(0) (bloque 312). A este respecto, el monitor de uso de memoria cache 118 se puede denominar en el presente documento "un medio para determinar una fraccion de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS". El monitor de uso de memoria cache 118 puede determinar a continuacion un recuento de la pluralidad de subdivisiones de memoria cache 200(0)-200(X) asociadas con la clase de QoS 112(0) para la cual se establece una etiqueta de localizacion de QoSID asociada 202(0) (bloque 314). Por consiguiente, el monitor de uso de memoria cache 118 se puede denominar en el presente documento "un medio para determinar un recuento de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS para la que se establece la etiqueta de seguimiento de QoSID asociada". El monitor de uso de memoria cache 118 puede entonces dividir el recuento de las subdivisiones de memoria cache 200(0)-200(X) por la fraccion para generar la medicion de uso aproximada 120 (bloque 316). El monitor de uso de memoria cache 118 puede de este modo denominarse en el presente documento "un medio para dividir el recuento de la pluralidad de subdivisiones de memoria cache por la fraccion para generar la medicion de uso aproximada".
[0033] La generacion de mediciones de uso aproximadas para sistemas de memoria cache compartida puede proporcionarse o integrarse en cualquier dispositivo basado en procesador. Los ejemplos, sin limitacion, incluyen un modulo de conexion, una unidad de entretenimiento, un dispositivo de navegacion, un dispositivo de comunicaciones, una unidad de datos de ubicacion fija, una unidad de datos de ubicacion movil, un telefono movil, un telefono celular, un ordenador, un ordenador portatil, un ordenador de sobremesa, un asistente digital personal (PDA), un monitor, un monitor de ordenador, un televisor, un sintonizador, una radio, una radio por satelite, un reproductor de musica, un reproductor de musica digital, un reproductor de musica portatil, un reproductor de video digital, un reproductor de video, un reproductor de discos de video digital (DVD) y un reproductor de video digital portatil.
[0034] A este respecto, la Figura 4 es un diagrama de bloques de un sistema basado en un procesador a modo de ejemplo 400 que puede incluir el sistema de memoria cache compartida (SCMS) 100 que tiene el controlador de memoria cache 110 de la figura 1. En este ejemplo, el sistema basado en procesador 400 incluye una o mas CPU 402, cada una de las cuales incluye uno o mas procesadores 404. La o las CPU 402 pueden ser un dispositivo principal. La o las CPU 402 puede(n) tener una memoria cache 406 acoplada al/a los procesador(es) 404 para un rapido acceso a datos almacenados temporalmente. En algunos aspectos, la memoria cache 406 puede comprender el sistema de memoria cache compartida 100 y/o el controlador de memoria cache 110 de la Figura 1. La(s) CPU 402 esta(n) acoplada(s) a un bus de sistema 408 y pueden inter-acoplar dispositivos principales y dispositivos secundarios incluidos en el sistema basado en procesador 400. Como es bien sabido, la o las CPU 402 se comunica(n) con estos otros dispositivos intercambiando informacion de direccion, control y datos por el bus del sistema 408. Por ejemplo, la(s) CPU 402 puede(n) comunicar solicitudes de transacciones de bus a un controlador de memoria 410 como un ejemplo de un dispositivo secundario.
[0035] Al bus del sistema 408 pueden conectarse otros dispositivos principales y secundarios. Segun se ilustra en la Figura 4, estos dispositivos pueden incluir un sistema de memoria 412, uno o mas dispositivos de entrada 414, uno o mas dispositivos de salida 416, uno o mas dispositivos de interfaz de red 418 y uno o mas controladores de visualizacion 420, como ejemplos. El/los dispositivo(s) 414 puede(n) incluir cualquier tipo de dispositivo de entrada, incluyendo, pero sin limitarse a, teclas de entrada, conmutadores, procesadores de voz, etc. El/los dispositivo(s) de salida 416 puede(n) incluir cualquier tipo de dispositivo de salida, incluyendo, pero sin limitarse a audio, video, otros indicadores visuales, etc. El/los dispositivo(s) de interfaz de red 418 puede(n) ser cualquier dispositivo configurado para permitir el intercambio de datos a y desde una red 422. La red 422 puede ser cualquier tipo de red, incluyendo, pero sin limitarse a, una red cableada o inalambrica, una red privada o publica, una red de area local (LAN), una red de area local amplia (WLAN), una red de area amplia (WAN), una red BLUETOOTH™ e Internet. El/los dispositivo(s) de interfaz de red 418 puede(n) configurarse para soportar cualquier tipo de protocolo de comunicaciones deseado. El sistema de memoria 412 puede incluir una o mas unidades de memoria 424(0)-424(N).
[0036] La o las CPU 402 tambien pueden estar configuradas para acceder al controlador o a los controladores de visualizacion 420 a traves del bus del sistema 408, para controlar la informacion enviada a una o mas pantallas 426. El/los controlador(es) de visualizacion 420 envia(n) informacion a la(s) pantalla (s) 426, para que se visualice(n) a traves de uno o mas procesadores de video 428, que procesan la informacion que vaya de visualizarse a un formato adecuado para la(s) pantalla(s) 426. La o las pantallas 426 pueden incluir cualquier tipo de pantalla, incluyendo, pero
5
10
15
20
25
30
35
40
45
sin limitarse a, una pantalla de tubo de rayos catodicos (CRT), una pantalla de cristal liquido (LCD), una pantalla de plasma, etc.
[0037] Los expertos en la materia apreciaran, ademas, que los diversos bloques logicos, modulos, circuitos y algoritmos ilustrativos descritos en relacion con los aspectos divulgados en el presente documento pueden implementarse como hardware electronico. Los dispositivos descritos en el presente documento pueden emplearse en cualquier circuito, componente de hardware, circuito integrado (IC) o chip de IC, como ejemplos. La memoria divulgada en el presente documento puede ser una memoria de cualquier tipo y tamano y puede configurarse para almacenar cualquier tipo de informacion deseada. Para ilustrar claramente esta intercambiabilidad, anteriormente se han descrito diversos componentes, bloques, modulos, circuitos y pasos ilustrativos, en general en terminos de su funcionalidad. Como se implementa dicha funcionalidad depende de la aplicacion en particular, de las elecciones de diseno y/o de las restricciones de diseno que se imponen en el sistema general. Los expertos en la tecnica pueden implementar la funcionalidad descrita de varias maneras para cada aplicacion particular, pero no se deberia interpretar que dichas decisiones de implementacion suponen apartarse del alcance de las reivindicaciones adjuntas.
[0038] Los diversos bloques logicos, modulos y circuitos ilustrativos descritos en relacion con los aspectos divulgados en el presente documento pueden implementarse o realizarse con un procesador, con un procesador de senales digitales (DSP), con un circuito integrado de aplicacion especifica (ASIC), con una matriz de puertas programable in situ (FPGA) o con otro dispositivo logico programable, logica de transistor o de puertas discretas, componentes de hardware discretos, o con cualquier combinacion de los mismos disenada para realizar las funciones descritas en el presente documento. Un procesador puede ser un microprocesador pero, como alternativa, el procesador puede ser cualquier procesador, controlador, micro-controlador o maquina de estado convencional. Un procesador tambien puede implementarse como una combinacion de dispositivos informaticos, por ejemplo, una combinacion de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o mas microprocesadores junto con un nucleo de DSP o cualquier otra configuracion de este tipo.
[0039] Tambien se senala que los pasos operativos descritos en cualquiera de los aspectos a modo de ejemplo en el presente documento se describen para proporcionar ejemplos y analisis. Las operaciones descritas pueden realizarse en numerosas secuencias diferentes distintas de las secuencias ilustradas. Ademas, las operaciones descritas en un unico paso operativo pueden realizarse realmente en varios pasos diferentes. Adicionalmente, pueden combinarse uno o mas pasos operativos analizados en los aspectos a modo de ejemplo. Se entendera que los pasos operativos ilustrados en los diagramas de flujo pueden someterse a numerosas modificaciones diferentes, como resultara inmediatamente evidente para un experto en la tecnica. Los expertos en la tecnica tambien entenderan que la informacion y las senales pueden representarse usando cualquiera entre una amplia variedad de distintas tecnologias y tecnicas. Por ejemplo, los datos, las instrucciones, los comandos, la informacion, las senales, los bits, los simbolos y los chips que puedan haberse mencionado a lo largo de la descripcion anterior pueden representarse mediante tensiones, corrientes, ondas electromagneticas, campos o particulas magneticos, campos o particulas opticos o cualquier combinacion de los mismos.
[0040] La anterior descripcion de la invencion se proporciona para permitir que cualquier experto en la tecnica realice o use la divulgacion. Varias modificaciones de la divulgacion seran facilmente evidentes para los expertos en la tecnica, estando dichas modificaciones dentro del alcance de las reivindicaciones adjuntas. Por lo tanto, la divulgacion no esta concebida para limitarse a los ejemplos y disenos ilustrativos descritos en el presente documento, sino que se le concede el alcance de las reivindicaciones adjuntas.

Claims (13)

1.
10
15
20
25
30
2.
35
3.
40 4.
5.
45
6.
50 7.
55
60
REIVINDICACIONES
Un sistema de memoria cache compartida (100), que comprende:
un medio para asociar cada subdivision de memoria cache de una pluralidad de subdivisiones de memoria cache (200(0)-200(Y)) del sistema de memoria cache compartida con una clase de calidad de servicio, QoS, de una pluralidad de clases de QoS (112);
un medio para recibir una solicitud de acceso a memoria que comprende un identificador de QoS, QoSID;
un medio para acceder a una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache;
un medio para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la clase de QoS de la pluralidad de clases de QoS asociadas con la subdivision de memoria cache;
un medio para actualizar una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID (202) asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basandose en los medios para determinar; y
un medio para generar una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID, caracterizado por que dicho medio para generar la medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS, basandose en la pluralidad de etiquetas de seguimiento de QoSID, comprende:
un medio para determinar una fraccion de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS;
un medio para determinar un recuento de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS para la cual se establece la etiqueta de seguimiento de QoSID asociada; y un medio para dividir el recuento de la pluralidad de subdivisiones de memoria cache por la fraccion para generar la medicion de uso aproximada.
El sistema de memoria cache compartida de la reivindicacion 1, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende una linea de memoria cache (106).
El sistema de memoria cache compartida de la reivindicacion 1, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende un conjunto (104) de lineas de memoria cache.
El sistema de memoria cache compartida de la reivindicacion 1, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende una via (108) de lineas de memoria cache.
El sistema de memoria cache compartida de la reivindicacion 1, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende un banco (102) de lineas de memoria cache.
El sistema de memoria cache compartida de la reivindicacion 1, en el que la pluralidad de etiquetas de seguimiento de QoSID (202) estan asociadas a un subconjunto distribuido de la pluralidad de subdivisiones de memoria cache.
El sistema de memoria cache compartida (100) de cualquier reivindicacion anterior, que comprende:
un monitor de uso de memoria cache (118) configurado para:
proporcionar dichos medios para asociar dicha subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache;
proporcionar dichos medios para recibir dicha solicitud de acceso a memoria que comprende dicho QoSID; proporcionar dichos medios para acceder a dicha subdivision de memoria cache;
proporcionar dichos medios para determinar si el QoSID de la solicitud de acceso a memoria corresponde a la clase de QoS asociada con la subdivision de memoria cache;
proporcionar dichos medios para actualizar dicha etiqueta de seguimiento de QoSID de la pluralidad de etiquetas de seguimiento de QoSID; y
5
10
15
20
25
30
35
40
45
50
55
proporcionar dichos medios para generar dicha medicion de uso aproximada
8. El sistema de memoria cache compartida de la reivindicacion 7 integrado en un circuito integrado, IC.
9. El sistema de memoria cache compartida de la reivindicacion 7, integrado en un dispositivo seleccionado del grupo que consta de: un descodificador, una unidad de entretenimiento, un dispositivo de navegacion, un dispositivo de comunicaciones, una unidad de datos de ubicacion fija, una unidad de datos de ubicacion movil, un telefono movil, un telefono celular, un ordenador, un ordenador portatil, un ordenador de sobremesa, un asistente digital personal, PDA, un monitor, un monitor de ordenador, un televisor, un sintonizador, una radio, una radio por satelite, un reproductor de musica, un reproductor de musica digital, un reproductor de musica portatil, un reproductor de video digital, un reproductor de video, un reproductor de disco de video digital, DVD, y un reproductor de video digital portatil.
10. Un procedimiento para aproximar el uso de la memoria cache compartida, que comprende:
asociar (300) cada subdivision de memoria cache de una pluralidad de subdivisiones de memoria cache de un sistema de memoria cache compartida con una clase de calidad de servicio, QoS, de una pluralidad de clases de QoS;
recibir (302) una solicitud de acceso a memoria que comprende un identificador de QoS, QoSID;
acceder a (304) una subdivision de memoria cache correspondiente a la solicitud de acceso a memoria entre la pluralidad de subdivisiones de memoria cache;
determinar (306) si el QoSID de la solicitud de acceso a memoria corresponde a la clase de QoS de la pluralidad de clases de QoS asociadas con la subdivision de memoria cache;
actualizar (308) una etiqueta de seguimiento de QoSID de una pluralidad de etiquetas de seguimiento de QoSID asociadas con la subdivision de memoria cache correspondiente a la solicitud de acceso a memoria basandose en la determinacion; y
generar (310) una medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS basandose en la pluralidad de etiquetas de seguimiento de QoSID caracterizada por que dicho paso de generar la medicion de uso aproximada para la clase de QoS de la pluralidad de clases de QoS, basandose en la pluralidad de etiquetas de seguimiento de QoSID, comprende:
determinar (312) una fraccion de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS;
determinar (314) un recuento de la pluralidad de subdivisiones de memoria cache asociadas con la clase de QoS para la cual se establece la etiqueta de seguimiento de QoSID asociada; y
dividir (316) el recuento de la pluralidad de subdivisiones de memoria cache por la fraccion para generar la medicion de uso aproximada.
11. El procedimiento segun la reivindicacion 10, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende una linea de memoria cache.
12. El procedimiento segun la reivindicacion 10, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende un conjunto de lineas de memoria cache.
13. El procedimiento segun la reivindicacion 10, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende una via de lineas de memoria cache.
14. El procedimiento segun la reivindicacion 10, en el que cada subdivision de memoria cache de la pluralidad de subdivisiones de memoria cache comprende un banco de lineas de memoria cache.
15. El procedimiento segun la reivindicacion 10, en el que la pluralidad de etiquetas de seguimiento de QoSID estan asociadas a un subconjunto distribuido de la pluralidad de subdivisiones de memoria cache.
ES15797233.2T 2014-11-25 2015-11-09 Generación de mediciones de uso aproximadas para sistemas de memoria caché compartida Active ES2692855T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462084469P 2014-11-25 2014-11-25
US201462084469P 2014-11-25
US201514860993 2015-09-22
US14/860,993 US9697126B2 (en) 2014-11-25 2015-09-22 Generating approximate usage measurements for shared cache memory systems
PCT/US2015/059685 WO2016085642A1 (en) 2014-11-25 2015-11-09 Generating approximate usage measurements for shared cache memory systems

Publications (1)

Publication Number Publication Date
ES2692855T3 true ES2692855T3 (es) 2018-12-05

Family

ID=56010345

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15797233.2T Active ES2692855T3 (es) 2014-11-25 2015-11-09 Generación de mediciones de uso aproximadas para sistemas de memoria caché compartida

Country Status (11)

Country Link
US (1) US9697126B2 (es)
EP (1) EP3224727B1 (es)
JP (1) JP6262408B1 (es)
KR (1) KR101847905B1 (es)
CN (1) CN107003947B (es)
AU (1) AU2015354704B2 (es)
BR (1) BR112017010869A2 (es)
ES (1) ES2692855T3 (es)
HU (1) HUE039628T2 (es)
TW (1) TWI612422B (es)
WO (1) WO2016085642A1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10055158B2 (en) * 2016-09-22 2018-08-21 Qualcomm Incorporated Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems
US10936490B2 (en) * 2017-06-27 2021-03-02 Intel Corporation System and method for per-agent control and quality of service of shared resources in chip multiprocessor platforms
US10678690B2 (en) * 2017-08-29 2020-06-09 Qualcomm Incorporated Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
US11520700B2 (en) 2018-06-29 2022-12-06 Intel Corporation Techniques to support a holistic view of cache class of service for a processor cache
US11693708B2 (en) * 2019-04-24 2023-07-04 Netflix, Inc. Techniques for increasing the isolation of workloads within a multiprocessor instance

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156821A (ja) * 2005-12-05 2007-06-21 Fujitsu Ltd キャッシュシステム及び共用2次キャッシュ
US7725657B2 (en) * 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
US8296522B2 (en) * 2007-12-20 2012-10-23 Intel Corporation Method, apparatus, and system for shared cache usage to different partitions in a socket with sub-socket partitioning
US8244982B2 (en) * 2009-08-21 2012-08-14 Empire Technology Development Llc Allocating processor cores with cache memory associativity
US8667493B2 (en) 2010-05-07 2014-03-04 Advanced Micro Devices, Inc. Memory-controller-parallelism-aware scheduling for multiple memory controllers
US8458399B2 (en) 2010-11-17 2013-06-04 Lsi Corporation Methods and structure for determining cache size in a storage system
EP2696289B1 (en) * 2011-04-07 2016-12-07 Fujitsu Limited Information processing device, parallel computer system, and computation processing device control method
US8850122B2 (en) 2011-11-30 2014-09-30 International Business Machines Corporation Cache optimization via predictive cache size modification
US8751746B2 (en) 2011-12-15 2014-06-10 Apple Inc. QoS management in the L2 cache
US10554505B2 (en) 2012-09-28 2020-02-04 Intel Corporation Managing data center resources to achieve a quality of service

Also Published As

Publication number Publication date
HUE039628T2 (hu) 2019-01-28
EP3224727A1 (en) 2017-10-04
JP2018503891A (ja) 2018-02-08
KR101847905B1 (ko) 2018-04-11
AU2015354704A1 (en) 2017-05-04
WO2016085642A1 (en) 2016-06-02
EP3224727B1 (en) 2018-08-15
TWI612422B (zh) 2018-01-21
BR112017010869A2 (pt) 2018-01-09
CN107003947B (zh) 2018-08-03
US20160147655A1 (en) 2016-05-26
AU2015354704B2 (en) 2018-03-29
US9697126B2 (en) 2017-07-04
JP6262408B1 (ja) 2018-01-17
KR20170087883A (ko) 2017-07-31
TW201633149A (zh) 2016-09-16
CN107003947A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
ES2692855T3 (es) Generación de mediciones de uso aproximadas para sistemas de memoria caché compartida
JP7116047B2 (ja) プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法
ES2693341T3 (es) Proporcionar control de asignación de memoria caché compartida en sistemas de memoria caché compartida
TWI781201B (zh) 使用以處理器為基礎之系統中用於分區資源之內插而提供精細度之服務品質控制
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
TWI627533B (zh) 提供記憶體管理單元分割之轉譯快取及其相關設備、方法及電腦可讀取媒體
CN115210697A (zh) 用于转换后备缓冲器中的多个页面大小的灵活存储和优化搜索
ES2870516T3 (es) Proporcionar una gestión escalable de la caché de la memoria dinámica de acceso aleatorio (DRAM) mediante el uso de las cachés indicadoras de la caché DRAM
US10754795B2 (en) MMU assisted address sanitizer