Xilinx DDR2 MIG 7 našumo įvertinimo vadovas
Svarbi pastaba: Šis atsisiunčiamas atsakymo įrašo PDF failas pateikiamas siekiant pagerinti jo naudojimą ir skaitomumą. Svarbu pažymėti, kad atsakymų įrašai yra Web- pagrįstas turinys, kuris dažnai atnaujinamas, kai atsiranda naujos informacijos. Primename, kad apsilankykite „Xilinx“ techninės pagalbos centre Websvetainė ir review (Xilinx Answer 63234), kad gautumėte naujausią šio atsakymo versiją.
Įvadas
Dėl DDR2 ir DDR3 atminties architektūros būdo ir MIG 7 serijos valdiklio dizaino našumas nėra paprastas.
Tam reikia suprasti įvairius „Jedec Timing“ parametrus ir valdiklio architektūrą, o norint gauti įvertinimus, turėsite paleisti modeliavimą.
Bendrasis našumo nustatymo principas yra tas pats, tačiau šiame dokumente pateikiamas paprastas būdas efektyviai pasiekti naudojant MIG exampprojektavimas naudojant bandymų stendą ir stimulą filečia pridedama.
Efektyvus pralaidumas
DRAM duomenų magistralė pasiekia beveik didžiausią pralaidumą tik per skaitymo ir rašymo serijas, o jos pridėtinės išlaidos sumažina efektyvų duomenų perdavimo spartą.
Keletas buvusiųampmažesnės pridėtinės išlaidos yra:
- išankstinio įkrovimo laikas, norint pasiekti to paties banko eilutes (prieigos adresas nėra toje pačioje eilutės puslapio įvykyje)
- rašymo atkūrimo laikas pereiti nuo rašymo prie skaitymo prieigos
- autobuso apsisukimo laikas pereiti nuo skaitymo prie rašymo prieigos
Efektyvus pralaidumas = didžiausias dažnių juostos plotis * efektyvumas
MIG dizaino karta
Žr. UG586 1 skyrių, kur rasite išsamios informacijos apie MIG IP ir pvzample dizaino karta.
Prieš paleisdami MIG 7 serijos našumo modeliavimą, atlikite šiuos veiksmus, kad įsitikintumėte, jog modeliavimo aplinka yra tinkama. Atidarykite MIG exampsuprojektuokite ir susiekite atitinkamas bibliotekas, paleiskite modeliavimą ir įsitikinkite, kad stenogramoje matote pranešimą „testas išlaikytas“.
Norėdami parodyti srautą, sukūriau MIG IP, skirtą xc7vx690tffg1761-2 ir iškviečiau exampdizainas.
Reikėtų atkreipti dėmesį į du dalykus: atminties adreso bitus ir atminties adresų atvaizdavimo pasirinkimą.
Pavyzdžiui,ampatminties dalies išskleidžiamajame meniu pasirinkau MT41J128M8XX-125.
Pasirinktai atminties daliai iš 1 paveikslo eilutė = 14, stulpelis = 10 ir bankas = 3, taigi app_addr_width = eilutė + stulpelis + bankas + reitingas = 28
Galite pasirinkti stulpelį BANK_ROW_COLUMN arba ROW BANK.
Palikau stulpelį ROW BANK, kuris yra numatytasis adreso susiejimas.
Example dizainas Simuliacija su sintetinamu bandymų stendu
Dalyje Modeliavimo nustatymai pasirinkite QuestaSim/ModelSim Simulator ir naršykite iki sudarytų bibliotekų vietos.
Išsamios informacijos apie trečiosios šalies įrankių diegimo kelio nurodymą, tikslinio treniruoklio pasirinkimą ir bibliotekų kompiliavimą bei atvaizdavimą rasite (UG900) Vivado Design Suite vartotojo vadove Logic Simulation.
Vykdykite modeliavimą per GUI (projektų tvarkytuvėje spustelėkite skirtuką Vykdyti modeliavimą) ir įsitikinkite, kad nuoraše matote pranešimą „testas išlaikytas“.
Performance Simulation RTL modifikacijos
- Dešiniuoju pelės mygtuku spustelėkite šaltinių skirtuką, pasirinkite „Pridėti arba sukurti modeliavimo šaltinius“ ir naršykite mig7_perfsim_traffic_generator.sv. file ir spustelėkite Baigti, kad pridėtumėte.
- Dešiniuoju pelės mygtuku spustelėkite šaltinių skirtuką, pasirinkite „Pridėti arba sukurti modeliavimo šaltinius“, naršykite perfsim_stimulus.txt ir spustelėkite Baigti, kad pridėtumėte.
- Komentuok buvample_top egzempliorius sim_tb_top.v file.
- Pridėkite žemiau esančias RTL eilutes prie sim_tb_top,v
- vietinis parametras APP_ADDR_WIDTH = 28;
- vietinis parametras APP_DATA_WIDTH = 64;
- vietinis parametras APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- localparam MEM_ADDR_ORDER = "BANK_ROW_COLUMN";
- vietinis parametras BANK_WIDTH = 3;
- vietinis parametras RANK_WIDTH = 1;
- laidas [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- laidas [2:0] c0_ddr3_app_cmd;
- laidas c0_ddr3_app_en;
- laidas [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- laidas c0_ddr3_app_wdf_end;
- laidas [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- laidas c0_ddr3_app_wdf_wren;
- laidas [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- laidas c0_ddr3_app_rd_data_end;
- laidas c0_ddr3_app_rd_data_valid;
- laidas c0_ddr3_app_rdy;
- laidas c0_ddr3_app_wdf_rdy;
- laidas c0_duomenų_palyginimo_klaida;
- viela ui_clk;
- laidas ui_clk_sync_rst;
- laidas app_sr_req = 0;
- laidas app_ref_req = 0;
- laidas app_zq_req =0;
- laidas c0_app_wdf_mask =0;
FPGA atminties valdiklio egzistavimas
mig_7series_0_mig u_mig_7series_0_mig (
// Atminties sąsajos prievadai
- .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),
// Programos sąsajos prievadai
- .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),
// Sistemos laikrodžio prievadai
- .sys_clk_i (sys_clk_i),
// Laikrodžio prievadų nuoroda
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Našumo srauto generatoriaus egzistavimas
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. Pakeiskite APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH ir BANK_WIDTH pagal savo atminties dalies pasirinkimą.
Vertes galima gauti iš _mig.v file. - Geltonai paryškintas egzemplioriaus pavadinimas mig_7series_0_mig gali skirtis atsižvelgiant į jūsų komponento pavadinimą kuriant IP, patikrinkite, ar pasirinkote kitą pavadinimą, ir atitinkamai pakeiskite.
- Sukūrę IP atidarykite _mig.v file ir kryžmiškai patikrinkite, ar nėra LHS signalų pavadinimų variantų, ir juos pataisykite.
- „app_sr_req“, „app_ref_req“ ir „app_zq_req“ turėtų būti inicijuoti iki 0.
- Kaip buvęsample_top.v yra pakomentuotas ir naujas files pridėta, tikriausiai pamatysite „? šalia
mig_7series_0_mig.v file pagal modeliavimo šaltinius.
Kad žemėlapis būtų teisingas file, dešiniuoju pelės mygtuku spustelėkite mig_7series_0_mig.v, pasirinkite „Pridėti šaltinius“, naršykite
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
ir pridėkite mig_7series_0_mig_sim.v file. - Jei matote "?" už pagrindinį files, pridėkite visus RTL files aplankuose laikrodis, valdiklis, ip_top, phy ir vartotojo sąsaja.
- Atlikus RTL pakeitimus ir atlikus visus reikalingus files pridedami prie jūsų modeliavimo šaltinių, hierarchija turėtų būti panaši į 5 pav.
The fileraudonai paryškintos s yra naujai pridėtos, o „? tikimasi su ECC susijusiuose moduliuose, nes pasirinktoje atminties konfigūracijoje ECC parinktis išjungta.
Stimulas File Aprašymas
Kiekvienas stimulas yra 48 bitų, o formatas aprašytas 6-1–6-4 pav.
Adreso kodavimas (Adresas [35:0])
Adresas užkoduotas stimule, kaip parodyta 7-1 pav. iki 7-6 pav. Visi adreso laukai turi būti įvesti šešioliktainiu formatu. Visi adreso laukai yra tokio pločio, kuris dalijasi iš keturių, kad būtų įvestas šešioliktainiu formatu. Bandymų stendas siunčia tik reikiamus adreso lauko bitus į atminties valdiklį.
Pavyzdžiui,ampAštuonių bankų konfigūracijoje į atminties valdiklį siunčiami tik banko bitai [2:0], o likę bitai nepaisomi. Papildomi adreso lauko bitai yra skirti įvesti adresą šešioliktainiu formatu.
Turite patvirtinti, kad įvesta reikšmė atitinka nurodytos konfigūracijos plotį.
- Stulpelio adresas (stulpelis [11:0]) – Stulpelio adresas stimuliacijoje pateikiamas ne daugiau kaip 12 bitų, bet jūs turite tai spręsti pagal jūsų projekte nustatytą stulpelio pločio parametrą.
- Eilutės adresas ([15:0] eilutė) – Paskatinimo eilutės adresas pateikiamas ne daugiau kaip 16 bitų, bet jūs turite tai spręsti pagal jūsų projekte nustatytą eilutės pločio parametrą.
- Banko adresas (bankas[3:0]) – Banko adresas stimuliacijoje pateikiamas daugiausia keturiais bitais, bet jūs turite tai spręsti pagal jūsų projekte nustatytą banko pločio parametrą.
- Reitingo adresas (Rank[3:0]) – Rodiklio reitingo adresas pateikiamas daugiausia keturiems bitams, bet jūs turite tai spręsti pagal jūsų projekte nustatytą rango pločio parametrą.
Adresas surenkamas pagal aukščiausio lygio MEM_ADDR_ORDER parametrą ir siunčiamas į vartotojo sąsają
Komandos kartojimas (Command Repeat [7:0])
Komandų pasikartojimų skaičius yra skaičius, kiek kartų atitinkama komanda pakartojama vartotojo sąsajoje. Kiekvieno pakartojimo adresas padidinamas 8. Maksimalus pasikartojimų skaičius yra 128.
Bandymų stendas netikrina stulpelio ribos ir apgaubia, jei padidinimo metu pasiekiama didžiausia kolonėlės riba.
128 komandos užpildo puslapį. Bet kuriam stulpelio adresui, išskyrus 0, pasikartojimų skaičius 128 baigiasi peržengiant stulpelio ribą ir baigiant stulpelio adreso pradžia.
Autobusų naudojimas
Magistralės panaudojimas apskaičiuojamas vartotojo sąsajoje, atsižvelgiant į bendrą skaitymų ir įrašų skaičių, ir naudojama ši lygtis:
- BL8 trunka keturis atminties laikrodžio ciklus
- end_of_stimulus yra laikas, kai atliekamos visos komandos.
- calib_done yra laikas, kai atliekamas kalibravimas.
Example Patterns
Šie buvęamples yra pagrįsti MEM_ADDR_ORDER nustatyta BANK_ROW_COLUMN.
Vieno skaitymo šablonas
00_0_2_000F_00A_1 – šis šablonas yra vienas skaitymas iš 10 stulpelio, 15 eilutės ir antrojo banko.Vieno rašymo šablonas
00_0_1_0040_010_0 – šis šablonas yra vienas įrašymas į 32 stulpelį, 128 eilutę ir pirmąjį banką.Vieną kartą rašyti ir skaityti tuo pačiu adresu
00_0_2_000F_00A_0 – Šis šablonas yra vienas įrašymas į 10 stulpelį, 15 eilutę ir antrą banką.
00_0_2_000F_00A_1 – Šis šablonas yra vienas skaitymas iš 10 stulpelio, 15 eilutės ir antrojo banko
Keli rašymai ir skaitymai tuo pačiu adresu
0A_0_0_0010_000_0 – Tai atitinka 10 įrašų, kurių adresas prasideda nuo 0 iki 80, kuriuos galima pamatyti stulpelyje.
0A_0_0_0010_000_1 – Tai atitinka 10 skaitymų, kurių adresas prasideda nuo 0 iki 80, kuriuos galima pamatyti stulpelyje.
Puslapio apvyniojimas rašant
0A_0_2_000F_3F8_0 – Tai atitinka 10 įrašų, kai stulpelio adresas įterpiamas į puslapio pradžią po vieno rašymo.
Našumo srauto generatoriaus modeliavimas
Šiuo metu baigsite darbą su MIG exampdizaino modeliavimas. Tai reiškia, kad jūsų modeliavimo sąranka yra paruošta, atlikote našumo modeliavimo RTL modifikacijas, nauja modeliavimo hierarchija yra teisinga ir jūs supratote stimulų modelius. Dar kartą paleiskite modeliavimą su 16 įrašų ir skaitymų faile perfsim_stimulus.txt.
Paleiskite viską, palaukite, kol bus patvirtintas signalas init_calib_complete, ir galėsite pamatyti siūlomą rašymo ir skaitymo skaičių. Tada modeliavimas sustos.
Kai būsite paraginti baigti modeliavimą, pasirinkite Ne ir eikite į nuorašo langą, kuriame galėsite peržiūrėti našumo statistiką.
Jei pasirinksite „Išeiti simuliaciją“ našumo statistika bus įrašyta į a file pavadintas mig_band_width_output.txt, esantis sim_1/behave aplanką.
Exampkatalogo kelias:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Gali kilti klausimas, kodėl proctage magistralės panaudojimas yra tik 29. Pakartokite modeliavimą naudodami tuos pačius IP nustatymus, bet tik pakeiskite stimulą file iki 256 rašo ir 256 skaito
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Dabar pamatysite proctage kaip 85, o tai reiškia, kad DDR3 siūlo geresnį magistralės panaudojimą ilgoms rašymo ir skaitymo serijoms.
Bendrieji našumo gerinimo būdai
Veiksnius, turinčius įtakos efektyvumui, galima suskirstyti į dvi dalis:
- Specifinė atmintis
- Specifinis valdiklis
9 pavview iš terminų, kurie yra būdingi atminčiai.
Skirtingai nuo SRAM ir Block Memories DDR2 ar DDR3 našumas nėra tik didžiausias duomenų perdavimo greitis.
Tai priklauso nuo daugelio laiko veiksnių, įskaitant:
- tRCD: Eilutės komandų delsa (arba ras to ca delsa).
- tCAS(CL): Stulpelio adreso blykstės delsa.
- tRP: Eilės išankstinio įkrovimo delsa.
- tRAS: Aktyvaus laiko eilutės (suaktyvinkite, kad pakeistumėte iš anksto).
- tRC: Eilučių ciklo laikas. tRC = tRAS + tRP
- tRAC: Radom prieigos delsa. tRAC = tRCD + tCAS
- tCWL: Cas rašymo delsa.
- tZQ: ZQ kalibravimo laikas.
- tRFC: Eilutės atnaujinimo ciklo laikas
- tWTR: Rašyti į Skaitymo delsą. Paskutinė įrašymo operacija į skaitymo komandos laiką.
- tWR: Parašykite atkūrimo laiką. Paskutinė įrašymo operacija į išankstinio įkrovimo laiką
Visų išvardytų parametrų laikas priklauso nuo naudojamos atminties tipo ir atminties dalies greičio laipsnio.
Daugiau informacijos apie apibrėžimus ir laiko specifikacijas rasite DDR2 DDR3 JEDEC arba bet kuriame atminties įrenginio duomenų lape.
Efektyvumas daugiausia priklauso nuo to, kaip pasiekiama atmintis. Skirtingi adresų modeliai duoda skirtingus efektyvumo rezultatus.
Atminties laiko sąnaudos
- Aktyvinimo laikas ir išankstinio įkrovimo laikas, kai keičiate naujus bankus/eilutes arba eilutes tame pačiame banke. Taigi, jei sumažinsite eilučių keitimą, tai gali pašalinti tRCD ir tRP.
- Siųskite nuolatines rašymo arba skaitymo komandas – tCCD laiko palaikymas.
- Sumažinkite komandų rašymo į skaitymą ir skaitymo ir rašymo komandų keitimą – įrašykite atkūrimo laiką, kad būtų pakeistos skaitymo prieigos, magistralės apsisukimo laikas, kad būtų pakeistas skaitymas į rašymą
- Nustatykite tinkamą atnaujinimo intervalą.
- DDR3 SDRAM reikalingi atnaujinimo ciklai vidutiniu periodiniu tREFI intervalu.
- Iš anksto galima išduoti daugiausiai 8 papildomas atnaujinimo komandas („įtraukti“). Tai nesumažina atnaujinimų skaičiaus, tačiau didžiausias intervalas tarp dviejų aplinkinių atnaujinimo komandų yra 9 × tREFI.
- Pasinaudokite visais bankais - Geriau pasirinkti tinkamą adresavimo mechanizmą.
- Eilutė-bankas-stulpelis: Jei operacija atliekama nuoseklioje adresų erdvėje, branduolys automatiškai atidaro tą pačią eilutę kitame DRAM įrenginio banke, kad būtų tęsiama operacija, kai pasiekiama esamos eilutės pabaiga. Jis puikiai tinka programoms, kurioms reikia didelių duomenų paketų perkėlimo į nuoseklias adresų vietas.
- Bankas-eilutė-stulpelis: Kai kertama eilutės riba, dabartinė eilutė bus uždaryta, o kita eilutė bus atidaryta tame pačiame krante. MSB yra banko adresas, kurį galima naudoti norint pereiti iš skirtingų bankų. Jis tinka trumpesnėms, atsitiktinesnėms operacijoms į vieną atminties bloką tam tikrą laiką, o po to peršokti į kitą bloką (banką).
- Plyšio ilgis
- BL 8 palaikoma DDR3 7 serijoje. BC4 turi labai mažą efektyvumą, kuris yra mažesnis nei 50%. Taip yra todėl, kad BC4 vykdymo laikas yra toks pat kaip BL8. Duomenys tiesiog užmaskuoti komponento viduje.
- Tais atvejais, kai nenorite rašyti visos serijos, galima apsvarstyti duomenų kaukę arba rašymą po skaitymo.
- Nustatykite tinkamą ZQ intervalą (tik DDR3)
Valdiklis siunčia ir ZQ Short (ZQCS), ir ZQ Long (ZQCL) kalibravimo komandas.- Laikykitės DDR3 Jedec standarto
- ZQ kalibravimas aptariamas JEDEC Spec JESD5.5-79 DDR3 SDRAM standarto 3 skyriuje
- ZQ kalibravimas reguliariais intervalais sukalibruoja nutraukimą (ODT), kad atsižvelgtų į VT skirtumus
- Logika yra bank_common.v/vhd
- Parametras Tzqcs nustato greitį, kuriuo ZQ kalibravimo komanda siunčiama į atmintį
- t galima išjungti skaitiklį ir rankiniu būdu siųsti naudojant app_zq_req, tai panašu į rankinį atnaujinimo siuntimą.
Daugiau informacijos rasite (Xilinx Answer 47924).
Valdiklio pridėtinės išlaidos
- Periodiniai skaitymai – žr (Xilinx atsakymas 43344) dėl detalių.
- Nekeiskite skaitymo laikotarpio
- Praleiskite periodinius skaitymus rašydami ir nurodykite praleistų skaitymų skaičių prieš tikrąjį skaitymą
- Pertvarkymas – žr (Xilinx atsakymas 34392) dėl detalių.
Vartotojo ir AXI sąsajos projektams pageidautina tai įjungti.- Pertvarkymas yra logika, kuri žiūri į priekį kelioms komandoms ir keičia vartotojo komandų tvarką, kad ne atminties komandos neužimtų tinkamo pralaidumo. Veikimas taip pat buvo susijęs su faktiniu eismo modeliu.
- Remiantis adreso šablonu, pertvarkymas padeda praleisti išankstinį įkrovimą ir suaktyvinti komandas, todėl tRCD ir tRP neužima duomenų juostos pločio.
- Pabandykite padidinti banko mašinų skaičių.
- Didžioji dalis valdiklio logikos slypi banko aparatuose ir jie atitinka DRAM bankus
- Tam tikras banko įrenginys bet kuriuo metu valdo vieną DRAM banką.
- Banko automato priskyrimas yra dinamiškas, todėl nebūtina turėti banko automatą kiekvienam fiziniam bankui.
- Banko automatus galima konfigūruoti, tačiau tai yra ploto ir našumo kompromisas.
- Leidžiamas banko automatų skaičius svyruoja nuo 2 iki 8.
- Pagal numatytuosius nustatymus 4 banko aparatai sukonfigūruojami naudojant RTL parametrus.
- Norėdami pakeisti banko mašinas, apsvarstykite parametrą nBANK_MACHS = 8, esantį memc_ui_top Ex.ample už 8 bankomatus – nBANK_MACHS = 8
Dabar žinote veiksnius, turinčius įtakos našumui.
Apsvarstykite galimybę naudoti programą, kuri suteikia 512 duomenų baitų vienam paketui ir turite juos išsaugoti skirtingose atminties vietose. Kadangi 512 duomenų baitų yra lygūs 64 DDR3 duomenų serijoms, iš naujo paleiskite example dizainas su stimulu file kuriame yra 512 įrašų, 512 skaitymų ir eilučių perjungimas kas 64 įrašus ar skaitymus:
- 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
Modeliavimo pabaigoje pamatysite, kad autobusų panaudojimas yra 77 proc.
11 pav.: 512 įrašų ir 512 skaitymų našumo statistika – 64 įrašų ar skaitymų eilučių perjungimas.
Dabar galite pritaikyti ankstesnėje dalyje įgytas žinias, kad padidintumėte efektyvumą. Su view Norėdami naudoti visus bankus, o ne keisti eilutę, pakeiskite adreso šabloną, kad pakeistumėte banką, kaip parodyta toliau.
Tai atitinka ROW_BANK_Column nustatymą MIG GUI atminties adreso susiejimo nustatyme.
- 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
Modeliavimo pabaigoje pamatysite, kad ankstesnis 77 procentų autobusų panaudojimas dabar yra 87!
Jei vis tiek reikia didesnio efektyvumo, galite rinktis didelius 1024 arba 2048 baitų paketus arba apsvarstykite galimybę atnaujinti rankiniu būdu.
Pastaba: Xilinx neskatina apeiti valdiklio atnaujinimo, nes nesame tikri, ar galėsite atitikti Jedec automatinio atnaujinimo laiką, kuris turi įtakos duomenų patikimumui.
Valdiklio pusėje galite pakeisti nBANK_MACH ir matyti našumo pagerėjimą.
Tačiau tai gali turėti įtakos jūsų projektavimo laikui, žr (Xilinx atsakymas 36505) Norėdami gauti daugiau informacijos apie nBANK_MACH
Atidarykite core_name_mig_sim.v file ir pakeiskite parametrus nBANK_MACHS iš 4 į 8 ir iš naujo paleiskite modeliavimą. Kad parametro reikšmė įsigaliotų aparatinėje įrangoje, turite atnaujinti core_name_mig.v file.
Naudojau tą patį modelį, kai gavome 87% magistralės panaudojimą (-12 pav.).
Kai nBANK_MACHS nustatyta į 8, efektyvumas dabar yra 90%.
Taip pat atkreipkite dėmesį, kad ½ ir ¼ valdiklių neigiamai veikia efektyvumą dėl jų delsos.
Pavyzdžiui,ample, kadangi komandas galime siųsti tik kas 4 CK ciklus, kartais atsiranda papildomų užpildų, kai laikomasi minimalių DRAM laiko parametrų, o tai gali sumažinti efektyvumą nuo teorinių.
Išbandykite skirtingus valdiklius, kad surastumėte tą, kuris atitinka jūsų efektyvumo reikalavimus.
Nuorodos
- Zynq-7000 AP SoC ir 7 serijos FPGA MIS v2.3 [UG586]
- Xilinx MIG sprendimų centras http://www.xilinx.com/support/answers/34243.html
Revizijos istorija
13-03-2015 – Pirminis išleidimas
Atsisiųsti PDF: Xilinx DDR2 MIG 7 našumo įvertinimo vadovas