Instruction Level Parallelism
Instruction Level Parallelism (ILP) – parametr dotyczący oprogramowania, który mówi o tym jaka część z operacji zawartych w kodzie może być wykonana równolegle. ILP może być wartością czysto teoretyczna, w której dany programy analizowany jest tak jakby był uruchamiany na maszynie o nieskończonej liczbie zasobów. To znaczy nie są brane pod uwagę inne programy i braki ograniczonych zasobów typu rejestry[1]. ILP może być również traktowane jako średnia liczba instrukcji faktycznie wykonywanych równolegle i mówi się wówczas o metodach zwiększania ILP[2][3].
Obliczenia ILP
W dosyć prostym przypadku można wyobrazić sobie taki program:
int ab = a + b;
int cd = c - d;
int wynik = ab * cd;
W tym wypadku obliczenie wartości ab nie zależy od obliczenia cd i można je wykonać równolegle. Mamy zatem dwa polecenia wykonane w jednej jednostce czasu i trzecią, która wykonana zostanie w drugiej jednostce. Czyli ILP wynosi 3 / 2 = 1½.
Można też rozpatrywać to na zasadzie budowania grafu zależności konsumentów i producentów. Zmienna wynik jest konsumentem, który jest połączony z dwoma producentami (graf jest literą V). ILP jest średnią szerokości takiego grafu: (2 + 1) / 2 = 1½[1].
Praktyczne zastosowanie
W praktyce badanie ILP może być stosowane do przyśpieszenia wykonania programu w procesorach umożliwiających przetwarzanie potokowe[3]. Problem jest jednak zarówno identyfikacja niezależnych wątków, jak i synchronizacja wątków, które muszą dać wspólny wynik[2].
Zobacz też
Przypisy
- ↑ a b Bernard Goossens i inni, PerPI: A Tool to Measure Instruction Level Parallelism, „Applied parallel and scientific computing: 10th International Conference, PARA 2010, Revised selected papers, Part I”, June 6-9, Reykjavík 2010, s. 270–281, DOI: 0.1007/978-3-642-28151-8_27, ISBN 978-3-642-28151-8, OCLC 778458310 [dostęp 2022-12-30] .
- ↑ a b Kostas Bousias , Nabil Hasasneh , Chris Jesshope , Instruction Level Parallelism through Microthreading – A Scalable Approach to Chip Multiprocessors, „The Computer Journal”, 49 (2), 2006, s. 211–233, DOI: 10.1093/comjnl/bxh157, ISSN 1460-2067 [dostęp 2022-12-30] (ang.).
- ↑ a b Sweety Nain , Prachi Chaudhary , A neural network-based approach for the performance evaluation of branch prediction in instruction-level parallelism processors, „The Journal of Supercomputing”, 78 (4), 2022, s. 4960–4976, DOI: 10.1007/s11227-021-04045-3, ISSN 0920-8542 [dostęp 2022-12-30] (ang.).