Სარჩევი:

VHDL– ში მარტივი ოთხმხრივი კომპაქტური ქეში კონტროლერის დიზაინი: 4 ნაბიჯი
VHDL– ში მარტივი ოთხმხრივი კომპაქტური ქეში კონტროლერის დიზაინი: 4 ნაბიჯი

ვიდეო: VHDL– ში მარტივი ოთხმხრივი კომპაქტური ქეში კონტროლერის დიზაინი: 4 ნაბიჯი

ვიდეო: VHDL– ში მარტივი ოთხმხრივი კომპაქტური ქეში კონტროლერის დიზაინი: 4 ნაბიჯი
ვიდეო: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024, ნოემბერი
Anonim
მარტივი ოთხმხრივი კომპლექტი ასოციაციური ქეში კონტროლერის დიზაინი VHDL– ში
მარტივი ოთხმხრივი კომპლექტი ასოციაციური ქეში კონტროლერის დიზაინი VHDL– ში

ჩემს წინა ინსტრუქციებში, ჩვენ ვნახეთ, თუ როგორ უნდა შეიმუშაოს მარტივი პირდაპირი რუქის ქეში კონტროლერი. ამჯერად, ჩვენ წინ მივდივართ. ჩვენ შევქმნით მარტივ ოთხმხრივ მითითებულ ასოციაციურ ქეში კონტროლერს. უპირატესობა? ნაკლები გამოტოვების მაჩვენებელი, მაგრამ შესრულების ფასად. ისევე, როგორც ჩემი წინა ბლოგი, ჩვენ შევიმუშავებთ და გამოვხატავთ მთელ პროცესორს, ძირითად მეხსიერებას და ქეში გარემოს შესამოწმებლად ჩვენი ქეში კონტროლერი. ვიმედოვნებ, რომ თქვენ ნახავთ ამას, როგორც სასარგებლო მითითებას, რომ გაიგოთ კონცეფციები და შეიმუშაოთ თქვენი საკუთარი ქეში კონტროლერები მომავალში. ვინაიდან პროცესორის მოდელი (საცდელი სკამი) და ძირითადი მეხსიერების სისტემა ზუსტად იგივეა რაც ჩემი წინა ბლოგი, მე მათ აღარ განვმარტავ. გთხოვთ, გაეცნოთ წინა ინსტრუქციას ამის შესახებ დეტალებისთვის.

ნაბიჯი 1: სპეციფიკაციები

სპეციფიკაციები
სპეციფიკაციები

სწრაფი ნახვა Cache Controller– ის სპეციფიკაციებით აქ წარმოდგენილი:

  • ოთხმხრივი კომპლექტი ასოციაციური ქეშის კონტროლერი (გადადით ამ ბმულზე, თუ ეძებთ პირდაპირ რუქის ქეში კონტროლერს).
  • ერთჯერადი ბანკი, ბლოკირების ქეში.
  • დაწერეთ პოლიტიკა ჩაწერის ჰიტების შესახებ.
  • ჩაწერეთ გამოტოვების შესახებ ჩაწერა-გარშემო პოლიტიკა.
  • ხე Pseudo-LRU (pLRU) ჩანაცვლების პოლიტიკა.
  • Tag მასივი კონტროლერში.
  • კონფიგურირებადი პარამეტრები.

ნაგულისხმევი სპეციფიკაციები Cache მეხსიერებისა და ძირითადი მეხსიერებისათვის იგივეა რაც ჩემი წინა ინსტრუქციისგან. გთხოვთ მიმართოთ მათ.

ნაბიჯი 2: მთელი სისტემის RTL ხედი

მთელი სისტემის RTL ხედი
მთელი სისტემის RTL ხედი

ზედა მოდულის სრული RTL წარმოდგენა ნაჩვენებია ფიგურაში (პროცესორის გამოკლებით). ავტობუსების სტანდარტული მახასიათებლებია:

  • ყველა მონაცემთა ავტობუსი არის 32 ბიტიანი ავტობუსი.
  • მისამართის ავტობუსი = 32 ბიტიანი ავტობუსი (მაგრამ მეხსიერების საშუალებით აქ მხოლოდ 10 ბიტია მიმართული).
  • მონაცემთა ბლოკი = 128 ბიტი (ფართო გამტარუნარიანობის ავტობუსი წაკითხვისთვის).
  • ყველა კომპონენტი ერთსა და იმავე საათს მართავს.

ნაბიჯი 3: ტესტის შედეგები

ზედა მოდული შემოწმდა საცდელი სკამის გამოყენებით, რომელიც უბრალოდ აყალიბებს არასამთავრობო მილსადენის პროცესორს, ისევე როგორც ჩვენ გავაკეთეთ ბოლო ინსტრუქციებში. საცდელი მაგიდა ხშირად წარმოქმნის წაკითხვის/ჩაწერის მონაცემებს მეხსიერებაში. ეს დასცინის ტიპიურ "Load" და "Store" ინსტრუქციებს, რომლებიც გავრცელებულია პროცესორის მიერ შესრულებულ ყველა პროგრამაში.

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

  • ყველა წაკითხვის/ჩაწერის Miss და Hit სიგნალები სწორად იქნა გენერირებული.
  • წაკითხვის/ჩაწერის ყველა ოპერაცია წარმატებული იყო ოთხივე გზით.
  • pLRU ალგორითმი წარმატებით არის დამოწმებული ქეში ხაზების შეცვლისთვის.
  • მონაცემთა შეუსაბამობა/შეუსაბამობა არ არის გამოვლენილი.
  • დიზაინი წარმატებით იქნა დადასტურებული დროის მაქსიმუმისთვის. საათის სიხშირე = 100 MHz Xilinx Virtex-4 ML-403 დაფაზე (მთელი სისტემა), 110 MHz მხოლოდ Cache Controller– ისთვის.
  • ბლოკის ოპერატიული მეხსიერება გამოითვლება ძირითადი მეხსიერებისათვის. ყველა სხვა მასივი განხორციელდა LUT– ებზე.

ნაბიჯი 4: თანდართული ფაილები

შემდეგი ფაილები ერთვის აქ ამ ბლოგს:

  • . VHD ფაილები Cache Controller, Cache Data Array, Main Memory System.
  • საცდელი სკამი.
  • დოკუმენტაცია ქეში კონტროლერის შესახებ.

შენიშვნები:

  • გაიარეთ დოკუმენტაცია, რომ გაიგოთ აქ წარმოდგენილი ქეში კონტროლერის სპეციფიკაციები.
  • კოდის ნებისმიერი ცვლილება დამოკიდებულია სხვა მოდულებზე. ასე რომ, ცვლილებები გონივრულად უნდა მოხდეს.
  • ყურადღება მიაქციეთ ჩემს მიერ გამოქვეყნებულ ყველა კომენტარს და სათაურს.
  • თუ რაიმე მიზეზის გამო, ბლოკის ოპერატიული მეხსიერება არ არის გამოთვლილი ძირითადი მეხსიერებისათვის, შეამცირეთ მეხსიერების ზომა, რასაც მოჰყვება მისამართების ავტობუსის სიგანეების ცვლილებები ფაილებში და ასე შემდეგ. ასე რომ ერთი და იგივე მეხსიერება შეიძლება განხორციელდეს როგორც LUT- ებზე, ასევე განაწილებულ RAM- ზე. ეს დაზოგავს მარშრუტის დროს და რესურსებს. ან, გადადით FPGA– ს კონკრეტულ დოკუმენტაციაში და იპოვეთ ბლოკის RAM– ის თავსებადი კოდი და შესაბამისად შეცვალეთ კოდი და გამოიყენეთ იგივე მისამართის ავტობუსის სიგანის სპეციფიკაციები. იგივე ტექნიკა Altera FPGA– სთვის.

გირჩევთ: