/>инистерствообщего и профессиональногообразованияРФКамышинскийтехнологическийинститут
ФилиалВолгоградскогогосударственноготехническогоуниверситета
Реферат
подисциплине:ОрганизацияЭВМ
IntelPentium 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 — чтоэто такое изачем он можетбыть нужен вобычных персональныхкомпьютерах?
/>
SMP иHyper-Threading
Какработает классическаяSMP(Symmetric Multi-Processor) — системас точки зренияобычной логики? Не так уж великоколичествопользователей, хорошо себепредставляющихкак работаетSMP-система, и вкаких случаяхот использованиядвух процессороввместо одногоможно ожидатьреальногоувеличениябыстродействия, а в каких — нет.
Итак, представим, что у нас есть, к примеру, двапроцессоравместо одного.Что это дает?
В общем-тоничего. Потомучто в дополнениек этому нужнаеще и операционнаясистема, умеющаязадействоватьэти два процессора.Эта системадолжна бытьпо определениюмногозадачной(иначе никакогосмысла в наличиидвух CPU простобыть не может), но кроме этого, ее ядро должноуметь распараллеливатьвычисленияна несколькоCPU. КлассическимпримероммногозадачнойОС, котораяэтого делатьне умеет, являютсявсе ОС от Microsoft, называемыеобычно длякраткости“Windows 9x” — 95, 95OSR2, 98, 98SE, Me. Онипросто-напростоне могут определитьналичие болеечем одногопроцессорав системе.
ПоддержкойSMP обладают ОСэтого же производителя, построенныена ядре NT: Windows NT 4, Windows2000, 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.
Hyper-Threading: зачем она нужна
КомпанияIntel, если внимательнопосмотреть, никогда неотличаласьабсолютнымсовершенствомсвоих продуктов, более того —вариации нате же темы отдругих производителейподчас получалисьгораздо болееинтереснымии концептуальностройными.Однако, какоказалось, абсолютно вседелать совершенными не нужно —главное чтобычип олицетворялсобой какую-тоидею, и идеяэта приходиласьочень вовремяи к месту. И еще— чтобы ее простоне было у других.
Такбыло с Pentium, когдаIntel противопоставилавесьма производительномув целочисленныхоперациях AMDAm5x86 мощный 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 просто ещераз напомнилавсем нам, чтооперационныесистемы, в которыхмы работаем— многозадачные.И предложиласпособ ускорения— но не столькоодного какого-топроцесса самогопо себе, сколькокомплексавыполняемыходновременноприложений.Это интересныйи достаточновостребованныйподход.