Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 28

2.

Организација улаза/излаза
Рачунари опште намене (какав је и персонални рачунар) по правилу
садрже тастатуру, миш, монитор и јединице секундарне меморије (хард
диск, компакт диск), а често и штампач, комуникациону линију, картицу
за репродукцију звука и слично. Све ове периферије служе за
комуникацију између човека и рачунара или за складиштење програма и
података. Свака од поменутих и непоменутих периферија повезана је са
рачунаром преко контролера периферије који је специфичан за одређену
класу периферија. За потребе брзих периферија као што су јединице
секундарне меморије развијена је посебна класа контролера периферија
са директним приступом меморији.
Рачунари посебне намене често у себи садрже одговарајући програм,
па је потребно унети поједине параметре периодично (неколико тастера),
приказати неки податак на дисплеју или индикацију помоћу диоде. За
укључивaње диода и дисплеја не постоје посебни контролери као што
нема контролера за контролу неколико тастера. Рачунари посебне намене
понекад контролишу процесе контролом аналогних величина на основу
праћења вредности аналогних величина. За конверзију аналогних
величина у дигиталне и обрнуто користе се A/D и D/A конвертори. За
повезивање ових конвертора не користе се посебни контролери. Рачунари
посебне намене често се са рачунарима опште намене повезују
комуникационим линијама ради коришћења њихових могућности
(најчешће чување, визуелизација и анализа података).
Контролери у/и уређаја
Контролери улазно/излазних уређаја су посебни електронски склопови
који су са једне стране повезани на магистралу, а са друге на улазно/излазни
уређај. Контролер је преко магистрале повезан са процесором и меморијом
(слика 2.1).

Слика 2.1: Контролер периферије се налази између периферије и процесора


Структура контролера периферије приказана је на слици 2.2.
Основу контролера периферије чине три програмски доступна
регистра:
 Контролни регистар (Control Register)
 Статусни регистар (Status Register)
 Регистар података (Data Register)
Сви регистри повезани су са магистралом података (на слици је због
поједностављења приказана само веза регистра података). Декодирањем
адресне магистрале добијају се сигнали селекције појединих регистара
(cr, sr и dr), који преко И кола са сигналима RD и WR генеришу сигнале
за упис или читање одређеног регистра (ове везе нису у целости
приказане због поједностављења).
Слика 2.2: Структура контролера периферије
Контролни регистар (Control Register) садржи податке потребне
за контролу периферије. У овај регистар програмски се уписују подаци
потребни за контролу периферије. Различите периферије, различити
контролери и различити режими рада захтевају различите садржаје
контролног регистра. С обзиром на циљ овог поглавља – упознавање са
техникама улаза и излаза, издвојићемо само два бита контролног
регистра:
 Старт бит (Start)
 Бит дозволе прекида (Interrupt Enable – IE)
