Mwongozo wa Kukadiria Utendaji wa Xilinx DDR2 MIG 7
Kumbuka Muhimu: PDF hii ya Rekodi ya Majibu inayoweza kupakuliwa imetolewa ili kuboresha utumiaji na usomaji wake. Ni muhimu kutambua kwamba Rekodi za Majibu ni Web-yaliyomo kulingana na ambayo husasishwa mara kwa mara kadiri habari mpya inavyopatikana. Unakumbushwa kutembelea Msaada wa Kiufundi wa Xilinx Webtovuti na review (Jilinx Jibu 63234) kwa toleo jipya zaidi la Jibu hili.
Utangulizi
Kwa sababu ya jinsi kumbukumbu za DDR2 na DDR3 zinavyoundwa na kidhibiti cha mfululizo cha MIG 7 kimeundwa, utendakazi hauko moja kwa moja mbele.
Inahitaji uelewa wa vigezo mbalimbali vya Muda wa Jedec na Usanifu wa kidhibiti, na utahitaji kuendesha masimulizi ili kupata makadirio.
Kanuni ya jumla ya kubainisha utendakazi ni sawa lakini hati hii inatoa njia rahisi ya kupata ufanisi kwa kutumia MIG example kubuni kwa msaada wa benchi ya mtihani na kichocheo fileimeambatanishwa hapa.
Bandwidth yenye ufanisi
Basi la data la DRAM hufikia kipimo data kinachokaribia kilele pekee wakati wa kusoma na kuandika kwa kasi na uendeshaji wake unashusha kasi madhubuti ya data.
Wachache wa zamaniampchini ya juu ni:
- muda wa malipo ya awali wa kufikia safu mlalo katika benki ile ile (Anwani ya ufikiaji haiko katika gombo sawa la ukurasa)
- andika wakati wa kurejesha ili kubadilisha kutoka kwa maandishi hadi ufikiaji wa kusoma
- muda wa basi kubadili kutoka kusoma hadi kuandika
Kipimo Kinachofaa = Kipimo cha Kilele cha Kilele * Ufanisi
Kizazi cha Ubunifu cha MIG
Rejelea UG586 Sura ya 1 kwa maelezo ya hatua kwa hatua kwenye MIG IP na exampkizazi cha kubuni.
Kabla ya kuendesha uigaji wa utendaji wa Mfululizo wa MIG 7, fanya yafuatayo ili kuhakikisha kuwa mazingira yako ya kuiga ni sawa. Fungua MIG exampkubuni na kuweka ramani maktaba zinazofaa, endesha uigaji, na uhakikishe kuwa unaweza kuona ujumbe "jaribio lililopitishwa" katika nakala.
Ili kuonyesha mtiririko nimetoa IP ya MIG ya xc7vx690tffg1761-2 na kuomba ile ya zamani.ampna kubuni.
Mambo mawili ambayo yanapaswa kuzingatiwa ni biti za anwani ya kumbukumbu na uteuzi wa ramani ya anwani ya kumbukumbu.
Kwa mfanoample, nimechagua MT41J128M8XX-125 chini ya chaguzi za kushuka kwa sehemu ya kumbukumbu.
Kwa sehemu ya kumbukumbu iliyochaguliwa kutoka Kielelezo-1, safu mlalo = 14, safuwima = 10 na benki = 3, kwa hivyo app_addr_width = safu + safu + benki + cheo= 28
Unaweza kuchagua BANK_ROW_COLUMN au Safu wima ya ROW BANK.
Nimeondoka kwenye safu wima ya ROW BANK ambayo ni ramani chaguomsingi ya anwani.
Exampmuundo wa Uigaji na benchi ya majaribio inayoweza kutengenezwa
Chini ya mipangilio ya Uigaji, chagua QuestaSim/ModelSim Simulator na uvinjari hadi eneo la maktaba zilizokusanywa.
Kwa maelezo kuhusu kuelekeza njia ya kusakinisha ya wahusika wengine, kuchagua kiigaji lengwa, na kuandaa na kupanga maktaba, unaweza kurejelea (UG900) Vivado Design Suite Suite Uigaji wa Mantiki.
Endesha uigaji kupitia GUI (Bofya Kichupo cha Kuiga Simu kwenye kidhibiti cha mradi) na uhakikishe kuwa unaona ujumbe wa "jaribio limepitishwa" katika nakala.
Marekebisho ya Uigaji wa Utendaji RTL
- Bofya kulia kwenye kichupo cha vyanzo, chagua "ongeza au unda vyanzo vya kuiga", na uvinjari mig7_perfsim_traffic_generator.sv file na ubofye malizia ili kuiongeza.
- Bofya kulia kwenye kichupo cha vyanzo, chagua "ongeza au unda vyanzo vya kuiga", vinjari hadi perfsim_stimulus.txt, na ubofye malizia ili kuiongeza.
- Toa maoni yako kwa example_top instantiation katika sim_tb_top.v file.
- Ongeza mistari iliyo hapa chini ya RTL kwa 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;
- waya [APP_ADDR_WIDTH-1:0] c0_ddr3_app_addr;
- waya [2:0] c0_ddr3_app_cmd;
- waya c0_ddr3_app_sw;
- waya [APP_DATA_WIDTH-1:0] c0_ddr3_app_wdf_data;
- waya c0_ddr3_app_wdf_end;
- waya [APP_MASK_WIDTH-1:0] c0_ddr3_app_wdf_mask;
- waya c0_ddr3_app_wdf_wren;
- waya [APP_DATA_WIDTH-1:0] c0_ddr3_app_rd_data;
- waya c0_ddr3_app_rd_data_end;
- waya c0_ddr3_app_rd_data_valid;
- waya c0_ddr3_app_rdy;
- waya c0_ddr3_app_wdf_rdy;
- kosa c0_data_kulinganisha_waya;
- waya ui_clk;
- waya ui_clk_sync_rst;
- programu ya waya_sr_req = 0;
- waya app_ref_req = 0;
- programu ya waya_zq_req =0;
- waya c0_app_wdf_mask =0;
Kidhibiti cha Kumbukumbu cha FPGA
mig_7series_0_mig u_mig_7series_0_mig (
// Bandari za kiolesura cha kumbukumbu
- .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),
// Bandari za kiolesura cha programu
- .app_addr (c0_ddr3_app_addr),
- .app_cmd (c0_ddr3_app_cmd),
- .app_sw (c0_ddr3_app_en),
- .data_wdf_data (c0_ddr3_app_wdf_data),
- .app_wdf_end (c0_ddr3_app_wdf_end),
- .app_wdf_wren (c0_ddr3_app_wdf_wren),
- .data_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 (programu_sr_req),
- .ref_req_ya_programu (app_ref_req),
- .app_zq_req (programu_zq_req),
- .app_sr_active (programu_sr_active),
- .app_ref_ack (app_ref_ack),
- .app_zq_ack (programu_zq_ack),
- .ui_clk (ui_clk),
- .ui_clk_sync_rst (ui_clk_sync_rst),
- .app_wdf_mask (c0_ddr3_app_wdf_mask),
// Bandari za Saa ya Mfumo
- .sys_clk_i (sys_clk_i),
// Bandari za Saa ya Marejeleo
- .clk_ref_i (clk_ref_i),
- .sys_rst (sys_rst)
- );
Utekelezaji wa jenereta ya trafiki
mig7_perfsim_jenereta_ya_trafiki#
(
.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_trafiki_gen
(
.clk (ui_clk ),
.rst (ui_clk_sync_rst ),
.init_calib_complete (init_calib_complete),
.cmp_kosa (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_sw (c0_ddr3_app_en ),
.app_wdf_mask (c0_ddr3_app_wdf_mask),
.data_wdf_data (c0_ddr3_app_wdf_data),
.app_wdf_end (c0_ddr3_app_wdf_end ),
.app_wdf_wren (c0_ddr3_app_wdf_wren)
);
- 5. Rekebisha APP_ADDR_WIDTH, APP_DATA_WIDTH, RANK_WIDTH na BANK_WIDTH kulingana na chaguo lako la sehemu ya kumbukumbu.
Maadili yanaweza kupatikana kutoka kwa _mig.v file. - Jina la papo hapo lililoangaziwa mig_7series_0_mig linaweza kutofautiana kulingana na jina la kijenzi chako wakati wa kuunda IP, thibitisha ikiwa umechagua jina tofauti na ulibadilishe ipasavyo.
- Mara tu IP inapotolewa, fungua _mig.v file na angalia tofauti zozote za majina ya mawimbi ya LHS na uzirekebishe.
- app_sr_req, app_ref_req na app_zq_req zinapaswa kuanzishwa hadi 0.
- Kama example_top.v imetolewa maoni na mpya files zimeongezwa, labda utaona "?" kando ya
mig_7series_0_mig.v file chini ya vyanzo vya kuiga.
Ili ramani sahihi file, bofya kulia mig_7series_0_mig.v, chagua "Ongeza Vyanzo", Vinjari hadi
/mig_7series_0_example.srcs/sources_1/ip/mig_7series_0/mig_7series_0/user_design/rtl
na uongeze mig_7series_0_mig_sim.v file. - Ikiwa unaona "?" kwa msingi files, ongeza RTL zote files kwenye folda za saa, kidhibiti, ip_top, phy na UI.
- Mara tu mabadiliko ya RTL yamefanywa na yote yanayohitajika files zinaongezwa kwa Vyanzo vyako vya Uigaji, Utawala unapaswa kuwa sawa na Mchoro 5.
The filezilizoangaziwa kwa rangi nyekundu zimeongezwa hivi karibuni, na "?" inatarajiwa kwenye moduli zinazohusiana na ECC kwani usanidi wa kumbukumbu uliochaguliwa umezimwa chaguo la ECC.
Kichocheo File Maelezo
Kila muundo wa kichocheo ni biti 48 na umbizo limefafanuliwa katika Mchoro 6-1 hadi 6-4.
Usimbaji wa Anwani (Anwani [35:0])
Anwani imesimbwa katika kichocheo kulingana na Mchoro 7-1 hadi Mchoro 7-6. Sehemu zote za anwani zinahitaji kuingizwa katika umbizo la hexadecimal. Sehemu zote za anwani ni upana ambao unaweza kugawanywa na nne ili kuingia katika umbizo la hexadecimal. Benchi ya majaribio hutuma tu biti zinazohitajika za sehemu ya anwani kwa Kidhibiti cha Kumbukumbu.
Kwa mfanoampna, katika usanidi nane wa benki, Biti za benki pekee [2:0] hutumwa kwa Kidhibiti cha Kumbukumbu na vipande vilivyosalia vinapuuzwa. Biti za ziada za uga wa anwani zimetolewa ili uweke anwani katika umbizo la heksadesimali.
Lazima uthibitishe thamani iliyoingia inalingana na upana wa usanidi uliopewa.
- Anwani ya Safu wima (Safuwima[11:0]) - Anwani ya Safu katika kichocheo hutolewa kwa kiwango cha juu cha biti 12, lakini unahitaji kushughulikia hili kulingana na kigezo cha upana wa safu iliyowekwa katika muundo wako.
- Anwani ya Safu (Safu [15:0]) - Anwani ya safu mlalo katika kichocheo hutolewa kwa upeo wa biti 16, lakini unahitaji kushughulikia hili kulingana na kigezo cha upana wa safu iliyowekwa katika muundo wako.
- Anwani ya Benki (Benki[3:0]) - Anwani ya benki katika kichocheo hutolewa kwa kiwango cha juu cha biti nne, lakini unahitaji kushughulikia hili kulingana na kigezo cha upana wa benki kilichowekwa katika muundo wako.
- Anwani ya Cheo (Cheo[3:0]) - Anwani ya cheo katika kichocheo hutolewa kwa upeo wa biti nne, lakini unahitaji kushughulikia hili kulingana na kigezo cha upana wa cheo kilichowekwa katika muundo wako.
Anwani hukusanywa kulingana na kigezo cha kiwango cha juu cha MEM_ADDR_ORDER na kutumwa kwa kiolesura cha mtumiaji.
Amri Rudia (Amri Rudia [7:0])
Hesabu ya marudio ya amri ni idadi ya muda ambao amri husika inarudiwa kwenye Kiolesura cha Mtumiaji. Anwani kwa kila marudio huongezeka kwa 8. Idadi ya juu zaidi ya marudio ni 128.
Benchi la majaribio haliangalii mpaka wa safu wima na linazunguka ikiwa kikomo cha safu wima cha juu kinafikiwa wakati wa nyongeza.
Amri 128 zinajaza ukurasa. Kwa anwani yoyote ya safu wima isipokuwa 0, hesabu ya marudio ya 128 huishia kuvuka mpaka wa safu wima na kuzunguka hadi mwanzo wa anwani ya safu wima.
Matumizi ya Mabasi
Matumizi ya basi huhesabiwa kwenye Kiolesura cha Mtumiaji kwa kuzingatia jumla ya idadi ya Masomo na Kuandika na mlingano ufuatao unatumika:
- BL8 inachukua mizunguko minne ya saa ya kumbukumbu
- end_of_stimulus ni wakati ambapo amri zote zinafanywa.
- calib_done ni wakati ambapo urekebishaji unafanywa.
Example Miundo
Hawa wa zamaniamples zinatokana na MEM_ADDR_ORDER iliyowekwa kuwa BANK_ROW_COLUMN.
Muundo wa Kusoma Mmoja
00_0_2_000F_00A_1 - Mchoro huu ni usomaji mmoja kutoka safu ya 10, safu ya 15 na benki ya pili.Muundo wa Kuandika Moja
00_0_1_0040_010_0 - Mchoro huu ni uandishi mmoja kwa safu wima ya 32, safu mlalo ya 128 na benki ya kwanza.Andika Moja na Usome kwa Anwani Sawa
00_0_2_000F_00A_0 – Mchoro huu ni uandishi mmoja hadi safu ya 10, safu mlalo ya 15 na benki ya pili.
00_0_2_000F_00A_1 – Mchoro huu umesomwa mara moja kutoka safu wima ya 10, safu mlalo ya 15 na benki ya pili
Huandika na Kusoma Nyingi kwa Anwani Sahihi
0A_0_0_0010_000_0 – Hii inalingana na maandishi 10 yenye anwani kuanzia 0 hadi 80 ambayo inaweza kuonekana kwenye safu.
0A_0_0_0010_000_1 – Hii inalingana na usomaji 10 na anwani kuanzia 0 hadi 80 ambayo inaweza kuonekana kwenye safu.
Funga Ukurasa Wakati wa Kuandika
0A_0_2_000F_3F8_0 – Hii inalingana na maandishi 10 na anwani ya safu iliyofungwa hadi mwanzo wa ukurasa baada ya kuandika moja.
Kuiga Jenereta ya Utendaji ya Trafiki
Kwa wakati huu umemalizana na MIG exampuigaji wa muundo. Hii inamaanisha kuwa usanidi wako wa uigaji uko tayari, umefanya marekebisho ya uigaji wa RTL, safu mpya ya uigaji ni sahihi na umeelewa mifumo ya vichocheo. Tekeleza simulizi kwa mara nyingine tena kwa kuandika na kusoma 16 katika perfsim_stimulus.txt.
Fanya kukimbia-yote, subiri hadi ishara ya init_calib_complete ithibitishwe, na utaweza kuona idadi iliyopendekezwa ya maandishi na usomaji. Simulation basi itaacha.
Unapoombwa kuacha kuiga, chagua Hapana na uende kwenye kidirisha cha manukuu ambapo utaweza kuona takwimu za utendakazi.
Ukichagua "acha kuiga" takwimu za utendaji zitaandikwa kwa a file jina mig_band_width_output.txt iliyoko katika sim_1/behave folda.
Exampnjia ya saraka: -
/mig_7series_0_example_perf_sim\mig_7series_0_example.sim/sim_1/behav
Unaweza kujiuliza kwa nini asilimiatagutumiaji wa basi la e ni ony 29. Rudia simulizi kwa mipangilio sawa ya IP lakini ukibadilisha kichocheo file hadi 256 wanaandika na 256 wanasoma
ff_0_0_0000_000_0
ff_0_0_0000_000_1
Sasa utaona asilimiatage kama 85, ambayo inamaanisha kuwa DDR3 inatoa matumizi bora ya basi kwa mlolongo mrefu wa uandishi na milipuko ya kusoma.
Njia za jumla za Kuboresha Utendaji
Sababu zinazoathiri ufanisi zinaweza kugawanywa katika sehemu mbili:
- Kumbukumbu Maalum
- Kidhibiti Maalum
Kielelezo cha 9 kinakupa zaidiview ya maneno ambayo ni kumbukumbu maalum.
Tofauti na SRAM na Utendaji wa Zuia Kumbukumbu DDR2 au DDR3 sio tu kiwango cha juu cha data.
Inategemea mambo mengi ya wakati, ikiwa ni pamoja na:
- tRCD: Ucheleweshaji wa Amri ya Safu (au ras to cas delay).
- tCAS(CL): Muda wa kusubiri wa anwani ya safu wima.
- tRP: Kuchelewa kwa malipo ya safu mlalo.
- TRAS: Muda Amilifu wa Safu (washa ili kubadilisha mapema).
- tRC: Muda wa mzunguko wa safu. tRC = tRAS + tRP
- TRAC: Ucheleweshaji wa ufikiaji bila mpangilio. tRAC = tRCD + tCAS
- tCWL: Cas kuandika latency.
- tZQ: Saa ya hesabu ya ZQ.
- tRFC: Saa ya Mzunguko wa Kuonyesha upya Safu
- tWTR: Andika ili Kuchelewa Kusoma. Mwisho wa kuandika muamala ili Soma wakati wa amri.
- tWR: Andika wakati wa kurejesha. Mwisho wa kuandika muamala hadi Saa ya Kuchaji kabla
Muda wa vigezo vyote vilivyoorodheshwa hutegemea aina ya kumbukumbu iliyotumiwa na daraja la kasi ya sehemu ya kumbukumbu.
Maelezo zaidi kuhusu ufafanuzi na vipimo vya muda yanaweza kupatikana katika DDR2 DDR3 JEDEC au katika hifadhidata ya kifaa chochote cha kumbukumbu.
Ufanisi hasa inategemea jinsi kumbukumbu inavyofikiwa. Mitindo tofauti ya anwani hutoa matokeo tofauti ya ufanisi.
Utunzaji wa muda wa kumbukumbu
- Muda wa kuwezesha na Muda wa Kuchaji kabla ya kubadilisha hadi benki/safu mlalo mpya au kubadilisha safu katika benki moja.- Kwa hivyo ukipunguza mabadiliko ya safu mlalo, hii inaweza kuondoa tRCD na tRP.
- Tuma amri zinazoendelea za kuandika au kusoma -Kudumisha muda wa tCCD.
- Punguza kuandika kusoma na kusoma ili kuandika mabadiliko ya amri - Andika wakati wa kurejesha ili kubadilisha ufikiaji wa kusoma, wakati wa kubadilisha basi kubadili kutoka kusoma hadi kuandika
- Weka muda sahihi wa kuonyesha upya.
- DDR3 SDRAM inahitaji Onyesha upya mizunguko kwa wastani wa muda wa muda wa tREFI.
- Upeo wa amri 8 za Upyaji upya zinaweza kutolewa mapema ("vutwa ndani"). Hii haipunguzi idadi ya viburudisho, lakini muda wa juu kati ya amri mbili za Upyaji upya ni mdogo kwa 9 × tREFI.
- Tumia benki zote - Utaratibu unaofaa wa kushughulikia ni vyema.
- Safu Mlalo-Bank-Safu: Kwa muamala unaofanyika kwenye nafasi ya anwani ya mfuatano, msingi hufungua kiotomatiki safu mlalo sawa katika benki inayofuata ya kifaa cha DRAM ili kuendeleza muamala wakati mwisho wa safu mlalo uliopo umefikiwa. Inafaa kwa programu zinazohitaji kupasuka kwa pakiti kubwa za data hadi maeneo ya anwani yanayofuatana.
- Safu-wima ya Benki: Wakati wa kuvuka mpaka wa safu, safu ya sasa itafungwa na safu nyingine itafunguliwa ndani ya benki hiyo hiyo. MSB ni anwani ya benki, ambayo inaweza kutumika kubadili kutoka kwa benki tofauti. Inafaa kwa shughuli fupi, za nasibu zaidi kwa block moja ya kumbukumbu kwa muda fulani na kisha kuruka kwenye block nyingine (benki)
- Urefu wa Kupasuka
- BL 8 inatumika kwa DDR3 kwenye mfululizo 7. BC4 ina ufanisi mdogo sana ambao ni chini ya 50%. Hii ni kwa sababu muda wa utekelezaji wa BC4 ni sawa na BL8. Data imefichwa tu ndani ya kijenzi.
- Katika hali ambapo hutaki kuandika mpasuko kamili, aidha kinyago cha data au kuandika-baada ya kusoma kinaweza kuzingatiwa.
- Weka muda sahihi wa ZQ (DDR3 Pekee)
Kidhibiti hutuma amri zote mbili za Urekebishaji wa ZQ Short (ZQCS) na ZQ Long (ZQCL).- Kuzingatia DDR3 Jedec Standard
- Urekebishaji wa ZQ umejadiliwa katika sehemu ya 5.5 ya Kiwango cha JEDEC JESD79-3 DDR3 SDRAM
- Urekebishaji wa ZQ hurekebisha On Die Termination (ODT) kwa vipindi vya kawaida ili kutoa hesabu kwa tofauti katika VT.
- Mantiki iko katika bank_common.v/vhd
- Parameta Tzqcs huamua kiwango ambacho amri ya Urekebishaji wa ZQ inatumwa kwenye kumbukumbu
- t inawezekana kuzima kihesabu na kutuma wewe mwenyewe kwa kutumia app_zq_req, Ni Sawa na kutuma Uonyeshaji upya mwenyewe.
Rejelea (Jibu la Xilinx 47924) kwa maelezo.
Vidhibiti vya Juu vya Kidhibiti
- Usomaji wa Mara kwa Mara - Rejelea (Jibu la Xilinx 43344) kwa maelezo.
- Usibadilishe kipindi cha kusoma
- Ruka usomaji wa mara kwa mara wakati wa kuandika na utoe nambari ya usomaji uliokosa kabla ya usomaji wa kweli
- Kupanga upya - Rejelea (Jibu la Xilinx 34392) kwa maelezo.
Kwa miundo ya Kiolesura cha Mtumiaji na AXI ni vyema kuwasha hii.- Kupanga upya ni mantiki inayoangalia mbele amri kadhaa na kubadilisha mpangilio wa amri ya mtumiaji ili kufanya amri zisizo za kumbukumbu zisichukue kipimo data halali. Utendaji pia unahusiana na muundo halisi wa trafiki.
- Kulingana na muundo wa anwani, kupanga upya husaidia kuruka malipo ya awali na kuwezesha amri na kufanya tRCD na tRP zisichukue upana wa bendi ya data.
- Jaribu kuongeza idadi ya Mashine za Benki.
- Mantiki nyingi za kidhibiti hukaa kwenye mashine za benki na zinalingana na benki za DRAM
- Mashine fulani ya benki hudhibiti benki moja ya DRAM wakati wowote.
- Ugawaji wa mashine za benki unabadilika kwa hivyo si lazima kuwa na mashine ya benki kwa kila benki halisi.
- Mashine za benki zinaweza kusanidiwa, lakini ni biashara kati ya eneo na utendaji.
- Idadi inayoruhusiwa ya mashine za benki ni kati ya 2-8.
- Kwa chaguo-msingi, Mashine 4 za Benki husanidiwa kupitia vigezo vya RTL.
- Ili kubadilisha Mashine za Benki, zingatia kigezo nBANK_MACHS = 8 kilicho katika memc_ui_top Ex.ample kwa Mashine 8 za Benki - nBANK_MACHS = 8
Sasa unafahamu mambo yanayoathiri utendaji kazi.
Fikiria programu ya juu inayokupa baiti 512 za data kwa kila pakiti na unahitaji kuzihifadhi kwenye maeneo tofauti ya kumbukumbu. Kwa kuwa baiti 512 za data ni sawa na mipasuko ya data 64 DDR3, endesha tena ile ya zamani.ample kubuni na kichocheo file iliyo na maandishi 512, 512 yanasomwa na kubadilisha safu kwa kila 64 anaandika au anasoma:
- 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
Mwisho wa simulation utaona kwamba matumizi ya basi ni kwa asilimia 77.
Mchoro wa 11: Takwimu za Utendaji za 512 huandika na 512 zinasomwa - Kubadilisha safu kwa 64 huandika au kusoma.
Sasa unaweza kutumia maarifa uliyojifunza katika sehemu ya awali ili kuboresha ufanisi. Pamoja na a view kwa kutumia benki zote badala ya kubadilisha safu mlalo, rekebisha muundo wa anwani ili kubadilisha benki kama inavyoonyeshwa hapa chini.
Hii ni sawa na kuweka safuwima ROW_BANK_ katika mpangilio wa ramani ya anwani ya kumbukumbu katika 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
Mwishoni mwa uigaji utaona kwamba Asilimia 77 ya Matumizi ya Mabasi ya awali sasa ni 87!
Iwapo bado unahitaji ufanisi wa juu zaidi, unaweza kutafuta saizi kubwa za pakiti za baiti 1024 au 2048, au fikiria uonyeshaji upya mwenyewe.
Kumbuka: Xilinx haihimizi kupitisha uonyeshaji upya wa kidhibiti kwa kuwa hatuna uhakika kama utaweza kufikia muda wa kuonyesha upya kiotomatiki wa Jedec ambao unaathiri utegemezi wa data.
Kutoka upande wa kidhibiti unaweza kubadilisha nBANk_MACH na kuona uboreshaji wa utendakazi.
Hata hivyo, hii inaweza kuathiri muda wa muundo wako, tafadhali rejelea (Jibu la Xilinx 36505) kwa maelezo juu ya nBANk_MACH
Fungua core_name_mig_sim.v file na ubadilishe vigezo nBANK_MACHS kutoka 4 hadi 8 na utekeleze tena uigaji. Ili thamani ya kigezo ianze kutumika katika maunzi, unahitaji kusasisha core_name_mig.v file.
Nilitumia muundo huo ambapo tulipata 87% ya matumizi ya basi (takwimu -12).
Na nBANK_MACHS imewekwa kuwa 8, ufanisi sasa ni 90%.
Pia kumbuka kuwa vidhibiti ½ na ¼ vinaathiri vibaya ufanisi kutokana na kuchelewa kwao.
Kwa mfanoamphata hivyo, kwa kuwa tunaweza kutuma amri tu kila mizunguko 4 ya CK wakati mwingine kuna pedi za ziada wakati wa kuambatana na vipimo vya chini vya muda vya DRAM, ambavyo vinaweza kupunguza ufanisi kutoka kwa kinadharia.
Jaribu vidhibiti tofauti ili kupata kile kinachofaa mahitaji yako ya ufanisi.
Marejeleo
- Zynq-7000 AP SoC na Mfululizo 7 wa FPGAs MIS v2.3 [UG586]
- Kituo cha Suluhisho cha Xilinx MIG http://www.xilinx.com/support/answers/34243.html
Historia ya Marekebisho
13/03/2015 - Toleo la awali
Pakua PDF: Mwongozo wa Kukadiria Utendaji wa Xilinx DDR2 MIG 7