Tartalomjegyzék:

Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben: 4 lépés
Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben: 4 lépés

Videó: Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben: 4 lépés

Videó: Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben: 4 lépés
Videó: 9. előadás MongoDB, séma tervezés, performancia kérdések (2017) 2024, November
Anonim
Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben
Egyszerű gyorsítótár -vezérlő tervezése VHDL -ben

Azért írom ezt a tanulságosat, mert kissé nehéznek találtam valamilyen referencia VHDL kódot megtanulni és elkezdeni a gyorsítótár -vezérlő tervezését. Tehát magam terveztem egy gyorsítótár -vezérlőt a semmiből, és sikeresen teszteltem az FPGA -n. Itt bemutattam egy egyszerű közvetlen leképezett gyorsítótár-vezérlőt, valamint egy teljes processzor-memória rendszert modelleztem a gyorsítótár-vezérlő teszteléséhez. Remélem, srácok hasznosnak találják ezt az utasítást, mint referenciát saját gyorsítótár -vezérlőinek tervezéséhez.

1. lépés: Specifikációk

Specifikációk
Specifikációk

Ezek a fő jellemzői a gyorsítótár -vezérlőnek, amelyet tervezünk:

  • Közvetlenül leképezett. (lépjen erre a linkre, ha Associative Mapped Cache Controllert keres)
  • Egy bankos, blokkoló gyorsítótár.
  • Írási találatok írási irányelvei.
  • No-Write kiosztás vagy Write Around Policy on Write misses.
  • Nincs íráspuffer vagy más optimalizálás.
  • A Tag Array be van építve.

Ezen kívül tervezünk egy gyorsítótárat és egy fő memóriarendszert is.

A gyorsítótár alapértelmezett (konfigurálható) specifikációi:

  • 256 bájtos egyszeres gyorsítótár.
  • 16 gyorsítótár sor, mindegyik gyorsítótár (blokk) = 16 bájt.

A fő memória specifikációi:

  • Szinkron olvasási/írási memória.
  • Multi -banked Interleaved Memory - négy memóriabank.
  • Minden bank mérete = 1 kB. Ezért a teljes méret = 4 kB.
  • Word (4 bájt) címezhető memória 10 bites címbusszal.
  • Nagyobb sávszélesség olvasáshoz. Olvasási adatszélesség = 16 bájt egy óra alatt.
  • Írási adatok szélessége = 4 bájt.

MEGJEGYZÉS: nézze meg az újabb utasítást, ha 4 utas asszociatív gyorsítótár-vezérlőt keres

2. lépés: A teljes rendszer RTL nézete

A teljes rendszer RTL nézete
A teljes rendszer RTL nézete

A felső modul teljes RTL -ábrázolása az ábrán látható (a processzor kivételével). A buszok alapértelmezett paraméterei a következők:

  • Minden adatbusz 32 bites busz.
  • Címbusz = 32 bites busz (de a memória itt csak 10 bitet címezhet).
  • Adatblokk = 128 bit (széles sávszélességű busz olvasáshoz).
  • Minden alkatrészt ugyanaz az óra hajt.

3. lépés: A környezet tesztelése

A felső modult egy tesztpad segítségével tesztelték, amely egyszerűen egy nem csöves processzort modellez (mivel egy teljes processzor tervezése egyáltalán nem könnyű !!). A tesztpad gyakran generál olvasási/írási kéréseket a memóriába. Ez csúfolja a tipikus "Load" és "Store" utasításokat, amelyek minden processzor által végrehajtott programban gyakoriak. A teszteredmények sikeresen ellenőrizték a Cache Controller működését. Az alábbiakban a vizsgált statisztikák láthatók:

  • Minden olvasási/írási hiányzó és találati jel helyesen lett generálva.
  • Minden olvasási/írási művelet sikeres volt.
  • Nem észleltek adatkonkoherencia/következetlenségi problémákat.
  • A tervezést sikeresen ellenőrizték a Maxm -hez. Óra Működési frekvencia = 110 MHz Xilinx Virtex-4 ML-403 kártyán (teljes rendszer), 195 MHz csak a gyorsítótár-vezérlőnél.
  • A blokk -RAM -okat a fő memóriára következtették. Az összes többi tömb LUT -on valósult meg.

4. lépés: Csatolt fájlok

Ehhez a bloghoz a következő fájlok vannak csatolva:

  • . HD fájlok a Cache Controller, Cache Data Array, Main Memory System.
  • Próbapad.
  • Dokumentáció a Cache Controllerről.

Megjegyzések:

  • Olvassa el a dokumentációt, hogy teljes mértékben megértse az itt bemutatott gyorsítótár -vezérlő specifikációit.
  • A kód bármilyen módosítása más moduloktól függ. Tehát a változtatásokat megfontoltan kell végrehajtani. Figyeljen az összes megjegyzésre és fejlécre, amelyeket adtam.
  • Ha valamilyen oknál fogva a blokk -RAM -ok nem következtetnek a fő memóriára, CSÖKKENTJE a memória méretét, majd a címsín szélességének változása a fájlokban és így tovább. Így ugyanaz a memória megvalósítható akár LUT -okon, akár elosztott RAM -on. Ez időt és erőforrásokat takarít meg. Vagy keresse fel az adott FPGA dokumentációt, és keresse meg a kompatibilis kódot a RAM blokkolásához, és ennek megfelelően szerkessze a kódot, és használja ugyanazokat a címbusz -szélességi előírásokat. Ugyanez a technika az Altera FPGA -knál.

Ajánlott: