La memoria scratchpad ( SPM ), también conocida como scratchpad , scratchpad RAM o local store en terminología informática , es una memoria interna, normalmente de alta velocidad, que se utiliza para el almacenamiento temporal de cálculos, datos y otros trabajos en curso. En referencia a un microprocesador (o CPU ), scratchpad se refiere a una memoria especial de alta velocidad que se utiliza para guardar pequeños elementos de datos para una rápida recuperación. Es similar al uso y tamaño de un scratchpad en la vida real: un bloc de papel para notas preliminares o bocetos o escritos, etc. Cuando el scratchpad es una parte oculta de la memoria principal, a veces se lo denomina almacenamiento de bump .
En algunos sistemas [a] se puede considerar similar a la caché L1 en que es la siguiente memoria más cercana a la ALU después de los registros del procesador , con instrucciones explícitas para mover datos hacia y desde la memoria principal , a menudo utilizando transferencia de datos basada en DMA . [1] A diferencia de un sistema que utiliza cachés, un sistema con scratchpads es un sistema con latencias de acceso a memoria no uniforme (NUMA), porque las latencias de acceso a la memoria a los diferentes scratchpads y a la memoria principal varían. Otra diferencia con un sistema que emplea cachés es que un scratchpad comúnmente no contiene una copia de los datos que también están almacenados en la memoria principal.
Los scratchpads se emplean para simplificar la lógica de almacenamiento en caché y para garantizar que una unidad pueda funcionar sin contención de la memoria principal en un sistema que emplea varios procesadores, especialmente en sistemas en chip multiprocesador para sistemas integrados . Son principalmente adecuados para almacenar resultados temporales (como se encontrarían en la pila de CPU) que normalmente no necesitarían estar siempre comprometidos con la memoria principal; sin embargo, cuando se alimentan mediante DMA , también se pueden usar en lugar de una caché para reflejar el estado de la memoria principal más lenta. Los mismos problemas de localidad de referencia se aplican en relación con la eficiencia de uso; aunque algunos sistemas permiten que el DMA con pasos acceda a conjuntos de datos rectangulares. Otra diferencia es que los scratchpads son manipulados explícitamente por las aplicaciones. Pueden ser útiles para aplicaciones en tiempo real , donde la temporización predecible se ve obstaculizada por el comportamiento de la caché.
Los scratchpads no se utilizan en los procesadores de escritorio convencionales, donde se requiere generalidad para que el software heredado se ejecute de generación en generación, en los que el tamaño de la memoria en chip disponible puede cambiar. Se implementan mejor en sistemas integrados, procesadores de propósito especial y consolas de juegos , donde los chips a menudo se fabrican como MPSoC y donde el software a menudo se ajusta a una configuración de hardware.
Ejemplos de uso
- El Fairchild F8 de 1975 contenía 64 bytes de borrador.
- La TI-99/4A tiene 256 bytes de memoria de borrador en el bus de 16 bits que contiene los registros del procesador del TMS9900 [2]
- Cyrix 6x86 es el único procesador de escritorio compatible con x86 que incorpora un scratchpad dedicado.
- SuperH , utilizado en las consolas de Sega, podía bloquear líneas de caché en una dirección fuera de la memoria principal para usarlas como bloc de notas.
- La R3000 de la PS1 de Sony tenía un scratchpad en lugar de una caché L1. Fue posible colocar la pila de CPU aquí, un ejemplo del uso del espacio de trabajo temporal.
- El coprocesador paralelo Epiphany de Adapteva cuenta con memorias locales para cada núcleo, conectadas por una red en un chip , con posibilidad de acceso directo entre ellos y enlaces fuera del chip (posiblemente a DRAM). La arquitectura es similar a la de Cell de Sony, excepto que todos los núcleos pueden acceder directamente a las memorias de los demás, generando mensajes de red a partir de instrucciones estándar de carga y almacenamiento.
- El PS2 Emotion Engine de Sony incluye un scratchpad de 16 KB , desde y hacia el cual se pueden realizar transferencias DMA a su GS y a la memoria principal.
- Los SPE de Cell están restringidos a trabajar exclusivamente en su "almacén local", y dependen de DMA para las transferencias desde/hacia la memoria principal y entre los almacenes locales, de forma muy similar a un bloc de notas. En este sentido, se deriva un beneficio adicional de la falta de hardware para verificar y actualizar la coherencia entre múltiples cachés: el diseño aprovecha la suposición de que el espacio de trabajo de cada procesador es separado y privado. Se espera que este beneficio se haga más notorio a medida que el número de procesadores se escale hacia el futuro de "muchos núcleos". Sin embargo, debido a la eliminación de algunas lógicas de hardware, los datos e instrucciones de las aplicaciones en los SPE deben administrarse a través de software si la tarea completa en el SPE no cabe en el almacenamiento local. [3] [4] [5]
- Muchos otros procesadores permiten bloquear las líneas de caché L1.
- La mayoría de los procesadores de señales digitales utilizan un scratchpad. Muchos aceleradores 3D y consolas de juegos anteriores (incluida la PS2) han utilizado DSP para las transformaciones de vértices . Esto difiere del enfoque basado en flujo de las GPU modernas, que tienen más en común con las funciones de la memoria caché de la CPU.
- La GPU 8800 de NVIDIA que funciona con CUDA proporciona 16 KB de memoria temporal (NVIDIA lo llama memoria compartida) por paquete de subprocesos cuando se utiliza para tareas GPGPU . La memoria temporal también se utilizó en las GPU Fermi posteriores ( serie GeForce 400 ). [6]
- El chip PhysX de Ageia incluye una memoria RAM de memoria intermedia de forma similar a la del Cell; la teoría de esta unidad de procesamiento de física específica es que una jerarquía de caché es de menor utilidad que los cálculos de física y colisión gestionados por software. Estas memorias también están almacenadas y un conmutador gestiona las transferencias entre ellas.
- El procesador Knights Landing de Intel tiene una MCDRAM de 16 GB que se puede configurar como caché, memoria scratchpad o dividir en caché y memoria scratchpad.
- Movidius Myriad 2 , una unidad de procesamiento de visión , organizada como una arquitectura multinúcleo con un gran scratchpad compartido y multipuerto.
- Graphcore ha diseñado un acelerador de IA basado en memorias scratchpad [7]
Alternativas
Control de caché vs. blocs de notas
Algunas arquitecturas, como PowerPC, intentan evitar la necesidad de bloquear líneas de caché o blocs de notas mediante el uso de instrucciones de control de caché . Al marcar un área de memoria con "Data Cache Block: Zero" (asignando una línea pero poniendo su contenido a cero en lugar de cargarlo desde la memoria principal) y descartarlo después de su uso ("Data Cache Block: Invalidate", que indica que la memoria principal no recibió ningún dato actualizado), se logra que la caché se comporte como un bloc de notas. Se mantiene la generalidad en el sentido de que se trata de sugerencias y el hardware subyacente funcionará correctamente independientemente del tamaño real de la caché.
Tiendas locales de L2 compartidas vs. Cell
En cuanto a la comunicación entre procesadores en una configuración multinúcleo, existen similitudes entre el DMA entre almacenes locales de Cell y una configuración de caché L2 compartida como en el Intel Core 2 Duo o el powerPC personalizado de Xbox 360: la caché L2 permite a los procesadores compartir resultados sin que estos tengan que ser almacenados en la memoria principal. Esto puede ser una ventaja cuando el conjunto de trabajo para un algoritmo abarca la totalidad de la caché L2. Sin embargo, cuando se escribe un programa para aprovechar el DMA entre almacenes locales, Cell tiene el beneficio de que cada uno de los almacenes locales sirve tanto para el espacio de trabajo privado para un solo procesador como para el punto de compartir entre procesadores; es decir, los otros almacenes locales están en una situación similar, vistos desde un procesador, que la caché L2 compartida en un chip convencional. La desventaja es que se desperdicia memoria en el almacenamiento en búfer y la complejidad de programación para la sincronización, aunque esto sería similar a las páginas almacenadas previamente en caché en un chip convencional. Los dominios en los que el uso de esta capacidad es eficaz incluyen:
- Procesamiento de canalización (donde se logra el mismo efecto que aumentar el tamaño de la memoria caché L1 dividiendo un trabajo en fragmentos más pequeños)
- Ampliar el conjunto de trabajo, por ejemplo, un punto óptimo para una ordenación por combinación donde los datos quepan en 8×256 KB
- Carga de código compartido, como cargar un fragmento de código en una SPU y luego copiarlo desde allí a las demás para evitar acceder nuevamente a la memoria principal
Sería posible que un procesador convencional obtuviera ventajas similares con instrucciones de control de caché, por ejemplo, permitiendo la obtención previa de datos en L1 sin pasar por L2, o una indicación de desalojo que señalara una transferencia de L1 a L2 pero sin comprometerse con la memoria principal; sin embargo, en la actualidad ningún sistema ofrece esta capacidad en una forma utilizable y tales instrucciones en efecto deberían reflejar una transferencia explícita de datos entre las áreas de caché utilizadas por cada núcleo.
Véase también
Notas
- ^ Algunos sistemas más antiguos utilizaban una parte oculta del almacenamiento principal, denominada almacenamiento de memoria intermedia, como scratchpad. En otros sistemas, por ejemplo, UNIVAC 1107 , todos los registros direccionables se guardaban en scratchpad.
Referencias
- ^ Steinke, Stefan; Lars Wehmeyer; Bo-Sik Lee; Peter Marwedel (2002). "Asignación de objetos de programa y datos a Scratchpad para reducción de energía" (PDF) . Universidad de Dortmund . Consultado el 3 de octubre de 2013 .:"3.2 Modelo de bloc de notas... La memoria del bloc de notas utiliza software para controlar la asignación de ubicación de los datos".
- ^ "Arquitectura interna de la TI-99/4A". www.unige.ch . Consultado el 8 de marzo de 2023 .
- ^ J. Lu, K. Bai, A. Shrivastava, "SSDM: gestión de datos de pila inteligente para núcleos múltiples administrados por software (SMM)", Design Automation Conference (DAC) , 2 al 6 de junio de 2013
- ^ K. Bai, A. Shrivastava, "Gestión automática y eficiente de datos de montón para arquitecturas multinúcleo con memoria local limitada", Design Automation and Test in Europe (DATE) , 2013
- ^ K. Bai, J. Lu, A. Shrivastava, B. Holton, "CMSM: una gestión de código eficaz y eficiente para núcleos múltiples gestionados por software", CODES+ISSS , 2013
- ^ Patterson, David (30 de septiembre de 2009). "Las 10 principales innovaciones en la nueva arquitectura NVIDIA Fermi y los 3 principales desafíos siguientes" (PDF) . Laboratorio de investigación en computación paralela y NVIDIA . Consultado el 3 de octubre de 2013 .
- ^ Jia, Zhe; Tillman, Blake; Maggioni, Marco; Scarpazza, Daniele P. (7 de diciembre de 2019). Análisis de la arquitectura de la IPU de Graphcore mediante microbenchmarking (PDF) (informe técnico). Citadel Enterprise Americas, LLC. arXiv : 1912.03413 .
Enlaces externos
- Rajeshwari Banakar, Scratchpad Memory: A Design Alternative for Cache. Memoria en chip en sistemas integrados // CODES'02. 6-8 de mayo de 2002