Domov / Skype / Aké sú jadrá v procesore. Čo ovplyvňuje počet jadier procesora? Viacjadrový procesor. Virtuálne viacjadrové alebo Hyper-Threading

Aké sú jadrá v procesore. Čo ovplyvňuje počet jadier procesora? Viacjadrový procesor. Virtuálne viacjadrové alebo Hyper-Threading

Ale s dobytím nových vrcholov frekvenčných ukazovateľov bolo ťažšie ich zvýšiť, pretože to ovplyvnilo zvýšenie TDP procesorov. Preto vývojári začali rozširovať procesory do šírky, konkrétne pridávať jadrá, a vznikol koncept viacjadrového.

Doslova pred 6-7 rokmi o viacjadrových procesoroch prakticky nebolo počuť. Nie, veľa jadrové procesory od tej istej firmy IBM existoval aj predtým, ale vzhľad prvého dvojjadrového procesora pre stolné počítače, sa uskutočnilo len v roku 2005, a to tzv Procesor Pentium D. V roku 2005 bol vydaný aj dvojjadrový Opteron od AMD, ale pre serverové systémy.

V tomto článku sa nebudeme podrobne zaoberať historickými faktami, ale rozoberieme moderné viacjadrové procesory ako jednu z charakteristík CPU. A hlavne – musíme prísť na to, čo toto viacjadro dáva z hľadiska výkonu pre procesor a pre vás a mňa.

Zvýšený výkon s viacerými jadrami

Princípom zvyšovania výkonu procesora vďaka niekoľkým jadrám je rozdelenie vykonávania vlákien (rôznych úloh) do viacerých jadier. Stručne povedané, takmer každý proces spustený vo vašom systéme má viacero vlákien.

Okamžite urobím výhradu, že operačný systém môže virtuálne vytvoriť veľa vlákien pre seba a robiť to všetko súčasne, aj keď je procesor fyzicky jednojadrový. Tento princíp implementuje rovnaký multitasking Windows (napríklad počúvanie hudby a písanie súčasne).


Vezmime si príklad antivírusový program. Budeme mať jedno vlákno skenujúce počítač, druhé - aktualizáciu antivírusovej databázy (všetko sme zjednodušili, aby sme pochopili všeobecný koncept).

A zvážte, čo sa stane v dvoch rôznych prípadoch:

a) Jednojadrový procesor. Keďže sú spustené dve vlákna súčasne, musíme pre používateľa (vizuálne) vytvoriť práve túto simultánnosť vykonávania. Operačný systém robí zložité veci:existuje prepínač medzi vykonávaním týchto dvoch vlákien (tieto prepínače sú okamžité a čas je v milisekundách). To znamená, že systém trochu „vykonal“ aktualizáciu, potom sa náhle prepol na skenovanie a potom späť na aktualizáciu. Takže pre vás a mňa sa zdá, že tieto dve úlohy sa vykonávajú súčasne. Ale čo sa stráca? Samozrejme, výkon. Pozrime sa teda na druhú možnosť.

b) Procesor je viacjadrový. V tomto prípade k tomuto prepnutiu nedôjde. Systém jednoznačne pošle každé vlákno do samostatného jadra, čo nám vo výsledku umožní zbaviť sa prepínania z vlákna na vlákno, ktoré je škodlivé pre výkon (idealizujme si situáciu). Dve vlákna bežia súčasne, to je princíp viacjadrového a viacvláknového. V konečnom dôsledku budeme skenovanie a aktualizácie vykonávať oveľa rýchlejšie na viacjadrovom procesore ako na jednojadrovom. Má to však háčik – nie všetky programy podporujú viacjadrové. Nie každý program sa dá takto optimalizovať. A všetko zďaleka nie je také dokonalé, ako sme opísali. Ale každý deň vývojári vytvárajú viac a viac programov, ktorých kód je dokonale optimalizovaný na vykonávanie na viacjadrových procesoroch.

Sú potrebné viacjadrové procesory? Každodenná rozumnosť

O výber procesora pre počítač (konkrétne pri premýšľaní o počte jadier) je potrebné určiť hlavné typy úloh, ktoré bude vykonávať.

Na zlepšenie vedomostí v oblasti počítačového hardvéru si môžete prečítať materiál o pätice procesora .

Východiskovým bodom možno nazvať dvojjadrové procesory, pretože nemá zmysel vracať sa k jednojadrovým riešeniam. Dvojjadrové procesory sú však iné. Možno to nebude „najčerstvejší“ Celeron, alebo to môže byť Core i3 na Ivy Bridge, rovnako ako AMD – Sempron alebo Phenom II. Prirodzene, kvôli iným ukazovateľom bude ich výkon veľmi odlišný, takže sa treba na všetko pozrieť komplexne a porovnať viacjadrové s ostatnými. vlastnosti procesora.

Napríklad Core i3 na Ivy Bridge má technológiu Hyper-Treading, ktorá vám umožňuje spracovať 4 vlákna súčasne (operačný systém vidí 4 logické jadrá namiesto 2 fyzických). A takým istým Celeronom sa nechváli.

Vráťme sa však priamo k úvahám o požadovaných úlohách. Ak je potrebný počítač pre kancelárska práca a surfovanie po internete, vtedy mu stačí dvojjadrový procesor.

Pokiaľ ide o herný výkon, potrebujete 4 alebo viac jadier, aby ste sa cítili pohodlne vo väčšine hier. Tu sa však objavuje samotný háčik: nie všetky hry majú optimalizovaný kód pre 4-jadrové procesory a ak sú optimalizované, nie je to také efektívne, ako by sme chceli. Ale v zásade je teraz pre hry optimálnym riešením práve 4. jadrový procesor.


Dnes sú tie isté 8-jadrové procesory AMD pre hry nadbytočné, nadbytočný je počet jadier, ale výkon nie je na úrovni, ale majú iné výhody. Tých istých 8 jadier veľmi pomôže pri úlohách, kde je potrebná výkonná práca s kvalitnou viacvláknovou záťažou. To zahŕňa napríklad vykresľovanie (výpočet) videa alebo serverové výpočty. Preto je pre takéto úlohy potrebných 6, 8 alebo viac jadier. A čoskoro budú hry schopné načítať 8 alebo viac jadier vo vysokej kvalite, takže v budúcnosti je všetko veľmi ružové.

