Водич за проценка на перформансите на Xilinx DDR2 MIG 7
Важна забелешка: Овој PDF од записот со одговори што може да се преземе е обезбеден за да се подобри неговата употребливост и читливост. Важно е да се напомене дека записите за одговори се Web-заснована на содржини кои често се ажурираат кога стануваат достапни нови информации. Се потсетувате да ја посетите техничката поддршка на Xilinx Webсајт и реview (Xilinx Answer 63234) за најновата верзија на овој одговор.
Вовед
Поради начинот на кој се архитектирани мемориите DDR2 и DDR3 и дизајнираниот контролер од серијата MIG 7, перформансите не се едноставни.
Потребно е разбирање на различни параметри за тајминг на Jedec и архитектура на контролорот, а ќе треба да извршите симулации за да ги добиете проценките.
Општиот принцип за одредување на перформансите е ист, но овој документ обезбедува лесен начин да се добие ефикасност со користење на MIG exampле дизајн со помош на тест клупа и стимул fileе прикачен овде.
Ефективен опсег на опсег
Податочната магистрала DRAM постигнува блиску до врвната пропусност само за време на периоди на читање и пишување, а нејзиниот надземен товар ја намалува ефективната стапка на податоци.
Неколку бившиampгорните трошоци се:
- однапред наплаќајте време за пристап до редовите во истата банка (Адресата за пристап не е во истиот хит на страницата на редот)
- напишете време за обновување за да се промените од пристап за пишување во читање
- времето на вртење на автобусот да се промени од пристап за читање во запишување
Ефективен пропусен опсег = врвен пропусен опсег * Ефикасност
Генерација на дизајн на МИГ
Погледнете во UG586 Поглавје 1 за чекор-по-чекор детали за MIG IP и прampгенерирање на дизајн.
Пред да ја стартувате симулацијата на изведбата на MIG 7 Series, направете го следново за да бидете сигурни дека вашата симулациска околина е во ред. Отворете го MIG exampДизајнирајте и мапирајте ги соодветните библиотеки, извршете ја симулацијата и погрижете се да ја видите пораката „тестот помина“ во преписот.
За да го покажам протокот, генерирав MIG IP за xc7vx690tffg1761-2 и го повикав пр.ampдизајн.
Две работи што треба да се забележат се битови за мемориска адреса и избор на мапирање на мемориска адреса.
За прampЛе, избрав MT41J128M8XX-125 под паѓачките опции за меморискиот дел.
За избраниот мемориски дел од Слика-1, ред = 14, колона = 10 и банка = 3, така што app_addr_width = ред + колона + банка + ранг = 28
Можете да изберете или BANK_ROW_COLUMN или ROW BANK колона.
Ја оставив колоната ROW BANK која е стандардно мапирање на адреси.
Example design Симулација со тест клупа што може да се синтетизира
Во поставките за симулација, изберете QuestaSim/ModelSim Simulator и прелистајте до локацијата на компајлираните библиотеки.
За детали за посочување на патеката за инсталирање на алатки од трета страна, избирање на целниот симулатор и компајлирање и мапирање библиотеки, може да се повикате на (UG900) Упатство за корисникот Vivado Design Suite Logic Simulation
Извршете ја симулацијата преку GUI (Кликнете на јазичето Изврши симулација во проект менаџер) и проверете дали ја гледате пораката „тест помина“ во преписот.
Модификации на RTL за симулација на перформанси
- Десен-клик на јазичето извори, изберете „додај или креирај извори на симулација“ и прелистај до mig7_perfsim_traffic_generator.sv file и кликнете заврши за да го додадете.
- Кликнете со десното копче на јазичето извори, изберете „додадете или креирајте извори за симулација“, прелистајте до perfsim_stimulus.txt и кликнете на „Заврши“ за да го додадете.
- Коментирајте го бившиотample_top инстанција во sim_tb_top.v file.
- Додајте ги долунаведените RTL линии на sim_tb_top,v
- localparam APP_ADDR_WIDTH = 28;
- localparam APP_DATA_WIDTH = 64;
- localparam APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- localparam MEM_ADDR_ORDER = „BANK_ROW_COLUMN“;
- localparam BANK_WIDTH = 3;
- localparam 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 е коментирано и ново fileсе додадени, веројатно ќе видите „?“ покрај
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 fileво папките за такт, контролер, ip_top, phy и UI.
- Откако ќе се направат промените на RTL и сите потребни files се додадени на вашите извори на симулација, хиерархијата треба да биде слична на Слика 5.
На fileозначените со црвено се ново додадени и „?“ се очекува на модулите поврзани со ECC бидејќи избраната конфигурација на меморијата ја има оневозможена опцијата ECC.
Стимул File Опис
Секоја шема на стимул е 48 бита и форматот е опишан на сликите 6-1 до 6-4.
Кодирање на адресата (адреса [35:0])
Адресата е кодирана во стимулот според Слика 7-1 до слика 7-6. Сите полиња за адреса треба да се внесат во хексадецимален формат. Сите полиња за адреса се со ширина што е делива со четири за да се внесе во хексадецимален формат. Тест клупата ги испраќа само потребните битови од полето за адреса до контролорот на меморијата.
За прampтака, во конфигурација на осум банки, само банкарски битови [2:0] се испраќаат до контролорот на меморијата, а останатите битови се игнорираат. Дополнителните битови за полето за адреса се обезбедени за да ја внесете адресата во хексадецимален формат.
Мора да потврдите дека внесената вредност одговара на ширината на дадената конфигурација.
- Адреса на колона (Колона[11:0]) – Адресата на колоната во стимулот е обезбедена до максимум 12 бита, но ова треба да го решите врз основа на параметарот за ширина на колоната поставен во вашиот дизајн.
- Адреса на ред (Ред[15:0]) – Адресата на редот во стимулацијата е обезбедена до максимум 16 бита, но ова треба да го решите врз основа на параметарот за ширина на редот поставен во вашиот дизајн.
- Адреса на банка (банка[3:0]) - Адресата на банката во стимулот е обезбедена до максимум четири бита, но ова треба да го решите врз основа на параметарот за ширина на банката поставен во вашиот дизајн.
- Адреса на рангирање (Ранг[3:0]) – Адресата за рангирање во стимулацијата е обезбедена до максимум четири бита, но ова треба да го решите врз основа на параметарот за ширина на ранг поставен во вашиот дизајн.
Адресата се составува врз основа на параметарот MEM_ADDR_ORDER од највисоко ниво и се испраќа до корисничкиот интерфејс
Повторување на командата (Повторување на командата [7:0])
Бројот на повторувања на командата е бројот на пати кога соодветната команда се повторува на корисничкиот интерфејс. Адресата за секое повторување се зголемува за 8. Максималниот број на повторувања е 128.
Тест клупата не ја проверува границата на колоната и се обвиткува наоколу ако максималната граница на колоната се достигне за време на зголемувањата.
128-те команди ја пополнуваат страницата. За која било адреса на колона различна од 0, бројот на повторувања од 128 завршува со преминување на границата на колоната и завршува до почетокот на адресата на колоната.
Користење на автобуси
Употребата на магистралата се пресметува на корисничкиот интерфејс земајќи го предвид вкупниот број на читања и запишувања и се користи следнава равенка:
- BL8 трае четири циклуси на мемориски часовник
- end_of_stimulus е времето кога сите команди се завршени.
- 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 пишувања со адреса на колона завиткана на почетокот на страницата по едно пишување.
Симулирање на генератор на сообраќај за перформанси
Во овој момент завршивте со МИГ ексampсимулација на дизајн. Ова значи дека вашата поставеност на симулација е подготвена, сте направиле симулација на изведба RTL модификации, новата хиерархија на симулација е точна и дека сте ги разбрале шаблоните на стимулации. Извршете ја симулацијата уште еднаш со 16 пишувања и читања во perfsim_stimulus.txt.
Извршете ги сите, почекајте додека не се наметне сигналот 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 до случај).
- tCAS(CL): Латентност на строб адреса на колона.
- tRP: Доцнење на однапред наплаќање на ред.
- ТРАС: Активно време на ред (активирајте за препромена).
- tRC: Време на циклус на ред. tRC = tRAS + tRP
- tTRAC: Доцнење на радом пристап. tRAC = tRCD + tCAS
- tCWL: Латентност на пишување на Cas.
- tZQ: Време на калибрација на ZQ.
- tRFC: Време на циклус на освежување на редови
- tWTR: Одложување на пишување за читање. Последна трансакција за пишување во времето на командата Читање.
- tWR: Напишете време за обновување. Последна трансакција за запишување на времето за претплата
Времето на сите наведени параметри зависи од видот на користената меморија и степенот на брзината на меморискиот дел.
Повеќе детали за дефинициите и спецификациите за тајминг може да се најдат во DDR2 DDR3 JEDEC или во лист со податоци на кој било мемориски уред.
Ефикасноста главно зависи од тоа како се пристапува до меморијата. Различните модели на адреси даваат различни резултати за ефикасност.
Режисери за тајмирање на меморијата
- Време на активирање и време на претплата кога се менувате во нови банки/редови или менувате редови со во истата банка.- Значи, ако ја намалите промената на редот, ова може да ги отстрани tRCD и tRP.
- Испраќајте наредби за континуирано пишување или читање -Одржување на времето на tCCD.
- Минимизирајте ја промената на командата за пишување за читање и читање за пишување – Запишете го времето за обновување за промена на пристапите до читање, времето на пресврт на автобусот за промена од читање во пишување
- Поставете соодветен интервал на освежување.
- DDR3 SDRAM бара циклуси на освежување во просечен периодичен интервал од tREFI.
- Може да се издадат најмногу 8 дополнителни команди за освежување однапред („повлечени“). Ова не го намалува бројот на освежувања, но максималниот интервал помеѓу две околни команди за освежување е ограничен на 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 калибрира On Die Termination (ODT) во редовни интервали за да ги земе предвид варијациите низ VT
- Логиката е содржана во bank_common.v/vhd
- Параметарот Tzqcs ја одредува брзината со која командата за калибрација ZQ се испраќа до меморијата
- t е можно да се оневозможи бројачот и рачно да се испраќа со помош на app_zq_req, тоа е слично на рачно испраќање Освежување.
Погледнете во (Одговор на Xilinx 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 GUI.
- 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%.
Исто така, забележете дека контролорите ½ и ¼ негативно влијаат на ефикасноста поради нивните латенции.
За прampзатоа што можеме да испраќаме команди само на секои 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