КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Кодування команди та програми
Кодування та виконання команд в комп’ютері Порядок виконання програм і команд в комп’ютері Розділ 3 В цьому розділі розглядаються формати і типи команд, способи кодування та виконання команд в комп’ютері, включаючи конвеєризацію виконання команд - один з типів паралелізму на рівні команди, який може підвищити продуктивність виконання послідовності команд при відсутності конфліктів в конвеєрі. Наводиться класифікація архітектури комп’ютера за типом адресованої пам’яті: стекова, акумуляторна, та на основі регістрів загального призначення. Для кожної архітектури аналізуються переваги і недоліки, які розглядаються в контексті застосування запропонованої архітектури. Розглядаються різні способи адресації, включаючи безпосередню, пряму, непряму, базову, індексну, сторінкову і стекову. Наявність множини способів забезпечує гнучкість і зручність для програміста. Архітектура комп’ютера розглядається на рівні системи команд, який видимий програмісту, що працює на мові асемблера та розробнику компіляторів, що дозволяє встановити межу між апаратним і програмним забезпеченням. Проводиться поділ комп’ютерів за складом системи команд на наступні типи: комп’ютери з складною, з простою, з доповненою та спеціалізованою системою команд.
Більшість сучасних комп’ютерів працюють за принципом програмного керування, згідно з яким над даними виконуються операції, тип яких вказується командами, які зберігаються в тій же пам’яті, що і дані. Послідовність команд, за яким виконується задача, називається програмою. Для того, щоб виконати на комп’ютері задачу, необхідно: - забезпечити вибірку команд програми із його пам’яті в заданій послідовності, організувавши звернення до неї за відповідними адресами; - забезпечити розпізнавання типів виконуваних операцій; - організувати звернення до пам’яті за відповідними адресами для вибірки необхідних для виконання кожної команди даних; - організувати виконання над даними операцій відповідно до вказівок команд; - запам’ятати результати обчислень. Розглянемо як це відбувається в комп’ютері детальніше. Команда в комп’ютері зберігається в двійковій формі. Вона вказує тип операції, яка має бути виконаною, адреси операндів, над якими виконується операція, та адреси розміщення результатів виконання операції. Відповідно до цього команда складається з двох частин, як це показано на рис. 3.1: коду операції та адресної частини.
Коп А
0 k-1 0 m-1 Рис. 3.1. Кодування команди Поле коду операції (КОП) займає k розрядів. Ним може бути закодовано до N = 2k різних операцій. Кількість двійкових розрядів, які відводяться під код операції, вибирається таким чином, щоб ними можна було закодувати всі виконувані в даному комп’ютері операції. Якщо деякий комп’ютер може виконувати Nc різних операцій, то мінімальна розрядність поля коду операції k визначається наступним чином: k = [log2 Nc], де вираз в дужках означає заокруглення до більшого цілого. Поле адреси (адресна частина) займає m розрядів. В ньому знаходяться адреси операндів. Кожна адреса займає mi розрядів, де і - номер адреси (і=1,2,...1), 1 - кількість адресних полів. Кожною адресою можна адресувати пам’ять ємністю 2mi слів. Детальна інформація про зв’язок між ємністю пам’яті та розрядністю адреси наведена в розділі 9, в якому описана будова пам’яті. Розмір команди k + m повинен бути узгодженим з розміром даних, тобто бути з ним однаковим або кратним цілому числу, що спрощує організацію роботи з пам’яттю. Як правило, розмір команди рівний 8, 16, 32 біти. При написанні програми крім двійкової можуть використовуватись й інші форми представлення команд: вісімкова, шістнадцяткова, символьна (мнемонічна). Використання вісімкового і шістнадцяткового кодування дозволяє скоротити записи і спростити роботу програміста. Як відомо 3 двійкових розряди (тріада) замінюються на 1 вісімковий, а 4 двійкових розряди (тетрада) - на 1 шістнадцятковий. Приклад: (000011111111)2 = (0377)8 = (0FF)16 Мнемонічне кодування спрощує процес написання, читання і відлагодження програми. Основний принцип такого кодування - кожна команда представляється 3-х або 4-х буквеним символом, який показує назву команди. Деякі приклади мнемонічного кодування: ADD - додати (add), SUB - відняти (subtract), MPY - перемножити (multiply), DIV - поділити (divide), LOAD - зчитати дані з пам’яті (load data from memory), STORE - записати дані в пам’ять (store data to memory). Операнди також представляються символічно. Наприклад команда ADD R, Y означає додавання вмісту комірки пам’яті Y до вмісту регістра R. Зауважимо, що операція виконується над вмістом, а не над адресою комірки пам’яті та регістра. Таким чином, з’являється можливість написання машинних програм в символічній формі. Повний набір символічних назв і правила їх використання утворюють мову програмування, відому як асемблерна мова. Символічні імена називаються мнемонічними, а правила їх використання для створення команд і програм називаються синтаксисом мови. Програма, яка переводить із мнемонічного коду асемблерної мови в машинний, називається асемблером. Команди, які використовуються для переводу вихідної програми в асемблерну, називаються командами асемблера. Ці команди вказують як інтерпретувати назви, де розмістити програму в пам’яті, яка кількість комірок пам’яті необхідна для зберігання даних. Асемблерна мова є дуже далекою від мови людини і заставляє програміста думати виходячи з принципів побудови комп’ютера. Тому були створені мови високого рівня та компілятори, які переводять програми з цих мов на мову асемблера. Використання мов високого рівня має цілий ряд переваг в порівнянні з використанням асемблера. По-перше, програміст пише програми на мові, близькій до його мови спілкування. Більше того, мови високого рівня орієнтуються на класи вирішуваних задач. По-друге, скорочується час написання програм. І по-третє, мови високого рівня є незалежними від типу та архітектури комп’ютера, що дозволяє використовувати написані на цих мовах програми на всіх комп’ютерах, а програміста звільнити від знання їх структури та організації роботи. Разом з тим, хоча більшість програм сьогодні пишуться на мовах високого рівня, асемблерна мова є корисним засобом для написання машинних команд завдяки близькості до машинної мови, наочності та компактності, і ми також будемо її для цього використовувати.
Дата добавления: 2014-11-06; Просмотров: 1089; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |