Xilinx DDR2 MIG 7 Guida di stima di rendiment
Nota impurtante: Stu PDF scaricabile di un Record di Risposta hè furnitu per rinfurzà a so usabilità è a leggibilità. Hè impurtante à nutà chì Answer Records sò Web- cuntenuti basati chì sò spessu aghjurnati cum'è nova infurmazione diventa dispunibule. Vi ricurdate di visità u Supportu Tecnicu Xilinx Websitu è review (Xilinx Answer 63234) per l'ultima versione di sta Risposta.
Introduzione
A causa di a manera chì i ricordi DDR2 è DDR3 sò architetti è u controller di a serie MIG 7 hè cuncepitu, u rendiment ùn hè micca ghjustu.
Hè bisognu di una cunniscenza di diversi paràmetri di Jedec Timing è di l'Architettura di u controller, è avete bisognu di eseguisce simulazioni per uttene l'estimazioni.
U principiu generale per a determinazione di e prestazioni hè u listessu, ma stu documentu furnisce un modu faciule per ottene efficienza cù u MIG exampu disignu cù l'aiutu di bancu di teste è stimulus filehè attaccatu quì.
Larghezza di banda efficace
U bus di dati DRAM ottene una larghezza di banda vicinu à u piccu solu durante i bursts di lettura è scrittura è u so overhead riduce a tarifa di dati effettiva.
Uni pochi exampi letti di overhead sò:
- Precharge u tempu d'accessu à e file in u stessu bancu (Access à l'indirizzu micca in a stessa pagina di fila)
- scrive u tempu di ricuperazione per cambià da scrittura à accessu di lettura
- u tempu di turnaround di l'autobus per cambià da l'accessu di lettura à scrittura
Larghezza di banda effettiva = Larghezza di banda massima * Efficienza
MIG Design Generation
Riferite à UG586 Capitulu 1 per i dettagli passu à passu nantu à MIG IP è exampa generazione di design.
Prima di eseguisce a simulazione di prestazione di a serie MIG 7, fate u seguente per assicurà chì u vostru ambiente di simulazione hè bè. Aprite u MIG example designe è mappa e librerie appropritate, eseguite a simulazione, è assicuratevi chì pudete vede u missaghju "test passatu" in a trascrizione.
Per dimustrà u flussu aghju generatu un IP MIG per xc7vx690tffg1761-2 è invucatu l'exampcuncepimentu.
Dui cose chì deve esse nutatu sò i bits di l'indirizzu di memoria è a selezzione di mapping di l'indirizzu di memoria.
Per esample, aghju sceltu MT41J128M8XX-125 sottu a parte di memoria drop down options.
Per a parte di memoria selezziunata da a Figura-1, fila = 14, colonna = 10 è banca = 3, cusì app_addr_width = fila + colonna + banca + rank = 28
Pudete selezziunà a colonna BANK_ROW_COLUMN o ROW BANK.
Aghju lasciatu a Colonna ROW BANK chì hè a mappa di l'indirizzu predeterminatu.
Example design Simulazione cù bancu di prova sintetizzabile
Sottu paràmetri di simulazione, selezziunate QuestaSim/ModelSim Simulator è andate à u locu di e biblioteche compilate.
Per i dettagli nantu à indicà un percorsu d'installazione di strumenti di terze parti, selezziunà u simulatore di destinazione, è cumpilà è mapping biblioteche, pudete riferite à (UG900) Vivado Design Suite User Guide Logic Simulation
Eseguite a simulazione attraversu a GUI (Cliccate a Tabulazione Run Simulation in u project manager) è assicuratevi di vede u missaghju "test passatu" in a trascrizione.
Mudificazioni RTL di Simulazione di Performance
- Cliccate cù u dirittu nantu à a tabulazione di fonti, selezziunate "aghjunghje o creà fonti di simulazione", è andate à u mig7_perfsim_traffic_generator.sv. file è cliccate finisci per aghjunghje.
- Cliccate cù u dirittu nantu à a tabulazione di e fonti, selezziunate "aghjunghje o creà fonti di simulazione", andate à perfsim_stimulus.txt, è cliccate finisce per aghjunghje.
- Commentate l'example_top istanza in u sim_tb_top.v file.
- Aghjunghjite e linee RTL sottu à 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;
- filu [APP_ADDR_WIDTH-1: 0] c0_ddr3_app_addr;
- filu [2: 0] c0_ddr3_app_cmd;
- wire c0_ddr3_app_en;
- filu [APP_DATA_WIDTH-1: 0] c0_ddr3_app_wdf_data;
- filu c0_ddr3_app_wdf_end;
- filu [APP_MASK_WIDTH-1: 0] c0_ddr3_app_wdf_mask;
- filu c0_ddr3_app_wdf_wren;
- filu [APP_DATA_WIDTH-1: 0] c0_ddr3_app_rd_data;
- wire c0_ddr3_app_rd_data_end;
- wire c0_ddr3_app_rd_data_valid;
- filu c0_ddr3_app_rdy;
- filu c0_ddr3_app_wdf_rdy;
- wire c0_data_compare_error;
- filu ui_clk;
- wire ui_clk_sync_rst;
- filu app_sr_req = 0;
- filu app_ref_req = 0;
- filu app_zq_req = 0;
- filu c0_app_wdf_mask = 0;
Istanziazione di u Controller di Memoria FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Porti di l'interfaccia di memoria
- .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),
// Porti di l'interfaccia di l'applicazione
- .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),
// System Clock Ports
- .sys_clk_i (sys_clk_i),
// Reference Clock Ports
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Instanciazione di generatore di trafficu di rendiment
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. Mudificà APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH è BANK_WIDTH secondu a vostra selezzione di parte di memoria.
I valori ponu esse acquistati da u _mig.v file. - U nome d'istanciazione evidenziatu giallu mig_7series_0_mig pò varià basatu annantu à u vostru nome di cumpunente durante a creazione di l'IP, verificate s'ellu avete sceltu un nome diversu è cambiallu in cunseguenza.
- Una volta chì l'IP hè generatu, apre u _mig.v file è verificate incruciate per eventuali variazioni in i nomi di signali LHS è corrette.
- app_sr_req, app_ref_req è app_zq_req deve esse inizializzati à 0.
- Cum'è example_top.v hè cummentatu è novu files sò aghjuntu, probabilmente vi vede "?" accantu à
mig_7series_0_mig.v file sottu fonti di simulazione.
Per mapà u currettu file, cliccate dritta mig_7series_0_mig.v, selezziunà "Add Sources", Sfoglia à
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
è aghjunghje u mig_7series_0_mig_sim.v file. - Se vede "?" per u sottu files, aghjunghje tutti i RTL files in i cartulare di clock, controller, ip_top,phy è UI.
- Una volta chì i cambiamenti RTL sò fatti è tutti i necessarii files sò aghjuntu à i vostri fonti di simulazione, a Gerarchia deve esse simile à a Figura 5.
U fileI evidenziati in rossu sò aghjuntu di novu, è "?" hè previstu nantu à i moduli cunnessi ECC postu chì a cunfigurazione di memoria scelta hà l'opzione ECC disattivata.
Stimulu File Descrizzione
Ogni mudellu di stimulus hè 48 bits è u furmatu hè descrittu in Figure 6-1 à 6-4.
Codificazione di l'indirizzu (indirizzu [35:0])
L'indirizzu hè codificatu in u stimulus cum'è Figura 7-1 à Figura 7-6. Tutti i campi di indirizzu deve esse inseriti in u formatu esadecimale. Tutti i campi di l'indirizzu sò una larghezza chì hè divisibule per quattru per entre in u formatu esadecimale. U bancu di prova manda solu i bits richiesti di un campu di indirizzu à u Controller di Memoria.
Per esample, in una cunfigurazione di ottu banca, solu Bits banca [2: 0] sò mandati à u Controller di Memoria è i bits restanti sò ignorati. I bits extra per un campu di indirizzu sò furniti per voi per inserisce l'indirizzu in un formatu esadecimale.
Duvete cunfirmà u valore inseritu currisponde à a larghezza di una cunfigurazione data.
- Indirizzu di Colonna (Colonna [11: 0]) - L'indirizzu di a colonna in u stimulu hè furnitu à un massimu di 12 bits, ma avete bisognu di indirizzà questu basatu annantu à u paràmetru di larghezza di a colonna stabilitu in u vostru disignu.
- Indirizzu di fila (Row[15:0]) - L'indirizzu di fila in u stimulu hè furnitu à un massimu di 16 bits, ma avete bisognu di affruntà questu basatu annantu à u paràmetru di larghezza di fila stabilitu in u vostru disignu.
- Indirizzu bancariu (bancu [3:0]) - L'indirizzu di u bancu in u stimulu hè furnitu à un massimu di quattru bits, ma avete bisognu di indirizzà questu basatu annantu à u paràmetru di larghezza di u bancu stabilitu in u vostru disignu.
- Indirizzu di Classifica (Rang[3: 0]) - L'indirizzu di u rangu in u stimulu hè furnitu à un massimu di quattru bits, ma avete bisognu di indirizzà questu basatu annantu à u paràmetru di larghezza di rangu stabilitu in u vostru disignu.
L'indirizzu hè assemblatu basatu annantu à u paràmetru MEM_ADDR_ORDER di primu livellu è mandatu à l'interfaccia d'utilizatore
Ripetizione di cumanda (Ripetizione di cumanda [7:0])
U numeru di ripetizioni di cumanda hè u numeru di volte chì u cumandamentu rispettivu hè ripetutu à l'interfaccia d'utilizatore. L'indirizzu per ogni repetizione hè aumentatu da 8. U numeru massimu di ripetizioni hè 128.
U bancu di prova ùn cuntrolla micca u cunfini di a colonna è s'avvicina se u limitu massimu di a colonna hè righjuntu durante l'incrementi.
I 128 Cumandamenti riempianu a pagina. Per qualsiasi indirizzu di colonna altru ch'è 0, u numeru di ripetizioni di 128 finisce per attraversà u cunfini di a colonna è si mette in u principiu di l'indirizzu di a colonna.
Utilizazione di l'autobus
L'utilizazione di l'autobus hè calculata à l'Interfaccia d'Usuariu tenendu in considerazione u numeru tutale di Letture è Scritture è l'equazione seguente hè aduprata:
- BL8 piglia quattru cicli di clock di memoria
- end_of_stimulus hè u tempu quandu tutti i cumandamenti sò fatti.
- calib_done hè u tempu quandu a calibrazione hè fatta.
Example Patterns
Questi exampI file sò basati nantu à u MEM_ADDR_ORDER stabilitu à BANK_ROW_COLUMN.
Un mudellu di lettura unicu
00_0_2_000F_00A_1 - Stu mudellu hè una sola lettura da a 10a colonna, a 15a fila è a seconda banca.Un mudellu di scrittura unicu
00_0_1_0040_010_0 - Stu mudellu hè una sola scrittura à a 32a colonna, a 128a fila è a prima banca.Singulu Scrivite è Lettu à u stessu Indirizzu
00_0_2_000F_00A_0 – Stu mudellu hè una sola scrittura à a 10a colonna, a 15a fila è a seconda banca.
00_0_2_000F_00A_1 – Stu mudellu hè una sola lettura da a 10a colonna, a 15a fila è a seconda banca
Scritture multiple è leghje cù u stessu indirizzu
0A_0_0_0010_000_0 – Questu currisponde à 10 scrive cù l'indirizzu chì partenu da 0 à 80 chì ponu esse vistu in a colonna.
0A_0_0_0010_000_1 – Questu currisponde à 10 leghje cù l'indirizzu chì partenu da 0 à 80 chì ponu esse vistu in a colonna.
Avvolgi a pagina durante i testi
0A_0_2_000F_3F8_0 – Questu currisponde à 10 scrivite cù l'indirizzu di a colonna impannillata à l'iniziu di a pagina dopu una scrittura.
Simulazione di u Generatore di Traffic Performance
À questu puntu avete finitu cù MIG exampsimulazione di u disignu. Questu implica chì a vostra configurazione di simulazione hè pronta, avete fattu mudificazioni RTL di simulazione di rendiment, a nova ghjerarchia di simulazione hè curretta è avete capitu i mudelli di stimuli. Eseguite a simulazione una volta cù 16 scritti è leghje in perfsim_stimulus.txt.
Fate run-all, aspettate finu à chì u signale init_calib_complete hè affirmatu, è puderete vede u numeru prupostu di scrittura è leghje. Allora a simulazione si ferma.
Quandu vi hè dumandatu à abbandunà a simulazione, selezziunate No è andate à a finestra di trascrizione induve puderete vede e statistiche di rendiment.
Sè vo selezziunate "abbandunà a simulazione" e statistiche di prestazione seranu scritte à a file chjamatu mig_band_width_output.txt situatu in u sim_1/behave cartulare.
Examppercorso di u cartulare: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Puderete dumandassi perchè u percentualetagL'utilizazione di l'autobus hè solu 29. Rerun the simulation with the same IP settings but just changeing the stimulus file à 256 scrive è 256 leghje
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Avà vi vede u percentinutage cum'è 85, chì implica chì DDR3 offre una megliu utilizazione di l'autobus per una longa sequenza di scrittura è lettura di bursts.
Modi generali per migliurà u rendiment
I fatturi chì influenzanu l'efficienza ponu esse divisi in dui sezzioni:
- Memoria specifica
- Controller specificu
Figura 9 vi dà un sopraview di i termini chì sò specifichi di memoria.
A cuntrariu di SRAM è Block Memories, u rendiment DDR2 o DDR3 ùn hè micca solu a tarifa massima di dati.
Dipende da parechji fattori di timing, cumpresi:
- tRCD: Row Command Delay (o ras to cas delay).
- tCAS(CL): Latenza di strobe di l'indirizzu di a colonna.
- tRP: Ritardo di precarica di fila.
- tRAS: Row Active Time (attivate per precambià).
- tRC: U tempu di ciclu di fila. tRC = tRAS + tRP
- trac: ritardu di accessu Radom. tRAC = tRCD + tCAS
- tCWL: Cas scrive latenza.
- tZQ: U tempu di calibrazione ZQ.
- tRFC: Row Refresh Cycle Time
- tWTR: Scrivite à leghje ritardu. Ultima transazzione di scrittura à u tempu di cumandamentu di lettura.
- tWR: Scrivite u tempu di ricuperazione. Ultima transazzione di scrittura à u tempu di Precharge
U timing di tutti i paràmetri elencati dipende da u tipu di memoria utilizata è u gradu di velocità di a parte di memoria.
Più dettagli nantu à e definizione è e specificazioni di u tempu ponu esse truvati in DDR2 DDR3 JEDEC o in qualsiasi datasheet di u dispositivu di memoria.
L'efficienza dipende principalmente da cumu si accede à a memoria. Diversi mudelli di indirizzu dannu risultati di efficienza diffirenti.
Overheads di tempu di memoria
- U tempu d'attivazione è u tempu di Precharge quandu si cambia à novi banche / fila o cambianu fila cù in u stessu bancu.- Allora s'è riduce u cambiamentu di fila, questu pò sguassà tRCD è tRP.
- Mandate cumandamenti di scrittura o lettura cuntinui - Mantene u timing tCCD.
- Minimizà a scrittura per leghje è leghje per scrive u cambiamentu di cumandamentu - Scrivite u tempu di ricuperazione per cambià à l'accessi di lettura, u tempu di turnaround di l'autobus per cambià da leghje à scrive
- Stabilite un intervallu di rinfrescante propiu.
- DDR3 SDRAM richiede cicli di rinfrescante à un intervallu periodicu mediu di tREFI.
- Un massimu di 8 cumandamenti Refresh supplementari ponu esse emessi in anticipu ("pulled in"). Questu ùn riduce micca u numeru di rinfreschi, ma l'intervallu massimu trà dui cumandamenti Refresh circundante hè limitatu à 9 × tREFI.
- Aduprate tutte e banche - Un mecanismu di indirizzamentu adattatu hè preferibile.
- Row-Bank-Colonna: Per una transazzione chì succede nantu à un spaziu di indirizzu sequenziale, u core apre automaticamente a stessa fila in u prossimu bancu di u dispositivu DRAM per cuntinuà a transazzione quandu a fine di una fila esistente hè ghjunta. Hè bè adattatu à l'applicazioni chì necessitanu sfondate di grandi pacchetti di dati in locu di indirizzu sequenziale.
- Bank-Row-Colonna: Quandu si attraversà un cunfini di fila, a fila attuale serà chjusa è una altra fila serà aperta in u stessu bancu. MSB hè un indirizzu bancariu, chì pò esse usatu per cambià da diverse banche. Hè adattatu per transazzioni più brevi, più aleatorii à un bloccu di memoria per un periudu di tempu è dopu un saltu à un altru bloccu (bancu)
- Lunghezza di burst
- BL 8 hè supportatu per DDR3 nantu à a serie 7. BC4 hà una efficienza assai bassu chì hè menu di 50%. Questu hè chì u tempu d'esekzione di BC4 hè u listessu cum'è BL8. I dati sò solu mascherati in u cumpunente.
- In i casi induve ùn vulete micca scrive un burst pienu, pò esse cunsideratu sia a maschera di dati sia a scrittura dopu à leghje.
- Definite un intervallu ZQ propiu (solu DDR3)
U controller manda i cumandamenti di calibrazione ZQ Short (ZQCS) è ZQ Long (ZQCL).- Aderite à u DDR3 Jedec Standard
- A calibrazione ZQ hè discututa in a sezione 5.5 di u JEDEC Spec JESD79-3 DDR3 SDRAM Standard.
- ZQ Calibration calibra l'On Die Termination (ODT) à intervalli regulari per piglià in contu e variazioni in VT
- A logica hè contenuta in bank_common.v/vhd
- U paràmetru Tzqcs determina a tarifa à quale un cumandamentu di calibrazione ZQ hè mandatu à a memoria
- Hè pussibule di disattivà u contatore è mandà manualmente utilizendu app_zq_req, hè simile à mandà manualmente un Refresh.
Vede (Xilinx Answer 47924) per i dettagli.
Overheads di u Controller
- Letture periodiche - Consultate (Risposta Xilinx 43344) per i dettagli.
- Ùn cambiate micca u periodu di lettura
- Saltate letture periodiche durante i scritti è emette u numeru di letture mancate prima di una vera lettura
- Riordinazione - Riferite (Risposta Xilinx 34392) per i dettagli.
Per i disinni di User è AXI Interface hè preferibile avè questu attivatu.- Reorder hè a logica chì guarda avanti parechji cumandamenti è cambia l'ordine di cumandamentu di l'utilizatori per fà chì i cumandamenti senza memoria ùn occupanu micca una larghezza di banda valida. U rendiment hè ancu ligatu à u mudellu di trafficu attuale.
- Basatu nantu à u mudellu di indirizzu, reorder aiuta à saltà a precarica è attivà i cumandamenti è face chì tRCD è tRP ùn occupanu micca a larghezza di banda di dati.
- Pruvate à cresce u numeru di Macchine Bank.
- A maiò parte di a logica di u controller reside in e macchine bancarie è currispondenu à i banche DRAM
- Una macchina bancaria determinata gestisce un unicu bancu DRAM in ogni mumentu.
- L'assignazione di a macchina bancaria hè dinamica per quessa ùn hè micca necessariu avè una macchina bancaria per ogni banca fisica.
- E macchine bancarie ponu esse cunfigurate, ma hè un scambiu trà l'area è u rendiment.
- U numeru permessu di macchine bancarie varieghja da 2-8.
- Per automaticamente, 4 Bank Machines sò cunfigurati attraversu i paràmetri RTL.
- Per cambià Bank Machines, cunzidira u paràmetru nBANK_MACHS = 8 cuntenutu in memc_ui_top Example per 8 Bank Machines - nBANK_MACHS = 8
Avà sapete i fatturi chì influenzanu u rendiment.
Cunsiderate una applicazione upstream chì vi dà 512 byte di dati per pacchettu è avete bisognu di salvà in diverse lochi di memoria. Siccomu 512 byte di dati hè uguale à 64 raffiche di dati DDR3, riavvia l'exampu disignu cù un stimulus file chì cuntene 512 scritture, 512 letture è cambiu di fila per ogni 64 scrittura o leghje:
- 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
À a fine di a simulazione, vi vede chì l'utilizazione di l'autobus hè à 77 per centu.
Figura 11: Statistiche di rendiment per 512 scritture è 512 letture - Cambia fila per 64 scrittura o lettura.
Pudete avà applicà a cunniscenza amparata in a sezione precedente per migliurà l'efficienza. Cù a view per utilizà tutte e banche invece di cambià a fila, mudificà u mudellu di indirizzu per cambià u bancu cum'è mostratu quì sottu.
Questu hè equivalente à stabilisce ROW_BANK_Column in l'impostazione di mappatura di l'indirizzu di memoria in a GUI MIG.
- 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
À a fine di a simulazione, vi vede chì u 77 per centu di l'utilizazione di l'autobus hè avà 87!
Se avete sempre bisognu di più efficienza, pudete andà per grandi dimensioni di pacchetti di 1024 o 2048 bytes, o cunsiderà un rinfrescante manuale.
Nota: Xilinx ùn incuragisce micca l'annullamentu di rinfrescante di u controller postu chì ùn simu micca sicuri di pudè scuntrà u timing di rinfrescante automaticu Jedec chì affetta l'affidabilità di e dati.
Da u latu di u controller pudete cambià nBANk_MACH è vede a migliione di u rendiment.
Tuttavia, questu pò influenzà u vostru tempu di cuncepimentu, per piacè riferite (Risposta Xilinx 36505) per i dettagli nantu à nBANk_MACH
Aprite u core_name_mig_sim.v file è cambià i paràmetri nBANK_MACHS da 4 à 8 è ripete a simulazione. Per avè u valore di u paràmetru effettue in u hardware, avete bisognu di aghjurnà u core_name_mig.v file.
Aghju utilizatu u stessu mudellu induve avemu avutu 87% di l'utilizazione di l'autobus (figura -12).
Cù nBANK_MACHS stabilitu à 8, l'efficienza hè issa 90%.
Fate ancu nota chì i controller ½ è ¼ affettanu negativamente l'efficienza per via di e so latenze.
Per esample, postu chì pudemu solu mandà cumandamenti ogni 4 cicli CK ci hè qualchì volta un padding extra quandu aderiscenu à e specifiche di timing DRAM minimu, chì ponu diminuite l'efficienza da u teoricu.
Pruvate diverse controller per truvà quellu chì si adatta à i vostri bisogni di efficienza.
Referenze
- Zynq-7000 AP SoC è FPGA Serie 7 MIS v2.3 [UG586]
- Xilinx MIG Solution Center http://www.xilinx.com/support/answers/34243.html
Storia di rivisione
13/03/2015 - Liberazione iniziale
Scaricate u PDF: Xilinx DDR2 MIG 7 Guida di stima di rendiment