La memoria scratchpad ( SPM ), también conocida como scratchpad , RAM scratchpad o almacén local en terminología informática , es una memoria interna, generalmente 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 ), el scratchpad se refiere a una memoria especial de alta velocidad que se utiliza para almacenar pequeños elementos de datos para una rápida recuperación. Es similar al uso y tamaño de un bloc de notas en la vida: un bloc de papel para notas preliminares, bocetos o escritos, etc. Cuando el bloc de notas es una parte oculta de la memoria principal, a veces se lo denomina almacenamiento funcional .
En algunos sistemas [a] se puede considerar similar al caché L1 en que es la siguiente memoria más cercana a la ALU después de que el procesador se registra , con instrucciones explícitas para mover datos hacia y desde la memoria principal , a menudo usando transferencia de datos basada en DMA. . [1] A diferencia de un sistema que utiliza cachés, un sistema con áreas reutilizables es un sistema con latencias de acceso a memoria no uniforme (NUMA), porque las latencias de acceso a la memoria para los diferentes áreas reutilizables y la memoria principal varían. Otra diferencia con un sistema que emplea cachés es que un bloc de notas normalmente no contiene una copia de los datos que también se almacenan en la memoria principal.
Los Scratchpads se emplean para simplificar la lógica del almacenamiento en caché y para garantizar que una unidad pueda funcionar sin contención de la memoria principal en un sistema que emplea múltiples procesadores, especialmente en sistemas multiprocesador en chip para sistemas integrados . Son principalmente adecuados para almacenar resultados temporales (como se encontrarían en la pila de la CPU) que normalmente no necesitarían estar siempre comprometidos en la memoria principal; sin embargo, cuando se alimentan con DMA , también se pueden usar en lugar de un caché para reflejar el estado de la memoria principal más lenta. Las mismas cuestiones de localidad de referencia se aplican en relación con la eficiencia de uso; aunque algunos sistemas permiten que DMA acceda a conjuntos de datos rectangulares. Otra diferencia es que las aplicaciones manipulan explícitamente los scratchpads. Pueden resultar útiles para aplicaciones en tiempo real , donde el comportamiento de la caché dificulta la sincronización predecible.
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 memoria disponible en el chip 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 suele ajustarse a una configuración de hardware.
Ejemplos de uso
- Fairchild F8 de 1975 contenía 64 bytes de borrador.
- La TI-99/4A tiene 256 bytes de memoria reutilizable 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, podría bloquear líneas de caché en una dirección fuera de la memoria principal para usarlas como un bloc de notas.
- El R3000 de la PS1 de Sony tenía un scratchpad en lugar de un caché L1. Fue posible colocar aquí la pila de CPU, un ejemplo del uso del espacio de trabajo temporal.
- El coprocesador paralelo Epiphany de Adapteva presenta almacenes locales para cada núcleo, conectados por una red en un chip , con DMA posible entre ellos y enlaces fuera del chip (posiblemente a DRAM). La arquitectura es similar a Cell de Sony, excepto que todos los núcleos pueden dirigirse directamente a los scratchpads de cada uno, generando mensajes de red a partir de instrucciones estándar de carga/almacenamiento.
- El PS2 Emotion Engine de Sony incluye un scratchpad de 16 KB , desde y hacia el cual se podrían emitir transferencias DMA a su GS y a la memoria principal.
- Los SPE de Cell están restringidos exclusivamente a trabajar en su "tienda local", confiando en DMA para transferencias desde/hacia la memoria principal y entre tiendas locales, muy parecido 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 sea más notorio a medida que el número de procesadores aumente hacia el futuro de "muchos núcleos". Sin embargo, debido a la eliminación de algunas lógicas de hardware, los datos y las instrucciones de las aplicaciones en SPE deben administrarse a través de software si toda la tarea en SPE no cabe en la tienda 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 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 caché de la CPU.
- La GPU 8800 de NVIDIA que se ejecuta bajo CUDA proporciona 16 KB de scratchpad (NVIDIA lo llama memoria compartida) por paquete de subprocesos cuando se utiliza para tareas GPGPU . Scratchpad también se utilizó en GPU Fermi posteriores ( Serie GeForce 400 ). [6]
- El chip PhysX de Ageia incluye una memoria RAM scratchpad de manera similar al Cell; La teoría de esta unidad de procesamiento de física específica es que una jerarquía de caché es de menos utilidad que la física administrada por software y los cálculos de colisiones. Estas memorias también se almacenan 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 memoria caché, memoria temporal o dividida en memoria caché y memoria temporal.
- Movidius Myriad 2 , una unidad de procesamiento de visión , organizada como una arquitectura multinúcleo con un gran scratchpad compartido multipuerto.
- Graphcore ha diseñado un acelerador de IA basado en memorias scratchpad [7]
Alternativas
Control de caché frente a scratchpads
Algunas arquitecturas, como PowerPC, intentan evitar la necesidad de bloqueo de líneas de caché o áreas reutilizables mediante el uso de instrucciones de control de caché . Marcar un área de memoria con "Bloque de caché de datos: cero" (asignar una línea pero establecer su contenido en cero en lugar de cargarlo desde la memoria principal) y descartarlo después de su uso ("Bloque de caché de datos: invalidar", indicando que la memoria principal no Si no recibe ningún dato actualizado), el caché está diseñado para comportarse como un bloc de notas. Se mantiene la generalidad en el sentido de que se trata de sugerencias y que el hardware subyacente funcionará correctamente independientemente del tamaño real de la caché.
Tiendas locales compartidas L2 vs Cell
Con respecto 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: el caché L2 permite a los procesadores compartir resultados sin que esos resultados tengan guardarse en la memoria principal. Esto puede ser una ventaja cuando el conjunto de trabajo de un algoritmo abarca la totalidad de la caché L2. Sin embargo, cuando se escribe un programa para aprovechar el DMA entre almacenes locales, la celda tiene el beneficio de que cada uno de los almacenes locales cumple el propósito de TANTO el espacio de trabajo privado para un solo procesador como el punto de compartir entre procesadores; es decir, las otras tiendas locales se encuentran en una posición similar vista desde un procesador como la caché L2 compartida en un chip convencional. La desventaja es el desperdicio de memoria en el almacenamiento en búfer y la complejidad de la programación para la sincronización, aunque esto sería similar a las páginas almacenadas en caché en un chip convencional. Los dominios donde el uso de esta capacidad es efectivo incluyen:
- Procesamiento de canalización (donde se logra el mismo efecto que aumentar el tamaño de la caché L1 dividiendo un trabajo en partes más pequeñas)
- Ampliar el conjunto de trabajo, por ejemplo, un punto óptimo para una clasificación por combinación donde los datos quepan dentro de 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 volver a acceder a la memoria principal.
Sería posible que un procesador convencional obtuviera ventajas similares con instrucciones de control de caché, por ejemplo, permitiendo la captación previa de L1 sin pasar por L2, o una sugerencia 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 de forma utilizable y dichas instrucciones, en efecto, deberían reflejar la transferencia explícita de datos entre las áreas de caché utilizadas por cada núcleo.
Ver también
Notas
- ^ Algunos sistemas más antiguos utilizaban una parte oculta del almacenamiento principal, denominada almacenamiento funcional, como bloc de notas. En otros sistemas, por ejemplo UNIVAC 1107 , todos los registros direccionables se guardaban en un bloc de notas.
Referencias
- ^ Steinke, Stefan; Lars Wehmeyer; Bo Sik Lee; Peter Marwedel (2002). "Asignación de objetos de datos y programas al Bloc de notas 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".
- ^ "La 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 multinúcleos gestionados por software (SMM)", Conferencia de automatización de diseño (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 de memoria local limitada", Automatización y pruebas de diseño en Europa (FECHA) , 2013
- ^ K. Bai, J. Lu, A. Shrivastava, B. Holton, "CMSM: una gestión de código eficiente y eficaz para multinúcleos 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 próximos desafíos principales" (PDF) . Laboratorio de Investigación de 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). Disección de la arquitectura Graphcore IPU mediante Microbenchmarking (PDF) (Reporte técnico). Ciudadela Enterprise Americas, LLC. arXiv : 1912.03413 .
enlaces externos
- Rajeshwari Banakar, Memoria Scratchpad: una alternativa de diseño para el caché. Memoria en chip en Sistemas Embebidos // CODES'02. 6 al 8 de mayo de 2002