Понимание роли архитектуры памяти в эффективности процессоров Dsp

Цифровые процессоры сигналов (DSP) являются специализированными микропроцессорами, спроектированными для обработки задач обработки сигналов в режиме реального времени с исключительной эффективностью. В отличие от процессоров общего назначения, которые отдают приоритет задачам планирования и прогнозирования ветвей, DSP предназначены для детерминированных, высокопроизводительных арифметических операций - обычно многократно аккумулируемых (MAC) операций - на потоковых данных. Единственным наиболее важным фактором, который диктует, может ли DSP поддерживать свою теоретическую пиковую производительность, является архитектура памяти. Подсистема памяти определяет, как быстро операнды могут быть извлечены из хранилища, как промежуточные результаты буферизируются и как конечные данные выписываются. Несоответствие между арифметическими блоками процессора и системой памяти создает узкое место, задерживая конвейер и теряя мощность. Эта статья обеспечивает всеобъемлющий глубокий переход в архитектуру памяти современных DSP, объясняя различные типы используемой памяти, архитектурные модели, которые управляют ими, передовые иерархические стратегии и непосредственное влияние на производительность системных архитекторов, встроенных программных инженеров и дизайнеров оборудования, которые стремятся извлечь максимальн

Фундаментальная роль памяти в рабочих нагрузках обработки сигналов

Нагрузки обработки сигналов в основном являются интенсивными по данным. Алгоритмы, такие как фильтры конечного импульсного отклика (FIR), быстрые преобразования Фурье (FFT), свертка и умножение матриц, работают на больших массивах выборочных данных. Эти алгоритмы демонстрируют предсказуемый, повторяющийся шаблон доступа: последовательность коэффициентов (сохраненных в памяти) многократно умножается с входящей выборкой данных. Арифметический логический блок (ALU) DSP может выполнять операцию MAC в одном тактовом цикле, но только в том случае, если одновременно доступны и коэффициент, и образец данных. Если подсистема памяти не может доставить два операнда за цикл, трубопровод останавливается, и эффективная пропускная способность падает.

Кроме того, ограничения в реальном времени требуют, чтобы обработка шла в ногу со скоростью дискретизации. Для аудио на 48 кГц процессор должен завершить свой алгоритм в течение примерно 20 микросекунд. Для видео с разрешением 1080p это требование становится десятками миллисекунд на кадр — и часто намного более жестким для обработки подкадра. Задержка памяти и пропускная способность напрямую определяют, могут ли эти сроки быть выполнены. В дополнение к сырой скорости, энергопотребление является критической проблемой. Каждый доступ к памяти потребляет энергию, а доступ к памяти за пределами чипа может быть на порядки дороже, чем доступы на чипе. Поэтому эффективная архитектура памяти минимизирует необходимость выходить за пределы чипа, максимизируя использование быстрой, маломощной памяти на чипе.

Типы базовой памяти в системах DSP

Регистр памяти

Регистры являются самой быстрой памятью в любом DSP. Обычно они реализуются как флип-флопы или небольшие массивы SRAM в ядре процессора, регистры содержат операнды, которые активно вычисляются. Большинство ядер DSP имеют выделенный набор аккумуляторов (например, 40-битные или 64-битные регистры для предотвращения переполнения в операциях MAC) и набор регистров адресов для арифметики указателей. Задержка доступа - один тактовый цикл или меньше, но общая емкость очень мала - обычно менее 256 байт. Распределение реестра полностью находится под контролем программиста (или оптимизацией компилятора), а эффективное использование регистра является отличительной чертой высокопроизводительного кода DSP.

Память кэша

Кэш-память — это небольшая, быстрая SRAM, которая хранит копии часто доступных данных или инструкций из основной памяти. DSP могут включать отдельные кэши команд (I-cache) и кэши данных (D-cache), чтобы избежать споров. Однако кэш-память вносит непредсказуемость — кэш-промах может задержать конвейер на десятки или сотни циклов — что проблематично для жестких систем реального времени. В результате многие высоконадежные DSP-приложения отключают кэши или используют их только в режиме «блокировки». Когда используются кэши, их размер, ассоциативность и размер строки резко влияют на скорость попадания. Типичные кэши DSP варьируются от 4 КБ до 512 КБ на уровень, с уровнями от нуля до двух (L0, L1, L2).

On-Chip SRAM (Scratchpad Memory)

Статическая оперативная память на чипе (SRAM), часто называемая памятью на скретчпаде, обеспечивает предсказуемое хранилище с низкой задержкой непосредственно на кристалле процессора. В отличие от кэша, память на скретчпаде явно управляется программным обеспечением - данные должны перемещаться и выводиться программистом или компилятором. Это детерминированное поведение делает скретчпад предпочтительным выбором для обработки сигналов в реальном времени, где должно быть известно время выполнения в наихудшем случае (WCET). SRAM на чипе может быть разделена на несколько банков, каждый из которых доступен различными функциональными блоками параллельно. Типичные размеры варьируются от 32 КБ до нескольких мегабайт, в зависимости от семейства DSP (например, серия Texas Instruments C6000 обеспечивает до 8 МБ оперативной памяти на чипе).

Внешняя память (DRAM/Flash)

Внешняя память, обычно DDR SDRAM (особенно LPDDR для мобильных / встроенных), обеспечивает большую емкость - гигабайт - по стоимости высокой задержки (десятки наносекунд до 100 + ns) и более высокую энергию на доступ. Для многих приложений DSP внешняя память содержит большие массивы данных, которые превышают хранилище на чипе, такие как видеокадры, аудио буферы или таблицы поиска. Флеш-память (NOR или NAND) используется для хранения программного кода и постоянных данных, которые сохраняются в течение циклов питания. Доступ к внешней памяти требует использования контроллеров памяти, которые управляют арбитражем шины, циклами обновления и заказом данных. Расширенные DSP имеют несколько внешних интерфейсов памяти (например, EMIF, DDR2/3/4, LPDDR4) для увеличения доступной полосы пропускания.

Модели архитектуры памяти в DSP

Гарвардская архитектура

Гарвардская архитектура разделяет память инструкций и память данных на физически отличные шины, позволяя одновременно получать доступ к обоим в течение одного тактового цикла. Типичный DSP с архитектурой Гарварда может получать инструкции из памяти программы (часто на чипе вспышки или SRAM) при чтении двух слов данных из памяти данных - одного для коэффициента и одного для образца. Это основа одноциклового MAC-исполнения. Большинство современных DSP (например, Analog Devices SHARC, TI C55x, C6000) используют модифицированную архитектуру Гарварда, где шины инструкций и данных отделены, но могут быть связаны для гибкости.

Архитектура фон Неймана

Архитектура фон Неймана (или Принстона) использует одно общее пространство памяти для инструкций и данных, обслуживаемых одной шиной. Это упрощает проектирование системы и картирование памяти, но создает фундаментальное узкое место (часто называемое «узким местом фон Неймана»). В контексте DSP чистый фон Нейман редко встречается, потому что он не может обеспечить как инструкцию, так и два операнда данных за цикл. Однако некоторые недорогие DSP или микроконтроллеры, используемые для простых задач обработки сигналов (например, Cortex-M4F), используют карту памяти, похожую на фон Нейман, только для тесно связанной памяти. компромисс заключается в уменьшении производительности, но более низкой стоимости кремния.

Модифицированная архитектура Гарварда (с кэшами инструкций и данных)

Чтобы преодолеть разрыв между параллелизмом Гарварда и гибкостью фон Неймана, многие DSP реализуют модифицированную архитектуру Гарварда. Это использует отдельные шины инструкций и данных на базовом уровне, но иерархия памяти (включая кэши и основную память) унифицирована. Например, кэш команд L1 сидит на шине инструкций, а кэш данных L1 сидит на шине данных, но они оба получают свои линии из общего кэша L2 или внешней памяти. Это позволяет ядру получать инструкции и данные параллельно из кэшей, в то время как резервная память унифицирована для простоты. Эта архитектура используется в высокопроизводительных SoC DSP + ARM, таких как TI OMAP или Qualcomm Hexagon.

VLIW и SIMD-импликации

Процессоры Very Long Instruction Word (VLIW), такие как TI C6000, упаковывают несколько операций в одну команду (например, два MAC плюс нагрузка/хранилище). Для поддержания параллелизма VLIW архитектура памяти должна обеспечивать достаточное количество портов памяти для питания всех функциональных блоков. Это часто означает, что несколько банков памяти, каждый со своим собственным портом чтения. Например, C6000 имеет два банка памяти данных (A-side и B-side), подключенных к двум каналам передачи данных, что позволяет одновременно загружать данные из обоих банков. Аналогично, SIMD (Single Instruction Multiple Data) блоки требуют широких шины данных (например, 128-бит или 512-бит) для загрузки нескольких слов данных в одном цикле. Архитектура памяти должна быть адаптирована для соответствия ширине пути передачи данных.

Передовые иерархии и стратегии памяти

Многоуровневые кэш-гибриды и Scratchpad

Современные DSP часто объединяют небольшой кэш L1 (например, 16 KB инструкция + 16 KB данные) с большей L2 SRAM (например, 256 KB), который может быть сконфигурирован как кэш или скретчпад. Например, ядро TI C66x позволяет разделять память L2 между кэшем и SRAM на основе блок-за-блоком. Этот гибридный подход дает разработчику контроль над наиболее важными данными, позволяя при этом менее критическим данным извлекать выгоду из кэширования. L2 также может быть разделен между несколькими ядрами в многоядерном DSP.

Двигатели DMA (прямой доступ к памяти)

Контроллеры DMA являются неотъемлемой частью эффективности памяти DSP. Они позволяют передавать данные между внешней памятью и памятью на чипе без вмешательства процессора. Типичная схема заключается в использовании схемы двойного буфера (пинг-понга): в то время как DSP обрабатывает данные из буфера A, DMA заполняет буфер B из внешней памяти, и как только обработка на A выполняется, роли меняются. Это скрывает задержку доступа к внешней памяти и сохраняет занятость DSP-провода. Функции DMA, такие как 2D-адресация, длина шага и программируемый приоритет, позволяют эффективно обрабатывать многомерные массивы (например, видеокадры).

Банковская память и Interleaving

Для обеспечения высокой пропускной способности SRAM на чипе часто разделяется на несколько банков (например, 8 или 16). Каждый банк имеет свой собственный порт чтения / записи, поэтому возможны несколько одновременных доступа, если они нацелены на разные банки. Интерливинг - распространение последовательных адресов по банкам - уменьшает банковские конфликты для последовательных шаблонов доступа (обычные в циклах DSP). Например, SRAM 512 КБ может быть организован как 8 банков по 64 КБ каждый, с адресами modulo 8, распределенными по банкам. Для фильтра FIR коэффициенты из одного банка и образцы из другого могут быть считаны параллельно. Расширенные контроллеры памяти также поддерживают перемешивание банка и смягчение ударов рядами во внешней DRAM.

Loop Buffers (поддержка с нулевой петлей)

Многие DSP включают в себя небольшие, быстрые буферы памяти, специально предназначенные для программных петель. Буфер петли может содержать небольшое ядро (например, от 128 до 2048 инструкций), которое выполняется неоднократно без извлечения из основной памяти. В сочетании с режимами адресации для круговой буферизации это устраняет накладные расходы на доступ к памяти для плотных петель. Например, TI C5500 имеет кэш инструкций 4 КБ, который также может работать как буфер петли. Эта архитектура резко снижает потребление энергии, потому что основная шина памяти простаивает во время выполнения цикла.

Когерентность кэша в многоядерных DSP

Когда несколько ядер DSP обмениваются данными (например, в радиолокаторе или приложении MIMO), протоколы когерентности кэша предотвращают устаревшие данные. Используется аппаратное отслеживание или программно-управляемая когерентность (например, использование кэш-инвалидов). Некоторые DSP полностью избегают кэша в пользу накладных расходов на когерентность. Например, MSC8156 Freescale (теперь NXP) использует подход «без кэша» с общей SRAM 512 КБ. компромисс заключается в увеличении усилий программиста для управления перемещениями данных, но детерминистическом поведении в реальном времени.

Влияние архитектуры памяти на ключевые показатели производительности

Архитектура памяти напрямую влияет на четыре критических показателя производительности: пропускная способность (операции в секунду), задержка (время до первого результата), энергопотребление и детерминизм в реальном времени. Чтобы проиллюстрировать, рассмотрим фильтр FIR длины N. С идеальной архитектурой памяти (Harvard + два порта чтения + доступ с одним циклом), каждый кран требует одного цикла для коэффициентной нагрузки, один для нагрузки на образец и один для MAC - эффективно три цикла на кран. Используя инструкцию с двойной нагрузкой, которая может быть уменьшена до одного цикла на кран. Если память не может обеспечить оба операнда каждый цикл, пропускная способность пропорционально падает. Для 1000 кранов FIR при выборке 48 кГц требуемая пропускная способность составляет 48 миллионов MAC в секунду - легко удовлетворяется 100 МГц DSP с адекватной пропускной способностью памяти.

Для FFT-обработки алгоритм Кули-Туки включает в себя операции бабочки, которые считывают два сложных значения и коэффициент вертушки, затем записывают два результата. При одном порту памяти для этого требуется четыре чтения и две записи на бабочку, принимая по меньшей мере шесть циклов. При двухбанковской архитектуре (один для данных, один для коэффициентов) считывания могут перекрываться, уменьшаясь до трех циклов на бабочку. Шкалы энергопотребления примерно линейно с доступами к памяти на операцию. Хорошо настроенная иерархия памяти может уменьшить общие доступы в 10-100 раз по сравнению с наивными реализациями, которые постоянно извлекаются из внешней памяти.

В телекоммуникациях алгоритмы обнаружения символов (Viterbi, MLSE) требуют обширного обратного отсчета со случайным доступом к метрикам состояния. Здесь SRAM с низкой задержкой имеет важное значение для поддержания скорости символа в реальном времени. Одна ошибка кэша может вызвать нарушение времени, поэтому дизайнеры часто прикрепляют таблицу метрики состояния в скретчпаде.

Проектирование для системных инженеров

При проектировании системы на основе DSP инженеры должны разделять данные приложения по иерархии памяти.

Будущие направления в архитектуре памяти DSP

Новые приложения DSP, такие как вывод глубокого обучения на периферийных устройствах, обработка видео в режиме реального времени 4K / 8K и программно-определяемые требования к радио (SDR) еще больше повышают требования к памяти.

Заключение

Архитектура памяти является основой эффективности процессора DSP. Глубокое понимание компромиссов между регистром, кэшем, встроенной SRAM и внешней памятью позволяет системным дизайнерам минимизировать задержку доступа к данным, максимизировать пропускную способность и снизить энергопотребление. Выбор модели архитектуры (Harvard vs. модифицированный Harvard vs. von Neumann), использование передовых стратегий, таких как DMA, банковские и петлевые буферы, и тщательное разделение данных по иерархии памяти - все это важные шаги в достижении целей обработки сигналов в реальном времени. По мере того, как приложения становятся более требовательными - с более высокой частотой кадров, более широкими полосами пропускания и более сложными алгоритмами - инновационные конструкции памяти, такие как HBM, on-chip NVM и адаптивные иерархии, будут продолжать стимулировать производительность DSP. Инженеры, которые осваивают эти принципы, будут хорошо оснащены для проектирования систем, которые являются мощными и эффективными.