Xilinx-լոգոն

Xilinx DDR2 MIG 7-ի կատարողականի գնահատման ուղեցույց

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Կարևոր նշում. Պատասխանների գրառման այս ներբեռնվող PDF-ը տրամադրվում է դրա օգտագործման և ընթեռնելիությունը բարձրացնելու համար: Կարևոր է նշել, որ Answer Records են Web- հիմնված բովանդակություն, որը հաճախ թարմացվում է, երբ հասանելի է դառնում նոր տեղեկատվությունը: Ձեզ հիշեցվում է այցելել Xilinx-ի տեխնիկական աջակցություն Webկայքը և վերview (Xilinx Answer 63234) այս Պատասխանի վերջին տարբերակի համար:

Ներածություն

DDR2 և DDR3 հիշողությունների ճարտարապետության և MIG 7 սերիայի կարգավորիչի նախագծման շնորհիվ, կատարողականությունը պարզ չէ:
Այն պահանջում է Jedec Timing-ի տարբեր պարամետրերի և վերահսկիչի ճարտարապետության իմացություն, և գնահատականները ստանալու համար ձեզ հարկավոր է սիմուլյացիաներ վարել:
Արդյունավետությունը որոշելու ընդհանուր սկզբունքը նույնն է, բայց այս փաստաթուղթը տրամադրում է արդյունավետություն ձեռք բերելու հեշտ ճանապարհ՝ օգտագործելով MIG ex-ը:ampնախագծում փորձարկման նստարանի և խթանի օգնությամբ files կցված է այստեղ:

Արդյունավետ թողունակություն

DRAM տվյալների ավտոբուսը հասնում է մոտ գագաթնակետային թողունակության միայն կարդալու և գրելու արագության ժամանակ, և դրա վերին ծախսը նվազեցնում է տվյալների արդյունավետ արագությունը:
Մի քանի նախկինampվերադիր ծախսերը հետևյալն են.

  • միևնույն բանկում տողեր մուտք գործելու ժամանակ նախապես լիցքավորել (Մուտքի հասցեն, որը գտնվում է նույն տողի էջից)
  • գրել վերականգնման ժամանակը` գրելից կարդալու հասանելիություն փոխելու համար
  • ավտոբուսի շրջադարձի ժամանակը կարդալուց գրելու հասանելիություն փոխելու համար

Xilinx DDR2 MIG 7 Performance Estimation-fig-28
Արդյունավետ թողունակություն = Պիկ թողունակություն * Արդյունավետություն 

MIG Design Generation

Տե՛ս UG586 Գլուխ 1-ը MIG IP-ի և նախկինի վերաբերյալ քայլ առ քայլ մանրամասների համարampդիզայնի սերունդ.
Նախքան MIG 7 Series կատարողականի մոդելավորումը գործարկելը, արեք հետևյալը՝ համոզվելու համար, որ ձեր սիմուլյացիոն միջավայրը լավ է: Բացեք MIG նախկինampՆախագծեք և քարտեզագրեք համապատասխան գրադարանները, գործարկեք սիմուլյացիան և համոզվեք, որ դուք կարող եք տեսնել «թեստն անցել է» հաղորդագրությունը վերնագրում:
Հոսքը ցուցադրելու համար ես ստեղծել եմ MIG IP xc7vx690tffg1761-2-ի համար և կանչել եմ նախկինampդիզայն.
Երկու բան, որ պետք է նշել, հիշողության հասցեի բիթերն են և հիշողության հասցեների քարտեզագրման ընտրությունը:
Նախample, ես ընտրել եմ MT41J128M8XX-125 հիշողության մասի բացվող ընտրանքների տակ:Xilinx DDR2 MIG-7-Performance-Estimation-fig-1

Նկար-1-ից ընտրված հիշողության մասի համար տող = 14, սյունակ = 10 և բանկ = 3, ուստի app_addr_width = տող + սյունակ + բանկ + դասակարգ = 28 Xilinx DDR2 MIG 7 Performance Estimation-fig-2

Դուք կարող եք ընտրել BANK_ROW_COLUMN կամ ROW BANK սյունակ:
Ես թողել եմ ROW BANK սյունակը, որը հասցեների կանխադրված քարտեզագրումն է:

Example design Մոդելավորում սինթեզվող թեստային նստարանով

Սիմուլյացիայի կարգավորումների ներքո ընտրեք QuestaSim/ModelSim Simulator և դիտեք կազմված գրադարանների գտնվելու վայրը:
Երրորդ կողմի գործիքների տեղադրման ուղին մատնանշելու, թիրախային սիմուլյատորի ընտրության և գրադարանների կազմման և քարտեզագրման վերաբերյալ մանրամասների համար կարող եք դիմել (UG900) Vivado Design Suite Օգտագործողի ուղեցույց Logic Simulation-ին:Xilinx DDR2 MIG 7 Performance Estimation-fig-3

Գործարկեք սիմուլյացիան GUI-ի միջոցով (սեղմեք Run Simulation Tab-ը նախագծի մենեջերում) և համոզվեք, որ դուք տեսնում եք «Թեստն անցել է» հաղորդագրությունը սղագրության մեջ:

Կատարման մոդելավորման RTL փոփոխություններ

  1. Աջ սեղմեք աղբյուրների ներդիրի վրա, ընտրեք «ավելացնել կամ ստեղծել սիմուլյացիոն աղբյուրներ» և թերթել mig7_perfsim_traffic_generator.sv: file և կտտացրեք Ավարտել այն ավելացնելու համար:
  2. Աջ սեղմեք աղբյուրների ներդիրի վրա, ընտրեք «ավելացնել կամ ստեղծել սիմուլյացիոն աղբյուրներ», թերթել perfsim_stimulus.txt և սեղմել «Finish»՝ այն ավելացնելու համար:
  3. Մեկնաբանեք նախկինըample_top օրինակը sim_tb_top.v-ում file.
  4. Ստորև բերված 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-ի ստեղծման ժամանակ, ստուգեք՝ արդյոք այլ անուն եք ընտրել և համապատասխանաբար փոխեք այն:Xilinx DDR2 MIG 7 Performance Estimation-fig-4
  • 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 տարբերակով:Xilinx DDR2 MIG 7 Performance Estimation-fig-5

Խթանիչ File Նկարագրություն
Յուրաքանչյուր գրգռիչ օրինաչափություն 48 բիթ է և ձևաչափը նկարագրված է 6-1-ից մինչև 6-4-րդ նկարներում:Xilinx DDR2 MIG 7 Performance Estimation-fig-6

Հասցեի կոդավորում (Հասցե [35:0])

Հասցեն կոդավորված է գրգռիչի մեջ՝ համաձայն Նկար 7-1-ից մինչև Նկար 7-6: Հասցեների բոլոր դաշտերը պետք է մուտքագրվեն տասնվեցական ձևաչափով: Հասցեների բոլոր դաշտերը լայնություն են, որը բաժանվում է չորսի՝ տասնվեցական ձևաչափով մուտքագրելու համար: Փորձարկման նստարանն ուղարկում է միայն հասցեի դաշտի պահանջվող բիթերը Հիշողության կարգավորիչին:
Նախample, ութ բանկային կազմաձևում, միայն բանկային բիթերը [2:0] ուղարկվում են Հիշողության վերահսկիչին, իսկ մնացած բիթերը անտեսվում են: Հասցեի դաշտի հավելյալ բիթերը տրամադրվում են, որպեսզի մուտքագրեք հասցեն տասնվեցական ձևաչափով:
Դուք պետք է հաստատեք, որ մուտքագրված արժեքը համապատասխանում է տվյալ կոնֆիգուրացիայի լայնությանը:Xilinx DDR2 MIG 7 Performance Estimation-fig-7

  • Սյունակի հասցե (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-ի կրկնությունների քանակն ավարտվում է հատելով սյունակի սահմանը և փաթաթելով մինչև սյունակի հասցեի սկիզբը:

Ավտոբուսի օգտագործում
Ավտոբուսի օգտագործումը հաշվարկվում է Օգտագործողի միջերեսում՝ հաշվի առնելով ընթերցումների և գրերի ընդհանուր թիվը և օգտագործվում է հետևյալ հավասարումը.

Xilinx DDR2 MIG 7 Performance Estimation-fig-8

  • 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-րդ տողից և երկրորդ ափից:Xilinx DDR2 MIG 7 Performance Estimation-fig-9Single Write Pattern
00_0_1_0040_010_0 – Այս օրինաչափությունը մեկ գրություն է 32-րդ սյունակում, 128-րդ տողում և առաջին ափին:Xilinx DDR2 MIG 7 Performance Estimation-fig-10Միայնակ Գրեք և Կարդացեք նույն հասցեով
00_0_2_000F_00A_0 – Այս օրինաչափությունը մեկ գրություն է 10-րդ սյունակում, 15-րդ տողում և երկրորդ ափին:
00_0_2_000F_00A_1 – Այս օրինաչափությունը մեկ ընթերցված է 10-րդ սյունակից, 15-րդ տողից և երկրորդ ափիցXilinx DDR2 MIG 7 Performance Estimation-fig-11

Բազմաթիվ գրում և կարդում է նույն հասցեով
0A_0_0_0010_000_0 – Սա համապատասխանում է 10-ից 0-ից սկսած հասցեով 80 գրությունների, որոնք կարելի է տեսնել սյունակում:Xilinx DDR2 MIG 7 Performance Estimation-fig-12

0A_0_0_0010_000_1 – Սա համապատասխանում է 10 ընթերցումների՝ 0-ից մինչև 80-ը սկսած հասցեով, որը կարելի է տեսնել սյունակում:Xilinx DDR2 MIG 7 Performance Estimation-fig-13

Էջի փաթաթում գրելու ընթացքում
0A_0_2_000F_3F8_0 – Սա համապատասխանում է 10 գրություններին, որոնց սյունակի հասցեն փաթաթված է էջի սկզբին մեկ գրելուց հետո:Xilinx DDR2 MIG 7 Performance Estimation-fig-14

Երթևեկության արդյունավետության գեներատորի մոդելավորում

Այս պահին դուք ավարտել եք MIG-ի նախկին գործըampդիզայնի մոդելավորում. Սա ենթադրում է, որ ձեր սիմուլյացիայի կարգավորումը պատրաստ է, դուք կատարել եք կատարման մոդելավորման RTL փոփոխություններ, մոդելավորման նոր հիերարխիան ճիշտ է, և դուք հասկացել եք խթանման օրինաչափությունները: Կրկին գործարկեք սիմուլյացիան 16 գրություններով և ընթերցմամբ perfsim_stimulus.txt-ում:Xilinx DDR2 MIG 7 Performance Estimation-fig-15

Կատարեք բոլորը, սպասեք, մինչև init_calib_complete ազդանշանը հաստատվի, և դուք կկարողանաք տեսնել գրելու և կարդալու առաջարկվող թիվը: Այնուհետև սիմուլյացիան կդադարի: Xilinx DDR2 MIG 7 Performance Estimation-fig-16

Երբ ձեզ հուշում են դադարեցնել սիմուլյացիան, ընտրեք Ոչ և անցեք տառադարձման պատուհանը, որտեղ դուք կկարողանաք տեսնել կատարողականի վիճակագրությունը: Xilinx DDR2 MIG 7 Performance Estimation-fig-17

Եթե ​​ընտրեք «Դուրս գալ սիմուլյացիայից» կատարողականի վիճակագրությունը կգրվի ա file անվանված mig_band_width_output.txt գտնվում է sim_1/behave-ում թղթապանակ.

Exampգրացուցակի ուղին.
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Performance Estimation-fig-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 Performance Estimation-fig-19

Կատարումը բարելավելու ընդհանուր ուղիները

Արդյունավետության վրա ազդող գործոնները կարելի է բաժանել երկու մասի.

  1. Հիշողության հատուկ
  2. Հատուկ վերահսկիչXilinx DDR2 MIG 7 Performance Estimation-fig-20

Նկար 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-ում կամ ցանկացած հիշողության սարքի տվյալների թերթիկում:

Արդյունավետությունը հիմնականում կախված է նրանից, թե ինչպես է հիշողության հասանելիությունը: Հասցեների տարբեր օրինաչափություններ տալիս են տարբեր արդյունավետության արդյունքներ:

Հիշողության ժամանակի ծախսեր

  1. Ակտիվացման ժամանակը և նախնական լիցքավորման ժամանակը, երբ փոխվում եք նոր բանկերի/տողերի կամ նույն բանկում տողերը փոխելու դեպքում:- Այսպիսով, եթե կրճատեք տողերի փոփոխությունը, դա կարող է հեռացնել tRCD-ն և tRP-ն:
  2. Ուղարկեք շարունակական գրելու կամ կարդալու հրամաններ - Պահպանելով tCCD ժամանակացույցը:
  3. Նվազագույնի հասցրեք գրելը կարդալու և կարդալ գրելու հրամանի փոխարկումը – Գրեք վերականգնման ժամանակը կարդալու մուտքերը փոխելու համար, ավտոբուսի շրջադարձի ժամանակը կարդալուց գրելու փոխելու համար
  4. Սահմանեք համապատասխան թարմացման ընդմիջում:
    • DDR3 SDRAM-ը պահանջում է թարմացման ցիկլեր tREFI-ի միջին պարբերական ընդմիջումով:
    • Առավելագույնը 8 լրացուցիչ Refresh հրամաններ կարող են տրվել նախօրոք («ներքաշված»): Սա չի նվազեցնում թարմացումների քանակը, սակայն հարակից երկու Refresh հրամանների միջև առավելագույն միջակայքը սահմանափակված է 9 × tREFI-ով:Xilinx DDR2 MIG 7 Performance Estimation-fig-21
  • Օգտագործեք բոլոր բանկերը - Նախընտրելի է համապատասխան հասցեավորման մեխանիզմը:
    • Շարք-Բանկ-Սյունակ: Հասցեների հաջորդական տարածության վրա տեղի ունեցող գործարքի համար միջուկը ավտոմատ կերպով բացում է նույն տողը 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 DDR2 MIG 7 Performance Estimation-fig-22

Վերահսկիչի ընդհանուր ծախսեր

  1. Պարբերական ընթերցումներ – Հղում (Xilinx Պատասխան 43344) մանրամասների համար.
    • Մի փոխեք ընթերցման ժամանակահատվածը
    • Բաց թողեք պարբերական ընթերցումները գրելու ընթացքում և թողարկեք բաց թողնված ընթերցումների քանակը մինչև իսկական ընթերցումը
  2. Վերադասավորում – Հղում (Xilinx Պատասխան 34392) մանրամասների համար.
    Օգտվողի և AXI ինտերֆեյսի դիզայնի համար նախընտրելի է սա միացված լինի:
    • Վերադասավորումն այն տրամաբանությունն է, որը նայում է առջևում մի քանի հրամաններ և փոխում է օգտագործողի հրամանների կարգը, որպեսզի ոչ հիշողության հրամանները վավեր թողունակություն չզբաղեցնեն: Կատարումը նաև կապված է երթևեկության իրական ձևի հետ:
    • Հասցեների օրինաչափության հիման վրա վերադասավորումն օգնում է բաց թողնել նախնական լիցքավորումը և ակտիվացնել հրամանները և ստիպում է tRCD-ն ու tRP-ն չզբաղեցնել տվյալների տիրույթի լայնությունը:Xilinx DDR2 MIG 7 Performance Estimation-fig-23
  3. Փորձեք ավելացնել Բանկային մեքենաների քանակը:
    • Վերահսկիչի տրամաբանության մեծ մասը գտնվում է բանկային մեքենաների մեջ և դրանք համապատասխանում են 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 տոկոս: Xilinx DDR2 MIG 7 Performance Estimation-fig-24

Գծապատկեր 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 է: Xilinx DDR2 MIG 7 Performance Estimation-fig-25

Եթե ​​դուք դեռ պահանջում եք ավելի բարձր արդյունավետություն, կարող եք ընտրել 1024 կամ 2048 բայթ մեծ փաթեթների չափսեր կամ հաշվի առնել ձեռքով թարմացում:

Նշում. Xilinx-ը չի խրախուսում վերահսկիչի թարմացման շրջանցումը, քանի որ մենք վստահ չենք, արդյոք դուք կկարողանաք հանդիպել Jedec-ի ավտոմատ թարմացման ժամանակին, որն ազդում է տվյալների հուսալիության վրա:
Կարգավորիչի կողմից կարող եք փոխել nBANk_MACH և տեսնել կատարողականի բարելավումը:
Այնուամենայնիվ, դա կարող է ազդել ձեր նախագծման ժամանակի վրա, խնդրում ենք դիմել (Xilinx Պատասխան 36505) nBANk_MACH-ի մանրամասների համարXilinx DDR2 MIG 7 Performance Estimation-fig-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 Performance Estimation-fig-27

Նաև նշեք, որ ½ և ¼ կարգավորիչները բացասաբար են անդրադառնում արդյունավետության վրա՝ իրենց հետաձգման պատճառով:
ՆախampLe, քանի որ մենք կարող ենք հրամաններ ուղարկել միայն յուրաքանչյուր 4 CK ցիկլը, երբեմն լրացուցիչ լրացումներ են լինում, երբ պահպանվում են DRAM-ի նվազագույն ժամանակային բնութագրերը, ինչը կարող է նվազեցնել արդյունավետությունը տեսականից:
Փորձեք տարբեր կարգավորիչներ՝ գտնելու այն մեկը, որը համապատասխանում է ձեր արդյունավետության պահանջներին:

Հղումներ

  1. Zynq-7000 AP SoC և 7 Series FPGAs MIS v2.3 [UG586]
  2. Xilinx MIG լուծումների կենտրոն http://www.xilinx.com/support/answers/34243.html

Վերանայման պատմություն
13/03/2015 – Նախնական թողարկում

Ներբեռնեք PDF: Xilinx DDR2 MIG 7-ի կատարողականի գնահատման ուղեցույց

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *