Xilinx DDR2 MIG 7 কর্মক্ষমতা অনুমান নির্দেশিকা
গুরুত্বপূর্ণ নোট: একটি উত্তর রেকর্ডের এই ডাউনলোডযোগ্য PDF এর ব্যবহারযোগ্যতা এবং পঠনযোগ্যতা উন্নত করার জন্য প্রদান করা হয়েছে। এটা মনে রাখা গুরুত্বপূর্ণ যে উত্তর রেকর্ড হয় Web-ভিত্তিক বিষয়বস্তু যা নতুন তথ্য উপলব্ধ হওয়ার সাথে সাথে ঘন ঘন আপডেট করা হয়। আপনাকে Xilinx প্রযুক্তিগত সহায়তা দেখার জন্য মনে করিয়ে দেওয়া হচ্ছে Webসাইট এবং পুনরায়view (Xilinx Answer 63234) এই উত্তরের সর্বশেষ সংস্করণের জন্য।
ভূমিকা
কারণ যেভাবে DDR2 এবং DDR3 স্মৃতিগুলিকে আর্কিটেক্ট করা হয়েছে এবং MIG 7 সিরিজের কন্ট্রোলার ডিজাইন করা হয়েছে, কর্মক্ষমতা সোজা নয়।
এটির জন্য বিভিন্ন জেডেক টাইমিং প্যারামিটার এবং কন্ট্রোলার আর্কিটেকচার বোঝার প্রয়োজন এবং অনুমানগুলি পেতে আপনাকে সিমুলেশনগুলি চালাতে হবে।
কর্মক্ষমতা নির্ধারণের জন্য সাধারণ নীতি একই কিন্তু এই নথিটি এমআইজি ব্যবহার করে দক্ষতা অর্জনের একটি সহজ উপায় প্রদান করেampপরীক্ষা বেঞ্চ এবং উদ্দীপকের সাহায্যে লে ডিজাইন fileএখানে সংযুক্ত।
কার্যকর ব্যান্ডউইথ
DRAM ডেটা বাস কেবলমাত্র পড়া এবং লেখার বিস্ফোরণের সময় কাছাকাছি-শিখর ব্যান্ডউইথ অর্জন করে এবং এর ওভারহেড কার্যকর ডেটা হার কমিয়ে দেয়।
কয়েকজন প্রাক্তনampওভারহেডের লেস হল:
- একই ব্যাঙ্কে সারি অ্যাক্সেস করার প্রিচার্জ সময় (অ্যাক্সেস ঠিকানা একই সারি-পৃষ্ঠার হিটে নয়)
- লিখুন পুনরুদ্ধারের সময় লেখা থেকে রিড অ্যাক্সেসে পরিবর্তন করুন
- বাসের পরিবর্তনের সময় পড়ার থেকে লেখার অ্যাক্সেসে পরিবর্তন করতে হবে
কার্যকর ব্যান্ডউইথ = পিক ব্যান্ডউইথ * দক্ষতা
এমআইজি ডিজাইন জেনারেশন
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 ডিজাইন স্যুট ব্যবহারকারী গাইড লজিক সিমুলেশন দেখতে পারেন
GUI এর মাধ্যমে সিমুলেশন চালান (প্রজেক্ট ম্যানেজারে রান সিমুলেশন ট্যাবে ক্লিক করুন) এবং নিশ্চিত করুন যে আপনি প্রতিলিপিতে "পরীক্ষা পাস" বার্তাটি দেখতে পাচ্ছেন।
কর্মক্ষমতা সিমুলেশন RTL পরিবর্তন
- সোর্স ট্যাবে রাইট-ক্লিক করুন, "সিমুলেশন সোর্স যোগ করুন বা তৈরি করুন" নির্বাচন করুন এবং mig7_perfsim_traffic_generator.sv-এ ব্রাউজ করুন file এবং এটি যোগ করতে শেষ ক্লিক করুন।
- সোর্স ট্যাবে রাইট-ক্লিক করুন, "সিমুলেশন সোর্স যোগ করুন বা তৈরি করুন" নির্বাচন করুন, perfsim_stimulus.txt-এ ব্রাউজ করুন এবং এটি যোগ করতে ফিনিশ ক্লিক করুন।
- প্রাক্তন মন্তব্য করুনampsim_tb_top.v-এ le_top ইনস্ট্যান্টেশন file.
- sim_tb_top,v-এ নিচের RTL লাইন যোগ করুন
- 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;
- তারের [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;
- wire c0_ddr3_app_rd_data_end;
- wire c0_ddr3_app_rd_data_valid;
- তার c0_ddr3_app_rdy;
- তার c0_ddr3_app_wdf_rdy;
- wire c0_data_compare_error;
- তারের ui_clk;
- wire ui_clk_sync_rst;
- wire app_sr_req = 0;
- wire app_ref_req = 0;
- wire 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 এবং এলএইচএস সিগন্যালের নামগুলির কোনও পরিবর্তনের জন্য ক্রস-চেক করুন এবং তাদের সংশোধন করুন।
- app_sr_req, app_ref_req এবং app_zq_req 0 এ আরম্ভ করা উচিত।
- প্রাক্তন হিসাবে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 clocking, কন্ট্রোলার, ip_top,phy এবং UI ফোল্ডারে।
- একবার RTL পরিবর্তন করা হয়ে গেলে এবং সমস্ত প্রয়োজনীয় fileআপনার সিমুলেশন সোর্সে s যোগ করা হয়েছে, শ্রেণীবিন্যাস চিত্র 5 এর মতো হওয়া উচিত।
দ fileলাল রঙে হাইলাইট করা s নতুন যোগ করা হয়েছে, এবং "?" ECC সম্পর্কিত মডিউলে প্রত্যাশিত কারণ নির্বাচিত মেমরি কনফিগারেশনে ECC বিকল্প নিষ্ক্রিয় করা আছে।
উদ্দীপক File বর্ণনা
প্রতিটি উদ্দীপকের প্যাটার্ন হল 48 বিট এবং বিন্যাসটি চিত্র 6-1 থেকে 6-4 তে বর্ণিত হয়েছে।
ঠিকানা এনকোডিং (ঠিকানা [৩৫:০])
ঠিকানাটি উদ্দীপকে চিত্র 7-1 থেকে চিত্র 7-6 অনুযায়ী এনকোড করা হয়েছে। ঠিকানার সমস্ত ক্ষেত্র হেক্সাডেসিমেল বিন্যাসে প্রবেশ করতে হবে। সমস্ত ঠিকানা ক্ষেত্র একটি প্রস্থ যা হেক্সাডেসিমেল বিন্যাসে প্রবেশ করার জন্য চার দ্বারা বিভাজ্য। পরীক্ষার বেঞ্চ শুধুমাত্র একটি ঠিকানা ক্ষেত্রের প্রয়োজনীয় বিট মেমরি কন্ট্রোলারে পাঠায়।
প্রাক্তন জন্যample, একটি আটটি ব্যাঙ্ক কনফিগারেশনে, শুধুমাত্র ব্যাঙ্ক বিটগুলি [2:0] মেমরি কন্ট্রোলারে পাঠানো হয় এবং বাকি বিটগুলি উপেক্ষা করা হয়। একটি হেক্সাডেসিমেল বিন্যাসে ঠিকানা প্রবেশ করার জন্য একটি ঠিকানা ক্ষেত্রের জন্য অতিরিক্ত বিট প্রদান করা হয়।
আপনাকে অবশ্যই নিশ্চিত করতে হবে যে প্রদত্ত মানটি প্রদত্ত কনফিগারেশনের প্রস্থের সাথে সঙ্গতিপূর্ণ।
- কলামের ঠিকানা (কলাম [১১:০]) – উদ্দীপকের কলামের ঠিকানা সর্বাধিক 12 বিটগুলিতে সরবরাহ করা হয়েছে, তবে আপনার ডিজাইনে সেট করা কলামের প্রস্থের প্যারামিটারের উপর ভিত্তি করে আপনাকে এটির সমাধান করতে হবে।
- সারি ঠিকানা (সারি [15:0]) – উদ্দীপকের সারি ঠিকানা সর্বাধিক 16 বিট প্রদান করা হয়, কিন্তু আপনার নকশায় সেট করা সারি প্রস্থের প্যারামিটারের উপর ভিত্তি করে আপনাকে এটিকে সম্বোধন করতে হবে।
- ব্যাঙ্কের ঠিকানা (ব্যাঙ্ক[3:0]) - উদ্দীপনায় ব্যাঙ্কের ঠিকানা সর্বাধিক চারটি বিটে প্রদান করা হয়েছে, তবে আপনার ডিজাইনে সেট করা ব্যাঙ্কের প্রস্থের প্যারামিটারের উপর ভিত্তি করে আপনাকে এটির সমাধান করতে হবে।
- পদমর্যাদার ঠিকানা (র্যাঙ্ক[3:0]) – উদ্দীপনায় র্যাঙ্কের ঠিকানা সর্বাধিক চারটি বিট প্রদান করা হয়েছে, তবে আপনার ডিজাইনে সেট করা র্যাঙ্ক প্রস্থের প্যারামিটারের উপর ভিত্তি করে আপনাকে এটির সমাধান করতে হবে।
ঠিকানাটি শীর্ষ-স্তরের MEM_ADDR_ORDER প্যারামিটারের উপর ভিত্তি করে একত্রিত করা হয় এবং ব্যবহারকারী ইন্টারফেসে পাঠানো হয়
কমান্ড পুনরাবৃত্তি (কমান্ড পুনরাবৃত্তি [7:0])
কমান্ডের পুনরাবৃত্তি গণনা হল ইউজার ইন্টারফেসে সংশ্লিষ্ট কমান্ডের পুনরাবৃত্তির সংখ্যা। প্রতিটি পুনরাবৃত্তির ঠিকানা 8 দ্বারা বৃদ্ধি করা হয়েছে। সর্বাধিক পুনরাবৃত্তির সংখ্যা হল 128।
পরীক্ষার বেঞ্চ কলামের সীমানা পরীক্ষা করে না এবং বৃদ্ধির সময় সর্বোচ্চ কলামের সীমা পৌঁছে গেলে এটি চারপাশে মোড়ানো হয়।
128টি কমান্ড পৃষ্ঠাটি পূরণ করে। 0 ব্যতীত অন্য যেকোনো কলাম ঠিকানার জন্য, 128-এর পুনরাবৃত্তি গণনা কলামের সীমানা অতিক্রম করে এবং কলামের ঠিকানার শুরুতে মোড়ানো শেষ হয়।
বাস ব্যবহার
মোট পঠিত এবং লেখার সংখ্যা বিবেচনা করে ইউজার ইন্টারফেসে বাসের ব্যবহার গণনা করা হয় এবং নিম্নলিখিত সমীকরণটি ব্যবহার করা হয়:
- 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 – এটি 10 থেকে 0 পর্যন্ত ঠিকানা সহ 80 টি রিডের সাথে মিলে যায় যা কলামে দেখা যায়।
লেখার সময় পৃষ্ঠা মোড়ানো
0A_0_2_000F_3F8_0 – এটি একটি লেখার পর পৃষ্ঠার শুরুতে মোড়ানো কলাম ঠিকানা সহ 10টি লেখার সাথে মিলে যায়।
পারফরম্যান্স ট্রাফিক জেনারেটরের অনুকরণ
এই মুহুর্তে আপনি এমআইজি প্রাক্তনের সাথে সম্পন্ন করেছেনampলে ডিজাইন সিমুলেশন। এটি বোঝায় যে আপনার সিমুলেশন সেট আপ প্রস্তুত, আপনি পারফরম্যান্স সিমুলেশন RTL পরিবর্তন করেছেন, নতুন সিমুলেশন শ্রেণিবিন্যাস সঠিক এবং আপনি উদ্দীপকের ধরণগুলি বুঝতে পেরেছেন৷ perfsim_stimulus.txt-এ 16 রাইটে এবং রিড করে সিমুলেশনটি আবার চালান।
রান-অল করুন, init_calib_complete সংকেত নিশ্চিত হওয়া পর্যন্ত অপেক্ষা করুন, এবং আপনি প্রস্তাবিত লেখা এবং পড়ার সংখ্যা দেখতে সক্ষম হবেন। সিমুলেশন তারপর বন্ধ হবে.
যখন আপনাকে সিমুলেশন বন্ধ করতে বলা হয়, তখন না নির্বাচন করুন এবং ট্রান্সক্রিপ্ট উইন্ডোতে যান যেখানে আপনি কর্মক্ষমতা পরিসংখ্যান দেখতে সক্ষম হবেন।
যদি আপনি নির্বাচন করেন "সিমুলেশন বন্ধ করুন" কর্মক্ষমতা পরিসংখ্যান একটি লেখা হবে file নাম mig_band_width_output.txt sim_1/behave-এ অবস্থিত ফোল্ডার
Example ডিরেক্টরি পথ:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
আপনি আশ্চর্য হতে পারে কেন শতাংশtagই বাসের ব্যবহার 29। একই আইপি সেটিংস দিয়ে সিমুলেশন পুনরায় চালান কিন্তু উদ্দীপনা পরিবর্তন করুন file 256 জন লিখেছেন এবং 256 জন পড়েছেন
ff_0_0_0000_000_0
ff_0_0_0000_000_1
আপনি এখন শতাংশ দেখতে পাবেনtage হিসাবে 85, যা বোঝায় যে DDR3 লেখা এবং পড়া বিস্ফোরণের দীর্ঘ অনুক্রমের জন্য আরও ভাল বাস ব্যবহারের প্রস্তাব দেয়।
কর্মক্ষমতা উন্নত করার সাধারণ উপায়
কার্যকারিতাকে প্রভাবিত করে এমন বিষয়গুলিকে দুটি ভাগে ভাগ করা যায়:
- মেমরি নির্দিষ্ট
- কন্ট্রোলার নির্দিষ্ট
চিত্র 9 আপনাকে একটি ওভার দেয়view মেমরি নির্দিষ্ট শর্তাবলী.
SRAM এবং ব্লক মেমরির বিপরীতে DDR2 বা DDR3 পারফরম্যান্স শুধুমাত্র সর্বোচ্চ ডেটা রেট নয়।
এটি অনেক সময় কারণের উপর নির্ভর করে, যার মধ্যে রয়েছে:
- টিআরসিডি: সারি কমান্ড বিলম্ব (বা রাস থেকে ক্যাস বিলম্ব)।
- tCAS(CL): কলাম ঠিকানা স্ট্রোব লেটেন্সি।
- টিআরপি: সারি প্রিচার্জ বিলম্ব।
- ট্রাস: সারি সক্রিয় সময় (প্রিচেঞ্জে সক্রিয় করুন)।
- টিআরসি: সারি চক্র সময়. tRC = trAS + tRP
- ট্রাক: Radom অ্যাক্সেস বিলম্ব. trAC = tRCD + tCAS
- tCWL: ক্যাস লিখতে লেটেন্সি।
- tZQ: ZQ ক্রমাঙ্কন সময়।
- tRFC: সারি রিফ্রেশ সাইকেল সময়
- tWTR: পড়তে বিলম্ব লিখুন. রিড কমান্ড টাইমে শেষ লেখার লেনদেন।
- tWR: পুনরুদ্ধারের সময় লিখুন। প্রিচার্জ সময় শেষ লেনদেন লিখুন
সমস্ত তালিকাভুক্ত পরামিতিগুলির সময় ব্যবহৃত মেমরির ধরন এবং মেমরি অংশের গতি গ্রেডের উপর নির্ভর করে।
সংজ্ঞা এবং সময় নির্দিষ্টকরণের আরও বিশদ বিবরণ DDR2 DDR3 JEDEC বা যেকোনো মেমরি ডিভাইস ডেটাশিটে পাওয়া যাবে।
দক্ষতা মূলত মেমরি কিভাবে অ্যাক্সেস করা হয় তার উপর নির্ভর করে। বিভিন্ন ঠিকানার ধরণ বিভিন্ন দক্ষতার ফলাফল দেয়।
মেমরি টাইমিং ওভারহেডস
- নতুন ব্যাঙ্ক/সারিতে পরিবর্তন করার সময় বা একই ব্যাঙ্কে সারি পরিবর্তন করার সময় অ্যাক্টিভেশন সময় এবং প্রিচার্জ সময়।- সুতরাং আপনি যদি সারি পরিবর্তন কম করেন, তাহলে এটি টিআরসিডি এবং টিআরপি মুছে ফেলতে পারে।
- ক্রমাগত লিখুন বা পড়ার আদেশ পাঠান - টিসিসিডি সময় বজায় রাখা।
- লেখার জন্য লিখতে এবং লিখতে লিখতে কমান্ড পরিবর্তনের জন্য লিখুন - পড়ার অ্যাক্সেসে পরিবর্তন করতে পুনরুদ্ধারের সময় লিখুন, পড়া থেকে লিখতে পরিবর্তন করার জন্য বাসের পরিবর্তনের সময় লিখুন
- একটি সঠিক রিফ্রেশ ব্যবধান সেট করুন।
- DDR3 SDRAM-এর জন্য tREFI-এর গড় পর্যায়ক্রমিক ব্যবধানে রিফ্রেশ চক্র প্রয়োজন।
- সর্বাধিক 8টি অতিরিক্ত রিফ্রেশ কমান্ড অগ্রিম জারি করা যেতে পারে ("টেনে আনা")। এটি রিফ্রেশের সংখ্যা হ্রাস করে না, তবে দুটি আশেপাশের রিফ্রেশ কমান্ডের মধ্যে সর্বাধিক ব্যবধান 9 × tREFI তে সীমাবদ্ধ।
- সমস্ত ব্যাঙ্ক ব্যবহার করুন - একটি উপযুক্ত অ্যাড্রেসিং মেকানিজম বাঞ্ছনীয়।
- সারি-ব্যাঙ্ক-কলাম: একটি অনুক্রমিক ঠিকানা স্থানের উপর ঘটতে একটি লেনদেনের জন্য, কোরটি স্বয়ংক্রিয়ভাবে DRAM ডিভাইসের পরবর্তী ব্যাঙ্কে একই সারি খুলে দেয় যখন একটি বিদ্যমান সারি শেষ হয়ে যায় তখন লেনদেন চালিয়ে যেতে। এটি এমন অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত যেগুলির জন্য অনুক্রমিক ঠিকানার অবস্থানগুলিতে বড় ডেটা প্যাকেটগুলি বিস্ফোরিত করা প্রয়োজন৷
- ব্যাঙ্ক-সারি-কলাম: একটি সারির সীমানা অতিক্রম করার সময়, বর্তমান সারিটি বন্ধ হয়ে যাবে এবং একই ব্যাঙ্কের মধ্যে আরেকটি সারি খোলা হবে। MSB একটি ব্যাঙ্কের ঠিকানা, যা বিভিন্ন ব্যাঙ্ক থেকে স্যুইচ করতে ব্যবহার করা যেতে পারে। এটি একটি নির্দিষ্ট সময়ের জন্য মেমরির একটি ব্লকে ছোট, আরও এলোমেলো লেনদেনের জন্য উপযুক্ত এবং তারপরে অন্য ব্লকে (ব্যাঙ্ক)
- বিস্ফোরণ দৈর্ঘ্য
- BL 8 3 সিরিজে DDR7 এর জন্য সমর্থিত। BC4 এর খুব কম দক্ষতা রয়েছে যা 50% এর কম। কারণ BC4 এর কার্যকর করার সময় BL8 এর মতোই। তথ্য শুধুমাত্র উপাদান ভিতরে মুখোশ করা হয়.
- যে ক্ষেত্রে আপনি সম্পূর্ণ বিস্ফোরণ লিখতে চান না, সেক্ষেত্রে হয় ডেটা মাস্ক বা লেখা-পর-পড়া বিবেচনা করা যেতে পারে।
- একটি সঠিক ZQ ব্যবধান সেট করুন (শুধুমাত্র DDR3)
কন্ট্রোলার উভয় ZQ শর্ট (ZQCS) এবং ZQ লং (ZQCL) ক্রমাঙ্কন কমান্ড পাঠায়।- DDR3 জেডেক স্ট্যান্ডার্ড মেনে চলুন
- ZQ ক্রমাঙ্কন JEDEC Spec JESD5.5-79 DDR3 SDRAM স্ট্যান্ডার্ডের অধ্যায় 3 এ আলোচনা করা হয়েছে
- ZQ ক্রমাঙ্কন VT জুড়ে বিভিন্নতার জন্য নিয়মিত বিরতিতে অন ডাই টার্মিনেশন (ODT) ক্যালিব্রেট করে
- যুক্তি bank_common.v/vhd এ রয়েছে
- প্যারামিটার Tzqcs যে হারে একটি ZQ ক্রমাঙ্কন কমান্ড মেমরিতে পাঠানো হয় তা নির্ধারণ করে
- t কাউন্টারটি নিষ্ক্রিয় করা এবং app_zq_req ব্যবহার করে ম্যানুয়ালি পাঠানো সম্ভব, এটি ম্যানুয়ালি রিফ্রেশ পাঠানোর মতো।
বিস্তারিত জানার জন্য (Xilinx উত্তর 47924) পড়ুন।
কন্ট্রোলার ওভারহেডস
- পর্যায়ক্রমিক পড়া - পড়ুন (Xilinx উত্তর 43344) বিস্তারিত জানার জন্য
- পড়ার সময় পরিবর্তন করবেন না
- লেখার সময় পর্যায়ক্রমিক পঠনগুলি এড়িয়ে যান এবং সত্যিকারের পড়ার আগে মিস করা পড়ার সংখ্যা জারি করুন
- পুনর্বিন্যাস - পড়ুন (Xilinx উত্তর 34392) বিস্তারিত জানার জন্য
ব্যবহারকারী এবং AXI ইন্টারফেস ডিজাইনের জন্য এটি সক্ষম করা বাঞ্ছনীয়।- রি-অর্ডার হল এমন একটি লজিক যা অনেকগুলি কমান্ডের সামনে দেখায় এবং নন-মেমরি কমান্ডগুলিকে বৈধ ব্যান্ডউইথ দখল না করার জন্য ব্যবহারকারীর কমান্ডের ক্রম পরিবর্তন করে। কার্যক্ষমতা প্রকৃত ট্র্যাফিক প্যাটার্নের সাথে সম্পর্কিত।
- ঠিকানার প্যাটার্নের উপর ভিত্তি করে, পুনর্বিন্যাস প্রিচার্জ এড়িয়ে যেতে এবং কমান্ড সক্রিয় করতে সাহায্য করে এবং টিআরসিডি এবং টিআরপি ডেটা ব্যান্ডের প্রস্থ দখল করে না।
- ব্যাংক মেশিনের সংখ্যা বাড়ানোর চেষ্টা করুন।
- নিয়ন্ত্রকের বেশিরভাগ যুক্তিই ব্যাঙ্ক মেশিনে থাকে এবং সেগুলি ডিআরএএম ব্যাঙ্কগুলির সাথে মিলে যায়
- একটি প্রদত্ত ব্যাঙ্ক মেশিন যে কোনও সময়ে একটি একক 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
সিমুলেশন শেষে আপনি দেখতে পাবেন যে আগের 77 শতাংশ বাসের ব্যবহার এখন 87!
আপনার যদি এখনও উচ্চতর দক্ষতার প্রয়োজন হয়, আপনি 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টি সিকে সাইকেলে শুধুমাত্র কমান্ড পাঠাতে পারি, ন্যূনতম 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 কর্মক্ষমতা অনুমান নির্দেশিকা