MX2007015246A - Metodo y aparatos para administrar accesos de memoria cache. - Google Patents
Metodo y aparatos para administrar accesos de memoria cache.Info
- Publication number
- MX2007015246A MX2007015246A MX2007015246A MX2007015246A MX2007015246A MX 2007015246 A MX2007015246 A MX 2007015246A MX 2007015246 A MX2007015246 A MX 2007015246A MX 2007015246 A MX2007015246 A MX 2007015246A MX 2007015246 A MX2007015246 A MX 2007015246A
- Authority
- MX
- Mexico
- Prior art keywords
- cache
- data
- bank
- shared
- type
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
En un sistema de multiprocesador, los accesos a una memoria cache en banco, de un procesador determinado, son controlados de manera que los accesos de datos compartidos son dirigidos a uno o mas bancos designados para mantener datos compartidos y/o datos no compartidos, los accesos son dirigidos a uno o mas bancos designados para mantener datos no compartidos; un banco de datos no compartidos puede ser designado exclusivamente para mantener datos no compartidos, de manera que los accesos de datos compartidos no interfieren con los accesos no compartidos para ese banco; tambien, un banco de datos compartidos puede ser designado exclusivamente para mantener datos compartidos, y uno o mas bancos pueden ser designados para mantener tanto datos compartidos como no compartidos; un circuito de control de acceso dirige los accesos compartidos y no compartidos a bancos respectivos con base en la recepcion de una senal de indicacion compartida en asociacion con los accesos; ademas, en una o mas modalidades, el circuito de control de acceso reconfigura una o mas designaciones de banco en respuesta a una senal de configuracion de banco.
Description
MÉTODO Y APARATOS PARA ADMINISTRAR ACCESOS DE MEMORIA CACHE
CAMPO DE LA INVENCIÓN
La presente invención se refiere generalmente a microprocesadores, y muy particularmente, se refiere a la administración de memorias caché de microprocesador.
ANTECEDENTES DE LA INVENCIÓN
Los microprocesadores de rendimiento superior con frecuencia utilizan una estructura de memoria jerárquica, incluyendo una cantidad base de memoria principal y uno o más niveles superiores de memorias caché más rápidas y más pequeñas a fin de hacer coincidir de manera más estrecha la velocidad de la memoria con la velocidad del procesador. Por ejemplo, las memorias caché Nivel 1 (Ll) generalmente residen en chip y representan la memoria caché más pequeña y más rápida disponible para el microprocesador. Las memorias caché Nivel 2 (L2) residen en chip o fuera de chip, y proporcionan de cierta forma cantidades más lentas, pero por lo regular más grandes, de memoria caché que una memoria caché Ll para el microprocesador. Puede haber niveles adicionales de memorias caché progresivamente más lentas (y más grandes) entre el microprocesador y la memoria principal. En operación, la memoria caché opera como una memoria intermedia entre el microprocesador y la memoria principal lenta (comparativamente) , y se utiliza para mantener copias de las instrucciones y/o datos que por lo regular el microprocesador necesita con mayor frecuencia. Si una copia de una instrucción o artículo de datos necesario reside en la memoria caché, el microprocesador lee/escribe esa copia en lugar de tener acceso a la memoria principal y así evita retrasos de acceso potencialmente mucho más prolongados asociados con el acceso de la memoria principal . Las operaciones de almacenamiento en memoria caché se vuelven más complicadas en ambientes de multiprocesador, en donde dos o más microprocesadores comparten espacio de memoria. En esos ambientes, dos o más microprocesadores pueden almacenar en memoria caché los mismos datos provenientes de la memoria principal. Es decir, múltiples microprocesadores pueden almacenar en memoria caché una copia del mismo artículo de datos de la memoria principal. Para asegurar que cada microprocesador tiene acceso al valor más recientemente actualizado de un artículo de datos determinado, se debe utilizar cierto método de sincronización de memorias caché entre los microprocesadores. La sincronización de memoria caché mantiene la "coherencia" de memoria caché proporcionando cierto mecanismo para evitar que los microprocesadores individuales utilicen un artículo de datos cuyo valor ya no está actualizado a través de las operaciones de los otros microprocesadores. La sincronización de la memoria caché se puede administrar ya sea mediante coherencia ejecutada por software o mediante software a través de instrucciones de administración de memoria caché. Un tipo de coherencia de memoria caché ejecutado por hardware es un enfoque tipo "difusión". Los enfoques basados en difusión para sincronización de memoria caché generalmente se basan en cada microprocesador que transmite mensajes relacionados con las operaciones de memoria de datos. A su vez, los microprocesadores individuales, o sus controladores de memoria caché, monitorean ("vigilan") esos mensajes para determinar si las acciones de otro microprocesador han invalidado algún artículo de datos mantenido en sus memorias caché asociadas. El uso de estos denominados enlaces de "vigilancia" representa entonces un método relativamente directo y efectivo para mantener la coherencia de memoria caché en sistemas de multiprocesador. Sin embargo, los enlaces de vigilancia pueden reducir el ancho de banda de acceso efectivo de la memoria caché, debido a que los accesos de tráfico de vigilancia a una memoria caché determinada por lo regular son soportados en el mismo "puerto" o enlace de acceso que se utiliza para los accesos de memoria caché generados de manera local por los microprocesadores. La cantidad de tráfico de vigilancia aumenta significativamente conforme aumenta el conteo de microprocesadores y, eventualmente, la cantidad de tráfico de vigilancia puede limitar significativamente el rendimiento general del sistema. Varios factores para los problemas de interferencia de acceso a memoria caché presentados por altos volúmenes de tráfico de vigilancia incluyen el uso de memoria caché de múltiples puertos, en donde el tráfico de vigilancia y el tráfico localmente generado, tienen acceso a la memoria caché en diferentes puertos. Sin embargo, dichas configuraciones pueden aumentar significativamente el tamaño, el consumo de potencia, y el gasto de la memoria caché .
SUMARIO DE LA INVENCIÓN
Por lo menos en una modalidad de un método de administración de memoria caché en banco, la interferencia entre accesos de memoria caché de datos compartidos (por ejemplo, accesos de memoria caché asociados con el tráfico de vigilancia) y accesos de memoria caché de datos no compartidos se reduce mediante la reducción o eliminación del mezclado de datos compartidos y datos no compartidos por lo menos en un banco de memoria caché de la memoria caché almacenada en banco. La reducción o eliminación de dicho mezclado puede comprender designar uno o más bancos de la memoria caché en banco para mantener datos compartidos, y dirigir los accesos de memoria caché para datos compartidos al banco o bancos designados de memoria caché. De manera adicional o alternativa, dicho mezclado se puede reducir o eliminar designando uno o más bancos de la memoria caché en banco para mantener datos no compartidos, y dirigiendo los acceso de memoria caché para datos no compartidos al banco o bancos designados de memoria caché. Por ejemplo, acceso de memoria caché determinados (lectura o escritura) son dirigidos a ubicaciones particulares de memoria caché en bancos particulares de memoria caché de acuerdo con una "función de selección de banco", la cual puede ser activada, por lo menos en parte, por una o más señales de dirección de acceso de memoria caché. Tal como aquí se utiliza, el término "función de selección de banco" , abarca una variedad de diferentes métodos y algoritmos utilizados para seleccionar un banco particular para una dirección de acceso de memoria caché particular. Por ejemplo, el término puede cubrir la dirección y/u otras funciones de condensación de señal o puede representar decodificación de dirección directa. Sin embargo, se ejecuta la función de selección de banco, de acuerdo por lo menos con una modalidad de administración de memoria caché tal como aquí se muestra, un indicador de tipo de acceso (por ejemplo, un indicador de acceso compartido) modifica la función de selección de banco, de manera que los accesos de memoria caché para datos compartidos y/o para datos no compartidos, son diriqidos (direccionados) a uno o más bancos designados en una memoria caché en banco. Por ejemplo, la función de selección de banco puede dirigir los accesos compartidos a un banco de acceso compartido o a un banco de acceso mezclado (compartido y no compartido) . Dicha acción "enfoca" la actividad de acceso de memoria caché para datos compartidos en los bancos designados para mantener datos compartidos. De manera similar, el indicador de tipo de acceso se puede utilizar para modificar la función de selección de banco a fin de dirigir los acceso no compartidos a un banco de acceso no compartido o a un banco de acceso mezclado, para enfocar la actividad de acceso de memoria caché para datos no compartidos en los bancos designados para mantener datos no compartidos. En ambos casos, la interferencia entre los accesos de datos compartidos y los accesos de datos no compartidos se reduce o elimina, por lo raenos para un banco en la memoria caché en banco. Un método amplio para reducir la interferencia entre los acceso de memoria caché de datos compartidos y los accesos de memoria caché de datos no compartidos por lo menos para un banco en una memoria caché en banco, comprende designar uno o más primeros bancos de la memoria caché en banco para mantener un primer tipo de datos, el primer tipo de datos es uno de datos compartidos y datos no compartidos, y dirigir los accesos de memoria caché para el primer tipo de datos a uno o más primeros bancos. El método además puede comprender designar uno o más segundos bancos de la memoria caché -en banco para mantener un segundo tipo de datos, dicho segundo tipo de datos es el otro de los datos compartidos y no compartidos, y dirigir el acceso de memoria caché para el segundo tipo de datos a uno o más segundos bancos. Cualquiera o todas estas desiqnaciones pueden ser exclusivas o no exclusivas (mezcladas). Una modalidad de una memoria caché en banco que incorpora el método anterior, o variaciones del método anterior, comprende un circuito de control de acceso configurado para reducir la interferencia entre los accesos de memoria caché de datos compartidos y los accesos de memoria caché de datos no compartidos con base en la dirección de los accesos de memoria caché para un primer tipo de datos a uno o más primeros bancos de memoria caché de la memoria caché en banco que están designados para mantener el primer tipo de datos, el primer tipo de datos es uno de datos compartidos y datos no compartidos. El circuito de control de acceso, además puede dirigir los acceso de memoria caché para un segundo tipo de datos a uno o más segundos bancos de memoria caché de la memoria caché en banco, en donde el segundo tipo de datos es el otro de datos compartidos y no compartidos. En dichas modalidades, el circuito de control de acceso puede responder de manera directa o indirecta al indicador de tipo de acceso, el cual puede ser una señal de acceso compartido proporcionada a la memoria caché en banco en asociación con accesos de memoria caché. El estado o valor lógico, o alguna otra característica de la señal de indicador de acceso compartido, indica si un acceso de memoria caché determinado es para datos compartidos (o no compartidos), y la función de selección de banco del circuito de control de acceso es modificada por consiguiente para dirigir el acceso de memoria caché al banco de memoria caché apropiado. La función de selección de banco también se puede modificar de acuerdo con una señal de configuración de banco. Es decir, la configuración de la memoria caché en banco se puede modificar según sea necesario o según se desee, de manera que la designación de uno o más bancos para datos compartidos, datos no compartidos, o datos mezclados, se pueden modificar. Dichos cambios se pueden controlar a nivel del sistema operativo de la computadora y/o se pueden controlar mediante programas individuales que corren en el procesador asociado con la memoria caché en banco .
BREVE DESCRIPCIÓN DE LAS FIGURAS
La figura 1 es un diagrama en bloques que ilustra un circuito de multip'rocesador que incluye memorias caché en banco. La figura 2 es un diagrama en bloques que ilustra uno de los procesadores y memorias caché en banco en el circuito de multiprocesador de la figura 1. La figura 3 es un diagrama de flujo lógico que ilustra una modalidad para controlar los accesos de memoria caché en banco como una función de tipos de acceso de datos no compartidos/compartidos. La figura 4 es un diagrama en bloques que ilustra una modalidad de un circuito de control de acceso para controlar los accesos de memoria caché en banco. La fiqura 5 es un diagrama en bloques que ilustra una memoria caché en banco que tiene un arreglo de bancos no compartidos y compartidos.
La figura 6 es un diagrama en bloques que ilustra otra modalidad de un circuito de control de acceso para controlar accesos de memoria caché en banco. La figura 7 es un diagrama en bloques que ilustra una memoria caché en banco que tiene otro arreglo de bancos no compartidos y compartidos.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN
La figura 1 ilustra, por lo menos de manera parcial, un circuito de multiprocesador 8 que incluye una pluralidad de microprocesadores 10 y memorias caché de memoria asociada 12 que están acopladas a través de un enlace de sistema 14 a una memoria principal 16. Los procesadores 10 se pueden ejecutar de manera conjunta, tal como en un dispositivo de circuito inteqrado, un circuito de sistema en un chip (módulo de múltiples chips), o se pueden ejecutar por separado. De manera similar, las memorias caché 12 se pueden integrar en su totalidad o en parte en los procesadores 10, o se pueden ejecutar por separado. Por ejemplo, la memoria caché 12-1 puede incluir la memoria caché Nivel 1 (Ll) que está incluida dentro del procesador 10-1 y la memoria caché Nivel 2 (L2) que se ejecuta de manera interna o externa. La modalidad ilustrada del procesador 10-1 incluye un controlador de memoria caché 18-1, el cual puede incluir un número de características de administración de memoria. Configuraciones similares se pueden utilizar para los procesadores 10-2 y 10-3, para sus memorias caché correspondientes 12-2 y 12-3. Por supuesto, las ejecuciones físicas generales seleccionadas para los procesadores 10 y las memorias caché 12 generalmente no son únicas a los métodos de control de acceso de memoria caché y aparatos aquí analizados, y aquellos expertos en la técnica reconocerán la oportunidad que existe para realizar varias modificaciones de ejecución de circuito. Por ejemplo, se puede utilizar, según se desee o según sea necesario, un número mayor o menor de procesadores 10 y memorias caché correspondientes 12 del que se ilustra. Con estas variaciones en mente, el circuito de multiprocesador 8 puede operar como un circuito de Multiprocesamiento Simétrico (SMP) , en donde los procesadores 10 de manera cooperativa ejecutan uno o más programas de cómputo, secuencias de programa, etcétera. Los procesadores 10 pueden comprender, cada uno, un procesador de Ordenador de Juego de Instrucciones Reducido (RISC) , que incluye una unidad núcleo que tiene uno o más conductos de ejecución de instrucciones, y que además incluye unidades de búsqueda y carga previa de instrucciones para almacenamiento en memoria caché predictivo de instrucciones y datos, memorias intermedias de traducción lateral para rastrear los mapeos y autorizaciones de memoria, etcétera. También, tal como se observa, cada uno de los procesadores 10 además puede incluir un controlador de memoria caché 18, el cual puede comprender parte de una unidad de administración de memoria más qrande que conecta en interfaz el procesador con una de las memorias caché 12 respectivas, con el enlace de sistema 14, y con la memoria principal 16. Por supuesto, cada uno de los procesadores 10 además puede comprender elementos funcionales que no se ilustran, tal como circuitos de depuración, etc. La memoria principal 16 se puede configurar con uno o más rangos de memoria "compartida" utilizada para mantener datos que pueden ser operados por cualquiera o más de los procesadores 10, y uno o más rangos de memoria "no compartida" para uso por procesadores particulares 10. En ese contexto, cada uno de los procesadores 10 puede almacenar en memoria caché una mezcla de datos no compartidos y compartidos en una de las memorias caché 12 correspondientes. En una o más modalidades, por lo menos una de las memorias caché 12 está configurada como una memoria caché en banco, que comprende dos o más bancos de memoria caché. De preferencia, los diferentes bancos proporcionan capacidad de acceso independiente, de manera que los accesos a un banco no interfieren con los accesos a otro banco. Debido a la necesidad de mantener la coherencia de datos entre las memorias caché 12, el circuito de multiprocesamiento 8 emplea una o más formas de protocolos de coherencia de datos basados en "difusión", también denominados como protocolos de "vigilancia". Con la vigilancia, las operaciones por parte de uno de los procesadores 10 en las copias almacenadas en memoria caché de datos compartidos, son reconocidas por los procesadores restantes 10, de manera que se puede realizar una descarga de memoria caché apropiada y/o actualizaciones de memoria principal se pueden realizar para asegurar que cada uno de los procesadores 10 opere en copias válidas actuales de esos datos compartidos.. A manera de un ejemplo no limitativo, el protocolo de vigilancia del circuito de multiprocesamiento se puede basar en difusión de escritura, en donde cada uno de los procesadores 10 y/o memorias caché 12 envía todos los escritos en el enlace del sistema 14 de manera que otros procesadores/memorias caché pueden actualizar sus datos almacenados en memoria caché respectivos según sea necesario. Alternativamente, se pueden utilizar protocolos de invalidación de escrito, en donde el hecho de escribir en una línea caché determinada en una de las memorias caché 12, ocasiona que la misma línea caché presente en cualquiera de las otras memorias caché 12 sea invalidada. (Una "línea caché" generalmente comprende un bloque de datos determinado almacenado en memoria caché a partir de un rango de dirección particular en la memoria principal) . Por supuesto, se pueden ejecutar otros protocolos de vigilancia para el circuito de multiprocesamiento 8, tal como Modificado-Compartido-Inválido (MSI), Modificado-Exclusivo-Compartido-Inválido (MESI), o Modificado-Propietario-Exclusivo-Compartido-Inválido (MOESI) . Con una o más formas de tráfico de vigilancia que fluyen en el enlace de sistema 14, los accesos a las memorias caché 12 pueden incluir una cantidad importante de tráfico de vigilancia asociado con el mantenimiento de la coherencia de datos compartidos a través de las memorias caché 12. De manera adicional, cada uno de los procesadores 10 realiza accesos locales tanto a los datos compartidos como a los datos no compartidos mantenidos en su memoria caché asociada 12 para cumplir con los requerimientos del códiqo que se ejecuta en ésta. Por ejemplo, los accesos a la memoria caché 12-1 comprenden una mezcla de accesos de datos compartidos relacionados con la viqilancia para mantener la coherencia de datos, y accesos locales por el procesador 10-1 llevados a cabo en asociación con su ejecución en curso de instrucciones de programa. De manera convencional, los accesos relacionados con la operación y relacionados con la vigilancia al mismo puerto de memoria caché, o al mismo banco en la memoria caché en banco, compiten entre sí en términos de ancho de banda de acceso de memoria caché global. Entonces, en sistemas convencionales, el tráfico de vigilancia reduce el rendimiento efectivo al competir con los accesos de memoria caché que no son de vigilancia para el ancho de banda de memoria caché disponible. La figura 2 ilustra una modalidad del procesador 10-1 (también denominado como "Pl") y su memoria caché asociada 12-1. En la ilustración, la memoria caché en banco 12-1 comprende un circuito de control de acceso 20, y cuatro bancos de memoria caché 22-1 a 22-4. Se puede ejecutar, según sea necesario o según se desee, un número mayor o menor de bancos de memoria caché 22. También, en las situaciones donde la memoria caché en banco 12-1 comprende la memoria caché L2 fuera de chip, la ejecución del circuito de control de acceso 20 como parte de la memoria caché en banco 12-1 puede ser conveniente. Sin embargo, en una o más . modalidades, el circuito de control de acceso 20 se ejecuta a bordo, como parte del procesador 10-1. En dichas modalidades, el circuito de control de acceso 20 se puede ejecutar como parte del controlador de memoria caché 18-1. En cualquier caso, en operación, el circuito de control de acceso 20- reconoce los accesos de memoria caché como relacionados con datos no compartidos o datos compartidos, y de manera correspondiente, dirige esos accesos de acuerdo con las designaciones no compartidas/compartidas asociadas con los bancos 22. En una o más modalidades, dicho reconocimiento se basa en el procesador 10-1 que proporciona una señal de indicación de acceso compartido y/o una señal de configuración de banco al circuito de-.- .control de acceso. Las mismas configuraciones o configuraciones similares se pueden adoptar para cualquiera de los procesadores 10-2 y 10-3 (es decir, P2, P3) y para sus memorias caché correspondientes 12-2 y 12-3. Sin embargo,' cada uno de los bancos 22 dentro de una de las memorias . caché en banco determinadas 12 de preferencia es .accesible de manera independiente, de manera que los accesos a uno de los bancos 22 no interfiere con los accesos a los bancos restantes 22. Con esa configuración de memoria caché, uno o más de los bancos 22 se pueden designar para mantener datos no compartidos, datos compartidos, o una mezcla de los mismos. Si bancos particulares 22 son designados de manera exclusiva, para mantener datos no compartidos, entonces los accesos no relacionados con vigilancia asociados con el mantenimiento de la coherencia de datos compartidos, interferirán con los accesos de datos no compartidos locales para aquellos bancos particulares 22. Por supuesto, bancos particulares 22 se pueden designar exclusivamente para mantener datos compartidos, o para mantener una mezcla de datos compartidos y no compartidos. En general, bancos diferentes a los bancos 22 se pueden designar para uso no compartido, uso compartido, o uso mezclado, y un método para conservar el ancho de banda de acceso del procesador local por lo menos para uno de los bancos 22, comprende excluir datos compartidos por lo menos de ese banco. La dirección de los accesos de datos compartidos y no , compartidos de esa forma depende de las diferentes designaciones asociadas con los bancos particulares 22. De manera más amplia, una modalidad del circuito de control de acceso 20 se puede configurar para ejecutar un método para reducir la interferencia entre los accesos de memoria caché de datos compartidos y los accesos de memoria caché de datos no compartidos por lo menos para un banco en una memoria caché en banco. Por ejemplo, el circuito de control de acceso 20 puede reducir dicha interferencia designando uno o más primeros bancos 22 de la memoria caché en banco 12 para mantener un primer tipo de datos, el primer tipo de datos es uno de datos compartidos y datos no compartidos, y dirigir accesos de memoria caché para el primer tipo de datos a uno o más primeros bancos. Los accesos se pueden reconocer teniendo como objetivo el primer tipo de datos con base en el indicador de tipo de acceso proporcionado al circuito de control de acceso 12 en asociación con los accesos de memoria caché. El circuito de control de acceso 20 además se puede configurar para designar uno o más segundos bancos 22 de la memoria caché en banco 12 para mantener un segundo tipo de datos, el segundo tipo de datos es el otro de datos compartidos y no compartidos, y dirigir el acceso de memoria caché para el segundo tipo de datos a uno o más segundos bancos 22. En dichas modalidades, la designación de uno o más primeros bancos 22 de la memoria caché en banco 12 para mantener el primer tipo de datos, puede comprender designar un primer banco de memoria caché 22 para mantener los datos compartidos. De manera similar, la designación de uno o más segundos bancos de memoria caché 22 para mantener un segundo tipo de datos puede comprender designar un segundo banco de memoria caché 22 para mantener datos no compartidos. Con dicho arreglo, los accesos de memoria caché para el primer tipo de datos son dirigidos a ese primer banco de memoria caché 22, y los accesos de memoria caché para datos no compartidos son dirigidos a ese segundo banco de memoria caché 22. Se debe observar también que, una o ambas de esas designaciones pueden ser exclusivas, de manera que todos los accesos compartidos y/o no compartidos son diriqidos de manera exclusiva a uno o más bancos designados 22 en la memoria caché en banco 12. Sin embargo, las designaciones también pueden ser no exclusivas, de manera que tanto los accesos compartidos como no compartidos son dirigidos al mismo banco, por lo menos para un rango determinado de direcciones de memoria caché. Incluso en las situaciones en donde uno de los bancos de memoria caché determinado 22 es designado como un banco mezclado, la cantidad o porcentaje de ese banco utilizado para datos compartidos o no compartidos se puede controlar, por ejemplo, en primer lugar, se puede utilizar para datos compartidos o no compartidos, de manera que la interferencia de acceso en ese banco para el tipo no primario de datos es mínima. El indicador de tipo de acceso puede ser una señal u otro tipo de valor que esté establecido bajo el control de software. Por ejemplo, el indicador de tipo de acceso puede comprender un bit en una tabla de página dentro de un microprocesador 10 que está escrita por el software, de manera que el hardware (por ejemplo, procesador 10) tiene acceso al indicador después de ejecutar una búsqueda de tabla de página con base en una dirección de memoria determinada. En otra modalidad, el indicador de tipo de acceso puede comprender los resultados de una decodificación/comparación de dirección contra ciertos registros' de configuración escritos por software dentro del procesador 10. Por ejemplo, el software puede configurar dos registros para indicar el inicio y el fin de una región compartida, y un procesador 10 puede establecer la señal de indicador de tipo de acceso al estado apropiado mediante la comparación de toda o una porción de una dirección de acceso contra esos registros para determinar si un acceso determinado es compartido o no. En otra modalidad todavía, un registro programado de software dentro . del procesador 10 se utiliza para indicar si un cierto tipo de acceso es compartido no, y el estado o valor de ese registro entonces sirve como la señal de indicador de tipo de acceso. La determinación de compartido/no compartido se puede basar en el conocimiento de software respecto a qué tipos de accesos pueden tener acceso a qué regiones de memoria. Dicho arreglo puede ser útil para accesos .asociados con operaciones de administración de memoria caché, operaciones de administración de memoria intermedia de traducción lateral (TLB) , y otras funciones especialidades, tal como el envío de datos en corriente, etcétera. Sin embargo, con los métodos anteriores de dirección de acceso compartido/no compartido en mente, la figura 3 ilustra lógica de procesamiento que se puede ejecutar para soportar la dirección de accesos compartidos y no compartidos, y comienza con la designaciones de bancos particulares 22 en cualquiera de las memorias caché 12 como compartida o no compartida (Paso 100). Este paso puede ser un paso implícito, tal como en la situación donde las memorias caché en banco 12 están configuradas con designaciones de banco predefinidas compartidas y no compartidas, o puede ser un paso explícito en las modalidades en donde las designaciones de banco son configurables . Asumiendo que se realizan las designaciones deseadas, el procesamiento continúa realizando un acceso de memoria caché (Paso 102), y determinando el tipo de acceso como compartido o no compartido (Paso 104). Si el acceso es para datos compartidos (sí en el Paso 106) , éste es dirigido a uno de los bancos 22 designado para mantener los datos compartidos. Por el contrario, si el acceso es para datos no compartidos (no en el Paso 106) , éste es dirigido a uno de los bancos 22 designado para mantener datos no compartidos . La figura 4 ilustra una modalidad del circuito de control de acceso 20, que comprende un circuito selector de banco 24 que está confiqurado para dirigir los accesos de memoria caché a bancos no compartidos o compartidos 22 con base en la "condensación" de uno o más bits de dirección generados para los accesos de memoria caché. Por ejemplo, con dos bancos 22, una o más líneas de dirección se pueden utilizar para generar una señal de selección "BANCO 0" o una señal de selección "BANCO 1", correspondiente a los accesos compartidos o no compartidos, respectivamente. La figura 5 ilustra dos de esos bancos de acceso 22 de manera selectiva . De manera similar, las figuras 6 y 7 ilustran respectivamente otra modalidad del circuito de control de acceso 20, y un ejemplo correspondiente de designaciones de banco compartido y no compartido. De manera más particular, la modalidad del circuito de control de acceso 20, que se ilustra en la figura 6, dirige los accesos de memoria caché de datos no compartidos y compartidos como una función de condensación de una o más líneas de dirección y una señal de indicación de acceso compartido y, de manera opcional, una señal de configuración de banco. La señal de indicador de acceso compartido puede comprender uno o más bits, y se puede clasificar de acuerdo con lógica positiva o negativa, para indicar que un acceso de memoria caché determinado es para una línea caché que se mapea a una región compartida o no compartida de la memoria principal. Dicha indicación compartida se puede generar fácilmente como una función de información de página de memoria almacenada para el uso del procesador. Al igual que la señal de indicación compartida, la señal de configuración de banco puede ser uno o más bits, y puede ser generada por el procesador. Con el procesador 10-1 sirviendo como un ejemplo, el controlador de memoria caché 18-1 se puede configurar para generar la señal de indicador compartida y/o la señal de configuración de 'banco para soportar la operación del circuito de control de acceso 20. En las situaciones donde se desee, el controlador de memoria caché 18-1 se puede configurar para actualizar la señal de configuración de banco de manera dinámica, en respuesta a un remapeo de la memoria principal 16, por ejemplo, o en respuesta a diferentes modos de programa o sistema operativo. En dichos casos, el controlador de memoria caché 18-1 se puede configurar para descargar o, de otra forma, invalidar o anular la memoria caché en banco 12-1 como parte de la reconfiguración de las designaciones de banco compartido/no compartido. Aquellos expertos en la técnica apreciarán que pueden existir configuraciones similares en cualquiera de los procesadores 10-2 y 10-3, los controladores de memoria caché 18-2 y 18-3, y las memorias caché en banco 12-2 y 12-3. Por supuesto, aquellos expertos en la técnica deberán apreciar que el análisis aquí realizado se refiere a varias modalidades ilustrativas y no limita la presente invención, y tampoco a las figuras anexas. Más bien, la presente invención 'queda limitada únicamente por las siquientes reivindicaciones y sus equivalentes legales.
Claims (22)
1.- Un método para reducir la interferencia entre accesos de memoria caché de datos compartidos y accesos de memoria caché de datos no compartidos por lo menos para un banco en una memoria caché en banco, el método comprende: designar uno o más primeros bancos de la memoria caché en banco para mantener un primer tipo de datos, dicho primer tipo de datos es uno de datos compartidos y datos no compartidos; y dirigir los accesos de memoria caché para el primer tipo de datos a uno o más primeros bancos.
2.- El método de conformidad con la reivindicación 1, que además comprende designar uno o más segundos bancos de la memoria caché en banco para mantener un segundo tipo de datos, dicho segundo tipo de datos es el otro de los datos compartidos y no compartidos, y dirigir el acceso de memoria caché para el segundo tipo de datos a uno o más segundos bancos.
3.- El método de conformidad con la reivindicación 2, caracterizado porque la designación de uno o más primeros bancos de la memoria caché en banco para mantener un pfimer tipo de datos comprende designar un primer banco de memoria caché de la memoria caché en banco para mantener los datos compartidos, y en donde la designación de uno o más segundos bancos de memoria caché para mantener un segundo tipo de datos comprende designar un segundo banco de memoria caché de la memoria caché en banco para mantener los datos no compartidos.
4. - El método de conformidad con la reivindicación .,3, caracterizado porque dirigir los accesos de memoria caché para el primer tipo de datos a uno o más primeros bancos comprende dirigir el acceso de memoria caché para datos compartidos al primer banco de memoria caché, y además comprende dirigir los accesos de memoria caché para datos no compartidos al segundo banco de memoria caché .
5.- El método de conformidad con la reivindicación 1, que además comprende desiqnar uno o más segundos bancos de la memoria caché en banco para mantener un segundo tipo de datos, dicho segundo tipo de datos es el otro de datos compartidos y no compartidos, y dirigir el acceso de memoria caché para el segundo tipo de datos a uno o más segundos bancos.
6.- El método de conformidad con la reivindicación 1, caracterizado porque la designación de uno o más primeros bancos de la memoria caché en banco para mantener un primer tipo de datos comprende designar por lo menos un banco de la memoria caché en banco exclusivamente para mantener el primer tipo de datos.
7. - El método de conformidad con la reivindicación 1, caracterizado porque la desiqnación de uno o más primeros bancos de la memoria caché en banco para mantener un primer tipo de datos comprende designar por lo menos un banco de la memoria caché en banco para mantener una mezcla del primer tipo de datos y un segundo tipo de datos, dicho segundo tipo de datos es el otro de los datos compartidos y no compartidos.
8. - El método de conformidad con la reivindicación 1, caracterizado porque dirigir los accesos de memoria caché para el primer tipo de datos a uno o más primeros bancos comprende configurar una función de selección de banco para que responda a una señal de indicador de tipo de acceso que indique si un acceso de memoria caché es para el primer tipo de datos.
9.- El método de conformidad con la reivindicación 8, caracterizado porque la configuración de una función de selección de banco para que responda a un indicador de tipo de acceso que indica si un acceso de memoria caché es para el primer tipo de datos comprende configurar la función de selección de banco para dirigir un acceso de memoria caché determinado a una ubicación o ubicaciones particulares en un banco particular de la memoria caché en banco como una función de una o más señales de dirección de acceso de memoria caché y la señal de indicador de tipo.de acceso.
10.- El método de conformidad con la reivindicación 1, caracterizado porque la designación de uno o más primeros bancos de la memoria caché en banco para mantener un primer tipo de datos comprende configurar una función de selección de banco utilizada para dirigir los accesos de memoria caché a un banco particular en la memoria caché en banco para que responda a una señal de indicador de tipo, de acceso que indica si un acceso de memoria caché individual involucra el primer tipo de datos.
11.- El método de conformidad con la reivindicación 10, que además comprende reconfigurar la función de selección de banco según sea necesario para modificar las designaciones de uno o más primeros bancos de la memoria caché en banco.
12.- El , método de conformidad con la reivindicación 11, que además comprende descarqar los datos almacenados en memoria caché actualmente de uno o más primeros bancos de la memoria caché en banco en respuesta a la modificación de las designaciones.
13.- Un método para reducir la interferencia de acceso de memoria caché en una memoria caché en banco entre los accesos de memoria caché para datos compartidos y los accesos de memoria caché para datos no compartidos, el método comprende reducir o eliminar el mezclado de datos compartidos y no compartidos por lo menos en un banco de memoria caché de la memoria caché en banco.
14.- El método de conformidad con la reivindicación 13,r caracterizado porque la reducción o eliminación del mezclado de datos compartidos y no compartidos por lo menos en un banco de memoria caché de la memoria caché en banco comprende designar uno o más bancos de la memoria caché en banco para mantener datos compartidos, y dirigir los accesos de memoria caché para datos compartidos a uno o más bancos de memoria caché designados .
15.- El método de conformidad con la reivindicación 13, caracterizado porque la reducción o eliminación del mezclado de datos compartidos y no compartidos por lo menos en un banco de memoria caché de la memoria caché en banco comprende designar uno o más bancos de la memoria caché en banco para mantener datos no compartidos, y dirigir los accesos de memoria caché para datos no compartidos a uno o más bancos de memoria caché designados .
16.- Una memoria caché en banco que comprende un circuito de control de acceso configurado para reducir la interferencia entre accesos de memoria caché de datos compartidos y accesos de memoria caché de datos no compartidos dirigiendo los accesos de memoria caché para un primer tipo de datos a uno o más primeros bancos de memoria caché de la memoria caché en banco que están designados para mantener el primer tipo de datos, dicho primer tipo de datos es uno de datos compartidos y datos no compartidos.
17.- La memoria caché en banco de conformidad con la reivindicación ,16, , caracterizada porque el circuito de control de acceso está configurado para dirigir los accesos de memoria caché para un segundo tipo de datos a uno o más segundos bancos de memoria caché de la memoria caché en banco, en donde el segundo tipo de datos es el otro de datos compartidos y no compartidos.
18.- La memoria caché en banco de conformidad con la reivindicación 17, caracterizada porque el circuito de control de acceso está configurado para determinar si un acceso de memoria caché determinado es para el primer o segundo tipos de datos con base en una señal de indicador de tipo de acceso que es proporcionada a la memoria caché en banco en asociación con el acceso de memoria caché determinado.
19.- La memoria caché en banco de conformidad con la reivindicación 16, caracterizada porque el circuito de control de acceso está configurado para ejecutar una función de selección de banco con base en la recepción de una señal de indicador de tipo de acceso en asociación con los accesos de memoria caché, y en donde el circuito de control de acceso está configurado para dirigir un acceso de memoria caché determinado a uno o más primeros bancos de memoria caché si la señal de indicador de tipo de acceso indica que el acceso de memoria caché determinado es para el primer tipo de datos. .
20.- La memoria caché en banco de conformidad con la reivindicación 16, caracterizada porque por lo menos uno o más primeros bancos de memoria caché está designado exclusivamente para mantener datos del primer tipo.
21.- La memoria caché en banco de conformidad con la reivindicación 16, caracterizada porque por lo menos uno o más primeros bancos de memoria caché está designado de manera no exclusiva para mantener datos del primer tipo.
22.- La memoria caché en banco de conformidad con la reivindicación 16, caracterizada porque el circuito de control de acceso se puede configurar para permitir la modificación de la designación de uno o más primeros bancos de memoria caché.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/144,207 US7353319B2 (en) | 2005-06-02 | 2005-06-02 | Method and apparatus for segregating shared and non-shared data in cache memory banks |
PCT/US2006/021401 WO2006130809A2 (en) | 2005-06-02 | 2006-06-02 | Method and apparatus for managing cache memory accesses |
Publications (1)
Publication Number | Publication Date |
---|---|
MX2007015246A true MX2007015246A (es) | 2008-02-21 |
Family
ID=37027583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MX2007015246A MX2007015246A (es) | 2005-06-02 | 2006-06-02 | Metodo y aparatos para administrar accesos de memoria cache. |
Country Status (10)
Country | Link |
---|---|
US (1) | US7353319B2 (es) |
EP (1) | EP1902370B1 (es) |
JP (1) | JP4477688B2 (es) |
KR (1) | KR100953854B1 (es) |
CN (1) | CN101228512B (es) |
AT (1) | ATE459920T1 (es) |
DE (1) | DE602006012678D1 (es) |
IL (1) | IL187807A0 (es) |
MX (1) | MX2007015246A (es) |
WO (1) | WO2006130809A2 (es) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8661265B1 (en) | 2006-06-29 | 2014-02-25 | David Dunn | Processor modifications to increase computer system security |
US7925815B1 (en) * | 2006-06-29 | 2011-04-12 | David Dunn | Modifications to increase computer system security |
US8041854B2 (en) * | 2007-09-28 | 2011-10-18 | Intel Corporation | Steering data units to a consumer |
US7809875B2 (en) * | 2008-06-30 | 2010-10-05 | Wind River Systems, Inc. | Method and system for secure communication between processor partitions |
US20100017569A1 (en) * | 2008-07-16 | 2010-01-21 | Agere Systems Inc. | Pcb including multiple chips sharing an off-chip memory, a method of accessing off-chip memory and a mcm utilizing fewer off-chip memories than chips |
US8112585B2 (en) * | 2009-04-30 | 2012-02-07 | Netapp, Inc. | Method and apparatus for dynamically switching cache policies |
JP5121896B2 (ja) * | 2010-08-11 | 2013-01-16 | 株式会社東芝 | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
US20130159630A1 (en) * | 2011-12-20 | 2013-06-20 | Ati Technologies Ulc | Selective cache for inter-operations in a processor-based environment |
US9195658B2 (en) | 2012-12-12 | 2015-11-24 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Managing direct attached cache and remote shared cache |
CN103268321B (zh) * | 2013-04-19 | 2016-04-27 | 中国建设银行股份有限公司 | 高并发交易数据处理方法和装置 |
US20150370707A1 (en) * | 2014-06-24 | 2015-12-24 | Qualcomm Incorporated | Disunited shared-information and private-information caches |
JP6558009B2 (ja) * | 2015-03-23 | 2019-08-14 | 富士ゼロックス株式会社 | 転送装置、転送システムおよびプログラム |
KR102411920B1 (ko) | 2017-11-08 | 2022-06-22 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN110688331B (zh) * | 2018-07-05 | 2021-08-17 | 珠海全志科技股份有限公司 | 一种SoC芯片及读取数据的方法 |
GB2584440B (en) * | 2019-06-03 | 2021-12-08 | Advanced Risc Mach Ltd | Cache arrangement for graphics processing systems |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69429777T2 (de) * | 1993-09-30 | 2002-10-17 | Apple Computer, Inc. | System zur dezentralen massenspeichersteuerung eines rechners mit virtuellem speicher |
US5854638A (en) * | 1996-02-02 | 1998-12-29 | Opti Inc. | Unified memory architecture with parallel access by host and video controller |
GB9701960D0 (en) | 1997-01-30 | 1997-03-19 | Sgs Thomson Microelectronics | A cache system |
US5943686A (en) | 1997-04-14 | 1999-08-24 | International Business Machines Corporation | Multiple cache directories for non-arbitration concurrent accessing of a cache memory |
US6029237A (en) * | 1997-10-08 | 2000-02-22 | Dell Usa, L.P. | Method for simulating the presence of a diskette drive in a NetPC computer that contains only a hard disk drive |
US6751704B2 (en) | 2000-12-07 | 2004-06-15 | International Business Machines Corporation | Dual-L2 processor subsystem architecture for networking system |
US7174415B2 (en) * | 2001-06-11 | 2007-02-06 | Zoran Corporation | Specialized memory device |
-
2005
- 2005-06-02 US US11/144,207 patent/US7353319B2/en active Active
-
2006
- 2006-06-02 EP EP06771913A patent/EP1902370B1/en not_active Not-in-force
- 2006-06-02 CN CN2006800271420A patent/CN101228512B/zh active Active
- 2006-06-02 WO PCT/US2006/021401 patent/WO2006130809A2/en active Application Filing
- 2006-06-02 AT AT06771913T patent/ATE459920T1/de not_active IP Right Cessation
- 2006-06-02 DE DE602006012678T patent/DE602006012678D1/de active Active
- 2006-06-02 MX MX2007015246A patent/MX2007015246A/es active IP Right Grant
- 2006-06-02 JP JP2008514886A patent/JP4477688B2/ja not_active Expired - Fee Related
- 2006-06-02 KR KR1020077030698A patent/KR100953854B1/ko not_active IP Right Cessation
-
2007
- 2007-12-02 IL IL187807A patent/IL187807A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR100953854B1 (ko) | 2010-04-20 |
WO2006130809A3 (en) | 2007-02-08 |
EP1902370A2 (en) | 2008-03-26 |
US20060277356A1 (en) | 2006-12-07 |
EP1902370B1 (en) | 2010-03-03 |
CN101228512B (zh) | 2011-05-11 |
DE602006012678D1 (de) | 2010-04-15 |
CN101228512A (zh) | 2008-07-23 |
JP4477688B2 (ja) | 2010-06-09 |
JP2008542923A (ja) | 2008-11-27 |
US7353319B2 (en) | 2008-04-01 |
KR20080014899A (ko) | 2008-02-14 |
IL187807A0 (en) | 2008-08-07 |
ATE459920T1 (de) | 2010-03-15 |
WO2006130809A2 (en) | 2006-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1902370B1 (en) | Method and apparatus for managing cache memory accesses | |
KR101569160B1 (ko) | 캐시에서의 웨이 할당 및 웨이 로킹 방법 | |
US9298643B2 (en) | Performance and power improvement on DMA writes to level two combined cache/SRAM that is cached in level one data cache and line is valid and dirty | |
US7389402B2 (en) | Microprocessor including a configurable translation lookaside buffer | |
US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
US5623632A (en) | System and method for improving multilevel cache performance in a multiprocessing system | |
US20090006756A1 (en) | Cache memory having configurable associativity | |
US20030126365A1 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
EP2430551A2 (en) | Cache coherent support for flash in a memory hierarchy | |
ZA200205198B (en) | A cache line flush instruction and method, apparatus, and system for implementing the same. | |
US8135910B2 (en) | Bandwidth of a cache directory by slicing the cache directory into two smaller cache directories and replicating snooping logic for each sliced cache directory | |
US6038642A (en) | Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system | |
US8332592B2 (en) | Graphics processor with snoop filter | |
US6314500B1 (en) | Selective routing of data in a multi-level memory architecture based on source identification information | |
US7779205B2 (en) | Coherent caching of local memory data | |
US6928522B2 (en) | Unbalanced inclusive tags | |
JPH10143431A (ja) | マイクロプロセッサおよびコンピュータシステムにおけるデータのキャッシング方法 | |
JP2007114890A (ja) | 演算処理装置およびキャッシュ動作方法 | |
CN118012455A (zh) | 可配置的存储器***及其存储器管理方法 | |
JP2004086920A (ja) | キャッシュメモリを備えた情報処理装置 | |
GB2401227A (en) | Cache line flush instruction and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |