Osnovni kompjuterski komandni sistem. Komandni sistem računara i načini pristupa podacima

Važna komponenta računarske arhitekture je sistem instrukcija. Uprkos velikom broju tipova računara, na najnižem („mašinskom“) nivou oni imaju mnogo zajedničkog. Komandni sistem svakog računara obavezno sadrži sledeće grupe komandi za obradu informacija.

1. Komande za prijenos podataka (popis), koje kopiraju informacije s jednog mjesta na drugo.

2. Aritmetičke operacije, kojima kompjuterska tehnologija zapravo duguje svoje ime. Naravno, udio računskih radnji u modernom računaru je primjetno smanjen, ali one i dalje igraju važnu ulogu u programima. Imajte na umu da osnovne aritmetičke operacije obično uključuju sabiranje i oduzimanje (potonje se na kraju najčešće svodi na sabiranje na ovaj ili onaj način). Što se tiče množenja i dijeljenja, u mnogim računarima se oni izvode pomoću posebnih programa.

3. Logičke operacije koje omogućavaju računaru da analizira informacije koje se obrađuju. Najjednostavniji primjeri su poređenje, kao i dobro poznate logičke operacije I, ILI, NOT (inverzija). Osim toga, često im se dodaje analiza pojedinačnih bitova koda, njihovo resetiranje i instalacija.

4. Binarni kod se pomiče lijevo i desno. Da bismo dokazali važnost ove grupe naredbi, dovoljno je prisjetiti se pravila množenja stupaca: svaki sljedeći proizvod je napisan u takvoj shemi s pomakom za jednu znamenku ulijevo. U nekim posebnim slučajevima, množenje i dijeljenje se općenito mogu zamijeniti pomakom (zapamtite da dodavanjem ili uklanjanjem nule udesno, tj. stvarnim pomjeranjem decimalnog broja, možete ga povećati ili smanjiti za 10 puta).

5. Komande za unos i izlaz informacija za razmjenu sa eksternim uređajima. U nekim računarima, eksterni uređaji su posebne servisne memorijske adrese, tako da se unos i izlaz obavljaju pomoću popisnih komandi.

6. Kontrolne komande koje implementiraju nelinearne algoritme. Ovo prvenstveno uključuje uslovne i bezuslovne skokove, kao i komande za pozivanje potprograma (skok sa povratkom). Neka računala imaju posebne naredbe za organiziranje petlji, ali to nije potrebno: petlja se može svesti na jednu ili drugu kombinaciju uvjetnih i bezuvjetnih prijelaza. Često, ova ista grupa naredbi uključuje nekoliko operacija za kontrolu procesora, kao što su "stop" ili NOP ("bez operacije"). Ponekad se izdvajaju u posebnu grupu.

Kako se povećava složenost procesorskog uređaja, tako se povećava i broj naredbi koje analiziraju stanje kontrolnih bitova i djeluju na njih. Ovdje, kao primjer, možemo imenovati bitove načina rada procesora i kontrolne bitove za mehanizme prekida od vanjskih uređaja.


U posljednje vrijeme sve značajniju ulogu u skupu naredbi imaju naredbe za konverziju iz jednog formata podataka u drugi (npr. iz 8-bitnog u 16-bitni itd.), koje značajno pojednostavljuju obradu podataka različitih tipova, ali se u principu može zamijeniti nizom od nekoliko jednostavnijih naredbi.

S obzirom na komandni sistem, ne mogu se ne spomenuti dva savremena međusobno konkurentna pravca u njegovoj konstrukciji: računar sa punim setom komandi CISC (Complex Instruction Set Computer) i sa ograničenim skupom - RISC (Reduced Instruction Set Computer). Podela je nastala zbog činjenice da većinu vremena računar mora da izvrši mali deo svog skupa instrukcija, dok se ostali koriste sporadično (jedan popularni članak to u šali formuliše u obliku sledeće vizuelne analogije: „20 % stanovništva pije 80% piva.” Dakle, ako značajno ograničite skup operacija na najjednostavnije i najkraće, ali ih pažljivo optimizirate, dobit ćete prilično efikasnu i brzu RISC mašinu. Istina, za brzinu ćete morati da platite potrebom da implementirate „odbačene“ komande u softveru, ali često je ovo plaćanje opravdano: na primer, za naučne proračune ili kompjutersku grafiku, brzina je mnogo važnija od problema sa programiranjem. Pitanja vezana za sistem instrukcija modernih mikroprocesora biće detaljnije razmotrena kasnije u ovom poglavlju.

Da rezimiramo, još jednom naglašavamo da se osnovni skup komandi prilično malo promijenio tokom brze evolucije računara. Istovremeno, metode označavanja adrese lokacije informacija u memoriji pretrpjele su značajne promjene i zaslužuju posebnu pažnju.

Računarska komanda se obično sastoji od dva dijela - operativnog i adresnog. Operativni dio (inače nazvan operacijski kod - OPC) označava koju radnju treba izvršiti s informacijama. Adresni dio opisuje gdje se pohranjuju korištene informacije. Nekoliko komandi za kontrolu rada mašine možda nemaju deo adrese, na primer, u komandi za zaustavljanje; operativni dio je uvijek tu.

Operativni kod se može smatrati određenim konvencionalnim brojem u opštoj listi komandnih sistema. U osnovi, ova lista je izgrađena u skladu sa određenim unutrašnjim obrascima, iako oni nisu uvijek očigledni.

Adresni dio ima mnogo veću raznolikost i treba ga detaljnije razmotriti.

Prije svega, napominjemo da instrukcije mogu biti jedno-, dvo- ili troadresne, ovisno o broju operanada uključenih u njih.

Prvi računari su imali najjednostavniji i najintuitivniji komandni sistem sa tri adrese. Na primjer: uzmite brojeve iz memorijskih adresa A1 i A2, saberite ih i stavite zbir u adresu A3. Ako je operacija zahtijevala manji broj adresa, onda se dodatne jednostavno nisu koristile. Recimo da su u popisnoj operaciji bile naznačene samo izvorne i prijemne ćelije informacija A1 i A3, a sadržaj A2 nije imao značenje.

Komanda sa tri adrese bila je laka za dešifrovanje i zgodna za upotrebu, ali kako je količina RAM-a rasla, njena dužina je postala preterano velika. Zaista, dužina naredbe je zbir dužine tri adrese i koda operacije. Iz toga slijedi, na primjer, da za skromnu RAM memoriju od 1024 ćelije, samo pisanje adresnog dijela jedne naredbe zahtijeva 3 * 10 = 30 binarnih bitova, što nije baš zgodno za tehničku implementaciju. Stoga su se pojavile dvoadresne mašine kod kojih je dužina komande smanjena eliminacijom adrese za snimanje rezultata. U takvim računarima rezultat operacije je ostao u posebnom registru (sabiraču) i bio je pogodan za upotrebu u kasnijim proračunima. U nekim mašinama rezultat je bio zapisan umjesto jednog od operanada.

Dalje pojednostavljivanje komande dovelo je do stvaranja unicast mašina. Razmotrimo komandni sistem takvog računara na konkretnom jednostavnom primjeru. Pretpostavimo da trebamo sabrati brojeve pohranjene u ćelijama sa RAM adresama A1 i A2, i smjestiti zbroj u ćeliju s adresom A3. Da bi riješio ovaj problem, unicast mašina će morati da pokrene tri komande:

Izdvojite sadržaj ćelije A1 u sabirač;

Dodajte sabirač sa brojem iz A2;

Zapišite rezultat sabirača na A3.

Moglo bi se činiti da bi unikastnoj mašini bilo potrebno tri puta više komandi da izvrši zadatak nego mašini sa tri adrese. U stvari, to nije uvijek slučaj. Pokušajte da isplanirate sopstveni program za izračunavanje izraza A5 = (A1 + A2)*AZ/A4 i otkrićete da su vam potrebne tri komande sa tri adrese i samo pet jednostrukih komandi. Dakle, unicast mašina je na neki način čak i efikasnija, jer ne upisuje nepotrebne međurezultate u memoriju.

Radi kompletnosti, treba reći o mogućnosti implementacije mašine bez adrese (nulte adrese) koja koristi poseban način organizovanja memorije - stek. Razumijevanje principa takve mašine zahtijevalo bi neka prilično detaljna objašnjenja. Danas se računari bez adrese praktično ne koriste. Stoga ćemo se ograničiti samo na navođenje činjenice da je na sličan način uređen komandni sistem bio osnova nekih programabilnih mikrokalkulatora (npr. „BZ-21“ i „BZ-34“ i sl.).

Do sada, u opisivanju strukture mašinske instrukcije, koristili smo intuitivni koncept adrese informacija. Razmotrimo sada pitanje rješavanja RAM elemenata detaljnije i strože. Memorija je najjednostavnije organizovana u računarima prve dve generacije. Sastojao se od pojedinačnih ćelija, od kojih se sadržaj svake čitao ili pisao kao jedna jedinica. Svaka memorijska ćelija imala je svoj broj, koji se zvao adresa. Očigledno je da su adrese susjednih RAM ćelija uzastopni cijeli brojevi, tj. razlikuju za jedan. Računari koji su razmatrani koristili su podatke samo jednog tipa (realni brojevi), a njihova dužina je bila jednaka dužini mašinske instrukcije i poklapala se sa kapacitetom memorije i svih ostalih uređaja mašine. Na primjer, ističemo da se ćelija tipičnog računara druge generacije sastojala od 36 binarnih bitova.

Vrlo često je program bio namijenjen da obradi, koristeći iste formule, određenu količinu sadržaja sekvencijalno lociranih ćelija (u jezicima visokog nivoa, takve strukture su kasnije nazvane nizovi). Prve dvije generacije kompjutera davale su posebne mehanizme za cikličku obradu nizova informacija. U tu svrhu, u mašinskim uputstvima, pored redovnih adresa, bilo je moguće koristiti i promjenjive adrese u kojima je poseban kontrolni bit postavljen na jedan. Kada je naredba izvršena, ovako označenim modificiranim adresama dodane su vrijednosti iz posebnih ćelija indeksa. Promjenom sadržaja ćelija indeksa, bilo je moguće pristupiti različitim elementima niza. Posebno ističemo da je formiranje rezultujuće adrese izvršeno u upravljačkoj jedinici u trenutku izvršenja naredbe, pa je originalna komanda u RAM memorisana bez promjena.

Opisani mehanizam za modifikaciju adresa značajno je pojednostavio pisanje cikličkih programa, kao što je pronalaženje zbira uzastopnih RAM ćelija, kopiranje pojedinačnih memorijskih sekcija itd.

Kod računara treće generacije ideologija izgradnje memorije se značajno promijenila: minimalni dio informacije za razmjenu sa RAM-om postavljen je na 8 binarnih cifara, tj. jedan bajt. Postalo je moguće obraditi nekoliko vrsta podataka: tekstualni znakovi (1 bajt), cijeli brojevi (2 bajta), realni brojevi obične ili dvostruke preciznosti (4 odnosno 8 bajtova). S tim u vezi, uvedena je nova konvencionalna jedinica mjerenja informacija - mašinska riječ. Bio je jednak 4 bajta i odgovarao je dužini standardnog realnog broja. Sve količine informacija počele su se mjeriti u jedinicama koje su višestruke riječi: dvostruka riječ, poluriječ itd. Naravno, adresa (broj RAM ćelije) u mašinama sa organizacijom bajtova počela je da se odnosi na poseban bajt; memorijski bajtovi imaju brojeve koji se povećavaju za jedan. Riječ se sastoji od nekoliko uzastopnih bajtova. Kao adresu riječi zgodno je uzeti adresu jednog od bajtova koji je formiraju (obično se koristi niži bajt koji ima najmanji broj). Dakle, adrese riječi se više ne mijenjaju nakon jedne; njihov prirast zavisi od dužine mašinske reči u bajtovima i jednak je četiri.

Veličina mašinske riječi je očigledno odabrana na osnovu formata informacija koje se obrađuju, a ne u vezi sa bitnim kapacitetom bilo kojeg uređaja. Da biste to potvrdili, evo nekoliko činjenica o tipičnim računarima treće generacije iz EC porodice. Aritmetičko-logička jedinica modela EC-1022 imala je 16 binarnih bita, EC-1033 je imao 32 bita, a EC-1050 je imao 64 bita. Istovremeno, za jedan pristup RAM-u u ES-1022 i ES-1033 odabrana su 4 bajta, u ES-1050 - 8 bajtova (iu ES-1045 - 16 bajtova). Dakle, raznolikost brojeva ukazuje da 32 bita (4 bajta) nisu bila neka tehnički dodijeljena količina informacija.

U mašinama treće generacije pojavilo se još nekoliko karakteristika: različite dužine instrukcija u zavisnosti od načina adresiranja podataka, prisustvo posebne ultra-slučajne registarske memorije, izračunavanje efektivne RAM adrese kao zbira nekoliko registara itd. Sve je to dalje razvijeno u kompjuterima četvrte generacije, za koje je kapacitet mikroprocesora postao jedna od najvažnijih karakteristika. Razmatranje strukturnih karakteristika računarske memorije četvrte generacije odložićemo do sledećeg odeljka.

Kontrolna pitanja

1. Šta je arhitektura računara? Formulirajte definiciju i dešifrirajte je.

2. Povucite analogiju između arhitekture računara i običnog koncepta arhitekture. Koje su sličnosti, a koje razlike?

3. Šta je zajedničko, a koja razlika između pojmova „unutrašnja struktura računara“

i "arhitektura računara"?

4. Šta je porodica računara? Navedite primjere.

5. Objasnite princip kompatibilnosti softvera. Šta je kompatibilnost odozdo prema gore (objasnite na primjeru jedne od porodica koje poznajete)?

6. Da li su sljedeće činjenice vezane za koncept „arhitekture“:

a) da li računar koristi dinamičke (ili statičke) RAM čipove?

b) da li računar ima proširenu memoriju?

c) da li računar ima (nema) zajedničku magistralu preko koje se prenose informacije između njegovih uređaja?

d) u procesoru INTEL 80386, nekoliko novih je dodato u sistem instrukcija u poređenju sa INTEL 80286?

e) kapacitet memorije novog modela računara je udvostručen?

7. Navedite osnovne principe von Neumannove arhitekture i objasnite njihov sadržaj.

8. Koji je razlog za široku upotrebu binarnog sistema u računarima?

9. Da li je moguće? gledajući sadržaj jedne memorijske ćelije, odredite koje su informacije u njoj zapisane: broj, komanda, simboli?

10. Koje su glavne komponente računara?

11. Šta je programski brojač i kakvu ulogu ima?

12. Šta je autoput (autobus)?

13. Koje prednosti ima struktura glavnog računala?

14. Šta je vanjski kontroler uređaja i kakvu ulogu ima u procesu razmjene informacija?

15. Kakvu ulogu igra video memorija u računaru?

a) tekstualni režim (24 reda od 80 karaktera);

b) grafički crno-beli režim sa veličinom ekrana 640x200 piksela;

c) Režim sa 16 boja sa istom veličinom ekrana.

17. Šta je DMA mod?

18 Kako se zove elementarna komponenta strojne komande? Šta može odrediti brzinu izvršenja naredbe?

19. Opišite glavne faze izvršavanja strojne naredbe. Posebna pažnja

obratite pažnju na ulogu programskog brojača.

20. Šta je komandni pipelining i koje prednosti ima?

21. Koje su osnovne operacije dio komandnog sistema bilo kog računara?

Ukratko opišite svaku od ovih grupa.

22. Objasni zašto je moguće napraviti računar sa smanjenim (nepotpunim)

skup komandi i šta daje.

23. Od kojih dijelova se sastoji kompjuterski tim? Ukratko opišite njihovu svrhu.

24. Koja je razlika između naredbi s jednom, dvije i tri adrese?

25. Šta je RAM adresa?

26. Kako možete koristiti istu komandu za rad sa nekoliko

sekvencijalno raspoređene ćelije?

27. Navedite razlike u memorijskoj strukturi računara treće generacije u odnosu na prethodna dva.

Važna komponenta računarske arhitekture je sistem instrukcija, pa ćemo ovo pitanje dalje razmotriti.

Ispod tim razumjeti ukupnost informacija, predstavljenih u obliku binarnih kodova, neophodnih procesoru da izvrši sljedeći korak.

U kodu komande, određeni bitovi (polja) se dodeljuju da sadrže informacije:

O vrsti operacije,

Adrese RAM ćelija u kojima se pohranjuju obrađeni podaci,

Adrese memorijskih ćelija u koje će biti upisan rezultat operacije.

Poziva se unapred dogovorena struktura polja koja omogućava računaru da prepozna komponente komandnog koda Format komande .

Primjeri formata naredbi prikazani su na slici 5.

Slika 5

Glavni element koda komande je kod operacije (OPC), koji određuje koje će se radnje izvršiti na ovoj komandi. N najvažnijih bitova formata je dodijeljeno za to.

Preostali bitovi sadrže A1 i A2 - adrese operanada, A3 - adresu rezultata.

Distribucija polja u formatu komande može se promijeniti prilikom promjene načina adresiranja.

Dužina naredbe zavisi od broja adresnih polja. Na osnovu broja adresa, timovi se dijele na bezadresne; jedno-, dvo-, troadresno.

Podsjetimo da kod naredbe sadrži informacije o podacima na kojima se neka operacija mora izvršiti. Ovi podaci se nazivaju operandi. Obično se operandi nalaze u RAM-u ili registarskoj memoriji računara. Način na koji se operandi nalaze u memoriji takođe određuje format instrukcije.

Postoje 2 različita principa za pretraživanje operanada u memoriji: asocijativni i adresni:

- Asocijativna pretraga (pretraga po sadržaju memorijske ćelije) uključuje pregled sadržaja svih memorijskih ćelija kako bi se identificirao kod koji sadrži asocijativnu osobinu specificiranu naredbom.

- Pretraga adresa pretpostavlja da je operand na adresi navedenoj u polju adrese komande.

Pravi se razlika između izvršne adrese operanda i adresnog koda instrukcije.

Adresa izvršenja operanda je binarni kod broja memorijske ćelije kojim će se operand pisati ili čitati.

Adresni kod komande naziva se binarni kod u adresnom polju naredbe, uz pomoć kojeg je potrebno generirati izvršnu adresu operanda. U računaru se adresni kod i izvršna adresa ne poklapaju, pa se metod adresiranja može definisati kao način formiranja izvršne adrese od adresnog koda komande.

Mi ćemo dalje koristiti ove koncepte u opisivanju metoda adresiranja operanda.

Metode adresiranja operanda, ovisno o vrsti pretraživanja operanda u memoriji, klasificiraju se:

1) prisustvom informacija o adresi u naredbi za:

-eksplicitno adresiranje. Sa ovom metodom koda, komanda ima polje adrese operanda;



- implicitno adresiranje. Kod ove metode nema polja adrese u instrukciji, a adresa operanda je implicirana kodom operacije. Na primjer, adresa primatelja cilja može biti isključena iz instrukcije, što implicira da je rezultat upisan umjesto drugog operanda.

2) prema učestalosti pristupa RAM-u:

- direktno adresiranje. Kod direktnog adresiranja, operand se nalazi direktno u adresnom polju komande (slika 6).

Slika 6

- direktno oslovljavanje (neposredno oslovljavanje). Kod direktnog adresiranja, operandu se pristupa korištenjem adresnog koda u polju za naredbu. U ovom slučaju, izvršna adresa se poklapa sa adresom komandnog koda. Ovo se može ilustrovati sljedećom slikom (Slika 7).

Slika 7

- indirektno adresiranje. Kod indirektnog adresiranja, instrukcijski kod specificira adresu memorijske ćelije u kojoj se ne nalazi sam operand, već njegova adresa, koja se zove pokazivač. Ovo se može ilustrovati sljedećom slikom (Slika 8).

Slika 7

3) prema načinu formiranja adresa memorijskih ćelija:

- Apsolutno adresiranje Pretpostavimo da se binarni kod adrese memorijske ćelije može u potpunosti izdvojiti ili iz adresnog polja instrukcije, ili iz neke druge ćelije u slučaju indirektnog adresiranja.

- Relativno adresiranje pretpostavimo da je binarni kod operanda formiran od nekoliko komponenti:

B - osnovni kod;

I - indeksni kod;

C - ofset kod.

Ove komponente se koriste u različitim kombinacijama.

Vrste relativnog adresiranja:



Slika 9

Registrovana memorija se koristi za formiranje adrese operanda.

Adresa operanda i u nizu je definisana kao zbir početne adrese niza operanda, date pomakom S, i indeksa i, upisanog u jedan od registarskih memorija, koji se naziva indeksni registar.

Adresa indeksnog registra je određena u naredbi poljem indeksne adrese Ai.

U svakom i-tom ciklusu, sadržaj indeksnog registra se mijenja za konstantnu vrijednost, obično 1.

Za rad s programima s nizovima koji zahtijevaju slične operacije nad elementima niza, zgodno je koristiti ovu vrstu adresiranja

2) Automatsko indeksiranje adresiranja. Tokom automatskog indeksiranja, indirektna adresa koja se nalazi u RP registru se automatski povećava (auto-inkrementalno adresiranje) ili smanjuje (auto-dekrementalno adresiranje) za konstantan iznos prije ili nakon izvršenja operacije.

3) Adresiranje steka. Stack memorija se široko koristi u modernim računarima. Iako adresa pristupa steku nije u naredbi, generira je kontrolni krug (slika 9):

Slika 9

Za čitanje zapisa dostupan je samo jedan registar - vrh steka.

Ovu metodu adresiranja koristi, posebno, sistem prekida programa prilikom pozivanja potprograma.

Memorija steka implementirana je na vrhu regularne memorije koristeći pokazivač steka i adresiranje automatskog indeksa. Logično, memorijske ćelije dodijeljene steku su organizirane tako da se posljednja upisana adresa čita prva, a prva upisana adresa posljednja. Ovu logičnu organizaciju formira poseban brojač. Ovaj brojač se naziva pokazivač steka SP, koji je mikroprocesorski registar. Poziva se memorijska lokacija koja se trenutno može upisati na, na primjer, povratnu adresu iz potprograma vrh hrpe . Poziva se broj memorijskih ćelija namijenjenih organiziranju steka dubina steka . Poziva se posljednja memorijska ćelija u koju se može pisati dnu hrpe . Upisivanje u stog se vrši korišćenjem autodekrementalnog adresiranja, a čitanje pomoću autoinkrementalnog adresiranja (slika 10).

Slika 10

Primjer. Pozivanje potprograma napisanog u C.

U jeziku C, potprogrami se zovu funkcije. Funkcija može imati argumente i lokalne varijable, odnosno varijable koje postoje samo za vrijeme izvršavanja funkcije. Pretpostavimo da funkcija zavisi od dva ulazna argumenta x i y cjelobrojnog tipa i koristi tri lokalne varijable a, b i c, također cjelobrojnog tipa. Funkcija vraća cjelobrojnu vrijednost.

Podprogram:

Glavni program:

Na primjer, u određenoj tački programa poziva se funkcija f s argumentima x = 2, y = 3. Program koji poziva gura stvarne vrijednosti argumenata x i y funkcije f na stog, sa prvi argument funkcije na vrhu steka, a drugi argument ispod njega. Kada se izvrši instrukcija poziva funkcije, povratna adresa se također gura na vrh steka. Kada se funkcija f pokrene, stog izgleda ovako:

Prije izvršavanja, funkcija f mora zgrabiti memorijsku oblast na steku za svoje lokalne varijable a, b, c.

Skup implementiranih mašinskih radnji ga formira komandni sistem .

Uprkos velikom broju tipova računara, na najnižem („mašinskom“) nivou imaju mnogo toga zajedničkog.

Komandni sistem svakog računara nužno sadrži sljedeće grupe naredbi za obradu informacija:

1. Naredbe za prijenos podataka (popis) koje kopiraju informacije s jednog mjesta na drugo.

Razmjena između registara procesora,

procesor i RAM,

Procesor i periferne instalacije.

2. Aritmetičke operacije. Osnovne aritmetičke operacije obično uključuju sabiranje i oduzimanje (potonje se najčešće svodi na sabiranje). Što se tiče množenja i dijeljenja, u mnogim računarima se oni izvode pomoću posebnih algoritama.

3. Logičke operacije koje omogućavaju računaru da analizira informacije koje se obrađuju. Na primjer, operacije poređenja ili dobro poznate logičke operacije I, ILI, NE. Osim toga, često dodaju analizu pojedinačnih bitova koda, njihovo resetiranje i instalaciju.

4. Binarni kod se pomiče lijevo i desno. Da bismo dokazali važnost ove grupe naredbi, dovoljno je prisjetiti se pravila množenja stupaca: svaki sljedeći proizvod je napisan u takvoj shemi s pomakom za jednu znamenku ulijevo. U nekim posebnim slučajevima, množenje i dijeljenje se općenito mogu zamijeniti pomakom (zapamtite da dodavanjem ili uklanjanjem nule udesno, tj. stvarnim pomjeranjem decimalnog broja, možete ga povećati ili smanjiti za 10 puta).

5. Komande za unos i izlaz informacija za razmjenu sa eksternim uređajima. U nekim računarima, eksterni uređaji su posebne servisne memorijske adrese, tako da se unos i izlaz obavljaju pomoću popisnih komandi.

6. Kontrolne komande koje implementiraju nelinearne algoritme. Ovo prvenstveno uključuje uslovne i bezuslovne skokove, kao i komande za pristup potprogramu (skok sa povratkom). Neka računala imaju posebne naredbe za organiziranje petlji, ali to nije potrebno: petlja se može svesti na jednu ili drugu kombinaciju uvjetnih i bezuvjetnih prijelaza. Često ova ista grupa naredbi uključuje nekoliko operacija za kontrolu procesora - kao što su "stop" ili NOP ("bez operacije"). Ponekad se izdvajaju u posebnu grupu.

S obzirom na sistem komandi, ne može se ne spomenuti dva savremena međusobno konkurentna pravca u njegovoj konstrukciji: računar sa punim setom komandi CISC (Complex Instruction Set Computer) i sa ograničenim skupom - RISC (Reduced Instruction Set Computer). Podela je nastala zbog činjenice da većinu vremena računar mora da izvrši mali deo svog skupa komandi, dok se ostale koriste povremeno. Dakle, ako značajno ograničite skup operacija na najjednostavnije i najkraće, dobit ćete prilično efikasnu i brzu RISC mašinu. Istina, za brzinu ćete morati da platite potrebom da implementirate „odbačene“ komande u softveru, ali često je ovo plaćanje opravdano: na primer, za naučne proračune ili kompjutersku grafiku, brzina je mnogo važnija od problema sa programiranjem.

Glavni ciklus rada računara

Ovaj odeljak ukratko govori o redosledu radnji prilikom izvršavanja komande na računaru. Može se tvrditi da je radni ciklus općenito isti za sve von Neumann mašine.

Komandni sistem računara i načini pristupa podacima

Važna komponenta računarske arhitekture je sistem instrukcija. Uprkos velikom broju tipova računara, na najnižem („mašinskom“) nivou imaju mnogo toga zajedničkog. Komandni sistem svakog računara obavezno sadrži sledeće grupe komandi za obradu informacija.

  • 1. Naredbe za prijenos podataka (popis) koje kopiraju informacije s jednog mjesta na drugo.
  • 2. Aritmetičke operacije, kojima kompjuterska tehnologija zapravo duguje svoje ime. Naravno, udio računskih radnji u modernom računaru je primjetno smanjen, ali one i dalje igraju važnu ulogu u programima. Imajte na umu da osnovne aritmetičke operacije obično uključuju sabiranje i oduzimanje (potonje se na kraju najčešće svodi na sabiranje na ovaj ili onaj način). Što se tiče množenja i dijeljenja, u mnogim računarima se oni izvode pomoću posebnih programa.
  • 3. Logičke operacije koje omogućavaju računaru da analizira informacije koje se obrađuju. Najjednostavniji primjeri su poređenje, kao i dobro poznate logičke operacije I, ILI, NOT (inverzija). Osim toga, često im se dodaje analiza pojedinačnih bitova koda, njihovo resetiranje i instalacija.
  • 4. Binarni kod se pomiče lijevo i desno. Da bismo dokazali važnost ove grupe naredbi, dovoljno je prisjetiti se pravila množenja stupaca: svaki sljedeći proizvod je napisan u takvoj shemi s pomakom za jednu znamenku ulijevo. U nekim posebnim slučajevima, množenje i dijeljenje se općenito mogu zamijeniti pomakom (zapamtite da dodavanjem ili uklanjanjem nule udesno, tj. stvarnim pomjeranjem decimalnog broja, možete ga povećati ili smanjiti za 10 puta).
  • 5. Komande za unos i izlaz informacija za razmjenu sa eksternim uređajima. U nekim računarima, eksterni uređaji su posebne servisne memorijske adrese, tako da se unos i izlaz obavljaju pomoću popisnih komandi.
  • 6. Kontrolne komande koje implementiraju nelinearne algoritme. Ovo prvenstveno uključuje uslovne i bezuslovne skokove, kao i komande za pozivanje potprograma (skok sa povratkom). Neka računala imaju posebne naredbe za organiziranje petlji, ali to nije potrebno: petlja se može svesti na jednu ili drugu kombinaciju uvjetnih i bezuvjetnih prijelaza. Često ova ista grupa naredbi uključuje nekoliko operacija za kontrolu procesora, kao što su "stop" ili NOP ("bez operacije"). Ponekad se izdvajaju u posebnu grupu.

Kako se povećava složenost procesorskog uređaja, tako se povećava i broj naredbi koje djeluju na njih. Ovdje, kao primjer, možemo imenovati bitove načina rada procesora i kontrolne bitove za mehanizme prekida od vanjskih uređaja.

U posljednje vrijeme sve značajniju ulogu u skupu naredbi imaju naredbe za konverziju iz jednog formata podataka u drugi (npr. iz 8-bitnog u 16-bitni itd.), koje značajno pojednostavljuju obradu podataka različitih tipova, ali se u principu može zamijeniti nizom od nekoliko jednostavnijih naredbi.

S obzirom na sistem komandi, ne može se ne spomenuti dva savremena međusobno konkurentna pravca u njegovoj konstrukciji: računar sa punim setom komandi CISC (Complex Instruction Set Computer) i sa ograničenim skupom - RISC (Reduced Instruction Set Computer). Podela je nastala zbog činjenice da većinu vremena računar mora da izvrši mali deo svog skupa instrukcija, dok se ostali koriste sporadično (jedan popularni članak to u šali formuliše u obliku sledeće vizuelne analogije: „20 % stanovništva pije 80% piva.” Dakle, ako značajno ograničite skup operacija na najjednostavnije i najkraće, ali ih pažljivo optimizirate, dobit ćete prilično efikasnu i brzu RISC mašinu. Istina, za brzinu ćete morati da platite potrebom da implementirate „odbačene“ komande u softveru, ali često je ovo plaćanje opravdano: na primer, za naučne proračune ili kompjutersku grafiku, brzina je mnogo važnija od problema sa programiranjem. Pitanja vezana za sistem instrukcija modernih mikroprocesora biće detaljnije razmotrena kasnije u ovom poglavlju.

Da rezimiramo, još jednom naglašavamo da se osnovni skup komandi prilično malo promijenio tokom brze evolucije računara. Istovremeno, metode označavanja adrese lokacije informacija u memoriji pretrpjele su značajne promjene i zaslužuju posebnu pažnju.

Glavni ciklus rada računara

Kao što je već navedeno u paragrafu 2, važna komponenta von Neumannove arhitekture je brojač adresa instrukcija. Ovaj specijalni registar internog procesora uvijek ukazuje na memorijsku lokaciju gdje je pohranjena sljedeća programska instrukcija. Kada se uključi napajanje ili kada se pritisne dugme za resetovanje (početno podešavanje), početna adresa programa za inicijalizaciju svih uređaja i podizanje sistema koji se nalazi u ROM-u se unosi u brojač u hardveru. Dalje funkcionisanje računara određuje program. Dakle, sva kompjuterska aktivnost je kontinuirano izvršavanje određenih programa, a ti programi mogu, zauzvrat, učitavati nove programe itd.

Svaki program se sastoji od zasebnih mašinskih instrukcija. Svaka strojna komanda je, zauzvrat, podijeljena na niz elementarnih unificiranih komponenti, koje se obično nazivaju ciklusi. U zavisnosti od složenosti naredbe, može se implementirati u različitom broju taktova. Na primjer, prijenos informacija iz jednog internog procesorskog registra u drugi izvodi se u nekoliko ciklusa takta, ali množenje dva cijela broja zahtijeva red veličine više ciklusa takta. Značajno produženje naredbe se dešava ako podaci koji se obrađuju još nisu unutar procesora i moraju se čitati iz RAM-a.

Prilikom izvršavanja svake naredbe, računar izvodi određene standardne radnje:

  • 1) prema sadržaju brojača adresa komande, čita se sledeća programska komanda (njen kod se obično čuva u posebnom registru kontrolne jedinice, koji se naziva registar komandi);
  • 2) programski brojač se automatski menja tako da sadrži adresu sledeće komande (u najjednostavnijem slučaju, u tu svrhu je dovoljno da se trenutnoj vrednosti brojača doda neka konstanta, određena dužinom komande);
  • 3) operacija učitana u komandni registar se dešifruje, izdvajaju se potrebni podaci i na njima se izvode potrebne radnje.

Tada se u svim slučajevima, osim naredbe za zaustavljanje ili pojave prekida (vidi dolje u paragrafu 3.5), sve opisane radnje ponavljaju ciklički.

Nakon preuzimanja komande za zaustavljanje, računar prestaje da obrađuje program. Za izlazak iz ovog stanja potreban je zahtjev od vanjskih uređaja ili ponovno pokretanje stroja.

Razmatrani osnovni kompjuterski algoritam omogućava vam da korak po korak izvršavate linearni program pohranjen u RAM-u. Ako treba da promenite redosled proračuna za implementaciju viljuške ili petlje, dovoljno je da unesete traženu adresu u programski brojač (tako dolazi do uslovnog ili bezuslovnog skoka).

Računari zasnovani na INTEL 80286 i novijim mikroprocesorima koriste metodu cevovoda (ponekad nazvanu „dohvati unapred“) da ubrzaju glavni ciklus instrukcija. Ideja je da nekoliko internih uređaja procesora radi paralelno: jedan čita instrukciju, drugi dešifruje operaciju, treći izračunava adrese korištenih operanada itd. Kao rezultat toga, po završetku naredbe najčešće se ispostavlja da je sljedeća već odabrana iz RAM-a, dešifrirana i pripremljena za izvršenje. Imajte na umu da ako se prekrši prirodni redosled izvršavanja instrukcija u programu (na primer, tokom bezuslovnog skoka), preuzimanje unapred je uzaludno i cevovod se briše. Izvršenje naredbe koja slijedi nakon prijelaza traje duže, jer da bi transporter "radio punim kapacitetom", prvo se mora napuniti. Drugim riječima, u transportnoj mašini, vrijeme izvršenja programa može ovisiti ne samo od njegovih sastavnih instrukcija, već i od njihovog relativnog položaja.

Metode za određivanje adrese lokacije informacija

Računarska komanda se obično sastoji od dva dijela - operativnog i adresnog. Operativni dio (inače nazvan operacijski kod - OPC) označava koju radnju treba izvršiti s informacijama. Adresni dio opisuje gdje se pohranjuju korištene informacije. Nekoliko komandi za kontrolu rada mašine možda nemaju deo adrese, na primer, u komandi za zaustavljanje; operativni dio je uvijek tu.

Operativni kod se može smatrati određenim konvencionalnim brojem u opštoj listi komandnih sistema. U osnovi, ova lista je izgrađena u skladu sa određenim unutrašnjim obrascima, iako oni nisu uvijek očigledni.

Adresni dio ima mnogo veću raznolikost i treba ga detaljnije razmotriti.

Prije svega, napominjemo da instrukcije mogu biti jedno-, dvo- ili troadresne, ovisno o broju operanada uključenih u njih.

Prvi računari su imali najjednostavniji i najintuitivniji komandni sistem sa tri adrese. Na primjer: uzmite brojeve iz memorijskih adresa A1 i A2, saberite ih i stavite zbir u adresu A3. Ako je operacija zahtijevala manji broj adresa, onda se dodatne jednostavno nisu koristile. Recimo da su u popisnoj operaciji bile naznačene samo izvorne i prijemne ćelije informacija A1 i A3, a sadržaj A2 nije imao značenje.

Komanda sa tri adrese bila je laka za dešifrovanje i zgodna za upotrebu, ali kako je količina RAM-a rasla, njena dužina je postala preterano velika. Zaista, dužina naredbe je zbir dužine tri adrese i koda operacije. Iz toga slijedi, na primjer, da za skromnu RAM memoriju od 1024 ćelije, samo pisanje adresnog dijela jedne naredbe zahtijeva 3 * 10 = 30 binarnih bitova, što nije baš zgodno za tehničku implementaciju. Stoga su se pojavile dvoadresne mašine kod kojih je dužina komande smanjena eliminacijom adrese za snimanje rezultata. U takvim računarima rezultat operacije je ostao u posebnom registru (sabiraču) i bio je pogodan za upotrebu u kasnijim proračunima. U nekim mašinama rezultat je bio zapisan umjesto jednog od operanada.

Dalje pojednostavljivanje komande dovelo je do stvaranja unicast mašina. Razmotrimo komandni sistem takvog računara na konkretnom jednostavnom primjeru. Pretpostavimo da trebamo sabrati brojeve pohranjene u ćelijama sa RAM adresama A1 i A2, i smjestiti zbroj u ćeliju s adresom A3. Da bi riješio ovaj problem, unicast mašina će morati da pokrene tri komande:

  • * izdvojiti sadržaj ćelije A1 u sabirač;
  • * dodati sabirač sa brojem iz A2;
  • * upišite rezultat sabirača na A3.

Moglo bi se činiti da bi unikastnoj mašini bilo potrebno tri puta više komandi da izvrši zadatak nego mašini sa tri adrese. U stvari, to nije uvijek slučaj. Pokušajte da isplanirate sopstveni program za izračunavanje izraza A5 = (A1 + A2)*AZ/A4 i otkrićete da su vam potrebne tri komande sa tri adrese i samo pet jednostrukih komandi. Dakle, unicast mašina je na neki način čak i efikasnija, jer ne upisuje nepotrebne međurezultate u memoriju.

Radi kompletnosti, treba reći o mogućnosti implementacije mašine bez adrese (nulte adrese) koja koristi poseban način organizovanja memorije - stek. Razumijevanje principa takve mašine zahtijevalo bi neka prilično detaljna objašnjenja. Danas se računari bez adrese praktično ne koriste. Stoga ćemo se ograničiti samo na navođenje činjenice da je na sličan način uređen komandni sistem bio osnova nekih programabilnih mikrokalkulatora (npr. „BZ-21“ i „BZ-34“ i sl.).

Do sada, u opisivanju strukture mašinske instrukcije, koristili smo intuitivni koncept adrese informacija. Razmotrimo sada pitanje rješavanja RAM elemenata detaljnije i strože. Memorija je najjednostavnije organizovana u računarima prve dve generacije. Sastojao se od pojedinačnih ćelija, od kojih se sadržaj svake čitao ili pisao kao jedna jedinica. Svaka memorijska ćelija imala je svoj broj, koji se zvao adresa. Očigledno je da su adrese susjednih RAM ćelija uzastopni cijeli brojevi, tj. razlikuju za jedan. Računari koji su razmatrani koristili su podatke samo jednog tipa (realni brojevi), a njihova dužina je bila jednaka dužini mašinske instrukcije i poklapala se sa kapacitetom memorije i svih ostalih uređaja mašine. Na primjer, ističemo da se ćelija tipičnog računara druge generacije sastojala od 36 binarnih bitova.

Vrlo često je program bio namijenjen da obradi, koristeći iste formule, određenu količinu sadržaja sekvencijalno lociranih ćelija (u jezicima visokog nivoa, takve strukture su kasnije nazvane nizovi). Prve dvije generacije kompjutera davale su posebne mehanizme za cikličku obradu nizova informacija. U tu svrhu, u mašinskim uputstvima, pored redovnih adresa, bilo je moguće koristiti i promjenjive adrese u kojima je poseban kontrolni bit postavljen na jedan. Kada je naredba izvršena, ovako označenim modificiranim adresama dodane su vrijednosti iz posebnih ćelija indeksa. Promjenom sadržaja ćelija indeksa, bilo je moguće pristupiti različitim elementima niza. Posebno ističemo da je formiranje rezultujuće adrese izvršeno u upravljačkoj jedinici u trenutku izvršenja naredbe, pa je originalna komanda u RAM memorisana bez promjena.

Opisani mehanizam za modifikaciju adresa značajno je pojednostavio pisanje cikličkih programa, kao što je pronalaženje zbira uzastopnih RAM ćelija, kopiranje pojedinačnih memorijskih sekcija itd.

Kod računara treće generacije ideologija izgradnje memorije se značajno promijenila: minimalni dio informacije za razmjenu sa RAM-om postavljen je na 8 binarnih cifara, tj. jedan bajt. Postalo je moguće obraditi nekoliko vrsta podataka: tekstualni znakovi (1 bajt), cijeli brojevi (2 bajta), realni brojevi obične ili dvostruke preciznosti (4 odnosno 8 bajtova). S tim u vezi, uvedena je nova konvencionalna jedinica mjerenja informacija - mašinska riječ. Bio je jednak 4 bajta i odgovarao je dužini standardnog realnog broja. Sve količine informacija počele su se mjeriti u jedinicama koje su višestruke riječi: dvostruka riječ, poluriječ itd. Naravno, adresa (broj RAM ćelije) u mašinama sa organizacijom bajtova počela je da se odnosi na poseban bajt; memorijski bajtovi imaju brojeve koji se povećavaju za jedan. Riječ se sastoji od nekoliko uzastopnih bajtova. Kao adresu riječi zgodno je uzeti adresu jednog od bajtova koji je formiraju (obično se koristi niži bajt koji ima najmanji broj). Dakle, adrese riječi se više ne mijenjaju nakon jedne; njihov prirast zavisi od dužine mašinske reči u bajtovima i jednak je četiri.

Veličina mašinske riječi je očigledno odabrana na osnovu formata informacija koje se obrađuju, a ne u vezi sa bitnim kapacitetom bilo kojeg uređaja. Da biste to potvrdili, evo nekoliko činjenica o tipičnim računarima treće generacije iz EC porodice. Aritmetičko-logički uređaj modela EC-1022 imao je 16 binarnih bita, EC-1033 je imao 32 bita, a EC-1050 je imao 64 bita. Istovremeno, za jedan pristup RAM-u u “ES-1022” i “ES-1033” odabrano je 4 bajta, u “ES-1050” - 8 bajtova (a u “ES-1045” - 16 bajtova). Dakle, raznolikost brojeva ukazuje da 32 bita (4 bajta) nisu bila neka tehnički dodijeljena količina informacija.

U mašinama treće generacije pojavilo se još nekoliko karakteristika: različite dužine instrukcija u zavisnosti od načina adresiranja podataka, prisustvo posebne ultra-slučajne registarske memorije, izračunavanje efektivne RAM adrese kao zbira nekoliko registara itd. Sve je to dalje razvijeno u kompjuterima četvrte generacije, za koje je kapacitet mikroprocesora postao jedna od najvažnijih karakteristika. Razmatranje strukturnih karakteristika računarske memorije četvrte generacije odložićemo do sledećeg odeljka.

Rad na ENIAC-u bio je u punom jeku kada se Herman Goldstein susreo sa Amerikancem mađarskog porijekla Johnom von Neumannom, koji je bio konsultant američkog tajnog programa atomske bombe i koji je radio na tome kako povećati računsku snagu za rješavanje potrebnih diferencijalnih jednačina. Kao rezultat ovog sastanka, Neumann, poznat po dostignućima u rasponu od razvoja teorije igara do doprinosa stvaranju nuklearnog oružja, počinje da sarađuje sa radnom grupom ENIAC. Zajedno razvijaju projekat za novi računar, koji, prvo, radi isključivo na elektronskim kolima, a drugo, program se u njega ne unosi na papirnoj traci, već pomoću bušene kartice, koja se zatim kodira u obliku znakovi pogodni za obradu i pohranjeni u centraliziranoj memoriji. Čak ni sami pronalazači nisu odmah shvatili vrijednost ovog principa, koji ne samo da omogućava izmjene programa, već te promjene može izvršiti i sam računarski uređaj.

Tokom rada na EDVAC-u 1945. godine došlo je do velikog sukoba između njegovih programera. Činjenica je da je EDVAC postao osnova za treći veliki teorijski rad o kompjuterskoj tehnologiji (prvi, opis "Analitičke mašine", pripadao je Charlesu Babbageu, drugi Alanu Turingu). Ali ni Mauchly ni Eckert nisu mogli generalizirati svoje znanje i apstrahirati od radio cijevi i elektronskih kola. Možda su to zanemarili iz razloga tajnosti, možda se fizičari nisu udostojili da daju strogu matematičku prezentaciju. Von Neumann je napisao “Preliminarni izvještaj o EDVAC mašini” u kojem je detaljno izložio logičku organizaciju i opšte principe rada univerzalnih računarskih uređaja. Izveštaj je poslat mnogim naučnicima iz različitih zemalja i postao je široko poznat (zbog čega ENIAC-ovi dizajneri nisu mogli naknadno da patentiraju svoj projekat).

Von Neumann je bio nadaleko poznat kao izvanredan matematičar, a naučna zajednica mu je pripisivala sve ideje koje su bile u osnovi ove mašine. U upotrebu je ušao izraz „fon Nojmanova mašina“ (tj. kompjuter). Nojman je pronašao način da poveže radni program ne žicama ili drugim vezama, već integrišući ga u memoriju mašine u kodiranom obliku. Neumann je bio taj koji je osmislio dizajn koji svi digitalni računari i danas prate. Općenito, dijagram je prikazan na slici. Pune strelice su kontrolne veze (kontrolni signali prolaze kroz njih), a isprekidane strelice su informacijske veze (kroz njih prolaze podaci i informacije). Ulazno/izlazni uređaji uključuju tastaturu, miš, monitor, disk drajv, CD ROM, štampač, skener, mikrofon, zvučnike, kater itd.

Računar mora imati:

  • · aritmetičko-logički uređaj koji izvodi aritmetičke i logičke operacije. Danas se ovaj uređaj naziva centralna procesorska jedinica. Centralna procesorska jedinica - kompjuterski mikroprocesor, koji je čip koji kontroliše sve procese koji se odvijaju u računaru;
  • · kontrolni uređaj koji organizuje proces izvršavanja programa. U savremenim računarima, aritmetičko-logička jedinica i kontrolna jedinica su kombinovane u centralni procesor;
  • · uređaj za skladištenje (memorija) za skladištenje programa i podataka;
  • · eksterni uređaji za unos/izlaz informacija.

Računarska memorija je broj numerisanih ćelija, od kojih svaka može sadržavati ili obrađene podatke ili programske instrukcije. Sve memorijske ćelije moraju biti jednako lako dostupne drugim računarskim uređajima.

Princip rada:

  • · Koristeći eksterni uređaj, program se unosi u memoriju računara.
  • · Upravljački uređaj čita sadržaj memorijske ćelije u kojoj se nalazi prva instrukcija (komanda) programa i organizuje njeno izvršavanje. Naredba može specificirati:
    • o izvođenje logičkih ili aritmetičkih operacija;
    • o čitanje podataka iz memorije za obavljanje aritmetičkih ili logičkih operacija;
    • o snimanje rezultata u memoriju;
    • o unos podataka sa eksternog uređaja u memoriju;
    • o izlaz podataka iz memorije na eksterni uređaj.
  • · Upravljački uređaj počinje izvršavati naredbu iz memorijske ćelije koja se nalazi odmah nakon upravo izvršene naredbe. Međutim, ovaj redoslijed se može promijeniti korištenjem instrukcija za prijenos kontrole (skok). Ove komande ukazuju kontrolnom uređaju da treba da nastavi izvršavanje programa, počevši od naredbe sadržane u drugoj memorijskoj ćeliji.
  • · Rezultati izvršavanja programa izlaze na eksterni računarski uređaj.
  • · Računar prelazi u stanje pripravnosti za signal sa eksternog uređaja.

Jedan od principa Von Neumannove arhitekture je da računar nikada neće morati da menja svoje ožičenje ako su sve instrukcije pohranjene u njegovoj memoriji. I čim je ova ideja sprovedena u delo u okviru „fon Nojmanove arhitekture“, rođen je savremeni kompjuter.

Kao i svaka tehnologija, računari su evoluirali u pravcu povećanja funkcionalnosti, korisnosti i ljepote. Općenito, postoji izjava koja tvrdi da je zakon: savršen uređaj ne može biti ružan po izgledu i, obrnuto, lijepa oprema nikada nije loša. Računar postaje ne samo koristan, već i dekorativni uređaj za sobu. Izgled modernog kompjutera je, naravno, u korelaciji sa von Neumannovim krugom, ali se u isto vrijeme razlikuje od njega.

Zahvaljujući IBM-u, von Neumannove ideje su implementirane u obliku principa otvorene arhitekture jedinica računarskog sistema, široko rasprostranjenog u naše vrijeme. Po ovom principu, kompjuter nije jednodelni uređaj, već se sastoji od samostalno proizvedenih delova, a načini uparivanja uređaja sa računarom nisu tajna proizvođača, već su dostupni svima. Dakle, sistemske jedinice se mogu sastaviti po principu dječjeg konstrukcionog seta, odnosno možete mijenjati dijelove za druge, moćnije i modernije, nadograđujući svoj računar (nadogradnja, nadogradnja - „podići nivo“). Novi dijelovi su potpuno zamjenjivi sa starim. Sistemska magistrala takođe čini personalne računare „otvoreno arhitektonskim“ ovo je neka vrsta virtuelnog zajedničkog puta ili jezgra, ili kanala u koji idu svi izlazi iz svih čvorova i delova sistemske jedinice. Mora se reći da veliki računari (ne personalni) nemaju svojstvo otvorenosti, oni ne mogu jednostavno da zamene nešto drugim, naprednijim, na primer, u najsavremenijim računarima možda čak i nema spojnih žica između elemenata; računarskog sistema: miš, tastatura ("tastatura" - "tastatura") i sistemska jedinica. Oni mogu međusobno komunicirati koristeći infracrveno zračenje, za to sistemska jedinica ima poseban prozor za primanje infracrvenih signala (slično daljinskom upravljaču za TV).

Trenutno, tipičan personalni računar je kompleks koji se sastoji od:

  • · glavna elektronska ploča (sistem, matična ploča), na kojoj se nalaze blokovi koji obrađuju računske informacije;
  • · kola koja upravljaju drugim računarskim uređajima, umetnuta u standardne konektore na matičnoj ploči - slotovi;
  • · diskovi za pohranu informacija;
  • · jedinica za napajanje, iz koje se napajaju sva elektronska kola;
  • · kućište (sistemska jedinica), u kojem su svi unutrašnji uređaji računara ugrađeni na zajednički okvir;
  • · tastature;
  • · monitor;
  • · drugi eksterni uređaji.

Arhitektura tipa Von Neumann (nazvana po matematičaru Johnu von Neumannu) se najviše koristi u digitalnom računarstvu i leži u osnovi gotovo svih mikroprocesorskih arhitektura. Von Neumannova arhitektura definira tip interakcije između kontrole i memorije. Upravljački dio radi na osnovu niza naredbi zvanih program, koji se pohranjuje u memoriju. Svaka instrukcija se sastoji od dva dela: operatora i operanda. Operator specificira koju vrstu operacije procesor treba da izvede (aritmetička, logička ili kontrolna operacija), a operand je adresa podataka ili memorije na kojoj se operacija treba izvesti.

arhitektura Neumann program binarni

John von Neumann

Posao fon Nojmanovog računara je da izvrši niz instrukcija koje odgovaraju operacijama koje sistem treba da izvrši. Budući da kontrolna jedinica i memorija aktivno međusobno djeluju, predviđen je poseban hardver za ubrzavanje procesa slanja podataka i naredbi. Ovi alati uključuju: komandni registar, programski brojač, akumulator i aritmetičko-logičku jedinicu (ALU).

Komandni registar, brojač komandi i pogon su glavni elementi jednog od blokova računara - „memorije“. To su registri ili memorijske ćelije čiji je kapacitet u binarnim znamenkama jednak dužini mašinske riječi. Registar komandi pohranjuje naredbu koju računar mora izvršiti nakon trenutne, a adresa sljedeće komande je pohranjena u programskom brojaču. Disk pohranjuje podatke za obradu ili prima podatke nakon toga.

Aritmetičko-logička jedinica izvodi određene aritmetičke ili logičke operacije nad podacima navedenim u naredbi.

Ovi hardveri su međusobno povezani preko jedne ili više magistrala. Autobus je električna veza između nekoliko tačaka koje mogu biti izvori ili prijemnici signala (može se uporediti sa vozilom koje preuzima i ispušta putnike). Dužina riječi mikro-mikroračunara je obično 4, 8, 16 bita, itd.

Sabirnica povezuje registre i ALU sa memorijskim i ulazno/izlaznim uređajima. U arhitekturi sa jednom sabirnicom, svaki uređaj povezan na magistralu dijeli sabirnicu s drugim uređajima, pa mu se stoga daje određeno vrijeme za prijenos informacija na magistrali ili primanje informacija od drugog uređaja. Ovog puta multipleksiranje magistrale se vrši pomoću upravljačkog kola hardverske magistrale i sinhronizuje se kontrolnom jedinicom računara.

Upravljačka jedinica obavlja glavne funkcije kontrole i sinhronizacije svih ostalih blokova računala. Računalni sistemi su obično serijska digitalna kola koja su sinhronizovana standardnim taktnim signalom koji se prenosi kroz sistem.

Svaki element računara je dizajniran na takav način da izvršava niz radnji nakon datog broja impulsa takta. Registar instrukcija prosljeđuje sljedeću instrukciju dekoderu instrukcija, koji interpretira dolazni skup bitova i izdaje odgovarajuće naredbe i upravljačkoj jedinici strojnog ciklusa i ALU-u. Upravljačka jedinica strojnog ciklusa dekodira ove naredbe, izdajući odgovarajuće signale memoriji i kontrolnim izlazima. Na ovaj način se rad ostalih komponenti sistema može sinhronizovati sa radom ALU. Memorija (ovo može biti memorija sa slučajnim pristupom ili interni registar mašine) također mora primiti upute o tome koje podatke treba obraditi.

PC arhitektura. Osnovni principi rada računara.

Računar je elektronski uređaj sposoban da automatski izvrši niz radnji određenih programom za primanje, pohranjivanje, transformaciju i izlaz informacija.

Pod arhitekturom računarskog sistema podrazumevaju se najopštiji principi njegove konstrukcije, principi rada, međusobne veze i interakcija glavnih funkcionalnih jedinica, organizacija memorije i komandni sistem. Pitanja organizacije memorije i komandnih sistema se ne razmatraju na kursevima informatike.

Klasični principi računarske arhitekture predloženi su u radu Džona fon Nojmana, G. Goldštajga i A. Burksa 1964. godine i poznati su kao „fon Nojmanovi principi”

Ovi principi su:

  • - Binarno kodiranje svih informacija koje se koriste: svi podaci u računaru (brojevi, tekst, zvuk, slike) predstavljaju se kao niz nula i jedinica.
  • - Slučajni pristup RAM ćelijama: računar mora imati poseban uređaj - RAM - gde se pohranjuju pokrenuti programi i obrađeni podaci; memorija je podijeljena na ćelije, svaka ćelija ima adresu (broj), na ovoj adresi možete čitati informacije iz ćelije u bilo kojem trenutku ili upisivati ​​informacije tamo
  • - Princip pohranjenog programa: Paragram mora biti pohranjen u memoriji računala u binarnom obliku; kao i podaci. Ovaj princip se sada čini potpuno očiglednim, ali se nije koristio u prvim računarima. Za postavljanje redoslijeda operacija bilo je potrebno povezati elemente logičkih kola računala određenim redoslijedom ugradnjom kratkospojnih žica. Korišćenje principa uskladištenog programa značajno je povećalo efikasnost korišćenja računara
  • - Princip sekvencijalnog izvršavanja operacija: Program se sastoji od niza naredbi. Svaka instrukcija je pohranjena u jednoj (ili više) memorijskih ćelija u binarnom obliku. Računar počinje da izvršava program, tj. bira vrijednost pohranjenu na određenoj memorijskoj lokaciji i izvršava naredbu koja odgovara toj vrijednosti. Računar zatim izvršava naredbu pohranjenu u sljedećoj memorijskoj ćeliji, i tako sve dok jedna od ćelija ne naiđe na komandu za zaustavljanje ili skok na neku drugu memorijsku ćeliju.

Sljedeći funkcionalni blokovi mogu se razlikovati kao dio svakog računala:

  • - Aritmetičko-logička jedinica (ALU) obavlja sve operacije konverzije podataka. Zapravo, sve transformacije se razlažu na elementarne akcije, za čiju implementaciju su dovoljne aritmetičke (sabiranje, oduzimanje, množenje, dijeljenje) i logičke (I, ILI, NE) operacije.
  • - Kontrolni uređaj (CU) - kontroliše sve računarske uređaje. ALU i kontrolna jedinica zajedno čine centralnu procesorsku jedinicu CPU-a.
  • - RAM - pohranjuje program i podatke. Memorija se sastoji od pojedinačnih ćelija; Tipično, jedna memorijska ćelija može pohraniti jedan bajt. Svaka ćelija ima broj (adresu) pomoću koje joj možete „pristupiti“ za pisanje i čitanje podataka.
  • - Ulazni uređaji - primaju informacije od korisnika (ili od nekih eksternih uređaja - senzora, antena i sl.) i pretvaraju ih u oblik pogodan za obradu na računaru.
  • - Izlazni uređaji - pretvaraju informacije pohranjene i obrađene na računaru u oblike koji su pogodni za ljudsku percepciju.

Prvi računari su izgrađeni u skladu sa von Neumannovom strukturom, koja se može predstaviti na sljedeći način: (debele linije označavaju informacijske veze, tanke linije označavaju upravljačke signale)

Kao što se vidi iz dijagrama, upravljački uređaj je sa svakim od uređaja povezan posebnim kanalom kroz koji se prenose upravljački signali. Svaki od eksternih uređaja povezan je posebnim kanalom za razmjenu informacija sa ALU-om. Sa ALU-a, podaci se već mogu zapisati u memoriju; a podaci se također mogu čitati iz memorije u ALU.

Ova struktura, kada se koristi poseban kanal za komunikaciju sa svakim uređajem, otežavala je promjenu konfiguracije računala, posebno povezivanje novih eksternih uređaja.

Moderni računari su izgrađeni na principu okosnica-modular. To znači da su svi uređaji povezani na jednu kičmu (komplet kablova). Štaviše, svi uređaji su povezani pomoću standardnih konektora, a standardizirani su i parametri električnih signala koje uređaji koriste za upravljanje i razmjenu podataka. One. svi uređaji "komuniciraju koristeći ista pravila." Ovo omogućava korisniku da promijeni kompletan set PC-a zamjenom, uklanjanjem ili dodavanjem blokova modula.

Struktura PC-a može se predstaviti na sljedeći način:

Ovdje je CPU centralna procesorska jedinica; uključuje kontrolni uređaj i aritmetičko-logički uređaj. CPU kontroliše rad svih računarskih uređaja i obavlja sve operacije obrade podataka.

RAM - memorija sa slučajnim pristupom (random access memory); pohranjuje program i podatke koji se obrađuju u trenutnom trenutku. Kada se napajanje isključi, sadržaj RAM-a se gubi.

ROM - memorija samo za čitanje; pohranjuje programe koji se izvršavaju kada se računar pokrene (uključuje), kao i neke druge važne programe. Informacije u ROM-u se zadržavaju kada se napajanje isključi. Prvi ROM-ovi su zaista bili “trajni”, tj. Informacije su im mogle biti napisane samo jednom. Moderni ROM-ovi se mogu reprogramirati, tako da se informacije pohranjene u njima mogu ažurirati.

VU - eksterni uređaji, među kojima su:

  • o uređaji za unos (na primjer, tastatura);
  • o izlazni uređaji (npr. štampač)
  • o uređaji za razmjenu podataka (na primjer, modem)
  • o uređaji za čitanje/upisivanje i skladištenje informacija (na primjer, disk jedinice i fleš diskovi)

Sa stanovišta arhitekture računara, čvrsti disk (hard disk) je takođe eksterni uređaj. Ali on igra toliko važnu ulogu da je posebno istaknut na dijagramu. Čvrsti disk čuva programe (prvenstveno operativni sistem) i podatke.

Svaki eksterni uređaj je kontrolisan od strane kontrolera - posebnog upravljačkog uređaja. Kontroler je "posrednik" između brzog CPU-a i VU-a koji sporo radi. Na primjer, nakon što je od procesora dobio naredbu za ispis teksta, kontroler je prevodi u niz elementarnih naredbi koje pisač mora izvršiti: ubaciti papir, zagrijati toner, elektrificirati bubanj, prskati boju, pritisnuti papir itd. Procesor u ovom trenutku može obavljati druge zadatke. Dakle, upotreba kontrolera poboljšava performanse računara.

Osim toga, za kontrolu vanjskih uređaja potrebni su posebni upravljački programi.

Moderni računari su izgrađeni na principu „otvorene arhitekture“. To znači da su standardi za konektore, signalne parametre i pravila za međusobnu razmjenu modula otvoreni i svaka kompanija može proizvoditi opremu u skladu sa ovim standardima. Ovo pruža širok izbor eksternih uređaja i pojedinačnih PC modula, ali su svi kompatibilni jedni s drugima.

Jedna definicija koncepta procesora data je u uvodu.

Procesor je funkcionalna jedinica računara dizajnirana za logičku i aritmetičku obradu tokova informacija po principu programske kontrole.

Procesor obavlja funkciju izvršavanja programa (lociranih u RAM-u) dohvaćanjem, provjeravanjem i uzastopnim izvršavanjem radnji propisanih instrukcijama. Drugim riječima: procesor izvršava radnje propisane naredbama nad kodiranim informacijama u skladu s programima.

U savremenim računarima, procesor (jezgro računara) nije formalna kombinacija ALU-a i centralne upravljačke jedinice, već je rezultat razvoja strukture računara, dizajniran da obezbedi visoke performanse i široke funkcionalne i logičke mogućnosti obrade informacija. Konkretno, pojava novih računara dovela je do potrebe za računarom i procesorom

1) sistemi prekida;

2) novi nivoi memorije;

3) sredstva za zaštitu memorije;

4) korišćenje posebnih vrsta indeksiranja, adresiranja informacija;

5) keš memorija komandi, grananja, predviđanja razmene itd.;

6) posebne procedure za upravljanje računarskim procesom

Svi ovi podsistemi i uređaji su delimično ili u potpunosti uključeni u procesor. Glavni novi strukturni fenomen u procesoru je SRAM.

Dakle, danas procesor ima razvijeniju strukturu, ponavljajući u određenom smislu strukturu von Neumannove mašine.

Ali nećemo se doticati novih pravaca u organizaciji procesora. Oni će biti u potpunosti obrađeni na kursu Mikroprocesori.

3.1. Računarski komandni sistem.

Komandni sistem računara određen je strukturom i formatima komandi, kao i listom (listom) komandi i metodama adresiranja.

Tim je pozvan na neki način kodirane informacije koje određuju proizvodnju u računaru nizova signala namenjenih za obavljanje određene operacije (radnje) mašine na datim numeričkim i nenumeričkim kodovima.

Pošto se, na kraju krajeva, komanda na ovaj ili onaj način unosi u računar i percipira je, onda konačni tip komande je digitalni kod.

odnosno konačni oblik programa rad računara (program se može definisati kao posebno formalizovan algoritam za obradu informacija) je program u kodiranim uputama.

3.1.1. Struktura i formati komandi.

U skladu sa uvedenom definicijom komande, struktura potonje ima operativni i adresni dijelovi(šta treba uraditi i na kojim podacima), a takođe servisni dio, definisanje posebnosti izvršenja date naredbe (modifikacije) u zavisnosti od vrednosti određenih znakovi.

Adresa(e) sadržana u adresnom dijelu naredbe, u najčešćem slučaju, označava broj RAM ćelije u kojoj je upisan (skladišten) broj uključen u operaciju (njegov kod) - sabirak, množenik, dividenda , itd., kod nenumeričkih informacija (adresa, niz znakova, stanje uređaja, itd.) Uopšteno i radi jednostavnosti, obično kažu: operandi su pohranjeni u memoriji.

Međutim, ako govorimo o naredbi kao instrukciji, onda bi njen najpotpuniji oblik trebao naznačiti ne samo adrese svih brojeva uključenih u operaciju, već i adresu ćelije u koju treba staviti rezultat, kao i adresu adresa izvora sljedeće komande. Ovo nabrajanje dovodi do potrebe da se ima u timu četiri adrese.

I u stvari, takve naredbe sa četiri adrese postoje. Timovi su počeli sa ovim “formatom”. Ali u timu može biti manje ili više adresa!

Izvorna adresa sljedeće naredbe možda neće biti prisutna jer je program (slijed naredbi) najveći prirodno i preporučljivo je da ga postavite u niz obližnjih ćelija za skladištenje. A ako se komande pišu sekvencijalno (od broja 1 do broja n), onda je vrlo jednostavno implementirati hardverski (sa brojačem!) promjenu adrese izvorne ćelije sljedeće naredbe. Imajte na umu da se ovaj redoslijed uzorkovanja zove prirodno, dok kada specificirate adresu komande u komandi poziva se red uzorkovanja prisiljen. Imajte na umu da korištenje prirodnog redoslijeda odabira naredbi dovodi do potrebe za uvođenjem posebne komande koje menjaju redosled proračuna(promjenom sadržaja brojača naredbenih ćelija). Ovo je neophodno kako bi se osigurala algoritamska izračunljivost. Kada je prisiljen u redoslijedu uzorkovanja nisu potrebne posebne komande, jer svaka komanda „mjenja” redoslijed uzorkovanja.

Važna komponenta računarske arhitekture je sistem instrukcija. Uprkos velikom broju tipova računara, na najnižem („mašinskom“) nivou imaju mnogo toga zajedničkog. Komandni sistem svakog računara obavezno sadrži sledeće grupe komandi za obradu informacija.

1. Komande za prijenos podataka (popis), kopiranje informacija s jednog mjesta na drugo.

2. Aritmetičke operacije, kojoj kompjuterska tehnologija zapravo duguje svoje rođenje. Naravno, udio računskih radnji u modernom računaru je primjetno smanjen, ali one i dalje igraju važnu ulogu u programima. Imajte na umu da osnovne aritmetičke operacije obično uključuju sabiranje i oduzimanje (ovo drugo se, unutar procesora, najčešće svodi i na sabiranje na ovaj ili onaj način). Što se tiče množenja i dijeljenja, u mnogim računarima se oni izvode pomoću posebnih programa.

3. Logičke operacije, omogućavajući računaru da analizira primljene informacije. Nakon izvršenja takve komande, pomoću uslovnog skoka, računar je u mogućnosti da izabere dalji tok izvršavanja programa. Najjednostavniji primjeri naredbi grupe koja se razmatra su poređenje, kao i dobro poznate logičke operacije AND, OR, NOT (inverzija), opisane ranije u paragrafu 1.4. Osim toga, često im se dodaje analiza pojedinačnih bitova koda, njihovo resetiranje i instalacija.

4. Smjene binarni kod lijevo i desno. Da bismo dokazali važnost ove grupe naredbi, dovoljno je prisjetiti se pravila množenja stupaca: svaki sljedeći proizvod je napisan u takvoj shemi s pomakom za jednu znamenku ulijevo. U nekim posebnim slučajevima, množenje i dijeljenje se općenito mogu zamijeniti pomakom (zapamtite da dodavanjem ili uklanjanjem nule udesno, tj. stvarnim pomjeranjem broja, možete ga povećati ili smanjiti za 10 puta).

5. Ulazne i izlazne komande informacije za razmjenu sa vanjskim uređajima. U nekim računarima, eksterni uređaji su posebne servisne memorijske adrese, tako da se unos i izlaz obavljaju pomoću popisnih komandi.

6. Kontrolne komande, implementacija nelinearnih algoritama. Ovo prvenstveno uključuje uslovne i bezuslovne skokove, kao i komande za pozivanje potprograma (skok sa povratkom). Neki računari imaju posebne komande za organizovanje ciklusa, ali to nije neophodno: bilo koji ciklus se može svesti na jednu ili drugu kombinaciju uslovnih i bezuslovnih prelaza.

Često ova ista grupa naredbi uključuje operacije kontrole procesora kao što su stop ili NOP - nema operacije. Ponekad se izdvajaju u posebnu grupu. Kako se povećava složenost procesorskog uređaja, povećava se i broj takvih instrukcija.

Svaka kompjuterska komanda se obično sastoji od dva dela - operaciona sala I adresa. Operativni dio (inače se zove šifra operacije - COP) označava koju radnju treba izvršiti na informaciji. Adresni dio opisuje gdje se pohranjuju korištene informacije i gdje treba staviti rezultat. Nekoliko komandi za kontrolu rada mašine možda nemaju deo adrese, na primer, u komandi za zaustavljanje; operativni dio je uvijek dostupan.

Operativni kod se može smatrati određenim konvencionalnim brojem u opštoj listi komandnih sistema. U osnovi, ova lista je izgrađena u skladu sa određenim unutrašnjim obrascima, iako oni nisu uvijek očigledni.

Adresni dio ima mnogo veću raznolikost i treba ga detaljnije razmotriti.

Prije svega, imajte na umu da naredbe mogu biti jedno-, dvo- i troadresni u zavisnosti od broja mogućih operanda.

Prvi računari su imali najjednostavniji i najintuitivniji komandni sistem sa tri adrese. Na primjer: uzmite brojeve iz memorijskih adresa A1 i A2, saberite ih i stavite zbir u adresu A3. Ako je operacija zahtijevala manji broj adresa, onda se dodatne jednostavno nisu koristile. Recimo da su u popisnoj operaciji bile naznačene samo izvorne i prijemne ćelije informacija A1 i A3, a sadržaj A2 nije imao značenje.

Komanda sa tri adrese bila je laka za dešifrovanje i zgodna za upotrebu, ali kako je količina RAM-a rasla, njena dužina je postala preterano velika. Zaista, dužina takve komande je zbir dužine tri adrese i koda operacije. Iz toga slijedi, na primjer, da za skromnu RAM memoriju od 1024 ćelije, samo pisanje adresnog dijela zahtijeva 3 * 10 = 30 binarnih bitova, što nije baš zgodno za tehničku implementaciju. Stoga su se pojavile dvoadresne mašine kod kojih je dužina komande smanjena eliminacijom adrese za snimanje rezultata. U takvim računarima, rezultat operacije je ostao u posebnom registru ( guja) i bio je pogodan za upotrebu u kasnijim proračunima. U nekim mašinama rezultat je bio zapisan umjesto jednog od operanada.

Dalje pojednostavljivanje komande dovelo je do stvaranja unicast mašina. Razmotrimo komandni sistem takvog računara na konkretnom jednostavnom primjeru. Pretpostavimo da treba da saberemo brojeve pohranjene u RAM adresama A1 i A2, a zbroj stavimo u A3. Da bi riješio ovaj problem, unicast mašina će morati da pokrene tri komande:

  1. izvući sadržaj ćelije A1 u sabirač;
  2. dodati sabirač sa brojem iz A2;
  3. upiši rezultat sabirača na A3.

Moglo bi se činiti da bi unikastnoj mašini bilo potrebno tri puta više komandi da izvrši zadatak nego mašini sa tri adrese. U stvari, to nije uvijek slučaj. Pokušajte da isplanirate sopstveni program za izračunavanje izraza Y=(X1+X2)*X3/X4 i bićete iznenađeni kada otkrijete da će vam trebati 3 komande sa tri adrese i samo 5 jednostrukih komandi. Dakle, unicast mašina je na neki način još efikasnija, jer ne upisuje nepotrebne međurezultate u memoriju.

Radi kompletnosti, treba reći o mogućnosti implementacije mašine bez adrese (nulte adrese) koja koristi poseban način organizovanja memorije - stog. Razumijevanje principa takve mašine zahtijevalo bi neka prilično detaljna objašnjenja; Istovremeno, sada se računari bez adrese praktički ne koriste. Stoga ćemo se ograničiti samo na navođenje činjenice da je na sličan način uređen komandni sistem bio osnova nekih programabilnih mikrokalkulatora poput “B3-21” i “B3-34” i sl.

© E.A.Eremin, 1997
Iz knjige:
Eremin E.A. Kako funkcioniše savremeni računar. - Perm: izdavačka kuća PRIPIT, 1997. 176 str.

Ako pronađete grešku, odaberite dio teksta i pritisnite Ctrl+Enter.