Celem projektu jest praktyczna nauka architektur komputerów poprzez ich implementację w formie umożliwiającej syntezę na układy FPGA.
W ramach projektu powstaje rdzeń o nazwie [Coreblocks](https://github.com/kuznia-rdzeni/coreblocks/), implementujący zestaw instrukcji [RISC-V](https://docs.riscv.org/reference/isa/unpriv/unpriv-index.html) (RV32I) w mikroarchitekturze out-of-order. Implementacja ma w założeniu modularny charakter "generatora rdzeni", umożliwiający dodawanie, rekonfigurację i wymianę elementów składowych rdzenia bez głębokich zmian w kodzie.
Dalszymi celami projektu są, między innymi:
* Implementacja [instrukcji uprzywilejowanych](https://docs.riscv.org/reference/isa/priv/priv-index.html) oraz port [OpenSBI](https://github.com/riscv-software-src/opensbi).
* Implementacja efektywnej jednostki load/store działającej zgodnie z dostępnymi w RISC-V modelami pamięci (do wyboru RVWMO i TSO).
* Implementacja jednostki obliczeń zmiennoprzecinkowych.
* Implementacja i eksperymenty z różnymi rodzajami predyktorów skoków, pamięci cache, itp.
* Implementacja wielordzeniowości, synchronizacji cache, itp.
* Opracowanie metodyki automatycznego testowania umożliwiającej szybkie wychwytywanie niezgodności ze specyfikacją oraz regresji.
* Refactoring istniejących implementacji celem zmniejszenia koncepcyjnej złożoności kodu.
Długoterminowym celem projektu jest uruchomienie na zaimplementowanym rdzeniu systemu operacyjnego Linux w rozsądnie pełnej konfiguracji.
Praca nad projektem będzie miała charakter zespołowy. Student, po przydzieleniu zadania, powinien zapoznać się z wybraną tematyką, ustalić koncepcję implementacji oraz zaprezentować i przedyskutować ją podczas spotkania projektowego. Opracowany kod oraz dokumentacja projektu będzie podlegać recenzji ze strony prowadzącego oraz innych studentów.
Przedmiot zalicza wymaganie projektu zespołowego. Można uczestniczyć w nim wielokrotnie.