Я, здається, не можу це зрозуміти, у чому різниця між суперскалярним та багатоядерним процесором?
Я продовжую їх змішувати, тому деякі прості моменти щодо того, що вони роблять, були б чудовими.
Я, здається, не можу це зрозуміти, у чому різниця між суперскалярним та багатоядерним процесором?
Я продовжую їх змішувати, тому деякі прості моменти щодо того, що вони роблять, були б чудовими.
Відповіді:
Супер-скалярні процесори означають, що ви відправляєте кілька інструкцій протягом одного циклу годин. Причина цього відрізняється від багатоядерної полягає в тому, що ви отримуєте лише один лічильник інструкцій. Таким чином, ви відстежуєте кілька інструкцій під час польоту, але всі інструкції є з однієї програми. Це все ще лише один процес. Тепер я сказав: "Ви отримуєте один лічильник інструкцій", і це технічно вірно в тому, що немає сенсу, коли ваш код буде відчувати невідповідність, крім використання деяких схем прогнозування гілок (Спекулятивне виконання: ви одночасно виконуєте обидві гілки та викидаєте "неправильну "результат прогнозу).
Коли ви потрапляєте в багатоядерні, у вас одночасно виконується кілька потоків інструкцій. Важлива частина полягає в тому, що кожне ядро (виконання за допомогою власного лічильника інструкцій) також може бути супер-скалярним, щоб швидше виконати кожен процес!
Можна мати супер-скалярний без конвеєрного або позарядного виконання, маючи дуже довге слово інструкції або "VLIW". Це також називається "статичним" надскалярним (тобто в самому коді). Тут у вас є достатньо компонентів для виконання декількох інструкцій одночасно, і ви отримуєте відразу кілька інструкцій, а потім виконуєте їх. У найпростішій формі, уявіть, що ви сказали, що "цей процесор завжди буде отримувати і виконувати дві інструкції одночасно". Тоді, поки кодер міг знайти роботу, яка повинна виконуватися одночасно в одному і тому ж процесі, ви подвоїли пропускну здатність! Якщо ви не змогли знайти дві інструкції, щоб скласти разом, ви просто з’єднаєте одну інструкцію та NOP. Ця ідея не дуже хороша здебільшого, тому що якщо ви зробите кращу версію процесора, який одночасно може виконувати 3, 4 або більше інструкцій, усі ваші старі коди ламаються! Але вони вирішили це досить геніально, вам слід перевірити чітко паралельні інструкції з обчислень або "EPIC" речі, якщо ви хочете знати більше.
Динамічний супер-скаляр з конвеєрним рухом може скористатися як незалежними даними інструкціями, так і паралелізмом на рівні інструкцій, саме це робить його такою потужною комбінацією. По суті це дозволяє вам, маючи достатньо обладнання, виконувати якомога більше незалежних інструкцій одночасно.
Динамічний супер-скаляр з конвеєрним виконанням та виконанням поза замовлення був, по суті, межею паралелізму рівня інструкцій: ви намагалися б одночасно виконувати кілька інструкцій на одному етапі, намагаючись знайти операції, які функціонували без залежностей від даних. Ви могли б закінчити з ладу, ви почали б виходити з ладу, є всілякі речі, які вам потрібно зробити, щоб тримати голову прямо, роблячи супер-скалярні речі. Багатоядерний каже: "ей програміст! Дайте мені кілька проблем, які я можу вирішити одночасно!" і тоді, оскільки програміст здатний бачити самостійно вирішувані проблеми за межами лише декількох рядків у складеній збірці, вони можуть більш ефективно програмувати ці рішення для багатоядерних.
Супер-скаляр навіть не здатний вирішити такі проблеми, як "як я швидше виконую ці дві програми". Він міг виконувати лише кожну незалежну програму швидше.
Сподіваюся, що це допоможе, вибачте, якщо це трохи непересічно.
--Edit--
Змінено з метою врахування точки ajs410, що я переплутав кілька ідей.
Якщо звернутися до попередніх процесорів, таких як 80486 або Pentium, то процесор був єдиною логічною одиницею обробки. Він виконує один потік інструкцій за один раз. Єдиний процесор був також єдиним кремнієвим чіпом. Якщо ви хотіли більшої потужності для обробки, то ви можете придбати дорогу материнську плату сервера, яка має слоти для розміщення двох окремих процесорів. Тоді у вас був два процесорні машини і так два ядра обробки.
В якийсь момент Закон Мура означав, що у кремнію є стільки доступних транзисторів, що ви могли розмістити всю схему для двох процесорів лише в один чіп. Тепер у вас є потенціал для називання плутанини. Скажімо, у вас є два процесора, це може означати, що у вас є старіші стильові два пакети кремнію або новіший єдиний пакет кремнію, але з налаштуваннями обробки двох процесорів. Для вирішення цього питання ми маємо на увазі, що процесор є єдиним пакетом кремнію, а Core - єдиним логічним процесорним блоком всередині нього.
Супер-скалярний - це техніка, яка використовується в ядрі, щоб спробувати покращити продуктивність і дати їй можливість в середньому обробляти більше інструкцій за цикл. Скалярний процесор виконує щонайменше одну інструкцію за цикл, суперскалярний означає, що він може потенційно виконувати більше однієї інструкції за цикл. Наприклад, якщо процесор має функціональну одиницю для цілочисельної арифметики та іншу для плаваючої точки, то чому б не використовувати обидва одночасно для виконання двох інструкцій одночасно. Що робити, якщо у вас є три цілі одиниці та дві одиниці з плаваючою точкою? Тепер у вас є ще більший потенціал для паралельного виконання. Але вам також потрібно більше транзисторів для реалізації та набагато складніша логіка, щоб вона надійно працювала. У реальному світі ви, як правило, супер-скалярні, використовувані разом із розробленими поза замовленнями проектами, оскільки вони компліментують один одному.