CS93591A2 - Method of instruction sequence identification in byte flow and at least two instructions flagging for parallel execution - Google Patents

Method of instruction sequence identification in byte flow and at least two instructions flagging for parallel execution Download PDF

Info

Publication number
CS93591A2
CS93591A2 CS91935A CS93591A CS93591A2 CS 93591 A2 CS93591 A2 CS 93591A2 CS 91935 A CS91935 A CS 91935A CS 93591 A CS93591 A CS 93591A CS 93591 A2 CS93591 A2 CS 93591A2
Authority
CS
Czechoslovakia
Prior art keywords
instruction
instructions
syllable
sequence
predicted
Prior art date
Application number
CS91935A
Other languages
English (en)
Inventor
Stamatis Vassiliadis
Richard James Eichemeyer
Original Assignee
Ibm
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
Application filed by Ibm filed Critical Ibm
Publication of CS93591A2 publication Critical patent/CS93591A2/cs

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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3842Speculative instruction execution
    • 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

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)
  • Executing Machine-Instructions (AREA)

Description

ASSOCIATED LAW OFFICES
ur. zelený 115 04 Praha 1, Žitná 25
Univerzální teehnika a-leženi inotrukčníoh úrovní-paralelníoh
Příbuzné přihlášky ~ _ J Následující příbuzné přihlášky jsou běžně vlastnictyXgf·právníh\nástupce a jsou členěny následovně :J!5!e-efthické vyba-vení počítačů se sdruženou závislostí^-derť” (dokument EN 990 014přihlášeno 4\4.1990, ser. _Np^O77504,91 0 ; a "Strojová archi-tektura k převáúěrií---:táchnických jednotek v souboru složenýchinstrukcí^—fdoku^ent EN 990 020), přihlášeryj 4.5.1990,foe^No, 07/51 9»38>.
Oblast techniky
Vynález se týká paralelního zpracování instrukcí počítačema zejména se týká zpracování toku binární informace obsahujícíinformace za účelem identifikace těch instrukcí, které mohoubýt provedeny paralelně specifickou sestavou počítače.
Dosavadní stav techniky
Pojetí paralelního sestavení instrukcí pomohlo zvětšitvýkonnost počítačových systémů. Paralelní sestavování je zalo-ženo na samostatných funkčních jednotkách, které mohou provádětsoučasně dvě nebo více stejných nebo různých instrukcí.
Jinou používanou technikou pro zvýšení výkonnosti počíta-čových systémů je zřetězené zpracování. Zřetězené zpracováníposkytuje postup paralelního zpracování, nebot umožňuje prová- 2 dět vícenásobné instrukce souběžně.
Mnohdy však úspěšnosti paralelního provádění anebozřetězeného zpracování není dosaženo z důvodu zpoždění způ-sobených vzájemným blokováním během přenosu dat a vlivem vzá-jemného blokování v závislosti na přístrojové technice. Příkladvzájemného blokování v závislosti na datech je tak zvané blo-kování "zápis-čtení", kde první instrukce musí napsat svůjvýsledek dříve, než druhá instrukce může být čtena a následněpoužita. Příkladem vzájemného blokování technickým vybavenímje moment, kde musí první instrukce použít speciální přístro-jovou složku technického vybavení a druhé instrukce musí taképoužít tutéž speciální složku technického vybavení.
Jedním z dříve používaných technických postupů k vylou-čení vzájemného blokování (někdy zvané zřetězené hazardy) jedynamické rozvrhování. Dynamické rozvrhování znamená, že krátcepřed zahájením jsou operační kódy v instrukčním toku dekódo-vány za účelem zjištění, zda instrukce lze provádět paralelně.Počítače praktikující jeden druh takového dynamického rozvrho-vání jsou někdy zvány suprskalárními zdroji. Kriteria dyna-mického rozvrhování jsou jednotná pro architekturu každé sadyinstrukcí, jakož i základní realizaci této architektury v jaké-koliv dané jednotce pro zpracování instrukce. Účinnost dyna-mického rozvrhování je proto omezena složitostí architektury,která vede k rozsáhlé logice určující, které kombinace instruk-cí lze provést paralelně a tak zvýšit dobu cyklu operačnízákladní jednotky. Zvětšená přístrojová technika a doba cyklupro dynamické rozvrhování se stává velkým problémem proarchitektury, které mají stovky různých instrukcí.
Bylo učiněno rovněž několik pokusů o zvětšení účinnostipomocí tak zvaného statického rozvrhování, které je provedenodříve, než je tok instrukcí vyvolán z paměti k výpočtu. Static-ké rozvrhování je docíleno pohybem kódu a tím přeřazením instrukčního sledu před výpočtem, foto přeřazení vytvoří ekvivalentnítok instrukcí, který mnohem více využije přístrojové techniky pomocí paralelního zpracování. Takové statické rozvrhování jetypicky provedeno v době překladu do strojově orientovanéhojazyka. Přeřazené instrukce však zůstanou ve svém původnímstavu a běžné paralelní zpracování stále vyžaduje nějaký tvardynamického určení právě před prováděním instrukcí za účelemrozhodnutí,zda vykonat dvě nejbližší instrukce sériově neboparalelně. Při dynamickém rozvrhování, statickém rozvrhování nebojejich kombinaci se vyskytují další nedostatky. Například jetřeba přezkoumat každou skalární instrukci znovu pokaždé, je-1vyvolána k vykonán;, rozhodnutí, zda je způsobilá pro paralelníprovádění. K dispozici není žádné opatření pro identifikacia označení předem těch skalárních instrukcí, které jsou schop-né pro paralelní provádění.
Jiným nedostatkem dynamického rozvrhování při realizovánísuperskalárních strojů je způsob posuzování skalárních instrukcí pro možné paralelní zpracování. Superskalární stroje zkoušejí skalární instrukce na základě popisů jejich operačního kódua neexistuje opatření, aby byly vzaty v úvahu technické pro-středky počítače. Instrukce jsou také vydávány metodou "prvnízařazen, první vybrán", čímž je eliminována možnost tvořenískupin, aby se zabránil nebo omezil výskyt vzájemného bloko-vání . V několika dosavadních technických řešeních jsou vzatyv úvahu požadavky technických vybavení pro paralelní zpracová-ní instrukcí. Jedním takovým řešením je stroj na zpracovánívelmi dlouhých instrukčních slov, ve kterém důmyslný kompilá-tor přeřazuje instrukce tak, že je zjednodušeno strojové roz-vrhování instrukcí. Při tomto přístupu k řešení musí být kom-pilátor složitější, než jsou standardní kompilátory, takže lzepoužít větší okénko pro vyhledávání většího počtu paralelismův instrukčním toku. Výsledné instrukce nemohou být nutně cílo-vým kódem slučitelným s dosavadní stávající architekturou,čímž by jeden problém byl vyřešen, zatímco by vznikly další nové problémy. V podstatě vznikají také další nové problémyvzhledem k častému větvení, které omezuje jeho paralelitu.
Nedávné inovace ve snaze mnohem úplněji využít paralelníprovádění instrukcí se nazývá "Technické vybavení počítačůse sdruženou závislostí dat". Složená instrukce se vytvořípředběžným zpracováním instrukčního toku za účelem vyhledánísad se dvěma nebo větším počtem sousedních skalárních instruk-cí, které lze vykonávat paralelně. Určité typy vzájemně bloko-vaných instrukcí mohou být složeny pro paralelní prováděnív některých případech, kde vzájemné blokování je schopné sdru-žování ve zvláštním uspořádání technických prostředků počítače.V ostatních konfiguracích, kde vzájemná sdružování jsou nezpů-sobilá, instrukce se závislými daty nebo daty závislými natechnickém vybavení, vzájemná blokování jsou vyloučena ze sku-pin tvořících složené instrukce. Každá složená instrukce jeidentifikována řídící informací jako jsou označení přiřazenásložené instrukci a délka složené instrukce schopná převoduv rozsahu začínajícím sadou o dvou skalárních instrukcích ažpo jakýkoliv maximální počet jednotlivých skalárních instrukcí,který lze společně zpracovat specifickou realizací technickýchprostředků počítače.
Je-li instrukce vyvolána k provedení, musí být známy mezeinstrukcí z důvodů způsobilosti řádného provedení. Kde je všaktok instrukcí předběžně zpracován za účelem vytvoření slože-ných instrukcí, meze instrukcí nejsou často zřejmé při pouhémzkoušení řetězce bytů. Zejména to platí pro architektury,které dovolují proměnlivou délku instrukcí. Další komplikacevznikají, když architektura připouští vzájemné smíšení dat ainstrukcí. V architektuře,například systému IBM 370, oba shora uvede-né nedostatky způsobují velmi komplikovaný problém při před-běžném zpracování instrukčního toku za účelem umístění vhod-ných skupin skalárních instrukcí. Za prvé instrukce mají třimožné délky - dva byty nebo čtyři byty nebo šest bytů. Ačkoliv 5 skutečná délka zvláštní instrukce je vyznačena v prvních dvoubitech operačního kódu instrukce, začátek instrukce v řetězcibytů nelze běžně identifikovat pouhou kontrolou. Za druhéinstrukce a data mohou být vzájemně smíšena. Z uvedených důvo-dů existence nebo neexistence referenčního bodu v toku bytůinstrukce má kritickou důležitost pro tento vynález. Referenčníbod je definován jako znalost začátku instrukce nebo kde jsoumeze instrukce. Pokud není dodána přídavná informace do instruk-čního toku, jsou meze instrukce obvykle známy jenom z kompilač-ní doby nebo doby výpočtu, kdy instrukce jsou vyvolány základníjednotkou.
Podstata vynálezu
Stručný obsah a předměty vynálezu.
Podle zmíněného úvodu je předmětem vynálezu opatřenítechnických prostředků pro generaci složených instrukcí z tokubinárních instrukcí bez znalosti začátku instrukcí a bez zna-losti, které slabiky obsahují data místo instrukcí.
Jiným předmětem vynálezu je přidání řídící informace dotoku instrukcí obsahujících skupinovou informaci označující kdesložená instrukce začíná, jakož i oznamující počet skalárníchinstrukcí, které jsou včleněny do složené instrukce.
Dalším předmětem je opatření technických prostředků,které by byly aplikovatelné na architektury komplexních instruk-cí o proměnlivé délce instrukcí a data smíšená s instrukcemia které jsou také aplikovatelné na architektury čítače přemís-těných instrukcí, v nichž instrukce mají konstantní délku a vnichž data nejsou smíchána s instrukcemi.
Ještě dalším předmětem je vytvoření způsobu předběžnéhozpracování instrukčního toku pro sestavení složených instrukcí,které ještě udržely svoje původní obsahy. Souběžným předmětem - 6 - je stavba složených instrukcí beze změny cílového kódu ska-lárních instrukcí, které tvoří složenou instrukci, čímž dovo-lují dosavadním programům realizovat zlepšení účinnosti strojena zpracování složených instrukcí, přičemž je dodržena sluči-telnost s dřívějšími stroji realizovanými pro skalární instrukce.
Dalším předmětem je stanovení způsobu předběžného zpraco-vání toku instrukcí pro vytvoření složených instrukcí, přičemžtuto metodu lze realizovat pomocí programových prostředkůanebo technických prostředků v různých bodech systému počítačepřed provedením instrukce. Souběžným předmětem je zajištěnízpůsobu předběžného zpracování insV 'kcí, které ovládají tokbinárních instrukcí jako část následného kompilátoru,nebo částvstupní paměti,nebo část rychlé vyrovnávací paměti jednotkypro složení instrukcí a která umožní start složených instrukcína začátku slabikového toku, aniž by byly známy meze instrukcí.
Podle vynálezu je tak snahou docílení shora zmíněnýchpředmětů předběžným zpracováním sady instrukcí (nebo program),aby bylo statisticky určeno, které instrukce mohou být složenydo složených instrukcí. Takové zpracování je děláno v typic-kém spojení v jeden celek programových prostředků anebo tech-nických prostředků, který vyhledá třídy instrukcí, které lzeprovádět paralelně v uspořádání speciálního počítačového systé-mu. Instrukční třídy a pravidla pro složení jsou realizačnímspecifikem a budou se měnit v závislosti na počtu a typu funk-čních prováděcích jednotek. Zatímco bude udržován jejich původ-ní sled a nedotčený cílový kód, budou selektivně seskupenyjednotlivé instrukce a kombinovány s jednou nebo větším počtemjiných sousedních skalárních instrukcí za účelem vytvořeníbytového toku složených instrukcí, který obsahuje jak složenéskalární instrukce pro paralelní provádění, tak nesložené ska-lární instrukce pro jednotlivé provádění. Řídící informace jepřipojena pro identifikování informace vztahující se na prová-dění složených instrukcí. Předložený vynález poskytuje techniku složení dvou nebo - 7 - v.ětšího počtu skalárních instrukcí z jednoho toku instrukcí,aniž by byl znám okamžik startu nebo délky každé jednotlivéinstrukce. Všechny možné sledy instrukcí jsou posuzovány podlesledu předem určené polohy pole pro předpokládanou délkuinstrukce. V systému IBM/370 délka instrukce je částí operační-ho kódu. V jiných systémech je délka instrukce částí operand. V některých případech praktického použití techniky podle vyná-lezu vzniká platná sbíhavost mezi dvěma možnými sledy instrukcí,čímž jsou zúženy možné výběry instrukčních mezí. V ostatníchpřípadech, kde nevzniká platná sbíhavost, jsou sledovány různémožné sledy instrukcí až do konce slabikového toku. Skutečnameze instrukcí nejsou známy, pokud instrukce nejsou vyvolányk provedení. Tak všechny věrohodné instrukce, jakož i všechnyrušivé instrukce, jsou zakódovány identifikačními značícímibity na základě speciálních pravidel směrodatných pro konfigu-raci technických prostředků. V architektuře systému IBM/370jsou instrukce buá dvou, čtyř nebo šesti slabikové délky, zalo-žené na délkových kódech v instrukci. Hodnota každého identi-fikačního označujícího bitu (založená na předpokládané polozeoperačního kódu) je zaznamenána pro každou možnou dvou, čtyřnebo šesti slabikovou instrukci. Jakmile je skutečná mezinstrukce zjištěna pro výpočet, jsou odpovídající správné značí-cí hodnoty použity k identifikaci začátku složené instrukceanebo začátek nesložené instrukce a ostatní nesprávné generova-né značky jsou opomenuty. 8 utfatíKasaEimis·.^,\y ? Přehled obrázků na výkresech
Shora uvedené a ostatní předměty, význaky a výhody vyná-lezu budou zřejmé odborníkům se zřetelem k následujícímu popi-su a připojeným výkresům.
Stručný popis výkresů
Obr. 1 základní diagram vyšší úrovně vynálezu;
Obr. 2 časový diagram realizace sekvenčního procesoru ukazují-cí paralelní provádění určitých neblokovaných instrukcí,které byly selektivně seskupeny do toku složenýchinstrukcí;
Obr. 3 časový diagram realizace multiprocesoru ukazující paralelní provádění skalárních a složených instrukcí,které nejsou vzájemně blokovány;
Obr. 4 je rozdělen na obr.4A,4B a znázorňuje selektivní kate-gorizaci instrukcí prováděných stávajícím skalárnímzařízením;
Obr. 5 ukazuje typickou cestu programu od prvotního kódu keskutečnému výpočtu;
Obr. 6 vývojový diagram ukazující generaci programu sady složených instrukcí z asembleru jazykového programu;
Obr. 7 vývojový diagram ukazující provádění programu sadysložených instrukcí;
Obr. 8 analytické schéma pro texty toku instrukcí s identi-fikovatelnými referenčními body;
Obr. 9 analytické schéma pro texty instrukčního toku s instrukcemi proměnlivé délky bez referenčního bodu,ukazující jejích souběžné sady možných složenýchidentifikačních bitů;
Obr. 1
Obr. 1
Obr. 1
Obr. 1
Obr. 1
Obr. 1
Obr. 1 analytické schéma pro nejhorší případ textu instruk-čního toku se vzájemně smíšenými daty a instrukcemi oproměnlivé délce, bez referenčního bodu, ukazujícíjejich souběžné sady možných složených identifikač-ních bitů; znázorňuje logickou realizaci zařízení se složenýmiinstrukcemi pro zpracování textů instrukčního tokupodle obr.9 a 10; analytické schéma pro nejhorší případ instrukčníhotextu podle obr.10, ukazující sady možných složenýchidentifikačních bitů k vytváření skupin až do čtyřskalárních instrukcí pro tvorbu každé složenéinstrukce; vývojový diagram pro složení toku instrukcí s ozna-čením pro identifikaci mezních referenčních bodůinstrukce; jak různé skupiny platných vzájemně nezablokovanýchpárů instrukcí tvoří vícenásobné složené instrukcepro posloupné nebo větvené cílové provádění;ukazuje,jak různé skupiny platných nezablokovanýchtrojic instrukcí tvoří vícenásobné složené instrukcepro posloupné nebo větvené cílové provádění;rozdělený na obr.lóA a 16B, ukazuje vývojový diagrampro složení toku instrukcí jako na obr.9· - 10 - Přiklad provedeni vynálezu
Podrobný popis spojení v jeden celek podle vynálezu.
Jak ukázáno v různých výkresech dále podrobněji popsaných,nedávná inovace nazvaná "Stroj způsobilý převádět jednotkysložených instrukčních sad" je k dispozici toku skalárníchinstrukcí, které mají být složeny nebo seskupeny dohromady předdobou dekódování instrukce, takže jsou již označeny a identifi-kovány pro současný paralelní výpočet příslušnými instrukčnímizákladními jednotkami. Ježto uvedené skládání nemění cílový kód,mohou stávající programy docílit zlepšení výkonnosti, přičemžje udržena slučitelnost s předchozími realizovanými systémy.
Jak všeobecně ukázáno na obr.1, jednotka 20 pro složeníinstrukce přejímá tok 21 binárních skalárních instrukcí (včetněobsahu dat nebo bez dat) a selektivně tvoří skupiny několikasousedních skalárních instrukcí, aby vytvořila zakódované slo-žené instrukce. Výsledný složený tok 22 instrukcí proto kombi-nuje skalární instrukce nezpůsobilé paralelního výpočtu a skládáinstrukce tvořené skupinami skalárních instrukcí, které jsouzpůsobilé pro paralelní provádění. Je-li skalární instrukce na-bídnuta instrukční základní jednotce 24., je vedena k příslušnéfunkční jednotce pro sériové provedení. Jestliže je složenáinstrukce nabídnuta instrukční základní jednotce 24, každá zjejich skalárních složek je zavedena k příslušné funkční jed-notce nebo sdružovací jednotce pro současné paralelní provedení.Typické funkční jednotky obsahují, ale nejsou omezeny na arit-metickou a logickou jednotku 26,28, jednotku pro aritmetikus pohyblivou čárkou 30 a jednotku pro generování pamětovýchadres 32. Příklad jednotky sdružující závislá data je popsánv souběžné přihlášce ser. No. 07/504,910 o názvu "Technickévybavení přístrojů sdružující závislá data" podané 4.4.1990.
Je třeba si uvědomit, že technika podle vynálezu je roz- šiřována s úmyslem zjednodušit paralelní výdej a provedení instrukcí ve všech architekturách počítačů, které zpracovávají v jednom cyklu vícenásobné instrukce (ačkoliv určité instrukce mohou vyžadovat více než ječen cyklus k provedení).
Jak patrno z obr.2, vynález lze realizovat v provedenísekvenčního procesoru, kde každá funkční provozní jednotkazpracovává skalární instrukci (S) nebo alternativně složenouskalární instrukci (CS). Jak patrno z výkresu, instrukční tok 33obsahující sekvenční skalární a složené skalární instrukce jeopatřen řídícím označením (T) přirazeným každé složené instrukci.Tak první skalární instrukce 34 může být vykonána jedině funk-ční jednotkou A v cyklu 1; trojitě složená instrukce 36 identi-fikovaná označením T3 může mít své tři složené skalární instruk-ce vykonány paralelně funkčními jednotkami A,C a D v cyklu 2;jiná složená instrukce 38 identifikovaná označením T2 může mítsvůj pár složených skalárních instrukcí vykonán paralelně funk-čními jednotkami A a B v cyklu 3i druhá skalární instrukce 40může být vykonána ojediněle funkční jednotkou G v cyklu 4; velkáskupina složených instrukcí 42 může mít své čtyři skalárníinstrukce vykonány paralelně funkčními jednotkami A-D v cyklu 5;a třetí skalární instrukci 44 lze vykonat jednotlivě funkčníjednotkou A v cyklu 6.
Je důležité si uvědomit, že vícenásobné složené instrukcejsou způsobilé pro paralelní zpracování v určitých architektu-rách počítacích systémů. Například vynález lze potenciálně reali-zovat vybaveností multiprocesoru, jak ukazuje obr.3, kde slože-ná instrukce zpracovávaná jako jednotka pro paralelní vyvoláváníje jednou ze základních jednotek. Jak je znázorněno ve výkrese,tentýž instrukční tok 33 by mohl být zpracován jen ve dvou cyk-lech jak následuje. V prvním cyklu centrální základní jednotkaCPU £ 1 provádí první skalární instrukci 34; funkční jednotkyCPU 2 provádějí trojitou složenou instrukci 36; a funkční jed-notky CPU#3 provádějí dvě složené skalární instrukce ve slože-né instrukci 38. Ve druhém cyklu základní jednotka CPU#1 prová-dí druhou skalární instrukci £0; funkční jednotky základní jed-notky CPUÉ2 provádějí čtyři složené skalární instrukce ve slo-žené instrukci 42; a funkční jednotka základní jednotky CPU#3 12 ,«SÍ©t<s·; provádí třetí skalární instrukci 44. Příkladem architektury počítače, který lze adaptovat nazpracování složených instrukcí, je IBM systém /370 architekturyúrovně instrukcí, ve kterém lze vydávat vícenásobné skalárníinstrukce k vykonávání v každém strojovém cyklu. V tomto pojetístrojový cyklus odpovídá všem zřetězeným krokům nebo stupňůmpožadovaným pro vykonání skalární instrukce. Skalární instrukcepracuje s operandy o obsahu jednoznačných parametrů. Když jeskalární tok složen, jsou selektivně seskupeny sousední skalár-ní instrukce za účelem současného nebo paralelního provedení.
Instrukční sady pro různé architektury IBM systemu/370jako system/370, system/370 s rozšířenou architekturou (370-XA),architektura operačních systémů (370-ESA) jsou dobře známy. Z tohoto hlediska doporučujeme zde publikaci "Principy činnostiIBM systemu/370 (zveřejnění GA22-7OOO-1O 1987), a "Principyčinnosti, IBM architektura operačních systemů/370 (zveřejněníSA22-7200-0 1988). Všeobecně zařízení pro skládání instrukce bude vyhledávattřídy instrukcí, které lze vykonávat paralelně a bude zajišto-vat, aby mezi členy instrukce nevznikalo žádné vzájemné bloková-ní, které by nebylo možno zvládnout technickými prostředky.Jsou-li vyhledány slučitelné sledy instrukcí, je složená instruk-ce vytvořena.
Uvažováno přesněji,je možno instrukční sadu systemu/370rozložit do kategorií, které mohou být vykonávány paralelněve speciální architektuře počítačového systému. Instrukce v urči-tých z těchto kategorií lze kombinovat nebo skládat s instruk-cemi těchže kategorií nebo s instrukcemi určitých jiných kate-gorií, aby byla vytvořena složená instrukce. Například částinstrukční sady systemu/370 může být rozdělena do kategorií zná-zorněných na obr.4. Principy této kategorizace spočívají nafunkčních požadavcích instrukcí systemu/370 a použití jeho tech-nických prostředků v typické architektuře počítačového systému.Zbytek instrukcí systemu/370 není specificky uvažován pro sklá- - 13 - dání v tomto příkladovém provedení. To nezabraňuje jejich sklá-dání pomocí techniky předloženého a dále popsaného vynálezu.
Uvažujme například instrukce obsažené v kategorii 1 slože-né s instrukcemi ze stejné kategorie v následujícím sleduinstrukcí: AR R1 , R2 SR R3 , R4
Tento sled je bez údajů náhodných vzájemných blokování a podávánásledující výsledky, které obsahují dvě nezávislé instrukcesystemu/370 : R1 = R1 + R2 R3 = R3 - R4
Provedení takového sledu by vyžadovalo dvě nezávislé a paralel-ní jednotky ALU 2:1, které jsou navrženy pro architekturuinstrukční úrovně. Je tedy třeba pochopit, že tyto dvě instrukcemohou být seskupeny do tvaru složených instrukcí v uspořádánípočítačové soustavy se dvěma takovými aritmetickými a logickýmijednotkami. Uvedený příklad složených skalárních instrukcí lzerozšířit na všechny páry instrukčních sekvencí, které neobsahujíúdaje o závislých vzájemných blokováních a také závislých blo-kováních technických prostředků. V kterémkoliv skutečném instrukčním procesoru existujehorní mez pro počet jednotlivých instrukcí, které mohou obsaho-vat složenou instrukci. Tato horní mez musí být specificky za-členěna do jednotky technických prostředků anebo programovýchprostředků, která vytváří složené instrukce tak, že složenéinstrukce nebudou více obsahovat jednotlivé instrukce (napří-klad párovou skupinu, trojitou skupinu, skupinu čtyřčlennou)než je maximální schopnost založená na výpočtu technickými pro-středky. Tato horní mez je v přísné závislosti na realizacitechnických prostředků ve speciálním uspořádání počítačové sou-stavy. Neomezuje ani celkový počet instrukcí, které mohou býtvzaty v úvahu pro složení, ani délku okénka skupiny v danémkódovém sledu, který možno analyzovat pro složení. Všeobecně,čím větší je délka okénka analyzované skupiny pro skládání ,tímvětší je paralelita, kterou je možno docílit vzhledem k většímu 14 počtu výhodných kombinací.
Se zřetelem na obr.5 existuje mnoho možných míst v systémupočítače, kde se může vyskytovat sdružování jak v programovémvybavení tak v technických prostředcích. Každé má jedinečnévýhody a nevýhody. Jak znázorněno na obr.5 existují různé stup-ně, kterými program typicky prochází od prvotního kódu ke sku-tečnému výpočtu. V kompilační fázi je prvotní program přeložendo strojového kódu a uložen na disk 46. Ve výpočtové fázi jeprogram přečten z disku 46 a uložen do hlavní paměti 48 vezvláštní konfiguraci 50 počítačového systému, kde jsou instrukcevykonávány příslušnými instrukčními základními jednotkami 52, 54, 56 ♦ Skládání může nastat v kterémkoliv místě popsané cesty.Všeobecně, je-li skládač umístěn blížeji instrukční základníjednotce nebo centrální základní jednotce, tím více se stává vy-nucená doba naléhavější. Jestliže je skladač umístěn dále odcentrální základní jednotky, může být zkoušeno více instrukcí vrozměrném okénku instrukčního toku za účelem určení nejlepšíhoseskupení pro skládání při zlepšené provozní účinnosti. Takovébrzké skládání však směřuje k většímu počtu dopadů na konstruk-ci zbytku systému v závislosti od dodatečného vývoje a poža-davků na náklady. Vývojový diagram na obr.6 ukazuje generování programu sadysložených instrukcí od asembleru jazykového programu v závis-losti na sadě přizpůsobené pravidlům 58 pro skladbu, kteráovlivňují jak architekturu systému tak technického vybavení.Program v jazyce asembler zásobuje vstup do zařízení 59 proskládání programového vybavení, které vytváří program složenýchinstrukcí. Následné bloky instrukcí o předem určené délce jsouanalyzovány zařízením 59 pro skládání programového vybavení.Délka každého bloku 60, 62, 64 ve slabikovém toku, který obsahu-je skupinu instrukcí braných v úvahu pro skládání je závislá nasložitosti zařízení pro skládání.
Jak znázorněno na.obr.6, toto zvláštní zařízení pro sklá- dání je navrženo pro dvoucestné skládání "m" čísel instrukcí 15 s pevně stanovenou délkou v každém bloku. Primární první krokpřichází v úvahu, jestliže první a druhá instrukce tvoří složi-telný pár, a potom jestli druhá a třetí tvoří složitelný pár,a potom jestli třetí a čtvrtá tvoří složitelný pár v celé cestědo konce bloku. Jak jednou byly identifikovány různé možné slo-žitelné páry C1-C5, zařízení pro skladbu může vybrat preferovanýsled složených instrukcí a použít označení nebo identifikačníchbitů pro identifikaci optimálního sledu složených instrukcí.
Neexistuje-li optimální sled, lze identifikovat všechnyze složitelných sousedních skalárních instrukcí tak, že větevk cíli umístěnému mezi různými složenými instrukcemi může použítkterýkoliv ze složených párů se kterými se potká (viz obr.14).Kde jsou k dispozici vícenásobné složené jednotky, mohly by sesoučasně složit vícenásobné následující bloky v instrukčnímtoku.
Pro předběžné zpracování instrukčního toku je ovšem výhod-nější za účelem vytvoření složených instrukcí, jestliže existu-jí již známé referenční body, označit ,kde instrukce začínají.
Jak známo, referenčním bodem je míněno rozpoznání, kterou slabi-kou textu je první slabika v instrukci. Toto poznání lze získatz některého označeného pole nebo jiné indikace, která podáváinformace o umístění instrukčních mezí. V mnohých počítačovýchsystémech takový referenční bod je jasně znám jen u kompilátoruv kompilační době a pouze u centrální základní jednotky přivyvolávání instrukcí. Takový referenční bod 'není znám mezi kom-pilační dobou a vyvoláním instrukce pokud není přijato speciálníoznačovací schéma. Vývojový diagram na obr.7 ukazuje provádění programu sou-boru složených instrukcí, který byl generován technickými pro-středky preprocesoru 66 nebo programově vybaveného proproceso-ru 67. Slabikový tok se složenými instrukcemi vchází do rychlévyrovnávací paměti 68 pro složené instrukce, jež slouží jakovyrovnávací pamět obstarávající rychlý přístup ke složenýminstrukcím. Vydaná složená instrukce logikou 69 vyvolá složené 16 instrukce z rychlé vyrovnávací paměti a vypustí své jednotlivésložené instrukce do příslušných funkčních jednotek k paralelní-mu výpočtu.
Je třeba zdůraznit, že jednotky 71 výpočtu složených instruk-cí, jakož i aritmetické a logické jednotky v počítačovém systémusložených instrukcí jsou způsobilé k výpočtu buá skalárníchinstrukcí jedna po druhé nebo alternativně skalární instrukceparalelně s ostatními složenými skalárními instrukcemi. Takovýparalelní výpočet lze provádět v různých typech početních jed-notek jako jsou aritmetické a logické jednotky, jednotky 73pro aritmetiku s pohyblivou řádovou čárkou, jednotky 7$ progenerování adres paměti nebo ve více funkčních jednotkách téhožtypu v závislosti na architektuře počítače a specifického uspořá-dání systému počítače.
Po skončeném složení po kompilační době může kompilátoroznačením poukázat, které slabiky obsahují první slabiku instruk-ce a které obsahují data. Výsledkem této zvláštní informace jezvýšení účinnosti složení, protože jsou známa přesná umístěníinstrukcí. Kompilátor může ovšem mezi instrukcemi a daty rozli-šovat jinak za účelem opatření specifické informace pro zařízeníke složení prostřednictvím indikace instrukčních mezí. V příkladném dvoucestném složení,uskutečněném podle tetopřihlášky informace o složení,je přidána k toku instrukcí jakojeden bit pro každé dvě slabiky textu (instrukce a data). Označe-ní obsahující řídící informaci lze obecně přidat ke každé instrukciv toku složených slabik, to je ke každé nesložene skalárníinstrukci právě tak jako ke každé složené skalární instrukciobsažené v páru, trojici nebo větší složené skupině. Identifikačníslabiky zde použité se týkají té části označení, která se použí-vá pro identifikaci a rozlišení těch složených skalárních instruk-cí tvarujících složenou skupinu od zbývajících nesložených ska-lárních instrukcí. Takové nesložené skalární instrukce zůstanouve složeném instrukčním programu a při vyvolání jsou jednotlivěvykonány. 17 - V systému se všemi 4-slabikovými instrukcemi zarovnanýmina adresní mez Čtyř slabik je každému čtyřslabičnému textu při-razeno jedno označení. Podobně, je-li možno instrukce libovolnězarovnat, je pro každou slabiku textu zapotřebí jedno označení. Případ složení nejvýše dvou instrukcí představuje nejmenšíseskupení skalárních instrukcí pro utvoření složené instrukcea používá následující preferenční kódovací postup pro identifi-kační bity. Protože všechny instrukce systemu/370 jsou zarovná-ny na mez půl slova (dvě slabiky) o délkách bučí dvou, čtyř nebošesti slabik, je zapotřebí pro každé poloviční slovo jedno označení s identifikačními bity. V příkladu tohoto malého seskupeníidentifikační bit "1” naznačuje, že instrukce začínající uvažo-vanou slabikou je složena s následující instrukcí, zatím co”0” naznačuje, že instrukce začínající uvažovanou slabikou nenísložená. Identifikační bit sdružený s půlslovy je zamítnut,že neobsahuje první slabiku instrukce. Identifikační bit proprvní slabiku v druhé instrukci je také zamítnut. Výsledkem to-hoto způsobu zakódování identifikačních bitů v nejjednoduššímpřípadě znamená, že je zapotřebí pouze jeden bit informace procentrální základní jednotku pro identifikaci složené instrukcev průběhu provádění.
Kde mohou být seskupeny dohromady více než dvě skalárníinstrukce k vytvoření složené instrukce může být vyžadován dodátečný identifikační bit. Minimální počet bitů pro indikaci spe-cifického počtu skalárních instrukcí skutečně složených je logaritmus při základu 2 (zaokrouhlený na nejbližší celé číslo)maximálního počtu instrukcí, které lze seskupit pro vytvořenísložené instrukce. Je-li například maximum dvě, potom je zapo-třebí pro každou složenou instrukci jeden identifikační bit.Je-li maximum tři nebo čtyři, potom jsou zapotřebí pro každousloženou instrukci dva bity. Je-li maximum pět, šest, sedm neboosm, potom jsou zapotřebí tři identifikační bity pro každou složenou instrukci. Toto kódovací schéma je ukázáno v tabulce 1 : 18 TABULKA 1
Identifikační Celkem
Bity Zakódováni znamená Složeni
Tato instrukce není složena00 s následující instrukcí žádné
Tato instrukce je složena 01 s jednou následující instrukcí dvě
Tato instrukce je složena se dvěmi 10 následujícími instrukcemi tři
Tato instrukce je složena se třemi 1 1 následujícími instrukcemi čtyři
Rozumí se proto, že každé půlslovo potřebuje označení, alecentrální základní jednotka všechny zamítne až na jedno proprvní instrukci, která je vybrána z instrukčního toku. Jinýmislovy, slabika je přezkoušena kontrolou jejích identifikačníchbitů za účelem určení, zda je složenou instrukcí, Není-li tozačátek složené instrukce, její identifikační bity jsou nula.Je-li slabika začátkem složené instrukce, identifikační bityjsou "1" pro první instrukci a "0" pro druhou instrukci. Je-lislabika začátkem složené instrukce obsahující tři skalárníinstrukce, identifikační bity jsou ”2" pro první instrukci a"l" pro druhou instrukci a "0" pro třetí instrukci. Jinými slo-vy, identifikační bity označují pro každé půlslovo, zda je nebonení tato zvláštní slabika začátkem složené instrukce, zatím cov téže době oznamují počet instrukcí, které tvoří skládanouskupinu.
Tato metoda zakódování složených instrukcí předpokládá,že jsou-li složeny tři instrukce pro vytvoření trojskupiny, jetaké složena druhá a třetí instrukce pro vytvoření párové sku-piny. Jinak řečeno, nastane-li ve trojité skupině větvení k druhé instrukci, identifikační bit "I” pro druhou instrukci označí 19 - že druhá a třetí instrukce budou provedeny jako složený párparalelně i kdyby první instrukce v trojité skupině nebyla vy-konána.
Pro specialisty v tomto oboru je zřejmé, že předložený vy-nález vyžaduje, aby tok instrukcí byl složen pouze jednou prozvláštní uspořádání počítačového systému, načež jakékoliv vyvo-lání složených instrukcí způsobí také vyvolání identifikačníchbitů, ktere jsou jim přiřazeny. Tím je vyloučena potřeba neúčin-ného určování poslední minuty a výběru určitých skalárníchinstrukcí pro paralelní provádění, které se opakovaně objevujepokaždé, jakmile jsou vyvolány stejné nebo různé instrukce k pro-vádění v tak zvaném superskalárním stroji.
Vzdor všem výhodám skládání toku binárních instrukcí přiurčitých architekturách počítače, stává se tento postup obtížný,pokud je vyvinuta technika pro určování mezí instrukcí v řetězcislabik. Takové určování se stává složitým, když jsou dovolenyinstrukce proměnlivé délky a ještě více komplikovaným, když dataa instrukce lze smíchat. Meze instrukcí ovšem musí být známy vdobě provádění za účelem dosažení přesného provádění. Jakmile jeale složení přednostně provedeno, je třeba dostatečného časupřed vykonáním instrukce, techniky pro složení instrukcí, anižby bylo známo kde instrukce začínají a aniž by bylo známo, kteréslabiky jsou data. Tuto techniku je třeba aplikovat na všechnypřijaté druhy architektur včetně architektur počítačů s krácený-mi sadami instrukcí, ve kterých instrukce mají konstantní dél-ku a nejsou smíchány s daty.
Podle předloženého vynálezu existuje více obměn technikyzávisících na informaci, která je právě k dispozici o zvláštnímtoku instrukcí, jež jsou skládány. Různé kombinace typicky při-měřené informace jsou ukázány v tabulce 2 : 20 TABULKA 2 - Informace o řetězci slabik Případ Délka instrukce Data smíšená Referenční bod A pevná ne ano B proměnlivé ne ano C pevná nebo proměnlivá ano ano D pevná ne ne E proměnlivé ne ne F pevná ano ne G proměnlivá ano ne
Je třeba poznamenat, že v některých případech pevné a pro-měnlivé délky jsou instrukce identifikovány jako odlišné případy.Je to tak, protože existence instrukcí proměnlivých délek vytvá-ří větší nejistotu, kde není znám referenční bod, což má zanásledek vytvoření většího počtu potenciálních složených bitů.Jinými slovy, když jsou generovány posloupnosti potenciálníchinstrukcí za použití techniky podle vynálezu, neexistují složenáidentifikační označení pro slabiky uprostřed jakékoliv pevnédélky instrukcí. Celkový počet identifikačních označení, tedypožadovaný podle preferovaného kódovacího schéma, je malý (t.j.jedno identifikační označení pro každé čtyři slabiky pro instruk-ce s pevnou délkou čtyř slabik). Jedinečné technika podle vyná-lezu se nicméně osvědčuje rovněž dobře při instrukcích buč pevnenebo proměnlivé délky, protože je-li znám počátek instrukce, jevždy možno najít nějakým způsobem délku někde v instrukcích. V instrukcích systemu/370 je délka zakódována v operačním kódu,zatím co v ostatních systémech je délka zakódována v operandech. V případě A s pevnou délkou instrukcí bez smíšených dat a seznámým referenčním bodem pro umístění operandu, může skládánípostupovat podle aplikovatelných pravidel pro toto zvláštní uspo-řádání počítače. Je-li délka pevná, posloupnost skalárních 21 instrukcí je běžně určována a každá instrukce v posloupnostimůže být považována za možného kandidáta paralelního prováděnís následující instrukcí. První zakódované hodnota v řídícímoznačení znamená, že instrukce není složitelná s následujícíinstrukcí, zatím co druhá zakódovaná hodnota v řídícím označe-ní znamená, že instrukce je složitelná pro paralelní prováděnís následující instrukcí.
Podobně v případě B s proměnlivou délkou instrukcí bezsmíchaných dat a se známým referenčním bodem pro instrukce(a proto také pro kód délky instrukce) může skládání postupovatběžným způsobem. Jak ukázáno na obr.8, operandy označují posloup-nost 70 instrukcí jak následuje : první instrukce je dlouhá6 slabik, druhá a třetí je dlouhá 2 slabiky, čtvrtá je dlouhá 4slabiky, pátá je dlouhá 2 slabiky, šestá je dlouhá 6 slabik asedmá a osmá je dlouhá každá po 2 slabikách.
Za účelem znázornění je použitá technika skládání ukázánapro tvoření složených instrukcí ze sousedních párů skalárníchinstrukcí (obr.8-9) právě tak jako pro tvoření složených instruk-cí tvarovaných do větších skupin skalárních instrukcí (obr.12).Příkladná pravidla pro spojení v jeden celek ukázaná na výkresechjsou dodatečně definována tak, aby poskytla všem instrukcímo délce 2 slabik nebo 3 slabik možnost složení s každou další(t.j. dvouslabičná instrukce je způsobilá paralelního složenív. tomto zvláštním uspořádání počítače s jinou dvouslabičnou nebojinou čtyřslabičnou instrukcí). Pravidla dále přikazují, že všechnyinstrukce o délce 6 slabik nejsou vůbec složitelné (t.j. šesti-slabičná instrukce je způsobilá pouze pro jediné provádění samao sobě v tomto zvláštním uspořádání počítače). Vynález není ome-zen samozřejmě na tato příkladná pravidla pro skládání, ale jepoužitelný pro jakoukoliv soustavu pravidel pro skládání, kterádefinují kriteria pro paralelní provádění stávajících instrukcíve specifickém uspořádání pro danou architekturu počítače.
Soubor pravidel použitý pro techniky příkladného skládání podle vynálezu je odvozen z architektury Systemu/370. 22
Zkoušením operačního kódu pro každou instrukci lze určit typa délku každé instrukce a potom je generováno řídící označeníobsahující identifikační bity pro uvedenou specifickou instrukcijak je dále podrobněji popsáno. Předložený vynález není ovšemomezen na žádnou specifickou architekturu nebo soubor instrukcía shora uvedená pravidla pro skládání jsou jen příležitostnýmpříkladem.
Preferované zakódování složených instrukcí v těchto znázor-něných spojeních v jeden celek je dále popsán. Je-li možno dvěsousední instrukce složit, jejich identifikační bity generovanépro uložení do paměti jsou "1" pro první složenou instrukci a"0" pro druhou složenou instrukci. Jestliže první a druhá instruk-ce však nemůže být složena, identifikační bit pro první instruk-ci je "O” a potom pro složení je uvažována druhá a třetí instruk-ce. Jakmile byl jednou tok instrukčních slabik předběžně zpraco-ván podle této techniky a identifikační bity zakódovány pro růz-né skalární instrukce, lze docílit optimálnější výsledky pro do-sažení paralelního provádění použitím rozměrnějšího okénka provyhledávání větších skupin a potom vybíráním nejlepší kombinacesousedních párů pro složení. C-vektor 72 na obr.8 ukazuje hodnoty identifikačních bitů(zvané skládací bity na výkresech) pro tuto zvláštní posloupnost70 instrukcí, kde je znám referenční bod oznamující začátekprvní instrukce. Na základě hodnot těchto identifikačních bitůvytvoří druhá a třetí instrukce složený pár jak označeno iden-tifikačním bitem "1" pro druhou instrukci. Čtvrtá a páté instruk-ce tvoří další složený pár jak označeno identifikačním bitem "1"pro čtvrtou instrukci. Sedmá a osmá instrukce rovněž tvoří slože-ný pár jak označeno identifikačním bitem "1" pro sedmou instrukci. C-vektor 72 na obr.8 je také poměrně snadno generován vpřípadě B, když neexistují slabiky dat slučitelné se slabikamiinstrukcí a kde instrukce jsou všechny stejné délky se známýmimezemi.
Poněkud složitější situace se vyskytuje v případě C, kde - 23 - instrukce jsou smíšeny s ne-instrukcemi, s referenčním bodemstále existujícím pro označení začátku instrukce. Základní dia-gram na obr.13 ukazuje jeden způsob indikace referenčního boduinstrukce, kde každé půlslovo bylo označeno návěstí, označujícízda obsahuje nebo neobsahuje první slabiku instrukce. To se můžvyskytnout jak u pevné délky, tak u proměnlivé délky instrukce.Zavedením referenčního bodu není třeba hodnotit datovou částslabikového toku pro možné složení. Skládající jednotka podletoho může přeskočit a vynechat všechny ne-instrukční slabiky. Případ D nepředstavuje obtížný problém s instrukcemi pevnédélky bez smíšených dat, jelikož instrukce a data jsou typickyzarovnány do předem určených slabikových mezí. Takže tabulkaukazuje, že referenční bod není znám a ve skutečnosti je běžněstanoven na základě požadavků pro zarovnání. Případ E je mnohem složitější situace, kde slabikový tokobsahuje instrukce o proměnlivé délce (bez dat), avšak není známo, kde začíná první instrukce. Protože maximální délka instrukce je šest slabik a protože instrukce jsou zarovnány do dvou-slabičných mezí, existují tři možné počáteční body pro prvníinstrukci toku. Vynález podle toho poskytuje možnost brát v úvahu všechny možné počáteční body pro první instrukci v textuslabikového toku 79 jak patrno z obr.9.
Posloupnpst 1 předpokládá, že první instrukce zahajujeprvní slabikou a postupuje se skládáním za tohoto předpokladu.Hodnota v délce pole pro první slabiku je 6 oznamující, že nej-bližší instrukce začíná sedmou slabikou; hodnota délky pole prosedmou slabiku je 2 označující, že příští instrukce začíná devátou slabikou; hodnota délky pole pro devátou slabiku je 2 ozna-čující, že příští instrukce začíná jedenáctou slabikou; hodnotadélky pole pro jedenáctou slabiku je 4 označující, že příštíinstrukce začíná patnáctou slabikou; hodnota délky pole propatnáctou slabiku je 2 označující, že příští instrukce začínásedmnáctou slabikou; hodnota délky pole pro sedmnáctou slabikuje 6 označující, že příští instrukce začíná dvacátoutřetí sla- 24 bikou; hodnota délky pole pro dvacétoutřetí je 2 označující,že příští instrukce začíná dvacátoupótou slabikou; hodnota délkypole pro dvacétoupátou slabiku je 2 označující, že příštíinstrukce začíná (neznázornšno) dvacétousedmou slabikou. V tomto příkladovém spojení v jeden celek délka pole jetaké určující hodnotou vektoru C pro každou možnou instrukci.Proto C-vektor 74 pro posloupnost 1 má hodnotu "1" jen pro prvníinstrukci možného složeného páru vytvořeného kombinacemi dvou-slabičných a čtyřslabičných instrukcí.
Posloupnost 2 předpokládá, že první instrukce začíná třetíslabikou (počátek druhého půlslova) a pokračuje na základě toho-to předpokladu. Hodnota v délce pole pro třetí slabiku je 2 označující, že příští instrukce začíná pátou slabikou. Postupovánímskrz každou možnou instrukci, která je založena na hodnotě délkypole předcházející instrukce, celý potenciál instrukcí posloup-nosti 2 je generován podél možných identifikačních bitů, jakukazuje C-vektor 76.
Posloupnost 3 předpokládá, že první instrukce začíná pátouslabikou (počátek třetího půlslova) a pokračuje jak předesláno.Hodnota v délce pole pro pátou slabiku je 4 znamenající, žepříští instrukce začíná devátou slabikou. Pokračováním skrz kaž-dou možnou instrukci, která je založena na hodnotě délky polepředchozí instrukce, celý potenciál instrukcí posloupnosti 3 jegenerován podél možných identifikačních bitů, jak ukazujeC-vektor 78. V některých případech uvedené tři posloupnosti potenciál-ních instrukcí se sbíhají do jediné posloupnosti. Rychlost sbí-havosti závisí na specifických bitech, ktere jsou vyhrazeny v potenciálním poli operand pro délku instrukce. V některých slabikových tocích instrukcí neexistuje žádná sbíhavost během slo-žení zvláštního okénka ( například posloupnost instrukcí, ve které všechny délky mají hodnotu Čtyř slabik). V jiných případechsbíhavost do stejných mezí instrukce mohla by nastat při sklá-dání posloupnosti dvou různých posloupností mimo fázi. Sbíhavost 25 - mimo fázi je však vždy korigována příští nesložitelnou instrukcí,ne-li dříve.
Na obr.9 je věnována pozornost uvedeným třem posloupnostem,které se sbíhají do mezí instrukce na konci 80 osmé slabiky.
Také je poznamenáno, že začínají-li další posloupnosti na koncišesté, osmé a desáté slabiky, sbíhají se také rychle. Posloup-nosti 2 a 3 při sbíhání do mezí instrukce na konci 82 čtvrté sla-biky jsou mimo fázi při skládání až do konce šestnácté slabiky.Jinými slovy tyto dvě posloupnosti berou v úvahu různé páryinstrukcí založené na stejné posloupnosti instrukcí. Protože sedmnáctá slabika začíná nesložitelnou instrukci v 84 je mimo fázovásbíhavost ukončena. V situaci, kde každé přezkoumávané okénkoinstrukcí obsahuje více než dvě instrukce, mohou různé posloup-nosti konvergovat dříve, protože stejné optimální párování můžebýt vybíráno dvěma zařízeními pro složení instrukcí.
Nevznikne-li platná sbíhavost je třeba, aby všechny třimožné posloupnosti instrukcí pokračovaly do konce okénka. Kdevšak dojde k platné sbíhavosti a je zjištěna, sdruží se početposloupností ze tří do dvou (jedna z identických posloupností sestane nezpůsobilá provozu) a v některých případech ze dvou dojedné. Kde je třeba počítat s větším počtem posloupností instruk-cí vzhledem k neznámým instrukčním mezím, bude rychlost skládánímenší než při skládání na obr.8 s činitelem,který se rovná poč-tu aktivních posloupností (za předpokladu jediné jednotky způso-bilé pro skládání). Je-li sbíhavost rychlá, bude rychlost přík-ladného skládání uvedená na obr.8 a 9 vlastně ekvivalentní. Před sbíhavostí jsou tedy určeny pokusné meze instrukce prokaždou možnou instrukční posloupnost a přiděleny identifikačníbity pro každou takovou instrukci označující umístění potenciál-ních složených instrukcí. Z obr.9 je zřejmé, že tato technikageneruje tři samostatné identifikační bity pro každé dvě slabikytextu. Za účelem vytvoření shody s předběžným zpracováním v pří-padech "A-D, je žádoucí zredukování tří možných posloupností dojediné posloupnosti s identifikačními bity, kde je přidělen pou- 26 ze jeden bit každému půlslovu. Protože je zapotřebí jen jedináinformace zda je běžná instrukce složena s následující instrukcí,mohou být tři bity logicky čteny jako "0" k vytvoření jediné po-sloupnosti v CC-vektoru 86, Různé postupy v metodě skládání ukázané na obr.9,jak shorapopsáno,jsou znázorněny ve vývojovém diagramu na obr.16.
Pro účely paralelního provádění jsou sdružené identifikačníbity sdruženého CC-vektoru ekvivalentní samostatným C-vektorůmjednotlivých tří posloupností 1 - 3. Je možno to ukázat s odvolá-ním na CC-vektor na obr.9. Postupuje-li se po posloupnosti 1 a jebrána v úvahu první slabika pro provádění buá z důvodu běžnéhosekvenčního zpracování nebo větvení, je vyvolána instrukce podlejejích sdružených identifikačních bitů. Je-li identifikační bit”0”, je první instrukce provedena sériově jako jediná instrukce.Identifikační bity sdružené se třetí a pátou slabikou jsou igno-rovány. Další instrukce v posloupnosti 1 začíná sedmou slabikou,takže taková instrukce je vyvolána centrální základní jednotkouprostřednictvím jejího identifikačního bitu, který je "I". Proto-že je tím označeno začínání složené instrukce, je příští instruk-ce také vyvolána (její identifikační bit "1" v CC-vektoru 86 jezanedbán, takže její identifikační bit v C-vektoru 74 je odlišnýa bezvýznamný) pro paralelní provádění s instrukcí, která začínásedmou slabikou. CC-vektor pracuje tak uspokojivě pro posloupnost1,dokáže-li se, že je to skutečná posloupnost instrukce. Při postupování podél posloupnosti 2 a je-li třetí slabikabrána v úvahu pro provádění buá z důvodu běžného sekvenčníhozpracování nebo větvení, je vyvolána instrukce podle jejích sdru-žených identifikačních bitů. Protože identifikační bit je "1"a označuje začátek složené instrukce, je vyvolána také dalšíinstrukce (její identifikační bit "1" v CC-vektoru 86 je zaned-bán a skutečnost, že její identifikační bit v C-vektoru 76 jeodlišný, je bezvýznamná) pro paralelní provádění s instrukcí, kte-rá začíná třetí slabikou. CC-vektor pracuje tedy uspokojivě proposloupnost 2, prokáže-li se, že je to skutečné instrukční posloup-nost. 27 -
Postupujeme-li po posloupnosti 3 a bereme-li v úvahu proprovádění třetí slabiku bud z důvodů běžného sekvenčního zpraco-vání nebo větvení, je vyvolána instrukce podle jejích sdruže-ných identifikačních bitů. Protože identifikační bit je "I" aoznačuje začátek složené instrukce, je vyvolána také další instrukce (její identifikační bit v CC-vektoru 86 je ignorován a sku-tečnost, že její identifikační bit v C-vektoru 78 je odlišný bezvýznamu) pro paralelní provádění s instrukcí, která začíná pátouslabikou. CC-vektor se osvědčuje tedy uspokojivě pro posloup-nost 3, je-li prokázáno, že je to skutečně instrukční posloup-nost.
Sdružené identifikační bity v CC-vektoru umožňují tak které-koliv ze tří možných posloupností čistě paralelní provádění prosložené instrukce nebo jednotlivé pro nesložené instrukce.
Sdružené identifikační bity se také osvědčují náležitě pro vět-vení. Například, vyskytne-li se větev na začátku 88 deváté sla-biky, musí potom začínat instrukce devátou slabikou. Identifi-kační bit "Τ’ sdružený s devátou slabikou je použit ke korekciparalelního provádění s další po ní následující instrukcí.
Prospěšná výhoda poskytovaná sdruženými identifikačními bi-ty v CC-vektoru je tvoření vícenásobných platných posloupnostísložených bitů vycházející z toho, která instrukce je adresová-na cílem větvení. Různě složené instrukce je možno tvarovat zestejného slabikového toku jak nejlépe ukazují obr.14-15.
Obr.14 ukazuje možné kombinace složených instrukcí, kdyžkonfigurace počítače zajištuje vycházení a provádění ne vícenež dvou instrukcí. Kde je instrukční tok 90 obsahující složenéinstrukce zpracován do jedné normální posloupnosti, tam bude vy-dána složená instrukce pro paralelní provádění, spočívající nadekódování identifikačního bitu pro první slabiku v CC-vektoru 92.Vyskytne-li se však větev k páté slabice, bude vydána složenáinstrukce II pro paralelní provádění spočívající na dekódováníidentifikačního bitu pro pátou slabiku.
Podobně normální sekvenční zpracování jiného složeného 28 slabikového toku 94 mé za následek sekvenčně prováděné složenéinstrukce IV, VI a VIII (instrukce složek v každé složené instruk-ci jsou přitom prováděny paralelně). Větvení ve třetí slabicesloženého slabikového toku má za následek sekvenční prováděnísložených instrukcí V a VII a instrukce začínající patnáctouslabikou (tvoří druhou část složené instrukce VIII) bude vydánaa provedena jednotlivě, přičemž vše spočívá na identifikačníchbitech v CC-vektoru 96. Větvení v sedmé slabice má za následek sekvenční prováděníve složených instrukcích VI a VIII a větvení v jedenácté slabicemá za následek sekvenční větvení ve složené instrukci VIII. Větvení v deváté slabice naopak má za následek sekvenční prová-dění ve složené instrukci VII (je tvarována druhou částí složenéinstrukce VI a první částí složené instrukce VIII).
Tak jsou zanedbány identifikační bity "1" v CC-vektoru 96pro složené instrukce IV, VI a VIII, když je prováděna některáze složených instrukcí V nebo VII. Alternativně jsou zanedbává-ny identifikační bity "1" v CC-vektoru 96 pro složené instrukceV a VII, když je prováděna kterákoliv ze složených instrukcíIV, VI nebo VIII.
Na obr.15 jsou znázorněny možné kombinace složených instruk-cí, když uspořádání počítače poskytuje paralelní vydávání a pro-vádění až do tří instrukcí. Kde instrukční tok 98 obsahujícísložené instrukce je zpracováván do normální posloupnosti, budouprovedeny složené instrukce X (trojitá skupina) a XIII (pérováskupina). Větvení v jedenácté slabice naopak má za následek pro-vedení složené instrukce XI (trojitá skupina) a větvení ve třináctéslabice má za následek provedení složené instrukce XII (odlišnátrojitá skupina).
Bity "2" identifikátoru v CC-vektoru 99 pro složené instruk-ce XI a XII jsou zanedbány,, když jsou provedeny složené instruk-ce X a XIII. Na druhé straně, když je provedena složená instruk-ce XI, jsou zanedbány bity identifikátoru pro ostatní tři slože-né instrukce X, XII, XIII. Podobně, když je provedena složená 29 - instrukce XII, jsou zanedbány bity identifikátoru pro ostatnítři složené instrukce X, XI, XIII. Případ G je nejsložitějším případem, který pojednává oinstrukčním toku s daty vzájemně smíšenými s instrukcemi o pro-měnlivé délce, bez jakéhokoliv známého referenčního bodu na za-čátku jakékoliv instrukce. Může k tomu dojít při ukládání strá-nek do paměti nebo rychlé vyrovnávací paměti, když referenčníbod není znám. První spojení v jeden celek (neznázorněno) pojed-návající o případu G je identické s tím, které bylo použito vpřípadě E, ale existuje dodatečná odlišnost vzhledem ke skuteč-nosti, že data jsou vzájemně smíšena s instrukcemi. Jestližedojde ke konvergenci, musí vždy začít nová posloupnost namístokaždé posloupnosti eliminované konvergencí. Je tomu proto, žekonvergence by mohla vzniknout ve slabice obsahující data;následkem toho všechny tri složené posloupnosti by mohly konver-govat do rušivé posloupnosti instrukcí, které ve skutečnostinejsou vůbec instrukcemi. To by mohlo být eventuálně korigováno,když posloupnost skutečných instrukcí se setká s jednou z po-sloupností. Mezitím by nemohly být zjištěny, ale některé slo-žitelné instrukce. Výsledný tok složených instrukcí by se ještězpracoval přesně, ale pro paralelní provádění by bylo označenomálo složených instrukčních párů a proto výkonnost centrálnízákladní jednotky by se snížila.
Preferovaná technika pojednávající o případu G je znázorně-na na obr.10 pro tentýž slabikový tok 79 jako na obr.9. Nováposloupnost možných instrukcí začíná v každém půlslovu bez ohle-du na část délky instrukce pole potenciálního operačního kódu.Jako v jiných případech jsou zkoušeny dvě sousední potenciálníinstrukce a jsou určeny příslušné bity identifikátoru v různýchC-vektorech 100. To se opakuje později při začátku dvou slabik(jednoho půlslova). Jako v případě E různé hodnoty C-vektoru prototéž půlslovo jsou operačně zkoumány společně (viz obr.11) zaúčelem vytvoření sdružených identifikačních bitů souběžného sdruženého CC-vektoru 102. Je třeba poznamenat, že v tomto zvláštním 30 - spojení v jeden celek, kde skladač identifikuje složenou instruk-ci napsáním "1" pouze pro první slabiku a kde na obr.10 každápotenciální posloupnost je dlouhá jen dvě instrukce, je na výs-tupu jediný bit vyplývající ze zkoušek každé posloupnosti použí-vající kódovací schéma pro dvoucestné složení. Následkem tohok vytvoření CC-vektoru 102 v tomto případě jsou všechny prvníidentifikační bity zřetězeny v každé posloupnosti, čímž je vy-tvořen stejný CC-vektor, který by v obecném případě byl výsled-kem operačního zkoumání různých hodnot C-vektoru.
Je-li slabika vybrána k provádění, musí to být skutečněinstrukce, je-li program správný, přičemž identifikační bit pří-slušného CC-vektoru sdružený se slabikou je zkoušen za účelemzjištění, zda slabika je začátkem složené instrukce. Označenísdružená s daty jsou vždy neplatná po dobu provádění skutečnýchinstrukcí jak skalárních instrukcí prováděných jednotlivě taksložených instrukcí prováděných paralelně.
Je-li instrukce větvení složena s daty, musí větvení býtpřejmuto (za předpokladu bezvadného programu) a druhá instrukcev páru, která měla být provedena paralelně je zrušena, jestliževětvení nebylo přejmuto. Tato schopnost musí existovat již vprováděcí jednotce, mé-li větvení se provést souběžně s následující instrukcí zřetězeným postupem. Důležité je poznamenat, že sdružené složené posloupnostiv CC-vektorech 88, 102 na obr.9-a 10 nejsou stejné i když textje identický. Jelikož podle obr.9 je známo, že text neobsahujedata vzájemně smíšená s instrukcemi, dochází ke sbíhavosti veznámém referenčním bodě. Zvláštní hodnoty "1" v CC-vektoru 102se vyskytnou potom,co je znám referenční bod na obr.9 a tytozvláštní "1" neodpovídají půlslovům, kterými začínají instrukce,protože se evidují pro možná data v existujícím textu. Jestliževšak text obsahuje pouze instrukce, jak je předpokládáno v tech-nice případu E znázorněném na obr.9, různé sdružené posloupnostive dvou CC-vektorech 88, 102 budou nicméně výsledkem provedeníidentického programu v závislosti na výhodách vynálezu. 31 Případ F obsahující instrukce o pevné délce vzájemně smíše-ná s daty a bez referenčního bodu instrukce je zjednodušenouversí případu G. Jsou-li instrukce v délce dvou slabik zarovnánydo mezí půlslov, potom potenciální instrukční posloupnosti jsouzahájeny každým půlslovem a není třeba používat délku instrukceke generování potenciálních posloupností.
Nejnepříznivější případ techniky na obr. 10 se týká případuG, kde je zkoušen větší počet možných instrukčních posloupností,než u techniky případů A-F. Může to vyžadovat více času anebovíce jednotek pro složení k vytvoření potřebných identifikačníchbitů v označeních závislých na realizaci.
Existuje mnoho možných konstrukcí jednotky pro složeníinstrukce závisející na jejím umístění a znalosti textových obsahů. V nejjednodušší situaci by bylo žádoucí, aby kompilátor uka-zoval pomocí označení, které slabiky obsahují první slabikuinstrukce a ktere obsahují data. Tato zvláštní informace má zanásledek mnohem účinější jednotku pro složení, nebot jsou známapřesná umístění instrukce (viz obr.13). Znamená to, že složenílze vždy provádět jako v situacích případu C za účelem generová-ni C-vektoru identifikačních bitů pro každou složenou instrukci(viz obr.8). Kompilátor mohl by tak přidat jinou informaci jakopředpověá statického větvení nebo dokonce vložit směrnice dojednotky pro složení.
Pro rozlišení dat od instrukcí lze použít jiných postupů,kde instrukční tok má být složen a uložen do paměti. Napříkladjsou-li části dat řídké, vyžadoval by jednoduchý seznam adresobsahující data méně místa než označení. Takové kombinace tech-nických a programových prostředků pro složení skýtají mnohovariant pro účinné vytváření složených instrukcí.
Obr.11 ukazuje vývojový diagram možné realizace jednotky
pro složení a manipulaci instrukčních toků v každém případě E, F nebo G kategorie. Vícenásobný počet jednotek 104, 106, 108 pro složení je ukázán a za účelem zvýšení účinnosti může tento počet být tak velký jako je počet půlslov obsažených ve vyrovnávací 32 paměti textu. V této úpravě použité v případě G mohou tři jednotkypro skládání začít zpracovávat posloupnosti příslušné první,třetí a páté slabice. Po dokončení možné instrukční posloupnos-ti každý kompaunder zahájí zkoušení další možné posloupnostiposunuté o šest slabik od její předchozí posloupnosti. Každý kom-paunder vytvoří složené identifikační bity (hodnoty C-vektoru)pro každé půlslovo v textu. Tři posloupnosti ze tří kompaunderůjsou operačně přezkoumány jednotkou 110 a výsledné sdruženéidentifikační bity (hodnoty CC-vektoru) jsou uloženy do pamětispolečně s jejich odpovídajícími textovými slabikami.
Obr.12 ukazuje nejhorší případ techniky složení jak jepoužit v případě G pro velké skupiny až do čtyř instrukcí v kaž-dé složené instrukci. Uvažujeme opět tentýž slabikový tok 79.každá slabika na začátku půlslova je přezkoušena jako kdyby tobyl začátek instrukce a její operační kód vyhodnocen za účelemumístění potenciální posloupnosti o třech dodatečných instrukcích.Nemůže-li být složena,je hodnota jejího identifikačního bitu "O”.Jestliže může být složena s další potenciální instrukcí je iden-tifikační bit "1" pro první instrukci v páru a ”0’’ pro druhouinstrukci v páru. Jestliže se zjistí, že nemůže být složena s dal-šími potenciálními instrukcemi, jsou příslušné skládací bity nazačátku první instrukce ”2'’, "1" a "0". Tato metoda předpokládá,že větev uprostřed velké skupiny složené instrukce může vytvo-řit trojitou nebo párovou skupinu, která je koncovým podsouboremvelké skupiny.
Pokud se týká obr.10, slabiky začínající každé půlslovomusí být přezkoušeny za účelem stanovení mezí potenciální instruk-ce. Každá přezkoušená posloupnost vytvoří posloupnost identifi-kačních bitů zvanou C-vektory 112. Složená posloupnost identifi-kačních bitů nazvaná hodnoty CC-vektoru 114 je vytvořena vybránímmaximální hodnoty ze všech jednotlivých identifikačních bitůpřidružených uvedeným půlslovům. Když je vydána a provedena velkáskupina složené instrukce, centrální základní jednotka zanedbávšechny složené bity přidružené jiným slabikám než je první sla- 33 bika skupiny. V této kódovací metodě složené identifikační bityv CC-vektoru 114 označují začátek složené instrukce právě takjako označují počet instrukcí sestavujících složenou instrukci. V závislosti na skutečných pravidlech použitých pro složenímůže dojít k některým optimalizacím techniky složení zvléšt uvelké skupiny. Například zahájení páté posloupnosti v devátéslabice 116 předpokládá délky instrukcí 2,4,2 a 6 slabik. Jelikožv tomto příkladě jsou šestislabičné instrukce nesložítelné, nemásmysl pokoušet se o složení ostatních tří potenciálních instruk-cí (jedenácti, patnácti a sedmnáctislabičné), neboí. byly jižsloženy tak jak možno. Identifikační bity v tomto ohledu pro po-tenciální instrukce začínající jedenáctou a patnáctou slabikoubyly již příslušně označeny v C-vektoru 112 a 118, 120. Za před-pokladu, že devátá slabika začíná instrukční posloupnost v mís-tě 116, třináctá slabika instrukci nezačne. Tato právě popsanáoptimélnost ale stále vyžaduje, aby byla třinácté slabika pře-zkoušena v místě 122 jako začátek možné instrukce, nebot dříveo tom nebylo uvažováno.
Metoda složení velké skupiny ovšem bude pokračovat u všechpůlslov textu i když znázorněný příklad na obr.12 končí patnác-tou slabikou.
Za účelem snížení počtu bitů pro převádění mohou existovatalternativní znázornění složené informace. Identifikační bitynapříklad pro složení by bylo možno převádět do různých formátů,jakmile je určena řádná instrukční mez. Například je možno dosáh-nout jednoho bitu pro instrukci následujícím kódováním : hodno-ta "1" znamená složit s příští instrukcí a hodnota "0" znamenánesložit s příští instrukcí. Složená instrukce tvořená skupinouo čtyřech jednotlivých instrukcích bude mít sled identifikačníchbitů pro složení (1,1,1,0). Pokud se týká ostatních dříve popsa-ných složených instrukcí, identifikační bity pro složení přidru-žené půlslovům, které nejsou instrukcemi a proto nemají operač-ní kódy, jsou v době provedení zanedbány.
Zatím co byla popsána příkladná preferovaná spojení v jeden 34 celek podle vynálezu, bude na odbornících v této oblasti tech-niky, aby posoudili různé modifikace a změny, ktere lze odvoditz myšlenky a obsahu vynálezu jak je definován v následujícíchnárocích. * advokát

Claims (27)

  1. - 35 PATENTOVÉ NÁROKY
    1. Metoda identifikování instrukčních posloupností Vp^slabiko-vem toku a označení nejméně dvou instrukcí pro paralelníprovedení, včetně následujících kroků, vyznačující se tím,že první možná instrukční posloupnost je zahájena výběrempředpokládané první instrukce, zjištěním délky prvníinstrukce pro tuto předpokládanou první instrukci ve zmíně-né první možné instrukční posloupnosti a využitím délkyteto první instrukce pro zjištění nejméně jedné druhé před-pokládané instrukce, přičemž je zakódována předpokládanáprvní a nejméně druhá instrukce pro zjištění, zda jsouoznačeny pro paralelní provedení zvláštním uspořádáním sou-stavy počítače.
  2. 2. Metoda podle nároku 1 vyznačující se tím, že je zjištěnadélka druhé instrukce pro zmíněnou nejmeně druhou instrukciv řečené první možné instrukční posloupnosti, přičemž jepoužito délky druhé instrukce k umístění předpokládané nej-méně třetí instrukce a zakódována předpokládaná druhá anejméně třetí instrukce pro stanovení, zda jsou označeny proparalelní provedení zvláštním uspořádáním soustavy počítače.
  3. 3. Metoda podle nároků 1 nebo 2 vyznačující se tím, že druhámožná instrukční posloupnost je zahájena výběrem jiné před-pokládané instrukce odlišné od zmíněné předpokládané prvníinstrukce, přičemž je zjištěna délka jiné instrukce prozmíněnou jinou předpokládanou instrukci v této druhé možnéinstrukční posloupnosti, použita délka jiné instrukce kumístění další předpokládané instrukce a zakódována zmíněnádalší a jiná předpokládaná instrukce pro stanovení, zdajsou označeny pro paralelní provedení zvláštním uspořádánímsoustavy počítače. - 36 -
  4. 4. Metoda podle nároku 3 vyznačující se tím, že předpokládanáprvní a druhá instrukce v prvním možném instrukčním sleduje porovnána s další a jinou předpokládanou instrukcí vezmíněném druhém možném instrukčním sledu pro určení, zdaexistuje mezi instrukčními mezemi nějaká sbíhavost.
  5. 5. Metoda podle jednoho z nároků 1 až 4 vyznačující se tím, žeslabikový tok obsahuje instrukce o pevné délce.
  6. 6. Metoda podle jednoho z nároků 1 až 5 vyznačující se tím,že slabikový tok obsahuje instrukce o proměnlivé délce.
  7. 7. Metoda podle jednoho z nároků 1 až 6 vyznačující se tím, žeslabikový tok obsahuje ne-instrukce smíšené s instrukcemi.
  8. 8. Metoda podle jednoho z nároků 1 až 7 vyznačující se tím, ževe slabikovém toku neexistují jakékoliv instrukční mezníreferenční body.
  9. 9. Metoda podle jednoho z nároků 1 až 8 vyznačující se tím, žeslabikový tok obsahuje ne-instrukce smíšené s instrukcemi.
  10. 10. Metoda podle jednoho z nároků 1 až 9 vyznačující se tím, žeslabikový tok obsahuje instrukce o proměnlivé délce.
  11. 11. Metoda podle jednoho z nároků 1 až 10 vyznačující se tím,že kódovací krok obsahuje zakódování předpokládané první,druhé a nejméně třetí instrukce pro zjištění, zda jsou označeny pro paralelní provedení zvláštním uspořádáním sousta-vy počítače.
  12. 12. Metoda podle jednoho z nároků 1 až 11 vyznačující se tím,že je udržována stopa slabikových poloh sdružených s před-pokládanými instrukcemi v první možné instrukční posloup- 37 - nosti a v druhé možné instrukční posloupnosti, přičemž jezachováno samostatné identifikační označení pro každou zeslabikových poloh sdružených s předpokládanými instrukcemi.
  13. 13. Metoda podle nároku 12 vyznačující se tím, že instrukceje označena pro paralelní provedení kdykoliv je zakódová-na instrukce bud v první nebo druhé možné instrukční po-sloupnosti pro paralelní provedení.
  14. 14. Metoda podle jednoho z nároků 1 až 13 vyznačující se tím,že kódovací označení identifikující největší počet ze zmí-něných nejméně tří předpokládaných instrukcí způsobilýchparalelního provedení je zachováno pro použití v doběprovedení instrukce.
  15. 15. Metoda předběžného zpracování určitých nevyvolanýchinstrukcí v binárním instrukčním toku pro identifikaciinstrukcí způsobilých paralelního provedení ve zvláštnímuspořádání soustavy počítače vyznačující se tím, že je ge-nerována první možná posloupnost předpokládaných instrukcízaložených na jejich instrukční délce, porovnán každý párpředpokládaných instrukcí v první možné posloupnosti prourčení jejich způsobilosti pro paralelní provedení a zakó-dováno řídící označení sdružené s každou instrukcí proidentifikaci těch párů předpokládaných instrukcí označenýchpro paralelní provedení ve zvláštním uspořádání soustavypočítače.
  16. 16. Metoda podle nároku 15 vyznačující se tím, že porovnávacíkrok obsahuje porovnání první instrukce s její následujícíinstrukcí a porovnání této následující instrukce s dalšínásledující instrukcí. 38 -
  17. 17. Metoda podle nároku 15 nebo 16 vyznačující se tím, žegenerování dodatečných možných posloupností předpokláda-ných instrukcí se odlišuje od první možné posloupnostipředpokládaných instrukcí.
  18. 18. Metoda podle nároku 17 vyznačující se tím, že vícenásob-ných jednotek pro složení je použito k zakódování řídícímoznačením přidruženým ke každé předpokládané instrukci v první možné posloupnosti a v dodatečných možných posloupnostech.
  19. 19. Metoda podle nároku 17 nebo 18 vyznačující se tím, žegenerování dodatečných možných posloupností obsahuje zahá-jení nové možné posloupnosti v určitých pevných interva-lech instrukčního toku.
  20. 20. Metoda podle nároku 19 vyznačující se tím, že pevnéintervaly jsou všechny slabiky.
  21. 21. Metoda podle nároku 19 nebo 20 vyznačující se tím, že pev-né intervaly jsou všechny ostatní slabiky.
  22. 22. Metoda podle jednoho z nároků 15 až 21 vyznačující se tím,že porovnávací krok obsahuje porovnávání skupin dvou nebovíce předpokládaných instrukcí.
  23. 23. Metoda podle nároku 22 vyznačující se tím, že porovnávacíkrok obsahuje porovnávání skupin dvou nebo více sousedníchpředpokládaných instrukcí, které jsou jedna k druhé vsousedském vztahu.
  24. 24. Metoda zpracování instrukcí do instrukčního toku bezinstrukčních mezních referenčních bodů pro identifikacisousedních skalárních instrukcí, které jsou způsobilé 39 - paralelního provedení ve zvláštním uspořádání počítačevyznačující se tím, že generování různých posloupnostípředpokládaných instrukcí je zahájeno v různých možnýchinstrukčních mezích, přičemž zakódování každé předpoklá-dané instrukce identifikačním označením označuje jejízpůsobilost paralelního provedení a její sousedníinstrukcí.
  25. 25. Metoda podle nároku 24 vyznačující se tím, že instrukcemají daný počet různých instrukčních délek, přičemž generování kroku obsahuje generování odlišné posloupnostipředpokládaných instrukcí pro každou z daného počtu růz-ných možných délek.
  26. 26. Metoda podle nároku 24 nebo 25 vyznačující se tím, žedaný počet je dvě nebo více možných délek.
  27. 27. Metoda podle nároku 24 nebo 25 vyznačující se tím, žedaný počet možných délek je zarovnán do slabikových mezí
CS91935A 1990-05-04 1991-04-04 Method of instruction sequence identification in byte flow and at least two instructions flagging for parallel execution CS93591A2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US51938290A 1990-05-04 1990-05-04

Publications (1)

Publication Number Publication Date
CS93591A2 true CS93591A2 (en) 1991-12-17

Family

ID=24068072

Family Applications (1)

Application Number Title Priority Date Filing Date
CS91935A CS93591A2 (en) 1990-05-04 1991-04-04 Method of instruction sequence identification in byte flow and at least two instructions flagging for parallel execution

Country Status (8)

Country Link
US (1) US5500942A (cs)
EP (1) EP0454984B1 (cs)
JP (1) JPH087681B2 (cs)
CA (1) CA2037708C (cs)
CS (1) CS93591A2 (cs)
DE (1) DE69122294T2 (cs)
HU (1) HUT57456A (cs)
PL (1) PL289723A1 (cs)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
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
US5671431A (en) * 1992-09-22 1997-09-23 Siemens Aktiengesellschaft Method for processing user program on a parallel computer system by inserting a tag during compiling
DE69427265T2 (de) 1993-10-29 2002-05-02 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
EP0651324B1 (en) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Speculative instruction queue for variable byte length instructions
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
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
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP1186995B1 (en) * 1993-11-05 2003-09-03 Intergraph Corporation Instruction memory with associative cross-bar switch
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US8583895B2 (en) * 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
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
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
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
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
US7376814B1 (en) 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
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
US7401328B2 (en) * 2003-12-18 2008-07-15 Lsi Corporation Software-implemented grouping techniques for use in a superscalar data processing system
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7502873B2 (en) * 2006-10-10 2009-03-10 International Business Machines Corporation Facilitating access to status and measurement data associated with input/output processing
US7500023B2 (en) * 2006-10-10 2009-03-03 International Business Machines Corporation Facilitating input/output processing by using transport control words to reduce input/output communications
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
US7937507B2 (en) * 2008-02-14 2011-05-03 International Business Machines Corporation Extended measurement word determination at a channel subsystem of an I/O processing system
US8108570B2 (en) * 2008-02-14 2012-01-31 International Business Machines Corporation Determining the state of an I/O operation
US7899944B2 (en) * 2008-02-14 2011-03-01 International Business Machines Corporation Open exchange limiting in an I/O processing system
US7941570B2 (en) 2008-02-14 2011-05-10 International Business Machines Corporation Bi-directional data transfer within a single I/O operation
US8095847B2 (en) * 2008-02-14 2012-01-10 International Business Machines Corporation Exception condition handling at a channel subsystem in an I/O processing system
US8196149B2 (en) * 2008-02-14 2012-06-05 International Business Machines Corporation Processing of data to determine compatability in an input/output processing system
US8478915B2 (en) 2008-02-14 2013-07-02 International Business Machines Corporation Determining extended capability of a channel path
US8117347B2 (en) * 2008-02-14 2012-02-14 International Business Machines Corporation Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system
US8001298B2 (en) * 2008-02-14 2011-08-16 International Business Machines Corporation Providing extended measurement data in an I/O processing system
US7840718B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing of data to suspend operations in an input/output processing log-out system
US7890668B2 (en) 2008-02-14 2011-02-15 International Business Machines Corporation Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous
US7917813B2 (en) * 2008-02-14 2011-03-29 International Business Machines Corporation Exception condition determination at a control unit in an I/O processing system
US8082481B2 (en) * 2008-02-14 2011-12-20 International Business Machines Corporation Multiple CRC insertion in an output data stream
US7908403B2 (en) * 2008-02-14 2011-03-15 International Business Machines Corporation Reserved device access contention reduction
US9052837B2 (en) * 2008-02-14 2015-06-09 International Business Machines Corporation Processing communication data in a ships passing condition
US8214562B2 (en) * 2008-02-14 2012-07-03 International Business Machines Corporation Processing of data to perform system changes in an input/output processing system
US8166206B2 (en) * 2008-02-14 2012-04-24 International Business Machines Corporation Cancel instruction and command for determining the state of an I/O operation
US7904605B2 (en) * 2008-02-14 2011-03-08 International Business Machines Corporation Computer command and response for determining the state of an I/O operation
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
US8312189B2 (en) * 2008-02-14 2012-11-13 International Business Machines Corporation Processing of data to monitor input/output operations
US8176222B2 (en) * 2008-02-14 2012-05-08 International Business Machines Corporation Early termination of an I/O operation in an I/O processing system
US8364751B2 (en) * 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
US7904606B2 (en) * 2008-07-31 2011-03-08 International Business Machines Corporation Transport control channel program chain linked branching
US7937504B2 (en) * 2008-07-31 2011-05-03 International Business Machines Corporation Transport control channel program message pairing
US8055807B2 (en) 2008-07-31 2011-11-08 International Business Machines Corporation Transport control channel program chain linking including determining sequence order
JP2010257199A (ja) * 2009-04-24 2010-11-11 Renesas Electronics Corp プロセッサ及びプロセッサにおける命令発行の制御方法
US8332542B2 (en) 2009-11-12 2012-12-11 International Business Machines Corporation Communication with input/output system devices
US8364854B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US8364853B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US8583988B2 (en) 2011-06-01 2013-11-12 International Business Machines Corporation Fibre channel input/output data routing system and method
US8738811B2 (en) 2011-06-01 2014-05-27 International Business Machines Corporation Fibre channel input/output data routing system and method
US9021155B2 (en) 2011-06-01 2015-04-28 International Business Machines Corporation Fibre channel input/output data routing including discarding of data transfer requests in response to error detection
US8677027B2 (en) 2011-06-01 2014-03-18 International Business Machines Corporation Fibre channel input/output data routing system and method
US8346978B1 (en) 2011-06-30 2013-01-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8312176B1 (en) 2011-06-30 2012-11-13 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8473641B2 (en) 2011-06-30 2013-06-25 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8549185B2 (en) 2011-06-30 2013-10-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
CN102495726B (zh) 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
US8918542B2 (en) 2013-03-15 2014-12-23 International Business Machines Corporation Facilitating transport mode data transfer between a channel subsystem and input/output devices
US8990439B2 (en) 2013-05-29 2015-03-24 International Business Machines Corporation Transport mode data transfer between a channel subsystem and input/output devices
US9558000B2 (en) * 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts
US11294678B2 (en) * 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment

Family Cites Families (14)

* 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
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
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
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
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency

Also Published As

Publication number Publication date
DE69122294D1 (de) 1996-10-31
JPH087681B2 (ja) 1996-01-29
US5500942A (en) 1996-03-19
PL289723A1 (en) 1992-05-04
CA2037708A1 (en) 1991-11-05
CA2037708C (en) 1998-01-20
HU911102D0 (en) 1991-10-28
EP0454984A2 (en) 1991-11-06
JPH0773036A (ja) 1995-03-17
DE69122294T2 (de) 1997-04-10
EP0454984B1 (en) 1996-09-25
HUT57456A (en) 1991-11-28
EP0454984A3 (en) 1994-04-27

Similar Documents

Publication Publication Date Title
CS93591A2 (en) Method of instruction sequence identification in byte flow and at least two instructions flagging for parallel execution
US5502826A (en) System and method for obtaining parallel existing instructions in a particular data processing configuration by compounding instructions
CZ280269B6 (cs) Číslicový počítačový systém
CN100483341C (zh) 用于执行本机绑定的方法和装置
US5303357A (en) Loop optimization system
EP0529059B1 (en) Branch resolution via backward symbolic execution
JP2002024011A (ja) プロセッサにおける命令の叙述された実行
JPH03291726A (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
US5673425A (en) System for automatic generating instruction string to verify pipeline operations of a processor by inputting specification information having time for the processor to access hardware resources
US5890009A (en) VLIW architecture and method for expanding a parcel
US20040163074A1 (en) Method and system for specifying sets of instructions for selection by an instruction generator
US20030088862A1 (en) Instrumentation of code having predicated branch-call and shadow instructions
CA1229175A (en) Graph manager for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US4615003A (en) Condition concentrator and control store for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US5894427A (en) Technique for concurrent detection of bit patterns
Freiburghouse The multics PL/1 compiler
JPH0451328A (ja) 複合型命令スケジューリング処理装置
Set Example
Cosmina et al. Operators
JPH0784797A (ja) ロードモジュールへのソースコード行番号登録方法および装置
US7010631B2 (en) Controller based hardware device and method for setting the same
Johnson Tcl Style Guide
Milner Pipeline descriptions for retargetable compilers: A decoupled approach
Ellard et al. Ant-32 Assembly Language Tutorial (for version 3.1. 0b)