28.11.2025 П6: 1/40
Инструкције се могу приближно поделити на неколико група које
су релативно сличне за све рачунаре, иако се појединачне
инструкције могу разликовати у детаљима.
Поред тога, сваки рачунар има неколико неуобичајених
инструкција, које су додате ради компатибилности са претходним
генерацијама, или зато што је пројектант имао бриљантну идеју,
или можда зато што је нека агенција платила произвођачу да их
укључи. Те основне групе инструкција су:
1. Инструкције за премештање података
2. Бинарне операције
3. Унарне операције
4. Поређења и условни скокови
5. Инструкције за позивање процедура
6. Управљање петљама
7. Улаз/излаз
6.2. Типови инструкција
28.11.2025 П6: 2/40
6.2.1. Инструкције за премештање података
Копирање података са једног места на друго је најосновнија од
свих операција. Под копирањем подразумевамо креирање новог
објекта, са идентичним распоредом битова као оригинал. Ова
употреба речи „премештање“ се донекле разликује од њене
уобичајене употребе у говорном језику.
Када кажемо да се Јанко Јанковић преселио из Ниша у
Крагујевац, не мислимо да је идентична копија г. Јанковића
створена у Крагујевцу и да је оригинал још увек у Нишу. Када
кажемо да је садржај меморијске локације 2000 премештен у неки
регистар, увек мислимо да је тамо креирана идентична копија и да
је оригинал још увек нетакнут на локацији 2000.
Инструкције за премештање података би боље било назвати
инструкцијама за „дуплирање података“, али термин „премештање
података“ дуго устаљен.
6.2. Типови инструкција
28.11.2025 П6: 3/40
6.2.1. Инструкције за премештање података
Постоје два разлога за копирање података са једне локације на
другу.
Први разлог је фундаментални: додељивање вредности
променљивим. Додељивање А = B се имплементира копирањем
вредности са меморијске адресе B на локацију А.
Други разлог је припрема података за ефикасније приступање
и коришћење.
Многе инструкције могу приступити променљивим само када су
доступне у регистрима. Пошто постоје два могућа извора за
податак (меморија или регистар) и постоје два могућа одредишта
за податак (меморија или регистар), могуће су четири различите
врсте копирања.
6.2. Типови инструкција
28.11.2025 П6: 4/40
6.2.1. Инструкције за премештање података
Неки рачунари имају четири инструкције за четири случаја, док
други имају једну инструкцију за сва четири случаја.
Трећи користе LOAD за прелазак из меморије у регистар, STORE
за прелазак из регистра у меморију, MOVE за прелазак из једног
регистра у други, и нема инструкција за копирање из меморије у
меморију.
Инструкције за премештање података морају да назначе количину
података која се премешта. Код неких рачунара постоје скупови
инструкција за премештање променљивих количина података у
распону од 1 бита па до целе меморије. На рачунарима са
фиксном дужином речи, количина која се премешта је често тачно
једна реч. Све мање или више од тога мора да се премести
софтверски – потпрограмом који се користи за померање и
спајање битова.
6.2. Типови инструкција
28.11.2025 П6: 5/40
6.2.2. Бинарне операције
Бинарне операције комбинују два операнда да би произвеле
резултат.
Све архитектуре скупа инструкција имају инструкције за
извршавање сабирања и одузимања целих бројева. Множење
и дељење целих бројева су такође скоро стандардни.
Друга група бинарних операција укључује Булове инструкције.
Иако постоји 16 Булових функција две променљиве, мало, ако их
уопште има, рачунара има инструкције за свих 16. Обично су
присутни И, ИЛИ и НЕ; понекад су ту и ИСКЉУЧУЈУЋЕ ИЛИ,
НИЛИ и НИ.
6.2. Типови инструкција
28.11.2025 П6: 6/40
6.2.2. Бинарне операције
Већина рачунара данас такође подржава скуп инструкција за
рад са бројевима у формату са покретним зарезом, што
грубо одговара целобројним аритметичким операцијама.
Рачунари подржавају бар две дужине бројева у формату
покретног зареза, краће због брзине и дуже за случајеве када
је потребно много цифара тачности.
Иако постоји много могућих варијација за формате бројева са
покретним зарезом, један стандард је сада готово универзално
усвојен: IEEE 754.
6.2. Типови инструкција
28.11.2025 П6: 7/40
6.2.3. Унарне операције
Унарне операције имају један операнд и производе један
резултат. Пошто је потребно навести једну адресу мање него
код бинарних операција, инструкције су понекад краће, мада
се често морају навести и друге информације.
Инструкције за померање или ротирање садржаја речи или
бајта су прилично корисне и често се дају у неколико
варијација.
Померања су операције у којима се битови померају лево или
десно, при чему се битови померени са краја речи губе.
Ротације су померања у којима се битови потиснути са једног
краја поново појављују на другом крају.
6.2. Типови инструкција
28.11.2025 П6: 8/40
6.2.3. Унарне операције
Разлика између померања и ротације је илустрована испод.
00000000 00000000 00000000 01110011 A
00000000 00000000 00000000 00011100 A померено удесно за 2 бита
11000000 00000000 00000000 00011100 A ротирано удесно за 2 бита
И лево и десно померање и ротирање су корисни. Ако се n-
битна реч ротира улево за k бита, резултат је исти као да је
ротирана удесно за n − k битова.
Десно померање се често изводи са проширењем знака. То
значи да се позиције упражњене на левом крају речи
попуњавају оригиналним знаком бита, 0 или . То је као да је
знак бит повучен удесно. Између осталог, то значи да ће
негативан број остати негативан.
6.2. Типови инструкција
28.11.2025 П6: 9/40
6.2.4. Поређења и условне гране
У скоро свим програмима се укаже потреба да се провере
подаци и пређе на алтернативни низ инструкција које треба
извршити на основу те провере. Једноставан пример је
функција квадратног корена, √x. Ако је x негативан број,
процедура даје поруку о грешци; у супротном израчунава
квадратни корен. Функција sqrt мора да тестира x, а затим да
се грана, у зависности од тога да ли је x негативно или не.
То се по правилу ради помоћу инструкција условног гранања
које проверавају неки услов и гранају се (усмеравају
програмски ток) на одређену меморијску адресу ако је услов
испуњен. Понекад се једним битом у инструкцији указује да ли
ће се гранање догодити ако је услов испуњен или није
испуњен. Одредишна адреса често није апсолутна, већ
релативна у односу на тренутну инструкцију.
6.2. Типови инструкција
28.11.2025 П6: 10/40
6.2.4. Поређења и условне гране
Између различитих услова, најчешће се проверава одређени
бит 0 или не. Ако инструкција тестира бит знака броја и грана
се на LABEL ако је 1, наредбе које почињу од LABEL биће
извршене ако је број био негативан, а наредбе које непосредно
следе инструкциј за условно гранање биће извршене ако је био
0 или позитиван.
Многе рачунари имају битове за кодове услова који се користе
за означавање постојања одређених услова. На пример, може
постојати бит прекорачења који је постављен на 1 кад год
аритметичка операција да неисправан резултат. Тестирањем
овог бита проверава се прекорачење претходне аритметичке
операције, тако да, ако дође до прекорачења, може да се
изврши гранање на потпрограм који обрађује грешку.
6.2. Типови инструкција
28.11.2025 П6: 11/40
6.2.4. Поређења и условне гране
Слично томе, неки процесори имају бит преноса који се поставља
када се пренос «прелије» са крајњег левог бита, на пример, ако се
додају два негативна броја. Пренос са крајњег левог бита је
сасвим уобичајен и не треба га мешати са прекорачењем.
Тестирање бита преноса је потребно за аритметику вишеструке
прецизности (тј. где је цео број представљен у две или више речи).
Тестирање са нулом је важно за петље и многе друге сврхе.
Ако би све инструкције условног гранања тестирале само 1 бит,
онда би за тестирање одређене речи на 0 био потребан посебан
тест за сваки бит, како би се осигурало да ниједан није 1. Да би се
избегла ова ситуација, многе машине имају инструкцију за
тестирање речи и гранање ако је нула.
6.2. Типови инструкција
28.11.2025 П6: 12/40
6.2.5. Инструкције за позивање процедура
Процедура је група инструкција која обавља неки задатак и која се
може позвати са више места у програму. Термин потпрограма се
често користи уместо процедуре, посебно када се говори о
програмима на асемблерском језику.
У C-у, процедуре се називају функције, иако нису нужно функције у
математичком смислу. У Јави се користи термин метод. Када
процедура заврши свој задатак, мора се вратити на наредбу након
позива. Стога, повратна адреса мора бити послата процедури или
сачувана негде тако да се може лоцирати када дође време за
повратак.
Повратна адреса може бити постављена на било које од три
места: меморију, регистар или стек. Најгоре решење је стављање
на једну, фиксну меморијску локацију. У овој шеми, ако би
процедура позвала другу процедуру, други позив би проузроковао
губитак повратне адресе из прве.
6.2. Типови инструкција
28.11.2025 П6: 13/40
6.2.5. Инструкције за позивање процедура
Мало побољшање је то што инструкција за позив процедуре чува
повратну адресу у првој речи процедуре, при чему се прва
извршна инструкција налази у другој речи. Процедура се затим
може вратити индиректним гранањем на прву реч или, ако
хардвер стави опкод за гранање у прву реч заједно са повратном
адресом, директно гранањем на њу.
Процедура може позивати друге процедуре, јер свака процедура
има простора за једну повратну адресу. Ако процедура позове
саму себе, ова шема не успева, јер ће прва повратна адреса бити
уништена другим позивом.
Могућност процедуре да позове саму себе, названа рекурзија,
изузетно је важна и за теоретичаре и за практичне програмере.
6.2. Типови инструкција
28.11.2025 П6: 14/40
6.2.6. Управљање петљом
Често се јавља потреба за извршавањем групе инструкција више
пута, па стога неки рачунари имају инструкције које то омогућавају.
Све такве шеме укључују бројач који се повећава или смањује за
неку константу сваки пут кад се уђе у петљу. У сваком циклусу
петље проверава се и вредност бројача, па ако је вредност
достигла одређени услов, петља се прекида.
Према једној методи, бројач се иницијализује изван петље, а
затим одмах почиње извршавање тела петље. Последња
инструкција петље ажурира бројач и, ако услов завршетка петље
још није задовољен, враћа се на прву инструкцију петље. Акоје
услов петље постигнут, петља се завршава, она се напушта и
извршава се прву инструкција након петље. Овај облик петље се
карактерише као петља типа „тест на крају“ (или „пост-тест“).
6.2. Типови инструкција
28.11.2025 П6: 15/40
6.2.6. Управљање петљом
Петља „тест на крају“. (б) Петља „тест на почетку“.
Петља са тестом на крају има својство да ће се увек извршити
барем једном, чак и ако је n мање или једнако 0.
Слика под (б) приказује други начин извођења теста (тест на
почетку) који исправно функционише чак и за n мање или једнако 0.
6.2. Типови инструкција
28.11.2025 П6: 16/40
6.2.7. Улаз/излаз
Група инструкција које обезбеђују улаз/излаз се највише разликује
од рачунара до рачунара. Три различита улазно-излазна модела се
тренутно користе у персоналним рачунарима. То су:
1. Програмирани У/И са чекањем на ослобађање ресурса.
2. У/И изазван и управљан системским прекидима.
3. У/И преко директног приступа меморији (DMA).
Најједноставнија метода је програмирани У/И, која се обично користи у
јефтинијим микропроцесорима, на пример, у уграђеним системима
(embedded) или у системима који морају брзо да реагују на спољашње
промене (системи у реалном времену). Ови процесори обично имају једну
улазну инструкцију и једну излазну инструкцију. Свака од ових инструкција
бира један од У/И уређаја. Један знак се преноси између фиксног
регистра у процесору и изабраног У/И уређаја. Процесор мора да изврши
експлицитни низ инструкција за сваки прочитани или написани знак.
6.2. Типови инструкција
28.11.2025 П6: 17/40
6.2.7. Улаз/излаз
Главни недостатак програмираног У/И је тај што процесор већину
времена проводи у петљи чекајући да уређај постане спреман.
Овај приступ се назива чекање на ослобађање ресурса од
заузетости.
Ако процесор нема шта друго да ради (нпр. процесор у машини за
прање веша), чекање може бити у реду (иако чак и једноставан
контролер често мора да прати више истовремених догађаја).
Међутим, ако постоји други посао који треба да обави, као што је
покретање других програма, чекање у заузетом стању је трошење
времена, па је потребан другачији метод улаза/излаза.
6.2. Типови инструкција
28.11.2025 П6: 18/40
6.2.7. Улаз/излаз
Начин да се решимо чекања на ослобођење ресурса је да
процесор покрене улазно/излазни уређај и наложи му да генерише
прекид када се заврши посао.
Иако је У/И вођен прекидима велики корак напред у поређењу са
програмираним У/И, далеко је од савршеног. Проблем је што је за
сваки послати карактер потребан прекид. Обрада прекида је
временски неефикасна. Потребан је начин да се ослободимо
већине прекида.
6.2. Типови инструкција
28.11.2025 П6: 19/40
6.2.7. Улаз/Излаз
Решење лежи у повратку на програмирани У/И, али да у томе не
учествује процесор. Додаје се нови чип, DMA (Direct Memory
Access) контролер, са директним приступом магистрали.
DMA чип има (најмање) четири регистра унутар себе, а сви се могу
учитати помоћу софтвера који се покреће на процесору.
Први садржи адресу меморије која се чита или пише. Други садржи
број бајтова (или речи) који треба да се пренесу. Трећи одређује
број уређаја или адресу У/И простора који треба користити, чиме се
одређује који У/И уређај је жељени. Четврти говори да ли ће се
подаци читати са или писати на И/О уређај.
Са DMA, процесор треба да иницијализује само неколико
регистара. Након тога, слободан је да ради нешто друго док се
комплетан пренос не заврши, када добија прекид од DMA
контролера.
6.2. Типови инструкција
28.11.2025 П6: 20/40
6.2.7. Улаз/Излаз
Неки DMA контролери имају два, три или више скупова регистара,
тако да могу да контролишу више истовремених преноса.
Иако DMA значајно растерећује процесор од терета У/И операција,
процес није потпуно бесплатан. Ако DMA покреће уређај велике
брзине, као што је диск, биће потребно много циклуса магистрале,
како за референце меморије, тако и за референце уређаја. Током
ових циклуса процесор ће морати да чека (DMA увек има виши
приоритет магистрале од процесора јер У/И уређаји често не могу
да толеришу кашњења). Процес у којем DMA контролер одузима
циклусе магистрале од процесора назива се крађа циклуса. Ипак,
добитак од тога што се не мора обрађивати један прекид по
пренетом бајту (или речи) далеко надмашује губитак услед крађе
циклуса.
6.2. Типови инструкција
28.11.2025 П6: 21/40
1. Наведите основне начине адресирања.
2. У чему је разлика између непосредног и директног
адресирања?
3. Објасите како се разликују индиректно и индиректно
регистарско адресирање?
4. За шта се најчешће користи индексно адресирање?
5. Како називамо начин адресирања код кога се меморијска
адреса израчунава сабирањем два регистра плус
(опционо) померај (индекс)?
6. Наведите основне инструкције за премештање садржаја.
7. Шта су бинарне инструкције? Наведите основне.
8. Које су најчешће унарне операције?
9. Објасните разлику између инструкција померања и
ротације.
10. Која су три најчешћа улазно-излазна модела који се
тренутно користе у персоналним рачунарима?
6.3. Контролна питања
www.pfvr.ni.ac.rs

AR-P6-2.pptx

  • 1.
    28.11.2025 П6: 1/40 Инструкцијесе могу приближно поделити на неколико група које су релативно сличне за све рачунаре, иако се појединачне инструкције могу разликовати у детаљима. Поред тога, сваки рачунар има неколико неуобичајених инструкција, које су додате ради компатибилности са претходним генерацијама, или зато што је пројектант имао бриљантну идеју, или можда зато што је нека агенција платила произвођачу да их укључи. Те основне групе инструкција су: 1. Инструкције за премештање података 2. Бинарне операције 3. Унарне операције 4. Поређења и условни скокови 5. Инструкције за позивање процедура 6. Управљање петљама 7. Улаз/излаз 6.2. Типови инструкција
  • 2.
    28.11.2025 П6: 2/40 6.2.1.Инструкције за премештање података Копирање података са једног места на друго је најосновнија од свих операција. Под копирањем подразумевамо креирање новог објекта, са идентичним распоредом битова као оригинал. Ова употреба речи „премештање“ се донекле разликује од њене уобичајене употребе у говорном језику. Када кажемо да се Јанко Јанковић преселио из Ниша у Крагујевац, не мислимо да је идентична копија г. Јанковића створена у Крагујевцу и да је оригинал још увек у Нишу. Када кажемо да је садржај меморијске локације 2000 премештен у неки регистар, увек мислимо да је тамо креирана идентична копија и да је оригинал још увек нетакнут на локацији 2000. Инструкције за премештање података би боље било назвати инструкцијама за „дуплирање података“, али термин „премештање података“ дуго устаљен. 6.2. Типови инструкција
  • 3.
    28.11.2025 П6: 3/40 6.2.1.Инструкције за премештање података Постоје два разлога за копирање података са једне локације на другу. Први разлог је фундаментални: додељивање вредности променљивим. Додељивање А = B се имплементира копирањем вредности са меморијске адресе B на локацију А. Други разлог је припрема података за ефикасније приступање и коришћење. Многе инструкције могу приступити променљивим само када су доступне у регистрима. Пошто постоје два могућа извора за податак (меморија или регистар) и постоје два могућа одредишта за податак (меморија или регистар), могуће су четири различите врсте копирања. 6.2. Типови инструкција
  • 4.
    28.11.2025 П6: 4/40 6.2.1.Инструкције за премештање података Неки рачунари имају четири инструкције за четири случаја, док други имају једну инструкцију за сва четири случаја. Трећи користе LOAD за прелазак из меморије у регистар, STORE за прелазак из регистра у меморију, MOVE за прелазак из једног регистра у други, и нема инструкција за копирање из меморије у меморију. Инструкције за премештање података морају да назначе количину података која се премешта. Код неких рачунара постоје скупови инструкција за премештање променљивих количина података у распону од 1 бита па до целе меморије. На рачунарима са фиксном дужином речи, количина која се премешта је често тачно једна реч. Све мање или више од тога мора да се премести софтверски – потпрограмом који се користи за померање и спајање битова. 6.2. Типови инструкција
  • 5.
    28.11.2025 П6: 5/40 6.2.2.Бинарне операције Бинарне операције комбинују два операнда да би произвеле резултат. Све архитектуре скупа инструкција имају инструкције за извршавање сабирања и одузимања целих бројева. Множење и дељење целих бројева су такође скоро стандардни. Друга група бинарних операција укључује Булове инструкције. Иако постоји 16 Булових функција две променљиве, мало, ако их уопште има, рачунара има инструкције за свих 16. Обично су присутни И, ИЛИ и НЕ; понекад су ту и ИСКЉУЧУЈУЋЕ ИЛИ, НИЛИ и НИ. 6.2. Типови инструкција
  • 6.
    28.11.2025 П6: 6/40 6.2.2.Бинарне операције Већина рачунара данас такође подржава скуп инструкција за рад са бројевима у формату са покретним зарезом, што грубо одговара целобројним аритметичким операцијама. Рачунари подржавају бар две дужине бројева у формату покретног зареза, краће због брзине и дуже за случајеве када је потребно много цифара тачности. Иако постоји много могућих варијација за формате бројева са покретним зарезом, један стандард је сада готово универзално усвојен: IEEE 754. 6.2. Типови инструкција
  • 7.
    28.11.2025 П6: 7/40 6.2.3.Унарне операције Унарне операције имају један операнд и производе један резултат. Пошто је потребно навести једну адресу мање него код бинарних операција, инструкције су понекад краће, мада се често морају навести и друге информације. Инструкције за померање или ротирање садржаја речи или бајта су прилично корисне и често се дају у неколико варијација. Померања су операције у којима се битови померају лево или десно, при чему се битови померени са краја речи губе. Ротације су померања у којима се битови потиснути са једног краја поново појављују на другом крају. 6.2. Типови инструкција
  • 8.
    28.11.2025 П6: 8/40 6.2.3.Унарне операције Разлика између померања и ротације је илустрована испод. 00000000 00000000 00000000 01110011 A 00000000 00000000 00000000 00011100 A померено удесно за 2 бита 11000000 00000000 00000000 00011100 A ротирано удесно за 2 бита И лево и десно померање и ротирање су корисни. Ако се n- битна реч ротира улево за k бита, резултат је исти као да је ротирана удесно за n − k битова. Десно померање се често изводи са проширењем знака. То значи да се позиције упражњене на левом крају речи попуњавају оригиналним знаком бита, 0 или . То је као да је знак бит повучен удесно. Између осталог, то значи да ће негативан број остати негативан. 6.2. Типови инструкција
  • 9.
    28.11.2025 П6: 9/40 6.2.4.Поређења и условне гране У скоро свим програмима се укаже потреба да се провере подаци и пређе на алтернативни низ инструкција које треба извршити на основу те провере. Једноставан пример је функција квадратног корена, √x. Ако је x негативан број, процедура даје поруку о грешци; у супротном израчунава квадратни корен. Функција sqrt мора да тестира x, а затим да се грана, у зависности од тога да ли је x негативно или не. То се по правилу ради помоћу инструкција условног гранања које проверавају неки услов и гранају се (усмеравају програмски ток) на одређену меморијску адресу ако је услов испуњен. Понекад се једним битом у инструкцији указује да ли ће се гранање догодити ако је услов испуњен или није испуњен. Одредишна адреса често није апсолутна, већ релативна у односу на тренутну инструкцију. 6.2. Типови инструкција
  • 10.
    28.11.2025 П6: 10/40 6.2.4.Поређења и условне гране Између различитих услова, најчешће се проверава одређени бит 0 или не. Ако инструкција тестира бит знака броја и грана се на LABEL ако је 1, наредбе које почињу од LABEL биће извршене ако је број био негативан, а наредбе које непосредно следе инструкциј за условно гранање биће извршене ако је био 0 или позитиван. Многе рачунари имају битове за кодове услова који се користе за означавање постојања одређених услова. На пример, може постојати бит прекорачења који је постављен на 1 кад год аритметичка операција да неисправан резултат. Тестирањем овог бита проверава се прекорачење претходне аритметичке операције, тако да, ако дође до прекорачења, може да се изврши гранање на потпрограм који обрађује грешку. 6.2. Типови инструкција
  • 11.
    28.11.2025 П6: 11/40 6.2.4.Поређења и условне гране Слично томе, неки процесори имају бит преноса који се поставља када се пренос «прелије» са крајњег левог бита, на пример, ако се додају два негативна броја. Пренос са крајњег левог бита је сасвим уобичајен и не треба га мешати са прекорачењем. Тестирање бита преноса је потребно за аритметику вишеструке прецизности (тј. где је цео број представљен у две или више речи). Тестирање са нулом је важно за петље и многе друге сврхе. Ако би све инструкције условног гранања тестирале само 1 бит, онда би за тестирање одређене речи на 0 био потребан посебан тест за сваки бит, како би се осигурало да ниједан није 1. Да би се избегла ова ситуација, многе машине имају инструкцију за тестирање речи и гранање ако је нула. 6.2. Типови инструкција
  • 12.
    28.11.2025 П6: 12/40 6.2.5.Инструкције за позивање процедура Процедура је група инструкција која обавља неки задатак и која се може позвати са више места у програму. Термин потпрограма се често користи уместо процедуре, посебно када се говори о програмима на асемблерском језику. У C-у, процедуре се називају функције, иако нису нужно функције у математичком смислу. У Јави се користи термин метод. Када процедура заврши свој задатак, мора се вратити на наредбу након позива. Стога, повратна адреса мора бити послата процедури или сачувана негде тако да се може лоцирати када дође време за повратак. Повратна адреса може бити постављена на било које од три места: меморију, регистар или стек. Најгоре решење је стављање на једну, фиксну меморијску локацију. У овој шеми, ако би процедура позвала другу процедуру, други позив би проузроковао губитак повратне адресе из прве. 6.2. Типови инструкција
  • 13.
    28.11.2025 П6: 13/40 6.2.5.Инструкције за позивање процедура Мало побољшање је то што инструкција за позив процедуре чува повратну адресу у првој речи процедуре, при чему се прва извршна инструкција налази у другој речи. Процедура се затим може вратити индиректним гранањем на прву реч или, ако хардвер стави опкод за гранање у прву реч заједно са повратном адресом, директно гранањем на њу. Процедура може позивати друге процедуре, јер свака процедура има простора за једну повратну адресу. Ако процедура позове саму себе, ова шема не успева, јер ће прва повратна адреса бити уништена другим позивом. Могућност процедуре да позове саму себе, названа рекурзија, изузетно је важна и за теоретичаре и за практичне програмере. 6.2. Типови инструкција
  • 14.
    28.11.2025 П6: 14/40 6.2.6.Управљање петљом Често се јавља потреба за извршавањем групе инструкција више пута, па стога неки рачунари имају инструкције које то омогућавају. Све такве шеме укључују бројач који се повећава или смањује за неку константу сваки пут кад се уђе у петљу. У сваком циклусу петље проверава се и вредност бројача, па ако је вредност достигла одређени услов, петља се прекида. Према једној методи, бројач се иницијализује изван петље, а затим одмах почиње извршавање тела петље. Последња инструкција петље ажурира бројач и, ако услов завршетка петље још није задовољен, враћа се на прву инструкцију петље. Акоје услов петље постигнут, петља се завршава, она се напушта и извршава се прву инструкција након петље. Овај облик петље се карактерише као петља типа „тест на крају“ (или „пост-тест“). 6.2. Типови инструкција
  • 15.
    28.11.2025 П6: 15/40 6.2.6.Управљање петљом Петља „тест на крају“. (б) Петља „тест на почетку“. Петља са тестом на крају има својство да ће се увек извршити барем једном, чак и ако је n мање или једнако 0. Слика под (б) приказује други начин извођења теста (тест на почетку) који исправно функционише чак и за n мање или једнако 0. 6.2. Типови инструкција
  • 16.
    28.11.2025 П6: 16/40 6.2.7.Улаз/излаз Група инструкција које обезбеђују улаз/излаз се највише разликује од рачунара до рачунара. Три различита улазно-излазна модела се тренутно користе у персоналним рачунарима. То су: 1. Програмирани У/И са чекањем на ослобађање ресурса. 2. У/И изазван и управљан системским прекидима. 3. У/И преко директног приступа меморији (DMA). Најједноставнија метода је програмирани У/И, која се обично користи у јефтинијим микропроцесорима, на пример, у уграђеним системима (embedded) или у системима који морају брзо да реагују на спољашње промене (системи у реалном времену). Ови процесори обично имају једну улазну инструкцију и једну излазну инструкцију. Свака од ових инструкција бира један од У/И уређаја. Један знак се преноси између фиксног регистра у процесору и изабраног У/И уређаја. Процесор мора да изврши експлицитни низ инструкција за сваки прочитани или написани знак. 6.2. Типови инструкција
  • 17.
    28.11.2025 П6: 17/40 6.2.7.Улаз/излаз Главни недостатак програмираног У/И је тај што процесор већину времена проводи у петљи чекајући да уређај постане спреман. Овај приступ се назива чекање на ослобађање ресурса од заузетости. Ако процесор нема шта друго да ради (нпр. процесор у машини за прање веша), чекање може бити у реду (иако чак и једноставан контролер често мора да прати више истовремених догађаја). Међутим, ако постоји други посао који треба да обави, као што је покретање других програма, чекање у заузетом стању је трошење времена, па је потребан другачији метод улаза/излаза. 6.2. Типови инструкција
  • 18.
    28.11.2025 П6: 18/40 6.2.7.Улаз/излаз Начин да се решимо чекања на ослобођење ресурса је да процесор покрене улазно/излазни уређај и наложи му да генерише прекид када се заврши посао. Иако је У/И вођен прекидима велики корак напред у поређењу са програмираним У/И, далеко је од савршеног. Проблем је што је за сваки послати карактер потребан прекид. Обрада прекида је временски неефикасна. Потребан је начин да се ослободимо већине прекида. 6.2. Типови инструкција
  • 19.
    28.11.2025 П6: 19/40 6.2.7.Улаз/Излаз Решење лежи у повратку на програмирани У/И, али да у томе не учествује процесор. Додаје се нови чип, DMA (Direct Memory Access) контролер, са директним приступом магистрали. DMA чип има (најмање) четири регистра унутар себе, а сви се могу учитати помоћу софтвера који се покреће на процесору. Први садржи адресу меморије која се чита или пише. Други садржи број бајтова (или речи) који треба да се пренесу. Трећи одређује број уређаја или адресу У/И простора који треба користити, чиме се одређује који У/И уређај је жељени. Четврти говори да ли ће се подаци читати са или писати на И/О уређај. Са DMA, процесор треба да иницијализује само неколико регистара. Након тога, слободан је да ради нешто друго док се комплетан пренос не заврши, када добија прекид од DMA контролера. 6.2. Типови инструкција
  • 20.
    28.11.2025 П6: 20/40 6.2.7.Улаз/Излаз Неки DMA контролери имају два, три или више скупова регистара, тако да могу да контролишу више истовремених преноса. Иако DMA значајно растерећује процесор од терета У/И операција, процес није потпуно бесплатан. Ако DMA покреће уређај велике брзине, као што је диск, биће потребно много циклуса магистрале, како за референце меморије, тако и за референце уређаја. Током ових циклуса процесор ће морати да чека (DMA увек има виши приоритет магистрале од процесора јер У/И уређаји често не могу да толеришу кашњења). Процес у којем DMA контролер одузима циклусе магистрале од процесора назива се крађа циклуса. Ипак, добитак од тога што се не мора обрађивати један прекид по пренетом бајту (или речи) далеко надмашује губитак услед крађе циклуса. 6.2. Типови инструкција
  • 21.
    28.11.2025 П6: 21/40 1.Наведите основне начине адресирања. 2. У чему је разлика између непосредног и директног адресирања? 3. Објасите како се разликују индиректно и индиректно регистарско адресирање? 4. За шта се најчешће користи индексно адресирање? 5. Како називамо начин адресирања код кога се меморијска адреса израчунава сабирањем два регистра плус (опционо) померај (индекс)? 6. Наведите основне инструкције за премештање садржаја. 7. Шта су бинарне инструкције? Наведите основне. 8. Које су најчешће унарне операције? 9. Објасните разлику између инструкција померања и ротације. 10. Која су три најчешћа улазно-излазна модела који се тренутно користе у персоналним рачунарима? 6.3. Контролна питања
  • 22.