CS93391A3 - Circuit for parallel processing of two or a plurality of instructions in a digital computer - Google Patents

Circuit for parallel processing of two or a plurality of instructions in a digital computer Download PDF

Info

Publication number
CS93391A3
CS93391A3 CS91933A CS93391A CS93391A3 CS 93391 A3 CS93391 A3 CS 93391A3 CS 91933 A CS91933 A CS 91933A CS 93391 A CS93391 A CS 93391A CS 93391 A3 CS93391 A3 CS 93391A3
Authority
CS
Czechoslovakia
Prior art keywords
circuit
output
instruction
instructions
universal
Prior art date
Application number
CS91933A
Other languages
English (en)
Inventor
Bartholomew Blaner
Stamatis Vassiliadis
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of CS93391A3 publication Critical patent/CS93391A3/cs
Publication of CZ279899B6 publication Critical patent/CZ279899B6/cs

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

-/1 -
Ρ|/ WS-WA
c.r SSZVZ
Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači
Oblast techniky
Vynález se týká číslicových počítačů a číslicových da-tových procesorů a obzvláště číslicových počítačů a datovýchprocesorů schopných zpracovávat paralelně dvě nebo více in-strukcí .
Stav techniky Výkon tradičních počítačů, které vykonávají instrukcepo jedné postupným způsobem se v minulosti výrazně zlepšilvzhledem ke zlepšením v obvodové technice. Takové počítačepro vykonávání instrukcí po jedné jsou někdy označovány ja-ko skalární počítače nebo procesory. Jelikož se vývoj ob-vodové techniky dostal na své hranice, ukázalo se jako nut-né, aby návrháři počítačů vyšetřovali jiné prostředky prozískání výrazných zlepšení výkonu.
Nedávno byly navrženy takzvané superskalární počítače,které usilují o zvýšení výkonu vykonáváním více než jednéinstrukce současně z jediného proudu instrukcí. Takové na-vrhované skalární stroje typicky rozhodují v době provádě-ní instrukcí, jestliže může být daný počet instrukcí vyko-náván paralelně. Takové rozhodnutí je založeno na operač-ních kódech instrukcí a na datových závislostech, které mo-hou existovat mezi přilehlými instrukcemi. Operační kódyurčují hardwarové součástky, které každá z instrukcí budeužívat, a všeobecně není možné, aby dvě nebo více instrukcípoužívaly stejnou hardwarovou součástku ve stejné době,nebo aby vykonávaly instrukci, která závisí na výsledcíchpředchozí instrukce. Toto je známo pod označením datovázávislost. Tyto hardwarové a datové závislosti brání vykoná-vání některých kombinací instrukcí paralelně. V tomto pří-padě jsou dotřené instrukce místo toho vykonávány samotnéneparalelním způsobem. To samozřejmě snižuje výkon super-skalárního stroje. 2
Navržené superskalární počítače přinášejí určitá zlep-šení ve výkonu, ale mají také nevýhody, které by bylo žádou-"cí minimalizovat. Jednak dochází k tomu, že rozhodování vdobě vykonávání instrukcí o tom, které instrukce mohou býtvykonávány paralelně, vyžaduje sice malé, ale znatelné množ-ství času, které nemůže být pohotově maskováno jeho překry-tím jinými normálními strojovými operacemi. Tato nevýhoda se stává výraznější s tím, jak roste složitost architektu-« ry instrukčního souboru. Jinou nevýhodou je to, že rozhodová-ní musí být opakováno opět pokaždé, kdy se mají tytéž in-strukce vykonávat po druhé a po více kráté.
Charakteristika vynálezu
Jako je popisováno v související patentové přihlášceUSA č. 08/519 384, jeden z atributů počítače typu SCISM/Scalable Compound Instruction Set/ je: Neprováděj rozhodo-vání o paralelním vykonávání instrukcí v době vykonávání.Udělej to v dřívějším bodě při celkovém procesu zpracovává-ní instrukcí. Například, udělej to před vyrovnávací pamětíinstrukcí v těch strojích, které mají vyrovnávací pamětiinstrukcí nebo zásobníky instrukcí. V jiném příkladě, udělejto před rychlou vyrovnávací pamětí instrukcí v těch stro-jích, kde jsou instrukce vedeny jednotkou s rychlou vyrov-návací pamětí.
Jiným atributem stroje SCISM je zaznamenávat výsledkyrozhodování o paralelním vykonávání instrukcí tak, že tako-vé výsledky jsou k dispozici v případě, kdy jsou stejné in-strukce používány po druhé a v dalším případě.
Podle vynálezu se zaznamenávání učinění rozhodnutí oparalelním vykonávání instrukcí dosahuje generováním přízna-ků, které jsou připojovány nebo jsou vkládány do jednotli-vých instrukcí v instrukčním toku. Tyto příznaky říkají,zda instrukce mohou být vykonávány paralelně nebo zda potře-bují být vykonávány jednotlivě. Tento proces označování pří-znakem se zde někdy pojmenovává slučování. Slouží skutečně 3 ke kombinování dvou nebo více individuálních instrukcí dojediné sloučené instrukce pro účely paralelního vykonávání. V obzvláště výhodném provedení vynálezu je počítač opa-třen mechanismem s rychlou vyrovnávací pamětí pro dočasnéukládání strojových instrukcí na jejich cestě od pamětovéúrovně počítače o výši úrovni do jednotek počítače pro vyko-návání instrukcí, a slučování nebo označování instrukcí pří-znakem se vykonává mezilehle mezi pamětovou jednotkou vyššíúrovně a ukládacím mechanismem s rychlou vyrovnávací pamětí,takže v mechanismu s rychlou vyrovnávací pamětí jsou ulo-ženy jak instrukce, tak i slučovací příznaky. Jak je známo,použití dobře navržené rychlé vyrovnávací paměti, navrženéjako samotné, tak i v návaznosti na počítač, slouží pro zdo-konalení celkové výkonnosti počítače. Ukládání slučovacíchpříznaků do rychlé vyrovnávací paměti umožňuje přitom dále,aby příznaky mohly být používány stále znovu, pokud dotyč-né instrukce zůstávají v mechanismu s vyrovnávací pamětí.
Jak je známo, instrukce často zůstávají v rychlé vyrovnáva-cí paměti dosti dlouho pro to, aby byly používány více nežjednou.
Popis obrázků na výkresech
Vynález je blíže vysvětlen v následujícím popise napříkladech provedení s odvoláním na připojené výkresy, vekterých znázorňuje obr. 1 blokové schéma příkladného prove-dení části číslicového počítačového systému, konstruovanéhopodle vynálezu, obr. 2 schéma úseku instrukčního toku, v němžjsou slučovací příznaky nebo příznaková pole sdruženy s in-strukcemi, obr. 3 větší podrobnost vnitřní konstrukce repre-zentativního provedení slučovací jednotky instrukcí, která může být použita v počítačovém systému z obr. 1, obr. 4blokové schéma větší podrobnosti reprezentativní vnitřní kon-strukce analyzních jednotek slučování z obr. 3, obr. 5 pří-klad soustavy logických obvodů, která může být použita proimplementaci částí analyzátoru slučování a generátoru pří-znaků z obr. 3, které vytvářejí slučovací příznaky pro první 4 tři instrukce v instrukčním toku, obr. 6 tabulku použitoupro vysvětlení příkladu z obr. 5, obr. 7 blokové schéma pří-kladu reprezentativního provedení části číslicového počíta-čového systému, použité pro vysvětlení, jak mohou být slučo-vané instrukce zpracovávány paralelně funkčními jednotkamina zpracovávání instrukcí, obr. 8 schéma obzvláštního sle-du instrukcí, který může být zpracováván počítačovým systé-mem z obr. 7, a obr. 9 tabulku použitou pro vysvětlení zpra-cování instrukčního sledu z obr. 8 počítačovým systémem zobr. 7.
Provedení vynálezu
Na obr. 1 je znázorněno reprezentativní provedení částičíslicového počítačového systému nebo číslicového zpracováva-cího systému konstruovaného podle vynálezu. Tento počítačo-vý systém je schopný zpracovávání dvou nebo více instrukcíparalelně. Zahrnuje první paměťový mechanismus pro ukládáníinstrukcí a dat, která se mají zpracovávat. Tento paměťovýmechanismus je provedený jako vysokoúrovňová paměť, je naobr. 1 vyznačen jako první pamětový obvod 10. Tento první pa-měťový obvod 10 je velkokapacitní pamětový mechanismus s niž-ší rychlostí a může být tvořen velkokapacitní systémovou pa-měťovou jednotkou nebo dolní částí univerzálního hierarchic-kého paměťového systému apod.
Počítačový systém z obr. 1 také zahrnuje slučovací mecha-nismus instrukcí pro přijímání instrukcí z prvního paměťo-vého obvodu 10 přes univerzální výstup 10a a pro sdružovánípříznakových polí s těmito instrukcemi, přičemž tato přízna-ková pole udávají, které z těchto instrukcí mohou být zpraco-vávány paralelně s jinými. Tento slučovací mechanismus in-strukcí je reprezentován slučovacím obvodem 11 instrukcí suniverzálním vstupem 11a. Tento slučovací obvod 11 instrukcíanalyzuje přicházející instrukce pro určování, které mohoubýt zpracovávány paralelně. Dále vytváří slučovací obvod 11 5 instrukcí pro tyto analyzované instrukce příznakovou informaci nebo příznaková pole, která udávají, které instrukce mo-hou být zpracovávány paralelně s druhými a které nesmí býtzpracovávány paralelně s jinými.
Systém z obr. 1 dále zahrnuje druhý pamětový obvod 12^spojený s univerzálním výstupem 11b slučovacího obvodu 11instrukcí pro přijímání a ukládání analyzovaných instrukcía jejich přidružených příznakových polí přes univerzálnívstup 12a. Tento druhý pamětový obvod 12 je reprezentovánrychlou vyrovnávací pamětí sloučených instrukcí. Rychlá vy-rovnávací pamět je pamětový mechanismus s menší kapacitou avětší rychlostí typu obvykle používaného pro zlepšování výkonu počítačového systému z hlediska rychlosti snižováním čas-tosti přístupu na první pamětový obvod 10 s nižší rychlostí.
Na obr. 1 systém dále zahrnuje řadu funkčních jednotekpro zpracovávání instrukcí, které pracují vzájemně paralel-ně. Tyto funkční jednotky pro zpracovávání instrukcí jsoureprezentovány funkčními jednotkami 13, 14, 15 atd. Tyto funkční jednotky 13 - 15, opatřená každým univerzálním vstupem13a, 14a 15a pracují paralelně souběžně spolu a každá samaje schopná zpracovávat jeden nebo více typů instrukcí stro-jového kódu. Příklady funkčních jednotek, které mohou býtpoužity, jsou: univerzální aritmetická a logická jednotka,aritmeticko-logická jednotka typu pro generování adres,aritmeticko-logická jednotka pro překonávání datové závislosti, zpracovávací jednotka instrukcí větvení, jednotka proposouvání dat, zpracovávací jednotka s pohyblivou řádovoučárkou atd. Daný počítačový systém může obsahovat dva nebovíce těchto typů funkčních jednotek. Například může danýpočítačový systém obsahovat dvě nebo více univerzálnícharitmeticko-logických jednotek. Žádný daný počítačový sys-tém také nemusí obsahovat každou nebo všechny z těchto fun-kčních jednotek různého typu. Obzvláštní uspořádání a konfi-gurace funkčních jednotek bude záviset na povaze obzvlášt-ního počítačového systému, jaký je uvažován. 6
Počítačový systém z obr. 1 také zahrnuje mechanismus provyvolávání a vydávání, připojený k rychlé vyrovnávací pamětidruhého paměťového obvodu 12, pro poskytování přilehlých in-strukcí, které jsou v ní uloženy, a pro jejich poskytovánírůzným funkčním jednotkám 13 - 15 pro zpracovávání instruk-cí, když příznaková pole instrukcí indikují, že mohou býtzpracovávány paralelně. Tento mechanismus je znázorněn jakovyvolávací a vydávací obvod 16 s univerzálním vstupem 16aa univerzálním výstupem 16b. Vyvolávací a vydávací jednotka16 vyvolává přes univerzální vstup 16a instrukce z rychlévyrovnávací paměti druhého paměťového obvodu 12, vyšetřujejejich příznaková pole a pole operačních kódů a na základětakových vyšetření vysílá přes univerzální výstup 16b in-strukce do odpovídající z funkčních jednotek 13 - 15.
Jestliže je požadovaná instrukce přítomna v rychlé vy-rovnávací paměti slučovaných instrukcí, tj. ve druhém pamě-ťovém obvodu 12, je odpovídající adresa vyslána do rychlévyrovnávací paměti pro to, aby z ní byla vyvolána požadova-ná instrukce. Toto se někdy označuje jako "cache hit" (ús-pěšné vyvolání). Není-li požadovaná instrukce v rychlé vy-rovnávací paměti, tj . druhém paměťovém obvodu 12, potom mu-sí být vyvolána z paměti vyšší úrovně, tj. prvního paměťo-vého obvodu 10, a zavedena do rychlé vyrovnávací paměti.
To se někdy označuje jako "cache miss" (neúspěšné vyvoláníz rychlé vyrovnávací paměti). Když dojde k neúspěšnému vy-volání, je adresa požadované instrukce vyslána do prvníhopaměťového obvodu 10 vyšší úrovně. Na základě tohoto prvnípaměťový obvod 10 začne vyjímání nebo čtení řady instrukcí,která obsahuje požadovanou instrukci. Tyto instrukce jsoupřenášeny na univerzální vstup 11a slučovacího obvodu 11_instrukcí, který analyzuje tyto vstupující instrukce a ge-neruje odpovídající příznaková pole pro každou instrukci.Instrukce opatřené příznaky jsou po té vedeny do rychlévyrovnávací paměti slučovaných instrukcí, tj. druhého pa-měťového obvodu 12 a jsou zde uloženy pro následující pou- 7 žití, v případě potřeby, funkčními jednotkami 13, 14 a 15^_
Analýza instrukcí vykonávaná ve slučovacím obvodu 11instrukcí vyžaduje určité relativně malé množství času. Ana-lýza slučování instrukcí se však provádí pouze v případě vý-skytu neúspěšného vyvolávání a je tak relativně málo častá.
Obr. 2 ukazuje část proudu sloučených instrukcí opatře-ných příznaky, jak se mohou objevovat na výstupu slučovacíhoobvodu 11 instrukcí z obr. 1. Jak je patrné, každá instrukce("INSTR") má příznakové pole (TAG), připojené slučovacímobvodem 11 instrukcí. Instrukce s příznaky, jako jsou instruk-ce znázorněné na obr. 2, jsou ukládány do rychlé vyrovnávacípaměti sloučených instrukcí, tj. druhého pamětového obvodu12. Podle potřeby jsou instrukce s příznaky v rychlé vyrovná-vací paměti vyvolávány vyvolávacím a vydávacím obvodem lj5instrukcí. Když jsou instrukce s příznaky přijímány vyvolá-vacím a vydávacím obvodem lj5, jejich příznaková pole jsouvyšetřována pro určení, jestli mohou být zpracovávány para-lelně a jejich pole operačních kódů jsou vyšetřována, kteráz funkčních jednotek, které jsou k dispozici, se nejlépe ho-dí pro jejich zpracovávání. Jestliže příznaková pole indiku-jí, že dvě nebo více instrukcí jsou vhodné pro zpracováváníparalelně, jsou vysílány do odpovídající z funkčních jedno-tek v souladu s kódováním jejich polí operačních kódů. Ta-kové instrukce jsou pak zpracovávány souběžně jedna s dru-hou jejich odpovídajícími funkčními jednotkami.
Zjistí-li se instrukce, která není vhodná pro paralel-ní zpracovávání, vyšle se potom do odpovídající funkční jed-notky, jak je určeno jejím operačním kódem a potom se zpra-covává samotná zvolenou funkční jednotkou. V nejdokonalejším případě, kde je vždy zpracovávánoparalelně více instrukcí, by rychlost vykonávání instrukcepočítačového systému byla N krát větší, než v případě, kdyse instrukce vykonávají vždy po jedné, přičemž N je početinstrukcí ve skupinách, které se zpracovávají paralelně. 8
Obr. 3 ukazuje podrobněji vnitřní konstrukci reprezen-tativního provedení slučovacího obvodu instrukcí v souladus vynálezem. Tento slučovací obvod instrukcí, označený v pod-robnostech jako slučovací jednotka 20, je vhodný pro použi-tí jako slučovací obvod 11 instrukcí z obr. 1. Slučovací jed-notka 20 instrukcí z obr. 3 je určena pro případ, kdy se sou-časně zpracovává maximální množství dvou instrukcí paralelně.V tomto případě se použije jednobitový příznak. Hodnota pří-znakového bitu "jedna" znamená, že instrukce je "první" in-strukce. Hodnota příznakového bitu "nula" znamená, že instrukce je "druhá" instrukce a může být vykonávána paralelně spředcházející první instrukcí. Instrukce mající hodnotu pří-znakového bitu jedna může být vykonávána bud sama nebo sou-časně a paralelně s příští instrukcí, v závislosti na hodno-tě příznaku pro takovou příští instrukci.
Každé párování instrukcí, mající hodnotu příznakovéhobitu jedna, s následující instrukcí, mající hodnotu přízna-kového bitu nula, tvoří sloučenou instrukci pro účely para-lelního vykonávání, tj. že instrukce v takové dvojici mohoubýt vykonávány vzájemně paralelně. Když mají příznakové bi-ty pro dvě po sobě následující instrukce každá hodnotu jed-na, vykonává se první z těchto instrukcí sama neparalelnímzpůsobem. V nejhorším možném případě by všechny instrukceve sledu měly příznakovou bitovou hodnotu jedna. V tomtonejhorším případě by všechny instrukce byly vykonávány sou-časně a neparalelním způsobem.
Slučovací jednotka 20 instrukcí z obr. 3 obsahuje vstup-ní registr 21 plurálních instrukcí pro přijímání více po so-bě následujících instrukcí z pamětové jednotky vyšší úrovně,tj. prvního pamětového obvodu 10. Vstupní registr 21. má nej-méně tři pamětové pole INSTO, INSTl, INST2 a je opatřen uni-verzálním vstupem 21a připojeným k univerzálnímu výstupu10a prvního pamětového obvodu 10. Slučovací jednotka 20 in-strukcí také obsahuje skupinu analyzních mechanismů, založe-ných na pravidle. Každý takový analyzní mechanismus instruk- 9 cí analyzuje rozdílnou dvojici instrukcí ležících vedle se-be ve vstupním registru 21 instrukcí a vytváří signál slučovatelnosti, který indikuje, zda tyto dvě instrukce v této dvo-jici mohou být zpracovávány paralelně Či nikoliv. Na obr. 3je znázorněno několik analyzních obvodů 22 - 25 slučovatel-nosti. Každý z těchto analyzních obvodů 22 - 25 slučovatel-nosti obsahuje dva právě zmíněné analyzní mechanismy instruk-ce. Každý z těchto analyzních obvodů 22 - 25 tak vytváří dvaze signálů slučovatelnosti. Například první analyzní obvod22 slučovatelnosti vytváří na prvním výstupu MOl první sig-nál slučovatelnosti, který indikuje, zda Instrukce 0 a 1 mo-hou být zpracovávány paralelně. Analyzní obvod 22 slučovánítaké vytváří na druhém výstupu M12 druhý signál slučovatel-nosti, který indikuje, zda mohou být Instrukce 1 a 2 zpraco-vávány paralelně.
Podobným způsobem vytváří druhý analyzní obvod 2_3 slučo-vání první signál slučovatelnosti na prvním výstupu M23, kte-rý indikuje, zda Instrukce 2 a 3 mohou být zpracovávány pa-ralelně, a druhý signál slučovatelnosti na druhém výstupuM34, který indikuje, zda Instrukce 3 a 4 mohou být zpracová-vány paralelně. Třetí analyzní obvod 24 slučování vytváří naprvním výstupu M45 první signál slučovatelnosti, který udávázda Instrukce 4 a 5 mohou být zpracovávány paralelně a nadruhém výstupu M56 druhý signál slučovatelnosti, který udává,zda Instrukce 5 a 6 mohou být zpracovávány paralelně. Čtvrtýanalyzní obvod 25 slučovatelnosti vytváří na prvním výstu-pu M67 první signál slučovatelnosti, který udává, zda In-strukce 6 a 7 mohou být zpracovávány paralelně, a druhý sig-nál slučovatelnosti na druhém výstupu M7 8, který udává, zdaInstrukce 7 a 8 mohou být zpracovávány paralelně.
Slučovací jednotka 20. instrukcí dále obsahuje obvod26 generování příznaků, citlivý na signály slučovatelnosti,objevující se na výstupech analyzních obvodů 22 - _2j5 pro ge-nerování individuálních příznakových polí pro různé in-strukce ve vstupním registru 21 instrukcí. Obvod 26 pro ge- 10 nerování příznaků má nejméně dva vstupy připojené ke dvěmavýstupům M01, M12 analyzního obvodu 22 slučovatelnosti. Dálemá výstupy TÁGO, TAG1, TAG2, TAG3, TAG4, TAG5, TAG6, TAG7a TAG8 pro generování příznaků připojené k odpovídajícímvstupům výstupního registru 2Ί, Výstupní registr 27 má nej-méně tři paměťová pole, v daném případě paměťová pole TO,INSTO, TI, INST1, T2, INST2, ... T8, INST8.
Individuální příznaková pole pro různé instrukce vevstupním registru instrukcí jsou přiváděna do výstupního re-gistru 2J, jako jsou instrukce samotné, získávané ze vstup-ního registru 2_1 instrukcí. Títmo způsobem je ve výstupnímregistru 2J_ slučovací jednotky paměťové pole TO příznaku proInstrukci 0, pamětové pole Tl příznaku pro Instrukci 1, atd. V daném provedení je každé pamětové pole TO, Tl, T2 pří-znaku atd. tvořeno jediným binárním bitem. Hodnota příznako-vého bitu "jedna" indikuje, že bezprostředně následující in-strukce, ke které je připojen, je "první instrukce". Hodnotapříznakového bitu "nula" indikuje, že bezprostředně následu-jící instrukce je "druhá instrukce". Instrukce mající hodno-tu příznakového bitu jedna, následovaná instrukcí, majícíhodnotu příznakového bitu nula, indikuje, že tyto dvě in-strukce mohou být vykonávány paralelně jedna vůči druhé. In-strukce opatřené příznaky ve výstupním registru 2Ί slučovanýchinstrukcí jsou vedeny na vstup rychoé vyrovnávací pamětislučovaných instrukcí, tj. druhého paměťového obvodu slučo-vaných instrukcí z obr. 12 a jsou ukládány do druhého pamě-ťového obvodu 12.
Je třeba poznamenat, že množství registrového hardwaruznázorněného na obr. 3 může být redukováno ukládáním slučo-vaných instrukcí přímo do rychlé vyrovnávací paměti slučova-ných instrukcí.
Na obr. 4 je znázorněna do větších podrobností vnitřní konstrukce použitá pro analyzní obvod 22_ slučovatelnosti in- strukcí z obr. 3. Druhé analyzní obvody 22^ - 25 slučovatel- nosti mají podobnou konstrukci. Jak ukazuje obr. 4, analýz- 11 ní obvod 22 slučovatelnosti zjišťovací obvod 2° slučovatel-nosti instrukcí pro vyšetřování operačního kódu Instrukce 0a operačního kódu Instrukce 1 a pro určování, zda tyto dvaoperační kódy jsou kompatibilní pro účely paralelního vyko-návání. Zjištovací obvod 30 je konstruován v souladu s pře-dem určenými pravidly pro volbu toho, které páry operačníchkódů jsou kompatibilní pro vykonávání paralelně. Konkrétněji obsahuje zjišťovací obvod 30 logické obvody pro implementovဠní pravidel, která definují, jaké typy instrukcí jsou kompa-tibilní pro paralelní vykonávání v určité hardwarové konfiguraci, použité pro uvažovaný počítačový systém. Jestliže ope-rační kódy pro Instrukci 0 a Instrukci 1 jsou kompatibilní,potom zjišťovací obvod 30 vytváří na svém výstupu 30a výstupní signál úrovně binární jedničky. Jestliže nejsou kompati-bilní, zjišťovací obvod 30 vytváří binární nulovou hodnotuna svém výstupu 30a. Jak je patrné z obr. 4, má zjišťovacíobvod 30 dva vstupy 0P0 a OPI, které jsou připojeny k uni-verzálnímu výstupu 21b vstupního registru 21 z obr. 1.
Analyzní obvod 22 slučovatelnosti signálů dále obsahu-je zjištovací obvod 32 slučitelnosti druhé instrukce pro vy-šetřování operačních kódů Instrukcí 1 a 2 a určování, zdajsou kompatibilní pro paralelní vykonávání. Zjišťovací obvod31 je konstruován stejným způsobem jako zjišťovací obvod 30pro volbu, které dvojice operačních kódů jsou kompatibilnípro paralelní vykonávání pro případ Instrukcí 1 a 2. Zjiš-ťovací obvod 32 zahrnuje soustavu logických obvodů pro implementování pravidel, která definují, které typy instruk-cí jsou kompatibilní pro paralelní vykonávání, přičemž tatopravidla jsou stejná, jaká jsou použita ve zjišťovacím ob-vodu 2°· Jestliže jsou operační kódy pro Instrukce 1 a 2kompatibilní, potom zjištovací obvod 32 vytváří na svém vý-stupu 31a výstupní signál na binární úrovni jedna. Jinakvytváří výstupní signál na binární úrovni nula. Obdobně ja-ko u zjišťovacího obvodu 30 jsou i zde vstupy OP1, OP 2, při-pojené ke vstupnímu registru 2^L. - 12
Analyzní obvod 22 slučovatelnosti signálů dále obsahujezjišíovací obvod 31 slučitelnosti druhé instrukce pro vyšetřo-vání operačních kódů Instrukcí 1 a 2 a určování, zda jsou kompa-tibilní pro paralelní vykonávání, Zjištovací obvod 31 je kon-struován stejným způsobem jako zjištovací obvod 30 pro volbu,které dvojice operačních kódů jsou kompatibilní pro paralelnívykonávání oro přÍDad Instrukcí 1 a 2« Zjištovací obvod 31tak zahrnuje soustavu logických obvodů pro implementování pra-videl, která definují, které typy instrukcí jsou kompatibilnípro paralelní vykonávání, přičemž tato pravidla jsou stejná,jaká jsou použita ve zjištevecím obvodu 3Q. Jestliže jsou ope-rační kódy pro Instrukce 1 a 2 kompatibilní, potom zjištova-cí obvod 31 vytváří na svém výstupu 31a výstupní signál nabinární úrovni jedna. Jinak vytváří výstupní signál na binár-ní 'úrovni nula. Obdobně jako u zjištovacího obvodu 30 jsoui zde vstupy OPI, CP2, připojené ke vstupnímu registru 21.
Analyzní obvod 22 slučovatelnosti dále obsahuje prvnízjištovací obvod 32 závislosti registrů pro zjištování kon-fliktů v použití univerzálních registrů označených poli R1a R2 Instrukcí 0 a 1. Tyto univerzální registry budou podrob-něji rozebírány níže. Mimo jiné může být zjištovací obvod 32závislosti konstruován pro zjištování výskytu podmínky datovézávislosti, při níž druhá instrukce (Instrukce 1) potřebuje u-žívat výsledků získaných vykonáváním předcházející instrukce(Instrukce 0). V tomto případě může být buS druhá instrukcevykonávána hardwarem pro překonávání závislosti, takže je vy-konávána paralelně s první instrukcí, anebo musí vykonávánídruhé instrukce vyčkat na dokončení vykonávání předchozí in-strukce, a tedy nemůže být provedeno paralelně s předcházejí-cí instrukcí. (Je třeba poznamenat, že technika pro překonává-ní některých datových závislostí bude rozebrána níže.) Keexis-tují-li závislosti registrů, které brání vykonávání Instrukcí - 13
Oal paralelně, potom se vyšle na výstup 32b zjišťovacíjednotky 32 binární hodnota jedna. Je-li závislost, potomse vyšle na výstup 32b binární hodnota 0. Vstupy 32a zjiš-ťovací jednotky 32 jsou připojeny k univerzálnímu výstupuvstupního registru 21.
Analyzní obvod 22 slučovatelnosti dále zahrnuje druhýzjištovací obvod 33 závislosti registrů pro zjišťování kon-fliktů v použití univerzálních registrů označených polemiEl a S2 Instrukcí 1 a 2. Tento zjišťovací obvod 33 je stej-né konstrukce, jako výše popsaný zjišťovací obvod 32 , a vy-tváří výstupní signál binární úrovně jedna na výstupu 33b,neexistují-li závislosti registrů nebo závislosti registrůmohou být pokryty hardwarem pro překonávání závislosti registrů, anebo v jiném případě je na výstupu 33b binární úroveňnuly. Druhý zjišťovací obvod 33 má opět vstupy 33a spojenése vstupním registrem 21. Výstupní vedení od zjišťovacího obvodu 30 slučovatel-nosti instrukcí a zjišťovacího obvodu 32 závislosti registrůjsou připojena ke dvěma vstupům 34a, 34b prvního součinovéhoobvodu 34. Výstupní vedení prvního součinového obvodu 34 mábinární hodnotu jedna, jestliže jsou oba uvažované opera-tivní kódy kompatibilní a jestliže nejsou závislosti regis-trů. Tato binární jedničková hodnota na výstupním vedeníprvního součinového obvodu 34 indikuje, že obě uvažovanéinstrukce jsou slučovetelné, tj„ jsou vykonávatelné paralel-ně. Jestliže naproti tomu má výstupní vedení prvního souči-nového obvodu 34 binární hodnotu nule, potom obě instrukcenejsou slučovetelné. Je tak na výstupní vedení prvního sou-činového obvodu 34 vytvářen na výstupu M01 první signál slu-čovatelnosti, který indikuje, zda Instrukce Oal mohou býtzpracovávány paralelně. Tento signál z výstupu 101 je vedendo generátoru 26 příznaků. Výstupní vedení druhého zjišťovacího obvodu 31 slučova- telnosti a druhého zjišťovacího obvodu 33 závislosti jsou připojeny ke dvěma vstupům 35a, 35b druhého součinového ob- -TV.: - 14 - vodu 35. Součinový obvod 35 vytváří na výstupu M12 druhý sig-nál kompatibility, který má binární hodnotu jedna, jestližeoba uvažované operační kódy (operační kódy pro Instrukce 1a 2) jsou kompatibilní a jestliže neexistují závislosti re-gistrů pro Instrukce 1 a 2 nebo existují závislosti registrů,které mohou být překonány pomocí hardwaru pro překonávánízávislosti. Jinak má druhý součinový obvod 35 výstupní vede-ní binární hodnotu nula. Výstupní vedení od druhého souči-nového obvodu 35 vede do druhého vstupu obvodu 26 generovánípříznaků.
Ostatní enalyznínené na obr. 3, majíznázorněna na obr. 4 telnosti. obvody 23 až 25 slučovatelnosti, znázor-stejnou vnitřní konstrukci, jaká jepro první enalyzní obvod 22 slučova-
Na obr. 5 je znázorněn příklad soustsvy logických obvo-dů, které je možno použít pro implementaci analyzního obvo-du 22 slučovatelnosti a části obvodu 26 generování přízna-ků, který je použit pro generování prvních tří příznaků, ato příznaku TAG 0,- TAG 1 a TÁG 2. V příkladě z obr. 5 sepředpokládá, že jsou dvě kategorie instrukcí, které jsouoznačeny jako kategorie A a kategorie B. Pravidla pro slučo-vání těchto kategorií instrukcí se předpokládají následují-cí:
(1) A se může vždy slučovat s A
(2) A se nikdy nemůže slučovat s B
(3) B se nikdy nemůže slučovat s B
(4) B se může vždy slučovat s A (5) Pravidlo (4) má přednost před pravidlem (1).
Je třeba si povšimnout, že tato pravidla jsou citlivá na pc· řadí, v němž se instrukce vyskytují. Dále se předpokládá, že tato pravidla jsou takové, že když jsou dodržována, nebudou problémy se závislostmi re- gistrů, protože pravidla implicitně indikují, že v případě, kdy se objevuje nějaké vzájemné blokování, jsou takte bio- - 15 - kované instrukce vždy proveditelné hardwarem pro překonává-ní datové závislosti,, Jinými slovy se pro příklad na obr. 5předpokládá, že nejsou zapotřebí zjištovací obvody 32 a 33z obr. 4. V takovém případě také nejsou zapotřebí součinovéobvody 34 a 35 a výstup zjištovacího obvodu 30 se stává sisnálem na výstupu MCI a výstup zjištovacího obvodu 31 sestává signálem na \rýstupu Ml2.
Pro tyto předpoklady ukazuje obr. 5 vnitřní soustavu logických obvodů, které mohou být použity pro zjištovací ob-vod 30 slučovatelncsti instrukcí a pro zjištovací obvod 31slučovetelnosti instrukcí z obr, 4. Jak ukazuje obr. 5, ob-sahuje zjištovací obvod 30 slučovatelncstiiinstrukcí deko-déry 40 a 4Í, součinové obvouy 42 a 43 se dvěma vstupy 42a42b, 43a, 43b a první součtový obvod 44. Zjištovací obvod31 slučovetelnosti druhé instrukce obsahuje dekodéry 41a 45, součinové obvody 46 a 47 a druhý součtový obvod 48.
Střední (druhý) dekodér 41 je sdílen oběma zjištovacími ob-vody 30 a 31. Ve schématu na obr. 5 jsou tedy zapojeny prv-ní dekodér 40 se vstupem 0P0 a výstupy 40a a 40b, druhý dekdér se vstupem OPI a výstupy 41a a 4lb a třetí dekodér45 se vstupem 0P2 a výstupy 45a a 45b.
První zjištovací obvod 30 vyšetřuje operační kódy navstupech OPO a OPI Instrukcí 0 a 1 pro určování jejich kom-patibility pro účely paralelního vykonávání. To se děje vsouladu s pravidly (1) - (4) uvedených výše. První dekodér40 sleduje operační kód první instrukce a jestliže jde o o-patření kód kategorie A, je výstup 4Ca prvního dekodéru 40nastaven na úroveň jedna. Je-li na vstupu CPO operační kódkategorie B, potom je výstup 40b prvního dekodéru 40 nasta-ven na úroveň jedna. Kepatří-li kód na vstupu 0P0 adi do kategorie A ani do kategorie B, potom jsou oba výstupy 4Ca4Ob prvního dekodéru 40 na binární úrovni nula. Druhý deko-dér 41 s výstupy 4la, 41b provádí podobný druh dekódovánípro druhý operační kód na vstupu OPI. 16 -
První součinový obvod 42 implementuje výše uvedené pra-vidlo (1). Je-li operační kód kategorie A a na vstupu OPIje také operační kód kategorie A, potom první součinový ob-vod 42 vytváří výstupní signál na výstupu 42c úrovně jedna.Jinak je na výstupu 42c prvního součinového obvodu 42 bi-nární úroveň nula. Druhý součinový obvod 43 implementujevýše uvedené pravidlo (4). Je-li první operační kód operač-ní kód kategorie 3 a druhý operační kód je operační kód ka-tegorie A, potom druhý součinový obvod 43 vytvoří na výstu-pu 43c výstupní úrovně jedna. Jinak vytváří výstup úrovněnula. Jestliže buď první součinový obvod 42 nebo druhý sou-činový obvod 43 vytváří výstup úrovně jedna, uvádí tc výs-tup prvního součctového obvodu 44 na úroveň jedna a signálslučovatelnosti na výstupu mOl má v tomto případě hodnotujedna. Tato hodnota jedna indikuje, že první a druhé in-strukce (Instrukce 0 a 5.) jsou kompatabilní pro účely pa-ralelního vykonávání.
Je-li dekodéry 40 a 41 zjištěna jakékoli jiná kombinaceoperačních kódů, potem výstupy 42c. 43c součinových obvodů42 a 43 zůstávají na nulové úrovni a signál slučovatelnostina výstupu M01 má hodnotu nula indikující neslučitelnost.Objevení se kombinací označených pravidly (2) a (3) tak neus-pokojuje součinové obvody 42 a 43 a signál na výstupu M01zůstává na nulové úrovni. V případě výskytu dalších katego-rií operačních kódů, jiných než jsou kategorie A a 3, jejichvýskyty v toku instrukcí neaktivují výstupy dekodérů 40 a41. Bude to tak mít podobně za následek, že hodnota signá-lu slučovatelnosti na výstupu BOI bude nula. ájištovací obvod 31 slučovatelnosti druhé instrukce vy-konává podobný typ analýzy operačního kódu pro druhou a tře-tí instrukci (Instrukce 1 a 2), Je-li operační kód na vstu-pu QP2 je operační kód kategorie A, potom vzhledem k pravid-lu (1) třetí součinový obvod 46 se vstupy 46a, 46b vytvářívýstupu 46c výstupní signál úrovně jedna a druhý signál slu- 17 - čovatelnosti na výstupu Ml 2 je uveden na binární úroveň jed-na indikující slučovatelnost. Jestliže naproti tomu ne vstu-pu OPI je operační kód kategorie B a na vstupu 0P2 je ope-rační kód kategorie A, potom v důsledku pravidla (4) je čtvrtý součinový obvod 47 se vstupy 47a> 47b aktivován pro vytváření binární úrovně jedna pro druhý signál slučovstelnostina výstupu M12. Prc jiné kombinace operativních kódů než kombinace stanovené v pravidlech (1) a (4) má signál na výstupu ů
Ml 2 hodnotu nula. Jak ukazuje obr. 5, má čtvrtý součinový obvod 47 výstup 47ct připojený ke vstupu 48b druhého součtové-ho obvodu 48, zatímco jeho druhý vstup 48a je spojen s vý-stupem 46c třetího součinového obvodu 46.
Signály slučovatelnosti na výstupech ...01 a Ml2 jsou do-dávány do obvodu 26 generování příznaků. Obr. 5 ukazuje sou-stavu logických obvodů, která může být použita v obvodu 26generování příznaků pro reagování na signály slučovatelnostina výstupech Ι.Ϊ01 a lil2 pro vytváření požadovaných hodnotpříznakových bitů pro příznaky TAG 0, 1 a 2«, Tabulka na obr06 ukazuje logiku, která je implementována obvodem 26 genero-vání příznaků pro příznaky TAG 0, 1 a 2. Hodnota příznakové-ho bitu jedna udává, že přidružená instrukce je "první in-strukce" pro účely paralelního provádění. Hodnota příznako-vého bitu nula indikuje, že přidružení instrukce je "druhá"instrukce pro účely paralelního vykonávání. Jediné páry in-strukcí, které jsou slučovány a vykonávány paralelně jsouty, pro které první instrukce ve dvojici má hodnotu přízna-kového bitu jedna a druhá instrukce ve dvojici má hodnotupříznakového bitu 0. Jakákoli instrukce mající hodnotu pří-znakového bitu jedna, po které následuje jiná instrukce ma-jící hodnotu příznakového bitu jedna, je vykonávána samostatně jednotlivým způsobem a nikoliv paralelně s následujícíinstrukcí.
Pro případ z první řádky na obr. 6 mají všechny tři pří- znakové bity hodnotu jedna. To znamená, že každá z instruk- cí C a 1 bude vykonána jednotlivým, neparalelním způsobem. 18 -
Pokud jde o druhou řádku na obr. 6, instrukce 0 a 1 budouvykonány paralelně, protože příznak 0 má požadovanou hodnotujedna a příznak 1 má požadovanou hodnotu 0» Pokud jde o tře-tí řádku na obr. 6, instrukce 0 bude vykonávána jednotlivýmzpůsobem, zatímco instrukce 1 a 2 budou vykonávány vzájemněspolu paralelně. Pokud jde o čtvrtou řádku, instrukce 0 a ibudou vykonávány vzájemně spolu rovnoběžně.
Pro případy, kde má příznak 2 binární hodnotu jedna, jestatus jemu přidružené instrukce 2 závislý na binární hodno-tě pro příznak 3« Jestliže má příznak 3 binární hodnotu 0,potom instrukce 2 a 3 mohou být vykonávány paralelně. Jestliže naproti tomu má příznak 3 binární hodnotu jedna, potominstrukce 2 bude vykonávána jednotlivým neparalelním způso-bem. Je třeba poznamenat, že logika implementovaná pře obvod26 generování příznaků neimplementuje výskyt dvou po soběnásledujících příznakových bitů majících binární hodnoty nu-la.
Vyšetřování obr. 6 ukazuje logiku, jakou je třeba imple-mentovat částí obvodu 26 generování příznaků, znázorněnouna obr. 5. Jak ukazuje obr. 6, bude mít příznak 0 vždy binár-ní hodnotu jedna. Toto je dosahováno tím, že se přivádí kon-stantní binární hodnota jedna na výstupní vedení 50 obvodugenerování příznaků, které tvoří výstupní vedení příznaku0 (TAG 0). Prohlídka obr. 6 dále ukazuje, že bitová hodnotapro příznak 1 je vždy opačná bitová hodnotě signálu slučo-vatelnosti na výstupu MOl. Tento výsledek je dosahován připo-jováním výstupního vedení 51 pro příznak 1 k výstupu první-ho invertoru 52, jehož vstup je připojen k vedení signáluna výstupu 1401.
Binární úroveň na výstupním vedení 53 příznaku 2 je ur-čována součtovým obvodem 54 a druhým invertorem 55» Jedenvstup součtového obvodu 54 je připojen k výstupu MO1. Jest-liže signál na výstupu 1401 má hodnotu jedna, potom příznak2 má hodnotu jedna. To se týká hodnot příznaku 2. na druhéma čtvi-tém řádku obr. 6. Druhý vstup součetévho obvodu 54 je - 19 - připojen přes druhý invertor 55 k výstupu M12. Jestliže sig-nálnál na výstupu M12 má binární hodnotu nula, tato hodno-ta je invertována druhým invertorem 55 na přivádění hodno-ty binární jedničky na druhý vstup součtového obvodu 54. Topůsobí, že výstupní vedení 53 příznaku 2 má binární hodnotujedna. To se týká hodnoty příznaku 2 pro řádek jedna na obr,, 6. Je třeba si povšimnout toho, že pro případ řádky 3 musímít příznak hodnotu nula. K tomu dojde proto, že v" tomtopřípadě bude mít signál MOl hodnotu nula a signál Ml2 budemít hodnotu jedna, která je invertována druhým invertorem 5,5 pro získání nuly na druhém vstupu součtového obvodu 54o
Implicitní v logice z obr0 6 je prioritní pravidlo propřípad řádku čtyři, kde každý ze signálů na výstupech MCIa Ml2 mají binární hodnotu jedna. Případ tohoto řádku čtyřimůže být získán sledem instrukčních kategorií 3AA. To můžebýt implementováno sledem příznaků 101, jak je uvedeno v obr.6, nebo alternativně sledem příznaků 110. V daném provede-ní se postupuje podle pravidla 5 a je zvolen sled 101 zná-zorněný na obr. 6. Jinými slovy je párování BA dávána před-nost před párováním AA.
Kombinace 1,1 pro signál na výstupu KOI a M12 může býttaké dosažena sledem operačních kódů AAA. V tomto případěse opět zvolí sled 101 příznaků z obr. 6. To je lepší, pro-tože zajištuje hodnotu jedna pro příznak 2 a tedy patenciel-ně umožňuje slučovat Instrukci 2 a Instrukci 3, jestliže In-strukce 2 je kompatabilní s Instrukcí 3.
Na obr. 7 je znázorněn detailní příklad, jak může býtkonstruován počítačový systém pro používání slučovacích pří-znaků podle vynálezu pro zajištění paralelního zpracovávánípočítačových instrukcí ve strojovém kódu. Slučovací jednot-ka 20 instrukcí, použitá na obr. 7, se předpokládá být typupopsaného na obr. 3 a jako taková přidává ke každé instruk-ci jednobitové příznakové pole. Tato příznaková pole jsoupoužívána pro identifikování, které dvojice instrukcí mohou 20 - být zpracovávány paralelně. Tyto instrukce opatřené přízna-ky je přiváděny a ukládány do druhého pamětového obvodu 12s rychlým přístupem. Vyvolávací a vydávací"řídicí jednotka60 vyvolává instrukce opatřené příznaky z rychlé vyrovnávacípaměti druhého pamětového období 12 podle potřeby a uspořádá- vá je pro jejich zpracovávání,odpovídá jícími ze skupiny fun-kčních jednotek 61, 62, 63 a 64 pro zpracovávání instrukcí.Vyvolávací a vydávací jednotka 60 vyšetřuje příznaková polea pole operačních kódů vyvolávaných instrukcí. Jestliže pří-znaková pole indikují, že dvě po sobě následující instrukcemohou být zpracovávány paralelně, potom vyvolávací a vydáva-cí jednotka 60 je přiděluje do odpovídajících z funkčníchjednotek 61 až 64, jak je určováno jejich operačními kódy ajsou zpracovávány paralelně zvolenými funkčními jednotkami.Jestliže příznaková pole indikují, že se má obzvláštní in-strukce zpracovávat jednotlivým, neparalelním způsobem, po-tem vyvolávací a vydávací. jednotka řídicí 60 ji přidělujek určité funkční jednotce, jak je určováno jejím operačnímkódem a je zpracovávána nebo vykonávána samostatně.
Jednotky 60 až 64 představují konkrétnější provedení spodní části schématu znázorněného na obr. 1. Jednotka 60 odpo-vídá vyvolávacímu a vydávacímu obvodu 16 a funkční jednotky61, 62, 63, 64 jsou konkrétními příklady provedení jednot-livých funkčních jednotek 13, 14, 15 z obr. 1.
První funkční jednotka je zpracovávací jednotka 61 in-strukcí větvení pro zpracovávání instrukcí typu větvení. Dru-há funkční jednotka je třívstupová aritmetická a logická jed-notka 62 pro generování adres, která je používána pro výpo-čet adres ukládání pro instrukce, které přenášejí operandydo paměti nebo k paměti. Třetí funkční jednotka je univer-zální aritmeticko-logická jednotka 63., která je použita provykonávání operací matematického a logického typu. Čtvrtáfunkční jednotka v daném příkladě je aritmeticko-logickájednotka 64 pro překonávání datové závislosti (collapsingdata dependency) typu popsaného ve výše uvedeném souvisejí- 21 cím americkém patentovém spise č. ,....._(patentová přihláška O7/5C4 910 - IBM Doeket EN9-9O-O14). Tato aritme-ticko-logická jednotka 64 pro překonávání závislosti je tři-vstupová aritmeticko-logická jednotka schopná vykonávat dvěaritmeticko-logické operace v jediném strojním cyklu.
Provedení počítačového systému z obr. 7 také zahrnujesoubor univerzálních registrů 65 pro použití při vykonáváníurčitých instrukcí ve strojové úrovni. V typickém případějsou tyto univerzální registry 65 použity pro dočasné uklá-dání datových operandů a adresových operandů nebo jsou používány jako čítače nebo pro jiné účely zpracovávání dat. V ty-pickém počítačovém systému je použito šestnáct takových uni-verzálních registrů. V daném provedení se předpokládá, žeuniverzální registry 65 jsou typu s více branami, přičemžje možno přistupovat současně na dva nebo více registrů.
Počítačový systém z obr. 7 dále obsahuje vysokorychlost-ní datový mechanismus s vyrovnávací pamětí 66 s rychlým pří-stupem pro ukládání datových operandů, získávaných z první-ho pamětového obvodu 10 vyšší úrovně. Data ve vyrovnávacípaměti 66 s rychlým přístupem mohou být také přenášena zpětdo paměťové jednotky pamětového obvodu 10 vyšší úrovně. Da-tová vyrovnávací pamět 66 s rychlým přístupem může být zná-mého typu a její operace vzhledem k paměti pamětového obvodu10 vyšší úrovně může být vedena známým způsobem.
Obr. 8 ukazuje příklad instrukčního sledu, slučovanéhonebo opatřeného příznaky, který může být zpracováván počíta-čovým systémem z obr. 7« Příklad z obr. 8 je složen z násle-dujících instrukcí v následujícím sledu: zaveď, přičti, po-rovněj, proveď podmíněné větvení a ulož. Tyto instrukce jsouoznačeny jako instrukce 11 až 15 v uvedeném pořadí. Přízna-kové bity pro tyto odpovídající instrukce jsou 1,1, 0, 1 a0. Vzhledem k organizaci stroje znázorněného na obr. 7, sezpracovává instrukce "zaveď" jednotlivým způsobem samotná.Instrukce "přičti" a "porovnej" jsou považovány jako slouče-ná instrukce a jsou prováděny vzájemně spolu paralelně. In- 22 strukce "proveďr podmíněné větvení" a "ulož" jsou také pova-žovány za sloučenou instrukci a jsou také zpracovávány vzá-jemně spolu paralelně.
Tabulka z obr. 9 poskytuje další informaci o každé z těchto instrukcí z obr. 8. Sloupec R/M na obr· 9 udává obsah pr-vního pole v každé instrukci, který se v typickém případěpoužívá pro identifikování obzvláštního z univerzálních re-gistrů 6$, který obsahuje první operand. Výjimka vt tomto pří-padě je instrukce "proveď podmíněné větvení", kde pole R/Mobsahuje masku podmínkového kódu. Sloupec R/X na obr. 9 udá-vá obsah druhého pole každé instrukce, přičemž toto pole jev typickém případě použito pro označování druhého z univer-zálních registrů 65. Takový registr může obsahovat druhý ope-rand nebo může obsahovat hodnotu adresového indexu (X). Slou-pec B na obr. 9 udává obsah třetího možného pole v každé in-strukci, které může identifikovat obzvláštní registr z uni-verzálních registrů 65, který obsahuje základní hodnotu adre-sy- Nula ve sloupci 3 udává nepřítomnost pole 3 nebo nepří-tomnost odpovídající adresové složky v poli 3. Podle D nastr. 9 udává obsah dalšího pole v každé instrukci, které,pokud je použito pro účely generování adres, obsahuje hodno-tu posunu adresy. Nula ve sloupci D může také udávat nepří-tomnost odpovídajícího pole v obzvláštní uvažované instruk-ci nebo alternativně nulovou hodnotu posunu adresy.
Uvažujeme-li nyní zpracovávání instrukce "zaveď" z obr.8, určuje vyvolávací a vydávací řídicí jednotka 60 z pří-znakových bitů pro tuto instrukci "zaveď" a následující in-strukci "přičti", že instrukci "zaveď" je třeba zpracovávatjednotlivým způsobem samotnou. Činnost, která má být vykoná-na touto instrukcí "zaveď", je vyvolat operand z paměti,v tomto případě datové rychlé vyrovnávací paměti 66 a ulo-žit takový operand do univerzálního registru R2. Pamětováadresa, z níž má být tento operand vyvolán, je určena sečte-ním hodnoty indexu v registru X, základní hodnoty v registru - 23 - B a hodnoty posunu v L. Vyvolávscí a vydávací řídicí jednot-ka 60 přiděluje tuto operaci generování adresy aritmeticko-logické jednotce 62 pro generování adres. V tomto případěaritmeticko-logická jednotka 62 sečte hodnotu indexu adresyv registru X (nulovou hodnotu v daném příkladě), základníadresovou hodnotu obsaženou v univerzálním registru 37 a hod-notu posunu adresy (nulová hodnota v daném příkladě), obsa-žené v samotné instrukci. Výsledná vypočítaná pamětová adre- <1 sa, která se objevuje na výstupu aritmeticko-logické jednotky62 je vedena na adresový vstup datové rychlé vyrovnávací pa-měti 66 pro přístup k požadovanému operandu. Operand, k ně-muž je zajištcván přístup, je zaváděn do univerzálního re-gistru 32 v souboru registrů 69.
Pokud jde o zpracovávání instrukcí "přečti a porovnej",jsou tyto instrukce vyvolávány vyvolávscí a vydávací řídicíjednotkou 60. Vyvolávací a vydávací řídicí jednotka 60 vy-šetřuje slučovací příznaky pro tyto dvě instrukce a zjištu-je, že mohou být vykonávány paralelně. Jak je patrné z obr. 9, instrukce "porovnej" má zjevnou datovou závislost na in-strukci "přičti", protože instrukce "přičti" musí být hotovadříve, než může být R3 porovnáváno. Tato závislost však mů-že být zpracována aritmeticko-logickou jednotkou 64 pro pře-konávání datové závislosti (collapsing data dependency). V důsledku toho mohou být tyto obě instrukce zpracováványparalelně v uspořádání z obr. 7» Konkrétně přiděluje řídicívyvolávací a vydávací jednotka 60 zpracování instrukce "přič-ti" do aritmeticko-logické jednotky 63 a přiděluje zpracová-ní instrukce "porovnej" do aritmeticko-logické jednotky 64pro překonávání závislosti. Aritmeticko-logická jednotka 63přičítá obsah univerzálního registru 32 k obsahu univerzál-ního registru 33 a ukládá výsledek sčítání zpět do univerzál-ního registru. Současně aritmeticko-logická jednotka 64 propřekonávání závislosti vykonává následující matematickou ope-raci : 33 + 32 - 34
Podmínkový kód pro výsledek této operace je vysílán do re-gistru podmínkového kódu umístěného ve zpracovávací jednot-ce 61 instrukcí větvení, Datová závislost je překonávána,protože aritmeticko-logická jednotka 64 totiž skutečně vypo-čítává součet R3 + R2 a potom srovnává tento součet s 34pro určení podmínkového kódu. Tímto způsobem aritmeticko-lo-gická jednotka 64 nemusí čekat na výsledky z aritmeticko-logické jednotky 63, která vykonává instrukci sčítání, V tomto konkrétním případe numerické výsledky vypočítané aritme-ticko-logickou jednotkou 64 a objevující se na výstupu arit-met icko-logické jednotky 64 nejsou dodávány zpět do univer-zálního registru 65V tomto případě aritmeticko-logickájednotka 64 pouze nastavuje podmínkový kód.
Pokud jde o zpracovávání instrukce provedení podmíněnéhově tvení a ukládání na obr. 8, jsou tyto instrukce vyvolává-ny z rychlé vyrovnávací paměti -12 sloučených instrukcí ří-dicí vyvolávací a vydávací řídicí jednotkou 60, Vyvolávacía vydávací řídicí jednotka 60 určuje z příznakových bitůpro tyto instrukce, že nemusí být zpracovávány navzájem spo-lu paralelně. Dále z operačních kódů obou instrukcí, určuježe instrukce podmíněného větvení by měla být zpracovávánazpracovávací jednotkou 61 instrukcí větvení a instrukce ukládání by měla být zpracovávána aritmeticko-logickou jednotkou62 pro generování adres, V souladu s tímto určením pole Idmasky a pole D posunu instrukce podmíněného větvení jsou ve-deny do jednotky větvení 61, Podobně se hodnota indexu adre-sy v registru X a základní hodnota adresy v registru 3 protuto instrukci podmíněného větvení získají z univerzálníchregistrů 65 a jsou dodávány do jednotky 61 větvení, V danémpříkladě je hodnota registru X nula a základní hodnota sezíská z univerzálního registru R7. Hodnota D posunu má hexa-decimální hodnotu dvacet, zatímco pole M masky má hodnotupolohy masky osm.
Jednotka 61 větvenívětvení (0 + R7 + 20) a začíná počítat potenciální adresu současně srovnává podmínkový kód - 25 - získaný z předchozí instrukce "srovnej" s maskou M podmín-kového kódu. Je-li hodnota podmínkového kódu stejná, jako jehodnota kódu masky, je potřebná podmínka větvení splněna aadresa větvení vypočítaná jednotkou 61 větvení je na to ulo-žena do počítadla instrukcí v řídicí jednotce 60« Toto počí-tadlo instrukcí řídí vyvolávání instrukcí z rychlé vyrovná-vací paměti 12 slučovaných instrukcí. Jestliže naproti tomupodmínka není splněna, tj. podmínkový kód nastavený předcho-zí instrukcí nemá hodnotu osm, potom nedochází k větvení ažádná adresa větvení není dodávána do počítače instrukcív řídicí jednotce 60.
Současně s tím, kdy je jednotka 61 větvení zaměstnánaprováděním svých zpracovávacích činností pro instrukci větve-ní, aritneticko-logické jednotka 62 pro generování adres jezaměstnána vypočteni adresy (0 + R7 + 0) pro instrukci "ulož"Adresa vypočítaná aritmeticko-logickou jednotkou 62 je dodá-vána do datové rychlé vyrovnávací paměti 66. Jestliže neníprovedeno žádné větvení jednotkou 61 větvení, potom instrukce"ulož" provádí uležení operandu v univerzálním registru R3do datové rychlé vyrovnávací paměti 66 na adrese vypočítanéaritmeticko-logickou jednotkou 62. Jestli naproti ternu je ppodmínka větvení splněna a k větvení dochází, potom obsahuniverzálního registru R3 není uložen do datové rychlé vy-rovnávací paměti 66. Výše uvedený sled instrukcí z obr. 8 je určen pouze ja-ko příklad. Počítačový systém podle obr. 7 je rovněž schop-ný zpracovávat různé e jakékoli jiné sledy instrukcí. Pří-klad z obr. 8 však jasně ukazuje užitečnost příznaků slučova-ných instrukcí při určování, které instrukce mohou být zpra-covány paralelně navzájem splu. I když to, co bylo popsáno, je považováno za výhodná pro-vedení vynálezu, bude zřejmé odborníkům v oboru, že v rámcivynálezu je možné provést různé změny’ a obměny, aniž by seopustila jeho myšlenka. Vynález proto všechny takové změnya modifikace kryje, které jsou v jeho duchu a spadají do je-ho myšlenky.

