Scratchpad memory ( SPM ), также известная как scratchpad , scratchpad RAM или local store в компьютерной терминологии, представляет собой внутреннюю память, обычно высокоскоростную, используемую для временного хранения вычислений, данных и другой незавершенной работы. В отношении микропроцессора ( или ЦП ) scratchpad относится к специальной высокоскоростной памяти, используемой для хранения небольших элементов данных для быстрого извлечения. Она похожа на использование и размер блокнота в жизни: блокнот для предварительных заметок, набросков или записей и т. д. Когда блокнот является скрытой частью основной памяти, то его иногда называют bump storage .
В некоторых системах [a] его можно считать аналогичным кэшу L1 в том смысле, что это следующая ближайшая память к АЛУ после регистров процессора , с явными инструкциями по перемещению данных в основную память и из нее , часто с использованием передачи данных на основе DMA . [1] В отличие от системы, использующей кэши, система с блокнотами является системой с неравномерными задержками доступа к памяти (NUMA), поскольку задержки доступа к памяти для различных блокнотов и основной памяти различаются. Еще одним отличием от системы, использующей кэши, является то, что блокнот обычно не содержит копию данных, которая также хранится в основной памяти.
Scratchpads используются для упрощения логики кэширования и для гарантии того, что устройство может работать без конкуренции за основную память в системе, использующей несколько процессоров, особенно в многопроцессорной системе на кристалле для встраиваемых систем . Они в основном подходят для хранения временных результатов (как это было бы найдено в стеке ЦП), которые обычно не должны всегда фиксироваться в основной памяти; однако при подаче через DMA их также можно использовать вместо кэша для зеркалирования состояния более медленной основной памяти. Те же проблемы локальности ссылок применяются в отношении эффективности использования; хотя некоторые системы позволяют strided DMA получать доступ к прямоугольным наборам данных. Другое отличие заключается в том, что scratchpads явно манипулируются приложениями. Они могут быть полезны для приложений реального времени , где предсказуемая синхронизация затруднена поведением кэша.
Scratchpads не используются в основных процессорах для настольных ПК, где требуется универсальность для работы устаревшего программного обеспечения из поколения в поколение, в котором доступный размер памяти на чипе может меняться. Они лучше реализованы во встраиваемых системах, специализированных процессорах и игровых консолях , где чипы часто производятся как MPSoC , и где программное обеспечение часто настраивается на одну аппаратную конфигурацию.
Примеры использования
- Fairchild F8 1975 года содержал 64 байта блокнотной памяти.
- TI -99/4A имеет 256 байт оперативной памяти на 16-битной шине, содержащей регистры процессора TMS9900 [2]
- Cyrix 6x86 — единственный процессор для настольных ПК, совместимый с архитектурой x86 и оснащенный специальным блокнотом.
- SuperH , используемый в консолях Sega, мог привязывать строки кэша к адресу за пределами основной памяти для использования в качестве блокнота.
- R3000 от Sony PS1 имел блокнот вместо кэша L1. Здесь можно было разместить стек ЦП, пример использования временного рабочего пространства.
- Параллельный сопроцессор Epiphany от Adapteva имеет локальные хранилища для каждого ядра, соединенные сетью на чипе , с возможностью прямого доступа к памяти (DMA) между ними и внешними связями (возможно, с DRAM). Архитектура похожа на Sony Cell, за исключением того, что все ядра могут напрямую обращаться к блокнотам друг друга, генерируя сетевые сообщения из стандартных инструкций загрузки/сохранения.
- Движок Sony PS2 Emotion Engine включает в себя блокнот объемом 16 КБ , из которого и на который можно осуществлять DMA-передачи в GS и основную память.
- SPE от Cell ограничены исключительно работой в своем «локальном хранилище», полагаясь на DMA для передачи из/в основную память и между локальными хранилищами, во многом как блокнот. В этом отношении дополнительное преимущество вытекает из отсутствия оборудования для проверки и обновления согласованности между несколькими кэшами: конструкция использует преимущество предположения, что рабочее пространство каждого процессора является отдельным и частным. Ожидается, что это преимущество станет более заметным по мере того, как количество процессоров масштабируется в «многоядерном» будущем. Тем не менее, из-за устранения некоторой аппаратной логики, данные и инструкции приложений на SPE должны управляться через программное обеспечение, если вся задача на SPE не может поместиться в локальном хранилище. [3] [4] [5]
- Многие другие процессоры допускают блокировку строк кэша L1.
- Большинство цифровых сигнальных процессоров используют блокнот. Многие прошлые 3D-ускорители и игровые консоли (включая PS2) использовали DSP для вершинных преобразований . Это отличается от потокового подхода современных графических процессоров, которые имеют больше общего с функциями кэша ЦП.
- Графический процессор NVIDIA 8800 , работающий под управлением CUDA , обеспечивает 16 КБ скретч-памяти (NVIDIA называет это общей памятью) на поток-пакет при использовании для задач GPGPU . Скретч-память также использовалась в более поздних графических процессорах Fermi ( серия GeForce 400 ). [6]
- Чип PhysX от Ageia включает в себя оперативную память Scratchpad, подобно Cell; теория этого конкретного физического процессора заключается в том, что иерархия кэша менее полезна, чем программно управляемые вычисления физики и столкновений. Эти памяти также объединены в банки, и коммутатор управляет передачей между ними.
- Процессор Knights Landing от Intel имеет 16 ГБ MCDRAM, которую можно настроить как кэш, как сверхоперативную память или разделить на кэш и сверхоперативную память.
- Movidius Myriad 2 — блок обработки изображений , организованный как многоядерная архитектура с большим многопортовым общим блокнотом.
- Компания Graphcore разработала ускоритель искусственного интеллекта на основе сверхоперативной памяти [7]
Альтернативы
Управление кэшем против блокнотов
Некоторые архитектуры, такие как PowerPC, пытаются избежать необходимости в блокировке строк кэша или блокнотах с помощью инструкций управления кэшем . Пометка области памяти как «Data Cache Block: Zero» (выделение строки, но установка ее содержимого в ноль вместо загрузки из основной памяти) и ее отбрасывание после использования («Data Cache Block: Invalidate», сигнализирующее о том, что основная память не получила обновленных данных) заставляет кэш вести себя как блокнот. Общность сохраняется в том, что это подсказки, и базовое оборудование будет работать правильно независимо от фактического размера кэша.
Общие локальные хранилища L2 и Cell
Что касается межпроцессорной связи в многоядерной конфигурации, есть сходство между межлокальным DMA Cell и общей настройкой кэша L2, как в Intel Core 2 Duo или пользовательском powerPC Xbox 360: кэш L2 позволяет процессорам обмениваться результатами без необходимости их фиксации в основной памяти. Это может быть преимуществом, когда рабочий набор для алгоритма охватывает весь кэш L2. Однако, когда программа написана для использования преимущества межлокального DMA, Cell имеет преимущество в том, что каждое локальное хранилище служит как частному рабочему пространству для одного процессора, так и точке совместного использования между процессорами; т. е. другие локальные хранилища находятся в таком же положении, как и общий кэш L2 в обычном чипе. Компромисс заключается в том, что память тратится впустую на буферизацию и сложность программирования для синхронизации, хотя это было бы похоже на предварительно кэшированные страницы в обычном чипе. Области, в которых использование этой возможности эффективно, включают:
- Конвейерная обработка (при которой достигается тот же эффект, что и при увеличении размера кэша L1 путем разбиения одного задания на более мелкие части)
- Расширение рабочего набора, например, оптимальное место для сортировки слиянием, где данные умещаются в 8×256 КБ
- Загрузка общего кода, например загрузка фрагмента кода в один SPU, а затем копирование его оттуда в другие, чтобы избежать повторного обращения к основной памяти.
Обычный процессор мог бы получить аналогичные преимущества с помощью инструкций по управлению кэшем, например, разрешив предварительную выборку в L1 в обход L2 или подсказку о вытеснении, которая сигнализировала бы о передаче из L1 в L2, но не о передаче в основную память; однако в настоящее время ни одна система не предлагает такую возможность в пригодной для использования форме, и такие инструкции по сути должны отражать явную передачу данных между областями кэша, используемыми каждым ядром.
Смотрите также
Примечания
- ^ Некоторые старые системы использовали скрытую часть основного хранилища, называемую bump storage, в качестве scratchpad. В других системах, например, UNIVAC 1107 , все адресуемые регистры содержались в scratchpad.
Ссылки
- ^ Steinke, Stefan; Lars Wehmeyer; Bo-Sik Lee; Peter Marwedel (2002). "Assigning Program and Data Objects to Scratchpad for Energy Reduction" (PDF) . University of Dortmund . Получено 3 октября 2013 г. .: "3.2 Модель блокнота. Память блокнота использует программное обеспечение для управления распределением местоположения данных."
- ^ "Внутренняя архитектура TI-99/4A". www.unige.ch . Получено 2023-03-08 .
- ^ J. Lu, K. Bai, A. Shrivastava, «SSDM: интеллектуальное управление данными стека для программно-управляемых многоядерных процессоров (SMM)», Design Automation Conference (DAC) , 2–6 июня 2013 г.
- ^ К. Бай, А. Шривастава, «Автоматическое и эффективное управление данными кучи для многоядерных архитектур с ограниченной локальной памятью», Design Automation and Test in Europe (DATE) , 2013
- ^ K. Bai, J. Lu, A. Shrivastava, B. Holton, «CMSM: эффективное и действенное управление кодом для программно-управляемых многоядерных процессоров», CODES+ISSS , 2013
- ^ Паттерсон, Дэвид (30 сентября 2009 г.). «10 главных инноваций в новой архитектуре NVIDIA Fermi и три главные задачи на будущее» (PDF) . Лаборатория исследований параллельных вычислений и NVIDIA . Получено 3 октября 2013 г.
- ^ Цзя, Чжэ; Тиллман, Блейк; Маджони, Марко; Скарпацца, Даниэль П. (7 декабря 2019 г.). Анализ архитектуры Graphcore IPU с помощью микробенчмаркинга (PDF) (технический отчет). Citadel Enterprise Americas, LLC. arXiv : 1912.03413 .
Внешние ссылки
- Раджешвари Банакар, Scratchpad Memory: A Design Alternative for Cache. Встроенная память во встраиваемых системах // CODES'02. 6–8 мая 2002 г.