ES2950681T3 - Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché - Google Patents

Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché Download PDF

Info

Publication number
ES2950681T3
ES2950681T3 ES18840560T ES18840560T ES2950681T3 ES 2950681 T3 ES2950681 T3 ES 2950681T3 ES 18840560 T ES18840560 T ES 18840560T ES 18840560 T ES18840560 T ES 18840560T ES 2950681 T3 ES2950681 T3 ES 2950681T3
Authority
ES
Spain
Prior art keywords
cache
memory
reconfigurable
containers
determining
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
ES18840560T
Other languages
English (en)
Inventor
Elad Raz
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.)
Next Silicon Ltd
Original Assignee
Next Silicon Ltd
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 Next Silicon Ltd filed Critical Next Silicon Ltd
Application granted granted Critical
Publication of ES2950681T3 publication Critical patent/ES2950681T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Abstract

Se proporciona un método para la coherencia de la caché en una arquitectura de caché reconfigurable. El método incluye recibir un comando de acceso a la memoria, en donde el comando de acceso a la memoria incluye al menos una dirección de una memoria a la que acceder; determinar al menos un parámetro de acceso basándose en el comando de acceso a la memoria; y determinar un contenedor de caché de destino para servir el comando de acceso a la memoria basándose en parte en al menos un parámetro de acceso y la dirección. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché
Campo técnico
La divulgación se refiere generalmente a arquitecturas de memoria y, más específicamente, a arquitecturas informáticas integradas y a arquitecturas informáticas configurables.
Antecedentes
En un procesador de múltiples núcleos de memoria compartida con una memoria caché separada para cada procesador, es posible tener muchas copias de datos compartidos: una copia en la memoria principal y una en la memoria caché local de cada procesador que solicitó una copia de los datos. Cuando se cambia una de las copias de datos, las otras copias deben reflejar ese cambio.
La coherencia de memoria caché es la uniformidad de datos de recursos compartidos que requieren múltiples memorias caché locales. Cuando los clientes (por ejemplo, núcleos de procesador) en un sistema mantienen memorias caché locales de un recurso de memoria común, pueden surgir problemas con datos incoherentes, por ejemplo, las memorias caché locales tienen diferentes valores de una ubicación de dirección única.
En la figura 1 se muestra una arquitectura 100 convencional de ejemplo para implementar la coherencia de memoria caché. Cada núcleo de procesador 110-1 a 110-M (denominado en lo sucesivo en el presente documento, por razones de simplicidad, individualmente un núcleo de procesador 110 y colectivamente los núcleos de procesador 110) está asociado con una memoria caché local 120-1 a 120-M correspondiente (denominada en lo sucesivo en el presente documento, por razones de simplicidad, individualmente una memoria caché local 120 y colectivamente unas memorias caché locales 120 por razones de simplicidad). Todos los procesadores de núcleo 110 y sus memorias caché locales 120 correspondientes acceden a una memoria compartida 130.
Debido a que la memoria 130 es compartida por los múltiples núcleos de procesador 110 (y por sus memorias caché locales 120 respectivas), cuando se accede a la memoria compartida 130, un núcleo de procesador (por ejemplo, el núcleo 110-1) necesita generalmente copiar un bloque de datos desde la memoria compartida 130 a su propia memoria caché (por ejemplo, la memoria caché 120-1) para acelerar el acceso de datos. Cuando múltiples núcleos de procesador 110 acceden a la memoria compartida 130, una copia del bloque de datos en la memoria compartida 130 existe en las memorias caché locales 120 de todos esos núcleos de procesador 110. Para mantener la coherencia de las copias, se requiere un mecanismo de coherencia de memoria caché (CCM) 125 para gestionar la compartición de datos.
Específicamente, cuando se realiza una operación de escritura (o de almacenamiento) sobre un bloque de datos compartidos o una copia del bloque de datos compartidos, se envía una operación de invalidación de escritura a un núcleo de procesador 110 que almacena una copia del bloque de datos compartidos, para evitar un problema de incoherencia de datos. Para mantener la coherencia de memoria caché, el mecanismo 125 registra un estado de memoria caché de un bloque de datos (o un intervalo de bloque de datos). El estado de memoria caché del bloque de datos (o el intervalo de bloque de datos) puede incluir un tipo de acceso y un compartidor del bloque de datos (o el intervalo de bloque de datos).
El mecanismo de coherencia de memoria caché 125 utilizado en arquitecturas convencionales funciona a modo de canalización. En este sentido, una porción grande del tiempo de procesamiento se gasta en mover datos desde un área de la memoria 130 a la(s) memoria(s) caché local(es) 120, y desde una memoria caché local 120 a otra. Además, la arquitectura convencional de almacenamiento en caché como se muestra en la figura 1 es estática por naturaleza y, por lo tanto, tienen lugar ciertas ineficiencias, debido a que el funcionamiento de canalización estática no se ajusta absolutamente a cada caso de uso.
La limitación de un recurso de memoria compartida también puede solucionarse usando una arquitectura de memoria caché reconfigurable. Habitualmente, tales arquitecturas soportan una subdivisión de memoria caché dinámica al nivel de hardware. Una arquitectura de memoria caché reconfigurable está diseñada habitualmente para permitir que los procesadores de núcleo atribuyan dinámicamente recursos de memoria caché al tiempo que se garantiza un aislamiento de memoria caché estricto entre las tareas en tiempo real. Por ejemplo, la publicación de solicitud de patente de Estados Unidos 2004/034750A1 (Horn Robert [EE. UU.]), 19 de febrero de 2004, en lo sucesivo '750, divulga un método para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable.
Las arquitecturas de memoria caché reconfigurable tienen como objetivo principal la reducción de potencia usando una correlación de direccionamiento directo. Sin embargo, tales arquitecturas no mejoran la latencia de acceso de memoria.
Por lo tanto, sería ventajoso proporcionar una arquitectura de procesamiento que supere las deficiencias que se han hecho notar anteriormente.
Sumario
A continuación se da un sumario de varias realizaciones de ejemplo de la divulgación. Este sumario se proporciona para la comodidad del lector, para proporcionar un entendimiento básico de tales realizaciones, y no define completamente la amplitud de la divulgación. Este sumario no es una visión de conjunto exhaustiva de todas las realizaciones contempladas y no pretende ni identificar elementos clave o críticos de todas las realizaciones ni delimitar el alcance de cualquiera de los aspectos o de todos ellos. Su único fin es presentar algunos conceptos de una o más realizaciones de una forma simplificada como un preludio a una descripción más detallada que se presenta más adelante. Por comodidad, la expresión "algunas realizaciones" puede usarse en el presente documento para referirse a una única realización o a múltiples realizaciones de la divulgación.
Algunas realizaciones divulgadas en el presente documento incluyen un método para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable. El método comprende recibir una orden de acceso de memoria, en donde la orden de acceso de memoria incluye al menos una dirección de una memoria a la que acceder; determinar al menos un parámetro de acceso basándose en la orden de acceso de memoria; y determinar un contenedor de memoria caché de destino para atender la orden de acceso de memoria basándose en parte en el al menos un parámetro de acceso y la dirección.
Algunas realizaciones divulgadas en el presente documento incluyen una arquitectura de memoria caché reconfigurable, que comprende: una memoria; y una pluralidad de nodos de memoria caché acoplados a la memoria, en donde cada nodo de memoria caché se subdivide en una pluralidad de contenedores de memoria caché, en donde el acceso a cualquier contenedor de memoria caché de la pluralidad de contenedores de memoria caché se determina basándose en un parámetro de acceso.
De acuerdo con un aspecto de la presente divulgación, se proporciona un método para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable, que comprende: recibir una orden de acceso de memoria, en donde la orden de acceso de memoria incluye al menos una dirección de una memoria a la que acceder; determinar al menos un parámetro de acceso basándose en la orden de acceso de memoria; y determinar un contenedor de memoria caché de destino para atender la orden de acceso de memoria basándose en parte en el al menos un parámetro de acceso y la dirección. La arquitectura de memoria caché reconfigurable incluye una pluralidad de nodos de memoria caché (225-1, ..., 225-n) acoplados a la memoria, en donde cada nodo de memoria caché es subdividible en una pluralidad de contenedores de memoria caché (310-1, ..., 310-8), en donde el contenedor de memoria caché de destino es uno de la pluralidad de contenedores de memoria caché, y en donde la subdivisión de la pluralidad de contenedores de memoria caché dentro de al menos dos de la pluralidad de nodos de memoria caché es reconfigurable, y la orden de acceso de memoria incluye una identificación unitaria de uno cualquiera de: una entidad física, seleccionada de entre un grupo que consiste en un núcleo de procesamiento y una porción compartida de la memoria; y una entidad lógica, seleccionada de entre un grupo que consiste en: un proceso y un subproceso. El método está caracterizado por que el al menos un parámetro de acceso incluye al menos uno de: una ID de proceso, una ID de núcleo de procesamiento, una ID de subproceso y un bit de memoria caché; y la determinación del al menos un parámetro de acceso comprende además al menos uno de: establecer el parámetro de acceso como un identificador de entidad lógica, sujeto a determinar que la orden de acceso de memoria está asociada con una entidad lógica; y establecer el parámetro de acceso como un identificador de entidad física sujeto a determinar que la orden de acceso de memoria está asociada con una entidad física.
Breve descripción de los dibujos
La materia objeto divulgada en el presente documento se pone particularmente de manifiesto y se reivindica de forma distintiva en las reivindicaciones al final de la memoria descriptiva. Los anteriores y otros objetos, características y ventajas de la invención serán evidentes a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos.
La figura 1 es un diagrama esquemático que muestra un mecanismo de coherencia de memoria caché convencional.
La figura 2 es un diagrama esquemático de una arquitectura de sistema reconfigurable de acuerdo con una realización.
Las figuras 3A-3C son diagramas esquemáticos de una arquitectura de memoria caché reconfigurable de acuerdo con una realización.
La figura 4 es un diagrama esquemático de una unidad de E/S y de periféricos acoplada a una arquitectura de memoria caché reconfigurable de acuerdo con una realización.
La figura 5 es un diagrama de flujo que ilustra un método para coherencia de memoria caché en una memoria caché reconfigurable de acuerdo con una realización.
Descripción detallada
En general, las afirmaciones realizadas en la memoria descriptiva de la presente solicitud no limitan necesariamente ninguna de las diversas realizaciones reivindicadas. Además, algunas afirmaciones pueden ser aplicables a algunas características inventivas, pero no a otras. En general, salvo que se indique lo contrario, elementos singulares pueden figurar en plural y viceversa sin pérdida de generalidad. En los dibujos, números semejantes se refieren a partes semejantes a lo largo de varias vistas.
La figura 2 ilustra un diagrama esquemático de ejemplo de una arquitectura de procesamiento 200 que muestra el funcionamiento de una memoria caché reconfigurable de acuerdo con una realización.
En una realización, la arquitectura de procesamiento 200 incluye una circuitería de procesamiento 210 acoplada a una memoria 220 a través de una interfaz o bus 240. También se conectada una unidad de entrada/salida (E/S) y de periféricos 230 a la interfaz o bus 240 para permitir funciones especiales, el acceso a elementos externos, o ambos. La unidad de E/S y de periféricos 230 puede interaccionar con un bus de interconexión de componentes periféricos (PCI) o de PCI Express (PCIe), coprocesadores, controladores de red y similares (no mostrados). Debería apreciarse que el bus de PCIe habilita la conectividad con otros dispositivos periféricos.
La memoria 220 se acopla a una pluralidad de nodos de memoria caché 225-1 a 225-n (denominados en lo sucesivo en el presente documento, por razones de simplicidad, individualmente un nodo de memoria caché o colectivamente unos nodos de memoria caché). Cada nodo de memoria caché 225 está configurado para almacenar datos procesados por la circuitería de procesamiento 210 y para cargar datos en la circuitería de procesamiento 210. Habitualmente, el acceso a los nodos de memoria caché 225 se realiza a través de órdenes de acceso de memoria, tales como almacenar (o escribir), cargar (o leer). Cada nodo de memoria caché 225 puede lograrse usando RAM estática (SRAM) de velocidad alta, RAM dinámica (DRAM) y similares. En una realización, cada nodo de memoria caché 225 puede subdividirse lógicamente en una pluralidad de contenedores de memoria caché (no mostrados en la figura 2), como se analiza con detalle a continuación en el presente documento.
La circuitería de procesamiento 210 puede ser cualquier dispositivo de procesamiento o dispositivo computacional, tal como, pero sin limitación, una unidad central de procesamiento (CPU), una matriz de puertas programables en campo (FPGA), una unidad de procesamiento de gráficos (GPU), un arquitectura reconfigurable de granularidad gruesa (CGRA), un circuito integrado para aplicaciones específicas (ASIC), un ordenador cuántico, y así sucesivamente. Habitualmente, la circuitería de procesamiento 210 es un procesador de múltiples núcleos. Debería hacerse notar que la arquitectura de procesamiento 200 puede soportar adicionalmente una pluralidad de dispositivos de procesamiento 210, por ejemplo, múltiples CPU, CPU híbridas y similares.
En una realización, la circuitería de procesamiento 210 puede lograrse como una arquitectura de procesamiento reconfigurable. Una arquitectura de este tipo puede lograrse como una matriz de elementos lógicos y multiplexores (MUX). Los elementos lógicos pueden incluir unidades lógicas aritméticas (ALU) y unidades funcionales (FU) configuradas para ejecutar funciones de cómputo.
La circuitería de procesamiento 210 está configurada para realizar diversos procesos para proporcionar una arquitectura de memoria caché configurable que mantiene la coherencia de memoria caché entre las memorias caché 225-1 a 225-n. En este sentido, la arquitectura de memoria caché configurable se habilita sin ningún hardware dedicado adicional. La circuitería de procesamiento 210 que proporciona la memoria caché configurable también ejecuta los programas principales diseñados para la arquitectura de procesamiento 200. Por ejemplo, la circuitería de procesamiento 210 puede ejecutar un proceso de aprendizaje automático computacional y ejecutar la coherencia de memoria caché.
Debería apreciarse que, al no usar un hardware dedicado, se asegura el acceso de memoria caché de latencia baja y una utilización de potencia baja por la arquitectura de procesamiento 200. En este sentido, la arquitectura de memoria caché reconfigurable, como se divulga en el presente documento, puede utilizarse para acelerar el funcionamiento de la circuitería de procesamiento 210 (por ejemplo, una CPU, una FPGA, una GPU, un ASIC, etc.).
De acuerdo con las realizaciones divulgadas, la coherencia de memoria caché se logra determinando la ubicación de datos en cualquiera de los nodos y sus contenedores de memoria caché usando una función determinista computada a lo largo de al menos un parámetro de acceso. Los parámetros de acceso son determinados por la circuitería de procesamiento 210. Un parámetro de acceso incluye, por ejemplo, al menos una de una identificación (ID) unitaria que representa una entidad física y una entidad lógica. Los ejemplos de tales entidades incluyen una ID de proceso, una ID de subproceso, una ID de núcleo, un bit de memoria caché, un punto de instrucción de origen, una ID de puerto de memoria, la dirección de acceso de memoria o una combinación de los mismos. El tipo del parámetro de acceso puede asignarse basándose en el tipo de memoria a la que se está accediendo. Por ejemplo, puede accederse a contenedores de memoria compartida a través de, por ejemplo, al menos un bit de memoria caché, al tiempo que puede accederse a contenedores de memoria local a través de al menos una ID de proceso. El tipo de parámetro de acceso puede determinarse durante la compilación o en tiempo de ejecución.
En una realización, la circuitería de procesamiento 210 está configurada para recibir una orden de acceso de memoria, para determinar el parámetro de acceso y para determinar el contenedor de memoria caché de destino basándose en el parámetro de acceso y la dirección designada en la orden de acceso de memoria. Como un ejemplo no limitante, una función determinista, por ejemplo, una función de troceo, un conjunto de reglas de coincidencia de memoria direccionable por contenido ternario (TCAM), una combinación de los mismos, y similares, se computa a lo largo de la dirección y se llama al parámetro de acceso para decidir qué contenedor de memoria caché de los nodos de memoria caché 225 mantiene los datos.
Por ejemplo, una orden de almacenamiento puede recibirse en la circuitería de procesamiento 210 a través de la unidad de E/S y de periféricos 230. Una orden de este tipo puede incluir un bloque de datos y una dirección de memoria en la que guardar el bloque de datos. La circuitería de procesamiento 210 está configurada para determinar si la orden está asociada con, por ejemplo, un proceso particular. Si es así, la ID de proceso del proceso se usa como un parámetro de acceso. Se usa una función computada a lo largo de la dirección y la ID de proceso (que sirve como un parámetro de acceso) para determinar el contenedor de memoria caché de destino para almacenar el bloque de datos. Debería hacerse notar que puede usarse como un parámetro de acceso una ID de subproceso, una ID de núcleo, un bit de memoria caché, y así sucesivamente. Por ejemplo, si la orden almacenada recibida está asociada con un subproceso particular, entonces se utilizará una ID de subproceso.
Debería apreciarse que la arquitectura de sistema 200 descrita anteriormente en el presente documento representa un único dispositivo computacional por razones de simplicidad, y que la arquitectura 200 puede implementarse de igual forma usando una pluralidad de dispositivos computacionales tales como, por ejemplo, CPU, GPU, combinaciones de las mismas, y así sucesivamente.
En una realización, la circuitería de procesamiento 210 está configurada para determinar cuál de los nodos de memoria caché 225 debería subdividirse, y está configurada adicionalmente para subdividir cada nodo 225. Es decir, la circuitería de procesamiento 210 está configurada para determinar en cuántos contenedores subdividir el nodo de memoria caché 225 y el tamaño de cada subdivisión. En una realización, la subdivisión puede ser estática, por ejemplo, en un número predefinido de contenedores que tienen un tamaño igual. En otra realización, la subdivisión puede ser dinámica, en donde la atribución se basa en la utilización de cada contenedor de memoria caché. Para este fin, después de cada iteración de ejecución, se mide la utilización de cada contenedor y, basándose en la utilización medida, se determina si debería modificarse la atribución de los contenedores. Debería hacerse notar que la medición puede realizarse después de la terminación del programa o durante el tiempo de ejecución. Por ejemplo, puede aumentarse el tamaño de contenedores populares, mientras se reduce el tamaño de contenedores menos populares. Además, el número de contenedores puede aumentarse o disminuirse basándose en la utilización medida.
En ciertas realizaciones, algunos nodos de memoria caché 225 pueden subdividirse estáticamente, mientras que otros pueden subdividirse dinámicamente. Debería hacerse notar que, inicialmente, la memoria caché puede subdividirse estadísticamente y, a medida que el programa se ejecuta, la atribución de los contenedores puede modificarse dinámicamente.
En una realización, la dirección de memoria caché se divide entre los contenedores de memoria caché. A cada subdivisión de memoria caché de los nodos de memoria caché 225 puede asignársele una entidad lógica o física diferente. Por ejemplo, el nodo de memoria caché 225-1 puede subdividirse en dos contenedores de memoria caché, con un contenedor de memoria caché dedicado a un primer proceso y el otro contenedor de memoria caché dedicado a un segundo proceso de un programa. Como alternativa, el contenedor de memoria caché puede asignarse a núcleos de procesador de la circuitería de procesamiento 210. Otros ejemplos de entidades a las que pueden atribuirse contenedores de memoria caché incluyen subprocesos. En la figura 3 se ilustra adicionalmente una subdivisión en contenedores de un nodo de memoria caché.
Debería apreciarse que esta lista solo es ilustrativa y no es exhaustiva de los muchos tipos de entidades lógicas y entidades físicas que pueden asignarse a contenedores de memoria caché. Debería apreciarse adicionalmente que un contenedor de memoria caché puede ser cualquier porción de un nodo de memoria caché.
Las figuras 3A-3C ilustran un diagrama esquemático de ejemplo de una arquitectura de memoria caché reconfigurable 300 de acuerdo con una realización. En el ejemplo ilustrado en las figuras 3A-3C, se muestra un único nodo de memoria caché 225-n que se subdivide dinámicamente en un número de contenedores 310.
Específicamente, como se muestra en la figura 3A, el nodo de memoria caché 225-n se subdivide inicialmente en 4 contenedores de memoria caché 310-1, 310-2, 310-3 y 310-4 que tienen unos tamaños similares. Después de una primera iteración de ejecución, durante el tiempo de ejecución o entre ejecuciones, la subdivisión del nodo 225-n se cambia para incluir 8 contenedores 310-1 a 310-8 que tienen unos tamaños similares (la figura 3B). Después de otra iteración de ejecución, durante el tiempo de ejecución o entre ejecuciones, la subdivisión del nodo 225-n cambia para incluir 8 contenedores 310-1 a 310-8, pero con diferentes tamaños. Como se muestra en la figura 3C, la memoria atribuida al contenedor 310-1 es diferente de la del contenedor 310-8.
De acuerdo con una realización, la arquitectura de memoria caché 300 se distribuye a lo largo de múltiples nodos físicos en donde cada nodo se divide adicionalmente en uno o más contenedores lógicos. Una circuitería de procesamiento de cada nodo físico puede acceder a todos los nodos de memoria caché o a parte de los mismos.
Como se muestra en las figuras 3A a 3C, se utiliza una función de troceo determinista 225 para determinar una memoria caché de destino. La función 325 es computada por la circuitería de procesamiento 210. Debería apreciarse que la arquitectura de memoria caché reconfigurable 300 habilita una granularidad más alta del uso de memoria, mejorando por lo tanto el funcionamiento del sistema y mejorando el rendimiento en tiempo de ejecución.
Debería apreciarse adicionalmente que la arquitectura de memoria caché reconfigurable 300 representa un único nodo de memoria caché 225-n y un número de 4 u 8 contenedores 310 meramente por razones de simplicidad. La arquitectura 300 incluiría habitualmente una pluralidad de nodos de memoria caché que pueden subdividirse en cualquier número de contenedores de memoria caché.
En una realización, un contenedor de memoria caché de memoria 310 puede realizar órdenes de acceso de memoria atómicas. Tales órdenes pueden cargar, modificar condicionalmente y, posteriormente, almacenar el valor de memoria en una ubicación, como una única operación. Debe apreciarse que, cuando múltiples órdenes de acceso atómicas se ejecutan en paralelo desde múltiples puertos de memoria, y se ejecutan secuencialmente en el contenedor de memoria caché, estas proporcionan una vista coherente a todos los puertos de memoria.
La figura 4 muestra un diagrama esquemático de ejemplo de una arquitectura de memoria caché reconfigurable 400 acoplada a unos periféricos de E/S (P de E/S) 410 de acuerdo con una realización. En esta configuración, las unidades de entrada/salida (E/S) y de periféricos 410-1 a 410-k (k es un número entero mayor que o igual a 1) pueden incluir un bus de PCI, una PCI Express (PCIe), uno o más coprocesadores, uno o más controladores de red, y similares.
Como se muestra en el presente documento, las órdenes de acceso de memoria son emitidas por los periféricos de E/S 410. La circuitería de procesamiento 210 determina el contenedor de memoria caché de destino basándose en parte en las órdenes recibidas usando una función de troceo determinista 425.
En esta configuración, cualquier señal de datos o de control (por ejemplo, una señal de acuse de recibo) recibida desde el contenedor de memoria caché de destino se correlaciona con el periférico de E/S 410 que emitió la orden recibida. La correlación se realiza mediante una función de correlación 427 que puede implementarse como una función de troceo determinista, como un conjunto de reglas de coincidencia ternarias de memoria direccionable por contenido (TCAM), una combinación de los mismos, y similares. Debería hacerse notar que el acceso de memoria se dirige a las memorias caché locales 120 para realizar la operación de memoria.
La figura 5 muestra un diagrama de flujo 500 de ejemplo de un método para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable de acuerdo con una realización. La arquitectura de memoria caché reconfigurable incluye una pluralidad de nodos de memoria caché acoplados a la memoria, en donde cada nodo de memoria caché se subdivide en una pluralidad de contenedores de memoria caché.
En S510, se recibe una orden de acceso de memoria. Como se ha mencionado anteriormente, la orden puede ser almacenar (escribir) o cargar (leer) datos desde la memoria de una arquitectura de procesamiento. La orden puede recibirse a través de una interfaz tal como, por ejemplo, la unidad de E/S y de periféricos 230. Una orden recibida incluye al menos una dirección de destino en la que van a almacenarse datos o desde la que van a cargarse datos. En una orden de almacenamiento, también se incluyen en la orden recibida los datos que van a almacenarse. La dirección de memoria debería estar dentro de los límites de dirección determinados durante la compilación del código del programa principal.
En S520, se determina al menos un parámetro de acceso. Como se ha hecho notar anteriormente, un parámetro de acceso incluye uno o más de una ID de proceso, una ID de subproceso, un bit de memoria caché, un puntero de almacenamiento, una ID de núcleo de proceso, y así sucesivamente. En una realización, la determinación incluye determinar una entidad lógica o física con la que está asociada la orden recibida. Anteriormente se han analizado con detalle ejemplos para entidades físicas.
En una realización, si la orden recibida se ejecuta como parte de un proceso o subproceso (ambos se consideran entidades lógicas) dedicado, entonces se considerará que la ID de proceso o la ID de subproceso es el parámetro de acceso. En otra realización, si la orden recibida se ejecuta en un núcleo de procesamiento dedicado (considerado una entidad física), entonces se considerará que la ID de núcleo es el parámetro de acceso. En otra realización más, si la orden recibida es para acceder a una memoria compartida (considerada una entidad física), entonces se considerará que un bit de memoria caché es el parámetro de acceso.
En algunas realizaciones, se determinan atributos de carga/almacenamiento. Tales atributos incluyen, por ejemplo, ciertos valores de nunca almacenar en caché, ciertos valores de siempre almacenar en caché, ciertos valores de siempre comprobar, y así sucesivamente. Además, el ordenamiento de la atribución, junto con la sincronización de acceso en la red, permite unas canalizaciones más grandes y una capacidad de procesamiento más alta al tiempo que se simplifican los mecanismos. Tales atributos son ventajosos para memoria volátil así como para mecanismos de bloqueo.
En S530, se determina un contenedor de memoria caché de destino al que acceder. En una realización, la determinación se realiza usando una función determinista computada a lo largo del parámetro de acceso y la dirección designada en la solicitud recibida. De acuerdo con otra realización, la función determinista se conecta a la red de tal modo que la determinación se realiza usando las mismas interfaces.
Se debería hacer notar que los datos se almacenan en, o se cargan desde, el contenedor de memoria caché de destino según sea determinado por la función determinista.
En una realización, S530 incluye recopilar las estadísticas acerca del contenedor de memoria caché de destino al que está accediéndose. Por ejemplo, se determinan el número del contenedor, la frecuencia del acceso al mismo contenedor y el tamaño de los datos que se están escribiendo o leyendo. Estas estadísticas recopiladas pueden utilizarse para cambiar dinámicamente las subdivisiones de los contenedores.
En S540, se comprueba si se han recibido llamadas de sistema adicionales y, si es así, la ejecución continúa con S510; de lo contrario, la ejecución termina.
Las realizaciones divulgadas en el presente documento pueden implementarse como hardware, firmware, software o cualquier combinación de los mismos. El programa de aplicación puede cargarse en y ser ejecutado por una máquina que comprende cualquier arquitectura adecuada. Preferiblemente, la máquina se implementa en una plataforma informática que tiene hardware tal como una o más unidades centrales de procesamiento ("CPU"), una memoria e interfaces de entrada/salida.
La plataforma informática también puede incluir un sistema operativo y un código de microinstrucciones. Los diversos procesos y funciones descritos en el presente documento pueden ser o bien parte del código de microinstrucciones o bien parte del programa de aplicación, o cualquier combinación de los mismos, que pueda ser ejecutado por una CPU, tanto si tal ordenador o procesador se muestra explícitamente como si no.
Además, diversas otras unidades de periféricos, tales como una unidad adicional de almacenamiento de datos, pueden conectarse a la plataforma informática. Además, un medio legible por ordenador no transitorio es cualquier medio legible por ordenador excepto por una señal de propagación transitoria.

Claims (13)

REIVINDICACIONES
1. Un método para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable (300), que comprende:
recibir una orden de acceso de memoria (S510), en donde la orden de acceso de memoria incluye al menos una dirección de una memoria (220) a la que acceder;
determinar al menos un parámetro de acceso (S520) basándose en la orden de acceso de memoria; y determinar un contenedor de memoria caché de destino para atender la orden de acceso de memoria (S530) basándose en parte en el al menos un parámetro de acceso y la dirección;
en donde la arquitectura de memoria caché reconfigurable incluye una pluralidad de nodos de memoria caché (225-1, ..., 225-n) acoplados a la memoria, en donde cada nodo de memoria caché es subdividible en una pluralidad de contenedores de memoria caché (310-1, ..., 310-8), en donde el contenedor de memoria caché de destino es uno de la pluralidad de contenedores de memoria caché, y en donde la subdivisión de la pluralidad de contenedores de memoria caché dentro de al menos dos de la pluralidad de nodos de memoria caché es reconfigurable; y
en donde la orden de acceso de memoria incluye una identificación unitaria de una cualquiera de:
una entidad física, seleccionada de entre un grupo que consiste en un núcleo de procesamiento y una porción compartida de la memoria; y
una entidad lógica, seleccionada de entre un grupo que consiste en: un proceso y un subproceso;
en donde:
el al menos un parámetro de acceso incluye al menos uno de: una ID de proceso, una ID de núcleo de procesamiento, una ID de subproceso y un bit de memoria caché; y
la determinación del al menos un parámetro de acceso comprende además al menos uno de:
establecer el parámetro de acceso como un identificador de entidad lógica, sujeto a determinar que la orden de acceso de memoria está asociada con una entidad lógica; y
establecer el parámetro de acceso como un identificador de entidad física sujeto a determinar que la orden de acceso de memoria está asociada con una entidad física.
2. El método de la reivindicación 1, en donde el contenedor de memoria caché de destino es al menos una porción de al menos un nodo de memoria caché.
3. El método de la reivindicación 1, en donde cada contenedor de memoria caché se incluye en un nodo de memoria caché respectivo de la pluralidad de nodos de memoria caché.
4. El método de la reivindicación 1, que comprende además: subdividir dinámicamente cada nodo de memoria caché en al menos dos contenedores de memoria caché basándose en la utilización de la pluralidad respectiva de contenedores de memoria caché del nodo de memoria caché.
5. El método de la reivindicación 4, que comprende además:
subdividir inicialmente cada nodo de memoria caché en un número predeterminado de contenedores de memoria caché (310-1, 310-2, 310-3, 310-4);
recopilar estadísticas con respecto al uso de cada contenedor de memoria caché; y
reconfigurar la subdivisión inicial (310-1, ..., 310-8) de cada nodo de memoria caché basándose en las estadísticas recopiladas.
6. El método de la reivindicación 5, en donde la reconfiguración de la subdivisión de cada nodo de memoria caché se realiza después de cada iteración de ejecución de una pluralidad de iteraciones de ejecución.
7. El método de la reivindicación 5, que comprende además: atribuir dinámicamente más almacenamiento de memoria caché a al menos uno de los contenedores de memoria caché (310-8).
8. El método de la reivindicación 1, que comprende además: determinar al menos un atributo de memoria caché, en donde el al menos un atributo de memoria caché incluye al menos uno de:
un cierto valor de nunca almacenar en caché, un cierto valor de siempre almacenar en caché y un cierto valor de siempre comprobar.
9. El método de la reivindicación 1, en donde determinar el contenedor de memoria caché de destino para atender la orden de acceso de memoria comprende además:
computar una función determinista a lo largo del al menos un parámetro de acceso y la dirección.
10. El método de la reivindicación 1, en donde la arquitectura de memoria caché reconfigurable se utiliza para acelerar una ejecución de un programa mediante una circuitería de procesamiento (210).
11. El método de la reivindicación 10, en donde la circuitería de procesamiento es uno cualquiera de:
una unidad central de procesamiento, una matriz de puertas programables en campo, una unidad de procesamiento de gráficos, una arquitectura reconfigurable de granularidad gruesa, un circuito integrado para aplicaciones específicas, un procesador de múltiples núcleos y un ordenador cuántico.
12. Un medio legible por ordenador no transitorio que tiene almacenadas en el mismo unas instrucciones que, cuando son ejecutadas por al menos una circuitería de procesamiento, hacen que la al menos una circuitería de procesamiento lleve a cabo el método de la reivindicación 1.
13. Un sistema para ejecutar un programa de software, que comprende:
una circuitería de procesamiento; y
una memoria caché reconfigurable conectada a la circuitería de procesamiento, comprendiendo la memoria caché reconfigurable:
una memoria; y
una pluralidad de nodos de memoria caché acoplados a la memoria, en donde cada nodo de memoria caché es subdividible en una pluralidad de contenedores de memoria caché, en donde el acceso a cualquier contenedor de memoria caché de la pluralidad de contenedores de memoria caché se determina basándose en un parámetro de acceso, y en donde la subdivisión de la pluralidad de contenedores de memoria caché dentro de al menos dos de la pluralidad de nodos de memoria caché es reconfigurable;
en donde la circuitería de procesamiento está adaptada para coherencia de memoria caché en una arquitectura de memoria caché reconfigurable, que comprende:
recibir una orden de acceso de memoria, en donde la orden de acceso de memoria incluye al menos una dirección de una memoria a la que acceder;
determinar al menos un parámetro de acceso basándose en la orden de acceso de memoria; y determinar un contenedor de memoria caché de destino para atender la orden de acceso de memoria basándose en parte en el al menos un parámetro de acceso y la dirección; y
en donde la orden de acceso de memoria incluye una identificación unitaria de una cualquiera de:
una entidad física, seleccionada de entre un grupo que consiste en un núcleo de procesamiento y una porción compartida de la memoria; y
una entidad lógica, seleccionada de entre un grupo que consiste en: un proceso y un subproceso;
en donde:
el al menos un parámetro de acceso incluye al menos uno de: una ID de proceso, una ID de núcleo de procesamiento, una ID de subproceso y un bit de memoria caché; y
la determinación del al menos un parámetro de acceso comprende además al menos uno de: establecer el parámetro de acceso como un identificador de entidad lógica, sujeto a determinar que la orden de acceso de memoria está asociada con una entidad lógica; y
establecer el parámetro de acceso como un identificador de entidad física sujeto a determinar que la orden de acceso de memoria está asociada con una entidad física.
ES18840560T 2017-08-03 2018-08-03 Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché Active ES2950681T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762540854P 2017-08-03 2017-08-03
PCT/US2018/045131 WO2019028327A1 (en) 2017-08-03 2018-08-03 RECONFIGURABLE CACHE ARCHITECTURE AND CACHED MEMORY COHERENCE METHODS

Publications (1)

Publication Number Publication Date
ES2950681T3 true ES2950681T3 (es) 2023-10-11

Family

ID=65231030

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18840560T Active ES2950681T3 (es) 2017-08-03 2018-08-03 Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché

Country Status (8)

Country Link
US (3) US11176041B2 (es)
EP (2) EP4209914A1 (es)
JP (1) JP7126136B2 (es)
KR (1) KR20200049775A (es)
CN (2) CN111164580B (es)
ES (1) ES2950681T3 (es)
SG (1) SG11202000763TA (es)
WO (1) WO2019028327A1 (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111164580B (zh) 2017-08-03 2023-10-31 涅克斯硅利康有限公司 用于缓存一致性的可重构的缓存架构及方法
US10402091B1 (en) * 2018-04-30 2019-09-03 EMC IP Holding Company LLC Managing data in log-structured storage systems
US11216377B2 (en) 2019-12-18 2022-01-04 Nxp Usa, Inc. Hardware accelerator automatic detection of software process migration
CN112306500B (zh) * 2020-11-30 2022-06-07 上海交通大学 一种针对粗粒度可重构结构的降低多类访存冲突编译方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321806A (en) 1991-08-21 1994-06-14 Digital Equipment Corporation Method and apparatus for transmitting graphics command in a computer graphics system
US5367653A (en) 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US6219745B1 (en) * 1998-04-15 2001-04-17 Advanced Micro Devices, Inc. System and method for entering a stream read buffer mode to store non-cacheable or block data
US6370619B1 (en) * 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6347346B1 (en) 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
US7028299B1 (en) * 2000-06-30 2006-04-11 Intel Corporation Task-based multiprocessing system
US6636946B2 (en) * 2001-03-13 2003-10-21 Micron Technology, Inc. System and method for caching data based on identity of requestor
US6848026B2 (en) * 2001-11-09 2005-01-25 International Business Machines Corporation Caching memory contents into cache partitions based on memory locations
US7043610B2 (en) * 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
US7269174B2 (en) 2003-03-28 2007-09-11 Modular Mining Systems, Inc. Dynamic wireless network
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
US7478210B2 (en) * 2006-06-09 2009-01-13 Intel Corporation Memory reclamation with optimistic concurrency
US8156307B2 (en) 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8176256B2 (en) * 2008-06-12 2012-05-08 Microsoft Corporation Cache regions
JP5294304B2 (ja) 2008-06-18 2013-09-18 日本電気株式会社 再構成可能電子回路装置
WO2010001412A2 (en) 2008-07-01 2010-01-07 Nandy S K A method and system on chip (soc) for adapting a reconfigurable hardware for an application at runtime
US8230176B2 (en) * 2009-06-26 2012-07-24 International Business Machines Corporation Reconfigurable cache
KR101076869B1 (ko) 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US8621151B2 (en) 2010-11-23 2013-12-31 IP Cube Partners (IPC) Co., Ltd. Active memory processor system
US8504778B2 (en) 2010-11-24 2013-08-06 IP Cube Partners (ICP) Co., Ltd. Multi-core active memory processor system
US8589628B2 (en) 2010-11-29 2013-11-19 IP Cube Partners (ICP) Co., Ltd. Hybrid active memory processor system
US20120151232A1 (en) * 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
US8874852B2 (en) * 2012-03-28 2014-10-28 International Business Machines Corporation Data cache block deallocate requests in a multi-level cache hierarchy
US8856455B2 (en) * 2012-03-28 2014-10-07 International Business Machines Corporation Data cache block deallocate requests
US8767501B2 (en) 2012-07-17 2014-07-01 International Business Machines Corporation Self-reconfigurable address decoder for associative index extended caches
US9135156B2 (en) * 2012-10-29 2015-09-15 Broadcom Corporation Dynamically configurable memory
KR101832797B1 (ko) * 2013-07-31 2018-04-13 인텔 코포레이션 Usb 디바이스와의 mctp 통신을 수행하기 위한 방법, 장치 및 시스템
US9460012B2 (en) 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
US10089238B2 (en) * 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US10481835B2 (en) * 2014-10-09 2019-11-19 Netapp, Inc. Methods and systems for dynamic hashing in caching sub-systems
US9852071B2 (en) * 2014-10-20 2017-12-26 International Business Machines Corporation Granting exclusive cache access using locality cache coherency state
US9727239B2 (en) * 2014-11-13 2017-08-08 Samsung Electronics Co., Ltd. Electronic system with partitioning mechanism and method of operation thereof
US10061511B2 (en) 2015-09-23 2018-08-28 Hanan Potash Computing device with frames/bins structure, mentor layer and plural operand processing
US20170091111A1 (en) * 2015-09-30 2017-03-30 International Business Machines Corporation Configurable cache architecture
US9734070B2 (en) * 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning
CN111164580B (zh) 2017-08-03 2023-10-31 涅克斯硅利康有限公司 用于缓存一致性的可重构的缓存架构及方法

Also Published As

Publication number Publication date
US11176041B2 (en) 2021-11-16
SG11202000763TA (en) 2020-02-27
KR20200049775A (ko) 2020-05-08
EP4209914A1 (en) 2023-07-12
CN111164580B (zh) 2023-10-31
WO2019028327A1 (en) 2019-02-07
CN117271392A (zh) 2023-12-22
EP3662376A4 (en) 2021-04-07
JP2020530176A (ja) 2020-10-15
EP3662376B1 (en) 2023-04-05
EP3662376A1 (en) 2020-06-10
US11720496B2 (en) 2023-08-08
US20190042427A1 (en) 2019-02-07
US20220100660A1 (en) 2022-03-31
CN111164580A (zh) 2020-05-15
JP7126136B2 (ja) 2022-08-26
US20230376419A1 (en) 2023-11-23

Similar Documents

Publication Publication Date Title
ES2950681T3 (es) Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché
CN102648449B (zh) 一种用于处理干扰事件的方法和图形处理单元
TWI620128B (zh) 在中央處理單元與圖形處理單元間分享資源之裝置與系統
US8966222B2 (en) Message passing in a cluster-on-chip computing environment
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US20090006800A1 (en) Configurable memory system and method for providing atomic counting operations in a memory device
JP2015135696A (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
CN103197953A (zh) 推测执行和回滚
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
CN103197916A (zh) 用于源操作数收集器高速缓存的方法和装置
CN103365631A (zh) 用于存储器访问的动态库模式寻址
CN103218309A (zh) 多级指令高速缓存预取
US11934867B2 (en) Techniques for divergent thread group execution scheduling
US10241885B2 (en) System, apparatus and method for multi-kernel performance monitoring in a field programmable gate array
KR20240004361A (ko) 프로세싱-인-메모리 동시적 프로세싱 시스템 및 방법
CN103197918B (zh) 多通道时间片组
Schulz et al. Task inefficiency patterns for a wave equation solver
US10565133B2 (en) Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels
US20220224605A1 (en) Simulating network flow control
US10620958B1 (en) Crossbar between clients and a cache
KR101131376B1 (ko) 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