Algebarske operacije Binarno deljenje Najkompleksnija od etiri osnovne
Algebarske operacije Binarno deljenje • Najkompleksnija od četiri osnovne operacije, samim tim i najdugotrajnija • Veliki broj različitih algoritama. • Za dati deljenik N i delitelj D deljenje daje dva rezultata, količnik Q i ostatak R • Deljenje može da se posmatra kao inverzna funkcija množenju
Algebarske operacije Binarno deljenje • Po mnogo čemu se razlikuje od množenja • Najbitnije, kod množenja mogu da se parcijalni proizvodi generišu paralelno, dok se kod deljenja svaki bit količnika određuje u sekvencijalnoj proceduri pokušaja i pogrešaka
Algebarske operacije Binarno deljenje • Mnogi procesori deljenje posmatraju kao inverzno množenje • Ovo dovodi do toga da se pretpostavlja da je deljenik N duplo širi od količnika Q i delitelja D. Zato se mora proveravati da li je količnik u validnom opsegu (da nema prekoračenja)
Algebarske operacije Binarno deljenje • U FPGA opštiji pristup, sa pretpostavkom • Ovo znači da su količnik i deljenik, odnosno ostatak i delitelj iste bitske širine • Na ovaj način nema potrebe za proverom ima li prekoračenja kod količnika, osim za N=0.
Algebarske operacije Binarno deljenje • Postavlja se pitanje kako postupati sa označenim brojevima. • Najjednostavnije konvertovati deljenik i delitelj u neoznačene brojeve, i posebno odrediti znak. • Neki algoritmi mogu da direktno rade sa označenim brojevima.
Algebarske operacije Binarno deljenje • Kako se odnose znak količnika i ostatka? • U većini hw/sw sistema imaju isti znak (u PASCALu recimo ne) • Ovo je u redu • Ali ipak
Algebarske operacije Binarno deljenje
Algebarske operacije Binarno deljenje • Linearna konvergencija se kategorizuje prema dozvoljenim vrednostima za cifre količnika • Restoring, Nonperforming, CORDIC • Nonrestoring • SRT
Algebarske operacije Binarno deljenje • Moguće je svaki od ovih algoritama proširiti na veću osnovu, recimo uopšteni SRT
Algebarske operacije Binarno deljenje • Kvadraturna konvergencija • Deljenje pomoću recipročne vrednosti delitelja – Recipročna vrednost se računa pomoću Njutnovog algoritma za nalaženje nula • Anderson et al algoritam množi deljenik i delitelj istim faktorom i tako konvergira D->1, odnosno N->Q • Ovi algoritmi ne generišu ostatak. • Broj iteracija je manji, ali je svaka iteracija komplikovanija
Algebarske operacije Binarno deljenje, linearna konvergencija • Najočigledniji je metod “ručno deljenje” primenjen na binarnu aritmetiku. – Delitelj D se poravna (pomeri ulevo za <širina deljenika – 1 > mesta) – U registar ostatka R se učita deljenik N. – Poravnati delitelj D se oduzima od ostatka R, i rezultat smešta u ostatak R – Ako je ostatak R negativan ponovo se dodaje (restore) poravnati delitelj D , a LSB količnika Q postavlja na nulu. Ako je ostatak R pozitivan nema korekcije, i LSB količnika Q postaje 1. – Poravnati delitelj D se pomera jedno mesto udesno, a količnik Q ulevo
Algebarske operacije Binarno deljenje, linearna konvergencija
Algebarske operacije Binarno deljenje, linearna konvergencija • Glavni nedostatak restoring algoritma je dva koraka (stanja) za određivanje jednog bita količnika • Nonperforming algoritam to radi u jednom koraku, ali je komplikovaniji, samim tim i sporiji
Algebarske operacije Binarno deljenje, linearna konvergencija • Sličan pristup, ali bez usporavanja je nonrestoring algoritam. • Ideja: u restoring algoritmu se računa novi ostatak. • Ako je veći od nule u sledećem koraku se oduzima delilac poremen ulevo, u stvari • Ako je manji od nule prvo se ponovo dodaje i potom oduzima. Ukupno se dodaje
Algebarske operacije Binarno deljenje, linearna konvergencija • Nakon oduzimanja poravnatog deljenika od ostatka – Ako je ostatak pozitivan oduzima se – Ako je ostatak negativan dodaje se • Sada biti količnika mogu imati vrednost • Minus jedan se može kodovati kao nula, i onda je prebacivanje u komplement dvojke trivijalno • Potrebna je samo još korekcija ostatka, ako je r < 0
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Deljenje množenjem sa recipročnom vrednošću delitelja • Za male bitske širine recipročna vrednost se može računati pomoću LUT. • Opšta procedura se zasniva na Njutnovom metodu za nalaženje nula • Definiše se funkcija
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Ako se definiše algoritam takav da tada sledi • Korišćenjem tangente za računanje sledeće iteracije se dobija
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Ovaj algoritam konvergira za bilo koje početno D, ali dosta brže ako se D normalizuje tako da je • Tada se može uzeti brza konvergencija da bi se dobila
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Primer za računanje Kako prve iteracije proizvode mali broj bita, može se koristiti LUT za njihovo računanje Svega pet iteracija potrebno da se dostigne 32 -bitna preciznost! Kod linearne konvergencije mnogo više
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Njutnov algoritam ima dva nedostatka – Dva množenja prilikom svake iteracije su sekvencijalna – Greška kvantizacije prilikom množenja se akumulira zbog sekvencijalne prirode množenja, što se u principu rešava dodavanjem zaštitnih bitova
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Anderson at al algoritam koristi dva paralelna množenja u svakoj iteraciji • Deljenik i delitelj se oba množe istim faktorima za koje važi
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Algoritam: – Normalizovati deljenik N i delitelj D tako da je D blisko jedinici – Inicijalizovati – Ponavljati dok se ne postigne željena preciznost
Algebarske operacije Binarno deljenje, kvadratna konvergencija • Algoritam sebe ispravlja, greške u kvantizaciji se potiru pošto se i delitelj i deljenik množe istim faktorom.
Algebarske operacije Binarno deljenje, kvadratna konvergencija • IP deljenje optimalan broj pipeline nivoa = – lpm_divide, Altera broj bitova
Algebarske operacije Aritmetika sa pokretnom tačkom • Konverzija iz fiksne (2 C) u pokretnu tačku – Ako je znak broja u fiksnoj tački 1 (negativan broj), potrebno je izvršiti inverziju i tako dobiti nenormalizivanu mantisu – Radi normalizacije mantise na 1. m, prvo se određuje broj vodećih nula (u petlji) nakon čega se mantisa pomera ulevo, sve dok prva jedinica ne izađe iz registra mantise – Eksponent se računa kao zbir ofseta i broja celobrojnih bitova u fiksnoj tački umanjen za broj vodećih nula u nenormalizovanoj mantisi
Algebarske operacije Aritmetika sa pokretnom tačkom • Konačno se vrši nadovezivanje znaka, eksponenta i normalizovane mantise u jedinstven broj ukoliko broj u fiksnoj tački nije nula. Ako jeste nula, broj u pokretnoj tački se direktno postavlja na nulu.
Algebarske operacije Aritmetika sa pokretnom tačkom • Konverzija iz pokretne u fiksnu (2 C) tačku – Najpre korekcija ofseta u eksponentu – Levo od tačke se stavlja skrivena jedinica – Ukoliko je eksponent prevelik ili premali rezultat se postavlja na maksimum ili na nulu – Ukoliko je eksponent u dozvoljenom opsegu vrši se pomeranje ulevo ili udesno, u zavisnosti od znaka eksponenta – Konačno se vrši kornverzija iz formata znak + apsolutna vrednost u 2 C
Algebarske operacije Aritmetika sa pokretnom tačkom • Množenje – Najjednostavnija operacija – Treba voditi računa o opsegu eksponenta (nula i beskonačno) – Može biti potrebna korekcija mantise i eksponenta, jer
Algebarske operacije Aritmetika sa pokretnom tačkom • Sabiranje – Potrebna je provera da li je drugi operand nula, ako ili – Nova mantisa bi trebalo da se normalizuje, a eksponent da se uskladi sa normalizacijom mantise
Algebarske operacije Aritmetika sa pokretnom tačkom • Deljenje – Može biti potrebna korekcija mantise i eksponenta, jer
Algebarske operacije Aritmetika sa pokretnom tačkom • Računanje recipročne vrednosti – Zgodno za deljenje – Ukoliko širina mantise nije prevelika, može se koristiti LUT. Opseg recipročne mantise je – Potrebna je normalizacija mantise/eksponenta, osim za mantisu 1. 0
Algebarske operacije MAC i suma proizvoda (SOP) • DOS algoritmi su MAC intenzivni, primer konvolucija – L množenja i (L– 1) sabiranja po odbirku. – Potreban N x N množač (proizvod širok 2 N bita) povezan sa akumulatorom. – Akumulator bi trebalo da ima dodatne bite kako se ne bi javilo prekoračenje (K bita obezbeđuje 2^K sabiranja)
Algebarske operacije MAC i suma proizvoda (SOP)
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Važna FPGA tehnologija, intenzivno korišćena za računanje SOP – U mnogim DOS primenama nisu neophodni množači opšte namene. Ako su koeficijenti filtra unapred poznati, onda parcijalni proizvodi postaju množenje konstantom. Ovo je preduslov za DA dizajn.
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Neoznačena DA:
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Funkcija LUT sa N ulaza se može realizovati preko
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Označena DA: – Opcije • Akumulator sa sabiranjem i oduzimanjem • ROM sa jednim dodatnim ulazom (dvostruka veličina memorije)
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Ako je broj koeficijenata N dosta velik, tako da je broj lokacija u tabeli velik, mogu se koristiti parcijalne tabele i sabrati njihovi izlazi.
Algebarske operacije MAC i suma proizvoda (SOP) • Distribuirana aritmetika – Brzina se može povećati nauštrb složenosti Istovremena obrada više bitova
Algebarske operacije CORDIC algoritam • Transcedentne funkcije se uvek mogu računati pomoću Tejlorovog polinoma – Množenja, sabiranja. . . • Alternativno, CORDIC (Coordinate rotation digital computer) – mnoooogo efikasniji
Algebarske operacije CORDIC algoritam • Tri moguća moda – Cirkularni – Linearni – Hiperbolički • Dva moguća pravca rotiranja – Vektoring • Početni vektor se rotira tako da na kraju leži na apcisi, to jest koordinata je nula. – Rotacija • Početni vektor se rotira tako da je krajnji sadržaj registra ugla Z nula
Algebarske operacije CORDIC algoritam • Ugao rotacije je izabran tako da se svaka iteracija sastoji od sabiranja i pomeranja • Algoritam: – Vektoring – Rotacija
Algebarske operacije CORDIC algoritam • Svi modovi na jednom mestu
Algebarske operacije CORDIC algoritam • Arhitektura 1 – mašina stanja barrel shifter-i su skupi
Algebarske operacije CORDIC algoritam • Arhitektura 1 – mašina stanja više ciklusa
Algebarske operacije CORDIC algoritam • Arhitektura 2 – protočni procesor
Algebarske operacije Izračunavanje specijalnih funkcija pomoću MAC • Nedostatak CORDIC algoritma je to što je za veliku preciznost potreban veliki broj iteracija – velika zadrška • Zbog postojanja ugrađenih množača u FPGA, korišćenje pol. aproksimacije je postalo moguće • Taylorov razvoj • Međutim ovaj razvoj za neke funkcije ne konvergira dovoljno brzo • Zato se koristi Čebiševljeva aproksimacija
Algebarske operacije Čebiševljeva aproksimacija • Bazira se na Čebiševljevom polinomu – Definisan u opsegu • Mada izgleda da su u pitanju trigonometrijske funkcije, u stvari iterativno pravilo
Algebarske operacije Čebiševljeva aproksimacija • Aproksimacija se zapisuje kao
Algebarske operacije Čebiševljeva aproksimacija • Poređenje Čebiševa i Tejlora • Za zadatu preciznost, Čeb. aproksimacija zahteva dosta manji broj koeficijenata • Čebiševljeva aproksimacija je “optimalna” i ako se N zameni sa M < N • Čeb. ap. je vrlo blizu minimax aproksimaciji
Algebarske operacije Čebiševljeva aproksimacija • Može se zapisati i kao • Ovaj oblik se dobija direktnom zamenom Čeb. polinoma u • Mora da se pazi: – Ovakav oblik Čebiševljeve aproksimacije NIJE “optimalan” ako se N zameni sa M < N u prvom izrazu, već se MORA prvo izvršiti zamena u drugom izrazu, pa ponovo izvesti prvi
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Klenšoova formula (Clenshaw)
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Hornerova šema • Jedno sabiranje manje po iteraciji
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Primer u opsegu • Van ovog opsega se može koristiti identitet • Koeficijenti za 8 -bitnu preciznost, N = 6 • Klenšoova formula
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Kada je potrebna veća preciznost, uzimamo više koeficijenata. Primer za 16 -bitnu preciznost • Poređenje sa Tejlorovim razvojem • Vidi se da Tejlorovi koeficijenti sporije konvergiraju
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Generalno pitanje je kako koristiti Čeb. aproksimaciju za različite opsege ulazne promenljive? • u opsegu , smena , prevodi u opseg • Na kraju inverzna smena
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Primer • Argument se obično definiše za I kvadrant • Za ostale kvadrante se koriste identiteti • Zgodno je izvršiti normalizaciju i onda • 16 -bitna preciznost
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Kosinus ili preko sinusa ili direktno • Primer eksponencijalna funkcija • Tejlorov razvoj je ovde malo bolji nego inače • Čeb. apropksimacija, 16 -bitna preciznost,
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Ako je ulaz van opsega , koristi se , gde • Nakon izračuvavanja eksponencijalne funkcije potrebno nekoliko k kvadriranja • Za x negativno može da se nađe odvojena aproksimacija, ili da se iskoristi
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Primer , za • Za 16 -bitnu preciznost • Za 8 -bitnu preciznost
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Kada argument nije u opsegu koristi se – Dodatno množenje i sabiranje • Kada se želi logaritam za neku drugu osnovu – Ovde potrebno dodatno deljenje, nekad bolje razviti novu aproksimaciju
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Primer za • 16 -bitna preciznost • 8 -bitna preciznost
Algebarske operacije Izračunavanje Čebiševljeve aproksimacije • Kada je argument van opsega koristi se
- Slides: 63