Чому хтось хоче CISC?


42

У нашій лекції з комп'ютерних систем ми ознайомилися з процесором MIPS. Це було (пере) розвинене протягом терміну і насправді було зрозуміти досить просто. Він використовує RISC- дизайн, тобто його елементарні команди регулярно кодуються, і їх є лише кілька, щоб зробити провід простою.

Зазначалося, що CISC дотримується іншої філософії. Я коротко переглянув набір інструкцій x86 і був вражений. Я не можу уявити, як хто-небудь хотів би побудувати процесор, який використовує такий складний набір команд!

Тому я думаю, що мають бути хороші аргументи, чому великі частини ринку процесорів використовують архітектури CISC. Хто вони?


Відповіді:


47

Існує загальна історична тенденція.

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

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

MIPS - це найвища архітектура RISC, саме тому її викладають так часто.

Сім'я x86 дещо інша. Спочатку це була архітектура CISC, призначена для систем з дуже малою пам'яттю (немає місця для великих інструкцій), і вона зазнала багатьох послідовних версій. Сьогоднішній набір інструкцій x86 не тільки складний тому, що це CISC, але й тому, що це дійсно 8088 з 80386 з Pentium, можливо, з процесором x86_64.

У сучасному світі RISC та CISC вже не є чорно-білою відмінністю, якою вони могли бути колись. Більшість архітектур процесора еволюціонували до різних відтінків сірого.

Що стосується RISC, деякі сучасні варіанти MIPS додали інструкції щодо множення та ділення з нерівномірним кодуванням. Процесори ARM стали більш складними: багато з них мають 16-розрядний набір інструкцій під назвою Thumb на додаток до "оригінальних" 32-бітних інструкцій, не кажучи вже про Jazelle для виконання інструкцій JVM на процесорі. Сучасні процесори ARM також мають інструкції SIMD для мультимедійних програм: деякі складні інструкції все-таки платять.

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

То чому ж найшвидші процесори залишаються CISC зовні? Частина його, що стосується сім'ї x86 (32-бітної та 64-бітної), є історичною сумісністю. Але це ще не все. На початку 2000-х Intel намагалася просунути архітектуру Itanium . Itanium - це надзвичайний випадок складних інструкцій (хоча насправді не CISC: його дизайн отримав назву EPIC ). Це навіть усуває старомодну ідею виконання інструкцій послідовно: всі інструкції виконуються паралельно до наступного бар'єру. Однією з причин, яку Itanium не брав, є те, що ніхто, не в Intel чи деінде, не міг написати гідний компілятор для цього. Зараз хороший старий здебільшого послідовний процесор, як x86_64, це те, що ми розуміємо.


4
Однією з причин є те, що CISC вийшов з обмеженої пам’яті (що робить компактні інструкції обов’язковими), сьогоднішні процесори набагато швидші, ніж пам’ять ( одному завантаженню пам’яті потрібно достатньо часу для виконання сотень інструкцій, а розрив стає все ширшим), так компактні вказівки - це надбавка для ефективного використання кешу.
vonbrand

О, і однією з рушійних сил RISC був аналіз інструкцій, виконаних на машинах CISC дня. Вони виявилися надзвичайно простими інструкціями, тому додаткові зусилля (за схемою і в часі) розшифровки складних інструкцій здебільшого були витрачені даремно.
vonbrand

2
@vonbrand: У процесорах, що включають такі інструкції dec [address], вони, як правило, використовуються досить небагато і пропонують значну перевагу перед ldr r0,[address] / sub r0,#1 / str r0,[address] архітектурами, які можуть ефективно їх реалізувати . Виникнення RISC пов'язане з тим, що, хоча машина, яка не працює на конвеєрі, може реалізовувати decбільш ніж удвічі швидше, ніж load/sub/storeпослідовність, конвеєрна конвеєра може підвищити швидкість останньої послідовності більше, ніж може підвищити швидкість читання-модифікація-запис інструкція.
supercat

@vonbrand має рацію, оскільки оперативна пам'ять не є настільки дорогоцінною, як була, але кеш є. Хаффман, що кодує набір інструкцій (який є таким, яким є CISC в наші дні), як і раніше, є цінним у цьому сенсі.
Псевдонім

Ну, це те, що я ніколи не знав про Itanium! Спасибі. (також бажаю, щоб хтось все-таки зробив MIPS-процесори вищого класу - вони
здаються

15

Набір інструкцій x86 - трохи особливий випадок. Я думаю, що Motorola 68K і VAX VAX - дещо кращі приклади CISC. За часів безлічі мов асемблерного коду люди вважали, що дуже регулярний, дуже інклюзивний ISA є кращим: я вважаю, що вони називали різницю між асемблерним кодом та способом, яким люди вважали " семантичну прогалину ". Теоретично ви хотіли, щоб набір інструкцій відповідав тому, як ви думали.

Інший великий драйвер дизайну для CISC здається "ортогональністю": кожна інструкція працюватиме з кожним режимом адресації (регістр, абсолютна адреса, відносне зміщення тощо тощо). Ви можете бачити, як оманливий чоловік ортогональності відображається в дизайні API в середовищі розподілених обчислень (DCE) та в CORBA. Ця ідея не обмежується дизайном набору інструкцій.


5
Смішно, як ортогональність на практиці означає об'єднання всіх варіантів .
Дейв Кларк

Таку ортогональність, безумовно, можна зайняти занадто далеко, але вона є корисним помічником пам’яті. Мені сподобався Motorola 6502, але він мав усілякі розлючення: "ця інструкція займає X, що подібний лише Y, третій - зовсім не обмежений". Зустріч VAX була визвольною ...
vonbrand

@vonbrand: 6502 - це не Motorola - це була MOS Technologies, яка виробляла її як конкурента Motorola 6800. Іноді я замислювався, чи 6502 був би простішим або складнішим, якби всі не галузеві інструкції, які взяли операнди, що використовували одне і те ж кодування (24 вказівки раз у восьми режимах адресації можна розшифрувати досить легко). Мені здається особливо цікавим, що CMP працює з вісьмома режимами адресації, а DEC - лише з чотирма, але (у версіях 6502 NMOS), якщо один "АБО" разом з цим кодує інструкції, не тільки один отримає "DCP" інструкція ...
supercat

... який поводиться як DEC, але потім порівнює результат зменшення зі значенням у акумуляторі та встановлює прапори відповідним чином, але DCP правильно обробляє адреси адреси, недоступні для DEC. Дивно, що апаратне забезпечення може правильно керувати (ZP), Y-адресація з інструкцією читання-модифікації запису, але декодер інструкцій не дозволить цьому режиму працювати в жодних документально підтверджених інструкціях зчитування-зміни-запису.
supercat

1
З того, що я прочитав, "R" в RISC не означає, що процесор має скорочений набір інструкцій, а скоріше, що він має набір скорочених інструкцій; найбільшим аспектом цього є вимога, щоб завантаження і зберігання пам'яті не поєднувалося з іншими операціями.
supercat

7

Однією з причин CISC було щільне кодування інструкцій (пам’ять дорога). Вся ідея RISC полягала в тому, щоб прискорити процесор, постійно отримуючи однакові інструкції щодо розміру (ніякого складного, повільного кроку "з'ясувати розмір інструкцій"), нехай вони роблять прості речі (тому швидко зрозуміти, що робити) . Пам'ять була дешевою. Це звільнена схема мікросхеми для центрального процесора для інших матеріалів (більше реєстрів, більше процесорних блоків, тому декілька інструкцій можна було б виконати паралельно, якби вони були незалежними). Оскільки процесор був набагато повільніше, ніж оперативна пам'ять, це окупилося. Але процесори стали швидшими (і робили більше паралельно, і ...), а оперативна пам’ять не стала швидшою (принаймні, не з тією ж швидкістю, ніж споживання даних процесора через збільшення паралелізму). Зустрічайте кеш-пам'ять, швидка як процесор, але невелика. Тож тепер пам’ять знову переважає, не з міркувань витрат, а швидкості. Час відродження CISC. Тим часом процесори стали складнішими, до того, що сьогоднішній мікропроцесор робить багато з того, що робив компілятор RISC: Розбийте операції на елементарні частини, переупорядкуйте внутрішні інструкції RISCy, щоб їх можна було робити одночасно, коли це можливо. RISC був згаданий як "Погасити важливі речі компілятору" з причини ...


1
Ємність пам'яті як і раніше важлива в деяких вбудованих системах, зокрема мікроконтролерах, де вся пам'ять / накопичувач знаходиться на мікросхемі процесора. Це, мабуть, був вагомим фактором для впровадження Ренезасом нового CISC ISA - RX--, тобто не просто щільність коду для продуктивності, але (головним чином?) Для зменшеного зберігання.
Пол А. Клейтон

Як я розумію, "R" RISC посилається не на набір скорочуваних інструкцій, а на скорочення самих інструкцій. Найбільш помітно, що в процесорі CISC, як 8086, можна додавати значення безпосередньо в пам'ять, але в RISC завантаження, додавання та зберігання потрібно виконувати як окремі етапи. У багатьох випадках машини CISC мають набори інструкцій зі змінною довжиною та більш щільні кодування інструкцій, ніж машини RISC, але новіші процесори ARM використовують інструкції зі змінною довжиною та все ж розділяють навантаження та запаси.
supercat

@ PaulA.Clayton Це правильно, але я буду бути педантичним і зазначу, що ви можете інтерфейсувати зовнішню оперативну пам’ять (SRAM або DDR через контролер) і розширити свій об'єм пам'яті ціною додаткової складності та зниженої практичності.
Wyatt8740

3

Справжньою перевагою CISC є зменшення тиску пам'яті та кешу, і лише це робить його кращим для вимогливих високоефективних додатків, оскільки головним вузьким місцем у таких системах є пропускна здатність пам'яті. Враховуючи кеш-пам'ять однакового розміру, процесори CISC можуть описати більше інформації, ніж RISC. Крім того, оскільки інструкції CISC включають декілька мікрооперацій, можливо можливі вдосконалення архітектури, які можуть забезпечити найшвидший шлях виконання цієї інструкції, який можна було б створити. Коротше кажучи, процесори CISC є більш ефективними у використанні пропускної здатності пам’яті, що часто перетворюється на підвищення продуктивності для застосувань, які потребують пам'яті.

Наприклад, щоб виконати R1 = R2 + R3 + R4 + R5 + R6та натиснути результат на стек, скажімо, код RISC виписується як,

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

і як такий вимагає 16-байтового простору.

Прийшовши до CISC, через можливість різних стилів кодування однакова інформація може бути представлена ​​наступним чином ...

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

що займає лише 12 байт пам'яті. Таким чином, покращується використання пам'яті, що дозволяє процесору бачити більше інструкцій і, таким чином, скорочувати цикли простою.


1
Це дає корисну перспективу, але також може бути дещо завищеною у вживанні прикметників. "величезний приріст продуктивності" - ви б хотіли це кількісно оцінити? Чи можете ви виправдати "величезну" частину? Аналогічно для "набагато більше інформації".
DW

Я вважаю, що Лінус Торвальдс сказав подібне твердження. Прикметники видалено все одно.
Revanth Kamaraj

Це просто неправда. CISC не зменшує пропускну здатність пам'яті. Можливо, зареєструйте тиск.
Джефф

Джефф, зверніться до архітектури соцмережі Стіва Фурбера.
Revanth Kamaraj

Page 27 Друге видання ARM System On Chip architecture.
Revanth Kamaraj

2

Важливим аспектом, який ніхто не придумав, є те, що майже всі процесори CISC є архітектурою з мікрокодуваннями. Мікросекціонер і контрольний магазин споживають набагато менше нерухомості, ніж жорсткий провідний контролер, і набір інструкцій можна змінювати без зміни обладнання.

Мікропроцесори були новинними пристроями, коли я вийшов на поле. Дуже поширеною практикою ще в сімдесятих і на початку вісімдесятих було складання процесора за допомогою АЛУ бітових фрагментів, блоку управління на базі мікросеквенції та сховища управління, в яке завантажувались або видували набір інструкцій з мікрокодуванням. Ці комп'ютери базувалися на логіці транзисторів-транзисторів серії 7400 (TTL). 4-розрядний ALU 78181 був використаний для побудови багатьох процесорів, включаючи комп'ютери DEC PDP-11 та ранні VAX 11, Data General Nova, Xerox Alto і настільний комп'ютер Wang.


"Важливим аспектом, який ніхто не придумав, є те, що майже всі процесори CISC - це мікрокодовані архітектури". Так і ні. Для планування інструкцій сучасні процесори CISC зазвичай вдаються лише до мікрокодованого управління для жорстких застарілих інструкцій CISC (наприклад, x87 трансцендентальних інструкцій). З іншого боку, навіть мікросхеми RISC періодично використовують управління мікрокодом як альтернативу державним машинам для певної підсистеми (наприклад, для управління певним блоком). Дійсно, рядок між мікрокодом та таблицею стану може бути нечітким.
Псевдонім

2

Вам буде важко знайти будь-який настільний комп'ютер, який не використовує процесор, сумісний з x86. Цей набір інструкцій побив MIPS, він побив Sparc, він побив Альфу, він побив "Титанік" (я, можливо, написав це ім'я неправильно). MIPS з іншого боку, сьогодні ледве існує. Тож як би ви не думали сьогодні, дуже розумні люди думали, що набір інструкцій x86 - це дійсно гарна ідея, і вони заробили за це багато грошей.

Комп'ютери почалися як RISC, оскільки складний набір інструкцій був трохи вищим від можливостей впроваджувачів. Якщо ви хочете побачити набір інструкцій RISC, подивіться набір інструкцій CDC 6400-6600 та CDC Cyber ​​170-175. Це належний RISC. Близько 10 років тому я запитав у деяких дизайнерів мікросхем, скільки місця знадобиться (в кутку розумного вдосконаленого чіпа GPU). Вони розповіли мені про 1 мм2 - включаючи оперативну пам’ять машини, яка зайняла б 99% цього місця.

Коли люди могли будувати машини CISC, вони насправді мали перевагу. Пам'ятайте, що x86 був випущений задовго до MIPS, 1978 проти 1985. У той час вам потрібні були процесорні цикли для читання інструкцій, їх декодування, виконання. MIPS у 1978 році займав би чотири цикли за інструкцію та за операцію. Якщо ви скористаєтеся інструкцією x86 на зразок "додати реєстр до пам'яті", це може зайняти 7 циклів для інструкції, але виконуючи 3 операції. Це було головною перевагою. І чим більше різних інструкцій у вас є, і чим потужніша кожна інструкція, тим більша перевага.

І коли було розроблено 64-бітний набір інструкцій x86 зі своїми кошмарними кодами префіксу, складність набору інструкцій вже не мала значення. Сьогодні CISC просто перекладається на RISC, а весь перекладацький бізнес - це, можливо, один відсоток чіпа.


1

Це питання має багато спільного з останніми тенденціями в обчислювальних технологіях, які сприяють масштабному переходу на мобільні та планшетні обчислення, тим самим надаючи перевагу процесору RISC, і заставив Intel (можливо, найбільший у світі постачальник CISC) у невигідному стані в так званому "перегині" точка " точно так, як вигляд, на який звернув увагу і попереджав Гроув . Коротка історія полягає в тому, що CISC, здається, починає танути під масивним зміщенням парадигми / зміною гри на натиск мобільних обчислень через його, очевидно, власне високе споживання енергії.

Імовірно, CISC завжди буде на робочому столі, але мобільний телефон вважається новим майбутнім обчисленням. Багато країн, що розвиваються (з великим потенційним населенням, що користуються комп'ютером) фактично значною мірою пропустять фазу робочого столу. Дивіться, наприклад, Rise and Fall настільних обчислень

Прекрасним прикладом цього питання є прочитання про Майка Белла, який працює для Intel на новій посаді, намагаючись краще позиціонувати Intel на мобільному ринку через процесор Atom через проект / ініціативу, подібну до "скунктури". підтримка. Ринок мобільних телефонів дуже щільно поєднаний з архітектурою RISC, і, головним чином, процесорами ARM, в основному, завдяки їх високій енергоефективності (енергоспоживання), новим ключовим критеріям обчислень, про які не йдеться в запитанні та інших відповідях. Ось дві останні статті в цих рядках, які розкривають багато внутрішнього корпоративного мислення (і випливає з цього суперечки!) На цю тему:


доповнення. мав на увазі навести статтю про точки перегину, засновані на бізнесі , які дуже пов'язані з математичною концепцією. див., наприклад, Енді Гроув та таємниці точки перегину
vzn

0

Фактор, який не згадується в інших відповідях, є економічним. Йдеться також про Intel. Архітектура CISC значною мірою представлена ​​сім'ями x86 та x64. Всі вони походять від скромного 8088, який використовується в оригінальному комп'ютері IBM. Раннє домінування на цій серії комп'ютерів означало, що Intel забезпечила надійний потік доходів від НДДКР. У поєднанні з тим, що Intel змогла стримувати конкуренцію шляхом відновлення / скасування договорів із другим джерелом, це означало, що ціни на процесори можуть піднятися до екстремальних рівнів, що забезпечить дуже багату норму валового прибутку.

Таким чином, хоча інші виробники процесорів намагалися йти в ногу, Intel змогла вкласти мільярди доларів на розробку нових, швидших продуктів. Конкурс RISC не міг витратити майже стільки грошей. Багато процесорів RISC вийшли з ринку. Деякі були:

DEC Alpha, Fairchild Clipper, AMD 29000, SPARC, MIPS, POWER (для використання на ПК), Hitachi SuperH ...

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

Чи може ця динаміка колись змінитися? Це вже є. Жодна економічна перевага не абсолютна.

Ахілесова п'ята x86 - це несамовитий апетит до влади. Це дозволило меншому, спритнішому конкурентові (ARM) процвітати на ринках (наприклад, телефони / планшети / тощо), де енергетична ощадливість мала значення.

Чудове відео про це від члена команди ARM - це Процесор ARM - Посів насіння успіху - Computerphile приблизно о 8:30

Друга проблема для x86 - це успіх стратегії Intel. Їм вдалося усунути майже всю конкуренцію. Вони гальмували. Протягом багатьох років нові процесори Intel пропонують лише дуже скромні вдосконалення. Що ще гірше, надбагата маржа - це жорстка дієта, яку слід відмовити будь-якій корпорації.

Сьогодні система ARM на базі ARM та конкуруючі чіпи x64 від AMD знову роблять ринок процесора цікавим місцем. (ІМХО)


0

Є багато причин, з яких можна було б запровадити впровадження CISC. Найвизначніша причина - сумісність із двійковою формою з існуючим набором інструкцій CISC. Хоча технологія бінарного перекладу програмного забезпечення вдосконалюється, сумісність на основі апаратних засобів має деякі технічні переваги (а також недолік меншого кешування перекладу) та меншу технічну перевагу, здається, більш надійною.

Щільність коду є чи не другою найбільш важливою причиною вибору CISC. Renesas RX був розроблений як CISC спеціально для щільності коду, оскільки він орієнтований на мікроконтролери, де розмір кодової пам'яті є значним фактором витрат. Інструкції зі змінною довжиною, складні інструкції (в основному більше режимів адресації), неявні операнди та нижчий регістр рахують всю щільність коду вигоди.

Історичною (і на мій погляд, неправильною) причиною вибору CISC було закриття смислового розриву між програмістами, що використовують мову вищого рівня, та процесором. Оскільки складні інструкції зазвичай можуть бути замінені послідовністю більш простих інструкцій, складність компілятора мови вищого рівня для RISC не повинна бути набагато складнішою, ніж для CISC, що відповідає мові. RISC уникає "семантичного зіткнення" (де інструкція процесора робить більш-менш роботу, ніж відповідна мова мови) та полегшує оптимізацію сили та планування. (Див «Які компроміси в спробі розробки компілятора , пов'язану з CISC проти RISC?» Для отримання більш докладної інформації.)

Можуть бути значні постійні витрати, пов'язані з виконанням інструкції. Це заохочує використання відносно складних інструкцій, щоб розповсюдити цей наклад над більш актуальною роботою; зменшення кількості динамічних інструкцій може підвищити продуктивність. Коли вартість логіки та оперативної пам’яті була значно більшою, ніж вартість ПЗУ, стимул до складних інструкцій був значним, оскільки інструкція розшифровувалася шляхом пошуку мікрокоду.

Причиною використання CISC, що, можливо, суперечить історичним свідченням, є те, що мікрокод можна оптимізувати для кожної мікроархітектури, тоді як стандартні бібліотеки можуть повільно використовувати функції нової реалізації. Рівень оптимізації програмних реалізацій мемокопії порівняно з мікрокодом для REP MOVSB ​​означає, що бібліотекам можна приділяти більше уваги, ніж мікрокоду. Частина цього може надходити від постачальника процесорів, орієнтованого на більш широку базу користувачів, тому обґрунтування зусиль може бути складніше порівняно з відкритим кодом або внутрішнім програмним забезпеченням, коли локалізовані інтереси розробників або користувачів можуть упереджувати зусилля щодо впровадження.

Можливість доставки оптимізованої стандартної бібліотеки з процесором має значні привабливості. Зберігання та виконання стандартної бібліотеки платформи може бути значно оптимізовано програмно-апаратним кодовим дизайном. Відмінність між складною інструкцією та викликом шару абстракції платформи може бути тонким (або неіснуючим). Дизайн RISC може використовувати ті самі методи реалізації для обробки PAL-дзвінків, що і CISC, для складних інструкцій, включаючи використання операцій, не передбачених загальним набором інструкцій із спеціалізованим обладнанням, використання розумного кешування та декодування, а також визначення операндів реєстру (хоча CISC би часто використовують спеціалізовані регістри, подібні до функцій ABI). Ментальна модель, пов'язана з CISC, може заохочувати такі оптимізації. Крім того, користувачі можуть бути менш ображені примусовим включенням "

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

Додаткова контекстна інформація може полегшити оптимізацію обладнання. Наприклад, при збільшенні значення в пам'яті апаратне забезпечення може визнати, що адреса пам'яті використовується двічі (для завантаження та зберігання), надаючи можливість для кешування способу запам'ятовування та кешування перекладу. Складні інструкції можуть надавати таку інформацію прямо. У складній інструкції проміжні значення мають явний термін експлуатації (термін інструкції); з традиційними значеннями регістра RISC повинні бути явно переписані, щоб вказати кінець терміну дії. (Примітка. RISC може вказати реєстр, який завжди нульовий після кожного використання, надаючи засоби для визначення тимчасового значення для одноразового використання. Такі вказівки будуть дещо складнішими.)

Якщо деталі реалізації не ховаються за шаром абстракції, використовувати різні мікроархітектури стає складніше для оптимізації для різних компромісів. Розкриття мікроархітектурних деталей як архітектурних гарантій фіксує мікроархітектуру в гарантії сумісності. Хоча програмне забезпечення PAL можна оптимізувати так само, як і складні інструкції, таке вимагає апаратно-програмного кодування. Організаційне відокремлення та різноманітність ускладнюють кодирування.

Складні інструкції можуть забезпечити охоронений доступ до пільгового стану. Наприклад, складні інструкції часто є атомними щодо переривань. Хоча набір інструкцій RISC може забезпечити механізм рівня користувача, щоб тимчасово зупинити переривання, можливо, навіть щось на зразок зв'язаного навантаження, щоб програмне забезпечення явно повторювало операцію при перериванні, якщо таке не є типовим для RISC.

Аналогічно, складна інструкція може забезпечити контрольований доступ та / або використання привілейованої інформації. Оскільки виконана операція має керовану семантику, фактичного порушення привілеїв можна уникнути. Альтернативи, орієнтовані на RISC, включають код PAL (який, як правило, має значні накладні витрати) та маскований доступ до регістрів конфігурації (або тіньових копій регістрів), які мають певний привілейований стан. Надання загального рішення (RISC) складніше, ніж надання рішення для одного або кількох спеціальних випадків (CISC), але є більш потужним та менш вразливим до накопичення спеціальних справ. Якщо вірити, що важливих особливих випадків мало, CISC може бути більш привабливим.

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


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

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

Крім того, після створення інфраструктури для підтримки складних інструкцій бар'єри зменшуються для додаткових складних інструкцій. Тобто велика частина витрат на складні інструкції не повторюється. Сильно МСС RISC зазнають додаткової перешкоди для впровадження функцій CISCy.

Частоту розширення x86 можна також частково віднести до його популярності для обчислень загального призначення та торгової моделі процесорів (вони також збільшують значення бінарної сумісності). RISC ISA часто пов'язуються з постачальниками sysem, що заохочує більш вузьку увагу до застосувань, а відсутність конкуренції за впровадження конкретних ISA RISC дещо перешкоджає використанню розширень набору інструкцій для маркетингу. Популярність також робить витрати на розробку нових розширень менш істотними (непостійні витрати є менш важливими при більшому обсязі).

Філософія сумісності x86, ймовірно, також спрямована на розширення існуючих механізмів, а не на забезпечення більш чистого перерви, що означає, що на нові функції більше впливають існуючі функції. Більш висока частота розширення також заохочує більш поступові зміни, що заохочує повторне використання механізмів, прагнучи зменшити ортогональність.

Порівнюючи академічну презентацію класичного MIPS (який є підмножиною сучасних версій MIPS і виключає різні необов'язкові розширення ISA) з сучасним x86 (який відстежує бінарну сумісність назад до 16-бітового 8086 і квазі-сумісності на рівні складання ще далі) з усім своїм історичним багажем не є найкращим випадком для CISC, ані реалістичним для RISC.


-1

Перш ніж були зменшені конфігурації наборів інструкцій, існували конфігурації набору інструкцій. Вони мають свої додатки. особливо в дуже великих блоках пам’яті, що передаються з чіпсетами з високою ємністю, для передачі цілої сторінки відео потрібно лише 4-16 байт, а не довгий цикл. це змінюється, і RISC стає статус-кво, оскільки набори чіпів стають все більш досконалими, як і неймовірні GPU, знайдені у відеокартах високого класу.


-2

CISC CPU має більше переваг, ніж RISC. Тому що CISC використовує менше апаратного реєстру та воріт XNOR / XOR, ніж RISC багато разів !!!! Уявіть, що байти інструкцій в CISC будуть виконані послідовністю, є лише один логічний затвор і використовується регістр. Якщо 1-мільйонний транзистор може створити близько 300 мільйонів логічних воріт, то ви можете обробити 300 мільйонів операторів або процесів (ЯКЩО, рівних, математичних, змінних, адресаційних ... тощо), і більше програм може працювати в CISC. Але в RISC потрібні десятки разів логічні ворота для запуску програми в конвеєрному дизайні. Тож 300 мільйонів х 50 разів (50 інструкцій) + 15000000000 бітових лічильників !!! у так званому RISC. CISC використовує більше обладнання для зменшення програмного альготриму, який уповільнює процесор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.