Predgovor

Ovaj udžbenik, pod nazivom “Logičke osnove digitalnih i računarskih sistema”, prvenstveno je namijenjen kao zvanični udžbenik za predmete “Uvod u računarsku tehniku” i “Računarski sistemi” koji slušaju studenti I i II semestra Odsjeka za matematiku na Prirodno-matematičkom fakultetu Univerziteta u Sarajevu, mada ga mogu koristiti i svi drugi koje problematika koja se u njemu razmatra zanima. Kako materija koja je pokrivena udžbenikom ima dosta zajedničkog sa nastavnim programima predmeta “Logičko projektovanje” i “Projektovanje logičkih sistema” koji se slušaju na Elektrotehničkom fakultetu Univerziteta u Sarajevu (prvi u III semestru Odsjeka za računarstvo i informatiku a drugi u V semestru Odsjeka za automatiku i elektroniku), isti se može koristiti i kao dopunski materijal za ove predmete. Udžbenik također može biti od koristi studentima mašinskog fakulteta, kao i studentima drugih tehničkih fakulteta.

Na prvi pogled, ovaj udžbenik može djelovati suvišan, zbog činjenice da već postoji značajan broj udžbenika i knjiga koji se bave digitalnom i računarskom tehnikom. Međutim, ovaj udžbenik se po konceptu prilično razlikuje od većine srodnih materijala. Na prvom mjestu, cilj udžbenika je potpuno demistificirati rad računara studentima koji nemaju nikakvo prethodno znanje elektrotehnike ili srodnih disciplina. Ovaj cilj je logičan, s obzirom da je udžbenik prvenstveno namijenjen studentima Prirodno-matematičkog a ne elektrotehničkog fakulteta. Stoga se udžbenik lako može pratiti gotovo bez ikakvog prethodnog predznanja. Iz istog razloga, u udžbeniku se znatno više pažnje posvećuje matematičkim aspektima i odgovarajućim matematičkim modelima nego što je to uobičajeno u udžbenicima namijenjenim budućim inženjerima. Što se tiče demistifikacije rada računara, u većem broju raspoložive literature primijetan je veliki jaz između koncepata niskog nivoa kao što su logička kola, flip-flopovi i slični, te koncepata višeg nivoa kao što je procesor. Problem je u tome što se odmah u početku krene sa razmatranjem relativno složenog modela procesora, u čije se detalje ne može ulaziti. Posljedica toga je da prinicipi rada procesora često i dalje budu obavijeni dozom misterije, dok s druge strane uloga koncepata niskog nivoa u svemu tome ostaje prilično maglovita. Također ostaje dosta nejasna i tačka gdje dolazi do dodira između hardvera i softvera. Opisani problem je u ovom udžbeniku riješen tako da je za proučavanje uzet posve jednostavan model procesora, koji je dovoljno detaljno obrađen da se njegova struktura može po potrebi razmotati unazad sve do nivoa logičkog kola, a koji je opet dovoljno moćan da se na njemu mogu ilustrirati svi bitni koncepti mašinskog i asemblerskog programiranja koji su neophodni za razumijevanje rada softvera i spone koja povezuje hardver i softver. Vrijedi napomenuti i da se udžbenik, kako mu i samo ime govori, prvenstveno fokusira na logičke aspekte digitalne i računarske tehnike, koji su uglavnom neovisni od konkretne tehnologije koja se koristi za stvarnu fizičku realizaciju razmotrenih koncepata.

Sadržaj ovog udžbenika podijeljen je u 26 poglavlja. Uvodna poglavlja su uglavnom informativnog karaktera i polaze od računara kao cjeline koja se postepeno raščlanjuje na sitnije blokove, dok su kasnija poglavlja zasnovana na principu “odozdo nagore”, odnosno rad računara se upoznaje polazeći od proučavanja principa rada njegovih najsitnijih komponenti, koje se kasnije povezuju u sve složenije i složenije komponente dok se na kraju ne formira kompletan funkcionalan računarski sistem. Nakon svakog poglavlja nalaze se pitanja i zadaci za ponavljanje odnosno produbljivanje gradiva obrađenog u tom poglavlju. Zadaci koji traže više rada ili razmišljanja obilježeni su zvjezdicom. Prvo poglavlje predstavlja uvodno poglavlje koje je posvećeno osnovnim pojmovima o računarskim sistemima. Na početku se prvo uvodi pojam računara kao uređaja za automatsku obradu podataka i informacija. Nakon toga, daje se pregled razlika između analognih i diskretnih veličina, sa posebnim osvrtom na digitalne veličine kao njihov specijalni slučaj. Tom prilikom se ističe i razlika između analognih i digitalnih računara i daje kratak osvrt na postupke pretvorbi između analognih i digitalnih veličina. Poglavlje završava pregledom osnovnih elemenata Von Neumannove arhitekture računara, iz koje je vidljiva jasna podjela računara na ulazne i izlazne jedinice, te centralnu jedinicu koja se dalje može grubo podijeliti na memoriju i procesor.

Von Neumannova arhitektura, koja je u kratkim crtama dotaknuta na kraju prvog poglavlja, dalje se razrađuje kroz drugo poglavlje. U ovom poglavlju se jasno ističe razlika između ulaznih i izlaznih jedinica posmatranih u užem smislu te u širem smislu, zajedno sa pripadnim veznim sklopovima odnosno kontrolerima. U nastavku se razrađuje podjela memorija na interne i eksterne, zajedno sa potpodjelama ovih kategorija (RAM, ROM, PROM, itd.). Poglavlje završava kratkim pregledom tipičnih karakteristika raznih vrsta i podvrsta memorija.

Treće poglavlje posvećeno je jedinicama za mjerenje količine informacije i kapaciteta memorije. Na početku poglavlja daju se najosnovniji pojmovi iz teorije informacija koji su neophodni da se shvati mjerljivost količine informacije i uvede pojam bita kao elementarne količine informacije. U nastavku se razmatra mogućnost da se na isti način mjeri i kapacitet memorije, te se uvode i veće mjerne jedinice poput bajta, kilobajta, megabajta itd. Poglavlje se završava osvrtom na tipična zauzeća memorije od strane pojedinih softverskih resursa.

U četvrtom poglavlju razmatraju se načini predstavljanja raznih vrsta numeričkih i nenumeričkih podataka u računarskoj memoriji. Prvo se uvodi pojam brojnih sistema, sa posebnim osvrtom na binarni i heksadekadni brojni sistem. Zatim se objašnjavaju klasični načini zapisa cjelobrojnih podataka zasnovanih na binarnom brojnom sistemu. U nastavku se razmatra nekoliko načina aproksimativnog zapisa realnih brojeva u računarskoj memoriji, kao i razni načini kodiranog zapisa tekstualnih (alfanumeričkih) podataka. Poglavlje se završava opisom osnovnih činjenica vezanih za zapis slikovnih i zvukovnih podataka.

Peto poglavlje posvećeno je aritmetici u binarnom brojnom sistemu i komplement kodovima. U ovom poglavlju detaljno se razrađuju postupci izvođenja četiri osnovne računske operacije u binarnom brojnom sistemu. Poglavlje se završava razmatranjem komplement kodova, sa posebnim osvrtom na 2KK kod i njegove primjene za potrebe zapisivanja brojeva sa predznakom u računarskoj memoriji.

Šesto poglavlje daje osnove logičke algebre. Poglavlje započinje pregledom osnovnih logičkih operacija i njihovih osobina. U nastavku slijedi razmatranje logičkih izraza i funkcija, kao i njihove reprezentacije pomoću kombinacionih tablica. Zatim se uvode logička kola ili gejtovi kao apstraktni uređaji za izvođenje logičkih operacija, neovisno od principa njihove realizacije. Tom prilikom se informativno daju i osnovne ideje za elektromehaničku realizaciju ovih uređaja. Potom se daju osnovna pravila logičke algebre, među kojima se posebno ističu aksiomi logičke algebre. Poglavlje završava prikazom osnovnih ideja kako se pravila logičke algebre mogu iskoristiti za minimizaciju logičkih izraza i funkcija, odnosno za njihovu transformaciju na što je god moguće jednostavniji ekvivalentni oblik.

U sedmom poglavlju se razmatraju neki standardni oblici logičkih funkcija kao i načini za svođenje proizvoljnih logičkih funkcija na te oblike. Na prvom mjestu, tu su razne vrste disjunktivnih i konjunktivnih normalnih formi, koje između ostalog služe i kao polazna osnova za sistematične postupke minimizacije logičkih funkcija. Tom prilikom dato je i pravilo za analitičko izražavanje proizvoljne logičke funkcije predstavljene kombinacionom tablicom. U nastavku se uvode univerzalne logičke operacije i daje mogućnost reprezentacije proizvoljne logičke funkcije pomoću neke od univerzalnih logičkih operacije. Potom se razmatra mogućnost reprezentacije logičkih funkcija u Žegalkinovoj algebri, kao i njihova reprezentacija u vidu klasičnih aritmetičkih izraza (tj. u aritmetiziranom obliku). Poglavlje se završava prikazom Postove teoreme o funkcionalnoj kompletnosti logičkih funkcija i njenim primjenama.

U osmom poglavlju detaljno se razmatra Quineov algoritam kao jedan od najpoznatijih sistematičnih postupaka za minimizaciju logičkih funkcija. Na početku se prvo opisuje osnovni matematski aparat na kojem se zasniva Quineov algoritam, pri čemu se posebno ističu pojmovi implikanti i prostih implikanti. Zatim se prelazi na opis Quineovog postupka za pronalaženje svih prostih implikanti zadane logičke funkcije. U nastavku se razmatra primjena implikantnih matrica i Petrickovog metoda za nalaženje nesvodljivih formi zadane logičke funkcije, čime se ujedno kompletira opis Quineovog algoritma za nalaženje minimalnih disjunktivnih formi zadane logičke funkcije. Sličan postupak je opisan i za nalaženje minimalnih konjunktivnih formi. Na kraju poglavlja slijedi kratak osvrt na nedostatke Quineovog metoda i na neke od alternativnih postupaka za istu svrhu.

Deveto poglavlje posvećeno je Veitchovim dijagramima kao najpoznatijem pomoćnom sredstvu za grafoanalitički pristup minimizaciji logičkih funkcija. U ovom poglavlju detaljno se proučavaju predstavljanje funkcija sa dvije, tri i četiri promjenljive pomoću Veitchovih dijagrama, osnovni pojmovi i tehnike manipulacije sa Veitchovim dijagramima, te njihova primjena za nalaženje minimalnih formi logičkih funkcija sa dvije, tri i četiri promjenljive. Tom prilikom se daju i izvjesni kriteriji za procjenu povoljnosti realizacija logičkih funkcija predstavljenih na razne načine. Poglavlje završava osvrtom na mogućnost primjene Veitchovih dijagrama na funkcije sa pet ili eventualno šest promjenljivih.

Deseto poglavlje proučava neke praktične aspekte realizacije logičkih funkcija. Prvo se razmatra utjecaj kašnjenja koja unose pojedina logička kola na funkcioniranje kompletne logičke mreže unutar koje se ova kola nalaze. Posebna pažnja posvećuje se pojavi tzv. rizika u logičkim mrežama i načinima kako se ova pojava može izbjeći. Također se razmatra mogućnost primjene nestandardnih logičkih kola u logičkim mrežama te prednosti i nedostaci njihove upotrebe. Na kraju poglavlja, opisuju se metodi za realizaciju logičkih mreža uz upotrebu samo jedne vrste logičkih kola (univerzalnih logičkih kola).

U jedanaestom poglavlju se razvijeni matematski aparat i ostala znanja stečena kroz prethodna poglavlja primjenjuju na formalno projektiranje kombinacionih sklopova. Sam postupak je demonstriran kroz nekoliko ilustrativnih primjera. U prvih nekoliko primjera projektiraju se sklopovi za izvođenje jednostavnijih aritmetičkih podataka nad binarno zapisanim brojevima, dok posljednji primjer demonstrira projektiranje konverzione matrice za prikaz brojčanih podataka na sedmosegmentnim indikatorima.

Dvanaesto poglavlje razmatra tehnike projektiranja složenijih kombinacionih sklopova, koji su isuviše složeni da bi na njih mogla biti primjenljiva formalna metoda projektiranja. Ovdje je težište stavljeno na tzv. ćelijsko-intuitivni metod projektiranja. Sama tehnika je ponovo demonstrirana kroz nekoliko karakterističnih primjera. Ovdje se pretežno razmatra tehnika projektiranja sklopova za izvođenje aritmetičkih operacija poput sabiranja, oduzimanja i množenja nad višebitnim brojevima, kao i sklopova za poređenje odnosno komparaciju. Kao rezultat projektiranja pojavljuju se i neke karakteristične strukture kao što su polusumatori, puni sumatori, višebitni sumatori i drugi, koji svoju primjenu nalaze i u poglavljima koja slijede.

Trinaesto poglavlje posvećeno je dekoderu kao jednom od najkorisnijih kombinacionih sklopova i njegovoj primjeni za gradnju složenijih sekvencijalnih sklopova. Na početku se prvo daju osnovne osobine dekodera i razni načini njegove realizacije, uključujući i realizacije zasnovane na strategiji “podijeli i osvoji”. Tom prilikom se ilustrira i mogućnost realizacije proizvoljne skupine logičkih funkcija pomoću dekodera i OR logičkih kola. Prikazana je i tehnika gradnje dekodera većeg formata pomoću više dekodera manjeg formata. U nastavku se detaljno opisuje princip rada ROM memorija, kao sklopova koji su temeljno bazirani na dekoderu, kao i njihovih bliskih srodnika PROM i EPROM memorija. Opisane su i programabilne logičke matrice (PLA komponente) i principi realiziranja proizvoljnih logičkih funkcija pomoću njih. Mada PLA komponente striktno posmatrano nisu zasnovane na dekoderima, dijele neke zajedničke principe, tako da se prirodno uklapaju u ovo poglavlje. Poglavlje se na kraju završava prikazom raznih vrsta kodera, koji se, u izvjesnom smislu, mogu posmatrati kao sklopovi čija je funkcija inverzna funkciji dekodera.

U četrnaestom poglavlju razmatraju se razne vrste multipleksera kao još jedne vrste tipičnih kombinacionih sklopova, kao i njihove primjene. Na početku se prvo razmatra struktura običnog multipleksera i njegova veza sa dekoderom, što prirodno vodi ka ideji višestrukog multipleksera. Zatim se razmatra struktura aritmetičko-logičke jedinice kao jedne od najkarakterističnijih primjena multipleksera u računarskoj tehnici. U nastavku slijedi prikaz raznih metoda za realizaciju logičkih funkcija uz korištenje multipleksera raznih formata. Prikazane su kako analitičke, tako i grafoanalitičke metode zasnovane na primjeni Veitchovih dijagrama. Konačno, na kraju poglavlja, dat je kratak osvrt na demultipleksere kao inverzne sklopove multipleksera (koji su, u suštini, dekoderi samo posmatrani na drugačiji način) i mogućnost njihove primjene.

Petnaesto poglavlje je ponovo više matematičko po svojoj prirodi i u njemu se izlaže opća matematska teorija sekvencijalnih sklopova. Nakon uvođenja u osnovne pojmove teorije sekvencijalnih sklopova, slijedi kratak opći osvrt na diskretne matematičke modele i diferentne odnosno rekurentne jednačine. Tom prilikom se prirodno javlja i koncept stanja sistema. Kako se svi fizički ostvarljivi sekvencijalni sklopovi mogu matematski modelirati kao konačni automati, u nastavku se razmatraju upravo modeli zasnovani na konačnim automatima. Uvode se pojmovi konačnih automata prve i druge vrste, te daje postupak za pretvorbu konačnih automata druge vrste u automate prve vrste. Također se ilustriraju razlike između modela Mealyjevog i Mooreovog tipa i daje postupak za pretvorbu između ovih vrsta modela. Primjena konačnih automata ilustrirana je kroz model serijskog sabirača. Na kraju poglavlja daje se prikaz ograničenja modela zasnovanih na konačnim automatima i načina kako se ova ograničenja mogu djelimično kompenzirati.

Šesnaesto poglavlje je posvećeno elementarnim automatima, koji predstavljaju najprostije sekvencijalne sklopove i osnovne gradivne elemente za gradnju složenijih sekvencijalnih sklopova. Poglavlje započinje prikazom značaja povratnih sprega za postizanje funkcionalnosti koje su karakteristične za sekvencijalne sklopove. Zatim se razmatraju razni modeli elementarnih automata, kako asinhronog tipa (bistabili odnosno lečevi) tako i sinhronog tipa (flip-flopovi). Daje se detaljan prikaz elementarnih automata D, RS, JK i T tipa i uvodi pojam tablica prelaza. Za potrebe proučavanja elementarnih automata sinhronog tipa uvodi se pojam taktnih impulsa i razmatraju razni načini okidanja flip-flopova. Također se razmatraju i izvjesni modeli koji su na prelazu između asinhronih i sinhronih elementarnih automata, kao što su master-slejv flip flopovi. U ovom poglavlju našlo se mjesta i za kratki osvrt na pojave kao što su nestabilnost i metastabilnost.

U sedamnaestom poglavlju razmatra se problematika projektiranja sekvencijalnih sklopova. Kako je opća problematika projektiranja sekvencijalnih sklopova izuzetno komplicirana, ovdje se težište stavlja isključivo na projektiranje sekvencijalnih sklopova sinhronog tipa, koji su dovoljno općeniti da se pomoću njih može realizirati svaka funkcionalnost koja se može realizirati ma kakvim sekvencijalnim sklopovima. Poglavlje započinje razmatranjem tablica pobuda koje su na izvjestan način inverzne tablicama prelaza i njihovoj primjeni na projektiranje sekvencijalnih sklopova. Razmotrene tehnike se ilustriraju prvo na primjeru serijskog sumatora, a zatim i na nekim drugim složenijim primjerima sekvencijalnih sklopova. Kao posljedica razmotrenih tehnika, proizilazi i metod za međusobne pretvorbe između različitih tipova elementarnih automata. Konačno, razmatraju se i tehnike za lakše dobijanje formalnog opisa sekvencijalnih sklopova iz njihovog verbalnog opisa zasnovane na upotrebi grafova, kao i neki aspekti problematike optimalnog kodiranja stanja.

Osamnaesto poglavlje posvećeno je analizi sekvencijalnih sklopova i tehnikama pretvorbe između različitih međusobno ekvivalentnih modela sekvencijalnih sklopova. Što se tiče analize, slično kao po pitanju projektiranja razmatra se isključivo analiza sekvencijalnih sklopova sinhronog tipa, jer je analiza općih sekvencijalnih sklopova generalno posmatrano izuzetno težak problem. Kao rezultat analize dobija se graf koji opisuje rad sklopa. U nastavku se razmatraju tehnike za pretvorbu sekvencijalnih sklopova Mealyjevog tipa u sklopove Mooreovog tipa i obrnuto. Na kraju poglavlja, dat je prikaz tehnika za detekciju eventualnih suvišnih stanja u sekvencijalnim sklopovima i konstrukciju ekvivalentnih sklopova u kojima su suvišna stanja uklonjena.

Devetnaesto poglavlje proučava sekvencijalne sklopove brojačkog tipa, koji spadaju u najviše korištene sekvencijalne sklopove. Razmatraju se razne varijante jednosmjernih brojača unaprijed i unazad, dvosmjernih brojača, te raznih specijalnih brojača kao što su generatori odnosa i djelitelji frekvencije. Mada se u ovom poglavlju pretežno razmatraju sinhroni brojači, na kraju poglavlja dat je kratak osvrt na talasaste brojače, koji su primjeri asinhronih brojača.

U dvadesetom poglavlju razmatraju se razne vrste registara koji predstavljaju drugu karakterističnu skupinu sekvencijalnih sklopova koji se koriste u računarskoj tehnici, kao i RAM memorije koje predstavljaju glavnu primjenu registara u računarskoj tehnici. Na početku se prvo uvode paralelni asinhroni i sinhroni registri, te se daje mogućnost zasnivanja proizvoljnih sekvencijalnih sklopova uz pomoć ROM memorije i jednog sinhronog registra, što vodi ka pojmovima mikroprogramiranih automata i mikroinstrukcija. Slična ideja zasnovana na primjeni PLA komponenti umjesto ROM memorije vodi ka programabilnim logičkim uređajima, odnosno PLD komponentama. Slijedi prikaz akumulirajućih registara, odnosno akumulatora. Nakon toga se prelazi na opis serijskih registara koji su poznati i kao pomjerački odnosno šift registri, te serijsko-paralelnih registara, koji imaju posebnu primjenu u računarskim mrežama. Ilustrirana je jedna mogućnost primjene akumulirajućih i pomjeračkih registara za pojednostavljenje realizacije složenijih računskih operacija u aritmetičko-logičkim jedinicama. Drugi dio poglavlja posvećen je primjeni registara za konstrukciju memorija RAM tipa. Prikazane su razne realizacije, prvo one koje koriste višestruki multiplekser, a zatim i realizacije koje izbjegavaju upotrebu ove glomazne komponente korištenjem elektronskih prekidača. Tom prilikom dat je i kratak osvrt na logičke sklopove sa “trećim stanjem”, odnosno stanjem visoke impedanse. Na kraju poglavlja dat je informativni opis dinamičkih RAM memorija.

Dvadeset i prvo poglavlje posvećeno je procesoru kao glavnoj komponenti računarskog sistema. U ovom poglavlju se na jasan način demonstrira da procesor nije ništa drugo nego pogodno konstruisan sekvencijalni sklop. Na početku poglavlja prvo se ilustrira uloga procesora i način njegovog povezivanja sa računarskom memorijom. Uvodi se pojam mašinskih instrukcija i mašinskog programa. Detaljno se opisuje način komunikacije procesora i memorije i razmatraju porodice mašinskih instrukcija. Nakon toga se pristupa realizaciji jednog konkretnog hipotetičkog procesora, koji je dovoljno jednostavan da se njegova struktura i njegov rad mogu u potpunosti razumjeti koristeći do sada izloženu materiju, a koji je s druge strane dovoljno općenit da se uz pomoć njega može postići bilo koja funkcionalnost koja se može postići i sa ma kojom drugom vrstom procesora, mada poznaje samo četiri instrukcije. Prvo se daje blok struktura procesora u kojoj su sve sastavne komponente poznate od ranije, osim bloka nazvanog upravljačka jedinica, koji koordinira rad ostalih blokova. Zatim se analizira graf koji opisuje rad upravljačke jedinice. Mada upravljačka jedinica nije zaista i dovedena na nivo realizacije, princip njene realizacije je jasan iz razmotrenog grafa. Poglavlje završava kratkim osvrtom na historijski razvoj procesora.

U dvadeset i drugom poglavlju razmatraju se osnovne tehnike mašinskog i asemblerskog programiranja prilagođenog hipotetičkom procesoru koji je projektiran u prethodnom poglavlju. Mada je sa aspekta instrukcijskog skupa ovaj procesor veoma siromašan (poznaje svega četiri instrukcije), ovo poglavlje ilustrira da se uz pomoć njega mogu realizirati posve složeni zadaci. Na početku programa se prvo ilustrira razlika između mašinskog i asemblerskog programiranja i uvode pojmovi kao što su mnemoničke skraćenice, labele, direktive, kompajleri, viši programski jezici itd. Nakon toga se metodologija asemblerskog programiranja demonstrira kroz nekoliko karakterističnih primjera kroz koje se ilustriraju razne interesantne tehnike. Ilustrirane su tehnike kako analize, tako i sinteze asemblerskih programa. Problemi po svojoj prirodi variraju od jednostavnih do prilično složenih, a uglavnom su vezani za realizaciju izvjesnih aritmetičkih odnosno logičkih operacija (bez postojanja instrukcija koje direktno izvode te operacije). Poglavlje se završava osvrtom na interesantnu posljedicu Von Neumannove arhitekture računara, a to je mogućnost pisanja samomodificirajućih programa.

Nakon što je pokazano da se sa procesorom koji poznaje svega četiri instrukcije mogu realizirati vrlo raznoliki zadaci, u dvadeset i trećem poglavlju istražuje se koji je minimum funkcionalnosti koji mora posjedovati neki procesor da bi on principijelno bio u stanju obaviti bilo koji zadatak koji može obaviti ma koji drugi procesor. Tom prilikom je navedena teorema Minskog, po kojoj takve zahtjeve ispunjava čak i procesor koji poznaje svega dvije (tačno određene) instrukcije. Dat je i primjer tehnika programiranja za takav minimalistički model (poznat kao procesor Minskog). Poglavlje završava kratkim osvrtom i na neke druge minimalističke modele, kao što su procesori OISC i URISC, te programski jezik BF.

Za razliku od prethodnog poglavlja, koje se bavi minimalističkim aspektima, u dvadeset i četvrtom poglavlju razmatraju se opće karakteristike procesora koji se zaista susreću u današnjim računarima. U prvom dijelu poglavlja razmatraju se modeli procesora poznati kao troadresni, dvoadresni i jednoadresni procesori, kao i neki hibridni modeli poput kvazidvoadresnih procesora. Razlika između ovih modela ilustrira se kroz primjer prevođenja aritmetičkih izraza u odgovarajuće asemblerske programe za njihovo računanje. Nakon toga se uvode razni alternativni zapisi aritmetičkih izraza kao što su funkcijski, prefiksni i postfiksni (RPN) zapis, što je neophodno da bi se mogao uvesti koncept nuladresnih procesora, što se u nastavku čini. Posebna pažnja posvećuje se steku kao karakterističnoj strukturi podataka neophodnoj za funkcioniranje ovakvih modela. U drugom dijelu poglavlja razmatraju se razni načini adresiranja odnosno načina na koji procesor može pribaviti podatak koji se tipično susreću kod današnjih procesora. Ovom prilikom se daju i izvjesne ideje kako se hipotetički procesor razvijen u Poglavlju 21 može korisno proširiti dodavanjem novih načina adresiranja. Konačno, poglavlje završava kratkim osvrtom na vrste instrukcija kakve se tipično javljaju u realnim procesorima.

Dvadeset i peto poglavlje posvećeno je ulazno-izlaznim veznim sklopovima i eksternim memorijama, koje još nedostaju da bismo komponente računara razmotrene u prethodnim poglavljima mogli sklopiti u posve funkcionalnu cjelinu. Poglavlje započinje općim napomenama o načinima povezivanja ulaznih i izlaznih uređaja sa ostatkom računarskog sistema i opisom generalne strukture ulazno-izlaznih veznih sklopova odnosno kontrolera. Nakon toga se detaljnije opisuje način povezivanja tastature sa računarom i pripadni kontroler. Tom prilikom razmatra se i mehanizam prekida (interapta). Slijedi okvirno upoznavanje sa načinima povezivanja ekrana sa računarom i opis odgovarajućih kontrolera, pri čemu se posebno razmatraju kontroleri koji mogu prikazivati samo tekst i oni koji posjeduju mogućnost grafičkog prikaza. Drugi dio poglavlja razmatra građu eksternih memorija (prvenstveno diskova) i odgovarajuće kontrolere. Sve je praćeno opisom odgovarajuće softverske podrške. Na kraju poglavlja dat je primjer jednog zaokruženog jednostavnog računarskog sistema (kalkulator) sa kompletnim opisom kako pripadnog hardvera, tako i odgovarajućeg upravljačkog softvera pisanog u asembleru.

Posljednje, dvadeset i šesto poglavlje posvećeno je osnovnim pojmovima o operativnom sistemu i sistemskom softveru, koji su neophodni da bi se računarski sistem mogao zaokružiti u upotrebljivu i funkcionalnu cjelinu. Na početku poglavlja prvo je demonstrirano kako se računarski sistem specijalne namjene (kalkulator) razvijen u prethodnom poglavlju može samo izmjenom upravljačkog programa pretvoriti u primitivni programabilni računar opće namjene. Potom se izlažu osnovni koncepti operativnih sistema, polazeći od monitora kao najprimitivnijih operativnih sistema sve do modernih operativnih sistema. Ukratko se opisuje funkcija pojedinih komponenti operativnih sistema. Poglavlje završava kratkim osvrtom na preostali sistemski softver, kao i na put od programa pisanih u višem programskom jeziku ka mašinskim programima.

Ovaj udžbenik prati i odgovarajuća web podrška, koja se nalazi na adresi http://people.etf.unsa.ba/~zjuric/lodrs. Ova podrška je još uvijek u razvoju, ali ono što je sigurno je da će se na njoj nalaziti rješenja odabranih a u dogledno vrijeme možda i svih zadataka koji su postavljeni u udžbeniku kao zadaci za samostalan rad (na kraju svakog od poglavlja). Pored toga, na istom mjestu moći će se naći korekcije eventualnih naknadno uočenih grešaka, razne dopune materijala, interesantni problemi za rješavanje, odgovori na često postavljana pitanja, i druge slične stvari.

Autori se duboko zahvaljuju recenzentima dr. Samimu Konjiciji, dr. Abdulahu Akšamoviću i dr. Nerminu Sarajliću što su se prihvatili zahtjevnog i odgovornog posla recenzije ovog udžbenika. Pored toga, autori se zahvaljuju i svim drugim ljudima koji su pomogli izdavanje ovog udžbenika.

Autori:

Dr. Željko Jurić
Dr. Novica Nosović

Nazad na početnu stranicu