Введення.
У своїй роботі я спробував викласти загальну схему роботи процесора і проілюструвати її за допомогою програми-імітатора.
У першій частині курсової роботи мною викладені основні теоретичні відомості про логічне пристрої мікропроцесора, його призначення і принципи роботи. При цьому я не орієнтувався на конкретний тип процесора.
У другій частині я розглядаю керівництво користувача до своєї програми-імітаторів. Дана програма написана в середовищі Delphi. При написанні даної програми я орієнтувався на процесор типу PDP, як найбільш відповідного для вивчення і найбільш часто розглядається в підручниках інформатики.
Мікропроцесор як основа ЕОМ.
Внутрішня структура мікропроцесора.
Будь-яка ЕОМ призначена для обробки інформації причому, як правило, здійснює цю обробку опосередковано - представляючи інформацію у вигляді чисел. Для роботи з числами машина має спеціальну найважливішу частину - мікропроцесор. Це універсальне логічне пристрій, який оперує з двійковими числами, здійснюючи найпростіші логічні і математичні операції, і не просто як доведеться, а відповідно до програми, тобто в заданій послідовності. Для зберігання цієї заданої послідовності служать запам'ятовувальні пристрої - ЗУ. ЗУ бувають постійними - ПЗУ, в яких інформація зберігається, не змінюючись як завгодно довго, і оперативними - ОЗУ, інформація в яких може бути змінена в будь-який момент відповідно до результатів її обробки. Процесор спілкується з ОЗУ і ПЗУ через так зване адресний простір, в якому кожна комірка пам'яті має свою адресу.
МП складається з набору регістрів пам'яті різного призначення, які певним чином пов'язані між собою і обробляються відповідно до деякої системою правил. Реєстр - це пристрій, призначений для зберігання і обробки двійкового коду. До внутрішніх регістрів процесора відносять: лічильник адреси команд, вказівник стеку, регістр станів, регістри загального призначення.
Наявність лічильника команд було покладено ще в роботах фон Неймана. Роль лічильника полягає в збереженні адреси чергової команди програми й автоматичному обчисленні адреси наступної. Завдяки наявності програмного лічильника в ЕОМ реалізується основний цикл виконання послідовно розташованих команд програми.
Стек - це особливий спосіб організації пам'яті, при використанні якого достатньо зберігати адреса останньої заповненої комірки ОЗУ. Саме адреса останньої заповненої комірки ОЗУ і зберігається в покажчику стека. Стек використовується процесором для організації механізму переривань, обробки звернення до підпрограм, передачі параметрів і тимчасового зберігання даних.
У регістрі станів зберігається інформація про поточні режимах роботи процесора. Сюди ж можна відслідковувати результати виконуваних команд, наприклад: чи результат дорівнює нулю, негативний чи він, чи не виникли в ході операції помилки і т.п. Використання та аналіз у цьому регістрі відбувається побітне, кожен біт регістра має самостійне значення.
Регістри загального призначення (РОН) служать для зберігання поточних оброблюваних даних чи їх адреси в ОЗУ. У деяких процесорів регістри функціонально рівнозначні, в інших призначення регістрів суворо обмовляється. Інформація з одного регістру може віддаватися в іншій.
Система команд мікропроцесора
Незважаючи на бурхливу еволюцію обчислювальної техніки, основний набір команд доволі мало змінився. Система команд будь-який ЕОМ обов'язково містить такі групи команд обробки інформації.
1. Команди передачі даних (перепис), що копіюють інформацію з одного місця в інше.
2. Арифметичні операції, до яких в основному відносять операції додавання і віднімання. Множення і ділення зазвичай реалізується за допомогою спеціальних програм.
3. Логічні операції, що дозволяють комп'ютера проводити аналіз одержуваної інформації. Найпростішими прикладами команд даної групи можуть служити порівняння, а також відомі логічні операції і, або, не.
4. Зрушення двійкового коду ліворуч і праворуч. У деяких випадках зрушення використовуються для реалізації множення і ділення.
5. Команди введення і виведення інформації для обміну з зовнішніми пристроями. В деяких ЕОМ зовнішні пристрої є спеціальними службовими адресами пам'яті, тому введення і вивід здійснюється за допомогою команд перепису.
6. Команди керування, що реалізують нелінійні алгоритми. Сюди відносять умовний і безумовний переходи, а також команди звернення до підпрограмі (перехід з поверненням). Часто до цієї групи відносять операції з управління процесором типу зупинка чи ні операції.
Будь-яка команда ЕОМ зазвичай складається з двох частин - операційної і адресної. Операційна частина що також називається кодом операції вказує, яку дію необхідно виконати з інформацією. Операційна частина є у будь-якої команди. Адресна частина описує, де використовується інформація зберігається і куди помістити результат. У деяких командах керування роботою машини адресна частина може бути відсутніми, наприклад, у команді зупину.
Код операції можна уявити собі як деякий умовний номер у загальному списку команд. В основному цей список побудований у відповідності з певними внутрішніми закономірностями.
Адресна частина має значно великою різноманітністю. Основу адресної частини складає операнд. Залежно від кількості можливих операндів команди можуть бути одно-і двоадресного. У двоадресного командах результат записується або в спеціальний регістр (суматор), або замість одного з операндів.
Способи адресації даних
Способи (або методи) адресації не що інше, як способи вказівки на ті чи інші комірки пам'яті, з якими повинен маніпулювати оператор. Існує багато різних методів адресації. Кількість їх залежить від типу процесора. Наявність великої кількості способів адресації забезпечує високу гнучкість в побудові програм і є великою перевагою системи команд даного типу ЕОМ. Способи адресації практично однакові для всіх команд, в яких присутні операнди. У цьому розділі я детально розглядаю тільки три основні методи адресації, які застосовуються майже у всіх процесорах.
Реєстрова адресація. При цьому способі операндом є один з регістрів загального призначення. Число зберігається безпосередньо в реєстрі. Записується як Rn, де n - номер регістра.
Непряма адресація. При цьому способі адресації в одному з регістрів загального призначення міститься не саме число, з яким потрібно працювати, а його адресу, то є номер комірки пам'яті, в якому число знаходиться. Записується як (Rn), де n - номер регістра.
Автоінкрементним адресація. Цей вид адресації дещо складніше двох попередніх. Крім основного дії (непрямого звернення до комірки пам'яті), при використанні цього методу, відбувається ще зміна адреси цього звернення. У даному випадку збільшується покажчик адреси комірки пам'яті, до якої ми звертаємося, тобто вміст регістра, що служить дороговказом адреси. Дане збільшення відбувається автоматично, без будь-якої команди. Записується ця адресація як (Rn) +. Те, що знак + стоїть після імені регістра, натякає на порядок виконання команди: спочатку відбувається операція з осередком, на яку вказує адреса поміщений у регістр Rn, а потім вже вміст регістра збільшується на 2 (якщо оператор працює зі словом, то перехід до адреси наступного слова), або на 1 (якщо оператор працює з байтом, перехід до адреси наступного байта). Даний спосіб адресації застосовується для роботи з масивами і при використанні стека (наприклад, при використанні підпрограм).
Існує ще один особливий спосіб адресації, який розглядається окремо. Мова йде про роботу зі стеком. Стек - неявний спосіб адресації даних, при якому інформація записується і зчитується тільки послідовним чином з використанням покажчика стека. Стек завжди має єдиний вхід і вихід інформації - для зберігання його адреси і потрібен покажчик стека. При запису даних у стек процесор виконає наступне:
1) зменшить покажчик стека на 2 (ціле число займає в пам'яті 2 байти);
2) запише дані за отриманим адресою.
При отриманні даних з стека процесор проробить сліду шиї:
1) вважає дані з стека;
2) збільшить покажчик на 2.
У командах роботи зі стеком адреса ОЗУ не фігурує у явному вигляді. Але при цьому мовчки передбачається, що покажчик стека вже задано. При завданні покажчика треба бути уважним. Якщо покажчик стека визначений неправильно, то запис у стек може зруйнувати корисну інформацію в ОЗУ.
Таким чином, ми розглянули способи адресації інформації, які існують майже у всіх типах процесора і які я використав у своєму імітаторі.
Керівництво користувача.
Опис програми
Викладену вище структуру мікропроцесора я спробував реалізувати у своїй програмі.
Основну частину програми складає Редактор. Він являє собою місце, де вводиться програма, яку виконує процесор. Кожна команда вводиться в свою допомогу, що має адресу. Розмір адресного простору редактора становить 1Кб. Початкова осередок має адресу 1000, кінцева - 2024. Як операнда в одно-і двоадресного командах виступає один з регістрів загального призначення. Я виділив наступну систему команд.
1. Одноадресних команди.
Представлені в наступній формі: Операція операнд ОП1.
Очистити ОП1-обнуляє значення операнда.
Збільшити на 1 ОП1 - збільшує значення операнда.
Зменшити на 1 ОП1 - зменшує значення операнда.
2. Двоадресного команди.
Представлені в наступній формі: Операція перший операнд ОП1 другу операнд ОП2.
Переслати ОП1 в ОП2 - пересилає значення першого операнда в другій операнд.
Додати ОП1 до ОП2-додає значення першого операнда до другого операнд, результат у другому операнд.
Відняти ОП1 з ОП2 - віднімає значення першого операнда з другого операнда, результат у другому операнд.
Порівняти ОП1 з ОП2 - порівнює різниця другого і першого операнда з нулем, значення операндів не змінюються, результат впливає на стан регістра станів.
3. Безадресні команди.
Повернення з підпрограми - здійснює повернення з підпрограми в клітинку, наступну за командою що викликала цю підпрограму, використовується тільки в підпрограма
Стоп - команда зупину, ставиться обов'язково в кінці програми, після її виконання ні які команди не виконуються.
4. Команди переходу.
Перехід на К слів - безумовний перехід - здійснює перехід на К слів.
Виклик підпрограми за адресою - перехід на адресу К з запам'ятовуванням адреси повернення для команди повернення з підпрограми.
Якщо перехід на К слів - перехід на К слів, якщо результат 0.
Якщо = перехід на К слів - перехід на К слів, якщо результат = 0.
Якщо> = перехід на К слів - перехід на К слів, якщо результат> = 0.
Якщо> перехід на К слів - перехід на К слів, якщо результат> 0.
Якщо <перехід на К слів - перехід на К слів, якщо результат
Якщо
R5 = +00000 1004 Збільшити на 1 R5 1034 3
R7 = +01000 1006 Порівняти R0 з R1 1036 -4
1008 Якщо
1010 Cтоп
4. Програма з підпрограмою.
Дано два масиви однакової розмірності. Провести обмін максимальними елементами. В якості підпрограми оформити знаходження максимального елемента масиву.
Адреса початку першого масиву 1050 зберігається в R0. Адреса кінця першого масиву 1060 в R1. Адреса початку другого масиву 1070 в R2. Адреса кінця другого масиву 1080 в R3. Початок стека 1200 в R6.
Регістри Редактор Пам'ять
R0 = +01050 1000 Виклик підпрограми 1050 1
R1 = +01060 1002 за адресою 1022 1052 2
R2 = +01070 1004 Переслати R2 в R0 1054 3
R3 = +01080 1006 Переслати R3 в R1 1056 -2
R6 = +01200 1008 Переслати R4 в R2 1058 4
R7 = +01000 1010 Переслати R5 в R3 1060 1
1012 Виклик підпрограми ...
1014 за адресою 1022 1070 -2
1016 Переслати R2 в (R5) 1072 5
1018 Переслати R4 в (R3) 1074 6
1020 Стоп 1076 -3
1022 Очистити R4 1078 7
1024 Переслати R0 в R5 1080 -7
1026 Переслати (R0) + в R4
1028 Порівняти (R0) з R4
1030 Якщо <перехід на 2 слів>
1032 Переслати R0 в R5
1034 Переслати (R0) в R4
1036 Збільшити на 1 R0
1038 Збільшити на 1 R0
1040 Порівняти R0 з R1
1042 Якщо
1044 Повернення
У даній програмі регістри R4 і R5 використовуються як допоміжні.
Висновок.
Розроблена програма-імітатор дозволяє наочно ілюструвати логічну структуру процесора і показати як він виконує програми написані користувачем. Фактично мій імітатор багато в чому повторює написану для ПЕОМ "Yamaha" програму-імітатор PDP.
Програма призначена для вивчення основних принципів пристрої ЕОМ, а саме, пристрої мікропроцесора як основної частини практично будь-який ЕОМ. Даний імітатор дозволяє користувачеві написати свою програму, використовуючи дану систему команд, і простежити, як процесор виконує задану програму. У систему команд імітатора були відібрані найбільш важливі інструкції, призначені для обробки цілих чисел.
Як вже було сказано дана програма написана в середовищі Delphi і зберігається на диску у файлі pdp.exe. Приклади запропоновані в тексті курсової роботи ви також зможете знайти на диску в файлах test1.pdp, test2.pdp, test3.pdp, test4.pdp. Програма призначена для роботи на компьтеров PC AT 486 і вище. На комп'ютері також необхідна наявність операційної системи WINDOWS'95/98. Рекомендується також мінімальна роздільна здатність екрану 800 на 600.
Література.
1. Еремин Е. А. Як працює сучасний комп'ютер. - Пермь, 1997.
2. Зальцман Ю. А. Архітектура та програмування мовою асемблера БК-0010. Інформатика і освіта, 1990, № 1-4.
3. Смирнов А. Д. Архітектура обчислювальних систем. - М.: "Наука", 1990.
4. Фаронов В. В. Delphi 3 Навчальний курс. - М.: "Нолидж", 1998.
5. Туррот П., Брент Г. та ін Супербіблія Delphi 3. - Київ, "ДіаСофт", 1997.
6. Орлик С. Секрети Delphi на прикладах. - М.: "Бином" 1996.
1
- 12 -