Բովանդակություն:

VHDL- ում պարզ քեշի վերահսկիչի ձևավորում. 4 քայլ
VHDL- ում պարզ քեշի վերահսկիչի ձևավորում. 4 քայլ

Video: VHDL- ում պարզ քեշի վերահսկիչի ձևավորում. 4 քայլ

Video: VHDL- ում պարզ քեշի վերահսկիչի ձևավորում. 4 քայլ
Video: How to use a For-Loop in VHDL 2024, Նոյեմբեր
Anonim
VHDL- ում պարզ քեշի վերահսկիչի ձևավորում
VHDL- ում պարզ քեշի վերահսկիչի ձևավորում

Ես գրում եմ սա ուսանելի, որովհետև մի փոքր դժվար գտա ինչ -որ տեղեկատու VHDL կոդ ստանալ `սովորելու և քեշի վերահսկիչ նախագծելու համար: Այսպիսով, ես ինքս զրոյից նախագծեցի քեշի վերահսկիչ և այն հաջողությամբ փորձարկեցի FPGA- ի վրա: Ես այստեղ ներկայացրել եմ պարզ ուղղակի քարտեզագրված քեշի վերահսկիչ, ինչպես նաև մոդելավորել եմ մի ամբողջ պրոցեսոր-հիշողության համակարգ ՝ Cache Controller- ը փորձարկելու համար: Հուսով եմ, որ ձեզ համար այս ուսանելի ծրագիրը օգտակար կլինի որպես ձեր սեփական քեշի վերահսկիչների նախագծման հղում:

Քայլ 1: Տեխնիկական պայմաններ

Տեխնիկական պայմաններ
Տեխնիկական պայմաններ

Ահա Cache Controller- ի հիմնական բնութագրերը, որոնք մենք պատրաստվում ենք նախագծել.

  • Ուղղակի քարտեզագրված: (անցեք այս հղումով, եթե փնտրում եք Associated Mapped Cache Controller)
  • Մեկ բանկային, արգելափակող քեշ:
  • Գրելու հիթեր գրելու քաղաքականություն:
  • No-Write հատկացնել կամ գրել Around Policy գրառումներ բաց թողնելու վերաբերյալ:
  • Ոչ գրել բուֆեր կամ այլ օպտիմալացում:
  • Պիտակների զանգվածը ներառված է:

Բացի այդ, մենք նախագծելու ենք Cache Memory և հիմնական հիշողության համակարգ:

Քեշի հիշողության կանխադրված (կարգավորելի) բնութագրերը.

  • 256 բայթ մեկ բանկային քեշ:
  • 16 Cache տող, յուրաքանչյուր Cache Line (Block) = 16 բայթ:

Հիմնական հիշողության բնութագրերը.

  • Սինխրոն ընթերցման/գրելու հիշողություն:
  • Multi -banked Interleaved Memory - չորս հիշողության բանկ:
  • Յուրաքանչյուր բանկի չափը = յուրաքանչյուրը 1 ԿԲ: Այսպիսով, ընդհանուր չափը = 4 կԲ:
  • Word (4 բայթ) հասցեագրվող հիշողություն ՝ 10-բիթանոց հասցեի ավտոբուսով:
  • Ավելի բարձր թողունակություն ՝ կարդալու համար: Կարդացեք տվյալների լայնությունը = 16 բայթ մեկ ժամացույցի ցիկլում:
  • Գրեք տվյալների լայնություն = 4 բայթ:

NOTԱՆՈԹՈԹՅՈՆ. Ստուգեք իմ ավելի նոր հրահանգը, եթե դուք փնտրում եք 4-ճանապարհային ասոցիատիվ քեշի վերահսկիչի դիզայն

Քայլ 2: Ամբողջ համակարգի RTL տեսք

Ամբողջ համակարգի RTL տեսք
Ամբողջ համակարգի RTL տեսք

Վերևի մոդուլի ամբողջական RTL ներկայացումը ներկայացված է Նկարում (առանց պրոցեսորի): Ավտոբուսների կանխադրված բնութագրերն են.

  • Բոլոր տվյալների ավտոբուսները 32-բիթանոց ավտոբուսներ են:
  • Հասցեի ավտոբուս = 32-բիթանոց ավտոբուս (Բայց Հիշողության միջոցով այստեղ հասցեագրելի է ընդամենը 10 բիթ):
  • Տվյալների արգելափակում = 128 բիթ (կարդալու համար լայն թողունակության ավտոբուս):
  • Բոլոր բաղադրիչները շարժվում են նույն ժամացույցով:

Քայլ 3: Փորձարկման միջավայր

Վերևի մոդուլը փորձարկվել է Test Bench- ի միջոցով, որը պարզապես մոդելավորում է ոչ խողովակաշարային պրոցեսոր (քանի որ ամբողջ պրոցեսոր նախագծելը ամենևին էլ հեշտ չէ !!): Թեստային նստարանը հաճախակի ստեղծում է Հիշողության համար կարդալու/գրելու տվյալների պահանջներ: Սա ծաղրում է տիպիկ «Բեռնում» և «Պահել» հրահանգները, որոնք տարածված են պրոցեսորի կողմից կատարված բոլոր ծրագրերում: Թեստի արդյունքները հաջողությամբ ստուգեցին Cache Controller- ի ֆունկցիոնալությունը: Ստորև բերված են թեստերի վիճակագրությունը.

  • Բոլոր կարդալ/գրել Miss և Hit ազդանշանները ճիշտ են ստեղծվել:
  • Կարդալու/գրելու տվյալների բոլոր գործողությունները հաջող էին:
  • Տվյալների անհամապատասխանության/անհամապատասխանության խնդիրներ չեն հայտնաբերվել:
  • Դիզայնը հաջողությամբ հաստատվեց Maxm- ի համար: Clամացույց Գործողության հաճախականությունը = 110 ՄՀց Xilinx Virtex-4 ML-403 տախտակում (ամբողջ համակարգ), 195 ՄՀց միայն Cache Controller- ի համար:
  • Արգելափակված RAM- ները եզրակացվեցին հիմնական հիշողության համար: Մնացած բոլոր զանգվածները կիրառվել են LUT- երի վրա:

Քայլ 4: Կից ֆայլեր

Հետևյալ ֆայլերը կցված են այստեղ այս բլոգին.

  • . VHD ֆայլեր Cache Controller, Cache Data Array, Main Memory System:
  • Փորձնական նստարան:
  • Փաստաթղթեր Cache Controller- ի վերաբերյալ:

Նշումներ

  • Անցեք փաստաթղթերը ՝ այստեղ ներկայացված Cache Controller- ի բնութագրերը լիովին հասկանալու համար:
  • Կոդի ցանկացած փոփոխություն կախված է այլ մոդուլներից: Այսպիսով, փոփոխությունները պետք է արվեն խելամիտ: Ուշադրություն դարձրեք իմ տված բոլոր մեկնաբանություններին և վերնագրերին:
  • Եթե ինչ -ինչ պատճառներով, հիմնական հիշողության համար արգելափակված RAM- ները չեն եզրակացվում, Նվազեցրեք հիշողության չափը, որին հաջորդում են հասցեների ավտոբուսի լայնությունների փոփոխությունները ֆայլերում և այլն: Որպեսզի նույն հիշողությունը կարող է իրականացվել կամ LUT- ներով կամ Distributed RAM- ով: Սա կփրկի երթուղու ժամանակը և ռեսուրսները: Կամ, գնացեք FPGA- ի հատուկ փաստաթղթերը և գտեք Block RAM- ի համար համատեղելի կոդը և համապատասխանաբար խմբագրեք ծածկագիրը, և օգտագործեք նույն հասցեի ավտոբուսի լայնության բնութագրերը: Նույն տեխնիկան Altera FPGA- ների համար:

Խորհուրդ ենք տալիս: