Skoči na vsebino

Zgodovina računalništva in paralelizem

Razvoj računske moči

Razvoj računske moči je zgodba o neprestanih inovacijah, ki jih poganja potreba po hitrejših in učinkovitejših napravah. Zgodnji računalniki so bili ogromne naprave v velikosti celotnih sob, zasnovane za specializirana opravila, kot so zapletene matematične izračune in vojaško razbijanje kod. Sčasoma so tehnološke izboljšave omogočile, da so računalniki postali manjši, zmogljivejši in dostopnejši širši javnosti, kar je končno vodilo v sodobno obdobje osebnih računalnikov.

Prvi računalniki: od mehanskih do elektronskih

Pred elektronskimi računalniki so zgodnji mehanski kalkulatorji, kot je Analytical Engine Charlesa Babbaga, avtomatizirali aritmetične operacije. Vendar so bile zaradi zapletenosti in fizičnih omejitev te naprave nepraktične za obsežnejše računsko delo.

Pravi preboj je nastopil z razvojem elektronskih računalnikov, ki so drastično povečali hitrost obdelave. Med prvimi splošnonamenskimi elektronskimi računalniki je bil ENIAC (Electronic Numerical Integrator and Computer), ki je namesto elektronk uporabljal vakuumske cevi za izvajanje tisočev izračunov na sekundo. Kasnejši računalnik UNIVAC (Universal Automatic Computer) je elektronsko računalništvo uvedel v poslovne in vladne aplikacije, s tem pa zaznamoval začetek široke uporabe.

Prehod na tranzistorje in integrirana vezja

Sredi 20. stoletja so tranzistorji nadomestili vakuumske cevi ter omogočili hitrejše, manjše in energetsko učinkovitejše računalnike. Ta prehod je tlakoval pot k razvoju glavnih računalnikov (mainframes) in sčasoma osebnih računalnikov. Izum integriranega vezja v 60. letih je še dodatno zmanjšal velikost računalniških komponent, kar je omogočilo eksponentne izboljšave v računski moči in učinkovitosti.

Prehod z enojedrnih na večjedrne procesorje

Dolga desetletja so se izboljšave v računski moči dosegle predvsem z višanjem taktne frekvence enojedrnih procesorjev. Osebni računalniki iz 80. let so delovali s hitrostmi v megahertzu (MHz), kasnejše generacije pa so dosegle gigahertze (GHz). Vendar so fizične omejitve, kot sta odvajanje toplote in poraba energije, v začetku 2000-ih let preprečile nadaljnje znatno povečevanje taktnih frekvenc.

Doba enojedrnih procesorjev: meje zaporednega izvajanja

Sprva je večina računalnikov imela enojedrne procesorje, kar pomeni, da je eno samo jedro zaporedno izvajalo vsa računanja. Višje taktne frekvence so sicer omogočile večjo zmogljivost, toda z električnimi in termičnimi omejitvami se je izkazalo, da zgolj poviševanje taktne frekvence dolgoročno ni vzdržen način za doseganje boljših rezultatov.

Pojav večjedrnih procesorjev

Da bi presegli te omejitve, se je računalniška industrija usmerila v večjedrne procesorje. Namesto da bi se opirali na eno jedro, ki mora opraviti vsa računska opravila, večjedrne arhitekture porazdelijo obremenitev med več procesnih enot. Ta pristop omogoča vzporedno izvajanje, kar znatno izboljša zmogljivost v aplikacijah, ki so prilagojene za večnitno obdelavo.

Sodobni osebni računalniki običajno vključujejo procesorje s štirimi do dvanajstimi jedri, medtem ko imajo visoko zmogljivi strežniki in superračunalniki lahko desetine ali celo stotine jeder, kar omogoča sočasno obdelavo velikanskih računskih nalog.

Moorov zakon in njegov vpliv na računalništvo

Leta 1965 je Gordon Moore, soustanovitelj Intela, opazil, da se število tranzistorjev v integriranem vezju podvoji približno vsakih dveh let. To napoved, znano kot Moorov zakon, se že desetletja izkaže za natančen vodnik pri eksponentni rasti računske moči.

Eksponentna rast gostote tranzistorjev

Moorov zakon je pravilno napovedal, da bo večja gostota tranzistorjev pomenila hitrejše, manjše in energetsko učinkovitejše procesorje. To načelo je poganjalo napredek pri osebnih računalnikih, mobilnih napravah ter na področju visoko zmogljivega računalništva.

Ustavitev rasti takta in vzpon paralelizma

Kljub nenehnemu povečevanju gostote tranzistorjev je rast taktnih frekvenc okoli leta 2005 stagnirala zaradi fizičnih omejitev. Zato je večji poudarek prešel na vzporedne računalniške arhitekture, vključno z večjedrnimi procesorji, GPU-ji in porazdeljenimi računalniškimi sistemi.

Leto Procesor/Naprava Število tranzistorjev Zmogljivost (FLOPS) Opombe
1971 Intel 4004 2.300 N/A Prvi komercialno dostopen mikroprocesor.
1974 Intel 8080 6.000 N/A Široko uporabljen v zgodnjih osebnih računalnikih.
1978 Intel 8086 29.000 N/A Osnova za x86 arhitekturo.
1982 Intel 80286 134.000 N/A Uvedel zaščiten način delovanja (protected mode).
1985 Intel 80386 275.000 N/A Prvi 32-bitni procesor v x86 liniji.
1989 Intel 80486 1.200.000 N/A Vgrajena FPU enota, izboljšana zmogljivost.
1989 🔷 Uvedba cevovodnega (pipeline) pristopa – Intel 80486 je vpeljal 5-stopenjski cevovod, kar je izboljšalo prepustnost ukazov.
1993 Intel Pentium 3.100.000 N/A Super-skalarnost, izboljšana zmogljivost.
1997 Intel Pentium II 7.500.000 N/A Izboljšane zmogljivosti za multimedijo.
1999 Intel Pentium III 9.500.000 N/A Predstavil SSE nabor ukazov.
2000 Intel Pentium 4 42.000.000 N/A Višje taktne frekvence, nova arhitektura.
2006 Intel Core 2 Duo 291.000.000 N/A Dvojno jedro, poudarek na energijski učinkovitosti.
2006 🔷 Uvedba večjedrnega procesorja – Intel Core 2 Duo je uradno vpeljal večjedrne procesorje v glavni tok.
2008 Intel Core i7 731.000.000 N/A Nehalem arhitektura, vgrajen krmilnik za pomnilnik.
2006 🔷 Prvi GPGPU (General-Purpose GPU) z Nvidiino Unified Shader Model – GeForce 8800 GTX je uvedel CUDA, kar je omogočilo GPGPU računalništvo.
2012 NVIDIA Kepler GK110 (Tesla K20) 7.080.000.000 1,17 TFLOPS Visokozmogljivi GPU za znanstvene izračune.
2016 NVIDIA Pascal GP100 (Tesla P100) 15.300.000.000 5,3 TFLOPS Napredna GPU arhitektura, velik preskok v zmogljivosti.
2020 NVIDIA Ampere GA100 (A100) 54.200.000.000 19,5 TFLOPS Vrhunski GPU za AI in visoko zmogljivo računalništvo.

Vloga GPU-jev v vzporednem računalništvu

Čeprav so bili procesorji (CPU) tradicionalno glavni delovni konji v računalnikih, je pojav grafičnih procesnih enot (GPU) prinesel dodatno raven paralelizma. Sprva namenjeni izrisu grafike so se GPU-ji razvili v zmogljive vzporedne procesorje, sposobne hkratne obdelave velikih količin podatkov.

Razvoj GPU-jev

Zgodnji GPU-ji so bili namenjeni predvsem pospeševanju grafičnih izračunov v videoigrah in simulacijah. Ko pa se je povečalo povpraševanje po visoko zmogljivem računalništvu, so GPU-ji postali nujni tudi za splošnejša računska opravila.

GPGPU (General-Purpose GPU) računalništvo

Sredi 2000-ih so raziskovalci ugotovili, da je masivno vzporedna arhitektura GPU-jev uporabna za splošnonamenske izračune. Tako se je uveljavilo GPGPU računalništvo, pri katerem se GPU-ji uporabljajo za znanstvene simulacije, strojno učenje in umetno inteligenco.

Primerjava paralelizma pri GPU in CPU

  • CPU-ji: Optimizirani za enonitno učinkovitost, primerni za splošno rabo.
  • GPU-ji: Optimizirani za masovni paralelizem, lahko sočasno poganjajo na tisoče niti.

GPU-ji so postali ključni v področjih, kot sta globoko učenje in umetna inteligenca, kjer je nujna obdelava velikih podatkovnih nizov. Mnogi superračunalniški sistemi danes združujejo CPU-je in GPU-je za največjo učinkovitost pri računskih postopkih.

Inovacije v arhitekturi GPU

Sredi 2000-ih je NVIDIA uvedla Unified Shader Model, ki je GPU-jem omogočil izvajanje tako grafičnih kot tudi splošnonamenskih vzporednih izračunov. Ta novost je razširila uporabnost GPU-jev v znanstvenem računalništvu, finančnem modeliranju in obsežnih simulacijah.

Osnovna arhitektura: Tradicionalni cevovod vs. Nvidiina Unified Shader Model

NVIDIA Unified shader model

Kako je Unified Shader Model odprl pot splošnonamenskemu računalništvu na GPU-jih

V tradicionalnih grafičnih cevovodih so bili specializirani shaderji (vertex, geometry in fragment) fizično ločeni v strojno vezje s točno določeno funkcijo. Tak pristop je bil učinkovit pri izrisu grafike, vendar manj prilagodljiv za širši nabor računskih problemov. Če je bil določen shader manj obremenjen, so tamkajšnji strojni viri ostali neizkoriščeni in jih ni bilo mogoče preusmeriti za druga opravila.

Ključne omejitve fiksnih arhitektur

  1. Točno določene strojne enote
    Vsaka stopnja (vertex, geometry, fragment) je bila v svoji namenski strojni vezavi, kar otežuje preusmerjanje virov za drugačna opravila.
  2. Neizkoriščeni viri
    Pri nekaterih grafičnih obremenitvah je ena stopnja povsem obremenjena, druga pa ne, kar pomeni izgubo razpoložljive moči.
  3. Omejena prilagodljivost
    Fiksne zasnove so odlične za rasterizacijo, vendar neprimerne za splošne izračune, kot so znanstvene simulacije ali podatkovna analitika.

Vstop Unified Shader Modela

Unified Shader Model združuje vse stopnje shaderjev v enoten nabor programabilnih jeder. V tem sistemu lahko katerokoli jedro izvaja funkcije vertex, geometry ali fragment, odvisno od potreb delovne obremenitve. Če je recimo potrebe po vertex izračunih manj, lahko preostala jedra izvajajo fragment shader in tako dinamično uravnotežijo obremenitev.

Prednosti enotne arhitekture

  1. Dinamično uravnoteževanje
    Vsa jedra so enaka, zato lahko GPU razporeja opravila na prosta jedra, s čimer noben del čipa ne ostane neizkoriščen.
  2. Programabilnost
    Enotna jedra so zasnovana za širok spekter izračunov, kar razvijalcem omogoča, da na GPU-ju poganjajo programe (kernels), ki presegajo zgolj izris grafike (npr. fizikalne simulacije, strojno učenje).
  3. Učinkovitejša poraba virov
    Ker lahko vsako jedro izvaja različne operacije, lahko razvijalci bolje izkoristijo paralelizem GPU-jev tudi pri negrafičnih obremenitvah.

Pot do GPGPU

Z enotnimi jedri je splošnonamensko računalništvo na grafičnih procesorjih (GPGPU) postalo izvedljivo. Ključni dejavniki te prelomnice so bili:

  • Programabilnost: Programabilna zasnova enotnih shaderjev je razvijalcem in raziskovalcem omogočila ponovno uporabo masovnega paralelizma GPU-jev za opravila, kot so matrično množenje, fizikalni izračuni ali kriptografija.
  • API-ji in ogrodja: Vodilna podjetja so razvila API-je (npr. CUDA, OpenCL), ki programerjem omogočajo nizkonivojski dostop do GPU-ja za splošna opravila.
  • Velika paralelna prepustnost: Tisoči enot v GPU-ju lahko tečejo vzporedno, kar pri močno paraleliziranih opravilih bistveno presega zmogljivosti CPU-ja.

Unified Shader Model je tako pomenil ključno preoblikovanje fiksno zasnovanih, le grafično usmerjenih arhitektur v popolnoma programabilne in prilagodljive sisteme. Zaradi te prilagodljivosti in dinamičnega upravljanja z viri so GPU-ji postali zmogljivo orodje ne samo za izris grafike, temveč tudi za reševanje zapletenih računskih izzivov v znanosti, umetni inteligenci in analizi velikih podatkov. To je prineslo razmah GPGPU računalništva, ki izkorišča neprekosljivo stopnjo vzporedne obdelave za širok spekter aplikacij.

Vloga GPU-jev v superračunalništvu

Sodobni superračunalniki izrabljajo pospeševanje z GPU-ji za doseganje eksaflopskih zmogljivosti (en kvintilijon izračunov na sekundo). Kombinacija večjedrnih procesorjev (CPU), visokozmogljivih GPU-jev in porazdeljenega računalništva je prinesla pomembne napredke na področjih, kot so vremensko napovedovanje, medicinske raziskave in umetna inteligenca.

Zaključek: Prihodnost vzporednega računalništva

Kot se računalništvo še naprej razvija, ostaja paralelizem ključen dejavnik za nadaljnji napredek. Z večjedrnimi CPU-ji, GPU-ji in specializiranimi procesorji za umetno inteligenco je sposobnost učinkovitega razporejanja nalog med različne računalniške enote pomembnejša kot kadar koli prej.

Glavni trendi, ki oblikujejo prihodnost računalništva, so: - Heterogeno računalništvo: Združevanje CPU-jev, GPU-jev in specializiranih pospeševalnikov za maksimalno učinkovitost. - Kvantno računalništvo: Raziskovanje povsem novih načinov vzporedne obdelave informacij. - Pospeševanje umetne inteligence in strojnega učenja: Uporaba strojne opreme, posebej zasnovane za globoko učenje.

Od najzgodnejših mehanskih kalkulatorjev do današnjih superračunalnikov visoke zmogljivosti je vzporedno računalništvo vedno gonilo tehnološkega napredka. Nadaljnje inovacije v strojni in programski opremi bodo še naprej razširjale meje tega, kar je računsko mogoče.