• Co je to koprocesor v notebooku? Funkce a principy činnosti matematického koprocesoru. Koprocesor v programování

    Rozlišují se následující typy koprocesorů:

    • matematické koprocesory pro všeobecné použití, obvykle urychlující výpočty s plovoucí desetinnou čárkou,
    • I/O koprocesory (například Intel 8089), které odlehčují centrálnímu procesoru od řízení I/O operací nebo rozšiřují standardní adresní prostor procesoru,
    • koprocesory pro provádění jakýchkoli vysoce specializovaných výpočtů.

    Koprocesory mohou být součástí logické sady vyvinuté jednou konkrétní společností (například společnost Intel vydala koprocesory a 8089 pro procesory 8086 a 8088, Motorola - koprocesor Motorola 68881) nebo vyrobena výrobcem třetí strany (například Weitek (anglicky ) pro Motorola m68k a 1067 pro Intel 80286).

    Koprocesor v programování

    Koprocesor rozšiřuje instrukční sadu centrálního procesoru, takže pro jeho použití musí program (zkompilovaný bez interpretace a volání externích knihoven) tyto instrukce obsahovat. Nastavení moderních kompilátorů pro jazyky na vysoké úrovni pro procesory x86 vám často umožňují vybrat si, zda použít matematický koprocesor nebo ne, což je zvláště důležité při vytváření kódu, který se bude spouštět uvnitř obsluhy hardwarového přerušení.

    Existují také periferní procesory určené k ovládání periferních zařízení a snižování zátěže centrálního procesoru, jmenovitě:

    Napište recenzi na článek "Koprocesor"

    Poznámky

    viz také

    Odkazy

    • whatis.techtarget.com/definition/coprocessor
    • www.webopedia.com/TERM/C/coprocessor.html
    • www.pcmag.com/encyclopedia/term/46625/math-coprocessor
    • www.trevormarshall.com/old_papers/Approaching-Desktop-Supercomputer.pdf 1990 – Výpočetní koprocesory, rané 32bitové výpočetní koprocesory
    • Hansen, Paul Mark, listopad 1988

    Výňatek charakterizující koprocesor

    Princezna Marya napsala, že je zoufalá z nedorozumění, ke kterému mezi nimi došlo. Bez ohledu na pocity jejího otce, napsala princezna Marya, požádala Natashu, aby věřila, že ji nemůže milovat jako tu, kterou si vybral její bratr, pro jehož štěstí byla připravena obětovat všechno.
    „Nicméně,“ napsala, „nemyslete si, že by se k vám můj otec choval špatně. Je to nemocný a starý muž, kterého je třeba omluvit; ale je laskavý, štědrý a bude milovat toho, kdo udělá jeho syna šťastným.“ Princezna Marya dále požádala, aby Natasha stanovila čas, kdy ji bude moci znovu vidět.
    Po přečtení dopisu se Natasha posadila za stůl, aby napsala odpověď: „Chere princezno,“ [Milá princezno], napsala rychle, mechanicky a zastavila se. „Co by mohla napsat dál po tom všem, co se stalo včera? Ano, ano, tohle všechno se stalo a teď je všechno jinak,“ pomyslela si a seděla nad dopisem, který začala. „Mám ho odmítnout? Je to opravdu nutné? To je hrozné!“... A aby na tyhle hrozné myšlenky nemyslela, šla za Sonyou a spolu s ní začala třídit vzorce.
    Po večeři odešla Natasha do svého pokoje a znovu si vzala dopis princezny Maryi. - "Opravdu je po všem?" pomyslela. Opravdu se to všechno stalo tak rychle a zničilo vše, co bylo předtím“! Se vší svou dřívější silou si vzpomněla na svou lásku k princi Andrei a zároveň cítila, že miluje Kuragina. Živě si představovala samu sebe jako manželku prince Andreje, představovala si obraz štěstí s ním, který se ve své fantazii tolikrát opakoval, a zároveň, zrudnutá vzrušením, si představovala všechny detaily svého včerejšího setkání s Anatolem.
    „Proč by to nemohlo být spolu? někdy, v úplném zatmění, pomyslela si. Pak bych byl úplně šťastný jen já, ale teď si musím vybrat a bez ani jednoho z nich nemůžu být šťastný. Jedna věc, pomyslela si, říct, co bylo myšleno princi Andrejovi, nebo to skrýt, je stejně nemožné. A tím se nic nezkazí. Ale je opravdu možné navždy se rozloučit s tímto štěstím lásky prince Andreje, se kterým jsem tak dlouho žil?"
    "Mladá dámo," řekla dívka šeptem s tajemným pohledem a vstoupila do místnosti. - Jeden člověk mi řekl, abych to řekl. Dívka předala dopis. "Jen pro Krista," stále říkala dívka, když Natasha bez přemýšlení mechanickým pohybem rozlomila pečeť a přečetla Anatolův milostný dopis, z něhož, aniž by rozuměla jedinému slovu, pochopila jen jednu věc - že tento dopis je od od toho muže, kterého miluje. „Ano, miluje, jak by se jinak mohlo stát to, co se stalo? Mohl by být v její ruce milostný dopis od něj?"
    Natasha třesoucíma se rukama držela tento vášnivý milostný dopis, který pro Anatoly složil Dolokhov, a když ho četla, našla v něm ozvěny všeho, co se jí zdálo, co sama cítila.

    Důležitou součástí architektury mikroprocesorů Intel je přítomnost zařízení pro zpracování číselných dat ve formátu s plovoucí desetinnou čárkou, tzv. matematický koprocesor Architektura počítačů založených na mikroprocesorech zpočátku spoléhala výhradně na celočíselnou aritmetiku. S růstem výkonu se začala objevovat zařízení pro zpracování čísel s pohyblivou řádovou čárkou. V architektuře mikroprocesorové rodiny Intel 8086 se zařízení pro zpracování čísel s pohyblivou řádovou čárkou objevilo jako součást počítače na bázi mikroprocesoru i8086/88 a nazývalo se matematický koprocesor nebo jednoduše koprocesor. Volba tohoto jména byla způsobena tím, že

    • za prvé, toto zařízení mělo rozšířit výpočetní schopnosti hlavního procesoru;
    • za druhé, byl implementován jako samostatný čip, to znamená, že jeho přítomnost byla volitelná. Koprocesorový čip pro mikroprocesor i8086/88 se nazýval i8087.

    S příchodem nových modelů mikroprocesorů Intel se zlepšily i koprocesory, i když jejich softwarový model zůstal prakticky nezměněn. Jako samostatná (a tedy volitelná v konkrétní konfiguraci počítače) zařízení byly koprocesory zachovány až do modelu mikroprocesoru i386 a byly pojmenovány i287, respektive i387. Počínaje modelem i486 je koprocesor implementován ve stejném balíčku jako hlavní mikroprocesor, a je tedy nedílnou součástí počítače.

    Hlavní vlastnosti matematického koprocesoru:

    • Plná podpora pro aritmetické standardy IEEE-754 a 854 s plovoucí desetinnou čárkou. Tyto standardy popisují jak datové formáty, se kterými musí koprocesor pracovat, tak sadu funkcí, které implementuje;
    • podpora numerických algoritmů pro výpočet hodnot goniometrických funkcí, logaritmy atd.;
    • zpracování desetinných čísel s 18bitovou přesností, což umožňuje koprocesoru provádět aritmetické operace bez zaokrouhlování na celá desetinná čísla s hodnotami do 10 18;
    • zpracování reálných čísel z rozsahu ±3,37x10 -4932 ...1,18x10 +4932.

    Je popsána forma znázornění čísel s pohyblivou řádovou čárkou.

    Obecná forma reprezentace reálných čísel naznačuje možnost umístění následujících typů do bitové mřížky.

    Typ čísel Podepsat Stupeň Celý Mantisa
    +∞ 0 11…11 1 00…00
    pozitivní
    normalizované
    0 00…01 — 11…10 1 00…00 — 11…11
    pozitivní nestandardizované 0 00…00 0 00…00 — 11…11
    0 0, 1 00…00 0 00…00
    negativní nestandardizované 1 00…00 0 00…00 — 11…11
    negativní normalizované 1 00…01 — 11…10 1 00…00 — 11…11
    -∞ 1 11…11 1 00…00
    nespočet
    (NaN – není číslo)
    * 11…11 1 **…** ≠0

    Čísla s jednoduchou a dvojitou přesností (s plovoucí (DD) a dvojitou (DQ)) lze reprezentovat pouze ve standardizované formě. V tomto případě je bit celočíselné části čísla skrytý a implikuje logickou 1. Zbývajících 23 (52) bitů ukládá binární mantisu čísla.

    Čísla s dvojitou rozšířenou přesností (dlouhá dvojitá (DT)) mohou být reprezentována buď v normalizované, nebo nestandardizované podobě, protože celočíselný bit čísla není skrytý a může nabývat hodnot 0 nebo 1.

    Hlavním datovým typem, se kterým matematický koprocesor pracuje, jsou 10bajtová data (DT).

    Softwarový model koprocesoru

    Softwarový model koprocesoru je sada registrů, z nichž každý má svůj vlastní funkční účel.

    V softwarovém modelu koprocesoru lze rozlišit tři skupiny registrů:

    • Osm registrů r0…r7, které tvoří základ softwarového modelu koprocesoru - zásobník koprocesoru . Velikost každého registru je 80 bitů. Tato organizace je typická pro zařízení specializující se na zpracování výpočetních algoritmů.
    • Tři servisní registry:
      — registr stavu koprocesoru swr (Registr stavových slov) - odráží informace o aktuálním stavu koprocesoru;
      — řídící registr koprocesoru cwr (Control Word Register) - řídí provozní režimy koprocesoru;
      — registr tagů twr (Tags Word Register) – slouží ke sledování stavu každého ze zásobníkových registrů.
    • Dva registry ukazatelů - příkazy dpr (registr datových bodů) a ipr (registr instrukčních bodů). Jsou určeny k uložení informace o adrese instrukce, která způsobila výjimku, a adrese jejího operandu. Tyto ukazatele se používají při zpracování výjimek (ale ne pro všechny příkazy).

    Všechny zadané registry jsou programově přístupné. Přístup k některým z nich je však docela snadný, pro tento účel existují speciální příkazy v koprocesorovém příkazovém systému. Jiné registry jsou obtížněji přístupné, protože pro to neexistují žádné speciální příkazy, takže je třeba provést další kroky.

    stavový registr swr– odráží aktuální stav koprocesoru po provedení posledního příkazu. Registr swr obsahuje pole, která vám umožňují určit: který registr je aktuálním vrcholem zásobníku koprocesoru, jaké výjimky nastaly po provedení posledního příkazu, jaké jsou vlastnosti provedení posledního příkazu (nějaký druh analogu registru příznaků hlavního procesoru).

    Strukturálně se registr swr skládá z:

    • 6 příznaků výjimky PE, OE, UE, ZE, DE, IE.
      Výjimkou je typ přerušení, s jehož pomocí procesor informuje program o některých vlastnostech jeho skutečného provádění. Koprocesor má také schopnost vyvolávat taková přerušení, když nastanou určité situace (ne nutně chybné). Všechny možné výjimky jsou redukovány na 6 typů, z nichž každý odpovídá 1 bitu v registru swr. Programátor nemusí psát handler, aby reagoval na situaci, která vedla k nějaké výjimce. Na mnoho z nich může koprocesor nezávisle reagovat. Toto se nazývá výchozí zpracování výjimek. Aby byl určitý typ výjimky zpracován ve výchozím nastavení, musí být výjimka ponechána odmaskovaná. Tato akce se provádí nastavením odpovídajícího bitu v řídicím registru koprocesoru cwr na 1. Typy výjimek zachycených pomocí registru swr:
      • IE (Invalide operation Error) - neplatný kód operace;
      • DE (Denormalized operand Error) - nenormalizovaný operand;
      • ZE (divide by Zero Error) - chyba dělení nulou;
      • OE (Overflow Error) - chyba přetečení. Nastane, když pořadí čísla překročí maximální přípustný rozsah;
      • UE (Underflow Error) - chyba proti přetečení. Vyskytuje se, když je výsledek příliš malý (blízký nule);
      • PE (Precision Error) - chyba přesnosti. Nastavte, kdy musí koprocesor zaokrouhlit výsledek, protože jej nelze přesně znázornit. Koprocesor tedy nikdy nebude schopen přesně dělit 10 na 3.

      Když dojde k některému z těchto šesti typů výjimek, odpovídající bit v registru swr se nastaví na jedničku, bez ohledu na to, zda byla výjimka v registru cwr maskována nebo ne.

    • Bit chyby zásobníku koprocesoru SF (Chyba zásobníku). Bit je nastaven na 1, pokud nastane jedna ze tří výjimečných situací - PE, UE nebo IE. Zejména jeho instalace informuje o pokusu o zápis do plného zásobníku, nebo naopak o pokusu o čtení z prázdného zásobníku. Poté, co byla hodnota tohoto bitu analyzována, musí být znovu nastavena na 0 spolu s bity PE, UE a IE (pokud byly nastaveny);
    • bit celkové chyby koprocesoru ES (Error Summary). Bit je nastaven na 1, pokud dojde k některé ze šesti výše uvedených výjimek;
    • čtyři bity c0…c3 (Condition Code) - stavový kód. Účel těchto bitů je podobný jako u příznaků v registru EFLAGS hlavního procesoru – odrážet výsledek provedení posledního příkazu koprocesoru.
    • tříbitové TOP pole. Pole obsahuje ukazatel registru na aktuální vrchol zásobníku.
    • zaneprázdněný koprocesor bit B.

    Řídicí registr koprocesoru cwr– určuje vlastnosti zpracování číselných dat. Pomocí polí v registru cwr můžete upravit přesnost numerických výpočtů, ovládat zaokrouhlování a výjimky maskovat.

    Skládá se z:

    • šest masek výjimek PM, UM, OM, ZM, DM, IM;
    • Přesná řídicí pole PC (Precision Control);
    • RC (Rounding Control) zaokrouhlování kontrolních polí.

    Masky výjimek jsou určeny k maskování výjimek, jejichž výskyt se zaznamenává pomocí šesti bitů registru swr. Pokud jsou některé bity masky výjimek v registru cwr nastaveny na 1, pak příslušné výjimky zpracuje koprocesor sám. Pokud odpovídající bit masky výjimky registru cwr obsahuje 0 pro libovolnou výjimku, bude při výskytu výjimky tohoto typu vyvoláno přerušení int 16 (10h). Operační systém musí obsahovat (nebo musí programátor napsat) handler pro toto přerušení. Musí zjistit příčinu přerušení a poté, pokud je to nutné, opravit, a také provést další opatření.

    K výběru délky mantisy se používá 2bitové přesné řídicí pole PC. Možné hodnoty v tomto poli znamenají:

    • PC =00 - délka mantisy 24 bitů;
    • PC =10 - délka mantisy 53 bitů;
    • PC =11 - délka mantisy 64 bitů.

    Výchozí hodnota pole je PC =11.

    Ovládací pole RC zaokrouhlování umožňuje řídit proces zaokrouhlování čísel během provozu koprocesoru. Potřeba operace zaokrouhlení může nastat v situaci, kdy se po provedení dalšího příkazu koprocesoru získá nereprezentovatelný výsledek, například periodický zlomek. Nastavením jedné z hodnot v poli RC můžete zaokrouhlit v požadovaném směru.
    Hodnoty RC pole s odpovídajícím zaokrouhlovacím algoritmem:

    • 00 - hodnota je zaokrouhlena na nejbližší číslo, které může být reprezentováno v bitové mřížce registru koprocesoru;
    • 01 - hodnota je zaokrouhlena dolů;
    • 10 - hodnota se zaokrouhlí nahoru;
    • 11 - zlomková část čísla se zahodí. Používá se k redukci hodnoty na tvar, který lze použít v celočíselných aritmetických operacích.

    Bit 12 v registru cwr fyzicky chybí a je přečten jako 0.

    registr značek twr– je kolekce dvoubitových polí. Každé pole odpovídá konkrétnímu fyzickému registru zásobníku a charakterizuje jeho aktuální stav. Instrukce koprocesoru používají tento registr například k určení, zda lze do těchto registrů zapisovat hodnoty. Změna stavu libovolného zásobníku zásobníku se projeví v obsahu 2bitového pole registru příznaků odpovídajícího tomuto registru. V polích registru značek jsou možné následující hodnoty:

    • 00 - registr zásobníku koprocesoru je obsazen platnou nenulovou hodnotou;
    • 01 - registr zásobníku koprocesoru obsahuje nulovou hodnotu;
    • 10 - registr zásobníku koprocesoru obsahuje jednu ze speciálních číselných hodnot, s výjimkou nuly;
    • 11 - registr je prázdný a lze do něj zapisovat. Tato hodnota v poli dvoubitového registru tagu neznamená, že všechny bity odpovídajícího registru zásobníku musí být nulové.
    Jak funguje koprocesor

    Zásobník registrů koprocesoru je organizován podle kruhového principu. Mezi osmi registry, které tvoří zásobník, není žádný, který by byl na vrcholu zásobníku. Všechny zásobníkové registry jsou naprosto totožné a mají z funkčního hlediska stejná práva. Vrchol v koprocesorovém prstencovém zásobníku je plovoucí. Aktuální vrchol je řízen hardwarově pomocí 3bitového horního pole registru swr.


    Horní pole zaznamenává číslo registru zásobníku r0…r7, který je aktuálně aktuálním vrcholem zásobníku.
    Instrukce koprocesoru nepracují s fyzickými čísly zásobníkových registrů r0…r7, ale s jejich logickými čísly st(0)…st(7). Pomocí logických čísel je implementováno relativní adresování registrů zásobníku koprocesoru. Pokud je například aktuálním vrcholem před zápisem do zásobníku fyzický registr zásobníku r3, pak se po zápisu do zásobníku aktuální vrchol stane registrem fyzického zásobníku r2. To znamená, že jak je zásobník zapsán, ukazatel v horní části zásobníku se pohybuje směrem k nižším číslům fyzických registrů (snižuje se o jednu). Pokud je aktuální vrchol r0, pak po zapsání další hodnoty do zásobníku koprocesoru se jeho aktuálním vrcholem stane fyzický registr r7. Logická čísla registrů zásobníku st(0)…st(7) se pohybují spolu se změnou aktuálního vrcholu zásobníku. Logický vrchol zásobníku se vždy jmenuje st(0) .
    Protože vývojář při psaní programu manipuluje spíše s relativními než absolutními čísly zásobníkových registrů, může mít potíže s interpretací obsahu twr tag registru s odpovídajícími fyzickými zásobníkovými registry. Jako spojovací článek je nutné použít informace z horního pole registru swr. Takto je implementován princip prstenu.
    Tato organizace zásobníku má velkou flexibilitu, zejména při předávání parametrů do procedury. Pro zvýšení flexibility vývoje a použití procedur není vhodné je z hlediska přenášených parametrů vázat na hardwarové prostředky (čísla fyzických registrů koprocesoru). Mnohem pohodlnější je zadat pořadí přenášených parametrů ve formě čísel logických registrů. Takový způsob přenosu by byl jednoznačný a nevyžadoval by, aby vývojář znal zbytečné podrobnosti o hardwarových implementacích koprocesoru. Logické číslování registrů koprocesoru podporované na úrovni instrukční sady tuto myšlenku ideálně implementuje. V tomto případě je jedno, do kterého fyzického registru zásobníku koprocesoru byla data před voláním podprogramu umístěna, rozhoduje pouze pořadí parametrů na zásobníku. Z tohoto důvodu je důležité, aby podprogram znal pouze pořadí, ve kterém jsou předané parametry umístěny do zásobníku.

    Princip činnosti koprocesoru spolu s centrálním procesorem
    Procesor a koprocesor mají své vlastní samostatné instrukční systémy a formáty zpracovávaných dat. Přestože je koprocesor architektonicky samostatným výpočetním zařízením, nemůže existovat odděleně od hlavního procesoru. Procesor a koprocesor, což jsou dvě nezávislá výpočetní zařízení, mohou pracovat paralelně. Tato paralelizace se ale týká pouze provádění příkazů. Oba procesory jsou připojeny ke společné systémové sběrnici a mají přístup ke stejným informacím. Hlavní procesor vždy zahájí proces načítání další instrukce. Po vzorkování se příkaz dostane k oběma procesorům současně. Jakýkoli příkaz koprocesoru má operační kód, jehož prvních pět bitů má hodnotu 11011. Když operační kód začíná těmito bity, hlavní procesor na základě dalšího obsahu operačního kódu určí, zda tento příkaz vyžaduje přístup do paměti. . Pokud je tomu tak, pak hlavní procesor vygeneruje fyzickou adresu operandu a přistoupí k paměti, načež je obsah paměťové buňky vystaven datové sběrnici. Pokud není vyžadován přístup do paměti, pak hlavní procesor dokončí práci na dané instrukci (aniž by se ji pokusil provést) a začne dekódovat další instrukci z aktuálního vstupního toku instrukcí. Vybraný příkaz vstupuje do koprocesoru současně s hlavním procesorem. Koprocesor, který z prvních pěti bitů určil, že další příkaz patří do jeho instrukčního systému, zahájí své provádění. Pokud instrukce vyžaduje operandy z paměti, přistoupí koprocesor k datové sběrnici, aby přečetl obsah paměťové buňky, který v tu chvíli poskytuje hlavní procesor.

    V určitých případech je nutné koordinovat činnost obou zařízení. Pokud je například ve vstupním toku po příkazu z koprocesoru bezprostředně následován příkazem z hlavního procesoru, který používá výsledky předchozího příkazu, pak koprocesor nestihne provést svůj příkaz dříve než hlavní procesor, protože přeskočil příkaz koprocesoru provede svůj vlastní. V tomto případě bude logika programu narušena. Je možná i jiná situace. Pokud tok vstupních příkazů obsahuje sekvenci několika příkazů koprocesoru, procesor je projde velmi rychle, ale musí koprocesoru poskytnout externí rozhraní. Tyto a další, složitější situace vedou k nutnosti synchronizovat práci dvou procesorů mezi sebou. V raných modelech mikroprocesorů to bylo provedeno vložením speciálního příkazu wait nebo fwait před nebo za každý příkaz koprocesoru. Úkolem tohoto příkazu bylo pozastavit práci hlavního procesoru, dokud koprocesor nedokončí práci na posledním příkazu. U modelů mikroprocesorů (počínaje i486) se taková synchronizace provádí automaticky. Ale u některých příkazů ze skupiny příkazů řízení koprocesoru je možné volit mezi příkazy se synchronizací (čekající) a bez ní.

    Koprocesor je specializovaný procesor, který rozšiřuje možnosti centrálního procesoru počítačového systému, je však koncipován jako samostatný funkční modul. Fyzicky může být koprocesor samostatný čip nebo může být zabudován do centrálního procesoru.

    Rozlišují se následující typy koprocesorů:

    Univerzální matematické koprocesory, obvykle urychlující výpočty s plovoucí desetinnou čárkou,

    I/O koprocesory (například Intel 8089), které odlehčují centrálnímu procesoru od řízení I/O operací nebo rozšiřují standardní adresní prostor procesoru,

    Koprocesory pro provádění jakýchkoli vysoce specializovaných výpočtů.

    Koprocesor není plnohodnotným procesorem, protože neprovádí mnoho operací charakteristických pro procesor (neumí například pracovat s programem a počítat adresy paměti), je periferním zařízením centrálního procesoru.

    Jedno ze schémat interakce mezi centrálním procesorem a koprocesorem, které se používá zejména v koprocesorech x86, je implementováno takto:

    Koprocesor je připojen ke sběrnicím centrálního procesoru a má také několik speciálních signálů pro synchronizaci procesorů mezi sebou.

    Některé z příkazových kódů CPU jsou vyhrazeny pro koprocesor. Centrální procesorová jednotka dekóduje a provádí instrukce sekvenčně. Když je vydána instrukce, která musí být provedena koprocesorem, CPU přenese operační kód do koprocesoru. V tomto případě, pokud je nutný další přístup do paměti (pro čtení nebo zápis výsledků), koprocesor „zachytí“ datovou sběrnici.

    Po obdržení příkazu a potřebných dat jej koprocesor začne provádět. Zatímco koprocesor provádí příkaz, centrální procesor pokračuje ve vykonávání programu, paralelně s výpočty koprocesoru. Pokud je další instrukce také instrukce koprocesoru, procesor se zastaví a čeká, až koprocesor dokončí předchozí instrukci.

    Existuje speciální čekací instrukce (FWAIT), která násilně zastaví procesor, dokud nejsou výpočty dokončeny (pokud jsou jejich výsledky potřeba pro pokračování programu). V současné době se příkaz používá pouze pro zpracování výjimek při práci s pohyblivou řádovou čárkou, práce procesoru a koprocesoru je programátorovi transparentně synchronizována.

    Počínaje procesorem Intel486DX byla jednotka s pohyblivou řádovou čárkou integrována do centrálního procesoru a nazývána FPU. V řadě Intel486SX byl modul FPU deaktivován (nejprve tato řada obsahovala procesory s vadnou FPU). Pro procesory Intel486SX byl vydán „koprocesor“ Intel487SX, ale ve skutečnosti to byl procesor Intel486DX a při instalaci byl procesor Intel486SX deaktivován.


    I přes integraci je FPU v procesorech i486 nezměněný koprocesor, implementovaný na stejném čipu, navíc obvod FPU i486 je až na taktovací frekvenci (polovina frekvence centrálního procesoru) zcela shodný s koprocesorem 387DX předchozí generace. Skutečná integrace FPU s centrálním procesorem začala až u procesorů Pentium modelu MMX.

    V odpovídajícím období se rozšířily koprocesory pro platformu x86 vyráběné společností Weitek - vydal 1167, 2167 ve formě čipové sady a 3167, 4167 čipy pro procesory 8086, 80286, 80386, 80486, resp. Ve srovnání s koprocesory od Intelu poskytovaly 2-3krát vyšší výkon, ale měly nekompatibilní softwarové rozhraní implementované prostřednictvím technologie mapování paměti. Skončilo to tak, že hlavní procesor musel zapisovat informace do určitých paměťových oblastí řízených koprocesorem. Konkrétní adresa, kde byl záznam pořízen, byla interpretována jako jeden nebo druhý příkaz. Navzdory této nekompatibilitě byly koprocesory Weitek široce podporovány jak vývojáři softwaru, tak výrobci základních desek, což zahrnovalo použití takového čipu.

    Řada dalších společností vydala různé nekompatibilní matematické koprocesory, které jsou k nim připojeny prostřednictvím I/O portů nebo přerušení BIOSu, ale nestaly se tak rozšířenými.

    Matematický koprocesor je speciální modul pro provádění operací s pohyblivou řádovou čárkou, který pracuje ve spojení s centrálním procesorem.
    Matematický koprocesor není povinným prvkem osobního počítače. V zásadě to můžete odmítnout. V minulosti se tak dělo z ekonomických důvodů.
    Při řešení problémů, které vyžadovaly velké množství matematických výpočtů, například ve vědeckých nebo inženýrských výpočtech, se však otázka zvýšení výkonu počítače stala akutní.
    K tomu se rozhodli použít další speciální procesor, který je „vyladěn“ pro provádění matematických operací a implementuje je mnohonásobně rychleji než centrální procesor. Tak bylo možné zvýšit výkon centrálního procesoru prostřednictvím speciálního modulu - matematického koprocesoru.
    Na rozdíl od centrálního procesoru neřídí matematický koprocesor většinu obvodů počítače. Místo toho jsou všechny aktivity matematického koprocesoru určeny centrálním procesorem, který může posílat příkazy matematickému koprocesoru ke spouštění programů a generování výsledků. V normálním režimu vykonává centrální procesorová jednotka všechny funkce počítače. A teprve když se narazí na úkol, který matematický koprocesor zvládne lépe, dostane data a příkazy a centrální procesor čeká na výsledky. Mezi takové problémy patří například matematické operace mezi reálnými čísly (operace mezi čísly s plovoucí desetinnou čárkou), kdy čísla jsou reprezentována mantisou a ordinátou (desetinná mocnina čísla, která určuje polohu desetinné čárky).
    Pokud dříve, v počítačích prvních generací (i80386, i80486), byl modul matematického koprocesoru instalován na základní desku jako samostatný čip, pak v moderních počítačích není použití matematického koprocesoru jako samostatného čipu vyžadováno, protože je již zabudován do centrálního procesoru.
    Výhody, které získáte použitím matematického koprocesoru, závisí na typu problémů, které na počítači řešíte.
    Podle INTEL může matematický koprocesor zkrátit dobu provádění matematických operací, jako je násobení, dělení a umocňování, o 80 procent nebo více. Rychlost jednoduchých matematických operací, jako je sčítání a odčítání, zůstává nezměněna.
    Z praktického hlediska nelze výkon osobního počítače související s přípravou textu a údržbou databáze (funkce, které nevyžadují složité matematické výpočty) zlepšit matematickým koprocesorem. Znatelné zvýšení produktivity však dosáhnete při provádění vědeckých a technických výpočtů, zpracování statistických dat a také při práci s grafikou, protože ta vyžaduje intenzivní matematické výpočty.

    Matematický koprocesor - koprocesor pro rozšíření příkazové sady centrálního procesoru a zajištění jeho funkčnosti jednotky s pohyblivou řádovou čárkou pro procesory, které nemají integrovaný modul.

    Jednotka s pohyblivou řádovou čárkou (neboli jednotka s pohyblivou řádovou čárkou (FPU)) je součástí procesoru pro provádění široké škály matematických operací s reálnými čísly.

    Systém obsahuje asi 80 příkazů. Jejich klasifikace:

    1) Příkazy přenosu dat: - Reálná data; - celočíselná data; - Desetinná data.

    2) Příkazy pro porovnání dat: - Reálná data; - celočíselná data; - Analýza; - Od nuly.

    3) Aritmetické příkazy: - Reálná data: sčítání, odčítání, násobení, dělení;

    4) Celočíselná data: sčítání, odčítání, násobení, dělení; - Pomocné aritmetické příkazy (druhá odmocnina, modul, změna znaménka, exponent a mantisa).

    5) Transcendentální příkazy: - Trigonometrie: sinus, kosinus, tangens, arktangens; - Výpočet logaritmů a mocnin.

    6) Ovládací příkazy: - Inicializace koprocesoru; - Práce s prostředím; - Práce se zásobníkem; - Přepínání režimů

    Koprocesor- specializovaný procesor, který rozšiřuje možnosti centrálního procesoru počítačového systému, je však koncipován jako samostatný funkční modul. Fyzicky může být koprocesor samostatný čip nebo může být zabudován do centrální procesorové jednotky (jako je tomu u matematického koprocesoru u procesorů PC počínaje Intel 486DX).

    Matematický koprocesor 80x287 v bloku na základní desce osobního počítače.

    Rozlišují se následující typy koprocesorů:

    Univerzální matematické koprocesory, obvykle urychlující výpočty s plovoucí desetinnou čárkou,

    · I/O koprocesory (například Intel 8089), které odlehčují centrálnímu procesoru od řízení I/O operací nebo rozšiřují standardní adresní prostor procesoru,

    · koprocesory pro provádění jakýchkoli vysoce specializovaných výpočtů.

    Koprocesory mohou být součástí logické sady vyvinuté jednou konkrétní společností (například společnost Intel vydala koprocesory 8087 a 8089 dodávané s procesorem 8086) nebo vyrobené výrobcem třetí strany (například Weitek 1064 pro Motorola m68k a 1067 pro Intel 80286).

    Čipy zvukového generátoru- specializované mikroobvody pro generování zvuku. Mohou být použity k reprodukci zvukových efektů a syntetizované hudby (viz chiptune) v počítačích, herních systémech (konzole, hrací automaty) a domácích spotřebičích. Anglický název pro mikroobvody tohoto typu je zvukový čip, v ruské odborné terminologii existuje zkratka PGZ- programovatelný zvukový generátor. Mohou být všechny digitální, všechny analogové nebo smíšené. Ty mohou zahrnovat frekvenční generátory (obvykle založené na dělení vstupního hodinového kmitočtu softwarově proměnným dělicím faktorem), regulátory obálek, obvody pro přehrávání vzorků, filtry a zesilovače signálu.

    Zvukové generátory lze rozdělit do dvou hlavních kategorií – ty, které přímo syntetizují zvuk, a ty, které reprodukují předem digitalizované zvuky. První kategorii lze také rozdělit podle principu činnosti na jednoduché frekvenční syntezátory (postavené na frekvenčních děličích s přídavnými součástkami) a syntezátory využívající metodu frekvenční modulace (FM syntéza, založená na vzájemné modulaci více zvukových generátorů).

    V ruštině se často nazývají čipy zvukového generátoru zvukové (ko)procesory. Tato definice je však nesprávná - čipy zvukového generátoru nezpracovávají zvuková data (hlavní funkce procesoru), generují zvuk podle jednoho hardwarově definovaného algoritmu, podle pokynů externího procesoru systému. název zvukový procesor lze aplikovat na digitální signálové procesory používané pro zpracování zvuku (například vytváření softwarově řízeného echo efektu), stejně jako na čipy zvukového generátoru obsahující mikroprocesor.

    GPU(Angličtina) grafická procesorová jednotka, GPU) - samostatné zařízení na osobním počítači nebo herní konzoli, které provádí grafické vykreslování. Moderní GPU zpracovávají a zobrazují počítačovou grafiku velmi efektivně. Díky své specializované pipeline architektuře jsou mnohem efektivnější při zpracování grafických informací než typická centrální procesorová jednotka. Grafický procesor v moderních video adaptérech se používá jako 3D grafický akcelerátor.

    Může být použit jak jako součást diskrétní grafické karty, tak v integrovaných řešeních (vestavěných do northbridge nebo hybridního procesoru).

    Pravděpodobnostní procesor pracuje s pravděpodobnostmi na úrovni hardwaru. Matematický aparát je založen na Bayesově větě

    Pravděpodobnostní procesor svým způsobem implementuje analogové výpočty pomocí technologie CMOS. Tento přístup teoreticky umožňuje efektivně implementovat přibližné výpočty založené na fuzzy logice nebo neuronových sítích.

    · 1 Aplikace

    · 2 prototypy

    Oblasti použití[editovat | upravit zdrojový text]

    Pravděpodobnostní procesor je specializovaný procesor a bude primárně používán v systémech rozpoznávání vzorů. Například v biometrii, pro diagnostiku nemocí, v různých monitorovacích systémech, v systémech technického vidění, systémech rozpoznávání hlasu, filtrování spamu, phishingu, určování bonity dlužníků a mnoha dalších úkonech. Pravděpodobnostní přístup také zahrnuje řešení technických problémů pomocí stochastických metod (metody Monte Carlo) s libovolnou požadovanou přesností řešení.

    Předpokládá se, že pravděpodobnostní procesor může být použit v moderních počítačích jako další koprocesor spolu s grafickým procesorem, signálovým procesorem nebo FPGA, což poskytuje vysokou rychlost a efektivitu pro řešení široké škály specializovaných problémů.

    Matematický koprocesor- koprocesor pro rozšíření příkazové sady centrálního procesoru a zajištění jeho funkčnosti modul s plovoucí řádovou čárkou, pro procesory, které nemají integrovaný modul.

    Jednotka s pohyblivou řádovou čárkou(nebo plovoucí bod; Angličtina jednotka s plovoucí desetinnou čárkou (FPU)) - část procesoru pro provádění široké škály matematických operací na reálných číslech.

    Jednoduché "celočíselné" procesory pro práci s reálnými čísly a matematické operace vyžadují vhodné podpůrné rutiny a čas na jejich provedení. Modul operací s plovoucí desetinnou čárkou podporuje práci s nimi na primitivní úrovni - načítání, vyjímání reálného čísla (do/ze specializovaných registrů) nebo matematická operace na nich probíhá jedním příkazem, díky tomu je výrazné zrychlení těchto operací dosaženo.

    · 1 koprocesory

    o 1.1 Intel x86 family koprocesory

    o 1.2 Koprocesory x86 třetích stran

    o 1.3 Jiné platformy

    · 2 FPU zařízení

    o 2.1 Formáty dat

    o 2.2 Registry

    o 2.3 Koprocesorový příkazový systém

    · 3 Viz také

    · 4 poznámky

    Koprocesory[upravit | upravit zdrojový text]

    Hlavní článek:X87

    x87 je speciální sada instrukcí pro práci s matematickými výpočty, která je podmnožinou procesorové architektury x86. Tento název dostal, protože původní jednotlivé čipy matematického koprocesoru měly názvy končící na 87 . Stejně jako ostatní rozšíření základní instrukční sady procesoru nejsou tyto instrukce nezbytně nutné k sestavení pracovního programu, ale při hardwarové implementaci umožňují mnohem rychlejší provádění běžných matematických úloh. Například v sadě pokynů x87 Existují příkazy pro výpočet hodnot sinus nebo kosinus.

    Koprocesory Intel z rodiny x86[editovat | upravit zdrojový text]

    Pro rodinu procesorů x86 od 8086/8088 do 386 byla jednotka s pohyblivou řádovou čárkou přidělena samostatnému čipu tzv. matematický koprocesor. Pro instalaci koprocesoru na desku počítače byl k dispozici samostatný konektor.

    Koprocesor není plnohodnotný procesor, protože neumí provádět mnoho operací k tomu nezbytných (neví například, jak pracovat s programem a vypočítat adresy paměti), je pouze přílohou centrální procesor.

    Jedno ze schémat interakce mezi centrálním procesorem a koprocesorem, které se používá zejména v koprocesorech x86, je implementováno takto:

    · Koprocesor je připojen ke sběrnicím centrálního procesoru a má také několik speciálních signálů pro synchronizaci procesorů mezi sebou.

    · Některé příkazové kódy centrálního procesoru jsou vyhrazeny pro koprocesor, který sleduje tok příkazů, ostatní příkazy ignoruje. Centrální procesor naopak ignoruje příkazy koprocesoru a adresu v paměti vypočítává pouze v případě, že příkaz zahrnuje přístup k ní. CPU provádí fiktivní čtecí cyklus, který umožňuje koprocesoru číst adresu z adresové sběrnice. Pokud koprocesor potřebuje další přístup do paměti (pro čtení nebo zápis výsledků), provede to prostřednictvím sběrnice.

    · Po obdržení příkazu a potřebných dat jej koprocesor začne provádět. Zatímco koprocesor provádí příkaz, centrální procesor pokračuje ve vykonávání programu, paralelně s výpočty koprocesoru. Pokud je další instrukce také instrukce koprocesoru, procesor se zastaví a čeká, až koprocesor dokončí předchozí instrukci.

    · Existuje také speciální čekací příkaz (FWAIT), který násilně zastaví procesor, dokud nejsou výpočty dokončeny (pokud jsou jejich výsledky potřeba pro pokračování programu). V současné době se příkaz používá pouze pro zpracování výjimek při práci s pohyblivou řádovou čárkou, práce procesoru a koprocesoru je programátorovi transparentně synchronizována.

    Počínaje procesorem Intel486DX byla jednotka s pohyblivou řádovou čárkou integrována do centrálního procesoru a nazývána FPU. V řadě Intel486SX byl modul FPU deaktivován (nejprve tato řada obsahovala procesory s vadnou FPU). Pro procesory Intel486SX byl vydán také „koprocesor“ Intel487SX, ale ve skutečnosti to byl procesor Intel486DX a při instalaci byl procesor Intel486SX deaktivován.

    I přes integraci je FPU v procesorech i486 nezměněný koprocesor, implementovaný na stejném čipu, navíc obvod FPU i486 je až na taktovací frekvenci (polovina frekvence centrálního procesoru) zcela shodný s koprocesorem 387DX předchozí generace. Skutečná integrace FPU s centrálním procesorem začala až u procesorů Pentium modelu MMX.