Files
lab-rv32i-asm-load-store/README.md
T

1.2 KiB

L09 · Load and Store Semantics

Karta domyka tor pamięci RV32I. Uczeń tworzy maski linii bajtowych dla SB/SH/SW, wykonuje sign/zero extension dla LB/LH/LW/LBU/LHU, a na końcu łączy obie ścieżki w jednostce load/store z małym RAM.

Taski

Task PASS
task01_store_lanes maski 1000, 1100, 1111 i fault dla niewyrównanego SH
task02_load_extend poprawne LB/LBU oraz LH/LHU z jednego słowa
task03_load_store_unit po SW i SB +1: słowo 1122aa44, LB/LBU i fault LW +2
stemctl card use rv32i-asm L09
stemctl test native-amd64 rv32i-asm L09 1
stemctl test hazard3-sim rv32i-asm L09 2
stemctl debug hazard3-sim rv32i-asm L09 3

Model AMD64 i RTL są niezależne. debug generuje VCD. Wyniki należy zapisać w answers/load-store-evidence.md.

Inwarianty:

  • RV32I jest little-endian: offset 0 wskazuje bity 7:0 słowa;
  • SB zmienia jedną linię bajtową, SH dwie, SW cztery;
  • load signed replikuje bit znaku, load unsigned wstawia zera;
  • halfword wymaga adresu parzystego, word adresu podzielnego przez cztery;
  • fault zeruje maskę zapisu i nie modyfikuje RAM.

Po L09 uczeń ma wszystkie bloki potrzebne do spięcia minimalnego toru RV32I.