POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011
Cel prezentacji Akceleracja sprzętowa do wspomagania rozwiązań programowych w soft-procesorach NIOS Zawsze trzeba wiedzieć na czym nam zależy!!! Przykład realizacji
Sprzętowa akceleracja normalnie, procesory wykonują instrukcje sekwencyjnie ograniczona wydajność wyniesiony program do warstwy sprzętowej jest przetwarzany znacznie szybciej możliwe wykonywanie równoległych zadań zastosowanie: skomplikowane lub intensywne obliczenia/operacje
NIOS metody akceleracji Funkcje definiowane przez użytkownika (Custom Instructions) Peryferia definiowane przez użytkownika (Custom Peripherals) Kompilator C-to-Hardware Systemy wieloprocesorowe
Funkcje użytkownika realizowane w ramach logiki procesora rozszerzają zbiór funkcji procesora max 32 konfigurowalność procesora NIOS umożliwia integrację funkcji bezpośrednio z jednostką arytmetyczno-logiczną (ALU) max 32 jeden procesor NIOS do 256 definiowanych funkcji sprzętowych. max 32 max. 32-bitowa architektura Źródło: NIOS II Custom Instruction User Guide, www.altera.com
Peryferia użytkownika poza granicami procesora połączone z NIOS za pomocą szyny Avalon Nios II CPU Peryferium Użytkownika (Custom Peripheral) Arbiter Arbiter Program Memory Data Memory Data Memory Źródło:www.ALTERA.com Korzyści: - równoległa praca z procesorem - brak kontroli CPU - dowolna architektura i liczba peryferiów (ograniczone wielkością układu FPGA)
Kompilator C-to-Hardware d_transform (int *t, int *p) { } setup code for (i = 0; i < Buf_Size; i++) { } loop overhead *t = transform (*p); t++; p++; exit code Źródło: Automating Hardware Acceleration of Embedded Systems, www.altera.com C2H Akcelerator sprzętowy automatyczne generowanie akceleratorów sprzętowych (definiowanych peryferiów) nie wymagana specjalistyczna wiedza z zakresu projektowania Wada - automatyka -> większe zużycie zasobów FPGA.
Systemy wieloprocesorowe Dziel i rządź - rozbijanie dużych projektów (aplikacji/systemów) na mniejsze zadania upraszcza pisanie, debugowanie oraz zarządzanie kodem i całym projektem. Korzyści: - mniejsze zadania - uproszczone zarządzanie projektem - równoległość procesów na poziomie procesorów oraz w obrębie każdego z osobna Wada: - metoda wymaga użycia dużych lub wielu układów FPGA Źródło: Scale System Performance, www.altera.com
Architektura Definiowanych Funkcji Wyróżniamy cztery typy funkcji definiowanych przez użytkownika Kombinacyjne Wielocyklowe Rozszerzone Wyposażone w wewnętrzny plik rejestru Źródło: NIOS II Custom Instruction User Guide, www.altera.com Najwyżej 32-bitowa architektura!
Funkcje Kombinacyjne Źródło: NIOS II Custom Instruction User Guide, www.altera.com najprostszy typ definiowanych funkcji sprzętowych posiada prostą logikę zdolną wykonać zadanie w jednym cyklu zegarowym (np. operacje przesuwania bitów)
Funkcje Wielocyklowe logika wymagająca więcej niż jeden cykl zegara wymagane sygnały sterujące logiką Źródło: NIOS II Custom Instruction User Guide, www.altera.com
Funkcje Rozszerzone funkcja wielocyklowa z dodatkowym wejściem, służącym jako selektor Źródło: NIOS II Custom Instruction User Guide, www.altera.com Selektor umożliwia zaimplementowanie do 256 różnych operacji wewnątrz pojedynczej logiki definiowanej funkcji rozszerzonej
Funkcje z wewnętrznym plikiem rejestru Źródło: NIOS II Custom Instruction User Guide, www.altera.com wielocyklowa funkcja wyposażona w wbudowany plik rejestru wymagany sygnał sterujący rejestrem
Realizacja Największy Wspólny Dzielnik (NWD) Algorytm NWD w ANSI C Konfiguracja systemu SoPC Dla 32-bitowych liczb w najgorszym przypadku 65535 pętli!
NWD - Funkcje użytkownika Dana A (32-bity) Dana B (32-bity) Wynik (32-bity) Sygnały dla funkcji wielocyklowej
NWD - Funkcje użytkownika [32 bity] Wynik = CI_NWD(danaA, danab); - automatycznie generowane makro - proste wywoływanie i synchronizacja [64 i więcej bitów] Wynik = CI_NWD(n, danaa, danab); - selektor n umożliwia stworzenie rozszerzonej funkcji Custom Instruction
NWD - Funkcje użytkownika Dana A (32-bity) Dana B (32-bity) Selektor n (do 8 bitów) (NWD) Wynik (32-bity) Sygnały dla funkcji wielocyklowej If n = 0: 32-bitowa wersja NWD If n = 1: 64-bitowy NWD; ładowanie danej A If n = 2: 64-bitowy NWD; ładowanie danej B; zwrot 32-bitowej części wyniku If n = 3: 64-bitowy NWD; zwrot ostatnich 32-bitów
NWD - Funkcje użytkownika
NWD - Peryferia użytkownika - akcelerator o dużym potencjale - wymaga dodatkowej logiki arbitrażowej - wymaga synchronizacji
Peryferia użytkownika - Altera udostępnia schematy dla logiki arbitrażowej - wymagana wiedza z zakresu systemu systemu połączeń wewnątrz systemu SoPC (szyna Avalon architektura i transakcje) - Program kontrolny i synchronizujący (sterownik) - HAL
NWD - Wyniki - Test każdej z realizacji był przeprowadzony na danych o łącznej wielkości 3MB - Należy pamiętać, że ze względu na charakter algorytmu NWD wyniki zależą również od obliczanych liczb Realizacja Zużyte zasoby FPGA #LC Czas obliczeń [s] NIOS Software 4408 (13%) 0.65 NIOS Custom Instructions 4909 (15%) 0.1 (6,5 x szybciej) NIOS Custom Component 5597 (17%) 0.01 (65 x szybciej)
Wnioski Akceleratory sprzętowe rozwiązań programowych znacznie zwiększają wydajność projektowanych systemów Wraz z implementacją kolejnych sprzętowych akceleratorów, rośnie zużycie zasobów układu Projektowanie systemów z wykorzystaniem akceleratorów wymaga przemyślenia kosztorysu czasu do ilości potrzebnych zasobów Zawsze trzeba wiedzieć na czym nam zależy!!!
POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011