CS93691A2 - Method of instruction sequence processing and device for this method realization - Google Patents
Method of instruction sequence processing and device for this method realization Download PDFInfo
- Publication number
- CS93691A2 CS93691A2 CS91936A CS93691A CS93691A2 CS 93691 A2 CS93691 A2 CS 93691A2 CS 91936 A CS91936 A CS 91936A CS 93691 A CS93691 A CS 93691A CS 93691 A2 CS93691 A2 CS 93691A2
- Authority
- CS
- Czechoslovakia
- Prior art keywords
- instruction
- instructions
- parallel
- composite
- scalar
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 title claims abstract description 36
- 150000001875 compounds Chemical class 0.000 claims abstract description 84
- 230000001419 dependent effect Effects 0.000 claims abstract description 11
- 239000002131 composite material Substances 0.000 claims description 67
- 239000000203 mixture Substances 0.000 claims description 53
- 230000000903 blocking effect Effects 0.000 claims description 10
- 238000007781 pre-processing Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 6
- 230000000052 comparative effect Effects 0.000 claims description 4
- 230000004907 flux Effects 0.000 claims description 3
- 238000003860 storage Methods 0.000 claims description 2
- 230000006872 improvement Effects 0.000 abstract description 3
- 230000008859 change Effects 0.000 abstract description 2
- 238000013329 compounding Methods 0.000 abstract description 2
- 239000013598 vector Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003973 irrigation Methods 0.000 description 1
- 230000002262 irrigation Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 229940036310 program Drugs 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Numerical Control (AREA)
Description
ípVr» ÍCV O. Π I t/řifrl lúi^vx-i t-L ( s. 7?-VOřvil |nrCv vM £o^°ťc 2 ^xscLuschni ckých—j-ed-
Strojová—architektura způsobilá—k pínot ek—v—souboru—s ložených—i nst eu-ke i-
Analogické přihlášky to - ·» V Γ- fc)
• rnN ^sledující příbuzné přihlášky jsou"onictvi právnTbe-jTástupce a jsou začleněny."Technické vybavení potrvt-a_cu se podáno 4. 4. 1990, ser^-^#io7 07 technika s Lfri-erTTi ns t rukční ch úrovní para 'násTeeluj^:Fenou závislosti dat"20; a "Universální ích proceso- ÍN990019/ podáno 4. 5. 1990, ser. No. 07/519,. l^st_techniky
Vynález se týká obecně paralelního zpracováni instruk-cí počítačem a zejména se týká zpracováni toku instrukcípro identifikaci těch instrukcí, které lze vydávat a vyko-návat paralelně ve specifickém uspořádání systému počítače. adní._st av_t echni k^
Pojetí paralelního provádění instrukcí pomohlo zvět-šit výkon počítačových systému. Paralelní prováděni je za-loženo na existenci samostatných funkčních jednotek, kte-ré mohou vykonávat současně dvě nebo více stejných neborůzných instrukci.
Jinou používanou technikou pro zvýšení výkonu systé-mů počítače je zřetězené zpracování. Zřetězené zpracová-ní je obecně docíleno rozdělením funkce vykonávané počí-tačem na nezávislé dílčí funkce a zařazením samostatnéčásti technického vybavení nebo stupně k vykonávání kaž-dé dílčí funkce. Každý stupen je definován pro včasné za-bráni jednoho taktu. Zřetězené zpracováni poskytuje formuparalelního zpracování, nebof je možno vykonávat vícená-sobné instrukce současně. Ideálně lze vsunout jednu novou i\-ř47My>··- ·"·' - ..... ....... * - 2 - instrukci do zřetězeného vedeni v jednom cyklu, přičemžkaždá instrukce v zřetězeném vedeni je v různém stupni pro-vádění. Operace je analogická překládáni z jazyka symbo-lických adres, s řadou instanci zpracováni součinu v růz-ných stupních kompletace.
Mnohdy však úspěšnost paralelního provedeni a/nebozřetězeného zpracování není docíleno vlivem zpožděni způ-sobeným vzájemným blokováním během přenosu dat a vlivemvzájemného blokování v závislosti na přístrojové techni-ce. Příklad vzájemného blokováni v závislosti na datechje tak zvané blokováni "zápis-čtení", kde první instrukcemusí napsat svůj výsledek dříve než druhá instrukce můžebýt čtena a následně použita. Příklad vzájemného bloková-ni technickými prostředky je tam, kde musí první instrukcepoužit zvláštní složku technického vybavení a druhá instruk-ce musí rovněž použít tutéž zvláštní složku technickéhovybavení.
Jedním z dříve používaných technických postupů k vy-loučení vzájemného blokováni /někdy zvané zřetězené ha-zardy/ je dynamické rozvrhováni. Dynamické rozvrhovánije založeno na skutečnosti, že vsunutím speciálního tech-nického vybaveni je možno přeřadit instrukční posloup-nosti potom co byty vydány do zřetězeného provedení.
Bylo učiněno také několik pokusů o zvětšeni účinnostipomoci tak zvaného statického rozvrhováni, které je prove-deno dříve než instrukční tok je vyvolán z paměti k vý-počtu. Statické rozvrhováni je docíleno pohybem kódu atím přeřazením instrukčního sledu před výpočtem. Totopřeřazeni vytvoří ekvivalentní tok instrukcí, který mnohemvíce využije technického vybavení pomocí paralelního zpra-cování. Takové statické rozvrhování je typicky provedenov době kompilace. Přeřazené instrukce však zůstanou vesvém původním tvaru a běžné paralelní zpracováni stálevyžaduje nějaký tvar dynamického určení právě před pro- 3 vedením instrukcí za účelem rozhodnuti zda vykonat dvě nej-bližši instrukce sériově nebo paralelně.
Taková technika rozvrhování může zlepšit celkovouvýkonnost zřetězeného počítače, ale nemůže sama uspokojittrvalé stávající požadavky na zvětšení výkonnosti. V tom-to ohledu mnohé moderni návrhy na universální výpočet setýkají využiti instrukční úrovně mimo to, které bylo dosa-ženo zřetězením. Například další paralelnost instrukčníúrovně byla docílena explicitně vydáním vícenásobných in-strukci v jednom cyklu tak zvanými superskalárnimi stroji,spíše než implicitně dynamickým rozvrhováním jednotlivýchinstrukcí nebo vektorovými stroji. Název superskalárnípro stroje, které vydávají vícenásobné instrukce v jednomcyklu, je pro odlišeni od skalárních strojů, které vydá-vají jednu instrukci v jednom cyklu. V typickém superska lárním stroji operační kódy jsouve vyvolaném instrukčním toku dekódovány a analyzoványdynamicky instrukční vydanou logikou za účelem určeni zdainstrukce lze provésti paralelně. Kriteria pro takové dy-namické rozvrhování v posledni minutě jsou specificképro každou architekturu instrukčního souboru, jakož irealizaci podléhající této architektuře v jakékoliv danéjednotce zpracovávájici instrukce. Její účinnost je pro-to omezena složitostí logiky pro určení, které kombinaceinstrukcí lze provésti paralelně a doba cyklu jednotkypro zpracováni instrukce se spíše zvětšuje. Zvětšenétechnické vybaveni a doba cyklu těchto superska lárníchstrojů se stává dokonce velkým problémem v architekturách,které mají stovky různých instrukci. Při dynamickém rozvrhování, statickém rozvrhováninebo jejich kombinaci se vyskytují další nedostatky. Na-příklad je třeba přezkoumat každou skalární instrukcipokaždé znovu, jestliže je vyvolána k provedeni rozhodnutí i* zda je způsobilá pro paralelní provedení. K disposici ne-ní žádné opatřeni pro identifikaci a označeni předem těchskalárních instrukci/ které jsou způsobilé pro paralelníprovedeni. Neexistuje žádné opatřeni pro identifikaci avčasné označeni předem těch skalárních instrukci/ kteréjsou schopny paralelního provedení.
Jiným nedostatkem dynamického rozvrhováni v realiza-ci superskalárnich strojů je způsob jakým jsou skalárníinstrukce zkoušeny pro možné paralelní zpracování. Super-skalárni stroje zkoušejí skalární instrukce na základěpopisů jejich operačního kódu a neexistuje opatřeni/ abybyly vzaty v úvahu technické prostředky počítače. In-strukce jsou také vydávány metodou "první zařazen, prvnívybrán"/ čímž je eliminována možnost tvorby skupin, abyse zabránilo nebo omezil výskyt vzájemného blokování. V několika dosavadních technických řešeních jsouvzaty v úvahu požadavky technických vybavení pro paralel-ní zpracování instrukci. Jedním takovým řešením je strojna zpracováni velmi dlouhých instrukčních slov, ve kte-rých výkonný kompilárot přeřazuje instrukce tak, že jezjednodušeno rozvrhováni instrukci technickými prostředky.V tomto přiblíženi musí být kompilátor složitější než jsoustandardní kompilátory, takže je možno použít větší okén-ko pro vyhledání většího počtu paralelit v instrukčnímtoku. Výsledné instrukce nemohou být nutně cílovým kódemslučitelným s dosavadní stávající architekturou, čímžby byl jeden problém vyřešen, zatímco by vznikly další no-vé problémy. V podstatě vznikají také další problémyvzhledem k častému větvení, které omezuje jeho paralelitu. Žádný z dosavadních postupů se proto nepřibližujetakovému paralelnímu zpracování, aby bylo dostatečně sro-zumitelné za účelem minimalizování všech možných vzájem-ných blokování, zatímco současně by bylo zabráněno novému 5 hlavnímu návrhu stavby instrukčního souboru a odstraněnysložité logické obvody pro dynamické dekódování vyvola-ných instrukci.
To co je podle toho třeba je dokonalejší zpracováníčíselných dat, které usnadňuje paralelní provedeni stáva-jících strojních instrukcí za účelem zvýšeni účinnostiprocesoru. Poněvadž počet instrukcí provedených za vteři-nu je součinem základního časového cyklu procesoru a prů-měrného počtu požadovaných cyklů pro dokončeni instrukce,je třeba nalézt takové řešení, které bere v úvahu oba ty-to parametry. Mnohem specifičtěji je třeba mechanismu,který snižuje počet cyklů požadovaných k provedení instruk-ce pro danou architekturu. Kromě toho je třeba určitéhozdokonaleni, které by zredukovalo složitost technickéhovybaveni nutného k podpoře paralelního provedení instruk-ci, čímž je jakékoliv možné zvětšení časového cyklu zmen-šeno na minimum. Nejvýše žádoucí je ještě pro navrženézdokonalení zajištění slučitelnosti realizace s již defi-novanou stávající architekturou, přičemž by byla zavedenaparalelnost instrukční úrovně jak nového tak stávajícíhostrojového kódu.
Podst^ta_vxnálezu
Stručný obsah a předměty vynálezu
Se zřetelem ke shora uvedenému, je předmětem předlo-ženého vynálezu vytvořeni metody pro statickou analýzu,před dobou dekódování a provedení stávajících instrukci,posloupnosti stávajících instrukci pro generování slo-žených instrukcí tvořených sousedními skupinami stáva-jících instrukcí, způsobilých k paralelnímu provedení.Souběžným předmětem je přidání příslušné řídicí infor-mace do instrukčního toku včetně skupinové informace na-značující kde začíná složená instrukce, právě tak jako - 6 - oznámení počtu stávajících instrukcí, které jsou začleněnydo každé složené instrukce.
Jiným předmětem vynálezu je analýza velkého okénkainstrukčního slabikového toku před vyvoláním instrukce,přičemž okénko je nastavitelné do různých poloh v instrukč·ním slabikovém toku za účelem docíleni optimálního selek-tivního seskupeni jednotlivých sousedních instrukcí, kte-ré tvoří složenou instrukci.
Dalším předmětem vynálezu je opatření metody pro slo-žení instrukci o dříve zmíněných charakteristikách, kteráje aplikovatelná na architektury složitých instrukcí sproměnlivou délkou instrukci a s daty smíšenými s instruk-cemi, a která je rovněž aplikovatelná na architektury čí-tače přemístěných instrukcí, kde instrukce jsou obvyklekonstantní délky a data nejsou smíšena s instrukcemi.
Dalším předmětem je opatření způsobu předběžnéhozpracováni instrukčního toku pro vytvoření složených in-strukcí, kde způsob lze realizovat programovým a/nebotechnickým vybavením v různých bodech soustavy počítačepřed dekódováním a provedením instrukce. Souběžným před-mětem je vytvoření metody předběžného zpracování stáva-jících instrukcí, která zpracovává tok binárních instruk-cí jako část následného kompilátoru nebo část skladačevstupní paměti nebo jako část rychlé vyrovnávací paměti,jednotky pro složení instrukci, a která může zahájitskládáni instrukcí na začátku slabikového toku, aniž bybyly známy meze instrukcí.
Vynález se tak vztahuje na metodu předběžného zpra-cování instrukčního toku pro vytvoření složených instrukcísestavených ze skalárních instrukcí, které stále podržujísvoje originální obsahy. Složené instrukce jsou tvořenybeze změny předmětového kódu skalárních instrukcí, které 7 tvoří složenou instrukci, čimž je umožněno stávajícím pro-gramům uskutečnit zlepšení výkonnosti strojů pro skladbuinstrukci, přičemž je zachována slučitelnost s předchozí-mi realizovanými stroji skalárních instrukcí.
Mnohem specifičtěji vynálezem je vytvořen soubor pra-videl pro skládáni spočívající na analýze stávajících in-strukcí za účelem jejich rozdělení do různých tříd. Analý-za určuje, které instrukce se kvalifikuji, bučí s instruk-cemi v jejich vlastních třídách nebo s instrukcemi v jinýchtřídách, pro paralelní provedeni ve zvláštním uspořádánítechnických prostředků. Takováto pravidla pro skládáníjsou považována za normu pro předběžné zpracování in-strukčního toku za účelem vyhledáni skupin dvou nebo vícesousedních skalárních instrukcí, které lze provést paralel-ně. V některých případech určité druhy zablokovaných in-strukcí lze skládat paralelním provedením, kde blokováníje způsobilé sdružení ve speciální konfiguraci technickýchprostředků. V jiných uspořádáních kde blokování je ne-sdružitelné, instrukce, které mají blokování závislá nadatech nebo závislá na technických prostředcích, jsou vy-loučeny ze skupin tvořících složené instrukce.
Každá složená instrukce je identifikována řídicíinformaci jako je označení sdružené se složenou instrukcí,přičemž délka složené instrukce je způsobilá k převáděnítechnických jednotek v širokém rozsahu, počínaje souboremdvou skalárních instrukcí až do jakéhokoliv maximálníhopočtu, který lze provést paralelně specifickou realizacítechnického vybaveni. Poněvadž pravidla pro skládáni jsouzaložena na identifikaci tříd instrukcí spíše než na jed-notlivé instrukci, není žádná potřeba složitých matricukazujících všechny možné kombinace specifických jednotli-vých instrukci. Zatímco jejich vlastní posloupnost zůstá-vá nedotčena, jednotlivé instrukce jsou selektivně seskupe-ny a kombinovány s jednou nebo více ostatními sousedními 8 skalárními instrukcemi pro vytvoření složené instrukce,která obsahuje skalární instrukce, jež stále mají před-mětový kód slučitelnosti s nesloženými skalárními instruk-cemi. Řídicí informace je připojena pro identifikovániinformace týkající se provedení složených instrukcí.
Tyto a ostatní předměty, charakteristiky a výhodyvynálezu jsou zřejmé specialistům z oboru se zřetelem knásledujícímu podrobnému popisu a připojeným výkresům. Eřshigd_obrášků_na_výkrekech
Obr. 1 základní diagram vyšší úrovně vynálezu.
Obr. 2 časový diagram realizace sekvenčního procesoru ukazující paralelní provedení určitých neblokovanýchinstrukci, které byly selektivně seskupeny do tokusložených instrukcí.
Obr. 3 časový diagram realizace multiprocesoru ukazující paralelní provedení skalárních a složených instruk-cí, které nejsou vzájemně blokovány.
Obr. 4 /znázorněn jako obr. 4A a obr. 4B/ znázorňuje při-klad možného selektivního roztřídění části instruk-cí provedených stávajícím skalárním strojem.
Obr. 5 ukazuje typickou cestu programu vedenou od zdrojekódu ke skutečnému provedeni.
Obr. 6 vývojový diagram ukazující generaci programu sou-boru složených instrukci z programu v jazyceasembleru.
Obr. 7 vývojový diagram ukazující provedení programu sou- boru složených instrukcí. 9
Obr. 8 analytické schéma pro texty toku instrukci s iden-tifikovatelnými instrukčními referenčními body.
Obr. 9 analytické schéma pro texty toku instrukci s pro-měnlivou délkou instrukci bez referenčniho bodu,ukazující jejich souběžné soubory možných slože-ných identifikačních bitů.
Obr. 10 znázorňuje logickou realizaci schopnosti skládáníinstrukcí pro zpracování textu toku instrukcí po-dle obr. 9.
Obr. 11 vývojový diagram pro skládání toku instrukcí s re-ferenčními značkami pro identifikaci instrukčníchmezních referenčních bodů.
Obr. 12 ukazuje příklad řídicího pole složené instrukce.
Obr. 13 vývojové schéma pro odvození a použití pravidelpro skládání aplikovatelných na specifické uspo-řádání technických prostředků systému počítače ajeho zvláštní architektický instrukční soubor.
Obr. 14 ukazuje jak různá seskupeni platných neblokovanýchpárů instrukci tvoři vícenásobné složené instrukcepro sekvenční nebo větvené cílové provedení.
Obr. 15 ukazuje jak různá seskupení platných neblokovaných trojic instrukcí tvoří vícenásobné složené instruk-ce pro sekvenční nebo větvené cílové provedení.
Obr. 16 /znázorněn jako obr. 16A a obr. 16B/ je vývojovéschéma pro složeni instrukčního toku podobně jakov obr. 9, které obsahuje instrukce proměnlivé dél-ky bez mezních referenčních bodů. 10
Obr. 17 schéma ukazující typické složitelné páry instruk-čních kategorii pro část Systému/370 instrukčnísady v obr. 4.
Podstata předloženého vynálezu spočívá v předběžnémzpracováni souboru instrukcí nebo programu, které má pro-vést počítač za účelem statického určení, které neblokova-né instrukce mají být kombinovány do složených instrukci,přičemž je připojena řídicí informace pro identifikacitakových složených instrukcí. Takové určeni je založenona pravid^,lech pro skládáni, která jsou vypracována prosoubor instrukcí zvláštní architektury. Stávající skalár-ní instrukce jsou roztříděny na základě analýzy jejichoperand, použiti a funkce technického vybaveni, takže se-skupeni instrukci složením z důvodů vyloučeni blokovánívlivem nezpůsobilosti sdružování spočívá na porovnáníkategorií instrukcí spíše než na porovnání specifickýchinstrukcí .
Jak ukázáno v různých výkresech a dále podrobněji po-psáno, vynález o názvu "Počítač pro převod jednotek slože-ných instrukčních souborů" je určen pro tok skalárních in-strukcí, které je třeba složit nebo seskupit dohromady předdobou dekódováni instrukce tak, že jsou již označeny aidentifikovány pro současné paralelní provedení příslušný-mi základními jednotkami. Poněvadž takové složení neměnícílový kód, mohou stávající programy docílit zlepšeni vý-konnosti, přičemž je dodržena slučitelnost s předchozímirealizovanými systémy.
Jednotka 20 pro složeni instrukce v obr. 1 přejímá tok 21 binárních skalárních instrukcí /včetně nebo bez dat v nich obsažených/ a selektivně seskupuje některé soused- ní skalární instrukce pro vytvoření kódovaných složených - 11 - instrukcí. Výsledný instrukční tok 22 proto kombinuje ska-lární instrukce nezpůsobilé pro paralelní provedeni a sklá-dá instrukce tvořené skupinami skalárních instrukciz kteréjsou způsobilé pro paralelní provedení. Když je nabídnutaskalární instrukce instrukční základní jednotce 24, jepředána příslušné funkční jednotce pro sériové provedeni.
Když je složená instrukce nabídnuta instrukční základníjednotce 24, je každá z jejich skalárních složek předánapříslušné funkční jednotce nebo sdružovací jednotce prosoučasné paralelní provedení. Typické funkční jednotky ob-sahuji,ale nejsou omezeny na aritmetickou a logickou jed-notku 26, 28, jednotku pro aritmetiku s pohyblivou čárkou30 a jednotku pro generováni paměťových adres 3 2. Přikladjednotky sdružující závislá data je poprán v souběžné při-hlášce ser. No. 07/504,910 o názvu "Technické vybavenipřístrojů sdružující závislá data" podané 4. 4. 1990.
Je třeba si uvědomit, že technika podle vynálezu jerozšiřována s úmyslem zjednodušit paralelní vydávání a pro-vedení instrukcí ve všech architekturách počítačů, kterézpracovávají v jednom cyklu vícenásobné instrukce /ačkolivurčité instrukce mohou vyžadovat více než jeden cyklus kprovedení/.
Jak patrno z obr. 2 vynález lze realizovat v provede-ní sekvenčního procesoru, kde každá funkční provozní jednot-ka zpracovává skalární instrukci /S/ nebo alternativně slo-ženou skalární instrukci /CS/. Jak patrno z výkresu instrukč-ní tok 33 obsahující sekvenční skalární a složené skalár-ní instrukce je opatřen řídicím označením /T/ přiřazenýmkaždé složené instrukci. Tak první skalární 34 může býtvykonána jedině funkční jednotkou A v cyklu 1; trojitěsložená instrukce 36 identifikovaná označením T3 může mítsvé tři složené skalární instrukce vykonány paralelně funkč-ními jednotkami A, C a D vcyklu 2; jiná složená instrukce38 identifikovaná označením T2 může mít svůj pár složenýchskalárních instrukcí vykonán paralelně funkčními jednotkamiA a B v cyklu 3; druhá skalární instrukce 40 může být vy-konána ojediněle funkční jednotkou C v cyklu 4; velká sku- pina složených instrukci 42 může mit své čtyři skalárníinstrukce vykonány paralelně funkčními jednotkami A-D vcyklu 5; a třetí skalární instrukce 44 lze vykonat jed-notlivě funkční jednotkou A v cyklu 6.
Je důležité si uvědomit, že vícenásobné složeni in-strukce jsou způsobilé pro paralelní zpracováni v určitýcharchitekturách počítacích systémů. Například vynález lzepotenciálně realizovat vybaveností mu Itiprocesoru jakukazuje obr. 3, kde složená instrukce zpracovávaná jakojednotka pro paralelní vyvoláváni je jednou ze základníchjednotek. Jak znázorněno na výkrese, tentýž instrukčnítok 33 mohl by být zpracováván pouze ve dvou cyklech jaknásleduje. V prvním cyklu základní jednotka CPU # 1 prová-dí první skalární instrukci 34; funkční jednotky z CPU íř 2provedou trojitou složenou instrukci 36; a funkční jednot-ky z CPU 3 provedou dvě složené skalární instrukce vesložené instrukci 38. Ve druhém cyklu základní jednotkaCPU#1 provede druhou skalární instrukci 40; funkční jed-notky z CPU # 2 provedou čtyři složené skalární instrukceve složené instrukci 42; a funkční jednotka z CPU 3 pro-vede třetí skalární instrukci 44. Příkladem architektury počítače, který je možno adap-tovat na zpracování složených instrukcí je IBM systém/370architektury úrovně instrukcí, ve kterém mohou být vydá-ny vícenásobné skalární instrukce k vykonání v každém stro-jovém cyklu. V tomto pojetí strojový cyklus odpovídá všemzřetězeným krokům nebo stupňům potřebným k provedení ska-lární instrukce. Skalárni irstrukce pracuje s operandy oobsahu jednoznačných parametrů. Když je skalární tok slo-žen, jsou selektivně seskupeny sousední skalární instrukceza účelem současného nebo paralelního provedení.
Soubory instrukcí pro různé architektury IBM systé- mu/370 jako systém/370 s rozšířenou architekturou /370-XA/ a systém/370 architektury operačních systémů /370=ESA/ 13 jsou dobře známy. Z tohoto hlediska doporučujeme publika-ci "Principy činnosti IBM systému/370"/zverejněno #GA22-7000-10 1987/, a "Principy činnosti, architekturaoperačních systémů IBM/370" /zveřejněno £ SA22-7200-01988/. Všeobecně zařízení pro skládání instrukce bude vy-hledávat třídy instrukcí, které lze vykonávat paralelněa bude zajištovat, že mezi členy složené instrukce ne-vznikne žádné vzájemné blokování, které by nebylo mož-no zvládnout technickými prostředky. Jsou-li nalezenyslučitelné posloupnosti instrukcí, je složená instrukcevytvořena. Při podrobnější specifikaci je možno soubor instrukcíSystému/370 roztřídit na kategorie instrukcí, které mohoubýt provedeny paralelně ve speciální architektuře systémupočítače. Instrukce v určitých z těchto kategorii lze kom-binovat nebo skládat s instrukcemi těchže kategorií nebos instrukcemi určitých jiných kategorií, aby byla vytvoře-na složená instrukce. Například část souboru instrukcíSystému/370 může být rozdělena do kategorií jak znázorněnov obr. 4. Rozumné zdůvodnění této kategorizace spočíváve funkčních požadavcích instrukcí Systému/370 a v použitíjeho technického vybavení pro typickou architekturu počí-tačového systému. Zbytek instrukci Systému/370 není spe-cificky uvažován pro skládáni v tomto příkladovém spoje-ni. To nezabraňuje jejich skládáni pomoci metod a technikypředloženého a dále popsaného vynálezu. Je známo, že struktury technického vybavení potřebné k provádění složenýchinstrukcí je možno běžně řídit horizontálními mikrokódy,které umožňují využít paralelnosti ve zbývajících instruk-cích, které nebyly vybrány pro složení ani nebyly obsaže-ny v kategoriích podle obr. 4, čímž je zvýšena výkonnost. 14
Jednou z nej běžněj š í ch postoupnosti v programechSystému/370 je provedeni instrukce -test s maskou TM nebosrovnávací formáty / R X/ - srovnej C , srovnej polovinu C H,srovnej logicky CL, srovnej logicky ihned CLI, srovnejlogicky test s maskou CLH, přičemž výsledku je použitok řízeni vykonáni instrukce typu - podmíněný skok BC/RX-formát/z podmíněný skok /RR-forma/z která ihned ná-sleduje. Výkonnost lze zlepšit paralelním provedeníminstrukci - srovnej a skok - a to bývá někdy dynamickyuděláno vysoko výkonnými instrukčními procesory. Někdyvznikají obtíže v rychlém identifikování všech různýchčlenů instrukci třídy -srovnej- a všech členů instrukcitřídy -skok- v typické architektuře během dekódovacíhoprocesu. Je to jeden z důvodů proč superskalárni strojeobvykle berou v uvahu pouze malý počet specifických ska-lárních instrukcí pro možné paralelní zpracování. Takovéomezené dynamické rozvrhováni založené pouze na srovnánív poslední minutě dvou specifických instrukcí je naopakpodle vynálezu odstraněno, protože analyzování všech čle-nů tříd je předem splněné včas z důvodů dodržení přiměře-ných pravidel pro skládání při tvorbě složené instrukce,kterou je nutno vykonat. Při dynamickém rozvrhováni jednotlivých instrukcivzniká velký problém po vyvolání programu jak patrno zobr. 4, který ukazuje, že dvoucestným složením padesáti-sedmi instrukci je vytvořena matrice 57 x 57 více než třitisíce možných kombinací. To je v ostrém protikladu smatrici 10x10 v obr. 17 pro tentýž počet instrukcí sezřetelem k možným kategoriím kombinaci, které jsou k dis-pozici podle předloženého vynálezu.
Mnoho tříd instrukci lze provést paralelně v závislos ti na tom, jak je navrženo technické vybaveni. Kromě shora popsaných složitelných párů - srovnávat a větvit -, je možno paralelně provést mnoho jiných složitelných kombinaci /viz obr. 17/, jako zaváděni programu /kategorie 7/ slože-né s instrukcemi formátu RR /kategorie 1/, větveni /kate-gorie 3-5/ složené se zaváděči adresou /kategorie 8/ apod. V některých případech sekvenčni příkaz ovlivni mož-nosti paralelního provedeni a tim určí, zda lze složitdvě sousední instrukce. Se zřetelem k tomu řádkové hlavič-ky 45 identifikují kategorii první instrukce slabikovéhotoku a sloupcové hlavičky 47 identifikuji kategorii nej-bližši instrukce, která následuje po první instrukci. Na-příklad -větvení /kategorie 3-5/ následována určitými -po-suvy/kategorie 2/~ jsou vždy složitelné 49, zatímco posuvy/kategorie 2/ následována - větvením /kategorie 3-5/ jsoujenom "někdy" složitelné 51.
Stav "někdy" identifikovaný jako "S" ve schématu naobr. 17 může být často změněn na "vždy" identifikovaný ja-ko "A" ve schématu přidáním dalších funkčních jednotek těchnického vybavení v uspořádání soustavy počítače. Vezmeme--li v úvahu například sestavu, která zajištuje dvoucestnésložení a která nemá sdružovací jednotku pro sčitání-po-souvání, ale místo toho má běžnou aritmetickou a logickoujednotku a samostatný přeřaďovač.Jiným i slovy zde neexis-tuje vzájemné blokováni sdružovacím technickým vybavenímpro zpracováni blokovaných instrukcí "sčítat-posun". Uva-žujne následující instrukční sled: AR R1, R2 SRL R3 po D2
Je jasné, že tento pár instrukcí je složitelný pro para-lelní provedení. V některých případech však nebude složi-telný vzhledem k neslučitelnému vzájemnému blokování, jakpatrno z následujícího instrukčního sledu: AR R1 , R 2 SRL Rl po D2
Tak schéma ukazuje, že kategorie 1 instrukce /AR/ násle-dovaná kategorií 2 instrukce /SRL/ je někdy složitelná 53. 16 Při existenci aritmetické a logické jednotky, která sdru-žuje určitá vzájemná blokováni, tak jako blokováni sčítat/posunout, jak ukázáno shora, může ve schématu na obr. 17"$" se změnit v "A". Podle toho pravidla pro složení mu-sí být pohotová, aby reagovala na všechny změny provede-né zvláštním uspořádáním soustavy počítače. Jako dodateč-ný příklad uvažujme instrukce obsažené v kategorii 1 slo-žené s instrukcemi téže kategorie v'následuj 1 cín instrukč-ním sledu: AR R1, R2 SR R3, R4
Tento sled je bez vzájemných blokováni náhodnými údaji aposkytuje následující výsledky, které obsahují dvě nezá-vislé instrukce Systému/370: R1 = R1+R2 R3 = R3-R4
Provedeni takového sledu by vyžadovalo dvě nezávislé a pa-ralelní dvě až jednu aritmetickou a logickou jednotku, na-vrženou podle architektury instrukční úrovně. Tím se rozu-mí, že tyto dvě instrukce mohou být seskupeny do tvaru slo-žené instrukce v uspořádání soustavy počítače, který mádvě takové aritmetické a logické jednotky. Tento příkladsložení skalárních instiukcí je možno zevšeobecnit navšechny páry instrukčních posloupnosti, které jsou prostyblokování závislých dat a také blokováni závislém na tech-nickém vybavení. V kterémkoli skutečném instrukčním procesoru existu-je horní mez pro počet jednotlivých instrukci, která mužeobsahovat složenou instrukci. Tato horní mez musí být spe-cificky začleněna do technického a/nebo programové jednotky,která tvoří složené instrukce tak, že složené instrukcenebudou obsahovat více jednotlivých instrukci /napříkladpárových skupin, trojitých skupin, skupin čtyř/ než jemaximální způsobilost podléhající prováděcímu technickémuvybavení. Tato horní mez je přísným důsledkem realizacetechnického vybavení ve zvláštní konfiguraci počítačové soustavy a neomezuje ani celkový počet instrukcí, kterémohou přijít v úvahu pro složeni,ani délkou okénka sku-piny v dané kódové posloupnosti, která má být analyzová-na pro složení.
Obecně platí, že čím větší délka okénka skupiny ana-lyzované pro složení, tím větší paralelnost, kterou lzedocílit vzhledem k výhodnějším složeným kombinacím. Ztohoto hlediska uvažujme postoupnost instrukcí v násle-dující tabulce í:
Tabulka 1
Xí * z jakákoliv s loži telná instrukce X2 ž II ir f I LOAD Rí, /X/ ž zaveď Rí z paměti umístění X ADD R3, Rí ž R 3 = R 3 + Rí SUB Rí, R2 z R1 = Rí - R 2 COMP Rí, R3 z porovnej Rí s R3 X3 z jakákoliv složitelná inst rukce X4 II II H
Je-li horní mez pro složení vložená do technickéhovybavení rovna dvěma /nejvýše, dvě instrukce lze provéstparalelně v jednom cyklu/, potom existuje více způsobůsložení této posloupnosti instrukci závislých na rozsahuprogramového vybavení pro skládání.
Kdyby rozsah složení byl roven čtyřem, potom progra-mové vybavení pro složení by bralo v úvahu společně /XI, X2, LOAD, ADD/ a pak vysunulo dopředu jednu instrukci vdobě, aby byla vzata v úvahu dohromady /X2, LOAD, ADD, SUB/a /LOAD, ADD, SUB, COMP/ a /ADD, SUB, COMP, X3/ a /SUB, COHP, X3, X4/, čímž je vytvořeno následující optimálnípárování jako uchazečů na složenou instrukci: / — XV /X2 LOAD/ /ADD SUB/ /COMP X3/ / X4— /
Toto optimálni párování podle vynálezu úplně odleh-čuje vzájemná blokováni mezi LOAD a ADD a mezi SUB a COMPZpřičemž poskytuje dodatečné možnosti XI složené s jejípředcházející instrukci a X4 složené s její následujícíinstrukci.
Na druhé straně superskalárni počítač, který dynamickypáruje instrukce do jeho instrukčního vydání logiky nazákladě dodržováni metody "první zařazen, první vybrán",by vytvářel pouze následující párováni jako kandidáty naparalelní provedeni: /X1 X2/ /LOAD ADD/ /SUB COHP/ /X3 X4/
Toto nepružné párování přivodí úplnou sanaci určitýchblokujících instrukcí a docíleno je pouze částečných úspě-chů paralelního zpracování. Vývojový diagram na obr. 13 podává vysvětleni různýchkroků učiněných z důvodů rozhodnutí, které ze sousedníchstávajících instrukci ve slabikovém toku jsou kategorienebo třídy, podle čehož jsou kvalifikovány k vytvořenispolečných skupin ve formě složené instrukce pro zvláštníuspořádání soustavy počítače.
Podle obr. 5 existuje mnoho možných míst v soustavěpočítače, kde složeni může nastat af v programovém nebotechnickém vybaveni. Každé má svoje výhody a nevýhody.
Jak v obr. 5 ukázáno, existuji různé stupně, kterými pro-gram typicky prochází od zdroje kódu až po skutečné pro-vedení. Během kompilační fáze je výchozí program přeložendo strojového kódu a uložen na disk 46. Během prováděcífáze je program z disku 46 přečten a zaveden do hlavní pa-měti 48 speciálního uspořádání soustavy počítače 50, kdejsou instrukce provedeny příslušnými instrukčními základní-mi jednotkami 52, 54, 56. Složeni může nastat kdekoliv vprůběhu této cesty. Obecně čím blížeji je skladač umístěn 19 u instrukční základní jednotky nebo centrální základní jed-notky CPU tím více se stává doba omezení naléhavější. Je-liski adač umístěn dále od centrální základní jednotky C PU,muže být zkoušeno více instrukci v rozměrnějším okénku in-strukčního toku, aby se určilo nejlepši seskupeni pro slo-ženi při vzrůstající pracovní výkonnosti. Takové brzkésložení však přináší více než jeden dopad na zbytek systé-mové konstrukce podmiňující další vývoj a zvýšené náklady.
Jedním z důležitých předmětů vynálezu je opatřenitechniky pro stávající programy psané ve vyšších progra-movacích jazycích nebo stávajících asemb 1 erových jazyko-vých programech, aby byly zpracovány programovým vybavením,které může identifikovat posloupnosti sousedních instruk-cí způsobilých k paralelnímu provedení jednotlivými funkč-ními j ednot kami. Vývojový diagram v obr. 6 ukazuje generováni programusady složených instrukcí z asemblerového jazykového progra-mu v závislosti na sadě zakázkových skládacích pravidel 58,které nepříznivě se odrážejí jak na architektuře systému,tak technickém vybavení. Aseiablerový jazykový program jepřipraven na vstup do programového skládacího zařízení 59,které tvoří program složených instrukcí. Následující blo-ky instrukcí o předem stanovené délce jsou analyzoványprogramovým skládacím zařízením 59. Délka každého bloku60, ážz Šít ve slabikovém toku, která obsahuje skupinuinstrukcí, jež mají být dohromady složeny, je závislá nasložitosti zařízeni pro skládání.
Jak ukazuje obr. 6 toto speciální skládací zařízenije navrženo pro dvoucestné složeni instrukcí o počtu "m"a pevné délce v každém bloku. Primárním prvním krokem jestanovení zda první a druhá instrukce tvoří složitelnýpár, potom druhá a třetí tvoři složitelný pár, potom třetía čtvrtá tvoří složitelný pár a tak dále až do konce bloku. 20
Po identifikaci různých možných složitelných párůC1-C5 dalším velmi žádoucím krokem je určeni optimálníhovýběru složených instrukcí tvarovaných sousedními skalár-ními instrukcemi pro paralelní provedení. Na příkladu jeukázáno možné složení instrukcí z následujících různýchposloupností /nepředpokládá se větvení/: 11, C 2, 13,15,C3, C 5, 11 0; 11,C 2, 14, 15,16,C4, 19, 11 0; C1,I3, 14,I5,C3,C5,110; C1,13,14,15,16,C4,19,I10. Při základnímuspořádání speciálního technického vybaveni může zařízenípro složení vybrat preferovanou posloupnost složených in-strukcí a použit označeni nebo identifikační bity proidentifikaci optimální posloupnosti složených instrukci.
Neexistuje-li optimální posloupnost, mohou být iden-tifikovány všechny složitelné sousední skalární instrukcetak, že větvení k cíli umístěné mezi různými složenýmiinstrukcemi může využit kterýkoliv ze složených párů, sekterými se setká /viz obr. 14/. Kde jsou k dispozici více-násobné skládací jednotky je možno současně složit více-násobné následující bloky v toku instrukcí.
Specifická konstrukce programového skládacího zaříze-ní nebude dále zde probírána, protože podrobnosti jsouspecifické pro danou architekturu instrukčních sad a jsouzákladem realizace. Ačkoliv konstrukce takových složenýchprogramů je poněkud podobná koncepčně moderním kompiláto-rům, které vykonávají rozvrhováni instrukcí a jiné optima-lizace spočívající na specifických strojových architektu-rách, jsou použitá kriteria k dokončeni takových složenípodle tohoto vynálezu jednoznačná, jak nejlépe ukazujevývojové schéma na obr. 13. V obou případech pro daný vstupni program a popis instrukční sady a také architekturytechnického vybavení /to je strukturální hlediska prorealizaci/ je vytvořen výstupní program. V případě moderníhokompilátoru je na výstupu optimální nová posloupnost zestávajících instrukcí. V případě vynálezu výstupem je sériesložených instrukcí,z nichž každá je tvarována skupinou 21 sousedních skalárních Instrukci způsobilých paralelníhoprovedeni se složenými instrukcemi smíchanými s nes lož i -telnými skalárními instrukcemi a sjpot řebnými řídicími bi-ty k provedeni složených instrukci současně jako část vý-stupu.
Snadnější je samozřejmě předběžné zpracováni instrukč-ního toku za účelem vytvořeni složených instrukci, jestli-že existuji již známé referenční body pro označeni, kdeinstrukce začínají. Referenční bod jak je dále použitoznamená nějaké označené pole nebo jinou indikaci, kteráposkytuje informaci o umístěni instrukčních mezi. V mnohýchpočítačových systémech takový referenční bod je výhradněznám pouze z doby kompilace kompilátorem a jenom ze základ-ní jednotky při vyvoláváni instrukci. Takový referenčníbod není znám mezi dobou kompilace a vyvoláním instrukce,pokud je přijmuto speciální schéma referenčního značení.
Když je po době kompilace složeni hotovo, kompilátormůže označit referenčními značkami /viz obr. 11/, kteréslabiky obsahují první slabiku instrukce a které obsahujídata. Tato zvláštní informace přispívá k mnohem účinnější-mu složeni, ježto jsou známa přesná umístění instrukce.Samozřejmě kompilátor může identifikovat instrukce a roz-lišovat mezi instrukcemi a daty jinými způsoby za účelemposkytnuti specifické informace skládacímu zařízeni ozna-čením instrukčních mezí.
Je-li taková informace o instrukční mezi známa, po-kračuje generováni příslušných identifikačních bitů prosložení přímým postupem dopředu na základě pravidel prosložení stanovených pro speciální architekturu a uspořá-dání soustavy technického vybavení /viz obr. 8/. Neni-litaková informace o instrukční mezi známa a instrukce jsouproměnlivé délky, nastává mnohem složitější problém/viz obr. 9 a 16/. Tyto obrázky náhodou spočívají napreferovaném kódovacím schéma, které je podrobněji popsáno 22 v tabulce 2A dole, kde při dvoucestném složeni je k dispo-zici označeni bitem ”1”, je-li instrukce složena s dalšíinstrukci a označeni bitem "0", není-li složena s dalšíinstrukcí. Řídicí bity v řídicím poli přidané zařízením pro slo-žení obsahuji informaci, týkající se provedeni složenýchinstrukcí a mohou obsahovat tak malou nebo velkou informa-ci, jak je pokládáno za účelné pro zvláštní realizaci. Vobr. 12 je uveden přiklad osmibitového řídicího pole. Vnej jednodušším spojení v jeden celek je však žádán jenprvní řídicí bit pro označení začátku složené instrukce.Ostatní řídicí bity poskytuji dodatečnou volitelnou infor-maci týkající se provedení instrukcí. V alternativním kódovacím vzoru pro složené instrukcepoužitelném jak pro obě dvoucestná složeni, tak pro slože-ni velké skupiny, je stanoven první řídicí bit "1" prooznačeni, že odpovídající instrukce znamená začátek slože-né instrukce. Všechny ostatní členy složené instrukce budoumít svůj první řídicí bit stanoven "0". Nebude možno náho-dou kombinovat danou instrukci s ostatními instrukcemi,takže taková daná instrukce se objeví jako složená instruk-ce o délce jedna. To znamená, že první řídicí bit bude sta-noven "1", ale první řídicí bit následující instrukce budestanoven také "1". Podle tohoto alternativního kódovacíhoschéma budou dekódovací technické prostředky schopny zjistitkolik instrukcí obsahuje složená instrukce kontrolou všechidentifikačních bitů pro řady skalárních instrukci spíšenež toliko kontrolováním identifikačního bitu na začátkusložené instrukce jako v preferovaném kódovacím schématuuvedeném dole v tabulkách 2A-2C. Vývojový diagram v obr. 7 ukazuje typickou realizaci provedeni programu sady složených instrukcí, který je ge- nerován technickými prostředky preprocesoru 66 nebo progra- 23 mového proprocesoru 67. Slabikový tok složených instrukcivstupuje do rychlé vyrovnávací paměti 68 složených instrukcí, která slouží jako ukládaci vyrovnávací pamět poskytu-jící rychlý přistup ke složeným instrukcím. Výdej složenéinstrukce 69 vyvolá složené instrukce z rychlé vyrovnávacípaměti 68 a vyšle její jednotlivé složené instrukce dopříslušných funkčních jednotek k paralelnímu provedeni.
Je třeba zdůraznit, že jednotky /C i EU/ 71 k provede-ní složených instrukci, takové jako aritmetické a logickéjednotky ALUs v soustavě počítače složených instrukcí,jsou schopny provádět buó skalární instrukce jednu po dru-hé nebo alternativně složené skalární instrukce paralelněs ostatními složenými skalárními instrukcemi. Takové para-lelní provedeni může tedy být uděláno v různých typechprováděcích jednotek tak jako ALU * s, jednotek 75 s pohyblivou řádovou čárkou /FPZ, jednotek 75 pro generování pale-tových adres /AU/ nebo vícenásobně v jednotkách téhož typu/ F P1, FP 2, atd./ v souladu s architekturou počítače a uspořádáním specifického systému počítače. Konfigurace technických prostředků, kterými lze realizovat předložený vynálezjsou tedy dostupné až do vlastně neomezeného počtu prováděcích jednotek z důvodu dosažení maximální výkonnosti připaralelním zpracování. Kombinováním několika stávajícíchinstrukci do jediné složené instrukce dovoluje jedné nebovíce jednotkám pro zpracování instrukcí v soustavě počíta-če účinně dekódovat a provést paralelně tyto složené stá-vající instrukce bez zpožděni, které vzniká při běžnémparalelním zpracováni v soustavách počítače. V nejjednoduššich příkladových kódovacích schématechtéto přihlášky je přidána minimální informace ke složenído instrukčního toku jako jeden bit pro každé dvě slabikytextu /instrukce a data/. Ke každé instrukci ve složenémslabikovém toku lze obecně přidat označení obsahující ří-dicí informaci, což znamená ke každé nesložené skalární 24 instrukci právě tak jako ke každé složené skalární instrukci včetně páru, trojic, nebo větších složených skupin.Identifikační bity zde dále použité se týkají té částioznačení, které je specificky použito pro identifikacia roztříděni těch složených skalárních instrukcí tvoří-cích složenou skupinu ze zbytku nesložených skalárníchinstrukcí. Takové nesložené skalární instrukce zůstanouve složeném instrukčním programu a když jsou vyvolányjsou provedeny jednotlivě. V soustavě se všemi čtyřsLabikovými instrukcemi srov-nanými do čtyřslabikových mezi je přiřazeno jedno označe-ni každému čtyřslabičnému textu. Podobně, mohou-li býtsrovnány instrukce libovolně, je zapotřebí označení každéslabiky textu.
Ve znázorněném spojení v jeden celek jsou všechnyinstrukce Systému/370 zarovnány do mezí na půlslova /dvěslabiky/ s délkou buď dvě nebo čtyři nebo šest slabik,přičemž pro každé půlslovo je třeba označení s jednímidentifikačním bitem. Na příkladu malého seskupení slože-ných párů sousedních instrukcí označuje identifikačníbit "1", že instrukce začínající uvažovanou slabikou jesložena s následující instrukcí, zatímco "O” naznačuje,že instrukce začínající uvažovanou slabikou není složena.Identifikační bit přirazený půlslovům, které neobsahujíprvní slabiku instrukce je ignorován. Identifikační bitpro první slabiku druhé instrukce ve složeném páru je ta-ké ignorován. /V některých situacích větvení však tytoidentifikační bity nejsou ignorovány/. Výsledkem tohotokódovacího postupu pro identifikační bity je, že v ne j -jednodušším případě dvoucestného složení, je třeba jenomjeden bit informace pro základní jednotku během činnostipro identifikaci složené instrukce. 25
Kde je možno seskupit více než dvě skalární instruk-ce pro vytvořeni složené instrukce, mohou být požadoványdodatečné identifikační bity pro opatření adekvátní řídi-cí informace. Z důvodů sníženi počtu bitů požadovaných prominimální řídicí informaci, existuje však stále jiný al-ternativní formát k pokračování ve sledování složené in-formace. Například je možno i při skládáni velké skupinydocílit jeden bit pro instrukci při následujícím kódová-ní: hodnota "1" znamená složeni s následující instrukcía hodnota "0" znamená nesložit s následující instrukcí.Složená instrukce tvořená skupinou čtyř jednotlivých in-strukcí bude mít sled identifikačních bitů /1,1,1,0/ prosložení. Jako při provedení jiných zde popsaných složenýchinstrukci, jsou složené identifikační bity pro složenípřidružené půlslovúm, které nejsou instrukcemi a proto ne-mají žádné operační kódy, ignorovány v době provedeni.
Podle preferovaného dále popsaného kódovacího schémaminimální počet identifikačních bitů potřebný pro poskyt-nutí další informace udávající specifický počet skutečněsložených skalárních instrukci je logaritmus při základu2 /zaokrouhleno nahoru na nejbližší celé číslo/ maximální-ho počtu skalárních instrukci, které lze seskupit k vy-tvořeni složené instrukce. Například, je-li maximum dvě,pak je třeba jeden identifikační bit pro každou složenouinstrukci. Je-li maximum tři nebo čtyři, potom je zapotře-bí dvou identifikačních bitů pro každou složenou instruk-ci. Je-li maximum pět, šest, sedm nebo osm, potom je za-potřebí třech identifikačních bitů pro každou složenouinstrukci. Toto kódovací schéma je uvedeno dále v tabulkách2A, 28, 2C: 2ó
Tabulka 2A /maximum dvě/
Identifikační bity Zakódovaný význam Celkem # s loženo 0 Tato instrukce není slo-žena s následující instrukci žádné 1 Tato instrukce je slože-na s jednou následující instrukci dvě Tabulka 20 /maximum čtyři/ Identifikační bity Zakódovaný význam Celkem # s loženo 00 Tato instrukce není slože-na s následující instrukcí žádné 01 Tato instrukce je složena s jednou následující inst rukcí dvě 10 Tato instrukce je složenase dvěma následujícími instrukcemi tri 11 Tato instrukce je složena čtyři se třemi následujícímiinstrukcemi 27
Tabulka 2C /maximum osm/
Identifikační bity Zakódovaný význam Celkem s loženo 000 Tato instrukce není složena s následující instrukcí žádné 001 Tato instrukce je složena s následující instrukci dvě 010 Tato instrukce je složena se dvěma následujícími instrukcemi tri 011 Tato instrukce je složena se třemi následujícími instrukcemi čtyři 1 00 Tato instrukce je složena se čtyřmi následujícími instrukcemi pět 101 Tato instrukce je složena s pěti následujícími instrukcemi šest 110 Tato instrukce je složenase šesti následujícími instrukcemi sedm 111 Tato instrukce je složena se sedmi následujícími instrukcemi osm
Proto je z toho vyvozeno, že každé půlslovo potřebu- je označeni, ale podle tohoto preferovaného schéma základ- ní jednotka ignoruje všechny až na označení první instrukce - 28 - v prováděném instrukčním toku. Jinými slovy je zkoušenaslabika za účelem posouzeni zda je to složená instrukcetestováním, jejich identifikačních bitů. Není-li to začá-tek složené instrukce, jsou její identifikační bity nula.Je-li slabika začátkem složené instrukce obsahující dvěskalární instrukce, identifikační bity jsou ”1" pro prvniinstrukci a "0" pro druhou instrukci. Je-li slabika začát-kem složené instrukce obsahující tri skalární instrukce,identifikační bity jsou "2" pro první instrukci a "1" prodruhou instrukci a "0” pro třetí instrukci. Jinými slovyidentifikační bity identifikuji pro každé půlslovo zdatato zvláštní slabika je nebo není začátkem složené instruk·ce, zatímco v téže době oznamují počet instrukci, kterétvoři složenou skupinu.
Tyto příkladové metody kódováni složených instrukcipředpokládají, že tři instrukce jsou složeny k vytvořenitrojité skupiny a druhá s třetí instrukcí jsou také slože-ny k vytvořeni párové skupiny. Jinými slovy, jestliže sevyskytne v trojité skupině větvení k druhé instrukci, ozná-mí identifikační bit "1" pro druhou instrukci, že druháa třetí instrukce budou provedeny jako složený pár para-lelně, i kdyby první instrukce v trojité skupině nebylaprovedena.
Vynález ovšem není omezen na uvedené speciální kódo-vací preferované schéma. Různá jiná kódovací pravidla takjako dříve popsané alternativní kódovací schéma jsou mož-ná v oblasti a podle výkladu vynálezu.
Odborníkům z tohoto oboru je zřejmé, že předloženývynález požaduje jenom jedno složení instrukčního tokupro speciální uspořádání počítačové soustavy, načež jaké-koliv vyvolání složených instrukci způsobí také vyvolánis tím slučitelných identifikačních bitů. Následkem tohoodpadá neúčinné určováni v poslední minutě a výběr určitých 29 skalárních instrukci pro paralelní provedeni, k čemuž do-cház-i opakovaně při každém vyvoláni stejných nebo odliš-ných instrukci pro provedeni v tak zvaném super skalárnímstroj i.
Vzdor všem výhodám skládáni binárního instrukčníhotoku, stává se tento postup obtížným při určitých architek-turách počítače pokud není vyvinuta technika k určovániinstrukčních mezí ve slabikovém řetězci. Jsou-li povolenyproměnlivé délky instrukcí, je takové určování složité aještě složitější při vzájemném smíšení dat a instrukcí ne-bo je-li dovoleno upravovat přímo instrukční tok. V doběprovedení musí ovšem instrukční meze být známy s ohledemna správné provedeni. Jakmile je však složení dostatečněbrzo hotovo před provedením instrukce, byla vyvinuta jed-noznačná technika pro složeni instrukci bez znalosti, kdeinstrukce začínají a bez znalosti, které slabiky jsou da-ta. Tato technika je dále povšechně popsána a lze ji po-užít k tvorbě složených instrukci vytvořených ze soused-ních párů skalárních instrukcí právě tak jako k tvorbě slo-žených instrukcí vytvořených z větších skupin skalárníchinstrukcí. Tato technika je použitelná pro všechny instrukční soubory různých běžných typů architektur, včetně čítačepřemístěných instrukci RISC, v jehož architekturách in-strukce jsou obvykle konstantní délky a nej sou smíšeny sdaty. Další podrobnosti této techniky skládáni jsou popsá-ny v souběžné přihlášce ser. No. 07/519,382 s názvem"Universální technika pro složeni instrukčních úrovniparalelních procesorů" podaná 4«. 5. 1 990. Všeobecně vzato, technika složení je k dispozici prosloženi dvou nebo více skalárních instrukcí z instrukčníhotoku bez znalosti bodu rozběhu nebo délky každé jednotlivéinstrukce. Typické instrukce již obsahují operační kód vpředem určeném místě pole, které identifikuje instrukcia její délku. Ty sousední instrukce, které se kvalifikujipro paralelní provedení ve speciální konfiguraci počítačové 30 soustavy jsou opatřeny příslušnými značkami pro oznámeni,že jsou uchazeči na složení. V IBM Systému/370, v jehožarchitektuře jsou instrukce bud dvě, čtyři nebo šest sla-bik dlouhé, předpokládá se, že polohy pole operačníhokódu jsou založeny na odhadnuté instrukční délce kódu.Hodnota každého označení zatočená na předpokládanémoperačním kódu je zaznamenána a instrukční délka kódu vpředpokládaném operačnim kódu je použita k umístěni celéposloupnosti možných instrukcí. Jakmile jsou stanovenyinstrukční meze, jsou použity odpovídající správné hodno-ty označeni k identifikaci začátku složené instrukce aostatní nesprávně generovaná označeni jsou ignorována.
Tato jednoznačná technika složení je znázorněna jakopřiklad na výkresech obr. 8-9 a 14-15, kde jsou definová-na pravidla složení určující, že všechny instrukce o dél-ce dvou slabik nebo čtyř slabik jsou jedna s druhou složi-telné /to znamená, že dvouslabičná instrukce je schopnáparalelního provedeni v této speciální konfiguraci počí-tače s jinou dvous l abičnou nebo jinou čtyřs l abičnou in-strukcí/. Příkladná pravidla pro složení dále ukládají,že všechny instrukce dlouhé šest slabik nejsou vůbec slo-žitelná /to znamená, že v této speciální konfiguraci po-čítače šestislabičná instrukce je způsobilá sama o sobějediného provedeni/. Vynález neni samozřejmě omezen na ta-to pravidla pro příkladné složeni, ale je použitelný projakýkoliv soubor pravidel na složeni, která definuji kri-téria pro paralelní provedení stávajících instrukcí vespeciální konfiguraci pro danou architekturu počítače.
Sada instrukcí použitá jako příklad složeni v těchtotechnikách podle vynálezu je brána z architektury Systému/370^. Přezkoušením operačního kódu každé instrukce lzeurčit typ a délku každé instrukce a potom je generovánořídicí označení obsahující identifikační bity pro tutospecifickou instrukci jak dále podrobněji popsáno. Před- 31
Ložený vynález není ovšem omezen na jakoukoliv specific-kou architekturu nebo instrukční soubor a shora zmíněnápravidla jsou jenom příležitostným příkladem.
Preferované kódovací schéma slož^ených instrukcí bylojiž znázorněno dříve v celkovém přehledu na tabulkách2A - 2C. V prvém případě s pevnou délkou instrukcí bez smíšenýchdat a se známým umístěním referenčního bodu operačníhokódu, může složení pokračovat v souladu s aplikovatelnýmipravidly pro tuto speciální konfiguraci počítače. Poněvadžpole reservované pro operační kód také obsahuje délku in-strukce je běžně určena posloupnost skalárních instrukci,přičemž každá instrukce posloupnosti může se považovat zauchazeče pro paralelní provedeni s následující instrukci.První kódovaná hodnota v řídicím označeni oznamuje, žeinstrukce není složitelná s další instrukcí, zatímco druhá kódovaná hodnota řídicího označeni oznamuje, žeinstrukce je složitelná pro paralelní provedení s dalšíinstrukcí . V druhém případě instrukcí s proměnlivou délkou bezsmíšených dat a se známým umístěním referenčního bodu prooperační kód a také pro kód délky instrukce /který je vSystému/370 obsažen jako část operačního kódu/, složenimůže postupovat běžným způsobem. Operační kódy jak patr-no z obr. 8 oznamuji instrukční posloupnost 7Q jak násle-duje: první instrukce je dlouhá 6 slabik, druhá a třetíkaždá délky 2 slabik, čtvrtá je dlouhá 4 slabiky, pátá jedlouhá 2 slabiky, šestá je dlouhá 6 slabik a sedmá a osmákaždá délky 2 slabik. C-vektor 72 v obr. 8 ukazuje hodnoty identifikačníchbitů /na výkresech zvaných bity složení/ pro zvláštní po-sloupnost 70 instrukcí kde referenční bod oznamuje, že je 32 znám start první instrukce. Na základě hodnot těchto iden-tifikačních bitů druhá a třetí instrukce tvoří složený párjak označuje "V v identifikačním bitu pro druhou instruk-ci. Čtvrtá a pátá instrukce tvoři jiný složený pár jakoznačuje "1’* v identifikačním bitu čtvrté instrukce. Sed-má a osmá instrukce také tvoří složený pár jak označuje"1" identifikačního bitu pro sedmou instrukci. C-vektor 72 v obr. 8 je poměrně snadno generován,neboř neobsahuje žádné datové slabiky smíšené s instrukčními slabikami a instrukce jsou všechny stejné délky o zná-mých mezích.
Jiná situace nastává ve třetím případě, kde instrukcejsou smíšeny s neinstrukcemi a referenční bod poskytuje stále oznámeni začátku instrukce. Základní dia-gram v obr. 11 ukazuje jeden způsob značení instrukčníhoreferenčního bodu, kde každé půlslovo bylo označeno re-ferenčním označením pro indikaci, že obsahuje první slabi-ku instrukce nebo ji neobsahuje. Může tomu tak být jak uinstrukci s pevnou tak proměnlivou délkou. Stanovením re-ferenčního bodu je nezbytné ohodnotit část dat slabikové-ho toku pro možné složeni. Jednotka pro složeni podle tohomůže přeskočit a ignorovat všechny slabiky neinstrukční.
Mnohem složitější situace vzniká kde slabikový tokobsahuje instrukce proměnlivé délky /bez dat/, není všakznámo, kde začíná první instrukce. Poněvadž maximálnídélka instrukce je šest slabik a poněvadž instrukce jsouseřazeny do dvous l abikových mezi, existuji tři možnéstartovací body pro první instrukci toku. Technika podletoho dává na vybranou všechny možné startovací body proprvní instrukci v textu slabikového toku 79 jak patrnoz obr. 9.
Posloupnost i předpokládá, že první instrukce zahaju- je první slabikou a postupuje se složením dopředu podle 33 předpokladu. V tomto příkladovém spojeni v jeden celek dél-ka pole je také rozhodující pro hodnotu C-vektoru každémožné instrukce. Proto C-vektor 74 má jenom pro posloupnosti hodnotu "1" pro první instrukci možného složeného párutvořenou kombinacemi 2-sLabikových a 4-sLabikových instruk-c i.
Posloupnost 2 předpokládá, že první instrukce zaha-juje třetí slabikou /začátek druhého půlstova/ a postupujedopředu podle tohoto předpokladu. Hodnota délky pole protřetí slabiku je 2 oznamující, že další instrukce začínápátou slabikou. Procházením vpřed každou možnou instrukcizaloženou na délce pole předchozí instrukce, je celý poten-ciál instrukcí posloupnosti 2 generován podle možnýchidentifikačních bitů jak patrno z C-vektoru 76.
Posloupnost 3 předpokládá, že první instrukce začínápátou slabikou /počátek třetího půlslova/ a pokračuje jakpředesláno. Hodnota v délce pole pro pátou slabiku je 4znamenající, že příští instrukce začíná devátou slabikou.Pokračováním vpřed každou možnou instrukcí založenou nahodnotě délky pole předchozí instrukce, celý potenciálinstrukci posloupnosti 3 je generován podle možných iden-tifikačních bitů jak ukazuje C-vektor 78. V některých případech uvedeno tři posloupnosti poten-ciálních instrukcí se sbíhají do jediné posloupnosti. Vobr. 9 je věnována pozornost uvedeným třem posloupnostem,které se sbíhají do mezi instrukce osmé slabiky na konci80. Také je poznamenáno, že začínají-li další posloupnostina konci šesté, osmé a desáté slabiky, sbíhají se takérychle. Postoupnosti 2 a 3 při sbíháni do mezí instrukcena konci 82 čtvrté slabiky jsou mimo fázi při skládání aždo konce šestnácté slabiky. Jinými slovy tyto dvě posloup-nosti berou v úvahu různé páry instrukci založené na stej-né posloupnosti instrukci. Poněvadž sedmnáctá slabika za- 34 činá nes lož itelnou instrukci v 84, je mimo fázová sbíha-vost ukončena.
Nevznikne-li platná sbíhavost, je třeba, aby všechnytři možné posloupnosti instrukci pokračovaly do konceokénka. Kde však dojde k platné sbíhavosti a je zjištěna,sdruží se počet posloupnosti ze tří dock/ou /jedna z iden-tických posloupnosti se stane nezpůsobilá provozu/ a v ně-kterých případech ze dvou do jedné. Před sbíhavostí jsou tedy určeny pokusné meze instruk-ce pro každou možnou instrukční posloupnost a přidělenyidentifikační bity pro každou takovou instrukci označujícíumístěni potenciálních složených instrukci. Z obr. 9 jezřejmé, že tato technika generuje tři samostatné identi-fikační bity pro každé dvě slabiky textu. Za účelem vy-tvoření shody s předběžným zpracováním v případech A-D,je žádoucí zredukování tří možných posloupnosti do jedinéposloupnosti s identifikačními bity, kde je přidělen pou-ze jeden bit každému půlslovu. Poněvadž je zapotřebí jenjediná informace zda je běžná instrukce stožens s následu-jící instrukci, mohou být tři bity logicky čteny jako "0"k vytvoření jediné posloupnosti v CC-vektoru 86.
Pro účely paralelního provedení jsou sdružené identi-fikační bity sdruženého CC-vektoru rovnocenné jednotlivýmC-vektorúm jednotlivých tři posloupnosti 1-3. Jinými slovysdružené identifikační bity CC-vektoru umožňují kterékolivmožné posloupnosti správné paralelní provedeni složenýchinstrukci nebo jednotlivých nesložených instrukci. Sdruže-né identifikační bity také přispívají ke správnému větve-ní. Vznikne-li například větev na začátku deváté slabiky88, potom devátá slabika musí zahájit instrukci. Jinak vprogramu je chyba. Identifikační bit "1" přidružený k de-váté slabice je použit ke korekci paralelního provedení ta-kové instrukce s její příští postupující instrukci. 35 Různé kroky v metodě pro složení znázorněné na obr. 9jak shora popsáno jsou zobrazeny v obr. 16, který sám osobě přispívá k vysvětlení.
Nej lepši dobou pro poskytnutí informace referenčnímbodem pro instrukční meze je doba kompilace. Jak patrno zobr. 11 referenční označeni 1_01 mohlo by být připojeno vdobě kompilace k identifikaci zahájení každé instrukce. Tím je umožněno zařízeni pro složení postupovat zjednoduše-nou technikou ve shora zmíněném prvním, druhém a třetímpřípadě jak již dříve uvedeno. Kompilátor by ovšem mohlidentifikovat instrukční meze a rozlišovat mezi instrukce-mi a daty jinými způsoby z důvodu zjednodušení práce jed-notky pro složení a vyhnuti se komplikacím techniky tako-vé jak znázorněno na obr. 9.
Obr. 10 znázorňuje vývojový diagram možné realizaceskládající jednotky pro zpracování instrukčního toku, jakpatrno z obr. 9. Vícenásobný počet skládacích jednotek 204,206, 2tí§ by mohl být z důvodujúč i nnos t i tak velký jako jepočet půlslov v textu vyrovnávací paměti. Tři skládajícíjednotky v této verzi by začínaly zpracovávat posloupnostipříslušné první, třetí a páté slabiky. Po ukončeni možnéinstrukční posloupnosti, každá skládající jednotka zahájízkoušeni dalšího možného sledu přeloženého do šesti sla-bik z jejího předchozího sledu. Každá skládající jednotkatvoří složené identifikační bity /hodnoty C-vektoru/ prokaždé púlslovo textu. Tři posloupnosti ze tří skládajícíchjednotek jsou přečteny 110 a výsledné sdružené identifikač-ní bity /hodnoty CC-vektoru/ jsou uloženy do paměti a při-řazeny jejich odpovídajícím textovým slabikám.
Prospěšnou výhodou poskytovanou sdruženými identifi-kačními bity CC-vektoru je tvoření sledu vícenásobně plat-ných složených bitů založených na tom, která instrukce jeadresována cílem větvení. Jak nejlépe patrno z obr. 14-15 36 je možno z téhož slabikového toku složené instrukce růz-ně tvarovat.
Obr. 14 znázorňuje možné kombinace složených instrukcikdyž konfigurace počítače poskytuje paralelní vydáni a pro-vedení ne více než dvou instrukci. Kde je instrukční tok90 se složenými instrukcemi zpracován do jednoho normál-ního sledu, bude složená instrukce I vydána k paralelní-mu provedeni založenému na dekódováni identifikačního bituprvní slabiky CC-vektoru 92. Vyskytne-li se však větev kpáté slabice, bude vydána složená instrukce II k paralel-nímu provedení založená na dekódování identifikačního bitupro pátou slabiku.
Podobně normální sekvenční zpracováni jiného složené-ho 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é instrukci jsou přitom prováděny paralelně/. Větve-ní ve třetí slabice složeného slabikového toku má za násle-dek sekvenční provádění složených instrukcí V a VII, a in-strukce začínající patnáctou slabikou /tvoři druhou částsložené instrukce VIII/ bude vydána a provedena jednotlivě,přičemž vše spočívá na identifikačních bitech v CC-vekto-ru 96. Větveni v sedmé slabice má za následek sekvenční pro-vádění ve složených instrukcích VI a VIII, a větvení v jedenácté slabice má za následek sekvenční větveni 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 tva-rována druhou částí složené instrukce VI a první části slo-žené instrukce VIII/.
Tak jsou zanedbány identifikační bity "1" v CC-vekto- ru 96 pro složené instrukce IV, VI a VIII, když je provádě- na některá ze složených instrukci V nebo VII. Alternativně 37 jsou zanedbány identifikační bity "I" v CC-vektoru 96 prosložené instrukce V a VII, když je prováděna kterákolivze složených instrukci IV, VI nebo VIII. V obr. 15 jsou znázorněny možné kombinace složenýchinstrukci, když uspořádáni počítače poskytuje paralelnívydávání a prováděni až do tři instrukcí. Kde instrukčnítok 98 obsahující složené instrukce je zpracováván do nor-mální posloupnosti, budou provedeny složené instrukce X/trojitá skupina/ a XIII /párová skupina/. Větveni v jede-nácté slabice naopak má za následek provedení složené in-strukce XI /trojitá skupina/, a větvení ve třinácté slabi-ce má za následek provedení složené instrukce XII /odlišnát roj itá skupina/.
Bity "2” identifikátoru v CC-vektoru 99 pro složenéinstrukce XI a XII jsou zanedbány, když jsou provedenysložené instrukce X a XIII. Na druhé straně, když je prove-dena složená instrukce XI, jsou zanedbány bity identifiká-toru pro ostatní tři složené instrukce X, XII, XII. Podob-ně, když je provedena složená instrukce XII, jsou zanedbá-ny bity identifikátoru pro ostatní tri složeno instrukceX, XI, XIII.
Existuje mnoho možných konstrukci jednotky pro slože-ní instrukce závisející na jejím umístěni a znalosti tex-tových obsahů. V nejjednodušší situaci bylo by žádoucí,aby kompilátor ukazoval pomoci označení, které slabikyobsahují první slabiku instrukce a které obsahují data.
Tato zvláštní informace má za následek mnohem účinnějšíjednotku pro složení, nebot jsou známa přesná umístěníinstrukce /viz obr. 13/. Znamená to, že složení lze vždyprovádět jako v situacích případu C za účelem generovániC-vektoru identifikačních bitů pro každou složenou instruk-ci /viz obr. 8/, Kompilátor mohl by tak přidat jinou infor-maci jako předpověď statického větvení nebo dokonce směr-nice do jednotky pro složení. 38
Pro rozlišení dat od instrukci lze použít jiných po-stupů kde instrukční tok má být složen je uložen do pamě-ti. Například jsou-li části dat řídké, vyžadoval by jednoduchý seznam adres obsahující data méně místa než označe-ni. Takové kombinace technických a programových prostřed-ků pro složení skýtají mnoho variant pro účinné vytvářenisložených instrukci.
Zatímco byla popsána příkladná preferovaná spojení vjeden celek podle vynálezu, bude na odbornících v tétooblasti techniky, aby posoudili různé modifikace a změny,které lze odvodit z myšlenky a obsahu vynálezu jak jedefinován v následujících nárocích.
Claims (5)
- ♦«XMí-Ví... - 39 - PATENTOVÉ zfřv-xCce.n/ cíeA« 1 . |TeTeá?\^k~·"deci lení—ρ-a-ro l o ln para letního—provedeni N Á R 0<ii ch instrukci—ve- spéci álni—konfiguraci—systému—k-a a při dot> vyznačuj lei se tím, že obsahuje přidělovániurčitých stávajících instrukci do vícenásobných katego-riíz porovnání kategorii sousedních stávajících instrukciv instrukčním toku k rozhodnutí zda jsou sousední stávají-cí instrukce způsobilé paralelního provedení ve speciál-ní konfiguraci systému ke zpracováni dat a identifikovánípomocí ukazatele složení těch sousedních stávajících in-strukcí, které jsou pomocí porovnávacích kroků uznány zazpůsobilé paralelního provedení. ~í- U , 2. í'4-e4-e-d-ei p o d l e nároku 1dělovací a porovnávací krokystávající instrukce vyvolány , vyznačující se tímz žejsou vykonány dříve, nežk proveden í. př i -jsou 3. fAe-t-oete/pod l e nároku í nebo 2, vyznačující se tím,že přidělovací krok obsahuje přidělení určitých instrukcído nejméně jedné kategorie tak, že zmíněný porovnávacíkrok přiměje identifikační krok k identifikaci nejménědvou sousedních stávajících instrukcí pomocí indikátorusložení u nejméně jedné kategorie pro paralelní provedení. V> / 4. ťat o-ďaí podle nároku 1 až 3, vyznačující se tím,že přidělovací krok obsahuje přidělení určitých instrukcído nejméně dvou různých nepřesahujících kategorií tak,že zmíněný porovnávací krok přiměje identifikační krokk identifikaci indikátorem sloeení nejméně dvou soused-ních stávajících instrukci ze zmíněných dvou kategorií,navzájem pro paralelní provedení. 5. f+et-o-d-a^pod l e nároků 1 až k, vyznačující se tím, že identifikační krok obsahuje upuštění od cílového kódu stávajících instrukci v jeho původním tvaru pro jednotli- vé provedení nebo pro paralelní provedeni s jinou instrukcí. 40 6. r^e-t-ocka podle nároku 1 až 5, vyznačující se tím, že přidělovací krok bere v úvahu vzájemné blokování závis-lých dat mezi instrukcemi právě tak jako existenci relativ-ního blokováni sdružených funkčních jednotek ve speciálníkonfiguraci systému zpracovávajícího data. 7. K-e-tod-a podle jednoho z nároku 1 až 6, vyznačujícíse tím, že přidělovací krok bere v úvahu vzájemné bloková-ní mezi instrukcemi závislé na technických prostředcíchprávě tak jako existenci relativního blokováni sdruženýchfunkčních jednotek ve speciální konfiguraci systému prozpracování dat. ~2. t 8. ?še+o-d-a podle jednoho z nároku 1 až 7, vyznačujícíse tím, že porovnávací krok obsahuje porovnávání prvnístávající instrukce s druhou sousední následující instruk-cí pro možné složeni s každou další, a potom porovnávánídruhé instrukce s třetí sousední následující instrukcí promožné složeni s každou další, k identifikováni vícenásob-ných složených instrukcí identifikovaných příslušnýmiindikátory pro vícenásobné složení. 9. M-etoda podle nároku 8, vyznačující se tím, žeobsahuje dodatečný krok pro určeni optimální posloupnostivícenásobných složených instrukcí pro danou část instrukč-ního toku. 10. H-e-tod-e podle jednoho z nároků 1 až 9, vyznačují-cí se tím, že porovnávací krok k určení zda sousední stá-vající instrukce jsou způsobilé paralelního provedeni jezaložen na použití technických prostředků spíše než popi-su operačního kódu. ~L zvH i 1 . *ys~té-m pro zpracování posloupnosti instrukcí ode- braných ze stávajícího sledu strojových instrukci za úče- lem přípravy postoupnosti pro paralelní provedení speciál- 41 ní konfigurací počítače, vyznačující se tím, že obsahujesoubor pravidel spočívající na speciální konfiguraci po-čítače indikující určité strojové instrukce, které jsouzpůsobilé k paralelnímu provedení s jinými strojovýmiinstrukcemi a prostředky složení pro předběžné zpracovánípřed vyvoláním binárního instrukčního toku s obsahem stá-vajících instrukcí, přičemž zmíněné prostředky složeni ma-jí přístup k souboru pravidel pro identifikaci sousedníchinstrukci způsobilých paralelního provedeni ve speciálníkonfiguraci počítače a pro vytvořeni složené posloupnostiinstrukcí mající řídicí pole k identifikování jednotli-vých sousedních instrukcí způsobilých pro paralelní prove-dení a které dohromady tvoři složenou instrukci. 12. 3ysléur podle nároku 11, vyznačující se tím, žeprostředkem ke složeni je program předběžného zpracováníprogramovými prostředky použitými jako část kompilátorunebo následného kompilátoru. 13. p o d l e nároku 11 nebo 12, vyznačující setím, že prostředek složení představuje jednotka pro před-běžné zpracování technickými prostředky, která zpracováváinstrukce před jejich vyvoláním z rychlé vyrovnávací pamě-ti. ien/
- 14. Sy-s-t-éflt' podle jednoho z nároků 11 až 13, vyznaču-jící se tím, že prostředek složení je způsobilý vytvářetsložené posloupnosti instrukci s řídicím polem k identi-fikování párů sousedních instrukcí způsobilých pro para-lelní provedení.
- 15. Sy-s-bé-m podle bodu 14, vyznačující se tím, že pro-středek složeni je způsobilý tvořit složené posloupnostiinstrukci s řídicím polem pro identifikování skupin třínebo více sousedních instrukcí způsobilých paralelníhoprovedení . - 42 - 2 λΜ ? c ίΆι Ίό. Sy s-t é-m podle jednoho z nároků 11 až 15, vyznaču-jící se tím, že řečene řídicí pole obsahuje nejméně jedenidentifikační bit sdružený s každou složenou instrukci. Z-Arl řňi 17. podle nároku 16, vyznačující se tím, žeřečené řídicí pole obsahuje identifikační část bitu a ří-dicí část bitu odlišnou od řečené identifikační částibitu. 18. podle jednoho z nároků 11 až 17, vyznačují-cí se tím, že řečené řídicí pole obsahuje nejméně jedenidentifikační bit přidružený ke každé jednotlivé instruk-ci tvořící složenou instrukci. Λ '* 19. 8-ystém podle nároku 18, vyznačující se tím, žeřídicí pole obsahuje nejméně jeden identifikační bit při-družený ke každé jednotlivé instrukci netvořící složenouinstrukci. 20. S-jrs-t-ém podle jednoho z nároků 11 až 19, vyznaču-jící se tím, že zmíněný soubor pravidel je založen napoužití technických prostředků spíše než na popisu operač-ního kódu. ?ar'ize/li’
- 21. Systém pro generování instrukčního toku pro para-lelní provedení ve speciální konfiguraci počítače, vyzna-čující se tím, že obsahuje seznam stávajících skalárníchinstrukci seskupených do vícenásobných kategorií založenýna způsobilosti stejných nebo různých kategorií instrukcí k paralelnímu provedení ve speciální konfiguraci počítače,prostředky pro předběžné zpracování k přijmu na vstupuskalárních instrukcí jako části binárního slabikového to-ku a pro rozhodnutí podle zmíněného seznamu, které soused-ní skalární instrukce jsou kandidáty pro paralelní prove-dení ve speciální konfiguraci počítače, a prostředky kesložení pro tvorbu označeni přidružených určitým skalárním 43 instrukcím v instrukčním toku indikujícím, které sousednískalární instrukce jsou částí složené instrukce způsobilépro paralelní provedeni, a které skalární instrukce vinstrukčním toku nejsou způsobilé pro paralelní provedeníve speciální konfiguraci počítače. 7(/ιι
- 22. Sy sH: ém podle nároku 21, vyznačující se tim, žeobsahuje dále řídicí prostředky pro kontrolování instrukčniho toku a pro vydáni vícenásobných složených instrukcipro paralelní provedení s každou jinou.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51938490A | 1990-05-04 | 1990-05-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CS93691A2 true CS93691A2 (en) | 1991-12-17 |
Family
ID=24068082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CS91936A CS93691A2 (en) | 1990-05-04 | 1991-04-04 | Method of instruction sequence processing and device for this method realization |
Country Status (9)
Country | Link |
---|---|
US (2) | US5502826A (cs) |
EP (1) | EP0454985B1 (cs) |
JP (1) | JP2500082B2 (cs) |
AT (1) | ATE146611T1 (cs) |
CA (1) | CA2039640C (cs) |
CS (1) | CS93691A2 (cs) |
DE (1) | DE69123629T2 (cs) |
HU (1) | HUT57455A (cs) |
PL (1) | PL165524B1 (cs) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
US6378061B1 (en) * | 1990-12-20 | 2002-04-23 | Intel Corporation | Apparatus for issuing instructions and reissuing a previous instructions by recirculating using the delay circuit |
GB9027853D0 (en) * | 1990-12-21 | 1991-02-13 | Inmos Ltd | Multiple instruction issue |
DE69326066T2 (de) * | 1992-03-25 | 2000-03-30 | Zilog, Inc. | Schnelle befehlsdekodierung in einem pipeline-prozessor |
US6154828A (en) * | 1993-06-03 | 2000-11-28 | Compaq Computer Corporation | Method and apparatus for employing a cycle bit parallel executing instructions |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
EP0651324B1 (en) * | 1993-10-29 | 2006-03-22 | Advanced Micro Devices, Inc. | Speculative instruction queue for variable byte length instructions |
DE69427265T2 (de) * | 1993-10-29 | 2002-05-02 | Advanced Micro Devices, Inc. | Superskalarbefehlsdekoder |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
EP1186995B1 (en) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Instruction memory with associative cross-bar switch |
JPH07334372A (ja) * | 1993-12-24 | 1995-12-22 | Seiko Epson Corp | エミュレートシステム及びエミュレート方法 |
JP3212213B2 (ja) * | 1994-03-16 | 2001-09-25 | 株式会社日立製作所 | データ処理装置 |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US6006033A (en) * | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
GB2299422B (en) * | 1995-03-30 | 2000-01-12 | Sony Uk Ltd | Object code allocation in multiple processor systems |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5710939A (en) * | 1995-05-26 | 1998-01-20 | National Semiconductor Corporation | Bidirectional parallel data port having multiple data transfer rates, master, and slave operation modes, and selective data transfer termination |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5829031A (en) * | 1996-02-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a group of instructions and to perform a specific function upon detection |
CN1160622C (zh) * | 1996-03-28 | 2004-08-04 | 皇家菲利浦电子有限公司 | 在顺序处理器上处理数据元素集合的方法和计算机*** |
US5896519A (en) * | 1996-06-10 | 1999-04-20 | Lsi Logic Corporation | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions |
US5958042A (en) * | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
US6108655A (en) | 1996-07-19 | 2000-08-22 | Cisco Technology, Inc. | Method and apparatus for transmitting images and other objects over a computer network system |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US6047368A (en) * | 1997-03-31 | 2000-04-04 | Sun Microsystems, Inc. | Processor architecture including grouping circuit |
US6339840B1 (en) * | 1997-06-02 | 2002-01-15 | Iowa State University Research Foundation, Inc. | Apparatus and method for parallelizing legacy computer code |
US6134515A (en) * | 1997-06-13 | 2000-10-17 | Telefonaktiebolaget Lm Ericsson | Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch |
US6142682A (en) * | 1997-06-13 | 2000-11-07 | Telefonaktiebolaget Lm Ericsson | Simulation of computer processor |
US5905880A (en) * | 1997-09-29 | 1999-05-18 | Microchip Technology Incorporated | Robust multiple word instruction and method therefor |
JPH11120040A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | 並列処理手続きの効果予測方法とそのための記録媒体 |
US6118940A (en) * | 1997-11-25 | 2000-09-12 | International Business Machines Corp. | Method and apparatus for benchmarking byte code sequences |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6990570B2 (en) | 1998-10-06 | 2006-01-24 | Texas Instruments Incorporated | Processor with a computer repeat instruction |
US6681319B1 (en) * | 1998-10-06 | 2004-01-20 | Texas Instruments Incorporated | Dual access instruction and compound memory access instruction with compatible address fields |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
EP0992892B1 (en) * | 1998-10-06 | 2015-12-02 | Texas Instruments Inc. | Compound memory access instructions |
US6742110B2 (en) | 1998-10-06 | 2004-05-25 | Texas Instruments Incorporated | Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution |
DE69840406D1 (de) * | 1998-10-06 | 2009-02-12 | Texas Instruments Inc | Überprüfung von Befehlsparallelismus |
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
US6634019B1 (en) * | 1999-07-16 | 2003-10-14 | Lamarck, Inc. | Toggling software characteristics in a fault tolerant and combinatorial software environment system, method and medium |
US6973560B1 (en) | 1999-07-16 | 2005-12-06 | Lamarck, Inc. | Fault tolerant and combinatorial software environment system, method and medium |
US6654869B1 (en) * | 1999-10-28 | 2003-11-25 | International Business Machines Corporation | Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling |
US6631463B1 (en) * | 1999-11-08 | 2003-10-07 | International Business Machines Corporation | Method and apparatus for patching problematic instructions in a microprocessor using software interrupts |
US7418580B1 (en) * | 1999-12-02 | 2008-08-26 | International Business Machines Corporation | Dynamic object-level code transaction for improved performance of a computer |
US20010042138A1 (en) * | 1999-12-23 | 2001-11-15 | Reinhard Buendgen | Method and system for parallel and procedural computing |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US6647489B1 (en) * | 2000-06-08 | 2003-11-11 | Ip-First, Llc | Compare branch instruction pairing within a single integer pipeline |
US6633969B1 (en) | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
DE10055175A1 (de) * | 2000-11-08 | 2002-05-23 | Infineon Technologies Ag | Verfahren zum Transferieren von Daten zwischen einer ersten Einrichtung und einer zweiten Einrichtung |
US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
US7711926B2 (en) * | 2001-04-18 | 2010-05-04 | Mips Technologies, Inc. | Mapping system and method for instruction set processing |
US6826681B2 (en) * | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7110525B1 (en) | 2001-06-25 | 2006-09-19 | Toby Heller | Agent training sensitive call routing system |
US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
US20030126414A1 (en) * | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
US20040128483A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Fuser renamer apparatus, systems, and methods |
WO2005008414A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | Method and apparatus for parallel action processing |
GB0323950D0 (en) * | 2003-10-13 | 2003-11-12 | Clearspeed Technology Ltd | Unified simid processor |
US7506307B2 (en) * | 2003-10-24 | 2009-03-17 | Microsoft Corporation | Rules definition language |
US7765540B2 (en) * | 2003-10-23 | 2010-07-27 | Microsoft Corporation | Use of attribution to describe management information |
US7676560B2 (en) * | 2003-10-24 | 2010-03-09 | Microsoft Corporation | Using URI's to identify multiple instances with a common schema |
US7103874B2 (en) * | 2003-10-23 | 2006-09-05 | Microsoft Corporation | Model-based management of computer systems and distributed applications |
US7539974B2 (en) | 2003-10-24 | 2009-05-26 | Microsoft Corporation | Scalable synchronous and asynchronous processing of monitoring rules |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7467325B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
US7590824B2 (en) * | 2005-03-29 | 2009-09-15 | Qualcomm Incorporated | Mixed superscalar and VLIW instruction issuing and processing method and system |
US7627735B2 (en) * | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US7818550B2 (en) * | 2007-07-23 | 2010-10-19 | International Business Machines Corporation | Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system |
TW200910195A (en) * | 2007-08-20 | 2009-03-01 | Sunplus Technology Co Ltd | A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof |
US20090055636A1 (en) * | 2007-08-22 | 2009-02-26 | Heisig Stephen J | Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence |
WO2009101976A1 (ja) * | 2008-02-15 | 2009-08-20 | Nec Corporation | プログラム並列化装置、プログラム並列化方法及びプログラム並列化プログラム |
US8751747B2 (en) * | 2008-02-26 | 2014-06-10 | International Business Machines Corporation | Management of cache replacement status in cache memory |
US8572569B2 (en) * | 2009-12-09 | 2013-10-29 | Oracle International Corporation | Modified implementation of a debugger wire protocol and command packet |
GB2486905A (en) * | 2010-12-30 | 2012-07-04 | Cambridge Silicon Radio Ltd | Amalgamating instructions by replacing unencoded space |
US11042929B2 (en) | 2014-09-09 | 2021-06-22 | Oracle Financial Services Software Limited | Generating instruction sets implementing business rules designed to update business objects of financial applications |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
CN112540795A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
US20230097390A1 (en) * | 2021-09-29 | 2023-03-30 | International Business Machines Corporation | Tightly-coupled slice target file data |
US11900116B1 (en) | 2021-09-29 | 2024-02-13 | International Business Machines Corporation | Loosely-coupled slice target file data |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3293616A (en) * | 1963-07-03 | 1966-12-20 | Ibm | Computer instruction sequencing and control system |
US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
US3343135A (en) * | 1964-08-13 | 1967-09-19 | Ibm | Compiling circuitry for a highly-parallel computing system |
US3611306A (en) * | 1969-02-05 | 1971-10-05 | Burroughs Corp | Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system |
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4574348A (en) * | 1983-06-01 | 1986-03-04 | The Boeing Company | High speed digital signal processor architecture |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPS60101644A (ja) * | 1983-11-07 | 1985-06-05 | Masahiro Sowa | ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ |
JPS61245239A (ja) * | 1985-04-23 | 1986-10-31 | Toshiba Corp | 論理回路方式 |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
EP0239081B1 (en) * | 1986-03-26 | 1995-09-06 | Hitachi, Ltd. | Pipelined data processor capable of decoding and executing plural instructions in parallel |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
US5506974A (en) * | 1990-03-23 | 1996-04-09 | Unisys Corporation | Method and means for concatenating multiple instructions |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
-
1991
- 1991-03-20 DE DE69123629T patent/DE69123629T2/de not_active Expired - Lifetime
- 1991-03-20 AT AT91104323T patent/ATE146611T1/de not_active IP Right Cessation
- 1991-03-20 EP EP91104323A patent/EP0454985B1/en not_active Expired - Lifetime
- 1991-04-03 PL PL91289722A patent/PL165524B1/pl not_active IP Right Cessation
- 1991-04-03 JP JP3096090A patent/JP2500082B2/ja not_active Expired - Fee Related
- 1991-04-03 CA CA002039640A patent/CA2039640C/en not_active Expired - Fee Related
- 1991-04-04 HU HU911103A patent/HUT57455A/hu unknown
- 1991-04-04 CS CS91936A patent/CS93691A2/cs unknown
-
1994
- 1994-01-25 US US08/186,221 patent/US5502826A/en not_active Expired - Fee Related
-
1996
- 1996-08-15 US US08/699,689 patent/US5732234A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
ATE146611T1 (de) | 1997-01-15 |
PL165524B1 (pl) | 1995-01-31 |
PL289722A1 (en) | 1992-04-21 |
EP0454985A2 (en) | 1991-11-06 |
JP2500082B2 (ja) | 1996-05-29 |
DE69123629T2 (de) | 1997-06-12 |
CA2039640A1 (en) | 1991-11-05 |
DE69123629D1 (de) | 1997-01-30 |
HU911103D0 (en) | 1991-10-28 |
EP0454985A3 (en) | 1994-03-30 |
JPH04229326A (ja) | 1992-08-18 |
US5502826A (en) | 1996-03-26 |
US5732234A (en) | 1998-03-24 |
CA2039640C (en) | 2000-01-11 |
EP0454985B1 (en) | 1996-12-18 |
HUT57455A (en) | 1991-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CS93691A2 (en) | Method of instruction sequence processing and device for this method realization | |
US5500942A (en) | Method of indicating parallel execution compoundability of scalar instructions based on analysis of presumed instructions | |
EP1297417B1 (en) | Apparatus and method for issue grouping of instructions in a vliw processor | |
US6820223B2 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
US5958048A (en) | Architectural support for software pipelining of nested loops | |
KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
US6112299A (en) | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching | |
US5504932A (en) | System for executing scalar instructions in parallel based on control bits appended by compounding decoder | |
US20060174089A1 (en) | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture | |
Bala et al. | Efficient instruction scheduling using finite state automata | |
SK93491A3 (en) | Digital computer system for elaborating of at lest two parallel instructions | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
EP0978031A2 (en) | A method for structuring a multi-instruction computer program | |
KR20000075837A (ko) | 보호형의 매우 긴 명령어 아키텍처를 위한 향상된 명령 디스패치 메카니즘 | |
EP0982655A2 (en) | Data processing unit and method for executing instructions of variable lengths | |
US7139897B2 (en) | Computer instruction dispatch | |
US5890009A (en) | VLIW architecture and method for expanding a parcel | |
US6230258B1 (en) | Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions | |
EP0545927B1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
JP3732233B2 (ja) | スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置 | |
JP3191263B2 (ja) | 最適オブジェクト選択実行処理装置 | |
Chalk et al. | Reduced instruction set computers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PD00 | Pending as of 2000-06-30 in czech republic |