Instruction Level Parallelism

Z Wikipedii, wolnej encyklopedii

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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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ż[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. 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, DOI10.1007/978-3-642-28151-8_27, ISBN 978-3-642-28151-8, OCLC 778458310 [dostęp 2022-12-30].
  2. 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, DOI10.1093/comjnl/bxh157, ISSN 1460-2067 [dostęp 2022-12-30] (ang.).
  3. 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, DOI10.1007/s11227-021-04045-3, ISSN 0920-8542 [dostęp 2022-12-30] (ang.).