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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000008569 process Effects 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 16
- 230000002093 peripheral effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
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)
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.
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) | EP3662376B1 (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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3662376B1 (en) | 2017-08-03 | 2023-04-05 | Next Silicon Ltd | Reconfigurable cache architecture and methods for cache coherency |
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 (38)
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 |
US20060236074A1 (en) * | 2005-04-14 | 2006-10-19 | Arm Limited | Indicating storage locations within caches |
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 | 日本電気株式会社 | 再構成可能電子回路装置 |
US20110099562A1 (en) | 2008-07-01 | 2011-04-28 | Morphing Machines Pvt Ltd | 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 |
US8856455B2 (en) * | 2012-03-28 | 2014-10-07 | International Business Machines Corporation | Data cache block deallocate requests |
US8874852B2 (en) * | 2012-03-28 | 2014-10-28 | International Business Machines Corporation | Data cache block deallocate requests in a multi-level cache hierarchy |
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 |
CN105378694B (zh) * | 2013-07-31 | 2019-05-14 | 英特尔公司 | 用于执行与通用串行总线(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 |
EP3662376B1 (en) | 2017-08-03 | 2023-04-05 | Next Silicon Ltd | Reconfigurable cache architecture and methods for cache coherency |
-
2018
- 2018-08-03 EP EP18840560.9A patent/EP3662376B1/en active Active
- 2018-08-03 EP EP23158068.9A patent/EP4209914A1/en active Pending
- 2018-08-03 KR KR1020207006248A patent/KR20200049775A/ko not_active Application Discontinuation
- 2018-08-03 SG SG11202000763TA patent/SG11202000763TA/en unknown
- 2018-08-03 CN CN201880063982.5A patent/CN111164580B/zh active Active
- 2018-08-03 US US16/054,202 patent/US11176041B2/en active Active
- 2018-08-03 JP JP2020529107A patent/JP7126136B2/ja active Active
- 2018-08-03 CN CN202311237935.7A patent/CN117271392A/zh active Pending
- 2018-08-03 WO PCT/US2018/045131 patent/WO2019028327A1/en unknown
- 2018-08-03 ES ES18840560T patent/ES2950681T3/es active Active
-
2021
- 2021-10-19 US US17/504,594 patent/US11720496B2/en active Active
-
2023
- 2023-08-04 US US18/230,245 patent/US20230376419A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20200049775A (ko) | 2020-05-08 |
EP3662376A1 (en) | 2020-06-10 |
US11176041B2 (en) | 2021-11-16 |
EP4209914A1 (en) | 2023-07-12 |
US20220100660A1 (en) | 2022-03-31 |
US20230376419A1 (en) | 2023-11-23 |
EP3662376A4 (en) | 2021-04-07 |
WO2019028327A1 (en) | 2019-02-07 |
US11720496B2 (en) | 2023-08-08 |
EP3662376B1 (en) | 2023-04-05 |
CN111164580A (zh) | 2020-05-15 |
CN117271392A (zh) | 2023-12-22 |
SG11202000763TA (en) | 2020-02-27 |
US20190042427A1 (en) | 2019-02-07 |
JP7126136B2 (ja) | 2022-08-26 |
CN111164580B (zh) | 2023-10-31 |
JP2020530176A (ja) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2950681T3 (es) | Arquitectura de memoria caché reconfigurable y métodos para coherencia de memoria caché | |
TWI620128B (zh) | 在中央處理單元與圖形處理單元間分享資源之裝置與系統 | |
US8966222B2 (en) | Message passing in a cluster-on-chip computing environment | |
TWI529626B (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
CN102648449A (zh) | 用于并行处理单元的陷阱处理器架构 | |
US20090006800A1 (en) | Configurable memory system and method for providing atomic counting operations in a memory device | |
JP2011065650A (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
US10031697B2 (en) | Random-access disjoint concurrent sparse writes to heterogeneous buffers | |
TW201430566A (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
CN103365631A (zh) | 用于存储器访问的动态库模式寻址 | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
US11468001B1 (en) | Processing-in-memory concurrent processing system and method | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
US10565133B2 (en) | Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels | |
US20220224605A1 (en) | Simulating network flow control | |
US20180267878A1 (en) | System, Apparatus And Method For Multi-Kernel Performance Monitoring In A Field Programmable Gate Array | |
CN103197918B (zh) | 多通道时间片组 | |
Schulz et al. | Task inefficiency patterns for a wave equation solver | |
US10620958B1 (en) | Crossbar between clients and a cache | |
US20240223492A1 (en) | Offloading connection management for network resources | |
KR101131376B1 (ko) | 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 |