logo
Вступ до спец

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-процесорів.

  1. Фіксована довжина машинних інструкцій (наприклад, 32 біта) та простий формат команди.

  2. Спеціалізовані команди для операцій з пам’яттю – читання або записи. Операції типу «прочитати-змінити-записати» відсутні. Будь-які операції «змінити» виконуються лише над вмістом регістрів.

  3. Велика кількість регістрів загального призначення (32 і більш у порівнянні з 8–16 регістрами у CISC-архитектурах), що дозволяє більшій кількості даних зберігатися у регістрах на процесорному кристалі більший час і спрощує роботу компілятора щодо розподілу регістрів під змінні.

  4. Відсутність підтримки операцій типу «змінити» над скороченими типами даних – байт, 16-бітове слово. Так, наприклад, система команд DEC Alpha містила лише операції над 64-бітовими словами, і вимагала розробки та подальшого виклику процедур для виконання операцій над байтами, 16- та 32-бітовими словами.

  5. Відсутність мікропрограм всередині самого процесора. Те, що у 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