Кіраўніцтва па ацэнцы прадукцыйнасці Xilinx DDR2 MIG 7
Важная заўвага: Гэты запіс у фармаце PDF, які можна загрузіць, прызначаны для павышэння зручнасці выкарыстання і чытання. Важна адзначыць, што запісы адказаў ёсць Web-кантэнт, які часта абнаўляецца па меры з'яўлення новай інфармацыі. Нагадваем вам наведаць службу тэхнічнай падтрымкі Xilinx Webсайт і паўторнаview (Xilinx Answer 63234) для апошняй версіі гэтага адказу.
Уводзіны
З-за архітэктуры памяці DDR2 і DDR3 і канструкцыі кантролера серыі MIG 7 прадукцыйнасць не простая.
Гэта патрабуе разумення розных параметраў Jedec Timing і архітэктуры кантролера, і вам трэба будзе запусціць мадэляванне, каб атрымаць ацэнкі.
Агульны прынцып вызначэння прадукцыйнасці той самы, але гэты дакумент дае просты спосаб атрымаць эфектыўнасць з дапамогай MIG example праектаванне з дапамогай выпрабавальнага стэнда і стымул fileпрыкладаецца тут.
Эфектыўная прапускная здольнасць
Шына дадзеных DRAM дасягае амаль пікавай прапускной здольнасці толькі падчас парываў чытання і запісу, а яе накладныя выдаткі зніжаюць эфектыўную хуткасць перадачы дадзеных.
Некалькі эксampнакладныя выдаткі:
- час папярэдняй зарадкі доступу да радкоў у тым жа банку (адрас доступу не ў тым жа радку - хіт старонкі)
- час аднаўлення запісу, каб змяніць доступ з запісу на чытанне
- час абарачэння шыны для пераходу з доступу для чытання на запіс
Эфектыўная прапускная здольнасць = Пікавая прапускная здольнасць * Эфектыўнасць
MIG Design Generation
Звярніцеся да раздзела 586 UG1 для атрымання падрабязнай інфармацыі аб MIG IP і exampпакаленне дызайну.
Перш чым запусціць мадэляванне прадукцыйнасці MIG 7 серыі, зрабіце наступнае, каб пераканацца, што ваша асяроддзе мадэлявання ў парадку. Адкрыйце 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 з сінтэзаваным выпрабавальным стэндам
У наладах 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 у адпаведнасці з выбарам часткі памяці.
Значэнні можна атрымаць з _міг.в file. - Выдзеленая жоўтым колерам назва экзэмпляра mig_7series_0_mig можа змяняцца ў залежнасці ад імя вашага кампанента падчас стварэння IP. Праверце, ці выбралі вы іншае імя, і змяніце яго адпаведна.
- Пасля стварэння 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 у тэчках тактавання, кантролера, ip_top, phy і UI.
- Пасля таго, як змены RTL зроблены і ўсё неабходнае fileдадаюцца да вашых крыніц мадэлявання, іерархія павінна быць падобнай на малюнак 5.
The 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 Patterns
Гэтыя экс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.
Выканайце запуск усіх, пачакайце, пакуль не будзе зацверджаны сігнал 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: Затрымка папярэдняй зарадкі радка.
- тРАС: Час актыўнасці радка (актывуйце для папярэдняй змены).
- 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 калібруе On Die Termination (ODT) праз рэгулярныя прамежкі часу для ўліку варыяцый паміж VT
- Логіка змяшчаецца ў bank_common.v/vhd
- Параметр Tzqcs вызначае хуткасць, з якой каманда каліброўкі ZQ адпраўляецца ў памяць
- t можна адключыць лічыльнік і ўручную адправіць з дапамогай app_zq_req, гэта падобна на ручную адпраўку Refresh.
Звярніцеся да (адказ 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, паўторна запусціце эксample дызайн са стымулам 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