Ця стаття не містить . (березень 2016) |
Кома́нди перехо́ду або Кома́нди переда́чі керування (англ. branch instructions) — команди процесора, які змінюють послідовний порядок виконання програми (тобто перезавантажують лічильник команд вказаною адресою, а не збільшуючи його значення на довжину поточної команди). Команди переходу можуть бути умовними (англ. conditional branch) та безумовними (англ. unconditional branch).
Команди умовного переходу
В командах умовного переходу рішення про примусовий перехід до іншої адреси (шляхом перезавантаження лічильника команд) або продовження звичайного режиму виконання програми приймається в залежності від виконання або невиконання певної умови.
Реалізація команд умовних переходів в різних комп'ютерних архітектурах може відрізнятись. В деяких архітектурах обчислення умови для прийняття рішення про подальший перехід та безпосередньо команда переходу відокремлені.
Такою умовою може бути, наприклад, рівність певних значень, або їхня нерівність (в той чи інший бік). Для обчислення цього факту часто використовують арифметичні команди (тоді якщо операнди рівні, результат буде нульовим і т. ін.).
В більшості CISC-архітектур арифметичні команди встановлюють спеціалізовані біти окремого регістра стану процесора (такі, наприклад, як біт рівності результатів, біт нульового результату тощо), а команди умовного переходу можуть відповідно аналізувати ці біти.
+---------+---------+-------+----------------------------+ | BEQ | R1 | R2 | адреса переходу | BEQ R1,R2 +---------+---------+-------+----------------------------+ Формат RISC-команди умовного переходу за рівністю значень двох регістрів (PC:=адреса переходу ЯКЩО R1=R2)
В RISC-архітектурах команди умовного переходу, як правило, здатні аналізувати результат в одному з регістрів загального призначення (нульовий/ненульовий) або порівнювати результати в двох різних регістрах (більше/менше) і на основі цього перезавантажувати лічильник команди чи ні.
Як правило, повного перезавантаження адреси лічильника команд не відбувається. Поле адреси переходу у відповідних командах менше розрядності лічильника, тому перезавантажуються лише молодші розряди адреси. Таким чином, діапазон можливих адрес скорочується, але формат команди залишається фіксованим.
Команди безумовного переходу
+---------+---------------------------------------------+ | JMP | адреса переходу | +---------+---------------------------------------------+
Безумовний перехід примусово перезавантажує лічильник команд адресою (повністю або лише молодшу частину адреси), яка міститься у відповідному полі команди. Діапазон можливих адрес для переходу визначається розрядністю поля команди.
Команди виклику підпрограм і повернення з підпрограм
- команди виклику підпрограм і повернення з підпрограм — передають керування підпрограмі, зберігаючи адресу повернення й, можливо, [en] (інформації про стан системи), а також організують коректне відновлення після виходу з підпрограми.
- команди виклику оброблювачів переривань — передають керування оброблювачу переривань. Іноді ці команди розглядаються як особливий випадок команд виклику підпрограм.
Проблеми в конвеєрі
В конвеєрі при виконанні команди переходу (насамперед умовного) факт того, чи відбудеться перехід, чи ні, стає відомим на пізніх етапах конвеєра. За цей час в конвеєр на ранні етапи завантажуються наступні за цією команди. У випадку, якщо перехід відбувається, то зрозуміло, що потрібно повністю замінити послідовність інструкцій, які слідують за командою переходу. Такі конфлікти в конвеєрі призводять до істотного падіння швидкодії процесора. В сучасних процесорах для зниження негативу від цих конфліктів використовують різні методики передбачення переходів та спекулятивне виконання.
Див. також
- Оператор — команда або інструкція в програмуванні.
- Цикл програми
- Блок
- Мова програмування
- Рекурсія
- Умовний перехід
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
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 berezen 2016 Koma ndi pereho du abo Koma ndi pereda chi keruvannya angl branch instructions komandi procesora yaki zminyuyut poslidovnij poryadok vikonannya programi tobto perezavantazhuyut lichilnik komand vkazanoyu adresoyu a ne zbilshuyuchi jogo znachennya na dovzhinu potochnoyi komandi Komandi perehodu mozhut buti umovnimi angl conditional branch ta bezumovnimi angl unconditional branch Komandi umovnogo perehoduV komandah umovnogo perehodu rishennya pro primusovij perehid do inshoyi adresi shlyahom perezavantazhennya lichilnika komand abo prodovzhennya zvichajnogo rezhimu vikonannya programi prijmayetsya v zalezhnosti vid vikonannya abo nevikonannya pevnoyi umovi Realizaciya komand umovnih perehodiv v riznih komp yuternih arhitekturah mozhe vidriznyatis V deyakih arhitekturah obchislennya umovi dlya prijnyattya rishennya pro podalshij perehid ta bezposeredno komanda perehodu vidokremleni Takoyu umovoyu mozhe buti napriklad rivnist pevnih znachen abo yihnya nerivnist v toj chi inshij bik Dlya obchislennya cogo faktu chasto vikoristovuyut arifmetichni komandi todi yaksho operandi rivni rezultat bude nulovim i t in V bilshosti CISC arhitektur arifmetichni komandi vstanovlyuyut specializovani biti okremogo registra stanu procesora taki napriklad yak bit rivnosti rezultativ bit nulovogo rezultatu tosho a komandi umovnogo perehodu mozhut vidpovidno analizuvati ci biti BEQ R1 R2 adresa perehodu BEQ R1 R2 Format RISC komandi umovnogo perehodu za rivnistyu znachen dvoh registriv PC adresa perehodu YaKShO R1 R2 V RISC arhitekturah komandi umovnogo perehodu yak pravilo zdatni analizuvati rezultat v odnomu z registriv zagalnogo priznachennya nulovij nenulovij abo porivnyuvati rezultati v dvoh riznih registrah bilshe menshe i na osnovi cogo perezavantazhuvati lichilnik komandi chi ni Yak pravilo povnogo perezavantazhennya adresi lichilnika komand ne vidbuvayetsya Pole adresi perehodu u vidpovidnih komandah menshe rozryadnosti lichilnika tomu perezavantazhuyutsya lishe molodshi rozryadi adresi Takim chinom diapazon mozhlivih adres skorochuyetsya ale format komandi zalishayetsya fiksovanim Komandi bezumovnogo perehodu JMP adresa perehodu Bezumovnij perehid primusovo perezavantazhuye lichilnik komand adresoyu povnistyu abo lishe molodshu chastinu adresi yaka mistitsya u vidpovidnomu poli komandi Diapazon mozhlivih adres dlya perehodu viznachayetsya rozryadnistyu polya komandi Komandi vikliku pidprogram i povernennya z pidprogramkomandi vikliku pidprogram i povernennya z pidprogram peredayut keruvannya pidprogrami zberigayuchi adresu povernennya j mozhlivo en informaciyi pro stan sistemi a takozh organizuyut korektne vidnovlennya pislya vihodu z pidprogrami komandi vikliku obroblyuvachiv pererivan peredayut keruvannya obroblyuvachu pererivan Inodi ci komandi rozglyadayutsya yak osoblivij vipadok komand vikliku pidprogram Problemi v konveyeriV konveyeri pri vikonanni komandi perehodu nasampered umovnogo fakt togo chi vidbudetsya perehid chi ni staye vidomim na piznih etapah konveyera Za cej chas v konveyer na ranni etapi zavantazhuyutsya nastupni za ciyeyu komandi U vipadku yaksho perehid vidbuvayetsya to zrozumilo sho potribno povnistyu zaminiti poslidovnist instrukcij yaki sliduyut za komandoyu perehodu Taki konflikti v konveyeri prizvodyat do istotnogo padinnya shvidkodiyi procesora V suchasnih procesorah dlya znizhennya negativu vid cih konfliktiv vikoristovuyut rizni metodiki peredbachennya perehodiv ta spekulyativne vikonannya Div takozhOperator komanda abo instrukciya v programuvanni Cikl programi Blok Mova programuvannya Rekursiya Umovnij perehid Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi