Xilinx-logo

Xilinx DDR2 MIG 7 Efikeco-Takso-Gvidilo

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Grava Noto: Ĉi tiu elŝutebla PDF de Responda Rekordo estas provizita por plibonigi ĝian uzeblecon kaj legeblecon. Gravas noti, ke Answer Records estas Web-bazita enhavo kiu estas ofte ĝisdatigita kiam novaj informoj iĝas haveblaj. Vi memorigas viziti la Teknikan Subtenon de Xilinx Webejo kaj review (Xilinx Answer 63234) por la plej nova versio de ĉi tiu Respondo.

Enkonduko

Pro la maniero kiel DDR2 kaj DDR3-memoroj estas arkitektoj kaj la MIG 7-seria regilo estas desegnita, efikeco ne estas simpla.
Ĝi postulas komprenon de diversaj Jedec Timing-parametroj kaj regilo-Arkitekturo, kaj vi devos ruli simuladojn por akiri la taksojn.
La ĝenerala principo por determini rendimenton estas la sama sed ĉi tiu dokumento disponigas facilan manieron akiri efikecon uzante la MIG-ekzample dezajno kun la helpo de testbenko kaj stimulo fileestas alfiksitaj ĉi tie.

Efika Bando-larĝo

La DRAM-datumbuso atingas preskaŭ-pintan bendolarĝon nur dum ekestoj de legado kaj skribo kaj ĝia supre malaltigas la efikan datumrapidecon.
Kelkaj ekzamplesoj de supre estas:

  • antaŭŝargi tempon alirante vicojn en la sama banko (Alir-adreso ne en la sama vic-paĝa trafo)
  • skribi reakiro tempo por ŝanĝi de skriba al legado
  • la busa turniĝotempo por ŝanĝi de legado al skribaliro

Xilinx DDR2 MIG 7 Efikeco-Takso-fig-28
Efika Bandwidth = Pinta Bandwidth * Efikeco 

MIG-Dezajna Generacio

Vidu al UG586 Ĉapitro 1 por paŝo post paŝo detaloj pri MIG IP kaj ekzampla dezajno generacio.
Antaŭ ol ruli simuladon de MIG 7 Series, faru la jenon por certigi, ke via simula medio estas bona. Malfermu la MIG ekzampLe desegni kaj mapi la taŭgajn bibliotekojn, rulu la simuladon kaj certigu, ke vi povas vidi la mesaĝon "testo trapasita" en la transskribo.
Por pruvi la fluon mi generis MIG IP por xc7vx690tffg1761-2 kaj alvokis la eksampdezajno.
Du aferoj, kiujn oni devas rimarki, estas memor-adresbitoj kaj memoradresa mapa elekto.
Por ekzample, mi elektis MT41J128M8XX-125 sub la memorparto-menumaj opcioj.Xilinx DDR2 MIG-7-Efikeco-Takso-fig-1

Por la elektita memorparto el Figuro-1, vico = 14, kolumno = 10 kaj banko = 3, do app_addr_width = vico + kolono + banko + rango = 28 Xilinx DDR2 MIG 7 Efikeco-Takso-fig-2

Vi povas elekti aŭ BANK_ROW_COLUMN aŭ ROW BANK Kolumnon.
Mi forlasis ROW BANK Column kiu estas la defaŭlta adresmapado.

Example design Simulado kun sintezebla testbenko

Sub Simulaj agordoj, elektu QuestaSim/ModelSim Simulator kaj foliumu al la loko de la kompilitaj bibliotekoj.
Por detaloj pri montrado al triaparta ilo-instalvojo, elektado de la cela simulilo kaj kompilo kaj mapado de bibliotekoj, vi povas raporti al (UG900) Vivado Design Suite User Guide Logika SimuladoXilinx DDR2 MIG 7 Efikeco-Takso-fig-3

Rulu la simuladon tra la GUI (Alklaku la Run Simulation Tab en projektestro) kaj certigu, ke vi vidas la "teston trapasitan" mesaĝon en la transskribo.

Efikeco Simulado RTL-modifoj

  1. Dekstre alklaku la langeton de fontoj, elektu "aldoni aŭ krei simulajn fontojn", kaj foliumu al la mig7_perfsim_traffic_generator.sv. file kaj alklaku fini por aldoni ĝin.
  2. Dekstre alklaku la langeton de fontoj, elektu "aldoni aŭ krei simulajn fontojn", foliumu al perfsim_stimulus.txt, kaj alklaku fini por aldoni ĝin.
  3. Komentu la eksample_top instantiation en la sim_tb_top.v file.
  4. Aldonu la subajn RTL-liniojn al sim_tb_top,v
  • localparam APP_ADDR_WIDTH = 28;
  • lokaparametro APP_DATA_WIDTH = 64;
  • localparam APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
  • localparam MEM_ADDR_ORDER = “BANK_ROW_COLUMN”;
  • lokaparametro BANK_WIDTH = 3;
  • lokaparametro RANK_WIDTH = 1;
  • drato [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • wire [2:0] c0_ddr3_app_cmd;
  • wire c0_ddr3_app_eo;
  • drato [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • drato c0_ddr3_app_wdf_end;
  • drato [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • drato c0_ddr3_app_wdf_wren;
  • drato [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • wire c0_ddr3_app_rd_data_end;
  • wire c0_ddr3_app_rd_data_valid;
  • drato c0_ddr3_app_rdy;
  • drato c0_ddr3_app_wdf_rdy;
  • wire c0_data_compare_error;
  • wire ui_clk;
  • wire ui_clk_sync_rst;
  • drato app_sr_req = 0;
  • drato app_ref_req = 0;
  • drato app_zq_req =0;
  • drato c0_app_wdf_mask =0;

Instanciigo de FPGA Memorregilo

mig_7series_0_mig u_mig_7series_0_mig (
// Memoraj interfacaj havenoj

  • .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),

// Aplikaj interfacaj havenoj

  • .app_addr (c0_ddr3_app_addr),
  • .app_cmd (c0_ddr3_app_cmd),
  • .app_eo (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),

// Sistemo Horloĝaj Havenoj

  • .sys_clk_i (sys_clk_i),

// Referencaj Horloĝaj Havenoj

  • .clk_ref_i (clk_ref_i),
  • .sys_rst (sys_rst)
  • );

Efikeca trafikgeneratoro-instanciigo

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_eo (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. Modifi APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH kaj BANK_WIDTH laŭ via elekto de memorparto.
    Valoroj povas esti akiritaj de la _mig.v file.
  • La flava elstarigita instanciga nomo mig_7series_0_mig povas varii laŭ via komponentnomo dum IP-kreado, kontrolu ĉu vi elektis alian nomon kaj ŝanĝu ĝin laŭe.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-4
  • Post kiam la IP estas generita, malfermu la _mig.v file kaj kruckontrolu por iuj varioj en LHS-signalaj nomoj kaj korektu ilin.
  • app_sr_req, app_ref_req kaj app_zq_req devus esti pravigitaj al 0.
  • Kiel ekzample_top.v estas komentita kaj nova files estas aldonitaj, vi verŝajne vidos "?" apud la
    mig_7series_0_mig.v file sub simulaj fontoj.
    Por mapi la ĝustan file, dekstre alklaku mig_7series_0_mig.v, elektu "Aldoni Fontojn", Foliumi al
    /mig_7series_0_eksample.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    kaj aldonu la mig_7series_0_mig_sim.v file.
  • Se vi vidas "?" por la subesta files, aldonu ĉiujn RTL files en la dosierujoj de horloĝo, regilo, ip_top,phy kaj UI.
  • Post kiam la RTL-ŝanĝoj estas faritaj kaj ĉiuj necesaj files estas aldonitaj al viaj Simuladaj Fontoj, Hierarkio devus esti simila al Figuro 5.
    La fileoj elstarigitaj ruĝe estas nove aldonitaj, kaj "?" estas atendita sur ECC-rilataj moduloj ĉar la elektita memoragordo havas la ECC-opcion malŝaltita.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-5

Stimulo File Priskribo
Ĉiu stimulpadrono estas 48 bitoj kaj la formato estas priskribita en Figuroj 6-1 ĝis 6-4.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-6

Adreskodigo (Adreso [35:0])

La adreso estas kodita en la stimulo laŭ Figuro 7-1 ĝis Figuro 7-6. Ĉiuj adreskampoj devas esti enigitaj en la deksesuma formato. Ĉiuj adreskampoj estas larĝo kiu estas dividebla per kvar por enigi en la deksesuma formato. La testbenko nur sendas la postulatajn pecojn de adreskampo al la Memorregilo.
Por ekzample, en ok banka agordo, nur bank Bitoj [2:0] estas senditaj al la Memorregilo kaj la ceteraj bitoj estas ignoritaj. La kromaj bitoj por adreskampo estas provizitaj por ke vi enigu la adreson en deksesuma formato.
Vi devas konfirmi, ke la enigita valoro respondas al la larĝo de donita agordo.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-7

  • Kolumna Adreso (Kolumno[11:0]) – Kolumna Adreso en la stimulo estas provizita al maksimumo de 12 bitoj, sed vi devas trakti ĉi tion surbaze de la kolumna larĝo-parametro aro en via dezajno.
  • Vico-Adreso (Vico[15:0]) – Vico-adreso en la stimulo estas provizita al maksimumo de 16 bitoj, sed vi devas trakti ĉi tion surbaze de la viclarĝa parametro aro en via dezajno.
  • Banka Adreso (Banko[3:0]) - Bankadreso en la stimulo estas provizita al maksimumo de kvar bitoj, sed vi devas trakti ĉi tion surbaze de la banka larĝa parametro fiksita en via dezajno.
  • Rango-Adreso (Rango[3:0]) - Rango-adreso en la stimulo estas provizita ĝis maksimume kvar bitoj, sed vi devas trakti ĉi tion surbaze de la rango-larĝa parametro aro en via dezajno.
    La adreso estas kunvenita surbaze de la plej alta nivelo MEM_ADDR_ORDER parametro kaj sendita al la uzantinterfaco

Komanda Ripeto (Komanda Ripeto [7:0])
La komando-ripetkalkulo estas la nombro da tempo, kiam la respektiva komando estas ripetita ĉe la Uzantinterfaco. La adreso por ĉiu ripeto estas pliigita je 8. La maksimuma ripetkalkulo estas 128.
La testbenko ne kontrolas la kolonlimon kaj ĝi ĉirkaŭvolvas ĉu la maksimuma kolonlimo estas atingita dum la pliigoj.
La 128 Komandoj plenigas la paĝon. Por iu ajn kolumnadreso krom 0, la ripetkalkulo de 128 finas transpasi la kolumnlimon kaj ĉirkaŭvolvante al la komenco de la kolumnadreso.

Busuzo
La busuzo estas kalkulita ĉe la Uzantinterfaco konsiderante tutsumon de Legoj kaj Skriboj kaj la sekva ekvacio estas uzata:

Xilinx DDR2 MIG 7 Efikeco-Takso-fig-8

  • BL8 prenas kvar memorhorloĝciklojn
  • fino_de_stimulo estas la tempo kiam ĉiuj ordonoj estas faritaj.
  • calib_done estas la tempo kiam la kalibrado estas farita.

Example Ŝablonoj
Tiuj ekzamplesoj baziĝas sur la MEM_ADDR_ORDER agordita al BANK_ROW_COLUMN.

Ununura Lega Skemo
00_0_2_000F_00A_1 – Ĉi tiu ŝablono estas ununura legado de la 10-a kolumno, 15-a vico kaj dua banko.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-9Ununura Skriba Ŝablono
00_0_1_0040_010_0 – Ĉi tiu ŝablono estas unuopa skribo al la 32-a kolumno, 128-a vico kaj unua banko.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-10Ununura Skribu kaj Legu al Sama Adreso
00_0_2_000F_00A_0 – Ĉi tiu ŝablono estas unuopa skribo al 10-a kolumno, 15-a vico kaj dua banko.
00_0_2_000F_00A_1 – Ĉi tiu ŝablono estas ununura legado de 10-a kolumno, 15-a vico kaj dua bankoXilinx DDR2 MIG 7 Efikeco-Takso-fig-11

Multoblaj Skriboj kaj Legoj kun Sama Adreso
0A_0_0_0010_000_0 – Ĉi tio respondas al 10 skriboj kun adreso komencanta de 0 ĝis 80, kiuj videblas en la kolumno.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-12

0A_0_0_0010_000_1 – Ĉi tio respondas al 10 legoj kun adreso komencanta de 0 ĝis 80, kiuj videblas en la kolumno.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-13

Paĝo Envolvi Dum Skriboj
0A_0_2_000F_3F8_0 – Ĉi tio respondas al 10 skribaĵoj kun kolumnadreso envolvita al la komenco de la paĝo post unu skribado.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-14

Simulante la Efikan Trafikan Generatoron

Je ĉi tiu punkto vi finis kun MIG ekzample desegna simulado. Ĉi tio implicas, ke via agordo de simulado estas preta, vi faris modifojn de RTL pri agado de simulado, la nova simula hierarkio estas ĝusta kaj vi komprenis la stimulajn ŝablonojn. Rulu la simuladon denove kun 16 skriboj kaj legoj en perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-15

Rulu ĉion, atendu ĝis la signalo init_calib_complete estas asertita, kaj vi povos vidi la proponitan nombron da skriboj kaj legoj. La simulado tiam ĉesos. Xilinx DDR2 MIG 7 Efikeco-Takso-fig-16

Kiam oni petas vin ĉesi simuladon, elektu Ne kaj iru al la transskriba fenestro, kie vi povos vidi la agado-statistikojn. Xilinx DDR2 MIG 7 Efikeco-Takso-fig-17

Se vi elektas "ĉesi simuladon" rendimentaj statistikoj estos skribitaj al a file nomita mig_band_width_output.txt situanta en la sim_1/behave dosierujo.

Examppado de dosierujo de leroj: -
/mig_7series_0_eksample_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Efikeco-Takso-fig-18

Vi povus scivoli kial la procentotagLa uzado de la buso estas nur 29. Rerulu la simuladon kun la samaj IP-agordoj sed nur ŝanĝante la stimulon. file al 256 skriboj kaj 256 legadoj

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Vi nun vidos la procentontage kiel 85, kio implicas, ke DDR3 ofertas pli bonan uzon de buso por longa sekvenco de skriboj kaj legado-eksplodoj. Xilinx DDR2 MIG 7 Efikeco-Takso-fig-19

Ĝeneralaj manieroj por plibonigi rendimenton

La faktoroj kiuj influas efikecon povas esti dividitaj en du sekciojn:

  1. Memoro Specifa
  2. Specifa RegiloXilinx DDR2 MIG 7 Efikeco-Takso-fig-20

Figuro 9 donas al vi superonview de la terminoj kiuj estas memorspecifaj.
Male al SRAM-oj kaj Block Memories, la rendimento de DDR2 aŭ DDR3 ne estas nur la maksimuma datumrapideco.

Ĝi dependas de multaj tempaj faktoroj, inkluzive de:

  • tRCD: Vico Komando Prokrasto (aŭ ras al cas prokrasto).
  • tCAS(CL): Kolumna adreso strobo-latenteco.
  • tRP: Vico antaŭŝarga prokrasto.
  • tRAS: Vico Aktiva Tempo (aktivigu por antaŭŝanĝi).
  • tRC: Vica ciklotempo. tRC = tRAS + tRP
  • tRAC: Radom aliro prokrasto. tRAC = tRCD + tCAS
  • tCWL: Cas skribi latentecon.
  • tZQ: ZQ-kalibra tempo.
  • tRFC: Vico Refreŝiga Ciklotempo
  • tWTR: Skribu al Read prokrasto. Lasta skriba transakcio al Lega komanda tempo.
  • tWR: Skribu Tempon de Reakiro. Lasta skriba transakcio al Antaŭŝarga tempo

Tempigo de ĉiuj listigitaj parametroj dependas de speco de memoro uzita kaj memorparto-rapideco-grado.
Pli da detaloj pri la difinoj kaj tempospecifoj troveblas en DDR2 DDR3 JEDEC aŭ en iu ajn memoraparata datenfolio.

Efikeco plejparte dependas de kiel memoro estas alirita. Malsamaj adrespadronoj donas malsamajn efikajn rezultojn.

Memortempigo-superkostoj

  1. Aktiviga tempo kaj Antaŭŝarga tempo kiam vi ŝanĝas al novaj bankoj/vicoj aŭ ŝanĝas vicojn kun en la sama banko.- Do se vi reduktas vicŝanĝon, ĉi tio povas forigi tRCD kaj tRP.
  2. Sendu kontinuajn skribajn aŭ legajn komandojn - Subtenante tCCD-tempigon.
  3. Minimumigu skribi por legi kaj legi por skribi komandan ŝanĝon - Skribu reakiran tempon por ŝanĝi al legaj aliroj, bustempon por ŝanĝi de legado al skribo
  4. Agordu taŭgan refreŝigan intervalon.
    • DDR3 SDRAM postulas Refreŝigajn ciklojn je meza perioda intervalo de tREFI.
    • Maksimume 8 pliaj Refreŝigaj komandoj povas esti eldonitaj anticipe ("tiritaj"). Ĉi tio ne reduktas la nombron da refreŝigoj, sed la maksimuma intervalo inter du ĉirkaŭaj Refreŝigaj komandoj estas limigita al 9 × tREFI.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-21
  • Uzu ĉiujn bankojn - Taŭga adresmekanismo estas preferinda.
    • Vico-Banko-Kolumno: Por transakcio okazanta super sinsekva adresspaco, la kerno aŭtomate malfermas la saman vicon en la sekva banko de la DRAM-aparato por daŭrigi la transakcion kiam la fino de ekzistanta vico estas atingita. Ĝi taŭgas por aplikoj kiuj postulas krevigon de grandaj datumpakaĵoj al sinsekvaj adreslokoj.
    • Banko-Vico-Kolumno: Dum transpaso de vica limo, la nuna vico estos fermita kaj alia vico estos malfermita ene de la sama banko. MSB estas bankadreso, kiu povas esti uzata por ŝanĝi de malsamaj bankoj. Ĝi taŭgas por pli mallongaj, pli hazardaj transakcioj al unu bloko de memoro dum tempodaŭro kaj poste salto al alia bloko (banko)
  • Burst Longo
    • BL 8 estas subtenata por DDR3 sur 7 serioj. BC4 havas tre malaltan efikecon kiu estas malpli ol 50%. Ĉi tio estas ĉar la ekzekuttempo de BC4 estas la sama kiel BL8. La datumoj estas nur maskitaj ene de la komponanto.
    • En kazoj kie vi ne volas skribi plenan eksplodon, aŭ datuma masko aŭ skribo-postlegado povas esti konsiderata.
  • Agordu taŭgan ZQ-intervalon (Nur DDR3)
    La regilo sendas kaj ZQ Short (ZQCS) kaj ZQ Long (ZQCL) Kalibrajn komandojn.
    • Aliĝi al la DDR3 Jedec-Normo
    • ZQ-Kalibrado estas diskutita en sekcio 5.5 de la JEDEC Spec JESD79-3 DDR3 SDRAM-Normo
    • ZQ Calibration kalibras On Die Termination (ODT) je regulaj intervaloj por respondeci pri varioj trans VT
    • Logiko estas enhavita en bank_common.v/vhd
    • Parametro Tzqcs determinas la rapidecon, je kiu komando de ZQ Calibration estas sendita al la memoro
    • Eblas malŝalti la nombrilon kaj mane sendi uzante app_zq_req, ĝi similas al mane sendi Refreŝigon.
      Vidu al (Xilinx Answer 47924) por detaloj.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-22

Kontrolilo Superkostoj

  1. Periodaj Legoj - Riferu al (Xilinx-Respondo 43344) por detaloj.
    • Ne ŝanĝu la periodon de la legado
    • Preterpasu periodajn legadojn dum skribado kaj eldonu la nombron da maltrafitaj legaĵoj antaŭ vera legado
  2. Reordigo - Refer (Xilinx-Respondo 34392) por detaloj.
    Por dezajnoj de Uzanto kaj AXI Interface estas preferinde havi ĉi tion ebligita.
    • Reordo estas la logiko, kiu antaŭrigardas plurajn komandojn kaj ŝanĝas uzantajn komandojn por ke ne-memoraj komandoj ne okupas validan bendolarĝon. La agado ankaŭ rilatis al fakta trafikpadrono.
    • Surbaze de la adresŝablono, reordigo helpas salti antaŭŝargon kaj aktivigi komandojn kaj igas tRCD kaj tRP ne okupi larĝon de datumbenda.Xilinx DDR2 MIG 7 Efikeco-Takso-fig-23
  3. Provu pliigi la nombron de Bankaj Maŝinoj.
    • La plej granda parto de la logiko de la regilo loĝas en la bankmaŝinoj kaj ili egalrilatas al DRAM-bankoj
    • Antaŭfiksita bankmaŝino administras ununuran DRAM-bankon en ajna momento.
    • Bankomaŝino estas dinamika do ne necesas havi bankomaŝinon por ĉiu fizika banko.
    • Bankaj maŝinoj povas esti agorditaj, sed ĝi estas kompromiso inter areo kaj rendimento.
    • La permesebla nombro da bankaj maŝinoj varias de 2-8.
    • Defaŭlte, 4 Bankaj Maŝinoj estas agorditaj per RTL-parametroj.
    • Por ŝanĝi Bankajn Maŝinojn, konsideru la parametron nBANK_MACHS = 8 enhavitan en memc_ui_top Example por 8 Bankaj Maŝinoj – nBANK_MACHS = 8

Vi nun konscias pri la faktoroj, kiuj influas la agadon.
Konsideru kontraŭfluan aplikaĵon, kiu donas al vi 512 datumbajtojn per pako kaj vi devas konservi ilin en malsamaj memorlokoj. Ĉar 512 datumbajtoj egalas al 64 DDR3-datumeksplodoj, refunkciigu la eks-ample dezajno kun stimulo file enhavanta 512 skribojn, 512 legadojn kaj viciŝanĝon por ĉiu 64 skribaĵoj aŭ legoj:

  • 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

Ĉe la fino de la simulado vi vidos, ke busuzo estas je 77 procentoj. Xilinx DDR2 MIG 7 Efikeco-Takso-fig-24

Figuro 11: Efikeco-Statistiko por 512 skriboj kaj 512 legoj - Vicoŝanĝo por 64 skribaĵoj aŭ legoj. 

Vi nun povas apliki la sciojn lernitajn en pli frua sekcio por plibonigi la efikecon. Kun view por uzi ĉiujn bankojn anstataŭ ŝanĝi la vicon, modifi la adreson por ŝanĝi la bankon kiel montrite sube.
Ĉi tio estas ekvivalenta al agordo de ROW_BANK_Column en la agordo de mapado de memoradreso en la 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

Ĉe la fino de simulado vi vidos, ke la pli frua 77 Procenta Bus-Uzo nun estas 87! Xilinx DDR2 MIG 7 Efikeco-Takso-fig-25

Se vi ankoraŭ postulas pli altan efikecon, vi povas iri por grandaj pakaj grandecoj de 1024 aŭ 2048 bajtoj, aŭ konsideri manan refreŝigon.

Notu: Xilinx ne instigas preterpasi la refreŝigon de regilo ĉar ni ne certas, ĉu vi povos plenumi la aŭtomatan refreŝigon de Jedec, kiu influas fidindecon de datumoj.
De la regilo-flanko vi povas ŝanĝi nBANk_MACH kaj vidi la plibonigon de rendimento.
Tamen, ĉi tio povas influi vian projektan tempon, bonvolu raporti al (Xilinx-Respondo 36505) por detaloj pri nBANk_MACHXilinx DDR2 MIG 7 Efikeco-Takso-fig-26

Malfermu la core_name_mig_sim.v file kaj ŝanĝi la parametrojn nBANK_MACHS de 4 al 8 kaj refari la simuladon. Por ke la parametrovaloro efiku en aparataro, vi devas ĝisdatigi la core_name_mig.v file.
Mi uzis la saman ŝablonon kie ni akiris 87% busuzadon (figuro -12).
Kun nBANK_MACHS agordita al 8, la efikeco nun estas 90%. Xilinx DDR2 MIG 7 Efikeco-Takso-fig-27

Notu ankaŭ, ke ½ kaj ¼-regiloj negative influas efikecon pro siaj latentecoj.
Por ekzample, ĉar ni povas nur sendi komandojn ĉiujn 4 CK-ciklojn, ekzistas foje ekstra remburaĵo dum aliĝo al minimumaj DRAM-tempigospecifoj, kiuj povas malpliigi efikecon de la teoria.
Provu malsamajn regilojn por trovi tiun, kiu konvenas al via efikeco.

Referencoj

  1. Zynq-7000 AP SoC kaj 7 Serioj FPGAoj MIS v2.3 [UG586]
  2. Xilinx MIG Solvcentro http://www.xilinx.com/support/answers/34243.html

Historio de Revizio
13/03/2015 - Komenca eldono

Elŝutu PDF: Xilinx DDR2 MIG 7 Efikeco-Takso-Gvidilo

Referencoj

Lasu komenton

Via retadreso ne estos publikigita. Bezonataj kampoj estas markitaj *