Xilinx-लोगो

Xilinx DDR2 MIG 7 प्रदर्शन आकलन गाइड

Xilinx_DDR2_MIG_7_प्रदर्शन-अनुमान-उत्पाद

महत्वपूर्ण नोट: उत्तर रिकॉर्ड की यह डाउनलोड करने योग्य पीडीएफ इसकी उपयोगिता और पठनीयता बढ़ाने के लिए प्रदान की जाती है। यह ध्यान रखना महत्वपूर्ण है कि उत्तर रिकॉर्ड हैं Web-आधारित सामग्री जो नई जानकारी के उपलब्ध होने पर अक्सर अपडेट की जाती है। आपको Xilinx तकनीकी सहायता पर जाने के लिए याद दिलाया जाता है Webसाइट और पुनःview (Xilinx उत्तर 63234) इस उत्तर के नवीनतम संस्करण के लिए।

परिचय

जिस तरह से DDR2 और DDR3 मेमोरी को आर्किटेक्चर किया गया है और MIG 7 सीरीज कंट्रोलर को डिज़ाइन किया गया है, प्रदर्शन सीधे आगे नहीं है।
इसके लिए विभिन्न जेडेक टाइमिंग पैरामीटर और कंट्रोलर आर्किटेक्चर की समझ की आवश्यकता होती है, और अनुमान प्राप्त करने के लिए आपको सिमुलेशन चलाने की आवश्यकता होगी।
प्रदर्शन का निर्धारण करने के लिए सामान्य सिद्धांत समान है लेकिन यह दस्तावेज़ MIG पूर्व का उपयोग करके दक्षता प्राप्त करने का एक आसान तरीका प्रदान करता हैampले डिजाइन परीक्षण बेंच और उत्तेजना की मदद से fileयहाँ संलग्न है।

प्रभावी बैंडविड्थ

DRAM डेटा बस पढ़ने और लिखने के फटने के दौरान ही निकट-पीक बैंडविड्थ प्राप्त करती है और इसका ओवरहेड प्रभावी डेटा दर को कम करता है।
कुछ पूर्वampओवरहेड के लेस हैं:

  • एक ही बैंक में पंक्तियों तक पहुँचने में लगने वाला प्रीचार्ज समय (पहुँच का पता एक ही पंक्ति-पृष्ठ हिट में नहीं है)
  • लेखन से पढ़ने की पहुंच में परिवर्तन के लिए पुनर्प्राप्ति समय लिखें
  • पढ़ने से लिखने की पहुंच से बदलने के लिए बस टर्नअराउंड समय

Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-28
प्रभावी बैंडविड्थ = पीक बैंडविड्थ * दक्षता 

एमआईजी डिजाइन जनरेशन

MIG IP और ex पर चरण-दर-चरण विवरण के लिए UG586 अध्याय 1 देखेंampले डिजाइन पीढ़ी।
MIG 7 सीरीज प्रदर्शन सिमुलेशन चलाने से पहले, यह सुनिश्चित करने के लिए निम्न कार्य करें कि आपका सिमुलेशन वातावरण ठीक है। MIG एक्स खोलेंampउपयुक्त पुस्तकालयों को डिजाइन और मैप करें, सिमुलेशन चलाएं, और सुनिश्चित करें कि आप प्रतिलेख में "परीक्षण पास" संदेश देख सकते हैं।
प्रवाह को प्रदर्शित करने के लिए मैंने xc7vx690tffg1761-2 के लिए एक MIG IP उत्पन्न किया है और पूर्व का आह्वान किया हैampले डिजाइन।
जिन दो बातों पर ध्यान दिया जाना चाहिए वे हैं मेमोरी एड्रेस बिट्स और मेमोरी एड्रेस मैपिंग चयन।
उदाहरणार्थampमैंने मेमोरी पार्ट ड्रॉप डाउन विकल्पों के अंतर्गत MT41J128M8XX-125 का चयन किया है।Xilinx DDR2 MIG-7-प्रदर्शन-अनुमान-अंजीर-1

चित्र-1 से चयनित स्मृति भाग के लिए, पंक्ति = 14, स्तंभ = 10 और बैंक = 3, इसलिए app_addr_width = पंक्ति + स्तंभ + बैंक + रैंक = 28 Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-2

आप या तो BANK_ROW_COLUMN या ROW BANK कॉलम चुन सकते हैं।
मैंने ROW BANK कॉलम छोड़ा है जो डिफ़ॉल्ट एड्रेस मैपिंग है।

Exampले डिजाइन सिमुलेशन संश्लेषित परीक्षण बेंच के साथ

सिमुलेशन सेटिंग्स के तहत, क्वेस्टासिम/मॉडलसिम सिम्युलेटर का चयन करें और संकलित पुस्तकालयों के स्थान पर ब्राउज़ करें।
तीसरे पक्ष के टूल इंस्टॉल पथ को इंगित करने, लक्ष्य सिम्युलेटर का चयन करने, और पुस्तकालयों को संकलित करने और मैप करने के विवरण के लिए, आप (UG900) विवाडो डिज़ाइन सूट यूजर गाइड लॉजिक सिमुलेशन का उल्लेख कर सकते हैं।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-3

जीयूआई के माध्यम से सिमुलेशन चलाएं (प्रोजेक्ट मैनेजर में रन सिमुलेशन टैब पर क्लिक करें) और सुनिश्चित करें कि आप ट्रांसक्रिप्ट में "परीक्षण पास" संदेश देखते हैं।

प्रदर्शन सिमुलेशन आरटीएल संशोधन

  1. स्रोत टैब पर राइट-क्लिक करें, "सिमुलेशन स्रोत जोड़ें या बनाएं" चुनें और mig7_perfsim_traffic_generator.sv पर ब्राउज़ करें file और इसे जोड़ने के लिए समाप्त पर क्लिक करें।
  2. स्रोत टैब पर राइट-क्लिक करें, "सिमुलेशन स्रोत जोड़ें या बनाएं" चुनें, perfsim_stimulus.txt पर ब्राउज़ करें, और इसे जोड़ने के लिए समाप्त क्लिक करें।
  3. पूर्व टिप्पणी करेंampsim_tb_top.v में le_top इन्स्टेन्शियशन file.
  4. नीचे दी गई RTL पंक्तियों को sim_tb_top,v में जोड़ें
  • लोकलपरम APP_ADDR_WIDTH = 28;
  • लोकलपरम APP_DATA_WIDTH = 64;
  • लोकलपरम APP_MASK_WIDTH = APP_DATA_WIDTH / 8;
  • लोकलपरम MEM_ADDR_ORDER = "BANK_ROW_COLUMN";
  • लोकलपरम BANK_WIDTH = 3;
  • लोकलपरम 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;

एफपीजीए मेमोरी कंट्रोलर इन्स्टेन्शियशन

mig_7श्रृंखला_0_मिग u_मिग_7श्रृंखला_0_मिग (
// मेमोरी इंटरफ़ेस पोर्ट

  • .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#
(
.एपीपी_डेटा_WIDTH (एपीपी_डेटा_WIDTH),
.COL_WIDTH (COL_WIDTH),
.ROW_WIDTH (ROW_WIDTH),
.RANK_WIDTH (रैंक_WIDTH),
.बैंक_चौड़ाई (बैंक_चौड़ाई),
.MEM_ADDR_ORDER (MEM_ADDR_ORDER),
.tCK (tCK ),
.ADDR_WIDTH (APP_ADDR_WIDTH)
)

u_traffic_gen
(
.clk (ui_clk ),
.पहला (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 को संशोधित करें।
    से मान प्राप्त किया जा सकता है _मिग.वी file.
  • आईपी ​​निर्माण के दौरान आपके घटक नाम के आधार पर पीला हाइलाइट किया गया तात्कालिक नाम mig_7series_0_mig भिन्न हो सकता है, सत्यापित करें कि आपने कोई भिन्न नाम चुना है और तदनुसार इसे बदलें।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-4
  • एक बार आईपी जनरेट हो जाने के बाद ओपन करें _मिग.वी file और एलएचएस सिग्नल नामों में किसी भी बदलाव के लिए क्रॉस-चेक करें और उन्हें ठीक करें।
  • app_sr_req, app_ref_req और app_zq_req को 0 से प्रारंभ किया जाना चाहिए।
  • पूर्व के रूप मेंample_top.v पर टिप्पणी की गई और नया files जोड़े गए हैं, आप शायद देखेंगे "?" के पास
    mig_7श्रृंखला_0_मिग.वी file सिमुलेशन स्रोतों के तहत।
    सही मैप करने के लिए file, mig_7series_0_mig.v पर राइट क्लिक करें, "स्रोत जोड़ें" चुनें, ब्राउज़ करें
    /mig_7श्रृंखला_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    और mig_7series_0_mig_sim.v जोड़ें file.
  • अगर आप देखें "?" अंतर्निहित के लिए fileएस, सभी आरटीएल जोड़ें fileक्लॉकिंग, कंट्रोलर, ip_top, phy और UI फोल्डर में।
  • एक बार RTL परिवर्तन हो जाने के बाद और सभी आवश्यक files आपके सिमुलेशन स्रोतों में जोड़े जाते हैं, पदानुक्रम चित्र 5 के समान होना चाहिए।
    द fileलाल रंग में हाइलाइट किए गए नए जोड़े गए हैं, और "?" ईसीसी संबंधित मॉड्यूल पर अपेक्षित है क्योंकि चयनित मेमोरी कॉन्फ़िगरेशन में ईसीसी विकल्प अक्षम है।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-5

प्रोत्साहन File विवरण
प्रत्येक प्रोत्साहन पैटर्न 48 बिट्स है और प्रारूप 6-1 के माध्यम से आंकड़े 6-4 में वर्णित है।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-6

पता एन्कोडिंग (पता [35:0])

चित्र 7-1 से चित्र 7-6 के अनुसार प्रोत्साहन में पता एन्कोड किया गया है। सभी पता क्षेत्रों को हेक्साडेसिमल प्रारूप में दर्ज करने की आवश्यकता है। सभी पता फ़ील्ड एक चौड़ाई है जो हेक्साडेसिमल प्रारूप में दर्ज करने के लिए चार से विभाज्य है। टेस्ट बेंच केवल एड्रेस फील्ड के आवश्यक बिट्स को मेमोरी कंट्रोलर को भेजता है।
उदाहरणार्थampले, एक आठ बैंक विन्यास में, केवल बैंक बिट्स [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 वह समय है जब सभी आदेश पूरे हो जाते हैं।
  • कैलिब_डोन वह समय है जब अंशांकन किया जाता है।

Exampले पैटर्न
ये भूतपूर्वamples BANK_ROW_COLUMN पर सेट MEM_ADDR_ORDER पर आधारित हैं।

सिंगल रीड पैटर्न
00_0_2_000F_00A_1 - यह पैटर्न 10वें कॉलम, 15वीं पंक्ति और दूसरे बैंक से पढ़ा गया सिंगल है।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वें कॉलम, 15वीं पंक्ति और दूसरे बैंक के लिए सिंगल राइट है।
00_0_2_000F_00A_1 – यह पैटर्न 10वें कॉलम, 15वीं पंक्ति और दूसरे बैंक से पढ़ा गया एकल है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 पूर्व के साथ कर रहे हैंampले डिजाइन सिमुलेशन। इसका तात्पर्य है कि आपका सिमुलेशन सेट अप तैयार है, आपने प्रदर्शन सिमुलेशन RTL संशोधन किया है, नया सिमुलेशन पदानुक्रम सही है और आपने प्रोत्साहन पैटर्न को समझ लिया है। Perfsim_stimulus.txt में 16 राइट्स और रीड्स के साथ एक बार फिर सिमुलेशन चलाएं।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-15

रन-ऑल करें, तब तक प्रतीक्षा करें जब तक कि init_calib_complete सिग्नल मुखर न हो जाए, और आप लिखने और पढ़ने की प्रस्तावित संख्या देख पाएंगे। इसके बाद अनुकरण बंद हो जाएगा। Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-16

जब आपको सिमुलेशन छोड़ने के लिए कहा जाए, तो नहीं चुनें और ट्रांसक्रिप्ट विंडो पर जाएं जहां आप प्रदर्शन के आंकड़े देख पाएंगे। Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-17

यदि आप चुनते हैं "सिमुलेशन छोड़ें" प्रदर्शन आँकड़े a को लिखे जाएंगे file नाम mig_band_width_output.txt sim_1/व्यवहार में स्थित है फ़ोल्डर.

Exampले निर्देशिका पथ: -
/mig_7श्रृंखला_0_exampLe_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-18

आपको आश्चर्य हो सकता है कि प्रतिशत क्योंtagई बस उपयोग केवल 29 है। उसी आईपी सेटिंग्स के साथ सिमुलेशन फिर से चलाएँ लेकिन केवल उत्तेजना को बदल रहा है file 256 तक लिखता है और 256 पढ़ता है

ff_0_0_0000_000_0
ff_0_0_0000_000_1

अब आप प्रतिशत देखेंगेtagई 85 के रूप में, जिसका अर्थ है कि डीडीआर 3 लिखने और पढ़ने के फटने के लंबे अनुक्रम के लिए बेहतर बस उपयोग प्रदान करता है। Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-19

प्रदर्शन में सुधार के सामान्य तरीके

दक्षता को प्रभावित करने वाले कारकों को दो वर्गों में विभाजित किया जा सकता है:

  1. स्मृति विशिष्ट
  2. नियंत्रक विशिष्टXilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-20

चित्र 9 आपको एक ओवर देता हैview उन शब्दों में से जो स्मृति विशिष्ट हैं।
SRAM और ब्लॉक मेमोरी के विपरीत DDR2 या DDR3 का प्रदर्शन केवल अधिकतम डेटा दर नहीं है।

यह कई समय कारकों पर निर्भर करता है, जिनमें निम्न शामिल हैं:

  • टीआरसीडी: रो कमांड डिले (या रास टू कैस डिले)।
  • टीसीएएस (सीएल): स्तंभ पता स्ट्रोब विलंबता।
  • टीआरपी: रो प्रीचार्ज विलंब।
  • Trás: पंक्ति सक्रिय समय (पूर्वपरिवर्तन के लिए सक्रिय करें)।
  • टीआरसी: पंक्ति चक्र समय। टीआरसी = टीआरएएस + टीआरपी
  • टीआरएसी: राडोम पहुंच में देरी। टीआरएसी = टीआरसीडी + टीसीएएस
  • टीसीडब्ल्यूएल: कैस लेखन विलंबता।
  • टीजेडक्यू: ZQ अंशांकन समय।
  • टीआरएफसी: पंक्ति ताज़ा चक्र समय
  • टीडब्ल्यूटीआर: पढ़ने के लिए लिखें विलंब। अंतिम लेखन लेनदेन से रीड कमांड समय।
  • टीडब्लूआर: पुनर्प्राप्ति समय लिखें। प्रीचार्ज समय के लिए अंतिम लेखन लेनदेन

सभी सूचीबद्ध मापदंडों का समय उपयोग की गई मेमोरी के प्रकार और मेमोरी पार्ट स्पीड ग्रेड पर निर्भर करता है।
परिभाषाओं और समय विनिर्देशों पर अधिक विवरण DDR2 DDR3 JEDEC या किसी मेमोरी डिवाइस डेटाशीट में पाया जा सकता है।

दक्षता मुख्य रूप से इस बात पर निर्भर करती है कि मेमोरी को कैसे एक्सेस किया जाता है। अलग-अलग पता पैटर्न अलग-अलग दक्षता परिणाम देते हैं।

मेमोरी टाइमिंग ओवरहेड्स

  1. नए बैंकों/पंक्तियों में बदलते समय या एक ही बैंक में पंक्तियों को बदलते समय सक्रियण समय और प्रीचार्ज समय। - इसलिए यदि आप पंक्ति परिवर्तन को कम करते हैं, तो यह tRCD और tRP को हटा सकता है।
  2. लगातार लिखने या पढ़ने के आदेश भेजें - tCCD समय बनाए रखना।
  3. कमांड चेंजओवर को पढ़ने के लिए लिखने और लिखने के लिए पढ़ने को कम से कम करें - रीड एक्सेस को बदलने के लिए रिकवरी टाइम लिखें, पढ़ने से लिखने के लिए बदलने के लिए बस टर्नअराउंड समय
  4. उचित रीफ्रेश अंतराल सेट करें।
    • DDR3 SDRAM को tREFI के औसत आवधिक अंतराल पर ताज़ा चक्रों की आवश्यकता होती है।
    • अग्रिम रूप से अधिकतम 8 अतिरिक्त ताज़ा आदेश जारी किए जा सकते हैं ("खींचा गया")। यह रिफ्रेश की संख्या को कम नहीं करता है, लेकिन दो आसपास के रिफ्रेश कमांड के बीच अधिकतम अंतराल 9 × tREFI तक सीमित है।Xilinx DDR2 MIG 7 प्रदर्शन अनुमान-अंजीर-21
  • सभी बैंकों का उपयोग करें - एक उपयुक्त एड्रेसिंग मैकेनिज्म बेहतर है।
    • रो-बैंक-कॉलम: एक अनुक्रमिक पता स्थान पर होने वाले लेनदेन के लिए, मौजूदा पंक्ति के अंत तक पहुंचने पर लेन-देन जारी रखने के लिए कोर स्वचालित रूप से डीआरएएम डिवाइस के अगले बैंक में एक ही पंक्ति खोलता है। यह उन अनुप्रयोगों के लिए उपयुक्त है जिनके लिए बड़े डेटा पैकेटों को अनुक्रमिक पता स्थानों पर फटने की आवश्यकता होती है।
    • बैंक-पंक्ति-स्तंभ: एक पंक्ति सीमा पार करते समय, वर्तमान पंक्ति बंद हो जाएगी और उसी बैंक के भीतर दूसरी पंक्ति खोली जाएगी। MSB एक बैंक का पता है, जिसका उपयोग विभिन्न बैंकों से स्विच करने के लिए किया जा सकता है। यह समय की अवधि के लिए स्मृति के एक ब्लॉक के लिए छोटे, अधिक यादृच्छिक लेनदेन के लिए उपयुक्त है और फिर दूसरे ब्लॉक (बैंक) में कूदता है।
  • फटने की लंबाई
    • डीडीआर8 के लिए 3 सीरीज पर बीएल 7 समर्थित है। BC4 की दक्षता बहुत कम है जो 50% से कम है। ऐसा इसलिए है क्योंकि BC4 का निष्पादन समय BL8 के समान है। घटक के अंदर डेटा केवल छिपा हुआ है।
    • ऐसे मामलों में जहां आप फुल बर्स्ट लिखना नहीं चाहते हैं, या तो डेटा मास्क या राइट-आफ्टर-रीड पर विचार किया जा सकता है।
  • उचित ZQ अंतराल सेट करें (केवल DDR3)
    नियंत्रक ZQ शॉर्ट (ZQCS) और ZQ लॉन्ग (ZQCL) कैलिब्रेशन कमांड दोनों भेजता है।
    • DDR3 जेडेक मानक का पालन करें
    • ZQ कैलिब्रेशन पर JEDEC विनिर्देश JESD5.5-79 DDR3 SDRAM मानक के खंड 3 में चर्चा की गई है
    • ZQ कैलिब्रेशन नियमित अंतराल पर ऑन डाई टर्मिनेशन (ODT) को कैलिब्रेट करता है ताकि VT में बदलाव को ध्यान में रखा जा सके
    • तर्क bank_common.v/vhd में निहित है
    • पैरामीटर Tzqcs उस दर को निर्धारित करता है जिस पर ZQ कैलिब्रेशन कमांड को मेमोरी में भेजा जाता है
    • काउंटर को अक्षम करना और मैन्युअल रूप से app_zq_req का उपयोग करना संभव है, यह मैन्युअल रूप से रीफ्रेश भेजने के समान है।
      विवरण के लिए (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 बैंक मशीनें आरटीएल पैरामीटर के माध्यम से कॉन्फ़िगर की जाती हैं।
    • बैंक मशीनों को बदलने के लिए, पैरामीटर nBANK_MACHS = 8 पर विचार करें जो memc_ui_top Ex में निहित हैample 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 पंक्ति बदलने के बजाय सभी बैंकों का उपयोग करने के लिए, बैंक को बदलने के लिए पता पैटर्न को संशोधित करें जैसा कि नीचे दिखाया गया है।
यह MIG GUI में मेमोरी एड्रेस मैपिंग सेटिंग में ROW_BANK_Column को सेट करने के बराबर है।

  • 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 कंट्रोलर रिफ्रेश को दरकिनार करने को प्रोत्साहित नहीं करता है क्योंकि हम अनिश्चित हैं कि क्या आप जेडेक ऑटो रिफ्रेश टाइमिंग को पूरा कर पाएंगे जो डेटा विश्वसनीयता को प्रभावित करता है।
नियंत्रक की ओर से आप nBANk_MACH को बदल सकते हैं और प्रदर्शन में सुधार देख सकते हैं।
हालाँकि, यह आपके डिज़ाइन समय को प्रभावित कर सकता है, कृपया देखें (Xilinx उत्तर 36505) nBANk_MACH पर विवरण के लिएXilinx 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

यह भी ध्यान दें कि ½ और ¼ नियंत्रक अपनी विलंबता के कारण दक्षता को नकारात्मक रूप से प्रभावित करते हैं।
उदाहरणार्थampले, चूंकि हम प्रत्येक 4 सीके चक्रों में केवल आदेश भेज सकते हैं, कभी-कभी न्यूनतम डीआरएएम समय विनिर्देशों का पालन करते समय अतिरिक्त पैडिंग होती है, जो सैद्धांतिक से दक्षता कम कर सकती है।
अपनी दक्षता आवश्यकता के अनुरूप एक को खोजने के लिए विभिन्न नियंत्रकों को आज़माएं।

संदर्भ

  1. Zynq-7000 AP SoC और 7 सीरीज FPGAs MIS v2.3 [UG586]
  2. Xilinx MIG सॉल्यूशन सेंटर http://www.xilinx.com/support/answers/34243.html

संशोधन इतिहास
13/03/2015 - प्रारंभिक रिलीज

डाउनलोड पीडीऍफ़: Xilinx DDR2 MIG 7 प्रदर्शन आकलन गाइड

संदर्भ

एक टिप्पणी छोड़ें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *