Számítógép architektúrák/gyakorlás
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Adatáramlásos (Data Flow) példa
Adott a következő kifejezés: *z := ((a*b) - (c/d))* Készítse el a kifejezés kiszámításának adatáramlásos (data flow) modelljét (adja meg a vonatkozó ai működtetőket, lj csatolókat, F1() és F2() függvényeket és az Mk markingokat.
Date: Tue, 19 Jan 2010 14:14:58 +0100 From: Szép Tamás <szep.tamas.89@gmail.com> To: info2008@sch.bme.hu Subject: [info2008] adatáramlásos modell X-Mailer: Microsoft Office Outlook 11 Sziasztok! Most, hogy valaki kérdezte ezt az adatáramlásos modell dolgot (rajtam kívűl is) elmondanám, hogy én mit látok. Szerintem a két kezemen meg tudnám számolni azokat, akik ezt értik, már csak azért is, mert senki nem mondta eddig, hogy ami megoldás wikin fenn van, az TÖKÉLETESEN ROSSZ, látszik rajta, hogy aki csinálta, az sem értette. Vegyünk egy példát: 3. Adott a következő kifejezés: z := ((a*b) - (c/d)). Két feldolgozó egység áll rendelkezésre. Készítse el a kifejezés kiszámításának adatáramlásos (data flow) modelljét (adja meg a vonatkozó ai működtetőket, lj csatolókat, F1() és F2() függvényeket és az Mk markingokat (1,5 pont) Szeretném felhívni mindenki figyelmét előljáróban, hogy 2 azaz kettő feldolgozó egység áll rendelkezésre, aki tehát 3 dobozt rajzol, az biztosan rosszul csinálja. Itt az a lényeg, hogy 2 dobozt kell rajzolni és az egyik doboznak 2 különböző feladatot kell ellátnia. Az, hogy melyiket fogja elvégezni a markingtól függ. Tehát: Az élek jelölésére a kidolgozott példától eltérő, logikusabb jelölést használok, melynek szignatúrája: (innen, ide). A = { a1, a2 } L = { l1, l2, l3, l4, l5, l6, l7 } E = { (l1, a1), (l2, a1), (a1, l5), (l3, a2), (l4, a2), (l5, a2), (l6, a2), (a2, l6) [visszacsatolás!], (a2, l7) } M = { M1, M2, M3 } --> csak azokat a markingokat tüntetem fel, amelyek a függvényleíráshoz szükségesek. Ehhez hozzávehető még egy M_init és egy M_ending marking. M1 = { l1, l2 } M2 = { l3, l4 } M3 = { l5, l6 } F1(a1, M1) = l1 ^ l2 x := a * b F2(a1, M1) = l5 F1(a2, M2) = l3 ^ l4 y := c / d F2(a2, M2) = l6 --> itt az M1 és M2 markingok helyett használhattuk volna M_init - et is, ha nem szeretnénk különbontani. Nagyobb rendszerek leírásakor nincs értelme megkülönböztetni minden állapotot, ekkor nem bontanánk külön. F1(a2, M3) = l5 ^ l6 z := x - y F2(a2, M3) = l7 --> a kivonást IS a kettes indexű működtető végzi, és nem egy hármas, mivel csak 2 feldolgozó egységünk van. És ezzel természtesen konzisztens már a táblázat: +-----------------+---------------+--------------+ |Lépés/processzor | 1. processzor | 2.processzor | +-----------------+---------------+--------------+ | 1. lépés | x := a * b | y := c / d | +-----------------+---------------+--------------+ | 2. lépés | | z := x - y | +-----------------+---------------+--------------+ Ez az én megoldásom, ha valaki szerint nem jó, írjon nyugodtan. Üdv.: Szép Tomi
Ehhez passzoló diagram:
%ATTACHURL%/df.gif
-- maat - 2010.01.19.
Annyit fűznék hozzá a dologhoz, hogy vizsgán sikerült megkapnom ezt a feladatot, és a fenti megoldást írtam le részletesen. NG javította, természetesen 0 pont. Amikor megkérdeztem hogy mi lett volna a jó megoldás, az alábbi megoldást mondta el. Azt mondta hogy 3 doboz kell.
-- Teve - 2011.01.09.
Rossz(?) megoldás
%ATTACHURL%/df.png
A = {a1, a2, a3} működtetők halmaza
L = {l1, l2, l3, l4, l5, l6, l7} csatolók halmaza
E ⊆ ((A × L) ∪ (L × A)) élek halmaza
E = {
{a1, l1}, {a1, l2}, {a2, l3}, {a2, l4},
{l5, a1}, {l6, a2},
{a3, l5}, {a3, l6},
{l7, a3}
}
F1(a1, M1) = l1 ^ l2
F2(a1, M1) = l5
F1(a2, M1) = l3 ^ l4
F2(a2, M1) = l6
F1(a3, M2) = l5 ^ l6
F2(a3, M2) = l7
M1 = {l1, l2, l3, l4}
M2 = {l7}
lépés | 1. processzor | 2.processzor |
1 | x = a * b | y = c / d |
2 | z = x - y |
-- DeVi - 2007.01.13.