В архітектурі комп'ютера, перейменування регістрів (англ. Register Renaming) — це метод ослаблення взаємозалежностей команд, що виконуються процесором, при позачерговому виконанні.
У тому випадку, якщо відповідно з двома або більше командами необхідно здійснити запис даних в один регістр, їх коректне позачергове виконання стає неможливим (пізніша команда не може бути оброблена до завершення більш ранньої) навіть у тому випадку, якщо при цьому немає залежності по даним. Такі взаємозалежності часто називають помилковими (у разі істинної залежності існує залежність і за даними).
Так як кількість архітектурних регістрів зазвичай обмежена (наприклад, стандартно архітектура x86 передбачає тільки вісім регістрів загального призначення), ймовірність виникнення помилкових взаємозалежностей досить велика, що може призвести до зниження продуктивності процесора.
Перейменування регістрів являє собою перетворення програмних посилань на архітектурні регістри в посилання на фізичні регістри і дозволяє послабити вплив помилкових взаємозалежностей за рахунок використання великої кількості фізичних регістрів замість обмеженої кількості архітектурних (так, наприклад, x86-сумісні процесори архітектури Intel P6 містять 40 фізичних регістрів). При цьому процесор відстежує, стан яких фізичних регістрів відповідають стану архітектурних, а видача результатів здійснюється в порядку, який передбачений програмою.
Означення проблеми
У регістровій машині програми складаються з команд, які працюють на певних значеннях. Команди повинні давати імена цим значенням для того, щоб їх можна було відрізнити одне від одного. Звичайна команда повинна вказати, додати X, додати Y і результат записати в Z. В командах є X, Y і Z і імена місць зберігання.
Щоб мати компактний код команд, більшість наборів команд процесора мають невеликий набір в спеціальних місцях, які можуть бути безпосередньо названі. Наприклад, набір команд для x86 архітектури має 8 цілих регістрів, x86-64 має 16, багато RISC мають 32, а IA-64 - 128. У невеликих процесорах ім'я цієї області пам'яті відповідає елементам регістрового файлу.
Різні команди можуть займати різну кількість часу; наприклад процесор здатний виконувати сотні команд, поки відбувається одне завантаження із оперативної пам'яті. Більш короткі команди виконуються, поки це завантаження завершиться, так команди закінчують роботу у порядку відмінному від порядку з оригінальної програми. Позачергове виконання використовується в останніх високопродуктивних процесорах для досягнення деякого збільшення швидкості.
Розглянемо, як цей шматок коду працює процесорі, що може змінити порядок команд:
# | Команди |
---|---|
1 | R1 = M[1024] |
2 | R1 = R1 + 2 |
3 | M[1032] = R1 |
4 | R1 = M[2048] |
5 | R1 = R1 + 4 |
6 | M[2056] = R1 |
Команди 4, 5 і 6 є незалежними командами 1, 2 і 3, але процесор не може завершити 4 доти, поки 3 не буде зроблено, в іншому випадку в 3 команди буде записано некоректне значення. Ці обмеження можуть бути усунені шляхом зміни імен деяких регістрів:
# | Команда | # | Команда | |
---|---|---|---|---|
1 | R1 = M[1024] | 4 | R2 = M[2048] | |
2 | R1 = R1 + 2 | 5 | R2 = R2 + 4 | |
3 | M[1032] = R1 | 6 | M[2056] = R2 |
Зараз команди 4,5 і 6 можуть виконуватися паралельно з 1, 2 і 3, так що програма може виконувати свою роботу швидше.
Компілятор виявив різні команди і спробував призначити їх на інший регістр, коли це було можливо. Тим не менш, існує скінченна кількість імен регістру які можуть бути використані в асемблерному коді. Багато високопродуктивних процесорів мають більше фізичних регістрів, ніж підтримується архітектурою системи команд, так що вони перейменовують регістри в апаратному забезпеченні, щоб досягти додаткового паралелізму.
Конфлікти даних
Коли більш ніж одна команда використовує певне місце як операнд, або читаючи звідти, або записуючи туди, виконання цих команд у порядку відмінному від заданого початковою програмою може призвести до таких трьох конфліктів даних:
- Читання після запису (RAW): При читанні з регістра або комірки пам'яті, повинно повернути значення розміщене там останнім записом в програмному порядку, а не якимсь іншим записом. Це згадується як істинна залежність або залежність потоку даних, і вимагає, щоб інструкції виконувались в заданому програмою порядку.
- Запис після запису (WAW): Послідовні записи в певному регістрі або пам'яті, повинні залишити це місце із результатом другого запису. Це може бути вирішено шляхом знищення (синоніми: скасування, анулювання) першого запису, якщо це необхідно. WAW залежності також відомі як залежності виведення.
- Запис після читання (WAR): При читанні з регістра або пам'яті повинно повертатися останнє значення, записане в цю область пам'яті, а не те, яке там з'явилось там після цього запису. Це свого роду помилкова залежність, яка може бути вирішена шляхом перейменування. WAR залежність також відома як анти-залежність.
Див. також
![]() | Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття не містить . (червень 2013) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V arhitekturi komp yutera perejmenuvannya registriv angl Register Renaming ce metod oslablennya vzayemozalezhnostej komand sho vikonuyutsya procesorom pri pozachergovomu vikonanni U tomu vipadku yaksho vidpovidno z dvoma abo bilshe komandami neobhidno zdijsniti zapis danih v odin registr yih korektne pozachergove vikonannya staye nemozhlivim piznisha komanda ne mozhe buti obroblena do zavershennya bilsh rannoyi navit u tomu vipadku yaksho pri comu nemaye zalezhnosti po danim Taki vzayemozalezhnosti chasto nazivayut pomilkovimi u razi istinnoyi zalezhnosti isnuye zalezhnist i za danimi Tak yak kilkist arhitekturnih registriv zazvichaj obmezhena napriklad standartno arhitektura x86 peredbachaye tilki visim registriv zagalnogo priznachennya jmovirnist viniknennya pomilkovih vzayemozalezhnostej dosit velika sho mozhe prizvesti do znizhennya produktivnosti procesora Perejmenuvannya registriv yavlyaye soboyu peretvorennya programnih posilan na arhitekturni registri v posilannya na fizichni registri i dozvolyaye poslabiti vpliv pomilkovih vzayemozalezhnostej za rahunok vikoristannya velikoyi kilkosti fizichnih registriv zamist obmezhenoyi kilkosti arhitekturnih tak napriklad x86 sumisni procesori arhitekturi Intel P6 mistyat 40 fizichnih registriv Pri comu procesor vidstezhuye stan yakih fizichnih registriv vidpovidayut stanu arhitekturnih a vidacha rezultativ zdijsnyuyetsya v poryadku yakij peredbachenij programoyu Oznachennya problemiU registrovij mashini programi skladayutsya z komand yaki pracyuyut na pevnih znachennyah Komandi povinni davati imena cim znachennyam dlya togo shob yih mozhna bulo vidrizniti odne vid odnogo Zvichajna komanda povinna vkazati dodati X dodati Y i rezultat zapisati v Z V komandah ye X Y i Z i imena misc zberigannya Shob mati kompaktnij kod komand bilshist naboriv komand procesora mayut nevelikij nabir v specialnih miscyah yaki mozhut buti bezposeredno nazvani Napriklad nabir komand dlya x86 arhitekturi maye 8 cilih registriv x86 64 maye 16 bagato RISC mayut 32 a IA 64 128 U nevelikih procesorah im ya ciyeyi oblasti pam yati vidpovidaye elementam registrovogo fajlu Rizni komandi mozhut zajmati riznu kilkist chasu napriklad procesor zdatnij vikonuvati sotni komand poki vidbuvayetsya odne zavantazhennya iz operativnoyi pam yati Bilsh korotki komandi vikonuyutsya poki ce zavantazhennya zavershitsya tak komandi zakinchuyut robotu u poryadku vidminnomu vid poryadku z originalnoyi programi Pozachergove vikonannya vikoristovuyetsya v ostannih visokoproduktivnih procesorah dlya dosyagnennya deyakogo zbilshennya shvidkosti Rozglyanemo yak cej shmatok kodu pracyuye procesori sho mozhe zminiti poryadok komand Komandi1 R1 M 1024 2 R1 R1 23 M 1032 R14 R1 M 2048 5 R1 R1 46 M 2056 R1 Komandi 4 5 i 6 ye nezalezhnimi komandami 1 2 i 3 ale procesor ne mozhe zavershiti 4 doti poki 3 ne bude zrobleno v inshomu vipadku v 3 komandi bude zapisano nekorektne znachennya Ci obmezhennya mozhut buti usuneni shlyahom zmini imen deyakih registriv Komanda Komanda1 R1 M 1024 4 R2 M 2048 2 R1 R1 2 5 R2 R2 43 M 1032 R1 6 M 2056 R2 Zaraz komandi 4 5 i 6 mozhut vikonuvatisya paralelno z 1 2 i 3 tak sho programa mozhe vikonuvati svoyu robotu shvidshe Kompilyator viyaviv rizni komandi i sprobuvav priznachiti yih na inshij registr koli ce bulo mozhlivo Tim ne mensh isnuye skinchenna kilkist imen registru yaki mozhut buti vikoristani v asemblernomu kodi Bagato visokoproduktivnih procesoriv mayut bilshe fizichnih registriv nizh pidtrimuyetsya arhitekturoyu sistemi komand tak sho voni perejmenovuyut registri v aparatnomu zabezpechenni shob dosyagti dodatkovogo paralelizmu Konflikti danihKoli bilsh nizh odna komanda vikoristovuye pevne misce yak operand abo chitayuchi zvidti abo zapisuyuchi tudi vikonannya cih komand u poryadku vidminnomu vid zadanogo pochatkovoyu programoyu mozhe prizvesti do takih troh konfliktiv danih Chitannya pislya zapisu RAW Pri chitanni z registra abo komirki pam yati povinno povernuti znachennya rozmishene tam ostannim zapisom v programnomu poryadku a ne yakims inshim zapisom Ce zgaduyetsya yak istinna zalezhnist abo zalezhnist potoku danih i vimagaye shob instrukciyi vikonuvalis v zadanomu programoyu poryadku Zapis pislya zapisu WAW Poslidovni zapisi v pevnomu registri abo pam yati povinni zalishiti ce misce iz rezultatom drugogo zapisu Ce mozhe buti virisheno shlyahom znishennya sinonimi skasuvannya anulyuvannya pershogo zapisu yaksho ce neobhidno WAW zalezhnosti takozh vidomi yak zalezhnosti vivedennya Zapis pislya chitannya WAR Pri chitanni z registra abo pam yati povinno povertatisya ostannye znachennya zapisane v cyu oblast pam yati a ne te yake tam z yavilos tam pislya cogo zapisu Ce svogo rodu pomilkova zalezhnist yaka mozhe buti virishena shlyahom perejmenuvannya WAR zalezhnist takozh vidoma yak anti zalezhnist Div takozhBagatonitevistCe nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya 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 cherven 2013