Чим відрізняється CISC від RISC?


Відповідь 1:

RISC, як правило, "завантаження" до / з регістрів. Як правило, використовуються три регістри, такі як ADD R1 = R2 + R3, завантаження та зберігання можуть або не можуть бути винятком лише для двох регістрів, що використовуються в інструкції.

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

CISC, як правило, є двооперандним, наприклад, ADD має той самий реєстр (або адресу пам'яті), який використовується для призначення, але також той самий, що використовується для одного з джерел.

Раніше це було великою справою, і RISC провідний кабель та CISC використовували мікрокод.

Тепер мікроархітектура для CISC, принаймні x86 (якщо не всі використовувані CISC, що означає, що IBM mainframes є єдиним іншим збереженим CISC; мікроконтролери можуть бути винятком) розбиває інструкції на мікрооперації (мікро / RISC-подібні операції), які можуть планувати вихід із -порядок на відміну від оригінального мікрокоду.

RISC може навіть зробити це, наприклад, новіші ARM (не спочатку), тому відмінності менше, ніж раніше.

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


Відповідь 2:

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

RISC оптимізований для процесорів, у яких * do * є кеш інструкцій, і це змінює вузьке місце: кеші можуть легко давати вам 64 та 128 біт даних за кожен цикл - до тих пір, поки він вирівняний. Раптом ви можете запустити 1 або навіть 2 інструкції за цикл до тих пір, поки немає залежності, тому чисті інструкції, які викликають лише зміну одного стану, стають набагато швидшими.


Відповідь 3:

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

RISC оптимізований для процесорів, у яких * do * є кеш інструкцій, і це змінює вузьке місце: кеші можуть легко давати вам 64 та 128 біт даних за кожен цикл - до тих пір, поки він вирівняний. Раптом ви можете запустити 1 або навіть 2 інструкції за цикл до тих пір, поки немає залежності, тому чисті інструкції, які викликають лише зміну одного стану, стають набагато швидшими.