RISC

RISC мікропроцесор компанії Sun UltraSPARC

RISC ( англ. restricted (reduced) instruction set computer [1] [2] - комп'ютер зі скороченим набором команд) - архітектура процесора, в якій швидкодія збільшується за рахунок спрощення інструкцій, щоб їх декодування було більш простим, а час виконання - коротше. Перші RISC-процесори навіть не мали інструкцій множення і ділення. Це також полегшує підвищення тактової частоти і робить більш ефективною суперскалярної (розпаралелювання інструкцій між кількома виконавчими блоками).

Набори інструкцій у більш ранніх архітектурах для полегшення ручного написання програм на мовах асемблерів або прямо в машинних кодах, а також для спрощення реалізації компіляторів, виконували якнайбільше роботи. Нерідко в набори включалися інструкції для прямої підтримки конструкцій мов високого рівня. Інша особливість цих наборів - більшість інструкцій, як правило, допускали всі можливі методи адресації (т. зв. "ортогональность системи команд (англ.) ") - наприклад, і операнди, і результат в арифметичних операціях доступні не тільки в регістрах, але й через безпосередню адресацію, і прямо в пам'яті. Пізніше такі архітектури були названі CISC ( англ. Complex instruction set computer ).

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


1. Філософія RISC

У середині 1970-х різні дослідники (зокрема, з IBM) показали, що більшість комбінацій інструкцій та ортогональних методів адресації не використовувалися в більшості програм, породжуваних компіляторами того часу. Також було виявлено, що в деяких архітектурах з мікрокодной реалізацією складні операції часто були повільніше послідовності більш простих операцій, що виконують ті ж дії. Це було викликано, зокрема, тим, що багато архітектури розроблялися в поспіху і добре оптимізувався мікрокод тільки тих інструкцій, які використовувалися частіше. [3]

Оскільки багато реальні програми витрачають більшість свого часу на виконання простих операцій, багато дослідників вирішили сфокусуватися на тому, щоб зробити ці операції максимально швидкими. Тактова частота процесора обмежена часом, який процесор витрачає на виконання найбільш повільних кроків в процесі обробки будь інструкції; зменшення тривалості таких кроків дає загальне підвищення частоти, а також часто прискорює виконання та інших інструкцій за рахунок більш ефективної конвейеризации. [4] Фокусування на простих інструкціях і веде до архітектури RISC, мета якої - зробити інструкції настільки простими, щоб вони легко конвейерізіровалісь і витрачали не більше одного такту на кожному кроці конвеєра на високих частотах.

Пізніше було відзначено, що найбільш значуща характеристика RISC в поділі інструкцій для обробки даних і звертання до пам'яті - звернення до пам'яті йде тільки через інструкції load та store, а всі інші інструкції обмежені внутрішніми регістрами. Це спростило архітектуру процесорів: дозволило інструкціям мати фіксовану довжину, спростило конвеєри і ізолювало логіку, що має справу із затримками при доступі до пам'яті, тільки в двох інструкціях. В результаті RISC-архітектури стали називати також архітектурами load / store. [5]


1.1. Кількість інструкцій

Нерідко слова "скорочений набір команд "розуміються як мінімізація кількості інструкцій в системі команд. Насправді, інструкцій у багатьох RISC-процесорів більше, ніж у CISC -процесорів. [6] [7] Деякі RISC-процесори зразок транспьютеров фірми INMOS (англ.) мають набори команд не менше, ніж, наприклад, у CISC-процесорів IBM System/370; ​​і навпаки - CISC-процесор DEC PDP-8 має тільки 8 основних і кілька розширених інструкцій.

Насправді, термін "скорочений" у назві описує той факт, що скорочений обсяг (і час) роботи, що виконується кожною окремою інструкцією - як максимум один цикл доступу до пам'яті, - тоді як складні інструкції CISC-процесорів можуть вимагати сотень циклів доступу до пам'яті для свого виконання. [8]

Деякі архітектури, спеціально розроблені для мінімізації кількості інструкцій, сильно відрізняються від класичних RISC-архітектур і отримали інші назви: Minimal instruction set computer ( MISC), Zero instruction set computer ( ZISC), Ultimate RISC (також званий OISC), Transport triggered architecture (TTA) і т. п.


2. Характерні особливості RISC-процесорів

  • Фіксована довжина машинних інструкцій (наприклад, 32 біта) і простий формат команди.
  • Спеціалізовані команди для операцій з пам'яттю - читання чи запису. Операції виду "прочитати-змінити-записати" відсутні. Будь-які операції "змінити" виконуються лише над вмістом регістрів (т. зв. Архітектура load-and-store).
  • Велика кількість регістрів загального призначення (32 і більше).
  • Відсутність підтримки операцій виду "змінити" над укороченими типами даних - байт, 16-бітне слово. Так, наприклад, система команд DEC Alpha містила тільки операції над 64-бітними словами, і вимагала розробки та подальшого виклику процедур для виконання операцій над байтами, 16 - і 32-бітними словами.
  • Відсутність мікропрограм всередині самого процесора. Те, що в CISC-процесорі виповнюється мікропрограмами, в RISC-процесорі виконується як звичайний (хоча і поміщений в спеціальне сховище) машинний код, не відрізняється принципово від коду ядра ОС і додатків. Так, наприклад, обробка відмов сторінок в DEC Alpha і інтерпретація таблиць сторінок містилася в так званому PALcode (Privileged Architecture Library), вміщеному в ПЗУ. Заміною PALCode можна було перетворити процесор Alpha з 64-бітного в 32-бітний, а також змінити порядок байтів у слові і формат входів таблиць сторінок віртуальної пам'яті.

3. Інші архітектури

За роки після появи архітектури RISC були реалізовані й інші альтернативи - наприклад, VLIW, MISC, OISC, масово-паралельна обробка, систолічна матриця ( англ. Systolic array ), Переконфігуріруемие обчислення ( англ. Reconfigurable computing ), Потокова архітектура ( англ. Dataflow architecture ).

  • Суперскалярні архітектури (спочатку - великі ЕОМ кінця 1960-х років, в мікропроцесорах - Sun SPARC, починаючи з Pentium використані в сімействі x86). Розпаралелювання виконання команд між кількома пристроями виконання, причому рішення про паралельне виконання двох або більше команд приймається апаратурою процесора на етапі виконання. Ефективне використання такої архітектури вимагає спеціальної оптимізації машинного коду в компіляторі для генерації пар незалежних команд (коли результат однієї команди не є аргументом іншої).
  • Архітектури VLIW (very long instruction word - дуже довге слово команди). Відрізняються від суперскалярної архітектури тим, що рішення про розпаралелювання приймається не апаратурою на етапі виконання, а компілятором на етапі генерації коду. Команди дуже довгі і містять явні інструкції по распараллеливанию декількох субкоманд на кілька пристроїв виконання. Елементи архітектури містилися в серії PA-RISC. VLIW-процесором в його класичному вигляді є Itanium. Розробка ефективного компілятора для VLIW є складним завданням. Перевага VLIW перед суперскалярної архітектурою полягає в тому, що компілятор може бути більш розвиненим, ніж пристрої управління процесора, і він здатний зберігати більше контекстної інформації для прийняття більш правильних рішень по оптимізації.

4. Інші архітектурні рішення, типові для RISC

  • Спекулятивне виконання. При зустрічі з командою умовного переходу процесор виконує (або, принаймні, читає в кеш інструкцій) відразу обидві гілки до тих пір, поки не закінчиться обчислення керуючого вираження переходу. Дозволяє відмовитися від простоїв конвеєра при умовних переходах.
  • Перейменування регістрів. Кожен регістр процесора насправді являє собою кілька паралельних регістрів, що зберігають кілька версій значення. Використовується для реалізації спекулятивного виконання.

5. Початок розвитку RISC-архітектури

Перша система, яка може бути названа RISC-системою, - суперкомп'ютер CDC 6600, який був створений в 1964 році, за десять років до появи відповідного терміна. CDC 6600 мав RISC-архітектуру всього з двома режимами адресації ("регістр + регістр" та "регістр + безпосереднє значення") і 74 кодами команд (тоді як 8086 мав 400 кодів команд). У CDC 6600 було 11 конвеєрних пристроїв арифметичної і логічної обробки, а також п'ять пристроїв завантаження і два пристрої зберігання. Пам'ять була багатоблочних, тому всі пристрої завантаження-зберігання могли працювати одночасно. Базова тактова частота / частота видачі команд була в 10 разів вище, ніж час доступу до пам'яті. Джим Торнтон і Сеймур Крей, розробники CDC 6600, створили для нього потужний процесор, що дозволяв швидко обробляти великі обсяги цифрових даних. Головний процесор підтримувався десятьма простими периферійними процесорами, які виконували операції вводу-виводу і інші функції ОС. [9] Пізніше з'явився жарт, що термін RISC насправді розшифровується як "Really invented by Seymour Cray" ("насправді придуманий Сеймуром Креем") .

Ще одна рання RISC-машина - мінікомп'ютер Data General Nova, розроблений в 1968 році.

Перша спроба створити RISC-процесор на чіпі була зроблена в IBM в 1975 році. Ця робота привела до створення сімейства процесорів IBM 801, які широко використовувалися в різних пристроях IBM. 801-ї зрештою був випущений у формі чіпа під ім'ям ROMP в 1981 році. ROMP розшифровується як Research OPD (Office Product Division) Micro Processor, тобто "дослідницький мікропроцесор", розроблений в департаменті офісних розробок. Як випливає з назви, процесор був розроблений для "міні"-завдань, і коли в 1986 році IBM випустила на його базі комп'ютер IBM RT-PC, він працював не дуже добре. Однак за випуском 801-го процесора послідувало кілька дослідницьких проектів, в результаті одного з яких з'явилася система POWER.

Однак найбільш відомі RISC-системи були розроблені в рамках університетських дослідницьких програм, що фінансувалися програмою DARPA VLSI. [ уточнити ]

Проект RISC в Університеті Берклі був початий в 1980 році під керівництвом Девіда Паттерсона і Карло Секвіна. Дослідження базувалися на використанні конвеєрної обробки і агресивного використання техніки реєстрового вікна. У звичайному процесорі є невелика кількість регістрів і програма може використовувати будь-який регістр в будь-який час. У процесорі, що використовує технології реєстрового вікна, дуже велика кількість регістрів (наприклад, 128), але програми можуть використовувати обмежену кількість (наприклад, тільки 8 в кожен момент часу).

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

Проект RISC справив на світло процесор RISC-I в 1982 році. У ньому було 44 420 транзисторів (для порівняння: у CISC-процесори того часу їх було близько 100 тис.). RISC-I мав усього 32 інструкції, але перевершував за швидкістю роботи будь одночіповий процесор того часу. Через рік, в 1983 році, був випущений RISC-II, який складався з 40 760 транзисторів, використовував 39 інструкцій і працював в три рази швидше RISC-I.

Практично в той же час, в 1981 році, Джон Хеннессі почав аналогічний проект, названий " MIPS -архітектура "в Стенфордському університеті. Творець MIPS практично повністю сфокусувався на конвеєрній обробці, спробувавши "вичавити все" з цією технологією. Конвеєрна обробка використовувалася і в інших продуктах, деякі ідеї, реалізовані в MIPS, дозволили розробленому чіпу працювати значно швидше аналогів. Найбільш важливим було вимога виконання будь-якої з інструкцій процесора за один такт. Ця вимога дозволило конвеєру працювати на набагато більших швидкостях передачі даних і призвело до значного прискорення роботи процесора. З іншого боку, виконання цієї вимоги мало негативний побічний ефект у вигляді видалення з набору інструкцій таких корисних операцій, як множення або ділення.

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


6. Останні роки

Як виявилося на початку 1990-х років, RISC-архітектури дозволяють отримати більшу продуктивність, ніж CISC, за рахунок використання суперскалярної і VLIW-підходу, а також за рахунок можливості серйозного підвищення тактової частоти і спрощення кристала з вивільненням площі під кеш, який досягає величезних ємностей. Також, RISC-архітектури дозволили сильно знизити енергоспоживання процесора за рахунок зменшення числа транзисторів.

Перший час RISC-архітектури з працею приймалися ринком через відсутність програмного забезпечення для них. Ця проблема була вирішена переносом UNIX-подібних операційних систем ( SunOS) на RISC-архітектури.

В даний час багато архітектури процесорів є RISC-подібними, наприклад, ARM, DEC Alpha, SPARC, AVR, MIPS, POWER і PowerPC. Найбільш широко використовувані в настільних комп'ютерах процесори архітектури x86 раніше були CISC-процесорами, однак нові процесори, починаючи з Intel 486DX, є CISC-процесорами з RISC-ядром [Джерело не вказано 765 днів] . Вони безпосередньо перед виконанням перетворять CISC-інструкції x86-процесорів у більш простий набір внутрішніх інструкцій RISC.

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


Примітки

  1. Тлумачний словник по обчислювальним системам = Dictionary of Computing / Под ред. В. Іллінгуорта та ін: Пер. з англ. А. К. Белоцкого та ін; Під ред. Є. К. Масловського. - М .: Машинобудування, 1990. - 560 с. - 70 000 (дод,) прим. - ISBN 5-217-00617-X (СРСР), ISBN 0-19-853913-4 (Великобританія)
  2. Reduced instruction set computing - неправильно.
  3. Прикладом є інструкція INDEX в архітектурі VAX, яка повільніше еквівалентної реалізації, використовує більш прості операції. Див: DA Patterson, DR Ditzel. The case for the reduced instruction set computing / / SIGARCH Comput. Archit. News. - Жовтень 1980. - В. 8, 6. - P. 25-33. - DOI : 10.1145/641914.641917 - dx.doi.org/10.1145/641914.641917
  4. Andrew Schulman. Microprocessors From the Programmer's Perspective - www.ddj.com/architect/184408418 / / Dr.Dobb's Journal. - 1 вересня 1990.
  5. Kevin Dowd. High Performance Computing. - O'Reilly & Associates, 1993.
  6. Jon "Hannibal" Stokes. RISC and CISC, Side by Side? - arstechnica.com/cpu/4q99/risc-cisc/rvc-5.html # Branch. RISC vs. CISC: the Post-RISC Era. Ars Technica (серпень 1999).
  7. Lloyd Borrett. RISC versus CISC - www.borrett.id.au/computing/art-1991-06-02.htm. Australian Personal Computer (червень 1991). Читальний - www.webcitation.org/61AAxuiyc з першоджерела 24 серпня 2011.
  8. Sivarama P. Dandamudi. Chapter 3: RISC Principles / / Guide to RISC Processors for Programmers and Engineers - www.springerlink.com/content/u5t457g61q637v66/. - Springer New York, 2005. - P. 39-44. - ISBN 978-0-387-21017-9 (Print) ISBN 978-0-387-27446-1 (Online) DOI : 10.1007/0-387-27446-4_3 - dx.doi.org/10.1007/0-387-27446-4_3 - "the main goal was not to reduce the number of instructions, but the complexity"
  9. Grishman, Ralph. Assembly Language Programming for the Control Data 6000 Series. Algorithmics Press. 1974. P. 12