Memorijska adresa

Memorijska adresa je pojam za tačnu oznaku mjesta u memoriji na kojem računarski program ili hardverski uređaj može pohraniti dio podatka i preuzeti ga kada bude potreban. Adresa, odnosno oznaka, može biti u obliku binarnog broja iz određene sekvence.

Primjer pristupanja memoriji po adresi

U savremenim računarima svaka adresa označava pojedinačni bajt za pohranu. Podaci koji su preveliki za smještaj u jedan bajt prostora raspoređuju se u više bajtova smještenih na susjednim adresama (jedan do drugog).

Računarski programi razlikuju dvije vrste memorijskih adresa: apsolutne, znane i kao eksplicitne adrese, i relativne adrese. Kod prvih, memorijska adresa ima jedinstveno prepoznatljivu oznaku za svoje mjesto u memoriji dok je relativna adresa, odnosno, mjesto koje označava, određena samo u odnosu na drugo mjesto (baznu adresu).

Sadržaj memorijskog mjesta uredi

Svako memorijsko mjesto, bilo u ROM ili RAM memoriji sadržava 'neki' binarni broj. Kako se taj broj prepoznaje, njegova vrsta, značenje i svrha isključivo zavisi o kontekstu instrukcija koje preuzimaju i manipuliraju tim binarnim brojevima. Svi oni se nalaze na jedinstvenoj fizičkoj poziciji koja je određena drugim, isto tako jedinstvenim binarnim brojem. Sve zapravo izgleda poput kuća u nekoj ulici od kojih svaka ima svoj broj.

Interesantan je koncept vezan za objekte smještene u memoriji: oni mogu biti prepoznati ne samo kao podatak, i to bilo koji podatak, već i kao instrukcija. Koncept se pripisuje John von Neumannovoj arhitekturi i ona preovlađuje kod računara od pedesetih godina XX stoljeća. Neki zasluge za ovaj koncept pripisuju Alanu Turingu. U vrijeme kada je memorija bila skupa neki su programeri koristili ovu mogućnost da bi uštedjeli na prostoru. Danas neki samo-reprodukujući programi kao što su virusi, ove mogućnost zloupotrebljavaju, pretvarajući se da su čas podaci a čas instrukcije.

Instrukcije na memorijskim adresama se u kontekstu prepoznaju kao naredbe za glavni procesor. Podatke preuzimaju instrukcije smještene u posebnom i odvojenom dijelu memorije koji se naziva registar spremišta (storage register), a slijedeća instrukcija po redu može je izmanipulirati u skladu sa drugim preuzetim podacima na drugo memorijsko mjesto (ili unutrašnju adresu).

Registri su memorijske adrese koje se nalaze unutar dijela centralnog procesora (CPU, od en. Central Processing Unit) koji se zove aritmetičko-logička jedinica (ALU, od en. Arithmetic-Logic Unit). ALU radi na osnovu binarnih instrukcija (mašinski kod) pozvanih u instrukcijske registre odabirući logiku kombinatorike kojom će se odrediti koji registri podataka će biti dodani, oduzeti, pomjereni itd. Ovaj process se odvija duboko na nivou binarne manipulacije podacima u mašinskom jeziku.

Veličina riječi i veličina adrese uredi

Veličina riječi određena je arhitekturom računara. Označava broj bita koje centralni procesor može pojedinačno obraditi. Te su veličine historijski bile 4, 8, 12, 16, 24, 32, 48, 64, a napredak tehnologije najavljuje i veće.

Kada se govori o veličini riječi vrlo često se time opisuje i veličina prostora na adresi datog računara. Npr. 32-bitni računar obično omogućava 32-bitno memorijsko adresiranje; 32-bitni računar sa adresiranjem po bajtu može adresirati 232 = 4,294,967,296 bajta memorije ili 4 gibibajta (GiB). Savim logično i korisno jer omogućava efikasno smještanje jedne adrese u jednu riječ.

Ali, to nije uvijek slučaj. Računari često imaju memorijske adrese veće ili manje nego što im je veličina riječi. Npr. 16-bitni Intel 8088 procesor je imao samo 8-bitni vanjski memorijski bus na ranim modelima IBM personalnih računara, a 16-bitni Intel 8086 je podržavao 20-bitno adresiranje te je mogao pristupiti čak 1MiB umjesto samo 64 KiB memorije. Popularni Pentium procesori su s uvođenjem proširenja fizičke adrese (Physical Address Extensions - PAE) mogli podržavati 36-bitne fizičke adrese ali su riječi uglavnom bile 32-bitne.

Savremeni 64-bitni računari sa adresiranjem po bajtu — uz odgovarajuću podršku operativnog sistema – sposobni su adresirati 264 bajta (ili 16 eksbibajta - 1,000,000,000,000,000,000 bajtova). To znači da je adresiranje praktično neograničeno, jer 264 bajta prevazilazi ukupan kapacitet memorije proizvedene do sada. (Sada smiješno zvuči navodna izjava Billa Gatesa da bi "640kb trebalo zadovoljiti bilo koga".)

Također pogledajte uredi