Др Живко Ј. Тошић
ОСНОВИ РАЧУНАРСКЕ ТЕХНИКЕ
Чуперак плави Ниш, 1994.
Проф. др Живко Ј. Тошић, Електронски факултет у Нишу ОСНОВИ РАЧУНАРСКЕ ТЕХНИКЕ 1.
издање
Рецензенти: Проф. др Боривој Лазић, Електротехнички факултет у Београду Проф. др Милена Станковић, Електронски факултет у Нишу
Издавач: ПП "Чуперак плави", Светозара Милетића 8, Ниш Тел. 018 / 41-246, факс 018 / 25727 За издавача: Јовица Денић, директор и главни и одговорни уредник
Тираж: 500 примерака
CIP - Katalogizacija u publikaciji Narodna biblioteka Srbije, Beograd
681.32 (075.8) TOŠIĆ, Živko, J. Osnovi računarske tehnike / Živko J. Točić. – [1. izd.]. - Niš: Čuperak plavi, 1994 (Niš:Grafika Galeb). – 305 str.: graf. prikazi; 24 cm Tiraž 500. – Bibliografija: str. 287–288. Registar. ISBN 86–7064–003–1 a) Računari b) Elektronska obrada podataka ID = 33820428
ISBN 86–7064–003–1
Предговор
Садржај ове књиге одговара курсу Основи рачунарске технике који се држи на првој години свих смерова на Електронском факултету у Нишу. Он се условно може поделити на три целине:
– аритметика рачунара, представљање и организација података, поглавља 1 - 5, – логичко пројектовање (прекидачке функције и коначни аутомати), поглавља 6 10,
– функционисање процесора и софтвер рачунара, поглавља 11 - 16. По својој структури овакав садржај одговара уводним курсевима из рачунарске технике на многим факултетима, пре свега техничким и природно математичким, али и другим. Такође, књига може бити од користи свим заинтересованим за област рачунарске технике и информатике. По обиму материјал је тако селектован да се уз мала скраћења може обрадити са три часа предавања у једном семестру или са нешто проширења са два часа предавања у два семестра. Колеге са Катедре за рачунарство Електронског факултета у Нишу прочитали су поједине делове рукописа и дали корисне примедбе и сугестије. Захвалност за уложено време дугујем др Лазару Ђорђевићу, др Слободанки Ђорђевић-Кајан, др Радомиру Станковићу, др Теуфику Токићу и мр Небојши Миленковићу. Поједине примере из логичког пројектовања проверила је дипл. инж. Ивана Бранковић. Посебно желим да се захвалим рецензентима, др Боривоју Лазићу са Електротехничког факултета у Београду и др МИлени Станковић са Електронског факултета у Нишу за пажљиви преглед рукописа и корисне предлоге и примедбе.
У Нишу, новембра 1994.
Аутор
Садржај 1. Увод ................................................... 1.1 Информациона криза ............ ....................... 1.2 Проналазак и улога рачунара ............................. 1.3 Теоријски основи рачунара ............................... Булова алгебра .......................................... Бинарна аритметика ...................................... Дигитална електронска кола ............................... Дискретно представљање података ......................... Теорија алгоритама ...................................... Апстрактни аутомати ..................................... 1.4 Генерације рачунара ..................................... Прва генерација ......................................... Друга генерација ......................................... Трећа генерација ........................................ Четврта генерација ...................................... Пета генерација ......................................... 1.5 Подела рачунара ........................................ 1.6 Области примене рачунара ............................... 1.7 Информационе технологије ............................... Пословна обрада (информациони системи) .................. Аутоматизација и управљање процесима .................... Научно-техничке примене ................................. Комуникација података (пренос података) ................... Системи за интерактивни рад (конверзациони системи) ........ Системи који раде у реалном времену ....................... Решавање комбинаторијских проблема ......................
7 7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2. Aритметика рачунара .................................. 2.1 Бројни системи .......................................... 2.2 Превођење бројева ...................................... 2.3 Бинарни, октални и хексадекадни бројни систем .............. Бинарни бројни систем ................................... Октални бројни систем ................................... Хексадекадни (хексадецимални) бројни систем ............... 2.4 Бројни системи са основом 2u ..............................
00 00 00 00 00 00 00 00
2.5 BCD подаци ............................................ 2.6 Кодирање предзнака броја ............................... Директно кодирање предзнака .............................. Непотпуни комплемент ................................... Потпуни комплемент ..................................... Померај ................................................ 2.7 Бинарна аритметика .................................... Сабирање .............................................. Одузимање ............................................. Множење .............................................. Дељење ............................................... 2.8 BCD аритметика ........................................ 2.9 Представљање бројних података .......................... Целобројни подаци ...................................... Фиксна запета .......................................... Покретна запета ........................................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3. Представљање података ............................. 3.1 Подаци, информације, знање ............................. Подаци ................................................ Информације ........................................... Знање ................................................. 3.2 Циклус обраде података ................................. 3.3 Дискретно представљање података ........................ Шифарски системи ...................................... 3.4 Азбучна пресликавања .................................. 3.5 Бинарно кодирање ...................................... 3.6 Представљање ненумеричких података .................... Знаковни (алфанумерички) подаци ......................... Логички подаци ......................................... Графички подаци ........................................ Контекстни подаци ....................................... Управљачки подаци ...................................... Интерпретација бинарних низова у рачунару ................. 3.7 Модел комуникационог система ........................... 3.8 Дискретизација сигнала ..................................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4. Организација података .............................. 4.1 Опис објеката .......................................... 4.2 Датотеке .............................................. 4.3 Организација датотека .................................. Секвенцијална организација ............................... Индексна (индекс-секвенцијална) организација ............... Релативна организација .................................. Расута организација ..................................... Ланчана организација .................................... 4.4 Типови података ........................................
00 00 00 00 00 00 00 00 00 00
INTEGER - цели бројеви .................................. REAL - реални бројеви ................................... LOGICAL - логичке вредности .............................. CHARACTER - знаковни (алфанумерички) подаци ............. COMPLEX - комплексни бројеви ............................ ARRAY - поље (низ) ...................................... SET - скуповни тип података ............................... STRING - низ (ниска) знакова ........................... ... RECORD - запис (слог) .................................... FILE - датотека .......................................... 4.5 Структуре података ..................................... Графови ............................................... Линеарне структуре података .............................. Поље (низ) ............................................. Таблица (табела) ........................................ Стек (магацинска меморија) ............................... Ред (ред чекања) ........................................ Ланчана (линеарна) листа ................................. Нелинеарне структуре података ............................ Стабло ................................................. Мрежа ................................................. Статиче и динамичке структуре података .................... 4.6 Меморијске репрезентације структура података .............. Структура оперативне меморије ............................ Структура спољне меморије ...............................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5. Носиоци улазних и излазних података ................ 5.1 Меморијски медијуми .................................... 5.2 Носиоци улазних података ................................ Бушена картица ................................... Бушена трака ................................... Документи читяиви за рачунар ............................. а) Обрасци са маркирањм ............................... б) Обрасци са магнетним записом ......................... в) Обрасци са оптичким писмом ........................... Пругасти код ............................................ 5.3 Непосредни унос поодатака ............................... 5.4 Носиоци излазних податка ................................ Трајни носиоци података ................................. 5.5 Принцип магнетног записивања ............................. 5.6 Масовне меморије ....................................... Магнетна трака .......................................... Магнетни диск ........................................... Магнетни добош ......................................... Оптички диск ............................................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
5.7 Кодови за магнетно записивање
. . . . . . . . . . . . . . . . . . . . . . . . . . . 00
RZ код RB код NRZ код NRZI код PE код FM (DF) код MFM код GCR код RLL код
................................................. ................................................. ................................................ ............................................... ................................................. ............................................. ................................................ ................................................ .................................................
00 00 00 00 00 00 00 00 00
6. Елементи прекидачке алгебре . . . . . . . . . . . . . . . . . . . . . . . . . . 00 6.1 Дискретне функције . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Примери примене дискретних функција . . . . . . . . . . . . . . . . . . . . . 00 6.2 Прекидачка алгебра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Аксиоме Булове алгебре . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Теореме Булове алгебре . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Принцип дуалности у Буловој алгебри . . . . . . . . . . . . . . . . . . . . . . . 00 Прекидачка алгебра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Прекидачке функције . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 00 Непотпуно дефинисане прекидачке функције . . . . . . . . . . . . . . . . 000 6.3 Задавање прекидачких функција . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Таблица истинитости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Вектор истинитости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Хиперкубови (хиперкоцке) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Карноове карте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 6.4 Прекидачке функције једне и две независно променљиве . . . . . 000 Особине операција И, ИЛИ, НЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Особине операције сума по модулу два . . . . . . . . . . . . . . . . . . . . . 000 Особине операције импликација . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Особине операција НИ и НИЛИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 Представљање једних функција помоћу других . . . . . . . . . . . . . . . 000 6.5 Фиктивне независно променљиве . . . . . . . . . . . . . . . . . . . . . . . . . 000 6.6 Аналитичка представљања прекидачких функција . . . . . . . . . . . . 000 Потпуни производ и потпуна сума . . . . . . . . . . . . . . . . . . . . . . . . . 000 Каноничке форме прекидачких функција . . . . . . . . . . . . . . . . . . . . 000 Нормалне форме прекидачких функција . . . . . . . . . . . . . . . . . . . . 000 Прелаз од једних аналитичких представљања на друге . . . . . . . . 000 Суперпозиција (супституција) прекидачких функција . . . . . . . . . . . 000 6.7 Теореме развоја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 7. Комбинационе мреже ................................. 7.1 Логички елементи ....................................... Графички симболи логичких елемената ..................... Параметри логичких елемената ........................... 7.2 Прекидачке мреже ...................................... 7.3 Анализа комбинационих мрежа ...........................
000 000 000 000 000 000
7.4 Задатак синтезе комбинационих мрежа .................... Синтеза комбинационих мрежа на основу аналитичких израза .. 7.5 Минимизација прекидачких функција ....................... Минимизација помоћу хиперкубова ........................ Минимизација помоћу Карноових карти ..................... Прости импликанти прекидачких функција .................. Одређивање простих импликаната ........................ Таблица покривања ..................................... 7.6 Минимизација система прекидачких функција ............... 7.7 Минимизација у другим базисима .......................... 7.8 Затворене класе прекидачких функција ..................... 7.9 Потпуни скупови прекидачких функција ..................... Доказивање потпуности ..................................
000 000 000 000 000 000 000 000 000 000 000 000 000
8. Синтеза комбинационих мрежа ....................... 8.1 Синтеза са НЕ, И и ИЛИ елементима ....................... 8.2 Синтеза са НИ и НИЛИ елементима ........................ 8.3 Синтеза са елементима ⊕ ................................ 8.4 NPN класификација прекидачких функција .................. 8.5 Функционална декомпозиција ............................. 8.6 Стандардни комбинациони модули ........................ Мултиплексери ......................................... Демултиплексери ....................................... Универзални логички модули .............................. Декодери ............................................... Програмабилне компоненте ............................... 8.7 Синтеза са стандардним модулима ........................ Синтеза мрежа са мултиплексерима ........................ Синтеза са декодерима .................................. 8.8 Стандардни аритметички модули .......................... Једноразредни сабирачи и одузимачи ...................... Померачи .............................................. Инкрементери и декрементери .. .......................... Компаратори ........................................... Комплементатори ....................................... 8.9 Специјалне мреже ...................................... Конвертори кодова ...................................... Кодери ................................................ Мреже за контролу парности .............................. Мреже за контролу по модулу .............................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
9. Коначни аутомати ..................................... 9.1 Секвенцијалне мреже .................................... 9.2 Модели коначних аутомата ............................... 9.3 Задавање коначних аутомата ............................. Задавање аутомата помоћу таблица прелаза и излаза ........ Задавање аутомата помоћу графова ..................... .
000 000 000 000 000 000
Задавање аутомата помоћу матрица ..... ................. Задавање аутомата помоћу система прекидачких функција .... 9.4 Промена типа аутомата .................................. Прелаз од Муровог на Милијев аутомат ..................... Прелаз од Милијевог на Муров аутомат ...................... 9.5 Непотпуни коначни аутомати ............................. 9.6 Елементарни аутомати .................................. D бистабилно коло ...................................... T бистабилно коло ....................................... RS бистабилно коло ...................................... JK бистабилно коло ......................................
000 000 000 000 000 000 000 000 000 000 000
10. Анализа и синтеза коначних аутомата .............. 10.1 Азбучна пресликавања и коначни аутомати ................. Задавање пресликавања таблицама кореспонденције ......... Аутоматна пресликавања ................................ Постојање аутомата за азбучна пресликавања ............... Задаци анализе и синтезе аутомата ........................ 10.2 Представљање догађаја у аутоматима .................... Алгебра догађаја ....................................... Канонички скуп догађаја .................................. Регуларни изрази ....................................... 10.3 Апстрактна анализа коначних аутомата ................... Путеви у аутомату . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . Алгебарска анализа аутомата ............................. Декомпозиција аутомата ................................. 10.4 Апстрактна синтеза коначних аутомата .................... Канонички задатак апстрактна синтезе ...................... Одређивање регуларних израза на основу таблице кореспонденције . . . Синтеза аутомата на основу регуларних израза ............... Минимизација коначних аутомата .......................... 10.5 Структурна синтеза коначних аутомата .................... Структурно потпуни системи елемената ..................... Канонични метод структурне синтезе ....................... Таблице побуде елементарних аутомата .................... Таблице функција побуде и функција излаза ................. Кодирање стања аутомата ................................ 10.6 Синтеза аутомата у хомогеним структурама ................ 10.7 Стандардни секвенцијални модули ........................ Регистри ...............................................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
11. Рачунари ............................................. 11.1 Структурна шема рачунара .............................. Улазна јединица ......................................... Меморија ............................................... Аритметичко-логичка јединица ............................. Управљачка јединица .....................................
000 000 000 000 000 000
Излазна јединица ........................................ 11.2 Машинске операције и машинске наредбе .................. Структура машинске наредбе .............................. Кодирање наредбе ....................................... 11.3 Програмирање рачунара ................................ Рачунари са упамћеним програмом ......................... 11.4 Процедура и алгоритам ................................. Алгоритми .............................................. Особине алгоритама ..................................... Запис алгоритама ........................................ Запис алгоритама скупом правила .......................... Запис алгоритама дијаграмима тока ........................ 11.5 Програмски језици и преводиоци .......................... Особине програмских језика ............................... Генерације програмских језика ............................. Програмски преводиоци ................................... Извршење програма ...................................... 11.6 Симболички машински језик .............................. Симболичка имена ....................................... Симболички облик машинске наредбе ....................... Асемблерски језик ....................................... Псеудонаредбе асемблера ................................ 11.7 Решавање проблема помоћу рачунара ..................... Методе развоја програма .................................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
12. Структура процесора ................................. 12.1 Функционални елементи ................................. Магистрале ............................................. Аритметичко-логичка јединица ............................. 12.2 Адресност рачунара .................................... Формат машинске наредбе ................................ Троадресни рачунари ..................................... Двоадресни рачунари ..................................... Једноадресни рачунари ................................... Безадресни рачунари ..................................... Наредбе са променqивим форматом ........................ 12.3 Регистри процесора ..................................... Адресни регистар меморије ................................ Прихватни регистар меморије .............................. Бројач наредби (програмски бројач) ......................... Регистар наредби ........................................ Акумулатор ............................................. Регистар услова (кодова стања) ............................ Индексни регистри ....................................... Базни регистри .......................................... Указатељ (показивач) магацина ............................ Регистри опште намене ...................................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
Остали регистри процесора ............................... 12.4 Организација једноадресног процесора .................... Циклус извршеwа наредбе ................................ Фаза припреме наредбе ................................... Фаза извршеwа наредбе .................................. Основни кораци циклуса извршеwа наредбе .................. 12.5 Адресирање оперативне меморије ........................ Формирање извршне адресе ............................... Имплицитно адресирање .................................. Непосредно адресирање .................................. Директно адресирање .................................... Регистарско адресирање .................................. Меморијско индиректно адресирање ........................ Регистарско индиректно адресирање .................... ... Аутоинкрементно и аутодекрементно адресирање ............. Индексно адресирање (индексирање) ....................... Аутоиндексирање ........................................ Базно адресирање ....................................... Релативно адресирање ................................... Остале методе адресирања ............................... 12.6 Микропроцесори и микрорачунари ........................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
13. Наредбе процесора ................................... 13.1 Групе наредби ......................................... 13.2 Наредбе за пренос података ............................. Рад са магацином (стеком) ................................ 13.3 Аритметичко-логичке наредбе ............................ Аритемтичке наредбе ..................................... Наредбе за логичке операције ............................. Коришћење логичких операција ............................ Наредбе за померање .................................... Кружење ............................................... 13.4 Управљачке наредбе ................................... Наредбе гранања ........................................ Подела наредби гранања ................................. Услови гранања ......................................... Наредбе прескока ........................................ Програмске петље ....................................... Посебне наредбе за петље ................................ Потпрограми ............................................ Врсте потпрограма ....................................... Наредбе за потпрограме .................................. Пренос параметара потпрограма ........................... 13.5 Улазно излазне наредбе ................................. 13.6 Остале наредбе ........................................ Наредба без дејства ...................................... Заустављање извршења програма ..........................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
Децимална корекција Специјалне наредбе
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000
14. Улаз-излаз ............................................ 14.1 Улазно-излазни подсистем рачунара ....................... Начини преноса података ................................. Спрезање улазно-излазних уређаја ......................... Управљање улазно-излазним преносом ..................... 14.2 Програмирани улаз-излаз ................................ 14.3 Улаз-излаз управqан прекидом ........................... Систем прекида .......................................... Приницип одвијања прекида ............................... Улазно-излазни пренос управљан прекидом .................. 14.4 Директни приступ меморији .............................. 14.5 Улазно-излазни процесори ............................... 14.6 Улазни уређаји ......................................... Уређаји за ручно уношење ................................. Уређаји за аутоматско уношење ............................ 14.7 Излазни уређаји ........................................ Штампачи .............................................. Уређаји за излаз на микрофилм ............................ Други излазни уређаји .................................... 14.8 Даљински улаз-излаз ....................................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
15. Програмска подршка (софтвер) рачунара ............. 15.1 Хардвер и софтвер рачунарских система ................... 15.2 Системски софтвер ..................................... Комуникациони софтвер .................................. Систем за управљање базама података ..................... Софтвер за рачунарску графику ............................ 15.3 Режими рада рачунарских система ........................ Вишепрограмски режим рада .............................. Паралелна обрада ....................................... Обрада са поделом времена ............................... Рад у реалном времену ................................... Даљинска обрада ........................................ Дистрибуирана обрада .................................... 15.4 Оперативни систем ..................................... Ресурси рачунарских система .............................. Функција оперативног система ............................. 15.5 Програмски систем ..................................... Компилатори ............................................ Интерпретатори ......................................... Претпроцесори .......................................... 15.6 Услужни програми ...................................... Едитори ................................................ Повезивачи .............................................
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
Средства за тестирање и отклањање грешака . . . . . . . . . . . . . . . . 000 Помоћни програми . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 15.7 Апликациони софтвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 16. Комуникација података .............................. 16.1 Рачунарске мреже ...................................... Локалне рачунарске мреже ................................ 16.2 Мреже за пренос података ............................... ISO OSI архитектура ...................................... Мреже за интегрисане услуге .............................. Оптички и сателитки комуникациони системи ................. 16.3 Специјални телекомуникациони сервиси ................... Приступ базама података ................................. Телетекст систем ........................................ Видеотекс систем ........................................ Телеконференције ....................................... Аудиотекс .............................................. 16.4 Електронска пошта ..................................... Факсимил (телефакс) ..................................... Телетекс систем ......................................... 16.5 Електронска размена података ........................... 16.6 Информациони сервиси и системи за претраживање информација . . . . Опис садржаја докумената ................................ 16.7 Биротика (аутоматизација канцеларија) .................... 17. Коришћшена литература 18. Регистар појмова
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 000
1. УВОД
1.1. Информациона криза Савремени период у развоју људског друштва често се назива информациона ера или ера рачунара. Карактерише се широким коришћењем система заснованих на рачунарима у којима се прикупљају, памте (складиште), обрађују, достављају и користе подаци и информације. Настао је као последица сталног пораста брзине промена и вишеструког раста свих друштвених функција и процеса, заједно са друштвеним, технолошким и другим видовима развоја. Све ово праћено је разноврсним активностима и догађајима које је требало регистровати, систематизовати и користити. Рачунари су постали значајан чинилац у обради података и информација у предузећима као саставни део система који се називају информациони системи или управљачки информациони системи. Њихова је намена да подрже функције оперативног праћења, руковођења и доношења одлука. Да бисмо се упознали са карактеристикама информационе ере претходно ћемо увести појам податка и информације. Регистроване чињенице о људима, предметима, појмовима, појавама, процесима и другим догађајима, објектима или ситуацијама називају се општим именом подаци. Подацима се на одређени формализовани начин представљају сирове чињенице о реалном свету у тзв. симболичком облику који се описује касније. Када је за неку одређену примену потребно, издвајају се или на одређени начин формирају они подаци који имају неки значај за корисника и могу да га мотивишу на предузимање одређених акција. Овакви подаци називају се информације. Појмови подаци и информације биће детаљније обрађени у трећем поглављу. Обим раста информација показује и следећи пример. Према проучавањима обављеним у САД укупно људско знање акумулирано до 1900. године
1
удвостручило се до 1950. године. До следећег удвостручења дошло је већ 1960. године, а од тада се та иста појава може уочити сваких 10-15 година. Број књига које се у току једне године штампају износи око 500.000 наслова, број наслова стручних и научних часописа износи 50.000 (од укупно 130.000 разних часописа). Процес интензивирања производње и усавршавање начина пословања, заједно са технолошким развојем транспорта и начина комуницирања, значајно је повећао обим података и информација и довео је до тзв. информационе кризе, односно до рекордног пораста информационих токова. С друге стране, човекове ограничене биолошке способности за памћење, обраду и дистрибуцију података и информација и традиционална средства којима је он располагао за рад са њима, нису били у стању да прате и реше настали проблем. Ово је посебно важно ако се има у виду да ниво обезбеђености информацијама стручњака, научника и руководиoца представља један од основних фактора напретка друштва.
1.2. Проналазак и улога рачунара Један од најважнијих проналазака који је омогућио да се превлада информациона криза био је проналазак нове врсте машина (уређаја) који су били у стању да помогну човеку у његовом умном раду. Тиме је човеков рад на обради података и информација замењен радом машине назване рачунаром, јер је њена првобитна намена било механичко ("аутоматско") извршавање рачунских операција. Данас су области примене и могућности рачунара знатно проширене, тако да "стари" термин рачунар више не одражава у потпуности суштину његовог коришћења, већ означава уређај или систем који прихвата податке, извршава над њима операције трансформације (разне нумеричке или ненумеричке операције) и саопштава резултате обраде. Сматра се да је проналазак рачунара довео до нове технолошке револуције и да је на неки начин значајнији од проналаска парне машине. После замене физичког рада човека машинама за рад у ери индустријализације, односно увођења технике која је појачала физичке способности човека, контакт човека и природе остварен је на спознајном, интелектуалном нивоу, и део умног рада човека преузимају машине за обраду података, тј. рачунари. Сада се улога човека у производном процесу може постепено пребацивати на креативне послове, док се механички, рутински и послови који се понављају ауто-
2
матизују и препуштају се машинама. Настаје период када техника почиње да постепено искључује ограничене физичке и умне (психичке) снаге човека унутар непосредне производње. У производњу се сада све више уводи аутоматизација и јављају се идеје о аутоматизованом предузећу. Абакус и сличне направе за "рачунање" које су користили стари народи не означавају почетак механизације умне делатности човека. Тек је појава арапских цифара, које су из Индије преко Арапа пренете у Европу, омогућила писање бројева у позиционим бројним системима, разраду релативно простих правила извршења основних аритметичких операција, усавршавање метода рачунања и тражење тeхничких решења за машине за рачунање. Почев од XVII века било је више предлога и реализација механичких машина за рачунање, али је своје право место и улогу рачунар добио са развојем електронике и реализацијом електронских рачунара.
1.3. Теоријски основи рачунара Развој неколико научних области омогућио је да се реализује уређај који може обављати механичка, тј. аутоматска израчунавања. Ниже ћемо кратко размотрити најважније области које су представљале основу за проналазак и реализацију савремених електронских рачунара. Све ове области детаљније ће бити разматране у каснијим излагањима, а овде се даје само кратак преглед.
Булова алгебра
Булова алгебра или алгебра логике представља основни математички апарат који се користи при пројектовању електронских рачунара. То је алгебра у којој аргументи и функције узимају вредности из скупа од само два елемента. Ове се функције зову прекидачке (Булове, логичке) функције. На њој се заснива теорија прекидачких мрежа (логичко пројектовање), техничка дисциплина која омогућава анализу и синтезу мрежа електронских рачунара. Добила је име према Џорџу Булу (George Boole), енглеском математичару који је 1847. године предложио алгебру логике ради математичке анализе Аристотелове логике тј. ради формалног изучавања закона мишљења. Другим речима, Бул је применио алгебарске методе за решавање традиционалних
3
логичких проблема. Ове идеје даље је прихватио Де Морган (1858. године) и многи други математичари. Данас је Булова алгебра посебна област у оквиру математичке или симболичке логике, области математике у којој се помоћу тзв. формалних теорија или формалних система проучавају правилни начини расуђивања, логичка структура и својства научних теорија. Могућност примене апарата Булове алгебре у телефонским аутоматским системима и рачунским уређајима уочило је скоро истовремено више аутора, мада се најчешће помиње Клод Шенон (C. Shanon) који је 1938. године објавио први рад на ту тему и отпочео стварање теорије прекидачких мрежа. На аналогију између логике исказа и мрежа са релејима указивали су независно једни од других Цузе у Немачкој 1933. године, Шестаков у СССР-у 1934. године, Накасима и Ханзава у Јапану 1936. године и Пиш у Аустрији 1939. године.
Бинарна аритметика
Савремен декадни (децимални) бројни систем за представљање бројева користи десет цифара. Настао је на основу нумерације која је поникла у Индији у V веку. Запис бројева у њему је компактан и погодан за систематски опис поступка извршења аритметичких операција. Убрзо после настанка, декадни бројни систем почиње да се шири на Запад и Исток. У IX веку појављују се рукописи на арапском језику у којима се излаже овај систем. У X веку долази до Шпаније, а почетком XII века појављује се и у другим земљама Европе. Нови систем писања бројева добио је назив арапски због тога што су се у Европи са њим упознали први пут на основу латинских превода са арапског језика. Међутим, тек у XVI веку нова нумерација почиње да се шире користи и у науци и у свакодневном животу. Први писани документ о могућности коришћења бинарног бројног система, тј. бројног система у коме се користе само две цифре, потиче из 1679. године и припада немачком математичару Лајбницу, који је и више година пре тога помињао ту идеју. Лајбниц је чак описао и начин реализације машине која би радила у бинарном бројном систему. Ова идеја остаје заборављена све до 1936. године када је неколико аутора указивало на предности бинарног бројног система за реализацију механичких уређаја за рачунање. Међутим, овај систем је дошао до изражаја када је у исто време уочена веза између Булових функција, бинарне аритметике и два стања електромагнетних релеа, а касније и електронских кола.
4
Дигитална електронска кола
Обично сваки уређај или машина, колико год он био сложен, садржи просте елементе неколико различитих типова. За представљање било које бинарне цифре или једне од две могуће логичке вредности могу се користити елементи или материјали који се могу налазити у једном од два различита стабилна стања, или физичке величине које могу имати једну од две различите јасно изражене вредности. Ови елементи називају се бинарни елементи. Многи физички елементи по својој природи су бинарни. Тако је нпр. контакт релеа отворен или затворен, отвор на папирној траци или картици је избушен или није избушен, сијалица је упаљена или угашена итд. У свим овим случајевима није могуће никакво друго стање. С друге стране, многи елементи који по својим особинама нису бинарни, раде са максималном поузданошћу када се користе у бинарном режиму. Тако нпр. у транзистору се може обезбедити широки дијапазон струја и могле би се изабрати десет вредности које одговарају декадним цифрама. Међутим, због промене струје услед старења компонената, промене радне температуре и неких других узрока, разликовање толико нивоа струје постаје проблематично. Због тога је у пракси много лакше и боље да се чак и такви универзални елементи као што су полупроводничке електронске компоненте које се називају транзистори, принуде да раде само у два режима (стања): "отворен" и "затворен". Овим се обезбеђује јасно разликовање два различита дозвољена стања. У раду рачунара могу се издвојити две битне функције: – обрада (претварање, трансформација) података, – памћење (чување, складиштење) података. За реализацију ових функција у рачунару потребно је, с једне стране, поседовати елементе помоћу којих се могу вршити елементарне трансформације података и, с друге стране, физичке појаве које се користе за памћење података. У савременим рачунарима обе ове функције могу се реализовати електронским колима, али се за дуготрајно чување података користе други материјали о којима ће бити речи касније. У најширем смислу речи дигитално коло или логички елемент јесте било које електронско коло које функционише дискретно, на које се доводе улазни сигнали из неког коначног скупа вредности, и из кога се добијају излазни сигнали из истог скупа вредности, a који представљају функцију улазних сигнала.
5
Ми ћемо надаље претпостављати да сви сигнали могу узимати само две различите - бинарне вредности. Бинарне вредности реализују се најчешће потенцијалом, цифра "1" сигналом високог напона, а цифра "0" сигналом ниског напона. Кола за реализацију елементарних логичких операција називају се логичка кола или логички елементи. Скуп елемената који реализују неку Булову (прекидачку) функцију назива се логичка мрежа или прекидачка мрежа. Аритметичке операције у бинарном бројном систему реализују се у дигиталним уређајима тако што се излази из аритметичке јединице третирају као Булове (прекидачке) функције улаза, примењују посебни поступци синтезе и оптимизације прекидачких мрежа и синтетизоване мреже реализују усвојеним скупом логичких елемената. На тај начин се помоћу електронских уређаја рачунање остварује аутоматски, односно "механички".
Дисктретно представљање података
Представљени подаци могу имати два основна облика: – аналогни подаци – дискретни (дигитални, цифарски) подаци Каже се да је податак представљен у аналогном облику ако је он задат помоћу физичке величине која се мења континуално (непрекидно), а чија је вредност директно пропорционална подацима или је функционално зависна од података. Другачије се може рећи да је податак представљен у аналогном облику ако се може изразити помоћу скупа реалних бројева, јер се две суседне вредности података могу разликовати за произвољно малу вредност. Податак је представљен у дискретном облику ако је задат помоћу одвојених елемената, као што су знаци (где се под знаком подразумева слово, цифра или неки специјални знак) или помоћу прекидних физичких величина које имају само одређене, оштро одвојене вредности. Уопште се каже да је дискретно представљање података представљање помоћу знакова, при чему поједини знаци или групе знакова одређују једну од више алтернатива (вредности). Ако је податак задат помоћу цифара, евентуално специјалних знакова и знака размак, каже се да је он представљен у цифарском или дигиталном облику. То је посебан случај дискретног представљања. Још један случај дискретног представљања су знаковни или алфанумерички подаци - подаци представљени помоћу слова, цифара, евентуално специјалних знакова и знака размак.
6
Речи написане у облику текста или број написан цифарама су примери дискретног представљања података. Читање на скали аналогног брзиномера или број на скали логаритмара представљају податке са континуалном структуром (променом). У циљу представљања података договорно се усваја коначан непразан скуп различитих елемената који обично садржи мала и велика слова азбуке, знаке децималних цифара, знаке интерпункције и друге специјалне знаке. Такав скуп елемената назива се скуп знакова, апстрактна азбука или кратко азбука (понекад и алфабет). Коначан број редом написаних знакова из скупа знакова назива се низ (ниска, реч) над тим скупом знакова. За представљање коначног броја елемената неког скупа или коначног броја различитих вредности неке величине примењује се следећи поступак. Над усвојеним скупом знакова формира се потребан број низова и сваком елементу стави се у обострано једнозначну кореспонденцију по један низ. Тада кажемо да смо податке кодирали, а сваки коришћени низ назива се кодни низ, кодна комбинација, кодна реч или код одговарајућег елемента. Успостављање обострано једнозначне кореспонденције потребно је због тога што врло често постоји потреба декодирања - обратног преласка од кода на одговарајући елемент. Примере дискретног представљања ми врло често користимо у обичном животу. Тако нпр. имена људи, имена градова, имена улица, поштански бројеви, лични бројеви грађана итд., представлају примере дискретног представљања (кодирања).
Теорија алгоритама
Алгоритам представља тачан коначан опис општег поступка који дефинише начин решавања неког проблема применом елементарних корака или елементарних правила обраде (трансформације). Тачан опис означава да је могуће једнозначно разумевање и примена сваког елементарног правила, без обзира да ли је оно задато текстуално, помоћу формула или на неки други начин. Зато се често каже да алгоритам омогућава чисто механичко ("аутоматско") решавање проблема без обзира да ли га извршава човек или нека машина. Елементарни кораци (правила) алгоритма извршавају се сукцесивно један за другим, мада је у неким случајевима могуће и њихово истовремено – паралелно извршење. Реч алгоритам потиче од латинског имена Algorithmi познатог арапског математичара и астронома Ал-Хорезмија, који се бавио аритметиком и алгебром и употребљавао је индијски систем писања бројева
7
помоћу арапских цифара. Преко превода његових дела у XII веку су се европски математичари упознали са овим начином писања бројева и развио се покрет, под називом "алгоритмичари", присталица нових метода извођења аритметичких операција, савршенијих од метода рачунања на абакусу. Имајући у виду дефиницију да обрада података (обрада информација) представља примену операција над подацима и да ми користимо дискретна представљања за опис тих операција, обрада података се тако своди на азбучна пресликавања тј. пресликавања скупа низова (речи) над једном азбуком у скуп низова (речи) над истом или неком другом азбуком.
Апстрактни аутомати
У општем случају термин аутомат или машина означава уређај који по задатом програму, без непосредног учешћа човека, извршава све операције добијања, претварања (трансформације), преноса и коришћења енергије, материјала или информација. Ми ћемо надаље посматрати апстрактне аутомате или апстрактне машине - уређаје који могу да врше азбучна пресликавања тј. аутоматско претварање (трансформацију) дискретних података. Наиме, поред аутомата који су олакшали физички рад човека, данас постоје и аутомати који олакшавају његов умни рад, посебно сложене рачунске послове. Ови аутомати називају се у општем случају рачунски аутомати или рачунске машине. Апстрактни аутомат који служи за претварање дискретних података назива се дискретни аутомат. Како се дискретне информације могу увек сматрати азбучним информацијама, задатим над неком азбуком, речи (низови) се у савременим аутоматима обично изражавају помоћу стандардне азбуке неког бројног система (најчешће бинарног или декадног). Стога се дискретни аутомати зову још и дигитални аутомати или цифарски аутомати. Основна карактеристика рада дискретног аутомата јесте постојање коначног скупа унутрашњих стања и дисконтинуалног (скоковитог) преласка из једног стања у друго. После преласка у неко стање, прелаз у следеће стање не може се обавити пре него што истекне фиксни временски интервал. Ова претпоставка омогућује да се рад аутомата посматра у дискретним временским тренуцима − синхронизационим или тактним интервалима.
8
1.4. Генерације рачунара Досадашњи развој рачунара описује се помоћу генерација рачунара - карактеристичних временских периода који су обично одређени променама у доминантној технологији коришћеној за реализацију рачунара. При томе је свака нова генерација рачунара омогућила креирање нове класе рачунара. Општа сагласност о броју генерација рачунара углавном постоји, али код разних аутора постоје мале разлике у почетку и крају трајања сваке генерације рачунара. Осим тога, период до електронских рачунара није обухваћен генерацијама развоја рачунара, иако је било предлога за реализацију рачунских уређаја помођу механичких и електромеханичких компонената. Прва генерација, 1946 - 1955 (1950 -1959) – нова технологија: електронске цеви – нови производ: комерцијални електронски рачунари – примитивна архитектура – меморија са магнетним добошима – машински (асемблерски) језик за програмирање – велике димензије система – брзина процесора: 0.010 MIPS (милиона инструкција у секунди) – капацитет оперативне меморије: 2 KB (килобајта) Друга генерација, 1956 - 1963 (1960 - 1968) – нова технологија: дискретне полупроводничке компоненте (транзистори) – нови производ: јевтинији рачунари – оперативна меморија са магнетним језгрима – бушене картице и магнетне траке као носиоци података – виши (процедурални) програмски језици – умерене димензије система – брзина процесора: 0,2 MIPS
9
– капацитет оперативне меморије: 32 KB (килобајта) Трећа генерација, 1964 - 1977 (1969 - 1977) – нова технологија: интегрисана кола малог и средњег степена интеграције – нови производ: минирачунари – оперативни системи (мултипрограмски рад и временска подела) – савршенији виши програмски језици – моћне спољне меморије са магнетним дисковима – димензије: мини – брзина процесора: 5 MIPS – капацитет оперативне меморије: 128 KB - 2 MB (мегабајта) Четврта генерација, 1978 - 199Х – нова технологија: интегрисана кола високог степена интеграције – нови производ: персонални рачунари и радне станице – полупроводничка MOS оперативна меморија – даљинска и дистрибуирана обрада, рачунарске мреже – непроцедурални програмски језици – интегрисане базе података – димензије: микро – брзина процесора: 100 MIPS – капацитет оперативне меморије: 8 MB Пета генерација 199Х – нова технологија: паралелна обрада – нови производ: мултипроцесори (вишепроцесорски паралелни рачунари) – вештачка интелегенција.
10
Напоменимо да се на основу познатог јапанског пројекта рачунара пете генерације понекад још среће назив пета генерација рачунара за период 1981. – 1990., када су требали да буду развијени рачунари са могућностима вештачке интелигенције.
1.5. Подела рачунара Рачунари се могу класификовати према различитим кроитеријумима, а најчешће се користе следећи: а) према начину представљања података постоје: аналогни, дигитални и хибридни (аналогно-дигитални) рачунари б) према намени рачунари се деле на : 1) универзалне (опште намене), који служе за решавање различитих проблема, и 2) наменске (специјалне) рачунаре, намењене за решавање само одређене класе проблема в) подела рачунара према могућностима (карактеристикама) процесора је најчешћа, тако да се обично издвајају следеће класе рачунара: 1) персонални рачунари, 2) радне станице, 3) мрежни сервери, 4) минирачунари, 5) главни рачунари, 6) суперрачунари. Моћнији рачунари имају и већу цену, а због брзог побољшања могућности процесора разлике међу процесорима разних класа рачунара постају све мање. Због тога је улаз-излаз постао главни параметар по коме се могу разликовати поједине класе рачунара, и то на следећи начин: – разлика између радне станице и персоналног рачунара је та да је радна станица увек повезана у мрежу, – разлика између мрежног сервера и радне станице је та да сервер има јединице дискова и трака а нема екран, тастатуру и миша, – разлика између минирачунара и радне станице је та да радна станица има екран, тастатуру и миша, – разлика између главног рачунара и минирачунара је та да главни рачунар може да подржи много више диск јединица и терминала. Сматра се да ће убудуће сви рачунари, од најмањих до највећих, користити исте "супермикропроцесоре", а да ће разлике у могућностима бити одређи-
11
ване на основу величине оперативне меморије, улазно-излазног система и броја процесора. Данас се ради на развоју још једне нове класе рачунара - неурорачунара, заснованих на коришћењу вештачких неуронских мрежа сличних неуронима мозга, који ће имати вероватно принципијелно другачију архитектуру од досадашње, а биће у стању да знатно боље решавају неке "тешке" проблеме. Наиме, когнитивни (спознајни) проблеми као што су препознавање ликова, учење говора, разумевање природног језика, претраживање текстуалне информације у меморији или вођење механичке руке робота ради хватања предмета су примери проблема које брзо решава мозак а који су тешки за решавање помоћу конвенционалних рачунара.
1.6. Информационе технологије Термин "информационе технологије" појавио се крајем седамдесетих година. Уведен је са циљем истовременог спајања електронике, рачунарске технике и телекомуникација, области које су довеле до револуционарних промена у руковању, обради и складиштењу података и информација. Имајући у виду значење термина технологија: наука о поступцима обраде и прераде сировина у готове производе, тј. скуп метода обраде, прераде, измене стања, особина и облика сировина, материјала или полуфабриката који се користе у процесу производње за добијање готових производа, информационе технологије се могу дефинисати као: техничка средства и методе обраде за стварање (генерисање), складиштење (чување), пренос и коришћење информација. На тај начин информационе технологије означавају скуп метода и начина за прикупљање, унос, складиштење (чување), обраду, издавање (достављање, дисеминацију) и коришћење информација. Блиска по значењу су и следећа два термина: а) информатика (аутоматска обрада података): грана науке која проучава методе, технике и средства које се односе на обраду података, претежно аутоматским средствима, б) рачунарство (рачунарска техника): проучавање принципа рада, организације и примене рачунара. Теоријски оријентисане области рачунарства су: Булова алгебра, теорија алгоритама и израчунљивост, математичка логика, формални језици, нуме12
ричка анализа, дискретна математика и др. Технички оријентисане дисциплине рачунарства су: организација и архитектура рачунара, дигиталне електронске компоненте, прекидачка алгебра, улазно-излазни уређаји, рачунарске мреже, техника програмирања, програмски језици, оперативни системи, структуре и базе података, пројектовање софтвера (програмске подршке), дигитална симулација, вештачка интелигенција и др. Ако се упореде ова три термина може се рећи следеће. Најопштији је термин информационе технологије, јер он обухвата више области које се обично не сматрају деловима информатике или рачунарства, нпр. микроелектроника, дигитална електроника, телекомуникацине мреже, телематика (мултимедијалне комуникације), роботика, рачунарски интегрисана производња, па чак и средства масовног комуницирања. Даље се информатика може сматрати нешто ширим појмом од рачунарства, јер се по неким ауторима биротика (аутоматизација пословања), системи за складиштење и претраживање информација (информациони сервиси), а понекад и информациони системи не сматрају делом рачунарства. Међутим, има доста проблема да се ова два појма евентуално раздвоје, јер се у многим земљама информатика и рачунарство сматрају еквивалентним појмовима. Напоменимо да неки аутори као саставну компоненту информационих технологија не сматрају микроелектронику, већ само информатику и телекомуникације. Осим тога, понекад се такође срећу мишљења да и телекомуникације, иако се у великој мери заснивају на коришћењу рачунара, нису саставна компонента информационих технологија. Садржај појма "информационе технологије" одражава програм истраживања у оквиру ESPRIT пројекта (ESPRIT - European Strategic Program for Research in Information Technology – Европски стратешки програм истраживања у информационим технологијама), који је садржао следеће основне теме: 1. Модерна микроелектроника (електронска кола високог степена интеграције и високих перформанси, рачунарско пројектовање електронских кола високог степена интеграције, оптоелектроника итд.) 2. Технологија програмске подршке (софтвера) (ефикасна окружења за развој софтвера) 3. Модерна обрада података (инжењертво знања, складиштење знања, машински вид, комуникација говором итд.) 4. Аутоматизација канцеларија (модерне канцеларијске радне станице, комуникација података, системи за складиштење и претраживање, пројектовање интегрисаних канцеларија)
13
5. Рачунарски интегрисана производња (пројектовање помоћу рачунара, производња подржана рачунаром, флексибилни производни системи, роботика) 6. Системи за размену информација. Сагласно са напред размотреним садржајем информационих тхехнологија све области које припадају информационим технологијама могу се према специфичности примене условно сврстати у следећих шест група: Средства и методе за обраду података (микроелектронске полупроводничке технологије, дигитална електронска кола, друге врсте компонената, меморијски медијуми, рачунарске архитектуре, локалне рачунарске мреже, софтверско инжењерство), Телематика (комуникација података) (пренос података, мреже за пренос података, телекомуникационе мреже за интегрисане услуге, оптичке комуникације, сателитске комуникације), Услужни телекомуникациони сервиси (базе података, електронска пошта, телетекс системи, видеотекс системи, информациони сервиси и системи за претраживање информација), Биротика (аутоматизација пословања) (обрада текста, стоно издаваштво, пословни информациони системи, аудио и видео системи, телеконференције, електронски пренос докумената, микрографија), Вештачка интелигенција (базе знања, интелигентни системи, експертни системи, интелигентни роботи, комуникација човек-машина, машински вид, учење, неуронске мреже), Рачунарски интегрисана производња (рачунарски интегрисани производни системи, рачунарска графика, флексибилни производни системи, системи за аутоматизацију пројектовања, рачунарско управљање производњом, индустријски роботи).
1.7. Области примене рачунара Рачунар је моћни систем који се користи за обраду података, при чему обрада података представља примену различитих операција над подацима. Примена рачунара је врло широка јер се он показао ефикасним и корисним за
14
решавање многих проблема из разних области. Ниже су наведене неке карактеристичне области примене рачунара:
Пословна обрада (информациони системи)
Почело се од аутоматизације комерцијалне обраде (финансијског пословања). Као надградња уведене су обраде које људи нису могли да обављају брзо и на задовољавајући начин (праћење залиха и стања магацина и др.), а као највиши ниво обраде су управљачки информациони системи, чији је задатак да помогну при руковођењу. Они омогућавају ажурност и стални увид у стање производње, као и припрему релевантних информација за различите нивое руковођења.
Аутоматизација и управљање процесима
Рачунари омогућавају ефикасно обухватање, прикупљање и праћење података (надгледање или мониторинг), затим управљање разним технолошким процесима, али и управљање рачунарски интегрисаном производњом, флексибилним производним системима и роботима.
Научно-техничке примене
Рачунари налазе примену при решавању великог броја научно-техничких проблема. То су пре свега пројектовање и прорачуни за техничке системе, симулација и моделирање система и др.
Комуникација података (пренос података)
Рачунари директно управљају преносом података. Данас се изграђују јавне мреже за пренос података као интегрисане мреже које поред текста преносе заједно и говор, звук, слике и фотографије. Осим тога рачунари управљају и преносом података ка периферијама или обратно, а користе се и за даљинска мерења (телеметрија).
15
Ситеми за интерактивни рад (конверзациони системи)
То су системи који омогућавају да корисник директно са терминала или персоналног рачунара може комуницирати са другим рачунарима повезаним у мрежу. Најчешће се користе за даљинске упите (нпр. видеотекс), за приступ базама података (библиографским, фактографским), за електронску размену података, у системима за резервацију итд.
Системи који раде у реалном времену
Важна примена рачунара је у системима који на сваки захтев морају да дају одзив у одређеном временском интервалу. За ове системе се каже да раде у реалном времену, што је основни захтев код управљања технолошким процесима, управљања објектима (нпр. летелицама) и сл.
Решавање комбинаторијских проблема
То су сложени проблеми за које не постоје алгоритми, или постоје алгоритми али је обрада сложена и дуготрајна. Актуелни проблеми овог типа су: распознавање говора, слика и ликова (узорака), аутоматско доказивање теорема, различите врсте проблема где је немогућа анализа свих могућих случајева, доказивање коректности рачунарских програма и др. У ове проблеме се могу уврстити и многи ненумерички алгоритми за комплексне проблеме, проблеми вештачке интелегенције и др.
16
2. АРИТМЕТИКА РАЧУНАРА
2.1. Бројни системи Термин број користи се у обради података да се њиме означи један од следећа два различита појма: 1) број као апстрактан математички објект, који се користи за исказивање (приказивање) количине јединица или предмета; 2) запис броја - било које представљање (записивање) броја дефинисаног под 1 више, односно дискретна репрезентација броја. За записивање бројева користе се бројни системи или нумерације - скупови знакова (симбола) и правила њиховог коришћења за представљање бројева. Може се такође рећи да је бројни систем или нумерација нотација за представљање бројева, односно дефинисани начин изражавања и означавања бројева. Знаци који се користе за представљање бројева називају се цифре или бројке. Бројни систем није ништа друго већ код (начин кодирања) којим се представљају количине. За сваку различиту количину постоји придружени запис, обично у симболичком облику, нпр. низ, текст и др. У свакодневном раду ми користимо декадни (или децимални) бројни систем. Ако са ди означимо цифре из скупа skupa D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, које се називају декадне цифре, онда се сваки декадни број представља (записује) у општем случају помоћу низа облика: dn-1dn-2 … d1d0.d-1d-2 … d-m
(2.1)
При томе се за одвајање целог и децималног (разломљеног) дела броја користи посебан знак који се назива децимална тачка (у рачунарској техници се за одвајање целог и децималног дела броја не користи децимална запета).
17
Место које нека цифра има у низу којим је представљен број назива се позиција или разред. Позиције се означавају (индексирају) целим бројевима лево и десно од децималне тачке, и то лево од децималне тачке позитивним бројевима у растућем низу улево, а десно од децималне тачке негативним бројевима у опадајућем низу удесно, на следећи начин: ... 4 3 2 1 0 . -1 -2 -3 -4 ...
(2.2)
Тако нпр. у запису броја 372.85 прва слева цифра 3 налази се у позицији 2, цифра 7 у позицији 1, цифра 2 у позицији 0, цифра 8 у позицији -1 и цифра 5 у позицији -2. Количина (бројна вредност) која је представљена низом облика (2.2) тј. записом декадног броја, одређује се помоћу израза A = dn-1·10n-1 + dn-2·10n-2 +…+ d1·101 + d0·100 + d-1·10-1 + d-2·10-2 +…+ d-m ·10-m односно n −1
A = ∑ d k ⋅10 k . k = −m
(2.3)
Декадни бројни систем није једини бројни систем који се може практично користити. Зато ћемо размотрити општији случај бројног система. Нека је C = (c0 , c1 , ... , cq-1) коначан скуп знакова који служе као цифре неког бројног система. Бројеве у овом бројном систему представљаћемо (записиваћемо) помоћу низова коначне дужине над азбуком C облика: cn-1cn-2 …c1c0 .c-1c-2 …c-m
(2.4)
Сваком низу облика (2.4) ставља се једнозначно у кореспонденцију количина (додељује се бројна вредност) према унапред усвојеним правилима. То су најчешће следећа правила : а) свакој цифри посебно додељује се једнозначно нека бројна вредност; б) бројна вредност која се додељује цифри (коју има цифра) у свакој позицији записа (2.4) одређује се према посебном правилу; в) укупна бројна вредност коју означава запис облика (2.4) израчунава се на основу вредности цифара у свакој позицији према некој одређеној функцији. Ова функција је најчешће сумирање, и ми ћемо овај случај посматрати, али се могу срести и неки други случајеви.
18
Зависно од начина одређивања бројних вредности цифара у свакој позицији сагласно правилу б) разликују се следећа два случаја : 0) Вредност која се ставља у кореспонденцију свакој цифри у запису броја, тј. вредност којом цифра учествује (има удела) у укупној бројној вредности, не зависи од позиције у којој се та цифра налази. Такви бројни системи називају се непозициони бројни системи. 1) Вредност која се ставља у кореспонденцију свакој цифри у запису броја, тј. вредност којом цифра учествује у укупној бројној вредности, зависи од позиције у којој се та цифра налази. Такви бројни системи називају се позициони или тежински бројни системи. Код позиционих бројних система користи се позициона репрезентација или позициона нотација у којој је број представљен уређеним скупом знакова, нпр. низом облика (2.4) на такав начин да вредност којом учествује цифра у укупној вредности зависи од њене позиције (места) као и од вредности саме цифре. Зато се у овом случају говори о позиционој вредности цифре, тј. о вредности коју има цифра према свом месту у запису броја. То такође значи да у позиционим бројним системима иста цифра означава различите бројне вредности у зависности од њеног места у запису броја. Као пример непозиционог бројног система наведимо писање бројева помоћу римских цифара. Тако нпр. у броју XXX свака цифра означава исту вредност 10 независно од позиције. Међутим, функција за израчунавање укупне вредности у овом бројном систему није сабирање, већ може бити и одузимање, зависно од положаја цифре у односу на друге цифре у запису броја. Одузимање се примењује ако се у запису броја, гледано слева удесно, цифра са мањом вредношћу налази испед цифре са већом вредношћу. Тако у запису CXLIV вредности цифара C, L и V се сабирају а вредности цифара X и I се одузимају, па је укупна вредност исказана овим записом једнака 144. У општем случају код позиционих бројних система, поред вредности цифара треба задати и вредности тежина tk у свакој позицији k (k = 0, ±1, ±2, ... ). При томе вредности цифара и вредности тежина не могу бити произвољне, већ треба да омогуће представљање било које бројне вредности из одређеног интервала. Бројеви се записују у облику низа cn-1cn-2 … c1c0 .c-1c-2 … c-m
(2.5)
коме одговара бројна вредност
19
n −1
A = ∑ ck ⋅ t k . k = −m
(2.6)
Ако би у тежинском бројном систему требало представити било коју бројну вредност у облику низа (2.5) било би потребно да се зада бесконачан број тежина. Како је просто набрајање тежина немогуће, у пракси се користе бројни системи у којима се вредност тежина задаје као функција редног броја позиције. Ови бројни системи разматрају се касније. Пример. Ако бисмо условно прихватили да време изражавамо као шестоцифрени број у коме две цифре у највишим позицијама представљају сате, две следеће цифре минуте, а две последње секунде, имали бисмо тежински бројни систем у коме се сваки број представља у облику низа c5c4c3c2c1c0, а вредност (количина) исказана оваквим бројем представљала би укупан број секунди. Ако се тежине tk у свим позицијама k бројног система одређују према правилу tk = qk , k = 0, ±1, ± 2, … (2.7) онда се такав бројни систем назива природни бројни систем. Број различитих цифара q код оваквих бројних система назива се основа или база бројног система. Зато се природни бројни системи зову и бројни системи са основом. Из релације (2.7) лако се изводе и следеће релације tk = q⋅ tk-1 ,
tk/tk-1 = q
(2.8)
Већина бројних система који се данас користе у пракси припада природним бројним системима, и у њима је q > 1. Поред декадног бројног система, користе се и природни бројни системи са основама 2, 8 и 16. Бројни систем са основом 2 назива се бинарни бројни систем, са основом 8 октални бројни систем, а са основом 16 хексадецимални или хексадекадни бројни систем. За q = 1 добија се непозициони бројни систем, јер су тада тежине у свим позицијама исте. Да бисмо при писању броја назначили у ком је бројном систему он задат користићемо следећа два начина означавања: а) иза броја стављамо као индекс вредност основе, б) иза броја стављамо у малим заградама ознаке BIN, OCT и HEX за бројне системе са основама 2, 8 и 16, респективно. Тако нпр. 01001101 (BIN) означава број у бинарном бројном систему.
20
Напоменимо да је могуће развити и бројне системе у којима је основа бројног система негативан број или чак разломак. Постоје такође и бројни системи код којих је основа комплексан број. Са овим бројним системима читалац се може упознати у литератури наведеној на крају књиге. На слици 2.1 дата је једна класификација бројних система.
2.2. Превођење бројева Основни проблем код рада са бројевима у различитим бројним системима представља превођење задатог броја из једног у други бројни систем. Под превођењем се подразумева следеће. Задат је број A у бројном систему са основом Q и потребно је наћи представљање броја A у бројном систему са новом основом p. Претпоставимо да број A има представљање у бројном систему са новом основом p у облику an-1an-2 … a1a0 .a-1a-2 … a-m
(2.9)
при чему је n −1
A = ∑ a k ⋅ pk . k = −m
(2.10)
Издвојимо у броју A посебно цели Ac а посебно разломљени део Ar n −1
Ac = ∑ a k ⋅ p k . k =0
−1
Ar = ∑ a k ⋅ p k . k = −m
(2.11a)
(2.11b)
Проблем прелаза у бројни систем са новом основом p састоји се у одређивању цифара ak. Посматрајмо посебно цели део Ac и посебно разломљени део Ar. Ако поделимо леву и десну страну једнакости (2.10) са p, добијамо Ac a = a n −1 ⋅ p n − 2 + a n − 2 ⋅ p n − 3 + ... + a1 + 0 p p
( 2.12 )
21
Бројни системи
Позициони
Непозициони
Са основом
Основа реалан број
Б ез основе
Основа комплексан број
Основа позитивна
Реалне тежине
Комплексне тежине
Тежине истог знака
Тежине разног знака
Основа негативна
Основа цео број
Основа разломак
Основа једнака 1
Основа већа од 1
Основа цео број
Слика 2.1 Класификација бројних система
22
Основа разломак
Из аритметике је познато да на десној страни једнакости (2.12) израз Ac1 = a n −1 ⋅ p n −2 + a n −2 ⋅ p n −3 + ... + a1 +
a0 , p
представља количник добијен делењем броја Ac са p, а a0 представља остатак тог дељења. Према томе, цифра најмање тежине a0 у представљању броја Ac у бројном систему са новом основом p добија се као остатак делења Ac са основом p. Ако сада количник Ac1 поново поделимо са p добићемо следећу цифру a1 броја Ac. Овај поступак треба понављати све док се не добије количник мањи од p. Тај количник представља цифру највеће тежине броја Ac. За налажење цифара разломљеног дела Ar броја A поступићемо на следећи начин. Помножимо леву и десну страну једнакости (2.11) са p Ar ·p = a-1 + a-2 p-1 + a-3 p-2 + …+ a-m p-m+1 Из израза за Ar се види да цифра a-1 броја Ar у новом бројном систему са основом p представља цели део производа Ar·p. Разломљени део тог производа, који износи Ar1 = a-2 p-1 + a-3 p-2 + …+ a-m p-m+1 помножимо поново са p. Добијамо као цели део новог производа Ar1·p цифру a-2. Овај се поступак понавља све док разломљени део производа не постане једнак 0 или док број добијених цифара не обезбеди потребну тачност. Тачност превођења најчешће се задаје као степен броја p, тј. као степен основе бројног система у који се врши превођење. Пример. Број 137.49 (DEC) превести у бројни систем са основом 7 тако да грешка превођења буде мања од 7-3. Преводимо прво цели део 137 : 7 = 19 :7 = 2 . 4
5
Затим преводимо разломљени део, при чему из услова тачности превођења следује да треба одредити 3 цифре, 0.49×7 = 3.43, 0.43×7 = 3.01, 0.01×3 = 0.07 ,
23
што даје: 137.49 (DEC) = 254.330 (Основа 7). Напоменимо још и следеће. Операције множења и дељења треба вршити у бројном систему у коме је задат број A, тј. у бројном систему са основом q. То значи да треба знати аритметичке операције у систему са основом q, о чему ће бити говора касније. Међутим, у пракси обично вршимо само превођење из декадног бројног система, тако да се овај проблем не поставља.
2.3. Бинарни, октални и хексадекадни бројни систем У рачунарској техници се због природе електронских елемената скоро искључиво користи бинарни бројни систем. Међутим, понекад у реализацији, а много чешће у помоћне сврхе, користе се још и октални и хексадекадни (хексадецимални) бројни системи. Кратко ћемо се упознати са овим бројним системима. Бинарни бројни систем
Бинарни бројни систем је позициони бројни систем са основом q = 2. Користи само два знака за цифре, знаке "0" и "1". Број написан у бинарном бројном систему назива се бинарни број. Бинарни број са n целих и m разломљених места пише се у облику bn-1bn-2 … b1b0 .b-1b-2 … b-m , bk ∈ {0,1} , а количински еквивалент B представљен тим бројем износи n −1
B = ∑ bk ⋅ 2 k . k = −m
(2.13)
Тежина у позицији k бинарног броја износи 2k. Степени броја 2 дати су у таблици 2.1. За превођење из бинарног у декадни бројни систем користи се израз (2.13) и извршава сабирање у декадном бројном систему. За превођење из декадног у бинарни бројни систем користи се описани општи поступак превођења.
24
Таблица 2.1 – Степени броја 2 н 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
2н 1 2 4 8 16 32 64 128 256 512 1 024 2 048 4096 8 192 16 384 32 768 65 536 131 072 262 144 524 288 1 048 576 2 097 152 4 194 304 8 388 608 16 777 216 33 554 432 67 108 864 134 217 728 268 435 456 536 870 912 1 073 741 824 2 147 483 648 4 294 967 296 8 589 934 592 17179 869 184 34 359 738 368 68 719 476 736 137 438 953 472 274 877 906 944 549 755 813 888
н 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
2н 1 099 511 627 776 2 199 023 255 552 4 398 046 511 104 8 796 093 022 208 17 592 186 044 416 35 184 372 088 832 70 368 744 177 664 140 737 488 355 328 281 474 976 710 656 562 949 953 421 312 1 125 899 906 842 624 2 251 799 813 685 248 4 503 599 627 370 496 9 007 199 254 740 992 18 014 398 509 481 984 36 028 797 018 963 968 72 057 594 037 927 936 144 115 188 075 855 872 288 230 376 151 711 744 576 460 752 303 423 488 1 152 921 504 606 846 976 2 305 843 009 213 693 952 4 611 686 018 427 387 904 9 223 372 036 854 775 808 18 446 744 073 709 551 616 36 893 488 147 419 103 232 73 786 976 294 838 206 464 147 573 952 589 676 412 928 295 147 905 179 352 825 856 590 295 810 358 705 651 712 1 180 591 620 717 411 303 424 2 361 183 241 434 822 606 848 4 722 366 482 869 645 213 696 9 444 732 965 739 290 427 392 18 889 465 931 478 580 854 784 37 778 931 862 957 161 709 568 75 557 863 725 914 323 419 136 151 115 727 451 828 646 838 272 302 231 454 903 657 293 676 544 604 462 909 807 314 587 353 088
25
У рачунарима се прелаз из једног у други бројни систем врши аутоматски помоћу посебних, тзв. системских програма. Код ручног превођења, уместо директног преласка из декадног у бинарни бројни систем, понекад се прво прелази у октални, или чешће у хексадекадни бројни систем, а затим у бинарни. Овај је поступак нешто бржи јер постоји прост начин директног преласка из окталног или хексадекадног у бинарни бројни систем или обратно, о чему ће бити речи касније. Ако се упореде бројеви представљени у природним бројним системима може се уочити следећа чињеница. Уколико је основа бројног система већа утолико се број записује са мањим бројем цифара. Међутим, иако се бројеви у бинарном бројном систему пишу са највећим бројем цифара, у данашњим рачунарима се само тај систем користи, јер је реализација бинарних дигиталних елемената простија и поузданија од других начина. Октални бројни систем
Октални бројни систем је позициони бројни систем са основом q = 8. У овом бројном систему користи се 8 цифара 0, 1,...,7, које имају исте вредности као и у декадном бројном систему. Превођење бројева из окталног у декадни бројни систем и обратно обавља се описаним општим поступцима само што се користи основа 8. Хексадекадни (хексадецимални) бројни систем
Хексадекадни бројни систем је позициони бројни систем са основом q = 16. У овом бројном систему потребно је да постоји 16 различитих знакова за цифре. Како можемо користити већ уведене знаке за цифре од 0,...,9, потребни су нови знаци за цифре са количинским еквивалентима 10, 11,...,15. Један од могућих начина је увођење модификованих знакова . Међутим, у пракси се обично користи други скуп знакова за ове цифре - мала или велика слова A, B,...,F. Представљање бројева у хексадекадном бројном систему врло се широко користи у рачунарској техници, нарочито када треба штампати или приказати бинарне садржаје, јер су записи компактнији и лакше се прате. Превођење бројева из хексадекадног у декадни бројни систем и обратно обавља се описаним општим поступцима само што се користи основа 16.
26
2.4. Бројни системи са основом 2u Показаћемо важне везе које постоје између бинарног бројног система и бројних система са основом 2u, u > 1. Исте везе могу се утврдити и за случај било које основе q ако се она узме уместо основе два. Размотримо прелаз из бинарног у октални бројни систем, и обратно из окталног у бинарни систем. Нека је у окталном бројном систему задат број an-1an-2 … a1a0 .a-1a-2 … a-m , где су ak окталне цифре. Количински еквивалент представљен овим бројем износи n −1
A = ∑ ak ⋅ 8 k . k = −m
(2.14)
Претпоставимо да је нађено представљање тог истог броја у бинарном бројном систему и да оно има облик bs-1bs-2 … b1b0 .b-1b-2 … b-r , где су бј бинарне цифре. Количински еквивалент представљен овим бројем износи s −1
B = ∑ bj ⋅ 8 j . j = −r
(2.15)
Како је A = B, тј. количински еквиваленти су исти, морају у изразима (2.14) и (2.15) бити исти и целобројни и разломљени делови. За целобројне делове ће према томе бити an-18n-1 + an-28n-2 + …+ a18 + a0 = bs-12s-1 +bs-22s-2 + …+ b424+ b323+ b121 + b0 Ако поделимо леву и десну страну горње једнакости са 8 (тј. са 23) добијамо једнаке количнике an-18n-2 + an-28n-3 + …+ a1 = bs-12s-4 +bs-22s-5 + …+ b421+ b3
(2.16)
и једнаке остатке
27
a0 = b222 + b12 + b0
(2.17)
Једнакост (2.17) можемо написати у облику a0 (OCT) = b2b1b0 (BIN) одакле закључујемо да се октална цифра а0 представља троцифреним бинарним бројем b2b1b0. Ако даље обе стране једнакости (2.16) поново поделимо са 8 добићемо представљање следеће окталне цифре a1 (OCT) = b5b4b3 . Понављањем овог поступка можемо превести све целобројне окталне цифре у бинарне. За превођење разломљеног дела окталног броја изједначимо у једнакостима (2.14) и (2.15) разломљене делове a-18-1 + a-28-2 + …+ a-m8-m = b-12-1 +b-22-2 + …+ b-32-3+ b-42-4+ …+ b-r2-r (2.18) Ако помножимо леву и десну страну горње једнакости са 8 добијамо a-1 + a-28-1 + …+ a-m8-m+1 = b-122 +b-22-1 + b-42-1+ …+ b-r2-r+3
(2.19)
Да би лева и десна страна ове једнакости биле исте потребно је да буду једнаки и целобројни делови и разломљени делови, тј. a-1 = b-122 + b-22 + b-3, и a-1 + a-28-1 + …+ a-m8-m+1 = b-42-1 +b-52-2 + …+ b-r2-r+3
(2.20)
Одавде следује закључак да се октална цифра a-1 представља троцифреним бинарним бројем на следећи начин a-1 (OCT) = b-1b-2b-3 (BIN) . За добијање представљања следеће окталне цифре a-2 треба обе стране једнакости (2.20) помножити поново са 8 и изједначити целобројне и разломљене делове. Настављањем истог поступка могу се добити остале окталне цифре, све до постизања тражене тачности превођења. На основу горњег излагања могу се формулисати правила за превођење бројева из бинарног бројног система у октални, и обратно. За прелаз од пред-
28
стављања броја у бинарном бројном систему на представљање тог истог броја у окталном бројном систему треба лево и десно од бинарне тачке све цифре задатог бинарног броја поделити у групе од по три бинарне цифре. Ове групе бинарних цифара називају се тријаде. Уколико на крајевима нема потпуних тријада додаје се потребан број безначајних нула. Затим се свака тријада замењује одговарајућом окталном цифром према таблици 2.2. Таблица 2.2. - Окталнобинарна конверзија
Таблица 2.3. - Хексадекадно-бинарна конверзија
OCT цифра
Тријада
OCT цифра
Тријада
HEX цифра
Тетрада
HEX цифра
Тетрада
HEX цифра
Тетрада
HEX цифра
Тетрада
0 1 2 3
000 001 010 011
4 5 6 7
100 101 110 111
0 1 2 3
0000 0001 0010 0100
4 5 6 7
0101 0110 0110 0111
8 9 A B
1000 1001 1010 1011
C D E F
1100 1101 1110 1111
Прелаз од представљања броја у окталном бројном систему на представљање у бинарном бројном систему врши се заменом сваке окталне цифре одговарајућом тријадом. На исти начин може се установити веза између бинарног и хексадекадног бројног система. И правила превођења из једног у други бројни систем и обратно остају иста само што се за хексадекадни бројни систем користе тетраде - групе од по четири бинарне цифре (таблица 2.3). Слично се могу формирати таблице конверзије за бројне системе са било којом основом 2u.
2.5. BCD подаци Сви подаци који се обрађују на рачунару кодирани су бинарним кодом, па се и бројеви представљају тако што се преводе у бинарни бројни систем. С обзиром да се подаци припремају у декадном бројном систему, превођење у бинарни систем врши рачунар посебним програмима. Обрађени подаци се приказују опет у декадном ситему па се сада врши обратно превођење из би-
29
нарног у декадни облик. Постоји одређени тип задатака код којих овај процес превођења није погодан и то пре свега из следећих разлога: – Превођење из декадног у бинарни систем и обратно за реалне бројеве не може се увек тачно извршити, већ са одређеном грешком, – Ако је обим података који се обрађују врло велики а број операција које се над њима извршавају мали, онда се много времена губи на конверзији у бинарни систем и обратно. Осим тога, дугогодишњим коришћењем декадних бројева људи су стекли одређену навику у раду са њима, па нормално постоји тенденција да се овај бројни систем за одређене примене, нпр. код решавања неких економских проблема, и даље задржи у употреби. Зато је нађено специфично, компромисно решење, којим се декадни подаци представљају у бинарном облику. То је такозвани BCD систем, бинарно-кодирани декадни систем (скраћеница од енглеског Bunary Codeed Decimal), одговарајући бинарни код који се користи назива се BCD код или бинарно-декадни код, а тако представљени подаци називају се бинарно кодирани декадни подаци. Ово представљање врши се тако што се свака декадна цифра посебно кодира бинарним кодом. Да бисмо бинарно кодирали сваку од десет декадних цифара потребне су бар четири бинарне позиције, јер је ⎡log2 10⎤ = 4 (разлог ће бити објашњен касније у одељку о бинарном кодирању). Због тога је и највећи број бинарно-декадних кодова дужине 4 бита. Неки од најчешће коришћених таквих кодова приказани су у таблици 2.4 (Знак "-" изнад тежине означава негативну вредност те тежине). Међутим, постоје и BCD кодови са дужином већом од четири бита од којих су неки приказани у таблици 2.5. Од BCD кодова у таблици 2.4 данас се најчешће користи 8421 код. Из таблице се види да се свака декадна цифра кодира бинарним низом дужине 4 бита који представља еквивалент те цифре у бинарном бројном систему (а у њему су тежине 23, 22, 21, 20, тј. 8, 4, 2, 1, респективно). Из тог разлога овај се BCD код назива често и природни BCD код. Овај код је истовремено и тежински бинарно-декадни код, јер се свака декадна цифра д може представити у облику d = t3b3 + t2b2 + t1b1 + t0b0 где су tk , (k = 0,1,2,3) тежине, а bk , (k = 0,1,2,3) вредности цифара у бинарном кодном низу.
30
Таблица 2.4 – Неки BCD кодови дужине 4 бита d 0 1 2 3 4 5 6 7 8 9
d 0 1 2 3 4 5 6 7 8 9
8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
XS3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
2421 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111
5421 0000 0001 0010 0011 0100 1000 1001 1010 1011 1100
5211 0000 0001 0011 0101 0111 1000 1001 1011 1101 1111
4221 0000 0001 0010 0011 1000 0111 1100 1101 1110 1111
3321 0000 0001 0010 0011 0101 1010 1100 1101 1110 1111
Таблица 2.5 – BCD кодови са више од 4 бита Поме2 од 5 рачки 51111 50 43210 543210 00011 00000 00000 01 00001 000001 00101 00001 00001 01 00010 000010 00110 00011 00011 01 00100 000100 01001 00111 00111 01 01000 001000 01010 01111 00111 01 10000 010000 01100 11111 10000 10 00001 100001 10001 11110 11000 10 00010 100010 10010 11100 11100 10 00100 100100 10100 11000 11110 10 01000 101000 11000 10000 11111 10 10000 110000
8421 0000 0111 0110 0101 0100 1011 1010 1001 1000 1111
7421 0000 0111 0110 0101 0100 1010 1001 1000 1111 1110
9876543210 0000000001 0000000010 0000000100 0000001000 0000010000 0000100000 0001000000 0010000000 0100000000 1000000000
Грејов код 0000 0001 0011 0010 0110 0111 0101 0100 1100 1000
Хафменов код 0000000 1101001 0101010 1000011 1001100 0100101 1100110 0001111 1110000 0011001
У ранијим фазама развоја рачунара, због простије реализације комплементирања броја, били су интересантни тзв. комплементарни BCD кодови. То су BCD кодови код којих се бинарни низови за сваке две декадне цифре чији је збир једнак 9 могу добити комплементирањем сваке бинарне позиције посебно. Два највише коришћена комплементарна BCD кода су XS3 код (код "више 3"), који није тежински код, и 2421 код или Ајкенов код, који је истовремено и тежински. Пример. Декадни број 1993 представљен BCD кодом 8421 има следећи облик: 0001 1001 1001 0011 (размаци између тетрада су унети само ради лакшег читања).
31
Од BCD кодова са више од 4 бита посебно је интересантан 7-битни Хафменов код, јер он спада у кодове са откривањем и исправљењем грешака. Наиме, ако при преносу кодног низа неке декадне цифре дође до грешке у једној бинарној позицији, пријемни уређај може сам открити грешку и одмах је "атоматски" исправити. Ако се јави грешка у две или три бинарне позиције истовремено грешка ће бити само откривена, али се не може једнозначно исправити, о чему се одмах сигнализира. Ако позиције Хафменовог кода означимо слева удесно са AB8C421, где су A, B, C тзв. контролни битови, а 8, 4, 2 и 1 информациони битови, без разматрања детаља, укажимо да се контролне цифре добијају из израза A = c8 ⊕ c4 ⊕ c1 ,
B = c8 ⊕ c2 ⊕ c1 , C = c4 ⊕ c2 ⊕ c1
где је знаком ⊕ обележена операција сума по модулу 2 (о овој операцијибиће говора каснијеу делу о синтези прекидачких мрежа). Напоменимо још да Грејов код, који је такође интересантан као бинарни код уопште, није тежински код, али је користан и употребљава се код аналогно-дигиталних претварача, улазно-излазних и других уређаја. Главна карактеристика Грејовог кода је да се сваки кодни низ за суседну цифру (претходну или следећу) разликује само у једном биту (једној позицији). Грејов код се може дефинисати и за свих шеснаест бинарних низова дужине 4 као и за бинарне низове са било којом константном дужином.
2.6. Кодирање предзнака броја Да бисмо у рачунару могли представити било коју бројну вредност потребно је размотрити начине представљања негативних бројева, тј. начине кодирања предзнака (знака) броја. Бројеви се представљају тако што се одваја бинарна позиција највеће тежине која служи за кодирање предзнака и назива се позиција знака. У бинарном бројном систему за кодирање предзнака броја користе се следећи начини: 1) директно (просто) кодирање предзнака, 2) непотпуни комплемент (комплемент највеће цифре), 3) потпуни комплемент (комплемент основе), 4) померај (помак).
32
Директно кодирање предзнака
Код директног или простог кодирања предзнака броја за представљање негативних бројева у позицији знака уписује се 0 ако је број позитиван и 1 ако је број негативан, а у остале бинарне позиције уписује се апсолутна вредност. Пример. Бинарни број –100110 представљен са 16 позиција при директном кодирању предзнака има облик: 1000000000100110.
Непотпуни комплемент
Представљање бројева помоћу непотпуног комплемента или комплемента највеће цифре састоји се у трансформацији броја према следећој релацији: ⎧⎪ A , A ≥ 0 A= ⎨ n , ⎪⎩q − 1 − A , A < 0
где је n укупан број позиција предвиђен за представљање броја, укључујући и позицију знака, а q је основа бројног система. Када се бројне вредности представљају у бинарном бројном систему непотпуни комплемент назива се још и јединични комплемент или комплемент јединице. Постоји прост практичан поступак налажења јединичног комплемента бинарног негативног броја изведен директно из горње дефиниције за q = 2: бинарни број се напише са укупно n бинарних позиција, где у позицји знака обавезно мора бити 0, а по потреби се у осталим вишим позицијама додају безначајне нуле. Ако се сада у овако формираном бинарном низу замени свака бинарна 0 бинарном 1 и свака бинарна 1 бинарном 0 добија се јединични комплемент негативног броја. Знак броја препознаје се по томе што је у позицији највеће тежине (позицији знака) за позитивне бројеве садржај једнак 0, а за негативне једнак 1. Пример. Бинарни број –1001101011 представљен са 16 позиција помоћу јединичног комплемента има облик: 1111110110010100. Недостатак јединичног комплемента је постојање два различита кода за вредност 0: 00...0 и 11...1. Осим тога при извршењу сабирања и одузимања са
33
јединичним комплементом важи следеће правило: јединица преноса из највеће позиције треба да се дода у позицију најмање тежине. Ово се правило може доказати ако се користи дефиниција јединичног комплемента. Опсег позитивних и негативних бинарних бројева који се могу представити у n бинарних позиција (заједно са позицијом за знак) износи од –2n-1 до 2n-1-1. Тако нпр. за n = 8 опсег је од -127 до + 127.
Потпуни комплемент
Представљање бројева помоћу потпуног комплемента или комплемента основе састоји се у трансформацији броја према следећој релацији: ⎧⎪ A , A ≥ 0 A= ⎨ n , ⎪⎩q − A , A < 0
где је n укупан број позиција предвиђен за представљање броја, укључујући и позицију знака а q је основа бројног система. Кад се бројне вредности представљају у бинарном бројном систему потпуни комплемент назива се и двојни комплемент или комплемент двојке. Постоји и овде практичан поступак налажења двојног комплемента бинарног негативног броја изведен директно из горње дефиниције за q = 2: за задати бинарни број одреди се јединични комплемент а затим се у позицију најмање тежине дода 1. Знак броја се препознаје као и код јединичног комплемента. Пример. Бинарни број –1011000100 представљен са 16 позиција помоћу комплемента двојке има облик: 1111110100111100. Код овог начина представљања предзнака броја нема проблема са кодирањем 0, али и овде постоји посебно правило које важи при сабирању или одузимању бројева са комплементом: када постоји пренос у позицији највеће тежине он се одбацује (поништава се, игнорише се). Ово се правило може доказати ако се користи дефиниција потпуног комплемента. Опсег позитивних и негативних бројева који се могу представити у n бинарних позиција (укључујући и позицију знака) износи од -2n-1 до 2n-1 – 1. Тако нпр. за n = 16 опсег је од - 32768 до 32767.
34
Пом е ра ј
Представљање знака броја помоћу помераја (помака) или тзв. поларизовано представљање знака састоји се у примени трансформације облика: Ap = A + p при чему се вредност p назива померај, а A се узима алгебарски. За бинарни бројни систем померај обично износи 2k-1 или 2k-1-1, где је k укупан број бинарних позиција којима се представља бројна вредност. Пример. Ако се бинарни број представља у 7 бинарних позиција са померајем p = 64 (DEC) = 1000000 (BIN), тада ћемо за број -30 (DEC) = –1110 (BIN) имати: Ap = 1000000 + (-11110) = 100010 (BIN) Опсег бројева који се могу представити са померајем износи од –p до +p. Знак броја препознаје се на следећи начин: 0 у позицији највеће тежине означава да је број негативан, а 1 да је број позитиван.
2.7. Бинарна аритметика Правила за аритметичке операције која важе у декадном бројном систему могу се применити и у било ком другом природном бројном систему са основом q ако се користе таблице сабирања и множења једноцифрених бројева за тај бројни систем.
Сабирање
Таблица сабирања за природни бројни систем са основом q формира се према следећем правилу ⎧⎪a k , где је a k = a i + a j , ако је a i + a j < q ai + a j = ⎨ , ⎪⎩1a k , где је a k = a i + a j − q , ако је a i + a j ≥ q
35
где су ai, aj и ak цифре бројног система са основом q. Таблице сабирања за бинарни, октални и хексадекадни бројни систем дате су у таблици 2.6. Таблица 2.6 – Таблице сабирања q=2 + 0 1 + 0 0 1 0 1 1 10 1 2 3 4 5 6 7
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 3 4 5 6 7 8 9 A B C D E F 10 11
3 3 4 5 6 7 8 9 A B C D E F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
q=8 3 3 4 5 6 7 10 11 12
q = 16 7 8 7 8 8 9 9 A A B B C C D D E E F F 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16
C D E F C D E F D E F 10 E F 10 11 F 10 11 12 10 11 12 13 11 12 13 14 12 13 14 15 13 14 15 16 14 15 16 17 15 16 17 18 16 17 18 19 17 18 19 1A 18 19 1A 1B 19 1A 1B 1C 1A 1B 1C 1D 1B 1C 1D 1E
Сабирање два вишецифрена броја у позиционом бројном систему са основом q врши се према следећем алгоритму: 1. Сабрати две цифре најмање тежине. Ако постоји јединица преноса запамтити је за следећу вишу позицију. 2. Сабрати две цифре следеће више позиције и цифру преноса из претходне ниже позиције. Нови пренос запамтити за следећу вишу позицију.
36
3. Ако има још позиција у којима није извршено сабирање ићи на корак 2. 4. Ако је извршено сабирање цифара у свим позицијама и не постоји пренос, поступак сабирања је завршен. Ако постоји пренос уписати 1 у следећу вишу позицију, чиме је поступак сабирања завршен. Пример.
1100111 (BIN) + 110110 (BIN) . 10011101 (BIN)
Ако су бројеви које треба сабрати разломљени, пре примене горњег алгоритма треба бинарне тачке сабирака поставити по истој вертикали, као и у декадном систему
Одузимање
Одузимање бројева у позиционом бројном систему са основом q врши се по правилима која се користе и у декадном бројном систему. При томе се код рада са разломљеним бројевима тачке разломака пишу у истој позицији по вертикали. Одузимање два броја врши се сукцесивним одузимањем цифара почев од најниже позиције. При томе је ⎧⎪a i − a j , ако је a i ≥ a j ai − a j = ⎨ , ⎪⎩q + a i − a j , ако је a i < a j
где се за случај ai < aj "позајмљује" једна јединица из више позиције која садржи q јединица ниже позиције. Пример. У бинарном бројном систему од бинарног броја 10101.11 одузети бинарни број 1001.001. 10101.110 (BIN) - 1001.001 (BIN) . 1100.101 (BIN) За реализацију одузимања у рачунару уместо описаног поступка користи се представљање помоћу комплемента. Може се доказати да се помоћу комплементарног представљања операција одузимања замењује операцијом додавања (сабирања) комплемента умањиоца. Пример. Одузимање из претходног примера коришћењем комплемента двојке замењује се сабирањем и има облик:
37
0000000010101.110 (BIN) - 1111111110110.111 (BIN) . 10000000001100.101 (BIN) = 1100.101 (резултат) Јединица преноса из позицији највеће тежине се одбацује (игнорише) и добија се резултат 0000000001100.101, тј. 1100.101.
Множење Познато правило за множење које користимо у декадном бројном систему примењује се и за множење бројева у било ком позиционом бројном систему са основом љ. Разлика се састоји у томе што се при множењу и сабирању сада користе таблице множења у том бројном систему. У таблици 2.7 наведене су као пример таблице множења за бинарни, октални и хексадекадни бројни систем. Множење вишецифрених бинарних бројева врши се тако што се множеник множи са цифром из сваке позиције множиоца, почев од цифре најмање тежине, парцијални производи се потписују један испод другог померени улево за једно место, и онда саберу. Пример. Помножити у бинарном систему бројеве 1011.1 (BIN) и 110.1 (BIN). 1011.1 х 110.1 10111 10111 10111 1001010.11 Реализација множења у рачунару заснива се на истом правилу, али се користи модификован поступак који има облик: 1. Ставити парцијалну суму (суму парцијалних производа) једнаку 0, 2. Ако је анализирана цифра множиоца једнака 1 додаје се суми парцијалних производа множеник, ако је 0 не врши се додавање, 3. Множеник се помера за једно место улево 4. Кораци 2 и 3 се понављају за све цифре множиоца, почев од цифре најмање тежине.
38
q=2 0 1 × 0 0 0 1 0 1
× 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
Таблица 2.7. – Таблице множења q=8 0 1 2 3 × 0 0 0 0 0 1 0 1 2 3 2 0 2 4 6 3 0 3 3 6 4 0 4 10 14 5 0 5 12 17 6 0 6 14 22 7 0 7 16 25
3 4 5 0 0 0 3 4 5 6 8 A 9 C F C 10 14 F 14 19 12 18 1E 15 1C 23 18 20 28 1B 24 2D 1E 28 32 21 2C 37 24 30 3C 27 34 41 2A 38 46 2D 3C 4B
q = 16 6 7 8 0 0 0 6 7 8 C E 10 12 15 18 18 1C 20 1E 23 28 24 2A 30 2A 31 38 30 38 40 36 3F 48 3C 46 50 42 4D 58 48 54 60 4E 5B 68 54 62 70 5A 69 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
4 0 4 10 11 14 17 22 25
5 0 5 12 14 20 24 30 34
6 0 6 14 17 24 31 36 43
7 0 7 16 22 30 36 44 52
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1А 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1
Пример. Помножити у бинарном бројном систему број 11001 (BIN) бројем 110 (BIN). Множеник:
11001
Парцијална сума 0000000000 + 00000 0000000000 + 110010
Множилац 110 110
39
0000110010 + 1100100 0010010110
=
110 Резултат
Из описаног поступка множења види се да се реализација бинарног множења у рачунару своди само на вишеструко бинарно сабирање и померање за једну бинарну позицију. На тај начин довољно је у аритметичко-логичкој јединици имати само сабирач и кола за померање.
Дељење
Дељење у неком позиционом бројном систему са основом q врши се по истим правилима као и у декадном бројном систему али треба користити таблице сабирања и множења за тај бројни систем. Реализација операције дељења у рачунарима врши се нешто модификованим поступком, и састоји се у сукцесивном одузимању делиоца од дељеника. Описаћемо један поступак за целобројно бинарно дељење. 1. Поставити количник једнак 0 и позицију цифре количника n = 0 (бинарне позиције се нумеришу сдесна улево вредностима 0,1,2, … ). 2. Померити делилац улево за n бинарних места док значајна цифра у највишој позицији делиоца не буде на истом месту по вертикали са значајном цифром у највишој позицији дељеника. 3. Ако се померени делилац може одузети од дељеника извршити одузимање и уписати 1 у позицију n количника. Ако одузимање није могуће уписати 0 у позицију n количника. 4. Заменити n са n-1. Ако је n < 0 поступак целобројног дељења је завршен (алгоритам се зауставља). 5. Померити делилац за једно место удесно и прећи на корак 3. Број корака дељења разломљених бинарних бројева ограничен је бројем позиција за количник, због чега се дељење најчешће врши са заокруживањем, тј. приближно. Укажимо још и на то, да описани поступак дељења захтева само операцију бинарног одузимања и померање бинарних бројева за једно место улево или удесно. Пример. Поделити у бинарном бројном систему број 1111101 (BIN) бројем 101 (BIN).
40
Дељеник Делилац Дељеник Делилац Дељеник Делилац
1111101 1010000 0101101 101000 0000101 101 000
Количник 000000 010000 011000 011001
3.5.8 BCD аритметика
Ако су нумерички подаци представљени неким BCD кодом, тада и резулати после извршења аритметичких операција треба да буду у истом BCD коду. Због тога је погодно да се аритметичке операције извршавају у том BCD коду, јер би било сувише сложено да се врши конверзија у бинарни бројни систем, да се у бинарном систему изврше аритметичке операције, и да се затим поново врши конверзија у BCD код. Како се данас највише користи 8421 или природни BCD код, ми ћемо надаље разматрати аритметичке операције за тај код. Сличне процедуре постоје и за друге BCD кодове. Извршење операције сабирања два бројна податка представљена BCD кодом у рачунарима се реализује једним од следећа два начина: а) Директно извршење декадних операција над BCD подацима Формирају се таблице сабирања и множења за BCD код и оне се директно користе при сабирању бинарно кодираних декадних бројева. Таблица 2.8 представља таблицу сабирања за 8421 BCD код, при чему је ради скраћења таблице BCD пренос кодиран као 1 а подразумева се коректна тетрада преноса 0001. Пример.
(0001 0000 0001) Пренос 001 1001 0100 0101
+
0110 0010 1000
Први BCD сабирак Други BCD сабирак
0010 0101 0111 0011 BCD збир
41
Таблица 2.8 Таблица сабирања за BCD код 8421 + 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
0001 0010 0011 0100 0001 0010 0011 0100 0010 0011 0100 0101 0011 0100 0101 0110 0100 0101 0110 0111 0101 0110 0111 1000 0110 0111 1000 1001 0111 1000 1001 1 0000 1000 1001 1 0000 1 0000 1001 1 0000 1 0001 1 0010 1 0000 1 0001 1 0010 1 0011
0101 0101 0110 0111 1000 1001 1 0000 1 0001 1 0001 1 0011 1 0100
0110 0110 0111 1000 1001 1 0000 1 0001 1 0010 1 0010 1 0100 1 0101
0111 0111 1000 1001 1 0000 1 0001 1 0010 1 0011 1 0011 1 0101 1 0110
1000 1000 1001 1 0000 1 0001 1 0010 1 0011 1 0011 10100 1 0110 1 0111
1001 1001 1 0000 1 0001 1 0010 1 0011 1 0100 1 0100 1 0101 1 0111 1 1000
У горњем примеру размаци између тетрада су унети само ради лакшег праћења, док у меморији они не постоје. Одузимање бинарно кодираних декадних бројева може се вршити или коришћењем таблице 2.8 и правила одузимања за декадну аритметику или помоћу деветичног или десетичног комплемента BCD бројева када се одузимање замењује сабирањем комплемента. За множење и дељење бинарно кодираних декадних бројева користи се таблица множења BCD бројева формирана слично таблици сабирања 2.8 и примењују се правила за извршење операција у декадној аритметици. б) Извршење бинарних операција над BCD подацима и примена корекције За реализацију сабирања и одузимања бинарно кодираних декадних бројева може се користити и обична бинарна аритметика, што је у пракси чешћи случај, јер су у процесору бинарне операције потребне и у друге сврхе. Нека су A и B два бинарна низа који представљају сукцесивни низ тетрада, односно бинарно кодиране декадне бројеве. Ако се ова два низа саберу као обични бинарни бројеви тада се анализом тетрада збира према таблици 2.9 може видети да постоје тзв. некоректне тетраде, односно некоректне децималне цифре. Како свака цифра може бити највише 9, збир не може бити већи од 9+9+1, где је 1 пренос из претходне позиције. Из таблице 2.9 се види да ако се овим тетрадама бинарно дода тзв. корективна тетрада 0110 (BIN) добијају се исправне BCD тетраде. Тако се формирањем и додавањем новог, тзв. корективног низа, који на појединим местима садржи ову корективну тетраду може добити исправан BCD код збира. Тетраде збира треба да се коригују бинарном вредношћу 0110 у следећим случајевима:
42
1. Ако је резултат збира две тетраде у опсегу од 1010 (BIN) до 1111 (БИН), односно између 10 и 15. 2. Ако је резултат збира две тетраде у опсегу 0000 (BIN) до 1001 (BIN) али је било преноса у следећу леву тетраду (овде је збир цифара био већи од 16). 3. Ако је резултат збира две тетраде 1001 (BIN) а претходној десној тетради се додаје корекција 0110 према тачки 1 јер је она у опсегу од 1010 (BIN) до 1111 (BIN) (овим се избегава понављање циклуса корекције). Таблица 2.9 – Бинарно сабирање BCD цифара Декадни збир 0 1 2 3 4 5 6 7 8 9
Бинарни збир 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001
Потребан BCD збир 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001
Декадни збир 10 11 12 13 14 15 16 17 18 19
Бинарни збир 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011
Потребан BCD збир 0001 0000 0001 0001 0001 0010 0001 0011 0001 0100 0001 0101 0001 0110 0001 0111 0001 1000 0001 1001
Пример. 1000 0000 0100 1001 1001 Први BCD сабирак 0001 1001 1000 1001 1001 Други BCD сабирак 1001 1001 1101 0011 0010 Бинарни збир 0000 0110 0110 0110 0110 Корекција 0001 0000 0000 0011 1001 1000 BCD збир Напоменимо да постоје и други начини формирања корективних низова ради добијања исправног BCD збира коришћењем обичног бинарног сабирања. Одузимање два BCD броја коришћењем бинарног сабирања може се остварити преко деветичног или десетичног комплемента. За добијање тих комплемената потребно је опет користити само обично бинарно сабирање. Тако се деветични комплемент добија следећим поступком: 1. Формирати корективни низ у коме су све тетраде једнаке 0110.
43
2. Овај корективни низ додати BCD броју чији се деветични комплемент тражи. 3. За добијени низ формирати јединични комплемент чиме се добија деветични комплемент задатог BCD броја. Коректност горњег поступка следује из тога што јединични комплемент неке тетраде представља уствари допуну до 15, тако да за сваку полазну тетраду, односно BCD цифру C, имамо 15 - (C + 6) = 9 - C. Множење бинарно кодираних декадних бројева може се свести само на сабирање и померање бинарно кодираних декадних података ако се примени следећи алгоритам: 1. Сума парцијалних производа поставља се на нулу. 2. Анализирају се цифре множеника (тетраде) с десна улево. 3. Множеник се додаје суми парцијалних производа онолико пута колика је текућа цифра множиоца. 4. Сума парцијалних производа помера се удесно за једну тетраду, тј. четири бинарне позиције и понавља се поступак у тачки 3 док не буду обрађене све цифре множиоца. Слично се дељење бинарно кодираних декадних података може свести на вишеструко одузимање и померање за једну тетраду.
2.9. Представљање бројних података Бројни или нумерички подаци представљају широку класу података који се користе у савременим рачунарима за различите прорачуне, али и у многе друге сврхе. Због тога ћемо се детаљније упознати са начином представљања различитих типова бројних података. Најчешће се у рачунарима користе следећи бројни подаци: – целобројни подаци; – бројни подаци са фиксном (непокретном) запетом; – бројни подаци са покретном запетом.
44
Поред тога користе се и други типови бројних података као што су бинарно кодирани декадни подаци, за које смо начин представљања размотрили раније, комплексни бројеви који се представљају уређеним паром два броја са покретном запетом (реални и имагинарни део), а по потреби се може увести специфичан начин представљања (односно кодирања) и других типова бројних података.
Целобројни подаци
Позитивни и негативни цели бројеви врло често су потребни у рачунарима за решавање одређених практичних проблема где су неопходни само цели бројеви и операције са њима, али се цели бројеви такође користе у програмима за бројање циклуса, тј. као параметри петљи за бројање понављања петље, за бројање разних догађаја, као индекси поља за дефинисање редног броја елемента података коме се приступа и за многе друге примене. Због свега тога рачунари омогућавају памћење у меморији и извршавање аритметичких операција са целим бројевима који се називају целобројни подаци. За представљање целих бројева у меморији се стандардно користи једна бинарна реч од 32 бита (четири бајта) према формату приказаном на слици 2.2, где термин "формат" означава дефинисану структуру и распоред представљања компонената података у меморији. Бројеви запамћени према овом формату у програмским језицима имају тип INTEGER, о чему ће бити речи у трећем поглављу. Прва с лева позиција с, тј. позиција највеће тежине, увек служи за кодирање предзнака (знака) броја. 31 30 s
0
Слика 2.2 Формат представљања целих бројева
Позитивни цели бројеви представљају се тако што се директно преводе у бинарни облик. Уколико имају мање од 31 бинарне цифре слева се додаје потребан број безначајних нула. У позицију знака уписује се такође нула. За представљање целих негативних бројева користи се један од описана раније четири начина за кодирање предзнака броја. Код сваког од ова четири начина
45
кодирања предзнака негативни се бројеви распознају по бинарној вредности у позицији највеће тежине, тј. у позицији предзнака (знака) броја. Опсег целих бројева који се могу представљати у горе описаном формату са комплементом двојке износи од –231 до +231–1, што у децималном систему износи од -2.147.483.648 до +2.147.483.647. Највећи цео позитиван број при томе има представљање облика 011...11, а најмањи негативан број се представља у облику 100...00. У општем случају ако се за представљање целих бројева користи n позиција, укључујући и позицију знака, опсег бројева који се могу представити износи од -2n-1 до 2нn-1-1. За практичне примене коришћење 32 бинарне позиције за представљање целих бројева често није неопходно. Тако нпр. вредности индекса обично су релативно мале и за њих је довољно до 16 бинарних позиција или чак и мање. Због тога се код неких рачунара могу посебно користити целобројни подаци смањеног опсега који се обично специфицирају типом HALF INTEGER или ADDRESS. Овде се за представљање користи 16 бинарних позиција а опсег бројева који се могу предтавити износи од –215 до +215-1 или од –32768 до +32767. Напоменимо да неки мини и микрорачунари омогућавају и коришћење целобројних вредности које су смештене у једном бајту. Опсег целих бројева који се у овом случају могу представити износи од -27 до 27-1 односно од -128 до +127. Међутим, ако се користе само позитивни цели бројеви опсег је од 0 до 255, јер онда нема потребе за посебним кодирањем предзнака и свих осам бинарних позиција користи се за представљање апсолутне вредности броја. У одређеним случајевима јавља се потреба да се за представљање целих бројева користи више од 32 бинарне позиције, па се тада уводи тип DOUBLE INTEGER. За представљање ових целобројних података користи се двострука реч, тј. 64 бинарних позиција. Опсег бројева који се могу представити износи од -263 до +263-1 или, у декадном систему, од -9.223.372.036.854.775.808 до +9.223.372.036.854.775.807. Целобројни подаци нису довољни да би се њима могли решити сви технички и математички проблеми, пре свега из следећа два разлога: – опсег бројева који се могу представљати је мали, – њима се не могу представљати реални бројеви, који се далеко чешће користе за многе практичне проблеме. Због тога су уведени и други начини представљања бројних података.
46
Фиксна запета
Једна од могућности за представљање бинарних бројева је подела речи у меморији на два дела са m и n позиција. У n позиција смешта се цели део броја c тј. део броја чије позиције имају тежине које су позитивни степени броја 2, а у m позиција смешта се разломљени део броја r, тј. део чије позиције имају тежине које су негативни степени броја 2. Позиција највеће тежине и овде се одваја за предзнак броја. Формат овог представљања дат је на слици 2.3. n-1 n-2
s
0 -1 c
-m r
Слика 2.3 Формат представљања бројева са фиксном запетом
Најмањи број који се може представити је 00...00.00...01 = 2-м а то је корак дискретизације и апсолутна грешка представљања. Бројеви мањи од 2-m сматрају се машинском нулом. Положај бинарне запете код представљања са покретном запетом може се дефинисати на два начина: 1) усваја се при пројектовању рачунара и он је за сваки број фиксан. Отуда и назив за овакво представљање фиксна запета или фиксна тачка. 2) може се програмски дефинисати. Поред описаног општег случаја у пракси се често реализује формат са положајем бинарне запете непосредно иза позиције предзнака. У том случају у меморији се могу памтити само бројеви чија је апсолутна вредност мања од 1. Овакав облик назива се нормализовани облик броја. Ако се користи двојни комплемент за негативне бројеве, опсег бројева са фиксном запетом који у нормализованом облику могу да се представе у речи од n бинарних позиција износи од -1 до 1 - 2-(n-1). Корак дискретизације је 2-(n-1). Напоменимо да ако се код фиксне запете бинарна тачка фиксира десно од позиције најмање тежине добија се представљање целобројних података. Недостатак коришћења бројева представљених са фиксном запетом је опет мали опсег вредности које се могу предстваљати у меморији. Осим тога, код оваквог начина представљања иста је апсолутна грешка, али је различита релативна грешка. Због тога су бројеви са мањом апсолутном вредношћу
47
представљени са знатно мањим бројем значајних цифара, а то значи са знатно већом релативном грешком. Извршење аритметичких операција над бројевима представљеним са фиксном запетом доста је брзо и релативно лако за реализацију. Међутим, због наведених недостатака, овај се облик представљања данас практично не користи осим у неким посебним случајевима, нпр. код рачунара за управљање технолошким процесима и код обраде резултата мерења у реалном времену.
Покретна запета
И целобројна представљања и представљања са фиксном запетом имају врло ограничен опсег бројева са којима се може радити. Међутим, у многим областима примене јављају се и врло велике и врло мале бројне вреднсоти са којима се истовремено врше рачунања. Тако нпр. у физици полупроводника концентрација електрона изражава се бројем 1.0⋅10+24 m3 док се маса електрона изражава бројем 1.67⋅10-27 kg. Због тога се јавља потреба и за другачијим представљањима бројних података. Сваки реалан број R представљен у природном бројном систему са основом б може се написати у следећем, тзв. експоненцијалном облику или облику са покретном запетом R = m⋅bE Овде се величина м назива мантиса, E експонент а b основа. С обзиром да за сваки задати број постоји много могућих оваквих представљања усвојен је један стандардни облик који се увек користи. Тај се облик назива нормализовани облик броја и у њему мантиса м има облик 0.1bb...b, b ∈ {0,1}, тј. 1/2 ≤ m < 1. У новом стандарду нормализована мантиса има други стандардни облик 1.bb...bb, и овде је 1≤ m < 2. Ако усвојимо да основа б за представљање реалних бројева буде фиксна тада се број Р једнозначно може задати паром (E,m). Овај се начин користи за представљање према формату датом на сл. 2.4, а назива се представљање бројева са покретном запетом. Број са покретном запетом представља се у рачунару тако што се 8 позиција речи од 32 бита користи за представљање експонента (укључујући и позицију за предзнак експонента). За основу се користи вредност b = 2.
48
31 30 s
23 22 e
0 m
Слика 2.4 Формат представљања бројева са покретном запетом
За бројеве представљене у овом формату кажемо да су представљени са обичном прецизношћу. У програмским језицима то су елементарни подаци типа REAL (или FLOAT). При томе треба обратити пажњу да је овде опсег бројева који се могу представити одређен бројем бинарних цифара експонента, док број бинарних цифара мантисе одређује прецизност представљања и тачност рачунања. Релативна грешка код оваквог представљања је увек иста. С обзиром да се експонент представља у 8 позиција он може бити било који цео број од -128 до +127. Највећи нормализовани позитиван број представља се у облику 2127⋅0.11...1 = 2127⋅(1 - 2-23) , а њему у децималном систему одговара приближна вредност 10+38. Најмањи позитиван нормализовани број има облик 2-128⋅0.100...0 = 2-129, а њему у децималном систему одговара приближна вредност 10-39. Најмањи негативан број је -2127⋅ (1-2-23) а највећи негативан број је -2-128. Апсолутна вредност мантисе представља се са 23 бинарне позиције, што у декадном систему одговара прецизности од 6 децималних цифара. Код неких рачунара овај је формат коришћен у нешто модификованом облику. Наиме, како је за нормализоване вредности иза бинарне запете увек вредност 1 ова се јединица не памти у меморији већ се подразумева, па се ова јединица назива имплицитна јединица. У овом случају се може користити један додатни бит за мантису, тј. укупно 24 бита, што у декадном систему одговара прецизности од 7 декадних цифара. Поред бројева са покретном запетом обичне прецизности велики број рачунара омогућава коришћење бројева са тзв. двоструком прецизношћу. У програмским језицима ти се бројеви специфицирају типом ДDOUBLE PRECISION. За њихово представљање користе се 2 речи односно 64 бинарне позиције. За представљање мантисе користи се 56 бинарних позиција а за експонент 8. Тиме се повећава прецизност представљања на 16 декадних цифара док опсег остаје исти. Међутим, у новом стандарду за двоструку прецизност користи се другачији формат: апсолутна вредност мантисе се представља са 53 бинарне позиције а експонент са 11 бинарних позиција.
49
Овим се знатно повећава опсег представљања бројева (он је сада приближно 10+308 а прецизност представљања износи 15 декадних цифара). Напоменимо још да се код неких рачунара среће тзв. проширена прецизност када се за мантису користи више од 24 бинарних позиција. Због разчличитог начина представљања реалних бројева у различитим типовима рачунара, у првој половини осамдесетих година усвојен је стандард за представљање бројева са покретном запетом ИЕЦ 559 - 1982, ANSI/IEEE Std 754 - 1985, JUS N.R5.211 - 1986. Основна карактеристика овог стандарда је да низ битова који служи за представљање реалних бројева и који је резултат неке аритметичке операције може да носи двојаку информацију: 1) ако је операција исправно извршена наведени низ битова садржи резултат те операције, 2) уколико је детектована нека грешка овај низ битова представља бинарни код грешке. Овај код грешке има исти формат као и реални бројеви, али како није број он се назива неброј и означава се са NaN (од енглеског Not a Number). NaN се користи при откривању следећих нерегуларности при извршавању операција са реалним бројевима: (1) неисправна операција, (2) дељење са нулом, (3) прекорачење, (4) поткорачење и (5) недовољна тачност. Основни тип нерегуларности су неисправне операције, као што су: r + ∞, r - ∞, 0⋅∞, 0/0, ∞/∞, √r (r < 0). Стандард за покретну запату предвиђа два основна формата за реалне бројеве: формат једноструке и формат двоструке прецизноси и два тзв. проширена формата, такође за једноструку и двоструку прецизност. Формати за једноструку и двоструку прецизност приказани су на сл. 2.5 а,б. У приказаном формату позиција s служи за директно кодирање предзнака броја, мантиса м има облик м = 1.f, где се ф назива разломак, и e = E + p је тзв. померени експонент (поларизовани експонент), где је p = 127 за једноструку прецизност и p = 1023 за двоструку прецизност. При томе су вредности e = 0 и e = 255 резервисане вредности чија је улога следећа: а) e = 0 служи за кодирање ± 0 и тзв. денормализованих бројева, тј. бројева чији је експонент једнак минималној вредности експонента, имплицитни водећи бит мантисе је нула, а разломак ф је различит од нуле, б) e = 255 служи за кодирање ±∞ и небројева NaN. Правила интерпретације формата за једноструку прецизност су следећа: 1) Ако је e = 255 и f ≠ 0 тада је v = NaN,
50
2) Ако је e = 255 и f = 0 тада је в = (-1)s⋅∞ 3) Ако је 0 < e < 255 тада је v = (-1)с⋅2e-127⋅1.f, 4) Ако је e = 0 и ф ≠ 0 тада је v = (-1)s⋅2-126⋅0.f (денормализовани бројеви), 5) Ако је e = 0 и ф = 0 тада је v = (-1)s⋅0 (нула). 31 30 s
23 22 e
0 f
а ) Формат представљања бројева једноструке прецизности 63 62 s
52 51 e
0 f
б) Формат представљања бројева двоструке прецизности Слика 2.5 Стандардни формати за представљање бројева са покретном запетом
Правила интерпретације формата за двоструку прецизност су следећа: 1) Ако је e = 2047 и f ≠ 0 тада је v = NaN , 2) Ако је e = 2047 и f = 0 тада је v = (-1)s⋅∞ 3) Ако је 0 < e < 2047 тада је v = (-1)s⋅2e-1023⋅1.f, 4) Ако је e = 0 и f ≠ 0 тада је v = (-1)s⋅2-1022⋅0.f (денормализовани бројеви), 5) Ако је e = 0 и f = 0 тада је v = (-1)s⋅0 (нула). У таблици 2.10 специфицирани су подаци о форматима који су коришћени или се користе за представљање бројева са покретном запетом. Опсег бројева који се могу представити са покретном запетом приказан је на бројној правој на слици 2.6. Област 1 на бројној правој назива се област негативног прекорачења, а област 9 област позитивног прекорачења. Бројеви из ових области не могу се представити у рачунару и третирају се као бесконачност. Бројеви из области 3 и 7 су денормализовани бројеви. Иако се ови бројеви могу представити ове се области не користе јер они не спадају у нормализоване бројеве. Област 4 назива се област негативног поткорачења а област 6 област позитивног поткорачења. Ови се бројеви такође не могу представити јер су
51
врло мали и они се замењују вредношћу 0. Те две области чине тзв. област машинске нуле. Број "нула" се представља паром вредности м=0, е=0. Практично се са покретном запетом могу представити у рачунару само негативни бројеви из опсега 2 и позитивни бројеви из опсега 8. Таблица 2.10 – Формати бројева са покретном запетом Формат b n k p z d Emin Emax Rmin Rmax Обични 2 32 8 128 23 6 -128 +127 0.15⋅10-38 0.17⋅10+39 стари Обични 2 32 8 127 23+1 7 -126 +127 0.12⋅10-37 0.34⋅10+39 нови Обични 16 32 7 64 24 7 -64 +63 0.54⋅10-78 0.71⋅10+76 HEX -38 +39 Дупли 2 64 8 128 55 16 -128 +127 0.15⋅10 0.17⋅10 стари Дупли но- 2 64 11 1023 52+1 15 -1022 +1023 0.22⋅ 10-307 0.18⋅10+309 ви Интерни 2 80 15 16383 64 19 -16382 +16383 0.34⋅10-4931 0.12⋅10+4933 формат Ознаке: b - основа представљања са покретном запетом n - дужина речи за представљање бројева (бита) k - број позиција за померени експонент (бита) p - померај (помак) z - број бинарних позиција за мантису d - број значајних декадних цифара мантисе Emin - минимални дозвољени експонент за нормализоване бројеве Emax - максимални дозвољени експонент за нормализоване бројеве Rmin - минимална апсолутна вредност нормализованих бројева Rmax - максимална апсолутна вредност нормализованих бројева
1
2
3
4 5 6
7
8
9
-
+ -Rmax
-Rmin
0
Rmin
Rmax
Слика 2.6 Опсег бројева који се могу представити са покретном запетом
52
Из напред изложеног може се уочити да скуп бројева кој се могу представити са покретном запетом није еквивалентан скупу реалних бројева из следећих разлога: 1) опсег је знатно мањи и ограничен, 2) бројеви са покретном запетом нису континуални, већ су дискретни. Због тога се фактички сваки реалан број представља у рачунару приближно, са одређеном тачношћу. Осим тога и аритметичке операције се такође извршавају са одређеном тачношћу. Аритметичке операције за бројеве представљене са покретном запетом обављају се по посебним правилима. Њихова реализација захтева специфичне поступке и аритметичке блокове и сложенија је него за целобројну аритметику или аритметику са фиксном запетом. Осим тога и време извршења аритметичких операција са покретном запетом је дуже. Поред основе 2 за представљање бројева са покретном запетом користи се још и основа 16, понекад основа 8 а ретко и основа 10. Коришћење веће основе повећава опсег бројева који се могу представити (у таблици 2.10 то се види за основу 16) али зато усложњава реализацију аритметичких операција.
53
3. ПРЕДСТАВЉАЊЕ ПОДАТАКА
3.1. Подаци, информације, знање Коришћење рачунара почело је обрадом података, што је још увек основна намена данашњих рачунара. Са развојем структура за представљање података улога рачунара помера се од просте обраде података (углавном обимних рачунања или тзв. "млевења бројева") на обраду информација. Крајем седамдесетих и почетком осамдесетих година у вештачкој интелигенцији, области рачунарства у оквиру које се постављају и решавају проблеми моделирања помоћу рачунара оних врста деловања људи која се традиционално сматрају интелигентним, уводи се појам знања. Зато је са становишта примене рачунара могуће издвојити растући тренд од следећа три нивоа обраде: 1) обрада података, 2) обрада информација, 3) обрада знања (рад са знањем, манипулација знањем). Кратко ћемо размотрити значење и улогу ових појмова.
По да ц и
Предмет, појам, чињеницу, појаву, догађаај, процес и сл. који постоје у нашем окружењу као реалност, називаћемо општим именом објект посматрања (предмет, ентитет) или краће објект. У циљу проучавања, обраде или за друге потребе, слику објекта посматрања формирамо и описујемо помоћу података. У најопштијем случају подаци јесу чињенице, појмови или догађаји представљени (записани, регистровани) на унапред договорени, формализовани начин.
54
Подаци о објектима најчешће се предстваљају у дискретном облику помоћу низова (ниски) знакова на начин описан детаљније у одељку 3.3. Низови знакова којима се описује, представља или региструје стварност дејствују као замена за реалне објекте посматрања па се зато каже да је то симболичко представљање или симболички модел стварности. Оно не може у потпуности да представи стварност, јер објекте посматрања и њихове карактеристике описује непотпуно, али за највећи број примена је сасвим довољно. Да би неки низ знакова представљао податак потребно је да се зна да он представља опис неког објекта. Другачије се може рећи, да неки низ знакова представља податак ако му се може доделити одређени смисао и има одређену сврху. Може се такође рећи, да су подаци од интереса само ако се они могу прикупљати (регистровати), обрађивати, складиштити (чувати, памтити), претраживати, прености и саопштавати корисницима. Обим података који су доступни у свако време сваком од нас је практично неограничен. Због тога постоји потреба да се идентификују само они подаци који су интересантни и неопходни за неку одређену примену. Када се има у виду неки објекат посматрања немогуће је, и непотребно, захтевати све могуће податке о њему. Подаци којима описујемо објекат одговарају томе како ми мислимо о објекту или како видимо објект. Одлука шта селектовати из реалности и како то представити одражава поглед и потребу корисника. Подаци представљају ресурс који се може вишеструко користити јер употребом, тј. обрадом, преносом и предајом другима не долази до губитка њихове вредности. Ова карактеристика запамћених података чини их знатно различитим од других ресурса, посебно сировина.
Информације
Поред термина подаци често се у пракси као синоним користи термин информација. Међутим, ова два термина треба одвојити и посебно посматрати, јер у многим применама они не означавају исте појмове. Осим тога, често се од појма информација полази као од основног појма који се не може дефинисати, нарочито у теоријским, математички оријентисаним дисциплинама, као нпр. у теорији информација. За практично коришћење термин информација је стандардом ISO 2382 дефинисан на следећи начин: Информација (у обради података) представља смисао додељен подацима на основу договора за њихово представљање. 55
Како се из ове кратке дефиниције не може сагледати суштина појма информација, навешћемо још неке дефиниције: – информација представља резултат моделирања, форматизовања, организовања и трансформације података на начин који повећава ниво знања примаоца, – информација су подаци који су регистровани, класификовани, организовани, стављени у везу или интерпретирани у контексту који преноси смисао, – информација су подаци обрађени у облик који за примаоца има неко значење и има стварну или потенцијалну вредност у текућим или будућим одлучивањима, О односу података и информација може се рећи следеће: Подаци се могу сматрати као нешто што објективно постоји у природи, јер представљају регистроване чињенице о неком објекту посматрања. Информација је субјективна, јер постоји само у односу на примаоца коме саопштава нешто ново. Зависност информације од примаоца огледа се у томе што информација за једног корисника може представљати податак за другог, ако је кориснику та информација од раније већ позната или он нема интереса за њом. Информације су подаци који се могу преуредити у облик за који прималац може уочити и константовати да се могу користити. Тако нпр. у процесу доношења одлука на основу добијених нових информација прималац предузима одређене управљачке акције. Пошто се информације добијају из података, језиком производне технологије се може рећи да су подаци сировине од којих се као завршно добро добијају информације. Однос између података и информације може се видети и из структурног дијаграма на сл. 3.1, који показује трансформацију података у информације. Веза између података и информација иста је као и веза измађу сировина и готовог производа. То значи да се обрадом података који нису директно употребљиви добија на излазу облик који се може користити, тј. даје се информација за предвиђеног примаоца (корисника).
Знање
За термин знање у речницима и енциклопедијама налазимо различите дефиниције, од којих наводимо следеће:
56
– познавање једне научне области, познавање чињеница и материјала, упућеност у што, обавештеност, – опсег информација, опажања или разумевања које поседује нека личност. Са тачке гледишта вештачке интелигенције највише одговара следећа дефиниција: – знање је формализована информација на коју се позива или која се користи у процесу закључивања (логичког извођења, дедукције).
Меморија
Подаци
Обрада
Информације
Слика 3.1 Трансформација података у информације
Системи намењени за решавање практичних проблема, који су остварени на основу резултата вештачке интелигенције називају се интелигентни системи. Они користе експлицитно представљено знање па се зато често називају и системи засновани на знању. Најпознатији интелигентни системи су експертни системи који се могу дефинисати као програми који користе знање и процедуре закључивања (логичког извођења, дедукције) за решавање проблема тешких за људе експерте. Каже се такође да су то системи човекмашина, компетентни у некој ускостручној области (предметној области, домену), где се компетентност састоји од знања из конкретне предметне области, разумевања проблема из те области и вештине решавања тих проблема.
3.2. Циклус обраде података Систематска примена операција над подацима назива се обрада података или обрада информација. Из овако дате дефиниције појма обраде података следује да се као синоним може користити и појам обрада информација, 57
иако се појмови подаци и информације треба да разликују и нису синоними. Разлог за овакав приступ је следећи: као резултат обраде података добијају се информације. Ове информације могу се користити за предузимање одређених акција или у друге сврхе, али се исто тако могу подврћи новој обради ради добијања нових информација "вишег" нивоа. То значи да се од једних информација добијају нове информације тако што се информације подвргавају обради на исти начин као и подаци. Уређаји који служе за обраду података називају се општим именом рачунари. Овај се термин односи на електронске програмски управљане рачунаре који аутоматски извршавају претходно унети програм. Савремени електронски рачунари представљају сложене комплексе уређаја и програма (програмске подршке, софтвера) који могу да обављају врло сложене задатке обраде података, па се често користи потпунији термин рачунарски системи или системи за обраду података. Процес обраде података одвија се глобално у четири корака или етапа, који чине основне активности циклуса обраде података (информација): 1) прикупљање (улаз, уношење), 2) обрада (трансформација), 3) достављање (излаз, комуникација), 4) памћење (меморисање, складиштење, чување). Ове четири активности, које се још називају и компонентама информационог процеса, сукцесивно се понављају на начин приказан на сл. 3.2, где су приказане и везе са настанком (генерисањем) података и њиховим коришћењем. Прикупљање се састоји у уношењу, конверзији и представљању података на месту настанка, и њиховом регистровању у систему ради даље обраде. Етапа обраде има основни циљ да улазне податке организује и трансформише тако да се добије информација која се може користити за предвиђене намене. Обрада обухвата низ различитих операција над подацима као што су: селекција, класификација, уређивање (сортирање), агрегација (здруживање, обједињавање), рачунање, памћење, претраживање, припрема извештаја, пренос, приказивање итд. Етапа достављања или комуникације састоји се у припреми читљивих докумената (извештаја, прегледа, таблица и сл.), њиховом преносу и достављању корисницима. Унети подаци као и подаци и информације добијени обрадом памте се на масовним меморијама ради даљег коришћења, архивирања, репродукције или припреме за нове обраде. На
58
основу примљене информације прималац (човек или машина) доноси одлуке и/или предузима одређене акције у складу са алгоритмом функционисања система (фиксира стање, захтева нове податке, управља објектом и сл.). Одзивом система на предузете акције долази до генерисања нових података који се онда поново укључују у циклус обраде.
Генерисање
Прикупљање (улаз) Памћење (складиштење)
Објект
Обрада Достављање (излаз)
Акције
Коришћење
Слика 3.2 Циклус обраде података
Процес обраде података и информација може се разматрати и као систем који садржи три основне етапе: 1) прикупљање, 2) обрада, 3) комуникација. Овакво посматрање у потпуности одговара процесу производње у коме се такође издвајају три етапе: набавка сировина, производња готових добара и дистрибуција производа купцима.
59
3.3. Дискретно представљање података У циљу представљања података договорно се усваја скуп знакова или апстрактна азбука - коначан непразан скуп различитих елемената који обично укључује мала и велика слова азбуке, знаке децималних цифара, знаке интерпункције и друге специјалне знаке. У одређеним случајевима потребно је да у скупу знакова постоји уређеност елемената и тада се користи термин алфабет. Сваки елемент скупа знакова назива се знак (енгл. character) а понекад и симбол (мада термин симбол често има и следеће другачије значење: знак или низ знакова заједно са његовим смислом). Коначан број редом написаних знакова из неког скупа знакова назива се низ (ниска, реч) над тим скупом знакова. Низ је уређени скуп знакова, тако да се низови ab и ba сматрају различитим низовима. Број знакова у низу назива се дужина низа. Посебно се дефинише низ е дужине 0 који се назива празан низ. Празан низ јесте низ који не садржи ниједан знак. Навешћемо неколико примера низова. Ако азбуку А чине сва слова наше азбуке онда ће све речи нашег језика представљати низове над том азбуком (одатле потиче термин реч). Међутим, појам низа над скупом знакова општији је од појма речи код природних језика. Тако нпр. аобао је низ над нашом азбуком у формалном, горе дефинисаном смислу, али није реч нашег језика. Ако азбуку C чине све цифре декадног бројног система онда све бројеве записане цифрама можемо сматрати низовима над азбуком C. Ако је азбука А = {a, b}, неки од низова над том азбуком су: е, a, b, aa, ab, ba, bb, aaa итд. Начин представљања података, и у рачунару и ван њега, диктира природа електронских кола и других компонента које се користе за реализацију рачунара. Како су данас најједноставнија и најпоузданија електронска кола код којих се користе два различита стања, то се за представљање података и информација у самом рачунару искључиво користи азбука од два елемента. Ова азбука назива се бинарна азбука, а њени елементи најчешће се означавају знацима "0" и "1". За представљање коначног броја елемената неког скупа или коначног броја различитих вредности неке величине у циљу обраде, примењује се следећи поступак који се назива кодирање (кодовање). Над усвојеним скупом знакова формира се потребан број низова (речи) и сваком елементу стави се у обострану једнозначну кореспонденцију по један низ. Тада кажемо да смо податке кодирали, а сваки коришћени низ назива се кодни низ, кодна комбинација или кодна реч одговарајућег елемента. Успостављање обостране једно-
60
значне кореспонденције потребно је због тога што врло често постоји потреба декодирања - обратног преласка од кода на одговарајући елемент. Поступак кодирања може се у општем случају описати на следећи начин. Нека је задат скуп A' од n низова над над азбуком A (у посебном случају то су елементи скупа A), и скуп K' од n низова над азбуком K. Низови (речи) и у једном и у другом скупу могу имати различите дужине. Ако између низова скупова A' и K' успоставимо обострану једнозначну кореспонденцију кажемо да смо низове скупа A' кодирали низовима скупа K'. Поступак успостављања ове кореспонденције назива се кодирање, а скуп правила којима се описује начин представљања назива се код. Овакав начин представљања података назива се такође и дискретно или азбучно представљање. Мада у општем случају нема потребе за ограничавањем облика кодних речи, у пракси се због простије реализације користе најчешће тзв. равномерни кодови. То су кодови у којима све кодне речи имају исту дужину. Примере дискретног представљања навели смо раније у одељку 1.3. Ово представљање користи се такође код описа објеката помоћу сложених структура података, што представља симболички модел или симболички опис објеката, јер је то један од начина за представљање реалних објеката.
Шифарски системи
У обради података великог обима често се користе посебни начини идентификације објеката и њихових својстава који представљају скраћене или симболичке ознаке за податке. То су посебни системи кодирања, познати под именом кодни или шифарски системи. Овакви кодови (шифре) додељују се из два разлога. Први је уштеда у меморијском простору. Тако нпр. кодирано представљање занимања са три позиције знатно је економичније од назива занимања од нпр. петнаест позиција. Други, и можда важнији разлог, јесте могућност коришћења кодова за разврставање (сортирање) записа у класе. Кодови могу бити бројчани (нумерички), словни (алфабетски) и знаковни (алфанумерички). Бројчани код садржи само декадне цифре (тј. састоји од бројева), нпр. поштански бројеви места. Бројчани код од три места (позиције) има укупно 1000 могућих вредности, од 000 до 999. Словни код садржи само слова, нпр. ознаке градова на регистарским таблицама аутомобила. Словни код од две позиције има 900 могућих вредности ако је дозвољено коришћење свих слова наше азбуке. Алфанумерички кодови садрже и слова и цифре,
61
нпр. регистарски бројеви аутомобила. Ови кодови омогућавају већи број кодних комбинација у односу на бројчане или словне кодове.
3.4. Азбучна пресликавања Поступком дискретног представљања (кодирања) свако пресликавање (функција) коначног броја елемената може се свести на пресликавање скупа речи над неком усвојеном коначном азбуком у скуп речи над истом или неком другом коначном азбуком. Овако описана пресликавања називају се азбучна пресликавања. Имајући у виду дефиницију да обрада података представља примену операција над подацима, и да ми можемо користити дискретна представљања за опис тих операција, видимо да се и решавање било ког проблема обраде података може такође свести на азбучна пресликавања. То значи да обрада података није ништа друго него пресликавање (у општем случају парцијално) скупа речи улазне азбуке X у скуп речи излазне азбуке Y, којим се свакој речи rx улазне азбуке додељује реч ry излазне азбуке, што се може представити у облику ry = f(rx) . Појам алгоритма у тесној је вези са азбучним пресликавањима, јер се може интуитивно дефинисати и на следећи начин: алгоритам је азбучно пресликавање које се задаје помоћу коначног система правила. Алгоритмима се задаје ефективна израчунљивост функција, тј. описује се поступак којим се за било коју улазну реч rx за коначан број елементарних корака (правила алгоритма) може одредити f(rx), што значи да ова функција може бити израчуната механички (аутоматски) на машини. Један од начина прецизирања интуитивног појма алгоритма повезан је са коришћењем смена (правила преписивања, продукција), односно замене једне речи над неком коначном азбуком другом речи над том истом азбуком. Алгоритам се задаје као скуп дозвољених простих смена, допуњен јасним и тачним упутством како примењивати дозвољене смене, и када се треба зауставити. Проблеми постојања и начина задавања алгоритама, тј. проблеми ефективне израчунљивости функција, проучавају се у оквиру посебне дисциплине - теорије алгоритама. Ми овде нећемо улазити у детаљнија разматрања тих проблема.
62
У општем случају термин аутомат или машина означава уређај који по задатом програму, без непосредног учешћа човека, извршава све операције добијања, претварања (трансформације), преноса и достављања (коришћења) енергије, материјала или информација. Ми ћемо надаље посматрати апстрактне аутомате - уређаје за аутоматско претварање (трансформацију, обраду) дискретних података. Наиме, поред аутомата који су олакшали физички рад човека, данас постоје и аутомати који олакшавају његов умни рад, посебно сложене рачунске послове. Ови аутомати називају се у општем случају рачунски аутомати, рачунске машине или рачунари. Аутомат који служи за претварање дискретних информација назива се дискретни аутомат. Како се дискретне информације могу увек сматрати азбучним информацијама, задатим над неком азбуком, речи (низови) се у апстрактним аутоматима могу изражавати и помоћу стандардне азбуке неког бројног система (најчешће бинарног или декадног). Стога се дискретни аутомати зову још и дигитални или цифарски аутомати. Основна карактеристика рада дискретног аутомата јесте постојање коначног скупа унутрашњих стања и дисконтинуалног (скоковитог) преласка из једног стања у друго. После преласка у неко стање, прелаз у следеће стање не може се обавити пре него што истекне фиксни временски интервал. Ова претпоставка омогућује да се рад аутомата посматра у дискретним временским тренуцима - тактовима или тактним интервалима. Описи азбучних пресликавања помоћу алгоритама могу се третирати на два начина: 1) ако је број елемента који се пресликавају велики, набрајање свих могућих парова елемент - слика није могуће или је непрактично. У овом случају алгоритам служи да на коначан начин опише разматрано пресликавање (функцију); 2) добијање слике неког елемента помоћу алгоритма своди се на сукцесивну примену коначног броја простих правила алгоритма, која извршилац човек или машина, може лако обављати. У овом случају говоримо о ефективној израчунљивости функција, и о могућности механичког ("аутоматског") решавања проблема помоћу машина. Рекли смо да се уређаји који могу да врше азбучна пресликавања називају општим именом апстрактни аутомати или апстрактне машине. Другачије се може рећи да апстрактни аутомати служе за реализацију алгоритама. Најпознатији апстрактни аутомат који је описан у литератури назива се Тјурингова машина, а добио је име према енглеском математичару Алану Тјурингу, који га је први описао 1935. године. Не упуштајући се у детаље рада и могућно-
63
сти Тјурингове машине напоменимо да је, према хипотези самог Тјуринга, она у стању да реши сваки проблем за који постоји алгоритам, односно може да реализује сваки алгоритам. Постоји више појмова којима се прецизира интуитивни појам алгоритма. То су: Тјурингова машина, системи Поста, парцијалне рекурзивне функције, Маркољеви алгоритми, језици Чомског типа нула и др. Ова еквивалентност се не може строго математички доказати, јер се сам појам алгортима не може строго дефинисати. Међутим, према хипотези Черча сви ови појмови су међусобно еквивалентни по својим могућностима за израчунавање функција. Доказано је да постоје и тзв. алгоритамски нерешиви проблеми. То су пресликавања за која не постоје алгоритми.
3.5. Бинарно кодирање Из разлога које смо раније поменули, тј. због природе рада и поузданог коришћења савремених електронских компонената, за представљање података у рачунарима користи се бинарна азбука B = {0,1}. Ове елементе не треба третирати као бинарне цифре "нула" и "један", већ као погодне знаке за означавање два различита елемента. Међутим, у самом рачунару, када је то погодно, понекада се ова два знака интерпретирају и као цифре бинарног бројног система (нпр. у аритметичко-логичкој јединици) или као логичке вредности (нпр. при реализацији прекидачких мрежа). Оваква интерпретација не доводи ни до какве забуне, јер постоји обострана једнозначна кореспонденција, а показала се врло корисном у реализацији савремених рачунара. Кодирање података низовима (речима) бинарне азбуке назива се бинарно кодирање, а одговарајући код бинарни код. Уколико није посебно указано, сматраћемо сваки бинарни код као равномерни бинарни код. Ако је дужина бинарног кода к онда се коришћењем комбинаторике може доказати да постоји укупно 2k различитих кодних речи, што значи да је то највећи број различитих елемената које можемо бинарно кодирати. У пракси се јављају различити начини бинарног кодирања, од којих ћемо ми кратко размотрити следеће: − минимално бинарно кодирање, − логичко кодирање, − редундантно (преопширно) кодирање.
64
Под минималним бинарним кодирањем подразумева се начин кодирања код кога се користи минималан број бинарних позиција у кодним речима. Ако је n укупан број елемената које треба бинарно кодирати тада је минималан број бинарних позиција к у кодним речима једнак k = ⎡log2 n⎤ , где ⎡c⎤ ознажава најмањи цео број већи или једнак c. Логичко кодирање користи се знатно ређе а омогућава да се кодира присуство или одсуство неког атрибута (својства) објекта. Овде се за сваки атрибут одваја по једна бинарна позиција, постојање атрибута кодира се у тој позицији знаком "1" а одсуство знаком "0". Овај начин кодирања је врло неекономичан, али је погодан нпр. у случајевима када над атрибутима треба обављати скуповне или логичке операције. Редундантни или преопширни кодови су такви кодови у којима се не користе све могуће кодне речи. Коришћење ових кодова захтева дефинисање појма кодног растојања. Кодно или Хемингово растојање једнако је броју бинарних позиција у којима се разликују две кодне речи (кодна низа). Кодно растојање неког кода једнако је минималном растојању између свих парова кодних речи тог кода. Зависно од величине минималног кодног растојања постоје две врсте редундантних кодова: – кодови за откривање (детекцију) грешака, – кодови за откривање и исправљање (корекцију) грешака. У овим случајевима примењују се следеће теореме које припадају Р. Хемингу: 1) Ако је кодно растојање неког кода h, h >> 1, тада је у том коду могуће открити све грешке које мењају до h-1 битова. 2) Ако је кодно растојање h = 2p+1, p = 1,2,..., тада је могуће открити све грешке које мењају до h-1, тј. 2p битова и "аутоматски" исправити све грешке које мењају укупно до p битова Пример. Ако у бинарном коду дужине три користимо само кодне речи 000 и 111, који има минимално кодно растојање 3, могу се открити све једноструке и двоструке грешке, а могу се аутоматски исправити све једноструке грешке. Наиме, ако је послат кодни низ 000 а на пријемној страни добијен низ 100 настала је са великом вероватноћом једнострука грешка, па се врши исправка
65
на најближи низ 000. Оваква могућност плаћена је тиме што се за кодирање користе само два кодна низа од укупно осам могућих бинарних кодних низова дужине три. Један од најпростојих и често коришћених начина контроле исправности преноса јесте коришћење бита парности (непарности), којим се информационом делу кода додаје један бит, тзв. контролни бит, који допуњује број јединица у кодном низу до парног (непарног) броја. Овим се обезбеђује кодно растојање 2 и могу се само открити све једноструке грешке. Напоменимо да је при минималном кодирању најмање кодно растојање једнако 1.
3.6. Представљање ненумеричких података Поред нумеричких рачунар може да обрађује и податке које ћемо условно назвати ненумеручки подаци. То су подаци над којима се не примењују класичне аритметичке операције. Све ненумеричке податке условно ћемо поделити у следеће групе: – знаковни (алфанумерички) подаци, – логички подаци; – графички подаци; – контекстни подаци; – управљачки подаци; – сложене структуре података. Детаљније ће о карактеристикама ових података бити говора касније у поглављу о организацији података, а овде ће пре свега бити речи о начинима њиховог представљања у рачунару.
Знаковни (алфанумерички) подаци
То су подаци који се појављују у форми која је читљива за људе, тј. у текстуалном облику. Ови су подаци састављени од низова (речи) над усвојеним скупом знакова, који обично садржи мала и велика слова азбуке, децималне цифре, знаке аритметичких операција, знаке интерпункције и друге знаке. Над
66
овим подацима примењују се специфичне операције као што су нпр. спајање низова, издвајање дела низа, тражење задатог подниза и друге. Увођење знаковних података омогућило је памћење, обраду и штампање у текстуалном облику података о лицима или објектима и њиховим особинама, обраду текста за разне намене као што је издавачка делатност или обрада текста у канцеларијама (формирање, памћење и штампање разних врста образаца, припрема писама, коришћење електронске поште и сл.). Значајно је и коришћење знаковних података за различита лингвистичка истраживања, нпр. стварање различитих речника, превођење текстова са једног језика на други, аутоматска синтеза говора, аутоматско индексирање садржаја докумената, различите анализе литерарних дела итд. За представљање знаковних података у рачунару користе се тзв. стандардни бинарни кодови - бинарни кодови усвојени од националних или међународних организација за стандардизацију. Данас се највише користи ISO 7 код, (ISO - International Standrds Organization - Међународна организација за стандардизацију), много шире познатији као ASCII код (ASCII - American Standard Code for Information Interchange - Стандардни амерички код за размену информација, изговара се "аски"). То је седмобитни код, тј. бинарни код у коме се сваки знак кодира бинарним низом дужине седам. У меморији и при преносу користи се осам битова, при чему осми бит служи за контролу на парност или непарност. Стандардом ISO 646 одређени број позиција у кодној таблици ISO 7 кода остављен је недефинисан за посебне знаке појединих земаља, тако да су стандардима JUS I.B1.002 и JUS I.B1.003 дефинисане југословенске варијанте латиничног и ћириличног писма. У таблици 3.1 дата је кодна таблица интернационалне верзије ISO 7 кода и српске латинице. Кодна таблица за српску ћирилицу истоветна је, сем што се на место латиничних слова q, w и x налазе ћирилична слова љ, њ и y, респективно. Други познат стандардни бинарни код за представљање знаковних података је EBCDIC код (EBCDIC - Extended Binary Coded Decimal Interchange Code Проширени бинарно кодиран децимални код за размену информација) који је дефинисала позната америчка фирма за производњу рачунара IBM. То је осмобитни код, али је скуп знакова који се кодирају и користе врло сличан скупу знакова ASCII кода. У персоналним рачунарима за кодирање знаковних података корсти се више осмобитних кодних таблица или тзв. кодних страница. У сагласности са тим кодним страницама је и југословенска варијанта дефинисана стандардом JUS I.B1.015 - 1992, дата у таблици 3.2.
67
Како и осмобитни бинарни кодови не могу да обухвате сва писма за различите језике ради се на мећународним стандардима за бинарне кодове са више од осам битова. Свака кодна таблица садржи поред знакова који се штампају и одређени број знакова (датих у прве две колоне кодне таблице) који су намењени за управљање преносом или за управљање периферним уређајима. Симболичке ознаке и значење ових, тзв. управљачких знакова, за ISO 7 код дате су у таблици 3.3. Таблица 3.1 − ISO 7 (ASCII) код Интернационална референтна верзија и југословенска верзија према стандарду JUS I.B1.002-1982 b7
0
0
0
0
1
1
1
1
b6
0
0
1
1
0
0
1
1
b5
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
0000
0
NUL
DLE
SP
0
@ [Ž]
P
` [ž]
p
0001
1
SOH
DC1
!
1
A
Q
a
q
0010
2
STX
DC2
"
2
B
R
b
r
0011
3
ETX
DC3
#
3
C
S
c
s
0100
4
EOT
DC4
$
4
D
T
d
t
0101
5
ENQ
NAK
%
5
E
U
e
u
0110
6
ACK
SYN
&
6
F
V
f
v
0111
7
BEL
ETB
'
7
G
W
g
w
1000
8
BS
CAN
(
8
H
X
h
x
1001
9
HT
EM
)
9
I
Y
i
y
1010
A
LF
SUB
*
:
J
Z
j
z
1011
B
VT
ESC
+
;
K
[[Š]
k
{ [š]
1100
C
FF
FS
,
<
L
\ [Đ]
l
| [đ]
1101
D
CR
GS
-
=
M
] [Ć]
m
} [ć]
1110
E
SO
RS
.
>
N
^ [Č]
n
~ [č]
1111
F
SI
US
/
?
O
_
o
DEL
bbbb 4321
Логички подаци
68
То су подаци који могу имати само две различите вредности тзв. вредности истинитости, најчешће означаваних енглеским речима true (истина), или скраћено Т, и false (лаж), или скраћено Ф. Ови се подаци користе у математичкој логици, а такође у Буловој или прекидачкој алгебри. Графички подаци
Графички подаци служе за генерисање, памћење, обраду и визуелни приказ на екрану или штампање графичких ликова - слика, цртежа, графикона и чак дигитализованих фотографија, а имају примену у многим областима. Пре свега графика представља природан начин комуникације између човека и рачунара, јер је познато да човек највише информација добија путем чула вида.
Таблица 3.2 − Кодна таблица према стандарду JUS I.B1.015 - 1992 b8
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
b7
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
b6
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
b5
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
░
└
╨
µ
н
bbbb 4321 0000
0 NUL DLE
SP
0
@
P
`
p
©
Н
^
0001
1 SOH DC1
!
1
A
Q
a
q
А
Њ
]
▒
┴
╤
а
њ
0010
2 STX DC2
"
2
B
R
b
r
Б
О
\
▓
┬
╥
б
о
0011
3 ETX DC3
#
3
C
S
c
s
В
П
[
│
├
╙
в
п
0100
4 EOT DC4
$
4
D
T
d
t
Г
Р
@
┤
─
╘
г
р
0101
5 ENQ NAK
%
5
E
U
e
u
Д
С
╡
┼
╒
д
с
0110
6 ACK SYN
&
6
F
V
f
v
Ђ
Т
╢
╞
╓
ђ
т
0111
7 BEL ETB
'
7
G
W
g
w
Е
Ћ
╖
╟
╫
е
ћ
1000
8 BS
CAN
(
8
H
X
h
x
Ж
У
~
╕
╚
╪
ж
у
1001
9 HT
EM
)
9
I
Y
i
y
З
Ф
}
╣
╔
┘
з
ф
1010
A LF
SUB
*
:
J
Z
j
z
И
Х
|
║
╩
┌
и
х
1011
B VT
ESC
+
;
K
[
k
{
Ј
Ц
{
╗
╦
█
ј
ц
1100
C FF
FS
,
<
L
\
l
|
К
Ч
`
╝
╠
▄
к
ч
1101
D CR
GS
-
=
M
]
m
}
Л
Џ
╜
═
▌
л
џ
1110
E SO
RS
.
>
N
^
n
~
Љ
Ш
╛
╬
▐
љ
ш
69
1111
70
F SI
US
/
?
O
_
o
DL
М
┐
╧
▀
м
Таблица 3.3 − Управљачки знаци ISO 7 (ASCII) кода Симбол ACK BEL BS CAN CR DC DEL DLE EM ENL EOT ESC ETB ETX FE FF FS GS HT IS LF NAK NUL RS SI SO SOH SP STX SUB SYN TC US VT
Енглески Acknonjledge Bell Backspace Cancel Carriage return Device control Delete Data link escape End of medium Enquiry End of transmission Escape End of transmission block End of text Format effector Form feed File separator Group separator Horizontal tabulator Information separator Line feed Negative acknonjledge Null Record separator Shift in Shift out Start of heading Space Start of text Substitute Synchronous idle Transmission control Unit separator Vertical tabulation
Пун назив Српски Потврда исправног пријема Знак акустичног аларма (звоно) Померај уназад Поништити (операцију) Повратак на почетак реда Управљање уређајем Испустити (обрисати) Следи низ са посебним значењем Крај медијума Упит Крај преноса Прелаз Крај преноса блока Крај текста Спецификација формата Увлачење формулара Сепаратор датотека Сепаратор блокова Хоризонтална табулација Сепаратор података Следећа линија (нови ред) Потврда неисправног пријема Празан знак (ништа) Сепаратор записа Повратак на стандардно значење знакова Прелаз на промењено значење знакова Почетак заглавља (поруке) Размак (празнина) Почетак текста Заменити Синхронизација Управљање преносом Сепаратор поља Вертикална табулација
71
За памћење графичких података користи се најчешће један од следећа два начина: – векторска графика, – растерска графика. Код векторске графике слика се памти као скуп одређеног броја елементарних геометријских облика тзв. графичких примитива, као што су: полилинија - низ дужи које се надовезују једна на другу, полимаркери - графички симболи који се цртају у одређеним тачкама, празни или пуни полигони, празни или пуни кругови или елипсе, матрице ћелија, лукови и криве линије дефинисане помођу тзв. сплајн функција. Код растерске графике слика се памти тачка по тачка у растеру - финој дводимензионалној мрежи тачака. При томе се за сваку тачку памти (кодира) независно нијанса или боја и интензитет осветљења.
Контекстни подаци
Напред описане врсте података памте се у облику који је за одређени рачунар стандардан, тј. унапред дефинисан. Међутим, у пракси се често јавља потреба да се представе и друге врсте података о објектима, њиховим атрибутима, везама итд. У том случају корисник сам уводи свој начин кодирања за те податке, најпогоднији за дату примену. Подаци који су представљени на напред описани начин имају смисла само у оквиру конкретног програма или програмског пакета, јер је само у њему познат начин кодирања. Зато се ови подаци називају контекстни подаци, јер само у контексту датог програма имају значење. Генерално се сва представљања података која нису стандардна могу сврстати у ову групу.
Управ љ ачк и подац и
Све напред наведене врсте података намењене су обради и добијању нових информација. Поред њих у меморији рачунара чувају се и подаци који имају другачију улогу. То су наредбе програма, бинарно кодиране на одређени начин, којима се управља обрадом. Сваки бинарни низ који одговара некој наредби представља за рачунар управљачки податак или управљачку информацију, јер се користи у управљачкој јединици рачунара за управљање 72
извршењем одређених операција. Зато се може рећи да су ово активни подаци, за разлику од пасивних података над којима се врши обрада.
Интерпретација бинарних низова у рачунару
Ако посматрамо садржај неке меморијске локације или групе сукцесивних меморијских локација, или садржај неке области на спољној меморији, без додатне информације тај се садржај не може једнозначно интерпретирати. То значи да се у меморији рачунара може истовремено налазити више различитих типова бинарно кодираних података. Зато је интересантно поставити питање шта може престављати бинарни садржај у меморији рачунара. Сагласно са напред изложеним, у општем случају бинарни низови у рачунару могу се интерпретирати на више начина, али најчешће као: – бројни (нумерички) подаци, – знаковни (алфанумерички) подаци, – логички подаци, – графички подаци, – контекстни (посебно кодирани) подаци, – управљачки подаци, – сложене структуре података.
3.7. Модел комуникационог система Једна од врло честих операција при раду са подацима представља њихов пренос на даљину. Систем у коме се од места формирања или извора податак може предавати до места пријема или одредишта преносом на даљину, и у коме се може разматрати проблем ефикасности и поузданости преноса, назива се комуникациони систем. Сваки пренос на даљину обавља се помоћу сигнала, где сигнал представља временски зависну величину која карактерише неку физичку појаву и носи податке. Проучавањем комуникационих система, помоћу математичког модела њиховог рада, бави се посебна област - те-
73
орија комуникација. У оквиру ове области понекад се издвајају као посебне дисциплине теорија информација и теорија кодирања. У комуникационом систему сигнал којим су представљени подаци и информације, формиран на једном крају, репродукује се на удаљеном месту. То се односи на телеграфске и телефонске системе, радио и ТВ пренос, системе за пренос података, сателитске системе, итд. 6 Извор сметњи 1 Извор
2 Предајник
Шум Комуникациони канал 3
4 Пријемник
5 Одредиште
Слика 3.3 Општи модел комуникационог система
Општи модел комуникационог система представљен је на слици 3.3. Извор 1 (човек, уређај или појава у природи) формира податке за слање који се организују у облику поруке. Обично се порука дефинише као произвољна количина података чији су почетак и крај дефинисани или се подразумевају. Са становишта теорије комуникација такође се може рећи да порука представља секвенцу (низ) речи или симбола која се преноси у циљу саопштавања (достављања) информација. Напоменимо да се понекад уместо термина порука може користити и термин саопштење. У предајнику 2 се врши кодирање и трансформација поруке у сигнал у циљу преноса по комуникационом каналу. Комуникациони канал 3 представља средину или уређаје којима се преноси сигнал на даљину. Канали могу бити разноврсни, нпр. код кабловске везе то су проводници (ваздушни или подземни) или оптички каблови, али се као канал може користити и ваздушни простор кроз који се преносе електромагнетни или звучни таласи, затим нерви код живих бића, итд. У пријемнику 4 прихвата се сигнал и врши трансформација поруке у облик у коме ће она бити предата на одредишту примаоцу (кориснику). При томе корисник може бити човек или уређај. Извор сметњи 6 генерише непожељне сигнале - шумове или сметње, који се појављују ван комуникационог канала и ометају пренос. Ови су сигнали страни у односу на сигнал којим се преноси порука, формирају се спољним поремећајима, и могу бити штетни јер производе лажне сигнале који доводе до грешака у преносу.
74
Зависно од начина представљања или преноса података комуникациони системи могу бити аналогни, дискретни или комбиновани. У аналогном систему порука и сигнал се представљају континуалним функцијама, нпр. радио или телефонски сигнал. У дискретном систему порука и сигнал представљау низове дискретних симбола (знакова), као што су нпр. штампани текст или телеграфски сигнал. На путу од извора до одредишта дискретни сигнал може прелазити неколико различитих делова канала, сваки са различитим алфабетом. Трансформација сигнала из једног у други облик представља поступак кодирања. То значи да у састав комуникационог канала може улазити и више уређаја за кодирање.
3.8. Дискретизација сигнала Дискретно задата величина може се увек изразити помоћу континуалне (аналогне) величине, јер се међу могућим вредностима континуалне величине садрже и све дискретне. Због коришћења савремених цифарских рачунара знатно је интересантнији прелаз од аналогног на дискрено представљање. Овај се прелаз може извршити само приближно, са заокружењем до најближе дискретне вредности. Међутим, у свим реалним случајевима могуће је са жељеном тачношћу упоређивати дискретне и аналогне величине. Дискретизација сигнала представља поступак којим се аналогни (континуални, непрекидни) сигнал предстваља у дискретном облику, или се проблем дефинисан на континууму замењује апроксимативним (приближним) проблемом дефинисаним на коначном броју тачака. Представљање континуалног сигнала у дискретном облику остварају се поступком који се назива квантовање сигнала. При томе се континуална величина замењује коначним бројем вредности, односно прекидним сигналом који апроксимира реални сигнал. Поступак квантовања, који у ствари представља аналогно-дигиталну конверзију, одвија се у две етапе: 1) одмеравање (квантовање по времену, узорковање); 2) квантовање по нивоу (заокруживање, груписање по квантним нивоима). Поступком одмеравања, који се понекад назива дискретизација, узимају се аналогне вредности сигнала у дискретним временским моментима одређеним равномерним или неравномерним временским интервалима. У сваком од 75
тих временских момената фиксира се вредност континуалног сигнала, и он се замењује сигналом са константном вредношћу до следећег одмеравања, сл. 3.4а. Свака од ових вредности одговара једном временском интервалу, а може се узети и нека средња вредност за интервал, која се добија простим или тежинским усредњавањем. Оваква апроксимација полазне континуалне функције доводи до грешке која је већа уколико је интервал одмеравања већи, и обратно, уколико је интервал одмеравања мањи утолико је апроксимација боља. Ако се процес дискретизације времена врши без одређене предострожности може доћи до знатних грешака. С једне стране, потребно је имати довољан број узорака (вредности) функције у јединици времена да би се на адекватан начин представила битна информација која је садржана у сигналу. С друге стране, узимање узорака у врло блиским временским интервалима због њихове корелације даје сувишне податке, а знатно повећава сложеност, цену и време израчунавања, као и потребан меморијски простор. Да би се смањили трошкови потребно је да величина интервала дискретизације буде на минималном дозвољеном нивоу, тако да додатна грешка која је последица дискретизације не пређе дозвољене границе.
f
f
t
t а) Одмеравање
б) Квантовање по нивоу
Слика 3.4 Одмеравање и квантовање по нивоу
Дискретизовањем аналогне функције искључују се из разматрања скупови вредности те функције (промена функције) у самим временским интервалима. Другим речима непрекидној функцији ставља се у кореспонденцију друга функција формирана прекидањем полазне функције. На тај начин се врши прелаз из области континуалних у област прекидних или дискретних функција. Оваква замена је потребна када се врши пренос сигнала у дискретном об-
76
лику, или због прикупљања или анализе података о физичким процесима помоћу рачунара. Величина интервала одмеравања одређује се на основу следеће теореме, познате као теорема одмеравања (теорема узорковања) коју наводимо без доказа: Ако функција f(t) не садржи учестаности веће од неке учестаности F, која се назива ширина пропусног опсега, тада се f(t) може јединствено одредити дискретним скупом својих вредности узетим у тачкама одмеравања са учестаношћу 2F. Претпоставка у теореми одмеравања теоријски се не може задовољити, јер ми најчешће посматрамо сигнале из неког коначног временског интервала, а такви сигнали не могу имати ограничену вредност учестаности F. Међутим, због коначне резолуције сваког аналогног уређаја, сматра се да ће за практичне примене тај услов бити задовољен. У већини случајева може се изабрати довољно блиско представљање континуалног сигнала помоћу дискретног. Ово је слично начину на који се било који ирационалан број може изразити са довољно малом грешком децималним разломком са коначним бројем позиција (цифара). Дозвољена изобличења сигнала при одмеравању одређена су с једне стране дозвољеном нетачношћу сигнала у систему у коме се он користи, а са друге стране постојањем шума - случајног утицаја и изобличења које трпи сигнал при преносу, формирању и чувању. Сагласно теореми одмеравања, у пракси се обично узима учестаност дискретизације 2 - 5 пута већа од највеће учестаности F. Такав избор представља компромис између тежње да се повећа учестаност дискретизације ради добијања сигнала који тачније апроксимира полазни аналогни сигнал, и услова економије ширине пропусног опсега при преносу података. При квантовању по нивоу, које се понекад назива кратко квантовање, опсег вредности сигнала дели се на коначан број непреклапајућих интервала корака квантовања или кванта, који не морају бити једнаки, и свака се квантована вредност означи једном придруженом дискретном вредношћу. Ако је корак квантовања исти, што је у пракси најчешћи случај, сваком кванту одговара вредност која је пропорционална величини једног интервала. Како су вредности сигнала физички ограничене, квантовањем по нивоу се преводе вредности континуалне функције у коначан скуп бројева који се сада могу представити у дискретном облику. Код најпростијег начина квантовања по нивоу текућа вредност континуалне функције упоређује се са једним квантним нивоом. У моменту када текућа вредност функције постане једнака квантном нивоу, дискретна функција узи-
77
ма вредност тог квантног нивоа и остаје непромењена до момента када текућа вредност континуалне функције не достигне следећи квантни ниво, што се може десити у било ком временском тренутку. Прелаз дискретне функције од једног квантног нивоа на други оствараје се када реални сигнал пређе вредност следећег квантног нивоа, сл. 3.4б. Грешке које се уносе квантовањем по нивоу зависе од величине интервала квантовања. Да би се адекватно изразиле мале промене амплитуде сигнала, потребно је имати довољно мали корак квантовања. Истовремено са смањењем корака квантовања јако расте обим сувишне информације која тиме знатно повећава потребан рад и цену израчунавања. Због тога је у циљу оптимизације квантовања потребно повећати корак квантовања до максимално дозвољене вредности при којој се не појављају сувише велике грешке. Избор величине интервала квантовања захтева сложену анализу и неће бити овде разматран. Како се одмеравањем још не добија дискретно представљање сигнала, јер вредности нивоа сигнала и даље могу бити аналогне, за добијање дискретног представљања сигнала примењују се истовремено обе врсте квантовања, сл. 3.5а. При томе се квантовање по нивоу примењује у тачкама одмеравања а не када сигнал пређе вредност једног нивоа квантовања. У пракси се истовремено квантовање по времену и по нивоу врши најчешће на један од следећа два начина: 1) квантовање по времену врши се са изабраним кораком T а представљање вредности функције при одабирању у сваком задатом временском тренутку врши се избором најближег квантног нивоа. Овај се поступак користи код тзв. импулсно-кодне модулације или PCM (скраћеница од енглеског термина Pulse Code Modulation - импулсно-кодна модулација), и он је приказан на сл. 3.5а. 2) Дискретна функција fd(t) формира се према следећем правилу: У сваком дискретном временском моменту tk текућа вредност континуалне функције упоређује се са претходном вредношћу функције fd(tk-1). Ако је разлика већа или једнака нули fd се повећава за корак квантовања, ако је разлика негативна fd се смањује за корак квантовања. Овај се начин користи код тзв. делта модулације. Ако се квантоване вредности сигнала добијене дискретизацијом представе у цифарском (дигиталном) облику тада се каже да је извршена дигитализација сигнала. Уместо да се преноси сигнал који би указивао на вредност достигнуту у одређеном временском моменту, преноси се група бинарних сигна-
78
ла (група импулса) која указује на бројну вредност одговарајућег нивоа, сл. 3.5б. f
4
f
4
3 3 1 t а ) Истовремено квантовање по времену и нивоу
001
011
100
100
011
t
б) Бинарни сигнали који се преносе
Слика 3.5 Дигитализација сигнала
79
4. ОРГАНИЗАЦИЈА ПОДАТАКА
4.1. Опис објеката Информатика се бави прикупљањем, памћењем (складиштењем, меморисањем), обрадом и достављањем (издавањем) података о објектима као што су људи, организације, предмети и др., о разним променама (трансакцијама) као што су наручивање робе, испорука робе, уплате на штедну књижицу, упис семестра и др. , као и о разним појмовима и појавама, и сл. Сваки објект који посматрамо карактерише се скупом својстава (битних одлика, особина, карактеристика). Свако од својстава које се разматра називаћемо општим именом атрибут. Ако се неки атрибут не може раставити на простије атрибуте назива се прост атрибут (елементарни атрибут), у супротном случају је то сложени атрибут (структурирани атрибут, структурни атрибут). Тако нпр. атрибут "датум" је сложен јер у себи садржи три податка - проста атрибута: годину, месец и дан у месецу. Из разлога који су обично диктирани потребама обраде података, елементарни атрибути се комбинују у сложене. Тако нпр. атрибут "кућни број" представља прост атрибут. Међутим, у одређеним применама атрибут "адреса" третира се као јединствени атрибут ако је логика примене таква да се никада не појављује потреба за посебним коришћењем атрибута "место", "улица" и "кућни број". Скуп атрибута којима се описује неки објект може бити велики и разноврстан. Због тога се у пракси за сваки објект зависно од примене усваја потребан број простих и сложених атрибута, довољних да опишу тај објект за конкретну примену. Тако нпр. скуп података о грађанима у личној карти садржи: регистарски број, матични број грађана (лични број), презиме, име, име једног родитеља, датум рођења, место рођења, општина, република, пребивалиште и адреса стана, рок важења. За персоналну евиденцију запослених у радним организацијама скуп података за свако лице регулисан је прописима, а обухвата око осамдесет различитих атрибута. Један исти атрибут може постојати
79
и у више различитих објеката. Нпр. , атрибут "датум" потребан је при регистрацији присуства на послу, преносу поруке, регистрацији пријема робе, и у многим другим применама. То значи да исти атрибут може имати одређену самосталност и као такав може фигурисати у описима више различитих објеката који се односе на разне или исте примене. За представљање (опис) објеката посматрања помоћу атрибута потребна су четири елемента: 1) скуп атрибута, 2) имена (ознаке, називи) атрибута, 3) опсег вредности атрибута, 4) начин представљања података о атрибутима (број позиција за атрибут, тип података и др. ). Сваки се атрибут карактерише својим именом и скупом вредности које може узимати. Атрибут узима вредности из унапред задатог скупа вредности (опсега вредности). Поред тога, за атрибут се могу задати синоними имена, скраћене ознаке (кодови, шифре и др. ), идентификатори, типови вредности које он може узимати, опсег дозвољених вредности, одређена ограничења (нпр. тачност, јединице мера, број позиција и сл. ), као и различите специјалне особине (нпр. лозинка заштите, постојање или непостојање већ додељених вредности, напомена о трансформацији, датум промене вредности и сл. ). Име атрибута служи за обраћање атрибуту и представља се једном речи, групом речи, бројем, условном шифром, симболичком ознаком, адресом у оперативној меморији или адресом на спољњем носиоцу, или на неки други специфичан начин. При програмирању за имена се користе посебна кратка имена (називи, ознаке) које називамо идентификаторима. Њима се једнозначно идентификују атрибути. Имена су обично ограничена по дужини, дозвољеном скупу занкова који се могу користити у њима и области дејства. Напоменимо да имена атрибута и њихово представљање не морају бити записани на истом месту где и вредности атрибута. Они се најчешће описују на другом месту, обично у тзв. речнику података, који садржи имена атрибута и начине представљања (репрезентације) свих елемената података у бази података. Ово доводи до разлике у логичкој и физичкој организацији података, о чему ће касније бити речи. Сви објекти посматрања такође или већ имају своја имена, или им се она посебно додељују. Ова се имена формирају према истим правилима и принципима као и имена атрибута.
80
4.2. Датотеке Скуп атрибута о конкретном објекту формира се у посебну структуру података која се назива запис (слог). Запис се у обрадама често третира као недељива јединица података, и са њим се оперише као са једним јединственим елементом. Разликујемо две врсте записа: − логички запис, − физички запис. Логички запис Р представља скуп уређених парова (ai , vi), gde su ai (i = 1,2,. . . ,m) имена атрибута, a vi (i = 1, 2,. . . , m) вредности атрибута, што записујемо у облику R = { (a1 , v1), (a2 , v2), … , (am , vm) } . Логичким записом се уствари специфицира који атрибути се користе за опис неког објекта за одређену примену. Конкретна реализација логичког записа на меморијском медијуму спољне меморије или у оперативној меморији назива се физички запис, и он има облик приказан на слици 4.1а. Poqe_1
...
Poqe_2
Poqe_m
а) Структура записа Zapis_1
Zapis_2
...
Zapis_k
...
Zapis_n
б) Структура датотеке Слика 4.1 Структура записа и датотеке
Група битова или група позиција (знакова) која служи за представљање вредности једног простог или сложеног атрибута назива се поље или зона. Свако поље садржи само вредност атрибута, а карактерише се бројем битова или бројем знакова и типом података за одговарајући атрибут. Број поља неког записа, њихов редослед, величина и типови података специфицирају се или у пратећој документацији или у речнику података.
81
Посебно организован скуп сродних записа, тј. скуп записа о сродним објектима организаованих на одређени начин на спољњем меморијском медијуму назива се датотека (од латинског data = подаци), и може се представити у облику приказаном на сл. 4.1б. Свака датотека има посебну ознаку за идентификацију - име датотеке, које је најчешће симболички идентификатор датотеке или број датотеке. За чување информација (воћење евиденције) о датотекама смештеним на неком меморијском медијуму користи се посебна структура података која се назива именик (каталог, адресар). Сваки именик се идентификује посебним симболичким именом, а има облик приказан на сл. 4.2. Именик представља списак датотека. Уз име сваке датотеке меморишу се одређени подаци о датотеци. Уношењем имена датотеке у именик обезбеђује се њено чување на спољашњем меморијском медијуму. Главни именик
Именик_1
Именик_11
Именик_2
Именик_12
Именик_3
Именик_13
Слика 4.2 Структура именика ( каталога)
Главни именик и сваки подименик могу у себи садржати осим датотека и нове подименике. Скуп имена од имена главног именика до имена датотеке назива се пут и представља тзв. сложено име датотеке. Записи у датотеци идентификују се обично на два начина: а) помоћу редног броја, б) помоћу кључа. Примарни кључ записа, или просто кључ, представља атрибут или групу атрибута који служи за једнозначну идентификацију записа. Остали делови записа зову се онда функционално зависним атрибутима и представљају податке записа. Секундарни кључ представља атрибут или групу атрибута код које се иста вредност јавља као елемент већег броја записа истог типа. Секундарни кључ може да идентификује све објекте, догађаје или појаве који поседују исту особину.
82
4.3. Организација датотека Записи датотеке могу се на више различитих начина памтити на меморијском медијуму, што има за последицу и различите начине приступа тим записима. Под организацијом датотеке подразумевамо начин приступа записима датотеке на меморијском медијуму. За рад са датотекама обично се користе посебни програми који се називају методе приступа, а део су оперативног система рачунара. У пракси се најчешће користе следеће организације датотека: 1) секвенцијална организација, 2) индексна (индекс-секвенцијална) организација, 3) релативна (директна) организација, 4) расута организација, 5) ланчана организација.
Секвенцијална организација
За датотеку кажемо да има секвенцијалну организацију ако к-том запису можемо приступити само ако смо претходно приступили редом свим записима 1, 2, …, k-1 (сл. 4.1б). Ово је једини начин приступа записима датотеке смештеним на магнетној траци. Међутим, датотеке са оваквом организацијом могу се дефинисати и на диску, јер има примена у којима је погодан, и пожељан, баш секвенцијални приступ.
Индексна (индекс-секвенцијална) организација
Код датотека са индексном организацијом за приступ записима користе се кључеви, а сви записи су уређени по растућим или опадајућим вредностима кључева. Приступ било ком запису датотеке остварује се коришћењем посебно организоване структуре која чини саставни део датотеке а назива се ин-
83
декс или адресар, при чему се комбинују директни и секвенцијални приступ. Меморијски простор индексне датотеке чине три дела (сл. 4.3):
− индекс (адресар), − примарна област (основна област), − област прекорачења. Примарни и секундарни меморијски простор чине обично стазе на диску где су смештени записи. Свака ставка индекса има следећи облик. Кључ_11 представља кључ са највећом (или најмањом) вредношћу на једној истој стази, а кључ_12 се користи у случају када је стаза попуњена а треба између два постојећа додати нови запис. Овај се нови запис смешта на некој стази у области прекорачења, о чему се информација смешта уз кључ_12. Индекс ( адресар) Кључ_11 адреса_ стазе _11 кључ _12 адреса _стазе _12 Примарна област Подаци на стази_11 . . .
Област прекорачења Подаци на стази_12 . . . Слика 4.3 Меморијски простор индексне датотеке
Тражење записа одвија се на следећи начин. На основу задатог кључа у индексу се утврђује на којој се стази налази запис. Овој се стази приступа директно према адреси у индексу, а затим се у оквиру стазе запис тражи секвенцијално. Када се при смештању нових записа област прекорачења попуни, а он може да износи обично до 20 % примарне области, предузима се посебан поступак - реорганизација датотеке, којим се врши физичко померање записа и формира се нови распоред записа у примарној области.
84
Релативна (директна) организација
Код датотека са релативном организацијом може се приступити било ком запису на основу његовог редног броја. Услов за овакву организацију је иста, фиксна дужина, свих записа датотеке. У раније коришћеној терминологији ове су датотеке називане датотекама са директним приступом, јер су у то време постојале још само секвенцијалне и индексне датотеке.
Расута организација
Ова организација као стандардна организација датотека новијег је датума, иако је прунцип који се овде користи био раније добро познат, а примењиван је за смештање и тражење података у таблицама (табелама). Сваком запису датотеке са расутом организацијом приступа се директно на основу задатог кључа поступком трансформације кључа или расутог адресирања, а исти се поступак користи и при смештању записа. Због могућности скоро директног налажења места записа ова се организација понекад назива и директна организација али се онда овај термин не може користити и код релативне организације. Трансформацијом кључа добија се адреса или позиција места у резервисаном меморијском простору где се може сместити запис. Из практичних разлога функција трансформације кључа није идеална, па долази до појаве која се назива колизија, а настаје као резултат тога да трансформацијом два различита кључа добијамо исту вредност трансформације. Постоји више ефикасних начина решавања колизије, које ми овде нећемо проучавати. Резервисан меморијски простор за овако организоване датотеке не попуњава се потпуно, већ само до 80 %. Због колизије просечан број корака тражења једног записа није 1, већ је обично између 1 и 3, а зависи од попуњености меморијског простора и од функције трансформације.
Ланчана организација
Сваки запис датотеке са ланчаном организацијом садржи један (или два) додатна податка који се називају показивачи или указатељи (видети сл. 4.7).
85
То су адресе следећег (и евентуално претходног) записа који се могу налазити било где у резервисаном меморијском простору за ту датотеку. Записима датотеке може се приступати само секвенцијално, преко показивача.
4.4. Типови података У математици је често потребно разликовати бројне вредности са којима се ради. Тако се посебно проучавају и користе природни бројеви, цели бројеви, реални бројеви, комплексни бројеви, итд. Слично овоме, у рачунарској техници разликујемо више класа објеката које се називају типови података, а који се користе у програмским језицима. Сваки тип података карактерише: 1) скуп елемената (скуп вредности које могу узимати константе и променљиве), 2) скуп операција које се могу извршавати над тим елементима, 3) начин представљања у меморији рачунара. За разлику од бројева у математици, типови података имају низ специфичности. Тако нпр. разноврсност типова података је већа, тип података може бити сложен и садржати више различитих компонената, итд., о чему ће бити говора при разматрању различитих типова података мало касније. Ако се неки тип података не може разложити на простије компоненте он се назива елементарни или скаларни тип података. Ако се неки тип података може разложити на простије компоненте он се назива сложени или структурирани (структурни) тип података. У сваком програмском језику одређени број типова података може се директно користити. Ови типови су унапред предвиђени у том програмском језику па се зато називају стандардни типови података. Они могу бити како елементарни тако и структурирани типови. Осим тога, у неким програмским језицима, нпр. паскалу, ади, модули2 и другим, сам програмер може дефинисати своје посебне, нове типове података. У већини постојећих програмских језика могу се као стандардни најчешће користити неки од следећих скаларних типова података:
INTEGER - цели бројеви
86
То је тип података чији елементи припадају једном интервалу целих бројева који обухвата позитивне и негативне бројеве. Опсег ових бројева зависи од броја бинарних позиција за њихово представљање.
REAL (FLOAT) - реални бројеви
Овим типом података представља се у рачунару један коначан подскуп реалних бројева. Опсег бројева који се могу користити зависи од броја бинарних позиција за њихово представљање и, за разлику од скупа реалних бројева у математици, овде су вредности коначне и имају одређени корак промене.
DOUBLE PRECISION - реални бројеви двоструке прецизности
Овим типом података представљају се у рачунару реални бројеви двоструке прецизности.
LOGICAL (BOOLEAN) - логичке вредности
Подаци типа logical или Boolean могу имати само две различите вредности које се користе у Буловој алгебри и математичкој логици. Ове се вредности најчешће означавају енглеским речима true (истина) и false (неистина, лаж). CHARACTER - знаковни (алфанумерички) подаци
Подаци типа character као вредност могу узимати било које низове знакова дефинисане неким стандардним бинарним кодом. У општем случају ови подаци називају се знаковни, алфанумерички или текстуални подаци. Поред коришћења у различитим документима ови подаци служе и за комуницирање корисника са рачунаром преко улазних и излазих уређаја. Сви горе размотрени стандардни типови података припадају простим типовима. Поред њих, у програмским језицима се могу користити и неки структурирани (сложени) типови података.
87
Структурирани типови могу бити статички и динамички. Код статичких типова података структура и њена максимална величина су фиксни и задају се на почетку програма. За њих се увек резервише фиксно подручје меморије које увек мора бити једнако или веће од броја података који се тренутно обрађују. Код динамичких типова података структура је фиксна а динамички је изменљив укупан број елемената података. Постоје динамички типови података код којих је могуће динамички мењати и саму структуру, као што су листе (листне структуре) и стабла. У програмскиј језицима најчешће се користе следећи структурирани (сложени) типови података:
COMPLEX - комплексни бројеви
Комплексни број у програмским језицима представља стандардни тип података чији је сваки елемент уређени пар (X, Y) из скупа реалних бројева, где је X реални, а Y имагинарни део комплексног броја. Код комплексних променљивих подразумева се да се оне означавају једним симболом и да се реални и имагинарни део могу добити помоћу специјалних операција или функција за рад са комплексним бројевима.
A R R A Y - п о љ е ( н и з)
Поље или низ представља структурни тип података састављен од фиксног броја елемената истог основног типа, због чега се каже да је то хомогени тип података. Поље се организује као вектор (једнодимензионални низ), матрица (дводимензионални низ) или структура са више димензија. Код вектора елементима се приступа на основу њиховог редног броја (сл. 4.4а), код матрица помоћу уређеног пара бројева (сл. 4.4б), а код n-димензионалних низова помоћу уређених n-торки целих бројева. Број елемената поља не може се мењати при извршењу програма због чега је поље статички тип података.
SET - скуповни тип података
Скуповни тип (тип сет) јесте скуп свих подскупова основног (базног) скупа, укључујући и празан скуп (то је тзв. партитивни скуп основног скупа). Ако
88
основни тип на коме се гради скуповни тип има н елемената, број подскупова који улазе у скуп једнак је 2n. Тако нпр. ако је основни скуп {a,b,c}, скуп свих његових подскупова је { { }, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c} }. Интерно представљање елемената партитивног скупа постиже се низом од н битова, код којих и-ти бит одговара i-том елементу основног скупа и при томе вредност 1 означава присуство а 0 одсуство неког елемента. Нпр. за скуп ша,б,цћ користи се низ од три бита, и вредност 101 означава подскуп {a,c} (празан скуп означава се низом 000). У раду са скуповним типом података користе се операције: унија, пресек и диференција (разлика) скупова. Поред тога могу се користити и релациони оператори (оператори поређења): једнакост, неједнакост, подскуп, надскуп и припадност елемената скупу. A(1)
A(2)
A(3)
...
A(n)
а) Једнодимензионално поље( низ ) V(1,1)
V(1,2)
V(1,3)
V(2,1)
V(2,2)
V(2,3)
V(m,1)
V(m,2)
V(m,3)
...
...
...
... ... ... ...
V(1,n) V(2,n)
...
V(m,n)
б) Дводимензионално поље (низ) Слика 4.4 Означавање елемената поља ( низова)
STRING - низ (ниска) знакова
Тип string или character_string представља статички или динамички структурирани тип података у коме се сваки знак у низу третира као саставна компонента низа. Знаци у низу су нумерисани слева удесно од 1 до максималног броја знакова у низу. Редни број знака назива се индекс знака. Помоћу индекса може се издвојити посебно сваки знак или подниз који је одређен опсегом индекса дефинисаним ознаком: (почетни_знак, крајњи_знак). Дужина низа одређује се посебном функцијом len(име_низа). Осим издвајања поднизова честа операција је и надовезивање (спајање) више низова.
89
У неким програмским језицима као посебан структурирани тип података може се користити тип bit_string - низ битова, чије су компоненте знаци "0" и "1". Рад са низовима битова исти је као и рад са низовима знакова.
RECORD (STRUCTURE) - запис (слог)
Запис или слог (енг. record) или структура (енг. structure) је структурирани тип података који се састоји од ограниченог броја логички повезаних компонената - поља записа које могу припадати различитим типовима (овде је термином поље означен део записа а не вектор или матрица као код типа array). Запис обично садржи податке који се односе на одређени објект посматрања. Запис је дефинисан како поделом на поља тако и детаљним описом типа сваког поља. При томе нека поља могу имати сложену структуру и чак сама представљати записе (то су тзв. "групна поља"). Запис представља структуру код које је могућ директан приступ запису у целини или било ком пољу записа. Записи се могу предавати као параметри при обраћању потпрограмима. Могу се такође користити и као компоненте других структурираних типова, нпр. вектора, матрица или датотека.
FILE - датотека
Датотека (енг. file) је динамичка меморијска структура која представља уређени скуп елемената (компонената) истог основног типа. Основни тип може у принципу бити произвољан, али је у пракси то редовно запис, тј. структура типа record. Датотека може да буде ускладиштена на било каквом меморијском медијуму (оперативна меморија, дискови, траке и др. ) али за праксу је од превасходног интереса пре свега меморисање датотека на спољним меморијским медијумима. Како смо већ рекли раније, начин приступа записима датотеке дефинише различите организације датотека.
90
4.5. Структуре података Податке за обраду потребно је претходно на одређени начин повезати и организовати у погодном облику за рад. Зато се као прво за неку примену дефинишу групе података које ће се третирати при обради као одређена целина, и које ћемо надаље називати елементима података. Елементи података представљају јединице података са којима се врши обрада, а у општем случају могу садржавати већи број разнородних или истородних података или структура података. Скуп елемената података са дефинисаним везама међу њима назива се структура података. Каже се такође, да је задата организација података, јер су дефинисане компоненте (елементи) података и везе међу њима. Зависно од веза које постоје између елемената података, све структуре података могу се поделити у две групе: 1) линеарне структуре података, 2) нелинеарне структуре података.
Графови
Граф представља апстрактни математички објект који се користи за опис и представљање структура података (видети сл. 4.8б). У пракси се зависно од потреба одређене примене користе различити начини представљања графа, пре свега његова геометријска и његова матрична репрезентација. Граф G дефинише се као уређени пар G = (X, R), где је X коначан скуп елемената, а R је бинарна релација у том скупу. Геометријску репрезентацију графа формирамо на следећи начин. Елементе скупа X = {x1, x2, . . . ,xn} представљамо међусобно различитим тачкама у равни (или простору) које називамо чворовима графа. Ако пар (xi , xj) ∈ R тачку која представља чвор xi спајамо линијом са тачком која представља чвор xj. Ова се линија оријентише на цртежу стрелицом у смеру од xi ка xj и назива се оријентисана грана графа. Чвор xi назива се полазни или исходишни чвор гране, а чвор xj је улазни или крајњи чвор гране. За чвор xi оријентисана грана је излазна грана а за чвор xj она је улазна грана. Ако у дефиницији гране графа не треба узимати у обзир редослед размештаја њених крајева тада кажемо да је то неоријентисана грана. Ако су гране графа оријентисане граф се назива оријентисани граф, ако гране нису оријентисане граф се назива неоријентисани граф.
91
Пут у графу од чвора xi до чвора xj , у ознаци p(xi ,xj) је низ чворова (y0, y1, … , yn), n ≥ 0, такав да: 1) xi = y0 , xj = yn, 2) yi-1 ≠ yi, за i = 1,2,. . . , n , 3) (yi-1, yi) ∈ Р . Ако чворовима xi и xj у графу одговара пут p(xi, xj) дужине 1, онда се xi назива директним претходником xj, а xj директним следбеником xi . Два чвора називају се суседни чворови ако постоји грана која их повезује. Улазним степеном чвора назива се број улазних грана у чвор, а излазним степеном чвора назива се број излазних грана из чвора.
Линеарне структуре података
Ако је сваки елемент података, сем два који се називају почетни и крајњи, у релацији (вези) са само два друга елемента података, који се називају (директни) следбеник и (директни) претходник, кажемо да је то линеарна структура података. Почетни елемент неке линеарне структуре нема свог претходника, а крајњи елемент нема следбеника, док сваки други елемент може имати само једног директног претходника и само једног директног следбеника. Напоменимо да овако дефинисана релација представља релацију парцијалне уређености у математичком смислу. Овде можемо говорити о сукцесивним елементима података. Може се такође показати, да је за задавање линеарне структуре довољно задати само следбенике, тј. по једну везу између елемената података. Линеарне структуре података се деле на ацикличне (отворене линеарне листе, ланце) и цикличне (затворене линеарне листе, прстенове), када су почетни и крајњи елемент повезани. У пракси се најчешће користе следеће линеарне структуре података: – поље (низ), – таблица (табела), – стек (магацинска меморија, магацин), – ред (ред чекања), – ланчана листа (спрегнута листа, линеарна листа).
92
П о љ е ( н и з)
Поље или низ је хомогена структура података, тј. структура података састављена од елемената истог типа којима се приступа на основу њиховог редног броја. Поље се може организовати и као вишедимензионално, у ком случају се елементима приступа на основу уређених n-торки. Може се реализовати помоћу типа података array (сл 4.4), који је претходно описан у одељку 4.4, где су дате и остале карактеристике поља.
Таблица (табела)
Таблица или табела представља низ сукцесивних елемената података од којих сваки има два дела: 1) кључ (аргумент), 2) податак (информациони део, фунционални део). Таблица као структура података уведена је из математике, где се често користи за задавање функционалних зависности, на пример, логаритамске таблице, таблице тригонометријских функција и сл. Међутим, у рачунарској техници таблица се често користи и за задавање функционалних зависности које се не могу изразити аналитички, на пример, таблица са бројем становника у појединим градовима, таблица адреса додељених симболичким именима итд. Структура таблице приказана је на сл. 4.5. Кључ_1
Податак_1
Кључ_2 Кључ_3
Податак_2 Податак_3 ... ... Податак_n-1 Податак_n
. . .
... Кључ_n-1 Кључ_n
Слика 4.5 Структура таблице
Стек (магацинска меморија)
Стек, магацин или магацинска меморија представља линеарну структуру података код које се упис и читање елемената података врши по правилу "последњи уписан - први прочитан" (енг. LIFO - Last In First Out) (сл. 4.6а). По
93
овом принципу слажу се корпе у самоуслугама, послужавници у експрес ресторанима или меци у шаржеру (магацину) аутомата, одакле је и узет термин магацин. Место где се врши упис или читање елемената података назива се врх стека.
Упис
Читање
Упис Врх стека
а) Стек
б) Ред
Читање
Слика 4.6 Стек и ред
Ред (ред чекања)
Ред је линеарна структура података код које се приступ елементима података (упис и читање) врши по правилу "први уписан - први прочитан" (енг. FIFO - First In First Out) (сл. 4.6б). Ово је принцип који се среће при чекању у реду за опслуживање, а у рачунарској техници често постоји потреба да се опслуживање захтева баш овако организује. Ланчана (линеарна) листа
То је линеарна динамичка структура података чији су елементи повезани помоћу показивача (указатеља). Овде поред податка (информационог дела) сваки елемент података садржи адресу почетка следећег елемента и ова адреса се назива показивач (сл. 4.7). Последњи елемент листе на место показивача садржи посебан знак ø за крај листе. Основна одлика ланчаних листи је релативно прост начин уметања новог елемента или избацивања (брисања) постојећег елемената и он се своди на измену показивача.
94
p1
El_1
El_2
p2
...
El_n
φ
Слика 4.7 Ланчана ( спрегнута) листа
Нелинеарне структуре података
Ако су везе између елемената података у некој структури података произвољне, тада се структура назива нелинеарна структура података. Овде у општем случају не постоје никаква посебна ограничења на број и смер веза (релација) између елемената података. У пракси се најчешће користе следеће нелинеарне структуре података: – стабло, – мрежа.
E2
El_0 E1 El_2
El_1
El_11
E3
El_12
El_21
а) Бинарно стабло
E4 El_22
E5 E7 б) Мрежа
E6
Слика 4.8 Нелинеарне структуре података
Стабло
Стабло представља хијерархију елемената који се називају чворови. На највишем, нултом нивоу хијерархије, постоји само један чвор - корен стабла. Сваки чвор стабла, осим корена, повезан је са једним чвором вишег нивоа који се назива полазни или исходишни чвор за дати чвор. Ниједан елемент нема више од једног полазног елемента. Сваки елемент може бити повезан са
95
једним или са више елемената следећег нижег нивоа. Овакви елементи зову се генерисани елементи или (директни) следбеници. То значи да у стаблу сваки чвор може имати највише једног директног претходника и до к директних следбеника, где је 0 ≤ k ≤ n-1, а n је број елемената стабла. Елементи који немају следбенике називају се листови или крајњи елементи стабла. Стабло је нелинеарна структура која се може описати и на следећи начин:
1) постоји један полазни елемент који се назива корен стабла, и коме се додељује највиши ниво означен бројем 0, 2) порен показује на скуп нових елемената који припадају нивоу 1, 3) елементи нивоа 1 показују на нове елементе нивоа 2, итд. 4) елементи последњег нивоа не указују на нове елементе и они се називају листови стабла или крајњи елементи стабла. Једна од основних карактеристика стабла је одсуство петљи (затворених путева) у њему, као и постојање јединственог пута између свака два чвора (елемента) стабла. Пример структуре облика стабла је родослов, односно генеалошко стабло. У пракси се најчешће користе бинарна стабла (сл. 4.8а). То су стабла у којима сваки елемент (сем крајњих елемената) указује на највише два нова елемента следећег нижег нивоа. Ако сваки елемент стабла указује на тачно два нова елемента стабло се назива потпуно бинарно стабло, иначе је то непотпуно бинарно стабло. Може се доказати да за свако стабло постоји једнозначно бинарно стабло.
Мрежа
Ако генерисани елемент има више претходника тада се структура података не може описати као хијерархијска структура или као стабло, већ помоћу тзв. мрежне структуре или мреже (сл. 4.8б). Сваки елемент у мрежној структури може бити повезан са било којим другим елементом. Структура података се сматра мрежом ако постоји бар један чвор који има више од једног директног претходника. У мрежној структури података сваки чвор може имати највише n-1 директних претходника и највише n-1 директних
96
следбеника, где је n број елемената мреже. Мрежне структуре података су често цикличне структуре.
Статичке и динамичке структуре података
Као и код типова података, зависно од тога да ли се при раду са неком структуром података укупан број елемената у структури може мењати или не, разликујемо статичке и динамичке структуре података. У статичким структурама података укупан број елемената података које може имати структура не може се мењати. Структура података назива се динамичка структура података ако се укупан број елемената података које може имати структура може мењати при раду са том структуром. Типичан пример статичких структура су поља и таблице (мада за таблице постоји могућност да се организују и као динамичке структуре). Примере динамичких структура чине стек, ред и ланчана листа.
4.6. Меморијске репрезентације структура података Структуре података са становишта реализације деле се у две групе: 1) логичке структуре података 2) физичке структуре података. Логичком структуром података дефинише се сама структура, тј. скуп елемената података и везе (релације) међу елементима података. Физичком структуром података назива се конкретна меморијска реализација неке логичке структуре података у оперативној или на спољној меморији рачунара. Зато се често за физичке структуре користи и термин меморијска репрезентација структура података. Да би смо могли описати меморијске репрезентације структура података потребно је да се кратко упознамо са структуром оперативне меморије и структуром меморије на спољним медијумима.
97
Структура оперативне меморије
Основни елемент оперативне меморије представља меморијска локација (меморијско место, меморијска ћелија), или кратко локација. То је група бистабилних елемената која се при приступу меморији (читању или упису) третира као недељива целина (сл. 4.9а). Ради једнозначне идентификације меморијских локација свакој од њих се додељује посебна ознака која се назива адреса меморијске локације, меморијска адреса, или кратко адреса. Адреса представља цео позитиван број из интервала 0 ÷ 2n-1, где је n дужина адресе, и њоме се може адресирати укупно 2n локација (сл. 4.9в). У самом рачунару адресе се представљају у бинарном облику. Садржај сваке меморијске локације представља бинарни низ који се назива меморијска реч или машинска реч. Сваки елемент машинске речи назива се бит (скраћеница од енглеских речи бинарy дигит - бинарна цифра), и означава један од два знака "0" или "1" бинарне азбуке. Треба разликовати адресу неке меморијске локације од њеног садржаја. Због тога се уводи следеће означавање адреса и локација: ако је ADR адреса локације садржај те локације означава се са (ADR). На сл. 4.9б приказан је садржај локације са адресом 0011000101000111 (BIN) који износи 0000010000101101 (BIN). У децималном облику садржај износи 1069 а адреса 12615, тј. (12615) = 1069.
m-1 m-2
...
1
0
Адреса 0 1 2
а) Меморијска локација
3
0011000101000111 0000010000101101 Адреса
Садржај
б) Адреса и садржај меморијске локације
Меморијска локација
...
...
n
2 -2 n
2 -1 в) Организација меморије
Слика 4.9 Структура оперативне меморије
За опис дужина меморијских речи или било каквих бинарних низова користи се јединица која се назива бајт (или октет). Бајт у општем случају представља било коју фиксну, унапред усвојену дужину бинарног низа, али се у пракси скоро искључиво данас користи дужина од осам битова.
98
Структура спољне меморије
О структури спољне меморије биће речи касније, а овде само напомињемо да се основна јединица којој се приступа на спољној меморији назива сектор код магнетних дискова и дискета, а блок код магнетних трака. Сектор и блок предстаљају групу узастопно записаних битова на меморијском медијуму са којом се при читању или упису ради као са једном целином. За представљање логичких структура података користе се најчешће две основне меморијске репрезентације (сл. 4.10): – сукцесивно (секвенцијално) смештање – ланчано смештање. Код сукцесивног (секвенцијалног) смештања или сукцесивне репрезентације елементи података смештају се у локације са сукцесивним адресама, при чему сваки елемент података може заузимати део локације, једну локацију, или више локација са сукцесивним адресама. На исти начин се поступа и на спољној меморији где се користе сектори или блокови.
Ел_1
Ел_1
Ел_2
Ел_3
Ел_3
...
...
...
φ
Ел_2
Елl_n а) Сукцесивно смештање
Ел_n
б) Ланчано смештање
Слика 4.10 Меморијске репрезентације структура података
Код ланчаног смештања сваком елементу података додаје се посебан податак - показивач или указатељ, који представља адресу и указује на почетак следећег елемента података. У овом случају суседни елементи података не морају бити у сукцесивним локацијама. Међутим, сваки елемент података
99
смешта се само у сукцесивним локацијама. Последњи елемент података на место показивача садржи посебан контролни знак ø који означава последњи елемент ланца. Овај начин смештања могућ је и у оперативној меморији и на диску (нпр. код датотека са ланчаном организацијом).
100
5. НОСИОЦИ УЛАЗНИХ И ИЗЛАЗНИХ ПОДАТАКА
5.1. Меморијски медијуми За обраду података на рачунару тј. за њихово уношење у рачунар или излаз из рачунара, као и за пренос на даљину, подаци се памте (региструју, складиште) на посебним материјалним носиоцима - (меморијским) медијумима или носиоцима података. Меморијски медијум представља материјал, или конфигурацију начињену од њега, чија се нека променљива физичка величина користи за представљање (регистровање) података. Примери медијума су: магнетне траке, дискете, магнетни дискови, папирне траке, оптички дискови, папир који се користи за излаз на штампачу итд. У свим меморијским системима који се данас користе (сем холографских система) на меморијском медијуму се памти (складишти) енергија у неким дискретним количинама којима се представљају бинарне вредности "0" и "1", као што су нпр. магнетни момент, струја, наелектрисање, проводни пут и сл. Да би се неки медијум могао користити за памћење података, треба да поседује: а) два стабилна енергетска стања одвојена високом енергетском баријером, б) могућност преласка из једног у друго стање применом спољне енергије неограничени број пута, в) могућност откривања (установљавања) та два енергетска стања помоћу спољњег извора енергије, г) губитке енергије при упису због поузданог памћења (складиштења). У Таблици 5.1 наведени су највише коришћени физички феномени који задовољавају горња четири захтева а) - г) за памћење података.
100
Сви носиоци података се могу сврстати у три групе: – носиоци улазних података – носиоци излазних података, – носиоци улазних и излазних података. Осим тога, постоји више различитих начина и уређаја за тзв. непосредно уношење података без њихове претходне припреме на посебним посредним носиоцима. Таблица 5.1 – Примери физичких феномена који се користе за складиштење у различитим меморијским системима Параметар који памти енергију
Врста меморијских система
Магнетни момент
Магнетна трака, магнетни диск, магнетна језгра, танак магнетни филм, магнетни мехури
Наелектрисање (количина електри- Фероелектрицитет, FET меморије, елементи цитета, набој) или вектор електрич- спрегнути наелектрисањем, MNOS, површински таласи, катодни екран (CRT) не индукције Кружна струја
Бистабилна кола, криотрон
Физичка структура
Бушена трака, бушена картица, оптички диск
Напомена: Вектор електричне индукције представља векторску величну чија је дивергенција једнака густини запреминског наелектрисања; MNOS - структура металанитрид-полупроводник; FET - транзистор са ефектом поља; фероелектрични - термин који се примењује на диелектрик који има особине електричног хистерезиса
5.2. Носиоци улазних података Носиоци улазних податка служе за регистровање прикупљених података ради њиховог уноса у рачунар у циљу даље обраде. За прикупљање података за унос у рачунар користе се разноврсни носиоци података који се разликују по феномену који се користи, густини записа, трајности, брзини уноса у рачунар, итд. До сада су за припрему података за унос коришћени или се користе следећи медијуми:
101
Бушена картица
Бушена картица представља најстарији, некада масовно коришћени улазни медијум, а ређе и излазни медијум. У пракси је скоро искључиво коришћена 80-колонска картица, чије су димензије и квалитет били стандардизовани, засечена у левом горњем углу ради правилне оријентације. На картици је било могуће избушити укупно 80 алфанумеричких знакова (последица тога је 80 знакова у једном реду код екрана). Картица има 12 врста (редова) X,Y,0,...,9. Врсте 0 – 9 зову се нумеричке и чине нумерички део картице, а врсте X,Y,0 (при чему врста 0 има двојаку улогу) чине зонски део. Знаци су на картици представљани комбинацијом рупица, тј. посебним кодом који се назива картични код. Цифре 0-9 кодиране су са по једном рупицом у нумеричком делу, слова комбинацијом две рупице, једне у зонском и једне у нумеричном делу, а специјални знаци комбинацијом једне, две или три рупице. Картични код се може третирати као дванаестобитни бинарни код. Поред 80-колонске картице у знатно мањем обиму коришћена је и 96-колонска картица, као и неке друге врсте картица.
Бушена трака
Бушена трака представља папирну или танку алуминијумску траку на којој се по дужини разликују канали - замишљене линије постављене дуж траке. Знаци су на траци представљани тако што је у једној попречној позицији бушен један бинарно кодиран знак. Посебан канал садржи водеће рупице за механизам који помера траку (сл. 5.1). У пракси су коришћене 5-каналне и 8-каналне бушене траке. На 5-битним тракама коришћен је петобитни бинарни код CCITT Алфабет No. 1, а на осмоканалним код ISO 7 (ASCII, CCITT АAlfabet No. 2). Осим ових коришћени су и други бинарни кодови за папирну траку.
Документи читљиви за рачунар
Код масовних обрада, где је обим података значајан, јавља се проблем припреме (обухватања) података на одговарајућим носиоцима. Због тога су креирани обрасци (формулари) који могу служити и као оригинални докумен-
102
ти и истовремено као носици улазних података са којих се уношење може вршити помоћу посебних уређаја за аутоматско читање података. Зато говоримо о машински читљивим документима, који се сврставају у следеће групе: а) Обрасци са маркирањем; б) Обрасци са магнетским писмом; в) Обрасци са оптичким писмом.
Канал 1 Канал 2 Канал 3 Водеће рупице Канал 4 Канал 5 Канал 6 Канал 7 Канал 8
Кодирани знаци
Смер кретања траке
Слика 5.1 Бушена папирна трака
а) Обрасци са маркирањем То су посебни, унапред припремљени обрасци, на којима су предвиђена тачно одређена места за маркирање (посебно обележавање), нпр. пуне цртице или сл. Маркирана места могу се помоћу посебног оптичког уређаја прочитати, при чему обично свако маркирање одговара одређеној вредности или опсегу вредности неке величине. Са маркираних образаца подаци се могу или директно учитавати у рачунар или се на посебним уређајима за читање врши прво припрема података на магнетним тракама или дисковима (обично у тзв. аутономном или off-line режиму), који се затим могу великом брзином уносити у рачунар директно са тих медијума.
б) Обрасци са магнентим писмом За исписивање знакова користи се мастило или специјална боја у којима има магнетног материјала (оксида гвожђа). Величина и облик знакова су нормирани а читају се магнетним путем. У пракси се данас највише срећу два магнетна писма: E-13B, развијено у САД, и CMC-7 (CMC - Code for Magnetic Characters) - код за магнетне знакове) које се прво појавило у Европи. И у једном и у другом случају у почетку је магнетно писмо имало по десет знакова за
103
цифре и четири или пет посебних знакова. Касније су оба писма усавршена тако да су укључена и сва слова. Обрасци са магнетним писмом користе се најчешће на документима са ознакама вредности који због више прелазака из руке у руку могу да се запрљају. Тако се велики број докумената у платном промету САД исписује магнетним писмом.
в) Обрасци са оптичким писмом Ако резултате електронске обраде треба исписати на носиоце са којих је поново потребно прочитати записане резултате, употребљавају се посебно стилизована писма која се могу оптички читати. Од оптичких писама најпознатија су OCR-A и OCR-B (OCR - Optical Character Recognition – оптично препознавање знакова). Оптичка писма најчешће се користе у финансијским институцијама, поштама, комуналним организацијама и др.
Пругасти код
Пругасти код (линијски код, енгл. bar code) представља оптички читљив код намењен за означавање (шифрирање) производа. Састоји се од дебљих и ужих линија и одговарајућих размака између њих, помоћу којих се кодирају децималне цифре. У пракси се данас највише користи међународни систем означавања производа EAN (раније значење European Article Number - Европски број артикла) у две верзије: EAN-13 тринаестицифрени број (код) производа, и скраћена верзија EAN-8, и јединствени амерички систем шифрирања производа UPC (UPC – Universal Product Code – универзални код производа) са верзијaмa UPC-A дванаестоцифреног кода и UPC-D која може имати од 14 до 32 цифре. Користи се такође и скраћена верзија UPC-E кода UPC-A са шест цифара, помоћу којих се после реконструкције добијају свих дванаест цифара.
104
5.3. Непосредни унос података Постоји више начина за непосредно уношење података у рачунар без коришћења посебних посредних носилаца. У већини случајева за унос се користе посебни уређаји, а најчешћи су то следећи: – тастатура, – екран са додиром, – светлосна оловка, – миш, – палица (координатна палица, џојстик), – графичка табла (дигитализатор), – говорни улаз, – телефонске линије (даљински улаз), – остало (претварачи, сензори и др.).
5.4. Носиоци излазних података То су медијуми који служе да на њима рачунар саопшти човеку - кориснику резултате обраде. Према времену у коме задржавају податке деле се на: – тренутне, – привремене, – трајне. Тренутни носици података служе за акустички излаз путем звучних или говорних уређаја. Говорни сигнали генеришу се на основу ди скретних података запамћених у меморији (то је тзв. синтеза говора). Привремени носици података су (видео) екрани или друге врсте светлосних сигналних уређаја, нпр. сигналне сијалице.
105
Трајни носици података
Могу се поделити у три групе: а) папирни носиоци података, б) микрофилм, в) магнетни носиоци. Папирни носиоци подата могу бити: – обрасци (формулари), – извештаји припремљени на папиру, – оптички читљиви документи, – бушене траке и картице. Микрофилм се јавља као: 1) ролна 2) микрофиш (микрофилмска картица). Микрофилм се користи за архивско чување докумената због заузимања врло малог простора, трајности и др. Постоје посебни микрофилмски уређаји који могу директно на основу података из меморије да припреме микрофишеве. То су тзв. COM уређаји (COM - Computer Output to MIcrofilm/Microfiche - рачунарски излаз на микрофилм/микрофиш).
5.5. Принцип магнетног записивања До сада највише коришћени феномен за меморијске системе је феромагнетизам. Феромегнетизам представља особину (својство) које настаје због тога што атоми неких материјала (тзв. магнетно тврдих материјала) показују спонтану намагнетисаност (магнетизацију) у одсуству спољашњег поља. Важна магнетна особина за примену у меморијским системима је хистереза материјала или тзв. BH петља (сл. 5.2а), где је B густина магнетног флукса, која представља ускладиштену (запамћену) величину, а H је сила магнетизације која је пропорционална уписној струји. Идеално, за примене у мемориј-
106
ским системима, материјал треба да има "правоуглу" BH петљу. Међутим, нема материјала са таквом идеалном петљом, али их има са врло блиском том облику. B
"1"
+Mr
-Mr
в) Битске ћелије
H M "0"
+Mr
а ) BN петља -Mr
x
s i
s Медијум t Основа
б) Магнетна глава
г ) Промена намагнетисаности и излазни сигнали
Слика 5.2 Принцип магентног записивања
Највише коришћени магнетни медијуми који служе за реализацију масовних меморија (спољних меморија) су: магнетни диск (заменљив или фиксан), пакет дискова, дискета и магнетна трака (укључујући и тзв. стример траке) Могу се навести најмање следећих пет разлога за широко коришћење магнетних медијума: 1) велика густина записивања података (и до 400 bit/mm) уз ниску цену, 2) релативно велика брзина уписа или читања података (просечно време приступа је обично 7 - 15 ms за диск), 3) дуготрајно памћење без захтева за додатном енергијом (10 година, а може бити и до 30 година), 4) велики број записивања или читања података на самом медијуму, 5) релативно велики капацитет меморисања (од 1 MB на дискети до неколико десетина GB на пакету дискова).
107
На сл. 5.2б приказана је геометрија уписне главе. Површина на медијуму која се магнетише и служи за упис једног бита података назива се битска ћелија или битски интервал. На сл. 5.2в приказане су битске ћелије а на сл. 5.2г прелази намагнетисања на једној стази (каналу) медијума. У принципу уписни претварач у било ком магнетном запису је уписна магнетна глава са ваздушним процепом приказана на сл. 5.2б. При магнетном записивању због процепа се формира магнетно поље чији се знатан део простире и на област испод главе. Меморијски медијум, било трака или диск, треба да буде лоциран на неком растојању х испод главе које одређује јачину магнетног поља примењеног на медијум. За читање је важна функција s(t) која је пропорционална са тим пољем јер одређује облик прочитаног сигнала. Упис података се врши задњом ивицом главе и он нам омогућава да поставимо поједине магнетне прелазе на различитим местима дуж медијума. Минимално растојање између тих прелаза представља максималну идеалну густину записивања. Ради интерпретације тих промена морају се користити различита растојања за представљање података а такође и различита тактна (синхронизациона) информација која се умеће између података како се то тражи за велику густину. Различите шеме кодирања могуће су за довођење у везу положаја таквих магнетних прелаза и запамћене информације и тактне (синхронизационе) информације када се она користи. Ми ћемо размотрити различите шеме кодирања од врло простих до врло сложених.
5.6. Масовне меморије Масовне или секундарне меморије су меморије великог капацитета (за неколико редова величине веће од оперативне или примарне меморије). За памћење података користи се магнетно тврди материјал, обично феритни прах дебљине око 0,1 mm који се наноси на носећу површину. Носећа површина може бити пластична трака, пластична картица, пластични диск (дискета) или метални (алуминијумски) диск. Упис и читање се осварује помоћу принципа тзв. пливајуће магнетне главе која је удаљена од медијума само неколико микрометара.
108
Магнетна трака
То је пластична трака ширине 12,7 mm (1/2 инча), дужине 700 - 750 метара. Има капацитет од 30 до 250 MB. Радна брзина кретања траке износи 1 - 2 m/s, а брзина премотавања 5 - 7 m/s. За траке се користе следеће стандардне густине записивања: 32 bit/mm (800 bpi - бита по инчу), 63 bita/mm (1600 bpi), и 246 bit/mm (6250 bpi). Траке имају 7 или 9 канала (стаза). На сл. 5.3а приказан је формат записивања података на траци. Континуални скуп података на траци назива се блок и он се чита или уписује само као недељива целина. Размак између блокова назива се међублочни размак (MBR), и он треба да омогући покретање и заустављање траке. Време покретања и заустављања износи 5 - 10 ms, а величина међублочног размака је 15 - 20 mm. Брзина преноса података износи од 300 KB/s до 1 MB/s.
MBR
Блок_1
MBR
Блок_2
MBR
а) Формат података на магентној траци Стаза
Сектор
б) Формат диска
в) Пакет дискова
Слика 5.3 Формати података на спољним медијумима
Магнетни диск
Користе се или појединачни дискови или пакети дискова. Могу бити фиксни или заменљиви. Заменљиви дискови имају капацитет до неколико десетина GB.
109
Средње време позиционирања комбинације глава износи 10 - 30 ms, а средње време ротационог кашњења око 10 ms. На сл.5.3б приказани су изглед диска и формат података на диску. Диск је подељен на стазе - концентричне кружне путање, цилиндре које чине све стазе са истим редним бројем, и секторе, делове стаза који се као целине читају или уписују на диск. Сектори се дефинишу поступком који се назива форматизовање на један од следећа два начина: а) софтверски (програмски), тзв. меко форматизовање, б) помоћу унапред унетих рупица, тзв. тврдо форматизовање.
Магнетни добош
То је метални цилиндар на чијој спољној површини је нанет магнетни материјал. Подељен је на стазе и секторе, при чему свака стаза има посебну главу за читање/упис. Две стазе су службене, на једној су дефинисани сектори а на другој тактни (синхронизациони) сигнали битских интервала. Раније су ови медијуми коришћени код већих рачунара, јер имају просечно време приступа које је краће од дискова, и које износи 2 - 10 ms.
Оптички диск
Оптички диск представља медијум у облику диска на коме су записани подаци у бинарном облику. За упис и читање се користи полупроводнички ласер и оптички систем који генерише светлосни сноп пречника око једног микрометара фокусиран на медијуму за приступање сваком биту података. При упису података снага млаза се бира тако је довољна да загревањем осветљене врло мале површине медијума (битске ћелије) промени повратно или неповратно његове оптичке карактеристике. При читању снага млаза је знатно мања тако да не изазива никакву промену на медијуму, светлост коју медијум одбија детектује се а њена јачина или поларизација се посматрају да би се утврдило да ли је записана вредност "0" или 1. Данас се од оптичких дискова највише користе CD ROM дискови (од енгл. CD ROM – Compact Disk Read-Only Memory – фиксна меморија на компакт диску) или компакт дискови чија је првобитна намена било записивање дигита-
110
лизованих звучних података а код рачунара служе за памћење фискних података који се могу само читати, као што су разне базе података, програми, телефонски именици, речници, енциклопедије и др. Посебно су погодни за памћење мултимедијалних дигитализованих информација: текста, звука и слике истовремено. Главни недостатак је немогућност уписивања нових података. Основне карактеристике записивања на оптичким дисковима су следеће. Величина диска је 120 мм, стазе су спиралне и има их око 20000, растојање између стаза је 1,6 микрометара. Површинска густина записивања је око 100 пута већа него код магнетних дискова (1010 bit/cm према 108 bit/cm). Линијска густина записа је 25000 bpi (984 bita/mm). Укупан капацитет диска је 550 MB. Диск се окреће са константном линеарном брзином тако да је густина записивања и дужина сектора иста, али је зато угаона брзина различита, за спољне стазе је око 200 o/min а за унутрашње око 500 o/min. Поред компакт дискова постоје оптички дискови који омогућавају и упис и читање података. То су тзв. магнетооптички дискови. За упис и читање података користи се магнетни медијум и ласерски сноп. Ласерским снопом се у битској ћелији постиже одређена висока температура која омогућава промену намагнетисаности под дејством магнетног поља. Читање записа се врши поларизованом светлошћу ласера са малим интензитетом зрачења. Проласком кроз медијум поларизација ротира у једном смеру под дејством позитивне намагнетисаности а у супротном под дејтством негативне. Стање поларизације пропуштене светлости одређује се анализатором и фотодетектором.
5.7. Кодови за магнетно записивање Кодови за магнетно записивање представљају методе за памћење података на магнетним медијумима. Избор кода зависи од многих фактора али се на крају увек своди на густину битова у функцији сложености процеса читања, па тиме и на цену, јер процес читања представља главни ограничавајући фактор густине записивања. При томе је начин кодирања један од многих параметара који утичу на могућност читања података у неком меморијском систему. Делови процеса читања који јако зависе од кодирања су пре свега захтеви за тактовањем (синхронизацијом) и поларитет сигнала генерисаних кодом. Поларитет сигнала је важан из два разлога:
111
а) он утиче на могућност тактовања, и б) он одређује да ли ће се записана "0" појавити као различита од "остављеног" неутралног дела медијума. Код разматрања тактовања кода важно је да ли је самогенеришући тактни импулс нераздвојив од самог кода или се при читању захтева посебан спољни тактни сигнал. Проблем је тај што при упису мора бити коришћен спољни тактни сигнал да би се битови уписали на жељеном растојању. Међутим, при великим густинама одступање (дрифт) у тактним колима може бити врло битно, доводећи до тога да се при читању не може тачно селектовати информација. То постаје критичније са повећањем густине, па је зато пожељно имати код који инхерентно (нераздвојно) обезбеђује за сваку битску ћелију нека средства за тактовање или селекцију прочитаног сигнала. То се може постићи укључивањем посебног тактног сигнала у битску ћелију, што утиче на густину уписа. Друга техника је детекција максимума (врха) излазног сигнала. За кодове који дају различите сигнале за сваку "1" и сваку "0", сам улазни сигнал се може користити заједно са детектором максимума за детекцију сигнала без спољњег активирања селекције.
R Z к од
Најпростији начин записивања је тзв. записивање са враћањем на нулу или RZ записивање (енгл. RZ – Return to Zero – враћање на нулу), сл. 5.4а. Медијум се пре записивања размагнетише, бит "0" се записује (памти) као – Mr а бит "1" као +Mr и сваком биту одговара дискретна намагнетисана област на медијуму - битска ћелија. Између сваког пара суседних битова намагнетисаност (магнетизација) се враћа на размагнетисано стање. Основни недостатак овог начина записивања је што ненамагнетисане области између битова захтевају значајни простор на медијуму чиме се смањује густина битова. За RZ код је очигледно да се за сваки запамћени бит добијају два излазна сигнала, тако да се "0" и "1" одлично разликују. Користећи произвољно поларитет за битове и индуковане излазне сигнале, "0" је представљена негативним импулсом за којим следи позитиван импулс, а за "1" је обрнуто – позитиван импулс иза кога следи негативан. Сувишан (додатни) импулс по свакој ћелији бита може се користити за активирање селекторског сигнала, и како је "1" различита од нуле, може се користити детекција максимума. На тај начин овај је код нераздвојно (инхерентно) самотактован. Такође је карактеристика сигнала "0" јасно различита од "празног" (неутралног) дела медијума, где нема
112
никаквог сигнала. Међутим, пре уписа медијум се мора довести ("обрисати") на неутралну намагнетисаност, обично високофреквентном струјом. Ова процедура је корисна јер смањује могућност појављивања лажних сметњи које су често озбиљан проблем. Главни недостатак овог кода је релативно ниска густина која је последица два прелаза намагнетисаности по свакој битској ћелији, као и постојање неутралне области између битова. 1 0 0
+ 0 -
1 1 0
а) Записивање враћањем на нулу (RZ) 1 0 0 1 1 0 + 0 в) Записивање без враћања на нулу (NRZ)
1 0 0 1 1 0 + 0 б) Записивање враћањем на предмагнетисање (RB) + 0 -
1 0 0
1 1 0
г) Записивање без враћања на нулу са инвертовањем1 (NRZI)
Слика 5.4 Магнетно записивање методама RZ, RB, NRZ i NRZI
R B к од
Уместо да се медијум пре уписа размагнетише он се намагнетише на вредност –Mr (предмагнетисање). Записивање "1" врши се намагнетисањем до +Mr, док за "0" материјал остаје намагнетисан на предмагнетисање -Mr. Овај начин записивања назива се записивање са враћањем на предмагнетисање или RB записивање (енгл. RB – Return to Bias– враћање на предмагнетисање), сл. 5.4б.
N R Z к од
Ако се у РЗ коду избаци неутрално растојање између битова добија се кодна шема са већом густином битова која је позната као записивање без враћања на нулу или NRZ записивање (енгл. NRZ – Non Return to Zero – без враћања на нулу), сл. 5.4в. Бит "0" се записује (памти) као –Mr а бит "1" као +Mr. У овом случају постоји промена намагнетисаности материјала само при прела-
113
зу у запамћеном низу битова од "0" на "1" или обратно. Осим тога, прелаз од "1" на "0" даје негативни излазни импулс а прелаз од "0" на "1" даје позитиван Тешкоће са овим методом кодирања је што се излазни сигнал генерише само при промени намагнетисања, тј. само када се запамћени низ битова мења између "0" и 1. Ако се нпр. низ битова састоји од једне "0" иза које следе десет "1" а затим све "0", генерисаће се само два излазна сигнала, један на почетку и један на крају групе од десет "1". Како се у рачунарима обично "1" представља као импулс а "0" као одсуство импулса (или негативан импулс), да би пренели групу од десет запамћених "1" у неки регистар биће нам потребна додатна кола за генерисање десет импулса. Поред проблема са спољним генерисањем тактног сигнала овај код је осетљив на грешке јер је могуће тзв. простирање грешке. Наиме, унета грешка при читању изазваће да сви наредни битови буду погрешни све док не наиђе следећи сигнал и буде правилно прочитан. Следећи проблем је што се неутрално стање медијума не може разликовати од запамћеног бита без прелаза. NRZI код
Недостатак самотактовања и простирање грешке у NRZ коду може се поправити незнатном изменом у шеми кодирања. Тешкоћа са NRZ кодирањем је та што се низ "0" и низ "1" не могу разликовати јер у оба случаја нема никаквог сигнала. Нова шема кодирања зове се записивање без враћања на нулу са инвертовањем јединице или NRZI записивање (енгл. NRZI – Non Return to Zero Inverted – без враћања на нулу са инвертовањем) и користи се у пракси за записивање података на магнетним тракама, сл. 5.4г. Овде се за све запамћене "1" генерише импулс а за све запамћене нуле одсуствују импулси. Овај код користи промену намагнетисаности од –Mr на +Mr или обратно сваки пут када се појави нова "1" у низу битова, али треба уочити да смер намагнетисаности не одређује да ли се ради о "0" или о "1". Због тога се за наизменичне "1" појављују позитивни и негативни импулси, дајући тако јасну разлику између записаних "0" и "1". Тиме је елиминисано простирање грешке, јер се грешка задржава само у биту у коме је настала, док је детекција следећих битова независна од претходних. Тако се је-дноструке грешке лако откривају у системима са више стаза коришћењем бита парности (или непарности). Предност тактовања NRZI над NRZ кодом је мање очигледно. За тактотовање ми смо требали да имамо бар један импулс за сваку битску ћелију. Ни-
114
један од ових кодова нема ту особину уграћену у саме битске ћелије. Међутим, NRZI обезбеђује импулс за сваку запамђену "1". Тако на меморијским системима са више стаза, као нпр. код магнетних трака, коришћење непарности дуж кода једног знака обезбеђује бар један импулс за сваки знак. Наравно и NRZI не може разликовати запамћене "0" од неутралног дела, због чега је потребан посебан начин распознавања почетка блока података. Оба ова кода, и NRZ и NRZI, дају већу густину записивања него RZ али оба садрже и одређена ограничења. Ако треба ићи ка већим густинама записивања проблем тактовања постаје озбиљно ограничење. Како се на диску код знака памти серијски дуж исте стазе не може се користити парност за тактовање, па је према томе потребан другачији код. Наиме, продужавајући са НРЗИ ка већим густинама чак и у системима са више стаза по знаку коришћење непарности за тактовање има озбиљна ограничења која су резултат искошења стаза. Како се густина повећава тако је неопходно обезбедити нека средства за самотактовање у свакој битској ћелији сваке стазе. Тако системи са тракама користе тзв. фазно кодирање које је описано ниже.
PE код
Код фазног кодирања или PE кода (енгл. PE – Phase Encoding – фазно кодирање), такође познатим као фазна модулација или PM код (енгл. PM – Phase Modulation – фазна модулација) (сл. 5.5а). Код уписа бита "0" намагнетисаност има у првој половини битског интервала позитиван смер а у другој половини битског интервала негативан смер. Код уписа бита "1" намагнетисаност има негативан смер у првој половини битског интервала а позитиван смер у другој половини битског интервала. Овде се при читању сигнал генерише за сваки бит на следећи начин: "1" је позитиван излазни импулс а "0" је негативан излазни импулс. То обезбеђује средства за сопствено тактовање коришћењем детекције максимума. Напоменимо да низ нула и јединица производи додатне прелазе намагнетисаности у битској ћелији и додатни импулс излазног сигнала. Према томе, битска ћелија треба да омогући два прелаза по биту, захтевајући тиме већу фреквенцију али ужи пропусни опсег него NRZI. Додатни импулс сигнала добијен само за неке битове захтева логику за детекцију да би се то третирало на одговарајући начин.
115
1 0 0 1 1 0 + 0 а) Записивање помоћу фазне модулације (PE)
1 0 0 1 1 0 + 0 б) Записивање помоћу фреквентне модулације (FM)
Слика 5.5 Магнетно записивање методама PEи FM
FM (DF) код
Један општи код који се користи код дискова (и дискета) познат је као записивање двоструком фреквенцијом или DF код (енгл. DF – Double Frequency – двострука фреквенција) или записивање фреквентном модулацијом или FM код (енгл. FM – Frequency Modulation – фреквентна модулација), где се памти додатни тактни импулс у свакој битској ћелији (сл. 5.5б). Наиме, ако желимо да користимо код типа NRZI у системима са једном стазом по знаку, мора се додати нека тактна информација свакој битској ћелији. Врло прост начин да се то оствари је додавање сигнала "1" на почетку сваке битске ћелије сваког NRZI бита, што уствари представља уметнути низ "1", тј. уграђене тактне сигнале у NRZI код. Тактни импулси активирају кола за селекцију обезбеђујући неку врсту "прозора" за битове података. Тако постоји окидање (активирање) за сваки бит и никакве грешке тактовања неће бити. Очигледно је да сада свака битска ћелија мора бити у могућности да има две промене намагнетисаности уместо једне, па отуда и име двострука фреквенција. То захтева да сва електронска кола и претварачи раде са већим учестаностима. Међутим, ширина проспусног опсега је нешто мања него за NRZI код и то донекле неутрализује недостатке због веће фреквенције. Радни код у комерцијалним системима је NRZI за магнетне траке мале густине, фазно кодирање за траке са већом густином и двострука фреквенција за дискове и дискете. Мећутим, коришћени су у разна времена и други кодови које ми нећемо разматрати. Осим тога усавршавају се постојећи и траже нови начини кодирања којима се усложњавају алгоритми кодирања и декодирања а повећава се густина записивања. Најпознатији кодови који се данас користе су још и следећи кодови: – MFM код, – GCR код, – RLL код.
116
MFM код
При записивању кодног низа који садржи само "1" битове DF и PM захтевају два пута више прелаза намагнетисаности од NRZI за исте запамћене податке. Ако растојање између прелаза захтева исту минималну дужину на медијуму, теоретски NRZI даје два пута већу густину од DF или PM. Међутим, густина је више ограничена тачношћу тактовања него дужином прелаза, па зато DF и PM дају нешто већу густину. Ипак, без обзира што обезбеђују потребну тактну информацију ови кодови имају скраћење у два пута мањем броју информационих битова у поређењу са NRZI кодом. Према томе, пожељне су алтернативне технике које обезбеђују тактну информацију без озбиљне редукције густине података. У системима чија је густина памћења ограничена међусобном интерференцијом симбола или тзв. претрпавањем (преклапањем, стешњавањем) битова (енгл. цроњдинг) растојање од центра до центра прелаза намагнетисаности мора имати неку минималну дужину X0. Због тога је пожељно имати алтернативне кодове који обезбеђују адекватну тактну информацију али омогућавају да се запамти више битова података уз одржавање минималног прелаза X0 (тј. више информација по једном циклусу пропусног опсега). У основи то се може остварити обезбеђењем тактних прелаза само када су они потребни и њиховим изостављањем када нису неопходни. Тако нпр. код FM кода тактни прелази за битске ћелије које садрже "1" нису неопходни, али су зато веома пожељни за битске ћелије које садрже сукцесивне "0". Битан недостатак FM кодирања је постојање тактног сигнала за сваки сигнал корисне информације. За отклањање овог недостатка користе се модификације MFM и M2FM. Да бисмо видели како се напред речено може остварити пођимо од сл. 5.6а која представља слику намагнетисаности за FM код. Нека је минимално растојање прелаза нека фиксна вредност X0. Обезбедимо сада тактне прелазе само између сукцесивних "0", чиме се омогућава изостављање свих прелаза на које је указано испод сл. 5.6а. Ако се ови прелази изоставе намагнетисаност у функцији X садржи идентичну информација али је минимално растојање између прелаза X0 сада два пута веће него раније, или 2X0. Очигледно је да сада можемо паковати исте битове у половини дужине медијума, што се види на сл. 5.6б, а још одржавати минимално растојање прелаза X0. Уствари, ми имамо сада дуплирану линеарну густину дуж медијума. Ово кодирање је познато као модификована фреквентна модулација или MFM кодирање
117
(енгл. MFM – Modified Frequency Modulation – модификована фреквентна модулација). Међутим, не можемо закључити да је сада укупна густина записивања удвостручена. Дозвољено померање максимума сигнала постаје критичније када се користи шема за детекцију максимума јер сада растојање прелаза не мора бити цео број X0, уствари оно овде може бити и 1.5X0, при чему селекторски импулс за податке мора бити са интервалом 0.5X0. Како растојање од 1.5X0 може садржати и "1" и "0", дозвољено померање максимума сигнала је смањено. То умањује укупан добитак густине на нешто мањи фактор од 2, али се још увек може добити значајно повећање од око 1,5 пута. Код записивања методом MFM тактни сигнали користе се само за одвајање нула које следе једна за другом, а код M2FM, у поређењу са MFM, у свакој серији нула одбацује се још сваки други тактни импулс.
+ 0 -
0 0 1 1 0 1 0
0
а) Непотребни тактни прелази код FM кода
+ 0 -
0 0 1 1 0 10 0
б) MFM са двоструком густином у односу на а)
Слика 5.6 Еволуција MFM кода од FM кода
GC R к о д
GCR код (енгл. GCR – Group Coded Recording – записивање групним кодирањем) или групни код нашао је примену код магнетних трака са густином записивања од 6250 бпи (246 bit/mm). Код овог кода избегнута је могућност губљења синхронизације при читању на тај начин што се свака група од четири бита кодира групом од пет битова, при чему се користе само оне кодне речи које немају више од две узастопне нуле и имају на почетку или на крају само по једну нулу. Затим се примењује стандардни NRZI начин записивања при чему се свака јединица описује променом намагнетисаности на средини битског интервала. При спајању две суседне групе не може бити више од три битска интервала без промене намагнетисаности: претходна јединица и две следеће узастопне нуле. При читању се одиграва инверзни процес конверзије 5 бита у 4 бита.
118
Таблица 5.2 – GCR код 0 0000
11001
4
0100
11101
8
1000
11010
C
1100
11110
1 0001
11011
5
0101
10101
9
1001
01001
D
1101
01101
2 0010
10010
6
0110
10110
A
1010
01010
E
1110
01110
3 0011
10011
7
0111
10111
B
1011
01011
F
1111
01111
RLL код
Чињеница да растојање између прелаза не мора бити целобројни умножак од X0 је значајно одступање од свих претходних кодова који захтевају цео број умножака за конфигурацију са максималном густином. Ако овај појам уопштимо тако да омогућимо да растојање између прелаза буде било који умножак од X0, добија се општи облик тзв. кода са ограниченом радном дужином или RLL кода (енгл. RLL – Run Length Limited – са ограниченом радном дужином). У практичним случајевима умножак варира од "1" (тј. од минимума X0) до неке горње границе. Основни концепт је следећи. Еволуција од DF на MFM добијена је изостављањем тактних прелаза на непотребним местима и њиховим задржавањем само између сукцесивних нула. Други поглед на ово, ближи тачки гледишта RLL, је разматрање да се тактна информација у MFM поставља на "1" само између сукцесивних нула. Ти уметнути (енг. интерлеавед) тактни битови и битови података појављују се на сл. 5.6б за случај двоструке густине. Може се видети да ако сада посматрамо тактне битове и битове података у коду постоје максимално три нуле а минимално једна нула између сваке две сукцесивне "1". То је суштина RLL кода. Наиме, разлика између прелаза података и прелаза тактова више не постоји већ постоји специфицирани (задати) максималан д и минималан к број нула з између две сукцесивне "1", означен као RLL(d,k), d ≤ z ≤ k. За MFM је d = 1 и k = 3, тј. MFM = RLL(1,3). Мада је минимално растојање прелаза још X0, селекторски импулс за податке мора бити са интервалом 0.5X0. На тај начин цена за већу густину су строжије толеранције на лоцирање прелаза у медијуму. У кодовима који су раније описани сваки бит датог низа података запамћен је директно као бит информације на медијуму потпуно независно од других
119
битова у подацима осим уметања тактних прелаза. У RLL кодовима та независност више не постоји. Долазећи низ података које треба записати на медијуму разбија се на групе од м битова по групи. Тих м битова се затим трансформише RLL кодом у нову секвенцу од н битова која представља информацију запамћену на медијуму. Нова секвенца од н битова мора задовољавати услов d ≤ z ≤ k, тј. постоји максимални и минимални број нула z између сукцесивних "1" у запамћеним битовима. Минимални број обезбеђује минимално растојање прелаза X0 а максимални број обезбеђује импулсе довољно често да се одржи адекватна тактна синхронизација. Правило по коме се врши трансформација запамћено је као алгоритам у логичком делу система и мора се користити у инверзном поступку, тј. при читању података.
120
6 ЕЛЕМЕНТИ ПРЕКИДАЧКЕ АЛГЕБРЕ
6.1 Дискретне функције Пресликавање f: S → L назива се дискретна функција једне променљиве када су S и L коначни непразни скупови елемената. Дискретну функцију означаваћемо на уобичајени начин са f(x), при чему се x назива независно променљива (даље ћемо често користити само термин променљива) и она узима вредности у скупу S (област вредности променљиве, област дефинисаности функције, домен), док f(x) узима вредности у скупу L (област пресликавања, област вредности функције, кодомен). Напоменимо да постоји разлика у коришћењу термина дискретна функција у обради сигнала, где се под дискретном функцијом подразумева функција која је дискретна у времену, док се за горе дефинисане функције користи термин цифарска функција или дигитална функција. У многим практичним применама домен S се узима као Декартов производ n коначних скупова Si, тј. n
S = S1 × S2 × … × Sn = X Si . i =1
Дискретну функцију n независно променљивих одређену пресликавањем n
f : X Si → L , i =1
означаваћемо са f(X), где је X = (x1,x2,...,xn), или са f(x1,x2,...,xn), при чему свака променљива xi, (i = 1, 2,..., n), узима вредности из одговарајућег скупа Si. Напоменимо да је често погодно разматрати дискретну функцију облика 121
n
f : X Si → Lm , i =1
у којој је област пресликавања Декартов производ m-тог степена коначног скупа L. Ова функција назива се општа дискретна функција. У суштини општа дискретна функција представља систем дискретних функција. Дискретна функција назива се целобројна функција када скупове Si и L чине ненегативни цели бројеви, при чему пресликавање има облик: n
f : X { 0 ,1,... , mi − 1 } → { 0 ,1,... , m − 1 } , i =1
где су mi, (i = 1,2,...,n) и n бројеви елемената у скуповима Si и L, респективно. Могуће је успоставити узајамну једнозначну кореспонденцију између скупова Si и целих бројева š0, 1,..., mi-1}, i = 1, 2,...,n , као и између скупа L и целих бројева š0, 1, 2,...,m-1}. На тај начин се свака дискретна функција може разматрати као целобројна функција, али овај приступ није погодан за већину примена. Целобројна функција облика n
f : X { 0 ,1,... , mi − 1 } → { 0 ,1 } , i =1
назива се бинарна функција. Нека је Zm скуп целих бројева š0,1,...,m-1}. Псеудологичком функцијом назива се пресликавање f: š0,1}n → Zm. Напоменимо да псеудологичке функције представљају посебан случај тзв. псеудобулових функција дефинисаних као пресликавање f: š0,1}n → R , где је R поље реалних бројева. Међутим, ова разлика није од посебне важности, јер се свака псеудобулова функција може множењем одговарајућим коефицијентом трансформисати у псеудологичку функцију. Затим се функција са целобројним вредностима може трансформисати у функцију са ненегативним целобројним вредностима додавањем погодне позитивне вредности. Целобројна функција назива се логичка функција, вишезначна функција или поливалентна функција ако су скупови Si и L међусобно еквивалентни (исти). Према томе, логичка функција представља пресликавање
122
f : { 0 ,1,... , m − 1 } n → { 0 ,1,... , m − 1 } ,
где је m број елемената у скупу E = š0,1,...,m-1}. Логичка функција назива се прекидачка функција (понекад и Булова функција) ако скуп E садржи два елемента. Према томе прекидачка функција представља пресликавање f : { 0 ,1 } n → { 0 ,1 } ,
где је B = š0,1}. Логичке функције, а посебно прекидачке функције, могу се користити за формалну анализу и синтезу мрежа са дигиталним колима, тзв. прекидачких мрежа, које се касније детаљније разматрају. Логичка функција назива се Галоаовом функцијом (енг. Galois function) када је сваки од скупова L и Si Галоаово поље GF(pk). Према томе, Галоаова функција представља пресликавање f: šGF(pk)}n → GF(pk). Непрецизна (расплинута) логичка функција (енг. fuzzy function) је пресликавање облика: f: fn → I ,
где је I затворени интервал {0,1}.
Примери примене дискретних функција
Бинарне функције се користе код проучавања парцијално симетричних логичких функција, затим код проучавања прелазних процеса у прекидачким мрежама, и код више проблема у теорији графова. Широка класа проблема у операционим истраживањима, теорији графова и комбинаторици може се редуковати на следећи проблем: Наћи скуп свих тачака у š0,1}n у којима псеудо-логичка функција узима минималну или максималну вредност. Псеудо-логичке функције се могу користити и у неким проблемима који се јављају при синтези прекидачких и логичких мрежа. Многе области теорије кодирања, теорије линеарних секвенцијалних машина и теорије померачких регистара широко користе теорију Галоаових поља. Осим тога, врло је атрактивна и синтеза логичких и прекидачких мрежа 123
директно помоћу операција Галоаових поља, јер саме те операције поседују интересантне особине и пружају широке могућности представљања логичких и прекидачких функција. Посебну техничку примену имају прекидачке функције за синтезу мрежа савремених рачунара и других дигиталних уређаја. Ове примене биће надаље детаљно разматране.
6.2 Прекидачка алгебра У ранијим излагањима више пута је истицано да је најпогоднији начин за представљање података у рачунарима и другим дигиталним уређајима намењеним за управљање и аутоматизацију коришћење бинарног бројног система и дигиталних кола са два стања. Основу за изградњу модела којим се описују прекидачке мреже представља теорија Булових алгебри, помоћу којих се могу просто и тачно испитивати комбинационе прекидачке мреже. Свака Булова алгебра слична је са обичном алгебром реалних бројева, али има и неке битне разлике.
Аксиоме Булове алгебре
Булова алгебра се описује скупом правила или аксиома (постулата) помоћу којих су дефинисане операције над елементима те алгебре и особине тих операција. Булова алгебра представља коначан скуп елемената за који је дефинисана релација еквиваленције "=" и три операције (две бинарне и једна унарна): ИЛИ операција (дисјункција, логичка сума, која се обично означава знацима "∨" или "+"), И операција (конјункција, логички производ, која се обично означава знацима "∧" или "⋅", или се знак просто изоставља и подразумева се) и НЕ операција (негација, комплемент, која се означава цртицом изнад променљиве).
За све елементе Булове алгебре релација еквиваленције поседује следеће особине:
124
a = a (рефлексивност);
ако је a = b тада је и b = а (симетричност); ако је a = b и b = c тада је и a = c (транзитивност). Операције ИЛИ, И и НЕ Булове алгебре треба да задовољавају следеће аксиоме: 1) x ∨ y = y ∨ x;
x ∧ y = y ∧ x (комутативни закони),
2) (x ∨ y) ∨ з = x ∨ (y ∨ з);
(x ∧ y) ∧ z = x ∧ (y ∧ z) (асоцијативни закони),
3) x ∧ (y ∨ з) = (x ∧ y) ∨ (x ∧ z); x ∨ (y ∧ з) = (x ∨ y) ∧ (x ∨ z) (дистрибутивни закони), 4) Претпоставља се да Булова алгебра садржи два елемента 0 и 1 који задовољавају следеће аксиоме: 0 ∨ x = x; 1 ∧ x = x (јединични елементи). Треба напоменути да су овде 0 и 1 елементи Булове алгебре различити од бинарних цифара 0 и 1. Наиме, у аритметици су то знаци за цифре, тј. они су елементи алгебре бројева, док су овде елементи Булове алгебре. 5) Операција негације је унарна операција која задовољава аксиоме: x ∨ x = 1;
x ∧ x = 0 (закони негације)
Напоменимо да наведене више аксиоме нису противречне, али се може показати да оне нису независне. Нпр. аксиоме под редним бројем 2 могу се доказати помоћу осталих аксиома, али се оне често уносе у скуп аксиома из практичних разлога. Међутим, ми се овде нећемо бавити проблемом минималног скупа аксиома. Осим тога, Булова алгебра се може дефинисати и са другачијим скупом аксиома.
Теореме Булове алгебре
У Буловој алгебри се могу изводитити нове једнакости које се називају теореме ако се пође од аксиома, раније већ доказаних теорема и принципа супституције који гласи: ако су две величине једнаке тада се једна може заменити другом, тј. ако је x = y тада у било којој формули која садржи x, x се може заменити са y, при чему се добија еквивалентна формула. 125
Тако се коришћењем аксиома могу доказати следеће важне теореме у Буловој алгебри (приоритет операција је: прво НЕ, затим И, на крају ИЛИ): а) x = x (двострука негација, инволуција негације); б) x ∨ x = x;
x∧x=x
(идемпотентни закони);
в) 1 ∨ x = 1;
0∧x=0
(нулти елементи);
г) x ∧ y ∨ x ∧ y = x; (x ∨ y) ∧ (x ∨ y ) = x
(правила сажимања);
д) x ∨ x ∧ y = x;
x ∧ (x ∨ y) = x
(правила апсорпције);
е) x ∨ y = x ∧ y ;
x∧y = x ∨y
(Де Морганова правила).
Принцип дуалности у Буловој алгебри
Ако се упореде аксиоме Булове алгебре може се уочити да су оне груписане у парове. Свака аксиома једног пара може се добити из друге аксиоме тог истог пара ако се изврши узајамна замена операција ИЛИ и И, као и узајамна замена константи 0 и 1, док се симболи променљивих и симбол негације не мењају. Ова особина назива се дуалност. На тај начин, ако је доказана нека теорема Булове алгебре тада може бити доказана и дуална теорема помоћу дуалних аксиома. То значи да је довољно да се докаже само једна теорема, док друга аутоматски следује на основу принципа дуалности.
Прекидачка алгебра
Прекидачка алгебра или двоелементна Булова алгебра представља Булову алгебру дефинисану над скупом B од само два елемента које ћемо означавати знацима 0 и 1. Може се показати да ако се у прекидачкој алгебри операције ИЛИ, И и НЕ дефинишу на начин представљен у таблици 6.1 оне ће задовољити све аксиоме Булове алгебре. Прекидачка алгебра има посебну важност за практичне примене јер се користи за синтезу мрежа рачунара и других дигиталних урећаја. Због тога ћемо се надаље бавити само прекидачком алгебром.
126
Таблица 6.1 − Операције ИЛИ, И и НЕ у прекидачкој алгебри x
y
x∨y
x
y
x∧y
x
x
0
0
0
0
0
0
0
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
1
1
1
1
1
1
Прекидачке функције
Прекидачка функција од n независно променљивих представља пресликавање облика: f: {0,1}n → {0,1} , или
f: Bn → B , B ∈ {0,1} .
које означавамо на уобичајени начин са f(x1,x2,...,xn) или са f(X), где је X = (x1,x2,...,xn), xi ∈ B, (i = 1,2,...,n ) и f(X) ∈ B. Другачије се може рећи да се свака прекидачка функција представља коначним бројем променљивих x1, x2, ..., xn,при чему свака променљива и сама функција узимају вредности из скупа B. Уређена n-торка K = (k1,k2,...,kn) у којој независно променљиве (x1,x2,...,xn) имају посебне вредности из скупа B назива се вектор. Вектор се често пише упрошћено као k1k2...kn, при чему се k1, k2, ..., kn називају компоненте или координате вектора. Како свака компонента вектора може имати само две различите вредности, то је укупан број вектора за сваку прекидачку функцију n независно променљивих коначан и износи 2n. Прекидачка функција се може дефинисати и као Булов израз добијен помоћу прекидачких константи 0, 1 и прекидачких променњивих x1,x2,...,xn применом операција ИЛИ, И и НЕ. Рекурсивно се Булов израз дефинише на следећи начин: 1) 0, 1, x1, x2 ,..., xn су Булови изрази, 2) Ако су E1 и E2 Булови изрази тада су и
Е1 ∨ Е2, Е1 ∧ Е2 , E1 , E2 такође Булови изрази, 3) Сваки Булов израз може се конструисати само применом претходних правила коначан број пута. 127
Непотпуно дефинисане прекидачке функције
У пракси се често срећу прекидачке функције чије вредности нису дефинисане на неким векторима. Ове функције називају се непотпуно дефинисане или парцијалне прекидачке функције. Разлог за постојање ових функција је тај, што је природа коришћења функције таква да се неки вектори не могу никада појавити као вредности независно променљивих, односно ови се вектори никада не јављају на улазу уређаја чије функционисање описују. Непотпуно дефинисане прекидачке функције задају се истим средствима као и потпуно дефинисане функције, с тим да се сада за скуп вредности функције поред знакова 0 и 1 уводи још један знак којим се означавају недефинисане вредности, нпр. знак *. Ове функције омогућавају синтезу оптималних мрежа одређеним додефинисањем недефинисаних вредности, о чему ће бити говора касније.
6.3 Задавање прекидачких функција Како су прекидачке функције дефинисане на коначном скупу, један од могућих начина њиховог задавања је навођење вредности функције за сваку посебну вредност независно променљивих, тј. за сваки вектор. Одавде произилази више начина задавања прекидачких функција од којих ћемо поменути само неке.
Таблица истинитости
Таблица истинитости или комбинациона таблица представља таблицу која има 2n врста (редова) и две колоне. У сваку врсту уноси се један вектор, тј. једна комбинација посебних вредности независно променљивих, као и вредност прекидачке функције на том вектору. У таблица 6.2 дат је општи облик таблице истинитости и таблица истинитости за функције три променљиве.
128
Таблица 6.2 − Таблица истинитости x1x2 ... xn-1xn
f(x1, x2, ... , xn-1, xn)
x1
x2
x3
f(x1, x2, x3)
00...00
f(00...00)
0
0
0
0
00...01
f(00...01)
0
0
1
1
00...10
f(00...10)
0
1
0
1
...
...
0
1
1
0
...
...
1
0
0
0
...
...
1
0
1
1
11...10
f(11...10)
1
1
0
0
11...11
f(11...11)
1
1
1
0
а) Општи облик таблице истинитости
б) Пример таблице истинитости за функцију три променљиве
Коришћењем таблице истинитости може се доказати следећа теорема:
Теорема. Укупан број Fn прекидачких функција од n независно променљиn
вих износи Fn = 2 2 . Овај се израз добија на следећи начин. Већ смо рекли да таблица истинитости има укупно 2n улазних вектора. Како свака прекидачка функција може независно на сваком од тих вектора узимати само по две различите вредноn
сти то је Fn = 2 x 2 x ... x 2 (2n пута) = 2 2 . Таблица истинитости се такоће може користити за доказивање појединих идентитета у прекидачкој алгебри применом метода исцрпљивања или метода грубе силе који се састоји у провери идентитета за све могуће векторе тј. за све могуће посебне вредности независно променљивих.
Пример. Правила апсорпције доказују се методом исцрпљивања на начин приказаљн у таблици 6.3. Таблица 6.3 − Доказивање методом исцрпљивања x
y
x∧y
x ∨ (x ∧ y)
x
x
y
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
0
1
1
1
1
1
1
1
1
1
129
x∨ y
x ∧ (x ∨ y)
x
0
0
0
1
0
0
0
1
1
1
1
1
1
1
Често је погодно посебне вредности вектора независно променљивих означавати нумерички, његовим индексом k, који се добија када се компоненте (координате) вектора K = k1k2...kn интерпретирају као цифре бинарног броја. Број k се назива бинарни индекс вектора ако је изражен у бинарном облику или децимални индекс вектора ако је изражен у децималном облику. Вредност индекса у децималном систему израчунава се по формули: n
k = ∑ k i ⋅ 2 n −i . i =1
Прекидачка функција f дефинисана је ако је познат скуп индекса F(1) на којима она узима вредност 1 или скуп индекса F(0) на којима она узима вредност 0. Тако нпр. функција у таблици 6.2б има вредност 1 на скупу децималних индекса F(1) = š1,2,5}.
Вектор истинитости
Како се вектори посебних вредности независно променљивих у таблици истинитости најчешће наводе одређеним редом, обично према тзв. лексикографском уређењу, када су вектори уређени према растућим вредностима индекса, прекидачка функција је дефинисана и ако је задат само вектор вредности функције или вектор истинитости. Ако се вектор истинитости интерпретира као бинарни број чије бинарне позиције расту одоздо навише, тада је функција задата ако је задат бинарни или децимални индекс вектора истинитости.
Хиперкубови (хиперкоцке)
Ако се комбинациони вектори третирају као тачке n-димензионалног простора тада скуп од 2n вектора представља скуп темена n-димензионалног јединичног куба (коцке), а то је област дефинисаности прекидачке функције. Ако темена на којима функција има вредности 0 или 1 посебно означимо, нпр. 0 празним кружићем а 1 пуним кружићем, тада добијамо могућност геометријског задавања прекидачке функције. На сл. 6.1 приказани су јединични кубови за функције од три и четири независно променљиве.
130
1111
0111 x3 001
011
111
x2
101
0110
0010
110
010 000
x3
100 x1
1110 x2
0100 0000
0011
1010
1011 0101 1101 x 4
0001
1100
1001
1000 x1
Слика 6.1 Кубови за функције три и четири променљиве
Карноове карте
Карноова карта служи за графичко представљање (задавање) прекидачких функција. То је правоугаоник или квадрат који садржи тачно 2n ћелија (квадратића) у коме свака ћелија одговара једном вектору. На слици 6.2 приказане су Карноове карте за функције четири и пет променљивих. Карноова карта је тако организована да физички суседним ћелијама одговарају суседни вектори, тј. вектори који се разликују само по једној координати. Осим тога суседне су и крајње десне са крајњим левим ћелијама, као и крајње горње са крајњим доњим ћелијама. Међутим за функције 5 променљивих постоје и суседни вектори којима не одговарају суседне ћелије. Наиме, поред наведених суседних ћелија суседне су и ћелије које припадају i-тој врсти (i=1,2,3,4) колона означених са 001 и 101, као и 011 и 111. x1x2
x3x4
00 01 11 10 00 1 1 1 01 1 11 10
1
x1x2x 3
00
000 001 011 010 110 111 101 100 1 1 1
x4x5 01 11 10
1 1
1
1
1
Слика 6.2 Карноове карте за функције четири и пет променљивих
Прекидачка функција се задаје у Карноовој карти тако што се у сваку ћелију уписује вредност 0 или 1 коју има функција на одговарајућем вектору.
131
6.4 Прекидачке функције једне и две променљиве У таблицама 6.4 и 6.5 дате су прекидачке функције једне и две независно променљиве. За сваку фунцију дат је вектор истинитости, ознака и назив функције. Подаци у десним колонама односе се на припадност тзв. затвореним класама и биће коришћени касније код испитивања тзв. потпуних скупова или базиса прекидачких функција.. Таблица 6.4 − Прекидачке функције једне променљиве x
01
Ознака
Назив функције
K0
f0
00
0
Константа 0
+
f1
01
x
Променљива x
+
f2
10
x
Негација променљиве x
f3
11
1
Константа 1
K1
S
M +
+
+
+
+
+
+ +
L
+ +
+
Прекидачке функције једне и две променљиве понекад се називају елементарне функције или Булове операције јер се оне могу релативно просто реализовати дигиталним електронским колима, а као такве користе се за синтезу прекидачких мрежа.
Особине операција И, ИЛИ, НЕ
Поред особина дефинисаних аксиомама и примера теорема могу се доказати и следеће просте, али важне, једнакости: x ∨ 1 = 1; x ∨ 0 = x; x ∨ x = 1; x ∨ x = x; x ∨ x ∨ ... ∨ x = x ; x ∧ 1 = x; x ∧ 0 = 0; x ∧ x = 0; x ∧ x = x; x ∧ x ∧ ... ∧ x = x. Генерализацијом Де Морганових правила добијају се следеће једнакости: ( x ∨ x ∨ ... ∨ x ) = x ∧ x ∧ ... ∧ x ,
132
( x ∧ x ∧ ... ∧ x ) = x ∨ x ∨ ... ∨ x .
Особине операције сума по модулу два
За операцију сума по модулу два важе комутативни и асоцијативни закон, као и дистрибутивни закон у односу на операцију И, тј. x1 ⊕ x2 = x2 ⊕ x1; x1 ⊕ (x2 ⊕ x3) = (x1 ⊕ x2) ⊕ x3; x1 ∧ (x2 ⊕ x3) = x1 ∧ x2 ⊕ x1 ∧ x3 .
Таблица 6.5 − Прекидачке функције две променљиве x1 x2
1100 1010
Ознака функције
f0
0000
0
f1
0001
x1 ∧ x2
Конјункција, И функција
+
f2
0010
x1 → x2
Негација импликације
+
f3
0011
x1
Променљива x1
+
f4
0100
x2 → x1
Негација обрнуте импликације
+
f5
0101
x2
Променљива x2
+
f6
0110
x1 ⊕ x2
Сума по модулу два
+
f7
0111
x1 ∨ x2
Дисјункција, ИЛИ функција
+
f8
1000
x1 ○ x2
НИЛИ (Пирсова) функција
f9
1001
x1 ≡ x2
Еквиваленција
f10
1010
x2
f11
1011
x2 → x1
f12
1100
x1
f13
1101
x1 → x2
f14
1110
x1 / x2
f15
1111
1
Назив функције Константа 0
K1
Обрнута импликација
+
M
L
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
Негација променљиве x1 Импликација
S
+
Негација променљиве x2
+
НИ (Шеферова) функција Константа 0
Осим тога, важе и следеће једнакости: x ⊕ x = 0; x ⊕ x = 1;
133
K0
x ⊕ 0 = x; x ⊕ 1 = x .
+
+
+
Особине операције импликација
Импликација је операција за коју не важе ни комутативни ни асоцијативни закон. Осим тога важе следеће једнакости: x → x = 0;
x→ x =x;
1 → x = x;
x → 1 = 1.
0 → x = 1; x → 0 = x ;
Особине операција НИ и НИЛИ
За обе ове операције важи комутативни али не важи асоцијативни закон, x1 / x2 = x2 / x1;
x1 ○ x2 = x2 ○ x1;
x1 / (x2 / x3) ≠ (x1 / x2) / x3 ; x1 ○ (x2 ○ x3) ≠ (x1 ○ x2) ○ x3 . Такође важе и следеће једнакости: x/x= x;
x/ x=1;
x/0=1; x/1=x;
x○x= x ; x○ x =0; x○0=x; x○1=0.
Представљање једних функција помоћу других
Понекад постоји потреба да се једне елементарне прекидачке функције изразе помоћу других. Од тих веза посебно су важне следеће:
134
x1 ∨ x2 = x1 ∧ x2 ;
x1 ∧ x2 = x1 ∨ x2 ;
x1 ∨ x2 = x1 ⊕ x2 ⊕ x1x2 ;
x1 ⊕ x2 = x1 x2 ∨ x1 x2 ;
x1 → x2 = x1 ∨ x2 ;
x2 → x1 = x1 → x2 ;
x1 / x2 = x1 ∧ x2
x1 ○ x2 = x1 ∨ x2 .
6.5 Фиктивне независно променљиве Каже се да функција f(x1,...,xi ,...,xn) не зависи од променљиве xi, односно да је xi фиктивна променљива за функцију f(x1,...,xi ,...,xn) ако важи релација:
f(x1,...,0,...,xn) = f(x1,...,1,...,xn) Уколико ова релација не важи каже се да xi није фиктивна променљива, односно да функција f(x1,...,xi ,...,xn) стварно зависи од променљиве xi. Из наведене дефиниције се може закључити да се прекидачка функција f(x1,...,xi ,...,xn) неће изменити ако јој се дода произвољан број фиктивних променљивих или ако се у њој изоставе фиктивне променљиве. Може се такође показати да је променљива фиктивна за неку функцију f(x1,...,xi ,...,xn) ако важи релација f(x1,...,xi ,...,xn) = f(x1,..., xi ,...,xn). За испитивање да ли је нека променљива фиктивна, поред директне примене горње дефиниције, користи се и оператор који се назива Булова диференца. Булова диференца по променљивој xi је функција од n-1 променљиве која се дефинише на следећи начин:
Di f(x1,...,xn) = f(x1,...,0,...xn) ⊕ f(x1,...,1,...,xn). Ако се у релацију којом се дефинише фиктивна променљива дода са леве и десне стране по модулу два f(x1,...,1,...,xn) добија се Di f(x1,...,xn) = 0, што значи да ће променљива бити фиктивна ако је Булова диференца по њој једнака 0. У минималним формама прекидачких функција, које ће касније бити проучаване, фиктивне променљиве неће фигурисати, и то је такође начин за одређивање фиктивних променљивих. У скупу Fn свих функција n променљивих, постоје функције које имају фиктивне променљиве. Број функција које зависе од свих n променљивих изражава се следећом теоремом:
Теорема: Број An прекидачких функција које зависе од свих n независно променљивих одређује се следећом рекурентном формулом: n ⎛n ⎞ ⎛n ⎞ ⎛n⎞ ⎟⎟ An −1 − ⎜⎜ ⎟⎟ An − 2 − ... − ⎜⎜ ⎟⎟ A1 − A0 , An = 2 2 − ⎜⎜ ⎝ n − 1⎠ ⎝n − 2 ⎠ ⎝1 ⎠
135
где је А0 број функција које не зависе ни од једне променљиве, а то су константе 0 и 1. Уместо ове рекурентне формуле за одређивање Аn може се користити и следећи израз: n ⎛ n ⎞ n −1 An = ∑ ( −1 ) j ⎜⎜ ⎟⎟2 2 . j =0 ⎝j⎠
Помоћу ових формула може се утврдити да постоје само 2 функције које зависе од једне променљиве, 10 функција које зависе од две променљиве, 218 које зависе од три променљиве итд. Анализом таблица 6.4 и 6.5 за функције једне и две променљиве то можемо и директно проверити.
6.6 Аналитичка представљања прекидачких функција Поред различитих начина задавања прекидачких функција које смо раније размотрили, у прекидачкој алгебри се може користити и начин задавања који је уобичајен у математици, помоћу аналитичких израза. Међутим, у аналитичким изразима којима се задају прекидачке функције користе се искључиво операције дефинисане у прекидачкој алгебри, тако да рад са овим изразима има низ специфичности, што захтева њихово опрезно коришћење.
Потпуни производ и потпуна сума
Нека је K = k1k2...kn вектор посебних вредности прекидачке функције n независно променљивих и нека је k индекс тог вектора добијен према изразу датом у одељку 6.3 (стр.101). Дефинишимо прекидачку функцију pk на следећи начин: ⎧1, ако је K = (k1 , k 2 ,...,k n ) , pk = ⎨ . ⎩0 , ако је K ≠ ( k1 , k 2 ,...,k n )
Функција pk назива се потпуни производ или минтерм. То је функција n променљивих која има вредност 1 само на једном вектору, вектору K чији је 136
индекс k, и вредност 0 на свим осталим векторима. Може се доказати да се потпуни производ предствља аналитички (помоћу Буловог израза) на следећи начин: ⎧ x , ако је k i =1 xi = ⎨ i . pk = ~ x1 ~ x2 ...~ xn , где је ~ ⎩ xi , ако је k i = 0
Наиме, у овом изразу само на вектору K производ ~ x1 ~ x2 ...~ xn имаће вредност 1 јер су тада све компоненте вектора једнаке 1. У свим осталим случајевима најмање по једна компонента вектора имаће вредност 0 па ће и сам производ pk имати вредност 0. Из израза за pk следи прост начин налажења потпуног производа: променљива xi у pk је комплементирана ако је одговарајућа компонента ki = 0, а није комплементирана ако је ki = 1. Дефинишимо даље прекидачку функцију sk на следећи начин: ⎧0 , ако је K = (k1 , k 2 ,...,k n ) , . sk = ⎨ ⎩1, ако је K ≠ ( k1 , k 2 ,...,k n )
Функција sk назива се потпуна сума или макстерм. То је функција n променљивих која има вредност 0 само на једном вектору, вектору K чији је индекс k, и вредност 1 на свим осталим векторима. Може се доказати да се потпуна сума предствља аналитички (помоћу Буловог израза) на следећи начин: sk = ~ x1 ∨ ~ x2 ∨ ... ∨ ~ xn , где је
⎧ xi , ако је k i = 0 ~ xi = ⎨ . ⎩ xi , ако је k i =1
Из овог израза за sk следи прост начин налажења потпуне суме: променљива xi у sk је комплементирана ако је одговарајућа компонента ki = 1, а није комплементирана ако је ki = 0. Укупан број потпуних производа једнак је 2n а укупан број потпуних сума је такође 2n.
Пример. У таблици 6.6 за задату прекидачку функцију три променљиве дати су вектори истинитости и аналитички изрази за све минтерме и макстерме те функције.
137
Таблица 6.6 − Минтерми и макстерми x1
x2
x3
f(X)
p1
p4
p6
s0
s2
s3
s5
s7
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
1
1
0
0
1
1
1
1
1
0
1
0
0
0
0
0
1
0
1
1
1
0
1
1
0
0
0
0
1
1
0
1
1
1
0
0
1
0
1
0
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
1
1
1
0
1
0
0
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
p1 = x1 x2 x3 p4 = x1 x2 x3 s0 = x1∨ x2 ∨ x3
s2 = x1∨ x2 ∨ x3
s3 = x1∨ x2 ∨ x3
p6 = x1x2 x3 s5 = x1 ∨ x2∨ x3
s7 = x1 ∨ x2 ∨ x3
Каноничке форме прекидачких функција
Ниже ћемо размотрити четири најчешће коришћена начина аналитичког представљања прекидачких функција. Ови начини представљања су јединствени за сваку прекидачку функцију, и често се називају каноничке форме.
Теорема. Свака прекидачка функција n независно променљивих, сем константе 0, може се представити у следећем облику: f(x1, x2, …, xn) =
∨
f ( K ) =1
pk ,
где је k индекс вектора К, pk је потпуни производ за вектор K на коме функција има вредност 1, а ∨ означава операцију дисјункције. Овај аналитички облик назива се потпуна дисјунктивна нормална форма, скраћено ПДНФ, или савршена дисјунктивна нормална форма (СДНФ). Доказ се добија из разматрања редом свих посебних вредности вектора независно променљивих. Ако је на неком вектору прекидачка функција једнака 1 тада ће одговарајући потпуни производ за тај вектор, и само он, имати вредност 1, а сагласно особини ИЛИ операције и сама функција ће имати вредност 1. Ако на неком вектору функција има вредност 0 сви потпуни производи на том вектору имаће вредност 0, па ће и сама функција имати вредност
138
0. Касније ћемо навести још један доказ за ПДНФ функција који се добија помоћу тзв. теореме развоја за дисјунктивне форме (одељак 6.7).
Теорема. Свака прекидачка функција n независно променљивих, сем константе 1, може се представити у следећем облику: f(x1, x2, …, xn) =
∧
f ( K ) =0
sk ,
где је k индекс вектора К, sk је потпуна сума за вектор K на коме функција има вредност 0, а ∧ означава операцију конјункције. Овај аналитички облик назива се потпуна конјунктивна нормална форма, скраћено ПКНФ, или савршена конјунктивна нормална форма (СКНФ). Доказ овог аналитичког представљања сличан је претходном за ПДНФ. Он је такође и последица дуалности у Буловој алгебри. Може се такође извести и из одговарајуће теореме развоја за конјунктивне форме која ће касније бити размотрена (стр. 112).
Теорема. Свака прекидачка функција n независно променљивих, сем константе 1, може се представити у следећем облику: f(x1, x2, …, xn) =
⊕ pk ,
f ( K ) =1
где је k индекс вектора К, pk је потпуни производ за вектор K на коме функција има вредност 1, а ⊕ означава операцију сума по модулу два. Овај аналитички облик назива се потпуна полиномна нормална форма, скраћено ППНФ, или савршена полиномна нормална форма (СПНФ). Доказ ове аналитичке репрезентације сличан је доказу за ПДНФ само што се овде користе особине операције сума по модулу два.
Теорема. Свака прекидачка функција n независно променљивих може се представити у следећем облику: f(x1,x2,..,xn) = c0 ⊕ c1x1 ⊕ … ⊕ cnxn ⊕ c12x1x2 ⊕ … ⊕ c1nx1xn ⊕ … ⊕ cn-1,nxn-1xn ⊕ c123x1x2x3 ⊕ … ⊕ c12…nx1x2…xn где су c0, c1, ..., c12...n константе које узимају вредности из скупа {0,1}, при чему се лако доказује да њихов број износи укупно 2n . Овај се аналитички облик добија из ППНФ када се све променљиве са негацијом замене према релацији: xi = xi ⊕ 1 , а затим примени дистрибутивни закон и особине операције ⊕, посебно x ⊕ x = 0. 139
Може се показати да се коефицијенти ci1i2...im директно изражавају помоћу Булових диференци (видети одељак 6.7). Каже се да ови коефицијенти чине спектар прекидачке функције, а могу се користити за испитивање сообина функције. Још један доказ за ову аналитичку репрезентацију добија се преко теореме развоја за канонички полином која ће касније бити дата (одељак 6.7). Представљање прекидачких функција помоћу каноничких полинома је јединствено за сваку функцију, а све променљиве су без комплемента. Овај се облик назива и развој Рида-Милера (Reed-Muller). Постоји и општији начин овог представљања, тзв. поларизовани канонички полином или поларизовани развој Рида-Милера, у коме је свака променљива или свуда без комплемента или свуда са комплементом. Ми та представљања нећемо овде разматрати.
Пример. За функцију три променљиве задату таблицом 6.6 (стр. 107) ПДНФ, ПКНФ, ППНФ и полином по модулу два имају следеће облике: ПДНФ: f(x1,x2,x3) = x1 x2 x3 ∨ x1 x2 x3 ∨ x1x2 x3 , ПКНФ: f(x1,x2,x3) = (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3 ) ∧ ( x1 ∨ x2 ∨ x3 ) ∧ ( x1 ∨ x2 ∨ x3 )
ППНФ: f(x1,x2,x3) = x1 x2 x3 ⊕ x1 x2 x3 ⊕ x1x2 x3 , Полином по модулу два: f(x1,x2,x3) = x1 ⊕ x3 ⊕ x2x3 ⊕ x1x2x3
Нормалне форме прекидачких функција
Осим каноничких форми које су јединствене за сваку прекидачку функцију постоје и другачије аналитичке форме. Да бисмо их размотрили потребне су x i1 ~ xi 2 ...~ xim , 1 ≤ m ≤ n , назива се нам следеће дефиниције. Логички производ ~ ~ ~ ~ елементарни производ, логичка сума x ∨ x ∨ ... ∨ x , 1 ≤ m ≤ n , назива се i1
i2
im
елементарна сума. Често се елементарни производи и елементарне суме називају и терми. У сваком терму променљиве се појављују само једанпут и то или са негацијом или без негације. За m = 1 терми су једнаки појединим променљивим са или без негације, а за m = n добијају се потпуни производи односно потпуне суме. Број r = n - m назива се ранг елементарног производа односно елементарне суме. Сума више различитих елементарних производа назива се дисјунктивна нормална форма (скраћено ДНФ), а производ више различитих елементарних сума назива се конјунктивна нормална форма (КНФ) прекидачке функције. 140
Више елементарних производа повезаних операцијом ⊕ назива се полиномна нормална форма (ПНФ). Посебан случај нормалних форми представљају елементарни производи и елементарне суме. Касније ћемо видети да за сваку прекидачку функцију може постојати већи број дисјунктивних, конјунктивних или полиномних нормалних форми. Овде ћемо показати начин прелаза од нормалних форми на каноничке форме. тј. на потпуне дисјунктивне, потпуне конјунктивне и потпуне полиномне нормалне форме. Нека је p елементарни производ и xi променљива која се не појављује у p. Трансформација p = p (xi ∨ xi ) = pxi ∨ p xi назива се развијање елементар-
ног производа по променљивој xi. Ова се трансформација заснива на правилу сажимања примењеним обрнутим редоследом, па према томе не мења вредност Буловог израза p, односно прекидачке функције дефинисане изразом p. Другачије се ова трансформација може тумачити и као логичко множење елементарног производа p константном 1 јер је раније показано да важи једнакост xi ∨ xi = 1. Ако се елементарни производ развије по свим променљивим које се не појављују у њему добиће се 2r=2n-m потпуних производа. Сличним поступком као горе може се прећи од полиномних нормалних форми на потпуне полиномне нормалне форме применом трансформације облика: p = p(xi ⊕ xi ) = pxi ⊕ p xi , тј. развијањем по свим променљивим које се не појављују у p. Такође се развијањем елементарне суме sk = ~ x1 ∨ ~ x2 ∨ ... ∨ ~ xn , по променљивој xi која се не појављује у њој применом трансформације облика: s = s ∨ xi xi = (s ∨ xi)(s ∨ xi ) може прећи на потпуне конјунктиве нормалне форме разматране прекидачке функције. Прелаз од нормалних форми на потпуне нормалне форме неопходан је у случајевима када треба извршити упоређивање два аналитичка (Булова) израза, односно прекидачких функција дефинисаних тим изразима. Наиме, већ смо напоменули да за поједине прекидачке функције може постојати већи број различитих нормалних форми, сем код каноничних полинома који су увек јединствени. Како су потпуне нормалне форме јединствене тек се свођењем на њих може тачно утврдити једнакост или неједнакост Булових израза, односно одговарајућих прекидачких функција. Други начин упоређивања прекидачких функција јесте преко таблица истинитости формираних за изразе или прекидачке функције које се упоређују.
141
Прелаз од једних аналитичких представљања на друге
Понекад постоји потреба да се изврши прелаз од једних аналитичких представљања на друге, односно прелаз од једних нормалних форми на друге. Показаћемо начине прелаза за неке размотрене аналитичке репрезентације. Прелаз од неке дисјунктивне нормалне форме на полиномну форму врши се применом једнакости u1 ∨ u2 = u1 ⊕ u2 ⊕ u1u2 , где су u1 и u2 било која два терма. Прелаз од полиномне нормалне форме на дисјунктивну нормалну форму врши се применом једнакости u1 ⊕ u2 = u1 u2 ∨ u1 u2 , где су u1 и u2 било која два терма. Прелаз од полиномне нормалне форме на полином по модулу два врши се применом једнакости x = x ⊕ 1, затим применом дистибутивног закона и особина операције ⊕. Прелаз од дисјунктивне нормалне форме на полином по модулу два врши се прво преласком на полиномну форму а затим на полином по модулу два, према већ описаним поступцима.
Суперпозиција (супституција) прекидачких функција
Помоћу једног скупа прекидачких функција могу се градити (добијати) нове прекидачке функције на следећи начин: 1) Изменом ознака променљивих (замена места неких променљивих, изједначавањем неких променљивих или замена неких променљивих константама), 2) Заменом у једној функцији неких променљивих (аргумената) новим функцијама. Поступак добијања нове функције F(X) од функција f1(X1), f2(X2),..., fm(Xm), Xj ∈ X, (j = 1,2,...,m), применом горња два правила назива се суперпозиција (супституција, смена, композиција) функција. Овим поступком се у ствари нека сложена прекидачка функција изражава као функција од више простијих функција мањег броја променљивих у следећем облику: 142
F(X) = f(fi1(Xi1),…,Fim(Xim)), Xij ∈ X .
6.7 Теореме развоја За добијање аналитичких представљања прекидачких функција, као и за трансформисање прекидачких функција задатих различитим Буловим изразима, често се користе тзв. теореме развоја. Ове се теореме такође могу директно користити и за синтезу прекидачких мрежа, о чему ће бити говора у осмом поглављу.
Теорема развоја по променљивој xi јесте једнакост којом се прекидачка функција n независно променљивих представља помоћу две прекидачке функције од n-1 променљиве које не зависе од променљиве xi , и од саме те променљиве. Ми ћемо размотрити само неке важније теореме развоја. Свака прекидачка функција n независно променљивих може се представити у следећем облику: f(x1,...,xi,...xn) = xi f(x1,...,0,...xn) ∨ xi f(x1,...,1,...xn) Ова једнакост позната је као Шенонова теорема развоја (C. Sannon), а ми ћемо је условно називати теоремом развоја за дисјунктивне форме. За доказ теореме развоја најбоље је користии методу исцрпљивања, која се овде састоји у провери једнакости леве и десне стране за све могуће вредности променљиве xi, тј. за xi =0 и за xi =1. Тако за xi =0 имамо:
f(x1,...,xi,...xn) = 0 f(x1,...,0,...xn) ∨ 0 f(x1,...,1,...xn) односно:
f(x1,...,0,...xn) = f(x1,...,0,...xn).
На исти начин врши се провера и за xi =1. Ако се горња теорема развоја примени n пута по свакој променљивој добиће се израз за који је лако утврдити да представља потпуну дисјунктивну норману форму (ПДНФ). На тај начин имамо још један доказ за представљање прекидачких функција помоћу ПДНФ. По истом принципу може се доказати да важе и следеће три теореме развоја: 143
Свака прекидачка функција ннезависно променљивих може се представити у следећем облику: f(x1,...,xi,...xn) = [xi ∨ f(x1,...,0,...xn)] [ xi ∨ f(x1,...,1,...xn)] . Ову једнакост називаћемо теоремом развоја за конјунктивне форме. Ако се она примени n пута по свим променљивим добиће се потпуна конјунктивна нормална форма (ПКНФ) прекидачке функције.
Свака прекидачка функција ннезависно променљивих може се представити у следћем облику: f(x1,...,xi,...xn) = xi f(x1,...,0,...xn) ⊕ xi f(x1,...,1,...xn). Ову једнакост називаћемо теоремом развоја за полиномне форме. Ако се она примени n пута добија се потпуна полиномна нормална форма (ППНФ) прекидачке функције.
Свака прекидачка функција n независно променљивих може се представити у следећем облику: f(x1,...,xi,...xn) = f(x1,...,0,...xn) ⊕ xi [f(x1,...,0,...xn) ⊕ f(x1,...,1,...xn)] . Ову теорему развоја називаћемо теоремом развоја за каноничке полиноме. Ако се она примени n пута по свакој променљивој добиће се канонички полином за функције од n променљивих. Ова се теорема развоја може написати и помоћу Булове диференце у следећем облику:
f(x1,...,xi,...xn) = f(x1,...,0,...xn) ⊕ xi Di f(x1,...xn) . где је Dif(x1,...,xn) Булова диференца по променљивој xi. Одавде се даљом применом теореме развоја по осталим променљивим може доказати да се сви коефицијенти у полиному по модулу два (каноничком полиному) (видети одељак 6.6) могу добити из израза:
ci1i2…im = Di1i2…im f(x1,...,xn), где је Di1i2…im f(x1,...,xn) Булова диференца функције f по променљивим xi1, xi2,...,xim. При томе је још c0 = f(0,0,...,0).
144
7 КОМБИНАЦИОНЕ МРЕЖЕ
7.1 Логички елементи Дигиталним или логичким елементима или дигиталним колима називамо сва она кола која се у електричном смислу могу карактерисати са два различита стања сигнала. Ова стања кодирају се азбуком од два различита знака тј. бинарном азбуком, а договорно их најчешће означавамо бинарним вредностима "0" и "1". Два стања сигнала могу се изразити различитим електричним величинама на које реагују та кола или којима се стања манифестују, нпр. две различите вредности напона или струје, постојање или одсуство напонских или струјних импулса, или релативни однос импулса по амплитуди, фази или фреквенцији, итд. Логички елемент или логичко коло представља конфигурацију електричних или електронских компонената која има један или више улазних прикључака (улаза) на које се доводе улазни електрични бинарни сигнали који се описују прекидачким променљивим x1, x2, ... , xn, и има један или више излазних прикључака (излаза). Излазни сигнал логичког елемента је такође бинарни сигнал, тј. узима само вредности 0 или 1, и функционално зависи од улаза, тј. једнозначно је одређен комбинацијом улазних сигнала. Према томе, излазни сигнал логичког елемента може се представити помоћу прекидачке функције f(x1, x2, ... , xn). Логички елементи представљају релативно проста дигитална кола која реализују елементарне прекидачке функције. По правилу логички елемент има два или више улаза и само један излаз, тј. реализује само једну прекидачку функцију. Први и најједноставнији логички (прекидачки) елемент који је практично коришћен било је електромагнетно реле. Везу између улазних и излазних сигнала представљају контакти релеа. Радни контакти су отворени при непобуђеном а затворени при побуђеном релеу. Постоје и релеа са мирним контактима, који су затворени при непобуђеном а отворени при побуђеном релеу. При томе обично отворени контакт одговара логичкој или бинарној вредности "0", 145
а затворени контакт логичкој или бинарној вредности "1". Данас се логички елементи реализују скоро искључиво електронским колима. Од логичких елемената граде се сложене прекидачке (логичке) мреже њиховим међусобним повезивањем на одређени начин.
Графички симболи за логичке елементе
За опис структуре прекидачке мреже, тј. графички приказ те мреже, користе се стандардизовани графички симболи за логичке елементе. Њима се уствари означавају логичке функције које они реализују. Најчешће коришћени графички симболи за логичке елементе приказани су на слици 7.1. x
x ϕ
x1ϕ x2
x1 ϕ(x1, x2 ,..., xn) x2 ... ϕ xn
x1 x2 x1 x2
V V
x1 x2
x1 x2
+
x1 x2
/
x1 x2
x
x
x1 x2 = x1 +x2
x1 x2
x1 x2 = x1 +x2
x1 x2 = x1 x2
x1 x2
x1 x2 = x1 x2
x1
x1 x2
x2
x1 / x2 x1° x2
x1
x2
x1 x2
x1 / x2
x1 x2
x1° x2
Слика 7.1 Графички симболи за логичке елементе
Параметри логичких елемената
Логички елементи карактеришу се одређеним бројем параметара које треба у одређеној мери узимати у обзир при њиховом коришћењу за реализацију мрежа. Најважнији су следећи параметри: 1) Кодирање логичких вредности. У сваком логичком елементу логичке вредности кодирају се (представљају се) ордеђеним вредностима сигнала. Најчешће коришћена величина је електрични напон. У електорнским колима која се данас највише користе обично се 0 представља било којом вредношћу напона из опсега од 0 до 0,4 V, а 1 било којом вредношћу напона из опсе146
га од 2,4 до 5,0 V. Овакво кодирање назива се позитивна логика. Ако се логичке вредности кодирају обрнуто, тада се говори о негативној логици. 2) Закон функционисања. То је прекидачка функција коју на излазу реализује дати логички елемент. 3) Број улаза. Логички елементи често могу имати више од два улаза, али је број улаза обично ограничен технолошким факторима, а код интегрисаних кола и бројем спољних прикључака. Осим тога, неки логички елементи за различит број улаза реализују различите прекидачке функције на излазу. 4) Коефицијент излаза. Коефицијент излаза, фактор излаза или максимално оптерећење излаза представља број улаза на које се може везати излаз неког логичког елемента. 5) Кашњење сигнала. То је временски интервал који протекне од момента промене улазног сигнала до момента успостављања излазног сигнала. Разлог за кашњење је природа рада полупроводничких и других електронских компонената. 6) Дисипација снаге. Логички елементи су обично тзв. активна дигитална кола, тј. кола која захтевају стално напајање станрадизованим једносмерним напоном. Због тога она имају одређену потрошњу енергије која се назива дисипација снаге. 7) Маргина шума. Маргина шума или фактор шума карактерише неосетљивост логичког елемента на спољне сметње. 8) Температурни опсег. Поуздани рад логичких елемената гарантује се у одређеном опсегу темпаратура. За индустријске примене то је од 0 - 70 º C, а за специјалне примене од -25 до +125 º C.
7.2 Прекидачке мреже
Мрежа дигиталних електронских кола са n улазних и m излазних прикључака назива се прекидачка мрежа ако за улазне прикључке са напонским нивоима v0 и v1 излазни прикључци такође имају напонски ниво v0 или v1. Ова мрежа реализује пресликавање {v0, v1}n → { v0, v1}m. Ако ми сада означимо са {0, 1} напонске нивое {v0, v1}, ово пресликавање одговараће реализацији опште прекидачке функције, односно система прекидачких функција. Овакве мреже називају се вишеизлазне прекидачке мреже. 147
Анализа и синтеза прекидачких мрежа које реализују одређене прекидачке функције, као и проучавање проблема који се односе на задовољење неких критеријума једноставности при синтези, предмет су истраживања области која се назива прекидачка теорија (теорија прекидачких мрежа) (енгл. Switching Theory) или логичко пројектовање (енгл. Logic Design). Слично прекидачким мрежама могу се увести и логичке мреже које реализују пресликавање {v0, v1,..., vm-1}n → {v0, v1,..., vm-1}m, где сваки улазни или излазни сигнал може имати вредност напона из скупа {v0, v1,..., vm-1}. Користећи исте аргументе као и код прекидачких мрежа може се уочити да логичке мреже реализују логичке функције. Логичке мреже проучавају се у оквиру области која се мазива вишезначна или поливалентна логика (енгл. Multivalued Logic). Практична остварљивост прекидачких мрежа, или у општем случају логичких мрежа, зависи од следећа два фактора: 1) Могућности поуздане реализације неких елементарних дигиталних електронских кола која се називају логички елементи, логичка кола или логичке примитиве, 2) Постојања адекватних метода (техника) синтезе тих мрежа. Прекидачка мрежа се такође може дефинисати и као композиција логичких елемената повезаних на следећи начин: а) На сваки улаз логичког елемента прикључен је излаз неког другог логичког елемента или је то примарни улаз, б) Као улази логичких елемената могу бити константе 0 или 1, в) Никаква два излаза нису међусобно повезана, г) Не постоје петље у мрежи, где петља или повратна спрега (повратна веза) представља контур који повезује излаз неког логичког елемента са његовим улазом, при чему контур може садржати и друге логичке елементе. Повратна веза представља уствари пут који може проћи сигнал од излаза логичког елемента до неког од његових улаза Прекидачке мреже дефинисане на горњи начин називају се комбинационе мреже. Карактеришу се тиме да је код њих стање излаза у сваком тренутку потпуно одређено (дефинисано) тренутним вредностима улазних променљивих. За овакве мреже кажемо да не садрже меморијске елементе, односно да у њима не постоји повратна спрега. Постоји и други тип прекидачких мрежа које се називају секвенцијалне мреже, које ћемо касније разматрати. 148
Шема која показује како су повезани логички елементи у прекидачкој мрежи назива се структурна или функционална шема прекидачке мреже. За логички елемент се каже да припада i-том степену или i-том нивоу комбинационе мреже ако је i највећи број логичких елемената кроз које пролази сигнал од улаза мреже до излаза посматраног елемента. Другачије речено, логички елемент припада i-том степену комбинационе мреже ако је i-1 највећи степен којем припада бар један од логичких елемента чији су излази везани на улазе посматраног логичког елемента. Притом, првом степену комбинационе мреже припадају сви логички елементи на чије улазе долазе само спољашњи сигнали. За комбинациону мрежу се каже да је i-тог степена ако је i највећи степен неког логичког елемента у тој мрежи.
7.3 Анализа комбинационих мрежа Анализа комбинационих мрежа састоји се у налажењу прекидачке функције или система функција које реализује нека задата мрежа. Анализа (или структурна анализа) прекидачких мрежа представља уствари процес одређивања закона функционисања прекидачке мреже, тј. одређивања прекидачке функције или система прекидачких функција по задатој структурној шеми мреже. Анализа мреже даје једнозначни запис функција мреже, при чему запис може одражавати структуру мреже. Излазне функције изражавају се у аналитичком облику помоћу неког буловог израза, тј. израза у коме се користе елементарне булове операције или помођу таблице истинитости. Ако се при анализи користе аналитичка представљања најбоље их је свести на неки стандардни облик као што су потпуне нормалне форме или канонички полином. Поступак анализе треба остваривати на следећи начин: 1) Означити помоћним прекидачким променљивим излазе свих логичких елемената и написати функционалне зависности излаза од улаза, 2) Извршити постепену замену свих помоћних променљивих у изразима за сваку излазну променљиву, тако да се добије зависност излазних само од улазних променљивих, 3) Свести добијени израз на неки стандардни аналитички облик или формирати одговарајућу таблицу истинитости.
149
Пример. На сл. 7.2 дата је мрежа коју треба анализирати. Применом описаног поступка анализе имамо:
x1 x3
x 1 x 2 x3
g1
/
g2
v
x1 x2
f(x1,x2 ,x3 )
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
f(x1,x2,x3 ) 1 1 1 1 1 0 0 0
Слика 7. 2 Анализа комбинационе мреже
g1 = x1→x2; g2 = x1/x3; f = g1 ∧ g2 = (x1→x2) ∧ (x1/x3) = ( x1 ∨ x2) ∧ ( x1 ∨ x3 ). Коначно се добија следећа ПДНФ: f = x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2 x3 ∨ x1 x2x3 ∨ x1 x2 x3 , или F(1) = {0,1,2,3,4}.
7.4 Задатак синтезе комбинационих мрежа Општи задатак синтезе комбинационих мрежа састоји се у следећем: дат је систем прекидачких функција fi(x1,x2,...,xn), (i = 1, 2,..., m), тражи се структурна шема, односно мрежа логичких елеманата, која реализује те функције. Синтеза прекидачке мреже се остварује тако што се она реализује спрегом неких простијих, тзв. елементарних мрежа, најчешће логичких елемената (логичких кола). Обично се узима коначан број различитих логичких елемената који образују потпуни скуп или базис, и претпоставља се да за синтезу постоји довољан број примерака сваког логичког елемента. Проблем синтезе прекидачке мреже састоји се у захтеву да се за задату функцију или систем прекидачких функција и задати потпуни скуп логичких елемената нађе одговарајућа мрежа која реализује те функције. Другачије речено задатак се састоји у изградњи структурне шеме комбинационе мреже која на излазу формира те функције. Један од проблема који још треба решити непосредно пре самог поступка синтезе јесте избор логичких елеманата за синтезу. Наиме, обично се за 150
синтезу бира одређена врста логичких елемената, јер нема потребе користити све расположиве. Поред услова да изабрани логички елементи треба да образују потпуни скуп или базис, избор логичких елемената зависи од њихове брзине, од цене, од намене и других критеријума практичне реализације. Поступак синтезе одвија се следећим редоследом: 1. На основу описа функција или таблица истинитости пише се нека потпуна нормална форма, 2. Врши се минимизација функција једном од метода минимизације који се касније детаљно разматрају. Овај се корак може и аутоматизовати јер постоје програми за минимизацију, 3. На основу минималних форми прекидачких функција реализује се одговарајућа мрежа помоћу задатог скупа логичких елемената.
Синтеза комбинационих мрежа на основу аналитичких израза
Један од простих али неоптималних начина синтезе комбинационих мрежа јесте коришћење (потпуних) нормалних форми функција. При томе је начин везивања елемената структурне шеме одређен редоследом обављања операција у задатој форми прекидачке функције. Ако логички елементи могу имати произвољан број улаза, за дисјунктивне нормалне форме поступак је следећи: 1. Реализују се комплементи променљивих (тамо где су потребни), 2. Реализују се сви логички производи помоћу И елемената са потребним бројем улаза, 3. Реализује се дисјункција свих производа једним ИЛИ елементом са потребним бројем улаза. Овом реализацијом добија се тростепена мрежа типа НЕ-И-ИЛИ (сл. 7.3а). Међутим, често су у пракси на располагању комплементи (негације) променљивих и степен за њихову реализацију не постоји тако да се добија реализација помоћу двостепене мрежа типа И-ИЛИ, где сваком терму одговара један И елемент, а излази свих И елемената служе као улази другог степена који се састоји од једног ИЛИ елемента (сл. 7.3б).
151
x3
f
V
x1 x2
a)
V
f1
V
f2
V
V V
x2 x4
x1 x3 x1 x2 x3
x1x2 x1x2x3 x1x2x3
V
x1
f1 = x1x3 f2 = x1x2
x2x3x 4
V
f = x1 x2
b)
Слика 7.3 Формирање структурне шеме на основу аналитичког израза
Слични поступци се примењују и за друге нормалне форме или за канонички полином. x1 x2
x3 { , , }
x1 ⊗ x2 ⊗ x3
x1 x2
x1 ⊗ x2 ⊗ x3⊗ x4
x3 x4
Слика 7.4 Реализација функција , и више променљивих елементима са два улаза
Ако су нам на располагању логички елементи са ограниченим бројем улаза, функције ∨, ∧ и ⊕ које се не могу реализовати једним логичким елементом реализују се редном везом више елемената. Принцип реализације за елементе са два улаза приказан је на слици 7.4. Ако Булов израз којим је описана нека прекидачка функција садржи заграде тада се добија вишестепена мрежа којом се реализује та функција. И овде се примењује сличан поступак горе описаном, при чему се на основу заграда одређује редослед реализације појединих термова.
7.5 Минимизација прекидачких функција Један од циљева синтезе јесте добијање прекидачке мреже која је оптимална у односу на одређене критеријуме. У том циљу се један од корака синтезе састоји у одређивању најпростијег аналитичког израза којим се може 152
представити нека прекидачка функција. Овај се поступак назива минимизација прекидачких функција. При томе се дефинишу и критеријуми за поређење аналитичких израза. У пракси се најчешће тражи најпростији израз у одређеној класи аналитичких израза којима се може представити прекидачка функција, пре свега у класама дисјунктивних, конјунктивних и полиномних нормалних форми. За поређење израза обично служи нека величина која у најпростијем, тзв. минималном изразу, мора имати најмању вредност. Типични критеријуми су број симбола (број улаза у логичке елементе), број операција (број логичких елемената) и др. Док ови критеријуми минимизирају цену мреже, као још један важан критеријум користи се време кашњења, тј. време простирања сигнала кроз комбинациону мрежу, на које утиче укупан број степена мреже. Највећи практичан значај за синтезу комбинационих мрежа има пре свега одређивање минималних дисјунктивних или конјунктивних нормалних форми, а такође и минималних полиномних нормалних форми, док су канонички полиноми јединствени и они се не могу минимизирати. За минимизацију је развијен велики број метода. Неке од њих могу се ефикасно користити само за прекидачке функције са мањим бројем променљивих, док је одређивање минималних форми за функције са већим бројем променљивих тежак задатак, чак и када се за то користе рачунари. Зато се често користе и упрошћени поступци којима се добијају изрази блиски минималним.
Минимизација помоћу хиперкубова
На n-димензионалном кубу дате функције за темена на којима функција има вредност 1 постоје поткубови нижег реда који такође представљају неке прекидачке функције. При томе се темена сматрају поткубовима 0-тог реда и њима одговарају потпуни производи. Под поткубом m-тог реда или m-кубом подразумева се унија од 2n-m, m∈{0,1,...,m-1} суседних 0-кубова. При томе 1кубу одговара ивица јединичне коцке, 2-кубу страна јединичне коцке, 3-кубу коцка, итд. Поткуб m-тог реда представља скраћени производ од n-m променљивих, што значи да уколико је ред поткуба већи утолико он садржи мање променљивих а покрива већи број јединица. Проблем минимизације дате прекидачке функције своди се на то да се на n-димензионалном кубу изабере што мањи број поткубова што већег реда, тако да они покрију само темена на којима функција има вредност 1. Сума производа који описују те поткубове је минимална форма функције. При том се 153
користи следеће правило: производ који одговара поткубу садржи само оне променљиве чије се вредности при обиласку свих темена тог поткуба не мењају. При том 0 одговара променљива са негацијом а 1 без негације. За непотпуно дефинисане прекидачке функције сва темена на којима функција није дефинисана користе се за формирање поткубова заједно са теменима на којима функција има вредност 1. Међутим, поткубови формирани само од темена на којима функција није дефинисана не улазе у минималну форму дате функције. На сл. 7.5а приказан је тродимензионални куб са 1-кубовима (ивицама), а на сликама 7.5б и 7.5в примери одређивања минималних дисјунктивних нормалних форми за потпуно и непотпуно дефинисане прекидачке функције. x3
x1
x2x3
x1 x2 x1 x2
x2 x3
x3
x3 x1
x2 x3
x1
x2
x3
x1 x2
x2 x3
x1 x2
а)
x3
x3
* x2
x2
x3 x1 x1
x1
б) f = x2
x1 x3
* в) f = x2
x1
x1 x3
Слика 7.5 Минимизација помоћу хиперкубова
Минимизација помоћу Карноових карти
Назовимо правилном фигуром (правилном површином) ранга r скуп од 2r суседних ћелија Карноове карте које имају n-r заједничких координата. За r=0 правилне фигуре су саме ћелије, а за r = n правилну фигуру представља цела Карноова карта. За остале вредности r налажење правилних фигура није сасвим лако и уочљиво. Међутим, за Карноове карте за четири променљиве, слика 7.6а, које се у пракси најчешће користе, то је могуће. Тако за r=1 правилне фигуре чине сви правоугаоници са по 4 суседне ћелије, за r=2 правилне фигуре су сви правоугаоници и квадрати са по 4 суседне ћелије, за r=3 правилне фигуре су правоугаоници са по 8 суседних ћелија. Код Карноових карти за 5 променљивих, слика 7.6б, поред физички суседних ћелија суседне су и ћелије које припадају i-тој врсти (i=1,2,3,4) колона означених са 000 и 100, 001 и 101, 011 и 111, а такође и ћелије које припадају i-тој колони (i=0,1,...,7) врста означених са 00 и 10. Због тога се овде не може формирати погодна 154
слика на којој би биле физички суседне све ћелије које се разликују само по једној координати. Зато се Карноова карта за функције 5 променљивих чешће представља на начин приказан на сл. 7.6в. Минимизација дате функције помоћу Карноове карте састоји се у формирању правилних фигура што већег ранга тако да покривају само ћелије у којима функција има вредност 1. Карноове карте су посебно погодне за одређивање минималних форми непотпуно дефинисаних функција. При томе се ћелије у које су уписани знаци * могу укључивати у правилне фигуре што већег ранга у којима се покривају знаци 1 и * дате функције. Тиме се може смањити број потребних фигура или повећати ранг неких, а често и једно и друго. Производ који одговара некој фигури садржи само оне прменљиве чије се вредности при обиласку свих ћелија те фигуре не мењају. При том 0 одговара променљива са негацијом а 1 без негације.На тај начин се бира функција која има минималну дисјунктивну нормалну форму. Пример. На слици 7.6 показан је начин минимизације функција 4 и 5 променљивих. Нека су f(x1,x2,...,xn) и g(x1,x2,...,xn) две прекидачке функције. За функцију g се каже да представља импликант функције f и пише се g(x1,x2,...,xn) ⊆ f(x1,x2,...,xn) ако она има вредност 0 на свим оним векторима на којима и f има вредност 0, и вредност 1 бар на једном вектору на коме и f има вредност 1. При томе се још каже да импликант g покрива функцију f на векторима на којима има вредност 1. Из ове дефиниције следи да ће и логичка сума два импликанта неке функције бити такође импликант исте функције. Пример. Сваки потпуни производ неке прекидачке функције представља импликант те функције који је покрива само на једном вектору.
Прости импликанти прекидачких функција
За функцију g се каже да представља имплицент прекидачке функције f ако има вредност 1 на свим векторима на којима и функција f, и има вредност 0 бар на једном вектору на коме и f има вредност 0. Имплиценти се користе код конјунктивних нормалних форми и нећемо их сада разматрати. За елементарни производ pk кажемо да је скраћени производ или део елементарног производа pj ако је pk добијен из производа pj изостављањем неких променљивих. Ако је нпр. из pj изостављена само једна променљива тада је pj
155
= xipk, одакле се закључује да pj има вредност 1 на подскупу вектора на којима вредност 1 има и pk, па је функција pj импликант функције pk. x1x2
x1x2x 3
00 01 11 10 00 1 1 1
x3 x4 а)
000001 011 010 110 111 101 100 1 00 * 1
01
x4x5 01 1
11 1 1 1 1 10 1
f = x3 x4
x1 x2x 4
б)
11 * 10
x 1x 3x 4 x2x 3
1
* 1 1
*
f = x1 x2 x3 x5
*
x 2 x3x 5 x 2x 3x5
x2x 3
00 01 11 10 00 01 11 10 1 00 * 1 00 01 1 01 1 * x4x 5 11 * 11 * 1 10 10 1 *
в)
x1 = 0 f = x1 x2 x3 x5
x1 = 1 x 2 x3x 5 x 2x 3x5
Слика 7.6 Минимизација помоћу Карноових карти
Сваки вектор на коме нека функција има вредност 1 припада бар једном импликанту те функције. То мора бити или потпуни производ или неки његов део. За елементарни производ p се каже да представља прости импликант функције f ако је p импликант f и ако ниједан његов део није импликант f. Према томе, да би нека функција била покривена на свим векторима на којима има вредност 1 треба формирати логичку суму њених простих импликаната.
Одређивање простих импликаната
Минимална форма прекидачке функције представља дисјунктивну нормалну форму чији су сви терми (чланови) прости импликанти. Зато се поступак минимизације састоји у томе да се за дату функцију најпре у првој фази нађу сви прости импликанти, а затим се у другој фази на основу њих образује минимална форма. За одређивање скупа простих импликаната описаћемо две популарне методе: Квајнову методу (Quine) и Мак-Класкијеву методу (McCluskey).
156
Квајнова метода за одређивање простих импликаната је итеративан таблични поступак заснован на вишеструкој примени следећа два правила: 1) Правила удруживања (сажимања): pxi ∨ p xi = p, 2) Правила апсорпције: p ∨ pxi = p, уз коришћење и релације: x = x ∨ x ∨ ... ∨ x . Квајнова метода обезбеђује да се полазећи од задате функције изврши систематско удруживање свих могућих потпуних и скраћених производа који улазе у дисјунктивне нормалне форме те функције добијене у процесу минимизације. Овим се добија скуп свих простих импликаната те функције. Коришћење релације x = x ∨ x ∨ ... ∨ x састоји се у томе да се исти производ може удруживати потребан број пута пре него што се примени правило апсорпције. Поступак примене Квајнове методе је следећи: Најпре се формира полазна таблица која садржи све потпуне производе који улазе у ПДНФ дате функције. Затим се врши обрада таблице која се састоји од свих могућих удруживања у њој садржаних производа. При томе је погодно ради контроле уз производе користити децималне индексе којима су за сваки производ означени покривени вектори функције. Уз сваки удружени производ ставља се ознака "∠" да би се назначило да ти производи нису прости импликанти дате функције (после примене правила апсопције). Производи добијени удруживањем уписују се у нову таблицу, а уз њих се децималним индексима означава покривање које остварује резултат удруживања. При том се у нову таблицу сваки производ уноси само једном. После испитивања свих могућих удруживања у текућој таблици прелази се на новоформирану таблицу и процес удруживања се понавља на исти начин. Процес се завршава са оном таблицом у којој више није могуће било какво удруживање. По завршетку поступка свих могућих удруживања сви производи који нису означени знаком "∠" у свим таблицама представљају скуп простих импликаната дате функције. Пример. У таблици 7.1 дат је пример одређивања простих импликаната Квајновом методом за функцију F(1) = {3,4,5,7,9,11,12,13}. За непотпуно дефинисане прекидачке функције примељује се исти поступак са следећом разликом: у полазну таблицу уносе се и потпуни производи вектора на којима функција није дефинисана, али се њихови индекси још означавају знаком "*". При удруживању ако оба производа имају ознаку "*" та157
да се та ознака ставља и уз удружени производ. По завршетку поступка удруживања производи који немају нити ознаку "*" нити ознаку "∠" представљају просте импликанте задате функције (знак "*" означава импликанте који су формирани само од вектора на којима функција није дефинисана).
3
Таблица 7.1 − Одређивање простих импликаната Квајновом методом Производ i Производ i Производ i Прости импликант x1 x 2 x3 x4 ∠ 3,7 x1 x3 x4 4,5,12,13 x2 x3 3,7 x1 x3 x4
4
x1 x2 x3 x4 ∠
3,11
x2 x3 x4
3,11
x2 x3 x4
5
x1 x2 x3 x4 ∠
4,5
x1 x2 x3 ∠
5,7
x1 x2x4
7
x1 x 2 x3 x4 ∠
4,12
x2 x3 x4 ∠
9,11
x1 x2x4
9
x1 x2 x3 x4 ∠
5,7
x1 x2 x4
9,13
x1 x3 x4
11 x1 x2 x3 x4 ∠
5,13
x2 x3 x4 ∠
4,5,12,13
x2 x3
12 x1 x2 x3 x4 ∠
9,11
x1 x2 x4
13 x1x2 x3 x4 ∠
9,13
x1 x3 x4
i
12,13 x1x2 x3 ∠
Следећа метода за одређивање простих импликаната јесте Мак-Класкијева метода, која представља извесна формална усавршавања Квајнове методе. Поред тога, Мак-Класкијева метода је значајна због тога што је веома погодна за програмску реализацију на рачунару. Код ове методе у полазну таблицу се не уносе потпуни производи већ бинарни индекси задате прекидачке функције. Осим тога, сви бинарни индекси се деле на класе тако што се у истој класи налазе бинарни индекси који садрже исти број јединица. Класе су у таблици одвојене хоризонталним линијама а смештају се према растућем броју јединица у класи. Обрада таблице врши се као и код Квајнове методе, с том разликом што се удруживање врши између једне и следеће класе у таблици, јер само у суседним класама могу бити суседни индекси. При томе се удружују само они индекси који у себи имају знаке из скупа {0,1,x} а разликују се само у једној координати (компоненти) тако да један индекс има знак 0 а други знак 1. Нови индекс на компоненти по којој је извршено удруживање добија ознаку "х", а остале остају исте. За сваки пар класа које се удружују формира се у новој таблици посебна класа. По завршетку поступка свих удруживања све неозначене врсте (неозначени индекси) указују на просте имликанте дате функције. Од бинарног индекса 158
у неозначеној врсти сваке таблице прави се импликант тако што се у њему компонента 1 замењује одговарајућом променљивом, компонента 0 комплементираном променљивом, а компонента са знаком "х" указује да одговарајућа променљива не улази као фактор у прости импликант. Пример. У таблици 7.2 дат је пример одређивања простих импликаната Мак-Класкијевом методом за функцију F(1) = {2,4,5,6,7,9,13}. Таблица 7.2 − Одређивање простих импликаната Мак-Класкијевом методом i Вектор
i
Вектор
i
Вектор
i
Вектор
Прости импликант
2,6
0x10
x1 x3 x 4
2 0010 ∠
2,6 0x10
4 0100 ∠
4,5 010x ∠
5,13
x101
x2 x3 x4
-------------
4,6 01x0 ∠
9,13
1x01
x1 x3 x4
5 0101∠
--------------
4,5,6,7 01xx
6 0110 ∠
5,7
9 1001 ∠
5,13 x101
-------------
6,7
7
0111 ∠
4,5,6,7 01xx
x1 x2
01x1 ∠ 011x ∠
9,13 1x01
13 1101 ∠
За непотпуно дефинисане прекидачке функције примењује се иста процедура са следећим разликама: вектори на којима функција није дефинисана уносе се у таблицу заједно са векторима на којима функција има вредност 1, али се њихови индекси додатно означавају знаком "*". При удруживању ако оба вектора имају ознаку "*" та се ознака ставља и поред новог вектора добијеног удруживањем. По завршетку удруживања вектори који нису означени знаком ∠ а немају ни ознаку * представљају просте импликанте задате функције (знак * означава просте импликанте формиране само од вектора на којима функција није дефинисана). Пример. У таблици 7.3 дат је пример одређивања Мак-Класкијевом методом простих импликаната непотпуно дефинисане прекидачке функције за коју је F(1) = {0,5,8,12,15} и F(*) = {1,2,3,10,13,14}.
Таблица покривања
159
Одређивањем простих импликаната за неку задату функцију није завршен поступак минимизације, јер ако се анализира покривање функције простим импликантима могу се наћи примери тзв. преопширног покривања. То значи да се из скупа простих импликаната могу изоставити неки прости импликанти а да при томе функција остане и даље покривена. Због тога постоји друга фаза минимизације прекидачких функција ради одређивања непреопширног скупа простих импликаната, тј. минималне дисјунктивне нормалне форме функције. У ову сврху најчешће се користи таблица покривања. Таблица 7.3 − Одређивање простих импликаната непотпуно дефинисане функције Мак-Класкијевом методом i Вектор
i Вектор
i Вектор
i Вектор Прости импликант
0 0000 ∠
0,1 000x ∠
0,1,2,3
00xx
1,5 0x01
x1 x3 x4
e
---------------
0,2 00x0 ∠
0,2,8,10
x0x0
5,13 x101
x2 x3 x4
f
1 *0001 ∠
0,8 x000 ∠
8,10,12,14
1xx0
0,1,2,3
00xx
x1 x2
b
2 *0010 ∠
---------------
12,13,14,15 11xx
0,2,8,10 x0x0
x2 x4
d
8 1000 ∠
1,3 *00x1 ∠
8,10,12,14
1xx0
x1 x 4
c
--------------
1,5 0x01
12,13,14,15 11xx
x1 x2
a
3 *0011 ∠
2,3
001x ∠
5 0101 ∠
2,10 *x010 ∠
10 *1010 ∠
8,10 10x0 ∠
12 1100 ∠
8,12 1x00 ∠
--------------
---------------
13 *1101 ∠
5,13 x101
14 *1110 ∠
10,14 *1x10 ∠
---------------
12,13 110x ∠
15 1111 ∠
12,14 11x0 ∠ ----------------13,15 11x1 ∠ 14,15 111x ∠
Таблица покривања представља правоугаону таблицу чије су колоне означене векторима на којима дата функција има вредност 1 а врсте су означене простим импликантима те функције. Ако импликант i покрива вектор j онда се у таблици покривања у пресеку i-те врсте и j-те колоне уписује неки знак, нпр. знак "*". Тако се поступа за сваки прости импликант. 160
За скуп простих импликаната каже се да је непреопширан ако се из њега не може удаљити ниједан прости импликант а да преостали прости импликанти и даље покривају задату функцију, тј. да покривају све колоне таблице. Поступак одређивања минималне дисјунктивне нормалне форме функције на основу таблице покривања садржи следеће кораке: 1. Уочити у таблици покривања и означити, нпр. заокруживањем, све битне просте импликанте, а такође заокружити одговарајуђе ознаке врста. За прости импликант се каже да је битни прости импликант ако постоји вектор на којем функција има вредност 1 који не припада ниједном другом простом импликанту. Сваки битни прости импликант мора бити садржан у свакој минималној дисјунктивној нормалној форми задате функције. Битни прости импликант се препознаје у таблици покривања по томе што се у њој уочи колона са само једним јединим знаком * а врста којој овај знак припада означена је битним простим импликантом. 2. Уочене битне просте импликанте унети у скуп импликаната функције, а означене врсте прецртати. Затим прецртати оне колоне које садрже знак * у прецртаним врстама, јер су одговарајући вектори покривени изабраним импликантом. После тога се прецртавају тзв. покривене врсте које се познају по томе што за сваки непрецртани знак * у тој врсти постоји у истој колони бар још један непрецртани знак *. 3. Уколико таблица покривања нема битних простих импликаната (то је тзв. цикличка таблица покривања), узима се и означава се један од импликаната чија врста садржи највећи број знакова * (он покрива функцију на највећем броју вектора). Даље се врши прецртавање врста и колона као у кораку 2. 4. Кораци 2 и 3 се понављају све док у таблици покривања постоје непрецртане колоне. По завршетку поступка импликанти означени у таблици покривања образују минималну дисјунктивну нормалну форму задате функције и чине непреопширни скуп простих импликаната. Одређивање непреопширног скупа простих импликаната није једнозначно јер у кораку 3 има више начина избора, а то значи да може постојати више непреопширних скупова простих импликаната, између којих треба изабрати минимални. За налажење свих непреопширних скупова простих импликаната за таблице покривања са малим бројем врста користи се алгебарска метода позната као Петрикова метода (Patrick), која се састоји у следећем: Сви прости импликанти функције f(x1,x2,...,xn) означе се посебним прекидачким променљивим a,b,c,... , при чему се формално сматра да свака од 161
ових променљивих има вредност 1 ако одговарајући прости импликант улази у непреопширни скуп импликаната. Затим се дефинише посебна прекидачка функција fp(a,b,c,...) која се назива функција покривања која својом вредношћу 1 означава све случајеве покривања функције f(x1,x2,...,xn). Тада се за сваку колону таблице покривања образује елементарна сума од ознака свих простих импликаната који у тој колони имају знак *. Производ свих тако добијених елементарних сума представља функцију покривања fp за дату таблицу покривања. Ако се сада функција покривања трансформише у своју дисјунктивну нормалну форму и примени правило апсорпције, тада ће сваки импликант функције fp дефинисати један неопреопширан скуп простих импликаната функције f(x1,x2,...,xn). На основу усвојеног критеријума минималне реализације између свих нађених неопреопширних скупова простих импликаната одређује се минимална дисјунктивна нормална форма задате функције. Пример. Таблица покривања и начин добијања непреопширних скупова простих импликаната за прекидачку функцију чије смо просте импликанте одредили у таблици 7.3 дати су у таблици 7.4. Таблица 7.4 − Добијање непреопширних скупова простих импликаната Петриковом методом 0000
0101
a
11xx
b
00xx
c
1xx0
d
x0x0
e
0x01
*
f
x101
*
1000
1100
1111
*
*
* * *
*
*
fp = (b v d)(e v f)(c v d)(a v c)a = abce v abcf v acde v acdf v abde v abdf v acde v ade v adf v abcde v abcdf = abce v abcf v ade v adf. Минималне форме:
f = x1 x2 ∨ x2 x 4 ∨ x1 x3 x4;
f = x1 x2 ∨ x2 x4 ∨ x2 x3 x4.
Минимизација система прекидачких функција Еконимичност синтезе прекидачких мрежа за скуп (систем) прекидачких функција, односно за вишеизлазне мреже, зависи од алгебраских форми функција на основу којих се врши синтеза. Један од начина решења овог проблема јесте независна минимизација сваке функције а затим реализација од162
говарајућих оптималних мрежа. Међутим, још се већа економичност може постићи увођењем појма вишеизлазних простих импликаната, јер се тада користе импликанти заједнички за више функција система функција. Нека је F = {f1,f2,...,fm} скуп прекидачких функција. Логички производ назива се прости вишеизлазни импликант или прости импликант система функција ако је он импликант свих прекидачких функција подскупа F' ⊆ F, и ако ниједан његов део није импликант свих функција из F'. Може се доказати да ће сваки прости импликант производа свих функција подскупа F' ⊆ F бити вишеизлазни прости импиликант. Како F' може садржати и само једну прекидачку функцију, то су сви прости импликанти појединих функција скупа F такође и вишеизлазни прости импликанти. Обрнути не важи, јер неки вишеизлазни прости импликанти не морају бити импликанти ниједне функције посматране посебно. Овако дефинисани вишеизлазни прости импликанти омогућавају оптималну двостепену И-ИЛИ реализацију вишеизлазних прекидачких мрежа. Од неколико метода за минимизацију система прекидачких функција описаћемо модификовану Мак-Класкијеву методу, која се састоји у следећем: 1) За сваку функцију уводи се у Мак-Класкијевој таблици m додатних колона, тзв. колона покривања. Функцији fi, (i = 1,2,...,m), одговара i-та колона покривања у коју се уноси знак * ако индекс одговарајуће врсте учествује у покривању те функције. 2) Два вектора се удружују ако бар у једној колони постоји истовремено знак * (у супротном се не врши удруживање). 3) Резултат удруживања се уноси у следећу итерациону таблицу а у колонама покривања ставља се знак * само онда ако је он истовремено постојао у одговарајућим колонама покривања оба удруживана вектора. 4) Вектор који је учествовао у удруживању означава се знаком "∠" само када вектор који је добијен удруживањем покрива исте функције система. 5) У скуп вишеизлазних простих импликаната улазе сви логички производи који одговарају неозначеним векторима. На основу скупа вишеизлазних импликаната формира се заједничка таблица покривања за све функције система. Вишеизлазни импликант се уноси у таблицу покривања функције fi само ако у одговарајућој колони покривања постоји знак *. У заједничкој таблици покривања прво се селектује скуп битних простих импликаната за све функције, а затим се за сваку функцију одређују најповољнији непреопширни скупови вишеизлазних простих импликаната. 163
Због коришћеног начина означавања у колонама покривања постоји одређени губитак информација, јер у сваком улазном вектору где има више знакова * одговарајући прости импликант је истовремено прости импликант не само производа свих функција које имају знак *, већ и сваког подскупа тих функција. Међутим, поступак примене заједничке таблице покривања узима у обзир ову чињеницу, али је примена одређеног критеријума оптимизације усложњена пошто он зависи од броја функција система које се покривају неким вишеизлазним импликантом. Како овај проблем знатно усложњава поступак минимизације, ми ово нећемо узимати у обзир, јер код интегрисаних кола и већине критеријума оптимизације нема битног утицаја на цену. Пример. У таблици 7.5 дат је пример одређивања вишеизлазних простих импликаната за систем прекидачких функција, а у таблици 7.6 дата је заједничка таблица покривања и минималне дисјунктивне нормалне форме следећег система функција: Таблица 7.5 − Одређивање вишеизлазних простих импликаната В f1 f2 f3 ∠ i В f1 f2 f3 ∠ i В f1 f2 f3 001x * * * 2,3,6,7 0x1x * * 0010 * * * ∠ 2,3 0x10 * * ∠ 0100 * * ∠ 2,6 2,3,10,11 x01x * ----------------------2,10 x010 * ∠ 4,5,6,7 01xx * * 010x * * ∠ 3 0011 * * * ∠ 4,5 4,5,12,13 x10x * 01x0 * * ∠ 5 0101 * * ∠ 4,6 4,6,12,14 x1x0 * x100 * * -------------------------------6 0110 * * ∠ 4,12 -----------------------5,7,13,15 x1x1 * 9 1001 * * ∠ 0x11 * * ∠ 10 1010 * ∠ 3,7 6,7,14,15 x11x * 12 1100 * * * 3,11 x011 * * 9,11,13,15 1xx1 * ---------------------5,7 01x1 * * ∠ 12,13,14,15 11xx * * x101 * 7 0111 * * ∠ 5,13 ∠ 011x * * ∠ 11 1101 * * ∠ 6,7 Нису удруживани вектори: x110 * 13 1101 * * ∠ 6,14 ∠ 2,3,10,11 и 6,7,14,15 10x1 * * 14 1110 * * ∠ 9,11 ----------------------9,13 1x01 * ∠ * ∠ 15 1111 * * <---∠ 10,11 101x 12,13 110x * * ∠ Нису удруживани 12,14 x111 * * ∠ Нису удруживани вектори: вектори: 10 i 14 ---------------------2,10 и 6,14; 3,7 и 11,15; 7,15 x111 * ∠ 3,11 и 7,15; 10,11 и 14,15 11,15 1x11 * ∠ i 2 4
13,15 14,15
164
11x1 111x
* *
* *
∠ ∠
∠
∠ ∠ ∠ ∠
i 4,5,6,7,12,13,14,15
B f1 f2 f3 ∠ x1xx *
F1(1) = {2, 3, 9, 11, 12, 13, 14, 15}; F2(1) = {2, 3, 4, 5, 6, 7, 12, 13, 14, 15} ; F3(1) = {2, 3, 4, 5, 6, 7, 9, 10, 11, 12} . Анализом заједничке таблице покривања (таблица 7.6) прво уочавамо битне вишеизлазне импликанте, а то су: - за функцију f1: x1x2 и x1 x2 x3, - за функцију f3: x1 x2, x2 x3 и x1 x2 x4 .
Таблица 7.6 − Заједничка таблица покривања система функција f1 f2 f3 1 1 1 1 1 1 1 1 1 1 1 1 2 3 9 1 2 3 4 5 2 3 4 5 6 7 2 3 4 5 2 3 4 5 6 7 9 0 1 2 1100 * * * 001x * * * * * * x100 * * * * x011 * * * * * 10x1 * * * * 0x1x * * * * * * * * x01x * * * * 01xx * * * * * * * * 1xx1 * * * * 11xx * * * * * * * * x1xx * * * * * * * *
Затим се узима импликант x2 x3 x4 јер покрива функцију f3 на преосталом непокривеном вектору 12. Тако се добијају следеће минималне форме полазних прекидачких функција са вишезначним импликантима: f1(x1,x2,x3,x4) = x1x2 ∨ x1 x2 x3 ∨ x1 x2 x4, f2(x1,x2,x3,x4) = x1x2 ∨ x1 x2 ∨ x1 x2 x3, 165
f3(x1,x2,x3,x4) = x1 x2 ∨ x2 x3 ∨ x1 x2 x4 ∨ x2 x3 x4 . Минималне форме задатих функција добијене минимизацијом сваке функције посебно имају следећи облик: f1мин(x1,x2,x3,x4) = x1 x2 ∨ x1 x2 x3 ∨ x1 x4, f2мин(x1,x2,x3,x4) = x2 ∨ x1 x3, f3мин(x1,x2,x3,x4) = x1 x2 ∨ x2 x3 ∨ x2 x3 x4 ∨ x1 x2 x4. На сл. 7.7 приказана су оба начина реализације, тј. реализација добијена модификованом Мак-Класкијевом методом у којој се користе вишеизлазни прости импликанти, и реализација добијена минимизацијом сваке функције посебно. Види се да коришћење вишеизлазних импликаната даје економичнију реализацију и по укупном броју улаза и по укупном броју логичких кола, јер је у првом случају потребно укупно 15 улаза и 9 логичких кола, а у другом 20 улаза и 11 логичких кола.
x1 x2 x3
V
f2
x1 x2 x1 x2 x2 x3
V
V
а) Реалаизација коришћењем вишеизлазних импликанти
f3
x1 x2 x4 x2 x3 x4
V
V
V
V
x1 x2 x3
f1
V
V
x1 x2
V
V
V
x1 x2
V
V
x1 x2 x4
x1 x4
V
V
x1 x2 x3
x1 x2
V
x1 x2
x2
V
f1
V
f2
V
f3
б) Реализација посебном минимизацијом функција
Слика 7.7 Реализација система прекидачких функција
166
7.7 Минимизација у другим базисима Слично минимизацији у класи дисјунктивних нормалних форми могу се развити и поступци за минимизацију у класи конјунктивних нормалних форми. Међутим, сада се налазе просте имплиценте и удруживање вектора на којима функција има вредност 0. При писању имплиценте за неку фигуру вредности 1 одговара променљива са негацијом а вредности 0 одговара променљива без негације. На сл. 7.8 дати су примери минимизације конјунктивних нормалних форми помоћу кубова и Карноових карти. x1x2
x3
00 01 11 10 00
x2
x3 x4 x1
а) f = (x1 x 2)
(x1 x2 x3)
б)
01 0 11 0 0
0
10 0 0
f = (x1 x3)
(x2 x3 x4)
Слика 7.8 Минимизација конјунктивних нормалних форми
Други начин добијања минималних конјунктивних нормалних форми заснива се на већ описаним поступцима за налажење минималних дисјунктивних нормалних форми. Наиме, може се доказати да налажењем минималне дисјунктивне нормалне форме за функцију f и њеним комплементирањем добијамо минималну конјунктивну нормалну форму функције f. Због другачијих особина које има функција ⊕ минимизација полиномних нормалних форми је специфична јер се могу удруживати и вектори на којима функција има вредност 0. На основу особине да је x ⊕ x = 0 добија се правило: при минимизацији полиномних форми вектори на којима функција има вредност 0 могу се удруживати само паран број пута а вектори на којима функција има вредност 1 могу се удруживати непаран број пута. Производ се формира на исти начин као код дисјунктивних нормалних форми. На сл. 7.9 приказана је минимизација полиномних нормалних форми коришћењем кубова и Карноових карти.
167
x1x2
x3
00 01 11 10 1 1 00
x1x 2
1
1
11
x1 f = x3
1
x3x4 01
x2
10
1
f = x1x3
x2 x4
x1 x2 x3
Слика 7.9 Минимизација полиномних нормалних форми
7.8 Затворене класе прекидачких функција Сваки подскуп скупа свих прекидачких функција n независно променљивих назива се класа прекидачких функција ако задовољава неки одређени услов на основу кога се препознаје класа. У прекидачкој алгебри проучава се већи број класа, али посебан значај имају тзв. затворене класе прекидачких функција. Класа прекидачких функција назива се затворена класа ако се суперпозицијом функција из једне класе добија поново функција из исте те класе. Може се доказати да у прекидачкој алгебри постоји само пет затворених класа. То су следеће класе:
Прекидачке функције које задржавају нулу
За прекидачку функцију f(x1,x2,…,xn) каже се да задржава нулу ако задовољава услов: f(0,0,...,0) = 0. Како су све ове функције дефинисане само на једном вектору, вектору 00...0, на осталих 2n-1 вектора могу имати било коју вредност из скупа {0,1}, па је њихов укупан број 2 2
n
−1
.
Прекидачке функције које задржавају јединицу
За прекидачку функцију f(x1,x2,…,xn) каже се да задржава јединицу ако задовољава услов: f(1,1,...,1) = 1. Како су све ове функције дефинисане само на једном вектору, вектору 11...1, на осталих 2n-1 вектора могу имати било коју вредност из скупа {0,1}, па је њихов укупан број 2 2 168
n
−1
.
Самодуалне прекидачке функције
За прекидачку функцију f(x1,x2,…,xn) дуална функција fd(x1,x2,…,xn) једнака је: fd(x1,x2,…,xn) = f ( x1 , x2 ,..., xn ) . Прекидачка функција је самодуална ако је једнака својој дуалној функцији, тј. ако важи једнакост: f(x1,x2,…,xn) = f ( x1 , x2 ,..., xn ) . Другачије се може рећи да је функција самодуална ако на супротним векторима има комплементарне вредности. При томе се за два вектора каже да су супротни ако имају све компоненте (координате) комплементарне. У таблици истинитости вектори су симетрични у односу на средину таблице, тј. супротни су први и последњи вектор, други и претпоследњи, итд. Одавде следи врло прост начин испитивања самодуалности помоћу таблице истинитости: на супротним векторима самодулана функција има комплементарне вредности. Ово нам омогућава и да одредимо колико има могућих самодуалних функција од n променљивих. Наиме, како је укупан број вектора који нису супротни 2n-1, то се само на њима може функција произвољно дефинисати, па је укупан број самодуалних функција 2 2
n −1
.
Монотоне прекидачке фуyнкције
Да би дефинисали монотоне прекидачке функције потребно је претходно дефинисати релацију парцијалног уређења вектора из скупа {0,1}n. За два вектора A=(a1,a2, ...,an) и B=(b1,b2,..., bn) кажемо да важи релација A ≤ B ако важи аi ≤ bi за свако i=1,2,...,n. Тада за векторе A и B кажемо да су упоредиви вектори. Уколико за два вектора не важи релација A ≤ B кажемо да ти вектори нису упоредиви. Прекидачка функција се назива монотона функција ако на свим паровима упоредивих вектора важи: Ако је A ≤ B тада је и f(A) ≤ f(B).
169
Линеарне прекидачке функције
Прекидачка функција се назива линерна функција ако се може представити у облику: f(x1,x2,…,xn) = a0 ⊕ a1x1 ⊕ a2x2 ⊕ … ⊕ anxn, aj ∈ {0,1}, j = 1,2,…,n . Како се линеарне функције разликују према вредности коефицијената аj, којих има n+1, то је број линераних функција n променљивих једнак 2n+1. Нека прекидачка функција је линеарна ако канонички полином те функције има само линеарне чланове.
7.8 Потпуни скупови прекидачких функција Комбинациона мрежа се може разматрати као скуп повезаних на одређени начин логичких елемената који реализују елементарне логичке функције. Основно питање које се поставља гласи: дат је скуп логичких елемената, да ли је могуће њиховим повезивањем реализовати сваку прекидачку функцију. Скуп логичких елеманата назива се потпуни скуп или базис ако се било која прекидачка функција може реализовати повезивањем на одређени начин коначног броја елемената из тог скупа. Ако су f1, f2, ..., fm елементарне логичке функције које реализују елементи из потпуног скупа тада се такође каже да ове функције образују потпуни скуп прекидачких функција или базис јер се њиховом суперпозицијом може представити било која прекидачка функција. Примери потпуних скупова. Раније смо показали да се свака прекидачка функција може представити у облику ПДНФ или ПКНФ. Како у овим нормалним формама фигуришу само функције ИЛИ, И и НЕ следи закључак да ове функције образују потпуни скуп. Код представљања прекидачких функција помоћу ППНФ фигуришу само функције ⊕, ИЛИ и НЕ, па ове функције такође образују потпуни скуп функција. Из представљања прекидачких функција каноничким полиномом следи потпуност скупа функција ⊕, И, константа 1. Потпуни скуп функција назива се минимални потпуни скуп ако изостављањем било које од ових функција скуп функција не задржава потпуност. Потпуни скуп функција назива се преопширан (редундантан) потпуни скуп ако изостављањем неке функције он и даље задржава потпуност. Пример преопширног потпуног скупа представља скуп функција ИЛИ, И, НЕ, јер на основу Де 170
Морганових правила И функција се може изразити помоћу ИЛИ и НЕ функција, што значи да потпуни скуп образују само функције ИЛИ и НЕ. На исти начин се може показати и да потпуни скуп образују И и НЕ функције. Постоје прекидачке функције које саме образују потпуни скуп. Ове се функције називају универзалне или Шеферове функције.
Доказивање потпуности
Потпуност скупа прекидачких функција најчешће се доказује на један од следећа два начина. 1) Доказивање потпуности на основу затворених класа и следеће теореме која се назива Постова теорема (E. Post): Теорема. Скуп прекидачких функција је потпун ако садржи бар једну функцију која не задржава нулу, бар једну функцију која не задржава јединицу, бар једну несамодуалну фуинкцију, бар једну немонотону и бар једну нелинеарну функцију. На основу колона означених у таблици 6.5 симболима K0, K1, S, M и L и Постове теореме може се проверити потпуност раније поменутих скупова функција. Важи и следећа теорема: Теорема: Из сваког потпуног скупа прекидачких функција може се издвојити потпуни подскуп који садржи највише четири прекидачке функције. Доказ следује из следећег разматрања . Нека је f1, f2, ..., fm потпуни скуп функција. Тада овај скуп мора садржати функцију f* која не задржава константу нула, што значи да је f*(0,0...,0) = 1. Размотримо следећа два случаја: а) ако је још f*(1,1,...,1) = 1 тада је функција f* истовремено и несамодуална, б) ако је међутим f*(1,1,...,1) = 0 тада је функција f* истовремено немотона и не задржава константу 1. Додајући функцији f* у првом, горем случају, још три функције које не припадају осталим затвореним класама добија се потпуни скуп који садржи највише четири прекидачке функције. Понекада се разматрају и тзв. слаби потпуни скупови прекидачких функција. То су потпуни скупови за које се претпоставља да увек садрже константе 0 и 1. Како константе 0 и 1 не задржавају нулу, не задржавају јединицу и нису 171
самодуалне, следи закључак: Скуп функција је слабо потпун ако садржи бар једну немотону и бар једну нелинеарну функцију. Често је потребно решити следећи задатак: дат је скуп функција, испитати да ли је он потпун и ако није допунити га што простијим функцијама до потпуног скупа. Овде је потребно испитати којим све затвореним класама припадају функције из задатог скупа, а затим додати константе или негацију да би се добио потпуни скуп. Ако се тиме не решава проблем треба додати неку функцију две независно променљиве.
2) Доказивање потпуности на основу већ познатог потпуног скупа. Претпоставимо да је је за скуп функција f1, f2, ..., fm доказано да образује потпуни скуп. Потребно је утврдити потпуност новог скупа функција g1, g2, ..., gk. Лако се уочава да ће скуп g1, g2, ..., gk бити потпун ако се помоћу функција из тог скупа могу изразити све функције из скупа f1, f2, ..., fm , тј. ако важи: f1 = F1(g1,g2,...,gk) f2 = F2(g1,g2,...,gk) .............. fm = Fm(g1,g2,...,gk)
Пример. На основу релација x =x/x;
x =x○x;
x1 ∧ x2 = (x1/x2)/(x1/x2) ;
x1 ∨ x2 = (x1 ○ x2) ○ (x1 ○ x2) ,
следи да функције НИ и НИЛИ поседују особину да свака посебно образује потпуни скуп функција, тј. да су оне универзалне или Шеферове функције.
172
8 СИНТЕЗА КОМБИНАЦИОНИХ МРЕЖА
8.1 Синтеза са НЕ, И и ИЛИ елементима Као што је већ речено раније, проблем структурне синтезе се састоји у изградњи структурне шеме комбинационе мреже која реализује задату прекидачку функцију или систем прекидачких функција. При томе се претпоставља и да је извршен избор потпуног скупа (базиса) логичких елемената који задовољавају одређене захтеве конкретне примене. Данас се производи више фамилија логичких елемената који се могу користити за синтезу комбинационих мрежа. То су пре свега логички елементи који реализују елементарне логичке функције, али се такође користе и сложенији, тзв. функционални или стандардни елементи као што је нпр. мултиплексер. У даљем излагању биће описан начин синтезе комбинационих мрежа одређеним логичким елементима. Први и врло популаран скуп логичких елемената коришћених за синтезу комбинационих мрежа састојао се од елемената НЕ, И и ИЛИ. Иако овај скуп није минималан потпуни скуп елемената, јер смо показали да потпуне скупове образују елементи НЕ и И или НЕ и ИЛИ, практично се увек користи скуп НЕ, И и ИЛИ, пре свега из следећих разлога: а) поступак синтезе је простији, од аналитичког представљања и посебних алгоритама минимизације до преласка на структурну шему; б) добијају се простије комбинационе мреже. У претходном поглављу су наведени кораци од којих се састоји поступак синтезе, као и начин прелаза од аналитичких израза за минималне дисјунк173
тивне и конјунктивне нормалне форме на структурне шеме за које су потребни логички елементи НЕ, И и ИЛИ. Те структурне шеме имају три степена ако И и ИЛИ елементи могу имати произвољан број улаза или два степена ако су расположиви комплементи променљивих. Реализација структурних шема на основу минималних дисјунктивних или минималних конјунктивних нормалних форми није најоптималнија. Наиме, ако се користе заграде тада се говори о апсолутно минималним представљањима. То су тзв. минималне форме са заградама или факторизоване минималне форме. Реализација комбинационих мрежа на основу факторизованих минималних форми је оптималнија али су мреже вишестепене. Постоји и алгоритам за одређивање апсолутно минималних израза али је он практично неприменљив већ за n веће од 4, чак ако се користи и рачунар. У пракси се чешће користи минимизација факторизацијом минималних дисјунктивних нормалних форми. Мећутим, ови изрази нису апсолутно минимални, јер је доказано да се свим могућим факторизацијама од минималне дисјунктивне нормалне форме не може добити апсолутно минимална форма. Ако И и ИЛИ елементи имају ограничен број улаза тада се производи и суме са већим бројем улаза реализују на начин приказан на сл. 7.4(стр. 118). Пример. Функцију задату скупом индекса F(1) = {0,1,2,5,8,9} треба реализовати елементима И и ИЛИ са два улаза (на улазу су разположиви и комплементи). На сл. 8.1 дата је реализација помоћу минималне дисјунктивне нормалне форме која има облик f = x1 x2 x4 ∨ x1 x3 x4 ∨ x2 x3 и факторизоване минималне дисјунктивне нормалне форме облика f = x1 ( x2 x4 ∨ x3 x4) ∨ x2 x3 .
f
x2 x4 x3 x4 x2 x3
V
V
V
V V
V V V
x2 x3
x4
V
V
x1 x3
x4
V
x1
V
x1 x2
Слика 8.1 Реализација функција логичким елементимаNE , I
174
V
иILI
f
8.2 Синтеза са НИ и НИЛИ елементима Раније је било показано да НИ и НИЛИ функције од две променљиве свака посебно образују потпуни скуп функција. По аналогији са овим функцијама могу се дефинисати и n-арна НИ функција x1/x2 / ... /xn и n-арна НИЛИ функција x1○x2○ ... ○xn. Ове су функције дате у таблици 8.1. Таблица 8.1 − n-арне НИ и НИЛИ функције x1
x2
...
xn-1
xn
x1 / x2 / ... / xn-1 / xn
x1 ○ x2 ○ … ○ xn-1 ○ xn
0
0
...
0
0
1
1
0
0
...
0
1
1
0
0
0
...
1
0
1
0
...
...
...
...
...
...
...
1
1
...
1
0
1
0
1
1
...
1
1
0
0
И за n-арне НИ и НИЛИ функције не важи асоцијативни закон али важи комутативни закон. Осим тога важе и следеће једнакости: x / x / ... / x = x ;
x ○ x ○ ... ○ x = x ;
x / x / ... / x / x / ... / x = 1 ;
x ○ x ○ ... ○ x ○ x ○ ... ○ x = 0 ;
x1/ ... / xk / 1 / ... / 1 = x1 / ... / xk ;
x1 ○ x2 ○ ... ○ xk ○ 1 ○ ... ○ 1 = 0 ;
x1/ ... / xk / 0 / ... / 0 = 1 ;
x1○ x2 ○...○ xk ○ 0 ○...○ 0 = x1 ○ x2 ○...○ xk
x1 / x2 / ... / xn = x 1 x2 ... x n ;
x1 ○ x2 ○ .... ○ xn = x 1 ∨ x2 ∨ ... ∨ x n
Могуће је за НИ и НИЛИ функције добити аналитичке изразе сличне потпуним нормалним формама, али их ми нећемо разматрати. Проблем минимизације се може решити на два начина: 1) По аналогији са минимизацијом у класи дисјунктивних нормалних форми могу се развити специјалне методе минимизације. Тако постоје поступци слични коришћењу појма простих импликаната. Може се доказати да за НИ и НИЛИ функције од две променљиве правила удруживања и апсорпције имају следећи облик: (x1 / x2) / ( x1 / x2) = x2 ; 175
(x1 ○ x2) ○ ( x1 ○ x2) = x2 ;
x1 / ( x1 / x2) = x1 или x1 / (x1 / x2) = x1 ; x1 ○ ( x1 ○ x2) = x1 или x1 ○ (x1 ○ x2) = x1. 2) Минимизација се врши у класи дисјунктивних или конјунктивних нормалних форми а затим се врши прелаз на НИ или НИЛИ функције применом ДеМорганових правила на следећи начин. Нека је одређена минимална дисјунктивна нормална форма неким од раније описаних поступака. Ако се десна страна два пута комплементира и за један комплемент примени ДеМорганово правило добија се израз из кога се директно може формирати структурна шема са НИ елементима. При томе тростепеним или двостепеним мрежама са НЕ, И и ИЛИ елементима одговарају двостепене или тростепене мреже са НИ елементима. Како је писање аналитичких израза у општем облику врло гломазно, из примера ће бити лако уочен начин прелаза. Ако су на располагању НИЛИ елементи поступак прелаза је сличан али се полази од минималне конјунктивне нормалне форме. Пример. За функцију са слике 7.6а (стр. 121) минимална дисјунктивна нормална форма има облик: f1min = x3 x4 ∨ x1 x2 x4 ∨ x1 x3 x4 , а за функцију са слике 7.8б (стр. 131) минимална конјунктивна нормална форма има облик: f2min = (x1 ∨ x3 )(x2 ∨ x3 ∨ x4 ) . Ако се примене описане трансформације добијају се следећи аналитички изрази са НИ односно НИЛИ елементима: f1min = x3 x4 ∧ x1 x2 x4 ∧ x1 x3 x4 = (x3 / x4) / (x1 / x2 / x4 ) / ( x1 / x3 / x4 ) , f2min = ( x1 ∨ x3 ) ∨ ( x2 ∨ x3 ∨ x4 = (x1 ○ x3 ) ○ (x2 ○ x3 ○ x4 ) . На слици 8.2а дата је структурна шема за функцију f1 са НИ елементима а на слици 8.2б дата је структурна шема за функцију f2 са НИЛИ елементима. При томе је претпостављено да су на располагању НИ и НИЛИ елементни са произвољним бројем улаза, као и комплементи променљивих. Ако је број улаза НИ или НИЛИ елемената ограничен тада се НИ и НИЛИ функције за већи број улаза реализују применом одређених еквивалентних трансформација. Ниже је показано како изгледају ове трансформације ако су на располагању НИ и НИЛИ елементи са само два улаза:
176
x3 x4 x1 x2 x4
x1 x3
/
x1 x3 x4
/
/
/
а)
f2
x2 x3 x4
f1
б)
Слика 8.2 Структурне шеме са NI и NILI елементима
x/x = x ; x1 / x2 / x3 = x1 x2 x3 = ( x1 x2 ) x3 = x1 / x2 x3 = [( x1 / x2 ) /( x1 / x2 )] / x3 ; x1/x2 /x3 /x4 = ( x1 x2 )( x3 x4 ) = ( x1 / x2 ) ( x3 x4 ) = [(x1/x2)(x1/x2)] / [(x3/x4)(x3/x4)] . На слици 8.3 приказан је начин реализације НИ функција од три и четири променљиве помоћу НИ елемената са два улаза. Сличне трансформације могу се наћи и за већи број променљивих. x x1 x2
/ /
x /
/
x3 f3 = x1 / x2 / x3 = x1 x2 x3
f3
x1 x2
/
x3 x4
/
/ / /
f4
f4 = x1 / x2 / x3 / x4 = x1 x2 x3 x4
Слика 8.3 Реализација NI функција NI елементима са два улаза
За НИЛИ елементе трансформације су следеће: x○x= x; x1○x2○x3 = x1 ∨ x2 ∨ x3 = ( x1 ∨ x2 ) ∨ x3 = x1 o x2 ∨ x3 = [(x1○ x2) ○ (x1○ x2)] ○ x3 ; x1○x2○x3○x4 = x1 ∨ x2 ∨ x3 ∨ x4 = ( x1 ∨ x2 ) ∨ ( x3 ∨ x4 ) = ( x1 o x2 ) ∨ ( x3 o x4 ) = [(x1 ○ x2) ○ (x1 ○ x2)] ○ [(x3 ○ x4) ○ (x3 ○ x4)]. На слици 8.4 приказан је начин реализације НИЛИ функција од три и четири променљиве помоћу НИЛИ елемената са два улаза. Сличне трансформације могу се наћи и за већи број променљивих. 177
x x1 x2
x1 x2
x f3
x3
f3 = x1 ° x2 ° x3 = x1
x2
x3
f4
x3 x4 f4 = x1 ° x2 ° x3 ° x4 = x1
x2
x3
x4
Слика 8.4 Реализација NILI функција NILI елементима са два улаза
8.3 Синтеза са елементима ⊕ Функција ⊕ користи се и у каноничким полиномима, где потпуни скуп образују константа 1, И и ⊕, и у полиномним нормалним формама, где потпуни скуп образују НЕ, И и ⊕. Како су канонички полиноми јединствени, минимизација за њих није потребна а поступак синтезе је исти као и за дисјунктивне нормалне форме. Аналитички израз за канонички полином налази се на раније описан начин, тј. преко таблице истинитости и потпуне полиномне нормалне форме у којој се врши смена x = x ⊕ 1 или помоћу Булових диференци. Напоменимо да тзв. поларизовани канонички полиноми садрже још и комплемент, па се може тражити минимална форма у класи ових полинома. Пример. Синтетизовати помоћу каноничког полинома прекидачке функције Fs(1) = {1,2,4,7} и Fp(1) = {3,5,6,7}. fs(x1,x2,x3) = x1 x2 x3 ⊕ x1 x2 x3 ⊕ x1 x2 x3 ⊕ x1x2x3 = (x1⊕1) (x2⊕1)x3 ⊕ (x1⊕1)x2(x3⊕1) ⊕ x1(x2⊕1)(x3⊕1) ⊕ x1x2x3 = x1 ⊕ x2 ⊕ x3 , fp(x1,x2,x3) = x1 x2 x3 ⊕ x1 x2 x3 ⊕ x1x2 x3 ⊕ x1x2x3= x1x2 ⊕ x1x3 ⊕ x2x3 . На слици 8.5 приказана је реализација ових прекидачких функција на основу каноничких полинома. Ако се врши синтеза у класи полиномних нормалних форми потребно је применити неку од посебних метода минимизације за полиномне форме. Ми смо у седмом поглављу описали модификацију коришћења хиперкубова и Карноових карти, али се могу модификовати на одговарајући начин и Квајнова и Мак-Класкијева метода или користити специфичне методе. 178
x1 x3 x2 x3
V
fs
V
x1 x2 x3
V
x1 x2
fp
Слика 8.5 Реализација мрежа на основу каноничког полинома
Пример. Синтетизовати у класи полиномних нормалних форми прекидачку функцију F(1) = {0,3,5,6,11,12,13,14ћ. На слици 8.6 приказан је начин минимизације ове функције помоћу Карноове карте и структурна шема њене реализације.
x3 x4
01
1 1
11 1 10
1 1
1
f = x2
x3 x4
x1x3x4
x1 x3 x4
x2
f
V
x3 x4
V
x1 x2
00 01 11 10 00 1 1
Слика 8.6 Реализација мреже на основу полиномне форме
8.4 NPN класификација прекидачких функција Један од начина за реализацију прекидачких функција јесте коришћење одређених класа еквиваленције дефинисаних у односу на начин реализације функција. Наиме, претпоставимо да смо неку прекидачку функцију од n променљивих реализовали неком прекидачком мрежом. Ако на улазе уместо променљивих доводимо њихове негације (комплементе), или вршимо пермутацију променљивих или и једно и друго, добићемо класу функција које се могу реализовати том истом прекидачком мрежом. Зато се за дефинисање класа еквиваленције користе следеће операције: 1) N класа - класа функција које се добијају негацијом једне или више независно променљивих,
179
2) NP класа - класа функција које се добијају негацијом и пермутацијом променљивих, 3) NPN класа - класа функција које се добијају негацијом и пермутацијом независно променљивих и негацијом излаза. Одређивањем свих могућих класа еквиваленције и свих функција које припадају одређеној класи добија се следећа могућност: за реализацију свих функција из једне исте класе користи се само једна прекидачка мрежа која за сваку класу реализује неку функцију представника ("прототип") те класе. Остале функције из класе добијају се применом операција које полазну функцију своде на прототип класе. На слици 8.7 приказан је начин реализације свих функција из једне исте класе. У таблици 8.2 дат је број функција представника појединих класа еквиваленције. Као што се види и овај приступ за n веће од четири постаје непрактичан због значајног повећања броја класа са порастом n.
x1
x1 x1
∼ xi1
x2
x2 x2
∼ xi2
. . . xn xn
xn
. . .
Представник NPN класе
f(x1 ,...,xn )
∼ xin
Слика 8.7 Реализација функција на основу NPN класификације Таблица 8.2 − Број функција представника у N, NP и NPN класама Број променљивих n
1
2
3
4
5
6
Број функција од n променљивих
4
16
256
65536
4.3x109
1.8x1019
Број функција које зависе од свих n променљивих
2
10
218
64594
4.3x109
1.8x1019
Број N класа
4
12
80
3984
7
--------
6
3.7x10
Број NP класа
3
6
22
402
1.2x10
4.0x1014
Број NPN класа
2
4
14
222
6.1x105
2.0x1014
180
8.5 Функционална декомпозиција Често је прекидачку функцију f(x1,x2,...,xn) могуће изразити (представити) као функцију од функције у облику f(X) = g[h(Y),Z], Y ∪ Z = X, где је: X = {x1,x2,...,xn}, Y = {y1,y2,...,ym}, Z = {z1,z2,...,zk} . Како функције g и h могу бити знатно простије за реализацију, то се оптималнија реализација функције f може остварити синтезом посебних комбинационих мрежа за ове простије функције и њиховим повезивањем сагласно са горњим изразом. На слици 8.8 приказан је принцип реализације прекидачких функција на основу декомпозиције. Представљање (реализација) прекидачких функција на овакав начин назива се проста функционална декомпозиција (просто функционално растављање). Ако је додатно испуњен услов да је Y ∩ Z = φ, тј. услов да су X и Z дисјунктни скупови, тада се проста декомпозиција назива простом дисјунктном декомпозицијом. Може се доказати важност следећих теорема: Теорема 1. За прекидачку функцију f(x1,x2,...,xn) постоји проста дисјунктна декомпозиција ако у модификованој комбинационој таблици или у Карноовом дијаграму разноврсност врста или колона није већа од два. Теорема 2. Прекидачка функција f(x1,x2,...,xn) има просту дисјунктну декомпозицију ако у њој постоје само следеће врсте или колоне: 1) све 0, 2) све 1, 3) неки низ нула и јединица h, 4) низ h . Ове две теореме су еквивалнетне, и ако се једна односи на врсте друга се односи на колоне, и обрнуто.
181
Y
y1 y2 ... h ym
Z
z1 ... g zk
f(x1 ,...,xn ) = g[ h(y1,...,ym ),z1 ,...,zk ] f(X) = g[h(Y),Z] , Y
Z=X
Слика 8.8 Проста функционална декомпозиција
Модификована комбинациона таблица се добија тако што се узима да она представља матрицу од s врста и r колона, s,r ≥ 2, где се за ознаке врста узимају вредности променљивих из скупа Y а за ознаке колона вредности променљивих из скупа Z. Разноврсношћу врста или колона називамо број међусобно различитих врста или колона у таблици. Напоменимо да за вредности s = 1 или r = 1 растављање увек постоји, јер се декомпизиција своди на примену теореме развоја по једној променљивој, али се код декомпозиције овај случај не разматра. Ако су задовољени услови једне од две наведене теореме тада се у таблици функције траже врсте или колоне 0, 1, h и h , помоћу којих се налази декомпозиција. Код непотпуно дефинисаних функција врши се додефинисање тако да се задовоље услови декомпозиције. При томе треба имати у виду да се испитивање услова постојања декомпозиције треба да изврши за све могуће поделе скупа променљивих X у подскупове Y и Z. Тако за четири променљиве треба проверити следеће парове: 1) {x1,x2} и {x3,x4}, 2) {x1,x3} и {x2,x4}, 3) {x1,x4} и {x2,x3}. Када се добију функције g и h њих треба минимизирати на један од познатих начина. Постојање просте недисјунктне декомпозиције проверава се према сложенијем поступку који овде неће бити разматран. Пример. На слици 8.9 показан је начин испитивања постојања декомпозиције, одређивања функције h и реализација функције која има вредност 1 на скупу децималних индекса F(1) = {4, 9, 10, 12, 13, 14}, и није дефинисана на скупу децималних индекса F(*) = {1, 6, 11, 15}. Декомпозиција која није проста назива се сложена функционална декомпозиција. Следећа два облика су најпознатија:
182
x1 x2
10
1
*
1
*
*
1
1
V
x1
h = x3 x4
x2
h h(x3 ,x4 ) = x3 x4
x3 x4
f(x1,x2,h) = x1 x2h
V
V
01 * x3x4 11
x3 x4
V
00 01 11 10 00 1 1
x3 x4 = x3
x1 x2 1
f
x4
x1x2 h = x2h
x1 h
Слика 8.9 Реализација функције на основу декомпозиције
1) Вишеструка декомпозиција (слика 8.10), која има облик: f(X) = hm[h1(X1), h2(X2), ..., hm-1(Xm-1), Xm] ;
X1 ... h1 ...
......
Xm ...
hm
f(X)
Xm-1 ... h m-1 f(X) = hm [h1 (X 1), h 2(X 2),...,h m-1(X m-1), X m] Слика 8.10 Вишеструка декомпозиција
2) Итеративна декомпозиција (слика 8.11), која има облик: f(X) = hm [ Xm, hm-1(Xm-1, hm-2(..., h2(X2, h1(x1))...)) ] .
X1 ...
h1
X2 ...
h2
... Xm-1 ...
hm-1
Xm ...
f(X) = hm [ Xm , hm-1 (Xm-1 , hm-2 (...,h2 (X2 , h1 (X1 ))...))] Слика 8.11 Итеративна декомпозиција
183
hm
f(X)
Сложена декомпозиција назива се дисјунктна декомпозиција ако за сваки пар подскупова Xi , Xј важи: Xi ∩ Xј = φ,
i, j = 1, 2, ..., m, i ≠ j .
Може се доказати да се испитивање сложене дисјунктне декомпозиције своди на проверу већег броја простих дискунктних декомпозиција. Ми ове поступке нећемо разматрати. Најопштији случај сложене декомпозиције је декомпозиција у облику непотпуног стабла, сл. 8.12. Лако се при томе може уочити да вишеструка и итеративна декомпозиција представљају посебне случајеве ове декомпозиције. И декомпозиција у облику стабла може бити дисјунктна и недисјунктна. Осим тога, при практичној реализацији као функције у чворовима стабла обично се узимају елементарне функције, тј. функције које се даље не разлажу, већ оне представљају основне градивне логичке елементе. Такође се користи декомпозиција помоћу стандардних унапред усвојених функционалних модула.
a8 a4 a9
a2 a5
a10 a11
a6
a1
f
a3
a7
Слика 8.12 Функционална декомпозиција у облику стабла
8.6 Стандардни комбинациони модули Поред логичких елемената често се за синтезу комбинационих мрежа користе сложеније прекидачке мреже које представљају одређене функционалне модуле које ћемо условно називати стандардни комбинациони модули. 184
Неки од ових модула такође се нормално користе и као компоненте за реализацију појединих склопова рачунара. Ми ћемо размотрити само неке најчешће коришћене стандардне модуле.
Мултиплексери
Мултиплексер (или мултиплексор) представља комбинациону мрежу која има n управљачких улаза (n ≥ 1), 2n информационих улаза и један излаз. На основу стања управљачких улаза мултиплексер селектује један од 2n информационих улаза и прослеђује га на излаз. Из тог разлога мултиплексер се понекад назива и селектор или селекторско коло. Излазна функција мултиплексера може се представити у облику: y = x1 x2 ... xn −1 xn I0 ∨ x1 x2 ... x n −1 xn I1 ∨ ... ∨ x1x2 ... xn-1xn I2 n −1 , где су x1,...,xn управљачки улази, I0, I1, ... , I2 n −1 информациони улази а y је излазна функција мултиплексера. У пракси се најчешће користе мултиплексери са 1, 2, 3 и 4 управљачка улаза и обично се називају мултиплексери типа 2×1, 4×1, 8×1 и 16×1, респективно. На слици 8.13 приказани су мултиплексери типа 2×1 и 4×1 и њихове излазне функције.
I0 I1
y = x1 I0
0 1
x1
x1 I1
I0
00
I1
01
I2 I3
10
y = x1x2 I0
x 1 x2 I1
x1x 2 I2
x 1x 2 I 3
11
x1 x2 Слика 8.13 Мултиплексери типа 2x1 и 4x1
Мултиплексер се може реализовати коришћењем НЕ, И и ИЛИ, НИ, НИЛИ или других скупова логичких елемената. На сл. 8.14 приказана је реализација мултиплексера типа 2×1.
185
I0
v v
I1
u
x1
/
v
x1
I0
/ /
I1
u
/
Слика 8.14 Реалзација мултиплексера типа2x1
Демултиплексери
Демултиплексер представља комбинациону мрежу која има један информациони улаз I, n управљачких улаза x1,...,xn и 2n излаза Dj , j = 0,1,...,2n-1. Демултиплексер преноси бинарни сигнал који долази на информациони улаз на један од излаза који је одређен вредностима управљачких сигнала. Због тога се демултиплексер понекад назива и дистрибутор. На слици 8.15 приказане су излазне функције и графички симбол за демултиплексер.
D0 = x1x2 ...xn-1 xn I D1 = x1x2 ...xn-1 xn I
I
.....
D2n-1 = x1 x2 ...xn-1 xn I
D0 D1
DMPX ... .... D2n-1 ... x1 Xn
Слика 8.15 Излазне функције и графички симбол демултиплексера
Универзални логички модули (ULM)
Прекидачка мрежа која може да реализује било коју функцију од n променљивих назива се универзални логички модул (УЛМ) или универзално логичко коло за n променљивих и означава се са УЛМ-n. Број улаза r у УЛМ-n модул мора бити већи од n, јер неки улази треба да служе за параметре који омогућавају селекцију одређене функције n променљивих. При томе су дозвољене следеће помоћне операције: 1) Примена константи 0 и 1 на улазу, 2) Комплементирање улазних променљивих, 186
3) Пермутација улазних променљивих, 4) Комплементирање излаза. На слици 8.16 приказан је принцип реализације функција n променљивих помоћу УЛМ-n модула.
0 1
0 1 x1 x1
x1
. . . xn xn
xn
u1 u2
. . .
ULM-n модул
f(x1,...,xn )
ur
Слика 8.16 Принцип реализације функција помоћу ULM-n
модула
Један од важних проблема при конструисању УЛМ модула јесте минимизација броја улаза за одређено n. Показано је да је за n=2 минимална вредност r=3, а за n=3 је r=5. Такође је показано да за n=2 постоји укупно шест различитих УЛМ-2 модула међу којима је најпознатији мултиплексер. За УЛМ-n модуле могу се развити методе синтезе које омогућавају реализацију било које функције са више од n променљивих. Касније ће бити описана једна метода синтезе помоћу мултиплексера.
Де к оде ри
Декодер је прекидачка мрежа која има n улаза x1,...,xn и 2n излаза D0, D1, ..., n D2 n −1 и реализује следећи скуп 2 прекидачких функција: D0 = x1 x2 ... x n −1 xn , D1 = x1 x2 ... x n −1 xn , ....... D2 n −1 = x1x2...xn-1xn.
187
За сваки вектор посебних вредности на улазу само један од излазних сигнала Dj, j = 0,1,...,2n-1, има вредност 1. Тај излазни сигнал одређен је једнозначно вредностима на улазу јер изрази за Dј представљају потпуне производе n променљивих. Понекад се такође користи и декодер који на излазу реализује функције D j , што уствари означава да је излазни сигнал активан када се доведе на ниски напон (за позитивну логику). Декодер често има још један улазни сигнал Е или E који се назива сигнал дозволе или сигнал блокирања. Овај сигнал омогућава да се блокира или дозволи појављивање излазних сигнала (односно да излазни сигнали буду активни и да могу да се користе). На слици 8.17 приказани су графички симболи за декодер.
.....
...
xn
DEC
D0 D1 D2n-1
x1 x2 xn
...
X1 x2
E
DEC
D0 D1 .....
E
D2n-1
Слика 8.17 Графички симболи за декодер
Програмабилне компоненте
Последњих година као резултат унапређења технологије интегрисаних кола за реализацију комбинационих (и секвенцијалних) мрежа све више се користе тзв. програмабилне логичке компоненте (енгл. Programmed Logic Devices) које представљају интегрисана кола високог степена интеграције. Од ових компонената најчешће се користе следеће следеће: – програмабилне логичке матрице или програмабилна логичка поља (енгл. Programmed Logic Arrays), – фиксне меморије (читачке меморије) (енгл. Read-Only Memories), – програмабилна поља логичких елемената или програмабилне гејтовске матрице (енгл. Programmed Gate Arrays). Тежња да се стандардизују елементи и користе интегрисана кола високог степена интеграције довела је до новог типа прекидачких мрежа, тзв. хомогених мрежа или регуларних структура. Ове се мреже одликују специфичном структуром у којој су стандардни функционални елементи (модули) истог типа 188
поређани у неком правилном геометријском поретку, најчешће у једној равни. У овим структурама погодно је да се повезивање врши само суседних модула, а за излаз и улаз се користе само крајњи модули.
8.7 Синтеза са стандардним модулима У претходном одељку већ је напоменуто да се стандардни функционални модули могу користити за синтезу комбинационих мрежа за произвољну задату прекидачку функцију. За неке од ових модула ниже су описане методе синтезе.
Синтеза мрежа са мултиплексерима
Ако се на неку задату прекида;ку функцију f(x1,x2,...,xn) примени теорема развоја за дисјунктивне форме (Шенонова теорема развоја) по некој променљивој, нпр. x1, добија се: f(x1,x2,...,xn) = x1 f(0,x2,...,xn) ∨ x1f(1, x2, ..., xn). Упоређивањем овог израза са изразом којим се описује функционисање мултиплексера типа 2х1 закључујемо да се Шенонова теорема развоја може директно реализовати помоћу мултиплексера на начин приказан на слици 8.18а. Ако се даље свака од функција f(0,x2,...,xn) и f(1,x2,...,xn), које се понекад називају и резидуалне функције, поново примени теорема развоја по променљивој x2 добија се мрежа приказана на слици 8.18б. Ако се исти поступак продужи за n-1 променљиву добија се мрежа у облику пирамиде, често непотпуне, када ће резидуалне функције бити константе 0,1 или променљиве xn и xn . На тај начин се добија реализација било које функције n променљивих помоћу мултиплексера. Редослед примене теореме развоја по појединим променљивим може утицати на сложеност реализације, тј. на потребан број мултиплексера за реализацију неке функције. То значи да постоје специјалне методе за оптимизацију реализације функција помоћу мултиплексера, али ова оптимизација захтева испитивање особина полазне и свих могућих резидуалних функција. Најефи189
касније су тзв. спектралне методе које користе спектар прекидачке функције. Како је мултиплексер истовремено и универзални логички модул УЛМ-2 то описани поступак синтезе комбинационих мрежа са мултиплексерима представља истовремено и методу синтезе за УЛМ-2 модуле типа мултиплексера. Међутим, за сваки други УЛМ-2 модул постоје посебне методе синтезе.
F(0,x2 ,...,xn ) F(1,x2 ,...,xn ) а)
0
f(0,0,x3 ,...,xn )
0
f(0,1,x3 ,...,xn )
1
f
1 x1
f(0,x2 ,...,xn ) x2
f(1,0,x3 ,...,xn )
0
f(1,1,x3 ,...,xn )
1
f(1,x2 ,...,xn )
0 1
f x1
x2
б)
Слика 8.18 Синтеза функција са мултиплексерима типа2x1
Ако се теорема развоја примени истовремено по две променљиве за синтезу комбинационих мрежа могу се користити мултиплексери типа 4х1, развој по три променљиве захтева коришћење мултиплексера 8х1, итд. Иначе, сам поступак синтезе је исти као и за мултиплексер 2х1.
Синтеза са декодерима
Нека су i1, i2,...,im индекси вектора на којима нека прекидачка функција f(x1,x2,...,xn) има вредност 1 а j1, j2, ..., jk индекси вектора на којима та функција има вредност 0. Тада се функција f(x1,x2,...,xn) може написати на један од следећа четири начина: f(x1,x2,...,xn) = pi1 ∨ pi2 ∨ … ∨ pim, f(x1,x2,...,xn) = q j1 ∨ q j 2 ∨ ... ∨ q jk , f(x1,x2,...,xn) = q j1q j 2 ...q jk , f(x1,x2,...,xn) = pi1 pi 2 ...pim ,
190
где су pi1, pi2,… , pim потпуни производи који одговарају векторима на којима функција f има вредност 1 а qj1, qj2, …, qjk потпуни производи који одговарају векторима на којима функција f има вредност 0. Први од ових израза представља потпуну дисјунктивну нормалну форму а остали се лако доказују на основу особина логичких операција и особина потпуних производа. Како декодер на својим излазима реализује потпуне производе Di и Dj или њихове комплементе Di и D j лако се може уочити да се горња четири израза могу реализовати коришћењем излаза из декодера са n улаза и још једног логичког елемента на следеће начине редом: – потпуних производа pi1, pi2,… , pim, односно излаза Di и једног ИЛИ логичког елемента, – потпуних производа qj1, qj2, …, qjk, односно излаза Dj и једног НИЛИ логичког елемента, – потпуних производа q j1 , q j 2 , ...,q jk , односно излаза
D j и једног И ло-
гичког елемента, – потпуних производа pi1 , pi 2 ,..., pim , односно излаза Di и једног НИ логичког елемента. Пример. Функције fs и fp из примера са стр.139 реализују се на начин приказан на слици 8.19.
x1 x2 x3
DEC
v
fs
x1 x2 x3
DEC
/
fp
Слика 8.19 Реализација комбинационих мрежа са декодерима
8.8 Стандардни аритметички модули Једну врсту стандардних модула, које ћемо условно називати стандардни аритметички модули представљају модули намењени за реализацију склопова за аритметичке и логичке операције. Најчешће се користе следећи.
191
Једноразредни сабирачи и одузимачи
Једноразредни сабирач представља комбинациону мрежу која служи за сабирање два једноцифрена бинарна броја. Постоје две врсте ових сабирача: полусабирач или сабирач са два улаза (енгл. HA - Half Adder) и потпуни сабирач или сабирач са три улаза (енгл. FA - Full Adder). Посусабирач представља комбинациону мрежу која служи за сабирање два једноцифрена бинарна броја или две цифре у i-том разреду (позицији) два вишецифрена бинарна броја, без узимања у обзир преноса из претходне позиције. Потпуни бинарни сабирач представља комбинациону мрежу која служи за сабирање два једноцифрена бинарна броја или две цифре у i-том разреду два вишецифрена бинарна броја и преноса из претходног нижег разреда. Таблице истинитости којима је описан начин функционисања ових сабирача дате су у таблици 8.3. Таблица 8.3 − Полусабирач и потпуни сабирач
ai
bi
pi
si
ai
bi
pi-1
pi
si
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
1
0
1
1
0
0
1
0
1
0
0
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
0
1
0
1
1
1
0
1
0
1
1
1
1
1
На слици 8.20 дати су графички симболи за полусабирач и потпуни сабирач. ai bi
HA
si pi
ai bi ci
FA
si pi
Слика 8.20 Графички приказ полусабирача и потпуног сабирача
Помоћу потпуног сабирача као стандардног модула могу се градити вишеразредни бинарни сабирачи, који могу бити: 192
а) серијски и б) паралелни. Серијски вишеразредни бинарни сабирач представља мрежу која омогућава сабирање два n-тоцифрена бинарна броја у n тактних интервала, почев од разреда најмање тежине, сл. 8.21а. При томе је за чување преноса у наредни виши разред потребан меморијски елемент. Паралелни вишеразредни бинарни сабирач представља комбинациону мрежу која омогућава сабирање два nтоцифрена бинарна броја у једном тактном интервалу. Један од најпростијих начина реализације паралелног вишеразредног сабирача приказан је на слици 8.21б.
ai bi bi-1
FA
ME
si pi
bn-1 an-1 ...
FA pn-1
b1 a1
sn-1 pn-2
...
b0 a0 0
FA p1
s1
FA p0
s0
Слика 8.21 Серијски и паралелни вишеразредни сабирач
Слично једноразредним сабирачима могу се дефинисати и једноразредни одузимачи који служе за одузимање два једноцифрена бинарна броја када се не користи комплементарно представљање предзнака броја. Таблице истинитости којима је описан начин функционисања одузимача дате су у таблици 8.4. При томе се код одузимања користи тзв. "позајмица" еi+1, тј. једна бинарна цифра вишег разреда претвара се у бројну вредност нижег разреда.
По м е р а ч и
Померач је комбинациона мрежа која може да реализује померање битова бинарне речи за једно или више места улево или удесно. Померањем бинарне речи А = Аn-1Аn-2...А1А0 за једно бинарно место улево дибија се бинарна реч АL = Аn-2Аn-3...А1А0IL. Померањем бинарне речи А за једно бинарно место удесно добија се бинарна реч АR = IRАn-1Аn-2...А1А0. Битови IL и IR се посебно дефинишу зависно од врсте померања, при чему IL, IR ∈ {0,1,Аn-1,g} и g се такође посебно дефинише за специјалне врсте померања.
193
Таблица 8.4 − Полуодузимач и потпуни одизумач ai bi ei+1 si ai bi 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1
ei 0 1 0 1 0 1 0 1
ei+1 0 1 1 1 0 0 0 1
si 0 1 1 0 1 0 0 1
Када је IL=0 говори се о логичком померању улево, када је IR =0 говори се о логичком померању удесно. За IR = An-1 померање се назива аритметичко померање, а одликује се тиме што задржава знак броја у највишем разреду. За IL = Аn-1 и IR=А0 каже се да је то кружно померање улево односно удесно или циркулација. Померање се најлакше реализује помоћу мреже са n разреда (позиција) тако што се сваки бит бинарне речи посматра посебно и за сваки бит постоји померач за један разред. Један разред померача приказан је на слици 8.22а а графички симбол на слици 8.22б. При томе SL означава померање улево, SR померање удесно, а TR трансфер тј. пренос без померања. Ai-1 Ai Ai +1
v v
v
Ap
SR TR
v
Ai-1 SL Ai TR Ai+1 SR
SL Ap
Слика 8.22 Један разред померача
Инкрементери и декрементери
Инкрементер је комбинациона мрежа која реализује инкрементирање (енгл. increment), тј. додавање јединице бинарном броју, а декрементер је комбинациона мрежа која реализује декрементирање (енгл. decrement), тј. одузимање јединице од бинарног броја. Нека је А = Аn-1Аn-2...А1А0 бинарни број. Инкрементирање S = A+1 и декрементирање S = A-1 у i-том разреду дефинисани су таблицом 8.5. При томе је 194
са pi означен пренос из нижег разреда у i-ти, са pi+1 је означен пренос из i-тог разреда у следећи виши, са ei је означена "позајмица" из i-тог разреда у први нижи, а са ei+1 је означена "позајмица" из вишег разреда у i-ти разред. Очевидно је да се ове таблице могу посматрати као комбинационе таблице и да оне уствари представљају таблице истинитости полусабирача односно полуодузимача. То значи да нам за реализацију инкрементера требају полусабирачи а за реализацију декрементера полуодузимачи. Таблица 8.5 Инкрементирање и декрементирање у i-том разреду
ai
pi
si
pi
ai
ei
ei+1
si
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
0
1
1
1
0
1
1
1
0
0
Компаратори
Компаратор је комбинациона мрежа која пореди два бинарна броја A и B и показује њихов однос: веће, једнако или мање. Нека су Gi, Ei и Li прекидачке функције које показују да ли је бинарни број А = Аn-1Аn-2...А1А0 већи, једнак или мањи од бинарног броја B = Bn-1Bn-2...B1B0, респективно. Тада се функције које описују један разред компаратора могу представити следећим изразима које наводимо без извођења: Gi+1 = Ai Bi ∨ Gi (AiBi ∨ Ai Bi ), Ei+1 = Ei (AiBi ∨ Ai Bi ), Li+1 = Ai Bi ∨ Li (AiBi ∨ Ai Bi ). На основу ових израза могу се добити структурне шеме компаратора за један разред, а њиховим повезивањем компаратор за н разреда.
Комплементатори
195
Комплементатор је прекидачка мрежа која за бинарно кодирану декадну цифру c на излазу даје бинарно кодирану цифру деветичног комплемента, тј. 9-c. Комплементатори су потребни за BCD кодове који нису самокомплементарни, нпр. за BCD код 8421. Како се код BCD кодова са четири бита користи 10 од могућих 16 бинарних низова, при синтези комплементатора се добијају непотпуно дефинисане прекидачке функције, што се користи код минимизације.
8.9 Специјалне мреже Специјалним мрежама условно ћемо називати прекидачке мреже које представљају одређене функционалне целине и, као и стандардни функционални или аритметички модули, користе се у реализацији појединих склопова рачунара. Размотрићемо неке од тих мрежа.
Конвертори кодова
Конвертор кода представља комбинациону мрежу са n улаза и m излаза на чије се улазе доводи један бинарни код а на излазу се добија други бинарни код. Ове се мреже најчешће користе за конверзију једног BCD кода у други, али се могу користити и за конверзију било којих бинарних кодова, нпр. ASCII кода у EBCDIC код или обрнуто.
Ко де ри
Понекад се користе специјални функционални модули који се називају кодери. То су прекидачке мреже чија је функција у основи инверзна функцији декодера. Најчешће се за скуп улазних сигнала на излазу формира бинарни код који на одређени начин карактерише стање улаза. Типичан пример кодера је кодер приоритета. За улазе уређене по приоритетима кодер приорите-
196
та даје на излазу бинарни код који одговара присутном улазном сигналу који има највећи приоритет.
Мреже за контролу парности
То су прекидачке мреже које за сваки улазни вектор формирају функцију парности или функцију непарности. Функција парности има вредност 1 ако је укупан број јединица у улазном вектору непаран, тј. она допуњује број јединица до парног броја, док функција непарности има вредност 1 ако је укупан број јединица у улазном вектору паран, односно она допуњује број јединица до непарног броја. Ове се функције користе за контролу преноса, јер могу открити један или непаран број погрешних битова.
Мреже за контролу по модулу
За контролу правилности извршења аритметичких операција један од простијих начина је коришћење контролне цифре по неком модулу m. За неки број a величина а (mod m) представља остатак од дељења броја a модулом m. Као модул се најчешће узима неки погодан прост број. Код синтезе прекидачких мрежа за формирање контролне цифре по неком модулу потребно је према условима проблема формирати таблицу која показује зависност излазних вредности од улаза, а затим све бројне вредности бинарно кодирати потребним бројем битова и формирати таблицу истинитости. При томе се често добијају таблице истинитости са непотпуно дефинисаним прекидачким функцијама.
197
9 КОНАЧНИ АУТОМАТИ
9.1 Секвенцијалне мреже Као што је напоменуто раније, поред комбинационих мрежа, код којих је стање на излазу потпуно одређено (дефинисано) тренутном комбинацијом вредности улазних променљивих, постоје и секвенцијалне мреже код којих је стање на излазу дефинисано не само тренутном комбинацијом вредности улазних променљивих, већ зависи и од тзв. интерног стања мреже. За овакве мреже се каже да садрже меморијске елементе који памте стања, а карактеришу предисторију рада мреже у ранијим временским тренуцима. Другим речима, стање секвенцијалне мреже зависи од тога који су сигнали и којим редом довођени на улаз у ранијим временским тренуцима. Сходно овоме, за комбинационе мреже се каже да не садрже меморијске елементе, односно да у њима не постоји повратна спрега. Секвенцијалне мреже представљају посебан случај мрежа које се називају дискретни претварачи (дискретни аутомати, секвенцијалне машине). То су уређаји који служе за претварање (обраду) дискретних информација односно за "механичку" (аутоматску) обраду улазних речи (низова симбола) и формирање излазних речи (низова симбола). У њима се улази и излази изражавају помоћу стандардне коначне азбуке. Дискретни аутомати се такође називају и дигитални аутомати (од лат. digit - цифра) или цифарски аутомати јер се условно елементи азбуке могу интерпретирати као цифре неког бројног система. Термин секвенцијална мрежа или секвенцијална машина користи се отуда што аутомати које ми разматрамо служе за генерисање речи на излазу. Функционисање било ког дискретног претварача (аутомата) одвија се на следећи начин. На улазе се доводе симболи улазне азбуке у дискретним временским интервалима t0, t1,... који се називају tактни или синхронизациони интервали. Доведени симболи на улазу изазивају појављивање на излазу од198
ређене речи излазних симбола. Зато кажемо да дискретни претварачи врше азбучна пресликавања, тј. остварују функционалне зависности над дискретно представљеним подацима и информацијама. При томе се сматра да понашање аутомата не зависи од интервала између ti и ti+1. На тај начин, стварну променљиву величину не представља време већ редни бројеви такт- них интервала. Зато је усвојено да се посматра апстрактно аутоматно време које узима позитивне вредности t = 0,1,... , тј. временски моменти се означавају целим позитивним бројевима. Основна особина која одваја дискретне аутомате од других претварача информација јесте постојање дискретног (код реалних аутомата увек коначног) скупа унутрашњих стања и дисконтинуалног (скоковитог) преласка аутомата из једног стања у друго. Дисконтинуалност прелаза омогућује да се прелазни процес третира као тренутан и директан, не узимајући у обзир прелазна стања. Овакав услов представља одређени степен апстракције која довољно добро описује основне особине реалних уређаја. Друга претпоставка, која такође добро одговара стварности, састоји се у томе, што се после преласка аутомата у произвољно стање, прелаз у следеће стање не може обавити пре него што истекне временски интервал ∆t који је фиксан за сваки аутомат и назива се интервал дискретности аутомата. Ова претпоставка омогућава да се рад аутомата посматра у дискретном времену. При одређивању дискретног аутоматног времена разликују се два основна случаја. 1) Код тзв. синхроних аутомата моменти времена када се може мењати стање аутомата одређује се специјалним уређајем - генератором синхронизационих (тактних) импулса. Суседни моменти времена обично су тада раздвојени једнаким временским интервалима. 2) Насупрот синхроним аутоматима, моменти прелаза из једног стања у друго код асинхроних аутомата нису унапред одређени и могу се обављати у неједнаким временским интервалима. Уз одређене претпоставке у многим случајевима теорија асинхроних аутомата може се свести на синхрони случај, зато што стварне дужине интервала међу узастопним моментима аутоматног времена немају никаквог значаја у идеализованој теорији аутомата (не узимајући у обзир прелазна стања). Област која се назива теорија аутомата проучава дискретне аутомате. Она се пре свега бави описом и бољим разумевањем понашања и могућности дискретних аутомата. Теорија аутомата има донекле своје изворе у чисто 199
математичким проблемима који разматрају могућност израчунавања уопште у оквиру области која се назива теорија израчунљивости. Напоменимо да се дискретни аутомати користе и за тзв. распознавање формалних језика, али овде та примена неће бити разматрана.
9.2 Модели коначних аутомата Ми ћемо детаљније проучити само једну уску класу дискретних аутомата (дискретних претварача) који се називају коначни аутомати или секвенцијалне машине: Коначни аутомат је дискретни аутомат са коначним бројем стања. Коначним аутоматима се може остварити једна уска класа азбучних пресликавања која се називају аутоматна пресликавања, о чему ће бити говора у следећем поглављу. Рад коначног аутомата M (у даљем тексту ћемо често користити краћи термин аутомат, јер друге аутомате нећемо разматрати) одвија се на следећи начин. У тактним (синхронизационим) интервалима t1, t2 , ... на улаз аутомата доводи се симбол коначне азбуке А = {a1, ..., an}, која се назива улазна азбука. На излазу аутомата формира се излазни симбол који припада коначној азбуци Z = {z1,z2,...,zm} која се назива излазна азбука. То значи да у сваком тактном интервалу симболу на улазу одговара симбол на излазу, па се код коначних аутомата сваки улазни симбол једнозначно пресликава у одређени излазни симбол. Међутим, слика неког улазног симбола зависи од предисторије рада аутомата, тј. од претходно довођених симбола и њиховог редоследа. Ова се чињеница може изразити на тај начин што се пред довођење улазног симбола аутомат налази у једном од коначног броја могућих интерних стања, означених симболима коначне азбуке стања Q = {q1,...,qk}. Зато код коначних аутомата излазни симбол зависи од тренутног стања аутомата и од улазног симбола у датом тренутку. Осим тога, доведени улазни симбол може изазвати и промену стања аутомата. Коначни аутомат се шематски може приказати на начин дат на слици 9.1а. Симболи коначних азбука аутомата A, Z и Q при практичној реализацији кодирају се бинарним азбукама X, Y и S, респективно. Тада сваком симболу азбу200
ке одговара вектор вредности прекидачких променљивих. Ако је a ↔ x1x2...xu, z ↔ y1y2...yv, q ↔ s1s2...sw тада се аутомат шематски приказује као на слици 9.1б. x1 xu s1
z
a PM
q'
q
sw
PM
... ...
... ...
ME а)
...
ME
y1 yv s'1 s'w
...
б) Слика 9.1 Шематски приказ коначног аутомата
Овде је PM прекидачка мрежа а ME су меморијски елементи који служе за памћење стања коначног аутомата. Симболи z и q су резултат пресликавања која остварује коначни аутомат на основу претходног стања q и улазног симбола a. Пресликавања остварена помоћу аутомата могу бити детерминистичка и недетерминистичка. Код детерминистичких пресликавања улазни симбол и стање потпуно одређују симбол на излазу аутомата и ново стање. Јасно је да детерминисаност није ништа друго него захтев за jеднозначношћу пресликавања. Код недетерминистичких пресликавања за неке улазне симболе и стања аутомата постоји више варијанти произвољног избора излазног симбола и новог стања, што одговара неједнозначном пресликавању. Ми ћемо даље разматрати само детерминистичка пресликавања. Формално се коначни аутомат M може дефинисати као уређени скуп M = (A, Z, Q, fq , fz) , где A представља коначан скуп улазних симбола (симбола улазне азбуке), Z коначан скуп излазних симбола (симбола излазне азбуке), Q коначан скуп азбуке стања аутомата. Претпостаља се да аутомат увек почиње рад из неког одређеног стања , нпр. q1. Функција fq назива се функција прелаза и представља пресликавање fq: А×Q → Q. Функција прелаза дефинише ново стање q(t) у моменту дискретног времена t, t = 1,2,... у зависности од претходног стања q(t-1) и улазног симбола a(t) у том истом временском тренутку, тј. 201
q(t) = fq [q(t-1), a(t)]. Функција fz назива се функција излаза, и представља пресликавање fz: А×Q → Z. Функција излаза дефинише (одређује) излазни симбол z(t) у зависности од претходног стања q(t-1) и улазног симбола a(t) у датом временском тренутку, тј. z(t) = fz [q(t-1), a(t)] . Овако дефинисан коначни аутомат назива се Милијев коначни аутомат или коначни аутомат Милијевог типа, јер је Мили (Mealey) предложио овај модел. У пракси се среће још један модел описа коначног аутомата који се назива Муров аутомат или аутомат Муровог типа, опет према аутору (Moore) који је предложио овај модел. Муров аутомат разликује се од Милијевог аутомата по начину задавања функције излаза. Наиме, код Муровог аутомата излазни симбол одређен је само стањем аутомата у датом тренутку, тј. z(t) = fz[q(t)] . Доказано је да су ови модели коначних аутомата еквивалентни, тј. да се за сваки Милијев аутомат може наћи еквивалентан Муров аутомат, и обрнуто, за сваки Муров аутомат може се наћи еквивалентан Милијев аутомат. При томе се за два аутомата каже да су еквивалентни аутомати ако се за било коју улазну реч подударају и њихове излазне речи. Пре него што се доведу улазне речи аутомати се морају довести у своја почетна стања. Начин прелаза од Муровог на Милијев аутомат и од Милијевог на Муров аутомат описан је у одељку 9.5 (стр. 164).
9.3 Задавање коначних аутомата За опис функције прелаза и функције излаза коначног аутомата користи се више различитих начина. Како су све азбуке аутомата коначне, за задавање функције прелаза и функције излаза аутомата најчешће се користе таблице, графови, неколико врста матрица и системи прекидачких функција. Ови описи су потребни због тачне анализе или синтезе коначних аутомата. Више начина 202
задавања постоји због тога што су једни погодни за једне а други за друге сврхе, тј. за решење проблема анализе и синтезе у једним случајевима погоднији су једни а у другим други начини задавања аутомата.
Задавање аутомата помоћу таблица прелаза и излаза
Функције прелаза и излаза могу се задати помоћу две врсте таблица: таблице прелаза и таблице излаза. Таблица прелаза представља правоугаону таблицу чије су колоне означене симболима азбуке стања а врсте симболима улазне азбуке. За сваки пар (qj ,ai) у пресеку i-те врсте и j-те колоне задато је ново (следеће) стање одређено тим паром. Таблица излаза је слична таблици прелаза с тим да се у пресеку i-те врсте и j-те колоне задаје излазни симбол zij одређен тим паром. У таблици 9.1а,б приказане су таблица излаза и таблица прелаза Милијевог коначног аутомата. Могуће је ове две таблице објединити у једну тзв. tаблицу прелаза/излаза у којој се у пресеку i-те врсте и jте колоне задаје израз qij /zij, тј. пар ново_стање/излазни_симбол. Пошто код Муровог аутомата излазни симбол не зависи од улазног симбола већ само од стања довољна је једна тзв. модификована таблица прелаза којој је додата врста са излазним симболима за свако стање, таблица 9.1в. Таблица 9.1 Задавање аутомата таблицама прелаза и излаза Стање
Стање
Z:
c
d
d
Улаз
q1
q2
q3
Улаз
q1
q2
q3
A:\Q:
q1
q2
q3
a
q2
q2
q1
a
0
1
0
a
q2
q3
q1
q2
q3
q2
b
1
0
1
b
q3
q2
q3
b
а) Таблица
б) Таблица
в) Модификована
прелаза
излаза
таблица прелаза
Задавање аутомата помоћу графова
Функције прелаза и излаза могу се задавати и помоћу усмерених графова, тзв. графова аутомата или тачније графова прелаза аутомата. У графу Милијевог аутомата стања аутомата представљена су чворовима (теменима) графа и сваки чвор означен је једним стањем. Оријентисана грана (потег) од 203
чвора qi до чвора qj постоји само ако је могућ прелаз из стања qi у стање qj. При томе је свака грана означена унијом парова улаз/излаз облика ak1/zm1 ∪ ak2/zm2 ∪ ... ∪ akr /zmr, где је aku, u = 1,2,...,r улазни симбол који преводи аутомат из стања qi у стање qj, а zmu је симбол који се при том генерише на излазу. Код Муровог аутомата чворови графа аутомата означавају се паром стање/излазни_симбол, јер излазни симболи зависе само од стања, док се гране графа означавају унијом улазних симбола који аутомат преводе из стања qi у стање qj. На слици 9.2а приказан је граф Милијевог аутомата описаног таблицама прелаза и излаза у таблици 9.1а,б. а на слици 9.2б граф Муровог аутомата описаног модификованом таблицом прелаза у таблици 9.1в.
q2
a/0 q1
b/1
b
a/1 b/1
b/0
q1 /c Q3
a/0
а) Милијев аутомат
q2 /d
a a b
a b q3 /d
б) Муров аутомат
Слика 9.2 Задавање аутомата графовима
Задавање аутомата помоћу матрица
Коришћење матрица омогућава да се формализује низ операција које се на графу аутомата обављају визуелно. Зато матрице имају предност у случајевима када се те операције не могу обављати визуелно или је граф аутомата толико сложен да је коришћење визуелне методе практично немогуће. Матрице такође омогућавају одређивање особина оператора аутомата које се тешко утврђују код другачијих задавања аутомата. Осим тога, помоћу матрица се лако може вршити минимизација стања аутомата. За аутомат са к стања матрица прелаза прве врсте M састоји се од k врста и k колона означених стањима аутомата а дефинише се на следећи начин: M = ║mij║,
204
i , j = 1,2,...,k ,
где елемент mij представља унију улазних симбола који аутомат преводе из стања qi у стање qj. Ако не постоји директан прелаз из стања qi у стање qj тада је mij = ø. Матрица прелаза прве врсте понекад се назива и матрица веза аутомата. Она дефинише функцију прелаза аутомата.
Пример. За аутомат приказан на слици 9.2а матрица прелаза прве врсте дата је на слици 9.3а а за аутомат приказан на слици 9.2б матрица прелаза прве врсте дата је на слици 9.3в. φ
avb φ
φ
a/0 v b/1 φ
φ
a
b
φ
a
b
φ
a/1
b/0
φ
b
a
a
b
φ
a/0
b/1
φ
a
φ
b
a)
b)
v)
Слика 9.3 Матрице прелаза и прелаза/излаза прве врсте
Матрица прелаза-излаза прве врсте N за аутомат са k стања састоји се од k врста и k колона означених стањима аутомата, а дефинише се на следећи начин: N =║nij║,
i , j = 1,2,...,k,
где елемент nij представља унију свих улазно-излазних парова a/z таквих да је а улазни симбол који преводи аутомат из стања qi у стање qj а z је излазни симбол који се при том генерише. Пример. На слици 9.3б дата је матрица прелаза-излаза прве врсте за аутомат приказан на сл. 9.2а. Ако је n број различитих улазних симбола тада свака врста матрице треба да садржи тачно n парова улаз-излаз и сваки пар има улазни симбол различит од улазног симбола било ког другог пара. Други начин матричног представљања коначног аутомата су тзв. матрице прелаза друге врсте. Оне описују расподелу прелаза у аутомату за сваки улазни симбол посебно. Сваком улазном симболу au , u = 1,2,...,n , ставља се у кореспонденцију по једна матрица прелаза друге врсте Т(au) у којој су врсте и колоне означене стањима аутомата qi , i = 1,2,...,k , на следећи начин:
205
T(au) =
t iju
, где је
t iju
⎧1, ако a u преводи q i у q j ⎪ = ⎨0 , ако a u преводи q i у q r и r ≠ j , ⎪ ⎩− , ако fq ( q i , a u ) није дефинисано
где је i = 1,2,...,k , j = 1,2,...,k , u = 1,2,...,n .
За стања аутомата уводи се вектор стања Q. За стање qj , ј = 1,2,...,k , вектор стања Q дефинише се на следећи начин: ⎧1, за i = j Q = ║sj║, j = 1,2,…,k , где је s j = ⎨ , ⎩0 , за i ≠ j
одакле се види да вектор Q има само један, i-ти елемент, једнак 1. При томе почетном стању аутомата одговара вектор почетног стања Q0. Слично се дефинише и вектор излаза Z. За излазни симбол zj , j ∈ {1,2,...,m}, вектор излаза Z дефинише се на следећи начин: ⎧1, за i = s Z = ║ws║, s = 1,2,…,m , где је, w s = ⎨ , ⎩0 , за i ≠ s
тако да вектор Z има само један, ј-ти елемент, једнак 1. Може се доказати да за матрице прелаза прве врсте и матрице прелаза друге врсте важи следећа релација: m
M = ∨ a iT ( a i ) , i =1
при чему се цртице у матрици Т (ако постоје) интерпретирају као 0. Нека Q(t) представља вектор стања у које аутомат прелази у тактном интервалу t. Може се доказати да се промена стања аутомата одређује на основу матрице прелаза друге врсте и вектора почетног стања према следећој релацији: Q(t) = Q(t-1)Т[a(t)] . Даље се посебно за сваки улазни симбол au дефинишу матрице излаза друге врсте Y(au) које описују функцију излаза. За улазни симбол a(t) = au, 206
u=1,2,...,n, претходно стање q(t-1) = qi, i=1,2,...k , и излазни симбол z(t) = zv, zv ∈ Z ∪ {-}, (где "-" означава недефинисан излазни симбол), матрица Y(au) чије су врсте означене стањима а колоне излазним симболима има облик
Y(au) =
где је i=1,2,...,k ,
y iju
⎧1, ако је j = v ⎪ , где је y ij = ⎨0 , ако је j ≠ v , ⎪− , ако z није дефинисано v ⎩
ј=1,2,...,m ,
u=1,2,...,n .
Овако дефинисана матрица Y(au) поседује следећу особину: свака врста матрице одговара једном стању qi и има вредност 1 у позицији (колони) j која одговара излазном симболу који се из тог стања генерише при довођењу на улаз симбола au. За Мурове аутомате постоји само једна матрица излаза друге врсте Y јер излазни симболи не зависе директно од улазних симбола већ само од стања. За стање Q(t-1) и улазни симбол a(t) може се доказати да важе једнакости Z(t) = Q(t-1)Y[a(t)] , за Милијев аутомат, Z(t) = Q(t-1)Y , за Муров аутомат. Уведене матрице друге врсте омогућавају да се за задато почетно стање и доведену улазну реч a1a2...аr одреде у временском тренутку (тактном интервалу) t стање дефинисано вектором S и излазни симбол дефинисан вектором Z на основу следећих релација које се доказују индукцијом по броју улазних симбола r полазећи од горњих израза за Q(t) и Z(t): Q(t-1) = Q0T[a(1)]Т[a(2)]...Т[a(r-1)] , Q(t) = Q(t-1)Т[a(t)] , Z(t) = Q(t-1)Y[a(t)] , за Милијев аутомат, Z(t) = Q(t-1)Y , за Муров аутомат. Пример. За Милијев аутомат приказан на слици 9.2а матрице прелаза друге врсте Т(a) и Т(b) и матрице излаза друге врсте Y(a) и Y(b) имаће облик: ⎡0 1 0 ⎤ ⎡0 1 0 ⎤ ⎡1 0 ⎤ ⎡0 1⎤ T ( a ) = ⎢⎢0 1 0 ⎥⎥ , T ( b ) = ⎢⎢0 01 ⎥⎥ , Y ( a ) = ⎢⎢0 1⎥⎥ , Y ( b ) = ⎢⎢1 0 ⎥⎥ . ⎢⎣1 0 0 ⎥⎦ ⎢⎣0 1 0 ⎥⎦ ⎢⎣1 0 ⎥⎦ ⎢⎣0 1⎥⎦
207
Стање и излазни симбол за улазну реч aba и почетно стање q1 биће: ⎡0 1 0 ⎤ ⎡0 1 0 ⎤ ⎡0 0 1⎤ T ( a )T ( b ) = ⎢⎢0 1 0 ⎥⎥ ⎢⎢0 0 1⎥⎥ = ⎢⎢0 0 1⎥⎥ , ⎢⎣1 0 0 ⎥⎦ ⎢⎣0 1 0 ⎥⎦ ⎢⎣0 1 0 ⎥⎦ ⎡0 0 1⎤ Q( 2 ) = Q0T ( a )T ( b ) = [1 0 0 ] ⎢⎢0 0 1⎥⎥ = [0 0 1] , ⎣⎢0 1 0 ⎦⎥ ⎡0 1 0 ⎤ Q(3) = Q0[T(a)T(b)] T(a) = Q(2)T(a) = [0 0 1] ⎢⎢0 1 0 ⎥⎥ = [1 0 0] → q1 , ⎢⎣1 0 0 ⎥⎦ ⎡1 0 ⎤ Z(3) = Q0T(a)T(b)Y(a) = Q(2)Y(a) = [0 0 1] ⎢⎢0 1⎥⎥ = [1 0] → излаз 0. ⎢⎣1 0 ⎥⎦
Пример. За Муров аутомат приказан на слици 9.2б матрице прелаза друге врсте Т(a) и Т(b) и матрица излаза друге врсте Y имаће облик: ⎡1 0 ⎤ ⎡0 0 1⎤ ⎡0 1 0 ⎤ ⎥ ⎥ ⎢ ⎢ T ( a ) = ⎢0 0 1⎥ , T ( b ) = ⎢0 1 0 ⎥ , Y = ⎢⎢0 `1⎥⎥ . ⎢⎣0 1 ⎥⎦ ⎢⎣0 0 1⎥⎦ ⎢⎣1 0 0 ⎥⎦
Задавање аутомата помоћу система прекидачких функција
Ако се симболи улазне азбуке, излазне азбуке и азбуке стања бинарно кодирају тада сваки симбол било које азбуке представља се вектором посебних вредности прекидачких независно променљивих, док се функција прелаза описује системом функција прелаза а функција излаза системом функција излаза. Нека је ai ↔ x1x2...xu , zj ↔ u1u2...uv , qm ↔ s1s2...sw. Тада функцију прелаза и функцију излаза Милијевог аутомата описују следећи системи прекидачких функција (каноничке једначине) (видети и слику 9.1б): Систем функција прелаза:
208
s1' = fq1(x1,x2,...,xu,s1,s2,...,sw) ,
..... sw' = fqw (x1,x2,...,xu,s1,s2,...,sw).
Систем функција излаза: y1 = fz1 (x1,x2,...,xu,s1,s2,...,sw) , ..... yv = fzv (x1,x2,...,xu,s1,s2,...,sw). За Муров аутомат систем функција прелаза има исти облик као и за Милијев аутомат док систем функција излаза има следећи облик: y1 = fz1 (s1,s2,...,sw) , ..... yv = fzv (s1,s2,...,sw) . Овде се претпоставља да су улазне и излазне променљиве дате у неком временском тренутку t а променљиве стања дате у временском тренутку t-1. Систем функција прелаза и систем функција излаза одређују вредности излазних променљивих и вредности променљивих стања у датом временском тренутку t. Напоменимо да је овакав начин описа функционисања коначног аутомата погодан само ако је број прекидачких независно променљивих мали.
9.4 Промена типа аутомата Раније је већ било напоменуто у одељку 9.2 (стр.158) да се за сваки Муров аутомат може наћи еквивалентан Милијев аутомат и обрнуто, за сваки Милијев аутомат се може наћи еквивалентан Муров аутомат. То значи да су Муров и Милијев аутомат еквивалентни у смислу да се њима може описати било који коначни аутомат. Ниже су описани начини прелаза са једног на други модел.
209
Прелаз од Муровог на Милијев аутомат
При синтези аутомата обично је повољније прво синтетизовати Муров аутомат, а ако треба он се онда може превести у еквивалентан Милијев аутомат на следећи начин: Улазна азбука, излазна азбука и азбука стања су исте. Функција прелаза Милијевог аутомата иста је као функција прелаза Муровог аутомата, тј. q(t) = fq [q(t-1), a(t)], q(t) ∈ {q1,..., qk} . Од функције излаза Муровог аутомата прелази се на функцију излаза Милијевог аутомата на основу следећих релација: z(t) = fz [q(t)] = fz [ fq [q(t-1), a(t)]] = fz' [q(t-1), a(t)] , одакле се види да функција излаза fz' има облик функције излаза Милијевог аутомата. На основу графа датог Муровог аутомата може се прећи на еквиалентан Милијев аутомат применом следеће процедуре: 1) Граф траженог Милијевог аутомата има исте чворове као и граф задатог Муровог аутомата, 2) Ако граф Муровог аутомата садржи чворове са ознакама qi/zi, qj/zj и оријентисану грану од qi/zi до qj/zj са ознаком aiј онда еквивалентан Милијев аутомат има чворове са ознакама qi и qj и грану од qi до qj са ознаком aiј/zj. При томе може да буде и i=j (за повратне гране чвора). Ако у Муровом аутомату не постоји грана од qi/zi до qj/zj тада ни у Милијевоим аутомату не постоји грана од qi до qj. 3) Корак 2 се понавља за сваки пар стања Муровог аутомата. Милијев аутомат имаће исти број стања као и Муров аутомат из кога се он формира а разлика је у томе да се излазни симболи из сваког чвора графа Муровог аутомата преносе у Милијевом аутомату на све гране које улазе у дати чвор. Уместо коришћења графа могуће је извршити превођење Муровог у Милијев аутомат на основу функција прелаза и функција излаза задатих таблицом прелаза и таблицом излаза. Процедура је следећа:
210
Нека је задат Муров аутомат M*(A*, Z*, Q*, fq*, fz*). Претпоставимо да М* задовољава следећу особину: ако постоји q* ∈ Q* такво да за било које q' ∈ Q* и a ∈ А* је fq(q', a) ≠ q* тада fz*(q*) није дефинисано. Ово ограничење је тривијално јер ако такво q* постоји, тада никаква улазна реч не може превести аутомат М* у стање q*, ако се изузме празан низ и q* као почетно стање. Еквивалентан Милијев аутомат M(A, Z, Q, fq, fz) гради се на следећи начин: Q = Q*, A = A*, Z = Z*, fq = fq* . Функција fz формира се према следећем правилу: fz(qj,ak) = wr , ако је fq* (qj , ak ) = qs и fz* (qs ) = wr . Пример. У таблици 9.2а,б и на слици 9.4а дат је полазни Муров аутомат, а у таблици 9.2в и на слици 9.4б њему еквивалентан Милијев аутомат добијен описаним поступком. Таблица 9.2 Таблице Муровог и еквивалентног Милијевог аутомата Z: 0 1 1 0 Стање Стање Улаз q1 q2 q3 q4 A:\Q: q1 q2 q3 q4 Улаз q1 q2 q3 q4 q1 q4 q4 q2 q1 q4 q4 q2 0 0 0 1 a a a q2 q3 q3 q1 q2 q3 q3 q1 1 1 1 0 b b b а) б) в)
a
a/0
b q2 /1
q1 /0 a
q4 /0
a/1
b
a
b
а) Муров аутомат
b/1 a/0
b/0 q3 /1
q2
q1
a
b
b/1
q4
q3
b/1
a/0
б) Милијев аутомат
Слика 9.4 Муров и еквивалентан Милијев аутомат
Прелаз од Милијевог на Муров аутомат Милијев аутомат добијен из Муровог аутомата горњим поступком поседује следећу битну особину: у графу аутомата у сваки чвор долазе само гране које имају исту ознаку излазног симбола. То значи да се од графа оваквог Милије211
вог аутомата поступком који је обрнут горњем може добити еквивалентан Муров аутомат. Зато се један од начина превођења Милијевог у Муров аутомат састоји у превођењу задатог Милијевог аутомата у еквивалентан Милијев аутомат који поседује горњу особину. Овај се аутомат добија следећом процедуром примењеном на графу: 1) За граф G0 узети граф полазног Милијевог аутомата. 2) Од графа Gi-1 направити граф Gi, i = 1,2,... , на следећи начин: у графу Gi-1 уочити чвор qk у коме има m > 1 долазних грана, укључујући ту и повратне гране, али таквих да су у њиховим улазно-излазним ознакама а1/z1,...,аj/zj, ...,am/zm сви излазни симболи z1,...,zm међусобно различити. Такав чвор qk замењује се новоуведеним чворовима qk1,...,qkj,...,qkm. За свако j=1,2,…,m поступити на следећи начин: а) Уместо у стању qk сваку улазну грану са ознаком аj/zj завршити у новоуведеном стању qkj. б) Ако је aj/zj ознака повратне гране у стању qk онда се из сваког новоуведеног чвора qk1,...,qkj,...,qkm води у чвор qkj грана са ознаком aj /zj . в) Ако је у графу Gi-1 постојала излазна грана (qk,q') онда се у графу Gi уцртавају нове излазне гране (qk1,q' ),...,(qkm ,q' ) и све оне имају исту ознаку коју је носила грана (qk,q' ). 3) Испитати да ли у графу Gi постоји чвор са особином чвора pk из корака 2. Ако постоји прећи поново на корак 2 уз замену индекса i са i+1. Ако је одговор одречан за граф траженог еквивалентног Муровог аутомата узети граф Gi. Уместо коришћења графа Милијев аутомат M може се превести у еквивалентан Муров аутомат M* коришћењем функције прелаза и функције излаза задатих таблицом прелаза и таблицом излаза. И овде се уводи следеће тривијално ограничење: ако је fz(qj,ak) дефинисано тада је и fq(qj,ak) дефинисано. Ово се може урадити за сваки Милијев аутомат додајући нова стања qjk за све случајеве када је fz(qj,ak) дефинисано а fq(qj,ak) није дефинисано а затим додефинисањем fq(qj,ak) = qjk. Процедура прелаза од Муровог на Милијев аутомат је следећа: 1) Улазна и излазна азбука еквивалентног Муровог аутомата су исте као и азбуке полазног Милијевог аутомата, тј. A* = A, Z* = Z. 2) Ако је Q скуп стања Милијевог аутомата M а fq и fz су функције прелаза и излаза тада се скуп стања Q* аутомата M* одређује на следећи начин: 212
3) Нека је Q1 = {qkm⏐fq(qi, aj) = qk, fz(qi,aj) = zm, за qi ∈ Q, aj ∈ А }. Нека је такође Q2 = {qk⏐ fq(qi, aj) ≠ qk за све qi ∈ Q и све aj ∈ А }. Скуп стања Q2 представља подскуп стања која нису следећа стања аутомата M. При томе је Q* = Q1 ∪ Q2. 4) Функцију прелаза fq* аутомата M* дефинишемо на следећи начин: ако је fq(qi, aj) = qk и fz(qi, aj) = zm тада је fq* (qiu, aj) = qkm за све qiu ∈ Q1 и fq*(qi, aj) = qkm за qi ∈ Q2 . 5) Дефинишимо функцију излаза fz* аутомата M* на следећи начин: за qkm ∈ Q1 је fq*(qkm) = zm. За qi ∈ Q2 fq*(qi) није дефинисана. Ако полазни Милијев аутомат има k стања и n улазних симбола тада број унутрашњих стања еквивалентног Муровог аутомата добијеног горњим поступком може бити kn+1, па је после превођења потребна минимизација стања добијеног Муровог аутомата. Пример. У таблици 9.3а и на слици 9.5а,б дат је Милијев а у таблици 9.3в и на слици 9.5б еквивалентан Муров аутомат добијен описаним поступком. Таблица 9.3 Таблице Милијевог и еквивалентног Муровог аутомата Стање
Стање
Z:
0
0
1
0
q21
q30
q31
q40
Улаз
q1 q2 q3 q4
Улаз
q1
q2
q3
q4
a
q2 q2 q1 q3
a
1
1
0
1
a
q21
q21
q10
q10
q31
b
q3 q4 q4 q3
b
0
0
0
0
b
q30
q40
q40
q40
q30
а)
A: Q: q10
1
б)
a/1
a
a/1 q10 /0
q2
q1
b/0
b/0
a/0
в)
a
b
a/1 v b/0 q3
b/0
q4
а) Милијев аутомат
q30 /0
a q21 /1
a
b q31 /1
b
b a
b
q40 /0
б) Муров аутомат
Слика 9.5 Милијев и еквивалентан Муров аутомат
213
9.5 Непотпуни коначни аутомати За коначни аутомат се каже да је потпуно дефинисан ако су функција прелаза и функција излаза аутомата дефинисане за све могуће парове (q,a), тј. за све могуће парове улазни_симбол - претходно_стање. То значи да за аутомат не постоје никава ограничења на улазу. За коначни аутомат се каже да је непотпуно дефинисан или делимичан коначни аутомат ако функција прелаза или функција излаза или обе те функције нису дефинисане за све парове(q,a). То је најчешће због тога што за стварни уређај постоје тзв. недефинисана стања која карактеришу услове када за неко стање и неки улазни симбол није неопходно да се дефинише следеће стање и/или излазни симбол. Такви услови постоје ако нпр. за стање qi аутомата улазни симбол pk се никада не појављује или за дозвољени улазни симбол ak и стање аутомата qi следеће стање и/или улаз су из неких разлога небитни. Зато код непотпуно дефинисаних аутомата постоје тзв. недозвољене улазне речи - речи које се никада не доводе на улаз аутомата. Пример. У таблици 9.4 дате су таблица прелаза и таблица излаза непотпуно дефинисаног (делимичног) Милијевог аутомата са почетним стањем q1. Таблица 9.3 − Нептпуно дефинисан Милијев аутомат Стање
Улазни симбол
q1
q2
q3
p1
q2
q3
-
-
p2
Стање
q4
Улазни симбол
q1
q2
q3
q4
q4
q4
p1
z2
z2
z1
z1
q1
q1
p2
-
-
z2
z3
Таблица прелаза
Таблица излаза
Анализом таблица може се закључити да се код овог аутомата не појављују следеће улазне речи: а) све улазне речи које почињу симболом a2 , б) све улазне речи оје садрже серију од два или више симбола a2, тј. речи a2a2, a2a2a2, итд., в) све улазне речи у којима се бар једном садржи реч a2а1a2, тј. дозвољене су само речи у којима симбол p1 сваки пут долази у серијама. Непотпуно дефинисан аутомат не дефинише пресликавање за недозвољене улазне речи, па се може сматрати да се оне не појављују на његовом улазу. Зато се непотпуни аутомат може заменити другим аутоматом са истим од214
говором на дозвољене речи и произвољним одговором на недозвољене улазне речи. Тај други аутомат представља тзв. еквивалентно проширење непотпуно дефинисаног аутомата. Овај се приступ користи код минимизације стања коначних аутомата, јер омогућава налажење еквивалентног проширења са најмањим могућим бројем стања.
9.6 Елементарни аутомати Сагласно са општом шемом коначног аутомата датом на слици 9.1б за реализацију коначних аутомата неопходно је изабрати систем елемената од којих се граде задати аутомати. Тај се проблем решава на основу следеће теореме коју наводимо без доказа: Теорема: Да би скуп елемената био функционално потпун за синтезу коначних аутомата потребно је и довољно да садржи: 1) Скуп логичких елемената који образују функционално потпуни скуп за синтезу комбинационих мрежа, 2) Бар један елементарни аутомат са два различита стања за који су задовољени услови потпуности система прелаза и излаза, Каже се да аутомат поседује потпуни систем прелаза ако се за сваки пар његових унутрашњих стања qi и qj може наћи бар један улазни сигнал који преводи аутомат из стања qi у стање qj . Овај услов треба да буде задовољен и за i = j и за i ≠ ј. Каже се да Муров аутомат поседује потпуни систем излаза ако у сваком стању издаје излазни сигнал различит од сигнала које издаје у другим стањима. Тако сви реални Мурови аутомати са два стања, који се називају и елементарни аутомати, имају потпун систем излаза, јер ако би излазни сигнали аутомата за та два стања били исти, стања аутомата се не би могла физички разликовати. Ови се елементарни аутомати у пракси најчешће користе за тзв. структурну синтезу коначних аутомата која се касније разматра. Елементарни коначни аутомати су меморијски елементи реализовани дигиталним електронским колима која се називају бистабилна кола или флипфлопови. Ова се кола називају елементарни коначни аутомати јер имају најмањи могући број стања, а поседују следеће особине:
215
1. Елементарни аутомати су обично Мурови аутомати и имају два различита унутрашња стања, 2. Двома унутрашњим стањима елементарног аутомата одговарају два различита излазна сигнала који омогућавају да се разликују та стања. Због тога се унутрашња стања и излазни сигнали означавају истим симболом Q и кодирају се знацима "0" и "1". 3. Елементарни аутомати имају један или више улаза на које се доводе сигнали кодирани знацима "0" и "1". Ниже су описани основни елементарни аутомати који се користе у пракси за реализацију коначних аутомата. Закони њиховог функционисања описују се функцијама прелаза јер се излазни сигнал поклапа са сигналом стања. Закони функционисања дати су на два начина: помоћу таблица прелаза и аналитички. У таблици 9.5 дати су закони функционисања највише коришћених елементарних аутомата а то су бистабилна кола типа D, T, RS и JK. На слици 9.6 дати су графички симболи за ова бистабилна кола.
D бистабилно коло
D је скраћена ознака од енгл. delay - кашњење. D коло представља тзв. тактовано (синхронизовано) коло са тактним сигналом C. Ово коло је уствари елемент за кашњење и функционише на следећи начин: при доласку тактног сигнала C коло памти на излазу Q вредност коју има улаз D све до следећег тактног сигнала. Таблица 9.5 Таблице прелаза елементарних коначних аутоматa D бистабилно T бистабилно RS бистабилно ЈК бистабилно коло коло коло коло D Q Q(t+1) T Q Q(t+1) S R Q Q(t+1) J K Q Q(t+1) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 Q(t+1) = D Q(t+1) = T Q v T Q 1 1 0 * 1 1 0 1 1 1 1 * 1 1 1 0 Q(t+1) = S v R Q
216
Q(t+1) = J Q v K Q
D C
Q D
Q T
Q
S
T
Q RS
Q
R
J C
Q
K
Q JK Q
Слика 9.6 Графички симболи за бистабилна кола
T бистабилно коло
T бистабилно коло је нетактовано (несинхронизовано) бистабилно коло које се још назива и бројачко бистабилно коло јер се може користити и за синтезу бројача. Функционише тако што сваки сигнал Т=1 мења излаз Q на комплементарну вредност. Ово бистабилно коло може бити реализовано и као тактовано.
RS бистабилно коло
RS је скраћеница од енгл. reset-set (брисање - постављање). То је нетактовано коло чији излаз Q улазни сигнал S=1 поставља у стање 1, а улазни сигнал R=1 поставља у стање 0. При томе је забрањено истовремено довођење сигнала 1 и на R и на S улаз.
JK бистабилно коло
Ово је тактовано коло које функционише на следећи начин: улазни тактни сигнал C поставља коло у стање 1 ако је улаз J=1, у стање 0 ако је улаз K=0, а за J=K=1 мења излазно стање на комплементарно. Понекад се ово коло назива и MS бистабилно коло, од енгл. master-slave (водећи - пратећи, главни - потчињени), јер интерно JK коло је реализовано са два бистабилна кола која функционишу по принцишпу водећи-пратећи.
217
10 АНАЛИЗА И СИНТЕЗА КОНАЧНИХ АУТОМАТА
10.1 Азбучна пресликавања и коначни аутомати Пресликавања која реализују коначни аутомати спадају у класу азбучних пресликавања. Ова пресликавања поменута су у трећем поглављу (стр. 49) јер се њима задаје обрада дискретно представљених података и информација. Азбучна пресликавања описују се на следећи налин. Нека су А = {a1,..,an} и Z = {z1,...,zm} коначне азбуке. Ако са R(A) и R(Z) означимо скупове свих речи коначне дужине над азбукама А и Z тада се обрада (претварање) дискретних података може задати као једнозначно преликавање F скупа речи R(A) у скуп речи R(Z). Пресликавање F назива се азбучно пресликавање или азбучни оператор, а азбуке А и Z називају се улазна азбука и излазна азбука оператора F. Свакој улазној речи ra = ai1ai2...air оператор F ставља једнозначно у кореспонденцију излазну реч rz = zi1zi2...zis, при чему у општем случају дужине улазне и улазне речи нису исте. Због тога за сваку реч rа ∈ R(A) постоји реч rz ∈ R(Z) таква да је rz = f(rа). У том случају f представља функцију чија је област дефинисanости R(A) а област вредности R(Z). Под азбучним пресликавањем у општем случају подразумева се парцијално преликавање, тј. пресликавање које није дефинисanо за све речи из скупа R(A). Ово омогућава да се пресликавање F, у случајевима када за то постоји потреба, разматра као оператор у једној истој проширеној азбуци. Нaиме, обједињавањем азбука А и Z добија се азбука А = {a1,...,an,z1,...,zm}. Очевидно је да сада свако парцијално пресликавање F скупа R(A) у себе, које садржи само симболе a1,...,an може тако да се изабере да се оно поклапа са пресликавањем F скупа R(A) у скуп R(Z). Коначни аутомати обрађени у претходном поглављу представљају математички модел дигиталних уређаја који реализују неке азбучне операторе па се зато називају апстрактни аутомати. Каже се такође да сваки апстрактни аутомат индуцира неко пресликавање. Сматра се да је апстрактни аутомат 218
задат ако су за њега одређене таблице прелаза/излаза, граф аутомата или матрице прелаза/излаза прве врсте. Сваки дигитални елемент, блок, склоп, јединица и чак сам рачунар представљају коначне аутомате па се они могу пројектовати коришћењем теорије аутомата.
Задавање пресликавања таблицама кореспонденције
Азбучни оператори односно азбучна пресликавања која реализују коначни аутомати могу се задавати на више еквивалентних начина. У претходном поглављу rазматрали смо задавање коначних аутомата помоћу таблица прелаза/излаза, графова аутомата, матрица прелаза/излаза и система прекидачких функција. Међутим, овакво задавање има тај недостатак што оно не може да обезбеди њихово непосредно добијање из задатих услова (алгоритмa) обраде (претварањa) информација. Због тога су потребни другачији начини задавања оператора који обезбеђују тај прелаз. У даљем излагању у оквиру овог поглавља размотрићемо још неке начине представљања азбучних пресликавања који су погодни за неке друге примене. Азбучно пресликавање са коначном облашћу дефинисanости може се задати тзв. таблицом кореспонденције или таблицом одговора. Таблица кореспонденције саставља се на основу алгоритма обраде (претварањa) информација набрајањем свих могућих дозвољених речи улазне азбуке, тј. речи на којима је дефинисanо пресликавање, којима су стављене у кореспонденцију одговарајуће речи излазне азбуке у десном делу таблице. На тај начин таблица садржи елементе облика ra → rz, односно a1a2...аr → z1z2...zs. Пример таблице кореспонденције дат је у таблици 10.1а (стр. 185).
Аутоматна пресликавања
У претходном поглављу је већ напоменуто да коначни аутомати не могу служити за реализацију било ког азбучног преликавања, већ само једне уске класе азбучних пресликавања која се називају аутоматна пресликавања. Аутоматно пресликавање F је азбучно пресликавање које задовољава следећа четири услова: 1) Једнозначност - свако аутоматно пресликавање F представља једнозначно пресликавање скупа речи над коначном азбуком А у скуп речи над коначном азбуком Z.
219
2) Потпуност - у аутоматно пресликавање F улази и пресликавање свих префикса неке речи, тј. ако је R скуп речи које се пресликавају, онда r1r2 ∈ R има за последицу r1 ∈ R. 3) Задржавање дужине речи - аутоматно пресликавање F задржава дужину речи, тј. ⏐r⏐ = ⏐F(r)⏐. 4) Задржавање редоследа пресликавања - ако је слика улазне речи r1r2 излазна реч r1'r2' , тада је r1' слика улазне речи r1 . Аутоматно пресликавање разбија све речи улазне азбуке на две класе: на класу дозвољених и класу забрањених речи, зависно од тога да ли оне улазе или не улазе у област дефинисaности тог пресликавања. Услови за аутоматна пресликавања веома смањују број азбучних пресликавања која се могу реализовати коначним аутоматима. Већина азбучних пресликавања која се у пракси јављају, посебно већина алгоритама, не задовољавају ова строга ограничења. Тако нпр. једнакост улазних и излазних речи за произвољна једнозначна пресликавања по правилу није задовољена. Међутим, постоји стanдардни поступак који је описао В.М. Глушков помоћу кога је могуће било које коначно једнозначно азбучно пресликавање трансформисати у аутоматно пресликавање. Овај поступак нећемо описивати, само ћемо напоменути да се он састоји у изjедначавању дужина улазних и излазних речи увођењем додатних симбола и у комплетирању пресликавања префиксима улазних речи. Међутим, ово превођење због своје општости не даје увек економична решења у односу на број потребних додатних симбола.
Постојање аутомата за азбучна пресликавања За аутоматна пресликавања важи следећа теорема: За свако дато аутоматно пресликавање могуће је конструисати (синтетизовати) Муров или Милијев аутомат којим се оно може реализовати. Другачије речено, свако аутоматно пресликавање може се индуцирати помоћу неког апстрактног коначног аутомата. Доказ се састоји у опису начина конструисања аутомата. Нека су А и Z улазна и излазна азбука парцијалног пресликавања F које пресликава речи из скупа R(A) у скуп R(Z). Дефинишимо Муров аутомат са улазном азбуком А, излазном азбуком Z и азбуком стања Q, где се узима да скуп стања чине све дозвољене речи улазне азбуке којима ћемо овде и означавати стања. Као почетно стање узима се празна реч е ∈ Q. Функцију прелаза fq(q,a) дефинишемо 220
на следећи начин: ако је q ∈ Q било које стање аутомата (дозвољена улазна реч) а а било који улазни симбол, тада ћемо сматрати да је fq(q,a) једнако речи qi = qa која се добија дописивањем симбола а на реч q, ако је реч qi ∈ Q (тј. то је дозвољена улазна реч) и fq(q,a) није дефинисanо у супротном случају. Функцију излаза дефинишемо релацијом fz(q,a) = zj, где је zj последњи симбол речи fq(q,a). На тај начин је конструисan аутомат који индуцира задато аутоматно пресликавање F.
Задаци анализе и синтезе аутомата Теорија аутомата обичо се дели на апстрактну теорију аутомата и структурну теорију аутомата. У апстрактној теорији аутомата свуда се под аутоматом подразумева апстрактни аутомат задат на један од следећих начина: системи прекидачких функција (каноничке једначине), таблице прелаза/излаза, графови прелаза аутомата, матрице прелаза/излаза прве врсте. У структурној теорији аутомата када се говори о аутомату има се у виду структурна шема аутомата која се састоји од елемената неког стандардног скупа у који улази скуп елементaрних аутомата и функционално потпуни скуп логичких елемената. Основни задаци теорије аутомата су анализа и синтеза који су супротни једна другом. Како у различитим фазама пројектовања аутомат може бити задат на различите начине, анализа и синтеза служе за утврђивање општих особина аутомата и неких општих законитости њиховог конструисања. Под анализом аутомата се подразумева одређивање пресликавања које реализује задати аутомат. Под синтезом аутомата подразумева се конструисање (реализацијa) шеме аутомата који индуцира задато пресликавање. При томе се издваја неколико фаза анализе и синтезе од којих су најважнији апстрактни и структурни ниво. На апстрактном нивоу разматрају се следећи задаци: препознавање еквивалентног аутомата, одређивање изоморфиzmа аутомата, апстрактна анализа и апстрактна синтеза аутомата, минимизација стања аутомата, алгебра аутомата и разлагање аутомата којим се решава редна, паралелна и општа декомпизиција аутомата. На структурном нивоу проучавају се методи прелаза од графа аутомата или матрице прелаза/излаза прве врсте на структурну шему аутомата, начини грађења сложених аутомата помоћу елементaрних аутомата и логичких елемената и начини кодирања стања.
221
У општем облику задатак апстрактне анализе коначног аутомата формулише се на следећи начин: задат је апстрактни коначни аутомат, потребно је одредити азбучни оператор који реализује тај аутомат (пресликавање речи улазне у речи излазне азбуке) и особине тог оператора. Задатак структурне анализе састоји се у следећем: задата је структурна шема аутомата тј. композиција коначног броја елементaрних аутомата и логичких кола који су повезани тако да обезбеђују задате услове функционисања аутомата. Потребно је одредити да ли је структурна шема правилна, тј. да ли она задовољава услове индуктивне дефиниције комбинационих (логичких) мрежа и, ако јесте, одредити закон функционисања аутомата, тј. који оператор (пресликавање) аутомат реализује. У фази апстрактне синтезе аутомата потребно је да се на основу задатих услова функционисања аутомата, алгоритма обраде (претварањa) дискретних информација или на други начин описаног оператора F добије Милијев или Муров аутомат представљен таблицама прелаза/излаза, графом или матрицама прелаза/излаза. Полазни услови функционисања задају се на различите начине као што су: азбучно пресликавање или таблица кореспонденције улазних и излазних речи аутомата (таблица одзивa), текстуални опис, формуле рачуна предиката и др. Понекад се задатак синтезе формулише и на следеће начине: a) општи задатак апстрактне синтезе: задат је канонички скуп догаћаја, конструисати Милијев или Муров аутомат који представља сваки догађај тог скупа неким скупом излазних симбола за Милијев аутомат или скупом стања за Муров аутомат, б) канонички задатак синтезе: задат је аутоматни скуп догађаја, наћи Милијев или Муров апстрактни аутомат чији се канонички скуп догађаја поклапа са задатим. Структурна синтеза коначног аутомата састоји се у добијању структурне шеме аутомата, тј. у налажењу начина повезивања логичких елемената и елементaрних аутомата који ће обезбедити задате услове функционисања аутомата, разматрају се начини кодирања стања аутомата, улазних и излазних симбола. Полазне услове за структурну синтезу представљају таблице прелаза/излаза, граф аутомата или матрице прелаза/излаза прве врсте, а сматра се да је задат или се бира потпуни скуп логичких елемената и скуп елементраних аутомата.
10.2 Представљање догађаја у аутоматима
222
Код синтезе аутомата највећи интерес представљају произвољна парцијална аутоматна пресликавања, међу којима и аутоматна пресликавања са бесконачном облашћу дефинисаности, која се не могу задати помоћу таблица кореспонденције (таблица одговора). Погодан начин задавања произвољних аутоматних пресликавања је њихово задавање помоћу догађаја. Нека је А = {a1,...,аn} коначна азбука а R(A) скуп речи над том азбуком. Догађајем над азбуком А назива се било који подскуп скупа R(A) речи над азбуком А. Догађаји и операције над догађајима уско су повезани са задацима анализе и синтезе коначних аутомата.
Алгебра догађаја
Алгебром се назива скуп елемената произвољне природе на коме су задате неке n-aрне операције. Под задавањем n-aрне операције подразумева се задавање начина кореспонденције између уређеног вектора (g1,...,gn) и резултата примене операције g = f(g1,...,gn). Алгебром догађаја над азбуком А назива се скуп свих догађаја у тој азбуци са задатим операцијама уније, производа (надовезивања, спајањa) и итерације, које се дефинишу на следећи начин: Унијом догађаја E1 и E2 назива се догађај Е који се означава са Е = E1 ∪ E2 и представља скуповну унију догађаја E1 и E2, или формално Е1 ∪ E2 = { r | r ∈ E1 ∨ r ∈ E2 } . Производ догађаја (надовезивање догађаја, дописивање догађајa) E1 и E2 представља догађај који се означава са Е = E1E2 а састоји се од свих речи r облика r =r1r2, при чему је r1 ∈ E1 а r2 ∈ E2, или формално написано E1E2 = { r1r2 | r1 ∈ E1, r2 ∈ E2 } . Према томе, производ два догађаја се добија надовезивањем (дописивањем) с десна било које речи догађаја E2 било којој речи догађаја E1, али не и обратно. Итерацијом догађаја Е назива се догађај који се означава са Е* који представља унију празне речи, догађаја Е, догађаја ЕЕ, догађаја ЕЕЕ, итд. до бесконачности, тј.
223
Е* = е ∪ Е ∪ ЕЕ ∪ ЕЕЕ ∪ ... . За означавање редоследа примене операција у алгебри догађаја користе се на уобичајени начин мале заграде. Ако нема заграда приоритет операција, од највећег ка најмањем је следећи: итерација, производ, унија. Пример. Нека су над азбуком А = { a,b } задати догађаји E1 = {a, ba} и E2 = { bb, ab }. На основу горњих дефиниција имамо: E1 ∪ E2 = { а, bа, bb, ab } Е1E2 = { аbb, aab, babb, baab } Е1* = { е, a, ba, aa, aba, baa, baba, aaa, abaa, baaa, babaa, aaba, ababa, baaba, bababa, ... } . Посебно се разматрају следећи догађаји: празан догађај φ - празан скуп речи, догађај е - догађај који садржи празну реч е (реч дужине 0). Догађај е игра у теорији аутомата помоћну улогу. Тако се обично сматра да нису различити догађаји који се разликују само за празну реч. Велики значај у алгебри догађаја имају правила еквивалентних трансформација израза. На основу дефиниција операција алгебре догађаја може се доказати да важе следеће једнакости: E1 ∪ E2 = E2 ∪ E1; ЕЕ* = Е*Е
(комутативност уније и итерације)
E1 ∪ (E2 ∪ Е3) = (E1 ∪ E2) ∪ Е3
(асоцијативност уније догађајa)
E1(E2 Е3) = (E1E2)Е3
(асоцијативност производa)
E1(E2 ∪ Е3) = (E1E2) ∪ (E1Е3)
(лева и десна дистрибутивност
(E1 ∪ E2) Е3 = (E1Е3) ∪ (E2Е3)
производа у односу на унију)
Е ∪ φ = φ ∪ Е = Е; Еφ= φЕ = φ ; Ее = еЕ = Е; е ∪ Е* = Е* ;
φ* = е ; е* = е ; Е* = е ∪ ЕЕ*
(развијање итерације)
(Е*)* = Е*;
Е*Е* = Е*;
(E1* ∪ E2)* = (E1 ∪ E2)*;
Е* ∪ Е = Е*
E1*( E2 ∪ Е3) = E1* E2 ∪ E1* Е3;
(Е1 ∪ E2)Е3* = E1Е3* ∪ E2Е3*
224
е ∪ (E1 ∪ E2)*E2 = (E1* E2)*; E1*E2 = E2 ∪ E1* E1E2 = E2 ∪ E1 E1*E2 (E1 ∪ E2)* = E1*E2* = (E1* ∪ E2*)* = E1*( E2E1*)* = (E1*E2)* E1* . Канонички скуп догађаја
Један од начина представљања аутоматног пресликавања јесте његово задавање помоћу тзв. каноничког скупа догађаја. Нека је F парцијално азбучно пресликавање са улазном азбуком А и излазном азбуком Z. Дефинишимо за било који излазни симбол z догађај Ez који са састоји од свих речи улазне азбуке чије се слике при пресликавању F завршавају симболом z. Скуп Ez назива се догађајем представљеним у пресликавању F излазним симболом z. Скуп догађаја { Еz1,...,Еzm} за све симболе zi , i = 1,2,...,m, излазне азбуке Z назива се канонички скуп догађаја. Може се доказати следећа teorema: Задавање аутоматног пресликавања еквивалентно је задавању каноничког скупа догађаја Еz1,..., Еzm. Другим речима, свако аутоматно пресликавање једнозначно је одређено одговарајућим каноничким скупом догађаја означених симболима излазне азбуке. Обрнуто не важи у општем случају, али се може доказати да важи за аутоматна пресликавања. За доказ ове теореме потребно је и довољно доказати важност следећих лема које наводимо без доказа: Лема 1. Задавање парцијалног аутоматног пресликавања F скупа R(A) у скуп R(Z) неког аутомата М једнозначно одређује и канонички скуп догађаја Еz1,Еz2 ,...,Еzm аутомата М. Лема 2. Задавање каноничког скупа догађаја Еz1,Еz2 ,...,Еzm м неког аутомата М једнозначно одређује парцијално пресликавање F индуцирано тим аутоматом. На тај начин, било које аутоматно пресликавање може се задавати поделом скупа свих дозвољених речи улазне азбуке на m дисјунктних догађаја.
Регулaрни изрази
225
Нека је А = {a1,a2,...,аn} нека азбука. Дефинишимо врло важан појам регулaрних израза над азбуком А, који уствари представљају одређене формуле у алгебри догађаја, на следећи начин: 1) Регулaрни изрази над азбуком А су елементи азбуке a1,a2,...,аn и празна реч е. Ови се изрази називају елементaрни регулaрни изрази. 2) Ако су E1 и E2 регулaрни изрази тада су регулaрни и изрази E1 ∪ E2, E1E2, E1*, E2*. 3) Нема других регулaрних израза сем израза који се добијају на основу правила 1 и 2 применом коначног броја операција итерација, производ и унија. Догађаји за које постоје регулaрни изрази називају се регулaрни догађаји. Међутим, треба имати у виду да за један исти регулaрни догађај може постојати више регулaрних израза који се добијају један из другог применом еквивалентних трансформација за операције алгебре догаћаја. Може се доказати да постоје и тзв. нерегулaрни догађаји, тј. догађаји за које не постоје регулaрни изрази. Цикличком дубином регулaрног израза назива се број уметнутих једна у другој операција итерације. Тако израз (a(b(a*)a)* ∪ c)* има цикличку дибину 3. Под цикличком дубином регулaрног догађаја назива се минимална цикличка дубина регулaрних израза којима је представљен тај догађај. Пример. Неки регулaрни догађаји над азбуком А = {a,b,c} су: 1) Догађај Е који се назива универзални догађај а садржи све речи азбуке А може се написати помоћу следећег регулaрног израза: Е = (a,b,c)*. 2) Догађај који садржи само речи од три симбола азбуке А: Е = (а ∪ b ∪ c)(а ∪ b ∪ c)(а ∪ b ∪ c). 3) Догађај састављен од свих речи азбуке А у којима се бар једном среће реч aba: Е = (а ∪ b ∪ c)*aba(a ∪ b ∪ c)*. 4) Догађај који садржи све речи које почињу симболима a или c а завршавају се речју ab: Е = (а ∪ c)(а ∪ b ∪ u)*ab. 5) Догађај који садржи све речи чија је дужина пропорционална са 2: Е = ((а ∪ b ∪ c)(а ∪ b ∪ c))*. 6) Догађај који се састоји од речи које као префикс имају било коју реч састављену од симбола a или b, затим следи реч од два симбола b или два симбола c, а завршетак садржи бар један симбол a: Е = (а ∪ b)(bb ∪ cc)аа*.
226
Из особина операција итерација, производ и унија следи да су сви коначни догађаји регулaрни. Наиме, свака се реч предстваља као производ симбола а коначан догађај као унија речи које га чине. Примена итерације доводи до појаве бесконачних догађаја али су то бесконачни пребројиви скупови. Међутим, већина бесконачних догађаја је нерегулaрна из следећих разлога: скуп речи над непразним коначним скупом, као и скуп свих регулaрних догађаја су бесконачни пребројиви скупови, док је скуп свих догађаја над коначном азбуком, како се то доказује у теорији скупова, бесконачан скуп. Везу између коначних аутомата и регулaрних догађаја даје следећа важна теорема Клини (Kleene): Класа догађаја који се могу представити у коначним аутоматима поклапа се са класом регулaрних догађаја. Другим речима, регулaрни догађаји и само они могу да се представе у коначним аутоматима. У суштини ова се теорема састоји од две теореме које се често називају прва и друга теорема Клини. Теорема 1. Догађај представљен у било ком коначном Милијевом или Муровом аутомату неким скупом излазних симбола или стања обавезно је регулaрни догађај. Теорема 2. Било који регулaрни догађај може се представити у коначном Милијевом или Муровом аутомату скупом излазних симбола или стања. Теорема Клини представља фундаменталну теорему апстрактне теорије аутомата јер из ње следи да је језик регулaрних израза довољан за опис пресликавања које индуцира произвољни коначни аутомат. И обратно, решавајући проблем анализе, могуће је сукцесивно наћи све догађаје који чине канонички скуп догађаја датог аутомата.
10.3 Апстрактна анализа коначних аутомата Анализа аутомата може бити на различитим нивоима и са различитим циљевима. Поједине фазе анализе састоје се од следећих активности:
227
1) Апстрактна анализа. Задат је апстрактни аутомат на један од следећих начина: таблицом прелаза/излаза, графом прелаза аутомата, матрицом прелаза/излаза прве врсте или системима прекидачких функција (каноничким једначинамa). У току апстрактне анализе треба одредити оператор реализован у аутомату (пресликавање које реализује аутомат), неке његове особине и могућности. За испитивање особина оператора потребно је прећи на један од могућих регулaрних израза за догађај представљен у аутомату. Од особина се обично разматрају доступност стања, различитост и периодичност које показују у које ће стање прелазити аутомат при довођењу улазних речи (низова улазних симболa), какве су његове карактеристике при обради (претварању) информација итд. Може настати и случај када су нека стања аутомата сувишна. Ради тога се врши минимизација стања аутомата, што може довести до упрошћавања структурне шеме аутомата и смањења укупног броја његових елемената. 2) Структурна анализа. У фази структурне (функционалне) анализе аутомат се обично задаје структурном (логичком) шемом. Потребно је одредити да ли шема аутомата задовољава услове индуктивне дефиниције комбинационих (логичких) мрежа. На основу структурне шеме аутомата потребно је одредити који оператор (пресликавање) она реализује, а затим дати одговоре на задатак анализе апстрактног аутомата размотрене под тачком 1. 3) Експерименти са аутоматима. Аутомат може бити задат као један или више физичких уређаја али се о унутрашњој структури аутомата мало зна и не постоји документација. Потребно је одредити који оператор реализује аутомат или бар неке његове особине. У овом случају анализа аутомата се решава помоћу експеримента. На аутомат се доводе улазне речи и фиксирају генерисане излазне речи, што ће дати само ограничену информацију о аутомату. На основу експеримента треба одредити особине аутомата и, ако је могуће, његову структуру или оператор у било ком познатом облику. Зависно од начина како је задат аутомат понекад се задатак анализе формулише и на следеће начине: a) општи задатак анализе: задат је апстрактни аутомат, потребно је наћи регулaрни израз за догађај који је представљен у аутомату скупом излазних симбола, б) канонички задатак анализе: задат је апстрактни аутомат, наћи канонички скуп догађаја који одговара том аутомату. Разлог овоме је могућност задавања оператора на више начина тако да се бира онај који је лакши.
228
На страни 176 била је наведена теорема која каже да се канонички скуп догађаја којим се задаје индуцирано аутоматно пресликавање једнозначно одређује на основу задатог апстрактног аутомата. У том смислу канонички задатак анализе је једнозначан а као резултат анализе добија се неки скуп формула регулaрних израза догађаја који је представљен у аутомату. Међутим, један исти догађај може имати неколико еквивалентних облика регулaрних израза који су различити по својој сложености. Зато се у процесу анализе јавља проблем добијања минималне форме регулaрних израза. За регулaрни израз се каже да је минималан регулaрни израз ако има најмању могућу цикличку дубину. Код исте цикличке дубине неколико регулaрних израза минималним се сматра израз са најмањим бројем симбола. За одређивање минималних регулaрних израза постоје посебне методе које се заснивају на примени еквивалентних трансформација у алгебри догађаја. Када је нађен канонички скуп догађаја датог аутомата тада није тешко наћи догађај представљен у аутомату било којим скупом излазних симбола као унију догађаја каноничког скупа.
Путеви у аутомату Низ од k сукцесивних грана у графу аутомата који преводи аутомат из једног стања у друго назива се пут у аутомату, при чему се k назива дужина пута. Пут је одређен почетним чвором (почетним стањем) и улазном речи која аутомат доводи у крајње стање. Означимо са Pijk скуп свих путева који преводе аутомат из стања qi у стање qj. Скуп Pij1 означимо са pij. То је пут дужине 1 и он представља унију симбола који аутомат преводе из стања qi у суседно стање qj. Пут дужине k представља уређени низ грана pil1, pl1l2, ..., plk-1j и симболички се записује као производ (речи) облика: pil1pl1l2...plk-1j. Пример. Ако је грана између стања q1 и q2 означена са а, а грана између стања q2 и q3 означена са а ∪ b, тада ће пут p13 између стања q1 и q3 бити: p13 = а(а ∪ b) = аа ∪ аb. Ако у неком путу не постоји нека грана, тј. ознака гране је φ тада ће и сам пут имати ознаку φ. Нека је М матрица прелаза прве врсте датог аутомата. Дефинишимо рекурзивно k-ти степен матрице М на следећи начин: Mk = MMk-1, k = 2, 3, ... ,
229
при чему се примењује уобичајени поступак множења матрица али са операцијама из алгебре догађаја. При томе, ако је један од фактора φ тада је и производ једнак φ. Операција множења матрица је некомутативна. Методом математичке индукције може се доказати да важи следећа теорема: Елемент Pijk матрице Мk у пресеку i-те врсте и k-те колоне представља скуп свих путева дужине k између чворова qi и qj. Пример. У аутомату чија је матрица прелаза прве врсте М дата, други и трећи степен матрице имаће облик: ⎡ φ b a⎤ M = ⎢⎢ φ b a ⎥⎥ , ⎢⎣a ∪ b φ φ ⎥⎦
ba ⎡a ( a ∪ b ) bb ⎤ ⎢ ⎥ , M = ⎢a ( a ∪ b ) bb ba ⎥ ⎢⎣ φ ( a ∪ b )b ( a ∪ b )a ⎥⎦ 2
bbb ∪ a ( a ∪ b )b bba ∪ a ( a ∪ b )a ⎤ ⎡ ba ( a ∪ b ) M 3 = ⎢⎢ ba ( a ∪ b ) bbb ∪ a ( a ∪ b )b bba ∪ a ( a ∪ b )a ⎥⎥ , ⎥⎦ ⎢⎣( a ∪ b )a ( a ∪ b ) ( a ∪ b )bb ( a ∪ b )ba
одакле се види да су нпр. сви путеви дужине 3 из стања q1 у стање q3 дати изразом: bba ∪ а(а ∪ b)а = bbа ∪ ааа ∪ аbа.
Алгебарска анализа аутомата
Анализа апстрактних аутомата састоји се у одређивању регулaрног израза представљеног у задатом аутомату. Овај се регулaрни израз може директно добити из графа аутомата или таблице прелаза/излаза, али се чешће користи канонички скуп догађаја. Постојећи методи анализе деле се на графичке и аналитичке (алгебарске). Код графичких метода регулaрни изрази се добијају на основу графа аутомата. Аналитички метод апстрактне анализе аутомата састоји се у решавању система линеaрних једначина у алгебри догађаја. Ми ћемо у даљем излагању описати алгебарски метод анализе. Дефинишимо догађај представљен у аутомату стањем qj, j ∈{1,2,...,k}, или кратко догађај стања qj, као скуп свих путева (речи улазне азбуке) који преводе аутомат из почетног стања у стање qj. На основу графа аутомата догађај стања qj описује се следећим изразом у алгебри догађаја: Еј = E1p1j ∪ ... ∪ Еipij ∪ ... ∪ Еkpkj , ј∈ {1,2,...,k} ,
230
где је Еi, i = 1,2,...,k , догађај представљен у аутомату стањем qi а pij су ознаке грана које из стања qi долазе у стање qj. Ако грана не постоји тада је pij = φ. Узимајући да је почетно стање аутомата q1 на основу претходног израза догађаји појединих стања аутомата одређени су следећим системом линеaрних једначина у алгебри догађаја: E1 = E1p11 ∪ E2p21 ∪ ... ∪ Еkpk1 ∪ е E2 = E1p12 ∪ E2p22 ∪ ... ∪ Еkpk2 ...... Еk = E1p1k ∪ E2p2k ∪ ... ∪ Еkpkk . Решавањем овог система једначина одређују се догађаји стања. Као и у обичној алгебри за решавање се може користити метода елиминације променљивих. Међутим, за то је потребно знати решавање у алгебри догађаја линеaрне једначине са једном непознатом. Ако су а и б познати догађаји а x је непознати догађај који се тражи, може се доказати да у алгебри догађаја линеaрна једначина облика x = аx ∪ b има решење: x = bа*. Канонички скуп догађаја датог аутомата одређује се на основу догађаја поједних стања на следећи начин. Код Муровог аутомата излазни симбол зависи само од стања аутомата. Зато се догађај Еz излазног симбола z одређује изразом: Еz = E1 ∪ ... ∪ Еј ∪ ... ∪ Еs где су Еј, ј=1,2,...s , догађаји свих стања qj за за које важи z = fz(qј). Код Милијевог аутомата због z = fz(qј,aij), aij ∈ {1,2,...,n}, биће: Еz = E1ai1 ∪ ... ∪ Еjaij ∪ ... ∪ Еsais , где је aij ознака излазне гране из стања qј (што значи да у стању qј улазни симбол aij генерише излазни симбол z). На основу претходних израза и догађаја стања налази се канонички скуп догађаја који је одређен скупом регулaрних израза {Еz1,Еz2,...,Еzm}. Пример. За аутомат дат на слици 10.1а за почетно стање q1 биће: E1 = е; E2 = E1а ∪ Е3b; Е3 = E1b ∪ E2а ∪ Е3c;
Е4 = Е3а .
231
Систем једначина решавамо методом елиминације променљивих. Искључујемо прво E1 и добијамо: E2 = а ∪ Е3b ;
Е3 = b ∪ (а ∪ Е3b)а ∪ Е3c,
односно: Е3 = Е3(bа ∪ c) ∪ (b ∪ аa). Решење ове једначине биће: Е3 = (b ∪ аa)(bа ∪ c)*. Заменом овог решења у једначине за E2 и Е4 добија се следеће коначно решење за догађаје стања: E1 = е , E2 = a ∪ (b ∪ aa)(bа ∪ c)*b , Е3 = (b ∪ aa)(bа ∪ c)*, Е4 = (b ∪ aa)(bа ∪ c)*a . Канонички скуп догађаја за почетно стање q1 биће: Еz1 = E1а ∪ E1b ∪ Е3b ∪ Е3c = E1(а ∪ b) ∪ Е3(b ∪ c) = (а ∪ b) ∪ (b ∪ аa)(bа ∪ c)*(b ∪ c) , Еz2 = E2а ∪ Е3а = (E2 ∪ Е3)а = (а ∪ (b ∪ аa)(bа ∪ c)*b ∪ (b ∪ аa)(bа ∪ c)*)а. Применом еквивалентних трансформација у алгебри догађаја ове изразе треба даље минимизирати. Пример. За аутомат задат на слици 10.1б догађај Е3 стања q3 се добија на следећи начин: E1 = E1φ ∪ E2φ ∪ Е3φ ∪ е = е E2 = E1a1 ∪ E2 a1 ∪ Е3 a1 = a1 ∪ E2 a1 ∪ Е3 a1 Е3 = E1a2 ∪ E2 a2 ∪ Е3 a2 = a2 ∪ E2 a2 ∪ Е3 a2.
232
q1 A/z1
b/z1
q3
C/z1
а)
a1
q2 /0
q1 /0
a/z2
A/z2 q2
a1
q4
B/z1
a1 A2
a2 q3 /1
a2
б)
Слика 10.1 Примери аутомата који се анализирају
Ако E2 представимо у облику: E2 = E2 a1 ∪ (е ∪ Е3) a1 добија се решење за E2 у облику: E2 = (е ∪ Е3) a1a1*. Заменом E2 у израз за Е3 добија се: Е3 = a2 ∪ a1 a1* a2 ∪ E2 a1 a1*a2 ∪ Е3 a2, Е3 = Е3(a1 a1* a2 ∪ a2) ∪ (a1 a1* a2 ∪ a2), одакле се добија решење за Е3 у облику: Е3 = (a1 a1* a2 ∪ a2)( a1 a1* a2 ∪ a2)* = (a1 a1* ∪ е) a2((a1 a1* ∪ е) a2)*, тј. Е3 = a1* a2(a1*a2)*.
Декомпозиција аутомата Под декомпозицијом аутомата подразумева се представљање сложеног аутомата помоћу више простијих аутомата. При томе се подразумева да се функционисање полазног аутомата замењује функционисањем међусобно повезаних простијих аутомата. Као посебан случај декомпозиције може се сматрати и реализација задатог аутомата помоћу елементaрних аутомата или других унапред усвојених релативно простих стандардних аутомата. Декомпозиција аутомата може бити редна, паралелна или комбинована. Редна веза два аутомата M1=(A1,Z1,Q1,f1q,f1z) и M2 = (A2,Z2,Q2,f2q,f2z) за које је A2 = Z1 јесте аутомат M = M1 ⇒ M2 = (А1,Z2,Q1xQ2,fq,fz ) чије су функција стања и функција излаза дефинисане на следећи начин: fq((q,п),a) = (f1q(q,a),f2q(п,f1z(q,a)), fz((q,п),a) = f2з(п,f1z(q,a)).
233
Паралелна веза два аутомата M1=(А1, Z1, Q1, f1q, f1z) и M2 = (А2, Z2, Q2,f2q, f2z) јесте аутомат M = M1║M2 = (А1xА2 ,Z1xZ2 ,Q1xQ2 ,fq ,fz) чије су функција стања fq и функција излаза fz дефинисане на следећи начин: fq((q1,q2),(a1,a2 )) = (f1q(q1,a1),f2q(q2,a2)), fz((q1,q2),(a1,a2 )) = (f1z(q1,a1),f2z(q2,a2)). Развој микроелектронике и хомогених рачунских структура актуелизовао је проблем декомпозиције сложеног аутомата на задате простије аутомате који служе као стандардни функционални блокови (модули). У општем случају потребно је, ако је могуће, из сложеног аутомата издвојити редном или паралелном декомпозицијом функционални блок. За преостали аутомат поступак се даље понавља све док се полазни сложени аутомат потпуно не разложи на функционалне модуле.
10.4 Апстрактна синтеза коначних аутомата У фази апстрактне синтезе аутомата потребно је на основу задатих услова функционисања аутомата или алгоритма обраде (претварањa) дискретних информација (тј. оператора обраде) одредити улазну и излазну азбуку и азбуку стања, функције прелаза и излаза и почетно стање аутомата и апстрактни аутомат представити таблицама прелаза/излаза, графом аутомата или матрицама прелаза/излаза. Полазни услови функционисања задају се на различите начине као што су нпр. текстуални опис, таблица кореспонденције улазних и излазних речи аутомата, формуле рачуна предиката и др. Међутим, скуп дозвољених речи аутомата је у општем случају бесконачан или врло велики, тако да није могуће саставити таблицу зависности излазних речи од улазних. Зато настаје потреба избора начина задавања аутомата који омогућава да се представи зависност између бесконачног или врло великог броја улазних и излазних речи помоћу коначних формула, а то омогућавају регулaрни изрази. Полазећи од неког описног начина задавања аутомата треба прећи на неки стандардни начин задавања аутомата, као што је нпр. канонички скуп догађаја (задат помоћу регулaрних изразa) који се могу представити у аутомату, који је обично полазни за апстрактну синтезу. Текстуални опис се у многим случајевима даље формализује на језик алгебре догађаја или рачуна предиката. Погодно је синтезу коначног аутомата вршити следећим редом:
234
1) Синтетизовати Муров аутомат у коме је сваки догађај задатог каноничког скупа догађаја представљен неким подскупом стања. Број стања није ограничен. 2) Синтетизованом Муровом аутомату додељују се излазни сигнали (симболи) за представљање појединих догађаја из каноничког скупа догађаја. 3) По потреби од Муровог аутомата посебним поступком, описаним у претходном поглављу, прелази се на еквивалентан Милијев аутомат. 4) У случају захтева економичности, од напред синтетизованог аутомата поступком минимизације стања аутомата налази се еквивалентан аутомат који има најмањи могућ број стања. Канонички задатак апстрактне синтезе Најчешће се алгоритми синтезе заснивају на спецификацији азбучног пресликавања помоћу каноничког скупа догађаја у улазној азбуци. Постоји стандардни начин свођења задатка синтезе аутомата на тзв. канонички задатак синтезе који увек има решење и гласи: задат је канонички скуп догађаја, тражи се коначни Милијев или Муров аптрактни аутомат чији је канонички скуп догађаја једнак задатом, тј. аутомат код кога је сваки од ових догађаја представљен неким подскупом излазних симбола. Канонички задатак синтезе заснован је на следећем ставу: за сваки коначни (а не само аутоматни) скуп догађаја над било којом коначном азбуком постоји каноничка подела која представља канонички скуп догађаја. Код овакве формулације задатка синтезе не постоје никаква ограничења у избору броја стања аутомата, као и у избору његове излазне азбуке. По својој суштини овај је задатак неједнозначан. То се објашњава тиме што аптрактни аутомат није једнозначно одређен одговарајуђим каноничким скупом догађаја, јер се исто аутоматно пресликавање може индуцирати различитим апстрактним аутоматима. Због тога се као резултат решења каноничког задатка синтезе налази један од могућих аутомата, а затим се решава задатак минимизације аутомата који се састоји у одређивању аутомата са минималним бројем стања. Ограничења код синтезе посебно се уводе код неких накнадних захтева. То може бити нпр. захтев да аутомат има што мањи број стања, да не поседује тзв. критичне прелазе (хазарде) и др.
235
Одређивање регулaрних израза на основу таблице кореспонденције
Могуће је извршити синтезу аутомата на основу таблице кореспонденције аутоматног пресликавања. Међутим, овај се поступак не решава директно, већ прво треба на основу таблице кореспонденције добити регулaрне изразе догађаја који ће бити представљен у аутомату. Затим се врши синтеза аутомата на основу регулaрних израза. Таблица кореспонденције аутоматног пресликавања треба да задовољи и услове који произилазе из захтева да пресликавање буде аутоматно пресликавање. Зато се за задавање аутоматних пресликавања користи тзв. скраћена таблица кореспонденције у чијем се левом делу уносе било којим редоследом све дозвољене улазне речи које нису префикси неких других улазних речи, а у десном делу таблице одговарајуће излазне речи. Пресликавање префикса лако се одређује из услова аутоматности пресликавања. Нека је у скраћеној таблици кореспонденције задато аутоматно пресликавање F, потребно је одредити коначни аутомат који индуцира то пресликавање. Напоменимо да за недозвољене речи улазне азбуке нису дефинисане одговарајуће излазне речи. То значи да се оне не могу појавити на улазу аутомата, па према томе одзив аутомата на те речи може бити произвољан. Поступак добијања на основу таблице кореспонденције регулaрних израза догађаја представљених у аутомату свим излазним симболима је следећи: 1. Проверава се да ли су у таблици кореспонденције задовољени захтеви да задато пресликавање буде аутоматно. Ако неки захтев није испуњен таблица се на одговарајући начин исправља. Ако се не може исправити аутомат се не може синтетизовати јер пресликавање није аутоматно. 2. Почев од првог симбола слева у десној колони таблице кореспонденције узима се један од симбола излазне азбуке, нпр. зи. За овај симбол се у левом делу таблице (тј. у делу пресликавања лево од стрелице) налазе одговарајуће речи аи улазне азбуке дужине 1 и оне се уписују у посебну врсту за догађај Ези. За исти тај симбол али када је у десном делу таблице други слева налазе се у левом делу одговарајуће речи дужине 2 које се записују у врсту догађаја Ези. Затим се узима трећи с лева симбол, итд. Овај се корак понавља све док се не обраде симболи у излазним речима највеће дужине. 3. Нађене речи улазне азбуке записане у посебну врсту догађаја Ези повезују се знаком уније.
236
4. Кораци 2 и 3 понављају се за све симболе излазне азбуке. Пример. У таблици 10.1а дата је таблица кореспонденције за коју је A = {0,1,2} и Z = {0,1,2}. Канонички скуп догађаја, тј. регулaрни изрази за излазне симболе добијени применом описане процедуре дати су у таблици 10.1б. Таблица 10.1 − Таблица кореспонденције и одговарајући регуларни изрази 00 → 00
10 → 11
20 → 22
E0 = 0 ∪ 00 ∪ 12 ∪ 21
01 → 01
11 → 12
21 → 20
E1 = 1 ∪ 01 ∪ 10 ∪ 22
02 → 02
12 → 10
22 → 21
E2 = 2 ∪ 02 ∪ 11 ∪ 20.
а) Таблица кореспонденције
б) Регуларни изрази
Синтеза аутомата на основу регулaрних израза
За апстрактну синтезу аутомата најчешће се користе регулaрни изрази догађаја који се представља у аутомату или регулaрни изрази каноничког скупа догађаја. Синтеза аутомата на основу регулaрних израза заснива се на следећој теореми: За сваки регулaрни израз Е који представља регуларан догађај D ≠ φ постоји коначни аутомат са почетним стањем q1 и подскупом крајњих стања која представљају догађај на тај начин што свака реч која припада догађају D преводи аутомат из почетног у неко крајње стање. Постоји алгоритам који користи тзв. правила потчињавања места у регулaрном изразу која се у суштини своде на разматрање свих могуђих речи које улазе у задати регулaрни израз. Зато примена правила потчињавања места није увек погодна и отежава коришћење алгоритма. Други начин синтезе је формирање графа аутомата за дати регулaрни израз на основу дефиниције регулaрних израза, што значи да је довољно показати како се представљају помоћу графа аутомата следећи основни регулaрни изрази: Е = е; Е = а; Е = Е*; Е = Е1 ∪ E2 и Е = E1E2 . Регулaрни израз Е = е представља се у било ком аутомату са почетним стањем q1 које је и једино крајње стање. Регулaрни израз Е = а, а ∈ А, представља се у аутомату графом према слици 10.2а. Прелаз аутомата у крајње стање q2 означава да је на улаз аутомата доведен симбол a. За регулaрни израз Е = E1* = е ∪ E1E1* граф аутомата приказан је на слици 10.2б. Овде су крајња стања и q1 и q2 јер е припада догађају E1. Граф аутомата за регулaрни 237
израз Е = E1 ∪ E2 дат је на слици 10.2в. У скуп крајњих стања улазе и q2 и q3. За регулaрни израз Е = E1E2 граф аутомата дат је на слици 10.2г. Скупу крајњих стања припада стање q3 и евентуално стање q2 ако догађај E2 садржи е. Уколико догађај E1 представља унију више догађаја E11, E12,...,E1s, слика 10.2д, тада ће постојати m крајњих стања q31,q32,...,q3m. Ако при томе е припада догађају E2 тада скупу крајњих стања припадају и стања q21,q22,...,q2m.
Минимизација коначних аутомата Након поступка синтезе врши се минимизација добијеног аутомата. Минимизација аутомата састоји се у налажењу аутомата еквивалентног задатом, али са мањим бројем стања. Ако се аутомат налази у стању q ∈ Q и доведе му се улазна реч r, на излазу аутомата добија се слика улазне речи која се назива одговором аутомата у стању q на реч r. За два стања qi и qj истих или различитих аутомата каже се да су еквивалентна стања ако су одговори у тим стањима исти за било коју реч улазне азбуке. a
q1
q2
q1
а)
E1
б)
q1
1
E1 q3
E2
q1
в) q1
г)
E1
q1
q2
E1
E1
E1
q2
m
q2
E2
E1 q3
E2
q12
.. .
q13
.. . E2
q2m
qm 3
д)
Слика 10.2 Графови аутомата за основне регуларне изразе
Сва међусобно еквивалентна стања у скупу стања Q образују једну класу еквивалентних стања. Све могуће класе еквивалентних стања сачињавају скуп E класа еквиваленције или тзв. E-расподелу скупа стања. Пошто се на основу улазних речи и њихових слика не може уочити разлика између стања у једној класи еквивалентних стања, то се сва стања једне класе могу заменити
238
једним јединим стањем. Ако се тако поступи са сваком класом, чланом скупа E, добија се еквивалентни аутомат са минималним бројем стања или минимални аутомат. Проблем минимизације потпуних аутомата решив је једнозначно, док код непотпуно дефинисаних аутомата то није случај. Налажење класа еквивалентих стања врши се посебним методама за формирање E-расподеле стања аутомата испитивањем одговора аутомата на речи коначне дужине. У том циљу уводи се мање строга релација еквиваленције стања аутомата, тзв. релација n-еквиваленције на следећи начин: стања q1 и q2 су n-еквивалентна n
( q1 = q 2 ) ако су одговори у оба стања исти за све речи улазне азбуке које
имају дужину једнаку n. Према релацији n-еквиваленције у скупу стања аутомата налази се тзв. Е(n) расподела, тј. разбијање скупа стања на класе nеквивалентних стања. При томе се на основу Е(n) расподеле може одредити E расподела на основу следеђе теореме коју наводимо без доказа: Теорема. За аутомат са k стања постоји n тако да важи: Е(n) = Е , n ∈ { 1,2,...,k-1 } . Једна од метода за одређивање Е расподеле, која се заснива на коришћењу ове теореме, јесте коришћење тзв. Е(n) таблица, које су уствари преуређене таблице прелаза аутомата.
10.5 Структурна синтеза коначних аутомата У фази структурне синтезе аутомати се посматрају на структурном нивоу или, другим речима, проучава се функционисање аутомата на нивоу конструисања сложених шема од простијих. Задатак структурне синтезе аутомата састоји се у следећем: на основу таблице прелаза/излаза или графа задатог сложеног аутомата конструисати структурну (функционалну) шему аутомата од простијих - елементaрних аутомата, тј. наћи начин њиховог међусобног повезивања (композиције) тако да добијени аутомат буде еквивалентан полазном аутомату а да при том композиција задовољава одређене услове (нпр. минималан број елементaрних аутоматa).
239
Структурна синтеза аутомата се своди на избор типова елементaрних аутомата, одређивање и реализацију функција побуде сваког елементaрног аутомата и функција кодираних излаза задатог аутомата. Поступак структурне синтезе садржи следеће кораке: 1) Одређивање броја и типова елементaрних аутомата, 2) Кодирање улазне и излазне азбуке помоћу изабраних бинaрних кодова. 3) Избор бинaрног кода и кодирање сваког стања аутомата скупом стања елементaрних аутомата. 4) Представљање таблица прелаза и излаза помоћу кодираних таблица прелаза и излаза. 5) Одређивање на основу кодиране таблице прелаза и кодиране таблице излаза функција побуде елементaрних аутомата и функција кодираних излаза аутомата и формирање таблице функција побуде и функција излаза. 6) Синтеза помоћу усвојених логичких елемената комбинационе мреже која реализује функције побуде и функције излаза. 7) Минимизација функција побуде и функција излаза и њихово представљање у облику који одговара изабраном начину реализације (стандардни логички елементи, мултиплексери и др.). 8) Реализација структурне шеме аутомата.
Структурно потпуни системи елемената
Систем елементaрних аутомата назива се структурно потпун ако се помоћу њега може извршити каноничка синтеза било ког аутомата. Постоје две класе елементaрних аутомата: 1. елементaрни аутомати са меморијом - меморијски елементи, 2. елементaрни аутомати без меморије - логички елементи. Обично се као меморијски елементи узимају Мурови аутомати који задовољавају захтеве потпуности система прелаза и потпуности система излаза. Потпуност система прелаза подразумева да за свако стање елементaрног аутомата постоји улазни сигнал који га преводи у друго стање. Потпуност система излаза означава да за свако стање елементaрног аутомата постоји од-
240
говарајући излазни сигнал који је различит од излазних сигнала за друга стања елементaрног аутомата. Ако овај захтев не би био испуњен не би се могла разликоовати два стања елементaрног аутомата. Логички елементи треба да образују функционално потпуни скуп да би се помоћу њих могла реализовати било која прекидачка мрежа. Из претходног излагања се лако може утврдити да ће сваки систем елементaрних аутомата који садржи Мурове ааутомате са потпуним системом прелаза и излаза и неки функционално потпуни скуп логичких елемената бити структурно потпун систем.
Канонички метод структурне синтезе
Канонички метод структурне синтезе представља општи конструктивни поступак који омогућава да се задатак структурне синтезе коначних аутомата сведе на задатак структурне синтезе комбинационих мрежа. Заснива се на тзв. каноничком моделу (Хафмен-Муровом моделу, Huffmen-Moore) коначних аутомата који је приказан на слици 10.3 за случај када се као елементaрни аутомати користе RS бистабилна кола, али то могу бити и други елементaрни аутомати који припадају структурно потпуном систему елемената, нпр. D, T, JK и др. Избор типа елементaрног аутомата врши се на почетку фазе структурне синтезе. При том се може разматрати и проблем рационалног избора елементaрног аутомата сагласно са неким задатим критеријумом оптималне реализације. На слици је са KM означена комбинациона мрежа која реализује систем од v функција излаза (видети и одељак 9.3) које одрећују вредност сигнала на i-том бинaрном излазу аутомата у зависности од стања елементaрних аутомата и од вредности улазних сигнала: yi = fzi(x1,...,xu ,U1,...,Uw ), i = 1,2,...,v , и систем од 2w прекидачких функција које се називају функције побуде елементaрних аутомата, дефинисаних на следећи начин: ујS = fujS ( x1,...,xu ,U1,...,Uw) , ујR = fujR( x1,...,xu ,U1,...,Uw), j = 1,2,...,w. Функције побуде одређују вредности улазних сигнала који се доводе на сваки елементaрни аутомат да би се обезбедило превођење аутомата из једног у друго стање сагласно са функцијом прелаза задатог аутомата. Функција 241
побуде представља зависност улазног сигнала uij(t) на j-том улазу елементaрног аутомата Ui од унутрашњих стања свих елементaрних аутомата у моменту t и од улазних сигнала задатог аутомата x1(t),....,xn(t) у том истом тренутку. Напоменимо да се сменом функција побуде у функције прелаза елементaрних аутомата дате у таблици 9.5 у одељку 9.6 добијају функције прелаза посматраног аутомата дате на красју одељка 9.3.
Таблице побуде елементaрних аутомата
Осим помоћу таблица прелаза (видети таблицу 9.5 на страни 169) функционисање елементaрних аутомата се може задавати и помоћу таблица побуде, за које се још користе и термини таблице улаза и матрице побуде, које су потребне за структурну синтезу. Претходно треба напоменути да су у елементaрним аутоматима са два стабилна стања могуће само четири врсте прелаза: 0 → 0, 0 → 1, 1 → 0 и 1 → 1. За сваки од ових прелаза постоје улазни сигнали елементaрних аутомата који изазивају те прелазе. За неке прелазе вредности улазних сигнала на неким улазима могу да не утичу на прелаз. Такви сигнали се означавају вредношћу b. x1 x2 xu
y1 y2
Y = Fz (X,U) u1S KM
u1R
u = Fu (X,U) u wS uwR
S R
S R
U1
yv
U1
Uw Uw
Слика 10.3 Канонички модел коначног аутомата
Таблица побуде елементaрног аутомата има следећи општи облик:
242
u1 u2 … ud 0 → 0 ⎡c11 c12 ... c1d ⎤ ⎢ ⎥ 0 → 1 ⎢c 21 c 22 ... c 2d ⎥ , 1 → 0 ⎢c31 c32 ... c3d ⎥ 1 →1
⎢ ⎥ ⎣⎢c 41 c 42 ... c 4 d ⎦⎥
где су врсте матрице означене свим могућим прелазима елементaрних аутомата U(t) → U(t+1), док су колоне означене улазима елементaрних аутомата. Елемент матрице cij означава улазни сигнал на ј-том улазу елементaрног аутомата под чијим деловањем се врши прелаз елементaрног аутомата који одговара i-тој врсти матрице. Елементи cij могу узимати вредности 0, 1 и b. Таблице побуде за бистабилна кола типа D,T, RS и JK чије су таблице прелаза дате у таблици 9.5 (одељак 9.6) имају облик дат у таблици 10.2.
Таблица 10.2 − Таблице побуде бистабилних кола Прелаз
D
Прелаз
T
Прелаз
R
S
Прелаз
J
K
0→0
0
0→0
0
0→0
b
0
0→0
0
b
0→1
1
0→1
1
0→1
0
1
0→1
1
b
1→0
0
1→0
1
1→0
1
0
1→0
b
1
1→1
1
1→1
0
1→1
0
b
1→1
b
0
Таблице функција побуде и функција излаза
Један од проблема структурне синтезе састоји се у дефинисању кодиране таблице прелаза/излаза полазног аутомата, јер у зависности од тога како је извршено кодирање стања, улазних и излазних симбола могу се добити структурне шеме истог аутомата различите сложености. Зато се посебно решава и тзв. проблем кодирања, нарочито кодирања стања, који се састоји у избору варијанте којој одговара минимална по сложености структурна шема аутомата. Нека је задат аутомат M = (A,Z,Q,fq,fz) и скуп меморијских елемената U1, U2,...,Uv који поседују потпуни систем прелаза и излаза. Нека је такође и производ броја стања свих елементaрних аутомата већи од укупног броја стања
243
задатог аутомата M. Сваком стању аутомата M ставимо у кореспонденцију уређени вектор стања елементраних аутомата (U1, U2,...,Uv) тако да различитим стањима аутомата M одговарају различити вектори стања елементaрних аутомата. Како се у пракси при синтези користе најчешће елементaрни аутомати са два стања означена са "0" и "1" имамо бинaрно кодирање стања аутомата M. На исти начин врши се бинaрно кодирање улазних и излазних симбола. На основу таблице прелаза и таблице излаза или графа аутомата после извршеног кодирања формира се посебна таблица која се назива кодирана таблица прелаза која има облик приказан у таблици 10.3а за аутомат дат на слици 10.1б. Улазни симболи a1 и a2 кодирани су једном прекидачком променљивом x, стања су кодирана двема променљивим U1 и U2 а излазни симболи 0 и 1 кодирани су једном променљивом y. На основу кодиране таблице прелаза/излаза, узимајући у обзир таблице побуде претходно изабраних елементaрних аутомата, формира се кодирана таблица функција побуде елементaрних аутомата и функција излаза полазног аутомата, дата у таблици 10.3а,б.
Таблица 10.3 Таблица функција побуде и функција излаза x
U1
U2
U1(t+1) U2(t+1)
u1R
u1S
u2R
u2S
y
0
0
1
1
0
0
1
0
b
0
0
1
0
1
0
0
b
b
0
0
0
1
1
1
0
0
b
0
1
1
1
0
1
1
1
0
1
0
b
0
1
1
0
1
1
0
b
0
1
0
1
1
1
1
1
0
b
0
b
1
a) Кодирана таблица прелаза
b)Функције побуде и функције излаза
Функције побуде одређују се на следећи начин. Уочи се један улазни вектор и један вектор текућег стања, тј. пар (X,U). За сваки пар координата вектора текућег стања Uj и вектора следећег стања Uj(t+1) налази се помоћу таблице побуде одговарајућег елементaрног аутомата вредност улазног сигнала који даје прелаз Uj → Uj(t+1). Ако за кординату Uj(t+1) није дефинисана вредност, тј. једнака је b, може се оставити недефинисаном и вредност улазног сигнала. Ова се процедура понавља за све парове (X,U). Вредности ула-
244
зних сигнала i-тог елементaрног аутомата на свим паровима (X,U) дефинишу прекидачке функције побуде i-тог елементaрног аутомата. У описаној процедури погодно је одмах формирати таблицу функција побуде, таблица 10.3а,б, која се добија проширењем кодиране таблице прелаза колонама за вектор побуде у које се уписују вредности побудних сигнала одговарајућих елементaрних аутомата на свим паровима (X,U). Ова таблица је иста за Мурове и за Милијеве аутомате. Функције кодираних излаза могу се формирати у истој таблици ако јој се дода потребан број колона за променљиве ui , i = 1,2,...,v. За одређивање функција излаза користи се кодирана таблица излаза за Милијеве аутомате, док се код Мурових аутомата функција излаза добија непосредно на основу таблице кодираања излаза. Структурна шема којом се реализују функције побуде елементaрних аутомата и функције излаза аутомата синтетизује се према поступцима обрађеним детаљно раније. Пример. За аутомат дат на слици 10.1б таблица функција побуде и функција излаза дата је у таблици 10.3а,б. Напоменимо да постоји и други метод структурне синтезе када се функције побуде и функције излаза одређују на основу графа аутомата или матрице прелаза/излаза прве врсте. Осим тога могуће је за структурну синтезу користити резултате декомпозиције апстрактних аутомата на усвојене стандардне просте аутомате (модуле), за које се могу користити и елементaрни аутомати. Декомпозицијом се добијају таблице прелаза/излаза на основу којих се формира таблица функција побуде и функција излаза сваког модула.
Кодирање стања аутомата
Поступак придруживања бинaрних вектора стањима аутомата назива се кодирање стања. Кодирање стања мора бити једнозначно, при чему код стања дефинише минималан број елементaрних аутомата са два стања. Из тог разлога погодно је користити минимално бинaрно кодирање. Избор начина кодирања не мења закон функционисања аутомата али изабрани код стања може битно утицати на сложеност комбинационе мреже која реализује функције побуде елементраних аутомата и функције излаза аутомата. Због тога настаје проблем оптималног кодирања, тј. избора такве
245
варијанте кодирања за коју ће функције побуде и функције излаза бити најпростије. Решење проблема оптималног кодирања стања је доста сложено и има више теоријски значај. Како у највећем броју практичних случајева сложеност комбинационе мреже која реализује функције побуде и функције излаза није критично, нарочито ако се користе декодери, мултиплексери и програмабилне компоненте, то се код стања може и произвољно изабрати. За практичне примене обично се дефинишу нека једноставна правила којима се долази до кода стања који представља повољније, али не најбоље решење од многих могућих кодова. Једно од правила је правило најмањих промена при прелазима, које гласи: ако аутомат прелази из стања qi у стање qj онда тим стањима треба придружити бинaрне векторе са што је могуће мањим кодним растојањем. Предност при том имају парови стања за која постоји највећи број улазних вектора који преводе аутомат из стања љи у стање љј и из стања љј у стање љи. Ово правило је дефинисано на основу претпоставке да промена мањег броја координата вектора стања при прелазима у аутомату значи и једноставнију комбинациону мрежу која реализује функције побуде и функције излаза. Утврђено је да је у великом броју случајева то тачно али има и контрапримера.
10.6 Синтеза аутомата у хомогеним структурама Развој и унапређење полупроводничких технологија постављају проблем развоја метода синтезе аутомата у хомогеним структурама (хомогеним рачунским мрежамa), где се под хомогеном структуром подразумева линеaрни низ истих стандардизованих функционалних елемената (модулa), матрица тих елемената или друга регулaрна структура. Пример је представљање полазног аутомата његовом декомпозицијом на задате стандардне аутомате реализоване у интегрисаном колу. Задатак синтезе у хомогеној структури има два подзадатка: а) општи задатак синтезе аутомата у хомогеној структури, б) реализација логичких мрежа аутомата у хомогеној структури. Један од начина синтезе аутомата у хомогеној структури састоји се у томе да се функционални елементи (модули) структуре могу подешавати (програмирати, прилагођавати) тако да реализују: а) универзални логички елемент (нпр. НИ елемент) за реализацију комбинационих мрежа, 246
б) елементaрни коначни аутомат за реализацију меморијских елеманата и в) тзв. везне елементе за успостављање веза између модула. Као везни елемент хомогене структуре модул треба да омогући везе према слици 10.4а, а те везе се одређују матрицама 0, D и P, где је 0 нулта матрица истог реда као и матрице D и P (слика 10.4б). Задатак синтезе састоји се у припреми (изради) програма подешавања функционалних елемената хомогене структуре на један од следећа два начина: a) на основу апстрактног аутомата задатог графом или таблицама прелаза/излаза, б) на основу структурне шеме аутомата. Оптимизација при синтези састоји се у минимизацији броја функционалних елемената хомогене структуре. Она има два дела: оптимизација структурне шеме (тј. броја функционалних елеменатa) и оптимизација размештаја функционалних елемената у хомогеној структури (минимизација броја веза и дужина веза измећу функционалних елеменатa). Задатак минимизације броја функционалних елемената решава се оптималном декомпозицијом аутомата. O c a
D c b a
P c b
d
d
a
b d
a b D= c d
a)
abc 010 100 000 001
d 0 0 1 0
a b R= c d
a 0 1 1 1
b 1 0 1 1
cd 11 11 01 10
b)
Слика 10.4 Везни елементи и матрице D и P
10.7 Стандардни секвенцијални модули За реализацију појединих јединица рачунара користи се више различитих стандардних функционалних модула који представљају секвенцијалне мреже и могу се анализирати или пројектовати методама теорије аутомата које су обрађене у претходним излагањима. Описаћемо неке од ових модула.
247
Регистри
Регистар је секвенцијална мрежа која у дигиталним системима служи за памћење бинaрних низова (бинaрних бројева или бинaрних речи). Регистар се такође може дефинисати као уређени низ бистабилних кола третираних као једна функционална целина. Регистри се могу користити у различите сврхе а пре свега за: – привремено памћење (меморисање) резулатата извршења операција, привремени прихват података од других јединица или модула или чување података за слање другим јединицама, – конверзију података од паралелног начина представљања у серијски или обратно померањем бинaрног низа за одређени број бинaрних позиција лево или десно, – бројање различитих догађаја или мерење временских интервала бројањем неког сигнала који се појављује у фиксним временским интервалима, – серијско бинaрно сабирање, итд. За означавање регистара користе се симболичка имена. Ако је ознака (име) регистра R тада се његово стање (садржај) означава са (R). Постоји више врста регистара. Паралелни регистар или регистар са паралелним уписом и читањем омогућава да се у једном временскм интервалу паралелно (истовремено) упишу или прочитају сви битови. Код серијског регистра у једном временском интервалу може се уписати или прочитати само један, крајњи леви или крајњи десни бит регистра. Бројач или бројачки регистар служи за бројање различитих догађаја или за мерење временских интервала. Ове се функције реализују тако што се броје промене неког сигнала који се доводи на улаз бројача. Бројање може бити у бинaрном бројном (бинaрни бројачи) или бинaрно кодираном декадном систему (BCD бројачи). По довођењу улазног сигнала бројач мења своје стање тако што се добија бинaрни низ који представља бинaрни или бинaрно кодирани број за 1 већи (бројање напред) или за 1 мањи (бројање назад). Ново стање се задржава све до доласка следећег сигнала за бројање.
248
На слици 10.5 дати су графички симболи за представљање различитих врста регистара.
...
... ...
+1
а) Паралелни регистар
б) Серијски регистар
в) Бројачки регистар
Слика 10.5 Графички симболи за регистре
249
11. РАЧУНАРИ
11.1. Структурна шема рачунара Савремени рачунар представља комплекс уређаја који може решавати врло компликоване задатке због чега се користи тачнији термин рачунарски систем или систем за обраду података. Рачунар је уређај чија је намена обрада података. Податке за обраду рачунар добија од разних улазних уређаја као што су: тастатура, миш, јединице магнетне траке, јединице магнетних дискова, разни сензори (претварачи), телефонске линије итд. После обраде рачунар прослеђује резултате обраде на један или више излазних уређаја, који су такође врло разноврсни. То могу бити: екрани терминала, јединице магнетне траке, јединице магнетних дискова, разне врсте штампача, телефонске линије, разни актуатори, сигнална светла итд. Сваки рачунар се састоји од пет основних функционалних целина које се називају јединице рачунара. То су: улазна јединица, излазна јединица, меморија (оперативна и спољна меморија), управљачка (командна) јединица и аритметичко-логичка јединица. Аритметичко-логичка и управљачка јединица често се разматрају као једна целина која се назива централна јединица или централни процесор. На слици 11.1 приказана је структурна шема рачунара и ток информација између појединих функционалних јединица.
Улазна јединица
Преко улазне јединице врши се уношење и памћење у меморији две основне врсте података за рачунар: а) улазних података за обраду, б) података који представљају упутства рачунару какву врсту обраде и над којим подацима треба извршити (програм).
249
Улазни подаци за рачунар припремају се и уносе се преко различитих уређаја. То су најчешће: тастатура, миш, дискета, магнетна трака и магнетни диск.
М а со вн а м е м о р и ја
Подаци и програми
Ул азн а јед и н и ц а
О пе р ати вн а м е м о р и ја
И зл азн а јед и н и ц а
Резултати
А р и тм ети ч ко -л о ги чка јед и н и ц а Централни процесор Упр а вљ ачка јед и н и ц а
Слика 11.1 Структурна шема рачунара
Меморија
Меморија представља јединицу која служи за памћење података и програма. Састоји се од оперативне или главне меморије и масовне или спољне меморије. Оперативна меморија реализована је од бистабилних меморијских елемената а намењена је за привремено памћење података и програма. Структура оперативне меморије размотрена је у четвртом поглављу. Поред података за обраду (улазни подаци) и података који дефинишу поступак обраде (програм), у оперативној меморији се такође памте међурезултати и коначни резултати обраде. Подаци и програми које треба памтити за дужи период памте се (складиште се) на масовној меморији. Масовна (спољна) меморија служи за памћење података великог обима и њихово архивирање, а знатно је спорија од оперативне меморије. Медијуме за ове меморије представљају магнетне траке, магнетни дискови и оптички ди-
250
скови. Масовне меморије могу бити фиксне, нпр. дискови, и изменљиве, нпр. дискови, магнетне траке. За податке мањег обима користе се дискете (еластични дискови).
Аритметичко-логичка јединица
Аритметичко-логичка јединица је део рачунара где се извршавају разне операције над подацима. То су пре свега основне аритметичке операције: сабирање, одузимање, множење и дељење, затим логичке операције, али и операције као што је померање бинарног садржаја лево или десно, и друге. О томе која операција и над којим подацима треба да се изврши аритметичкологичкој јединици саопштава управљачка јединица.
Управљачка јединица
Управљачка јединица управља током извршења операција у рачунару тако што на основу упутства о потребној обради одређује (налаже) активности свих осталих јединица рачунара и прати њихово обављање. Примери тих активности су: улаз података, приступ подацима ради памћења или читања, редослед извршења операција и излаз резултата.
Излазна јединица
Излазна јединица служи да се запишу или запамте у погодном облику резултати добијени после обраде или друге потребне информације, и да се они саопште "спољњем свету". Као излазне јединице најчешће се користе разни типови штампача, али то могу бити и јединице магнетне картице, јединице магнетне траке и јединице магнетних дискова. Такође се као излази врло често користе видео екрани терминала, уређаји за цртање (цртачи) и микрофилм. Као излаз се користе и многи уређаји које рачунар директно активира или укључује као што су: сигнална светла, вентили, актуатори, звучни сигнали и сл. Магнетни диск и магнетна трака су два медијума на којима се могу запамтити подаци знатно већег обима него што је капацитет оперативне мемо-
251
рије. Због тога се ови медијуми користе у излазним јединицама као спољне меморије великог капацитета.
11.2. Машинске операције и машинске наредбе Рачунар је конструисан тако да може директно извршавати одређени број простих операција које се називају машинске операције. Поред аритметичких и логичких операција типичне операције које рачунар извршава су пренос података из једног дела рачунара у други (нпр. пренос из централног процесора у меморију или обратно), учитавање података са улаза или слање података на излаз и др. Обично се извршење машинске операције одвија на следећи начин: 1) подаци над којима се извршава операција налазе се у регистрима процесора или се позивају из оперативне меморије у аритметичко-логичку јединицу, 2) извршава се задата операција, 3) добијени резултат памти се у неком регистру процесора или оперативној меморији. У општем случају под термином наредба (инструкција) подразумева се израз који специфицира операцију и вредности или места операнада над којима се та операција треба да обави. Када се ради о машинским операцијама користи се термин машинска наредба или машинска инструкција. У једном временском интервалу који се назива циклус наредбе процесор може извршити само једну операцију одређену одговарајућом наредбом. Под појмом извршење наредбе подразумева се процес извршења операције задате том наредбом. Код тзв. паралелних процесора постоји велики број процесних елемената који независно извршавају наредбе.
Структура машинске наредбе
Наредба рачунара (инструкција) представља код који садржи информације неопходне за управљање извршењем једне машинске операције. Она треба да садржи следеће информације: 252
1) ознаку (код) операције која треба да се изврши, 2) информацију о операндима над којима се извршава операција, 3) адресу где треба сместити резултат примене операције, 4) информацију о следећој наредби на коју треба прећи после завршетка текуће наредбе. Машинска наредба састоји се из више делова и њену ћемо структуру детаљније обрадити касније, али се обично разликују два дела: 1) код операције - део којим се означава операција коју треба извршити, 2) адресни део - део у коме се специфицира начин како и одакле треба узети операнде и где сместити резултат. Адресни део садржи информацију о адресама операнада и адреси где се смешта резултат. Треба посебно нагласити да се операнди задају тако што се специфицирају њихове адресе. Пример. Ако SAB означава операцију сабирања тада наредба SAB A1
A2
A3 ,
има следеће значење: вредност специфицирану операндом A1 сабрати са вредношћу специфицираном операндом A2 и резултат сместити на место специфицирано операндом A3.
Кодирање наредбе
Најпростији начин кодирања n различитих операција у делу за код операције је одвајање поља од k = ⎡log2 n⎤ бинарних позиција и кодирање сваке операције са k бинарних позиција. Међутим, често је дужина поља кода операције недовољна за овакав начин кодирања, нарочито код мини и микро рачунара. Осим тога, адресни део наредбе за неке операције није потребан или може бити краћи. Због тога се користи тзв. кодирање са проширењем које се састоји у следећем: ако поље кода операције има дужину k онда се 2к-1 кодних низова користи за кодирање операције, а један кодни низ, нпр. низ 11...1 служи за проширење кода. Нека се нпр. операције кодирају са 4 бита: 0000XXXXXXXXXXXX 0001XXXXXXXXXXXX
253
.................... 1110XXXXXXXXXXXX Овде је са 4 бита кодирано петнаест операција док је код 1111 остављен за проширење које има следећи облик: 11110000XXXXXXXX 11110001XXXXXXXX ................... 11111101XXXXXXXX Овде је додатних четрнаест операција кодирано са 8 битова док су кодови 11111110 и 11111111 остављени за евентуално даље проширење. Адресни део наредбе обично садржи једну, две или три адресе операнада. Ако је дужина машинске речи мала, често је адресни део наредбе недовољан да се у њему представе све адресе. Могућност скраћења адресног дела наредбе добија се увођењем различитих начина адресирања који се разматрају касније. Још један начин којим се решава проблем дужине кода наредбе је реализација наредби са променљивом дужином.
11.3. Програмирање рачунара План којим се задају дејства која треба извршити назива се општим именом програм. Програм за рачунар или рачунарски програм представља програм изражен у облику погодном за извршење на рачунару. Програм за рачунар, који ћемо даље називати кратко програм, представља низ (секвенцу) наредби који саопштава рачунару како да реши неки проблем, тј. саопштава рачунару корак по корак шта да ради, укључујући и доношење одлука о току извршења самог програма. Да би неки задатак могао да буде решен на рачунару потребно је да за њега постоји програм. Процес припреме програма, који се састоји од пројектовања (састављања) алгоритма, писања и тестирања програма, назива се програмирање. Људи који се баве програмирањем зову се програмери.
254
Процес програмирања састоји се од више фаза међу којима су основне следеће две : 1) пројектовање алгоритма - одређивање секвенце операција неопходних за решење проблема, 2) писање и тестирање програма - представљање алгоритма на начин којим се детаљно задају операције које рачунар треба да изврши и провера правилности рада програма.
Рачунари са упамћеним програмом
Сви савремени рачунари реализовани су тако да се програм за решавање неког проблема и полазни подаци над којима ће се обављати операције налазе истовремено у оперативној меморији рачунара. Рачунару сe пре почетка извршења програма даје потребна информација, и он увек једнозначно одређује где се у меморији налази програм а где подаци. Овакав принцип реализације рачунара зове се принцип програмског управљања рачунаром, а за рачунаре кажемо да су то рачунари са упамћеним програмом.
11.4. Процедура и алгоритам Решавање неког сложеног проблема постиже се тако што се поступак решавања разлаже на низ посебних простих или елементарних корака. Сваки такав корак представља недвосмислено правило које дефинише како и којим редоследом треба извршавати добро познате операције у циљу добијања резултата. Процес решавања састоји се у извршавању низа активносати специфицираних у појединим корацима. У сваком кораку врши се замена једног стања процеса рачунања другим, при чему се нека стања распознају као завршна или крајња стања из којих се добијају резулатати. Опис тока одвијања активности предузетих у циљу решавања неког проблема назива се општим именом процедура. Процедура се састоји од коначног броја корака који обично садрже елементарна правила за извршење операција, при чему се сваки корак може механички извршавати за фиксно време са фиксним бројем покушаја примене.
255
При примени процедуре могу настати следећи случајеви: 1) свако стање процеса смењује се наредним стањем и процес се никада не зауставља (проблем се не може решити са коначним бројем корака јер се процедура никада не зауставља), 2) на неком кораку јавља се стање на које се не могу применити ни правила непосредне обраде нити правила за завршетак рада алгоритма и настаје заустављање без резултата (решавање проблема се не може наставити), 3) на неком кораку настаје стање које се распознаје као завршно и врши се заустављање са добијањем резултата (решавање проблема се постиже извршењем коначног броја корака). Каже се да само у трећем случају процедура представља алгоритам који се може применити за решавање задатог проблема. Може се рећи и да је алгоритам процедура која се зауставља за све улазе и даје резултат.
Алгоритми
Из претходног излагања следи да се решавање неког проблема може добити само ако за њега постоји алгоритам. При томе се појам алгоритма може интуитивно дефинисати на следећи начин: Алгоритам представља коначан скуп тачно дефинисаних (недвосмислених) правила за решавање неке класе проблема за коначан број корака. Алгоритам представља уствари упутство о извршењу у одређеном редоследу неког скупа елементарних правила којима се омогућава решавање скупа задатака одређене класе за коначан број корака. Правила алгоритма морају бити елементарна и тачно дефинисана, што значи да се свако правило може механички извршавати и да је резултат извршења увек исти, без обзира да ли то правило извршавају разни људи или разне машине. Другим речима, извршење сваког правила је недвосмислено, оно се подразумева и извршава се увек на исти начин. Захтеви за коначно време за сваки корак алгоритма и за коначно понављање корака алгоритма последица су неопходности да се рад (извршење) алгоритма треба увек да заустави, и да се при томе добије резултат.
256
За сваки алгоритам постоји неки скуп могућих полазних података за које се он може применити. На тај начин се у скупу свих могућих полазних података издваја област применљивости алгоритма. Сваки алгоритам задаје функцију која сваком елементу из области применљивости алгоритма ставља у кореспонденцију резултатат примене алгоритма. Алгоритми се користе да се нове или сложене операције изразе помоћу већ познатих операција, тј. решење проблема се изражава кроз низ елементарних корака обраде помоћу правила која ми већ знамо и можемо их механички ("аутоматски") извршавати.
Особине алгоритама
Да би скуп правила којима се задаје извршење операција образовао алгоритам треба да поседује следеће особине: 1. Дискретност. Процес решавања задатка или алгоритамски поступак састављен је од коначног броја посебних корака (алгоритамских дејстава). Расчлањен је на низ елементарних активности (радњи) описаних правилима чије извршење не доводи до двосмислености. Скуп правила треба да је такав да се операције које дефинишу та правила могу извршавати сукцесивно једна за другом. Сагласно са овим захтевом скуп правила треба, поред осталог, да укаже да ли је неопходно, и ако да на који начин, прећи од једног корака на други. 2. Ефективност (коначност). Све операције које је потребно извршавати у сваком кораку алгоритма треба да се извршавају тачно и за коначан интервал времена. Алгоритам треба да се завршава за коначан број корака. При томе број корака може бити произвољно велики. Због ове особине понекад се каже да алгоритам представља ефективну процедуру за решење неког проблема. Треба напоменути да за практичне примене ограничење коначности није довољно јако: алгоритам који се користи треба да има не потенцијално коначан већ ограничено коначан број корака да би се могао кориситити. Има примера да је алгоритам коначан али да за његово извршење треба врло много времена чак и уз примену најбржих савремених рачунара. Пројектовањем све бржих рачунара појам времена трајања алгоритма постаје све мање ограничавајући фактор за извршење алгоритма.
257
3. Резултативност (усмереност). Ова особина захтева да у случајевима када се алгоритам може применити, тј. у случајевима за које је алгоритам пројектован, извршење алгоритма за било који задатак зауставља се после одређеног броја корака, и доводи до добијања одговарајућег резултата. Због тога сваки алгоритам поседује: а) Улаз. Алгоритам поседује неки број (можда и једнак нули) улазних података, тј. величина које су задате пре почетка извршења алгоритма. Ови се подаци узимају из неког конкретног скупа објеката. б) Излаз. Алгоритам има једну или више излазних величина, тј. величина које имају потпуно одређени однос са улазним подацима а резултат су обраде на основу примене алгоритма. 4. Детерминисаност (одређеност). Сваки корак алгоритма треба да је тачно и јасно дефинисан тако да се његово извршење може да оствари једнозначно за задате полазне податке. Дејства која треба да се изврше треба да буду строго и недвосмислено одређена у свим случајевима и да не остављају места произвољности или слободном доношењу одлуке. После извршења текућег корака треба да буде једнозначно одређено шта треба радити даље (како наставити поступак даље). Тумачење и извршавање правила алгоритма не сме зависити од воље људи или машине, већ треба да представља детерминистички процес који је јасан за све могуће извршиоце, и сваки од њих га може поновити или извршити са истим успехом. Због тога се каже да процес извршења алгоритма има механички карактер, односно да се алгоритам може аутоматски извршавати. Примена алгоритма на исте полазне податке увек доводи до реализације скупа правила са истим редоследом корака и са истим резултатом. 5. Масовност. Алгоритам представља опште упутство којим се дефинише поступак који може почињати од различитих полазних података и довести у свим случајевима до одговарајућег резултата. То значи да алгоритам треба да служи не за решавање једног јединог случаја, већ се полазни подаци могу узимати из неког скупа података (потенцијално бесконачног). На тај начин сваки алгоритам обезбеђује решење било ког проблема из класе проблема истог типа, и каже се да је алгоритам примељив за ту класу проблема.
Запис алгоритама
258
Алгоритам решења сваког комплексног проблема мора се редуковати на низ сукцесивних корака који, када се следе, доводе до резултата (решења). У том циљу развијени су системи записивања (представљања, задавања) алгоритама који су врло корисни у опису тока операција које треба извршити. Овакви записи алгоритама користе се за опис метода на основу којих се пишу програми за рачунаре. Они не служе за опис детаљног решења на рачунару, већ за опис решења за друге људе или за преношење на рачунар. Операције у овим записима рачунар не може прихватити али се оне увек могу разложити на просте операције које он може директно извршити. Опис алгоритма има два циља: 1) алгоритам је разумљив разним људима, тако да се на тај начин могу користити или преносити алгоритми који већ постоје; 2) на основу ових описа могуће је писати програме за рачунар, тј. може се вршити пренос алгоритма на рачунар у циљу његовог извршења. Због тога кажемо да овакви описи алгоритама представљају "универзалне" језике који нису прилагођени ниједном конкретном рачунару а људи их могу лако пратити и преносити. За тачан опис алгоритама које може прихватити директно и рачунар, користе се програмски језици, посебно виши програмски језици. Програмски језици садрже једнозначан и тачно дефинисан скуп операција и правилних конструкција за запис алгоритама. Програм на неком програмском језику представља запис алгоритма помоћу наредби (исказа) тог програмског језика.
Запис алгоритама скупом правила
Писање алгоритама у облику скупа правила има задатак да прегледно помоћу речи и симбола природног језика опише његово деловање тако да се оно може лако да разуме. Облик правила која се користе није строго одређен већ је само потребно да су она јасна и да свако ко треба да извршава алгоритам разуме та правила. Алгоритми се понекад у циљу идентификације означавају симболичким именима. При томе се кораци алгоритма означавају редним бројевима 1, 2, 3,... испред којих стоји ознака (име) алгоритма. Извршење алгоритма почиње од корака са најмањим редним бројем, тј. од корака 1, а затим се кораци извршавају један за другим природним редосле-
259
дом све док се не сретне посебно правило за прекид тог редоследа. То су правила за гранање или прелаз на неко друго правило алгоритма. Навешћемо само нека често употребљавана правила за запис алгоритама. При томе напомињемо да термин радња (дејство) означава нешто што има коначно трајање и доводи до жељеног и тачно одређеног резултата. Свака радња претпоставља постојање неког објекта над којим се она обавља и према чијем се промењеном стању може закључити о резултатима примене те радње. Опис неке радње назива се инструкција или наредба. 1. Правило додељивања: <променљива> := <израз> Извршење ове радње одвија се на следећи начин: израчунава се вредност израза за текуће вредности променљивих у њему и добијена вредност се додељује променљивој са леве стране. Знак := означава операцију додељивања а чита се "узима вредност" или "постаје једнако". Претходна вредност променљиве се при том уништава. Редослед примене више операција додељивања не може се мењати јер додељивање није комутативна операција. 2. Правило безусловног гранања: ПРЕЋИ НА КОРАК <ознака корака> Ова радња саопштава да треба прекинути природни редослед извршења правила алгоритма и прећи на правило означено са <ознака корака>. 3. Правило условног гранања (ако-тада): АКО <услов> ТАДА <радња>. Ако је услов дат изразом <услов> задовољен, тј. истинит, тада се извршава <радња>, у супротном се прелази на следећи по реду корак. 4. Правило ако-тада-иначе: АКО <услов> ТАДА <радња1> ИНАЧЕ <радња2>. Ако је <услов> задовољен извршава се <радња1>, ако није задовољен извршава се <радња2>. 5. Заустављање. После ове радње друга правила алгоритма се више не извршавају, без обзира на место овог правила у запису алгоритма.
Запис алгоритама дијаграмима тока
260
Дијаграм тока или блок шема алгоритма представља једну варијанту графичког описа тока решења задатка и служи за графичко приказивање структуре алгоритма. Састоји се од блокова (фигура) повезаних линијама са стрелицама. Помоћу блокова приказују се операције (радње) које треба извршити. Унутар блока описује се у најкраћем облику операција коју тај блок представља. Линије са стрелицама служе да означе редослед извршења операција. На слици 11.2 приказан је скуп графичких симбола за блокове у дијаграмима тока програма према југословенском стандарду JUS A.F0.004. ОБРАДА (ОПЕРАЦИЈА, ПРОЦЕС, РАДЊА) Извршење операције или групе операција
УЛАЗ/ИЗЛАЗ Уношерње података за обраду или издавање резултата обраде
ОДЛУКА (УСЛОВНО ГРАНАЊЕ) Избор правца извршења алгоритма зависно од услова
РУЧНА ОПЕРАЦИЈА Обрада која се извршава ручно или помоћу средстава која нису аутоматска
МОДИФИКАЦИЈА ПРОГРАМА Извршење операција којима се мењају наредбе програма ПОТПРОГРАМ (РАНИЈЕ ОПИСАН ПРОЦЕС) Посебно описан алгоритам или програм
XX...X
ИМЕ (ОЗНАКА) БЛОКА Идентификатор који је додељен блоку у циљу позивања на тај блок XX...X
ОПИС БЛОКА Додатна информација која обезбеђује боље разумевање функција блока
ГРАНИЧНО МЕСТО (ПОЧЕТАК, КРАЈ , ПРЕКИД) Гранична тачка тока извршења операција
КОНЕКТОР (ВЕЗНИК) Улазна или излазна прикључна тачка између прекинутих линија тока
ЛИНИЈА ТОКА (ВЕЗНА ЛИНИЈА) Приказивање редоследа веза између блокова
КОМЕНТАР (НАПОМЕНА) Обкашњење, тј. додатни коментар или кратко тумачење операције
СПАЈАЊЕ Место спајања две линије тока
ГРАНАЊЕ Једна долазна и више одлазних грана
Слика 11.2 Графички симболи за дијаграме тока програма
11.5. Програмски језици и преводиоци
261
Језик представља средство комуницирања између људи. Састоји се од дефинисаног скупа знакова који се користе за формирање речи и правила за њихово комбиновање у саопштења која имају смисла. Језици којима се споразумевају људи (тзв. природни језици) користе азбуку састављену од великих и малих слова, децималних цифара и специјалних знакова (то су знаци интерпункције, знаци аритметичких операција и други специјални знаци). Од слова азбуке граде се речи које образују речник датог језика. Комбиновањем речи према одређеним правилима (граматика или синтакса језика) формирају се саопштења која имају смисла и која служе за преношење порука међу људима. Због флексибилности изражавања и великих могућности које поседују, природни језици нису погодни за преношење тачне структуре алгоритма рачунару. У циљу омогућавања комуницирања људи са рачунарима развијени су посебни вештачки језици који се називају програмски језици. Програмски језик представља нотацију (систем означавања) намењену изражавању алгоритма на начин који може разумети и извршити рачунар. То је скуп симбола (исказа или наредби програмског језика) са задатим правилима формирања од тих симбола правилних конструкција програмског језика. Свака обрада коју треба да обави рачунар треба да буде описана помоћу алгоритма. Сваки корак алгоритма мора бити описан тако да не буде "неспоразума" између тога шта програмер жели да рачунар уради и шта стварно рачунар уради. То се остварује помоћу програмских језика који поседују потребну једнозначност, али су њихове могућности изражавања знатно испод могућности изражавања на природном језику. До сада је развијен велики број програмских језика, а стално се развијају и уводе и нови. Међутим, широку примену у пракси има веома мали број програмских језика међу којима су најпознатији: фортран, кобол, ПЛ/1, бејзик, паскал, С, ада, модула, лисп, пролог и други.
Особине програмских језика
Програмски језици су развијени са циљем да се смањи рад који је потребан програмеру за опис алгоритма и њихово преношење на рачунар. Програмски језик треба да омогући што лакше и простије комуницирање са рачунаром. У том циљу сваки програмски језик треба да поседује следеће основне особине:
262
– преношење алгоритма на рачунар треба да је што ближе начину изражавања људи, – програмски језик треба да буде формалан, да би се њиме могли једнозначно да изражавају алгоритми, – треба да је довољно еластичан да би се омогућио компактан и јасан запис алгоритама, – да буде лак за освајање, – већи број људи треба да буде у стању да лако прати програм (програмирани алгоритам) – да буде погодан за коришћење у публикацијама, и да се може вршити размена алгоритама, – треба да је могуће формално превођење са програмског језика на језик који разуме и прихвата рачунар, – треба да је довољно прост да би се лако могли пројектовати програмски преводиоци.
Генерације програмских језика
Досадашњи развој програмских језика може се описати кроз четири генерације програмских језика: 1. машински језици, 2. симболички машински језици (асемблерски и макроасемблерски језици), 3. процедурални програмски језици (виши програмски језици), 4. непроцедурални програмски језици (декларативни програмски језици, програмски језици врло восоког нивоа). Машински језик представља скуп машинских наредби којима се специфицирају елементарне операције које рачунар може директно распознати и извршити. Свака машинска наредба предствља бинарни код који служи за управљање радом рачунара. Алгоритми се на машинском језику предствљају у облику сукцесивног низа елементарних операција на које је разложен поступак решења проблема. Пи-
263
сање програма на машинском језику врло је сложен и монотон процес, подложан честим грешкама. Симболички машински језик је језик врло близак машинском у коме се за означавање операција и операнада у наредбама користе симболичка имена. Каже се да је то машински оријентисан језик а зове се још и асемблерски језик. Програми написани на асемблерском језику захтевају посебан системски програм асемблер за превођење на машински језик. За компактнији запис алгоритама симболички машински језици користе макронаредбе - симболичка имена за групе наредби које се често срећу у програмима и представљају функционалне целине. Писање програма на симболичком језику је знатно лакше него на машинском, али како је и то машински оријентисан језик потребно је познавање не само алгоритма за решење проблема већ и познавање структуре конкретног процесора и начина његовог програмирања. Процедурални или виши програмски језици представљају језике независне од машине. Начин задавања алгоритма је близак начину изражавања људи. Напор при програмирању знатно је мањи. Задавање алгоритама састоји се у опису корак по корак како процедура треба да се извршава. Процедурални програмски језици понекад се деле у две групе : а) алгоритамски програмски језици намењени су за опис алгоритама широке класе проблема, б) проблемски оријентисани језици или специјални програмски језици располажу средствима која су посебно карактеристична и погодна за одређене области примене. Непроцедурални програмски језици омогућавају писање програма на знатно већем нивоу апстракције, тежећи ка "функционалним" или "описним" формализацијама алгоритама проширењем стандардних оператора комплекснијим операторима. Непроцедурални језици специфицирају шта треба урадити уместо задавања како то треба остварити, због чега се називају и језици врло високог нивоа. У непроцедуралне језике или језике четврте генерације спадају упитни језици за базе података, апликативни језици, програмски генератори и генератори апликација, језици за спецификације и други. Пета генерација програмских језика налази се тек у фази развоја. Основу за ове језике чине функционални језик лисп, логички језик пролог и други језици вештачке интелигенције. То су језици који ће омогућити представљање знања и дедуктивно закључивање базирано на том знању.
264
Прог р а м с к и пре в о ди оц и
Језик који рачунар може прихватити и директно извршити назива се машински језик. Њега чине операције директно реализоване у рачунару које се задају машинским наредбама представљеним у бинарно кодираном облику. Језик на коме се припрема програм за рачунар назива се изворни језик. Програм припремљен на неком изворном програмском језику рачунара не може се директно извршити, већ је потребно да се обави превођење на машински језик. Процес превођења остварује се "аутоматски" помоћу посебних системских програма који се називају програмски преводиоци или транслатори. Разликујемо три врсте програмских преводилаца : 1) асемблери и макроасемблери, 2) компилатори, 3) интерпретатори. Асемблери и макро асемблери служе за превођење програма са машински оријентисаних програмских језика. При томе се симболичка имена замењују њиховим кодираним еквивалентима. Компилатори и интерпретатори служе за превођење програма са виших програмских језика на машински језик. Интерпретатор ради тако што преводи сваку наредбу изворног програма и одмах је извршава. На тај начин превођење и извршавање наредби изворног програма циклички се смењују. За разлику од интерпретатора компилатор само преводи цео изворни програм и не учествује у његовом извршењу.
Извршење програма
Програм преведен помоћу асемблера или компилатора назива се објектни код, и он се памти као посебна програмска јединица (програмски модул) у некој библиотеци на спољној меморији. Програм за решење неког задатка добија се тако што се објектни кодови програмских модула комбинују са модулима из системске библиотеке у једну целину помоћу посебног системског услужног програма који се назива програм за повезивање или повезивач. Резултат рада програма за повезивање је модул пуњења - програм спреман за уно-
265
шење у оперативну меморију и извршење. Уношење модула пуњења у оперативну меморију обавља посебан системски програм пунилац, који претходно резервише простор у оперативној меморији, а после пуњења стартује извршење унетог програма.
11.6. Симболички машински језик Програм се у меморији рачунара смешта у бинарно кодираном облику. Такав облик је једини облик који може прихватити управљачка јединица рачунара и извршавати га. У таблици 11.1а приказан је машински програм у облику у коме се памти у меморији рачунара са дужином меморијске речи од 16 бинарних позиција. Овакав облик програма назива се машински програм или машински код. Да би програм за решење неког проблема могао да буде извршаван у рачунару потребно је да се он припреми у бинарно кодираном облику као у таблици 11.1а. Међутим, писање програма у том облику тежак је и напоран задатак из више разлога: 1) треба знати напамет све кодове операција, 2) треба знати унапред места у меморији где ће програм бити смештен, јер се све адресе пишу са апсолутним вредностима, 3) треба писати врло велики број бинарних цифара. Припрема програма за прве рачунаре била је у оваквом облику јер тада нису постојала друга средства. Али програмери су врло брзо почели да себи олакшавају посао при писању програма. Прво такво могуће побољшање било је писање програма уместо у бинарном у хексадекадном облику. Због просте везе између бинарног и хексадекадног облика превођење у бинарни облик вршено је пре припреме програма за уношење, али је врло брзо тај задатак поверен посебном програму који је сам вршио превођење у бинарни облик. У таблици 11.1б приказан је програм представљен у хексадекадном облику. При томе је у наредбама код операције одвојен од адресног дела наредбе ради лакшег праћења. Овде је претпостављено да хексадекадна вредност 9 представља код за операцију позивања у меморију, B за сабирање, A за слање у меморију, а 0 за заустављање извршења програма. Нешто другачије писање програма, али доста слично претходном, састојало се у писању кода операције и адреса у децималном облику. По тежини то
266
је слично претходном начину, а програм за превођење био је нешто сложенији јер је сада требало вршити превођење из децималног у бинарни облик. Таблица 11.1 − Машински и асемблерски програм Машински програм a) Бинарни Адреса
в) Симболички програм
б) Хексадекадни Садржај
(BIN)
(BIN)
Адреса (HEX)
Садржај (HEX)
100010100000
1001100010100100
8A0
9 8A4
Име
Наредба
POC:
LD
X
100010100001
1011100010100100
8A1
B 8A5
ADD
Y
100010100110
1010100010100110
8A2
A 8A6
STO
Z
100010100011
1110000000000000
8A3
0 000
HALT
100010100100
0000100000000001
8A4
0801
X:
H'0801'
100010100101
0000000010001000
8A5
0088
Y:
H'0088'
100010100110
0000000000000000
8A6
0000
Z:
H'0000'
Најважнији недостаци писања програма у бинарном или хексадекадном облику су следећи: 1) Одређивање стварних адреса. Пре почетка писања програма потребно је знати колико ће меморијског простора заузимати програм, а колико подаци. Међутим, нема информације о томе колико константи има у програму, колико меморије треба за међурезултате, а колико ће бити дуг сам програм. 2) Уношење измена. Ако у већ написани програм треба унети измене, посебно ако треба уметати нове наредбе, настаје потреба да се врши померање већ написаних наредби и података, што захтева измену адреса у многим наредбама. 3) Праћење програма. Програм написан у бинарном (кодираном) облику непрегледан је и не може се лако пратити и разумети. Ово је посебно важно ако треба проверити исправност написаног програма или унети неке измене у њега. 4) Памћење кодова. Овакав начин припреме програма захтева да се памте цифарски кодови свих операција, којих понекад има и преко стотину. 5) Решење горњих недостатака у припреми програма нађено је у симболичком представљању адреса меморијских локација у којима се сме-
267
штају наредбе, као и у симболичком представљању свих делова наредбе.
Симболичка имена
Симболичко име (симболички назив, идентификатор) представља низ састављен од слова абецеде и децималних цифара са словом на почетку, који служи за означавање неког појма или објекта. Коришћење симболичких имена у обичном животу је врло раширена метода, па је и то разлог њиховог увођења у програмирање. Кодови операција у наредби означавају се симболичким именима која истовремено представљају и мнемотехничке ознаке, тј. имена су тако изабрана да потпомажу да се лакше запамте и одгонетну појмови на које се она односе. Тако нпр. мнемотехничка ознака за сабирање је SB или SAB. Сматра се да је најбоље користити мнемотехничке ознаке од 2, 3 или 4 знака (слова и цифара), а практично се тај број креће од 1 до 6 а понекад и више знакова. За симболичко означавање операција реализованих у рачунару ми ћемо користити симболичка имена која представљају мнемотехничке ознаке назива тих операција на енглеском језику. Разлог овоме је што су скоро сви рачунари које ми користимо призведени на енглеском говорном подручју. Адресе операнада у адресном делу наредбе такође се означавају симболичким именима. При томе је усвојен принцип да симболичка имена адреса операнада представљају називе тих операнада. Тако нпр. у запису LD X ознака X представља симболичко име меморијске локације где је смештена вредност за променљиву коју смо ми назвали X. Уместо симболичких имена понекад је дозвољено да се за означавање адреса операнада користе аритметички изрази у којима фигуришу адресе и целобројне константе, тзв. адресни изрази. У адресном делу наредбе користе се још симболичке ознаке у делу адресних модификатора и њих ћемо обрадити у поглављу о адресирању. У програму често настаје и потреба да се позивамо на неку наредбу у њему. У том случају потребно је да се наведе симболичко име за наредбу у целини, које сада називамо ознака наредбе или назив наредбе. Ознака наредбе фактички представља симболичко име за адресу меморијске локације у којој ће бити смештена та наредба.
268
Симболички облик машинске наредбе
Користећи симболичка имена за означавање појединих елемената наредбе имамо следећи општи облик наредбе једноадресног рачунара: [<ознака>:]
<операција> [<модификатор>] [<адресни део>] [;<коментар>]
Овако представљена наредба назива се симболичка машинска наредба (симболичка инструкција) или асемблерска наредба. Имена стављена у средње заграде нису увек обавезна и каже се да су то опциони параметри. Елемент <ознака> представља име наредбе тј. симболичку ознаку адресе меморијске локације у којој ће наредба бити смештена. Она није део наредбе и постоји само у случајевима када се на неку наредбу позивамо у програму. Елемент <модификатор> служи за опис начина формирања адресе код различитих метода адресирања. Модификатори се обрађују у поглављу о адресирању. Елемент <адресни део> представља симболичко име меморијске локације у којој је смештен операнд. Елемент <коментар>, који није обавезан, служи да се речима детаљније специфицира шта се остварује наредбом. Пример. Прва наредба у таблици 11.1а написана у симболичком облику изгледала би овако: POC:
LD X
; Позивање податка са адресом X у AK.
Писање програма на начин у коме се наредбе представљају у симболичком облику назива се асемблерско програмирање или симболичко машинско програмирање. У њему су решени многи недостаци који су постојали при писању наредби у бинарном облику.
Асемблерски језик Програмски језици код којих се наредбе програма представљају симболичким машинским наредбама називају се симболиочки машински језици или асемблерски језици. Одликују се тиме што су врло слични машинском језику конкретног рачунара и са њим стоје у односу 1:1, тј. свакој симболичкој наредби одговара тачно једна машинска наредба. Машински програм у таблици 11.1а написан на симболичком машинском (асемблерском) језику приказан је у таблици 11.1в.
269
Псеудонаредбе асемблера Коришћење асемблерског језика за програмирање захтева да рачунар поседује посебан програм, тзв. асемблер, којим се врши превођење симболичког програма у машински програм тј. у бинарни код. Асемблер представља посебан програм који припада групи системских програма познатих под именом програмски преводиоци и служи за превођење симболичких програма у машинске програме. Како је већ речено, при томе се поље <ознака> преводи у адресу меморијске локације где ће наредба бити смештена, поље <операција> се преводи у бинарни код операције, а поље <адресни део> у адресу где је смештен податак над којим се извршава операција. Поље <модификатор> се преводи у посебне битове који специфицирају додатне информације за извршење наредбе. Компоновањем поља кода операције, модификатора и адресног дела формира се бинарни код наредбе. Да би асемблер могао да врши превођење потребно је да се зада почетна адреса у оперативној меморији од које почиње смештање програма. Како код савремених рачунара овај посао обављају посебни системски програми, превођење са асемблерског језика се врши у тзв. релативним адресама почев од адресе 0. Стварне адресе формирају системски програми у моменту уношења програма у меморију пре извршења. Асемблерски језик садржи и одређени број посебних наредби које се не преводе у машински програм већ служе да дају одређене информације асемблеру у процесу превођења. Те се наредбе називају наредбе асемблера, директиве или псеудонаредбе. Најчешће коришћене дате су у таблици 11.2. Таблица 11.2 – Неке карактеристичне псеудонаредбе ORG
<адреса>
<ознака>
RES
<број>
<ознака>
DC
<константа>
<ознака>
DATA
<подаци>
<ознака1>
EQU
<ознака2>
COMMENT
<текст>
END
[<име програма>]
Псеудонаредбом ORG елементом <адреса> саопштава се асемблеру почетна адреса од које почиње смештање програма у оперативној меморији ра-
270
чунара пре извршења. Податком <адреса> поставља се при превођењу почетна вредност бројача адреса. Ако почетна адреса није задата почиње се од адресе нула тако да су све преведене адресе релативне. Псеудонаредбом RES резервише се у програму блок сукцесивних меморијских локација чији је број задат елементом <број> који може бити константа или израз. При томе садржај резервисаних меморијских локација није одређен. Псеудонаредбом DC задају се стварне вредности константи које се користе у програму. Име <ознака> у процесу превођења смешта се у посебну таблицу и њему се додељује бинарни код задате константе. У псеудонаредби DATA елементом <подаци> задају се конкретне вредности података којима ће бити попуњене сукцесивне меморијске локације почев од адресе <ознака>. Псеудонаредби EQU имену <ознака1> додељује се константа, адреса или израз одређен изразом <ознака2>. Ако су то два симболичка имена операнада у програму њима се додељује исто место у меморији. Псеудонаредбом COMMENT могу се уносити додатни коментари у програм. Псеудонаредбом END информише се асемблер да нема више наредби за превођење. Ова псеудонаредба означава физички крај програма и због тога она мора бити последња наредба сваког програма.
11.7. Решавање проблема помоћу рачунара Процес решавања проблема, разматран као пројектовање и реализација алгоритама, представља сложен процес који захтева узимање у обзир много детаља и владање техником развоја програма. Решавање проблема почиње од дефинисања шта треба да се реши. Затим се врши детаљна анализа да би се тачно утврдило који се излазни резултат тражи и шта је за то потребно имати на улазу. За тако дефинисани проблем врши се избор методе решања и разрађује се алгоритам за добијање решења. На основу алгоритма пише се програм на неком програмском језику, проверава се исправност његовог рада (фаза тестирања) и на крају се формира коначна документација. На тај начин можемо издвојити следеће фазе у решавању неког проблема:
271
1. дефинисање проблема (задатка), 2. пројектовање алгоритма, 3. писање и пречишћавање програма, 4. провера (тестирање) програма. Методе развоја програма Приступ пројектовању алгоритама сличан је приступу који се примењује у многим техничким дисциплинама. У почетнпом стадијуму пажња се усредсређује на проблем у целини, и у првом идејном решењу изостављају се многи детаљи. Са напредовањем процеса пројектовања задатак се дели (редукује) на мање задатке и пажња се поклања детаљнијем опису проблема. Најбољи и најопштији потупак решавања проблема састоји се у разлагању (подели) полазног проблема на више повезаних мањих проблема, не више од пет или седам, при чему је сваки од њих мање сложен од полазног проблема. Тада се развија алгоритам за решење полазног проблема уз претпоставку да већ имамо алгоритме који решавају сваки од потпроблема. На тај начин количина рада неопходна за решење проблема може се редуковати развојем систематске процедуре којом се решење тражи у мањим корацима уместо да се комплетно решење дефинише у једном кораку. Овакав приступ назива се постепена декомпозиција, постепена детаљизација или развој одозго наниже. Сваки потпроблем на који је сведен глобални проблем решава се даље као посебан проблем. Ако се решења таквих проблема могу лакше добити ми разбијамо главно решење на више мањих и прелазимо на њихово решавање. Уколико се неки потпроблем не може просто решити ми и њега делимо на нове потпроблеме и тражимо решење тих нових потпроблема. Оваква подела на мање потпроблеме продужава се све док сваки од њих не постане довољно прост да га можемо решити. Уколико се на неком кораку установи да изабрана декомпозиција не задовољава у једном или другом смислу потребно је поново размотрити један или неколико претходних корака декомпозиције. Поступак постепене декомпозиције применљив је за решавање свих проблема. Међутим, број потпроблема који ће се разматрати и њихова сложеност зависе од самог проблема који се решава и од искуства лица које тражи решење. Да би се решавање ипак учинило што је могуће мање зависним од горњих фактора развијене су посебне методе програмирања као што су модуларно програмирање и структурно (структурирано) програмирање.
272
273
12. СТРУКТУРА ПРОЦЕСОРА
12.1. Функционални елементи При разматрању начина функционисања централног процесора рачунара користићемо поједине функционалне блокове које смо већ помињали у претходним поглављима. То су разне врсте регистара (паралелни, серијски, померачки, бројачки и др.), декодери, мултиплексери, демултиплексери и прекидачке мреже које служе за реализацију разних прекидачких функција којима се описује функционисање појединих стандардних блокова рачунара. Осим ових размотрићемо још два важна функционална блока процесора: магистрале и аритметичко-логичку јединицу.
Магистрале
Пренос података између регистара или појединих функционалних целина у рачунару врши се тако што се они повезују одређеним бројем проводника. Група проводника (линија) кроз које се врши пренос бинарних података назива се магистрала или сабирница. Ако за сваки пар одговарајућих бистабилних кола постоји посебан проводник кажемо да се врши паралелни пренос. Ако то није случај онда се шаље група по група битова у узастопним временским интервалима и овај се начин преноса назива временски мултиплекс. У најпростијем случају преноси се бит по бит податка када кажемо да се врши серијски пренос. Сваком магистралом могу се преносити три групе сигнала: подаци, адресе и управљачки сигнали. Сагласно са овим често се говори о магистрали података, адресној магистрали и управљачкој магистрали. На слици 12.1а показан је графички начин представљања магистрала.
273
Аритметичко-логичка јединица
Аритмретичко-логичка јединица (АЛЈ) представља прекидачку мрежу са 2n улаза и n излаза, где је n дужина машинске речи. На улаз АЛЈ доводе се два бинарна низа дужине n а на излазу се добија бинарни низ дужине n који је резултат примене неке дефинисане аритметичке, логичке и друге операције над улазним низовима. На сл. 12.1б дато је графичко представљање аритметичко-логичке јединице. Аритметичко-логичка јединица служи пре свега за реализацију аритметичких операција сабирања и одузимања и логичких операција AND, OR и XOR. Множење и дељење могу се паралелно реализовати у аритметичко-логичкој јединици посебном прекидачком мрежом, али је такво решење сложено и скупо, па се обично користи само код већих процесора. 1 2
...
n
АЛЈ ... 1 2 а) Магистрала
1 2 n
...
n б) Аритметичко- логичка јединица
Слика 12.1 Графички симболи за магистралу и аритметичко-логичку јединиц
12.2. Адресност рачунара Бинарни низови којима се кодирају поједине врсте информација у наредби (инструкцији) смештају се у одговарајући број позиција машинске речи које образују поља или зоне. Тако свака наредба садржи поље кода операције, поља за адресе операнада и поље модификатора. Распоред и дужина појединих поља у наредби различити су за сваки рачунар.
274
Формат машинске наредбе
Формат наредбе представља број, распоред, намену и дужину појединих поља у наредби. На основу горе описане структуре наредбе у њој треба да постоје поља са информацијама о коду операције, модификаторима, операндима и следећој наредби за извршење. Сагласно овоме, општи формат наредбе има облик приказан на сл. 12.2а. Формат наредбе бира се полазећи од више захтева који су понекад и противуречни. С једне стране, потребно је да се у наредби смести што је могуће потпунија информација о операцији коју та наредба специфицира, с друге стране, то доводи до потребе да се користи велики број бинарних позиција за укупан код наредбе, па је за памћење програма потребно више оперативне меморије. Зато понекад наредбе рачунара имају променљиву дужину изражену у машинским речима. Међутим, савремени рачунари обично имају фиксну дужину наредби. Напоменимо још једном да је опште усвојени принцип код рачунара да се операнди специфицирају задавањем њихових адреса у меморији. У горе наведеном формату A1 и A2 су адресе операнада над којима се извршава операција, A3 је адреса по којој треба сместити резултат, а A4 је адреса следеће наредбе. Број адреса које се наводе у наредби назива се адресност рачунара. За наредбу која има општи формат према слици 12.2а кажемо да је то четвороадресна наредба, а рачунар који има такве наредбе назива се четвороадресни рачунар. OP
M
A1 A2
A3
A4
а) Општи формат наредбе OP
M
A1 A2
A3
б) Троадресна наредба
OP
M
A1 A2
в) Двоадресна наредба OP
M
A1
г) Једноадресна наредба
Слика 12.2 Формати наредби
Троадресни рачунари
У четвороадресним рачунарима наредбе програма могу се памтити у меморији рачунара у произвољним локацијама, јер се адреса следеће наредбе задаје преко поља A4. Међутим, у програму се наредбе пишу оним редом ко275
јим треба да се извршавају, а то значи да је погодно да се и сместе тако у оперативној меморији. У том случају, после извршења једне наредбе рачунар узима следећу наредбу из локације са следећом по реду већом адресом, и ми кажемо да се наредбе извршавају тзв. природним редоследом, тј. оним редоследом којим су записане у меморији. Овај редослед може се нарушити само у случају када у алгоритму има гранања а у програму се за то користе посебне наредбе тзв. наредбе гранања које ћемо касније размотрити. Ако се усвоји горњи принцип престаје потреба за адресом A4 у наредби, али је потребно увести у процесор један посебан регистар који ће служити за памћење адресе следеће наредбе програма која ће се извршити. Тај регистар служи за управљање током извршења наредби програма а назива се бројач наредби или програмски бројач. Сада ће наредба имати структуру приказану на слици 12.2б. Оваква наредба назива се троадресна наредба а рачунари који имају наредбе са таквом структуром називају се троадресни рачунари. Значење адреса A1, A2 и A3 исто је као код четвороадресних наредби.
Двоадресни рачунари
Број адреса може се смањити још за једну ако се задржи програмски бројач и усвоји принцип да се једно од три поља за адресе изостави а да се адреса резултата у наредби подразумева имплицитно. То доводи до формата наредбе приказаног на слици 12.2в. Адресе A1 и A2 представљају адресе операнада над којима се извршава операција. Добијени резултат увек се смешта по адреси A1 (или A2) при чему се претходни садржај те локације, тј. први операнд, уништава. Наредба са оваквом структуром назива се двоадресна наредба а рачунар који има такве наредбе назива се двоадресни рачунар. Могуће су и друге верзије двоадресног формата. Тако нпр. уместо да се резултат шаље по адреси A1 и уништи први операнд уводи се нови регистар процесора акумулатор у коме се памти други операнд док се резултат примене операције смешта по адреси A2. Код двоадресног формата потребно је увести следеће две нове наредбе за рад са акумулатором: а) позивање садржаја неке меморијске локације у акумулатор, и б) слање садржаја акумулатора у одређену меморијску локацију.
276
Смањење броја адреса омогућава да се или скрати дужина наредбе, тј. укупан број битова за кодирање наредбе, или да се повећа број битова за адресе, што омогућава адресирање већег броја меморијских локација, односно проширује се адресиви меморијски простор.
Једноадресни рачунари
Ако се проанализирају програми писани за двоадресне рачунаре може се уочити да се иста адреса првог операнда јавља врло често. То је због тога што се за памћење међурезултата може користити иста адреса. Осим тога, у току израчунавања није потребно памћење свих међурезултата. Напред речено омогућава да се уведе формат наредбе приказан на слици 12.2г. Овде се обавезно користи у процесору акумулатор који има двоструку улогу: а) у њему се чува први операнд, б) у њега се смешта резултат примене операције. Адреса A1 представља адресу другог операнда. Наредба се оваквом структуром назива се једноадресна наредба а рачунар који има такве наредбе назива се једноадресни рачунар. Једноадресне наредбе користе се пре свега код мини и микрорачунара. Једноадресни формат дозвољава малу дужину наредбе, а то значи мање меморије за памћење једне наредбе. Тиме се упрошћава и структура процесора јер су наредбе простије. Међутим, једноадресне наредбе захтевају више меморијског простора за памћење одређеног програма него вишеадресне наредбе.
Безадресни рачунари
Могуће је конструисати рачунаре који ће имати формат у коме нема никаквих адреса операнада већ само код операције. За остварење овакве концепције потребно је да се сви полазни подаци и међурезултати смештају у посебно организовану меморију која представља магацин (стек). Извршење операције одвија се на следећи начин: узимају се два операнда са врха магацина, над њима се извршава операција, и резултат се смешта на врх магацина. За реализацију магацина често се користи само оперативна меморија, у ком случају је потребно за пренос података из меморије у магацин и за упис из магацина у меморију имати две додатне наредбе: упис у ма-
277
гацин и читање из магацина. Међутим, ове наредбе за рад са магацином морају садржати меморијске адресе. Наредбе са променљивим форматом
Поред напред описаних формата наредби срећу се рачунари и са другачијим форматима. При томе сваки формат има и своје предности и своје недостатке. Уколико је адресност већа утолико се чешће срећу наредбе у којима се поједине адресе не користе. Тако нпр. у наредбама гранања довољна је једна адреса. Адреса A4 у четвороадресној наредби садржи врло малу количину информација. С друге стране, смањење броја адреса захтева увођење нових наредби, и може се десити да је меморија потребна за чување програма са једноадресним наредбама већа, због чувања сувишних кодова операција или адреса. Горе наведени недостаци данас се решавају коришћењем наредби са променљивим форматом. У њима се среће различит број адреса и поља, и разне дужине поља, што има за последицу различите дужине наредби изражене бројем машинских речи. Формат наредбе се при томе одређује или на основу кода операције или се он директно наводи у посебном пољу наредбе.
12.3. Регистри процесора Већина савремених процесора конструисана је тако да поседује одређени број посебних наменских регистара који имају тачно одређене функције. Размотрићемо најважније од тих регистара. Регистри процесора приказани су на слици 12.3.
Адресни регистар меморије AR
Читање садржаја из меморије или упис садржаја у меморију врши се тако што се претходно адреса меморијске локације са којом се ради уписује у посебан регистар процесора који се назива адресни регистар меморије (AR). На основу адресе у адресном регистру у моменту давања сигнала за читање
278
из меморије или за упис у меморију посебним декодерским колима налази се потребна меморијска локација и са њом се обавља читање или упис.
Прихватни регистар меморије PR
Сваки податак који треба уписати у меморију мора се претходно сместити у посебан регистар процесора који се назива прихватни регистар меморије (PR). Наиме, упис у меморију може се вршити само из тог регистра. Исто тако сваки прочитани податак из меморије прво се шаље у прихватни регистар одакле се даље може користити. Приликом уписа у меморију претходни садржај одговарајуће меморијске локације се уништава (брише се), док се при читању врши копирање садржаја локације, тј. садржај локације се уписује у прихватни регистар и задржава се истовремено у самој локацији, Поменимо као куриозитет да се код раније коришћених оперативних мемориија са магнетним језгрима стварно вршило читање са брисањем садржаја локације, а затим се одмах вршио упис назад, што је била последица природе рада тих елемената. Нека је ad адреса меморијске локације чији садржај треба прочитати. Процес читања тог садржаја одвија се у рачунару следећим редом: 1. (AR) : = ad. Узима се адреса ad и уписује се у адресни регистар AR. 2. На основу садржаја AR налази се (селектује се) помоћу декодера одговарајућа локација у меморији. 3. (PR) : = M[ad]. Чита се садржај изабране меморијске локације и смешта се у прихватни регистар PR. При томе се његов претходни садржај уништава, а садржај изабране локације из које је вршено читање не мења се. Ако је Р регистар процесора чији садржај треба уписати у меморијску локацију са адресом ad поступак уписа у меморију одвија на следећи начин: 1. (AR) : = ad. Узима се адреса ad и уписује се у AR, 2. (PR) : = (R). У PR се уписује садржај регистра R, 3. На основу садржаја AR налази се одговарајућа локација у меморији, 4. [ad] : = (PR). Уписује се садржај PR у меморијску локацију са адресом ad. При томе се претходни садржај те локације уништава.
279
Меморија BR UM
XR
Адресна аритметичка јединица
R
RN OP M
R
Програм и подаци AR
PR
ad АЛЈ
Управљање
RU Z C V N P BN
AK +1
Слика 12.3 Програмска шема једнодаресног процесора
Бројач наредби (програмски бројач) BN
У току обављања неке обраде програм који њоме управља налази се у оперативној меморији. Наредбе програма смештене су у меморијским локацијама са сукцесивним адресама. Да би управљачка јединица имала у сваком тренутку информацију о адреси следеће наредбе која ће се извршавати уведен се посебан регистар процесора бројач наредби (BN), бројач инструкција или програмски бројач. Пре стартовања извршења програма у бројач наредби BN се уноси адреса прве наредбе програма, а након позивања сваке наредбе програма у управљачку јединицу, садржај бројача наредби се повећава за 1 односно за дужину наредбе која је позвана. Осим тога, у фази извршења наредбе може се пунити новим садржајем одређеним тзв. наредбама гранања.
280
Регистар наредби RN
Да би наредба могла управљати извршењем операције потребно је да при извршењу буде смештена негде у управљачкој јединици процесора. За ову сврху уведен је посебан регистар који се назива регистар наредби (RN) или регистар инструкција. Позивање текуће наредбе из оперативне меморије и њено смештање у регистар наредби RN одвија се на следећи начин: 1. (AR) : = (BN). Адреса следеће наредбе из BN шаље се у AR, 2. На основу садржаја AR селектује се локација у меморији у којој се налази наредба, 3. (PR) : = M[AR]. Чита се садржај изабране локације и уписује се у PR, 4. (RN) : = (PR). Садржај PR шаље се у RN,
Акумулатор AK
Све аритметичке и логичке операције, операције померања и многе друге машинске операције извршавају се коришћењем посебног регистра процесора који се назива акумулатор AK. При извршењу неке операције у њему се увек налази један од операнада, и у њега се увек смешта резултат добијен по извршењу те операције. При томе се стари садржај акумулатора уништава (брише се). Процес извршења машинске операције OP код једноадресних рачунара одвија се на следећи начин: 1. Први операнд већ се налази у AK где је смештен неком раније извршеном наредбом, 2. (PR) : = M[A1]. Чита се други операнд из меморијске локације са адресом A1 (која је раније смештена у AR) и смешта се у PR, 3. (AK) : = (AK) OP (PR). Извршава се операција OP дефинисана садржајем регистра наредби и добијени резултат се смешта у AKК.
281
Регистар услова (кодова стања) RU
Сви процесори садрже известан број бистабилних кола која служе за памћење кодова услова или кодова стања, који представљају информације добијене при извршењу операција. Ова бистабилна кола се обично третирају као један регистар процесора који се назива регистар кодова стања или регистар услова (RU). Сваки бит регистра RU назива се индикатор стања и поставља се независно од осталих сагласно условима које даје излазна реч резултата из аритметичко-логичке јединице, која се уписује у акумулатор AK. Најчешће коришћени услови су: – садржај AK нула (З бит), – садржај AK негативан (N бит), – садржај AK позитиван (P бит), – постоји пренос (C бит), – настало је прекорачење (V бит). Садржај регистра услова RU користи се у наредбама гранања и наредбама прескока које ће бити обрађене у наредном поглављу. Индексни регистри XRi
Адреса по којој се проналази податак у оперативној меморији ради извршења неке операције најчешће није само адреса у адресном делу наредбе већ се израчунава на основу више података (детаљно је овај проблем обрађен у одељку о адресирању). Један од података који се користи при адресирању налази се у једној посебној групи регистара који се називају индексни регистри (XRi). Број ових регистара најчешће је 1, 3 или 7, али се срећу процесори и са више индексних регистара. Базни регистри BRi
Ово је још једна група посебних регистара процесора који се користе за адресирање. Начин њиховог коришћења обрађен је у одељку о адресирању.
282
Указатељ (показивач) магацина UM
Магацин, стек или магацинска меморија представља меморијску структуру која се у савременим рачунарима најчешће реализује у оперативној меморији. Ради тога је потребно да процесор садржи посебан регистар за рад са магацином који се назива указатељ или показивач магацина (UM). У посебним наредбама за читање из магацина и упис у магацин, садржај указатеља магацина мења се аутоматски и повећава се за 1 после читања а смањује се за 1 пре уписа новог садржаја у магацин. На тај начин се ажурира садржај указатеља магацина, тј адреса која указује на врх магацина. У указатељ магацина може се уписавати садржај из неког регистра процесора или оперативне меморије или се његов садржај може слати у неки регистар процесора или оперативну меморију. Регистри опште намене Ri
Неки процесори садрже одређени број регистара који се могу користити за више различитих намена. Тако они могу бити аритметички регистри у којима се привремено чувају подаци или међурезултати, затим базни и индексни регистри, указатељи магацина и сл. Ови се регистри називају регистри опште намене или локални регистри. Њихов број је најчешће 8 или 16, али се срећу процесори и са 64 регистара опште намене. Савремени процесори са тзв. RISC архитектуром садрже и више десетина ових регистара.
Остали регистри процесора
Поред наведених регистара који се срећу у процесорима могу постојати и још неки регистри доступни програмеру. То су нпр. још један акумулатор (други акумулатор), додатни аритметички регистри за множење и дељење или за операције са покретним зарезом, посебан регистар за рад са потпрограмима и други.
283
12.4. Организација једноадресног процесора На сл. 12.3 приказана је упрошћена програмска шема једноадресног процесора. Овде се термин "програмски" користи да означи да су наведени само они функционални блокови процесора за које кажемо да су "видљиви" програмеру, тј. блокови који учествују у реализацији појединих операција. Овако приказана структура процесора омогућава програмеру да при писању сваке наредбе асемблерског програма прати ток података при извршењу операција. На сл. 12.3 ток података приказан је пуним линијама а ток управљачких сигнала испрекиданим линијама.
Циклус извршења наредбе
Процесор извршава сваку наредбу програма у две сукцесивне фазе: 1) фази припреме или позивања наредбе, 2) фази извршења наредбе. Фаза припреме претходи фази извршења и оне се циклички мењају према дијаграму приказаном на сл. 12.4. У блоку HALT проверава се крај извршења програма. Почетак Позивање наредбе из меморије и смештање у RN Извршење операције кодиране наредбом уRN не
HALT да Заустављање
Слика 12.4 Циклус извршења наредбе
284
Фаза припреме наредбе
Наредба коју треба извршити смештена је у оперативној меморији а њена адреса налази се у бројачу наредби BN. Да би она могла управљати извршењем операције потребно је да се позове и смести у регистар наредби RN. Фаза припреме (позивања) наредбе одвија се на следећи начин:
1. (AR) : = (BN). Садржај бројача наредби (тј. адреса наредбе коју треба извршити) шаље се у адресни регистар AR, 2. На основу садржаја AR помоћу кола за декодирање налази се локација у меморији, 3. (PR) : = M[AR]. Чита се садржај нађене локације и уписује се у прихватни регистар PR, 4. (RN) : = (PR). Садржај PR шаље се у регистар наредби RN, одакле ће наредба управљати извршењем операције која је у њој садржана, 5. Израчунава се адреса података који ће се обрађивати тзв. извршна или ефективна адреса и смешта се у адресни регистар AR, 6. (BN) : = (BN) + L. Повећава се садржај бројача наредби за дужину позване наредбе L. Овим се већ на крају фазе припреме добија адреса следеће наредбе за извршење, 7. Прелази се на фазу извршења наредбе.
Фаза извршења наредбе
Док је фаза припреме наредбе општа за све наредбе, дотле се фаза извршења наредбе одвија специфично за сваку наредбу или поједине групе наредби. Фаза извршења наредбе за већину наредби састоји се обично од следећих подфаза: 1. Узимање (позивање, читање) операнада из оперативне меморије, 2. Извршење операције у аритметичко-логичкој јединици, 3. Смештање добијеног резултата у акумулатор, неки други регистар процесора или одређену локацију оперативне меморије.
Основни кораци циклуса извршења наредбе
Уместо реализације циклуса извршења наредбе у само две фазе савремени процесори, посебно тзв. RISC процесори, извршење наредбе обављају у следећих пет основних корака са временским преклапањем њиховог извр-
285
шења (тзв. проточна обрада наредби), при чему сваки корак захтева један или више тактних интервала: 1. припрема наредбе (позивање наредбе) (IF корак), 2. декодирање наредбе/позив садржаја регистра (ID корак), 3. извршење наредбе/израчунавање ефективне адресе (EX корак), 4. приступ меморији/комплетирање гранања (MEM корак), 5. упис резултата (WB корак).
12.5. Адресирање оперативне меморије Сваки податак који се чува у некој меморијској локацији може се идентификовати задавањем адресе те локације. Наредбама програма дефинишу се операције над подацима који се налазе у меморији или у неком регистру централног процесора. Због тога су у нареби садржане и информације о адресама операнада или о појединим компонентама адресе. На основу тих информација процесор налази саме операнде. Код свих савремених рачунара адресни део наредбе најчешће не представља и стварну адресу по којој се налазе подаци у меморији, већ само једну компоненту за формирање те адресе. Адреса по којој се врши стварно обраћање меморији, тј. физичка адреса податка у оперативној меморији, формира се на основу више компонената и назива се извршна или ефективна адреса. За формирање ефективне адресе користе се посебни адресни системи у процесору. Поступак одређивања извршне адресе на основу адресних информација назива се метода адресирања.
Формирање извршне адресе
Тежња да се смањи дужина наредбе, а тиме и опсег оперативне меморије потребан за памћење програма, као и да се створе услови за удобно програмирање, довела је до развоја више различитих метода адресирања које садрже различите алгоритме за модификацију или интерпретацију адресног дела наредбе ради формирања извршне адресе.
286
Општи случај формирања извршене адресе операнда дат је на сл.12.5. Битовима у пољу модификатора M (или ређе самим кодом операције) дефинише се начин формирања извршне адресе у адресној аритметичкој јединици. Управљачким сигналима који се генеришу на основу садржаја поља M дозвољава се или забрањује подацима из различитих регистара процесора да учествују у формирању извршне адресе. Адресни системи посебно су развијени код малих и микрорачунара. Код њих проблем представља мала дужина наредбе јер се адресним делом наредбе може адресирати мали број локација у меморији. Овај се проблем успешно разрешава увођењем разних метода адресирања. Меморија
BR XR R
Програм и подаци
Адресна аритметичка јединица
RN OP M
R
ad
BN +1
AR
PR
Подаци Управљање
Слика 12.5 Формирање извршне адресе
Метод адресирања који се у некој наредби користи за формирање извршне адресе специфицира се у наредби најчешће у посебном пољу модификатора М које обично садржи 2 или 3 бинарне позиције. Како у формирању извршне адресе операнада често може учествовати и неки од регистара централног процесора, то је потребно задати у наредби и адресу тог регистра. На тај начин наредба треба да има формат: OP
M R ad,
где је OP симболичка ознака операције, M модификатор, R адреса или симболичка ознака регистра процесора а ad је адресни део наредбе.
287
Имплицитно адресирање
У наредбама са имплицитним адресама операнд није експлицитно специфициран у адресном делу наредбе већ се његова адреса подразумева и одређена је кодом операције. На пример, акумулатор се имплицитно адресира као регистар у коме се налази операнд или један од операнада код једноадресних процесора.
Непосредно адресирање
Ако адресни део наредбе не представља адресу операнда већ сам операнд онда се каже да је то непосредни операнд а метод адресирања се назива непосредно адресирање. Ово је варијанта директног адресирања зато што је адреса операнда увек позната и дефинисана је адресом саме наредбе. Адреса за приступ непосредном операнду узима се из бројача наредби. Непосредни операнди представљају константе које се користе за неко рачунање или се тај садржај шаље у неки регистар централног процесора. Непосредна адреса у симболичким наредбама означава се префиксом испред адресног израза, тј. у облику: OP #ad или тачније: OP #con.
Директно адресирање
Код директног адресирања за обраћање меморији користи се само адресни део наредбе који представља истовремено и извршну адресу. Када адресни део наредбе сам представља извршну адресу таква адреса назива се директна или апсолутна адреса. За означавање директне адресе у симболичким наредбама се испред симболичке адресе или адресног израза обично ставља префикс "/" тако да наредба има облик: OP /ad.
Регистарско адресирање
Многи рачунари садрже наредбе које операнде узимају из регистара опште намене или других регистара централног процесора или пак у њих смештају резултате. У том случају за специфицирање операнда треба навести адресу
288
регистра централног процесора у коме се налази операнд. Овакав начин адресирања назива се регистарско адресирање. По концепцији ово је адресирање исто као и директно адресирање. У симболичким наредбама регистарско адресирање означава се на следећи начин: OP .ad или OP R, где је R адреса регистра. Операције у којима се за памћење операнада користе регистри опште намене централног процесора погодне су из два разлога: – регистри су знатно бржи од оперативне меморије, – њих је знатно мање, па се за адресирање користи мали број битова.
Меморијско индиректно адресирање
Адреса која не специфицира меморијску локацију операнда већ меморијску локацију у којој се налази адреса операнда назива се индиректна адреса. На тај начин коришћење индиректне адресе захтева приступ двема меморијским локацијама да би се могло приступити самом операнду. Овај начин адресирања назива се меморијско индиректно или одложено адресирање. Један од основних разлога за увођење меморијског индиректног адресирања састојао се у проширењу адресног простора, јер се сада цела меморијска реч могла користити за адресу. Меморијско индиректно адресирање нашло је затим и многе друге корисне примене. Ово адресирање се реализује врло економично и имају га практично сви процесори. Код меморијског индиректног адресирања приступ операнду одвија се у два временска интервала (такта). У првом се адресни део наредбе шаље у адресни регистар меморије AR и по тој адреси чита се садржај у прихватни регистар PR. У другом такту се садржај PR преноси у AR и по тој адреси се налази операнд који се смешта у PR. У симболичким наредбама меморијско индиректно адресирање означава се знаком "@" испред адресног дела, тј. у облику OP @ad , а вредност операнда коме се приступа је М[М[ad]] . Могуће је направити интересантно упоређење између непосредног, директног и меморисјког индиректног адресирања. Код непосредног адресирања обраћање меморији није потребно јер је операнд позван са наредбом. Зато се каже да је то адреса нултог ранга. Код директног адресирања потребно је једно обраћање меморији ради приступа операнду, и то је адреса
289
првог ранга. За позивање операнда меморијским индиректним адресирањем потребна су два обраћања меморији, па је то адреса другог ранга.
Регистарско индиректно адресирање
Уместо да се индиректна адреса операнда налази у некој меморијској локацији може се за то користити неки регистар опште намене централног процесора. Овај начин адресирања назива се регистарско индиректно адресирање. У односу на меморијско индиректно адресирање ово адресирање је брже јер захтева само један временски интервал (меморијски циклус). За означавање регистарског индидректног адресирања ознака регистра ставља се у мале заграде тј. наредба има облик OP (R), где је R адреса регистра, а вредност операнда коме се приступа је М[R].
Аутоинкрементно и аутодекрементно адресирање
Интересантне могућности пружа регистарско индиректно адресирање при коме се регистар опште намене који се користи за чување адресе операнда аутоматски пре или после коришћења повећава или смањује за 1. На тај начин врши се припрема адресе наредног операнда који је смештен у следећој меморијској локацији. Ове методе адресирања називају се аутоинкрементно и аутодекрементно адресирање а означавају се на следећи начин: OP +(R) ; Повећање садржаја регистра R за 1 пре коришћења, OP -(R)
; Смањење садржаја регистра R за 1 пре коришћења,
OP (R)+ ; Повећање садржаја регистра R за 1 после коришћења, OP (R)-
; Смањење садржаја регистра R за 1 после коришћења.
Индексно адресирање (индексирање)
За адресирање елемената поља смештених у сукцесивним меморијским локацијама уведен је посебан регистар централног процесора који је назван индексни регистар. У њему се чува разлика између адресе текућег елемента поља и адресе првог елемента, и ова се разлика назива померај или помак. С
290
обзиром да је та разлика одговарала редном броју (индексу) елемената у пољу, то је и регистру који је служио за њено памћење дато име индексни регистар. Овакав метод адресирања назива се индексно адресирање или индексирање. Извршна адреса овде се добија као збир адресног дела наредбе који садржи адресу почетка поља и садржаја индексног регистра. Посебним наредбама које се сада морају увести може се постављати почетни садржај индексног регистра, мењати тај садржај за неку константну вредност, испитивати знак тог садржаја или памтити у оперативној меморији. Индексирање се у симболичким наредбама означава стављањем иза адресног дела или адресног израза ad имена индексног регистра у малим заградама, тј. у облику: OP ad(XRi), при чему је извршна адреса једнака: EA = (XRi) + ad. Код неких рачунара могуће је вршити и двоструко индексирање када се адресном делу наредбе додају истовремено садржаји два индексна регистра. Раније је у асемблерским програмима коришћен поступак који се називао модификација наредби којим је за приступ сукцесивним елементима поља мењан адресни део наредбе. И поред тога што је модификација решила важан проблем програмирања и омогућила да се са малим бројем наредби може да изврши велики број операција, она је имала и неке недостатке. Један од основних био је тај што после завршетка програм није могао да се понови јер су модифицирани делови остали измењени. Због тога је било потребно да се врши тзв. регенерација или освежавање наредби програма да би се оне довеле у првобитно стање. Осим тога овакви се програми не могу памтити у фиксним меморијама.
Аутоиндексирање
После сваког индексирања у циљу приступа новом податку потребно је да се промени садржај индексног регистра и за то се користи посебна наредба. Овај се проблем код неких процесора решава увођењем начина адресирања који је назван аутоиндексирање. При сваком коришћењу индексног регистра непосредно пре или после приступа његов се садржај аутоматски мења тако што се додаје или одузима 1. У симболичким наредбама овај метод адресирања означава се на следећи начин:
291
OP +ad(XRi)
; Повећање XRi за 1 пре коришћења,
OP -ad(XRi)
; Смањење XRi за 1 пре коришћења,
OP ad(XRi)+
; Повећање XRi за 1 после коришћења,
OP ad(XRi)-
; Смањење XRi за 1 после коришћења.
Базно адресирање
Дужина адресе у наредби може се смањити увођењем у процесору посебне групе регистара који се називају базни регистри. У том случају адреса се формира из два дела: садржаја базног регистра и релативне адресе или помераја. Овај метод адресирања назива се базно адресирање. Померај (помак) представља разлику између стварне адресе операнда у оперативној меморији и адресе садржане у базном регистру. Померај се задаје у адресном делу наредбе и често се третира као број са знаком. Базни регистри омогућавају и проширење укупног адресног простора оперативне меморије. Као базни регистри могу се користити и регистри опште намене. У симболичким наредбама базно адресирање се означава на следећи начин: OP !ad, а извршна адреса је једнака: EA = (BR) + ad. Базно адресирање може се истовремено користити са индексирањем и индиректним адресирањем
Релативно адресирање
Ако се као базни регистар користи бројач наредби BN адресирање се назива програмско релативно или релативно адресирање. Адреса операнда формира се при томе као сума текућег садржаја бројача наредби BN и помераја специфицираног у адресном делу наредбе ad. Померај се најчешће третира као број са знаком. У асемблерским наредбама се програмско релативно адресирање означава на следећи начин: OP $ad, а извршна адреса је једнака: EA = (BN) + ad.
292
Остале методе адресирања
Горе описане методе адресирања често се могу комбиновати и примењивати истовремено. Тако нпр. могуће је релативно индиректно адресирање, релативно адресирање са непосредним операндом и много других варијанти. Начин комбиновања појединих врста адресирања зависи од реализације централног процесора, а посебно од: – броја и начина коришћења регистара опште намене, – дужине наредбе, – формата наредбе, – броја и начина коришћења специјалних регистара. Сваки конкретно реализовани процесор омогућава да се поједине врсте адресирања користе на начин како је напред описано или са модификацијама које су последица начина реализације. При томе се могу срести и адресирања која се не могу сврстати ни у једну од описаних метода. Када се користи безадресни формат наредбе адресирање се назива магацинско адресирање. Овим начином адресирања наредбама POP и PUSH на основу садржаја указатеља магацина приступа се врху магацина ради читања или уписа садржаја. Посебно се срећу многе модификације базног адресирања. Тако се понекад посебно разматра сегментно адресирање, где сегмент представља било који број сукцесивних меморијских локација. Овде се адресни део наредбе третира као релативна адреса у односу на почетак сегмента. Срећу се и разни начини проширења адресног простора меморије увођењем разних посебних регистара намењених за проширење и сл.
12.6. Микропроцесори и микрорачунари Развој технологије интегрисаних кола омогућио је да се почетком седамдесетих година реализује на једном силицијумском чипу (микроколу) цео централни процесор, тј. аритметичко-логичка и управљачка јединица. Ова је ком-
293
понента названа микрорпоцесор. Микропроцесор је у стању да под програмским управљањем извршава обраду података, укључујући улаз-излаз, доношење одлука за управљање током извршења програма, аритметичке, логичке и друге машинске операције. У општем случају микропроцесор садржи: аритметичко-логичку јединицу, блок за управљање и синхронизацију, регистре опште намене, акумулатор, бројач наредби, регистар наредби, декодер кода операције, магистралу података, адресну магистралу, управљачку магистралу, улазно-излазну магистралу, блок за управљање меморијом, блок за управљање улазом-излазом и др. Савремени микрорпоцесори реализовани са интегрисаним колима врло високог степена интеграције садрже још и многе друге функционалне блокове. Помоћу микропроцесора било је могуће реализовати микрорачунаре - рачунске или управљачке системе који су поред микропроцесора на посебним интегрисаним колима средњег и високог степена интеграције садржали: фиксну (читачку) меморију, оперативну меморију, кола за спрегу са улазно-излазним урећајима, генератор тактних (синхронизационих) сигнала и друге управљачке и спрежне блокове. Микропроцесори и на њима засновани микрорачунари представљају основу и за реализацију персоналних рачунара и радних станица. Како је истакнуто у првом поглављу сматра се да ће будући рачунарски системи представљати паралелне системе који ће се заснивати на коришћењу врло великог броја микропроцесора.
294
13. НАРЕДБЕ ПРОЦЕСОРА
13.1. Групе наредби Број и врста машинских наредби (машинских инструкција) реализованих у неком рачунару зависи од намене и величине процесора. Класификација наредби у групе сродних наредби није увек јединствена. Ми ћемо условно све наредбе процесора сврстати у једну од следећих група: 1) наредбе за пренос података, 2) аритметичко-логичке наредбе а) аритметичке наредбе, б) логичке наредбе, в) наредбе за померање. 3) наредбе за управљање током извршења програма, а) наредбе за гранање, б) наредбе за прескоке, в) наредбе за програмске петље, г) наредбе за потпрограме, 4) улазно-излазне наредбе, 5) остале наредбе. Раније смо већ напоменули да се за записивање асемблерских наредби користе скраћенице из енглеског језика. У таблици 13.1 дате су симболичке ознаке које се користе у асемблерским наредбама са значењем на енглеском и преводом на српски језик. Ми ћемо обрадити само врло мали број каракте-
295
ристичних наредби у циљу упознавања са принципима извршења операција у процесору рачунара.
13.2. Наредбе за пренос података Наредбама за пренос података врши се позивање садржаја оперативне меморије у акумулатор или у неки други регистар процесора, слање садржаја акумулатора или неког другог регистра процесора у оперативну меморију, пренос или премештање садржаја једног регистра процесора у други, слање из једне меморијске локације у другу, рад са магацином и сл. Таблица 13.1 − Симболичке ознаке наредби (инструкција) рачунара ADD
add
сабирање
ADDC
add with carry
сабирање са додавањем преноса
ADJ
adjust
децимална корекција
AND
and
покомпонентна логичка И операција
B-
branch
условно гранање (видети таблицу 13.3)
BR
branch
безусловно гранање (скок)
BRK
break
иницијализација прекида програма
CALL
subroutine call
позив потпрограма (прелаз на потпрограм)
CLR
clear
брисање садржаја (упис нуле)
CLRC
clear carry
брисање индикатора преноса
CLRV
clear overflow
брисање индикатора прекорачења
CMP
compare
упоређење операнада и упис индикатора
DEC
decrement
смањење за 1
DI
disable interrupt
забрана прекида
DIV
division
дељење
EI
enable interrupt
дозвола прекида
EXT
extend
проширење операнда у шире поље
HALT
halt
заустављање изврашења наредби
IN
input
улаз (учитавање) податка у процесор
INC
increment
повећање за 1
LD
load
пренос податка из опер. меморије у процесор
MOV
move
премештање операнда на друго место
MOVN
move multiple
пренос операнда у више локација
296
MUL
multiplication
множење
NEG
negate
комплементирање (комплемент двојке)
NOP
no operation
нема операције (наредба без дејства)
NOT
not
негација (или јединични комплемент)
NOTC
not carry
комплементирање бита преноса
OR
or
покомпонентна логичка ИЛИ операција
OUT
output
слање на излаз садржаја регистра
POP
pop
читање из магацина и пренос на задато место
PUSH
push
упис дефинисаног операнда у врх магацина
RET
return
повратак из потпрограма
RETI
return from interrupt
повратак из прекида
ROL
rotate left
лево кружење
ROLC
rotate left through carry/link
лево кружење преко индикатора преноса
ROR
rotate right
десно кружење
RORC
rotate right through carry/link
десно кружење преко индикатора преноса
SET
set
упис (постављање) 1 у задати операнд
SETC
set carry
упис (постављање) 1 у бит преноса
SETV
set overflow
упис (постављање) 1 у бит прекорачења
SHL
shift left
лево померање
SHR
shift right
десно померање
SHRA
shift right arithmetic
аритметичко десно померање
SK-
skip
условни прескок (видети таблицу 13.3)
SKIP
skip
безусловни прескок
ST
store
пренос операнда из процесора у опетаривну меморију
SUB
subtract
одузимање
SUBC
subtract with carry
одузимање са битом преноса/позајмице
SUBR
subtract reverse
одузимање операнада обрнутим редоследом
TEST
test
испитивање операнда и упис индикатора
TR
translate
конверзија операнда према задатој таблици
WAIT
wait
прекид извршења програма и чекање услова
XCH
exchange
замена места два операнда
XOR
exclusive or
покомпонентна логичка операција ⊕
Наредба за пренос садржаја из оперативне меморије у акумулатор или неки регистар процесора Ri има облик: 297
LD Ri ad
; (Ri) : = (ad).
При извршењу ове наредбе претходни садржај регистра Ri се уништава а садржај меморијске локације са адресом ad се не мења. Наредба за пренос садржаја акумулатора или неког регистра процесора у меморију има облик: ST Ri ad
; (ad) : = (Ri).
При извршењу ове наредбе претходни садржај меморијске локације са адресом ad се уништава а садржај регистра Ri се не мења (остаје исти). Ако у наредбама LD и ST не постоји Ri подразумева се акумулатор AK. Могу се срести и још неке посебне наредбе за преносе као што је премештање садржаја из једног регистра у други или из једне меморијске локације у другу (наредба MOV), замена места два садржаја (наредба XCH) и др. Посебан случај наредби за пренос представљају наредбе за постављање и брисање садржаја појединих регистара процесора када се уписују унапред задате константне вредности, пре свега вредности 00...0 или 11...1.
Рад са магацином (стеком)
Постоје две наредбе за рад са магацином које омогућавају да се врши упис или читање садржаја у врху магацина уз истовремену промену садржаја указатеља (показивача) магацина. При томе је садржај указатеља магацина UM претходно дефинисан посебним наредбама. Опис наредби је следећи: PUSH Ri
; M[UM] := (Ri); (UM) := (UM)-1 - упис у магацин из Ri,
POP
; (UM) := (UM)+1; (Ri): = M[UM] - читање из магацина у Ri.
Ri
Понекад су ове наредбе реализоване без адресног дела Ri у ком случају се подразумева акумулатор као место за узимање или упис операнда.
298
13.3. Aритметичко-логичке наредбе Aритметичке наредбе
Aритметичке наредбе служе за извршење основних аритметичких операција: сабирања, одузимања, множења и дељења, затим поређење два садржаја, комплементирање, повећање или смањење садржаја за неку задату вредност и сл. Наредба за аритметичку операцију сабирања има облик: ADD
ad
; (AK) : = (AK) + (ad).
Наредба реализује сабирање два бинарна броја у фиксном зарезу и целобројних бинарних вредности. При томе се истовремено постављају одређени индикатори у регистру услова RU. Када је потребно додати константну вредност некој меморијској локацији користи се наредба ADDI за операцију сабирања са непосредним операндом con која има облик: ADDI
#con
; (AK) : = (AK) + con.
Aко у наредби постоји и име регистра Ri константа се додаје регистру. Чест је случај да се целобројне бинарне вредности због потребног опсега памте у више меморијских локација. У том случају се поступак сабирања обавља парцијално тако што се сабирају делови од онолико бинарних цифара колика је дужина машинске речи. При томе настаје потреба да се за сваки парцијални збир памти бит преноса. Због тога је погодно имати и посебну наредбу сабирања којом се при извршењу операције сабирања додаје у најнижу позицију и бит преноса C. Наредба има облик: ADC
ad
; (AK) : = (AK) + (ad) + (C).
Одузимање се обавља или посебним наредбама за одузимање или коришћењем комплемента јединице или комплемента двојке. Посебне наредбе за одузимање имају облик: SUB
ad
; (AK) := (AK) - (ad),
SUBI
con
; (AK) := (AK) - con, 299
SUBC
ad
; (AK) := (AK) - (ad) - (C).
Последња од горњих наредби користи се за одузимање у случајевима када је бројни податак смештен у више узастопних меморијских локација. Aко се користи комплементарно представљање, најчешће представљање помоћу комплемнта двојке, онда се за добијање тог комплемента користи наредба облика: NEG
; (AK) : = - (AK).
За реализацију множења и дељења, када постоје, користе се наредбе облика: MUL ad
; (AK) := (AK) × (ad),
DIV
; (AK) := (AK) / (ad).
ad
Из групе аритметичких наредби поменимо још посебне наредбе за инкрементирање (повећање за 1) и декрементирање (смањење за 1) садржаја неког регистра процесора. Такве наредбе користе се пре свега за бројање догађаја, временских интервала и сл. и имају следећи облик: INC
Ri
; (Ri) := (Ri) + 1,
DEC
Ri
; (Ri) := (Ri) - 1.
Посебно је корисна и наредба за поређење два садржаја. При томе се садржаји који се упоређују не мењају већ се само постављају индикатори у регистру услова RU. Наредба има облик: CMP
ad ; Пореди се садржај AК са садржајем локације ad и постављају се индикатори у регистру услова RU.
У већини микропроцесора аритметичке операције за бројеве представљене у покретном зарезу реализују се посебним потпрограмима, а постоје и посебни процесори, тзв. копроцесори за реализацију ових операција.
300
Наредбе за логичке операције
За различите обраде података поред аритметичких операција често се користе и друге операције. Једну групу таквих операција чине логичке операције. У процесору се реализују тзв. покомпонентне (бит по бит) операције прекидачке (Булове) алгебре AND (логичка И операција), OR (логичка ИЛИ операција), XOR (операција сума по модулу два) и NOT (негација, јединични комплемент)). Ове операције се извршавају над вредностима 0 и 1 у одговарајућим (истим) позицијама бинарне речи. Наредбе за логичке операције имају облик: AND
ad
; (AK) := (AK) .AND. (ad),
ANDI
#con
; (AK) := (AK) .AND. con,
OR
ad
; (AK) := (AK) .OR. (ad),
ORI
#con
; (AK) := (AK) .OR. con,
XOR
ad
; (AK) := (AK) .XOR. (ad),
XORI
#con
; (AK) := (AK) .XOR. con,
NOT
; (AK):= .NOT. (AK).
Остале логичке операције могу се реализовати коришћењем ових наредби на основу релација које се проучавају у прекидачкој (Буловој) алгебри. Коришћење логичких операција
Најчешће се логичке операције користе за издвајање појединих делова машинске речи (маскирање помоћу операције AND), спајање група битова у једну реч (паковање помоћу логичке операције OR) или за поређење два садржаја (коришћење логичке операције XOR). Операција XOR користи се за поређење (компарацију) тако што се у случају када су два садржаја једнака добија резултат 00...0. Напоменимо да се за поређење два садржаја може користити и операција одузимања, што није препоручљиво за бројеве са покретним зарезом, и операција компарације CMP.
301
Наредбе за померање
Наредбама за померање врши се померање бинарног садржаја неког регистра процесора, најчешће акумулатора, за одређени број позиција лево или десно. При томе постоје разне варијанте померања размотрене у осмом поглављу. Овде се додатно срећу наредбе померања у којима се акумулатор условно проширује лево до највишег разреда битом преноса C и при извршењу операције се третирају као целина. Операцијом померања бинарни садржај неког регистра централног процесора помера се за једно или више бинарних места лево или десно. Померање лево за једно место означава да се бинарна цифра из позиције i премешта у позицију i+1. Померање бинарног садржаја за једно место улево еквивалентно је множењу тог садржаја са 2. Померање удесно за једно место еквивалентно је дељењу садржаја са 2. Пример.
00110101
; Почетни садржај,
01101010
; Померени садржај за једно место улево, при чему ; се у бит најмање тежине уписује 0.
Зависно од начина шта се ради са битовима у вишим и нижим позицијама разликујемо логичко померање, аритметичко померање и кружење. При логичком померању за једно место улево бит највеће тежине се губи а у позицију најмање тежине уписује се 0. При логичком померању за једно место удесно бит најмање тежине се губи а у позицију највеће тежине уписује се 0. Слично је и десно померање. Наредбе за лево и десно логичко померање имају облик: SHL
k
; Померање улево садржаја AK за k места,
SHR
k
; Померање удесно садржаја AK за k места.
Када је у операцији померања акумулатор проширен битом преноса C при померању улево бит највеће тежине преноси се у C, старо стање бита C се губи, а у позицију најмање тежине акумулатора уписује се 0. При кружном померању удесно у бит преноса C се уписује бит из најмање позиције, док се у позицију најмање тежине уписује 0. Наредбе за ово померање имају облик:
302
SHLC
k
; Померање улево за к места садржаја AК ; проширеног битом преноса C,
SHRC
k
; Померање удесно за к места садржаја AК ; проширеног битом преноса C,
Aритметичко померање се врши удесно за потребан број места, а основни циљ овог померања је задржавање знака из највише позиције. Тако при аритметичком померању удесно позитивног броја у највишој позицији задржава се 0 за знак и истовремено се уписује 0 у њој суседну десну позицију. При аритметичком померању негативног броја у највишој позицији се задржава 1, али се истовремено у суседну десну позицију такође уписује 1. Тиме се померањем негативног броја удесно добија поново негативан број. Наредба за аритметичко померање има облик: SHRA k ; Aритметичко десно померање садржаја AК за k места. Пример.
1010110100011011 ; Почетни садржај, 1111010110100011 ; Садржај после аритметичког померања ; за три места удесно.
Операције померања користе се највише при реализацији аритметичких операција множења и дељења, али налазе и многе друге практичне примене.
Кружење
При извршењу операције померања коју називамо кружење или цикличко померање претпостављамо да су бит највеће и бит најмање тежине суседни. У том случају при десном кружењу бит најмање тежине се не губи већ се преноси у позицију највеће тежине. При левом кружењу бит највеће тежине преноси се у позицију најмање тежине. Наредбе за кружење имају облик: ROR
k
; Dесно кружење за к места,
ROL
k
; Лево кружење за к места.
Пример. 0101111000011011 ; Почетни садржај, 0110101111000011 ; Садржај после десног кружења за 3 места,
303
0111100001101101 ; Садржај после левог кружења за 2 места. Операција кружења се често реализује тако што се у петљу за кружење укључи и бит преноса C. У том случају при десном кружењу бит најмање тежине преноси се у бит преноса C, а садржај бита C у позицију највеће тежине. Наредбе имају облик: RORC
k
; Dесно кружење AК и C за k места,
ROLC
k
; Лево кружење AК и C за k места.
13.4. Управљачке наредбе Наредбе гранања
Наредбе гранања омогућавају да се извршава један или други део програма зависно од неког услова добијеног у току рада програма. На тај начин оне утичу на ток извршења наредби програма. Наредбе програма извршавају се оним редом којим су написане и по коме су смештене у оперативној меморији све док се не наиђе на посебне наредбе којима се може мењати договорени редослед. Извршење програма одвија се тако што се после извршења текуће наредбе прелази на извршење следеће по реду наредбе из суседне локације. То се постиже на тај начин што се на крају фазе припреме текуће наредбе садржај бројача наредби повећа за дужину наредбе, чиме се добија адреса следеће наредбе. Описани "природни" редослед извршења наредби може се прекинути само посебним наредбама које се називају наредбе за гранање програма или наредбе за скокове. С обзиром да се гранањем прекида природни редослед извршења наредби програма, потребно је да се у наредби гранања зада адреса наредбе од које се наставља даље извршење програма. Извршење наредбе гранања одвија се на следећи начин: испитује се услов гранања и ако је он испуњен формира се за задату методу адресирања адреса гранања и уписује се у бројач наредби BN. Овим се завршава фаза извршења наредбе гранања и прелази се на фазу припреме нове наредбе. Како је сада у BN нова адреса на коју се врши гранање, то ће се од ње наставити даље извршење програма. Aко услов у наредби гранања није испуњен наста-
304
вља се извршење програма природним редоследом, тј. од наредбе са следећом већом адресом. Подела наредби гранања Све наредбе гранања деле се у две групе: а) наредбе безусловног гранања (наредбе скока) б) наредбе условног гранања. Наредбом безусловног гранања (скока, безусловног прелаза) увек се прелази на специфицирану наредбу без испитивања икаквих услова. Наредба за безусловно гранање има следећи општи облик: BR
ad
; (BN) := ad .
Свака наредба условног гранања поред спецификације услова гранања садржи и адресу на коју се врши гранање када је тај услов испуњен. У општем случају наредба условног гранања има облик: BRu
ad
; Aко је услов u = 1 тада (BN) := ad ; ( у фази припреме BN је већ повећан за за L),
где u представља неки услов из регистра услова који се при извршењу наредбе гранања испитује (видети таблицу 13.3). На слици 13.1а,б графички је приказан начин извршења наредби безусловног и условног гранања.
BR
AD
BRu
... ...
... ...
AD
SKu u=0
u=0 u=1
u=1
AD
AD
а ) Извршење наредбе безусловног гранања
б) Извршење наредбе условног гранања
... в) Извршење наредбе прескока
Слика 13.1 Извршење наредби гранања и прескока
305
Пример. Наредба гранања у којој се испитује индикатор услова C (бит преноса) има облик: BRC
ad
; Aко је C=1 тада (BN) := ad .
Услови гранања
Све услове који се могу користити у наредбама гранања поделићемо у следеће групе: 1) знак резултата у акумулатору (мањи од нуле, једнак нули, већи од нуле), 2) постојање преноса или прекорачења, 3) аритметички однос два броја: =, <, ≤, >, ≥ , 4) однос апсолутних вредности два броја, 5) остали услови. За све услове постоје одређени битови у регистру услова који служе као индикатори за памћење тих услова. Они се постављају при извршењу одређених операција или при поређењу два операнда. Симболичко име за сваку наредбу гранања састоји се од два спојена дела: један означава врсту наредбе а другим је означен услов гранања у симболичком облику. У таблици 13.2 приказани су типови наредби којима се на место цртица додају симболичке ознаке услова ради формирања наредби гранања. У таблици 13.3. приказан је начин специфицирања услова гранања. Таблица 13.2 − Типови наредби условног гранања B-
branch
гранање
SK-
skip
прескок
CALL-
subroutine call
позив потпрограма
RET-
return from subroutine
враћање из потпрограма
IB-
increment and branch
повећање за 1 и гранање
ISK-
increment and skip
повећање за 1 и прескок
DB-
decrement and branch
смањење за 1 и гранање
DSK-
decrement and skip
смањење за 1 и прескок
306
Комбиновањем наведених у таблици 13.2 типова наредби условног гранања и симболичких ознака услова за гранање из таблице 13.3 може се добити велики број наредби условног гранања. Међутим, у пракси се у процесору реализује само мали део свих тих наредби, пре свега наредбе за гранање B- и наредбе за прескок SK-, а делимично и наредбе IB- и DB-. Таблица 13.3 − Симболичко означавање услова гранања -C
carry
наредба се извршава ако је испуњен услов C
-E
equal
наредба се извршава ако је испуњен услов једнако
-GE
greater than or equal
наредба се извршава ако је испуњен аритметички услов веће или једнако
-GT
greater than
наредба се извршава ако је испуњенаритметички услов веће од
-H
higher
наредба се извршава ако је испуњен услов веће за апсолутне вредности (без знака)
-L
lower
наредба се извршава ако је испуњен услов мање за апсолутне вредности (без знака)
-LE
less than or equal
наредба се извршава ако је испуњен аритметички услов мање или једнако.
-LT
less than
наредба се извршава ако је испуњен аритметички услов мање од
-N
negative
наредба се извршава ако је испуњен услов негативан
-NC
not carry
наредба се извршава ако није испуњен услов пренос
-NE
not equal
наредба се извршава ако је испуњен услов није једнако
-NH
not higher
наредба се извршава ако је испуњен услов мање од или једнако за апсолутне вредности.
-NL
not lower
наредба се извршава ако је испуњен услов веће од или једнако за апсолутне вредности
-NV
no overflow
наредба се извршава прекорачења
-NZ
not zero
наредба се извршава ако је испуњен услов није нула
-P
positive
наредба се извршава ако је испуњен услов позитиван
-PE
parity even
наредба се извршава ако је испуњен услов парност
-PO
parity odd
наредба се извршава ако је испуњен услов непарност
-V
overflow
наредба се извршава ако је испуњен услов прекорачење
-Z
zero
наредба се извршава ако је испуњен услов нула
ако
је
испуњен
услов
нема
307
Наредбе прескока
У мини рачунарима и микропроцесорима уведена је посебна врста наредбе гранања која се назива наредба прескока. Одликује се тиме да не захтева адресни део, због чега је број битова за њену реализацију мали. Принцип остварења наредбе условног прескока SKu приказан је на сл. 13.1в. Извршење наредбе условног прескока одвија се на следећи начин. Aко задати услов није испуњен у фази извршења наредбе не дешава се ништа, што значи да се као следећа наредба извршава наредба која је непосредно иза ње. Ту се најчешће програмира наредба безусловног скока преко које се врши потребно гранање. Aко је услов испуњен врши се прескок следеће наредбе тако што се у фази извршења садржај бројача наредби повећа за 1 (са повећањем у фази припреме то је укупно 2). На тај начин се прескаче наредба иза наредбе SKu. У општем случају наредбе прескока имају облик: SK
;(BN) : = (BN) +1 (безусловни прескок),
SKu
; Aко је u = 1 тада (BN) : = (BN) +1 (условни прескок).
За формирање наредби условног прескока користе се исти услови као и у наредбама гранања према таблици 13.3.
Програмске петље
Врло често се алгоритми за решавање појединих проблема могу представити у облику низа операција (корака) који се понављају више пута. При сваком новом понављању операције се извршавају над новим подацима. Ови нови подаци су или добијени као резултат претходне обраде или се узимају из неког поља података. Низ наредби програма чије се извршавање понавља док не наступи неки задати услов назива се програмска петља или програмски циклус. Програмске петље омогућавају да се у савременим програмски управљаним рачунарима може остварити извршење великог броја операција помоћу малог броја наредби програма. Та могућност чини коришћење рачунара врло ефикасним и представља једно од универзалних програмских средства. Поступак обраде који се може представити низом операција које се понављају више пута назива се циклички или итеративни поступак (лат. итера-
308
тио - понављање) а представљен је у општем случају дијаграмом тока на сл. 13.2а. Управљање понављањем остварује се тако што се задаје критеријум понављања. То је најчешће потребан број понављања, достизање задате тачности или задовољење неког другог услова. Вештина коришћења петљи састоји се у томе да се, кад год је могуће, неки поступак сведе на циклички поступак. Најпростији пример свођења на такав облик јесте налажење суме n бројева S = Σai. Независно од вредности коју има n ова се сума може програмирати са врло мало наредби. Број понављања регулише се тако што се помоћна променљива и, која има почетну вредност 1, при сваком понављању петље повећа се за 1 и упоређује се са n. Резултат израчунавања (сума) добија се тако што се прво постави С = 0, а затим се при сваком понављању петље парцијалној суми С додаје нови сабирак.
Улаз Припрема почетних вредности параметара Извршење операција (обраде) Припрема аргумената за ново понављање да
Понављање не
Lp
Припрема петље
Lo
Обрада
La
Припрема аргумената
Lu
Промена индекса
Lk
Израчуванање критеријума
Lz
Провера завршетка
Излаз а) Циклички поступак
б) Структура петље
Слика 13.2 Петље (циклички поступци)
Aргументи за свако понављање петље могу се припремити на два начина: 1) нови аргументи представљају резултате претходног извршења петље. Они се шаљу у одређене регистре или меморијске локације одакле се узимају као полазни подаци за ново извршење петље;
309
2) нови аргументи су нови елементи поља у оперативној меморији чије се адресе припремају у самој петљи тако што се врши промена адреса. Структура програмске петље представљена је на слици 13.2б. Карактеристике и намена појединих делова петље су следеће: Lp – припрема петље (иницијализација петље). Овај део петље чини скуп наредби којима се задају почетни услови и почетне вредности параметара петље. Он не припада делу петље који се извршава при сваком понављању, већ се извршава само једном на почетку петље. Lo – обрада. Овај део петље служи за обраду и он се понавља за различите полазне податке при сваком поновљеном пролазу кроз петљу. La – припрема аргумената. У овом делу петље врши се припрема аргумената за ново понављање петље. Li – промена индекса. Када се у петљи обрађује поље потребно је ажурирати индекс који омогућава приступ новим подацима у пољу. Lk – израчунавање критеријума. У овом делу се израчунава задати критеријум на основу кога се у делу Lz доноси одлука о враћању на поновну обраду у петљи. Lz – провера завршетка петље. У овом делу доноси се одлука (решава се) о томе да ли треба наставити израчунавање у петљи. Одлука се доноси на основу израчунатог и задатог критеријума и одређује се повратак на почетак петље ради понављања израчунавања у петљи или се излази из петље. Напоменимо да не мора постојати строга разлика између појединих делова петље, нити петља мора обавезно садржати све описане делове. Управљање понављањем петље захтева задавање критеријума завршетка петље. При томе постоје два случаја: 1) максимални број понављања петље је коначан и унапред познат; 2) број понављања петље није унапред познат. Када је максимални број понављања петље унапред познат управљање понављањем остварује се тако што се дефинише посебна променљива која се назива бројач петље. При сваком понављању петље бројач петље се повећава за 1, а упоређењем са укупним потребним бројем понављања врши се враћање на почетак петље или се излази из петље. Када број понављања није унапред познат као критеријум завршетка петље задаје се потребна тачност или неки други критеријум. При сваком пона-
310
вљању петље израчунава се овај критеријум и упоређује се са задатим. Испуњење или неиспуњење критеријума краја има за последицу излаз из петље или враћање на поновно извршење петље.
Посебне наредбе за петље
Бројање понављања петље најбоље је организовати коришћењем посебних наредби за петље којима се могу ефикасно програмирати петље. Њима се мења садржај неког одређеног регистра - индексног или регистра опште намене, за корак 1 или задати корак, и истовремено се врши прелаз на задату наредбу када се садржај промени од позитивне на нулту или негативну вредност, или од негативне на нулту или позитивну вредност. Најчешће примењивана посебна наредба за програмирање петљи је наредба DBNZ (енгл. DBNZ – Decrement aнd Branch if Not Zero – смањење за 1 и гранање ако је садржај различит од нуле) која има следећи облик: DBNZ
POV
; (RL): = (RL)-1;
(RL) = 0 ⇒ (BN) := POV,
DBNZ XRi POV
; (XRi): = (XRi)-1; (XRi) = 0 ⇒ (BN) := POV,
DBNZ Ri
; (Ri) : = (Ri) -1;
POV
(Ri) = 0 ⇒ (BN) := POV.
У првом случају користи се посебан регистар процесора RL специјално намењен за наредбу DBNZ, у другом случају индексни регистар XRi, а у трећем случају регистар опште намене Ri.
Потпрограми
У програмима се често срећу групе наредби које представљају логичке целине или имају самостално значење а понављају се на више места. Такви делови програма описују више или мање самосталну етапу неког рачунског процеса, а могу постојати не само при решавању неког конкретног проблемаа већ и при решавању више различитих проблема. Осим тога, у многим областима примене постоје функционалне зависности чије је коришћење врло често. То је случај код израчунавања елементарноих математичких функција, решавања једначина, делова програма за улаз-излаз, конверзију из једног кода у други и многих других типичних обрада. По својој природи ове групе наредби се могу разматрати и као процедуре за израчунавање неке функције
311
једне или више променљивих или за извршење групе операција које су заједничке за више програма. Ради лакшег и бржег програмарања ови делови програма издвајају се у самосталне програмске целине које се посебно пишу, тестирају и користе (позивају) а називају се потпрограми. Програм из кога се позива потпрограм назива се главни програм или основни програм. Заједно са програмским петљама потпрограми чине основу технике програмирања код савремених рачунара. Систем писања потпрограма омогућава да се само једна копија потпрограма може позивати произвољан број пута. Поред лакшег програмирања овим се постиже и значајна уштеда меморије.
Врсте потпрограма
Зависно од начина на који се потпрограми укључују у главни (основни) програм разликују се две врсте потпрограма: 1) отворени потпрограми, 2) затворени потпрограми. Отворени потпрограм представља низ наредби које се умећу у главни програм. При сваком обраћању оваквом потпрограму у главни програм се умеће копија тог низа наредби. Основни недостатак отворених потпрограма је понављање свих наредби потпрограма при сваком обраћању, што захтева више оперативне меморије, због чега отворени потпрограми морају имати врло мали број наредби. Још једну врсту отворених потпрограма представљају макронаредбе - симболичка имена програмског језика којима су означени унапред дефинисани низови наредби. Овим се делови програма који се често користе дефинишу само једном у облику макронаредбе. При позиву у главни програм увек се умеће копија макронаредбе. Основна намена макронаредби је скраћење изворног програма. Њиховим коришћењем уводе се сопствена средства вишег нивоа чиме се постиже краће и лакше програмирање. Затворени потпрограм представља низ наредби који се формира и преводи као засебна програмска целина, а може се користити много пута у једном или више програма и потпрограма на начин дат на сл. 13.3а. Затворени потпрограм је тако организован да се њему може пренети управљање из неког другог програма или потпрограма, а по завршетку обраде управљање се враћа назад у главни програм. При томе се под "преносом управљања" подразумева узимање следеће наредбе за извршење из меморијске локације у
312
којој се налази прва извршна наредба потпрограма. После завршетка потпрограма управљање се враћа у главни програм на место где је био прекинут.
Наредбе за потпрограме
Позивање затвореног потпрограма остварује се посебним наредбама рачунара за рад са потпрограмима. То је једна врста наредби гранања али са следећим специфичностима. Сваки пут када у главном програму треба користити потпрограм потребно је задати увек исту адресу - адресу почетка потпрограма PP. То би се могло остварити наредбом за безусловни скок. При враћању из потпрограма у главни програм треба прећи на наредбу чија је адреса A+1 или A+D+1, слика 13.3б. Ова се адреса назива повратна адреса. Aли настаје проблем на који начин потпрограм зна повратну адресу јер се прелаз на потпрограм може вршити са различитих места у главном програму. Наиме, пошто и програм и потпрограм користе исте регистре централног процесора прелаз на потпрограм означава упис у програмски бројач адресе прве извршне наредбе потпрограма. Због тога тај прелаз не може садржати просто скок на потпрограм јер се губи адреса за враћање у главни (позивајући) програм. Програм
Програм
Потпрограм
Програм
Потпрограм
PP
PP
Потпрограм A
A A+1
PP
}D
A+D+1
а) Затворени потпрограм
б) Прелаз на потпрограм
Слика 13.3 Коришћење затворених потпрограма
За обезбеђење повратка у главни програм потребно је располагати хардверским или софтверским средствима којима би се сачувао садржај програмског бројача у моменту преласка на потпрограм. Враћање из потпрограма састоји се у узимању тог садржаја и припреми повратка у главни програм. Повезивање главног програма и потпрограма решава се тако што се дефини-
313
ше место за смештање повратне адресе у фиксне или на други начин одређене заједничке регистре у процесору или одређене локације у оперативној меморији. При томе разликујемо следеће случајеве: 1) Памћење повратне адресе у неком регистру Ri процесора. Наредба прелаза на потпрограм има следећи формат: CALL Ri PP
; (Ri) := (BN) ; (BN) := PP .
За повратак из потпрограма потребна је такође посебна наредба облика: RET
Ri
D
; (BN) := (Ri) + D.
где је D број локација иза наредбе позива потпрограма намењених за пренос параматара, слика 13.3б. Зависно од тога који се регистар процесора користи за памћење повратне адресе разликујемо следеће случајеве: а) индексни регистар; б) посебан регистар за повратну адресу потпрограма; в) регистар опште намене. За случај под а) нема потребе да се уводи посебна наредба RET јер се за повратак може користити индексирање. У случају под б) у наредбама CALL и RET не постоји ознака регистра Ри јер се подразумева посебан регистар. За случај под в) потребно је да постоји општи договор о томе који се регистар опште намене користи за памћење повратне адресе. 2) Памћење повратне адресе у потпрограму Ова метода омогућава да се повратна адреса памти у самом потпрограму, и то у меморијској локацији са адресом PP. Извршење потпрограма почиње у том случају од наредбе потпрограма са адресом PP + 1. Dа би се ово могло остварити уводи се опет посебна наредба за прелаз на потпрограм облика: CALL
PP
;(PP) := (BN) ; (BN) := PP + 1.
За враћање у главни програм користи се индиректно адресирање а повратна адреса узима се из локације са адресом PP тако да није потребна посебна наредба RET.
314
3) Памћење повратне адресе у магацину (стеку) Погодна и најчешће коришћена метода за памћење повратне адресе је магацинска меморија. Наредбе CALL и RET имају облик: CALL Ri PP
; PUSH Ri ; (Ri) := (BN) ; (BN) := PP ,
RET
; (BN) := (Ri) ; POP Ri.
Ri
Ово решење посебно је погодно за организовање преноса параметара преко листе параметара смештене у област D иза наредбе позива потпрограма, слика 13.3б.
Пренос параметара потпрограма
Поред обезбеђења враћања из потпрограма други важан проблем при коришћењу потпрограма представља начин преноса параметара (полазних података) или неке информације о њима из главног програма у потпрограм и пренос резултата обраде или информација о њима из потпрограма у главни програм. Овај се проблем назива пренос параметара и овде га нећемо разматрати. Напоменимо само да се користе два начина за пренос параметара: 1) заједничка област у процесору, када се параметри налазе у неким регистрима централног процесора; 2) заједничка област у оперативној меморији, када се за параметре користе: а) посебно дефинисано, тзв. заједничко подручје у оперативној меморији, б) посебан меморијски блок са параметрима формиран у оквиру главног програма (тзв. листа параметара у главном програму) и в) листа параметара у меморијским локацијама непосредно иза наредбе позива потпрограма (област D на сл. 13.3б).
13.5. Улазно-излазне наредбе Улазно-излазне наредбе служе за пренос података из процесора на неки периферни уређај или са периферног уређаја у процесор, а такође и испитивање или постављање индикатора на периферним уређајима. Наредбе који-
315
ма се остварује улазно-излазни пренос називамо улазно-излазним наредбама. Улазном наредбом програмски се задаје извршење операције читања (уношења) података са неког периферног уређаја и његов упис у акумулатор или неки други регистар централног процесора, а понекад и истовремени упис у оперативну меморију. Излазном наредбом програмски се задаје извршење операције слања (памћења, складиштења) податка из акумулатора или неког другог регистра процесора на периферни уређај. За једноадресне рачунаре улазно-излазне наредбе имају облик: IN
dev
; Улаз (читање) у акумулатор податка са ; периферног уређаја са адресом дев,
OUT dev
; Слање податка из акумулатора на ; периферни уређај са адресом дев.
Постоје обично три функције које извршавају улазно-излазне наредбе: управљање периферијама, провера стања регистара периферија, управљање улазно-излазним преносом. При управљању периферијама доводи се периферни уређај у одређено стање или се саопштава коју функцију треба да обави, нпр. нови ред на штампачу. За сваки уређај постоји одређени скуп управљачких функција. Провером стања испитују се различити индикатори или подаци о стању спрежних кола (интерфејса), контролера или периферног уређаја. Тако нпр. пре слања података процесор мора проверити да ли је уређај укључен, да ли је спреман за рад и сл. При управљању улазом или излазом врши се програмски управљани пренос података у централни процесора или из централног процесора.
13.6. Остале наредбе У групи наредби под називом "Остале наредбе" укључене су различите наредбе које се не могу сврстати ни у једну од горе описаних група. Ми ћемо размотрити неке карактеристичне наредбе.
316
Наредба без дејства
Скоро сви процесори имају наредбу NOP (нема операције) чијим извршењем процесор троши један машински циклус и не обавља никакве друге управљачке активности. Облик наредбе: NOP
; Процесор не врши никаква дејства већ чека један ; машински циклус и прелази на следећу наредбу
Заустављање извршења програма
За заустављање извршења програма користе се наредбе HALT i WAIT облика: HALT
; Процесор прекида даље извршење програма. ; Рад процесора активира се даље са пулта;
WAIT
; Процесор прекида извршења програма и чека ; док не настане неки спољни или унутрашњи услов, ; када наставља даљи рад аутоматски.
Наредбом HALT завршава се извршење програма и понекад се преноси управљање на пулт машине, одакле се може ручно активирати нови програм. Наредбом WAIT чека се неки услов и аутоматски се наставља даље извршење програма када се тај услов испуни.
Децимална корекција
Aко процесор нема посебне наредбе за сабирање и одузимање бинарно кодираних децималних бројева, онда се за ову сврху могу користити аритметичке операције над бинарним бројевима. Међутим, овде је потребна још једна посебна наредба којом се врши децимална корекција у циљу добијања резултата у бинарно кодираном облику. Облик наредбе је следећи:
317
ADЈ
; Dецимална корекција садржаја AK.
Специјалне наредбе
Поред описаних наредби неки процесори поседују и разне наредбе које омогућавају директно програмирање специјалних операција. То су нпр. операција за манипулацију са битовима у акумулатору или неком другом регистру процесора или оперативној меморији, одређивање места прве или последње нуле у неком регистру, одређивање укупног броја јединица у неком регистру или меморијској локацији и слично. Срећу се чак и такве наредбе као што је посебна наредба за конверзију из једног кода у други и друге комплексне операције, као што је пренос групе сукцесивних меморијских локација (пренос меморијских блокова), тражење у неком меморијском блоку задате вредности, постављање константне вредности у свим локацијама меморијског блока и др.
318
14. УЛАЗ-ИЗЛАЗ
14.1. Улазно-излазни подсистем Улаз-излаз података представља процес преноса (трансфера) података између регистара централног процесора или оперативне меморије и уређаја ван њега који се називају периферни уређаји, улазно-излазни уређаји или периферије. Периферни уређаји представљају електронске или електромеханичке уређаје који непосредно извршавају функције улаза, излаза или улазаизлаза података помоћу разних носилаца, као и конверзију физичких сигнала у бинарни облик или обратно. Улаз-излаз се реализује помоћу посебног подсистема који се назива улазно-излазни подсистем рачунара чија је намена остваривање везе између рачунара и спољњег окружења. Под улазом (улазном активношћу) подразумева се процес уношења података у оперативну меморију или регистре процесора. Под излазом (излазном активношћу) подразумева се процес слања (издавања) података из регистара процесора или оперативне меморије на периферни уређај. При разматрању улазно-излазног подсистема рачунара значајне су следеће околности: – обично је на рачунар преко улазно-излазне магистрале истовремено прикључено више периферних уређаја, – периферни уређаји су најчешће електромеханички уређаји и њихов рад се разликује од начина извршења операција у процесору и оперативној меморији, – периферни уређаји су најчешће за неколико редова величине спорији у односу на процесор, па се јавља проблем синхронизације њиховог рада ради превазилажења разлике у брзини рада која постоји између централног процесора и периферија,
319
– због честе разлике у начину кодирања и форматима података у рачунару и ван њега, јавља се потреба конверзије података при одвијању улазно-излазне активноси. – управљање радом периферног уређаја треба тако организовати да не утиче на рад централног процесора или других периферних уређаја. За реализацију улаза-излаза рачунарски системи поседују посебне јединице за управљање преносом. Код мањих рачунара централни процесор управља директно улазно-излазним уређајима, док се код средњих и већих рачунара, ради уштеде времена централног процесора, користи једна или више специјализованих управљачких јединица - улазно - излазни процесори, који бирају путеве и управљају преносом док процесор остаје слободан да настави другу обраду паралелно са улазно-излазним преносом. Улазно-излазни процесор назива се и канал, контролер канала или јединица за управљање каналом, јер он управља и регулише токове података који се шаљу на периферне уређаје или се са њих уносе. Важне карактеристике улазно-излазне активности су још и: – брзина преноса, изражена бројем пренетих битова у секунди, – количина података који се одједном преносе (знак по знак, реч по реч, блок по блок, и сл.).
Начини преноса података
Зависно од односа броја линија и броја битова податка разлукују се серијски пренос и паралелни пренос. Зависно од тога да ли су тактни интервали предајног и пријемног уређаја независни или су синхронизовани (усклађени) говоримо о асинхроном и синхроном преносу. Код асинхроног преноса податак представља низ знакова који се преносе независно у произвољним временским тренуцима. Због тога се пријемник поново синхронизује на почетку сваког новог знака. Зато почетку сваког бинарно кодираног знака претходи један бит који означава његов почетак, тзв. старт бит, ради препознавања на пријемној страни почетка знака, и један или два бита који означавају крај знака, тзв. стоп битови. Синхрони пренос се користи при брзинама већим од 2000 bit/s. То је ефикаснији начин преноса којим се преносе блокови - групе узастопних података које се при преносу третирају као целина. Блок се преноси као поворка бито-
320
ва без кашњења између знакова и без старт и стоп битова. За ово је потребно да пријемник буде синхронизован са предајником и да се посебним управљачким знацима једнозначно дефинише почетак и крај сваког блока података. Овако припремљен блок назива се оквир или рам. Пренос се одвија на следећи начин. Дуж линије се шаље неколико управљачких SYNC знакова којима се синхронизују пријемник и предајник, затим знак почетка, чиме се отвара нови оквир, следе подаци и на крају знак за крај чиме се затвара оквир. У циљу контроле исправности преноса дуж телекомуникационе линије подацима се додају посебни контролни битови. Код асинхроног преноса сваки се знак посматра као одвојена јединица и у сваки од њих се додаје за контролу бит парности. Код синхроног преноса за контролу је потребан знатно већи број битова, обично битови цикличке редундантне контроле, који се израчунавају и стављају пре краја сваког оквира.
Спрезање улазно-излазних уређаја
Периферни уређаји спрежу се са централним или улазно-излазним процесором преко заједничке улазно-излазне магистрале. Типична шема размене информација између рачунара и периферних уређаја приказана је на сл. 14.1. Централни или улазно-излазни процесор
Оперативна меморија
Улазно-излазна магистрала Интерфејс (спрежна мрежа)
. . .
Контролер
Периферни уређај
Интерфејс (спрежна мрежа) Контролер
. . .
Периферни уређај
Слика 14.1 Улазно-излазни подсистем рачунара
321
Улазно-излазна магистрала, као и друге магистрале, садржи три групе линија: линије за податке, адресне линије и управљачке линије. Извршењем улазно-излазних наредби врши се размена података са периферним уређајем преко интерфејса. Интерфејс или спрежна мрежа представља скуп унифицираних путева, унифицираних сигнала, електронских кола и правила (алгоритама) којима се организује размена података. Сваки периферни уређај има свој контролер (адаптер). То је електронски управљачки блок који управља конкретним периферним уређајем тј. извршава специфичне за дати улазно-излазни уређај конверзије података и управљање механизмом уређаја. Тако нпр. контролер штампача управља померањем папира, временским односима при штампању, избором знакова итд. Контролер може бити реализован посебно или конструктивно обједињен са периферним уређајем. Код многих савремених улазно-излазних уређаја интерфејс је најчешће саставни део контролера, а осим тога на један контролер се може прикључити већи број периферних уређаја. Често један контролер може да управља већим бројем периферних уређаја.
Управљање улазно-излазним преносом
Контролер добија наредбе од централног процесора и извршава их обављајући захтевани пренос. Сваки периферни уређај има свој модул интерфејса који декодира наредбе доведене на улазно-излазну магистралу, интерпретира их и генерише сигнале за контролер. Осим тога, интерфејс синхронизује ток података и усаглашава брзину преноса између периферног уређаја и рачунара. Синхронизација улаза састоји се у томе што интерфејс добија податке брзином која одговара могућностима периферије, а шаље их у централни процесор по улазно-излазној магистрали знатно већом брзином. За синхронизацију излаза интерфејс добија податке са магистрале и памти их привремено у свом прихватном регистру. Затим се ови подаци преносе периферији брзином којом их она може прихватити. Интерфејс такође обезбеђује изолацију процесора од нежељених података са уређаја који у датом тренутку не учествују у преносу. За размену података са одређеним улазно-излазним уређајем централни или улазно-излазни процесор поставља адресу уређаја на адресне линије. У сваком модулу интерфејса прикљученом на магистралу постоји декодер адресе који стално надгледа адресне линије. При откривању своје адресе интерфејс активира путеве од магистрале до контролера периферије. При томе
322
сви периферни уређаји чије адресе не одговарају задатој адреси искључени су са магистрале. Истовремено са адресом централни или улазно-излазни процесор поставља на другу групу линија функционални код. Селектовани интерфејс декодира овај код и прелази на његово извршење. Функционални код понекад се назива и командна реч или команда и њу извршава интерфејс. За улазно-излазни пренос података између централног процесора и/или оперативне меморије и периферних уређаја користи се најчешће један од следећа три начина улазно-излазног преноса: 1) програмирани улаз-излаз 2) улаз-излаз управљан прекидом 3) директни приступ меморији.
14.2. Програмирани улаз-излаз Код овог начина улаза-излаза размена података између периферног уређаја и оперативне меморије обавља се преко неког регистра у процесору, нејчешће акумулатора. При томе се управљање остварује помоћу посебног програма који извршава процесор. Код програмираног улаза-излаза пренос података се обавља на иницијативу централног процесора који директно управља преносом помоћу посебног програма. Улазно-излазним наредбама испитује се, после постављања адресе (бирања уређаја) и управљачке информације, стање сваког периферног уређаја а затим се управља преносом. Код оваквог начина рада процесор потпуно управља преносом помоћу улазно-излазних наредби програма. Типично бирање се састоји од адресирања периферног уређаја и испитивања његовог стања. Програмирани пренос може бити безусловни и условни. Безусловни програмирани пренос користи се у случајевима када су периферни уређаји увек спремни за пренос, тј. имају спремне податке за улаз, нпр. претварачи, разни извршни органи и сл., или могу увек да прихвате излаз, нпр. екран. Код условног програмираног преноса у тзв. испитној петљи процесор проверава спремност периферног уређаја за пренос, и када је он спреман извршава програм за улаз-излаз. Условни програмирани пренос користи се само у случајевима када време чекања на спремност уређаја за пренос и време преноса ни-
323
су битни за коришћење (функционисање) система. На сл. 14.2а,б приказан је принцип реализације програмираног преноса.
Програм за улазно-излазни пренос а) Безусловни програмирани улаз-излаз
Чекање
не
Уређај спреман да
б) Условни програмирани улаз-излаз
Програм за улазно-излазни пренос
Слика 14.2 Програмирани улаз-излаз
Програмирани улаз-излаз има врло ниску продуктивност, али не захтева много додатних кола за спрегу нити посебно управљање. Међутим, програм поред чекања и самог преноса треба да извршава и низ додатних функција као што су конверзија типа и формата података, контрола исправности преноса и сл.
14.3 Улаз-излаз управљан прекидом Систем прекида
Редослед извршавања наредби у процесору може бити одређен на следеће начине: а) нормални (природни) редослед. Наредбе се извршавају редом како су смештене; б) гранање или прелаз на потпрограм. Прелази се на нову групу наредби; в) прекид програма (програмски прекид) или кратко прекид. Прекид нормалног извршења наредби због посебног узрока ван програма.
324
Прекиди се уводе из два разлога: 1) ради повећања продуктивности и поузданости рада процесора. Тако нпр. код хардверских отказа прекидом процесор прелази на посебан програм за обраду грешке, код технолошких процеса прекид служи да процесор ступи у управљачку акцију да не би морало да се организује стално надгледање стања процеса; 2) ради синхронизације рада процесора са независним активностима које се дешавају ван процесора. То су различите активности које захтевају да их опслужи процесор. Прекид представљља основни начин којим се спољни догађаји синхронишу са интерним програмом у процесору. Он се користи да се сигналише процесору да се десио неки догађај и да процесор треба да изврши програм који се односи на тај догађај. Прекидом се процесор принуђује на хитну акцију када је потребно неко брзо опслуживање. За реализацију прекида генеришу се посебни сигнали захтева за прекид или прекидни сигнали. Ови сигнали могу бити спољашњи прекидни сигнали, ако се генеришу ван процесора, и унутрашњи прекидни сигнали, ако се генеришу у самом процесору. Према извору прекида постоји и следећа подела: хардверски прекиди - прекиди засновани на прекидним сигналима, софтверски прекиди - прекиди које проузрокују специјалне наредбе у програму. Ако се прекиди могу програмски дозволити или забранити они се називају маскирани прекиди. Постоје и прекиди који се морају обавезно прихватити и називају се немаскирани прекиди. Типичан немаскирани прекид је прекид који се генерише при нестанку напајања процесора. Сигнал захтева за прекид генерише се при откривању грешака у обради или при настанку различитих непредвиђених критичних ситуација, нпр. неисправна кола. Такође се формира у случају када треба посветити пажњу спољним уређајима или неким спољним догађајима.
Принцип одвијања прекида
Извора прекидних сигнала обично има више и у односу на рад процесора ови сигнали настају случајно, тј. могу се појавити у било ком временском тренутку. Међутим, сви програми у процесору нису исте важности тако да програм од веће важности не сме бити прекинут од сигнала који захтева програм мање важности. Због тога се програмима додељују приоритети. Такође се
325
конфликтна ситуација која се јавља код једновременог настанка више прекидних сигнала решава увођењем система приоритета и посебног поступка за идентификацију извора захтева за прекид. Прекид програма представља пренос управљања у процесору од програма који се у датом моменту извршава (текућег програма) на други програм програм за опслуживање прекида или прекидни програм. Овај прелаз настаје као резултат посебног сигнала доведеног на процесор споља или изнутра. После завршетка програма за опслуживање прекида враћа се поново управљање прекинутом програму. На слици 14.3 приказан је принцип одвијања програмског прекида. Текући програм
Сигнал захтева за прекид Пренос управљања на прекидни програм
Враћање управљања у текући програм
Програм за опслужи вање прекида
Слика 14.3 Програмски прекид
Прекид се одвија на следећи начин. На крају фазе припреме сваке наредбе процесор испитује да ли постоји сигнал захтева за прекид. Када постоји захтев за прекид, а при томе су прекиди дозвољени или је у питању немаскирани прекид, прекида се извршавање текућег програма и прелази на захтевани програм за опслуживање прекида. После завршетка овог програма процесор наставља извршавање текућег програма. Да би наставак прекинутог текућег програма био исправан за то се морају обезбедити потребни услови. То подразумева да се садржаји неких важних регистара, а посебно бројача наредби, регистра услова, акумулатора и др., морају при прекиду програма сачувати и поново обновити при повратку на текући програм. Садржаји ових регистара чине меморију стања програма. То може бити или посебна регистарска меморија или дефинисано подручје у оперативној меморији.
326
Улазно-излазни пренос управљан прекидом
Овај начин улазно-излазног преноса отклања недостатак коришћења испитне петље код програмираног прекида. Улаз-излаз управљан прекидом одвија се на следећи начин. Централни процесор преноси управљачку информацију контролеру периферног уређаја а затим се од њега искључује и наставља паралелно да извршава неки други програм. Када периферни уређај заврши захтевану операцију он шаље процесору захтев за прекид да би саопштио о извршењу предвиђене радње. Процесор прихвата прекид и региструје стање периферног уређаја. Овај се поступак може описати на следећи начин: 1. Процесор селектује периферни уређај и одређује његово стање. Ако је уређај слободан прелази на тачку 2, ако није поступа онако како је специфицирано одговарајућим програмом; 2. Процесор сигналише периферном уређају да пређе на извршење жељене функције и саопштава потребне информације. Тиме уређај прелази у заузето стање; 3. Извршава се предвиђени улазно-излазни пренос; 4. Када се заврши тражени пренос контролер сигналише о томе централном процесору генерисањем прекидног сигнала; 5. Процесор доводи периферни уређај у слободно стање. Постоји и варијанта улаза-излаза управљаног прекидом када периферни уређај прекидом само саопштава да је слободан, а на основу тог прекида процесор прелази на програм који онда директно управља улазним или излазним преносом.
14.4. Директни приступ меморији Код програмски управљаног улаза-излаза ефикасност коришћења процесора се јако смањује када треба вршити пренос блокова података између већег броја локација оперативне меморије и периферних уређаја. Овај се недостатак отклања увођењем паралелизма у раду процесора с једне стране и контролера (адаптера) периферног уређаја, с друге стране. То се постиже тако што више периферних уређаја имају могуђност приступа оперативној ме-
327
морији помоћу посебног система који се назива директни приступ меморији или DMA пренос (од енгл. DMA – Direct memory Access - директни приступ меморији). Путеви реализације преноса код програмираног улаза-излаза приказани су на слици 14.4а, а општи начин спрезања код директног приступа меморији приказан је на слици 14.4б.
Оперативна меморија
Централни процесор
Контролер
Периферни уређај
а) Програмирани улаз-излаз
Магистрала
Оперативна меморија
Централни процесор
DMA контролер
Сигнал захтева магистрале
Периферни уређај
...
Периферни уређај
б) Директни приступ меморији Слика 14.4 Путеви код програмираног иDMA преноса
Директни приступ меморији је начин рада система који омогућава да брзи улазно-излазни уређаји директно комуницирају са оперативном меморијом не ометајући нормални рад централног процесора. Њиме се постиже највећа могућа брзина улазно-излазног преноса. За реализацију директног приступа меморији мора постојати ван процесора посебан контролер, тзв. DMA контролер или контролер директног приступа меморији који представља неку врсту специјализованог процесора реализованог хардверски као посебно коло високог степена интеграције због потребне брзине рада. За реализацију директног приступа меморији потребно је да се да предност у коришћењу магистрале DMA контролеру. Тиме се омогућава директно повезивање оперативне меморије и DMA контролера, а за то време се одлаже извршење програма. Комуникација између оперативне меморије и неког DMA контролера врши се по методу позајмљивања циклуса (закидања циклуса) централном процесору ради преноса једне машинске речи. Увек када истовремено и DMA контролер и процесор треба да приступе меморији настаје конфликтна ситуација у којој приоритет има DMA контролер. Фактички се
328
због спорости периферија процесору само повремено спречава приступ меморији тако да то не утиче битно на ефикасност рада самог процесора. DMA контролер је потчињен централном процесору који иницира и завршава пренос, одређује посао који треба обавити као и шта треба урадити у неким ненормалним ситуацијама активности контролера. Директни приступ меморији одвија се на следећи начин. DMA контролер формира посебан улазни сигнал за процесор који се назива сигнал захтева за коришћење магистрале којим се захтева директни приступ меморији. Када на крају фазе извршења текуће наредбе процесор утврди постојање тог сигнала он прелази у посебно стање у коме чека и потврђује прихватање DMA захтева. DMA контролер добија право коришћења магистрале, остварује директну спрегу и управља преносом између оперативне меморије и периферног уређаја. На крају наложеног преноса DMA контролер сигналом захтева за прекид обавештава процесор да је завршио пренос целог блока података, после чега процесор наставља привремено прекинуто извршење програма. Сам DMA контролер садржи одређени додатни хардвер. Пре свега мора имати адресни регистар којим се врши адресирање оперативне меморије при улазно-излазном преносу. Како је често потребно пренети блок сукцесивних меморијских локација адресни регистар треба да буде бројачког типа. Осим тога, хардвер у DMA контролеру треба да дефинише крај директног приступа меморији. У ту сврху се уводи посебан регистар - регистар дужине блока. На почетку преноса у овај се регистар поставља број локација меморијског блока и тај се садржај смањује при сваком приступу меморији. Директни приступ меморији служи за брзи пренос података. Типичне примере коришћења представљају преноси са диск јединицама, екранима, брзим претварачима, а такође и пренос између два процесора.
14.5. Улазно-излазни процесори Уместо да се комуницарање централног процесора са периферним уређајем врши директно, код средњих и већих рачунара због великог броја периферних уређаја постоји један или више специјализованих процесора који се називају улазно-излазни процесори или канали. Њихов је задатак размена података са свим улазно-излазним уређајима као и директни приступ меморији.
329
Ови процесори раде аутономно и паралелно са централним процесором. На основу посебних наредби које добијају од централног процесора, улазно-излазни процесори остварују пренос група података између периферног уређаја и оперативне меморије. Преко система прекида улазно-излазни процесор извештава централни процесор о завршетку захтеваног преноса. Улазно-излазни процесор може подржавати рад више канала од којих неки служе за пренос са брзим периферијама и зову се селекторски канали, док други раде у временском мултиплексу са више спорих периферних уређаја и називају се милтиплексорски канали.
14.6. Улазни уређаји Улазни уређаји служе за уношење података у рачунар (централну јединицу, оперативну меморију или секундарну меморију). Према начину уношења података сви улазни уређаји могу се сврстати у две групе: 1) уређаје за ручно уношење, 2) уређаје за аутоматско уношење.
Уређаји за ручно уношење
У групу уређаја са ручним уношењем спадају: управљачки пулт рачунара, тастатура, миш, светлосно перо, командна палица и др. Ручно уношење је доста споро а користи се када обим података није велики. Управљчки пулт или конзола је уређај који садржи таблу са тастерима, разним прекидачима и индикаторима. Служи за уношење команди или података за иницијализацију рачунара. Тастатура представља низ тастера који када се притисну производе у рачунару бинарни код притиснутог знака. Тастатуром се просечно уносе два знака у секунди због чега се она не користи за уношење података код већих рачунара, сем неких ретких догађаја. Међутим, код мањих рачунара тастатура представња примарни улазни уређај за уношење и програма и података.
330
Миш представља тзв. показивачки уређај који се руком покреће по равној површини. Ови покрети се преносе у рачунар и узрокују кретање курсора на екрану. Миш се користи пре свега за селекцију команди из менија или за избор иконе и активирање одређене команде. Командна палица је улазни уређај у облику ручице која генерише сигнале за брзо кретање курсора или неког другог симбола по видео екрану. Користи се најчешће за управљање разним објектима у видео играма.
Уређаји за аутоматско уношење
Уређаји за аутоматско уношење података могу се поделити на уређаје са непосредним уношењем и уређаје са посредним уношењем. Код непосредног уношења подаци се уносе непосредно у рачунар. Код посредног уношења улазној активности претходи прикупљање (обухватање) података. Прикупљање података се састоји у записивању података на посебним носиоцима, најчешће на магентној траци или диску, док су некада коришћене бушене картице и бушене траке. Уређаји за аутоматско непосредно уношење могу да читају податке са посебних образаца (формулара), затим штампани текст и графичке податке (цртеже, слике). Ради се на развоју уређаја који би могли читати рукописни текст и препознавати глас (говор). У ову групу уређаја спадају и аналогно-дигитални конвертори, уређаји за пријем података са телекомуникационих линија и други. Код масовних обрада, где је обим података значајан, креирани су обрасци који могу служити и као оригинални документи и истовремено као носици улазних података, са којих се уношење може вршити аутоматски помоћу посебних уређаја за читање. Зато говоримо о машински читљивим документима, који могу бити: а) обрасци са маркирањем, б) обрасци са магнетским писмом, в) обрасци са оптичким писмом. Читачи маркираних образаца или оптички читачи маркера намењени су за детекцију присуства или одсуства маркера (ознаке) на свакој дозвољеној позицији на документу. Ознаке се могу писане руком, куцане на писаћој машини, штампани и сл.
331
Код докумената који за представљање знакова користе тзв. магнетно мастило, у мастило или боју је стављен феромагнетни материјал. Штампани документ се пропушта испод главе за читање где се врши детекција написаних знакова и њихова конверзија у бинарни код. Уређаји за читање докумената са магнетним писмом називају се читачи докумената са магнетним мастилом. Ако резултате електронске обраде треба исписати на носиоце са којих је поново потребно прочитати записане резултате, употребљавају се посебно стилизована писма која су оптички читљива и за човека и за машину. Уређаји за читање називају се читачи докумената са оптички читљивим знацима или уређаји за оптичко препознавање знакова. Користе се два стандардизована писма OCR A и OCR B чији су знаци оптимизовани за машинско препознавање. Уређаји за оптичко читање пругастог кода користе ласерски зрак за читање ознака са пругастим кодом, а могу бити у једном од следећа два облика: а) као оловка којом се чита ознака, б) у облику прореза изнад кога се превлачи ознака. Скенер (или сканер ) је улазни уређај који служи за оптичко читање и дискретизацију слика или цртежа и њихово уношење у меморију рачунара. Користи се при уношењу и обради слика помоћу рачунара. Графичка табла или дигитализатор представља равну површину која заједно са посебним пером служи за дигитализацију и уношење графичких података у рачунарски графички систем, нпр. мапа, тхеничких цртежа и сл. Напоменимо да улазни документи могу бити записани и на неком меморијском медијуму. Примере представљају преносни терминали за унос података очитавања струјомера, водомера и сл.
14.7. Излазни уређаји Излаз резултата обраде, тј. издавање података из рачунара може имати следеће сврхе: 1) привремено памћење на машински читљивим носиоцима, 2) саопштавање или приказ крајњих резултата обраде, 3) непосредно коришћење.
332
Привремено запамћени подаци намењени су за неку другу, обично временски каснију обраду. Као медијуми се користе пре свега магнетни носиоци, док су некада коришћене бушене траке и картице. Крајње резултате обраде рачунар саопштава човеку - кориснику припремом разних извештаја у штампаном облику, приказом на екрану у облику текста или графичких података или припремом цртежа на уређају за цртање (цртачу). Резултати обраде обично служе кориснику да на основу њих може доносити одлуке. То су најчешће информације потребне кориснику. Подаци за непосредно коришћење су излазни резултати који се без посредовања човека користе за даљински пренос, или за аутоматско предузимање акција, нпр. код непосредног управљања процесима, укључивања и искључивања одређених извршних уређаја и сл. У многим случајевима непосредног управљања предвиђена је и могућност да човек има приступ излазним подацима, због контроле или због предузимања одређених хитних акција у случају хаварије и др. Видео екран служи за приказ текста и евентуално графичких података. Заједно са тастатуром, мишем и светлосним пером екран представља данас најбоље средство за непосредну комуникацију човека и рачунара. На тај начин екран служи не само као излазни већ и као улазни уређај. За знатно прецизнији приказ графичких података, нпр. у системима за аутоматско пројектовање, користе се графички видео екрани. На њима се слике формирају од векторски или растерски запамћених графичких података. Матрични или сегментни пано (информациона табла) представља екран у облику равне плоче намењен за приказ текстуалних и графичких података са већим димензијама и за већи број корисника. За формирање знакова користе се обично електролуминесцентни елементи, светлећи елементи или светлеће диоде. Уређаји који се користе за припрему извештаја су најчешће штампачи али се могу користити и микрофилмски уређаји (нарочито за архивирање), координатни цртачи (плотери) и други излазни уређаји.
Штампачи
Најпростији начин коришћења штампача је његово непосредно прикључење на централни процесор који директно управља штампањем. Међутим, због бољег искоришћења времена централног процесора, код многих рачунарских
333
система подаци за штампање се најпре смештају у неку секундарну меморију, а затим се на основу захтева процесора штампају на штампачу којим управља неки специјализован процесор, обично улазно-излазни процесор. Основна подела штампача је на серијске, паралелне и страничне. Серијски штампачи штампају знак по знак у сваком реду, док паралелни штампају цео ред знакова. Савремени ласерски штампачи припремају а затим штампају целу страницу одједном, и зато кажемо да су то странични штампачи. Брзина серијских штампача креће се од 30 до 300 знакова у минути, а паралелних од 150 до 2500 редова у минути. Број знакова у реду варира од 60 до 160, а најчешће је 60 - 70 знакова за А4 формат папира и 120 -136 знакова за папир ширине 14 инча (35,6 cm). Брзина ласерских штампача износи до десетак страница у минути. Папир се у штампач може уводити на два начина: лист по лист или на тзв. бескрајном формулару. Према начину штампања штампачи се могу поделити у две групе: а) електромеханички штампачи, б) штампачи са немеханичким начином штампања. Паралелни електромеханички штампачи се деле на штампаче са добошем (ваљком) и штампаче са ланцем. Серијски електромеханички штампачи могу бита са полугама (електричне писаће машине), главом за штампање, лепезом и матрични (игличасти). Од штампача са немеханичким начином штампања користе се: фотоштампачи, термички штампачи, електростатички штампачи, ксерографски штампачи, штампачи са убризгавањем мастила и ласерски штампачи.
Уређаји за излаз на микрофилм
На миркофилм се преносе подаци директно из меморије рачунара помоћу специјалних уређаја, тзв. COM уређаја (енгл. COM - Computer Output to Microfilm/Microfiche – рачунарски излаз на микрофилм/микрофиш). Слика се при томе формира помоћу ласерског зрака. Микрофилм се користи у облику микрофилмских картица (микрофишева), димензија 9,8 × 14,7 cm са умањењем од обично 48 пута. На једној микрофилмској картици може стати до 300 страница текста. Микрофилм се такође користи и у ролнама и касетама. Микрофилм служи најчешће за архивско чување докумената.
334
Основне одлике микрофилма су: компактност (мали простор), велика излазна брзина, репродукција текста и графичких података, нижа цена од магнетних медијума, трајност чувања података, лакше одржавање снимака, може бити у машински читљивом облику. Постоје посебни уређаји за читање микрофилма, тзв. микрофилмски читачи, који могу имати и додатни уређај за директно штампање (копирање) података са микрофилма или микрофиша на папир.
Други излазни уређаји
Цртачи су излазни уређаји који служе за представљање на папиру цртежа, дигитализованих слика и текста. Постоје различита техничка решења цртача прилагођена разним потребама. Основни параметри су: – тачност, растојање тачака на цртежу, – резолуција, број тачака које се могу разликовати на јединици дужине. Постоје две основне врсте цртача: цртач са равном подлогом и цртач са добошем. Код јединица за говорни излаз које се кориснику обраћају људским гласом разликујемо случајеве када ја људски глас претходно снимљен и случајеве када се на основу бинарног кода текста врши синтеза гласа ради саопштавања кориснику порука или података.
14.8. Даљински улаз-излаз Периферна опрема може бити смештена релативно близу рачунара или пак удаљена од њега на већем географском растојању. Због тога постоје различита средства и поступци за повезивање те опреме. Измена података у "локалу" врши се обично паралелно преко магистрала или локалних рачунарских мрежа јер је пренос знатно бржи. За пренос на веће даљине користи се серијски пренос преко телекомуникационих канала и онда се говори о даљинском приступу. Уређаји који се користе за даљински приступ су терминали или радне станице, али то може бити и персонални или други рачунар.
335
Терминал се на телекомуникациону линију прикључује преко уређаја који се назива модем (скраћеница од модулатор - демодулатор), који на предајној страни бинарне сигнале поступком који се назива модулација претвара у аналогне сигнале којима се врши пренос, док на пријемној страни врши обратно претварање, тј. демодулацију. Модеми су неопходни да би се преко аналогних телефонских канала могли преносити дигитални подаци. Осим модулације и демодулације модеми усклађују предају и пријем података. За даљински приступ користе се пре свега тзв. интерактивни видео терминали. То су терминали који имају тастатуру и екран, а често и серијски штампач. Улогу оваквих терминала данас имају и персонални рачунари снабдевени посебном плочом електронике (картицом) и програмима за даљинско успостављање везе и управљање преносом. Ако терминал поред функција улаза и излаза података има и могућност самосталне локалне обраде података он се понекад назива интелигентни терминал. За даљински пренос података могу се користити све врсте телекомуникационих канала (пар проводника, високофреквентни канали, радио-релејни канали, оптички каблови и сателитски канали). Основна карактеристика ових канала је брзина преноса изражена бројем пренетих битова у секунди. Када на удаљеној локацији има више терминала уместо непосредне спреге сваког посебно користи се тзв. посредна спрега преко посебних удаљених спрежних уређаја који могу бити: мултиплексер, концентратор или комутациони центар. Мултиплексер остварује повезивање терминала са рачунаром по методу временског мултиплекса (временске поделе), када се веза остварује у једном додељеном временском интервалу. Концентратор је такав уређај на који се прикључује више терминала, а у датом времену може саобраћати само са једним од њих. У случају када од терминала постоји више једновремених захтева за повезивање образују се редови чекања на опслуживање, обично по систему приоритета или по времену пристизања захтева. Постоје и концентратори који раде на принципу памћења и прослеђивања порука. У том случају док се једна веза одржава концентратор меморише нове поруке да би их проследио када се ослободи преносни пут према рачунару. Комутациони центри, слично као у телефонији, користе се знатно ређе и то када је број терминала врло велики. За даљинско повезивање данас се могу користити и телекомуникационе мреже за тзв. пакетни пренос података. Већи рачунари за даљински пренос користе посебне специјализоване процесоре који се називају комуникациони процесори. Они су намењени за пријем и слање података од удаљених терминала или других уређаја прикључених преко телефонских или других телекомуникационих линија. Разлика изме-
336
ђу улазно-излазног и телекомуникационог процесора је у начину повезивања улазно-излазних уређаја. Док је улазно-излазни процесор повезан са периферним уређајима заједничком улазно-излазном магистралом преко које се врши паралелни пренос, комуникациони процесор је повезан са сваким терминалом или удаљеним спрежним уређајем телекомуникационим каналом. При томе се подаци и управљачке информације преносе серијски, што значи да је брзина преноса знатно мања.
337
15. СОФТВЕР РАЧУНАРА
15.1. Хардвер и софтвер рачунарских система Рачунарски систем је комбинација хардвера и софтвера, слика 15.1а. Хардвер (техничка подршка, машинска опрема) се односи на опрему која представља физичке компоненте било ког система који обавља одређене функције. Хардвер обухвата електричне, електронске, електромеханичке и механичке компоненте рачунара. Термин софтвер или програмска подршка користи се за оне компоненте рачунарског система које нису физичке. У најопштијем значењу термин софтвер, насупрот термину хардвер, означава све програме који се могу користити на неком рачунарском систему. Основна подела софтвера дата је на слици 15.1б. Термин системски софтвер се примењује на све програме који на неки начин могу помоћи свим корисницима одређеног типа рачунара да боље користе рачунар. Апликациони софтвер, за разлику од системског софтвера, садржи програме намењене за решавање проблема корисника.
Рачунар = хардвер + софтвер а) Компоненте рачунара
Софтвер ( програмска подршка) – Системски софтвер – Апликациони софтвер б) Подела софтвера
Слика 15.1 Основне компоненте рачунара
338
15.2. Системски софтвер Системски софтвер садржи програме који се односе на организацију и управљање радом рачунарског система и аутоматизацију процеса развоја и одржавања програма. Ови се програми називају и управљачки програми. Компоненте које улазе у системски софтвер су: оперативни систем, програмски систем, комуникациони софтвер, систем за управљање базама података и софтвер за рачунарску графику, слика 15.2а. Понекад се овде сврставају и програми техничке подршке који садрже: а) тест програме за периодичну превентивну проверу правилног функционисања блокова, јединица, уређаја и рачунара у целини, и б) дијагностичке програме којима се локализују места неисправности.
Системски софтвер – – – –
Комуникациони софтвер
Оперативни систем Програмски (развојни) систем Комуникациони софтвер Систем за управљање базама података – Софтвер за рачунарску графику – Програми техничке подршке а) Подела системског софтвера
– – – – –
Комуникациони монитор Руковалац протокола Мрежни контролер Подршка удаљених терминала Конверзациони монитор
б) Подела комуникационог софтвера
Слика 15.2 Компоненте системског и комуникационог софтвера
Програмирање које обухвата пројектовање, реализацију и одржавање системских програма, тј. програма који обезбеђују услове за коришћење рачунара, назива се системско програмирање. Насупрот системском стоји апликационо програмирање чија је суштина у пројектовању, реализацији и одржавању програма који служе за решење конкретних проблема корисника. Прве две компоненте системског софтвера, тј. оперативни систем и програмски систем биће касније детаљније размотрене.
339
Комуникациони софтвер
Комуникациони софтвер садржи програме чија је функција управљање комуникацијом рачунара са удаљеним терминалима или другим рачунарима. Основне компоненте комуникационог софтвера приказане су на слици 15.2б. Основни задатак комуникационог софтвера је пре свега управљање функционисањем и комуникацијом свих уређаја повезаних у рачунарску мрежу, а посебно: управљање узајамним деловањем процеса у мрежи, управљање самом мрежом, управљање мрежним службама. Прва и трећа група задатака управљања карактеристична је за било које мреже, док је друга група карактеристична за дистрибуиране системе.
Систем за управљање базама података
Системски софтвер који обезбеђује рад са базама података назива се систем за управљање базама података. Настао је као резултат развоја система за рад са датотекама као дела сваког оперативног система који је обезбеђивао складиштење (меморисање) датотека на спољним носиоцима и приступ записима датотека. Систем за управљање базама података намењен је за опис података у бази, управљање подацима и манипулацију (рад) са подацима. Систем за управљање базама података обезбеђује: креирање и вођење базе података, централизовано управљање подацима, смањење редундансе података, могућност отклањања противречности, целовитост базе података, заједничко коришћење података из различитих база података, приступ подацима из различитих корисничких програма, независност података. Он такође садржи средства за дефинисање шеме базе података и операције које се могу користити за трансформацију базе података. За реализацију приступа бази података формира се опис базе података који се састоји од: а) начина на који је база податка смештена на дисковима, б) начина приступа бази података, в) описа базе података онако како је види апликациони програм, г) идентификације података којима програм може да приступа,
340
д) скупа дозвољених операција над подацима. Као минимум сваки систем за управљање базама података садржи следеће три компоненте: језик за опис података (енгл. DDL - Data Definition Language), језик за манипулацију (рад) са подацима (енг. DML - Data Manipulation Language) и специјална програмска средства.
Софтвер за рачунарску графику
Имајући у виду природу података, као и њихову количину, највећа ефикасност у комуницирању између човека и рачунара постиже се коришћењем слике или цртежа као носиоца информација, односно коришћењем рачунарске графике. Ова ефикасност посебно долази до изражаја у пројектовању помоћу рачунара. Рачунарска графика је део системског софтвера који служи за цртање слика и приказивање графичких података. Садржи методе за унос, обраду (трансформацију и едитовање) и приказ графичких објеката (слика и цртежа) помоћу рачунара. Ако се графичка информација може мењати као одговор на улазе који долазе од оператера са терминала говори се о интерактивној рачунарској графици. Међу погодне улазне уређаје за унос графичких података спадају миш, графичка табла (дигитализатор) и светлосно перо. Излаз се може дати преко стандардног алфанумеричког или графичког видео терминала или као трајан запис преко штампача или цртача. Основне функције програма за рачунарску графику су: рад са алфанумеричким или графичким екранима, графичке методе приступа, графичко програмирање, коришћење екрана као конзоле. Рачунарска графика се примењује у многим областима. Најчешће примене су: програмирање интерфејса са корисником, припрема разних цртежа, конструисање у машинству, конструисање интегрисаних и штампаних кола, конструисање у грађевинарству, израда мапа и урбанистичких планова, израда и контрола управљачких трака за нумерички управљане машине, издаваштво (професионално и стоно), и др.
341
15.3 Режими рада рачунарских система Програми се у процесору рачунара могу извршавати на неколико различитих начина које називамо режими обраде или режими рада. Пре свега постоје једнопрограмски и вишепрограмски (мултипрограмски) режим рада и паралелна обрада (мултипроцесирање), слика 15.3а. У једнопрограмском или монопрограмском режиму у оперативној меморији рачунара налази се само један програм који се извршава од почетка до краја. Рачунар у овом режиму опслужује кориснике на два начина: а) појединачна обрада (индивидуално опслуживање), б) пакетна обрада (индиректно опслуживање), слика 15.3б.
Режими рада – Једнопрограмска обрада( монопрограмска обрада ) – Вишепрограмска обрада( мултипрограмска обрада ) – Паралелна обрада( мултипроцесирање ) а) Основни режими рада
Једнопрограмска обрада – Појединачна обрада ( индивидуално опслуживање ) – Пакетна обрада( индиректно опслуживање ) б) Једнопрограмска обрада
Вишепрограмска обрада – – – –
Обрада са поделом времена Рад у реалном времену Даљинска обрада Дистринуирана обрада
в) Вишепрограмска обрада
Обрада са поделом времена – Режим дијалога (интерактивни режим) – Трансакциони режим – Универзални режим г ) Режими опслуживања при подели времена
Слика 15.3 Режими рада рачунарских система
Код појединачне обраде рачунар је у процесу решавања проблема у потпуности на располагању једном кориснику. Корисник сам добија на располагање рачунар и приступа решавању свог проблема. Овакво опслуживање корисника било је у првој генерацији и добрим делом у другој генерацији рачунара, а данас се користи код персоналних рачунара.
342
Код пакетне обраде корисник нема непосредан приступ рачунарском систему. Припремљени програми и подаци предају се оператеру рачунара који их уноси у спољну меморију где се формира редослед извршавања програма или пак корисник са свог терминала смешта програме и податке на диск. Рачунарски систем у складу са предвиђеним редоследом извршава пакет програма формиран на диску и то тако да у једном тренутку обрађује само један програм док се остали програми налазе у стању чекања. Резултати обраде памте се на диску да би се проследили кориснику у тренутку када се ослободе излазне јединице (нпр. штампач) или када се ослободи терминал.
Вишепрограмски режим рада (мултипрограмирање)
Из претходног разматрања се види да до губитка времена процесора долази зато што се у меморији рачунара налази само један програм и што време процесора у току принудног чекања није могуће користити за извршавање неке друге активности. Према томе, очигледан правац у побољшању искоришћења процесора (а не само процесора већ и оперативне меморије) представља развој таквог система који ће омогућити да се у оперативну меморију смести истовремено више програма како би се омогућила конкурентна ("паралелна") обрада више програма. Тако је дошло до развоја вишепрограмског (мултипрограмског) начина рада рачунарских система, слика 15.3в. Треба одмах рећи да, као и у случају једнопрограмског начина рада, и код вишепрограмског начина рада процесор ради строго серијски извршавајући наредбу по наредбу. Кад се говори о конкурентном извршавању програма овде се има у виду да после извршавања дела једног програма процесор прелази на извршење дела другог програма, затим следећег, итд., задржавајући при томе потребне информације за могућност повратка и настављање обраде једног од претходних програма. Овај начин обраде обезбеђује значајно повећање свеукупне ефикасности процесора, мада је обрада појединачних програма по правилу дужа него код једнопрограмских рачунара. Пакетна обрада се може организовати и код вишепрограмског режима рада, у ком случају се говори о вишепрограмском систему са пакетном обрадом.
343
Паралелна обрада
Систем који садржи већи број процесора и сви они могу учествовати истовремено у решавању једног истог проблема назива се вишепроцесорски рачунарски систем, мултипроцесор или паралелни рачунар. При томе се вишепроцесорским системом не сматра систем чији додатни процесори служе само за помоћне, рецимо улазно-излазне или телекомуникационе активности. Обрада на оваквим системима назива се паралелна обрада или мултипроцесирање.
Обрада са поделом времена
Подела времена представља такво распоређивање задатака (процеса) где је задатку дозвољено да се извршава током унапред дефинисаног периода времена, пре поновног распоређивања. У подели времена више корисника истовремено приступа рачунару. Због релативно брзог одзива система сваки корисник има утисак да ради сам са рачунаром. Ова истовремност претпоставља да: 1) Сваки корисник поседује сопствене уређаје за приступ рачунару, 2) При истовременом приступу више корисника рачунар мора да се понаша, са тачке гледишта корисника, на исти начин као и при индивидуалном опслуживању. За опслуживање у подели времена користе се вишепрограмски системи. Они захтевају додатни хардвер који омогућава интеракцију корисника и рачунара. Разликују се три основна режима опслуживања корисника у подели времена, слика 15.3г: 1) Режим дијалога (интерактивни режим), 2) Трансакциони режим, 3) Универзални режим. У режиму дијалога корисник са свог терминала има директан приступ рачунарском систему и може поставити један или више упита. Када се на једном од терминала генерише упит оперативни систем прекида извршење текућег програма и у меморију позива програм намењен за обраду упита. Код тран-
344
сакционе обраде врши се расподела рачунарских ресурса између одређеног броја удаљених корисника који преко сопствених терминала директно приступају рачунарском систему. Рачунарски систем са радом у универзалном режиму поседује могућности рада у било ком од напред описаних режима.
Рад у реалном времену
Рачунарски систем који произведе излаз за унапред задато време назива се систем реалног времена. То значи да је размак између улазног времена захтева за обрадом и излазног времена те обраде значајно и мора бити довољно мало да одзив буде правовремен. Пример рада у реалном времену чине системи за управљање технолошким процесима или системи за управљање пројектилима. Системима реалног времена се најчешће сматрају они системи код којих се време одзива мери милисекундама док се системима који раде у режиму дијалога сматрају системи у којима се време одзива мери секундама.
Даљинска обрада
Уколико се за приступ рачунару користи даљински улаз-излаз тада се говори о даљинској обради. На процесор је пре свега везан већи број удаљених терминала, персоналних рачунара или радних станица који се прикључују преко телекомуникационих линија. Посредством модема са удаљених уређаја се шаљу у рачунар команде и подаци, а на основу примљених команди и података рачунар враћа излазне резултате.
Дистрибуирана обрада
Концепт дистибуиране обраде има више различитих варијанти. Ако се ради о јединственој конфигурацији рачунарског система коришћење посебних процесора за улаз-излаз, комуникације и др. понекад се сматрати једном врстом дистрибуиране обраде јер сви процесори у конфигурацији паралелно (истовремено) учествују у решавању једног проблема. У овом случају се каже да су процесори "чврсто спрегнути".
345
Други облик дистрибуиране обраде јесте коришћење процесних елемената који су физички одвојени и слабије спрегнути, при чему ови елементи делују као полуаутоматске јединице. Типичан пример овакве обраде представља коришћење интелигентних терминала и удаљених подсистема за управљање у индустрији. Овде терминали за интелигентно прикупљање података, подсистеми за управљање процесима и други процесни елементи могу бити расподељени по територији фабрике. Одређена ограничена обрада врши се на удаљеним јединицама док се сумарни резултати преносе главном рачунару преко преносних линија. У општем случају обрада се назива дистрибуирана обрада или расподељена обрада ако се врши у систему у коме је повезно више међусобно независних рачунара који могу да сарађују. То су тзв. дистрибуирани рачунарски системи. У сваком рачунару дистрибуираног система врши се локална обрада, а преко телекомуникационих линија међусобно се размењују подаци који су од утицаја на обраде на више рачунара. За прецизнији опис дистрибуираних система користи се приступ преко дефинисања неких општих особина. Основна одлика дистрибуираних система састоји се у томе да различити елементи система могу бити расподељени на одвојене делове у којима је сконцентрисан строго дефинисан посебан део процедуре обраде података и самих података. За опис концепције корисно је навести следеће карактеристике дистрибуиране обраде: мноштво рачунарских уређаја, целовитост (јединство) система, електрична повезаност система, високи ниво узајамног деловања између елемената система. Ако је већи врој терминала и рачунара повезан телекомуникационим каналима они чине систем који се назива рачунарска мрежа. Обрада у рачунарској мрежи представља проширење концепта дистрибуиране обраде. О рачунарским мрежама ће бити речи у наредном поглављу.
15.4. Оперативни систем Оперативни систем представља скуп програма којима се организује рад рачунара, ефикасно коришћење свих ресурса рачунара, као и управљање извршењем рачунарских програма. Оперативни систем је део системског софтвера који је најближи хардверу рачунара. Он представља основну помоћ у организацији рада и ефикасном коришћењу хардвера. Сви програми оперативног система могу се поделити у три релативно независне целине приказане
346
на слици 15.4а. Даље се свака од ових целина према функцијама дели на начин приказан на слици 15.4б,в,г. Скуп програма којима се решава неки проблем корисника организује се као посебна целина и назива се посао. Посао представља основну јединицу са којом манипулише оперативни систем. При планирању оперативни систем од послова образује посебне мање радне целине - задатке или процесе. Сваки задатак може независно конкурисати за добијање било ког ресурса рачунара. О сваком задатку оперативни систем поседује и води одређене управљачке информације.
Оперативни систем
Управљање задацима
– Управљање пословима – Управљање задацима (супервизор ) – Управљање подацима (улазно-излазни систем)
Управљање прекидима Управљање временом процесора Управљање опер. меморијом Синхронизација и опслуживање задатака – Организација службе времена – Управљање ванредним догађајима – – – –
а) Компоненте оперативног система
в) Функције управљања задацима
Управљање пословима – – – – – –
Управљање подацима
Планирање послова Интерпретација команди Додељивање ресурса Управљање излазом Комуникација са оператером Вођење системског дневника
б) Функције управљања пословима
– Управљање периферијама – Управљање датотекама – Управљање додељивањем секундарне меморије – Служба каталога ( именика) – Обрада улазно-излазних отказа г) Функције управљања подацима
Слика 15.4 Компоненте и функције оперативнопг система
Постоји велики број оперативних система од којих су посебно раширени оперативни системи за персоналне рачунаре и радне станице, као што су: DOS, WINDOWS, OS/2, UNIX и други.
347
Ресурси рачунарског система
Једна од најважнијих функција оперативног система јесте управљање ресурсима рачунарског система. Управљање ресурсима има утицаја на структуру скоро свих компонената оперативног система. Рачунарски систем поседује пре свега следеће ресурсе: време централног процесора, оперативна меморија, улазно-излазни уређаји, датотеке и софтвер (програми). Управљање ресурсима састоји се у додељивању тих ресурса програмима који конкуришу за њихово добијање. Овде улазе распоређивање задатака (процеса), додељивање оперативне меморије, додељивање улазноизлазних уређаја и управљање коришћењем програмских ресурса. Наиме, потреба за управљањем јавља се због конкуренције за добијање ресурса. Програми конкуришу за добијање времена централног процесора, за коришћење појединих улазно-излазних уређаја, а такође за добијање оперативне и спољне (секундарне) меморије. Критеријум за оцену квалитета управљања ресурсима је ефикасност коришћења расположивих ресурса, приоритет задатака који конкуришу, захтеви за временом реакције код рада у реалном времену, као и логичка усаглашеност решења. Време централног процесора расподељује се међу различитим супарничким програмима прекључивањем (пребацивањем) задатака према одређеним правилима. Тако нпр. када је потребно учитати нове податке текући задатак се зауставља да сачека улазно-излазни пренос, а процесор се додељује другом задатку. Оперативни систем и у другим ситуацијама може прекинути текући задатак, нпр. ако је истекло додељено време, и активирати други задатак. Потреба за управљањем оперативном меморијом јавља се због тога што обично није могуће све активне програме и све податке сместити истовремено. Управљање спољном меморијом последица је потребе да се резервише или ажурира простор за смештање датотека и да се управља преносом података. Управљање улазом-излазом потребно је због вишепрограмског рада када многи програми захтевају коришћење периферних уређаја. Осим тога улазноизлазни пренос се одвија независно и паралелно са радом централног процесора, али додељивање уређаја, припрема информација за контролер, активирање преноса и обрада прекида по завршетку преноса захтева управљање од стране оперативног система. Управљање програмима потребно је због тога што сви програми који су расположиви кориснику рачунарског система такође представљају ресурс. У
348
свакој апликацији могу се позивати одређени потпрограми из одређене библиотеке, услужни програми или други програми ради коришћења у тој апликацији. Осим тога, неки програми могу се користити за више задатака. Оперативни систем чува информације о стању сваког програма, доступности, размештају, коришћењу и др.
Функција оперативног система Функција оперативног система може се посматрати са две тачке гледишта: 1) корисничке, и 2) административне. Са корисничке тачке гледишта функција оперативног система је да олакша (убрза) добијање решења проблема које интересује корисника, пружајући му притом разноврсне услуге. С административне тачке гледишта, функција оперативног система је да обезбеди ефикасно коришћење ресурса рачунара. Још једна могућа, тзв. хијерархијска декомпозиција оперативног система је подела на следеће делове који представљају слојеве (нивое) оперативног система (од нижих ка вишим): језгро, управљање оперативном меморијом, управљање улазно-излазним уређајима, управљање подацима (датотекама), планирање и евиденција и интерпретација командног језика, слика 15.5.
Језгро
а а ма ј ри ријо м о
Упр а Уп Уп рав в
а ик а
Ин т П
и ја к о ма нд та ц н ре а ње и е ви д ог је п ер нир ање п од ен ц з ац и ј ла ављ р њ е пе ри ф и м е а љ а њ е м ем љ
Слика 15.5 Хијерархијска структура оперативног система
349
Језгро оперативног система обезбеђује управљање системом прекида и обраду прекида, планирање задатака (процеса) оперативног система, манипулацију са задацима (формирање задатка, завршавање задатка и сл.) и комуникацију између задатака. Управљање оперативном меморијом обавља следеће функције: реализација одређене стратегије додељивања меморије, само додељивање меморије и реализација одређене стратегије ослобађања меморије. На нивоу управљања уређајима реализују се следеће функције: обезбеђење независности програма од типа уређаја, обезбеђење ефикасног рада уређаја, реализација одређене стратегије додељивања уређаја, само додељивање уређаја и реализација одређене стратегије ослобађања уређаја. Управљање подацима треба да обезбеди софтверска средства за организовање и приступање подацима на начин који одговара кориснику рачунарског система. На овом се нивоу реализују следеће функције: формирање и брисање основних структура података (датотека), читање из датотека и упис у датотеке, управљање секундарним меморијским простором, обезбеђење услова за симболичко обраћање датотекама, заштита података од намерног или ненамерног уништења, заштита података од неовлашћеног приступа и коришћења, деоба датотека између више послова (корисника). Планирање се састоји у увођењу нових послова у систем и одређивању поретка у којем ће се они извршавати. Функције које се реализују у оквиру планирања су: избор новог посла за извршење, додељивање приоритета пословима, реализација стратегије додељивања ресурса. У реализацији евиденције и контроле ресурса основне су следеће функције: ограничење приступа ресурсима, ограничење приступа систему (нпр. неким класама корисника може се ускратити приступ ако захтевају много ресурса), вођење рачуноводствене евиденције за кориснике, испостављање рачуна корисницима за потрошене ресурсе и др. Командни језик омогућава успостављање везе између корисника и система и коришћшење ресурса. Ова веза се остварује помоћу интерпретатора командног језика оперативног система (код интерактивних система) или језика за управљање пословима (енгл. Job Control Language) (код система пакетне обраде).
350
15.5. Програмски систем Програмски или развојни систем садржи програме који служе за аутоматизацију припреме и тестирања корисничких програма. То су програмски језици, програмски преводиоци (асемблери, компилатори и интерпретатори), едитори, библиотеке потпрограма и услужни програми. Основна подела програмског система је на програмске преводиоце (језичке процесоре) и услужне програме, слика 15.6а. Даља подела приказна је на слици 15.6б,в.
Програмски (развојни) систем – Програмски преводиоци ( језички процесори) – Услужни програми ( сервисни програми) – Средства за развој софтвера (CASE алати) а) Основна подела програмског система
Програмски преводиоци – Асемблери и макроасемблери – Компилатори – Интерпретатори – Претпроцесори б) Програмски преводиоци
Услужни (сервисни) програми – Едитор – Повезивач – Средства за тестирање и отклањање грешака – Помоћни програми в) Услужни програми
Слика 15.6 Компоненте програмског система
Термин програмски преводиоци означава језичке процесоре који прихватају програме писане на неком од програмских језика и генеришу функционално еквивалентне програме на неком другом језику. Компилатор је преводилац чији је улазни језик виши програмски језик, а излазни језик је машински језик. Интерпретатор је преводилац чији је улазни језик виши програмски језик а излазни језик је нека посредна форма која се интерпретира (извршава). За разлику од асемблера компилатор и интерпретатор, по правилу, за једну наредбу написану у вишем програмском језику генеришу више инструкција машинског језика. Компилатор и интерпретатор се разликују по томе што компилатор преводи на интерни машински језик читав програм па се тек онда приступа његовом извршавању, док интерпретатор преводи једну наредбу из вишег програмског језика на низ инструкција машинског језика, приступа извршавању ових инструкција, потом прелази на превођење и извршење следеће наредбе, итд.
351
Компилатори
Компилација се може разложити на два главна задатка: а) анализу - утврђивање структуре изворног програма, и б) синтезу - генерисање (конструкцију) циљног програма еквивалентног изворном програму. У процесу анализе изворни програм се конвертује у апстрактну форму која садржи сва битна својства алгоритма. Анализа обухвата лексичку анализу и синтаксну анализу. Лексичком анализом се разлажу улазне јединице одређеног значења, као што су нпр. имена, константе, резервисане речи, оператори. Семантичка анализа, представља процес одлучивања да ли је низ улазних симбола реченица датог језика и, ако јесте, одређивање синтаксне структуре тог низа. Процес синтезе садржи два посебна дела: генерисање кода и асемблирање. Генерисање кода трансформише апстрактни изворни програм у еквивалентни машински програм. Асемблирањем се врши конверзија машинских наредби у одговарајући излазни формат и формира се објектни модул прилагођен обради од стране повезивача циљне машине.
Интерпретатори
Интерпретаторски начин реализације преводиоца највише се примењује код интерактивних програмских језика, као што је нпр. бејзик (енгл. БАСИЦ) и код разних командних језика. Кад год стигне нова улазна линија даље акције преузима контролер обраде који позива: а) програм хомогенизатор ради конверзије улазне програмске линије у неки стандардни интерни формат, или б) синтаксни анализатор и генератор кода ради синтаксне провере и генерисања машинског кода, или в) процесор команди ради обраде управљачке (контролне) наредбе, нпр. РУН, али не и њеног извршења. Извршење преведеног програма спада у надлежност извршиоца. Реализује се читањем одговарајућег машинског кода и његовим извршавањем. Стога је стварно извршавање преведеног програма мешавина интерпретативног и машинског кода, с тим што се већина наредби извршава преко машинског кода а контрола преласка с једне на другу наредбу подржава се интерпретативно.
352
Претпроцесори
Претпроцесор је програм који извршава неку модификацију изворног програма да би га учинио погодним за улаз у компилатор. Модификације могу бити једноставне промене формата али су најчешће то проширења (експан- зије) макронаредби виших програмских језика којима се проширује језик за неке специјалне намене.
15.6. Услужни програми Едитори
Припрема (уношење) програма обавља се у посебној фази развоја програма која се назива едитовање, а део системског софтвера који реализује ту фазу назива се едитор програма или едитор текста. Намењен је за унос и модификацију текстуалних података, нпр. програма на вишим програмским језицима, књига и других текстуалних докумената. Резултат едитовања програма је изворни програм. Едитори текста чине битан део корисничког интерфејса и најчешће су коришћени делови системског софтвера у интерактивним рачунарским системима. За већину корисника они представљају главну спрегу са рачунаром. Могу бити линијски едитори, када се текст посматра као низ линија раздвојених управљачким знаком за крај линије, или екрански едитори. Код екранских едитора садржај екрана представља прозор у текст унутар којег се курсор може довести на место где ће се вршити уметање, брисање и друге едиторске функције. Једна од важних карактеристика едитора је скуп едиторских функција које су стављене на располагање кориснику. Таксономија могућности едитора обухвата потенцијално преко 200 функција које се њиме могу извршавати. Овде ћемо описати само неке од најважнијих и најчешће коришћених функција над текстуалним објектима, где се под објектом подразумева: знак, реч, линија, реченица, параграф и секција, који као целина подлежу одређеној операцији едитовања:
353
– уметање објеката у текст, – уклањање (брисање) објеката из текста, – замена објеката у тексту новим објектима, – премештање објеката с једне на другу позицију у тексту, – копирање објеката на разне позиције у тексту, – раздвајање објеката у тексту на више делова, – спајање више објеката у тексту у један објекат, – селекција (означавање) појединих делова текста, – тражење објекта у тексту, итд.
П о в е зи в а ч и
Резултат превођења програма не добија се директно у машинској већ у форми која се назива објектни модул. Да би се програм могао извршавати у рачунару неопходно је довести га у извршну форму и сместити га у оперативну меморију. Извршна форма програма се добија повезивањем објектних модула у једну целину тзв. модул пуњења и његово свођење на директну машинску форму (машински језик). Целокупан посао око генерисања извршне форме и њеног смештања у оперативну меморију обавља се у посебној фази развоја програма која се назива повезивање. Ова фаза следи после процеса превођења. Део системског софтвера који реализује функцију повезивања назива се повезивач или едитор веза. Постоје разне верзије повезивача а понекад они врше и пуњење извршне форме програма у оперативну меморију.
Средства за тестирање и отклањање грешака
Отклањање грешака или пречишћавање програма представља процес идентификације и одстрањивања локализованих грешака из програма. Насупрот томе тестирање настоји да установи да ли грешке постоје, али их не изолује нити их отклања. Отклањање грешака у програму представља дводелни процес који почиње индикацијом о постојању грешке као резултата успешног тестирања, и наставља са следећим актвностима:
354
1) прецизно одређивање природе уочене грешке, и 2) локализација и отклањање грешке.
Пом оћни про г ра м и
Помоћни програми представљају скуп програма који нису фундаменталне природе, али се њима проширују могућности рачунарског система и тиме побољшава квалитет услуга расположивих кориснику. Број и врста ових програма који су заступљени у системском софтверу се разликује од система до система. Овде ћемо навести само неколико типова помоћних програма: – формирање програмских библиотека, – одржавање датотека: брисање, формирање, спајање, копирање, преименовање, итд, – коришћење датотека: модификација, ажурирање, читање, приказ на екрану, итд. – рад са каталозима (именицима), – конверзија датотека из једног формата у други, – штампање садржаја датотека, – упоређивање садржаја две датотеке, итд.
15.7. Апликациони софтвер Апликациони програм је било који програм који је специфичан за одређену примену рачунара. Насупрот томе системски програми су од суштинског значаја за ефикасно коришћење рачунарског система. Апликационе програме обично развијају корисници рачунарског система за решавање својих проблема. Због тога се ови програми често називају и кориснички програми. Најважније области примене за које се користе апликациони програми, тј. области где се користе рачунари, наведене су првом поглављу. Напоменимо још да се често у оквиру апликационих програма могу по потреби да проширују и одређене функције оперативног система.
355
Апликациони програми се понекад деле на у следеће врсте: – појединачни апликациони програми, – програмски пакети, – системи програма. Програмски пакет састоји се од више програма и представља скуп процедура за решавање проблема. Систем програма представља скуп програма чије су компоненте уско повезане.
356
16. КОМУНИКАЦИЈА ПОДАТАКА
Изузетно брзи развој рачунарске технике и средстава за комуникацију представља основу за прелаз на тзв. "технологију без папира" која ће омогућити да се комуникација (пренос и размена) података и информација остварују помоћу електронских средстава а складиштење и обрада помоћу рачунара. Прелаз од традиционалних начина чувања, претраживања и достављања података и информација (библиотека, ручних метода претраживања, поште и телеграфа) на нове електронске (као што су базе библиографских и фактографских података, системи за претраживање информација, рачунарске мреже, електронска пошта, оптичке и сателитске комуникације, системи за обраду текста, аутоматизована радна места и сл.), довешће до бољег праћења разних догађаја, економских процеса, пословних трансакција, нових техничких решења итд. Битно ће се изменити начин комуницирања људи и они ће бити у стању да много боље користе информације у свим сферама делатности, чему посебно доприносе рачунари који имају могућност памћења и обраде великих количина података. Термином комуникација података означава се процес прикупљања и достављања података кроз телекомуникационе канале. Пренос података од извора података - места где се подаци стварају до одредишта података - места где се подаци примају и користе, може бити у аналогном или дигиталном (дискретном) облику. Систем који уз одговарајућу ефикасност и поузданост омогућава пренос података од извора до одредишта назива се комуникациони систем. Ако овакав систем садржи више извора и више одредишта он се назива комуникациона мрежа. Општи модел комуникационог система описан је у трећем поглављу.
357
16.1. Рачунарске мреже Када је већи број терминала и рачунара повезан комуникационом мрежом (телекомуникационим подсистемом) они чине систем који се назива рачунарска мрежа. Рачунари повезани у мрежу могу бити различитих типова и карактеристика, од микро до суперачунара. Терминали прикључени на мрежу такође могу бити различитих врста. Обрада у рачунарској мрежи представља проширење концепта дистрибуиране обраде, а рачунари у мрежи су слабо спрегнути. У рачунарској мрежи могућа је измена података или команди између рачунара и рачунара или терминала и рачунара у било које време. Осим тога, рачунари повезани у мрежу могу користити и ресурсе других рачунара у тој мрежи. Измена података у мрежи мора бити праћена одговарајућим управљањем. За измену података постоје дефинисани управљачки поступци који се називају протоколи.
Локалне рачунарске мреже
Због потребе да се у рачунарској мрежи повежу рачунари и терминали смештени на мањем географском подручју, обично на истој локацији или на растојањима до неколико километара, настале су мреже које се називају локалне рачунарске мреже. Наиме, у локалном амбијенту често постоји потреба комуницирања разних интелигентних уређаја или коришћења ресурса других уређаја. Повезани у мрежу ови уређаји у свом раду међусобно размењују информације које се непрекидно стварају и ажурирају, а називају се општим именом радне станице. Повезивање више уређаја у локалну мрежу потребно је и за аутоматизацију канцеларија. Локалне рачунарске мреже и нису мреже у класичном смислу речи, већ рачунарске архитектуре са могућношћу брзог и директног комуницирања између радних станица у локалном амбијенту које међусобно деле преносни медијум. Првобитна намена им је била да се обезбеди једноставна реконфигурација и проширење система терминала. Савремене локалне рачунарске мреже служе за повезивање персоналних рачунара, радних станица и дигиталних управљачких система са дистрибуираним базама података. Потреба за постојањем отворених система на које се може прикључити сва стандардна рачунарска опрема довела је до стандардизације локалних рачунарских мрежа. Најпознатији стандарди су из серије IEEE 802, посебно 802.3, 802.4 и 802.5. Стандард се заснива на ISO OSI референтном моделу 358
који се разматра у наредном одељку. Предвиђена је и могућност повезивања више локалних мрежа међусобно, као и њихово повезивање на мреже за пренос података. Брзине преноса у локалним мрежама износе од 1 до 10 Mbit/sec. Као преносни медијуми најчешће се користе симетричне парице, коаксијални или оптички каблови. Основне топологије локалних рачунарских мрежа су магистрала и прстен (затворена петља), слика 16.1а,б.
2
1
2
3
3
1 4
5
а) Магистрала
6 5
4 б) Прстен
Слика 16.1 Топологије рачунарских мрежа
Уз топологију друга важна карактеристика локалних мрежа су методе приступа медијуму. Највише се користе следеће три методе: 1) CSMA/CD (Carrier Sense Multiple Access with Collision Detection) - вишеструки приступ са контролом носиоца и детекцијом колизије, 2) магистрала са маркером (енг. Token-Bus), 3) прстен са маркером (енг. Token-Ring). Код CSMA/CD методе одговорнсот за приступ заједничкој магистрали може се доделити сваком чвору локалне мреже. Овај чвор такође у току преноса контролише појаву конфликта. Код великог интензитета саобраћаја ово у знатној мери повећава време приступа медијуму и смањује пропусну моћ мреже. При коришћењу метода са маркером право на заузимање преносног медијума предаје се од чвора до чвора или по редоследу или по систему приоритета додељивањем маркера. При томе маркер (енг. token) представља специјалан управљачки знак који се у одређеном временском интервалу додељује само једном чвору, тзв. власнику маркера. Чвор који добије маркер може да врши предају у току тог временског интервала, после чега мора предати маркер другом чвору.
359
Метода са маркером користи се код магистрале на следећи начин. Чворови непрекидно "ослушкују" шта се догађа на магистрали све док не детектују маркер са својом адресом. Затим чвор који је добио маркер преузима управљање заједничком магистралом а после завршене активности шаље маркер са адресом наредног чвора. Код архитектуре облика прстена, где су на физичку петљу преко регенератора серијски повезани чворови, када чвор детектује слободан маркер изменом садржаја одређеног бита он га претвара у заузет и користи га као део заглавља поруке у којој форматизује своје податке. Ове информације циркулишу прстеном, а чвор коме су намењене копира њихов садржај. Изворни чвор када информације поново стигну до њега уништава их задржавајући само маркер који поново претвара у слободан. Оквир садржи и посебно поље у које одредишни чвор уписује информације о успешном пријему информације.
16.2. Мреже за пренос података Мрежа за пренос података или комуникациона мрежа представља посебну, најчешће јавну мрежу, која служи као унутрашња контура рачунарске мреже и намењена је за пренос и достављање података између корисника рачунарске мреже. Она се понекад назива и комуникациони подсистем. Састоји се од скупа комутационих чворова (комутационих центара) који су директним каналима повезани са неким од осталих чворова, слика 16.2. Ако су у мрежи сви корисници стално повезани један са другим тзв. изнајмљеним каналима мрежа се назива некомутирана мрежа. Мреже у којима се корисници повезују један са другим преко комуникационих чворова на основу адресе у поруци називају се комутиране мреже. Зависно од усвојеног начина остваривања комутације мреже за пренос података могу се поделити на следећи начин: – мреже са комутацијом линија (комутацијом канала), – мреже са комутацијом порука, и – мреже са комутацијом пакета. У мрежама са комутацијом линија између извора и одредиште се пре почетка преноса преко више комутационих чворова успоставља веза (преносни пут) на основу позивног сигнала који шаље извор, а на крају сеансе се веза раскида. Тек по раскидању преносног пута канал између два чвора може се 360
ставити на располагање другом кориснику. У мрежама са комутацијом порука порука се преноси као целина у којој су дефинисани почетак и крај. Овде се не успоставља посебан канал, већ се на основу адресе бира слободни канал и порука се шаље од једног до другог комутационог чвора (комутационог центра). У случају заузетости канала комутациони чворови привремено памте поруке у посебној, тзв. бафер меморији. Рачунар 1 Рачунар 2
Рачунар 3
Рачунар 4
Рачунар 5
Рачунар 6
Рачунар 7
Слика 16.2 Мрежа за пренос података
Експлоатација система са комутацијом порука показала је да се могу остварити само релативно мале брзине преноса с обзиром да су поруке произвољне дужине, а то захтева постојање у комутационим чворовима великих бафер меморија на спорим носиоцима масовних података. Ради отклањања овог недостатка, тј. упрошћавања комутационих чворова и смањења времена преноса, уведена је метода комутације пакета. Овде се порука разбија на мање целине који се називају пакети. При томе сваки пакет садржи скуп података одређеног обима, има заглавље са адресном и другом информацијом, знак за крај и додатну информацију за контролу исправности преноса. Број пакета зависи од тога колика је стандардна дужина пакета и колика је дужина поруке. У предајном комутационом чвору порука се дели на пакете а у пријемном чвору мреже пакети се поново обједињавају у поруку. Пакети се кроз мрежу крећу независно различитим каналима. У сваком комутационом чвору пакети се прихватају, привремено памте и прослеђују када се ослободи неки канал
361
ка одредишту. Овај се принцип назива "памћење и прослеђивање". Поделом поруке на пакете сама порука се може пренети већом брзином, а искоришћење комуникационе мреже знатно је боље.
ISO OSI архитектура
Свака комуникација између људи одвија се по одређеним правилима. У савременим мрежама за пренос података доминантан значај има концепција протокола - формалне процедуре комуницирања. Услове за комуницирање у рачунарским мрежама дефинисала је Међународна организација за стандардизацију ISO (International Organization for Standartization). Посебном, тзв. архитектуром отворених система (енг. OSI - Open Systems Architecture), односно тзв. референтним моделом, цео процес комуницирања подељен је у седам функционалних хијерархијских нивоа. Сваки ниво има свој посебан протокол и одговарајуће име, а од највишег до најнижег то су (слика 16.3): 7
Протокол апликационог нивоа
7
6
Протокол презентационог нивоа
6
5
Протокол нивоа сесије
5
Протокол транспортног нивоа Комуникациона мрежа Протокол мрежног 3 нивоа 4
2
Протокол нивоа веза
1 Протокол физичког нивоа Слика 16.3 ISO OSI референтни модел
7. Ниво примене (апликациони ниво) (Application Layer), 6. Ниво представљања (презентациони ниво) (Presentation Layer), 5. Ниво сеансе (Session Layer),
362
4 3 2 1
4. Транспортни ниво (Transport Layer), 3. Мрежни ниво (Netnjork Layer), 2. Ниво веза (каналски ниво) (Data Link Layer), 1. Физички ниво (Physical Layer). Доња три нивоа OSI модела воде рачуна о комуникационој мрежи, а горња три о мрежним апликацијама. Четврти, транспортни ниво, делује као интерфејс између ове две групе задатака.
Мреже за интегрисане услуге
Предвиђа се да ће у будућности мреже за пренос података користити дигиталне (цифарске) канале. Зато се посебна пажња поклања реализацији дигиталних мрежа које се називају мреже за интегрално опслуживање (енгл. BISDN - Broadband Integrated Services Data Netnjorks), којима ће моћи да се истовремено преносе мултимедијалне информације, односно текст, звук (говор), цртежи или дигитализоване фотографије, као и анимације и телевизијска слика. Основу за реализацију ових мрежа представља пренос дигиталних података комутацијом пакета. Међутим, због недовољне флексибилности ISDN реализације данас доминира идеја о стандардном асинхроном начину преноса под именом ATM (Asynchronous Transfer Mode). То је стандардизовани асинхрони начин преноса интегрисаних података, дигиталног видео сигнала и говора који допушта потпуну интеграцију свих сервиса у једној дигиталној мрежи за пренос података. Применом ATM технологије створиће се такође и услови за увођење интерактивних мултимедијалних комуникација.
Оптички и сателитски комуникациони системи
Оптички комуникациони ситеми користе се за пренос података у потпуно дигитализованим мрежама у којима се говор, слика и рачунарски подаци представљају у дигиталном (бинарном) облику. Као носилац података користи се светлост а оптички каблови (светловоди) служе као медијуми за пренос светлосних сигнала. Оптичким кабловима се такође повезују и рачунари у локалним рачунарским мрежама. Код сателитских комуникационих система комуникациони сателити обезбеђују микроталасне канале за телефонију, пренос података, радио и TV 363
станице. Они функционишу углавном као релејне станице тако што хватају сигнале који долазе са земље и поново их емитују на другој носећој фреквенцији ка различитим географским подручјима. Сателитски комуникациони системи захтевају пријенике и предајнике на земљи у сателитским земаљским станицама.
16.3. Специјални телекомуникациони сервиси Паралалено са развојем мрежа за пренос података изузетно брзо се развијају различити специјализовани телекомуникациони сервиси. У овом одељку размотрићемо неке сервисе, док се у следећем одељку разматра вероватно најважнији телекомуникациони сервис - електронска пошта.
Приступ базама података
Експоненцијални раст обима публикованих материјала немогуће је пратити без нових средстава за њихово складиштење и претраживање. Једно од решења које се већ масовно користи је складиштење (памћење) информација на меморијске медијуме и формирање библиографских, фактографских, статистичких и других база података. База података представља скуп посебно организованих података са јединственим управљањем помоћу система за управљање базом података. За разлику од класичних датотека, сваки се податак чува само у једном примерку, боље је управљање подацима, и једноставнији је приступ. Понекад се користи и термин банка података, у истом смислу као база података, за скуп база података, или за базу података о конкретним објектима. Базе података представљају једну од најзначајнијих манифестација коришћења рачунара за управљање информацијама. Када су рачунари повезани преко мреже за пренос података информације су доступне и удаљеним корисницима. Базе података мењају карактер понашања људи у свим областима живота. Доступност и могућност брзог проналажења потребних информација најважнија је улога база података.
364
Телетекст систем
Систем телетекст предвиђен је за пренос података (текстова и таблица) заједно са телевизијским сигналом у истом каналу. Уствари, подаци су уметнути у обичан телевизијски сигнал према следећем принципу. При преносу телевизијских слика сигнал има интервале потребне за враћање светлосног снопа на почетак следеће линије. То се дешава 625 пута у једној секунди. Осим тога телевизијска полуслика понавља се 50 пута у секунди са одређеним интервалима. Ти празни временски интервали могу се искористити за пренос текста. Систем функционише на следећи начин. Телевизору се додаје посебан адаптер који садржи блок са тастатуром за избор странице текста, меморију за памћење једне странице текста и дигитални видеоконвертор који претвара дигиталне сигнале у видео сигнале ради приказивања текста на екрану. За време приказивања странице текста на екрану нема телевизијске слике. Изабрана страница остаје на екрану колико је кориснику потребна. Систем текетекст омогућава да се у тзв. текстуалном каналу видеосигнала преносе разне информације, као што су "електронске новине", тј. чланци из новина и часописа, новости, рекламе, временска прогноза, огласи, радио и телевизијски програми и др. Напоменимо да треба разликовати телетекст од телетекса - сервиса који је једна врста електронске поште и разматра се касније.
Видеотекс систем
Систем видеотекс представља нови начин пријема порука и података, који је на неки начин врста електронске поште. Основна идеја се састоји у проширењу улоге обичног телевизора и његово претварање у домаћи (кућни) терминал. Телевизору се додаје специјални адаптер са тастатуром и модемом који омогућава да се телевизор прикључи на телефонску мрежу. То наравно може бити и видео терминал или персонални рачунар. У мрежу видеотекс система прикљунен је одређени број рачунара којима у интерактивном режиму (режиму дијалога) могу преко телефонске мреже приступати сви корисници. У режиму дијалога корисници могу приступати и
365
претраживати базе података које су пре свега информативног карактера, нпр. редови вожње возова, аутобуса или авиона, репертоар биоскопа или позоришта, али и каталози великих робних кућа, затим разне новости, временска прогноза и др. Осим тога, корисник може имати у бази своју датотеку у којој се налазе његови текући оперативни или други подаци. Такође, сваки корисник има могућност да пошаље поруку у датотеку другог корисника, што такође одговара идеји електронске поште. Термин видеотекс различит је од термина видеотекст који се понекад среће, а односи се на пренос из телевизијског студија по видеоканалу текста који се приказује на екрану телевизора.
Телеконференеције
Један од честих начина комуницирања људи су састанци, конференције, семинари, саветовања. Савремена техника дигиталног преноса података омогућила је одржавање телеконференција (даљинских конференција) - које представљају синтезу телефона и телевизије. Телеконференције омогућавају истовремено општење више лица која се налазе у различитим просторијама и на мањим или већим растојањима. Сваки учесник телеконференције може видети и чути остале учеснике чиме се ствара ефекат присуства у једној просторији, али такође може истовремено слати разне врсте информација (таблице, графиконе, текстове и др.), и чак користити рачунар за израчунавања или позивање података из база података. Један од главних проблема организације телеконференција представља обезбеђење илузије присуства на конференцији, јер се за сада покретне слике не могу преносити.
Аудиотекс
Аудиотекс сервис се састоји у коришћењу јавне телефонске мреже да се добије унапред записана говорна или тонска (звучна) информација: записане поруке, информације из база података или информације о компанијама, стању на берзи, реду вожње, временској прогнози и др.
366
16.4. Електронска пошта Електронска пошта представља систем преноса где корисници шаљу један другом текстуалне поруке преко рачунара повезаних у рачунарску мрежу или повезаних преко комуникационе мреже. За припрему, слање, читање или штампање порука користе се посебни програмски пакети. Све примљене поруке достављају се у "електронско поштанско сандуче" примаоца - посебно резервисан простор на секундарној меморији додељен сваком криснику. Савремени системи подржавају припрему и слање мултимедијалних порука - порука у којима се истовремено могу комбиновати текст, графика, глас, звук, дигитализоване фотографије и други облици података. За пренос ових порука користиће се мреже за интегрисане услуге. Електронска пошта је у основи алтернатива за конвенционални поштански сервис. Захваљујући примени и могућностима рачунара она поседује и низ додатних нових функција. Концепт електронске поште покрива широк спектар различитих сервиса и система уз заједничку карактеристику да се порука преноси електричним сигналима од рачунара до рачунара преко мрежа за пренос података. Папир тако или постаје сасвим непотребан или се користи само на почетку и/или на крају везе. Електронска пошта се користи за размену порука, приступ јавним датотекама, електронским часописима и сл. За пренос је потребна телекомуникациона мрежа. Пошто се углавном размењују подаци између два рачунара, пренос се одвија најчешће преко јавних мрежа за пренос података. Области примене: – као алтернатива за класичне поштанске услуге, – као допуна телефонском сервису, – као једна од могућности за одржавање телеконференција. Када се говори о електронској пошти има се у виду електронска размена порука која је заснована на коришћењу рачунара и мрежа за пренос података. Иначе, систем електронске поште укључује телекс, телетекс, факсимил и системе за размену порука засноване на коришћењу рачунара. Ниже се посебно разматрају факсимил и телетекс.
367
Факсимил (телефакс)
Факсимил представља један од првих корака ка реализацији електронске поште. Иако идеја преноса слика (фотографија) није нова, јер је раније коришћена тзв. фототелеграфија, савремена технологија је омогућила да се факсимилски пренос изузетно много прошири као средство размене информација међу људима. Факсимилским преносом могуће је телефонским линијама преносити разноврсне документе као што су текстови, рукописи, новине, графички подаци и фотографије, уз потпуну аутоматузацију процеса предаје и пријема. Основна одлика је пренос копије оригиналног документа. Принцип факсимилског преноса непокретне слике је следећи. У предајном делу факсимилског апарата светлосним зраком се скенира непокретна слика и формира се бинарни код слике. Овај се код трансформише у поворку импулса која се после модулације преноси комуникационим каналом. На пријемној страни процес се одвија обрнутим редом: демодулација, декодирање, трансформација у слику и формирање те слике на папиру.
Телетекс систем
Према препоруци Међународног консултативног комитета за телефонију и телеграфију (CCITT) термин телетекс дат је новом начину опслуживања чију основу представља аутоматска размена текстуалних информација између корисника. То је један од облика електронске поште, а представља побољшање телекс система за савремене дигиталне мреже са пакетним преносом. Телетекс је бржи од телекса, пренос се одвија брзином од 2400 бита/секунди у мрежама са комутацијом пакета или 1200 бита/секунди у мрежама са комутацијом линија. Осим тога, има шири скуп знакова од телекса. Телетекс омогућава да се помоћу видео терминала (евентуално са придодатим штампачем) предају и примају текстуалне поруке. Корисник може да припрема текстове помоћу система за обраду текста, да складишти (памти) примљене и предате поруке на масовним меморијама. У циљу стандардизације донете су препоруке Т-200 (служба телетекс). За остваривање аутоматског режима рада и ефикасно коришћење комуникационих канала дефинисани су одговарајући протоколи. Предвиђена је могућ-
368
ност коришћења различитих врста мрежа за пренос: телефонске мреже, мрежа за пренос података са комутацијом линија или комутацијом пакета. Телетекс треба разликовати од телетекста - система за приказивање текста преношеног телевизијским сигналом на модификованим телевизорима. Овај је систем био размотрен раније.
16.5. Електронска размена података (EDI) EDI је скраћеница за Elecronic Data Interchange - електронску размену података, скуп принципа и правила дефинисаних међународним стандардима за електронску размену пословних података између пословних партнера (произвођача, извозника, велетрговаца, дистрибутера, трговаца на мало, шпедитера, примаоца, превозника, банака, осигуравајућих организација, владиних агенција, итд.). Наиме, да би се могле аутоматски размењивати информације између рачунара кључни захтев је договор о садржају и структури информација које треба преносити. Електронска размена података дефинисана је као део препоруке X.400 Међународног консултативног комитета за телефонију и телеграфију CCITT. За електронску размену података користе се поруке. Порука (енгл. message) је термин који описује начин структурирања података ради остварења одређене пословне функције (или функција) на такав начин да омогући оптимални пренос и руковање помоћу електронских средстава. Основне одлике коришћења електронске размене података су: – нуди јединствене пословне поруке на основу међународних стандарда, – замењује уобичајену папирну документацију електронским датотекама, – убрзава проток информација и обављање пословних трансакција, – повеђава конкурентност на светском тржишту, – допушта употребу модерних мрежа за пренос података и разних телекомуникационих сервиса. Најпознатији подскуп EDI стандарда представља EDIFACT - Electronic Data Interchange For Administration, Commerce and Transport - електронска размена података за администрацију, трговину и транспорт. Овај стандард је припреман под покровитељством Уједињених нација а донела га је Међуна-
369
родна организација за стандардизацију ISO. У њему су развијене универзалне стандардне електронске поруке, како за национално тако и за међународно коришћење. Постоји и систем који служи да се помоћу мрежа за пренос података обавља електронски пренос финансијских средстава EFT - Electronic Funds Transfer, електронски пренос новчаних средстава, који омогућава плаћање електронским путем.
16.6. Информациони сервиси и системи за претраживање информација Стални развој науке и технике и повећање обима знања у свим областима доводи поред осталог и до енормног пораста броја и сложености извора информација, што се манифестује и кроз пораст броја научних и других публикација (прелази цифру од више стотина милиона штампаних страница годишње), као и кроз нагомилавање информација у другим облицима. Ова појава, која се назива и експлозијом информација, истовремено доводи до тзв. информационе кризе, односно до стања да је из тако великог броја информација веома тешко доћи до правих информација у неком коначном времену. Савремене информационе технологије у великој мери помажу да се информациона криза савлада организовањем информационих сервиса и коришћењем система за претраживање информација. Системи за претраживање информација (енгл. Information Retrieval Systems) служе за обезбеђење информација о постојању докумената који се односе на постављени упит од стране корисника, и о томе где се ти документи могу наћи. Информациони сервиси су рачунарски центри који располажу великим бројем база података припремљених у електронском облику. Основни циљ информационих сервиса је да преко телекомуникационих мрежа корисницима омогуће да на најефикаснији начин задовоље своје потребе за информацијама претраживањем ових база података. Један од највише коришћених система за претраживање су системи за добијање библиографских података за неку област или тему, па се ови системи често називају и системи научно-техничких информација. Системи за претраживање могу се користити за тражење библиографских описа докумената (чланака и књига) или за прегледање потпуних текстова до-
370
кумената. Ако систем даје само описе докумената каже се да он служи за давање библиографских информација. Ако систем омогућава кориснику потпуне текстове докумената он се назива систем за претраживање докумената. Једна од важних могућности система за претраживање је претраживање потпуног текста, за разлику од система за управљање базама података где се могу специфицирати само кључеви. Претраживање потпуног текста омогућава да се зада реч или фраза и да се пронађу сви документи који садрже ту фразу. Слично системима за претраживање докумената постоје и системи за претраживање података који служе за тражење података представљених у базама података. Обично се говори о фактографским базама података ако садрже податке о карактеристикама и ценама одређених производа и сл., затим о статистичким базама података које садрже разне врсте статистичких података. Такоће су честе базе података информативног карактера као што су редови вожње, редови летења, разне новости, берзански извештаји и др.
Опис садржаја докуманата
Да би се могло да врши аутоматско претраживање у бази задају се вредности атрибута који интересују корисника. То могу бити напр. имена аутора, бројеви докумената, организације које су аутори докумената, издавачи књига или часописа, одређени временски периоди итд. Међутим, често се у циљу претраживања кратко описују садржаји докумената по тематици на коју се односе. Овај се процес назива индексирање докумената. Индексирање обично садржи следеће две фазе: а) анализа садржаја документа, тј. одређивање о чему се говори или на шта се односи документ, и б) превођење појмова добијених том анализом на скраћени опис садржаја документа помоћу кључних или индексних речи. То су речи или фразе узете из документа да би се он индексиарао. Индексирањем се документу придружује скуп кључних речи које описују садржај документа и служе за аутоматско претраживање. Наиме, сматра се да се смисаони садржај документа може са довољном тачношћу и потпуношћу описати скупом кључних речи. Ради ефикаснијег тражења и дефинисања захтева корисника понекад се за индексирање користе унапред усвојене кључне речи које се називају дескриптори. Скуп дескриптора назива се контролисани речник или тезаурус.
371
16.7. Биротика (аутоматизација канцеларија) Аутоматизација канцеларија која данас иде ка "електронској канцеларији" или "канцеларији без папира", отпочела је још у прошлом веку. Тзв. "механизована канцеларија" почела је да се користи у другој половини 19. века увођењем писаће машине и телеграфа. У првој половини двадесетог века појавиле су се додатне технологије за канцеларије: аутоматске телефонске централе, телеграф, електрична писаћа машина, телекс, аритмометри, разне машине за обраду података на картицама и др. Развој електронике после Другог светског рата довео је до замене многих механичких уређаја мањим и знатно поузданијим електронским уређајима: кућним телефонским централама, електронским писаћим машинама, видео терминалима, машинама за диктирање, машинама за умножавање, рачунарима итд. Аутоматизација послова у канцелариском окружењу разликује се од стандардне обраде података и односи се на аутоматизацију различитих група послова, као што су: а) послови везани за писане документе (припрема, дистрибуција, складиштење и претраживање, копирање, визуелни приказ итд.), б) послови везани за говор (састанци, телефонирање), в) руковођење (доношење одлука, планирање, калкулације, инструкције), г) остали послови. Основна функција канцеларијског пословања је обрада информација у циљу доношења одлука. Савремена решења аутоматизације канцеларија користе локалне рачунарске мреже и обухватају: обраду текстуалних и графичких докумената (обрада текста), коришћење база података, стоно издаваштво, електронску пошту, електронски пренос докумената, телеконференције, алате за помоћ у руковођењу и одлучивању, микрографију и др.
372
17. Коришћена литература
Aleksić, T., Logička sinteza digitalnih sistema. - Beograd: Naučna knjiga, 1975. Aleksić, T., Računari: organizacija i arhitektura. - Beograd: Naučna knjiga, 1982. Балашов, Е.П., Пузанков Д.В., Микропроцессоры и микропроцессорные системы. - Москва: Радио и связь, 1981. Bauer, F.L., Goos, G., Informatik: Eine einfuehrende Uebersicht. - Erster Teil. - Dritte Auflage. - Berlin: Springer Verlag, 1982. Превод на руски: Бауер Ф.Л., Гооз Г., Информатика: вводный курс. - Часть 1. - Второе издание. - Москва Мир, 1990. Bauer, F.L., Goos, G., Informatik: Eine einfuehrende Uebersicht. - Zweiter Teil. - Dritte Auflage. - Berlin: Springer Verlag, 1982. Превод на руски: Бауер Ф.Л., Гооз Г., Информатика: вводный курс. - Часть 2. - Второе издание. - Москва Мир, 1990. Friedman, A.D., Menon, P.R., Theory and Design of Switching Circuits. - Rockvile: Computer Science Press, 1975. Превод на руски: Фридман, А., Менон, П., Теория и проектирование переключатечьных схем. - Москва: Мир, 1978. Gill, A., Introduction to the Theory of Finite-State Machines. - New York: McGraw-Hill, 1963. Превод на руски: Гилл, А., Введение в теорию конечных автоматов. - Москва: Наука, 1966. Глушков, В.М., Синтез цифровых автоматов. - Москва: Физматгиз, 1962. Превод на српски: Gluškov, V.M., Sinteza cifarskih automata. – Beograd: Zavod za izdavanje udžbenika, 1967. Hayes, J.P., Computer Architecture and Organization. - New York: McGraw-Hill, 1978. Jovanović, D.T., Komponente digitalnih sistema. - Drugo izdanje. – Beograd: Građevinska knjiga, 1978. Каган, Б.М.,Электронные вычислительные машины и системы. - Москва: Энергия, 1979. Карцев, М.А., Арифметика цифровых машин. - Москва: Наука, 1979. Lazić, B., Logičko projektovanje računara. – Beograd: Nauka, 1994. Лазић, Б., Урошевић, С., Збирка решених задатака из логичког пројектовања. -Београд: Наука, 1991. Lippiatt, A.G., The Architecture of Small Computer Systems. - London: Prentice-Hall International, 1978. Превод на руски: Липьят А., Архитектура малых вычислительных систем. - Москва: Мир, 1981. Mano, M.M., Computer System Architecture. - Englewood Cliffs, NJ: Prentice-Hall, 1976. Превод на руски: Мано, М., Архитектура вычислительных систем. - Москва: Стройиздат, 1980. Matick, R.E., Computer Storage Systems and Technology. - New York~ Wiley, 1977. Мелихов А.Н., Ориентированные графы и конечные автоматы. - Москва: Наука, 1971. Miller, R.E., Switching Theory, - Vol. 1 Combinational Circuits. - New York: Wiley, 1965. Превод на руски: Миллер, Р., Теория переключатечьных схем. - Том 1 Комбинационные схемы. - Москва: Физматгиз, 1970.
373
Miller, R.E., Switching Theory, - Vol. 2 Sequential Circuits and Machines. - New York: Wiley, 1965. Превод на руски: Миллер, Р., Теория переключатечьных схем. - Том 2 Последовательностные схемы и машины. - Москва: Физматгиз, 1971. Mogin, P., Strukture podataka i organizacija podataka. – Beograd: Nauka, 1992. Obradović, D., Osnovi računarstva. - Knj. 1,2. - Novi Sad: Fakultet tehničkih nauka, 1992. Папернов, А.А., Логические основы цифровых машин и программирования. - Москва: Энергия, 1968. Parezanović, N., Računske mašine i programiranje: Osnovi računske tehnike. - Beograd: PFV Oeconomica, 1973. Patterson, D.A., Hennesy, J.L., Computer Architecture: A Quantitative Approach. - San Mateo, CA: Morgan Kaufmann, 1990. Поспелов, Д.А., Арифметические основы вычислительных машин дискретного действия. - МОсква: Высшая школа, 1970. Поспелов, Д.А., Логические методы анализа и синтеза схем. - Изд. 3-е. - Москва: Энергия, 1974. Ribarić, S., Arhitektura mikroprocesora. - Zagreb: Tehnička knjiga, 1988. Smiljanić, G., Osnove digitalnoh računala. - Zagreb: Školska kwiga, 1980. Stanković, R.S., Stanković, M., Logičko projektovanje. – Beograd: Nauka, 1991. Свириденко, С.С., Современные информационные технологии. - Москва: Радио и связь, 1989. Tošić, Ž., Principi asemblerskog programiranja. – Drugo izd. – Beograd: Naučna knjiga, 1989. Вавилов, Е.Н., Портной, Г.П., Синтез схем электронных цифровых машин. - Москва: Советское радио, 1964. Превод на српски: Vavilov, E.N., Portnoj, G.P., Sinteza mreža elektronskih cifarskih mašina. – Beograd: Građevinska knjiga, 1968. Velašević, D.M., Uvod u sistemsko programiranje I. - Beograd: Naučna knjiga, 1988. Zorkoczy, P., Information Technology: An Introduction. – 2nd ed. - London: Pitman, 1985.
374
18 РЕГИСТАР ПОЈМОВА
А
аналогни подаци 4
адаптер 249, 281
аналогни рачунар 8
адреса 77
апликациони програми 274
адреса нултог (првог, другог) ранга 225
апликациони софтвер 274
адресирање оперативне меморије 222
апсолутна дреса 224
адресна аритметичка јединица 223
апсорпција 122
адресна магистрала 213
апстрактна азбука 5, 47
адресни део наредбе 198, 209
апстрактна анализа коначних аутомата
адресни регистар меморије 217
174, 178
адресни систем 222
апстрактна машина 6
адресност рачунара 214
апстрактна синтеза коначних аутомата
азбука стања 157
183
азбучни оператор 171
апстрактна теорија аутомата 173
азбучно представљање 48
апстрактни аутомат 6, 49, 171
азбучно пресликавање 49, 155, 171
апстрактно аутоматно време 155
аксиоме Булове алгебре 97, 98
аргумент 73
акумулатор 218
аритметика рачунара 13
алгебарска анализа аутомата 180
аритемтичка наредба 232
алгебра догађаја 175
аритметичке операције 196
алгебра логике 2
аритметичко-логичка јединица 196, 210
алгоритам 5, 50, 200
аритметичко-логичка наредба 232
алгоритамски нерешиви проблеми 50
аритметичко померање 234
АЛЈ → аритметичко-логичка јединица
ARRAY 70
алфабет 47
архитектура отворених система 279
алфанумерички подаци 52, 69
ASCII код 55
аналитичка репрезентација 106
асемблер 210
аналитички израз 106
асемблерски језик 205, 210
аналитичко представљање 106
асемблерско програмирање 210
анализа аутомата 171
аски код 55
анализа коначних аутомата 171
асинхрони аутомат а56
анализа комбинационих мрежа 116
асинхрони начин преноса 280
аналогни комуникациони систем 58
атрибут 63
375
аудиотекс 282
битски интервал 84
аутодекрементно адресирање 225
блок 85, 203, 204
аутоиндексирање 226
блок шема алгоритма 203
аутоинкрементно адресирање 225
блочни код 92
аутомат 6, 49
број 13
аутоматизација 11
бројач 194
аутоматизација канцеларија 9, 286
бројач наредби 215, 218
аутоматно пресликавање 156, 172
бројач петље 241
аутоматска обрада података 8
бројачки регистар 194
аутоматско непосредно уношење подата-
бројачко бистабилно коло 170
ка 256 аутоматско уношење података 256
бројка 13 бројна вредност 14 бројни систем 13
Б
бројни систем са основом 16
база бројног система 16
бројни системи са основом 2u 22
база података 281
бројчани код 49
базис 103, 117, 133
Булов израз 99
базни регистар 219
Булова алгебра 3, 97, 98
базно адресирање 227
Булова диференца 105, 109, 112
бајт 77
Булова функција 96
безадресни рачунар 216
Булова операција 103
безусловни програмирани пренос 250
бушена картица 80
бинарна аритметика 3, 28
бушена трака 80
бинарна функција 96
BH петља 84
бинарни број 20
BCD аритметика 33
бинарни бројач 194
BCD бројач 194
бинарни бројни систем 3, 16, 19
BCD код 24
бинарни индекс вектора 101
BCD подаци 24
бинарни код 51
BCD сабирање 33
бинарни сигнал 62 бинарно-декадни код 24
В
бинанро-кодирани декадни систем 24
вектор вредности 99
бинарно кодирање 51
вектор излаза 161
биротика 10, 286
вектор истинитости 101
бистабилно коло (елемент) 168, 195
вектор стања 161
бит 77
вештачка интелигенција 11, 43
бит парности 52
вештачка неуронска мржа 8
бит по бит операције 233
видео екран 257
битни прости импликант 125
вишеизлазна прекидачка мрежа 115
битска ћелија 84
вишепрограмски режим рада 265
376
видеотекс систем 281
групе наредби 229
вишепроцесорски рачунарски систем 265
GCR код 92
вишеразредни бинарни сабирач 151
густина записивања 85
вишезначна логика 115 вишезначна функција 96
Д
вишпрограмски режим рада 265
D бистабилно коло 170
вишеструка декомпозиција 143
даљинска конференција 282
вишеизлазни прости импликант 127
даљинска обрада 266
виши програмски језик 205
даљински приступ 259
власник маркера 277
даљински улаз-излаз 259
водеће рупице 81
датотека 64, 71
водећи-пратећи 170
двоадресни рачунар 215
вредност атрибута 64
двоелементна Булова алгебра 99
време кашњења 119
двострука прецизност 39
време централног процесора 269
DD код
временски мултиплекс 213
Де Морганова правила 98
врсте потпрограма 242
декадна цифра 13
врх стека 74
декадни бројни систем 13 Декартов производ 95
Г
декларативни програмски језик 205
Галоаова функција 96
декодер 147
генератор кода 272
декодирање 48
генерације програмских језика 205
декомпозиција аутомата 182
генерације рачунара 6
декомпозиција прекидачких функција 141
главна меморија 195
декрементер 152
главни именик 65
декрементирање 152
главни програм 242
делимичан коначни аутомат 166
главни рачунар 8
дељење 32
говорни улаз 83
демодулација 259
грана графа 72
демултиплексер 145
гранање програма 236
денормализовани број 41
граф 71, 159
дескриптор 286
граф аутомата 159, 166
детерминисаност алгоритма 201
графичка табла 83, 257
детерминистичко пресликавање 157
графичке примитиве 56
децимална корекција 246
графички видео екран 257
децимални индекс вектора 101
графички ликови 56
дигитализатор 83, 257
графички подаци 56
дигитализација сигнала 62
графички симбол 114
дигитални аутомат 6, 50, 155
Грејов код 26
дигитални подаци 4
377
дигитални рачунар 8
Е
дигитално коло 4, 113
EAN 82
дијаграм тока (алгоритма) 203
EBCDIC код 54
динамичка структура података 76
едитор 273
динамички тип података 69
едитор веза 273
директива асемблера 211
еквивалентна стања аутомата 186
директна адреса 224
еквивалентне трансформације догађаја
директна организација 67
176
директни приступ меморији 253
еквивалентни аутомати 158
директно адресирање 224
екран 83
директно кодирање предзнака 27
екран са додиром 82
дискретност алгоритма 201
екрански едитор 273
дисипација снаге 115
експерименти са аутоматима 178
дисјунктивна нормална форма 109
експерт 45
дисјунктна декомпозиција 143
експертни систем 45
дисјункција 97
експонент 38
дискретизација сигнала 59
експоннцијални облик броја 38
дискретна репрезентација броја 13
електронска пошта 282
дискретна функција 60, 95
електронска размена података 284
дискретни аутомат 50, 155
елемент података 71
дискретни комуникациони систем 58
елементарна сума 109
дискретни подаци 4, 43
елементарне функције 103
дискретни претварач 155
елементарни атрибут 63
дискретно представљање 4, 47, 49
елементарни аутомат 168, 187, 189
дистрибуирана обрада 266
елементарни производ 109
дистрибуирани рачунарски системи 267
елементарни корак 199
дистрибутор 145
елементарни регуларни изрази 177
DMA 254
елементарни тип података 68
DMA контролер 254
ентитет 43
ДНФ 109
ESPRIT пројект 9
догађај 174, 175, 176
ефективна адреса 222
доказивање потпуности 133
ефективна израчунљивост 50
домен 95
ефективна процедура 201
достављање података 46
ефективност алгоритма 201
друга генерација рачунара 7 дуалност 98
З
дужина низа 47
завршно стање 200
DF код 9
задавање аутомата 158 задавање аутомата помоћу графова 157 задавање аутомата помоћу матрица 160
378
задавање аутомата помоћу система прекидачких функција 163 задавање аутомата помоћу таблица прелаза/излаза 157
извршење програма 207 излаз 247 излазна активност 247 излазна азбука 156, 171
задавање коначних аутомата 158
излазна јединица 195
задавање прекидачких функција 100
излазна наредба 245
задавање пресликавања 172
излазни симболи 158
задатак анализе аутомата 173
излазни уређаји 257
задатак синтезе аутомата 173
извршење програма 221
задатак синтезе комбинационе мреже
извршна адреса 222
117
ИЛИ операција 97, 103, 135
заједничка таблица покривања 127
име датотеке 65
закидање циклуса 254
именик 65
закључивање 45
импликант прекидачке функције 119
закон негације 98
импликација 104
закон функционисања 114, 116
имплицент прекидачке функције 119
запис 64, 71
имплицитна адреса 223
запис алгоритама 202
имплицитна јединица 39
запис алгоритама дијаграмима тока 203
имплицитно адресирање 223
запис алгоритама скупом правила 202
импулсно-кодна модулација 62
запис броја 13
индекс 66
записивање без враћања на нулу 88
индекс вектора 101
записивање без враћања на нулу са ин-
индекс-секвенцијална организација 66
вертовањем јединице 89
индексирање 225
записивање двоструком фреквенцијом 90
индексирање докумената 286
записивање са враћањем на нулу 87
индексна организација 66
записивање фреквентном модулацијом
индексна реч 286
затворена класа 131
индексни регистар 219
затворени потпрограм 242, 243
индексно адресирање 225
заустављање извршења програма 246
индиректна адреса 224
знак 47
индиректно адресирање 224, 225
знаковни подаци 52, 69
инжењерство знања 9
знање 43, 45
иницијализација петље 240
зона 65
инкрементер 152 инкрементирање 152
И
инструкција 203
И операција 97, 103, 135
INTEGER 69
идентификатор 64, 209
интегрално опслуживање 280
извор 58
интегрисане услуге 280
извор сметњи 58
интелигентни систем 45
379
интелигентни терминал 259 интерактивна рачунарска графика 263 интерактивни рад 12, 281 интерно стање 155
канонички задатак апстрактне синтезе аутомата 184 канонички метод структурне синтезе аутомата 188
интерпретатор 207, 271
каноничКи модел аутомата 189
интерпретација бинарних низова 57
канонички полином 109, 132
интерпретација формата броја 41
канонички скуп догађаја 176, 181
интерфејс 249
Карноова карта 102, 121
информатика 9, 63
каталог 656
информације 43, 44
кашњење сигнала 114
информациона криза 1
Квајнова метода 123
информационе технологије 9
квант 61
информациони сервис 285
квантовање 59
информациони систем 11
квантовање по времену 59
ISO 53
квантовање по нивоу 59, 61
ISO 7 код 54
класа еквивалентних стања 186
ISO OSI архитектура 279
класа прекидачких функција 131
испитна петља 250
класификација бројних система 17
итеративна декомпозиција 143
класификација наредби 229
итерација (догађаја) 175
кључ 66, 73 кључна реч 286
Ј
КНФ 109
јединица за говорни излаз 259
код 5
јединице рачунара 195
код "више 3" 26
јединични комплемент 27
код грешке 40
једноадресна наредба 216
код операције 198
једноадресни процесор 221
код са ограниченом радном дужином 93
једноадресни рачунар 216
кодер 154
једнопрограмски режим рада 264
кодер приоритета 154
једноразредни одузимач 150
кодирана таблица прелаза 190
једноразредни сабирач 150
кодирање 48
језгро оперативног система 269
кодирање логичких вредности 114
језик 203
кодирање наредбе 198
језици Чомског 50
кодирање (пред)знака броја 26
ЈК бистабилно коло 170
кодирање стања аутомата 191
ЈУС 53, 54
кодна комбинација 48 кодна реч 48
К
кодна таблица 54
канал 248, 255
кодни низ 5, 48
каноничка форма 108
кодни систем 48
380
кодно растојање 51, 52
коначни аутомат 155
кодови за исправљање грешака 51
коначност алгоритма 201
кодови за откривање грешака 51
конверзациони систем 11
кодови за магнетно записивање 87
конвертор кода 154
коефицијент излаза 114
конзола 256
колизија 68
конјунктивна нормална форма 109
количина 14
конјункција 97
команда 250
контекстни подаци 56
командна палица 256
контрола парности 154
командна реч 250
контрола по модулу 154
командни језик оперативног система 270
контролер 249
комбинаторијски проблем 12
контролер директног приступа меморији
комбинациона мрежа 113, 116
254
комбинациона таблица 100
контролер канала 248
компакт диск → оптички диск
контролисани речник 286
компаратор 153
контролни бит 26, 52
компилатор 207, 271
концентратор 260
комплексни број 69
координатна палица 83
комплемент јединице 27
корективна тетрада 34
комплемент највеће цифре 27
корективни низ 34
комплемент основе 26
корекција 34
комплементарни bcd код 26
корен стабла 75
комплементатор 153
кориснички програми 274
композиција логичких елемената 115
коришћење логичких операција 234
композиција функција 111
крајње стање 200
компоненте вектора 99
кружење 234
компоненте рачунара 261 комуникација података 9, 11, 46, 275
Л
комуникациона мрежа 275, 277, 279
ланчана листа 74
комуникациони канал 58
ланчана организација 68
комуникациони процесор 260
ланчано смештање 78
комуникациони систем 57, 275
лексикографско уређење 101
комуникациони софтвер 262
лексичка анализа 272
комутација линија 278
линеарна листа 74
комутација пакета 278
линеарна структура података 72
комутација порука 278
линијски едитор 273
комутациони центар 260
лист стабла 75
комутациони чвор 277
LOGICAL 69
комутирана мрежа 277
логичка мрежа 4
коначна азбука 49
логичка организација података 64
381
логичка примитива 115
матрица излаза друге врсте 162
логичка структура података 76
матрица прелаза друге врсте 161
логичка сума 97
матрица прелаза прве врсте 160
логичка функција 96
матрица прелаза/излаза 160
логички запис 64
матрични пано 258
логичке операције 233, 234
машина 6, 49
логички елемент 4, 113, 115
машинска инструкција 197
логички модул 146
машинска наредба 197
логички подаци 56
машинска нула 42
логички производ 97
машинска операција 197
логичко кодирање 51
машинска опрема 261
логичко померање 152, 234
машинска реч 77
логичко пројектовање 115
машински вид 9
локална рачунарска мрежа 10, 276
машински језик 205
локални регистри 220
машински код 207
локација → меморијска локација
машински програм 207 машински читљиви документ 81, 256
М
медијум → меморијски медијум
магацин → магацинска меморија
међублочни размак 85
магацинска меморија 74, 216, 219, 232
меко форматизовање 86
магацинско адресирање 227
меморија 195
магистрала 213, 277
меморија стања програма 253
магистрала података 213
меморијска адреса → адреса
магнетизација 83
меморијска локација 77
магнетна трака 85
меморијска репрезентација 76
магнетни диск 85
меморијски елемент 155, 195
магнетни добош 85
меморијски медијум 79
магнетно записивање 83,
меморијско индиректно адресирање 225
магнетно тврди материјали 83, 85
метода исцрпљивања 101
Мак-Класкијева метода 123
метода грубе силе 101
макронаредба 206, 242
методе адресирања 222, 227
макстерм 107
методе приступа 66
манипулација знањем 43
методе развоја програма 210
мантиса 38
MFM код 91
маргина шума 115
микроелектроника 9
маркер 277
микропроцесор 228
Марковљеви алгоритми 50
микрорачунар 228
масовна меморија 85, 195
микрофилм 83, 258
масовност алгоритма 202
микрофилмски читач 259
матрица веза аутомата 160
микрофиш 83, 258
382
Милијев коначни аутомат 158, 165, 173
мултипрограмирање 265
минималан регуларни израз 179
мултипрограмски режим рада 265
минимална форма 117, 124
мултипроцесирање 265
минимално бинарно кодирање 51
мултипроцесор 266
минимално кодно растојање 51
Муров коначни аутомат 158, 164, 173
минимизација коначних аутомата 186 минимизација коњунктивних нормалних форми 130
Н надовезивање догађаја 175
минимизација полиномних форми 131
наменски рачунар 8
минимизација прекидачких функција 117,
n-арне НИ и НИЛИ функције 136
119, 130 минимизација система прекидачких функција 125
назив наредбе 209 NaN 40 намагнетисаност 83
минирачунар 8
наредба 203
минтерм 106
наредба без дејства 245
миш 83, 256
наредбе гранања 236
множење 30
наредбе за логичке операције 233
млевење бројева 43
наредбе за петље 241
модел комуникационог система 57
наредбе за померање 234
модели коначног аутомата 156
наредбе за потпрограме 242
моделирање реалних објеката 48
наредбе за пренос података 229
модификатор 209, 223
наредбе прескока 239
модификована Мак_класкијева метода
наредбе процесора 229
127
наредбе са променљивим форматом 217
модификована таблица прелаза 159
научно-техничке примене 11
модул → логички модул, стандардни мо-
начини преноса података 248
дул
НЕ операција 97, 103, 135
модул пуњења 207, 272
неброј 40
модулација 259
негативна логика 114
монопрограмски режим рада 264
негативно поткорачење 42
мрежа 76, 115
негативно прекорачење 42
мреже за интегрисане услуге 280
негација 97
мреже за контролу парности 154
недвосмислено правило 200
мреже за контролу по модулу 154
недетерминистичко пресликавање 157
мреже за пренос података 277
недефинисано стање 167
мрежна структура 76
недозвољене улазне речи 167
мрежни сервер 8
неједнозначно пресликавање 157
мултимедијалне поруке 282
нелинеарне структуре података 75
мултиплексер 145, 148, 260
неоријентисани граф 72
мултиплексни канал 255
непозициони бројни систем 14
383
непосредни операнд 224
објектни модул 272
непосредни унос података 82
област вредности 95
непосредно адресирање 224
област прекорачења 66
непотпуни комплемент 27
област применљивости алгоритма 200
непотпуно дефинисан коначни аутомат
области примене рачунара 11
167 непотпуно дефинисана прекидачка функција 100 непреопширни скуп простих импликаната 124
обрада знања 43 обрада информација 43, 46 обрада података 4, 6, 43, 46 обрада са поделом времена 265 обрасци са магнентим писмом 82, 256
непреопширно покривање 124
обрасци са маркирањем 81, 256
непрецизна логичка функција 96
обрасци са оптичким писмом 82
нерегуларности при извршењу аритме-
одвијање прекида
тичких операција 40
одмеравање 59
нетактовано бистабилно коло 170
одредиште 58
неурорачунар 8
одређеност алгоритма 201
НИ операција 104, 136
одређивање простих импликаната 122
ниво комбинационе мреже 116
одређивање регуларних израза 177, 184
низ 4, , 43, 47, 70, 71, 73
одузимање 30
низ битова 71
ознака 209
НИЛИ операција 104, 136
ознака наредбе 209
ниска → низ
октални бројни систем 16, 19, 20
NOP наредба 245
октално-бинарна конверзија 24
нормализовани облик броја 38, 41
операнд 209
нормална форма 109
оперативна меморија 77, 195, 222
носилац података 79
оперативни систем 266
носиоци излазних података 79, 83
опис објеката 63
носиоци улазних података 79, 80
опис садржаја документа 285
нотација 13
оптички диск 86
NPN класификација 140
оптички кабл 259
NRZ код 88
оптички комуникациони систем 280
NRZI код 89
оптички читачи 256
нула 42
оптички читљиви знаци 257
нумерација 13
општа дискретна функција 95
нумерички код 49
општенаменски рачунар 8 организација датотека 66
О обична прецизност 36, 39
организација једноадресног процесора 221
објект 43, 63
организација меморије 77
објект посматрања 43
организација података 63, 72
384
оријентисани граф 72
петља 115
основа 38
Пирсова функција 104
основа бројног система 16
ПНФ 109
основни програм 242
повезивач 207, 272
особине алгоритама 201
повратна спрега (веза) 115
особине операција И, ИЛИ, НЕ 103
подаци 43
особине операција НИ и НИЛИ 104
подела времена 265
особине операције импликација 104
подела наредби гранања 236
особине операције сума по модулу два
подела рачунара 8
103
позајмљивање циклуса 254
особине програмских језика 205
позитивна логика 114
отворени потпрограм 242
позитивно поткорачење 42
отклањање грешака 273
позитивно прекорачење 42
OCR 82
позиција 13 позиција знака броја 26
П
позициона репрезентација 15
пакет 278
позициони бројни систем 15
пакет дискова 86
појединачна обрада 264
пакетна обрада 264
показивач → указатељ
палица 83
покомпонентне логичке операције 233
памћење и прослеђивање 279
покретни зарез 38
памћење података 4, 46
покривање прекидачке функције 119
папирни носиоци података 83
поларизовани експонент 40
паралелна веза аутомата 183
поларизовани канонички полином 109,
паралелна обрада 265 паралелни вишразредни бинарни сабирач 151
139 поларизовано представљање знака броја 28
паралелни пренос 213, 248
поливалентна логика 115
паралелни рачунар 266
поливалентна функција 96
паралелни регистар 193
полилинија 56
параметри логичких елемената 114
полимаркер 56
параметри потпрограма 244
полином по модулу два 109, 110
парцијална прекидачка функција 100
полиномна нормална форма 109
парцијалне рекурзивне функције 50
полуодузимач 151
парцијално пресликавање 49, 171
полусабирач 150
ПДНФ 108
поље 65, 70, 73
PE код 89
помак → померај
периферни уређај 247
померач 151
персонални рачунар 8
померај 27, 28, 225
пета генерација рачунара 8
померени експонент 40
385
помоћни програм 271, 274
прва генерација рачунара 7
порука 58, 284
превођење бројева 16
посебне наредбе за петље 241
предајник 58
пословна обрада 11
предзнак броја 26
пословни подаци 284
предмет 43
посредно уношење 256
представљање бројних података 35
постепена декомпозиција 212
представљање догађаја у аутоматима
постепена детаљизација 212 постулати Булове алгебре 97 поткорачење 42
174 представљање ненумеричких података 52
поткуб 120
представљање података 4, 43, 79
потпрограм 241
представљања прекидачких функција 106
потпуна дисјунктивна нормална форма
прекид 251
108 потпуна коњунктивна нормална форма 108
прекид програма 251 прекидачка алгебра 97, 99 прекидачка мрежа 4, 115
потпуна полиномна нормална форма 108
прекидачка теорија 115
потпуна сума 106
прекидачка функција 96, 99, 100
потпуни бинарни сабирач 150
прекидни програм 252
потпуни комплемент 27
прекидни сигнал 252
потпуни одузимач 151
прекорачење 42
потпуни производ 106
прелаз од Милијевог на Муров аутомат
потпуни скуп прекидачких функција 117, 133 потпуно бинарно стабло 76 потпуно дефинисан аутомат 167
165 прелаз од Муровог на Милијев аутомат 164 пренос параметара потпрограма 244
потпуност система излаза 188
пренос управљања 242
потпуност система прелаза 188
преопширан потпуни скуп 133
правила алгоритма 5
преопширно кодирање 51
правилна конструкција (програмског јези-
прескок 239
ка) 204
претварање дискретних информација 155
правилна фигура (површина) 121
претварање података 4, 6
правило апсорпције 98, 122
претпроцесор 271
правило безусловног гранања 203
претходник 72
правило додељивања 203
пречишћавање програма 273
правило најмањих промена 192
привремени носиоци података 83
правило сажимања 98
пријемник 58
правило удруживања 122
прикупљање података 46, 256
правило условног гранања 203
примарна област 66
празан низ 47
примарни кључ 66
386
примене рачунара
променљиви формат наредбе 217
примене дискретних функција 97
проналазак рачунара 2
принцип дуалности 98
проста дисјунктна декомпозиција 142
принцип магнетног записивања 83
проста функционална декомпозиција 141
принцип одвијања прекида 252
прости атрибут 63
принцип супституције 98
прости импликант 122
припрема петље 240
простирање грешке 89
природни бројни систем 16
просто кодирање знака броја 27
природни језик 203
просто функционално растављање 141
природни BCD код 25
протокол 279
приступ базама података 280
процедурални програмски језик 205
прихватни регистар меморије 217
проширени формат 40
програм за опслуживање прекида 252
процедура 200
програм за отклањање грешака 273
процедура и алгоритам 199
програм за повезивање 207
прстен 277
програм за рачунар 199
пругасти код 82
програмабилна логичка поља 147
псеудобулова функција 96
програмабилна поља логичких елемена-
псеудологичка функција 96
та 147
псеудонаредбе асемблера 210
програмабилне гејтовске матрице 147
пунилац 207
програмабилне компоненте 147
пут 65
програми техничке подршке 262
пут у аутомату 179
програмирани пренос 250
PCM 62
програмирани улаз-излаз 250 програмирање (рачунара) 199 програмска петља 239
Р равномерни код 48
програмска подршка 9, 261
рад са знањем 43
програмски бројач 215, 218
рад са магацином (стеком) 232
програмски језици 203
рад у реалном времену 266
програмски преводиоци 203, 206, 271
радна станица 8, 259, 276
програмски прекид 251
развијање елементарне суме 110
програмски систем 271
развијање елементарног производа 110
програмски циклус 239
развој одозго наниже 212
програмско релативно адресирање 227
развој програма 210
продукција 49
развој Рида-Милера 109
пројектовање алгоритма 199
разноврсност врста (колона) 142
пројектовање помоћу рачунара 9
разред 13
производ догађаја 175
расплинута функција 96
промена 63
растер 56
промена типа аутомата 164
растерска графика 56
387
расута организација 67
речник података 64
расуто адресирање 67
решавање комбинаторијских проблема
рачунар 2, 195
12
рачунари са упамћеним програмом 199
решавање проблема 211
рачунарска графика 263
референтни модел 279
рачунарска техника 9
римске цифре 15
рачунарске мреже 275
RZ код 87
рачунарски интегрисана производња 9
RLL код 92
рачунарски програм 199
RS бистабилно коло 170
рачунарски систем 195
ручно уношење 255
рачунарство 9 рачунска машина 6
С
RB код 88
сабирање 28
REAL 69
сабирач са два улаза 150
реални бројеви 69
сабирач са три улаза 150
регистар 193
сабирница 213
регистар дужине блока 255
савршена дисјунктивна нормална форма
регистар кодова стања 219 регистар инструкција 218 регистар наредби 218 регистар услова 219 регистарско адресирање 224
108 савршена коњунктивна нормална форма 108 савршена полиномна нормална форма 108
регистарско индиректно адресирање 225
садржај документа 285
регистри опште намене 220
садржај меморијске локације 77
регистри процесора 217
самодуална функција 132
регистровање података 79
саопштење 58
регуларни израз 177, 184, 185
сателитски комуникациони систем 280
ред → ред чекања
светлосна оловка 83
ред чекања 74
СДНФ 108
редна веза аутомата 183
сегмент 228
редундантно кодирање 51
сегментно адресирање 228
редундантни код 51
секвенцијална машина 156
режими обраде 264
секвенцијална мрежа 116, 155
режими рада 264
секвенцијална организација 66
релативна организација 67
секвенцијално смештање 78
релативно адресирање 227
секундарна меморија 85
реорганизација датотеке 67
секундарни кључ 66
ресурси рачунарских система 268
селектор 145
референтни модел 279
селекторски канал 255
RECORD 71
388
серијски вишеразредни бинарни сабирач 151
систем за управљање базама података 262
серијски пренос 213, 248
систем нумерације 13
серијски регистар 194
систем прекида 251
SET 70
систем прекидачких функција 163
сигнал блокирања 147
систем реалног времена 266
сигнал дозволе 147
систем функција излаза 163
симбол 47
систем функција прелаза 163
симболичка имена 209
системи за претраживање информација
симболичке ознаке наредби (инструкција) 230
285 системи за размену информација 9
симболички машински језик 207
системи засновани на знању 45
симболички назив 209
системи који раде у реалном времену 11
симболички облик машинске наредбе 209
системи научно-техничких информација
симболички опис објеката 48
285
симболичко име 209
системи Поста 50
симболичко машинско програмирање 210
системски софтвер 261
синтаксна анализа 272
системи за интерактивни рад 11
синтаксни анализатор 272
скаларни тип података 68
синтеза аутомата 173
скенер 257
синтеза аутомата на основу регуларних
складиштење података 4, 46, 80
израза 185 синтеза аутомата у хомогеним структурама 192
СКНФ 108 скок → гранање скраћени производ 120
синтеза гласа 259
скуп знакова 5, 47
синтеза комбинационих мрежа 117, 135
скуп правила 202
синтеза коначних аутомата 171, 183, 187
скуповни тип података 70
синтеза мрежа са мултиплексерима 148
слаби потпуни скуп 134
синтеза са декодерима 149
слабо спрегнути процесори (рачунари)
синтеза са елементима сума по модулу два 139
267, 276 следбеник 72
синтеза са НЕ, И и ИЛИ елементима 135
словни код 49
синтеза са НИ и НИЛИ елементима 136
слог 64, 71
синтеза са стандардним модулима 148
сложена функционална декомпо- зиција
синхронизација 247
142
синхронизациони интервал 6, 155
сложени тип података 68
систем дискретних функција 95
сложено име датотеке 65
систем за обраду података 195
сложени атрибут 63
систем за претраживање информација
смена 49
285
софтвер 261
389
софтвер за рачунарску графику 263
структура процесора 213
спајање догађаја 175
структура спољне меморије 77
спектар прекидачке функције 148
структурна анализа 174
спектралне методе 148
структурна синтеза 135, 174, 187
специјалне мреже 153
структурна теорија аутомата 173
специјалне наредбе 246
структурна шема 116, 195
специјални рачунар 8
структурни атрибут 63
специјални телекомуникациони сервиси
структурни тип података 68
280 сплајн функције 56
структурно потпуни систем елемената 187
СПНФ 108
сукцесивно смештање 78
спољна меморија 195
сума по модулу два 26, 103, 108, 139
спрежна мрежа 249
супермикропроцесори 8
спрезање улазно-излазних уређаја 248
суперпозиција прекидачких функција 111
средства за обраду података 10
суперрачунар 8
стабло 75
супституција → суперпозиција
стаза 67, 86
суседни вектори 102
стандардни модули 144, 148, 150 стандардни аритметички модули 150
Т
стандардни бинарни код 53
Т бистабилно коло 170
стандардни комбинациони модули 144
табела → таблица
стандардни секвенцијални модули 193
таблица 73
стандардни типови података 68
таблица излаза 159
стандардни функционални блокови 183
таблица истинитости 100
стање 155
таблица кореспонденције 172, 184
старт бит 248
таблица множења 31
статистичка база података 285
таблица одговора 172
статичка структура података 76
таблица побуде елементарних аутомата
статички тип података 69
189
стек 74, 216, 232
таблица покривања 124
степен комбинационе мреже 116
таблица прелаза 159
степени броја 2 21
таблица прелаза/излаза 159
стоп битови 248
таблица сабирања 29
STRING 71
таблица саборања BCD кода 33
структура датотеке 65
таблица функција побуде 190
структура записа 65
такт 50
структура именика (каталога) 65
тактни интервал 6, 50, 155
структура машинске наредбе 197
тактовано бистабилно коло 170
структура оперативне меморије 77
тастатура 82, 256
структура података 71, 72
тачност превођења бројева 19
390
тврдо форматизовање 86
троадресни рачунар 215
тежина 15 тежински бинарно-декадни код 25
У
тежински бројни систем 15
удруживање 122
телекомуникациони сервис 10, 280
узорковање 59
телеконференција 282
указатељ 68, 74
телематика 10
указатељ магацина (стека) 219
телетекс систем 283
улаз 201, 247
телетекст систем 281
улаз-излаз 247
телефакс 283
улаз-излаз управљан прекидом 251
температурни опсег 115
улазна азбука 156, 171
теорема одмеравања 60
улазна активност 247
теорема развоја за дисјунктивне форме
улазна јединица 195
111 теорема развоја за каноничке полиноме 112 теорема развоја за коњунктивне форме 112 теорема развоја за полиномне форме 112
улазна наредба 244 улазни симболи 158 улазни уређаји 255 улазно-излазне наредбе 244 улазно-излазни подсистем 247 улазно-излазни пренос управљан прекидом 253
теореме Булове алгебре 98
улазно-излазни процесор 248, 255
теореме развоја 111, 112
улазно-излазни уређаји 247
теорија алгоритама 5, 49, 50
УЛМ 146
теорија аутомата 156
улога рачунара 2
теорија комуникација 57
универзална функција 132
теорија прекидачких функција 115
универзални догађај 177
теоријски основи рачунара 2
универзални логички модул 146
терминал 259
универзални рачунар 8
тестирање програма 199
унија догађаја 175
тетрада 24
унос података 82
тип података 68
упамћени програм 199
Тјурингова машина 50
упоредиви вектори 132
тренутни носиоци података 83
управљање оперативном меморијом 269
трајни носици података 83
управљање програмима 269
трансакција 63
управљање процесима 11
трансформација кључа 67
управљање улазом-излазом 269
трансформација података у информације
управљачка јединица 196
45
управљачка магистрала 213
трећа генерација рачунара 7
управљачка наредба 236
тријада 23
управљачки знаци 55, 56
391
управљачки подаци 56
функција излаза 158, 188
управљачки програми 261
функција која задржава јединицу 131
управљачки пулт 256
функција која задржава нулу 131
управљање улазно-излазним преносом
функција непарности 154
249
функција оперативног система 269
UPC 82
функција парности 154
уређај за излаз на микрофилм 258
функција побуде 189
уређај за претварање података 49
функција прелаза 158
услови гранања 237, 238
функционална декомпозиција 141
условни програмирани пренос 250
функционални елемент 213
условно гранање 236 услужни програм 271 усмереност алгоритма 201
Х хардвер 261 Хафмен-Муров модел аутомата 188
Ф фаза извршења наредбе 221
Хафменов код 26 хексадекадни бројни систем 16, 19, 20
фаза припреме наредбе 221
хексадецимални → хексадекадни
фазе решавања проблема 212
Хемингове теореме 52
фазна модулација 90
Хемингово растојање 51
фазно кодирање 89
хексадекадно-бинарна конверзија 24
факсимил 283
хибридни рачунари 8
фактографска база података 285
хијерархијска декомпозиција оперативног
факторизована минимална форма 135
система 269
феромагнетизам 83
хиперкоцка → хиперкуб
физичка организација података 64
хиперкуб 102, 120
физичка структура података 76
хистереза 85
физички запис 64
хомогене мреже 147
фиксна меморија 147
хомогене структуре 192
фиксни зарез 37 фиктивне независно променљиве 105
Ц
FILE 71
цели бројеви 68
флип-флоп 168
целобројна функција 95
FM код 90
целобројни подаци 36
формална теорија 2
централна јединица 195
формат (машинске) наредбе 214
централни процесор 195
формат података 86
цикличка дубина регуларног израза 177
формат представљања бројева 40, 41
цикличка редундантна контрола 248
форматизовање 86
циклички поступак 239, 240
формирање извршне адресе 222
цикличко померање 235
фреквентна модулација 90
циклус извршења наредбе 221, 222
392
циклус обраде података 46
чврсто спрегнути процесори 266
цилиндар 86
четвороадресни рачунар 215
циркулација 152
четврта генерација рачунара 8
цифарски аутомат 50, 155
читачи докумената 256
цифарски подаци 4
читачи маркираних образаца 256
цифра 13
читљиви документ 81
CMC код 82 COM уређај 83
Ш
COMPLEX 69
Шеферова функција 133
цртачи 259
ширина пропуског опсега 60
CHARACTER 69
шифарски систем 48 шифра 48
Ч чвор графа 73
штампач 258 шум 58
393
ОСНОВИ РАЧУНАРСКЕ ТЕХНИКЕ − Основна и допунска литература −
Основна литеартура 1. Тошић, Ж.Ј., "Основи рачунарске технике", Ниш, Чуперак плави, 1995. 2. Stanković, R.S., Stanković, M., "Logičko projektovanje", Beograd, Nauka, 1991. 3. Stanković, M., i dr., "Osnovi računarske tehnike: praktikum za laboratorijske vežbe", Niš, Univerzitet u Nišu, 1997. 4. Stanković, M., i dr., "Zbirka zadataka iz osnova računarske tehnike", Niš, Elektronski fakultet, 1998.
Допунска литература 1. Aleksić T., "Logička sinteza digitalnih sistema", Beograd: Naučna knjiga, 1971. 2. Lazić, B., "Logičko projektovanje računara", Beograd: Nauka, 1994. 3. Obradović, D., "Osnovi računarstva", knjige 1,2, Novi Sad, Fakultet tehničkih nauka, 1992; Novi Sad, Stylos, 1996. 4.
Tošić, Ž., "Principi asemblerskog programiranja", 2. izd., Beograd: Naučna
knjiga, 1989. 5. Klem, N., "Uvod u primenu PC računara", Beograd, Građevinski fakultet, 1995. 6. Lazić, B., Urošević, Z., "Zbirka rešenih zadataka iz logičkog projektovanja", Beograd, Nauka, 1994.