Intel Pentium 4 306 ГГц з підтримкою технології Hyper-Threading

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

іністерство загальної та професійної освіти РФ

Камишинський технологічний інститут

Філія Волгоградського державного технічного університету


Реферат


з дисципліни:

Організація ЕОМ


Intel Pentium 4 3,06 ГГц з підтримкою технології Hyper-Threading


Виконали:

студент групи квт003

Вершков А.С

Камишин, 2002

План


1. Введення ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3

2. SMP і Hyper-Threading ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4

3. Hyper-Threading: сумісність ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .6

4. Hyper-Threading: навіщо вона потрібна ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 7

5. Висновок ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9


1. Введення


До азалось б не так вже і давно вийшов Pentium 4 2,8 ГГц, але компанія Intel мабуть настільки горда здатністю свого нового процесорного ядра до постійного "розгону", що не дає нам спокою анонсами все нових і нових процесорів. Однак сьогоднішній процесор відрізняється від попередньої топової моделі не тільки на 200 з невеликим мегагерц - те, про що давно мріяли багато користувачів, нарешті сталося: технологія емуляції двох процесорів на одному процесорному ядрі, раніше колишня надбанням лише наддорогих Xeon.

Усі наступні моделі Pentium 4, починаючи з розглянутого, будуть мати підтримку технології Hyper-Threading. Проте хтось може цілком резонно поцікавитися: «А навіщо мені двопроцесорний машина вдома? І дійсно - навіщо? Саме це я і постарався пояснити нижче. Отже: Hyper-Threading - що це таке і навіщо він може бути потрібен у звичайних персональних комп'ютерах?



  1. SMP і Hyper-Threading


Як працює класична SMP (Symmetric Multi-Processor) - система з точки зору звичайної логіки? Не так вже й велика кількість користувачів, добре собі представляють як працює SMP-система, і в яких випадках від використання двох процесорів замість одного можна очікувати реального збільшення швидкодії, а в яких - ні.

Отже, уявімо, що у нас є, наприклад, два процесори замість одного. Що це дає?

Загалом-то нічого. Тому що на додаток до цього потрібна ще й операційна система, що вміє задіяти ці два процесори. Ця система повинна бути за визначенням багатозадачною (інакше ніякого сенсу в наявності двох CPU просто бути не може), але крім цього, її ядро ​​повинно вміти распараллелівать обчислення на кілька CPU. Класичним прикладом багатозадачного ОС, яка цього робити не вміє, є всі ОС від Microsoft, звані зазвичай для стислості "Windows 9x" - 95, 95OSR2, 98, 98SE, Me. Вони просто-напросто не можуть визначити наявність більш ніж одного процесора в системі.

Підтримкою SMP мають ОС цього ж виробника, побудовані на ядрі NT: Windows NT 4, Windows 2000, Windows XP. Також цією підтримкою володіють всі ОС, засновані на ідеології Unix - всілякі Free-Net-BSD, комерційні Unix (такі як Solaris, HP-UX, AIX), і численні різновиди Linux.

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

Виконувався користувальницький додаток може бути запущено всього одне, але кількість процесів (тобто фрагментів машинного коду, призначених для виконання якоїсь задачі) в багатозадачному ОС завжди набагато більше. Тому насправді другий CPU здатний трохи "допомогти" навіть одиночній завданню, взявши на себе обслуговування процесів, породжених операційною системою.

Крім того, навіть один додаток може породжувати потоки (threads), які за наявності декількох CPU можуть виконуватися на них окремо. Так, наприклад, надходять майже всі програми рендеринга - вони спеціально писалися з урахуванням можливості роботи на багатопроцесорних системах. Тому в разі використання потоків виграш від SMP іноді досить вага про м навіть у "однозадачной" ситуації.

По суті, потік відрізняється від процесу тільки двома речами - він по-перше ніколи не породжується користувачем (процес може запустити як система, так і людина, в останньому випадку процес = додаток; поява потоку ініціюється виключно запущеним процесом), і по-друге - потік вивантажується разом з батьківським процесом незалежно від свого бажання.

Також не варто забувати, що в класичній SMP-системі обидва процесори працюють кожен зі своїм кешем і набором регістрів, але пам'ять у них спільна. Тому якщо два завдання одночасно працюють з ОЗУ, заважати вони один одному будуть все одно, навіть якщо CPU у кожної свій.

Ну і нарешті останнє: в реальності користувач має справу не з одним, не з двома, і навіть не з трьома процесами. На наведеному колажі (це дійсно колаж, тому що з скріншоту Task Manager були видалені всі призначені для користувача процеси, тобто програми, що запускаються "для роботи") добре видно, що "гола" Windows XP, сама по собі, не запустивши ще ні однієї програми, вже породила 12 процесів, причому багато з них до того ж ще й багатопотокові, і загальна кількість потоків досягає двохсот восьми штук!



Тому розраховувати на те, що вдасться прийти до схеми "за власним CPU на кожну задачу" абсолютно не доводиться, і перемикатися між фрагментами коду процесори будуть все одно - і фізичні, і віртуальні. Втім, насправді все не так сумно - при грамотно написаному коді нічого в даний момент не робить процес (або потік) процесорного часу практично не займає (це теж видно на колажі).


Тепер, розібравшись з «фізичної» багатопроцесорність, перейдемо до Hyper-Threading. Фактично - це теж багатопроцесорність, тільки віртуальна. Бо процесор Pentium 4 насправді один. А процесорів ОС бачить - два. Як це?



Класичному "одноядерний" процесору додали ще один блок AS - IA-32 Architectural State. Architectural State містить стан регістрів (загального призначення, керуючих, APIC, службових). Фактично, AS # 1 плюс єдине фізичне ядро ​​(блоки прогнозу розгалужень, ALU, FPU, SIMD-блоки і ін) представляє з себе один логічний процесор (LP1), а AS # 2 плюс все те ж фізичне ядро ​​- другий логічний процесор ( LP2). У кожного LP є свій власний контролер переривань (APIC - Advanced Programmable Interrupt Controller) і набір регістрів. Для коректного використання регістрів двома LP існує спеціальна таблиця - RAT (Register Alias ​​Table), згідно з даними в якій можна встановити відповідність між регістрами загального призначення фізичного CPU. RAT у кожного LP своя. У результаті виходить схема, при якій на одному і тому ж ядрі можуть вільно виконуватися два незалежні фрагменти коду тобто де-факто - багатопроцесорну систему!


3. Hyper-Threading: сумісність


Крім того, повертаючись до речей практичним і приземленим, хотілося б торкнутися ще один важливий аспект: не всі ОС, навіть підтримують багатопроцесорність, можуть працювати з таким CPU як з двома. Пов'язано це з таким "тонким" моментом, як початкове визначення кількості процесорів при ініціалізації операційної системи. Intel прямо заявляє, що ОС без підтримки ACPI другий логічний процесор побачити не зможуть. Крім того, BIOS системної плати також повинен вміти визначати наявність процесора з підтримкою Hyper-Threading. Фактично, стосовно, наприклад, до Windows, це означає, що виявляється неприйнятною не тільки лінійка Windows 9x, але і Windows NT - остання зважаючи на відсутність підтримки ACPI не зможе працювати з одним новим Pentium 4 як з двома.

Незважаючи на заблоковану можливість роботи з двома фізичними процесорами, з двома логічними, одержуваними за допомогою Hyper-Threading, зможе працювати Windows XP Home Edition.

А Windows XP Professional, до речі, незважаючи на обмеження кількості фізичних процесорів до двох, при двох встановлених CPU з підтримкою Hyper-Threading чесно "бачить" чотири.

На жаль нові CPU з частотою більше 3 ГГц можуть зажадати заміни системної плати.

Навіть при номінальному збереженні все того ж процесорного роз'єму Socket 478 Intel не вдалося залишити в недоторканності споживану потужність і тепловиділення нових процесорів. Збільшення споживання по струму пов'язано не тільки зі збільшенням частоти, але і з тим, що через очікуване використання "віртуальної многопроцессорности" навантаження на ядро ​​в середньому зросте, отже, зросте й середня споживана потужність. "Старі" системні плати в деяких випадках можуть бути сумісні з новими CPU - Але тільки якщо робилися "із запасом". Грубо кажучи, ті виробники, які робили свої плати відповідно до рекомендацій самої Intel щодо споживаної Pentium 4 потужності, опинилися в програші по відношенню до тих, хто трохи перестраховался.Но і це ще не все. Крім ОС, BIOS і електроніки плати, з технологією Hyper-Threading повинен бути сумісний ще і чіпсет. Тому щасливими володарями двох процесорів за ціною одного зможуть стати тільки ті, чия системна плата заснована на одному з нових чіпсетів з підтримкою 533 МГц FSB: i850E, i845E, i845PE/GE.


  1. Hyper-Threading: навіщо вона потрібна


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

Так було з Pentium, коли Intel протиставила дуже продуктивної у цілочислових операціях AMD Am5x86 потужний FPU. Так було з Pentium II, який здобув широку шину і швидкий кеш другого рівня, завдяки чому за ним так і не змогли наздогнати всі процесори Socket 7. Так було і з Pentium 4, який протиставив решті наявність підтримки SSE2 і швидке зростання частоти - і теж де-факто виграв. Зараз Intel пропонує Hyper-Threading.

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

Оголосити Hyper-Threading "черговий маркетингової штучкою", звичайно, простіше простого. Однак не варто забувати, що це технологія, вона вимагає досліджень, грошей на розробку, часу, сил. Чи не простіше було найняти за меншу суму ще одну сотню PR-менеджерів або зробити ще десяток гарних рекламних роликів? Мабуть, не простіше. А значить, "щось в цьому є". Слід спробувати зрозуміти навіть не те, що вийшло в результаті, а те, чим керувалися розробники IAG (Intel Architecture Group), коли приймали рішення - розробляти "цю цікаву думку" далі, або відкласти на потім.

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

По суті, Hyper-Threading пропонує те ж саме, але реалізована апаратно, всередині самого CPU. Є деяка кількість різних виконуючих блоків (ALU, MMU, FPU, SIMD), і є два "одночасно" виконуваних фрагмента коду. Спеціальний блок відстежує, які команди з кожного фрагмента необхідно виконати в даний момент, після чого перевіряє, завантажені чи роботою всі виконуючі блоки процесора. Якщо один з них простоює, і саме він може виконати цю команду - йому вона і передається. Природно, існує і механізм примусового посилу команди на виконання - у противному випадку один процес міг би захопити весь процесор (усі виконувачі блоки) і виконання другої ділянки коду (виконуваного на другому "віртуальному CPU") було б перервано. Даний механізм (поки що) не є інтелектуальним тобто не здатний оперувати різними пріоритетами, а просто чергує команди з двох різних ланцюжків у порядку живої черги. Якщо, звичайно, не виникає ситуації, коли команди одного ланцюжка по виконуючим блокам ніде не конкурують з командами іншої. У цьому випадку виходить дійсно на 100% паралельне виконання двох фрагментів коду.

Найочевидніше наслідок застосування технології Hyper-Threading - підвищення коефіцієнта корисної дії процесора. Дійсно - якщо одна з програм використовує в основному цілочисельну арифметику, а друга - виконує обчислення з плаваючою точкою, то під час виконання першої FPU просто нічого не робить, а під час виконання другий - навпаки, нічого не робить ALU. Здавалося б, на цьому можна закінчити.

Однак це ідеальний (з точки зору застосування Hyper-Threading) варіант. Слід розглянути й інший: обидві програми задіють одні й ті ж блоки процесора. Зрозуміло, що прискорити виконання в даному випадку досить складно - бо фізична кількість виконуючих блоків від "віртуалізації" не змінився. А от не сповільниться воно?

У випадку з процесором без Hyper-Threading є просто "чесне" почергове виконання двох програм на одному ядрі з арбітром у вигляді операційної системи, і загальний час їх роботи визначається:

часом виконання коду програми № 1

часом виконання коду програми № 2

тимчасовими витратами на перемикання між фрагментами коду програм № 1 і № 2


У випадку з Hyper-Threading схема стає трохи інший:

час виконання програми № 1 на процесорі № 1 (віртуальному)

час виконання програми № 2 на процесорі № 2 (віртуальному)

час на перемикання одного фізичного ядра (як набору необхідних обома програмами виконуючих блоків) між двома імітованому "віртуальними CPU"


Залишається визнати, що і тут Intel поступає цілком логічно: конкурують між собою за швидкодією тільки пункти за номером три, і якщо в першому випадку дія виконується програмно-апаратно (ОС управляє перемиканням між потоками, задіюючи для цього функції процесора), то в другому випадку є повністю апаратне рішення - процесор все робить сам. Теоретично, апаратне рішення завжди виявляється швидше програмного.


Також одним з найсерйозніших неприємних моментів є те, що Pentium 4 доводиться мати справу з класичним x86-кодом, в якому активно використовується пряме адресування осередків і навіть цілих масивів, що знаходяться за межами процесора - в ОЗУ. Та й взагалі більшість оброблюваних даних найчастіше знаходиться там. Тому ділити між собою віртуальні CPU будуть не тільки регістри, але і загальну для обох процесорну шину, минаючи яку дані в CPU потрапити просто не можуть.

Проте тут є один тонкий момент: на сьогоднішній день "чесні" двопроцесорні системи на Pentium III і Xeon перебувають у точно такій же ситуації! Тому що шина AGTL +, що дісталася у спадок всім сьогоднішнім процесорам Intel від знаменитого Pentium Pro (надалі її лише піддавали модифікаціям, але ідеологію практично не чіпали) - всього одна, скільки б CPU ні було встановлено в системі.

Відійти від цієї схеми на x86 спробувала тільки AMD зі своїм Athlon MP - у AMD 760MP/760MPX від кожного процесора до північного мосту чіпсета йде окрема шина. Втім, навіть у такому варіанті проблема відсувається не дуже далеко - так як шина пам'яті точно одна - причому ось в цьому випадку вже скрізь.

Але й навіть з цього загалом-то не дуже приємного моменту Hyper-Threading може допомогти отримати якусь користь. Справа в тому, що по ідеї повинен буде спостерігатися істотний приріст продуктивності не тільки у випадку з кількома завданнями, які використовують різні функціональні блоки процесора, але і в тому випадку, якщо завдання по-різному працюють з даними, що знаходяться в ОЗУ. Якщо один додаток щось посилено вважає "всередині себе", інша ж - постійно підкачує дані з ОЗУ, то загальний час виконання їх у разі використання Hyper-Threading по ідеї повинно зменшитися навіть якщо вони використовують однакові блоки виконання інструкцій - хоча б тому, що команди на читання даних з пам'яті зможуть оброблятися в той час, поки наше перше додаток буде щось рахувати.


5. Висновок


В черговий раз, до радості всього прогресивного людства, Intel випустила новий Pentium 4, продуктивність якого ще вище ніж у попереднього Pentium 4, і справа тут не тільки в зайвих двісті мегагерцах, а й у новій технології під назвою - Hyper-Threading

Технологія Hyper-Threading з теоретичної точки зору виглядає досить непогано і відповідає реаліям сьогоднішнього дня. Вже досить рідко можна застати користувача з одним сиротливо відкритим вікном на екрані - всім хочеться одночасно і музику слухати, і по Internet бродити, і диски з улюбленими MP3 записувати, а може навіть, і пограти на цьому фоні в яку-небудь комп'ютерну гру.

Hyper-Threading дозволяє збільшити коефіцієнт корисного дії процесора в певних ситуаціях. Зокрема - в ситуаціях, коли одночасно виконуються різнорідні за характером програми. Це звичайно плюс, але він не є всеосяжним і глобальним. Тому що ефект від Hyper-Threading спостерігається виключно в деяких випадках. Зрозуміло, що поява CPU, здатного в два рази швидше робити все те, що робилося раніше - це величезний прорив. Однак Intel не став ініціювати початок нової епохи змін, просто додавши своєму процесору можливість дещо - що робити швидше.

Однак Hyper-Threading не можна назвати "паперовою" технологією, тому що при певних комбінаціях вона дає цілком відчутний ефект. Навіть набагато більший ефект, ніж іноді спостерігається при порівнянні, наприклад, двох платформ з одним процесором на різних чіпсетах. Хоча ефект цей спостерігається не завжди, і істотно залежить від стилю роботи користувача з комп'ютером. Причому саме тут проявляється те що: Hyper-Threading - це не SMP. "Класичний SMP-стиль", де користувач розраховує на реакцію настільки ж класичної "чесною" багатопроцесорної системи, тут не дасть бажаного результату.

"Стиль Hyper-Threading" - це поєднання процесів "розважальних" або "службових" з процесами "робочими". Користувач не отримає істотного прискорення від CPU з підтримкою цієї технології у більшості класичних багатопроцесорних завдань, або якщо за звичкою буде запускати тільки одне застосування в один момент часу. Але він швидше за все отримає зменшення часу виконання багатьох фонових завдань, виконуваних в якості "доважку" до звичайної роботи. Фактично, Intel просто ще раз нагадала всім нам, що операційні системи, в яких ми працюємо - багатозадачні. І запропонувала спосіб прискорення - але не стільки одного якогось процесу самого по собі, скільки комплексу виконуваних одночасно додатків. Це цікавий і досить затребуваний підхід.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
36.8кб. | скачати


Схожі роботи:
Intel Pentium 4
Intel Pentium III
Засоби апаратної підтримки управління пам`яттю в мікропроцесорах Intel 80386 80486 і Pentium
Історія розвитку процесорів INTEL Процесори INTEL ATOM
Уроки з компютерною підтримкою
Навчання молодших школярів з комп`ютерною підтримкою
MB Pentium 2
Pentium IV
PENTIUM Processor Технічний огляд
© Усі права захищені
написати до нас