Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій_ Асемблер.Docx
Скачиваний:
0
Добавлен:
20.02.2020
Размер:
506.89 Кб
Скачать

1

  1. Архітектура ЕОМ 4

    1. 1. Поняття про архітектуру ЕОМ 4

      1. Програмна модель мікропроцесора Intel Pentium III 7

      2. Набір регістрів 9

        1. Регістри загального призначення 9

        2. Сегментні регістри 10

        3. Регістри стану і керування 10

      3. Організація пам’яті 13

        1. Сегментована модель пам’яті 14

        2. Формування фізичного адреса в реальному режимі 15

      4. Типи даних 16

      5. Формат команд 18

      6. Типи переривань 18

    2. Структура програми на асемблері 18

    1. Синтаксис асемблера 18

    2. Директиви сегментації 21

    3. Прості типи даних 23

    4. Системи числення 24

      1. Двійкова система числення 24

      2. Шістнадцяткова система числення 24

      3. Перевод із десяткової і шістнадцяткової системи у двійкову 24

      4. Перевод із десяткової і двійкової у шістнадцяткову систему 25

      5. Числа із знаком 26

    5. Структура машинної команди 26

    6. Способи задання операндів 28

    7. Адресація пам’яті 29

    8. Функціональна класифікація машинних команд 29

    1. Команди обміну даними 30

    1. Команди пересилання даних 30

    2. Ввід-вивід в порт 30

    3. Робота з адресами і вказівниками 31

    4. Перетворення даних 31

    5. Робота із стеком 31

    1. Арифметичні цілочисельні команди 32

    1. Цілі двійкові числа 32

      1. Додавання двійкових чисел без знаку 33

      2. Додавання двійкових чисел із знаком 33

      3. Віднімання двійкових чисел без знаку 33

      4. Віднімання двійкових чисел із знаком 33

      5. Множення двійкових чисел без знаку 33

      6. Множення двійкових чисел із знаком 34

      7. Ділення двійкових чисел без знаку 34

      8. Ділення двійкових чисел із знаком 34

      9. Команди перетворення типів 35

    2. Десяткові числа 35

      1. Неупаковані BCD-числа 35

      2. Упаковані BCD-числа 36

    1. Логічні команди 37

    1. Логічні дані 37

    2. Логічні команди 38

    3. Команди зсуву 38

    4. Лінійний зсув 39

    1. Циклічний зсув 40

    2. Додаткові команди зсуву 41

    1. Команди передачі керування 42

    1. Команди безумовного переходу 43

    2. Процедури 44

    3. Умовні переходи 45

      1. Команда порівняння cmp 45

      2. Команди умовного переходу і прапори 46

      3. Команди умовного переходу і регістр ecx/cx 46

    4. Організація циклів 46

    1. Ланцюжкові команди 47

    1. Пересилання ланцюжків 48

    2. Порівняння ланцюжків 49

    3. Сканування ланцюжків 49

    4. Завантаження ланцюжків 49

    5. Формування ланцюжків 50

    6. Ввід-вивід елементів у порт 50

    1. Складні структури даних 50

    1. Масиви 50

      1. Доступ до елементів масиву 51

      2. Двомірні масиви 52

    2. Структури 52

      1. Описання шаблона структури 52

      2. Визначення даних з типом структури 52

      3. Методи роботи із структурою 53

    3. Об’єднання 53

    4. Записи 53

      1. Визначення екземпляру запису 54

      2. Робота з записами 54

    1. Макрозасоби мови асемблера 55

    1. Псевдооператори equ i = 55

    2. Макрокоманди 56

    3. Макродирективи 56

      1. Директиви WHILE і REPT 56

      2. Директиви IRP і IRPC 57

      3. Директиви умовної компіляції 57

      4. Директиви компіляції по умові 57

        1. Директиви IF і IFE 57

        2. Директиви IFDEF і IFNDEF 58

        3. Директиви IFB і IFNB 58

        4. Директиви IFIDN, IFIDNI, IFDIF і IFDIFI 58

    4. Директиви генерації помилок 58

Архітектура і система команд мікропроцесорів

Intel i486, Pentium, P6

1. Архітектура еом

1. 1. Поняття про архітектуру еом

Архітектура ЕОМ – це абстрактне подання ЕОМ, яке відображає її структурну, схемотехнічну і логічну організацію. Поняття архітектури ЕОМ включає в себе:

o структурну схему ЕОМ;

o засоби і способи доступу до елементів структурної схеми;

o організацію і розрядність інтерфейсів ЕОМ;

o набір і доступність регістрів; o організацію і способи адресації пам’яті; o способи подання і формати даних; o набір машинних команд;

o формати машинних команд;

o обробку нештатних ситуацій (переривання).

Всі сучасні ЕОМ мають деякі загальні і індивідуальні властивості. Наявність загальних архітектурних властивостей зумовлена тим, що більшість типів сучасних ЕОМ відносяться до 4 і 5 покоління так званої фон-нейманівської архітектури з наступними властивостями і принципами:

o Принцип збережуваної програми. Код програми і її дані знаходяться в одному адресному просторі в оперативній пам’яті.

o Принцип мікропрограмування. Фізично в ЕОМ виконуються не машинні команди, а мікрооперації. В складі процесора повинен бути блок мікропрограмного керування.

o Лінійний прості пам’яті. Всім коміркам пам’яті послідовно присвоюють адреси 0, 1, 2 ...

o Послідовне виконання програм. Процесор вибирає із пам’яті команди строго послідовно. Для зміни прямолінійного ходу виконання програми використовуються команди умовного або безумовного переходу.

o Відсутність різниці між даними і командами. Дані і команди знаходяться в одному простору пам’яті у вигляді послідовностей нулів і одиниць. Тому важливо в програмі завжди чітко розділяти простір даних і команд.

o Байдужість до логічного навантаження даних.

Мікропроцесори фірми Інтел i486 і Pentium мають ряд індивідуальних архітектурних нововведень. Розглянемо найбільш характерні і необхідні для подальшого викладення.

o Суперскалярна архітектура. Мікропроцесори (МП), що мають один конвеєр називаються скалярними, а два і більше – суперскалярними. МП Pentium має два конвеєри і тому може виконувати дві команди за один машинний такт. Конвеєр це спеціальний пристрій в якому виконання команд розбивається на декілька етапів. i486 має п’ятиступеневий конвеєр:

  • вибірка команди із кеш-пам’яті або оперативної пам’яті;

  • декодування команди;

  • генерація адреса, при якому визначаються адреси операндів у пам’яті;

  • виконання операції з допомогою арифметично-логічного пристрою (АЛП);

  • запис результату.

Таким чином в конвеєрі може знаходитися на різній стадії виконання п’ять команд.

Швидкість обчислень в результаті істотно зростає.

o Окреме кешування коду і даних. Кешування – це спосіб збільшення швидкодії системи за рахунок зберігання часто використовуваних даних і кодів в “кеш-пам’яті” (швидкої пам’яті). Pentium має два блоки кеш пам’яті: один для коду і один для даних.

o Передбачення вірного адресу переходу. Зберігається інформація про останні 256 переходів. Спеціальний блок передбачення адресу переходу прогнозує, яке рішення буде прийнято програмою. При цьому використовується припущення, що гілка яка була пройдена, буде використовуватися знову. Якщо передбачення вірне, то перехід виконується без затримки. Ймовірність вірного передбачення складає 80%.

o Передбачення переходів, в тому числі і вкладених. Реалізується пристроєм виборки/декодування з метою запобігання перевантаження конвеєра.

o Динамічний аналіз потоку даних. Аналіз проводиться з метою визначення залежностей команд програми від даних і регістрів процесора з подальшою оптимізацією потока команд.

o Інтелектуальне виконання. Характеризує здатність мікропроцесора реалізувати неупорядковане виконання команд, відновивши надалі початковий порядок команд.

В історичному розвитку МП Intel можна виділити три етапи:

o 16-розрядні МП i8086 і і80286 підтримували 170 команд, в тому числі і команди співпроцесора;

o 32-розрядні МП i386, i486, Pentium, Pentium Pro підтримували 220 команд;

o 32-розрядні МП Pentium MMX, Pentium II підтримували 277 команд, Pentium III – 347

команд. В них появилися нові архітектурні елементи – MMX-розширення.

Структурна схема МП P6 (Pentium II/III) (рис. 1.1) складається із наступних підсистем:

Рис. 1.1. Структурна схема мікропроцесора P6 (Pentium Pro/II/III).

o Підсистема пам’яті. Складається із системної шини, кеша другого рівня L2, пристрою шинного інтерфейса, кеша першого рівня L1 (інструкцій і даних), пристрою зв’язку з пам’яттю і буфера перевпорядкування запитів до пам’яті.

o Пристрою виборки/декодування. Складається із пристрою виборки інструкцій, буфера передбачень переходів, декодера інструкцій, блока мікропрограмного керування і таблиці регістрових аліасів.

o Буфер команд. Містить команди, перевпорядковані для оптимального завантаження буфера.

o Пристрій диспетчеризації/виконання. Містить буфер мікрооперацій, готових до виконання, п’ять виконуючих пристроїв: два пристрої для виконання цілочисельних операцій, два – з плаваючою крапкою і пристрій зв’язку з пам’яттю.

Розглянемо порядок функціонування схеми. Підсистема пам’яті складається із оперативної пам’яті, первинного (L1) і вторинного кеша (L2). Пристрій шинного інтерфейсу звертається до оперативної пам’яті системи через зовнішню системну шину. Ця 64-розрядна шина орієнтована на обробку запитів, тобто кожний шинний запит обробляється окремо і потребує зворотної реакції. Поки пристрій шинного інтерфейсу очікує відповіді на один запит шини, можливе формування багаточисельних додаткових запитів. Всі вони обслуговуються в порядку поступання. Зчитані по запиту дані поміщуються у кеш другого рівня. Тобто, МП завдяки пристрою шинного інтерфейсу читає команди і дані із кеша другого рівня. Пристрій шинного інтерфейсу взаємодіє з кешом другого рівня через 64-розрядну шину кеша, яка також орієнтована на обробку запитів і працює на тактовій частоті процесора. Доступ до кеша першого рівня здійснюється через внутрішні шини на тактовій частоті МП. Синхронна робота з системною пам’яттю кеш-пам’яті обох рівнів здійснюється завдяки спеціальному протоколу.

Запити на операнди з пам’яті від команд у виконавчому пристрої МП забезпечуються пристроєм зв’язку з пам’яттю і буфером перевпорядкування запитів до пам’яті. Ці два пристрої були спеціально включені в схему для того, щоб забезпечити безперебійне постачання виконуваних команд необхідними даними. Необхідно підкреслити роль буфера перевпорядкування запитів до пам’яті. Він відслідковує всі запити до операндів у пам’яті і виконує функції плануючого пристрою. Якщо потрібні для чергової операції дані у кеш-пам’яті (L1) відсутні, то буфер перевпорядкування запитів до пам’яті автоматично передає інформацію про невдале звернення до кешу другого рівня (L2). Якщо і в кеші L2 потрібних даних немає, то буфер перевпорядкування запитів до пам’яті заставляє пристрій шинного інтерфейсу зформувати запит до оперативної пам’яті (ОП).

Пристрій виборки команд/декодування читає потік команд із кеша команд (L1) і декодує їх у послідовність мікрооперацій. Потік мікрооперацій (поки що він відповідає послідовності початкових команд) поступає у буфер команд. Пристрій виборки видобуває одну 32-байтну строку кеша команд за такт і передає її в декодер. Пристрій виборки обчислює вказівник на наступну команду, що підлягає виборці, на основі інформації із таблиці міток переходу, стану переривання/виключення і повідомлення від виконавчого цілочисельного пристрою про помилку в передбаченні мітки переходу. Важлива частина цього процесу – передбачення мітки переходу. Основою алгоритму процесу є робота з таблицею міток переходу, яка містить інформацію про раніше зроблені переходи. Коли чергова, вибрана з пам’яті команда є командою переходу, то її адрес переходу порівнюється з адресами, що вже є в таблиці міток переходів. Якщо цього адреса нема в таблиці, то виборка команд із пам’яті продовжується до тих пір, поки не буде виконана команда переходу виконавчим пристроєм. В результаті її виконання буде підтверджена правильність переходу. Якщо ж цей адрес уже є в таблиці міток переходів, то на його основі пристрій виборки формує адрес наступної команди, що підлягає виборці. Аналогічно, про правильність виборки цієї команди буде відомо після виконання команди переходу виконавчим пристроєм. Якщо цей передбачений перехід був невірним, то конвеєр буде скинутий і завантажений наново у відповідності з адресом переходу. Мета вірного передбачення переходів в тому, щоб пристрій виконання постійно був зайнятий корисною роботою, і скид конвеєра проводився як можна рідше.

Команди вибираються на конвеєр пристроєм виборки команд, який поміщає їх у пристрій декодування. Пристрій декодування складається із трьох паралельно працюючих декодерів (два простих і один складний). Декодери перетворюють команди мікропроцесора в мікрооперації.

Мікрооперації являють собою примітивні команди, які виконуються п’ятьма виконавчими пристроями МП, що працюють паралельно. Багато машинних команд перетворюються в одиночні мікрооперації, а деякі - в послідовності від двох і більше мікрооперацій. Інформація про послідовність мікрооперацій для реалізації конкретної машинної команди міститься у блоці мікропрограмного керування. Крім команд, декодери обробляють також префікси команд. Декодер команд може формувати до шести мікрооперацій за такт – по одній від простих декодерів і до чотирьох від складного декодера. Після того як команди розбиті на мікрооперації, порядок їх виконання важко передбачити. При цьому можуть виникнути проблеми із таким ресурсом як регістри (при розміщенні різних даних з однакових регістрів у пам’ять). Вона розв’язується механізмом перейменуванням регістрів. Основу цього механізму складає набір із 40 внутрішніх універсальних регістрах, які можуть працювати з цілими числами і значеннями із плаваючою крапкою. Інформація про дійсні і внутрішні імена регістрів поміщається в таблицю регістрових аліасів.

На закінчення процесу декодування пристрій керування таблицею регістрових аліасів добавляє до мікрооперацій біти стану і прапори, щоб підготовити їх до невпорядкованого виконання, після чого посилає отримані мікрооперації в буфер перевпорядкованих команд. Він являє собою масив асоціативної пам’яті кільцевої структури (фізично виконаний у вигляді 40 регістрів), елементи якої містять два типи мікрооперацій: такі що чекають своєї черги на виконання і такі що частково виконані через перевпорядкування команд. Пристрій диспетчеризації/виконання може вибирати мікрооперації із цього буфера в любому порядку.

Пристрій диспетчеризації/виконання планує і виконує неупорядковану послідовність мікрооперацій із буфера перевпорядкованих команд. Але він не займається безпосередньою виборкою мікрооперацій із буфера перевпорядкованих команд, так як там можуть міститися і не готові до виконання мікрооперації. Цим займається пристрій керування буфером команд, готових до виконання. Він постійно сканує буфер перевпорядкованих команд в пошуках мікрооперацій, готових до виконання, після чого посилає їх відповідним виконавчим пристроям, якщо вони не зайняті. Результати виконання мікрооперацій повертаються у буфер перевпорядкованих команд і зберігаються там разом з другими мікроопераціями до тих пір, поки не будуть видалені пристроєм видалення і відновлення.

Подібна схема планування реалізує принцип невпорядкованого виконання, при якому мікрооперації посилаються виконавчим пристроєм не залежно від їх розміщення в початковому алгоритмі. Виконавчий пристрій складається із п’яти блоків, кожний із яких виконує свій тип мікрооперацій: два цілочисельні пристрої, два з плаваючою крапкою і один для зв’язку з пам’яттю.

Цілочисельні виконавчі пристрої паралельно обробляють цілочисельні мікрооперації. Один із цілочисельних пристроїв призначений для роботи з мікроопераціями переходів. Він здатний виявляти непередбачений перехід і повідомляти про це пристрій виборки команд, для перезапуску конвеєра відносно нового виконавчого адреса.

Виконавчі пристрої з плаваючою крапкою обробляють мікрооперації команд з плаваючою крапкою і умовні переходи і переміщення.

Пристрій зв’язку з пам’яттю керує завантаженням і збереженням даних для мікрооперацій.

Блок видалення і відновлення повертає обчислювальний процес в рамки в рамки, визначені початковою послідовністю команд. Для цього він постійно сканує буфер перевпорядкованих команд на предмет виявлення повністю виконаних мікрооперацій. Такі мікрооперації видаляються із буфера і відновлюються у порядку який відповідає початковому порядку команд.