Xilinx-logo

Gabay sa Pagtantya ng Pagganap ng Xilinx DDR2 MIG 7

Xilinx_DDR2_MIG_7_Performance-Estimation-product

Mahalagang Paalala: Ang nada-download na PDF na ito ng isang Answer Record ay ibinigay upang mapahusay ang kakayahang magamit at madaling mabasa. Mahalagang tandaan na ang Answer Records ay Web-based na nilalaman na madalas na ina-update habang nagiging available ang bagong impormasyon. Ikaw ay pinapaalalahanan na bisitahin ang Xilinx Technical Support Website at review (Xilinx Sagot 63234) para sa pinakabagong bersyon ng Sagot na ito.

Panimula

Dahil sa paraan ng pag-arkitekto ng mga memorya ng DDR2 at DDR3 at pagkadisenyo ng MIG 7 series controller, hindi straight forward ang performance.
Nangangailangan ito ng pag-unawa sa iba't ibang mga parameter ng Jedec Timing at Arkitektura ng controller, at kakailanganin mong magpatakbo ng mga simulation upang makuha ang mga pagtatantya.
Ang pangkalahatang prinsipyo para sa pagtukoy ng pagganap ay pareho ngunit ang dokumentong ito ay nagbibigay ng isang madaling paraan upang makakuha ng kahusayan gamit ang MIG example disenyo sa tulong ng test bench at stimulus files nakadikit dito.

Mabisang Bandwidth

Ang DRAM data bus ay nakakamit ng malapit na pinakamataas na bandwidth sa panahon lamang ng mga pagsabog ng pagbasa at pagsulat at ang overhead nito ay nagpapababa sa epektibong rate ng data.
Ilang exampang mga overhead ay:

  • precharge time sa pag-access ng mga row sa parehong bangko (Access address ay wala sa parehong row-page hit)
  • isulat ang oras ng pagbawi upang baguhin mula sa pagsulat patungo sa pag-access sa pagbasa
  • ang oras ng turnaround ng bus upang baguhin mula sa read hanggang write access

Xilinx DDR2 MIG 7 Performance Estimation-fig-28
Effective Bandwidth = Peak Bandwidth * Efficiency 

Pagbuo ng Disenyo ng MIG

Sumangguni sa UG586 Kabanata 1 para sa sunud-sunod na mga detalye sa MIG IP at examppagbuo ng disenyo.
Bago patakbuhin ang simulation ng pagganap ng MIG 7 Series, gawin ang sumusunod upang matiyak na maayos ang iyong kapaligiran sa simulation. Buksan ang MIG exampIdisenyo at imapa ang naaangkop na mga aklatan, patakbuhin ang simulation, at tiyaking makikita mo ang mensaheng "naipasa ang pagsubok" sa transcript.
Upang ipakita ang daloy ay nakabuo ako ng isang MIG IP para sa xc7vx690tffg1761-2 at tinawag ang exampang disenyo.
Dalawang bagay na dapat tandaan ay ang memory address bits at memory address mapping selection.
Para kay exampNgayon, pinili ko ang MT41J128M8XX-125 sa ilalim ng mga opsyon sa drop down na bahagi ng memorya.Xilinx DDR2 MIG-7-Pagtantiya-Pagganap-fig-1

Para sa napiling bahagi ng memorya mula sa Figure-1, row = 14, column = 10 at bank = 3, kaya app_addr_width = row + column + bank + rank= 28 Xilinx DDR2 MIG 7 Performance Estimation-fig-2

Maaari mong piliin ang alinman sa BANK_ROW_COLUMN o ROW BANK Column.
Umalis ako sa ROW BANK Column na siyang default na pagmamapa ng address.

Example design Simulation na may synthesizable test bench

