html5-img
1 / 22

T225 16 bites transputer blokkvázlata

T225 16 bites transputer blokkvázlata. MIMD gép transputerekkel. A MIMD gép konfigurálása. http://en.wikipedia.org/wiki/Occam_programming_language lapról származó példa:. ALT count1 < 100 & c1 ? data SEQ count1 := count1 + 1 merged ! data count2 < 100 & c2 ? data

shanna
Download Presentation

T225 16 bites transputer blokkvázlata

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. T225 16 bites transputer blokkvázlata

  2. MIMD gép transputerekkel

  3. A MIMD gép konfigurálása

  4. http://en.wikipedia.org/wiki/Occam_programming_language lapról származó példa: ALT count1 < 100 & c1 ? data SEQ count1 := count1 + 1 merged ! data count2 < 100 & c2 ? data SEQ count2 := count2 + 1 merged ! data status ? request SEQ out ! count1 out ! count2

  5. occam példák C megfelelői ahttp://frmb.org/occtutor.htmlweblapról

  6. if (x == y) { foo (x); } else if (y == 0) { bar (x); } else { /* nothing! */ } If statement IF x = y foo (x) y = 0 bar (x) TRUE SKIP

  7. while (!end_of_file) { ... process ... } While loop WHILE (NOT end.of.file) ... process ...

  8. void foo (int x, double *r) { ... process ... } Procedure PROC foo (VAL INT x, REAL64 r) ... process ... :

  9. int foo (int v) { int r; r = (v * 10); return r; } Function INT FUNCTION foo (VAL INT v) INT r: VALOF r := (v * 10) RESULT r :

  10. switch (array[i]) { case 'a': case 'b': case 'c': case 'd': case 'e': ch = array[i]; break; case 'f': case 'g': ch = 'z'; break; default: ch = 0; break; } Selection CASE array[i] 'a','b','c','d','e' ch := array[i] 'f',g' ch := 'z' ELSE ch := #00

  11. AZÉRT EZ NEM IGAZ!!! { int i; for (i = 0; i < count; i++) { P (i); } } For-type loop SEQ i = 0 FOR count P (i)

  12. typedef int blue; Simple type declaration DATA TYPE blue IS INT:

  13. typedef struct { int x, y; double i, j; char string[16]; } foo; Structured type declaration DATA TYPE foo RECORD INT x, y: REAL64 i, j: [16]BYTE string: :

  14. Timer A TIMER típusú változó egy különleges csatorna, mely megvalósításban definiált felbontású, azaz a nyelv nem rögzíti, hogy mekkor időnként "kettyen", sőt ez függhet a processz prioritásától is. INT számláló-értéket ad, melyet előjel nélkülinek kell tekinteni. Adott óráról párhuzamosan több processz is olvashat, nem úgy, mint más csatornáról. Késleltetés megvárása: az AFTER használatával egy TIMER-ra vonatkozó inputban. Pl. 64 msec várakozás, ha az óra 1 msec-onként kettyen: TIMER clock: -- egy óra-csatorna VAL delay IS 64 -- késleltetés konstansa INT now: -- kezdeti idő SEQ clock ? now -- pillanatnyi idő leolvasása now-ba clock ? AFTER now PLUS delay -- megvárja az adott értéket, PLUS előjel -- nélküli + művelettel clock ? AFTER now + delay -- ugyanaz, de az előző az óra ciklusa -- szerint moduló működik, ez túlcsordulhat

  15. Pl. várakozás 2 csatorna valamelyikén érkező adatra time-out -tal: TIMER clock: -- egy óra-csatorna INT now: -- kezdeti idő BOOL timeout: -- volt time-out? VAL delay IS 1000: -- késleltetés (konstans) SEQ PAR clock ? now -- pillanatnyi idő timeout := FALSE ALT c ? x -- vagy a c csatornáról jön input, P -- az ehhez tartozó tevékenység d ? x -- vagy a d csatornáról jön input, Q -- az ehhez tartozó tevékenység clock ? AFTER now PLUS delay -- ez idővel biztosan teljesül timeout:=TRUE

  16. 3. példa: Tömb rendezése összefésüléssel VAL INT Tmeret IS 1024: -- kettő hatványa az egyszerűség kedvéért [Tmeret] REAL T : -- tömb PROC masol ([] REAL ezt, ide) SEQ ide := ezt :

  17. PROC fesul ([] REAL t1, t2, tki) -- t1 és t2 összefésülése tki -be INT x1,x2,xki,slen: SEQ PAR x1 := 0 x2 := 0 xki := 0 slen := SIZE t1 -- aktuális tömbparaméter elemszáma WHILE (x1<slen) AND (x2<slen) -- összefésülés SEQ IF t1[x1] < t2[x2] SEQ tki[xki] := t1[x1] x1 := x1+1 TRUE SEQ tki[xki] := t2[x2] x2 := x2+1 xki := xki+1 -- MÉG NINCS VÉGE!!!

  18. PAR IF x1<slen -- maradékok másolása párhuzamosan masol ([t1 FROM x1], [tki FROM xki FOR slen-x1]) TRUE SKIP IF x2<slen masol ([t2 FROM x2], [tki FROM xki FOR slen-x2]) TRUE SKIP : -- PROC fesul vége

  19. PROC Menet ([] REAL ezt, ide, VAL INT slen) -- összefésülések egy menete PAR x=1 FOR SIZE T / 2 * slen -- részek összefésülése párhuzamosan, -- ha lehet ágszámot dinamikusan megadni fesul ([ezt FROM (2*(x-1))*slen FOR slen], [ezt FROM (2*x-1) *slen FOR slen], [ide FROM (2*(x-1))*slen FOR 2*slen]) : -- PROC Menet vége Bontsuk csak ki! x=1, slen = 1 fesul([ezt FROM 0 FOR 1], [ezt FROM 1 FOR 1], [ide FROM 0 FOR 2]) x=2, slen = 1 fesul([ezt FROM 2 FOR 1], [ezt FROM 3 FOR 1], [ide FROM 2 FOR 2]) ... x=512 fesul([ezt FROM 1022 FOR 1], [ezt FROM 1023 FOR 1], [ide FROM 1022 FOR 2]) Most slen = slen *2, ezzel ismét x=1, slen = 2 fesul([ezt FROM 0 FOR 2], [ezt FROM 2 FOR 2], [ide FROM 0 FOR 4]) x=2, slen = 1 fesul([ezt FROM 4 FOR 2], [ezt FROM 6 FOR 2], [ide FROM 4 FOR 4]) ... x=256 fesul([ezt FROM 1020 FOR 2], [ezt FROM 1022 FOR 2], [ide FROM 1020 FOR 4])

  20. PROC Sort ([] REAL t) INT slen: [SIZE t] REAL W : -- munkaterület SEQ slen := 1 -- kezdeti szakaszhossz WHILE slen < SIZE t SEQ Menet (T,W,slen) -- páratlanadik menet: T ==> W slen := 2*slen IF slen < SIZE t -- kell még menet SEQ Menet (W,T,slen) -- párosadik menet: W ==> T slen := 2*slen TRUE T := W -- páratlan menet volt; eredmény visszamásolása : -- PROC Sort vége

  21. ... -- T feltöltése Sort (T) -- a rendezés végrehajtása ... -- T felhasználása ...

More Related