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, Philippe Langlois, David Parello, Eric Petit, 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: 10.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.).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.