Návrh počítačových systémů (INP) – zhodnocení
By Bumerang
Pokračování předmětu Návrh číslicových systémů (INC) z minulého semestru. Povznesli jsme se opět o něco výše nad dráty, ale pro mnoho kolegů to nebylo opět o nic lepší než jenom další HW-WTF-OMG předmět. Probíralo se, z jakých součástí je tvořen procesor, přičemž každé téma bylo rozebráno. Dozvěděli jsme se například to, jak jsou implementovány (nadrátovány) vyrovnávací paměti, jak fungují sběrnice, ALU, poznali jsme kódy pro reprezentaci dat a algoritmy používané pro „počítání“ v ALU a FPU.
Minulý semestr jsem měl INC rád a šlo mi prakticky samo – to samé by se dalo říct i o INP. Rád si „rozšiřuji obzory“ tak, že poznávám, jak to ve skutečnosti běhá na těch tištěných obvodech. Člověku se tím boří magický závoj okolo fungování počítačů. Jasně, asi většina z nás by dokázala navrhnout obvod pro sčítání dvou čísel, takže tady magie není. Ale vždycky jsem byl fascinován tím, jaké kouzelné věci (a jak rychle!) umí například moje kalkulačka. No a v tomto předmětu jsem se právě dozvěděl to, jak ta maličká kalkulačka dokáže vyplivnout například sinus tak rychle. To ovšem nebyla jediná věc, kterou mě tu naučili. Pověděli jsme si i něco o pamětech obecně, sběrnicích, spolehlivosti a v závěru i něco o paralelních systémech. Na úplném konci jsme se i úplně letmo dotkli výpočtů na GPU.
Projekty
V předmětu se zpracovávaly dva projekty, oba na dříve proklínaném FITkitu ve VHDL. Proč říkám „dříve“? Většina dřívějšího klení směřovala na tento přístroj kvůli tomu, že pokud jste chtěli projekt zpracovávat na svém stroji, museli jste podstoupit doslova martyrium, abyste si nainstalovali všechny potřebné nástroje. Nešlo jenom o časové hledisko, programy často nefungovaly tak jak měly či vyváděly divočiny. Od minulého roku jsou však veškeré tyto argumenty liché, neboť máme k dispozici obraz virtuálního stroje, tudíž na zprovoznění všech programovacích nástrojů pro FITkit vám nyní stačí několikrát kliknout a jako bonus si nezasviníte svůj počítač dalším elektro-pornem. I přesto ještě na FITkit směřovaly vlny nadávek – ale ty už pramenily spíše z jeho vlastností (bug or feature?) a schopnosti chovat se nepředvídatelně.
V prvním projektu bylo třeba rozsvítit maticový display 8×8 bodů vašimi iniciálami. To znělo relativně jednoduše, ale tentokrát jsme nedostali víc než 3 řádky podpůrného kódu, vše jsme museli naprogramovat sami. Programovat něco pro FITkit úplně od nuly – hardcore shit, říkáte? Ale kdeže, s pomocí demonstračních cvičení a ukázek kódu ve VHDL se to dalo krásně stihnout za odpoledne. Příjemným benefitem tohoto projektu bylo, že jste stvořili něco, co na vás jenom nečučelo z konzole, ale doslova zářilo do světa vaše jméno.
Pro druhý projekt jsme pak měli k dispozici podpůrné soubory a pomocí nich jsme měli FITkit proměnit ve stroj interpretující jazyk BrainFuck. To je velice minimalistický (má jenom 8 příkazů) jazyk, na který jsem nejdříve koukal jako krocan z trouby, ale posléze jsem si ho velice oblíbil. Tento projekt jsem dělal dohromady dva dny, ale to bylo hlavně díky mojí neschopnosti. Téměř celý den jsem psal daný program, ale i po dlouhých hodinách ladění jsem ani za zlaté prase nemohl přijít na to, proč občas vypisuje jakýsi bordel. Nad ránem jsem to zabalil a šel spát, pln nenaplněné touhy a frustrace. Druhý den jsem učinil asi ten nejlepší krok, co jsem mohl – celý projekt jsem nenávratně smazal. Začal jsem ho psát znovu a díky tomu, že moje programovací schopnosti ve VHDL vzrostly díky předchozímu nekonečnému ladění asi o tři vagóny, napsal jsem celý projekt za hodinu a fungoval hned napoprvé tak jak měl. Už nikdy nezjistím, kde jsem měl předtím chybu. Ale jedno vím jistě – byla pěkně zkurvená.
Testy
Půlsemestrální zkouška se psala ve dvou dnech (nejdříve BIA a potom BIB) a dle většiny byl značný rozdíl v její obtížnosti. Já naštěstí vyfasoval tu lepší skupinu (snad poprvé na FITu), takže jsem měl zadání s rozumnými otázkami, které nezkoumaly nějaké detaily. O druhé skupině se to z mého hlediska říct nedalo.
Co se týče semestrální zkoušky, tak tam jsem pro změnu vyfasoval pro mě osobně tu horší skupinu, i když si myslím, že zde rozdíl nebyl tak markantní. (Ale u souseda je tráva vždycky kozatější a holky zelenější.) Otázky mi úplně nesedly, sám jsem se učil trochu jiné věci, nedával jsem takový důraz na schémata. Dalším „problémem“ pak byla otázka, která spočívala prakticky jenom v dosazení do vzorce (který tam byl napsaný) a jeho upravení. Tento příklad jsem počítal snad čtyřikrát, vždycky jsem při postupném upravování tu zapomněl mocninu, tu obrátil znaménka, zkrátka to byla pro mě jedna velká bolest. Pro budoucí generace – tato semestrálka byla kompletně odlišná od těch z minulých let.
Ačkoliv na tento předmět jsem se cítil připravený ze všech zkoušek nejlépe, nakonec to dopadlo pouze průměrně. Příště bych svou přípravu zaměřil trochu jinak – naučil bych se těch několik vzorců, které se objevily v přednáškách, naučil bych se schémata a pořádně se zaměřil na poslední dvě přednášky. Celkově tento předmět však hodnotím pozitivně – rozšířil mi obzory, objasnil mi pár „magických“ věcí a dal mi možnost poručit FITkitu aby vysvítil celému světu moje iniciály. A to se vyplatí!
Na závěr si dovolím doporučit jeden velice kvalitně zpracovaný dokument, který vám přiblíží problematiku počítačových pamětí: What Every Programmer Should Know About Memory.