Xilinx-logo

Xilinx DDR2 MIG 7 Ytelsesestimeringsveiledning

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Viktig merknad: Denne nedlastbare PDF-filen av en Answer Record er gitt for å forbedre brukervennligheten og lesbarheten. Det er viktig å merke seg at Answer Records er det Web-basert innhold som oppdateres ofte etter hvert som ny informasjon blir tilgjengelig. Du blir påminnet om å besøke Xilinx teknisk støtte Webnettsted og review (Xilinx Answer 63234) for den nyeste versjonen av dette svaret.

Introduksjon

På grunn av måten DDR2- og DDR3-minner er bygget på og MIG 7-seriens kontrolleren er designet, er ytelsen ikke rett frem.
Det krever en forståelse av ulike Jedec Timing-parametere og kontrollerarkitektur, og du må kjøre simuleringer for å få estimatene.
Det generelle prinsippet for å bestemme ytelsen er det samme, men dette dokumentet gir en enkel måte å oppnå effektivitet ved å bruke MIG example design ved hjelp av testbenk og stimulus fileer vedlagt her.

Effektiv båndbredde

DRAM-databussen oppnår nær-topp båndbredde bare under skurer med lesing og skriving, og overhead senker den effektive datahastigheten.
Noen få eksamples av overhead er:

  • forhåndsladetid for tilgang til rader i samme bank (tilgangsadresse ikke i samme radsidetreff)
  • skrivegjenopprettingstid for å endre fra skrive- til lesetilgang
  • bussens behandlingstid for å endre fra lese- til skrivetilgang

Xilinx DDR2 MIG 7 Ytelsesestimering-fig-28
Effektiv båndbredde = toppbåndbredde * Effektivitet 

MIG Design Generasjon

Se UG586 kapittel 1 for trinnvise detaljer om MIG IP og eksampdesigngenerasjonen.
Før du kjører MIG 7-serien ytelsessimulering, gjør følgende for å sikre at simuleringsmiljøet ditt er bra. Åpne MIG examputform og kartlegg de riktige bibliotekene, kjør simuleringen og sørg for at du kan se meldingen "test bestått" i transkripsjonen.
For å demonstrere flyten har jeg generert en MIG IP for xc7vx690tffg1761-2 og påkalt exampdesign.
To ting som bør bemerkes er minneadressebiter og minneadressekartlegging.
For eksample, jeg har valgt MT41J128M8XX-125 under rullegardinmenyen for minnedel.Xilinx DDR2 MIG-7-Ytelse-estimering-fig-1

For den valgte minnedelen fra figur-1, rad = 14, kolonne = 10 og bank = 3, så app_addr_width = rad + kolonne + bank + rang = 28 Xilinx DDR2 MIG 7 Ytelsesestimering-fig-2

Du kan velge enten BANK_ROW_COLUMN eller ROW BANK Column.
Jeg har forlatt ROW BANK Column som er standard adressetilordning.

Example design Simulering med syntetiserbar testbenk

Under Simuleringsinnstillinger, velg QuestaSim/ModelSim Simulator og bla til de kompilerte bibliotekenes plassering.
For detaljer om å peke på en tredjeparts verktøyinstallasjonsbane, valg av målsimulator og kompilering og kartlegging av biblioteker, kan du se (UG900) Vivado Design Suite User Guide Logic SimulationXilinx DDR2 MIG 7 Ytelsesestimering-fig-3

Kjør simuleringen gjennom GUI (klikk på Kjør simulering-fanen i prosjektlederen) og sørg for at du ser meldingen "test bestått" i transkripsjonen.

Ytelsessimulering RTL-modifikasjoner

  1. Høyreklikk på kildefanen, velg «legg til eller opprett simuleringskilder» og bla til mig7_perfsim_traffic_generator.sv file og klikk Fullfør for å legge den til.
  2. Høyreklikk på kildefanen, velg «legg til eller opprett simuleringskilder», bla til perfsim_stimulus.txt, og klikk på Fullfør for å legge den til.
  3. Kommenter eksenample_top-instansering i sim_tb_top.v file.
  4. Legg til RTL-linjene nedenfor til 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;
  • ledning [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • ledning [2:0] c0_ddr3_app_cmd;
  • wire c0_ddr3_app_en;
  • ledning [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • wire c0_ddr3_app_wdf_end;
  • wire [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • wire c0_ddr3_app_wdf_wren;
  • wire [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • wire c0_ddr3_app_rd_data_end;
  • wire c0_ddr3_app_rd_data_valid;
  • wire c0_ddr3_app_rdy;
  • wire c0_ddr3_app_wdf_rdy;
  • wire c0_data_compare_error;
  • wire ui_clk;
  • wire ui_clk_sync_rst;
  • wire app_sr_req = 0;
  • wire app_ref_req = 0;
  • wire app_zq_req =0;
  • wire c0_app_wdf_mask =0;

FPGA-minnekontroller instansiering

mig_7series_0_mig u_mig_7series_0_mig (
// Minnegrensesnittporter

  • .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),

// Applikasjonsgrensesnittporter

  • .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),

// Systemklokkeporter

  • .sys_clk_i (sys_clk_i),

// Referanse klokkeporter

  • .clk_ref_i (clk_ref_i),
  • .sys_rst (sys_rst)
  • );

Ytelsestrafikkgenerator instansiering

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. Endre APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH og BANK_WIDTH i henhold til valg av minnedel.
    Verdier kan hentes fra _mig.v file.
  • Det gule uthevede instansieringsnavnet mig_7series_0_mig kan variere basert på komponentnavnet ditt under opprettelsen av IP, kontroller om du har valgt et annet navn og endre det tilsvarende.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-4
  • Når IP-en er generert, åpner du _mig.v file og krysssjekk for eventuelle variasjoner i LHS-signalnavn og korriger dem.
  • app_sr_req, app_ref_req og app_zq_req bør initialiseres til 0.
  • Som eksample_top.v er kommentert ut og ny fileer lagt til, vil du sannsynligvis se "?" ved siden av
    mig_7series_0_mig.v file under simuleringskilder.
    For å kartlegge riktig file, høyreklikk mig_7series_0_mig.v, velg «Legg til kilder», Bla til
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    og legg til mig_7series_0_mig_sim.v file.
  • Hvis du ser "?" for det underliggende files, legg til alle RTL files i klokke-, kontroller-, ip_top-, phy- og UI-mappene.
  • Når RTL-endringene er gjort, og alt det nødvendige files legges til simuleringskildene dine, bør hierarki ligne på figur 5.
    De files uthevet i rødt er nylig lagt til, og "?" forventes på ECC-relaterte moduler ettersom den valgte minnekonfigurasjonen har ECC-alternativet deaktivert.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-5

Stimulus File Beskrivelse
Hvert stimulusmønster er 48 biter og formatet er beskrevet i figur 6-1 til 6-4.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-6

Adressekoding (adresse [35:0])

Adressen er kodet i stimulusen i henhold til figur 7-1 til figur 7-6. Alle adressefeltene må angis i heksadesimalt format. Alle adressefeltene har en bredde som er delelig med fire for å angi i heksadesimalt format. Testbenken sender bare de nødvendige bitene av et adressefelt til minnekontrolleren.
For eksample, i en konfigurasjon med åtte banker, sendes bare bankbiter [2:0] til minnekontrolleren og de resterende bitene ignoreres. De ekstra bitene for et adressefelt er gitt slik at du kan angi adressen i et heksadesimalt format.
Du må bekrefte at verdien som er angitt samsvarer med bredden til en gitt konfigurasjon.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-7

  • Kolonneadresse (kolonne[11:0]) – Kolonneadresse i stimulusen er gitt til maksimalt 12 biter, men du må adressere dette basert på kolonnebreddeparameteren som er satt i designet.
  • Radadresse (rad[15:0]) – Radadresse i stimulus er gitt til maksimalt 16 biter, men du må adressere dette basert på radbreddeparameteren som er satt i designet.
  • Bankadresse (Bank[3:0]) – Bankadressen i stimulusen er gitt til maksimalt fire biter, men du må adressere dette basert på bankbreddeparameteren som er angitt i designet.
  • Rangeringsadresse (Rank[3:0]) – Rangeringsadresse i stimulusen er gitt til maksimalt fire biter, men du må adressere dette basert på rangeringsbreddeparameteren som er satt i designet.
    Adressen settes sammen basert på MEM_ADDR_ORDER-parameteren på toppnivå og sendes til brukergrensesnittet

Command Repeat (Command Repeat [7:0])
Antall repetisjoner av kommandoer er antallet ganger den respektive kommandoen gjentas i brukergrensesnittet. Adressen for hver repetisjon økes med 8. Maksimalt antall repetisjoner er 128.
Testbenken sjekker ikke for søylegrensen, og den vikler seg rundt hvis maksimal søylegrense nås under trinnene.
De 128 kommandoene fyller opp siden. For en hvilken som helst annen kolonneadresse enn 0, ender repetisjonsantallet på 128 opp med å krysse kolonnegrensen og gå rundt til starten av kolonneadressen.

Bussutnyttelse
Bussutnyttelsen beregnes ved brukergrensesnittet tar det totale antallet lesinger og skrivinger i betraktning, og følgende ligning brukes:

Xilinx DDR2 MIG 7 Ytelsesestimering-fig-8

  • BL8 tar fire minneklokkesykluser
  • end_of_stimulus er tidspunktet når alle kommandoene er utført.
  • calib_done er tidspunktet da kalibreringen er ferdig.

Example Mønstre
Disse eksamplesene er basert på MEM_ADDR_ORDER satt til BANK_ROW_COLUMN.

Enkelt lesemønster
00_0_2_000F_00A_1 – Dette mønsteret er en enkelt lesing fra 10. kolonne, 15. rad og andre bank.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-9Enkelt skrivemønster
00_0_1_0040_010_0 – Dette mønsteret er en enkelt skriving til 32. kolonne, 128. rad og første bank.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-10Enkelt skriv og les til samme adresse
00_0_2_000F_00A_0 – Dette mønsteret er en enkel skriving til 10. kolonne, 15. rad og andre bank.
00_0_2_000F_00A_1 – Dette mønsteret er en enkelt lesing fra 10. kolonne, 15. rad og andre bankXilinx DDR2 MIG 7 Ytelsesestimering-fig-11

Flere skriver og leser med samme adresse
0A_0_0_0010_000_0 – Dette tilsvarer 10 skriv med adresse fra 0 til 80 som kan sees i kolonnen.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-12

0A_0_0_0010_000_1 – Dette tilsvarer 10 avlesninger med adresse fra 0 til 80 som kan sees i kolonnen.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-13

Sidebryting under skriving
0A_0_2_000F_3F8_0 – Dette tilsvarer 10 skrivinger med kolonneadresse pakket inn til starten av siden etter en skriving.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-14

Simulering av Performance Traffic Generator

På dette tidspunktet er du ferdig med MIG example designsimulering. Dette innebærer at simuleringsoppsettet ditt er klart, du har gjort ytelsessimulering RTL-modifikasjoner, det nye simuleringshierarkiet er riktig og du har forstått stimulusmønstrene. Kjør simuleringen igjen med 16 skriv og lesinger i perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-15

Gjør alt, vent til init_calib_complete-signalet er bekreftet, og du vil kunne se det foreslåtte antallet skriv og lesninger. Simuleringen vil da stoppe. Xilinx DDR2 MIG 7 Ytelsesestimering-fig-16

Når du blir bedt om å avslutte simuleringen, velger du Nei og går til transkripsjonsvinduet hvor du vil kunne se ytelsesstatistikken. Xilinx DDR2 MIG 7 Ytelsesestimering-fig-17

Hvis du velger "avslutt simulering" resultatstatistikk vil bli skrevet til en file navngitt mig_band_width_output.txt som ligger i sim_1/behave mappe.

Example katalogbane:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Ytelsesestimering-fig-18

Du lurer kanskje på hvorfor prosententage buss-bruk er kun 29. Kjør simuleringen på nytt med de samme IP-innstillingene, men bare endre stimulansen file til 256 skrivere og 256 lesninger

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Du vil nå se prosententage som 85, noe som innebærer at DDR3 tilbyr bedre bussutnyttelse for lange sekvenser av skrive- og leseserier. Xilinx DDR2 MIG 7 Ytelsesestimering-fig-19

Generelle måter å forbedre ytelsen på

Faktorene som påvirker effektiviteten kan deles inn i to deler:

  1. Minnespesifikk
  2. KontrollerspesifikkXilinx DDR2 MIG 7 Ytelsesestimering-fig-20

Figur 9 gir deg en overview av begrepene som er minnespesifikke.
I motsetning til SRAM-er og blokkminner er DDR2- eller DDR3-ytelsen ikke bare den maksimale datahastigheten.

Det avhenger av mange tidsfaktorer, inkludert:

  • tRCD: Row Command Delay (eller ras til cas forsinkelse).
  • tCAS(CL): Kolonne adresse strobe latens.
  • tRP: Forsinkelse av forhåndslading av rad.
  • tRAS: Rad aktiv tid (aktiver for å endre).
  • tRC: Radsyklustid. tRC = tRAS + tRP
  • tRAC: Radom tilgangsforsinkelse. tRAC = tRCD + tCAS
  • tCWL: Cas skriveforsinkelse.
  • tZQ: ZQ kalibreringstid.
  • tRFC: Syklustid for radoppdatering
  • tWTR: Skriv til Leseforsinkelse. Siste skrivetransaksjon til Les kommandotid.
  • tWR: Skriv gjenopprettingstid. Siste skrivetransaksjon til Precharge-tid

Tidspunktet for alle de listede parameterne avhenger av typen minne som brukes og minnedelens hastighetsgrad.
Flere detaljer om definisjonene og tidsspesifikasjonene finner du i DDR2 DDR3 JEDEC eller i et dataark for minneenheter.

Effektiviteten avhenger hovedsakelig av hvordan minnet er tilgjengelig. Ulike adressemønstre gir ulike effektivitetsresultater.

Overhead for minnetiming

  1. Aktiveringstid og Precharge-tid ved bytte til nye banker/rader eller bytte av rader med i samme bank.- Så hvis du reduserer radskifte kan dette fjerne tRCD og tRP.
  2. Send kontinuerlige skrive- eller lesekommandoer - Opprettholde tCCD-timing.
  3. Minimer skrive-til-lese- og lese-til-skriv-kommandobytte – Skrivegjenopprettingstid for å endre til lesetilganger, omløpstid for buss for å endre fra lesing til skriv
  4. Still inn et riktig oppdateringsintervall.
    • DDR3 SDRAM krever oppdateringssykluser med et gjennomsnittlig periodisk intervall på tREFI.
    • Maksimalt 8 ekstra Refresh-kommandoer kan gis på forhånd ("trukket inn"). Dette reduserer ikke antallet oppdateringer, men det maksimale intervallet mellom to omgivende oppdateringskommandoer er begrenset til 9 × tREFIXilinx DDR2 MIG 7 Ytelsesestimering-fig-21
  • Bruk alle bankene – En passende adresseringsmekanisme er å foretrekke.
    • Rad-bank-kolonne: For en transaksjon som skjer over et sekvensielt adresserom, åpner kjernen automatisk den samme raden i neste bank av DRAM-enheten for å fortsette transaksjonen når slutten av en eksisterende rad er nådd. Den er godt egnet for applikasjoner som krever sprengning av store datapakker til sekvensielle adresseplasseringer.
    • Bank-rad-kolonne: Ved kryssing av en radgrense vil gjeldende rad bli stengt og en annen rad åpnes innenfor samme bank. MSB er en bankadresse, som kan brukes til å bytte fra forskjellige banker. Den er egnet for kortere, mer tilfeldige transaksjoner til en minneblokk i en periode og deretter et hopp til en annen blokk (bank)
  • Burst Lengde
    • BL 8 støttes for DDR3 på 7-serien. BC4 har en svært lav virkningsgrad som er mindre enn 50 %. Dette er fordi utførelsestiden til BC4 er den samme som BL8. Dataene er bare maskert inne i komponenten.
    • I tilfeller der du ikke ønsker å skrive full burst, kan enten datamaske eller skrive-etter-lesing vurderes.
  • Still inn et riktig ZQ-intervall (kun DDR3)
    Kontrolleren sender både ZQ Short (ZQCS) og ZQ Long (ZQCL) kalibreringskommandoer.
    • Følg DDR3 Jedec-standarden
    • ZQ-kalibrering er omtalt i avsnitt 5.5 i JEDEC-spesifikasjonen JESD79-3 DDR3 SDRAM Standard
    • ZQ Calibration kalibrerer On Die Termination (ODT) med jevne mellomrom for å ta hensyn til variasjoner på tvers av VT
    • Logikk finnes i bank_common.v/vhd
    • Parameteren Tzqcs bestemmer hastigheten som en ZQ-kalibreringskommando sendes til minnet med
    • Det er mulig å deaktivere telleren og sende manuelt ved å bruke app_zq_req, det ligner på å sende en oppdatering manuelt.
      Se (Xilinx Answer 47924) for detaljer.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-22

Overhead for kontroller

  1. Periodiske avlesninger – Se (Xilinx svar 43344) for detaljer.
    • Ikke endre lesetiden
    • Hopp over periodiske lesinger under skriving og oppgi antall tapte lesninger før en sann lesing
  2. Ombestilling – Se (Xilinx svar 34392) for detaljer.
    For bruker- og AXI-grensesnittdesign er det å foretrekke å ha dette aktivert.
    • Reorder er logikken som ser fremover flere kommandoer og endrer brukerkommandoer for å gjøre at ikke-minnekommandoer ikke opptar gyldig båndbredde. Ytelsen knyttet også til faktisk trafikkmønster.
    • Basert på adressemønsteret hjelper ombestilling å hoppe over forhåndslading og aktivere kommandoer og gjør at tRCD og tRP ikke opptar databåndbredden.Xilinx DDR2 MIG 7 Ytelsesestimering-fig-23
  3. Prøv å øke antall bankautomater.
    • Det meste av kontrollerens logikk ligger i bankmaskinene og de tilsvarer DRAM-banker
    • En gitt bankmaskin administrerer en enkelt DRAM-bank til enhver tid.
    • Bankmaskintildeling er dynamisk, så det er ikke nødvendig å ha en bankautomat for hver fysisk bank.
    • Bankautomater kan konfigureres, men det er en avveining mellom område og ytelse.
    • Det tillatte antallet bankautomater varierer fra 2-8.
    • Som standard er 4 bankautomater konfigurert gjennom RTL-parametere.
    • For å endre bankautomater, vurder parameteren nBANK_MACHS = 8 i memc_ui_top Example for 8 bankautomater – nBANK_MACHS = 8

Du er nå klar over faktorene som påvirker ytelsen.
Tenk på en oppstrømsapplikasjon som gir deg 512 databyte per pakke, og du må lagre dem på forskjellige minneplasseringer. Siden 512 databyte tilsvarer 64 DDR3-dataskurer, kjør eksample design med en stimulans file inneholder 512 skriv, 512 lesninger og radbytte for hver 64 skriving eller lesing:

  • 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

På slutten av simuleringen vil du se at bussutnyttelsen er på 77 prosent. Xilinx DDR2 MIG 7 Ytelsesestimering-fig-24

Figur 11: Ytelsesstatistikk for 512 skriv og 512 lesninger – Radbytte for 64 skrivinger eller lesninger. 

Du kan nå bruke kunnskapen du lærte i tidligere avsnitt for å forbedre effektiviteten. Med en view for å bruke alle bankene i stedet for å endre raden, endre adressemønsteret for å endre bank som vist nedenfor.
Dette tilsvarer å sette ROW_BANK_Column i minneadressetilordningen i 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

På slutten av simuleringen vil du se at tidligere 77 prosent bussutnyttelse nå er 87! Xilinx DDR2 MIG 7 Ytelsesestimering-fig-25

Hvis du fortsatt trenger høyere effektivitet, kan du gå for store pakkestørrelser på 1024 eller 2048 byte, eller vurdere en manuell oppdatering.

Note: Xilinx oppfordrer ikke til å omgå kontrolleroppdatering, da vi er usikre på om du vil være i stand til å møte Jedec automatisk oppdateringstid som påvirker datapålitelighet.
Fra kontrollersiden kan du endre nBANk_MACH og se forbedringen i ytelse.
Dette kan imidlertid påvirke designtidspunktet ditt, vennligst se (Xilinx svar 36505) for detaljer om nBANk_MACHXilinx DDR2 MIG 7 Ytelsesestimering-fig-26

Åpne core_name_mig_sim.v file og endre parameterne nBANK_MACHS fra 4 til 8 og kjør simuleringen på nytt. For å få parameterverdien til å tre i kraft i maskinvare, må du oppdatere core_name_mig.v file.
Jeg brukte samme mønster hvor vi fikk 87 % bussutnyttelse (figur -12).
Med nBANK_MACHS satt til 8, er effektiviteten nå 90 %. Xilinx DDR2 MIG 7 Ytelsesestimering-fig-27

Legg også merke til at ½- og ¼-kontrollere påvirker effektiviteten negativt på grunn av ventetiden.
For eksample, siden vi bare kan sende kommandoer hver 4. CK-syklus, er det noen ganger ekstra polstring når vi overholder minimumsspesifikasjoner for DRAM-timing, noe som kan redusere effektiviteten fra den teoretiske.
Prøv ut forskjellige kontrollere for å finne den som passer dine effektivitetskrav.

Referanser

  1. Zynq-7000 AP SoC og 7-seriens FPGA-er MIS v2.3 [UG586]
  2. Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html

Revisjonshistorie
13/03/2015 – Første utgivelse

Last ned PDF: Xilinx DDR2 MIG 7 Ytelsesestimeringsveiledning

Referanser

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *