Műveletek lebegőpontos adatokkal

Hasonló dokumentumok
Összeadás BCD számokkal

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Adattípusok. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

Assembly programozás: 2. gyakorlat

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Aritmetikai utasítások I.

LEBEGŐPONTOS SZÁMÁBRÁZOLÁS

4. Fejezet : Az egész számok (integer) ábrázolása

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

I+K technológiák. Számrendszerek, kódolás

Informatika érettségi vizsga

5. Fejezet : Lebegőpontos számok. Lebegőpontos számok

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Informatikai Rendszerek Alapjai

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Digitális technika VIMIAA hét

2. Fejezet : Számrendszerek

5. Fejezet : Lebegőpontos számok

Fixpontos és lebegőpontos DSP Számrendszerek

Digitális technika VIMIAA hét

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

Máté: Számítógép architektúrák

Digitális technika VIMIAA02 1. EA Fehér Béla BME MIT

Programozott soros szinkron adatátvitel

Harmadik gyakorlat. Számrendszerek

Digitális technika VIMIAA02 1. EA

Számítógép felépítése

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Bevezetés az informatikába

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

Máté: Számítógép architektúrák

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Digitális technika VIMIAA01

Digitális rendszerek. Utasításarchitektúra szintje

Digitális technika VIMIAA01

Architektúra I. A Számítási modell fogalma: A számításra vonatkozó alapelvek absztarakciója. Jellemzői: - Tudás alapú számítási modell.

Negatív alapú számrendszerek

Számítógép architektúra

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

Matematikai alapok. Dr. Iványi Péter

IT - Alapismeretek. Feladatgyűjtemény

Alapfogalmak. Dr. Kallós Gábor A Neumann-elv. Számolóeszközök és számítógépek. A számítógép felépítése

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Számítógép architektúrák

Az Informatika Elméleti Alapjai

DIGITÁLIS TECHNIKA I SZÁMRENDSZEREK HELYÉRTÉK SZÁMRENDSZEREK RÓMAI SZÁMOK ÉS RENDSZERÜK. Dr. Lovassy Rita Dr.

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Digitális technika VIMIAA01

(jegyzet) Bérci Norbert szeptember 10-i óra anyaga. 1. Számrendszerek A számrendszer alapja és a számjegyek

DIGITÁLIS TECHNIKA I KÓD IRODALOM SZIMBÓLUMKÉSZLET KÓDOLÁS ÉS DEKÓDOLÁS

Műveletek fixpontos számokkal

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Komputeralgebrai Algoritmusok

A számrendszerekrl általában

Bevezetés az informatikába

Bevezetés az informatikába

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

1. ábra. Repülő eszköz matematikai modellje ( fekete doboz )

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Központi vezérlőegység

A SZÁMFOGALOM KIALAKÍTÁSA

4. hét: Ideális és valódi építőelemek. Steiner Henriette Egészségügyi mérnök

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

Kifejezések. Kozsik Tamás. December 11, 2016

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Processzor (CPU - Central Processing Unit)

A TMS320C50 és TMS320C24x assembly programozására példák

DIGITÁLIS TECHNIKA I BINÁRIS SZÁMRENDSZER BEVEZETŐ ÁTTEKINTÉS BINÁRIS SZÁMRENDSZER HELYÉRTÉK. Dr. Lovassy Rita Dr.

(jegyzet) Bérci Norbert szeptember i óra anyaga A számrendszer alapja és a számjegyek Alaki- és helyiérték...

A mikroprocesszor felépítése és működése

Amit a törtekről tudni kell 5. osztály végéig Minimum követelményszint

I. el adás, A számítógép belseje

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Számítógépek felépítése

Amit a törtekről tudni kell Minimum követelményszint

Nagy adattömbökkel végzett FORRÓ TI BOR tudományos számítások lehetőségei. kisszámítógépes rendszerekben. Kutató Intézet

Informatika 1 2. el adás: Absztrakt számítógépek

Digitális Rendszerek és Számítógép Architektúrák

Számítógépek felépítése, alapfogalmak

Digitális Rendszerek és Számítógép Architektúrák

Számítógépes alapismeretek

Digitális jelfeldolgozás

A racionális számok és a fixpontos processzorok numerikus felületének a kapcsolata

Alaplap: közös kapcsolódási felület a számítógép részegységei számára

TARTALOMJEGYZÉK. 1. BEVEZETÉS A logikai hálózatok csoportosítása Logikai rendszerek... 6

(11) Lajstromszám: E (13) T2 EURÓPAI SZABADALOM SZÖVEGÉNEK FORDÍTÁSA

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A SZÁMÍTÓGÉP KIALAKULÁSA. Zámori Zoltán, KFKI

Informatikai alkalmazások - levelező ősz

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Kifejezések. Kozsik Tamás. December 11, 2016

Átírás:

Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Műveletek lebegőpontos adatokkal Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu

Műveletek az IEEE 754 lebegőpontos szabvány szerint A szabvány szerint megvalósítandó műveletek négy alapművelet négyzetgyökvonás maradék-képzés bináris-decimális átalakítás kerekítés kivételek kezelése rejtett bit valóságossá alakítása karakterisztika többletes kódból kettes komplemenssé alakítása (opcionális) A pontosságnak az LSB pozíción lévő bit értékének a felénél kisebbnek kell lenni. Ez azt jelenti, hogy legalább három őrző bitet kell alkalmazni.

Kerekítés Bármely lebegőpontos művelet eredményének mantisszája egy hosszabb ALU-regiszterben keletkezik. Ezt amikor a memóriába töltjük (store) akkor kerekítenünk kell. legközelebbire való kerekítés Az eredményt a legközelebbi ábrázolható számra kerekíti. Például, amennyiben az őrző bitek értéke 101, akkor az nagyobb, mint az LSB bit értékének a fele. Ekkor tehát az LSB-hez hozzá kell adni 1-et; kerekítés a pozitív végtelen felé - kerekítés a negatív végtelen felé A lebegőpontos műveletsorozat végén a hardver-korlátok okozta kerekítések miatt nem ismerhetjük a pontos eredményt. Amennyiben viszont minden műveletet kétszer hajtunk végre, egyszer fölfele, egyszer pedig lefele kerekítve, akkor két eredményt kapunk, és biztos, hogy a kettő között helyezkedik el a helyes eredmény. Ha a két eredmény közötti különbség csekély, akkor elég pontos az eredményünk. Amennyiben viszont nagy, az eredmény nem exakt. nullára kerekítés Gyakorlatilag az őrző bitek egyszerű levágását (trunc) jelenti. Ez azt eredményezi, hogy a mantissza a pontos értéknél mindig kisebb vagy azzal egyenlő lesz.

A kivételek kezelése A kivételek felbukkanása szoftver-megszakítást eredményez, melynek kezelését a felhasználó végzi: nem egyértelmű művelet Például: egy negatív szám négyzetgyökvonása; nullával való osztás Amikor az osztandó egy véges nem nulla szám, az osztó pedig nulla, akkor az eredmény pozitív végtelen; alulcsordulás Állapotjelző beállítása és az eredmény értékének nullára konvertálása vagy a denormalizált szám ábrázolása. túlcsordulás Állapotjelző beállítása és egyidejűleg vagy a legmagasabb létező érték beállítása vagy előjeles végtelen ábrázolása. nem exakt kivétel Amikor egy művelet kerekített eredménye nem exakt, ez a kerekítési szabályokból eredő üzenet.

Műveletek lebegőpontos számokkal A lebegőpontos aritmetikai műveletek a mantisszán és a karakterisztikán végzett többszörös fixpontos műveletekre vezethetők vissza. Legyen A és B a két lebegőpontos szám, ahol m A és m B a normalizált mantisszát, k A és k B a karakterisztikát jelöli. Az r pedig a radix, a számrendszer alapja. A B = ± m = ± m A B r r k k B A

Algoritmus Összeadás/kivonás k A és k B karakterisztikák összehasonlítása; a kisebb karakterisztikájú szám shiftelése jobbra, miközben növeljük a karakterisztika értékét, amíg a két karakterisztika meg nem egyezik; a mantisszákon az összeadás/kivonás elvégzése; ha szükséges, az eredmény mantisszájának normalizálása. Példa: összeadunk két számot 0,900 x 10 2 0,993 x 10 4 Először is azonos kitevőjű alakra hozzuk őket, azaz a kisebb karakterisztikájú számot léptetjük jobbra: 0,900 x 10 2 0,090 x 10 3 0,009 x 10 4 Amikor a karakterisztikák már azonosak, elvégezzük az összeadást. 0,009 x 10 4 0,993 x 10 4 1,002 x 10 4 Végül, ha szükséges, mint az adott esetben is, az eredményt nullára normalizáljuk. 0,100 x 10 5

