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: ennek hiányában szoftveresen oldottak meg, ennek 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, tervezőik Clayton Huntsman, Duane Cawthron és John Boney voltak a Motorolánál.
Áttekintés
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, mely á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, mely 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.
Felépítés A 68881-es teljes mértékben megfelel az IEEE 754 lebegőpontos szabványnak, az előírásokat és javaslatokat is beleértve.
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. 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.
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. 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.
68882 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.
Felhasználás 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.
Válogatott statisztika 68881 tranzisztor a lapkán 16 MHz verzió, teljesítménye 160 kFLOPS 20 MHz verzió, teljesítménye 192 kFLOPS 25 MHz verzió, teljesítménye 240 kFLOPS
68882 tranzisztor a lapkán 25 MHz verzió, teljesítménye 264 kFLOPS 33 MHz verzió, teljesítménye 352 kFLOPS 40 MHz verzió, teljesítménye 422 kFLOPS 50 MHz verzió, teljesítménye 528 kFLOPS
68040 25 MHz FPU, teljesítménye 3,500 MFLOPS 33 MHz FPU, teljesítménye 4,662 MFLOPS 40 MHz FPU, teljesítménye 5,600 MFLOPS
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.
Jegyzetek "... Motorola was represented by Joel Boney who then led their project in Austin, Texas, to build what later ( 1984 ) became the MC68881/2 coprocessors."
Fordítás
Források freescale.com – Motorola MC68000 Family Programmer's Reference Manual faqs.org – comp.sys.m68k FAQ MC68881/MC68882 Floating-point Coprocessor User's Manual (380 oldalas kézikönyv, Motorola, 1987)
További információk A 68881 a cpu-world oldalán A 68882 a cpu-world oldalán A 68881 koprocesszor adatlapja (pdf, angol)
Kapcsolódó szócikkek Motorola 68000 processzorcsalád Motorola 68040
Kategória:Motorola mikroprocesszorok Kategória:Koprocesszorok Kategória:68k architektúra