Xilinx DDR2 MIG 7-ի կատարողականի գնահատման ուղեցույց
Կարևոր նշում. Պատասխանների գրառման այս ներբեռնվող PDF-ը տրամադրվում է դրա օգտագործման և ընթեռնելիությունը բարձրացնելու համար: Կարևոր է նշել, որ Answer Records են Web- հիմնված բովանդակություն, որը հաճախ թարմացվում է, երբ հասանելի է դառնում նոր տեղեկատվությունը: Ձեզ հիշեցվում է այցելել Xilinx-ի տեխնիկական աջակցություն Webկայքը և վերview (Xilinx Answer 63234) այս Պատասխանի վերջին տարբերակի համար:
Ներածություն
DDR2 և DDR3 հիշողությունների ճարտարապետության և MIG 7 սերիայի կարգավորիչի նախագծման շնորհիվ, կատարողականությունը պարզ չէ:
Այն պահանջում է Jedec Timing-ի տարբեր պարամետրերի և վերահսկիչի ճարտարապետության իմացություն, և գնահատականները ստանալու համար ձեզ հարկավոր է սիմուլյացիաներ վարել:
Արդյունավետությունը որոշելու ընդհանուր սկզբունքը նույնն է, բայց այս փաստաթուղթը տրամադրում է արդյունավետություն ձեռք բերելու հեշտ ճանապարհ՝ օգտագործելով MIG ex-ը:ampնախագծում փորձարկման նստարանի և խթանի օգնությամբ files կցված է այստեղ:
Արդյունավետ թողունակություն
DRAM տվյալների ավտոբուսը հասնում է մոտ գագաթնակետային թողունակության միայն կարդալու և գրելու արագության ժամանակ, և դրա վերին ծախսը նվազեցնում է տվյալների արդյունավետ արագությունը:
Մի քանի նախկինampվերադիր ծախսերը հետևյալն են.
- միևնույն բանկում տողեր մուտք գործելու ժամանակ նախապես լիցքավորել (Մուտքի հասցեն, որը գտնվում է նույն տողի էջից)
- գրել վերականգնման ժամանակը` գրելից կարդալու հասանելիություն փոխելու համար
- ավտոբուսի շրջադարձի ժամանակը կարդալուց գրելու հասանելիություն փոխելու համար
Արդյունավետ թողունակություն = Պիկ թողունակություն * Արդյունավետություն
MIG Design Generation
Տե՛ս UG586 Գլուխ 1-ը MIG IP-ի և նախկինի վերաբերյալ քայլ առ քայլ մանրամասների համարampդիզայնի սերունդ.
Նախքան MIG 7 Series կատարողականի մոդելավորումը գործարկելը, արեք հետևյալը՝ համոզվելու համար, որ ձեր սիմուլյացիոն միջավայրը լավ է: Բացեք MIG նախկինampՆախագծեք և քարտեզագրեք համապատասխան գրադարանները, գործարկեք սիմուլյացիան և համոզվեք, որ դուք կարող եք տեսնել «թեստն անցել է» հաղորդագրությունը վերնագրում:
Հոսքը ցուցադրելու համար ես ստեղծել եմ MIG IP xc7vx690tffg1761-2-ի համար և կանչել եմ նախկինampդիզայն.
Երկու բան, որ պետք է նշել, հիշողության հասցեի բիթերն են և հիշողության հասցեների քարտեզագրման ընտրությունը:
Նախample, ես ընտրել եմ 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-ի միջոցով (սեղմեք Run Simulation Tab-ը նախագծի մենեջերում) և համոզվեք, որ դուք տեսնում եք «Թեստն անցել է» հաղորդագրությունը սղագրության մեջ:
Կատարման մոդելավորման RTL փոփոխություններ
- Աջ սեղմեք աղբյուրների ներդիրի վրա, ընտրեք «ավելացնել կամ ստեղծել սիմուլյացիոն աղբյուրներ» և թերթել mig7_perfsim_traffic_generator.sv: file և կտտացրեք Ավարտել այն ավելացնելու համար:
- Աջ սեղմեք աղբյուրների ներդիրի վրա, ընտրեք «ավելացնել կամ ստեղծել սիմուլյացիոն աղբյուրներ», թերթել perfsim_stimulus.txt և սեղմել «Finish»՝ այն ավելացնելու համար:
- Մեկնաբանեք նախկինը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-ը մեկնաբանված և նոր է 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-ին:
Այն fileԿարմիրով ընդգծվածները նոր են ավելացվել, իսկ «?» ակնկալվում է ECC-ի հետ կապված մոդուլների վրա, քանի որ ընտրված հիշողության կազմաձևումն անջատված է ECC տարբերակով:
Խթանիչ File Նկարագրություն
Յուրաքանչյուր գրգռիչ օրինաչափություն 48 բիթ է և ձևաչափը նկարագրված է 6-1-ից մինչև 6-4-րդ նկարներում:
Հասցեի կոդավորում (Հասցե [35:0])
Հասցեն կոդավորված է գրգռիչի մեջ՝ համաձայն Նկար 7-1-ից մինչև Նկար 7-6: Հասցեների բոլոր դաշտերը պետք է մուտքագրվեն տասնվեցական ձևաչափով: Հասցեների բոլոր դաշտերը լայնություն են, որը բաժանվում է չորսի՝ տասնվեցական ձևաչափով մուտքագրելու համար: Փորձարկման նստարանն ուղարկում է միայն հասցեի դաշտի պահանջվող բիթերը Հիշողության կարգավորիչին:
Նախample, ութ բանկային կազմաձևում, միայն բանկային բիթերը [2:0] ուղարկվում են Հիշողության վերահսկիչին, իսկ մնացած բիթերը անտեսվում են: Հասցեի դաշտի հավելյալ բիթերը տրամադրվում են, որպեսզի մուտքագրեք հասցեն տասնվեցական ձևաչափով:
Դուք պետք է հաստատեք, որ մուտքագրված արժեքը համապատասխանում է տվյալ կոնֆիգուրացիայի լայնությանը:
- Սյունակի հասցե (Column[11:0]) – Խթանումում սյունակի հասցեն տրամադրվում է առավելագույնը 12 բիթով, բայց դուք պետք է դրան անդրադառնաք ձեր դիզայնում սահմանված սյունակի լայնության պարամետրի հիման վրա:
- Շարքի հասցե (Տող[15:0]) – Խթանման մեջ տողի հասցեն տրամադրվում է առավելագույնը 16 բիթ, բայց դուք պետք է դրան լուծեք ձեր դիզայնում սահմանված տողի լայնության պարամետրի հիման վրա:
- Բանկի հասցեն (Bank[3:0]) – Խթանման մեջ բանկի հասցեն տրամադրվում է առավելագույնը չորս բիթով, բայց դուք պետք է լուծեք դա՝ հիմնվելով ձեր դիզայնում սահմանված բանկի լայնության պարամետրի վրա:
- Rank հասցե (Rank[3:0]) – Խթանման մեջ դասակարգման հասցեն տրամադրվում է առավելագույնը չորս բիթով, բայց դուք պետք է դրան անդրադառնաք՝ հիմնվելով ձեր դիզայնում սահմանված աստիճանի լայնության պարամետրի վրա:
Հասցեն հավաքվում է վերին մակարդակի MEM_ADDR_ORDER պարամետրի հիման վրա և ուղարկվում է օգտագործողի միջերես
Հրամանի կրկնություն (Command Repeat [7:0])
Հրամանի կրկնությունների քանակն այն ժամանակի քանակն է, երբ համապատասխան հրամանը կրկնվում է Օգտագործողի միջերեսում: Յուրաքանչյուր կրկնության հասցեն ավելանում է 8-ով: Կրկնումների առավելագույն քանակը 128 է:
Փորձարկման նստարանը չի ստուգում սյունակի սահմանը և այն փաթաթվում է, եթե ավելացումների ընթացքում հասնում է սյունակի առավելագույն սահմանին:
128 հրամանները լրացնում են էջը: Ցանկացած սյունակի հասցեի համար, բացի 0-ից, 128-ի կրկնությունների քանակն ավարտվում է հատելով սյունակի սահմանը և փաթաթելով մինչև սյունակի հասցեի սկիզբը:
Ավտոբուսի օգտագործում
Ավտոբուսի օգտագործումը հաշվարկվում է Օգտագործողի միջերեսում՝ հաշվի առնելով ընթերցումների և գրերի ընդհանուր թիվը և օգտագործվում է հետևյալ հավասարումը.
- BL8-ը տեւում է հիշողության ժամացույցի չորս ցիկլ
- end_of_stimulus-ը այն ժամանակն է, երբ բոլոր հրամանները կատարվում են:
- calib_done-ն այն ժամանակն է, երբ տրամաչափումը կատարվում է:
Example Patterns
Սրանք նախկինamples-ները հիմնված են MEM_ADDR_ORDER-ի վրա, որը սահմանված է BANK_ROW_COLUMN:
Single Read Pattern
00_0_2_000F_00A_1 – Այս օրինաչափությունը մեկ ընթերցված է 10-րդ սյունակից, 15-րդ տողից և երկրորդ ափից:Single Write Pattern
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-ի նախկին գործըampդիզայնի մոդելավորում. Սա ենթադրում է, որ ձեր սիմուլյացիայի կարգավորումը պատրաստ է, դուք կատարել եք կատարման մոդելավորման RTL փոփոխություններ, մոդելավորման նոր հիերարխիան ճիշտ է, և դուք հասկացել եք խթանման օրինաչափությունները: Կրկին գործարկեք սիմուլյացիան 16 գրություններով և ընթերցմամբ perfsim_stimulus.txt-ում:
Կատարեք բոլորը, սպասեք, մինչև init_calib_complete ազդանշանը հաստատվի, և դուք կկարողանաք տեսնել գրելու և կարդալու առաջարկվող թիվը: Այնուհետև սիմուլյացիան կդադարի:
Երբ ձեզ հուշում են դադարեցնել սիմուլյացիան, ընտրեք Ոչ և անցեք տառադարձման պատուհանը, որտեղ դուք կկարողանաք տեսնել կատարողականի վիճակագրությունը:
Եթե ընտրեք «Դուրս գալ սիմուլյացիայից» կատարողականի վիճակագրությունը կգրվի ա 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-ների և Block Memories-ի, DDR2-ի կամ DDR3-ի կատարումը միայն տվյալների առավելագույն արագությունն է:
Դա կախված է ժամանակի բազմաթիվ գործոններից, ներառյալ.
- tRCD: Row Command Delay (կամ ras to cas delay):
- tCAS (CL): Սյունակի հասցեի strobe latency.
- 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-ն աջակցվում է 3 սերիայի DDR7-ի համար: BC4-ն ունի շատ ցածր արդյունավետություն, որը 50%-ից պակաս է: Դա պայմանավորված է նրանով, որ BC4-ի կատարման ժամանակը նույնն է, ինչ BL8-ը: Տվյալները պարզապես դիմակավորված են բաղադրիչի ներսում:
- Այն դեպքերում, երբ դուք չեք ցանկանում գրել ամբողջական պոռթկում, կարելի է դիտարկել կամ տվյալների դիմակը կամ գրելը կարդալուց հետո:
- Սահմանեք պատշաճ ZQ միջակայք (միայն DDR3)
Կարգավորիչը ուղարկում է և՛ ZQ Short (ZQCS) և՛ ZQ Long (ZQCL) Calibration հրամաններ:- Հետևեք DDR3 Jedec ստանդարտին
- ZQ Calibration-ը քննարկվում է JEDEC Spec JESD5.5-79 DDR3 SDRAM ստանդարտի 3 բաժնում:
- 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 Ex-ումample 8 բանկային մեքենաների համար – nBANK_MACHS = 8
Այժմ դուք տեղյակ եք այն գործոնների մասին, որոնք ազդում են կատարողականի վրա:
Մտածեք վերին հոսքի հավելվածի մասին, որը ձեզ տալիս է 512 բայթ տվյալների յուրաքանչյուր փաթեթ, և դուք պետք է դրանք պահեք հիշողության տարբեր վայրերում: Քանի որ տվյալների 512 բայթը հավասար է 64 DDR3 տվյալների պոռթկումների, նորից գործարկեք նախկինample design մի խթան 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% է:
Նաև նշեք, որ ½ և ¼ կարգավորիչները բացասաբար են անդրադառնում արդյունավետության վրա՝ իրենց հետաձգման պատճառով:
ՆախampLe, քանի որ մենք կարող ենք հրամաններ ուղարկել միայն յուրաքանչյուր 4 CK ցիկլը, երբեմն լրացուցիչ լրացումներ են լինում, երբ պահպանվում են DRAM-ի նվազագույն ժամանակային բնութագրերը, ինչը կարող է նվազեցնել արդյունավետությունը տեսականից:
Փորձեք տարբեր կարգավորիչներ՝ գտնելու այն մեկը, որը համապատասխանում է ձեր արդյունավետության պահանջներին:
Հղումներ
- Zynq-7000 AP SoC և 7 Series FPGAs MIS v2.3 [UG586]
- Xilinx MIG լուծումների կենտրոն http://www.xilinx.com/support/answers/34243.html
Վերանայման պատմություն
13/03/2015 – Նախնական թողարկում
Ներբեռնեք PDF: Xilinx DDR2 MIG 7-ի կատարողականի գնահատման ուղեցույց