Počítačová architektura - Computer architecture

Blokové schéma základního počítače s jednoprocesorovým CPU. Černé čáry označují tok dat, zatímco červené čáry označují řídicí tok. Šipky označují směr toku.

V počítačovém inženýrství je počítačová architektura soubor pravidel a metod, které popisují funkčnost, organizaci a implementaci počítačových systémů. Architektura systému odkazuje na jeho strukturu z hlediska samostatně specifikovaných komponent tohoto systému a jejich vzájemných vztahů.

Některé definice architektury ji definují jako popis schopností a programovacího modelu počítače, ale nikoli konkrétní implementaci. V jiných definicích zahrnuje počítačová architektura návrh architektury instrukční sady, návrh mikroarchitektury , logický návrh a implementaci .

Dějiny

První zdokumentovaná počítačová architektura byla v korespondenci mezi Charlesem Babbageem a Adou Lovelaceovou , popisující analytický engine . Při stavbě počítače Z1 v roce 1936 popsal Konrad Zuse ve dvou patentových přihláškách pro své budoucí projekty, že strojní instrukce by mohly být uloženy ve stejném úložišti, které slouží pro data, tj . Koncept uloženého programu . Dva další rané a důležité příklady jsou:

Pojem „architektura“ v počítačové literatuře lze vysledovat k práci Lyle R. Johnsona a Fredericka P. Brookse, Jr. , členů oddělení organizace strojů v hlavním výzkumném centru IBM v roce 1959. Johnson měl možnost napsat proprietární výzkum komunikace o Stretch , superpočítači vyvinutém IBM pro národní laboratoř Los Alamos (v té době známé jako Los Alamos Scientific Laboratory). Aby popsal úroveň podrobností pro diskusi o luxusně zdobeném počítači, poznamenal, že jeho popis formátů, typů instrukcí, hardwarových parametrů a vylepšení rychlosti byl na úrovni „systémové architektury“, což je termín, který se zdá být užitečnější než „organizace strojů“ “.

Následně Brooks, projektant Stretch, otevřel kapitolu 2 knihy nazvané Plánování počítačového systému: Projekt Stretch slovy: „Počítačová architektura, stejně jako jiná architektura, je umění určit potřeby uživatele struktury a poté navrhnout splnit tyto potřeby co nejefektivněji v rámci ekonomických a technologických omezení. “

Brooks dále pomáhal s vývojem řady počítačů IBM System/360 (nyní nazývaných IBM zSeries ), ve kterých se „architektura“ stala podstatným jménem definujícím „to, co uživatel potřebuje vědět“. Později uživatelé počítačů začali tento výraz používat mnoha méně výslovnými způsoby.

Nejstarší počítačové architektury byly navrženy na papíře a poté přímo zabudovány do konečné hardwarové podoby. Později byly prototypy počítačové architektury fyzicky postaveny ve formě počítače TTL ( tranzistor-tranzistorová logika ) -jako jsou prototypy 6800 a PA-RISC- testovány a vylepšovány, než se zavázaly ke konečné hardwarové podobě. V 90. letech 20. století se nové počítačové architektury typicky „staví“, testují a vylepšují - uvnitř nějaké jiné počítačové architektury v simulátoru počítačové architektury ; nebo uvnitř FPGA jako měkký mikroprocesor ; nebo obojí - před přijetím do finální hardwarové podoby.

Podkategorie

Disciplína počítačové architektury má tři hlavní podkategorie:

V počítačové architektuře existují další technologie. Následující technologie se používají ve větších společnostech, jako je Intel, a byly odhadnuty v roce 2002 na 1% veškeré počítačové architektury:

  • Makroarchitektura : architektonické vrstvy abstraktnější než mikroarchitektura
  • Architektura sady instrukcí pro sestavení : Inteligentní assembler může převést abstraktní montážní jazyk společný pro skupinu počítačů do mírně odlišného strojového jazyka pro různé implementace .
  • Makroarchitektura viditelná pro programátory : jazykové nástroje vyšší úrovně, jako jsou kompilátory, mohou definovat konzistentní rozhraní nebo smlouvu pro programátory, kteří je používají, abstrahující rozdíly mezi základními ISA, UISA a mikroarchitekturami . Například standardy C , C ++ nebo Java definují různé makroarchitektury viditelné pro programátory.
  • Microcode : microcode je software, který překládá pokyny ke spuštění na čipu. Působí jako obal kolem hardwaru a představuje preferovanou verzi rozhraní sady instrukcí hardwaru. Toto zařízení pro překlad instrukcí poskytuje návrhářům čipů flexibilní možnosti: Např. 1. Nová vylepšená verze čipu může pomocí mikrokódu prezentovat přesně stejnou sadu instrukcí jako stará verze čipu, takže veškerý software cílící na tuto sadu instrukcí poběží na novém čipu bez potřebuje změny. Např. 2. Mikrokód může představovat řadu instrukčních sad pro stejný základní čip, což mu umožňuje provozovat širší škálu softwaru.
  • UISA : User Instruction Set Architecture, odkazuje na jednu ze tří podmnožin instrukcí CPU RISC poskytovaných procesory PowerPC RISC. Podskupina UISA jsou pokyny RISC, které zajímají vývojáře aplikací. Další dvě podmnožiny jsou instrukce VEA (Virtual Environment Architecture) používané vývojáři virtualizačních systémů a OEA (Operating Environment Architecture) používané vývojáři operačního systému.
  • Pin architektura : Hardwarové funkce, které by mikroprocesor měl poskytovat hardwarové platformě, např. X86 piny A20M, FERR/IGNNE nebo FLUSH. Také zprávy, které by měl procesor vydávat, aby bylo možné zneplatnit (vyprázdnit) externí mezipaměti . Funkce architektury pinů jsou flexibilnější než funkce ISA, protože externí hardware se může přizpůsobit novým kódováním nebo se může změnit z pinu na zprávu. Pojem „architektura“ sedí, protože funkce musí být zajištěny pro kompatibilní systémy, i když se podrobná metoda změní.

Role

Definice

Počítačová architektura se zabývá vyvážením výkonu, efektivity, nákladů a spolehlivosti počítačového systému. Pro ilustraci rovnováhy těchto konkurenčních faktorů lze použít architekturu instrukční sady. Složitější instrukční sady umožňují programátorům psát prostorově efektivnější programy, protože jedna instrukce může kódovat nějakou abstrakci vyšší úrovně (například instrukce x86 Loop). Delší a složitější instrukce však procesoru trvá dekódování déle a jeho efektivní implementace může být nákladnější. Zvýšená složitost z velké sady instrukcí také vytváří větší prostor pro nespolehlivost, když instrukce interagují neočekávaným způsobem.

Implementace zahrnuje návrh integrovaného obvodu, balení, napájení a chlazení. Optimalizace návrhu vyžaduje znalost překladačů, operačních systémů pro návrh logiky a balení.

Architektura instrukční sady

Architektury sad instrukcí (ISA) je rozhraní mezi softwarem a hardwarem počítače a také může být vnímána jako pohledu programátora stroje. Počítače nerozumí programovacím jazykům na vysoké úrovni, jako je Java, C ++, nebo většině používaných programovacích jazyků. Procesor chápe pouze instrukce zakódované nějakým numerickým způsobem, obvykle jako binární čísla . Softwarové nástroje, jako jsou překladače , překládají tyto jazyky na vysoké úrovni do pokynů, kterým může procesor rozumět.

Kromě pokynů ISA definuje položky v počítači, které jsou k dispozici programu - např. Datové typy , registry , režimy adresování a paměť. Pokyny vyhledají tyto dostupné položky pomocí rejstříků registrů (nebo jmen) a režimů adresování paměti.

ISA počítače je obvykle popsána v malé příručce s pokyny, která popisuje, jak jsou pokyny kódovány. Může také definovat krátká (neurčitě) mnemotechnická jména pro pokyny. Jména mohou být rozpoznána nástrojem pro vývoj softwaru nazývaným assembler . Assembler je počítačový program, který překládá formu ISA čitelnou pro člověka do formy čitelné počítačem. Rozebírače jsou také široce dostupné, obvykle v debuggerech a softwarových programech k izolaci a nápravě poruch v binárních počítačových programech.

ISA se liší v kvalitě a úplnosti. Dobrý kompromis ISA mezi pohodlím programátora (jak snadné je kódu porozumět), velikostí kódu (kolik kódu je potřeba k provedení konkrétní akce), cenou počítače za interpretaci pokynů (složitější znamená více hardwaru potřebného k dekódování a provedení pokynů) a rychlost počítače (u složitějšího dekódovacího hardwaru je delší doba dekódování). Organizace paměti definuje, jak instrukce interagují s pamětí a jak interaguje paměť sama se sebou.

Během emulace návrhu mohou emulátory spouštět programy napsané v navrhované sadě instrukcí. Moderní emulátory mohou měřit velikost, náklady a rychlost a určit, zda konkrétní ISA plní své cíle.

Organizace počítače

Organizace počítačů pomáhá optimalizovat produkty založené na výkonu. Softwaroví inženýři například potřebují znát výpočetní výkon procesorů. Možná bude muset optimalizovat software, aby získali co nejvyšší výkon za nejnižší cenu. To může vyžadovat poměrně podrobnou analýzu organizace počítače. Například u karty SD mohou návrháři potřebovat kartu uspořádat tak, aby většinu dat bylo možné zpracovat nejrychlejším možným způsobem.

Organizace počítače také pomáhá naplánovat výběr procesoru pro konkrétní projekt. Multimediální projekty mohou vyžadovat velmi rychlý přístup k datům, zatímco virtuální stroje mohou vyžadovat rychlá přerušení. Někdy určité úkoly vyžadují také další součásti. Například počítač schopný spouštět virtuální počítač potřebuje hardware virtuální paměti , aby bylo možné uchovávat odděleně paměť různých virtuálních počítačů. Organizace a funkce počítače také ovlivňují spotřebu energie a náklady na procesor.

Implementace

Jakmile byla navržena sada instrukcí a mikroarchitektura, musí být vyvinut praktický stroj. Tento proces návrhu se nazývá implementace . Implementace se obvykle nepovažuje za architektonický návrh, ale spíše za návrh hardwaru . Implementaci lze dále rozdělit do několika kroků:

  • Logická implementace navrhuje obvody požadované na úrovni logické brány .
  • Implementace obvod dělá tranzistor úrovňového návrhy základních prvků (např vrata, multiplexery , západky ), jakož i některých větších bloků ( ALU , cache atd), které mohou být realizovány na úrovni logická hradla, nebo dokonce i na fyzické úrovni pokud to design vyžaduje.
  • Fyzická implementace čerpá fyzické obvody. Různé součásti obvodu jsou umístěny v půdorysu čipu nebo na desce a jsou vytvořeny vodiče, které je spojují.
  • Ověření návrhu testuje počítač jako celek, aby zjistil, zda funguje ve všech situacích a všech časováních. Jakmile se spustí proces ověření návrhu, návrh na logické úrovni se testuje pomocí logických emulátorů. To je však obvykle příliš pomalé na provedení realistického testu. Takže po provedení oprav na základě prvního testu jsou prototypy konstruovány pomocí Field-Programmable Gate-Arrays ( FPGA ). Většina hobby projektů se v této fázi zastavuje. Posledním krokem je testování prototypů integrovaných obvodů, které mohou vyžadovat několik přepracování.

U procesorů je celý proces implementace organizován odlišně a často se označuje jako návrh CPU .

Cíle návrhu

Přesná podoba počítačového systému závisí na omezeních a cílech. Počítačové architektury obvykle kompromitují standardy, výkon versus výkon, náklady, kapacita paměti, latence (latence je doba, kterou informace z jednoho uzlu potřebují k cestě ke zdroji) a propustnost. Někdy jsou faktory také jiné faktory, jako jsou vlastnosti, velikost, hmotnost, spolehlivost a rozšiřitelnost.

Nejběžnější schéma provádí hloubkovou analýzu napájení a zjišťuje, jak udržet nízkou spotřebu energie při zachování adekvátního výkonu.

Výkon

Moderní počítačový výkon je často popsán v pokynech na cyklus (IPC), který měří účinnost architektury při jakékoli hodinové frekvenci; rychlejší IPC znamená, že počítač je rychlejší. Starší počítače měly počty IPC až 0,1, zatímco moderní procesory snadno dosáhly téměř 1. Superskalární procesory mohou dosáhnout tří až pěti IPC provedením několika instrukcí za hodinový cyklus.

Počítání pokynů ve strojovém jazyce by bylo zavádějící, protože v různých ISA mohou vykonávat různé práce. „Instrukce“ ve standardních měřeních není počtem instrukcí ISA ve strojovém jazyce, ale měrnou jednotkou, obvykle založenou na rychlosti počítačové architektury VAX .

Mnoho lidí dříve měřilo rychlost počítače hodinovou frekvencí (obvykle v MHz nebo GHz). To se týká cyklů za sekundu hlavních hodin CPU. Tato metrika je však poněkud zavádějící, protože stroj s vyšší taktovací frekvencí nemusí mít nutně větší výkon. V důsledku toho se výrobci odklonili od rychlosti hodin jako měřítka výkonu.

Rychlost ovlivňují další faktory, například kombinace funkčních jednotek , rychlosti sběrnice , dostupná paměť a typ a pořadí pokynů v programech.

Existují dva hlavní typy rychlosti: latence a propustnost. Latence je doba mezi začátkem procesu a jeho dokončením. Propustnost je množství práce odvedené za jednotku času. Latence přerušení je zaručená maximální doba odezvy systému na elektronickou událost (jako když disková jednotka dokončí přesun některých dat).

Výkon je ovlivněn velmi širokou škálou návrhových možností - například pipeline procesoru obvykle zhoršuje latenci, ale zlepšuje propustnost. Počítače, které řídí strojní zařízení, obvykle potřebují nízké latence přerušení. Tyto počítače fungují v reálném čase a selžou, pokud není operace dokončena ve stanoveném čase. Například počítačem ovládané protiblokovací brzdy musí začít brzdit v předvídatelném a omezeném časovém období po sehnání brzdového pedálu, jinak dojde k selhání brzdy.

Benchmarking bere v úvahu všechny tyto faktory měřením času, který počítač potřebuje k provedení řady testovacích programů. Přestože benchmarking ukazuje silné stránky, neměl by to být způsob, jakým si počítač vyberete. Měřené stroje se často dělí na různá opatření. Jeden systém může například zpracovávat vědecké aplikace rychle, zatímco jiný může vykreslovat videohry plynuleji. Kromě toho mohou designéři cílit a přidávat do svých produktů speciální funkce prostřednictvím hardwaru nebo softwaru, které umožňují rychlé provedení konkrétního benchmarku, ale nenabízejí podobné výhody pro obecné úkoly.

Energetická účinnost

Energetická účinnost je dalším důležitým měřením v moderních počítačích. Vyšší energetickou účinnost lze často vyměnit za nižší rychlost nebo vyšší náklady. Typickým měřením spotřeby energie v počítačové architektuře je MIPS/W (miliony instrukcí za sekundu na watt).

Moderní obvody mají menší výkon potřebný na jeden tranzistor, protože počet tranzistorů na čip roste. Důvodem je, že každý tranzistor, který je vložen do nového čipu, vyžaduje vlastní napájení a vyžaduje vybudování nových cest k jeho napájení. Počet tranzistorů na čip se však začíná zvyšovat pomaleji. Energetická účinnost proto začíná být stejně důležitá, ne -li důležitější, než osazování stále více tranzistorů do jednoho čipu. Nedávné designy procesorů ukázaly tento důraz, protože se více soustředily na energetickou účinnost, než aby vtěsnaly co nejvíce tranzistorů do jednoho čipu. Ve světě vestavěných počítačů je energetická účinnost dlouho důležitým cílem vedle propustnosti a latence.

Posuny poptávky na trhu

Nárůsty hodinové frekvence rostly v posledních několika letech pomaleji ve srovnání se zlepšením snížení výkonu. Důvodem je konec Moorova zákona a poptávka po delší výdrži baterie a zmenšení velikosti mobilních technologií. Tuto změnu zaměření z vyšších hodin na spotřebu energie a miniaturizaci lze ukázat na výrazném snížení spotřeby energie, a to až o 50%, které společnost Intel uvedla při vydání mikroarchitektury Haswell ; kde snížili svou referenční úroveň spotřeby energie z 30 na 40 wattů na 10 až 20 wattů. Porovnáním se zvýšením rychlosti zpracování o 3 GHz až 4 GHz (2002 až 2006) je vidět, že těžiště výzkumu a vývoje se odklání od hodinové frekvence a směřuje ke spotřebě menšího výkonu a zabírání menšího prostoru.

Viz také

Reference

Prameny

externí odkazy