Информация о эффективности памяти от выполнения FPGA

Подобно графикам эффективности памяти, сгенерированным в симуляции, можно собрать информацию о взаимосвязанном трафике памяти из проекта, выполняемого на FPGA. Затем можно сгенерировать аналогичные графики эффективности. Можно также захватить информацию о транзакции памяти для просмотра в инструменте Logic Analyzer, подобном пакетным транзакциям от контроллера памяти в симуляции. Используйте эти графики для мониторинга реальной эффективности памяти, отлаживания и улучшения проекта и сравнения их с эффективностью памяти, полученными в симуляции.

Чтобы включить AXI interconnect monitor (AIM) IP в проект, в параметры конфигурации модели, выберите опцию Include AXI interconnect monitor в разделе Hardware Implementation > Target hardware resources > FPGA design (debug). IP-адрес AXI interconnect monitor собирает информацию из проекта во время работы на FPGA. Вы можете запросить эту информацию из MATLAB® при помощи соединения JTAG. Все мастера памяти в вашем FPGA подключены к IP-адресу AXI interconnect monitor. Эти мастера могут включать Memory Channel и Memory Traffic Generator блоки, для которых вы сгенерированными HDL-кодами, или любые другие мастера в вашем проекте.

Инструмент SoC Builder генерирует скрипт испытательного стенда JTAG для вашего проекта. Скрипт собирает метрики эффективности из AXI interconnect monitor и запускает приложение построения графика эффективности, которое строит графики эффективности памяти для пропускной способности, количества пакетов и задержек транзакций. Эти графики аналогичны графикам эффективности памяти в симуляции. Можно также изменить скрипт, чтобы собрать и отобразить форму транзакции памяти, подобную формам пакетных сигналов контроллера памяти в симуляции. Для получения информации о производительности симуляционной памяти смотрите Графики эффективности симуляции и Буферные и Пакетные формы волны.

Для получения примера смотрите Анализ полосы пропускания памяти с помощью генераторов трафика, который показывает, как контролировать эффективность памяти как в симуляции, так и при запуске на FPGA. Скрипт, сгенерированный инструментом SoC Builder, использует соединение JTAG, чтобы включить любые генераторы трафика в вашем проекте, а затем производит выборку информации о эффективности памяти из IP-адреса AXI interconnect monitor так быстро, как это возможно. Интервал дискретизации зависит от задержки JTAG, которая обычно составляет от 10 мс до 20 мс. Затем скрипт отображает графики, подобные графикам эффективности из блока Memory Controller в вашей симуляции. График отображает пропускную способность, количество пакетов и задержку транзакций для каждого ведущего устройства.

Примечание

Сам мастер AXI не соединяется с AXI interconnect monitor. Поэтому аппаратная диагностика не включает в себя графики использования памяти для мастеров только для тестирования, которые инициализируют память с заранее заданными данными.

Графики

Эффективности памяти

Скрипт собирает метрики эффективности из AXI interconnect monitor и запускает приложение построения графика эффективности.

Графики пропускной способности памяти

На вкладке Bandwidth выберите шаблоны, для которых необходимо построить график полосы пропускания. Щелкните Create Plot, чтобы увидеть пропускную способность в мегабайтах в секунду для выбранных мастеров за время запуска. Этот рисунок показывает пропускную способность для примера анализа полосы пропускания памяти с использованием генераторов трафика.

Пакетные графики памяти

На вкладке Bursts выберите шаблоны, для которых необходимо выполнить граф пакетов. Щелкните Create Plot, чтобы увидеть количество пакетов, выполненных для выбранного ведущего за время запуска. Этот рисунок показывает количество пакетов для примера Analyze Memory Bandwidth Using Traffic Generators.

Графики задержки памяти

На вкладке Latencies выберите мастер, для которого необходимо построить график задержек. Щелкните Create Plot, чтобы увидеть задержки для выбранных мастеров в течение длительности запуска. На этом изображении показана общая задержка для Master 1 в примере Analyze Memory Bandwidth Using Traffic Generators. Затем можно масштабировать, чтобы проанализировать пиковую мгновенную задержку.

Вы можете выбрать один из следующих опций:

  • Burst request to first transfer complete - эта опция показывает время, затраченное с момента выдачи мастером запроса на транзакцию до первой передачи данных. Эта задержка учитывает арбитражные или межсоединительные задержки.

  • Burst execution - эта опция показывает время, которое требуется от первой передачи данных до последней передачи пакета.

  • Burst last transfer to complete - эта опция показывает время, которое требуется от последнего переноса до завершения транзакции. В случае считывания транзакции значение 0.

  • Instantaneous Total Latency - Эта опция показывает дискретные измерения общей задержки на пакет.

Каждое нанесенное значение задержки является средним значением соответствующей задержки, измеренной из транзакций памяти в течение интервала дискретизации. Следующий рисунок показывает транзакцию записи и чтения протокола AXI4 Master на оборудовании, показывающую каждую из этих задержек.

Write Transaction

Read Transaction

В транзакции read Burst last transfer to complete latency равен нулю.

Переполнение данных

В Profile режим, collectMemoryStatistics выборки функций памяти метрики: полоса пропускания, пакет и задержки, значения из оборудования после каждой выборки. После этого функция сбрасывает счетчики метрики и затем снова запускает счетчики для следующей выборки. Если какой-либо из счетчиков метрики превышает предел 232 - 1 в пределах интервала дискретизации счетчик переполнен и соответствующая выборка обозначена * на графике.

Пакетные формы волны

Можно также изменить сгенерированный скрипт, чтобы сконфигурировать AXI interconnect monitor для сбора данных о событиях для каждой пакетной транзакции. Можно просмотреть эти события в программе средства просмотра Logic Analyzer сигналов, чтобы изучить поведение арбитража. Укажите количество транзакций для захвата, Trace capture depth, в параметрах конфигурации модели, под Hardware Implementation > Target hardware resources > FPGA design (debug).

Формы волны показывают тип события (BurstIdle, BurstRequest, BurstExecuting, или BurstDone) и эти параметры пакетной транзакции:

  • MasterID - идентификационный номер хозяина памяти, который сделал запрос

  • DataWidth -- Ширина данных в битах

  • BurstLength -- Количество слов данных в пакетном запросе

  • BurstsTransferred -- Количество пакетов в этом запросе (допустимо только с BurstDone событие)

  • BytesTransferred -- Количество байтов в этом запросе (допустимо только с BurstDone событие)

Можно сравнить эти формы волны с формами сигналов, захваченными из блока Memory Controller в симуляции.

Конфигурирование и запрос монитора соединений AXI

AXI interconnect monitor (AIM) является IP-ядром, которое собирает показатели эффективности для проекта FPGA на основе AXI. Создайте socIPCore объект для настройки и конфигурирования IP AIM и использования socMemoryProfiler объект для извлечения и отображения данных.

Пример конфигурирования и запроса IP AIM в проекте с использованием MATLAB в качестве AXI Master см. в разделе Анализ полосы пропускания памяти с помощью генераторов трафика. В частности, проверьте soc_memory_traffic_generator_axi_master.m скрипт, который конфигурирует и контролирует проект устройства.

Выберите режим монитора памяти

Этот AXI interconnect monitor может собирать два типа данных. Выберите Profile режим для сбора средней задержки транзакции и счетчиков байтов и пакетов. В этом режиме можно открыть графический инструмент эффективности, а затем сконфигурировать инструмент для построения графика полосы пропускания, счетчика пакетов и задержки транзакций. Выберите Trace режим для сбора подробных данных о событиях транзакции памяти и просмотра данных как осциллограмм.

perfMonMode = 'Profile'; % or 'Trace'

Сконфигурируйте монитор соединений AXI

Чтобы получить диагностические показатели эффективности из вашего сгенерированного проекта FPGA, необходимо настроить подключение JTAG к устройству из MATLAB. Загрузка .mat файл, содержащий структуры, выведенные из параметров конфигурации платы. Этот файл был сгенерирован инструментом SoC Builder. Эти структуры описывают взаимосвязи между памятью и главами строения такие как размеры буфера и адреса. Используйте socHardwareBoard объект для настройки соединения JTAG.

load('soc_memory_traffic_generator_zc706_aximaster.mat');
hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false);
AXIMasterObj = socAXIMaster(hwObj);
Сконфигурируйте AIM. The socIPCore объект предоставляет функцию, которая выполняет эту инициализацию. Затем настройте socMemoryProfiler объект, чтобы собрать метрики.
apmCoreObj = socIPCore(AXIMasterObj,perf_mon,'PerformanceMonitor','Mode',perfMonMode);
initialize(apmCoreObj);
profilerObj = socMemoryProfiler(hwObj,apmCoreObj);

Получение диагностических данных

Чтобы извлечь метрики эффективности или данные о сигнале из проекта, выполняемого на FPGA, используйте socMemoryProfiler функции объекта.

Для Profile mode, вызовите collectMemoryStatistics функция в цикле.

NumRuns = 100;
for n = 1:NumRuns
    collectMemoryStatistics(profilerObj);
end
Время настройки проекта JTAG велико относительно времени транзакции FPGA, и если у вас есть небольшое количество транзакций в проекте, они могут быть завершены к моменту запроса монитора. В этом случае график полосы пропускания показывает только одну выборку, и вычисление пропускной способности не является точным. В случае возникновения такой ситуации увеличьте общее количество транзакций, выполняемых в проекте.

Для Trace mode, вызовите collectMemoryStatistics функция один раз. Эта функция препятствует записи транзакций IP в FIFO в AXI interconnect monitor IP, хотя транзакции продолжаются в соединении. Установите размер транзакции FIFO, Trace capture depth, в параметрах конфигурации модели, под Hardware Implementation > Target hardware resources > FPGA design (debug).

collectMemoryStatistics(profilerObj);

Визуализация показателей эффективности

Визуализируйте данные о эффективности, используя plotMemoryStatistics функция. В Profile mode, эта функция открывает графический инструмент эффективности, и можно настроить инструмент для построения графика полосы пропускания, счетчика пакетов и средней задержки транзакций. В Trace эта функция открывает инструмент Logic Analyzer для просмотра данных о событиях пакетной транзакции.

plotMemoryStatistics(profilerObj);

См. также

| | |

Похожие темы