CZ279899B6 - Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači - Google Patents
Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači Download PDFInfo
- Publication number
- CZ279899B6 CZ279899B6 CS91933A CS93391A CZ279899B6 CZ 279899 B6 CZ279899 B6 CZ 279899B6 CS 91933 A CS91933 A CS 91933A CS 93391 A CS93391 A CS 93391A CZ 279899 B6 CZ279899 B6 CZ 279899B6
- Authority
- CZ
- Czechia
- Prior art keywords
- output
- circuit
- instruction
- instructions
- universal
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 34
- 238000001514 detection method Methods 0.000 claims description 30
- 102100024342 Contactin-2 Human genes 0.000 claims description 4
- 101000690440 Solanum lycopersicum Floral homeotic protein AGAMOUS Proteins 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 abstract description 3
- 238000013329 compounding Methods 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 16
- 239000000872 buffer Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 101100368725 Bacillus subtilis (strain 168) tagF gene Proteins 0.000 description 1
- 101100545272 Caenorhabditis elegans zif-1 gene Proteins 0.000 description 1
- 101000731015 Homo sapiens Peptidoglycan recognition protein 1 Proteins 0.000 description 1
- 102100032393 Peptidoglycan recognition protein 1 Human genes 0.000 description 1
- -1 TAG2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
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)
Abstract
Zapojení obsahuje první paměťový obvod (10), opatřený univerzálním výstupem (10a), slučovací obvod (11) instrukcí opatřený univerzálním vstupem (11a) připojeným k univerzálnímu výstupu (10a) prvního paměťového obvodu (10) a dále opatřený druhým univerzálním výstupem (11b), druhý paměťový obvod (12) opatřený univerzáním vstupem (12a) připojeným ke druhému univerzálnímu výstupu (11b) slučovacího obvodu (11) instrukcí a dále opatřený druhý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 druhému univerzálnímu výstupu (12b) druhého paměťového obvodu (12) a dále opatřený druhým univerzálním výstupem (16b). Dále obsahuje nejméně dvě funkční jednotky (13, 14, 15) pro zpracovávání instrukcí, opatřené univerzálním vstupem (13a, 14a, 15a), připojeným ke druhému univerzálnímu výstupu (16b) vyvolávacího a vydávacího obvodu (16).ŕ
Description
Zapojení pro paralelní zpracovávání dvou nebo více instrukcí v číslicovém počítači
Oblast techniky
Vynález se týká číslicových počítačů a číslicových datových procesorů a obzvláště číslicových počítačů a datových procesorů schopných zpracovávat paralelně dvě nebo více instrukcí.
Stav techniky
Výkon tradičních počítačů, které vykonávají instrukce po jedné postupným způsobem se v minulosti výrazně zlepšil vzhledem ke zlepšením v obvodové technice. Takové počítače pro vykonávání instrukcí po jedné jsou někdy označovány jako skalární počítače nebo procesory. Protože se vývoj obvodové techniky dostal na své hranice, ukázalo se jako nutné, aby návrháři počítačů vyšetřovali jiné prostředky pro zí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é navrhované skalární stroje typicky rozhodují v době provádění instrukcí, jestliže může být daný počet instrukcí vykonáván paralelně. Takové rozhodnutí je založeno na operačních kódech instrukcí a na datových závislostech, které mohou existovat mezi přilehlými instrukcemi. Operační kódy určují hardwarové součástky, které každý z instrukcí bude uží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ích předchozí instrukce. Toto je známo pod označením datová závislosti. Tyto hardwarové a datové závislosti brání vykonávání některých kombinací instrukcí paralelně. V tomto případě jsou dotyčné instrukce místo toho vykonávány samotné neparalelním způsobem. To samozřejmě snižuje výkon superskalárního stroje.
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 žádoucí minimalizovat. Jednak dochází k tomu, že rozhodování v době vykonávání instrukcí o tom, které instrukce mohou být vykonávány paralelně, vyžaduje sice malé, ale znatelné množství času, které nemůže být pohotově maskováno jeho překrytí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 architektury 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éž instrukce vykonávat po druhé a po vícekráte.
Podstata vynálezu
Jak je popisováno v související patentové přihlášce USA č. 08/519 384, jeden z atributů počítače typu SCISM (Scalable Compound Instruction Set) je: Neprováděj rozhodová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ěti instrukcí nebo zásobníky instrukcí. V jiném příkladě, udělej to před rychlou vyrovnávací pamětí instrukcí
-1CZ 279899 B6 v těch strojích, kde jsou instrukce vedeny jednotkou s rychlou vyrovnávací pamětí.
Jiným atributem stroje SCISM je zaznamenávat výsledky rozhodování o paralelním vykonávání instrukcí tak, že takové výsledky jsou k dispozici v případě, kdy jsou stejné instrukce používány po druhé a v dalším případě.
Podle vynálezu se zaznamenává učinění rozhodnutí o paralelním vykonáváni instrukcí dosahuje generováním příznaků, které jsou připojovány nebo jsou vkládány do jednotlivých instrukcí, v instrukčním toku. Tyto příznaky říkají, zda instrukce mohou být vykonávány paralelně nebo zda potřebují 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ě ke kombinování dvou nebo více individuálních instrukcí do jediné sloučené instrukce pro účely paralelního vykonávání.
V obzvláště výhodném provedení vynálezu je počítač opatřen mechanismem s rychlou vyrovnávací pamětí pro dočasné ukládání strojových instrukcí na jejich cestě od paměťové úrovně počítače o výši úrovně do jednotek počítače pro vykonávání instrukcí, a slučování nebo označování instrukcí příznakem se vykonává mezilehle mezi paměťovou 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čovaci 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 zdokonalení celkové výkonnosti počítače. Ukládání slučovacích pří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ávací 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 na příkladech provedení s odvoláním na připojené výkresy, kde na obr. 1 je blokové schéma příkladného provedení části číslicového počítačového systému, konstruovaného podle vynálezu, na obr. 2 je schéma úseku instrukčního toku, v němž jsou slučovaci příznaky nebo příznaková pole sdruženy s instrukcemi, na obr. 3 je větší podrobnost vnitřní konstrukce reprezentativního provedení slučovaci jednotky instrukcí, která může být použita v počítačovém systému z obr. 1, na obr. 4 je blokové schéma větší podrobnosti reprezentativní vnitřní konstrukce analyžních jednotek slučování z obr. 3, na obr. 5 je příklad soustavy logických obvodů, která může být použita pro implementaci částí analyzátoru slučování a generátoru příznaků z obr. 3, které vytvářejí slučovaci příznaky pro první tři instrukce v instrukčním toku, na obr. 6 je tabulka použitá pro vysvětlení příkladu z obr. 5, na obr. 7 je 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čované instrukce zpracovávány paralelně funkčními jednotkami na zpracovávání instrukcí, na obr. 8 je schéma obzvláštního sledu instrukcí, který může být zpracováván počítačovým systémem
-2CZ 279899 B6 z obr. 7 a na obr. 9 je tabulka použitá pro vysvětlení zpracování instrukčního sledu z obr. 8 počítačovým systémem z obr. 7.
Příklad 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ávacího systému konstruovaného podle vynálezu. Tento počítačový 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 na obr. 1 vyznačen jako první paměťový obvod 10. Tento první paměťový obvod 10 je velkokapacitní paměťový mechanismus s nižší rychlostí a může být tvořen velkokapacitní systémovou paměťovou jednotkou nebo dolní částí univerzálního hierarchického paměťového systému a podobně.
Počítačový systém z obr. 1 také zahrnuje slučovací mechanismus instrukcí pro přijímání instrukcí z prvního paměťové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říznaková pole udávají, které z těchto instrukcí mohou být zpracovávány paralelně s jinými. Tento slučovací mechanismus instrukcí je reprezentován slučovacím obvodem 11 instrukcí s univerzálním vstupem 11a. Tento slučovací obvod 11 instrukcí analyzuje přicházející instrukce pro určování, které mohou být zpracovávány paralelně. Dále vytvářejí slučovací obvod 11 instrukcí pro tyto analyzované instrukce příznakovou informaci nebo příznaková pole, která udávají, které instrukce mohou být zpracovávány paralelně s druhými a které nesmí být zpracovávány paralelně s jinými.
Systém z obr. 1 dále zahrnuje druhý paměťový obvod 12 spojený s univerzálním výstupem 11b slučovacího obvodu 11 instrukcí 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ěťový obvod 12 je reprezentován rychlou vyrovnávací pamětí sloučených instrukcí. Rychlá vyrovnávací paměť je paměťový mechanismus s menší kapacitou a něho pro zlepšování výkonu losti snižováním častosti s nižší rychlostí.
větší rychlostí typu obvykle používapočítačového systému z hlediska rychpřístupu na první paměťový obvod 10
Na obr. 1 systém dále zahrnuje řadu funkčních jednotek pro zpracovávání instrukcí, které pracují vzájemně paralelně. Tyto funkční jednotky pro zpracovávání instrukcí jsou reprezentovány funkčními jednotkami 13., 14, 15 atd. Tyto funkční jednotky 13 až 15, opatřená každým univerzálním vstupem 13a, 14a, 15a pracují paralelně souběžně spolu a každá sama je schopná upracovávat jeden nebo více typů instrukcí strojového kódu. Příklady funkčních jednotek, které mohou být použity, jsou: univerzální aritmetická a logická jednotka, aritmeticko-logická jednotka typu pro generování adres, aritmeticko-logická jednotka pro překonání datové závislosti, zpracovávací jednotka instrukcí větvení, jednotka pro posouvání dat, zpracovávací jednotka s pohyblivou řádovou čárkou atd. Daný počítačový systém může obsahovat dva nebo ví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ích aritmeticko-logických jednotek. Žádný daný počítačový systém také
-3CZ 279899 B6 nemusí obsahovat každou nebo všechny z těchto funkčních jednotek různého typu. Obzvláštní uspořádání a konfigurace funkčních jednotek bude záviset na povaze obzvláštního počítačového systému, jaký je uvažován.
Počítačový systém z obr. 1 také zahrnuje mechanismus pro vyvolávání a vydávání, připojený k rychlé vyrovnávací paměti druhého paměťového obvodu 12., pro poskytování přilehlých instrukcí, které jsou v ní uloženy, a pro jejich poskytování různým funkčním jednotkám 13 až 15 pro zpracovávání instrukcí, když příznaková pole instrukcí indikují, že mohou být zpracovávány paralelně. Tento mechanismus je znázorněn jako vyvolávací a vydávací obvod 16 s univerzálním vstupem 16a a univerzálním výstupem 16b. Vyvolávací a vydávací jednotka 16 vyvolává přes univerzální vstup 16a instrukce z rychlé vyrovnávací paměti druhého paměťového obvodu 12, vyšetřuje jejich 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 instrukce do odpovídající z funkčních jednotek 13 až 15.
Jestliže je požadovaná instrukce přítomna v rychlé vyrovná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žadovaná instrukce. Toto se někdy označuje jako cache hit (úspěšné vyvolání). Není-li požadovaná instrukce v rychlé vyrovnávací paměti, tj. druhém paměťovém obvodu 12, potom musí být vyvolána z paměti vyšší úrovně, tj. prvního paměťové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 vyvolání, je adresa požadované instrukce vyslána do prvního paměťového obvodu 10 vyšší úrovně. Na základě tohoto první paměťový obvod začne vyjímání nebo čtení řady instrukcí, která obsahuje požadovanou instrukci. Tyto instrukce jsou přenášeny na univerzální vstup 11a slučovacího obvodu 11 instrukcí, který analyzuje tyto vstupující instrukce a generuje odpovídající příznaková pole pro každou instrukci. Instrukce opatřené příznaky jsou potom vedeny do rychlé vyrovnávací paměti slučovaných instrukcí, tj. druhého paměťového obvodu 12 a jsou zde uloženy pro následující použití, v případě potřeby, funkčními jednotkami 13., 14 a 15.
Analýza instrukcí vykonávaná ve slučovacím obvodu 11 instrukcí vyžaduje určité relativně malé množství času. Analý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řených příznaky, jak se mohou objevovat na výstupu slučovacího obvodu instrukcí z obr. 1. Jak je patrné, každá instrukce (INSTR) má příznakové pole (TAG), připojené slučovacím obvodem 11 instrukcí. Instrukce s příznaky, jako jsou instrukce znázorněné na obr. 2, jsou ukládány do rychlé vyrovnávací paměti sloučených instrukcí, tj. druhého paměťového obvodu 12· 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 16 instrukcí. Když jsou instrukce s příznaky přijímány vyvolávacím a vydávacím obvodem 16, jejich příznaková pole jsou vyšetřována pro určení, jestli mohou být zpracovávány paralelně a jejich pole operačních kódů jsou vyšetřována, která
-4CZ 279899 B6 z funkčních jednotek, které jsou k dispozici, se nejlépe hodí pro jejich zpracovávání. Jestliže příznaková pole indikují, ž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 jednotek v souladu s kódováním jejich polí operačních kódů. Takové instrukce jsou potom zpracovávány souběžně jedna s druhou jejich odpovídajícími funkčními jednotkami.
Zjistí-li se instrukce, která není vhodná pro paralelní zpracovávání, vyšle se potom do odpovídající funkční jednotky, jak je určeno jejím operačním kódem a potom se zpracovává samotná zvolenou funkční jednotkou.
V nejdokonalejším případě, kde je vždy zpracováváno paralelně více instrukcí, by rychlost vykonávání instrukce počítačového systému byla N krát větší, než v případě, kdy se instrukce vykonávají vždy po jedné, přičemž N je počet instrukcí ve skupinách, které se zpracovávají paralelně.
Obr. 3 ukazuje podrobněji vnitřní konstrukci reprezentativního provedení slučovacího obvodu instrukcí v souladu s vynálezem. Tento slučovací obvod instrukcí, označený v podrobnostech jako slučovací jednotka 20, je vhodný pro použití jako slučovací obvod 11 instrukcí z obr. 1. Slučovací jednotka 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 z znamená, že instrukce je první instrukce. Hodnota příznakového bitu nula znamená, že instrukce je druhá instrukce a může být vykonávána paralelně s předcházející první instrukcí. Instrukce mající hodnotu příznakového bitu jedna může být vykonávána buď sama, nebo současně a paralelně s příští instrukcí, v závislosti na hodnotě příznaku pro takovou příští instrukci.
Každé párování instrukcí, mající hodnotu příznakového bitu jedna, s následující instrukcí, mající hodnotu příznakového bitu nula, tvoří sloučenou instrukci pro účely paralelního vykonávání, tj. že instrukce v takové dvojici mohou být vykonávány vzájemně paralelně. Když mají příznakové bity pro dvě po sobě následující instrukce každá hodnotu jedna, vykonává se první z těchto instrukcí sama neparalelním způsobem. V nejhorším možném případě by všechny instrukce ve sledu měly příznakovou bitovou hodnotu jedna. V tomto nejhorším případě by všechny instrukce byly vykonávány současně a neparalelním z*působem.
Slučovací jednotka 20 instrukcí z obr. 3 obsahuje vstupní registr 21 plurálních instrukcí pro přijímání více po sobě následujících instrukcí z paměťové jednotky vyšší úrovně, tj. prvního paměťového obvodu £0. Vstupní registr 21 má nejméně tři paměťové pole INSTO, INST1', INST2 a je opatřen univerzálním vstupem 21a připojeným k univerzálnímu výstupu 10a prvního paměťového obvodu
10. Slučovací jednotka 20 instrukcí také obsahuje skupinu analyzních mechanismů, založených na pravidle. Každý takový analyzní mechanismus instrukcí analyzuje rozdílnou dvojici instrukcí ležících vedle sebe ve vstupním registru 21 instrukcí a vytváří signál slučovatelnosti, který indikuje, zda tyto dvě instrukce v této dvojici mohou být zpracovávány paralelně nebo nikoliv. Na obr. 3 je znázorněno několik analyzních obvodů 22 až 25 slučo
-5CZ 279899 B6 vatelnosti. Každý z těchto analyzních obvodů 22 až 25 slučovatelnosti obsahuje dva právě zmíněné analyzní mechanismy instrukce. Každý z těchto analyzních obvodů 22 až 25 tak vytváří dva ze signálů slučovatelnosti. Například první analyzní obvod 22 slučovatelnosti vytváří na prvním výstupu M01 první signál slučovatelnosti, který indikuje, zda Instrukce 0 a 1 mohou být zpracovávány paralelně. Analyzní obvod 22 slučování také vytváří na druhém výstupu M12 druhý signál slučovatelnosti, který indikuje, zda mohou být Instrukce 1 a 2 zpracovávány paralelně.
Podobným způsobem vytváří druhý analyzní obvod 23 slučování první signál slučovatelnosti na prvním výstupu M23, který indikuje, zda Instrukce 2 a 3 mohou být zpracovávány paralelně, a druhý signál slučovatelnosti na druhém výstupu M34, který indikuje, zda Instrukce 3 a 4 mohou být zpracovávány paralelně. Třetí analyzní obvod 24 slučování vytváří na první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 na druhé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ýstupu M67 první signál slučovatelnosti, který udává, zda Instrukce 6 a 7 mohou být zpracovávány paralelně, a druhý signál slučovatelnosti na druhém výstupu M78, který udává, zda Instrukce 7 a 8 mohou být zpracovávány paralelně.
Slučovací jednotka 20 instrukcí dále obsahuje obvod 26 generování příznaků, citlivý na signály slučovatelnosti, objevující se na výstupech analyzních obvodů 22 až 25 pro generování individuálních příznakových polí pro různé instrukce ve vstupním registru 21 instrukcí. Obvod 26 pro generování příznaků má nejméně dva vstupy připojené ke dvěma výstupům M01, Ml2 analyzního obvodu 22 slučovatelnosti. Dále má výstupy TÁGO, TAG1, TAG2, TAG3, TAG4, TAG5, TAG6, TAG7 a TAG8 pro generování příznaků připojené k odpovídajícím vstupům výstupního registru 27.· Výstupní registr 27 má nejmé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 ve vstupním registru instrukcí jsou přiváděna do výstupního registru 27, jako jsou instrukce samotné, získávané ze vstupního registru 21 instrukcí. Tímto způsobem je ve výstupním registru 27 slučovací jednotky paměťové pole TO příznaku pro Instrukci 0, paměťové pole TI příznaku pro Instrukci 1, atd.
V daném provedení je každé paměťové pole TO, TI, T2 příznaku atd. tvořeno jediným binárním bitem. Hodnota příznakového bitu jedna indikuje, že bezprostředně následující instrukce, ke které je připojen, je první instrukce. Hodnota příznakového bitu nula indikuje, že bezprostředně následující instrukce je druhá instrukce. Instrukce mající hodnotu příznakového bitu jedna, následovaná instrukcí, mající hodnotu příznakového bitu nula, indikuje, že tyto dvě instrukce mohou být vykonávány paralelně jedna vůči druhé. Instrukce opatřené příznaky ve výstupním registru 27 slučovaných instrukcí jsou vedeny na vstup rychlé vyrovnávací paměti slučovaných instrukcí, tj. druhého paměťového obvodu slučovaných instrukcí z obr. 12 a jsou ukládány do druhého paměťového obvodu 12.
-6CZ 279899 B6
Je třeba poznamenat, že množství registrovaného hardwaru znázorněného na obr. 3 může být redukováno ukládáním slučovaných instrukcí přímo do rychlé vyrovnávací paměti slučovaný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 instrukcí z obr. 3. Druhé analyzní obvody 22 až 25 slučovatelnosti mají podobnou konstrukci. Jak ukazuje obr. 4, analyzní obvod 22 slučovatelnosti zjišťovací obvod 30 slučovatelnosti instrukcí pro vyšetřování operačního kódu Instrukce 0 a operačního kódu Instrukce 1 a pro určování, zda tyto dva operační kódy jsou kompatibilní pro účely paralelního vykonávání. Zjišťovací obvod 30 je konstruován v souladu s předem určenými pravidly pro volbu toho, které páry operačních kó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 kompatibilní pro paralelní vykonávání v určité hardwarové konfiguraci, použité pro uvažovaný počítačový systém. Jestliže operač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 kompatibilní, zjišťovací obvod 30 vytváří binární nulovou hodnotu na svém výstupu 30a. Jak je patrné z obr. 4, má zjišťovací obvod 30 dva vstupy ΟΡΟ, a OPI, které jsou připojeny k univerzálnímu výstupu 21b vstupního registru 21 z obr. 1.
Analyzní obvod 22 slučovatelnosti signálů dále obsahuje zjišťovací obvod 31 slučitelnosti druhé instrukce pro vyšetřování operačních kódů Instrukcí 1 a 2 a určování, zda jsou kompatibilní pro paralelní vykonávání. Zjišťovací ' obvod 31 je konstruován stejném způsobem jako zjišťovací obvod 30 pro 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 31 tak zahrnuje soustavu logických obvodů pro implementování pravidel, 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šťovacím obvodu 30. Jestliže jsou operační kódy pro Instrukce 1 a 2 kompatibilní, potom zjišťovací obvod 31 vytváří na svém výstupu '31a výstupní signál na binární úrovni jedna. Jinak vytváří výstupní signál na binární úrovni nula. Obdobně jako u zjišťovacího obvodu 30 jsou i zde vstupy OPI, OP2, připojené ke vstupnímu registru 21.
Analyzní obvod 22 slučovatelnosti signálů dále obsahuje zjišťovací obvod 31 slučitelnosti druhé instrukce pro vyšetřování operačních kódů Instrukcí 1 a 2 a určování, zda jsou kompatibilní pro paralelní vykonávání. Zjišťovací obvod 31 je konstruován stejným způsobem jako zjišťovací obvod 30 pro 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 31 tak zahrnuje soustavu logických obvodů pro implemetování pravidel, 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šťovacím obvodu 30. Jestliže jsou operační kódy pro Instrukce 1 a 2 kompatibilní, potom zjišťovací obvod 31 vytváří na svém výstupu 31a výstupní signál na binární úrovni jedna. Jinak vytváří výstupní signál na binární úrovni nula. Obdobně jako u zjišťovacího
-7CZ 279899 B6 obvodu 30 jsou i zde vstupy OPI, OP2, připojené ke vstupnímu registru 21.
Analyzní obvod 22 slučovatelnosti dále obsahuje první zjišťovací obvod 32 závislosti registrů pro zjišťování konfliktů v použití univerzálních registrů označených poli R1 a R2 Instrukcí 0 a 1. Tyto univerzální registry budou podrobněji rozebírány níže. Mimo jiné může být zjišťovací obvod 32 závislosti konstruován pro zjišťová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 buď druhá instrukce vykonávána hardwarem pro překonávání závislosti, takže je vykonávána paralelně s první instrukcí, anebo musí vykonávání druhé instrukce vyčkat na dokončení vykonávání předchozí instrukce, 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.) Neexistují-li závislosti registrů, které brání vykonávání Instrukcí 0 a 1 paralelně, potom se vyšle na výstup 32b zjišťovací jednotky 32 binární hodnota jedna. Je-li závislost, potom se vyšle na výstup 32b binární hodnota 0. Vstupy 32a zjišťovací jednotky 32 jsou připojeny k univerzálnímu výstupu vstupního registru 21.
Analyzní obvod 22 slučovatelnosti dále zahrnuje druhý zjišťovací obvod 33 závislosti registrů pro zjišťování konfliktů v použití univerzálních registrů označených polemi R1 a R2 Instrukcí 1 a 2. Tento zjišťovací obvod 33 je stejné konstrukce, jako shora popsaný zjišťovací obvod 32, a vytváří 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čovatelnosti instrukcí a zjišťovacího obvodu 32 závislosti registrů jsou připojena ke dvěma vstupům 34a, 34b prvního součinového obvodu 34. Výstupní vedení prvního součinového obvodu 34 má binární hodnotu jedna, jestliže jsou oba uvažované operativní kódy kompatibilní a jestliže nejsou závislosti registrů. 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čovatelné, tj. jsou vykonavatelné paralelně. Jestliže naproti tomu má výstupní vedení prvního součinového obvodu 34 binární hodnotu nula, potom obě instrukce nejsou slučovatelné. Je tak na výstupní vedení prvního součinového obvodu 34 vytvářen na výstupu MO1 první signál slučovatelnosti, který indikuje, zda Instrukce 0 a 1 mohou být zpracovávány paralelně. Tento signál z výstupu M01 je veden do generátoru 26 příznaků.
Výstupní vedení druhého zjišťovacího obvodu 31 slučovatelnosti 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 obvodu 35.· Součinový obvod 35 vytváří na výstupu Ml2 druhý signál kompatibility, který má binární hodnotu jedna, jestliže oba uvažované operační kódy (operační kódy pro Instrukce 1 a 2) jsou kompatibilní a jestliže neexistují závislosti registrů pro Instrukce 1 a 2
-8CZ 279899 B6 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í vedení binární hodnotu nula. Výstupní vedení od druhého součinového obvodu 35 vede do druhého vstupu obvodu 26 generování příznaků.
Ostatní analyzní obvody 23 až 25 slučovatelnosti, znázorněné na obr. 3, mají stejnou vnitřní konstrukci, jaká je znázorněna na obr. 4 pro první analyzní obvod 22 slučovatelnosti.
Na obr. 5 je znázorněn příklad soustavy logických obvodů, které je možno použít pro implementaci analyzního obvodu 22 slučovatelnosti a části obvodu 26 generování příznaků, který je použit pro generování prvních tří příznaků, a to příznaku TAG 0, TAG 1 a TAG 2. V příkladě z obr. 5 se předpokládá, že jsou dvě kategorie instrukcí, které jsou označeny jako kategorie A a kategorie B. Pravidla pro slučová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 poř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 registrů, protože pravidla implicitně indikují, že v případě, kdy se objevuje nějaké vzájemné blokování, jsou takto blokované instrukce vždy proveditelné hardwarem pro překonávání datové závislosti. Jinými slovy se pro příklad na obr. 5 předpokládá, že nejsou zapotřebí zjišťovací obvody 32 a 33 z obr. 4. V takovém případě také nejsou zapotřebí součinové obvody 34 a 35 a výstup zjišťovacího obvodu se stává signálem na výstupu M01 a výstup zjišťovacího obvodu se stává signálem na výstupu M12.
Pro tyto předpoklady ukazuje obr. 5 vnitřní soustavu logických obvodů, které mohou být použity pro zjišťovací obvod 30 slučovatelnosti instrukcí a pro zjišťovací obvod 31 slučovatelnosti instrukcí z obr. 4. Jak ukazuje obr. 5, obsahuje zjišťovací obvod 30 slučovatelnosti instrukcí dekodéry 40 a 41, součinové obvody 42 a 43 se dvěma vstupy 42a, 42b, 43a, 43b a první součtový obvod 44. Zjišťovací obvod 31 slučovatelnosti druhé instrukce obsahuje dekodéry 41 a 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šťovacími obvody 30 a 31. Ve schématu na obr. 5 jsou tedy zapojeny první dekodér 40 se vstupem OPO a výstupy 40a a 40b, druhý dekodér 41 se vstupem OPI a výstupy 41a a 41b a třetí dekodér 45 se vstupem OP2 a výstupy 45a a 45b.
První zjišťovací obvod 30 vyšetřuje operační kódy na vstupech OPO a OPI Instrukcí 0 a 1 pro určování jejich kompatibility pro účely paralelního vykonávání. To se děje v souladu s pravidly (1) až (4) uvedených shora. První dekodér 40 sleduje operační kód první instrukce a jestliže jde o opatření kód kategorie A, je
-9CZ 279899 B6 výstup 40a prvního dekodéru 40 nastaven na úroveň jedna. Je-li na vstupu OPO operační kód kategorie B, potom je výstup 40b prvního dekodéru 40 nastaven na úroveň jedna. Nepatří-li kód na vstupu OPO ani do kategorie A ani do kategorie B, potom jsou oba výstupy 40a, 40b prvního dekodéru 40 na binární úrovni nula. Druhý dekodér 41 s výstupy 41a, 41b provádí podobný druh dekódování pro druhý operační kód na vstupu OPI.
První součinový obvod 42 implementuje shora uvedené pravidlo (1). Je-li operační kód kategorie A a na vstupu OPI je také operační kód kategorie A, potom první součinový obvod 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 binární úroveň nula. Druhý součinový obvod 43 implementuje shora uvedené pravidlo (4). Je-li první operační kód operační kód kategorie B a druhý operační kód je operační kód kategorie A, potom druhý součinový obvod 43 vytvoří na výstupu 43c výstup úrovně jedna. Jinak vytváří výstup úrovně nula. Jestliže bud' první součinový obvod 42, nebo druhý součinový obvod 43 vytváří výstupní úrovně jedna, uvádí to výstup prvního součtového obvodu 44 na úroveň jedna a signál slučovatelnosti na výstupu MO1 má v tomto případě hodnotu jedna. Tato hodnota jedna indikuje, že první a druhé instrukce (Instrukce 0 a 1) jsou kompatibilní pro účely paralelního vykonávání.
Je-li dekodéry 40 a 41 zjištěna jakákoli jiná kombinace operačních kódů, potom výstupy 42c, 43c součinových obvodů 42 a 43 zůstávají na nulové úrovni a signál slučovatelnosti na výstupu MO1 má hodnotu nula indikující neslučitelnost. Objevení se kombinací označených pravidly (2) a (3) tak neuspokojuje součinové obvody 42 a 43 a signál na výstupu MO1 zůstává na nulové úrovni. V případě výskytu dalších kategorií operačních kódů, jiných než jsou kategorie A a B, jejich výskyty v toku instrukcí neaktivují výstupy dekodérů 40 a 41. Bude to tak mít podobně za následek, že hodnota signálu slučovatelnosti na výstupu MO1 bude nula.
Zjišťovací obvod 31 slučovatelnosti druhé instrukce vykonává podobný typ analýzy operačního kódu pro druhou a třetí instrukci (Instrukce 1 a 2). Je-li operační kód na vstupu OP2 je operační kód kategorie A, potom vzhledem k pravidlu (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čovatelnosti na výstupu Ml2 je uveden na binární úroveň jedna indikující slučovatelnost. Jestliže naproti tomu na vstupu OPI je operační kód kategorie B a na vstupu OP2 je operač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čovatelnosti na výstupu M12. Pro jiné kombinace operativních kódů než kombinace stanovené v pravidlech (1) a (4) má signál na výstupu Ml2 hodnotu nula. Jak ukazuje obr. 5, má čtvrtý součinový obvod 47 výstup 47c. 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 ha výstupech MO1 a Ml2 jsou dodávány do obvodu 26 generování příznaků. Obr. 5 ukazuje soustavu logických obvodů, která může být použita v obvodu 26 generování příznaků pro reagování na signály slučovatelnosti na výstupech MO1 a Ml2 pro vytváření požadovaných hodnot příznakových bitů pro
-10CZ 279899 B6 příznaky TAG O, 1 a 2. Tabulka na obr. 6 ukazuje logiku, která je implementována obvodem 26 generová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í instrukce pro účely paralelního provádění. Hodnota příznakového bitu nula indikuje, že přidružení instrukce je druhá instrukce pro účely paralelního vykonávání. Jediné páry instrukcí, které jsou slučovány a vykonávány paralelně jsou ty, pro které první instrukce ve dvojici má hodnotu příznakového bitu jedna a druhá instrukce ve dvojici má hodnotu příznakového bitu 0. Jakákoli instrukce mající hodnotu příznakového bitu jedna, po které následuje jiná instrukce mají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 instrukcí 0 a 1 bude vykonána jednotlivým, neparalelním způsobem. Pokud jde o druhou řádku na obr. 6, instrukce 0 a 1 budou vykonány paralelně, protože příznak 0 má požadovanou hodnotu jedna a příznak 1 má požadovanou hodnotu 0. Pokud jde o třetí řádku na obr. 6, instrukce 0 bude vykonávána jednotlivým způsobem, zatímco instrukce 1 a 2 budou vykonávány vzájemně spolu paralelně. Pokud jde o čtvrtou řádku, instrukce 0 a 1 budou vykonávány vzájemně spolu rovnoběžně.
Pro případy, kde má příznak 2 binární hodnotu jedna, je status jemu přidružené instrukce 2 závislý na binární hodnotě 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, potom instrukce 2 bude vykonávána jednotlivým neparalelním způsobem. Je třeba poznamenat, že logika implementovaná pro obvod 26 generování příznaků neimplementuje výskyt dvou po sobě následujících příznakových bitů majících binární hodnoty nula.
Vyšetřování obr. 6 ukazuje logiku, jakou je třeba implementovat částí obvodu 26 generování příznaků, znázorněnou na obr. 5. Jak ukazuje obr. 6, bude mít příznak 0 vždy binární hodnotu jedna. Toto je dosahováno tím, že se přivádí konstantní binární hodnota jedna na výstupní vedení 50 obvodu generování příznaků, které tvoří výstupní vedení příznaku 0 (TAG 0). Prohlídka obr. 6 dále ukazuje, že bitová jednota pro příznak 1 je vždy opačná bitová hodnotě signálu slučovatelnosti na výstupu MO1. Tento výsledek je dosahován připojová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álu na výstupu MO1.
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. Jeden vstup součtového obvodu 54 je připojen k výstupu MO1. Jestliže signál na výstupu MO1 má hodnotu jedna, potom příznak 2 má hodnotu jedna. To se týká hodnot příznaku 2 na druhém a čtvrtém řádku obr. 6. Druhý vstup součtového obvodu 54 je připojen přes druhý invertor 55 k výstupu Ml2. Jestliže signál na výstupu Ml2 má binární hodnotu nula, tato hodnota je invertována druhým invertorem 55 na přivádění hodnoty binární jedničky na druhý vstup součtového obvodu 54. To působí, že výstupní vedení 53 příznaku 2 má binární hodnotu jedna. To se týká hodnoty příznaku 2 pro řádek jedna na
-11CZ 279899 B6 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 tomto případě bude mít signál MO1 hodnotu nula a signál M12 bude mít hodnotu jedna, která je invertována druhým invertorem 55 pro získání nuly na druhém vstupu součtového obvodu 54.
Implicitní v logice z obr. 6 je prioritní pravidlo pro případ řádku čtyři, kde každý ze signálů na výstupech MO1 a Ml2 mají binární hodnotu jedna. Případ tohoto řádku čtyři může být získán sledem instrukčních kategorií BAA. To může být implementováno sledem příznaků 101, jak je uvedeno v obr. 6, nebo alternativně sledem příznaků 110. V daném provedení 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řednost před párováním AA.
Kombinace 1,1 pro signál na výstupu MO1 a Ml2 může být také 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ší, protože zajišťuje hodnotu jedna pro příznak 2 a tedy potencielně umožňuje slučovat Instrukci 2 a Instrukci 3, jestliže Instrukce 2 je kompatibilní s Instrukcí 3.
Na obr. 7 je znázorněn detailní příklad, jak může být konstruová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í jednotka 20 instrukcí, použitá na obr. 7, se předpokládá být typu popsaného na obr. 3 a jako taková přidává ke každé instrukci jednobitové příznaková pole. Tato příznaková pole jsou používána pro identifikování, které dvojice instrukcí mohou být zpracovávány paralelně. Tyto instrukce opatřené příznaky jsou přiváděny a ukládány do druhého paměťového obvodu 12 s rychlým přístupem. Vyvolávací a vydávací řídicí jednotka 60 vyvolává instrukce opatřené příznaky z rychlé vyrovnávací paměti druhého paměťového období 12 podle potřeby a uspořádává je pro jejich zpracovávání odpovídajícími ze skupiny funkč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á pole a pole operačních kódů vyvolávaných instrukcí. Jestliže příznaková pole indikují, že dvé po sobě následující instrukce 'mohou být zpracovávány paralelně, potom vyvolávací a vydávací jednotka 60 je přiděluje do odpovídajících z funkčních jednotek 61 až 64, jak je určováno jejich operačními kódy a jsou zpracovávány paralelně zvolenými funkčními jednotkami. Jestliže příznaková pole indikují, že se má obzvláštní instrukce zpracovávat jednotlivým, neparalelním způsobem, potom vyvolávací a vydávací jednotka řídicí 60 ji přiděluje k určité funkční jednotce, jak je určováno jejím operačním kó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 odpovídá vyvolávacímu a vydávacímu obvodu 16 a funkční jednotky 61, 62, 63, 64 jsou konkrétními příklady provedení jednotlivých funkčních jednotek 13., 14., 15 z obr. 1.
První funkční jednotka je zpracovávací jednotka 61 instrukcí větvení pro zpracovávání instrukcí typu větvení. Druhá funkční jednotka je třívstupová aritmetická a logická jednotka 62 pro ge-12CZ 279899 B6 nerování adres, která je používána pro výpočet adres ukládání pro instrukce, které přenášejí operandy do paměti nebo k paměti. Třetí funkční jednotka je univerzální aritmeticko-logická jednotka 63, která je použita pro vykoná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ání datové závislosti (collapsing data dependency) typu popsaného ve shora uvedeném souvisejícím americkém patentovém spise (patentová přihláška 07/504 910 - IBM Docket EN9-90-014). Tato aritmeticko-logická jednotka 64 pro překonávání závislosti je tří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é zahrnuje soubor 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 typickém počítačovém systému je použito šestnáct takových univerzálních registrů. V daném provedení se předpokládá, že univerzá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 vysokorychlostní 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ěťové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ět do paměťového jednotky paměťového obvodu 10 vyšší úrovně. Datová vyrovnávací paměť 66 s rychlým přístupem může být známého typu a její operace vzhledem k paměti paměťového obvodu 10 vyšší úrovně může být vedena známým způsobem.
Obr. 8 ukazuje příklad instrukčního sledu, slučovaného nebo 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ásledujících instrukcí v následujícím sledu: zaveď, přičti, porovnej, proveď podmíněné větvení a ulož. Tyto instrukce jsou označeny jako instrukce II až 15 v uvedeném pořadí. Příznakové bity pro tyto odpovídající instrukce jsou 1, 1, 0, 1 a 0. Vzhledem k organizaci stroje znázorněného na obr. 7, se zpracovává instrukce zaveď jednotlivým způsobem samotná. Instrukce přičti a porovnej1' jsou považovány jako sloučená instrukce a jsou prováděny vzájemně spolu paralelně. Instrukce proveď 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 první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 registrů 65, který obsahuje první operand. Výjimka v tomto případě je instrukce proveď podmíněné větvení, kde pole R/M obsahuje 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 je v typickém případě použito pro označování druhého z univerzálních registrů 65= Takový registr může obsahovat druhý operand nebo může obsahovat hodnotu adreso
-13CZ 279899 B6 vého indexu (X). Sloupec B na obr. 9 udává obsah třetího možného pole v každé instrukci, které může identifikovat obzvláštní registr z univerzálních registrů 65, který obsahuje základní hodnotu adresy - Nula ve sloupci B udává nepřítomnost pole B nebo nepřítomnost odpovídající adresové složky v poli B. Podle D na str. 9 udává obsah dalšího pole v každé instrukci, které, pokud je použito pro účely generování adres, obsahuje hodnotu posunu adresy. Nula ve sloupci D může také udávat nepřítomnost odpovídajícího pole v obzvláštní uvažované instrukci 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í instrukci přičti, že instrukci zaveď je třeba zpracovávat jednotlivý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ěťová adresa, z níž má být tento operand vyvolán, je určena sečtením hodnoty indexu v registru X, základní hodnoty v registru B a hodnoty posunu v D. Vyvolávací a vydávací řídicí jednotka 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 adresy v registru X (nulovou hodnotu v daném příkladě), základní adresovou hodnotu obsaženou v univerzálním registru R7 a hodnotu posunu adresy (nulová hodnota v daném případě), obsažené v samotné instrukci. Výsledná vypočítaná paměťová adresa, která se objevuje na výstupu aritmeticko-logické jednotky 62 je vedena na adresový vstup datové rychlé vyrovnávací paměti 66 pro přístup k požadovanému operandu. Operand, k němuž je zajišťován přístup, je zaváděn do univerzálního registru R2 v souboru registrů 65.
Pokud jde o zpracovávání instrukcí přečti a porovnej, jsou tyto instrukce vyvolávány vyvolávací 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šťuje, že mohou být vykonávány paralelně. Jak je patrné z obr. 9, instrukce porovnej má zjevnou datovou závislost na instrukci přičti, protože instrukce přičti musí být hotova dří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řekonávání datové závislosti (collapsing data dependency). V důsledku toho mohou být tyto obě instrukce zpracovávány paralelně 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 64 pro překonáváni závislosti. Aritmeticko-logická jednotka 63 přičítá obsah univerzálního registru R2 k obsahu univerzálního registru R3 a ukládá výsledek sčítání zpět do univerzálního registru. Současně aritmeticko-logická jednotka 64 pro překonávání závislosti vykonává následující matematickou operaci:
R3 + R2 - R4
Podmínkový kód pro výsledek podmínkového kódu umístěného cí větvení. Datová závislost této operace je vysílán do registru ve zpracovávací jednotce 61 instrukje překonávána, protože aritmeticko
-14CZ 279899 B6
-logická jednotka 64 totiž skutečně vypočítává součet R3 + R2 a potom srovnává tento součet s R4 pro určeni podmínkového kódu. Tímto způsobem aritmeticko-logická jednotka 64 nemusí čekat na výsledky z aritmeticko-logické jednotky 6_3, která vykonává instrukci sčítání. V tomto konkrétním případě numerické výsledky vypočítané aritmeticko-logickou jednotkou 64 a objevující se na výstupu aritmeticko-logické jednotky 64 nejsou dodávány zpět do univerzálního registru 65. V tomto případě aritmeticko-logická jednotka 64 pouze nastavuje podmínkový kód.
Pokud jde o zpracovávání instrukce provedení podmíněného vě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 spolu 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ána zpracovávací jednotkou 61 instrukcí větvení a instrukce ukládání by měla být zpracovávána aritmeticko-logickou jednotkou 62 pro generování adres. V souladu s tímto určením pole M masky a pole D posunu instrukce podmíněného větvení jsou vedeny do jednotky větvení 61. Podobně se hodnota indexu adresy v registru X a základní hodnota adresy v registru B pro tuto instrukci podmíněného větvení získají z univerzálních registrů 65 a jsou dodávány do jednotky 61 větvení. V daném příkladě je hodnota registru X nula a základní hodnota se získá z univerzálního registru R7. Hodnota D posunu má hexadecimální hodnotu dvacet, zatímco pole M masky má hodnotu polohy masky osm.
Jednotka 61 větvení začíná počítat potenciální adresu větvení (0 + R7 + 20) a současně srovnává podmínkový kód získaný z předchozí instrukce srovnej s maskou M podmínkového kódu. Je-li hodnota podmínkového kódu stejná, jako je hodnota kódu masky, je potřebná podmínka větvení splněna a adresa 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ávací instrukcí z rychlé vyrovnávací paměti 12 slučovaných instrukcí. Jestliže naproti tomu podmínka není splněna, tj. podmínkový kód nastavený předchozí 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ána prováděním svých zpracovávacích činností pro instrukci větvení, aritmeticko-logická jednotka 62 pro generování adres je zaměstnána výpočtem 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í uložení operandu v univerzálním registru R3 do datové rychlé vyrovnávací paměti 66 na adrese vypočítané aritmeticko-logickou jednotkou 62. Jestli naproti tomu je podmínka větvení splněna a k větvení dochází, potom obsah univerzálního registru R3 není uložen do datové rychlé vyrovnávací paměti 66.
Shora uvedený sled instrukcí z obr. 8 je určen pouze jako příklad. Počítačový systém podle obr. 7 je také schopný zpracovávat různé a jakékoli jiné sledy instrukcí. Příklad z obr. 8 však
-15CZ 279899 B6 jasně ukazuje užitečnost příznaků slučovaných instrukcí při určování, které instrukce mohou být zpracovány paralelně navzájem spolu.
I když to, co bylo popsáno, je považováno za výhodná provedení vynálezu, bude zřejmé odborníkům v oboru, že v rámci vynálezu je možné provést různé změny a obměny, aniž by se opustila jeho myšlenka. Vynález proto všechny takové změny a modifikace kryje, které jsou v jeho duchu a spadají do jeho myšlenky.
Claims (8)
1. Zapojení pro paralelní zpracováni dvou nebo více instrukcí v číslicovém počítači, vyznačující se tím, že obsahuje první paměťový obvod (10), opatřený univerzálním výstupem (10a), slučovací obvod (11) instrukcí, opatřený univerzálním vstupem (11a) připojeným k univerzálnímu výstupu (10a) prvního paměťového obvodu (10) a dále opatřený druhým univerzálním výstupem (11b), druhý paměťový obvod (12) opatřený univerzálním vstupem (12a), připojeným ke druhému univerzálnímu výstupu (11b) slučovacího obvodu (11) instrukcí a dále opatřený druhý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 univerzálnímu výstupu (12b) druhého paměťového obvodu (12) a univerzálním výstupem (16b), a dále dvě nebo více funkčních jednotek (13, 14, 15) pro zpracovávání instrukcí, opatřené každá univerzálním vstupem (13a, 14a, 15a) připojeným ke druhému univerzálnímu výstupu (16b) vyvolávacího a vydávacího obvodu (16).
2. Zapojení podle nároku 1, vyznačující se tím, že slučovací obvod (11) instrukcí obsahuje vstupní registr (21) instrukcí s nejméně třemi paměťovými poli (INSTO, INST1, INST2), opatřený univerzálním vstupem (21a) připojeným k univerzálnímu výstupu (10a) prvního paměťového obvodu (10), a dále opatřený nejméně jedním dalším výstupem (21b), dále nejméně jeden analyzni obvod (22) slučování opatřený vstupem (22a) připojeným k výstupu (21b) vstupního registru (21) instrukcí a dále opatřený nejméně dvěma výstupy (M01, M12), dále obvod (26) generováni příznaků, mající nejméně dva vstupy připojené ke dvěma výstupům (M01, M12) analyzního obvodu (22) slučovatelnosti, a dále nejméně třemi výstupy (TAG0, TAG1, TAG2), a dále výstupní registr (27) instrukcí s nejméně třemi paměťovými poli (TO, INSTO, TI, INST1; T2, INST2), opatřený nejméně třemi vstupy připojenými ke třem výstupům (TAG0, TAG1, TAG2) obvodu (26) generování příznaků a dále opatřený univerzálním výstupem (27a) připojeným k univerzálnímu vstupu (12a) druhého paměťového obvodu (12).
3. Zapojení podle nároku 2, vyznačující se tím, že analyzni obvod (22) slučování obsahuje první zjišťovací obvod (30) slučitelnosti instrukcí, mající dva vstupy (OPO, OPI), připojené k univerzálnímu výstupu (21b) vstupního registru (21) instrukci a dále mající výstup (30a), dále druhý zjišťovací obvod (31) slučitelnosti instrukcí, opatřený dvěma
-16CZ 279899 B6 vstupy (OPI, OP2) připojenými k univerzálnímu výstupu (21b) vstupního registru (21) instrukcí, a výstupem (31a), dále první zjišťovací obvod (32) závislosti registrů a druhý zjišťovací obvod (33) závislosti registrů, které jsou opatřeny každý odpovídajícími vstupy (32a, 33a) připojenými k univerzálnímu výstupu (21b) vstupního registru (21) instrukcí, a dále jsou opatř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 k výstupům (30a, 32b) prvního zjišťovacího obvodu (30) slučitelnosti instrukcí a prvního zjišťovacího obvodu (32) závislosti registrů a dále s výstupem připojeným ke vstupu obvodu (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šťovacího obvodu (31) slučitelnosti a druhého zjišťovací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čující se tím, že první a druhý zjišťovací obvod (30, 31) slučitelnosti instrukcí společně obsahují první dekodér (40), opatřený vstupem (OPO) připojený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ále druhý dekodér (41) opatřený vstupem (OPI) připojeným k univerzálnímu výstupu (21b) vstupního registru (21) instrukcí a opatřený dále dvěma výstupy (41a, 41b), dále třetí dekodér (45) opatřený vstupem (0P2) připojeným k univerzálnímu výstupu (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) prvního dekodéru (40) a výstupu (41a) druhého dekodéru (41) a dále s výstupem (42c), dále druhý součinový obvod (43) se dvěma vstupy (43a, 43b) připojenými k výstupu (40b) prvního dekodéru (40) a výstupu (41a) druhého dekodéru (41) a dále s výstupem (43c), dále třetí součinový obvod (46) se dvěma vstupy (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 vstupy (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ýstupem (47c), dále první součtový obvod (44), mající dva vstupy (44a, 44b) připojené k výstupům (42c, 43c) prvního a druhého součinového obvodu (42, 43) a mající dále výstup připojený ke vstupu (M01) obvodu (26) generování příznaků a dále obsahuje druhý součtový obvod (48) mající dva vstupy (48a, 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ýstupem připojeným ke vstupu (M12) obvodu (26) generování příznaků.
5. Zapojení podle kteréhokoli z nároků 2 až 4, vyznačující se tím, že obvod (16) generování příznaků obsahuje první invertor (52) opatřený vstupem spojeným s výstupem (M01), analyzního obvodu (22) slučování a výstupem spojeným se vstupem (TAG1) výstupního registru (27) instrukcí, dále obsahuje druhý invertor (55) opatřený vstupem spojeným s výstupem (M12) s výstupem analyzního obvodu (22) slučování a dále opatřený výstupem (55a), a dále opatřený výstupem spojeným se vstupem (TAG2) výstupního registru (27) instrukcí.
-17CZ 279899 B6
6. Zapojení podle kteréhokoli z nároků 1 až 5, vyznačující se tím, že funkční jednotky (13, 14, 15) obsahují zpracovávací jednotku (61) instrukcí větvení, aritmetickou a logickou jednotku (62) pro generování adres, univerzální aritmetickou a logickou jednotku (63) a aritmetickou a logickou jednotku (64) pro překonávání datové závislosti.
7. Zapojení podle kteréhokoli z nároků 1 až 6, vyznačující se tím, že první paměťový obvod (10) sestává z velkokapacitní nízkorychlostní paměti.
8. Zapojení podle kteréhokoli z nároků 1 až 7, vyznačující se tím, že druhý paměťový obvod (12) sestává z malokapacitní 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 CS93391A3 (en) | 1992-05-13 |
CZ279899B6 true CZ279899B6 (cs) | 1995-08-16 |
Family
ID=24080285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CS91933A CZ279899B6 (cs) | 1990-05-10 | 1991-04-04 | Zapojení pro paralelní zpracovávání dvou nebo více instrukcí paralelně v číslicovém počítači |
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 (89)
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 |
EP0463965B1 (en) * | 1990-06-29 | 1998-09-09 | Digital Equipment Corporation | Branch prediction unit for high-performance processor |
JP2532300B2 (ja) * | 1990-10-17 | 1996-09-11 | 三菱電機株式会社 | 並列処理装置における命令供給装置 |
JP2535252B2 (ja) * | 1990-10-17 | 1996-09-18 | 三菱電機株式会社 | 並列処理装置 |
EP0488819B1 (en) * | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
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 | スーパースカラープロセッサ |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
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 |
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 |
EP0636256B1 (en) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
EP0638183B1 (en) * | 1992-05-01 | 1997-03-05 | 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 |
US5604912A (en) * | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
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 |
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 |
EP1186995B1 (en) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Instruction memory with associative cross-bar switch |
US6360313B1 (en) | 1993-11-05 | 2002-03-19 | Intergraph Corporation | Instruction cache associative crossbar switch |
DE69431998T2 (de) * | 1993-11-05 | 2004-08-05 | Intergraph Hardware Technologies Co., Las Vegas | Superskalare Rechnerarchitektur mit Softwarescheduling |
US5974534A (en) * | 1994-02-14 | 1999-10-26 | Hewlett-Packard Company | Predecoding and steering mechanism for instructions in a superscalar processor |
TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
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 |
TW260765B (cs) * | 1994-03-31 | 1995-10-21 | Ibm | |
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 |
JPH07281893A (ja) * | 1994-04-15 | 1995-10-27 | Internatl Business Mach Corp <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 |
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 |
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 |
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 |
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 |
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 |
US6230313B1 (en) | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US6430676B1 (en) * | 1998-12-23 | 2002-08-06 | Cray Inc. | Method and system for calculating instruction lookahead |
US6321379B1 (en) | 1998-12-23 | 2001-11-20 | Cray Inc. | Method and system for target register allocation |
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 |
JP2001034474A (ja) * | 1999-07-16 | 2001-02-09 | Nec Corp | データ処理装置及びデータ処理方法 |
JP3730455B2 (ja) * | 1999-10-01 | 2006-01-05 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
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 |
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 |
US7177891B2 (en) * | 2002-10-09 | 2007-02-13 | Analog Devices, Inc. | Compact Galois field multiplier engine |
US7082452B2 (en) * | 2001-11-30 | 2006-07-25 | Analog Devices, Inc. | Galois field multiply/multiply-add/multiply accumulate |
JP3962022B2 (ja) * | 2001-11-30 | 2007-08-22 | アナログ デバイシーズ インク | 再構成可能入力ガロア拡大体線形変換器装置 |
US7283628B2 (en) | 2001-11-30 | 2007-10-16 | Analog Devices, Inc. | Programmable data encryption engine |
US7269615B2 (en) * | 2001-12-18 | 2007-09-11 | Analog Devices, Inc. | Reconfigurable input Galois field linear transformer system |
US6766345B2 (en) | 2001-11-30 | 2004-07-20 | Analog Devices, Inc. | Galois field multiplier system |
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 |
US6865661B2 (en) * | 2002-01-21 | 2005-03-08 | Analog Devices, Inc. | Reconfigurable single instruction multiple data array |
US7000090B2 (en) * | 2002-01-21 | 2006-02-14 | Analog Devices, Inc. | Center focused single instruction multiple data (SIMD) array system |
US6941446B2 (en) * | 2002-01-21 | 2005-09-06 | Analog Devices, Inc. | Single instruction multiple data array cell |
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 |
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 (23)
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 |
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 | 情報処理装置 |
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 |
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 | 論理回路方式 |
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 | 株式会社東芝 | 電子計算機 |
EP0454985B1 (en) * | 1990-05-04 | 1996-12-18 | International Business Machines Corporation | Scalable compound instruction set machine architecture |
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 AT AT91104318T patent/ATE131637T1/de not_active IP Right Cessation
- 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-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 |
---|---|
DE69115344T2 (de) | 1996-06-20 |
CS93391A3 (en) | 1992-05-13 |
EP0455966B1 (en) | 1995-12-13 |
CA2040304C (en) | 1995-04-11 |
HU911099D0 (en) | 1991-10-28 |
EP0455966A2 (en) | 1991-11-13 |
ATE131637T1 (de) | 1995-12-15 |
RU2111531C1 (ru) | 1998-05-20 |
US5475853A (en) | 1995-12-12 |
DE69115344D1 (de) | 1996-01-25 |
PL165491B1 (pl) | 1994-12-30 |
BR9101913A (pt) | 1991-12-17 |
JPH0776924B2 (ja) | 1995-08-16 |
JPH04230528A (ja) | 1992-08-19 |
HU214423B (hu) | 1998-03-30 |
HUT57454A (en) | 1991-11-28 |
EP0455966A3 (en) | 1993-11-10 |
US5214763A (en) | 1993-05-25 |
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) | Цифровой компьютер с возможностью параллельного выполнения двух и более команд | |
EP1296227B1 (en) | Valid instruction dispatching and execution | |
KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
EP0496928B1 (en) | Compounding preprocessor for cache | |
KR100242617B1 (ko) | 파이프 라인 컴퓨터 시스템 | |
US6820223B2 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
US7725687B2 (en) | Register file bypass with optional results storage and separate predication register file in a VLIW processor | |
US5313551A (en) | Multiport memory bypass under software control | |
US6449710B1 (en) | Stitching parcels | |
US5398321A (en) | Microcode generation for a scalable compound instruction set machine | |
US20090100252A1 (en) | Vector processing system | |
JP3100721B2 (ja) | 複数の命令を発行する装置および方法 | |
US6035122A (en) | Compiler for converting source program into object program having instruction with commit condition | |
KR20000075837A (ko) | 보호형의 매우 긴 명령어 아키텍처를 위한 향상된 명령 디스패치 메카니즘 | |
US5930520A (en) | Pipelining device in a parallel processing apparatus and an instruction supplying method therefor | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US5293499A (en) | Apparatus for executing a RISC store and RI instruction pair in two clock cycles | |
CA2040637C (en) | Compounding preprocessor for cache | |
JPH0570860B2 (cs) | ||
JPH0778737B2 (ja) | キャッシュに対する複合化プリプロセッサ方式 |
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 |