You are on page 1of 47

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Чорноморський національний університет імені Петра Могили

Факультет комп’ютерних наук

Кафедра комп'ютерної інженерії

КУРСОВА РОБОТА
з дисципліни «Архітектура комп'ютерів»
на тему «Особливості будови комп’ютерів зі скороченим набором команд
(RISC - процесори)»
Виконав: студент 2 курсу, групи
205
Напряму підготовки :
123 «Комп’ютерна інженерія»
(шифр і назва напряму підготовки)
А. І. Шевчук____________________
(підпис, ініціали та прізвище)
_______________________________
(дата)
Керівник: Кандидат технічних наук,
старший викладач кафедри комп'ютерної
інженерії ФКН ЧНУ ім. Петра Могили
О. І. Христо____________________
(підпис, ініціали та прізвище)
_______________________________
(дата)

м. Миколаїв – 2022 рік


Кафедра комп’ютерної інженерії 2

ЗМІСТ
ВСТУП......................................................................................................................4
ГЛАВА 1 МІКРОПРОЦЕСОР................................................................................5
1.1 Приклад роботи з процесором за допомогою асемблерного коду.....5
1.2 Функції процесора...................................................................................8
1.3 Види та характеристики процесорів......................................................8
1.4 Основні блоки процесора.....................................................................10
1.5 Арифметично-логічний пристрій (АЛП) базової моделі комп’ютера
у Proteus........................................................................................................11
ГЛАВА 2 ISA – АРХІТЕКТУРА СИСТЕМИ КОМАНД...................................15
2.1 Еволюція ISA.........................................................................................15
2.2 Класифікація архітектур ISA...............................................................18
2.3 Приклад роботи зі стеком на асемблері..............................................20
ГЛАВА 3 RISC.......................................................................................................22
3.1 Основні принципи RISC – архітектури...............................................23
3.2 Конвеєризація........................................................................................23
3.3 Архітектура завантаження/зберігання................................................25
3.4 Приклад використання інструкцій завантаження/зберігання на
асемблері......................................................................................................25
3.5 Велика кількість регістрів....................................................................27
3.6 MORS......................................................................................................28
3.7 Стиснутий набір інструкцій.................................................................29
3.8 Кеш пам`ять...........................................................................................30
3.9 Організація загальної шини та передача даних між регістрами у
Proteus...........................................................................................................31
ГЛАВА 4 CISC.......................................................................................................34
4.1 Гіпертредінг (апаратні потоки)............................................................35
4.2 Чим відрізняються мікрокоманди від мікрокоду?.............................36
4.3 Різниця мікрооперацій та RISC-інструкцій........................................37
4.4 У чому різниця між наборами команд RISC та CISC?......................38

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 3

4.5 Приклад процесора з CISC архітектурою, його набор команд та


приклад використання цих команд............................................................39
СПИСОК РИСУНКІВ...........................................................................................43
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ.............................................................45
ДОДАТОК..............................................................................................................46

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 4

ВСТУП
Ця робота досліджує розвиток в галузі архітектури процесорів, і
стосується вивчення їх особливостей, а саме архітектури RISC.
Актуальність роботи полягає в тому, що сучасне суспільство
неможливо уявити без смартфонів, які будуються на процесорах з
архітектурою скорочених наборів команд. Основним розвитком RISC
зайнялась компанія ARM, тобто Advanced RISC Machine – вдосконалена
RISC-машина.
Основні завдання – це збільшення швидкості роботи процесора за
рахунок спрощення інструкцій, щоб їх декодування було простішим, а час
виконання – меншим.
Об’єкт дослідження – процесори з архітектурою скорочених наборів
команд.
Предметом дослідження є продукти від компаній, які будують свої
процесори на базі RISC.
В якості джерел інформації для курсової були використані різні статті,
на тему філософії RISC та її порівнянням з архітектурою комплексних
наборів команд (CISC).

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 5

ГЛАВА 1
МІКРОПРОЦЕСОР
Спочатку необхідно розібратися, що таке мікропроцесор.
Процесор (мікропроцесор або центральний процесор) — це мозок
комп'ютера. Він читає інструкції з пам'яті, які вказують, що робити
комп'ютеру. Інструкції – це звичайні числа, які інтерпретуються спеціальним
чином.
У пам'яті немає нічого, що дозволяло б відрізнити звичайне число від
інструкції. Тому розробники операційних систем мають бути впевнені, що
інструкції та дані лежать там, де процесор очікує їх знайти.

Рисунок 1. Один із перших RISC-процесорів, розроблений підрозділом Office


Products Division компанії IBM на початку 1980-х
1.1 Приклад роботи з процесором за допомогою асемблерного коду
CPU виконують дуже прості операції. Ось приклад кількох інструкцій,
які виконує процесор:
load r1, 150
load r2, 200
add r1, r2
store r1, 310
Це програмний код того, що має бути просто списком чисел для
комп'ютера. Наприклад, інструкція load у звичайному RISC мікропроцесорі
представляється у вигляді 32-бітного числа. Це означає, що число

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 6

представлене 32 символами, кожен із яких 0 або 1. load у першому рядку


переміщує вміст адреси пам'яті 150 в регістр r1, та за аналогічним принципом
виконується інструкція у другому рядку.
Інструкції мікропроцесора зазвичай роблять операції над регістрами. У
прикладі третій рядок з інструкцією add складає вміст r1 і r2 і отриманий
результат записує в r1. В кінці ми зберігаємо отриманий результат до
оперативної пам'яті за адресою 310 за допомогою команди store.
Також можна навести приклад програмування на асемблері в емуляторі
мікропроцесора EMU8086:
org 100h адресацію всередині коду здвинути
на 100H байт
mov al, [A] перемістити адресу змінної до
регістру
mov bl, [B] перемістити адресу змінної до
регістру
mov cl, [C] перемістити адресу змінної до
регістру
cmp al, bl порівняння двух регістрів та
встановлення прапорів
jl fAnd умовний переход для знакових
чисел, якщо менше (<)
jmp else безумновний переход на мітку
fAnd: мітка
cmp bl, cl порівняння двух регістрів та
встановлення прапорів
jl sAnd умовний переход для знакових
чисел, якщо менше (<)
jmp else безумновний переход на мітку
sAnd: мітка
mov ah, 02h помістити в регістр команду
виводу символу на екран
mov dl, ‘1’ помістити код символу 1 до
регістру виводу

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 7

int 21H переривання


jmp continue безумновний переход на мітку
else: мітка
mov ah, 02h помістити в регістр команду
виводу символу на екран
mov dl, ‘0’ помістити код символу 1 до
регістру виводу
int 21H переривання
jmp continue безумновний переход на мітку
continue: мітка
ret завершення програми
A db -10 ініціалізація змінної розміром 1
байт
B db -5 ініціалізація змінної розміром 1
байт
C db -1 ініціалізація змінної розміром 1
байт

Даний приклад демонструє відображення конструкції розгалуження


для знакових чисел. Аналог конструкції асемблерного коду на абстрактній
мові програмування:
If (A<B and B<C) operator1 then operator2
Таким чином ми спочатку працюємо з регістрами та адресацією,
присвоївши регістрам значення зі змінних за їх адресою. Потім відбувається
робота з прапоровими регістрами за допомогою інструкції cmp, вона
використовується для порівняння двох операндів за таким алгоритмом:
1. З ЧИСЛА1 віднімається ЧИСЛО2
2. Якщо результат дорівнює нулю, то ЧИСЛО1 = ЧИСЛО2
3. Якщо числа дорівнюють, тобто результат дорівнює 0, то
встановлюється прапор ZF
Після встановлення прапорів (порівняння чисел), використовуються
умовні або безумовні переходи на мітки. Завдяки командам умовних та
безумовних переходів була створена конструкція розгалуження. Спочатку

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 8

порівняли перші 2 операнди та перейшли до наступного кроку, потім


наступні 2, що і дорівнює логічній операції AND. Далі, залежно від введених
чисел, ми потрапляємо в першу частину конструкції розгалуження, або в
другу, якщо умова не виконана. У першій частині до консолі виводиться
символ 1, якщо умова не виконана, буде виведено символ 0, за допомогою
DOS функції 02H виведення на дисплей та 21 переривання.
1.2 Функції процесора
З технічної точки зору, мікропроцесори використовуються для
вилучення, інтерпретації, виконання інструкцій і функціонують як системний
комп'ютер, здатний виконувати арифметичні та логічні операції.
Швидкість роботи процесора вимірюється у герцах. Під герцами іноді
мають на увазі кількість операцій процесору, які він виконує за секунду.
Наприклад, процесор який має тактову частоту 1 ГГц здатний виконувати до
1 мільярда операцій всього за одну секунду. Тобто, якщо вище це значення,
то швидше процесор.
1.3 Види та характеристики процесорів
Мікропроцесори класифікуються з урахуванням різних чинників. Ці
фактори призначені для вимірювання швидкості процесора і обсягу
інформації, що оброблюється.
Основними характеристиками є:
 Швидкість роботи, що вимірюється у герцах. Кількість ГГц
вказує, скільки операцій пристрій може виконати за конкретний час.
 Кількість ядер. Раніше існували тільки одноядерні процесори, але
зараз вони мають зазвичай 4 та більше.
 Кеш-пам'ять, що складається із трьох рівнів. Вона містить дані, з
якими пристрій працює найчастіше. Перший рівень починається від 8
кілобайт, а останній може доходити до 16384 і використовується далеко не в
кожному процесорі.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 9

Рисунок 2. Intel 4004 – вважається першим у світі комерційно доступним


однокристальним мікропроцесором
Існує п'ять основних видів процесорів:
 Буферний – це процесор, який здійснює проміжне оброблення
інформації, якою обмінюється ЦП.
 Препроцесор – по суті як буферний процесор, що виконує ту ж
роботу.
 CISC – випускається компанією Intel, є обчислювачем з великою
кількістю команд.
 RISC – альтернатива попереднього процесора, обчислювач зі
скороченою кількістю команд.
 Клон – процесор який виготовляється сторонніми компаніями, за
наявності ліцензії. Клони є власною розробкою компаній, що їх виробляють.
Вони або повністю, або частково можуть мати сумісність із виробами
компанії Intel. Процесори-клони мають індивідуальні параметри. Іноді клони
можуть скласти хорошу конкуренцію відомим компаніям.
Найпопулярнішими компаніями, що виготовляють такі процесори, можна
назвати Cyrix, AMD, NexGen і Texas Instruments.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 10

1.4 Основні блоки процесора

Рисунок 3. Спрощена схема операцій у мікропроцесорі


Для виконання функцій процесор повинен мати у своєму
розпорядженні необхідний набір апаратних засобів. Основними
функціональними блоками процесора є:
 блок арифметично-логічних операцій, що виконує обробку
даних, що надходять. Перелік операцій залежить від типу мікропроцесора. У
більшості процесорів виконуються такі операції: арифметичне додавання та
віднімання; логічні операції АБО, І, НЕ, що виключає АБО; операції
інкременту та декременту; логічні та арифметичні зрушення вправо та вліво.
Що стосується операцій множення та поділу, то у 8-розрядних процесорах
вони виконуються програмним способом, у 16-розрядних процесорах для їх
реалізації передбачені спеціальні команди.
 блок обробки команд, призначений для прийому та декодування
команд, а також для формування сигналів керування вузлами обробки даних.
 блок формування адрес, що забезпечує адресацію до зовнішньої
пам'яті та зовнішніх пристроїв. Його основними вузлами є програмний
лічильник, показник стека, інкрементор-декрементор, адресний регістр.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 11

 блок регістрів, що виконують функції надоперативної


внутрішньої пам'яті, функції тимчасового зберігання операндів та іншого.
 блок синхронізації та управління, що координує роботу всіх
вузлів процесора.
 внутрішня шина, яка використовується для зв'язку між окремими
блоками та вузлами. У загальному випадку вона включає шини для передачі
даних, адреси і керуючих сигналів.
1.5 Арифметично-логічний пристрій (АЛП) базової моделі комп’ютера
у Proteus
1. Блок виконання 8-ми арифметичних мікрооперації над 8-ми
розрядними операндами на базі паралельного суматора та
мультиплексорів.

Рисунок 4. АЛП у Proteus, частина 1


2. Блок виконання 10-ти логічних мікрооперацій з 4-х бітної
довжиною кожного операнда.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 12

Рисунок 5. АЛП у Proteus, частина 2


3. Комбінація двох розглянутих блоків у єдиний блок виконання
арифметичних та логічних мікрооперацій:
 Блок виконання 8-ми арифметичних мікрооперації над 8-ми
розрядними операндами на базі паралельного суматора та мультиплексорів;
 Блок виконання 10-ти логічних мікрооперацій з 4-х бітної
довжиною кожного операнда.

Рисунок 6. АЛП у Proteus, частина 3

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 13

Рисунок 7. АЛП у Proteus, частина 4

Select Input Output


Micro operation
№ S S2 Cin D=A+Y+Cin
Y
1

1 0 0 0 B D=A+B Add

2 0 0 1 B D=A+B+1 Add with carry

3 0 1 0 ~B D=A+(~B) Subtract with borrow

4 0 1 1 ~B D=A+(~B)+1 Subtract

5 1 0 0 0 D=A Transfer A

6 1 0 1 0 D=A+1 Increment A

7 1 1 0 1 D=A-1 Decrement A

8 1 1 1 1 D=A Transfer A

Таблиця 1. 8 арифметичних мікрооперацій

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 14

№ Булева Мікрооперація Назва


Функція

1 F1= xy F1←A ∩ B AND

2 F3 = x F2←A Transfer A

3 F5 = y F3 ← B Transfer B

4 F6 = x @ y F4←A @ B Exclusive OR

5 F7 = x + y F5 ← A U B OR

6 F8= ~(x + y) F6← ~(A U B) NOR

7 F9= ~(x @ y) F7← ~(A @ B) Exclusive NOR

8 F10= ~ y F8← ~B Complement B

9 F12= ~ x F9← ~A Complement A

10 F14= ~(xy) F10← ~(A ∩ B) NAND

Таблиця 2. 10 арифметичних мікрооперацій


Завдяки створенню схеми у інтегрованому середовищі моделювання
електронних схем Proteus, наочно видно схемотехнічні принципи побудови
та функціональні набори мікрокоманд арифметично - логічного пристрою
базової моделі комп’ютера та його логіку.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 15

ГЛАВА 2
ISA – АРХІТЕКТУРА СИСТЕМИ КОМАНД
Кількість інструкцій, які розуміє процесор – обмежена. У
програмуванні, як відомо, можна визначати власні функції. А машинні
команди не мають такої можливості.
Існує фіксована кількість команд, які розуміє процесор. І як програміст
їх не можна розширити.
У світі представлено безліч різних мікропроцесорів, і вони не
використовують однакового набору команд. Іншими словами, вони
інтерпретують цифри в інструкції по-різному.
Одна архітектура мікропроцесора трактує число 501012 як add r10, r12,
а інша архітектура як load r10, 12. Комбінація інструкцій, які розуміє
процесор, і регістрів, які йому доступні, називається архітектурою набору
команди

Рисунок 8. Типова триадресна команда. Такий формат мають команди RISC-


процесорів.
2.1 Еволюція ISA
 Акумуляторні архітектури – набір інструкцій для перших
комп’ютерів, які зберігалися у пам'яті, складався з 10-20 команд. Операції
зазвичай оброблювались в регістрі акумуляторі, а для завантаження операнду
потрібно було явно вказати адресу комірки у пам'яті.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 16

Рисунок 9. Перша ЕОМ – Baby (1948), розроблена в Манчестерському


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

Рисунок 10. Одна з перших комерційних ЕОМ Ferranti Mark-1 (1952) в якій
застосовані індексні регістри.
 Архітектури з реєстрами загального призначення – далі з’явилися
регістри загального призначення. Кожний з РЗП за функціями був рівний
акумуляторному регістру перших ЕОМ, що значно спрощувало розробку
програм та збільшувало швидкість роботи, так як тепер не було необхідності
зберігати посередні результати в ROM і весь час завантажувати звідти
потрібні дані. Поліпшення відбилося на наборі команд. У перших ЕОМ вони
були однооперандними, тепер же були змінені на двоадресні та триадресні.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 17

Рисунок 11. Перша ЕОМ Ferranti Pegasus (1956) з концепцією регістрів


загального призначення.
 CISC – після років розвитку та збільшення швидкодії, почали
дбати і про програмістів. Так у 60-х роках з'явився CISC – складний набір
інструкцій.
Все це вплинуло на:
 полегшення написання програм.
 зменшення складності компіляторів.
 пришвидшення налагодження.
 зменшення використання дорогої пам'яті.
Але через велику кількість інструкцій, усі ці чисельні можливості мало
хто використовував повністю. Тому кількість команд виявилась вкрай
надлишковою.

Рисунок 12. Типовий представник CISC-архітектури – Motorola 680x0

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 18

 RISC – у 70-х тренди знову змінилися. Програми починали


писати не на машинних мовах, а на мовах високого рівня, з’явилась проблема
адаптивності програм. Через це почалась розробка нової архітектури із
скороченим набором команд – RISC, для повної реалізації функціоналу
компіляторів і оптимізації мікроархітектури.
 VLIW – зараз стає актуальна архітектура процесорів з кількома
обчислювальними пристроями (VLIW), в якій процесору дається лише
готовий план дій, а основна частина сполучення команд виконується
програмно. Апаратурна структура стає більш легкою, що стає
перспективнішим, незважаючи на різноманітні складнощі з використанням.
Дуже довга машинна команда характеризується записом команд у пам'ять
конкретною кількістю, що виконуватимуться одночасно на різних
арифметико-логічних пристроях.
2.2 Класифікація архітектур ISA
 Стекові архітектури – стек це пам’ять, з якої елементи
витягуються в порядку, зворотному їхньому приміщенню в стек (Last In First
Out). Стек можна представити як стопку аркушів паперу, на кожному з яких
записані дані, що необхідно зберегти. На вершині стека знаходиться останній
«аркуш у стопці». Для роботи зі стеком передбачені дві операції: push (тобто
покласти елемент у стек) та pop (забрати останній елемент покладений у
стек). Запис відбувається у верхню комірку стека, та все що є у стеку,
зсувається на одну адресу вниз. При забиранні даних зі стеку, вилучені дані
видаляються, а вказівник стеку переміщуються вгору.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 19

Рисунок 13. Діаграма стекової архітектура


 Акумуляторна архітектура – мікропроцесор з акумуляторною
архітектурою відзначається тим, навіть якщо в ньому кілька регістрів, то
кінцеве обчислення більшості інструкцій зберігається в акумуляторному
регістрі. Зберігання у спеціальному регістрі спрощує архітектуру та робить
менше машинний код. Так склалося, що майже всі перші мікропроцесори
робили акумуляторними, та навіть зараз, однокристальні мікроконтролери,
які є акумуляторними машинами, залишаються досить популярними.

Рисунок 14. Діаграма акумуляторної архітектури

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 20

 Регістрова архітектура – у ЕОМ з такою архітектурою,


мікропроцесор включає множину регістрів, які називаються регістрами
загального призначення, скорочено РОН. Такі регістри можна застосовувати
як керований кеш для зберігання тільки що використаних даних. Регістрова
архітектура приймає знаходження операндів в одному з двох варіантів: або в
основної пам'яті або регістрах. Існує три основні підвиди команд для
обробки:
o регістр-регістр – змінні можуть бути тільки у регістрах. В ці ж
самі регістри і зберігається результат.
o регістр-пам'ять – одна з змінних розташовується в регістрі, а
друга в пам'яті. Результат зазвичай заміняє одна із змінних.
o пам'ять-пам'ять – обидві змінні розташовуються в пам'яті.
Результат зберігається також до пам’яті. Але цей підвид команд перестав
розвиватися та у наш час ніде не використовується.
Кожен підвид команд плюси та мінуси.
Команди «Регістр-Регістр» в основному застосовують у ЕОМ типу
RISC. Команди типу «Регістр-Пам'ять» є основними для CISC машин. Та
команди «Пам'ять-Пам'ять» наразі вважають неефективними, хоч і існує в
самих складних машинах типу CISC.
Операції завантаження даних з пам'яті до регістрів та зберігання
значення з регістрів у основній пам'яті схожі з діями з акумулятором.
Розрізнення є лише у етапі вибору необхідного регістру, що забезпечується
конкретними селекторами.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 21

Рисунок 15. Архітектура «регістр-пам'ять» (а) та «регістр-регістр» (б)


2.3 Приклад роботи зі стеком на асемблері
org 100h адресацію всередині коду
здвинути на 100H байт
xor cx,cx очищення регістру
init: початок циклу за допомогою мітки
mov ah, 01h помістити в регістр команду
вводу символу з консолі
int 21h переривання
cmp al,'0' порівняння регістру, в який
зберігається символ вводу та
символу 0 та встановлення
прапорів
je uninit умновий перехід для виходу з
циклу, якщо дорівнює (=)
sub al, 30h додаємо до значення регістру
30h, щоб з коду символу отримати
число
xor ah,ah очищення регістру
push ax помістити значення регістру до
стеку
inc cx збільшити регістр лічильник на 1

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 22

jmp init умовний перехід для продовження


циклу
uninit: мітка циклу для очищення стеку
pop ax забираємо останній доданий
елемент зі стеку до регістру
loop uninit продовження циклу
ret завершення програми
arr_len dw 0 ініціалізація змінної розміром 1
байт

У наведеному вище прикладі коду, відбувається запис чисел, які


вводяться користувачем з консолі, доки не буде введено 0. Кожне введене
число переміщуються до стеку. Після закінчення вводу, кожне число, яке
було переміщене до стеку, витягується назад, щоб очистити стек та
повернути вказівник стеку на місце.

Рисунок 16. Приклад введених чисел, переміщених до стеку


На рисунку вище наглядно видно роботу стеку, числа «складаються
один на одного», та будуть витягнуті зі стеку в оберненому переміщенню
порядку. Адресація ж елементів відбувається не по зростанню, а по
зменшенню. Тобто при додаванні значення у стек, адреса вказівника
зменшується, а при витягуванні, адреса збільшується.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 23

ГЛАВА 3
RISC
В кінці 70-х років оперативна пам'ять стала дешевшати, компілятори
ставали кращими, а більшість програмістів переставали писати на асемблері.
Ці технологічні зміни й спровокували виникнення «філософії» RISC
(Reduced Instruction Set Computer – комп'ютер зі скороченим набором
інструкцій).
Спочатку люди аналізували програми та помітили, що більшість
складних інструкцій CISC не використовуються більшістю програмістів.
Розробники компіляторів вагалися у виборі правильної складної
інструкції. Натомість вони віддали перевагу використанню комбінації
кількох простих інструкцій для вирішення проблеми.
Ідея RISC полягає у заміні складних інструкцій на комбінацію простих.
Так не доведеться займатися складним налагодженням мікрокоду та
розробники компілятора зможуть вирішувати виникаючі проблеми.
Є розбіжності у тому, як розуміти слово скорочений (reduced) в
абревіатурі RISC. Люди думають, що скорочено кількість інструкцій. Але
правильніша інтерпретація — це зменшення складності команд.
Одним із аргументів RISC було те, що люди перестали писати
асемблерний код, тому виникла необхідність створити набір інструкцій,
зручний для компіляторів. Архітектура RISC оптимізована для компіляторів,
але не людей. Тому RISC-код може бути непростим для людини, і це може
принести безліч зайвої роботи та розчарувань.

Рисунок 17. IBM PC/RT або IBM 6150 series (1986) – персональний
комп'ютер на технології RISC.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 24

3.1 Основні принципи RISC – архітектури


Основні закони RISC-архітектури були сформульовані в кінці 70-х
років:
1. Кожна інструкція виконується за один машинний цикл, довжина
якого зворотна тактовій частоті процесора і повинна бути максимально
короткою.
2. Всі команди мають бути однакової довжини та користуватися
мінімумом адресних форматів; таким чином спрощується логіку
центрального керування мікропроцесором.
3. Запит до пам'яті здійснюється лише при обробці операцій запису
та зчитування, видозміна операндів у пам'яті можлива тільки за допомогою
інструкції запису, а все опрацювання даних відбувається тільки в реєстровій
будові мікропроцесора.
4. Набір інструкцій має здійснювати підтримку високорівневих мов
програмування. Тобто підбір набору інструкцій, більш ефективних для
різноманітних мов програмування.
3.2 Конвеєризація
Ще одна основна ідея RISC – це конвеєризація, особливість, яка
дозволила першим RISC-процесорам на голову випередити своїх конкурентів
у тестах продуктивності.
Проектувальники RISC чудово розуміли, що час кожного етапу
варіюється, тому спробували стандартизувати час виконання кожної
інструкції. Вони поділені на етапи, кожен із яких виконується приблизно
однакову кількість часу. Таким чином, ресурси всередині мікропроцесора
використовуються максимально.
Наприклад у ARM RISC-процесорі використовується
п'ятиступінчастий конвеєр інструкцій:
1. Fetch – вилучення інструкції з пам'яті та збільшення лічильника
команд, щоб витягти наступну інструкцію в наступному такті.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 25

2. Decode – декодування інструкції, визначення, що ця інструкція


робить. Тобто активація необхідних частин мікропроцесора для
виконання цієї інструкції.
3. Execute – виконання включає використання арифметико-
логічного пристрою або здійснення операцій зсуву.
4. Memory – доступ до пам'яті, якщо потрібно. Це те, що робить
інструкція load.
5. Write Back – запис результатів у відповідний регістр.

Рисунок 18. Структурна схема конвеєризації


Інструкції ARM складаються з секцій, кожна з яких працює з одним із
цих етапів, а виконання етапу зазвичай займає один такт. Тобто інструкції
ARM дуже зручно конвеєризувати.
Більше того, кожна інструкція має однаковий розмір, тобто етап Fetch
знає, де розташовуватиметься наступна інструкція, і йому не потрібно
проводити декодування.
З інструкціями CISC все не так просто. Вони можуть бути різної
довжини. Тобто без декодування фрагмента інструкції не можна дізнатися
про її розмір і де розташовується наступна інструкція.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 26

Друга проблема CISC – складність інструкцій. Багаторазовий доступ до


пам'яті та виконання великої кількості речей не дозволяють легко розділити
інструкцію CISC на окремі частини, які можна виконувати поетапно.
3.3 Архітектура завантаження/зберігання
Щоб кількість тактів, необхідних для кожної інструкції, була
приблизно однаковою та зручною для конвеєризації, набір інструкцій RISC
чітко відокремлює завантаження з пам'яті та збереження до пам’яті від інших
інструкцій.
Наприклад, в CISC може існувати інструкція, яка завантажує дані з
пам'яті, виробляє додавання, множення, щось ще та записує результат назад у
пам'ять.
У світі RISC такого не може бути. Операції типу складання, зсуву та
множення виконуються лише з регістрів. Вони не мають доступу до пам'яті.
Це дуже важливий момент для ідеї конвеєризації, описаної вище.
Інакше інструкції у конвеєрі можуть залежати одна від одної.
3.4 Приклад використання інструкцій завантаження/зберігання на
асемблері
Перелік основних команд які використовують процесори ARM:
Команд Значення
а
ADD Додати
SUB Відняти
MUL Помножити
AND Побітове І
EOR Побітове виключне АБО
MVN Побітове НІ
ORR Побітове АБО
B Перехід виконання команди в інше місце у пам’яті
MOV Запис значення з одного регістру в інший

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 27

LDR Читання з пам’яті в регістр


STR Запис із регістра до пам’яті
TST Встановлення прапорів згідно логічному І
CMP Встановлення прапорів згідно відніманню
SWP Перестановка початкової та кінцевої частини регістра
Приклад коду, в якому відбувається використання вищеописаних інструкцій
пам’яті – завантажування та зберігання:
.data розділ .data створюється
динамічно, і його адреси
неможливо легко передбачити
var1: .word 3 змінна var1 в пам'яті
var2: .word 4 змінна var2 в пам'яті
.text початок текстового
(кодового) розділу
.global _start
_start:
ldr r0, adr_var1 завантаження адреси пам'яті
змінної var1 через адресу
змінної adr_var1 в R0
ldr r1, adr_var2 завантаження адреси пам'яті
змінної var2 через адресу
змінної adr_var2 в R1
ldr r2, [r0] Завантаження значення
(0x03) за адресою пам'яті в
R0, в регістр R2
str r2, [r1] зберігти значення в R2
(0x03), до адреси пам'яті
R1
bkpt
adr_var1: .word var1 адреса до змінної var1 в
пам'яті
adr_var2: .word var2 адреса до змінної var2 в
пам'яті

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 28

Отже, ми маємо область пам’яті в тому самому розділі коду для


зберігання констант, рядків або зміщень, на які інші можуть посилатися
незалежним від позиції способом, де ми зберігаємо адреси пам’яті змінних
var1 і var2 за допомогою змінних adr_var1 і adr_var2. Перший LDR
завантажує адресу змінної var1 в регістр R0. Другий LDR робить те ж саме
для змінної var2 і завантажує його в R1. Потім ми завантажуємо значення,
збережене за адресою пам’яті, знайденою в R0, в R2, і зберігаємо значення,
знайдене в R2, в адресу пам’яті, знайдену в R1.
Коли ми завантажуємо щось у регістр, дужки [ ] означають, що
значення, знайдене в регістрі між цими дужками, є адресою пам’яті, з якої ми
хочемо щось завантажити.
Коли ми зберігаємо щось у пам’яті, дужки [ ] означають, що значення,
знайдене в регістрі між цими дужками, є адресою пам’яті, в якій ми хочемо
щось зберегти.
3.5 Велика кількість регістрів
Велика проблема для RISC - це спрощення інструкцій, що веде до
збільшення їх кількості. Більше інструкцій вимагають більше пам'яті –
недорогої, але повільної. Якщо програма RISC споживає більше пам'яті, ніж
програма CISC, вона буде повільніше, оскільки процесор постійно чекатиме
повільного читання з пам'яті.
Проектувальники RISC зробили кілька спостережень, які дозволили
вирішити цю проблему. Вони помітили, що безліч інструкцій переміщують
дані між пам'яттю та регістрами, щоб підготуватися до виконання. Маючи
велику кількість регістрів, вони змогли скоротити кількість звернень до
пам'яті.
Це потребувало покращень у компіляторах. Компілятори повинні добре
аналізувати програми, щоб розуміти, коли змінні можна зберігати у регістрі,
а коли їх варто записати до пам’яті. Робота з безліччю регістрів стала
важливим завданням для компіляторів, що дозволяє прискорити роботу
RISC-процесорів.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 29

Інструкції в RISC простіш, вони не мають великої кількості різних


режимів адресації, тому, наприклад, серед 32-бітових команд є більше біт,
щоб вказати номер регістру.
Це дуже важливо, адже у процесорі легко можуть розміститися сотні
регістрів. Це не так складно і не потребує великої кількості транзисторів.
Проблема полягає у нестачі біт, що вказують адресу регістру. Так,
наприклад, у x86 є тільки 3 біти для вказівки регістру. Це дає нам лише 23=8
регістрів. Процесори RISC заощаджують біти через меншу кількість способів
адресації. Таким чином, для адресації використовується 5 біт, що дає 25=32
регістри. Очевидно, що це приклад та значення можуть відрізнятися, але
тенденція зберігається.
3.6 MORS
У RISC-архітектурі використовується механізм перемикання
множинних регістрових вікон, що перекриваються - MORS (Multiple
Overlapping Register Sets), іноді структура регістрового файлу Rolodex.
Механізм MORS став основою архітектури RISC-1, відповідно до якої
процесор містить 138 регістрів для зберігання даних. З них десять, які
називають глобальними, завжди «бачить» програма. Їхнє основне
призначення - зберігання даних, що є загальними для всіх процесів у
поточному контексті програми. Інші 128 регістрів розбиті на вісім вікон, що
перекриваються, по 22 регістри. У кожний момент часу програма, що
виконується на RISC-1, «бачить» десять глобальних регістрів і одне ціле
вікно, тобто всього 32 регістри.
Ідея структури MORS полягає у мінімізації витрат процесорного часу
при зверненні до процедур. Для цього кожне з восьми вікон пов'язане з
конкретною процедурою, а реєстри вікна розділені на верхні, локальні та
нижні. При виклику процедури «В» з процедури «А», активне вікно
регістрового файлу зміщується на шість позицій так, що верхні регістри
процедури «A» перекриваються нижніми регістрами процедури «B».

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 30

Зони вікон, що перекриваються - це фізично одні і ті ж самі регістри,


доступні обом процедурам. Вони використовуються для передачі параметрів,
адресу повернення та дозволяють звертатися до процедури, не обмінюючись
даними з оперативною пам'яттю. Таким чином, виклик процедури
реалізується не складніше, ніж, скажімо, підсумовування регістрових
операндів. До того ж ця операція виконується практично моментально: для
звернення до процедури або для повернення в точку виклику достатньо
перемістити покажчик активного вікна регістрового файлу. У цьому полягає
найважливіша риса архітектури RISC-1.
3.7 Стиснутий набір інструкцій
Стиснутий набір інструкцій – це відносно нова ідея для світу RISC,
створена для вирішення проблеми великого споживання пам'яті, з якою
CISC-процесори не стикаються.
Оскільки ця ідея є новою, то ARM довелося модернізувати її під
існуючу архітектуру. А ось сучасний RISC-V спеціально проектувався під
стиснутий набір інструкцій і тому підтримує їх із самого початку. Це дещо
перероблена ідея CISC, оскільки CISC інструкції можуть бути як дуже
короткими, так і дуже довгими.
Процесори RISC не можуть додати короткі інструкції, оскільки це
ускладнює роботу конвеєрів. Натомість проектувальники вирішили
використати стиснуті інструкції. Це означає, що підмножина найчастіше
використовуваних 32-бітних інструкцій переміщається в 16-бітові інструкції.
Отже, коли процесор вибирає інструкцію, може вибрати дві інструкції.
Так, наприклад, у RISC-V є спеціальний прапор, який позначає,
стиснута це інструкція чи ні. Якщо інструкція стиснута, вона буде розібрана
в дві окремі 32-бітові інструкції. Це цікавий момент, тому що вся решта
мікропроцесора працює як завжди. На вхід подаються звичні однорідні 32-
бітові інструкції, і далі все працює як завжди.
Отже, стиснуті інструкції не додають жодних нових інструкцій.
Використання цієї функції значною мірою залежить від розумних збирачів та

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 31

компіляторів. Стиснута інструкція використовує менше бітів і, отже, не може


виконувати всі варіації того, що може робити звичайна 32-бітна інструкція.
Більше того, стиснута інструкція має доступ тільки до 8 найбільш
використовуваних регістрів, а не до всіх 32. Також не можна завантажити
константи з великим числом або великою адресою в пам'яті.
Таким чином, компілятор або збирач повинен вирішити, чи варто
пакувати конкретну пару інструкцій разом чи ні. Збиральник повинен шукати
можливості для стиснення.
Стислі набори інструкцій змінили стан справ. Деякі варіанти RISC
використовують менше байт, ніж ті самі програми на x86.
3.8 Кеш пам`ять
Кеш - це спеціальна форма дуже швидкої пам'яті, що розташовується
на мікросхемі процесора. Вони займають коштовну кремнієву площу,
необхідну процесору, тому є обмеження за розміром кешу.
Ідея кешування полягає в тому, що більшість програм запускають
невелику частину себе набагато частіше, ніж решту. Часто невеликі частини
програми повторюються незліченну кількість разів, наприклад, у разі
використання циклів.
Отже, якщо помістити часто використовувані частини програми в кеш,
можна досягти значного приросту швидкості за допомогою скорочення часу
звернення процесору до пам’яті.
Це була рання стратегія RISC, коли програми RISC займали більше
місця, ніж програми CISC. Оскільки процесори RISC були простішими, для
їх реалізації потрібно менше транзисторів. Це залишало більше кремнієвої
площі, яку можна було витратити інші речі, наприклад, для кешів.
Таким чином, маючи великі кеші, процесори RISC компенсували те, що
їх програми більше, ніж CISC. Однак зі стиском інструкцій це вже не так.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 32

Рисунок 19. Вигляд процесору Intel всередині. Ядра, контролер пам’яті,


загальний кеш третього рівня, та спеціальні функції ЦП, які не є
частиною процесорного ядра
3.9 Організація загальної шини та передача даних між регістрами у
Proteus
Для побудови електричної схеми будемо використовувати:
 10 4-розрядних регістрів 74178, які будемо використовувати по
двоє, в якості 8-розрядних;
 4 здвоєнні 4-розрядні мультиплексори 74153;
 для керування завантаження регістрів
використємодемультиплексор 74HC138;
 для керування адресоюмултиплексора використаємо енкодер
74LS147.
Спочатку будуємо електричну схему, яка складається з регістрів та
мультиплексорів. Регістри зберігають дані, а мультиплексори вказують, з
якого регістру витягнути ці дані.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 33

Рисунок 20. Електрична схема з регістрів та мультиплексорів у Proteus,


частина 1
Тепер будуємо загальну шину даних, та додаємо регістри, в які будемо
передавати дані.

Рисунок 21. Електрична схема з регістрів та мультиплексорів у Proteus,


частина 2

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 34

Після чого до схеми додамо:


 демультиплексор 74HC138, який буде керувати вибором регістру
для запису даних;
 шифратор 74LS147, який буде передавати адресу
мультиплексору;
 з’єднаємо усі входи CLOCKв один.

Рисунок 22. Електрична схема з регістрів та мультиплексорів у Proteus,


частина 3
Таким чином було створено загальну шину для передачі даних між
регістрами за допомогою інтегрованого середовища моделювання
електронних схем Proteus.
За допомогою створення схеми пояюсюються схемотехнічні принципи
організації системної шини комп’ютера на базі мультеплексорів та трьох
станових буферів.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 35

ГЛАВА 4
CISC
RISC і CISC – філософії того, як потрібно проектувати процесори.
CISC – філософію складно визначити, оскільки мікросхеми, які
визначаються як CISC, дуже різноманітні. Однак у них можна назвати
загальні закономірності.
Наприкінці 1970 року, коли почалася розробка CISC-процесорів,
пам'ять була дуже дорогою. Компілятори також були погані, а люди писали
на асемблері.
Оскільки пам'ять була дорогою, люди шукали спосіб мінімізувати
використання пам'яті. Одне з таких рішень – використовувати складні
інструкції процесора, які роблять багато дій.
Це також допомогло програмістам на асемблері, оскільки вони змогли
писати простіші програми, адже завжди знайдеться інструкція, яка виконує
те, що потрібно.
Через якийсь час це стало складним. Проектування декодерів для таких
команд стало суттєвою проблемою. Спочатку її вирішили за допомогою
мікрокоду. У програмуванні код, що повторюється, виноситься в окремі
підпрограми (функції), які можна викликати безліч разів.
Ідея мікрокоду дуже близька до цього. Для кожної інструкції з набору
створюється підпрограма, яка складається з простих інструкцій та
зберігається у спеціальній пам'яті всередині мікропроцесора.
Таким чином процесор містить невеликий набір простих інструкцій, на
основі яких можна створити безліч складних інструкцій із набору команд за
допомогою додавання підпрограм у мікрокод.
Мікрокод зберігається в ROM-пам'яті (Read-Only Memory, тільки для
читання), яка значно дешевша за оперативну пам'ять. Отже, зменшення
використання оперативної пам'яті через збільшення використання постійної
пам'яті є вигідним компромісом.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 36

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

Рисунок 23. Різниця команд CISC та RISC


Інструкції CISC можуть бути будь-якої довжини. Максимальна
теоретична довжина інструкції x86 може бути нескінченною, але практично
не перевищує 15 байт. А от інструкції RISC мають обмежену довжину.
4.1 Гіпертредінг (апаратні потоки)
Мікрооперації в CISC – непрості. Конвеєр команд не буде повністю
заповнений, як у RISC.
Тому використовується гіпертредінг. Процесор CISC бере кілька
потоків інструкцій. Кожен потік інструкцій розбивається на частини та
конвертується в мікрооперації.
Оскільки цей процес недосконалий, існує ряд прогалин у конвеєрі. Але,
маючи додатковий потік інструкцій, можна помістити в ці проміжки інші
мікрооперації і таким чином заповнити конвеєр.
Ця стратегія є актуальною і для RISC-процесорів, тому що не кожна
інструкція може виконуватися кожен такт. Доступ до пам'яті, наприклад,
потребує більше часу. Аналогічно для збереження та відновлення регістрів за

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 37

допомогою складної інструкції, яку надають деякі процесори RISC. У коді є


переходи, які викликають прогалини в конвеєрі.
Отже, більш просунуті та продуктивні процесори RISC, такі як IBM
POWER, також використовуватимуть апаратні потоки.

Рисунок 24. Серверний процесор IBM POWER9


Але гіпертредінг більш вигідний для процесорів CISC. Створення
мікрооперацій - менш ідеальний процес, і він створює більше прогалин у
конвеєрі, отже, гіпертредінг дає більший приріст продуктивності. Якщо ваш
конвеєр завжди заповнений, то від апаратних потоків немає жодної користі.
Апаратні потоки також можуть становити загрозу безпеці. Intel
зіткнулася з проблемами безпеки, тому що один потік інструкцій може
впливати на інший. Деякі виробники вважають за краще відключати апаратні
потоки з цієї причини.
Як правило, апаратні потоки дають приблизно 20% приріст
продуктивності. Тобто процесор з 5 ядрами та гіпертредінг буде приблизно
схожий на процесор з 6 ядрами без нього. Але це значення залежить багато в
чому від архітектури процесора.
4.2 Чим відрізняються мікрокоманди від мікрокоду?
Мікрокод – це маленькі програми у ROM-пам'яті, які виконуються для
імітації складної інструкції. На відміну від мікрооперацій, їх не можна
конвеєризувати. Вони не створені для цього.
Насправді мікрокод та мікрооперації існують пліч-о-пліч. У процесорі,
який використовує мікрооперації, програми мікрокоду будуть

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 38

використовуватися для генерації серії мікрооперацій, що поміщаються в


конвеєр для подальшого виконання.
Мікрокод у традиційному CISC-процесорі повинен проводити
декодування та виконання. У міру виконання мікрокод бере під свій контроль
різні ресурси процесора, такі як АЛУ, регістри, тощо.
У сучасних CISC, мікрокод виконає роботу швидше, тому що не
використовує ресурси процесора. Він використовується просто для створення
послідовності мікрооперацій.
4.3 Різниця мікрооперацій та RISC-інструкцій
Інструкції RISC існують лише на рівні набору команд. Це те, із чим
працюють компілятори.

Рисунок 25. Діаграма мікрооперацій та інструкцій


Інструкції прибувають із пам'яті, зазвичай із кеша. Далі вони входять
до декодеру, який розбиває кожну інструкцію на одну або кілька
мікрооперацій. Хоча вони виконують менше однієї інструкції, вони значно
більші.
Мікрооперація – як правило, великі. Вони можуть бути більшими за
100 біт. Не має значення, наскільки вони великі, тому що вони існують
тимчасово. Це відрізняє їх від інструкцій RISC, які становлять програми і
можуть займати гігабайти пам'яті. Інструкції не можуть бути як завгодно
великими.
Мікрооперації є специфічними для кожної моделі процесора. Кожен біт
вказує частину процесора, яку необхідно увімкнути або вимкнути під час

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 39

виконання. Взагалі немає необхідності в декодуванні, якщо можна зробити


велику інструкцію. Кожен біт відповідає за певний ресурс у процесорі. Таким
чином, різні процесори з однаковим набором команд будуть мати різні
мікрокоди.
4.4 У чому різниця між наборами команд RISC та CISC?
Характеристика CISC RISC
Довжина команди Варіюється Єдина
Розташування полів у Варіюється Постійне
команді
Кількість регістрів Кілька (часто Багато регістрів
спеціалізованих) загального призначення
Доступ до пам'яті Може виконуватися як Виконується тільки
частина різних типів спеціальними
команд командами
Таблиця 3. Порівняльна оцінка CISC та RISC архітектур
В основі RISC та CISC лежать різні філософії. Це не так важливо для
високопродуктивних чіпів, оскільки у них така ж велика кількість
транзисторів і складність поділу інструкцій x86 затьмарюється всім іншим.
Однак ці чіпи виглядають по-різному, і до них потрібний різний підхід.
Погляд на RISC-V може дати гарне уявлення про різницю. RISC-V
заснований на ідеї адаптувати створення конкретних мікросхем із
можливістю вибирати, які розширення набору команд
використовуватимуться.
Тим не менш, все ще існує мінімальний набір основних інструкцій, які
дуже схожі на RISC:
 фіксований розмір інструкції.
 інструкції розроблені для використання певних частин процесора
та оптимізовані для конвеєрної обробки.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 40

 архітектура Load/Store. Більшість інструкцій працюють із


регістрами. Робота з пам'яттю проводиться переважно за допомогою
спеціальних інструкцій, створених виключно для цього.
 безліч регістрів, щоб уникнути частого доступу до пам'яті.
Для порівняння, інструкції CISC можуть бути змінною довжиною.
Люди можуть сперечатися, що мікрооперації це стиль RISC, але мікрокод це
деталь реалізації, близька до апаратної.
Одна із основних ідей RISC – перекласти важку роботу на компілятор, і
досі компілятор не може перетворити мікрооперації на оптимальне
виконання.
Час більш важливий при виконанні мікрооперацій, ніж компіляції. Це
очевидна перевага, яка дозволяє передовим компіляторам перебудовувати
код, замість того, щоб покладатися на дорогоцінний кремній.
Хоча процесори RISC з роками отримали спеціалізовані інструкції,
наприклад, для векторної обробки, у них, як і раніше, немає складності з
безліччю режимів доступу до пам'яті як у CISC.
4.5 Приклад процесора з CISC архітектурою, його набор команд та
приклад використання цих команд
Процесори на базі 8086 є прикладом архітектури комп’ютера зі
складним набором команд або архітектури CISC.

Рисунок 26. Мікропроцесор Intel 8086


Це перший 16-бітний мікропроцесор компанії Intel. Розроблявся з
весни 1976 року і випущений 8 червня 1978. Реалізована в процесорі
архітектура набору команд стала основою відомої архітектури x86, в основі
якої лежить CISC. Процесори цієї архітектури стали найуспішнішою лінією
процесорів Intel.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 41

Рисунок 27. Перелік інструкцій для Intel 8086


Розглянемо інструкцію ADC – додавання з переносом. Прапори
змінюються залежно від результату виконання команди.
Алгоритм роботи команди ADC:
 ЧИСЛО1 = ЧИСЛО1 + ЧИСЛО2 + CF
ЧИСЛО1 може бути одним із наступних:
 Область пам'яті (MEM)
 Реєстр загального призначення (REG)
ЧИСЛО2 може бути одним із наступних:
 Область пам'яті (MEM)
 Реєстр загального призначення (REG)
 Безпосереднє значення – число (IMM)
Пара команд ADD та ADC застосовується для складання підвищеної
точності. Так само, як і у випадку з командою SBB, використання інструкції
ADC дозволяє складати, наприклад, 32-розрядні числа за допомогою 16-
розрядних регістрів. Та й взагалі розрядність чисел, можна сказати, може
бути будь-якою.
org 100h адресацію всередині коду
здвинути на 100H байт
xor dx, dx очищуємо регістр
mov ax, 0FFFFh переміщуємо до регістру
32-х розрядне число

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 42

xor bx, bx очищуємо регістр


mov cx, 1 переміщуємо число до
регістру
add ax, cx додавання 2 регістрів
adc dx, bx додавання 2 регістрів з
прапором переносуу
ret завершення програми

Спочатку отримуємо число парі DX: AX (0000: FFFF), потім у парі BX:
CX (0000: 0001). Далі виконується інструкція додавання AX та CX, тобто
65535 + 1 = 65536. Після додавання у парі DX:AX отримуємо 65536
(0001:0000), AX = 0000, DX = 0001. Таким чином при додаванні числа ми
зберегли перенос у старшому регістрі при та отримали коректний результат у
регістровій парі DX:AX.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 43

ВИСНОВОК
В результаті написання курсової роботи було досліджено розвиток в
галузі архітектури процесорів. Також по завершенню роботи було виявлено
та опрацьовано особливості архітектури RISC.
Головні рисами архітектури RISC – це виконання інструкцій за один
машинний цикл, яка має бути як можна коротшою. Також всі команди мають
бути однакової довжини та користуватися мінімумом адресних форматів.
Запити до пам'яті мають здійснюватися лише при обробці операцій запису та
зчитування, видозміна операндів у пам'яті можлива тільки за допомогою
інструкції запису. А набір інструкцій повинен здійснювати підтримку
високорівневих мов програмування.
Отже, основними особливостями будови комп’ютерів зі скороченим
набором команд є:
 фіксований розмір інструкцій;
 команди розроблені для використання певних частин процесора
та оптимізовані для конвеєрної обробки;
 робота з пам'яттю проводиться переважно за допомогою
спеціальних інструкцій, створених виключно для цього;
 розширений обсяг регістрової пам'яті: від 32 до кількох сотень
регістрів загального призначення, що входять до складу
мікропроцесора.
Також із особливостей можна виділити концепцію конвеєризації. Вона
дозволила першим RISC-процесорам обігнати конкурентів у продуктивності.

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 44

СПИСОК РИСУНКІВ
Рисунок 1. Один із перших RISC-процесорів, розроблений підрозділом
Office Products Division компанії IBM на початку 1980-х...................................5
Рисунок 2. Intel 4004 – вважається першим у світі комерційно
доступним однокристальним мікропроцесором..................................................9
Рисунок 3. Спрощена схема операцій у мікропроцесорі.........................10
Рисунок 4. АЛП у Proteus, частина 1.........................................................11
Рисунок 5. АЛП у Proteus, частина 2.........................................................12
Рисунок 6. АЛП у Proteus, частина 3.........................................................13
Рисунок 7. АЛП у Proteus, частина 4.........................................................13
Рисунок 8. Типова триадресна команда. Такий формат мають команди
RISC-процесорів....................................................................................................14
Рисунок 9. Перша ЕОМ – Baby (1948), розроблена в Манчестерському
університеті, з акумуляторною архітектурою....................................................15
Рисунок 10. Одна з перших комерційних ЕОМ Ferranti Mark-1 (1952) в
якій застосовані індексні регістри.......................................................................15
Рисунок 11. Перша ЕОМ Ferranti Pegasus (1956) з концепцією регістрів
загального призначення........................................................................................16
Рисунок 12. Типовий представник CISC-архітектури – Motorola 680x0
.................................................................................................................................16
Рисунок 13. Діаграма стекової архітектура..............................................18
Рисунок 14. Діаграма акумуляторної архітектури...................................19
Рисунок 15. Архітектура «регістр-пам'ять» (а) та «регістр-регістр» (б)20
Рисунок 16. Приклад введених чисел, переміщених до стеку................21
Рисунок 17. IBM PC/RT або IBM 6150 series (1986) – персональний
комп'ютер на технології RISC..............................................................................23
Рисунок 18. Структурна схема конвеєризації..........................................25
Рисунок 19. Вигляд процесору Intel всередині. Ядра, контролер пам’яті,
загальний кеш третього рівня, та спеціальні функції ЦП, які не є частиною
процесорного ядра.................................................................................................31

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 45

Рисунок 20. Електрична схема з регістрів та мультиплексорів у Proteus,


частина 1.................................................................................................................32
Рисунок 21. Електрична схема з регістрів та мультиплексорів у Proteus,
частина 2.................................................................................................................32
Рисунок 22. Електрична схема з регістрів та мультиплексорів у Proteus,
частина 3.................................................................................................................33
Рисунок 23. Різниця команд CISC та RISC...............................................35
Рисунок 24. Серверний процесор IBM POWER9.....................................36
Рисунок 25. Діаграма мікрооперацій та інструкцій.................................37
Рисунок 26. Мікропроцесор Intel 8086......................................................39
Рисунок 27. Перелік інструкцій для Intel 8086.........................................40

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 46

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ


1. Стаття з Вікіпедії; тема: RISC архітектура:
(https://ru.wikipedia.org/wiki/RISC)
2. Стаття з Вікіпедії; тема: конвеєрна архітектура філософії RISC
(https://en.wikipedia.org/wiki/Classic_RISC_pipeline)
3. Посібник від 28 травня, 2015; автори: Andrew Waterman, Yunsup
Lee, David Patterson, Krste Asanovi´c CS Division, EECS Department, University
of California, Berkeley; видання: 1.7; тема: стислий набор інструкцій RISC-V
(https://riscv.org/wp-content/uploads/2015/05/riscv-compressed-spec-v1.7.pdf)
4. Стаття з Вікіпедії; тема: архітектура системи команд
(https://uk.wikipedia.org/wiki/Архітектура_системи_команд)
5. Стаття з Вікіпедії; тема: мікропроцесори
(https://uk.wikipedia.org/wiki/Мікропроцесор)
6. Стаття з Вікіпедії; тема: CISC архітектура
(https://ru.wikipedia.org/wiki/CISC)
7. Стаття з realworldtech від 13 лютого , 2000 року; автор: Paul
DeMone; тема: різниця CISC та RISC архітектур
(https://www.realworldtech.com/risc-vs-cisc/3/)

2022р. Шевчук А. І.
Кафедра комп’ютерної інженерії 47

ДОДАТОК
1. Результат перевірки курсової роботи на унікальність. Повний звіт
додається у відповіді з курсовою.

2022р. Шевчук А. І.

You might also like