Конфлікти в конвеєрі (англ. pipeline hazards) — ситуації, які спричиняють неможливість повного завантаження конвеєра та ефективне його функціонування.
Розрізняють три класи таких конфліктів:
- Структурні конфлікти (англ. structural hazards) — виникають у випадках, коли неможливий розподіл апаратних ресурсів конвеєра між його окремими етапами для забезпечення повного його завантаження
- Конфлікти даних (англ. data hazards) — виникають в випадках, коли існують залежності між даними в різних командах, які знаходяться в конвеєрі.
- Конфлікти керування (англ. control hazards або англ. branching hazards) — виникають як наслідок конвеєризації команди переходу, які змінюють значення лічильника команд.
Структурні конфлікти
Структурні конфлікти (англ. structural hazards) в конвеєрі виникають частіше за все там, де функціональні пристрої, які відповідають безпосередньо за обчислення, конвеєризовані не повністю, або кількість їх недостатня для виконання довільної комбінації завантажених в конвеєр машинних команд.
![image](https://www.wikidata.uk-ua.nina.az/image/aHR0cHM6Ly93d3cud2lraWRhdGEudWstdWEubmluYS5hei9pbWFnZS9hSFIwY0hNNkx5OTFjR3h2WVdRdWQybHJhVzFsWkdsaExtOXlaeTkzYVd0cGNHVmthV0V2WTI5dGJXOXVjeTgzTHpjekwxQnBjR1ZzYVc1bFUzUnlkV04wU0dGNllYSmtMbWRwWmc9PS5naWY=.gif)
На малюнку зображена ситуація, яка спричиняє структурний конфлікт. Тут припускається, що процесор має лише один пристрій для здійснення операції множення, який виконує цю операцію за два та, відповідно, не допускає дальшого подрібнення на окремі стадії. Стадія ж конвеєра має тривалість одного машинного циклу.
В конвеєр послідовно завантажені дві команди множення, які не мають конфліктів даних, але суміщення виконання цих команд на стадії безпосереднього множення є неможливим, адже не може бути забезпечено розділення між ними пристрою множення. Тому для другої з команд конвеєр зупиняється на один машинний цикл.
Для того, щоби уникнути такої зупинки, в склад процесора може бути введений додатковий пристрій множення, або конвеєризований наявний чи прискорена його швидкодія (доведена до тривалості одного циклу конвеєра).
Конфлікти даних
Конфлікти даних (англ. data hazards) — конфлікти, які виникають в випадках, коли існують залежності між даними в різних командах, які знаходяться в конвеєрі.
Є три варіанти залежності:
- читання після запису, англ. read after write (RAW), справжня залежність
- запис після читання, англ. write after read (WAR)
- запис після запису, англ. write after write (WAW)
Читання після запису
Приклад
i1. R2 <- R1 + R3
i2. R4 <- R2 + R3
Способи вирішення
- затримка виконання залежної інструкції у конвеєрі;
- перенаправлення (forwarding) результату обчислення із однієї стадії конвеєра до іншої;
- планування виконання інструкцій із використанням позачергово виконання (англ. Out-of-order execution) таким чином, щоби на час запуску залежної інструкції необхідний результат уже було обчислено.
Конфлікти керування
Конфлікти керування (англ. control hazards) — різновид конфліктів в конвеєрі, спричинених особливостями конвеєрного виконання команд переходу.
Нехай i та j — дві машинні команди, і j в програмі є наступною за i. Кажуть[], що j залежить за переходом від i, коли рішення про необхідність виконання чи невиконання j приймається на основі результату, отриманого під час виконання i. Тобто, j залежить від i за переходом, якщо i — команда переходу.
Проблематичність конвеєрного виконання таких фрагментів програмного коду полягає в тому, що заздалегідь невідомо, виконання якої команди почнеться в результаті переходу (тобто відбудеться він чи ні). У випадку послідовного (неконвеєризованого) виконання, рішення про перехід отримується до того, як наступна команда буде завантажена в виконавчий пристрій. Але в конвеєрній моделі етапи виконання різних команд суміщаються в часі, тобто етап безпосереднього обчислення результату однієї команди суміщається з завантаженням наступної і т. д., і є неможливим дізнатись в процесі цього завантаження, чи потрібне воно взагалі, адже результат команди переходу ще не обчислений.
![image](https://www.wikidata.uk-ua.nina.az/image/aHR0cHM6Ly93d3cud2lraWRhdGEudWstdWEubmluYS5hei9pbWFnZS9hSFIwY0hNNkx5OTFjR3h2WVdRdWQybHJhVzFsWkdsaExtOXlaeTkzYVd0cGNHVmthV0V2WTI5dGJXOXVjeTgzTHpkbUwxQnBjR1ZzYVc1bFFuSmhibU5vTG1kcFpnPT0uZ2lm.gif)
Ця ситуація зображена на малюнку. Для такого конвеєра виконання переходу означає зупинку конвеєра на три такти, щоби вивантажити непотрібні тепер команди і завантажити необхідні з іншої гілки програми. Очевидно, що чим більше стадій в конвеєрі, і чим віддаленіша від початку стадія обчислення адреси переходу, тим значнішими будуть втрати швидкодії.
Див. також
Примітки
Ця стаття не містить . (квітень 2017) |
В іншому мовному розділі є повніша стаття Hazard (computer architecture)(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської.
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Konflikti v konveyeri angl pipeline hazards situaciyi yaki sprichinyayut nemozhlivist povnogo zavantazhennya konveyera ta efektivne jogo funkcionuvannya Rozriznyayut tri klasi takih konfliktiv Strukturni konflikti angl structural hazards vinikayut u vipadkah koli nemozhlivij rozpodil aparatnih resursiv konveyera mizh jogo okremimi etapami dlya zabezpechennya povnogo jogo zavantazhennya Konflikti danih angl data hazards vinikayut v vipadkah koli isnuyut zalezhnosti mizh danimi v riznih komandah yaki znahodyatsya v konveyeri Konflikti keruvannya angl control hazards abo angl branching hazards vinikayut yak naslidok konveyerizaciyi komandi perehodu yaki zminyuyut znachennya lichilnika komand Strukturni konfliktiStrukturni konflikti angl structural hazards v konveyeri vinikayut chastishe za vse tam de funkcionalni pristroyi yaki vidpovidayut bezposeredno za obchislennya konveyerizovani ne povnistyu abo kilkist yih nedostatnya dlya vikonannya dovilnoyi kombinaciyi zavantazhenih v konveyer mashinnih komand Na malyunku zobrazhena situaciya yaka sprichinyaye strukturnij konflikt Tut pripuskayetsya sho procesor maye lishe odin pristrij dlya zdijsnennya operaciyi mnozhennya yakij vikonuye cyu operaciyu za dva ta vidpovidno ne dopuskaye dalshogo podribnennya na okremi stadiyi Stadiya zh konveyera maye trivalist odnogo mashinnogo ciklu V konveyer poslidovno zavantazheni dvi komandi mnozhennya yaki ne mayut konfliktiv danih ale sumishennya vikonannya cih komand na stadiyi bezposerednogo mnozhennya ye nemozhlivim adzhe ne mozhe buti zabezpecheno rozdilennya mizh nimi pristroyu mnozhennya Tomu dlya drugoyi z komand konveyer zupinyayetsya na odin mashinnij cikl Dlya togo shobi uniknuti takoyi zupinki v sklad procesora mozhe buti vvedenij dodatkovij pristrij mnozhennya abo konveyerizovanij nayavnij chi priskorena jogo shvidkodiya dovedena do trivalosti odnogo ciklu konveyera Konflikti danihKonflikti danih angl data hazards konflikti yaki vinikayut v vipadkah koli isnuyut zalezhnosti mizh danimi v riznih komandah yaki znahodyatsya v konveyeri Ye tri varianti zalezhnosti chitannya pislya zapisu angl read after write RAW spravzhnya zalezhnist zapis pislya chitannya angl write after read WAR zapis pislya zapisu angl write after write WAW Chitannya pislya zapisu Priklad i1 R2 lt R1 R3 i2 R4 lt R2 R3 Sposobi virishennya zatrimka vikonannya zalezhnoyi instrukciyi u konveyeri perenapravlennya forwarding rezultatu obchislennya iz odniyeyi stadiyi konveyera do inshoyi planuvannya vikonannya instrukcij iz vikoristannyam pozachergovo vikonannya angl Out of order execution takim chinom shobi na chas zapusku zalezhnoyi instrukciyi neobhidnij rezultat uzhe bulo obchisleno Konflikti keruvannyaKonflikti keruvannya angl control hazards riznovid konfliktiv v konveyeri sprichinenih osoblivostyami konveyernogo vikonannya komand perehodu Nehaj i ta j dvi mashinni komandi i j v programi ye nastupnoyu za i Kazhut dzherelo sho j zalezhit za perehodom vid i koli rishennya pro neobhidnist vikonannya chi nevikonannya j prijmayetsya na osnovi rezultatu otrimanogo pid chas vikonannya i Tobto j zalezhit vid i za perehodom yaksho i komanda perehodu Problematichnist konveyernogo vikonannya takih fragmentiv programnogo kodu polyagaye v tomu sho zazdalegid nevidomo vikonannya yakoyi komandi pochnetsya v rezultati perehodu tobto vidbudetsya vin chi ni U vipadku poslidovnogo nekonveyerizovanogo vikonannya rishennya pro perehid otrimuyetsya do togo yak nastupna komanda bude zavantazhena v vikonavchij pristrij Ale v konveyernij modeli etapi vikonannya riznih komand sumishayutsya v chasi tobto etap bezposerednogo obchislennya rezultatu odniyeyi komandi sumishayetsya z zavantazhennyam nastupnoyi i t d i ye nemozhlivim diznatis v procesi cogo zavantazhennya chi potribne vono vzagali adzhe rezultat komandi perehodu she ne obchislenij Cya situaciya zobrazhena na malyunku Dlya takogo konveyera vikonannya perehodu oznachaye zupinku konveyera na tri takti shobi vivantazhiti nepotribni teper komandi i zavantazhiti neobhidni z inshoyi gilki programi Ochevidno sho chim bilshe stadij v konveyeri i chim viddalenisha vid pochatku stadiya obchislennya adresi perehodu tim znachnishimi budut vtrati shvidkodiyi Div takozhPerejmenuvannya registriv Zalezhnist danih Spekulyativne vikonannya Modul peredbachennya perehodiv Stan gonitviPrimitkiCya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno kviten 2017 V inshomu movnomu rozdili ye povnisha stattya Hazard computer architecture angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad