Xilinx-logo

Xilinx DDR2 MIG 7 Prestasieskattingsgids

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Belangrike nota: Hierdie aflaaibare PDF van 'n Antwoordrekord word verskaf om die bruikbaarheid en leesbaarheid daarvan te verbeter. Dit is belangrik om daarop te let dat Antwoordrekords is Web-gebaseerde inhoud wat gereeld opgedateer word soos nuwe inligting beskikbaar word. U word daaraan herinner om die Xilinx Tegniese Ondersteuning te besoek Webwebwerf en review (Xilinx Answer 63234) vir die nuutste weergawe van hierdie Antwoord.

Inleiding

As gevolg van die manier waarop DDR2- en DDR3-herinneringe gebou is en die MIG 7-reeksbeheerder ontwerp is, is werkverrigting nie reguit vorentoe nie.
Dit vereis 'n begrip van verskeie Jedec Tydsberekening parameters en kontroleerder argitektuur, en jy sal simulasies moet uitvoer om die skattings te kry.
Die algemene beginsel vir die bepaling van prestasie is dieselfde, maar hierdie dokument bied 'n maklike manier om doeltreffendheid te verkry deur die MIG example ontwerp met behulp van toetsbank en stimulus fileis hier aangeheg.

Effektiewe bandwydte

Die DRAM-databus bereik amper-piek-bandwydte slegs tydens sarsies van lees en skryf en sy oorhoofse koste verlaag die effektiewe datatempo.
'n Paar examples van bokoste is:

  • vooraflaaityd wat toegang tot rye in dieselfde bank kry (toegangsadres nie in dieselfde rybladsy-treffer nie)
  • skryfhersteltyd om van skryf- na leestoegang te verander
  • die bus omkeertyd om van lees- na skryftoegang te verander

Xilinx DDR2 MIG 7 Prestasieskatting-fig-28
Effektiewe bandwydte = Piekbandwydte * Doeltreffendheid 

MIG-ontwerpgenerasie

Verwys na UG586 Hoofstuk 1 vir stap-vir-stap besonderhede oor MIG IP en exampdie ontwerpgenerasie.
Voordat jy MIG 7-reeks prestasiesimulasie uitvoer, doen die volgende om seker te maak jou simulasie-omgewing is goed. Maak die MIG example ontwerp en karteer die toepaslike biblioteke, voer die simulasie uit en maak seker dat jy die boodskap "toets geslaag" in die transkripsie kan sien.
Om die vloei te demonstreer het ek 'n MIG IP vir xc7vx690tffg1761-2 gegenereer en die ex opgeroepampontwerp.
Twee dinge wat opgemerk moet word, is geheue-adresbisse en geheue-adreskartering seleksie.
Byvoorbeeldample, ek het MT41J128M8XX-125 gekies onder die geheue deel drop down opsies.Xilinx DDR2 MIG-7-Prestasie-skatting-fig-1

Vir die geselekteerde geheue deel van Figuur-1, ry = 14, kolom = 10 en bank = 3, dus app_addr_width = ry + kolom + bank + rang = 28 Xilinx DDR2 MIG 7 Prestasieskatting-fig-2

Jy kan óf BANK_ROW_COLUMN óf ROW BANK Kolom kies.
Ek het ROW BANK Column verlaat wat die verstek adres kartering is.

Example ontwerp Simulasie met sintetiseerbare toetsbank

Onder Simulasie-instellings, kies QuestaSim/ModelSim Simulator en blaai na die saamgestelde biblioteke se ligging.
Vir besonderhede oor die wys na 'n derdeparty gereedskap-installasiepad, die kies van die teikensimulator en die samestelling en kartering van biblioteke, kan u verwys na (UG900) Vivado Design Suite Gebruikersgids Logic SimulasieXilinx DDR2 MIG 7 Prestasieskatting-fig-3

Begin die simulasie deur die GUI (Klik op die Run Simulation Tab in projekbestuurder) en maak seker dat jy die "toets geslaag"-boodskap in die transkripsie sien.

Prestasiesimulasie RTL-wysigings

  1. Regskliek op die bronne-oortjie, kies “voeg by of skep simulasiebronne” en blaai na die mig7_perfsim_traffic_generator.sv file en klik voltooi om dit by te voeg.
  2. Regskliek op die bronne-oortjie, kies “voeg by of skep simulasiebronne”, blaai na perfsim_stimulus.txt, en klik voltooi om dit by te voeg.
  3. Lewer kommentaar op die eksample_top instansiasie in die sim_tb_top.v file.
  4. Voeg die onderstaande RTL-reëls by 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;
  • 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;

FPGA Memory Controller instansiasie

mig_7series_0_mig u_mig_7series_0_mig (
// Geheue-koppelvlakpoorte

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

// Toepassingskoppelvlakpoorte

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

// Stelsel Klokpoorte

  • .sys_clk_i (sys_clk_i),

// Verwysing Klokpoorte

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

Prestasieverkeersgenerator instansiasie

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. Verander APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH en BANK_WIDTH volgens jou geheue deel seleksie.
    Waardes kan verkry word by die _mig.v file.
  • Die geel gemerkte instansiasienaam mig_7series_0_mig kan wissel op grond van jou komponentnaam tydens IP-skepping, verifieer of jy 'n ander naam gekies het en verander dit dienooreenkomstig.Xilinx DDR2 MIG 7 Prestasieskatting-fig-4
  • Sodra die IP gegenereer is, maak die _mig.v file en kruiskontroleer vir enige variasies in LHS seinname en korrigeer dit.
  • app_sr_req, app_ref_req en app_zq_req moet geïnisialiseer word na 0.
  • Soos eksample_top.v is opgemerk en nuut files bygevoeg word, sal jy waarskynlik "?" langs die
    mig_7reeks_0_mig.v file onder simulasiebronne.
    Om die korrekte te karteer file, regskliek mig_7series_0_mig.v, kies “Voeg bronne by”, blaai na
    /mig_7reeks_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    en voeg die mig_7series_0_mig_sim.v file.
  • As jy "?" vir die onderliggende files, voeg alle RTL files in die klok-, kontroleerder-, ip_top-, phy- en UI-vouers.
  • Sodra die RTL veranderinge gedoen is en al die nodige files by jou simulasiebronne gevoeg word, moet hiërargie soortgelyk wees aan figuur 5.
    Die files wat in rooi gemerk is, is nuut bygevoeg, en "?" word verwag op ECC-verwante modules aangesien die gekose geheuekonfigurasie die ECC-opsie gedeaktiveer het.Xilinx DDR2 MIG 7 Prestasieskatting-fig-5

Stimulus File Beskrywing
Elke stimuluspatroon is 48 bisse en die formaat word beskryf in Figure 6-1 tot 6-4.Xilinx DDR2 MIG 7 Prestasieskatting-fig-6

Adreskodering (adres [35:0])

Die adres word in die stimulus geënkodeer soos in Figuur 7-1 tot Figuur 7-6. Al die adresvelde moet in die heksadesimale formaat ingevoer word. Al die adresvelde is 'n breedte wat deur vier deelbaar is om in die heksadesimale formaat in te voer. Die toetsbank stuur slegs die vereiste stukkies van 'n adresveld na die geheuebeheerder.
Byvoorbeeldample, in 'n agt bank konfigurasie, word slegs bank Bits [2:0] na die Memory Controller gestuur en die oorblywende bisse word geïgnoreer. Die ekstra stukkies vir 'n adresveld word voorsien sodat u die adres in 'n heksadesimale formaat kan invoer.
U moet bevestig dat die waarde wat ingevoer is, ooreenstem met die breedte van 'n gegewe konfigurasie.Xilinx DDR2 MIG 7 Prestasieskatting-fig-7

  • Kolomadres (Kolom[11:0]) – Kolomadres in die stimulus word tot 'n maksimum van 12 bisse verskaf, maar jy moet dit aanspreek op grond van die kolomwydte-parameter wat in jou ontwerp gestel is.
  • Ry-adres (Ry[15:0]) – Ry-adres in die stimulus word verskaf tot 'n maksimum van 16 bisse, maar jy moet dit aanspreek op grond van die rywydte-parameter wat in jou ontwerp gestel is.
  • Bankadres (Bank[3:0]) – Bankadres in die stimulus word tot 'n maksimum van vier bisse verskaf, maar jy moet dit aanspreek op grond van die bankwydte-parameter wat in jou ontwerp gestel is.
  • Rangadres (Rank[3:0]) – Rangadres in die stimulus word tot 'n maksimum van vier bisse verskaf, maar jy moet dit aanspreek op grond van die rangwydte-parameter wat in jou ontwerp gestel is.
    Die adres word saamgestel op grond van die topvlak MEM_ADDR_ORDER parameter en gestuur na die gebruikerskoppelvlak

Opdrag Herhaal (Opdrag Herhaal [7:0])
Die opdragherhalingtelling is die aantal kere wat die onderskeie opdrag by die gebruikerskoppelvlak herhaal word. Die adres vir elke herhaling word met 8 verhoog. Die maksimum herhalingtelling is 128.
Die toetsbank kyk nie vir die kolomgrens nie en dit vou om as die maksimum kolomlimiet tydens die inkremente bereik word.
Die 128 opdragte vul die bladsy vol. Vir enige ander kolomadres as 0, gaan die herhalingtelling van 128 uiteindelik die kolomgrens oor en draai om na die begin van die kolomadres.

Busgebruik
Die busbenutting word by die gebruikerskoppelvlak bereken met inagneming van die totale aantal lees en skryf en die volgende vergelyking word gebruik:

Xilinx DDR2 MIG 7 Prestasieskatting-fig-8

  • BL8 neem vier geheuekloksiklusse
  • end_of_stimulus is die tyd wanneer al die opdragte gedoen word.
  • calib_done is die tyd wanneer die kalibrasie gedoen word.

Example Patrone
Hierdie examplese is gebaseer op die MEM_ADDR_ORDER gestel op BANK_ROW_COLUMN.

Enkelleespatroon
00_0_2_000F_00A_1 - Hierdie patroon is 'n enkele lees vanaf 10de kolom, 15de ry en tweede bank.Xilinx DDR2 MIG 7 Prestasieskatting-fig-9Enkelskryfpatroon
00_0_1_0040_010_0 – Hierdie patroon is 'n enkele skryf na die 32ste kolom, 128ste ry en eerste bank.Xilinx DDR2 MIG 7 Prestasieskatting-fig-10Enkel skryf en lees na dieselfde adres
00_0_2_000F_00A_0 – Hierdie patroon is 'n enkele skryf na 10de kolom, 15de ry en tweede bank.
00_0_2_000F_00A_1 – Hierdie patroon is 'n enkele lees vanaf 10de kolom, 15de ry en tweede bankXilinx DDR2 MIG 7 Prestasieskatting-fig-11

Veelvuldige skryf en lees met dieselfde adres
0A_0_0_0010_000_0 – Dit stem ooreen met 10 skrywes met adres vanaf 0 tot 80 wat in die kolom gesien kan word.Xilinx DDR2 MIG 7 Prestasieskatting-fig-12

0A_0_0_0010_000_1 – Dit stem ooreen met 10 lesings met adres vanaf 0 tot 80 wat in die kolom gesien kan word.Xilinx DDR2 MIG 7 Prestasieskatting-fig-13

Bladomhul tydens skryf
0A_0_2_000F_3F8_0 – Dit stem ooreen met 10 skryfstukke met kolomadres toegedraai aan die begin van die bladsy na een skryf.Xilinx DDR2 MIG 7 Prestasieskatting-fig-14

Simuleer die prestasieverkeergenerator

Op hierdie stadium is jy klaar met MIG example ontwerpsimulasie. Dit impliseer dat jou simulasie-opstelling gereed is, jy het prestasiesimulasie RTL-modifikasies gedoen, die nuwe simulasiehiërargie is korrek en jy het die stimuluspatrone verstaan. Begin die simulasie weer met 16 skryfwerk en lees in perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Prestasieskatting-fig-15

Doen alles, wag totdat die init_calib_complete sein bevestig word, en jy sal die voorgestelde aantal skryfwerk en leeswerk kan sien. Die simulasie sal dan stop. Xilinx DDR2 MIG 7 Prestasieskatting-fig-16

Wanneer jy gevra word om simulasie te verlaat, kies Nee en gaan na die transkripsievenster waar jy die prestasiestatistieke sal kan sien. Xilinx DDR2 MIG 7 Prestasieskatting-fig-17

As jy kies "hou op met simulasie" prestasiestatistieke sal geskryf word na a file genoem mig_band_width_output.txt geleë in die sim_1/behave gids.

Exampdie gidspad:-
/mig_7reeks_0_example_perf_sim\mig_7series_0_example.sim/sim_1/gedragXilinx DDR2 MIG 7 Prestasieskatting-fig-18

Jy mag dalk wonder hoekom die persenttage busbenutting is slegs 29. Herloop die simulasie met dieselfde IP-instellings, maar verander net die stimulus file tot 256 skryf en 256 lees

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Jy sal nou die persentasie sientage as 85, wat impliseer dat DDR3 beter busbenutting bied vir lang reeks skryf- en leessarsies. Xilinx DDR2 MIG 7 Prestasieskatting-fig-19

Algemene maniere om prestasie te verbeter

Die faktore wat doeltreffendheid beïnvloed, kan in twee afdelings verdeel word:

  1. Geheue Spesifiek
  2. Beheerder SpesifiekXilinx DDR2 MIG 7 Prestasieskatting-fig-20

Figuur 9 gee jou 'n oorview van die terme wat geheuespesifiek is.
Anders as SRAM's en Block Memories is DDR2- of DDR3-prestasie nie net die maksimum datatempo nie.

Dit hang af van baie tydsberekeningsfaktore, insluitend:

  • tRCD: Row Command Delay (of ras tot cas vertraging).
  • tCAS(CL): Kolom adres strobe latency.
  • tRP: Ryvoorlaaivertraging.
  • tRAS: Ry aktiewe tyd (aktiveer om vooraf te verander).
  • tRC: Ry siklus tyd. tRC = tRAS + tRP
  • tRAC: Radom toegang vertraging. tRAC = tRCD + tCAS
  • tCWL: Cas skryf latency.
  • tZQ: ZQ kalibrasie tyd.
  • tRFC: Ryverfrissiklustyd
  • tWTR: Skryf aan Lees vertraging. Laaste skryftransaksie na Lees-opdragtyd.
  • tWR: Skryf Hersteltyd. Laaste skryf transaksie na Voorlaai tyd

Tydsberekening van al die gelyste parameters hang af van die tipe geheue wat gebruik word en die spoedgraad van die geheueonderdeel.
Meer besonderhede oor die definisies en tydsberekening spesifikasies kan gevind word in DDR2 DDR3 JEDEC of in enige geheue toestel datablad.

Doeltreffendheid hang hoofsaaklik af van hoe toegang verkry word tot geheue. Verskillende adrespatrone gee verskillende doeltreffendheidsresultate.

Geheue tydsberekening bokoste

  1. Aktiveringstyd en Precharge-tyd wanneer jy na nuwe banke/rye verander of rye met in dieselfde bank verander.- So as jy ryverandering verminder, kan dit tRCD en tRP verwyder.
  2. Stuur deurlopende skryf- of leesopdragte - Handhawing van tCCD-tydsberekening.
  3. Minimaliseer skryf om te lees en lees om te skryf opdrag omskakeling - Skryf herstel tyd om te verander na lees toegang, bus omkeer tyd om te verander van lees na skryf
  4. Stel 'n behoorlike verversingsinterval.
    • DDR3 SDRAM vereis herlaai-siklusse teen 'n gemiddelde periodieke interval van tREFI.
    • 'n Maksimum van 8 bykomende Herlaai-opdragte kan vooraf uitgereik word ("ingetrek"). Dit verminder nie die aantal verversings nie, maar die maksimum interval tussen twee omliggende Verfris-opdragte is beperk tot 9 × tREFIXilinx DDR2 MIG 7 Prestasieskatting-fig-21
  • Gebruik al die banke – 'n Geskikte adresseringsmeganisme is verkieslik.
    • Ry-bank-kolom: Vir 'n transaksie wat oor 'n opeenvolgende adresruimte plaasvind, maak die kern outomaties dieselfde ry oop in die volgende bank van die DRAM-toestel om die transaksie voort te sit wanneer die einde van 'n bestaande ry bereik word. Dit is goed geskik vir toepassings wat die bars van groot datapakkies na opeenvolgende adresliggings vereis.
    • Bank-ry-kolom: Wanneer 'n rygrens oorgesteek word, sal die huidige ry gesluit wees en 'n ander ry sal binne dieselfde wal oopgemaak word. MSB is 'n bankadres wat gebruik kan word om van verskillende banke af te skakel. Dit is geskik vir korter, meer ewekansige transaksies na een blok geheue vir 'n tydperk en dan 'n sprong na 'n ander blok (bank)
  • Barslengte
    • BL 8 word ondersteun vir DDR3 op 7-reeks. BC4 het 'n baie lae doeltreffendheid wat minder as 50% is. Dit is omdat die uitvoeringstyd van BC4 dieselfde is as BL8. Die data word net binne die komponent gemasker.
    • In gevalle waar jy nie volle sarsie wil skryf nie, kan óf datamasker óf skryf-na-lees oorweeg word.
  • Stel 'n behoorlike ZQ-interval (slegs DDR3)
    Die beheerder stuur beide ZQ Kort (ZQCS) en ZQ Lang (ZQCL) Kalibrasie opdragte.
    • Voldoen aan die DDR3 Jedec-standaard
    • ZQ-kalibrasie word in afdeling 5.5 van die JEDEC-spesifikasie JESD79-3 DDR3 SDRAM-standaard bespreek
    • ZQ Kalibrasie kalibreer On Die Termination (ODT) met gereelde tussenposes om rekening te hou met variasies oor VT
    • Logika is vervat in bank_common.v/vhd
    • Parameter Tzqcs bepaal die tempo waarteen 'n ZQ Kalibrasie-opdrag na die geheue gestuur word
    • Dit is moontlik om die teller te deaktiveer en handmatig te stuur met behulp van app_zq_req, dit is soortgelyk aan om 'n Refresh handmatig te stuur.
      Verwys na (Xilinx Antwoord 47924) vir besonderhede.Xilinx DDR2 MIG 7 Prestasieskatting-fig-22

Beheerder oorhoofse koste

  1. Periodieke lees – Verwys na (Xilinx Antwoord 43344) vir besonderhede.
    • Moenie die tydperk van die lees verander nie
    • Slaan periodieke leeswerk oor tydens skryfwerk en reik die aantal gemiste leesstukke uit voor 'n ware lees
  2. Herrangskik – Verwys (Xilinx Antwoord 34392) vir besonderhede.
    Vir gebruikers- en AXI-koppelvlakontwerpe is dit verkieslik om dit geaktiveer te hê.
    • Herrangskik is die logika wat verskeie opdragte vorentoe kyk en gebruikersopdragvolgorde verander om nie-geheue-opdragte nie geldige bandwydte te beset nie. Die prestasie het ook verband gehou met die werklike verkeerspatroon.
    • Gebaseer op die adrespatroon, help herrangskik om vooraflading oor te slaan en opdragte te aktiveer en maak dat tRCD en tRP nie databandwydte beset nie.Xilinx DDR2 MIG 7 Prestasieskatting-fig-23
  3. Probeer om die aantal bankmasjiene te verhoog.
    • Die meeste van die beheerder se logika is in die bankmasjiene geleë en dit stem ooreen met DRAM-banke
    • 'n Gegewe bankmasjien bestuur 'n enkele DRAM-bank op enige gegewe tydstip.
    • Bankmasjientoewysing is dinamies, so dit is nie nodig om 'n bankmasjien vir elke fisiese bank te hê nie.
    • Bankmasjiene kan gekonfigureer word, maar dit is 'n kompromis tussen area en prestasie.
    • Die toelaatbare aantal bankmasjiene wissel van 2-8.
    • By verstek word 4 Bankmasjiene gekonfigureer deur RTL-parameters.
    • Om bankmasjiene te verander, oorweeg die parameter nBANK_MACHS = 8 vervat in memc_ui_top Example vir 8 bankmasjiene – nBANK_MACHS = 8

Jy is nou bewus van die faktore wat prestasie beïnvloed.
Oorweeg 'n stroomop-toepassing wat vir jou 512 datagrepe per pakkie gee en jy moet dit na verskillende geheue-liggings stoor. Aangesien 512 datagrepe gelyk is aan 64 DDR3-datasarsies, moet u die eksample ontwerp met 'n stimulus file wat 512 skrywes, 512 leesstukke en rywisseling vir elke 64 skrywes of leesstukke bevat:

  • 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 die einde van die simulasie sal jy sien dat busbenutting op 77 persent is. Xilinx DDR2 MIG 7 Prestasieskatting-fig-24

Figuur 11: Prestasiestatistieke vir 512 skryf- en 512 leesstukke – Rywisseling vir 64 skryf- of leesstukke. 

Jy kan nou die kennis wat in vroeëre afdeling geleer is, toepas om die doeltreffendheid te verbeter. Met 'n view om al die banke te gebruik in plaas van om die ry te verander, verander die adrespatroon om die bank te verander soos hieronder getoon.
Dit is gelykstaande aan die opstel van ROW_BANK_Column in die geheue adres kartering instelling in die 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 die einde van simulasie sal jy sien dat die vroeëre 77 persent busbenutting nou 87 is! Xilinx DDR2 MIG 7 Prestasieskatting-fig-25

As jy steeds hoër doeltreffendheid benodig, kan jy vir groot pakkiegroottes van 1024 of 2048 grepe gaan, of 'n handmatige verversing oorweeg.

Let wel: Xilinx moedig nie die omseil van kontroleerderverversing aan nie, aangesien ons onseker is of jy in staat sal wees om Jedec-outo-verversingstydsberekening te ontmoet wat databetroubaarheid beïnvloed.
Van die beheerderkant af kan jy nBANk_MACH verander en die verbetering in werkverrigting sien.
Dit kan egter u ontwerptydsberekening beïnvloed, verwys asseblief na (Xilinx Antwoord 36505) vir besonderhede oor nBANk_MACHXilinx DDR2 MIG 7 Prestasieskatting-fig-26

Maak die kernnaam_mig_sim.v oop file en verander die parameters nBANK_MACHS van 4 na 8 en herloop die simulasie. Om die parameterwaarde in hardeware in werking te laat tree, moet jy die kernnaam_mig.v opdateer file.
Ek het dieselfde patroon gebruik waar ons 87% busbenutting gekry het (figuur -12).
Met nBANK_MACHS op 8 gestel, is die doeltreffendheid nou 90%. Xilinx DDR2 MIG 7 Prestasieskatting-fig-27

Let ook daarop dat ½ en ¼ beheerders doeltreffendheid negatief beïnvloed weens hul vertragings.
Byvoorbeeldample, aangesien ons slegs opdragte elke 4 CK-siklusse kan stuur, is daar soms ekstra vulling wanneer daar aan minimum DRAM-tydberekeningspesifikasies voldoen word, wat doeltreffendheid van die teoretiese kan verminder.
Probeer verskillende beheerders om die een te vind wat by jou doeltreffendheidsvereiste pas.

Verwysings

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

Hersieningsgeskiedenis
13/03/2015 – Aanvanklike vrystelling

Laai PDF af: Xilinx DDR2 MIG 7 Prestasieskattingsgids

Verwysings

Los 'n opmerking

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde is gemerk *