Reduced Instruction Set Computing
Ця стаття не містить посилань на джерела. Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні (авторитетні) джерела. Матеріал без джерел може бути піддано сумніву та вилучено. (лютий 2020) |
RISC (англ. Reduced Instruction Set Computing — обчислення зі скороченим набором команд) — архітектура процесорів зі скороченим набором команд. Також відома як «архітектура load-store», позаяк система команд такої архітектури не включає арифметико-логічних операцій з операндами у пам'яті. Для будь-якого оброблення даних їх спочатку слід завантажити (англ. Load) в регістр, виконати необхідні операції, а тоді зберегти (англ. Store) назад у пам'ять.
Найвідоміші представники: ARC[en], Alpha, Am29000[en], ARM, AVR, Blackfin[en], i860, i960, M88000[en], MIPS, PA-RISC, Power Architecture[en] (включаючи PowerPC), RISC-V, SuperH, та SPARC.
Основні риси
Основними рисами RISC архітектури є:
- мала кількість команд;
- однакова довжина всіх команд;
- мала кількість різних форматів команд;
- відсутність команд, які працюють з операндами в пам'яті (за виключенням команд завантаження та збереження);
- мала кількість апаратно підтримуваних типів даних;
- велика кількість ідентичних регістрів загального призначення.
Поштовхом для розробки RISC архітектури стало те, що тогочасні (середина 1970-х) компілятори не використовували більшість команд із набору CISC та не могли скористатися перевагами багатьох типів складної адресації. Виконання складних інструкцій CISC вимагало багатьох процесорних тактів, а реалізація різних типів адресування та інструкцій, що реалізовують високорівневі операції, займала більшість площі процесорного кристалу та майже не використовувалась.
Енергоефективність
RISC-процесори вважаються швидшими та більш економічними, ніж CISC.[1]
Історія розвитку та філософія до-RISC-ової архітектури (CISC)
В ранні часи комп'ютерної індустрії програми створювались мовою асемблера. Таке програмування вимагало потужних інструкцій, що реалізують часто вживані високорівневі алгоритми. Тому розробники процесорів намагались вмістити в свій продукт якомога більше інструкцій, що виконують максимальну кількість роботи. Також до інструкцій ставились вимоги по зручності використання та універсальності. В кожній інструкції розробники намагалися реалізувати всі можливі типи адресації, тобто інструкції могли однаково працювати з операндами, які знаходяться як в пам'яті так і в регістрах чи безпосередньо закодованих в інструкції. Реально введення такої універсальності призводило до того, що кожна дія мала в процесорі декілька реалізацій, розрахованих на різні типи адресування. Крім того, в ті часи пам'ять була дуже дорогою, тому інструкції зі змінною довжиною, що одночасно виконують завантаження операндів та обчислення, були вигідні з точки зору зменшення розміру програми.
Також процесори мали дуже малу кількість регістрів. Це було обумовлено двома причинами:
- розміщення на кристалі додаткових регістрів було надто дорогим;
- введення додаткових регістрів вимагало б розширення формату інструкції, щоб вмістити довші специфікатори регістрів.
На противагу RISC, вищезазначену архітектуру називають CISC (англ. Complex Instruction Set Computing).
Філософія RISC-архітектури
Ряд наукових досліджень середини 1970-х років довів, що тогочасні компілятори не використовували переваги складної адресації, а також те, що більшість процесорів мали надлишковий набір інструкцій. Також було доведено, що в багатьох випадках складні інструкції виконувались повільніше, ніж аналогічний по функціональності набір простіших інструкцій. Відомим прикладом цьому була інструкція INDEX
комп'ютера VAX, яка виконувалась повільніше за її реалізацію на базі циклу (але при цьому вона займала менше місця у пам'яті, що було важливо в ті часи). Також, складні інструкції менше підлягали оптимізації під конкретну задачу (наприклад, заміна множення та ділення операціями зсуву).
Передумови створення
Метою створення RISC-архітектури були такі потреби:
- зменшення набору команд для збільшення додаткової площі на кристалі, де можна розмістити кеш або регістри;
- приведення всіх команд до однакового розміру та подібного формату. Це дало б можливість конвеєризації;
- в ідеалі, всі команди мали виконуватись за один такт.
Найуспішніші реалізації
- ARM — процесори даної архітектури найбільше застосовуються у вбудовуваних і мобільних пристроях (приклади пристроїв: смартфони, планшети, автомобільні інформаційно-розважальні системи). Архітектура ARM Cortex дозволяє масштабування від найпростіших 32-розрядних мікроконтролерів (серія M0) до універсальних 64-розрядних процесорів (наприклад, серії A7x). ARM зустрічається в численних мобільних пристроях, таких як:
- Apple iPod, iPhone, MacBook (на базі процесора Apple M1) тощо;
- Palm, PocketPC та смартфони (Intel XScale, Samsung SC32442 — ARM9);
- Nintendo Game Boy Advance (ARM7), DS (ARM7, ARM9);
- Sony Network Walkman (на базі Sony in-house ARM);
- мобільні телефони майже всіх виробників, смартфони, планшети;
- Деякі ноутбуки (Chromebook, окремі моделі серії Yoga компанії Lenovo);
- MIPS, застосовуються у більшості комп'ютерів SGI, PlayStation, PlayStation 2, Nintendo 64, PlayStation Portable.
- IBM та Freescale (раніше Motorola SPS) Power Architecture[en], використовується у всіх суперкомп'ютерах, серверах та робочих станціях IBM середнього рівня, в Apple Macintosh на базі Power PC (в минулому), в Nintendo Gamecube та Wii, Microsoft Xbox 360 та Sony PlayStation 3, та в багатьох вбудованих реалізаціях, таких як принтери та автомобілі.
- RISC-V
- Sun SPARC
- Hewlett-Packard PA-RISC, також відомий як HP/PA (виробництво зупинено).
- DEC Alpha.
- Процесор XAP використовується в багатьох безпровідних (Bluetooth, wifi) контролерах.
- Hitachi SuperH, широко використовувався в Sega Super 32X, Saturn та Dreamcast.
- Atmel AVR використовується в різних пристроях від маніпуляторів Xbox до автомобілів.
Примітки
- ↑ Tanenbaum, Andrew S. (2005). Structured Computer Organization (англ.) (вид. 5th).
Див. також
- п
- о
- р
- Конвеєр команд
- Bubble
- Operand forwarding[en]
- Позачергове виконання
- Спекулятивне виконання
- Модуль передбачення переходів
- Memory dependence prediction[en]
- Конфлікти в конвеєрі
- Процесор цифрових сигналів (DSP)
- GPGPU
- Мікроконтролер
- Фізичний процесор
- Система на кристалі (SoC)
- Секційний процесор
- Barrel processor
- Cellular[en]
- Блок генерації адреси (AGU)
- Арифметико-логічний пристрій (ALU)
- Barrel shifter
- Функціональний блок (EU)
- Математичний співпроцесор (FPU)
- Back-side bus
- (Мультиплексор)
- Регістри
- Модуль керування пам'яттю (MMU)
- Буфер асоціативної трансляції (TLB)
- Кеш
- Регістровий файл
- Мікрокод
- Пристрій керування
- Тактова частота
- APM
- ACPI
- Динамічна зміна частоти[en]
- Динамічна зміна напруги[en]
- Clock gating
|