Sprievodca odhadom výkonu Xilinx DDR2 MIG 7
Dôležitá poznámka: Toto stiahnutie záznamu odpovedí vo formáte PDF sa poskytuje na zlepšenie jeho použiteľnosti a čitateľnosti. Je dôležité poznamenať, že záznamy odpovedí sú Web-založený obsah, ktorý sa často aktualizuje, keď sú k dispozícii nové informácie. Pripomíname vám návštevu technickej podpory Xilinx Webmiesto a review (Odpoveď Xilinx 63234) pre najnovšiu verziu tejto odpovede.
Úvod
Vzhľadom na spôsob, akým sú navrhnuté pamäte DDR2 a DDR3 a ako je navrhnutý radič MIG 7, nie je výkon priamočiary.
Vyžaduje si to pochopenie rôznych parametrov časovania Jedec a architektúry radiča a na získanie odhadov budete musieť spustiť simulácie.
Všeobecný princíp určovania výkonu je rovnaký, ale tento dokument poskytuje jednoduchý spôsob dosiahnutia účinnosti pomocou MIG example dizajn s pomocou testovacej stolice a stimulu fileje tu priložené.
Efektívna šírka pásma
Dátová zbernica DRAM dosahuje takmer špičkovú šírku pásma iba počas zhlukov čítania a zápisu a jej réžia znižuje efektívnu dátovú rýchlosť.
Niekoľko examprežijné náklady sú:
- čas predbežného účtovania pri prístupe k riadkom v tej istej banke (prístupová adresa nie je v rovnakom riadku na stránke)
- čas obnovy zápisu na zmenu z prístupu zápisu na prístup na čítanie
- čas obratu zbernice na zmenu z prístupu čítania na prístup k zápisu
Efektívna šírka pásma = maximálna šírka pásma * účinnosť
MIG Design Generation
Podrobnosti o MIG IP nájdete v kapitole 586 UG1 a naprampgenerácie dizajnu.
Pred spustením simulácie výkonu MIG 7 Series urobte nasledovné, aby ste sa uistili, že vaše simulačné prostredie je v poriadku. Otvorte MIG exampnavrhnite a zmapujte príslušné knižnice, spustite simuláciu a uistite sa, že v prepise vidíte správu „test prešiel“.
Na demonštráciu toku som vygeneroval MIG IP pre xc7vx690tffg1761-2 a vyvolal exampdizajn.
Dve veci, ktoré treba poznamenať, sú bity adresy pamäte a výber mapovania adresy pamäte.
Napríkladample, v rozbaľovacej ponuke pamäťovej časti som vybral MT41J128M8XX-125.
Pre vybratú pamäťovú časť z obrázku 1 je riadok = 14, stĺpec = 10 a banka = 3, takže app_addr_width = riadok + stĺpec + banka + poradie = 28
Môžete vybrať stĺpec BANK_ROW_COLUMN alebo ROW BANK.
Opustil som stĺpec ROW BANK, čo je predvolené mapovanie adries.
Example design Simulácia so syntetizovateľnou skúšobnou stolicou
V časti Nastavenia simulácie vyberte QuestaSim/ModelSim Simulator a prejdite na umiestnenie skompilovaných knižníc.
Podrobnosti o ukazovaní na cestu inštalácie nástrojov tretích strán, výbere cieľového simulátora a kompilácii a mapovaní knižníc nájdete v (UG900) Vivado Design Suite Užívateľská príručka Logic Simulation
Spustite simuláciu cez GUI (kliknite na kartu Spustiť simuláciu v projektovom manažérovi) a uistite sa, že v prepise vidíte správu „test prešiel“.
Simulácia výkonu RTL modifikácie
- Kliknite pravým tlačidlom myši na kartu zdrojov, vyberte „pridať alebo vytvoriť zdroje simulácie“ a prejdite na stránku mig7_perfsim_traffic_generator.sv file a kliknutím na Dokončiť ho pridajte.
- Kliknite pravým tlačidlom myši na kartu zdrojov, vyberte „pridať alebo vytvoriť zdroje simulácie“, prejdite na súbor perfsim_stimulus.txt a kliknutím na tlačidlo Dokončiť ho pridajte.
- Komentujte example_top inštancia v súbore sim_tb_top.v file.
- Pridajte nižšie uvedené riadky RTL do 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;
- drôt [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- drôt [2:0] c0_ddr3_app_cmd;
- drôt c0_ddr3_app_en;
- drôt [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- drôt c0_ddr3_app_wdf_end;
- drôt [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- drôt c0_ddr3_app_wdf_wren;
- drôt [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- drôt c0_ddr3_app_rd_data_end;
- drôt c0_ddr3_app_rd_data_valid;
- drôt c0_ddr3_app_rdy;
- drôt c0_ddr3_app_wdf_rdy;
- drôt c0_data_compare_error;
- drôt ui_clk;
- drôt ui_clk_sync_rst;
- drôt app_sr_req = 0;
- drôt app_ref_req = 0;
- drôt app_zq_req =0;
- drôt c0_app_wdf_mask =0;
Inštancia radiča pamäte FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Porty pamäťového rozhrania
- .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),
// Porty aplikačného rozhrania
- .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),
// Porty systémových hodín
- .sys_clk_i (sys_clk_i),
// Referenčné porty hodín
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Inštancia generátora výkonu
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. Upravte APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH a BANK_WIDTH podľa vášho výberu pamäťovej časti.
Hodnoty je možné získať z _mig.v file. - Žlto zvýraznený názov inštancie mig_7series_0_mig sa môže počas vytvárania IP líšiť v závislosti od názvu vášho komponentu, overte si, či ste nezvolili iný názov a podľa toho ho zmeňte.
- Po vygenerovaní IP otvorte _mig.v file a krížovo skontrolujte prípadné variácie v názvoch signálov LHS a opravte ich.
- app_sr_req, app_ref_req a app_zq_req by mali byť inicializované na 0.
- Ako example_top.v je zakomentovaný a nový files pridané, pravdepodobne uvidíte „?“ vedľa
mig_7series_0_mig.v file pod simulačnými zdrojmi.
Ak chcete mapovať správne file, kliknite pravým tlačidlom myši mig_7series_0_mig.v, vyberte možnosť „Pridať zdroje“, prejdite na
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
a pridajte súbor mig_7series_0_mig_sim.v file. - Ak vidíte „?“ pre podkladové files, pridajte všetky RTL files v priečinkoch clocking, controller, ip_top,phy a UI.
- Po vykonaní zmien RTL a všetkých požadovaných files pridané do vašich zdrojov simulácie, hierarchia by mala byť podobná obrázku 5.
The files zvýraznené červenou farbou sú novo pridané a „?“ sa očakáva na moduloch súvisiacich s ECC, pretože zvolená konfigurácia pamäte má vypnutú možnosť ECC.
Stimulácia File Popis
Každý vzor stimulu má 48 bitov a formát je opísaný na obrázkoch 6-1 až 6-4.
Kódovanie adresy (Adresa [35:0])
Adresa je zakódovaná v stimule podľa obr. 7-1 až obr. 7-6. Všetky polia adresy musia byť zadané v hexadecimálnom formáte. Všetky polia adresy majú šírku, ktorá je deliteľná štyrmi, aby sa zadali v hexadecimálnom formáte. Testovacia stolica posiela len požadované bity adresového poľa do pamäťového kontroléra.
Napríkladample, v konfigurácii s ôsmimi bankami sa do ovládača pamäte posielajú iba bity banky [2:0] a zostávajúce bity sa ignorujú. Extra bity pre pole adresy sú k dispozícii na zadanie adresy v hexadecimálnom formáte.
Musíte potvrdiť, že zadaná hodnota zodpovedá šírke danej konfigurácie.
- Adresa stĺpca (stĺpec[11:0]) – Adresa stĺpca v stimule je poskytovaná na maximálne 12 bitov, ale musíte to riešiť na základe parametra šírky stĺpca nastaveného vo vašom návrhu.
- Adresa riadku (riadok[15:0]) – Adresa riadka v stimule je poskytovaná na maximálne 16 bitov, ale musíte to riešiť na základe parametra šírky riadka nastaveného vo vašom návrhu.
- Adresa banky (Banka[3:0]) – Adresa banky v stimule sa poskytuje maximálne na štyri bity, ale musíte to riešiť na základe parametra šírky banky nastaveného vo vašom návrhu.
- Adresa poradia (Rank[3:0]) – Adresa poradia v stimule sa poskytuje maximálne na štyri bity, ale musíte to riešiť na základe parametra šírky poradia nastaveného vo vašom návrhu.
Adresa sa zostaví na základe parametra MEM_ADDR_ORDER najvyššej úrovne a odošle sa do používateľského rozhrania
Opakovanie príkazu (Opakovanie príkazu [7:0])
Počet opakovaní príkazu je počet opakovaní príslušného príkazu v používateľskom rozhraní. Adresa pre každé opakovanie sa zvýši o 8. Maximálny počet opakovaní je 128.
Skúšobná stolica nekontroluje hranicu stĺpca a obtočí sa, ak sa počas prírastkov dosiahne maximálny limit stĺpca.
128 príkazov zapĺňa stránku. Pre akúkoľvek adresu stĺpca inú ako 0 počet opakovaní 128 skončí prekročením hranice stĺpca a zalomením na začiatok adresy stĺpca.
Využitie autobusov
Využitie zbernice sa vypočíta v používateľskom rozhraní s prihliadnutím na celkový počet čítaní a zápisov a použije sa nasledujúca rovnica:
- BL8 trvá štyri takty pamäte
- end_of_stimulus je čas, kedy sú vykonané všetky príkazy.
- calib_done je čas, kedy je kalibrácia hotová.
Example Vzory
Tieto exampsúbory sú založené na MEM_ADDR_ORDER nastavenom na BANK_ROW_COLUMN.
Jeden vzor čítania
00_0_2_000F_00A_1 – Tento vzor je jedno prečítanie z 10. stĺpca, 15. riadku a druhej banky.Jeden vzor zápisu
00_0_1_0040_010_0 – Tento vzor predstavuje jeden zápis do 32. stĺpca, 128. riadka a prvej banky.Jediný zápis a čítanie na rovnakú adresu
00_0_2_000F_00A_0 – Tento vzor je jediný zápis do 10. stĺpca, 15. riadku a druhej banky.
00_0_2_000F_00A_1 – Tento vzor je jedno prečítanie z 10. stĺpca, 15. riadku a druhej banky
Viacnásobné zápisy a čítania s rovnakou adresou
0A_0_0_0010_000_0 – To zodpovedá 10 zápisom s adresou začínajúcou od 0 do 80, ktoré je možné vidieť v stĺpci.
0A_0_0_0010_000_1 – To zodpovedá 10 prečítaniam s adresou začínajúcou od 0 do 80, ktoré je možné vidieť v stĺpci.
Zalomenie stránky počas zápisu
0A_0_2_000F_3F8_0 – To zodpovedá 10 zápisom s adresou stĺpca zabalenou na začiatok stránky po jednom zápise.
Simulácia generátora výkonovej premávky
V tomto bode ste skončili s MIG exampsimulácia dizajnu. To znamená, že vaše nastavenie simulácie je pripravené, vykonali ste úpravy RTL simulácie výkonu, nová hierarchia simulácie je správna a porozumeli ste vzorcom stimulov. Spustite simuláciu ešte raz so 16 zápismi a čítaniami v súbore perfsim_stimulus.txt.
Spustite všetko, počkajte, kým sa potvrdí signál init_calib_complete, a uvidíte navrhovaný počet zápisov a čítaní. Simulácia sa potom zastaví.
Keď sa zobrazí výzva na ukončenie simulácie, vyberte možnosť Nie a prejdite do okna prepisu, kde budete môcť vidieť štatistiku výkonu.
Ak vyberiete "ukončiť simuláciu" štatistika výkonnosti sa zapíše do a file pomenovaný mig_band_width_output.txt nachádzajúci sa v súbore sim_1/behave priečinok.
Exampcesta k adresáru:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Možno sa čudujete, prečo tie percentátagVyužitie zbernice je len 29. Znova spustite simuláciu s rovnakými nastaveniami IP, ale len zmenou stimulu file na 256 zápisov a 256 čítaní
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Teraz uvidíte percentátage ako 85, čo znamená, že DDR3 ponúka lepšie využitie zbernice pre dlhé sekvencie zápisov a zhlukov čítania.
Všeobecné spôsoby zlepšenia výkonu
Faktory, ktoré ovplyvňujú efektivitu, možno rozdeliť do dvoch častí:
- Špecifické pre pamäť
- Špecifické pre ovládač
Obrázok 9 vám dáva koniecview z výrazov, ktoré sú špecifické pre pamäť.
Na rozdiel od SRAM a blokových pamätí nie je výkon DDR2 alebo DDR3 len maximálnym dátovým tokom.
Závisí to od mnohých faktorov načasovania, vrátane:
- tRCD: Oneskorenie príkazu riadka (alebo oneskorenie ras to cas).
- tCAS(CL): Latencia impulzu adresy stĺpca.
- tRP: Oneskorenie prednabitia riadkov.
- tRAS: Čas aktívneho riadku (aktiváciou pre zmenu).
- tRC: Čas cyklu riadkov. tRC = tRAS + tRP
- tRAC: Oneskorenie prístupu Radom. tRAC = tRCD + tCAS
- tCWL: Cas latencia zápisu.
- tZQ: Čas kalibrácie ZQ.
- tRFC: Čas cyklu obnovenia riadkov
- tWTR: Oneskorenie zápisu do čítania. Čas posledného zápisu do príkazu Read.
- tWR: Zapíšte čas zotavenia. Posledný zápis transakcie do času predbežného nabíjania
Časovanie všetkých uvedených parametrov závisí od typu použitej pamäte a stupňa rýchlosti pamäťovej časti.
Viac podrobností o definíciách a špecifikáciách časovania nájdete v DDR2 DDR3 JEDEC alebo v údajovom liste akéhokoľvek pamäťového zariadenia.
Účinnosť závisí hlavne od spôsobu prístupu k pamäti. Rôzne vzory adries poskytujú rôzne výsledky efektívnosti.
Réžia časovania pamäte
- Čas aktivácie a čas predúčtovania pri zmene na nové banky/riadky alebo pri zmene riadkov v rovnakej banke.- Ak teda znížite zmenu riadkov, môže to odstrániť tRCD a tRP.
- Posielajte nepretržité príkazy na zápis alebo čítanie - Udržiavanie časovania tCCD.
- Minimalizujte zmenu príkazu zápis na čítanie a čítanie na zápis – čas obnovy zápisu na zmenu na prístupy na čítanie, čas obrátky zbernice na zmenu z čítania na zápis
- Nastavte správny interval obnovovania.
- DDR3 SDRAM vyžaduje cykly obnovenia v priemernom pravidelnom intervale tREFI.
- Vopred je možné vydať maximálne 8 dodatočných príkazov Obnoviť („zatiahnuť“). Toto neznižuje počet obnovení, ale maximálny interval medzi dvoma okolitými príkazmi Refresh je obmedzený na 9 × tREFI
- Využite všetky banky - Výhodný je vhodný adresovací mechanizmus.
- Riadok-Bank-Stĺpec: Pre transakciu prebiehajúcu v sekvenčnom adresnom priestore jadro automaticky otvorí rovnaký riadok v ďalšej banke zariadenia DRAM, aby pokračovala v transakcii, keď sa dosiahne koniec existujúceho riadku. Je vhodný pre aplikácie, ktoré vyžadujú strhávanie veľkých dátových paketov na sekvenčné adresy.
- Bank-Row-Stĺpec: Pri prekročení hranice riadku sa aktuálny riadok zatvorí a otvorí sa ďalší riadok v tej istej banke. MSB je adresa banky, ktorú možno použiť na prechod z rôznych bánk. Je vhodný pre kratšie, náhodnejšie transakcie do jedného bloku pamäte na určitý čas a potom skok do iného bloku (banky)
- Dĺžka prasknutia
- BL 8 je podporovaný pre DDR3 na sériách 7. BC4 má veľmi nízku účinnosť, ktorá je nižšia ako 50 %. Je to preto, že čas vykonania BC4 je rovnaký ako BL8. Údaje sú len maskované vo vnútri komponentu.
- V prípadoch, keď si neželáte zapisovať celý zhluk, možno zvážiť buď masku údajov, alebo zápis po prečítaní.
- Nastavte správny interval ZQ (len DDR3)
Regulátor vysiela príkazy na kalibráciu ZQ Short (ZQCS) aj ZQ Long (ZQCL).- Dodržiavajte štandard DDR3 Jedec
- Kalibrácia ZQ je popísaná v časti 5.5 normy JEDEC Spec JESD79-3 DDR3 SDRAM
- Kalibrácia ZQ kalibruje On Die Termination (ODT) v pravidelných intervaloch, aby sa zohľadnili odchýlky naprieč VT
- Logika je obsiahnutá v bank_common.v/vhd
- Parameter Tzqcs určuje rýchlosť, akou sa príkaz ZQ Calibration odosiela do pamäte
- Ak je možné deaktivovať počítadlo a manuálne odoslať pomocou app_zq_req, je to podobné ako pri ručnom odoslaní aktualizácie.
Podrobnosti nájdete v (odpoveď Xilinx 47924).
Režijné náklady ovládača
- Pravidelné čítanie – pozri (Odpoveď Xilinx 43344) pre podrobnosti.
- Nemeňte obdobie čítania
- Preskočte pravidelné čítania počas zápisov a zadajte počet zmeškaných čítaní pred skutočným čítaním
- Zmena objednávky – pozri (Odpoveď Xilinx 34392) pre podrobnosti.
Pre dizajny User a AXI Interface je vhodnejšie mať toto povolené.- Zmena poradia je logika, ktorá sa pozerá dopredu na niekoľko príkazov a mení poradie príkazov používateľa tak, aby príkazy, ktoré nie sú v pamäti, nezaberali platnú šírku pásma. Výkon tiež súvisí so skutočným vzorom premávky.
- Na základe vzoru adresy pomáha zmena poradia preskočiť predbežné nabíjanie a aktivovať príkazy a spôsobí, že tRCD a tRP nezaberajú šírku dátového pásma.
- Pokúste sa zvýšiť počet bankových automatov.
- Väčšina logiky radiča sa nachádza v bankových automatoch a zodpovedajú bankám DRAM
- Daný bankový automat spravuje jednu banku DRAM v akomkoľvek danom čase.
- Priradenie bankového automatu je dynamické, takže nie je potrebné mať bankový automat pre každú fyzickú banku.
- Bankové automaty možno konfigurovať, ale ide o kompromis medzi oblasťou a výkonom.
- Povolený počet bankových automatov sa pohybuje od 2 do 8.
- V predvolenom nastavení sú 4 bankové automaty nakonfigurované prostredníctvom parametrov RTL.
- Ak chcete zmeniť bankové automaty, zvážte parameter nBANK_MACHS = 8 obsiahnutý v memc_ui_top Example pre 8 Bankomatov – nBANK_MACHS = 8
Teraz ste si vedomí faktorov, ktoré ovplyvňujú výkon.
Zvážte upstream aplikáciu, ktorá vám poskytne 512 dátových bajtov na paket a musíte ich uložiť do rôznych pamäťových miest. Keďže 512 dátových bajtov sa rovná 64 dátovým zhlukom DDR3, znova spustite example dizajn s podnetom file obsahujúci 512 zápisov, 512 čítaní a prepínanie riadkov na každých 64 zápisov alebo čítaní:
- 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
Na konci simulácie uvidíte, že využitie zbernice je na 77 percent.
Obrázok 11: Štatistika výkonu pre 512 zápisov a 512 čítaní – Prepínanie riadkov pre 64 zápisov alebo čítania.
Teraz môžete použiť znalosti získané v predchádzajúcej časti na zvýšenie efektívnosti. S view ak chcete namiesto zmeny riadku využiť všetky banky, upravte vzor adresy a zmeňte banku, ako je uvedené nižšie.
Je to ekvivalentné nastaveniu ROW_BANK_Column v nastavení mapovania adresy pamäte v 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
Na konci simulácie uvidíte, že skoršie 77-percentné využitie zbernice je teraz 87!
Ak stále požadujete vyššiu efektivitu, môžete použiť veľké pakety s veľkosťou 1024 alebo 2048 bajtov alebo zvážiť manuálnu obnovu.
Poznámka: Xilinx nepodporuje obchádzanie obnovenia ovládača, pretože si nie sme istí, či budete schopní splniť časovanie automatického obnovenia Jedec, ktoré ovplyvňuje spoľahlivosť údajov.
Na strane ovládača môžete zmeniť nBANk_MACH a vidieť zlepšenie výkonu.
Môže to však ovplyvniť načasovanie vášho návrhu, pozrite si prosím (Odpoveď Xilinx 36505) podrobnosti o nBANk_MACH
Otvorte súbor core_name_mig_sim.v file a zmeňte parametre nBANK_MACHS zo 4 na 8 a znova spustite simuláciu. Aby sa hodnota parametra prejavila v hardvéri, musíte aktualizovať súbor core_name_mig.v file.
Použil som rovnaký vzor, keď sme získali 87% využitie zbernice (obrázok -12).
S nBANK_MACHS nastaveným na 8 je teraz účinnosť 90 %.
Tiež si všimnite, že ½ a ¼ regulátory negatívne ovplyvňujú účinnosť v dôsledku ich latencie.
NapríkladampPretože príkazy môžeme posielať iba každé 4 cykly CK, pri dodržiavaní minimálnych časových špecifikácií DRAM je niekedy potrebné dodatočné vyplnenie, čo môže znížiť teoretickú účinnosť.
Vyskúšajte rôzne ovládače, aby ste našli ten, ktorý vyhovuje vašim požiadavkám na efektivitu.
Referencie
- Zynq-7000 AP SoC a FPGA radu 7 MIS v2.3 [UG586]
- Centrum riešení Xilinx MIG http://www.xilinx.com/support/answers/34243.html
História revízií
13/03/2015 – Prvé vydanie
Stiahnite si PDF: Sprievodca odhadom výkonu Xilinx DDR2 MIG 7