This is an old revision of the document!


Simulator Hardware Interactiv de Memorie Cache

Introducere

  • Autor: Lăcraru Teodora-Ioana
  • Grupa: 331CA

Proiectul constă într-un dispozitiv hardware interactiv, construit în jurul microcontrolerului ATmega328P, care simulează în timp real funcționarea unei memorii cache de tip Direct Mapped cu 8 linii. Scopul instrumentului este pur didactic: transformarea unui concept abstract din arhitectura calculatoarelor într-o experiență tactilă și vizuală, permițând studenților să observe direct mecanismele de transfer al datelor între memoria RAM (simulată ca fiind lentă) și memoria cache (rapidă). Prin intermediul unei matrice de LED-uri, al unui ecran LCD și al feedback-ului sonor, utilizatorul poate “vedea” și “auzi” diferența dintre un HIT și un MISS, înțelegând astfel de ce ierarhia de memorie este o componentă esențială a oricărui sistem de calcul modern.

Descriere Generală

Sistemul funcționează pe principiul unei bucle de procesare interactive, folosind microcontrolerul ATmega328P ca unitate centrală de control.

Input: Utilizatorul introduce o adresă de memorie pe 8 biți (valori 0–255 în format decimal) prin consola serială (UART) de pe PC. Procesare și Decodificare: Microcontrolerul descompune adresa primită în două câmpuri: Index (3 biți, pentru selecția uneia dintre cele 8 linii de cache) și Tag (5 biți, pentru verificarea conținutului). Algoritmul verifică Valid Bit-ul liniei selectate și compară Tag-ul stocat cu cel solicitat. Clasificare: În cazul unui MISS, sistemul clasifică automat tipul erorii: Compulsory Miss (linie goală, prima accesare) sau Conflict Miss (linie ocupată, dar cu Tag diferit, specific cache-ului Direct Mapped). Pentru fiecare HIT, datele sunt servite imediat din cache fără înlocuire. Output și Feedback Vizual: Starea internă a cache-ului este vizualizată în timp real printr-o matrice de 24 LED-uri organizate în 3 rânduri × 8 coloane, controlate prin 3 shift registere 74HC595 conectate în daisy chain:

Rândul 1 (LED-uri verzi) — Valid Bit pentru fiecare dintre cele 8 linii Rândul 2 (LED-uri galbene) — bit 0 al Tag-ului stocat pe fiecare linie Rândul 3 (LED-uri galbene) — bit 1 al Tag-ului stocat pe fiecare linie

Tag-ul adresei curente este afișat în binar pe un LED Bar Graph cu 8 segmente, iar adresa solicitată, decodificarea (Index, Tag), tipul rezultatului (HIT / MISS Compulsory / MISS Conflict) și statisticile de performanță sunt afișate pe un ecran LCD 16×2 (I2C, prin expander PCF8574). Feedback Sonor: Un buzzer pasiv conectat pe un pin OCxA oferă feedback sonor diferențiat — ton înalt și scurt pentru HIT, ton mediu pentru Compulsory Miss și ton grav prelungit pentru Conflict Miss, permițând utilizatorului să recunoască instantaneu tipul accesului fără să privească ecranul. Statistici în timp real: După fiecare acces, sistemul recalculează Hit Rate-ul ca raport între accesele de tip HIT și totalul accesărilor, oferind o măsură cantitativă a eficienței cache-ului pentru tipul de adrese introduse de utilizator. Datele complete ale fiecărui acces (adresa în decimal și binar, Index, Tag, rezultat, Hit Rate cumulativ) sunt transmise simultan pe canalul UART, facilitând analiza comportamentului cache-ului în diferite scenarii (refolosire spațială, thrashing prin Conflict Miss, etc.).

Schema bloc a sistemului

Hardware Design

Lista de componente

  • Microcontroler: 1× Plăcuță de dezvoltare ATmega328P Xplained Mini
  • Logică de extensie pini: 3× Shift Register 74HC595 (conectate în daisy-chain pe magistrala SPI)
  • Vizualizare Valid Bits: 8× LED-uri verzi
  • Vizualizare Tag Bits: 16× LED-uri galbene (2 biți × 8 linii de cache)
  • Vizualizare date: 1× LED Bar Graph cu 8 segmente
  • Afișaj alfanumeric: 1× Ecran LCD 16×2 cu modul adaptor I2C (PCF8574)
  • Feedback sonor: 1× Buzzer pasiv (comandat prin PWM)
  • Control latență: 1× Potențiometru rotativ 10 kΩ (conectat la ADC)
  • Componente auxiliare: Rezistențe de limitare 220–330 Ω, rezistențe pull-up 4.7 kΩ pentru I2C, condensatori de decuplare, breadboard și fire de conexiune

Schema electrică

Aceasta este schema electrica, insa fara acel LED Bar Graph pentru ca nu era disponibil pe Tinkercad.

Software Design

  • Mediu de dezvoltare: PlatformIO.

Biblioteci și resurse folosite: Codul este scris în C bare-metal, prin accesarea directă a regiștrilor AVR, fără framework Arduino. Driverele pentru USART, TWI (I2C), shift registere 74HC595, buzzer (Timer1 CTC) și LCD HD44780 prin expander PCF8574 sunt implementate de la zero. Algoritmi și structuri implementate: Logica programului este structurată în funcții dedicate: decodificarea adresei (Index pe 3 biți, Tag pe 5 biți), căutarea în cache, actualizarea în caz de MISS, clasificarea tipului de MISS și actualizarea afișajelor. Cache-ul este reprezentat printr-o structură cu 8 intrări, fiecare conținând Valid Bit și Tag.

Bibliografie/Resurse

pm/prj2026/farhad_ali.gul/teodora.lacraru.1778611446.txt.gz · Last modified: 2026/05/12 21:44 by teodora.lacraru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0