Nezabudnite, že stále existuje veľa úloh, ktoré vytvárajú jednovláknové zaťaženie. A mali by ste si položiť otázku: potrebujem toto 8-jadro alebo nie?

Keď to trochu zhrniem, rád by som ešte raz poznamenal, že výhody viacjadier sa prejavujú pri „ťažkej“ výpočtovej viacvláknovej práci. A ak nehráte hry s prehnanými požiadavkami a nevykonávate špecifické typy práce, ktoré vyžadujú dobrý výpočtový výkon, potom míňanie peňazí na drahé viacjadrové procesory jednoducho nedáva zmysel (

Aká je výhoda dvojjadrových procesorov?

Pri kúpe notebooku ste si pravdepodobne všimli, že niektoré z nich majú štítky: " Intel Core 2 Duo" alebo "AMD Turion 64 x2". Tieto označenia naznačujú, že notebooky sú založené na technológii dvojjadrového spracovania.

Dvojjadrové procesory

Dvojjadrové procesory označujú typ systémov pozostávajúci z dvoch nezávislých procesorových jadier kombinovaných v jednom integrovanom obvode (IC) alebo, ako hovoria odborníci, v jednom čipe. Takéto systémy kombinujú dve jadrá v jednom procesore. Podobná technológia bola prvýkrát použitá osobný počítač a domov hracia konzola, ale veľmi skoro sa prispôsobil prostrediu mobilných počítačov. Notebooky s podobnou technológiou sú dostupné od spoločností AMD a Intel.

Dvojjadrové procesory majú inú štruktúru ako dvojjadrové procesory. Označujú systém, kde sú dva procesory kombinované v jednom integrovanom obvode. A duálne jednojadrové procesory zase označujú systém, v ktorom sú dva nezávislé procesory (každý s vlastnou matricou) priamo pripojené základná doska.

Každý z procesorov v dvojjadrovom systéme má zabudovanú vyrovnávaciu pamäť (primárnu vyrovnávaciu pamäť), ktorá im dáva vlastný potenciál pre rýchlu a efektívnu obnovu a spracovanie často používaných inštrukcií. Okrem toho je na rovnakom integrovanom obvode umiestnená vyrovnávacia pamäť druhej úrovne. Sekundárna vyrovnávacia pamäť na čipovej sade Mobile Core 2 Duo od Intelu je zdieľaná medzi dvoma procesormi. V čipsete Turion AMD 64x2 má každý z dvoch procesorov vyhradenú vyrovnávaciu pamäť - 512 KB pre každé jadro. Vyrovnávacia pamäť druhej úrovne je rezervou pre prípad ak primárne nestačí.

Výhody dvojjadrovej technológie

Najdôležitejšími výhodami takýchto procesorov sú rýchlosť a efektivita. Spracovanie príkazov a získavanie údajov vykonávajú dva procesory; tým sa dosiahne vyšší výkon bez zahrievania procesorov. Rýchly výkon zaručuje aj fakt, že tieto dva procesory majú vlastnú ľahko dostupnú primárnu vyrovnávaciu pamäť. Navyše, najmä v prípade Intel Core 2 Duo, kde je sekundárna vyrovnávacia pamäť rozdelená, môže byť celá sekundárna vyrovnávacia pamäť v prípade potreby využívaná jedným alebo oboma procesormi súčasne.

Stručne povedané, prenosný počítač s dvojjadrovým procesorom beží rýchlejšie a chladnejšie, pričom má tiež lepší multitasking. Dvojjadrové procesory spotrebujú menej energie ako dvojjadrové procesory.

Ďalšou výhodou použitia dvojjadrových procesorov v notebookoch je nižšia hmotnosť a veľkosť, čo robí laptop pohodlnejšie a zároveň poskytuje výkon podobný počítaču.

Je dôležité si uvedomiť, že ak pri starších programoch spustíte naraz iba jeden program, nepocítite žiadnu z výhod dvojjadrových procesorov. Staršie programy neboli navrhnuté pre túto technológiu, takže boli schopné používať iba jedno jadro. Výhoda multitaskingu však v tomto prípade stále zostáva. Ak máte otvorených viacero programov súčasne, potom procesor s dvoma jadrami poskytne rýchlejší výkon ako jedno jadro.

Čas plynie a vývojárov pribúda softvér vytvárať svoje programy s prihliadnutím na dvojjadrové procesory; používatelia tak budú môcť v blízkej budúcnosti využívať všetky výhody takýchto procesorov.

Našiel sa nepríjemný problém s limitom hodín. Po dosiahnutí prahu 3 GHz vývojári čelia výraznému zvýšeniu spotreby energie a rozptylu tepla svojich produktov. Úroveň technológie v roku 2004 neumožňovala výrazne zmenšiť veľkosť tranzistorov v kremíku a východiskom z tejto situácie bol pokus nie zvýšiť frekvenciu, ale zvýšiť počet operácií vykonaných za cyklus. Po prijatí skúseností serverové platformy, kde už bolo testované viacprocesorové usporiadanie, bolo rozhodnuté spojiť dva procesory na jednom čipe.

Odvtedy prešlo veľa času, v širokom prístupe sa objavili CPU s dvoma, tromi, štyrmi, šiestimi a dokonca ôsmimi jadrami. Hlavný podiel na trhu však stále zaberajú 2 a 4-jadrové modely. AMD sa snaží situáciu zmeniť, no ich architektúra Bulldozer nenaplnila očakávania a lacné osemjadrá sa vo svete stále netešia veľkej obľube. Preto otázkačo je lepšie: 2 alebo 4-jadrový procesor, je stále aktuálne.

Rozdiel medzi 2 a 4 jadrovým procesorom

Na úrovni hardvéruhlavný rozdiel medzi 2-jadrovým procesorom a 4-jadrovýmje počet funkčných blokov. Každé jadro je v skutočnosti samostatným CPU vybaveným vlastnými výpočtovými uzlami. 2 alebo 4 takéto CPU sú prepojené internou vysokorýchlostnou zbernicou a spoločným pamäťovým radičom na interakciu s RAM. Môžu byť zdieľané aj ďalšie funkčné uzly: vo väčšine moderných CPU sú vyrovnávacia pamäť prvej (L1) a druhej (L2) úrovne, bloky celočíselných výpočtov a operácie s pohyblivou rádovou čiarkou individuálne. L3 cache, ktorá je pomerne veľká, je jediná a dostupná pre všetky jadrá. Samostatne si môžeme všimnúť už spomínaný AMD FX (rovnako ako procesor Athlon a APU série A): zdieľajú nielen vyrovnávaciu pamäť a radič, ale aj jednotky s pohyblivou rádovou čiarkou: každý takýto modul súčasne patrí dvom jadrám.

Schéma štvorjadrového procesora AMD Athlon

Z pohľadu užívateľarozdiel medzi 2 a 4 jadrovým procesoromje počet úloh, ktoré môže CPU spracovať v jednom hodinovom cykle. Pri rovnakej architektúre bude teoretický rozdiel 2-násobný pre 2 a 4 jadrá, respektíve 4-násobný pre 2 a 8 jadrá. Pri súčasnej prevádzke viacerých procesov by teda zvýšenie počtu malo viesť k zvýšeniu rýchlosti systému. Napokon, namiesto 2 operácií môže štvorjadrový procesor vykonávať štyri naraz.

Prečo sú dvojjadrové procesory obľúbené

Zdalo by sa, že ak zvýšenie počtu jadier znamená zvýšenie výkonu, potom na pozadí modelov so štyrmi, šiestimi alebo ôsmimi jadrami nemajú dvojjadrové procesory žiadnu šancu. Svetový líder na trhu CPU, Intel, však každoročne aktualizuje svoj produktový rad a vydáva nové modely len s niekoľkými jadrami (Core i3, Celeron, Pentium). A to na pozadí skutočnosti, že aj v smartfónoch a tabletoch sa používatelia na takéto CPU pozerajú s nedôverou či opovrhnutím. Aby sme pochopili, prečo sú najobľúbenejšie modely procesory s dvoma jadrami, je potrebné vziať do úvahy niekoľko hlavných faktorov.

Intel Core i3 - najobľúbenejšie 2-jadrové procesory pre domáce počítače

Problém s kompatibilitou. Pri vytváraní softvéru sa vývojári snažia, aby fungoval na nových počítačoch aj na existujúcich modeloch CPU a GPU. Vzhľadom na rozmanitosť na trhu je dôležité zabezpečiť bezproblémový chod hry na dvoch jadrách aj ôsmich. Väčšina existujúcich domácich počítačov je vybavená dvojjadrovým procesorom, takže podpore takýchto počítačov je venovaná najväčšia pozornosť.

Zložitosť paralelizácie úloh. Aby sa zabezpečilo efektívne využitie všetkých jadier, výpočty vykonané počas programu by mali byť rozdelené do rovnakých vlákien. Napríklad úlohou, ktorá dokáže optimálne využiť všetky jadrá tým, že každému z nich vyhradí jeden alebo dva procesy, je súčasná kompresia niekoľkých videí. S hrami je to zložitejšie, keďže všetky operácie v nich vykonávané sú vzájomne prepojené. Napriek tomu, že hlavnú prácu vykonáva o GPU grafické karty, je to procesor, ktorý pripravuje informácie na vytvorenie 3D obrazu. Urobiť to tak, aby každé jadro spracovávalo svoju vlastnú časť údajov a potom ich posielalo do GPU synchrónne s ostatnými, je dosť ťažké. Čím viac súčasných výpočtových vlákien potrebujete spracovať, tým ťažšie je implementovať úlohu.

Kontinuita technológií. Vývojári softvéru využívajú existujúci vývoj pre svoje nové projekty, ktoré podliehajú opakovanej modernizácii. V niektorých prípadoch dochádza k tomu, že takéto technológie sú zakorenené v minulosti už 10-15 rokov. Vývoj založený na desaťročnom projekte je neochotne, ak nie úplne prerobený na dokonalú optimalizáciu. Výsledkom je, že softvér nie je schopný racionálne využívať hardvérové ​​možnosti počítača. S.T.A.L.K.E.R. Call of Pripyat, vydaný v roku 2009 (v období rozkvetu viacjadrových CPU), je postavený na engine z roku 2001, takže nemôže načítať viac ako jedno jadro.

S.T.A.L.K.E.R. plne využíva iba jedno jadro 4-jadrového CPU

Rovnaká situácia je aj pri populárnom online RPG World of Tanks: engine Big World, na ktorom je založený, vznikol v roku 2005, keď ešte viacjadrové CPU neboli vnímané ako jediný možný spôsob vývoja.

World of Tanks tiež nevie, ako rovnomerne rozložiť záťaž na jadrá

Finančné ťažkosti. Dôsledkom tohto problému je predchádzajúci bod. Ak vytvoríte každú aplikáciu od nuly, bez použitia existujúcich technológií, jej implementácia bude stáť rozprávkové sumy. Napríklad náklady na vývoj GTA V boli viac ako 200 miliónov dolárov. Niektoré technológie zároveň neboli vytvorené „od nuly“, ale požičané z predchádzajúcich projektov, pretože hra bola napísaná pre 5 platforiem naraz (Sony PS3, PS4, Xbox 360 a One, ako aj PC).

GTA V je optimalizované pre viac jadier a dokáže rovnomerne zaťažiť procesor

Všetky tieto nuansy neumožňujú plne využiť potenciál viacjadrových procesorov v praxi. Vzájomná závislosť producentov hardvér a vývojári softvéru vytvárajú začarovaný kruh.

Ktorý procesor je lepší: 2 alebo 4-jadrový

Je zrejmé, že so všetkými výhodami zostáva potenciál viacjadrových procesorov až do konca nevyužitý. Niektoré úlohy vôbec nevedia rovnomerne rozložiť záťaž a fungujú v jednom vlákne, iné to robia s priemernou efektivitou a len malá časť softvéru plne interaguje so všetkými jadrami. Preto otázkaktoré lepší procesor, 2 alebo 4 jadrá, kúpiť, vyžaduje dôkladné zváženie aktuálnej situácie.

Na trhu sú produkty dvoch výrobcov: Intel a AMD, ktoré sa líšia implementačnými vlastnosťami. Advanced Micro Devices tradične kladie dôraz na viacjadrá, zatiaľ čo Intel sa k tomuto kroku zdráha a zvyšuje počet jadier iba v prípade, že to nepovedie k zníženiu špecifického výkonu na jadro (čomu sa dá vyhnúť len veľmi ťažko).

Zvýšenie počtu jadier znižuje celkový výkon každého z nich.

Celkový teoretický a praktický výkon viacjadrového CPU je spravidla nižší ako podobný (postavený na rovnakej mikroarchitektúre, s rovnakým technickým procesorom) s jedným jadrom. Je to spôsobené tým, že jadrá používajú zdieľané zdroje, a to nie tým najlepším spôsobom ovplyvňuje rýchlosť. Výkonný štvor- alebo šesťjadrový procesor si teda nemôžete len tak kúpiť s tým, že určite nebude slabší ako dvojjadrový z rovnakej série. V niektorých situáciách to bude navyše hmatateľné. Príkladom je spustenie starých hier na počítači s osemjadrovým procesorom AMD FX: FPS je niekedy nižšia ako na podobnom PC, ale so štvorjadrovým CPU.

Dnes je potrebný viacjadrový

Znamená to, že veľa jadier nie je potrebných? Napriek tomu, že záver vyzerá logicky – nie. Ľahké každodenné úlohy (napríklad surfovanie na webe alebo práca s viacerými programami súčasne) pozitívne reagujú na zvýšenie počtu jadier procesora. Z tohto dôvodu sa výrobcovia smartfónov zameriavajú na kvantitu a znižujú špecifický výkon do pozadia. Opera (a ďalšie prehliadače na Chromový motor), každý sa spustí Firefox otvoriť kartu ako samostatný proces, respektíve čím viac jadier - tým rýchlejší je prechod medzi kartami. Správcovia súborov, kancelárske programy, hráči - sami o sebe nie sú nároční na zdroje. Ak však medzi nimi potrebujete často prepínať, výkon systému zlepší viacjadrový procesor.

Prehliadač Opera priraďuje každej karte samostatný proces

Intel si to uvedomuje, pretože technológia HuperThreading, ktorá umožňuje jadru spracovať druhé vlákno s využitím nevyužitých zdrojov, sa objavila už v časoch Pentia 4. Nedostatok výkonu ale úplne nekompenzuje.

2-jadrový procesor s Huper Threading sa v Správcovi úloh zobrazuje ako 4-jadrový

Tvorcovia hier to medzitým postupne dobiehajú. Objavenie sa nových generácií konzol Sony Play Station a Microsoft Xbox podnietilo vývojárov, aby venovali väčšiu pozornosť viacjadrovému systému. Obe konzoly sú založené na osemjadrových čipoch AMD, takže programátori teraz nemusia vynakladať veľa úsilia na optimalizáciu pri portovaní hry na PC. S rastúcou popularitou týchto konzol si tí, ktorí boli sklamaní kúpou AMD FX 8xxx, mohli vydýchnuť. Viacjadrové procesory aktívne získavajú pozície na trhu, ako je zrejmé z recenzií.

Jednou z etáp zlepšovania von Neumannovej architektúry je paralelizácia vlákien ( Niť úroveň Paralelizmus, TLP). Rozlišovať simultánne multithreading (Simultánne Multithreading, SMT) a multithreading na úrovni čipu (čip- úrovni Multithreading, CMT). Tieto dva prístupy sa líšia hlavne svojou predstavou o tom, čo je vlákno. Typický predstaviteľ SMT je technológia tzv HTT (Hyper- závitovanie technológie).

P prví predstavitelia architektúry CMP sa stali procesormi určenými na použitie v serveroch. Bol to jednoduchý tandem, v takýchto zariadeniach boli na jednom substráte umiestnené dve, v skutočnosti nezávislé jadrá (obr. 8,). Vývojom tejto schémy sa najskôr stala štruktúra so spoločnou vyrovnávacou pamäťou – pamäťou obr. 9, a potom štruktúru s viacvláknovými vláknami v každom jadre.

Výhody viacjadrových procesorov sú nasledovné.

    Jednoduchosť (prirodzene relatívna) dizajnu a výroby. Po vyvinutí jedného efektívneho jadra je možné ho replikovať do kryštálu a doplniť architektúru o potrebné systémové komponenty.

    Spotreba energie je citeľne znížená. Ak napríklad umiestnite dve jadrá na čip a necháte ich pracovať na taktovacej frekvencii, ktorá poskytuje výkon rovnaký ako výkon jednojadrového „brata“, a potom porovnáte spotrebu oboch, zistíte, že výkon spotreba niekoľkonásobne klesá, pretože rastie takmer úmerne k štvorcovým frekvenciám.

Vo všeobecnosti, ak sa pozorne pozriete na obrázky 8 a 9, môžete vidieť, že medzi povedzme 2-procesorovým systémom a počítačom s 2-jadrovým procesorom nie je žiadny zásadný rozdiel. Problémy sú rovnaké. A jedným z prvých je zodpovedajúci operačný systém.

Spôsoby organizácie práce spracovateľov

Hlavným stimulom pre rozvoj počítačovej architektúry je zvýšenie produktivity. Jedným zo spôsobov, ako zvýšiť produktivitu počítačov, je špecializácia (ako jednotlivé prvky počítača, tak aj vytváranie špecializovaných výpočtových systémov).

Špecializácia procesorov sa začala v 60. rokoch, keď sa centrálny procesor veľkých počítačov oslobodil od rutinnej prevádzky vstupno-výstupných informácií. Táto funkcia bola prenesená na I/O procesor, ktorý komunikuje s periférnymi zariadeniami.

Ďalším spôsobom, ako zlepšiť výkon, je vzdialiť sa od sériovej von Neumannovej architektúry a zamerať sa na paralelizmus. M. Flynn upozornil na skutočnosť, že existujú len dva dôvody, ktoré vedú k výpočtovému paralelizmu – nezávislosť príkazových tokov, ktoré súčasne existujú v systéme, a odpojenie údajov spracovávaných v jednom príkazovom toku. Ak je prvý dôvod paralelizmu výpočtového procesu dobre známy (ide o jednoduchý multiprocesing), potom sa budeme venovať paralelizmu údajov podrobnejšie, pretože vo väčšine prípadov existuje skrytý pred programátormi a používa ho obmedzený okruh odborníkov. .

Najjednoduchším príkladom dátového paralelizmu je sekvencia dvoch príkazov: A=B+C; D=E*F;

Ak budeme striktne dodržiavať von Neumannov princíp, potom druhá operácia môže byť spustená na vykonanie až po dokončení prvej operácie. Je však zrejmé, že na poradí vykonania týchto inštrukcií nezáleží - operandy A, B a C prvej inštrukcie nijako nesúvisia s operandmi D, E a F druhej inštrukcie. Inými slovami, obe operácie sú paralelné práve preto, že operandy týchto inštrukcií spolu nesúvisia. Môžete uviesť veľa príkladov sekvencie troch alebo viacerých príkazov s nesúvisiacimi údajmi, ktoré povedú k jednoznačnému záveru: takmer každý program obsahuje skupiny operácií s paralelnými údajmi.

D Iný druh dátového paralelizmu sa zvyčajne vyskytuje v programoch na cyklické spracovanie dát. Napríklad pri pridávaní prvkov dvoch polí môže jeden príkaz spracovať veľké pole (viacnásobný prúd) údajov. Takéto inštrukcie sa nazývajú vektorové a procesor, ktorý tento režim implementuje, sa nazýva vektor. Môžete uviesť nasledujúcu definíciu: „Vektorový procesor je procesor, ktorý zabezpečuje paralelné vykonávanie operácií na dátových poliach (vektoroch). Vyznačuje sa špeciálnou architektúrou postavenou na skupine paralelných prvkov spracovania a je určený na spracovanie obrázkov, matíc a dátových polí.

Existuje niekoľko významovo blízkych klasifikácií softvérového paralelizmu, z ktorých sa za najuznávanejšiu klasifikáciu považuje klasifikácia založená na šiestich úrovniach (obr. 10). Tri najvyššie úrovne paralelizmu zaberajú veľké programové objekty – nezávislé úlohy, programy a programové procedúry. Nesúvisiace príkazy, cykly a operácie tvoria nižšie úrovne paralelizmu. Ak skombinujeme takéto hodnotenie s kategóriami M. Flyn „paralelné príkazové toky“ a „paralelné dátové toky“, potom môžeme vidieť, že paralelizmus najvyššej úrovne je dosiahnutý najmä vďaka mnohým nezávislým príkazovým tokom a nižším úrovniam paralelizmus vďačí za svoju existenciu najmä nesúvisiacim dátovým tokom.

Potrubie a potrubné konštrukcie

O voľno efektívnymi spôsobmi zlepšenie výkonu počítačov sa neustále rozvíja. Na obr. jedenásť a) je znázornené spracovanie v jedinom univerzálnom bloku a na obr b) a v)- v dopravníku. Myšlienkou spracovania potrubia je rozdeliť funkciu implementovanú univerzálnym funkčným blokom (FB) medzi niekoľko špecializovaných. Všetky funkčné bloky potrubia musia bežať rovnakou rýchlosťou (aspoň v priemere). V praxi sa to len zriedka dosiahne a v dôsledku toho sa zníži výkon potrubia, pretože doba prijímania vstupných údajov je určená maximálnym časom spracovania v každom funkčnom bloku. Na kompenzáciu kolísania prevádzkového času FB sú medzi nimi zahrnuté vyrovnávacie registre. Univerzálnejšou technikou je zahrnúť vyrovnávacie úložné zariadenia typu FIFO (obr. 11 v). Medzi číslami si treba všimnúť ešte jeden rozdiel. b) a v). V štruktúre v) neexistuje žiadna synchronizačná linka SI. To neznamená, že nemôže byť v podobnej štruktúre, len že existujú dva typy potrubí: synchrónne so spoločnou synchronizačnou linkou a asynchrónne, bez jedného. Prvé sú aj tzv s riadením príkazov, a tie druhé so správou údajov. Systolické polia sú príkladom asynchrónnych potrubí.

Komu potrubie nie je vždy lineárny reťazec blokov. Niekedy je to prospešné funkčné bloky budú prepojené nie postupne, ale podľa zložitejšej schémy v súlade s logikou spracovania, pričom niektoré bloky v reťazci možno preskočiť, zatiaľ čo iné môžu vytvárať cyklické štruktúry. Štruktúra nelineárneho potrubia schopného vypočítať dve funkcie X a Y a diagram, v ktorom funkcie X a Y vyžadujú určité funkčné bloky, je znázornený na obr. 12

  • tutoriál

V tomto článku sa pokúsim popísať terminológiu používanú na popis systémov schopných vykonávať viacero programov paralelne, teda viacjadrové, viacprocesorové, viacvláknové. Odlišné typy paralelizmus v CPU IA-32 sa objavil v rôznych časoch a v trochu nekonzistentnom poradí. V tom všetkom sa dá ľahko zmiasť, najmä ak vezmeme do úvahy, že operačné systémy dbajú na to, aby skryli detaily pred menej sofistikovanými aplikačnými programami.

Účelom článku je ukázať, že pri všetkej rozmanitosti možných konfigurácií viacprocesorových, viacjadrových a viacvláknových systémov pre programy, ktoré na nich bežia, sa vytvárajú príležitosti na abstrakciu (ignorovanie rozdielov), ako aj na zohľadnenie špecifík ( schopnosť programovo sa učiť konfiguráciu).

Upozornenie na znaky ®, ™, v článku

Môj komentár vysvetľuje, prečo by zamestnanci spoločnosti mali používať ochranné známky vo verejnej komunikácii. V tomto článku sa museli používať pomerne často.

CPU

Samozrejme, najstarší, najčastejšie používaný a nejednoznačný pojem je „procesor“.

AT modernom svete procesor je ten (balík), ktorý kupujeme v krásnom Retail boxe alebo nie veľmi krásnom OEM balení. Nedeliteľná entita vložená do zásuvky na základnej doske. Aj keď tam nie je žiadny konektor a nedá sa odstrániť, to znamená, že ak je pevne spájkovaný, je to jeden čip.

Mobilné systémy (telefóny, tablety, notebooky) a väčšina desktopov má jeden procesor. Pracovné stanice a servery sa niekedy môžu pochváliť dvoma alebo viacerými procesormi na rovnakej základnej doske.

Viacnásobná podpora CPU v jednom systéme vyžaduje početné zmeny v jeho dizajne. Minimálne je potrebné zabezpečiť ich fyzické pripojenie (zabezpečiť niekoľko zásuviek na základnej doske), vyriešiť otázky identifikácie procesora (pozri ďalej v tomto článku, ako aj moju predošlú poznámku), koordinácie prístupu do pamäte a doručovania prerušení ( ovládač prerušení musí byť schopný smerovať prerušenia na viacerých procesoroch) a samozrejme podpora zo strany operačného systému. Žiaľ, nepodarilo sa mi nájsť zdokumentovanú zmienku o momente, kedy vznikol prvý multiprocesorový systém na procesoroch Intel, ale Wikipedia tvrdí, že Sequent Computer Systems ich dodali už v roku 1987 s procesormi Intel 80386. Rozšírená podpora pre niekoľko čipov v jednom systéme je dostupná počnúc procesorom Intel® Pentium.

Ak je procesorov viacero, tak každý z nich má na doske vlastný konektor. Zároveň má každý z nich úplné nezávislé kópie všetkých zdrojov, ako sú registre, spúšťacie zariadenia, vyrovnávacie pamäte. Zdieľajú spoločnú pamäť – RAM. Pamäť sa s nimi dá spájať rôznymi a dosť netriviálnymi spôsobmi, ale toto je samostatný príbeh, ktorý presahuje rámec tohto článku. Dôležité je, že v každom prípade musia spustiteľné programy vytvárať ilúziu homogénnej zdieľanej pamäte, dostupnej zo všetkých procesorov v systéme.


Pripravený vzlietnuť! Stolná doska Intel® D5400XS

Nucleus

Historicky sa viacjadro v Intel IA-32 objavilo neskôr ako Intel® HyperThreading, ale v logickej hierarchii je na rade.

Zdalo by sa, že ak je v systéme viac procesorov, potom je jeho výkon vyšší (pri úlohách, ktoré dokážu využívať všetky zdroje). Ak sú však náklady na komunikáciu medzi nimi príliš vysoké, všetok zisk z paralelizmu je zabitý dlhými oneskoreniami pri prenose spoločných údajov. To je presne to, čo sa pozoruje v multiprocesorových systémoch - fyzicky aj logicky sú od seba veľmi vzdialené. Na efektívnu komunikáciu v takýchto podmienkach je potrebné vynájsť špecializované zbernice, ako je Intel® QuickPath Interconnect. Z toho všetkého samozrejme neklesá spotreba energie, veľkosť a cena finálneho riešenia. Na pomoc by mala prísť vysoká integrácia komponentov - obvody vykonávajúce časti paralelného programu by sa mali pritiahnuť bližšie k sebe, najlepšie na jednom čipe. Inými slovami, jeden procesor by mal organizovať niekoľko jadrá, ktoré sú vo všetkom navzájom identické, ale pracujú nezávisle.

Prvé viacjadrové procesory IA-32 od Intelu boli predstavené v roku 2005. Odvtedy priemerný počet jadier na serverových, desktopových a teraz aj mobilných platformách neustále rastie.

Na rozdiel od dvoch jednojadrových procesorov v rovnakom systéme, ktoré zdieľajú iba pamäť, môžu dve jadrá zdieľať aj vyrovnávaciu pamäť a ďalšie zdroje zodpovedné za interakciu s pamäťou. Najčastejšie zostávajú cache prvej úrovne súkromné ​​(každé jadro má svoje), zatiaľ čo druhá a tretia úroveň môžu byť zdieľané alebo oddelené. Táto organizácia systému znižuje oneskorenie pri doručovaní údajov medzi susednými jadrami, najmä ak pracujú na spoločnej úlohe.


Mikrofotografia štvorjadra procesor Intel s kódovým označením Nehalem. Zvýraznené sú samostatné jadrá, zdieľaná vyrovnávacia pamäť L3, ako aj prepojenia QPI na ďalšie procesory a radič zdieľanej pamäte.

hyperthread

Až do roku 2002 bol jediný spôsob, ako získať systém IA-32 schopný vykonávať dva alebo viac programov paralelne, používať špecificky viacprocesorové systémy. Intel® Pentium® 4, ako aj rad Xeon s kódovým označením Foster (Netburst), boli predstavené Nová technológia- hyperthreads alebo hyperthreads, - Intel® HyperThreading (ďalej len HT).

Nie je nič nové pod slnkom. HT je špeciálny prípad toho, čo sa v literatúre označuje ako simultánny multithreading (SMT). Na rozdiel od "skutočných" jadier, ktoré sú úplnými a nezávislými kópiami, je v prípade HT duplikovaná iba časť interných uzlov v jednom procesore, ktorý je primárne zodpovedný za ukladanie architektonického stavu - registre. Výkonné uzly zodpovedné za organizáciu a spracovanie údajov zostávajú v jednotnom čísle a kedykoľvek ich používa najviac jedno z vlákien. Podobne ako jadrá, aj hypervlákna si medzi sebou zdieľajú vyrovnávaciu pamäť, no počnúc akej úrovni závisí od konkrétneho systému.

Nebudem sa snažiť vysvetľovať všetky klady a zápory SMT dizajnov vo všeobecnosti a HT dizajnov zvlášť. Zainteresovaný čitateľ môže nájsť pomerne podrobnú diskusiu o technológii v mnohých zdrojoch a samozrejme na Wikipédii. Poznamenám si však nasledujúci dôležitý bod, ktorý vysvetľuje súčasné obmedzenia počtu hyperthreadov v reálnej produkcii.

Limity závitov
V akých prípadoch je prítomnosť „nečestného“ viacjadra v podobe HT opodstatnená? Ak jedno aplikačné vlákno nie je schopné načítať všetky spustené uzly v jadre, možno ich „požičať“ inému vláknu. To je typické pre aplikácie, ktoré majú „úzke hrdlo“ nie vo výpočtoch, ale v prístupe k dátam, čiže často generujú chýbajúce cache a musia čakať na doručenie dát z pamäte. Počas tejto doby bude jadro bez HT nútené nečinne. Prítomnosť HT umožňuje rýchlo prepínať voľne vykonávané uzly do iného architektonického stavu (pretože je len duplikovaný) a vykonávať jeho inštrukcie. Ide o špeciálny prípad triku nazývaného skrytie latencie, kedy je jedna dlhá operácia, počas ktorej sú užitočné zdroje nečinné, maskovaná paralelným vykonávaním iných úloh. Ak má aplikácia už vysoký stupeň využitia zdrojov jadra, prítomnosť hyperthreadingu neumožní zrýchlenie – tu sú potrebné „poctivé“ jadrá.

Typické scenáre pre desktopové a serverové aplikácie navrhnuté pre strojové architektúry všeobecný účel, majú potenciál pre paralelizmus implementovaný s HT. Tento potenciál sa však rýchlo „vyčerpá“. Možno z tohto dôvodu na takmer všetkých procesoroch IA-32 počet hardvérových hyperthreadov nepresahuje dva. V typických scenároch by bol zisk z použitia troch alebo viacerých hyperthreadingov malý, ale strata veľkosti matrice, spotreby energie a nákladov je významná.

Iná situácia je pozorovaná pri typických úlohách vykonávaných na video akcelerátoroch. Preto sa tieto architektúry vyznačujú použitím technológie SMT s väčším počtom vlákien. Keďže koprocesory Intel® Xeon Phi (uvedené v roku 2010) sú ideologicky a genealogicky dosť blízke grafickým kartám, môžu mať štyri hyperthreading na každom jadre - konfigurácia jedinečná pre IA-32.

logický procesor

Z troch opísaných „úrovní“ paralelizmu (procesory, jadrá, hyperthreading) môžu niektoré alebo dokonca všetky v konkrétnom systéme chýbať. Toto je ovplyvnené nastavenia systému BIOS(multi-core a multi-threading sú vypnuté nezávisle), úvahy o mikroarchitektúre (napríklad HT chýbalo v Intel® Core™ Duo, ale bolo vrátené s vydaním Nehalem) a systémové udalosti (viacprocesorové servery môžu vypnúť zlyhané procesory v prípade porúch a pokračovať v lietaní) na zvyšku). Ako je táto viacvrstvová zoo súbežnosti viditeľná pre operačný systém a v konečnom dôsledku aj pre aplikácie?

Ďalej pre pohodlie označujeme počet procesorov, jadier a vlákien v niektorých systémoch trojnásobkom ( X, r, z), kde X je počet procesorov r je počet jadier v každom procesore a z je počet hyperthreadov v každom jadre. Ďalej sa budem odvolávať na túto trojicu topológie- ustálený pojem, ktorý nemá veľa spoločného s úsekom matematiky. Práca p = xyz definuje počet pomenovaných entít logické procesory systémov. Definuje celkový počet nezávislých kontextov aplikačných procesov v paralelne vykonávanom systéme so zdieľanou pamäťou, ktoré musí operačný systém zvážiť. Hovorím "vynútené", pretože nemôže kontrolovať poradie vykonávania dvoch procesov, ktoré sú na rôznych logických procesoroch. To platí aj pre hyperthready: hoci bežia „postupne“ na tom istom jadre, konkrétne poradie je diktované hardvérom a nie je viditeľné ani riadené programami.

Operačný systém najčastejšie skrýva pred koncovými aplikáciami vlastnosti fyzickej topológie systému, na ktorom beží. Napríklad nasledujúce tri topológie: (2, 1, 1), (1, 2, 1) a (1, 1, 2) - OS bude reprezentovaný ako dva logické procesory, hoci prvý má dva procesory, druhý má dve jadrá a tretí má iba dve vlákna.


Windows správca úloh zobrazuje 8 logických procesorov; ale koľko je to v procesoroch, jadrách a hypervláknoch?


Linux top zobrazuje 4 logické procesory.

Tvorcom aplikovaných aplikácií to celkom vyhovuje – nemusia sa zaoberať hardvérovými funkciami, ktoré sú pre nich často nepodstatné.

Softvérová definícia topológie

Samozrejme, abstrahovanie topológie do jedného počtu logických procesorov v niektorých prípadoch vytvára dostatočný dôvod na zmätok a nedorozumenie (v horúcich internetových sporoch). Výpočtové aplikácie, ktoré chcú z hardvéru vyťažiť maximum výkonu, vyžadujú jemnú kontrolu nad tým, kde budú ich vlákna umiestnené: bližšie k sebe na susedných hypervláknoch alebo naopak, ďalej na rôznych procesoroch. Rýchlosť komunikácie medzi logickými procesormi v rámci toho istého jadra alebo procesora je oveľa vyššia ako rýchlosť prenosu dát medzi procesormi. Možnosť heterogenity v organizácii Náhodný vstup do pamäťe tiež komplikuje obraz.

Informácie o topológii systému ako celku, ako aj o polohe každého logického procesora v IA-32, sú dostupné pomocou inštrukcie CPUID. Od nástupu prvých viacprocesorových systémov bola schéma identifikácie logického procesora niekoľkokrát rozšírená. K dnešnému dňu sú jeho časti obsiahnuté na listoch 1, 4 a 11 CPUID. Ktorý z listov sa má sledovať, je možné určiť z nasledujúceho blokového diagramu prevzatého z článku:

Nebudem sa tu nudiť všetkými detailmi jednotlivých častí tohto algoritmu. Ak je záujem, tomu sa môže venovať ďalšia časť tohto článku. Zainteresovaného čitateľa odkážem na, kde je táto problematika analyzovaná čo najpodrobnejšie. Tu najprv stručne popíšem, čo je APIC a ako súvisí s topológiou. Potom zvážte prácu s listom 0xB (jedenásť palcov desiatkový), čo je momentálne posledné slovo v „apico-building“.

APIC ID
Local APIC (advanced programmable interrupt controller) je zariadenie (dnes súčasť procesora) zodpovedné za prácu s prerušeniami prichádzajúcimi do konkrétneho logického procesora. Každý logický procesor má svoje vlastné APIC. A každý z nich v systéme musí mať jedinečná hodnota APICID. Toto číslo používajú radiče prerušení na adresovanie pri doručovaní správ a všetci ostatní (napríklad operačný systém) na identifikáciu logických procesorov. Špecifikácia tohto radiča prerušenia sa vyvinula z Intel 8259 PIC cez Dual PIC, APIC a xAPIC na x2APIC.

Momentálne šírka čísla uloženého v APIC ID dosiahla plných 32 bitov, hoci v minulosti bola obmedzená na 16 a ešte skôr len na 8 bitov. Dnes sú pozostatky starých čias roztrúsené po celom CPUID, ale všetkých 32 bitov APIC ID sa vracia v CPUID.0xB.EDX. Každý logický procesor nezávisle vykonávajúci inštrukciu CPUID vráti inú hodnotu.

Objasnenie rodinných väzieb
Samotná hodnota APIC ID nehovorí nič o topológii. Ak chcete zistiť, ktoré dva logické procesory sú v tom istom fyzickom procesore (t. j. sú to „bratia“ hyperthreadov), ktoré dva sú v tom istom procesore a ktoré sú úplne odlišné procesory, musíte porovnať ich hodnoty APIC ID. V závislosti od stupňa vzťahu sa niektoré ich časti budú zhodovať. Tieto informácie sú obsiahnuté v podzoznamoch CPUID.0xB, ktoré sú zakódované operandom v ECX. Každý z nich popisuje polohu bitového poľa jednej z úrovní topológie v EAX (presnejšie počet bitov, ktoré je potrebné posunúť v APIC ID doprava, aby sa odstránili nižšie úrovne topológie), ako aj ako typ tejto úrovne - hyperthread, core alebo procesor - v ECX.

Logické procesory v tom istom jadre sa budú zhodovať so všetkými bitmi ID APIC okrem bitov v poli SMT. Pre logické procesory, ktoré sú v rovnakom procesore, všetky bity okrem polí Core a SMT. Keďže počet podhárkov pre CPUID.0xB môže rásť, túto schému umožní podporiť popis topológií s väčším počtom úrovní, ak to bude potrebné v budúcnosti. Okrem toho bude možné zaviesť prechodné úrovne medzi existujúce.

Dôležitým dôsledkom organizácie tejto schémy je, že v množine všetkých APIC ID všetkých logických procesorov systému môžu byť „diery“, t.j. nepôjdu postupne. Napríklad vo viacjadrovom procesore s vypnutým HT sa môžu všetky APIC ID ukázať ako párne, pretože najmenej významný bit zodpovedný za kódovanie čísla hypervlákna bude vždy nula.

Upozorňujeme, že CPUID.0xB nie je jediným zdrojom informácií o logických procesoroch dostupných pre operačný systém. Zoznam všetkých procesorov, ktoré má k dispozícii, spolu s ich hodnotami APIC ID je zakódovaný v tabuľke MADT ACPI.

Operačné systémy a topológia

Operačné systémy poskytovať informácie o topológii logických procesorov aplikáciám využívajúcim ich vlastné rozhrania.

V systéme Linux sú informácie o topológii obsiahnuté v pseudosúbore /proc/cpuinfo, ako aj výstup príkazu dmidecode. V nižšie uvedenom príklade filtrujem obsah cpuinfo na nejakom štvorjadrovom systéme, ktorý nie je HT, pričom ponechávam iba položky súvisiace s topológiou:

Skrytý text

[e-mail chránený]:~$ cat /proc/cpuinfo |grep "procesor\|fyzický\ id\|súrodenci\|jadro\|jadrá\|apicid" procesor: 0 fyzické ID: 0 súrodenci: 4 ID jadra: 0 jadrá procesora: 2 apicid: 0 počiatočné apicid: 0 procesor: 1 fyzické id: 0 súrodenci: 4 id jadra: 0 jadrá CPU: 2 apicid: 1 počiatočné apicid: 1 procesor: 2 fyzické id: 0 súrodenci: 4 id jadra: 1 jadrá cpu: 2 apicid: 2 počiatočné apicid: 2 procesor: 3 fyzické ID: 0 súrodenci: 4 ID jadra: 1 jadrá procesora: 2 apicid: 3 počiatočné apicid: 3

Vo FreeBSD je topológia hlásená prostredníctvom mechanizmu sysctl v premennej kern.sched.topology_spec ako XML:

Skrytý text

[e-mail chránený]:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 skupina NITEskupina SMT 2, 3 skupina NITEskupina SMT 4, 5 skupina NITEskupina SMT 6, 7 skupina NITEskupina SMT

V MS Windows 8 je možné zobraziť informácie o topológii v Správcovi úloh.