Jednotka s plovoucí desetinnou čárkou - Floating-point unit

Sbírka matematických koprocesorů řady x87 od společnosti Intel

Jednotka s plovoucí desetinnou čárkou ( FPU , hovorově matematický koprocesor ) je část počítačového systému speciálně navrženého k provádění operací s čísly s plovoucí desetinnou čárkou . Typickými operacemi jsou sčítání , odčítání , násobení , dělení a druhá odmocnina . Některé FPU mohou také provádět různé transcendentální funkce, jako jsou exponenciální nebo trigonometrické výpočty, ale přesnost může být velmi nízká, takže některé systémy dávají přednost výpočtu těchto funkcí v softwaru.

V obecných počítačových architekturách může být jedna nebo více FPU integrováno jako prováděcí jednotky v centrální procesorové jednotce ; mnoho vestavěných procesorů však nemá hardwarovou podporu pro operace s plovoucí desetinnou čárkou (i když je stále více mají jako standardní, alespoň 32bitové).

Když CPU spouští program, který vyžaduje operaci s plovoucí desetinnou čárkou, existují tři způsoby, jak ji provést:

  • Emulátor jednotky s plovoucí desetinnou čárkou (knihovna s plovoucí desetinnou čárkou).
  • Doplňkový FPU.
  • Integrovaná FPU.

Dějiny

V roce 1954 měl IBM 704 aritmetiku s plovoucí desetinnou čárkou jako standardní funkci, jedno z hlavních vylepšení oproti svému předchůdci IBM 701 . To bylo přeneseno na jeho nástupce 709, 7090 a 7094.

V roce 1963 společnost Digital oznámila PDP-6 , který měl jako standardní funkci plovoucí čárku.

V roce 1963 GE-235 představoval „pomocnou aritmetickou jednotku“ pro výpočty s plovoucí desetinnou čárkou a dvojitou přesností.

Historicky některé systémy implementovaly pohyblivou řádovou čárku s koprocesorem, nikoli jako integrovanou jednotku (ale nyní kromě CPU, např. GPU  - což jsou koprocesory, které nejsou vždy integrovány do CPU - mají zpravidla FPU, zatímco první generace GPU nikoli 't). Může to být jeden integrovaný obvod , celá deska s obvody nebo skříň. Tam, kde nebyl poskytnut hardware pro výpočet s pohyblivou řádovou čárkou, se výpočty s pohyblivou řádovou čárkou provádějí v softwaru, který zabere více času procesoru, ale vyhne se nákladům na další hardware. Pro konkrétní počítačovou architekturu mohou být instrukce jednotky s plovoucí desetinnou čárkou emulovány knihovnou softwarových funkcí; to může umožnit spuštění stejného objektového kódu na systémech s hardwarem s plovoucí desetinnou čárkou nebo bez něj. Emulaci lze implementovat na libovolné z několika úrovní: v CPU jako mikrokód (není to běžná praxe), jako funkce operačního systému nebo v kódu uživatelského prostoru . Pokud je k dispozici pouze celočíselná funkce, nejčastěji se používají metody emulace CORDIC s pohyblivou řádovou čárkou.

Ve většině moderních počítačových architektur existuje určité dělení operací s plovoucí desetinnou čárkou z celých operací. Toto rozdělení se výrazně liší podle architektury; některé mají vyhrazené registry s plovoucí desetinnou čárkou, zatímco některé, jako Intel x86 , to berou tak daleko, jako nezávislá schémata taktování .

Rutiny CORDIC byly implementovány v koprocesorech Intel x87 ( 8087 , 80287, 80387) až do řady mikroprocesorů 80486 , stejně jako v Motorola 68881 a 68882 pro některé druhy instrukcí s plovoucí desetinnou čárkou, hlavně jako způsob, jak snížit počet bran (a složitost) subsystému FPU.

Operace s pohyblivou řádovou čárkou jsou často propojeny . V dřívějších superskalárních architekturách bez obecného provádění mimo pořadí byly operace s plovoucí desetinnou čárkou někdy propojeny odděleně od celočíselných operací.

Modulární architektura mikroarchitektury Bulldozer využívá speciální FPU s názvem FlexFPU, který využívá simultánní multithreading . Každé fyzické celočíselné jádro, dvě na modul, má jedno vlákno , na rozdíl od Hyperthreadingu společnosti Intel , kde dvě virtuální souběžná vlákna sdílejí prostředky jednoho fyzického jádra.

Knihovna s pohyblivou řádovou čárkou

Některý hardware s plovoucí desetinnou čárkou podporuje pouze nejjednodušší operace: sčítání, odčítání a násobení. Ale i ten nejsložitější hardware s plovoucí desetinnou čárkou má omezený počet operací, které může podporovat-například žádné FPU přímo nepodporují aritmetiku libovolné přesnosti .

Když CPU spouští program, který vyžaduje operaci s plovoucí desetinnou čárkou, která není přímo podporována hardwarem, procesor používá řadu jednodušších operací s plovoucí desetinnou čárkou. V systémech bez hardwaru s pohyblivou řádovou čárkou jej CPU emuluje pomocí řady jednodušších aritmetických operací s pevným bodem, které běží na celočíselné aritmetické logické jednotce .

Software, který uvádí nezbytné řady operací k emulaci operací s plovoucí desetinnou čárkou, je často zabalen v knihovně s plovoucí desetinnou čárkou .

Integrované FPU

V některých případech mohou být FPU specializované a děleny mezi jednodušší operace s pohyblivou řádovou čárkou (hlavně sčítání a násobení) a složitější operace, jako je dělení. V některých případech mohou být v hardwaru nebo mikrokódu implementovány pouze jednoduché operace , zatímco složitější operace jsou implementovány jako software.

V některých současných architekturách je funkce FPU kombinována s jednotkami SIMD pro provádění výpočtu SIMD; příkladem toho je rozšíření sady instrukcí x87 o sadu instrukcí SSE v architektuře x86-64 používané v novějších procesorech Intel a AMD.

Doplňkové FPU

V 80. letech 20. století bylo v mikropočítačích kompatibilních s IBM PC běžné, že FPU byl zcela oddělen od CPU a obvykle se prodával jako volitelný doplněk. Bylo by zakoupeno pouze v případě potřeby pro zrychlení nebo povolení programů náročných na matematiku.

IBM PC, XT a většina kompatibilních na základě 8088 nebo 8086 měla zásuvku pro volitelný koprocesor 8087. AT a 80286 založené systémy byly obecně soketne pro 80287 a 80386 / 80386SX založené stroje - pro 80387 a 80387SX pořadí, i když ty brzy byly soketne na 80287, protože 80387 ještě neexistoval. Jiné společnosti vyráběly koprocesory pro řadu Intel x86. Patřily mezi ně Cyrix a Weitek .

Pro rodinu Motorola 68000 , 68881 a 68882 byly k dispozici koprocesory . Ty byly běžné v Motorola 68020 / 68030 založené pracovní stanice , jako je Sun-3 série. Byly také běžně přidávány do modelů vyšší řady Apple Macintosh a Commodore Amiga , ale na rozdíl od systémů kompatibilních s IBM PC nebyly zásuvky pro přidání koprocesoru v systémech nižší třídy tak běžné.

Existují také přídavné koprocesorové jednotky FPU pro mikrokontrolérové jednotky (MCU/ μC)/ jednodeskový počítač (SBC), které slouží k poskytování aritmetických schopností s pohyblivou řádovou čárkou . Tyto přídavné FPU jsou nezávislé na hostitelském procesoru, mají své vlastní programovací požadavky ( operace , sady instrukcí atd.) A často jsou vybaveny vlastním integrovaným vývojovým prostředím (IDE).

Viz také

Reference

Další čtení