Bez obzira na to što naslov ovog teksta možda najavljuje neku naučnu fantastiku (stonoga na struju?!), koja je u principu verni pratilac astronomske nauke, ovaj tekst biće ipak mnogo realističniji i savremeniji: ovde ću vam ispričati kako mikroprocesori i mikrokontroleri svakodnevno, nonstop melju enormne količine nula i jedinica, čineći naš život lakšim i jednostavnijim. Biće priče o tome kako ove „stonoge na struju“ izgledaju spolja, kakve imaju priključke, a ako ste se ikada zapitali zašto jedan kilobajt nema tačno hiljadu bajtova, spreman sam da vam i to objasnim.

Počnimo!

Kako je sve počelo

Sve to počelo je uspešnim povećanjem broja tranzistora, tih elementarnih sastojaka svakog digitalnog računara, koji su se mogli ugraditi u jedno integrisano kolo. U jednom određenom trenutku (bilo je to 1971. godine), Intelov projektant po imenu Marcian Hoff uspeo je da konstruiše prvi mikroprocesor. Bio je to četvorobitni Intel 4004, prvi komercijalno dostupan mikroprocesor. Reč „četvorobitni“ znači da je u jednom trenutku mogao da „povuče“ iz memorije četiri bita odjednom. (Današnji savremeni pentijumi u stanju su da barataju mnogo većim nizovima bitova, 32 ili 64, ali o tom-potom.)

Ispostavilo se da je ideja o konstrukciji prvog mikroprocesora bila zaista revolucionarna. Vrlo brzo došlo je do prave eksplozije u proizvodnji mikroprocesora: odmah potom pojavio se osmobitni 8008, potom 8080, jedan izvanredan mikroprocesor firme Zilog sa oznakom Z80, a potom – pored ostalih – i dva „bliska elektronska rođaka“, 8086 i 8088. Ova poslednja dva direktni su preci pentijuma koje danas svi koristimo.

Slika 1
Slika 1: Intel 4004 – mikroprocesor kojim je sve počelo

Nešto o terminologiji

Postoji više vrsta digitalnih integrisanih kola. Mikroprocesori i mikrokontroleri su međusobno srodni, i u principu teško je jasno razgraničiti šta je to mikroprocesor, a šta mikrokontroler. Mada ne postoji tačna definicija jednog ili drugog, obično se smatra da je mikroprocesor integrisano kolo koje sâmo izvršava neke naredbe, a mikrokontroler već ima još neke dodatne podsisteme, uglavnom namenjene komunikaciji sa ostalom elektronikom na kojoj su postavljeni. U ovoj priči koristiću ravnomerno jedan i drugi pojam, i možda ću ga skratiti samo na „procesor“, ili „kontroler“. Razlika nije toliko bitna.

Morfologija jedne „stonoge“

Proučavaćemo mahom Zilogov mikroprocesor Z80, jer je jednostavan za analizu, a pri tome i prilično moćan. Imaćemo na umu da se priča o Z80 može primeniti na praktično bilo kakav drugi mikroprocesor: time što proučavamo jedan od njih, savladaćemo lako i sve ostale.

Kada pogledate mikroprocesor Z80, možete videti da on zaista podseća na kakvu stonogu: ima crno telo i nekoliko desetina nožica, pinova. Njih zaista ima mnogo, ali su srećom grupisane u četiri grupe; na taj način su pogodnije za upoznavanje. Te četiri grupe su:

1.     magistrala podataka;

2.     adresna magistrala;

3.     kontrolno-upravljački vodovi;

4.     ostali pinovi.

Analiziraćemo ove pinove grupu po grupu, ali ćemo prvo naučiti šta su to binarne nule i jedinice.

Svet nula i jedinica

Postoje dva razloga zašto procesor koristi binarni sistem, brojni sistem koji ima samo dve cifre – nulu i jedinicu. Prvi je razlog elektroničke prirode: tranzistori od kojih je sastavljen procesor tako funkcionišu da na svojim izlazima mogu imati ili visoki napon (od tri do pet volta) ili nizak napon (0,2 ili 0,3 volta – zavisno od konstrukcije tranzistora). Nekako je prirodno da se stanju visokog napona pridruži simbol 1 (stanje logičke jedinice), a stanju niskog napona – simbol 0 (stanje logičke nule).

Drugi je razlog matematičke prirode: baratanje nulama i jedinicama – od strane mikroprocesora – je naprosto prirodno! U binarnom sistemu brojne operacije savršeno se izvršavaju, bez obzira na to što su te operacije često neodgovarajuće za ljude.

Dalja analiza, svakako veoma atraktivna i zanimljiva, mogla bi nas odvesti suviše mnogo „u širinu“, pa ću je na ovom mestu pauzirati – do nekog drugog eventualnog članka.

Pogodnom spregom dva tranzistora dobija se elektronsko kolo koje ima komplikovan naziv: bistabilni multivibrator sa kolektorskom spregom, ili, jednostavnije – flip-flop. Bez obzira na to što ima više vrsta ovih kola, svima je zajedničko to što su u stanju da memorišu-upamte stanje koje odgovara jednoj logičkoj nuli ili jednoj logičkoj jedinici. Flip-flop može na svom izlazu imati ili stanje visokog napona (koje odgovara logičkoj jedinici) ili stanje niskog napona (koje odgovara logičkoj nuli). Ova memorisana vrednost, odnosno ovo memorisano stanje flip-flopa, ono je što nazivamo jednim bitom – najmanjom količinom informacije.

Sumiraću prethodni pasus: jedan bit predstavlja najmanju količinu informacije, i može imati ili vrednost logičke jedinice (visok napon), ili vrednost logičke nule (nizak napon).

Kako funkcioniše jedan procesor?

Vrlo jednostavno: iz spoljašnje memorije „uvuče“, učita jednu naredbu, po potrebi još neki podatak, eventualno u spoljašnju memoriju upiše rezlutat i – pređe na sledeću naredbu! Verovali ili ne, sve što mikroprocesor radi jeste to da nešto učita iz memorije, to obradi, vrati nazad i nastavi dalje. Ogromna većina mikroprocesora funkcioniše baš tako!

(Naravno, i od ovog mehanizma postoje brojna odstupanja i modifikacije, ali za potrebe ovakvog uvodnog teksta ovakvo rezonovanje sasvim je na mestu.)

Magistrala podataka

Magistrala podataka (engleski izraz je data bus) je skup od nekoliko nožica na mikroprocesoru, preko kojih mikroprocesor komunicira sa spoljašnjom memorijom ili nekim dodatnim hardverom. Mikroprocesor ne uzima iz memorije bit po bit, jer bi takav mehanizam bio previše spor. Umesto toga, on u jednom potezu iz memorije učita nekoliko bitova odjednom. Pomenuti Z80 ima osam nožica na magistrali podataka, i on u jednom zahvatu iz memorije učita osam bita; a ako je potrebno da rezultat naredbe vrati u memoriju, onda upisuje svih osam bita – takođe odjednom.

Broj linija (pinova, nožica, žica, kako god) na magistrali podataka određuje sa koliko bitova barata jedan procesor. Z80 ima osam pinova na magistrali podataka, pa se za njega kaže da je osmobitan. Stariji pentijumi imali su magistralu podataka od 32 nožice, pa su bili 32-bitni. Sada se koriste i 64-bitni pentijumi, koji imaju – pogađate i sami! – 64 pinova na magistrali podataka.

„Širina“ magistrale podataka je ono što određuje koliko je kontroler „bitan“!

„Širina magistrale podataka“ još se naziva i memorijskom rečju. Prema tome, Z80 ima memorijsku reč širine 8, i ovakva grupa od osam bita ima i svoje ime: osam bitova, grupisanih na ovaj način je ono što se naziva bajt (byte).

Primetimo da je magistrala podataka dvosmerna, jer procesor posredstvom nje može kako da upisuje, tako i da „čita“. S druge strane, adresna magistrala – sledeća bitna stavka – jednosmerna je.

Adresna magistrala

Adresna magistrala (ili address bus) služi da od silnih bajtova koji se nalaze u memoriji izdvoji jednu grupu-bajt koji procesor treba da „srkne“ iz memorije, ili da u nju „pljucne“.

Kako izgledaju bitovi u memoriji? Kao prvo, grupisani su u grupe od po osam bita, koje zajedno čine jedan bajt. Bajtova često ima veoma mnogo (bitova – osam puta više!), i ne pristupa se svima njima odjednom. Svaki bajt ima svoj redni broj, koji počinje nulom, a završava se poslednjim bajtom koji je moguće dohvatiti. Taj redni broj naziva se adresa; otud adresnoj magistrali i potiče naziv.

Intuitivno je jasno da što ima više linija na adresnoj magistrali, to se može pristupiti većoj količini memorije. Razmotrimo malo detaljnije ovo tvrđenje.

Kada bismo imali jedan jedini vod na adresnoj magistrali, mogli bismo da dohvatimo tek dva bajta: jedan na adresi nula, drugi na adresi jedan. Naime, na jednom jedinom vodu može da postoji ili jedna nula ili jedna jedinica, kojima odgovara ili adresa nula ili adresa jedan.

Sa dve žice na adresnoj magistrali mogli bismo da pokupimo četiri bajta, jer postoje četiri varijacije koje se mogu formirati na dvožičnoj adresnoj magistrali: to su 00, 01, 10, 11, odnosno adrese 0, 1, 2, 3 – ukupno četiri.

Kada bismo na adresnoj magistrali imali tri voda, postojalo bi osam varijacija: 000, 001, 010, 011, 100, 101, 110, 111; dakle, mogli bismo da adresiramo osam bajtova.

Da li naslućujete način na koji se formiraju ove varijacije? U opštem slučaju, kada bismo imali n vodova na adresnoj magistrali, mogli bismo da adresiramo 2n bajtova.

U praksi, Z80 ima šesnaest linija na adresnoj magistrali, pa može da adresira maksimalno 216 = 65536 bajtova. Prvi bajt bio bi na adresi nula, a poslednji na adresi 65535. 

To su nekada bile velike brojke, ali ima i drugih mikroprocesora. Pomenuti predak pentijuma, Intel 8086, imao je dvadeset linija na adresnoj magistrali, pa je mogao da adresira čitav megabajt podataka.

Na ovom mestu napravićemo digresiju, zapitavši se zašto jedan bajt nema tačno hiljadu bajtova.

Broj vodova na adresnoj magistrali je prirodan broj; naprosto, ne možemo imati 7,12 ili 14,3 adresnih linija. Ako bismo imali deset adresnih linija, mogli bismo da adresiramo 210 = 1024 bajta. Ova brojka jeste približno jednaka broju 1000 (kojem odgovara prefiks „kilo“), pa se samo približno može smatrati da u jednom kilobajtu ima 1000 bajta (a u stvarnosti ima ih 1024). Ovo je minorno odstupanje, koje ranije nije zadavalo glavobolje ljudima.

Možemo smatrati i srećom što je 1024 približno jednako 1000. 1024 je broj dva podignut na deseti stepen; pogledajte koliko iznose najbliža dva „kandidata“: 29 = 512, 211 = 2048. Da je dva na deseti stepen jednako npr. 1800, nisam siguran da li bismo tu brojku nazvali kilobajtom – pretpostavljam da bismo potražili neki drugi naziv, bez prefiksa „kilo“!

Međutim, računari se stalno usavršavaju, pa kada dođemo do jednog megabajta (220 bajtova) ova razlika počinje da biva veća i da „ide na živce“. Ali prava glavobolja nastaje kod tvrdih diskova, koji imaju silne gigabajte i terabajte kapaciteta, prema proizvođačima, a u stvarnosti njihov kapacitet je netrivijalno manji… (Obaška što diskove treba particionisati i formatirati, pri čemu opet nestaje značajan procenat „nominalnog“ kapaciteta.)

Kontrolno-upravljački i ostali pinovi

Kontrolno-upravljački vodovi nisu grupisani u magistrale, već svaki od njih ima posebnu funkciju, koja zavisi od vrste mikrokontrolera. Npr. kod Z80 tu su, kao vrlo važni, izlazi za selektovanje pristupa memoriji ili ulazno-izlaznim uređajima, ulazi za maskirajući i nemaskirajući prekid, ulaz za kristalni oscilator koji pogoni celu „stvar“, nezaobilazni pin za resetovanje i slični.

Poneki mikrokontroleri opremljeni su i naprednijim stvarčicama poput analogno-digitalnog konvertora, a može se tu naći još štošta.

Naravno, da bi računar radio neophodan je i izvor struje (preciznije – električne energije), pa zato postoje ulazi za napajanje Vcc i uzemljenje GND.

Slika 2
Slika 2: Šematska oznaka mikroprocesora Z80 sa obeleženim izvodima

 Slika 3

Slika 3: Mikroprocesor Z80 u svom prirodnom okruženju

Multipleksiranje

U rečniku mikroprocesorskog programera, multipleksiranje se odnosi na to da pojedini pinovi mogu da imaju višestruku ulogu. Npr. četvorobitni 4004, onaj koji je i započeo celu priču o procesorima, imao je četiri pina na magistrali podataka – pa je bio četvorobitni – ali je tu magistralu delio sa adresnom magistralom (po principu „malo adrese, malo podaci“). Čak ni adresna magistrala sa svoja četiri voda nije bila u „jednom komadu“, već je prilikom pristupa memoriji procesor u tri „navrata“ formirao adresu u memoriji: prvo postavi četiri bita, pa im pridruži sledeća četiri, i finalizuje sa poslednja četiri. Na taj način je preko svega četiri izvoda – uz ne baš elegantan, ali s druge strane efikasan pristup – mogao da adresira 212 bajtova odnosno četiri kilobajta.

Ovaj pristup multipleksiranjem pokazao se u praksi kao prilično dobar, pa ga koriste i brojni savremeni procesori.

Ono što još nisam rekao

Projektanti mikroprocesora često su u profesionalnom smislu maštoviti, a tehnologija integrisanih kola stalno se usavršava, pa današnji kontroleri često imaju značajno drukčiji pristup korišćenju i programiranju. Vrlo često se memorija – umesto spolja – integriše u sâm kontroler, tako da ne postoje ni adresna magistrala ni magistrala podataka; poneki obezbede i jedno i drugo (kontroleri iz serije 8031), pa korisnik-projektant može da bira koji će pristup primeniti.

A čemu služe mikroprocesori?

Nisam siguran da li bih uspeo da nabrojim za šta se sve mogu koristiti mikroprocesori i mikrokontroleri. Možda je, u šali, lakše nabrojati za šta se ne koriste, pa izdvojiti sve ostalo.

 Slika 4

Slika 4: Moderni pentijumi veoma su snažni mikroprocesori

U ovo praznično vreme mogu da pale i gase lampice na novogodišnjoj jelki; deci i programerima bi se veoma dopalo, a siguran sam da ni Deda Mraz sa svojim irvasima ne bi imao ništa protiv…

 

 

Author: Ivan Stamenković

Komentari

  • Milan Mijić said More
    Ovo je razlog za tu frazu.

    Naš... 12 sati ranije
  • Jovan said More
    Da, ovako ima logike i jednostavno je da... 22 sati ranije
  • Драган Танаскоски said More
    "Najpoznatiji i najkompleksniji primer... 1 dan ranije
  • Драган Танаскоски said More
    Potvrdu inflacije svemira, širenja... 2 dana ranije
  • Verica said More
    Добро јутро, Срећна ... 2 dana ranije

Foto...