הלוגו של Xilinx

Xilinx DDR2 MIG 7 מדריך הערכת ביצועים

Xilinx_DDR2_MIG_7_Performance-Estimation-product

הערה חשובה: PDF זה להורדה של רשומת תשובה מסופק כדי לשפר את השימושיות והקריאה שלו. חשוב לציין שרשומות תשובות כן Web-תוכן מבוסס שמתעדכן לעתים קרובות ככל שמידע חדש הופך זמין. תזכורת לבקר בתמיכה הטכנית של Xilinx Webאתר ורview (Xilinx Answer 63234) עבור הגרסה העדכנית ביותר של תשובה זו.

מָבוֹא

בגלל האופן שבו מבנים זיכרונות DDR2 ו-DDR3 והבקר מסדרת MIG 7 מתוכנן, הביצועים אינם פשוטים קדימה.
זה דורש הבנה של פרמטרים שונים של Jedec Timing וארכיטקטורת הבקר, ותצטרך להריץ סימולציות כדי לקבל את ההערכות.
העיקרון הכללי לקביעת ביצועים זהה אך מסמך זה מספק דרך קלה להשיג יעילות באמצעות ה-MIG exampלעצב בעזרת ספסל בדיקה וגירוי fileמצורף כאן.

רוחב פס אפקטיבי

אפיק הנתונים של DRAM משיג רוחב פס כמעט שיא רק במהלך פרצי קריאה וכתיבה והתקורה שלו מורידה את קצב הנתונים האפקטיבי.
כמה לשעברampהנתונים של תקורה הם:

  • זמן טעינה מראש גישה לשורות באותו בנק (כתובת גישה לא באותה התאמה של עמוד שורה)
  • זמן שחזור כתיבה כדי לעבור מגישה לכתיבה לקריאה
  • זמן אספקת האוטובוס כדי לעבור מגישה לקריאה לכתיבה

Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-28
רוחב פס אפקטיבי = רוחב פס שיא * יעילות 

MIG Design Generation

עיין ב-UG586 פרק 1 לפרטים שלב אחר שלב על MIG IP ו-exampדור העיצוב.
לפני הפעלת הדמיית ביצועים מסדרת MIG 7, בצע את הפעולות הבאות כדי לוודא שסביבת הסימולציה שלך תקינה. פתח את ה-MIG exampתכנן ומפה את הספריות המתאימות, הפעל את הסימולציה, וודא שאתה יכול לראות את ההודעה "המבחן עבר" בתמליל.
כדי להדגים את הזרימה יצרתי MIG IP עבור xc7vx690tffg1761-2 והפעלתי את האקסampלעיצוב.
שני דברים שצריך לשים לב הם ביטים של כתובת זיכרון ובחירת מיפוי כתובת זיכרון.
למשלampאני בחרתי את MT41J128M8XX-125 מתחת לאפשרויות הנפתחות של חלק הזיכרון.Xilinx DDR2 MIG-7-Performance-Estimation-fig-1

עבור חלק הזיכרון שנבחר מאיור 1, שורה = 14, עמודה = 10 ובנק = 3, כך app_addr_width = שורה + עמודה + בנק + דירוג = 28 Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-2

אתה יכול לבחור בעמודה BANK_ROW_COLUMN או ROW BANK.
עזבתי את ROW BANK Column שהיא מיפוי הכתובות המוגדר כברירת מחדל.

Example design סימולציה עם ספסל בדיקה ניתן לסינתזה

תחת הגדרות סימולציה, בחר QuestaSim/ModelSim Simulator ודפדף אל מיקום הספריות הקומפילציה.
לפרטים על הצבעה על נתיב התקנת כלים של צד שלישי, בחירת סימולטור היעד וקומפילציה ומיפוי ספריות, אתה יכול לעיין ב- (UG900) Vivado Design Suite User Guide Logic SimulationXilinx DDR2 MIG 7 הערכת ביצועים-תמונה-3

הפעל את הסימולציה דרך ה-GUI (לחץ על לשונית הפעל סימולציה במנהל הפרויקט) וודא שאתה רואה את הודעת "המבחן עבר" בתמליל.

שינויי RTL של סימולציית ביצועים

  1. לחץ לחיצה ימנית על לשונית המקורות, בחר "הוסף או צור מקורות סימולציה", ודפדף אל mig7_perfsim_traffic_generator.sv file ולחץ על סיום כדי להוסיף אותו.
  2. לחץ לחיצה ימנית על לשונית המקורות, בחר "הוסף או צור מקורות סימולציה", דפדף אל perfsim_stimulus.txt ולחץ על סיום כדי להוסיף אותו.
  3. הערה את האקסיתampמופע le_top ב-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;
  • wire [2:0] c0_ddr3_app_cmd;
  • wire c0_ddr3_app_en;
  • חוט [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • wire c0_ddr3_app_wdf_end;
  • חוט [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • wire c0_ddr3_app_wdf_wren;
  • חוט [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • wire 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;
  • wire app_sr_req = 0;
  • wire app_ref_req = 0;
  • wire app_zq_req =0;
  • wire 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 הערכת ביצועים-תמונה-4
  • לאחר שה-IP נוצר פתח את _mig.v file ולבדוק אם יש וריאציות בשמות האותות LHS ולתקן אותם.
  • יש לאתחל את app_sr_req, app_ref_req ו-app_zq_req ל-0.
  • בתור לשעברample_top.v התקבלה תגובה וחדשה fileנוספו, סביר להניח שתראה "?" ליד ה
    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 בתיקיות השעון, הבקר, ip_top,phy וממשק המשתמש.
  • לאחר ביצוע השינויים ב-RTL וכל הנדרש fileיתווספו למקורות הסימולציה שלך, ההיררכיה צריכה להיות דומה לתמונה 5.
    ה fileים המודגשים באדום נוספו לאחרונה, ו-"?" צפוי במודולים הקשורים ל-ECC מכיוון שבתצורת הזיכרון שנבחרה מושבתת האפשרות ECC.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-5

דְחִיפָה File תֵאוּר
כל דפוס גירוי הוא 48 סיביות והפורמט מתואר באיורים 6-1 עד 6-4.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-6

קידוד כתובת (כתובת [35:0])

הכתובת מקודדת בגירוי לפי איור 7-1 עד איור 7-6. יש להזין את כל שדות הכתובת בפורמט הקסדצימלי. כל שדות הכתובת הם ברוחב המתחלק בארבע כדי להזין בפורמט הקסדצימלי. ספסל הבדיקה שולח רק את הסיביות הנדרשות של שדה כתובת לבקר הזיכרון.
למשלample, בתצורת בנק שמונה, רק Bits Bank [2:0] נשלחים לבקר הזיכרון ומתעלמים מהסיביות הנותרות. הביטים הנוספים עבור שדה כתובת מסופקים כדי שתוכל להזין את הכתובת בפורמט הקסדצימלי.
עליך לאשר שהערך שהוזן מתאים לרוחב של תצורה נתונה.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-7

  • כתובת עמודה (עמודה[11:0]) – כתובת העמודה בגירוי מסופקת ל-12 סיביות לכל היותר, אך עליך להתייחס לכך בהתבסס על פרמטר רוחב העמודה שנקבע בעיצוב שלך.
  • כתובת שורה (שורה[15:0]) – כתובת השורה בגירוי מסופקת לכל היותר של 16 סיביות, אך עליך לטפל בכך בהתבסס על פרמטר רוחב השורה שנקבע בעיצוב שלך.
  • כתובת בנק (בנק[3:0]) – כתובת הבנק בגירוי מסופקת לארבעה ביטים לכל היותר, אך עליך להתייחס לכך בהתבסס על פרמטר רוחב הבנק שנקבע בעיצוב שלך.
  • כתובת דירוג (דירוג [3:0]) - כתובת דירוג בגירוי מסופקת לכל היותר של ארבעה ביטים, אך עליך לטפל בכך בהתבסס על פרמטר רוחב הדירוג שנקבע בעיצוב שלך.
    הכתובת מורכבת על סמך הפרמטר MEM_ADDR_ORDER ברמה העליונה ונשלחת לממשק המשתמש

חזרה על פקודה (חזרה על פקודה [7:0])
ספירת חזרות הפקודה היא מספר הפעמים שבהן הפקודה המתאימה חוזרת בממשק המשתמש. הכתובת עבור כל חזרה מוגברת ב-8. ספירת החזרות המקסימלית היא 128.
ספסל הבדיקה אינו בודק את גבול העמודה והוא עוטף אם מגבלת העמודות המקסימלית הושגה במהלך ההגדלות.
128 הפקודות ממלאות את הדף. עבור כל כתובת עמודה שאינה 0, ספירת החזרות של 128 מסתיימת בחציית גבול העמודה ומתעטפת לתחילת כתובת העמודה.

ניצול אוטובוס
ניצול האוטובוס מחושב בממשק המשתמש תוך התחשבות במספר הכולל של קריאה וכתיבה, והשימוש במשוואה הבאה:

Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-8

  • BL8 לוקח ארבעה מחזורי שעון זיכרון
  • end_of_stimulus הוא הזמן שבו כל הפקודות מבוצעות.
  • calib_done הוא הזמן שבו הכיול נעשה.

Example Patterns
האקסים האלהampהקורות מבוססות על ה-MEM_ADDR_ORDER שהוגדר ל-BANK_ROW_COLUMN.

דפוס קריאה בודד
00_0_2_000F_00A_1 - דפוס זה הוא קריאה יחידה מהעמודה העשירית, השורה ה-10 והבנק השני.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-9דפוס כתיבה בודד
00_0_1_0040_010_0 - דפוס זה הוא כתיבה בודדת לעמודה ה-32, השורה ה-128 והבנק הראשון.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-10יחיד כתוב וקראה לאותה כתובת
00_0_2_000F_00A_0 – דפוס זה הוא כתיבה בודדת לעמודה העשירית, שורה 10 ובנק שני.
00_0_2_000F_00A_1 – תבנית זו היא קריאה יחידה מהעמודה העשירית, השורה ה-10 והבנק השניXilinx DDR2 MIG 7 הערכת ביצועים-תמונה-11

כתיבה וקריאה מרובות עם אותה כתובת
0A_0_0_0010_000_0 – זה מתאים ל-10 כתובות עם כתובת שמתחילה מ-0 עד 80 שניתן לראות בעמודה.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-12

0A_0_0_0010_000_1 – זה מתאים ל-10 קריאות עם כתובת שמתחילה מ-0 עד 80 שניתן לראות בעמודה.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-13

גלישת עמוד במהלך כתיבה
0A_0_2_000F_3F8_0 – זה מתאים ל-10 כתיבה עם כתובת העמודה עטופה לתחילת העמוד לאחר כתיבה אחת.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-14

הדמיית מחולל התנועה הביצועים

בשלב זה סיימת עם MIG exampהדמיית עיצוב. זה מרמז שהגדרת הסימולציה שלך מוכנה, ביצעת שינויי RTL של סימולציית ביצועים, היררכיית הסימולציה החדשה נכונה והבנת את דפוסי הגירוי. הפעל את הסימולציה שוב עם 16 כתיבה וקריאה ב-perfsim_stimulus.txt.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-15

בצע הפעל הכל, המתן עד שהאות init_calib_complete יתקיים, ותוכל לראות את המספר המוצע של כתיבה וקריאה. לאחר מכן, הסימולציה תיפסק. Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-16

כאשר תתבקש להפסיק את הסימולציה, בחר לא ועבור לחלון התמלול שבו תוכל לראות את הנתונים הסטטיסטיים של הביצועים. Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-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 הערכת ביצועים-תמונה-18

אתה עשוי לתהות מדוע האחוזיםtagניצול האוטובוס האלקטרוני הוא רק 29. הפעל מחדש את הסימולציה עם אותן הגדרות IP אבל רק שינוי הגירוי file ל-256 כתיבה ו-256 קריאות

ff_0_0_0000_000_0
ff_0_0_0000_000_1

כעת תראה את האחוזיםtage as 85, מה שמרמז ש-DDR3 מציע ניצול אוטובוס טוב יותר עבור רצף ארוך של רצף כתיבה וקריאה. Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-19

דרכים כלליות לשיפור ביצועים

ניתן לחלק את הגורמים המשפיעים על היעילות לשני חלקים:

  1. זיכרון ספציפי
  2. בקר ספציפיXilinx DDR2 MIG 7 הערכת ביצועים-תמונה-20

איור 9 נותן לך מעלהview מהמונחים שהם ספציפיים לזיכרון.
שלא כמו SRAMs ו-Block Memories, ביצועי DDR2 או DDR3 אינם רק קצב הנתונים המרבי.

זה תלוי בגורמי תזמון רבים, כולל:

  • tRCD: השהיית פקודת שורה (או השהיית ras to cas).
  • 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 הערכת ביצועים-תמונה-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 מכייל On Die Termination (ODT) במרווחי זמן קבועים כדי לקחת בחשבון וריאציות על פני VT
    • ההיגיון כלול ב-bank_common.v/vhd
    • פרמטר Tzqcs קובע את הקצב שבו נשלחת פקודת כיול ZQ לזיכרון
    • ניתן להשבית את המונה ולשלוח ידנית באמצעות app_zq_req, זה דומה לשליחת Refresh ידנית.
      עיין ב (תשובה של Xilinx 47924) לפרטים.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-22

תקורה של בקר

  1. קריאות תקופתיות - עיין ב (תשובת Xilinx 43344) לפרטים.
    • אל תשנה את תקופת הקריאה
    • דלג על קריאה תקופתית במהלך כתיבה והפק את מספר הקריאה שהוחמצה לפני קריאה אמיתית
  2. הזמנה מחדש - עיין (תשובת Xilinx 34392) לפרטים.
    עבור עיצובי ממשק משתמש ו-AXI עדיף לאפשר זאת.
    • סדר מחדש הוא ההיגיון שמסתכל קדימה על מספר פקודות ומשנה את סדר הפקודות של המשתמש כדי לגרום לפקודות שאינן זיכרון לא לתפוס רוחב פס חוקי. הביצועים קשורים גם לדפוס התנועה בפועל.
    • בהתבסס על דפוס הכתובות, סדר מחדש עוזר לדלג על טעינה מוקדמת והפעלת פקודות וגורם ל-tRCD ו-tRP לא לתפוס את רוחב פס הנתונים.Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-23
  3. נסה להגדיל את מספר מכונות הבנק.
    • רוב ההיגיון של הבקר נמצא במכונות הבנק והן תואמות לבנקי DRAM
    • מכשיר בנק נתון מנהל בנק DRAM יחיד בכל זמן נתון.
    • הקצאת מכונת בנק היא דינמית ולכן אין צורך במכשיר בנק לכל בנק פיזי.
    • ניתן להגדיר מכונות בנק, אבל זה פשרה בין שטח לביצועים.
    • המספר המותר של מכונות בנק נע בין 2-8.
    • כברירת מחדל, 4 מכונות בנק מוגדרות באמצעות פרמטרי RTL.
    • כדי לשנות מכונות בנק, שקול את הפרמטר nBANK_MACHS = 8 הכלול ב-memc_ui_top Example עבור 8 מכונות בנק – nBANK_MACHS = 8

כעת אתה מודע לגורמים המשפיעים על הביצועים.
שקול יישום במעלה הזרם שנותן לך 512 בתים של נתונים לכל מנה ואתה צריך לשמור אותם במיקומי זיכרון שונים. מכיוון ש-512 בתים של נתונים שווים ל-64 פרצי נתונים DDR3, הפעל מחדש את האקסampעיצוב עם גירוי 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 הערכת ביצועים-תמונה-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 אחוזים באוטובוסים הוא כעת 87! Xilinx DDR2 MIG 7 הערכת ביצועים-תמונה-25

אם אתה עדיין זקוק ליעילות גבוהה יותר, אתה יכול לבחור בגדלים גדולים של מנות של 1024 או 2048 בתים, או לשקול רענון ידני.

פֶּתֶק: Xilinx לא מעודדת עקיפת רענון הבקר מכיוון שאיננו בטוחים אם תוכל לעמוד בתזמון הרענון האוטומטי של Jedec שמשפיע על מהימנות הנתונים.
מהצד של הבקר ניתן לשנות את nBANk_MACH ולראות את השיפור בביצועים.
עם זאת, זה עשוי להשפיע על תזמון העיצוב שלך, אנא עיין ב (תשובת Xilinx 36505) לפרטים על nBANk_MACHXilinx DDR2 MIG 7 הערכת ביצועים-תמונה-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 הערכת ביצועים-תמונה-27

כמו כן, שים לב ש-½ ו-¼ בקרים משפיעים לרעה על היעילות עקב השהיה שלהם.
למשלample, מכיוון שאנו יכולים לשלוח פקודות רק כל 4 מחזורי CK, לפעמים יש ריפוד נוסף בעת הקפדה על מפרט תזמון DRAM מינימלי, מה שיכול להפחית את היעילות מהתיאורטי.
נסה בקרים שונים כדי למצוא את זה שמתאים לדרישת היעילות שלך.

הפניות

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

היסטוריית גרסאות
13/03/2015 – פרסום ראשוני

הורד PDF: Xilinx DDR2 MIG 7 מדריך הערכת ביצועים

הפניות

השאר תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *