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 ex-ის გამოყენებით.ampდიზაინი ტესტის სკამისა და სტიმულის დახმარებით fileაქ არის მიმაგრებული.

ეფექტური გამტარობა

DRAM მონაცემთა ავტობუსი აღწევს მაქსიმალურ სიჩქარეს მხოლოდ წაკითხვისა და ჩაწერის ხანგრძლივობის დროს და მისი ზედნადები ამცირებს მონაცემთა ეფექტურ სიჩქარეს.
რამდენიმე ყოფილიampზედნადები არის:

  • წინასწარ დატენვის დრო ერთსა და იმავე ბანკში მწკრივებზე წვდომისთვის (წვდომის მისამართი არ არის იმავე მწკრივის გვერდზე)
  • ჩაწერეთ აღდგენის დრო ჩაწერიდან წაკითხვის წვდომაზე გადასვლისთვის
  • ავტობუსის შემობრუნების დრო წაკითხვისგან ჩაწერის წვდომის შეცვლაზე

Xilinx DDR2 MIG 7 შესრულების შეფასება-ნახ-28
ეფექტური გამტარობა = მაქსიმალური გამტარობა * ეფექტურობა 

MIG დიზაინის თაობა

იხილეთ UG586 თავი 1 ნაბიჯ-ნაბიჯ დეტალებისთვის MIG IP-სა და ყოფილიampდიზაინის თაობა.
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 სვეტი, რომელიც არის ნაგულისხმევი მისამართის რუქა.

Example design სიმულაცია სინთეზირებადი ტესტის სკამით

სიმულაციის პარამეტრებში აირჩიეთ QuestaSim/ModelSim Simulator და დაათვალიერეთ შედგენილი ბიბლიოთეკების მდებარეობა.
მესამე მხარის ხელსაწყოების ინსტალაციის გზაზე მითითების, სამიზნე სიმულატორის არჩევისა და ბიბლიოთეკების შედგენისა და რუკების შესახებ დეტალებისთვის შეგიძლიათ მიმართოთ (UG900) Vivado Design Suite მომხმარებლის სახელმძღვანელო Logic Simulation.Xilinx DDR2 MIG 7 შესრულების შეფასება-ნახ-3

გაუშვით სიმულაცია GUI-ის მეშვეობით (დააწკაპუნეთ Run Simulation Tab-ზე პროექტის მენეჯერში) და დარწმუნდით, რომ ხედავთ შეტყობინებას „ტესტი ჩააბარა“ ტრანსკრიპტში.

შესრულების სიმულაციის RTL მოდიფიკაციები

  1. დააწკაპუნეთ მაუსის მარჯვენა ღილაკით წყაროების ჩანართზე, აირჩიეთ „სიმულაციის წყაროების დამატება ან შექმნა“ და დაათვალიერეთ mig7_perfsim_traffic_generator.sv. file და დააწკაპუნეთ დასრულება დასამატებლად.
  2. დააწკაპუნეთ მაუსის მარჯვენა ღილაკით წყაროების ჩანართზე, აირჩიეთ „დაამატე ან შექმნა სიმულაციური წყაროები“, დაათვალიერეთ perfsim_stimulus.txt და დააწკაპუნეთ დასრულებაზე დასამატებლად.
  3. კომენტარი გააკეთეთ ყოფილზეample_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;
  • ლოკალური პარამი 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;
  • მავთულის აპლიკაცია_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 თქვენი მეხსიერების ნაწილების შერჩევის მიხედვით.
    ღირებულებების მიღება შესაძლებელია _მიგ.ვ file.
  • ყვითელი ხაზგასმული ინსტანციის სახელი mig_7series_0_mig შეიძლება განსხვავდებოდეს თქვენი კომპონენტის სახელის მიხედვით IP შექმნისას, გადაამოწმეთ თუ სხვა სახელი არჩეული გაქვთ და შესაბამისად შეცვალეთ იგი.Xilinx DDR2 MIG 7 შესრულების შეფასება-ნახ-4
  • IP-ის გენერირების შემდეგ გახსენით _მიგ.ვ file და გადაამოწმეთ ნებისმიერი ვარიაცია LHS სიგნალის სახელებში და შეასწორეთ ისინი.
  • 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, აირჩიეთ “Add Sources”, გადახედეთ
    /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-ის მსგავსი.
    The 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-მდე. მისამართის ყველა ველი უნდა იყოს შეყვანილი თექვსმეტობით ფორმატში. მისამართის ყველა ველი არის სიგანე, რომელიც იყოფა ოთხზე თექვსმეტობით ფორმატში შესასვლელად. სატესტო სკამი მხოლოდ მეხსიერების კონტროლერს უგზავნის მისამართის ველის საჭირო ბიტებს.
მაგ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 არის დრო, როდესაც ყველა ბრძანება სრულდება.
  • calib_done არის დრო, როდესაც კალიბრაცია კეთდება.

Example Patterns
ეს ყოფილიamples ეფუძნება MEM_ADDR_ORDER დაყენებულ BANK_ROW_COLUMN-ზე.

ერთი წაკითხული ნიმუში
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 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, როგორც 85, რაც გულისხმობს, რომ DDR3 გთავაზობთ ავტობუსის უკეთეს გამოყენებას ჩაწერისა და წაკითხვის ხანგრძლივობისთვის. Xilinx DDR2 MIG 7 შესრულების შეფასება-ნახ-19

შესრულების გაუმჯობესების ზოგადი გზები

ფაქტორები, რომლებიც გავლენას ახდენენ ეფექტურობაზე, შეიძლება დაიყოს ორ ნაწილად:

  1. მეხსიერების სპეციფიკური
  2. სპეციფიკური კონტროლერიXilinx DDR2 MIG 7 შესრულების შეფასება-ნახ-20

სურათი 9 გაძლევს ზედსview მეხსიერების სპეციფიკური ტერმინებიდან.
SRAM და ბლოკის მეხსიერებისგან განსხვავებით DDR2 ან DDR3 შესრულება არ არის მხოლოდ მონაცემთა მაქსიმალური სიჩქარე.

ეს დამოკიდებულია დროის ბევრ ფაქტორზე, მათ შორის:

  • tRCD: Row Command Delay (ან ras to cas delay).
  • tCAS(CL): სვეტის მისამართის სტრობის შეყოვნება.
  • tRP: რიგის წინასწარ დატენვის დაგვიანება.
  • ტრას: მწკრივის აქტიური დრო (გააქტიურეთ წინასწარ შესაცვლელად).
  • tRC: მწკრივის ციკლის დრო. tRC = tRAS + tRP
  • tRAC: რადომური წვდომის შეფერხება. tRAC = tRCD + tCAS
  • tCWL: ჩაწერის დაყოვნება.
  • tZQ: ZQ კალიბრაციის დრო.
  • tRFC: მწკრივის განახლების ციკლის დრო
  • tWTR: დაწერეთ წაკითხვის დაგვიანებით. ბოლო ჩაწერის ტრანზაქცია წაკითხვის ბრძანების დროს.
  • tWR: დაწერეთ აღდგენის დრო. ბოლო ჩაწერის ტრანზაქცია წინასწარ დატენვის დროზე

ყველა ჩამოთვლილი პარამეტრის დრო დამოკიდებულია გამოყენებული მეხსიერების ტიპზე და მეხსიერების ნაწილის სიჩქარის ხარისხზე.
დამატებითი დეტალები განმარტებებისა და დროის სპეციფიკაციების შესახებ შეგიძლიათ იხილოთ DDR2 DDR3 JEDEC-ში ან მეხსიერების მოწყობილობის ნებისმიერ მონაცემთა ფურცელში.

ეფექტურობა ძირითადად დამოკიდებულია მეხსიერებაზე წვდომაზე. მისამართის სხვადასხვა შაბლონები იძლევა განსხვავებულ ეფექტურობის შედეგებს.

მეხსიერების დროის ზედნადები

  1. აქტივაციის დრო და წინასწარ დატენვის დრო ახალ ბანკებზე/სტრიქონებზე გადასვლისას ან იმავე ბანკში მწკრივების შეცვლისას.- ასე რომ, თუ შეამცირებთ მწკრივის ცვლილებას, ამან შეიძლება წაშალოს tRCD და tRP.
  2. უწყვეტი ჩაწერის ან წაკითხვის ბრძანებების გაგზავნა - tCCD დროის შენარჩუნება.
  3. ჩაწერის წასაკითხად და წაკითხვის ჩაწერის ბრძანების შეცვლა - ჩაწერეთ აღდგენის დრო წაკითხვის წვდომის შესაცვლელად, ავტობუსის შემობრუნების დრო წაკითხვიდან ჩაწერაზე გადასვლისთვის
  4. დააყენეთ შესაბამისი განახლების ინტერვალი.
    • DDR3 SDRAM მოითხოვს განახლების ციკლებს tREFI-ის საშუალო პერიოდულ ინტერვალზე.
    • მაქსიმუმ 8 დამატებითი განახლების ბრძანება შეიძლება გაიცეს წინასწარ („შემოყვანილი“). ეს არ ამცირებს განახლების რაოდენობას, მაგრამ მაქსიმალური ინტერვალი ორ მიმდებარე Refresh ბრძანებას შორის შემოიფარგლება 9 × tREFI-ით.Xilinx 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 კალიბრაცია განხილულია JEDEC Spec JESD5.5-79 DDR3 SDRAM სტანდარტის 3 ნაწილში.
    • ZQ კალიბრაცია ახდენს კალიბრაციას Die Termination (ODT) რეგულარულად, რათა გაითვალისწინოს ვარიაციები VT-ს შორის
    • ლოგიკას შეიცავს bank_common.v/vhd
    • პარამეტრი Tzqcs განსაზღვრავს სიჩქარეს, რომლითაც ZQ Calibration ბრძანება იგზავნება მეხსიერებაში
    • შესაძლებელია მრიცხველის გამორთვა და ხელით გაგზავნა app_zq_req-ის გამოყენებით, ეს იგივეა, რაც ხელით Refresh-ის გაგზავნას.
      იხილეთ (Xilinx Answer 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 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 იმისათვის, რომ გამოიყენოთ ყველა ბანკი მწკრივის შეცვლის ნაცვლად, შეცვალეთ მისამართის ნიმუში ბანკის შესაცვლელად, როგორც ეს ნაჩვენებია ქვემოთ.
ეს უდრის 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_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 CK ციკლში, ზოგჯერ ჩნდება დამატებითი შიგთავსი DRAM დროის მინიმალური სპეციფიკაციების დაცვით, რამაც შეიძლება შეამციროს ეფექტურობა თეორიულიდან.
სცადეთ სხვადასხვა კონტროლერი, რომ იპოვოთ ის, რომელიც შეესაბამება თქვენს ეფექტურობის მოთხოვნას.

ცნობები

  1. Zynq-7000 AP SoC და 7 სერიის FPGA 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 შესრულების შეფასების სახელმძღვანელო

ცნობები

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. მონიშნულია აუცილებელი ველები *