La memoria de acceso rápido ( SPM ), también conocida como memoria de acceso rápido o almacenamiento local en la 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 término "memoria de acceso rápido" se refiere a una memoria especial de alta velocidad que se utiliza para almacenar pequeños fragmentos de datos para su rápida recuperación. Su uso y tamaño son similares a los de un bloc de notas en la vida cotidiana: un bloc de papel para apuntes, bocetos o escritos preliminares, etc. Cuando la memoria de acceso rápido es una parte oculta de la memoria principal, a veces se la denomina almacenamiento de acceso rápido .
En algunos sistemas [ a ] se puede considerar similar a la caché L1 en que es la 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 uniformes (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 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 de almacenamiento en caché y para garantizar que una unidad pueda funcionar sin contención de memoria principal en un sistema con múltiples procesadores, especialmente en sistemas en chip multiprocesador para sistemas embebidos . Son más adecuados para almacenar resultados temporales (como los que se encontrarían en la pila de la CPU) que normalmente no necesitan confirmarse siempre en la memoria principal; sin embargo, cuando se alimentan mediante DMA , también pueden usarse en lugar de una caché para replicar el estado de la memoria principal, que es 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é.
Las memorias de trabajo no se utilizan en los procesadores de escritorio convencionales, donde se requiere generalidad para que el software heredado funcione de generación en generación, y donde el tamaño de la memoria disponible en el chip puede variar. Se implementan mejor en sistemas embebidos, procesadores de propósito especial y consolas de videojuegos , donde los chips suelen fabricarse como MPSoC y donde el software suele estar optimizado para una configuración de hardware específica.
Ejemplos de uso
- La Fairchild F8 de 1975 contenía 64 bytes de memoria temporal.
- La TI-99/4A tiene 256 bytes de memoria de bloc de notas en el bus de 16 bits que contiene los registros del procesador TMS9900 [ 2 ].
- El Cyrix 6x86 es el único procesador de escritorio compatible con x86 que incorpora una memoria virtual dedicada.
- SuperH , utilizado en las consolas de Sega, podía fijar las líneas de caché a una dirección fuera de la memoria principal para usarlas como un área de trabajo temporal.
- La R3000 de la PS1 de Sony tenía un espacio de trabajo temporal en lugar de una caché L1. Era posible ubicar la pila de la CPU allí, un ejemplo del uso del espacio de trabajo temporal.
- El coprocesador paralelo Epiphany de Adapteva cuenta con memorias locales para cada núcleo, conectadas mediante una red en el chip , con acceso directo a memoria (DMA) entre ellas y enlaces externos (posiblemente a la DRAM). Su arquitectura es similar a la del Cell de Sony, con la diferencia de 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 Emotion Engine de la PS2 de Sony incluye una memoria intermedia de 16 KB , desde la cual se podían realizar transferencias DMA a su GS y a la memoria principal.
- Las SPE de Cell se limitan exclusivamente a trabajar en su "almacenamiento local", utilizando DMA para las transferencias desde/hacia la memoria principal y entre los almacenamientos locales, de forma similar a un bloc de notas. En este sentido, se obtiene una ventaja adicional gracias a la ausencia de hardware para comprobar 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 independiente y privado. Se espera que esta ventaja se haga más evidente a medida que el número de procesadores aumente hacia el futuro de "múltiples núcleos". Sin embargo, debido a la eliminación de cierta lógica de hardware, los datos e instrucciones de las aplicaciones en las SPE deben gestionarse mediante software si la tarea completa en la 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 una memoria intermedia. Muchos aceleradores 3D y consolas de videojuegos del pasado (incluida la PS2) utilizaban DSP para las transformaciones de vértices . Esto difiere del enfoque basado en flujos de datos de las GPU modernas, que tienen más en común con las funciones de la caché de una CPU.
- La GPU 8800 de NVIDIA , que se ejecuta bajo CUDA, proporciona 16 KB de memoria temporal (NVIDIA la denomina Memoria Compartida) por paquete de subprocesos cuando se utiliza para tareas GPGPU . Esta 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 acceso rápido similar a la del Cell. La teoría de esta unidad de procesamiento físico específica es que una jerarquía de caché resulta menos útil que la gestión por software de los cálculos de física y colisiones. Estas memorias están organizadas en bancos y un conmutador gestiona las transferencias entre ellas.
- El procesador Knights Landing de Intel tiene una memoria MCDRAM de 16 GB que se puede configurar como caché, memoria de trabajo o dividida entre una parte de caché y otra de memoria de trabajo.
- Movidius Myriad 2 , una unidad de procesamiento de visión , organizada como una arquitectura multinúcleo con una gran memoria caché compartida con múltiples puertos.
- Graphcore ha diseñado un acelerador de IA basado en memorias de bloc de notas [ 7 ].
Alternativas
Control de caché frente a blocs de notas
Algunas arquitecturas, como PowerPC, intentan evitar la necesidad de bloqueo de líneas de caché o memorias temporales mediante el uso de instrucciones de control de caché . Al marcar un área de memoria con "Bloque de caché de datos: cero" (asignando una línea pero estableciendo su contenido a cero en lugar de cargarlo desde la memoria principal) y descartándola después de su uso ("Bloque de caché de datos: invalidar", indicando que la memoria principal no recibió datos actualizados), la caché se comporta como una memoria temporal. Se mantiene la generalidad, ya que estas son sugerencias y el hardware subyacente funcionará correctamente independientemente del tamaño real de la caché.
Tiendas locales compartidas L2 frente a tiendas locales celulares
En cuanto a la comunicación entre procesadores en una configuración multinúcleo, existen similitudes entre el DMA entre almacenes locales del Cell y una configuración de caché L2 compartida como la del Intel Core 2 Duo o el PowerPC personalizado de la Xbox 360: la caché L2 permite que los procesadores compartan resultados sin que estos tengan que ser confirmados 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 un programa se escribe para aprovechar el DMA entre almacenes locales, el Cell tiene la ventaja de que cada Almacén Local cumple la función de espacio de trabajo privado para un solo procesador Y punto de compartición entre procesadores; es decir, los demás Almacenes Locales se encuentran en una posición similar, vistos desde un procesador, a la caché L2 compartida en un chip convencional. La contrapartida es el desperdicio de 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 precacheadas en un chip convencional. Los dominios donde el uso de esta capacidad es efectivo incluyen:
- Procesamiento en paralelo (donde se logra el mismo efecto que al aumentar el tamaño de la caché L1 dividiendo una tarea en fragmentos más pequeños).
- Ampliar el conjunto de trabajo, por ejemplo, un punto óptimo para una ordenación por fusión donde los datos caben 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 acceder nuevamente a la memoria principal.
Un procesador convencional podría obtener ventajas similares con instrucciones de control de caché, por ejemplo, permitiendo la precarga a la L1 sin pasar por la L2, o una sugerencia de desalojo que señale 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.
Véase también
Notas
- ↑ Algunos sistemas más antiguos utilizaban una parte oculta de la memoria principal, denominada memoria intermedia, como área de trabajo. En otros sistemas, como el UNIVAC 1107 , todos los registros direccionables se almacenaban en el área de trabajo.
Referencias
- ↑ Steinke, Stefan; Lars Wehmeyer; Bo-Sik Lee; Peter Marwedel (2002). "Asignación de objetos de programa y datos a Scratchpad para la reducción de energía" (PDF) . Universidad de Dortmund. Archivado del original (PDF) el 4 de octubre de 2013. Recuperado 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 ubicaciones de 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 inteligente de datos de pila para multinúcleos gestionados por software (SMM)" Archivado el 2 de febrero de 2014 en Wayback Machine , Design Automation Conference (DAC) , del 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" Archivado el 2 de febrero de 2014 en Wayback Machine , Design Automation and Test in Europe (DATE) , 2013
- ↑ K. Bai, J. Lu, A. Shrivastava, B. Holton, "CMSM: Una gestión de código eficiente y eficaz para sistemas multinúcleo gestionados por software" Archivado el 2 de febrero de 2014 en Wayback Machine , CODES+ISSS , 2013
- ↑ Patterson, David (30 de septiembre de 2009). "Las 10 principales innovaciones en la nueva arquitectura NVIDIA Fermi y los 3 principales retos futuros" (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). Análisis de la arquitectura IPU de Graphcore mediante microbenchmarking (PDF) (Informe técnico). Citadel Enterprise Americas, LLC. arXiv : 1912.03413 .
Enlaces externos
- Rajeshwari Banakar, Memoria de bloc de notas : una alternativa de diseño para la memoria caché. Memoria en chip en sistemas embebidos // CODES'02. 6-8 de mayo de 2002
- Memoria de computadora