POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Opiekun naukowy: dr inż. Paweł Tomaszewicz 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 1
Plan prezentacji Przykład: funkcja skrótu Whirlpool Instrukcje użytkownika Metody akceleracji soft-procesora NIOS Sof-procesor NIOS Akceleracja sprzętowa oprogramowania 2
Soft-procesor NIOS Softprocesor to nic innego jak model procesora opisanego w języku opisu sprzętu (HDL), zaimplementowany w układzie FPGA Źródło: NIOS II Custom Instruction User Guide, www.altera.com 32-bitowa architektura RISC (Reduced Instruction Set Computers) właściwości FPGA -> pozwala dowolnie konfigurować procesor Nie osiąga prędkości wykonywania zadań porównywalnych do typowych procesorów 3
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 4
NIOS metody akceleracji Funkcje definiowane przez użytkownika (Custom Instructions) Peryferia definiowane przez użytkownika (Custom Peripherals) Kompilator C-to-Hardware Systemy wieloprocesorowe 5
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 6
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) PW, WEiTI, 7
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 } C2H Akcelerator sprzętowy Źródło: Automating Hardware Acceleration of Embedded Systems, www.altera.com 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. PW, WEiTI, 8
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 9
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! 10
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. operacja XOR) 11
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 12
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 13
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 14
Funkcja skrótu Whirlpool Autorzy: Vincenta Rijmena (szyfr AES!) oraz Paulo S.L.M. Barreto Stosowana w kryptografii Jak dotąd nikt jej nie złamał!!! Wiadomość wizytówka Zastosowania: sprawdzanie integralności wiadomości tworzenie podpisów elektronicznych ochrona przed przypadkowym lub celowym wprowadzeniem modyfikacji danych 15
Schemat blokowy realizacji skrótu Whirlpool Wiadomość 2 256 bitów Podział na bloki 512 bitów Kompresja i mieszanie bajtów Źródło: (książka) Programowalne Układy Przetwarzania Sygnałów i Informacji, praca pod redakcją prof. T. Łuby, WKŁ 16
Blok kompresji funkcji Whirlpool Źródło: (książka) Programowalne Układy Przetwarzania Sygnałów i Informacji, praca pod redakcją prof. T. Łuby, WKŁ Źródło: The Whirlpool Hashing Function strona domowa (www.larc.usp.br/~pbarreto/whirlpoolpage.html) Schemat rundy Warstwa podstawienia Dużo prostych ale INTENSYWNYCH oblicz Uwaga: wąskie gardła aplikacji 17
Prezentacja implementacji Płytka edukacyjna DE2-70 Źródło: DE2-70 board, www.altera.com 18
Implementacja Soft Warstwa programowa (program w C) Warstwa sprzętowa Padder Blok kompresji W operacje XOR void nonlin( ) void cyclic_permut( ) void lin_dif( ) H t 19
Implementacja Soft-Hard Warstwa programowa (program w C) Warstwa sprzętowa Padder Blok kompresji W definiowana funkcja definiowana funkcja definiowana funkcja definiowana funkcja operacje XOR void nonlin( ) void cyclic_permut( ) void lin_dif( ) H t 20
Wyniki porównania realizacji Soft Soft-Hard Czas realizacji: 38542303 µs =~ 38 s Zużycie zasobów: 6% (4,201/68,416) Czas realizacji: 2038434 µs =~ 2 s Zużycie zasobów: 8% (5,594/68,416) Czas realizacji (t) zużycie zasobów (r) (t) Ponad 18-krotne przyśpieszenie realizacji!!! Wydajność 1891% względem czystej programowej realizacji Wzrost zużycia zasobów o 25% (r) (t) (r) 21
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!!! 22