ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6803
Скачиваний: 22
119
Для наочності використання
різних типів описаних вище форматів
команд, аналізу їх переваг та недоліків
розглянемо кілька характерних прикладів
форматів команд, які використовувалися
раніше в різних поколіннях комп'ютерів
та які використовуються в сучасних
комп'ютерах.
3.5.1. Формати команд комп'ютерної системи IBM 370
В системі IBM
370 використовувалися три
варіанти довжини команди: двобайтова,
чотирибай-това, шестибайтова. Також
використовувалися два варіанти
довжини коду операції: однобайтовий
та двобайтовий. В сумі це складає десять
різних форматів команд. На рис. 3.40
наведено формати команд комп'ютерної
системи IBM 370.
Тип формату команди вказується першими двома розрядами коду операції КОП: 00 - RR; 01 -RX; 10 - RRE, RS, RX, S, SI; 11 - SS, SSE. Коротко опишемо кожен тип команди.
Команда регістр-регістр RR. Цей формат команди є двобайто-вим. В адресній частині звернення відбувається до регістрів. Оскільки багато операцій виконується з використанням регістрів, такий формат при своїй компактності є досить ефективним.
120
Розширена команда регістр-регістр RRE (Е - Extended). Цей формат використовується для декількох спеціальних привілейованих команд операційної системи. Розширений код операції дозволяє виконання додаткових операцій. Поле після коду операції не використовується.
Команда регістр-індексована пам'ять RX. За цією командою перший операнд знаходиться в регістрі, а другий операнд обчислюється шляхом додавання 12-розрядного зміщення D2 до вмісту регістра бази В2 та індексного регістра Х.2. Обидва регістри належать до регістрів загального призначення.
Команда регістр-пам'ять RS. Ця команда має триадресний формат. Тут також є три звернення до регістрів, але вони вказують на три різних операнди. Третій регістр використовується як регістр бази, до якого додається зміщення.
Команда пам'ять-безпосередній операнд SI (І - Immediate). Тут адреса першого опе-ранда вираховується шляхом додавання зміщення до бази, а другий операнд знаходиться безпосередньо в 8-розрядному полі адреси.
Команда пам'ять S. Це привілейована команда, яка використовується для введення-виведення або системою контролю функцій. Тут використовується розширений 16-роз-рядний код операції. Адреса другого операнда вираховується шляхом додавання зміщення до бази. Адреса ж першого операнда, якщо він є, вказується кодом операції.
Команда пам'ять-пам'ять SS. Ця команда займає б байт і вказує на два операнди, розміщені в пам'яті. Наступні після коду операції 8 біт можуть бути використані трьома варіантами: в форматі одиночної довжини (OL) поле L вказує кількість байт, які будуть оброблені; в форматі подвійної довжини (EL) поле L вказує довжину двох операндів у байтах (цей формат використовується для команд десяткової арифметики; третій варіант (RS) використовується в декількох привілейованих командах, в яких другий байт вказує на два регістри загального призначення. Ці регістри вміщують покажчики або іншу керуючу інформацію.
Розширена команда пам'ять-пам'ять SSE. Цей формат також використовується в декількох привілейованих командах з розширеним кодом операції. Адреса першого та другого операндів вираховується шляхом додавання зміщення до бази.
3.5.2. Формати команд комп'ютера Cyber-70
Розглянемо іще одну систему команд, яка використовувалась в комп'ютері Cyber-70 (рис. 3.41). її відмінністю від інших є нестандартна довжина розрядної сітки, кратна трьом.
121
Тут А - адреса пам'яті, R - адреса регістра, L - довжина операнда, С - номер символу в складному слові, N - число. Також використовуються дві довжини коду операції: шести- та дев'ятирозрядний. В сумі використовується п'ять різних форматів команди. Перший дозволяє одночасно адресувати три регістри, другий адресує один регістр та вміщує число, що підлягає обробці, третій адресує два регістри та пам'ять і є в два рази довший, так само, як і четвертий формат, який адресує один регістр і пам'ять, але має довший код операції. Іще в два рази довшим є п'ятий формат команди, який вказує дві адреси пам'яті та параметри відповідних чисел - довжину і номер в складному слові.
3.5.3. Формати команд сучасного комп'ютера
Формати команд сучасного комп'ютера на прикладі комп'ютера DLX, який є узагальненням цілого спектра сучасних комп'ютерів, подано на рис. 3.42.
Дамо коротке пояснення щодо наведених на рисунку форматів команд.
-
Команда типу І опрацьовує безпосередній операнд (Immediate).
-
Команда типу R отримує пару операндів із джерельних регістрів (Registers) регістрового файла процесора та повертає результат знов таки до регістра призначення цього файла.
-
Команда типу J є командою безумовного переходу (Jump).
-
Opcode є полем коду операції КОП, довжина якого становить 6 бітів.
-
rsl, rs2 є полями з довжиною 5 бітів, що визначають номери регістрів-джерел операндів (register of source) та програмно вибираються серед регістрів R0...R31 регістрового файла.
-
rd є п'ятибітовим полем номера регістра призначення, приймача результату дії (register of destination). Регістр призначення також вибирають із множини R0...R31 регістрового файла.
-
Immediate - це 16-бітове поле, що містить безпосередній операнд. При цьому лівий розряд immediate розглядають як знаковий. При використанні безпосередній операнд розширюють вліво за правилами доповняльного коду до 32-х бітів.
-
Function - це поле, що визначає функцію, яка розширює на 211 - 1 = 2047 комбінацій обмежену кількість дозволених кодів операції.
-
Offset added to PC - це 26-бітова константа, яку додають до вмісту регістра наступної адреси при виконанні команди безумовного переходу.
Особливості форматів команд комп'ютера DLX:
-
Довжина усіх форматів - 32 біти.
-
Реалізовано тип архітектури регістр-регістр.
122
-
Реалізовано фіксовану систему поділу форматів на поля.
-
Усі команди з погляду 'їхньої обробки поділено на три групи: операції АЛП, операції зчитування/запису, операції керування виконанням програми.
Формати команд АЛП є триадресними, а саме, OP RX,RY,RZ. Вони є майже збіжними з форматами команд мікропроцесора М88Х00 фірми Motorola. Останній, разом із мікропроцесорами ІВМ801 та AMD29000 у середині 80-х років склав історично першу трійку серійних комп'ютерів з архітектурою RISC.
3.6. Вплив технологи компілювання на систему команд комп'ютера
В перших поколіннях комп'ютерів програми писались на асемблерній мові. Тому архітектура системи команд часто будувалась виходячи з потреби спрощення програмування на асемблері. Сьогодні переважна частина програм пишеться на мовах високого рівня. Для їх перекладу в машинні команди використовуються спеціальні програми, які називаються компіляторами. Перші компілятори створювались для вже існуючих комп'ютерів з конкретною системою команд. Оскільки від компілятора значною мірою залежить продуктивність комп'ютера, розуміння технології компілювання сьогодні є вкрай необхідним для проектування ефективної системи команд. Тому в подальшому розглянемо питання вибору складу системи команд комп'ютера з точки зору ефективного компілювання та виконання на ньому програм мовами високого рівня.
Структура сучасного компілятора показана на рис. 3.43. Перша процедура передбачає перехід з мови програмування високого рівня до деякої простої проміжної мови і є залежною від мови програмування та незалежною від апаратних засобів комп'ютера.
Під час виконання другої процедури здійснюється оптимізація коду представленого проміжною мовою, зокрема розкриваються звернення до підпрограм та циклів. Ця процедура також залежить від типу проміжної мови та не залежить від апаратних засобів комп'ютера.
На третій процедурі виконується глобальна оптимізація з врахуванням базових архітектурних принципів побудови комп'ютера. Тут здійснюється прив'язка до конкретних типів комп'ютерних пристроїв. На останній процедурі здійснюється детальний вибір команд та машинно-залежна оптимізація.
123
3.7. Архітектура системи команд комп'ютера
3.7.1. Класифікація архітектури комп'ютера за складом системи команд
Як вже було відмічено, розгляд архітектури комп'ютера на рівні системи команд встановлює межу між апаратурою і програмним забезпеченням і дозволяє побачити комп'ютер на рівні, який видимий програмісту, що працює на мові асемблера, або розробнику компіляторів.
За складом системи команд комп'ютери можуть бути поділені на наступні типи:
-
комп'ютери із складною (комплексною) системою команд (КССК, Complex Instruction Set Computers - CISC);
-
комп'ютери з простою (спрощеною) системою команд (КПСК, Reduced Instruction Set Computers - RISC);
-
комп'ютери з доповненою системою команд (КДСК, Supplemented Instruction Set Computers - SISC). В таких комп'ютерах складна або проста система команд доповнюється командами, орієнтованими на конкретну область використання. До таких комп'ютерів, зокрема, відносяться програмовані процесори обробки сигналів (Programmable Digital Signal Processors);
-
комп'ютери з орієнтованою (спеціалізованою) системою команд (КОСК, Application Specific Instruction Set Computers - ASISC).
Далі ці архітектури будуть розглянуті детально.
3.7.2. Комп'ютери із складною та з простою системами команд
Двома основними архітектурами, які розрізняються за складом системи команд, а відповідно і за іншими елементами, що буде показано в подальшому, та які найширше використовуються комп'ютерною промисловістю на сучасному етапі, є архітектури КССК та КПСК (CISC і RISC). Основоположником архітектури КССК можна вважати компанію IBM з її базовою архітектурою ІВМ/360, ядро якої використовується з 1964 року і дійшло до наших днів, наприклад, в таких сучасних мейнфреймах, як IBM ES/9000.
Лідером в розробці мікропроцесорів на основі архітектури КССК є компанія Intel зі своїми серіями х86 і Pentium. Ця архітектура де-факто є стандартом для ринку мікрокомп'ю-терів. Для архітектури КССК характерне порівняно невелике число регістрів загального призначення; велика кількість машинних команд, деякі з яких семантично навантажені аналогічно операторам мов програмування високого рівня і виконуються за багато тактів; велика кількість методів адресації; велика кількість форматів команд різної розрядності; переважання двоадресного формату команд; наявність команд типу регістр-пам'ять.
Основою архітектури сучасних робочих станцій і серверів є архітектура комп'ютера з простою системою команд КПСК. Зачатки цієї архітектури йдуть своїм корінням до комп'ютерів CDC 6600, розробники яких (Торнтон, Крей та ін.) усвідомили важливість спрощення набору команд для побудови швидких обчислювальних машин. Цю традицію спрощення архітектури С. Крей з успіхом застосував при створенні широко відомої серії суперкомп'ютерів компанії Cray Research. Проте остаточно поняття комп'ютера з простою системою команд в сучасному його розумінні сформувалося на базі трьох дослідницьких проектів комп'ютерів: процесора 801 компанії IBM, процесора RISC університету Берклі та процесора MIPS Стенфордського університету.