Статьи

Intel і AMD: потроху про архітектурні нововведення

  1. Картина 1: Прибуття Intel, як архітектурного паровоза
  2. Картина 2: AMD, як ощадливий екстендер своїх володінь
  3. Картина 3: 64 борозни і простір реєстрового поля ...
  4. Картина 4: AMD, з «Hammer» в руках, лагодить x86
  5. Картина 5: Intel красується, приміряючи до себе спадщину CRAY і Alpha
  6. Картина 6: незакінчена. Урочисте запалювання лампочки Мура

«Не зрозумійте мене правильно» «Не зрозумійте мене правильно»   Картина 1: Прибуття Intel, як архітектурного паровоза   Не будемо ламати копій (і так, якщо пам'ятається, виведи чимало лісу) на тему, яким повинен був бути Pentium 4 і яким він став - перша «робота над помилками» (Northwood) вже на носі

Картина 1: Прибуття Intel, як архітектурного паровоза

Не будемо ламати копій (і так, якщо пам'ятається, виведи чимало лісу) на тему, яким повинен був бути Pentium 4 і яким він став - перша «робота над помилками» (Northwood) вже на носі. Давайте, краще, придивимося, що ховається за можливою зміною залізничної колії (читай архітектури), яка ось уже не перший рік відсувається від поїзда інформаційної індустрії, немов обрій. Отже, погляд Intel:

  1. Плавно просувати абсолютно нову архітектуру IA-64, почавши з серверного сегмента і поступово, протягом 4-х і більше років, спускати її вниз.
  2. Практично повністю програмна (дуже повільна) сумісність з IA-32 залишена тільки для виконання що не підлягає перекомпіляції «критичної спадщини».
  3. Операційна система повинна бути «исконно» IA-64.
  4. Спостерігається негласна тенденція промацати можливість по переходу до * NIX подібних систем (ймовірно, нові системи з людським обличчям, а-ля MacOS X) від Windows (мається на увазі Windows старої архітектури).
  5. Весь цей час планується паралельно розвивати лінійку IA-32 процесорів, не здійснюючи різкого переходу, а слідуючи по шляху їх поступового витіснення, включаючи появу сумісних по шині моделей IA-64 і IA-32.

Очевидно, що подібна рокіровка може зрушити MS з того насидженого місця монополіста «масових» ОС, яке вона зараз займає. З іншого боку, перехід на IA-64 успішно затягується внаслідок цілого набору причин, і це може допомогти MS адаптуватися до 64 бітної архітектури, тим же чином, яким свого часу вона відреагувала на широке поширення 32-х біт.

Давайте згадаємо, як колись на необхідності якнайшвидше повноцінно використовувати переваги 32 бітної адресації і сторінкового MMU породила на світ гібрид інтерфейсів і API Windows з багатозадачним ядром серйозної архітектури (Windows NT). Який, до речі, спроектувала команда серйозного ідеолога не менше серйозних систем, що прийшов в Microsoft з DEC. Втім, струнка архітектура ядра ще не гарантувала загальну стрункість системи, яку можна порівняти з набагато більш аристократичними OpenVMS або * NIX, в комплекті з інтерфейсом Windows, в одній коробці - як відомо, MS здатна спаплюжити і запитати будь струнке починання. Що, власне, і сталося - сучасні варіації на тему NT жахають своєю громіздкістю, мішаниною технологій і API. Чи не ризикну судити наскільки це добре чи погано, але системи MS скоріше не проектуються, а еволюційно розвиваються, часто методом численних спроб і помилок. Уникнути рудиментів в ході такого біологічного підходу, як відомо, неможливо. Але найнебезпечніше - це переборщити з мутаціями, які цілком можуть вийти з під контролю (камінь в город .NET з усіма прібамбахамі, типу активації).

Отже - два можливих сценарії:

  1. Подальший розвиток NT, портований на IA-64.
  2. Створення нового, більш відповідає часу, ядра системи і перенесення на нього API (не всіх, а найперспективніших) з NT. Решта програми виконуються в режимі емуляції (віртуальної NT машини), як це було свого часу з DOS завданнями під NT.

Зрозуміло, що MS зручніше перший сценарій - перехід на нову архітектуру системи завжди давався цієї софтопекарне нелегко. Однак, якщо вона відчує, що положення портований Windows NT на 64 бітної сцені занадто «хитко» - MS здатна зважитися і на другий сценарій. Наскільки успішно в технологічному плані? Чи не успішніше, ніж це було з NT - дива чекати не доводиться. А в маркетинговому - скоріше навпаки: тут, як відомо, MS здатна творити суцільні чудеса.

Тим часом, затримка з впровадженням IA-64 грає MS на руку, та й не остання причина затримки (якщо так можна висловитися) - вона сама, а точніше, специфіка спочатку погано портіруемость вихідного коду Win32 *, величезними обсягами якого на даний момент запаслися практично всі відомі виробники програмних продуктів.

Крім «софтверних» стримуючих факторів, Intel істотно обмежена факторами економічними - IA-64 дуже охочі до пропускної смуги пам'яті, і бажана для неї 128-бітность процесорної шини продовжує (вже досить давно) бути неприйнятною, з економічної точки зору, для масового сектора ПК . Отже, доводиться чекати технології пам'яті (ось біда, ростуть вони повільно), і використовувати для підвищення смуги пропускання НЕ ширину шини, а хитріші DDR / QDR і іже з ними інтерфейси. Крім того, середні ціни на ПК падають, що, укупі з надвинувшейся кризою IT, стримує будь-які технологічні ініціативи, спрямовані на стрибкоподібне ускладнення чого-небудь заради істотного збільшення продуктивності. Ну і, остання проблема - незатребуваність цієї самої продуктивності сучасними додатками - т. Е. Розрив у швидкості розвитку між залізними та програмними технологіями, який все більше ускладнює роботу маркетологів, нездатних ефективно переконати кого-небудь в необхідності переходу на нову архітектуру.

Виходячи з усього викладеного можна виділити дві основні перешкоди, що стримують розвиток архітектури ПК. Назвемо їх фактор «Е» (економічний) і фактор «С» (Софтова).

Фактор «Е» в принципі долається - хоча б завдяки можливості масштабувати архітектури, продаючи їх, в тому числі, і в серверному або научноконструкторском секторі, знімаючи жирні вершки з метою окупити розробку ще до виходу на масовий ринок. А ось з фактором «С» необхідно миритися - будь-яких якісних зрушень тут поки не передбачається.

Ми приходимо до парадоксального висновку - той самий всім звичний тандем Wintel в даний момент істотно стримує Intel. Нелегко бути Паравоз, який тягне всю індустрію. Можливо, набагато легше бути паровозом який її гальмує (натяк в сторону MS), по крайней мере в моменти кризи, коли все починає котиться в тартарари.

Картина 2: AMD, як ощадливий екстендер своїх володінь

Проштовхнути повністю нову (несумісну з x86) архітектуру на ринок AMD не здатна. Крім того, їй абсолютно безглуздо це робити - вона не претендує на місце паравоза, а скоріше навпаки, грає роль моторно-генераторного вагона, в моменти кризи успішно перетворюючи залишкову енергію руху поїзда IT-індустрії в гроші. Отже, що ми маємо тут:

  1. Просувати двійковій сумісну з IA-32 архітектуру x86-64, що є 64 біт розширенням класичної IA-32.
  2. Також, як і Intel почати просування з серверного сектора (хто б сумнівався)
  3. Зробити ставку на підтримку цієї розширеної архітектури операційними системами Microsoft, особливо в світлі можливого провалу MS на поле IA-64

Зрозуміло, AMD теж ризикує, але її ризик зовсім іншого порядку. Вона ризикує як зазвичай - просто зменшенням зростання і так не дуже великої частки ринку, внаслідок можливого успіху IA-64. Тобто вона знаходиться в більш вигідному, ніж Intel, положенні. Навіть якщо роль операційних систем MS істотно знизиться в результаті якого-небудь чуда, на зміну їм прийдуть портіруемость відкриті системи, які в тій же мірі розв'яжуть руки Intel, в якій і AMD. Більш того, емуляція, необхідна для сумісності зі старими програмами, дасться AMD легше.

Ще один цікавий аспект - будь-який «ледачий» криза індустрії відіграє скоріше на руку AMD. Всі починають рахувати гроші, активність переміщається в менш розвинені регіони, та й просто репутація «недорогих» рішень йде за AMD вже досить давно, хоча, нині вона вже і не така радикальна. Разом з хорошою начинкою (диск, прискорювач) рішення на базі платформи від Intel трохи дорожче і часом трохи повільніше. Останній же пункт (топова продуктивність процесора) останнім часом все менш важливий. Набагато більше хочеться отримати адекватне 3D прискорення, нормальний обсяг пам'яті і, найголовніше, надійність і безпека даних. А хтось іде далі, замислюючись про тишу або обсязі системного блоку (всі ці міркування йдуть в розумних межах - зрозуміло, я говорю про ще вироблених процесорах, скажімо 600 МГц і вище, швидкість яких, що називається, достатня).

Цікавий і підхід цих компаній до маркетингу - Intel з задоволенням спонсорує рекламу своїх дилерів та реселерів, проводить безліч програм, націлених на підтримку фірм торгують компонентами і рішеннями. AMD розповідає про те, які вони бідні, як їм важко, і в кращому випадку надсилає готові рекламні матеріали (проспекти), які реселлери повинні в підсумку самі і поширювати. Основним же маркетинговим аргументом, як і раніше, залишається або ціна, або продуктивність / ціна. При цьому, останнім часом AMD все ж усвідомила необхідність серйозних рекламних кампаній, але, вони будуть проводитися фірмою безпосередньо, в обхід партнерів більш низьких рівнів.

Прошу не приймати вищевикладені факти за вираз моєї антипатії або симпатії до AMD (вже набридло, чесне слово :-)) - це просто опис різних підходів до бізнесу - фактично, обидві фірми все роблять цілком здраво і розумно, особливо розумно надходить AMD. Вони зайняли позицію, котороя не дозволяє їм істотно перевернути ситуацію на ринку ситуацію, але при цьому здорово страхує їх при будь-якому розкладі (а адже нині криза). Ще й на рекламі економлять, а продажі при цьому повільно, але вірно ростуть ... Але, подібний підхід придатний тільки при наявності хорошого паровоза (читай Intel). А якщо з ним щось трапиться, що буде тоді?

Питання надійності можна пояснити просто - за все доводиться платити, в тому числі, за дешевший і при цьому більш швидкий процесор. А чи вигідно (чи ні) платити за якісь додаткові засоби захисту - кожен повинен вирішувати сам.

Картина 3: 64 борозни і простір реєстрового поля ...

А власне, так вони потрібні ці 64 біта? Так, ми чули про величезні базах даних, але наших особистих ПК це навряд чи стосується. Так, сучасні носії давно перевищили 32-х бітний поріг (4 ГБ). Так, пам'ять цей поріг скоро перейде (якраз, магічна цифра в 4 роки, при збереженні нинішніх темпів розвитку). Так, великі файли з відео буде простіше тримати. Точність і швидкість обчислень? Тут вистачає SIMD розширень. Прискорення пересилання даних? Та ні, все як завжди упреться в процессорную шину. Збільшення ефективності виконання коду і використання блоків процесора (побічний наслідок перекомпіляції)? Тут (в рази) основна перевага за новою архітектурою IA-64, та й то, все дуже щільно зав'язано на успіхи компіляторів, а процесор Hammer від AMD отримає тільки лічені відсотки переваги в новому коді. З іншого боку, від Hammer не потрібно витрачати 64 біта (а отже пам'ять) там, де вони не потрібні, достатньо просто запустити старий 32 бітний код ...

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

Картина 4: AMD, з «Hammer» в руках, лагодить x86

Давайте подивимося ближче, що представляє собою нова архітектура x86-64 від AMD:
Давайте подивимося ближче, що представляє собою нова архітектура x86-64 від AMD:

  1. 8 нових регістрів загального призначення R8-R15;
  2. Всі регістри загального призначення розширені до 64 біт (RAX = R1, включає EAX, AX, AH і AL; RBX = R2, RCX = R3 і т. Д.);
  3. Покажчик інструкцій розширено до 64 біт;
  4. 8 нових SSE регістрів XMM8-XMM15;
  5. нові, додаткові режими адресації;
  6. інструкції для виклику системних сервісів SYSCALL / SYSRET;
  7. новий префікс, командний префікс (і режим роботи процесора) LONGMODE, що дозволяє використання 64 бітних регістрів;
  8. підтримка роботи з 64 біт стеком;
  9. новий контрольний регістр - регістр пріоритету поточного завдання (Task Priority Register) дозволяє визначати, перериванням якого рівня дозволено перервати виконання коду поточного завдання;
  10. Додано новий рівень (четвертий) каталогу сторінок, щоб MMU міг ефективно управляти в сторінковому режимі 64 бітовим адресним простором (фактично, в поточній реалізації архітектури перекриваються не всі 64 біта, а тільки 48 це і є поточне обмеження архітектури x86-64 на фізичний обсяг пам'яті )
  11. Додані нові формати дескрипторів сегментів, що адресують всі 64 біта адресного простору

Як ми бачимо, за великим рахунком нічого нового - суто кількісне розвиток архітектури відбувається за сценарієм, запропонованим Intel давним-давно, ще для переходу x86 з 16 на 32 біта. Регістри розширені, додані нові, внесені невеликі зміни в систему команд, в основному, за рахунок появи нових командних префіксів. Збережена повна бінарна сумісність з усіма 16 і 32 бітними ОС, і 64 біта дані і код можуть бути використані спільно з 32/16 бітними. Характерний приклад: адаптація компіляторів і * NIX ОС для цієї архітектури відбулася миттєво, і практично без проблем - за хронологією можна простежити на www.x86-64.org .

Але, і революційного приросту продуктивності очікувати не варто - все, що дійсно прискорить роботу - це наявність додаткових регістрів. З огляду на високу швидкість завантаження даних з кеша першого рівня, а також істотний рівень суперскалярного сучасних x86 процесорів, можна прогнозувати дуже невеликий приріст продуктивності, по крайней мере, для поширених алгоритмів. Плюс 10-20% це все, на що ми можемо розраховувати. На подібне значення частота процесора виростає за кілька місяців - час менше, ніж було витрачено на розробку цього розширення системи команд.

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

Отже, нічого радикального і ніяких проблем з переходом. Hammer не за горами - чекаємо перших ударів по ковадлу ринку. Крім того, пізніше, цілком логічно очікувати варіант Hammer з технологією SMP або SMT на чіпі. Про останню ми зараз і поговоримо.

Картина 5: Intel красується, приміряючи до себе спадщину CRAY і Alpha

Intel, в свою чергу, долучається до високої моди серверних RISC архітектур. Пам'ятайте, була така архітектура - Alpha. Власне вона і зараз є, але вже як би і немає, тому що всі знають - останнє, так і не розроблене до кінця 5-е покоління чіпів на базі цієї архітектури не вийде в світ вже ніколи. Саме в ньому розробники зібралися втілити в кремінь, давно вже примирення до архітектури (про це говорилося ще під час анонса першого процесора, багато років тому) можливість апаратної многотредності (multithreading). Взагалі, якщо озирнутися, ми виявимо, що Alpha являє собою наочний приклад того, як поганий маркетинг може вбити прекрасні починання. Величезна кількість нових або добре забутих старих ідей, неймовірна для свого часу продуктивність і бітность, причому кожен раз на основі досить посередньої (не самою передовою з доступних) технологій. Чим був не ідеал?

Тим часом, пройшли роки, і нещодавно Intel зважилася анонсувати свій «Джексон текнолоджи» (Jackson Technology) - технологію апаратної многотредності. Почнемо з початку - в чому основна проблема сучасних суперскалярні процесорів, обвешаних десятками блоків для одночасного завантаження, обробки і збереження даних? Проблема у взаємних залежностях цих самих даних. Не можна одночасно завантажити, обробити і зберегти одне і теж число. Більш того, не можна його завантажити, обробити і зберегти, до того, як воно було збережено в попередній раз. Жах якийсь, суцільні обмеження. Основна проблема тут лежить навіть не стільки в компіляторах, скільки в самому коді - людині властиво писати алгоритми у вигляді послідовності пов'язаних дій, а не хаотичного набору непересічних формул, більш оптимального для суперскалярного виконання. Та ще й маленьке число регістрів x86, на які компілюється код, тільки погіршує все це - процесору важко распараллеливать настільки взаємозалежні інструкції, які змушені тупцювати в рамках 4-5 регістрів. Тому на звичайному коді, як правило, половина (!) Виконавчих блоків процесора простоює. Весь пафос ситуації в тому, що ускладнити x86 процесор, додавши виконуючих блоків, варто зараз набагато дешевше і займає менше часу, ніж розробка враховує всі тонкощі його роботи оптимизирующего компілятора!

Окей, ми не можемо піті від залежності команд, но Ми можемо почату Виконувати два незалежних потоку команд одночасно. Беремо, що вводяться другий РЕГІСТР покажчика адреси (EIP-2) i до кожної транслюваті мікрокоманді прівішуваті додатковий Битик, Який говорити нам, до которого потоку команд - первого або іншого вона відносіться. Відповідно, чи не забуваємо продубліровть и РЕГІСТР прапорів. Всі інші регістрі дублюваті не потрібно - їх и так, як відомо на крісталі в надлишком, и смороду дінамічно перейменуються. Просто тепер, вішаючи ярлик при перейменуванні, ми будемо тримати в голові не один, а цілих два віртуальних набору регістрів. Ще кілька дрібниць для правильної обробки переривань і все !. Ми отримали два процесори в одному. Єдине обмеження - обидва потоку команд сожітельствуют в одному адресному просторі, тобто можуть виконувати тільки різні треди одного завдання. Але для сучасних додатків, як правило орієнтованих на мультітредность, це не проблема. Наостанок назвемо все це SMT (Simultaneous Multi Threading).

Давайте подивимося що ми маємо. З одного боку складність кристала модифікованого таким чином Pentium 4, зросла на ~ 5%. Дуже мило. З іншого боку, на більшості завдань його продуктивність збільшилася на 10% -15%, на деяких завданнях - на 30% і навіть більше. Много це чи мало? Не так багато як могло б бути. У чому причина?

  1. число виконують блоків і їх ролі збалансовані в розрахунку на один потік команд;
  2. необхідно збільшити пропускну здатність (число портів) кеша першого рівня;
  3. необхідно збільшити (істотно!) число запускаються одночасно на виконання і виконуваних команд;
  4. необхідно збільшити пул переіменуемих регістрів і число портів цього пулу.

Два останні пункти найістотніше стримують цю технологію. До речі, саме тому Intel серйозно замислилася, перш ніж публічно анонсувати цю технологію для x86 - остання Alpha (EV8) в силу геніальної простоти архітектури вичавлювала майже четерехкратное перевага в «інструкціях за такт» при чотирьох апаратно виконуваних тред веб-сервера, 2.5-кратне на завданнях БД ...

Цікаво, що в Alpha передбачався дещо інший шлях - залізного спекулятивного (з передбаченням) перейменування регістрів там немає і реєстровий файл просто ділився між тред. Якщо ж Intel виконає ці чотири побажання, то можна домогтися 50% приросту продуктивності на типових задачах (не так погано для вигадливою CISC). Але, з іншого боку, це зажадає серйозного редизайну процесора. Що ж, почекаємо - побачимо. Поки ж ця технологія не більше ніж демонстрація «мозкових мускул» Intel і ймовірного шляху розвитку сучасних IA-32 процесорів.

Однак, ходять цікаві чутки на тему нестандартного використання SMT. Уявімо собі спеціальний компілятор, який створює код для двох тредов. Один з них основний (обчислювальний), а другий - допоміжний і займається тим, що забезпечує усвідомлену (тобто з урахуванням виконуваного алгоритму) передвибірки даних! Смикаючи ті адреси пам'яті, які через деякий час знадобляться основному обчислювальному тред. Пам'ятаючи про істотне часу простою при завантаження даних в кеш, не слід дивуватися, дізнавшись, що при використанні такої моделі виграш на багатьох завданнях може бути до 70%. Чекаємо реалізації в компіляторі!

У той же час, HP реалізує повний SMP на чіпі з об'єднаним кешем третього рівня, IBM займається тим же, та й Sun погрожує найближчим часом видати SMT рішення в рамках своєї лінійки UltraSparc. Їм можна - серверні процесори можуть коштувати дорого. А як же бути з настільними системами, чи піде Intel так само далеко, розвиваючи IA-32 або не встигне (як варіант - не захоче), повністю переключившись на IA-64? Час покаже.

І тільки Alpha почила в бозі, давши свого часу поширення самому поняттю многотредності в ОС загального призначення і майже довівши до кінця розробку апаратної мікропроцесорної задумки на цю тему (втім, перші публікації про апаратне SMT датовані 1978 роком, перша апаратна реалізація мала місце в Cray CDC 6600, CPU якого, втім, не був одночіповим. Крім того, за чутками, якийсь вітчизняний військовий комп'ютер MARS-M також апаратно реалізовував подібну технологію. Ну, да багато чого ще дала дорогу Alpha - не полінуйтеся, почитайте специфіка ії архітектури - ви будете здивовані, ще більше, ніж був колись здивований в 1995 (якщо не помиляюся) році я, прочитавши документацію, і побачивши живцем перші 200 МГц DEC Alpha Station і 150 МГц Alpha PC в давно вже зниклої конторі Digital Audio Lab , куди мене занесли ненароком мінливості моєї ще шкільної тоді долі ...

Картина 6: незакінчена. Урочисте запалювання лампочки Мура

Господа, а що ж ви будете робити з теплом? Куди подіти всі ці вати, число яких зростає рік від року? Втім це вже тема для окремої розмови про транзисторах, електронах, кіловатах, корпусах та ін. Про це в наступний раз ...

З наступаючим!

Наскільки успішно в технологічному плані?
А якщо з ним щось трапиться, що буде тоді?
А власне, так вони потрібні ці 64 біта?
Точність і швидкість обчислень?
Прискорення пересилання даних?
Збільшення ефективності виконання коду і використання блоків процесора (побічний наслідок перекомпіляції)?
Чим був не ідеал?
Почнемо з початку - в чому основна проблема сучасних суперскалярні процесорів, обвешаних десятками блоків для одночасного завантаження, обробки і збереження даних?
Много це чи мало?
У чому причина?

Новости