Energooszczędne programowanie

Podobne dokumenty
Architektura potokowa RISC

Architektura mikroprocesorów TEO 2009/2010

Architektura komputerów

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

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]

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

Metody optymalizacji soft-procesorów NIOS

Przetwarzanie potokowe pipelining

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.

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

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Projektowanie. Projektowanie mikroprocesorów

Zrównoleglenie i przetwarzanie potokowe

Programowanie współbieżne Wykład 2. Iwona Kochańska

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

Wydajność obliczeń a architektura procesorów

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Architektura komputerów

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Budowa Mikrokomputera

Architektura komputerów

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

Architektura komputerów

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Architektura systemów komputerowych. dr Artur Bartoszewski

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Architektura systemów komputerowych

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Architektura komputerów

Struktura i działanie jednostki centralnej

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

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

Technologia informacyjna. Urządzenia techniki komputerowej

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

ARCHITEKTURA PROCESORA,

Budowa i zasada działania komputera. dr Artur Bartoszewski

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Architektura Systemów Komputerowych

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Mikroprocesory rodziny INTEL 80x86

Architektura Systemów Komputerowych

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

Dr inż. hab. Siergiej Fialko, IF-PK,

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

Kurs Zaawansowany S7. Spis treści. Dzień 1

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie Niskopoziomowe

Architektura komputerów

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

Architektura komputerów

Wykład 7. Zarządzanie pamięcią

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

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

MIKROKONTROLERY I MIKROPROCESORY

Architektura komputerów

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Budowa komputera Komputer computer computare

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Generacja kodu docelowego

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Algorytmy dla maszyny PRAM

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

UKŁADY MIKROPROGRAMOWALNE

Kompilator języka C na procesor 8051 RC51 implementacja

KONSTRUKCJA KOMPILATORÓW

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Optymalizacja wykonania programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

Metody Metody, parametry, zwracanie wartości

Wykład 2. Mikrokontrolery z rdzeniami ARM

Historia modeli programowania

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

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

Wskaźniki w C. Anna Gogolińska

Architektura Systemów Komputerowych

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Magistrala systemowa (System Bus)

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

LEKCJA TEMAT: Zasada działania komputera.

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

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

4. Procesy pojęcia podstawowe

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

4. Procesy pojęcia podstawowe

Transkrypt:

Projektowanie energooszczędnych systemów wbudowanych dr inż. Ireneusz Brzozowski C-3, p. 512 WIET KATEDRA ELEKTRONIKI Elektronika i Telekomunikacja, Systemy Wbudowane www.agh.edu.pl Projektowanie energooszczędnych systemów wbudowanych Energooszczędne programowanie Wstęp Sprzęt źródła strat energii Optymalizacja oprogramowania niezależna od sprzętu A. Pal, Low-Power VLSI Circuits and Systems, Chapter 12, New Delhi: Springer, 2015. EiT 2017/18 2 1

Wstęp Gdyby porównać system mikroprocesorowy do samochodu, to sprzęt hardware https://pixabay.com/ oprogramowanie software biegi sprzęgło gaz hamulec wydajność energetyczna zasięg, zużycie paliwa 3 Wstęp - podział optymalizacja poboru mocy w oprogramowaniu zależna od sprzętu niezależna od sprzętu wykorzystuje cechy architektury docelowego procesora charakterystyka docelowej platformy jej specjalne właściwości mogą być wykorzystane dla programowej redukcji strat energii, właściwa identyfikacja parametrów sprzętu, parametryzacja cech platformy łatwiej dla kompilatora. nie potrzebuje żadnych informacji o procesorze i może być zastosowana w dowolnym systemie 4 2

Sprzęt źródła strat energii CPU: CISC versus RISC CISC: b. dużo instrukcji o zmiennej długości, dużo trybów adresowania, różny czas wykonywania rozkazów. RISC: zredukowana liczba instrukcji o stałej długości, mało trybów adresowania, stały czas wykonywania. CISC daje większe możliwości niż RISC. Kompilator musi znać relatywny koszt realizacji instrukcji, aby wybrać najlepszą sekwencję rozkazów realizujących zadanie. ALU: superskalarność ograniczona przez możliwości zrównoleglenia na poziomie instrukcji niebezpieczeństwo niepełnego obciążenia wszystkich jednostek prawie zawsze jest jednostka, która czeka. SMT (Simultaneous multithreading) nadzoruje pracę wątków. 5 Sprzęt źródła strat energii Potokowość: w celu poprawy wydajności ALU wykonanie rozkazów podzielono na etapy. Np. rozkaz może być zrealizowany w pięciu etapach pięciostopniowa kolejka. Niebezpieczeństwo: konflikt kolejki (pipeline stalls) jałowe cykle CPU strata czasu i energii. Kompilator przez planowanie kolejności rozkazów i reorganizację może zminimalizować ilość konfliktów i zredukować zbędny pobór energii. Rejestry: CPU jest wyposażony w rejestry ogólnego przeznaczenia i specjalne, w których można przechowywać pośrednie wyniki obliczeń i zmienne zamiast w pamięci, do której dostęp zabiera więcej czasu i wymaga większego poboru energii. 6 3

Sprzęt źródła strat energii Magistrala systemowa: linie adresowe, danych i sterujące służą do komunikacji CPU z pamięcią i urządzeniami we/wy. Duża pojemność linii. Aktywność zależy od programu i przetwarzanych danych pobór mocy. Kompilator może uwzględnić aktywność na magistralach, ale łatwiej na adresowej niż danych. Pamięć: Hierarchia: podręczna, główna i zewnętrzna. Podręczna jest najmniejsza, ale najszybsza, Niektóre techniki programowej redukcji poboru mocy mogą pogorszyć wydajność pamięci podręcznej kolizje, chybienia. Dodatkowe transfery na magistralach większy pobór mocy. 7 Sprzęt źródła strat energii Pamięć: Techniki redukcji poboru mocy Zminimalizować ilość dostępów do pamięci przez program, Zmniejszyć całkowitą ilość pamięci zajętej przez program, Zapewnić dostęp do pamięci jak najbliżej procesora: Rejestry Pamięć podręczna Pamięć główna Pamięć zewnętrzna Zastosować najefektywniejszy możliwy transfer (np. zamiast ładować pojedyncze słowa zastosował ładowanie wielokrotne, równolegle itp.) 8 4

Optymalizacja niezależna od sprzętu OPTYMALIZAJA poboru energii zmniejszyć wykonywany kod usunąć zbędne obliczenia i pośrednie wartości mniej pracy CPU, mniej dostępów do cache i pamięci mniejszy pobór mocy i szybsza praca programu unikać redundantnych obliczeń wykorzystać powtórnie raz obliczone wartość mniej skoków skoki zastąpić kodowaniem w linii (ang. strait-line code, branch-free code) ponieważ skoki kolidują z pobieraniem instrukcji (pamięć podręczna) 9 Optymalizacja niezależna od sprzętu OPTYMALIZAJA poboru energii zoptymalizować wspólne przypadki unikalne cechy: szybka ścieżka wolna ścieżka lokalność kod i dane pobierane w tym samym czasie powinny być umieszczone blisko siebie w pamięci wykorzystać hierarchię pamięci częsty dostęp do bliższej pamięci: rejestry, podręczna, główna, itd.. zrównoleglić przeorganizować operacje, tak aby możliwa była równoległość 10 5

Optymalizacja niezależna od sprzętu Kompilator znajduje się pomiędzy wejściem zapisanego programu a generatorem kodu i pracuje na pośrednim kodzie. Zatem może analizować kontroling programu i przepływ danych w tym kodzie i wykonać odpowiednie jego transformacje, żeby poprawić ten kod. Konwencjonalne kompilatory mogą: optymalizować rozmiar generowanego kodu, redukować czas wykonania programu. Niektóre z rozwiązań są przedstawione dalej EiT 2017/18 11 Wstawki małych funkcji wstawić ciało funkcji zamiast odwołania do niej. Możliwy zysk: nie ma kosztu wywołania i powrotu z funkcji krótszy czas wykonania, eliminacja skoków bliski kod poprawa wydajności pamięci podręcznej (lepsza lokalność odwołań), można zastosować inne metody optymalizacji. Koszt: większy kod. Before inlining: int f(int y) { return pred(y) + pred(0) + pred(y +1); int pred(int x) { if (x == 0) return 0; else return x 1; After inlining: int f(int y) { int temp; if (y == 0) temp = 0; else temp = y 1; /* (1) */ if (0 == 0) temp += 0; else temp += 0 1; /* (2) */ if (y+1 == 0) temp += 0; else temp += (y + 1) 1; /* (3) */ return temp; EiT 2017/18 12 6

Przeniesienie kodu na zewnątrz pętli część obliczeń poza pętlą wykonana jednokrotnie, a ich wynik jest wprowadzony do pętli przez zmienną tymczasową. nie ma wielokrotnych obliczeń tej samej wartości. Koszt: dodatkowa zmienna tymczasowa trzeba zarezerwować dla niej odpowiednie zasoby. DO I = 1100 ARRAY(I) = 5,0 * PI * I ENDDO t = 5,0 * PI DO I = 1100 ARRAY(I) = t * I ENDDO EiT 2017/18 13 Eliminacja martwych stałych (ang. dead-store elimination) jeśli kompilator znajdzie nie używane zmienne może je usunąć oraz kod z nimi związany. zmniejszenie rozmiaru kodu, przyspieszenie jego wykonania. int dse(void) { int x = 15; int y = 35; /* Assignment to dead variable */ int z; z = x << 2; return z; y = 33; /* Unreachable code */ return 0; EiT 2017/18 14 7

Eliminacja martwego kodu (ang. dead-code elimination) usunąć kod, który nigdy nie będzie wykonany lub kod dotyczący martwych zmiennych lub nieużywane funkcje itp. zmniejszenie rozmiaru kodu, przyspieszenie jego wykonania. int main(void) { int x = 5; int y = 6; int z; z = x * (y >> 1); if (z == 0) { /* DEBUG */ printf( %d\n, z); return z; EiT 2017/18 15 Dynamiczna eliminacja martwego kodu usunąć warunkowo martwy kod i ponownie połączyć potrzebne bloki programu podczas pracy programu. zmniejszenie rozmiaru kodu, przyspieszenie jego wykonania. O dynamicznym eliminowaniu martwego kodu możemy mówić, jeśli jest nadzorca (może funkcjonalność w systemie operacyjnym), który będzie potrafił dynamicznie wykrywać żądania, identyfikować je i rozwiązywać powstałe zależności a następnie będzie potrafił usunąć martwe (raczej niewykorzystywane) fragmenty oprogramowania i na nowo połączy potrzebne bloki. EiT 2017/18 16 8

Obliczanie niezmienników pętli wyrażenia nie zmieniające swojej wartości w kolejnych iteracjach pętli obliczyć raz poza pętlą (ang. loop-invariant computation). nie ma wielokrotnych obliczeń tej samej wartości kod działa szybciej. Koszt: zmienna tymczasowa pamięć dla niej. for (i=0; i<10; i++) { a[i] = 10 * i + x * x; t = x * x; for (i=0; i<10; i++) { a[i] = 10 * i + t; EiT 2017/18 17 Eliminacja wspólnych podwyrażeń redundancyjne obliczenia takich samych wyrażeń zastąpić jednokrotnym obliczeniem i wartość przechować w zmiennej tymczasowej (ang. common sub-expresion elimination). nie ma wielokrotnych obliczeń tej samej wartości kod działa szybciej. Koszt: zmienna tymczasowa pamięć dla niej. X = A * LOG(Y) + (LOG(Y) ** 2) t = LOG(Y) X = A * t + (t ** 2) EiT 2017/18 18 9

Rozwijanie pętli wielokrotne umieszczenie ciała pętli w kodzie eliminując sprawdzanie warunków pętli i skoki, które pogarszają kolejkowość. mniejszy czas wykonania kodu (nie ma sprawdzania warunków i skoków) redukcja poboru mocy. Koszt: znaczne zwiększenie kodu. sum = 0; for (i=0; i<4; i++) { sum += array[i]; sum = 0; i = 0; sum += array[i]; sum += array[i+1]; sum += array[i+2]; sum += array[i+3]; EiT 2017/18 19 10