Xilinx-logo

Xilinx DDR2 MIG 7 Performance Estimation Guide

Xilinx_DDR2_MIG_7_Performance-Estimation-produkt

Wichtige opmerking: Dizze downloadbare PDF fan in antwurdrecord wurdt levere om syn brûkberens en lêsberens te ferbetterjen. It is wichtich om te merken dat Antwurd Records binne Web-basearre ynhâld dy't faak bywurke wurde as nije ynformaasje beskikber wurdt. Jo wurde herinnere om de Xilinx Technical Support te besykjen Website en review (Xilinx Antwurd 63234) foar de lêste ferzje fan dit antwurd.

Ynlieding

Fanwegen de manier wêrop DDR2- en DDR3-ûnthâlden wurde arsjitektearre en de MIG 7-searje-controller is ûntworpen, binne prestaasjes net rjocht foarút.
It fereasket in begryp fan ferskate Jedec Timing parameters en controller Arsjitektuer, en jo sille moatte rinne simulaasjes te krijen de rûzings.
It algemiene prinsipe foar it bepalen fan prestaasjes is itselde, mar dit dokumint biedt in maklike manier om effisjinsje te krijen mei de MIG example ûntwerp mei help fan testbank en stimulus files taheakke hjir.

Effektive bânbreedte

De DRAM-gegevensbus berikt allinich bânbreedte tichtby pyk by bursts fan lêzen en skriuwen en syn overhead ferleget de effektive gegevensrate.
In pear eksamplis fan overhead binne:

  • precharge tiid tagong ta rigen yn deselde bank (tagongsadres net yn deselde rige-side hit)
  • skriuwhersteltiid om te feroarjen fan skriuwtagong nei lêzen tagong
  • de omlooptiid fan 'e bus om te feroarjen fan lêzen nei skriuwtagong

Xilinx DDR2 MIG 7 Performance Estimation-fig-28
Effektive bânbreedte = Peak bânbreedte * Effisjinsje 

MIG Design Generation

Ferwize nei UG586 Haadstik 1 foar stap-foar-stap details oer MIG IP en example design generaasje.
Foardat jo MIG 7 Series prestaasjessimulaasje útfiere, doch it folgjende om te soargjen dat jo simulaasjeomjouwing goed is. Iepenje de MIG example ûntwerp en map de passende biblioteken, rinne de simulaasje, en soargje derfoar dat jo kinne sjen it berjocht "test trochjûn" yn it transkript.
Om de stream te demonstrearjen haw ik in MIG IP oanmakke foar xc7vx690tffg1761-2 en de eks oproppenampûntwerpe.
Twa dingen dy't moatte wurde opmurken binne ûnthâld adres bits en ûnthâld adres mapping seleksje.
Bygelyksample, Ik haw selektearre MT41J128M8XX-125 ûnder it ûnthâld diel dellûk opsjes.Xilinx DDR2 MIG-7-Performance-estimation-figuer-1

Foar it selektearre ûnthâld diel út figuer-1, rige = 14, kolom = 10 en bank = 3, dus app_addr_width = rige + kolom + bank + rang = 28 Xilinx DDR2 MIG 7 Performance Estimation-fig-2

Jo kinne ofwel BANK_ROW_COLUMN of ROW BANK Column selektearje.
Ik haw lofts ROW BANK Column dat is de standert adres mapping.

Example design Simulaasje mei synthesizable testbank

Selektearje ûnder Simulaasjeynstellingen QuestaSim / ModelSim Simulator en blêdzje nei de lokaasje fan 'e kompilearre bibleteken.
Foar details oer it oanwizen fan in ynstallaasjepaad fan ark fan tredden, selektearjen fan de doelsimulator, en it kompilearjen en yn kaart bringen fan biblioteken, kinne jo ferwize nei (UG900) Vivado Design Suite User Guide Logic SimulationXilinx DDR2 MIG 7 Performance Estimation-fig-3

Rinne de simulaasje troch de GUI (Klik op it ljepblêd Simulation útfiere yn projektbehearder) en soargje derfoar dat jo it berjocht "test trochjûn" sjogge yn it transkripsje.

Performance Simulation RTL oanpassings

  1. Rjochts-klikke op it ljepblêd boarnen, selektearje "simulaasjeboarnen tafoegje of oanmeitsje", en blêdzje nei de mig7_perfsim_traffic_generator.sv file en klikje op finish om it ta te foegjen.
  2. Rjochts-klikke op it ljepblêd boarnen, selektearje "simulaasjeboarnen tafoegje of oanmeitsje", blêdzje nei perfsim_stimulus.txt, en klikje op finish om it ta te foegjen.
  3. Kommentearje de eksample_top instantiation yn de sim_tb_top.v file.
  4. Foegje de ûndersteande RTL-rigels ta oan 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;
  • draad [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • draad [2:0] c0_ddr3_app_cmd;
  • wire c0_ddr3_app_en;
  • draad [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • wire c0_ddr3_app_wdf_end;
  • draad [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • wire c0_ddr3_app_wdf_wren;
  • draad [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 Unthâld Controller instantiation

mig_7series_0_mig u_mig_7series_0_mig (
// Unthâld ynterface havens

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

// Applikaasje ynterface havens

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

// Systeem klok Ports

  • .sys_clk_i (sys_clk_i),

// Reference Clock Ports

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

Ynstantiaasje fan prestaasjesferkeargenerator

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. Feroarje APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH en BANK_WIDTH neffens jo ûnthâld diel seleksje.
    Wearden kinne wurde krigen fan de _mig.v file.
  • De giel markearre instantiaasjenamme mig_7series_0_mig kin fariearje op basis fan jo komponintnamme by it oanmeitsjen fan IP, ferifiearje as jo in oare namme keazen hawwe en feroarje it neffens.Xilinx DDR2 MIG 7 Performance Estimation-fig-4
  • Sadree't de IP is oanmakke iepenje de _mig.v file en cross-check foar alle fariaasjes yn LHS sinjaal nammen en korrigearje se.
  • app_sr_req, app_ref_req en app_zq_req moatte inisjalisearre wurde nei 0.
  • As eksample_top.v wurdt kommentearre út en nij files wurde tafoege, sille jo wierskynlik "?" njonken de
    mig_7series_0_mig.v file ûnder simulaasje boarnen.
    Om kaart de juste file, rjochts klikke mig_7series_0_mig.v, selektearje "Boarnen taheakje", Blêdzje nei
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    en foegje de mig_7series_0_mig_sim.v file.
  • As jo ​​​​sjogge "?" foar de ûnderlizzende files, add alle RTL files yn 'e mappen foar klokken, controller, ip_top, phy en UI.
  • Sadree't de RTL-feroarings binne dien en al it fereaske files wurde tafoege oan jo simulaasjeboarnen, hiërargy moat fergelykber wêze mei figuer 5.
    De files markearre yn read binne nij tafoege, en "?" wurdt ferwachte op ECC relatearre modules as de selektearre ûnthâld konfiguraasje hat de ECC opsje útskeakele.Xilinx DDR2 MIG 7 Performance Estimation-fig-5

Stimulus File Beskriuwing
Elk stimuluspatroan is 48 bits en it formaat wurdt beskreaun yn figueren 6-1 oant 6-4.Xilinx DDR2 MIG 7 Performance Estimation-fig-6

Adreskodearring (adres [35:0])

It adres is kodearre yn 'e stimulus lykas per figuer 7-1 oant figuer 7-6. Alle adresfjilden moatte yn it heksadesimale formaat ynfierd wurde. Alle adresfjilden binne in breedte dy't dielber is troch fjouwer om yn te fieren yn it heksadesimale formaat. De testbank stjoert allinich de fereaske bits fan in adresfjild nei de Memory Controller.
Bygelyksample, yn in acht bank konfiguraasje, allinnich bank Bits [2:0] stjoerd nei it ûnthâld Controller en de oerbleaune bits wurde negearre. De ekstra bits foar in adresfjild binne foarsjoen foar jo om it adres yn in heksadesimale opmaak yn te fieren.
Jo moatte befestigje dat de ynfierde wearde oerienkomt mei de breedte fan in opjûne konfiguraasje.Xilinx DDR2 MIG 7 Performance Estimation-fig-7

  • Kolomadres (kolom[11:0]) - Column Adres yn de stimulus wurdt levere oan in maksimum fan 12 bits, mar jo moatte adres dit basearre op de kolom breedte parameter ynsteld yn jo ûntwerp.
  • Rigeadres (rige[15:0]) - Rigeadres yn 'e stimulus wurdt foarsjoen ta maksimaal 16 bits, mar jo moatte adres dit basearre op de rige breedte parameter ynsteld yn jo ûntwerp.
  • Bankadres (Bank[3:0]) - Bank adres yn de stimulus wurdt foarsjoen ta maksimaal fjouwer bits, mar jo moatte adres dit basearre op de bank breedte parameter ynsteld yn jo ûntwerp.
  • Rangadres (rang[3:0]) - Rang adres yn de stimulus wurdt foarsjoen ta maksimaal fjouwer bits, mar jo moatte adres dit basearre op de rang breedte parameter ynsteld yn jo ûntwerp.
    It adres wurdt gearstald op basis fan de MEM_ADDR_ORDER-parameter op boppeste nivo en stjoerd nei de brûkersynterface

Kommando Repeat (Kommando Repeat [7:0])
It oantal werhellingen fan kommando is it oantal kearen dat it oanbelangjende kommando wurdt werhelle by de brûkersynterface. It adres foar elke werhelling wurdt ferhege mei 8. De maksimale werhellingstelling is 128.
De testbank kontrolearret net foar de kolomgrins en wikkelt om as de maksimale kolomlimyt wurdt berikt tidens de stappen.
De 128 kommando's folje de side yn. Foar elk kolomadres oars dan 0, einiget de werhellingstelling fan 128 de kolomgrins oer en draait om nei it begjin fan it kolomadres.

Bus gebrûk
It busgebrûk wurdt berekkene by de brûkersynterface mei it totale oantal lêzen en skriuwen yn oerweging en de folgjende fergeliking wurdt brûkt:

Xilinx DDR2 MIG 7 Performance Estimation-fig-8

  • BL8 nimt fjouwer ûnthâld klok syklusen
  • end_of_stimulus is de tiid dat alle kommando's dien binne.
  • calib_done is de tiid dat de kalibraasje dien is.

Example Patterns
Dizze eksamples binne basearre op de MEM_ADDR_ORDER ynsteld op BANK_ROW_COLUMN.

Single Read Pattern
00_0_2_000F_00A_1 - Dit patroan is in inkele lêzing fan 10e kolom, 15e rige, en twadde bank.Xilinx DDR2 MIG 7 Performance Estimation-fig-9Single Write Pattern
00_0_1_0040_010_0 - Dit patroan is in inkeld skriuwen nei de 32e kolom, 128e rige, en earste bank.Xilinx DDR2 MIG 7 Performance Estimation-fig-10Single Skriuw en Lês nei itselde adres
00_0_2_000F_00A_0 – Dit patroan is in inkele skriuw nei 10e kolom, 15e rige en twadde bank.
00_0_2_000F_00A_1 – Dit patroan is in inkele lêzing fan 10e kolom, 15e rige, en twadde bankXilinx DDR2 MIG 7 Performance Estimation-fig-11

Meardere skriuwt en lêzen mei itselde adres
0A_0_0_0010_000_0 – Dit komt oerien mei 10 skriuwt mei adres begjinnend fan 0 oant 80 dy't te sjen is yn 'e kolom.Xilinx DDR2 MIG 7 Performance Estimation-fig-12

0A_0_0_0010_000_1 – Dit komt oerien mei 10 lêzen mei adres begjinnend fan 0 oant 80 dy't te sjen binne yn 'e kolom.Xilinx DDR2 MIG 7 Performance Estimation-fig-13

Page Wrap Tidens Skriuwen
0A_0_2_000F_3F8_0 – Dit komt oerien mei 10 skriuwt mei kolomadres ferpakt oan it begjin fan 'e side nei ien skriuwen.Xilinx DDR2 MIG 7 Performance Estimation-fig-14

Simulearje de Performance Traffic Generator

Op dit punt binne jo klear mei MIG example design simulaasje. Dit ymplisearret dat jo simulaasje opset is klear, jo hawwe dien prestaasjes simulaasje RTL modifikaasjes, de nije simulaasje hiërargy is korrekt en jo hawwe begrepen de stimulus patroanen. Run de simulaasje nochris mei 16 skriuwt en lêst yn perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Performance Estimation-fig-15

Do run-all, wachtsje oant de init_calib_complete sinjaal wurdt asserted, en do silst wêze kinne om te sjen it foarstelde oantal skriuwt en lêzen. De simulaasje sil dan stopje. Xilinx DDR2 MIG 7 Performance Estimation-fig-16

As jo ​​frege wurde om simulaasje te stopjen, selektearje Nee en gean nei it transkripsjefinster wêr't jo de prestaasjesstatistiken kinne sjen. Xilinx DDR2 MIG 7 Performance Estimation-fig-17

As jo ​​selektearje "Simulaasje stopje" prestaasjes statistyk wurdt skreaun nei in file neamd mig_band_width_output.txt leit yn de sim_1/behave folder.

Exampit mappaad:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Performance Estimation-fig-18

Jo kinne jo ôffreegje wêrom't it persintaazjetage bus utilization is ony 29. Rinne de simulaasje opnij mei deselde IP-ynstellingen, mar gewoan de stimulus feroarje file oant 256 skriuwt en 256 lêzen

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Jo sille no it persintaazje sjentage as 85, wat ymplisearret dat DDR3 biedt bettere bus benutten foar lange folchoarder fan skriuwen en lêzen bursts. Xilinx DDR2 MIG 7 Performance Estimation-fig-19

Algemiene manieren om prestaasjes te ferbetterjen

De faktoaren dy't de effisjinsje beynfloedzje kinne wurde ferdield yn twa seksjes:

  1. Unthâld Spesifike
  2. Controller SpesifykXilinx DDR2 MIG 7 Performance Estimation-fig-20

figuer 9 jout jo in oerview fan de termen dy't ûnthâld spesifyk.
Oars as SRAMs en Block Memories DDR2 of DDR3 prestaasjes is net allinnich de maksimale gegevens rate.

It hinget ôf fan in protte timingfaktoaren, ynklusyf:

  • tRCD: Row Command Delay (of ras nei cas fertraging).
  • tCAS(CL): Kolomadres strobe latency.
  • tRP: Rige precharge fertraging.
  • tRAS: Rige aktive tiid (aktivearje om te feroarjen).
  • tRC: Rige syklus tiid. tRC = tRAS + tRP
  • tRAC: Radom tagong fertraging. tRAC = tRCD + tCAS
  • tCWL: Cas skriuwe latency.
  • tZQ: ZQ kalibraasje tiid.
  • tRFC: Rige Refresh Cycle Tiid
  • tWTR: Skriuw nei Lês fertraging. Lêste skriuwtransaksje nei Read kommando tiid.
  • tWR: Skriuw hersteltiid. Lêste skriuwtransaksje nei Precharge tiid

Timing fan alle neamde parameters hinget ôf fan it type ûnthâld brûkt en ûnthâld diel snelheid grade.
Mear details oer de definysjes en timing spesifikaasjes kinne fûn wurde yn DDR2 DDR3 JEDEC of yn elts ûnthâld apparaat datasheet.

Effisjinsje hinget foaral ôf fan hoe't ûnthâld tagong wurdt. Ferskillende adrespatroanen jouwe ferskillende effisjinsjeresultaten.

Unthâld timing overheads

  1. Aktivearring tiid en Precharge tiid by it feroarjen fan nije banken / rigen of feroarjen rigen mei yn deselde bank.- Dus as jo ferminderje rige feroaring, dit kin fuortsmite tRCD en tRP.
  2. Stjoer trochgeande skriuw- of lêskommando's -Behâld fan tCCD-timing.
  3. Minimalisearje skriuwe om te lêzen en te lêzen om te skriuwen kommando-wikseling - Skriuw hersteltiid om te feroarjen nei lêstagongen, bus-omlooptiid om te feroarjen fan lêzen nei skriuwen
  4. Stel in juste ferfarskingsinterval yn.
    • DDR3 SDRAM fereasket Refresh cycles op in gemiddelde periodyk ynterval fan tREFI.
    • Maksimaal 8 ekstra Refresh-kommando's kinne foarôf útjûn wurde ("ynlutsen"). Dit ferminderet it oantal ferfarskingen net, mar it maksimale ynterval tusken twa omlizzende Ferfarskje-kommando's is beheind ta 9 × tREFIXilinx DDR2 MIG 7 Performance Estimation-fig-21
  • Brûk alle banken - In gaadlik adresmeganisme is de foarkar.
    • Rige-bank-kolom: Foar in transaksje dy't plakfynt oer in sekwinsjele adresromte, iepenet de kearn automatysk deselde rige yn 'e folgjende bank fan it DRAM-apparaat om de transaksje troch te gean as it ein fan in besteande rige wurdt berikt. It is goed geskikt foar applikaasjes dy't fereaskje bursting fan grutte gegevens pakketten nei opienfolgjende adres lokaasjes.
    • Bank-rige-kolom: By it oerstekken fan in rige grins, de hjoeddeiske rige wurdt sletten en in oare rige wurdt iepene binnen deselde bank. MSB is in bankadres, dat kin brûkt wurde om te wikseljen fan ferskate banken. It is geskikt foar koartere, mear willekeurige transaksjes nei ien blok ûnthâld foar in perioade fan tiid en dan in sprong nei in oar blok (bank)
  • Burst Lengte
    • BL 8 wurdt stipe foar DDR3 op 7 rige. BC4 hat in tige lege effisjinsje dat is minder as 50%. Dit is om't de útfieringstiid fan BC4 itselde is as BL8. De gegevens binne gewoan maskearre binnen de komponint.
    • Yn gefallen wêr't jo gjin folsleine burst wolle skriuwe, kinne gegevensmasker of skriuwe-nei-lêzen wurde beskôge.
  • Stel in goed ZQ-ynterval yn (allinich DDR3)
    De controller stjoert sawol ZQ Koarte (ZQCS) en ZQ Lange (ZQCL) Kalibraasje kommando.
    • Folgje oan de DDR3 Jedec Standert
    • ZQ-kalibraasje wurdt besprutsen yn seksje 5.5 fan 'e JEDEC Spec JESD79-3 DDR3 SDRAM Standert
    • ZQ Kalibraasje kalibrearret On Die Termination (ODT) op reguliere yntervallen om te rekkenjen mei fariaasjes oer VT
    • Logika is befette yn bank_common.v/vhd
    • Parameter Tzqcs bepaalt it taryf dêr't in ZQ Kalibraasje kommando wurdt stjoerd nei it ûnthâld
    • t is mooglik om de teller út te skeakeljen en mei de hân te ferstjoeren mei app_zq_req, it is gelyk oan it manuell ferstjoeren fan in Ferfarskje.
      Ferwize nei (Xilinx Antwurd 47924) foar details.Xilinx DDR2 MIG 7 Performance Estimation-fig-22

Controller Overheads

  1. Periodyk lêzen - Ferwize nei (Xilinx Antwurd 43344) foar details.
    • Feroarje de perioade fan it lêzen net
    • Sla periodike lêzings oer by skriuwen en jou it oantal miste lêzen út foar in wiere lêzing
  2. Weromoardieling - Ferwize (Xilinx Antwurd 34392) foar details.
    Foar brûkers- en AXI-ynterface-ûntwerpen is it de foarkar om dit ynskeakele te hawwen.
    • Reorder is de logika dy't ferskate kommando's foarút sjocht en brûkerskommandofolchoarder feroaret om net-ûnthâldkommando's gjin jildige bânbreedte te besetten. De prestaasje is ek relatearre oan eigentlike ferkearspatroan.
    • Op grûn fan it adrespatroan helpt opnij oarderje om precharge oer te slaan en kommando's te aktivearjen en makket dat tRCD en tRP gjin gegevensbânbreedte besette.Xilinx DDR2 MIG 7 Performance Estimation-fig-23
  3. Besykje te fergrutsjen it oantal Bank Machines.
    • De measte fan 'e logika fan' e controller sit yn 'e bankmasines en se oerienkomme mei DRAM-banken
    • In opjûne bank masine beheart in inkele DRAM bank op elts momint.
    • Bank masine opdracht is dynamysk dus it is net nedich om in bank masine foar eltse fysike bank.
    • Bank masines kinne wurde ynsteld, mar it is in ôfwikseling tusken gebiet en prestaasjes.
    • De tastiene oantal bank masines fariearret fan 2-8.
    • Standert wurde 4 Bank Machines konfigurearre fia RTL parameters.
    • Om bankmasines te feroarjen, beskôgje de parameter nBANK_MACHS = 8 befette yn memc_ui_top Example foar 8 bankmasines - nBANK_MACHS = 8

Jo binne no bewust fan 'e faktoaren dy't de prestaasjes beynfloedzje.
Beskôgje in streamop-applikaasje dy't jo 512 gegevensbytes per pakket jout en jo moatte opslaan op ferskate ûnthâldlokaasjes. As 512 gegevensbytes is gelyk oan 64 DDR3-gegevensbursts, útfiere de eks opnijample ûntwerp mei in stimulus file befettet 512 skriuwt, 512 lêzings en rigelwikseling foar elke 64 skriuwt of lêzen:

  • 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

Oan 'e ein fan' e simulaasje sille jo sjen dat busbenutting op 77 prosint is. Xilinx DDR2 MIG 7 Performance Estimation-fig-24

figuer 11: Performance Statistics foar 512 skriuwt en 512 lêzen - Rigewikseling foar 64 skriuwt of lêzen. 

Jo kinne no de kennis leard yn eardere seksje tapasse om de effisjinsje te ferbetterjen. Mei a view om alle banken te brûken ynstee fan de rige te feroarjen, wizigje it adrespatroan om de bank te feroarjen lykas hjirûnder werjûn.
Dit is lykweardich oan it ynstellen fan ROW_BANK_Column yn 'e ynstellings foar mapping fan ûnthâldadres yn' e 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

Oan 'e ein fan simulaasje sille jo sjen dat de eardere 77 Percent Bus Utilization no 87 is! Xilinx DDR2 MIG 7 Performance Estimation-fig-25

As jo ​​​​noch hegere effisjinsje nedich binne, kinne jo gean foar grutte pakketgrutte fan 1024 of 2048 bytes, of beskôgje in hânmjittich ferfarsking.

Noat: Xilinx stimuleart gjin ferfarsking fan controller om te gean, om't wy net wis binne as jo Jedec auto-ferfarskingstiming kinne foldwaan dy't de betrouberens fan gegevens beynfloedet.
Fan de controller kant kinne jo feroarje nBANk_MACH en sjoch de ferbettering yn prestaasjes.
Dit kin lykwols ynfloed hawwe op jo ûntwerptiming, ferwize asjebleaft nei (Xilinx Antwurd 36505) foar details oer nBANk_MACHXilinx DDR2 MIG 7 Performance Estimation-fig-26

Iepenje de core_name_mig_sim.v file en feroarje de parameters nBANK_MACHS fan 4 oan 8 en wer rinne de simulaasje. Om de parameterwearde effekt te hawwen yn hardware, moatte jo de core_name_mig.v bywurkje file.
Ik brûkte itselde patroan dêr't wy krigen 87% bus utilization (figuer -12).
Mei nBANK_MACHS ynsteld op 8, is de effisjinsje no 90%. Xilinx DDR2 MIG 7 Performance Estimation-fig-27

Meitsje ek in notysje dat ½ en ¼ controllers de effisjinsje negatyf beynfloedzje fanwegen har latencies.
Bygelyksample, sûnt wy kinne allinne stjoere kommando elk 4 CK cycles der is soms ekstra padding doe't adhering oan minimum DRAM timing specs, dat kin ôfnimme effisjinsje fan de teoretyske.
Besykje ferskate controllers om dejinge te finen dy't past by jo effisjinsjeeasken.

Referinsjes

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

Revision Skiednis
13/03/2015 - Inisjele release

Download PDF: Xilinx DDR2 MIG 7 Performance Estimation Guide

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *