Hardware pro trochu znalé – díl V. – matematické koprocesory

Série článků s titulem Hardware pro trochu znalé je určena všem, kteří se hardwarové problematice nevěnují naplno, nebo těm, kterým něco uniklo či některé věci zapomněli. Pátý díl je věnován doplňku srdce počítačů, matematickému koprocesoru.
Postupem času se zjistilo, že některé operace trvají velmi dlouho a navíc pro ně neexistuje specializovaná instrukce. To se týkalo hlavně složitějších výpočtů (sin, cos, logaritmy atd.). Proto byl navržen speciální podřízený procesor, který je specializován jen na tyto operace. Původní název matematický koprocesor se později zkrátil na pouhé koprocesor. Existovaly i jiné koprocesory (například komunikační), ovšem jejich funkce byly zahrnuty do základní desky, případně nebyly v této koncepci využívány. U rodiny x86 se koprocesory označují sedmičkou na konci (pro 80386 je koprocesor 80387). Od procesoru 80486 je však matematický koprocesor integrován přímo na čip procesoru, takže od té doby již pojem koprocesor není aktuální.

Specialitou je procesor 486SX, který koprocesor neměl (první verze ho měly, ale byl vyřazen). Později Intel připravil externí koprocesor s označením 487SX; ten ale nebyl koprocesorem, ale plnohodnotným procesorem 486DX, který vyřadil z provozu do té doby hlavní procesor.

Tradičním výrobcem koprocesorů x87 je firma Intel. Prvním modelem byl i8087, který byl určen pro procesory i8088 nebo i8086. Přechod k procesoru i80286 znamenal i změnu způsobu komunikace procesoru s koprocesorem. Následně vznikly dvojice i80286 + i80287 a i80386 a i80387. Procesor i80386 byl konstruován tak, aby mohl spolupracovat jak s vlastním i80387, tak s předchozím koprocesorem i80287. Matematický koprocesor i80387 sloužil nejen pro procesory řady 386, ale byl určen i jako náhrada předchozích variant (při změně pouzdra). Tak vznikly koprocesory i80287XL a i80187, které byly interně shodné s i80387. Intel byl kritizován za slabší výkon svých koprocesorů, který konkurence ihned využila pro prodej svých vlastních a výkonnějších modelů. Tuto situaci Intel vyřešil tím, že vytvořil velmi kvalitní koprocesor a integroval jej do nového procesoru s názvem i80486. Naposledy se o matematickém koprocesoru hovořilo ve spojitosti s chybou koprocesoru integrovaného do procesoru Intel Pentium (verze P5 neboli 60 a 66 MHz). V dalších verzích byla chyba odstraněna a od té doby pojem matematický koprocesor prakticky zmizel z obzoru.

Některé firmy rozšiřovaly instrukční sadu x87 koprocesorů dalšími instrukcemi. Příkladem jsou koprocesory firmy IIT (první byl model IIT-3C87 z roku 1989), které měly příkazy pro maticové operace s maticí 4x4. Tyto přidané instrukce však nebyly žádným jiným výrobcem koprocesorů podpořeny.

Koprocesory se dělily na standardní řady x87 a speciální. Speciální koprocesory jsem nazval všechny koprocesory, které komunikují jiným způsobem. Nejznámější byly výrobky firmy Weitek. Ty komunikovaly jako část RAM paměti. Procesor (potažmo program a programátor) zapsal do určité adresy, co chce vypočítat, a z jiné adresy si potom přečetl výsledek. Tento způsob komunikace má výhodu v tom, že nenahrazuje klasický x87 koprocesor, ale doplňuje jej. V jednom počítači tudíž může spolupracovat procesor x86, koprocesor x87 a koprocesor Weitek. Typickým příkladem byly počítače s procesory řady 486DX, které mají x87 koprocesor integrován přímo na čip procesoru. Prvním byl model Weitek Abacus 1167, který se skládal ze tří čipů. Ty byly umístěny na samostatném modulu. Druhým byl již jednočipový Abacus 3167, který byl určen pro procesory 386 a 486. Posledním modelem byl Abacus 4167, určený pro procesory 486 a umístěný v 142pinovém pozdře.

Weitek se osazoval do 121pinové patice EMC (Extended Math Coprocesor).

Obdobným způsobem mohl kromě standardní komunikace pracovat i koprocesor Cyrix FasMath EMC87, který byl určen pro procesory třídy 386. Instrukční sada je shodná s x87. Shodně jako Weitek se osazoval do 121pinové patice EMC (Extended Math Coprocesor).

Svým způsobem se jako koprocesor choval 64bitový procesor i860 firmy Intel. Díky své architektuře a vysokému výkonu občas doplňoval procesory 486. Tato dvojice byla výjimečná a neměla následníky.

Posledním externím koprocesorem byl výrobek firmy NexGen, označený jako Nx586FP. Tento výrobce se tak snažil vyřešit problém omezené velikosti čipu, kam na místo matematického koprocesoru umístil jiné části. Do té doby navíc nebyl matematický koprocesor nutný (až na speciální aplikace jako CAD/CAM), ovšem masovým nástupem některých programů (hlavně MS Windows) začal být matematický koprocesor velmi nutný.

U jiných řad procesorů existují rovněž matematické koprocesory. Procesory Motorola 68020 a 68030 mají externí koprocesor 68881 nebo rozšířenou verzi koprocesoru s názvem 68882. Shodně jako u Intelu procesor 486, tak i Motorola 68040 (a následně 68060) má matematický koprocesor integrovaný přímo na čip procesoru. Přibližně od roku 1995 má většina procesorů integrován matematický koprocesor přímo na čip procesoru (například PowerPC – všechny modely).

Programování koprocesorů

Pouhým přidáním matematického koprocesoru nedojde k urychlení programů. Bylo nutné programy přepsat tak, aby místo podprogramů pro výpočet matematických operací využily speciální instrukce pro x87 koprocesory. Až potom nastalo kýžené urychlení. Takový postup však narazil na nečekaný problém – upravený program nefunguje na počítači bez koprocesoru (což je třeba případ programu Autodesk AutoCAD). Bylo proto zvykem, že se program psal a hlavně překládal dvakrát – jednou pro konfiguraci s koprocesorem a jednou bez koprocesoru. V programu se vlastně vše vyskytovalo dvakrát. Takto postupovali například autoři známého komprimačního programu PKZIP.

Speciální koprocesory se opět musí programovat jinak. U koprocesorů Weitek existují speciální instrukce, obdobné instrukční sadě x87 koprocesorů. Procesor i860 se ovšem musí programovat samostatně, protože je mnohem více autonomní. Provozoval se proto pro samostatnější větší činnosti, kde se uplatnil tento způsob spolupráce. Nutnost speciálního programu však ztěžovala situaci této nezvyklé dvojice. Nenašel jsem ani jediný komerční program, který by podporoval kombinaci i486 + i860. Kdo tedy chtěl využít vyššího výkonu, musel si vše naprogramovat sám.

Různé podoby pojmu matematický koprocesor

zkratka pojem (anglicky) český význam
FPU Floating Point Unit jednotka pro pohyblivou řádovou čárku
MCP Math CoProcessor matematický koprocesor
NPX Numeric coProcessor eXtension označení používané pro koprocesory x87
Matematickému koprocesoru se rovněž říká numerický procesor nebo numerický koprocesor.

Matematické koprocesory se snaží více či méně úspěšně dodržovat IEEE standard pro výpočty s čísly v dvojkové soustavě v pohyblivé řádové čárce podle ANSI/IEEE 754 z roku 1985 (dokument RFC 1832, příloha A). Ta definuje mezní hodnoty neboli jak přesně má vypadat nekonečno nebo nula v pojetí X-bitového čísla. Tato norma je obecná a dodržují ji nejen koprocesory pro x86 rodinu, ale i ostatní. Díky tomu mají výpočty na všech počítačích (resp. jejich koprocesorech) stejný výsledek.

Diskuze (1) Další článek: Modulární 2D CAD od Intergraphu potřetí

Témata článku: Hardware, Speciální koprocesor, Mat, Abacus, Masový nástup, Speciální verze, Autonomní provoz, Nečekaný problém, Floating, Plnohodnotný procesor, Nečekaná situace, Specializovaná instrukce, Speciální instrukce, Speciální situace, Procesor, Speciální model, Díl


Určitě si přečtěte

Pozor, na Česko v těchto dnech útočí falešné Tesco, Penny Market a Lidl

Pozor, na Česko v těchto dnech útočí falešné Tesco, Penny Market a Lidl

** Máme tu další českou phishingovou vlnu ** Podle průzkumů máme stále problém s kybernetickou gramotností ** Nebezpečím jsou děti, které opouštějí rodiče

Jakub Čížek | 37

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

** Bezdrátové myši řídí čip od Nordic Semiconductors ** Jeho rádiové vysílače si před lety oblíbila i komunita kutilů ** Dnes si je vyzkoušíme v praxi

Jakub Čížek | 9

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

** Tipy na klávesnice, myši, routery, tiskárny, sluchátka a další věci k počítačům ** Poradíme, s jakými produkty neuděláte chybu ** Vybíráme jak příslušenství na běžnou práci, tak na hraní her

David Polesný | 22



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu