Sadržaj:

Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: 4 koraka
Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: 4 koraka

Video: Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: 4 koraka

Video: Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u: 4 koraka
Video: CS50 2014 – 8-я неделя 2024, Novembar
Anonim
Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u
Dizajn jednostavnog četvorosmjernog asocijativnog kontrolera predmemorije u VHDL-u

U mom prethodnom uputstvu vidjeli smo kako dizajnirati jednostavan kontroler predmemorije s direktnim mapiranjem. Ovaj put idemo korak dalje. Dizajnirat ćemo jednostavan četverosmjerni set asocijativnih kontrolera predmemorije. Prednost? Manje grešaka, ali po cijenu performansi. Baš kao i na mom prethodnom blogu, dizajnirali bismo i emulirali cijeli procesor, glavnu memoriju i okruženje predmemorije kako bismo testirali naš predmemorski kontroler. Nadam se da ćete ovo smatrati korisnom referencom za razumijevanje koncepata i dizajniranje vlastitih kontrolera predmemorije u budućnosti. Budući da su model za procesor (testni sto) i glavni memorijski sistem potpuno isti kao i na mom prethodnom blogu, neću ih ponovo objašnjavati. Za detalje o tome pogledajte prethodna uputstva.

Korak 1: Specifikacije

Specifikacije
Specifikacije

Brzo pogledajte specifikacije Cache Controllera predstavljene ovdje:

  • Četverosmjerni set pridruženog kontrolera predmemorije (idite na ovu vezu ako tražite kontroler izravno preslikanog predmemorije).
  • Jednoručni, predmemorija koja blokira.
  • Politika pisanja o uspjesima pisanja.
  • Politika pisanja oko pogrešaka pri pisanju.
  • Politika zamjene pseudo-LRU (pLRU) stabla.
  • Tag Array unutar kontrolera.
  • Parametri koji se mogu konfigurirati.

Zadane specifikacije za keš memoriju i glavnu memoriju iste su kao u mojim prethodnim uputama. Obratite im se.

Korak 2: RTL pogled na cijeli sistem

RTL pogled na cijeli sistem
RTL pogled na cijeli sistem

Kompletan RTL prikaz gornjeg modula prikazan je na slici (isključujući procesor). Zadane specifikacije za autobuse su:

  • Sve sabirnice podataka su 32-bitne sabirnice.
  • Adresna magistrala = 32-bitna sabirnica (ali memorija može adresirati samo 10 bita).
  • Blok podataka = 128 bita (sabirnica širokog propusnog opsega za čitanje).
  • Sve komponente pokreću isti sat.

Korak 3: Rezultati testa

Vrhunski modul je testiran pomoću Test Bench-a, koji jednostavno modelira procesor bez cjevovoda, baš kao što smo to radili u prošlim uputama. Testna ploča često generira zahtjeve za čitanje/pisanje podataka u memoriju. Ovo ismijava tipične upute "Učitaj" i "Spremi", uobičajene u svim programima koje izvodi procesor.

Rezultati testa uspješno su potvrdili funkcionalnost Cache Controllera. Slijedi statistika testa:

  • Svi propušteni i hitni signali za čitanje/pisanje pravilno su generirani.
  • Sve operacije čitanja/pisanja podataka bile su uspješne na sva četiri načina.
  • pLRU algoritam je uspješno verifikovan za zamjenu linija predmemorije.
  • Nisu otkriveni problemi nekoherentnosti/nedosljednosti podataka.
  • Dizajn je uspješno verificiran za Maxm. Takt Frekvencija rada = 100 MHz na Xilinx Virtex-4 ML-403 ploči (cijeli sistem), 110 MHz samo za Cache Controller.
  • Za glavnu memoriju zaključeno je da su blokirani RAM -ovi. Svi ostali nizovi su implementirani na LUT -ovima.

Korak 4: Priložene datoteke

Sljedeći fajlovi su priloženi ovdje uz ovaj blog:

  • . VHD datoteke Cache Controllera, Cache Data Array, Main Memory System.
  • Test Bench.
  • Dokumentacija o Cache Controller -u.

Napomene:

  • Pregledajte dokumentaciju za potpuno razumijevanje ovdje prikazanih specifikacija Cache Controllera.
  • Sve promjene u kodu ovise o drugim modulima. Dakle, promjene treba obaviti razumno.
  • Obratite pažnju na sve komentare i zaglavlja koja sam dao.
  • Ako iz bilo kojeg razloga za glavnu memoriju nije zaključeno blokiranje RAM -a, SMANJITE veličinu memorije, nakon čega slijede promjene širine sabirnice adresa po datotekama itd. Tako da se ista memorija može implementirati bilo na LUT -ovima bilo na distribuiranoj RAM -u. Ovo će uštedjeti vrijeme i resurse usmjeravanja. Ili idite na posebnu FPGA dokumentaciju i pronađite kompatibilan kod za Blokiranje RAM -a i prema tome uredite kôd te upotrijebite iste specifikacije širine sabirnice adresa. Ista tehnika za Altera FPGAs.

Preporučuje se: