Logo Xilinx

Xilinx DDR2 MIG 7 Guida alla stima delle prestazioni

Xilinx_DDR2_MIG_7_Performance-Stima-prodotto

Nota importante: Questo PDF scaricabile di un record di risposta viene fornito per migliorarne l'usabilità e la leggibilità. È importante notare che i record di risposta lo sono Webbasati su contenuti che vengono aggiornati di frequente man mano che nuove informazioni diventano disponibili. Si ricorda di visitare il supporto tecnico Xilinx Websito e riview (Xilinx Answer 63234) per l'ultima versione di questa risposta.

Introduzione

A causa del modo in cui sono progettate le memorie DDR2 e DDR3 e del design del controller della serie MIG 7, le prestazioni non sono semplici.
Richiede una comprensione dei vari parametri Jedec Timing e dell'architettura del controller e sarà necessario eseguire simulazioni per ottenere le stime.
Il principio generale per determinare le prestazioni è lo stesso, ma questo documento fornisce un modo semplice per ottenere l'efficienza utilizzando il MIG example design con l'ausilio di banco prova e stimolo fileè allegato qui.

Larghezza di banda effettiva

Il bus dati DRAM raggiunge la larghezza di banda vicina al picco solo durante i picchi di lettura e scrittura e il suo sovraccarico riduce la velocità dati effettiva.
Alcuni exampi di spese generali sono:

  • tempo di preaddebito per l'accesso alle righe nella stessa banca (Indirizzo di accesso non nella stessa hit della riga-pagina)
  • tempo di ripristino in scrittura per passare dall'accesso in scrittura a quello in lettura
  • il tempo di risposta del bus per passare dall'accesso in lettura a quello in scrittura

Stima delle prestazioni Xilinx DDR2 MIG 7-fig-28
Larghezza di banda effettiva = Larghezza di banda di picco * Efficienza 

Generazione del design MIG

Fare riferimento a UG586 Capitolo 1 per i dettagli passo passo su MIG IP ed esampgenerazione del design.
Prima di eseguire la simulazione delle prestazioni della serie MIG 7, procedere come segue per assicurarsi che l'ambiente di simulazione sia corretto. Apri il MIG esampProgettate e mappate le librerie appropriate, eseguite la simulazione e assicuratevi di poter vedere il messaggio "test superato" nella trascrizione.
Per dimostrare il flusso ho generato un IP MIG per xc7vx690tffg1761-2 e invocato l'exampdesign.
Due cose che dovrebbero essere notate sono i bit dell'indirizzo di memoria e la selezione della mappatura dell'indirizzo di memoria.
Per esempioample, ho selezionato MT41J128M8XX-125 sotto le opzioni a discesa della parte di memoria.Xilinx DDR2 MIG-7-Performance-Stima-fig-1

Per la parte di memoria selezionata dalla figura 1, riga = 14, colonna = 10 e banco = 3, quindi app_addr_width = riga + colonna + banco + rango = 28 Stima delle prestazioni Xilinx DDR2 MIG 7-fig-2

È possibile selezionare la colonna BANK_ROW_COLUMN o ROW BANK.
Ho lasciato la colonna ROW BANK che è la mappatura degli indirizzi predefinita.

Example design Simulazione con banco di prova sintetizzabile

In Impostazioni di simulazione selezionare QuestaSim/ModelSim Simulator e passare alla posizione delle librerie compilate.
Per i dettagli su come puntare a un percorso di installazione di strumenti di terze parti, selezionare il simulatore di destinazione e compilare e mappare le librerie, è possibile fare riferimento a (UG900) Guida per l'utente di Vivado Design Suite Logic SimulationStima delle prestazioni Xilinx DDR2 MIG 7-fig-3

Esegui la simulazione tramite la GUI (fai clic sulla scheda Esegui simulazione nel project manager) e assicurati di visualizzare il messaggio "test superato" nella trascrizione.

Modifiche di Performance Simulation RTL

  1. Fai clic con il pulsante destro del mouse sulla scheda delle fonti, seleziona "aggiungi o crea fonti di simulazione" e vai a mig7_perfsim_traffic_generator.sv file e fai clic su Fine per aggiungerlo.
  2. Fai clic con il pulsante destro del mouse sulla scheda delle fonti, seleziona "aggiungi o crea fonti di simulazione", vai a perfsim_stimulus.txt e fai clic su Fine per aggiungerlo.
  3. Commenta l'example_top istanziazione nel sim_tb_top.v file.
  4. Aggiungi le seguenti righe RTL a sim_tb_top,v
  • parametro locale APP_ADDR_WIDTH = 28;
  • parametro locale APP_DATA_WIDTH = 64;
  • localparam APP_MASK_WIDTH = APP_DATA_WIDTH/8;
  • localparam MEM_ADDR_ORDER = "BANK_ROW_COLUMN";
  • parametro locale BANK_WIDTH = 3;
  • parametro locale RANK_WIDTH = 1;
  • filo [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • filo [2:0] c0_ddr3_app_cmd;
  • filo c0_ddr3_app_en;
  • filo [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • filo c0_ddr3_app_wdf_end;
  • filo [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • filo c0_ddr3_app_wdf_wren;
  • filo [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • filo c0_ddr3_app_rd_data_end;
  • filo c0_ddr3_app_rd_data_valid;
  • filo c0_ddr3_app_rdy;
  • filo c0_ddr3_app_wdf_rdy;
  • filo c0_data_compare_error;
  • filo ui_clk;
  • collegare ui_clk_sync_rst;
  • filo app_sr_req = 0;
  • filo app_ref_req = 0;
  • filo app_zq_req =0;
  • filo c0_app_wdf_mask =0;

Istanziazione del controller di memoria FPGA

mig_7series_0_mig u_mig_7series_0_mig (
// Porte dell'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),

// Porte dell'interfaccia dell'applicazione

  • .app_addr (c0_ddr3_app_addr),
  • .app_cmd (c0_ddr3_app_cmd),
  • .app_it (c0_ddr3_app_it),
  • .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),

// Porte dell'orologio di sistema

  • .sys_clk_i (sys_clk_i),

// Porte di clock di riferimento

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

Istanziazione del generatore di traffico delle prestazioni

mig7_perfsim_traffic_generator#
(
.APP_DATA_WIDTH (APP_DATA_WIDTH),
.COL_LARGHEZZA (COL_LARGHEZZA),
.ROW_WIDTH (ROW_WIDTH),
.RANGO_LARGHEZZA (RANGO_LARGHEZZA),
.BANCO_LARGHEZZA (BANCO_LARGHEZZA),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK ),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)

u_traffico_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_it (c0_ddr3_app_it ),
.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. Modifica APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH e BANK_WIDTH in base alla selezione della parte di memoria.
    I valori possono essere ottenuti da _mig.v file.
  • Il nome dell'istanza evidenziato in giallo mig_7series_0_mig può variare in base al nome del componente durante la creazione dell'IP, verifica se hai scelto un nome diverso e modificalo di conseguenza.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-4
  • Una volta generato l'IP, apri il file _mig.v file e verificare eventuali variazioni nei nomi dei segnali LHS e correggerli.
  • app_sr_req, app_ref_req e app_zq_req devono essere inizializzati a 0.
  • Come esample_top.v è commentato e nuovo files vengono aggiunti, probabilmente vedrai "?" oltre al
    mig_7series_0_mig.v file sotto sorgenti di simulazione.
    Per mappare il corretto file, fai clic con il pulsante destro del mouse su mig_7series_0_mig.v, seleziona "Aggiungi fonti", seleziona
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    e aggiungi mig_7series_0_mig_sim.v file.
  • Se tu vedi "?" per il sottostante files, aggiungi tutti gli RTL filesi trova nelle cartelle clocking, controller, ip_top,phy e UI.
  • Una volta apportate le modifiche RTL e tutte le richieste files vengono aggiunti alle origini della simulazione, la gerarchia dovrebbe essere simile alla figura 5.
    IL files evidenziati in rosso vengono aggiunti di recente e "?" è previsto sui moduli correlati a ECC poiché la configurazione di memoria selezionata ha l'opzione ECC disabilitata.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-5

Stimolo File Descrizione
Ciascun modello di stimolo è di 48 bit e il formato è descritto nelle Figure da 6-1 a 6-4.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-6

Codifica indirizzo (Indirizzo [35:0])

L'indirizzo è codificato nello stimolo come da Figura 7-1 a Figura 7-6. Tutti i campi dell'indirizzo devono essere immessi in formato esadecimale. Tutti i campi dell'indirizzo hanno una larghezza divisibile per quattro per entrare nel formato esadecimale. Il banco di prova invia solo i bit richiesti di un campo indirizzo al controller di memoria.
Per esempioample, in una configurazione a otto banchi, solo i bit del banco [2:0] vengono inviati al controller di memoria ei bit rimanenti vengono ignorati. I bit extra per un campo indirizzo vengono forniti per inserire l'indirizzo in un formato esadecimale.
È necessario confermare che il valore immesso corrisponda alla larghezza di una determinata configurazione.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-7

  • Indirizzo colonna (Colonna[11:0]) – L'indirizzo di colonna nello stimolo viene fornito a un massimo di 12 bit, ma è necessario indirizzarlo in base al parametro di larghezza della colonna impostato nel progetto.
  • Indirizzo riga (Riga[15:0]) – L'indirizzo di riga nello stimolo viene fornito a un massimo di 16 bit, ma è necessario indirizzarlo in base al parametro di larghezza della riga impostato nel progetto.
  • Indirizzo banca (Banca[3:0]) – L'indirizzo della banca nello stimolo viene fornito a un massimo di quattro bit, ma è necessario indirizzarlo in base al parametro di larghezza della banca impostato nel progetto.
  • Indirizzo di rango (Rank[3:0]) – L'indirizzo di rango nello stimolo viene fornito a un massimo di quattro bit, ma è necessario indirizzarlo in base al parametro di larghezza del rango impostato nel progetto.
    L'indirizzo viene assemblato in base al parametro MEM_ADDR_ORDER di primo livello e inviato all'interfaccia utente

Ripeti comando (Ripeti comando [7:0])
Il numero di ripetizioni del comando è il numero di volte in cui il rispettivo comando viene ripetuto nell'interfaccia utente. L'indirizzo per ogni ripetizione viene incrementato di 8. Il numero massimo di ripetizioni è 128.
Il banco di prova non controlla il limite della colonna ed esegue il wrapping se viene raggiunto il limite massimo della colonna durante gli incrementi.
I 128 Comandi riempiono la pagina. Per qualsiasi indirizzo di colonna diverso da 0, il conteggio delle ripetizioni di 128 finisce per attraversare il limite di colonna e avvolgersi all'inizio dell'indirizzo di colonna.

Utilizzo degli autobus
L'utilizzo del bus viene calcolato sull'interfaccia utente prendendo in considerazione il numero totale di letture e scritture e viene utilizzata la seguente equazione:

Stima delle prestazioni Xilinx DDR2 MIG 7-fig-8

  • BL8 impiega quattro cicli di clock della memoria
  • end_of_stimulus è il momento in cui tutti i comandi vengono eseguiti.
  • calib_done è l'ora in cui la calibrazione è terminata.

Exampi modelli
Questi exampi le sono basati su MEM_ADDR_ORDER impostato su BANK_ROW_COLUMN.

Schema di lettura singola
00_0_2_000F_00A_1 – Questo modello è una singola lettura dalla 10a colonna, 15a riga e secondo banco.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-9Modello di scrittura singolo
00_0_1_0040_010_0 – Questo pattern è una singola scrittura nella 32a colonna, 128a riga e primo banco.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-10Singola scrittura e lettura allo stesso indirizzo
00_0_2_000F_00A_0 – Questo modello è una singola scrittura nella decima colonna, nella quindicesima riga e nel secondo banco.
00_0_2_000F_00A_1 – Questo modello è una lettura singola dalla decima colonna, dalla quindicesima riga e dal secondo bancoStima delle prestazioni Xilinx DDR2 MIG 7-fig-11

Più scritture e letture con lo stesso indirizzo
0A_0_0_0010_000_0 – Questo corrisponde a 10 scritture con indirizzo che va da 0 a 80 che si possono vedere nella colonna.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-12

0A_0_0_0010_000_1 – Questo corrisponde a 10 letture con indirizzo che va da 0 a 80 che si possono vedere nella colonna.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-13

A capo automatico durante le scritture
0A_0_2_000F_3F8_0 – Ciò corrisponde a 10 scritture con l'indirizzo di colonna racchiuso all'inizio della pagina dopo una scrittura.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-14

Simulazione del generatore di traffico delle prestazioni

A questo punto hai finito con MIG exampsimulazione del progetto. Ciò implica che la tua configurazione di simulazione è pronta, hai apportato modifiche RTL alla simulazione delle prestazioni, la nuova gerarchia di simulazione è corretta e hai compreso i modelli di stimolo. Esegui di nuovo la simulazione con 16 scritture e letture in perfsim_stimulus.txt.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-15

Esegui tutto, attendi fino a quando non viene asserito il segnale init_calib_complete e sarai in grado di vedere il numero proposto di scritture e letture. La simulazione verrà quindi interrotta. Stima delle prestazioni Xilinx DDR2 MIG 7-fig-16

Quando ti viene chiesto di uscire dalla simulazione, seleziona No e vai alla finestra di trascrizione dove potrai vedere le statistiche sulle prestazioni. Stima delle prestazioni Xilinx DDR2 MIG 7-fig-17

Se selezioni "Esci dalla simulazione" le statistiche sulle prestazioni verranno scritte in a file nominato mig_band_width_output.txt che si trova in sim_1/behave cartella.

Examppercorso della directory:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavStima delle prestazioni Xilinx DDR2 MIG 7-fig-18

Potresti chiederti perché la percentualetagL'utilizzo del bus è solo 29. Rieseguire la simulazione con le stesse impostazioni IP ma cambiando solo lo stimolo file a 256 scritture e 256 letture

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Ora vedrai la percentualetage come 85, il che implica che DDR3 offre un migliore utilizzo del bus per lunghe sequenze di scritture e burst di lettura. Stima delle prestazioni Xilinx DDR2 MIG 7-fig-19

Modi generali per migliorare le prestazioni

I fattori che influenzano l'efficienza possono essere suddivisi in due sezioni:

  1. Specifico per la memoria
  2. Specifico del controlloreStima delle prestazioni Xilinx DDR2 MIG 7-fig-20

La Figura 9 ti dà un overview dei termini che sono specifici della memoria.
A differenza delle SRAM e delle memorie a blocchi, le prestazioni DDR2 o DDR3 non sono solo la velocità dati massima.

Dipende da molti fattori temporali, tra cui:

  • RCD: Row Command Delay (o da ras a cas delay).
  • tCAS(CL): Latenza di strobe dell'indirizzo di colonna.
  • TRP: Ritardo precarica riga.
  • tras: Row Active Time (attivare al precambio).
  • cRC: Tempo di ciclo di fila. tRC = tRAS + tRP
  • TRAC: Ritardo di accesso Radom. tRAC = tRCD + tCAS
  • tCWL: Latenza di scrittura Cas.
  • tZQ: Tempo di calibrazione ZQ.
  • RFC: Tempo di ciclo di aggiornamento riga
  • TWTR: Ritardo da scrittura a lettura. Ultima transazione di scrittura all'ora del comando di lettura.
  • TWR: Scrivi Tempo di recupero. Ultima transazione di scrittura al tempo di precarica

La temporizzazione di tutti i parametri elencati dipende dal tipo di memoria utilizzata e dal grado di velocità della parte di memoria.
Maggiori dettagli sulle definizioni e le specifiche di temporizzazione possono essere trovati in DDR2 DDR3 JEDEC o in qualsiasi scheda tecnica del dispositivo di memoria.

L'efficienza dipende principalmente da come si accede alla memoria. Modelli di indirizzi diversi danno risultati di efficienza diversi.

Overhead di temporizzazione della memoria

  1. Tempo di attivazione e tempo di precarica quando si passa a nuove banche/righe o si cambiano le righe nella stessa banca. Quindi, se si riduce il cambio di riga, questo può rimuovere tRCD e tRP.
  2. Invia comandi di scrittura o lettura continui - Mantenimento della temporizzazione tCCD.
  3. Riduzione al minimo del passaggio dei comandi da scrittura a lettura e da lettura a scrittura: tempo di ripristino della scrittura per passare agli accessi in lettura, tempo di risposta del bus per passare dalla lettura alla scrittura
  4. Impostare un intervallo di aggiornamento adeguato.
    • DDR3 SDRAM richiede cicli di aggiornamento a un intervallo periodico medio di tREFI.
    • È possibile emettere in anticipo un massimo di 8 comandi di aggiornamento aggiuntivi ("tirati"). Ciò non riduce il numero di aggiornamenti, ma l'intervallo massimo tra due comandi di aggiornamento circostanti è limitato a 9 × tREFIStima delle prestazioni Xilinx DDR2 MIG 7-fig-21
  • Utilizza tutte le banche - È preferibile un meccanismo di indirizzamento adeguato.
    • Riga-Banca-Colonna: Per una transazione che si verifica su uno spazio di indirizzi sequenziale, il core apre automaticamente la stessa riga nel banco successivo del dispositivo DRAM per continuare la transazione quando viene raggiunta la fine di una riga esistente. È adatto ad applicazioni che richiedono il bursting di grandi pacchetti di dati in posizioni di indirizzi sequenziali.
    • Banca-Riga-Colonna: Quando si attraversa il confine di una riga, la riga corrente verrà chiusa e verrà aperta un'altra riga all'interno dello stesso banco. MSB è un indirizzo bancario, che può essere utilizzato per passare da una banca all'altra. È adatto per transazioni più brevi e più casuali su un blocco di memoria per un periodo di tempo e quindi per passare a un altro blocco (banca)
  • Lunghezza della raffica
    • BL 8 è supportato per DDR3 su serie 7. BC4 ha un'efficienza molto bassa inferiore al 50%. Questo perché il tempo di esecuzione di BC4 è lo stesso di BL8. I dati sono solo mascherati all'interno del componente.
    • Nei casi in cui non si desidera scrivere a raffica completa, è possibile prendere in considerazione la maschera di dati o la scrittura dopo la lettura.
  • Impostare un intervallo ZQ adeguato (solo DDR3)
    Il controller invia entrambi i comandi di calibrazione ZQ Short (ZQCS) e ZQ Long (ZQCL).
    • Aderire allo standard Jedec DDR3
    • La calibrazione ZQ è discussa nella sezione 5.5 dello standard JEDEC Spec JESD79-3 DDR3 SDRAM
    • ZQ Calibration calibra On Die Termination (ODT) a intervalli regolari per tenere conto delle variazioni tra VT
    • La logica è contenuta in bank_common.v/vhd
    • Il parametro Tzqcs determina la velocità con cui un comando di calibrazione ZQ viene inviato alla memoria
    • È possibile disabilitare il contatore e inviare manualmente utilizzando app_zq_req, è simile all'invio manuale di un aggiornamento.
      Fare riferimento a (Xilinx Answer 47924) per i dettagli.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-22

Spese generali del controllore

  1. Letture periodiche – Fare riferimento a (Risposta Xilinx 43344) per maggiori dettagli.
    • Non modificare il periodo della lettura
    • Salta le letture periodiche durante le scritture ed emette il numero di letture perse prima di una vera lettura
  2. Riordino – Fare riferimento (Risposta Xilinx 34392) per maggiori dettagli.
    Per i progetti User e AXI Interface è preferibile abilitare questa opzione.
    • Il riordino è la logica che guarda avanti diversi comandi e cambia l'ordine dei comandi dell'utente per fare in modo che i comandi non di memoria non occupino una larghezza di banda valida. Le prestazioni erano anche correlate al modello di traffico effettivo.
    • In base al modello di indirizzo, il riordino aiuta a saltare la precarica e ad attivare i comandi e fa in modo che tRCD e tRP non occupino la larghezza della banda dati.Stima delle prestazioni Xilinx DDR2 MIG 7-fig-23
  3. Prova ad aumentare il numero di bancomat.
    • La maggior parte della logica del controller risiede nelle macchine bancarie e corrispondono ai banchi DRAM
    • Una data macchina bancaria gestisce un singolo banco DRAM in un dato momento.
    • L'assegnazione del bancomat è dinamica, quindi non è necessario disporre di un bancomat per ogni banca fisica.
    • I bancomat possono essere configurati, ma è un compromesso tra area e prestazioni.
    • Il numero consentito di bancomat varia da 2 a 8.
    • Per impostazione predefinita, 4 bancomat sono configurati tramite i parametri RTL.
    • Per cambiare Bancomat si consideri il parametro nBANK_MACHS = 8 contenuto in memc_ui_top Example per 8 bancomat – nBANK_MACHS = 8

Ora sei consapevole dei fattori che influenzano le prestazioni.
Considera un'applicazione upstream che ti fornisce 512 byte di dati per pacchetto e devi salvarli in diverse posizioni di memoria. Poiché 512 byte di dati equivalgono a 64 burst di dati DDR3, eseguire nuovamente example design con uno stimolo file contenente 512 scritture, 512 letture e commutazione di riga per ogni 64 scritture o letture:

  • 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

Alla fine della simulazione vedrai che l'utilizzo del bus è al 77 percento. Stima delle prestazioni Xilinx DDR2 MIG 7-fig-24

Figura 11: Statistiche sulle prestazioni per 512 scritture e 512 letture – Cambio di riga per 64 scritture o letture. 

Ora puoi applicare le conoscenze apprese nella sezione precedente per migliorare l'efficienza. Con un view per utilizzare tutti i banchi invece di cambiare la riga, modificare il modello di indirizzo per cambiare il banco come mostrato di seguito.
Ciò equivale all'impostazione di ROW_BANK_Column nell'impostazione della mappatura degli indirizzi di memoria nella 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

Alla fine della simulazione vedrai che il precedente 77% di utilizzo del bus è ora 87! Stima delle prestazioni Xilinx DDR2 MIG 7-fig-25

Se hai ancora bisogno di una maggiore efficienza, puoi optare per pacchetti di grandi dimensioni di 1024 o 2048 byte o prendere in considerazione un aggiornamento manuale.

Nota: Xilinx non incoraggia a bypassare l'aggiornamento del controller poiché non siamo sicuri che sarai in grado di rispettare i tempi di aggiornamento automatico di Jedec che influiscono sull'affidabilità dei dati.
Dal lato controller puoi modificare nBANk_MACH e vedere il miglioramento delle prestazioni.
Tuttavia, ciò potrebbe influire sui tempi di progettazione, fare riferimento a (Risposta Xilinx 36505) per dettagli su nBANk_MACHStima delle prestazioni Xilinx DDR2 MIG 7-fig-26

Apri core_name_mig_sim.v file e modificare i parametri nBANK_MACHS da 4 a 8 e rieseguire la simulazione. Per rendere effettivo il valore del parametro nell'hardware, è necessario aggiornare core_name_mig.v file.
Ho usato lo stesso schema in cui abbiamo ottenuto l'87% di utilizzo del bus (figura -12).
Con nBANK_MACHS impostato su 8, l'efficienza è ora del 90%. Stima delle prestazioni Xilinx DDR2 MIG 7-fig-27

Si noti inoltre che i controller ½ e ¼ influiscono negativamente sull'efficienza a causa delle loro latenze.
Per esempioample, dal momento che possiamo inviare comandi solo ogni 4 cicli CK, a volte c'è un riempimento extra quando si rispettano le specifiche di temporizzazione DRAM minime, che possono ridurre l'efficienza rispetto al teorico.
Prova diversi controller per trovare quello che si adatta alle tue esigenze di efficienza.

Riferimenti

  1. SoC Zynq-7000 AP e FPGA serie 7 MIS v2.3 [UG586]
  2. Centro soluzioni MIG Xilinx http://www.xilinx.com/support/answers/34243.html

Cronologia delle revisioni
13/03/2015 – Rilascio iniziale

Scarica il pdf: Xilinx DDR2 MIG 7 Guida alla stima delle prestazioni

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *