OPTYMALIZACJA ARCHITEKTURY MIKROKONTROLERÓW PRZEZNACZONYCH DO REALIZACJI W UKŁADACH FPGA Oleg Maslennikow*, Anatolij Sergyienko**, Mirosław Łącki* Politechnika Koszalińska, Wydział Elektroniki, Ul. Partyzantów 17, 75-411 Koszalin email: oleg@ie.tu.koszalin.pl Politechnika Kijowska, Pr. Pobedy 37, Kijów email: aser@comsys.ntu-kpi.kiev.ua Streszczenie W pracy proponuje się sposób optymalizacji architektur mikrokontrolerów przeznaczonych do implementacji w układach reprogramowalnych FPGA. Sposób bazuje się na dopasowywaniu architektury mikrokontrolera do jego programu wykonawczego. Początkowa architektura mikrokontrolera zawiera zbiór wszystkich bloków funkcyjnych przypisanych do określonych podzbiorów rozkazów i adresów pamięci. Natomiast struktura bloku sterowania mikrokontrolera i struktura jednostki arytmetyczno-logicznej są rozproszone. Model tej architektury zostaje opisany w języku VHDL z możliwością odłączenia poszczególnych bloków razem z odpowiednimi jednostkami sterującymi. Podczas automatycznej analizy programu wykonawczego mikrokontrolera określa się, jakie rozkazy i adresy pamięci ten program nie wykorzystuje. Otrzymana informacja jest wejściową dla programu-kompilatora zoptymalizowanej architektury, który w podstawowym modelu VHDL mikrokontrolera eliminuje niewykorzystywane bloki i komórki pamięci. Zaletami proponowanego sposobu są uproszczenie architektury mikrokontrolera implementowanego w FPGA, zwiększenie częstotliwości pracy systemu i energooszczędność, przy zachowaniu pełnej kompatybilności programowej z oryginalnym mikrokontrolerem. 1. WPROWADZENIE Obecnie technologia opracowania systemów obróbki danych umieszczonych całkowicie w jednym układzie VLSI (ang. SoC - system-on-chip) otrzymuje coraz szerokie rozpowszechnienie. Realizacja takich systemów w układach reprogramowalnych FPGA (ang. field programmable gate array) pozwala skrócić etapy ich projektowania, produkowania i testowania, oraz zmniejszyć ich cenę [1]. Jedną z podstawowych zasad projektowania SoC jest wykorzystanie standardowych bloków obliczeniowych IP-cores wybieranych ze specjalnych bibliotek (ang. IP-cores intellectual property cores). Główną cechą takich bloków jest możliwość ich dopasowywania do projektu systemu, co pozwala minimalizować złożoność sprzętową całego projektu i przy następnej realizacji jego w układzie FPGA zmniejszyć ilość wykorzystanych komórek CLB (ang. configurable logical block) lub bloków slices. Większość nowoczesnych systemów sterowania zbudowane są w oparciu o mikrokontrolery (MK), wśród których najbardziej rozpowszechnione są 8-bitowe mikrokontrolery z rodziny i8051. Z tego powodu IP-cores z architekturą tego mikrokontrolera są często wykorzystywane w SoC [2]. Dane statystyczne jednak świadczą, że w zwykłym mikrokontrolerze tej rodziny (których są miliardy na świecie) 50% wszystkich tranzystorów nigdy się nie przełączają, natomiast 10% tranzystorów przełączane są w ciągu 90% czasu pracy mikrokontrolera. Przyczyna tego tkwi w tym, że mikrokontrolery przeznaczone są do wykonania określonych funkcji obliczeniowych i sterujących, przechowywanych w postaci odpowiednich programów wykonawczych w pamięci MK. Ponieważ zapisany do pamięci program wykonawczy zwykle nie zmienia się w ciągu całego cyklu życiowego mikrokontrolera, najbardziej efektywną architekturą MK będzie ta, która jest dopasowana
wyłącznie do wykonania określonego programu wykonawczego. To oznacza, ze system rozkazów i struktura mikrokontrolera powinny być wyspecjalizowane. W związku z tym, w pracy proponuje się sposób optymalizacji (inaczej mówiąc - właściwego konfigurowania) architektur mikrokontrolerów przed ich implementacją w układ FPGA, bazujący się na dopasowywaniu je do odpowiednich programów wykonawczych. Początkowa architektura mikrokontrolera zawiera zbiór bloków funkcyjnych przypisanych do określonych podzbiorów rozkazów i adresów pamięci. Natomiast struktura bloku sterowania mikrokontrolera i struktura jednostki arytmetyczno-logicznej są rozproszone. Model tej architektury zostaje opisany w języku VHDL z możliwością odłączenia poszczególnych bloków. Podczas automatycznej analizy programu wykonawczego mikrokontrolera określa się, jakie rozkazy i adresy pamięci ten program nie wykorzystuje. Otrzymana informacja jest wejściową dla programu-kompilatora zoptymalizowanej struktury, który w podstawowym modelu VHDL mikrokontrolera eliminuje niewykorzystywane bloki i fragmenty pamięci. Zaletami proponowanego sposobu są uproszczenie architektury mikrokontrolera implementowanego w FPGA, ewentualne zwiększenie częstotliwości pracy systemu i energooszczędność, przy zachowaniu pełnej kompatybilności programowej z oryginalnym mikrokontrolerem. 2. SPOSOBY OPTYMALIZACJI ZŁOŻONOŚCI SPRZĘTOWEJ MK Ponieważ mikrokontrolery składają się z różnego rodzaju układów kombinacyjnych i układów pamięci, to zwykle ich złożoność sprzętową optymalizują za pomocą minimalizacji logicznej części kombinacyjnej oraz zmniejszenia liczby rejestrów i objętości pamięci danych (RAM) i programów (ROM). Istnieją kilka znanych metod optymalizacji skierowanych na wybór właściwego systemu rozkazów, odpowiednich trybów adresacji, optymalizacji automatów sterujących itd. Jednak współczesna technologia projektowania SoC ma swoją specyfikę, co wymaga opracowania nowych metod optymalizacji. Zgodnie z tą technologią, optymalizację logiczną modelu systemu wykonuje kompilator z języka opisu sprzętu (np. z języka VHDL lub Verilog) przed jego implementacją w układzie reprogramowalnym. Dlatego dodatkowa optymalizacja funkcji logicznych zwykle nie daje znaczących wyników. W pracy [3] proponuje się sposób minimalizacji objętości pamięci programów mikrokontrolera za pomocą kompresji przechowywanej w niej informacji. Zastosowanie takiego sposobu pozwala zmniejszyć złożoność sprzętową MK na 7-20%. Najbardziej efektywnym podejściem do optymalizacji złożoności sprzętowej mikrokontrolerów jest opracowanie wyspecjalizowanego systemu jego rozkazów. Taka optymalizacja może być skierowana nie tylko na optymalizację algorytmów obliczeniowych i sterujących przekształcanych potem w odpowiednie programy wykonawcze MK, lecz również na uproszczenie złożoności sprzętowej architektur MK [4]. Jednak, przy takim podejściu powstają trudności powiązane z tworzeniem oprogramowania dla wyspecjalizowanego mikrokontrolera, ponieważ system jego rozkazów jest niestandardowym. Mimo istnienia kompilatorów z możliwością dostrajania do dowolnej architektury mikrokontrolera, ich efektywność na razie nie jest wystarczająca [5]. Obecnie najbardziej rozpowszechnionym w praktyce podejściem jest wybór modelu (IPcore) mikrokontrolera z najmniejszą złożonością sprzętową wśród kilku proponowanych na rynku. W większości z nich można odłączać bloki, które nie są potrzebne. Na przykład, w pracy [6] przedstawiono IP-core mikrokontrolera i8051, które można dostrajać do potrzeb konkretnego użytkownika za pomocą określenia liczby timerów, stron pamięci oraz portów wejścia-wyjścia. Proponowany sposób minimalizacji złożoności sprzętowej mikrokontrolera jest oparty o dostrajanie jego architektury opisanej w języku VHDL do programu, który MK powinien
wykonać (odpowiednie konfigurowanie). Dla osiągnięcia tego celu architektura MK powinna składać się z dużej liczby funkcjonalnych bloków przypisanych do określonych podzbiorów rozkazów i adresów pamięci. W takim przypadku analiza programu wykonawczego pozwala określić jakie rozkazy i adresy pamięci nie są wykorzystywane. Otrzymana informacja jest wejściową dla programu-kompilatora zoptymalizowanej struktury, który w podstawowym modelu VHDL mikrokontrolera wyłącza niewykorzystywane bloki i fragmenty pamięci. Struktura mikrokontrolera zwykle zawiera dwie najważniejsze części: blok sterowania (BS) z rejestrem rozkazów (RR), oraz jednostkę operacyjną, zawierającą pamięć programów ROM_P, urządzenie arytmetyczno-logiczne (ALU), pamięć danych RAM_D, blok licznika rozkazów LR, blok przerwań (BP) oraz blok rejestrów specjalnych i portów (BRSP). Uproszczona struktura mikrokontrolera rodziny i8051 przedstawiona jest na rys.1. RR BS ROM_P LR RAM_D ALU BP BRP... P3 P0 ADRESS BUS Rys. 1. Uproszczona struktura mikrokontrolera z centralizowanym sterowaniem W takiej strukturze mikrokontrolera wszystkimi blokami steruje centralizowany blok sterowania BS, który może być realizowany jako automat ze sterowaniem mikroprogramowym, lub np. jako automat Mealy ego. Jednak podstawowymi wadami obu wariantów realizacji BS przy ich implementacji w układach FPGA są duża złożoność sprzętowa (liczba wykorzystanych komórek - CLB) i niska częstotliwość jego pracy, spowodowana dużymi opóźnieniami w formowaniu sygnałów sterujących. Przyczyną wymienionych wad tkwi w tym, ze opis w VHDL centralizowanego bloku sterowania jest przekształcany w równania logiczne z dużą liczbą argumentów. Takie równania zwykle są trudne do zminimalizowania, dlatego na etapie implementacji one są przekształcane w wielopoziomowy układ logiczny z długim czasem propagacji sygnału. Poza tym, od centralizowanego BS sygnały sterowania muszą być doprowadzone do wszystkich bloków funkcyjnych MK, co powoduje powstanie długich połączeń z długimi opóźnieniami przekazywania sygnałów. W związku z tym, w celu uproszczenia wielopoziomowego układu sterującego i eliminacji długich połączeń proponuje się struktura mikrokontrolera z rozproszonym sterowaniem przedstawiona na rys.2. Cztery bloki funkcyjne: LR, RAM_D, ALU i BP mają osobne (lokalne) bloki sterowania (LBS) i rejestry rozkazów, które dekodują tylko rozkazy dotyczące odpowiedniego bloku funkcyjnego i wydają odpowiednie sygnały sterowania. Z tego powodu każdy z bloków LBS jest kilka razy prostszy i szybszy od centralizowanego BS. Poza tym, w takiej strukturze wszystkie bloki funkcyjne mikrokontrolera przedstawiają sobą zlokalizowane klastery z ograniczoną liczbą połączeń zewnętrznych. Drugim trudnym do zminimalizowania blokiem funkcyjnym jest centralizowane ALU. Takie ALU z reguły zawiera dużo wielowejściowych multiplekserów, których implementacja
w układach FPGA powoduje (na skutek osobliwości budowy komórek) powstanie wielopoziomowych układów z dużą liczbą połączeń. W wyniku zmniejsza się częstotliwość pracy całego systemu. COMMAND BUS P0 LBS LBS LBS LBS... ROM_P LR RAM_D ALU BP BRP P3 ADRESS BUS Rys. 2. Przykładowa struktura mikrokontrolera z rozproszonym sterowaniem Z innej strony, realizacja w układach reprogramowalnych sumatorów jest bardzo prosta (porównywalna ze złożonością dwuwejściowego multipleksera), a opóźnienie sumatora jest znacznie mniejsze od opóźnienia wielowejściowego multipleksera. Dlatego, bardziej efektywną architekturą ALU w modelu VHDL mikrokontrolera jest architektura rozproszona. To znaczy, ze bardziej efektywnym jest wprowadzenie do struktury ALU dodatkowych sumatorów, rejestrów i liczników, niż minimalizacja liczby takich bloków za pomocą wprowadzenia wielowejściowych multiplekserów. Na przykład, operacje dodawania, mnożenia, dzielenia, porównania oraz operacje bitowe proponuje się wykonywać w różnych blokach ALU. Struktura proponowanego rozproszonego ALU (opartego o strukturę ALU mikrokontrolera i8051) jest przedstawiona na rys. 3. COMMAND BUS RR LBS BSW BA BOB BM BD BKD Rys. 3. Przykładowe ALU z rozproszoną strukturą ALU składa się z bloku sprawdzenia warunków logicznych (BSW), bloku arytmetycznego (BA), bloku operacji na bitach (BOB), bloku mnożącego (BM), bloku dzielącego (BD), oraz bloku korekcji dziesiętnej (BKD). Każdy z tych bloków może być wyeliminowany ze struktury ALU, jeśli odpowiednie rozkazy nie są wykorzystywane w programie wykonawczym mikrokontrolera. Poza tym, upraszcza się blok sterowania ALU, które nie dekoduję brakujące rozkazy.
Znaczący efekt daje również zmniejszenie liczby sygnałów żądania przerwań. Takie rozwiązanie upraszcza blok przerwań i zwiększa częstotliwość jego pracy. W wyniku, opracowana zgodnie z proponowanym sposobem procedura otrzymania zoptymalizowanej architektury (konfigurowanie architektury) mikrokontrolera wygląda następującą. Program wykonawczy mikrokontrolera opracowuje się w sposób standardowy, biorąc pod uwagę jednak to, że im mniej różnych typów rozkazów, portów i rejestrów specjalnych będzie w programie wykorzystane, tym więcej komórek układu FPGA będzie zaoszczędzono, oraz tym większa częstotliwość działania układu będzie osiągnięta. Następnie otrzymany zostaję kod binarny programu wykonawczego. Ten kod analizuje specjalnie opracowane środowisko programowe HEXANALYSER. Wynikiem działania tego środowiska jest plik z opisem modelu VHDL mikrokontrolera dopasowanym do programu wykonawczego. Otrzymany plik następnie może być skompilowany przez dowolny program do syntezy logicznej (np. Synopsys) w celu otrzymania zoptymalizowanego schematu logicznego mikrokontrolera. 3. WYNIKI EKSPERYMENTALNE Zgodnie z zaproponowanym w referacie sposobem opracowany został model VHDL mikrokontrolera z architekturą i8051. W Tabl. 1 przedstawiono parametry (ilość bloków slice) różnych konfiguracji architektur tego mikrokontrolera (odpowiadających rożnym programom wykonawczym) przy ich implementacji w układzie FPGA Virtex firmy Xilinx. Tabl. 1. Nakłady sprzętowe przy realizacji różnych konfiguracji mikrokontrolera Konfiguracja mikrokontrolera Nakłady sprzętowe (ilość bloków slice) % od konfiguracji pełnej Pełny system rozkazów (Konfiguracja pełna) 950 100 To samo, ale bez rozkazów MUL, DIV, DA 865 91 (konfiguracja bez bloków BM, BD i BKD) To samo, ale bez rozkazów MOVC, przesunięć i 825 86,8 operacji bitowych To samo, ale bez 3 portów równoległych 799 84,1 To samo, ale bez jednego timera 758 79,8 To samo, ale bez timerów i portu szeregowego (UART) 619 65,2 Analiza tablicy pokazuje, że np. rezygnacja z rozkazów mnożenia, dzielenia i korekcji dziesiętnej oszczędza 9% nakładów sprzętowych mikrokontrolera. Minimalna konfiguracja mikrokontrolera oszczędza prawie 35% bloków slice w porównaniu z jego konfiguracją pełną, czyli nakłady sprzętowe zmniejszane są w ponad 1,5 razy. Poza tym, dzięki realizacji rozproszonej wersji ALU i bloku sterowania, pełna konfiguracja mikrokontrolera już wymaga w 1,35 razy mniej bloków slice w porównaniu z np. IP-core mikrokontrolera opisanego w [6], a częstotliwość jego pracy w układzie XCV300-06 osiąga 60 MHz, czyli jest w 1,7 razy większa od częstotliwości pracy mikrokontrolera opisanego w [6]. 4. PODSUMOWANIE Zaproponowany sposób optymalizacji architektury mikrokontrolera przeznaczonego do implementacji w układach reprogramowalnych FPGA bazuje się na dopasowywaniu jego architektury do programu wykonawczego. Początkowa architektura mikrokontrolera zawiera
zbiór wszystkich bloków funkcyjnych przypisanych do określonych podzbiorów rozkazów i adresów pamięci. Szczegółową cechą tej architektury jest to, że blok sterowania mikrokontrolera i jego jednostka arytmetyczno-logiczna są rozproszone. Model tej architektury zostaje opisany w języku VHDL z możliwością odłączenia poszczególnych bloków razem z odpowiednimi jednostkami sterującymi. Podczas automatycznej analizy programu wykonawczego mikrokontrolera określa się, jakie rozkazy i adresy pamięci ten program nie wykorzystuje, i eliminują się odpowiednie bloki funkcyjne. Zaletami proponowanego sposobu są zmniejszenie w ponad 1,5 razy liczby komórek niezbędnych do realizacji mikrokontrolera w układzie FPGA, oraz zwiększenie częstotliwości jego pracy. LITERATURA [1] Keating M., Bricaud P. Reuse Methodology Manuals For System-On-Chip Designs, Kluwer, 1999, 286 p. [2] De Michelli G., Gupta R.K. Hardware/Software Co-Design, IEEE Proc., 1997, V.85, No3, pp.349-365. [3] Liao S.Y., Devadas S., Keuzer K. Code Density Optimizationfor Embedded DSP Processors Using Data Compression Techniques, IEEE tranz. On Computer-Aided Design of Integrated Circuits and Systems, 1998, V.17, No7, pp.601-608. [4] Huang I.J., Despain A.M. Synthesis of Application Specific Instruction Sets, IEEE trans. On Computer-Aided Design of Integrated Circuits and Systems, 1995, V.14, No6, pp.663-676. [5] Bhattacharya S.S., Leupers R., Marwedel P. Software Synthesis And Code Generation For Signal Processing Systems, IEEE Tranz. On Circuits and Systems, Part II, 2000, V. 47, No9, pp.849-875. [6] Dolphin Provies Industry Fastest 8051 Core for Xilinx Virtex FPGAs, Available at http://www.dolphin.fr.
OPTIMIZATION OF MIKROCONTROLLER ARCHITECTURE FOR ITS REALIZATION IN FPGA DEVICES Oleg Maslennikow*, Anatolij Sergyienko**, Miroslaw Lacki* Technical University of Koszalin, Ul. Partyzantów 17, 75-411 Koszalin, Poland email: oleg@ie.tu.koszalin.pl Technical University of Kiev, Pr. Pobedy 37, Kiev, Ukraine email: aser@comsys.ntu-kpi.kiev.ua Abstract This paper presents the approach to optimization of mikrocontroller architecture for its further implementation in FPGA devices. The approach is based on automated adaptation of the mikrocontroller structure for its executing program. Initial structure of the mikrocontroller consists of all its function blocks with separate local control unit for each block. On the first stage, the user microcontroller program are analyzed. By this process the unused instruction codes and unused data addresses are fixed. On the second stage, the mikrocontroller VHDL core is generated, in which the unused units and logic cells are taken off automatically. On the third stage the whole project is translated into the configuration file of the target FPGA device. The proposed approach of mapping the executing program into configurable hardware showed the 1.5 times of hardware minimization in the case of use of well-known i8051 microcontroler architecture. Moreover, the designed microcontroller IP-core has in 6 times higher instruction implementation speed, and in more than 1.7 times clock frequency in comparison to the known IP-cores of this microcontroller.