CS93291A3 - Hardware device for overcoming data dependence in a computer - Google Patents
Hardware device for overcoming data dependence in a computer Download PDFInfo
- Publication number
- CS93291A3 CS93291A3 CS91932A CS93291A CS93291A3 CS 93291 A3 CS93291 A3 CS 93291A3 CS 91932 A CS91932 A CS 91932A CS 93291 A CS93291 A CS 93291A CS 93291 A3 CS93291 A3 CS 93291A3
- Authority
- CS
- Czechoslovakia
- Prior art keywords
- output
- arithmetic
- adder
- instruction
- instructions
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
Description
1 <.ν «477
Hardwarové zařízení pro překonávání datové závislosti v počítači.
Oblast techniky
Vynález se týká hardwarového zařízení pro vykonávánískalárních instrukcí v počítači s architekturou pro sériovévykonávání jejich sledu. Konkrétněji se vynález vztahujena paralelní vykonávání skalárních instrukcí, když jednaz instrukcí vyžaduje jako operand výsledek získávaný přisouběžně vykonávané instrukci.
Stav techniky Zřetězené zpracovávání je standariní postup používanýnávrháři počítačů pro zlepšení výkonu počítačových systémů. Při zřetězeném zpracovávání je instrukce dělena do několikakroků nebo stupňů, pro něž je přidělen jediný hardware provykonávání instrukce přiřazené tomuto stupni. Rychlost tokuinstrukcí zřetězením závisí na rychlosti, s níž nové instruk-ce vstupují do zřetězení, a to spíše, než na délce zřetězení.Při idealizované struktuře zřetězení, kde je maximum jednéinstrukce zaváděno do zřetězení během jednoho cyklu, je pro-pustnost zřetězení, která je mírou počtu instrukcí vykonáva-ných na jednotku času, závislá pouze na době cyklu. Je-li do-ba cyklu n-stupně implementace zřetězeného zpracovávání předpo-kládána jako kde m je doba cyklu odpovídající implementacenepoužívající postupů zřetězeného zpracovávání, potom jemaximální potencielní udokonalení poskytované zřetězenýmzpracováváním rovno n. I když z výše uvedeného vyplývá, že zřetězené zpracová-vání poskytuje možnost n-násobného zlepšení výkonu počítačo-vého systému, řada praktických omezení mají za následek,že skutečný zisk výkonu je menší, než platí pro ideální pří-pad. Tato omezení vyplývají z existence hazardů při zřetěze-ném zpracovávání. Hazard ve zřetězeném zpracovávání je defi-nován jakýmkoli aspektem struktury zřetězeného zpracovávání,který, •f Λ»,, »<··. (Ιί-ΠΛ brání průchodu strukturou při maximální rychlosti. Hazardyzřetězeného zpracovávání mohou být způsobeny, datovými zá- ? vislostmi, strukturálními konflikty /vyplývajícími z hard- waru/, řídicími závislostmi a jinými faktory; * Hazardy datové závislosti jsou často nazývány hazardy záznam.-čtení /write-read hazards/, protože první instrukcemusí zaznamenávat svůj výsledek dříve, než druhá instrukcemůže číst a následně používat tento výsledek. Aby se dovoliltento záznam před čtením, provádění čtení musí být blokovánodo té doby, než došlo k zaznamenání. Toto blokování zavádícyklus nečinnosti’, Často nazývaný "bublina“ nebo "uváznutí"do výkonu blokované instrukce. Bublina přidává jeden cyklusdo celkového prováděcího času uvázlé instrukce a tak snižujepropustnost zřetězeného zpracovávání. Při provádění v hard-waru může zjišťování a rozlišování hazardů strukturální a da-tové závislosti mít za následek nejen ztráty výkonu vzhledemk nedostatečnému využití hardwaru, ale může se také stát.kritickou cestou stroje. Tento hardware bude potom omezovatdosažitelné doby cyklů stroje. Hazardy proto mohou negativněovlivnit, dva faktory,, které přispívají k prostupnosti zřetě-zení: počet instrukcí vykonaných v jednom cyklu a dobu cyklustroje·. \ ' Existence· hazardů ukazuje, že rozvrhování nebo seřazo-vání instrukcí, když vstupují do struktury zřetězení, je vel-mi důležité při pokusu dosáhnout efektivního využití zřetě"-zeného hardwaru. Efektivní využití hardwaru se potom proje-vuje ve výkonových ziscích. 7 podstatě je zřetězené rozvrho-vání pokud využívat zřetězení na jeho maximální potenciáltím, že se pokoušíme vyhnout se hazardům. Rozvrhování může « .být dosahováno staticky, dynamicky nebo s kombinací obou po- stupů. Statické rozvrhování se dosahuje přeskupováním sleduinstrukcí před vykonáním, na ekvivalentní proud instrukcí,který plněji využije hardware než v dřívějším, případě. Jako
přikladl statického rozvrhování slouží tabulka I a5 tabulka II,L' w nichž, se;vyloučils vzájemné blokování mezi dvěma •'inaťřnÍTrftft» *miLzaýáďénív"7Í ' '-1·· "
Tabulka I ’Λϊ J,» ' l1 \· XI < · X2 > ADD LOAD LOAD ADD LCMP SUB, COMP X3 X4 > R4,R2 R1,/Y/ Rl, /x[Rl] /R3,R1 R1 ,R4 R1,R2 R1,R3 / žádná instrukeej žádná instrukce z ; funkce Rl R1 ' • 9 • J z ·' « .9 * 9 • » • 9 • 9 ·' 9 R4 = R4 + R2 ... - . zaved R1 z' paměťového místa Yzaved Rl z paměťového místa X doR3 = R3 + R1 ' zaved dvojkový komplement /R4/ doRl = Rl - R2 srovnej: Rl a R3 jakákoli slučovatelná instrukcejakákoli slučovatelná instrukce Tabulka II XI • /. • 9 jakákoli instrukce - X2 ' ·' .· 9 jakákoli instrukce;.· ·, ’ LOAD Β1./Ϊ/ ·- 9 zaved Rl z paměťového místa Y R4,R2 ·'- 9 R4 ='R4 + R2 ‘ . • » ’ ‘ LOAD si',/xM / - ·. .9:, zavedl Rl z paměťového místa X do funkce Rl ADD R3,R1 • R3 = R3 + Rl • LCMP R1 ,R4 9 zaved dvojkový komplement /R4/ do Rl SUB Rl .R2 ·' 9 Rl = 'R1 - R2 COMP R1 ,R3 • srovnej Rl a R3 ;X3· . • . 9 žádná slučovatelná instrukce ; X4 . · * žádná slučovatelná instrukce *
h.V n :r.
I když?rozvrhovací postupy mohou odstranit některé ha-zardy a přinést tak zlepšení výkonu, ne všechny hazardy mohoubýt odstraněny-. Byla navržena řešení pro datové závislosti, 4 které nemohou být odstraněny rozvrhováním. Tyto návrhy vyko-návají více operací paralelně. Podle jednoho návrhu je prouď \í instrukcí analyzován na základě použití hardwaru a je sesku-pován do sloučené instrukce určené k tomu, aby byla vydávánajako jediná jednotka. Tento přístup se odlišuje od "superska-lámího stroje”, v němž je řada instrukcí seskupována přísněna základě metody"první zařazen, první vybrán” pro současnývýstup. Předpokládáme-li, že hardware je určen pro podporová-ní současného výstupu dvou instrukcí, stroj se sloučenými in-strukcemi by pároval sled instrukcí z tabulky II následovně:/-X1/ /X2 LOAD/ /ADD LOAD/ /ADDLCMP/ /SUB COMP/ /X3,X4/, čímž se; vyloučí datová závislost mezi druhou instrukcí LOADa druhou instrukcí ADD. Srovnatelný superskalámí stroj byvšak vydal následující dvojice instrukcí: /X1,X2/ /LOAD,ADD//LOAS,ADD/ /LCMP SUB/ /COMP X3/ /X4 -/, vytvářející nevý- hodu datové závislosti LOAD-ADL.
Druhé řešení výpomoci proti vzájemnému blokování datovouzávislostí bylo navrženo v Computer Architectural News, March1988, v článku nazvaném. "The. W Computer Architecture", W.A.Wulfa. Tento Článek WM Computer Architecture navrhuje: 1sestavení souboru instrukcí, který vkládá více než jednu . operací do jedné instrukce 2i připuštění vzájemného blokování registrů v sestavené in-strukci a 3» zřetězení dvou aritmeticko-logických jednotek dle obr.1pro překonání /collapsing/ vzájemného blokování v rámcijedné instrukce.
Ve Wulfově návrhu musí být samozřejmě sestaveny jiné in-strukce pro všechny sledové párý instrukcí, jejichž vzájemnáblokování se. mají potlačit. To má za následek buč. v tom, žesse definuje pro nový soubor instrukcí prohibitivní počet ope-račních kódů, anebo že se počet operačních sledů, jejichžvzájemná blokování se mají překonat, opatří mezí, vymezenou 5 počtem operačních kódů, které jsou k dispozici. Kromě tohototo schéma nemusí být cílový kód slučitelný s dřívějšímiimplementacemi architektury. Jiné nedostatky tohoto schématuzahrnují požadavek na dvě aritmeticko-logické jednotky, je-jichž zřetězení může mít za následek vykonávání násobnýchinstrukcí, vyžadujících přibližně dvojnásobek času na vyko-návání jediné instrukce. Takový vzrůst vvkonávacího časuby se projevil ve vzrůstu doby cyklu stroje a nepotřebněby znevýhodnil všechny vykonávání instrukcí. V případě, kde byl existující stroj postaven pro postup-né vydávání a vykonávání daného souboru instrukcí, bylo byprospěšné využít paralelnosti ve vydávání a vykonávání in-strukcí. Paralelní vydávání a vykonávání instrukcí by zvýši-lo propustnost stroje. Dále je možné prospěšnost takové pa-ralelnosti maximalizovat minimalizováním čekací doby na vyko-návání instrukcí vyplývající z hazardů datové závislostive zřetězeném zpracovávání instrukcí. Adaptace na paralel-nost by tak umožnila redukovat takové čekací doby překonánímvzájemného blokování vyplývajícího z těchto hazardů. Tytokladné znaky je však třeba mít možnost využívat, aniž bybylo nutné platit cenu změny architektury v existujícíchstrojích, vytváření nového souboru instrukcí pro vytvořenívšech možných instrukčních dvojic a jejich kombinací majícíchvzájemné blokování a přidání značné části hardwaru. Dáleby adaptace měla vykazovat jen velmi malý nebo vůbec žádnýdopad na dobu cyklu stroje.
Charakteristika vynálezu
Uvedené cíle dosahuje vynález hardwarového zařízenípro překonávání datové závislosti v počítači s architektu-rou pro sériové vykonávání sledu skalárních instrukcí, je-hož podstatou je, že obsahuje instrukční registr s nejménědvěma pamětovými poli, nejméně tři univerzální registry,každý pro jeden operační prvek příčného spojení, který jespojen se společným výstupem univerzálních registrů, dekó-dovací a řídicí logiku mající své vstupy připojené k výstu- 6 pu instrukčního registru a mající vyvolovací výstup retistrůspojený s prvkem vzájemného spojení a mající svůj vyvolova-cí výstup funkcí spojený s aritmetickou a logickou jednot-kou, která je dále opatřena třemi operandovými vstupy spoje-nými s uvedeným prvkem vzájemného spojení a má jeden výstup.
Zařízení podle vynálezu, uspořádané výše uvedeným způ-sobem, zajistuje při současném vykonávání více skalárníchinstrukcí možnost přijímání více skalárních instrukcí prosouběžné vykonávání instrukcí, přičemž druhá ze skalárníchinstrukcí používá jako operand výsledek získaný vykonánímprvní skalární instrukce. Zařízení je uzpůsobeno pro přijí-mání tří operandů, které jsou používány první a druhou ska-lární instrukcí a má řídicí složku připojenou k opatřenípro přijímání instrukcí, které generují řídicí signály, in-dikující operace, které vykonávají více skalárních instrukcía které indikují pořadí jejich vykonávání. Vícefunkční ari-tmeticko-logická jednotka je připojena k operandům a řídicímopatřením a reaguje na řídicí signály a na operandy tím,že vytváří, paralelně s vykonáváním první instrukce, jedinývýsledek odpovídající vykonání druhé instrukce. Z jiného hlediska vytváří vynález zařízení, které pod-poruje současné vykonávání více skalárních instrukcí, kdevýsledek získaný první ze současně prováděných instrukcíje použit jako operand ve druhé ze současně prováděných in-strukcích. Zařízení vykonává druhou instrukci paralelně svykonáváním první instrukce tím, že obsahuje aritmeticko-lo-gickou jednotku překonávající datovou závislost, která jeuzpůsobena pro přijímání tří operandů, které jsou používá-ny první a druhou instrukcí pro poskytnutí výsledku druhéinstrukce současně s výsledkem první instrukce.
Vynález proto přináší stroj, který usnadňuje paralel-ní provádění instrukcí pro zvýšení výkonu stávajícího po-čítače. Významnou výhodu zařízení podle vynálezu je reduk-ce čekací doby na vykonávání instrukcí, vyplývající z ha- 7 zardů datové závislosti, existujících ve vykonávaných in-strukcích. Zařízení podle vynálezu umožňuje překonat vzá-jemná blokování vyplývající z hazardů datové závislosti,existujících mezi instrukcemi vykonávanými paralelně. Tytoúčinky a výhody jsou dosahovány se zdokonalením výkonu aprovádění instrukcí, jaké z toho vyplývají, pomocí zaříze-ní slučitelného se skalárním počítačem určeným pro postupnévykonávání instrukcí.
Podle výhodného provedení vynálezu aritmetická a lo-gická jednotka obsahuje sčítačku opatřenou třemi operando-vými vstupy, připojenou k operandovým vstupům aritmetickéa logické jednotky a jedním výsledkovým výstupem, spojenýms výstupem aritmetické a logické jednotky. Sčítačka s výho-dou zahrnuje sčítačku s uchovávanými přenosy opatřenou třemivstupy spojenými s operandovými vstupy a se součtovým výstu-pem a přenosovým výstupem, a dále sčítačku s predikcí pře-nosů, opatřenou dvěma vstupy připojenými k příslušnému sou-čtovému výstupu a přenosovému výstupu sčítačky a uchovává-ním přenosů a s výstupem spojeným s výsledkovým výstupemsčítačky.
Podle dalšího znaku vynálezu jsou dva ze tří vstupůaritmetické a logické jednotky připojeny ke třem logickýmfunkčním obvodům, které jsou dále spojeny s jedním z uvede-ných tří operandových vstupů sčítačky. Jeden z uvedenýchtří vstupů aritmetické a logické jednotky a výsledkový výs-tup sčítačky mohou být dále připojeny ke třem logickým funkčním obvodům, které jsou spojeny s výstupem aritmetické alogické jednotky.
První logické obvody na vstupní a výstupní straně sčí-tačky mohou být součinové obvody, druhé logické obvody mo-hou být součtové obvody a třetí logické obvody mohou býtobvody výlučného součtu. Dva ze tří vstupů aritmetické alogické jednotky mohou být připojeny k multiplexoru, kterýmůže být dále připojen ke třem logickým funkčním obvodům. Tři logické funkční obvody mohou být připojeny k multiple-xoru, který může být dále spojen s jedním ze tří operando-vých vstupů sčítačky.
Podle dalšího znaku vynálezu mohou být tři logické fun-kční obvody spojeny s multiplexorem, který může být dálespojen s výstupem aritmetické a logické jednotky.
Prvek vzájemného spojení může konečně obsahovat multi-plexor pro zavádění obsahů tří univerzálních registrů natři operandové vstupy aritmetické a logické jednotky. Přehled 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, ve kte-rých znázorňuje obr. 1 stavbu podle známého stavu technikypro vykonávání instrukce párující operace, obr. 2 souborčasových sledů ilustrujících zřetězené vykonávání sklalárníchinstrukcí, obr. 3 blokové schéma sčítačky, která přijímá ažtři operandy a vytváří jediný výsledek, obr. 4A, 4B katego-rizaci instrukcí vykonávaných existujícím skalárním strojem,obr. 5 tabulku funkcí vytvořených v případech vzájemnéhoblikování, kde instrukce jsou kombinovány typu "logical"a typu "add" v kategorii 1 z obr. 4A, obr. 6A a 6B specifika-ci operací, které mají být prováděny na operandech aritmetic-ko-logickou jednotkou podle vynálezu pro podporování instruk-cí ve slučovatelných kategoriích na obr. 4A a 4B, obr. 7Aa 7B shrnutí směrování operandů do aritmeticko-logické jed-notky definované na obr. 6A a 6B, obr. 8 blokové schéma uka-zující, jak je vynález používán pro vykonávání paralelníhoprovádění dvou navzájem blikovaných instrukcí, obr. 9 blo-kové schéma vícefunkční aritmeticko-logické jednotky defi-nované obr. 6A, 6B, 7A a 7B, obr. 10 tabulku schematickyilustrující funkce vyžadující implementaci pro porušení vzá-jemných blokování vyplývajících z hazardů vyskytujících sepři generování adres, obr. 11 logický diagram 8 ,/ . . ilustrující v.í eefunkční aritmeticko-logickou jednotku z obři10* óbri12 schéma uspořádání funkcí podporovaných aritmeticko-logickou "jednotkou pro překonání vzájemných, blokování ve slou-čených instrukcích větvení, obr.13 logický diagram znázorňu-jící aritmeticko-logickou.jednotku podle obr. 12» a obři 14 ' - u schéma uspořádání sčítačky potřebné pro překonávání vzájem-ných blokování pro instrukce zahrnující devět operandů.
Provedení vynálezu 1Γ následujícím popise j’e pojem “strojový cyklus” používán prokroky zpracovávání zřetězením, potřebné pro vykonávání in-.strukce. Strojový cyklus zahrnuje jednotlivé intervaly, které < ' ‘ v odpovídají stupňům zpracovávání zřetězením. “Skalární in-strukce” je instrukce, která je vykonávána při použití skalár-ních operandů. Skalární operandy jsou operandy reprezentujícíj ednohodnotové veličiny. Pojem "slučování" se vztahuje na se-skupování instrukcí obsažených ve sledu instrukcí, přičemžtoto seskupování se provádí za-účelem, souběžného nebo para-lelního vykonávání seskupených instrukcí „ V minimálním pří- >pádě je slučování reprezentováno “párováním" dvou instrukcípro současné vykonávání. V popisovaném, vynálezu jsou slouče- i né instrukce nezměněny vzhledem ke tvarům, které mají, kdyžjsou předkládány pro vykonávání skalárních operací. Jak jevysvětleno níže, jsou slučované instrukce dopravázěny “pří-znaky“, t.j. bity připojenými k seskupeným instrukcím, které'označují seskupování instrukcí pro paralelní vykonávání. Bi-ty tak ukazují začátek a konec sloučené instrukce. V dalším popise bude popsáno řešení hardwaru pro poskyt- ’nutí pomoci proti vykonávání vzájemných blokování jednotek,která nemohou být překonána při použití postupů dle známéhostavu techniky. Cílem je minimalizovat ‘hardware potřebnýpro překonání těchto vzájemných blokování a vyvolat přitomjen malou nebo vůbec žádnou zátěž na dobu cyklu z přidaného 9 hardwaru. Žádné změny architektury nejsou požadovány pro im- - plementaci tohoto řešení. Slučitelnost. cílového kódu pro exi- stující architekturu je proto dodržována. Příkladem existující.architektury je sekvenční skalární stroj, jako jé System/370, dodávaný společností InternationalBusiness Machines Corporation, t.j. přihlašovatelem vynálezu. Z tohoto hlediska takový systém může zahrnovat stavbu typu•'System/370 extended. architecture" /370-XA/ a "System/370enterprise systems. architecture" /370-ESA/. Je zda možné seodvolat na publikaci "principles of Operation of the IBM Sys-tem/370'' č. GA22-7000-l0,1987 a "the Principples of Opera-tion, IBM EnterpriseSystems. Arehitecture/370", č. SA22-7200-0, 1988. - -
Instrukční soubor pro tyto existující skalární stavby systému System/370 je dobře znám. Tyto instrukce jsou skalár-ní instrukce, přičemž jsou vykonávány operacemi prováděnýmina skalární cíl operandech. Odvolávky, činěné níže na obzvláš-tní instrukce v souboru instrukcí vykonávaných výše uvedený-mi stroji jsou. uváděny v obvyklé symbolické formě'. Předpokládejme, že ses má vykonat následující sled in-.strukGÍ pomocí superskalámího stroje schopného vykonávatčtyři instrukce na i
/1/ LOAL R1 ,X /2/ ADD R1,R2 /3/ SUB R1,R3
/4/ STORE. R1 ,Y Přes. schopnost cyklu bude superskalámí stroj vykonávat výše uvedený sled.sériově vzhledem ke vzájemnému blokování instrukcí. Předpo-kládá se, na základě analýzy sledovacích programů, že vzá-jemná blokování nastávají po přibližně jednu třetinu doby.Tolik superskalámích zdrojů by bylo vyplýtváno, což by vedlo cyklus: . •Tabulka III x
zaveů obsah X do R1 ·přičti R1 k R2 a vlož výsledek do R1odečti R3 odl R1 a vlož výsledek ďo R1ulož výsledek do pamětového místa Y vícenásobného provádění instrukcíběhem 10 k degradaci výkonu superskalámího stroje. Chovánísuperska-lámího stroje při vzájemně blokovaných skalárních instrpk-cích je: znázorněno časovým sledem. 8 na obří2. Ha tomtoobráz-ku se struktura zřetězení pro instrukce z tabulky IIÍ před-pokládá následovně: /1/ LOADíID AG CA PA/2/ a /3/ ADD and SUBTRACT:ID EX PA, kde ID dekódování a přístup k registru, AG je generování ad-resy operandu, CA představuje přístup k rychlé vyrovnávacípaměti, EX představuje vykonej a PA /put, away/ představujezaznamenání výsledku do registru. Pro zjednodušení výkladuse předpokládá u všech příkladů uváděných v tomto popise, po-kud to není výslovně uvedeno, že se. ňeimplementu je obcházení. / V superskalámím stroji se vykonávání toku instrukcí1 provádísériově vzhledem, k tomu, že vzájemná blokování instrukcí sni-žují výkon superskalámího stroje na výkon skalárního.stroje.
Na obr.2 nevyžadují instrukce /2/ a /3/ žádné generováníadresy /AG/. Tento stupeň však musí být ve zřetězení zohled-něn. Z toho vyplývají neoznačené intervaly 7 a 9. Tato kon-vence se také týká ostatních tří sledů na obr.2. Výše uvedený příklad demonstruje, že vzájemná blokováníinstrukcí mohou'omezit paralelnost , jaká je k dispozici nainstrukční úrovni, pro využití superskalámího stroje. Výkonje možné získat zřetězováním a obcházením výsledků jednévzájemně blokované instrukci ke druhé. Vykonávání vzájemněblokovaných instrukcí však musí být nicméně prováděno sériově. Má-li se vyloučit ztráta vykonávacích cyklů v důsledkuvzájemného blokování, musí'být vzájemně blokované instrukceprováděny "paralelně" a považovány za jedinou instrukci. To -vede ke koncepci slučované vzájemně blokované instrukce, t.j.souboru skalárních instrukcí, se kterými se má zacházet jakos jedinou instrukcí přes výskyt vzájemných blokování. Žádou-cím znakem hardwaru vykonávajícího sloučenou instrukci je, že λ.....μι*'·· '· '.r.··; 1 ’-ί- 11 její vykonávání nevyžaduje více cyklů, než jakých je zapotře-bí jednou ze slučovaných instrukcí. Jako důsledek slučováníinstrukcí a jeho žádoucích znaků musí stroj na soubor slučo-vaných instrukcí sledovat skalární instrukce užíváním hard-waru spíše než na základě popisu operačních kódů.
Myšlenka slučovaných vzájemně blokovaných instrukcímůže být objasněna použitím instrukcí ADD a SUB v tabulce III.Tuto dvě instrukce mohou být považovány za typ jediné instruk-ce, protože používají stejný hardware. V důsledku toho jsoukombinovány a vykonávány jako jedna instrukce. Pro využitíparalelnosti jejich vykonání vyžaduje provedení
Rl = Rl + R2 - R3 v jednom cyklu spíše než vykonávání sledu:
Rl = Rl + R2
Rl = Rl - R3 který vyžaduje vykonat více než jeden cyklus. Vzájemné bloko-vání může být eliminováno, protože sčítání a odečítání použí-vá totožný hardwere. Kromě toho může být kombinovaná instruk-ce Rl + R2 - R3 vykonána při použití aritmeticko-logickéjednotky obsahující sčítačku s uchovávanými přenosy CSA (carrysavé adder) a sčítačku s predikcí přenosů CLA (carry look-ahead adder), jak je znázorněno na obr. 3,za podmínky, žearitmeticko-logická jednotka ALU byla navržena pro vykonávánísčítačí/odečítací funkce tři na jedna.
Jak by mělo být zřejmé, odpovídá kombinovaný tvar(R+ + R2 - R3) přepsání dvou operandů druhé instrukce v pod-mínkách tří operandů, z čehož vyplývá požadavek sčítačky,která může vykonat druhou instrukci na základě tří operandů.
Na obr. 3 je znázorněna sčítačka s uchovávanými přenosy (CSA)jako sčítačka 10. Sčítačka 10 CSA (carry savé adder) je běž-ná ze všech hledisek a přijímá tři operandy pro vytvořenídvou výsledků, a to součtu (S) na součtovém výstupu 12 apřenosu (C) na přenosovém výstupu 14. Ve výše uvedeném pří- 12 kládě jsou vstupy do sčítačky 10 CSA operandy obsažené vetřech registrech Rl, R2 a R3 (komplementované). Výstupy sčí-tačky 10 CSA jsou vynášeny v prvcích 16 a 17 pro dodání začá-teční "1" nebo "O" ("horká" 1 nebo 0) na hodnotu přenosupřes vstup 20. Hodnota na vstupu 20 je nastavena obvyklepodle funkce, která má být vykonávána sčítačkou 10 CSA. Výstupy sčítačky 10 CSA s uchovávanými přenosy (s při-psanou jedničkou nebo nulou) jsou upraveny jako dva vstupydo sčítačky 22 CIA s predikcí přenosů. Sčítačka 22 CLA ta-ké obvykle dostává "horkou" jedničku nebo nulu na vstupu24 podle požadované operace a vytváří výsledek na výstupu 26. Na obr. 3 je výsledek vytvořený sčítačkou 22 CLA kombina-cí obsahů tří registrů R2, R2 a R3 (komplementovaných). Sčítačky s uchovávanými přenosy (carry savé adder CSA)a sčítačky s predikcí přenosů (carry look-shead adder CLA)jsou běžné součástky, jejichž struktury a funkce jsou dobřeznámá. Hwang popisuje ve svých "Computer Arithmetic: Princi-ples, Architecture and Design, 1979" sčítačky s predikcípřenosů na str. 88 až 93 a sčítačky s uchovávanými přenosyna str. 97 až 100. Přestože sčítání tři na jedna vyžaduje přídavný stupeň,takový stupeň nemá negativní vliv na dobu cyklu stroje, pro-tože délka jiných drah obvykle přesahuje délku dráhy aritme-ticko-logické jednotky. Tyto kritické cesty lze obvykle na-lézt na drahách majících přístup polí, a generování adresvyžadující jednotku ALU tři na jedna a přechod čipu. Zpož-dění vyplývající z přídavného stupně není proto na závadua navržené schéma bude mít za následek zlepšení výkonu přisrovnání se skalárními a superskalárními stroji. Zlepšenívýkonu je znázorněno na obr. 2 souborem zřetězených schema-tických grafických čar označeným sledem 26. Tyto schema-tické grafické čáry ukazují provádění uvažovaného sledu “ :. . . - .7/, ../- ·.-„ fc.-t·, 1~ νςί*-^ ,c«i·*·,♦»·<^*,*,^*l^r/*v(Mr*KH,'M‘řX»*7fll» «eaeí!®2tí5a»v^>XJ^·^ * ·-.'·:-····;- '.'·,’ ‘ . . - 13 - instrukcí pomocí stroje se souborem slučovaných instrukcí,který obsahuje aritmeticko-logickou jednotku ALU se sčítač-kou upravenou podle obr. 3.
Jak je znázorněno časovými sledy 8_ a 26 na obr. 2, vy-konání sledu strojem se souborem sloučených instrukcí vyža-duje osm cyklů nebo dva cykly na instrukci (CPI) při srovná-ní s jedenácti cykly nebo 2,75 CPI dosažitelnými pomocí ska-lárních a superskalárních strojů. Pokud se předpokládá, ževe všech strojích je možné zabezpečit obcházení, ukazujíčárkové grafy sledů 28 a 30 z obr. 2 popis vykonávání in-strukcí, dosažitelného se skalárními nebo superskalárnímistroji. Z těchto souborů je patrné, že superskalární strojvyžaduje osm cyklů nebo 2 CPI pro vykonání příkladového kódu,zatímco stroj se souborem slučovaných instrukcí vyžaduješest cyklů nebo 1,5 CPI. Tato výhoda stroje se slučováním vů-či jak superskalárním, tak i skalárním strojům je patrná spo-lu s malou výhodností superskalárního stroje vůči skalárnímustroji pro uvažovaný instrukční sled.
Slučování instrukcí s jejich současným vykonáváním hard-warem není omezeno na aritmetické operace. Například větši-na logických operací může být slučována způsobem analogickýms aritmetickými operacemi. Slučování některých instrukcíby však mohlo mít za následek protahování doby cyklu, proto-že musí být pro vykonávání slučované funkce způsobována ne-přijatelná zpoždění. Například součená instrukce ADD-SHIFTmůže protáhnout dobu cyklu nežádoucím způsobem, což by poka-zilo veškerý výkonový zisk. Častost vzájemného blokovánímezi těmito instrukcemi je však nízká vzhledem k nízké čas-tosti výskytu posouvacích instrukcí, a proto mohou být vyko-návány sériově bez podstatné ztráty výkonu.
Jak bylo popsáno výše, vyskytují se datové hazardy vzá-jemného blokování, když je zaznamenáván registr nebo pamě-tové místo a potom čten při následující instrukci. Navršené 14
zařízení, podle vynálezu překonávají tato vzájemná blokováníodvazováním, nových funkcí, které vznikají z kombinování pro-vádění instrukcí, jejichž operandy přinášejí datové hazardy,při současném dodržování provádění funkcí vlastních souborů zinstrukcí. I když u některých kombinací instrukcí a operandůse neočekává jejich výskyt ve funkčním programu, jsou zvažo-vány všechny kombinace. Všeobecně všechny funkce odvozené zvýše uvedené analýzy jakož i funkce vyplývající ze skalárníimplementace, souboru instrukcí by mohly být vykonány. V pra-xi se však vyskytují určité funkce, jejichž implementace sedobře nehodí pro: schéma navržené pro toto zařízení. Následu-jící výklad objasňuje tyto koncepce probráním toho, jak tytonové funkce vznikají z kombinování provádění dvou instrukcí;.'Příklady sledů instrukcí, které se dají dobře zpracovávat -podle vynálezu, jsou uváděny spolu s některými sledy, kterénejsou dobře zpracovávány. Je rovněž znázorněno logické sché-ma výhodného provedení vynálezu.
Zařízení podle vynálezu je navrženo pro usnadnění para-.lelního vydávání a vykonávání instrukcí. Příklad paralelníhovydávání instrukcí je možné nalézt v superskalámím strojipodle známého stavu techniky. Vynález přitom umožňuje usnad-nit paralelní vydávání instrukcí, které obsahují vzájemné·blokování. Použití hardWferu podle vynálezu pro překonání da-tové závislosti však není omezen na žádnou obzvláštní archi-tekturu vydávání a vykonávání, ale má všeobecnou použň^tel-nost pro schémata, která vydávají vícenásobné instrukce -bě-hem cyklu.
Pro poskytnutí hardwarové základny pro tuto diskusi sepředpokládá architektura s instrukční úrovní systému System/370, vníž se mohou vydávat až dvě instrukce na cyklus. Po-užití těchto předpokladů však ani neomezuje tyto koncepce.nastavbu systému System/370, ani na dvoucestnou paralelnost.Diskuse je rozdělena do sekcí pro pokrytí operací aritmeticko- '•w · /'h • ý.·'? ·?: 1 :’:· ! '·-··. 'q-ΊΛ· 15 -logické jednotky, generování paměťových adres a určování vět-/>·’· vení. .. . .··. ·· ’, Všeobecně můžebýt souborinstrukcí systému System/370rozdělen do kategorií instrukcí, které mohou být vykonávány ‘paralelně. Instrukce v rámci těchto kategorií mohou být slu-čovány pro vytváření sloučených instrukcí. Níže popsané zaří-zení podle vynálezu podporuje provádění sloučených instrukcíparalelně a zajišťuje, že vzájemná blokování existující mezičleny sloučené instrukce budou pokryta, zatímco se instrukcesoučasně vykonávají. Například může být architektura Systému/370 rozdělena do kategorií znázorněných na obr. 4A a 4B. Základní princip pro tuto kategorizaci byl založen nafunkčních požadavcích instrukcí systému System/370 a jejichhardwarového použití. Zbytek instrukcí systému System/370 ne-ní uvažován pro .to, aby byly slučovány pro vykonávání v tétodiskusi. Toto však nebrání itomu, aby byly sloučeny na budou-cím stroji pro vykonávání slučovaných instrukcí a pro možnépoužití těchto závěrů pro "vyloučení výskytu" vzájemných za-blokování, jak je vysvětlován v tomto spise';
Uvažujme nyní instrukce .obsažené v kategorii 1 slučovanés instrukcemi ze. stejné kategorie, jak je příkladně uvedeno vnásledujícím sledu instrukcí: AR R1 ,R2 SR R3,R4
Tento sled, který je prostý datových hazardů vzájemného bloko-vání, přináší výsledky: R1 = R1 + R2 R3 = R3 + R4 které' zahrnují dvě nezávislé instrukce, specifikované architek-turou instrukční úrovně systému 370. Provádění takového sleduby vyžadovalo dvě nezávislé a paralelní aritmeticko logickéjednotky dvě na jedna, navržené pro architekturu instrukčníúrovně. Tyto výsledky mohou být generalizovány do všech dvojic 16 sledu instrukcí, které jsou prosté datových hazardů vzájemné-ho blokování vz nichž obě instrukce specifikují oper ad arit-meticko-logické jednotky^ Dvě aritmeticko-logické jednotkyg.soui dostačující k vykonávání instrukcí vydávaných, ve dvoji- ,cích, jelikož každá instrukce specifikuje nanejvýše jednu ope-raci aritmeticko-logické jednotkyζ
Mnoho sledů instrukcí však není prosté vzájemného bloko-vání s datovými hazardy. Tato vzájemná blokování s datovýmihazardy vedou k “bublinám'· zřetězení, které degradují výkontypického zřetězeného řešení. Řešením pro zvýšení výkonu pro-cesoru je eliminovat tyto "bubliny" ze zřetězení použitímjediné aritmeticko-logické jednotky, která může pokrýt vzájem-ná blokování s datovými hazardy. Pro vyloučení těchto vzájem-ných blokování musí aritmeticko-logická jednotka vykonat ně-kolik funkcí vznikajících z párování instrukcí a z konfliktůoperandů. Funkce, které vznikají, závisí na specifikovanýchoperacích aritmeticko-logické jednotky, sledu těchto operacía "konfliktů" operandů mezi operacemi /význam pojmu konfliktyoperandů budou patrné ž následující diskuze/. Všechny sledy 'instrukcí, které mohou být vytvořeny párováním instrukcí,které jsou obsaženy uvnitř výše uvedeného slučovatelného- se-znamu a které budou specifikovat operaci aritmeticko-logickéjednotky, musí být analyzovány pro všechny možné konfliktyoperandů. Všeobecné zásady překonávání vzájemného blokování podlevynálezu byly uvedeny výše. yr Následující popis poskytuje kon-krétnější příklad analýz, které je třeba vykonat pro určenípožadavků aritmeticko-logické jednotky překonávající vzájemnéblokování. Předpokládejme existenci sčítačky tři na jedna,jak je popsána výše, s odvoláním na obr.3. 0P1 a.0P2 předsta-vují odpovídající první a druhou ze dvou operací, které semají vykonávat. Například pro následující sled instrukcí NR R1 ,R2 17 , AR R3,R4 0P1 odpovídá.operaci NR, zatímco 0P2 odpovídá operaci AR /vizníža pro popis těchto operací/. Předpokládejme, že AIÓ, AI1 aAI2 představují vs.tupy odpovídající /R1/, /R2/ a /R3/ odpoví-dajícím vstupům sčítačky tři na jedná z obr.3. Úvazu jme ana-lýzu slučováni souboru.instrukcí /NR,OR, XR, ÁR, ALR, SLR,. SR/,podsoubory kategorie 1, jak je definovaná na obr.4A a 4B.Operace tohoto souboru instrukcí jsou specifikovány: NR po OR po XR po AR 32 ALR 32 SR 32 SLR 32 slabikách logická AND reprezentovaná . slabikách logická OR reprezentovaná slabikách EXCLUSIVE OR reprezentovaná bitová sečítání označené znaménkem, reprezentovaná + bitové sčítání neoznačené znaménkem, reprezentované bitové odečítání označené znaménkem reprezentované bitové odečítání neoznačené znaménkem reprezentované
Tento soubor instrukcí může být rozdělen, do dvou souborůinstrukcí pro další úvahy. První soubor by zahrnoval logickéinstrukce NR, OR a,XR, a druhý soubor by zahrnoval aritmetickéinstrukce AR, AIR, SR a .SLR. Seskupování aritmetických instrukcí může být odůvodněno následovně. AR a ALR mohou být óbě po-važovány. za implicitní přičítání 33 bitového dvojkového kom-plementu při použití rozšiřování znaménka pro AR a rozšiřová-ní nuly pro ALR a při přivedení "horké" nuly do sčítačky. Ikdyž nastavení stavového/kódu a přeplnění jsou jedinečné prokaždou instrukci, operace vykonávána sčítačkou, ť.3. binárnísčítání, je společná pro obě instrukce. Podobně SR a SLR mo-hou být považovány za implicitní sčítání 33· bitového dvojko-vého doplňku při použití rozšiřování znaménka pro SR a roz-šiřování nuly pro SRL, invertování menšitele a při přivedení"horké 1" do sčítačky. Invertování menšitele je považovánojako úkon vně sčítačky. Protože uvedené čtyři aritmetickéoperace v podstatě vykonávají tutéž operaci, t.j. binární 18 přičítání,,, budou označovány jako- instrukce, typu ADD /sčítání/,.žatíímpologickémoperace,budou označovány jako instrukce typuLOGÍCÁL /logické/. -
Jako výsledek redukce výše uvedeného souboru instrukcína dvě operace, je; třeba uvažovat následující sledy operacípro analyzování tohoto souboru instrukcí:
LOGICAL následovaná ADDADD následovaná LOGICALLOGICAL následovaná LOGICAL
' ADD následovaná ADD
Pro každý z těchto sledů je nutno uvažovat všechny kombinaceregistrů. Kombinace zahrnují případy, kdy všechny čtyři re-gistry jsou rozdílné, plus počet cest-ven ze čtyřech možných,specifikací-registrů: 1/ dva jsou stejné, 3/ tři jsou stejné,a 3/ čtyři jsou stejné^ Počet kombinací proto může být vyjá-dřen jako: 4
Počet kombinací = 1 4θί * ·.;. ..... . . i=2 , . ... . kďeβΟΓ reprezentuje nkombinováno s r. přitom. iírη!/^η-Γ) !> v přičemž z tohoto vzorce je možno odvodit počet kombinací jako 12. Těchto 12 kombinací registrů je: 1. R1 / R2 / R3 # R4 2. R1 = R2 / R3 / R4 3. R2 = R3 / R1 / R4 4. R2 = R4 / R1 / R3 , 5 . R3 = R4 / R1 .= R2 ; 6ÍR2 = R3 / R4 / R1 R1 = R3 R2 R4 R1 = R4 R2 R3 R1 = R2 - R3 R4 19 , JO; R1 = R2 = R4 / R3 : 1 í. R1 = R3 = R4 / R2 12. R1 «= R2 = R3 = R4 Z těchto kombinací pouze sedm z dvanácti dává vznik vzá-jemnému blokování s datovou závislostí. Funkce vytvořené výšeuvedenými, případy vzájemného blokování pro výše uvedené sle-dy; LOGICAL-ADD jsou uvedeny na obr.5. Na tomto obrázku jsouoperace typu LOGICAL označeny ψ a operace typu ADD jsou ozna-čeny ζ „
Zatímco obr. 5 udává operace, které musí být vykonány naoperandech instrukcí typu ADD a typu.LOGICAL pro překonání .vzájemného blokování, obr.6A a 6B udávají operace aritmeticko-id^ieké, jednotky, které je třeba vykonat na vstupech AIP, AI1a AI2 pro podporování všech instrukcí, které jsou obsaženy veslučovatelných kategorií ,z obr;4A a 4B. Na obr.6A a 6B jed- • nočlen - označuje dvojkový komplement a /x/ označuje absolut-ní hodnotu x. Tento obrázek byl odvozen při použití analýzytotdžné s tou, jaká byla udána výše,, přičemž však byla uvažo-vána všechna slučování kategorií. Pro operace z obr.5, kterémají být vykonány aritmeticko-logickou jednotkou, musí jednot-ková řízení vykonávání operací směrovat požadované obsahy re-gistrů na odpovídající vstupy aritmeticko-logické jednotkyi0br.7A a 'JB shrnují směrování operandů, které se $tusí objevitpro aritmeticko-logickou jednotku definovanou podle obr.6A a6B pro vykonávání operací z obr.5. Spolu s. těmito směrovánímijsou udávány instrukce typu LOGICAL a ADD pro usnadnění _ ma-pování těchto výsledků na obr.6A a 6B. Směrování sloučených J operací ADD-ADD nebyla zahrnuta, protože tyto operace vyžadu-ji Čtyřvstupovou aritmeticko-logickou jednotku /viz ”idio'- 'synkrasie"/ a jsou tak vzaty na zřetel. - I když popis byl až dosud zaměřen na uvažování analýzyslučovaných instrukcí na čtyřech konkrétních uvedených re- 20 gistrech R1, R2, R3 a R4, je zřejmé, že praktické použitívynálezu není omezeno na čtyři určité registry. Volba těchtooznačení je spíše pouze pomůckou pro analýzu a porozumění.Naopak by mělo být zřejmé, že analýza může být zevšeobecně-na, jak vyplývá z výše uvedených rovnic.
Logické blokové schéma znázorňující zařízení pro imple-mentaci vícefunkční aritmeticko-logické jednotky popsané v zá-sadě na obr. 5, 6A, 6B, 7A a 7B, je na obr. 8. Na obr. 8dostává instrukční registr 50 sloučenou instrukci zahrnujícíinstrukce paměťových polí 52 a 54. Sloučené instrukce jsouopatřeny příznaky 56 a 58. Instrukce a jejich příznaky jsouvedeny do dekódovací a řídicí logiky 60, která dekóduje in-strukce a informaci obsaženou v jejich příznacích pro vytvoře-ní signálů volby registrů na vyvolovacím výstupu 62 a signályvolby funkce na vyvolovacím výstupu 66. Signály volby retis-tru na vyvolovacím výstupu 62 konfigurují prvek 64 vzájemné-ho spojení, který je připojen k nejméně třem univerzálnímregistrům 63A, 63B, 63C souboru 63 univerzálních registrůpro dodávání obsahů až tří registrů na tři operandové vstupyAIP, AIl a AI2 aritmeticko-logické jednotky 65 pro překonává-ní datové závislosti. Aritmeticko-logická jednotka 65 jevícefunkční aritmeticko-logická jednotka, jejíž funkčnost sevolí signály volby funkce přítomnými na výstupu 66 dekódovacía řídicí logiky 60. S operandy dodávanými z registrů připo-jených přes prvek 64 vzájemného spojení bude aritmeticko-lo-gická jednotka 65 vykonávat funkce udávané signály volbyfunkce pro dosažení výsledku na výstupu 67.
Paralelně s výše uvedeným zařízením s aritmetickou alogickou jednotkou pracuje druhé zařízení s aritmeticko-lo-gickou jednotkou, obsahující dekódovací a řídicí logiku 70,které dekóduje první instrukci v instrukčním paměťovém poli52 pro poskytování signálů volby registru přes výstup 710do obvyklého prvku 720 vzájemného spojení, který je taképřipojen k univerzálním registrům 63A, 63B, 63C. Logika 70také poskytuje signály volby funkce na výstupu 74 do běžné 21 dvouoperandové aritmeticko-logické jednotky 65. Jak je popi-sováno níže, aritmeticko-logická jednotka 65 může vykonávatdruhou instrukci v obou případech, tj. kdy jeden z jejíchoperandů závisí nebo nezávisí na výsledných datech vytváře-ných vykonáváním první instrukce. Obě aritmeticko-logickéjednotky pracují paralelně pro zajištění souběžného vykoná-vání dvou instrukcí, slučovaných či nikoliv.
Pokud jde o slučované instrukce pamětových polí 52 a54 a instrukční registr 50, předpokládá se existence slučova-če. Předpokládá se, že slučovač páruje nebo slučuje instrukcez toku instrukcí zahrnujícího sled skalárních instrukcí při-váděných do skalárního počítače, v němž je slučovač umístěn.Slučovač seskupuje instrukce podle výše uvedených zásad.Například instrukce kategorie 1 (obr. 5) jsou seskupoványdo LOGICAL/ADD, ADD/LOGICAL, LOGICAL/LOGICAL a ADD/ADD dvojicv souladu s tabulkou 5. Ke každé instrukci slučovaného soubo-ru je připojen příznak obsahující řídicí informaci. Tentopříznak obsahuje slučovací bity, které se týkají části pří-znaku použité specificky pro identifikování skupin slučova-ných instrukcí. S výhodou v případě slučování dvou instrukcí 9 se použije následující postup pro indikování, kde docházíke slučování.
Ve strojích systému/370 jsou všechny instrukce uspořá-dány na půlslovové mezi a jejich délky jsou buS 2,4 nebo6 bitů. V tomto případě je slučovací příznak zapotřebí prokaždé půlslovo. Jednobitový příznak je dostatečný pro indi-kování, zda instrukce je nebo není slučována. S výhodou "1"značí, že instrukce, která začíná v uvažované slabice, jeslučována s následující instrukci. "0" označuje, že nedochá-zí k žádnému slučování. Slučovací bit sdružený s půlslovy,které neobsahují první byte instrukce je zanedbáván. Slučo-vací bit pro první byte druhé instrukce ve slučované dvojicise také zanedbává. V důsledku toho je zapotřebí pouze jedenbit informace pro identifikování a vhodné vykonávání slučo-vaných instrukcí. Bity příznaků 56 a 58 jsou tak dostateč- 22 né pro informování dekódovací a řídicí logiky 60 o tom, žeinstrukce v paměťových polích 52 a 54 instrukčního registrumají být slučovány, tj. vykonávány paralelně. Dekódovacía řídicí logika 60 potom vyšetřuje instrukce paměťových polí52 a 54 pro určení, jaký je jejich sled vykonávání, jakéjsou podmínky vzájemného blokování, pokud existují, a jakéfunkce jsou požadovány. Toto určování je znázorněno pro in-strukce kategorie 1 na obr. 5. Dekódovací a řídicí logikataké určuje funkce vyžadované pro překonání jakýchkoli vzá-jemných blokování s datovými hazardy, jako je na obr. 6A a6B.
Tato určení jsou konzolidována na obr. 7A a 7B. Podleobr. 7A a 7B, při předpokladu, že dekódovací a řídicí logika60 určila na základě příznakových bitů, že instrukce v pamě-ťových polích 52 a 54 se mají slučovat, vyšle logika 60 sig-nál volby funkce na výstupu 66 udávající požadovanou opera-ci podle levého krajního sloupce na obr. 7A. Operační kódyinstrukcí jsou explicitně dekódovány pro zjištění na výstupusignálů volby funkce konkrétních operací ve sloupcích sezáhlavím OPI a 0P2 na obr. 7A a 7B. Signály volby registruna výstupu 62 směrují registry na obr. 8 pomocí prvku 64vzájemného spojení, jak je požadováno ve sloupcích vstupůAIP, AIl a AI 2 na obr. 7A a 7B. Předpokládejme tak například,že první instrukce v paměťovém poli 52 je ADD Rl, R2 a žedruhá instrukce je ADD Rl, R4. Osmnáctá řádka na obr. 7Aukazuje operaci aritmeticko-lotické jednotky, které dekódovacía řídicí obvod indikuje pomocí OPI = + a 0P2 = +, zatímcoregistr R2 je směrován na vstup operandový AIP, registr R4na operandový vstup AIl a registr Rl na operandový vstup AI2.
Obr. 9 slouží pro objasnění struktury a činnosti aritme-ticko-logické jednotky 65 pro překonávání datové závislosti.
Na obr. 9 je znázorněna sčítačka 70 se třemi operandy a s je-diným výsledkem, odpovídající sčítačce z obr. 3. Sčítačka70 dostává vstupy přes obvody mezi vstupy 70A, 70B, 70C sčí-tačky a operandové vstupy AIP, AIl a AIl aritmeticko-logické 23 jednotky. Z operandového vstupu AI2 je operand směrován přestři logické funkční obvody 71, 72 a 73 odpovídající logic-kým operacím AND, OR a EXCLUSIVE-OR. Tento operand je kombi-nován v těchto logických funkčních obvodech s jedním z dru-hých operandů a je směrován do operandového vstupu AIP neboAI1 podle nastavení multiplexoru 80. Multiplexor 75 volíbud nezměněnýoperand připojený k operandovému vstupu AI2nebo výstup jednoho z logických funkčních obvodů 71, 72 nebo73. Vstup zvolený multiplexorem 75 je veden do invertoru77, a multiplexor 78 připojuje k jednomu vstupu 70C sčítačky70 bud výstup invertoru 77 nebo neinvertovaný výstup multi-plexoru 75. Druhý vstup 7OB sčítačky 70 je získáván z ope-randového vstupu AIl aritmeticko-logické jednotky multiple-xorem 82, který volí bud "0" nebo operand připojený k ope-randovému vstupu AIl aritmeticko-logické jednotky. Výstupmultiplexoru je invetován invertorem 84 a multiplexor 85volí bud neinvertovaný nebo invertovaný výstup multiplexoru82 jako druhý vstup operandů do sčítačky 70. Třetí vstup70A do sčítačky 70 se získá z operandového vstupu AIP, kterýje invertován invertorem 87. Multiplexor 88 volí bud "0",vstup operandu do vstupu AIO, nebo jeho inverzní hodnotuvedenou jako třetí vstup do sčítačky 70. Výstup aritmeticko-logické jednotky se získá multiplexorem 95, který volí výstup70D sčítačky 70 nebo výstup jednoho z logických funkčníchobvodů 90, 9_2 nebo 9_3· Logické funkční obvody 90, 92 a 93kombinují výstup sčítačky pomocí indikované logické operacevstupem operandu operandového vstupu AIl. Mělo by být zřejmé, že signál volby funkce spočívá vpodstatě v signálech volby A B C D E F G multiplexoru a vstu-pu voleb "horké" 1/0 do sčítačky 70. Bude zřejmé, že multi-plexor volí rozmezí signálů x od jediného bitu pro signályA, B, E a F do dvoubitových signálů pro C, D a G.
Stavy komplexního řídicího signálu (A B C D E F G 1/01/0) je možno snadno odvodit z obr. 7A a 7B. Například proADD Rl, R2 ADD Rl, R4 z výše uvedeného příkladu, by signál 24 OPI nastavil signál C multiplexoru pro volbu signálu přítom-ného na AI2, zatímco signál F by zvolil neinvertovaný výstupmultiplexoru 75, čímž by poskytl operand v registru Rl dovstupu sčítačky 70 nejdále vpravo. Podobně by signály B aE multiplexoru byly nastaveny pro poskytnutí operandu, kterýje k dispozici na vstupu AIl v neinvertované formě do pro-středního vstupu sčítačky 70, zatímco signál D multiplexoruby byl nastaven pro poskytnutí operandu na vstup AIP sčítačky70 nejvíce vlevo bez inverze. Konečně, oba "1/0" vstupy jsounastaveny přiměřeně pro obě sčítací operace. S těmito vstupyse výstup sčítačky 70 jednoduše součet tří operandů, kterýodpovídá požadovanému výstupu aritmeticko-logické jednotky.Řídicí signál G by proto měl být nastaven tak, že multiple-xor 95 by vydal na výstupu výsledek dosažený sčítačkou 70,který by byl součet operandů v registrech Rl, R2 a R3. Při slučování sledu instrukcí LOGICAL/ADD by logickáfunkce byla zvolena multiplexorem 75 a poskytnuta multiple-xorem 78 do sčítačky 70, zatímco operand, který se má při-čítat k logické operaci, by byl veden jedním z multiplexorů85 nebo 88 na jeden ze druhých vstupů sčítačky 70, při při-vádění 0 na třetí vstup. V tomto případě by multiplexor 95byl nastaven pro volbu výstupu sčítačky 70 jako výsledku.
Konečně při sledu ADD/LOGICAL by dva operandy, kteréby měly být nejprve přičítány, vedeny na dva ze vstupů sčí-tačky 70, zatímco 0 by byla vedena na třetí vstup. Výstupsčítačky je okamžitě kombinován s nezvoleným operandem v lo-gických funkčních obvodech 90, 92 a 93 . Řídicí signál budenastaven na volbu výstupu prvku, jehož operace odpovídá dru-hé instrukci slučovaného souboru. Všeobecněji řečeno představuje obr. 9 logické znázorně-ní aritmeticko-logické jednotky 65 pro překonávání datovézávislosti. Při odvozování tohoto proudu dat je činěno roz-hodnutí nepodporující vzájemná blokování, v nichž se vý-sledek první instrukce používá jako oba operandy druhé in- 25 strukce. Podrobnější rozbor je možné nalézt v sekci "Idiosyn-kracie". Skutečnost, že toto znázornění implementuje ostatníoperace požadované slučováním LOGICAL-AND, je možno vidětze srovnání datového toku s funkčním sloupcem z obr. 5. V tomto sloupci je operace typu LOGICAL na dvou operandech násle-dována operací typu ADD mezi výsledkem LOGICAL a třetím ope-randem. Toto je prováděno směrováním operandů tak, aby bylylogicky kombinovány na operandových vstupech AIP a AI2 z obr.9 vhodným blokem z logických funkčních obvodů 71, 72 nebo73, směrováním tohoto výsledku do sčítačky 70 a směrovánímtřetího operandu přes operandový vstup AIl sčítačky. Inverzea poskytnutí "horké" jedničky nebo nuly jsou zajištoványjako část signálu volby funkce, jak je požadováno specifi-kovanou aritmetickou operací. V jiných případech je operacetypu ADD mezi dvěma operandy následována operací typu LOGICALmezi výsledkem operace ADD a třetím operandem. Toto je vyko-náváno směrováním operandů pro operaci typu ADD na operando-vý vstup AIP a AI2, směrováním těchto vstupů do sčítačky,směrováním výstupů sčítačky do logických funkčních obvodů90, 92 a 93 za sčítačkou a směrováním třetího operandu přesAI3 do těchto logických bloků za sčítačkou. Operace typuLOGICAL sledovaná operací typu LOGICAL jsou vykonávány směro-váním dvou operandů pro první operaci typu LOGICAL na vstupAIP a AI2, které jsou směrovány do logických obvodů předsčítačkou, směrováním výsledků z logických obvodů před sčí-tačkou přes aritmeticko-logickou jednotku mez modifikacepřičtením nuly do logického obvodu umístěného za sčítačkou,a směrováním třetího operandu do logického obvodu umístěné-ho za sčítačkou. Pro operaci typu ADD následovanou operacítypu ADD jsou tři operandy směrovány na vstupy sčítačky avýstup sčítačky je předkládán na výstup aritmeticko-logickéjednotky.
Operace aritmeticko-logické jednotky 65 pro vykonánídruhé instrukce v instrukčním paměťovém poli 54, když nenídatová závislost mezi první a druhou instrukcí, je přímočará. 26 V tomto případě jsou do aritmeticko-logické jednotky přivádě-ny pouze dva operandy. Je-li druhá instrukce instrukce typuADD, budou proto oba operandy vedeny na sčítačku 70 spolus nulou na místě třetího operandu, přičemž výstup sčítačkybude zvolen multiplexorem 95 jako výstup aritmeticko-logickéjednotky. Je-li druhá instrukce logická instrukce, může býtlogická instrukce vykonána směrováním dvou operandů do lo-gických funkčních obvodů 71, 72 a 73 při volbě volného výstu-pu, a potom se nechá výsledek projít sčítačkou 70, přičemžse na oba ostatní vstupy sčítačky zavedou nuly. V tomto pří-padě by byl výstup sčítačky rovný logickému výsledku a bylby zvolen multiplexorem 95 jako výstup aritmeticko-logickéjednotky. Alternativně může být jeden operand veden sčítač-kou při přičtení dvou nul, takže ze sčítačky 70 na výstupuvyjde tentýž operand. Tento operand je kombinován s druhýmoperandem v logických funkčních obvodech 90, 92 a 93, při-čemž vhodný výstup logického obvodu se multiplexorem 95 zvolíjako výstup aritmeticko-logické jednotky.
Jsou-li instrukce slučovány jak je znázorněno na obr. 8, bez ohledu na to, zda závislost neexistuje či ano, in-strukce v instrukčním pamětovém poli 52 instrukčního regis-tru 50 bude s výhodou vykonána dekódováním instrukce přessčítačku 70 a výstup 74, volbou jejich operandů přes sčítač-ku 70, výstup 710 a prvek 720 vzájemného spojení a vykoná-ním zvolené operace na zvolených operantech v aritmeticko-logické jednotce 75. Jelikož aritmeticko-logická jednotka75 je určena pro provádění jediné instrukce, jsou dva ope-randy přiváděny ze zvoleného registru přes operandové vstu-py AIP, AI1, přičemž indikovaný výsledek je poskytován navýstupu 77. Při uspořádání znázorněném na obr. 8 tak aritmeticko-logická jednotka 65 pro překonávání datové závislosti, vkombinaci s běžnou aritmeticko-logickou jednotkou 75, pod-poruje souběžné (nebo paralelní) vykonávání dvou instrukcí,i když existuje datová závislost mezi instrukcemi. 27 ^awwiiMa»«e!gagÍfflaRS£Big?
PW
Generování adres může být také ovlivňováno datovýmihazardy, které mohou být označeny jako adresové hazardy AHAZ.Následující sled představuje slučovaný sled instrukcí systé-mu System/370, který je prostý adresových hazardů: AR Rl, R2 S R3, D/R4, R5 kde instrukce AR znamená "sečti" (ADD), instrukce S znamená"odečti" (SUBTRACT) a D představuje posun o tři čtyřbitováslova. Neexistuje žádný hazard AHAZ, jelikož R4 a R5, kterése používají ve výpočtu adres, nebyly změněny předcházejícíinstrukcí. Adresové hazardy existují v následujících sle-dech: AR Rl, R2 S R3, D/Rl, R5) AR Rl, R2 S R3, D/R4, Rl/ Výše uvedené sledy demonstrují slučování instrukce RR (kate-gorie 1 na obr. 5) s instrukcemi RX (kategorie 9) vykazují-cími AHAZ. Jiné kombinace zahrnují instrukce RR slučovanés instrukcemi RS a SI.
Pro aritmeticko-logickou jednotku pro překonávání vzá-jemného blokování musí být odvozeny nové operace vznikajícíz překonávání vzájemných blokování s hazardy AHAZ, a to ana-lyzováním všech kombinací sledů instrukcí a konfliktů adre-sových operandů. Analýza ukazuje, že společná vzájemná blo-kování, jaká jsou obsažena ve výše uvedených sledech instruk-cí, mohou být překonávána pomocí aritmeticko-logické jednotkyčtyři na jedna.
Funkce, které by bylo třeba podporovat aritmeticko-lo-gickou jednotkou pro překonání všech vzájemných blokovánís hazardy AHAZ pro architekturu instrukční úrovně systémuSystem/370 jsou zaznamenány na obr. 10. Pro tyto případy,kde nejsou uvedeny čtyři vstupy, je třeba použít implicitnínuly. Logický diagram aritmeticko-logické jednotky pro překo- 28 návání vzájemného blokování s hazardy AHAZ je poskytnut naobr. 11. Velký dílčí soubor, ale nikoliv všechny z funkcíuvedených na obr. 10, je podporován znázorněnou aritmeticko-logickou jednotkou. Tento dílčí soubor sestává z funkcí uve-dených v řádcích jedna až dvacet jedna na obr. 10. Rozhodnu-tí, jaké funkce zahrnout, je implementační rozhodnutí, jehožrozbor je odsunut do sekce "Idiosynkracie".
Jak ukazuje obr. 11, zahrnuje znázorněná aritmeticko-lo-gická jednotka sčítačku 100 v níž jsou kaskádovitě uspořádá-ny třívstupové a dvouvstupové sčítačky 101 a 102 s uchováva-nými přenosy s dvouvstupovou a jednovýstupovou sčítačkou103 s predikcí přenosů takovým způsobem, že sčítačka 100je skutečně čtyřoperandová sčítačka s jedním výsledkem pročinnost aritmeticko-logické jednotky na obr. 11. Při generování obrázku 10 byla složitost struktury arit-meticko-logické jednotky zjednodušena na účet řídicí logiky.Toto je nejlépe vysvětleno příkladem. Uvažujme dva následu-jící sledy instrukcí Systému/370: NR Rl, R2 (4) S R3, D/R1,R5/ NR Rl,R2 (5) S R3,D/R4,R1/ kde NR značí instrukci "AND" a S značí instrukci "odečti"(subtract).
Necht je obecný záznam pro tento sled NR R1,R2 S R3,D/R4,R5/
Pro tento první sled je adresa operandu: OA = D + (Rl A R2) + R5zatímco pro druhý sled je OA = D + R4 + (Rl A R2) kde OA značí "adresa operandu" (operand address).
Pro zjednodušení řízení provádění na účet složitosti aritme- 29 ticko-logické jednotky, by bylo zapotřebí, aby aritmeticko-logická jednotka vykonala následující dvě operace: OA = AGIO + (AGU Λ AGI2) + AGI3 OA = AGIO + AGI2 + (AGIl AAGI3) kde D je přiváděno na vstup AGIO, R2 je přiváděno na vstupAGIl, R4 je přiváděno na vstup AGI2 a R5 je přiváděno navstup AGI3. Smysl označení vstupů AGIO, AGIl, AGI2 a AGI3je zřejmý z analogie provedení na obr. 11, s provedením z obr9, které je vysvětleno níže. Aritmeticko-logická jednotkaby však mohla být zjednodušena, jestliže řídicí jednotkyzjistí, které z R4 a R5 mají hazard s R1 a dynamicky směrujítento registr na AGI2. Druhý registr by byl veden do AGI3.
Pro tento předpoklad musí aritmeticko-logická jednotka pouzepodporovat operaci: OA = AGIO + (AGIl AAGI2) + AGI3 Záměny jako tyto jsou provedeny za účelem snížení složitostiaritmeticko-logické jednotky pro generování adres, jakoži aritmeticko-logických jednotek pro vykonávání instrukcía určení větvení.
Aritmeticko-logická jednotka z obr. 11 může nahraditaritmeticko-logickou jednotku na obr. 8 a 9. V tomto případěby dekódovací a řídicí logika 60 přiměřeně odrážela funkcez obr. 10.
Podobné analýzy, jaké byly provedeny pro aritmeticko-lo-gické jednotky, překonávající vzájemné blokování, pro vyko-návání instrukcí a generování adres, musí být provedeny proodvozování požadavků slučování na aritmeticko-logické jed-notce s určováním větvení, jak je uvedeno na obr. 12 a 13.Aritmeticko-logická jednotka pro určování větvení pokrýváfunkce požadované instrukcemi srovnávajícími hodnoty regist-rů. To zahrnuje instrukce větvení BXLE, BXH, BCT a BCTR,v nichž je hodnota registru zvyšována o obsah druhého regist-ru (BXLE a BXH) nebo je snižována o jednu (BCT a BCTR) předtím, než je srovnávána s hodnotou registru (BXLE a BXH) nebo 30 nulou (BCT a BCTR) pro určení výsledku větvení. Podmíněnávětvení nejsou vykonávána touto aritmeticko-logickou jednot-kou.
Aritmeticko-logická jednotka znázorněná na obr. 13 obsa-huje vícestupňovou sčítačku 110, v níž jsou dvě sčítačky111 a 112 s uchovávanými přenosy kaskádovitě uspořádány,se dvěma výstupy sčítačky 112 s uchovávanými přenosy zajištu-jícími dva vstupy pro sčítačku 113 s predikcí přenosů. Tatokombinace účinně zajištuje čtyřvstupovou sčítačku s jedinýmvýsledkem, použitou pro aritmeticko-logickou jednotku z obr.13.
Jako příklad datových hazardů, které se mohou vyskytnout,je možno uvažovat následující sled instrukcí: AL R1,D/R2,R3/ BCT Rl,D/R2,R3/, kde AL značí instrukci "ADD LOGICAL" a BCT instrukci "BRANCHON COUNT".
Necht (x) označuje obsah pamětového místa x. Výsledky násle-dující provedení jsou R1 = R1 + (D + R2 + R3) - 1 Větvi, jestliže (Rl + (D + R2 + R3) -1=0Toto porovnání je možno provést vykonáním operace:
Rl + (D + R2 + R3) - 1 - 0 Výsledky analýz pro aritmeticko-logickou jednotku s určovánímvětvení jsou uvedeny v obr. 12 a 13 bez dalšího rozboru.
Funkce podporované proudem dat zahrnují ty, které byly speci-fikovány řadami 1 až 25 na obr. 12. Aritmeticko-logická jed-notka z obr. 13 může nahražovat aritmeticko-logickou jednot-ku 65 z obr. 8. V tomto případě by dekódovací a řídicí logika60 přiměřeně odrážela funkce z obr. 12. Některé z funkcí, které vznikají z konfliktů operandů,jsou složitější než ostatní. Například sled instrukcí: AR R1,R2 AR Rl,Rl 31 kde AR značí instrukci "sečti" (add), vyžaduje aritmetickologickou jednotku čtyři na jedna, spolu se z toho vyplývají-cí složitostí, pro překonání datového vzájemného blokování,protože její vykonávání má za následek:
Rl = (Rl + R2) + (Rl + R2) .
Jiné sledy mají za následek operace, které vyžadují, abydo aritmeticko-logické jednotky bylo začleněno přídavné zpož-dění za účelem překonání vzájemného blokování. Sled, kterýilustruje toto zvýšené zpoždění je: SR R1,R2 LPR Rl,Rl kde S značí instrukci "odečti" a LP instrukci "zaved kladné"(load positive), což má za následek operaci
Rl = (Rl = R2) .
Tato operace se nehodí k paralelnímu provádění, protože výsled-ky odečítání jsou zapotřebí k nastavení výpočtu absolutníhodnoty. Místo překonání všech vzájemných blokování v aritmeticko-logické jednotce je možné použít logiku vydávající instrukcenebo předprocesor, který je určen pro zjišťování sledů instruk-cí, které vedou k těmto složitějším funkcím. Detekce předpro-cesorem odstraňuje potřebu přidávat zpoždění k logice vydá-vající instrukce, která je často v blízkosti kritické cesty.Když se zjistí takový sled, logika vydávající instrukce nebopředprocesor se přepnou na vydávání sledu ve skalárním modupři vyloučení potřeby překonávat vzájemné blokování. Rozhod-nutí pokud jde o to, které instrukční sledy mají nebo nemajímít jejich vzájemná blokování překonávána, je implementačnírozhodování, které je závislé na faktorech nad rámec vynále-zu. Je však třeba upozornit na možnost kompromisů mezi slo-žitostí realizace aritmeticko-logické jednotky a složitostílogiky pro vydávání instrukcí.
Hazardy přítomné v generování adres také dávají vznik 32 implementaci kompromisů. Například většina ze vzájemnýchblokování při generování adres může být překonána použitímaritmeticko-logické jednotky čtyři na jedna, jaká byla rozebrá-na výše. Následující sled AR Rl,R2 S R3,D/Rl,Rl/, kde AR značí instrukci "sečti" a S instrukci "odečti", všaknezapadá do této kategorie. Pro tento případ je zapotřebíaritmeticko-logické jednotky pět na jedna pro překonání vzá-jemného blokování s hazardem AHAZ, protože výsledná operaceje: OA = D + (R1 + R2) + (R1 + R2) , kde OA je adresa výsledného operandu. Jako dříve, je vřazenítéto funkce do aritmeticko-logické jednotky implementačnírozhodnutí, které závisí na častosti výskytu takového vzájem-ného blokování. Podobné výsledky se také vztahují na aritme-ticko-logickou jednotku pro určování větvení.
Analýzy podobné těm, jaké byly předvedeny výše, mohoubýt provedeny pro odvození hardwaru pro překonávání vzájem-ného blokování pro nejobecnější případ n vzájemných bloková-ní. Pro tento rozbor je možno se odvolat na obr. 14. Předpo-kládáme jednoduchá datová vzájemná blokování, jako: AR R1,R2 AR R3,R1 kde AR značí instrukci "sečti" kde se změněný registr z první instrukce použije jako pouzejediný z operandů druhé instrukce, přičemž pro překonánívzájemného blokování by bylo zapotřebí aritmeticko-logickéjednotky (n+1) na jedna. Pro překonání například tří vzájem-ných blokování při použití výše uvedeného předpokladu bybyla zapotřebí aritmeticko-logická jednotka čtyři na jedna.
To by vyžadovalo přídavný stupeň se sčítačkou s uchovávanýmipřenosy v aritmeticko-logické jednotce.
Claims (10)
- - 3? - PATENTOV1. Hardwarové zařízení pro překonávání datové závislos-ti v počítači s architekturou pro sériové vykonávání sleduskalárních instrukcí, vyznačené tím, že obsahuje instrukčníregistr (50) s nejméně dvěma paměťovými poli (52, 54), nejmé-ně tři univerzální registry (63A, 63B, 63C), každý pro jedenoperand, prvek (64) vzájemného spojení, který je spojen sespolečným výstupem univerzálních registrů, dekódovací a ří-dicí logiku (60) mající své vstupy připojené k výstupu instruk-čního registru (50) a mající svůj vyvolovací výstup (62)registrů spojený s prvkem (64) vzájemného spojení a majícísvůj vyvolovací výstup (66) funkcí spojený s aritmetickou a logickou jednotkou (65), která je dále opatřena třemi ope-randovými vstupy (AIO, AI1, AI2), spojenými s uvedeným prv-kem (64) V2.ŤÍspojení a má jeden výstup (67) .
- 2. Hardwarové zařízení podle nároku 1 vyznačené tím,že aritmetická a logická jednotka (65) obsahuje sčítačku (70) opatřenou třemi operandovými vstupy (70A, 70B, 70C) při-pojenou k operandovým vstupům (AIO, AI1, AI2) aritmetickéa logické jednotky (65) a jedním výsledkovým výstupem (70D)spojeným s výstupem fšl) aritmetické a logické jednotky (65).
- 3. Hardwarové zařízení podle nároku 2 vyznačené tím, že sčítačka (70) zahrnuje sčítačku (10) a uchovávanými přeno-sy, opatřenou třemi vstupy spojenými s operandovými vstupy(70A, 70B, 70C) sčítačky (70) a se součtovým výstupem (12)a přenosovým výstupem (14), a dále sčítačku (22) s predikcípřenosů, opatřenou dvěma vstupy připojenými k příslušnémusoučtovému výstupu (12) a přenosovému výstupu (14) sčítačky(10) s uchováváním přenosů a s výstupem (26) spojeným s vý-sledkovým výstupem (70D) sčítačky (70).
- 4. Hardwarové zařízení podle nároku 2 nebo 3 vyznačenétím, že dva ze tří operandových vstupů (AIO, AI1, AI2) arit- 34 metické a logické jednotky (65) jsou připojeny ke třem lo-gickým funkčním obvodům (71, 72, 73), které jsou dále spojenys jedním z uvedených tří operandových vstupů (70C) sčítačky(70) .
- 5. Hardwarové zařízení podle kteréhokoli z nároků 2až 4 vyznačené tím, že jeden z uvedených tří operandovýchvstupů (AIO, AIl, AI2) aritmetické a logické jednotky (65)a výsledkový výstup (70D) sčítačky (70) jsou připojeny ketřem logickým funkčním obvodům (90, 92, 93), které jsou dálespojeny s výstupem /67) aritmetické a logické jednotky (65).
- 6. Hardwarové zařízení podle nároku 4 nebo 5 vyznačenétím, že první logické funkční obvody (71, 90) na vstupní a výstupní straně sčítačky (70) jsou součinové obvody, dru-hé logické funkční obvody (72, 92) jsou součtové obvody atřetí logické obvody (73, 90) jsou obvody výlučného součtu.
- 7. Hardwarové zařízení podle nároku 6 vyznačené tím, že dva (AIO, AIl) ze tří operandových vstupů (AIO, AIl, AI2)aritmetické a logické jednotky (65) jsou připojeny k multi-ple xoru (80), který je dále připojen ke třem logickým funkč-ním obvodům (71, 73., 73).
- 8. Hardwarové zařízení podle nároku 7 vyznačené tím,že tři logické funkční obvody (71, 72, 73) jsou připojenyk multiplexoru (75), který je dále spojen s jedním (70C)ze tří operandových vstupů (70A, 70B, 70G) sčítačky (70).
- 9. Hardwarové zařízení podle kteréhokoli z nároků 6až 8 vyznačené tím, že tři logické funkční obvody (90, 92, 93) jsou spojeny s multiplexorem (95), který je dále spojens výstupem (67) aritmetické a logické jednotky (65).
- 10. Hardwarové zařízení podle kteréhokoli z nároků 1až 9 vyznačené tím, že prvek (64) vzájemného spojení obsa-huje multiplexor pro zavádění obsahů tří univerzálních re-gistrů (63A, 63B, 63C) na tři operandové vstupy (AIO, AIl,AI2) aritmetické a logické jednotky (65).
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/504,910 US5051940A (en) | 1990-04-04 | 1990-04-04 | Data dependency collapsing hardware apparatus |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CS93291A3 true CS93291A3 (en) | 1992-03-18 |
| CZ279873B6 CZ279873B6 (cs) | 1995-07-12 |
Family
ID=24008222
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US5051940A (cs) |
| EP (1) | EP0451562A3 (cs) |
| JP (1) | JPH0778732B2 (cs) |
| BR (1) | BR9101334A (cs) |
| CA (1) | CA2039639C (cs) |
| CZ (1) | CZ279873B6 (cs) |
| HU (1) | HUT57453A (cs) |
| PL (1) | PL165457B1 (cs) |
Families Citing this family (64)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0390978A1 (en) * | 1989-04-03 | 1990-10-10 | Koninklijke Philips Electronics N.V. | Communication system with a two-wire serial backbone bus for connecting bridges to secondary three-wire buses |
| JP2511151B2 (ja) * | 1989-09-11 | 1996-06-26 | 富士通株式会社 | デ―タ処理装置 |
| EP0478745A4 (en) * | 1990-04-04 | 1993-09-01 | International Business Machines Corporation | High performance interlock collapsing scism alu apparatus |
| CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
| JP2535252B2 (ja) * | 1990-10-17 | 1996-09-18 | 三菱電機株式会社 | 並列処理装置 |
| JPH04156613A (ja) * | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
| EP0498067A2 (en) * | 1991-02-08 | 1992-08-12 | International Business Machines Corporation | Microcode generation for a scalable compound instruction set machine |
| JP2693651B2 (ja) * | 1991-04-30 | 1997-12-24 | 株式会社東芝 | 並列プロセッサー |
| 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 |
| JP2779557B2 (ja) * | 1991-07-09 | 1998-07-23 | 三菱電機株式会社 | 並列演算処理装置 |
| 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 |
| US5590348A (en) * | 1992-07-28 | 1996-12-31 | International Business Machines Corporation | Status predictor for combined shifter-rotate/merge unit |
| JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
| US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
| US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
| US5761473A (en) * | 1993-01-08 | 1998-06-02 | International Business Machines Corporation | Method and system for increased instruction synchronization efficiency in a superscalar processsor system utilizing partial data dependency interlocking |
| US5737561A (en) * | 1993-01-22 | 1998-04-07 | Intel Corporation | Method and apparatus for executing an instruction with multiple brancing options in one cycle |
| JPH06242948A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
| US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
| US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
| US5710912A (en) * | 1993-05-06 | 1998-01-20 | Hewlett-Packard Co. | Method and apparatus for enabling a computer system to adjust for latency assumptions |
| US6154828A (en) * | 1993-06-03 | 2000-11-28 | Compaq Computer Corporation | Method and apparatus for employing a cycle bit parallel executing instructions |
| CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
| EP1369775A1 (en) * | 1993-11-05 | 2003-12-10 | Intergraph Hardware Technologies Company | Instruction cache associative cross-bar switch |
| US5596763A (en) * | 1993-11-30 | 1997-01-21 | Texas Instruments Incorporated | Three input arithmetic logic unit forming mixed arithmetic and boolean combinations |
| US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
| US5590350A (en) * | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
| US5465224A (en) * | 1993-11-30 | 1995-11-07 | Texas Instruments Incorporated | Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs |
| US5485411A (en) * | 1993-11-30 | 1996-01-16 | Texas Instruments Incorporated | Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs |
| US6016538A (en) * | 1993-11-30 | 2000-01-18 | Texas Instruments Incorporated | Method, apparatus and system forming the sum of data in plural equal sections of a single data word |
| SG44642A1 (en) * | 1994-01-10 | 1997-12-19 | Dow Chemical Co | A massively multiplexed superscalar harvard architecture computer |
| TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
| TW260765B (cs) * | 1994-03-31 | 1995-10-21 | Ibm | |
| 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 |
| 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 |
| 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 |
| US5555424A (en) * | 1994-10-06 | 1996-09-10 | The Dow Chemical Company | Extended Harvard architecture computer memory system with programmable variable address increment |
| US5931941A (en) * | 1995-04-28 | 1999-08-03 | Lsi Logic Corporation | Interface for a modularized computational unit to a CPU |
| US5706489A (en) * | 1995-10-18 | 1998-01-06 | International Business Machines Corporation | Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data |
| US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
| US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
| US5838960A (en) * | 1996-09-26 | 1998-11-17 | Bay Networks, Inc. | Apparatus for performing an atomic add instructions |
| US5963723A (en) * | 1997-03-26 | 1999-10-05 | International Business Machines Corporation | System for pairing dependent instructions having non-contiguous addresses during dispatch |
| US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
| US6049860A (en) * | 1998-02-19 | 2000-04-11 | International Business Machines Corporation | Pipelined floating point stores |
| US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
| US7645838B2 (en) | 2001-06-29 | 2010-01-12 | Asahi Kasei Kabushiki Kaisha | Conjugated non-aromatic diene or dienophilic compound-modified polyphenylene ethers |
| US7825935B1 (en) * | 2001-11-30 | 2010-11-02 | Nvidia Corporation | System, method and computer program product for using textures as instructions for graphics processing |
| US20030126414A1 (en) * | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
| US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
| US20040128483A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Fuser renamer apparatus, systems, and methods |
| US20040128480A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Register file read port to support uop fusion |
| US9483266B2 (en) * | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
| US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
| GB2516864A (en) * | 2013-08-02 | 2015-02-11 | Ibm | Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance |
| JP2015072623A (ja) * | 2013-10-03 | 2015-04-16 | 株式会社エルイーテック | 加減算回路 |
| US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
| US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
| CN109992307B (zh) * | 2017-12-29 | 2020-05-05 | 上海寒武纪信息科技有限公司 | 指令列表调度方法、装置、计算机设备及存储介质 |
| US12405799B2 (en) * | 2020-11-19 | 2025-09-02 | Arm Limited | Register rename stage fusing of instructions |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5966746A (ja) * | 1982-10-08 | 1984-04-16 | 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 |
| US4754412A (en) * | 1985-10-07 | 1988-06-28 | Schlumberger Systems & Services, Inc. | Arithmetic logic system using the output of a first alu to control the operation of a second alu |
| US4775952A (en) * | 1986-05-29 | 1988-10-04 | General Electric Company | Parallel processing system apparatus |
| JPS6386033A (ja) * | 1986-09-30 | 1988-04-16 | Fujitsu Ltd | パイプライン処理方式 |
| DE3854608T2 (de) * | 1987-03-04 | 1996-06-05 | Nippon Electric Co | Vektorrechnerschaltung, welche schnell eine Berechnung auf drei Eingangsvektoren ausführen kann. |
| US4819155A (en) * | 1987-06-01 | 1989-04-04 | Wulf William A | Apparatus for reading to and writing from memory streams of data while concurrently executing a plurality of data processing operations |
| US4766416A (en) * | 1987-07-16 | 1988-08-23 | General Electric Company | Circuit for generating the square of a function without multipliers |
-
1990
- 1990-04-04 US US07/504,910 patent/US5051940A/en not_active Ceased
-
1991
- 1991-03-20 EP EP19910104316 patent/EP0451562A3/en not_active Withdrawn
- 1991-04-03 BR BR919101334A patent/BR9101334A/pt unknown
- 1991-04-03 CA CA002039639A patent/CA2039639C/en not_active Expired - Fee Related
- 1991-04-03 JP JP3096096A patent/JPH0778732B2/ja not_active Expired - Lifetime
- 1991-04-03 PL PL91289721A patent/PL165457B1/pl unknown
- 1991-04-04 CZ CS91932A patent/CZ279873B6/cs not_active IP Right Cessation
- 1991-04-04 HU HU911100A patent/HUT57453A/hu unknown
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0573309A (ja) | 1993-03-26 |
| HU911100D0 (en) | 1991-10-28 |
| US5051940A (en) | 1991-09-24 |
| CZ279873B6 (cs) | 1995-07-12 |
| CA2039639C (en) | 1995-02-14 |
| EP0451562A2 (en) | 1991-10-16 |
| PL289721A1 (en) | 1991-10-07 |
| BR9101334A (pt) | 1991-11-26 |
| HUT57453A (en) | 1991-11-28 |
| PL165457B1 (pl) | 1994-12-30 |
| EP0451562A3 (en) | 1993-08-18 |
| JPH0778732B2 (ja) | 1995-08-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CS93291A3 (en) | Hardware device for overcoming data dependence in a computer | |
| US5530817A (en) | Very large instruction word type computer for performing a data transfer between register files through a signal line path | |
| US6721884B1 (en) | System for executing computer program using a configurable functional unit, included in a processor, for executing configurable instructions having an effect that are redefined at run-time | |
| US6041399A (en) | VLIW system with predicated instruction execution for individual instruction fields | |
| US7028170B2 (en) | Processing architecture having a compare capability | |
| US7124160B2 (en) | Processing architecture having parallel arithmetic capability | |
| US20030079114A1 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
| US5404555A (en) | Macro instruction set computer architecture | |
| JP2002333978A (ja) | Vliw型プロセッサ | |
| CZ280269B6 (cs) | Číslicový počítačový systém | |
| JPH04299436A (ja) | メモリ回路および機能ユニットのグループを備えた処理装置 | |
| EP0978031A2 (en) | A method for structuring a multi-instruction computer program | |
| KR20000075837A (ko) | 보호형의 매우 긴 명령어 아키텍처를 위한 향상된 명령 디스패치 메카니즘 | |
| EP0180048A2 (en) | An arithmetic processor having a parallel accumulate function | |
| US20030097391A1 (en) | Methods and apparatus for performing parallel integer multiply accumulate operations | |
| USRE35311E (en) | Data dependency collapsing hardware apparatus | |
| JPH0752386B2 (ja) | マルチデ−タ路のcpuア−キテクチヤ | |
| JP3573506B2 (ja) | 述語、及びブール式を解くためのコンピュータ・システム、及び方法 | |
| EP0588341B1 (en) | Data processor | |
| US5941984A (en) | Data processing device | |
| US5890009A (en) | VLIW architecture and method for expanding a parcel | |
| US6594753B2 (en) | Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units | |
| US6175912B1 (en) | Accumulator read port arbitration logic | |
| JP3534987B2 (ja) | 情報処理装置 | |
| CA2560093A1 (en) | Apparatus and method for dual data path processing |
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 |