harverska sekvenca - alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mi06231/uuar/uuar_1-6.pdfdigitalna logika...
TRANSCRIPT
-
Harverska sekvenca
Arhitektura – spoljni pogled sa aspekta programera kako komponente izgledaju
Organizacija – fizički pogled, kako su komponente napravljene Cilj: Razumeti kako računar radi!
Plan rada: Uvod:
1. Digitalna logika 2. Arhitektura računara
3. Organizacija računara 4. dizajn
Predmet posmatrati kao crnu kutiju:
- zanima nas interakcija sa ostalim elementima
- ne zanima nas unutrašnjost
Predstavljanje računara: Osnovni model računara
( U praksi dodajemo još neke elemente, u teoriji to nije neophodno )
Procesor: - Mozak (srce) računara, element koji ima potencijal da
izračunava (obraĎuje) podatke.
Procesor sam po sebi ne moţe da uradi ništa.
Osobine: - jednostavan ureĎaj - pametan ureĎaj – izuzetno glup ureĎaj
( sagledavanjem spoljnih efekata ispostavlja se da je pametan )
Teoretski: CPU radi zapanjujuće mali broj stvari. Sabira male brojeve tj. brojeve do 127 i uporeĎuje da li je nešto jednako 0.
Računar ima samo jednu dobru osobinu – brzinu! Uz to ima preciznost (nepogrešivost) i neumornost.
Procesor malim operacijama koje izvodi milijardu u sekundi nadvladava tj. snagu crti iz brzine izračunavanja (sa primitivnim je
osobinama, ali milijardu puta u sekundi izračunavanjima).
Princip rada odozgo
prema dole
Princip rada odozdo
prema dole
CPU
MEMORIJA
interakcija
U/I
-
Memorija: - Niz registara sa adresnim mehanizmom. (bit
udruţivanje u bajtove u registre)
Skup registara postoje niz kada mu se dodeli adresni mehanizam. Memorija uvek izgleda i ponaša se kao jedan registar.
Osnovni model moţe da se precizira:
8 – bita – 8 linija (ţična magistrala)
D – data magistrala (magistrala podataka)
AD – adresna magistrala (uvek ide samo iz procesora prema memoriji)
Pitanje: Da li ţelimo:
CPU Memorija ili Memorija CPU
Postoji kontrolna magistrala R i W
3 – tipa magistrala: - D – magistrala podataka - AD – adresna magistrala
- KD – kontrolna magistrala
Potencijal procesora! ProizvoĎač je ugradio delove koji obavljaju neka izračunavanja.
U procesu dizajniranja, dizajner odlučuje šta će implementirati. Uz procesor proizvoĎač mora da isporuči i uputstvo, jer je bez toga
neupotrebljiv. Uputstvo treba da sadrţi: - operacije
- uporeĎivanje - ...
...
CPU MEMORIJA
8 razmena
podataka D
CPU MEMORIJA
16
AD
CPU MEMORIJA R
CPU MEMORIJA W
read
write
Kompletna lista
-
Jedno je pitanje šta CPU moţe da uradi, a drugo je kako da ga nagovorimo to da uradi.
Sa procesorom komuniciramo samo preko binarnih brojeva, tj. šiframa 0 i 1.
- Šifre nam govore kako raditi sa procesorom. - Detalji (unutrašnja organizacija) nam govori kako uzimati komande.
(komande i brojevi su u memoriji)
Trebali bismo imati 2 memorije:
- jedno je davati komande - drugo je obrada podataka.
Stoga bi prirodno da imamo 2 memorije:
1947.god. došlo je do objedinjenja memorije i za podatke i za komande.
Pitanje: Šta će se desiti ako doĎe do prepisivanja podataka jednih
preko drugih?
U memoriji se to ne vidi, sve je ekvivalentno, pa na osnovu logičkih zaključivanja zaključujemo:
1. Hardvardska arhitektura – odvojena memorija 2. fon – Nojmanova arhitektura – sve memorije zajedno (zbog
uštede)
U svetu je poznatija Hardvardska arhitektura (procesor radi brţe,
obezbeĎuje veću brzinu). - vuče podatke punom brzinom
- obraĎuje instrukcije - aplikacije u realnom vremenu
Suština je da se odgovor dobije za unapred fiksirano odreĎeno vreme. ( nije bitna brzina procesora). Vreme odziva je fiksirano!(ne moţe se
premašiti) Primer: Procesori u mobilnim telefonima su Hardvardske arhitekture
Procesor je programibilan, ima mehanizam za automatsko izvršavanje (procesor radi automatski). Naredbe su u memoriji unapred
isprogramirane i on radi automatski. U CPU se ugraĎuje registar (brojač naredbi) tj. Program Counter. Automatski se binarni broj
predaje u memoriji, tamo se čita i pretvara u instrukciju.
CPU M1 M1 Osnovni teoretski model računara
-
Formati instrukcija:
Propisani i ugraĎeni od strane proizvoĎača komponenti: - šta da radi
- gde su podaci
Pitanja za razmišljanje: Koje oblasti pokriva ovaj kurs?
1. Digitalna logika 2. Arhitektura računara
3. Organizacija računara 4. Dizajn
Redosled koji učimo i zašto?
Fon Nojmanova arhitektura, prednosti?
Ušteda! Osnovni teoretski model računara?
Pitanje:
Kako sve to detaljnije radi? Kako moţe da se komunicira sa procesorom?
Grupe instrukcija: Procesor:
- sabiranjem i grananjem moţe da se izračuna sve - ugraĎuju se i nešto više instrukcija 10-100
Podela: - Grupe: - Aritmetičko-logičke operacija:
- Klasične: +,-,*,/ - zavise od vremena - Specifične: (+1) inkrement, (-1) dekrement (brţe
izvršavanje!)
- Logičke: ,, .... – logičke instrukcije
- Instrukcije za transfer (ne vrše obradu nego premeštaju
podatke) - Kontrola toka (omogućava grananje, a grananje omogućava
cikluse)
- Grananje: - Jump - Brunch
- Specijalne instrukcije (HALT – zaustavljanje...)
Jednom rečju računa i
čuva rezultate
-
Formati instrukcije:
Format potreban da bismo videli do kraja proceduru kako
procesor radi. Da bi procesor automatski obavljao neki posao morao bi da ima ovakav format instrukcija:
- operacioni kod - adresa operanda broj 1
- adresa operanda broj 2 - adresa rezultata
- adresa naredne instrukcije
Praktično, takav model nikad nije implementiran, jer je instrukcija previše dugačka!
1 bajt 2 bajta 2 bajta 2 bajta 2 bajta 9 bajtova
Operacioni
kod
Adresa
operanda 1
Adresa
operanda 2
Adresa
rezultata
Adresa
naredne inst.
UKUPNO
Da bismo izvršili instrukcije moramo ih donositi iz memorije. Ţelimo: Nulto vreme odziva!!!
Poţeljno je skraćenje instrukcija, tako da moţemo da ukidamo adrese. Ali, iz teoretskog modela ne mogu da se ukidaju adrese, jer teoretski
model mora biti zadovoljen. Alternativa: Moţemo eksplicitno da zamenimo implicitnim! Uvodimo
sklanjanje sa eksplicitnog navoĎenja u implicitne dogovore. Pisanjem instrukcija jedne za drugom dobijamo dogovore, jer
eksplicitno ne moramo da je navodimo, tj. ne moramo da navodimo adresu naredne instrukcije, ali moramo da je znamo. Program mora da
se piše sekvencijalno (dodavanjem P.C. hardware). Na taj način gubi se fleksibilnost, jer smo instrukcije mogli da stavljamo gde hoćemo,
sada ih moramo stavljati kontinualno.
Napomena: Fleksibilnost nam ništa nije ni značila! Da nismo izgubili fleksibilnost, opet bismo instrukcije pisali nekim
redom. Dodatak: UvoĎenje NMP – instrukcija ( dodavanje instrukcija software)
- dogovor - hardware
- gubitak - software
Moguće je ići na dalja skraćivanja ispim principom.
Sledeći dogovor: Ograničenje (bez pisanja rezultata, rezultat ide na prvo mesto)
Zamenjuju poslednji registar
-
Primer: Saberi A,B Saberi A,B,A, tj. rezultat smesti u A
Napomena: Prethodni dogovor nije besplatan!
Instrukcije za transfer podataka Produţenje programa moţe biti i eksplicitno veliko.
Primer: Saberi A,B,C i rezultat smesti u C
MOVE A,P SABERI A,B
MOVE A,C MOVE A,P
Ovo skraćivanje košta! (nepovoljan primer)
Generalno postoji unapreĎenje! Pitanje: Moţemo li i dalje da skraćujemo? Odgovor: DA!
- Hardverska promena: Uvodjenje akumulatora
- Dogovor: Akumulatora - Modifikacije: Akumulator postaje centralno mesto (Instrukcije
idu iz akumulatora u memoriju i obrnuto) - Opet postoji gubitak fleksibilnosti!
Primer: iz memorije u akumulator
SABERI B AKUMULATOR u C
Istorijski se taj model skraćivao!
Spori računari su bili troadresni! Kasnije:
- dvoadresni - 1,5 adresni
Danas: - jednoadresni
Model sa P.C. i sa akumulatorom je jednoadresni! Pitanje: Moţe li da se i dalje sa skraćivanjem? Odg.: DA!
4,3,2,1 – kvantitativne promene 0 – posebna promena
Korak se moţe izvesti pa imamo i 0-adresne računara! UvoĎenjem 2 akumulatora (gde se podrazumevaju operandi)
Primer: iz memorije u A X iz memorije u B Y
Saberi 0-adresno! Iz A u memoriju Z
Ono što još nije rešeno, a to je pitanje moţe li se još dalje_
Naivna verzija MOVE A,C
SABERI C,B Malo bolja
verzija
-
Da li moţemo imati -1 adresne računare?
Stek mašine: 0-adresni računari! Stek – LIFO struktura (last in, first out) – (slaganje na gomilu,
skidanje sa gomile) Na steku moţemo imati i više akumulatora!
Zapravo prelaz sa 1 0 se izvodi uvoĎenjem stek pointera, posebnim operacijama PUSH i POP.
PUSH – stavi na stek; POP – izvadi sa steka! Treba paziti na organizaciju steka!
UvoĎenjem dogovora: - operandi
- rezultat
Program izgleda: PUSH A
PUSH B Saberi 0-adresno
POP C PUSH i POP imaju adresu, a to je jedno (sve zavisi od ugla gledanja)
Prisutni su i u današnjim računarima Intel + Numerički ko-procesor
Svaki procesor ima jedinstven mašinski jezik koji je nuţno binarni. Nama je to jako neugodno! Cilj je napraviti indirekciju. Svaki procesor
izvršava samo instrukcije mašinskog jezika.
Pitanje: Šta u stvari procesor treba da radi da bi se program izvršio? Procesor moţe da čita i piše memoriju ili u sebi nešto interno radi
(obraĎuje podatke).
Ostaju na steku
CPU P.C.
Akumulator
0
MUA
A
SAB
B
C
HALT
20
50
51
52
MUA A
SAB B
AUM C
HALT
MUA
SAB
AUM
MUO
.....
HALT
Inst
rukci
je Svaka
instrukcija
ima svoje
kodove
Apsolutno adresiranje
-
Faze izvođenja mašinske instrukcije
Prvo će koristeći P.C. aktivirati memoriju i pročitati podatak. I donošenje operacionog koda (I.(Šta da radi!))
(čitanje memorije i smeštanje informacije na neko mesto) II donošenje adrese operanda (II.(Adresa!))
(čitanje memorije i smeštanje na neko mesto gde se nalazi podataka)
III donošenje operanda (koristeći fazu II prvo čita memoriju i donosi operand)
(III.(Zna šta radi i ima sa čime)) IV Egzekucija
Napomena: P.C. se u svakoj fazi uvećava za 1 Ovo je mehanizam koji ga tera kroz ove 4 faze
Rad sa konstantama
Pojavljivanje konstanti kroz svaku formulu. Ne postoje razlike izmeĎu varijabli i konstanti. Umesto adrese daje se sam podatak;
uglavnom se koristi rad sa konstantama. Jako teško bi bilo zamisliti rad sa nizovima bez ovoga.
Primer: SAB [50] – na adresi 50 nije podatak, nego adresa
podatka
MUA #100 - const 100 AUM 50 - zapisana na adresi 50
SAB [50] - saberi indirektno 50 tj. 100 INC [50] - uvećanje za 1 (MUA 50
SAB #1
AUM 50)
Instrukcija ne radi uvek istu stvar!
Indirektno adresiranje
Njegova hardverdska implementacije je krajnje jednostavna. Dalji način adresacije koji se koristi:
Relativna adresacija
Pr. MUA (30) P.C. +30 (moj podatak se nalazi na 30 mesta od
mesta gde se ja nalazim)
P.C. – Svest programa (gde sam ja(podataka) trenutno)
-
Apsolutna adresa
1. Blok koji translatorno moţemo da šetamo kako hoćemo 2. najjednostavniji sistem (neprihvatljiv)
Relativna adresacija – uglavno se koristi
Indeksno adresiranje – neki specijalni indeks registra ... konstante
(tehničke finese)
Baratanje sa potprogramima
Ideja: Logičke celine izvodimo u potprogram i koristimo ga onda često. Šta je potrebno za podršku potprograma? NAROWER!
Problem: Napišemo program koji nekoliko puta poziva potprogram.
Program radi, pa pozove potprogram tj. treba da skoči na potprogram pa da se vrati na izvršavanje programa.
Skok na potprogram se obavlja bezuslovnim skokom! JUMP – pozivamo potprogram
Problem nastaje kod povratka iz potprograma, a to je nešto promenljivo!!!
Ne moţemo da znamo ko će sve da poziva naš program! Na kraju potprograma se ne moţe staviti JUMP!
Ali i to se moţe rešiti indirektnom adresacijom. Čuvanjem adrese povratka, znamo da se vratimo.
MOVE P.C. Čuvamo P.C. na fiksnoj poziciji tj. to je mesto na koje trebamo da se vratimo
Problem: Ne moţemo da zovemo potprogram iz potprograma!!!
Ako potprogram pozove potprogram, uništava se adresa P.C. Napomena: Fiksirana je samo jedna lokacija.
Trebali bismo da imamo više lokacija i da pazimo kojim redosledom radimo!
Pa uvodimo posebne instrukcije, tj. uvodimo STEK!!! Adrese povratka stavljamo na stek! Kaskadno moţemo da pozivamo
više potprograma. Skakanjem na potprogram koristimo PUSH P.C., pa onda JUMP i na kraju ide POP P.C. i vraćamo se nazad.
Posebne instrukcije: - JSR – jump to ...
- RSR – return from ...
Bitan je stek, a sve ostalo je pitanje organizacija!!!
-
Pitanje: Na koji način se olakšava komunikacija izmeĎu čoveka i
računara?
Slika 1 ( ... )
Pr: za izračunavanje diskriminante D=b2-4ac kada se prevede na nivo računara.
Faze: MUA #4 MUA#4 MND A MND 50
MND C MND 52 AUM P AUM 53
MUA B MUA 51 MND B MND 54
ODU P ODU 54 AUM D AUM 53
HALT HALT
Loše odozgo ( sa naše strane) jer se razvija u mnogo sitnih instrukcija,
meĎutim ovo je idealno, gledano sa neke druge strane. Umesto ovoga morali bi smo da imamo mašinski program ( moramo da vidimo u
tabeli sve binarne kodove, adrese i da napravimo raspored u memoriji A-50, B-51 ).
Pitanje: koja je razlika?
U prvoj fazi smo koristili promenljive, a u narednoj adrese!
Uvodimo još i binarne kodove ( šifre ) za MUA. Kod mašinskog programa: svaka instrukcija je zamenjena binarnim
kodom i svaka adresa je zamenjena bianrnom vrednošću i to onda procesor izvršava.
Razmatraju se ideje kako to da se uradi, imamo jednu nepromenljivu
tačku, to je računar ( binarni ureĎaj sa svojim mašinskim jezikom ). To mora da bude krajnji proizvod, a kako nam to ne odgovara hoćemo
da napravimo posrednika koji će da prima stvari kako ih mi vidimo i da prebaci u oblik prihvatljiv procesoru.
Generalno rešenje za ubacivanje posrednika izmeĎu čoveka i računa je uvek isto.
Računar je fiksna tačka i on očekuje mašinski jezik i bez obzira na to koliko smo se udaljili on jedino to razume. Sa druge strane čovek je
takoĎe relativno fiksna tačka, ali kod čoveka imamo prilagoĎavanje. U sam sistem se ubacuje posrednik!
Pitanje: šta moţe da bude posrednik? Posrednik moţe da bude sam računarski program ( pomaţe nam u
preraĎivanju informacija ).
-
Pravo rešenje je da se računar pomogne sam da se nahrani! Posrednik
bi bio računarski program. Pitanje: kako radi računarski program?
Uz neke sitne izuzetke definišemo: Čovek piše tekstualni fajl u koji zapisujemo šta da se radi. Računar
uzima tekstualni fajl kao ulazni u svoj program, obraĎuje ga i prevodi tj izbacuje program na mašinskom jeziku i time puni memoriju i
omogućuje procesoru da radi. Program će da bude translator koji će naš zapis da preradi u mašinski
jezik i na taj način napuniti memoriju, omogućujući rad procesora. Predrasude: ovo su specifične ( posebne ) stavke programa, ( prave se
u raznim okruţenjima ). Za pisanje programa koristimo tekst editor!
Suština procesa: svaki program je u suštini tekstualni dokument ( fajl )! Ostalo je fizička stvar.
Kategorija prvougaoni komadić papira - fizička definicija.
Logički su različite stvari, ali iz iste kategorije i pismo i C – program sve su to tekstualni dokumenti.
Struktura je stalna! Tekstualni dokument = izvorni program.
Slika 2 ( ... )
Pitanje: šta je najelementarniji slučaj udaljavanja?
Prvi koraci su vrlo jednostavni, moţe vrlo lako da se uradi nešto efikasno i dobro, prvi oblik translatora: ASEMBLER I ( sa simboličkim
instrukcijama ). Problem!
Hoćemo da rešimo problem koji je suštinski veoma mali, imamo odreĎen broj instrukcija jako mali i znamo šta one rade. Sa druge
strane postoje šifre šta procesoru mora da se da, da bi on nešto
uradio. ( neophodna tabela za nizove 0 i 1 ) Stalno moramo da imamo pored sebe te šifre ( ograničenja ).
Problem je trivijalan, radi se samo o preimenovanju, suština je da se dogovorimo oko formata pisanja.
Dogovor: računaru instrukcije pišemo na jedan način! Ako napravimo rigidan ( strog ) format: - translator je jednostavan.
Ako napravimo popustljiv format: - translator je sloţen. Raniji formati su bili strogo rigidni!
Program je rigidan znači da: - učitava fajl red po red, kad učita prvi red onda izdvaja dva
elementa, prvi čine prva tri karaktera, a preostalo su binarni brojevi - ugraĎena je proizvoĎačka tabele i niz instrukcija
Program je trivijalan!
-
Ako bi smo dozvolili slobode u formatu i dozvolili prazne redove i da se
ne počinje od prve kolone, onda pravimo petlju za preskakanje blankova itd. Dobili bi smo komplikovani programski translator. Ovime
smo napravili jednostavan asembler, gde smo se rešili binarnih kodova za instrukcije.
Ako se ovo pokaţe kao dobro, traţimo i dalja poboljšanja. Adrese su i dalje binarne.
Pitanje: šta treba da ugradimo u taj asembler? U asembler moţemo ugraditi jedan algoritam konvertor iz dekadnog u
binarni sistem. Potrebno je dodati par naredbi: - deljenje ( petlja koja deli sa 2 )
- ostaci ( izbacuje ih i čita u obranutom redu )
Zapis: MUA #4
MOD 50
Instrukcije su simboličke, a adrese su dekadne. Pitanje: sledeći korak?
Olakšavanje: MUA #4 MOD A
Sada imamo i simboličke adrese, ne pišemo apsolutnu adresu. Tek sada moţemo direktno gledanjem videti koja je formula u pitanju
(D=b2-4ac) Pitanje: šta za to treba da se uradi?
Program translator treba da postane za jedan stepen komplikovaniji. Sada će sam da uvodi memoriju, raspodeljuje adrese i dodeljuje
imena. Tako da imamo jednoprolazne asemblere i dvoprolazne asemblere.
Pitanje: šta treba taj program da uradi? 1. prvo prolazi kroz tekstualni fajl, zatim
2. traţi varijable ( promenljive ), prikuplja ih
3. pravi listu ( spisak ) bez ponavljanja 4. traţi mesto u memoriji i dodeljuje adrese
Spreman je za prebacivanje u mašinski jezik! Stari program je imao fiksiranu, statičku tabelu sa kodovima od
proizvoĎača ( tajna ). Novi asembler ima novu dinamičku tabelu promenljivih specifičnu za
svaki program ( promenljiva ). Prema nekoj strogoj sintaksi imamo:
Krajnji rezultat koji je uvek isti, a ovo poslednje je asembler ( prethodno su bile neke primitivne forme ).
Podrazumeva se da asembler ima: - simboličke instrukcije - simboličke adrese
stim što ne mora da bude dvoprolazni.
-
Drţimo korespodenciju sa mašinskim jezikom „1-1“, praktično imamo
program na mašinskom jeziku, samo smo preimenovali neke stvari, a neke dugačke iskaze smo skratili nadimcima.
ASEMBLER – praktično mašinski jezik! Sledeći korak je još neko unapreĎenje, primećeno je izvesno
ponavljanje programa. Procesori pre mnogo decenija, pre 8-bitnih imali su sposobnost da
računaju do 127 pa su stoga ne upotrebljivi. Npr: trebaju nam veliki brojevi.
Uzmemo dve memorijske lokacije, posmatramo ih kao jednu celinu i imamo:
- imamo memorijsku lokaciju x, pa uzmemo x+1 i posmatramo ih kao jednu lokaciju tj. jednu celinu promenljive za sebe.
- imamo memorijsku lokaciju y, pa uzmemo y+1 i posmatramo ih kao jednu lokaciju
- saberimo x i y, odnosno x+1 i y+1 i smestimo na z, odnosno z+1
rezultat. Pitanje: kako se ovo izvodi?
Kao niz naredbi. Celina za sabiranje dvobajtnih brojeva! ( procesor to ne moţe )
Pretprocesor MUA X
SAB Y AUM Z
MUA X+1 SABC X+1 CARRY bit
UAM Z+1 Sabiranjem imamo jedan bit CARRY koji sluţi za čuvanje prenosa ( 9
bit ). Stalno prepisujemo ovih 6 naredbi.
Pitanje: gde sačuvati ove naredbe i naknadno ih koristiti?
Čuvanje ovih naredbi se obavlja u proširenju asemblera. Proširivanjem tabele sa još nekim instrukcijama definišemo SAB 2 (
sabiranje dvobajtnih ) ili SAB 4 ( sabiranje četvorobajtnih ). U procesu asembliranja uvodimo i ODU 2, SQRT...
Mesto gde je ovo zapisano je pretprocesor, u fazi asembliranja se zamenjuje odgovarajućim delovima koda programa.
Skupovi od po više naredbi – MAKROI Ovakav asembler se zove makro asembler i ovo su makroi. Osnovna
osobina asemblera je da pruţi korespodenciju 1-1 sa mašinskim jezikom, a ovo je nešto drugo pa ne bi trebalo da se naziva asembler,
jer čim se udaljavamo od 1-1 dobijamo nešto drugo. Tako da uvoĎenjem pretprocesora zamenjujemo neke asemblerske instrukcije.
Uz njih se moţe razmatrati pojam virtualne mašine.
-
Pitanje: šta je to virtuelna mašina?
Pojam virtualne mašine: to je prividna stvar, nije stvarna, ali izgled da radi tako kako nam se
čini. Imamo procesor, fizički kakav jeste sa osobinam koje poseduje i u procesu objašnjavanja korisniku umesto da idemo u detalje mi
skraćujemo tj krajnjem korisniku prećutkujemo istinu, pa kaţemo da procesor izmeĎu ostalog moţe da sabere i dvobajtne brojeve ( SAB 2
). Pitanje: kako to izgleda?
Gledano iznutra, mi znamo da toga nema tj da takva mašina fizički ne postoji, jer je virtualna mašina skrivena, pa se ne vidi razlika izmeĎu
fizičkog sabiranja i dvobajtnog sabiranja. ( ne vidi se šta je hardver, a šta je softver )
FIZIČKA MAŠINA + SOFTVERSKI DODATAK= ( V.M. ) fiz. sabiranje dvob. sabiranje
( fiz. mašina + 1 soft. dodatak predstavlja rešenje dvobajtnog
sabiranja ) Proglasimo je kao regularnu instrukciju, a ona je u stvari softverski
implementirana. Sa stanovišta krajnjeg korisnika to je u redu, to je za njega istina.
Pojam virtualne mašine, mikroasembler Po prvi put imamo razdvajanje korespodencije 1-1 sa mašinskim
instrukcijama. Činjenica da se neki delovi često upotrebljavaju, biće uočena i u okviru nekih drugih stvari:
- sa jedne strane imamo neku aritmetiku sa stepenom 2 - sa druge strane imamo neke rutine vezane za U/I.
Prešlo se na fazu gde se koriste dodatni U/I ureĎaji: - prvo bušene kartice H.Holerit
- za programiranje mašine za tkanje 19v.Ţakard - za popis stanovništva SAD ( IBM mašina za obradu podataka o
stanovništvu )
Pitanje: kako da se komunicira sa tom mašinom? Imamo stalno ponavljanje komande za unos podataka sa kartice, treba
nam da sa te mašine pročitamo jednu karticu i da broj koji je tamo šifriran prevedemo u binarni oblik, pa da ga smestimo u memoriju.
Naredbama obezbeĎujemo da se mašina pokrene i da pročita jedan broj, izdvojićemo to na jednom mestu kao deo programa i pozvaćemo
ga kao već napisan program. Pitanje: šta ćemo da uradimo?
IzvoĎenjem programa i ponovnim pozivanjem, dobijamo rutinu: 1. aritmetička – ( matematičke funkcije ) od njih nastaju viši programski
jezici 2. opsluţivanje perifernih ureĎaja – ( čitanje karaktera, kasnije
pokretanje štampača ) izdvajaju se u operativne sisteme.
-
Osnovne karakteristike viših programskih jezika
- dosta su bliski čoveku - raskinuta je korespodencij 1-1 i posti korespodencija 1-mnogo
( jedna naredba više programa razvijena je u stotinu naredbi – krupan kvalitativni skok )
- jako su kompleksni programski translatori - rešavaju se pitanja vavilonske kule ( učenje mnogo jezika )
Svaki procesor ima svoj mašinski jezik, dovoljno je znati jedan viši programski jezik, a on će se prebaciti na bilo koji procesor. Ukida se
direktna veza čovek – procesor, čovek ne mora ništa da zna o tom procesoru.
Kompajler je jako teško napisati! Npr: ako imamo 100 procesora i 1000000 programa: - 1000000 ljudi
treba da nauči 100 stvari - teţe je napisati kompajler nego naučiti asemblerl, ali onda
ovime rešavamo problem
- svaki kompajler za svaki procesor se radi jedinstveno - za učenje jednog asemblera potrebna je količina truda jedinice
jedan - ukupno 100000000, a pisanje kompajlera zahteva 100 redova,
hiljadu puta je teţe napisati - za 100 procesora po kompajleru, to je 100000 i nakon toga svi
programeri trebaju da ga nauče 2,3000000 100000000 : 100000x2,3
Rešava paradoks za pisanje kompajlera, rešavaju nas brige na kom procesoru radimo.
Digitalna logika:
Uvod: procesori računarske digitalne tehnike, ureĎaji sa mnogo
paradoksa i mnogo različitih stvari. Mi smo prema njima uţasno spori, oni su nama uţasno brzi (
iznenaĎeni smo našim gledištem na stvari ). Mi se baziramo na našem iskustvu i intuiciji, a to ne moţe da se odnosi
na procesore. Na izvestan način su to i najjednostavniji i najkomplikovaniji ureĎaji.
Pitanje: šta su ti elementi? Kod računara ukupan broj redova je veličine 1000000000. Iako je
napravljen od milijardu delova, svi su delovi jednaki. Zapravo jedan element je ponovljen milijardu puta tj jedan gradivni element imamo u
milijardu primeraka. Pitanje: sa jedne strane šta je gradivni element, kakve osobine ima,
kako da ga napravimo, kako da ga poboljšamo?
-
Pitanje: sa druge strane ako imamo te gradivne elemente kako da ih
sastavimo? ( da napravimo nešto pametno ) Razvoj računarske tehnologije zavisi od razvoja gradivnih elemenata (
dinamičko )! Na koji način se implementiraju zavisi od materijalnih zakona (
statičko )! Pitanje: šta je gradivni element? Arhitektura, kako sloţiti te delove? (
zavisi od zakona materijalne logike ) Klasična digitalna logika se bavi arhitekturom!
Počinje od malo višeg nivoa, ne spušta se nisko, zato ćemo da odemo u nazad.
Najpre ćemo govoriti o gradivnim elementima, u tim elementima je sadrţan sav napredak tehnologije i sve ono što se dešava na
računarima. Ljudi su delimično svesni, a delimično i nisu kako to u stvari ide. Radi se o tome da se upliće eksponencijalni razvoj. Razvoj
računara, hardvera je eksponencijalan.
Murov zakon: performanse računara se udvostručuju svakih 18 meseci.
Hijerarhijska organizacija: - softverski sistemi, drvo koje se grana sačinjeno od naredbi.
Kada smo uočili osnovne zakone uočimo i sam gradivni element. Pitanja: šta je gradivni element, koje su njegove karakteristike, šta
mora da ima, šta je uticalo na nastanak eksponencijalnog razvoja stvari kroz istoriju?
Nakon toga prelazimo na klasičnu digitalnu logiku.
Digitalna logika: - prekidači - statičko – exp. - arhitektura – dinamičko – log.
Prekidači detaljnije: gradivni ( prekidački ) element jeste u stvari
prekidač, sa specijalnim osobinama. Pod prekidačem podrazumevamo
prekidač za svetlo, ali on ne bi mogao da posluţi kao gradivni element, za izgradnju računara. Postoje i drugi prekidači ( generalna ideja je
široko rasprostranjena ). Treba nam prekidač koji se kontroliše onim što on sam kontroliše ( po
principu povratne sprege ). Da bi bila moguća povratna sprega prekidač treba da se kontroliše
onim što on sam kontroliše! Ako napravimo takav prekidač napravićemo i računar.
Sa gledišta arhitekture: imamo 100000 prekidača, a šta su oni to nas ne interesuje. Sam razvoj je išao donekle kvantitativno, a donekle
kvalitativno, imali smo napredak sa tačkama prekida. Pitanje: imamo li primer, moţe li se napraviti?
Prekidač moţe da prekida bilo šta ( struja ).
-
Pitanje: a koji bi to bio najjednostavniji prekidač?
Prekidač koji zadovoljava ove osobine naziva se relej. Relej je elektromehanički ureĎaj po principu magneta ( danas su većinom releji
sakriveni ).
Slika 3 ( ... )
Uglavnom imamo četiri pola, ali moţe biti i tropolni ureĎaj. Pitanje: da li struja od A prema B moţe da teče? DA!
Sa osobinom da kontroliše struju i da se kontroliše strujom, na taj način zadovoljava ove osobine.
Jedno je pitanje kako napraviti gradivni element, a drugo je kako ćemo to da ispovezujemo?
Oznaka: (...)
Pod kontrolom C struja teče izmeĎu A i B. Istorijske činjenice: računari su pravljeni na bazi releja, II svetski rat!
Vremenom se to kanonizovaloi postalo jasnije! Danas se generalno uzima ENIAC 1945. god za prvi računar, zvanično
je prihvaćeno da je to prvi računar, pre njega su bili pokušaji računara. Pitanje: da li moţemo napraviti drugi prekidač?
Da li moţe da se pronaĎe nešto suštinski drugačije? Kada je došlo do takvog kavalitativno pomaka, to je označavalo novu
generaciju računara. U tom kontekstu govorimo o 0 generaciji računara, baziranoj na relejima II svetski rat.
Pitanje: šta su osnovne osobine ovakvog releja? funkcioniše!
Sam ureĎaj je elektromehanički, ima veze sa strujom, ali se bazira i na mehanici. Osnovni problem je brzina jer je u pitanju mehanika
prekida. Granice idu od nekoliko puta u sekundi do nekoliko hiljada
puta u sekundi. Red veličine stotinak puta u sekundi u odnosu na čoveka je brz, ali je dosta ograničen. Stoga se tragalo za nečim novim.
Uzet je ureĎaj koji je već postojao: ELEKTRONKA ili elektronska cev ( korišćena u radio ureĎajima ).
Slika 4 ( ... )
Iz staklenog balona izvuče se vazduh, napravi se vakum i napravi se
elektroda koja otpušta elektrone, što se postiţe podgrevanjem ( ţarenjem ).
Sa druge strane se postavi pločica sa pozitivnim naponom i dolazi do privlačenja usled manjka elektrona.
-
Napravili smo električni provodnik brz ţica ( vrši f-je ţice ), u sredini se
postavlja mreţica, na toj rešeci dovodimo napon za kontrolisanje. Imamo dva kontakta izmeĎu kojih struja moţe da teče ili ne mora.
Zadovoljeni su uslovi definicije, pa imamo prekidač koji bi mogao da se upotrebi, ali je ovaj prekidač potpuno elktronski ( zavisi od tehnologije
izrade ), moţe da ide 1000000 puta u sekundi. Ovo je očito pogodniji prekidač.
Ovim nastaje revolucija, sklanjanjem releja i stavljanjem trioda dolazimo do I generacije računara (elektronke ). Ovime počinje I
generacija računara koja se priznaje. ENIAC 18000 elektronki – tihi napredak generacije.
Nastaje pojava tranzistora! Ideja prekidača moţe da se uradi na drugim principima. 1928. god.
razmatrana je ideja za novi prekidač, ali u praksi ovo nije zaţivelo. ( nije moglo tehnički da se realizuje )
Slika 5 ( ... )
Uzmimo poluprovodnik ( ploču ). Ideja je napraviti kanal sa viškom
elektrona i napraviti još jedan identičan kanal. Oni nam sluţe za provoĎenje struje. IzmeĎu dva kanala ne mloţe da teče struja.
Stavljanjem izolatora sa metalnom kapicom ( sa manjkom elektrona ) omogućen je protok struje.
PronaĎeni su prekidači na nekom drugom principu
Slika 6 ( ... )
1948. god napravljene su tri kockice od germanijuma. Od tranzistora od tri kockide moguće je napraviti prekidač. Iz nekih razloga nije
moglo da se komercijalizuje. Sredimom 50. god krenula je proizvodnja
i došlo je do revolucionarnog pomaka. Dobili smo tranzistor koji je 1000 puta manji od prethodnih po zapremini ( nema zagrevanja ).
f-je vrši direktno, a imamo i hiljadu puta manju potrošnju struje ( pouzdaniji su i duţe traju ).
Ukupno poboljšanje meri se i do nekoliko miliona puta. Zamenom elektronki sa tranzistorima dobijamo kvalitativni skok, pa
moţmo govoriti o II generaciji računara ( od sredine 50. god ). Obično se prihvata da postoje još III i IV generacija.
Ne radi se o suštinski novim gradivnim elementima. Do tada se baziralo na novom tipu prekidačkih elemenata koje ovde u trećoj
generaciji nemamo. III generacija još se naziva i modularna generacija.
-
Ne trebaju na prekidači kao pojedinačni elementi već kao celina. Na taj
način dobijamo uštedu jer se sve u fabrici uradi na jednoj pločici ( tehnološki oblik – minimizujemo ih i ispovezujemo ih u fabrici). Ovaj
način organizacije doneo je kvalitativni pomak koji zasluţuje da se zove novom generacijom, ali se prekidački elementi nisu promenili što
predstavlja III generaciju računara ( rane 60. god ). Kasnijih 60. god i 70. god dolazi i IV generacija, V.L.S.I.
Najbitnije je da se vraća na staru ideju tranzistora, da je on dvodimenzionalan ( planaran ). Treća dimenzija je toliko tanka da se
zanemaruje. To mu omogućuje da se pravi fotografskim postupkom, na taj način se dolazi do kvalitativnog skoka, gde se raskida veza 1-1
sa prekidačkim elementima i pravimo ih sve odjednom. Ponavljanjem procesa dobijamo analogiju ( kvalitativna razlika ).
Suština IV generacije: svi elementi se prave odjedanput! Na ovaj način objašnjavamo Murov zakon.
Ustalilo se da se generacije smenjuju sa nekim periodom od neki 5-10
god. Desilo se to da sledećih generacija nema, od kasnih 60. god pa do sada s ništa nije promenilo. Murov zakon nije zaustavljen,
nekadašnje tihe ( unutrašnje ) promene sada postaju burne. Faktor je miniturizacija!
Poslednjih 40. god se minijaturizacijom odrţava poredak. Zvanično se priznaju četiri generacije računara, često se priznaje i 0 generacija
računara, a mimo toga postoje i druge podele. Def: generacije računara se definišu na osnovu prirode prekidačkih
elemenata. Postoji svetski priznati pokušaj u okviru koga se spominje V generacija
računara. Ušlo je u literaturu, ali u ovu kategorizaciju ovde ne pripada. U vreme kada nije bilo smene generacija pojavila se priča o V
generaciji računara, pa se verovalo da će to da bude softverska revolucija negde krajem 60. god, a bazirana je na veštačkoj
inteligenciji i prolog jeziku. ( još jedan element kao argument V
generacije: 2000000 dolara ) Realnost su prve četiri generacije, ali moţe i da se uradi ekstrapolacija
( unazad ) nečega što se nije desilo, a moglo je. Pitanje: koliko unazad moţemo da idemo?
Sa elektronkama je moglo da se ide 20-30 god unazad. Moţemo zamisliti računar na nekim drugim principima, ne mora biti struja u
pitanju, moţe biti i voda. Napravili smo prekidač koji kontroliše ono čime se sam kontroliše.
Slika 7 ( ... )
Prekidač na principu vode sigurno je moguć. Ta tehnologija koja moţe
da napravi česmu, moţe da napravi i računar. Računara slične
-
današnjim mogli smo da pravimo i u starom Egiptu, ne nedostaje
tehnologija nego znanje. Uvod: sve se u stvari svodi na logičke funkcije.
Def: logičke ( buleanske ) f-je – imamo pojam preslikavanja, stim što imamo dvočlan skup. Imamo ograničenje: domen i kodomen su
dvočlane f-je ( f-je sa dva elementa i kao rezultat imaju dva elementa ).
Pojmovi: - detektovanje - merenje
Računar – kao prvenstveno binarni ureĎaj je jedan buleanski ureĎaj, barata samo sa detektovanjem tj barata samo logičkim f-jama.
U računaru sem buleanskih f-ja ne moţe biti ništa drugo. Pitanje: koliko ima logičkih f-ja jedne varijable, a koliko ima logičkih f-
ja dve varijable? Ako imamo buleansku f-ju od K varijabli, elemenata moţe da bude
dva.
Pitanje: za K varijabli koliko imamo mogućih ulaza? Varijacije sa ponavljanjem!
Br. Mogućih ulaza je 2k , a ako ima dve varijable mogući ulazi su:
Tabela 1
Pitanje: šta je buleanska f-ja na dve varijable kada ulazima dodelimo nekakve vrednosti f-je sa dve varijable?
Varijacije sa ponavljanjem! Broj mogućih ulaza je 2(2k)
Od K ulaznih argumenata ima 2(2k) mogućih buleanskih f-ja. U praksi:
Tabela 3 i 4
Vraćanje na prekidače: sve se sastoji od jednog gradivnog elementa ( prekidač )
Praktično: moramo malo da odstupimo ( dozvoljeno odstupanje ), ukoliko imamo dva oblika prekidača ( modifikacija ), neke stvari su
onda mnogo lakše.
Slika 8 ( ... )
Bitno je da je uslov zadovoljen. Pitanje: da li ovo mora ovako da bude, u čemu je modifikaacija?
Od jednog gradivnog elementa dobijamo dva, fizička modifikacija je minimalna. Ovo jeste jedan gradivni element, ali po načinu na koji radi
radi se o dva modela gradivnog elementa:
-
- kada nema kontrole ( struje ) ova dva prekidača provode struju
- kada ima struje onda se razdvoje i ne provode struju
Oznaka: (...)
Imamo dve varijante prekidača: - onda kada je prekidač aktivan u stanju kontrole, ne provodi struju
- onda kada je prekidač ne aktivan u stanju kontrole, provodi struju
Prelazimo na realne logičke f-je Interesantana je negacija!
X f(x) implementacija je trivijalna ( kada doĎe do ..., onda dodeljujemo fizičke veličine )
Kroz istoriju smo imali: (...) Oznaka: (...)
F-ja koja radi inverziju koristeći gradivne elemente koje imamo je
nešto komplikovanija:
Slika 9 ( ... )
Poveţimo dva prekidača na ovakav način: - ako stavimo da je x=1, onda je ovo ... prekidač koji prekida, a ovo ... prekidač koji propušta
struju, kada mu dovedemo napon - ako stavimo da je x=0 onda je ovo ... prekidač koji prekida, a
ovo prekidač koji propušta struju kada mu dovedemo struju. Na ovaj način dobili smo f-ju koja ima smisla, tj logičku f-ju negacije
koja se naziva inverter ( obrtač )
Simbol: (...)
Hteli bismo da napravimo f-je AND i OR, onda f-je moraju da imaju
povezanost sa serijskom vezom prekidača. AND – kada svi propuste struju, samo tada moţe da proĎe ( teţak
prolazak ) ...
Slika 10 ( ... ) OR – ako svi preseku struju, samo tada nećemo proći ( teţak ne
prolazak ) ...
Slika 11 ( ... )
-
Slika 12 ( ... )
Dva standarda: 1 ako ţice nisu spojene ...
ako ţice jesu spojene ... 2 ako ţice nisu spojene ...
ako ţice jesu spojene ... kombinujemo: ...
Pitanje: kako moţemo proveriti šta kolo radi?
Popunjavanjem tabele, dobijamo rešenje. Ušteda! ...
Skraćujemo diskusijom i izdvajanjem karakterističnih slučajeva: Analiza donje grane ...
Analiza gornje grane ... Spajanjem gornje i donje grane dobijamo ...
Slika 13 ( ... )
Da li je ovime dobijena funkcija? Ako smo je dobili, koju smo dobili?
Analiza ... - istaknut slučaj
Kroz paralelne grane teško je ne proći.
Simetrično: Analiza gore pokazuje ... - istaknut slučaj
Kroz serijske grane teško je proći.
Spajanjem ova dva imamo: ... (izlaz je tablica funkcije) Ovo jeste funkcija!
- funkcija f7(x,y)=OR - funkcija f8=f7 - negirana funkcija ili! NOR
Na taj način imamo:
1. slika INVERTER ( 2 prekidača )
2. slika NAND ( 4 prekidača ) 3. slika NOR ( 4 prekidača )
Iz ova tri moţemo dobiti:
4. slika iz 2. i 1. ( 6 prekidača )
5. slika iz 3. i 1. ( 6 prekidača ) Izvedene funkcije
-
Prve tri proglasimo aksiomama i onda dalje izgraĎujemo ostale. Dalje radimo standardnu digitalnu logiku i izgraĎujemo nove elemente!
( Korišćenjem od toga što imamo i što razumemo napravićemo nešto novo! )
Od funkcija dve varijable napravili smo 4, ima ih ukupno 16.
Sledeća je XOR
Slika 14 ( ... )
Neka je: ...
Pomoću 4 NAND-a dobili smo XOR!
6. slika XOR ( 16 prekidača )
Matematička logika i fizička implementacija-ista stvar!
Predstavljanje formulom:
Slika 15 ( ... )
1. f(x,y) = a’b’
2. a = x’c’ 3. b = y’c’
4. c = x’y’
Uvrštavanjem imamo: 2.i3. 1.
4. 5.
5. 6.
Formula 6. opisuje povezivanje fizičkih komponenti!
Kako ćemo to da proverimo?
Dokazati: formula jednaka funkciji
Jedna funkcija moţe da se predstavi na razne načine! Najstandardniji način kao NKF, NDF
abc + xyz + .......... NDF (a+b+c)*(x+y+z) ........... NKF
-
Uzmemo sva mesta gde funkcija ima 1, pa naša formula treba da ima
1 na tim mestima, pravljenjem sabiraka.
Kada su ulazi NDF (XOR) = x’y +xy’ tada je ovo ekvivalentno tablici Nezvanična definicija funkcije XOR!
Treba dokazati f= NDF(XOR) Koristićemo DeMorganove formule:
1. u’v’ = u’+v’
2. x’’ = x 3. x * x’ = 0
krećemo od 6. ...
Pitanje: Zašto smo izabrali baš njega?
Krenuli smo od logičkih funkcija i stigli do ureĎaja za sabiranje!
Procesoru je dovoljno da sabira i uporeĎuje sa nulom. Sabiranje u tom smislu je ključna situacija!
Uvod: ( Predrasude! )
Dekadni sistem je zgodan, ali objektivna stvarnost to ne podrţava.
Oblasti: - osnovne računske operacije - matematička logika
Pitanje: Kako stvari objektivno izgledaju?
Sve što moţemo da uradimo u računaru je matematička logika. Uvek se radi isključivo logičkim funkcijama, korišćenjem posrednika. (
Sabiranje velikih brojeva svodi se na sabiranje cifara ) Sve što moţemo da uradimo u dekadnom, moţe se uraditi i u
binarnom sistemu!
Čim imamo binarni sistem odmah imamo Buleanske funkcije. Od ulaza 0 i 1, formiramo izlaze koji mogu biti samo 0 ili 1.
Sabiranje će biti sistem od 2 logičke funkcije:
x y s p
0 0 0 0 0 1 1 0
1 0 1 0 1 1 0 1
Sabiranjem binarnih cifara moţemo sabrati duge binarne brojeve, dugi
binarni brojevi su ekvivalentni dekadnim...
-
Dovoljno je pogledati tablicu i dobijamo funkciju AND i XOR.
x y f(x)
0 0 0 0 0 1 1 0
1 0 1 0 1 1 0 1
XOR AND
Da bismo sabirali ne treba nam aritmetika, već su dovoljne Buleanske funkcije.
Fizička implementacija:
Slika 15 ( ... )
7. slika - novo kolo za sabiranje ( 2 prekidača ) Sastoji se od XOR-a i AND-a
Pitanje: Naziv?
Sabirač! MeĎutim, sabiramo proizvoljne brojeve, uzmemo 2 cifre generišemo
rezultat itd. Treba nam ureĎaj koji sabira 3 cifre jer uzimamo u obzir prenos.
Ako znamo da saberemo 2 broja zmano da saberemo i 3 jer je sabiranje asocijativno.
(a+b)+c = a+(b+c)
x x+c
Sabirač mora da se sastoji od 2 elementa pa je ovo polusabirač! Oznaka: slika - polusabirač
Sabiranje:
Slika 16 ( ... )
Osnovna razlika izmeĎu polusabirača i sabirača?
Polusabirač – kombinatorno kolo koje sabira 2 binarne cifre uz prenos. Sabirač – kombinatorno kolo koje sabira 3 binarne cifre uz prenos.
Tabela
-
Logička funkcija 1 varijable ima 4 funkcije
Logička funkcija 2 varijable ima 16 funkcija Buleanska funkcija 3 varijable ima 22n, 256 funkcija
S2=S p p1p2
0 0 0 1 1 0 OR
1 0 1 XOR Svejedno je da li je OR ili XOR. Kombinacija 1 1 se ne pojavljuje.
Oznaka: slika - pun sabirač ( sabira 3 binarne cifre )
Moguće je napraviti proizvoljni sabirač 8-16-32 bitni!
Slika 17 ( ... )
Imamo: kolo koje radi nešto korisno, napravljeno od 1600 prekidača, sa jedne strane kompleksno, a sa druge jednostavno.
- Kombinatorna kola predstavljaju implicitne logičke funkcije koje rade izračunavanja ( izlaz zavisi id ulaza )
- Memorijska kola čuvaju izračunavanja ( izlaz ne zavisi od ulaza ) Kombinatorna i memorijska kola se udruţuju u sekvencijalna kola.
Dekoder je jaki često korišćeno kolo za dekodiranje memorijske adrese.
Adresa ( binarni broj ) Dekoder je kombinatorno kolo koje ima n- ulaza i 2n- izlaza, gde je
aktivan tačno jedan izlaz čiji redni broj odgovara binarnom broju na ulazu.
ulaz - izlaz
1 - 2
2 - 4 3 - 8
4 - 16
10 - 1024
Pitanje: kako izgleda dekoder 38?
Slika 18 ( ... )
7-će biti izabran kada mu damo cifru rednog broja
-
Šta god da uradimo, radimo sa Buleanskim funkcijama. I ovo je jedna
Buleanska funkcija sa 3-ulaza, sistem od 8 funkcija.
Dekoder 3-8 :
Tabela ...
Svodi se na Buleansku funkciju!
I0,...,I7 256 Buleanskih funkcija - 3 varijable I7-nam je poznata : konjukcija sa 3 ulaza ( AND )
Slika 19 ( ... )
I kolo moţe da se modifikuje, da ne bude prepoznavač!
I kolo je prepoznavač tri jedinice!
Dodavanjem invertera I kolo prepoznaje sve!
Dizajn: - ulaz sa leve - izlaz sa desne
- kontrole po vertikali ( sa komplementima )
Slika 20 ( ... )
Ako je 1 onda vaţi formula 1*x=x Ako je 0 onda vaţi formula 0*x=0
10. slika - Dekoder
Da bi ovo bio klasični dekoder, generalno moţe da znači bilo šta. (
neku cifru dekodira u bilo šta )
Često se koristi:
Numerički displej ( standardni displej na pricipu piksela )
Sedmosegmentni displeji
- iz električnog ureĎaja izlazi bcd kod dobijamo 4 bita koji predstavljaju dekadne cifre.
Slika 21 ( ... )
Dekoder prevodi u oblik koji ţelimo! BCD to sedmosegmentni: ( formiramo tabele )
-
Ulaz: u0,u1,u2,u3
Slika 22 ( ... )
Tabela
Na osnovu tabele povezujemo logičke funkcije!
Izgenerišimo kad treba da svetli a U ovoj tabeli ima više 1 nego 0, pa je bolje pratiti
jedinice
Slika 23 ( ... )
Ovo do sada su bila kombinatorna kola, a radili smo i memorijska kola.
Pitanje: šta bi bilo osnovno memorijsko kolo?
Bila bi jednobitna memorija.
Slika 24 ( ... )
Da bi bilo memorijsko kolo, treba da pamti pa nam treba kontrola. Kod memorijskog kola izlaz ne zavisi od ulaza. Memorijsko kolo često se
pravi malo komplikovanije! UvoĎenjem 2 kontrole rešavamo problem:
Slika 25 ( ... )
Linija enable omogućava da se bilo šta radi
Oznaka: signal R – read kad je 0 neaktivan W – write kad je 1 aktivan
Takvi signali su označeni nadvučenom crtom. ( 2 signala se dele kosom crtom )
Sve se uvek radi u odnosu na procesor!
In - u CPU Out - iz CPU
Read - CPU čita Write - CPU piše
Memorija se pravi jednim sklopom koji je izmišljen za neke druge
svrhe. FLIP - FLOP ( bistabilni elementi )
-
Jednobitna memorija FLIP-FLOP bistabilni elementi
- 50, 60, godina f.f. su se ugraĎivali u elektronska kola.
Pitanje: kako izgleda flip-flop?
2 NAND-a unakrsno povezana povratnom spregom.
Slika 26 ( ... )
Pitanje: kako se ovo ponaša?
Liči na kombinatorno kolo.
Pitanje: moţe li ovo ovako? Da! Pitanje: šta će se desiti ako sa 1 preĎemo na 0?
Kolo je promenilo stanje
Moţemo vratiti vrednost na 1 i ništa neće da se Promeni, jer je povratna sprega zablokirala!
Izlaz kola ne zavisi od ulaza jednoznačno
Za iste ulaze imamo dva različita izlaza!
Ovo kolo ima memorijsku funkciju ( zavisi od ulaza u prošlosti ) Simetrično i za donju granu imamo: ...
Odavde dolaze:
- izlazni signali: 0 Q’
- ulazni signali: S’ R’ ( nešto rade! )
S – set - postavljanje ( 1 ) R – reset - inicijalizacija ( 0 )
Slika 27 ( ... )
Ovakvo kolo se zove RS ( SR ) ili FLIP-FLOP.
To je element memorijske jedinice, najjednostavnije kolo iako nije u potunosti memorijska.
Sve ovo moglo je da se uradi i simetrično: umesto NAND-ova moţemo uzeti i NOR-ove pa imamo:
Slika 28 ( ... )
NOR-ovi
( aktivno visoki-normalno stanje na nuli )
-
Pitanje: kako sada od ovoga napraviti memoriju? Problem rešen inverterom!
Uveden je vići problem! Ukinuta je melmorijska funkcija!
Ovo postaje kombinatorno kolo, šta je na ulazu to je na izlazu.
( menjanjem ulaza, menja se i izlaz )
Pitanje: šta moţe da se uradi da se ovaj problem reši?
Slika 29 ( ... )
C=1 ovo se ponaša kao normala SR flip-flop S i R treba drţati na 0.
Pitanje:Šta ako je C=0? Ovo kolo prestaje da prima spoljne ulaze!
Sa ovim C-om kontrolišemo ovo kolo!
Slika 30 ( ... ) D flip-flop 1 bitna memorija
Kada je D = 1 - set ( setuje )
Kada je D = 0 - reset ( resetuje ) dok god je C = 1
Kada ţelimo da zapamtimo, onda je C = 0
( imamo mogućnost kontrole pa je ovo potpuni memorijski element )
Problem?
Imamo. Kolo sa 2 ulaza, imamo 4 ulazne kombinacije, 3 smo razmotrili, a 4. je
nedozvoljena.
1 - 1 ništa se ne dešava 1 - 0
0 – 1 0 – 0 oba izlaza su 0 ( nedozvoljeno stanje ) 1 – kasni
Ovo je opasno stanje jer Q i Q’ ne mogu biti jednaki! ( sobzirom da su
komplementarni, dolazi do kratkog spoja ) 4. stanje je i logički i praktično nedozvoljeno.
-
Pitanje: šta tu moţe da se uradi?
Moţe da se dodefiniše doraĎivanjem FLIP-FLOPA! Uzmemo 2 FLIP-FLOPA
Slika 31 ( ... )
Ovo je i dalje jedan flip-flop, ali sa dobrim svojstvima. Podatak prima
sa zadrškom. ( jednostepeni prenos postaje dvostepeni ) Kada C povučemo na 1 prvi flip-flop radi, a drugi ne radi. Nakon toga
prvi ne radi, a drugi proradi. To nam omogućuje da napravimo povratnu spregu. Na početku pamti interno, prikazuje ga na kraju.
Ovaj tajming se pokazuje, jako korisnim. Pa imamo MASTER – SLAVE FLIP-FLOP
4.funkcija je obrtanje signala!
Imamo:
1 - ne radi ništa 2 - postavi se na 1
3 - postavi se na 0 4 - promeni se
Pitanje: kako to izgleda?
Tabela ...
Ovakav flip-flop je zvanično j – k flip-flop.
Pitanje: kako ovo moţe da se napravi?
Slika 32 ( ... )
( kako su istovremeno aktivni izazivaju promene )
Ovaj Data flip-flop mora biti tipa, jer bi došlo do oscilacija!
Napomena: sekvencijalno kolo
Slika 33 ( ... ) ( 16 prekidača ) 1 bajt
Pitanje: šta ovo kolo radi? Tablična analiza:
Tabela
Tabele su ekvivalentne!
-
Imali smo: - SR
- D m/s - SK
- T - tabliranje
Moţemo napraviti posebnu vrstu flip-flopa koji radi samo tabliranje!
Slika 34 ( ... ) Ne isplativi su u praksi!
Sekvencijalna kola mogu biti 2 tipa - asinhrona
- sinhrona Asinhrona – po fazama ( potreban spoljni davač teksta )
Najjednostavniji signal sat bio bi:
Slika 35 ( ... )
Karakteristike: - amplitude
- frekvencija f = 1/t HZ - odnos 2 faze u jednoj periodi ( aktivna pasivna )
A. – P. 50 – 50
Generalno u svakom klok signalu teţimo ka tome. Remećenjem odnosa, nuţno usporavamo kolo!
U praksi signal je dosta zaobljeniji, ima vreme uspona, i vreme padanja.
Slika 36 ( ... )
Ovakav jednostavan signal sata moţe da posluţi za ovakva kola.
Dvofazni sat: - 2 faze - rade jedna u protiv faze druge
Slika 37 ( ... )
Sobzirom na ( ... ) dolazi do preklapanja signala. Signali imaju aktivne
i pasivne faze, sa zahtevom da se aktivne faze ne poklapaju!
Def: dvofaznih neprekidnih aktivnih faza sata
Pitanje: kako to ostvarujemo? Kada su aktivne faze uske, onda se ne preklaraju.
-
Slika 38 ( ... )
Nema preklapanja!
Bilo koji signal sat se dobija iz analognog kola koje se naziva kvarcni
oscilator. Precizni oscilatori se prave od kvarcnih kristala!
Naivno:
Propuštanje kroz jedan gejt izaziva kašnjenje pa dobijamo f2 Kao zakasneli f1 pa imamo preklapanje faza.
Slika 39 ( ... )
Ovo sigurno ne radi!
Pitanje: kako se pravi nepreklapajući sat? Sa flip-flopom.
Slika 40 ( ... )
Posmatrajmo signale f, f1, f2
Slika 41 ( ... )
Prolaţenje signala kroz bilo koji gejt zahteva vreme!
Uzećemo vreme prolaska kroz: 1 gejt b 2 gejta 2b
3 gejta 3b
Analiza tajminga:
Nakon nekog vremena signal f odlazi na 0. Nazavisno od bilo čega drugoga ovo radi!
Jedan signal se menja nakon apsolutnog vremena drugog. Na taj način dobijamo dvofazni sekvencijalni sat.