SzA6. Az aritmetikai egységek felépítése II. Flashcards
Fixpontos szorzás módszerei
Elemi műveletek:
- összeadás (lassú)
- invertálás
- léptetés
Helyi értékek
Ha összeszorzunk két számot, akkor a helyiértékük számainak az összege nagyobb vagy egyenlő az eredmény helyiértékeinek számával. Pl. 2* 8 bit = 16 bit
Olyan regisztert kell biztosítani, ami tudja tárolni a nagyobb helyiértékű eredményt is.
Szorzat hossza
Ha összeszorzunk két számot, akkor a helyiértékük számainak az összege nagyobb vagy egyenlő az eredmény helyiértékeinek számával. Pld.:
9*9 = 81 (1 helyi érték * 1 helyi érték = 2 helyi érték)
99*9 = 891 (1 helyi érték * 2 helyi érték = 3 helyi érték)
99*1 = 99 (1 helyi érték * 2 helyi érték = 2 helyi érték)
helyi értékek száma: m(szám1) és n(szám2)
helyiérték(szám1 * szám2) <= m + n
Konklúzió: Mivel a szorzandó és a szorzó is egy-egy regiszterben helyezkedik el, így a szorzatot kettő regiszterben kell tárolni, mert 2n hosszú lehet.
Szorzás gyorsítása
bitcsoporttal való szorzás
2 bittel szorzunk: 00, 01, 10, 11
00: esetén az értéket léptetjük balra kettővel
01: gyűjtőhöz hozzáadjuk a szám egyszeresét és léptetjük balra kettővel
10: gyűjtőhöz hozzáadjuk a szám kétszeresét és léptetjük balra kettővel
11: a gyűjtőhöz hozzáadom a szám négyszeresét, majd kivonom belőle magát a számot, de ez fizikailag nem megoldható
Booth algoritmus
Ha a szorzatban sok 1-es van az sok összeadást jelent.
Pl.: 62-vel szorzunk: 00111110
5 db összeadás -> helyette 3 db összeadás
A*62=A*(64-2)
A BCD ábrázolás jellemzői
Megjelenésének oka: fontos, hogy az eredményeink a lehető legpontosabbak legyenek (pl. bankban, pénzügyi tranzakciók). Kódolunk, nem átszámítunk. A kódolás az egyértelmű megfeleltetés. A BCD számábrázolás nagyon pontos.
Ábrázolás:
4 biten ábrázoljuk (tetrádok) (0000 -> 1001). Maradnak kihasználatlan, érvénytelen bitsorozatok (tetrádok): 1010 -> 1111, decimálisan A-tól E-ig. (4 bit 1 tetrád)
BCD formátumok
- Zónázott
- Egy bájt = 1 számjegy
- 8 bit alsó 4 bitje a szám, felső 4 bitje a zónabit
- Pakolt
- 1 bájt = 2 számjegy
- az első bájt az előjel, utána BCD bájtok.
- Intel: 10 bájt, 18 helyiérték
BCD pontosság jellemzői
- Fix/változó hosszúság
- Hossz jelzése
- Max hosszúság architektúra függő
- Előjelek kezelése (bcd szám végén, és elején is lehet)
- 4 bit (zónázott)
- 8 bit (pakolt)
- Előjel ábrázolása
- F – 1111, előjel nélküli szám
- Pozitív, ha az első az decimális A, C, E, vagy F, negatív, ha B vagy D
- másik megoldás, ha a + és – ASCII kódját használjuk.
A BCD összeadó
Műveletvégzés:
Összeadás:
- fel kell ismernünk az érvénytelen tetrádokat és ezeknél korrekciót kell végrehajtani
- az érvénytelen tetrádok esetén kivonunk belőle 10D-et (10-et decimálisan) és lépünk egy 10-es átvitelt pl.: 15D = 1111B = (érvénytelen ezért levonunk 10-et, majd léptetjük) = 0001 0101BCD
A BCD összeadó megvalósítása
3 fokozat:
- Összeadó fokozat
- Érvénytelen tetrád felismerő fokozat
- Korrekciós fokozat
BCD kód érvénytelen/érvényes tetrádok
Érvénytelen tetrádok felismerése:
Az első bit helyértékén 1-es áll, ÉS a második vagy a harmadik bit helyértéken egyes áll.
BCD összeadó rajza
Négy db teljes összeadó (összeadja bitenként)
s – kimenetek, c – átvitel kimenet.
Korrekciós részen: fél összeadók is, korrigáljuk az átvitelt BCD összeadó megvalósítása: univerzális/specifikus műveletvégzővel
Előnye: teljesen pontos (hiszen kódolunk és nem átváltunk, mint lebegőpontosnál kerekítünk)
Hátránya: bonyolultabb, komplexebb a hardver, kicsit tovább tart (de ez ma már elhanyagolható), valamint több memóriát foglal