This shows you the differences between two versions of the page.
|
soc:laboratoare:08 [2025/05/14 18:56] mihai_catalin.stan |
soc:laboratoare:08 [2026/05/05 20:49] (current) mihai_catalin.stan Header issue |
||
|---|---|---|---|
| Line 15: | Line 15: | ||
| * Flags | * Flags | ||
| - | Pentru a vedea cum se unesc aceste module și cum interacționează între ele, avem următorul schematic: | + | Pentru a vedea cum se unesc aceste module și cum interacționează între ele, avem următoarea schemă: |
| {{ :soc:laboratoare:08:sap-2-block.png?750 | }} | {{ :soc:laboratoare:08:sap-2-block.png?750 | }} | ||
| Line 111: | Line 111: | ||
| În comportamentul acestui modul puteți observa două registre importante: MAR (Memory Address Register) și MDR (Memory Data Register), ce vor reține adresa din memorie de la care citim/scriem, respectiv datele pe care le scriem în memorie sau citim din memorie. | În comportamentul acestui modul puteți observa două registre importante: MAR (Memory Address Register) și MDR (Memory Data Register), ce vor reține adresa din memorie de la care citim/scriem, respectiv datele pe care le scriem în memorie sau citim din memorie. | ||
| - | Un ultim aspect important este faptul că memoria permite apelul de funcții - dar nu și recursivitate - datorită ultimelor două adrese din memorie 0xFFFF si 0xFFFE ce pot memora valoarea PC-ului la intrarea într-o funcție (call) și restituirea acestuia la întoarcerea dintr-un astfel de apel (ret). | + | Un ultim aspect important este faptul că memoria permite apelul de funcții - dar doar una la un moment dat, fără recursivitate - datorită ultimelor două adrese din memorie 0xFFFF si 0xFFFE ce pot memora valoarea PC-ului la intrarea într-o funcție (call) și restituirea acestuia la întoarcerea dintr-un astfel de apel (ret). |
| <code verilog> | <code verilog> | ||
| Line 149: | Line 149: | ||
| În SOC-1, fiecare instrucțiune este reprezentată pe 8 biți, iar execuția acesteia se desfășoară în mai multe etape. | În SOC-1, fiecare instrucțiune este reprezentată pe 8 biți, iar execuția acesteia se desfășoară în mai multe etape. | ||
| - | Etapele executării unei instrucțiuni | + | == Etapele executării unei instrucțiuni == |
| Orice procesor poate avea un ciclu de prelucrare a instrucțiunilor diferit, în funcție de ISA-ul pe care îl implementează, însă toate vor urma următoarea structură: | Orice procesor poate avea un ciclu de prelucrare a instrucțiunilor diferit, în funcție de ISA-ul pe care îl implementează, însă toate vor urma următoarea structură: | ||
| * IF (Instruction Fetch) - următoarea instrucțiune este adusă din memorie de la adresa către care pointează registrul Program Counter (PC) și este stocată în registrul Instruction Register (IR). PC este apoi incrementat pentru a pointa către următoarea instrucțiune de încărcat. | * IF (Instruction Fetch) - următoarea instrucțiune este adusă din memorie de la adresa către care pointează registrul Program Counter (PC) și este stocată în registrul Instruction Register (IR). PC este apoi incrementat pentru a pointa către următoarea instrucțiune de încărcat. | ||