feat(L07): add addresses and memory card
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# L07 · Addresses and Memory
|
||||
|
||||
Karta przechodzi od wartości immediate do adresu bajtowego. Uczeń sprawdza
|
||||
`LUI/AUIPC`, implementuje mały RAM słowowy, a następnie łączy sumator adresu
|
||||
z pamięcią i jawną kontrolą wyrównania.
|
||||
|
||||
## Taski
|
||||
|
||||
| Task | PASS |
|
||||
| --- | --- |
|
||||
| `task01_upper_immediate` | `LUI=0x12345000`, `AUIPC=0x12345100` |
|
||||
| `task02_word_ram` | dwa niezależne słowa i odrzucony dostęp niewyrównany |
|
||||
| `task03_address_memory_path` | adres `0x2c`, zapis/odczyt `deadbeef`, fault dla `+2` |
|
||||
|
||||
```bash
|
||||
stemctl card use rv32i-asm L07
|
||||
stemctl test native-amd64 rv32i-asm L07 1
|
||||
stemctl test hazard3-sim rv32i-asm L07 2
|
||||
stemctl debug hazard3-sim rv32i-asm L07 3
|
||||
```
|
||||
|
||||
Model AMD64 i RTL są niezależne. `debug` generuje VCD. Wyniki należy zapisać
|
||||
w [answers/address-memory-evidence.md](answers/address-memory-evidence.md).
|
||||
|
||||
Inwarianty:
|
||||
|
||||
- `LUI` umieszcza `imm20` w bitach 31:12, a `AUIPC` dodaje tę wartość do PC;
|
||||
- adres pamięci jest adresem bajtowym, indeks RAM używa bitów `[5:2]`;
|
||||
- zapis następuje tylko dla aktywnego żądania wyrównanego do czterech bajtów;
|
||||
- niewyrównane żądanie ustawia `fault` i nie zmienia RAM;
|
||||
- odczyt jest kombinacyjny, zapis synchroniczny.
|
||||
|
||||
L08 użyje tej pamięci do obserwacji stosu wywołań i reguł ABI.
|
||||
Reference in New Issue
Block a user