Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:farhad_ali.gul:teodora.lacraru [2026/05/03 21:16]
teodora.lacraru [Descriere Generală]
pm:prj2026:farhad_ali.gul:teodora.lacraru [2026/05/20 15:27] (current)
teodora.lacraru [Descriere Generală]
Line 13: Line 13:
  
 ===== Descriere Generală ===== ===== Descriere Generală =====
- 
 Sistemul funcționează pe principiul unei bucle de procesare interactive,​ folosind microcontrolerul ATmega328P ca unitate centrală de control. 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 conectate în daisy chain:
 +    * Coloana 1 (LED-uri verzi): Valid Bit pentru fiecare dintre cele 8 linii
 +    * Coaloana 2 (LED-uri galbene): bit 0 al Tag-ului stocat pe fiecare linie
 +    * Coloana 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.
 +  * **Feedback Sonor:** Un buzzer pasiv oferă feedback sonor diferențiat,​ ton înalt și scurt pentru HIT, ton mediu pentru Compulsory Miss și ton grav prelungit pentru Conflict Miss.
 +  * **Statistici în timp real:** După fiecare acces, sistemul recalculează Hit Rate-ul ca raport între accesele de tip HIT și totalul accesărilor. 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.
  
-  * **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). +{{:​pm:​prj2026:​farhad_ali.gul:​schema_bloc.png.jpeg?​600|Schema bloc a sistemului}}
-  * **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. +
- +
-{{ :pm:prj2025{{:​pm:​prj2026:​farhad_ali.gul:​schema_bloc.png.jpeg?​200|}} +
 ===== Hardware Design ===== ===== Hardware Design =====
  
Line 39: Line 41:
  
 ==== Schema electrică ==== ==== Schema electrică ====
 +Aceasta este schema electrica, insa fara acel LED Bar Graph pentru ca nu era disponibil pe Tinkercad. 
 +{{:​pm:​prj2026:​farhad_ali.gul:​schema_cache.jpeg?​400|}}
 ===== Software Design ===== ===== Software Design =====
  
-  * **Mediu de dezvoltare:​** PlatformIO ​(cu framework-ul Arduino) sau Microchip Studio+  * **Mediu de dezvoltare:​** PlatformIO. 
-  * **Biblioteci și resurse folosite:​** ​Configurarea timer-elor pentru PWMa 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''​+  * **Biblioteci și resurse folosite:​** ​Codul este scris în C, prin accesarea directă a regiștrilor AVR. 
-  * **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 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 BitTag și data asociată. Detaliile concrete privind structura programului ​(eventual sub forma unui Automat ​cu Stări Finitevor fi adăugate pe parcursul implementării+  * **Algoritmi și structuri implementate:​** Logica programului ​este structurată în funcțiidecodificarea adresei (Index ​pe 3 bițiTag 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
 +  * **Flux de execuție:​** La pornire, microcontrolerul inițializează toate perifericele (USART, I2C, LCD, shift registere, buzzer, bar graph) ​și golește cache-ul adica toate Valid Bits pe 0. În bucla principală, programul așteaptă primirea unei adrese de la utilizator prin UARTCând utilizatorul tastează o valoare decimală ​(0–255) și apasă Enter, se execută următoarea secvență:​ 
 +    - Adresa este parsată și validată; valorile invalide sunt respinse ​cu un mesaj de eroare. 
 +    - Adresa este descompusă prin operații pe biți: Index = ''​adresa & 0x07'',​ Tag = ''​(adresa >> 3& 0x1F''​. 
 +    - Se verifică linia cache indicată de Index: dacă Valid Bit-ul este 0 se generează un **Compulsory Miss** și linia este populată; dacă Valid Bit-ul este 1 și Tag-urile coincid se înregistrează un **HIT**; altfel, un **Conflict Miss** declanșează înlocuirea Tag-ului. 
 +    - Contorul de HIT-uri și totalul accesărilor sunt actualizate,​ iar Hit Rate-ul este recalculat ca raport procentual. 
 +    - Starea cache-ului este reconstruită într-un pattern de 24 biți și transmisă către cele 3 shift registere printr-o singură operație în daisy chain, actualizând simultan toate LED-urile. În paralel, Tag-ul curent este afișat în binar pe LED Bar Graph, iar LCD-ul afișează adresa, decodificarea și statisticile
 +    - Buzzer-ul emite un ton specific tipului de rezultat (HIT scurt și înalt, Compulsory Miss mediu, Conflict Miss grav și prelungit). 
 +    - După încheierea sunetului, programul revine la așteptarea unei noi adrese.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2026/farhad_ali.gul/teodora.lacraru.1777832171.txt.gz · Last modified: 2026/05/03 21:16 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