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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)
- - 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. 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. 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. 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. 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. 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. 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. 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.
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)
| 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)
| 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 |
-
1990
- 1990-05-10 US US07/522,291 patent/US5214763A/en not_active Expired - Lifetime
-
1991
- 1991-03-20 DE DE69115344T patent/DE69115344T2/de not_active Expired - Lifetime
- 1991-03-20 EP EP91104318A patent/EP0455966B1/en not_active Expired - Lifetime
- 1991-03-20 AT AT91104318T patent/ATE131637T1/de not_active IP Right Cessation
- 1991-04-03 RU SU4894952A patent/RU2111531C1/ru active
- 1991-04-03 JP JP3096094A patent/JPH0776924B2/ja not_active Expired - Lifetime
- 1991-04-03 PL PL91289720A patent/PL165491B1/pl not_active IP Right Cessation
- 1991-04-04 CZ CS91933A patent/CZ279899B6/cs not_active IP Right Cessation
- 1991-04-04 HU HU911099A patent/HU214423B/hu not_active IP Right Cessation
- 1991-04-12 CA CA002040304A patent/CA2040304C/en not_active Expired - Lifetime
- 1991-05-09 BR BR919101913A patent/BR9101913A/pt unknown
-
1994
- 1994-01-24 US US08/186,225 patent/US5475853A/en not_active Expired - Lifetime
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 |