Koprocesor - Coprocessor

AM9511-1 aritmetický koprocesor

Koprocesor je počítačový procesor doplnit funkce primárního procesoru (dále CPU ). Operace prováděné koprocesor může být plovoucí čárkou aritmetické, grafiku , zpracování signálu , zpracování řetězec , šifrování nebo I / O rozhraní s periferními zařízeními. Uvolněním úloh náročných na procesor z hlavního procesoru mohou koprocesory urychlit výkon systému. Koprocesory umožňují přizpůsobení řady počítačů, takže zákazníci, kteří nepotřebují mimořádný výkon, za něj nemusí platit.

Funkčnost

Koprocesory se liší stupněm autonomie. Někteří (například FPUs ) spolehnout na přímé ovládání pomocí pokynů koprocesor , zabudovaných v CPU ‚s návodem k potoku . Jiní jsou samostatnými samostatnými procesory, kteří jsou schopni pracovat asynchronně; stále nejsou optimalizovány pro univerzální kód nebo jej nejsou schopny kvůli omezené instrukční sadě zaměřené na zrychlení konkrétních úkolů . Je běžné, že jsou poháněny přímým přístupem do paměti (DMA), přičemž hostitelský procesor (CPU) vytváří seznam příkazů . PS2 je Emotion motor obsahoval neobvyklý DSP -jako JIMD vektorové jednotky , která je schopna z obou režimů provozu.

Dějiny

Pro co nejlepší využití sálového počítače procesorového času, vstupní / výstupní úkoly byly delegovány do oddělených systémů zvaných Channel I / O . Sálové počítače by vůbec nevyžadovaly žádné I / O zpracování, místo toho by pouze nastavily parametry pro vstupní nebo výstupní operaci a poté signalizovaly kanálovému procesoru, aby provedl celou operaci. Vyčleněním relativně jednoduchých dílčích procesorů pro zpracování časově náročného formátování a zpracování I / O se zlepšil celkový výkon systému.

Koprocesory pro aritmetiku s plovoucí desetinnou čárkou se poprvé objevily ve stolních počítačích v 70. letech a staly se běžnými v 80. letech a na počátku 90. let. Rané 8bitové a 16bitové procesory používaly software k provádění aritmetických operací s plovoucí desetinnou čárkou. Tam, kde byl podporován koprocesor, bylo možné výpočty s plovoucí desetinnou čárkou provádět mnohokrát rychleji. Matematické koprocesory byly populární nákupy pro uživatele softwaru pro počítačově podporované navrhování (CAD) a vědecké a technické výpočty. Některé jednotky s plovoucí desetinnou čárkou, jako jsou AMD 9511 , Intel 8231/8232 a Weitek FPU, byly považovány za periferní zařízení, zatímco jiné jako Intel 8087 , Motorola 68881 a National 32081 byly více integrovány do CPU.

Jinou formou koprocesor byl videodisplej koprocesor, jak se používá v 8-bitové rodiny Atari je Texas Instruments TI-99 / 4A a MSX domácí číslicové počítače, který byl nazýván " Video Display Controllers ". Vlastní čipset Commodore Amiga obsahoval takovou jednotku známou jako Copper , stejně jako Blitter pro zrychlení manipulace s bitmapou v paměti.

Jak se vyvíjely mikroprocesory, náklady na integraci aritmetických funkcí s plovoucí desetinnou čárkou do procesoru klesaly. Vysoké rychlosti procesoru také znesnadňovaly implementaci úzce integrovaného koprocesoru. Samostatně zabalené koprocesory matematiky jsou nyní ve stolních počítačích neobvyklé . Poptávka po dedikovaném grafickém koprocesoru však vzrostla, zejména kvůli rostoucí poptávce po realistické 3D grafice v počítačových hrách .

Intel

mikroarchitektura i8087 a i80287
mikroarchitektura i80387

Původní počítač IBM PC obsahoval soket pro koprocesor Intel 8087 s plovoucí desetinnou čárkou (aka FPU ), což byla oblíbená volba pro lidi, kteří používali počítač pro návrh podporovaný počítačem nebo výpočty náročné na matematiku. V této architektuře koprocesor zrychluje aritmetiku s plovoucí desetinnou čárkou řádově padesátkrát. Uživatelé, kteří například používali počítač pouze ke zpracování textu, ušetřili vysoké náklady na koprocesor, který by nezrychlil výkon operací manipulace s textem.

8087 byl pevně integrován do 8086 /8088 a reagoval s plovoucí desetinnou čárkou strojového kódu operačních kódů vložených do 8088 instrukčního toku. Procesor 8088 bez 8087 nemohl tyto pokyny interpretovat, což vyžadovalo samostatné verze programů pro systémy FPU a jiné než FPU, nebo alespoň test za běhu pro detekci FPU a výběr vhodných funkcí matematické knihovny.

Procesor Intel 80386DX s matematickým koprocesorem 80387DX

Dalším koprocesorem pro centrální procesor 8086/8088 byl 8089 vstupní / výstupní koprocesor. Pro vstupně / výstupní operace, jako je přenos dat z paměti do periferního zařízení, a tím snížení zátěže CPU, používal stejnou programovací techniku ​​jako 8087. Ale IBM to nepoužil v designu IBM PC a Intel zastavil vývoj tohoto typu koprocesoru.

Intel 80386 mikroprocesor používá volitelný „matematický koprocesor“ (dále jen 80387 ) vykonávat pohyblivou řádovou čárkou je přímo v hardwaru . Procesor Intel 80486DX obsahoval hardware s plovoucí desetinnou čárkou na čipu. Společnost Intel vydala procesor se sníženou cenou, 80486SX, který neměl hardware s plovoucí desetinnou čárkou, a také prodal koprocesor 80487SX, který při instalaci v podstatě deaktivoval hlavní procesor, protože 80487SX byl kompletní 80486DX s jinou sadou pinových připojení.

Procesory Intel později než 80486 integrovaný hardware s plovoucí desetinnou čárkou na hlavním čipu procesoru; pokrok v integraci eliminoval cenovou výhodu prodeje procesoru s plovoucí desetinnou čárkou jako volitelného prvku. Bylo by velmi obtížné přizpůsobit techniky obvodů odpovídající rychlosti procesoru 75 MHz tak, aby splňovaly standardy časového zpoždění, spotřeby energie a vysokofrekvenčního rušení požadované při rychlostech hodin gigahertzového rozsahu. Tyto procesory s plovoucí desetinnou čárkou na čipu se stále označují jako koprocesory, protože fungují paralelně s hlavním procesorem.

Během doby 8 a 16bitových stolních počítačů byl dalším běžným zdrojem koprocesorů s plovoucí desetinnou čárkou Weitek . Tyto koprocesory měly odlišnou instrukční sadu od koprocesorů Intel a používaly jiný soket, který ne všechny základní desky podporovaly. Procesory Weitek neposkytovaly transcendentální matematické funkce (například trigonometrické funkce), jako je rodina Intel x87, a pro podporu svých funkcí vyžadovaly specifické softwarové knihovny.

Motorola

Rodina Motorola 68000 měla koprocesory 68881/68882, které poskytovaly podobné zrychlení s pohyblivou řádovou čárkou jako u procesorů Intel. Počítače využívající rodinu 68000, které ale nejsou vybaveny hardwarovým procesorem s plovoucí desetinnou čárkou, mohly zachytit a emulovat pokyny s plovoucí desetinnou čárkou v softwaru, který, i když pomalejší, umožňoval distribuci jedné binární verze programu pro oba případy. Koprocesor pro správu paměti 68451 byl navržen pro práci s procesorem 68020.

Moderní koprocesory

Od roku 2001 jsou vyhrazené jednotky grafického zpracování ( GPU ) ve formě grafických karet samozřejmostí. Některé modely zvukových karet byly vybaveny vyhrazenými procesory poskytujícími digitální vícekanálové míchání a efekty DSP v reálném čase již v letech 1990 až 1994 ( typickými příklady jsou Gravis Ultrasound a Sound Blaster AWE32 ), zatímco Sound Blaster Audigy a Sound Blaster X -Fi jsou novější příklady.

V roce 2006 oznámila společnost AGEIA přídavnou kartu pro počítače, kterou nazvala PhysX PPU . PhysX byl navržen tak, aby prováděl složité fyzikální výpočty, takže CPU a GPU nemusí provádět tyto časově náročné výpočty. Byl navržen pro videohry, i když by pro něj teoreticky mohla být vyvinuta jiná matematická použití. V roce 2008 společnost Nvidia koupila společnost a vyřadila řadu karet PhysX; funkce byla přidána prostřednictvím softwaru umožňujícího jejich GPU vykreslit PhysX na jádra běžně používaná pro grafické zpracování, pomocí jejich Nvidia PhysX enginu.

V roce 2006 společnost BigFoot Systems představila přídavnou kartu PCI, kterou pokřtila KillerNIC, která provozovala vlastní speciální linuxové jádro na FreeScale PowerQUICC běžícím na 400 MHz, přičemž čip FreeScale nazvala Network Processing Unit nebo NPU.

SpursEngine je mediální orientované add-in karty s koprocesor založené na mobilní mikroarchitektuře. Tyto SPU jsou samy o sobě vektor koprocesory.

V roce 2008 společnost Khronos Group vydala OpenCL s cílem podpořit univerzální CPU, ATI / AMD a Nvidia GPU (a další akcelerátory) s jediným společným jazykem pro výpočetní jádra .

V roce 2010 některá mobilní výpočetní zařízení implementovala hub senzoru jako koprocesor. Mezi příklady koprocesorů používaných pro integraci senzorů v mobilních zařízeních patří pohybové koprocesory Apple M7 a M8 , Qualcomm Snapdragon Sensor Core a Qualcomm Hexagon a jednotka holografického zpracování pro Microsoft HoloLens .

V roce 2012 společnost Intel oznámila koprocesor Intel Xeon Phi .

Od roku 2016 vyvíjejí různé společnosti koprocesory zaměřené na akceleraci umělých neuronových sítí pro vizi a další kognitivní úkoly (např. Jednotky zpracování obrazu , TrueNorth a Zeroth ) a od roku 2018 jsou takové čipy AI v chytrých telefonech, jako je Apple, a několik prodejců telefonů Android.

Ostatní koprocesory

  • Architektura MIPS podporuje až čtyři koprocesorové jednotky, které se používají pro správu paměti, aritmetiku s plovoucí desetinnou čárkou a dva nedefinované koprocesory pro další úlohy, jako jsou grafické akcelerátory.
  • Pomocí FPGA (pole programovatelná hradlová pole) lze vytvořit vlastní koprocesory pro zrychlení konkrétních úloh zpracování, jako je digitální zpracování signálu (např. Zynq , kombinuje jádra ARM s FPGA na jedné matrici).
  • Akcelerátory TLS / SSL , používané na serverech ; takovými akcelerátory bývaly karty, ale v moderní době jsou instrukce pro krypto v běžných CPU.
  • Některé vícejádrové čipy lze naprogramovat tak, že jeden z jejich procesorů je primární procesor a ostatní procesory podporují koprocesory.
  • Čínský 128bitový koprocesor Matrix 2000 PCI-e je proprietární akcelerátor, který k jeho spuštění vyžaduje procesor, a byl použit při upgradu 17 792 uzlového superpočítače Tianhe-2 (2 Intel Knights Bridge + 2 Matrix 2000 každý), nyní dabovaný 2A , zhruba zdvojnásobil svou rychlost na 95 petaflops a překonal tak nejrychlejší superpočítač na světě .
  • Pro počítače Acorn BBC Micro byla k dispozici řada koprocesorů . Spíše než účelová grafika nebo aritmetická zařízení se jednalo o univerzální CPU (například 8086, Zilog Z80 nebo 6502), jimž operační systém přidělil konkrétní typy úloh, které je vykládaly z hlavního CPU počítače a což má za následek zrychlení. Kromě toho společnost BBC Micro vybavená koprocesorem dokázala spustit software strojového kódu určený pro jiné systémy, jako jsou CP / M a DOS, které jsou napsány pro procesory 8086.

Trendy

V průběhu doby měly CPU tendenci růst, aby absorbovaly funkčnost nejpopulárnějších koprocesorů. FPU jsou nyní považovány za nedílnou součást hlavního potrubí procesorů; Jednotky SIMD zrychlily multimédia a převzaly roli různých karet akcelerátorů DSP ; a dokonce i GPU se staly integrovanými do matric CPU. Specializované jednotky však zůstávají populární i mimo stolní počítače a pro další napájení a umožňují další vývoj nezávisle na hlavních produktových řadách procesorů.

Viz také

Reference