Xilinx-λογότυπο

Οδηγός εκτίμησης απόδοσης Xilinx DDR2 MIG 7

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Σημαντική Σημείωση: Αυτό το PDF ενός αρχείου απαντήσεων με δυνατότητα λήψης παρέχεται για τη βελτίωση της χρηστικότητας και της αναγνωσιμότητάς του. Είναι σημαντικό να σημειωθεί ότι τα αρχεία απαντήσεων είναι Web-βασισμένο περιεχόμενο που ενημερώνεται συχνά καθώς γίνονται διαθέσιμες νέες πληροφορίες. Σας υπενθυμίζεται να επισκεφτείτε την τεχνική υποστήριξη της Xilinx Website και ρεview (Xilinx Answer 63234) για την πιο πρόσφατη έκδοση αυτής της απάντησης.

Εισαγωγή

Λόγω του τρόπου με τον οποίο έχουν σχεδιαστεί οι μνήμες DDR2 και DDR3 και έχει σχεδιαστεί ο ελεγκτής της σειράς MIG 7, η απόδοση δεν είναι απλή.
Απαιτεί κατανόηση των διάφορων παραμέτρων χρονισμού Jedec και της Αρχιτεκτονικής του ελεγκτή και θα χρειαστεί να εκτελέσετε προσομοιώσεις για να λάβετε τις εκτιμήσεις.
Η γενική αρχή για τον προσδιορισμό της απόδοσης είναι η ίδια, αλλά αυτό το έγγραφο παρέχει έναν εύκολο τρόπο για να επιτύχετε αποδοτικότητα χρησιμοποιώντας το MIG exampΣχεδιασμός με τη βοήθεια πάγκου δοκιμής και ερεθίσματος fileεπισυνάπτεται εδώ.

Αποτελεσματικό εύρος ζώνης

Ο δίαυλος δεδομένων DRAM επιτυγχάνει εύρος ζώνης σχεδόν αιχμής μόνο κατά τη διάρκεια ριπών ανάγνωσης και εγγραφής και η επιβάρυνση του μειώνει τον πραγματικό ρυθμό δεδομένων.
Μερικοί πρώηνampτα γενικά έξοδα είναι:

  • προφόρτιση χρόνου πρόσβασης σε σειρές στην ίδια τράπεζα (Διεύθυνση πρόσβασης όχι στην ίδια επίσκεψη σελίδας σειράς)
  • εγγραφή χρόνου ανάκτησης για αλλαγή από εγγραφή σε πρόσβαση ανάγνωσης
  • ο χρόνος περιστροφής του διαύλου για αλλαγή από πρόσβαση ανάγνωσης σε εγγραφή

Xilinx DDR2 MIG 7 Performance Estimation-fig-28
Effective Bandwidth = Peak Bandwidth * Efficiency 

MIG Design Generation

Ανατρέξτε στο UG586 Κεφάλαιο 1 για λεπτομέρειες βήμα προς βήμα σχετικά με το MIG IP και π.χample design γενιά.
Πριν εκτελέσετε την προσομοίωση απόδοσης της σειράς MIG 7, κάντε τα εξής για να βεβαιωθείτε ότι το περιβάλλον προσομοίωσης είναι εντάξει. Ανοίξτε το MIG exampΣχεδιάστε και χαρτογραφήστε τις κατάλληλες βιβλιοθήκες, εκτελέστε την προσομοίωση και βεβαιωθείτε ότι μπορείτε να δείτε το μήνυμα "δοκιμή πέρασε" στη μεταγραφή.
Για να δείξω τη ροή, δημιούργησα μια MIG IP για το xc7vx690tffg1761-2 και χρησιμοποίησα το exampσχέδιο.
Δύο πράγματα που πρέπει να σημειωθούν είναι τα bit διεύθυνσης μνήμης και η επιλογή αντιστοίχισης διευθύνσεων μνήμης.
Για π.χample, έχω επιλέξει MT41J128M8XX-125 κάτω από τις αναπτυσσόμενες επιλογές του τμήματος μνήμης.Xilinx DDR2 MIG-7-Performance-Estimation-fig-1

Για το επιλεγμένο τμήμα μνήμης από το Σχήμα-1, σειρά = 14, στήλη = 10 και τράπεζα = 3, οπότε app_addr_width = γραμμή + στήλη + τράπεζα + κατάταξη = 28 Xilinx DDR2 MIG 7 Performance Estimation-fig-2

Μπορείτε να επιλέξετε στήλη BANK_ROW_COLUMN ή ROW BANK.
Έχω αφήσει τη στήλη ROW BANK που είναι η προεπιλεγμένη αντιστοίχιση διευθύνσεων.

Example design Προσομοίωση με συνθετικό πάγκο δοκιμών

Στην περιοχή Ρυθμίσεις προσομοίωσης, επιλέξτε QuestaSim/ModelSim Simulator και περιηγηθείτε στη θέση των μεταγλωττισμένων βιβλιοθηκών.
Για λεπτομέρειες σχετικά με την κατάδειξη μιας διαδρομής εγκατάστασης εργαλείων τρίτων, την επιλογή του προσομοιωτή προορισμού και τη μεταγλώττιση και αντιστοίχιση βιβλιοθηκών, μπορείτε να ανατρέξετε στο (UG900) Vivado Design Suite User Guide Logic SimulationXilinx DDR2 MIG 7 Performance Estimation-fig-3

Εκτελέστε την προσομοίωση μέσω του GUI (Κάντε κλικ στην καρτέλα Εκτέλεση προσομοίωσης στη διαχείριση έργου) και βεβαιωθείτε ότι βλέπετε το μήνυμα "δοκιμή πέρασε" στη μεταγραφή.

Τροποποιήσεις RTL προσομοίωσης απόδοσης

  1. Κάντε δεξί κλικ στην καρτέλα πηγές, επιλέξτε "προσθήκη ή δημιουργία πηγών προσομοίωσης" και περιηγηθείτε στο mig7_perfsim_traffic_generator.sv file και κάντε κλικ στο τέλος για να το προσθέσετε.
  2. Κάντε δεξί κλικ στην καρτέλα πηγές, επιλέξτε «προσθήκη ή δημιουργία πηγών προσομοίωσης», περιηγηθείτε στο perfsim_stimulus.txt και κάντε κλικ στο κουμπί Τέλος για να το προσθέσετε.
  3. Σχολιάστε τον πρώηνample_top instantiation στο sim_tb_top.v file.
  4. Προσθέστε τις παρακάτω γραμμές RTL στο 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;
  • καλώδιο [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • καλώδιο [2:0] c0_ddr3_app_cmd;
  • καλώδιο c0_ddr3_app_en;
  • καλώδιο [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • καλώδιο c0_ddr3_app_wdf_end;
  • καλώδιο [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • καλώδιο c0_ddr3_app_wdf_wren;
  • καλώδιο [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • καλώδιο c0_ddr3_app_rd_data_end;
  • καλώδιο c0_ddr3_app_rd_data_valid;
  • καλώδιο c0_ddr3_app_rdy;
  • καλώδιο c0_ddr3_app_wdf_rdy;
  • καλώδιο c0_data_compare_error;
  • καλώδιο ui_clk;
  • καλώδιο ui_clk_sync_rst;
  • σύρμα app_sr_req = 0;
  • καλώδιο app_ref_req = 0;
  • σύρμα app_zq_req =0;
  • καλώδιο c0_app_wdf_mask =0;

Στιγμιότυπο ελεγκτή μνήμης FPGA

mig_7series_0_mig u_mig_7series_0_mig (
// Θύρες διασύνδεσης μνήμης

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

// Θύρες διεπαφής εφαρμογής

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

// Θύρες ρολογιού συστήματος

  • .sys_clk_i (sys_clk_i),

// Θύρες ρολογιού αναφοράς

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

Πρόγραμμα δημιουργίας κίνησης απόδοσης

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. Τροποποιήστε τα APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH και BANK_WIDTH ανάλογα με την επιλογή εξαρτημάτων μνήμης.
    Οι τιμές μπορούν να ληφθούν από το _mig.v file.
  • Το κίτρινο επισημασμένο όνομα στιγμιότυπου mig_7series_0_mig μπορεί να διαφέρει ανάλογα με το όνομα του στοιχείου σας κατά τη δημιουργία IP, επαληθεύστε εάν έχετε επιλέξει διαφορετικό όνομα και αλλάξτε το ανάλογα.Xilinx DDR2 MIG 7 Performance Estimation-fig-4
  • Μόλις δημιουργηθεί η IP, ανοίξτε το _mig.v file και διασταυρώστε για τυχόν παραλλαγές στα ονόματα σημάτων LHS και διορθώστε τις.
  • Οι app_sr_req, app_ref_req και app_zq_req θα πρέπει να αρχικοποιηθούν στο 0.
  • Όπως π.χampΤο le_top.v είναι σχολιασμένο και νέο files προστίθενται, πιθανότατα θα δείτε το "?" δίπλα στο
    mig_7series_0_mig.v file κάτω από πηγές προσομοίωσης.
    Να χαρτογραφηθεί το σωστό file, κάντε δεξί κλικ στο mig_7series_0_mig.v, επιλέξτε "Προσθήκη πηγών", Περιηγηθείτε στο
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    και προσθέστε το mig_7series_0_mig_sim.v file.
  • Αμα δεις ";" για το υποκείμενο files, προσθέστε όλα τα RTL files στους φακέλους clocking, controller, ip_top, phy και UI.
  • Μόλις γίνουν οι αλλαγές RTL και όλα τα απαιτούμενα files προστίθενται στις Πηγές Προσομοίωσης, η Ιεραρχία θα πρέπει να είναι παρόμοια με την Εικόνα 5.
    Ο fileΤα s που επισημαίνονται με κόκκινο προστέθηκαν πρόσφατα και το "?" αναμένεται σε μονάδες που σχετίζονται με ECC, καθώς η επιλεγμένη διαμόρφωση μνήμης έχει απενεργοποιημένη την επιλογή ECC.Xilinx DDR2 MIG 7 Performance Estimation-fig-5

Κίνητρο File Περιγραφή
Κάθε μοτίβο ερεθίσματος είναι 48 bit και η μορφή περιγράφεται στα Σχήματα 6-1 έως 6-4.Xilinx DDR2 MIG 7 Performance Estimation-fig-6

Κωδικοποίηση διεύθυνσης (Διεύθυνση [35:0])

Η διεύθυνση κωδικοποιείται στο ερέθισμα σύμφωνα με το Σχήμα 7-1 έως το Σχήμα 7-6. Όλα τα πεδία διεύθυνσης πρέπει να εισαχθούν σε δεκαεξαδική μορφή. Όλα τα πεδία διεύθυνσης είναι ένα πλάτος που διαιρείται με τέσσερα για εισαγωγή σε δεκαεξαδική μορφή. Ο πάγκος δοκιμής στέλνει μόνο τα απαιτούμενα bits ενός πεδίου διεύθυνσης στον ελεγκτή μνήμης.
Για π.χampΓια παράδειγμα, σε μια διαμόρφωση οκτώ τράπεζας, μόνο Bits τράπεζας [2:0] αποστέλλονται στον ελεγκτή μνήμης και τα υπόλοιπα bit αγνοούνται. Τα επιπλέον bit για ένα πεδίο διεύθυνσης παρέχονται για να εισάγετε τη διεύθυνση σε δεκαεξαδική μορφή.
Πρέπει να επιβεβαιώσετε ότι η τιμή που εισάγατε αντιστοιχεί στο πλάτος μιας δεδομένης διαμόρφωσης.Xilinx DDR2 MIG 7 Performance Estimation-fig-7

  • Διεύθυνση στήλης (Στήλη[11:0]) – Η διεύθυνση στήλης στο ερέθισμα παρέχεται σε μέγιστο αριθμό 12 bit, αλλά πρέπει να το αντιμετωπίσετε με βάση την παράμετρο πλάτους στήλης που έχει οριστεί στο σχέδιό σας.
  • Διεύθυνση σειράς (Σειρά[15:0]) – Η διεύθυνση γραμμής στο ερέθισμα παρέχεται σε μέγιστο αριθμό 16 bit, αλλά πρέπει να το αντιμετωπίσετε με βάση την παράμετρο πλάτους γραμμής που έχει οριστεί στο σχέδιό σας.
  • Διεύθυνση τράπεζας (Τράπεζα[3:0]) – Η διεύθυνση τράπεζας στο ερέθισμα παρέχεται σε τέσσερα bit κατ' ανώτατο όριο, αλλά πρέπει να το αντιμετωπίσετε με βάση την παράμετρο πλάτους τράπεζας που έχει οριστεί στο σχέδιό σας.
  • Διεύθυνση κατάταξης (Κατάταξη[3:0]) – Η διεύθυνση κατάταξης στο ερέθισμα παρέχεται σε τέσσερα bit κατ' ανώτατο όριο, αλλά πρέπει να το αντιμετωπίσετε με βάση την παράμετρο πλάτους κατάταξης που έχει οριστεί στο σχέδιό σας.
    Η διεύθυνση συναρμολογείται με βάση την παράμετρο MEM_ADDR_ORDER ανώτατου επιπέδου και αποστέλλεται στη διεπαφή χρήστη

Επανάληψη εντολών (Επανάληψη εντολών [7:0])
Ο αριθμός επαναλήψεων εντολών είναι ο αριθμός των φορών που επαναλαμβάνεται η αντίστοιχη εντολή στο περιβάλλον εργασίας χρήστη. Η διεύθυνση για κάθε επανάληψη αυξάνεται κατά 8. Ο μέγιστος αριθμός επαναλήψεων είναι 128.
Ο πάγκος δοκιμών δεν ελέγχει για το όριο της στήλης και τυλίγεται αν επιτευχθεί το μέγιστο όριο στήλης κατά τη διάρκεια των αυξήσεων.
Οι 128 εντολές γεμίζουν τη σελίδα. Για οποιαδήποτε διεύθυνση στήλης εκτός από το 0, το πλήθος επαναλήψεων 128 καταλήγει να διασχίζει το όριο της στήλης και να τυλίγει στην αρχή της διεύθυνσης στήλης.

Αξιοποίηση Λεωφορείων
Η χρήση του διαύλου υπολογίζεται στη διεπαφή χρήστη λαμβάνοντας υπόψη τον συνολικό αριθμό των Reads και Writes και χρησιμοποιείται η ακόλουθη εξίσωση:

Xilinx DDR2 MIG 7 Performance Estimation-fig-8

  • Το BL8 χρειάζεται τέσσερις κύκλους ρολογιού μνήμης
  • end_of_stimulus είναι ο χρόνος που γίνονται όλες οι εντολές.
  • calib_done είναι η ώρα που γίνεται η βαθμονόμηση.

Example Patterns
Αυτά τα π.χampΟι τιμές βασίζονται στο MEM_ADDR_ORDER που έχει οριστεί σε BANK_ROW_COLUMN.

Μονόγραμμα ανάγνωσης
00_0_2_000F_00A_1 – Αυτό το μοτίβο είναι μια ανάγνωση από τη 10η στήλη, τη 15η σειρά και τη δεύτερη τράπεζα.Xilinx DDR2 MIG 7 Performance Estimation-fig-9Μονό μοτίβο εγγραφής
00_0_1_0040_010_0 – Αυτό το μοτίβο είναι μια απλή εγγραφή στην 32η στήλη, στην 128η σειρά και στην πρώτη τράπεζα.Xilinx DDR2 MIG 7 Performance Estimation-fig-10Ενιαία εγγραφή και ανάγνωση στην ίδια διεύθυνση
00_0_2_000F_00A_0 – Αυτό το μοτίβο είναι μια μεμονωμένη εγγραφή στη 10η στήλη, στη 15η σειρά και στη δεύτερη τράπεζα.
00_0_2_000F_00A_1 – Αυτό το μοτίβο είναι μια ανάγνωση από τη 10η στήλη, τη 15η σειρά και τη δεύτερη τράπεζαXilinx DDR2 MIG 7 Performance Estimation-fig-11

Πολλαπλές γράφει και διαβάζει με την ίδια διεύθυνση
0A_0_0_0010_000_0 – Αυτό αντιστοιχεί σε 10 εγγραφές με διεύθυνση που ξεκινά από το 0 έως το 80 που φαίνεται στη στήλη.Xilinx DDR2 MIG 7 Performance Estimation-fig-12

0A_0_0_0010_000_1 – Αυτό αντιστοιχεί σε 10 αναγνώσεις με διεύθυνση που ξεκινά από το 0 έως το 80 που φαίνεται στη στήλη.Xilinx DDR2 MIG 7 Performance Estimation-fig-13

Αναδίπλωση σελίδας κατά τη διάρκεια εγγραφής
0A_0_2_000F_3F8_0 – Αυτό αντιστοιχεί σε 10 εγγραφές με τη διεύθυνση στήλης τυλιγμένη στην αρχή της σελίδας μετά από μία εγγραφή.Xilinx DDR2 MIG 7 Performance Estimation-fig-14

Προσομοίωση του Performance Traffic Generator

Σε αυτό το σημείο τελειώσατε με την MIG exampπροσομοίωση σχεδίασης. Αυτό σημαίνει ότι η ρύθμιση της προσομοίωσής σας είναι έτοιμη, έχετε κάνει τροποποιήσεις RTL προσομοίωσης απόδοσης, η νέα ιεραρχία προσομοίωσης είναι σωστή και έχετε κατανοήσει τα μοτίβα ερεθίσματος. Εκτελέστε την προσομοίωση άλλη μια φορά με 16 εγγραφές και αναγνώσεις στο perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Performance Estimation-fig-15

Κάντε run-all, περιμένετε έως ότου επιβεβαιωθεί το σήμα init_calib_complete και θα μπορείτε να δείτε τον προτεινόμενο αριθμό εγγραφών και αναγνώσεων. Στη συνέχεια, η προσομοίωση θα σταματήσει. Xilinx DDR2 MIG 7 Performance Estimation-fig-16

Όταν σας ζητηθεί να τερματίσετε την προσομοίωση, επιλέξτε Όχι και μεταβείτε στο παράθυρο μεταγραφής όπου θα μπορείτε να δείτε τα στατιστικά στοιχεία απόδοσης. Xilinx DDR2 MIG 7 Performance Estimation-fig-17

Εάν επιλέξετε "Τερματισμός προσομοίωσης" Τα στατιστικά στοιχεία απόδοσης θα γραφτούν στο α file ονομάστηκε mig_band_width_output.txt που βρίσκεται στο sim_1/behave ντοσιέ.

ExampΔιαδρομή καταλόγου: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Performance Estimation-fig-18

Ίσως αναρωτιέστε γιατί το ποσοστόtagΗ χρήση του διαύλου είναι μόνο 29. Εκτελέστε ξανά την προσομοίωση με τις ίδιες ρυθμίσεις IP αλλά απλώς αλλάζοντας το ερέθισμα file έως 256 γράφει και 256 διαβάζει

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Θα δείτε τώρα το ποσοστόtage ως 85, που σημαίνει ότι το DDR3 προσφέρει καλύτερη χρήση διαύλου για μεγάλη ακολουθία εγγραφών και ριπών ανάγνωσης. Xilinx DDR2 MIG 7 Performance Estimation-fig-19

Γενικοί τρόποι για τη βελτίωση της απόδοσης

Οι παράγοντες που επηρεάζουν την αποδοτικότητα μπορούν να χωριστούν σε δύο ενότητες:

  1. Ειδική μνήμη
  2. Ειδικός ελεγκτήςXilinx DDR2 MIG 7 Performance Estimation-fig-20

Το Σχήμα 9 σας δίνει ένα overview των όρων που αφορούν τη μνήμη.
Σε αντίθεση με τα SRAM και τις μπλοκ μνήμες, η απόδοση των DDR2 ή DDR3 δεν είναι μόνο ο μέγιστος ρυθμός δεδομένων.

Εξαρτάται από πολλούς παράγοντες χρόνου, όπως:

  • tRCD: Καθυστέρηση εντολών σειράς (ή καθυστέρηση από ras σε περίπτωση).
  • tCAS(CL): Στροβοσκοπική καθυστέρηση διεύθυνσης στήλης.
  • tRP: Καθυστέρηση προφόρτισης σειράς.
  • tRAS: Ενεργός χρόνος σειράς (ενεργοποίηση για προαλλαγή).
  • tRC: Χρόνος κύκλου σειράς. tRC = tRAS + tRP
  • tRAC: Καθυστέρηση τυχαίας πρόσβασης. tRAC = tRCD + tCAS
  • tCWL: Καθυστέρηση εγγραφής Cas.
  • tZQ: Χρόνος βαθμονόμησης ZQ.
  • tRFC: Χρόνος κύκλου ανανέωσης σειράς
  • tWTR: Καθυστέρηση γραφής για ανάγνωση. Τελευταία συναλλαγή εγγραφής στον χρόνο εντολής ανάγνωσης.
  • tWR: Γράψτε Χρόνος αποκατάστασης. Τελευταία συναλλαγή εγγραφής στον χρόνο προφόρτισης

Ο χρονισμός όλων των παραμέτρων που παρατίθενται εξαρτάται από τον τύπο της χρησιμοποιούμενης μνήμης και τον βαθμό ταχύτητας εξαρτήματος μνήμης.
Περισσότερες λεπτομέρειες σχετικά με τους ορισμούς και τις προδιαγραφές χρονισμού μπορείτε να βρείτε στο DDR2 DDR3 JEDEC ή σε οποιοδήποτε φύλλο δεδομένων συσκευής μνήμης.

Η αποτελεσματικότητα εξαρτάται κυρίως από τον τρόπο πρόσβασης στη μνήμη. Τα διαφορετικά μοτίβα διευθύνσεων δίνουν διαφορετικά αποτελέσματα αποτελεσματικότητας.

Γενικά έξοδα χρονισμού μνήμης

  1. Χρόνος ενεργοποίησης και χρόνος προφόρτισης κατά την αλλαγή σε νέες τράπεζες/σειρές ή αλλαγή σειρών με την ίδια τράπεζα.- Επομένως, εάν μειώσετε την αλλαγή σειρών, αυτό μπορεί να καταργήσει το tRCD και το tRP.
  2. Αποστολή συνεχών εντολών εγγραφής ή ανάγνωσης -Διατήρηση του χρονισμού tCCD.
  3. Ελαχιστοποίηση αλλαγής εντολής εγγραφής σε ανάγνωση και ανάγνωσης σε εγγραφή – Χρόνος ανάκτησης εγγραφής για αλλαγή σε προσβάσεις ανάγνωσης, χρόνος περιστροφής διαύλου για αλλαγή από ανάγνωση σε εγγραφή
  4. Ορίστε ένα κατάλληλο διάστημα ανανέωσης.
    • Το DDR3 SDRAM απαιτεί κύκλους ανανέωσης σε ένα μέσο περιοδικό διάστημα tREFI.
    • Το πολύ 8 πρόσθετες εντολές Ανανέωσης μπορούν να εκδοθούν εκ των προτέρων ("τραβηγμένο"). Αυτό δεν μειώνει τον αριθμό των ανανεώσεων, αλλά το μέγιστο διάστημα μεταξύ δύο εντολών ανανέωσης περιορίζεται σε 9 × tREFIXilinx DDR2 MIG 7 Performance Estimation-fig-21
  • Χρησιμοποιήστε όλες τις τράπεζες - Ένας κατάλληλος μηχανισμός διευθυνσιοδότησης είναι προτιμότερος.
    • Σειρά-Τράπεζα-Στήλη: Για μια συναλλαγή που πραγματοποιείται σε έναν διαδοχικό χώρο διευθύνσεων, ο πυρήνας ανοίγει αυτόματα την ίδια σειρά στην επόμενη τράπεζα της συσκευής DRAM για να συνεχίσει τη συναλλαγή όταν φτάσει στο τέλος μιας υπάρχουσας σειράς. Είναι κατάλληλο για εφαρμογές που απαιτούν εκρήξεις μεγάλων πακέτων δεδομένων σε διαδοχικές θέσεις διευθύνσεων.
    • Τράπεζα-Σειρά-Στήλη: Όταν διασχίζετε ένα όριο γραμμής, η τρέχουσα σειρά θα κλείσει και μια άλλη σειρά θα ανοίξει εντός της ίδιας τράπεζας. Το MSB είναι μια διεύθυνση τράπεζας, η οποία μπορεί να χρησιμοποιηθεί για εναλλαγή από διαφορετικές τράπεζες. Είναι κατάλληλο για πιο σύντομες, πιο τυχαίες συναλλαγές σε ένα μπλοκ μνήμης για ένα χρονικό διάστημα και στη συνέχεια για μετάβαση σε άλλο μπλοκ (τράπεζα)
  • Μήκος ριπής
    • Το BL 8 υποστηρίζεται για DDR3 σε σειρά 7. Το BC4 έχει πολύ χαμηλή απόδοση που είναι μικρότερη από 50%. Αυτό συμβαίνει επειδή ο χρόνος εκτέλεσης του BC4 είναι ο ίδιος με τον BL8. Τα δεδομένα απλώς καλύπτονται μέσα στο στοιχείο.
    • Σε περιπτώσεις όπου δεν θέλετε να γράψετε πλήρη ριπή, μπορεί να ληφθεί υπόψη είτε η μάσκα δεδομένων είτε η εγγραφή μετά την ανάγνωση.
  • Ορίστε ένα σωστό διάστημα ZQ (μόνο DDR3)
    Ο ελεγκτής στέλνει εντολές βαθμονόμησης ZQ Short (ZQCS) και ZQ Long (ZQCL).
    • Τηρείτε το πρότυπο DDR3 Jedec
    • Η βαθμονόμηση ZQ συζητείται στην ενότητα 5.5 του προτύπου JEDEC Spec JESD79-3 DDR3 SDRAM
    • Το ZQ Calibration βαθμονομεί On Die Termination (ODT) σε τακτά χρονικά διαστήματα για να ληφθούν υπόψη οι διακυμάνσεις μεταξύ του VT
    • Η λογική περιέχεται στο bank_common.v/vhd
    • Η παράμετρος Tzqcs καθορίζει τον ρυθμό με τον οποίο αποστέλλεται μια εντολή Βαθμονόμησης ZQ στη μνήμη
    • Είναι δυνατή η απενεργοποίηση του μετρητή και η μη αυτόματη αποστολή χρησιμοποιώντας το app_zq_req, είναι παρόμοιο με τη μη αυτόματη αποστολή ανανέωσης.
      Ανατρέξτε στο (Xilinx Answer 47924) για λεπτομέρειες.Xilinx DDR2 MIG 7 Performance Estimation-fig-22

Γενικά έξοδα ελεγκτή

  1. Περιοδικές αναγνώσεις – Ανατρ (Απάντηση Xilinx 43344) για λεπτομέρειες.
    • Μην αλλάζετε την περίοδο της ανάγνωσης
    • Παραλείψτε τις περιοδικές αναγνώσεις κατά τη διάρκεια της εγγραφής και δώστε τον αριθμό των χαμένων αναγνώσεων πριν από μια αληθινή ανάγνωση
  2. Αναπαραγγελία – Ανατρ (Απάντηση Xilinx 34392) για λεπτομέρειες.
    Για σχέδια διεπαφής χρήστη και AXI, είναι προτιμότερο να είναι ενεργοποιημένη.
    • Η αναδιάταξη είναι η λογική που κοιτάζει μπροστά πολλές εντολές και αλλάζει τη σειρά εντολών χρήστη ώστε οι εντολές που δεν είναι μνήμης να καταλαμβάνουν έγκυρο εύρος ζώνης. Η απόδοση σχετίζεται επίσης με το πραγματικό μοτίβο κυκλοφορίας.
    • Με βάση το μοτίβο διευθύνσεων, η αναδιάταξη βοηθά στην παράλειψη προφόρτισης και ενεργοποίηση εντολών και κάνει τα tRCD και tRP να μην καταλαμβάνουν το εύρος ζώνης δεδομένων.Xilinx DDR2 MIG 7 Performance Estimation-fig-23
  3. Προσπαθήστε να αυξήσετε τον αριθμό των Τραπεζικών Μηχανών.
    • Το μεγαλύτερο μέρος της λογικής του ελεγκτή βρίσκεται στα τραπεζικά μηχανήματα και αντιστοιχούν σε τράπεζες DRAM
    • Ένα δεδομένο μηχάνημα τράπεζας διαχειρίζεται μία μόνο τράπεζα DRAM ανά πάσα στιγμή.
    • Η ανάθεση τραπεζικών μηχανημάτων είναι δυναμική, επομένως δεν είναι απαραίτητο να υπάρχει τραπεζικό μηχάνημα για κάθε φυσική τράπεζα.
    • Τα τραπεζικά μηχανήματα μπορούν να διαμορφωθούν, αλλά είναι μια αντιστάθμιση μεταξύ περιοχής και απόδοσης.
    • Ο επιτρεπόμενος αριθμός τραπεζικών μηχανημάτων κυμαίνεται από 2-8.
    • Από προεπιλογή, 4 Bank Machines διαμορφώνονται μέσω παραμέτρων RTL.
    • Για να αλλάξετε τα τραπεζικά μηχανήματα, λάβετε υπόψη την παράμετρο nBANK_MACHS = 8 που περιέχεται στο memc_ui_top Example για 8 Τραπεζικά Μηχανήματα – nBANK_MACHS = 8

Τώρα γνωρίζετε τους παράγοντες που επηρεάζουν την απόδοση.
Σκεφτείτε μια ανοδική εφαρμογή που σας δίνει 512 byte δεδομένων ανά πακέτο και πρέπει να τα αποθηκεύσετε σε διαφορετικές θέσεις μνήμης. Καθώς 512 byte δεδομένων ισούνται με 64 ριπές δεδομένων DDR3, εκτελέστε ξανά το example design με ένα ερέθισμα file που περιέχει 512 εγγραφές, 512 αναγνώσεις και εναλλαγή σειράς για κάθε 64 εγγραφές ή αναγνώσεις:

  • 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

Στο τέλος της προσομοίωσης θα δείτε ότι η χρήση του διαύλου είναι στο 77 τοις εκατό. Xilinx DDR2 MIG 7 Performance Estimation-fig-24

Εικόνα 11: Στατιστικά απόδοσης για 512 εγγραφές και 512 αναγνώσεις – Εναλλαγή σειράς για 64 εγγραφές ή αναγνώσεις. 

Τώρα μπορείτε να εφαρμόσετε τις γνώσεις που έχετε μάθει σε προηγούμενη ενότητα για να βελτιώσετε την αποτελεσματικότητα. Με view για να χρησιμοποιήσετε όλες τις τράπεζες αντί να αλλάξετε τη σειρά, τροποποιήστε το μοτίβο διεύθυνσης για να αλλάξετε την τράπεζα όπως φαίνεται παρακάτω.
Αυτό ισοδυναμεί με τη ρύθμιση ROW_BANK_Column στη ρύθμιση αντιστοίχισης διευθύνσεων μνήμης στο 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

Στο τέλος της προσομοίωσης θα δείτε ότι η προηγούμενη 77% Αξιοποίηση Bus είναι τώρα 87! Xilinx DDR2 MIG 7 Performance Estimation-fig-25

Εάν εξακολουθείτε να χρειάζεστε υψηλότερη απόδοση, μπορείτε να επιλέξετε μεγάλα μεγέθη πακέτων των 1024 ή 2048 byte ή να εξετάσετε το ενδεχόμενο μη αυτόματης ανανέωσης.

Σημείωμα: Το Xilinx δεν ενθαρρύνει την παράκαμψη της ανανέωσης ελεγκτή, καθώς δεν είμαστε βέβαιοι εάν θα μπορέσετε να τηρήσετε τον χρονισμό αυτόματης ανανέωσης Jedec που επηρεάζει την αξιοπιστία των δεδομένων.
Από την πλευρά του ελεγκτή μπορείτε να αλλάξετε το nBANk_MACH και να δείτε τη βελτίωση στην απόδοση.
Ωστόσο, αυτό μπορεί να επηρεάσει το χρονισμό του σχεδιασμού σας, ανατρέξτε στο (Απάντηση Xilinx 36505) για λεπτομέρειες σχετικά με το nBANk_MACHXilinx DDR2 MIG 7 Performance Estimation-fig-26

Ανοίξτε το core_name_mig_sim.v file και αλλάξτε τις παραμέτρους nBANK_MACHS από 4 σε 8 και εκτελέστε ξανά την προσομοίωση. Για να τεθεί σε ισχύ η τιμή της παραμέτρου στο υλικό, πρέπει να ενημερώσετε το core_name_mig.v file.
Χρησιμοποίησα το ίδιο μοτίβο όπου είχαμε 87% αξιοποίηση διαύλου (εικόνα -12).
Με το nBANK_MACHS ρυθμισμένο στο 8, η απόδοση είναι τώρα 90%. Xilinx DDR2 MIG 7 Performance Estimation-fig-27

Σημειώστε επίσης ότι οι ελεγκτές ½ και ¼ επηρεάζουν αρνητικά την απόδοση λόγω των καθυστερήσεων τους.
Για π.χample, δεδομένου ότι μπορούμε να στέλνουμε εντολές μόνο κάθε 4 κύκλους CK, μερικές φορές υπάρχει επιπλέον padding όταν τηρούνται οι ελάχιστες προδιαγραφές χρονισμού DRAM, το οποίο μπορεί να μειώσει την απόδοση από το θεωρητικό.
Δοκιμάστε διαφορετικούς ελεγκτές για να βρείτε αυτό που ταιριάζει στις απαιτήσεις απόδοσης σας.

Αναφορές

  1. Zynq-7000 AP SoC και FPGA σειράς 7 MIS v2.3 [UG586]
  2. Κέντρο λύσεων Xilinx MIG http://www.xilinx.com/support/answers/34243.html

Ιστορικό αναθεώρησης
13/03/2015 – Αρχική κυκλοφορία

Λήψη PDF: Οδηγός εκτίμησης απόδοσης Xilinx DDR2 MIG 7

Αναφορές

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται *