Xilinx DDR2 MIG 7 Prestatieschattingsgids
Belangrijke opmerking: Deze downloadbare pdf van een antwoordrecord wordt verstrekt om de bruikbaarheid en leesbaarheid te vergroten. Het is belangrijk op te merken dat Answer Records dat wel zijn Web-gebaseerde inhoud die regelmatig wordt bijgewerkt zodra er nieuwe informatie beschikbaar komt. U wordt eraan herinnerd om de technische ondersteuning van Xilinx te bezoeken Website en opnieuwview (Xilinx Answer 63234) voor de nieuwste versie van dit antwoord.
Invoering
Vanwege de manier waarop DDR2- en DDR3-geheugens zijn ontworpen en de controller uit de MIG 7-serie is ontworpen, zijn de prestaties niet eenvoudig.
Het vereist kennis van verschillende Jedec Timing-parameters en controllerarchitectuur, en u moet simulaties uitvoeren om de schattingen te krijgen.
Het algemene principe voor het bepalen van de prestaties is hetzelfde, maar dit document biedt een eenvoudige manier om efficiëntie te verkrijgen met behulp van de MIG example ontwerp met behulp van testbank en stimulus fileis hier bijgevoegd.
Effectieve bandbreedte
De DRAM-databus bereikt alleen bijna-piekbandbreedte tijdens uitbarstingen van lezen en schrijven en zijn overhead verlaagt de effectieve gegevenssnelheid.
Een paar exampminder overhead zijn:
- voorlaadtijd voor toegang tot rijen in dezelfde bank (toegangsadres niet in dezelfde rij-paginahit)
- schrijfhersteltijd om te veranderen van schrijf- naar leestoegang
- de doorlooptijd van de bus om te veranderen van lees- naar schrijftoegang
Effectieve bandbreedte = piekbandbreedte * efficiëntie
MIG Design Generatie
Raadpleeg UG586 Hoofdstuk 1 voor stapsgewijze details over MIG IP en bijvample ontwerp generatie.
Voordat u de prestatiesimulatie van de MIG 7-serie uitvoert, moet u het volgende doen om ervoor te zorgen dat uw simulatieomgeving in orde is. Open de MIG example ontwerp en wijs de juiste bibliotheken toe, voer de simulatie uit en zorg ervoor dat u het bericht "test geslaagd" in het transcript kunt zien.
Om de stroom te demonstreren heb ik een MIG IP gegenereerd voor xc7vx690tffg1761-2 en de ex aangeroepenampontwerp.
Twee dingen die moeten worden opgemerkt, zijn geheugenadresbits en selectie van geheugenadrestoewijzing.
Bijvoorbeeldample, ik heb MT41J128M8XX-125 geselecteerd onder de vervolgkeuzemenu's van het geheugengedeelte.
Voor het geselecteerde geheugengedeelte uit figuur 1, rij = 14, kolom = 10 en bank = 3, dus app_addr_width = rij + kolom + bank + rang = 28
U kunt BANK_ROW_COLUMN of ROW BANK Kolom selecteren.
Ik heb de ROW BANK-kolom verlaten, wat de standaardadrestoewijzing is.
Example design Simulatie met synthetiseerbare testbank
Selecteer onder Simulatie-instellingen QuestaSim/ModelSim Simulator en blader naar de locatie van de gecompileerde bibliotheken.
Voor meer informatie over het verwijzen naar een installatiepad van tools van derden, het selecteren van de doelsimulator en het compileren en toewijzen van bibliotheken, kunt u de (UG900) Vivado Design Suite Gebruikershandleiding Logic Simulation raadplegen
Voer de simulatie uit via de GUI (klik op het tabblad Simulatie uitvoeren in projectmanager) en zorg ervoor dat u het bericht "test geslaagd" in het transcript ziet.
Performance Simulation RTL-aanpassingen
- Klik met de rechtermuisknop op het tabblad Bronnen, selecteer "simulatiebronnen toevoegen of maken" en blader naar mig7_perfsim_traffic_generator.sv file en klik op Voltooien om het toe te voegen.
- Klik met de rechtermuisknop op het tabblad Bronnen, selecteer "Simulatiebronnen toevoegen of maken", blader naar perfsim_stimulus.txt en klik op Voltooien om het toe te voegen.
- Reageer op de example_top instantiëring in de sim_tb_top.v file.
- Voeg de onderstaande RTL-regels toe aan sim_tb_top,v
- lokale parameter APP_ADDR_WIDTH = 28;
- lokale parameter APP_DATA_WIDTH = 64;
- lokale parameter APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
- localparam MEM_ADDR_ORDER = "BANK_ROW_COLUMN";
- lokale parameter BANK_WIDTH = 3;
- lokale parameter RANK_WIDTH = 1;
- draad [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- draad [2:0] c0_ddr3_app_cmd;
- draad c0_ddr3_app_en;
- draad [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- draad c0_ddr3_app_wdf_end;
- draad [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- draad c0_ddr3_app_wdf_wren;
- draad [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- draad c0_ddr3_app_rd_data_end;
- draad c0_ddr3_app_rd_data_valid;
- draad c0_ddr3_app_rdy;
- draad c0_ddr3_app_wdf_rdy;
- draad c0_data_compare_error;
- draad ui_clk;
- draad ui_clk_sync_rst;
- draad app_sr_req = 0;
- draad app_ref_req = 0;
- draad app_zq_req =0;
- draad c0_app_wdf_mask =0;
Instantiëring van FPGA Memory Controller
mig_7series_0_mig u_mig_7series_0_mig (
// Geheugeninterfacepoorten
- .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),
// Applicatie-interfacepoorten
- .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_actief (app_sr_actief),
- .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),
// Systeemklokpoorten
- .sys_clk_i (sys_clk_i),
// Referentieklokpoorten
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Instantie van prestatieverkeersgenerator
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_verkeer_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. Pas APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH en BANK_WIDTH aan volgens uw selectie van geheugenonderdelen.
Waarden zijn verkrijgbaar bij de _mig.v file. - De geel gemarkeerde instantienaam mig_7series_0_mig kan variëren op basis van uw componentnaam tijdens het maken van het IP-adres. Controleer of u een andere naam hebt gekozen en wijzig deze dienovereenkomstig.
- Zodra het IP-adres is gegenereerd, opent u het _mig.v file en controleer op eventuele variaties in LHS-signaalnamen en corrigeer deze.
- app_sr_req, app_ref_req en app_zq_req moeten worden geïnitialiseerd op 0.
- Als example_top.v is becommentarieerd en nieuw files zijn toegevoegd, ziet u waarschijnlijk "?" naast de
mig_7series_0_mig.v file onder simulatiebronnen.
Om het juiste in kaart te brengen file, klik met de rechtermuisknop op mig_7series_0_mig.v, selecteer "Bronnen toevoegen", Blader naar
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
en voeg de mig_7series_0_mig_sim.v toe file. - Als je het ziet "?" voor de onderliggende files, voeg alle RTL toe files in de mappen Clocking, Controller, ip_top,phy en UI.
- Zodra de RTL-wijzigingen zijn voltooid en alle vereiste files worden toegevoegd aan uw simulatiebronnen, moet de hiërarchie vergelijkbaar zijn met afbeelding 5.
De files gemarkeerd in rood zijn nieuw toegevoegd, en "?" wordt verwacht op ECC-gerelateerde modules aangezien de geselecteerde geheugenconfiguratie de ECC-optie heeft uitgeschakeld.
Prikkel File Beschrijving
Elk stimuluspatroon is 48 bits en het formaat wordt beschreven in de figuren 6 tot en met 1.
Adrescodering (adres [35:0])
Het adres is gecodeerd in de stimulus volgens Afbeelding 7-1 tot Afbeelding 7-6. Alle adresvelden moeten in hexadecimaal formaat worden ingevoerd. Alle adresvelden hebben een breedte die deelbaar is door vier om in hexadecimaal formaat in te voeren. De testbank stuurt alleen de benodigde bits van een adresveld naar de Memory Controller.
BijvoorbeeldampZo worden in een configuratie met acht banken alleen bankbits [2:0] naar de geheugencontroller gestuurd en worden de overige bits genegeerd. De extra bits voor een adresveld zijn bedoeld om het adres in hexadecimaal formaat in te voeren.
U moet bevestigen dat de ingevoerde waarde overeenkomt met de breedte van een bepaalde configuratie.
- Kolomadres (kolom[11:0]) – Kolomadres in de stimulus wordt geleverd tot een maximum van 12 bits, maar u moet dit adresseren op basis van de kolombreedteparameter die in uw ontwerp is ingesteld.
- Rijadres (Rij[15:0]) – Het rijadres in de stimulus wordt geleverd tot een maximum van 16 bits, maar u moet dit adresseren op basis van de rijbreedteparameter die is ingesteld in uw ontwerp.
- Bankadres (Bank[3:0]) – Het bankadres in de stimulus wordt geleverd tot een maximum van vier bits, maar u moet dit adresseren op basis van de bankbreedteparameter die in uw ontwerp is ingesteld.
- Rang Adres (Rang [3:0]) – Het rangadres in de stimulus wordt geleverd tot een maximum van vier bits, maar u moet dit adresseren op basis van de rangbreedteparameter die in uw ontwerp is ingesteld.
Het adres wordt samengesteld op basis van de parameter MEM_ADDR_ORDER op het hoogste niveau en naar de gebruikersinterface verzonden
Opdracht herhalen (Opdracht herhalen [7:0])
Het aantal herhalingen van opdrachten is het aantal keren dat de betreffende opdracht wordt herhaald op de gebruikersinterface. Het adres voor elke herhaling wordt verhoogd met 8. Het maximale aantal herhalingen is 128.
De testbank controleert niet op de kolomgrens en wikkelt zich om als de maximale kolomlimiet wordt bereikt tijdens de verhogingen.
De 128 opdrachten vullen de pagina. Voor elk ander kolomadres dan 0 eindigt het aantal herhalingen van 128 bij het overschrijden van de kolomgrens en het omwikkelen naar het begin van het kolomadres.
Busgebruik
Het busgebruik wordt berekend op de gebruikersinterface, rekening houdend met het totale aantal lees- en schrijfbewerkingen en de volgende vergelijking wordt gebruikt:
- BL8 duurt vier geheugenklokcycli
- end_of_stimulus is het tijdstip waarop alle opdrachten zijn uitgevoerd.
- calib_done is het tijdstip waarop de kalibratie is voltooid.
Example Patronen
Deze exampbestanden zijn gebaseerd op de MEM_ADDR_ORDER ingesteld op BANK_ROW_COLUMN.
Enkel leespatroon
00_0_2_000F_00A_1 - Dit patroon is een enkele lezing van de 10e kolom, de 15e rij en de tweede bank.Enkel schrijfpatroon
00_0_1_0040_010_0 – Dit patroon is een enkele schrijfbewerking naar de 32e kolom, 128e rij en eerste bank.Single schrijven en lezen naar hetzelfde adres
00_0_2_000F_00A_0 – Dit patroon is een enkele schrijfbewerking naar de 10e kolom, de 15e rij en de tweede bank.
00_0_2_000F_00A_1 – Dit patroon is een enkele lezing van de 10e kolom, de 15e rij en de tweede bank
Meerdere schrijf- en leesbewerkingen met hetzelfde adres
0A_0_0_0010_000_0 – Dit komt overeen met 10 schrijfbewerkingen met een adres beginnend van 0 tot 80, wat te zien is in de kolom.
0A_0_0_0010_000_1 – Dit komt overeen met 10 reads met een adres beginnend van 0 tot 80, wat te zien is in de kolom.
Paginaomslag tijdens schrijven
0A_0_2_000F_3F8_0 – Dit komt overeen met 10 schrijfbewerkingen waarbij het kolomadres na één schrijfbewerking naar het begin van de pagina is gewikkeld.
Simuleren van de Performance Traffic Generator
Op dit punt bent u klaar met MIG example ontwerpsimulatie. Dit houdt in dat uw simulatie-opstelling gereed is, dat u RTL-aanpassingen voor de prestatiesimulatie heeft uitgevoerd, dat de nieuwe simulatiehiërarchie correct is en dat u de stimuluspatronen hebt begrepen. Voer de simulatie nogmaals uit met 16 schrijf- en leesbewerkingen in perfsim_stimulus.txt.
Voer alles uit, wacht tot het init_calib_complete-signaal wordt bevestigd en u het voorgestelde aantal schrijf- en leesbewerkingen kunt zien. De simulatie stopt dan.
Wanneer u wordt gevraagd om de simulatie af te sluiten, selecteert u Nee en gaat u naar het transcriptvenster waar u de prestatiestatistieken kunt zien.
Als u selecteert "stop simulatie" prestatiestatistieken worden weggeschreven naar a file genoemd mig_band_width_output.txt in de sim_1/behave map.
Example directory pad: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/gedrag
Je vraagt je misschien af waarom het percentagetagHet busgebruik is slechts 29. Voer de simulatie opnieuw uit met dezelfde IP-instellingen, maar verander alleen de stimulus file tot 256 schrijft en 256 leest
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Je ziet nu het percentagetage als 85, wat impliceert dat DDR3 een beter busgebruik biedt voor lange reeksen schrijf- en leesbursts.
Algemene manieren om de prestaties te verbeteren
De factoren die de efficiëntie beïnvloeden, kunnen in twee secties worden verdeeld:
- Geheugen Specifiek
- Controllerspecifiek
Figuur 9 geeft je een overview van de termen die geheugenspecifiek zijn.
In tegenstelling tot SRAM's en Block Memories zijn DDR2- of DDR3-prestaties niet alleen de maximale gegevenssnelheid.
Het hangt af van veel timingfactoren, waaronder:
- tRCD: Rijopdrachtvertraging (of ras naar cas-vertraging).
- tCAS(CL): Kolomadres stroboscooplatentie.
- tRP: Rij voorlaadvertraging.
- tRAS: Actieve rijtijd (activeren om vooraf te wijzigen).
- TRC: Rij cyclus tijd. tRC = tRAS + tRP
- tRAC: Radom-toegangsvertraging. tRAC = tRCD + tCAS
- tCWL: Cas schrijf latentie.
- tZQ: ZQ-kalibratietijd.
- tRFC: Cyclustijd rij vernieuwen
- tWTR: Schrijven naar leesvertraging. Laatste schrijftransactie naar leesopdrachttijd.
- tWR: Schrijf hersteltijd. Laatste schrijftransactie naar Voorlaadtijd
De timing van alle vermelde parameters is afhankelijk van het type geheugen dat wordt gebruikt en de snelheidsgraad van het geheugenonderdeel.
Meer details over de definities en timingspecificaties zijn te vinden in DDR2 DDR3 JEDEC of in een datasheet van een geheugenapparaat.
Efficiëntie hangt voornamelijk af van de manier waarop toegang tot het geheugen wordt verkregen. Verschillende adrespatronen geven verschillende efficiëntieresultaten.
Overheadkosten voor geheugentiming
- Activeringstijd en voorlaadtijd bij het overschakelen naar nieuwe banken/rijen of het wisselen van rijen binnen dezelfde bank.- Dus als u het aantal rijen verkleint, kan dit tRCD en tRP verwijderen.
- Stuur continue schrijf- of leescommando's - Behoud van tCCD-timing.
- Minimaliseer de omschakeling van schrijf-naar-lees- en lees-naar-schrijfcommando's - Schrijfhersteltijd om over te schakelen naar leestoegangen, busdoorlooptijd om over te schakelen van lezen naar schrijven
- Stel een goed vernieuwingsinterval in.
- DDR3 SDRAM vereist vernieuwingscycli met een gemiddeld periodiek interval van tREFI.
- Er kunnen maximaal 8 aanvullende Refresh-commando's vooraf worden gegeven ("pulled in"). Dit vermindert het aantal verversingen niet, maar het maximale interval tussen twee omliggende verversingsopdrachten is beperkt tot 9 × tREFI
- Gebruik alle banken - Een geschikt adresseringsmechanisme verdient de voorkeur.
- Rij-bank-kolom: Voor een transactie die plaatsvindt over een sequentiële adresruimte, opent de kern automatisch dezelfde rij in de volgende bank van het DRAM-apparaat om de transactie voort te zetten wanneer het einde van een bestaande rij is bereikt. Het is zeer geschikt voor toepassingen die het bursten van grote datapakketten naar opeenvolgende adreslocaties vereisen.
- Bank-rij-kolom: Bij het overschrijden van een rijgrens wordt de huidige rij gesloten en wordt een andere rij binnen dezelfde bank geopend. MSB is een bankadres, waarmee u kunt overstappen van verschillende banken. Het is geschikt voor kortere, meer willekeurige transacties naar een blok geheugen voor een bepaalde tijd en dan een sprong naar een ander blok (bank)
- Burstlengte
- BL 8 wordt ondersteund voor DDR3 op 7-serie. BC4 heeft een zeer laag rendement van minder dan 50%. Dit komt doordat de uitvoeringstijd van BC4 gelijk is aan die van BL8. De gegevens zijn gewoon gemaskeerd in de component.
- In gevallen waarin u niet full burst wilt schrijven, kan datamasker of schrijven-na-lezen worden overwogen.
- Stel een juist ZQ-interval in (alleen DDR3)
De controller verzendt zowel ZQ Short (ZQCS) als ZQ Long (ZQCL) kalibratiecommando's.- Houd u aan de DDR3 Jedec-standaard
- ZQ-kalibratie wordt besproken in sectie 5.5 van de JEDEC Spec JESD79-3 DDR3 SDRAM-standaard
- ZQ-kalibratie kalibreert On Die Termination (ODT) met regelmatige tussenpozen om rekening te houden met variaties in VT
- Logica is opgenomen in bank_common.v/vhd
- De parameter Tzqcs bepaalt de snelheid waarmee een ZQ-kalibratieopdracht naar het geheugen wordt verzonden
- Het is mogelijk om de teller uit te schakelen en handmatig te verzenden met app_zq_req, het is vergelijkbaar met het handmatig verzenden van een Refresh.
Raadpleeg (Xilinx Answer 47924) voor details.
Controller overheadkosten
- Periodieke lezingen - verwijzen naar (Xilinx Antwoord 43344) voor meer informatie.
- Wijzig de leesperiode niet
- Sla periodieke leesbewerkingen tijdens het schrijven over en geef het aantal gemiste leesbewerkingen op vóór een echte leesbewerking
- Opnieuw bestellen - Verwijzen (Xilinx Antwoord 34392) voor meer informatie.
Voor gebruikers- en AXI-interfaceontwerpen verdient het de voorkeur om dit ingeschakeld te hebben.- Opnieuw ordenen is de logica die verschillende commando's vooruitkijkt en de volgorde van gebruikerscommando's verandert om ervoor te zorgen dat niet-geheugencommando's geen geldige bandbreedte innemen. De prestatie had ook betrekking op het daadwerkelijke verkeerspatroon.
- Op basis van het adrespatroon helpt herordenen om vooraf opladen over te slaan en commando's te activeren en ervoor te zorgen dat tRCD en tRP geen gegevensbandbreedte innemen.
- Probeer het aantal bankautomaten te vergroten.
- De meeste logica van de controller bevindt zich in de bankmachines en ze komen overeen met DRAM-banken
- Een bepaalde bankautomaat beheert op elk moment een enkele DRAM-bank.
- De toewijzing van bankautomaten is dynamisch, dus het is niet nodig om voor elke fysieke bank een bankautomaat te hebben.
- Bankautomaten kunnen worden geconfigureerd, maar het is een afweging tussen oppervlakte en prestatie.
- Het toegestane aantal bankmachines varieert van 2-8.
- Standaard worden 4 bankmachines geconfigureerd via RTL-parameters.
- Overweeg de parameter nBANK_MACHS = 8 in memc_ui_top Ex om van bankmachine te veranderenample voor 8 bankautomaten – nBANK_MACHS = 8
U bent zich nu bewust van de factoren die de prestaties beïnvloeden.
Overweeg een upstream-toepassing die u 512 databytes per pakket geeft en u moet deze op verschillende geheugenlocaties opslaan. Aangezien 512 databytes gelijk is aan 64 DDR3-databursts, voert u de example ontwerp met een stimulus file met 512 schrijf-, 512 lees- en rijwisselingen voor elke 64 schrijf- of leesbewerkingen:
- 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
Aan het einde van de simulatie zie je dat de busbezetting op 77 procent ligt.
Afbeelding 11: prestatiestatistieken voor 512 schrijfbewerkingen en 512 leesbewerkingen – rijwisseling voor 64 schrijfbewerkingen of leesbewerkingen.
U kunt nu de kennis die u in het vorige gedeelte hebt opgedaan toepassen om de efficiëntie te verbeteren. Met een view om alle banken te gebruiken in plaats van de rij te wijzigen, wijzigt u het adrespatroon om de bank te wijzigen zoals hieronder weergegeven.
Dit komt overeen met het instellen van ROW_BANK_Column in de instelling voor geheugenadrestoewijzing in de 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
Aan het einde van de simulatie zult u zien dat de eerdere 77 procent busgebruik nu 87 is!
Als u nog steeds een hogere efficiëntie nodig heeft, kunt u kiezen voor grote pakketgroottes van 1024 of 2048 bytes, of een handmatige verversing overwegen.
Opmerking: Xilinx moedigt het omzeilen van de controllervernieuwing niet aan, omdat we niet zeker weten of u de automatische vernieuwingstijd van Jedec kunt halen, wat van invloed is op de betrouwbaarheid van de gegevens.
Vanaf de controllerkant kunt u nBANk_MACH wijzigen en de prestatieverbetering zien.
Dit kan echter van invloed zijn op uw ontwerptiming, zie (Xilinx Antwoord 36505) voor meer informatie over nBANk_MACH
Open de core_name_mig_sim.v file en verander de parameters nBANK_MACHS van 4 naar 8 en voer de simulatie opnieuw uit. Om de parameterwaarde van kracht te laten worden in hardware, moet u core_name_mig.v bijwerken file.
Ik gebruikte hetzelfde patroon waar we 87% busgebruik kregen (figuur -12).
Met nBANK_MACHS ingesteld op 8, is de efficiëntie nu 90%.
Merk ook op dat ½ en ¼ controllers de efficiëntie negatief beïnvloeden vanwege hun latenties.
Bijvoorbeeldample, aangezien we alleen om de 4 CK-cycli commando's kunnen verzenden, is er soms extra opvulling bij het naleven van de minimale DRAM-timingspecificaties, wat de efficiëntie van de theoretische kan verminderen.
Probeer verschillende controllers uit om de controller te vinden die past bij uw efficiëntie-eis.
Referenties
- Zynq-7000 AP SoC en 7-serie FPGA's MIS v2.3 [UG586]
- Xilinx MIG-oplossingscentrum http://www.xilinx.com/support/answers/34243.html
Revisiegeschiedenis
13/03/2015 – Eerste uitgave
PDF-download: Xilinx DDR2 MIG 7 Prestatieschattingsgids