Obzirom na veoma intenzivan razvoj računarske tehnike, naročito u toku protekle decenije, pisanje udžbenika koji će na zadovoljavajući način obraditi tematiku vezanu za računarske arhitekture predstavlja izazov, ali u isto vrijeme predstavlja i hrabru odluku. Ovaj udžbenik, pod naslovom “Osnove računarskih arhitektura”, predstavlja pionirski poduhvat čiji je cilj da se po prvi put na području Bosne i Hercegovine ova materija prezentira na akademski prihvatljiv način, pogodan za izvođenje nastave na visokoškolskim institucijama. Udžbenik predstavlja zaokruženu cjelinu koja je nastala na osnovu radnih materijala i iskustva kojeg su autori stekli tokom višegodišnjeg rada u nastavi na raznim predmetima iz oblasti računarske tehnike odnosno digitalne tehnike općenito na Elektrotehničkom i Prirodno-matematičkom fakultetu Univerziteta u Sarajevu.
Ovaj udžbenik prvenstveno je namijenjen studentima Elektrotehničkog fakulteta Univerziteta u Sarajevu, ali ga mogu koristiti i svi drugi koji posjeduju elementarno predznanje iz oblasti računarske tehnike i koje zanima problematika koja se u njemu razmatra. Udžbenik u potpunosti prati nastavni plan i program predmeta “Računarske arhitekture” koji studenti Odsjeka za računarstvo i informatiku na Elektrotehničkom fakultetu u Sarajevu slušaju kao obavezan kurs u IV semstru I ciklusa studija, a isti kurs se može odabrati i kao izborni kurs na višim godinama studija Odsjeka za matematiku Prirodno-matematičkog fakulteta u Sarajevu, smjer teorijska kompjuterska nauka. Pored ovog kursa, za koji ovaj udžbenik predstavlja obaveznu literaturu, udžbenik također može biti od koristi kao dopunska literatura na drugim kursevima koji se bave problematikom računarske tehnike. Ovo se prvenstveno odnosi na kurseve “Digitalni računari – arhitektura i organizacija softvera” i “Projektovanje mikroprocesorskih sistema” koji kao redovne kurseve slušaju studenti smjera za automatiku i elektroniku na Elektrotehničkom fakultetu u Sarajevu, a studenti drugih smjerova ih mogu odabrati kao izborne kurseve. Također, neka poglavlja udžbenika mogu olakšati razumijevanje nekih tema koje se obrađuju na kursevima “Operativni sistemi” i “Sistemsko programiranje” koji se slušaju na Odsjeku za računarstvo i informatiku na Elektrotehničkom fakultetu u Sarajevu, kao i na Odsjeku za matematiku Prirodno-matematičkog fakulteta u Sarajevu, smjer teorijska kompjuterska nauka (prvi kao obavezni, a drugi kao izborni kurs).
Materija obrađena u udžbeniku organizirana je u 12 poglavlja. Prvo poglavlje predstavlja uvodno poglavlje koje uvodi čitaoca u problematiku računarskih arhitektura. Nakon upoznavanja sa osnovnim pojmovima vezanim za računarske arhitekture, slijedi prikaz hardverskih i softverskih apstrakcija, položaja arhitekture skupa instrukcija među drugim apstrakcijama, te prikaz komunikacije između procesora i memorije. Poglavlje završava kratkim osvrtom na tematiku poglavlja koja slijede.
Drugo poglavlje posvećeno je istorijskom razvoju računara. Poglavlje započinje opisom karakteristika pojedinih generacija računara. Zatim se razmatraju tehnološki trendovi te i istorijskim datumima i akterima događaja koji su obilježili razvoj računarstva. U nastavku slijedi prikaz nekoliko različitih načina podjele računarskih arhitektura. Posebno se razmatra Von Neumannova arhitektura, kao vjerovatno najviše proučavana arhitektura svih vremena, nakon čega se opisuje kako je dalje tekla evolucija razvoja računarskih arhitektura od Von Neumannove arhitekture ka savremenim arhitekturama. Na kraju poglavlja, izlažu se osnove dizajna računara. Tom prilikom dati su i neki načini mjerenja performansi računarskih sistema.
U trećem poglavlju razmatra se arhitektura skupa instrukcija. Kroz ovo poglavlje se daje uvod u probleme koji se javljaju prilikom odlučivanja koje i kakve instrukcije procesor treba da izvršava, te koje formate podataka i načine adresiranja treba da podrži. Također se objašnjava i uloga koju kompajleri imaju na savremene arhitekture skupa instrukcija.
Nakon apstraktnih razmatranja provedenih kroz prva tri poglavlja, u četvrtom poglavlju se opisuje jedan konkretni ogledni procesor zasnovan na arhitekturi sa protočnom strukturom. Prvo se detaljno opisuje instrukcijski set i format instrukcija, nakon čega se razmatra efektivnost prikazane ogledne arhitekture. Posebna pažnja posvećena je razmatranju protočnosti. Detaljno je prikazana podjela posla u protočnoj strukturi i ubrzanja koja se time postižu, kao i formati instrukcija koje takva organizacija diktira. Izvršeno je poređenje sa sličnom arhitekturom bez protočne strukture.
Peto poglavlje posvećeno je hazardima, koji predstavljalju osnovne probleme koji se javljaju u protočnim strukturama. Tom prilikom data je podjela hazarda sa detaljnim opisom svake od pojedinih vrsta hazarda. Također su prikazani i neki načini za rješavanje razmotrenih problema. Detaljno je opisan mehanizam upravljanja protočnom strukturom kao i problemi koje donose prekidi, izuzeci, te višeciklusne operacije nad brojevima sa pomičnim zarezom.
U šestom poglavlju razmatra se paralelizam na nivou instrukcija. Posebna pažnja se posvećuje otkrivanju paralelizama na nivou instrukcija i petlji u kodu, kao i načina njihovog iskorištavanja, sa ciljem postizanja viših performansi računarskog sistema. Za razliku od statičkog raspoređivanja instrukcija, u ovom poglavlju se uvodi i razmatra dinamičko raspoređivanje instrukcija. Tom prilikom razmatraju se dva osnovna načina dinamičkog raspoređivanja instrukcija, sa semaforom i pomoću Tomasulovog algoritma.
Sedmo poglavlje opisuje dinamičko predviđanje grananja, kao pokušaja rješavanja usporenja koje grananja i skokovi unose u izvršenje koda. Posebna pažnja daje se korištenju bafera odredišnih adresa grananja kao strategiji za smanjenje kašnjenja kod instrukcija grananja.
Osmo poglavlje razmatra moguću podršku kompajlera u povećanju paralelizma na nivou instrukcija. Ovo poglavlje nastavlja se na teme iz prethodnog poglavlja i analizira ograničenja koja sprečavalju dalje povećanje i iskorištenje postojećih paralelizama. Posebno su prikazane statičke (kompajlerske) i dinamičke (hardverske) metode ubrzavanja izvršenja programa kao što su softverske protočne strukture, trasiranje, kompajlersko spekulisanje uz podršku hardvera, hardversko spekulisanje, itd.
U devetom poglavlju razmatraju se superskalarne arhitekture procesora kao i aritekture procesora sa veoma dugim instrukcijskim riječima (VLIW procesori). U pitanju su pokušaji da se što više posla pokrene i izvrši u svakom ciklusu sata. Posebno se razmatra višestruko pokretanje instrukcija sa dinamičkim raspoređivanjem, kao i ograničenja procesora koji koriste višestruko pokretanje. Deseto poglavlje je posvećeno memorijskoj hijerarhiji. U ovom poglavlju se detaljno opisuju mehanizmi keširanja kao i principi virtuelne memorije. Također se analizira i interakcija ova dva podsistema. Podsistem ulazno-izlaznih uređaja razmatra se u jedanaestom poglavlju. Tom prilikom se razmatraju performanse ulazno-izlaznih uređaja i njihova uska grla. Detaljno je opisan princip rada magnetnih diskova, kao i nekoliko vrsta sabirnica koji se koriste za povezivanje ulazno-izlaznih uređaja sa centralnom procesnom jedinicom. Na kraju poglavlja razmatraju se mehanizmi koji olakšavaju upravljanje ulazno-izlaznim uređajima. Posebna pažnja data je sistemu prekida i mehanizmu direktnog pristupa memoriji (DMA pristupu).
Posljednje, dvanaesto poglavlje daje uvod u paralelne računarske arhitekture kroz dva osnovna principa – sisteme sa dijeljenom i distribuiranom memorijom. Tom prilikom prikazuju se principi projektovanja paralelnih računara, zatim načini povezivanja parova procesor-memorija i drugih komponenti sistema, te mreže za povezivanje i preklopnici. Na kraju je dat osvrt na ograničenja u performansama takvih sistema.
Za razliku od većine udžbenika prisutnih na našem tržištu, ovaj udžbenik je dostupan isključivo u elektronskoj formi, koji po potrebi korisnici mogu štampati u vlastitoj režiji. Ovakav pristup predstavlja priličnu novinu na ovim prostorima. Pored činjenice da se na taj način olakšava dostupnost udžbenika svim zainteresiranim, dodatna prednost takvog pristupa je što se eventualno uočene sitnije greške i propusti u materijalu mogu “u hodu” dotjerivati, tako da će korisnici uvijek moći preuzeti najnoviju verziju. Naravno, ovdje se govori samo o izmjenama koje ne remete postojeći koncept udžbenika, jer u slučaju promjene koncepta, neće biti govora o novoj verziji, već o novom izdanju udžbenika.
Autori se duboko zahvaljuju recenzentima dr. Slavku Mariću i dr. Saši Mrdoviću što su se prihvatili zahtjevnog i odgovornog posla recenzije ovog udžbenika i na korisnim primjedbama. Pored toga, autori se zahvaljuju i svim drugim ljudima koji su pomogli izdavanje ovog udžbenika.
Autori
U Sarajevu, 18. 06. 2012. godine