1. neobvezna domača naloga - MiMo model CPE
Na predavanjih in vajah smo predstavili zgradbo in delovanje mikroprogramirane CPE - poimenovali smo jo MiMo CPE v1 (Mikroprogramiran Model CPE). Celotna distribucija in vsi spremljajoči dokumenti so objavljeni v poglavju s predavanji. Hkrati pa nastaja tudi nekaj cevovodnih različic MiMo modela (imenujemo jih v2.x), ki nudijo kar nekaj zanimivih izzivov in jih lahko rešujete tudi namesto obveznega dela 1. domače naloge - kot t.i. Mini seminar. Najbolje, da se pred pričetkom dogovorimo o ideji in vsebini dela.
Nekaj idej za razširitve obstoječega modela CPE - MiMo v1:
- dodajte implementacije bolj kompleksnih ukazov (npr. mehanizem za klice podprogramov, morda celo gnezdenje, sklad, prekinitve)
- lahko dodate kakšen element tudi v Logisim-u in ga uporabite v vašem programu (recimo priklop in prižiganje LED diode, uporaba Terminala, prikazovalnik FB z višjo ločljivostjo ali več vzporednih).
- lahko dodate strojni ukaz, ki še ni podprt s strani zbirnika. V tem primeru seveda morate popraviti tudi zbirnik, ki je napisan kot Perl skripta (objavljen je tudi zbirnik v Pythonu), da ga bo pravilno prevedel v strojni jezik (predvsem operacijsko kodo in registre oz. operande).
- lahko naredite tudi zbirni jezik bolj podoben ARMovemu, morda kaj spremenite tudi v samem modelu, da bi se lahko delovanju ARM-a še bolje približali (npr. dolžina registrov, vpliv na zastavice, pogojno izvajanje ukazov, različno dolgi pomnilniški operandi, razširjanje do polne dolžine v registrih, itd...). Lahko tudi opravite analizo in opišete tiste poglavitne razlike, ki nam otežujejo implementacijo arhitekture ARM na MiMo organizacijskem modelu CPE.
- lahko sprogramirate mikro-zbirnik ali zbirnik v drugih programskih jezikih - npr. Pythonu. Za osnovo lahko uporabite obstoječa programa, napisana v Perlu.
- lahko naredite kakšen korak v smeri cevovodne implementacije CPE. Pri predavanjih smo naredili osnovno shemo cevovodne CPE s 5 stopnjami. Lahko poskusite z enostavnejšo realizacijo (manjša podmnožica ukazov), ki postavi osnovne stopnje.
- lahko dodate kakšno zanimivo vhodno/izhodno napravo z registri, preko katerih krmilimo njeno delovanje. Zgledujete se lahko tudi po realizacijah PIO ali GPIO priključkov ali drugih naprav pri FRI-SMS ali STM32.
Nekaj idej se nahaja tudi na Wiki strani :
https://ucilnica.fri.uni-lj.si/mod/wiki/view.php?pageid=348
Kar nekaj primerov pa imate že v MiMo v1 distribuciji.
Nekaj idej za dopolnitve/razširitve/meritve cevovodnih različic modela CPE - MiMo v2.x:
- vse različice so še v piljenju podrobnosti, zato bo vaša pomoč neprecenljiva. Lahko preizkušate delovanje, dopolnjujete/spreminjate zgradbo, dodajate predikcijske metode ali druge izboljšave in merite njihov učinek s preizkusnimi programi.
- lahko naredite tudi svoje različice modela in pripravite vse vsebine za njihovo uporabo.
Pri delu se lahko se združite tudi v skupine. Seveda se v tem primeru poskuša oceniti prispevek vsakega posameznika. V tem primeru naj bodo iz poročila jasni prispevki vsakega člana - opišite to v zaključnem delu poročila, kjer dodajte tudi opis poteka dela v skupini.
Seveda lahko naredite tudi karkoli po lastni ideji oziroma zamisli. Rešitve nalog oddajte v obliki poročil v PDF ali kateremkoli objavljivem formatu. Pri tem poročilo oblikujte v obliko predstavitve, ki se lahko objavi na spletu. Po možnosti dodajte tudi vizualne vsebine s prikazi delovanja. Vsebine vseh pomembnejših datotek naj bodo v prilogi poročila in oddanem .zip arhivu.
Dodatno delo oziroma izvrstnost rešitev bo nagrajeno in upoštevano pri končni oceni, lahko tudi v celoti nadomesti obvezni del 1. domače naloge.
Z oddajo domače naloge jamčite vaše izvirno avtorstvo. Vso zunanjo pomoč (viri,...) navedite v poročilu in referencah. Po možnosti vsebine objavite na katerem od javnih portalov (Youtube, Github, BitBucket, GitBook, Wordpress, ...).
Seveda vam z veseljem pomagam pri vašem delu, zato vprašajte in pridite na diskusijo.