Kolejkowanie Systemy wbudowane dr. inŝ. Paweł Russek Katedra Elektroniki AGH Graf sekwencyjny Graf sekwencyjny: biegunowy, acykliczny Graf acykliczny to graf nie zawierający cykli Cykl to droga zamknięta G(V,E) V={v i ; i=0,1,...,n} E={(v i, v j ); i,j=0,..,n} Węzły reprezentują wykonywane operacje Zawiera odpływ i źródło (NOP) 1
Graf sekwencyjny Zawiera informacje o zaleŝności pomiędzy wykonywanymi operacjami, Źródło ma indeks 0, odpływ indeks n Kolejkowanie (ang. scheduling) Rozmieszczenie operacji w czasie D={d i : i=0,1,...,n}; zbiór opóźnień wykonywanych operacji Zbiór T={t i : i=0,1,...,n}; czasy rozpoczęcia operacji t i < t j + d j gdzie węzeł i następuje po węźle j Zadanie polegające na ustaleniu czasów rozpoczęcia operacji przy zachowaniu kolejności wynikającej z grafu W układach synchronicznych mierzymy czas opóźnienia w cyklach Opóźnienie λ=t n -t 0 2
Kolejkowanie Od kolejkowania zaleŝy współbieŝność Maksymalna liczba wykonywanych w danym kroku operacji ogranicza liczbę potrzebnych zasobów Kolejkowanie Bez ograniczeń Z ograniczeniem zasobów. Z ograniczeniami czasowymi Kolejkowanie Statyczne Dynamiczne Kolejkowanie z ograniczeniem Potrzeba stosowania ograniczeń zasobów wynika z ograniczonej powierzchni układu Rozwiązanie tego problemu pozwala na osiągnięcie kompromisu powierzchnia/czas Problem NP-trudny Praktycznie moŝemy uzyskiwać jedynie rozwiązana przybliŝone 3
Algorytmy kolejkowania Maksymalna liczba operacji wykonanych współbieŝnie ogranicza od dołu liczbę potrzebnych zasobów Od góry liczba zasobów moŝe być ograniczona załoŝeniami projektowymi Problem kolejkowania moŝe mieć wiele rozwiązań Ostre ograniczenie liczby zasobów wiąŝe się z implementacją szeregową Kolejkowanie bez ograniczenia ilości zasobów ASAP ALAP Kolejkowanie przy ograniczeniu zasobów Kolejkowanie bez ograniczeń ASAP As Soon As Possible Kolejkowanie bez ograniczeń Ma znaczenie przy stosowaniu zasobów dedykowanych Koszt implementacji zasobów jest niski w porównaniu z kosztem logiki sterującej KaŜda operacja rozpoczyna się tak szybko jak tyko pozwalają na to związki z innymi operacjami Znajduje najmniejsze moŝliwe czasy rozpoczęcia operacji Problem moŝna rozwiązać sortując topologicznie wierzchołki grafu. Algorytm: v 0 kolejkuje dla czasu 0 Repeat { wybierz wierzchołek którego wszyscy poprzednicy mają juŝ przyporządkowane miejsce w kolejce kolejkuj wierzchołek dla czasu t w =max(t p +d p ); t p T p zbiór czasów przypisanych poprzednikom } until (wszystkie wierzchołki są juŝ przyporządkowane) 4
Kolejkowanie bez ograniczeń ALAP As Late As Possible Wybieramy satysfakcjonujące nas λ Znajduje najmniejsze moŝliwe czasy rozpoczęcia operacji Algorytm: v n kolejkuje dla czasu λ Repeat { wybierz wierzchołek którego wszyscy następcy mają juŝ przyporządkowane miejsce w kolejce kolejkuj wierzchołek dla czasu t w =min(t p ) - 1; T p zbiór czasów przypisanych następcom } until (wszystkie wierzchołki są juŝ przyporządkowane) Ruchliwość Dla określonego dla ALAP λ moŝemy wyznaczyć ruchliwość oznacza róŝnicę czasu obliczona przez algorytm ALAP i ASAP Zerowa ruchliwość oznacza, Ŝe operacja musi zacząć się w określonym czasie 5
Kolejkowanie przy ograniczeniach zasobów WaŜna i trudne zagadnienie Wykorzystanie zasobów w znacznym stopniu wpływa na powierzchnię W przypadku problemów nie zdominowanych przez zasoby na powierzchnię wpływają takŝe inne czynniki Problem jest NP-trudny Kolejkowanie list Ustalamy listę operacji gotowych w danym takcie do realizacji Przypisujemy operacje do dostępnych zasobów na podstawie priorytetów. Priorytetami mogą być np.: ruchliwość operacji Liczba krawędzi grafu od danej operacji do odpływu. Przykład: 6
Kolejkowanie z ograniczeniami czasu Algorytm Hu Kolejkowanie wieloprocesorowe Uproszczenie: wszystkie operacje wykonywane przez zasoby jednego typu Problem: Ile zasobów potrzeba aby opóźnienie wyniosło λ? Etykietowanie grafu sekwencyjnego polega na oznaczeniu kaŝdego wierzchołka wagą najdłuŝszej ścieŝki od niego do odpływu, mierzonej liczbą krawędzi {α i ;i=1,2,... n}. Definiujemy: α=max α i Oczywiste jest Ŝe λ α Twierdzenie: Dolna granica zasobów (nie mniej niŝ) potrzebnych do wyznaczenia kolejności wykonywania operacji o zwłoce λ wynosi. γ p( α + 1 j) = 1 a = max j γ γ + λ α Gdzie: p(j) liczba wierzchołków o etykietach równych j 7
Algorytm Hu Kolejkowanie wieloprocesorowe Uproszczenie: wszystkie operacje wykonywane przez zasoby jednego typu Problem: Ile zasobów potrzeba aby opóźnienie wyniosło λ? Etykietowanie grafu sekwencyjnego polega na oznaczeniu kaŝdego wierzchołka wagą najdłuŝszej ścieŝki od niego do odpływu, mierzonej liczbą krawędzi {α i ;i=1,2,... n}. Definiujemy: α=max α i Oczywiste jest Ŝe λ α Twierdzenie: Dolna granica zasobów (nie mniej niŝ) potrzebnych do wyznaczenia kolejności wykonywania operacji o zwłoce λ wynosi. γ p( α + 1 j) = 1 a = max j γ γ + λ α Gdzie: p(j) liczba wierzchołków o etykietach równych j Przykład a dolna granica liczby koniecznych zasobów γ - liczba całkowita λ - załoŝona zwłoka projektowanego układu α - najdłuzsza ścieŝka w grafie sekwencyjnym p(j) liczba wierzchołkóa o etykiecie j Przykład: α =4, λ=5 8
Łączenie (ang. partitioning) Łączenie zasobów z operacjami Zasób moŝe realizować więcej niŝ jedną operację (np.: ALU) Relacja pokrywania typów: dany zasób moŝe posłuŝyć do realizacji określonej operacji Współdzielenie zasobów jest moŝliwe jeŝeli kilka operacji jest tego samego typu. Operacje nie mogą być realizowane równocześnie Często ograniczenia łączenia zasobów wynikają z ograniczeń wykorzystania zasobów poszczególnych typów. Ograniczenia te reprezentują moŝliwość przydzielenia określonego typu do danego zadania. Łączenie zasobów: graf zgodności Operacje są zgodne jeŝeli nie są współbieŝne i są w ogólnym przypadku tego samego typu Graf zgodności zasobów reprezentuje pary zgodnych operacji Grupa wzajemnie zgodnych operacji odpowiada podzbiorowi wierzchołków wzajemnie połączonych krawędziami. Grupa taka tworzy podgraf reprezentujący wykorzystywany zasób. Liczba podgrafów pokrywających graf zgodności to liczba zasobów koniecznych do wykonania zadania Graf zgodności Podgraf mnoŝenia Dwa grafy zupełne {v 1,v 3,v 7 } {v 2,v 6,v 8 } Podgraf ALU Dwa grafy zupełne {v 4,v 5,v 10,,v 11 } {v 9 } 9
Łączenie zasobów: grafy konfliktów Graf w którym zbiór krawędzi reprezentuje pary kolidujących operacji Właściwe kolorowanie wierzchołków jest rozwiązaniem problemu współdzielenia zasobów Optymalne współdzielenie zasobów polega na pokolorowaniu wierzchołków minimalną liczbą kolorów Dobrze jest wierzchołki odpowiadające róŝnym zasobom traktować jako niezaleŝne grafy Przykład Inne algorytmy Kolejkowanie list Kolejkowanie sterowane siłą 10
Kolejkowanie wieloprocesorowe: algorytm Hu ZałoŜenie: graf sekwencyjny jest drzewem. Model taki moŝna stosować w przypadku problemów linii produkcyjnej Algorytm jest optymalny i zawsze potrafi dokonać kolejkowania o zwłoce λ przy liczbie zasobów a. KaŜda kolejność wykonania operacji przy wykorzystaniu a zasobów ma zwłokę większą lub równą od wyznaczonej przez algorytm Hu HU(G s (V,E),a){ etykietuj wierzchołki l=1; repeat{ U=wierzchołki z V, dla których nie ustalono kolejności, a które mają skolejkowanych lub nie mają poprzedników Wybierz wierzchołki S U, takie, Ŝe S a a etykiety S mają największe wartości w U Kolejkuj operacje S w kroku l podstawiając t i =l: v i S l=l+1 } Until(skolejkowano v n ) return(t) } Integer linear programming ILP Yields optimal solution to synthesis problems as it is based on an exact mathematical description of the problem. Solves scheduling, binding and allocation simultaneously. Standard optimization approaches (and software) are available to solve integer linear programs 11
ILP (1) declares variables x to be binary. (2) makes sure that exactly one variable x i,t for all t has the value 1, all others are 0. (3) represents operation start time (4) guarantees, that all precedence constraints are satisfied: t i t j +d j : (v i,v j ) E (5) makes sure, that the resource constraints are not violated. For all resource types v k V T and for all time instances t it is guaranteed that the number of active operations does not increase the number of available resource instances. ILP: minimize c T t t=(t 1,t 2,...,t λ ) c=(0,0,...,0,1): minimize latency c=(1,1,...,1,1): optimize operations start time ( 1) X = { x ; i = 0,1,..., n; l = 1,2,..., λ + 1} (2) xil = 1, i = 0,1,.., n (3) (4) l il l xil l xil + d j, i, j = 0,1,..., n : ( v j, vi ) l = l t l * i x il im i; T ( vi ) = k m= l di + 1 l l (5) x a, k = 1,2,..., n, l = 1,2,..., λ + 1 k res E ILP example For c=(1,..1) T we minimize: minimization result 12