Pokročilé architektury počítačů (PAP_02.ppt) Karel Vlček, katedra Informatiky, FEI VŠB Technická Univerzita Ostrava
Karel VlčekPokročilé architektury procesorů 2 Superskalární procesory Superskalární procesory jsou charakteristické paralelním vydáváním instrukcí a prováděním několika instrukcí v jednom taktu Dnes představují superskalární procesory rozhodující směr vývoje přesto, že u procesorů CISC je vysoká složitost dekódování instrukcí
Karel VlčekPokročilé architektury procesorů 3 Generický superskalární procesor Typickým znakem je předběžné dekódování Organizaci zajišťuje tzv. vydávací okénko (issue window) Testuje se nezávislost vydávaných instrukcí Z vydávacího okénka se instrukce přesouvají do fronty Existuje i možnost provádět instrukce mimo pořadí
Karel VlčekPokročilé architektury procesorů 4 Dynamické plánování instrukcí Zakládání instrukcí do fronty je prováděno do několika front, které jsou členěny podle funkčních jednotek na tzv. rezervační stanice Načasování probíhá za běhu programu tedy dynamicky (IBM360/91 v roce 1967) V mikroprocesorech se princip dynamického plánování uplatnil až o 25 let později
Karel VlčekPokročilé architektury procesorů 5 Rozpoznání a eliminace závislostí Rezervační stanice řeší dílčí fronty u jednotlivých funkčních jednotek V jednom taktu bývá odesíláno až pět instrukcí Druhým způsobem řešení je použití centrálních rezervačních stanic Zlepšení výkonnosti přispívá možnost spouštění instrukcí mimo pořadí
Karel VlčekPokročilé architektury procesorů 6 Rezervační stanice Centrální rezervační stanice mohou být řešené bez hodnot operandů, u kterých se uplatňuje tabulka skóre rozpracovaných operandů Rezervační stanice s hodnotami operandů umožňují zrušit vazbu mezi jmény proměnných v programu a jejich hodnotami v registrech
Karel VlčekPokročilé architektury procesorů 7 RS a společná datová sběrnice CDB (Common Data Bus) Pro několik spolupracujících rezervačních stanic (RS) je výhodné použít společnou datovou sběrnici CDB (Common Data Bus) Použije-li se jen jedna CDB, lze aktualizovat v jednom taktu jeden výsledek, lépe je použít tolik CDB, kolik je funkčních jednotek Každá RS pak musí provádět několik asociativních vyhledávání pro všechny příznaky výsledků generovaných na začátku
Karel VlčekPokročilé architektury procesorů 8 Tolerování latence skoků Skokovou instrukci je možné vydávat jen s omezeným počtem dalších instrukcí Řídicí závislost představuje hlavní překážku zvyšování výkonnosti procesorů Řešení přináší jednotka nazývaná „Branch Unit“ ve které probíhají načtení a predikce skoků nezávisle na ostatních jednotkách procesoru
Karel VlčekPokročilé architektury procesorů 9 Spekulativní zpracování instrukcí Spekulativní zpracování instrukcí zahrnuje: podmíněné ukončení smyček ostatní podmíněné skoky (provedou se v 50% případů) nepodmíněné skoky včetně skoků do podprogramů a návratů
Karel VlčekPokročilé architektury procesorů 10 Predikce skoků Predikce pevná Predikce skutečná, pokud závisí jen na kódu programu, jedná se o predikci statickou Dynamická predikce zpracovává tabulku historie skoků Zpracování tzv. „skoků v poslední době“ s cílovým adresami skoků zlepšuje výkonnost
Karel VlčekPokročilé architektury procesorů 11 Překrývání paměťových operací Modely paměťové konzistence popisují součinnost ALU a MMU Volnější modely připouštějí, aby zpracování instrukcí pokračovalo dál i za nedokončenou paměťovou operací s vekou latencí Přísnější modely používají tzv. zápisovou zábranu
Karel VlčekPokročilé architektury procesorů 12 Předvýběr dat Předvýběr dat (pre-fetching) je technikou tolerování latence paměťových operací Na předvýběru dat spolupracuje kompilátor Účinný předvýběr dat je takový, který dodává operandy právě včas (just-in-time pre- fetching)
Karel VlčekPokročilé architektury procesorů 13 Omezení superskalárních procesorů V 90% případů nejsou vydávány více než 4 instrukce Zrychlení dosahuje limitní hodnoty 2,5 krát vyšší počet vydaných instrukcí na takt Úspěšné řešení představuje procesor PicoJava se zásobníkovou organizací souboru registrů
Karel VlčekPokročilé architektury procesorů 14 Výhody PicoJava procesoru Zásobníková paměť může obsahovat několik různě velkých instrukcí s velkým počtem proměnných Dekodér dekóduje současně až 2 instrukce Pro zrychlení je proto používána metoda sdružování instrukcí (instruction folding) Lze dosáhnout synchronizace vláken a tzv. sběr odpadu (garbage collection)
Karel VlčekPokročilé architektury procesorů 15 Výhody PicoJava-II procesoru Podpora OO programování: volání metod skryté načítání lokálních proměnných šestistupňová instrukční linka
Karel VlčekPokročilé architektury procesorů 16 Superskalární procesory – přehled (1) Základní myšlenka se dá shrnout následovně: Řešení výkonných jednotek využívá principu řetězení, přičemž nové instrukce jsou volány v následujícím strojovém cyklu Zvyšuje se počet instrukcí v aktuálním strojovém cyklu Musí být zajištěna dostupnost paměti pro data, která jsou zpracovávána instrukcemi
Karel VlčekPokročilé architektury procesorů 17 Superskalární procesory – přehled (2) Při praktickém řešení je nutné, aby byla použita specializovaná cache, pomocí které je možné zajistit dostupnost dat pro provedení operace každou instrukcí programu pokud možno nezávisle Superskalární procesory jsou dnes jednotnou koncepcí používanou mikroprocesorovými systémy
Karel VlčekPokročilé architektury procesorů 18 Realizované superskalární procesory Vysoce výkonné počítačové systémy jsou např. Control Data 6600 a 7600, Cray-1 a „top- of-the-range“ IBM střediskové počítače Začínají se prosazovat hardwarová řešení pro provádění různých typů instrukcí Jako příklad může být uvedeno rozdělení výpočtů prováděných v pevné řádové čárce a v pohyblivé řádové čárce
Karel VlčekPokročilé architektury procesorů 19 Pevná a pohyblivá řádová čárka (1) Více výpočetních jednotek Načtení instrukce Dekódování instrukce Pohyblivá řádová čárka Pevná řádová čárka paměťsběrnice
Karel VlčekPokročilé architektury procesorů 20 Pevná a pohyblivá řádová čárka (2) Základní koncepce superskalárních procesorů vychází z rozdělení výpočetních jednotek pro odlišné operace Nevysloveným předpokladem je zde to, že provádění operací trvá stejně dlouho Tento předpoklad není v praxi možný Výpočet tedy vyžaduje změnu pořadí provádění instrukcí
Karel VlčekPokročilé architektury procesorů 21 Superskalární koncepce (1)
Karel VlčekPokročilé architektury procesorů 22 Superskalární koncepce (2) Možný zisk zrychlení činnosti platí pouze při změně pořadí prováděných instrukcí tak, aby bylo dosaženo datově nezávislé činnosti Tento předpoklad je splnitelný, ale je nezbytné vyřešit datové závislosti Podle řešení datových závislostí jsou klasifikovány tři různé způsoby řešení koncepce superskalárních procesorů
Karel VlčekPokročilé architektury procesorů 23 Superskalární koncepce (3) Statická koncepce – tyto procesory vydávají instrukce podle programu a rovněž provádějí instrukce v původním pořadí Dynamická koncepce – instrukce jsou zde vydávány v pořadí napsaném v programu, ale pořadí jejich provádění je optimalizováno Dynamická se spekulací – stejné jako dynamická koncepce, ale pro případ větvení jsou prováděny obě větve možného postupu
Karel VlčekPokročilé architektury procesorů 24 Superskalární koncepce (4) Terminologie koncepcí: Scheduling – stanovení pořadí provádění instrukcí (statická koncepce / dynamická k.) Issue – okamžik zachycení (fetch) operandů pro instrukci, je prováděno v pořadí programu Execution – provádění (in-order / out-of-order) Speculation and Committal – spekulace a přijetí rozhodnutí (o platnosti výsledku)
Karel VlčekPokročilé architektury procesorů 25 Superskalární koncepce (5) Terminologie koncepcí (pokračování): Write Back – ve skutečnosti není zápis prováděn vždy, ale jen tehdy, je-li potvrzena platnost dat, do té doby je výsledek uložen do pomocného registru Retirement or Completion – instrukce je dokončena a operandy opouštějí registry linky pro provádění operace
Karel VlčekPokročilé architektury procesorů 26 Datové závislosti a hazardy (1) Příklad změny pořadí provádění instrukcí
Karel VlčekPokročilé architektury procesorů 27 Datové závislosti a hazardy (2) Výstupní pořadí je nutné ošetřit, když výsledky dvou instrukcí mají být uloženy do stejného registru Jako „Output Dependency“ je označována situace, kdy první výsledek může přepsat druhý, protože se druhý vyskytl dříve, než byl očekáván Jako „Antidependency“ se označuje případ, při kterém platnost dat přichází v opačném pořadí
Karel VlčekPokročilé architektury procesorů 28 Datové závislosti a hazardy (3) Řešení problémů datových závislostí spočívá v implementaci náležitého počtu registrů pro pořadí instrukcí pro daný algoritmus nebo v tom, že jsou instrukce prováděny v takovém pořadí, jak jsou napsány v programu V takovém případě se ovšem neprojeví výhody Superskalární architektura vyžaduje při implementaci hardwarovou podporu registrů
Karel VlčekPokročilé architektury procesorů 29 Výkon superskalárních procesorů Existují omezení, která musíme brát v úvahu: Dostupnost registrů, které jsou použité při následných operacích WAW a WAR (může být zlepšena použitím přejmenování Předpovědí skoků – předpověď skoků je možné provádět na základě pravděpodobnosti Přeadresováním registrů – spočívá v jejich přejmenování (aliasing)
Karel VlčekPokročilé architektury procesorů 30 Literatura: Dvořák, V.: Architektura a programování paralelních systémů, VUTIUM Brno, (2004), ISBN X Dvořák, V., Drábek, V.: Architektura procesorů, VUTIUM Brno, (1999), ISBN Drábek, V.: Výstavba počítačů, PC-DIR, s.r.o. Brno, (1995), ISBN Mueller, S.: Osobní počítač, Computer Press, Praha, (2001), ISBN Pluháček, A.: Projektování logiky počítačů, Vydavatelství ČVUT Praha, (2003), ISBN Hennessy, J., Patterson, D.: Computer Architecture: A Quantative Approach, Morgan Kaufman, 3rd Edition, 2002, ISBN: