Реферат: Intel Pentium 4 3,06 ГГц с поддержкой технологии Hyper-Threading

<img src="/cache/referats/14021/image001.gif" v:shapes="_x0000_s1029">Камышинскийтехнологический институт

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

Реферат

по дисциплине:

Организация ЭВМ

 

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

<span Times New Roman",«serif»;mso-fareast-font-family: «Times New Roman»;mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language: AR-SA">

1.Введение

<img src="../../../Temp/Pentium%204/proc_p4_full_my/iXBT%20Intel%20Pentium%204%203,06%20ГГц%20с%20поддержкой%20технологии%20Hyper-Threading.files/empty.gif" align=«right» v:shapes="_x0000_s1030">

Все последующие модели Pentium4, начиная с рассматриваемого, будут обладать поддержкой технологииHyper-Threading. Однако кто-то может вполне резонно поинтересоваться: «А зачеммне двухпроцессорная машина дома? И действительно — зачем? Именно это я ипостарался объяснить ниже. Итак: Hyper-Threading — что это такое и зачем онможет быть нужен в обычных персональных компьютерах?

<img src="/cache/referats/14021/image003.gif" v:shapes="_x0000_i1025">

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 процессов, причем многие из них к тому жееще и многопоточные, и общее количество потоков достигает двухсот восьми штук!

<img src="/cache/referats/14021/image005.gif" v:shapes="_x0000_i1026">

Поэтому рассчитывать на то, что удастся прийти к схеме“по собственному CPU на каждую задачу” совершенно не приходится, ипереключаться между фрагментами кода процессоры будут все равно — и физические,и виртуальные. Впрочем, на самом деле все не так грустно — при грамотнонаписанном коде ничего в данный момент не делающий процесс (или поток)процессорного времени практически не занимает (это тоже видно на коллаже).

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

<img src="/cache/referats/14021/image007.gif" v:shapes="_x0000_i1027">

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

3. Hyper-Threading: совместимость

Кроме того, возвращаясь к вещам практическим иприземленным, хотелось бы затронуть еще один немаловажный аспект: не всеОС, даже поддерживающие многопроцессорность, могут работать с таким CPU как сдвумя. Связано это с таким “тонким” моментом, как изначальное определениеколичества процессоров при инициализации операционной системы. Intel прямозаявляет, что ОС без поддержки ACPI второй логический процессор увидеть несмогут. Кроме того, BIOS системной платы также должен уметь определять наличиепроцессора с поддержкой Hyper-Threading. Фактически, применительно, к примеру,к Windows, это означает, что оказывается неприемлемой не только линейка Windows9x, но и Windows NT — последняя ввиду отсутствия поддержки ACPI не сможетработать с одним новым Pentium 4 как с двумя.

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

<img src="/cache/referats/14021/image009.gif" align=«left» hspace=«14» v:shapes="_x0000_s1037">А Windows XP Professional, кстати, несмотряна ограничение количества физических процессоров до двух, при двухустановленных CPU с поддержкой Hyper-Threading честно “видит” четыре.

К сожалению новые CPU с частотой более 3 ГГц могутпотребовать замены системной платы.

Даже при номинальном сохранении все того жепроцессорного разъема Socket 478 Intel не удалось оставить в неприкосновенностипотребляемую мощность и тепловыделение новых процессоров. Увеличениепотребления по току связано не только с ростом частоты, но и с тем, что из-заожидаемого использования “виртуальной многопроцессорности” нагрузка на ядро всреднем вырастет, следовательно, возрастет и средняя потребляемая мощность.“Старые” системные платы в некоторыхслучаях могут быть совместимы с новыми CPU — но только еслиделались “с запасом”. Грубо говоря, те производители, которые делали свои платыв соответствии с рекомендациями самой Intel относительно потребляемой Pentium 4мощности, оказались в проигрыше по отношению к тем, кто немногоперестраховался.Но и это еще не все. Кроме ОС, BIOS и электроники платы, с технологиейHyper-Threading должен быть совместимеще и чипсет. Поэтому счастливыми обладателямидвух процессоров по цене одного смогут стать только те, чья системная платаоснована на одном из новых чипсетов с поддержкой 533 МГц FSB: i850E, i845E,i845PE/GE.

4.<span Times New Roman"">    

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 просто еще раз напомнила всем нам, что операционные системы,в которых мы работаем — многозадачные. И предложила способ ускорения —но не столько одного какого-то процесса самого по себе, сколько комплексавыполняемых одновременно приложений. Это интересный и достаточновостребованный подход.

еще рефераты
Еще работы по компьютерам. программированию