62
Elektronski Fakultet – Niš Katedra za Elektroniku Predmet: Mikroprocesori i mikroračunari ISTORIJSKI RAZVOJ RAČUNARA MULTICORE ARHITEKTURE Mentor: Student: Prof. Dr. Mile Stojčev, red. prof. Stojanović Srđan Broj indeksa: 7695

ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

  • Upload
    hatram

  • View
    238

  • Download
    12

Embed Size (px)

Citation preview

Page 1: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Elektronski Fakultet – Niš Katedra za Elektroniku

Predmet: Mikroprocesori i mikroračunari

ISTORIJSKI RAZVOJ RAČUNARA

MULTICORE ARHITEKTURE

Mentor: Student:

Prof. Dr. Mile Stojčev, red. prof. Stojanović Srđan Broj indeksa: 7695

Page 2: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

S A D R Ž A J

Praistorija računara ..................................................................................................................... 4 Prva generacija (1945-1955) ........................................................................................................ 6 Druga generacija (1955-1965) ..................................................................................................... 9 Treća generacija (1965-1980) ...................................................................................................... 11 Četvrta generacija (1980 do danas) .............................................................................................. 11 Peta generacija (u razvoju) .......................................................................................................... 13 Istorijat razvoja mikroprocesora i mikroračunara ........................................................................... 13

Višejezgarne (multicore) arhitekture ............................................................................................. 24 Uvod .................................................................................................................................... 24 Nove arhitekture .................................................................................................................... 24 Šta je multicore ..................................................................................................................... 25 Multicore arhitekture .............................................................................................................. 25 Hibridne višejezgarne arhitekture ............................................................................................ 26 Pogled programera ................................................................................................................ 27

Osnovna arhitektura procesora .................................................................................................... 28 Procesor – CPU (Skup Instrukcija) .......................................................................................... 29 Memorija je ključ ................................................................................................................... 30 Registri ................................................................................................................................. 32 Keš ....................................................................................................................................... 33 Keš nivoa 1 (L1 keš) ......................................................................................................... 33 Keš nivoa 2 (L2 keš) ......................................................................................................... 33 Opcije prevodioca za keš ........................................................................................................ 34 Glavna memorija ................................................................................................................... 34 Veza između magistrala ......................................................................................................... 35

Od jednojezgarnih do višejezgarnih ............................................................................................. 36 Multiprogramiranje i Multiprocesiranje .................................................................................... 36 Paralelno Programiranje ........................................................................................................ 37 Projektovanje i Primena Aplikacija za Višejezgarne CPU ........................................................... 38 Rezime ...................................................................................................................................... 38

Četiri upečatljiva višejezgarna modela .......................................................................................... 39 AMD-ov Multijezgarni Opteron ..................................................................................................... 41 Opteronova Direktna Veza i Hiper Transport ............................................................................ 42 Arhitektura Direktne Veze ....................................................................................................... 42 Tehnologija Hiper Transporta ................................................................................................. 42 System Request Interface i Crossbar .......................................................................................... 43 Opteron je NUMA ................................................................................................................... 43 Keš i Multiprocesor Opteron .................................................................................................... 44

Sun-ov UltraSparc T1 Multiprocesor .............................................................................................. 45 UltraSparc-ova T1 Jezgra ........................................................................................................ 46

 ‐ 2 ‐

Page 3: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Cross Talk i Crossbar ............................................................................................................... 46 DDRAM Kontroler i L2 Keš ...................................................................................................... 46 UltraSparc T1 i Sun i GNU gcc Kompajleri ................................................................................ 46

IBM-ova Cell Širokopojasna Mašina (Cell Broadband Engine CBE) .................................................... 47 CBE i Linux ........................................................................................................................... 47 CBE Memorijski Modeli ........................................................................................................... 48 Sakriven od Operativnog Sistema ........................................................................................... 49 Sinergijska Procesorska Jedinica ............................................................................................. 49

Intel Core 2 Duo Procesor ........................................................................................................... 49 Northbridge i Southbridge ...................................................................................................... 50 Intelov PCI Ekspres ............................................................................................................... 51 Set Instrukcija procesora Core 2 Duo ...................................................................................... 51 Rezime ...................................................................................................................................... 52

Izazovi Višejezgarnog Programiranja ............................................................................................ 53 Šta je Sekvencijalni Model? .................................................................................................... 53 Šta je konkurentnost? ............................................................................................................ 54

Razvoj Softvera .......................................................................................................................... 55 Izazov #1: Dekompozicija Softvera ......................................................................................... 58 Primer Dekompozicije ............................................................................................................ 59 Pronalaženje Pravog Modela .................................................................................................. 60 Šta je Model? ........................................................................................................................ 60 Rezime ...................................................................................................................................... 61

Literatura ................................................................................................................................... 62

 ‐ 3 ‐

Page 4: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Kao i svaka istorija, i istorija razvoja elektronskih digitalnih računara ima i svoju praistoriju, tj. pojavi savremenih računara prethodili su mnogi pokušaji da se napravi nekakva mašina sposobna da izvodi jednostavnije ili složenije računske operacije. Najpre ćemo izvršiti kratak pregled, kako tih "praistorijskih" pokušaja, tako i pregled razvoja različitih generacija računara.

Praistorija

Abakus

Ako ne računamo različita ručna računska sredstva, poput različitih vrsta računaljki i abakusa koji su se javili još u starom veku, možemo reći da je prvu računsku mašinu napravio 1642. godine poznati francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662). On je tada imao samo 19 godina a pomenuti poduhvat je izveo da bi pomogao svom ocu koji je bio poreznik. Paskalova mašina je bila u potpunosti mehanička i koristila je zupčanike a pokretala se okretanjem ručice. Ta mašina je mogla da izvodi jedino operacije sabiranja i oduzimanja.

Međutim, trideset godina kasnije je slavni nemački matematičar Lajbnic (Gottfried Wilhelm von Leibnitz, 1646-1716) napravio računsku mašinu koja je, osim sabiranja i oduzimanja, mogla da izvršava i operacije množenja i deljenja. Naravno da je i ova mašina bila u potpunosti mehanička i nije donela nikakvu novinu u tehnologiji, ali ipak predstavlja ekvivalent jednostavnog džepnog kalkulatora 300 godina pre pojave džepnih kalkulatora kakve danas koristimo. Na ovom polju se ništa nije dešavalo narednih 150 godina, sve dok Čarls Bebidž (Charles Babbage, 1792-1871), profesor matematike na Univerzitetu Kembridž, nije izumeo diferencnu mašinu. Ova, takođe mehanička mašina, je mogla samo da sabira i oduzima, a koristila se za izračunavanje tablica u pomorskoj navigaciji. Mašina je projektovana tako da je izvršavala uvek isti algoritam, metod konačnih razlika korišćenjem polinoma. Najinteresantnija karakteristika diferencne mašine je njeno rešenje izlaza. Rezultati su upisivani na bakarnu ploču pomoću čeličnih kalupa. Na izvestan način, upotrebljeni metod je nagovestio kasniju primenu write­once medijuma, kao što su bile bušene kartice ili prvi optički diskovi. Mada je diferencna mašina radila prilično dobro, Bebidž se nije zadovoljavao računskim sredstvom koje je moglo da izvršava samo jedan algoritam. Ubrzo je

 ‐ 4 ‐

Page 5: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

počeo da troši, za ono vreme, sve veće i veće sume sopstvenog kao i veliku svotu vladinog novca, na projekat i konstrukciju naslednika diferencne mašine kojeg je nazvao analitička mašina.

Pascaline (Blez Paskal, 1642.godine)

Analitička mašina se može smatrati prvim mehaničkim programabilnim računarom. Ona je imala četiri dela: memoriju, jedinicu za izračunavanje i ulaznu i izlaznu jedinicu zasnovane na principu bušenih kartica (naravno, sa odgovarajućim čitačem i bušačem kartica). Memorija je bila kapaciteta 1000 reči od po 50 decimalnih cifara i služila je za smeštanje promenljivih i rezultata. Jedinica za izračunavanje je mogla da prihvati operande iz memorije, da ih sabira, oduzima, množi ili deli, i da vrati rezultat u memoriju. Kao i diferencna, i analitička mašina je bila u potpunosti mehanička. Veliki napredak u odnosu na diferencnu mašinu sastojao se u tome što je analitička mašina bila računar opšte namene. Instrukcije su se čitale sa bušenih kartica i izvršavale. Neke instrukcije su nalagale prenos dva broja iz memorije u jedinicu za izračunavanje, izvršavanje određene operacije nad njima i vraćanje rezultata u memoriju. Druga grupa instrukcija je mogla da izvrši testiranje broja i uslovno grananje u odnosu na to da li je broj negativan ili pozitivan. Upisivanje različitih programa na bušene kartice je omogućavalo da analitička mašina izvršava različita izračunavanja, dok to nije bio slučaj sa diferencnom mašinom. Kako je analitička mašina bila programabilna, potreban je bio softver, a samim tim i programer. Bebidž je za taj posao najmio ženu po imenu Ada Avgusta Lovelas, inače kćerku lorda Bajrona. Gospođa Ada je tako prvi programer na svetu i njoj u čast je programski jezik Ada dobio ime (naročito zbog činjenice, što je naknadno utvrđeno, da su svi programi koje je ona napisala bili korektni). Na žalost, Bebidž nikada nije do kraja realizovao analitičku mašinu zbog njene komplikovane mehaničke konstrukcije i nesavršenosti tehnologije devetnaestog veka. Ipak, njegov rad ima veliki značaj, s obzirom da i moderni računari imaju sličnu strukturu, pa se može reći da je Bebidž praotac modernih digitalnih računara.

Kako su sva pomenuta računska sredstva bila mehanička, za praktične početke razvoja električnih računara uzimaju se tridesete i četrdesete godine XX veka. Prvi veliki korak u razvoju ovih mašina načinio je nemački student tehnike Konrad Zuse koji je tokom tridesetih godina napravio niz automatskih računskih mašina zasnovanih na tehnologiji elektromagnetnih releja. Interesantno je to da Zuse nije bio upoznat sa Bebidževim radom. Njegove mašine su uništene u bombardovanjima tokom II svetskog rata, tako da one nisu uticale na dalji razvoj u ovoj oblasti. Ipak, Zuse je jedan od pionira na ovom polju. Nešto kasnije su Džon Atanasov (John Atanasoff) sa Ajova Stejt Koledža i Džordž Stibic (George Stibbitz) iz Belovih Laboratorija projektovali kalkulatore. Atanasovljeva mašina je bila jako napredna za ono vreme. Koristila je binarnu aritmetiku i imala kondenzatore kao memorijske elemente koji su se povremeno osvežavali radi sprečavanja curenja naelektrisanja. Savremeni dinamički RAM čipovi upravo rade na ovom

 ‐ 5 ‐

Page 6: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

principu. Međutim, ova mašina nikada nije proradila zbog neodgovarajuće tehnologije ondašnjeg doba. Stibicov računar je bio primitivniji od Atanasovljevog, ali je proradio. Rad ove mašine je javno demonstriran 1940. godine na konferenciji u Darmut Koledžu. U publici je bio i Džon Mokli (John Mauckley), tada anonimni profesor fizike na Pensilvanijskom Univerzitetu. Dok su Zuse, Stibic i Atanasov projektovali automatske kalkulatore, jedan mladić po imenu Hauard Ejken (Howard Aiken) se mučio ručno vršeći složena numerička izračunavanja tokom svog rada na doktorskoj disertaciji na Harvardu. Pošto je odbranio disertaciju shvatio je važnost mogućnosti računanja pomoću mašina. Otišao je u biblioteku i tamo otkrio Bebidžov rad. Odlučio je da napravi mašinu opšte namene na bazi releja umesto mehaničkih zupčanika zbog kojih Bebidž i nije uspeo. Njegova prva mašina, Mark I, završena je 1944. godine na Harvardu. Imala je 72 reči memorije od po 23 decimalne cifre, i ciklus instrukcije od 6 sekundi. Za ulaz i izlaz su korišćene bušene papirne trake. U vreme kada je Ejken dovršio sledeću mašinu Mark II, elektromagnetni releji bili su prevaziđeni. Počela je era elektronike i era elektronskih digitalnih računara. Prava istorija elektronskih digitalnih računara deli se u nekoliko generacija. Vremenske periode tokom kojih su pojedine generacije trajale treba uzeti samo orijentaciono, jer različiti autori navode različite podatke. Ovo otuda što su računari pojedine generacije korišćeni i posle nastanka nove generacije računara, tako da je teško povući preciznu granicu.

Prva generacija (1945-1955)

Motiv za ubrzani rad na elektronskim računarima bio je II svetski rat. Tokom jednog dela rata nemačke podmornice su pravile pustoš među britanskim brodovima. Komande i podaci o kretanju savezničkih brodova bili su slati iz Berlina putem radio veze. Naravno da su Britanci mogli da prisluškuju te radio poruke, ali je problem bio što su one bile šifrovane pomoću uređaja koji se zvao ENIGMA (interesantno je da je preteča ove mašine bio uređaj koji je konstruisao pronalazač amater Tomas Džeferson (Thomas Jeferrson) - bivši predsednik SAD).

Još na početku rata je britanska obaveštajna služba uspela da nabavi jedan primerak mašine ENIGMA. Ali, da bi se vršilo dešifrovanje, potrebno je bilo vršiti veliki broj izračunavanja, a sve je to moralo da bude obavljeno vrlo brzo pošto se radio poruka uhvati. Britanska vlada je oformila tajnu laboratoriju gde je napravljen elektronski računar nazvan COLOSSUS. U projektovanju mašine učestvovao je i čuveni engleski matematičar Alen Tjuring (Alan Turing). COLOSSUS je proradio 1943, ali pošto je britanska vlada držala u strogoj tajnosti ovaj projekat i na njega je, kao na vojnu tajnu, stavljen tridesetogodišnji embargo, to COLOSUSS predstavlja slepo crevo, obzirom da nije uticao na razvoj drugih elektronskih računara. Ipak, bio je to prvi elektronski računar. Osim što je izazvao uništenje Zuseovog rada, i podstakao konstruisanje COLOSSUS-a, rat je uticao na razvoj računarstva i u SAD. Vojsci SAD je, radi zauzimanja elemenata u teškoj

artiljeriji, bilo potrebno izračunavanje različtih tabela. Taj posao je, kada se ručno obavljao, zahtevao određeno vreme i bio je podložan greškama. Već pomenuti Mokli, koji je bio upoznat sa radom Atanasova i Stibica, znao je za potrebu armije za mehaničkim kalkulatorom, ali je predložio izradu elektronskog računara. Predlog je prihvaćen 1943. godine, i Mokli i njegov postdiplomac Ekert (J. Presper

 ‐ 6 ‐

Page 7: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Eckert) su počeli da rade na elektronskom računaru koga su nazvali ENIAC (Electronic  Numerical Integrator And Computer). Ova mašina se sastojala od 18000 vakuumskih cevi i 1500 releja. ENIAC je bio težak 30 tona i zauzimao je veličinu odbojkaškog igrališta. Snaga mašine bila je 140kW. Zli jezici kažu da se kvario u proseku svakih sedam minuta (što nije čudo, obzirom na ogromnu disipaciju i upotrebljenu tehnologiju) a za množenje dva broja potrebne su bile 3ms. Što se arhitekture tiče, ENIAC je imao dvadeset registara, a svaki je mogao da sadrži desetocifreni decimalni broj, i to tako što je svaka cifra predstavljena sa po deset vakuumskih cevi. Programirao se postavljanjem 6000 multipozicionih prekidača a veze između komponenata su bile žičane. Mašina je završena 1946. godine kada je bilo prekasno da se upotrebi u svrhu za koju je originalno bila namenjena. Međutim, kako je rat bio završen, Mokli i Ekert su organizovali letnju školu sa ciljem da objasne svoj rad kolegama. Ova letnja škola predstavlja početak eksplozije interesovanja za izgradnju velikih računara.

Eniac (Electronic Numerical Integrator And Computer)

Posle tog istorijskog trenutka mnogi drugi istraživači su se dali na posao proizvodnje elektronskih računara. Prvi naredni računar koji je proradio 1949. godine bio je EDSAC izgrađen na Univerzitetu Kembridž u Velikoj Britaniji. Njegov autor bio je Moris Vilks (Maurice Wilkes), a ovaj računar vredi pomenuti jer je to bio prvi računar sa zapamćenim programom. Sledili su JOHNIAC napravljen u firmi Rand  Corporation, ILLIAC napravljen na Univerzitetu u Ilinoisu, MANIAC iz Los  Alamos  Laboratory i WEIZAC sa Vajcmanovog instituta u Izraelu. Ekert i Mokli su počeli da rade na narednom računaru EDVAC (Electronic Discrete Variable Automatic Computer), ali je taj projekat bio fatalno ugrožen kada su njih dvojica napustila Univerzitet u Pensilvaniji radi osnivanja kompanije u Filadelfiji (Eckert­Mauchley Computer Corporation). Posle više fuzionisanja, ova kompanija je postala današnja Unisys Corporation. U međuvremenu, jedan od učesnika ENIAC projekta, Džon fon Nojman (John von Neumann) je otišao na

 ‐ 7 ‐

Page 8: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Prinstonov Institut za napredne studije da bi radio na sopstvenoj verziji EDVAC-a, koju je nazvao IAS mašina. U vreme kada je počeo da se bavi računarima fon Nojman je bio jedan od najvećih matematičara toga doba. Za njega kažu da je bio genije kalibra Leonarda da Vinčija. Govorio je više jezika, bio je stručnjak za fiziku i matematiku i mogao je da se priseti svega što je ikada čuo, video ili pročitao. Fon Nojman je zaključio da je programiranje računara pomoću velikog broja prekidača i kablova sporo i teško, i da je bolje program predstaviti u digitalnom obliku u memoriji računara. On je takođe shvatio da je, umesto decimalne aritmetike koju je koristio ENIAC, bolje koristiti binarnu aritmetiku (s obzirom da je kod ENIAC-a svaka cifra predstavljana sa po deset vakuumskih cevi od kojih je uvek samo jedna bila upaljena). Njegov arhitekturni princip, poznat kao fon Nojmanova mašina, primenjen je kod prvog računara sa zapamćenim programom EDSAC, i još uvek je osnova za gotovo sve računare i do današnjih dana. Ova arhitektura, kao i IAS mašina koju je fon Nojman izradio u saradnji sa Hermanom Goldštajnom (Herman Goldstine), imala je ogroman uticaj na dalji razvoj računara. Skica ove arhitekture je prikazana na slici 1.1. Fon Nojmanova mašina je imala pet osnovnih delova: memoriju, aritmetičko logičku jedinicu, jedinicu za upravljanje programom i ulaznu i izlaznu opremu. Memorija se sastojala od 4096 reči od kojih je svaka imala 40 bitova. Svaka reč je sadržala ili dve 20-bitne instrukcije ili dva 39-bitna označena cela broja. Osam bitova instrukcije je definisalo operaciju, a prostalih 12 je specificiralo reč u memoriji. Unutar aritmetičko logičke jedinice, preteča savremene CPU (Central  Processing  Unit) je bio specijalni interni 40-bitni registar nazvan akumulator. Tipična instrukcija, na primer, sabira memorijsku reč sa sadržajem akumulatora ili upisuje sadržaj akumulatora u memoriju. Mašina nije imala aritmetiku u pokretnom zarezu, jer je fon Nojman smatrao da će svaki kompetentni matematičar moći da sam odredi poziciju decimalne tačke.

Otprilike u isto vreme kada je fon Nojman pravio IAS mašinu, istraživači na MIT-u (Massachusetts Institute of Technology) su takođe pravili jedan računar. Taj računar zvan Whirlwind I je, za razliku od ENIAC-a i drugih mašina sličnog tipa koje su imale dugačke memorijske reči, imao 16-bitne reči i bio je projektovan za upravljanje u realnom vremenu. Ovaj projekat je doveo do izuma memorije od magnetnih jezgara Džeja Forestera (Jay Forrester), a kasnije i do prvog komercijalnog mini računara. Dok se sve to dešavalo, IBM je bio mala kompanija koja je proizvodila bušače kartica i mašine za mehaničko sortiranje

 ‐ 8 ‐

Page 9: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

kartica (oni su i počeli sa proizvodnjom mehaničkih pisaćih mašina i druge mehaničke kancelarijske opreme, pa otuda i ime kompanije - International Business Machines). Iako je IBM finansirao jedan deo projekta Hauarda Ejkena, oni nisu bili naročito zainteresovani za proizvodnju računara sve dok nisu 1953. godine proizveli računar 701. Dakle, dugo vremena pošto su Ekert i Mokli postali broj jedan na tržištu sa njihovim računarom UNIVAC. Računar 701 je imao 2k 36-bitnih reči sa dve instrukcije po reči. To je bila prva u seriji mašina koje će za samo desetak godina postati dominantne na tržištu računara. Tri godine kasnije, proizveden je 704, koji je imao 4k reči memorije izrađene u tehnologiji magnetnih jezgara, 36-bitne instrukcije, i hardver za izvršavanje operacija u pokretnom zarezu. Godine 1958. IBM je proizveo svoj poslednji računar sa vakuumskim cevima - mašinu sa oznakom 709. Recimo nekoliko reči i o softveru. Već smo pomenuli način na koji se proramirao ENIAC. Kasnije se počelo sa računarima koji imaju zapamćene programe (EDSAC). U svakom slučaju, jezik na kome se programiralo bio je mašinski jezik - jezik nula i jedinica. Programi na takvom jeziku bili su nepregledne liste redova ispisanih nulama i jedinicama. Pisanje takvih programa bilo je mukotrpno, njihovo čitanje još teže, a najgore je bilo pronaći grešku u programu. Uz sve to, mašinski jezici (kako im to i ime kaže) su mašini orijentisani: drugi računar - drugi jezik. Takve računare mogli su da programiraju samo oni koji su dobro poznavali njihovu arhitekturu. Vrlo brzo su programeri počeli da razmišljaju o tome kako da svoje programe skrate i učine jasnijim pa su se dosetili da binarne nizove pretvore u brojeve u dekadnom, a kasnije u heksadekadnom brojnom sistemu. Ovo je tek malo smanjilo fizički obim listinga programa, a uvelo je potrebu za prvim rudimentarnim prevodiocima koji su prevodili dekadne, odnosno heksadekadne brojeve, nazad u binarni sistem (računari su još uvek, pa i danas, razumevali isključivo mašinski jezik). Nešto kasnije su uvedeni asemblerski jezici, ili jezici II generacije, gde su naredbe predstavljane simboličkim oznakama. Ovo je dovelo do daljeg smanjenja obima programa, do nešto bolje čitljivosti, ali i do složenijih prevodilaca - asemblera. Međutim, i dalje se radi o mašini orijentisanim jezicima, a odnos broja naredbi mašinskog i asemblerskog jezika je 1:1. O operativnim sistemima nije bilo ni govora. Sve potrebne radnje je uglavnom izvršavao sam operater. Ipak, era elektronskih digitalnih računara je započela, kao i nezaustavljiv intezivni razvoj na ovom polju. Jedan događaj u naučnom svetu, tek koju godinu pošto je proizveden ENIAC, dovešće, u godinama koje su sledile, do revolucije u oblasti računarstva i, uopšte, elektronike.

Druga generacija (1955-1965)

Godina 1948. donosi taj revolucionarni pomak. Naime, te godine su trojica stručnjaka, koji su radili za Bell Laboratories, Bardin (John Bardeen), Bretejn (Walter Brattain) i Šokli (William Shockley) izumeli tranzistor, za šta su 1956. godine dobili Nobelovu nagradu za fiziku. Za samo desetak godina tranzistori su napravili revoluciju u računarskoj industriji, tako da su do kraja pedesetih vakuumske cevi potpuno izbačene iz upotrebe, bar što se proizvodnje računara tiče. Značajno su smanjene dimenzije računara kao i potrošnja, dok su brzina i pouzdanost rada znatno povećane. Sa pojavom diskretnih poluprovodničkih komponenti, javljaju se i prva štampana kola. Prvi tranzistorizovan računar napravljen je u Linkolnovoj laboratoriji na MIT-u. To je bila 16-bitna mašina poput Whirlwind I. Nazvan je TX-0 (Transistorized eXperimental computer 0) a namenjen je bio samo kao uređaj za testiranje jače mašine TX-2. TX-2 nije predstavljao bogznašta, ali je jedan od inženjera koji je radio u laboratoriji, Kenet Olsen (Kenneth Olsen), 1957. godine formirao kasnije čuvenu kompaniju DEC i proizvodio komercijalne računare nalik na TX-0. To se događalo četiri godine pre pojave PDP-1 računara, pre svega jer su glavni deoničari kompanije DEC

 ‐ 9 ‐

Page 10: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

smatrali da još ne postoji tržište računara. Stoga je ova kompanija u početku uglavnom proizvodila mala štampana kola. PDP-1 se konačno pojavio 1961. godine i imao je 4k 18-bitnih reči i ciklus instrukcije od 5µs. Ove performanse su bile upola slabije od IBM 7090, tranzistorizovanog naslednika mašine IBM 709 i najbržeg računara na svetu toga doba. Međutim, PDP-1 je koštao 120,000$, dok je IBM 7090 koštao milione dolara. DEC je prodao više desetina ovih računara i industrija miniračunara je rođena. Jedan od prvih proizvedenih primeraka računara PDP-1 dat je MIT-u gde je privukao pažnju mladih genijalaca koji su vršili određene inovacije. Jedna od prvih je uvođenje CRT displeja i mogućnost da se upiše tačka bilo gde u okviru ekrana dimenzija 512×512 tačkica. Nije prošlo mnogo vremena i studenti MIT-a su programirali PDP-1 tako du su mogli sa njim da se igraju svemirskih ratova. Tako je rođena prva video igra. Nekoliko godina kasnije DEC je izbacio na tržište PDP-8 koji je bio 12-bitna mašina ali je koštala svega 16,000$. Glavna novina kod ovog računara bila je jedinstvena magistrala nazvana omnibus. Ovaj princip je prihvaćen kod svih miniračunara i DEC je, prodavši 50 hiljada komada, postao vodeća kompanija u proizvodnji miniračunara. Na slici 1.2 vidimo princip povezivanja delova računara na omnibus. U međuvremenu, kao što je već pomenuto, IBM je, sa pojavom tranzistora, napravio mašinu IBM 7090, a kasnije i 7094. 7094 je imao ciklus instrukcije od 2µs i 32k 36-bitnih reči memorije sagrađene od magnetnih jezgara.

U isto vreme kada je, proizvodnjom 7094, IBM postao glavna snaga u proizvodnji računara namenjenih naučno-tehničkim izračunavanjima, ova kompanija je mnogo novca zarađivala od prodaje malih mašina orijentisanih poslovnoj primeni, a sa oznakom 1401. IBM 1401 je neobičan po tome što nije imao nijedan registar, pa čak ni fiksiranu dužinu reči. Njegova memorija je bila kapaciteta 4k 8-bitnih bajtova. Svaki bajt je sadržao 6-tobitni znak, jedan administrativni bit i jedan bit koji je služio da ukaže na kraj reči. Godine 1964. je novoosnovana kompanija CDC proizvela model 6600. Ova mašina je skoro za red veličine bila brža od tada moćnog IBM 7094. Tajna njegove brzine ležala je u tome da je njegov CPU bio visoko paralelizovan, a unutar računara se nalazilo i nekoliko malih računara koji su upravljali poslovima i ulazno/izlaznim operacijama. Vredi pomenuti još jedan računar iz ove generacije, a to je Burroughs B5000. Dok su se svi ostali proizvođači bavili samo hardverom, ovaj računar izrađen je tako da olakša posao prevodioca za jezik ALGOL 60. Što se softvera tiče, u ovom razdoblju se javlja veliki pomak i na ovom planu. Javljaju se prvi jezici III generacije, ili viši programski jezici. Ovi jezici su proceduri orijentisani i praktično su omogućavali programiranje različitih mašina bez detaljnog poznavanja arhitekture. Osim toga bili su na znatno apstraktnijem nivou od mašinskih, odnosno asemblerskih jezika. Tako se 1956. godine pojavio FORTRAN, 1959. godine COBOL, 1960. godine ALGOL 60, a potom i mnogi drugi. Neki od jezika su u međuvremenu "izumrli", a neki se koriste i dan danas. Naravno, kako mašina i dalje razume isključivo mašinski jezik, potrebno je imati program prevodilac koji izvorni kod prevodi u nizove nula i jedinica. Prevodioci, a time i jezici, dele se na kompilatorske i interpretatorske. Što se operativnih sistema tiče, zastupljena je bila paketna obrada.

 ‐ 10 ‐

Page 11: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Treća generacija (1965-1980)

Pronalazak integrisanih elektronskih kola 1964. godine doneo je novi revolucionarni pomak u računarskoj industriji. U početku, bila su to kola malog stepena integrisanosti (SSI ­ Small Scale of Integration) koja su dozvoljavala da nekoliko tranzistora bude na jednom čipu, a kasnije (1968. godine) su se pojavila MSI kola (MSI  ­ Medium Scale of Integration) kod kojih je na jednom čipu smeštano više desetina tranzistora. Godine 1971. dolazi do proizvodnje integrisanih kola velikog stepena integrisanosti (LSI  ­ Large Scale of Integration) sa više stotina tranzistora na jednom čipu. Zahvaljujući ovim pronalscima, računari su postajali manji, brži, pouzdaniji i jeftiniji. Do 1964. godine IBM je bio vodeća kompanija za proizvodnju računara. U to vreme pojavio im se veliki problem, jer dve uspešne mašine, 7094 i 1401, nisu bile kompatibilne. Prvi računar je bila veoma brza mašina za numerička izračunavanja koja je koristila paralelnu binarnu aritmetiku na 36-bitnim registrima, dok je drugi bio ulazno/izlazni procesor koji je koristio sekvencijalnu decimalnu aritmetiku nad memorijskim rečima proizvoljne dužine. Mnogi klijenti su želeli da imaju obe mašine, ali ne i posebne programerske timove koji ne bi mogli da sarađuju. Kada je došlo vreme da se ova dva proslavljena računara zamene novim proizvodom, IBM je preduzeo radikalan korak. Uveo je jedan tip računara IBM System/360, zasnovan na integrisanim kolima, koji je bio projektovan i za naučnu i za poslovnu primenu. System/360 je sadržao mnogo inovacija. To je bila familija mašina sa istim asemblerskim jezikom sve većeg kapaciteta i moći. Ovu ideju su ubrzo prihvatili i ostali proizvođači računara. Još jedna velika novina bio je koncept multiprogramiranja, gde je istovremeno više programa u memoriji i dok jedan obavlja ulazno/izlazne aktivnosti, drugi koristi CPU. Osim toga, ovaj računar je prva mašina koja je mogla da emulira druge računare. System/360 je rešio i dilemu oko korišćenja paralelne binarne, odnosno sekvencijalne decimalne aritmetike. Mašina je imala 16 32-bitnih registara za binarnu aritmetiku, ali je memorija bila bajtovski orijentisana, kao kod 1401, a još uvek su postojale sekvencijalne instrukcije za prenošenje zapisa promenljive dužine po memoriji. Sledeća bitna karakteristika ovog računara bio je, za to vreme, ogroman adresni prostor od 224 bajta, odnosno 16MB. Obzirom na cenu meorijskih čipova toga vremena, ovaj kapacitet je praktično značio beskonačnu veličinu. Na žalost, seriju 360 sledile su serija 370, serija 4300, serija 3080 i serija 3090, sve sa istom arhitekturom. No, već sredinom osamdesetih godina, ograničenje od 16MB je postalo problem, pa je IBM morao delimično da odustane od kompatibilnosti da bi uveo 32-bitno adresiranje, tj. adresni prostor od 232 bajta. Takođe je načinjen veliki napredak i u proizvodnji miniračunara kada je DEC proizveo PDP-11, 16-bitnog naslednika računara PDP-8. PDP-11 je bio bajtovski orijentisana mašina sa registrima dužine reči, a zbog izuzetno povoljnog odnosa cena/performanse doživeo je veliki uspeh na tržištu, a naročito su ga kupovali univerziteti. Uopšte, ovu generaciju računara, osim pomenutog, karakterišu i pojave koncepta keš memorije i virtuelne memorije, kao i koncepta deljenja procesorskog vremena (time sharing). Osim toga, treba naglasiti da se u ovom razdoblju pojavio i prvi mikroprocesor (1971. godine), što će imati velikog značaja za kasniji razvoj računarske tehnike. Takođe se javljaju i prvi vektorski i protočni računari. Pomenimo i prvi superračunar Cray-1 iz 1974. godine.

Četvrta generacija (1980 do danas)

Do osamdesetih godina napredak u tehnologiji integrisanih kola doveo je do stvarnja VLSI čipova (Very Large  Scale of  Integration) koji su mogli da sadrže nekoliko desetina hiljada, a zatim i nekoliko stotina hiljada, pa čak i nekoliko miliona tranzistora na jednom čipu. Naravno da je to vodilo ka manjim i bržim

 ‐ 11 ‐

Page 12: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

računarima. Cena računara je pala do te mere da se otvorila mogućnost da svaki pojedinac ima sopstveni računar. Tada je i započela era personalnih računara.

Tab. 1.1. Pet uobičajenih vrsta računara

Tip Tipičan MIPS Tipičan kapacitet memorije Primer mašine Primer korišćenja

Personalni računari 1 1 IBM PS/2 Obrada teksta

Miniračunari 2 4 PDP-11/84 Upravljanje u realnom vremenu

Supermini računari 10 32 SUN-4 Mrežni fajl server Veliki (mainframe) računari 30 128 IBM 3090/300 Bankarstvo

Superračunari 125 1024 Cray-2 Vremenska prognoza

Personalni računari se, za razliku od velikih računara, mogu koristiti na različite načine: obradu teksta, unakrsne tabele i visoko interaktivne aplikacije koje nisu povoljne za primenu kod velikih računara. Današnji računari se mogu grubo podeliti u pet kategorija koje se donekle preklapaju. Ova podela se zasniva na fizičkoj veličini, performansama i oblasti primene, što je prikazano u Tabeli 1.1. Najnižu klasu čine personalni računari. To su stone mašine zasnovane na mikroprocesorima, tj. procesorima izvedenim na jednom čipu, a obično su namenjene samo jednoj osobi za korišćenje u kancelariji, u edukaciji ili za kućnu upotrebu. Miniračunari se naveliko koriste u aplikacijama u realnom vremenu, na primer za kontrolu vazdušnog saobraćaja ili automatizaciju fabrika. Teško je reći šta čini jedan miniračunar, jer mnoge kompanije proizvode ove računare sa 16-bitnim ili 32-bitnim mikroprocesorima uz izvesnu količinu memorije i ulazno/izlaznih čipova, gde je sve to smešteno na jednoj štampanoj ploči. Funkcionalno je takva ploča ekvivalentna tradicionalnom miniračunaru kao što je PDP-11. Supermini računar je u suštini veoma veliki računar, gotovo uvek zasnovan na 32-bitnom procesoru sa nekoliko desetina megabajtova memorije. Takve mašine se koriste kao time  sharing mašine na čitavim odeljenjima različitih institucija, kao mrežni serveri i na mnoge druge načine. Takve mašine su daleko moćnije od računara IBM 360 Model 75, najmoćnijeg velikog računara na svetu u vreme njegovog pojavljivanja 1964. godine. Tradicionalni veliki računari su naslednici mašina kao što su IBM 360 i CDC 6600. Stvarna razlika između supermini računara i velikog računara je u ulazno/izlaznim mogućnostima i aplikacijama za koje se koriste. Tipični supermini može da ima jedan ili dva diska reda veličine 1GB, dok veliki može da ima i sto takvih. Supermini se koriste za interaktivne aplikacije, dok se većina velikih računara koristi za velike pakete poslova ili obradu transakcija kao što su one u bankarstvu ili za rezervaciju avionskih karata, gde su potrebne ogromne baze podataka. Na vrhu se nalaze superračunari. Ove mašine su specijalno projektovane tako da se maksimizira broj FLOPS-ova (FLoating point Operations Per Second). Sve što je ispod 1gigaflops se ne može smatrati superračunarom. Superračunari imaju jedinstvenu, visoko paralelnu arhitekturu radi postizanja tih brzina, a efikasni su samo kada se primenjuju na mali opseg poslova.

Za ovu generaciju računara karaktersitičan je i intenzivni razvoj računarskih mreža različitih opsega (LAN, WAN i dr.). Naročitu ekspanziju je doživela globalna mreža Internet. Istorija Internet-a počinje 1969. godine kada je na UCLA prvi računar povezan sa ARPANET-om. Ova mreža je dobila naziv po svom sponzoru DARPA - Defense  Advanced  Research  Project  Agency (Vojna agencija za napredne istraživačke projekte), a sam njen početak bio je skroman, jer su povezane samo četiri univerzitetske lokacije: UCLA, Stanfordov istraživački institut, UC Santa Barbara i Univerzitet u Juti. Početkom 1977. godine već je preko stotinu malih i velikih računara, uglavnom univerzitetskih, povezano u mrežu ARPANET. Počeo je

 ‐ 12 ‐

Page 13: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

razvoj i drugih manjih mreža od kojih su mnoge povezane sa ARPANET-om, bilo direktno, bilo preko mrežnih prolaza (gateways). U to vreme američka vojska je došla do zaključka da se ova mreža isuviše širi i da je isuviše teško osigurati sigurno komuniciranje, pa je 1983. godine formirala sopstvenu mrežu MILNET koja je uključena u vojnu mrežu podataka DDN (Defense Data Network). Danas u svetu ima preko četiri miliona Internet servera (podatak iz sredine devedesetih), a od 1988. se taj broj stalno udvostručuje.

Peta generacija (u razvoju)

Peta generacija računara je u povoju i razvija se tokom osamdesetih i devedesetih godina. Nju odlikuje masovni paralelizam, kao i proizvodnja računara koji su orijentisani određenim problemima. Takođe je karakteristična pojava RISC arhitektura (Reduced  Instruction Set Computer). Ovi računari imaju mali broj instrukcija koje izvršavaju jednostavnu obradu, ali se zato uglavnom sve izvršavaju u toku jednog taktnog intervala, za razliku od uobičajenih CISC mašina (Complex Instruction Set Computer) koje imaju veliki broj instrukcije, od kojih su mnoge prilično "moćne" ali za svoje izvršenje zahtevaju veći broj taktnih intervala. Mada su RISC mašine počele svoj život na tržištu, nije izvesno kada će ova generacija (i hoće li u potpunosti) zameniti postojeću generaciju računara.

Istorijat razvoja mikroprocesora i mikroračunara

S obzirom na veliki značaj i zastupljenost mikroračunara u današnje vreme, vredi sagledati kako su se ovi računari razvijali. Mikroračunari su računari zasnovani na mikroprocesoru, tj. centralnoj procesorskoj jedinici koja je realizovana na samo jednom čipu. Vodeći proizvođači mikroprocesora su firme Intel i Motorola, pa ćemo razmotriti razvoj njihovih familija mikroprocesora. Intel Corporation je kompanija koja je osnovana 1968. za proizvodnju memorijsikih čipova. Ubrzo zatim, jedan japanski proizvođač kalkulatora je naručio izradu CPU-a na jednom čipu za njihov kalkulator, a jedan od proizvođača terminala, Datapoint (San Antonio, Teksas), je 1969. godine naručio kontroler za njihove terminale, takođe na jednom čipu. Tako su nastali Intel 4004, prvi četvorobitni (1971. godine) i Intel 8008, prvi osmobitni mikroprocesor (1972. godine). Interesantno je da je 8008 radio desetak puta sporije nego što je naručilac zahtevao, tako da je kompanija Datapoint otkazala porudžbinu. Intel nije očekivao da će neko drugi, osim navedenih naručilaca, biti zaintersovan za takve proizvode, pa je napravio malu seriju. Naravno, nisu bili u pravu. Pojavilo se jako veliko interesovanje, tako da su odlučili da projektuju CPU opšte namene na jednom čipu koji će prevazići ograničenje od 16kB adresnog prostora koje je imao 8008 (što je bilo nametnuto brojem pinova na čipu). Ovo je rezultiralo 1974. godine pojavom 8-bitnog mikroprocesora Intel 8080 sa 64kB adresnog prostora. Kao što je na tržištu mini računara bio slučaj sa PDP-8, ovaj mikroprocesor je na prepad osvojio industriju računara i stvorio masovno tržište. Dve godine kasnije se pojavio 8085, prepakovani 8080 sa dodatnim ulazno/izlaznim mogućnostima. Zatim se, 1978. godine pojavio 8086, prvi 16-bitni mikroprocesor, a 1980. godine Intel 8088 koji je imao istu arhitekturu kao i 8086 ali sa 8-bitnom magistralom (što je smanjilo cenu ali i brzinu). IBM je izabrao ovaj mikroprocesor za svoj originalni IBM PC - prvi personalni računar. U narednim godinama pojavili su se

 ‐ 13 ‐

Page 14: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Intel 80186 i 80188, suštinski nove verzije mikroprocesora 8086 i 8088, respektivno, ali sa dodatnim ulazno/izlaznim kolima. Nijedan od ovih procesora nije prevazišao adresni prostor od 1MB, što je u prvoj polovini 80-tih postalo ozbiljan problem. Zato je 1982. godine Intel izbacio na tržište 80286, 16-bitni mikroprocesor koji je bio kompatibilan sa 8086 i 8088, ali sa drugačijom organizacijom memorije (i adresnim prostorom od 16MB). Ovaj mikroprocesor je korišćen u IBM PC/AT i PS/2, i doživeo je ogroman uspeh. Sledeći korak bio je prvi 32-bitni mikroporcesor 80386, koji se pojavio 1985. godine. Ovaj mikroprocesor je takođe bio kompatibilan sa starijim čipovima. Godine 1988. se pojavio i 80286SX, verzija 32-procesora sa 16-bitnom magistralom. Godine 1989. se javila brža verzija mikroporcesora 80386 - Intel 80486 sa ugrađenim koprocesorom na čipu. Tokom devedesetih javlja se i 80586 - Pentium.

Ubrzo pošto je Intel proizveo mikroprocesor 8080, Motorola, inače konkurentni proizvođač poluprovodničkih komponenti, je proizveo 6800. To je bio 8-bitni mikroporcesor sličnih karakteristika kao i 8080. Ovaj mikroprocesor je dobro prihvaćen na tržištu i korišćen je kao ugrađeni kontroler u industrijskoj opremi početkom 70-tih. Praćen je sa 6809 koji je bio kompatibilan sa 6800, sa dodatnim mogućnostima koje su olakšavale 16-bitnu aritmetiku. Potom je Motorola uradila nešto što je vrlo malo kompanija uradilo pre i posle toga: uveli su 1979. godine potpuno nov mikroprocesor koji nije bio kompatibilan sa prethodim verzijama. To je bio 68000, mikroprocesor sličnih mogućnosti kao 8086. Mada je magistrala bila 16-bitna, svi vidljivi registri su bili 32-bitni i mašina je mogla da sabira i oduzima (ne i da množi i deli) 32-bitne brojeve pomoću samo jedne instrukcije. Tako je 68000 predstavljao hibrid između 16-bitne i 32-bitne arhitekture. Ovaj mikroprocesor su izabrali projektanti mikroračunara Macintosh, Atari, Amiga i drugi, da na njemu zasnuju svoje proizvode. Sledeći mikroprocesor bio je 68008 iz 1982. godine. On je bio identičan sa 68000 osim što je imao 8-bitnu magistralu a namenjen je bio za jeftinije proizvode sa manjim zahtevima. Ovaj mikroprocesor nije doživeo neku naročitu zastupljenost. Posle kraćeg vremena pojavili su se zahtevi za implementacijom složenih operativnih sistema, kao što je Unix, u mikroračunarima zasnovanim na 68000. Mnogi od takvih operativnih sistema imali su koncepte virtuelne memorije, što 68000 nije mogao u potpunosti da podrži. Stoga se 1983. godine pojavio 68010, a zatim i 68012. Razlika među njima je bila što je prvi mogao da adresira 16MB a drugi 2GB memorije. Međutim, oba ova procesora su praktično izgubila na značaju već 1984. godine kada je Motorola proizvela prvi pravi 32-bitni procesor u svojoj familiji 68020. Ovaj mikroprocesor je doživeo veliki uspeh na tržištu i na njemu su bazirane mnoge radne stanice koje su proizvodili Sun Microsystems, Apollo i Hewllet-Packard. Naslednik ovog mikroprocesora iz 1987. godine, 68030, je sadržao osim kompletnog 68020 i jedinicu za upravljanje memorijom na istom čipu. Sledeći pripadnik ove familije, 68040, je mikroporcesor napravljen 1989. godine koji je, poput Intel 80486, sadržao na istom čipu, osim samog CPU, i jedinicu za upravljanje memorijom, koprocesor i keš memoriju.

Evolucija modernih mikroprocesora je ispunjena mnogobrojnim iznenađujućim preokretima i dilemama. Ko je izumeo prvi mikroprocesor? Ko je imao prvi 32-bitni pojedinačni čip dizajn?

Početkom 19-og veka, otkriće Benjamina Franklin-a na polju elektriciteta je još uvek bilo novo, a praktičnih upotreba njegovog otkrića bilo je svega nekoliko – najpoznatija primena je gromobran, koji je bio pronađen nezavisno od strane dvojice različitih ljudi na dva različita mesta. Nezavisna istovremena (i ne tako istovremena) otkrića su ostale teme koje su se često ponavljale u elektronici.

Slično je bilo i sa pronalaskom vakuumske cevi – koju je pronašao Fleming, koji je proučavao efekat nazvan po Edisonu. Tako je bilo i sa tranzistorom: Šokli, Bretejn i Bardin su dobili Nobelovu nagradu za fiziku za pronalazak tranzistora. Tako je bilo i sa pronalaskom integrisanog kola (IC) za koje je Džek Kilbi

 ‐ 14 ‐

Page 15: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

dobio Nobelovu nagradu, a koje je istovremeno bilo razvijeno od strane Ronerta Nojsa iz Fairchild Semiconductor­a (on je i dobio patent). Tako je zaista bilo i sa mikroprocesorom.

Tek nekoliko godina posle prvih laboratorijskih integrisanih kola, Fairchild  Semiconductor je predstavio prvo komercijalno integrisano kolo (iako skoro u isto vreme kad i ljudi iz firme Texas Instruments).

Već na početku decenije, proces koji će trajati do današnjih dana je bio dostupan: komercijalna integrisana kola napravljena u planarnom procesu bila su dostupna od obe kompanije Fairchild Semiconductor­a i Texas Instruments­a 1961.godine, a TTL (transistor­transistor logic) kola su se pojavila u komercijalne svrhe već 1962.godine. Do 1968.godine, CMOS kola (komplementarni metal oksid poluprovodnik) su preplavila tržište. Nema sumnje da su tehnologija, dizajn i procesi brzo evoluirali.

Sagledavajući ove trendove, direktor razvoja u firmi Fairchild Semiconductor Gordon Mur je 1965.godine primetio da se gustina elemenata na integrisanom kolu godišnje udvostručavala, i prognozirao da će se taj trend nastaviti sledećih 10 godina. Sa određenim korekcijama, ovo je postalo poznato kao Murov zakon.

Prva integrisana kola su uključivala svega nekoliko tranzistora na jednom kolu; ali već početkom 70-ih godina prošlog veka, tehnike proizvodnje omogućile su hiljade tranzistora po kolu. Bilo je samo pitanje dana kada će neko iskoristiti ovaj kapacitet kako bi postavio čitav kompjuter na jedan čip, i nekoliko njih je zaista u tome i uspelo.

Eksplozija u razvoju: 70-te godine 20-og veka

Ideja o računaru na jednom jedinom čipu bila je opisana u literaturi još 1952.godine, a sve više članaka nalik tome je počelo da se pojavljuje početkom sedamdesetih. Napokon, to je postalo moguće.

Ostatak decenije su obeležile stare i nove kompanije koje su se polako uključivale u biznis sa poluprovodnicima, a isto tako i sa prvim personalnim računarima, prvim arkadnim igricama, pa čak i sa prvim kućnim sistemima video igara – tako je široki kontakt potrošača sa elektronikom veoma brzo rastao u 80-im godinama prošlog veka. Početkom 70-ih godina prošlog veka, mikroprocesori još uvek nisu bili patentirani. Do kraja te decenije, zasićenost tržišta je dovela do rata sa cenama, tako da su mnogi procesori već u tom trenutku bili 16-bitni.

Prva tri

Danas, tri grupe polažu pravo na to da su prvi koji su napravili kompjuter na čipu: to su Central Air Data Computer (CADC), Intel® 4004, i Texas Instruments TMS 1000.

CADC sistem je bio napravljen za potrebe vojnih aviona tipa Tomket 1970-te godine. Ovo se često ne razmatra zato što to nije bio CPU već preciznije rečeno skup integralnih kola (chip set). TI TMS 1000 je bio prvi koji se pojavio u formi kalkulatora, ali ne i kao nezavisan uređaj – ta slava pripada Intelu 4004 koga je projektovao Marcian E. Hoff za Intel, i to je samo jedan od razloga zbog čega se on označava kao prvi (uzgred budi rečeno, on je takođe bio samo jedan u čipsetu od četiri).

 ‐ 15 ‐

Page 16: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Zapravo, nije bitno ko je bio prvi. Kao i kod gromobrana, sijalice, radija – i kod mnogih drugih pronalazaka pre i posle ovog – dovoljno je reći bilo je u etru, bilo je neminovno, bilo mu je došlo vreme.

CADC je potrošio 20 godina kao stroga hladnoratovska tajna, sve dok konačno nije obelodanjen 1998.godine. Prema tome, iako je bio prvi, nije mogao da ima uticaja na druge mikroprocesorske projekte.

Intel 4004 je imao kratku i mirnu istoriju, dok nije zamenjen od strane 8008 i drugih ranih Intelovih čipova.

Rani Intel: 4004, 8008, i 8080

Intel je izbacio svoj 4-bitni čip opšte namene, Intel 4004, 15.Novembra 1971.godine. 4004 je bio prvi komercijalni CPU. To je bio 4-bitni CPU. Imao je radni takt od 108KHz i 2.300 tranzistora sa priključcima za ROM, RAM, i U/I. Bio je sposoban za oko 60.000 instrukcija u sekundi (0.06 MIPs). Prvobitno projektovan za upotrebu u kalkulatorima, Intel je prepravio svoj ugovor kako bio bio u mogućnosti da ovaj svoj čip predstavi kao nezavisan procesor. Njegov ISA je bio inspirisan od strane DEC-ovog PDP-8.

Intel 8008 je predstavljen 1.Aprila 1972.godine, nije privukao veliku pažnju jer je to ustvari bio manje-više jedan 8-bitni 4004. Njegov osnovni uspeh je bio njegova ISA – obezbeđena od strane Computer Terminal Corporation  (CTC), koja je polagala pravo na čip – koja je formirala osnovu za 8080 (1.Aprila 1974.godine), a takođe i za kasnije 8086 (a prema tome i za x86) arhitekture. Manje poznati Inteli iz toga vremena uključuju skoro zaboravljeni 4040, koji je dodao logičku i upoređujučku instrukciju u 4004, i nesrećni 32-bitni Intel 432.

Intel se ponovo pojavio kao jedan od vodećih proizvođača svojim 8080, koji je koristio istovetan skup instrukcija kao i raniji 8008 i smatra se da je 8080 bio prvi mikroprocesor koji je imao određenu primenu. 8080 je imao 16-bitnu adresnu magistralu i 8-bitnu programsku magistralu, 16-bitni pokazivač steka memorije koji je zamenio 8-nivoski interni stek kod 8008, i 16-bitni programski brojač. Takođe je imao 256 U/I portova, kako bi U/I uređaji mogli biti povezani bez zauzimanja ili interferencije sa adresnim prostorom. Takođe je posedovao signalni pin koji je omogućavao steku da zauzme odvojeni deo memorije. Ove karakteristike su ono što je ovaj procesor učinilo istinski modernim mikroprocesorom. On je bio korišćen u Altair-u 8800, jednom od prvih poznatih personalnih kompjutera (drugi pretendentni na tu titulu su 12-bitni LINC/Laboratory Instruments kompjuter firme MIT  Lincoln  Labs izrađen sa DEC komponentama iz 1963.godine i DEC-ov PDP-8 iz 1965.godine).

Iako je 4004 prvi Intelov mikroprocesor, zapravo je tek 8080 obezbedio njegovu budućnost – to je odmah postalo jasno, i 1974.godine kompanija je promenila svoj broj telefona tako da su im poslednje četiri cifre bile 8080.

Prva generacija mikroprocesora počinje Intelovim 8086 (1978.godine). To je bio 16-bitni CPU i bio je korišćen u originalnim IBM PC-ima. Skup instrukcija je postao poznat kao x86. Ovo je trebalo da bude privremeno rešenje koje bi zadržalo konkurenciju dok Intel ne usavrši svoj iAPX432. Ali sa uspehom IBM-a i totalnim neuspehom Intelovih inženjera, iAPX 432 nikada nije zaživeo. Zapravo, Intel nikada nije uspeo da zameni x86 skup instrukcija.

1979.godine se pojavljuje Intel 8088 a tri godine kasnije, 1982.godine se pojavljuju Intel 80186 i 80188.

 ‐ 16 ‐

Page 17: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Druga generacija je nastala 1982.godine i tu je karakterističan Intel 80286.

Treća generacija nam 1985.godine donosi Intel 80386 DX ali to nije bio prvi Intelov 32-bitni procesor. Prvi 32-bitni procesor je bio već pominjani iAPX 432. Treću generaciju karakterišu i Intel 80386 SX, Intel 80386 SL, AMD Am386 i Intel 80386 EX.

Četvrtu generaciju karakterišu pojave Intel 80486 DX procesora kao i pojave Intel 80486 SX, AMD Am486, Intel 80486 SL, Cyrix 486 Serije, NexGen Nx586 i AMD 5x86 serije procesora.

Petu generaciju (od 1993-1997.godine) karakteriše pojava Pentium-a koja je izdvojila Intel od konkurentskih klonova. Imena mogu da budu zaštićena a identifikacioni brojevi proizvoda ne. To je početak Pentium nomenklature. Cyrix takođe izbacuje neke procesore koji mogu da se uvrste u petu generaciju.

Šestu generaciju karakteriše pojava sledećih procesora (dati su samo neki od njih): Intel Pentium Pro (1995.godine) Intel Pentium II [Klamath] (1997.godine) Intel Pentium III [Katmai] (1999.godine)

Za ovu generaciju je karakteristična i pojava MMX-a kao dopune x86-32 skupa instrukcija. AMD-ov neuspešan odgovor bio je tzv. 3D Now! i pojavljivao se kod K6-2.

Cyrix je bio kompanija koju su formirali IBM i Texas Instruments. Neki od njihovih procesora su bili označavani kao IBM. Bili su pin kompatibilni sa Intelovim procesorima i koristili su se kao nadogradnja starijih kompjutera. Npr. 6x86 je bio popularan u kompjuterskim radnjama ali nigde osim toga. 6x86 je ustvari bio kraj Cyrix-a zbog toga što taj procesor nije bio projektovan za budućnost.

Pentium III je predstavio još jednu dopunu x86 nazvanu SSE. Isto kao i MMX i ona je bila projektovana kako bi pomogla u izvršavanju kompleksnih matematičkih operacija.

Sedma generacija Ovde treba pomenuti sledeće, Intel Pentium III [Coppermine] je služio kao osnova iz koga je proizašao Intel Pentium 4 [Williamette] (2000.godine) koji je predstavio još jednu dopunu x86 nazvanu SSE2 i koja proširuje SSE skup instrukcija.

U ovom periodu AMD počinje sa uvođenjem Athlon nomenklature a takođe i Duron nomenklature. 2003.godina označava kraj Duron nomenklature i početak uvođenja Sempron nomenklature. Takođe je u tom periodu karakteristična i pojava Opterona koji je bio prvi 64-bitni x86 bazirani CPU. AMD je izumeo x86-64 skup instrukcija kako bi sprečio usvajanje Intelovog Itanium skupa instrukcija, koji je bio ekskluzivno pravo i svojina Intela i pomoću koga bi Intel mogao da uništi svoju konkurenciju. Taktika je bila uspešna. Po zakonu, AMD i Intel moraju da dele sve patente bazirane na x86 CPU-ima.

Ovde je karakteristična i pojava Centrina koji ne predstavlja CPU već mobilni Intelov CPU uparen sa Intelovim Wi-Fi adapterom. Prescott jezgro je bio najveći neuspeh u dizajnu u ovom periodu. AMD je sa svojim Athlonom 64 prevazišao Prescott ali je on značajan zbog toga što je uveo još jednu dopunu x86 nazvanu SSE3. Kasnije (2005.godine) AMD uvodi i novu Turion nomenklaturu. AMD je imao prvi komercijalni dual­core CPU zbog toga što su Athlon 64 i Opteron bili dizajnirani da od starta budu dual­core. 2006.godine Intel uvodi tzv. Core nomenklaturu.

 ‐ 17 ‐

Page 18: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Osma generacija

Karakteristična je pojava Intelovog Core2 Duo procesora koji je uveo još jednu dopunu u x86 set instrukcija, nazvanu SSE4. Intel je kasnije dodao još neke instrukcije i ovo nazvao SSE4.1 a zatim uveo još dodatnih instrukcija sa novim nazivom SSE4.2. AMD je zatim dodao još neke različite instrukcije svojoj Phenom liniji i nazvao ih SSE4a.

AMD Phenom je ponovo uveo L3 keš u CPU.

Intel je napravio i u komercijalnu upotrebu pustio prvi quad­core CPU.

AMD je predstavio još jednu dodatnu ekstenziju x86 skupu instrukcija koju je nazvao SSE5. On će se pojaviti kod AMD-ovih procesora od 2009-te godine.

RCA 1802

1974.godine, RCA je predstavio 1802 8-bitni procesor sa arhitekturom koja se razlikovala od ostalih 8-bitnih procesora. Imao je registar fajl od 16 registra a svaki od njih je bio 16-bitni i koristio SEP instrukciju, i svaki od registara je mogao biti selektovan da bude programski brojač. Korišćenjem SEP instrukcije, bilo koji od registara je mogao da se koristi kao indeksni registar.

RCA 1802 se smatra jednim od prvih RISC čipova iako su neki drugi kao naprimer Seymore Cray već koristili ovaj koncept.

Danas se smatra da je RCA čip bio veliki promašaj zbog svog sporog radnog takta. Ali on je mogao da se proizvede da bude otporan na radijaciju pa je tako korišćen na svemirskim letelicama Voyager 1, Viking, i Galileo (gde nije potrebno brzo izvršavanje komandi).

IBM 801

1975.godine, IBM® je načinio jedan od prvih pokušaja da proizvede mikroprocesor baziran na RISC principima (iako on još uvek nije mogao da se nazove RISC-om).

801 familija čipova nikada nije imala široku primenu, i njena osnovna primena je bila u drugim IBM mašinama. Iako 801 nije otišao daleko, on je inspirisao dalje radove, petnaest godina kasnije, prilikom proizvodnje Power Architecture™ familije procesora.

Razvoj RISC procesora

RISC je skraćenica za "Reduced  Instruction  Set  Computer" ili, na malo komičniji način, za "Relegate  the Important Stuff to the Compiler," i još je poznat kao load­store arhitektura.

1970-ih godina 20-og veka, istraživanje u IBM-u je proizvelo iznenađujuće rezultate koji su se odnosili na to da su neke operacije bile stvarno sporije u odnosu na veći broj manjih operacija koje su radile istu stvar. Čuveni primer je VAX-ova INDEX instrukcija koja je bila sporija nego petlja koja je implementirala isti kod. RISC je počeo da se razvija za vreme 80-ih godina prošlog veka, ali mnogi projekti su koristili ovaj princip znatno pre toga. Jedan od poznatih primera je Sejmor Krejov (Seymour Cray) superkompjuter CDC 6600 iz 1964.godine. Većina RISC mašina je posedovala samo oko 5 prostih adresnih modova – što je manje adresnih modova, veća je redukcija skupa instrukcija (naprimer IBM System 360 je imao samo tri moda).

 ‐ 18 ‐

Page 19: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Moto 6800

1975.godine, Motorola je predstavila 6800, čip sa 78 instrukcija i verovatno prvi mikroprocesor sa indeksnim registrom.

Ovde imamo dve značajne stvari. Jedna je upotreba indeksnog registra koji predstavlja procesorski registar (mala količina brze memorije koja se koristi za ubrzanje izvršenja programa obezbeđujući brzi pristup često korišćenim vrednostima). Indeksni registar može da izmeni adresu operanda za vreme izvršenja programa, najčešće za vreme izvršenja vektor/polje operacija. Pre pronalaska indeksnog registra i bez indirektnog adresiranja, operacije nad poljima su morale da budu izvršavane ili linearnim ponavljanjem programskog koda za svaki element polja ili korišćenjem tehnika samo-izmenjivog koda. Obe ove metode kriju značajne mane kada dođemo do programske fleksibilnosti i održavanja.

Mnogi Motorolini procesori i mikrokontroleri su proistekli iz 6800, uključujući i popularan i snažan procesor 6809 iz 1979.godine.

MOS 6502

Ubrzo pošto je Motorola izbacila svoj 6800, jedao deo tima koji je projektovao ovaj procesor je napustio Motorolu i formirao sopstvenu kompaniju, MOS Technology. Oni su ubrzo zatim razvili MOS 6501, procesor sa totalno novim dizajnom koji je bio pin-kompatibilan sa procesorom 6800. Motorola se žalila, i MOS se složio da prestane sa proizvodnjom. Ova kompanija je potom izbacila MOS 6502, koji se razlikovao od 6501 samo u pin-out arhitekturi.

MOS 6502 se pojavio septembra 1975.godine, i prodavao se po ceni od 25 USD po komadu. U to vreme, Intel 8080 i Motorola 6800 su se prodavali po ceni od 179 USD. Mnogi ljudi su mislili da je zbog niske cene ovaj procesor veoma loših karakteristika. Ubrzo zatim su Intel i Motorola oborili cene svojih procesora na 79 USD. Ovo je uticalo na povećanje prodaje MOS 6502 procesora. 6502 smo mogli da nađemo u mnogim Apple® II kao i Commodore i Atari računarima.

MOS 6502 možemo danas da nađemo kod kolekcionara ili čak i originalnih vlasnika mašina kao što su Atari 2600 konzola, Apple II familija računara, prvih Nintendo sistema, Komodora 64 – jer su svi oni koristili 6502. MOS 6502 se danas još uvek proizvode za potrebe embedded sistema.

AMD klonira 8080

Advanced Micro Devices (AMD) je osnovan 1969.godine od strane Džerija Sandersa (Jerry Sanders). Isto kao što su i mnogi drugi ljudi koji su imali veliki uticaj u ranim danima mikroprocesora (uključujući i osnivače Intela), Sanders je došao iz firme Fairchild  Semiconductor. AMD-ov posao nije bio stvaranje novih proizvoda; oni su se usredsredili na stvaranje novih, kvalitetnijih verzija već postojećih proizvoda, naravno pod licencom. Na primer, svi njihovi proizvodi su ispunjavali MILSPEC-ove zahteve bez obzira na to kakvo je bilo krajnje tržište. 1975.godine, počeli su sa prodajom obrnuto-konstruisanih klonova Intel 8080 procesora.

80-ih godina prošlog veka, prvi sporazumi o licenciranju – a potom razilaženja i sporovi – sa Intelom, na kraju su doveli do sudske verifikacije obrnutog inžinjeringa i u 90-im godinama prošlog veka otvorilo branu mnogim novim klonovima.

 ‐ 19 ‐

Page 20: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Fairchild F8

8-bitni Fairchild F8 (takođe poznat i kao 3850) mikrokontroler je bio prvi Fairchild-ov procesor. Nije imao pokazivač steka, ni programski brojač, niti adresnu magistralu. Imao je 64 registra (od toga se prvim 8 moglo pristupati direktno) i 64 bajtova opštenamenskog RAM-a. Prvi F8 je imao višečipni dizajn (najčešće 2-čipa, od kojih je drugi bio ROM). F8 je bio predstavljen u jednočipskoj implementaciji (Mostek 3870) 1977.godine.

16 bitova, dva takmičara

Prvi multi-čip 16-bitni mikroprocesor je bio predstavljen od strane kompanije Digital  Equipment Corporation, i od strane Fairchild  Semiconductor u njihovom MicroFlame 9440, a oba su se pojavila 1975.godine. Prvi singl-čip 16-bitni mikroprocesor je bio TI TMS 9900 iz 1976.godine, koji je takođe bio kompatibilan sa TI 990 linijom miniračunara i bio korišćen u TM 990 liniji OEM mikroračunarskih ploča.

Zilog Z-80

Verovatno najpopularniji mikroprocesor svih vremena, Zilog Z-80 je dizajnirao Frederico Faggin pošto je napustio Intel, i ovaj mikroprocesor se pojavio jula 1976.godine. Faggin je dizajnirao ili bio vođa timova koji su dizajnirali sve rane Intelove procesore: 4004, 8008, i naročito, revolucionarni 8080.

Ovaj 8-bitni mikroprocesor je bio binarno kompatibilan sa 8080 i što je iznenađujuće, još uvek je široko rasprostranjen danas u mnogim embedded aplikacijama. Faggin je nameravao da ovo bude poboljšana verzija procesora 8080 i prema mnogim mišljenjima, on je to i bio. Mogao je da izvrši sve kodove procesora 8080 a isto tako i dodatnih 80 instrukcija (uključujući 1-, 4-, 8-, i 16-bitne operacije). Zbog toga što je imao dva skupa promenjivih registara podataka, podržavao je brzi operativni sistem.

Stvar koja ga je učinila stvarno popularnim, bio je njegov memorijski interfejs. Zbog toga što je CPU generisao svoje sopstvene signale za osvežavanje RAM-a, obezbedio je niže troškove.

1979.godine, Zilog je predstavio 16-bitni Z8000. To je bio još jedan veliki dizajn sa pokazivačem steka, ali nije imao nekog većeg uticaja. Glavni razlog za ovo bio je taj što je Zilog bila mala kompanija, koja nije imala podršku i nije mogla da se izbori sa konkurencijom.

Međutim, Zilog ne samo da pravi mikrokontrolere, on i dalje pravi Z-80 mikrokontrolere. Sve u svemu, više od milijardu primeraka Z-80 je napravljeno tokom godina što je najbolji pokazatelj Faginovog superiornog dizajna.

Moto 68000

1979.godine, Motorola je predstavila svoj 68000. Sa internim 32-bitnim registrima i 32-bitnim adresnim prostorom, njegova magistrala je još uvek imala 16 bitova zbog cene hardvera u to vreme. Originalno dizajnirana za embedded aplikacije, njegov dizajn inspirisan od strane DEC PDP-11 i VAX-a je značio da je ovaj procesor pronašao svoj put u Apple Macintosh, Amiga, Atari, pa čak i u Sun Microsystems® i Silicon Graphics računarima.

Pošto je 68000 polako dostizao kraj svog životnog veka, Motorola je ušla u Apple­IBM­Motorola  "AIM" savez koji će proizvesti prve PowerPC® čipove. 2000-te godine Motorola je prestala sa proizvodnjom mikroprocesora 68000.

 ‐ 20 ‐

Page 21: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

1980-te

Napredak u procesu koji je prethodio "više je više" eri VLSI-a, doveo je do pravih 32-bitnih arhitektura. U isto vreme, "manje je više" filozofija RISC procesora je omogućavala bolje performanse. U kombinaciji, VLSI i RISC su proizveli čipove sa respektabilnim mogućnostima, što je omogućilo rast tržišta UNIX® radnih stanica.

Dekada je počela sa nezavisnim projektima na Berkliju i Stanfordu - RISC i MIPS. Čak i sa novom RISC familijom, "mikroprocesorski ratovi," su doveli do toga da smo na kraju dekade imali manji broj proizvođača mikroprocesora nego na početku dekade.

Berklijev RISC

1980.godine, Univerzitet u Berkliju u Kaliforniji je počeo sa nečim što je nazvao RISC Projekat (zapravo, profesori koji su vodili ovaj projekat, Dejvid Paterson i Karlo H.Sekvin, se smatraju tvorcima izraza "RISC").

Do 1982.godine, oni su napravili prvi procesor, nazvan RISC-I. Sa samo 44KB tranzistora (u poređenju sa oko 100KB u mnogim savremenim procesorima) i sa samo 32 instrukcije, prevazišao je sve ostale postojeće singl čip projekte.

MIPS

U međuvremenu, 1981.godine, i samo preko puta zaliva San Franciska i Berklija, Džon Henesi i tim sa Stanford Univerziteta je počeo sa razvojem onoga što će postati prvi MIPS procesor. MIPS dizajn je počivao na veoma jednostavnom zahtevu da se eliminiše blokiranje (interlocking) – sve instrukcije moraju da zauzmu samo jedan radni takt. Ovo je potencijalno bila korisna promena u odnosu na RISC filozofiju.

POWER

Takođe istovremeno i nezavisno, IBM je nastavio da radi na svom RISC-u. 1974.godine je projekat 801 prerastao u Projekat Amerika i Projekat Čita. Projekat Čita će postati prva radna stanica koja će koristiti RISC čip, 1986.godine: PC/RT, koji je koristio ROMP čip inspirisan mikroprocesorom 801.

Do 1983.godine, RISC Projekat na Berkliju je proizveo RISC-II koji se sastojao od 39 instrukcija i bio više nego 3 puta brži u odnosu na RISC-I. Na Sun Microsystem-ov SPARC (Scalable Processor ARChitecture) čip dizajn je umnogome uticao RISC Projekt dizajn RISC-I –II procesora.

MIPS se godinama koristio u Silicon Graphics radnim stanicama. Iako najnovije SG radne stanice sada koriste Intelove procesore, MIPS je veoma popularana kod embedded aplikacija.

IBM-ov Čita projekat, koji se dalje razvio u PC-RT-ov ROMP, je bio promašaj, ali je Projekat Amerika do 1985.godine bio prototip, i 1990.godine, je prerastao u RISC System/6000. Ovaj procesor je preimenovan u POWER1.

RISC je bio brzo prihvaćen u industriji, i do danas je ostao najpopularnija arhitektura procesora. Tokom 80-ih godina prošlog veka, nekoliko dodatnih RISC familija je bilo pokrenuto. Pored već pomenutih tu su i:

 ‐ 21 ‐

Page 22: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

• CRISP (C Reduced Instruction Set Processor) iz AT&T Bell Labs.  • Motorola 88000 familija procesora.  • DEC­ova Alpha (prvi svetski 64-bitni singl čip mikroprocesor).  • HP Precision Architecture (HP PA­RISC).

32-bitnost

Rane 80-te su takođe predstavile prve 32-bitne čipove, kao što su:

BELLMAC-32A Motorola 68010 (and friends) NS 32032

ARM je rođen

1983.godine, Acorn Computers Ltd. je tražio procesor. Priča se da je Acorn odbijao Intel-ov 80286 čip, a takođe da je odbacivao i Intel 286 i Motorola MC 68000 pošto nisu bili dovoljno snažni. U svakom slučaju, kompanija je odlučila da razvije svoj sopstveni procesor nazvan Acorn RISC Machine, ili ARM. Kompanija je razvila semplove, poznate kao ARM I 1985.godine; a komercijalni model (ARM II) je bio spreman već sledeće godine. Originalni ARM čip je imao samo 30,000 tranzistora.

Nova nada: 90-te

Početkom 90-tih godina prošlog veka dolazi do raspada većine komunističkih država tako da je već 1991.godine hladni rat bio završen. Tako su proizvođači UNIX radnih stanica koji su bili oslonjeni na vojno tržište morali da traže nova polja za plasman svojih proizvoda. Srećom, komercijalizacija Interneta u 90-im godinama je popunila tu prazninu. Na početku ove dekade, Internet serveri se nisu ni mogli zamisliti bez UNIX-a.

Popularizacija Internet-a vodi do sve veće prodaje desktop računara.

Power Arhitektura

IBM je predstavio POWER arhitekturu - multičip RISC dizajn – već početkom 90-ih. Već sledeće godine, prvi singl čip PowerPC derivati su bili dostupni kao alternative dominantnim CISC desktop strukturama.

Tehnologija Power Arhitekture je popularna na svim sektorima, od UNIX eServer-a do embedded sistema. Kada se koristi kod desktop računara, često je poznata i pod nazivom Apple G5.

DEC Alpha

1992.godine, DEC je predstavio Alpha 21064 koji je radio na brzini od 200MHz. Superskalarni, 64-bitni dizajn procesora je bio čisti RISC, ali je prevazišao ostale čipove i bio je poznat kao DEC-ov najbrži procesor na svetu (kada je narednog proleća lansiran Pentium, on je radio na svega 66MHz).

Osnovni doprinos Alpha dizajna istoriji mikroprocesora nije bila njegova arhitektura – to je bio čisti RISC. Alfina snaga je bila u izvanrednoj implementaciji.

 ‐ 22 ‐

Page 23: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Počinje rat klonova

Marta 1991.godine, Advanced Micro Devices (AMD) je predstavio svoj klon Intelovog i386DX. On je radio na radnoj frekvenciji od 40MHz. AMD-ov cilj nije bio samo da naprave jeftinije čipove od Intela već su hteli i da prestignu suparnika u performansama. AMD-ovi čipovi u unutrašnjosti poseduju RISC dizajn; oni konvertuju Intelove instrukcije u odgovarajuće interne operacije pre izvršenja.

Takođe 1991.godine, spor između AMD-a i Intel-a je konačnno rešen u korist AMD-a, što dovodi do poplave novih proizvođača klonova – kao što su, Cyrix, NexGen, i ostali – od kojih su neki uspeli da prežive sledeću deceniju.

AMD je još uvek prisutan na tržištu, štaviše poslednji AMD-ovi projekti su klonirani od strane Intela!

Cyrix je preuzet od strane kompanije National  Semiconductor 1997.godine, i prodat je kompaniji VIA 1999.godine. Ovo je pretvorilo VIA-u u proizvođača procesora. Ova kompanija se danas specijalizovala u čipove za mobilne mašine.

CISC je bio retroaktivan termin. On je bio primenjivan u procesorima sa ciljem da odvoji tradicionalne procesore od novih RISC dizajna. A onda 1993.godine, Intel predstavlja Pentium, koji je bio superskalarna arhitektura. On je takođe bio kompatibilan sa starijim x86 arhitekturama i zbog toga je bio skoro "hibridni" čip - mešavina RISC i CISC ideja u dizajnu.

Gde smo mi danas? 2000-ta

Kao što je rekao Federico Faggin, eksponencijalna progresija Murovog zakona ne može da se nastavi u nedogled. Kako se bliži dan kada će procesori biti mereni angstremima a ne nanometrima, istraživači eksperimetišu sa skicama, materijalima, konceptima i procesima. Posle svega, današnji mikroprocesori su bazirani na istoj arhitekturi i procesima koji su se pojavili još pre 30 godina.

Sa današnjeg gledišta, postoji svega nekoliko glavnih igrača u ovoj oblasti.

RISC još uvek ima glavnu ulogu, ali njegove MIPS i ARM varijante se nalaze najčešće u embedded sistemima.

Kod 64-bitnih desktop računara, HP završava svoju Itanium alijansu sa Intel-om. AMD 64 (i njegovi klonovi) i IBM PowerPC su glavni igrači, dok se kod desktopa u celini, Intel, AMD, i VIA prave x86-kompatibilne procesore sa RISC linijama.

 ‐ 23 ‐

Page 24: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Višejezgarne (Multicore) Arhitekture

Uvod

Svedoci smo višejezgarne revolucije. Paralelno procesiranje nije vise ekskluzivno domen superkompjutera ili klastera. Entry­level server pa cak i osnovne radne stanice programera sada imaju kapacitet za hardverski i softvrski nivo paralelnog procesiranja. Pitanje je šta ovo znaci programeru i kakav ce to uticaj imati na process razvijanja softvera? U trci ko ima najbrži kompjuter, za proizvođace procesora sada je atraktivnije da postave više procesora na jedan čip nego li da povećavaju brzinu procesora. Do sada se programer oslanjao na razvoj novih i bržih procesora kako bi ubrzao software bez da napravi bilo kakvo poboljšanje u software-u. Ali ti su dani prošlost. Kako bi poboljšali celokupne performance sistema, proizvođači kompjutera su odlučili da dodaju vise procesora nego li da povećavaju frekvenciju (takt) procesora. Ovo znači da ukoliko software developer želi da aplikacija (program) ima koristi od nove generacije procesora, ta aplikacija mora da bude modifikovana kako bi mogla da eksploatiše kompjutere sa više procesora.

Premda sekvencijalno programiranje i razvoj aplikacija za jednojezgarne procesore imaju i dalje svoje mesto i ostaju aktuelni, na polju razvoja software-a se primećuje pomak ka multithreading-u i multiprocesiranju. Tehnike paralelnog programiranja koje su nekada bile samo briga teoretičara trenutno su u procesu približavanja širokim masama. Ideje razvoja aplikacija za višejezgarne sisteme su sve više problemi sa kojima se suočavamo u svakodnevnici.

Nove arhitekture

Najnovije tehnike u dizajniranju mikroprocesora za desktop računare uključuju korišćenje više procesora na jednom čipu. Ovi višejezgarni dizajni u potpunosti zamenjuju tradicionalne jednojezgarne arhitekture na kojima su počivali desktop računari. IBM, Sun, Intel i AMD su svi promenili svoje arhitekture čipova i prešli sa proizvodnje jednojezgarnih na višejezgarne procesore. Ovo je nateralo velike firme kao sto su Dell, HP ili Apple da se fokusiraju na prodaju računara kod kojih srce predstavlja višejezgarni procesor. Ovo nadmetanje između ovih firmi dovodi do toga da krajnji korisnici imaju sve jače i jače računare. Primarni problem sada predstavlja to što software nije pisan na taj način da iskoristi sve prednosti novog multicore dizajna. Zapravo, kako bismo uočili bilo kakvo ubrzanje koje nam donosi novi višejezgarni dizajn, software za desktop računare mora biti redizajniran (ponovo napisan).

Pristup dizajniranju i implementiranju aplikacionog sotware-a koji će iskoristiti prednosti višejezgarnih procesora se umnogome razlikuje od tehnika koje su korišćene za razvoj software-a za jednojezgarne procesore. Fokus u dizajniranju i razvoju software-a će morati da se promeni sa tehnika sekvencijalnog programiranja na tehnnike paralelnog i multithreading programiranja.

 ‐ 24 ‐

Page 25: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Radne stanice programera koji rade na razvoju software-a su sada multiprocesori koji imaju mogućnost multithreadinga na hardverskom nivou, multiprocesiranja i paralelnog procesiranja. Iako sekvencijalno programiranje i aplikacije za jednojezgarne procesore i dalje imaju svog udela i ostaju i dalje sa nama, ideje dizajniranja aplikacija za multicore procesore i njihov razvoj su danas u centru pažnje.

Šta je multicore?

Multicore je arhitektura koja stavlja više procesora na jedan jedini čip (kockicu). Svaki od tih procesora se naziva jezgro. Pošto se kapacitet čipova povećavao, postavljanje više procesora na jedan jedini čip je postalo praktično. Ove arhitekture su poznate kao Chip Multiprocessors (CMPs) zato što one dozvoljavaju multiprocesiranje jednog čipa. Multicore (višejezgarnost) je jednostavno popularan naziv za CMP ili za Single Chip Multiprocessors. Ovaj koncept nije nov jer proizvođaci čipova razvijaju ideju postavljanja više procesora (više jezgara) na jedan jedini čip još od početka 90-ih godina prošlog veka. U novije vreme, CMP je postao omiljeni metod u poboljšanju celokupnih performansi sistema. Ovo je prelaz sa pristupa koji je poboljšanje performansi sistema ostvarivao povećanjem radne frekvencije procesora. Međutim, povećanje radne frekvencije je dostiglo svoj vrhunac u pogledu isplativosti. Više frekvencije zahtevaju više snage što sa sobom povlači i znatno skuplja rešenja za sisteme za hladjenje. Ovo takodje utiče i na problem veličine čipova. Zbog toga se umesto da se za potrebe poboljšanja performansi sistema pribegava izradi brzih procesora akcenat stavlja na ugradnji multicore procesora. Jednostavna i bolja realizacija ovog pristupa je dovela do tzv. Multicore revolucije. Zbog toga danas centralno mesto u poboljšanju sveukupnih performansi sistema imaju multicore arhitekture.

Za programere kojima je blizak proces multiprocesiranja, multicore programiranje će takođe biti razumljivo. Sa logičke tačke gledišta, ne postoji neka bitna razlika između programiranja za više procesora koji se nalaze u posebnim pakovanjima i programiranja za višeprocesorske sisteme koji se nalaze u jednom pakovanju ili na jednom čipu. Ovde ima određenih razlika u performansama zato što novi CMP koriste prednosti u arhitekturi magistrala i u vezama između procesora. U nekim slučajevima ovo moze da dovede do toga da se neka aplikacija koja je originalno pisana za višeprocesorske sisteme izvršava brže kada se izvršava na CMP arhitekturi. Ukoliko se zanemare potencijalni dobici u performansama, dizajn i implementacija su vrlo slični. Za programere koji su bliski samo sa sekvencijalnim programiranjem i razvoju aplikacija za jednojezgarne sisteme, multicore pristup nudi mnogo novih modela za razvoj software-a.

Multicore Arhitekture

CMP stiže u mnogo različitih oblika: dvojezgarne (dual core), četvorojezgarne (quad core) i osmojezgarne (octa  core) konfiguracije. Neke od ovih konfiguracija su multithreading a neke nisu. Postoji nekoliko nacina u pristupu kešu i memoriji kod novih CMP-a. Komunikacija procesor-procesor je različita u zavisnosti od tipa implementacije. CMP implementacije različitih proizvođača različito iskorišćavaju ulazno/izlaznu (U/I) magistralu i Front Side Bus (FSB).

 ‐ 25 ‐

Page 26: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Većina ovih razlika nije vidljiva kada se aplikacija koja je dizajnirana da iskoristi prednosti višejezgarne arhitekture posmatra sa logičke tačke gledišta. Slika 1.1 prikazuje tri najčešće konfiguracije koje podržavaju multiprocesiranje.

Konfiguracija 1 na slici 1.1 koristi hyperthreading. Kao i CMP, hyperthread-ovan procesor dozvoljava da se dva ili više thread-ova izvršavaju na istom čipu. Međutim, u hyperthread-ovanom paketu procesori su zapravo logički a ne fizički. Postoji određena duplikacija hardware­a ali nedovoljna da se okarakteriše kao fizički poseban procesor. Zato hyperthread-ing dozvoljava procesoru da sebe predstavi operativnom sistemu kao komplet više procesora a u stvari se radi o jednom procesoru koji izvršava više thread-ova.

Konfiguracija 2 na slici 1.1 je klasičan multiprocesor. Kod ove konfiguracije svaki procesor je na posebnom čipu sa svojim sopstvenim hardverom.

Konfiguracija 3 predstavlja trenutni trend kod multiprocesora. Ova konfiguracija obezbeđuje kompletne procesore na jednom čipu.

Određene višejezgarne arhitekture podržavaju hyperthread-ing unutar svojih jezgara. Na primer, hyperthread-ovan dual  core procesor (sa dva jezgra) može sebe operativnom sistemu da predstavi kao quad core procesor (sa četiri jezgra).

Hibridne višejezgarne arhitekture

Hibridne multijezgarne arhitekture kombinuju više tipova procesora i/ili threading šema na jednom paketu. Ovo može da obezbedi vrlo efikasan pristup optimizaciji i specijalizaciji koda kombinujući jedinstvene mogućnosti u jedno funkcionalno jezgro. Jedan od najčešćih primera hibridnih višejezgarnih arhitektura je IBM-ov Cell broadband engine (Cell).

 ‐ 26 ‐

Page 27: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Ono što je potrebno da se zapamti je da svaka od ovih konfiguracija predstavlja sebe programeru kao set od dva ili više logičkih procesora koji su u mogućnosti da izvršavaju više različitih taskova istovremeno. Izazov sistemskim programerima, kernel programerima, i programerima aplikacija je da znaju kada i kako da iskoriste sve prednosti ovoga.

Pogled programera

Niska cena i široka rasprostranjenost CMP-ova omogućava paralelno procesiranje i osrednjim programerima. Paralelno procesiranje nije više ekskluzivni domen superkompjutera ili klastera. Osnovne radne stanice i entry­level serveri sada poseduju kapacitet za hardverski i softverski nivo paralelnog procesiranja. Ovo znači da programeri i softver developeri mogu da razvijaju aplikacije koje iskorišćavaju sve prednosti multiprocesiranja i multithreading-a bez traženja kompromisa u dizajnu ili performansama. Međutim, ne zahteva svaka softverska aplikacija multiprocesiranje ili multithreading. Zapravo, neka softverska rešenja i algoritmi se bolje implementiraju korišćenjem tehnika sekvencijalnog programiranja. U nekim slučajevima, uvođenje tehnika paralelnog procesiranja može da dovede do degradiranja performansi. Paralelizam i multiprocesiranje koštaju. Ukoliko je količina posla koju je potrebno uložiti da bi se problem rešio sekvencijalno manja od količine posla potrebne za kreiranje dodatnih thread-ova i procesa odnosno manja od posla potrebnog za koordinaciju komunikacije između zadataka koji se konkurentno izvršavaju, onda je sekvencijalni pristup bolji. Ponekad je određivanje kada i gde koristiti paralelizam veoma lako zbog toga što priroda softverskog rešenja zahteva paralelizam. Na primer, paralelizam kod mnogih klijent – server konfiguracija je očigledna. Možete imati jedan server, recimo bazu podataka, i mnogo klijenata koji istovremeno mogu da pristupaju toj bazi. U većini slučajeva, nećete hteti da se zahteva da jedan klijent čeka dok se ne ispuni zahtev nekog drugog klijenta. Prihvatljivo rešenje omogućava softveru da procesuira zahteve različitih klijenata simultano. S druge strane, postoji ponekad iskušenje da se paralelizam koristi i kada se to ne zahteva. Na primer, možemo pomisliti da će traženje ključne reči u tekstu kod paralelnog izvršenja automatski biti brže nego li kod sekvencijalnog traženja. Ali ovo zavisi od veličine teksta koji se traži kao i od vremena i veličine dodatnog setup-a potrebnog za započinjanje višestruke pretrage kod paralelnog traženja. Odluka u korist rešenja koje koristi konkurentnost mora da razmotri veličinu problema. U većini slučajeva, pisanje i implementacija softvera jesu posebni problemi i u većini slučajeva se izvršavaju od strane različitih grupa. Ali u slučaju gde je primarni zahtev sistema ubrzanje softvera ili optimalne performanse, dizajner softvera mora da bude svestan izbora kod implementacije, a prilikom izbora implementacije moramo biti informisani o potencijalnim platformama. Ovde su platforme multijezgarne. Da bismo u potpunosti iskoristili sve prednosti koje pruža multicore platforma, moramo da shvatimo šta sve možemo da učinimo kako bismo iskoristili mogućnosti CMP-a. Moramo da shvatimo nad kojim elementima CMP-a možemo da preuzmemo kontrolu. Videćemo da CMP-u možemo da pristupimo preko prevodioca, preko poziva/biblioteka operativnog sistema, preko osobina jezika, i preko biblioteka na aplikacionom nivou. Ali pre nego što shvatimo šta možemo da radimo u pristupu CMP-u, potrebno nam je osnovno znanje u vezi arhitekture procesora.

 ‐ 27 ‐

Page 28: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Osnovna arhitektura procesora

Komponente kojima možemo da pristupamo i na koje možemo da utičemo uključuju registre, osnovnu memoriju, virtualnu memoriju, korišćenje seta instrukcija, i optimizaciju objektnog koda. Važno je shvatiti na šta se može uticati kod arhitektura sa jednim procesorom pre nego što se pređe na višeprocesorske arhitekture. Slika 1.2 prikazuje pojednostavljen logički pregled arhitekture procesora i komponenata memorije.

Postoje mnoge varijacije kod arhitektura procesora, i na Slici 1.2 je dat samo logički pregled. Ova slika ilustruje osnovne komponente procesora sa kojima možemo raditi. I dok je ovaj nivo detalja i komponenata često transparentan određenim tipovima razvoja aplikacija, ovo igra znatno važniju ulogu u bottom – up multicore programiranju i kod razvoja softvera kod kojih su brzina i optimalne performanse primarni ciljevi. Naša osnovna veza sa procesorom je prevodilac (kompajler). Operativni sistem je sekundarna veza.

Paralelno programiranje može da se koristi za sve vrste aplikacija i to korišćenjem različitih pristupa, od niskog do visokog nivoa, od objektno – orijentisanih do strukturnih aplikacija. C++ podržava višeparadigmni pristup programiranju, pa ga tako koristimo zbog njegove fleksibilnosti.

 ‐ 28 ‐

Page 29: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Procesor - CPU (Skup Instrukcija)

CPU poseduje prirodan skup instrukcija koje prepoznaje i izvršava. Posao C++ prevodioca je da prevodi C++ programski kod u prirodni set instrukcija ciljne platforme. Kompajler prevodi C++ i generiše objektnu datoteku koja se sastoji samo od instrukcija koje su prepoznatljive procesoru. Na slici 1.3 je ukratko opisana osnova procesa kompilacije.

Za vreme procesa prevođenja koda napisanog na C++ jeziku u mašinski jezik procesora, kompajler ima nekoliko opcija za generisanje objektnog koda. Kompajler se može iskoristiti kao pomoć u određivanju kako će se koristiti registri, kao i da li treba izvršavati odmotavanje petlje (loop unrolling). Kompajler ima opcije koje se mogu podešavati radi određivanja da li će generisati 16-bitni, 32-bitni ili 64-bitni objektni kod. Kompajler se može iskoristiti kako bi se odredio memorijski model. Kompajler može da obezbedi kod koji obezbeđuje informaciju koliko level 1 (L1) ili level 2 (L2) keša je prisutno. Zapravo, postoje opcije kompajlera i prekidači koji mogu da utiču na korišćenje bilo koje komponente na slici 1.2. Činjenica da kompajler obezbeđuje pristup procesoru utiče na programera koji piše aplikaciju za višejezgarni procesor za određeni procesor ili familiju procesora. Na primer, UltraSparc, Opteron, Intel Core 2 Duo, i Cell procesori često koriste višejezgarne konfiguracije. Ovi procesori podržavaju vektorske operacije velikih brzina i izračunavanja. Oni poseduju i podršku za Single Instruction Multiple Data (SIMD) model paralelnog izračunavanja. Kompajler može da pristupa i utiče na ovu podršku. Vrlo je bitno da se primeti da se korišćenjem različitih tipova opcija kompajlera dolazi do toga da kompajler optimizuje kod samo za određeni procesor. Ako je mešovita - platformska kompatibilnost cilj projekta, onda opcije kompajlera

 ‐ 29 ‐

Page 30: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

moraju da se koriste veoma oprezno. Za sistemske programere, kreatore biblioteka programa, pisce kompajlera, one koji razvijaju kernel, kao i one koji razvijaju baze podataka i serverske mašine, fundamentalno poznavanje osnovne arhitekture procesora, seta instrukcija i kompajlerskog interfejsa je preduslov za razvoj efikasnog softvera koji koristi prednosti CMP-a.

Memorija je ključ

Virtuelno sve što se dešava u računarskom sistemu prolazi kroz određenu vrstu memorije. Većina stvari prolazi kroz više nivoa memorije. Softver i pridruženi podaci su obično umemorisani na nekoj vrsti spoljašnjeg medijuma (obično na hard diskovima, CD-ROM-ovima, DVD-ima, itd.) pre svog izvršenja. Na primer, recimo da imamo važnu i veoma dugačku listu brojeva umemorisanih na optičkom disku, i da trebamo da saberemo te brojeve. Takođe recimo da je zamišljeni program potreban za sabiranje vrlo dugačke liste brojeva umemorisan na optičkom disku. Slika 1.4 ilustruje tok programa i podataka prema procesoru.

U mnoštvu raličitih tipova memorija, moramo da znamo da tipičan procesor radi samo sa podacima koji su umemorisani u njegovim registrima. On nema kapacitet da direktno pristupa podacima ili programima umemorisanim na nekom drugom mestu. Slika 1.4 prikazuje kako ALU čita i upisuje podatke u registre. Ovo je normalno stanje stvari. Komande seta instrukcija (prirodan jezik procesora) su dizajnirane da primarno rade sa podacima i instrukcijama u registrima procesora. Da bi se duga lista važnih brojeva i programa dostavila procesoru, softver i podaci moraju biti pronađeni na optičkom disku i učitani u glavnu sistemsku memoriju memoriju. Iz glavne sistemske memorije, bitovi i delovi softvera i podataka se prosleđuju L2 kešu, zatim L1 kešu, a potom u instrukcijski i registre podataka i tek tada CPU može da otpočne svoj posao. Važno je primetiti da na svakom od ovih nivoa memorija radi na različitim brzinama. Sekundarne memorije kao npr. CD-ROM, DVD i hard diskovi su sporiji od glavne memorije (RAM). RAM je

 ‐ 30 ‐

Page 31: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

sporiji od L2 keša. L2 keš je sporiji od L1 keša, i tako dalje. Registri na procesoru su najbrži elementi sa kojima možemo direktno raditi. Pored brzina različitih tipova memorija, veličina memorija je takođe različita. Slika 1.5 prikazuje hijerarhijski pregled memorija.

Registeri su najbrži ali imaju najmanji kapacitet. Na primer, 64 – bitni kompjuter najčešće ima set registara gde svaki od njih može da memoriše do 64 bita. U nekim slučajevima, registri se mogu koristiti u parovima tako da mogu da umemorišu i do 128 bitova. Sledeća po kapacitetu je keš memorija L1 a zatim, ukoliko postoji, L2 keš memorija. L2 keš memorija se danas izražava u megabajtovima. Posle toga imamo veliki skok u maksimalnom kapacitetu memorije sa L2 keša na glavnu sistemsku memoriju, koja se u današnje vreme izražava u gigabajtovima. Pored razlika u brzinama različitih tipova memorija i njihovih kapaciteta, postoje i određene veze između različitih tipova memorija. Ove veze imaju veliki uticaj na celokupne performanse sistema. Podaci i instrukcije memorisane u sekundarnoj memoriji najčešće moraju da putuju preko U/I kanala ili magistrale kako bi bile prebačene u RAM. Kada budu prebačeni u RAM, podaci i instrukcije putuju kroz sistemsku magistralu do L1 keš memorije. Brzina i kapacitet U/I magistrala i sistemskih magistrala mogu da postanu uska grla u multiprocesorskim okruženjima. Kako se broj jezgara na jednom čipu povećava, performanse magistrala i staza podataka postaju sve važnije. Kasnije će biti razmatrane veze između magistrala, ali prvo moramo da proučimo hijerarhiju memorije i ulogu koju memorija igra u razvoju aplikacija za višejezgarne procesore. Moramo da znamo da isto kao što možemo da koristimo uticaj koji kompajler ima na izbor seta instrukcija, možemo da ga koristimo da manipulišemo sa korišćenjem registara i RAM memorije. Dalje, možemo iskoristiti elemente jezika C++ kako bismo specificirali upotrebu registara, RAM, i U/I uređaja. Znači, pre nego što steknemo jasnu sliku o multiprocesiranju ili multithreading-u, moramo da shvatimo hijerarhiju memorije sa kojom procesor komunicira.

 ‐ 31 ‐

Page 32: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Registri

Registri su male ali izuzetno brze memorije specijalne namene kojima procesor (odnosno jezgro) direktno pristupa. Registri su nestalni (prolazni). Kada se program završi, svi podaci ili instrukcije koji su bili u registrima nestaju. Takođe za razliku od swap memorije ili virtualne memorije, koje su stalne jer koriste neku vrstu sekundarne memorije, registri su privremeni. Podaci u registrima traju samo dok sistem radi ili dok se program izvršava. Kod računara opšte namene, registri se nalaze unutar procesora i zbog toga imaju skoro nulto kašnjenje. Tabela 1.2 prikazuje osnovne tipove registara prisutnih u većini procesora opšte namene.

Registri Opis Indeksni Koristi se kod opštih izračunavanja i u specijalne svrhe kod rada sa adresama Segmentni Koristi se za čuvanje segmentnih delova adresa IP Koristi se za čuvanje dela adrese sledeće instrukcije koja treba da se izvrši Brojački Koristi se kod konstrukcija petlji, ali takođe i u opštim izračunavanjima Bazni Koristi se kod izračunavanja i smeštanja adresa

Data Koriste se kao registri opšte namene i mogu biti korišćeni za privremeni smeštaj i izračunavanje

Flag Pokazuje stanje mašine ili stanje procesora Floating point Koristi se kod izračunavanja i pomeranja brojeva u pokretnom zarezu

Većina C/C++ kompajlera poseduje prekidače koji mogu da utiču na upotrebu registara. Pored opcija kompajlera koje se mogu koristiti kako bi se uticalo na korišćenje registara, C++ poseduje asm{ } direktivu, koja omogućava da se asemblerski jezik piše unutar C++ procedure ili funkcije, kao naprimer:

void my_fast_calculation(void) { ... asm{ ... mov 2 , %r3 inc(%r3) ... } ... }

my_fast_calculation() koja upisuje 2 u %r3 registar opšte namene kod UltraSparc procesora. I dok keš nije lako vidljiv od strane C++, registri i RAM su vidljivi. U zavisnosti od vrste multiprocesora za koji se softver razvija, manipulacije registrima, bilo preko kompajlera ili korišćenjem C++ asm{} mogućnosti, mogu biti neophodne.

 ‐ 32 ‐

Page 33: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Keš

Keš je memorija koja je postavljena između procesora i glavne sistemske memorije (RAM). I dok keš nije brz kao registri, on je brži or RAM memorije. Takođe može da umemoriše veću količinu podataka od registara ali ne poseduje kapacitet koji ima glavna memorija. Keš povećava efektivnu brzinu prenosa podataka kroz memoriju i zbog toga poboljšava celokupne performanse sistema. Keš se koristi da sačuva kopije nedavno korišćenih podataka ili instrukcija od strane procesora. Mali delovi memorije se pribavljaju iz glavne memorije i skladište u keš u iščekivanju da će oni biti potrebni procesoru. Programi imaju sklonost da prikazuju privremenu lokalnost i prostornu lokalnost.

• Privremena lokalnost je tendencija za ponovnim korišćenjem nedavno korišćenih instrukcija ili podataka

• Prostorna lokalnost je tendencija za korišćenjem instrukcija ili podataka koji su fizički blizu podataka ili instrukcija koji su se nedavno koristili.

Jedna od osnovnih funkcija keša je da iskoristi prednost ovih prolaznih i prostornih karakteristika programa. Keš se vrlo često deli na dva nivoa, keš memorija nivoa 1 i nivoa 2.

Keš nivoa 1 (L1 keš)

L1 keš je male veličine i ponekad sadrži svega 16K memorije. L1 keš se najčešće nalazi unutar procesora i koristi se za hvatanje najskorije korišćenih bajtova instrukcija ili podataka.

Keš nivoa 2 (L2 keš)

L2 keš je nešto veći i sporiji od L1 keša. Trenutno, L2 keš se stavlja na matičnu ploču (znači izvan procesora) ali se ovo polako menja. L2 keš se trenutno meri u megabajtovima. L2 keš može da umemoriše čak i znatno veće delove najskorije korišćennih instrukcija, podataka, i predmeta koji se nalaze u neposrednoj blizini nego li L1 keš. Zbog toga što su L1 i L2 keš brži od RAM memorije opšte namene, bolje poznavanje onoga što će program sledeće da izvrši znači i poboljšanje celokupnih performansi sistema zbog toga što će pravi delovi podataka da budu locirani bilo u L1 ili u L2 keš memoriji. Ovo smanjuje put do RAM ili virtualne memorije ili, u još gorem slučaju, do eksterne memorije.

 ‐ 33 ‐

Page 34: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Opcije Prevodioca za Keš?

Najveći broj programera koji pišu aplikacije za multijezgarne arhitekture neće biti uključeni u ručno upravljanje kešom osim ako, naravno, ne rade na razvoju kernela, razvoju kompajlera ili drugih tipova sistemskog programiranja niskog nivoa. Međutim, opcije kompajlera koje daju kompajleru nagoveštaj toga koliko L1 ili L2 keša je raspoloživo ili nagoveštaj svojstava L1 ili L2 keša mogu da se nađu kod većine kompajlera koji su danas u upotrebi. Na primer, Sun C++ kompajler poseduje xcache prekidač. Ovde prikazujemo sintaksu i način korišćenja xcache opcije:

- xcache=c definiše svojstva keša koja optimajzer može da koristi. On ne garantuje da se bilo koje pojedinačno svojstvo keša koristi. Iako se ova opcija može koristiti pojedinačno, ona je deo ekspanzije - xtarget opcije; njeno primarno svojstvo je da prelazi preko vrednosti obezbeđene od strane –xtarget opcije.

- xcache=16/32/4:1024/32/1 specificira sledeće:

L1 keš ima: L2 keš ima: 16K bajtova 1024K bajta 32-bajtnu veličinu linije 32-bajtnu veličinu linije 4-smerna asocijativnost Direktno mapiranje

Pisanje softvera koje će na najbolji način da iskoristi prednosti CMP-a zahteva pažljivo razmatranje celokupnog skupa instrukcija procesora ili familije procesora kao i iskorišćenja memorije. Ovo uključuje i to da programer mora da bude svestan mogućnosti optimizacije, kao što su naprimer loop  unrolling (odmotavanje petlji), vektorske manipulacije velikim brzinama, SIMD procesiranje, i MP kompajlerske komande, a takođe i davanje nagoveštaja kompajleru za vrednosti kao što su veličina L1 ili L2 keša.

Glavna Memorija

Slika 1.2 prikazuje relativne veze između registara, keša, ALU i glavne memorije. Ukoliko zanemarimo eksterne memorije (kao što su na primer hard diskovi, CD-ROM, DVD itd.), RAM je najsporija memorija sa kojom programer radi. Takodje RAM je fizički lociran izvan procesora, pa prenos podataka preko magistrala do procesora dodatno usporava stvari. S druge strane, RAM je najvidljivi za programera multithred-ovanih odnosno multiprocesorskih aplikacija. Podaci koji se razmenjuju i dele između procesora i zadaci u najvećem broju slučajeva se memorišu u RAM memoriji. Instrukcije koje svaki procesor treba da izvrši se čuvaju u RAM memoriji tokom izvršenja. Kritične sekcije koje moraju da se sinhronišu između više procesora se čuvaju u RAM-u. Kada imamo zadatak ili procesorsko zatvaranje, to je normalna situacija zbog određenih upravljačkih prekoračenja. Skoro u svakom slučaju, komunikacija između procesora i zadataka, ili višestrukih izvršilaca, izvršavaće se preko promenjivih, nizova poruka i međusobnog isključivanja koje ostaje u RAM-u tokom trajanja procesa. Glavni element kod programerovog pogleda na višejezgarno programiranje je pristup i upravljanje memorijom. Isto kao što je to bio slučaj sa ostalim logičkim komponentama prikazanim na slici 1.2 o kojima je do sada bilo reči, imamo pristup kompajlerskim prekidačima koji utiču na to kako će memorija biti upravljana od strane aplikacije. Važan je izbor memorijskog modela. Objekti kreirani pomoću new() operatora u C++

 ‐ 34 ‐

Page 35: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

završavaju bilo u slobodnoj memoriji (gomila) ili u virtuelnoj memoriji (ukoliko je podatak dovoljno veliki). Slobodna memorija je logička u RAM-u. Virtuelna memorija je preslikana sa eksterne memorije.

Veza između magistrala

Podsistemi u kompjuteru međusobno komuniciraju korišćenjem magistrala. Magistrala služi kao deljiva komunikaciona veza između podsistema računara [Hennessy, Patterson, 1996]. Magistrala je kanal ili staza između komponenata unutar računara. Tradicionalno, magistrale se klasifikuju kao CPU-memorijske magistrale ili U/I magistrale. Osnovna konfiguracija sistema se sastoji od dve glavne magistrale, i to sistemske magistrale koja se često naziva Front Side Bus (FSB), i jedne U/I magistrale. Ako sistem ima keš, takođe najčešće postoji i Back  Side  Bus (BSB) koja povezuje procesor i keš memoriju. Slika 1.6 prikazuje pojednostavljenu konfiguraciju procesor-magistrala.

Na slici 1.6 FSB se koristi za prenos podataka između CPU i memorije. FSB je CPU – memorijska magistrala. U/I magistrala obično šalje informacije prema i od ostalih periferija. Treba obratiti pažnju da se na slici 1.6 BSB koristi za prenos podataka između CPU, keš memorije i glavne memorije. PCI (Peripheral Component Interconnect) je jedan primer U/I magistrale. PCI obezbeđuje direktnu vezu između uređaja koje povezuje. Međutim, PCI je obično povezan na FSB preko određene vrste bridge tehnologije. Pošto magistrale obezbeđuju komunikaciju između procesora, memorijskog kontrolera, U/I kontrolera, keš memorije i periferijskih uređaja, postoji velika verovatnoća da dođe do zagušenja u protoku. Konfiguracije sa više procesora mogu da izazovu napregnuće FSB-a. Trend je da se na jedan čip postavi više procesora. Ovo postavlja više komunikacijskih zahteva na magistralski bazirane arhitekture. Performanse sistema su ograničene maksimalnim propusnim opsegom magistrala koje se koriste između CPU, memorije i drugih periferijskih uređaja. Ukoliko je magistrala sporija od procesora ili ukoliko memorija ili magistrale nemaju dovoljan kapacitet, tajming ili sinhronizaciju, onda će magistrala biti usko grlo, koje će najviše da utiče na ukupne performanse sistema.

 ‐ 35 ‐

Page 36: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Od jednojezgarnih do višejezgarnih

Kod jednojezgarnih konfirguracija moramo voditi računa samo o jednom procesoru (koji je procesor opšte namene), mada je vrlo važno imati na umu da mnoge današnje jednojezgarne konfiguracije sadrže specijalne jedinice za grafičku obradu, multimedijalnu obradu a ponekad i specijalne metematičke koprocesore. Ali čak kod jednog jezgra ili jednog procesora multithreading, paralelno programiranje, pajplajning i multiprogramiranje su svi mogući. Sada ćemo videti neke od osnovnih ideja zbog kojih prelazimo sa jednojezgarnog na višejezgarno programiranje.

Multiprogramiranje i Multiprocesiranje

O multiprogramiranju se najčešće govori u kontekstu operativnih sistema. Multiprogramiranje je tehnika koja omogućuje da se u jednom trenutku više od jednog procesa nalazi u stanju izvršenja. U multiprogramskom sistemu, posao (ili procesi) dele sistemske resurse kao što su naprimer glavna memorija sistema ili procesor. Kod sistema sa jednim jezgrom postoji iluzija da se procesi izvršavaju simultano zbog toga što operativni sistem koristi time slices (vremenski komadići) tehnike. U toj shemi, svakom procesu je dodeljen mali interval vremena za izvršenje. Posle tog intervala, operativni sistem prebacuje kontekst i dozvoljava drugom procesu da se izvršava u određenom vremenskom intervalu. Ovi intervali se nazivaju time slices, i oni su izuzetno mali tako da operativni sistem prebacuje kontekst tako brzo da stvara iluziju da se više od jednog procesa ili posla izvršava istovremeno. Znači u scenariju gde imamo jednojezgarnu arhitekturu i gde se dva glavna zadatka izvršavaju konkurentno (na primer, snimanje na DVD i renderovanje kompjuterske grafike), kašemo da operativni sistem obavlja multiprogramiranje. Multiprogramiranje je tehnika raspoređivanja. Za razliku od ovoga, multiprocesor je kompjuter koji poseduje više od jednog procesora. U ovom slučaju, ukazujemo na ideju da imamo dva ili više procesora opšte namene. Tehnički govoreći, kompjuter sa jednim CPU i jednim GPU je multiprocesor. Ali za svrhu ovog izlaganja, fokusiraćemo se na više procesora opšte namene. Prema tome, multiprocesiranje je tehnika programiranja koja koristi više od jednog procesora radi konkurentskog izvršenja poslova. Ovde smo zainteresovani za tehnike koje spadaju u kategoriju paralelnog programiranja.

 ‐ 36 ‐

Page 37: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Paralelno Programiranje

Paralelno programiranje je umetnost i nauka koja se bavi implementiranjem algoritama, kompjuterskog programa, ili kompjuterske aplikacije, korišćenjem seta instrukcija ili zadataka dizajniranih za konkurentno izvršavanje. Slika 1.7 ilustruje delove svakog tipa i šta se od toga paralelno izvršava.

Paralelni algoritam na slici 1.7 može da izvrši set instrukcija paralelno. Instrukcija 1 i instrukcija 2 mogu biti izvršavane konkurentno. Instrukcije 5 i 6 takođe mogu biti izvršavane paralelno. U algoritmu, paralelizam nastaje između dve instrukcije. Ovo je u suprotnosti sa kompjuterskim programom na slici 1.7, gde je jedinica posla procedura ili funkcija ili thread. Procedura A i Procedura B mogu da se izvršavaju simultano. Pored konkurentnosti između Procedure A i B, one obe mogu imati konkuretnost i unutar njih. Funkcije Procedure A mogu se izvršavati paralelno. Znači za kompjuterski program koji sadrži paralelizam, jedinica posla je veća od algoritma. Aplikacija na Slici 1.7 ima najveću jedinicu posla. Zadatak A i Zadatak B se mogu sastojati od mnogo procedura, funkcija, objekata, itd. Kada pogledamo paralelno programiranje na aplikacionom nivou, govorimo o većoj jedinici posla. Pored zadataka, aplikacija može da sadrži podsisteme, na primer, pozadinske mrežne komponente ili multimedijalne komponente koje se izvršavaju simultano u pozadini u odnosu na zadatke koje korisnik izvršava. Ključna ideja ovde je da svaka struktura na Slici 1.7 koristi paralelno programiranje; razlika je samo u jedinici posla, koja se ponekad zove granularnost. Kasnije će biti više reči o paralelizmu.

 ‐ 37 ‐

Page 38: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Projektovanje i Primena Aplikacija za Multijezgarne CPU

Višejezgarni dizajn aplikacija i njihova implementacija koriste tehnike paralelnog programiranja da bi dizajnirale softver koji može da iskoristi prednosti CMP-a. Proces dizajniranja specificira posao od nekoliko zadataka ili kao dva ili više thread-ova, dva ili više procesa, ili neku kombinaciju thread-ova i procesa. Taj dizajn može biti implementiran korišćenjem template biblioteka, class biblioteka, thread biblioteka, poziva operativnog sistema ili tehnika programiranja niskog nivoa (na primer, pipelining, vektorizacija, itd). Ovde razmatramo osnove multithreading-a, multiprocesiranja, komunikacije između procesa, komunikacije između thread-ova, sinnhronizacije, thread biblioteka, i multithreading  class biblioteka ili template biblioteka. Niska cena CMP implementacije dovodi paralelno programiranje i multithreading na dohvat ruke osrednjeg programera. Fokus je na razvoju aplikacija za multijezgarne arhitekture korišćenjem multiprocesiranja i multithreading-a koje su prenosive između različitih operativnih sistema.

Rezime

Ovde smo pokazali ključne koncepte koje moramo da razumemo ukoliko razmatramo razvoj aplikacija za multijezgarne arhitekture. Neke od važnih razmatranja koje je ovo poglavlje pokrilo su:

Višejezgarni čip je čip koji poseduje dva ili više procesora. Ovakva konfiguracija procesora se naziva CMP. CMP se trenutno kreće u rasponu između dual core (dvojezgarnih) do octa­core (osmojezgarni).

Hibridni višejezgarni procesori mogu da sadrže različite tipove procesora. Cell širokopojasna mašina je dobar primer hibridne multijezgarne arhitekture.

Razvoj višejezgarnih aplikacija može da se razmatra odozdo nagore ili odozgo nadole, u zavisnosti od toga da li se radi o sistemskim programerima, programerima kernela, programerima biblioteka, programerima servera ili programerima aplikacija. Svaka od ovih grupa se suočava sa sličnim problemima ali gleda na jezgra sa različitih tačaka.

Svi programeri koji planiraju da pišu softver koji će da koristi prednosti multiprocesorskih konfiguracija moraju da budu upoznati sa osnovnim arhitekturama procesora na zadatoj platformi. Osnovna međuveza sa specifičnim osobinama multijezgarnih procesora je C/C++ kompajler. Kako bi se od zadatog procesora ili zadate familije procesora izvuklo najviše, programer mora biti dobro upoznat sa opcijama kompajlera, asemblerskim podkomponentama kompajlera, kao i linkera. Sekundarne međuveze sadrže pozive operativnih sistema kao i komponente za sinhronizaciju i komunikaciju kod operativnog sistema.

Paralelno programiranje je umetnost i nauka koja se bavi implemetiranjem algoritama, računarskog programa, ili računarske aplikacije korišćenjem seta instrukcija ili zadataka dizajniranih na taj način kako bi se izvršavali konkurentno. Razvoj aplikacija za multijezgarne arhitekture se sastoji u korišćenju tehnika paralelnog programiranja i alata za razvoj softvera koji će iskoristiti sve prednosti CMP arhitektura.

 ‐ 38 ‐

Page 39: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Četiri Upečatljiva Višejezgarna Modela

Sada ćemo detaljnije da se upoznamo sa četiri multijezgarna projekta koji dolaze od nekih od vodećih svetskih proizvođača čipova:

AMD-ov Multijezgarni Opteron

Sun-ov UltraSparc T1

IBM-ov Cell Broadband Engine (CBE)

Intel-ov Core 2 Duo

Svaki od ovih proizvođača čipova pristupa Čip Multiprocesoru (CMP) sa različitog stanovišta. Njihovi pristupi multijezgarnom projektovanju se efikasno primenjuju s tim da svaki od ovih pristupa ima svoje prednosti, dobre strane, ali i slabosti u poređenju sa drugim pristupima. Ovde ćemo se upoznati sa osnovnim konceptima svakog od ovih projekata.

Kod mnogih softverskih aplikacija pisanih za široke mase, razlike kod hardverskih implementacija se zanemaruju zbog toga što je najčešće jedan od osnovnih ciljeva da se softver učini kompatibilnim za što više hardverskih platformi. Znači ovde imamo svestan pokušaj da se izbegne pisanje programa za mali broj platformi. U ovakvim scenarijima, programer se oslanja na to da operativni sistem sakrije bilo kakve platformske razlike sa kojima aplikacija može da se sretne. Programeri prolaze kroz proces pisanja programa bez brige oko specifičnih hardverskih pitanja. Ovo je dobra stvar! Jedan od osnovnih zadataka operativnog sistema je da sakrije hardverske detalje i upravlja njima. Međutim, nema svaki programer sreću sa ovim. Na primer, oni koji razvijaju softver za servere sa velikim promenama u bazama podataka, zatim softver za web servere, aplikacione servere, hardverski intenzivne igračke mašine, kompajlere, kernele operativih sistema, drajvere za određene uređaje i softver za naučno modeliranje i vizuelizaciju visokih performansi su praktično naterani da traže i eksploatišu osobine platformi koje će uticati na to da njihove aplikacije budu prihvatljive za krajnjeg korisnika. Za ovu klasu programera, familijarnost sa specifičnim procesorom ili familijom procesora je osnova za efikasno pisanje softvera. Tabela 2.1 prikazuje vrste aplikacije koje mogu da zahtevaju optimizaciju za specifične vrste platformi.

 ‐ 39 ‐

Page 40: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Tabela 2.1

Vrsta softvera Vrsta programera Serveri sa brzim promenama softvera Arhitekti softvera - Baze podataka Prodavci softvera - Serveri kod finansijskih transakcija Proizvođači softvera - Aplikacioni serveri itd Kerneli Sistemski programeri Igračke mašine Sistemski programeri Dizajneri softvera Programeri računarskih igara Grafički programeri Drajveri za uređaje Sistemski programeri Matrična i vektorska izračunavanja visokog nivoa Programeri naučnih aplikacija Matematičari Programeri aplikacija za naučne svrhe Kompajleri Sistemski programeri Mašine za baze podataka Proizvođači softvera Arhitekti baza podataka Računarske animacije visokog nivoa Grafički programeri Programeri računarskih igara Naučno modeliranje i vizuelizacija Programeri naučnih aplikacija

U tabeli 2.1 je takođe prikazano i nekoliko vrsta programera uključenih u određene tipove aplikacija. Sistemski programeri, grafički programeri, pisci aplikacija i softverski inženjeri koji pokušavaju da optimiziraju performanse softvera moraju da budu upoznati sa mogućnostima ciljne platforme. U slučajevima gde se najveća pažnja poklanja međuplatformskoj prenosivosti, specifične optimizacije koje zavise od tipa platforme moraju da budu uzete u obzir. U ostalim slučajevima, međuplatformska prenosivost se ne razmatra, i osnovni cilj koji se teži postići su najbolje performanse na ciljnoj platformi. U ovakvim slučajevima, najvažnije je da programer što bolje poznaje ciljni procesor ili familiju procesora. Ovde ćemo razmotriti top-down i bottom-up pristupe projektovanju i primeni aplikacija za multijezgarne arhitekture. Da bismo shvatili prednosti bottom-up pristupa kod multiprocesorskog programiranja zahteva se osnovno razumevanje CMP arhitekture, multithreading i multiprocesorske podrške operativnog sistema, i C/C++ kompajler za zadatu platformu. Takođe ćemo detaljnije razmotriti operativni sistem i kompajlersku podršku za multijezgarni razvoj. Ali prethodno razmotrimo četiri efikasna multijezgarna pristupa koja smo pomenuli na početku ovog poglavlja. Tabela 2.2 prikazuje poređenje Opteron, UltraSparc T1, CBE, i Core 2 Duo procesora.

Tabela 2.2

Naziv procesora

Hyperthread-ovan /SMT Koristi FSB

Deljiva memorija Keš 2 - lokacija Broj jezgara

Opteron Ne Ne Ne matična ploča 2 UltraSparc T1 Da Ne Ne čip 8 CBE Da Ne Da čip 9 Core 2 Duo Ne Da Da čip 2

 ‐ 40 ‐

Page 41: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

AMD-ov Multijezgarni Opteron

Dvojezgarni Opteron je osnovni model AMD-ove multijezgarne linije procesora. Dvojezgarni Opteron je najosnovnija konfiguracija, i u njemu je sadržan AMD-ov fundamentalni pristup višejezgarnim arhitekturama. Opteron je kompatibilan po izvornom i binarnom kodu sa Intelovom familijom procesora, pa tako, aplikacije pisane za Intelove procesore mogu biti kompajlirane i izvršavane od strane Opterona. Slika 2.1 prikazuje jednostavan blok dijagram dvojezgarnog Opterona.

Dvojezgarni Opteron se sastoji od dva AMD 64-bitna procesora, dva seta keš memorija nivoa 1 (L1 keš), dva seta keš memorija nivoa 2 (L2 keš), System Request Interface­a (SRI), crossbar switch­a, memorijskog kontrolera, i tehnologije Hiper  Transport­a. Jedna od ključnih arhitekturnih razlika između Opterona i drugih konstrukcija je AMD-ova Arhitektura Direktne Veze (Direct  Connect  Architecture - DCA) sa tehnologijom Hiper Transport­a. Arhitektura Direktne Veze određuje kako CPU komunicira sa memorijom i ostalim ulazno/izlaznim uređajima.

Da bismo razumeli vrednost AMD-ovog pristupa podsistemskim komunikacijama, važno je da se podsetimo koju ulogu u arhitekturi procesora igraju magistrale.

 ‐ 41 ‐

Page 42: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Opteronova Direktna Veza i Hiper Transport

Procesor Opteron se ogra]uje od arhitekture bazirane na magistralama. Procesor Opteron koristi Arhitekturu Direktne Veze (DCA) u vezi sa tehnologijom Hiper Transporta (HT) kako bi izbegao neke od performansnih uskih grla kod Front  Side  Bus (FSB), Back  Side  Bus (BSB) i Peripheral  Component Interconnect (PCI) konfiguracija.

Arhitektura Direktne Veze

Arhitektura Direktne Veze (DCA) je tačka-tačka bazirana šema veze. Ona ne koristi FSB. Umesto procesora, memorijski kontroler, i ulazno/izlazni uređaji su direktno povezani na CPU. Ovim pristupom lokalne veze izbegavaju se potencijalni performansni problemi na magistrali između CPU i memorijskog kontrolera. Takođe zbog toga što su veze lokalne, odnosno pošto je svako jezgro direktno povezano sa svojim sopstvenim memorijskim kontrolerom i poseduje direktne veze sa ulazno/izlaznim memorijskim kontrolerima – konkurentnost se prevazilazi.

Tehnologija Hiper Transporta

Konzorcijum Hiper Transporta definiše Hiper Transport kao veoma brzu vezu, malog kašnjenja, od tačke do tačke koja je dizajnirana kako bi se povećala brzina u komunikaciji između integrisanih kola u računarim, serverima, sistemima, i mrežne kao i telekomunikacione opreme. Prema Konzorcijumu Hiper Transporta, HT je dizajniran da bi:

Obezbedio značajno više propusnog opsega

Koristio odgovore sa malim kašnjenjem i sa nižim brojanjem

Održao kompatibilnost sa postojećim magistralama i proširio se na nove magistrale

Bio transparentan operativnom sistemu i da ima mali uticaj na periferijske drajvere

Opteron koristi HT kao čip-čip međuvezu između CPU i U/I uređaja. Komponente povezane sa HT-om su povezane u peer - to - peer maniru i kao takve su u mogućnosti da komuniciraju jedne sa drugima direktno bez potrebe za magistralama podataka. Najveći propusni opseg koji obezbeđuje HT je 12.8 GB/s po linku. Opteron konfiguracije dolaze sa 4 HT linka. U/I uređaji i magistrale kao što su PCI - E, AGP, PCI-X, i PCI se povezuju na sistem preko HT linkova. PCI-ovi su U/I magistrale, a AGP je direktna grafička veza. PCI, PCI - E, i AGP se koriste da povežu sistem sa periferijskim uređajima. Pored toga što poboljšava veze između procesora i U/I, HT se takođe koristi za omogućavanje direktnih veza između procesora na samom Opteronu. Multijezgarna komunikacija na Opteronu je poboljšana korišćenjem HT-a.

 ‐ 42 ‐

Page 43: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

System Request Interface i Crossbar  System Request Interface (SRI) sadrži mapu sistemskih adresa i preslikava memorijska područja u čvorove. Ukoliko se radi o pristupu lokalnoj memoriji, onda pretraga memorijskog rasporeda u SRI šalje to memorijskom kontroleru za odgovarajući procesor. Ukoliko pristup memoriji nije lokalnog karaktera (van čipa), pretraživanje routing tabele šalje HT portu. Slika 2.2 prikazuje logičku strukturu crossbara.

Crossbar poseduje pet priključaka: memorijski kontroler, SRI i tri HT-a. Prekidačko procesiranje je lokalno odvojeno na paketno procesiranje zaglavlja komandi i paketno procesiranje zaglavlja podataka. Logički, deo crossbar­a se dodeljuje putu prenosa paketa komandi, a drugi deo se dodeljuje putu prenosa paketa podataka.

Opteron je NUMA

Opteron poseduje arhitekturu Neuniformnog Memorijskog Pristupa (Non ­ Uniform Memory Access NUMA). Kod ove arhitekture, svaki procesor ima pristup svojoj sopstvenoj brzoj memoriji preko memorijskog kontrolera na čipu. NUMA arhitektura ima distribuiranu ali takođe i arhitekturu deljive memorije. Ovo je u suprotnosti sa arhitekturom Ravnomernog Memorijskog Pristupa (Uniform Memory Access ­ UMA). Slika 2.3 prikazuje pojednostavljen pregled UMA arhitekture.

 ‐ 43 ‐

Page 44: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Primetimo na slici 2.3 da procesori dele jednu memoriju. Svako vreme pristupa za svaki procesor je simetrično vremenu pristupa drugog procesora. Konfiguracija procesora na slici 2.3 se često naziva simetrični (sa deljivom memorijom) multiprocesor (SMP). Ovo potiče iz činjenice da svi procesori imaju jednako kašnjenje iz memorije čak i ako je memorija organizovana u više blokova [Hennessy, Patterson, 2007]. Glavna memorija i isto vreme pristupa kod SMP-a čine ga lakšim za implementaciju od NUMA kopije. Takođe, pojam deljivog adresnog prostora je jasniji kod UMA arhitektura zato što tu razmatramo samo jednu glavnu memoriju.

Nasuprot tome, slika 2.4 prikazuje pojednostavljeni pregled NUMA arhitekture.

NUMA je arhitektura sa raspodeljenom deljivom memorijom (distributed shared memory – DSM). Primetimo na slici 2.4 da svaki od procesora ima svoju sopstvenu osnovnu memoriju, ali takođe da svaka od ovih osnovnih memorija deli jedinstvenni adresni prostor. Zbog toga, ista fizička adresa na dva procesora ukazuje na istu lokaciju u memoriji [Hennessy,  Patterson,  2007]. U oba slučaja, kod UMA i NUMA konfiguracija, procesori dele adresni prostor. Međutim, kod NUMA arhitekture adresni prostor je deljiv sa logičke tačke gledišta, a kod UMA konfiguracije procesori fizički dele istu osnovnu memoriju. SMP arhitektura je zadovoljavajuća za manje konfiguracije, ali čim se broj procesora počne povećavati, jedan memorijski kontroler može da postane usko grlo i da dovede do degradacije sveukupnih performansi sistema. NUMA arhitektura se, sa druge strane, dobro kotira zbog toga što svaki procesor ima svoj sopstveni memorijski kontroler. Ako pogledamo konfiguraciju na slici 2.4 koja predstavlja pojednostavljenu konfiguraciju Opterona, možemo da vidimo da su mrežne međuveze izvedene pomoću Opteronove tehnologije Hiper Transporta. Korišćenjem tehnologije Hiper Transporta, procesori se direktno povezuju jedan sa drugim a takodje su i U/I uređaji direktno povezani na CPU. Ovo nam konačno daje poboljšanje u performansama preko SMP konfiguracije.

Keš i Multiprocesor Opteron

Dvojezgarni Opteron podržava dva nivoa keša. L1 keš može logički biti podeljen između I – Keša (keš za instrukcije) i D – Keša (keš za podatke). Svako jezgro poseduje sopstveni L1 keš. Svako jezgro u Opteronu takođe poseduje sopstvenih 1MB L2 keša koji se nalazi između procesora i glavne sistemske memorije.

 ‐ 44 ‐

Page 45: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Sun-ov UltraSparc T1 Multiprocesor

UltraSparc  T1 je osmojezgarni CMP koji ima podršku za multithreading na nivou čipa (chip  ­  level multithreading  ­  CMT). Svako od jezgara je u mogućnosti da izvršava četiri thread-a. Ovo se ponekad označava i kao hyperthread. CMT  UltraSparc  T1 procesora znači da T1 može da obrađuje do 32 hardverska thread-a. Šta ovo znači sa stanovišta programera? Osam jezgara sa po četiri thread-a sebe predstavljaju aplikaciji kao 32 logička procesora. Listing 2 - 1 sadrži kod koji može da se iskoristi da bi se videlo koliko procesora je dostupno operativnom sistemu (bez specijalnih kompajlera itd).

Listing 2 - 1

// Listing 2-1 // koristi sysconf() funkciju da odredi koliko // procesora je dostupno OS-u. using namespace std; #include < unistd.h > #include < iostream > int main(int argc,char *argv[]) { cout < < sysconf(_SC_NPROCESSORS_CONF) < < endl; return(0); }

 ‐ 45 ‐

Page 46: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

UltraSparc-ova T1 Jezgra

T1 se sastoji od osam Sparc V9 jezgara. V9 jezgra su 64-bitna. Svako jezgro poseduje L1 keš. Primetimo na slici 2.5 da postoji 16K L1 keša za instrukcije i 8K L1 keša za podatke. Osam jezgara dele jednu floating-point jedinicu (FPU). Slika 2.5 pokazuje staze pristupa L2 keša i osam jezgara. Četiri thread-a dele L2 keš. Svako jezgro ima šestonivoski protok:

Fetch (pribavi)

Thread selection (selekcija thread-a)

Decode (dekodiraj)

Execute (izvrši)

Memory access (pristup memoriji)

Write back (upiši)

Cross Talk i Crossbar   

Primetimo na slici 2.5 da su jezgra i L2 keš povezana preko cross  ­ switch ili crossbar. Crossbar ima 132 GB/s propusni opseg za komunikaciju između čipova. Crossbar je optimizovan za komunikaciju između L2 keša i jezgara kao i za komunikaciju između jezgra i L2 keša. FPU, četiri dela L2 keša, U/I mostovi, i jezgra međusobno komuniciraju putem crossbara. U osnovi crossbar se ponaša kao posrednik, dozvoljavajući komponentama T1 da komuniciraju međusobno.

DDRAM Kontroler i L2 Keš

UltraSparc T1 poseduje četiri odvojena memorijska kontrolera. Svaki kontroler je povezan na jedan deo L2 keša. L2 keš je podeljen kod T1 na četiri dela. T1 podržava do 128GB RAM-a.

    UltraSparc T1 i Sun i  GNU  gcc Kompajleri   

Upozajemo se sa arhitekturom UltraSparc  T1 procesora preko njegovih razlika u odnosu na AMD-ov Opteron, IBM Cell Širokopojasnu arhitekturu, i Intel-ov Core  2  Duo. Dok svaka od ovih arhitektura predstavlja multijezgarnu arhitekturu, različite implementacije su dramatične. Od najvišeg nivoa, odnosno od aplikacije dizajnirane da iskoristi sve prednosti multijezgarne arhitekture videćemo ih kao skup od dva ili više procesora. Međutim, sa tačke gledišta optimizacije, postoji mnogo više toga što treba uzeti u razmatranje.

 ‐ 46 ‐

Page 47: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

IBM-ova Cell Širokopojasna Mašina (Cell Broadband Engine CBE)

CBE je heterogen multijezgarni čip. To je heterogena arhitektura zato što se sastoji od dva različita tipa procesora: PowerPC Processing Element  (PPE) i Synergistic Processor Element  (SPE). CBE poseduje jedan PPE i osam SPEs, jedan memorijski kontroler velike brzine, jedan širokopojasni element međusobno povezane magistrale, memoriju velike brzine, i U/I međuveze koje su sve integrisane na čipu. Ovo ga čini jednom vrstom hibridnog devetojezgarnog procesora. Slika 2.6 daje pregled CBE procesora.

Većina standardnih CMP-ova imaju homogene procesore, odnosno procesore sa istim setom instrukcija. Procesori na CBE imaju dva različita seta instrukcija. Iako je svaki od elemenata procesora optimizovan za određene tipove operacija, oba tipa elemenata mogu da se koriste za izračunavanja opšte namene.

Prvi element kod Cell procesora je 64-bitni PowerPC procesor. Ovaj element se u potpunosti slaže sa 64-bitnom arhitekturom PowerPC-a i može da izvršava 32-bitni ili 64-bitni operativni sistem i aplikacije.

Drugi tip procesorskih elemenata je Synergistic  Processor  Element  SPE. SPE je optimizovan za pokretanje Single Instruction Multiple Data (SIMD) aplikacija.

Iako postoji nekoliko komercijalnih naučnih upotreba CBE-a, najčešće se sreće kod konzole Sony Playstation 3.

CBE i Linux

Izabrali smo CBE kao jedan od četiri efikasna višejezgarna arhitekturna dizajna zbog toga što su u mogućnosti da isporuče dosta performansi u Linux okruženju. Playstation 3 je fleksibilan uređaj koji dolazi sa ready - to - install Linux-om. Trenutno, postoji Fedora i Yellow Dog distribucija Linux­a za CBE. Niska cena Playstation 3 (PS3) konzole donosi razvoj heterogenih višejezgarnih aplikacija na dohvat ruke praktično bilo kog programera. PPE element i SPEs mogu biti programirani korišćenjem standardnih GNU gcc kompajlera. Tu je i CBE SDK dostupan za download od IBM-a koji uključuje alate neophodne za kompajliranje SPE koda. U osnovi, SPE kod se kompajlira odvojeno a zatim se linkuje pomoću PPE koda kako bi se formirala pojedinačna izvršna jedinica. PPE i SPEs deluju zajednički, a oba donose određene

 ‐ 47 ‐

Page 48: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

osobenosti na sto. Tipično, SPEs koristi PPE za pokretanje koda operativnog sistema i u najvećem broju aplikacija osnovni ili top ­ level thread. PPE (procesor opšte namene - the general purpose processor) koristi SPEs kao mašinu visokih performansi. SPEs imaju dobru podršku za SIMD operacije, kompjuterski intenzivne aplikacije, operacije vektorskokg tipa. Kada izvršimo kod sa Listinga 2-1 na CBE, broj odštampan na konzoli biće 2. Ovo je zbog toga što su SPEs sa direktninm pristupom. Broj 2 predstavlja činjenicu da je PPE zapravo CMT; odnosno to je dvo thread-ovani procesor. Znači u pravoj konfiguraciji, možemo da imamo više logičkih procesora (uključujući i SPE-ove) dostupnih u CBE konfiguraciji. Heterogena arhitektura takođe omogućava nekoliko interesantnih izbora u dizajnu.

Dok se standardni POSIX thread-ovi (pthreads) i upravljanje procesima mogu koristiti sa PPE elementom, SPE mora biti programiran korišćenjem thread biblioteke koja je dostupna kao deo CBE SDK. Dobra vest je da su SPE thread pozivi dizajnirani da budu kompatibilni sa pthread-ovima i ne zahtevaju dodatno znanje programera koji su upoznati sa pthread bibliotekom.

CBE Memorijski Modeli PPE pristupa memoriji različito od SPE-ova. Iako postoji samo jedan memorijski flow kontroler, CBE izbegava potencijalno usko grlo zbog jedne magistrale zbog toga što svaki od SPE-ova poseduje svoju lokalnu memoriju. Slika 2.7 prikazuje konfiguraciju memorije za PPE i za SPE.

 ‐ 48 ‐

Page 49: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Najveća ušteda dolazi kod SPE konfiguracija. SPE ima tro nivoski pristup memoriji. On koristi svoju lokalnu memoriju, registarske datoteke, i direktan pristup memoriji (direct  memory  access  ­  DMA) za transfer ka glavnoj memoriji. Ova tronivoska arhitektura memorije omogućuje programerima da planiraju simultani prenos podataka i koda. CBE procesor podržava do 128 simultanih prenosa između SPE lokalne memorije i glavne memorije. Iako je SPE optimizovan za SIMD tipove operacija, PPE takođe poseduje i podršku za paralelne vektorske/SIMD operacije.

Sakriven od Operativnog Sistema

CBE je dobar primer višejezgarne arhitekture koja mora biti direktno adresirana kako bi se iz nje izvukao maksimum performansi. Standardni pozivi Linux sistema mogu da vide dvostruke thread-ove PPE-a ali nisu potpuno svesni SPE-ova. Programer mora eksplicitno da razvije i kompajlira kod koji radi na SPE-u, a zatim taj kod mora biti linkovan sa kodom iz PPE-a. Tada Linux zna kako da rukuje sa osam SPE procesora. Heterogena arhitektura CBE-a takođe obezbeđuje uzbudljiv izbor u dizajnu za programera koji je spreman da malo dublje kopa po mogućnostima

Sinergijska Procesorska Jedinica

SPE sadrži sinergijsku procesorsku jedinicu (SPU) dizajniranu da ubrza široki opseg poslova, obezbeđujući efikasnu arhitekturu paralelnih podataka, i sinergijski kontroler memorije (synergistic  memory  flow controller ­MFC), obezbeđujući koherentni transfer podataka ka i od sistemske memorije [Gschwind, Erb, Manning, and Nutter, 2007]. SPU ne pristupa direktno glavnoj memoriji već mora da obezbedi DMA komande MFC-u. Komunikacija između SPU-a i PPU-a se odvija preko međusobno povezane magistrale (interconnect  bus  ­ EIB). Pošto svaki SPE poseduje svoju sopstvenu jedinicu za upravljanje memorijom (memory  management  unit  ­  MMU), ovo znači da on može da izvršava nezavisno od PPE-a. Ali ta nezavisnost ima i svoja ograničenja. SPU-ovi su uglavnom optimizovani za manipulaciju nad podacima i za kalkulacije.

Intel-ov Core 2 Duo Procesor Intel-ov Core 2 Duo je jedini od Intelove serije višejezgarnih procesora. Neki imaju dva jezgra a neki imaju četiri jezgra. Neki višejezgarni procesori su poboljšani hyperthreading-om, dajući svakom jezgru dva logička procesora. Prvi od Intelovih višejezgarnih procesora je bio Intelov Pentium Extreme Edition predstavljen 2005.godine. On je imao dva jezgra i podržavao hyperthread-ing, dajući sistemu osam logičkih jezgara. Core Duo višejezgarni procesor je predstavljen 2006.godine i ponudio je ne samo višestruka jezgra već i višestruka jezgra sa niskom potrošnjom snage. Core 2 Duo, koji je takođe predstavljen 2006.godine, poseduje dvostruka jezgra; ne poseduje hyperthread-ing ali podržava 64-bitnu arhitekturu. Slika 2.8 prikazuje blok šemu Intelove Core 2 Duo matične ploče. Core 2 Duo procesor ima dva 64-bitna jezgra i 2 64K level 1 keš memorije, po jednu za svako jezgro. Keš memorija nivoa 2 je

 ‐ 49 ‐

Page 50: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

deljiva između jezgara. Keš memorija nivoa 2 može da bude velićine i do 4MB. Bilo koje jezgro može da iskoristi do 100 procenata dostupnog L2 keša. Ovo znači da kada je drugo jezgro neiskorišćeno i zbog toga ne zahteva mnogo L2 keša, jezgro koje je aktivnije može da poveća korišćenje L2 keša.

Northbridge i Southbridge   

Pored CPU-a, sledeća najvažnija komponenta na matičnoj ploči je čipset. Čipset, prikazan na Slici 2.8, predstavlja grupu integrisanih kola dizajniranih da rade zajedno na povezivanju CPU-a sa ostalim komponentama na matičnoj ploči. To je integrisani deo matične ploče i, prema tome, ne može da se ukloni ili nadogradi. On je proizveden kako bi radio sa određenom klasom ili serijom CPU-ova a sve u cilju da se optimizuju njegove performanse kao i performanse celog sistema uopšte. Čipset šalje podatke od CPU-a ka različitim komponentama na matičnoj ploči, uključujući memoriju, grafičku karticu, U/I uređaje, kao što je prikazano na Slici 2.8. Sva komunikacija prema CPU se ostvaruje preko čipseta.

Čipset sadrži dva čipa: Northbridge  i  Southbridge. Ovi nazivi su usvojeni zbog lokacije ovih čipova na matičnoj ploči kao i zbog namene kojoj služe. Northbridge se nalazi u severnom delu, severno od većine komponenata na matičnoj ploči, dok je Southbridge lociran u južnom regionu, južnije od nekih komponenata na matičnoj ploči. Oba služe kao mostovi ili veze između uređaja; oni povezuju komponente kako bi se osiguralo da podaci idu gde bi trebalo da idu.

Northbridge , koji se takođe naziva i memorijski kontroler, komunicira direktno sa CPU-om putem Front Side Bus-a. On povezuje CPU sa veoma brzim delovima sistema kao što je naprimer glavna memorija. On takođe povezuje CPU sa PCI-E slotom (Peripheral Component Interconnect Express – PCI­E) i sa Southbridge­om putem interne magistrale. Podaci se prenose kroz Northbridge pre nego što stignu u Southbridge.

 ‐ 50 ‐

Page 51: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Southbridge , koji se takođe zove i U/I kontroler, je sporiji od Northbridge­a. Zbog toga što nije direktno povezan sa CPU-om, odgovoran je za sporije uređaje sa kojima matična ploča takođe komunicira, kao što su audio, disk interfejs, itd. Southbridge je povezan na BIOS preko SPI-a (Serial Peripheral Interface ­ SPI), šest PCI - E slotova, i drugim U/I uređajima koji nisu prikazani na slici. SPI omogućava razmenu podataka (1 bit u jednom trenutku) između Southbridge­a i BIOS-a korišćenjem master - slave konfiguracije. On takođe radi sa full duplex­om, što znači da se podaci mogu prenositi u oba smera.

Intelov PCI Ekspres

PCI - E ili PCI Express je najnoviji standard komunikacije između perifernih računarskih komponenti i matične ploče u računaru. Ovaj port služi kao serijska veza za zvuk, video, i mrežne kartice na matičnoj ploči. Serijske veze mogu biti spore, šaljući po 1 bit podataka u jednom trenutku vremena. PCI - E je serijska veza velike brzine, čiji rad podseća više na mrežu nego na magistralu. On koristi prekidač koji kontroliše mnogo point  ­ to  ­ point full  ­ duplex (simultana komunikacija u oba smera) serijskih veza koje nazivamo staze. Može postojati 4, 8, ili 16 staza po jednom slotu. Svaka staza ima dva para žica od prekidača do uređaja — jedan par šalje podatke, a drugi par prima podatke. Ovo određuje brzinu prenosa podataka. Ove staze idu od prekidača direktno ka uređajima ka kojima podaci treba da idu. PCI - E je zamena za PCI i obezbeđuje veći propusni opseg. Uređaji ne dele propusni opseg. AGP port (Accelerated Graphics Port  ­ AGP) je zamenjen sa PCI - E x16 (16 staza) slotom koji obezbeđuje prenos većeg broja podataka u jednoj sekundi (8 GB/s).

Set Instrukcija procesora Core 2 Duo

Core 2 Duo je poboljšao performanse procesora na taj način što podržava Streaming SIMD Extensions (SSE) i specijalne registre radi izvršavanja vektorskih instrukcija. SSE3 obezbeđuje set od 13 instrukcija koje se koriste radi izvršenja SIMD operacija na celim brojevima i podacima u pokretnom zarezu. Ovo dovodi do ubrzanja aplikacija koje koriste SIMD operacije kao što su naprimer visoko zahtevne grafičke aplikacije, enkripciju, i matematičke aplikacije. Procesor poseduje 16 registra koji se koriste za izvršavanje SIMD instrukcija: 8 MMX i 8 XMM registra. MMX registri podržavaju SIMD operacije na 64 - bitno pakovanom bajtu, reči, i celim brojevima predstavljenim u dvostrukoj reči. XMM registri podataka i MXCSR registri podržavaju izvršavanje SIMD operacija na 128 - bitno pakovanim podacima u pokretnom zarezu u jednostrukoj tačnosti i dvostrukoj tačnosti kao i 128 – bitno pakovanim celobrojnim podacima u vidu bajtova, reči, dvostruke reči, i četvorostruke reči. Tabela 2.3 daje kratak pregled tri registra, XMM, MMX, MXCSR, koji su uključeni u izvršavanje SIMD operacija.

Set registara Opis MMX Set od osam registara koji se koriste za izvršavanje operacija na 64-bitno pakovanim

tipovima celobrojnih podataka XMM Set od osam registara koji se koriste za izvršavanje operacija na 128-bitno pakovanim

brojevima u pokretnom zarezu sa jednostrukom ili dvostrukom preciznošću MXCSR Registar koji se koristi sa XMM registrima za instrukcije koje upravljaju stanjima

 ‐ 51 ‐

Page 52: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Postoji mnogo opcija prevodioca koje se mogu koristiti da bi se aktivirale različite mogućnosti višejezgarnih procesora. Za Intel-ov C\C++ kompajler, postoje opcije prevodioca koje aktiviraju opciju vektorizacije radi iskorišćenja SIMD instrukcija, opcija auto paralelizma, loop unrolling-a, i generisanje koda optimizovanog za određen procesor.

Rezime

Iako je jedan od osnovnih zadataka operativnog sistema da obuhvati detalje hardvera i obezbedi harversko-nezavisnu vezu, određeni programeri moraju da budu svesni određenih specifičnosti hardvera. Ovo uključuje programere biblioteka, projektante prevodioca, sistemske programere, kernel programere, serverske programere, projektante video igara, i sve ostale kojima su maksimalne sistemske performanse osnovni cilj. Četiri efikasna a takođe različita projekta za višejezgarne arhitekture jesu

Opteron

UltraSparc T1

Cell Broadband Engine

Core 2 Duo

Kao što smo imali prilike da vidimo, svaki od ovih dizajna ima određene specijalne karakteristike koje programer može da koristi prilikom razmatranja programiranja iz višejezgarne perspektive. C/C++ prevodioc je veza prvog nivoa sa ovim projektima. Homogeni CMP dizajn ima identična jezgra. Heterogeni dizajni poseduje jezgra sa različitim setom instrukcija i sa različitim arhitekturama. CBE je dobar primer heterogenog CMP-a.

Ovde smo se upoznali sa četiri arhitekture. Iako je svaka od njih različita, razmatraju se metode za rad sa svakom od njih. Za veliki broj softverskih aplikacija, razlike između hardverskih implementacija su sakrivene zbog toga što je jedan od osnovnih ciljeva da se napravi softver kompatibilan sa što je moguće više različitih hardverskih platformi. Znači postoji pokušaj da se izbegnu platformski specifične osobine, zbog toga što je to jedan od osnovnih ciljeva operativnog sistema. Ali kod nekih aplikacija moramo da znamo specifičnosti hardverske implementacije da bismo mogli da optimizujemo kod. Optimizacija kod ovih aplikacija postaje važnija od kompatibilnosti. Te aplikacije uključuju servere koji rade sa bazama podataka, web servere, aplikacijske servere, hardverski zahtevne igračke mašine, prevodioce, kernele operativnih sistema, drajvere za uređaje, i softver visokih performansi za vizuelizaciju i naučno modelovanje. Programeri ovih aplikacije praktično su naterani da traže i eksploatišu osobine platformi koje njihove platforme čine prihvatljivim za krajnje korisnike. Znači ako spadamu u neku od ovih grupa programera, dobro poznavanje konkretnog procesora ili familije procesora je preduslov za efikasan razvoj softvera.

 ‐ 52 ‐

Page 53: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Izazovi Višejezgarnog Programiranja

Sve do skora, najprihvatljiviji alati i tehnike korišćene za razvoj softvera bili su oslonjeni na sekvencijalni model izvršavanja kompjuterskog programa. Osnovna pretpostavka kod Informacionih Tehnologija (Information Technology ­ IT) i programa na univerzitetima, i tehničkim školama bila je ta da će programer raditi sa računarima koji poseduju jedan procesor. Ovo se vidi i iz toga jer je sve do skora veoma malo vremena utrošeno na tehnike paralelnog programiranja. Dva osnovna razloga za to bili su cena i tradicija.

Cena : Prvo, računari sa jednim procesorom bili su znatno jeftiniji i bili su mnogo rasprostranjeniji od računara sa više procesora. Cena i dostupnost učinili su računare sa jednim procesorom najboljim izborom za najveći broj firmi, akademskih institucija, i vladinih agencija.

Tradicija : Drugo, fundamentalne ideje programiranja bile su razrađene pre nekoliko decenija na računarima sa jednim procesorom. Osnovni algoritmi za pretragu, sortiranje, brojanje, parsing, i preuzimanje bili su razvijeni, precizirani i kompletirani pod modelom sekvencijalnog programiranja. Ovi osnovni algoritmi, strukture podataka, modeli programiranja, i metodologije softverskog inženjeringa formiraju osnovu najvećeg broja pristupa kod razvoja softvera danas.

Tehnike sekvencijalnog programiranja su važne i uvek će imati svoje mesto. Međutim, višejezgarne računarske konfiguracije su danas široko dostupne. Ovo otvara mogućnost različitih pristupa programske dekompozicije i softverske organizacije. Arhitekture softvera koje uključuju mešavinu sekvencijalnog programiranja, multiprocesiranja, i multithreading-a će postati standard. Za većinu programera ova hibridna softverska arhitektura će biti velika nepoznanica. Trend je da će višeprocesorski računari u većini slučajeva zameniti konfiguracije sa jednim procesorom. Da bismo iskoristili prednosti višeprocesorskog okruženja, programer mora dodati novi skup alata i tehnika svom repertoaru. Softverski projekti koji zahtevaju višejezgarno ili paralelno programiranje predstavljaju jedinstvene izazove programerima koji su jedino naviknuti na sekvencijalni model programiranja, i ovde ćemo se osvrnuti na promene sa kojima će se programeri sretati pošto budu prelazili na projekte koji zahtevaju višejezgarno ili paralelno programiranje. Razmatraćemo Životni Ciklus Razvoja Softvera (Software Development Life Cycle  ­ SDLC) i metodologiju upotrebe konkurentnog modela. Takođe, razmotrićemo dekompoziciju problema kao i rešenja, i proceduralne i deklarativne modele.

Šta je Sekvencijalni Model?

Kod osnovnog sekvencijalnog modela programiranja, instrukcije kompjuterskog programa se izvršavaju jedna po jedna. Program se posmatra kao recept, i svaki korak se izvršava od strane kompjutera po redosledu i u specificiranom iznosu. Programer razbija softver na skup zadataka. Svaki zadatak se izvršava po tačno određenom rasporedu, i svaki zadatak stoji u liniji i čeka svoj red. Kod sekvencijalnog modela kompjuterski programi su postavljeni skoro u formi priče. Programi imaju jasan početak, sredinu i kraj. Programer shvata svaki program kao jednostavnu linearnu progresiju zadataka. Ne samo što se zadatak kreće u jednom fajlu, već su takođe zadaci povezani na takav način da ukoliko se prvi zadatak ne

 ‐ 53 ‐

Page 54: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

može izvšiti iz nekog razloga, onda sledeći (drugi) zadatak možda nikada i ne počne. Svaki zadatak je napravljen da čeka na rezultat prethodnog zadatka pre nego što može da se izvrši. Kod sekvencijalnog modela, zadaci su često serijski uzajamno zavisni. Ovo znači da je zadatku A potrebno nešto od B, B je potrebno nešto od C, zadatku C je potrebno nešto od D i tako dalje. Ukoliko B otkaže iz nekog razloga, onda se C i D nikada neće izvršiti. U sekvencijalnom svetu, programer je naviknut na dizajniranje softvera koji će prvo da izvrši korak 1, zatim korak 2, i na kraju korak 3. Ovaj “ one - at - time ” model je uvrežen u softverskom dizajnu i procesu razvijanja softvera tako puno da mnogi programeri nalaze da je izuzetno teško da vide stvari na drugačiji način. Rešenje svakog problema, projektovanje svakog algoritma, izgled svake strukture podataka — svi oni se oslanjaju na to da kompjuter pristupa svakoj instrukciji ili delu podataka one at a time. Sve ovo se menja kada softverski zahtevi uključuju komponente multithreading-a ili multiprocesiranja. Kada se traži paralelno processiranje, prividno je svaki aspekt softverskog dizajna i implementacije pogođen. Programer se suočava sa onim što nazivamo 10 izazova konkurentnosti:

1. Softverska dekompozicija u instrukcije ili setove zadataka koji trebaju da se simultano izvršavaju

2. Komunikacija između dva ili viđe zadataka koji se paralelno izvršavaju

3. Konkurentni pristup i ažuriranje podataka od strane dve ili više instrukcija ili zadataka

4. Identifikacija odnosa između konkurentno izvršavanih delova zadataka

5. Kontrolisanje sporova kada između zadataka i resursa postoji odnos mnogo prema jedan

6. Određivanje optimuma ili prihvatljivog broja jedinica koje trebaju da budu izvršene paralelno

7. Kreiranje testnog okruženja koje simuliše zahteve paralelnog procesiranja i uslove

8. Ponovno kreiranje softverskih izuzetaka ili grešaka u cilju otklanjanja softverskih defekata

9. Dokumentovanje i komunikacija softverskog projekta koji sadrži multiprocesiranje i multithreading

10. Implementacija operativnog sistema i interfejsa prevodioca za komponente koje su uključenje u multiprocesiranje i multithreading

Šta je konkurentnost?

Za dva događaja se kaže da su konkurentna ako se pojavljuju za vreme istog vremenskog intervala. Za dva ili više zadataka koji se izvršavaju u toku istog vremenskog intervala se kaže da se izvršavaju konkurentno. Za naše razmatranje, konkurentnost ne mora neminovno da znači u tačno određenom momentu. Na primer dva zadatka mogu da se izvršavaju konkurentno u okviru iste sekunde ali da se pri tome svaki od zadataka izvršava unutar različitog dela sekunde. Prvi zadatak može da se izvrši u toku prve desetinke sekunde i da se zaustavi. Drugi zadatak može da se izvrši u toku sledeće desetinke sekunde i da se zaustavi. Prvi zadatak može onda ponovo da počne sa izvršenjem u toku treće desetinke sekunde i tako dalje. Svaki zadatak može naizmenično da se izvršava. Međutim, dužina te jedne sekunde je tako malo da izgleda da se oba zadatka simultano izvršavaju.

 ‐ 54 ‐

Page 55: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Ovo stanovište možemo da proširimo na duže vremenske intervale. Dva programa koji izvršavaju neki zadatak u okviru istog sata kontinualno napreduju na zadatku u toku tog jednog sata. Oni mogu ili ne mogu biti izvršavani u tačno određenom trenutku. Kažemo da se ta dva programa izvršavaju konkurentno u toku tog jednog sata. Zadaci koji postoje u istom vremenskom intervalu i koji se izvršavaju u istom vremenskom periodu su konkurentni. Oni mogu ili ne mogu biti izvršavani u tačno određenom trenutku. Konkurentnni zadaci mogu da se izvršavaju u jednoprocesnom ili okruženju višestruke obrade. U jedno procesnom okruženju, konkurentni zadaci postoje u istom vremenu i izvršavaju se u istom vremenskom periodu zahvaljujući promeni konteksta. Kod multiprocesorskog okruženja, ukoliko je dovoljno procesora slobodno, konkurentni zadaci mogu da se izvršavaju u toku istog trenutka i u toku istog vremenskog perioda. Faktor koji određuje šta je prihvatljiv vremenski period za konkurentnost je relativan u odnosu na aplikaciju. Ovde ćemo se osvrnuti na izazove konkurentnosti u tri kategorije:

Pisanje softvera

Razvoj softvera

Održavanje softvera

I dok postoji mnogo drugih načina za razmišljanje i grupisanje stvari koje se odnose na multiprocesiranje i paralelno programiranje, biramo ove kategorije zbog toga što se iz iskustva zna da se najveći broj problema koji se javljaju kod višejezgarnog programiranja može svesti u jednu od ovih kategorija.

Razvoj Softvera

Problemi kod pisanja softvera se javljaju u mnogo različitih oblika i veličina, od pisanja drajvera za određene uređaje do konstruisanja velikih N nivoskih aplikacija. Iako tehnike pisanja softvera variraju u veličini i obimu aplikacije, postoji skup izazova koji sve aplikacije koje koriste multiprocesiranje, ili multithreading, imaju zajedničko. Ovi izazovi se pojavljuju u svakoj fazi SDLC-a. Važno je da se dobro razume veza između višejezgarnog programiranja i SDLC-a. Ovo je važno zbog toga što je najlakši način da se izborimo sa kompleksnošću, zahtevima, i potencijalnim opasnostima višejezgarnog programiranja taj da delujemo na stvari za vreme odgovarajućeg stadijuma u SDLC-u. SDLC opisuje neophodne aktivnosti koje programeri izvršavaju u procesima za vreme rada na visoko kvalitetnom softveru. Pošto je čin kreiranja dobrog softvera delimično umetnost, delimično tehnička stvar, a delimično nauka, postoje konkurentne teorije za ono što predstavlja SDLC. Tabela 3.1 prikazuje glavne aktivnosti koje pronalazimo kod najvećeg broja SDLC-a.

 ‐ 55 ‐

Page 56: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Glavne SDLC Aktivnosti

Opis

Specifikacija Dokumentuje sporazum između programera i klijenta specificiranjem onoga šta softver treba da radi

Dizajn Specificira kako će softver da ispunjava ono što se od njega traži u specifikaciji. Dizajn određuje unutrašnju strukturu softvera. Dizajn može da se podeli na dva pristupa: arhitekturski pristup (sistem se deli na module) i detaljan dizajn (opis svakog modula)

Implementacija Prevođenje detaljnog dizajna u odgovarajući kod.

Testiranje i procena Proces proveravanja softvera s ciljem da se proceni njegov kvalitet određivanjem koliko dobro je softver ispunio specificirane zahteve.

Održavanje Modifikacija softverskog proizvoda posle isporuke sa ciljem da se isprave greške, poboljšaju performanse, karakteristike, ili da se softver prilagodi promenjenom okruženju.

Tabela 3.1

Postoji mnogo načina razmišljanja i organizacije aktivnosti u Tabeli 3.1. Dalje, aktivnosti prikazane u Tabeli 3.1 su samo srž onoga što većina SDLC-a imaju zajedničkog. Svaki pristup organizaciji aktivnosti u SDLC-u je proizveo svoju sopstvenu metodologiju razvoja softvera. Kada jednom metodologija razvoja softvera bude utvrđena, kada se postave alati, jezici, i softverske biblioteke se kreiraju kako bi podržale tu metodologiju. Na primer objektno orijentisana softverska revolucija je proizvela ideju o:

Objektno - Orijentisani softverski inženjering (Object ­ Oriented Software Engineering ­ OOSE)

Objektno - Orijentisanu analizu (Object ­ Oriented Analysis ­ OOA)

Objektno – Orijentisani dizajn (Object ­ Oriented Design ­ OOD)

Objektno – Orijentisano programiranje (Object ­ Oriented Programming ­ OOP)

Objektno – Orijentisano upravljanje sistemima baza podataka (Object ­ Oriented Database Management Systems ­ OODBMS), i tako dalje

Ove metodologije razvoja softvera su rezervisale jezike kao što su Eiffel, Smalltalk, C++, Objektni C,  Java, Python,  i CLOS. Iz ovih jezika i metodologija su proizišle biblioteke i alati, kao što su Standard Template Library  (STL), Unified  Modeling  Language  (UML), Common  Object  Request  Broker  Architecture  (CORBA), Rational Rose, Together, i Eclipse. Ovi jezici, biblioteke, i alati se veoma razlikuju od onih koji se koriste kod logičkog programiranja ili razvoja softvera korišćenjem tehnika strukturnog programiranja. Tabela 3.2 prikazuje neke najčešće korišćene metodologije razvoja softvera

.

 ‐ 56 ‐

Page 57: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Metodologije Razvoja Softvera Opis Aktivnosti/Faze Agile Softver se razvija u kratkim vremenskim intervalima.

Svaki interval ili ponavljanje je razvoj minijaturnog projekta koji isporučuje jedan deo funkcionalnosti softvera.

Planiranje Analiziranje zahteva Dizajn Kodiranje Testiranje Dokumentacija

Build and fix Softver se piše i razvija a onda revidira onoliko puta koliko je neophodno dok klijent ne bude zadovoljan sa proizvodom.

Pisanje prve verzije Modifikacija dok klijent nije zadovoljan Faza održavanja Povlačenje

Extreme programming Model baziran na dodatnom modelu; programer obaveštava klijenta koliko dugo će trajati implementacija i cena svakog dodatka, a klijent određuje koji dodatak će biti uključen

Specifikacija Dizajn Implementacija/integracija Isporuka

Incremental Softver se razvija u priraštajima ili koracima; softverse dizajnira, implementira i integriše modul po modul. Za svaki korak moduli se prevode kako bi ispunili određenu funkcionalnost.

Zahtevi Specifikacija Arhitekturni dizajn Pravljenje petlje Održavanje Prekid

Object-oriented Razvoj softvera baziran na identifikaciji objekata u sistemu; pristup odozdo-naviše.

Zahtevi OO Analiza OO Dizajn Implementacija/integracija Operacioni mod Održavanje

Rapid prototyping Uz pomoć modela kreira se prototip sistema. Posle toga SDLC se nastavlja zavisno od prihvatljivosti prototipa. U svakoj fazi, postoji interakcija sa klijentom da bi se ili testirao ili verifikovao razvoj proizvoda

Rapid prototip Specifikacija Dizajn Implementacija Integracija Održavanje Prekid

Spiral Spiralni model je sličan Incrementalnom modelu sa akcentom na analizu rizika i verifikaciju svake faze. Svaki prolaz kroz ove faze pojavljuje se automatski (u spiralama)

Planiranje Analiza rizika Procena Konstrukcija

Structured Pristup odozgo-nadole razvoju softvera u kojem se sistem naizmenično rastavlja po funkcionalnosti, počev od najvišeg nivoa apstrakcije pa do najniže funkcionalnosti.

Zahtevi Dizajn Implementacija Testiranje Razvoj

Waterfall Najčešći i klasičan model. Takođe se zove i linerano-sekvencijalni model. Sa ovim modelom, svaka faza mora biti završena u celosti pre nego što se pređe na sledeću fazu.

Zahtevi Specifikacije Dizajn Implementacija Integracija Održavanje i Prekid

 ‐ 57 ‐

Page 58: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Određivanje metodologije razvoja softvera je izazov sam po sebi, a kada se jednom odredi metodologija, mogući alati i tehnike dolaze standardno. Izbor metodologije ima kritične implikacije na to kako će multiprocesiranje i multithreading biti implementirani u softveru. Programer koji ima zahteve za višejezgarnim programiranjem mora da nastavi sa pažnjom kada selektuje određeni pristup zbog toga što alati i tehnike te metodologije mogu da imaju negativan uticaj na programiranje izazivajući poteškoće i greške u implementaciji multiprocesiranja ili multithreading-a. Softverski pristup na bazi procedura rukuje multithreading-om i multiprocesiranjemveoma različito od metodologija koje su na bazi objekata ili podataka. Objektno – Orijentisan pristup programiranju omogućava programeru veoma različit skup opcija od onoga što je dostupno kod logičkog programiranja. To je takođe slučaj da kada jednom počne proces razvoja softvera i kada su ljudski resursi i alati postavljeni, tada je teško promeniti model u sredini ili pošto softver bude razvijen. U nekim slučajevima razvijanja softvera, alati, jezici, i biblioteke su određene čak i pre nego što su zahtevi softvera ili specifičnosti softvera razumljive. Ovo nažalost često vodi do toga da implementacija softvera bude nametnuta u određeni jezik i alate. Opet, razumevanje odnosa između različitih aktivnosti SDLC-a i multicore programiranja je od izuzetne važnosti.

Iako može biti (i postoje!) neslaganja oko toga koji je najbolji pravac, postoje neke osnovne aktivnosti koje su zajedničke za sve pristupe. Ove aktivnosti su prisutne u jednom ili drugom obliku kod bilo kog razvoja softvera bez obzira na njegovu veličinu. Na primer, svaki pristup poseduje određene procese za dobijanje zahteva i specifikacija za taj projekat. Svaki pristup poseduje aktivnosti koje su usmerene na projektovanje rešenja pre stvarnog kodiranja krajnjeg proizvoda. Drugi primer osnovne aktivnosti je testiranje softvera pre njegovog oslobađanja. Ovaj tip zajedničkih aktivnosti može da se pojavi na različitim mestima i u različitoj količini između različitih metoda razvoja softvera, ali je prisutan kod svakog. Ukoliko se srećemo sa 10 izazova konkurentnosti za vreme dodeljenih aktivnosti u SDLC, šanse za izradu ispravnih i pouzdanih programa se značajno povećavaju. Ako softver koji trebamo da razvijemo zahteva neki oblik konkurentnosti, onda su dodaknuti pojedini delovi svake od aktivnosti u Tabeli 3.1. I dok postoje određeni načini da se sakrije određena kompleksnost paralelnog programiranja i multithreading-a, ne postoje stvarne prečice. Razmeštanje robustnog, ispravnog, i skalabilnog softvera koji može da iskoristi prednosti Čip Multiprocesora (CMPs) zahteva čvrsto softversko inženjerstvo i efektno poznavanje SDLC-a.

Određivanje kada, gde, i kako pripojiti multiprocesiranje i multithreading u razvoj softveraje glavna tema — koja nas dovodi do dva osnovna pitanja na koja ćemo potražiti odgovore:

1. Kako ćemo znati kada neka softverska aplikacija zahteva multicore programiranje?

2. Kako ćemo znati gde u softveru da primenimo multicore programiranje?

Ova pitanja se odnose na prvi izazov na našoj listi 10 izazova koji su dati ranije u ovom odeljku. Oba pitanja su u centru izazova softverskog razlaganja.

Izazov #1: Dekompozicija Softvera

Potreba ili sklonost ka multithreading-u ili multiprocesiranju se najčešće otkriva za vreme dekompozicije. Za naše potrebe, dekompozicija je proces raščlanjavanja problema ili rešenja na izvorne delove. Ponekad su ti delovi grupisani u logičke oblasti (kao naprimer, traženje, sortiranje, računanje, ulaz, izlaz, i tako

 ‐ 58 ‐

Page 59: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

dalje). U ostalim situacijama, delovi su grupisani od strane logičkih resursa (procesor, baza podataka, komunikacija, i tako dalje).

Možemo da kažemo da je dekompozicija vođena modelom jedan od najpraktičnijih pristupa.

Ne možemo da pričamo o tome gde koristiti thread-ove odnosno da li da ih koristimo simultano izvršavajući procese u softverskom rešenju sve dok ne dođe do dekompozicije i problema i rešenja. Problemska i dekompozicija rešenja se tipično izvršavaju za vreme analiza i aktivnosti dizajniranja u SDLC-u.

Uspešna dekompozicija je jedan od osnovnih sastojaka uspešnog pokušaja razvoja softvera. Sa druge strane, slabo ili nepovoljno rastavljanje problema i rešenja skoro sigurno vode do nepostizanja cilja.

Primer Dekompozicije

Da bismo pokazali šta se podrazumeva pod dekompozicijom, uzimamo jednostavan primer problem krečenja kuće pre nego što gosti dođu na odmor. Naravno, iskoristićemo ovu priliku da bismo iskoristili najnovije softverski automatizovane preslikače (painters). Bacimo pogled na način na koji možemo da razložimo problem krečenja kuće, a takođe i rešenje.

Dekompozicija #1

Problem može da se razloži na:

Donošenje odluke o vrsti i boji farbe

Dobijanje boje i alata za bojenje

Određivanje sobe koja će prva da se kreči

Identifikovanje koja vrsta automatskog farbara će biti korišćena

Biranje kojim danima u nedelji će se farbati

Određivanje kada započeti farbanje

Ovo je jedan od načina dekompozicije problema krečenja kuće.

Dekompozicija rešenja može da izgleda ovako:

Određivanje i nabavka farbe koja odgovara nameštaju.

Kreči se samo u vremenu od 06:00h do 13:00h radnim danima.

Sa farbanjem se počinje prvog sledećeg radnog dana.

Vrlo brzo možemo da vidimo deo izazova dekompozicijie. Prva stvar koju možemo da primetimo je da obično postoji više od jednog načina dekompozicije problema. Kako gledamo na problem i razlaganje

 ‐ 59 ‐

Page 60: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

rešenja, možemo imati na umu veoma različit skup koraka. Zapravo, možemo da izaberemo potpuno drugačiji pristup problemu krečenja kuće pre nego što gosti dođu na odmor.

Drugo zapažanje koje možemo da primetimo je da dekompozicija može da bude nekompletna ili neadekvatna. U idealnom slučaju, fundamentalni delovi dekompozicije bi trebalo skupa da reprezentuju inicijalni problem ili rešenje. To je nešto nalik na sastavljanje delova slagalice. Ako delovi zajedno ne predstavljaju celinu, onda je dekompozicija nekompletna. Ovo znači da nismo shvatili kompletan problem, i da nećemo imati kompletno rešenje.

Odgovarajuća dekompozicija je osnovni izazov za aplikacije bazirane na sekvencijalnom modelu. Postoje softverski alati i biblioteke koje mogu pomoći programeru kod implementacije dekompozicije; međutim proces po sebi ostaje deo rešavanja problema i aktivnosti dizajniranja.

Ranije smo dekompoziciju definisali kao proces razbijanja problema ili rešenja na njihove sastavne delove. Ali šta su sastavni delovi problema ili rešenja? Odgovor zavisi od toga koji model koristimo da bismo reprezentovali problem i rešenje. Jedan od izazova softverske dekompozicije je taj da postoji mnogo različitih načina da se predstavi problem i njegovo rešenje. Jasno je da može da se polemiše da ne postoji nijedan pravi način da se izvrši dekompoziciija problema ili rešenja. Onda kakvu dekompoziciju trebamo izabrati? Drugi izazov je da budemo sigurni da je dekompozicija kompletna, adekvatna i korektna. Do ovoga najčešće dolazi zbog kompleksnosti originalnog problema.

Pitanje dekompozicije je u sredini svakog pokušaja razvoja softvera. Posebno je važno u slučajevima gde se alati paralelnog procesiranja mogu primeniti.

Pronalaženje Pravog Modela

Modeli su stvari od koga je dekompozicija napravljena! Komplikacija izazova dekompozicije nastaje pri selekciji prikladnog modela koji na odgovarajući način reprezentuje problem, zadatak, ili rešenje.

Šta je Model?

Razvoj softvera je proces prevođenja koncepata, ideja, modela posla, pravila, algoritama, ili formula u setove instrukcija i podataka koji mogu da se izvrše na računaru ili sa kojima računar može da rukuje. To je proces koji se oslanja na korišćenje modela. Za naše potrebe model je veštačka reprezentacija nekog stvarnog procesa, stvari, koncepta, ili ideje. Reprezentacija je određena manja, jednostavnija, lakša za upotrebu aproksimacija procesa, stvari, koncepta, ili ideje.

Osnovna funkcija modela je da imitira, opisuje, ili duplira ponašanje i karakteristike određene suštine iz stvarnog sveta. Model treba da bude zamena koja treba da sadrži dovoljno informacija da bi omogućila analizu i donošenje odluke. Jedan od izazova višejezgarnog programiranja je da odredi odgovarajući model problema i rešenja. Kod paralelnog programiranja, multiprocesiranja, i multithreading-a, uspevamo u slučaju kada je odgovarajući model korišćen i neuspevamo kada je korišćen pogrešan model. Na pitanje kako razložiti aplikaciju na delove koji se konkurentno izvršavaju najčešće može da se da odgovor za vreme analize modela rešenja ili modela problema. Selektovani model utiče na to kakav izbor dekompozicije je dostupan.

Na primer, kod problema krečenja kuće pretpostavili smo jedan poznat model kuće:

 ‐ 60 ‐

Page 61: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

Model #1 : Kuća je nešto što ima zidove, sobe, i mesta za prozore. Ovom modelu trebamo dodati tavanicu, vrata, lukove, pod, gelender, krov, i tako dalje.

Rezime

Paralelno i distribuirano programiranje nam predstavlja određene izazove u nekoliko oblasti. Novi pristupi u dizajniranju softvera i nove arhitekture moraju da budu prihvaćene. Mnoge fundamentalne pretpostavke koje su korišćene kod sekvencijalnog modela programiranja ne mogu da se primene kod paralelnog programiranja. Programer se suočava sa brojnim izazovima konkurentnosti o kojima smo već govorili. Neke od ključnih stavki su:

Četiri osnovna problema koordinacije — trka podataka, neodređeno odlaganje, zastoj, i komunikacijska sinhronizacija — su neke od glavnih prepreka programima koji zahtevaju konkurentnost.

Svaki aspekt u Životnom Ciklusu Razvoja Softvera (SDLC) je izazvan kada zahtevi uključuju paralelizam ili distribuciju — od inicijalnog dizajna do testiranja i dokumentacije. Prilike za paralelizam i multiprocesiranje će biti identifikovane za vreme različitih aktivnosti u SDLC-u. Važno je da programer razume vezu između višejezgarnog programiranja i SDLC-a.

Možda najvažnija i najkritičnija odluka koja može da se donese prilikom pisanja softvera koji će uključivati multiprocesiranje ili paralelno programiranje je da li da se koriste proceduralni ili deklarativni modeli. Fundamentalne razlike u pristupu, tehnikama, dizajnu i implementaciji između proceduralnih modela i deklarativnih modela su toliko velike da zahtevaju radikalno različite paradigme kompjuterskog programiranja.

Trend je da će multiprocesorski kompjuteri u najvećem broju slučajeva da zamene jednoprocesorske konfiguracije kod poslovnih, akademskih i bilo kojih drugih primena. Kao što smo videli, kako bismo iskoristili sve prednosti višeprocesorskih olruženja, moramo da proširimo alate i tehnike koje posedujemo. Softverski projekti koji zahtevaju višejezgarno ili paralelno programiranje predstavljaju jedinstvene izazove onima koji su naviknuti jedino na softverski model sekvencijalnog programiranja. Razvoj robustnih, korektnih, i promenlljivih softverskih aplikacija koje iskorišćavaju prednosti CMP-ova zahteva zdravo softversko inženjerstvo i efektno poznavanje SDLC-a.

 ‐ 61 ‐

Page 62: ISTORIJSKI RAZVOJ RAČUNARA MULTICORE …es.elfak.ni.ac.rs/Papers/SStojanovic-Istorijski razvoj racunara i... · francuski matematičar i fizičar Blez Paskal (Blaise Pascal, 1623-1662)

L I T E R A T U R A

1. PROFESSIONAL MULTICORE PROGRAMMING, Cameron Hughes, Tracey Hughes, 2008.

2. RISC, CISC I DSP PROCESORI, Mile K. Stojčev, I izdanje, Elektronski fakultet, Niš, 1997.

3. ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA 80x86, Mile K. Stojčev, Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš, 1999.

4. ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORAČUNARA, Mile K. Stojčev, Saša S. Ristić, Miloš D. Krstić, I izdanje, Elektronski fakultet, Niš, 1999.

5. LABORATORIJSKI PRAKTIKUM IZ PREDMETA MIKROPROCESORSKI SISTEMI, Tatjana Stanković, Saša S. Ristić, Miloš D. Krstić, Ivan Andrejić, Mile K. Stojčev, Elektronski fakultet,(Edicija Pomoćni Udžbenici) Niš, 2004.

6. http://es.elfak.ni.ac.rs – Laboratorija za Embedded Sisteme,Elektronski fakultet Niš

7. http://www.ibm.com/developerworks/library

 ‐ 62 ‐