HU216990B - Eljárás és számítógépes rendszer utasítások feldolgozására - Google Patents

Eljárás és számítógépes rendszer utasítások feldolgozására Download PDF

Info

Publication number
HU216990B
HU216990B HU9200024A HU2492A HU216990B HU 216990 B HU216990 B HU 216990B HU 9200024 A HU9200024 A HU 9200024A HU 2492 A HU2492 A HU 2492A HU 216990 B HU216990 B HU 216990B
Authority
HU
Hungary
Prior art keywords
instruction
instructions
executed
sequence
execution
Prior art date
Application number
HU9200024A
Other languages
English (en)
Other versions
HUT60048A (en
HU9200024D0 (en
Inventor
Bartholomew Blaner
Thomas Leo Jeremiah
Stamatis Vassiliadis
Original Assignee
International Business Machines Corp.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/543,458 external-priority patent/US5197135A/en
Priority claimed from US07/642,011 external-priority patent/US5295249A/en
Application filed by International Business Machines Corp. filed Critical International Business Machines Corp.
Publication of HU9200024D0 publication Critical patent/HU9200024D0/hu
Publication of HUT60048A publication Critical patent/HUT60048A/hu
Publication of HU216990B publication Critical patent/HU216990B/hu

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent 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)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

A találmány tárgya egyrészt számítógépes rendszer űtasításőkfeldőlgőzására, ahől az űtasításők összevőnható űtasításőkattartalmazó űtasításők, amelyek egy maximális űtasításszámig többűtasítást tartalmazó csőpőrtőt alkőtnak, amelyek kiadás űtán összevőntűtasításként párhűzamősan végrehajthatók egy őlyan számítógépen,amelynek több űtasításfeldőlgőzó fűnkciőnális egysége (156, 158, 160)van. A találmány szerinti rendszernél az űtasításők az összevőntűtasításőn belüli űgráspőnttal/elágazással rendelkező űtasításők,amelyek egyidejűleg hajthatók végre végrehajtható összevőntűtasításként, és a rendszernek a fűnkciőnális egységek (156, 158, 160)egyikében elágazási űtasítást végrehajtó eszköze; egy vagy többűtasítást tartalmazó, egy vagy több, öszszevőnt űtasításból állóűtasítássőrőzat-szöveget dekódőló lehívóeszköze; a lehívőttűtasítássőrőzat-szövegben található, összevőnt űtasítást dekódőlóeszköze, azaz dekódere (152) van, ahől az összevőnt űtasításők a gépáltal végrehajtandó űtasítássőrőzat szekvenciáját tartalmazzák; ésahől a dekóder (152) megvizsgálja az űtasításők űtasításfőrmátűmát, ésmeghatárőzza, hőgy az űtasítássőrőzat űtasításeleme az összevőntűtasítás kezdőeleme vagy a végrehajtható összevőnt űtasítás következőrészéhez tartőzik; és van egy kiadóeszköze, amely legalább részben adekóder (152) meghatárőzási eredményétől függően végrehajtásra kiadjaegy összevőnt űtasítás elágazási célpőnttal címzett, űtasítást istartalmazó űtasításait a fűnkciőnális egységeknek (156, 158, 160). Atalálmány tárgya másrészt eljárás űtasításők feldőlgőzására, ahől azűtasításők összevőnható űtasításőkat tartalmazó űtasításők, amelyekegy maximális űtasításszámig több űtasítást tartalmazó csőpőrtőtalkőtnak, amelyek kiadás űtán összevőnt űtasításként párhűzamősanvégrehajthatók egy őlyan számítógépen, amelynek többűtasításfeldőlgőzó fűnkciőnális egysége van. A találmány szerintieljárásnál az űtasításők az összevőnt űtasításőn belüliűgráspőnttal/elágazással rendelkező űtasításők, amelyek egyidejűleghajthatók végre végrehajtható összevőnt űtasításként, és ahől azeljárás sőrán egy vagy több elágazási célpőntként címezhető űtasításttartalmazó egy vagy több összevőnt űtasításból álló űtasítássőrőzat-szöveget dekódőlnak a későbbi végrehajtáshőz; egy lehívőttűtasítássőrőzat-szövegben lévő összevőnt űtasítást dekódőlnak, ahől azösszevőnt űtasítás a gép által végrehajtandó űtasítássőrőzatszekvenciáját tartalmazza, ahől az űtasításők főrmátűma őp-kódőt és azűtasításőkhőz társítőtt vezérlőbiteket tartalmaz, ahől a vezérlőbitekjelzik, hőgy a hőzzá tartőzó űtasítás párhűzamősan végrehajtható-e egykövetkező űtasítással egy végrehajtható összevőnt űtasításként; ésmegvizsgálják az összevőnt űtasítás végrehajtása szempőntjábóllényeges őp-kódőt és a hőzzá tartőzó vezérlőbiteket az

Description

A leírás terjedelme 22 oldal (ezen belül 9 lap ábra)
HU 216 990 Β egy vagy több utasítást tartalmazó, egy vagy több, öszszevont utasításból álló utasítássorozat-szöveget dekódoló lehívóeszköze;
a lehívott utasítássorozat-szövegben található, összevont utasítást dekódoló eszköze, azaz dekódere (152) van, ahol az összevont utasítások a gép által végrehajtandó utasítássorozat szekvenciáját tartalmazzák; és ahol a dekóder (152) megvizsgálja az utasítások utasításformátumát, és meghatározza, hogy az utasítássorozat utasításeleme az összevont utasítás kezdőeleme vagy a végrehajtható összevont utasítás következő részéhez tartozik; és van egy kiadóeszköze, amely legalább részben a dekóder (152) meghatározási eredményétől függően végrehajtásra kiadja egy összevont utasítás elágazási célponttal címzett, utasítást is tartalmazó utasításait a funkcionális egységeknek (156, 158, 160).
A találmány tárgya másrészt eljárás utasítások feldolgozására, ahol az utasítások összevonható utasításokat tartalmazó utasítások, amelyek egy maximális utasításszámig több utasítást tartalmazó csoportot alkotnak, amelyek kiadás után összevont utasításként párhuzamosan végrehajthatók egy olyan számítógépen, amelynek több utasításfeldolgozó funkcionális egysége van. A találmány szerinti eljárásnál az utasítások az összevont utasításon belüli ugrásponttal/elágazással rendelkező utasítások, amelyek egyidejűleg hajthatók végre végrehajtható összevont utasításként, és ahol az eljárás során egy vagy több elágazási célpontként címezhető utasítást tartalmazó egy vagy több összevont utasításból álló utasítássorozat-szöveget dekódolnak a későbbi végrehajtáshoz;
egy lehívott utasítássorozat-szövegben lévő összevont utasítást dekódolnak, ahol az összevont utasítás a gép által végrehajtandó utasítássorozat szekvenciáját tartalmazza, ahol az utasítások formátuma op-kódot és az utasításokhoz társított vezérlőbiteket tartalmaz, ahol a vezérlőbitek jelzik, hogy a hozzá tartozó utasítás párhuzamosan végrehajtható-e egy következő utasítással egy végrehajtható összevont utasításként; és megvizsgálják az összevont utasítás végrehajtása szempontjából lényeges op-kódot és a hozzá tartozó vezérlőbiteket az utasítások utasításformátumában; és meghatározzák, hogy az utasítássorozat-szöveg utasítása az összevont utasítás kezdő utasítása, vagy a következő részhez tartozik; és kiadják egy összevont utasítás elágazási célponttal címzett utasítást is tartalmazó utasításait a funkcionális egységeknek egy elágazási célponttal címzett utasítástól kezdődően - amely az utasítássorozat-szekvencián belül bárhol lehet - az elágazási célponttal címzett utasítást tartalmazó összevont utasítás végéig;
végrehajtják a végrehajtható, összevont utasítás összes, egyidejűleg kiadott utasítását az elágazási célponttal címzett utasítástól kezdődően a következő összevont utasítás kezdő utasításáig; és miután az összevont utasítás végrehajtása megkezdődött, a szöveg fennmaradó részét - beleértve a következő végrehajtható, összevont utasítás kezdő utasításelemét is - lehetséges végrehajtáshoz megtartják.
A találmány tárgya eljárás és számítógépes rendszer utasítások feldolgozására, azaz párhuzamosan végrehajtható utasítások előállítására, és egy összevont utasításon belüli elágazás végrehajtására.
A találmány egy digitális számítógépre és adatfeldolgozó rendszerekre, különösen olyan digitális számítógépre és adatfeldolgozó rendszerekre vonatkozik, amelyek párhuzamosan két vagy több utasítás feldolgozására, illetve egy összevont utasításon belüli elágazásra is képesek. Az ilyen rendszerek lehetővé teszik olyan utasításkészletek alkalmazását, amelyeknél több utasítás egy összevont utasítássá kombinálható, és az utasításokhoz vezérlőinformáció fűzhető hozzá, amely lehetővé teszi a végrehajtott program elágazását az összevont utasításon belül.
A hagyományos számítógépek az utasítások sorozatát sorosan hajtják végre, tehát egyszerre egy utasítást hajtanak végre és skalár számítógépek néven váltak ismertté. A számítógépek minden új generációjánál új gyorsítómechanizmust kell feltalálni a hagyományos skalár számítógépek teljesítményének növelésére. Egy ilyen, jelenleg is alkalmazott mechanizmus a számítási sebesség növelésére a csökkentett utasításkészletű architektúra (RISC - Reduced Instruction Set Computer), ahol egyszerű utasítások korlátozott számát nagy sebességgel hajtják végre. Alternatív módon egy másik gyorsítómechanizmus lehet a komplexebb utasítások alkalmazása az architektúrában, miáltal utasításonként növelhető az elvégzett funkciók száma, és csökkenthető az utasítások száma egy programban. Ezen megoldások bármelyikének alkalmazása a jelenlegi skalár számító40 gépeknél alapvető változtatásokat igényelne mind az utasításkészletben, mind pedig a gép felépítésében. Egy ilyen mélyreható átalakítás jelentős költségekkel, időkieséssel, és a gép megbízhatóságának és elérhetőségének kezdeti csökkenésével jár.
A szuperskalár gépeket azért fejlesztették ki, hogy tovább növeljék a számítási sebességet. Ezek a számítógépek lényegében skalár gépek, amelyek teljesítményét úgy növelték, hogy alkalmassá tették őket egy skalár utasítások sorozatát tartalmazó utasításfolyam egyszerre több utasításának végrehajtására. Ezek a gépek általában az utasítások végrehajtási sebességével döntik el, hogy egy utasítássorozatban két vagy több utasítás párhuzamosan végrehajtható-e. A döntés alapja az utasítások műveleti kódja (OP-codes) és az utasítások közötti eset55 leges adatfüggőség. A műveleti kód határozza meg egy utasítás végrehajtásához szükséges hardverfeltételt. Általában nem lehetséges két vagy több olyan utasítás végrehajtása, amelyekhez ugyanaz a hardverfeltétel szükséges (hardverfüggőség), vagy ugyanazokkal az adatokkal dolgoznak (adattüggőség). Ez a hardver- vagy adatfüg2
HU 216 990 Β gőség akadályozza meg bizonyos utasításkombinációk párhuzamos végrehajtását. Ezekben az esetekben az érintett utasításokat csak sorosan lehet végrehajtani. Ez viszont természetesen csökkenti a szuperskalár gépek teljesítőképességét.
A szuperskalár számítógépek olyan hátrányokkal rendelkeznek, amelyeket célszerű minimalizálni. Komoly időt vesz igénybe annak utasítás-végrehajtási idő alatti eldöntése, hogy mely utasításokat lehet párhuzamosan végrehajtani. Ezt az időveszteséget nem lehet kiküszöbölni más gépi műveletek átfedéses végrehajtásával. Ez a hátrány további hangsúlyt kap az utasításkészlet bonyolultságának növekedésével. A párhuzamos végrehajthatósági döntést is meg kell ismételni minden egyes alkalommal, akkor is, ha ugyanazokat az utasításokat kell végrehajtani.
A jelenleg létező skalár számítógépek hasznos élettartamának növekedésével létfontosságúvá válik a végrehajtási sebesség növelése. Ugyanakkor a csökkentett utasításkészlet, a komplex utasításkészlet, vagy a hagyományos szuperskalár technikák túlságosan költségesek és hátrányosak ahhoz, hogy a jelenleg létező skalár számítógépeknél szóba jöhessenek.
Viszont előnyös lenne, ha az ilyen számítógépek sebességét úgy lehetne növelni, hogy az utasításkészlet és a gép felépítésének változtatása nélkül lehetne az utasításokat párhuzamosan és egyidejűleg végrehajtani, és nem kellene a végrehajtási idő növekedésével számolni.
A találmány célja olyan rendszer megalkotása, amely lehetővé teszi az eredeti programok feldolgozását párhuzamos és egyszerű utasítások formájában az eredeti program funkcióinak megfelelően, amelyek utasításszintű, párhuzamos feldolgozásra képes géppel feldolgozhatok. Lehetőséget biztosítunk a jelenleg létező magas szintű nyelveken vagy assembly nyelven írt jelenleg létező programok preprocesszorral történő feldolgozására, amely azonosítani tudja azokat az utasításszekvenciákat, amelyek egyetlen összevont utasítás formájában is végrehajthatók egy erre a célra kifejlesztett számítógépben.
A találmány célját a legáltalánosabb értelemben egy olyan utasításfeldolgozó rendszerrel érhetjük el, amelynél az utasítások összevonható utasításokat tartalmazó utasítások, amelyek egy maximális utasításelem-számig több utasításelemet tartalmazó csoportot alkotnak, amelyek kiadás után összevont utasításként párhuzamosan végrehajthatók egy olyan számítógépen, amelynek több, végrehajtható, összevont utasításként párhuzamosan végrehajtható utasításelemek között elágazást tartalmazó utasításokat egyidejűleg feldolgozó funkcionális egysége van, továbbá amelynek a funkcionális egységekben elágazási utasítást végrehajtó eszköze; egy vagy több, elágazás címmel címezhető utasításelemet tartalmazó, egy vagy több, összevont utasításból álló utasítássorozat-szöveget lehívó eszköze;
a lehívott utasítássorozat szövegben található, összevont utasítást dekódoló dekódere van, ahol az összevont utasítások a gép által végrehajtandó utasítássorozat szekvenciáját tartalmazzák, illetve egy összevont utasítás utasításelemeit tartalmazzák, amelyek utasításformátuma műveleti kódot (op-kódot) és az utasításelemekhez társított vezérlőbiteket tartalmaz, ahol a vezérlőbitek jelzik, hogy a hozzá tartozó utasításelem párhuzamosan végrehajtható-e egy következő utasításelemmel egy végrehajtható összevont utasításként; és ahol a dekóder megvizsgálja az összevont utasítás végrehajtása szempontjából lényeges op-kódot és a hozzá tartozó vezérlőbiteket az összevont utasítás utasításelemeinek utasításformátumában, és meghatározza, hogy a szöveg utasításeleme az összevont utasítás kezdő eleme vagy a következő részhez tartozik;
és van egy kiadóeszköze, amely legalább részben a dekóder meghatározási eredményétől függően kiadja egy összevont utasítás elágazási célponttal címzett utasításelemet is tartalmazó utasításelemeit a funkcionális egységeknek, egy elágazási célponttal címzett utasításelemtől kezdődően - amely az utasítássorozat-szekvencián belül bárhol lehet - az elágazási célponttal címzett, utasításelemet tartalmazó összevont utasítás végéig, a végrehajtható összevont utasításnak az elágazási célponttal címzett utasításelemétől a következő végrehajtható összevont utasítás kezdő utasításeleméig az összes utasításelem végrehajtásához, és miután az összevont utasítás végrehajtása megkezdődött, a szöveg fennmaradó részét - beleértve a következő végrehajtható összevont utasítás kezdő utasításelemét is - lehetséges végrehajtáshoz megtartjuk.
A találmány szerinti utasításfeldolgozó rendszer dekódolja a skalár gépek alaputasításainak sorozatát, és összevont utasítások sorozatát állítja elő, lehívja az összevont utasításokat, dekódolja a lehívott összevont utasításokat és egyszerű utasításokat, és a rendszer olyan összevont utasítású programot állít elő a végrehajtó eszköz számára, amely érintetlenül hagyja a skalár gép alaputasításainak skalár végrehajtását az összevont utasításokat tartalmazó program végrehajtása közben.
Ez a rendszer lehetővé teszi az összevont utasításokon belüli elágazást is. Az összevont utasítás közepén való elágazáshoz az összevont utasításokban megvizsgáljuk a hozzáfűzött vezérlőbiteket, és egy törlőmechanizmussal a vezérlőbitek hatására megakadályozzuk az összevont utasítás elágazás utáni részének vagy a következő összevont utasításnak a végrehajtását, ha az programfutási zavart okozna.
A találmány szerinti utasításfeldolgozó rendszer rendelkezik skalár gépek alaputasításainak sorozatát dekódoló, és az utasításformátum szövegben vezérlőbitekkel ellátott utasításokból összevont utasítások sorozatát előállító összetétel-dekódolóval; az összevont utasításokat lehívó eszközzel; a lehívott, összevont utasításokat és egyszerű utasításokat dekódoló eszközzel; összevont és egyszerű utasításokat végrehajtó eszközzel; és ahol a rendszer olyan összevont utasítású programot állít elő a végrehajtó eszköz számára, amely érintetlenül hagyja a skalár gép alaputasításainak skalár végrehajtását. Az eredő összevont utasítássorozat végrehajtása általában gyorsabb, mint az eredeti formátumú programé a végrehajtott összevont utasításfolyam párhuzamos jellege következtében.
HU 216 990 Β
A találmány előnyeinek és további jellemzőinek jobb megértése érdekében a találmányt a továbbiakban a mellékelt rajzon ábrázolt példaképpeni kiviteli alakok alapján ismertetjük részletesebben, ahol az
1. ábra a találmány szerinti, párhuzamosan végrehajtható, összevont utasításokat előállító rendszer magas szintű blokkvázlata; a
2. ábra az egyprocesszoros kivitelezésben bizonyos, szelektíven csoportosított, összevont utasításfolyamot képező utasítások párhuzamos végrehajtásának időzítési diagramja; a
3. ábra az összevont utasításkészletű, memórián belüli feldolgozású számítógép hierarchikus memóriaszervezésének blokkdiagramja; a
4A. ábra egy magas szintű folyamatábra a létező programok feldolgozására és azon szekvenciák megkeresésére, amelyek összevonhatók és egyetlen összevont utasításként is végrehajthatók egy erre a célra kifejlesztett számítógépen; a
4B. ábra a találmány előnyös működési környezetének blokkvázlata és a találmány elhelyezkedése a környezetben; az
5. ábra a program útvonalának vázlata az eredeti programtól a végrehajtásig; a
6. ábra assembly programból összevont utasításkészletű program előállításának folyamatábrája; a
7. ábra egy összevont utasítás végrehajtásának folyamatábrája; a
8. ábra annak a helyzetnek a vázlata, amikor az elágazási cél egy összevont utasítás kezdetén vagy a közepén van.
Az US 07/519,382 párhuzamos bejelentés egy összevont utasításkészletű számítógépet (SCISM) ismertet, amelynél az utasításszintű párhuzamosságot úgy érik el, hogy a skalár utasításokat végrehajtás előtt statikusan elemzik és a párhuzamosan végrehajtható szomszédos utasításokból összevont utasításokat képeznek. Ezt a rendszert itt is ismertetjük. Az utasításfolyamhoz összevonási függelék formájában vezérlőinformáció van hozzáadva annak jelzésére, hogy hol kezdődik egy öszszevont utasítás, és hogy egy összevont utasítás hány utasítást tartalmaz. Az „összevonás” fogalmát a következőkben egy utasításszekvencia utasításainak csoportosítására használjuk, ahol a csoportosítás a csoportosított utasítások egyidejű vagy párhuzamos végrehajtását szolgálja. Az összevonáshoz minimum két utasítás szimultán végrehajtást szolgáló „párosítása” szükséges. Az összevont utasításokban az egyes utasítások formája előnyösen változatlan a skalár utasítás formájához képest.
Egy digitális számítógépes rendszerben, amely több utasítást párhuzamosan végrehajtó eszközt tartalmaz, a találmány különösen előnyös kiviteli példája valósítható meg egy olyan memóriaarchitektúrával, amely megvalósítja az utasítások összevonását a kiadásuk és végrehajtásuk előtt. Ez a memóriastruktúra utasításokat ad át a CPU-nak (Central Processing Unit) a számítógépben. Általában a hierarchikus memóriastruktúra az éppen lehívott utasításokat tartalmazó, nagy sebességű cache-tárolót, a cache-hez kapcsolódó közepes sebességű főtárolót, és egy nagy kapacitású, lassú kiegészítő tárat tartalmaz. Általában a cache és a főtároló (együtt „valós tároló”) tartalmazza azokat az utasításokat, amelyek végrehajtásra kerülnek. A kiegészítő tároló utasításaihoz egy bemeneti/kimeneti (I/O) adapteren keresztül lehet hozzáférni, amely a főtároló és a kiegészítő tároló közé van beiktatva.
Az US 07/543,464 párhuzamos bejelentés egy memórián belüli előfeldolgozót ismertet összevont utasításkészletű számítógépekhez (SCISM), amelynél a valós tárolóban egy utasítás-összevonó mechanizmus öszszevonási függelékinformációt állít elő a skalár utasítások szekvenciájához, amely kijelöli azokat az utasításokat a szekvencián belül, amelyeket párhuzamosan lehet végrehajtani. Az utasítás-összevonó egység előállítja az összevonási függelékinformációt az előzetesen lehívott és a főmemóriában eltárolt utasítások kijelölésére. Ennek a szabadalmi bejelentésnek az egyik speciális kiviteli alakja utal legfeljebb két utasítás összevonására, és feltételezi, hogy N utasítás is összevonható egyidejű végrehajtásra egy skalár számítógépben.
Az US 07/522,219 párhuzamos bejelentés utasításösszevonó preprocesszort ismertet cache-hez hierarchikus memóriában, amelynél az utasítás-összevonó egység a főmemória és a hierarchikus, társzervezésű cache között van elhelyezve. Az utasítás-összevonó egység előállítja az összevonási függelékinformációt egy utasítássorozat utasításai számára, amelyeket a főmemóriából lehívnak és a cache-ben tárolnak.
Ezeknél a bejelentéseknél a cache-ben tárolt utasítások összevonási függelékkel vannak ellátva, amellyel több párhuzamos utasítás-végrehajtó egység foglalkozik egy legfeljebb N utasítást tartalmazó csoport egy vagy több utasításának párhuzamos végrehajtásával. Ezeknél az említett rendszereknél, amelyekhez tartozik az US 07/543,458 számú, „Memóriaszervezési eljárás összevont utasításkészletű számítógépekhez” című bejelentés is, amely olyan számítógéprendszert javasol, amely egy skalár utasítássorozatban legfeljebb N utasítás egyidejű végrehajtására alkalmas, ahol a sorozat-összevonási függelék követi a rendezett skalár utasításokat, ami kijelöli azokat az utasításokat, amelyeket párhuzamosan lehet végrehajtani. Egy mechanizmus gondoskodik a számítógéprendszer valós tárolójában eltárolt skalár utasítások összevonási függelékeinek kiértékeléséről, és van egy, a valós tárolóhoz kapcsolt összemásoló egysége a valós tároló módosított utasításainak és nem módosított utasításainak összemásolására. Az összemásoló egységhez és a valós tárolóhoz csatlakozó függelékleválasztó inaktiválja a módosított utasítás összevonási függelékét és N-1 utasítást a valós tárolóban, amelyekkel a módosított utasítás összevonható.
A fenti fejlesztések mindegyikénél kielégítetlen maradt az az igény, hogy az utasításkészlet feldolgozásánál vagy a program végrehajtásánál meghatározzuk, hogy pontosan melyek azok az utasítások, amelyeket egyetlen összevont utasítássá lehet kombinálni, és milyen módszert lehet alkalmazni a végrehajtandó program utasításainak függelékkel való ellátására. Ezzel a problémával foglalkozik a 07/522,219 és a 07/642,011 US szabadalmi bejelentés is.
HU 216 990 Β
A rajzon az 1. ábrán egy digitális adatfeldolgozó rendszerhez tartozó digitális számítógéprendszer egy részletének általános kialakítása látható, amely a találmány szerint van kialakítva. Ez a számítógéprendszer képes arra, hogy két vagy több utasítást párhuzamosan hajtson végre. Két vagy több utasítás párhuzamos végrehajtásának támogatására a számítógéprendszer több funkcionális egységgel rendelkezik, amelyek párhuzamosan egyidejűleg működnek, és mindegyikük egy vagy több, gépszintű utasítástípus végrehajtására képes. A rendszer rendelkezik továbbá azzal a képességgel, hogy összevonjon utasításokat a párhuzamos vagy egyidejű végrehajtás céljára. Ebben az értelemben az „öszszevonás” egy skalár utasítássorozat több utasításának csoportosítását jelenti, ahol a csoportok elemeinek száma 1 és N között változtatható. A skalár utasítások sorozatát például egy létező skalár utasításkészletből vehetjük, mint például az IBM System/370 utasításkészletéből. Az összevonás célja az, hogy minden, ciklusonként több utasítás végrehajtására alkalmas számítógép-architektúrában megvalósítható legyen az utasítások párhuzamos kiadása és végrehajtása.
Ha egy utasításfolyam összevont, akkor a szomszédos skalár utasítások szelektív módon csoportosítva vannak azért, hogy egyszerre, azaz párhuzamosan lehessen végrehajtani azokat. Általában az utasítás-összevonási lehetőség olyan utasításokra vonatkozik, amelyeket párhuzamosan lehet végrehajtani. Ha kompatibilis utasításokat találnak, összevont utasítást képeznek.
Más bejelentések is foglalkoznak az összevonási technikákkal. Itt csak röviden hivatkozunk az 1990. május 4-én bejelentett, 07/519,384 számú (IBM-akta EN9-90-020) és a 07/519,382 számú (IBM-akta EN9-90-019), „Általános célú összevonási technika utasításszintű párhuzamos processzorokhoz” című US szabadalmi bejelentésekre, amelyek általánosan tárgyalják az utasítás-összevonást. Az 1990. június 26-án bejelentett, 07/543,464 számú (IBM-akta EN9-90-018) szabadalmi leírás olyan utasítás-összevonó egységet ismertet, amely az utasítások páronkénti összevonását teszi lehetővé.
Az 1. ábra szerint a 20 utasítás-összevonó egység a 21 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 összevont utasításfolyam egyenként végrehajtható skalár utasításokat, illetve párhuzamosan végrehajtható, skalár utasításokból összetevődő összevont utasításokat tartalmaz. Midőn a skalár utasítás 24 utasításfeldolgozó egységre kerül, az a több végrehajtó egység egyikére adja tovább, ahol az utasítás egymagában, sorosan hajtódik végre. Amikor 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ő végrehajtó 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, 28 aritmetikai és logikai egység (ALU), a 30 lebegőpontos aritmetikai egység (FP), vagy a 32 címszámító egység (AU) vagy egyéb 29 funkcionális egység.
Amint az a 2. ábrán látható, a találmány egyprocesszoros környezetben is megvalósítható, amelyben az egyes funkcionális egységek egy-egy S skalár utasítást vagy CS összevont skalár utasítást hajtanak végre. Az ábrából világosan látszik, hogy az S skalár és CS összevont skalár utasításokat magában foglaló 33 utasításfolyamban minden egyes CS összevont skalár utasításhoz egy-egy T függelék társul. így az első 34 skalár utasítást az A funkcionális egység egymagában hajtja végre az 1. ciklusban; a T3 függelékkel azonosított, 36 összevont utasítást alkotó három CS összevont skalár utasítást az A, C és D funkcionális egységek hajtják végre párhuzamosan a 2. ciklusban; a T2 függelék által azonosított 38 összevont utasítást alkotó két CS összevont skalár utasítást az A és B funkcionális egységek hajtják végre párhuzamosan a 3. ciklusban; a második 40 skalár utasítást a C funkcionális egység hajtja végre egymagában a 4. ciklusban; a T4 függelékkel azonosított 42 összevont utasítás részét képező négy CS összevont skalár utasítást az A-D funkcionális egységek hajtják végre párhuzamosan az 5. ciklusban; harmadik 44 skalár utasítást pedig az A funkcionális egység hajtja végre egymagában a 6. ciklusban.
A CS összevont utasítások végrehajtására alkalmas számítógép-architektúrák egyik példája az IBM System/370 utasításszintű architektúra, amelynél mindegyik gépi ciklusban több CS összevont skalár utasítást lehet kiadni végrehajtásra a 2. ábrának megfelelően. Ebben az összefüggésben a gépi ciklus egyetlen soros feldolgozási fokozatot jelent, amely az S skalár utasítás végrehajtásához szükséges.
Általában hasznos, ha az összevonást az utasítás kiadása előtt végezzük el úgy, hogy az eljárást csak egyszer kell elvégezni egy vagy több utasítás esetén, amelyek) később többször is végrehajtható(k). Az egyik javaslat szerint az utasítás-összevonási funkciót a számítógépes rendszer valós memóriájában kell hardverúton megvalósítani a kompilálás után, de még az utasítás kiadása előtt. Az ilyen összevonás egy előnyös alternatívája lehet az eddig tárgyalt egyéb változatoknak, és amelyre mint „memórián belüli összevonásra” példákat találhatunk az 1990. május 10-én bejelentett, 07/522,219 (IBM-akta EN9-90-012) számú és az 1990. június 26-án bejelentett, 07/543,464 (IBM-akta EN9-90-018) számú US szabadalmi bejelentésekben. A memóriakezelés, amint itt arra a technika állásának ismertetésénél hivatkoztunk, is megismerhető az 1990. június 26-án bejelentett, 07/543,458 (IBM-akta EN9-90-042) számú, „Memory management fór scalable compound instruction set machines with in-memory compounding” című US szabadalmi bejelentésből.
A memórián belüli utasítás-összevonás általános sémája a 3. ábrán látható, ahol egy hierarchikus társzervezés 80 I/O adapterrel rendelkezik, amelyhez kiegészítőtár és a számítógép valós memóriája csatlakozik. A szervezésben a valós memória közepes sebességű, viszonylag nagy kapacitású 146 főmemóriát és nagy sebességű, viszonylag kis kapacitású 148 utasításcache-t tartalmaz. A 80 I/O adapter hívja be az utasításokat a külső tárolóeszközökből, amelyek azután „lapoknak”
HU 216 990 Β nevezett blokkokban tárolódnak a 146 főmemóriában. Az összefüggő utasítások „sornak” nevezett sorozata a 146 főmemóriából a 148 utasításcache-be kerül, ahol gyorsan hozzáférhetők a 150 utasításlehívó, -kiadó és -törlő egység számára. A 148 utasításcache-ből lehívott utasítások kiadás után 152 dekóderbe kerülnek, onnan pedig az 156, 158,..., 160 funkcionális egységekbe.
A végrehajtás alatt, ha a program egyik utasítása kerül sorra, az utasítás címe 162 cache-szervező egységbe kerül, amely ezt a címet egy vagy több utasítás (köztük a megcímzett utasítás) lehívására használja a 148 utasításcache-ből a 150 utasításlehívó, -kiadó és -törlő egységbe. Ha a megcímzett utasítás a 148 utasításcache-ben van, akkor „cache-találat” generálódik, ellenkező esetben viszont „cache-tévesztés” keletkezik. A cache-tévesztés hatására a 162 cache-szervező egység kiadja a keresett utasítás sorcímét a tároló-szervező funkciók 164 csoportjához. Ezek a funkciók tartalmazhatják például a valós tárkezelő funkciókat, amelyek a 162 cache-szervező egység által kiadott sorcímet használják annak meghatározására, hogy a sorcímet tartalmazó lap a 146 főmemóriában található-e. Ha a lap a főmemóriában van, akkor a valós tárkezelő a sorcím alapján a hiányzó utasítást tartalmazó sort a 146 főmemóriából a 148 utasításcache-be tölti át. Ha a keresett utasítást tartalmazó sor nincs a főmemóriában, akkor az operációs rendszer egy másik tárkezelő funkciót aktivál, és megadja a keresett sort tartalmazó lap azonosítóját. Egy ilyen tárkezelő fünkció megküldi a keresett sort tartalmazó lapot azonosító címet a 80 I/O adapternek. A 80 I/O adapter a kiválasztott lapot betölti a külső tárolóból a 146 főmemóriába. A lehívott lap számára úgy csinál helyet a tárkezelő funkció, hogy kiválaszt egy lapot a 146 főmemóriában, amelyet lecserél a lehívott lappal. SCISM-architektúra esetén a helyettesített lap összevonási függelék információ nélkül kerül vissza a 80 I/O adapteren keresztül a külső tárolóba. Ily módon azok az utasítások, amelyeknél a legvalószínűbb, hogy közvetlenül szükség lesz rájuk egy utasítássorozat végrehajtása során, a 156, 158,..., 160 funkcionális egységek közelében, a 148 utasításcache-ben vannak. A hierarchikus memóriaszervezés lehetőséget biztosít azoknak az utasításoknak a gyors betöltésére, amelyek éppen nem a 148 utasításcache-ben vannak.
SCISM-architektúráról lévén szó, memórián belüli utasítás-összevonás valósítható meg a 70 utasítás-összevonó egység által, amely a 80 I/O adapter és a 146 főmemória között helyezkedik el, és így a skalár utasítások összevonása a 146 főmemóriában vagy annak bemeneténél történhet. Ezen a helyen az összevonásra a laplehívás alatt kerülhet sor. Az összevonás során előállított T függelékbiteket ennél a kiviteli példánál a 148 utasításcache egyik bemenete és kimenete közé beiktatott 78 összevonásifüggelék-kezelő dolgozza fel.
Egy további lehetséges változatnál a 72 utasításösszevonó egység a 146 főmemória és a 148 utasításcache között helyezkedik el. Ebben az esetben az összevont utasításokat a 148 utasításcache-be töltés során, soronként hozzuk létre egy előnyös kiviteli példa szerint. Az összevonás során előállított T függelékbiteket ennél a változatnál a 146 főmemória egyik bemenete és kimenete közé beiktatott 74 összevonásifüggelék-kezelő dolgozza fel. Az alternatív lehetőségként elhelyezett 72 utasítás-összevonó egység és 74 összevonásifüggelék-kezelő a rajzon szaggatott vonallal van ábrázolva. Ezek alkalmazása esetén természetesen nincs szükség a 70 utasítás-összevonó egységre és a 78 összevonásifüggelék-kezelőre.
Az összevonás speciális technikája a tervezési választás kérdése. A példa kedvéért a szomszédos skalár utasítások összevonására a már említett US 07/543,458 számú bejelentésben ismertetett memórián belüli feldolgozási eljárásra hivatkozunk. Az utasítások példaképpen 6 bájtot (3 félszó), 4 bájtot (2 félszó) vagy 2 bájtot (1 félszó) foglalhatnak el. Ennél a példánál a változó hosszúságú utasítások összevonásának az a szabálya, hogy minden olyan utasítás összevonható egymással, amelynek hossza 2 bájt vagy 4 bájt. Ez azt jelenti, hogy egy 2 bájtos utasítás párhuzamosan hajtható végre egy másik 2 bájtos vagy 4 bájtos utasítással, és egy 4 bájtos utasítás párhuzamosan hajtható végre egy másik 2 bájtos vagy 4 bájtos utasítással. Az összevonási szabály szerint viszont az olyan utasítások, amelyek hossza 6 bájt, nem vonhatók össze. így egy 6 bájtos utasítás csak önmagában egyedül hajtható végre. Természetesen az összevonás nem korlátozható erre a példaképpeni szabályra, hanem több szabályt tartalmazhat, amelyek meghatározzák egy adott számítógépes architektúrán a létező utasítások párhuzamos végrehajtásának feltételeit.
Ennél a példánál a System/370 utasításkészletét vettük alapul. Az egyes utasítások op-kódjainak vizsgálatával mindegyik utasítás hossza meghatározható az utasításhosszkód (ILC - Instruction Length Code) alapján. Az utasítás típusát az op-kód bitjei határozzák meg. Ha egy utasítás típusa és hossza ismert, egy függelékbiteket tartalmazó összevonási függelék generálható az adott utasítás megjelölésére, amely jelzi, hogy az utasítás összevonható-e egy vagy több másik utasítással párhuzamos végrehajtás céljára, vagy pedig csak önmagában egyedül hajtható végre.
Ennél a példánál (de nem korlátozó értelemben) a függelék formátuma olyan, hogy ha két szomszédos utasítás összevonható, akkor a memóriában előállított függelékbitek közül az első összevont utasítás bitje „1”, míg a második összevont utasítás bitje „0”. Viszont, ha az első és második utasítást nem lehet összevonni, akkor ennél az első formátumpéldánál az első utasítás függelékbitje „0”, és a második és harmadik utasítást kell megvizsgálni az összevonhatóság szempontjából. Ha egy utasításfolyam feldolgozása egyszer megtörtént a kiválasztott összevonási technikának megfelelően, a különböző skalár utasításokhoz kódolt összevonási bitek a párhuzamos utasítás-végrehajtást optimálisabban biztosíthatjuk, ha nagyobb ablakon keresztül az utasítások nagyobb csoportját vizsgáljuk, és ezekből választunk ki N utasítást a legjobb összevonási kombinációhoz.
A fenti példát alapul véve a probléma megoldására megállapítható, hogy általában a 4A. ábra szerinti rendszerre és eljárásra van szükségünk. Létező, magas szintű nyelven írt, létező programokat (amint az 5. ábra
HU 216 990 Β alapján ismertetésre kerül), vagy létező assembly nyelvű programokat (amint a 6. ábra alapján ismertetésre kerül) fel kell dolgozni, és ehhez egy olyan rendszert biztosítunk, amely rendelkezik azzal a képességgel, hogy felismerje az utasítások azon sorozatát, amely egyetlen összevont utasításként hajtható végre egy számítógépen, amely összevont utasítások végrehajtására alkalmas.
A 4A. ábrán látható, hogy az APR assembly program egy CF összevonó egységbe kerül, amely ebből egy CIP összevont utasításkészletű programot állít elő egy CR szabályrendszer alapján, amely visszatükrözi a rendszer és a hardver sajátosságait. Egy előnyös összevonási eljárás ismerhető meg az 1991. január 15-én bejelentett, 07/642,011 (IBM-akta: EN9-90-049) USbejelentésből. Ezekre a szabályokra a későbbiekben mint összevonási szabályokra fogunk hivatkozni. Az összevonási eljárással előállított program ezt követően közvetlenül végrehajtható egy összevont utasítás-végrehajtó géppel, amelyet a 7. ábrán láthatunk.
Az 5. ábra egy program jellegzetes útvonalát mutatja a magasabb szintű forráskódtól a tényleges végrehajtásig, és a 4A. ábra által javasolt egyik szervezési formaként is tekinthető. Az assembly szintű programokra vonatkozó változatot a 6. ábra alapján tárgyaljuk részletesebben.
Amint az nyilvánvaló az 5. ábra alapján, egy számítógépes rendszeren belül sok olyan lehetséges hely van - úgy hardver, mint szoftver -, ahol az összevonást el lehet végezni. Mindegyiknek megvan viszont a saját előnye és hátránya. Amint az 5. ábrán látható, különböző állomások vannak, amelyeken a program végighalad a forráskódtól a tényleges végrehajtásig. A kompilálási fázisban az LS forrásprogramot COM fordítóval lefordítjuk AC assemblerkódra, majd ASM assemblerfordítóval lefordítjuk MC gépi kódra és eltároljuk 46 lemezen. A végrehajtási fázis alatt a programot kiolvassuk a 46 lemezről, és egy meghatározott 50 számítógépes rendszer-konfiguráció 48 főtárolójába töltjük, ahonnan az utasítások CA cache-en és IB utasításpufferen keresztül megfelelő 52, 54, 56 utasításfeldolgozó egységbejutnak végrehajtásra. Az összevonás ezen az útvonalon bárhol elvégezhető. Általában, ha az összevonás az egyik 52, 54, 56 utasításfeldolgozó egység közelében történik, akkor az időzítés kritikusabbá válik. Ha viszont az összevonás távolabb történik az 52,54, 56 utasításfeldolgozó egységektől, akkor egy nagyméretű utasításfolyam-ablakban több utasítást lehet megvizsgálni, hogy kiválasszuk a legjobb összevonási csoportosítást, és ezzel növeljük a végrehajtás hatékonyságát.
A 6. ábra folyamatábrája adott assembly nyelvű programnak a rendszer és a hardver 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 adatként kerül az 59 szoftverösszevonó egységre, amely a programot m,-, m2-,... mn-utasításblokkokra bontja (m=l, 2,...), és előállítja az összevont utasításkészletű programot. Az egymást követő blokkok utasításait az 59 összevonó egység analizálja. A blokkokat 1-től n-ig számozzuk. Az n-ik blokk utasításait Im n-nel jelöljük, ahol m 1-től a blokkban található utasítások számáig teljed. Az egyes 60,62, 64 blokkokban lévő utasítások száma az összevonásra szánt utasításcsoportok byte-áramában függ az 59 összevonó egységtől és blokkonként változhat.
Amint az a 6. ábrán 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ó 60, 62, 64 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 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 59 összevonóegység kiválasztja az összevont utasí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.
Amennyiben nincs ilyen optimális csoportosítási lehetőség, akkor mindegyik egymással szomszédos skalár utasítás megjelölhető úgy, hogy a különböző összevont utasítások között elhelyezkedő elágazási cél az előforduló összevont párok bármelyikét hasznosíthatja. Ahol több 59 összevonó egység található, több egymást követő blokk vonható össze egyidejűleg.
A 7. ábra szerinti folyamatábra a 66 hardverutasításösszevonó egység, vagy a 67 szoftverutasí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 összevontutasítás-cache-be íródik át a 66 hardverutasítás-összevonó egységből, vagy a 67 szoftverutasításösszevonó egység kimenetére csatlakozó 76 összevontutasítás-tárolóból. A 66 hardverutasítás-összevonó egységbe 77 rendszertárolóból jut a programot alkotó utasítássorozat. Az összevont utasításokat 69 kiadó logika az utasításokat a 68 összevontutasí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 a 71 utasítás-végrehajtó egységek, például ALU-k, egy összevont utasításkészletű számítógéprendszerben képesek a skalár utasítások egymást követő, egymagukban történő vagy az összevont utasításokban a skalár utasítások egyidejű, más skalár utasításokkal párhuzamosan történő végrehajtására. Ilyen párhuzamos végrehajtás több különféle végrehajtó egységgel is megvalósítható. így például ALUval, 73 lebegőpontos (FP) aritmetikai egységgel, 75 címszámító (AU) egységgel, vagy több azonos végrehajtó egységgel (FP1, FP2 stb.), a számítógép architektúrájának és az adott számítógéprendszer kiépítettségének függvényében.
Az előbbi példában említett első összevonási formátumban az utasításfolyam mindegyik két (utasítás és adat) byte-hoz egybites összevonási információt füzünk.
Általában a vezérlőinformációt hordozó T függelék az összevont byte-áramban mindegyik utasításhoz hoz7
HU 216 990 Β záfűzhető, azaz mindegyik össze nem vont S skalár utasításhoz és mindegyik összevont utasításpárhoz, hármashoz vagy nagyobb összevont csoporthoz. A leírásban az azonosítóbitek a T függelék azon részét jelentik, amelyek az összevont csoportot alkotó CS összevont skalár utasításokat jelölik és különböztetik meg azoktól az S skalár utasításoktól, amelyek mint össze nem vonható utasítások megmaradnak az összevont utasítású programban, és lehívás után önmagukban hajthatók végre.
Ahol kettőnél több S skalár utasítás összevonásával hozható létre egy összevont utasítás, előnyös lehet további azonosító alkalmazása. A ténylegesen összevont S skalár utasítások számának kifejezéséhez szükséges azonosítóbitek minimális számát az összevont utasításcsoportot képező utasítások maximális száma kettes alapú logaritmusának (kerekítve a legközelebbi egész számra) értéke adja meg. Például, ha a maximum 2, akkor egy azonosítóbit szükséges mindegyik összevont utasításhoz. Ha a maximum három vagy négy, akkor két azonosítóbitre van szükség mindegyik összevont utasításnál. Ha a maximum öt, hat, hét vagy nyolc, akkor három azonosítóbit szükséges mindegyik összevont utasításhoz.
Egy második ilyen kódolási sémát megvalósító függelékformátumot az alábbi 1. táblázat alapján ismertetjük.
1. táblázat
Azonosító- bitek Kódolt jelentés Összevont utasítások száma
00 ez az utasítás nincs összevonva a következővel semmi
01 ez az utasítás a következő egy utasítással van összevonva kettő
10 ez az utasítás a következő két utasítással van összevonva három
11 ez az utasítás a következő három utasítással van összevonva négy
Feltéve, hogy az utasítások sorrendje olyan, hogy a szöveg minden fél szavához kell egy T függelék, lehetséges, hogy az utasításfeldolgozó egység az utasításfolyam-végrehatás előtti lehívásakor az első utasítás T függeléke kivételével mindent figyelmen kívül hagy. Más szavakkal, a lehívott szöveg fél szavát az azonosítóbitek ellenőrzésével megvizsgáljuk, hogy meghatározhassuk, hogy egy összevont utasítás kezdődik-e. Az
1. táblázatnak megfelelően, ha ez nem egy összevont utasítás kezdete, akkor az azonosítóbitek nulla értékűek. Ha a fél szó két skalár utasításból álló összevont utasítás kezdete, akkor az első utasításhoz tartozó azonosítóbitek értéke „1” és a második utasításhoz tartozó azonosítóbitek értéke „0”. Ha a fél szó három skalár utasításból álló összevont utasítás kezdete, akkor az első utasításhoz tartozó azonosítóbitek értéke „2”, a második utasításhoz tartozó azonosítóbitek értéke „1” és a harmadik utasításhoz tartozó azonosítóbitek értéke „0”. Más szavakkal, mindegyik fél szó azonosítóbitjei jelzik, hogy egy adott fél szó egy összevont utasítás kezdete-e, és ugyanakkor azt is jelzik, hogy egy összevont csoport hány utasításból áll.
Az összevont utasítások kódolásának ez a módszere feltételezi, hogy ha három utasítás van egy hármas csoportban összevonva, akkor a második és a harmadik utasítás önmagában is egy kettes csoportot alkot. Más szavakkal, ha egy elágazási cél egy hármas csoport második utasítása, akkor a második utasítás „1” azonosítója jelzi, hogy a második és harmadik utasításból álló összevont pár akkor is párhuzamosan hajtható végre, ha az első utasítás nem került végrehajtásra.
Ezen a területen jártas szakember számára nyilvánvaló, hogy a jelen találmány szerint egy adott számítógépes rendszer-konfiguráció esetén egy utasításfolyamot csak egyszer kell összevonni, és ezt követően az összevont utasítások bármely későbbi lehívása esetén lehívódnak az utasításokhoz rendelt azonosítóbitek is. Ez megszünteti azt a korábbi hátrányt, hogy egy úgynevezett szuperskalár gépben az utasítások végrehajtása előtti utolsó pillanatban kellett meghatározni és kiválasztani azokat a skalár utasításokat, amelyek párhuzamosan is végrehajthatók, és amit minden egyes alkalommal meg kellett ismételni, akár azonos, akár különböző utasítások lehívása történt meg.
Az utasítások összevonása egyszerűbb, ha az utasításfolyamban az utasítások kezdetét referenciapontok jelölik. A referenciapont alatt a leírásban annak a bytenak az ismeretét nevezzük egy utasítást és/vagy adatot tartalmazó szövegben, amely egy utasítás első byte-ja. Ezt az információt megkaphatjuk egy jelölőmezőből vagy más indikátorból, amely információt szolgáltat az utasításhatárok helyéről. Sok számítógépes rendszerben ezt a referenciapontot csak a fordítóprogram ismeri a fordítás ideje alatt, és a CPU az utasítások lehívása során. Ha az összevonást a fordítás után végezzük, a fordítóprogram függelékekkel jelezheti, hogy mely byte-ok képezik egy utasítás, és melyek egy adat első byte-ját. Ez a kiegészítő információ hatékonyabb összevonást eredményez, mivel az utasítások kezdete pontosan ismert. Természetesen a fordítóprogram különbséget tesz az utasítások és az adatok között, és megfelelő információt szolgáltat az összevonáshoz jelezve az utasításhatárokat.
byte-os utasításokat tartalmazó rendszerben, amelyek négy byte-os határokra vannak rendezve, a szöveg mindegyik négy byte-jához társul egy függelék. Hasonló módon, ha az utasítások tetszőlegesen lehetnek elrendezve, a szöveg minden egyes byte-ját meg kell jelölni függelékkel. Bizonyos számítógépes rendszerek lehetővé teszik változó hosszúságú utasítások használatát, továbbá az utasítások és az adatok keveredését is, ami tovább bonyolítja az összevonás folyamatát. Természetesen az utasítások végrehajtása alatt ismerni kell az utasításhatárokat a helyes végrehajtás érdekében. Mivel azonban az összevonást előnyösen kellő idővel az utasítás végrehajtása előtt hajtjuk végre, olyan tech8
HU 216 990 Β nikára van szükségünk, amelyhez nem szükséges annak ismerete, hogy hol kezdődnek az utasítások és melyek az adatbyte-ok. Ennek a technikának illeszkedni kell az összes elfogadott architektúratípushoz, többek között a RISC- (csökkentett utasitáskészletű számítógépek) architektúrához, ahol az utasítások általában állandó hosszúságúak, és nem keverednek adatokkal. A jelen találmánnyal kapcsolatosan ezen feladatok megoldását, amelyek a 4A. ábra alapján lettek általánosan ismertetve, egy olyan, összevont utasításokat végrehajtó géppel érjük el, amelyet az 1990. május 4-én bejelentett, 07/519,382 számú US szabadalmi bejelentésben ismertettünk.
Általában az előnyös operációs rendszert a 4B. ábra szerinti operációs rendszer képviseli. Mivel az összevonás szoftverúton is megvalósítható, az összevonó egység előnyös kiviteli példájaként az 1991. január 16-án bejelentett, 07/642,111 számú US szabadalmi bejelentésre hivatkozunk. A 4B. ábrán egy, a találmány szerint kialakított digitális számítógéprendszer vagy egy digitális adatfeldolgozó rendszer részletének egy kiviteli példája látható, amely 144 cache-szervező egységgel rendelkezik. Ez a számítógépes rendszer két vagy több utasítás párhuzamos feldolgozására képes. Van egy első tárolóegysége, amely a feldolgozásra váró utasításokat és adatokat tartalmazza a skalár gépeknél szokásos alaputasítások sorozatának formájában. Ez a tárolóegység jelen esetben egy magas szintű 136 tároló. Ez a 136 tároló (vagy főmemória) alacsonyabb sebességű, nagy kapacitású tároló, és például egy nagy kapacitású rendszer tárolóegysége vagy egy hierarchikus tárolórendszer alsó tartománya lehet. A 136 tároló- és a 144 cache-szervező egység egy 145 memóriaszervező egységre csatlakozik.
A 4B. ábra szerinti számítógépes rendszer tartalmaz továbbá egy összevonási lehetőséget vagy mechanizmust, amely a magas szintű 136 tárolóból fogadja az utasításokat és függelék formájában összevonási információval látja el azokat, amely azt jelzi, hogy ezen utasítások közül melyeket lehet egymással párhuzamosan végrehajtani. A 137 utasítás-összevonó egység egy megfelelő utasítás-összevonó egységet képvisel. Ez a 137 utasítás-összevonó egység elemzi a beérkező utasításokat, hogy meghatározza, hogy melyeket lehet párhuzamosan feldolgozni. Ezenkívül a 137 utasítás-öszszevonó egység az elemzett utasításokhoz fuggelékbiteket generál annak jelzésére, hogy mely utasításokat lehet egymással párhuzamosan, és melyeket lehet csak egyedül önmagukban végrehajtani.
A 4B. ábra szerinti rendszer tartalmaz ezenkívül egy, a 137 utasítás-összevonó egységhez csatlakozó második tárolórendszert, amely fogadja és eltárolja az analizált és függelékbitekkel ellátott utasításokat úgy, hogy azok a későbbiek során onnan lehívhatók legyenek. Ezt a második tárolóegységet összevont utasítás- 138 cache képviseli. A 138 cache kisebb kapacitású, nagyobb sebességű tároló, amely általánosan használt a számítógépes rendszerek teljesítőképességének növelésére azáltal, hogy csökkenteni lehet a kisebb sebességű 136 tároló hozzáférési gyakoriságát.
A 4B. ábra szerinti rendszerben ezenkívül több utasításfeldolgozó 139, 140, 141 stb. funkcionális egység is van. Ezek a 139—141 funkcionális egységek párhuzamosan és egy időben működnek egymással, és ezek mindegyike önmagában is alkalmas a gépi kódú utasítások egy vagy több típusának feldolgozására. Funkcionális egységként használhatók például: az általános célú aritmetikai és logikai egység (ALU), a címszámító ALU, az adatfuggőséget megszüntető ALU (például az 1990. április 4-én bejelentett, 07/504,910 számú US szabadalmi bejelentés szerint), az elágazási utasításokat feldolgozó egység, az adatléptető egység, a lebegőpontos feldolgozóegység, és így tovább. Az adott számítógépes rendszer két vagy több ilyen lehetséges funkcionális egységet tartalmazhat. Például egy adott számítógépes rendszer két vagy több, általános célú ALU-t tartalmazhat. Természetesen az adott számítógépes rendszerek egyikének sem kell a különböző 139, 140, 141 funkcionális egységek mindegyikét tartalmaznia. Az adott konfiguráció a figyelembe vett, adott számítógépes rendszer típusától függ.
A 4B. ábra szerinti rendszerben az összevont utasítás 138 cache-hez kapcsolódik továbbá egy utasításlehívó és -kiadó mechanizmus, amely a benne tárolt szomszédos utasításokat a különböző utasításfeldolgozó 139-141 funkcionális egységek között szétosztja, ha az utasítások fuggelékbitjei azt jelzik, hogy az utasítások párhuzamosan is feldolgozhatok. Ez a mechanizmus biztosítja az egyes utasítások végrehajtását is, ha a fuggelékbitjük azt jelzi, hogy a párhuzamos feldolgozás nem lehetséges, és önmagukban kell feldolgozni. Ez a mechanizmus az ábrán a 142 utasításlehívó, -kiadó és -törlő egység. A 142 utasításlehívó, -kiadó és -törlő egység lehívja az utasításokat az összevont utasítás 138 cache-ből, és megvizsgálja a fuggelékbiteket és az utasítások műveleti kód (opkód) mezejét, ezzel egy dekódolási funkciót végrehajtva, és ezen vizsgálatok, valamint más buszvezérlőjelek vizsgálata alapján az utasításokat a megfelelő 139-141 funkcionális egységre adja.
A SCISM-architektúrával összefüggésben a cache-en belüli utasítás-összevonást a 137 utasítás-összevonó egység végzi úgy, hogy mindegyik cache-sor összevonása az összevont utasítás 138 cache-bemenetére jut. így, mivel mindegyik cache-sor a 136 magas szintű tárolóból hívódik le a 138 cache-be, az összevonási elemzést a 137 utasítás-összevonó egység végzi, és továbbítja az összevonási információs fuggelékbitekkel ellátott utasításokat az összevont utasítás 138 cache-be.
A 138 cache-be töltés előtt a sort a 137 utasításösszevonó egység összevonja és függelékbiteket generál. Ezeket a függelékbitleket hozzá lehet fűzni közvetlenül azokhoz az utasításokhoz, amelyekhez tartoznak, vagy az utasításokkal maigukkal párhuzamosan is előállíthatok. Ezeket a biteket azonban mindegyik esetben a hozzájuk tartozó utasítássorral együtt tároljuk a 138 cache-ben. Szükség szerint, az összevont utasításokat a 138 cache-ből az utasításokat a hozzájuk tartozó fuggelékbit-információkkal együtt hívja le a 142 utasításlehívó, -kiadó és -törlő egység. A 142 utasításlehívó, -kiadó és -törlő egység, valamint az összevont utasítás- 138 cache úgy van kialakítva, hogy a maximális hosszúságú
HU 216 990 Β összevont utasítás (aminek hosszát a rendszer határozza meg) is lehívható legyen az összevont utasítás 138 cache-ből és kiadható legyen a 139,140, 141 stb. funkcionális egységekhez. Amint az utasítások vétele a 142 utasításlehívó, -kiadó és -törlő egységben megtörtént, a függelékbitek vizsgálata következik, hogy dekódolással megállapítható legyen, hogy párhuzamosan is végrehajthatók-e, és megvizsgáljuk az op-kód-mezőket is, hogy meghatározzuk, hogy a rendelkezésre álló 139, 140, 141 funkcionális egységek melyike a legmegfelelőbb a feldolgozásukra. Ha a függelékbitek azt jelzik, hogy két vagy több utasítás alkalmas a párhuzamos végrehajtásra, akkor ezek a megfelelő 139, 140, 141 funkcionális egységre kerülnek az op-kód-mezők kódolásának megfelelően. Az ilyen utasításokat azután egyszerre hajtjuk végre egymással a megfelelő 139, 140, 141 funkcionális egységekben.
Ha egy olyan utasítás fordul elő, amely nem alkalmas a párhuzamos végrehajtásra, akkor arra a 139, 140, 141 funkcionális egységre kerül, amelyiket az op-kódja kijelöli, és a kiválasztott 139,140, 141 funkcionális egységben egyedül és önmagában lesz végrehajtva.
Ideális esetben, amikor mindig több utasítást dolgozunk fel egyszerre, a számítógépes rendszer utasításvégrehajtási sebessége N-szer nagyobb lenne, mint abban az esetben, amikor csak egy utasítást hajtunk végre egyszerre, ahol N az utasítások száma egy csoportban, amelyeket párhuzamosan dolgozunk fel.
Amint az előbbiekben megállapítottuk, a vezérlőmező vagy -függelék az utasításhatárokat kijelölő információt tartalmaz, de tartalmazhat annyi további információt, amennyire az adott alkalmazásban szükség van.
Például egy harmadik függelékformátum szerint a vezérlőmező (függelék) 8 bites mezőként (tO, ti, t2, t3, t4, t5, t6, t7) lehet definiálva, ahol az egyes bitek jelentése: Bit funkció tO Hal, akkor az egy összevont utasítás elejét jelzi, ti Ha 1, akkor két összevont utasítást kell párhuzamosan végrehajtani.
t2 Ha 1, akkor az összevont utasítás több végrehajtási ciklusból áll.
t3 Hal, akkor le van tiltva a sorba állítás (pipelining). t4 Ha az utasítás elágazás és 1, akkor az elágazást végre kell hajtani.
t5 Hal, akkor ez az utasítás memóriablokkolást kap az előző összevont utasítástól.
t6 Ha 1, akkor engedélyezi a dinamikus utasításkiadást. t7 Hal, akkor ez az utasítás használja az ALU-t.
Általában az összevonási műveletnél olyan utasításosztályokat keresünk, amelyek párhuzamosan hajthatók végre, és biztosítják, hogy nincs olyan kizárás az összevont utasítás tagjai között, amit a hardver nem tud lekezelni. Ha kompatíbilis utasítássorozatokat találunk, akkor összevont utasítást képezünk belőlük. Például a System/370 utasításkészletét a következő osztályokra lehet felosztani:
1. RR-formátumú betöltő, logikai, aritmetikai és összehasonlító utasítások • LCR - komplemens betöltés • LPR - pozitív betöltés • LNR - negatív betöltés • LR - regiszterbetöltés • LTR - betöltés és tesztelés • NR - ÉS • OR - VAGY • XR - kizárólagos VAGY • AR - összeadás • SR - kivonás • ALR - logikai összeadás • SLR - logikai kivonás • CLR - logikai összehasonlítás • CR - összehasonlítás
2. RS-formátumú léptetések (nincs tárhozzáférés) • SRL - logikai jobbra léptetés • SLL - logikai balra léptetés • SRA - aritmetikai jobbra léptetés • SLA - aritmetikai balra léptetés • SRDL - logikai jobbra léptetés • SLDL - logikai balra léptetés • SRDA - aritmetikai jobbra léptetés • SLDA - aritmetikai balra léptetés
3. Elágazások - érték és index szerint • BCT - elágazás érték szerint (RX-formátum) • BCTR - elágazás érték szerint (RR-formátum) • BXH - elágazás felső index szerint (RS-formátum) • BXLE - elágazás alsó index szerint (RS-formátum)
4. Elágazások - feltétel szerint • BC - elágazás feltétel szerint (RX-formátum) • BCR - elágazás feltétel szerint (RR-formátum)
5. Elágazások és összekötések • BAL - elágazás és összekötés (RX-formátum) • BALR- elágazás és összekötés (RR-formátum) • BAS - elágazás és mentés (RX-formátum) • BASR - elágazás és mentés (RR-formátum)
6. Tárolás • STCM - maszkolt karakterek tárolása (0-4 byte tárolás, RS-formátum) •MVI - közvetlen mozgatás (1 byte, SI-formátum) • ST - tárolás (4 byte) • STC - karaktertárolás (1 byte) • STH - félszó-tárolás (2 byte)
7. Betöltések • LH - félszó-betöltés (2 byte) • L - betöltés (4 byte)
8. LA - címbetöltés
9. RX-formátumú aritmetikai, logikai, beszúró, össze hasonlító utasítások • A - összeadás • AH - félszó-összeadás • AL - logikai összeadás •N - ÉS
HU 216 990 Β • Ο - VAGY • S - kivonás • SH - félszó-kivonás • SL - logikai kivonás • X - kizárólagos vagy • IC - karakterbeszúrás • ICM - maszkolt karakterbeszúrás (0-4 byte lehívás) • C - összehasonlítás • CH - félszó-összehasonlítás • CL - logikai összehasonlítás • CLI - közvetlen logikai összehasonlítás • CLM - maszkolt karakter logikai összehasonlítása
10. TM - maszkolt teszt
A System/370 rendszer többi utasítása nem vonható össze a találmány szerint a párhuzamos végrehajtás céljára. Ez azonban nem záija ki, hogy egy későbbi, összevont utasításokat végrehajtó gépen ne lehessen ezeket összevonni.
A programokban leggyakrabban előforduló utasítássorozat a TM- vagy RX-formátumú összehasonlító utasítások osztályába tartozik, amelyek eredményét a közvetlenül utánuk következő feltételes elágazó utasítások hasznosítják. A teljesítmény fokozható, ha az összehasonlító (COMPARE) és elágazás (BRANCH) utasításokat párhuzamosan hajtjuk végre, amit néha a nagy teljesítményű utasításfeldolgozók meg is tesznek. Némi nehézséget jelent azonban az összehasonlítási és az elágazási osztály valamennyi tagjának a gyors azonosítása a szokásos architektúrák esetén az utasítás dekódolása közben. Ezt a nehézséget kiküszöböli a találmány, mert az osztályok összes tagjának elemzése megtörténik már jóval korábban, és egy olyan összevont utasítást állítunk elő, amely biztosan működik.
Az utasítások sok osztályát lehet párhuzamosan végrehajtani, a hardver kialakításától függően. A fent említett összehasonlító és elágazó utasítások mellett más összevonható utasításokat is említhetünk, mint például a betöltő (LOAD) és RR-formátumú utasítások, elágazás (BRANCH) és címbetöltés (LOAD ADDRESS) stb. Egy összevont utasítás természetesen több azonos osztályba tartozó utasítást, például RR-formátumú aritmetikai utasításokat is tartalmazhat, ha a processzor rendelkezik a szükséges végrehajtó egységekkel.
Bármelyik megvalósítható utasításfeldolgozóban van egy felső határa az egy összevont utasításban lévő utasításoknak. Ezt az m felső határt meg kell adni az összevonó egységnek, amely összevont utasítások generálásával végrehajtható utasításokat állít elő, amelyek nem lehetnek hosszabbak az alkalmazott hardver befogadóképességénél. Megjegyezzük, hogy m mindig az alkalmazott hardver függvénye, és nem korlátozza az összevonás céljából megvizsgálható utasítások számát egy adott kódsorozatban. Általában minél tágabb a vizsgálat köre, annál nagyobb párhuzamosság érhető el, mivel előnyösebb összevonási lehetőségeket ismerünk fel az összevonó egységgel. Ennek szemléltetésére tekintsük a következő példát:
XI : bármely összevonható utasítás,
X2 : bármely összevonható utasítás,
LOADR1,(X) :R1 betöltése Xmemóriahelyről,
ADDR3, Rl :R3=R3+R1,
SUBR1,R2 :R1=R1-R2,
COMP Rl, R3 :R1 összehasonlítása R3-mal,
X3 : bármely összevonható utasítás,
X4 : bármely összevonható utasítás.
Ha a hardver által megszabott összevonási felső határ m=2, akkor több különböző út lehetséges az adott utasítássorozat összevonására az összevonó egység méretétől függően. Ha ez a méret 4, akkor az összevonó egység a következő utasításpárokat hozza létre: <-Xl>, <X2LOAD>, <ADDSUB>, <COMPX3>, <X4->, kivédve teljesen a hazárdokat a LOAD és ADD és SUB és COMP utasítások között. Más részről egy szuperskalár gép, amelynél m=2, és amely az utasításokat szigorúan az utasításkiadás sorrendjében FIFO-alapon kezeli, <X1 X2>, <LOAD ADD>, <SUB COMP>, <X3 X4> utasításpárokat képezné, teljesen figyelmen kívül hagyva az utasítások közötti kizárásokat. Sajnos a LOAD és ADD utasítások nem hajthatók végre párhuzamosan, mivel az ADD utasításnak szüksége van a LOAD eredményére. Hasonló módon a SUB és COMP utasítások sem hajthatók végre párhuzamosan. Ezért ily módon nem lehet a hatékonyságot növelni.
A leírt rendszerek összevont utasításkészletű program generálási eljárását és az összevonási információ (függelék) utasításhoz társításának több változatát biztosítják. Mivel azonban nem lehet kizárni, hogy egy elágazó utasítás egy összevont utasítás közepén forduljon elő, felvetődik a kérdés, hogy hogyan lehet ezt az összevonási információval kezelni, és ami még fontosabb, hogyan lehet a program normál futását megőrizni a tetszőleges helyen előforduló elágazások esetén. Ezt a problémát a 4B. ábrán látható 142 utasításlehívó, -kiadó és -törlő egység oldja meg, amint azt a későbbiekben megmutatjuk. Először is, induljunk ki az összevonási T függelék negyedik definíciójából, amely szerint T= 1, ha a hozzá tartozó utasítás egy összevont utasítás első utasítása, vagy pedig az utasítást önmagában kell végrehajtani. T=0 az összevont utasítás első utasítást követő utasításai esetén. Ezután, feltéve, hogy a 142 utasításlehívó, -kiadó és -törlő egység képes lehívni a maximális hosszúságú összevont utasítást (mint fent), amikor utasításokat hív le egy elágazást követően, mindig a maximális hosszúságú összevont utasítás hosszának megfelelő hosszúságú, pontosan az elágazási cél címmel kezdődő szövegblokkot hív le, majd pedig összevont utasításként végrehajt minden utasítást, amelynél T=0, a lehívott szöveg azon pontjáig, ahol egy utasítás kezdődik, amelynél T=l, ami egy következő összevont utasítás kezdetét jelzi. Ha egy elágazási cél címen kezdődő utasításnál T=l, akkor az egy összevont utasítás kezdetét jelenti és közvetlenül végrehajtható. Ezt a helyzetet a 9. ábra szemlélteti. A 9. ábrán az Im n megjelölésnél n az összevont utasítás sorszámát, m pedig az összevont utasítás utasításainak számát jelöli. A lehetséges tartomány m számára 1-től kezdődik, és az összevont utasítás maximális hosszáig terjed, ebben a példában 3. Az 1 összevont utasítás 2.
HU 216 990 Β utasítása egy BJ, elágazó utasítás, amelynek két lehetséges cél „a” és „b” útvonala van (lásd 10. ábra). Az „a” útvonal a j összevont utasítás középső (I2) utasításához vezet, míg a „b” útvonal a j összevont utasítás első (IJ utasításához vezet. Ha az elágazás az „a” útvonalat követné, akkor a hardver lehívná a maximális hosszúságú összevont utasítást, azaz három utasítást, azután végrehajtaná az Iji és I3J utasításokat mint öszszevont utasításokat. A lehívott szöveg maradéka, azaz I,k egy új összevont utasítás kezdete, vagy egy egyszerű utasítás (mivel T= 1), és tartalékolva marad a következő végrehajtásra szánt blokk lehívásáig. Ha azonban az elágazás a „b” útvonalat követve aj összevont utasítás első utasításához vezetne, akkor a hardver ismét lehívná a maximális hosszúságú összevont utasítást, azaz jelen esetben egy teljes összevont utasítást, azaz I ,i, Iji és Iji utasításokat. Ennek az összevont utasításnak a végrehajtása közvetlenül megtörténhet.
Ez a technika ugyanúgy alkalmazható más függelékformátumok esetén, mint például a korábbiakban tárgyalt második függelékformátumnál.
Megjegyezzük, hogy a 10. ábrán a Β·2 elágazó utasítás össze van vonva az azt követő utasításokkal, de az elágazás megtörténtével az elágazást követő lehívott szöveg, legyen az akár az elágazó utasítást tartalmazó összevont utasítás többi utasítása vagy azt követő egyéni, vagy összevont utasítások, illetve adatok (olyan rendszerekben, ahol az utasítások és az adatok keveredése megengedett), nem változtathatják meg a gép állapotát, ha korrekt programfutást akarunk fenntartani. Ezután, az elágazó utasítás céljának lehívásakor, lehívhatunk egy olyan összevont utasítást, amely tartalmaz egy második elágazó utasítást, amit szintén olyan szöveg követ, amely nem változtathatja meg a gép állapotát, ha a második elágazás megtörtént. Ez az elágazástól elágazásig sorozat vég nélkül folytatódhat. Mindkét esetben a korrekt programfutás fenntartásának a feltétele az, hogy megakadályozzuk azt, hogy a végre nem hajtandó utasítások megváltoztassák a gép állapotát. Ez azt jelenti, hogy a végrehajtott elágazást követő utasítások végrehajtási eredményét törölni kell. Algoritmizálva ez a következőképpen történik:
1. Kezdjük el egy elágazást tartalmazó, összevont utasítás végrehajtását.
2. Ha az összevont utasítás ténylegesen tartalmaz egy elágazó utasítást, ne engedjük, hogy az elágazást követő bármelyik utasítás, legyen az ugyanabban az összevont utasításban vagy egy azt követő egyéni utasítás, megváltoztassa a gép állapotát.
3. Ha az elágazás megtörtént, töröljük a végrehajtott elágazást követő bármely utasítás végrehajtási eredményét. Ne töröljük viszont az elágazási cél végrehajtását.
Jóllehet a találmányt előnyös kiviteli példák és lehetséges változatok alapján ismertettük, számos olyan módosítás elképzelhető most és a jövőben, amelyek a szakember számára nyilvánvalóak a találmány alapján. Az ilyen módosítások és jövőbeni továbbfejlesztések a következő igénypontokkal meghatározott oltalmi körbe tartozónak tekintendők.

Claims (16)

  1. SZABADALMI IGÉNYPONTOK
    1. Számítógépes rendszer utasítások feldolgozására, ahol az utasítások összevonható utasításokat tartalmazó utasítások, amelyek egy maximális utasításszámig több utasítást tartalmazó csoportot alkotnak, amelyek kiadás után összevont utasításként párhuzamosan végrehajthatók egy olyan számítógépen, amelynek több utasításfeldolgozó funkcionális egysége (156, 158, 160; 139, 140, 141) van, azzal jellemezve, hogy az utasítások az összevont utasításon belüli ugrásponttal/elágazással rendelkező utasítások, amelyek egyidejűleg hajthatók végre végrehajtható összevont utasításként, és ahol a rendszernek a funkcionális egységek (156, 158, 160; 139, 140, 141) egyikében elágazási utasítást végrehajtó eszköze; egy vagy több utasítást tartalmazó, egy vagy több öszszevont utasításból álló utasítássorozat-szöveget dekódoló lehívóeszköze;
    a lehívott utasítássorozat-szövegben található összevont utasítást dekódoló eszköze, azaz dekódere (152) van, ahol az összevont utasítások a gép által végrehajtandó utasítássorozat szekvenciáját tartalmazzák; és ahol a dekóder (152) megvizsgálja az utasítások utasításformátumát, és meghatározza, hogy az utasítássorozat utasításeleme az összevont utasítás kezdőeleme, vagy a végrehajtható összevont utasítás következő részéhez tartozik; és van egy kiadóeszköze, amely legalább részben a dekóder (152) meghatározási eredményétől függően végrehajtásra kiadja egy összevont utasítás elágazási célponttal címzett, utasítást is tartalmazó utasításait a funkcionális egységeknek (156, 158, 160; 139, 140, 141).
  2. 2. Az 1. igénypont szerinti rendszer, azzal jellemezve, hogy a funkcionális egységeken (156, 158, 160; 139, 140, 141) belül végrehajtó egysége van az utasítások végrehajtására; és törlőegysége van az összevont utasítás utasítása végrehajtásának törlésére.
  3. 3. Az 1. igénypont szerinti rendszer, azzal jellemezve, hogy törlőegysége van az összevont utasítás utasítása eredményének törlésére.
  4. 4. Az 1-3. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy egy teljes összevont utasítást lehívó eszköze van; ahol a dekódolóeszköz az összevont utasítás utasításainak végrehajtását kiváltó eszköz.
  5. 5. Az 1-4. igénypontok bármelyike szerinti rendszer, azzal jellemezve, hogy a dekódolóeszköz detektálja az összevont utasítás végét, és kezdeményezi, hogy a kiadóegység az utasításszöveg fennmaradó részét őrizze meg egy későbbi végrehajtásig.
  6. 6. Eljárás utasítások feldolgozására, ahol az utasítások összevonható utasításokat tartalmazó utasítások, amelyek egy maximális utasításszámig több utasítást tartalmazó csoportot alkotnak, amelyek kiadás után összevont utasításként párhuzamosan végrehajthatók egy olyan számítógépen, amelynek több utasításfeldolgozó funkcionális egysége van, azzal jellemezve, hogy az utasítások az összevont utasításon belüli ugrásponttal/elágazással rendelkező utasítások, amelyek egyidejű12
    HU 216 990 Β lég hajthatók végre végrehajtható összevont utasításként, és ahol az eljárás során egy vagy több elágazási célpontként címezhető utasítást tartalmazó, egy vagy több összevont utasításból álló utasítássorozat-szöveget dekódolunk a későbbi végrehajtáshoz;
    egy lehívott utasítássorozat-szövegben lévő összevont utasítást dekódolunk, ahol az összevont utasítás a gép által végrehajtandó utasítássorozat szekvenciáját tartalmazza, ahol az utasítások formátuma op-kódot és az utasításokhoz társított vezérlőbiteket tartalmaz, ahol a vezérlőbitek jelzik, hogy a hozzá tartozó utasítás párhuzamosan végrehajtható-e egy következő utasítással egy végrehajtható összevont utasításként; és megvizsgáljuk az összevont utasítás végrehajtása szempontjából lényeges op-kódot és a hozzá tartozó vezérlőbiteket az utasítások utasításformátumában; és meghatározzuk, hogy az utasítássorozat-szöveg utasítása az összevont utasítás kezdő utasítása, vagy a következő részhez tartozik; és kiadjuk egy összevont utasításelágazási célponttal címzett, utasítást is tartalmazó utasításait a funkcionális egységeknek egy elágazási célponttal címzett utasítástól kezdődően - amely az utasítássorozat-szekvencián belül bárhol lehet az elágazási célponttal címzett utasítást tartalmazó összevont utasítás végéig; végrehajtjuk a végrehajtható összevont utasítás összes, egyidejűleg kiadott utasítását az elágazási célponttal címzett utasítástól kezdődően a következő összevont utasítás kezdő utasításáig; és miután az összevont utasítás végrehajtása megkezdődött, a szöveg fennmaradó részét - beleértve a következő végrehajtható, összevont utasítás kezdő utasításelemét is - lehetséges végrehajtáshoz megtartjuk.
  7. 7. A 6. igénypont szerinti eljárás, azzal jellemezve, hogy utasításokat adunk ki a funkcionális egységeknek, miután meghatároztuk, hogy az utasítássorozat-szöveg lehívott utasítása egy végrehajtható összevontutasításszekvenciát kezd; továbbá végrehajtjuk a végrehajtható összevontutasítás-szekvencia elágazási utasítást is tartalmazó utasításait; töröljük az összevont utasítás utasításainak végrehajtását olyan helyzetekben, amikor az összevont utasításban az elágazásiutasítás-elemet követő utasításelemek végrehajtása hibás eredményhez vezetne, vagy egy második elágazásiutasítás-elemet tartalmazó más, következő utasítások nem változtathatják meg a gép állapotát, amikor a második elágazásiutasításelem-kiadás után a funkcionális egységekre kerül.
  8. 8. A 6. igénypont szerinti eljárás, azzal jellemezve, hogy az összevont utasítás az összevont utasítás másik utasításával párhuzamosan végrehajtható elágazási utasítást tartalmaz, amelynek során, ha az elágazás megtörtént, töröljük az elágazást követő utasitás(ok) eredményét úgy, hogy annak/azok hatása olyan, mintha az(ok) végre sem lett(ek) volna hajtva.
  9. 9. A 6. igénypont szerinti eljárás, azzal jellemezve, hogy egy teljes összevont utasítást hívunk le, és az összevont utasítás azon utasításait végrehajtjuk, amelyek egy tetszőleges, az elágazási utasítás által meghatározott ponton kezdődnek és az összevont utasítás végén fejeződnek be.
  10. 10. A 6. igénypont szerinti eljárás, azzal jellemezve, hogy detektáljuk az összevont utasítás végét.
  11. 11. A 7. igénypont szerinti eljárás, azzal jellemezve, hogy ha az összevont utasítás egyik utasítása elágazási utasítás, amelyet legalább egy második utasítás követ, az elágazás végrehajtása után az elágazást követő második utasítás eredményét végrehajtás közben töröljük.
  12. 12. A 7. igénypont szerinti eljárás, azzal jellemezve, hogy ha az összevont utasítás elágazási utasítását követő második utasítás önmagában végrehajtható utasításnak tűnik, az elágazás végrehajtása után az összevont utasítás második utasításának végrehajtását töröljük.
  13. 13. A 6. vagy 7. igénypont szerinti eljárás, azzal jellemezve, hogy az összevonási vezérlőbitek az utasítások sorozatában mindegyik utasításelemnél jelzik, hogy
    - egy utasítás párhuzamosan végrehajtható-e az utasításszekvencia következő utasításával összevont utasításként, vagy jelzi, hogy
    - az utasítás nem hajtható végre párhuzamosan az előző utasítással az utasítássorozaton belül, tehát az utasítást egyedi utasításként kell végrehajtani.
  14. 14. A 6. vagy 7. igénypont szerinti eljárás, azzal jellemezve, hogy az összevonási vezérlőbitek az utasítások sorozatában mindegyik utasításelemnél jelzik, hogy
    - egy utasítás párhuzamosan végrehajtható-e az utasításszekvencia következő utasításával összevont utasításként,
    - a következő utasítások számát, amelyekkel együtt az utasítás végrehajtható, vagy jelzi, hogy
    - az utasítás nem hajtható végre párhuzamosan az előző utasítással az utasításszekvencián belül, tehát az utasítást egyedi utasításként kell végrehajtani.
  15. 15. A 6. vagy 7. igénypont szerinti eljárás, azzal jellemezve, hogy az összevonási vezérlőbitek az utasítások sorozatában mindegyik utasításelemnél jelzik, hogy
    - egy utasítás párhuzamosan végrehajtható-e az utasításszekvencia következő utasításával, vagy jelzik, hogy
    - az utasítás nem hajtható végre párhuzamosan az előző utasítással az utasításszekvencián belül, tehát az utasítást egyedi utasításként kell végrehajtani.
  16. 16. A 7. igénypont szerinti eljárás, azzal jellemezve, hogy az összevonási vezérlőbitek az utasítások sorozatában mindegyik utasításelemnél jelzik, hogy
    - egy utasítás párhuzamosan végrehajtható-e az utasításszekvencia következő utasításával,
    - a következő utasítások számát, amelyekkel együtt az utasítás végrehajtható, vagy jelzik, hogy
    - az utasítás nem hajtható végre párhuzamosan az előző utasítással az utasításszekvencián belül, tehát az utasítást egyedi utasításként kell végrehajtani.
HU9200024A 1990-05-04 1991-03-29 Eljárás és számítógépes rendszer utasítások feldolgozására HU216990B (hu)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US51938490A 1990-05-04 1990-05-04
US51938290A 1990-05-04 1990-05-04
US07/543,458 US5197135A (en) 1990-06-26 1990-06-26 Memory management for scalable compound instruction set machines with in-memory compounding
US07/642,011 US5295249A (en) 1990-05-04 1991-01-15 Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel

Publications (3)

Publication Number Publication Date
HU9200024D0 HU9200024D0 (en) 1992-03-30
HUT60048A HUT60048A (en) 1992-07-28
HU216990B true HU216990B (hu) 1999-10-28

Family

ID=46201961

Family Applications (1)

Application Number Title Priority Date Filing Date
HU9200024A HU216990B (hu) 1990-05-04 1991-03-29 Eljárás és számítógépes rendszer utasítások feldolgozására

Country Status (7)

Country Link
EP (2) EP0481031A4 (hu)
JP (2) JPH0679273B2 (hu)
AT (1) ATE194236T1 (hu)
DE (1) DE69132271T2 (hu)
HU (1) HU216990B (hu)
PL (1) PL166513B1 (hu)
WO (2) WO1991017496A1 (hu)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728639A (ja) * 1993-07-13 1995-01-31 Nec Corp マイクロプロセッサ
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US7840717B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing a variable length device command word at a control unit in an I/O processing system
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator
US11334491B1 (en) * 2020-11-18 2022-05-17 Centaur Technology, Inc. Side cache array for greater fetch bandwidth

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
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
US4586127A (en) * 1982-11-03 1986-04-29 Burroughs Corp. Multiple control stores for a pipelined microcontroller
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 ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
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 情報処理装置

Also Published As

Publication number Publication date
PL293182A1 (en) 1992-10-19
EP0545927B1 (en) 2000-06-28
WO1991017495A1 (en) 1991-11-14
DE69132271D1 (de) 2000-08-03
EP0545927A4 (en) 1993-04-26
JPH0680489B2 (ja) 1994-10-12
DE69132271T2 (de) 2000-12-21
JPH04506878A (ja) 1992-11-26
HUT60048A (en) 1992-07-28
JPH0679273B2 (ja) 1994-10-05
PL166513B1 (pl) 1995-05-31
HU9200024D0 (en) 1992-03-30
ATE194236T1 (de) 2000-07-15
EP0481031A1 (en) 1992-04-22
EP0545927A1 (en) 1993-06-16
EP0481031A4 (en) 1993-01-27
JPH04505823A (ja) 1992-10-08
WO1991017496A1 (en) 1991-11-14

Similar Documents

Publication Publication Date Title
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
US5197135A (en) Memory management for scalable compound instruction set machines with in-memory compounding
US5448746A (en) System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US7458069B2 (en) System and method for fusing instructions
JP2816248B2 (ja) データプロセッサ
EP0380847B1 (en) Method and data processing unit for decoding multiple specifiers in a variable length instruction architecture
JPH087681B2 (ja) スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法
EP0380849A2 (en) Preprocessing implied specifiers in a pipelined processor
JPH0429093B2 (hu)
US7069545B2 (en) Quantization and compression for computation reuse
US20110302394A1 (en) System and method for processing regular expressions using simd and parallel streams
RU2675509C1 (ru) Основанный на выравнивании параллелизм блоков для доступа к памяти
CN110659223A (zh) 用于延迟的不规则载荷的预取器
JP2000132404A (ja) 命令列最適化装置
HU216990B (hu) Eljárás és számítógépes rendszer utasítások feldolgozására
KR19990082748A (ko) 번역및테스트를위한전문밀리코드명령
US10891130B2 (en) Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
KR19990082747A (ko) 압축기억된십진수나눗셈에대한전문밀리코드명령
JP6160232B2 (ja) コンパイルプログラムおよびコンパイル方法
JP4254954B2 (ja) データ処理装置
US5732254A (en) Pipeline system branch history table storing branch instruction addresses and target addresses with inhibit bits
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
EP0825529A2 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction