Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Distanční výuka, organizace

V tuto chvíli trvá povinnost sledovat e-mail a pro případ, že nedorazí, tak sledovat fórum, minimálně vlákno Novinky / News. Zde byly uvedené odkazy na přednášky a úkoly pro samostudium. Tyto informace se nebudou opakovat na konzultacích (cvičeních). Na těch se projdou některé ukázky, které vyžadují interakci, a konkrétní dotazy na to, co nebylo pochopené. Obecnější dotazy pište do fóra k vhodně zvolenému tématu, pokud nebudou zodpovězené do vašeho cvičení, tak je můžete opakovat do “chatu” místnosti s odkazem na fórum, poté můžete otázku i odpověď přeformulovat i pro ostatní do fóra. Dotazy k výkladu a interakci v rámci cvičení formulujte do “chatu” místnosti a budou se probírat převážně v pořadí jejich zápisu.

Přednášky

Přednášky budou realizované formou nahrávek na YouTube. Odkazy na anglické verze prezentací a česky namluvená videa jsou přidaná na stránku českých přednášek kam budou přidané i další odkazy, jak budou k dispozici. K dispozici jsou i české prezentace z minulých let na celý semestr. Základní učebnice, která plně pokrývá minimálně první polovinu semestru, je Computer Organization and Design, The HW/SW Interface ve čtvrté MIPS edici, autoři profesor Patterson a Hennessy. Dostupná je pro studenty ČVUT v elektronické formě přes službu https://dialog.cvut.cz/. Pro přístup zvolte v poli Prosím, vyberte si svou univerzitu: volbu České vysoké učení technické, vyplňte své přihlašovací údaje a potvrďte je. Potom zvolte zdroj Knovel a zadejte jména autorů a knihu, omezte seznam vyhledávání jen na knihy (nejdříve Book/Text a potom Book) a můžete číst.

Konzultace - Cvičení

Týdenní harmonogram schůzek ‒ v pondělí bude otevřená místnost jak v 11:00 tak i v 16:15 a podle možností někdo z nás zodpoví dotazy, které se objeví do 15 minut od otevření v “chatu”. Právě otevřené místnosti jsou přístupné z vašeho profilu na Brute. V týdnu podle vašeho zápisu do jednotlivých cvičení budou v čase podle rozvrhu otevírané místnosti pro cvičení po skupinách. Na základě diskuzí s dalšími katedrami budeme dodržovat svátky a přesuny podle harmonogramu. Komu čas nevyhovuje, tak si musí dohodnout se studijním oddělením oficiální přeřazení do jiné skupiny. Výjimky nejsme schopní technicky zajistit. Uvažuji o tom, že bych jako záchranu jedno páteční cvičení otevíral všem, ale přítomnost dalších studentů by nesměla být na úkor naplánované skupiny.

Aktuální probíraná látka

Práce na semestrální práci, příprava na zkoušku. Konzultace jsou již jen na základě dohody.

Brute Big Blue Button

Pro interaktivní výuku a schůzky se bude používat systém Big Blue Button integrovaný do Brute. Návod pro studenty zde BigBlueButton overview for viewers (students).

Git

Zdrojové kódy ukázek z přednášek i základy pro vlastní experimenty budou publikované ve volně dostupném repozitáři https://gitlab.fel.cvut.cz/b35apo/stud-support. Kód ke kontrole a komentování cvičícími pak bude předávaný přes osobní GIT repozitář, s tím že URL k danému souboru, adresáři zašlete e-mailem dohromady s dotazem nebo žádostí o ohodnocení svému cvičícímu.

Zápočet a zkouška

Základní kontrolou vašeho pochopení látky budou již od začátku semestru naplánované čtyři domácí úkoly, semestrální práce a zkouška. Aktuální předpokládané termíny a organizace zkoušek jsou diskutované ve vláknu Zkouška - termíny a organizace. Forma, termíny i umístění se může změnit podle aktuálního stavu situace.

Archivované informace

Vypuštění 2 týdnů

Probíraná látka v týdnu od 23. - 27. března ‒ cvičení 4. vyrovnávací paměť (cache), doporučení implementovat bubble-sort (bonusový bod při jeho uložení do osobního GITu a úspěšného splnění testů na serveru, aktuální seznam úspěšných implementací s počty spotřebovaných cyklů CPU). Nápověda, zjednodušené cvičné úkoly v příslušném vlákně na fóru. Podrobný popis a plná verze úkolů zde ‒ cvičení 4. Po vypracování bodů potvrzení pochopení tématu hlasováním. Další týdny se bude postupovat podle jednotlivých cvičení a ke každému bude vytvořené vlákno ve fóru a vaší povinností bude potvrdit hlasováním výsledek vaší práce. Podle pokynů referenta katedry je týden od 23.3. do 29.3. považovaný za čtvrtý (4.) výukový týden. Tedy na současné téma (cache) a potvrzení jeho pochopení máte čas do 29.3. Pak bude hlasování k tématu uzavřeno a jeho potvrzení bude sloužit i jako doklad o docházce na cvičení. Odpověď nerozumím, zaškrtněte až tehdy, pokud se v daném týdnu nebudete tématem již dále zabývat. Ostatní možnosti zaškrtávejte co nejdříve ať máme zpětnou vazbu o vašem postupu.

Vzhledem k oficiálnímu určení, že se minulé dva týdny do semestru nepočítají, tak jsme se rozhodli o prodloužení termínu pro odevzdání prvního úkolu o týden.

Bubble-sort a případně další odevzdávané práce v assembleru

Pro zvládnutí předávání a hodnocení většího objemu prací hledáme způsob, jak maximálně jak pro studenty tak pro cvičící interakci zautomatizovat. V případě kontroly a zpětné vazby k implementaci algoritmu bubble-sort budeme předpokládat, že se implementace nachází v souboru work/bubble-sort/bubble-sort.S vašeho repozitáře. Implementace musí direktivou .globl exportovat symboly array_size a array_start, přitom za symbolem array_start nesmí být v následujících 200 bytech žádná data nebo kód, jejichž přepsání by mělo negativní vliv na běh programu. Testovací program nahraje od adresy array_start testovací sadu dat, do slova na adrese array_size vyplní počet prvků, program je spuštěný a po zastavení na instrukci break dojde k vyzvednutí dat z adresy array_start. V repozitáři stud-support je připravená šablona projektu (seminaries/qtmips/buble-sort) a v tomto adresáři šablona work/bubble-sort/bubble-sort.S vlastní implementace. Soubor a případně i ostatní soubory zkopírujte pod správným jménem do adresáře work/bubble-sort vašeho repozitáře. Veškerý vývoj lze provést s využitím interního assembleru. Pokud chcete provádět testování tak, jak jsme schopní ho zautomatizovat, tak je potřeba externí mips-elf compiler. S interním se zatím neumíme při nahrávání odkázat na správné adresy. Při zápisu adres absolutními hodnotami lze testovat i vnitřním assemblerem

qtmips_cli --dump-cycles --asm bubble-sort.S --load-range 0x12340,array_size.in --load-range 0x12344,array_data.in --dump-range 0x12344,60,array_data.out
Automatický systém zjišťuje každých 15 minut v každém repozitáři, jestli se objevila nová verze zdrojového kódu. Pokud ano, provede testy a zapíše výsledky do souboru pojmenovaného podle přihlašovacího jména do adresáře http://pisa-virt.felk.cvut.cz/apo/bubble-sort-ci/.

Optimalizace kódu a návrhu cache

Testovací systém předpokládá, že se v souboru work/apo-sort/apo-sort.S vašeho repozitáře nachází třídící algoritmus. Implementace musí direktivou .globl exportovat symboly array_size a array_start, přitom za symbolem array_start nesmí být v následujících 200 bytech žádná data nebo kód, jejichž přepsání by mělo negativní vliv na běh programu. Testovací program nahraje od adresy array_start testovací sadu dat, do slova na adrese array_size vyplní počet prvků, program je spuštěný a po zastavení na instrukci break dojde k vyzvednutí dat z adresy array_start. V repozitáři stud-support je připravená šablona projektu (seminaries/qtmips/apo-sort) a v tomto adresáři šablona work/ao-sort/apo-sort.S vlastní implementace. Soubor a případně i ostatní soubory zkopírujte pod správným jménem do adresáře work/apo-sort vašeho repozitáře. Veškerý vývoj lze provést s využitím interního assembleru. Při testování je procesor natavený na volbu No pipeline no cache (to je využívá se již delay slot, qtmips_cli nenabízí, zatím, parametr na jeho zakázání).

Parametry paměti cache se nastavují v souboru work/apo-sort/d-cache-template.par ve formátu

policy,sets,words_in_block,ways,write_method
například
lru,1,1,1,wb
Latence prvního přístupu do hlavní paměti je nastavena na 10 cyklů, při sekvenčním přístupu je nastavená hodnota burst na 2 (ve vlastním výpočtu jsem nalezl drobnou chybu v korekci času přístupů při použití burst, můžete jí zkusit popsat, první dostane bod).

Pokud chcete provádět testování tak, jak jsme schopní ho zautomatizovat, tak je potřeba externí mips-elf compiler. S interním se zatím neumíme při nahrávání odkázat na správné adresy. Při zápisu adres absolutními hodnotami lze testovat i vnitřním assemblerem

qtmips_cli --dump-cycles --dump-cache-stats --d-cache lru,1,2,2,wb --read-time 10 --write-time 10 --burst-time 2 --asm apo-sort.S --load-range 0x12340,array_size.in --load-range 0x12344,array_data.in --dump-range 0x12344,60,array_data.out

Automatický systém zjišťuje každých 15 minut v každém repozitáři, jestli se objevila nová verze zdrojového kódu. Pokud ano, provede testy a zapíše výsledky do souboru pojmenovaného podle přihlašovacího jména do adresáře http://pisa-virt.felk.cvut.cz/apo/apo-sort-ci/.

Vyřešení/eliminace datových hazardů přizpůsobením/optimalizací kódu pro nestandardní MIPS CPU

Implementovat Fibonacciho posloupnost pro CPU bez hazard unit (fibo-hazards). Kód se odevzdává zasláním do osobního GITu. Aktuální seznam (informace o chybách v individuálním logu v adresáři).

courses/b35apo/distedu/start.txt · Last modified: 2020/06/02 23:29 by pisa