Sa ilalim ng mga setting ng Simulation, piliin ang QuestaSim/ModelSim Simulator at mag-browse sa lokasyon ng mga pinagsama-samang aklatan.
Para sa mga detalye sa pagturo sa path ng pag-install ng mga third-party na tool, pagpili sa target na simulator, at pag-compile at pagmamapa ng mga library, maaari kang sumangguni sa (UG900) Vivado Design Suite User Guide Logic SimulationXilinx DDR2 MIG 7 Performance Estimation-fig-3

Patakbuhin ang simulation sa pamamagitan ng GUI (I-click ang Run Simulation Tab sa project manager) at tiyaking makikita mo ang mensaheng “test pass” sa transcript.

Pagbabago ng Performance Simulation RTL

  1. I-right-click ang tab ng mga mapagkukunan, piliin ang "magdagdag o lumikha ng mga mapagkukunan ng simulation", at mag-browse sa mig7_perfsim_traffic_generator.sv file at i-click ang tapusin upang idagdag ito.
  2. I-right-click ang tab na sources, piliin ang “add or create simulation sources”, mag-browse sa perfsim_stimulus.txt, at i-click ang tapusin upang idagdag ito.
  3. I-comment ang example_top instantiation sa sim_tb_top.v file.
  4. Idagdag ang mga linya ng RTL sa ibaba sa 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;
  • wire [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
  • wire [2:0] c0_ddr3_app_cmd;
  • wire c0_ddr3_app_en;
  • wire [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
  • wire c0_ddr3_app_wdf_end;
  • wire [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
  • wire c0_ddr3_app_wdf_wren;
  • wire [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
  • wire c0_ddr3_app_rd_data_end;
  • wire c0_ddr3_app_rd_data_valid;
  • wire c0_ddr3_app_rdy;
  • wire c0_ddr3_app_wdf_rdy;
  • wire c0_data_compare_error;
  • wire ui_clk;
  • wire 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;

Instantiation ng FPGA Memory Controller

mig_7series_0_mig u_mig_7series_0_mig (
// Mga port ng interface ng memorya

  • .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),

// Mga port ng interface ng application

  • .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),

// System Clock Ports

  • .sys_clk_i (sys_clk_i),

// Reference Clock Ports

  • .clk_ref_i (clk_ref_i),
  • .sys_rst (sys_rst)
  • );

Pagganap ng traffic generator instantiation

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. Baguhin ang APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH at BANK_WIDTH ayon sa pagpili ng bahagi ng iyong memorya.
    Ang mga halaga ay maaaring makuha mula sa _mig.v file.
  • Maaaring mag-iba ang dilaw na naka-highlight na instantiation name na mig_7series_0_mig batay sa pangalan ng iyong bahagi sa panahon ng paggawa ng IP, i-verify kung pumili ka ng ibang pangalan at baguhin ito nang naaayon.Xilinx DDR2 MIG 7 Performance Estimation-fig-4
  • Kapag nabuo ang IP, buksan ang _mig.v file at cross-check para sa anumang mga pagkakaiba-iba sa mga pangalan ng signal ng LHS at itama ang mga ito.
  • app_sr_req, app_ref_req at app_zq_req ay dapat masimulan sa 0.
  • Bilang exampAng le_top.v ay nagkomento at bago files ay idinagdag, malamang na makikita mo ang "?" sa tabi ng
    mig_7series_0_mig.v file sa ilalim ng simulation source.
    Upang mapa ang tama file, i-right click mig_7series_0_mig.v, piliin ang “Magdagdag ng Mga Pinagmulan”, Mag-browse sa
    /mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
    at idagdag ang mig_7series_0_mig_sim.v file.
  • Kung nakikita mo ang "?" para sa pinagbabatayan files, idagdag ang lahat ng RTL files sa clocking, controller, ip_top,phy at mga folder ng UI.
  • Kapag tapos na ang mga pagbabago sa RTL at lahat ng kinakailangan files ay idinagdag sa iyong Simulation Sources, ang Hierarchy ay dapat na katulad ng Figure 5.
    Ang fileAng mga naka-highlight sa pula ay bagong idinagdag, at “?” ay inaasahan sa mga module na nauugnay sa ECC dahil ang napiling memory configuration ay naka-disable ang ECC option.Xilinx DDR2 MIG 7 Performance Estimation-fig-5

Pampasigla File Paglalarawan
Ang bawat stimulus pattern ay 48 bits at ang format ay inilalarawan sa Figures 6-1 hanggang 6-4.Xilinx DDR2 MIG 7 Performance Estimation-fig-6

Pag-encode ng Address (Address [35:0])

Ang address ay naka-encode sa stimulus ayon sa Figure 7-1 hanggang Figure 7-6. Ang lahat ng mga field ng address ay kailangang ilagay sa hexadecimal na format. Ang lahat ng mga field ng address ay isang lapad na nahahati sa apat upang maipasok sa hexadecimal na format. Ang test bench ay nagpapadala lamang ng mga kinakailangang bit ng isang address field sa Memory Controller.
Para kay exampAt, sa isang walong bank configuration, ang Bank Bits [2:0] lang ang ipinapadala sa Memory Controller at ang natitirang mga bit ay hindi papansinin. Ang mga karagdagang bit para sa isang address field ay ibinibigay para sa iyo upang maipasok ang address sa isang hexadecimal na format.
Dapat mong kumpirmahin na tumutugma ang value na ipinasok sa lapad ng isang ibinigay na configuration.Xilinx DDR2 MIG 7 Performance Estimation-fig-7

  • Address ng Column (Column[11:0]) – Ang Address ng Column sa stimulus ay ibinibigay sa maximum na 12 bits, ngunit kailangan mong tugunan ito batay sa parameter ng lapad ng column na itinakda sa iyong disenyo.
  • Address ng Row (Row[15:0]) – Ang address ng row sa stimulus ay ibinibigay sa maximum na 16 bits, ngunit kailangan mong tugunan ito batay sa row width parameter na itinakda sa iyong disenyo.
  • Address ng Bangko (Bangko[3:0]) – Ang address ng bangko sa stimulus ay ibinibigay sa maximum na apat na bits, ngunit kailangan mong tugunan ito batay sa parameter ng lapad ng bangko na itinakda sa iyong disenyo.
  • Address ng Ranggo (Ranggo[3:0]) – Ang address ng ranggo sa stimulus ay ibinibigay sa maximum na apat na bits, ngunit kailangan mong tugunan ito batay sa parameter ng lapad ng ranggo na itinakda sa iyong disenyo.
    Ang address ay binuo batay sa pinakamataas na antas na MEM_ADDR_ORDER parameter at ipinadala sa user interface

Ulitin ang Utos (Ulitin ang Utos [7:0])
Ang bilang ng pag-uulit ng command ay ang bilang ng oras na inuulit ang kani-kanilang command sa User Interface. Ang address para sa bawat pag-uulit ay dinaragdagan ng 8. Ang maximum na bilang ng pag-uulit ay 128.
Hindi sinusuri ng test bench ang hangganan ng column at bumabalot ito kung maabot ang maximum na limitasyon ng column sa mga pagtaas.
Punan ng 128 Commands ang pahina. Para sa anumang column address maliban sa 0, ang bilang ng pag-uulit na 128 ay tatawid sa hangganan ng column at bumabalot sa simula ng address ng column.

Paggamit ng Bus
Ang paggamit ng bus ay kinakalkula sa User Interface na isinasaalang-alang ang kabuuang bilang ng mga Reads and Writes at ang sumusunod na equation ay ginamit:

Xilinx DDR2 MIG 7 Performance Estimation-fig-8

  • Ang BL8 ay tumatagal ng apat na memory clock cycle
  • end_of_stimulus ay ang oras kung kailan tapos na ang lahat ng mga utos.
  • Ang calib_done ay ang oras kung kailan tapos na ang pagkakalibrate.

Example Patterns
Itong mga exampang mga ito ay batay sa MEM_ADDR_ORDER na itinakda sa BANK_ROW_COLUMN.

Single Read Pattern
00_0_2_000F_00A_1 – Ang pattern na ito ay isang binasa mula sa ika-10 column, ika-15 na hanay, at pangalawang bangko.Xilinx DDR2 MIG 7 Performance Estimation-fig-9Single Write Pattern
00_0_1_0040_010_0 – Ang pattern na ito ay iisang sulat sa ika-32 column, ika-128 na hanay, at unang bangko.Xilinx DDR2 MIG 7 Performance Estimation-fig-10Single Sumulat at Magbasa sa Parehong Address
00_0_2_000F_00A_0 – Ang pattern na ito ay isang solong pagsulat sa ika-10 column, ika-15 na row, at pangalawang bangko.
00_0_2_000F_00A_1 – Ang pattern na ito ay isang solong pagbabasa mula sa ika-10 column, ika-15 na row, at pangalawang bangkoXilinx DDR2 MIG 7 Performance Estimation-fig-11

Maramihang Pagsusulat at Pagbasa na may Parehong Address
0A_0_0_0010_000_0 – Ito ay tumutugma sa 10 pagsusulat na may address na nagsisimula sa 0 hanggang 80 na makikita sa column.Xilinx DDR2 MIG 7 Performance Estimation-fig-12

0A_0_0_0010_000_1 – Ito ay tumutugma sa 10 reads na may address na nagsisimula sa 0 hanggang 80 na makikita sa column.Xilinx DDR2 MIG 7 Performance Estimation-fig-13

Page Wrap Habang Nagsusulat
0A_0_2_000F_3F8_0 – Ito ay tumutugma sa 10 pagsusulat na may address ng column na nakabalot sa simula ng pahina pagkatapos ng isang pagsulat.Xilinx DDR2 MIG 7 Performance Estimation-fig-14

Pagtulad sa Performance Traffic Generator

Sa puntong ito tapos ka na sa MIG exampang simulation ng disenyo. Ipinahihiwatig nito na handa na ang iyong pag-set up ng simulation, nagawa mo na ang mga pagbabago sa RTL ng simulation ng pagganap, tama ang bagong hierarchy ng simulation at naunawaan mo ang mga pattern ng stimulus. Patakbuhin muli ang simulation na may 16 na pagsusulat at pagbabasa sa perfsim_stimulus.txt.Xilinx DDR2 MIG 7 Performance Estimation-fig-15

Gawin ang run-all, maghintay hanggang ang init_calib_complete signal ay igiit, at makikita mo ang iminungkahing bilang ng mga pagsusulat at pagbabasa. Ang simulation ay titigil. Xilinx DDR2 MIG 7 Performance Estimation-fig-16

Kapag na-prompt kang huminto sa simulation, piliin ang Hindi at pumunta sa transcript window kung saan makikita mo ang mga istatistika ng pagganap. Xilinx DDR2 MIG 7 Performance Estimation-fig-17

Kung pipiliin mo "umalis sa simulation" isusulat ang mga istatistika ng pagganap sa a file pinangalanan mig_band_width_output.txt na matatagpuan sa sim_1/behave folder.

Exampang landas ng direktoryo:-
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behavXilinx DDR2 MIG 7 Performance Estimation-fig-18

Maaaring magtaka ka kung bakit ang porsyentotage bus utilization is ony 29. Muling patakbuhin ang simulation na may parehong mga setting ng IP ngunit binabago lang ang stimulus file sa 256 writes at 256 reads

ff_0_0_0000_000_0
ff_0_0_0000_000_1

Makikita mo na ngayon ang porsyentotage bilang 85, na nagpapahiwatig na ang DDR3 ay nag-aalok ng mas mahusay na paggamit ng bus para sa mahabang pagkakasunud-sunod ng mga pagsusulat at pagbasa ng mga pagsabog. Xilinx DDR2 MIG 7 Performance Estimation-fig-19

Pangkalahatang paraan upang Pahusayin ang Pagganap

Ang mga salik na nakakaimpluwensya sa kahusayan ay maaaring nahahati sa dalawang seksyon:

  1. Tukoy sa Memorya
  2. Tukoy sa ControllerXilinx DDR2 MIG 7 Performance Estimation-fig-20

Ang Figure 9 ay nagbibigay sa iyo ng higitview ng mga terminong partikular sa memorya.
Hindi tulad ng mga SRAM at Block Memories DDR2 o ang pagganap ng DDR3 ay hindi lamang ang pinakamataas na rate ng data.

Nakadepende ito sa maraming salik sa timing, kabilang ang:

  • tRCD: Row Command Delay (o ras to cas delay).
  • tCAS(CL): Latency ng strobe ng address ng column.
  • tRP: Pagkaantala ng row precharge.
  • tRAS: Row Active Time (i-activate para prechange).
  • tRC: Oras ng row cycle. tRC = tRAS + tRP
  • tTRAC: Pagkaantala ng Radom access. tRAC = tRCD + tCAS
  • tCWL: Pagsulat ng latency ni Cas.
  • tZQ: Oras ng pagkakalibrate ng ZQ.
  • tRFC: Row Refresh Cycle Time
  • tWTR: Pagkaantala ng Sumulat upang Magbasa. Huling isulat ang transaksyon sa Read command time.
  • tWR: Isulat ang Oras ng Pagbawi. Huling pagsulat ng transaksyon sa oras ng Precharge

Ang timing ng lahat ng nakalistang parameter ay depende sa uri ng memory na ginamit at memory part speed grade.
Higit pang mga detalye sa mga kahulugan at mga detalye ng timing ay matatagpuan sa DDR2 DDR3 JEDEC o sa anumang datasheet ng memory device.

Ang kahusayan ay pangunahing nakasalalay sa kung paano naa-access ang memorya. Ang iba't ibang mga pattern ng address ay nagbibigay ng iba't ibang mga resulta ng kahusayan.

Mga overhead ng memory timing

  1. Oras ng pag-activate at oras ng Precharge kapag lumipat sa mga bagong bangko/row o nagpapalit ng mga row sa parehong bangko.- Kaya kung babawasan mo ang pagbabago ng row, maaari nitong alisin ang tRCD at tRP.
  2. Magpadala ng tuluy-tuloy na pagsulat o pagbabasa ng mga utos -Pagpapanatili ng tCCD timing.
  3. I-minimize ang write to read at read to write command changeover – Isulat ang oras ng pagbawi para baguhin ang read access, bus turnaround time para baguhin mula read to write
  4. Magtakda ng tamang agwat ng pag-refresh.
    • Nangangailangan ang DDR3 SDRAM ng mga Refresh cycle sa average na periodic interval ng tREFI.
    • Ang maximum na 8 karagdagang utos sa Pag-refresh ay maaaring maibigay nang maaga ("pull in"). Hindi nito binabawasan ang bilang ng mga pag-refresh, ngunit ang maximum na agwat sa pagitan ng dalawang nakapaligid na Refresh command ay limitado sa 9 × tREFIXilinx DDR2 MIG 7 Performance Estimation-fig-21
  • Gamitin ang lahat ng mga bangko - Mas mainam ang angkop na mekanismo ng pagtugon.
    • Row-Bank-Column: Para sa isang transaksyong nagaganap sa isang sequential address space, awtomatikong binubuksan ng core ang parehong row sa susunod na bangko ng DRAM device upang ipagpatuloy ang transaksyon kapag naabot na ang dulo ng isang kasalukuyang row. Ito ay angkop na angkop sa mga application na nangangailangan ng pagsabog ng malalaking data packet sa sunud-sunod na mga lokasyon ng address.
    • Bank-Row-Column: Kapag tumatawid sa hangganan ng row, isasara ang kasalukuyang row at magbubukas ang isa pang row sa loob ng parehong bangko. Ang MSB ay isang address ng bangko, na maaaring magamit upang lumipat mula sa iba't ibang mga bangko. Ito ay angkop para sa mas maikli, mas random na mga transaksyon sa isang bloke ng memorya para sa isang yugto ng panahon at pagkatapos ay isang pagtalon sa isa pang bloke (bangko)
  • Haba ng Pagsabog
    • Ang BL 8 ay suportado para sa DDR3 sa 7 series. Ang BC4 ay may napakababang kahusayan na mas mababa sa 50%. Ito ay dahil ang oras ng pagpapatupad ng BC4 ay kapareho ng BL8. Ang data ay naka-mask lamang sa loob ng bahagi.
    • Sa mga kaso kung saan hindi mo gustong magsulat ng buong pagsabog, maaaring isaalang-alang ang alinman sa data mask o write-after-read.
  • Magtakda ng tamang ZQ interval (DDR3 Lang)
    Ang controller ay nagpapadala ng parehong ZQ Short (ZQCS) at ZQ Long (ZQCL) Calibration command.
    • Sumunod sa DDR3 Jedec Standard
    • Ang ZQ Calibration ay tinatalakay sa seksyon 5.5 ng JEDEC Spec JESD79-3 DDR3 SDRAM Standard
    • Ang ZQ Calibration ay nagca-calibrate sa On Die Termination (ODT) sa mga regular na agwat upang isaalang-alang ang mga variation sa VT
    • Ang lohika ay nakapaloob sa bank_common.v/vhd
    • Tinutukoy ng Parameter Tzqcs ang rate kung saan ipinapadala ang isang ZQ Calibration command sa memorya
    • Posibleng hindi paganahin ang counter at manu-manong ipadala gamit ang app_zq_req, ito ay Katulad ng manu-manong pagpapadala ng Refresh.
      Sumangguni sa (Xilinx Sagot 47924) para sa mga detalye.Xilinx DDR2 MIG 7 Performance Estimation-fig-22

Mga Overhead ng Controller

  1. Paminsan-minsang Pagbasa – Sumangguni sa (Sagot ng Xilinx 43344) para sa mga detalye.
    • Huwag baguhin ang panahon ng pagbabasa
    • Laktawan ang mga pana-panahong pagbabasa habang nagsusulat at ibigay ang bilang ng mga hindi nabasang nabasa bago ang isang tunay na pagbasa
  2. Muling Pag-aayos – Sumangguni (Sagot ng Xilinx 34392) para sa mga detalye.
    Para sa mga disenyo ng User at AXI Interface mas mainam na paganahin ito.
    • Ang muling pagkakasunud-sunod ay ang lohika na tumitingin sa ilang mga utos at nagbabago ng utos ng user upang gawin ang mga di-memorya na utos na hindi sumakop sa wastong bandwidth. Ang pagganap ay nauugnay din sa aktwal na pattern ng trapiko.
    • Batay sa pattern ng address, nakakatulong ang muling pag-order upang laktawan ang precharge at i-activate ang mga command at ginagawang hindi sinakop ng tRCD at tRP ang lapad ng data band.Xilinx DDR2 MIG 7 Performance Estimation-fig-23
  3. Subukang dagdagan ang bilang ng mga Bank Machine.
    • Karamihan sa lohika ng controller ay naninirahan sa mga makina ng bangko at tumutugma sila sa mga DRAM na bangko
    • Ang isang partikular na bank machine ay namamahala ng isang DRAM bank sa anumang partikular na oras.
    • Ang pagtatalaga ng bank machine ay dynamic kaya hindi kinakailangan na magkaroon ng bank machine para sa bawat pisikal na bangko.
    • Maaaring i-configure ang mga bank machine, ngunit ito ay isang tradeoff sa pagitan ng lugar at pagganap.
    • Ang pinapayagang bilang ng mga bank machine ay mula 2-8.
    • Bilang default, 4 na Bank Machine ang na-configure sa pamamagitan ng mga parameter ng RTL.
    • Para baguhin ang Bank Machines, isaalang-alang ang parameter nBANK_MACHS = 8 na nasa memc_ui_top Example para sa 8 Bank Machine – nBANK_MACHS = 8

Alam mo na ngayon ang mga salik na nakakaimpluwensya sa pagganap.
Isaalang-alang ang isang upstream na application na nagbibigay sa iyo ng 512 data byte bawat packet at kailangan mong i-save ang mga ito sa iba't ibang lokasyon ng memorya. Dahil ang 512 data byte ay katumbas ng 64 DDR3 data burst, muling patakbuhin ang example disenyo na may pampasigla file naglalaman ng 512 writes, 512 reads at row switching para sa bawat 64 writes o reads:

  • 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

Sa pagtatapos ng simulation makikita mo na ang paggamit ng bus ay nasa 77 porsyento. Xilinx DDR2 MIG 7 Performance Estimation-fig-24

Figure 11: Performance Statistics para sa 512 writes at 512 reads – Row switching para sa 64 writes o reads. 

Maaari mo na ngayong ilapat ang kaalaman na natutunan sa naunang seksyon upang mapabuti ang kahusayan. Na may a view sa paggamit ng lahat ng mga bangko sa halip na baguhin ang row, baguhin ang pattern ng address upang baguhin ang bangko tulad ng ipinapakita sa ibaba.
Katumbas ito ng pagtatakda ng ROW_BANK_Column sa setting ng pagmamapa ng memory address sa 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

Sa pagtatapos ng simulation makikita mo na ang naunang 77 Porsyento na Paggamit ng Bus ay 87 na ngayon! Xilinx DDR2 MIG 7 Performance Estimation-fig-25

Kung kailangan mo pa rin ng mas mataas na kahusayan, maaari kang pumunta para sa malalaking laki ng packet na 1024 o 2048 bytes, o isaalang-alang ang manu-manong pag-refresh.

Tandaan: Hindi hinihikayat ng Xilinx ang pag-bypass sa pag-refresh ng controller dahil hindi kami sigurado kung magagawa mong matugunan ang Jedec auto refresh timing na nakakaapekto sa pagiging maaasahan ng data.
Mula sa bahagi ng controller maaari mong baguhin ang nBANk_MACH at makita ang pagpapabuti sa pagganap.
Gayunpaman, maaaring makaapekto ito sa timing ng iyong disenyo, mangyaring sumangguni sa (Sagot ng Xilinx 36505) para sa mga detalye sa nBANk_MACHXilinx DDR2 MIG 7 Performance Estimation-fig-26

Buksan ang core_name_mig_sim.v file at baguhin ang mga parameter nBANK_MACHS mula 4 hanggang 8 at muling patakbuhin ang simulation. Upang magkaroon ng bisa ang halaga ng parameter sa hardware, kailangan mong i-update ang core_name_mig.v file.
Ginamit ko ang parehong pattern kung saan nakakuha kami ng 87% na paggamit ng bus (figure -12).
Sa nBANK_MACHS nakatakda sa 8, ang kahusayan ay 90%. Xilinx DDR2 MIG 7 Performance Estimation-fig-27

Tandaan din na ang ½ at ¼ controller ay negatibong nakakaapekto sa kahusayan dahil sa kanilang mga latency.
Para kay example, dahil maaari lang kaming magpadala ng mga command sa bawat 4 na CK cycle, kung minsan ay may dagdag na padding kapag sumusunod sa pinakamababang DRAM timing specs, na maaaring bawasan ang kahusayan mula sa theoretical.
Subukan ang iba't ibang controller upang mahanap ang isa na nababagay sa iyong kinakailangan sa kahusayan.

Mga sanggunian

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

Kasaysayan ng Pagbabago
13/03/2015 – Paunang paglabas

Pag-download ng PDF: Gabay sa Pagtantya ng Pagganap ng Xilinx DDR2 MIG 7

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *