Xilinx-логотип

Руководство по оценке производительности Xilinx DDR2 MIG 7

Xilinx_DDR2_MIG_7_Производительность-оценка продукта

Важное примечание: Этот загружаемый PDF-файл с записью ответов предоставляется для повышения удобства использования и удобочитаемости. Важно отметить, что записи ответов Web-контент, который часто обновляется по мере появления новой информации. Напоминаем вам посетить службу технической поддержки Xilinx Webсайт и повторноview (Ответ Xilinx 63234) для получения последней версии этого ответа.

Введение

Из-за архитектуры памяти DDR2 и DDR3 и конструкции контроллера серии MIG 7 производительность не является прямой.
Это требует понимания различных параметров синхронизации Jedec и архитектуры контроллера, и вам нужно будет запустить моделирование, чтобы получить оценки.
Общий принцип определения производительности тот же, но этот документ предоставляет простой способ получить эффективность с помощью MIG ex.ample дизайн с помощью испытательного стенда и стимула fileприлагается здесь.

Эффективная пропускная способность

Шина данных DRAM достигает почти пиковой пропускной способности только во время всплесков чтения и записи, а ее накладные расходы снижают эффективную скорость передачи данных.
Несколько бывшихampНакладные расходы:

  • время предварительной зарядки при доступе к строкам в том же банке (адрес доступа не в той же строке-странице)
  • время восстановления записи для перехода с записи на чтение
  • время переключения шины для перехода с чтения на запись

Xilinx DDR2 MIG 7 Оценка производительности-рис.28
Эффективная пропускная способность = Пиковая пропускная способность * Эффективность 

Генерация дизайна MIG

Обратитесь к главе 586 UG1 для получения пошаговой информации о MIG IP и exampле дизайн поколения.
Перед запуском моделирования производительности MIG 7 выполните следующие действия, чтобы убедиться, что среда моделирования подходит. Откройте МИГ эксampСпроектируйте и сопоставьте соответствующие библиотеки, запустите симуляцию и убедитесь, что вы видите сообщение «тест пройден» в стенограмме.
Чтобы продемонстрировать поток, я сгенерировал IP-адрес MIG для xc7vx690tffg1761-2 и вызвал exampдизайн.
Следует отметить две вещи: биты адреса памяти и выбор отображения адреса памяти.
Напримерampле, я выбрал MT41J128M8XX-125 в раскрывающемся списке параметров памяти.Xilinx DDR2 MIG-7-Оценка производительности-рис-1

Для выбранной части памяти на рисунке 1 строка = 14, столбец = 10 и банк = 3, поэтому app_addr_width = строка + столбец + банк + ранг = 28. Xilinx DDR2 MIG 7 Оценка производительности-рис.2

Вы можете выбрать столбец BANK_ROW_COLUMN или ROW BANK.
Я оставил столбец ROW BANK, который является сопоставлением адресов по умолчанию.

Example design Моделирование с синтезируемым испытательным стендом

В настройках Simulation выберите QuestaSim/ModelSim Simulator и перейдите к расположению скомпилированных библиотек.
Для получения подробной информации об указании пути установки сторонних инструментов, выборе целевого симулятора, а также о компиляции и отображении библиотек вы можете обратиться к (UG900) Руководству пользователя Vivado Design Suite Логическое моделированиеXilinx DDR2 MIG 7 Оценка производительности-рис.3

Запустите симуляцию через графический интерфейс (щелкните вкладку «Выполнить симуляцию» в менеджере проектов) и убедитесь, что вы видите сообщение «тест пройден» в стенограмме.

Моделирование производительности RTL-модификации

  1. Щелкните правой кнопкой мыши вкладку источников, выберите «добавить или создать источники моделирования» и перейдите к файлу mig7_perfsim_traffic_generator.sv. file и нажмите «Готово», чтобы добавить его.
  2. Щелкните правой кнопкой мыши вкладку источников, выберите «добавить или создать источники моделирования», перейдите к файлу perfsim_stimulus.txt и нажмите «Готово», чтобы добавить его.
  3. Закомментируйте бывшегоampэкземпляр le_top в sim_tb_top.v file.
  4. Добавьте приведенные ниже строки RTL в sim_tb_top,v.
  • локальный параметр APP_ADDR_WIDTH = 28;
  • локальный параметр APP_DATA_WIDTH = 64;
  • localparam APP_MASK_WIDTH = APP_DATA_WIDTH/8;
  • localparam MEM_ADDR_ORDER = «BANK_ROW_COLUMN»;
  • локальный параметр BANK_WIDTH = 3;
  • локальный параметр RANK_WIDTH = 1;
  • провод [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • провод [2:0] c0_ddr3_app_cmd;
  • провод c0_ddr3_app_en;
  • провод [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • провод c0_ddr3_app_wdf_end;
  • провод [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • провод c0_ddr3_app_wdf_wren;
  • провод [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • провод c0_ddr3_app_rd_data_end;
  • провод c0_ddr3_app_rd_data_valid;
  • провод c0_ddr3_app_rdy;
  • провод c0_ddr3_app_wdf_rdy;
  • провод c0_data_compare_error;
  • провод ui_clk;
  • провод ui_clk_sync_rst;
  • провод app_sr_req = 0;
  • провод app_ref_req = 0;
  • провод app_zq_req = 0;
  • провод c0_app_wdf_mask = 0;

Создание экземпляра контроллера памяти FPGA

mig_7series_0_mig u_mig_7series_0_mig (
// Порты интерфейса памяти

  • .ddr3_addr (ddr3_addr_fpga),
  • .ddr3_ba (ddr3_ba_fpga),
  • .ddr3_cas_n (ddr3_cas_n_fpga),
  • .ddr3_ck_n (ddr3_ck_n_fpga),
  • .ddr3_ck_p (ddr3_ck_p_fpga),
  • .ddr3_cke (ddr3_cke_fpga),
  • .ddr3_ras_n (ddr3_ras_n_fpga),
  • .ddr3_reset_n (ddr3_reset_n),
  • .ddr3_we_n (ddr3_we_n_fpga),
  • .ddr3_dq (ddr3_dq_fpga),
  • .ddr3_dqs_n (ddr3_dqs_n_fpga),
  • .ddr3_dqs_p (ddr3_dqs_p_fpga),
  • .init_calib_complete (инит_калиб_complete),
  • .ddr3_cs_n (ddr3_cs_n_fpga),
  • .ddr3_dm (ddr3_dm_fpga),
  • .ddr3_odt (ddr3_odt_fpga),

// Порты интерфейса приложения

  • .app_addr(c0_ddr3_app_addr),
  • .app_cmd(c0_ddr3_app_cmd),
  • .app_en (c0_ddr3_app_en),
  • .app_wdf_data(c0_ddr3_app_wdf_data),
  • .app_wdf_end (c0_ddr3_app_wdf_end),
  • .app_wdf_wren (c0_ddr3_app_wdf_wren),
  • .app_rd_data(c0_ddr3_app_rd_data),
  • .app_rd_data_end (приложение_rd_data_end),
  • .app_rd_data_valid (c0_ddr3_app_rd_data_valid),
  • .app_rdy(c0_ddr3_app_rdy),
  • .app_wdf_rdy (c0_ddr3_app_wdf_rdy),
  • .app_sr_req (приложение_sr_req),
  • .app_ref_req (приложение_ref_req),
  • .app_zq_req (приложение_zq_req),
  • .app_sr_active (приложение_sr_active),
  • .app_ref_ack (приложение_ref_ack),
  • .app_zq_ack (приложение_zq_ack),
  • .ui_clk (уи_клк),
  • .ui_clk_sync_rst (ui_clk_sync_rst),
  • .app_wdf_mask (c0_ddr3_app_wdf_mask),

// Порты системных часов

  • .sys_clk_i (sys_clk_i),

// Порты эталонных часов

  • .clk_ref_i (клк_ref_i),
  • .sys_rst (системный_рст)
  • );

Создание производительного генератора трафика

mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (ПРИЛОЖЕНИЕ_DATA_WIDTH),
.COL_ШИРИНА (COL_WIDTH),
.ROW_WIDTH (СТРОКА_ШИРИНА),
.RANK_WIDTH (РАНК_ШИРИНА),
.БАНК_ШИРИНА (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.тСК (тСК),
.ADDR_WIDTH (ПРИЛОЖЕНИЕ_ADDR_WIDTH)
)

u_traffic_gen
(
.clk(ui_clk),
.rst (ui_clk_sync_rst),
.init_calib_complete (инит_калиб_complete),
.cmp_error(c0_data_compare_error),
.app_wdf_rdy (c0_ddr3_app_wdf_rdy),
.app_rd_data_valid (c0_ddr3_app_rd_data_valid),
.app_rd_data (c0_ddr3_app_rd_data),
.app_rdy(c0_ddr3_app_rdy),
.app_cmd (c0_ddr3_app_cmd),
.app_addr (c0_ddr3_app_addr),
.app_en (c0_ddr3_app_en),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.app_wdf_data(c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);

  • 5. Измените APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH и BANK_WIDTH в соответствии с выбранной частью памяти.
    Значения можно получить из _миг.в file.
  • Выделенное желтым цветом имя экземпляра mig_7series_0_mig может варьироваться в зависимости от имени вашего компонента во время создания IP, проверьте, выбрали ли вы другое имя, и измените его соответствующим образом.Xilinx DDR2 MIG 7 Оценка производительности-рис.4
  • После того, как IP сгенерирован, откройте _миг.в file а также перепроверьте любые варианты имен сигналов LHS и исправьте их.
  • app_sr_req, app_ref_req и app_zq_req должны быть инициализированы до 0.
  • Как бывшийample_top.v закомментирован и новый files, вы, вероятно, увидите «?» за
    mig_7series_0_mig.v file под источниками моделирования.
    Чтобы сопоставить правильный file, щелкните правой кнопкой мыши mig_7series_0_mig.v, выберите «Добавить источники», перейдите к
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    и добавьте файл mig_7series_0_mig_sim.v file.
  • Если ты видишь "?" для основного files, добавьте все RTL files в папках clocking, controller, ip_top,phy и UI.
  • После внесения изменений RTL и всех необходимых files добавляются к вашим источникам моделирования, иерархия должна быть аналогична рисунку 5.
    The files, выделенные красным, добавлены недавно, а «?» ожидается в модулях, связанных с ECC, поскольку в выбранной конфигурации памяти параметр ECC отключен.Xilinx DDR2 MIG 7 Оценка производительности-рис.5

Стимул File Описание
Каждый образец стимула имеет длину 48 бит, и его формат описан на рисунках с 6-1 по 6-4.Xilinx DDR2 MIG 7 Оценка производительности-рис.6

Кодировка адреса (Адрес [35:0])

Адрес закодирован в стимуле в соответствии с рис. 7-1 — рис. 7-6. Все поля адреса должны быть введены в шестнадцатеричном формате. Все поля адреса имеют ширину, кратную четырем для ввода в шестнадцатеричном формате. Тестовый стенд отправляет контроллеру памяти только необходимые биты поля адреса.
НапримерampНапример, в конфигурации с восемью банками в контроллер памяти отправляются только биты банка [2:0], а остальные биты игнорируются. Дополнительные биты для поля адреса предназначены для ввода адреса в шестнадцатеричном формате.
Вы должны подтвердить, что введенное значение соответствует ширине данной конфигурации.Xilinx DDR2 MIG 7 Оценка производительности-рис.7

  • Адрес столбца (столбец [11:0]) — Адрес столбца в стимуле предоставляется максимум в 12 бит, но вам необходимо решить эту проблему на основе параметра ширины столбца, установленного в вашем проекте.
  • Адрес строки (строка[15:0]) – Адрес строки в стимуле предоставляется максимум до 16 бит, но вам необходимо решить эту проблему на основе параметра ширины строки, установленного в вашем проекте.
  • Адрес банка (Банк[3:0]) – Адрес банка в стимуле предоставляется максимум в четыре бита, но вам необходимо адресовать это на основе параметра ширины банка, установленного в вашем проекте.
  • Ранг Адрес (Ранг[3:0]) – Адрес ранга в стимуле предоставляется максимум в четыре бита, но вам необходимо решить эту проблему на основе параметра ширины ранга, установленного в вашем проекте.
    Адрес собирается на основе параметра верхнего уровня MEM_ADDR_ORDER и отправляется в пользовательский интерфейс.

Повтор команды (Повтор команды [7:0])
Счетчик повторений команды — это количество раз, когда соответствующая команда повторяется в пользовательском интерфейсе. Адрес для каждого повторения увеличивается на 8. Максимальное количество повторений равно 128.
Тестовый стенд не проверяет границу столбца и выполняет обход, если максимальный предел столбца достигается во время приращений.
128 команд заполняют страницу. Для любого адреса столбца, отличного от 0, счетчик повторений, равный 128, пересекает границу столбца и переходит к началу адреса столбца.

Использование шины
Использование шины рассчитывается в пользовательском интерфейсе с учетом общего количества операций чтения и записи, и используется следующее уравнение:

Xilinx DDR2 MIG 7 Оценка производительности-рис.8

  • BL8 занимает четыре такта памяти
  • end_of_stimulus — это время, когда все команды выполнены.
  • calib_done — время завершения калибровки.

Exampле Шаблоны
Эти бывшиеampфайлы основаны на MEM_ADDR_ORDER, установленном в BANK_ROW_COLUMN.

Одиночный шаблон чтения
00_0_2_000F_00A_1 — этот шаблон является однократным чтением из 10-го столбца, 15-й строки и второго банка.Xilinx DDR2 MIG 7 Оценка производительности-рис.9Один шаблон записи
00_0_1_0040_010_0 — этот шаблон представляет собой одну запись в 32-й столбец, 128-ю строку и первый банк.Xilinx DDR2 MIG 7 Оценка производительности-рис.10Одиночная запись и чтение по одному и тому же адресу
00_0_2_000F_00A_0 – Этот шаблон представляет собой одиночную запись в 10-й столбец, 15-ю строку и второй банк.
00_0_2_000F_00A_1 – Этот шаблон представляет собой однократное чтение из 10-го столбца, 15-й строки и второго банка.Xilinx DDR2 MIG 7 Оценка производительности-рис.11

Несколько операций записи и чтения с одним и тем же адресом
0A_0_0_0010_000_0 – Это соответствует 10 операциям записи с адресами от 0 до 80, которые можно увидеть в столбце.Xilinx DDR2 MIG 7 Оценка производительности-рис.12

0A_0_0_0010_000_1 – Это соответствует 10 операциям чтения с адресами от 0 до 80, которые можно увидеть в столбце.Xilinx DDR2 MIG 7 Оценка производительности-рис.13

Перенос страницы во время записи
0A_0_2_000F_3F8_0 – Это соответствует 10 операциям записи с переносом адреса столбца на начало страницы после одной записи.Xilinx DDR2 MIG 7 Оценка производительности-рис.14

Моделирование генератора производительного трафика

На этом вы закончили с MIG exampле дизайна моделирования. Это означает, что ваша симуляционная установка готова, вы выполнили модификации RTL для симуляции производительности, новая иерархия симуляции верна, и вы поняли модели стимулов. Запустите симуляцию еще раз с 16 операциями записи и чтения в файле perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Оценка производительности-рис.15

Выполните run-all, подождите, пока не будет подтвержден сигнал init_calib_complete, и вы сможете увидеть предлагаемое количество операций записи и чтения. Затем симуляция остановится. Xilinx DDR2 MIG 7 Оценка производительности-рис.16

Когда вам будет предложено выйти из моделирования, выберите «Нет» и перейдите в окно стенограммы, где вы сможете увидеть статистику производительности. Xilinx DDR2 MIG 7 Оценка производительности-рис.17

Если вы выберете «выйти из симуляции» статистика производительности будет записываться в file названный mig_band_width_output.txt находится в папке sim_1/behave папка.

Exampпуть к каталогу: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/поведениеXilinx DDR2 MIG 7 Оценка производительности-рис.18

Вы можете задаться вопросом, почему процентtagИспользование шины равно 29. Повторно запустите симуляцию с теми же настройками IP, но просто изменив стимул. file до 256 операций записи и 256 операций чтения

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Теперь вы увидите процентtage равно 85, что означает, что DDR3 предлагает лучшее использование шины для длинных последовательностей операций записи и чтения. Xilinx DDR2 MIG 7 Оценка производительности-рис.19

Общие способы повышения производительности

Факторы, влияющие на эффективность, можно разделить на две части:

  1. Специфическая память
  2. Конкретный контроллерXilinx DDR2 MIG 7 Оценка производительности-рис.20

Рисунок 9 дает вамview терминов, специфичных для памяти.
В отличие от SRAM и блочной памяти производительность DDR2 или DDR3 — это не только максимальная скорость передачи данных.

Это зависит от многих факторов времени, в том числе:

  • тУЗО: Задержка команды строки (или задержка ras to cas).
  • tCAS(CL): Задержка строба адреса столбца.
  • ТРП: Задержка предварительной зарядки строки.
  • тРАНС: Активное время строки (активируйте для предварительной замены).
  • тРК: Время цикла строки. tRC = tRAS + tRP
  • ТРАК: Задержка доступа к Радому. tRAC = tRCD + tCAS
  • tCWL: Кас задержка записи.
  • тЗК: Время калибровки ZQ.
  • тРФК: Время цикла обновления строки
  • ТВТР: Запись на чтение с задержкой. Последняя транзакция записи во время команды чтения.
  • тВР: Напишите время восстановления. Последняя транзакция записи во время предварительной зарядки

Время всех перечисленных параметров зависит от типа используемой памяти и класса быстродействия памяти.
Более подробную информацию об определениях и спецификациях синхронизации можно найти в документе DDR2 DDR3 JEDEC или в описании любого устройства памяти.

Эффективность в основном зависит от того, как осуществляется доступ к памяти. Различные шаблоны адресов дают разные результаты эффективности.

Накладные расходы памяти

  1. Время активации и время предварительной зарядки при переходе на новые банки/ряды или изменении рядов в одном и том же банке. Таким образом, если вы уменьшите изменение ряда, это может удалить tRCD и tRP.
  2. Отправлять непрерывные команды записи или чтения. Поддержание синхронизации tCCD.
  3. Сведите к минимуму переключение команд записи на чтение и чтение на запись — время восстановления записи для перехода на доступ для чтения, время оборота шины для перехода с чтения на запись
  4. Установите правильный интервал обновления.
    • DDR3 SDRAM требует циклов обновления со средним периодическим интервалом tREFI.
    • Максимум 8 дополнительных команд обновления могут быть выданы заранее («вытянуты»). Это не уменьшает количество обновлений, но максимальный интервал между двумя окружающими командами Refresh ограничен 9 × tREFI.Xilinx DDR2 MIG 7 Оценка производительности-рис.21
  • Используйте все банки – Предпочтительным является подходящий механизм адресации.
    • Строка-Банк-Колонка: Для транзакции, происходящей в последовательном адресном пространстве, ядро ​​​​автоматически открывает ту же строку в следующем банке устройства DRAM, чтобы продолжить транзакцию, когда будет достигнут конец существующей строки. Он хорошо подходит для приложений, требующих пакетной передачи больших пакетов данных в последовательные адресные ячейки.
    • Банк-Ряд-Колонка: При пересечении границы строки текущая строка будет закрыта, а другая строка будет открыта в том же банке. MSB — это банковский адрес, который можно использовать для переключения из разных банков. Он подходит для более коротких, более случайных транзакций в один блок памяти в течение определенного периода времени, а затем для перехода к другому блоку (банку).
  • Длина импульса
    • BL 8 поддерживается для DDR3 в 7-й серии. BC4 имеет очень низкий КПД, менее 50%. Это связано с тем, что время выполнения BC4 такое же, как BL8. Данные просто маскируются внутри компонента.
    • В случаях, когда вы не хотите записывать полный пакет, можно рассмотреть либо маску данных, либо запись после чтения.
  • Установите правильный интервал ZQ (только для DDR3)
    Контроллер отправляет команды калибровки ZQ Short (ZQCS) и ZQ Long (ZQCL).
    • Придерживайтесь стандарта DDR3 Jedec
    • Калибровка ZQ обсуждается в разделе 5.5 стандарта JEDEC Spec JESD79-3 DDR3 SDRAM.
    • ZQ Calibration калибрует клеммы на кристалле (ODT) через регулярные промежутки времени для учета изменений в VT.
    • Логика содержится в bank_common.v/vhd
    • Параметр Tzqcs определяет скорость, с которой команда калибровки ZQ отправляется в память.
    • Можно отключить счетчик и вручную отправить с помощью app_zq_req, это похоже на ручную отправку Refresh.
      Подробнее см. (Xilinx Answer 47924).Xilinx DDR2 MIG 7 Оценка производительности-рис.22

Накладные расходы контроллера

  1. Периодические чтения – см. (Ответ Xilinx 43344) для получения подробной информации.
    • Не менять период чтения
    • Пропускать периодические чтения во время записи и выдавать количество пропущенных чтений перед истинным чтением
  2. Повторный заказ - см. (Ответ Xilinx 34392) для получения подробной информации.
    Для интерфейсов пользователя и AXI предпочтительнее, чтобы эта функция была включена.
    • Переупорядочивание — это логика, которая просматривает несколько команд вперед и изменяет порядок пользовательских команд, чтобы команды, не относящиеся к памяти, не занимали допустимую полосу пропускания. Производительность также связана с фактической схемой трафика.
    • Основываясь на шаблоне адресов, переупорядочивание помогает пропустить команды предварительной зарядки и активации, а также позволяет tRCD и tRP не занимать ширину полосы данных.Xilinx DDR2 MIG 7 Оценка производительности-рис.23
  3. Попробуйте увеличить количество банкоматов.
    • Большая часть логики контроллера находится в банковских машинах, и они соответствуют банкам DRAM.
    • Данная банковская машина управляет одним банком DRAM в любой момент времени.
    • Назначение банковского автомата является динамическим, поэтому нет необходимости иметь банковский автомат для каждого физического банка.
    • Банкоматы можно настроить, но это компромисс между площадью и производительностью.
    • Допустимое количество банкоматов колеблется от 2 до 8.
    • По умолчанию 4 банковских автомата настраиваются через параметры RTL.
    • Чтобы изменить Банкоматы, рассмотрите параметр nBANK_MACHS = 8, содержащийся в memc_ui_top Пример.ampфайл для 8 банкоматов – nBANK_MACHS = 8

Теперь вы знаете о факторах, влияющих на производительность.
Рассмотрим вышестоящее приложение, которое дает вам 512 байт данных на пакет, и вам нужно сохранить их в разных местах памяти. Поскольку 512 байт данных равны 64 пакетам данных DDR3, повторно запустите exampле дизайн со стимулом file содержащий 512 операций записи, 512 операций чтения и переключение строк на каждые 64 операции записи или чтения:

  • 3f_0_0_0000_000_0
  • 3f_0_0_0001_000_0
  • 3f_0_0_0002_000_0
  • 3f_0_0_0003_000_0
  • 3f_0_0_0004_000_0
  • 3f_0_0_0005_000_0
  • 3f_0_0_0006_000_0
  • 3f_0_0_0007_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_0_0001_000_1
  • 3f_0_0_0002_000_1
  • 3f_0_0_0003_000_1
  • 3f_0_0_0004_000_1
  • 3f_0_0_0005_000_1
  • 3f_0_0_0006_000_1
  • 3f_0_0_0007_000_1

В конце симуляции вы увидите, что загрузка шины составляет 77 процентов. Xilinx DDR2 MIG 7 Оценка производительности-рис.24

Рис. 11. Статистика производительности для 512 операций записи и 512 операций чтения — переключение строк для 64 операций записи или чтения. 

Теперь вы можете применить знания, полученные в предыдущем разделе, для повышения эффективности. С view чтобы использовать все банки вместо изменения строки, измените шаблон адреса, чтобы изменить банк, как показано ниже.
Это эквивалентно настройке ROW_BANK_Column в настройке сопоставления адресов памяти в графическом интерфейсе MIG.

  • 3f_0_0_0000_000_0
  • 3f_0_1_0000_000_0
  • 3f_0_2_0000_000_0
  • 3f_0_3_0000_000_0
  • 3f_0_4_0000_000_0
  • 3f_0_5_0000_000_0
  • 3f_0_6_0000_000_0
  • 3f_0_7_0000_000_0
  • 3f_0_0_0000_000_1
  • 3f_0_1_0000_000_1
  • 3f_0_2_0000_000_1
  • 3f_0_3_0000_000_1
  • 3f_0_4_0000_000_1
  • 3f_0_5_0000_000_1
  • 3f_0_6_0000_000_1
  • 3f_0_7_0000_000_1

В конце симуляции вы увидите, что ранее 77-процентное использование шины теперь равно 87! Xilinx DDR2 MIG 7 Оценка производительности-рис.25

Если вам по-прежнему требуется более высокая эффективность, вы можете выбрать большие размеры пакетов 1024 или 2048 байт или рассмотреть возможность ручного обновления.

Примечание: Xilinx не рекомендует обходить обновление контроллера, поскольку мы не уверены, сможете ли вы соблюдать время автоматического обновления Jedec, которое влияет на надежность данных.
Со стороны контроллера вы можете изменить nBANk_MACH и увидеть улучшение производительности.
Однако это может повлиять на сроки разработки, см. (Ответ Xilinx 36505) подробности о nBANk_MACHXilinx DDR2 MIG 7 Оценка производительности-рис.26

Откройте файл core_name_mig_sim.v file и измените параметры nBANK_MACHS с 4 на 8 и перезапустите симуляцию. Чтобы значение параметра вступило в силу на аппаратном уровне, необходимо обновить файл core_name_mig.v. file.
Я использовал тот же шаблон, где мы получили 87% загрузки шины (рисунок -12).
Если для nBANK_MACHS установлено значение 8, эффективность составляет 90%. Xilinx DDR2 MIG 7 Оценка производительности-рис.27

Также обратите внимание, что контроллеры ½ и ¼ отрицательно влияют на эффективность из-за их задержек.
Напримерample, поскольку мы можем отправлять команды только каждые 4 цикла CK, иногда при соблюдении минимальных спецификаций синхронизации DRAM требуется дополнительное заполнение, что может снизить эффективность по сравнению с теоретической.
Попробуйте различные контроллеры, чтобы найти тот, который соответствует вашим требованиям к эффективности.

Ссылки

  1. Zynq-7000 AP SoC и 7 Series FPGA MIS v2.3 [UG586]
  2. Центр решений Xilinx MIG http://www.xilinx.com/support/answers/34243.html

История изменений
13 — Первоначальный релиз

PDF скачать: Руководство по оценке производительности Xilinx DDR2 MIG 7

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *