Xilinx DDR2 MIG 7 प्रदर्शन अनुमान गाइड
महत्त्वपूर्ण नोट: उत्तर रेकर्डको यो डाउनलोड गर्न मिल्ने PDF यसको उपयोगिता र पठनीयता बढाउनको लागि प्रदान गरिएको छ। यो नोट गर्न महत्त्वपूर्ण छ कि उत्तर रेकर्डहरू छन् Web- आधारित सामग्री जुन बारम्बार अपडेट गरिन्छ जब नयाँ जानकारी उपलब्ध हुन्छ। तपाईंलाई Xilinx प्राविधिक समर्थन भ्रमण गर्न सम्झाइन्छ Webसाइट र पुनview (Xilinx Answer 63234) यस उत्तरको पछिल्लो संस्करणको लागि।
परिचय
DDR2 र DDR3 सम्झनाहरू वास्तुबद्ध गरिएको र MIG 7 श्रृंखला नियन्त्रक डिजाइन गरिएको कारणले, प्रदर्शन सीधा अगाडि छैन।
यसलाई विभिन्न Jedec समय प्यारामिटरहरू र नियन्त्रक वास्तुकलाको बुझाइ आवश्यक छ, र तपाईंले अनुमानहरू प्राप्त गर्न सिमुलेशनहरू चलाउन आवश्यक हुनेछ।
कार्यसम्पादन निर्धारणको लागि सामान्य सिद्धान्त एउटै हो तर यो कागजातले MIG पूर्व प्रयोग गरेर दक्षता प्राप्त गर्न सजिलो तरिका प्रदान गर्दछ।ampपरीक्षण बेन्च र उत्तेजनाको मद्दतले डिजाइन गर्नुहोस् fileयहाँ संलग्न छ।
प्रभावी ब्यान्डविथ
DRAM डाटा बसले पढ्न र लेख्ने फटको समयमा मात्र नजिकको शिखर ब्यान्डविथ प्राप्त गर्दछ र यसको ओभरहेडले प्रभावकारी डाटा दर कम गर्दछ।
केही पूर्वampओभरहेड को लेस हो:
- एउटै बैंकमा पङ्क्तिहरू पहुँच गर्ने प्रिचार्ज समय (एउटै पङ्क्ति-पृष्ठ हिटमा पहुँच ठेगाना छैन)
- रिकभरी समय लेख्नुहोस् र पढ्ने पहुँचमा परिवर्तन गर्न
- बस टर्नअराउन्ड समय पढ्नबाट लेख्न पहुँचमा परिवर्तन गर्न
प्रभावकारी ब्यान्डविथ = पीक ब्यान्डविथ * दक्षता
MIG डिजाइन जेनेरेसन
MIG IP र भूतपूर्वमा चरण-दर-चरण विवरणहरूको लागि UG586 अध्याय 1 हेर्नुहोस्ampले डिजाइन पुस्ता।
MIG 7 श्रृंखला प्रदर्शन सिमुलेशन चलाउनु अघि, तपाइँको सिमुलेशन वातावरण ठीक छ भनेर सुनिश्चित गर्न निम्न गर्नुहोस्। MIG पूर्व खोल्नुहोस्ampउपयुक्त पुस्तकालयहरू डिजाइन गर्नुहोस् र नक्सा गर्नुहोस्, सिमुलेशन चलाउनुहोस्, र तपाईंले ट्रान्सक्रिप्टमा "परीक्षण पास" सन्देश देख्न सक्नुहुन्छ भन्ने कुरा सुनिश्चित गर्नुहोस्।
प्रवाह प्रदर्शन गर्नको लागि मैले xc7vx690tffg1761-2 को लागि MIG IP उत्पन्न गरेको छु र पूर्वलाई आह्वान गरेको छु।ampले डिजाइन।
ध्यान दिनुपर्ने दुई चीजहरू मेमोरी ठेगाना बिटहरू र मेमोरी ठेगाना म्यापिङ चयन हुन्।
पूर्वका लागिample, मैले मेमोरी पार्ट ड्रप डाउन विकल्पहरू अन्तर्गत MT41J128M8XX-125 चयन गरेको छु।
चित्र-1, पङ्क्ति = 14, स्तम्भ = 10 र बैंक = 3 बाट चयन गरिएको मेमोरी भागको लागि, त्यसैले app_addr_width = row + column + bank + rank= 28
तपाईंले BANK_ROW_COLUMN वा ROW BANK स्तम्भ चयन गर्न सक्नुहुन्छ।
मैले ROW BANK कोलम छोडेको छु जुन पूर्वनिर्धारित ठेगाना म्यापिङ हो।
Exampले डिजाइन सिमुलेशन संश्लेषण योग्य परीक्षण बेन्च संग
सिमुलेशन सेटिङहरू अन्तर्गत, QuestaSim/ModelSim सिम्युलेटर चयन गर्नुहोस् र कम्पाइल गरिएको पुस्तकालयहरूको स्थानमा ब्राउज गर्नुहोस्।
तेस्रो-पक्ष उपकरण स्थापना मार्गमा संकेत गर्ने, लक्ष्य सिमुलेटर चयन गर्ने, र पुस्तकालयहरू कम्पाइल गर्ने र म्याप गर्ने बारे विवरणहरूको लागि, तपाईंले (UG900) Vivado Design Suite प्रयोगकर्ता गाइड तर्क सिमुलेशनलाई सन्दर्भ गर्न सक्नुहुन्छ।
GUI मार्फत सिमुलेशन चलाउनुहोस् (प्रोजेक्ट प्रबन्धकमा रन सिमुलेशन ट्याबमा क्लिक गर्नुहोस्) र तपाईंले ट्रान्सक्रिप्टमा "परीक्षण पास" सन्देश देख्नुभएको निश्चित गर्नुहोस्।
प्रदर्शन सिमुलेशन RTL परिमार्जनहरू
- स्रोत ट्याबमा दायाँ क्लिक गर्नुहोस्, "सिमुलेशन स्रोतहरू थप्नुहोस् वा सिर्जना गर्नुहोस्" चयन गर्नुहोस्, र mig7_perfsim_traffic_generator.sv मा ब्राउज गर्नुहोस्। file र यसलाई थप्न समाप्त क्लिक गर्नुहोस्।
- स्रोत ट्याबमा दायाँ क्लिक गर्नुहोस्, "सिमुलेशन स्रोतहरू थप्नुहोस् वा सिर्जना गर्नुहोस्" चयन गर्नुहोस्, perfsim_stimulus.txt मा ब्राउज गर्नुहोस्, र यसलाई थप्न समाप्त क्लिक गर्नुहोस्।
- पूर्व टिप्पणी गर्नुहोस्ample_top instantiation in the sim_tb_top.v file.
- तलका 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;
- स्थानीय परम RANK_WIDTH = 1;
- तार [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- तार [२:०] c2_ddr0_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_ट्राफिक_जन
(
.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 सिर्जना गर्दा तपाईंको घटक नामको आधारमा भिन्न हुन सक्छ, तपाईंले फरक नाम रोज्नुभएको छ वा छैन भनी प्रमाणित गर्नुहोस् र तदनुसार परिवर्तन गर्नुहोस्।
- आईपी उत्पन्न भएपछि खोल्नुहोस् _mig.v file र LHS सिग्नल नामहरूमा कुनै पनि भिन्नताहरूको लागि क्रस-चेक गर्नुहोस् र तिनीहरूलाई सच्याउनुहोस्।
- app_sr_req, app_ref_req र app_zq_req लाई ० मा प्रारम्भ गर्नुपर्छ।
- पूर्वको रूपमाample_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 घडी, नियन्त्रक, ip_top, phy र UI फोल्डरहरूमा।
- एक पटक RTL परिवर्तन गरिसकेपछि र आवश्यक सबै files लाई तपाइँको सिमुलेशन स्रोतहरूमा थपिएको छ, पदानुक्रम चित्र 5 जस्तै हुनुपर्छ।
द fileरातोमा हाइलाइट गरिएका s नयाँ थपिएका छन्, र "?" चयन गरिएको मेमोरी कन्फिगरेसनमा ECC विकल्प असक्षम भएकोले ECC सम्बन्धित मोड्युलहरूमा अपेक्षित छ।
उत्तेजना File विवरण
प्रत्येक उत्तेजना ढाँचा 48 बिट हो र ढाँचा चित्र 6-1 देखि 6-4 मा वर्णन गरिएको छ।
ठेगाना इन्कोडिङ (ठेगाना [३५:०])
ठेगाना चित्र 7-1 देखि चित्र 7-6 अनुसार उत्तेजनामा इन्कोड गरिएको छ। सबै ठेगाना क्षेत्रहरू हेक्साडेसिमल ढाँचामा प्रविष्ट गर्न आवश्यक छ। सबै ठेगाना फाँटहरू चौडाइ हुन् जुन हेक्साडेसिमल ढाँचामा प्रविष्ट गर्न चारले भाग गर्न सकिन्छ। परीक्षण बेन्चले मेमोरी कन्ट्रोलरमा ठेगाना क्षेत्रको आवश्यक बिटहरू मात्र पठाउँछ।
पूर्वका लागिample, आठ बैंक कन्फिगरेसनमा, केवल बैंक बिटहरू [२:०] मेमोरी नियन्त्रकमा पठाइन्छ र बाँकी बिटहरूलाई बेवास्ता गरिन्छ। ठेगाना क्षेत्रका लागि अतिरिक्त बिटहरू हेक्साडेसिमल ढाँचामा ठेगाना प्रविष्ट गर्नका लागि प्रदान गरिन्छ।
तपाईंले प्रविष्ट गरिएको मान दिइएको कन्फिगरेसनको चौडाइसँग मेल खान्छ भन्ने पुष्टि गर्नुपर्छ।
- स्तम्भ ठेगाना (स्तम्भ [११:०]) – उत्तेजनामा स्तम्भ ठेगाना अधिकतम 12 बिटहरूमा प्रदान गरिएको छ, तर तपाईंले यसलाई आफ्नो डिजाइनमा सेट गरिएको स्तम्भ चौडाइ प्यारामिटरको आधारमा सम्बोधन गर्न आवश्यक छ।
- पङ्क्ति ठेगाना (पङ्क्ति [१५:०]) - उत्तेजकमा पङ्क्ति ठेगाना अधिकतम 16 बिटहरूमा प्रदान गरिएको छ, तर तपाईंले आफ्नो डिजाइनमा सेट गरिएको पङ्क्ति चौडाइ प्यारामिटरको आधारमा यसलाई सम्बोधन गर्न आवश्यक छ।
- बैंक ठेगाना (बैंक [३:०]) - प्रोत्साहनमा बैंक ठेगाना अधिकतम चार बिटहरूमा प्रदान गरिएको छ, तर तपाईंले आफ्नो डिजाइनमा सेट गरिएको बैंक चौडाइ प्यारामिटरको आधारमा यसलाई सम्बोधन गर्न आवश्यक छ।
- श्रेणी ठेगाना (Rank [3:0]) - स्टिमुलसमा रैंक ठेगाना अधिकतम चार बिटहरूमा प्रदान गरिएको छ, तर तपाईंले आफ्नो डिजाइनमा सेट गरिएको रैंक चौडाइ प्यारामिटरको आधारमा यसलाई सम्बोधन गर्न आवश्यक छ।
ठेगाना शीर्ष-स्तर MEM_ADDR_ORDER प्यारामिटरमा आधारित हुन्छ र प्रयोगकर्ता इन्टरफेसमा पठाइन्छ।
आदेश दोहोर्याउनुहोस् (कमांड दोहोर्याउनुहोस् [7:0])
आदेश पुनरावृत्ति गणना प्रयोगकर्ता इन्टरफेसमा सम्बन्धित आदेश दोहोर्याइएको समयको संख्या हो। प्रत्येक पुनरावृत्तिको लागि ठेगाना 8 द्वारा बढाइएको छ। अधिकतम पुनरावृत्ति गणना 128 हो।
परीक्षण बेन्चले स्तम्भ सीमाको लागि जाँच गर्दैन र यदि वृद्धिको क्रममा अधिकतम स्तम्भ सीमा पुग्यो भने यो वरिपरि लपेट्छ।
128 आदेशहरूले पृष्ठ भर्दछ। ० भन्दा अन्य कुनै पनि स्तम्भ ठेगानाको लागि, 0 को दोहोरिने गणना स्तम्भ सीमा पार गर्दै र स्तम्भ ठेगानाको सुरुमा वरिपरि लपेटिन्छ।
बस उपयोगिता
बसको उपयोगलाई प्रयोगकर्ता इन्टरफेसमा कुल पढ्ने र लेख्ने संख्यालाई ध्यानमा राखेर गणना गरिन्छ र निम्न समीकरण प्रयोग गरिन्छ:
- BL8 ले चार मेमोरी घडी चक्रहरू लिन्छ
- end_of_stimulus भनेको समय हो जब सबै आदेशहरू गरिन्छ।
- calib_done भनेको क्यालिब्रेसन गर्ने समय हो।
Exampढाँचाहरू
यी पूर्वampलेसहरू BANK_ROW_COLUMN मा सेट गरिएको MEM_ADDR_ORDER मा आधारित छन्।
एकल पढ्ने ढाँचा
00_0_2_000F_00A_1 - यो ढाँचा 10 औं स्तम्भ, 15 औं पङ्क्ति, र दोस्रो बैंकबाट एकल पढिएको हो।एकल लेखन ढाँचा
00_0_1_0040_010_0 - यो ढाँचा 32 औं स्तम्भ, 128 औं पङ्क्ति, र पहिलो बैंकमा एकल लेखन हो।एउटै ठेगानामा एकल लेख्नुहोस् र पढ्नुहोस्
00_0_2_000F_00A_0 – यो ढाँचा 10 औं स्तम्भ, 15 औं पङ्क्ति, र दोस्रो बैंकमा एकल लेखन हो।
00_0_2_000F_00A_1 – यो ढाँचा 10 औं स्तम्भ, 15 औं पङ्क्ति, र दोस्रो बैंकबाट एकल पढिएको हो
एउटै ठेगानामा धेरै लेख्ने र पढ्ने
0A_0_0_0010_000_0 – यो 10 देखि 0 सम्म सुरु हुने ठेगानाको साथ 80 लेखहरूसँग मेल खान्छ जुन स्तम्भमा देख्न सकिन्छ।
0A_0_0_0010_000_1 – यो ० देखि ८० सम्म सुरु हुने ठेगानाको साथ १० पढाइसँग मेल खान्छ जुन स्तम्भमा देख्न सकिन्छ।
लेख्ने क्रममा पृष्ठ र्याप गर्नुहोस्
0A_0_2_000F_3F8_0 – यो स्तम्भ ठेगानाको साथ 10 लेखहरूसँग मेल खान्छ जुन एक लेख पछि पृष्ठको सुरुमा बेरिएको हुन्छ।
प्रदर्शन ट्राफिक जेनरेटर सिमुलेट गर्दै
यस बिन्दुमा तपाईले MIG भूतपूर्वको साथ गर्नुभयोampले डिजाइन सिमुलेशन। यसले तपाईंको सिमुलेशन सेटअप तयार छ, तपाईंले कार्यसम्पादन सिमुलेशन RTL परिमार्जनहरू गर्नुभएको छ, नयाँ सिमुलेशन पदानुक्रम सही छ र तपाईंले उत्तेजना ढाँचाहरू बुझ्नुभएको छ भन्ने संकेत गर्छ। perfsim_stimulus.txt मा 16 राइट र रिड्सको साथ एक पटक फेरि सिमुलेशन चलाउनुहोस्।
रन-अल गर्नुहोस्, init_calib_complete सङ्केत जोडिएसम्म पर्खनुहोस्, र तपाईंले लेख्ने र पढ्ने प्रस्तावित संख्या हेर्न सक्षम हुनुहुनेछ। त्यसपछि सिमुलेशन रोकिनेछ।
जब तपाईंलाई सिमुलेशन छोड्न प्रेरित गरिन्छ, छैन चयन गर्नुहोस् र ट्रान्सक्रिप्ट विन्डोमा जानुहोस् जहाँ तपाईं प्रदर्शन तथ्याङ्कहरू हेर्न सक्षम हुनुहुनेछ।
यदि तपाइँ चयन गर्नुहुन्छ "सिमुलेशन छोड्नुहोस्" कार्यसम्पादन तथ्याङ्क a मा लेखिनेछ file नाम दिइएको mig_band_width_output.txt sim_1/behave मा अवस्थित छ फोल्डर।
Exampले डाइरेक्टरी मार्ग: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
तपाईलाई अचम्म लाग्न सक्छ किन प्रतिशतtage बसको उपयोग ony 29 हो। उही आईपी सेटिङहरूसँग सिमुलेशन पुन: चलाउनुहोस् तर केवल उत्तेजना परिवर्तन गर्नुहोस् file 256 लेख्छन् र 256 पढ्छन्
ff_0_0_0000_000_0
ff_0_0_0000_000_1
तपाईले अब प्रतिशत देख्नुहुनेछtage 85 को रूपमा, जसले DDR3 ले लेख्ने र पढ्ने बर्स्टहरूको लामो अनुक्रमको लागि राम्रो बस उपयोग प्रस्ताव गर्दछ।
प्रदर्शन सुधार गर्न सामान्य तरिकाहरू
दक्षतालाई प्रभाव पार्ने कारकहरूलाई दुई भागमा विभाजन गर्न सकिन्छ:
- मेमोरी विशिष्ट
- नियन्त्रक विशिष्ट
चित्र 9 ले तपाईंलाई ओभर दिन्छview स्मृति विशिष्ट सर्तहरू।
SRAM हरू र ब्लक मेमोरीहरू DDR2 वा DDR3 प्रदर्शनको विपरीत अधिकतम डाटा दर मात्र होइन।
यो धेरै समय कारक मा निर्भर गर्दछ, सहित:
- tRCD: पङ्क्ति आदेश ढिलाइ (वा रास देखि क्यास ढिलाइ)।
- tCAS(CL): स्तम्भ ठेगाना स्ट्रोब विलम्बता।
- tRP: पङ्क्ति प्रिचार्ज ढिलाइ।
- ट्रास: पङ्क्ति सक्रिय समय (पूर्व परिवर्तन गर्न सक्रिय गर्नुहोस्)।
- tRC: पङ्क्ति चक्र समय। tRC = trAS + tRP
- trAC: Radom पहुँच ढिलाइ। trAC = tRCD + tCAS
- tCWL: Cas लेखन विलम्बता।
- tZQ: ZQ क्यालिब्रेसन समय।
- tRFC: पङ्क्ति रिफ्रेस साइकल समय
- tWTR: ढिलाइ पढ्न लेख्नुहोस्। आदेश समय पढ्नको लागि अन्तिम लेख लेनदेन।
- tWR: रिकभरी समय लेख्नुहोस्। प्रिचार्ज समय मा अन्तिम लेख लेनदेन
सबै सूचीबद्ध प्यारामिटरहरूको समय प्रयोग गरिएको मेमोरीको प्रकार र मेमोरी भाग गति ग्रेडमा निर्भर गर्दछ।
परिभाषाहरू र समय निर्दिष्टीकरणहरूमा थप विवरणहरू DDR2 DDR3 JEDEC वा कुनै पनि मेमोरी उपकरण डाटाशीटमा फेला पार्न सकिन्छ।
दक्षता मुख्यतया मेमोरी कसरी पहुँच गरिन्छ भन्नेमा निर्भर गर्दछ। विभिन्न ठेगाना ढाँचाहरूले विभिन्न दक्षता परिणामहरू दिन्छ।
मेमोरी टाइमिङ ओभरहेड्स
- सक्रियता समय र प्रिचार्ज समय नयाँ बैंकहरू/पङ्क्तिहरूमा परिवर्तन गर्दा वा एउटै बैंकमा पङ्क्तिहरू परिवर्तन गर्दा।- त्यसैले यदि तपाईंले पङ्क्ति परिवर्तन घटाउनुभयो भने, यसले tRCD र tRP हटाउन सक्छ।
- निरन्तर लेखन वा पढ्न आदेशहरू पठाउनुहोस् - tCCD समय कायम गर्दै।
- पढ्नको लागि लेख्ने र लेख्नको लागि कमाण्ड परिवर्तन गर्न पढ्नको लागि कम गर्नुहोस् - पहुँच पढ्नको लागि परिवर्तन गर्न रिकभरी समय लेख्नुहोस्, बस टर्नअराउन्ड समय पढ्नबाट लेख्नको लागि परिवर्तन गर्नुहोस्
- उचित रिफ्रेस अन्तराल सेट गर्नुहोस्।
- DDR3 SDRAM लाई tREFI को औसत आवधिक अन्तरालमा पुन:ताजा चक्र चाहिन्छ।
- अधिकतम 8 थप रिफ्रेस आदेशहरू अग्रिम जारी गर्न सकिन्छ ("पुल्ड इन")। यसले रिफ्रेसहरूको संख्या घटाउँदैन, तर दुई वरपरका रिफ्रेस आदेशहरू बीचको अधिकतम अन्तराल 9 × tREFI मा सीमित छ।
- सबै बैंकहरू प्रयोग गर्नुहोस् - एक उपयुक्त सम्बोधन संयन्त्र उपयुक्त छ।
- रो-बैंक-स्तम्भ: अनुक्रमिक ठेगाना स्पेसमा हुने लेनदेनको लागि, कोरले स्वचालित रूपमा DRAM उपकरणको अर्को बैंकमा उही पङ्क्ति खोल्छ जुन लेनदेन जारी राख्नको लागि अवस्थित पङ्क्तिको अन्त्यमा पुग्छ। यो क्रमिक ठेगाना स्थानहरूमा ठूला डाटा प्याकेटहरू फटाउन आवश्यक हुने अनुप्रयोगहरूमा राम्रोसँग उपयुक्त छ।
- बैंक-पङ्क्ति-स्तम्भ: पङ्क्तिको सीमा पार गर्दा, हालको पङ्क्ति बन्द हुनेछ र अर्को पङ्क्ति उही बैंक भित्र खोलिनेछ। MSB एउटा बैंक ठेगाना हो, जुन विभिन्न बैंकहरूबाट स्विच गर्न प्रयोग गर्न सकिन्छ। यो छोटो अवधिको लागि मेमोरीको एक ब्लकमा थप अनियमित लेनदेनको लागि उपयुक्त छ र त्यसपछि अर्को ब्लक (बैंक) मा जम्प गर्नुहोस्।
- बर्स्ट लम्बाइ
- BL 8 DDR3 को लागि 7 श्रृंखलामा समर्थित छ। BC4 सँग धेरै कम दक्षता छ जुन 50% भन्दा कम छ। यो किनभने BC4 को कार्यान्वयन समय BL8 जस्तै हो। डाटा केवल कम्पोनेन्ट भित्र मास्क गरिएको छ।
- यदि तपाइँ पूर्ण बर्स्ट लेख्न चाहनुहुन्न भने, डाटा मास्क वा लेख पछि-पढ्ने विचार गर्न सकिन्छ।
- एक उचित ZQ अन्तराल सेट गर्नुहोस् (DDR3 मात्र)
नियन्त्रकले ZQ Short (ZQCS) र ZQ Long (ZQCL) क्यालिब्रेसन आदेशहरू दुवै पठाउँछ।- DDR3 Jedec मानक पालना गर्नुहोस्
- ZQ क्यालिब्रेसन JEDEC Spec JESD5.5-79 DDR3 SDRAM मानकको खण्ड 3 मा छलफल गरिएको छ।
- ZQ क्यालिब्रेसनले VT मा भिन्नताहरूको लागि खातामा नियमित अन्तरालहरूमा अन डाइ टर्मिनेशन (ODT) क्यालिब्रेट गर्दछ।
- तर्क bank_common.v/vhd मा समावेश छ
- प्यारामिटर Tzqcs ले दर निर्धारण गर्दछ जुन ZQ क्यालिब्रेसन आदेश मेमोरीमा पठाइन्छ
- t काउन्टर असक्षम गर्न र म्यानुअल रूपमा app_zq_req प्रयोग गरेर पठाउन सम्भव छ, यो म्यानुअल रूपमा रिफ्रेस पठाउनु जस्तै हो।
विवरणका लागि (Xilinx Answer 47924) हेर्नुहोस्।
नियन्त्रक ओभरहेडहरू
- आवधिक पठन - सन्दर्भ गर्नुहोस् (Xilinx उत्तर 43344) विवरणहरूको लागि।
- पढाइको अवधि परिवर्तन नगर्नुहोस्
- लेख्ने क्रममा आवधिक पढाइहरू छोड्नुहोस् र वास्तविक पढ्न अघि छुटेका पढेको संख्या जारी गर्नुहोस्
- पुन: क्रमबद्ध - सन्दर्भ गर्नुहोस् (Xilinx उत्तर 34392) विवरणहरूको लागि।
प्रयोगकर्ता र AXI इन्टरफेस डिजाइनहरूको लागि यो सक्षम भएको राम्रो छ।- रिअर्डर भनेको तर्क हो जसले धेरै आदेशहरू अगाडि हेर्छ र गैर-मेमोरी आदेशहरूलाई मान्य ब्यान्डविथ ओगटेन बनाउन प्रयोगकर्ता आदेश क्रम परिवर्तन गर्दछ। प्रदर्शन पनि वास्तविक ट्राफिक ढाँचासँग सम्बन्धित छ।
- ठेगाना ढाँचामा आधारित, पुन: क्रमले प्रिचार्ज छोड्न र आदेशहरू सक्रिय गर्न मद्दत गर्दछ र tRCD र tRP लाई डाटा ब्यान्ड चौडाइ ओगटेन।
- बैंक मेसिनको संख्या बढाउने प्रयास गर्नुहोस्।
- धेरै जसो नियन्त्रकको तर्क बैंक मेसिनहरूमा रहन्छ र तिनीहरू DRAM बैंकहरूसँग मेल खान्छ।
- दिइएको बैंक मेसिनले कुनै पनि समयमा एकल DRAM बैंक व्यवस्थापन गर्छ।
- बैंक मेसिन असाइनमेन्ट गतिशील छ त्यसैले प्रत्येक भौतिक बैंकको लागि बैंक मेसिन हुनु आवश्यक छैन।
- बैंक मेसिनहरू कन्फिगर गर्न सकिन्छ, तर यो क्षेत्र र कार्यसम्पादन बीचको ट्रेडअफ हो।
- बैंक मेसिनहरूको स्वीकार्य संख्या 2-8 सम्मको हुन्छ।
- पूर्वनिर्धारित रूपमा, RTL प्यारामिटरहरू मार्फत 4 बैंक मेसिनहरू कन्फिगर गरिएका छन्।
- बैंक मेसिनहरू परिवर्तन गर्न, memc_ui_top Ex मा समावेश भएको प्यारामिटर nBANK_MACHS = 8 लाई विचार गर्नुहोस्।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 प्रतिशतमा छ।
चित्र 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
सिमुलेशनको अन्त्यमा तपाईंले पहिलेको ७७ प्रतिशत बस उपयोगिता अहिले ८७ भएको देख्नुहुनेछ!
यदि तपाईलाई अझै उच्च दक्षता चाहिन्छ भने, तपाई 1024 वा 2048 बाइटको ठूलो प्याकेट साइजको लागि जान सक्नुहुन्छ, वा म्यानुअल रिफ्रेसलाई विचार गर्नुहोस्।
नोट: Xilinx ले नियन्त्रक रिफ्रेसलाई बाइपास गर्न प्रोत्साहन गर्दैन किनकि हामी अनिश्चित छौं कि यदि तपाइँ Jedec स्वत: रिफ्रेस समय पूरा गर्न सक्षम हुनुहुनेछ जसले डेटा विश्वसनीयतालाई असर गर्छ।
नियन्त्रक पक्षबाट तपाईले nBANk_MACH परिवर्तन गर्न सक्नुहुन्छ र प्रदर्शनमा सुधार देख्न सक्नुहुन्छ।
यद्यपि, यसले तपाईंको डिजाइन समयलाई असर गर्न सक्छ, कृपया सन्दर्भ गर्नुहोस् (Xilinx उत्तर 36505) nBANk_MACH मा विवरणहरूको लागि
core_name_mig_sim.v खोल्नुहोस् file र प्यारामिटरहरू nBANK_MACHS लाई 4 देखि 8 सम्म परिवर्तन गर्नुहोस् र सिमुलेशन पुन: चलाउनुहोस्। हार्डवेयरमा प्यारामिटर मान प्रभाव पार्नको लागि, तपाईंले core_name_mig.v लाई अद्यावधिक गर्न आवश्यक छ file.
मैले उही ढाँचा प्रयोग गरें जहाँ हामीले 87% बस उपयोग पायौं (चित्र -12)।
nBANK_MACHS 8 मा सेट गरिएको छ, दक्षता अब 90% छ।
यो पनि नोट गर्नुहोस् कि ½ र ¼ नियन्त्रकहरूले उनीहरूको विलम्बताको कारणले दक्षतालाई नकारात्मक रूपमा असर गर्छ।
पूर्वका लागिampले, हामी प्रत्येक 4 CK चक्रहरूमा मात्र आदेशहरू पठाउन सक्छौं, त्यहाँ कहिलेकाहीँ न्यूनतम DRAM समय चश्मा पालन गर्दा अतिरिक्त प्याडिङ हुन्छ, जसले सैद्धान्तिकबाट दक्षता घटाउन सक्छ।
तपाईंको दक्षता आवश्यकता अनुरूप एउटा फेला पार्न विभिन्न नियन्त्रकहरू प्रयास गर्नुहोस्।
सन्दर्भहरू
- Zynq-7000 AP SoC र 7 श्रृंखला FPGAs MIS v2.3 [UG586]
- Xilinx MIG समाधान केन्द्र http://www.xilinx.com/support/answers/34243.html
संशोधन इतिहास
13/03/2015 - प्रारम्भिक रिलीज
पीडीएफ डाउनलोड गर्नुहोस्: Xilinx DDR2 MIG 7 प्रदर्शन अनुमान गाइड