Szorzás C C = A B = ± m A m B r k A + k B Algoritmus a mantisszák előjelhelyes szorzása a karakterisztikák összeadása ha szükséges, normalizálás végrehajtása. C C A/B = ± m A / m B r k A k B Osztás = Algoritmus a mantisszák előjelhelyes osztása a karakterisztikák kivonása ha szükséges, normalizálás végrehajtása. A mantissza és a karakterisztika műveletei párhuzamosan végezhetőek. Amíg a karakterisztikák összeadása/kivonása gyors, a mantisszák szorzása/osztása lassú, ezért érdemes áramköri szorzót alkalmazni.

Kombinált (univerzális) aritmetikai egység A fixpontos és a lebegőpontos aritmetika egyetlen aritmetikai egységben megvalósítható. A vezérlőegység ebben az esetben bonyolult lesz. Lényegében ez egy egyszavas fixpontos aritmetikai egység, amelyben mind a regiszterek, mind pedig az összeadó felosztható karakterisztikára és mantisszára, amikor lebegőpontos műveletet kell végrehajtani Exponens összeadó Mantissza összeadó Fixpontos összeadó A tipikus megoldás azonban, amikor a karakterisztika is és a mantissza is külön-külön regiszterben van tárolva, egymás után végrehajtjuk velük az utasítás által előírt műveleteket és azok befejeződése után a letöltésük során újraegyesítjük a kettőt.

Dedikált lebegőpontos egység A lebegőpontos aritmetikai egység megvalósítható két, fixpontos aritmetikai áramkör: egy karakterisztika egység és egy mantissza egység laza kapcsolata révén. Adatsín Karakterisztika egység Mantissza egység Vezérlősín Vezérlő egység a mantissza egységnek egy általános célú fixpontos aritmetikai egység valamennyi műveletét tudnia kell, tehát a szorzás és osztást is. egy egyszerű, csupán összeadni és kivonni tudó áramkör elegendő viszont a karakterisztika egységhez; a két egység működhet párhuzamosan. Ebben az esetben viszont a bonyolultabb, s egyben az időigényesebb feldolgozást végző mantissza egységet igen gyors elemekből kell építeni.

Megvalósítási esettanulmány Az Intel család Az 1981-ben megjelent Intel 8087 lebegőpontos segédprocesszor volt az IEEE szabvány egyik első megvalósítása, még a szabvány 1985-ös megjelenése előtt. radix 2; a szabványnak megfelelően kezeli az alulcsordulást és a túlcsordulást; létezik a rejtett bit használja az őrző biteket. A formátumok közül mindkét szabványos formátum (az egyszeres és a kétszeres pontosság) megvalósításra került. Ez a két formátum csupán a memóriában és a háttértárolón létezik. Mihelyt egy ALU regiszterbe kerül a szám, azonnal átalakításra kerül bővített pontosságú számmá: 1 15 64 EXP MANT 79 64 63 Hossza: 10 bájt (80 bit), mantissza 64 bit. A mantisszához tartozik a nem ábrázolt, de benne foglalt egyes karakterisztika 15 bit. 16.383 többletes az exponens értéke. Értéktartománya: 3,4*10-4932 x 1,2*10 4932 Pontossága 19 decimális számjegy.

A Checkit teljesítményteszt Math benchmarkja 8088 Processzor Relatív teljesítmény 1 Megjegyzés 386, 25 MHz 486dx, 66MHz Pentium, 133 MHz 18 1730 5974 8087 segédprocesszor külön lapkán (kezdeti ára 180 eft) általános és lebegőpontos segédprocesszor egy lapkán futószalagos műveletvégzés

Lebegőpontos multimédia feldolgozás 2D vektoros megjelenítés A vonalakkal, görbékkel grafikailag körvonalazható képek (x 1,y 1 ) geometriailag definiálhatók. Ezen esetekben elegendő az egyes objektumok geometriai jellemzőinek tárolása. Egy komplex objektumot sok, kicsi, matematikailag könnyen leírható elemekre, sokszögekre, leggyakrabban háromszögekre bontják és a számítógép ezen háromszögeket dolgozza fel. Műveletek mozgatás kicsinyítés nagyítás forgatás torzítás (Pl., egy ellipszist készíthetünk egy körből úgy, hogy a függőleges és a vízszintes méreteit különféleképpen írjuk le) zárt objektumokat kitöltése színekkel objektum elemek összekapcsolása egy komplexebb objektummá (x 0,y 0 ) r (x 2,y 2 ) A feldolgozandó adatok jellege és mennyisége Kevés adatot kell tárolni, de azokon sok számítást hajtunk végre: a jellemzőket tehát lebegőpontos formátumban kell ábrázolni. Meghatározóvá válik a lebegőpontos feldolgozási sebesség.

3D képek és mozgatásuk A 3D képek olyan vektoros 2D képek, melyhez a térhatás érdekében egy harmadik dimenziót adunk hozzá. Egy komplex kép akár 20.000 sokszögből is állhat, amit a mozgási effektus érdekében másodpercenként minimum 15-ször kell átszámolni, azaz újra előállítani. A grafikus gyorsítónak tehát ebben az esetben 300.000 sokszöget kell interpretálnia másodpercenként. A valós objektumok árnyaltabbak, fény-árnyék hatás élénkíti és tompítja a színeket. Ezt a számítógép úgynevezett textúra készítésével éri el. Ezen kívül biztosított a perspektivikus ábrázolás perspektivikus ábrázolás, a távolabbi objektumok kisebbek, a párhuzamosok pedig a végtelenben összetartanak. A valósághűbb ábrázolás érdekében az atmoszferikus perspektívát is alkalmazzák: a közeli objektumok tisztábban látszanak, a távolabbiak pedig fakóbbak és kékesebbek.

Megvalósítás 1998-ban megjelent Intel az új lebegőpontos kiterjesztésével, amit Katmai New Instructions - KNI vagy MMX2-nek neveznek. A B 127 32 32 32 32 0 C A SIMD nyolc 128 bit hosszúságú regiszterből áll, amelyet XMM regiszternek hívnak. Egy regiszterbe 4 db egyszeres pontosságú lebegőpontos szám írható, így a vektor-műveletek során egyszerre 4 db lebegőpontos számon hajtható végre művelet. A bevezetett SIMD FP utasítások száma 70, melyek kielégítik az IEEE lebegőpontos szabványt. A kerekítések és a pontosság szintén az IEEE szabványban előírtaknak megfelelően kerültek megvalósításra. Az új regiszterek bevezetése operációs rendszer módosítást követel meg: a megszakításkezelés során a kontextus-kezelésnél ezen regiszterek mentéséről és visszatöltéséről is gondoskodni kell, amit a Win98 már meg is valósít. A Katmai teljesítménye 500 MHz mellett 2 GFLOPS, ami 2 milliárd lebegőpontos művelet végrehajtását jelenti másodpercenként. Ez a sebesség új távlatokat nyit meg a 3D feldolgozás terén, és ezen az architektúrán a hang- és beszédfeldolgozás is áttérhet a lebegőpontos formátumra.

Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Műveletek BCD számokkal Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu

A BCD számok összeadása A BCD kódban megadott számok bináris számrendszer szabályai szerint összeadhatók, de ha az összeadás eredménye 9-nél nagyobb, akkor a tízes számrendszer szabályai szerint kell képezni az átvitelt. Ezt korrekciónak nevezzük: az összegből 10 10 =1010 2 kell kivonni. Ennek kettes komplemensét: 0110 2 hozzáadjuk, azaz végső soron 6-ot hozzáadunk. Az eredmény előjelének megállapítása külön történik. 8 1000 + 7 0111 15 1111 érvénytelen tetrád 0110 10101 átvitel

Érvényes tetrádok 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 Érvénytelen tetrádok 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F vagy ennél nagyobb, azaz van átvitel C out BCD összeadó 1 & A 3 B 3 Σ S 3 Σ C 2 C 1 1 Σ 2 Σ X 3 A 2 B 2 S 2 X 2 A 1 B 1 Σ Σ 2 C 0 A 0 B 0 Σ S 1 X 0 X 1 C C out out C in + S + S 3 3 S 2 S ( S + S1) Megvalósítás lehet dedikált univerzális műveletvégző egység Az átvitel gyorsabb terjedése érdekében itt is használnak CLA-t 2 1 =

Esettanulmány Intel processzorok Zónázott ábrázolási módnál az alsó négy biten ábrázolja a BCD számokat, a felső négy bitre pedig 3 kerül. Műveleteket (+,-,*,/) is hajthatunk végre zónázott számokon. Pakolt decimális: 80 bit hosszú (10 egymást követő bájt). A legfelső helyiértékű bájt legfelső bitje az előjel. Ha értéke 1, negatív a szám, ha 0, pozitív. A legfelső bájt többi bitje kihasználatlan. A többi bájt egyenként két BCD számjegyet tárol. Értéktartománya: 18 db 18 db -9...9 x 9...9 9x sign BCD BCD... BCD BCD

BCD aritmetika értékelése Előnye: - pontosság; Hátránya: - bonyolultabb a műveletvégzés, így drágább a műveletvégző és lassabb a műveletvégzés - a mai áraknál és teljesítményeknél ez a hátrány már elhanyagolható; - rosszabb a memória-kihasználtsága, mint a bináris számoké: a BCD szám a 16 lehetséges kombinációnak csak kb. 60%-át, azaz 10-et használ ki. A mai memória-árak és méretek mellett ez a hátrány szintén elhanyagolható. Pénzügyi programoknál lényeges az input adatok pontosságának megőrzése. Mivel napjainkban egyre meghatározóbbak az alkalmazói szempontok, így a BCD ábrázolásnak jelenleg az előnyei dominálnak és így perspektivikus az alkalmazása. Érdekességek: A BCD gyakran található a különféle alkalmazásoknál, például: - a mikroprocesszorok többsége biztosítja a használatát; - a Basic fordítók jelentős része valamennyi numerikus műveletet BCD kódot használva végeznek; - például a zsebszámológépek és a digitális órák általában ezt a formátumot használják.

Fixpontos - lebegőpontos BCD Melyiket használjam? Fixpontos A fixpontos, azaz az integer számításokat a processzor könnyebben hajtja végre, ezért nyilvánvalóan gyorsabbak. Az operandusok az operatív memóriában általában kevesebb helyet igényelnek (a byte formátum csak 8-bites, míg a legrövidebb lebegőpontos formátum is 32 bites) és így a lehívásuk is gyorsabb lehet (a 32-bites longint gyorsabban olvasható be egy 32-bites sínen, mint egy 64-bites duplapontosságú lebegőpontos szám). A számok ábrázolása is pontosabb, mint a lebegőpontos számoké (egy IF a=1 utasításban például veszélyes lenne lebegőpontos formátumú a változót használni);. Műveletvégzés során már az ábrázolt számok pontossága már erősen korlátozott, hiszen ha a törtpontot a szám végére képzeljük, az egész számok közötti számtartományok a gép számára nem léteznek. Ez azzal az eredménnyel jár, hogy egyes műveletek pontatlanul végezhetők. (pl. 7/4=1). A mai magas szintű programozási nyelvek általában biztosítják a 8, a 16 és a 32 bit hosszúságú integer formátumot. Ezek közül a változónk várható értelmezési tartományának megfelelően válasszunk. Igyekezzünk a lehető legrövidebb formátumot választani. Lebegőpontos A lebegőpontos számokat akkor használjuk, amikor a változónk vagy konstansunk nem csak egész, hanem törtrészt is tartalmaz, a számunk kívül eshet az integer értelmezési tartományon, az igényelt pontosság túllépi azt a pontosságot, amit a leghosszabb rendelkezésünkre álló integer formátumunk biztosít. Ugyanúgy, mint az integer esetében, a lebegőpontos számoknál is a rövidebb formátummal gyorsabb a műveletvégzés, ezért csak akkor használjuk a pontosabb formátumot, amikor arra valóban igény van. BCD Azon programozási nyelvek esetében, melyek lehetővé teszik a BCD formátum alkalmazását, ott a gazdasági alkalmazások által igényelt pontosság elérése céljából a lebegőpontos ábrázolásnak egy attraktív alternatívája a BCD ábrázolás.

Az ALU egyéb funkciói Logikai műveletek Léptetések Címgenerálás - indexelés Összehasonlítás (kivonás és az előjel vizsgálata) és feltételes ugrás