Xilinx DDR2 MIG 7 Průvodce odhadem výkonu
Důležitá poznámka: Tento záznam ve formátu PDF ke stažení je poskytován za účelem zlepšení jeho použitelnosti a čitelnosti. Je důležité si uvědomit, že Záznamy odpovědí jsou Web– obsah, který je často aktualizován, když jsou k dispozici nové informace. Připomínáme, abyste navštívili technickou podporu Xilinx Webmísto a review (odpověď Xilinx 63234) pro nejnovější verzi této odpovědi.
Zavedení
Vzhledem k tomu, jak jsou paměti DDR2 a DDR3 navrženy a řadič řady MIG 7 navržen, není výkon přímočarý.
Vyžaduje to porozumění různým parametrům časování Jedec a architektuře regulátoru a pro získání odhadů budete muset spustit simulace.
Obecný princip pro stanovení výkonu je stejný, ale tento dokument poskytuje snadný způsob, jak dosáhnout účinnosti pomocí MIG example design s pomocí zkušební stolice a podnětu fileje připojeno zde.
Efektivní šířka pásma
Datová sběrnice DRAM dosahuje téměř špičkové šířky pásma pouze během shluků čtení a zápisu a její režie snižuje efektivní datovou rychlost.
Několik examprežijní náklady jsou:
- doba předběžného naúčtování přístupu k řádkům ve stejné bance (přístupová adresa není ve stejném řádku na stránce)
- doba obnovy zápisu pro změnu z přístupu pro zápis na přístup pro čtení
- doba obratu sběrnice pro změnu z přístupu pro čtení na přístup pro zápis
Efektivní šířka pásma = Špičková šířka pásma * Účinnost
MIG Design Generation
Podrobnosti o MIG IP najdete v kapitole 586 UG1 a exampgenerace designu.
Před spuštěním simulace výkonu MIG 7 Series proveďte následující, abyste se ujistili, že vaše simulační prostředí je v pořádku. Otevřete MIG exampNavrhněte a zmapujte příslušné knihovny, spusťte simulaci a ujistěte se, že v přepisu vidíte zprávu „test prošel“.
Pro demonstraci toku jsem vygeneroval MIG IP pro xc7vx690tffg1761-2 a vyvolal exampdesign.
Dvě věci, které je třeba poznamenat, jsou bity adresy paměti a výběr mapování adresy paměti.
Napřample, v rozbalovací nabídce paměťové části jsem vybral MT41J128M8XX-125.
Pro vybranou paměťovou část z obrázku 1 řádek = 14, sloupec = 10 a banka = 3, takže app_addr_width = řádek + sloupec + banka + pořadí = 28
Můžete vybrat sloupec BANK_ROW_COLUMN nebo ROW BANK.
Opustil jsem sloupec ROW BANK, což je výchozí mapování adresy.
Example design Simulace se syntetizovatelnou zkušební stolicí
V části Nastavení simulace vyberte QuestaSim/ModelSim Simulator a přejděte do umístění zkompilovaných knihoven.
Podrobnosti o odkazování na instalační cestu nástrojů třetích stran, výběru cílového simulátoru a kompilaci a mapování knihoven najdete v (UG900) Vivado Design Suite User Guide Logic Simulation
Spusťte simulaci přes GUI (klikněte na záložku Run Simulation ve správci projektu) a ujistěte se, že v přepisu vidíte zprávu „test prošel“.
Simulace výkonu RTL modifikace
- Klepněte pravým tlačítkem myši na kartu zdrojů, vyberte „přidat nebo vytvořit zdroje simulace“ a přejděte na stránku mig7_perfsim_traffic_generator.sv file a kliknutím na tlačítko Dokončit jej přidejte.
- Klepněte pravým tlačítkem myši na kartu zdrojů, vyberte „přidat nebo vytvořit zdroje simulace“, přejděte na soubor perfsim_stimulus.txt a kliknutím na tlačítko Dokončit jej přidejte.
- Okomentujte example_top instance v souboru sim_tb_top.v file.
- Přidejte níže uvedené řádky RTL k 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;
Instanciace řadiče paměti FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Porty paměťového rozhraní
- .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 rozhraní
- .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 hodin
- .sys_clk_i (sys_clk_i),
// Referenční porty hodin
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Konkretizace generátoru 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 podle vašeho výběru paměťové části.
Hodnoty lze získat z _mig.v file. - Žlutě zvýrazněný název instance mig_7series_0_mig se může během vytváření IP lišit v závislosti na názvu vaší komponenty, ověřte, zda jste nezvolili jiný název, a podle toho jej změňte.
- Po vygenerování IP otevřete _mig.v file a křížově zkontrolujte případné odchylky v názvech signálů LHS a opravte je.
- app_sr_req, app_ref_req a app_zq_req by měly být inicializovány na 0.
- Jako example_top.v je komentovaný a nový files jsou přidány, pravděpodobně uvidíte „?“ vedle
mig_7series_0_mig.v file pod simulačními zdroji.
Chcete-li mapovat správné file, klikněte pravým tlačítkem na mig_7series_0_mig.v, vyberte „Přidat zdroje“, Procházet
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
a přidejte soubor mig_7series_0_mig_sim.v file. - Pokud vidíte „?“ pro podkladové files, přidejte všechny RTL files ve složkách clocking, controller, ip_top,phy a UI.
- Jakmile jsou provedeny změny RTL a vše potřebné files jsou přidány do vašich zdrojů simulace, Hierarchie by měla být podobná jako na obrázku 5.
The files červeně zvýrazněná jsou nově přidána a „?“ se očekává u modulů souvisejících s ECC, protože vybraná konfigurace paměti má možnost ECC deaktivovanou.
Podnět File Popis
Každý vzor stimulu má 48 bitů a formát je popsán na obrázcích 6-1 až 6-4.
Kódování adresy (adresa [35:0])
Adresa je zakódována ve stimulu podle obrázku 7-1 až obrázku 7-6. Všechna pole adresy musí být zadána v hexadecimálním formátu. Všechna pole adresy mají šířku, která je dělitelná čtyřmi pro zadání v hexadecimálním formátu. Testovací zařízení pouze posílá požadované bity adresního pole do řadiče paměti.
Napřample, v konfiguraci s osmi bankami jsou do řadiče paměti odesílány pouze bity bank [2:0] a zbývající bity jsou ignorovány. Extra bity pro pole adresy jsou k dispozici pro zadání adresy v hexadecimálním formátu.
Musíte potvrdit, že zadaná hodnota odpovídá šířce dané konfigurace.
- Adresa sloupce (sloupec[11:0]) – Adresa sloupce ve stimulu je poskytována na maximálně 12 bitů, ale musíte to řešit na základě parametru šířky sloupce nastaveného ve vašem návrhu.
- Adresa řádku (Řádek[15:0]) – Adresa řádku ve stimulu je poskytována na maximálně 16 bitů, ale musíte to řešit na základě parametru šířky řádku nastaveného ve vašem návrhu.
- Adresa banky (Banka[3:0]) – Adresa banky ve stimulu je poskytována na maximálně čtyři bity, ale musíte ji řešit na základě parametru šířky banky nastaveného ve vašem návrhu.
- Adresa pozice (Rank[3:0]) – Pořadová adresa ve stimulu je poskytována maximálně na čtyři bity, ale musíte ji řešit na základě parametru šířky pořadí nastaveného ve vašem návrhu.
Adresa je sestavena na základě parametru MEM_ADDR_ORDER nejvyšší úrovně a odeslána do uživatelského rozhraní
Opakování příkazu (Opakování příkazu [7:0])
Počet opakování příkazu je počet opakování příslušného příkazu v uživatelském rozhraní. Adresa pro každé opakování se zvýší o 8. Maximální počet opakování je 128.
Zkušební zařízení nekontroluje hranici sloupce a pokud je během přírůstků dosaženo maximálního limitu sloupce, obtáčí se kolem.
128 příkazů zaplňuje stránku. Pro jakoukoli adresu sloupce jinou než 0 počet opakování 128 skončí překročením hranice sloupce a obtékáním na začátek adresy sloupce.
Využití autobusu
Využití sběrnice se vypočítá v uživatelském rozhraní s ohledem na celkový počet čtení a zápisů a použije se následující rovnice:
- BL8 trvá čtyři cykly paměti
- end_of_stimulus je čas, kdy jsou provedeny všechny příkazy.
- calib_done je čas, kdy je kalibrace hotová.
Example Vzory
Tyto exampsoubory jsou založeny na MEM_ADDR_ORDER nastaveném na BANK_ROW_COLUMN.
Jeden vzor čtení
00_0_2_000F_00A_1 – Tento vzor je jedno čtení z 10. sloupce, 15. řádku a druhé banky.Single Write Pattern
00_0_1_0040_010_0 – Tento vzor je jediný zápis do 32. sloupce, 128. řádku a první banky.Jediný zápis a čtení na stejnou adresu
00_0_2_000F_00A_0 – Tento vzor je jediný zápis do 10. sloupce, 15. řádku a druhé banky.
00_0_2_000F_00A_1 – Tento vzor je jedním čtením z 10. sloupce, 15. řádku a druhé banky
Více zápisů a čtení se stejnou adresou
0A_0_0_0010_000_0 – To odpovídá 10 zápisům s adresou začínající od 0 do 80, kterou lze vidět ve sloupci.
0A_0_0_0010_000_1 – To odpovídá 10 čtením s adresou začínající od 0 do 80, která je vidět ve sloupci.
Zalomení stránky během zápisu
0A_0_2_000F_3F8_0 – To odpovídá 10 zápisům s adresou sloupce zabalenou na začátek stránky po jednom zápisu.
Simulace generátoru výkonu
V tomto okamžiku jste hotovi s MIG exampsimulace designu. To znamená, že vaše nastavení simulace je připraveno, provedli jste úpravy RTL simulace výkonu, nová hierarchie simulace je správná a porozuměli jste vzorcům stimulů. Spusťte simulaci ještě jednou s 16 zápisy a čteními v souboru perfsim_stimulus.txt.
Spusťte vše, počkejte, až bude potvrzen signál init_calib_complete, a uvidíte navrhovaný počet zápisů a čtení. Poté se simulace zastaví.
Když budete vyzváni k ukončení simulace, vyberte Ne a přejděte do okna přepisu, kde budete moci vidět statistiky výkonu.
Pokud vyberete "ukončit simulaci" statistiky výkonu budou zapsány do a file jmenoval mig_band_width_output.txt umístěný v souboru sim_1/behave složku.
Exampcesta k adresáři:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Možná se divíte, proč ta procentatagVyužití sběrnice je pouze 29. Spusťte znovu simulaci se stejným nastavením IP, ale pouze se změnou stimulu file na 256 zápisů a 256 čtení
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Nyní uvidíte procentatage jako 85, což znamená, že DDR3 nabízí lepší využití sběrnice pro dlouhé sekvence shluků zápisů a čtení.
Obecné způsoby, jak zlepšit výkon
Faktory, které ovlivňují efektivitu, lze rozdělit do dvou částí:
- Specifické pro paměť
- Specifické pro ovladač
Obrázek 9 vám dává přeskokview termínů, které jsou specifické pro paměť.
Na rozdíl od SRAM a blokových pamětí DDR2 nebo DDR3 není výkon pouze maximální přenosová rychlost.
Závisí to na mnoha faktorech načasování, včetně:
- tRCD: Zpoždění příkazu řádku (nebo zpoždění ras to cas).
- tCAS(CL): Latence stroboskopické adresy sloupce.
- tRP: Zpoždění přednabíjení řádku.
- tRAS: Čas aktivního řádku (aktivací pro předběžnou změnu).
- tRC: Doba cyklu řádku. tRC = tRAS + tRP
- tRAC: Zpoždění přístupu Radom. tRAC = tRCD + tCAS
- tCWL: Cas latence zápisu.
- tZQ: Čas kalibrace ZQ.
- tRFC: Doba cyklu obnovení řádku
- tWTR: Zpoždění zápisu do čtení. Poslední transakce zápisu do času příkazu Read.
- tWR: Zapište čas zotavení. Poslední zápis transakce do času předběžného nabití
Časování všech uvedených parametrů závisí na typu použité paměti a stupni rychlosti části paměti.
Další podrobnosti o definicích a specifikacích časování lze nalézt v DDR2 DDR3 JEDEC nebo v datovém listu libovolného paměťového zařízení.
Efektivita závisí především na způsobu přístupu k paměti. Různé vzory adres poskytují různé výsledky účinnosti.
Režie časování paměti
- Doba aktivace a doba předběžného nabití při změně na nové banky/řádky nebo při změně řádků ve stejné bance.- Pokud tedy snížíte změnu řádku, může to odstranit tRCD a tRP.
- Odesílejte kontinuální příkazy pro zápis nebo čtení - Zachování časování tCCD.
- Minimalizujte změnu příkazů zápisu na čtení a čtení na zápis – doba obnovení zápisu pro změnu na přístupy pro čtení, doba obratu sběrnice pro změnu ze čtení na zápis
- Nastavte správný interval obnovy.
- DDR3 SDRAM vyžaduje cykly obnovy v průměrném pravidelném intervalu tREFI.
- Předem lze vydat maximálně 8 dodatečných povelů Obnovit („zatáhnout“). Tím se nesníží počet obnovení, ale maximální interval mezi dvěma okolními příkazy Refresh je omezen na 9 × tREFI
- Využijte všechny banky – Výhodný je vhodný adresovací mechanismus.
- Řádek-Bank-Sloupec: Pro transakci probíhající v sekvenčním adresovém prostoru jádro automaticky otevře stejný řádek v další bance zařízení DRAM, aby pokračovalo v transakci, když je dosaženo konce existujícího řádku. Dobře se hodí pro aplikace, které vyžadují shlukování velkých datových paketů do sekvenčních adres.
- Bank-Row-Column: Při překročení hranice řádku bude aktuální řádek uzavřen a další řádek bude otevřen ve stejné bance. MSB je adresa banky, kterou lze použít k přechodu z různých bank. Je vhodný pro kratší, náhodnější transakce do jednoho bloku paměti po určitou dobu a poté skok do jiného bloku (banky)
- Délka prasknutí
- BL 8 je podporován pro DDR3 na řadě 7. BC4 má velmi nízkou účinnost, která je nižší než 50 %. Je to proto, že doba provedení BC4 je stejná jako BL8. Data jsou uvnitř komponenty pouze maskována.
- V případech, kdy si nepřejete zapisovat full burst, lze zvážit buď datovou masku, nebo zápis po čtení.
- Nastavte správný interval ZQ (pouze DDR3)
Ovladač posílá jak kalibrační příkazy ZQ Short (ZQCS), tak ZQ Long (ZQCL).- Dodržujte DDR3 Jedec Standard
- Kalibrace ZQ je popsána v části 5.5 normy JEDEC Spec JESD79-3 DDR3 SDRAM
- Kalibrace ZQ kalibruje On Die Termination (ODT) v pravidelných intervalech, aby zohlednila odchylky napříč VT
- Logika je obsažena v souboru bank_common.v/vhd
- Parametr Tzqcs určuje rychlost, jakou je příkaz ZQ Calibration posílán do paměti
- Je možné deaktivovat počítadlo a ručně odeslat pomocí app_zq_req, je to podobné ručnímu odeslání Refresh.
Podrobnosti viz (odpověď Xilinx 47924).
Režie ovladače
- Pravidelné čtení – viz (Xilinx odpověď 43344) pro podrobnosti.
- Neměňte periodu čtení
- Přeskočte periodická čtení během zápisů a zadejte počet zmeškaných čtení před skutečným čtením
- Změna objednávky – viz (Xilinx odpověď 34392) pro podrobnosti.
U návrhů User a AXI Interface je vhodnější mít toto povoleno.- Změna pořadí je logika, která se dívá dopředu na několik příkazů a mění pořadí uživatelských příkazů tak, aby příkazy, které nejsou v paměti, nezabíraly platnou šířku pásma. Výkon také souvisí se skutečným vzorem provozu.
- Na základě vzoru adresy pomáhá změna pořadí přeskočit předběžné nabíjení a aktivovat příkazy a způsobí, že tRCD a tRP nezabírají šířku datového pásma.
- Pokuste se zvýšit počet bankovních automatů.
- Většina logiky řadiče se nachází v bankách a ty odpovídají bankám DRAM
- Daný bankovní stroj spravuje jednu banku DRAM v libovolném okamžiku.
- Přiřazení bankovního automatu je dynamické, takže není nutné mít bankovní automat pro každou fyzickou banku.
- Bankovní automaty lze konfigurovat, ale jde o kompromis mezi oblastí a výkonem.
- Povolený počet bankovních automatů se pohybuje v rozmezí 2–8.
- Ve výchozím nastavení jsou pomocí parametrů RTL nakonfigurovány 4 bankovní stroje.
- Chcete-li změnit bankovní automaty, zvažte parametr nBANK_MACHS = 8 obsažený v memc_ui_top Example pro 8 bankovních automatů – nBANK_MACHS = 8
Nyní jste si vědomi faktorů, které ovlivňují výkon.
Zvažte upstreamovou aplikaci, která vám poskytne 512 datových bajtů na paket a budete je muset uložit do různých paměťových míst. Protože 512 datových bytů se rovná 64 datovým shlukům DDR3, spusťte znovu example design s podnětem file obsahující 512 zápisů, 512 čtení a přepínání řádků na každých 64 zápisů nebo čtení:
- 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 simulace uvidíte, že využití sběrnice je na 77 procentech.
Obrázek 11: Statistika výkonu pro 512 zápisů a 512 čtení – Přepínání řádků pro 64 zápisů nebo čtení.
Nyní můžete použít znalosti získané v předchozí části ke zvýšení efektivity. S a view Chcete-li místo změny řádku využít všechny banky, upravte vzor adresy a změňte banku, jak je uvedeno níže.
To je ekvivalentní nastavení ROW_BANK_Column v nastavení mapování adres paměti 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 simulace uvidíte, že dřívější 77procentní využití sběrnice je nyní 87!
Pokud stále požadujete vyšší efektivitu, můžete použít velké pakety o velikosti 1024 nebo 2048 bajtů nebo zvážit ruční aktualizaci.
Poznámka: Xilinx nepodporuje obcházení obnovy řadiče, protože si nejsme jisti, zda budete schopni splnit časování automatického obnovování Jedec, které ovlivňuje spolehlivost dat.
Na straně ovladače můžete změnit nBANk_MACH a vidět zlepšení výkonu.
To však může ovlivnit načasování vašeho návrhu, viz (Xilinx odpověď 36505) podrobnosti o nBANk_MACH
Otevřete soubor core_name_mig_sim.v file a změňte parametry nBANK_MACHS ze 4 na 8 a znovu spusťte simulaci. Aby se hodnota parametru projevila v hardwaru, musíte aktualizovat soubor core_name_mig.v file.
Použil jsem stejný vzor, kde jsme získali 87% využití sběrnice (obrázek -12).
S nBANK_MACHS nastaveným na 8 je nyní účinnost 90 %.
Všimněte si také, že regulátory ½ a ¼ negativně ovlivňují účinnost kvůli jejich latenci.
Napřample, protože můžeme posílat příkazy pouze každé 4 cykly CK, někdy je při dodržení minimálních časových specifikací DRAM vyžadováno dodatečné vyplnění, což může snížit účinnost z teoretického hlediska.
Vyzkoušejte různé ovladače a najděte ten, který vyhovuje vašim požadavkům na efektivitu.
Reference
- Zynq-7000 AP SoC a FPGA řady 7 MIS v2.3 [UG586]
- Centrum řešení Xilinx MIG http://www.xilinx.com/support/answers/34243.html
Historie revizí
13/03/2015 – První vydání
Stáhnout PDF: Xilinx DDR2 MIG 7 Průvodce odhadem výkonu