Bahay / Miscellaneous / Suporta para sa teknolohiya ng hyper threading. Hyper-Threading Technology mula sa Intel. Ang pagiging produktibo ay hindi sapat

Suporta para sa teknolohiya ng hyper threading. Hyper-Threading Technology mula sa Intel. Ang pagiging produktibo ay hindi sapat

Ang mga gumagamit na hindi bababa sa isang beses na nag-configure ng BIOS ay malamang na napansin na mayroong isang parameter ng Intel Hyper Threading na hindi maintindihan ng marami. Marami ang hindi nakakaalam kung ano ang teknolohiyang ito at para sa anong layunin ito ginagamit. Subukan nating alamin kung ano ang Hyper Threading at kung paano mo paganahin ang paggamit ng suportang ito. Susubukan din naming malaman kung anong mga pakinabang ang ibinibigay nito sa isang computer. setting na ito. Sa prinsipyo, walang mahirap na maunawaan dito.

Intel Hyper Threading: ano ito?
Kung hindi ka pumunta nang malalim sa gubat ng terminolohiya ng computer, ngunit ilagay ito sa simpleng wika, kung gayon teknolohiyang ito ay idinisenyo upang pataasin ang daloy ng mga command na pinoproseso nang sabay-sabay ng CPU. Ang mga modernong processor chips, bilang panuntunan, ay gumagamit lamang ng 70% ng magagamit na mga kakayahan sa pag-compute. Ang natitira ay nananatili, wika nga, sa reserba. Tulad ng para sa pagproseso ng stream ng data, sa karamihan ng mga kaso isang thread lamang ang ginagamit, sa kabila ng katotohanan na ang system ay gumagamit ng isang multi-core processor.

Mga pangunahing prinsipyo ng trabaho
Upang madagdagan ang mga kakayahan ng gitnang processor, isang espesyal na teknolohiya ng Hyper Threading ang binuo. Pinapadali ng teknolohiyang ito na hatiin ang isang command stream sa dalawa. Posible ring magdagdag ng pangalawang stream sa isang umiiral na. Tanging ang ganitong stream ay virtual at hindi gumagana sa pisikal na antas. Ang diskarte na ito ay nagbibigay-daan sa iyo upang makabuluhang taasan ang pagganap ng processor. Ang buong sistema, nang naaayon, ay nagsisimulang gumana nang mas mabilis. Ang pagtaas sa pagganap ng CPU ay maaaring magbago nang malaki. Ito ay tatalakayin nang hiwalay. Gayunpaman, ang mga nag-develop ng teknolohiya ng Hyper Threading mismo ay nag-aangkin na kulang ito sa isang ganap na core. Sa ilang mga kaso, ang paggamit ng teknolohiyang ito ay ganap na makatwiran. Kung alam mo ang kakanyahan ng mga processor ng Hyper Threading, kung gayon ang resulta ay hindi magtatagal.

Sanggunian sa kasaysayan
Sumisid tayo nang kaunti sa kasaysayan ng pag-unlad na ito. Ang suporta para sa Hyper Threading ay unang lumitaw lamang sa mga processor ng Intel Pentium 4. Nang maglaon, ang pagpapatupad ng teknolohiyang ito ay ipinagpatuloy sa serye ng Intel Core iX (X ay kumakatawan sa serye ng processor dito). Dapat pansinin na sa ilang kadahilanan ay wala ito sa linya ng Core 2 processor chips. Totoo, kung gayon ang pagtaas sa pagiging produktibo ay medyo mahina: sa isang lugar sa antas ng 15-20%. Ipinapahiwatig nito na ang processor ay walang kinakailangang kapangyarihan sa pagpoproseso, at ang teknolohiyang nilikha ay halos nauuna sa oras nito. Ngayon, ang suporta para sa teknolohiya ng Hyper Threading ay magagamit na sa halos lahat ng modernong chips. Upang mapataas ang kapangyarihan ng gitnang processor, ang proseso mismo ay gumagamit lamang ng 5% ng kristal na ibabaw, habang nag-iiwan ng puwang para sa pagproseso ng mga utos at data.

Isang tanong ng mga salungatan at pagganap
Ang lahat ng ito ay tiyak na mabuti, ngunit sa ilang mga kaso, kapag nagpoproseso ng data, maaaring may pagbagal sa trabaho. Ito ay kadalasang dahil sa tinatawag na branch prediction module at hindi sapat na laki ng cache kapag ito ay patuloy na nire-reload. Kung pinag-uusapan natin ang pangunahing module, pagkatapos ay sa kasong ito ang sitwasyon ay bubuo sa paraang sa ilang mga kaso ang unang thread ay maaaring mangailangan ng data mula sa pangalawa, na maaaring hindi maproseso sa sandaling iyon o nasa pila para sa pagproseso. Gayundin, hindi gaanong karaniwan ang mga sitwasyon kapag ang gitnang core ng processor ay may napakaseryosong pagkarga, at ang pangunahing module, sa kabila nito, ay patuloy na nagpapadala ng data dito. Ang ilang mga programa at application, tulad ng mga online na laro na masinsinan sa mapagkukunan, ay maaaring seryosong bumagal dahil lang sa kulang ang mga ito sa pag-optimize para sa paggamit ng teknolohiyang Hyper Threading. Ano ang mangyayari sa mga laro? Ang computer system ng user, sa bahagi nito, ay sumusubok na i-optimize ang mga daloy ng data mula sa application patungo sa server. Ang problema ay hindi alam ng laro kung paano independiyenteng ipamahagi ang mga stream ng data, itinatapon ang lahat sa isang bunton. Sa pangkalahatan, maaaring hindi ito idinisenyo para dito. Minsan sa mga dual-core na processor, ang pagtaas ng performance ay mas mataas kaysa sa mga 4-core. Wala lang sila sa processing power.

Paano paganahin ang Hyper Threading sa BIOS?
Nalaman na namin ang kaunti tungkol sa kung ano ang teknolohiya ng Hyper Threading at nakilala ang kasaysayan ng pag-unlad nito. Malapit na nating maunawaan kung ano ang teknolohiya ng Hyper Threading. Paano i-activate ang teknolohiyang ito para magamit sa processor? Narito ang lahat ay ginagawa nang simple. Dapat mong gamitin ang BIOS management subsystem. Ang subsystem ay ipinasok gamit ang Del, F1, F2, F3, F8, F12, F2+Del, atbp. Kung gumagamit ka ng Sony Vaio laptop, mayroon silang partikular na input kapag ginagamit ang nakalaang ASSIST key. Sa mga setting ng BIOS, kung ang processor na iyong ginagamit ay sumusuporta sa teknolohiya ng Hyper Threading, dapat mayroong isang espesyal na linya ng setting. Sa karamihan ng mga kaso, ito ay mukhang Hyper Threading Technology, at kung minsan ay parang Function. Depende sa developer ng subsystem at bersyon ng BIOS, ang setting ng parameter na ito ay maaaring isama sa alinman sa pangunahing menu o sa mga advanced na setting. Upang paganahin ang teknolohiyang ito, dapat kang pumasok sa menu ng mga opsyon at itakda ang halaga sa Pinagana. Pagkatapos nito, kailangan mong i-save ang mga pagbabagong ginawa at i-reboot ang system.

Bakit kapaki-pakinabang ang Hyper Threading?
Sa konklusyon, nais kong pag-usapan ang tungkol sa mga benepisyo na ibinibigay ng paggamit ng teknolohiya ng Hyper Threading. Para saan ang lahat ng ito? Bakit kailangang dagdagan ang lakas ng processor kapag nagpoproseso ng impormasyon? Ang mga user na nagtatrabaho sa mga resource-intensive na application at program ay hindi kailangang magpaliwanag ng anuman. Malamang na alam ng maraming tao na ang mga graphic, mathematical, design software packages ay nangangailangan ng maraming mapagkukunan ng system sa proseso ng trabaho. Dahil dito, ang buong sistema ay na-load nang labis na nagsisimula itong bumagal nang husto. Upang maiwasang mangyari ito, inirerekumenda na paganahin ang suporta sa Hyper Threading.

Maraming mga processor ng Intel ang may kasamang mga module na may Hyper support-Threading Technology, na, alinsunod sa ideya ng mga developer, ay dapat makatulong na mapataas ang pagganap ng chip at mapabilis ang PC sa kabuuan. Ano ang mga detalye ng solusyong ito mula sa isang korporasyong Amerikano? Paano mo masusulit ang Hyper-Threading?

Mga Pangunahing Kaalaman sa Teknolohiya

Tingnan natin ang mga pangunahing detalye tungkol sa Hyper-Threading. Ano ang teknolohiyang ito? Ito ay binuo ng Intel at unang ipinakilala sa publiko noong 2001. Ang layunin ng paglikha nito ay upang mapataas ang pagganap ng mga server. Ang pangunahing prinsipyo na ipinatupad sa Hyper-Threading ay ang pamamahagi ng mga kalkulasyon ng processor sa ilang mga thread. Bukod dito, posible ito kahit na isang core lamang ang naka-install sa kaukulang uri ng microcircuit (sa turn, kung mayroong 2 o higit pa sa kanila, at ang mga thread sa processor ay naipamahagi na, ang teknolohiya ay matagumpay na umaakma sa mekanismong ito).

Ang pagtiyak sa pagpapatakbo ng pangunahing PC chip sa loob ng ilang mga thread ay isinasagawa sa pamamagitan ng paglikha ng mga kopya ng mga estado ng arkitektura sa kurso ng mga kalkulasyon. Sa kasong ito, ang parehong hanay ng mga mapagkukunan sa chip ay ginagamit. Kung ang application ay gumagamit ng naaangkop na kakayahan, pagkatapos ay halos makabuluhang mga operasyon ay isinasagawa nang mas mabilis. Mahalaga rin na ang teknolohiyang pinag-uusapan ay suportado ng input / output system ng computer - ang BIOS.

Paganahin ang Hyper-Threading

Kung ang processor na naka-install sa PC ay sumusuporta sa naaangkop na pamantayan, pagkatapos ito ay karaniwang awtomatikong isinaaktibo. Ngunit sa ilang mga kaso, kailangan mong manu-manong gawin ang mga kinakailangang aksyon upang gumana ang teknolohiyang Hyper-Threading. Paano ito paganahin? Napakasimple.

Kailangan mong ipasok ang pangunahing interface ng BIOS. Upang gawin ito, sa pinakadulo simula ng boot ng computer, kailangan mong pindutin ang DEL, kung minsan - F2, F10, mas madalas - iba pang mga key, ngunit ang ninanais ay palaging lilitaw sa isa sa mga linya ng teksto na ipinapakita sa screen kaagad pagkatapos. pag-on sa PC. Sa interface ng BIOS, kailangan mong hanapin ang item na Hyper-Threading: sa mga bersyon ng I / O system na sumusuporta dito, kadalasang matatagpuan ito sa isang kilalang lugar. Kapag napili ang naaangkop na opsyon, dapat mong pindutin ang Enter at i-activate ito, na minarkahan ito bilang Pinagana. Kung nakatakda na ang mode na ito, gumagana ang Hyper-Threading Technology. Maaari mong gamitin ang lahat ng mga pakinabang nito. Pagkatapos i-activate ang teknolohiya sa mga setting, dapat mong i-save ang lahat ng mga entry sa BIOS sa pamamagitan ng pagpili sa Save at Exit Setup. Pagkatapos nito, magre-restart ang computer sa mode kapag gumagana ang processor sa suporta ng Hyper-Theading. Katulad nito, hindi pinagana ang Hyper-Threading. Upang gawin ito, pumili ng isa pang opsyon sa kaukulang item - Hindi pinagana at i-save ang mga setting.

Ang pagkakaroon ng pag-aaral kung paano paganahin ang Hyper-Threading at i-deactivate ang teknolohiyang ito, tingnan natin ang mga tampok nito.

Mga CPU na may Suporta sa Hyper Threading

Ang unang processor kung saan ipinatupad ang konsepto ng kumpanya, ayon sa ilang source, ay ang Intel Xeon MP, na kilala rin bilang Foster MP. Ang chip na ito ay katulad sa isang bilang ng mga bahagi ng arkitektura sa Pentium 4, na kalaunan ay nagpatupad din ng teknolohiyang pinag-uusapan. Kasunod nito, ang tampok na multi-threaded computing ay ipinatupad sa mga processor ng Xeon server na may core ng Prestonia.

Kung pag-uusapan natin ang kasalukuyang paglaganap ng Hyper-Threading - aling mga "pros" ang sumusuporta dito? Kabilang sa mga pinakasikat na chip ng ganitong uri ay ang mga kabilang sa mga pamilyang Core at Xeon. Mayroon ding impormasyon na ang mga katulad na algorithm ay ipinatupad sa mga processor tulad ng Itanium at Atom.

Ang pagkakaroon ng pag-aaral ng pangunahing impormasyon tungkol sa Hyper-Threading, mga processor na may suporta nito, tingnan natin ang pinaka-kahanga-hangang mga katotohanan tungkol sa kasaysayan ng pag-unlad ng teknolohiya.

Kasaysayan ng pag-unlad

Gaya ng nabanggit namin sa itaas, ipinakita ng Intel ang konseptong pinag-uusapan sa publiko noong 2001. Ngunit ang mga unang hakbang sa paglikha ng teknolohiya ay ginawa noong unang bahagi ng 90s. Napansin ng mga inhinyero ng kumpanyang Amerikano na ang mga mapagkukunan ng mga processor ng PC ay hindi ganap na ginagamit kapag nagsasagawa ng ilang mga operasyon.

Tulad ng kinalkula ng mga eksperto sa Intel, sa panahon ng pagtatrabaho ng isang user sa isang PC, ang microcircuit ay hindi aktibong ginagamit para sa mga makabuluhang agwat - halos halos lahat ng oras - ng humigit-kumulang 30%. Ang mga opinyon ng mga eksperto tungkol sa figure na ito ay ibang-iba - itinuturing ng isang tao na malinaw na minamaliit, ang iba ay ganap na sumasang-ayon sa thesis ng mga developer ng Amerika.

Gayunpaman, karamihan sa mga espesyalista sa IT ay sumang-ayon na kahit na hindi 70% ng kapasidad ng processor ay idle, ngunit isang napakalaking halaga ng mga ito.

Ang pangunahing gawain ng mga developer

Nagpasya ang Intel na iwasto ang kalagayang ito sa pamamagitan ng isang qualitatively na bagong diskarte upang matiyak ang kahusayan ng mga pangunahing PC chips. Iminungkahi na lumikha ng isang teknolohiya na makakatulong sa isang mas aktibong paggamit ng mga kakayahan ng mga processor. Noong 1996, sinimulan ng mga espesyalista ng Intel ang praktikal na pag-unlad nito.

Ayon sa konsepto ng isang Amerikanong korporasyon, ang processor, na nagpoproseso ng data mula sa isang programa, ay maaaring magdirekta ng mga idle na mapagkukunan upang gumana sa isa pang application (o isang bahagi ng kasalukuyang isa, ngunit may ibang istraktura at nangangailangan ng paggamit ng mga karagdagang mapagkukunan). Ipinapalagay din ng kaukulang algorithm ang epektibong pakikipag-ugnayan sa iba pang bahagi ng hardware ng PC - RAM, chipset, at mga programa.

Nagawa ng Intel na lutasin ang problema. Sa una, ang teknolohiya ay tinawag na Willamette. Noong 1999, ipinakilala ito sa arkitektura ng ilang mga processor, at nagsimula ang pagsubok nito. Sa lalong madaling panahon natanggap ng teknolohiya ang modernong pangalan nito - Hyper-Threading. Mahirap sabihin kung ano talaga iyon - isang simpleng rebranding o pangunahing mga pagsasaayos sa platform. Alam na namin ang karagdagang mga katotohanan tungkol sa hitsura ng teknolohiya sa publiko at ang pagpapatupad nito sa iba't ibang mga modelo ng mga processor ng Intel. Kabilang sa mga development name na karaniwan ngayon ay Hyper-Threading Technology.

Mga aspeto ng pagiging tugma sa teknolohiya

Gaano kahusay ang suporta para sa teknolohiyang Hyper-Threading na ipinatupad sa mga operating system? Mapapansin na kung moderno ang pag-uusapan Mga bersyon ng Windows, pagkatapos ay walang magiging mga problema para sa gumagamit upang ganap na magamit ang mga benepisyo ng Intel Hyper-Threading Technology. Siyempre, napakahalaga din na ang I / O system ay sumusuporta sa teknolohiya - napag-usapan natin ito sa itaas.

Mga kadahilanan ng software at hardware

Tungkol sa mga mas lumang bersyon ng OS - Windows 98, NT at ang medyo luma na XP, isang kinakailangang kondisyon para sa pagiging tugma sa Hyper-Threading ay ACPI support. Kung hindi ito ipinatupad sa OS, hindi lahat ng computational flow na nabuo ng kaukulang mga module ay makikilala ng computer. Tandaan na ang Windows XP sa kabuuan ay tinitiyak ang paggamit ng mga pakinabang ng teknolohiyang pinag-uusapan. Lubhang kanais-nais din na ang mga multithreading algorithm ay ipatupad sa mga application na ginagamit ng may-ari ng PC.

Minsan maaaring kailanganin mo ang isang PC - kung nag-i-install ka ng mga processor na may suporta sa Hyper-Threading sa halip na ang mga orihinal na nakalagay dito at hindi tugma sa teknolohiya. Gayunpaman, tulad ng sa kaso ng mga operating system, walang partikular na problema kung ang gumagamit ay may modernong PC o hindi bababa sa kaukulang mga bahagi ng hardware sa unang mga processor ng Hyper Threading, tulad ng nabanggit namin sa itaas, ipinatupad sa Core line, at inangkop para dito ang mga chipset sa motherboard ay ganap na sumusuporta sa kaukulang mga function ng chip.

Pamantayan sa Pagpapabilis

Kung ang computer sa antas ng mga bahagi ng hardware at software ay hindi tugma sa Hyper-Threading, kung gayon ang teknolohiyang ito, sa teorya, ay maaari pang pabagalin ang trabaho nito. Ang kalagayang ito ay humantong sa ilang mga propesyonal sa IT na pagdudahan ang mga prospect ng solusyon mula sa Intel. Napagpasyahan nila na hindi ito isang teknolohikal na paglukso, ngunit isang hakbang sa marketing na sumasailalim sa konsepto ng Hyper Threading, na, dahil sa arkitektura nito, ay hindi kayang pabilisin nang malaki ang PC. Ngunit ang mga pagdududa ng mga kritiko ay mabilis na napawi ng mga inhinyero ng Intel.

Kaya, ang mga pangunahing kondisyon para sa matagumpay na paggamit ng teknolohiya:

Suporta para sa Hyper-Threading ng I / O system;

Ang pagiging tugma ng motherboard sa processor ng kaukulang uri;

Ang suporta ng isang teknolohiya ng operating system at ang partikular na application na tumatakbo dito.

Kung hindi dapat magkaroon ng anumang partikular na problema sa unang dalawang punto, kung gayon sa mga tuntunin ng pagiging tugma ng mga program na may Hyper-Threading, maaaring mayroon pa ring ilang mga overlay. Ngunit mapapansin na kung ang isang application ay sumusuporta, halimbawa, gumagana sa dual-core processors, pagkatapos ito ay magkatugma, halos garantisadong, sa teknolohiya mula sa Intel.

Hindi bababa sa may mga pag-aaral na nagkukumpirma ng pagtaas sa pagganap ng mga programa na inangkop sa dual-core microcircuits ng humigit-kumulang 15-18% kung gumagana ang mga Intel Hyper Threading modules sa processor. Alam na namin kung paano i-disable ang mga ito (kung sakaling may mga pagdududa ang user tungkol sa advisability ng paggamit ng teknolohiya). Ngunit marahil ay napakakaunting mga nakikitang dahilan para sa kanilang hitsura.

Praktikal na Kapaki-pakinabang ng Hyper-Threading

Ang teknolohiyang pinag-uusapan ay nakagawa ng isang nasasalat na epekto sa Intel? Mayroong iba't ibang mga opinyon sa bagay na ito. Ngunit napansin ng maraming tao na ang teknolohiya ng Hyper-Threading ay naging napakapopular na ang solusyon na ito ay naging kailangang-kailangan para sa maraming mga tagagawa ng mga sistema ng server, at positibo rin itong natanggap ng mga ordinaryong gumagamit ng PC.

Pagproseso ng data ng hardware

Ang pangunahing bentahe ng teknolohiya ay ipinatupad ito sa isang format ng hardware. Iyon ay, ang pangunahing bahagi ng mga kalkulasyon ay isasagawa sa loob ng processor sa mga espesyal na module, at hindi sa anyo ng mga algorithm ng software na ipinadala sa antas ng pangunahing core ng microcircuit - na magpahiwatig ng pagbaba sa pangkalahatang pagganap ng PC. Sa pangkalahatan, ayon sa mga eksperto sa IT, nagawa ng mga inhinyero ng Intel na lutasin ang problema na natukoy nila sa simula ng pag-unlad ng teknolohiya - upang gawing mas mahusay ang processor. Sa katunayan, tulad ng ipinakita ng mga pagsubok, kapag nilulutas ang maraming mga gawain na halos makabuluhan para sa gumagamit, ang paggamit ng Hyper-Threading ay naging posible upang makabuluhang mapabilis ang gawain.

Mapapansin na sa 4 na mga microcircuit na nilagyan ng mga module ng suporta para sa teknolohiyang isinasaalang-alang ay gumana nang mas mahusay kaysa sa mga unang pagbabago. Ito ay higit na ipinahayag sa kakayahan ng PC na gumana sa real multitasking mode - kapag maraming iba't ibang uri ng Mga aplikasyon sa Windows, at lubos na hindi kanais-nais na, dahil sa tumaas na pagkonsumo ng mga mapagkukunan ng system ng isa sa mga ito, ang bilis ng iba ay bababa.

Sabay-sabay na solusyon ng iba't ibang gawain

Kaya, ang mga processor na may suporta para sa Hyper-Threading ay mas mahusay na inangkop kaysa sa mga microcircuits na hindi tugma dito, upang sabay na ilunsad, halimbawa, isang browser, maglaro ng musika, at magtrabaho kasama ang mga dokumento. Siyempre, ang lahat ng mga pakinabang na ito ay nararamdaman ng gumagamit sa pagsasanay lamang kung ang mga bahagi ng software at hardware ng PC ay sapat na katugma sa mode na ito ng operasyon.

Katulad na mga pag-unlad

Ang Hyper-Threading ay hindi lamang ang teknolohiyang idinisenyo upang mapabuti ang pagganap ng PC sa pamamagitan ng multi-threaded computing. Mayroon siyang mga analogue.

Halimbawa, sinusuportahan din ng mga processor ng POWER5 na inilabas ng IBM ang multithreading. Iyon ay, ang bawat isa (sa kabuuan, 2 kaukulang elemento ang naka-install dito) ay maaaring magsagawa ng mga gawain sa loob ng 2 mga thread. Kaya, ang microcircuit ay nagpoproseso ng 4 na stream ng mga kalkulasyon nang sabay-sabay.

Ang AMD ay mayroon ding mahusay na gawain sa larangan ng mga konsepto ng multithreading. Kaya, alam na ang arkitektura ng Bulldozer ay gumagamit ng mga algorithm na katulad ng Hyper-Threading. Ang isang tampok ng solusyon ng AMD ay ang bawat isa sa mga thread ay nagpoproseso ng hiwalay na mga bloke ng processor. Kapag ang pangalawang antas ay nananatiling karaniwan. Ang mga katulad na konsepto ay ipinatupad sa arkitektura ng Bobcat na binuo ng AMD, na inangkop para sa mga laptop at maliliit na PC.

Siyempre, ang mga direktang analogue ng konsepto mula sa AMD, IBM at Intel ay maaaring ituring na napaka kondisyon. Pati na rin ang mga diskarte sa pagdidisenyo ng arkitektura ng mga processor sa pangkalahatan. Ngunit ang mga prinsipyo na ipinatupad sa kani-kanilang mga teknolohiya ay maaaring ituring na medyo magkatulad, at ang mga layunin na itinakda ng mga developer sa mga tuntunin ng pagpapabuti ng kahusayan ng paggana ng mga microcircuits ay napakalapit sa kakanyahan, kung hindi magkapareho.

Ito ang mga pangunahing katotohanan tungkol sa pinakakawili-wiling teknolohiya mula sa Intel. Ano ito, kung paano paganahin ang Hyper-Threading o, sa kabaligtaran, i-deactivate ito, natukoy namin. Ang punto ay marahil sa praktikal na paggamit ng mga pakinabang nito, na maaaring magamit sa pamamagitan ng pagtiyak na ang PC sa mga bahagi ng hardware at software ay sumusuporta sa teknolohiya.

Hyper Threading (hyper threading, 'hyper threading', hyper threading - rus.) - isang teknolohiyang binuo ng kumpanya Intel, na nagpapahintulot sa core ng processor na magsagawa ng higit pang mga stream ng data kaysa sa isa (karaniwan ay dalawa). Dahil ito ay natagpuan na ang isang maginoo processor sa karamihan ng mga gawain ay gumagamit ng hindi hihigit sa 70% sa lahat ng kapangyarihan sa pag-compute, napagpasyahan na gumamit ng isang teknolohiya na nagpapahintulot, kapag ang ilang mga yunit ng pag-compute ay idle, na i-load ang mga ito ng trabaho sa isa pang thread. Ito ay nagbibigay-daan sa iyo upang mapataas ang pagganap ng kernel mula 10 hanggang 80% depende sa gawain.

Tingnan kung paano gumagana ang Hyper-Threading .

Ipagpalagay na ang processor ay nagsasagawa ng mga simpleng kalkulasyon at sa parehong oras ang isang bloke ng mga tagubilin ay idle at SIMD mga extension.

Nakikita ito ng module ng addressing at nagpapadala ng data doon para sa karagdagang pagkalkula. Kung ang data ay partikular, ang mga bloke na ito ay isasagawa ang mga ito nang mas mabagal, ngunit ang data ay hindi magiging idle. O paunang ipoproseso nila ang mga ito, para sa karagdagang mabilis na pagproseso ng naaangkop na bloke. Nagbibigay ito ng karagdagang pakinabang sa pagganap.

Naturally, ang virtual na thread ay hindi maabot ang ganap na core, ngunit ito ay nagbibigay-daan sa iyo upang makamit ang halos 100% kahusayan ng computing power, nilo-load ang halos buong processor na may trabaho, hindi hinahayaan itong idle. Sa lahat ng ito, upang ipatupad ang teknolohiya ng HT lamang approx. 5% karagdagang die space, at kung minsan ang pagganap ay maaaring idagdag sa 50% . Kasama sa karagdagang lugar na ito ang mga karagdagang bloke ng mga rehistro at hula ng sangay, na kinakalkula ng stream kung saan maaaring gamitin ang kapangyarihan ng pag-compute sa isang partikular na sandali at magpadala ng data mula sa karagdagang block ng address doon.

Sa unang pagkakataon, lumitaw ang teknolohiya sa mga processor Pentium 4, ngunit walang malaking pagtaas sa pagganap, dahil ang processor mismo ay walang mataas na kapangyarihan sa pag-compute. Ang paglago ay sa pinakamahusay 15-20% , at sa maraming gawain ang processor ay gumana nang mas mabagal kaysa wala HT.

Magdahan-dahan processor dahil sa teknolohiya Hyper Threading, mangyayari kung:

  • Hindi sapat ang cache para sa lahat ng ibinigay at ito ay nag-reboot nang paikot, nagpapabagal sa processor.
  • Ang data ay hindi maproseso ng tama ng branch predictor. Nangyayari pangunahin dahil sa kakulangan ng pag-optimize para sa partikular na software o suporta mula sa operating system.
  • Maaari rin itong mangyari dahil sa data dependencies, kapag, halimbawa, ang unang thread ay nangangailangan ng agarang data mula sa pangalawa, ngunit hindi pa sila handa, o naghihintay sa linya para sa isa pang thread. O kailangan ng cyclic data ng ilang partikular na block para sa mabilis na pagproseso, at nilo-load ang mga ito ng iba pang data. Maaaring mayroong maraming mga pagkakaiba-iba ng pag-asa sa data.
  • Kung ang core ay marami nang na-load, at ang "hindi sapat na matalino" na module ng hula sa sangay ay nagpapadala pa rin ng data na nagpapabagal sa processor (may kaugnayan para sa Pentium 4).

Pagkatapos Pentium 4, Intel nagsimulang gumamit ng teknolohiya mula lamang sa Core i7 unang henerasyon, nilaktawan ang serye 2 .

Ang lakas ng pagpoproseso ng mga processor ay naging sapat para sa buong pagpapatupad ng hyperthreading nang walang labis na pinsala, kahit na para sa mga hindi na-optimize na aplikasyon. mamaya, Hyper Threading lumitaw sa mga processor ng middle class at maging ang budget at portable. Ginamit sa lahat ng serye core i (i3; i5; i7) at sa mga mobile processor atom(hindi talaga). Kapansin-pansin, ang mga dual-core na processor na may HT, makatanggap ng mas malaking pakinabang sa pagganap kaysa sa quad-core mula sa paggamit Hyper Threading, nakatayo sa 75% ganap na apat na nuklear.

Saan kapaki-pakinabang ang HyperThreading?

Ito ay magiging kapaki-pakinabang para sa paggamit kasabay ng mga propesyonal, graphic, analytical, mathematical at siyentipikong mga programa, mga editor ng video at audio, mga archiver ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas &etc). Lahat ng mga programa na gumagamit ng maraming kalkulasyon, HT tiyak na magiging kapaki-pakinabang. Sa kabutihang palad, sa 90% kaso, ang mga naturang programa ay mahusay na na-optimize para sa paggamit nito.

hyperthreading kailangang-kailangan para sa mga sistema ng server. Sa totoo lang para sa angkop na lugar na ito ay bahagyang binuo. Salamat kay HT, maaari mong makabuluhang taasan ang return sa processor kapag mayroong isang malaking bilang ng mga gawain. Ang bawat thread ay ia-unload ng kalahati, na may kapaki-pakinabang na epekto sa pagtugon sa data at hula ng sangay.

marami mga laro sa Kompyuter , ay negatibong nauugnay sa presensya Hyper Threading, na binabawasan ang bilang ng mga frame sa bawat segundo. Ito ay dahil sa kakulangan ng pag-optimize para sa Hyper Threading mula sa gilid ng laro. Ang isang pag-optimize sa bahagi ng operating system ay hindi palaging sapat, lalo na kapag nagtatrabaho sa hindi pangkaraniwang, heterogenous at kumplikadong data.

Sa mga motherboard na sumusuporta HT, maaari mong palaging hindi paganahin ang teknolohiya ng hyperthreading.

Enero 20, 2015 sa 07:43 pm

Higit pa tungkol sa Hyper-Threading

  • pagsubok sa mga IT system,
  • Programming

May panahon kung kailan kinakailangan upang suriin ang pagganap ng memorya sa konteksto ng teknolohiya ng Hyper-threading. Nakarating kami sa konklusyon na ang impluwensya nito ay hindi palaging positibo. Nang lumitaw ang dami ng libreng oras, nagkaroon ng pagnanais na ipagpatuloy ang pagsasaliksik at isaalang-alang ang mga patuloy na proseso na may katumpakan ng mga cycle at bits ng makina, gamit ang software sariling pag-unlad.

Sinaliksik na Platform

Ang object ng mga eksperimento - Laptop ng ASUS N750JK na may Intel Core i7-4700HQ processor. Ang bilis ng orasan ay 2.4GHz, pinalakas ng Intel Turbo Boost mode hanggang 3.4GHz. 16 gigabytes ang naka-install random access memory DDR3-1600 (PC3-12800) na gumagana sa dual-channel mode. Operating system - Microsoft Windows 8.1 64 bits.

Fig.1 Configuration ng pinag-aralan na platform.

Ang processor ng platform na pinag-aaralan ay naglalaman ng 4 na core, na, kapag pinagana ang teknolohiya ng Hyper-Threading, ay nagbibigay ng suporta sa hardware para sa 8 thread o logical na processor. Ipinapasa ng platform firmware ang impormasyong ito sa operating system sa pamamagitan ng MADT (Multiple APIC Description Table) ACPI table. Dahil ang platform ay naglalaman lamang ng isang RAM controller, walang SRAT (System Resource Affinity Table) na nagdedeklara ng kalapitan ng mga core ng processor sa mga memory controller. Malinaw, ang laptop na pinag-uusapan ay hindi isang platform ng NUMA, ngunit operating system, para sa mga layunin ng pag-iisa, isinasaalang-alang ito bilang isang NUMA system na may isang domain, gaya ng ipinahiwatig ng linyang NUMA Nodes = 1. Ang katotohanan na mahalaga para sa aming mga eksperimento ay ang unang antas ng data cache ay may sukat na 32 kilobytes para sa bawat isa sa apat na core. Dalawang lohikal na processor na nagbabahagi ng parehong core ay nagbabahagi ng L1 at L2 na mga cache.

Inimbestigahan ang operasyon

Sisiyasatin namin ang pagdepende ng bilis ng pagbasa ng data block sa laki nito. Upang gawin ito, pipiliin namin ang pinaka produktibong pamamaraan, ibig sabihin, ang pagbabasa ng 256-bit na mga operand gamit ang pagtuturo ng VMOVAPD AVX. Sa mga chart, ipinapakita ng X-axis ang laki ng block, at ang Y-axis ay nagpapakita ng bilis ng pagbabasa. Sa paligid ng point X, na tumutugma sa laki ng L1 cache, inaasahan naming makakita ng inflection point, dahil dapat bumaba ang performance pagkatapos maalis sa cache ang block na pinoproseso. Sa aming pagsubok, sa kaso ng multithreading, gumagana ang bawat isa sa 16 na sinimulang thread sa isang hiwalay na hanay ng address. Upang kontrolin ang teknolohiya ng Hyper-Threading sa loob ng isang application, ginagamit ng bawat thread ang function na SetThreadAffinityMask API, na nagtatakda ng mask kung saan ang bawat lohikal na processor ay tumutugma sa isang bit. Ang isang solong halaga ng bit ay nagpapahintulot sa paggamit ng tinukoy na processor ng tinukoy na thread, isang zero na halaga ang nagbabawal dito. Para sa 8 lohikal na processor ng pinag-aralan na platform, ang mask 11111111b ay nagbibigay-daan sa paggamit ng lahat ng mga processor (Hyper-Threading enabled), ang mask 01010101b ay nagbibigay-daan sa paggamit ng isang logical processor sa bawat core (Hyper-Threading disabled).

Ang mga sumusunod na pagdadaglat ay ginagamit sa mga graph:

MBPS (Megabytes bawat Segundo)harangan ang bilis ng pagbasa sa megabytes bawat segundo;

CPI (Mga Orasan bawat Tagubilin)bilang ng mga cycle sa bawat pagtuturo;

TSC (Time Stamp Counter)counter ng ikot ng processor.

Tandaan: Ang bilis ng orasan ng TSC register ay maaaring hindi tumugma sa bilis ng orasan ng processor kapag tumatakbo sa Turbo Boost mode. Dapat itong isaalang-alang kapag binibigyang kahulugan ang mga resulta.

Sa kanang bahagi ng mga graph, makikita ang isang hexadecimal dump ng mga tagubilin na bumubuo sa katawan ng cycle ng target na operasyon na isinagawa sa bawat thread ng program, o ang unang 128 byte ng code na ito.

Karanasan bilang 1. Isang thread



Fig.2 Nagbabasa sa isang thread

Ang maximum na bilis ay 213563 megabytes bawat segundo. Ang inflection point ay nangyayari sa isang block size na humigit-kumulang 32 kilobytes.

Karanasan bilang 2. 16 na thread sa 4 na processor, hindi pinagana ang Hyper-Threading



Fig.3 Pagbasa sa labing-anim na mga thread. Ang bilang ng mga lohikal na processor na ginamit ay apat

Ang hyper-threading ay hindi pinagana. Ang maximum na bilis ay 797598 megabytes bawat segundo. Ang inflection point ay nangyayari sa isang block size na humigit-kumulang 32 kilobytes. Tulad ng inaasahan, kumpara sa pagbabasa na may isang solong thread, ang bilis ay tumaas ng halos 4 na beses, sa mga tuntunin ng bilang ng mga gumaganang core.

Karanasan bilang 3. 16 na thread sa 8 processor, pinagana ang Hyper-Threading



Fig.4 Pagbasa sa labing-anim na mga thread. Ang bilang ng mga lohikal na processor na ginamit ay walo

Pinagana ang hyper-threading. Ang maximum na bilis ng 800722 megabytes bawat segundo, bilang isang resulta ng pagsasama ng Hyper-Threading, halos hindi tumaas. Ang malaking minus ay ang inflection point ay nangyayari sa isang block size na humigit-kumulang 16 kilobytes. Ang pagpapagana ng Hyper-Threading ay bahagyang tumaas sa maximum na bilis, ngunit ngayon ang bilis ng pagbaba ay nangyayari sa kalahati ng laki ng bloke - mga 16 kilobytes, kaya ang average na bilis ay bumaba nang malaki. Ito ay hindi nakakagulat, ang bawat core ay may sariling L1 cache, habang ang mga lohikal na processor sa parehong core ay nagbabahagi nito.

mga konklusyon

Ang inimbestigahang operasyon ay nasusukat nang maayos sa isang multi-core na processor. Ang mga dahilan ay ang bawat isa sa mga core ay naglalaman ng sarili nitong cache memory ng una at pangalawang antas, ang laki ng target block ay maihahambing sa laki ng cache memory, at ang bawat isa sa mga thread ay gumagana sa sarili nitong hanay ng mga address. Para sa mga layuning pang-akademiko, gumawa kami ng mga ganitong kundisyon sa isang synthetic na pagsubok, na napagtatanto na ang mga tunay na aplikasyon ay karaniwang malayo sa perpektong pag-optimize. Ngunit ang pagsasama ng Hyper-Threading, kahit na sa ilalim ng mga kundisyong ito, ay may negatibong epekto, na may bahagyang pagtaas sa peak speed, mayroong isang makabuluhang pagkawala sa bilis ng pagproseso ng mga bloke, ang laki nito ay nasa saklaw mula 16 hanggang 32 kilobytes.

Isinulat namin na ang paggamit ng mga single-processor Xeon system ay walang saysay, dahil sa mas mataas na presyo ang kanilang pagganap ay kapareho ng sa isang Pentium 4 ng parehong dalas. Ngayon, pagkatapos ng mas malapit na pagsusuri, ang pahayag na ito ay malamang na kailangang baguhin nang bahagya. Ang teknolohiyang Hyper-Threading na ipinatupad sa Intel Xeon na may core ng Prestonia ay talagang gumagana at nagbibigay ng isang tiyak na epekto. Bagama't mayroon ding maraming mga katanungan kapag ginagamit ito ...

Magbigay ng performance

"Mas mabilis, mas mabilis ...". Ang karera para sa pagganap ay nagpapatuloy sa loob ng maraming taon, at kung minsan ay mahirap sabihin kung alin sa mga bahagi ng computer ang bumibilis nang mas mabilis. Para dito, parami nang parami ang mga bagong paraan na naiimbento, at higit pa, mas maraming skilled labor at de-kalidad na utak ang namumuhunan sa mala-avalanche na prosesong ito.

Ang patuloy na pagtaas sa pagganap ay, siyempre, kailangan. Sa pinakakaunti, ito ay isang kumikitang negosyo, at palaging may magandang paraan para hikayatin ang mga user na i-upgrade ang "super-performing na CPU" kahapon sa "mas marami pang super..." bukas. Halimbawa, ang sabay-sabay na speech recognition at sabay-sabay na pagsasalin sa ibang wika - hindi ba ito ang pangarap ng lahat? O hindi pangkaraniwang makatotohanang mga laro na halos "cine" ang kalidad (ganap na sumisipsip ng pansin at kung minsan ay humahantong sa mga seryosong pagbabago sa psyche) - hindi ba ito ang pagnanais ng maraming mga manlalaro, bata at matanda?

Ngunit iwanan natin ang mga aspeto ng marketing sa kasong ito, na tumututok sa mga teknikal. Bukod dito, hindi lahat ay sobrang madilim: may mga kagyat na gawain (mga application ng server, mga kalkulasyon ng siyentipiko, pagmomodelo, atbp.), Kung saan ang lahat ay higit pa mataas na pagganap, sa partikular na mga central processing unit, ay talagang kailangan.

Kaya, ano ang mga paraan upang mapataas ang kanilang pagganap?

Pagpapalakas ng orasan. Maaaring higit pang "manipis" teknolohikal na proseso at dagdagan ang dalas. Ngunit, tulad ng alam mo, hindi ito madali at puno ng lahat ng uri ng mga side effect, tulad ng mga problema sa pag-aalis ng init.

Pagdaragdag ng mga mapagkukunan ng processor- halimbawa, pagtaas ng dami ng cache, pagdaragdag ng mga bagong bloke (Mga Yunit ng Pagpapatupad). Ang lahat ng ito ay nangangailangan ng pagtaas sa bilang ng mga transistor, ang pagiging kumplikado ng processor, isang pagtaas sa lugar ng kristal, at, dahil dito, sa gastos.

Bilang karagdagan, ang nakaraang dalawang pamamaraan ay nagbibigay, bilang isang patakaran, sa anumang paraan ay hindi isang linear na pagtaas sa produktibo. Kilala ito sa halimbawa ng Pentium 4: ang mga error sa hula sa sangay at mga pagkagambala ay nagdudulot ng pag-reset ng mahabang pipeline, na lubos na nakakaapekto sa pangkalahatang pagganap.

multiprocessing. Ang pag-install ng maramihang mga CPU at pamamahagi ng trabaho sa pagitan ng mga ito ay kadalasang medyo mahusay. Ngunit ang diskarte na ito ay hindi masyadong mura - ang bawat karagdagang processor ay nagdaragdag sa gastos ng system, at ang isang dual motherboard ay mas mahal kaysa sa isang regular (hindi banggitin ang mga motherboard na may suporta para sa apat o higit pang mga CPU). Bilang karagdagan, hindi lahat ng application ay nakikinabang mula sa sapat na multiprocessing upang bigyang-katwiran ang gastos.

Bilang karagdagan sa "purong" multiprocessing, mayroong ilang "intermediate" na opsyon na nagbibigay-daan sa iyong pabilisin ang pagpapatupad ng application:

Chip Multiprocessing (CMP)- dalawang core ng processor ang pisikal na matatagpuan sa parehong chip, gamit ang isang karaniwan o hiwalay na cache. Naturally, ang laki ng kristal ay lumalabas na medyo malaki, at hindi ito makakaapekto sa gastos. Tandaan na ang ilan sa mga "dalawang" CPU na ito ay maaari ding gumana sa isang multiprocessor system.

Time Slice Multithreading. Ang processor ay lumilipat sa pagitan ng mga thread ng programa sa mga nakapirming agwat. Ang overhead ay maaaring minsan ay medyo mabigat, lalo na kung may naghihintay na proseso.

Switch-on-Event Multithreading. Paglilipat ng gawain kapag naganap ang mahahabang pag-pause, gaya ng "cache misses" (cache misses), ang malaking bilang nito ay karaniwan para sa mga application ng server. Sa kasong ito, ang isang proseso na naghihintay na mag-load ng data mula sa medyo mabagal na memorya sa cache ay sinuspinde, na nagpapalaya sa mga mapagkukunan ng CPU para sa iba pang mga proseso. Gayunpaman, ang Switch-on-Event Multithreading, tulad ng Time-Slice Multithreading, ay hindi palaging nakakamit ng pinakamainam na paggamit ng mga mapagkukunan ng processor, lalo na dahil sa mga error sa hula ng sangay, mga dependency sa pagtuturo, atbp.

Sabay-sabay na Multithreading. Sa kasong ito, ang mga thread ng programa ay isinasagawa sa parehong processor "sabay-sabay", ibig sabihin, nang hindi lumilipat sa pagitan nila. Ang mga mapagkukunan ng CPU ay dynamic na ipinamamahagi, ayon sa prinsipyong "kung hindi mo ito gagamitin, ibigay ito sa iba." Ang diskarte na ito ang pinagbabatayan Mga teknolohiya ng Intel Hyper-Threading, kung saan tayo ngayon ay bumaling.

Paano Gumagana ang Hyper-Threading

Tulad ng alam mo, ang kasalukuyang "computing paradigm" ay nagsasangkot multithreaded computing. Nalalapat ito hindi lamang sa mga server, kung saan umiiral ang gayong konsepto sa simula, kundi pati na rin sa mga workstation at desktop system. Ang mga thread ay maaaring kabilang sa pareho o magkakaibang mga application, ngunit halos palaging mayroong higit sa isang aktibong thread (upang makita ito, sapat na upang buksan ang Task Manager sa Windows 2000/XP at i-on ang pagpapakita ng bilang ng mga thread). Kasabay nito, ang isang maginoo na processor ay maaari lamang magsagawa ng isa sa mga thread sa isang pagkakataon at napipilitang patuloy na lumipat sa pagitan ng mga ito.

Sa kauna-unahang pagkakataon, ipinatupad ang teknolohiyang Hyper-Threading sa processor ng Intel Xeon MP (Foster MP), kung saan ito "tumatakbo". Alalahanin na ang Xeon MP, na opisyal na ipinakita sa IDF Spring 2002, ay gumagamit ng Pentium 4 Willamette core, naglalaman ng 256 KB L2 cache at 512 KB/1 MB L3 cache, at sumusuporta sa 4-processor configurations. Ang suporta sa Hyper-Threading ay naroroon din sa processor ng Intel Xeon para sa mga workstation (Prestonia core, 512 KB L2 cache), na mas maagang pumasok sa merkado kaysa sa Xeon MP. Ang aming mga mambabasa ay pamilyar na sa mga configuration ng dual-processor sa Intel Xeon, kaya isasaalang-alang namin ang mga posibilidad ng Hyper-Threading gamit ang mga CPU na ito bilang isang halimbawa - parehong theoretically at praktikal. Magkagayunman, ang "simple" na Xeon ay mas pangmundo at natutunaw kaysa sa Xeon MP sa 4-processor system...

Ang prinsipyo ng pagpapatakbo ng Hyper-Threading ay batay sa katotohanan na sa anumang oras na bahagi lamang ng mga mapagkukunan ng processor ang ginagamit kapag nagpapatupad ng code ng programa. Ang mga hindi nagamit na mapagkukunan ay maaari ding i-load ng trabaho - halimbawa, isa pang application (o isa pang thread ng parehong application) ay maaaring gamitin para sa parallel execution. Sa isang pisikal na processor ng Intel Xeon, dalawang lohikal na processor (LP - Logical Processor) ang nabuo, na nagbabahagi ng mga mapagkukunan ng computing ng CPU. Ang operating system at mga application ay "nakikita" ng eksaktong dalawang CPU at maaaring ipamahagi ang trabaho sa pagitan ng mga ito, tulad ng sa kaso ng isang ganap na dalawang-processor system.

Ang isa sa mga layunin ng pagpapatupad ng Hyper-Threading ay payagan lamang ang isang aktibong thread na tumakbo sa parehong bilis tulad ng sa isang normal na CPU. Upang gawin ito, ang processor ay may dalawang pangunahing mga mode ng operasyon: Single-Task (ST) at Multi-Task (MT). Sa ST mode, isang lohikal na processor lamang ang aktibo at gumagamit ng mga magagamit na mapagkukunan na hindi nahahati (ST0 at ST1 mode); ang ibang LP ay pinahinto ng HALT command. Kapag lumitaw ang pangalawang thread ng programa, ang idle logical na processor ay isinaaktibo (sa pamamagitan ng isang interrupt) at ang pisikal na CPU ay inilalagay sa MT mode. Ang paghinto ng mga hindi nagamit na LP gamit ang HALT command ay responsibilidad ng operating system, na sa huli ay responsable para sa parehong mabilis na pagpapatupad ng isang thread tulad ng sa kaso na walang Hyper-Threading.

Para sa bawat isa sa dalawang LP, ang tinatawag na Architecture State (AS) ay naka-imbak, na kinabibilangan ng estado ng mga rehistro ng iba't ibang uri - pangkalahatang layunin, kontrol, APIC at serbisyo. Ang bawat LP ay may sariling APIC (interrupt controller) at isang hanay ng mga rehistro, para sa tamang trabaho kung saan ipinakilala ang konsepto ng Register Alias ​​​​Table (RAT), na sumusubaybay sa mga sulat sa pagitan ng walong IA-32 na pangkalahatang layunin na rehistro at 128 pisikal na mga rehistro ng CPU (isang RAT para sa bawat LP ).

Kapag nagpapatakbo ng dalawang thread, dalawang katumbas na hanay ng Mga Susunod na Instruction Pointer ang sinusuportahan. Karamihan sa mga tagubilin ay kinuha mula sa Trace Cache (TC), kung saan naka-imbak ang mga ito sa decoded form, at ang dalawang aktibong LP ay nag-a-access sa TC, bawat orasan. Kasabay nito, kapag isang LP lang ang aktibo, nakakakuha ito ng eksklusibong pag-access sa TC nang walang interleaving sa mga orasan. Katulad nito, ang pag-access sa Microcode ROM ay nangyayari. Ang mga bloke ng ITLB (Instruction Translation Look-aside Buffer), na isinaaktibo sa kawalan ng mga kinakailangang tagubilin sa cache ng pagtuturo, ay nadoble at naghahatid ng mga tagubilin sa bawat isa para sa kanilang sariling thread. Ang IA-32 Instruction Decode instruction decoding block ay ibinabahagi at, sa kaso kung kailan kailangan ng instruction decoding para sa parehong stream, isa-isa itong nagsisilbi sa kanila (muli, bawat cycle). Ang mga bloke ng Uop Queue at Allocator ay nahahati sa dalawa, na may kalahati ng mga elemento na inilalaan para sa bawat LP. Ang mga scheduler ng 5 piraso ay nagpoproseso ng mga pila ng mga naka-decode na utos (Uops) sa kabila ng pag-aari ng LP0 / LP1 at direktang mga utos na isasagawa ng kinakailangang Mga Yunit ng Pagpapatupad - depende sa kahandaan para sa pagpapatupad ng una at ang pagkakaroon ng pangalawa. Ang mga cache ng lahat ng antas (L1/L2 para sa Xeon, pati na rin ang L3 para sa Xeon MP) ay ganap na ibinabahagi sa pagitan ng dalawang LP, gayunpaman, upang matiyak ang integridad ng data, ang mga entry sa DTLB (Data Translation Look-aside Buffer) ay ibinibigay kasama ng mga deskriptor sa anyo ng mga lohikal na processor ID.

Kaya, ang mga tagubilin ng parehong lohikal na mga CPU ay maaaring isagawa nang sabay-sabay sa mga mapagkukunan ng isang pisikal na processor, na nahahati sa apat na klase:

  • nadoble (Duplicated);
  • ganap na ibinahagi (Fully Shared);
  • na may mga deskriptor ng mga elemento (Entry Tagged);
  • dynamic na hinati (Partitioned) depende sa mode ng operasyon ng ST0/ST1 o MT.

Gayunpaman, ang karamihan sa mga application na napapabilis sa mga multiprocessor system ay maaari ding mapabilis sa isang CPU na pinagana ang Hyper-Threading nang walang anumang pagbabago. Ngunit mayroon ding mga problema: halimbawa, kung ang isang proseso ay nasa waiting loop, maaari nitong kunin ang lahat ng mga mapagkukunan ng pisikal na CPU, na pumipigil sa pangalawang LP na gumana. Kaya, ang pagganap kapag gumagamit ng Hyper-Threading ay maaaring minsan ay bumaba (hanggang 20%). Upang maiwasan ito, inirerekomenda ng Intel ang paggamit ng pagtuturo ng PAUSE sa halip na mga walang laman na wait loops (ipinakilala sa IA-32 simula sa Pentium 4). Ang seryosong gawain ay isinasagawa din sa awtomatiko at semi-awtomatikong pag-optimize ng code sa panahon ng compilation - halimbawa, ang mga compiler ng Intel OpenMP C ++ / Fortran Compiler () series ay gumawa ng makabuluhang pag-unlad sa bagay na ito.

Ang isa pang layunin ng unang pagpapatupad ng Hyper-Threading, ayon sa Intel, ay upang mabawasan ang paglaki sa bilang ng mga transistor, lugar ng kamatayan at pagkonsumo ng kuryente habang pinapataas ang pagganap. Ang unang bahagi ng pangakong ito ay natupad na: ang pagdaragdag ng suporta sa Hyper-Threading sa Xeon/Xeon MP ay tumaas ang die area at konsumo ng kuryente nang mas mababa sa 5%. Kung ano ang nangyari sa second part (performance), we have yet to check.

Praktikal na bahagi

Para sa mga malinaw na dahilan, hindi namin sinubukan ang 4-processor server system sa Xeon MP na may naka-enable na Hyper-Threading. Una, ito ay medyo labor intensive. At pangalawa, kung magdedesisyon tayo sa gayong tagumpay, ngayon pa rin, wala pang isang buwan pagkatapos ng opisyal na anunsyo, talagang hindi makatotohanang makuha ang mamahaling kagamitang ito. Samakatuwid, napagpasyahan na ikulong ang ating sarili sa parehong sistema na may dalawang Intel Xeon 2.2 GHz, kung saan isinagawa ang mga unang pagsubok ng mga processor na ito (tingnan ang link sa simula ng artikulo). Ang sistema ay batay sa motherboard Supermicro P4DC6+ ( Intel chipset i860), naglalaman ng 512 MB ng RDRAM, isang video card sa isang GeForce3 chip (64 MB DDR, mga driver ng Detonator 21.85), HDD kanlurang digital WD300BB at 6X DVD-ROM; Ginamit ang Windows 2000 Professional SP2 bilang OS.

Una, ilang pangkalahatang impression. Kapag nag-i-install ng isang Xeon na may Prestonia kernel sa startup sistema ng BIOS nagpapakita ng mensahe tungkol sa pagkakaroon ng dalawang CPU; kung dalawang processor ang naka-install, ang user ay makakakita ng mensahe tungkol sa apat na CPU. Karaniwang kinikilala ng operating system ang "parehong mga processor", ngunit kung natutugunan lamang ang dalawang kundisyon.

Una, sa CMOS Setup, ang huli Mga bersyon ng BIOS Ipinakilala ng mga Supermicro P4DCxx board ang item na Paganahin ang Hyper-Threading, kung wala ito ay makikilala lamang ng OS ang (mga) pisikal na processor. Pangalawa, ang ACPI ay ginagamit upang sabihin sa OS na may mga karagdagang lohikal na processor. Samakatuwid, upang paganahin ang Hyper-Threading, ang ACPI na opsyon ay dapat na pinagana sa CMOS Setup, at ang HAL (Hardware Abstraction Layer) na may ACPI support ay dapat ding i-install para sa OS mismo. Sa kabutihang palad, sa Windows 2000 ang pagpapalit ng HAL mula sa Standard PC (o MPS Uni-/Multiprocessor PC) sa ACPI Uni-/Multiprocessor PC ay madali - sa pamamagitan ng pagpapalit ng "computer driver" sa device manager. Kasabay nito, para sa Windows XP, ang tanging legal na paraan upang lumipat sa ACPI HAL ay muling i-install ang system sa ibabaw ng kasalukuyang pag-install.

Ngunit ngayon ang lahat ng mga paghahanda ay ginawa, at ang aming Windows 2000 Pro ay matatag na naniniwala na ito ay gumagana sa isang dalawang-processor system (bagaman sa katunayan mayroon lamang isang processor na naka-install). Ngayon, gaya ng dati, oras na para magpasya sa mga layunin ng pagsubok. Kaya gusto namin:

  • Tayahin ang epekto ng Hyper-Threading sa pagganap ng mga aplikasyon ng iba't ibang klase.
  • Ihambing ang epektong ito sa epekto ng pag-install ng pangalawang processor.
  • Suriin kung paano ibinibigay ang "patas" na mapagkukunan sa aktibong lohikal na processor kapag ang pangalawang LP ay idle.

Upang suriin ang pagganap, kumuha kami ng isang hanay ng mga application na pamilyar na sa mga mambabasa, na ginamit sa pagsubok ng mga sistema ng workstation. Magsimula tayo, marahil, mula sa dulo at suriin ang "pagkakapantay-pantay" ng mga lohikal na CPU. Napakasimple ng lahat: nagpapatakbo muna kami ng mga pagsubok sa isang processor na hindi pinagana ang Hyper-Threading, at pagkatapos ay ulitin ang proseso na pinagana ang Hyper-Threading at gumagamit lamang ng isa sa dalawang lohikal na CPU (gamit ang Task Manager). Dahil sa kasong ito ay interesado lamang kami sa mga kamag-anak na halaga, ang mga resulta ng lahat ng mga pagsubok ay binabawasan sa anyo na "mas malaki ay mas mahusay" at na-normalize (ang mga tagapagpahiwatig ng isang solong-processor system na walang Hyper-Threading ay kinuha bilang isang yunit).

Buweno, tulad ng nakikita mo, ang mga pangako ng Intel ay natupad dito: na may isang aktibong thread lamang, ang pagganap ng bawat isa sa dalawang LP ay eksaktong katumbas ng pagganap ng isang pisikal na CPU na walang Hyper-Threading. Ang idle LP (parehong LP0 at LP1) ay aktwal na nasuspinde, at ang mga nakabahaging mapagkukunan, hangga't mahuhusgahan mula sa mga resultang nakuha, ay ganap na inilipat sa paggamit ng aktibong LP.

Samakatuwid, iginuhit namin ang unang konklusyon: ang dalawang lohikal na processor ay talagang pantay sa mga karapatan, at ang pagpapagana ng Hyper-Threading ay "hindi makagambala" sa pagpapatakbo ng isang thread (na hindi masama sa sarili nito). Ngayon tingnan natin kung "nakakatulong" ang pagsasama na ito, at kung gayon, saan at paano?

rendering. Ang mga resulta ng apat na pagsubok sa 3D-modeling packages 3D Studio MAX 4.26, Lightwave 7b at A|W Maya 4.0.1 ay pinagsama sa isang diagram dahil sa kanilang pagkakapareho.

Sa lahat ng apat na kaso (para sa Lightwave - dalawang magkaibang mga eksena), ang pag-load ng CPU sa pagkakaroon ng isang processor na may kapansanan na Hyper-Threading ay halos patuloy na pinananatili sa 100%. Gayunpaman, kapag ang Hyper-Threading ay pinagana, ang pagkalkula ng mga eksena ay pinabilis (bilang resulta, nagkaroon pa kami ng biro tungkol sa paggamit ng CPU na higit sa 100%). Sa tatlong pagsubok, makikita natin ang pagtaas ng pagganap mula sa Hyper-Threading na 14--18% - sa isang banda, hindi gaanong kumpara sa pangalawang CPU, ngunit sa kabilang banda, ito ay medyo maganda, isinasaalang-alang ang "libre" na epekto ng epektong ito. Sa isa sa dalawang pagsubok na may Lightwave, halos zero ang nakuhang performance (malamang, nakakaapekto ang specificity ng application na ito na puno ng mga kakaiba). Ngunit walang negatibong resulta kahit saan, at ang kapansin-pansing pagtaas sa iba pang tatlong kaso ay nakapagpapatibay. At ito sa kabila ng katotohanan na ang mga parallel rendering na proseso ay gumagawa ng katulad na gawain at, sigurado, hindi magagamit ang mga mapagkukunan ng pisikal na CPU nang sabay sa pinakamahusay na paraan.

Photoshop at MP3 encoding. Ang GOGO-no-coda 2.39c codec ay isa sa iilan na sumusuporta sa SMP, at nagpapakita ito ng 34% na pagtaas ng performance mula sa dual processor. Kasabay nito, ang epekto ng Hyper-Threading sa kasong ito ay zero (hindi namin itinuturing na makabuluhan ang pagkakaiba ng 3%). Ngunit sa pagsubok na may Photoshop 6.0.1 (isang script na binubuo ng isang malaking hanay ng mga utos at mga filter), maaari mong makita ang isang pagbagal kapag pinagana ang Hyper-Threading, bagaman ang pangalawang pisikal na CPU ay nagdaragdag ng 12% na pagganap sa kasong ito. Dito, sa katunayan, ang unang kaso kapag ang Hyper-Threading ay nagdudulot ng pagbaba sa pagganap ...

Propesyonal na OpenGL. Matagal nang alam na ang SPEC ViewPerf at maraming iba pang mga OpenGL na application ay madalas na bumagal sa mga SMP system.

OpenGL at dual processor: bakit hindi sila magkaibigan

Maraming beses sa mga artikulo, iginuhit namin ang atensyon ng mga mambabasa sa katotohanan na ang mga platform ng dual-processor ay bihirang magpakita ng anumang makabuluhang bentahe sa mga single-processor kapag nagsasagawa ng mga propesyonal na pagsubok sa OpenGL. At higit pa, may mga kaso kapag ang pag-install ng pangalawang processor, sa kabaligtaran, ay nagpapababa sa pagganap ng system kapag nag-render ng mga dynamic na 3D na eksena.

Naturally, hindi lamang namin napansin ang kakaibang ito. Tahimik lang na tinalikuran ng ilang mga tester ang katotohanang ito - halimbawa, sa pamamagitan ng pagbibigay ng mga resulta ng paghahambing ng SPEC ViewPerf para lamang sa mga configuration ng two-processor, kaya iniiwasan ang mga paliwanag na "bakit mas mabagal ang isang two-processor system?". Ang iba ay gumawa ng lahat ng uri ng mga haka-haka na pagpapalagay tungkol sa cache coherency, ang pangangailangang panatilihin ito, ang resultang overhead, at iba pa. At sa ilang kadahilanan, walang nagulat na, halimbawa, ang mga processor ay naiinip na subaybayan ang pagkakaugnay nang tumpak sa windowed OpenGL rendering (sa kanyang "computational" essence, ito ay hindi gaanong naiiba sa anumang iba pang gawain sa computational).

Sa katunayan, ang paliwanag, sa aming opinyon, ay mas simple. Tulad ng alam mo, ang isang application ay maaaring tumakbo nang mas mabilis sa dalawang processor kaysa sa isa kung:

  • mayroong higit sa dalawa o higit pang sabay-sabay na pagpapatupad ng mga thread ng programa (mga thread);
  • ang mga thread na ito ay hindi nakakasagabal sa pagpapatupad ng bawat isa - halimbawa, hindi sila nakikipagkumpitensya para sa isang nakabahaging mapagkukunan tulad ng isang panlabas na drive o interface ng network.

Ngayon, tingnan natin kung ano ang hitsura ng OpenGL rendering, na ginagawa ng dalawang thread. Kung ang isang application, "nakakakita" ng dalawang processor, ay lumilikha ng dalawang OpenGL-rendering thread, pagkatapos para sa bawat isa sa kanila, ayon sa mga patakaran ng OpenGL, ang sarili nitong gl-context ay nilikha. Alinsunod dito, ang bawat thread ay nagre-render sa sarili nitong gl na konteksto. Ngunit ang problema ay para sa window kung saan ipinapakita ang imahe, isang gl-context lamang ang maaaring maging kasalukuyan anumang oras. Alinsunod dito, ang mga thread sa kasong ito ay "isa-isa" na naglalabas ng nabuong imahe sa window, na ginagawang ang kanilang konteksto ay halili sa kasalukuyan. Hindi na kailangang sabihin, ang ganitong "pagsasama ng konteksto" ay maaaring maging napakamahal sa mga tuntunin ng overhead?

Gayundin, bilang halimbawa, magbibigay kami ng mga graph ng paggamit ng dalawang CPU sa ilang mga application na nagpapakita ng mga eksena sa OpenGL. Ang lahat ng mga sukat ay isinagawa sa isang platform na may sumusunod na pagsasaayos:

  • isa o dalawang Intel Xeon 2.2 GHz (Hyper-Threading disabled);
  • 512 MB RDRAM;
  • Supermicro P4DC6+ motherboard;
  • ASUS V8200 Deluxe video card (NVidia GeForce3, 64 MB DDR SDRAM, mga driver ng Detonator 21.85);
  • Windows 2000 Professional SP2;
  • video mode 1280x1024x32 bpp, 85 Hz, hindi pinagana ang Vsync.

Ang asul at pula ay CPU 0 at CPU 1 load graphs, ayon sa pagkakabanggit. Ang linya sa gitna ay ang huling graph ng Paggamit ng CPU. Ang tatlong graph ay tumutugma sa dalawang eksena mula sa 3D Studio MAX 4.26 at bahagi ng pagsubok ng SPEC ViewPerf (AWadvs-04).


Paggamit ng CPU: Animation 3D Studio MAX 4.26 - Anibal (na may mga manipulator).max


Paggamit ng CPU: Animation 3D Studio MAX 4.26 - Rabbit.max


Paggamit ng CPU: SPEC ViewPerf 6.1.2 - AWadvs-04

Ang parehong pattern ay paulit-ulit sa isang host ng iba pang mga application na gumagamit ng OpenGL. Ang dalawang processor ay hindi nag-abala sa trabaho, at ang kabuuang Paggamit ng CPU ay nasa antas na 50-60%. Kasabay nito, para sa isang single-processor system, sa lahat ng mga kasong ito, ang Paggamit ng CPU ay kumpiyansa na pinananatili sa antas na 100%.

Kaya't hindi nakakagulat na maraming mga OpenGL application ang hindi nagiging mas mabilis sa dalawahang sistema. Buweno, ang katotohanan na kung minsan ay nagpapabagal pa nga sila, sa aming palagay, isang ganap na lohikal na paliwanag.

Maaari naming sabihin na sa dalawang lohikal na mga CPU, ang pagbaba ng pagganap ay mas makabuluhan, na lubos na nauunawaan: dalawang lohikal na mga processor ay nakakasagabal sa isa't isa sa parehong paraan tulad ng dalawang pisikal na mga processor. Ngunit ang kanilang pangkalahatang pagganap, siyempre, ay lumalabas na mas mababa sa kasong ito, kaya kapag ang Hyper-Threading ay pinagana, ito ay bumaba nang higit pa kaysa kapag ang dalawang pisikal na CPU ay tumatakbo. Ang resulta ay mahuhulaan at ang konklusyon ay simple: Ang Hyper-Threading, tulad ng "tunay" na SMP, ay minsan ay kontraindikado para sa OpenGL.

Mga aplikasyon ng CAD. Ang nakaraang konklusyon ay kinumpirma ng mga resulta ng dalawang CAD test - SPECapc para sa SolidEdge V10 at SPECapc para sa SolidWorks. Ang pagganap ng graphics ng mga pagsubok na ito para sa Hyper-Threading ay magkatulad (bagaman ang resulta ay bahagyang mas mataas sa kaso ng isang SMP system para sa SolidEdge V10). Ngunit ang mga resulta ng mga pagsubok sa CPU_Score na naglo-load sa processor ay naiisip mo: 5-10% na pagtaas mula sa SMP at 14-19% na paghina mula sa Hyper-Threading.

Ngunit sa pagtatapos ng araw, tapat na kinikilala ng Intel ang potensyal para sa pagkasira ng pagganap sa Hyper-Threading sa ilang mga kaso - halimbawa, kapag gumagamit ng mga walang laman na wait loop. Maaari lamang nating ipagpalagay na ito ang dahilan (isang detalyadong pagsusuri ng SolidEdge at SolidWorks code ay lampas sa saklaw ng artikulong ito). Pagkatapos ng lahat, alam ng lahat ang konserbatismo ng mga developer ng CAD application na mas gusto ang napatunayang pagiging maaasahan at hindi nagmamadaling muling isulat ang code na isinasaalang-alang ang mga bagong uso sa programming.

Summing up, o "Attention, the right question"

Gumagana ang Hyper-Threading, walang duda tungkol dito. Siyempre, ang teknolohiya ay hindi pangkalahatan: may mga aplikasyon kung saan ang Hyper-Threading ay "naging masama", at kung ang teknolohiyang ito ay kumalat, ito ay kanais-nais na baguhin ang mga ito. Ngunit hindi ba ganoon din ang nangyari sa MMX at SSE at patuloy na nangyayari sa SSE2?..

Gayunpaman, itinataas nito ang tanong tungkol sa pagiging angkop ng teknolohiyang ito sa ating mga katotohanan. Kaagad naming itatapon ang opsyon ng isang single-processor system sa Xeon na may Hyper-Threading (o isaalang-alang lamang ito bilang isang pansamantalang isa, sa pag-asam ng pagbili ng pangalawang processor): kahit na ang isang 30% na pagtaas ng pagganap ay hindi nagbibigay-katwiran sa presyo sa anumang paraan - kung gayon ito ay mas mahusay na bumili ng isang regular na Pentium 4. Ang bilang ng mga CPU na natitira ay mula sa dalawa o higit pa.

Ngayon isipin natin na bibili tayo ng dalawang-processor na Xeon system (sabihin, gamit ang Windows 2000/XP Professional). Dalawang CPU ang naka-install, ang Hyper-Threading ay pinagana, ang BIOS ay nakahanap ng kasing dami ng apat na lohikal na processor, ngayon ay mag-alis tayo ... Itigil. Ngunit gaano karaming mga processor ang makikita ng aming operating system? Tama, dalawa. Dalawa lang, dahil hindi lang ito idinisenyo para sa mas malaking numero. Ito ay magiging dalawang pisikal na processor, ibig sabihin, lahat ay gagana nang eksakto katulad ng sa may kapansanan na Hyper-Threading - hindi mas mabagal (dalawang "karagdagang" lohikal na mga CPU ay hihinto lamang), ngunit hindi mas mabilis (na-verify ng mga karagdagang pagsubok, ang mga resulta ay hindi binanggit para sa ang kanilang pagiging malinaw). Hmmm, hindi masyadong masaya...

Ano ang natitira? Well, huwag mag-install ng Advanced Server o .NET Server sa aming workstation, talaga? Hindi, ang system ay mag-i-install, makikilala ang lahat ng apat na lohikal na processor at gagana. Iyon lang ang hitsura ng server OS sa workstation, upang ilagay ito nang mahinahon, medyo kakaiba (hindi banggitin ang mga aspeto ng pananalapi). Ang tanging makatwirang kaso ay kapag ang aming dalawang-processor na Xeon system ay kikilos bilang isang server (kahit ilang mga builder ay walang pag-aatubili sa pagpapalabas ng mga server sa mga workstation Xeon processors). Ngunit para sa dalawahang workstation na may kaukulang OS, nananatiling pinag-uusapan ang applicability ng Hyper-Threading. Ang Intel ay aktibong nagsusulong ng paglilisensya ng OS batay sa bilang ng hindi lohikal, ngunit pisikal na mga CPU. Ang mga talakayan ay nagpapatuloy pa rin, at, sa pangkalahatan, marami ang nakasalalay sa kung nakikita natin ang isang workstation OS na may suporta para sa apat na mga processor.

Well, sa mga server, ang lahat ay lumalabas nang simple. Halimbawa, ang isang Windows 2000 Advanced Server na naka-install sa isang two-socket Xeon system na may Hyper-Threading na pinagana ay makakakita ng apat na lohikal na processor at tumatakbo nang maayos dito. Upang suriin kung ano ang dinadala ng Hyper-Threading sa mga system ng server, ipinakita namin ang mga resulta ng Intel Microprocessor Software Labs para sa mga two-processor system sa Xeon MP at ilang mga Microsoft server application.

Ang pagpapalakas ng performance na 20-30% para sa isang two-processor server na "libre" ay higit pa sa kaakit-akit (lalo na kung ihahambing sa pagbili ng "tunay" na 4-processor system).

Kaya lumalabas na sa ngayon ang praktikal na applicability ng Hyper-Threading ay posible lamang sa mga server. Ang isyu sa mga workstation ay nakasalalay sa solusyon sa paglilisensya ng OS. Bagama't ang isa pang aplikasyon ng Hyper-Threading ay medyo totoo - kung ang mga desktop processor ay makakakuha ng suporta para sa teknolohiyang ito. Halimbawa (isipin natin) kung ano ang mali sa isang Pentium 4 system na may suporta sa Hyper-Threading, kung saan naka-install ang Windows 2000/XP Professional na may suporta sa SMP? pagpapakilala ng Hyper-Threading - mula sa mga server hanggang sa mga desktop at mobile system.