Motorola 68881

lebegőpontos koprocesszor
(Motorola 68882 szócikkből átirányítva)
Ez a közzétett változat, ellenőrizve: 2022. október 13.

A Motorola 68881 és Motorola 68882lebegő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 Motorola 68881 FPU

Áttekintés

szerkesztés
 
A Motorola 68882 FPU

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.

Felépítés

szerkeszté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.[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.

Felhasználás

szerkeszté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

szerkesztés
  • 155 000 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
  • 176 000 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
  • 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.

  1. Clayton Huntsman, Duane Cawthron: The MC68881 Floating-point Coprocessor (angol nyelven). ACM, 1983. november 1. (Hozzáférés: 2013)
  2. An Interview with the Old Man of Floating-Point (angol nyelven). EECS Berkeley, 1998. február 20. (Hozzáférés: 2013) "... Motorola was represented by Joel Boney who then led their project in Austin, Texas, to build what later ( 1984 ) became the MC68881/2 coprocessors."
  3. Joel Boney: Goals and tradeoffs in the design of the MC68881 floating point coprocessor (angol nyelven). ACM, 1984. (Hozzáférés: 2013)
  4. a b MC68881 / Technical Summary / HCMOS Floating-Point Coprocessor (angol nyelven) (pdf) pp. 1–49. Motorola. (Hozzáférés: 2013)
  5. a b Gennadiy Shvets: Motorola 68881 FPU family (angol nyelven). CPU-World, 2003, 2010. (Hozzáférés: 2013)

Fordítás

szerkesztés

Ez a szócikk részben vagy egészben a Motorola 68881 című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

További információk

szerkesztés

Kapcsolódó szócikkek

szerkesztés
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy