8.4. Вдосконалення архітектури
На жаль, нескінченно зменшувати розміри елементарних схем перемикачів неможливо, оскільки вони обмежені знизу розмірами кристалічних решіток. Так само не можна безмежно підвищувати тактову частоту, оскільки швидкість розповсюдження електричного струму кінцева.
Мабуть, найближчим часом елементні можливості мікросхем підійдуть до теоретичної межі, подальше підвищення продуктивності комп’ютерів досягатиметься тільки за рахунок вдосконалення архітектури, яке розвивається у чотирьох основних напрямах.
1. Збільшення розрядності. Тенденція до підвищення розрядності виразно простежується в історії мікропроцесорів. Сучасні кристали в основному 32-розрядні, проте просунуті мікросхеми, наприклад, POWERPC, а також перспективні масові моделі, наприклад, “Merced” – 64-розрядні. Мабуть, у майбутньому можна чекати і появи 128-бітових чипів.
2. Рух убік RISC. Абревіатура RISC означає Reduced Instruction Set Computer (комп’ютер із скороченим набором команд). Вважається неправильним Reduced Instruction Set Computing – обчислення із скороченим набором команд. Для того щоб зрозуміти сенс цього явища, потрібно повернутися до ранньої історії ЕОМ. У ті часи алгоритмічні мови і компілятори ще не були відомі, і все програмування велося вручну, у командах процесора. Тому розробники комп’ютерів прагнули зробити систему команд зручною для ручного програмування, наситивши її складними та місткими командами. Наприклад, однією машинною командою можна було обчислити функцію log або sin, або перетворити число в іншу систему числення. Репертуар машинних команд виходив достатньо складним, наприклад, в IBM-360 були реалізовані 144 команди центрального процесора. Така організація системи команд отримала назву CISC – Complex Instruction Set Computing, тобто обчислення з складним набором команд.
Засновником CISC-архитектури можна вважати компанію IBM з її базовою архітектурою /360, ядро якої використовується з 1964 року і дійшло до наших днів, наприклад, в таких сучасних мейнфреймах як IBM ES/9000. Лідером у розробці мікропроцесорів на повний набір команд CISC вважається компанія Intel зі своєю серією x86 та Pentium (виключаючи сучасні Intel Pentium 4, Pentium D, Core, AMD Athlon, Phenom, які є гібридними), а також процесори Motorola MC680x0. Ця архітектура є практичним стандартом для ринку мікрокомп’ютерів.
Для CISC-процессоров характерне:
порівняльно невелика кількість регістрів загального призначення;
велика кількість машинних команд, деякі з яких навантажені семантично аналогічно операторам високорівневих мов програмування і виконуються за багато тактів;
велика кількість методів адресації;
велика кількість форматів команд різної розрядності;
використання переважно двоадресного формату команд;
наявність команд обробки типа регістр-пам’ять.
Стандартний набір команд чипа i8086 та всіх подальших поколінь процесорів Intel містить близько ста інструкцій найрізноманітнішого призначення та формату. Оскільки формат команди змінний, то вона може бути коректно вибрана з пам’яті тільки після розшифровки коду операції. В результаті кожна інструкція вимагає для свого виконання кілька тактів процесора. Програма, яка реалізовує деякий алгоритм, може бути короткою, проте час виконання цієї програми у комп’ютері виявляється значним.
Ідея створити RISC-процесор прийшла IBM. Ще у 70-х роках вони відмітили, що багато архітектурних та функціональних особливостей не використовуються розробниками програмного забезпечення. До того ж, одні з перших компіляторів мов високого рівня не використали багато інструкцій стандартних процесорів. Як наслідок з цього, програми, які були написані на таких компіляторах, нераціонально використовували процесорні ресурси.
Процесори з RISC-архітектурою працюють по-іншому. У цих процесорах набір команд сильно обмежений, всі інструкції максимально спрощені, вони мають однаковий формат і, в ідеалі, можуть виконуватися за один машинний такт. Програма, що виконує твкий самий алгоритм примітивними командами, виходить довшою, проте за рахунок високої швидкодії процесора спостерігається значний виграш у продуктивності. Зрозуміло, що програмувати вручну для такої машини було б незручно, проте цього ніхто і не робить, оскільки техніка компіляції досягла великих висот. Швидкодіючі оптимізуючі компілятори дозволяють створити такий код, який використовує всі особливості набору команд і дозволяє добитися найвищої обчислювальної потужності.
Паростки цієї RISC-архітектури беруть початок своїм корінням від комп’ютерів CDC6600, розробники яких (Торнтон, Крей та ін.) усвідомили важливість спрощення набору команд для побудови швидких обчислювальних машин. Цю традицію спрощення архітектури С. Крей з успіхом застосував при створенні широко відомої серії суперкомп’ютерів компанії Cray Research. Проте остаточне поняття RISC-процессоров у сучасному його розумінні сформувалося на початку 1980-х років на базі трьох дослідницьких проектів університету Берклі, Стенфордському та Каліфорнійському університетах США. Процесори 801 компанії IBM, процесори RISC університету Берклі та процесори MIPS Стенфордського університету виконували невеликий (50-100) набір команд, тоді як звичайні CISC-процессори виконували 100‑200 команд.
Прихильники RISC-архітектури на ділі довели силу своїх аргументів – найпродуктивніши сервери і робочі станції сьогодні використовують RISC-процесори, проте і прихильники CISC-технології не здаються, на їх боці гігантський об’єм накопиченого програмного забезпечення у кодах ix86. В останніх моделях мікропроцесорів Intel спеціально для мультимедійних додатків введені ще складніші «векторні» команди додаткового набору MMX (MultiMedia eXtention – мультимедійне розширення) та SSE (Streaming SIMD Extensions – потокове SIMD-розширення), що виконують у наддовгих, – до 128 розрядів – регістрах кілька паралельних операцій додавання або множення. SIMD (Single Instruction Multiply Data) – архітектура обчислювальної системи, яка одним потоком команд обробляє кілька потоків операндів або пар операндів.
Характерні особливості RISC-процесорів.
Фіксована довжина машинних інструкцій (наприклад, 32 біта) та простий формат команди.
Спеціалізовані команди для операцій з пам’яттю – читання або записи. Операції типу «прочитати-змінити-записати» відсутні. Будь-які операції «змінити» виконуються лише над вмістом регістрів.
Велика кількість регістрів загального призначення (32 і більш у порівнянні з 8–16 регістрами у CISC-архитектурах), що дозволяє більшій кількості даних зберігатися у регістрах на процесорному кристалі більший час і спрощує роботу компілятора щодо розподілу регістрів під змінні.
Відсутність підтримки операцій типу «змінити» над скороченими типами даних – байт, 16-бітове слово. Так, наприклад, система команд DEC Alpha містила лише операції над 64-бітовими словами, і вимагала розробки та подальшого виклику процедур для виконання операцій над байтами, 16- та 32-бітовими словами.
Відсутність мікропрограм всередині самого процесора. Те, що у CISC-процесорі виконується мікропрограмами, у RISC процесорі виконується як звичайний (хоча і розміщений в спеціальне сховище) машинний код, що не відрізняється принципово від коду ядра ОС та додатків.
Для того щоб об’єднати переваги обох підходів, в останніх розробках компанії Intel (маються на увазі Pentium та Pentium Pro), а також її послідовників-конкурентів (AMD R5, Cyrix M1, NexGen Nx586 і ін.) широко використовуються ідеї, які реалізовані у RISC-микропроцессорах, на ходу перетворюючи CISC команди у набір RISC-команд, і виконуючи їх на своєму RISC-ядрі (гібридна архітектура). На зовнішньому рівні мікропроцесор виконує стандартний CISC-набір команд, а на внутрішньому – деякий спрощений RISC. Вбудований мікропрограмний емулятор перетворить кожну зовнішню команду у низку внутрішніх, і виконує її з усією можливою продуктивністю RISC-рахівника.
3. Ускладнення архітектури процесора. Ще один резерв підвищення продуктивності криється у розпаралелюванні обчислень всередині одного кристала, при цьому розробники мікросхем намагаються реалізувати в конструкції принципи, які є типовими для організації промислового виробництва.
Як відомо, кожна машинна операція складається з кількох фаз: вибірка команди, розшифровка її, читання операндів, безпосередньо виконання операції, запис результату. У старих моделях процесора ці фази виконувалися для кожної операції строго послідовно подібно до того, як в кустарних майстернях йшла колись зборка автомобілів – спочатку збирали одну машину, потім другу, при цьому частина робітників постійно простоювала.
Сучасний мікропроцесор влаштований значно складніше, він схожий на підприємство, в якому безліч робітників збирають на конвеєрі потік автомобілів. Конвеєрний процесор суміщає за часом виконання кількох команд: для однієї відбувається читання операції, для другої – декодування та вибірка регістрів, для третьої – виконання команди обчислювальним блоком і так далі В результаті при тій самій тактовій частоті істотно підвищується загальна продуктивність.
На малюнку нижче показано звичайну, послідовну обробку команд та конвеєрну обробку. Для спрощення показано п’ять машинних команд, у яких є п’ять машинних циклів, що пронумеровані
1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |
- Міністерство освіти і науки україни
- 9.12. Огляд WinDev 154
- 10. Історія операційних систем 169
- Список літератури 187
- Передмова
- 1. Передвісники комп’ютерної ери
- 1.1. Комп’ютерна програма–що це?
- 1.2. Доелектронна історія обчислювальної техніки
- Логарифмічна лінійка
- 1.3. Можливості двійкового коду
- 1.4. Розвиток двійкової системи
- 1.5. Винахід перших комп’ютерів
- Перша в історії працююча програмнокерована універсальна обчислювальна машина z-3 (1941 р.)
- 1.6. Гарвардська архітектура
- 1.7. Архітектура фон Неймана
- 1.8. Створення зрозумілих людині кодів
- 1.9. Крок на благо програмування
- 1.10. Можливості програмного управління
- 2. Нові мови програмування
- 2.1. Поневіряння пакетної обробки
- 2.2. Універсальна мова програмування
- 2.3. Усунення неоднозначності
- 2.4. Заклик до дотримання математичної строгості
- 2.5. Пошук та усунення помилок
- 2.6. Нелегке мистецтво програмування
- 2.7. Обчислювальна техніка та програмування в срср
- 3. Розквіт та хаос програмного забезпечення
- 3.1. Місце народження хакерів
- 3.2. Два чародії програмування
- 3.3. Перші промислові стандарти
- 3.4. Дружній інтерфейс
- 3.5. Прообраз сучасного «ноутбука»
- 4. Болісний шлях розвитку програмування
- 4.1. Плануюче обчислення
- 4.2. Внесок Великої Британії
- 4.3. Програмування англійською мовою
- 5. Три комерційні гіганти
- 5.1. Перша комерційна мова програмування
- 5.2. Обчислювальна техніка приходить у бізнес
- 5.3. Народження codasyl
- 5.4. Конференція в Цюріху
- 5.5. На шляху до сумісності комп’ютерів
- 5.6. Розбіжності Нового Світу
- 6. Десятиліття динамічного розвитку
- 6.1. Перші кроки непроцедурної мови
- 6.3. Алфавітне хрещення
- 6.4. Успіх та суперечки
- 6.5. Інженерний підхід
- 6.6. Структурний підхід
- 6.7. Поява мови “Ада”
- 7. Програмування приходить у наші домівки
- 7.1. Розквіт Бейсіка
- 7.2. Поява мови Модула-2
- 7.3. Музикальний француз
- 7.4.Довгожитель Lisp – інструмент функціонального програмування
- 7.5. Prolog – нездійснена мрія еом V покоління
- 7.6. Революція на ім’я Java
- 8. Історія і шляхи розвитку супер-еом
- 8.1. Усе починалося з менфреймов
- 8.2. Напрями розвитку обчислювальної техніки
- 8.3. Розвиток елементної бази. Закон Мура
- 8.4. Вдосконалення архітектури
- Звичайна послідовн обробка
- Конвеєрна обробка
- 9. Сучасний стан та перспективи розвитку програмування
- 9.1. Криза у програмуванні
- 9.2. Методологія процедурно-орієнтованогопрограмування
- 9.3. Методологія об’єктно-орієнтованогопрограмування
- 9.4. Методологія об’єктно-орієнтованогоаналізу та проектування
- 9.5. Технології програмування
- 9.6. Case –засоби
- 9.7. Методологія rad
- 9.11.1. Знайомство с LightSwitch
- 9.11.2. Архитектура LightSwitch
- 9.11.3. Створення проекту в Microsoft Visual Studio LightSwitch
- 9.11.4. Дванадцять основних переваг LightSwitch
- 9.12. Огляд WinDev
- 9.12.1. ПризначенняWinDev
- 9.12.2. Деякі характеристики wLanguage
- 9.13. Технологія model checking
- 9.14. NeoBook – программирование для непрограммистов
- 9.14.1. Введення для секретарок
- 9.14.3. Можливості та області застосування
- 9.15. Файлові системи найближчого майбутнього
- 9.15.1. Зетта-повінь настає
- 9.15.2. Файлова система zfs
- 9.15.3. Файлова системаBtrfs
- 9.15.4. Файлова системаHammer
- 10. Історія операційних систем
- 10.1. Послідовна обробка даних
- 10.2. Прості пакетні системи
- 10.3. Багатозадачні пакетні системи
- 10.4. Системи з режимом розподілу часу
- 10.5. Основні досягнення
- 10.6. Сучасні системи unix
- 10.7. Os/2. Битва двох гігантів
- Список літератури