This is an old revision of the document!
Simulator Hardware Interactiv de Memorie Cache
Introducere
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 (8 biți) prin consola serială (UART) de pe PC. În paralel, un potențiometru conectat la un canal ADC permite ajustarea continuă a latenței simulate a memoriei RAM (între 0 și 4 secunde).
Procesare și Decodificare: Microcontrolerul descompune adresa primită în două câmpuri: Index (pentru selecția uneia dintre cele 8 linii de cache) și Tag (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), Conflict Miss (linie ocupată, dar cu Tag diferit) sau Capacity Miss (rata de înlocuire foarte mare, setul de lucru depășește cele 8 linii).
Output și Feedback: Rezultatul este afișat simultan pe mai multe canale: starea internă a cache-ului (Valid Bit-uri și Tag-uri) este vizualizată printr-o matrice de LED-uri controlată prin shift registere (SPI), datele extrase apar în binar pe un LED Bar Graph, iar adresa solicitată, rezultatul HIT/MISS și statisticile de performanță (Hit Rate) sunt afișate pe un ecran LCD 16×2 (I2C). Un buzzer pasiv oferă feedback sonor diferențiat — ton înalt pentru HIT, ton grav pentru MISS — accentuând impactul psihologic al penalizării de cache.
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.
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ă
Software Design
Mediu de dezvoltare: PlatformIO.
Biblioteci și resurse folosite: Configurarea timer-elor pentru PWM, a magistralei SPI pentru shift registere și a magistralei I2C (TWI) pentru LCD se va realiza prin accesarea directă a regiștrilor AVR. Pentru LCD se va folosi o bibliotecă minimală de tip LiquidCrystal_I2C.
Algoritmi și structuri implementate: Logica principală a programului va fi structurată în jurul unui set de funcții dedicate — decodificarea adresei (extragere Index și Tag), funcția de căutare în cache (lookup), funcția de actualizare a cache-ului în caz de MISS, funcția de clasificare a tipului de MISS și funcția de actualizare a afișajelor (LCD + matrice LED-uri prin SPI). Cache-ul va fi reprezentat intern printr-o structură de date cu 8 intrări, fiecare conținând Valid Bit, Tag și data asociată. Detaliile concrete privind structura programului (eventual sub forma unui Automat cu Stări Finite) vor fi adăugate pe parcursul implementării.
Bibliografie/Resurse