179288. lajstromszámú szabadalom • Nagyssebességű mikroprogramozott processzor elrendezés
15 179288 16 Az utasítás formátuma: Op. kód N INDIR2 CÍM Az utasítás végrehajtásának mikrociklusai: 0. Az Op. kód és az N értéke a Pr 1 regiszterben, az INDIR2 (kétszeresen indirekt ugrási) cím a Pr 2 regiszterben tárolódik, a PC programcím számláló továbblép. 1. A PC programcím számláló értéke az MUX 3 multiplexeren keresztül a BRO regiszterbe töltődik. 2. A Pr 2 regiszter értéke a MUX 1 és MUX 2 multiplexereken keresztül a BRI regiszterbe és a RAM ADDR címregiszterbe töltődik, N értéke az UCY utasítás ciklus számlálóba töltődik a Pr 1 regiszterből. A PR puffer regiszter töltődik a Pr 1' regiszterből. Az FF2 flip flop bebillen, és az AND kapun keresztül az UCY utasítás ciklus számláló CY kimenetét a MUX 4 multiplexer bemenetére kapcsolja. 3. A RAM ADDR címregiszter által meghatározott memóriarekesz tartalma a MUX 1 és MUX 2 regisztereken keresztül az SCK stack regiszterbe ás a RAM ADDR címregiszterbe töltődik. A memóriarekesz felső három bitje a FLAG ST flag tárolóba töltődik. 4. A RAM ADDR címregiszter által meghatározott memóriarekesz tartalma a MUX 1 és MUX 2 multiplexereken keresztül a BR3 regiszterbe töltődik. Az SCK stack regiszter és a RAM ADDR címregiszter dekrementálódik. 5. A RAM ADDR címregiszter által meghatározott memóriarekesz tartalma a MUX 1 és MUX 2 multiplexereken keresztül a BR2 regiszterbe töltődik. Az SCK stack regiszter és a RAM ADDR címregiszter dekrementálódik. 6. A RAM ADDR címregiszter által meghatározott memóriarekesz tartalma a PC programcím számlálóba töltődik. 7. A BRO regiszter értéke a PC programcím számlálóba töltődik, és ettől a programcímtől kezdve folytatódik az utasításvégrehajtás. Az FF2 flip flop visszabillen, az AND kapu tiltódik. Ennek az utasításnak a használatával elugorhatunk a PM program memória kétszeresen indirekt címére, ott N számú utasítást végrehajthatunk, azután visszaugrás történik oly módon, hogy a visszaugrási cím a BR2 és a BR3 regiszter, valamint a FLAG ST flag tároló értéke a stack memóriában elraktározódik. Amennyiben ez az utasítás ismétlődik, a fent elraktározott PC programcím számláló, BR2, BR3 regiszter és FLAG ST flag tároló értékekkel folytathatjuk a félbehagyott (N számú utasítás után) programvégrehajtást. Az utasításban megadott kétszeresen indirekt címmel a RAM memóriának azt a rekeszét adjuk meg, ahol a Stackpointer értéke és a felső három bitben a flag-ek találhatók, ez pedig annak a memóriarekesznek a címe, amely a BR3 regiszter programmegszakítás előtti aktuális értékét tartalmazza, az eggyel kisebb memóriacím a BR2 regiszterét, a következő RAM memória cím pedig azt a PC programcím számláló értéket, ahol a programvégrehajtást megszakítottuk. összegezve tehát az utasítás címrésze egy adott processzor Stackpointer tartalmának a helyét jelöli ki a RAM memóriában, N számú paraméterrel pedig meghatározhatjuk, hogy a processzor hány darab utasítást hajthat végre egymás után. A Stackpointer tartalmát a szubrutin írások és a J & R utasítás befolyásolhatja. Most a találmány szerinti processzor elrendezésnek a többprocesszoros működését szemléltetjük. Az alábbiakban az egyszerűség kedvéért a kétprocesszoros üzemmódot tárgyaljuk. Válasszunk két egymástól független feladatot, amelyek megoldását a Pi és P2 programok valósítják meg. A feladat jellege olyan, hogy szükség van a P! és P2 programok egyidejű futtatására. A korábbi ismert megoldásoknál ezt két hardware processzor végezte el (multiprocesszoros rendszer) V utasításvégrehajtási sebességgel, amely a programok időbeni végrehajtásának a szükségleteivel volt összhangban. Ha létezik egy olyan processzor, amelynek utasításvégrehajtási sebessége nagyobb, mint két V, akkor a jeladat a következőképpen is megoldható. Elkezdődik a Pj program futása. Ni utasítás végrehajtása után a futást felfüggesztjük, a felfüggesztési állapot paramétereit eltároljuk, és elkezdjük a P2 program futtatását. N2 utasítás végrehajtása után hasonlóan az előzőekhez a P2 program futása áll le, és a Pi program felfüggesztési állapotának a paraméterei visszatöltődnek, és ismét a Pi program futása következik Ni ciklusra. A további működés hasonló ciklikussággal folytatódik. Amennyiben az N szám értéke 1-től Nx-ig változhat, a kívánalmaknak megfelelően tetszőleges finomságú együttfutást állíthatunk be (szélsőséges esetben a két program utasításai felváltva hajthatók végre). Az 1. ábrán feltüntetett rendszer speciális stack kezelése, egyetlen UCY utasítás ciklus számláló regisztere és nagy sebessége miatt alkalmas a többprocesszoros üzemet szimuláló feladatok megoldására. Egy N processzoros rendszer fő program blokkvázlatát az 5. ábrán tüntettük fel. Az 5. ábrán vázolt algoritmus lényegében külön magyarázatra nem szorul. A 3. utasításban meghatározott J & R (ADDR 1) utasítás azt jelenti, hogy ugrást írunk elő az ADDR 1 kétszeresen indirekt címre N számú utasítás elvégzésére, majd innen viszszatérést kezdeményezünk, a többi processzornál található hasonló ugrás utasítása ezzel azonos tartalmú, csak itt a megfelelő címek változnak. Inidalizáláskor minden egyes processzornak be kell állítania a RAM memóriában azt az ADDR N címtartalmat, amely ezen processzorhoz tartozó stack memóriarész harmadik rekeszére mutat, amiben a BR3 regiszter értékét, a második rekeszben a BR2 regiszter értékét, az első rekeszben pedig ehhez a processzorhoz tartozó kezdeti programcímet kell beállítani. A találmány szerinti processzor elrendezés egy másik jellegzetes utasítása: ugrás a PM program memória direkt címére N számú utasítás végrehajtására és visszatérés. 5 10 15 20 25 30 35 40 45 50 55 60 65 8