Vreme “lakog” povećanja performansi sistema/aplikacija poboljšavanjem performansi (pojedinačnog jezgra) procesora je dostiglo svoj vrhunac. Udarili smo u limite tehnologije/fizike usled povećanog kašnjenja i generisanja toplote. Zato i ne možemo više da povećavamo takt jednog jezgra, što dovodi do pukog bržeg izvršavanja instrukcija, tj. bržeg izvršavanja jednog procesa/niti na tom jezgru.

Ali Moore-ova zakonitost je još uvek na snazi, stoga dizajneri čipova i dalje dobijaju povećanje budžeta u vidu dodatnih tranzistora sa kojima raspolažu. Zato smo još odavno počeli da gradimo procesore sa više jezgara, sisteme sa više procesora, tj. povećavamo stepen paralelizacije hardvera. Sve kako bismo povećali propusnu moć sistema, što ide na ruku kad imamo više aplikativnih procesa i veliki broj korisnika (engl. high-throughput computing) i višenitne (engl. multi-threaded) aplikacije.

Ali predviđanja kažu da smo (ovaj put zaista) blizu kraja “Moore-ove” krive rasta gde se broj tranzistora duplira svakih 18-24 meseca. Kroz 2-3 godine očekuje se kraj Moore-ove zakonitosti. Postavlja se pitanje šta i kako dalje? Potrebe aplikacija će nastaviti da se povećavaju. Istina da se većina novih aplikacija i servisa kroji po cloud-native šablonu – distribuirane su pa će moći da iskoriste paralelizan hardvera. Ali postoji i dalje sijaset “sekvencijalnih” aplikacija kao što mašinsko učenje, storage procesiranje itd, koje zavise od performansi jednog jezgra i “očekuju” povećanje njegovih performansi, koje ne možemo više da priuštimo. Možemo da:

  1. Povećavamo broj jezgara, ali i to ima svojih granica. Svakako aplikacija mora da bude napisana da iskoristi ovaj paralelizam, a tek ovde nismo posebno vešti, zbog postojanja “overhead“-a u paralelnom izvršavanju niti usled sinhronizacije i saradnje. Ovo svakako ide na ruku distribuiranim, mikroservisnim aplikacijama.
  2. Možemo da menjamo organizaciju hardvera/procesora, ali to zahteva pametne kompajlere, napredne i namenske optimizacije, daje ubrzanje samo u ograničenim slučajevima, ne daje garantovane/konzistentne rezultate… u prevodu, ovo je na “dugačkom štapu”.
  3. Ili možda da napravimo namenske (ko)procesore koji bi preuzeli funkcije kao što su grafičko procesiranje, mašinsko učenje (“AI”), heširanje/enkripcija, IO/storage funkcije (kompresija, deduplikacija, …) i sl?

Drugim rečima, možemo da višak tranzistora koji imamo na raspolaganju iskoristimo za dizajn procesora namenskih arhitektura sa dodatnim funkcijama implementiranim u hardveru/čipu kao što su:

  • Grafički procesor za grafičko procesiranje i mašinsko učenje
  • IO procesor za storage procesiranje i dodatne funkcionalnosti (kompresija, deduplikacija, enkodovanje, izračunavanje parity-ja)
  • Mrežni procesor sa dodatnim funkcijama (VXLAN enkapsulacija, ACL procesiranje, enkripcija)

Ovi procesori pošto bi imali specijalizovanu arhitekturu i namenske čipove mogu biti mnogo efektivniji u dostizanju željenih performansi, u pogledu broja utrošenih komponenti, potrošnje električne energije pa na kraju i cene. Razlog je što je čip koji je specijalizovan za određenu namenu mnogo efikasniji nego CPU opšte namene. Na ovaj način se (iako su specijalizovani hardverski čipovi načelno skuplji od opšteg procesora), kada se posmatra šira slika i ukupna cena sistem, postiže niža cena za zadate performanse (namenske) aplikacije. Zvuči paradoksalno, ali je istinito. Ne predstavlja ovo nikakvu novinu u računarstvu – npr. IBM Mainframe računari koji su imali visoke IO performanse zahvaljujući namenskim IO procesorima (engl. Channel I/O), čuveni Cray super-računari i njihova genijalna interna arhitektura i organizacija, grafičke procesore već koristimo uveliko, odavnina smo imali matematičke koprocesore za operacije sa pokretnim zarezom, moćne mrežne kartice već postoje (tzv. smartNICs).

IBM Mainframe IO organizacija

Stvar je samo da se ovaj dizajn pristup iskoristi planski i da se namenske komponente uklope u širu organizaciju računara namenjenog za efikasno izvršavanje današnjih aplikacija. Ima naravno dosta otvorenih pitanja: kako izgleda veza između komponenti (PCIe, specijalni crossbar interconnect, ..?), koju vrstu operativnog sistema koriste namenski procesori (monolit, mikro-kernel, exo-kernel?), kako različiti procesori međusobno sarađuju i dele podatke, koju arhitekturu procesori koriste (x86, ARM, RISC-V, ..?).

I za kraj, evo jednog izuzetno zanimljivog primera ovog dizajn pristupa iz domena personalnih računara – Commodore Amiga iz 1980-ih godina! Amiga je čuvena po svojim mogućnostima (fenomenalne multimedijalne sposobnosti, multi-tasking, grafički OS) i po jako niskoj ceni. Zato je i postala tako jak brend i stvorila grupu vernih ljubitelja koji su aktivni i danas, posle više od 30 godina. Elem, poznato je da se za te pare (Amiga 500 699$ 1987. godine) bolji računar nije mogao kupiti. Poređenja radi, IBM PC ~1500$ za početnu konfiguraciju 1982. godine, Apple Macintosh ~2500$ 1984. godine. Neki čak kažu da se ni za kakve pare bolji računar od Amige nije mogao kupiti. 😉

Commodore Amiga 500
Amiga 500 – Šema sistema

Tajna uspešnosti Amige jeste jeste upravo u primeni custom čipova za audio (Paula) i video (Denise) manipulisanje i brz prenos podataka iz/ka radnoj memoriji (Agnus), dodatne video koprocesore (Blitter, Copper).

Naravno, nije stvar samo do hardvera, nego i do elegantnog i minimalističkog mikro-kernel Exec OS-a, kao i moćnih dinamičkih biblioteka koje omogućavaju programeru da iskoristi mogućnosti hardvera. Sve je to elegantno uklopljeno u širu organizaciju što je izrodilo jedan moćan (personalni) računarski sistem.

Amiga 500 – (“fat”) Agnus čip

Možda je red da se malo ugledamo na lekcije i iskustva iz prošlosti, kako bismo izgradili efektivnije hw/sw sisteme umesto da se oslanjamo na povećanje performansi centralnog procesora i da sve prosiramo softverski?

Ako želiš da budeš u toku sa mitovima, trendovima i novostima iz sveta računarstva u Oblaku, prijavi se na “Ko se boji Klauda još?” Bilten!