Udhëzues për vlerësimin e performancës Xilinx DDR2 MIG 7
Shënim i rëndësishëm: Ky PDF i shkarkueshëm i një rekord përgjigjesh ofrohet për të rritur përdorshmërinë dhe lexueshmërinë e tij. Është e rëndësishme të theksohet se Regjistrimet e Përgjigjeve janë Web-përmbajtje me bazë që përditësohet shpesh kur informacioni i ri bëhet i disponueshëm. Ju kujtohet të vizitoni Mbështetjen Teknike të Xilinx Webfaqe dhe review (Përgjigjja Xilinx 63234) për versionin më të fundit të kësaj Përgjigjeje.
Hyrje
Për shkak të mënyrës se si janë arkitekturuar memoriet DDR2 dhe DDR3 dhe është dizajnuar kontrolluesi i serisë MIG 7, performanca nuk është e drejtpërdrejtë.
Kërkon të kuptuarit e parametrave të ndryshëm të kohës së Jedec dhe arkitekturës së kontrolluesit, dhe do t'ju duhet të kryeni simulime për të marrë vlerësimet.
Parimi i përgjithshëm për përcaktimin e performancës është i njëjtë, por ky dokument ofron një mënyrë të thjeshtë për të marrë efikasitet duke përdorur MIG exampdizajnimi me ndihmën e stolit të provës dhe stimulit files bashkangjitur këtu.
Bandwidth efektiv
Autobusi i të dhënave DRAM arrin gjerësinë e brezit afër pikut vetëm gjatë breshërive të leximit dhe shkrimit dhe ngarkesa e tij e sipërme ul shpejtësinë efektive të të dhënave.
Disa ishampShumat e shpenzimeve të përgjithshme janë:
- tarifo paraprakisht kohën për të hyrë në rreshtat në të njëjtën bankë (Qasja në adresën jo në të njëjtin hit të faqes së rreshtit)
- shkrimi i kohës së rikuperimit për të ndryshuar nga qasja shkrim në lexim
- koha e rrotullimit të autobusit për të ndryshuar nga qasja e leximit në shkrim
Bandwidth efektiv = Bandwidth maksimal * Efikasiteti
Gjenerata e Dizajnit MIG
Referojuni kapitullit 586 të UG1 për detaje hap pas hapi mbi MIG IP dhe ishampgjenerimi i dizajnit.
Përpara se të ekzekutoni simulimin e performancës së Serisë MIG 7, bëni sa më poshtë për t'u siguruar që mjedisi juaj i simulimit është i mirë. Hapni MIG ishampDizenjoni dhe hartoni bibliotekat e duhura, ekzekutoni simulimin dhe sigurohuni që të shihni mesazhin "testi kaloi" në transkript.
Për të demonstruar rrjedhën, unë kam gjeneruar një MIG IP për xc7vx690tffg1761-2 dhe kam thirrur ishampdizajni.
Dy gjëra që duhen vënë në dukje janë bitet e adresës së kujtesës dhe përzgjedhja e hartës së adresës së kujtesës.
Për shembullample, unë kam zgjedhur MT41J128M8XX-125 nën opsionet e rënies së pjesës së kujtesës.
Për pjesën e zgjedhur të memories nga Figura-1, rreshti = 14, kolona = 10 dhe banka = 3, kështu që app_addr_width = rresht + kolonë + bank + rang = 28
Mund të zgjidhni kolonën BANK_ROW_COLUMN ose ROW BANK.
Kam lënë kolonën ROW BANK e cila është harta e paracaktuar e adresës.
Example design Simulimi me stol testimi të sintetizueshëm
Nën cilësimet e simulimit, zgjidhni QuestaSim/ModelSim Simulator dhe shfletoni në vendndodhjen e bibliotekave të përpiluara.
Për detaje mbi drejtimin e një shtegu të instalimit të mjeteve të palëve të treta, zgjedhjen e simulatorit të synuar dhe përpilimin dhe hartimin e bibliotekave, mund t'i referoheni (UG900) Udhëzuesi i përdoruesit të Vivado Design Suite Simulimi Logic
Ekzekutoni simulimin përmes GUI-së (Klikoni në skedën Run Simulation në menaxherin e projektit) dhe sigurohuni që të shihni mesazhin "provimi i kaluar" në transkript.
Modifikimet RTL të simulimit të performancës
- Klikoni me të djathtën në skedën e burimeve, zgjidhni "shtoni ose krijoni burime simulimi" dhe shfletoni te mig7_perfsim_traffic_generator.sv file dhe klikoni finish për ta shtuar.
- Klikoni me të djathtën në skedën e burimeve, zgjidhni "shtoni ose krijoni burime simulimi", shfletoni te perfsim_stimulus.txt dhe kliko "Finish" për ta shtuar.
- Komentoni ish-inampinstantacioni le_top në sim_tb_top.v file.
- Shtoni linjat e mëposhtme RTL në 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_KOLUMN”;
- localparam BANK_WIDTH = 3;
- localparam RANK_WIDTH = 1;
- tel [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- tel [2:0] c0_ddr3_app_cmd;
- teli c0_ddr3_app_en;
- tel [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- teli c0_ddr3_app_wdf_end;
- tel [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- teli c0_ddr3_app_wdf_wren;
- tel [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- teli c0_ddr3_app_rd_data_end;
- teli c0_ddr3_app_rd_data_valid;
- teli c0_ddr3_app_rdy;
- teli c0_ddr3_app_wdf_rdy;
- teli c0_data_krahasimi_error;
- teli ui_clk;
- teli ui_clk_sync_rst;
- teli app_sr_req = 0;
- teli app_ref_req = 0;
- teli app_zq_req =0;
- teli c0_app_wdf_mask =0;
Instantimi i kontrolluesit të memories FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Portat e ndërfaqes së memories
- .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),
// Portat e ndërfaqes së aplikacionit
- .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),
// Portat e orës së sistemit
- .sys_clk_i (sys_clk_i),
// Portat e orës së referencës
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Instancimi i gjeneratorit të trafikut të performancës
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. Modifiko APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH dhe BANK_WIDTH sipas përzgjedhjes së pjesës së kujtesës.
Vlerat mund të merren nga _mig.v file. - Emri i instancimit të theksuar me ngjyrë të verdhë mig_7series_0_mig mund të ndryshojë në bazë të emrit të komponentit tuaj gjatë krijimit të IP-së, verifikoni nëse keni zgjedhur një emër tjetër dhe ndryshoni atë në përputhje me rrethanat.
- Pasi të krijohet IP, hapni _mig.v file dhe kontrolloni për çdo ndryshim në emrat e sinjaleve LHS dhe korrigjoni ato.
- app_sr_req, app_ref_req dhe app_zq_req duhet të inicializohen në 0.
- Si ishample_top.v është i komentuar dhe i ri files janë shtuar, ndoshta do të shihni "?" pranë
mig_7seri_0_mig.v file nën burimet e simulimit.
Për të hartuar saktë file, kliko me të djathtën mig_7series_0_mig.v, zgjidh "Shto Burimet", Shfleto te
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
dhe shtoni mig_7series_0_mig_sim.v file. - Nëse shihni "?" për themelin files, shtoni të gjitha RTL files në dosjet clocking, controller, ip_top, phy dhe UI.
- Pasi të bëhen ndryshimet RTL dhe të gjitha të nevojshme files janë shtuar në Burimet tuaja të Simulimit, Hierarkia duhet të jetë e ngjashme me Figurën 5.
Të filetë theksuara me të kuqe janë shtuar rishtazi dhe "?" pritet në modulet e lidhura me ECC pasi konfigurimi i zgjedhur i memories e ka të çaktivizuar opsionin ECC.
Stimul File Përshkrimi
Çdo model stimulues është 48 bit dhe formati përshkruhet në figurat 6-1 deri në 6-4.
Kodimi i adresës (Adresa [35:0])
Adresa është e koduar në stimul sipas Figurës 7-1 deri në Figurën 7-6. Të gjitha fushat e adresës duhet të futen në format heksadecimal. Të gjitha fushat e adresës janë një gjerësi që ndahet me katër për t'u futur në formatin heksadecimal. Paneli i provës dërgon vetëm pjesët e kërkuara të një fushe adrese te kontrolluesi i kujtesës.
Për shembullampKështu, në një konfigurim tetë banke, vetëm Bitët e bankës [2:0] dërgohen te kontrolluesi i memories dhe pjesët e mbetura shpërfillen. Bitët shtesë për një fushë adrese janë dhënë që ju të vendosni adresën në një format heksadecimal.
Duhet të konfirmoni se vlera e futur korrespondon me gjerësinë e një konfigurimi të caktuar.
- Adresa e kolonës (kolona[11:0]) – Adresa e kolonës në stimul ofrohet në maksimum 12 bit, por ju duhet ta adresoni këtë bazuar në parametrin e gjerësisë së kolonës të vendosur në dizajnin tuaj.
- Adresa e rreshtit (Rresht[15:0]) – Adresa e rreshtit në stimul ofrohet në maksimum 16 bit, por ju duhet ta adresoni këtë bazuar në parametrin e gjerësisë së rreshtit të vendosur në dizajnin tuaj.
- Adresa e bankës (Banka[3:0]) – Adresa e bankës në stimul ofrohet në maksimum katër bit, por ju duhet ta adresoni këtë bazuar në parametrin e gjerësisë së bankës të vendosur në dizajnin tuaj.
- Adresa e renditjes (Ranku[3:0]) – Adresa e renditjes në stimul ofrohet në maksimum katër bit, por ju duhet ta adresoni këtë bazuar në parametrin e gjerësisë së renditjes të vendosur në dizajnin tuaj.
Adresa mblidhet bazuar në parametrin e nivelit të lartë MEM_ADDR_ORDER dhe dërgohet në ndërfaqen e përdoruesit
Përsëritja e komandës (Përsëritja e komandës [7:0])
Numri i përsëritjeve të komandës është numri i kohës që komanda përkatëse përsëritet në ndërfaqen e përdoruesit. Adresa për çdo përsëritje rritet me 8. Numri maksimal i përsëritjeve është 128.
Banka e provës nuk kontrollon për kufirin e kolonës dhe mbështillet nëse kufiri maksimal i kolonës arrihet gjatë rritjeve.
128 Komandat mbushin faqen. Për çdo adresë kolone të ndryshme nga 0, numërimi i përsëritjeve prej 128 përfundon duke kaluar kufirin e kolonës dhe duke u mbështjellë në fillim të adresës së kolonës.
Përdorimi i autobusit
Përdorimi i autobusit llogaritet në ndërfaqen e përdoruesit duke marrë parasysh numrin total të Leximeve dhe Shkrimeve dhe përdoret ekuacioni i mëposhtëm:
- BL8 merr katër cikle memorie të orës
- end_of_stimulus është koha kur kryhen të gjitha komandat.
- calib_done është koha kur bëhet kalibrimi.
Example Modelet
Këto ishampato bazohen në MEM_ADDR_ORDER të caktuar në BANK_ROW_COLUMN.
Modeli i vetëm i leximit
00_0_2_000F_00A_1 – Ky model është një lexim i vetëm nga kolona e 10-të, rreshti i 15-të dhe banka e dytë.Modeli i vetëm i shkrimit
00_0_1_0040_010_0 – Ky model është një shkrim i vetëm në kolonën e 32-të, rreshtin e 128-të dhe bankën e parë.Shkruani dhe lexoni vetëm në të njëjtën adresë
00_0_2_000F_00A_0 – Ky model është një shkrim i vetëm në kolonën e 10-të, rreshtin e 15-të dhe bankën e dytë.
00_0_2_000F_00A_1 – Ky model është një lexim i vetëm nga kolona e 10-të, rreshti i 15-të dhe banka e dytë
Shumë Shkrime dhe Lexime me të njëjtën Adresë
0A_0_0_0010_000_0 – Kjo korrespondon me 10 shkrime me adresë që fillon nga 0 në 80 që mund të shihet në kolonë.
0A_0_0_0010_000_1 – Kjo korrespondon me 10 lexime me adresë duke filluar nga 0 në 80 që mund të shihet në kolonë.
Mbështjellja e faqes gjatë shkrimeve
0A_0_2_000F_3F8_0 – Kjo korrespondon me 10 shkrime me adresën e kolonës të mbështjellë në fillim të faqes pas një shkrimi.
Simulimi i gjeneratorit të trafikut të performancës
Në këtë pikë ju keni mbaruar me MIG ishampsimulimi i dizajnit. Kjo nënkupton që konfigurimi juaj i simulimit është gati, ju keni bërë modifikime RTL të simulimit të performancës, hierarkia e re e simulimit është e saktë dhe ju keni kuptuar modelet e stimulit. Ekzekutoni simulimin edhe një herë me 16 shkrime dhe lexime në perfsim_stimulus.txt.
Kryeni të gjitha, prisni derisa të vendoset sinjali init_calib_complete dhe do të jeni në gjendje të shihni numrin e propozuar të shkrimeve dhe leximeve. Simulimi më pas do të ndalet.
Kur ju kërkohet të hiqni dorë nga simulimi, zgjidhni Jo dhe shkoni te dritarja e transkriptit ku do të mund të shihni statistikat e performancës.
Nëse zgjidhni "Hiq simulimin" Statistikat e performancës do të shkruhen në a file emërtuar mig_band_width_output.txt ndodhet në sim_1/behave dosje.
Exampshtegu i drejtorisë: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Ju mund të pyesni veten pse kjo përqindjetagPërdorimi i autobusit është i vetëm 29. Ripunoni simulimin me të njëjtat cilësime IP, por thjesht ndryshoni stimulin file në 256 shkrime dhe 256 lexime
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Tani do të shihni përqindjentage si 85, që nënkupton se DDR3 ofron përdorim më të mirë të autobusit për sekuencë të gjatë shkrimesh dhe breshërish leximi.
Mënyra të përgjithshme për të përmirësuar performancën
Faktorët që ndikojnë në efikasitetin mund të ndahen në dy seksione:
- Memorie specifike
- Specifike për kontrolluesin
Figura 9 ju jep një fundview të termave që janë specifike të memories.
Ndryshe nga SRAM-të dhe Blloku Memories, performanca DDR2 ose DDR3 nuk është vetëm shpejtësia maksimale e të dhënave.
Kjo varet nga shumë faktorë të kohës, duke përfshirë:
- tRCD: Vonesa e komandës së rreshtit (ose vonesa nga ras në rast).
- tCAS(CL): Vonesa e strobit të adresës së kolonës.
- tRP: Vonesa e parapagesës së rreshtit.
- TRAS: Koha aktive e rreshtit (aktivizoni për ta ndryshuar paraprakisht).
- tRC: Koha e ciklit të rreshtit. tRC = tRAS + tRP
- TRAC: Vonesa e aksesit radom. tRAC = tRCD + tCAS
- tCWL: Vonesa e shkrimit në cas.
- tZQ: Koha e kalibrimit ZQ.
- tRFC: Koha e ciklit të rifreskimit të rreshtit
- tWTR: Vonesa e shkrimit për të lexuar. Transaksioni i fundit i shkrimit në kohën e komandës Lexo.
- tWR: Shkruani kohën e rikuperimit. Transaksioni i fundit i shkrimit në kohën e parapagesës
Koha e të gjithë parametrave të listuar varet nga lloji i memories së përdorur dhe shkalla e shpejtësisë së pjesës së memories.
Më shumë detaje mbi përkufizimet dhe specifikimet e kohës mund të gjenden në DDR2 DDR3 JEDEC ose në çdo fletë të dhënash të pajisjes së kujtesës.
Efikasiteti varet kryesisht nga mënyra se si arrihet memoria. Modele të ndryshme adresash japin rezultate të ndryshme efikasiteti.
Shpenzimet e përgjithshme të kohës së kujtesës
- Koha e aktivizimit dhe koha e parapagesës kur ndryshoni në banka/rreshta të reja ose ndryshoni rreshta me në të njëjtën bankë.- Pra, nëse reduktoni ndryshimin e rreshtit, kjo mund të heqë tRCD dhe tRP.
- Dërgoni komanda të vazhdueshme të shkrimit ose leximit - Ruajtja e kohës së tCCD.
- Minimizoni ndryshimin e komandës shkrim për lexim dhe lexim për shkrim - Shkruani kohën e rikuperimit për të ndryshuar aksesin në lexim, kohën e rrotullimit të autobusit për të ndryshuar nga lexim në shkrim
- Vendosni një interval të duhur rifreskimi.
- DDR3 SDRAM kërkon cikle rifreskimi në një interval mesatar periodik prej tREFI.
- Një maksimum prej 8 komandash shtesë Rifreskimi mund të lëshohen paraprakisht ("tërhequr"). Kjo nuk e zvogëlon numrin e rifreskimeve, por intervali maksimal ndërmjet dy komandave përreth Refresh është i kufizuar në 9 × tREFI
- Përdorni të gjitha bankat - Preferohet një mekanizëm i përshtatshëm adresimi.
- Rreshti-Banka-Kollona: Për një transaksion që ndodh në një hapësirë sekuenciale adresash, thelbi hap automatikisht të njëjtin rresht në bregun tjetër të pajisjes DRAM për të vazhduar transaksionin kur të arrihet fundi i një rreshti ekzistues. Ai është i përshtatshëm për aplikacionet që kërkojnë shpërthyerjen e paketave të mëdha të të dhënave në vendndodhje të adresave të njëpasnjëshme.
- Bank-Rresht-Kollona: Kur kaloni një kufi rreshti, rreshti aktual do të mbyllet dhe një rresht tjetër do të hapet brenda të njëjtës breg. MSB është një adresë bankare, e cila mund të përdoret për të kaluar nga banka të ndryshme. Është i përshtatshëm për transaksione më të shkurtra, më të rastësishme në një bllok memorie për një periudhë kohore dhe më pas një kërcim në një bllok tjetër (bankë)
- Gjatësia e shpërthimit
- BL 8 mbështetet për seritë DDR3 në 7. BC4 ka një efikasitet shumë të ulët që është më pak se 50%. Kjo për shkak se koha e ekzekutimit të BC4 është e njëjtë me BL8. Të dhënat thjesht maskohen brenda komponentit.
- Në rastet kur nuk dëshironi të shkruani burst të plotë, mund të merren parasysh ose maska e të dhënave ose shkrimi pas leximit.
- Vendosni një interval të duhur ZQ (vetëm DDR3)
Kontrolluesi dërgon komandat e kalibrimit ZQ Short (ZQCS) dhe ZQ Long (ZQCL).- Respektoni standardin DDR3 Jedec
- Kalibrimi ZQ diskutohet në seksionin 5.5 të standardit JEDEC Spec JESD79-3 DDR3 SDRAM
- Kalibrimi ZQ kalibron Në Përfundimin e Die (ODT) në intervale të rregullta për të llogaritur ndryshimet në të gjithë VT
- Logjika gjendet në bank_common.v/vhd
- Parametri Tzqcs përcakton shpejtësinë me të cilën një komandë ZQ Kalibrimi dërgohet në memorie
- Është e mundur të çaktivizoni numëruesin dhe të dërgoni manualisht duke përdorur app_zq_req, është e ngjashme me dërgimin manual të një Rifreskimi.
Referojuni (Përgjigjja Xilinx 47924) për detaje.
Shpenzimet e përgjithshme të kontrolluesit
- Leximet periodike – Referojuni (Përgjigjja Xilinx 43344) për detaje.
- Mos e ndryshoni periudhën e leximit
- Kapërceni leximet periodike gjatë shkrimeve dhe jepni numrin e leximeve të humbura përpara një leximi të vërtetë
- Rirenditja - Referojuni (Përgjigjja Xilinx 34392) për detaje.
Për dizajnet e ndërfaqes së përdoruesit dhe AXI, preferohet që kjo të jetë e aktivizuar.- Rirenditja është logjika që shikon përpara disa komanda dhe ndryshon rendin e komandave të përdoruesit për të bërë që komandat jo-memorie të mos zënë gjerësi bande të vlefshme. Performanca gjithashtu lidhej me modelin aktual të trafikut.
- Bazuar në modelin e adresës, rirenditja ndihmon në kapërcimin e ngarkimit paraprak dhe aktivizimin e komandave dhe bën që tRCD dhe tRP të mos zënë gjerësinë e brezit të të dhënave.
- Mundohuni të rrisni numrin e makinave bankare.
- Shumica e logjikës së kontrolluesit qëndron në makinat bankare dhe ato korrespondojnë me bankat DRAM
- Një makinë e caktuar bankare menaxhon një bankë të vetme DRAM në çdo kohë të caktuar.
- Caktimi i makinerive bankare është dinamik, kështu që nuk është e nevojshme të kemi një makinë bankare për çdo bankë fizike.
- Makineritë bankare mund të konfigurohen, por është një shkëmbim ndërmjet zonës dhe performancës.
- Numri i lejuar i makinerive bankare varion nga 2-8.
- Si parazgjedhje, 4 Makinat Bankare janë konfiguruar përmes parametrave RTL.
- Për të ndryshuar Makinat e Bankës, merrni parasysh parametrin nBANK_MACHS = 8 që gjendet në memc_ui_top Example për 8 makina bankare – nBANK_MACHS = 8
Tani jeni të vetëdijshëm për faktorët që ndikojnë në performancën.
Konsideroni një aplikacion në rrjedhën e sipërme që ju jep 512 bajt të dhënash për paketë dhe ju duhet t'i ruani ato në vende të ndryshme memorie. Meqenëse 512 bajt të dhënash janë të barabarta me 64 breshëri të dhënash DDR3, ekzekutoni përsëri ishample design me një stimul file që përmban 512 shkrime, 512 lexime dhe ndërrim rreshtash për çdo 64 shkrime ose lexime:
- 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
Në fund të simulimit do të shihni se shfrytëzimi i autobusit është në 77 përqind.
Figura 11: Statistikat e performancës për 512 shkrime dhe 512 lexime – Ndërrimi i rreshtit për 64 shkrime ose lexime.
Tani mund të aplikoni njohuritë e mësuara në seksionin e mëparshëm për të përmirësuar efikasitetin. Me një view për të përdorur të gjitha bankat në vend që të ndryshoni rreshtin, modifikoni modelin e adresës për të ndryshuar bankën siç tregohet më poshtë.
Kjo është e barabartë me vendosjen e ROW_BANK_Column në cilësimin e hartës së adresës së kujtesës në 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
Në fund të simulimit do të shihni se përdorimi i mëparshëm i autobusit 77 përqind tani është 87!
Nëse ende keni nevojë për efikasitet më të lartë, mund të përdorni përmasa të mëdha paketash prej 1024 ose 2048 bajte ose të merrni parasysh një rifreskim manual.
Shënim: Xilinx nuk inkurajon anashkalimin e rifreskimit të kontrolluesit pasi nuk jemi të sigurt nëse do të jeni në gjendje të përmbushni kohën e rifreskimit automatik të Jedec, gjë që ndikon në besueshmërinë e të dhënave.
Nga ana e kontrolluesit mund të ndryshoni nBANk_MACH dhe të shihni përmirësimin e performancës.
Megjithatë, kjo mund të ndikojë në kohën tuaj të projektimit, ju lutemi referojuni (Përgjigjja Xilinx 36505) për detaje në nBANk_MACH
Hapni core_name_mig_sim.v file dhe ndryshoni parametrat nBANK_MACHS nga 4 në 8 dhe rinisni simulimin. Që vlera e parametrit të hyjë në fuqi në harduer, duhet të përditësoni core_name_mig.v file.
Kam përdorur të njëjtin model ku kemi marrë 87% shfrytëzim të autobusit (figura -12).
Me nBANK_MACHS të vendosur në 8, efikasiteti është tani 90%.
Gjithashtu vini re se kontrollorët ½ dhe ¼ ndikojnë negativisht në efikasitetin për shkak të vonesave të tyre.
Për shembullampLe, meqenëse ne mund të dërgojmë komanda vetëm çdo 4 cikle CK, ndonjëherë ka mbushje shtesë kur respektohen specifikat minimale të kohës së DRAM, të cilat mund të ulin efikasitetin nga teoria.
Provoni kontrollues të ndryshëm për të gjetur atë që i përshtatet kërkesës suaj të efikasitetit.
Referencat
- Zynq-7000 AP SoC dhe FPGA të Serisë 7 MIS v2.3 [UG586]
- Qendra e zgjidhjeve MIG Xilinx http://www.xilinx.com/support/answers/34243.html
Historia e rishikimit
13/03/2015 – Publikimi fillestar
Shkarkoni PDF: Udhëzues për vlerësimin e performancës Xilinx DDR2 MIG 7