Obsah:

Návrh jednoduchého řadiče mezipaměti ve VHDL: 4 kroky
Návrh jednoduchého řadiče mezipaměti ve VHDL: 4 kroky

Video: Návrh jednoduchého řadiče mezipaměti ve VHDL: 4 kroky

Video: Návrh jednoduchého řadiče mezipaměti ve VHDL: 4 kroky
Video: BI-SAP Přednášky FIT 2021: 13. Řídící jednotka počítače - řadič. 2024, Listopad
Anonim
Návrh jednoduchého řadiče mezipaměti ve VHDL
Návrh jednoduchého řadiče mezipaměti ve VHDL

Píši tento návod, protože mi přišlo trochu obtížné získat nějaký referenční kód VHDL, abych se naučil a začal navrhovat řadič mezipaměti. Navrhl jsem tedy řadič mezipaměti sám od nuly a úspěšně jej otestoval na FPGA. Zde jsem představil jednoduchý přímo namapovaný řadič mezipaměti a také jsem vymodeloval celý procesorový paměťový systém pro testování řadiče mezipaměti. Doufám, že vám tento návod bude užitečný jako reference pro návrh vašich vlastních řadičů mezipaměti.

Krok 1: Specifikace

Specifikace
Specifikace

Toto jsou hlavní specifikace řadiče mezipaměti, které se chystáme navrhnout:

  • Přímo mapováno. (pokud hledáte asociativní mapovaný ovladač mezipaměti, přejděte na tento odkaz)
  • Jednosměrná, blokovací mezipaměť.
  • Zásady přepisování požadavků na zápis.
  • Přidělení zákazu zápisu nebo zakázání zápisu při chybě zápisu.
  • Žádná vyrovnávací paměť pro zápis ani jiné optimalizace.
  • Pole značek je začleněno.

Kromě toho navrhneme také vyrovnávací paměť a hlavní paměťový systém.

Výchozí (konfigurovatelné) specifikace mezipaměti:

  • 256bajtová jednobanková mezipaměť.
  • 16 řádků mezipaměti, každý řádek mezipaměti (blok) = 16 bytů.

Specifikace hlavní paměti:

  • Synchronní paměť pro čtení/zápis.
  • Multi -banked Interleaved Memory - čtyři paměťové banky.
  • Velikost každé banky = 1 kB. Celková velikost = 4 kB.
  • Adresovatelná paměť Word (4 bajty) s 10bitovou adresovou sběrnicí.
  • Vyšší šířka pásma pro čtení. Šířka načtených dat = 16 bajtů v jednom hodinovém cyklu.
  • Šířka zápisu dat = 4 bajty.

POZNÁMKA: podívejte se na můj novější instructable, pokud hledáte design 4cestného asociativního řadiče mezipaměti

Krok 2: RTL pohled na celý systém

RTL pohled na celý systém
RTL pohled na celý systém

Kompletní RTL reprezentace horního modulu je zobrazena na obrázku (kromě procesoru). Výchozí specifikace pro autobusy jsou:

  • Všechny datové sběrnice jsou 32bitové.
  • Adresa sběrnice = 32bitová sběrnice (Paměť zde však může adresovat pouze 10 bitů).
  • Datový blok = 128 bitů (širokopásmová sběrnice pro čtení).
  • Všechny komponenty jsou poháněny stejnými hodinami.

Krok 3: Testování prostředí

Top Module byl testován pomocí testovací lavice, která jednoduše modeluje nepipeline procesor (protože navrhnout celý procesor není vůbec snadné !!). Testovací lavice často generuje požadavky na čtení/zápis dat do paměti. To zesměšňuje typické pokyny „Načíst“a „Uložit“, běžné ve všech programech spuštěných procesorem. Výsledky testu úspěšně ověřily funkčnost řadiče mezipaměti. Níže jsou uvedeny pozorované zkušební statistiky:

  • Všechny signály čtení/zápisu Miss and Hit byly generovány správně.
  • Všechny operace čtení/zápisu dat byly úspěšné.
  • Nebyly zjištěny žádné problémy s nesoudržností/nekonzistencí dat.
  • Design byl úspěšně načasován pro Maxm. Taktovací frekvence provozu = 110 MHz na desce Xilinx Virtex-4 ML-403 (celý systém), 195 MHz pouze pro Cache Controller.
  • Blokové RAM byly odvozeny pro hlavní paměť. Všechna ostatní pole byla implementována na LUT.

Krok 4: Připojené soubory

K tomuto blogu jsou připojeny následující soubory:

  • Soubory. VHD Cache Controller, Cache Data Array, Main Memory System.
  • Testovací lavice.
  • Dokumentace k řadiči mezipaměti.

Poznámky:

  • Projděte si dokumentaci, abyste plně porozuměli zde uvedeným specifikacím řadiče mezipaměti.
  • Jakékoli změny v kódu jsou závislé na jiných modulech. Změny by tedy měly být provedeny uvážlivě. Věnujte pozornost všem komentářům a nadpisům, které jsem uvedl.
  • Pokud z nějakého důvodu nejsou blokové paměti RAM odvozeny pro hlavní paměť, SNÍŽTE velikost paměti, následované změnami šířek adresové sběrnice napříč soubory atd. Stejnou paměť lze tedy implementovat buď na LUT nebo na distribuovanou RAM. Tím ušetříte čas a prostředky směrování. Nebo přejděte na konkrétní dokumentaci FPGA, najděte kompatibilní kód pro Block RAM a podle toho upravte kód a použijte stejné specifikace šířky adresové sběrnice. Stejná technika pro Altera FPGA.

Doporučuje: