HUT57455A - Computer architecture with set of instructions drawn together - Google Patents
Computer architecture with set of instructions drawn together Download PDFInfo
- Publication number
- HUT57455A HUT57455A HU911103A HU110391A HUT57455A HU T57455 A HUT57455 A HU T57455A HU 911103 A HU911103 A HU 911103A HU 110391 A HU110391 A HU 110391A HU T57455 A HUT57455 A HU T57455A
- Authority
- HU
- Hungary
- Prior art keywords
- instructions
- instruction
- parallel
- executed
- scalar
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 57
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000007717 exclusion Effects 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 11
- 238000007596 consolidation process Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 4
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000000052 comparative effect Effects 0.000 claims 1
- 238000012544 monitoring process Methods 0.000 claims 1
- 150000001875 compounds Chemical class 0.000 abstract description 5
- 230000008859 change Effects 0.000 abstract description 4
- 230000001419 dependent effect Effects 0.000 abstract description 3
- 238000013329 compounding Methods 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 18
- 230000008901 benefit Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000002131 composite material Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000027455 binding Effects 0.000 description 2
- 238000009739 binding Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 206010012335 Dependence Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Numerical Control (AREA)
Description
A találmány tárgyát általában a párhuzamos számítógépes processzálás, közelebbről pedig egy utasításfolyamnak az adott számítógépes elrendezésben egymással párhuzamosan kiadható és végrehajtható utasítások azonosítását célzó feldolgozását biztosító eljárás képezi.
Hivatkozás révén jelen bejelentés részévé tesszük az 1990 április 4.-én benyújtott ''Adatfüggöséget. kiküszöbölő hardware apparátus című(száma: 07/504.910), valamint az 1990 május 4.-én benyújtott Általánosított, eljárás összevont számítógép-utasítások képzésére utasítás-szintű párhuzamos processzorokhoz című (száma: 07/519.3Θ2) Egyesült Allamok-beli szabadalmi bejelentéseket .
Az utasítások párhuzamos végrehajtásának gondolata nagyban hozzájárult a számítógép-rendszerek teljesítményének növekedéséhez. Az utasítások párhuzamos végrehajtása a több különálló, egyszerre kettő vagy több azonos vagy eltérő utasítás végrehajtására képes funkcionális egység meglétére alapul.
A számítógép-rendszerek teljesítménye megnövelésének másik módja a csővezeték(angol szóval pipeline) használata. Általánosságban a csővezeték lényege abban áll, hogy a számítógép által végrehajtandó feladat több, egymástól független alfeladatra bontódik, amelyek mindegyikéhez a végrehajtás céljából egy-egy különálló hardware elem vagy fokozat(angol nevén stage) lesz hozzárendelve. Ez az eljárás a párhuzamosság valamely fokát képes biztosítani a többszörös utasítások egyidejűleg történő végrehajtása révén. Ideális esetben minden egyes ciklusban egy-egy újabb utasítás tölthető be a csővezetékbe, amelyben az utasítások a végre >
53.968/Kö hajtás rendre különböző fázisában vannak. A működés a gyári szerelőszalagéra emlékeztet, aholis a szalag hosszában a készülő termékdarabok a befejezettség különböző fokán állnak.
Tény azonban, hogy az utasítások párhuzamos végrehajtásából, illetve a csővezeték használatából származó előnyök szertefoszlanák, például az adatfüggöségböl, illetve a hardware függőségből eredő kizárások(angol szóval interlock') folytán. Az adatfüggöségböl eredő kizárásra lehet példa az úgynevezett írás-olvasás kizárás, midőn az első utasításnak az általa szolgáltatott végeredményt először ki kell írnia valahová, mielőtt, azt a rákövetkező utasítás olvasni és ezt követően felhasználni tudná.
A hardware függőségből eredő kizárás előállhat például olymódon, hogy az el ső utasítás és a rákövetkező utasítás ugyanazt az adott hardware elemet kellene használja.
Az ilyenfajta kizárások(más szóhasználattal hazárdok) kiküszöbölésének egyik lehetséges módja az úgynevezett dinamikus kiosztás ( angolul dynamic scheduling) . A dinamikus kiosztás arra a tényre épül, hogy egy erre a célra specializált hardware elem beépítése lehetővé teszi az utasítások sorrendjének a csővezetékre történő, a végrehajtást közvetlenül megelőző kiadását követő megváltoztatását.
Történtek különböző kísérletek a teljesítménynek az utasításfolyamnak a tárból történő, a végrehajtást megelőző lehívása előtt elvégzett úgynevezett statikus kiosztás(angolul static scheduling) által történő megnövelésére. A statikus kiosztás kulcsa a programkódnak a végrehajtást megelőző mozgatásában és az utasítások ezzel egyidejű átcsoportosításában keresendő. Az uta3
53.968/KÖ sítások sorrendjének ez a módosítása az eredetivel egyenértékű, a hardware-t a párhuzamos processzáláson keresztül teljesebben kihasználó utasításfolyamot eredményez. A statikus kiosztás tipikusan fordítás alatt végezhető el. Tény azonban, hogy az átrendezett utasítások megőrzik eredeti formájukat és a hagyományos párhuzamos processzálás még mindig igényel valamilyen fajta, az utasítások végrehajtását közvetlenül megelőző, a következő két utasítás párhuzamos végrehajtásáról rendelkező dinamikus döntéshoI zást.
Ezek a kiosztási eljárások megnövelik ugyan a csővezetéket, használó számítógép teljesítményét, de önmagukban nem elegendőek a növekvő teljesítmény iránti, folyamatosan jelenlévő igény kielégítésére. Az általános célú számítástechnikában a legutóbbi időkben tett javaslatok közül jó néhány a párhuzamosításnak az utasításszinten történő, a csővezeték révén elérhető maximumnál hatékonyabb kihasználására vonatkozott, igy például közvetetten további utasításszintű párhuzamosítás érhető el az egyes ciklusokban többszörös utasítások kiadása által(az úgynevezett szuperskalár gépek esetében), inkább, mint az egyes utasítások dinamikus kiosztásával vagy vektorgépek használata révén. Az egyes ciklusokban többszörös utasításokat kiadó számítógépeket a ciklusonként egy utasítást kiadó skalár gépektől való megkülönböztetés érdekében szokás szuperskalár gépeknek nevezni.
A tipikus szuperskalár gépben a lehívott utasításfolyamban a műveleti kódokat az utasításkiadó logika dekódolja és elemzi abból a szempontból, 'íiogy azok végrehajthatók-e egymással párhuzamosan. Az ilyen, az utolsó pillanatban történő dinamikus kiosztás
53.968/Kö szabályrendszere más és más az egyes utasításkészlet-architektürákra csakúgy, mint az adott utasításfeldolgozó egységben az ezen architektúrát realizáló logikai hardware-re. A dinamikus kiosztás hatékonyságának tehát határt szab az utasítások egymással történő párhuzamosíthatóságát kiértékelő kombinációs hálózat összetettsége és a ciklusidö növekedése is igen valószínű. A szuperskalár gépek megnövekedeft hardwaremennyisége és ciklusideje különösen súlyos gondot jelent, a többszáz különféle utasításból összetevődő architektúrák esetén.
A statikus és a dinamikus kiosztásnak, illetve a kettő kombinációjának vannak egyéb fogyatékosságai is. Szükséges például minden egyes utasítást mindannyiszor a párhuzamos végrehajthatóság szempontjából újólag elbírálni, valahányszor az végrehajtásra a tárból lehívásra kerül. Nem született megoldás annak eldöntésére és előzetes jelzésére, hogy mely skalár utasítások alkalmasak a párhuzamos végrehajtásra.
A szuperskalár gépekben alkalmazott dinamikus kiosztási eljárás további fogyatékossága az a mód, amellyel a skalár utasításoknak a lehetséges párhuzamos végrehajtás szempontjából való vizsgálata történik. A szuper skalár gépek a skalár utasítások műveleti kódjára alapozzák ezt a vizsgálatot, a hardware-kihasználtság bárminemű figyelembevétele nélkül. Ezen túlmenően az utasítások kiadása FIFO(First In First Out) elven megy végbe, ez pedig megszünteti az utasításoknak a kizárások előfordulását megelőzni vagy előfordulásuk számát minimalizálni kívánó csoportosításának lehetőségét.
Ismerünk bizonyos technikákat, amelyek igyekeznek az utasí
53.968/Kö tások párhuzamos processzálásához a hardware igényeket szem előtt, tartani. Az egyik ilyen rendszerű gép a statikus kiosztás egyik fajtáját megvalósító igen hosszú utasításszó ( Very Long Instruc<
Hon Word) elvű gép, amelyben egy bonyolult fordító olymódon rendezi át az utasításokat, hogy a hardware utasításkiosztás leegyszerűsödik. E megközelítés szerint a fordító a hagyományos fordítóknál jóval összetettebb kell legyen annak érdekében, hogy az utasításfolyamban a párhuzamosíthatóság pontosabb felderíthetösége végett nagyobb ablakot lehessen használni. A keletkező utasítások tárgykódja ellenben nem szükségszerűen kompatibilis a létező adott, architektúrával, miáltal a probléma megoldása újabb problémákat vet fel. Ezen túlmenően újabb, a gyakori elágazás előidézte és a párhuzamosíthatóságot erősen korlátozó problémák felbukkanásával is kell számolni.
Az elmondottakból kitűnik, hogy a felsorolt korábbi megközelítési módok egyike sem nyújtott kellően átfogó, a megvalósítandó utasításkészlet egyidejűleg történő nagyobb mértékű módosítását, illetve a lehívott utasítások dinamikus kiosztását, végző logika elbonyolífását, nem igénylő megoldást a lehetséges kizárások kiküszöbölésére .
A digitális adatok feldolgozásának olyan fejlesztése kívánatos, amely a létező gépi utasítások párhuzamos feldolgozását teszi lehetővé a processzorteljesítmény megnövelése érdekében. Tekintve, hogy a másodpercenként végrehajtott utasítások száma a processzor alapciklusidejének és az utasításonként szükséges ciklusok átlagos számának szorzata, olyan megoldást kell keresni, amely mindkét tényezőt figyelembe veszi. Konkrétabban, olyan el6 • · • ·
53.968/KÖ
Járásra van szükség, amely az adott architektúrában lecsökkenti az egy utasítás befejezéséhez szükséges gépi ciklusok átlagos számát. Ezen túlmenően olyan előrelépésre van szükség, amely a párhuzamos utasítás-végrehajtást támogató hardware bonyolultságát csökkenti és ilymódon alacsony szinten tartja a ciklusidőt. Igen kívánatos volna továbbá a Javasolt továbbfejlesztés szempontjából, ha kompatibilitást biztosítana egy már létező rendszerarchitektúrával és a párhuzamosítást az utasítások szintjén Jelentetné meg mind az új, mind a már létező gépi kódhoz.
Az elmondottak fényében a találmány célja olyan eljárás kidolgozása, amelynek révén lehetségessé válik az utasításiolyamnak az utasítások dekódolását, és végrehajtását megelőző statikus elemzése egymással párhuzamosan végrehajtható skalár utasításokból álló összevont utasítások kialakítása céljából. További célja a találmánynak az utasításfolyamhoz az összevont utasítás kezdőpontját megjelölő, illetve az összevont utasításban szereplő skalár utasítások számát Jelző vezérlőinformáció előállítása és illesztése .
További cél az utasításfolyam egy nagyobb szakaszának az utasitáslehívást megelőző elemzése, ahol az ablak az utasításfolyam hosszában elmozdítható az összevont utasításokat alkotó egyes szomszédos skalár utasítások minél hatékonyabb csoportosíthatósága érdekében.
További célja a találmánynak egy olyan, az előbb felsorolt Jellemzőkkel bíró utasitás-összevonó módszer biztosítása, amely alkalmazható a több'különböző utasításhosszat, illetve az utasításoknak adatokkal történő keveredését egyaránt megengedő össze7 • · · · t · · « · * · · • ♦ · · · · • · ·· ··« · ·· ·
53.968/Kö tett utasttáskészlet-architektúrákhoz éppúgy, mint a RISC(Reduced Instruction Set Computer - csökkentett utasításkészletű számítógép) architektúrákhoz, amely utóbbiban az utasítások általában állandó hosszúságúak és az adatok és az utasítások nem keverhetők.
További célja a találmánynak az utasításfolyamnak azt összevont utasítások sorozatává átalakító előzetes feldolgozását biztosító eljárás szolgáltatása, ahol ez az eljárás software vagy hardware eszközökkel, a végrehajtást megelőzően a számítógép-rendsaer több pontján megvalósítható. Ezzel összefüggő célkitűzés az utasítások előzetes feldolgozására olyan eljárást nyújtani, amely a bináris utasításfolyamon egy utólagos fordító részeként, a memóriában működő összevonóként vagy cache utasítás-öszszevonó egységként működik és amely tetszőleges byte-sorozat kezdetén elkezdheti az összevonást az utasításhatárok ismerete nélkül.
A találmány tehát az említett célkitűzéseket, az utasítások egy csoportjának(illetve magának a programnak) előzetes, az öszszevont utasításokba csoportosítható skalár utasításokat azonosító statikus feldolgozása révén kívánja elérni. Az összevont utasításokat alkotó skalár utasítások tárgykódja sértetlen marad, így a már meglévő programok az összevont utasításkészletű gépen megnövekedett teljesítménnyel futnak, ugyanakkor pedig kompatibilisek maradnak a korábbi skalár rendszerű gépekkel.
Konkrétabban, a találmány a létező utasításokat, alapos elemzés eredményeképpen, különböző osztályokba sorolja. Az elemzés eldönti, mely utasítások alkalmasak, akár a saját osztályuk8 • · ·· ***· ***ί • « ♦ · · • · · · · · • · · · ··« · ·· · 53.968/KÖ ba, akár más osztályokba tartozó utasításokkal együtt történő párhuzamos végrehajtásra egy adott hardware kiépítésben. Ezek az összevonási szabályok képezik az utasításfolyam előzetes, az egymással párhuzamosan végrehajtható két.- vagy többelemú szomszédos skalár utasításcsoportokat kereső feldolgozásának az alapját. Bizonyos esetekben némely, egymással kizárásban álló utasításokat össze lehet vonni a párhuzamos végrehajtásra abban az esetben, ha az adott hardware kiépítés ezt. a kizárást, ki tudja küszöbölni. Más kiépítések esetén, ahol a kizárások nem küszöbölhatök ki, az adat- vagy hardwarefüggőségből eredő kizárást. okozó utasítások nem alkothatják részét összevont, utasításnak.
Az egyes összevont utasításokat, a függelék formájában hozzájuk rendelt vezérlő információ azonosítja, az összevont utasítás hossza pedig két skalár utasítás együttes hosszától az adott, hardware kiépítésben egymással párhuzamosan végrehajtható maximális számú skalár utasítás együttes hosszáig terjedhet. Mivel az összevonási szabályok alapját nem annyira az egyes utasítások, mint inkább a különféle utasításosztályok azonosítása képezi, nincs többé szükség az egyes utasítások valamennyi lehetséges kombinációját tároló komplex mátrixokra. Eredeti sorrendjük megőrzése mellett az egyes utasítások a velük szomszédos egy vagy több skalár utasítással összevont utasításokká lesznek összevonva, amelyekben az őket alkotó skalár utasítások tárgykódja kompatibilis marad a nem összevont skalár utasításokéval. Az összevont utasításokat a párhuzamos végrehajtásra vonatkozó vezérlő információ egészíti ki.
A találmány ezen és egyéb célkitűzései, tulajdonságai és
L
53.968/Kö előnyei az ebben a tárgyban járatosak számára világossá válnak az elkövetkezendő részletes leírás és az ahhoz tartozó kíséröábrák tanulmányozását követően, amely utóbbiak közül az 1. ábra a találmány átfogó vázlatát mutatja;
a 2. ábra az egyprocesszoros kivitelezésben bizonyos, egymással kizárásban nem álló, az összevont utasításfolyamban egymással összevont utasítások párhuzamos végrehajtásának időzítési diagramját tünteti fel;
a 3. ábra egymással kizárásban nem álló skalár, illetve összevont utasítások multiprocesszoros kivitelezésű rendszerben történő párhuzamos végrehajtásának idődiagramját mutatja;
a (4A és 4B részekből összetevődő) 4. ábra az egy létező skalár gépen végrehajtott utasításoknak kategorizálását. tünteti fel;
az 5. ábra azt az utat szemlélteti, amelyet tetszőleges program a forrásnyelvű szövegtől a tényleges végrehajtódásig megtesz ;
a 6. ábra az összevont utasításkészletű programnak az assembly nyelvű programból történő előállításának folyamatábráját hordozza;
a 7. ábra nem más, mint az összevont utasításkészletű program végrehajtásának folyamatábrája;
a 8. ábra az azonosítható utasítás-referenciaponttal rendelkező utasításfolyam analitikus szemléltető ábrája;
a 9. ábra a referenciaponttal nem rendelkező, változó hoszszúságú utasításokból összetevődő utasításfolyam a lehetséges öszszevonás-azonosító biteket is feltüntető analitikus szemlélte10
53.968/Kö ·· « · · ·»·· ···· ··«« • « * « · « · • · ·« · tő ábrája;
a 10. ábra a lehető legkedvezőtlenebb, azaz referenciaponttal nem rendelkező, adatokkal kevert változó hosszúságú utasításokból összetevődő utasításfolyamnak a lehetséges összevonás-azonosító biteket is mutató analitikus szemléltető ábrája;
a 11. ábra a 9. és 10. ábrákon szereplő utasításfolyamok kezelését végző utasítás-összevonó egység logikai vázlata;
a 12. ábra a 10. ábrán szereplő lehető legkedvezőtlenebb utasításfolyamnak az összevont utasításokba egyenként legfeljebb négy skalár utasítást tömörítő lehetséges összevonások azonosító bitjeit is feltüntető analitikus magyarázó ábrája;
a 13. ábra az utasításhatárok referenciapontjait azonosító függelékekkel kiegészített utasításfolyam összevonásának folyamatábrája;
a 14. ábra arra világit rá, hogy az érvényes, egymással kizárásban nem álló utasításpárok különböző csoportosításai miként alkotnak többszörös összevont utasításokat a szekvenciális vagy elágazásos végrehajtás számára;
a 15. ábra azt mutatja meg, hogy az érvényes, egymással kizárásban nem álló utasításhármasok miként alkotnak többszörösen összevont utasításokat a szekvenciális vagy elágazásos végrehajtás számára;
a (16A és 16B részekből álló) 16. ábra a 9. ábrán szereplőhöz hasonló, referenciaponttal nem rendelkező, különböző hosszúságú utasításokból álló utasításfolyam összevonásának folyamatábrája; és végül a 17. ábra az IBM 370 rendszer utasításkészletének 4. ábrán • · · ·
53.968/Kö szereplő részletében található jellegzetes utasításkat.egória-párosításokat. tünteti fel.
A találmányi gondolat lényege a számítógép által végrehaj4 tandó program vagy utasítássorozat előzetes feldolgozása annak statikus úton történő eldöntése érdekében, hogy mely egymással kizárásban nem álló utasítások vonhatók össze összevont utasításokba, illetve az ezen összevont utasításokat azonosító vezérlőinformációnak az utasításfolyamhoz történő illesztése. Az említett döntés alapját az adott architektúra utasításkészletéhez specifikusan hozzárendelt összevonási szabályrendszer képezi. A létező utasítások osztályokba sorolása az operandusok, az igénybe vett hardware és az ellátott funkció alapján történik annak érdekében, hogy a nem kiküszöbölhető kizárások elkerülését célzó utasítás-összevonás ne az egyes utasítások, hanem inkább egész utasításosztályok összehasonlítása alapján történjék.
Mint azt az elkövetkezendőkben részletesen ismertetendő ábrák is mutatják, a közelmúltban kifejlesztett összevont utasításkészletű gép( Scalable Compound Instruction Set Machine - SCISM) elnevezésű megoldás a skalár utasításokból álló utasításfolyamot az utasítások dekódolását megelőzően csoportosítja vagy összevonja olymódon, hogy az utasításokat a megfelelő végrehajtó egységek által történő egyidejű párhuzamos végrehajtás számára szolgáló azonosító jelzőbitekkel látja el. Tekintve, hogy az összevonás a tárgykódot érintetlenül hagyja, a már meglévő programok a rendszerben megnövekedett teljesítménnyel képesek futni, míg megmarad a kompatibilitás akkorábban létrehozott rendszerekkel is.
Az 1. ábra általános képe szerint a 20 utasítás-összevonó « · ·
53.968/KÖ egység a 21 (adatokkal kevert vagy nem kevert) bináris utasításfolyamban az egymással szomszédos skalár utasítások közül némelyeket kódolt összevont utasításokká csoportosít. Az ebből származó 22 kódolt összevont utasításokkal kevert skalár utasításfolyam a párhuzamos végrehajtásra nem alkalmas skalár utasításokat és a párhuzamos végrehajtásra kijelölt, skalár utasításokból öszszetevodö összevont utasításokat elegyíti. Midőn a skalár utasítás a 24 utasításfeldolgozó egységre kerül, az a megfelelő funkcionális egységre adja tovább, ahol az utasítás egymagában, sorosan hajtódik végre. Midőn az összevont utasítás a 24 utasításfeldolgozó egységre kerül, az az egyes skalár összetevőket a rendre nekik megfelelő funkcionális egységre vagy kizárás-kiküszöbölő egységre juttatja tovább, ahol az utasítások végrehajtása egymással párhuzamosan történik. Ezek a funkcionális egységek lehetnek például(de nem kizárólag) a 26 aritmetikai és logikai egység (ALU), a 30 lebegőpontos aritmetikai egység (FP) , vagy a 32 címszámító egység(AÍZ) . Az adatfüggőséget kiküszöbölő egységet részletesen az 1990 április 4.-én benyújtott Adatfüggőséget kiküszöbölő hardware apparátus címü(száma: 07/504.910) Egyesült Allamok-beli szabadalmi bejelentésben ismertetjük.
Hangsúlyozzuk, hogy a találmány tárgyát képező eljárás célja az utasítások párhuzamos kiadásának és végrehajtásának lehetővé tétele valamennyi olyan számítógép architektúrában, amely ciklusonként több utasítást dolgoz fel(jóllehet bizonyos utasítások feldolgozása egy ciklusnál hosszabb időt vehet igénybe).
Amint az a 2. ábrán látható, a találmány egyprocesszoros környezetben is megvalósítható, amelyben az egyes funkcionális • · · ·
53.968/Kö egységek egy-egy skalár utasítást(S) vagy összevont skalár utasítást hajtanak( CS) végre. Az ábrából világosan látszik, hogy a skalár és összevont 6kalár utasításokat magában foglaló 33 utasí<
tásfolyamban minden egyes összevont skalár utasításhoz egy-egy függlék(T) társul, igy a 34 első skalár utasítást gz A funkcionális egység egymagában hajtja végre az 1. ciklusban; a T3 függelékkel azonosított 36 összevont utasításhármast alkotó három skalár utasítást az A, C és D funkcionális egységek hajtják végre a
2. ciklusban; a T2 függelék által azonosított 38 összevont utasításpárt alkotó két skalár utasítást az A és B funkcionális egységek hajtják végre párhuzamosan a 3. ciklusban; a 40 második skalár utasítást, a C funkcionális egység hajtja végre egymagában sorosan a 4. ciklusban; a 42 összevont utasitásnégyes részét képező négy összevont skalár utasítást az A-D funkcionális egységek hajtják végre párhuzamosan as 5. ciklusban; a 44 harmadik skalár utasítást pedig az A funkcionális egység hajtja végre egymagában a 6. ciklusban.
Fontos észrevenni, hogy bizonyos számítógép-rendszer elrendezésekben maguk az összevont utasítások is végrehajthatók egymással párhuzamosan, igy például a találmány a 3. ábrán feltüntetetthez hasonló többprocesszoros környezetben is megvalósítható, aholis az összevont utasítást az egy-egy CPU általi párhuzamos végrehajtás egységeként értelmezzük. Amint az az ábrából kitetszik, ugyanaz a 33 utasításfolyam itt mindössze két ciklusban is végrehajtható, mégpedig a következőképpen: az első ciklusban az 1. CPU a 34 első skalár utasítást hajtja végre; a 2. CPU funkcionális egységei hajtják végre a 36 összevont utasításhármast; a 3.
53.968/KÖ
CPU funkcionális egységei pedig a 38 összevont ut.asítá6párt. A második ciklusban az 1. CPU végrehajtja a 40 második skalár utasítást, a 2. CPU funkcionális egységei a 42 összevont utasításnégyest alkotó négy összevont skalár utasítást, a 3. CPU megfelelő funkcionális egysége pedig végrehajtja a 44 harmadik skalár utasítást .
Az összevont utasítások kezelésére alkalmassá tehető számítógép architektúrára lehet példa az IBM 370 utasításszintű rendszer architektúra, amelyben az egyes gépi ciklusokban lehetséges többszörös skalár utasítások kiadása és végrehajtása. Ebben az összefüggésben a gépi ciklus megjelölés az egy skalár utasítás végrehajtására szolgáló csővezeték-lépésekre vagy -fokozatokra vonatkozik. Adott utasításfolyam összevonása során a szomszédos skalár utasításoknak az egyidejű vagy párhuzamos végrehajtáshoz történő csoportosítása megy végbe.
A különböző IBM 370 rendszer architektúrákhoz, így a 370 rendszer architektúrához, a 370 kiterjesztett, rendszer architektúrához (370-XA) és a 370 Enterprise rendszer architektúrához(370-ESA) tartozó utasításkészletek közismertek. A kérdésben a GA22-7000-10 1987 kiadványszámú AZ IBM 370 rendszer működésének alapjai(Principles of Operation of the IBM System/370) című, valamint az SA22-7200-0 1988 kiadványszámú Az IBM 370 Enterprise rendszer architektúra működésének alapjai(Principles of Operation, IBM Enterprise Systems Architecture/370) című munkákat tekintjük hivatkozási alapnak.
Általában igaz1, hogy az utasítás-összevonó egység egymással párhuzamosan végrehajtható utasításosztályokat keres és egyidejű15 * ····««· • · · · · • · · · · · ···· ··* · · · ·
53.968/Kö lég ki akarja zárni az egy összevont utasításon belül egymással a hardware által nem kezelhető kizárásban lévő utasítások előfordulását. Ha kompatibilis utasítássorozatok bukkannak fel, készen is van az összevont utasítás.
Konkrétabban, az.· IBM 370 rendszer utasításkészlete olyan utasításkategóriákra osztható fel, amelyek adott számítógép-rendszerben egymással párhuzamosan hajthatók végre. Bizonyos kategóriákon belüli utasítások összevonhatók az azonos kategóriába tartozó utasításokkal, illetve bizonyos más kategóriákba tartozó utasításokkal. Az IBM 370 rendszer utasításkészlete például a 4. ábrán szereplő kategóriákra bontható fel. Ennek a felosztásnak az elméleti alapját az IBM 370 rendszer utasításainak funkciója és az azok által a tipikus számítógép-rendszer elrendezésben igénybe vett hardware mennyisége képezi. Az IBM 370 rendszer fennmaradó utasításait a jelen kitüntetett kiviteli alak tárgyalásakor nem vizsgáljuk az összevonhatóság szempontjából; ez persze nem jelenti azt, hogy azok a találmány tárgyát képező eljárás keretében ne lennének összevonhatók más utasításokkal. Rá kell mutatnunk, hogy az összevont utasítások végrehajtására szolgáló hardware struktúra vezérlésére a horizontális mikroprogram szerfelett alkalmas, lehetővé téve a párhuzamosítás kiaknázását és a teljesítmény ilymódon történő növelését az összevonhatóság szempontjából nem tárgyalt és a 4. ábrán nem szerepletetett egyéb fennmaradó utasítások számára is.
Az IBM 370 rendszeren írt programokban az egyik leggyakrabban előforduló kombináció valamely TM vagy RX formátumú összehasonlító (compare) utasítást C, CL, CH, CLI, CLM~) végrehajtása; en
53.968/KÖ nek az utasításnak as eredménye jelenti a rákövetkező feltételes ugrás(BC, BCR) feltételét. A teljesítményt növeli a hasonlító (compare) és az elágazó(branch') utasítás párhuzamos végrehajtása,
I amit egynémely utasítás-feldolgozó egység el is végez. Bármely tipikus architektúrában nehézségekkel jár azonban.az összes hasonlító (compare) típusú utasítás és az összes elágazó(branch) típusú utasítás gyors azonosítása az utasítások dekódolása során. Ez az oka annak, hogy a szuperskalár gépek rendszerint a skalár utasításoknak csupán adott típushoz tartozó kis hányadát vizsgálják a párhuzamos végrehajtás szempontjából. A találmány segítségével elkerülhető a két adott utasításnak az utolsó pillanatban történő összehasonlításán alapuló, korlátozott képességű dinamikus kiosztás, mégpedig azáltal, hogy az utasításosztályok tagjainak elemzése már korábban megtörténik, és ennek az elemzésnek az eredménye az a szabályrendszer, amelynek segítségével a biztosan működő összevont utasítások létrehozhatók.
Az egyes utasításoknak a lehívást követő dinamikus kiosztása által támasztott hatalmas problémát híven érzékelteti az a tény, hogy a 4. ábrán szerplö ötvenhét darab különálló utasítás kétszintes összevonásához egy 57x57-es méretű mátrixot kell vizsgálni, ami háromezernél is több kombinációt jelent. Szembeszökő az ellentét a 17. ábra ΙΟχΙΟ-es mátrixához képest, amelyet a találmány az utasításkategóriák kombinációjából származtat.
A hardware tervezésétől függően több utasításosztály elemei végrehajthatók egymással párhuzamosan. Az összevonható hasonlító (compare') és elágazó(branch) párokon túlmenően számos egyéb, a párhuzamos végrehajtásra éppúgy alkalmas párosítás képzelhető el
53.968/KÖ • · · · · · · • · · · · • · · · · · ·«·· ··· · ·· · (lásd 17. ábra), mint például az 1. kategóriába tartozó RR formátumú utasítások és a 7. kategóriába tartozó adatmozgató(load) utasítások, illetve a 3.-5. kategóriába tartozó elágazó(branch és a 8. kategóriába tartozó címbetöltö(load address) utasítások alkotta, illetve egyéb párok.
Bizonyos esetekben az utasítások sorrendje befolyással van a párhuzamos végrehajthatóságra és így döntő szerepe van abban, hogy adott két szomszédos utasítás összevonható-e. Ebben a tekintetben, a 45 sorfök az utasításfolyamon belül az első utasítás kategóriáját, míg a 47 oszlopfők a közvetlenül arra következő második utasítás kategóriáját Jelentik. A 3.-5. kategóriákba tartozó elágazó(branch) utasítások például 49 minden esetben összevonhatók bizonyos típusú, a 2. kategóriába tartozó bitléptető(shift) utasításokkal, míg ellenben a 2. kategóriába tartozó bitléptetö tshift) utasítások az utánuk álló, a 3.-5. kategóriába tartozó elágazó(branch) utasításokkal csupán 51 bizonyos esetekben vonhatók össze.
A 17. ábrában S betűvel jelzett bizonyos esetekben összevonható státusz további funkcionális egységeknek a számítógép-rendszer elrendezéshez történő hozzáadása útján gyakran változtatható át az A betűvel jelzett minden esetben összevonható státusszá. Tekintsük például azt a kétlépcsős összevonást támogató kiépítést, amelyben nincsen az összeadás és a bitléptetés közötti kizárást kiküszöbölő egység, hanem egy hagyományos ^LÍA-val és különálló léptetöregiszterrel rendelkezik. Más szavakban, nincs lehetőség a kizárásban álló összeadó(add) és bitléptetés (sílift) kizárásának feloldására. Tekintsük a következő utasítás18
53.968/Kö sorozatot:
AR
R1,R2
SRL
R3
Világos, hogy ez a két utasítás párhuzamos <
végrehajtás céljából összevonható.
Bizonyos esetekben azonban ez nem tehető meg, éspedig a feloldhatatlan kizárás folytán, amely az alábbi utasítássorozatban ölt testet:
AR RÍ,R2
SRL RÍ
A táblázatból kiderül, hogy egy az 1. kategóriába tartozó utasításiAR) az azt követő, a 2. kategóriába tartozó utasítással (SRL') 53 bizonyos esetekben összevonható. Bizonyos típusú, pl. a fent leírt összeadás-bit léptetés kizárásokat, kiküszöbölő ALU beiktatásával a 17. ábra S betűi A betűvé írhatók át. Ezzel összhangban kell az összevonás szabályrendszerét is frissíteni, hogy az az adott számítógép-rendszer elrendezésen tett bármilyen vál toztatást tükrözze.
További példaként tekintsük az 1. kategóriába tartozó utasításoknak az ugyanazon kategóriabeli utasításokkal történő összevonását a következő utasítássorozatban:
AR RÍ, R2
SR R3, R4
Ez a sorozat mentes az adatfüggőségből eredő kizárásoktól és a végrehajtás eredménye az alábbi két egymástól független művelet lesz:
, RÍ <— R1+R2
-R3 <— R3-R4 • e ·
53.968/KÖ
Ennek az utasítássorozatnak a végrehajtása két egymástól függetlenül, párhuzamosan működő kétbenemetü és egykimenetű ALU-t igényel az utasításszintü architektúrában. Világos tehát, hogy ez <
a két utasítás összevonható minden olyan számítógép-rendszer elrendezésben, amely rendelkezik a mondott két A£(7-v.al. Ez a példa a skalár utasítások összevonására általánosítható minden olyan utasításpárra, amely mentes mind az adat.-, mind a hardware függőségből eredő kizárástól.
Bármely tényleges utasításfeldolgozó egységben az egy összevont utasításban összevonható skalár utasítások számának lesz egy felső határa. Ezt a felső határértéket be kell építeni az összevonást végző hardware, illetve software egységbe annak érdekében, hogy az összevont, utasításcsoportok (pár, hármas, négyes) ne tartalmazzanak több skálái·* utasítást., mint, amennyit, a végrehajtó hardware egyszerre kiszolgálni képes. Ez a felső határérték szigorúan kizárólag az adott, számítógép-rendszer elrendezés hardware kiépítettségének a függvénye és nem jelent korlátozást sem az összevonásra esélyesnek tartott utasítások számát., sem az éppen elemzés alatt álló adott kódsorozaton végigcsúsztatott ablak méretét illetően.
Általánosságban, minél hosszabb a kódsorozaton végigcsúsztatott ablak, annál magasabb fokú párhuzamosítás érhető el az előnyösebb összevonási lehetőségek miatt. Tekintsük például a következő táblázatban szereplő utasítássorozatot:
XI | bármely összevonható utasítás |
X2 | bármely összevonható utasítás |
LOAD Rl,(X) | Rl <— az X memóriarekesz tartalma |
• »· · ···
53.968/KÖ
ADD | R3, Rl | R3 <— R3+R1 |
SUB | Rl, R2 | Rl <— R1-R2 |
COMP | Rl, R3 | Rl és R3 összehasonlítása |
X3 | bármely összevonható utasítás | |
X4 | bármely összevonható utasítás |
Ha a hardware kiépítésből eredő felső határ az összevonásban kettő(azaz ugyanazon ciklusban legfeljebb két utasítás hajtható végre egymással párhuzamosan), akkor ezt az utasítássorozatot az összevonást végző software áttekintőképességének függvényében többféleképpen össze lehet vonni.
Ha ez az áttekintés négy utasításra terjed ki(vagyis ha az utasításfolyam hosszában végigcsúsztatott ablak négy utasítás hosszú), akkor az összevonó program először az (XI, X2, LOAD, ADD) utasításnégyest vizsgálná, majd az ablakot egy utasítással elöbbrecsúsztatva az (X2, LOAD, ADD, SUB) négyest, majd a (LOAD, ADD, SUB, COMP), azután az (ADD, SUB, COMP, X3), végül pedig a (SUB, COMP, X3, X4) utasításnégyest, és ebből az összevont utasítások számára a következő párokat alakítaná ki:
[ — XI] [X2 LOAD] [ADD SUB] [COMP X3] [X4 —]
A találmány által szolgáltatott ezen optimális párosítás teljesen kiiktatja az adatmozgatás és az összeadás, illetve a kivonás és a hasonlítás közötti kizárásokat, emellett fenntartja azt a lehetőséget, hogy az XI utasítást az azt megelőző, az X2 utasítást pedig az arra következő utasítással össze lehessen vonni .
Az utasításodat szigorúan FIFO(First In First Out) elven, dinamikusan kiosztó szuperskalár gép ezzel szemben csupán a kö21 • · · · ♦·· ···· ·· « · · '* · • * « · ♦ · · · · · ···· ··· * ·· · 53.968/KÖ vetkező párokat vizsgálná a lehetséges összevonás szempontjából:
[XI X2] [LOAD ADD] [SUB COMP] [X3 X4]
Ez a fajta rugalmatlan párosítás a különféle kizárási helyzetek teljes terhét kell, hogy viselje és a párhuzamosítás előnyeinek csupán egy részét képes biztosítani.
A 13. ábrán látható, önmagáért beszélő folyamatábra azoknak a lépéseknek a sorozatát mutatja, amelyeken keresztül eldől, hogy egy adott számítógép-rendszer elrendezésben az utasításfolyam mely egymást követő elemei tartoznak olyan kategóriákba vagy osztályokba, amelyek az összevont utasítások képzése vonatkozásában szóba jöhetnek.
Rátérve az 5. ábra ismertetésére, egy számítógép-rendszerben az összevonás több ponton történhet meg, akár a hardware, akár a software oldalt tekintjük. Mindegyik megoldásnak megvan a maga előnye és a hátránya is. Az 5. ábra azokat a lépcsőfokokat, mutatja be, amelyeket bármely program végigjár, amíg eljut a forráskódtól a tényleges végrehajtásig. A fordítási fázisban a forrásprogram gépi kódba lesz lefordítva, majd ez a gépi kódú program a 46 lemezegységben tárolódik el. A végrehajtás során a program a 46 lemezegységről átíródik az adott 50 számítógép-rendszer1 elrendezés 48 fötárjába; az utasításokat a megfelelő 52, 54 és 56 utasítás-feldolgozó egységek hajtják végre. Az összevonás ennek az útnak bármelyik pontjába beilleszthető. Általánosságban igaz, hogy a CPU-khoz minél közelebb történik az összevonás, annál feszítőbbé válnak az időzítési kérdések. Minél távolabb helyezkedjék el az összevohó egység a CPU-tól, annál több utasítás vizsgálható meg az utasításfolyam hosszában végigcsúsztatott. ablakban
53.968/KÖ • · · a teljesítményt legjobban megnövelő, as optimálishoz legközelebb álló összevonás megállapítása végett. Ez a fajta, a korai szakaszban végrehajtott összevonás viszont nagyobb mértékben hat a i rendszer többi részének kialakítására a kiegészítő fejlesztések és költségigények formájában.
A találmány egyik lényeges célkitűzése olyan eljárás kidolgozása, amelynek révén a már meglévő, magasszintű nyelveken írott programok, illetve a már meglévő assembly nyelvű programok a különböző funkcionális egységek által történő párhuzamos végrehajtásra alkalmas szomszédos utasításokat azonosító software eszköz igénybevételével feldolgozhatok.
A 6. ábra folyamatábrája adott assembly nyelvű programnak a rendszer és a hardware architektúrájával egyaránt összhangban megállapított 58 összevonási szabályok alapján összevont utasításkészletű programmá történő átalakításának lépéseit szemlélteti. Az assembly nyelvű program bemeneti mennyiségként kerül az összevont utasításfolyamot előállító 59 összevonást végző software egységre. Az egymást követő, állandó hosszúságú utasításblokkokat az 59 összevonást végző software egység elemzi. Az utasításfolyamban az összevonás céljából együtt kezelt utasításcsoportot tartalmazó egyes 60, 62 és 64 blokkok hossza az összevonást végző egység összetettségének függvénye.
Amint az a 6. ábrából látható, ez az adott összevonást végző egység két lépcsőben hajtja végre az egyenként m darab állandó hosszúságú utasításból álló blokkok összevonását. Az első lépcsőben megvizsgálja, vajon az első és második utasítás összevonható párt alkot-e, majd· elvégzi ugyanezt a vizsgálatot a második és • · ·
53.968/KÖ harmadik, a harmadik és negyedik utasításra, és így tovább a blokk végéig. Mihelyt előállt az összevonásra alkalmas C1-C5 párok összessége, az összevonó egység kiválasztja az összevont, utaI sítások sorozatának legkedvezőbb változatát és elvégzi ennek az optimális sorozatnak a jelzöbitekkel vagy azonosító bitekkel történő kijelölését.
Mihelyt az összevonásra alkalmas C1-C5 párok azonosítása megtörtént, további igen kívánatos lépés annak eldöntése, melyek az optimális, szomszédos skalár utasítások alkotta, párhuzamos végrehajtásra szánt összevont utasítások. A mutatott példában (az elágazás esetét figyelmen kívül hagyva) az alábbi különböző utasítássorozatok lehetségesek: II, C2, 14, 15, C3, C5, 110; II, C2, 14, 15, 16, C4, 19, 110; Cl, 13, 14, 15, C3, C5, 110; Cl, 13, 14, 15, 16, C4, 19, 110. Az adott hardware kiépítés függvényében az összevonó egység kijelölheti a legkedvezőbb összevont utasítássorozatot és az összevont utasítások eme legkedvezőbb sorozatát jelző- vagy azonosító bitekkel láthatja el.
Amennyiben nincs legkedvezőbb sorozat, akkor valamennyi öszszevonható szomszédos skalár utasítás ellátható a megfelelő azonosító bitekkel, így a több összevont utasítás közötti célcímre történő elágazás az ott található összevont utasításokat a lehető legjobban ki fogja tudni használni(lásd 14. ábra). Ahol több öszszevonó egység szerepel az elrendezésben, ott lehetséges az utasitásfolyam több egymást követő blokkjának egyidejű feldolgozása.
A software összevonó egység tervezését ehelyütt nem tárgyaljuk, mivel a részletek minden egyes utasításkészlet architektúrára és az azt megvalósító hardware-re nézve igen specifikusak. Bár • · ·
53.968/KÖ az ilyen összevonó programok tervezése sokban emlékeztet az utasításkiadást és egyéb funkciók optimalizálását az adott gépi architektúra függvényében végző korszerű fordítók tervezésére, az ilyesfajta összevonás kritériumrendszere a találmányt kizárólagosan jellemzi, amint az a 13. ábrából mindennél jobban kiderül. Az alaphelyzet mindkét esetben az, hogy egy bemenő program, valamint az utasításkészlet és az azt megvalósító hardware elrendezés leírása alapján egy másik programot kapunk eredményként. A korszerű fordítók esetében ez utóbbi program a már meglévő utasítások egy másik, optimalizált sorozata. A találmányt tekintve azonban ez az eredmény-program egymással párhuzamos szomszédos skalár utasítások alkotta összevont utasításoknak a nem összevont skalár utasításokkal kevert sorozata, amelynek ugyancsak részét képezik a végrehajtáshoz szükséges megfelelő vezérlöbitek.
Természetesen egyszerűbb feladat az utasításfolyamot összevont utasítások keresése céljából az utasítások kezdetét jelző referenciapontok ismeretében feldolgozni. Referenciapont alatt annak az ismeretét értjük, hogy a szöveg melyik byte-ja egyben egy utasítás első byte-ja is. Ezt az információt hordozhatja valamely jelzömezö vagy egyéb, az utasításhatárok elhelyezkedéséről tájékoztató azonosító. A legtöbb számítógép-rendszerben az ilyen referenciapontok csak a fordító számára ismertek a fordítás ideje alatt, illetve a CPU számára az utasítások lehívásakor. A referenciapontoknak a fordítás és az utasítások lehívása közötti időben történő azonosítása azonban csak egy speciális referenciapont-azonosító függelékezés közbeiktatása révén lehetséges.
Abban az esetben, ha az összevonásra a fordítást követően
53.968/KÖ kerül sor, a fordító függelékek hozzáadásával jelezheti(lásd 11. ábra), hogy mely byte-ok tartalmazzák egy-egy utasítás első, byte-ját, illetve melyek tartalmaznak adatot. Ez a többletinformáció az összevonó egység hatékonyabb működését segíti elő az utasítások elhelyezkedésének pontos ismertetése révén. Természetesen az is lehetséges, hogy a fordító más módszerrel azonosítsa az utasításokat és tegyen különbséget utasítások és adatok között és így biztosítsa az összevonó egységnek az utasításhatárok ismeretéhez szükséges többletinformációt.
Amennyiben ismertek az utasításhatárokra vonatkozó információk, a vonatkozó azonosító függelékbitek előállítása közvetlenül történik az adott rendszer hardware kiépítéshez és architektúrához megállapított összevonási szabályok alapján(lásd 8. ábra). Amennyiben az utasításhatárokra vonatkozóan semmilyen információ nem ismert és az utasítások különböző hosszúságúak lehetnek, öszszetettebb problémával állunk szemben(lásd 9. és 16. ábrák). Ezek az ábrák történetesen azt a kitüntetett kódolási eljárást tükrözik, amelyet a következőkben a 2A táblázat segítségével mutatunk be részletesebben; a kétszintes kódolási eljárás azzal jellemezhető, hogy 1 értékű függelékbitet állít elő akkor, ha az utasítás az utána következő utasítással együtt összevont párt alkot, 0 értékű függelékbitet pedig abban az esetben, ha az a rákövetkező utasítással nem vonható össze.
Abban a vezérlömezöben, amelyet az összevonást végző egység ad az utasításokhoz, az összevont utasítások végrehajtására vonatkozó információ' van és ez az információ lehet olyan sok vagy olyan kevés, mint az az adott rendszerben a hatékony működéshez • · · · · • · · · · · ···· ··· · ·· · 53.968/Kö indokolt. A 12. ábra a 8 bites vezérlőmezöre mutat példát. Tény, hogy a legegyszerűbb kiviteli alak esetében csupán az első vezérlőbitre van szükség az összevont utasítás kezdetének jelzéséhez, a többi vezérlöbitek az utasítások végrehajtásához esetleg szükséges egyéb segédinformációkat hordozhatják.
Egy másik, a kétszintes kódolásban és a nagyobb számú utasításból összetevődő összevont utasításokra egyaránt alkalmazható kódolási eljárásban az első vezérlöbit. értéke 1 annak jelzése végett, hogy az ezzel megjelölt utasítás egy összevont, utasítás első eleme. Az összevont, utasítás összes többi eleméhez tartozó első vezérlöbit, értéke 0 lesz. Bizonyos esetekben nem lesz lehetséges adott utasítást más utasításokkal összevonni; ekkor az utasítás mint egy egyelemes összevont utasítás fog megjelenni. Ez úgy realizálható, hogy az első vezérlöbit 1 értékűre lesz beállítva éppúgy, mint a rákövetkező utasításhoz tartozó első vezérlöbit.. Ezt a másik fajta kódolási eljárást alkalmazva a dekódolást végző hardware a skalár utasításokhoz tartozó összes azonosító bit együttes figyeléséből meg fogja tudni állapítani, hány skalár utasításból áll az összevont, utasítás, inkább, mint az összevont utasítás kezdetét, jelző egy azonosító bit. figyeléséből, ahogyan azt a 2A-2C táblázatok jól mutatják.
A 7. ábra folyamatábrája a 66 hardware vagy a 67 software utasítás-összevonó egység által generált, összevont, utasításkészletű program végrehajtását, szemlélteti. Az összevont utasításokat is tartalmazó byte-folyam az összevont utasításokhoz való gyors hozzáférést megkönnyítő puffer szerepét betöltő 68 összevont utasítás cache-be íródik át. A 69 összevont utasítás-kiadó logika az
53.968/KÖ • · ·· · ♦ · • · · · · • · · · · · ···· ··· · ·· * utasításokat a 68 összevont utasítás cache-ből hívja le és az azokat alkotó egyes skalár utasításokat a párhuzamos végrehajtás céljából a megfelelő funkcionális egységhez rendeli hozzá.
Hangsúlyozzuk, hogy adott számitógép-rendszerben az olyan utasítás-végrehajtó egységek((77 EU), mint például a 71 ALU, skalár utasítások egymást követő, egymagukban történő vagy összevont skalár utasítások egyidejű, más skalár utasításokkal párhuzamosan történő végrehajtására alkalmasak. Tény ezen felül, hogy ez a fajta párhuzamos végrehajtás több különféle végrehajtó egységre (mint például a 73 lebegőpontos aritmetikai egység[FP], a 75 címszámító /LÍ7[^t7] , illetve az adott típushoz tartozó több darab végrehajtó egység[FFf, FP2 stb.]) kiterjedhet, a számítógép architektúrájának és az adott számítógép-rendszer kiépítettségének függvényében. Ilyenformán a találmányt megvalósító hardware konfiguráció gyakorlatilag korlátlan számú végrehajtó egységgel bővíthető a párhuzamos végrehajtás teljesítményének fokozása érdekében. Azáltal, hogy több létező utasítást, a találmány egyetlen összevont utasításba von össze, lehetővé válik a számítógép-rendszer elrendezésben szereplő egy vagy több utasításfeldolgozó egység számára az összevont utasításban szereplő egyes skalár utasítások hatékony dekódolása és párhuzamos végrehajtása a hagyományos párhuzamos feldolgozást megvalósító számítógép-rendszerekben megszokott késleltetés nélkül.
A jelen alkalmazás legegyszerűbb kódolási eljárása értelmében az utasitásfolyam minden egyes szöveg(utasítás- vagy adat-) byte-jához a minimális mennyiségű egy-egy bitnyi vezérlöinformárt ció íródik hozzá. Általánosságban a megfelelő vezérlő információt
53.968/KÖ tartalmazó függelék az összevont utasításfolyam minden egyes eleméhez hozzáadható lenne, azaz az egyéb utasításokkal össze nem vont skalár utasításokhoz éppúgy, mint az összevont utasitáspárokat, -hármasokat vagy nagyobb csoportokat alkotó egyes össze'vont skalár utasításokhoz. Az elkövetkezendőkben azonosító bit alatt a függeléknek az összevont utasítást alkotó egyes összevont. skalár utasításokat azonosító és azokat a fennmaradó, össze nem vont skalár utasításoktól megkülönböztető részét értjük. Az ilyen öszsze nem vont skalár utasítások az összevont utasításfolyamban is benne maradnak és amikor rájuk kerül a sor, egymagukban lesznek lehíva és végrehajtva.
Az olyan rendszerben, ahol az utasítások állandó 4 bit hoszszúságúak, a szöveg minden négy byte-jához kell függeléket rendelni. Ha az utasítások kezdete bármilyen byte-határon lehet, úgy a szöveg minden egyes byte-jához kell függeléket rendelni.
A bejelentés szerinti kiviteli alak esetében az IBM 370 rendszer valamennyi utasítása félszavak szerint(kétbyte-onként) van betördelve, hossza pedig lehet kettő, négy vagy hat byte; ekkor félszavanként egy, azonosító biteket hordozó függelék szükséges. A szomszédos utasításokat, legfeljebb páronként összevonó példát tekintve, ekkor az 1 értékű azonosító bit. azt. jelenti, hogy a kérdéses byte-tal kezdődő utasítás össze, van vonva a rákövetkező utasítással, míg a 0 értékű azonosító bit azt jelzi, hogy a kérdéses byte-tal kezdődő utasítás nem része összevont utasításnak. Figyelmen kívül lesznek hagyva azok az azonosító bitek, amelyek olyan félspavakhoz tartoznak, amelyek nem egy utasítás első byte-ját tartalmazzák. Az összevont, pár második tagjának • · ·
53.968/KÖ első byte-jához tartozó azonosító bit ugyancsak figyelmen kívül lesz hagyva(kivéve bizonyos elágazási helyzeteket). Az azonosító bitek ilyetén kódolási eljárását a kétszintű összevonás legegyl szerübb esetében alkalmazva a CPU-nak a végrehajtás során mindössze egyetlen bitre van szüksége ahhoz, hogy az összevont utasítást azonosítsa.
Abban az esetben, ha egyetlen összevont utasításon belül kettőnél több skalár utasítás is összevonható, a megfelelő vezérlőinformáció biztosítására további azonosító bitekre lehet szükség. Ennek ellenére van lehetőség a vezérlőinformációt, hordozó bitek számának minimalizálására. így például még a nagyszámú utasítás összevonását, megengedő eljárás esetében is lehetséges a vezérlőinformáció mértékét utasításonként, egyetlen biten tartani: az 1 értékű azonosító bit szerint az utasítást a reá következővel össze kell vonni, a 0 értékű azonosító bit pedig azt jelenti, hogy az utasítást a rákövetkező utasítással nem szabad összevonni. A négy darab skalár utasításból álló összevont utasításnégyeshez tartozó azonosító bitek sorozata az (1, 1, 1, 0) lesz. Mint azt egyéb helyeken az összevont utasítások végrehajtásával kapcsolatban már leírtuk, a végrehajtás során figyelmen kívül lesznek hagyva az olyan félszavakhoz tartozó azonosító bitek, amelyek nem utasítások és így nem is szerepelhet, bennük műveleti kód.
Az alábbiakban részletesen ismertetendő kitüntetett kódolási eljárás szerint az összevont utasításban ténylegesen összevont utasítások számát-'jelző azonosító bitek minimális száma az egy összevont utasításban összevonható skalár utasítások maximális • · ·· · 4 · • · ♦ · · • · « · · ·
44·· ··· 4 44 ·
53.968/KÖ számának 2 alapú logaritmusa, felkerekítve a legközelebb eső egész számra. Ha ez a maximális szám kettő, akkor elegendő egyetlen azonosító bit egy-egy összevont utasításhoz. Ha ez a maximum három vagy négy, úgy összevont utasításonként kettő darab azonosító bitre van szükség. Ha pedig a maximális szám értéke öt, hat, hét vagy nyolc, akkor az összevont utasításonként szükséges azonosító bitek száma három. A kódolási séma az alábbi 2A, 2B és 2C táblázatokból olvasható ki:
2A táblázat(legfeljebb két utasítás)
Azonosító összes bitek Kódolt jelentés összevonás
Az utasítás nincs összevonva nincs a rákövetkező utasítással
Az utasítás a rákövetkező egy kettő utasítással van összevonva
2B táblázat(legfeljebb négy utasítás)
bitek összes
Kódolt jelentés
nincs
Az utasítás nincs összevonva a rákövetkező utasítással
Az utasítás a rákövetkező egy kettő utasítással van összevonva
Az utasítás a rákövetkező két három utasítással van összevonva r>
Az utasítás a rákövetkező három négy utasítással van összevonva ·· « ···* ♦ ··* ···· > * ·< · · · • « ♦ · · • · · · · ·«·· ··· · ·* «
53.968/KÖ
2C táblázat(legfeljebb nyolc utasítás)
Azonosító | - | összes | |
hitek | Kédo.lt jelentés | összevonás | |
000 | Az utasítás | nincs összevonva | nincs |
a rákövetkező utasítással | |||
001 | Az utasítás | a rákövetkező egy | kettő |
utasítással | van összevonva | ||
010 | Az utasítás | a rákövetkező két | három |
utasítással | van összevonva | ||
011 | Az utasítás | a rákövetkező három | négy |
utasítással | van összevonva | ||
100 | Az utasítás | a rákövetkező négy | öt |
utasítással | van összevonva | ||
101 | Az utasítás | a rákövetkező öt | hat |
utasítással | van összevonva | ||
110 | Az utasítás | a rákövetkező hat | hét |
utasítással | van összevonva | ||
111 | Az utasítás | a rákövetkező hét | nyolc |
utasítással | van összevonva |
Világos, hogy minden egyes félszőhoz függeléket kell rendelni, de a kitüntetett kódolási eljárás szerint a CPU a végrehajtás alatt álló utasltásfolyam legelső eleméhez tartozó kivételével az összes függeléket figyelmen kívül hagyja. Más szavakkal, adott byte-ról a hozzá tartozó azonosító bitek vizsgálata révén dönthető el, hogy része-e, összevont utasításnak. Ha a byte-tal nem kezdődik összevont utasítás, akkor a hozzá tartozó azonosító bitek
53.968/KÖ ··· < ·· · · « * · • · « · · < *1» ί ·· · értéke rendre zérus. Ha a byte a két skalár utasításból álló öszszevont utasítás kezdete, úgy az azonosító bitek értéke egy az első és zérus a második utasításra. Ha a byte az összevont utasításhármas kezdetén van, akkor az első utasításhoz tartozó azonosító bitek értéke kettő, a második utasításhoz tartozó azonosító bitek értéke egy és a harmadik utasításhoz tartozó azonosító bitek értéke zérus. Más szavakkal, az egyes félszavakhoz tartozó azonosító bitek megmondják, hogy az adott byte összevont utasítás kezdete-e és ezzel egyidejűleg azt is, hány utasításból áll az összevont utasításcsoport.
Az Összevonásrra alkalmazott ezen eljárás feltételezi azt, hogy amennyiben három utasítás egy összevont utasításhármasba lesz összevonva, akkor a második és harmadik utasítás is össze lesz vonva egy összevont utasításpárba. Más szavakkal, ha a program, elágazás folytán, az összevont utasításhármas második utasítására ugrik rá, az ezen második utasításhoz tartozó egy értékű azonosító bit. arra utal, hogy a második utasítás a harmadikkal együtt összevont utasításpárt alkot és mint ilyen, egymással párhuzamosan hajtódik végre még akkor is, ha a hármas csoport első utasításának végrehajtására nem került, is sor.
Természetesen a találmány nem korlátozódik erre a kitüntetett kódolási eljárásra. A találmányi gondolat, által képviselt oltalmi körön belül több más kódolási szabályrendszer elképzelhető (mint például a korábban ismertetett másik kódolási eljárás).
Az ezen a területen járatos szakemberek számára nyilvánvaló, hogy a találmány szerint· egy adott számítógép-rendszerben az utasításfolyamot elegendő egyszer összevonni, ezt követően pedig az
53.968/KÖ összevont utasítások lehívása a bennük szereplő azonosító bitek egyidejű lehívásával együtt jár. így elkerülhető a cseppet sem hatékony, az utolsó pillanatban történő döntéshozás és a skalár utasításoknak a párhuzamos végrehajtásra való kijelölése, amely az úgynevezett, szuperskalár gépekben mindannyiszor.-előfordul, valahányszor ugyanazon vagy különböző utasítások a végrehajtás előtt le lesznek híva.
A bináris utasítássorozat összevonása, annak minden előnyének dacára, igen körülményessé válhat bizonyos számítógép architektúrákban, amennyiben nem áll rendelkezésre az az eljárás, amellyel az utasításfolyamon belül az egyes utasítások határait meg lehet állapítani. Ez a vizsgálat igen bonyolulttá válik különböző hosszúságú utasítások esetén és még tovább bonyolódik, ha az adatok és utasítások keveredése megengedett., illetve ha lehetséges az utasításfolyam közvetlenül történő módosítása. A végrehajtás pillanatában természetesen pontosan tisztában kell lennni az utasításhatárok helyzetével. Mivel azonban az összevonás jóval az utasítások végrehajtása előtt történik, különleges, az utasítások összevonását az utasításhatároknak és az egyes byte-ok tartalmának előzetes ismerete nélkül elvégző eljárás került, kidolgozásra. Ezt. a szomszédos skalár utasításpárokból, illetve a skalár utasítások nagyobb csoportjából összevont utasításokat képző eljárást az elkövetkezendőkben általánosságban fogjuk ismertetni. Az eljárás egyként, alkalmazható valamennyi hagyományos típusú architektúra utasításkészletére, ideértve a RISC( JReduced Instruction Set. Computer csökkentett utasításkészletű számítógép) architektúrákat is, amelyek esetében az utasítások rendszerint ál • · ·
53.968/KÖ landő hosszúságúak és az adatok és utasítások keveredése általában nem megengedett. Az összevonási eljárás további részletei az 1990 május 4.-én benyújtott 07/519.382 számú, “Általánosított eljárás összevont utasítások képzésére utasitásszintű párhuzamos processzorokhoz című bejelentésből ismerhetők meg.
Általános megfogalmazás szerint az összevonási eljárás az utasításfolyam kettő, illetve annál több elemét vonja össze az egyes utasítások kezdőpontjának és hosszának előzetes ismerete nélkül. Az utasításoknak jellegzetesen része az előre meghatározott mezőben elhelyezkedő, az utasítás típusát és hosszát azonosító műveleti kód. Azokat a szomszédos utasításokat, amelyek alkalmasak a párhuzamos végrehajtásra, az eljárás a megfelelő, az utasítások összevonhatóságát jelző függelékekkel ruházza fel. Az IBM 370 rendszer architektúrában, ahol az utasítások hossza kettő, négy vagy hat byte lehet, a műveletikód-mezők elhelyezkedésére nézve az eljárás a becsült utasításhossz alapján feltételezéssel él. A feltételezett műveleti kódhoz rendelt függelékek értékét az összevonást végző egység megőrzi, a feltételezett müveletikód-mezőben szereplő utasításhossz-kőd alapján pedig a lehetséges utasítások teljes sorozatát fogja előállítani. Mihelyt az összevonó egység egy tényleges utasításhatárra bukkan, a vonatkozó helyes függelékértékek fogják azonosítani az összevont utasításaok kezdőpontjait, a többi, nem a valós helyzetet tükröző függelék pedig figyelmen kívül lesz hagyva.
Ezt a különleges összevonási eljárást a 8.-9., illetve a
14.-15. ábrák rajzÍai szemléltetik; a megállapított összevonási szabályok szerint a kettő, illetve négy byte hosszúságú utasítá
53.968/KÖ sok egymással összevonhatók(vagyis ebben a konkrét számítógép elrendezésben egy kétbyte-os utasítás párhuzamosan végrehajtható egy másik kétbyte-os, illetve négybyte-os utasítással). Ezen pél1 daképpen megállapított összevonási szabályok értelmében továbbá a hatbyte-os utasítások egyáltalán nem alkothatnak összevont utasítást (vagyis az adott számítógép elrendezésben a hatbyte-os utasítások csak egymagukban, sorosan hajthatók végre). Természetesen a találmány nem korlátozódik ezekre a példaképpen megállapított összevonási szabályokra, hanem bármely, az adott számítógép architektúrának egy konkrét kiépítésére az utasítások párhuzamos végrehajtásának kritériumrendszerét felállító összevonási szabályrendszerre alkalmazható.
A találmány leírásában példaképpen bemutatott ezen összevonási eljárásokban szereplő utasításkészletet az IBM 370 rendszer architektúrából vettük. Az utasításokhoz tartozó műveletikód-mezö vizsgálata alapján megállapítható az utasítás hossza és fajtája, ezután következik az adott utasításhoz tartozó azonosító biteket tartalmazó függelék (a későbbiekben részletesen ismertetésre kerülő) előállítása. Természetesen a találmány nem korlátozódik egyetlen konkrét utasításkészletre vagy architektúrára sem és a korábban említett összevonási szabályok csupán szemléltetési célokat szolgálnak.
Az ezen kiviteli alakokban az összevont utsítások azonosítását célzó kitüntetett kódolási sémákat a korábban már ismertetett 2A-2C táblázatok tartalmazzák.
Az első esetben, amidőn az állandó hosszúságú utasítások közé nem keveredhet adat és a műveleti kód elhelyezkedését azono36
53.968/Kö sító referenciapontok ismertek, as összevonás az arra az adott rendszerre megállapított összevonási szabályok szerint haladhat. Tekintve, hogy a műveleti kód számára fenntartott mező az utasíi táshosszat. is tartalmazza, könnyen előáll a skalár utasítások sorozata, amely sorozat minden egyes eleme a rákövetkező utasítással párhuzamosan történő végrehajtás esetleges résztvevőjének tekinthető. A függelékben kódolt egyfajta érték szerint az utasítás nem vonható össze a rákövetkező utasítással, míg a függelékben szereplő másik fajta kódolt érték azt jelenti, hogy az utasítás az utána következő utasítással párhuzamosan végrehajtható összevont egységet alkot.
A második esetet tekintve, midőn az utasítások hossza változó és közéjük nem keveredhet adat, továbbá ismert a műveleti kód és az utasításhossz(az IBM 370 rendszerben ez a műveleti kód része) elhelyezkedését azonosító referenciapont, az összevonás a megállapított szabályok szerint, folyhat. Amint az a 8. ábrából kiderül, a műveleti kódok a 70 utasításfolyamot a következő részekre bontják: az első utasítás 6 byte hosszú, a második és harmadik utasítások egyaránt két-két. byte hosszúak, a negyedik 4 byte hosszú, az ötödik 2 byte hosszú, a hatodik utasítás 6 byte hosszú, a hetedik és nyolcadik utasítások egyaránt két-két byte hosszúak.
A 8. ábrán szereplő 72 C-vektor az adott 70 utasítássorozatra vonatkozó azonosító biteket tartalmazza; a 70 sorozatnál ismert a legelső utasítás kezdetét jelző referenciapont. Az azonosító bitek értékeibe alapozva a második és harmadik utasítások összevont párt alkotnak, a második utasításhoz tartozó 1 értékű
53.968/KÖ azonosító bit értelmében. Ugyancsak összevont párt alkotnak a negyedik és ötödik utasítások; ezt jelzi a negyedik utasításhoz rendelt 1 értékű azonosító bit. A hetedik és nyolcadik utasítások a hetedik utasításhoz tartozó 1 értékű azonosító bit értelmében szintén összvont utasításpárt alkotnak.
Viszonylag egyszerű a 8. ábrán szereplő 72 C-vektor előállítása abban az esetben, ha az utasítások közé nem keverednek adatbyte-ok és az utasítások egyforma hosszúak, határaik pedig ismertek .
Megint más a helyzet a harmadik esetben, midőn az utasítások közé más típusú byte-ok is keveredhetnek, ám az utasítások kezdetét jelző refertenciapont még megvan. A 11. ábra vázlatosan mutatja az utasítás-referenciapont jelzésének egy lehetséges módját, amennyiben minden egyes félszóhoz külön függelék tartozik, amelynek feladata jelezni, hogy az adott félszó valamely utasítás első byte-ját tartalmazza-e. Ez megtehető mind az állandó, mind a változó hosszúságú utasításokra. A referenciapont ismeretében szükségtelen a byte-folyam adat részének kiértékelése az esetleges összevonások szempontjából. Ennek megfelelően az összevonást végző egység a nem utasítás eredetű byte-okat átugorva figyelmen kívül hagyhatja azokat.
Bonyolultabb a helyzet abban az esetben, amikor a byte-folyam különböző hosszúságú utasításokat tartalmaz(adatok nélkül), de nem ismert az utasítássorozat első elemének kezdőpontja. Mivel az utasítások hossza legfeljebb hat byte lehet és az utasítások két byte-onk^nt vannak betördelve, az utasításfolyam első eleme három lehetséges ponton kezdődhet. Ennek megfelelően az el
53.968/KÖ járás a 79 byte-folyamban mind a három lehetséges kezdőpont lehetőségét sorra veszi a 9. ábrán szemléltetett módon.
Az 1. sorozat az első byte-ot tekinti az első utasítás kézI döpontjának és az összevonást is erre a feltételezésre alapozva viszi végig. Ebben a kitüntetett kiviteli alakban a hosszmezőben szereplő érték a lehetséges utasításokra vonatkozó C-vektor értékekre nézve meghatározó jelentőségű. Ennélfogva az 1. sorozathoz tartozó 74 C-vektorban csak a 2 és 4 byte hosszú utasításokból képzett összevont párok első eleméhez tartozik 1 értékű azonosító bit.
A 2. sorozat azzal a feltételezéssel él, hogy az első utasítás a harmadik byte-tal(azaz a második félszó kezdőpontján) kezdődik és a további vizsgálat is ennek figyelembevételével zajlik. A harmadik byte hosszmezőjében található érték 2, ami azt jelenti, hogy a következő utasítás az ötödik byte-tal kezdődik. Az előző utasítások hosszmezőiben található értékek szerint előrehaladva a 2. sorozat lehetséges utasítás-összetétele és a 76 C-vektorban előállított azonosító bitek az ábráról leolvashatók.
A 3. sorozat abból a feltételezésből indul ki, hogy az első utasítás az ötödik byte-tal(vagyis a harmadik félszó elején) kezdődik és a további vizsgálat is ennek figyelembevételével zajlik le. Az ötödik byte hosszmezöjében található 4 érték értelmében a következő utasítás a kilencedik byte-tal kezdődik. Az egyes hosszmezökben található értékek szerint előrehaladva megállapítható a 3. sorozat lehetséges utasításvariánsa és az abból származtatható, a 78 C-?vektorban összegzett azonosító bitek.
Bizonyos esetkben a lehetséges három különféle utasítássoro
53.968/KÖ zat egy és ugyanazon sorozattá konvergál. Figyeljük meg, hogy a 9. ábrán a három sorozat a nyolcadik byte 80 végpontjától kezdve tart ugyanazokhoz az utasításhatárokhoz .A 2. és 3. sorozatok, míg az utasításhatárokat nézve a 4. byte 82 végpontjától kezdve konvergálnak, az összevonásban eltérő fázisban vannak egészen a tizenhatodik byte végéig. Más szavakkal, a két sorozat ugyanazon utasításfolyainon belül eltérő párokat vizsgál a párhuzamosíthatóság szempontjából. Mivel a 84 ponton a tizenhetedik byte-tal egy nem összevonható utasítás kezdődik, az eltérő fázisú konvergenciának vége.
Ahol nem áll elő érvényes konvergencia, ott mind a három lehetséges utasítássorozatot az ablak végéig nyomon kell követni. Természetesen ahol előáll az érvényes konvergencia és ezt az öszszevonó egység észleli, a sorozatok száma háromról kettőre, illetve bizonyos esetekben kettőről egyre csökken.
A konvergenciát megelőzően tehát, az összes lehetséges utasítássorozathoz a feltételezett utasításhatárok megállapítása és a lehetséges összevont utasításokat azonosító, az egyes utasításokhoz rendelt biteknek az így behatárolt utasítások mindegyikéhez történő hozzárendelése kell, hogy következzék. A 9. ábra nyilvánvalóvá teszi, hogy ez az eljárás a szöveg minden két byte-jához három különböző azonosító bitet rendel. Az említett, első, második és harmadik esetekre ismertetett előzetes feldolgozási eljáráshoz való hasonlatosság megőrzése céljából kívánatos a három lehetséges sorozatnak egyetlen azonosítóbit-sorozattá történő egyesítése, ahol minden egyes félszóhoz csupán egyetlen bit tartozik. Mivel csupán arra az információra van szükség, hogy az adott utasí40 ····
53.968/Kö tás össze van-e vonva a rákövetkező utasítással, a kérdéses 86 CC-vektor a három sorozat bitenkénti VAGY kapcsolatának képzése révén áll elő.
I
A párhuzamos végrehajtás szempontjából az összetett CC-vektorban szereplő összetett azonosító bitek az 1.-3.,· sorozatokhoz rendelt C-vektorokban szereplő azonosító bitekkel egyenértékűek. Más szavakkal, a CC-vektor összetett azonosító bitjei a három lehetséges sorozat bármelyikének helyes végrehajtását lehetővé teszik, legyen bár szó összevont utasítások párhuzamos, illetve össze nem vont skalár utasítások soros végrehajtásáról. Az öszszetett azonosító bitek az elágazás esetét is hibátlanul képesek kezelni, igy például ha a program a kilencedik byte 88 kezdőpontjára ugrik rá, akkor a kilencedik byte bizonyosan valamely utasítás kezdetét tartalmazza; ettől eltérő eset, a program hibáját jelenti. A kilencedik byte-hoz tartozó 1 értékű azonosító bit felhasználása az utasításnak a rákövetkezővel történő párhuzamos végrehajtását, fogja eredményezni.
A 9. ábrán szemléltetett, és az előbbiekben ismertetett öszszevonási eljárás a 16. ábrán szereplő folyamatábrán követhető nyomon.
Az utasításhatárokat, jelző referenciapontok legkedvezőbben a fordításkor állíthatók elő. A fordítás során lehetséges az egyes utasítások kezdetét jelölő 101 referenciafüggelékek hozzáadása a byte-folyamhoz(lásd 11. ábra). Ez lehetővé teszi, hogy az összevonó egység az egyszerűbb első, második vagy harmadik esetekre kidolgozott eljárás szerint járjon el. Természetesen a fordító más módokon is azonosíthatja az utasításhatárokat, illetve tehet • ·4«
53.968/KÖ különbséget az utasítások és adatok között az összevonó egység dolgának megkönnyítése és a 9. ábrán szereplőhöz hasonló eljárások bonyodalmainak elkerülése érdekében.
i
A 10. ábra a 9. ábrán szereplőhöz hasonló utasításfolyamok kezelését végző összevonó egység egy lehetséges „megvalósítását tünteti fel. Több összevonó egységet(104, 106, 108) láthatunk; a hatékonyság növelése végett ezek száma elérheti a szövegpufferben elhelyezhető félszavak számát. Az adott változatnál a három öszszevonó egység rendre az első, harmadik, illetve ötödik byte-nál kezdi a megfelelő sorozat feldolgozását. A lehetséges utasításso rozat befejezését követően az egyes összevonó egységek a hat byte-tal arrébb kezdődő következő lehetséges sorozatot vizsgálat tárgyává. Az egyes összevonó egységek a szöveg teszik minden egyes félszavához külön (egy-egy C-vektorban szereplő) azonosító bitet rendelnek. A három összevonó egység által előállított három
C-vektor VAGY-kapcsolatát képezve állnak elő az összetett azono sító bit értékek(CG-vektor), amelyek tárolása az általuk Jelzett szövegbyte-okkal együtt történik.
A CC-vektorban összesített összetett azonosító bitek egyik előnyös tulajdonsága az adott sorozatra történő elágazáskor hasznosítható többszörös érvényes összevonási azonosító bitek előállítása. Amint az a 14.-15. ábrákból mindennél Jobban kiderül, ugyanabból a byte-sorozatból többféleképpen alakíthatók ki az összevont utasítások.
A 14. ábra az összevont, utasítások lehetséges kombinációit mutatja arra az esetre, midőn a számítógép legfeljebb két. utasítás egyidejű, párhuzamos kiadására és végrehajtására alkalmas ki • · · ·♦·· ···· »··♦ • · · · · · · • · · · ·
53.968/KÖ építésű. Amennyiben az összevont utasításokat tartalmazó 90 utasításfolyam feldolgozása normális sorrendben történik, a 92 CC-vektorban az első byte-hoz tartozó azonosító bit dekódolása éri telmében az I összevont utasítás lesz elsőnek kiadva párhuzamos végrehajtásra. Amennyiben viszont az ötödik byte-ra ugrik rá a program, az ötödik byte-hoz tartozó azonosító bit dekódolása után a II összevont utasítás lesz kiadva párhuzamos végrehajtásra.
Ehhez hasonlóan a 94 másik összevont, utasításfolyam hagyományos szekvenciális feldolgozásakor a llz, ΡΎ és VIII összevont utasítások lesznek ebben a sorrendben végrehajtva(az egyes összevont utasításokat, alkotó egyes skalár utasítások természetesen egymással párhuzamosan). Ha viszont a program az összevont utasításfolyam harmadik byte-jára ugrik rá, úgy az H és VII összevont utasítások soros végrehajtása következik és a tizenötödik byte-tal kezdődő utasítási.amely történetesen a VIII összevont utasítás második elemét alkotja) egymagában hajtódik végre; mindez a 96 CC-vektorban összegzett azonosító bitek alapján megy így végbe .
Ha a program a hetedik byt.e-ra ugrik rá, abban az esetben a VI és VIII összevont utasítások fognak egymás után végrehajtódni, ha pedig a program a tizenegyedik byte-ra ugrik rá, akkor a VIII összevont utasítás fog végrehajtódni. Ezzel szemben viszont ha az utasításfolyam kilencedik byte-ja az elágazás célpontja, akkor a ( VI összevont utasítás második és a VIII összevont, utasítás első feléből összetevődő) VII összevont utasítás kerül végrehajtásra.
A 96 CC-vektor»ban a IV, VI, illetve VIII összevont utasításokhoz tartozó 1 értékű azonosító bitek figyelmen kívül lesznek
53.968/Kö hagyva abban az esetben, ha akár V, akár a VII összevont utasítás kerül végrehajtásra. Ezzel teljesen összhangban figyelmen, kívül lesznek hagyva az V és VII összevont utasításokhoz tartozó 1 értékű azonosító bitek akkor, ha a IV, VI, illetve VIII összevont utasítások bármelyike hajtódik végre.
A 15. ábra a lehetséges kombinációkat mutatja arra az esetre, ha az adott számítógép-rendszerben legfeljebb három utasítás egyidejű kiadása és végrehajtása lehetséges. Amennyiben az összevont utasításokat tartalmazó 98 utasításfolyam feldolgozása a megszokott rend szerint folyik, akkor a X összevont utasításhármas és a XIII összevont utasításpár kerül végrehajtásra. Ezzel szemben a. programnak a tizenegyedik byte-ra történő elágazása a XI összevont utasításhármas végrehajtását fogja eredményezni, ha pedig a program a tizenharmadik byte-ra ugrik rá, úgy a XII öszszevont utasításhármas hajtódik végre.
A 99 CC-vektorban a XI és XII összevont utasításokhoz tartozó 2 értékű azonosító bitek figyelmen kívül lesznek hagyva abban az esetben, ha a X és XIII összevont utasítások kerülnek végrehajtásra. Másfelől viszont ha a XI összevont utasítás kerül végrehajtásra, úgy figyelmen kívül lesznek hagyva a X, XII és XIII összevont utasításokhoz tartozó azonosító bitek. Ehhez hasonlóan amennyiben a XII összevont utasítás hajtódik végre, figyelmen kívül lesznek hagyva a X, XI és XIII összevont utasításokhoz tartozó azonosító bitek.
Elhelyezkedésétől, illetve a szöveg tartalmának ismertségének mértékétől függően az utasítás-összevonó egység tervezésére számos mód nyílik. A legegyszerűbb esetben kívánatos lenne, hogy
53.968/Kö a fordító referencia-függelékekkel jelezze, mely byte-ok tartalmazzák egy-egy utasítás első byte-ját, illetve melyek tartalmaznak adatot. Ez a többletinformáció az utasítások pontos elhelyezkedése révén az összevonó egység hatékonyabb működését segíti elő. Ez azt jelenti, hogy az összevonás minden esetben visszavezethető az első, második vagy harmadik esetek valamelyikére. A fordító ezen túlmenően a byte-folyamhoz egyéb információkat is illeszthet (ilyen a statikus elágazás-előrejelzés), illetve direktívákkal szolgálhat az összevonó egység számára.
Abban az esetben, ha az összevonandó utasításfolyam a memóriában helyezkedik el, az adatok és utasítások megkülönböztetésének egyéb módjai is elképzelhetők. Ha például az adatrészek előfordulása nem túl gyakori, akkor a függelékeknél kevesebb helyet foglalhat az adatokat tartalmazó memóriarekeszek címének listája. A hardware, és software összetevők ilyen kombinációi az összevont utasítások előállításának számos hatékony módját kínálják.
Míg a találmány leírásában egyes kitüntetett kiviteli alakokkal foglalkoztunk, az ezen a területen járatos szakember szára világos lesz, hogy különféle módosítások és változtatások is elképzelhetők a következő igénypontokban meghatározott találmányi gondolat által képviselt, oltalmi körből történő kilépés nélkül.
Claims (22)
- IGÉNYPONTOK1. Eljárás létező utasításoknak egy adott adatfeldolgozó rendszer elrendezésben történő párhuzamos végrehajtására, beleértve a létező utasításoknak kategóriákba történő besorolását;az utasításfolyamban egymással szomszédos utasítások kategóriáinak összevetését annak eldöntése végett, hogy a kérdéses szomszédos utasítások az adott, adatfeldolgozó rendszer elrendezésben egymással párhuzamosan végrehajthatők-e;az ezen összehasonlító művelet, által egymással párhuzamosan végrehajthatónak minősített szomszédos utasítások megfelelő módon történő azonosítását.
- 2. Az 1. igénypont szerinti eljárás, azzal jellemezve, hogy az említett besorolási és összevetési műveletre az utasításoknak a végrehajtáshoz történő lehívását megelőzően kerül sor.
- 3. Az 1.-2. igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy az említett besorolási művelet az utasításokat legalább egy kategóriába osztja be olymódon, hogy az összehasonlító művelet végén az azonosító művelet, a legalább egy kategóriába tartozó legalább kettő utasítást a párhuzamos végrehajthatóságot, jelző összevonási azonosítóval jelöli meg.
- 4. Az 1.-3. igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy a besorolási művelet a létező utasításokat, legalább kettő, egymással átfedésben nem lévő kategóriába osztja be olymódon, hogy az összehasonlító művelet, végén az azonosító művelet, a legalább két kategóriába tartozó legalább két utasítást a párhuzamos végrehajthatóságot jelző összevonási azonosítóval jelöli • 453.968/KÖ meg.
- 5. Az 1.-4. igénypontok bármelyike szerinti eljárás, azzál jellemezve, hogy az azonosító művelet. az utasítások tárgykódjátJ érintetlenül hagyja mind a sorosan, mind az egy másik utasítással párhuzamosan történő végrehajtás esetén.
- 6. Az 1.-5. igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy az említett besorolási művelet. figyelembe veszi mind az utasítások között, fellépő, adatfüggőségböl eredő kizárásokat, mind az adott adatfeldolgozó rendszer elrendezésbe beépített, kizárásokat, kiküszöbölő funkcionális egységek jelenlétét.
- 7. Az 1.-6, igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy az említett, besorolási művelet. figyelembe, veszi mind az utasítások között, fellépő, hardware függőségből eredő kizárásokat, mind az adott adatfeldolgozó rendszer elrendezésbe beépített, kizárásokat kiküszöbölő funkcionális egységek jelenlétét .
- 8. Az 1.-7. igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy a hasonlítási művelet során adott utasítás a közvetlenül rákövetkező utasítással kerül öszzehasonlításra annak eldöntése érdekében, hogy a két utasítás végrehajtható-e egymással párhuzamosan, majd ezen második és az arra köpzvetlenül következő utasítás párhuzamosíthatóságot. illető vizsgálata következik, az összevont utasítások pedig rendre külön azonosítókkal kerülnek kijelölésre.
- 9. Az 1.-8. igénypontok bármelyike szerinti eljárás, azzal jel- rf lemezve, hogy meghatározásra kerül az utasításfolyam adott, szakaszára az optimális összevont, utasítás-sorozat.·· · <··· ···· ···· • · · · · 4· « · · · · 53.968/Kö ·:” · :*’
- 10. Az 1.-9. igénypontok bármelyike szerinti eljárás, azzal jellemezve, hogy a szomszédos utasítások párhuzamosíthatóságára í vonatkozó döntés nem annyira a műveleti kódokon, mint inkább a hardware kihasználtságon alapszik.
- 11. A gépi utasítások adott sorozatának az adott számitógép-rendszer elrendezésben történő párhuzamos végrehajtásához való előkészítését végző rendszer, ideértve az adott számítógép-rendszerre megállapított, az egyes gépi utasításoknak más gépi utasításokkal együtt történő párhuzamos végrehajthatóságát meghatározó szabályrendszert;az utasításokat tartalmazó bináris utasításfolyamnak az utasításlehívást megelőzően történő feldolgozását végző összevonó egységet, amely az említett szabályrendszert alkalmazva eldönti a szomszédos utasításokról, hogy azok az adott számítógép-rendszer elrendezésben egymással párhuzamosan végrehajthatók-e és előállítja az egyes utasításokat azonosító megfelelő vezérlőmezöve1 kiegészített skalár utasításokból képzett Összevont utasítások sorozatát.
- 12. A 11. igénypont szerinti rendszer, azzal jellemezve, hogy az említett összevonó eszköz nem más, mint a fordító vagy az utófordító részeként használt software elöfeldolgozó program.
- 13. A 11.-12. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy az említett összevonó eszköz nem más, mint az utasításokat a cache-ből történő lehívásukat megelőzően feldolgozó hardware elöfeldolgozó egység.
- 14. A 11.-13. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy az összevonó eszköz a párhuzamosan végrehajtható53.968/KÖ szomszédos utasításokból álló párokat megjelölő vezérlőmezökkel kiegészített összevont utasítássorozatot állít elő.£
- 15. A 14. igénypont szerinti rendszer, azzal jellemezve, hogy az iösszevonó eszköz a párhuzamosan végrehajtható szomszédos utasításokból álló három- vagy többelemű csoportokat megjelölő vezérlőmezőkkel kiegészített összevont utasítássorozatot állít elő.
- 16. A 11.-15. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy az említett, vezérlömezö minden egyes összevont utasításhoz legalább egy azonosító bitet rendel.
- 17. A 16. igénypont szerinti rendszer, azzal jellemezve, hogy az említett vezérlőmezőnek az azonosító bit részen kívül része egy attól különböző vezérlőbit rész is.
- 18. A 11.-17. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy a vezérlömezö az összevont utasításokat alkotó minden egyes különálló skalár utasításhoz legalább egy azonosító bitet rendel.
- 19. A 18. igénypont szerinti rendszer, azzal jellemezve, hogy a vezérlőmező az összevont utasításokban nem szereplő minden egyes különálló skalár utasításhoz legalább egy azonosító bitet rendel.
- 20. A 11.-19. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy az említett szabályrendszer nem annyira a műveleti kódokon, mint inkább a hardware kihasználtságon alapszik.
- 21. Adott számítógép-rendszer elrendezésben történő párhuzamos végrehajtásra szánt utasítássorozatot előállító rendszer, amelynek része a létező utasításoknak kategóriákba történt besorolása aszerint, hogy a különböző kategóriákba tartozó utasítások az adott4 · 4 453.968/KÖ számítógép elrendezésben egymással párhuzamosan végrehajthatók-e;a bináris byte-folyam részeként érkező skalár utasításokat bemeneti mennyiségként fogadó, az említett besorolás alapján az adott számítógép elrendezésben egymással párhuzamosan végrehajtható szomszédos skalár utasításokat kijelölő előfeldolgozó eszköz ;utasításiolyamban szereplő skalár utasításaihoz tartozó függelékeket előállító összevonó eszköz, amely függelékek megmutatják, mely egymással párhuzamosan végrehajtható szomszédos skalár utasítások alkotják részét egy összevont utasításnak, illetve az utasításfolyamban szereplő mely skalár utasítások nem alkalmasak párhuzamos végrehajtásra.
- 22. A 21. igénypont szerinti rendszer, amelynek része továbbá az utasításfolyamot figyelő, az egymással párhuzamosan végrehajtható összevont utasításokat kijelölő vezérlő eszköz.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51938490A | 1990-05-04 | 1990-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
HU911103D0 HU911103D0 (en) | 1991-10-28 |
HUT57455A true HUT57455A (en) | 1991-11-28 |
Family
ID=24068082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
HU911103A HUT57455A (en) | 1990-05-04 | 1991-04-04 | Computer architecture with set of instructions drawn together |
Country Status (9)
Country | Link |
---|---|
US (2) | US5502826A (hu) |
EP (1) | EP0454985B1 (hu) |
JP (1) | JP2500082B2 (hu) |
AT (1) | ATE146611T1 (hu) |
CA (1) | CA2039640C (hu) |
CS (1) | CS93691A2 (hu) |
DE (1) | DE69123629T2 (hu) |
HU (1) | HUT57455A (hu) |
PL (1) | PL165524B1 (hu) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
US6378061B1 (en) * | 1990-12-20 | 2002-04-23 | Intel Corporation | Apparatus for issuing instructions and reissuing a previous instructions by recirculating using the delay circuit |
GB9027853D0 (en) * | 1990-12-21 | 1991-02-13 | Inmos Ltd | Multiple instruction issue |
DE69326066T2 (de) * | 1992-03-25 | 2000-03-30 | Zilog, Inc. | Schnelle befehlsdekodierung in einem pipeline-prozessor |
US6154828A (en) * | 1993-06-03 | 2000-11-28 | Compaq Computer Corporation | Method and apparatus for employing a cycle bit parallel executing instructions |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
EP0651324B1 (en) * | 1993-10-29 | 2006-03-22 | Advanced Micro Devices, Inc. | Speculative instruction queue for variable byte length instructions |
DE69427265T2 (de) * | 1993-10-29 | 2002-05-02 | Advanced Micro Devices, Inc. | Superskalarbefehlsdekoder |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
EP1186995B1 (en) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Instruction memory with associative cross-bar switch |
JPH07334372A (ja) * | 1993-12-24 | 1995-12-22 | Seiko Epson Corp | エミュレートシステム及びエミュレート方法 |
JP3212213B2 (ja) * | 1994-03-16 | 2001-09-25 | 株式会社日立製作所 | データ処理装置 |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US6006033A (en) * | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
GB2299422B (en) * | 1995-03-30 | 2000-01-12 | Sony Uk Ltd | Object code allocation in multiple processor systems |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5710939A (en) * | 1995-05-26 | 1998-01-20 | National Semiconductor Corporation | Bidirectional parallel data port having multiple data transfer rates, master, and slave operation modes, and selective data transfer termination |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5829031A (en) * | 1996-02-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a group of instructions and to perform a specific function upon detection |
CN1160622C (zh) * | 1996-03-28 | 2004-08-04 | 皇家菲利浦电子有限公司 | 在顺序处理器上处理数据元素集合的方法和计算机*** |
US5896519A (en) * | 1996-06-10 | 1999-04-20 | Lsi Logic Corporation | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions |
US5958042A (en) * | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
US6108655A (en) | 1996-07-19 | 2000-08-22 | Cisco Technology, Inc. | Method and apparatus for transmitting images and other objects over a computer network system |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US6047368A (en) * | 1997-03-31 | 2000-04-04 | Sun Microsystems, Inc. | Processor architecture including grouping circuit |
US6339840B1 (en) * | 1997-06-02 | 2002-01-15 | Iowa State University Research Foundation, Inc. | Apparatus and method for parallelizing legacy computer code |
US6134515A (en) * | 1997-06-13 | 2000-10-17 | Telefonaktiebolaget Lm Ericsson | Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch |
US6142682A (en) * | 1997-06-13 | 2000-11-07 | Telefonaktiebolaget Lm Ericsson | Simulation of computer processor |
US5905880A (en) * | 1997-09-29 | 1999-05-18 | Microchip Technology Incorporated | Robust multiple word instruction and method therefor |
JPH11120040A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | 並列処理手続きの効果予測方法とそのための記録媒体 |
US6118940A (en) * | 1997-11-25 | 2000-09-12 | International Business Machines Corp. | Method and apparatus for benchmarking byte code sequences |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6990570B2 (en) | 1998-10-06 | 2006-01-24 | Texas Instruments Incorporated | Processor with a computer repeat instruction |
US6681319B1 (en) * | 1998-10-06 | 2004-01-20 | Texas Instruments Incorporated | Dual access instruction and compound memory access instruction with compatible address fields |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
EP0992892B1 (en) * | 1998-10-06 | 2015-12-02 | Texas Instruments Inc. | Compound memory access instructions |
US6742110B2 (en) | 1998-10-06 | 2004-05-25 | Texas Instruments Incorporated | Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution |
DE69840406D1 (de) * | 1998-10-06 | 2009-02-12 | Texas Instruments Inc | Überprüfung von Befehlsparallelismus |
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
US6634019B1 (en) * | 1999-07-16 | 2003-10-14 | Lamarck, Inc. | Toggling software characteristics in a fault tolerant and combinatorial software environment system, method and medium |
US6973560B1 (en) | 1999-07-16 | 2005-12-06 | Lamarck, Inc. | Fault tolerant and combinatorial software environment system, method and medium |
US6654869B1 (en) * | 1999-10-28 | 2003-11-25 | International Business Machines Corporation | Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling |
US6631463B1 (en) * | 1999-11-08 | 2003-10-07 | International Business Machines Corporation | Method and apparatus for patching problematic instructions in a microprocessor using software interrupts |
US7418580B1 (en) * | 1999-12-02 | 2008-08-26 | International Business Machines Corporation | Dynamic object-level code transaction for improved performance of a computer |
US20010042138A1 (en) * | 1999-12-23 | 2001-11-15 | Reinhard Buendgen | Method and system for parallel and procedural computing |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US6647489B1 (en) * | 2000-06-08 | 2003-11-11 | Ip-First, Llc | Compare branch instruction pairing within a single integer pipeline |
US6633969B1 (en) | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
DE10055175A1 (de) * | 2000-11-08 | 2002-05-23 | Infineon Technologies Ag | Verfahren zum Transferieren von Daten zwischen einer ersten Einrichtung und einer zweiten Einrichtung |
US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
US7711926B2 (en) * | 2001-04-18 | 2010-05-04 | Mips Technologies, Inc. | Mapping system and method for instruction set processing |
US6826681B2 (en) * | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7110525B1 (en) | 2001-06-25 | 2006-09-19 | Toby Heller | Agent training sensitive call routing system |
US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
US20030126414A1 (en) * | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
US20040128483A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Fuser renamer apparatus, systems, and methods |
WO2005008414A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | Method and apparatus for parallel action processing |
GB0323950D0 (en) * | 2003-10-13 | 2003-11-12 | Clearspeed Technology Ltd | Unified simid processor |
US7506307B2 (en) * | 2003-10-24 | 2009-03-17 | Microsoft Corporation | Rules definition language |
US7765540B2 (en) * | 2003-10-23 | 2010-07-27 | Microsoft Corporation | Use of attribution to describe management information |
US7676560B2 (en) * | 2003-10-24 | 2010-03-09 | Microsoft Corporation | Using URI's to identify multiple instances with a common schema |
US7103874B2 (en) * | 2003-10-23 | 2006-09-05 | Microsoft Corporation | Model-based management of computer systems and distributed applications |
US7539974B2 (en) | 2003-10-24 | 2009-05-26 | Microsoft Corporation | Scalable synchronous and asynchronous processing of monitoring rules |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7467325B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
US7590824B2 (en) * | 2005-03-29 | 2009-09-15 | Qualcomm Incorporated | Mixed superscalar and VLIW instruction issuing and processing method and system |
US7627735B2 (en) * | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US7818550B2 (en) * | 2007-07-23 | 2010-10-19 | International Business Machines Corporation | Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system |
TW200910195A (en) * | 2007-08-20 | 2009-03-01 | Sunplus Technology Co Ltd | A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof |
US20090055636A1 (en) * | 2007-08-22 | 2009-02-26 | Heisig Stephen J | Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence |
WO2009101976A1 (ja) * | 2008-02-15 | 2009-08-20 | Nec Corporation | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
US8751747B2 (en) * | 2008-02-26 | 2014-06-10 | International Business Machines Corporation | Management of cache replacement status in cache memory |
US8572569B2 (en) * | 2009-12-09 | 2013-10-29 | Oracle International Corporation | Modified implementation of a debugger wire protocol and command packet |
GB2486905A (en) * | 2010-12-30 | 2012-07-04 | Cambridge Silicon Radio Ltd | Amalgamating instructions by replacing unencoded space |
US11042929B2 (en) | 2014-09-09 | 2021-06-22 | Oracle Financial Services Software Limited | Generating instruction sets implementing business rules designed to update business objects of financial applications |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
CN112540795A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
US20230097390A1 (en) * | 2021-09-29 | 2023-03-30 | International Business Machines Corporation | Tightly-coupled slice target file data |
US11900116B1 (en) | 2021-09-29 | 2024-02-13 | International Business Machines Corporation | Loosely-coupled slice target file data |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3293616A (en) * | 1963-07-03 | 1966-12-20 | Ibm | Computer instruction sequencing and control system |
US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
US3343135A (en) * | 1964-08-13 | 1967-09-19 | Ibm | Compiling circuitry for a highly-parallel computing system |
US3611306A (en) * | 1969-02-05 | 1971-10-05 | Burroughs Corp | Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system |
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4574348A (en) * | 1983-06-01 | 1986-03-04 | The Boeing Company | High speed digital signal processor architecture |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPS60101644A (ja) * | 1983-11-07 | 1985-06-05 | Masahiro Sowa | ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ |
JPS61245239A (ja) * | 1985-04-23 | 1986-10-31 | Toshiba Corp | 論理回路方式 |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
EP0239081B1 (en) * | 1986-03-26 | 1995-09-06 | Hitachi, Ltd. | Pipelined data processor capable of decoding and executing plural instructions in parallel |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
US5506974A (en) * | 1990-03-23 | 1996-04-09 | Unisys Corporation | Method and means for concatenating multiple instructions |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
-
1991
- 1991-03-20 DE DE69123629T patent/DE69123629T2/de not_active Expired - Lifetime
- 1991-03-20 AT AT91104323T patent/ATE146611T1/de not_active IP Right Cessation
- 1991-03-20 EP EP91104323A patent/EP0454985B1/en not_active Expired - Lifetime
- 1991-04-03 PL PL91289722A patent/PL165524B1/pl not_active IP Right Cessation
- 1991-04-03 JP JP3096090A patent/JP2500082B2/ja not_active Expired - Fee Related
- 1991-04-03 CA CA002039640A patent/CA2039640C/en not_active Expired - Fee Related
- 1991-04-04 HU HU911103A patent/HUT57455A/hu unknown
- 1991-04-04 CS CS91936A patent/CS93691A2/cs unknown
-
1994
- 1994-01-25 US US08/186,221 patent/US5502826A/en not_active Expired - Fee Related
-
1996
- 1996-08-15 US US08/699,689 patent/US5732234A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
ATE146611T1 (de) | 1997-01-15 |
PL165524B1 (pl) | 1995-01-31 |
PL289722A1 (en) | 1992-04-21 |
EP0454985A2 (en) | 1991-11-06 |
JP2500082B2 (ja) | 1996-05-29 |
DE69123629T2 (de) | 1997-06-12 |
CA2039640A1 (en) | 1991-11-05 |
DE69123629D1 (de) | 1997-01-30 |
HU911103D0 (en) | 1991-10-28 |
EP0454985A3 (en) | 1994-03-30 |
JPH04229326A (ja) | 1992-08-18 |
CS93691A2 (en) | 1991-12-17 |
US5502826A (en) | 1996-03-26 |
US5732234A (en) | 1998-03-24 |
CA2039640C (en) | 2000-01-11 |
EP0454985B1 (en) | 1996-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
HUT57455A (en) | Computer architecture with set of instructions drawn together | |
HUT57456A (en) | Generalized method for generating computer-instructions drawn together for parallel processors of instruction level | |
US5710902A (en) | Instruction dependency chain indentifier | |
US6016395A (en) | Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor | |
US7725687B2 (en) | Register file bypass with optional results storage and separate predication register file in a VLIW processor | |
US6760906B1 (en) | Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
US6996709B2 (en) | Method for configuring a configurable hardware block by configuring configurable connections provided around a given type of subunit | |
US20100070958A1 (en) | Program parallelizing method and program parallelizing apparatus | |
KR100958909B1 (ko) | 소스 코드에서의 규격을 분할하는 방법 및 목표 시스템을 생성하는 공동-설계 방법 | |
HUT57453A (en) | Circuit arrangement for eliminating data dependence as well as multifunction alu for the said circuit arrangement | |
EP2796991A2 (en) | Processor for batch thread processing, batch thread processing method using the same, and code generation apparatus for batch thread processing | |
JPH04330527A (ja) | プログラムの最適化方法及びコンパイラ・システム | |
US6611956B1 (en) | Instruction string optimization with estimation of basic block dependence relations where the first step is to remove self-dependent branching | |
US7140003B2 (en) | Method and system for specifying sets of instructions for selection by an instruction generator | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
US6230258B1 (en) | Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions | |
HU216990B (hu) | Eljárás és számítógépes rendszer utasítások feldolgozására | |
JP2006524859A (ja) | 並列処理システム | |
CN117492836A (zh) | 一种针对可变长向量体系结构的数据流分析方法 | |
Dickson et al. | Technical Report MECSE-8-2006 | |
EP2386944A1 (en) | Method and computer software for combined in-order and out-of-order execution of tasks on multi-core computers | |
Golumbic et al. | Instruction scheduling across control flow | |
WAKABAYASHI | Global Scheduling Independent of Control Dependencies Based on Condition Vectors Kazutoshi WAKABAYASHI Hirohito TANAKA | |
Kwon et al. | Code Size Reduction and Execution Performance Improvement with Instruction Set Architecture Design based on Non-homogeneous Register Partition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
DFC4 | Cancellation of temporary protection due to refusal |