Курсова здавалася в грудні 2000р. в
ОГУ, кафедра ПІ,
ВМКСС
Доповнення до моєї курсової:
Про конвеєрі Р4 більш докладно (www.ixbt.ru)
Intel Willamette. Перший погляд
1999 став не дуже вдалим роком для Intel. І Direct RDRAM був сприйнятий індустрією без особливого ентузіазму, і VIA більш ніж вдало зіграла з
своїм Apollo Pro133/133A. Що стосується процесорів, то не все було гладко і тут. AMD нарешті змогла повністю використовувати весь потенціал своїх
інженерів і запропонувати процесор, що виводить її з ринкової ніші виробника недорогих процесорів рівня Low-End і трохи вище. Більше того, її Athlon,
вийшов на півроку пізніше Pentium III, виявився вельми і вельми перспективним процесором в плані зростання тактової частоти. Ймовірно, наприкінці 2000 року
процесори з цієї лінійки повинні досягти рівня порядку 1.4 Ггц. І це в той час, коли останнє дітище Intel, що вийшло цієї осені - Coppermine,
виявилося куди менш розганяється і до кінця року, імовірно, повинне досягти швидкості близько лише 1 ГГц. p>
Що повинен був зробити в такій ситуації Intel? Напевно, прискорити вихід свого наступного x86 ядра, останнього IA32 ядра для користувачів --
Willamette. Спочатку, термін виходу процесорів на цьому ядрі коливався десь між кінцем 2000 року і початком 2001. Відповідно, перша поява
зразків чіпа очікувалося десь ближче до літа. І ось, у січні несподівано з'ясовується, що Intel вже отримав на руки перші чіп, а в квітні компанія
має намір почати постачання зразків своїм особливо наближеним партнерам. p>
Тим часом наближався лютий - місяць двох великих подій у світі процесорів, конференції ISSCC і форуму розробників Intel - IDF. Одним з
найбільш очікуваних подій ISSCC була демонстрація 1 ГГц Willamette. Однак, нічого подібного не сталося - Intel продемонстрував там всього лише 1 ГГц
Coppermine, знову поступившись першістю AMD з її 1.1 ГГц Athlon. Але зате як він відігрався на IDF! Там компанія, знову абсолютно несподівано, продемонструвала
Willamette, що працює на частоті 1.5 Ггц. Вражає, що й казати. Цікаво, чи зміниться картина, якщо подивитися на неї більш пильно? p>
Willamette повинен стати першим за довгі роки серйозної переробкою архітектури P6. Мабуть, за останні п'ять років, з моменту виходу Pentium Pro, в
цій галузі не відбувалося нічого більш значного: асиметрична ядро, з блоками, що працюють на різних швидкостях, значно поліпшена версія
суперскалярної механізму виконання інструкцій, новий кеш, що відслідковує порядок виконання інструкцій, перероблені блоки операцій з мультимедіа
даними та числами з плаваючою комою, величезний набір нових інструкцій на всі випадки життя, абсолютно нова 100 МГц шина, що передає по 4 пакети даних за такт,
що дає нам результуючу частоту 400 МГц, конвеєр виконання інструкцій з 20 кроків ... Хватит? p>
А тепер спробуємо пройтися по пунктах. І почнемо з того, що власне дозволило нового процесора Intel досягти настільки високої тактової частоти --
конвеєра виконання інструкцій. Для початку врахуємо, один загальноприйнятий факт - чим довше конвеєр, тим легше нарощувати тактову частоту, але тим менше
продуктивності виходить на кожен отриманий мегагерц. І навпаки. Чому так? Тому що, чим на більшу кількість стадій розрахований конвеєр, тим
менше роботи припадає на кожний окремий такт, тим швидше цей самий такт виконується. Але! Припустимо, у нас є простий блок з декількох,
пов'язаних один з одним операцій: p>
1) A = B + C2) D = A 1
Тобто, операція 1 буде перебувати в кеші інструкцій стільки часу,
скільки знадобиться для виконання операції 2. А вона буде виконуватися тим більше тактів, чим довше конвеєр. А до речі, якої довжини він у сьогоднішніх
процесорів? Pentium III має конвеєр довжиною 12 (17 стадій FPU), Athlon - 10 стадій (15 стадій FPU), Alpha - 7 стадій (10 стадій FPU). Як бачимо на
підставі цих даних, Willamette є абсолютним чемпіоном по довжині конвеєра, тобто, має саме менший час виконання такту, що дозволяє
досягти максимальної тактової частоти, але й самі великі затримки для пов'язаних один з одним операцій (операції 2 доведеться чекати 20 тактів, поки не
виконається до кінця операція 1). p>
Втім, не все так просто. По-перше, в буфері завжди буде знаходитися певна кількість інструкцій, що не вимагають знання результату виконання
попередніх (найпростіший приклад: A = 1 +2). Їх теж можна починати виконувати під час виконання операції 1 (у сьогоднішніх процесорах знаходиться декілька
виконавчих модулів, які вміють працювати паралельно), щоб не було простою під час очікування, поки та пройде весь конвеєр і можна буде приступити до
виконання операції 2. p>
Інше питання, що чим довше конвеєр (і, відповідно, час виконання інструкцій), тим менша ймовірність, що в буфері вдасться знайти
досить таких незалежних інструкцій, для того, щоб повністю завантажити виконавчі модулі під час її виконання операції 1. І тут важливу
роль має обсяг цього буфера. Для інформації - у Pentium III він має об'єм 40 мікрооперацій, (один x86 інструкція в середньому становить приблизно півтори
мікрооперацій). У Willamette його обсяг, за твердженням Intel, повинен значно зрости, результат очевидний. p>
(До речі, про кеші. Передбачуваний обсяг кеша першого рівня Willamette - 256 Кбайт, в 8 (!) разів більше, ніж у Pentium III і в два рази більше, ніж у
Athlon. Об'єм кеша другого рівня невідомий, але передбачається, що він буде менше 1 Мбайт - 512 Кбайт?). p>
По-друге, в дію вступає алгоритм передбачення переходів - чим довше конвеєр, тим важливішим стає прогноз того, виконання
який інструкції знадобиться, задовго до самого процесу її виконання. І, природно, помилка на цій стадії - вибір не тієї гілки, на яку піде
процес виконання програми, буде дуже і дуже позначатися на продуктивності процесора. І вона буде тим більш критична, чим довше
конвеєр - одна помилка у виборі виконуваних операцій на самому початку, і поки дорахується весь конвеєр, і з'ясується, що вважалося зовсім не те ... Intel
пообіцяв в Willamette значно підвищити точність процесу передбачення переходів, "скомбінувавши всі доступні на сьогодні схеми
прогнозів ". За деякими відомостями, ефективність цього алгоритму в Willamette досягла 95 відсотків. p>
Одним з інструментів поліпшення продуктивності в цій галузі, стане одна новинка - кеш з упорядкуванням інструкцій. Його завданням буде
бути зберігання інструкцій в тому порядку, в якому вони виконуються. Тобто, якщо перший інструкція, що знаходиться за адресою 100, виконує перехід на другий
інструкцію, що знаходиться десь на адресу, ну, скажімо, 200, то в цьому кеші другого інструкція буде знаходитися саме в тому порядку, як вона виконується --
відразу безпосередньо за першим, і т.д. У результаті ми "забрали одного з слизьких місць, де міг помилитися алгоритм передбачення переходів. p>
Ще один такий інструмент - Advanced Dynamic Execution. Так Intel називає поліпшену версію механізму суперскалярної позачергового виконання
інструкцій, коли процесор жонглює інструкціями, порушуючи їх природну послідовність, з метою більш щільною завантаження виконавчих модулів --
цей пункт теж відноситься до витрат застосування довгого конвеєра і покликаний мінімізувати пов'язане з ним збільшення затримок виконання інструкцій. p>
Це все, що стосується конвеєра Willamette. Цей фактор є досить важливим у визначенні продуктивності процесора, але не менш важливим є
і продуктивність модулів, що безпосередньо виконують ті чи інші операції - з цілими числами, з числами з плаваючою комою, зі специфічними даними,
коли одна інструкція оперує відразу декількома пакетами даних (SIMD). p>
Тут враження двоякі: що стосується цілочисельних операцій, то тут все в повному порядку: у Willamette блок цілочисельних операцій працює
на подвоєною швидкості щодо швидкості процесора - тобто, у випадку з показаних на IDF 1.5 Ггц чіпом, швидкість роботи його цілочисельних модулів
складала 3 ГГц! (Знову ж таки, це результуюча частота - насправді швидкість залишається 1.5 Ггц, просто цей блок вміє виконувати обчислення не за
повний такт, а за його половину. Тобто, фактично його швидкість подвоюється). "Модулів" - оскільки їх у Willamette два, відповідно, в самому
ідеальному випадку виходить 4 операції з цілими числами за один такт роботи процесора. p>
А от що стосується блоку для операцій з числами з плаваючою комою, то вийшла, тут картина, схоже, не вразила навіть сам Intel. Два таких
модуля (проти трьох у Athlon) будуть забезпечувати для 1.4 ГГц процесора пікову продуктивність в операціях з плаваючою комою всього лише 1.4 GFLOPS,
оскільки реальну обчислювальну роботу виконує тільки модуль - операції типу FADD, FMUL, і т.д., другі ж займається підсобною діяльністю - FMOVE,
FSTORE. Тут треба зауважити, що для Athlon, якщо припустити, що на той час він буде мати ту ж тактову частоту - 1.4 ГГц (а підстави,
принципі, є), цей показник буде дорівнює 2.8 GFLOPS. p>
Загалом, Intel вирішив не зв'язуватися з x87 у своєму новому процесорі, зосередивши всю увагу на блоці, призначеному для роботи з SIMD (Single
instruction - multiple data) інструкціями - 64-біт інструкціями, розрахованими на числа з плаваючою комою, і 128-біт цілочисельними інструкціями. Таких
модулів у Willamette також два, один для реєстрових операцій і один - для арифметичних. За рахунок того, що це - SIMD, то в ідеалі можливі варіанти,
коли за один такт виконується одна SIMD інструкція, що складається з чотирьох операцій. Разом: чотири операції, 1.4 ГГц - пікова продуктивність
Willamette у випадку використання SIMD становить 5.6 GFLOPS! Це нагадаю, проти 2.8 GFLOPS x87 у 1.4 ГГц Athlon або ж 5.6 GFLOPS у випадку використання
його SIMD блоку, що працює з набором 3DNow!. p>
Так що не дивно, що Intel буде всіляко просувати новий SIMD набір інструкцій Wilamette (SSE2), як найкращий варіант для роботи з операціями з
плаваючою точкою. p>
У результаті ми стикаємося з двома можливими варіантами. p>
Intel зможе переконати розробників програм використовувати SSE2, набір, що складається з 144 нових інструкцій: p>
76 зовсім нових, що оперують з широким діапазоном
даних (включаючи числа з плаваючою комою подвійної точності і цілі числа з 4 слів: і те, і те - 64 біт, якщо використовуються регістри XMM, і відбувається
упаковка даних, то мова йде вже про 128-біт числах), частина інструкцій з цього набору дозволяє програма брати на себе контроль над механізмами кешування,
завантаження та зберігання даних в регістрах процесора. p>
68 розширених SIMD інструкцій для роботи з цілими
числами. Якщо у Pentium II/III вони працювали тільки з 64-біт MMX регістрами, то в Willamette вони вже зможуть використовувати 128 біт регістри XMM цього процесора.
p>
Intel Якщо це вдасться, то Willamette в операціях з плаваючою точкою для кінця року буде виглядати цілком солідно. p>
Якщо ж розробники програмного забезпечення не проявлять великого ентузіазму і продовжать використовувати старий добрий x87, то Willamette буде
виглядати на числах з плаваючою точкою аж ніяк не так блискуче, практично не відрізняючись від Pentium III, що працює на тій же тактовою частотою. p>
За дедалі більшого зростання продуктивності процесорів і підсистеми пам'яті, збільшення швидкості системної шини GTL + за останній рік всього лише на 33 МГц
виглядає не дуже вражаюче. Та тут ще й поява нової платформи - IA64. Загалом, з виходом Willamette Intel вводить нову системну шину, яка мало
того, що має значно збільшити пропускну здатність (тактова частота 100 МГц, навіть нижче, ніж в сьогоднішньої 133 МГц GTL +, але за рахунок передачі 4
пакетів за такт, результуюча виходить частота 400 МГц), вона ще й повинна стати сполучною ланкою між IA32 і IA64 - після Tehama, чіпсета під
Willamette, її буде використовувати i870 - чіпсет, призначений як під IA32 Foster, так і під IA64 McKinley. p>
Таким чином, плюси нової шини: значно зросла пропускна здатність - 3.2 Гбайт/с (400 МГц, 64 біт) проти 1,064 Гбайт/с (400 МГц,
64-біт) в сьогоднішньої 133 МГц GTL + (3.2 Гб/с - якраз рівно стільки, скільки буде здатний забезпечити двоканальний RDRAM, на який розрахований Tehama) і
деяка перспективність у плані майбутнього. p>
Мінуси: 4 пакети даних за один такт - це здорово, але тільки в тому випадку, коли вдасться їх надати до моменту виконання чергового такту.
Інакше пропускна здатність шини використовуватиметься далеко не на повну міру. Загалом, 3.2 Гбайт/с - це в самому ідеальному випадку. Друге - сьогоднішні
материнські плати для Willamette жодним чином не підходять. І навіть не тільки за рахунок використання нової системної шини, але хоча б за рахунок нового
форм-фактора - Socket-462. Знову нова платформа, і ніякі перехідники тут вже не допоможуть. p>
Ось такі от справи. Що ми маємо в результаті? Ми маємо процесор, створений у повній відповідності з принципом "купують мегагерци",
оптимізований саме під нього, а не під максимальну продуктивність. У підсумку, згідно з попередніми даними, Willamette має продуктивність
того ж рівня, що працює на одній частоті з ним Coppermine. Або Athlon. Таким чином, збільшення продуктивності нового процесора буде пов'язано
виключно з його збільшилася швидкістю. p>
Як передбачається, до кінця року нові процесори AMD підійдуть приблизно з тією ж швидкістю, на якій Intel має намір випустити Willamette. (І обидва вони
вимагатимуть нові материнські плати). Як передбачається, продуктивність у них буде приблизно однаковою, тобто сьогоднішнє
стан нестійкої рівноваги між Intel і AMD збережеться ще як мінімум до початку 2001 року. p>
А далі? Willamette повинен стати останнім споживчим x86 процесором, тобто в 2001 році Intel почне його оптимізацію для подальшого
підвищення швидкісних показників. І десь в тому районі в світ вийде новий x86 процесор AMD - SledgeHammer (K8). Грунтуючись на сьогоднішніх знаннях,
виходить цікава картина - в наступному році Intel знову повинен опинитися в ролі наздоганяючого на ринку x86 процесорів середнього рівня. Якщо, звичайно, цей
ринок на той час буде заслуговувати хоч будь-яких зусиль. p>