Kazalo:

Zasnova enostavnega krmilnika predpomnilnika v VHDL: 4 koraki
Zasnova enostavnega krmilnika predpomnilnika v VHDL: 4 koraki

Video: Zasnova enostavnega krmilnika predpomnilnika v VHDL: 4 koraki

Video: Zasnova enostavnega krmilnika predpomnilnika v VHDL: 4 koraki
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Junij
Anonim
Oblikovanje enostavnega krmilnika predpomnilnika v VHDL
Oblikovanje enostavnega krmilnika predpomnilnika v VHDL

Pišem to navodilo, ker mi je bilo malo težko pridobiti referenčno kodo VHDL, da bi se naučili in začeli oblikovati krmilnik predpomnilnika. Zato sem sam iz nič oblikoval krmilnik predpomnilnika in ga uspešno preizkusil na FPGA. Tukaj sem predstavil preprost neposredno preslikan predpomnilnik krmilnika in modeliral celoten procesorsko-pomnilniški sistem za preizkušanje krmilnika predpomnilnika. Upam, da vam bo to navodilo koristilo kot referenca za oblikovanje lastnih krmilnikov predpomnilnika.

1. korak: Specifikacije

Specifikacije
Specifikacije

To so glavne specifikacije krmilnika predpomnilnika, ki ga bomo oblikovali:

  • Neposredno preslikano. (če iščete Associative Mapped Cache Controller, pojdite na to povezavo)
  • Blokiranje predpomnilnika z eno banko.
  • Politika pisanja o zadetkih za pisanje.
  • Politika dodelitve brez pisanja ali pisanje okoli napak pri pisanju.
  • Brez vmesnega pomnilnika za pisanje ali drugih optimizacij.
  • Niz oznak je vključen.

Poleg tega bomo oblikovali predpomnilnik in glavni pomnilniški sistem.

Privzete (nastavljive) specifikacije predpomnilnika:

  • 256-bajtni enobančni predpomnilnik.
  • 16 vrstic predpomnilnika, vsaka vrstica predpomnilnika (blok) = 16 bajtov.

Specifikacije glavnega pomnilnika:

  • Sinhroni pomnilnik za branje/pisanje.
  • Večbančni vmesni pomnilnik - štiri pomnilniške banke.
  • Vsaka velikost banke = 1 kB vsaka. Skupna velikost je torej 4 kB.
  • Naslovljivi pomnilnik Word (4 bajti) z 10-bitnim vodilom naslovov.
  • Večja pasovna širina za branje. Preberite širino podatkov = 16 bajtov v enem ciklu.
  • Širina zapisa podatkov = 4 bajti.

OPOMBA: če iščete 4-smerno zasnovo krmilnika asociativnega predpomnilnika, preverite mojo novejšo navodila

2. korak: RTL pogled na celoten sistem

RTL Pogled na celoten sistem
RTL Pogled na celoten sistem

Celotna RTL predstavitev zgornjega modula je prikazana na sliki (brez procesorja). Privzete specifikacije za avtobuse so:

  • Vsi podatkovni avtobusi so 32-bitni.
  • Address Bus = 32-bitno vodilo (Toda pomnilnik naslavlja le 10 bitov).
  • Podatkovni blok = 128 bitov (širokopasovna vodila za branje).
  • Vse komponente poganja ista ura.

3. korak: Preskusno okolje

Zgornji modul je bil preizkušen s testno mizo, ki preprosto modelira procesor brez cevovodov (ker oblikovanje celotnega procesorja sploh ni enostavno !!). Testna miza pogosto ustvarja zahteve za branje/pisanje podatkov v pomnilnik. To se posmehuje tipičnim navodilom "Naloži" in "Shrani", ki so skupni v vseh programih, ki jih izvaja procesor. Rezultati preskusa so uspešno preverili funkcionalnost krmilnika predpomnilnika. Sledi statistika preskusov:

  • Vsi signali za branje/pisanje Miss in Hit so bili pravilno ustvarjeni.
  • Vse operacije branja/pisanja podatkov so bile uspešne.
  • Nobene težave pri neskladnosti/nedoslednosti podatkov.
  • Oblikovanje je bilo časovno uspešno preverjeno za Maxm. Ura Frekvenca delovanja = 110 MHz na plošči Xilinx Virtex-4 ML-403 (celoten sistem), 195 MHz samo za krmilnik predpomnilnika.
  • Za glavni pomnilnik so sklepali na blokovske RAM -e. Vsi drugi nizi so bili izvedeni na LUT.

4. korak: Priložene datoteke

Temu blogu so tukaj priložene naslednje datoteke:

  • . VHD datoteke Cache Controller, Cache Data Array, Main Memory System.
  • Testna klop.
  • Dokumentacija o krmilniku predpomnilnika.

Opombe:

  • Poglejte dokumentacijo za popolno razumevanje specifikacij krmilnika predpomnilnika, predstavljenih tukaj.
  • Vse spremembe kode so odvisne od drugih modulov. Zato je treba spremembe opraviti preudarno. Bodite pozorni na vse komentarje in naslove, ki sem jih podal.
  • Če iz kakršnega koli razloga za glavni pomnilnik ne sklepate blok RAM -a, ZMANJŠAJTE velikost pomnilnika, čemur sledijo spremembe širine naslovnega vodila po datotekah itd. Tako, da je isti pomnilnik mogoče implementirati bodisi v LUT ali v porazdeljeni RAM. Tako boste prihranili čas in sredstva. Ali pa pojdite na posebno dokumentacijo FPGA in poiščite združljivo kodo za Blokiraj RAM ter ustrezno uredite kodo in uporabite iste specifikacije širine naslovnega vodila. Ista tehnika za Altera FPGA.

Priporočena: