RE P. Pierwsze pomysły

Podobne dokumenty
Projektowanie. Projektowanie mikroprocesorów

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Specyfika projektowania Mariusz Rawski

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Projekt prostego procesora

Struktura i działanie jednostki centralnej

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Modelowanie złożonych układów cyfrowych (1)

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Architektura mikroprocesorów TEO 2009/2010

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Metody optymalizacji soft-procesorów NIOS

FPGA, CPLD, SPLD. Synteza systemów reprogramowalnych 1/27. dr inż. Mariusz Kapruziak pok. 107, tel

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Projektowanie Urządzeń Cyfrowych

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Systemy Czasu Rzeczywistego FPGA

Analiza i Synteza Układów Cyfrowych

Projektowanie automatów z użyciem VHDL

Cyfrowe układy scalone

Sposoby projektowania systemów w cyfrowych

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Systemy na Chipie. Robert Czerwiński

Zarządzanie pamięcią operacyjną

Układy reprogramowalne i SoC Implementacja w układach FPGA

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Projektowanie układów FPGA. Żródło*6+.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Mikroprocesory rodziny INTEL 80x86

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Systemy Czasu Rzeczywistego FPGA

Cyfrowe układy scalone

Elementy cyfrowe i układy logiczne

Podstawy Informatyki Systemy sterowane przepływem argumentów

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Krótkie wprowadzenie do ModelSim i Quartus2

Budowa komputera Komputer computer computare

Architektura komputerów

Architektura potokowa RISC

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Architektura typu Single-Cycle

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Katedra Mikroelektroniki i Technik Informatycznych

Architektura systemów komputerowych

Energooszczędne programowanie

Programowalne układy logiczne

LEKCJA TEMAT: Zasada działania komputera.

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

Programowalne Układy Logiczne Konfiguracja/Rekonfiguracja

Technika cyfrowa projekt: Sumator 4 bitowy równoległy

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

Architektura systemów komputerowych. Lista instrukcji procesora

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Architektura Systemów Komputerowych

PUCY Kolos 2: Reloaded

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Języki opisu sprzętu VHDL Mariusz Rawski

Współczesne techniki informacyjne

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Programowanie współbieżne i rozproszone

Układy FPGA w przykładach, część 2

Programowanie Niskopoziomowe

Sterowniki PLC. Elektrotechnika II stopień Ogólno akademicki. przedmiot kierunkowy. Obieralny. Polski. semestr 1

Systemy wbudowane. Przykłady kodu Assembler

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

System mikroprocesorowy i peryferia. Dariusz Chaberski

Architektura komputerów egzamin końcowy

Jednostka centralna. dr hab. inż. Krzysztof Patan, prof. PWSZ

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Architektura mikroprocesorów z rdzeniem ColdFire

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Język opisu sprzętu VHDL

Programowalne układy logiczne

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Systemy Czasu Rzeczywistego FPGA

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji.

Lista Rozkazów: Język komputera

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Synteza strukturalna

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Zarządzanie pamięcią operacyjną

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Transkrypt:

RE P Pierwsze pomysły

Cel zasadniczy: Dynamicznie rekonfigurowalny układ FPGA jako procesor ogólnego przeznaczenia

3 Co to jest FPGA? Bity konfiguracyjne FF LUT FPGA Field Programmable Gate Array Układ cyfrowy, którego wewnętrzna architektura definiowana jest zestawem bitów konfiguracyjnych. Określają one strukturę połączeń pomiędzy wbudowanymi elementami układu, takimi jak przerzutinki, multiplexery, bramki logiczne, itp.. Funkcje kombimacyjne realizowane są za pomocą małych bloków również konfigurowalnej pamięci. Zasoby układu pogrupowane są w macierz bloków CLB (Configurable Logic Blok). FF FF CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB

4 FPGA trochę szczegółów Pomiędzy blokami CLB, wzdłuż kolumn i wierszy, rozmieszczone są kanały routing u, z również konfigurowalnymi macierzami przelączników (Switch Matrices)

5 FPGA jak tego używać? Schemat Opis (VHDL, Verilog, itp.) Specyfikacja projektu Translacja Optymalizacja Synteza logiczna Mapping Placement Routing 000101111000111000110. Synteza fizyczna Zestaw bitów konfiguracyjnych (bitstream)

6 FPGA jako procesor P Sekwencyjna realizacja wątków podział czasu Wątek 1 Wątek 2 Wątek 3 Wątek 1 Wątek 2 Wątek 3 Wątek 1 Wątek 3 Układ sterujący Wątek 2 Współbieżna realizacja wątków RE P Zrównoleglenie jest pierwszym etapem przyspieszenia obliczeń (odpowiednik łatwo skalowalnego procesora wielordzeniowego) Uwaga: Wątek jest zbyt duży by zostać w całości zaimplementowanym w sprzęcie!!!

Zasoby (max) 7 Partycjonowanie wątków Start Operacja 1 Operacja 2 Operacja 5 Operacja 6 Warunek Operacja 3 Operacja 4 Warunek Przerwania Operacja 7 Obsługa przerwań Operacja 8 Operacja 9 Czas wykonania Co to jest operacja? Jedna z propozycji: Ciąg instrukcji, które nie kończą się skokiem i do których nie wskakuje się do środka [Grzegorz Jabłoński] Koniec

Zasoby (max) 8 Implementacja partycji Przed zakończeniem danej partycji pojawia się partycja kolejna (ALAP) W przypadku rozgałęzień, pojawiają się obie następne partycje (ALAP) Uwagi: Czas wykonania Konstrukcja partycji musi umożliwiać umieszczenie ich w różnych miejscach układu Rozgałęziające się partycje muszą informować układ sterujący o wybranym rozgałęzieniu!!! Nieużywane partycje znikają (ASAP)

Konwersja 9 wątków soft do wątków hard Wątek w C++ Konwersja C++ do VHDL Kompilacja C++ do ASM (*) Partycjonowanie Synteza Logiczna + Fizyczna Synteza Logiczna Partycjonowanie Synteza Fizyczna Partycjonowanie Konwersja ASM do VHDL Synteza Logiczna + Fizyczna Rozwiązania bardzo złożone, pełne ograniczeń i niedoskonałości Zestaw bitstream ów dla poszczególnych partycji (*) ASM użyty dla uproszczenia rozważań. Docelowo lepszym kandydatem wydaję się być GIMPLE

Konwersja 10 char fun(char a, char b) { char c, d, r; c = a * 2; d = b * 4; r = c - d; return r; } int main(void) { c = fun(a,b); } ASM do VHDL LDS R25,0x0186 Load direct from data space LDS R24,0x0182 Load direct from data space R25 Logical Shift Left R24 Logical Shift Left R24 Logical Shift Left SUB R25,R24 Subtract without carry STS 0x0183,R25 Store direct to data space LDS SUB STS R,X R Rx, Ry X,R X : in std_logic_vector(n-1 downto 0); variable R : std_logic_vector(x high downto X low); R := X; R := R(R high-1 downto R low) & 0 ; Rx := Rx Ry; X : out std_logic_vector(r high downto R low); X <= R;

Konwersja 11 ASM do VHDL - przykład entity TEST is port(x1, X2 in: ; X3 out: ); architecture TEST_behav of entity TEST is begin LDS LDS SUB STS R25,X1 R24,X2 R25 R24 R24 R25,R24 X3,R25 process(clk) variable R25 : std_logic_vector(x1 high downto X1 low); variable R24 : std_logic_vector(x2 high downto X2 low); begin if rising_edge(clk) then R25 := X1; R24 := X2; R25 := R25(R25 high-1 downto R25 low) & 0 ; R24 := R24(R24 high-1 downto R24 low) & 0 ; R24 := R24(R24 high-1 downto R24 low) & 0 ; R25 := R25 R24; X3 <= R24; end if; end process; end architecture;

Dopasowanie sprzętu 12 do potrzeb wątku X1 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF X2 SUB X3 FF FF FF FF FF FF FF FF LDS LDS R25,X1 R24,X2 Generacja sprzętu dedykowanego do wykonywanych operacji jest drugim (zasadniczym) etapem przyspieszenia obliczeń. SUB STS R25 R24 R24 R25,R24 X3,R25

13 Opóźnienia i zasoby LDS LDS Rxx,Ryy SUB R25,R24 STS R25,X1 R24,X2 R25 R24 R24 X3,R25 W przypadku konwersji długiego ciągu rozkazów można: rozbić ten ciąg na mniejsze fragmenty, wprowadzając rejestry przechowujące wynik pośredni, tak aby opóźnienie na najdłuższej ścieżce kombinacyjnej nie przekraczało założonego okresu zegara narzucić na ścieżki między rejestrami wejściowymi a wyjściowymi ograniczenie typu multicycle Zarówno w pierwszym jak i drugim rozwiązaniu, w wyniku procesu syntezy określona zostanie liczba taktów niezbędnych do realizacji wchodzących w skład partycji operacji (czas życia partycji). Czas ten powinien być tak zbilansowany, aby w trakcie pracy aktywnych partycji możliwe było skonfigurowanie kolejnych. Jednocześnie partycje powinny być możliwie małe, by pozwolić na współbieżną realizację jak największej liczby wątków.

14 RISC czy CISC? LDS LDS?????????????????????????????? SUB R25,R24 STS R25,X1 R24,X2 R25 R24 R24 X3,R25 Optymalizacja wygenerowanego opisu w języku VHDL bierze pod uwagę nie pojedyncze rozkazy ale ich sekwencję. Pojęcia RISC i CISC tracą w tej sytuacji swoje standardowe znaczenie (nie ma czegoś takiego jak opcode rozkazu). Jednak w reprezentacji pośredniej (ASM) pojawiają się mnemoniki odpowiadające operacjom, jakie należy wykonać na rejestrach. Operacje te mogą być znacznie bardziej złożone od tych, które można znaleźć w zbiorze rozkazów procesorów CISC. Ich implementacja polegać będzie jedynie na określeniu odpowiadającego im opisu w języku VHDL. W tym znaczeniu możemy nazwać nasz procesor EISC (Extended Instruction Set Computer) albo VCISC (Very Complex Instruction Set Computer).

15 Co rekonfigurować? Należy wybrać jedno z dwóch, niestety wykluczających się podejść: Standardowe (stosowane w układach komercyjnych). + W tym podejściu będzie można dokonać wstępnej weryfikacji zaproponowanych rozwiązań (translacji, konwersji, zarządzania partycjami) za pomocą ogólnodostępnych narzędzi i układów (np. z rodziny Virtex). Pociągnie to jednak za sobą konieczność uwzględniania wielu ograniczeń (stosowania modułów Bus Macro do łączenia modułów dynamicznych ze statycznymi, używania zunifikowanych interfejsów bloków dynamicznych, itp.), co może znacząco zniwelować atrakcyjność zaproponowanych rozwiązań. Poza tym, nawet komercyjne narzędzia wspierające dynamiczną rekonfigurację są ciągle niedoskonałe (Early Access Partial Reconfiguration Lounge). Przeniesienie wypracowanych w tym podejściu technik rekonfiguracji na (ewentualny) własny, dedykowany układ ASIC będzie wymagało dodatkowego, dużego nakładu pracy. Niestandardowe Realizacja projektu w oparciu o własny, dedykowany układ rekonfigurowalny (w pierwszym etapie można by się oprzeć o jego model, nawet behawioralny) uniemożliwi wstępną, fizyczną weryfikację zaproponowanych rozwiązań. W celu otrzymania jakichkolwiek wyników będzie wymagane opracowanie własnych narzędzi syntezy fizycznej. Prawdopodobnie nie uda się też wykonać fizycznego układu mogącego konkurować z komercyjnymi. + Podejście to jednak pozwoli uniknąć wielu istotnych ograniczeń, jakie narzucają rozwiązania komercyjne. + Będzie się też lepiej wpisywało w naukowy charakter projektu (nowa architektura).

Jaka rekonfiguracja? Pełzająca czy wielokontekstowa? 16 REG REG REG REG REG REG REG REG Odpowiedź na to pytanie wymaga głębszej analizy i w dużej mierze zależy od odpowiedzi na pytanie co rekonfigurować układy komercyjne wspierają jedynie rekonfigurację pełzającą.

17 Krótkie pytania, krótkie odpowiedzi Architektura Harwardzka czy von Neumana? Skoro procesor ogólnego przeznaczenia to może von Neumana? Należy jednak pamiętać, że w proponowanym rozwiązaniu nie ma typowego programu, jest zbiór bitstream ów. SIMD czy MIMD? Jeśli to ma być uniwersalny procesor, to oczywiście MIMD. Jaki model zarządzania pamięcią? Nie wiem. Jaki model ochrony? Nie wiem. Jaki model zarządzania segmentacji-stronicowani-haszowania? Nie wiem. Czy można skorzystać z opensoftprocesor ów/opensoftcor ów? Nie. Nasz pomysł ma pójść znacznie dalej niż zarządzanie mniejszymi rdzeniami. Jaki system operacyjny? Pierwsze testy bez systemu operacyjnego. Ale należy o tym myśleć już teraz! Co z operacjami zmiennoprzecinkowymi? Do wykazania atrakcyjności naszego rozwiązania wystarczą operacje stałoprzecinkowe. W finalnej wersji projektu operacje zmiennoprzecinkowe mogą być implementowane dynamicznie tak jak wszystkie inne. I tu mogą się przydać gotowe IP-core y.

18 Krótkie pytania, krótkie odpowiedzi Czy transfer danych konfiguracyjnych nie będzie zbyt duży? W dedykowanym układzie rekonfigurowalnym (nasz własny ASIC) można zoptymalizować proces rekonfiguracji (szeroka szyna danych konfiguracyjnych, możliwość rekonfiguracji niedużych fragmentów, itp.). Dodatkowo, np. konfiguracja wielokontekstowa pozwoli zminimalizować liczbę niezbędnych przeładowań bitstream u nieużywana w danej chwili konfiguracja może czekać w zapasowych przerzutnikach konfiguracyjnych. Czy zmniejszymy Grzesia do rozmiarów mikro, sklonujemy i będziemy dodawali jako kompilator i zarządcę zasobów do każdego naszego procesora? Zdecydowanie NIE!!! ;-)

19 Podsumowanie Interdyscyplinarny projekt, znakomicie wpisujący się w zakres zainteresowań naszej Katedry, wymagający synergicznej współpracy specjalistów z wielu dziedzin: układy dynamicznie rekonfigurowalne języki opisu sprzętu architektura komputerów procesory techniki kompilacji systemy operacyjne układy ASIC Niezbędne badania literaturowe potwierdzające unikalność naszego pomysłu pozwalające zdecydować o jego wykonalności Sposób realizacji projektu jest ciągle zagadnieniem otwartym, zatem wszystkie pomysły są mile widziane Projekt o dużym znaczeniu komercyjnym. Ma on mieć jednak charakter głównie naukowy, można więc pozwolić sobie na odważne propozycje i jednocześnie na niezbędne uproszczenia, ułatwiające wyciągnięcie ciekawych wniosków.

20 Głosy w dyskusji W procesie translacji ciągu rozkazów do sprzętu istotnym problemem mogą być wskaźniki Duży wpływ na efektywność zrównoleglenia wątków będzie miał czas dostępu do pamięci. Oprócz zrównoleglenia wątków i dopasowania sprzętu do zestawu instrukcji, duży wpływ na szybkość obliczeń może mieć zrównoleglenie przetwarzania w ramach pojedynczej operacji. Np.: jeśli w tłumaczonym na sprzęt ciągu instrukcji znajdą się: SUB R1,R2 SUB R3,R4 to w wyniku translacji powinny powstać dwa niezależne układy odejmujące, realizujące operacje odejmowania współbieżnie (na marginesie: przy zaproponowanym sposobie translacji ASM do VHDL taka funkcjonalność jest niejako wbudowana). Rekonfiguracja wielokontekstowa wydaję się być pomocną przy ukrywaniu latencji dostępu do pamięci (konfiguracja, która czeka na dane z pamięci jest zastępowana inną, która może pracować). Ten sposób rekonfiguracji może jednak stwarzać problemy przy realizacji rozgałęzień. Należy rozważyć możliwość zrównoleglania pętli W trakcie przeglądu literatury warto zwrócić uwagę (kolekcjonować i rozpowszechniać) na słowa kluczowe