Osnovna arhitektura računara: Udžbenik. Procesori. Računarski komandni sistem. Kontrolni uređaji. Organizacija intraprocesorskih informacijskih ulazno/izlaznih sistema Vrste kompjuterskih komandi

Funkcionalna i strukturna organizacija računara.

Okidači

Ovo je memorijski element. Uređaj sposoban za pamćenje, pohranjivanje itd. informacije.

RS japanke se sastoje od dvije kapije, jedna kapija je ili ne, drugo i ne.

RS okidač pamti koji od njegovih ulaza je zadnji put primio signal jednak jedan. Ako je signal primijenjen na S ulaz, onda ga flip-flop pohranjuje. Ako je signal primijenjen na R ulaz, onda flip-flop pohranjuje nulu.

0 1 1 - set 1

1 0 0 - set 0

1 1 - nije dozvoljeno

Povezivanjem sabirača u kaskadi, možete dobiti logičko kolo sabirača za binarne brojeve sa bilo kojim brojem cifara.

Sabirači i polusabirači su jednociklična logička kola. Okidači su višeciklični.

Registri su namijenjeni za snimanje, pohranjivanje i konverziju brojeva upisanih u njih. Kao elementarna ćelija registra koristi se okidač.

Brojač je jedinica dizajnirana za pola broja ulaznih signala i zapisivanje rezultata u binarnom kodu.

Ovo je apstraktni model koji opisuje mogućnosti računara. Određuje se tipom zadataka koji se rješavaju i zahtjevima za resursima i tipovima zadataka (memorija, karakteristike procesora).

Strukturna organizacija računara je fizički model koji uspostavlja redosled i odnose komponenti i blokova.

Naredba je skup informacija, u obliku binarnog koda, koji zauzimaju određena polja neophodna da procesor izvrši potrebne radnje.

Format komande je dogovorena struktura njenih polja, kod, uključujući šifru operacije i adrese operanada, i adresu rezultata.

Policajac A1 A3 Policajac A1 A2 A3

Policajac. ß---a3---à

Metode adresiranja: adresna i asocijativna (pretraga po sadržaju - pregled svih ćelija za identifikaciju kodova koji sadrže naredbu).

Pretraživanje adrese – informacije se preuzimaju iz memorije po broju koji se nalazi u ćeliji adrese. Po izgledu može biti eksplicitna ili implicitna. Eksplicitno – ne sadrži ćelije koda adrese. Implicitno adresiranje se koristi u adresiranju steka.

Stek je prazan pisati pisati čitati B čitati Stek je prazan

Stog je grupa sekvencijalnih memorijskih ćelija ili registara. Ne postoji adresa steka, a kontrolna šema se formira prema sledećem pravilu. Samo jedan registar je dostupan za čitanje ili pisanje, jedna ćelija je vrh steka. Zadnji upisani registar će se smatrati prvim.

Automatsko indeksiranje adresiranja – koristi se u modernim računarima. Sadržaj registarske memorije se ili povećava ili smanjuje, prije ili nakon operacije, za trajno određenu, specificiranu količinu. Ovaj tip se koristi pri obradi velikih količina podataka.



Princip akademika Gluškova.

Univerzalni uređaj za obradu informacija (1956). Sastoji se od registara, sabirača i drugih čvorova koji vam omogućavaju primanje, pohranjivanje i transformaciju informacija. Proces funkcionisanja uređaja za obradu informacija u vremenu sastoji se od niza taktnih intervala u kojima radna jedinica obavlja određene operacije, a izvršavanje ovih operacija se odvija prema kontrolnim signalima.

Mikroprogram je niz mikronaredbi koje osiguravaju izvršenje operacije.

Mikronaredba je niz kontrolnih signala.

Opće informacije. Poziva se fiksni skup instrukcija određenog mikroprocesora komandni sistem. Funkcionalnost procesora određena je kombinacijom osnovni komande sa različitim kodovima operacija. Ukupan broj U sistemu uvijek postoji više naredbi (kodova operacija) od broja osnovnih naredbi. Na primjer, osnovna naredba uključuje MOV dst, scr naredbu, koja pruža funkciju slanja podataka od izvornog scr do odredišnog dst. Takvih komandi u sistemu može biti mnogo. Komandni sistem je predstavljen u obliku tabele. Tablica može imati drugačiju strukturu, ali obično sadrži sljedeće informacije o naredbi:

  • mnemonički naredba, što je skraćenica od naziva naredbe. Da biste to učinili, koristite 3–4 latinična slova naziva operacije koju izvodi naredba. Mnemonika je zgodan oblik predstavljanja operacijskog koda komande. Takođe se koristi kada se opisuje naredba u asemblerskom jeziku. Program asemblera pretvara mnemoničku notaciju kodova operacija u odgovarajuće binarne ekvivalente;
  • heksadecimalni kodovi komande;
  • uticaj izvršene komande na zastavice registar statusa programa;
  • broj bajtova u timu i broj mašinskih ciklusa i ciklusa, potrošeno na izvršavanje naredbe;
  • verbalno i/ili simbolički opis operacija koju izvodi komanda.

Često je, radi praktičnosti, komandni sistem podijeljen u zasebne grupe na osnovu funkcionalnosti. Na primjer, komandni sistem mikroprocesora KR580VM80, koji sadrži 78 osnovnih naredbi, podijeljen je u 5 grupa. Ispod je kratak opis funkcionalnih karakteristika komandi svake grupe.

Komande se kreću od 1 do 3 bajta u dužini. Opkod se uvijek stavlja u prvi bajt naredbe. Drugi bajt naredbe je dodijeljen za neposredni operand ili adresu porta, drugi i treći bajt su adresa memorijske ćelije. Komande dozvoljavaju eksplicitno postavljanje samo jedne memorijske adrese, tj. pripadaju klasi unicast komandi. Kada opisujete komande, koristite sljedeće oznake:

  • src, dst – 8-bitni izvor i odredište. Izvor ili odredište može biti jedan od 8-bitnih registara A, B, C, D, E, H ili memorijska ćelija M, kojoj je pristup omogućen parom registara H L, koji sadrži adresu bajta koji se šalje. U kodu operacije, izvorni src i odredišni dst su specificirani kao trobitni kod SSS i DDD;
  • RP – dvobitni kod registarskih parova BC, DE, N L, A + RP (sign register) ili pokazivač steka SP;
  • podaci, podaci 16 – 8- i 16-bitni operand;
  • addr, port – 16-bitna memorijska adresa i 8-bitna adresa porta;
  • (addr), (SP) – sadržaj memorijske ćelije na navedenim adresama;
  • (SP)+, -(SP) – operacije post-inkrementa i pre-inkrementa sa stekom. Naredbe za prosljeđivanje. Grupa sadrži najčešće korišćene instrukcije za prenos podataka u programima, čiji izvori i odredišta mogu biti unutrašnji registri procesora, glavna memorija i eksterni uređaji. Komande nemaju efekta na oznake statusnog registra.

Mnemonika naredbe odražava karakteristike operacije koja se izvodi i način adresiranja. Na primjer, mnemonički MOV, MVI označava kretanje operanda; LDA, LDAX, LXI, LHLD – za utovar (Load); STA, STAX, SHLD – za uštedu. Za operacije sa bajtovima koristi se mnemonika MOV, MVI, LDA, STA, LDAX, STAX; za operacije sa riječima – LXI, LHLD, SHLD. Direktno adresiranje prilikom učitavanja i pohranjivanja sadržaja akumulatora odražavaju mnemonike LDA i STA, indirektno adresiranje mnemonike LDAX i STAX.

Timovi ove grupe su sažeti u tabeli. 5.8. Oni vam omogućavaju da:

  • operacija prenosa podataka između izvora (src) i odredišta (dst), što je zapisano kao dst ← src (komanda 1). Izvori i odredišta su interni registri opće namjene(A, B, C, D, E, H) i memorijske ćelije M. Bilo koja kombinacija je dozvoljena, osim M ← M, tj. ponovno učitavanje memorijske ćelije M nije dozvoljeno;
  • loading registri opšte namene i ćelija M sa drugim bajtom B2 (komanda 2) i parovi registara BC, DE, HL (uključujući pokazivač steka SP) sa drugim B2 i trećim B3 bajtom (komanda 3), a B3 se uvek učitava u parovi viših registara (B, D, H), B2 – do nižih registara (C, E, L);
  • prosljeđivanje podaci između baterije A i glavne memorije (naredbe 4÷7), između baterije i vanjskog uređaja (naredbe 8, 9). Prilikom prenosa između baterije A i memorije, adrese memorijskih ćelija nalaze se u registarskim parovima BC, DE ili u trećem i drugom bajtu (B3B2) komande;

Tabela 5.8

Mnemonika

Izvršeno

operacija

operacije

dst src

A (adresa)

napomene: RP – 2-bitni kod registarskih parova BC, DE, HL, A + RP (registar karakteristika) ili pokazivač steka SP; B – bajtovi, U – ciklusi, T – ciklusi.

  • prosljeđivanje podaci između para HL registara i memorije (timovi 10, 11). U ovom slučaju, operand iz L registra se šalje u ćeliju sa adresom B3B2, formiranu od trećeg i drugog bajta naredbe, a iz H registra na jednu višu adresu. Tokom obrnutog prosljeđivanja, prvo se prvi operand učitava iz ćelije sa adresom B3B2 u L registar, zatim se drugi učitava iz ćelije sa adresom B3B2+1 u H registar;
  • prosljeđivanje podaci između parova registara, uključujući par iz akumulatora A i RP karakteristika registra, i stek (timovi 12, 13). Prilikom pisanja u stek, sadržaj pokazivača steka se smanjuje za jedan, a na adresi SP-1 prvi operand se učitava u jedan od registara B, D, H ili A, zatim se sadržaj pokazivača steka smanjuje ponovo za jedan, a drugi operand se učitava na adresu SP–2 iz registra C, E, L ili RP. Kada se iskače iz steka, jedan od registara C, E, L ili RP se prvo učitava sa operandom pohranjenim u ćeliji sa adresom SP pokazivača steka. Sadržaj se zatim povećava za jedan, iz ćelije na adresi SP + 1, drugi operand se učitava u jedan od registara B, D, H ili A, a sadržaj pokazivača steka se ponovo povećava za jedan i uzima vrijednost SP + 2. Treba napomenuti da se prilikom učitavanja registarskih parova A, RP (njegov kod RP = 11) iz steka mijenja stanje okidača registra atributa RP. Ovo je jedina naredba (od svih naredbi za prijenos podataka) koja utječe na atribute;
  • prosljeđivanje sadržaj para registara HL u pokazivač steka SP i programski brojač PC (instrukcije 14, 15);
  • razmjena podaci između HL i DE registarskih parova, HL registarskog para i steka (instrukcije 16, 17). Tokom razmjene, sadržaj HL registarskog para se stavlja u DE par ili stek, a sadržaj DE registarskog para ili steka se stavlja u HL par. Operacija zamjene je označena simbolom "↔".

Aritmetičke komande. Računske mogućnosti mikroprocesora su ograničene na jednostavne instrukcije za sabiranje i oduzimanje na 8-bitnim operandima. Realiziraju se operacije množenja i dijeljenja programski. Skup komandi (Tabela 5.9) omogućava vam da izvršite:

  • dodatak I oduzimanje 8-bitni operandi sa i bez prijenosa (instrukcije l÷8), dok je jedan od operanada uvijek u akumulatoru, a drugi je u jednom od registara opće namjene (memorija M) ili je drugi bajt komande . Naredbe koje uzimaju u obzir vrijednost prijenosnog signala C registra karakteristika koriste se pri sabiranju i oduzimanju višebajtnih brojeva. U istu svrhu, možete koristiti naredbu 9 za dodavanje sadržaja para HL registara sa 16-bitnim adresabilnim registrom;
  • aritmetika poređenje sadržaj akumulatora A sa sadržajem jednog od registara opšte namene Rn (memorija M) ili drugog bajta B2 (naredbe 10+11). U ovom slučaju se vrši oduzimanje A – Rn ili A – B2. Rezultat poređenja je određen signalima okidača registra karakteristika: ako je Z = 1, onda je A = Rn ili A = B2; ako je S = 1, tada je A > Rn ili A > B2. Sadržaj baterije se ne menja;
  • povećanje I smanjiti od 1 (prirast I dekrement) sadržaj registara i registarskih parova. Prilikom čestog programiranja

Tabela 5.9

Mnemonika

Operacija koju treba izvesti

operacije

A ← A + src + C

A ←A – src – C

A ← A + podaci + CY

A ← A – podaci

A ← A – podaci – CY

A – scr (poređenje)

A – scr (poređenje)

dst ← dst – 1

A ← 2/10-ispravka A

postoji potreba za povećanjem ili smanjenjem vrijednosti operanda za jedan. Da biste to učinili, možete koristiti operacije sabiranja A + B2 ili oduzimanja A – B2, upisujući B2 = 1 u program. 16-bitni operandi;

decimalna korekcija sadržaj akumulatora nakon izvođenja aritmetičkih operacija u BCD 8421 (instrukcija 16). U ovom slučaju, sadržaj akumulatora je predstavljen kao dva grickalica, od kojih svaki odgovara decimalnoj cifri. Ispravka se vrši blokom decimalne korekcije u skladu sa pravilima navedenim u § 5.2 (str. 99).

Naredbe logičkih operacija. Komande ove grupe (Tabela 5.10) vam omogućavaju da implementirate:

  • dvostruke logičke operacije množenje(I), dodatak(ILI) i ekskluzivno ILI preko 8-bitnih operanda (instrukcije 1÷6). Logičke operacije su bitne i izvode se nezavisno za svaki od osam bitova operanda. Operand koji se ne može adresirati nalazi se u akumulatoru, a rezultat operacije također ide tamo. Drugi operand je sadržaj jednog od registara opšte namene (memorijska ćelija M) ili drugi bajt instrukcije;
  • invert sadržaj baterije A (komanda 7);
  • komande zastavice (8, 9) invertovanje I instalacije bit C okidača prijenosa registra atributa;
  • dvije vrste ciklični pomaci sadržaj baterije lijevo i desno (Yul-13 komande). Prvi tip pomaka (smjene bez prijenosa) se realizuje zatvaranjem svih okidača akumulatora u prsten sa drugom vrstom pomaka (smjene sa prijenosom, ili produženim pomakom), a u registru atributa se dodatno uvodi nosivi okidač C; prsten. Logički i aritmetički pomaci u oba smjera koji nedostaju u komandnom sistemu mogu se implementirati tako što se najprije postavi C bit na 0 ili 1 zajedno sa proširenim pomakom.

Kontrolne komande prenosa. Prilikom prijenosa kontrole, sekvencijalni proces dohvaćanja sadržaja memorijskih ćelija je prekinut i procesor se adresira na drugu memorijsku oblast. Istaknite

Tabela 5.10

Mnemonika

Izvršeno

operacija

operacije

A ← A l src – množenje

A ← A v src – zbrajanje

A ← A © src – uklj. ILI

A ← A l podaci

A ← A © podaci

tri vrste komandi za prenos kontrole: komande tranzicija na datoj adresi (JMP), poziv potprogrami (CALL) i povratak iz potprograma (RET). To uključuje bezuslovno I uslovno timovi. Uslovne komande izvode tranziciju, pozivaju potprogram i vraćaju se iz potprograma u zavisnosti od stanja zastavice određenog vrednošću signala jednog od četiri okidača Z, C, S, P atributnog registra (ili stanja) . Procesor 8080 koristi oba stanja (1 i 0) od četiri zastavice (Z, C, P, S), omogućavajući 8 opcija za svaku komandu (Tabela 5.11). Oznaka atributa (uslova) je naznačena u mnemonici uslovnih naredbi J**, C**, R** umjesto zvjezdica (**). Na primjer, NC atribut, za koji se prijelazni uvjeti smatraju ispunjenim kada je C = 0, odgovara JNC komandi.

I uslovni i bezuslovni skokovi i pozivi potprograma koriste punu 16-bitnu adresu za prosleđivanje za prenos kontrole na bilo koju tačku u memorijskom prostoru od 64 kilobajta.

Tabela 5.11

Pogledajmo karakteristike komandi predstavljenih u tabeli. 5.12.

Koristeći trobajtnu JMP instrukciju, implementira se bezuslovno prenos kontrole. U ovom slučaju, drugi i treći bajt komande (adresa nastavka programa) se unose u brojač PC komandi (sadržaj B3 je u bitovima visokog, B2 u nižem).

Timovi uslovno upravljački prenosi J** implementiraju grananje računskog procesa u zavisnosti od uslova. Kada je uslov (DA) ispunjen, drugi i treći bajt naredbe se unose u PC brojač, u suprotnom (NE) sadržaj brojača se povećava za 3 jedinice. Program se nastavlja na adresi koja se nalazi u programskom brojaču, tj. od sledeće komande.

Tabela 5.12

Mnemonika

Izvršeno

operacija

operacije

Timovi bezuslovno(POZIV) i uslovno(SA**) poziva koriste se za pristup potprogramima pohranjenim u drugom dijelu glavne memorije. Ove upute uvijek pružaju mogućnost povratka na prekinuti glavni program pohranjivanjem sadržaja brojača PC programa na stog. Nakon izvršenja operacije vraćanja:

  • at bezuslovno nazovi ili ispunjenost uslova drugi i treći bajt komande se unose u brojač programa računara;
  • at neispunjavanje uslova sadržaj programskog brojača se povećava za 3 jedinice.

Program se nastavlja na adresi koja se nalazi u PC programskom brojaču.

Skup sadrži naredbe koje vam omogućavaju implementaciju bezuslovno(RET) i uslovni (K**) prenos kontrole za povratak na prekinuti program. Kada se ove instrukcije izvrše, povratna adresa se ponovo upisuje sa steka na brojač PC programa, za šta se koristi metoda postinkrementnog adresiranja. Ako povratni uvjet nije ispunjen (za naredbu s uvjetom), prijelaz na sljedeću naredbu vrši se povećanjem sadržaja programskog brojača PC za jedan. Povratne instrukcije su instrukcije od jednog bajta jer pokazivač steka SP pohranjuje adresu lokacije steka sa povratnom adresom prekinutom programu.

PCHL instrukcija učitava programski brojač PC sa adresom pohranjenom u registarskom paru HL.

Generalni menadžment timovi. Komande ove grupe (tabela 5.13) služe za podešavanje režima rada mikroprocesora. RST instrukcija se koristi za ponovno pokretanje mikroprocesora i prilikom servisiranja prekida. Prilikom izvršavanja:

  • sadržaj programskog brojača se prenosi u stek na adresama SP – 1, SP – 2, formiranim u pokazivaču steka, čime se obezbeđuje povratak u glavni program;
  • 16-bitna adresa početka jednog od 8 servisnih programa prekida se šalje programskom brojaču.

Tabela 5.13

Mnemonika

Izvršeno

operacija

operacije

–(SP) ← PC ← 8×n, n = 0 – 7

Omogući prekide

Onemogući prekide

Čitanje maske

Postavljanje maske

Nema operacije

Komanda za omogućavanje prekida EI postavlja okidač za omogućavanje prekida INTE u jedno stanje, uzrokujući da mikroprocesor odgovori na zahtjeve za prekid. Komanda za onemogućavanje DI prekida postavlja INTE flip-flop na nulu. Prazna NOP instrukcija se koristi u programabilnim petljama kašnjenja. Naredba HLT stop uzrokuje prekid izvršavanja programa.

Važno sastavni dio Arhitektura računara je sistem komandi. Uprkos veliki broj varijeteti računara, na najnižem („mašinskom“) nivou imaju mnogo 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 prema specijalni programi. 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 vrši 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 poslednje vreme sve velika uloga Skup instrukcija sadrži naredbe za konverziju iz jednog formata podataka u drugi (na primjer, iz 8-bitnog u 16-bitni, itd.), koje značajno pojednostavljuju obradu podataka različite vrste , 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 proizilazi iz č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 šaljivo 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 naredbi za kontrolu rada mašine možda nemaju dio adrese, na primjer, 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 potrebna manji broj adrese, onda dodatne jednostavno nisu korištene. 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 se riješio ovaj problem, unicast mašina će morati da izvrši tri komande: izdvojiti sadržaj ćelije A1 u sabirač; dodati sabirač sa brojem iz A2; 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 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 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 smo, u opisivanju strukture mašinske instrukcije, koristili 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, istaknemo 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 uzastopno lociranih ćelija (na jezicima visok nivo strukture ove vrste kasnije su nazvane nizovi). Prve dvije generacije kompjutera dale 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 indeksnih ćelija 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 standarda pravi broj. Sve količine informacija počele su se mjeriti u jedinicama koje su višestruke riječi: dvostruka riječ, pola riječi, 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čito 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. Još nekoliko karakteristika pojavilo se u automobilima treće generacije: različite dužine komande u zavisnosti od načina adresiranja podataka, prisutnosti posebne ultra-slučajne registarske memorije, izračunavanja efektivne RAM adrese kao zbira više registara itd. Sve je to dalje razvijeno u kompjuterima četvrte generacije, za koje je kapacitet bita mikroprocesora postao jedan od glavnih najvažnije karakteristike. Razmatranje strukturnih karakteristika računarske memorije četvrte generacije odložićemo do sledećeg odeljka.

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 koda komande 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 pomoću kojeg ć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 odredišnog prijemnika 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, nazvana 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 napisana adresa posljednja. Ovu logičnu organizaciju formira poseban brojač. Ovaj brojač se naziva pokazivač steka SP, koji je mikroprocesorski registar. Memorijska ćelija u kojoj trenutno može se napisati, na primjer, poziva se povratna adresa 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.

Formira ga skup implementiranih mašinskih radnji 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,

CPU 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.