Ова два бита има сваки контролер независно од типа периферије коју
контролише. На слици су ова два бита приказана на произвољно
одређеним местима и јасно је да се код различитих контролера налазе на
различитим позицијама.
Постављањем старт бита на високо (уписом Start=1 у контролни
регистар) започиње улазно/излазна активност. Активирају се потребни
сигнали управљачке јединице контролера и периферије (нису приказани
на слици) и долази до размене податка између регистра података (Data
Register) контролера и периферије. Смер размене податка зависи од
тога да ли је периферија улазна или излазна. Код периферија које могу
бити и улазне и излазне смер се дефинише посебним битом у
контролном регистру. По завршетку улазне или излазне активности бит
спремности статусног регистра поставља се на високо (ово је активност
управљачке јединице контролера). Висок ниво бита спремности
означава да је контролер спреман за следећу акцију (пријем новог
податка у регистар података код излазних активности или спремност
податка да буде преузет из регистра података код улазних активности).
Битом дозволе прекида (IE) дозвољава се или забрањује
контролеру периферије да истовремено са постављањем бита
спремности генерише захтев за прекид (intr – Interrupt Request). У
зависности од организације прекида код конкретног процесора, редни
број прекида ће бити одређен имплицитно (према месту повезивања)
или експлицитно када се процесор обраћа периферији сигналом (inta –
Interrupt acknowledgment) и тражи да се преко магистрале података
пошаље редни број прекида. Потребно је уочити да се садржај
контролног (управљачког) регистра програмски уписује, а његов
садржај интерпретира управљачка јединица контролера.
Статусни регистар (Status Register) својим садржајем даје податке
о статусу контролера. За потребе теме којом се бавимо издвојен је само
један бит – бит спремности (Ready) који показује расположивост
контролера да добије нови задатак (код излазних активности) или да је
задатак извршен (код улазних активности). Реални контролери сем бита
спремности дају и друге информације везане за улазно/излазне
активности и тичу се успешности рада контролера и периферије и
евентуалних грешака у раду. У реалном раду се ове информације
програмски проверавају и исправљају или се оператеру саопштава
порука о уоченој грешци. Потребно је уочити да се статусни регистар
програмски очитава, а његов садржај уписује управљачка јединица
контролера.
Регистар података (Data Register) служи за размену података
између процесора и периферије. Код излазних активности процесор
програмски уписује податке у регистар података, док код улазних
активности процесор програмски очитава податке из регистра података.

Код сложених контролера који улазно/излазне активности обављају


симултано или истовремено (какви су контролери комуникација)
контролери садрже већи број регистара података (посебно за улаз,
посебно за излаз), али ми ћемо се овде бавити поједностављеним
школским моделом универзалног контролера какав је приказан на
слици 2.2.
Програмирани улаз/излаз
Проток података код програмираног излаза иде из меморије у процесор
програмски, преко магистрале (read), из процесора у регистар података
контролера програмски, преко магистрале (write) и из регистра података
контролера у периферију преко интерне везе контролера и периферије, а без
учешћа процесора (слика 2.3).

Слика 2.3: Проток података код програмираног излаза


Проток података код програмираног улаза иде из периферије у
регистар података контролера преко интерне везе периферије и
контролера, а без учешћа процесора, из регистра података контролера у
процесор програмски, преко магистрале података (read), из процесора у
меморију програмски, преко магистрале (write) – слика 2.4.

Слика 2.4: Проток података код програмираног


Код програмираног улаза/излаза најпре се иницијализује жељени
режим рада контролера (уписом одговарајућег садржаја у контролни
регистар). Некада се истовремено са иницијализацијом, а некада касније
стартује рад контролера (уписом старт бита у контролни регистар).
Обзиром на поједностављења о којима је већ било речи ми ћемо ово
радити истовремено, пошто свесно занемарујемо различите режиме рада
конкретних контролера.
Стартовање излазног процеса код неких реалних контролера
подразумева слање податка који се налази у регистру података на
периферију, па је пре стартовања потребно напунити програмски
регистар. За потребе овог курса сматраћемо да стартовање излазног
процеса доводи до постављања бита спремност, када у регистар података
треба уписати први податак за слање. Усвојени начин рада је чешћи код
реалних контролера, али свакако треба обратити пажњу на овај детаљ код
сваког конкретног контролера који користимо.
Стартовање улазног процеса код неких реалних контролера доводи
до аутоматског постављања бита спремности, па је потребно прочитати
и одбацити затечени податак у регистру података. За потребе овог
курса сматраћемо да стартовање улазног процеса стварно стартује
улазни процес и бит спремности биће постављен тек по уношењу
првог податка са периферије у регистар података контролера. Усвојени
начин рада је чешћи код реалних контролера, али свакако треба
обратити пажњу на овај детаљ код сваког конкретног контролера који
користимо.
Програмирани улаз/излаз могуће је реализовати на два начина:
 испитивањем бита спремности
 коришћењем механизма прекида.
У оба случаја проток података се одвија под програмском
контролом и проток података је исти, као што је приказано на сликама
Техника програмираног у/и
испитивањем бита спремности
После стартовања контролера (прекид је забрањен) у одговарајућем
режиму рада учитава се статусни регистар контролера и испитује се бит
спремности. Бит спремност неће бити постављен до завршетка улазно /
излазне активности (пренос једног знака). Када нађемо да бит спремности
није постављен (није завршен пренос једног знака), враћамо се на
учитавање статусног регистра контролера.
Када нађемо да је бит спремности постављен (завршен пренос једног
знака), спремамо се за пренос следећег знака. Ако се ради о излазној
активности, потребно је следећи знак из меморије пренети у регистар
података контролера. Ако се ради о улазној активности, потребно је податак
из регистра података контролера пренети у меморију. Обе ове активности
обављају се под контролом програма.
Слика 2.5: Стартовање контролера и припрема за пренос следећег знака код
а) излазне и б) улазне активности
Да бисмо пренели блок података одређене дужине, који почиње од
адресе смештене, на пример, у меморијску локацију MemAdr
потребно је организовати одговарајућу програмску петљу и бројач
пренетих знакова MemCounter. Пре стартовања контролера
постављају се одговарајуће вредности за почетну адресу блока
података и бројач пренетих знакова. После размене података између
меморије и регистра података контролера, потребно је променити
указатељ на адресу у меморији (MemAdr) и стање бројача
(MemCount). Онда се и проверава да ли је пренет цео блок података
(Слика 2.6).
Слика 2.6: Пренос блока
података код програмираног
улаза / излаза са испитивањем
бита спремности
Алгоритми за пренос блока података између меморије и периферије,
независно од смера, почињу задавањем почетне адресе и дужине блока
података. У примеру на слици, ови подаци запамћени су у меморији на
локацијама чије су симболичке адресе MemAdr и MemCount. Oви
подаци могу бити запамћени и у неком од регистара опште или
одговарајуће намене.
Даљи ток процеса у потпуности се поклапа, како са алгоритмима са
слике 2.5, тако и међусобно све до блока преноса података између
меморије и регистра података (последњи блок на слици 2.5 и
двоструко уоквирени блок на слици 2.6. Док је на слици 2.5 само
симболички приказан проток податка између меморије и регистра
података контролера, на слици 2.6 је конкретизовано како се преко
задате адресе индиректним адресирањем обраћамо одређеној
меморијској локацији.
У наставку алгоритма на слици 2.6 се инкрементира указатељ
адресе и декрементира бројач преосталих знакова за пренос, испитује
да ли су сви подаци пренети. Када има још података за пренос, враћамо
се на очитавање статусног регистра ради утврђивања стања бита
спремности. Када се пренесе и последњи податак, уписом новог
садржаја у контролни регистар, зауставља се контролер периферије и
прелази се на извршавање других задатака или се зауставља и рад
процесора. Потребно је уочити да код излазних процеса код неких
реалних контролера, заустављање контролера пре завршетка преноса
на периферију, може да доведе до прекида преноса последњег знака
блока података. Код већине реалних контролера, као и код нашег
имагинарног контролера, започети пренос се не може зауставити, па
излазни алгоритам са слике 2.4 не треба дорађивати.
Улазни и излазни алгоритам за пренос блока података готово да су
потпуно идентични. Разликују се само по блоку за пренос знака
између меморије и регистра података који је двоструко уоквирен.
Основни недостатак програмираног улаза/излаза са испитивањем
бита спремности је ангажовање процесора на испитивање бита
спремности. При преносу једног осмобитног знака преко
комуникационе линије, при брзини од 9.600 битова у секунди,
осмобитни процесор типа 8051, при основном такту 12 МHz очитао би
стање статусног регистра и испитао бит спремности око 550 пута пре
него што би једном нашао да је бит спремности постављен (да је један
знак пренет).
Техника програмираног у/и
коришћењем механизма прекида

Да би се превазишао основни недостатак технике програмираног улаза –


излаза са испитивањем бита спремности, и знатно ослободило процесорско
време код програмираног улаза/излаза користи се механизам прекида.
Уместо да се стално учитава статусни регистар и испитује његов бит
спремности, контролеру се дозвољава прекид и када бит спремности буде
постављен контролер ће поставити захтев за прекид (видети слику 2.2).
По завршетку текуће инструкције процесор ће размотрити пристигли
захтев и на основу приоритета текућег програма одобрити или одложити
прелазак на прекидни програм до извршавања програма нижег приоритета
од приоритета захтева.
У прекидном програму се обавља пренос податка између меморије и
регистра података контролера. Овај пренос обавља се под контролом
програма, прецизније, прекидног програма.
У главном програму стартујемо контролер периферије уписом
одговарајућег садржаја (Start=1 и IE=1) у контролни регистар контролера.
Алгоритам преноса блока података код програмираног у/и са
испитивањем бита спремности и коришћењем механизма прекида једва
да се и разликују. Пођимо од алгоритма за пренос блока података са
испитивањем бита спремности (слика 2.6) као основног.
Када се користи механизам прекида, тај алгоритам је подељен на два
дела. Први део алгоритма (задавање почетне адресе и дужине блока и
стартовање контролера – прва два блока алгоритма) извршава се у
главном програму. Очитавање статуса регистра и провера бита
спремности се не извршава, јер уместо тога имамо механизам прекида.
Остатак алгоритма извршава се у прекидном програму (слика 2.7).
Слика 2.7: Програмирани у/и
са коришћењем механизма
прекида–алгоритми прекидних
програма за а) излаз и б) улаз
Како ће се обављати синхронизација између главног и прекидног
програма? У главном програму се стартује у/и процес, док се сам процес и
заустављање процеса практично одвија у прекидном програму. Како
главном програму саопштити (из прекидног програма) да је процес
завршен? Уведен је механизам маркера или семафора, који се веома
често користи код вишепроцесорских система и код предаје задатака у
оквиру расподеле времена код организације оперативних система.
Уводи се нова променљива Semaphore, и њој се додељује вредност,
рецимо нула, када се процес у/и стартује. Дакле, за време трајања у/и
процеса семафор (маркер) Semaphore има вредност 0. По завршетку у/и
процеса Semaphore добија вредност 1. Ово се догађа у прекидном
програму (слика 2.7). Сада је могуће у главном програму, после
стартовања у/и процеса (и постављања Semaphore=0), чекати крај процеса
испитивањем вредности маркера Semaphore. Када нађемо да је
Semaphore=1, процес је завршен.
Механизам прекида није уведен да би се једно испитивање
заменило другим, већ да се добије процесорско време за друге
активности. На пример, кад на ред дође, рецимо, обрада података чији
је улаз стартован, проверава се да ли је унос завршен. У међувремену,
процесор ради неке друге ствари. На слици 2.8 приказан је алгоритам
стартовања улазно/излазног процеса са механизмом прекида,
постављање и коришћење семафора за проверу краја преноса блока
података. Овај део улазно/излазних активности извршава се у главном
програму. У прекидном програму се, између осталог, мења вредност
семафора по завршетку преноса блока података (слика 2.7).
Слика 2.8: Постављање и контрола
семафора у главном програму
Пренос података коришћењем механизма прекида ослободио је
знатно процесорско време за остале активности и омогућио да се
веома брзе улазно/излазне активности одвијају паралелно, што доводи
до даљег повећавања протока података кроз рачунар и потребе за још
бржим техникама преноса.
Нема више губљења процесорског времена на очитавање статуса и
испитивање бита спремности, али се процесорско време још увек
троши на пренос сваког знака између регистра података контролера,
процесора и меморије. Увођењем контролера са директним приступом
меморији (DMA – Direct Memory Access) омогућен је директан
пренос података између контролера периферије и меморије, без
учешћа процесора.

You might also like