lebegőpontos koprocesszor From Wikipedia, the free encyclopedia
A Motorola 68881 és Motorola 68882 – lebegőpontos koprocesszor (FPU) áramkörök, amelyeket általában Motorola 68020 vagy Motorola 68030 CPU-kat alapuló rendszerekben használtak a lebegőpontos számítások felgyorsítására. Egy ilyen áramkörrel való bővítés költséges volt, de az egység hozzáadása jelentős mértékben felgyorsította a lebegőpontos számításokat, amiket ennek hiányában szoftveresen oldottak meg, aminek a sebessége messze elmarad a hardver-úton valő végrehajtástól. A lebegőpontos számítások gyorsításának főleg a tudományos és mérnöki célú szoftverekben volt nagy jelentősége. A 68881, 68882 koprocesszorok kb. 1983 végén jelentek meg,[1][2] tervezőik Clayton Huntsman, Duane Cawthron és John Boney voltak a Motorolánál.[3]
A 68020 és 68030 CPU-kat kifejezetten a külső 68881-es csippel való együttműködést szem előtt tartva tervezték. Utasításkészletükben egy utasításkód-csoport, az "F sorozat" – tehát azok az utasítások, amelynek kódja hexadecimális "F"-fel kezdődik – "csapda"-ként lett megvalósítva, tehát ha a processzorhoz egy ilyen utasításkód kerül végrehajtásra, akkor a processzor megszakítást generál, amely átadja a vezérlést az operációs rendszer valamelyik kiszolgálórutinjának. Ha a rendszerben jelen van egy 68881-es egység, akkor a CPU lehetővé teszi, hogy az hajtsa végre a szóban forgó utasítást. Ha nem, akkor az operációs rendszer meghív egy FPU-emulátort, amely a 68020 egészértékű (nem lebegőpontos) utasításain alapuló szoftverrel hajtja végre az utasítást, vagy visszaad egy hibakódot a programnak.
A 68881-es teljes mértékben megfelel az IEEE 754 lebegőpontos szabványnak, az előírásokat és javaslatokat is beleértve.[4]
A 68881-es nyolc 80 bites (belsőleg 96 bit) adatregiszterrel rendelkezik. Hét különböző számábrázolási mód – adattípus – használatát engedi meg, ezek a következők: egészek: bájt, szó (16 bites), hosszúszó (32 bites), valós számok: 32 bites egyszeres pontosságú (single-precision), 64 bites kétszeres pontosságú (double-precision) és kiterjesztett pontosságú (extended-precision), pakolt binárisan kódolt decimális (BCD) string számok. A különböző formátumban található számokat betöltéskor egységesen a belső kiterjesztett pontosságú formátumára konvertálja és ebben a belső formátumban végzi el a műveleteket.[5] A kiterjesztett pontosságú ábrázolást az IEEE 754 szabvány nem definiálja bit-szintre lebontva, így ebben a koprocesszorban a kiterjesztett pontosságú számok 80 bitesek, a koprocesszor memóriaformátuma azonban 96 bites (3 hosszúszó), az extra 16 bitet a lebegőpontos struktúrák memóriaigazításához használja fel és fenntartja a jövőbeli kiterjesztés számára.[4]
Az egység speciálisan a lebegőpontos matematikai műveletek elvégzésére lett tervezve, és nem általános célú CPU. Például ha egy utasításban bármilyen címszámításra van szükség, akkor azt a CPU végzi el, mielőtt a 68881 megkapná a vezérlést.
A koprocesszor memóriába leképzett módon csatlakozik a főprocesszorhoz, így nem függ annak órajelétől.[5] A CPU/FPU páros úgy van tervezve, hogy a két processzor egyidőben működjön. Amikor a fő processzor egy 68881-es utasítással találkozik, átadja az FPU-nak az utasítást és az összes operandust, ezután az FPU továbbengedi a CPU-t, tehát a CPU elkezdi végrehajtani a következő utasítást.
A 68882 nem más, mint egy javított felépítésű 68881-es verzió. Ebbe jobb utasítás-futószalag került, és magasabb órajelű modellek is készültek. Utasításkészlete pontosan ugyanaz, mint a 68881-nek. A Motorola marketinganyagaiban azt állítja, hogy a 68882-es bizonyos utasításokat 40%-kal gyorsabban végez el, mint az azonos órajelű 68881-es, de ez nem tükrözi a tipikus teljesítményt, ami jóval szerényebb növekedést jelent, ahogy az alábbi táblázatokon látható. A 68882 lábkompatibilis a 68881-essel és közvetlenül felválthatja azt a legtöbb rendszerben.
Nevezetesebb, 68881 vagy 68882 FPU-t tartalmazó számítógépek a következők: a Sun Microsystems Sun 3 modellje, az Apple Computer Macintosh II sorozata, a NeXT Computer, bizonyos modellek az Atari gépcsaládból (Mega STE, TT és Falcon030) és a Commodore Amiga 3000. Néhány harmadik féltől származó Amiga és Atari termékben is előfordul 68881 vagy 68882, ilyen pl. a memóriába leképzett perifériaegység a Motorola 68000-hez.
A később megjelent Motorola 68040 processzor már beépítve tartalmazta a lebegőpontos egységet. A 68881 legtöbb lebegőpontos utasítása és számábrázolási módja ebben hardveresen támogatott, de néhány utasítás nem volt hardveresen megvalósítva, ezekhez szoftveres emulációra volt szükség: a 68040 lebegőpontos egységéből hiányoztak a transzcendentális függvények, amiket a Motorola lebegőpontos támogatócsomagjában (floating point support package, FPSP) lévő szoftverrel lehetett végezni.
A statisztikák forrása a comp.sys.m68k FAQ. Nincs idézve a 16 MHz-es és 20 MHz-es 68882-re vonatkozó statisztika, bár tényleg készültek ilyen csipek.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.