Zkouška 30.1.

Šeby at 2008-01-30 14:21:41

Jenom kopíruji e-mail od účastníka této zkoušky (doufám, že nebude vadit), aby se tady informace objevily co nejdřív:

Hej Borci, takze sem byl na zkousce z PPOS a muzu rict ze to je jeste horsi nez se zda :-D. Ale da se to naucit, kouknete hlavne na metodu CLOCK a pak doporucuju nastudovat cache a pipeline a pak se to da dat v poho.
Test vypada tak ze ma 2 casti ta prvni sou 4 otazky za kazdou je bod jakmile nemate 3 body vubec vam nebude opravovat tu druhou textovou cast.
Ta prvni je na zaskrtavani spravny odpovedi.
Druha je textova tam uz musite neco napsat. napisu vam moje zadani cca necekejte nic presnyho :-).

  1. nakreslit strukturu cache a popsat princip cinosti.

  2. datovy hazard pri pouziti pipeline

  3. prenos bloku. pouziti HW (co kde kam kdy jak proc)

  4. bylo tam schema a mel se napsat miniprogram. nezoufejte ten tam mit nemusite ale hlavni je znat metodu ADDPR.

Anonymous at 2008-01-30 14:23:21

Dneska je 30 ;-)

Šeby at 2008-01-30 14:24:17

Jj, taky už jsem si to uvědomil.

hippies at 2008-01-30 15:04:49

opraveno

Jan Kokoška at 2008-01-30 15:13:44

A jaké byly dnes otázky v první části? A dotaz k druhé části: Jak nakreslit strukturu cache?

DH at 2008-01-30 15:14:13

hele, kolik melo vyjit tech PF u toho CLOCKu? a nevysvetlil by tu nekdo jak se to resi? dik

karls at 2008-01-30 15:20:44

jo a co je to metoda ADDPR?

JiriD at 2008-01-30 15:24:14

DH wrote:hele, kolik melo vyjit tech PF u toho CLOCKu? a nevysvetlil by tu nekdo jak se to resi? dik

Je to tu vysvetlene. Zk 29.1.

Šeby at 2008-01-30 15:26:56

Jan Kokoška wrote:A jaké byly dnes otázky v první části? A dotaz k druhé části: Jak nakreslit strukturu cache?

Řekl bych, že ta cache mělo být něco takového jako je v prezentaci od Buleje číslo 11(paměť) na snímcích 32 - 34.

Him at 2008-01-30 16:41:27

ten mikrokod mel vypadat takto: (doufam)

Fetch:
T0: PC_out, MAR_in
T1: read
T2: MDR_out, IR_in
Decode:
T3: decode opcode in IR
Execute:
T4: IR_out, MDR_in
T5: PC_out, aluadd
T6: Temp_out, MAR_in
T7: read
T8: ACC_out, aluadd
T9: Temp_out, ACC_in, pcincr, reset to T0

kdyztak me nekdo opravte :)

Šeby at 2008-01-30 17:13:11

Him wrote:ten mikrokod mel vypadat takto: (doufam)
kdyztak me nekdo opravte :)

Pokud ta zkratka instrukce měla znamenat něco jako ADD (current) position relative, tak bych s tím souhlasil.

Anoxym at 2008-01-30 17:15:09

Him wrote:ten mikrokod mel vypadat takto: (doufam)

Fetch:
T0: PC_out, MAR_in
T1: read
T2: MDR_out, IR_in
Decode:
T3: decode opcode in IR
Execute:
T4: IR_out, MDR_in
T5: PC_out, aluadd
T6: Temp_out, MAR_in
T7: read
T8: ACC_out, aluadd
T9: Temp_out, ACC_in, pcincr, reset to T0

kdyztak me nekdo opravte :)

Hele nejsem si moc jistej tim koncem...mužeš prosim napsat, co si pochopil pod tou inmstrukcí ADDPR .. je Google odolná :|

Já si myslim, že to znamená přičíst k PC adresu uloženou v tý instrukci.. z týhle složený adresy pak načíst data (např do akomulátoru)...

co vy na to....

Him at 2008-01-30 17:26:18

nu, pochopil jsem, ze: ADDPR adresa je instrukce add s tim, ze adresa, kterou dostanes jako operand je relativni vzhledem k program counteru

vygooglit jsi ji nemohl, protoze Bulej naznacil, ze si tu instrukci vymyslel (myslim tim, jak je zadany operand)

MarketkaK at 2008-01-30 18:01:17

Muze mi nekdo prosim znovu vysvetlit ten CLOCK, stale to nechapu ikdyz jsem se divala jak je to vysvetlovane u zkousky z 29.1. Muze mi to nekdo vysvetlit jeste jednou a pomalu, krok po kroku?
Díky

Donarus at 2008-01-30 18:51:57

CLOCK: clock = stránky jsou drženy v kruhovém spojovém seznamu, každá stránka si drží stejný bit R jako při metodě NRU (R = referenced). Kruhový seznam se cyklicky obchází. Má-li aktuální položka bit R roven 0, tak se zamění. Je-li R = 1, tak se vynuluje a pokračuje se další položkou. (zkopirovano z CVUT wiki)

vysvetleni: algoritmus prochazi spojovy seznam ... dejme tomu ze ten spojovy seznam stranek ma 5 polozek ... takze jsi na zacatku (tohle ber relativne je to spojak a je to kruznice (hint = proc se to asi jmenuje clock)) takze chci-li neco do pameti neco zapsat tak potrebuju najit nejake misto kam to zapsat a na poslouzi ten algoritmus

  1. chci teda neco zapsat a vstoupim do pameti najit nejaky usek(stranku) kam cilova data mohu zapsat

  2. jsem v pameti a postupne ji prochazim

  3. narazim li na usek oznaceny R=1, pak tento index zmenim na R=0 a postoupim k nasledujicimu useku (spojeneho ukazatelem)

  4. opakuju 3) dokud nenarazim na usek oznaceny R=0 ... pokud na takovy usek narazim, tak ho smazu a nahradim tim, co chci zapsat a nastavim R=1
    ..
    ..
    ..
    vyhoda teto metody spociva oproti tusim NRU v tom, ze u NRU musime v nejhorsim pripade projit celou pamet dvakrat a tady nam staci jedno projiti ... (proc? protoze je na zacatku napriklad vsech pet useku typu R=1, pak to vypada nasledovne
    "1"..1..1..1..1.. (je to kruznice, jen ji z pismenek neumim nakreslit .. :))
    ted teda chci neco zapsat, ale narazil jsem na jednicku,tak ji nastavim na nulu a postoupim o prvek dal (uvozovky ukazuji na kterem prvku se nachazim)
    0.."1"..1..1..1.. a zase ...
    0..0.."1"..1..1..
    0..0..0.."1"..1..
    0..0..0..0.."1".. - mno a protoze je to kruznice tak pri dalsim kroku se ocitnu opet na "zacatku" jenze pokud se nam do teto doby nepodarilo najit vhodne misto pro zapsani, tak na zacatku uz jsme logicky museli byt a tudiz tam muzeme zapsat (uz jsme tam nastavili R=0) - tedy staci nam na projiti jediny cyklus... :)

aspon tak to chapu ja .. ale tohle bylo jen pro zapis .... ted si jen nejsem stopro jistej jak je to s algoritmem pro cteni ale tusim ze je to takto (90 procent)

CTENI:

  1. pokud ctu z pameti z nejake pozice a ta ma hodnotu R=0, tak ji nastavim na R=1

  2. pokud ctu z pameti z nejake pozice a ta ma hodnotu R=1, tak hodnotu nemenim, tedy zustane R=1

===================
tak ted to nekdo budto potvrdte nebo vyvrate .. tohle je moje teorie pochopeni, treba to pomuze treba ne
PS: znovu podotykam neni to formalni definice - takze nektera ma vyjadreni mohou byt nepresna ale doufam ze snad ne zavadejici

QZuzka at 2008-01-31 00:17:31

Tak to mě Bulej namích.. až do teď, jsem měla dojem, že každá pro zkoušku relevantní instrukce je T0 - T7 (nebo T6), nikde jsem neviděla víc.. a celkem 8 kroků, mocnina dvojky mi připadala "že bude to pravé"..
a pak jsem se to tam snažila do 8 kroků nacpat a připadalo mi divný, že to nejde...

jinak úvodní loterií abcd jsem prošla.. a pak mi neuznal ani pitomý 4 body...

Lord_TNT001 at 2008-01-31 10:46:52

Him wrote:ten mikrokod mel vypadat takto: (doufam)

Fetch:
T0: PC_out, MAR_in
T1: read
T2: MDR_out, IR_in
Decode:
T3: decode opcode in IR
Execute:
T4: IR_out, MDR_in
T5: PC_out, aluadd
T6: Temp_out, MAR_in
T7: read
T8: ACC_out, aluadd
T9: Temp_out, ACC_in, pcincr, reset to T0

kdyztak me nekdo opravte :)

co je při tomhle "T8: ACC_out, aluadd" kroku v ACC?

Him at 2008-01-31 10:51:45

V ACC je od zacatku cislo, ktery mas secist s tim cislem, ktere je zadane pomoci adresy (relativni vuci PC) v instrukci

Ellrohir at 2008-02-11 12:44:52

Him wrote:ten mikrokod mel vypadat takto: (doufam)

Fetch:
T0: PC_out, MAR_in
T1: read
T2: MDR_out, IR_in
Decode:
T3: decode opcode in IR
Execute:
T4: IR_out, MDR_in
T5: PC_out, aluadd
T6: Temp_out, MAR_in
T7: read
T8: ACC_out, aluadd
T9: Temp_out, ACC_in, pcincr, reset to T0

kdyztak me nekdo opravte :)

mohl by mi někdo zkusit pls vysvětlit, co se přesně děje v těch posledních dvou krocích? moc tomu mikrokódu furt nerozumím a po T7 sem se trochu ztratil :(

Him at 2008-02-11 12:53:52

Fetch:
T0: PC_out, MAR_in
T1: read
T2: MDR_out, IR_in >> davam instrukci do IR
Decode:
T3: decode opcode in IR
Execute:
T4: IR_out, MDR_in >> davam operand instrukce do MDR_in (ten operand je relativni adresa vuci program counteru; plati, ze cislo, ktere mam secist s tim, co je celou dobu v akumulatoru je dano: memory[program_counter+relativni adresa v instrukci]), do MDR_in se dava cislo, ktere chci secist s tim, co je na sbernici (tak funguje aluadd)
T5: PC_out, aluadd >> do Temp_out dostanu adresu, kde v pameti je cislo, ktere mam secist s tim, co je v akumulatoru
T6: Temp_out, MAR_in
T7: read
T8: ACC_out, aluadd
T9: Temp_out, ACC_in, pcincr, reset to T0

Je to jasnejsi?

Ellrohir at 2008-02-11 13:12:56

á-ha, už sem to asi pochopil...mě totiž zmátlo to, že v T6 něco vyleze z TEMPu a ty to hodíš do Memory Address Registru a pak se v T7 přečte z paměti (a přečte se to, na co ukazuje hodnota v MAR jestli to správně chápu), ale pak mi nebylo jasný, že se už nikde neobjeví žádný MDR_out nebo tak něco, takže mi přišlo, že ta načtená hodnota do MDR (pokud dobře chápu read) se nikde neuplatní...ovšem teď když koukám na schéma znovu, tak mi došlo, že se to nikde objevit nemusí, protože to z MDR jde hned přímo do ALU a neleze to nikam na sběrnici...

o to mi šlo, potom už to je vcelku jasný :)