Celem seminarium jest pogłębienie znajomości tematów omawianych na wykładzie
“Architektury Systemów Komputerowych” oraz zapoznanie się zagadnieniami
pobocznymi.
****
Przewiduje się, że student wygłosi prelekcję na jeden z niżej wymienionych
tematów:
* elementy mikroarchitektury współczesnych procesorów:
* techniki przewidywania skoków,
* spekulatywne metody wykonywania instrukcji,
* integracja translacji adresów z pamięcią podręczną,
* obsługa przerwań,
* sprzętowe wątki.
* modele pamięci w systemach wieloprocesorowych,
* sprzętowe wsparcie dla wirtualizacji,
* techniki generowania wydajnego kodu maszynowego,
* analiza bieżących i historycznych systemów komputerowych i mikroarchitektur,
* porównanie architektur zestawu instrukcji: CISC, RISC, VLIW,
* architektura [Mill](http://millcomputing.com/docs/),
* wydajne techniki symulacji sprzętu,
* języki opisu sprzętu i architektury.
****
Dodatkowo student będzie musiał wykonać pracę programistyczną polegającą na:
* naprawieniu / modyfikacji / rozszerzeniu wybranego symulatora architektury MIPS,
* implementacji procesora MIPS w języku Verilog / VHDL,
* zaprogramowaniu symulatora MIPS na poziomie mikroarchitektury,
* zbieraniu informacji dot. wykonania programu z użyciem narzędzia [Pin](https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool).
****
W zależności od stopnia skomplikowania pracy studenci będą mogli organizować
się w zespoły.
## Materiały:
* [Computer Architecture: A Quantitative Approach](http://booksite.elsevier.com/9780123838728/)
* [Memory Systems: Cache, DRAM, Disks](http://booksite.elsevier.com/9780123797513/)
* [Modern Processor Design](http://highered.mcgraw-hill.com/sites/0070570647/)