Claims (8)

  1. - 26 - PATENTOVÉ
    1. Zapojení pro paralelní zpracování dvou nebo více in- strukcí v číslicovém počítači vyznačené tím, že obsahuje prv-ní paměťový obvod (ÍO) opatřený univerzálním výstupem (10a)slučovací obvod instrukcí (11) opatřený univerzálním vstupem(11a) připojeným k universálnímu výstupu (lCa) prvního pamě-ťového obvodu (10) a dále opatřený druhým univerzálním výstu-pem (lib), druhý paměťový obvod (12) opatřený univerzálnímvstupem (12a) připojeným ke druhému univerzálnímu výstupu (11b) slučovscího obvodu (11) instrukcí a dále opatřený dru-hým univerzálním výstupem((12b), vyvolávací a vydávací obvod(16) opatřený univerzálním vstupem (16a) připojeným k univer-zálnímu výstupu (12b) druhého paměťového obvodu (12) a uni-versálním výstupem. (16b), a dále dvě nebo více funkčních jed-notek (13, 14, 15) pro zpracovávání instrukcí, opatřené kaž-dá univerzálním vstupem (13a, l4a, 15s) připojeným ke druhé-mu univerzálnímu výstupu (16b) vyvolávacího a vydáváčího cbAvedu (16).
  2. 2. Zapojení podle nároku 1 vyznačené tím, že slučovacíobvod (11) instrukcí obsahuje vstupní registr (21) instrukcís nejméně třemi paměťovými poli (INSTO, INSTI, INST2), opat-řený univerzálním vstupem (21a) připojeným k univerzálnímu výstupu (lCa) prvního paměťového obvodu (10), a dále opatře-ný nejméně jedním dalším výstupem (21b), dále nejméně jedenanalyzní obvod (22) slučovatelnosti opatřený vstupem (22a)připojeným k výstupu (21b) vstupního registru (21) instruk-cí a dále opatřený nejméně dvěma výstupy (1401, EQ.2), dáleobvod (26) generování příznaků, mající nejméně dva vstupypřipojené ke dvěma výstupům (biOÍ, 1412) analyzníhc obvodu (22)slučovatelnosti, a dále nejméně třemi výstupy (TÁGO, TAG1, TAG2), a dále výstupní registr (27) instrukcími paměťovými poli (TO, INSTO, Tl, INSTI; T2,řený nejméně třemi vstupy připojenými ke třemTAG1, TAG2 ) obvodu (26) generování příznaků a s nejméně tře-INST2), opat-výstupům (TÁGO,dále opatřený univerzálním výstupem (27s) připojeným ž universálnímu vstu- - 27 - pu (12a) druhého paletového obvodu (12).
  3. 3. Zapojení podle nároku 2 vyznačené tím, že analyzníobvod (22) slučování obsahuje první zjistovací obvod (30)slučitelnosti instrukcí, mající dva vstupy (OPC, OPI) připo-jené k univerzálnímu výstupu (2lb) vstupního registru (21)instrukcí a dále mající výstup (30a), dále druhý zjistovacíobvod (31) slučitelnosti instrukcí, opatřený dvěma vstupy(OPI, 0P2) připojenými k univerzálnímu výstupu (21b) vstup-ního registru (21) instrukcí, a výstupem (31a), dále prvnízjistovací obvod (32) závislosti registrů a druhý zjištcvacíobvod (33) závislosti registrů, které jsou opatřeny každý od-povídajícími vstupy (32a, 33a) připojenými k univerzálnímuvýstupu (21b) vstupního registru (21) instrukcí, a dále jsouopatřeny odpovídajícím výstupem (32b, 33b), a dále první sou-činový obvod (34) se dvěma vstupy (34a, 34b) připojenými kvýstupům (30a, 32b) prvního zjištovacího obvodu (30) sluči-telnosti instrukcí a prvního zjištovacího obvodu (32) závis-losti registrů a dále s výstupem připojeným ke vstupu (obvo-du (26) generování příznaků, a dále druhý součinový obvod(35) mající dva vstupy (35a, 35b) připojené k výstupům (31a,33b) druhého zjištovacího·obvodu (31) slučitelnosti a druhé-ho zjištovacího obvodu (33) závislosti registrů a opatřenýdále výstupem připojeným ke vstupu obvodu (26) generovánípříznaků.
  4. 4. Zapojení podle nároku 3 vyznačené tím, že první a dru-hý zjistovací obvod (30, 3Í) slučitelnosti instrukcí společněobsahují první dekodér (40), opatřený vstupem (OPC) připo-jeným k univerzálnímu výstupu (21b) vstupního registru (21)instrukcí, a dále opatřený dvěma výstupy (40a, 40b), dáledruhý dekodér (4Í) opatřený vstupem (OPI) připojeným k uni-verzálnímu výstupu (21b) vstupního registru (21) instrukcí aopatřený dále dvěma \jstupy (41a, 41b), dále třetí dekodér(45) opatřený vstupem (0P2) připojeným k univerzálnímu výstu-pu (21b) vstupního registru instrukcí (21) a dále opatřenýdvěma výstupy (45a, 45b), dále první součinový obvod (42)obvod se dvěma vstupy (42a, 42b) připojenými k výstupu (40a) - 28 - prvního dekodéru (40) a výstupu (4la) druhého dekodéru (41)a dále s výstupem (42c), dále druhý součinový obvod (43) sedvěma vstupy (43a, 43b) připojenými k výstupu (40b) prvníhodekodéru (40) a výstupu (4la) druhého dekodéru (41) a dáles výstupem (43c), dále třetí součinový obvod (46) se dvěmavstupy (46a, 46b) připojenými k výstupu (41a) druhého dekodé-ru (41) a k výstupu (45a) třetího dekodéru (45) a dále s vý-stupem (46c), dále čtvrtý součinový obvod (47) se dvěma vstu-py (47a, 47b) připojenými k výstupu (41b) druhého dekodéru(41) a k výstupu (45a) třetího dekodéru (45) a dále s výstu-pem (47c), dále první součtový obvod (44), mající dva vstupy(44a, 44b) připojené k výstupum (4^p, 43c) prvního a druhéhosoučinového obvodu (42, 43) a mající dále výstup připojenýke vstupu (KOI) obvodu (26) generovaní příznaků a dále obsa-huje druhý součtový obvod (48) mající dva vstupy (4Sa, 48b)spojené s výstupy (46c, 47c) třetího a čtvrtého součinového obvodu (46, 47) a dále opatřený výstupempu (M12) obvodu (26) generování příznaků. ;o jeným ke vstu-
  5. 5. Zapojení podle kteréhokoli z nároků 2 až 4 vyznačenétím, že obvod (16) generování příznaků obsahuje první inver-tor (52) opatřený vstupem'spojeným s výstupem (KOI) analyz-ního obvodu slučování (22) a výstupem spojeným se vstupem(TAGl) výstupního registru (27) instrukcí, dále obsahuje dru-hý invertor (55) opatřený vstupem spojeným s výstupem (1412) s výstupem analyzního obvodu (22) slučování a dále opatřenývýstupem (55a), a déle obsahuje součtový obvod (54) opatře-ný dvěma vstupy spojenými s výstupem (MCI) analyzního obvodu(22) slučovatelnosti a s výstupem (55a) druhého invertoru(55) a dále opatřený výstupem spojeným se vstupem (TAG2)výstupního registru (27) instrukcío
  6. 6. Zapojení podle kteréhokoli z nároků 1 až 5 vyznačenétím, že funkční jednotky (13, 14, 15) na obsahují zpracováva-cí jednotku (61) instrukcí větvení, aritmetickou a logickoujednotku (62) pro generování adres, univerzální aritmetickoua logickou jednotku (63) a aritmetickou a logickou jednotku(64) pro překonávání datové závislosti. 29 -
  7. 7. Zapojeni podle kteréhokoli z nároků 1 až 6 vyznačenétím, že první pamětový obvod (10) sestává z velkokapacitnínízkorychlostní paměti.
  8. 8. Zapojení podle kteréhokoli z nároků 1 až 7 vyznačenétím, že druhý pamětový obvod (12) sestává z malckapacitnívysokorychlostní paměti.
CS91933A 1990-05-10 1991-04-04 Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači CZ279899B6 (cs)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/522,291 US5214763A (en) 1990-05-10 1990-05-10 Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism

Publications (2)

Publication Number Publication Date
CS93391A3 true CS93391A3 (en) 1992-05-13
CZ279899B6 CZ279899B6 (cs) 1995-08-16

Family

ID=24080285

Country Status (11)

Country Link
US (2) US5214763A (cs)
EP (1) EP0455966B1 (cs)
JP (1) JPH0776924B2 (cs)
AT (1) ATE131637T1 (cs)
BR (1) BR9101913A (cs)
CA (1) CA2040304C (cs)
CZ (1) CZ279899B6 (cs)
DE (1) DE69115344T2 (cs)
HU (1) HU214423B (cs)
PL (1) PL165491B1 (cs)
RU (1) RU2111531C1 (cs)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
DE69130757T2 (de) * 1990-11-30 1999-07-29 Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa Ausführungsvorrichtung für bedingte Verzweigungsbefehle
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
US5446850A (en) * 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5787303A (en) * 1991-10-31 1998-07-28 Kabushiki Kaisha Toshiba Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
WO1993022722A1 (en) 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5590348A (en) * 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5651121A (en) * 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
EP1107111A3 (en) * 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5673409A (en) * 1993-03-31 1997-09-30 Vlsi Technology, Inc. Self-defining instruction size
US5752013A (en) * 1993-06-30 1998-05-12 Intel Corporation Method and apparatus for providing precise fault tracing in a superscalar microprocessor
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
EP0652510B1 (en) * 1993-11-05 2000-01-26 Intergraph Corporation Software scheduled superscalar computer architecture
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor
US5546599A (en) * 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
TW260765B (cs) * 1994-03-31 1995-10-21 Ibm
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5748950A (en) * 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
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
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5812812A (en) * 1996-11-04 1998-09-22 International Business Machines Corporation Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
EP0855648A3 (en) * 1997-01-24 1999-12-22 Texas Instruments Inc. Data processing with parallel or sequential execution of program instructions
EP0924603A3 (en) * 1997-12-16 2001-02-07 Lucent Technologies Inc. Compiler controlled dynamic scheduling of program instructions
US6014513A (en) * 1997-12-23 2000-01-11 University Of Washington Discovering code and data in a binary executable program
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6345355B1 (en) 1998-05-29 2002-02-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing commands to a plurality of circuit blocks
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
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
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6314471B1 (en) 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US6430676B1 (en) 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP2001034474A (ja) * 1999-07-16 2001-02-09 Nec Corp データ処理装置及びデータ処理方法
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
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
US6738794B2 (en) 2001-04-10 2004-05-18 Analog Devices, Inc. Parallel bit correlator
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6766345B2 (en) 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US7177891B2 (en) * 2002-10-09 2007-02-13 Analog Devices, Inc. Compact Galois field multiplier engine
US7269615B2 (en) * 2001-12-18 2007-09-11 Analog Devices, Inc. Reconfigurable input Galois field linear transformer system
US7283628B2 (en) 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
WO2003048947A1 (en) * 2001-11-30 2003-06-12 Analog Devices, Inc. Reconfigurable input galois field linear transformer system
US7082452B2 (en) * 2001-11-30 2006-07-25 Analog Devices, Inc. Galois field multiply/multiply-add/multiply accumulate
US7895253B2 (en) 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US6941446B2 (en) * 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
US7000090B2 (en) * 2002-01-21 2006-02-14 Analog Devices, Inc. Center focused single instruction multiple data (SIMD) array system
US6865661B2 (en) * 2002-01-21 2005-03-08 Analog Devices, Inc. Reconfigurable single instruction multiple data array
US20040128483A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Fuser renamer apparatus, systems, and methods
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US9436468B2 (en) * 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US7669039B2 (en) * 2007-01-24 2010-02-23 Qualcomm Incorporated Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
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
US8898433B2 (en) * 2012-04-26 2014-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Efficient extraction of execution sets from fetch sets

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3293616A (en) * 1963-07-03 1966-12-20 Ibm Computer instruction sequencing and control system
US3470540A (en) * 1967-04-24 1969-09-30 Rca Corp Multiprocessing computer system with special instruction sequencing
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
US3781814A (en) * 1971-10-07 1973-12-25 Raytheon Co Method and apparatus for applying source language statements to a digital computer
US4197589A (en) * 1977-12-05 1980-04-08 Texas Instruments Incorporated Operation sequencing mechanism
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
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
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4591972A (en) * 1982-11-15 1986-05-27 Data General Corp. Data processing system with unique microcode control
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
SU1241250A1 (ru) * 1984-01-04 1986-06-30 Предприятие П/Я А-3756 Адаптивна система обработки данных
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
SU1295410A1 (ru) * 1985-07-08 1987-03-07 Институт кибернетики им.В.М.Глушкова Процессор дл мультипроцессорной системы
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
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
JPH0769824B2 (ja) * 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
JPH02253356A (ja) * 1989-03-28 1990-10-12 Toshiba Corp 階層キャッシュメモリ装置とその制御方式
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
DE69123629T2 (de) * 1990-05-04 1997-06-12 International Business Machines Corp., Armonk, N.Y. Maschinenarchitektur für skalaren Verbundbefehlssatz
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors

Also Published As

Publication number Publication date
US5475853A (en) 1995-12-12
DE69115344D1 (de) 1996-01-25
DE69115344T2 (de) 1996-06-20
BR9101913A (pt) 1991-12-17
CA2040304C (en) 1995-04-11
JPH0776924B2 (ja) 1995-08-16
JPH04230528A (ja) 1992-08-19
US5214763A (en) 1993-05-25
RU2111531C1 (ru) 1998-05-20
EP0455966B1 (en) 1995-12-13
EP0455966A3 (en) 1993-11-10
HU911099D0 (en) 1991-10-28
PL165491B1 (pl) 1994-12-30
EP0455966A2 (en) 1991-11-13
CZ279899B6 (cs) 1995-08-16
HU214423B (hu) 1998-03-30
ATE131637T1 (de) 1995-12-15
HUT57454A (en) 1991-11-28

Similar Documents

Publication Publication Date Title
CZ279899B6 (cs) Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači
RU2109333C1 (ru) Цифровой компьютер с возможностью параллельного выполнения двух и более команд
US6820223B2 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
EP0368332B1 (en) Pipeline data processor
EP0496928B1 (en) Compounding preprocessor for cache
EP0407911B1 (en) Parallel processing apparatus and parallel processing method
US5313551A (en) Multiport memory bypass under software control
US6449710B1 (en) Stitching parcels
EP0479390B1 (en) Processing device including a memory circuit and a group of functional units
EP1296227B1 (en) Valid instruction dispatching and execution
US5692139A (en) VLIW processing device including improved memory for avoiding collisions without an excessive number of ports
JPH04229326A (ja) スカラ命令の並列実行を得る方法およびシステム
US6035122A (en) Compiler for converting source program into object program having instruction with commit condition
US7015718B2 (en) Register file apparatus and method for computing flush masks in a multi-threaded processing system
KR20000075837A (ko) 보호형의 매우 긴 명령어 아키텍처를 위한 향상된 명령 디스패치 메카니즘
US6892295B2 (en) Processing architecture having an array bounds check capability
US5930520A (en) Pipelining device in a parallel processing apparatus and an instruction supplying method therefor
EP0139080B1 (en) An information-processing system
EP0954791A4 (en) EIGHT BIT MICRO CONTROLLER WITH RISC ARCHITECTURE
US20020116599A1 (en) Data processing apparatus
El-Kharashi et al. A robust stack folding approach for Java processors: an operand extraction-based algorithm
JPH063583B2 (ja) 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法
CA2040637C (en) Compounding preprocessor for cache
WO1998006039A1 (en) Disambiguation memory circuit and operating method

Legal Events

Date Code Title Description
IF00 In force as of 2000-06-30 in czech republic
MM4A Patent lapsed due to non-payment of fee

Effective date: 20010404