Посібник з оцінки продуктивності Xilinx DDR2 MIG 7
Важлива примітка: Цей PDF-файл із записом відповідей, який можна завантажити, надається для покращення його використання та читабельності. Важливо відзначити, що записи відповідей є Webконтент, який часто оновлюється, коли стає доступною нова інформація. Нагадуємо вам відвідати службу технічної підтримки Xilinx Webсайт і повторноview (Xilinx Answer 63234) для останньої версії цієї відповіді.
вступ
Через архітектуру пам’яті DDR2 і DDR3 і дизайн контролера серії MIG 7 продуктивність не є простою.
Це вимагає розуміння різних параметрів синхронізації Jedec і архітектури контролера, і вам потрібно буде запустити моделювання, щоб отримати оцінки.
Загальний принцип визначення продуктивності той самий, але цей документ пропонує простий спосіб отримати ефективність за допомогою MIG exampпроектування за допомогою тестового стенду та стимулу fileдодається тут.
Ефективна пропускна здатність
Шина даних DRAM досягає майже пікової пропускної здатності лише під час пакетів читання та запису, а її накладні витрати знижують ефективну швидкість передачі даних.
Кілька ексampнакладні витрати:
- час попередньої зарядки доступу до рядків у тому самому банку (адреса доступу не в тому самому зверненні до рядка-сторінки)
- час відновлення запису, щоб змінити доступ із запису на читання
- час роботи шини для зміни доступу з читання на запис
Ефективна пропускна здатність = Пікова пропускна здатність * Ефективність
MIG Design Generation
Зверніться до розділу 586 UG1, щоб отримати покрокову інформацію про MIG IP та exampстворення дизайну.
Перш ніж запускати симуляцію продуктивності MIG 7 Series, виконайте наведені нижче дії, щоб переконатися, що ваше середовище моделювання в порядку. Відкрийте MIG example спроектуйте та зіставте відповідні бібліотеки, запустіть симуляцію та переконайтеся, що ви бачите повідомлення «тест пройдено» в стенограмі.
Щоб продемонструвати потік, я створив MIG IP для xc7vx690tffg1761-2 і викликав exampдизайн.
Дві речі, які слід зазначити, це біти адреси пам’яті та вибір відображення адреси пам’яті.
наприкладample, я вибрав MT41J128M8XX-125 у спадному списку параметрів частини пам’яті.
Для вибраної частини пам’яті на малюнку 1 рядок = 14, стовпець = 10 і банк = 3, тому app_addr_width = рядок + стовпець + банк + ранг = 28
Ви можете вибрати стовпець BANK_ROW_COLUMN або ROW BANK.
Я залишив стовпець ROW BANK, який є стандартним відображенням адреси.
ExampLe Design Simulation із синтезованим тестовим стендом
У налаштуваннях моделювання виберіть QuestaSim/ModelSim Simulator і перейдіть до розташування скомпільованих бібліотек.
Докладні відомості про вказівку шляху встановлення сторонніх інструментів, вибір цільового симулятора, а також компіляцію та відображення бібліотек див. у (UG900) Посібник користувача Vivado Design Suite Логічне моделювання
Запустіть симуляцію через графічний інтерфейс користувача (клацніть вкладку «Запустити симуляцію» в менеджері проектів) і переконайтеся, що в стенограмі ви бачите повідомлення «тест пройдено».
Модифікації моделювання продуктивності RTL
- Клацніть правою кнопкою миші вкладку джерел, виберіть «додати або створити джерела моделювання» та перейдіть до mig7_perfsim_traffic_generator.sv file і натисніть Готово, щоб додати його.
- Клацніть правою кнопкою миші вкладку джерел, виберіть «додати або створити джерела моделювання», перейдіть до perfsim_stimulus.txt і натисніть «Готово», щоб додати його.
- Прокоментуйте ексampекземпляр le_top у sim_tb_top.v file.
- Додайте наведені нижче рядки RTL до sim_tb_top,v
- локальний параметр APP_ADDR_WIDTH = 28;
- локальний параметр APP_DATA_WIDTH = 64;
- локальний параметр 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 (init_calib_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 (app_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 (app_sr_req),
- .app_ref_req (app_ref_req),
- .app_zq_req (app_zq_req),
- .app_sr_active (app_sr_active),
- .app_ref_ack (app_ref_ack),
- .app_zq_ack (app_zq_ack),
- .ui_clk (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 (clk_ref_i),
- .sys_rst (sys_rst)
- );
Інструмент генератора трафіку продуктивності
mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (RANK_WIDTH),
.BANK_WIDTH (BANK_WIDTH),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK ),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)
u_traffic_gen
(
.clk (ui_clk),
.rst (ui_clk_sync_rst),
.init_calib_complete (init_calib_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 відповідно до вибору частини пам’яті.
Значення можна отримати з _mig.v file. - Ім’я екземпляра mig_7series_0_mig, виділене жовтим кольором, може змінюватися залежно від імені вашого компонента під час створення IP-адреси. Перевірте, чи ви вибрали інше ім’я, і змініть його відповідно.
- Після створення IP-адреси відкрийте _mig.v 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 будуть зроблені та всі необхідні fileдодано до ваших джерел симуляції, ієрархія має бути подібною до малюнку 5.
The files, виділені червоним, є нещодавно доданими, а «?» очікується на модулях, пов’язаних з ECC, оскільки у вибраній конфігурації пам’яті параметр ECC вимкнено.
стимул File опис
Кожен шаблон стимулу має 48 біт, а формат описано на малюнках 6-1–6-4.
Кодування адреси (адреса [35:0])
Адреса закодована в стимулі відповідно до малюнків 7-1 – 7-6. Усі поля адреси потрібно вводити в шістнадцятковому форматі. Ширина всіх полів адреси ділиться на чотири для введення в шістнадцятковому форматі. Тестовий стенд надсилає лише необхідні біти поля адреси до контролера пам’яті.
наприкладampНаприклад, у конфігурації з вісьмома банками до контролера пам’яті надсилаються лише банківські біти [2:0], а інші біти ігноруються. Додаткові біти для поля адреси надаються для введення адреси в шістнадцятковому форматі.
Ви повинні підтвердити, що введене значення відповідає ширині даної конфігурації.
- Адреса стовпця (Column[11:0]) – Адреса стовпця в стимулі містить максимум 12 бітів, але вам потрібно вирішити це на основі параметра ширини стовпця, встановленого у вашому проекті.
- Адреса рядка (Рядок[15:0]) – Адреса рядка в стимулі надається до максимум 16 бітів, але вам потрібно вирішити це на основі параметра ширини рядка, встановленого у вашому проекті.
- Адреса банку (Bank[3:0]) – Адреса банку в стимулі надається максимум у чотирьох бітах, але вам потрібно вказати це на основі параметра ширини банку, встановленого у вашому проекті.
- Адреса рангу (Ранг[3:0]) – Адреса рангу в стимулі надається максимум до чотирьох бітів, але вам потрібно вирішити це на основі параметра ширини рангу, встановленого у вашому проекті.
Адреса збирається на основі параметра MEM_ADDR_ORDER верхнього рівня та надсилається в інтерфейс користувача
Повтор команди (Повтор команди [7:0])
Кількість повторів команди – це кількість разів, коли відповідна команда повторюється в інтерфейсі користувача. Адреса для кожного повторення збільшується на 8. Максимальна кількість повторень становить 128.
Тестовий стенд не перевіряє межі стовпця, і він обертається, якщо максимальний ліміт стовпця досягнуто під час збільшення.
128 команд заповнюють сторінку. Для будь-якої адреси стовпця, відмінної від 0, кількість повторень 128 закінчується перетином межі стовпця та обертанням до початку адреси стовпця.
Використання автобуса
Використання шини розраховується в інтерфейсі користувача з урахуванням загальної кількості читань і записів і використовується наступне рівняння:
- BL8 займає чотири такти пам'яті
- кінець_стимулу — це час виконання всіх команд.
- calib_done — це час завершення калібрування.
Example Візерунки
Ці ексampфайли базуються на MEM_ADDR_ORDER, встановленому як BANK_ROW_COLUMN.
Одиночний шаблон читання
00_0_2_000F_00A_1 – цей шаблон є одним зчитуванням із 10-го стовпця, 15-го рядка та другого банку.Один шаблон запису
00_0_1_0040_010_0 – цей шаблон є одним записом у 32-й стовпець, 128-й рядок і перший банк.Одночасний запис і читання на одну адресу
00_0_2_000F_00A_0 – Цей шаблон є одним записом у 10-й стовпець, 15-й рядок і другий банк.
00_0_2_000F_00A_1 – Цей шаблон є одноразовим читанням з 10-го стовпця, 15-го рядка та другого банку
Кілька записів і читань з тією самою адресою
0A_0_0_0010_000_0 – Це відповідає 10 записам з адресами, починаючи з 0 до 80, які можна побачити в стовпці.
0A_0_0_0010_000_1 – Це відповідає 10 читанням з адресами, починаючи з 0 до 80, які можна побачити в стовпці.
Перенесення сторінок під час запису
0A_0_2_000F_3F8_0 – Це відповідає 10 записам із перенесенням адреси стовпця на початок сторінки після одного запису.
Симуляція продуктивного генератора трафіку
На цьому ви закінчили з MIG exampсимуляція дизайну. Це означає, що ваше налаштування симуляції готове, ви внесли модифікації симуляції продуктивності RTL, нова ієрархія симуляції правильна, і ви зрозуміли шаблони стимулів. Запустіть симуляцію ще раз із 16 записами та читаннями в perfsim_stimulus.txt.
Виконайте команду run-all, зачекайте, поки не буде встановлено сигнал init_calib_complete, і ви зможете побачити запропоновану кількість записів і читань. Після цього симуляція припиниться.
Коли вам буде запропоновано вийти з симуляції, виберіть Ні та перейдіть до вікна стенограми, де ви зможете побачити статистику ефективності.
Якщо вибрати «вийти з моделювання» статистика продуктивності буде записана в a file названий mig_band_width_output.txt, розташований у sim_1/behave папку.
Exampшлях до каталогу файлів: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Ви можете запитати, чому відсотокtagвикористання електронної шини лише 29. Повторно запустіть моделювання з тими самими параметрами IP, але лише змінивши стимул file до 256 записів і 256 читань
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Тепер ви побачите відсотокtage як 85, що означає, що DDR3 забезпечує краще використання шини для тривалої послідовності записів і зчитування.
Загальні способи покращення продуктивності
Фактори, що впливають на ефективність, можна розділити на дві частини:
- Специфічна пам'ять
- Специфічний контролер
Малюнок 9 дає вам надview термінів, які є специфічними для пам’яті.
На відміну від SRAM і блокової пам'яті, продуктивність DDR2 або DDR3 - це не лише максимальна швидкість передачі даних.
Це залежить від багатьох факторів часу, зокрема:
- tRCD: Затримка команди рядка (або затримка від ras до cas).
- tCAS(CL): Затримка стробування адреси стовпця.
- tRP: Затримка попередньої зарядки рядків.
- tRAS: Час дії рядка (активуйте для попередньої зміни).
- tRC: Час циклу рядка. tRC = tRAS + tRP
- tRAC: Радомська затримка доступу. tRAC = tRCD + tCAS
- tCWL: Cas затримка запису.
- tZQ: Час калібрування ZQ.
- tRFC: Час циклу оновлення рядка
- tWTR: Затримка запису для читання. Час останньої транзакції запису в команду Read.
- tWR: Напишіть Час відновлення. Час останнього запису транзакції до попередньої зарядки
Час виконання всіх перерахованих параметрів залежить від типу використовуваної пам’яті та швидкості частини пам’яті.
Докладніше про визначення та специфікації синхронізації можна знайти в DDR2 DDR3 JEDEC або в будь-якій таблиці даних пристрою пам’яті.
Ефективність в основному залежить від способу доступу до пам'яті. Різні шаблони адрес дають різні результати ефективності.
Накладні витрати часу пам'яті
- Час активації та час попередньої зарядки під час переходу на нові банки/рядки або зміни рядків у тому самому банку. Отже, якщо ви зменшите зміну рядків, це може видалити tRCD і tRP.
- Надсилати безперервні команди запису або читання - Підтримка синхронізації tCCD.
- Мінімізуйте перемикання команд запису на читання та читання на запис – час відновлення запису для зміни доступу до читання, час виконання шини для переходу з читання на запис
- Встановіть належний інтервал оновлення.
- DDR3 SDRAM потребує циклів оновлення із середнім періодичним інтервалом tREFI.
- Максимум 8 додаткових команд Refresh можна видати заздалегідь («затягнути»). Це не зменшує кількість оновлень, але максимальний інтервал між двома навколишніми командами Refresh обмежено 9 × tREFI
- Використовуйте всі банки – Кращим є відповідний механізм адресації.
- рядок-банк-стовпець: Для транзакції, що відбувається в послідовному адресному просторі, ядро автоматично відкриває той самий рядок у наступному банку пристрою 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 Calibration надсилається до пам’яті
- t можна вимкнути лічильник і вручну надіслати за допомогою app_zq_req, це схоже на надсилання Refresh вручну.
Додаткову інформацію див. у (Xilinx Answer 47924).
Накладні витрати контролера
- Періодичні читання – Див (Відповідь Xilinx 43344) для деталей.
- Не змінюйте період читання
- Пропускати періодичні читання під час запису та видавати кількість пропущених читань перед справжнім читанням
- Перезамовлення – див (Відповідь Xilinx 34392) для деталей.
Для проектів користувача та інтерфейсу AXI бажано, щоб це було ввімкнено.- Перевпорядкування — це логіка, яка передбачає кілька команд і змінює порядок команд користувача, щоб команди, не пов’язані з пам’яттю, не займали дійсну пропускну здатність. Продуктивність також пов’язана з фактичною структурою трафіку.
- На основі шаблону адреси зміна порядку допомагає пропускати команди попередньої зарядки та активації, а також дозволяє tRCD і tRP не займати ширину смуги даних.
- Спробуйте збільшити кількість банкоматів.
- Більшість логіки контролера міститься в банківських машинах, і вони відповідають банкам DRAM
- Дана банківська машина керує одним банком DRAM у будь-який момент часу.
- Призначення банкомата є динамічним, тому немає необхідності мати банкомат для кожного фізичного банку.
- Банкомати можна налаштувати, але це компроміс між площею та продуктивністю.
- Допустима кількість банкоматів коливається від 2 до 8.
- За замовчуванням 4 банкомати налаштовані за допомогою параметрів RTL.
- Щоб змінити банкомат, розгляньте параметр nBANK_MACHS = 8, який міститься в memc_ui_top Example для 8 банкоматів – nBANK_MACHS = 8
Тепер ви знаєте про фактори, які впливають на ефективність.
Розглянемо апстрім-програму, яка надає вам 512 байт даних на пакет, і вам потрібно зберегти їх у різних місцях пам’яті. Оскільки 512 байтів даних дорівнює 64 пакетам даних DDR3, повторно запустіть програмуampле оформлення зі стимулом 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 відсотків.
Рисунок 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!
Якщо вам усе ще потрібна більша ефективність, ви можете вибрати великі пакети розміром 1024 або 2048 байт або розглянути питання про ручне оновлення.
Примітка: Xilinx не заохочує обходити оновлення контролера, оскільки ми не впевнені, чи зможете ви відповідати часу автоматичного оновлення Jedec, що впливає на надійність даних.
З боку контролера ви можете змінити nBANk_MACH і побачити покращення продуктивності.
Однак це може вплинути на ваш час проектування, будь ласка, зверніться до (Відповідь Xilinx 36505) подробиці на nBANk_MACH
Відкрийте core_name_mig_sim.v file і змініть параметри nBANK_MACHS з 4 на 8 і повторно запустіть моделювання. Щоб значення параметра набуло чинності в апаратному забезпеченні, вам потрібно оновити core_name_mig.v file.
Я використав той самий шаблон, де ми отримали 87% використання шини (малюнок -12).
Якщо nBANK_MACHS встановлено на 8, ефективність тепер становить 90%.
Також зверніть увагу, що контролери ½ і ¼ негативно впливають на ефективність через їх затримки.
наприкладample, оскільки ми можемо надсилати команди лише кожні 4 цикли CK, іноді виникає додаткове заповнення при дотриманні мінімальних специфікацій синхронізації DRAM, що може знизити ефективність порівняно з теоретичною.
Спробуйте різні контролери, щоб знайти той, який відповідає вашим вимогам ефективності.
Список літератури
- Zynq-7000 AP SoC і FPGA 7 серії MIS v2.3 [UG586]
- Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html
Історія версій
13/03/2015 – Перший випуск
Завантажити PDF: Посібник з оцінки продуктивності Xilinx DDR2 MIG 7