Ako funguje procesor. Určené pre stredné školy

Procesor, označovaný aj ako centrálna procesorová jednotka (CPU), je najzákladnejšou a stále najdôležitejšou súčasťou počítača. Ide o tú časť, ktorá spracúva a vykonáva všetky úlohy dané inštrukciami, ktoré sa počítaču zadávajú prostredníctvom kódu programov, súčasne sa k nej rôznymi spôsobmi pripájajú periférne zariadenia, operačná pamäť a úložisko (disk, SSD a predtým napríklad aj pásky). Je to teda naozaj centrálny prvok počítača.

Inštrukčná súprava

Procesor spracováva strojové inštrukcie programu, ktoré nie sú rovnaké ako kód, ktorý píše programátor—ten sa najprv pomocou prekladača na strojový kód musí preložiť. Strojový kód viac zodpovedá tomu, ako operácie vykonáva samotné CPU a jeho inštrukcie môžu byť rôzne. Existuje preto viac rôznych tzv. inštrukčných súprav, ktoré predstavujú súbor všetkých inštrukcií podporovaných procesorom (ktorý nemusí byť statický, ale zvyčajne sa postupne rozširuje).

Na základe jednej konkrétnej inštrukčnej súpravy typicky vznikne či vzniká viac procesorov, ktoré sú potom vďaka rovnakej inštrukčnej súprave kompatibilné a umožňujú spúšťať rovnaký preložený strojový kód. Takéto procesory potom tvoria platformy či rodiny, niekedy sa tiež hovorí o „architektúre“, čím sa ale myslí architektúra inštrukčnej súpravy, nie architektúra konkrétneho jadra procesora (tej sa niekedy hovorí „mikroarchitektúra“).

Okolo inštrukčných súprav CPU sa preto vytvára ekosystém operačných systémov a programov, ktoré je možné spúšťať na počítačoch s procesorom danej inštrukčnej súpravy, napríklad ekosystém operačného systému Windows, Linux a podobných na procesoroch Intel, AMD a Zhaoxin, ktoré používajú inštrukčnú súpravu x86 (presnejšie povedané, jej 64-bitovú verziu, niekedy označovanú x64). V mobilných telefónoch existuje taký ekosystém okolo procesorov ARM.

„Bitovosť“

Staršie procesory sa často delia na generácie označené ako 8-bitové, 16-bitové, 32-bitové a 64-bitové (v minulosti sa ale objavovali aj exotickejšie „nepravidelné“ architektúry s inými „veľkosťami“). Toto číslo charakterizujúce procesor môže mať rôzny význam. Označovalo najmä veľkosť operandu (spracovávanej dátovej hodnoty, respektíve veľkosti registrov, do ktorých sa tieto hodnoty ukladajú), ale často tiež schopnosť adresovania pamäte (čo je počet bitov adresy, ktorá rozlišuje pozíciu dát v pamäti—počet bitov určuje, aká veľká je maximálna kapacita pamäte, s ktorou možno pracovať). A aby to bolo zložitejšie, svoju šírku v bitoch (niekedy odlišnú) má aj zbernica procesora slúžiaca na vstup a výstup dát. Napríklad Motorola 68000 bol z veľkej časti už 32-bitový procesor (má 32-bitové registre), ale z úsporných dôvodov mali prvé generácie len 24-bitové adresovanie pamätí a dátovú zbernicu iba 16-bitovú, takže 32-bitové hodnoty sa museli prenášať v dvoch cykloch.

8-bitové mikroprocesory (ktoré ale často mali 16-bitové adresovanie pamäte, pretože 8-bitové adresy dávajú nepoužiteľne malú kapacitu) poháňali prvé vlny domácich počítačov a počítačov pre firmy zo 70. rokov, ktoré ešte neboli PC kompatibilné—napríklad rodiny počítačov Atari 800, Sinclair ZX Spectrum, Commodore C64, Apple II. Významní predstavitelia boli Intel 8080, Zilog Z80 (kompatibilný evolučný nástupca), MOS Technology 6502.

16-bitové procesory v osobných počítačoch nastupovali na prelome 70. a 80. rokov a boli napríklad základom prvých IBM PC (s x86 procesormi Intel 8088/8086 a Intel 286) a kompatibilných zariadení, od ktorých sa odvíja veľká časť moderných počítačov. 16-bitová bola aj rada procesorov zložených ešte zo samostatných súčiastok, napríklad v historicky významných počítačoch DEC PDP-11.

Historické 32-bitové x86 procesory AMD a Intel a 64-bitový Athlon 64 (foto: Jan Olšan)
Historické 32-bitové x86 procesory AMD a Intel a 64-bitový Athlon 64 (foto: Jan Olšan)

Pomerne rýchlo už v 80. rokoch došlo u počítačov k prechodu na 32-bitové procesory (u ktorých 32-bitové adresy umožňujú mať až 4 GB RAM), ktoré vydržali dlhšiu dobu. Príklady: Intel 386, 486, Pentium a neskoršie, AMD K5, K6, Athlon, rodina procesorov Motorola 68000, staršie generácie RISC procesorov MIPS, IBM POWER/PowerPC, Sun SPARC.

Zhruba okolo prelomu storočia došlo k prechodu na 64-bitové procesory, ktoré teoreticky umožnia až 16 EB (exabajtov, alebo 16 777 216 TB) pamäte, čo zrejme bude stačiť ešte veľmi dlho. Na 64-bitové architektúry prešli najprv RISC procesory, v procesoroch x86 pre osobné počítače patrilo prvenstvo Athlonu 64 a Opteronu od AMD. Prakticky všetky nasledujúce modely AMD a Intelu (od neskorších modelov Pentia 4 a Core 2) už sú tiež 64-bitové. Naposledy prešli k 64-bitovej inštrukčnej súprave procesory ARM v mobiloch počnúc rokmi 2013–2014, od tej doby sa už toto rozlišovanie uplatňuje len v mikroradičoch a embedded jadrách a čipoch.

AMD Athlon 64, prvý x86 procesor so 64-bitovou architektúrou

Významné inštrukčné súpravy

Najdôležitejšie inštrukčné súpravy používané dnes sú spomínané inštrukčné súpravy x86 a ARM. x86 (x64) sa odvodzuje od procesora Intel 8086 (z roku 1976) a postupnou evolúciou získavala nové inštrukcie a výkonnejšie implementácie až do súčasnej doby. Vedľa Intelu začali CPU s touto architektúrou vyrábať ďalšie firmy v čase, keď bol procesor 8088 (lacnejšia verzia 8086) zvolený pre počítač IBM PC, ktorý založil platformu osobných počítačov používanú dodnes. Najvýznamnejším z týchto ďalších výrobcov je spoločnosť AMD, ktorá na tomto trhu vydržala od 80. rokov a vznikol z nej druhý úplne plnohodnotný dodávateľ procesorov tejto inštrukčnej súpravy pre PC, ktorý sa podieľa aj na jej ďalšom smerovaní (AMD, nie Intel, napríklad vyvinula 64-bitovú evolúciu architektúry). Firmy spolu nedávno vytvorili konzorcium, ktoré má vývoj x86 harmonizovať.

Inštrukčná súprava ARM vznikla o trochu neskôr v roku 1985, až neskôr však našla svoju súčasnú baštu na trhu mobilných telefónov. Aktuálne používané verzie ARMv8 a ARMv9 sú ale až z tohto storočia a sú novo navrhnutou súpravou, namiesto toho, aby vznikli z línie predchádzajúcich generácií súpravy ARM; nie sú s nimi kompatibilné). Zatiaľ čo x86 je svojím historickým vývojom súprava typu CISC, ARM má niektoré rysy RISC (konštantná dĺžka inštrukcií), dnes už ale má veľké množstvo často komplexných inštrukcií, takže už princípom RISC nezodpovedá.

ARM procesor Nvidia RTX Spark, či tiež Nvidia GB10 (Autor: Gigabyte)
ARM procesor Nvidia RTX Spark, či tiež Nvidia GB10 (Autor: Gigabyte)

Aktuálne získava význam inštrukčná súprava RISC-V, ktorá vznikla v akademickom prostredí a viac zodpovedá pôvodnej koncepcii RISC než dnešné verzie ARM. Postupne bola prevedená do reálne vyrábaných procesorov v priebehu posledných 10 rokov. Jej výhodou je, že procesory s ňou môže vyrábať ktokoľvek (na rozdiel od x86) a nie je zviazaná so žiadnymi licenčnými poplatkami (čo je prípad ARMu). Aktuálne na trhu nie sú vysoko výkonné procesory RISC-V pre osobné počítače a servery a tiež chýba softvérový ekosystém pre tieto oblasti, takže teraz je využitie procesorov založených na inštrukčnej súprave RISC-V v podstate obmedzené na trh čipov pre vestavné zariadenia, vestavné jadrá integrované do čipov s inou funkciou (napríklad do radičov SSD) a na mikroradiče.

Doska Milk-V Titan s procesorom architektúry RISC-V. Podobný hardvér zatiaľ slúži hlavne na vývoj, táto inštrukčná súprava sa ešte nepresadila v klientskych zariadeniach (Autor: Milk-V)
Doska Milk-V Titan s procesorom architektúry RISC-V. Podobný hardvér zatiaľ slúži hlavne na vývoj, táto inštrukčná súprava sa ešte nepresadila v klientskych zariadeniach (Autor: Milk-V)

Významné inštrukčné súpravy minulosti

Niektorými dnes už neaktívnymi významnými inštrukčnými súpravanu v histórii bola napríklad inštrukčná súprava procesorov Motorola 68000 (CISC), tieto procesory používalo množstvo počítačov konkurujúcich PC (Apple, Atari ST, Amiga) aj herné konzoly. Prechodný úspech mali RISC inštrukčné súpravy MIPS, SPARC spoločnosti Sun a PowerPC, respektíve POWER spoločnosti IBM (vedľa neho ju vyrábala Motorola a neskôr Freescale), avšak eventuálne stratili svoje trhy a význam a boli nahradené procesormi s inštrukčnými súpravami x86 a ARM. Čiastočnou výnimkou sú procesory Power, ktoré prežívajú okrajovo v proprietárnych serveroch IBM.

Kremík procesora IBM Power10 (Autor: IBM, via HardwareLuxx)

Odlišná inštrukčná súprava je bariérou pre kompatibilitu softvéru a menej rozšírené inštrukčné súpravy majú menšie softvérové ekosystémy, čo vedie k tomu, že takéto platformy horšie konkurujú veľkým a široko rozšíreným ekosystémom majoritných inštrukčných súprav. To je hlavný dôvod, prečo sa tieto ďalšie inštrukčné súpravy neudržali na trhu.

História: O čom bolo súperenie CISC versus RISC?

Procesory a mikroprocesory sa spočiatku vyvíjali do podoby, keď mali relatívne veľké počty inštrukcií, z ktorých niektoré vykonávali aj dosť zložité operácie ako je odmocnina alebo delenie, ktoré trvali mnoho cyklov. Inštrukcie tiež mali rôzne dĺžky (rôzny počet bajtov). Táto koncepcia, či skôr postupne spontánne vykryštalizovaná podoba procesorov, bola neskôr spätne označená ako CISC (complex instruction set computer = procesor či počítač s komplexnou inštrukčnou súpravou).

Na prelome 70. a 80. rokov sa začala propagovať koncepcia procesorov RISC v kontraste k tomu, čo bolo spätne označené ako CISC. Procesory RISC majú naopak redukovanú inštrukčnú súpravu (RISC = reduced instruction set computer). Znamenalo to, že počet inštrukcií bol obmedzený, boli napríklad zrušené inštrukcie vykonávajúce operácie s hodnotami v pamäti (namiesto toho prekladač kódu použil separátnu inštrukciu na nahranie dát z pamätí do registrov a potom inštrukciu pracujúcu s registrom). Procesory nemali zložité inštrukcie ako delenie a niekedy ani násobenie, ktoré musel prekladač softvéru nahradiť sledom základných operácií na úrovni softvéru. Dôležitým rysom bolo, že inštrukcie mali konštantnú dĺžku.

Prínosom týchto zjednodušení malo byť, že procesory sa budú ľahšie navrhovať a budú potrebovať menej tranzistorov, navyše bude možné u nich použiť pokročilejšie techniky ako pipelining a vykonávanie inštrukcií mimo poradia. A vo výsledku tak osekanie schopností procesorov malo viesť k ich vyššiemu praktickému výkonu.

V 80. a 90. rokoch sa predpokladalo, že procesory RISC vytlačia staršie inštrukčné súpravy CISC vrátane x86. Avšak ukázalo sa, že vďaka širokému trhu pre procesory x86 mali výrobcovia týchto procesorov dostatok prostriedkov a motivácie na zdokonalenie ich architektúry tak, aby nevýhody CISC prekonali. Súčasťou toho bolo, že rad komplexných operácií procesory x86 začali interne rozkladať na jednoduché operácie podobné RISC procesorom. Súčasne mali inštrukčné súpravy RISC tendenciu k postupnému nárastu počtu inštrukcií a niektoré komplexné inštrukcie boli zase pridávané späť kvôli výkonu, takže sa rozdiely postupne stierali. Procesory Intel a AMD nakoniec v konkurenčnom boji proti rôznym procesorom RISC vyhrali tiež preto, že za sebou mali väčší trh.

Základná doska Raptor Computing Systems Talos II pre procesory IBM Power9 (Autor: Raptor Computing Systems)
Základná doska Raptor Computing Systems Talos II pre procesory IBM Power9 (Autor: Raptor Computing Systems)

Dnes možno povedať, že už rozlišovanie architektúr RISC a CISC prakticky nemá význam, pretože dnes už na trhu sú prakticky všetky procesory „niečím medzi“ týmito konceptami. Mikroarchitektúry implementujúce dnes inštrukčné súpravy ARM, Power dnes budú podobne zložité ako u x86, ak majú mať rovnaký výkon. Z pôvodných dizajnových rysov RISC má dnes pretrvávajúci význam hlavne použitie inštrukcií s konštantnou šírkou, ktoré zjednodušuje návrh inštrukčných dekodérov a pomáha ľahšie dosahovať vysoké výkony (oproti procesorom x86 s premennou dĺžkou inštrukcií).

FPU, SIMD a matice

Rozširovanie schopností procesorov je niečo, čo sa dialo a deje prakticky u všetkých inštrukčných súprav. K pôvodným celočíselným a aritmeticko-logickým operáciám vykonávaným jednotkami ALU sa napríklad neskôr pridali inštrukcie pracujúce s dátami s plávajúcou (či pohyblivou) rádovou čiarkou (anglicky „floating point“). Podpora týchto operácií ale nebola vždy súčasťou procesora. Prechodne ju zabezpečovali separátne čipy FPU (floating point unit) implementujúce tieto inštrukcie (u x86 sa napríklad označovali 287, 387 či 487, preto sa tieto inštrukcie označujú x87).

Takýmto čipom sa hovorilo v kontraste k samotnému procesoru koprocesory. Spočiatku neboli zďaleka povinné a osobné počítače ich nemuseli obsahovať, v generáciách 486 a Pentium sa ale stali pevnou súčasťou jadra a inštrukcie x87 súčasťou inštrukčnej súpravy x86. Avšak koprocesorový pôvodný charakter je stále viditeľný na tom, že napríklad používajú odlišné registre.

Ku koprocesorom sa dajú priradiť aj neskôr pridané jednotky SIMD, ktoré sú prakticky vždy priamo integrované do jadra CPU a začali sa v CPU široko objavovať v druhej polovici 90. rokov. SIMD znamená „jedna inštrukcia, viac dát“ (single instruction, multiple data) a zmyslom týchto inštrukcií je vykonávať dané operácie vždy s viacerými dátami naraz, na čo majú širší register—napríklad 128-bitový register umožňuje pojať štyri 32-bitové alebo až šestnásť osembitových hodnôt (možno o nich uvažovať ako o vektore), a jedna inštrukcia potom môže vykonať napríklad súčet so všetkými hodnotami v takýchto registroch naraz. Inštrukcie SIMD vďaka tomu môžu výrazne zlepšiť výkon v práci s multimédiami, grafikou, alebo veľkým množstvom numerických výpočtov, najmä pri ručnej optimalizácii (vektorizácii) kódu (automatické využitie SIMD inštrukcií prekladačom softvéru sa nazýva autovektorizácia).

V x86 procesoroch pre PC sa ako prvé objavilo rozšírenie MMX v procesoroch Pentium MMX v roku 1995, ktoré malo šírku registra 64 bitov a využívalo rovnaké registre, používané pre x87 operácie v FPU. Neskôr pribudli pokročilejšie SIMD rozšírenia SSE až SSE4 so šírkou registra 128 bitov (prvýkrát v roku 1999), AVX až AVX2 so šírkou 256 bitov (2011) a napokon rodina rozšírení AVX-512 so šírkou 512 bitov (prvýkrát 2017, v budúcnosti sa prejde na označenie AVX10). Veľmi široká podpora SIMD operácií a ich vysoký výkon kvôli veľkej šírke registra (najmä u AVX-512) je jednou z výhod procesorov x86.

SIMD inštrukcie AVX, AVX2, AVX-512 a AVX10 (Zdroj: Intel)
SIMD inštrukcie AVX, AVX2, AVX-512 a AVX10 (Zdroj: Intel)

Procesory ARM poskytujú rozšírenie NEON so šírkou 128 bitov a s verziou inštrukčnej súpravy ARMv9 bola štandardizovaná navyše rozšírenia SVE a SVE2, ktoré umožňujú, aby procesory mali rôznu šírku registrov (od 128 teoreticky až po 2048 bitov) pri zachovanej kompatibilite kódu programov—hoci to pridáva komplexitu navyše do kódu. Procesory RISC-V prišli v nedávnej dobe s podobne koncipovaným rozšírením RVV.

Dnes sa začínajú objavovať aj tzv. maticové rozšírenia, ktoré sú koncepčne podobné SIMD, ale vykonávajú inštrukcie s ešte väčším množstvom operandov naraz, nad celými maticami hodnôt. Tieto rozšírenia sú v x86 procesoroch AMX (prvýkrát v procesoroch Intel Xeon Scalable 4. generácie, 2022) a v budúcnosti pribudne rozšírenie ACE (to sa má objaviť napríklad v procesoroch architektúry Zen 7 od AMD v roku 2028). Procesory ARM majú maticové rozšírenie SME.

Článok pokračuje na ďalšej strane…


⠀⠀⠀

Intel Core Ultra 5 245K vs. AMD R5 9600X alebo… R7 9700X?

Najnižší „K“ model z rodiny procesorov Intel Arrow Lake ťaží tak, ako jeho predchodcovia, z veľkého počtu jadier. Na rozdiel od nich síce nemá Hyper Threading, ale výpočtovo nezaostáva a pritom je Core Ultra 5 245K efektívnejšia. Na konkurenčné Ryzeny 9000 to však nestačí. Nie pri vysokom výkone. V strednej záťaži, typickej herných počítačom, sa však situácia otáča. Procesor Intel má, pokiaľ ide o efektivitu, navrch. Celý článok „Intel Core Ultra 5 245K vs. AMD R5 9600X alebo… R7 9700X?“ »

Intel Core Ultra 9 285K: Viacvláknová „jednotka“ aj bez HT

Na trón absolútneho výkonu usadol nový procesor – Intel Core Ultra 9 285K. Áno, je to tesné, na úkor vyššej spotreby a nižšej efektivity, ale to je nutná daň, ktorú treba zaplatiť za tú „úplnú špičku“. Isteže, niekto ono prvenstvo rád oželie v prospech atraktívnejších prevádzkových vlastností, každopádne 24-jadrový procesor je tým, ktorý udáva tempo vo výpočtových úlohách na mainstreamovej platforme. V tomto prípade na Intel LGA 1851. Celý článok „Intel Core Ultra 9 285K: Viacvláknová „jednotka“ aj bez HT“ »

Intel Core Ultra 7 265K: Efektivita často nad Ryzen 7 9700X

Desktopové procesory Intel v generácii Arrow Lake prešli na mnohých úrovniach výraznou premenou. Odhliadnuc od nových architektúr výkonných (P) aj efektívnych (E) jadier sú už čipletové a napríklad prestali používať Hyper Threading. Súčasne sa znížila spotreba a procesor Core Ultra 7 265K je už oproti konkurencii neraz energeticky efektívnejší. To aj v hrách, čo sme doteraz nevídali. Celý článok „Intel Core Ultra 7 265K: Efektivita často nad Ryzen 7 9700X“ »

Komentáre (3) Pridať komentár

  1. Je možné, že v texte budú nejaké chyby, ktoré vznikli pri preklade (z češtiny, v ktorej to Jano písal originálne), tak ak na nejakú narazíte, môžete ju uviesť sem alebo potom na info@hwcooling.net. To isté platí pre faktické výhrady, ak nejaké máte. Cieľ je, aby bolo všetko presné… doplniť, čo uznáte za vhodné, samozrejme, môžete tiež. K tomu už bola výzva priamo z článku. 🙂

  2. ja by som este k cipletom doplnil, ze umoznuju jednou technologiou lahko vyrabat procesory roznych cenovych hladin.. vyvinies len 1 aktualny hardware, ale na procesor ich osadis 1-2-3… a mas produkt pre rozne vykony a rozne cenove kategorie. Tiez ti to umozni znizit pocet odpadu, lebo napr. chiplet ma 4 jadra. Vyrobis ale taky kus, ktory ma 2 OK a 2 pokazene jadra… tak to predas ako 2jadro, alebo das 2 take chiplety a mas 2+2=4 dobre jadra. Tie 4 zle deaktivujes. Tak sa zvysuje vytaznost vyrobneho procesu…

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *