СИСТЕМА КОМАНД ЕОМ І СПОСОБИ

 ЗВЕРНЕННЯ До ДАНИМИ

 
   

     Важливою складовою частиною архітектури ЕОМ є система команд. Незважаючи на велику кількість різновидів ЕОМ, на самому низькому («машинному») рівні, вони мають багато спільного. Система команд будь-який ЕОМ обов'язково містить такі групи команд обробки інформації.

                                      

1. Команди передачі даних (перепис), копіюють інформацію з одного місця в інше.

2. Арифметичні операції, яким фактично зобов'язана своєю назвою обчислювальна техніка. Звичайно, частка обчислювальних дій у сучасному комп'ютері помітно зменшилася, але вони як і раніше грають у програмах важливу роль. Відзначимо, що до основних арифметичних дій зазвичай ставляться додавання і віднімання (останнє, в кінцевому рахунку, найчастіше тим чи іншим способом також зводиться до складання). Що стосується множення і ділення, то вони в багатьох ЕОМ виконуються за спеціальними програмами.

3. Логічні операції, що дозволяють комп'ютеру аналізувати оброблювану інформацію. Найпростішими прикладами можуть служити порівняння, а також відомі логічні операції І, АБО, НЕ (інверсія). Крім того до них часто додаються аналіз окремих бітів коду, їх скидання і встановлення.

4. Зрушення двійкового коду вліво і вправо. Для доказу важливості цієї групи команд достатньо згадати правило множення стовпчиком: кожне наступне твір записується в такій схемі із зсувом на одну цифру вліво. У деяких окремих випадках множення і ділення взагалі може бути замінено зрушенням (згадайте, що дописавши або забравши нуль праворуч, тобто фактично здійснюючи зрушення десяткового числа, можна збільшити або зменшити його в 10 разів).

5. Команди введення і виведення інформації для обміну з зовнішніми пристроями. У деяких ЕОМ зовнішні пристрої є спеціальними службовими адресами пам'яті, тому введення і вивід здійснюється за допомогою команд перепису.

6. Команди керування, що реалізують нелінійні алгоритми. Сюди перш за все слід віднести умовний і безумовний перехід, а також команди звернення до підпрограми (перехід з поверненням). Деякі ЕОМ мають спеціальні команди для організації циклів, але це не обов'язково: цикл може бути зведений до тієї чи іншої комбінації умовного та безумовного переходiв. Часто до цієї ж групи команд відносять нечисленні операції з управління процесором - типу «зупинення» або НОП («ні операції»). Іноді їх виділяють в окрему групу.

 

                                                  

Комп'ютерна схемотехніка та схемотехніка ЕОМ

     Із зростанням складності пристрою процесора збільшується і кількість команд, які аналізують стан керуючих бітів і впливають на них. Тут для прикладу можна назвати біти режиму роботи процесора і біти управління механізмами переривань від зовнішніх пристроїв.

     Останнім часом все більшу роль у наборі команд грають команди для перетворення з одного формату даних в інший (наприклад, з 8-бітного в 16-бітний і т.п.), які помітно спрощують обробку даних різного типу, але в принципі можуть бути замінені послідовністю з декількох більш простих команд.

     Розглядаючи систему команд, не можна не згадати про двох сучасних взаємно конкуруючих напрямках у її побудові: комп'ютер з повним набором команд CISC (Complex Instruction Set Computer) і з обмеженим набором - RISC (Reduced Instruction Set Computer). Поділ виник через те, що основну частину часу комп'ютера доводиться виконувати невелику частину з свого набору команд, інші ж використовуються епізодично (в одній з популярних статей це жартома сформульовано у вигляді такої наочної аналогії: «20% населення випивають 80% пива» ). Таким чином, якщо суттєво обмежити набір операцій до найбільш простих і коротких, зате ретельно оптимізувати їх, вийде досить ефективна і швидкодіюча RISC-машина. Щоправда за швидкість доведеться платити необхідністю програмної реалізації «відкинутих» команд, але часто ця плата буває виправданою: наприклад, для наукових розрахунків або машинної графіки швидкодія істотно важливіше проблем програмування. Детальніше питання, пов'язані з системою команд сучасних мікропроцесорів, будуть розглянуті нижче в цьому розділі.

      Підводячи підсумок, ще раз підкреслимо, що основний набір команд досить слабо змінився в ході бурхливої ​​еволюції ЕОМ. У той же час способи вказівки адреси розташування інформації в пам'яті зазнали значних змін і заслуговують окремого розгляду.

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

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

     Адресна частина володіє значно більшою розмаїтістю і її слід розглянути докладніше.

     Перш за все відзначимо, що команди можуть бути одно-, двох-і трехадресние в залежності від числа що беруть участь в них операндів.

     Перші ЕОМ мали найбільш просту і наочну трехадресную систему команд. Наприклад: взяти числа з адрес пам'яті А1 і А2, скласти їх і суму помістити на адресу A3. Якщо для операції потрібна менша кількість адрес, то зайві просто не використовувалися. Скажімо, в операції перепису вказувалися лише осередку джерела і приймача інформації А1 і A3, а вміст А2 не мало ніякого значення.

 

                                                 

      Трехадресная команда легко розшифровувалася і була зручна у використанні, але з ростом обсягів ОЗУ її довжина ставала непомірно великою. Дійсно, довжина команди складається з довжини трьох адрес та коду операції. Звідси випливає, наприклад, що для скромного ОЗУ з 1024 осередків тільки для запису адресної частини однієї команди потрібно 3 * 10 = 30 двійкових розрядів, що для технічної реалізації не дуже зручно. Тому з'явилися двохадресна машини, довжина команди в яких скорочувалася за рахунок виключення адреси запису результату. У таких ЕОМ результат операції залишався в спеціальному реєстрі (суматорі) і був придатний для використання в подальших обчисленнях. У деяких машинах результат записувався замість одного з операндів.

      Подальше спрощення команди призвело до створення одноадресних машин. Розглянемо систему команд такий ЕОМ на конкретному простому прикладі. Нехай треба скласти числа, що зберігаються в комірках з адресами ОЗУ А1 і А2, а суму помістити в осередок з адресою A3. Для вирішення цього завдання одноадресної машині потрібно виконати три команди:

витягнути вміст комірки А1 в суматор;

скласти суматор з числом з А2;

записати результат з суматора в A3.

     Може здатися, що одноадресної машині для вирішення завдання буде потрібно втричі більше команд, ніж трехадресной. Насправді це не завжди так. Спробуйте самостійно спланувати програму обчислення виразу А5 = (А1 + А2) * АЗ/А4 і ви виявите, що буде потрібно три трехадресних команди і всього п'ять одноадресних. Таким чином, одноадресна машина в чомусь навіть ефективніше, тому що вона не виробляє непотрібної запису в пам'ять проміжних результатів.

     Заради повноти викладу слід сказати про можливість реалізації безадресної (нуль-адресної) машини, що використовує особливий спосіб організації пам'яті - стік. Розуміння принципів устрою такої машини зажадало б деяких досить докладних роз'яснень. Зараз безадресні ЕОМ практично не застосовуються. Тому обмежимося лише нагадуванням того факту, що влаштована таким чином система команд лежала в основі деяких програмованих мікрокалькуляторів (наприклад, типу «БЗ-21» і «БЗ-34» і їм подібних).

 

       

      До цих пір в описі структури машинної команди ми користувалися інтуїтивним поняттям про адресу інформації. Розглянемо тепер питання про адресації елементів ОЗУ більш докладно і строго. Найбільш просто була організована пам'ять в ЕОМ перших двох поколінь. Вона складалася з окремих осередків, вміст кожної з яких зчитуються або записувалося як єдине ціле. Кожна комірка пам'яті мала свій номер, який і отримав назву адреси. Очевидно, що адреси сусідніх осередків ОЗУ є послідовними цілими числами, тобто відрізняються на одиницю. У аналізованих ЕОМ використовувалися дані тільки одного типу (дійсні числа), причому їх довжина дорівнювала довжині машинної команди і співпадала з розрядністю пам'яті і всіх інших пристроїв машини. Для прикладу зазначимо, що осередок типовою ЕОМ другого покоління складалася з 36 двійкових розрядів.

       Дуже часто програма призначалася для обробки за одними і тими ж формулами певної кількості вмісту послідовно розташованих осередків (в мовах високого рівня такого роду структури отримали згодом назву масивів). У комп'ютери перших двох поколінні були передбачені особливі механізми циклічної обробки масивів інформації. З цією метою в машинних командах крім звичайних адрес можна було використовувати модифікуються, у яких спеціальний керуючий біт був встановлений в одиницю. До поміченим таким чином, модифікуються адресами при виконанні команди додавалося значення зі спеціальних індексних осередків. Змінюючи вміст індексних осередків, можна було отримувати доступ до різних елементів масиву. Особливо підкреслимо, що формування результуючого адреси здійснювалося в УУ в момент виконання команди, тому вихідна команда в ОЗУ зберігалася без змін.

       Описаний механізм модифікації адрес істотно спрощував написання циклічних програм, таких як знаходження суми послідовних комірок ОЗУ, копіювання окремих ділянок пам'яті і т.п.

      У ЕОМ третього покоління ідеологія побудови пам'яті істотно змінилася: мінімальна порція інформації для обміну з ОЗУ була встановлена ​​рівною 8 двійкових розрядів, тобто один байт. Стало можливим обробляти кілька типів даних: символи тексту (1 байт), цілі числа (2 байти), дійсні числа звичайної або подвійної точності (4 або 8 байт відповідно). У зв'язку з цим була введена нова умовна одиниця виміру інформації - машинне слово. Воно дорівнювало 4 байтам і відповідало довжині стандартного дійсного числа. Всі об'єми інформації почали вимірюватися в одиницях, кратних речі: подвійне слово, півслова і т.п. Природно, що адреса (номер комірки ОЗП) в машинах з байтовой організацією став ставитися до окремого байту; байти пам'яті мають зростаючі на одиницю номера. Слово складається з декількох послідовно розташованих байтів. В якості адреси слова зручно приймати адресу одного з утворюють його байтів (зазвичай використовується молодший байт, що має найменший номер). Таким чином, адреси слів змінюються вже не через одиницю; їх приріст залежить від довжини машинного слова в байтах і дорівнює чотирьом.

       Розмір машинного слова був, мабуть, вибраний виходячи з форматів оброблюваної інформації, а не у зв'язку з розрядністю будь-яких пристроїв. Для підтвердження цього наведемо кілька фактів про типові ЕОМ третього покоління із сімейства ЄС. Арифметико-логічний пристрій моделі «ЄС-1022» мало 16 двійкових розрядів, «ЄС-1033» - 32 розряду, а «ЄС-1050» - 64 розряду. У той же час за одне звернення до оперативної пам'яті в «ЄС-1022» і «ЄС-1033» вибиралося 4 байти, в «ЄС-1050» - 8 байт (а в «ЄС-1045» - 16 байт). Таким чином, різноманітність цифр свідчить, що 32 розряду (4 байти) не були якимось технічно виділеним об'ємом інформації.

       У машинах третього покоління з'явилися і ще кілька особливостей: різна довжина команд залежно від способу адресації даних, наявність спеціальної сверхоперативной реєстрової пам'яті, обчислення ефективного адреси ОЗУ як суми кількох регістрів і т.п. Все це дістало подальший розвиток в комп'ютерах четвертого покоління, для яких розрядність мікропроцесора стала однією з найважливіших характеристик. Розгляд особливостей будови пам'яті ЕОМ четвертого покоління відкладемо до наступного розділу.

 

Головна               На початок               На наступну