• Nie Znaleziono Wyników

Układy arytmetyki resztowej w FPGA

Algorytm 10 Algorytm automatycznej generacji kompletnych jednostek arytmetycznych Dane wej´sciowe: M ∗, l

4.4 Procesor wspomagaj ˛ acy obliczenia w AOG

4.4.2 Struktura procesora

Na rys. 4.29 przedstawiono schemat proponowanej struktury procesora wspomagaj ˛acego obliczenia w AOG. Struktura ta jest modyfikacj ˛a architektury opisanej w [Tom05c]. Podstawowym elementem procesora jest zestaw jednostek obliczeniowych JO zawieraj ˛acych układy mno˙zenia akumulacyjnego wraz z zestawem rejestrów oraz automatem steruj ˛acym. Automat steruj ˛acy zrealizowano jako jed-nostk˛e programowaln ˛a pozwalaj ˛ac ˛a na implementacj˛e ró˙znorodnych zada´n. Jednostki obliczeniowe s ˛a u˙zywane jako podstawowe elementy implementuj ˛ace algorytmy wyznaczania punktu przeci˛ecia prostej z trójk ˛atem oraz wspomagania rozwi ˛azywania układów równa´n o´swietlenia.

W algorytmie wyznaczania punktu przeci˛ecia zachodzi konieczno´s´c wyznaczenia ilorazu, dlatego te˙z dla kilku jednostek obliczeniowych przewidziano potokowy układ dzielenia. W zale˙zno´sci od stosunku wydajno´sci jednostek obliczeniowych do wydajno´sci jednostki dzielenia liczba jednostek dzielenia mo˙ze by´c dowolnie zmieniana.

Ka˙zda jednostka obliczeniowa wyposa˙zona jest w prosty automat steruj ˛acy zawieraj ˛acy zestaw zaimplementowanych algorytmów. Za wybór odpowiedniego z nich oraz dostarczenie wymaganych danych odpowiedzialna jest jednostka zarz ˛adzania obliczeniami JZO. Jednostka zarz ˛adzaj ˛aca jest tak-˙ze zrealizowana w postaci programowalnego automatu wyposa˙zonego w dodatkowy plik rejestrów. Wszystkie JO s ˛a poł ˛aczone z JZO za pomoc ˛a jednej magistrali umo˙zliwiaj ˛acej transmisj˛e w trybie rozgłaszania i adresowania bezpo´sredniego.

Pami˛e´c podr˛eczna JO JO JO FIFO JO D zi el en ie 5 4 / 3 6 b it ó w Sterownik pami˛eci i sprz˛eg PCI/AGP JZO JPD

Rysunek 4.29. Struktura procesora.

Wyznaczenie punktu przeci˛ecia konkretnego promienia z odpowiednim elementem sceny wy-maga dwóch kroków. Pierwszym z nich jest wybór potencjalnych kandydatów spo´sród wszystkich elementów wyst˛epuj ˛acych na scenie, drugim krokiem jest wyznaczenie punktów przeci˛e´c wybranych elementów z promieniem i wybór spo´sród nich punktu najbli˙zszego obserwatora. Za pomoc ˛a JO re-alizowany jest krok drugi, natomiast wybór kandydatów dokonywany jest w jednostce przegl ˛adania drzewa JPD.

Zaimplementowanym algorytmem przegl ˛adania drzew jest algorytm zaprezentowany w pracy [HKBZ97]. Jego cech ˛a szczególn ˛a jest odpowiednio dobrana kolejno´s´c działa´n pozwalaj ˛aca w 75% przypadków na wybór odpowiedniego w˛ezła drzewa na podstawie wył ˛acznie prostych porówna´n dwóch liczb. W pozostałych 25% przypadków konieczne jest obliczenie punktu przeci˛ecia promienia z płaszczyzn ˛a dziel ˛ac ˛a dany w˛ezeł. Z powodu ograniczonych zasobów sprz˛etowych jednostka prze-gl ˛adania drzewa zawiera wył ˛acznie zestaw komparatorów pozwalaj ˛acych na wykonanie porówna´n współrz˛ednych. W przypadku konieczno´sci wyznaczenia punktu przeci˛ecia zadanie to jest

realizowa-ne przez jednostki obliczeniowe.

W pracy [Sch06] podano, ˙ze w implementacji algorytmu ´sledzenia promieni liczba jednostek przegl ˛adania drzewa powinna by´c wi˛eksza od liczby jednostek wyznaczania przeci˛e´c. W rzeczywi-sto´sci z rys. 2.26 na str. 42 w pracy [Sch06] wynika, ˙ze stosunek koniecznych do wykonania operacji przegl ˛adania drzewa do operacji wyznaczenia punktu przeci˛ecia zale˙zy od przyj˛etej maksymalnej gł˛eboko´sci drzewa i zło˙zono´sci sceny. Struktura z rys. 4.29 zawiera tak ˛a sam ˛a liczb˛e JPD, jak JO. Uzasadnieniem takiej decyzji jest kilka argumentów. Po pierwsze, JPD s ˛a układami uproszczonymi, a wi˛ec ci˛e˙zar oblicze´n przejmuj ˛a i tak jednostki obliczeniowe. Jednostka przegl ˛adania drzewa jest wy-ł ˛acznie układem dodatkowym o niskim koszcie zło˙zonym z prostego automatu steruj ˛acego i zestawu komparatorów. Po drugie, struktura z rys. 4.29 jest rozwi ˛azaniem bardziej elastycznym, poniewa˙z JO s ˛a wykorzystywane tak˙ze w implementacji algorytmów opartych o metody energetyczne. Po trzecie, zwi˛ekszenie liczby jednostek testowania przeci˛e´c w stosunku do JPD pozwala na zmniejszenie gł˛ebo-ko´sci drzewa, co bezpo´srednio przekłada si˛e na łatwo´s´c jego tworzenia i mo˙ze upro´sci´c generowanie obrazów dynamicznych.

Komunikacja pomi˛edzy JPD a JZO zrealizowana jest za pomoc ˛a dwóch kanałów. Pierwszy z nich jest kanałem jednokierunkowym z buforem FIFO (ang. First In First Out), drugi zawiera magistral˛e dwukierunkow ˛a. Pierwszy kanał jest wykorzystywany do przekazywania współrz˛ednych trójk ˛atów, dla których nale˙zy wykona´c testy przeci˛e´c z promieniami. Zadaniem drugiego kanału jest szybka ko-munikacja z pomini˛eciem kolejki FIFO umo˙zliwiaj ˛aca natychmiastowe obliczenie punktu przeci˛ecia promieni z płaszczyzn ˛a dziel ˛ac ˛a w˛ezeł drzewakd.

Zarówno zestaw jednostek obliczeniowych, jak i blok przegl ˛adania drzewa wymagaj ˛a danych z pami˛eci zewn˛etrznej. W zwi ˛azku z tym konieczny jest dodatkowy blok sterownika pami˛eci oraz układ pozwalaj ˛acy na komunikacj˛e z systemem nadrz˛ednym. Poza tym przewidziano zastosowanie pami˛eci podr˛ecznej, poniewa˙z w przypadku implementacji sprz˛etowej algorytmu ´sledzenia promieni jej stosowanie pozwala znacznie zmniejszy´c nat˛e˙zenie komunikacji z pami˛eci ˛a zewn˛etrzn ˛a. Dokładne struktury sterownika pami˛eci i sprz˛egu PCI/AGP nie zostały opracowane ze wzgl˛edu na istnienie wielu gotowych rozwi ˛aza´n w tym zakresie, tak˙ze komercyjnych.

Układ przedstawiony na rys. 4.29 umo˙zliwia wykorzystanie mo˙zliwo´sci równoległego przetwa-rzania w celu zwi˛ekszenia wydajno´sci na dwa sposoby. Zwi˛ekszenie liczby JO zarz ˛adzanych przez pojedyncz ˛a JZO pozwala na zwi˛ekszenie liczby promieni przetwarzanych w ramach pojedynczej wi ˛azki. Równocze´snie mo˙zna doda´c dodatkowe zestawy składaj ˛ace si˛e z jednostek obliczeniowych

sterowanych przez JZO oraz dodatkowych JPD, których zadaniem b˛edzie prowadzenie oblicze´n dla kolejnych wi ˛azek promieni. Jedynymi ograniczeniami liczby takich bloków s ˛a dost˛epne zasoby sprz˛e-towe oraz stopie´n komplikacji sterownika pami˛eci i pami˛eci podr˛ecznej.

Podstawowym elementem w prezentowanym procesorze jest zestaw JO wraz z JZO. Blok ten jest elementem odpowiedzialnym za przeprowadzanie oblicze´n w algorytmach wyznaczania punktu prze-ci˛ecia prostej z trójk ˛atem oraz rozwi ˛azywania układu równa´n o´swietlenia. Pozostałe jednostki proce-sora s ˛a albo układami wspomagaj ˛acymi o prostej strukturze, albo standardowymi jednostkami, np.: sterownik pami˛eci czy pami˛e´c podr˛eczna. Poni˙zej zostan ˛a opisane wył ˛acznie JO i JZO oraz przykłady ich wykorzystania do implementacji wyznaczania punktu przeci˛ecia i rozwi ˛azywania układu równa´n o´swietlenia. Tak˙ze prototypowa implementacja została ograniczona do dwóch wspomnianych jedno-stek.

Jednostka obliczeniowa JO

Podstawowym zadaniem jednostki obliczeniowej jest implementacja algorytmu wyznaczania punktu przeci˛ecia promienia z trójk ˛atem oraz wspomaganie procesu rozwi ˛azywania równa´n o´swietlenia me-todami iteracyjnymi. Poniewa˙z podstawowymi operacjami arytmetycznymi w obu tych zadaniach s ˛a ró˙zne kombinacje mno˙zenia i dodawania, s ˛a one realizowane z u˙zyciem układu mno˙zenia akumula-cyjnego. Jednostka obliczeniowa składa si˛e z jednostki mno˙zenia akumulacyjnegok×2k bitów, pliku

20 rejestrów3k–bitowych, zestawu multiplekserów podaj ˛acych odpowiednie dane na wej´scia jednost-ki MAC oraz programowalnego układu steruj ˛acego. Schemat poł ˛acze´n układu MAC, multiplekserów i pliku rejestrów pokazano na rys. 4.30. Zastosowanie wieloportowego pliku rejestrów pozwala na dostarczenie kompletu danych dla układu MAC w ka˙zdym cyklu zegarowym. Dzi˛eki temu np.: im-plementacja algorytmu testowania punktu przeci˛ecia promienia z trójk ˛atem według pomysłu z pracy [MT97] wymaga jedynie 27 instrukcji.

Przepływ danych w strukturze z rys. 4.30 jest sterowany przez prosty automat steruj ˛acy. Automat ten jest zrealizowany jako jednostka programowalna z programem zapisanym w niewielkiej pami˛e-ci ROM. List˛e zaimplementowanych rozkazów przedstawiono w tabeli 4.6. Wi˛ekszo´s´c rozkazów to rozkazy arytmetyczne dobrane w sposób umo˙zliwiaj ˛acy efektywn ˛a implementacj˛e algorytmu wyzna-czania punktu przeci˛ecia promienia z trójk ˛atem.

Wynik ka˙zdego rozkazu z tab. 4.6 jest zapisywany w rejestrze oznaczonym R[rez]. Argumentami mog ˛a by´c dwa rejestry ró˙zne od rejestru wynikowego oznaczone jako R[dod] i R[mnoz] oraz dana z

R[19] 54 36 18 54 ,,1’’ ,,0’’ ,,1’’ 18 54 36 54 18 54 R[0] R[1]

Rysunek 4.30. Struktura układu arytmetycznego jednostki obliczeniowej. Dane wej´sciowe s ˛a repre-zentowane jako wektory 18–bitowe w kodzieU2.

magistrali zewn˛etrznej, lub trzy rejestry, z których jeden jest jednocze´snie miejscem przechowywania wyniku. Rozkaz RDWR oznacza przej´scie do stanu, w którym jednostka zarz ˛adzaj ˛aca ma mo˙zliwo´s´c zapisu i odczytu poszczególnych rejestrów JO.

Tabela 4.6. Lista rozkazów układu steruj ˛acego jednostk ˛a obliczeniow ˛a

Rozkaz Operacja

RDWR zapis/odczyt pliku rejestrów

MADD R[res]⇐ dana × R[mnoz] + R[dod]

MUL R[res]⇐ dana × R[mnoz]

MSUB R[res]⇐ dana × R[mnoz] − R[dod]

INV_MSUB R[res]⇐ − (dana × R[mnoz] ) + R[dod]

INV_SUB R[res]⇐ − dana + R[dod]

MUL_REG R[res]⇐ R[dod] × R[mnoz]

ACC_MUL_REG R[res]⇐ R[dod] × R[mnoz] + R[res]

podzie-lona jest za pomoc ˛a rejestrów na trzy etapy. Na schemacie nie zaznaczono rejestrów znajduj ˛acych si˛e wewn ˛atrz układu mno˙zenia akumulacyjnego ze wzgl˛edu na ch˛e´c zachowania czytelno´sci rysun-ku. Poza tym, dokładne umiejscowienie tych rejestrów zale˙zy od przyj˛etej struktury układu MAC i zało˙zonej szeroko´sci słowa. Cała JO jest układem potokowym o gł˛eboko´sci potoku równej trzy, tak wi˛ec ka˙zda z instrukcji zamieszczonych w tab. 4.6 wymaga trzech cykli zegara. Dalsze zwi˛ekszanie gł˛eboko´sci potoku jest nieopłacalne ze wzgl˛edu na wyst˛epowanie du˙zej liczby konfliktów danych w implementowanych algorytmach.

Dodatkowym elementem JO jest zbiór rejestrówk–bitowych oraz komparator k–bitowy u˙zywane

w algorytmie ´sledzenia promieni do wyboru i zapami˛etania współrz˛ednych najbli˙zszego punktu prze-ci˛ecia z trójk ˛atem. Zadaniem tych elementów jest porównanie wyniku zwróconego przez jednostk˛e dziel ˛ac ˛a z najmniejszym wynikiem wytworzonym dotychczas. Je´sli nowy wynik opisuje punkt bli˙z-szy, dotychczas zapami˛etana warto´s´c jest zast˛epowana rezultatem bie˙z ˛acym.

Jednostka zarz ˛adzania obliczeniami JZO

Jednostka zarz ˛adzania obliczeniami realizuje szereg zada´n zwi ˛azanych ze sterowaniem i komunika-cj ˛a z jednostkami obliczeniowymi. Składa si˛e z zestawu rejestrów oraz prostego programowalnego automatu steruj ˛acego, którego instrukcje stanowi ˛a głównie rozkazy transmisji danych. Komunikacja pomi˛edzy JZO a JO mo˙ze by´c przeprowadzona w dwóch trybach. W trybie rozgłaszania wszystkie JO operuj ˛a na danych dostarczonych przez JZO, np.: zapisuj ˛a t˛e sam ˛a warto´s´c do rejestru o tym samym adresie. W trybie adresowania indywidualnego dane przesyłane s ˛a pomi˛edzy JZO a pojedyncz ˛a JO. Pozostałe JO nie mog ˛a w tym czasie korzysta´c z magistrali komunikacyjnej.

Pojedyncza JZO mo˙ze zarz ˛adza´c dowoln ˛a liczb ˛a JO. Poniewa˙z jednak komunikacja w trybie ad-resowania indywidualnego uniemo˙zliwia korzystanie z magistrali przez pozostałe JO, liczba JO ste-rowanych przez JZO nie powinna by´c zbyt du˙za.

Poza zarz ˛adzaniem JO, zadaniem JZO jest tak˙ze komunikacja z jednostk ˛a przegl ˛adania drzewa oraz pami˛eci ˛a zewn˛etrzn ˛a. W algorytmie ´sledzenia promieni JZO pobiera dane z JPD na dwa sposo-by: z u˙zyciem bufora FIFO lub z jego pomini˛eciem (poł ˛aczenie bezpo´srednie). Decyzja o priorytecie poszczególnych kanałów podejmowana jest przez JZO, co pozwala na efektywne zarz ˛adzanie za-sobami obliczeniowymi JO. Poniewa˙z zasoby sprz˛etowe wymagane przez JO stanowi ˛a wi˛ekszo´s´c zasobów całego układu, niezmiernie istotne jest zapewnienie ci ˛agłej ich pracy.