Perustietokoneen komentojärjestelmä. Tietokoneen komentojärjestelmä ja menetelmät tietojen saamiseksi

Tärkeä osa tietokonearkkitehtuuria on komentojärjestelmä. Huolimatta tietokoneiden suuresta määrästä, alimmalla ("kone") tasolla niillä on paljon yhteistä. Minkä tahansa tietokoneen komentojärjestelmä sisältää välttämättä seuraavat tiedonkäsittelykomentoryhmät.

1. Tiedonsiirtokomennot (laskenta), tietojen kopioiminen paikasta toiseen.

2. Aritmeettiset operaatiot, joille tietotekniikka itse asiassa on nimensä velkaa. Tietenkin laskennallisten toimintojen osuus nykyaikaisessa tietokoneessa on vähentynyt huomattavasti, mutta niillä on silti tärkeä rooli ohjelmissa. Huomaa, että aritmeettisiin perusoperaatioihin kuuluu yleensä yhteen- ja vähennyslasku (jälkimmäinen loppujen lopuksi useimmiten tavalla tai toisella pelkistyy myös yhteenlaskuksi). Mitä tulee kertomiseen ja jakamiseen, ne suoritetaan monissa tietokoneissa erityisohjelmien mukaan.

3. Loogiset toiminnot, joiden avulla tietokone voi analysoida käsiteltävää tietoa. Yksinkertaisimpia esimerkkejä ovat vertailu sekä tunnetut loogiset operaatiot AND, OR, NOT (inversio). Lisäksi niihin lisätään usein yksittäisten koodibittien analysointi, nollaus ja asennus.

4. Binäärikoodin siirrot vasemmalle ja oikealle. Tämän komentoryhmän tärkeyden osoittamiseksi riittää, että muistaa kertolasääntö sarakkeessa: jokainen seuraava tulo kirjoitetaan tällaisessa kaaviossa siirtymällä yhdellä numerolla vasemmalle. Joissakin erityistapauksissa kerto- ja jakolasku voidaan yleensä korvata siirrolla (muista, että lisäämällä tai poistamalla nolla oikealle, eli siirtämällä desimaalilukua, voit suurentaa tai pienentää sitä 10 kertaa).

5. Komennot tiedon syöttämiseen ja ulostuloon ulkoisten laitteiden kanssa vaihtamista varten. Joissakin tietokoneissa ulkoiset laitteet ovat erityisiä palvelumuistiosoitteita, joten syöttö ja tulostus suoritetaan laskentakomennoilla.

6. Ohjauskomennot, jotka toteuttavat epälineaarisia algoritmeja. Ensinnäkin tämän tulisi sisältää ehdolliset ja ehdottomat hyppyt sekä ohjeet aliohjelmaan pääsemiseksi (hyppy paluulla). Joillakin tietokoneilla on erityiset ohjeet syklien järjestämiseen, mutta tämä ei ole välttämätöntä: sykli voidaan lyhentää yhdeksi tai toiseksi ehdollisten ja ehdottomien hyppyjen yhdistelmäksi. Usein sama komentoryhmä sisältää muutaman toiminnon prosessorin ohjaamiseksi - kuten "stop" tai NOP ("no operation"). Joskus heidät erotetaan erityisessä ryhmässä.

Prosessorilaitteen monimutkaisuuden kasvaessa myös ohjausbittien tilaa analysoivien ja niihin vaikuttavien käskyjen määrä kasvaa. Tässä voidaan esimerkiksi nimetä prosessorin toimintatilan bitit ja bitit, joilla ohjataan keskeytysmekanismeja ulkoisista laitteista.


Viime aikoina yhä tärkeämpää roolia käskyjoukossa ovat ohjeet muuntamiseen tietomuodosta toiseen (esimerkiksi 8-bittisestä 16-bittiseksi jne.), jotka yksinkertaistavat huomattavasti erityyppisten tietojen käsittelyä, mutta periaatteessa voidaan korvata useiden yksinkertaisempien komentojen sarjalla.

Ohjejärjestelmä huomioon ottaen on mahdotonta puhua kahdesta nykyaikaisesta, keskenään kilpailevasta suunnasta sen rakenteessa: tietokone, jossa on täydellinen ohjesarja CISC (Complex Instruction Set Computer) ja rajoitettu joukko - RISC (Reduced Instruction Set Computer). Jako syntyi siitä syystä, että suurimman osan ajasta tietokoneen on suoritettava pieni osa käskyjoukostaan, kun taas loput käytetään satunnaisesti (yhdessä suosituista artikkeleista tämä muotoiltiin vitsillä seuraavaksi visuaaliseksi analogioksi: "20 % väestöstä juo 80 % oluesta"). Siten, jos rajoitat operaatioiden joukkoa merkittävästi yksinkertaisimpiin ja lyhimpiin, mutta optimoit ne huolellisesti, saat melko tehokkaan ja nopean RISC-koneen. Totta, sinun on maksettava nopeudesta "hylättyjen" komentojen ohjelmistotuotannon tarpeella, mutta usein tämä hinta on perusteltu: esimerkiksi tieteellisissä laskelmissa tai tietokonegrafiikassa nopeus on paljon tärkeämpää kuin ohjelmointiongelmat. Nykyaikaisten mikroprosessorien käskyjärjestelmään liittyviä kysymyksiä käsitellään tarkemmin myöhemmin tässä luvussa.

Yhteenvetona korostamme vielä kerran, että perusohjeisto on muuttunut melko vähän tietokoneiden nopean kehityksen aikana. Samaan aikaan menetelmät, joilla määritetään muistissa olevan tiedon sijaintiosoite, ovat kokeneet merkittäviä muutoksia ja ansaitsevat erityishuomiota.

Tietokonekomento koostuu yleensä kahdesta osasta - toiminnallisesta ja osoitteesta. Operatiivinen osa (muuten sitä kutsutaan myös toimintakoodiksi - COP) osoittaa, mitä toimintoa tiedolla on suoritettava. Osoite-osassa kerrotaan, mihin käytetyt tiedot on tallennettu. Muutamilla koneen toimintaa ohjaavilla komennoilla ei ehkä ole osoiteosaa, esimerkiksi pysäytyskomennossa; käyttöosa on aina saatavilla.

Toimintokoodi voidaan kuvitella jonkin ehdollisena numerona komentojärjestelmän yleisessä luettelossa. Pohjimmiltaan tämä luettelo on rakennettu tiettyjen sisäisten mallien mukaisesti, vaikka ne eivät aina ole ilmeisiä.

Osoiteosassa on paljon laajempi valikoima, ja sitä tulisi harkita yksityiskohtaisemmin.

Ensinnäkin todetaan, että käskyt voivat olla yksi-, kaksi- ja kolmiosoiteisia, riippuen niihin osallistuvien operandien lukumäärästä.

Ensimmäisissä tietokoneissa oli yksinkertaisin ja intuitiivisin kolmen osoitteen komentojärjestelmä. Esimerkiksi: ota lukuja muistiosoitteista A1 ja A2, laske ne yhteen ja laita summa osoitteeseen A3. Jos operaatio vaati pienemmän määrän osoitteita, ylimääräisiä ei yksinkertaisesti käytetty. Oletetaan, että laskentatoimessa ilmoitettiin vain tiedon lähteen ja vastaanottajan solut A1 ja A3, eikä A2:n sisällöllä ollut merkitystä.

Kolmen osoitteen komento oli helppo tulkita ja kätevä käyttää, mutta RAM-muistin kasvaessa sen pituudesta tuli kohtuuton. Itse asiassa käskyn pituus on kolmen osoitteen pituuden ja toimintakoodin summa. Tästä seuraa esimerkiksi, että vaatimattomalle 1024 solun RAM-muistille tarvitaan vain 3 * 10 = 30 bittiä yhden käskyn osoiteosan kirjoittamiseen, mikä ei ole kovin kätevää teknisessä toteutuksessa. Siksi ilmestyi kaksiosoitekoneet, joiden käskyn pituutta lyhennettiin poistamalla tulostietueen osoite. Tällaisissa tietokoneissa operaation tulos jäi erityiseen rekisteriin (summain) ja soveltui käytettäväksi myöhemmissä laskelmissa. Joissakin koneissa tulos kirjoitettiin yhden operandin sijasta.

Komennon yksinkertaistaminen edelleen johti unicast-koneiden luomiseen. Harkitse tällaisen tietokoneen komentojärjestelmää tietyssä yksinkertaisessa esimerkissä. Olkoon tarpeen lisätä soluihin tallennetut luvut, joiden RAM-osoite on A1 ja A2, ja sijoittaa summa soluun, jonka osoite on A3. Tämän ongelman ratkaisemiseksi unicast-koneen on suoritettava kolme komentoa:

Pura solun A1 sisältö summaimeen;

Lisää summain numerolla A2;

Kirjoita tulos summaimesta A3:een.

Saattaa vaikuttaa siltä, ​​että yksilähetyskone tarvitsisi kolme kertaa enemmän komentoja ongelman ratkaisemiseksi kuin kolmiosoitekone. Itse asiassa näin ei aina ole. Yritä suunnitella oma ohjelmasi lausekkeen A5 = (A1 + A2) * 33 / A4 laskemiseksi, niin huomaat, että tarvitset kolme kolmiosoitekomentoa ja yhteensä viisi yksiosoitekomentoa. Unicast-kone on siis jollain tapaa vieläkin tehokkaampi, koska se ei kirjoita välituloksia tarpeettomasti muistiin.

Täydellisyyden vuoksi on sanottava mahdollisuudesta toteuttaa osoitteeton (nollaosoite) kone käyttämällä erityistä tapaa järjestää muisti - pino. Tällaisen koneen periaatteiden ymmärtäminen vaatisi joitain melko yksityiskohtaisia ​​selityksiä. Nykyään osoitteettomia tietokoneita ei käytännössä käytetä. Siksi rajoitumme mainitsemaan, että tällä tavalla järjestetty komentojärjestelmä oli joidenkin ohjelmoitavien mikrolaskimien (esim. BZ-21 ja BZ-34 tyypit ja vastaavat) perusta.

Tähän asti olemme käyttäneet konekäskyn rakenteen kuvauksessa intuitiivista tiedon osoitteen käsitettä. Tarkastellaan nyt kysymystä RAM-elementtien käsittelemisestä yksityiskohtaisemmin ja tiukasti. Muisti järjestettiin yksinkertaisimmin kahden ensimmäisen sukupolven tietokoneissa. Se koostui erillisistä soluista, joiden jokaisen sisältö luettiin tai kirjoitettiin kokonaisuutena. Jokaisella muistisolulla oli oma numeronsa, jota kutsuttiin osoitteeksi. Ilmeisesti vierekkäisten RAM-solujen osoitteet ovat peräkkäisiä kokonaislukuja, ts. eroavat yhdellä. Tarkasteltavana olevissa tietokoneissa käytettiin vain yhden tyyppisiä tietoja (reaalilukuja), joiden pituus vastasi konekäskyn pituutta ja vastasi koneen muistin ja kaikkien muiden laitteiden kapasiteettia. Esimerkiksi huomautamme, että toisen sukupolven tyypillisen tietokoneen solu koostui 36 bitistä.

Hyvin usein ohjelma suunniteltiin käsittelemään tietty määrä peräkkäisten solujen sisältöä samoilla kaavoilla (korkeilla kielillä tällaisia ​​rakenteita kutsuttiin myöhemmin taulukoiksi). Kahden ensimmäisen sukupolven tietokoneet tarjosivat erityisiä mekanismeja tietoryhmien sykliseen käsittelyyn. Tätä tarkoitusta varten konekäskyt voisivat käyttää tavallisten osoitteiden lisäksi muunnettuja osoitteita, joissa erityinen ohjausbitti asetettiin ykköseksi. Kun komento suoritettiin, tällä tavalla merkittyihin muutettuihin osoitteisiin lisättiin arvo erityisistä indeksisoluista. Muutamalla hakemistosolujen sisältöä oli mahdollista päästä käsiksi taulukon eri elementteihin. Erityisesti korostetaan, että tuloksena olevan osoitteen muodostus tehtiin CU:ssa komennon suoritushetkellä, joten alkuperäinen komento säilyi RAM-muistissa ennallaan.

Kuvattu osoitteenmuokkausmekanismi yksinkertaisti suuresti syklisten ohjelmien kirjoittamista, kuten peräkkäisten RAM-solujen summan löytämistä, yksittäisten muistiosien kopioimista jne.

Kolmannen sukupolven tietokoneissa muistin rakentamisen ideologia on muuttunut merkittävästi: RAM-muistin kanssa vaihdettavan tiedon vähimmäismääräksi asetettiin 8 binäärinumeroa, ts. yksi tavu. Tuli mahdolliseksi käsitellä monentyyppisiä tietoja: tekstimerkkejä (1 tavu), kokonaislukuja (2 tavua), reaalilukuja tavallisella tai kaksinkertaisella tarkkuudella (vastaavasti 4 tai 8 tavua). Tältä osin otettiin käyttöön uusi tavanomainen tiedon mittayksikkö - konesana. Se oli yhtä suuri kuin 4 tavua ja vastasi standardin reaaliluvun pituutta. Kaikki tietomäärät alettiin mitata yksiköissä, jotka ovat sanan kerrannaisia: kaksoissana, puolisana jne. Luonnollisesti tavuorganisaatiolla varustetuissa koneissa osoite (RAM-solun numero) alkoi viitata yhteen tavuun; muistitavujen luvut kasvavat yhdellä. Sana koostuu useista peräkkäisistä tavuista. Sanan osoitteeksi on kätevää ottaa yhden sen muodostavan tavun osoite (yleensä käytetään vähiten merkitsevää tavua, jolla on pienin numero). Siten sanojen osoitteet eivät enää muutu yhden kautta; niiden lisäys riippuu konesanan pituudesta tavuina ja on yhtä suuri kuin neljä.

Konesanan koko valittiin ilmeisesti käsitellyn tiedon muotojen perusteella, eikä laitteiden kapasiteetin yhteydessä. Tämän vahvistamiseksi esittelemme muutamia faktoja tyypillisistä EC-perheen kolmannen sukupolven tietokoneista. Mallin EC-1022 aritmeettisessa logiikkayksikössä oli 16 binäärinumeroa, EC-1033:ssa 32 numeroa ja EC-1050:ssä 64 numeroa. Samanaikaisesti valittiin 4 tavua yhdelle RAM-käytölle "EC-1022" ja "EC-1033", "EC-1050" - 8 tavua (ja "EC-1045" - 16 tavua). Siten lukujen vaihtelu osoittaa, että 32 bittiä (4 tavua) ei ollut mikään teknisesti allokoitu tietomäärä.

Kolmannen sukupolven koneissa ilmestyi useita muita ominaisuuksia: erilaiset käskypituudet tietojen osoitusmenetelmästä riippuen, erityisen nopean rekisterimuistin olemassaolo, tehokkaan RAM-osoitteen laskeminen useiden rekisterien summana jne. Kaikkea tätä kehitettiin edelleen neljännen sukupolven tietokoneissa, joissa mikroprosessorin kapasiteetista on tullut yksi tärkeimmistä ominaisuuksista. Neljännen sukupolven tietokoneiden muistirakenteen ominaisuuksien käsittely siirtyy seuraavaan osaan.

Kontrollikysymykset

1. Mikä on tietokonearkkitehtuuri? Muotoile määritelmä ja tulkitse se.

2. Piirrä analogia tietokonearkkitehtuurin ja tavallisen arkkitehtuurin käsitteen välillä. Mikä on yleistä ja mitä eroa on?

3. Mikä on yhteistä ja mitä eroa on käsitteillä "sisäinen tietokonelaite"

ja "tietokonearkkitehtuuri"?

4. Mikä on tietokoneperhe? Antaa esimerkkejä.

5. Selitä mikä on ohjelmistojen yhteensopivuuden periaate. Mitä on alhaalta ylös -yhteensopivuus (selitä yhden tuntemasi perheen esimerkillä)?

6. Liittyvätkö seuraavat tosiasiat käsitteeseen "arkkitehtuuri"?

a) Käyttääkö tietokone dynaamisia (tai staattisia) RAM-siruja?

b) Onko tietokoneessa laajennettu muisti?

c) onko tietokoneella (ei ole) yhteistä väylää, jonka kautta tieto siirtyy sen laitteiden välillä?

d) INTEL 80386 -prosessorissa komentojärjestelmään on lisätty muutama uusi verrattuna INTEL 80286:een?

e) onko uuden tietokonemallin muistikapasiteetti kaksinkertaistunut?

7. Luettele von Neumann -arkkitehtuurin pääperiaatteet ja selitä niiden sisältö.

8. Mikä on syy binäärijärjestelmän laajaan käyttöön tietokoneissa?

9. Onko mahdollista. Kun tarkastellaan yksittäisen muistisolun sisältöä, määritä, mitä tietoja siihen on tallennettu: numero, komento, symbolit?

10. Mitkä ovat tietokoneen pääkomponentit?

11. Mikä on ohjelmalaskuri ja mikä rooli sillä on?

12. Mikä on moottoritie (bussi)?

13. Mitä etuja tietokoneen runkorakenne tarjoaa?

14. Mikä on ulkoinen laiteohjain ja mikä rooli sillä on tiedonvaihtoprosessissa?

15. Mikä rooli videomuistilla on tietokoneessa?

a) tekstitila (24 riviä, kukin 80 merkkiä);

b) graafinen mustavalkotila, jonka näytön koko on 640x200 pikseliä;

c) 16-värinen tila samalla näytön koolla.

17. Mikä on DMA-tila?

18 Mikä on konekäskyn peruskomponentin nimi? Mikä voi määrittää komennon suoritusnopeuden?

19. Kuvaile konekäskyn suorittamisen päävaiheet. Erityistä huomiota

kiinnitä huomiota ohjelmalaskurin rooliin.

20. Mitä komentoputkitus on ja mitkä ovat sen edut?

21. Mitkä ovat minkä tahansa tietokoneen komentojärjestelmän tärkeimmät toiminnot?

Kuvaile lyhyesti jokaista näistä ryhmistä.

22. Selitä, miksi on mahdollista rakentaa tietokone, jossa on alennettu (epätäydellinen)

komentosarja ja mitä se antaa.

23. Mistä osista tietokonetiimi koostuu? Kuvaile lyhyesti niiden tarkoitusta.

24. Mitä eroa on yhden, kahden ja kolmen osoitteen komentojen välillä?

25. Mikä on RAM-osoite?

26. Kuinka voit käyttää samaa komentoa työskentelemään useiden kanssa

peräkkäisiä soluja?

27. Määritä kolmannen sukupolven tietokoneiden muistilaitteiden erot kahteen edelliseen verrattuna.

Tärkeä osa tietokonearkkitehtuuria on komentojärjestelmä, joten tarkastelemme tätä asiaa edelleen.

Alla tiimi ymmärtää binäärikoodien muodossa esitetyn tiedon kokonaisuuden, jota prosessori tarvitsee suorittaakseen seuraavan vaiheen.

Komentokoodissa tietyt numerot (kentät) on varattu tietojen sijoittamista varten:

Tietoja toiminnan tyypistä,

RAM-solujen osoitteet, joihin käsitellyt tiedot on tallennettu,

Muistisolujen osoitteet, joihin toiminnon tulos kirjoitetaan.

Kutsutaan ennalta sovittu kenttärakenne, jonka avulla tietokone voi tunnistaa komentokoodin osat Komentomuoto .

Esimerkkejä komentomuodoista on esitetty kuvassa 5.

Kuva 5

Komentokoodin pääelementti on toimintakoodi (COP), joka määrittää, mitä toimia tälle komennolle suoritetaan. Sen alle on varattu N korkean kertaluvun numeroa muodossa.

Loput numerot sisältävät A1 ja A2 - operandien osoitteet, A3 - tuloksen osoitteen.

Komentomuodon kenttien jakauma voi muuttua, kun osoitetapa muuttuu.

Komennon pituus riippuu osoitekenttien määrästä. Osoitteiden lukumäärän mukaan komennot jaetaan osoitteettomiin; yksi, kaksi, kolme osoitetta.

Muista, että komentokoodi sisältää tietoja tiedoista, joille jokin toiminto on suoritettava. Näitä tietoja kutsutaan operandeiksi. Yleensä operandit ovat tietokoneen pää- tai rekisterimuistissa. Tapa, jolla operandit etsitään muistista, määrittää myös käskyn muodon.

Operandien etsimiseen muistista on kaksi eri periaatetta: assosiaatio ja osoite:

- Assosiatiivinen haku (haku muistisolun sisällön perusteella) sisältää kaikkien muistisolujen sisällön tarkastelun komennon määrittämän assosiatiivisen ominaisuuden sisältävän koodin tunnistamiseksi.

- Osoitehaku olettaa, että operandi sijaitsee käskyn osoitekentässä määritetyssä osoitteessa.

Erota operandin suoritusosoite ja käskyn osoitekoodi.

Operandin suoritusosoite kutsutaan sen muistisolun numeron binäärikoodiksi, jolla operandi kirjoitetaan tai luetaan.

Komennon osoitekoodi kutsutaan binäärikoodiksi komennon osoitekentässä, jolla on tarpeen muodostaa operandin tehokas osoite. Tietokoneessa osoitekoodi ja suoritusosoite eivät täsmää, joten osoitusmenetelmä voidaan määritellä menetelmäksi suoritusosoitteen generoimiseksi käskyn osoitekoodista.

Näitä käsitteitä käytetään edelleen kuvattaessa operandien osoitemenetelmiä.

Operandin osoitusmenetelmät luokitellaan sen mukaan, minkä tyyppistä operandeja etsitään muistista:

1) osoitetietojen läsnäololla komennossa:

-eksplisiittinen osoitus. Tällä menetelmällä käskykoodissa on operandiosoitekenttä;



- implisiittinen osoitus. Tällä menetelmällä käskyssä ei ole osoitekenttää, ja operandin osoite sisältyy operaatiokoodiin. Esimerkiksi kohdevastaanottimen osoite voidaan jättää pois komennosta, ymmärretään, että tulos kirjoitetaan toisen operandin tilalle.

2) RAM-muistin käyttötaajuuden mukaan:

- suora osoitus. Suoralla osoituksella operandi sijaitsee suoraan käskyn osoitekentässä (kuva 6).

Kuva 6

- suora osoitus. Suoralla osoituksella operandiin päästään ohjekentässä olevalla osoitekoodilla. Tässä tapauksessa suoritusosoite on sama kuin käskykoodin osoite. Tämä voidaan havainnollistaa seuraavalla kuvalla (Kuva 7).

Kuva 7

- epäsuora osoitus. Epäsuoralla osoitteella ohjekoodi ilmaisee sen muistipaikan osoitteen, jossa ei itse operandi sijaitse, vaan sen osoite, jota kutsutaan osoittimeksi. Tämä voidaan havainnollistaa seuraavalla kuvalla (Kuva 8).

Kuva 7

3) muistisolujen osoitteiden muodostusmenetelmän mukaan:

- Ehdoton osoitus oletetaan, että muistisolun osoitteen binäärikoodi voidaan poimia kokonaan joko käskyn osoitekentästä tai epäsuoran osoittamisen tapauksessa jostain muusta solusta.

- Suhteellinen osoitus oletetaan, että operandin binäärikoodi muodostuu useista komponenteista:

B - peruskoodi;

I - indeksikoodi;

C - offset-koodi.

Näitä komponentteja käytetään erilaisissa yhdistelmissä.

Suhteellisen osoitteen tyypit:



Kuva 9

Operandin osoitteen muodostamiseen käytetään rekisterimuistia.

Taulukon i-operandin osoite määritellään operanditaulukon aloitusosoitteen, jonka antaa offset S, ja johonkin rekisterimuistirekisteriin kirjoitetun indeksin i summana, jota kutsutaan indeksirekisteriksi.

Indeksirekisterin osoite määritetään komennossa indeksin Ai osoitekentällä.

Jokaisessa i:nnessä jaksossa indeksirekisterin sisältöä muutetaan vakioarvolla, yleensä 1:llä.

Ohjelmissa, joissa on taulukoita, jotka vaativat samantyyppisiä operaatioita taulukkoelementeillä, on kätevää käyttää tämäntyyppistä osoitusta

2) Automaattinen indeksiosoitus. Automaattisessa indeksoinnissa RP-rekisterin epäsuoraa osoitetta kasvatetaan automaattisesti (auto-increment addressing) tai vähennetään (automaattinen osoitus) vakiomäärällä ennen toiminnon suorittamista tai sen jälkeen.

3) Pinoosoite. Pinomuistia käytetään laajasti nykyaikaisissa tietokoneissa. Vaikka pinon osoitteen osoite ei ole käskyssä, se muodostuu ohjauskaaviosta (kuva 9):

Kuva 9

Tietueen lukemiseen on käytettävissä vain yksi rekisteri - pinon yläosa.

Tätä osoitusmenetelmää käyttää erityisesti ohjelman keskeytysjärjestelmä kutsuessaan aliohjelmia.

Pinomuisti toteutetaan tavanomaisen muistin pohjalta pinoosoittimella ja automaattisella indeksiosoituksella. Loogisesti pinon muistipaikat on järjestetty siten, että viimeksi kirjoitettu osoite luetaan ensin ja ensimmäinen kirjoitettu osoite luetaan viimeisenä. Tällaisen loogisen organisaation muodostaa erityinen laskuri. Tätä laskuria kutsutaan pinoosoittimeksi, SP on mikroprosessorirekisteri. Kutsutaan muistipaikkaa, johon tällä hetkellä voidaan kirjoittaa, kuten aliohjelman paluuosoite pinon yläosassa . Pinon järjestämiseen tarkoitettujen muistisolujen lukumäärää kutsutaan pinon syvyys . Kutsutaan viimeinen muistipaikka, johon voidaan kirjoittaa pinon pohja . Pinoon kirjoittaminen tapahtuu automaattisen pienennysosoitteen avulla ja lukeminen automaattisen lisäysosoitteen avulla (Kuva 10).

Kuva 10

Esimerkki. C-kielellä kirjoitetun aliohjelman kutsuminen.

C-kielessä aliohjelmia kutsutaan funktioiksi. Funktiolla voi olla argumentteja ja paikallismuuttujia, eli muuttujia, jotka ovat olemassa vain funktion suorituksen aikana. Oletetaan, että funktio riippuu kahdesta kokonaislukutyyppisestä syöteargumentista x ja y ja käyttää kolmea paikallista muuttujaa a, b ja c, jotka ovat myös kokonaislukutyyppisiä. Funktio palauttaa kokonaisluvun arvon.

Aliohjelma:

Pääohjelma:

Esimerkiksi jossain ohjelman kohdassa funktiota f kutsutaan argumenteilla x = 2, y = 3. Kutsuva ohjelma työntää pinoon funktion f argumenttien x ja y todelliset arvot. funktion ensimmäinen argumentti pinon yläosassa ja toinen argumentti sen alapuolella. Kun funktiokutsukäsky suoritetaan, myös paluuosoite sijoitetaan pinon päälle. Funktion f alussa pino näyttää tältä:

Ennen suoritusta funktion f on kaapattava pinon muistialue paikallismuuttujilleen a, b, c.

Toteutettavissa olevien konetoimien joukko muodostaa sen komentojärjestelmä .

Huolimatta tietokoneiden suuresta määrästä, alimmalla ("kone") tasolla niillä on paljon yhteistä.

Minkä tahansa tietokoneen komentojärjestelmä sisältää välttämättä seuraavat tietojenkäsittelykomentoryhmät:

1. Tiedonsiirtokomennot (laskenta), tietojen kopioiminen paikasta toiseen.

Vaihto prosessorirekisterien välillä,

Prosessori ja RAM,

prosessori ja oheislaitteet.

2. Aritmeettiset operaatiot. Aritmeettisiin perusoperaatioihin kuuluu yleensä yhteen- ja vähennyslasku (jälkimmäinen pelkistetään useimmiten yhteenlaskuksi). Mitä tulee kerto- ja jakolaskuihin, ne suoritetaan monissa tietokoneissa erityisten algoritmien mukaisesti.

3. Loogiset toiminnot, joiden avulla tietokone voi analysoida käsiteltävää tietoa. Esimerkiksi vertailuoperaatiot tai tunnetut loogiset operaatiot JA, TAI, EI. Lisäksi niihin lisätään usein yksittäisten koodibittien analysointi, nollaus ja asennus.

4. Binäärikoodin siirrot vasemmalle ja oikealle. Tämän komentoryhmän tärkeyden osoittamiseksi riittää, että muistaa kertolasääntö sarakkeessa: jokainen seuraava tulo kirjoitetaan tällaisessa kaaviossa siirtymällä yhdellä numerolla vasemmalle. Joissakin erityistapauksissa kerto- ja jakolasku voidaan yleensä korvata siirrolla (muista, että lisäämällä tai poistamalla nolla oikealle, eli siirtämällä desimaalilukua, voit suurentaa tai pienentää sitä 10 kertaa).

5. Komennot tiedon syöttämiseen ja ulostuloon ulkoisten laitteiden kanssa vaihtamista varten. Joissakin tietokoneissa ulkoiset laitteet ovat erityisiä palvelumuistiosoitteita, joten syöttö ja tulostus suoritetaan laskentakomennoilla.

6. Ohjauskomennot, jotka toteuttavat epälineaarisia algoritmeja. Tämä sisältää ensisijaisesti ehdolliset ja ehdottomat hyppyt sekä ohjeet aliohjelmaan pääsemiseksi (hyppy paluulla). Joillakin tietokoneilla on erityiset ohjeet syklien järjestämiseen, mutta tämä ei ole välttämätöntä: sykli voidaan lyhentää yhdeksi tai toiseksi ehdollisten ja ehdottomien hyppyjen yhdistelmäksi. Usein sama komentoryhmä sisältää muutaman toiminnon prosessorin ohjaamiseksi - kuten "stop" tai NOP ("no operation"). Joskus heidät erotetaan erityisessä ryhmässä.

Käskyjärjestelmää ajatellen sen rakenteessa ei voi olla mainitsematta kahta nykyaikaista keskenään kilpailevaa suuntaa: tietokone täydellisellä käskysarjalla CISC (Complex Instruction Set Computer) ja rajoitetulla sarjalla - RISC (Reduced Instruction Set Computer). Ero johtui siitä, että suurimman osan ajasta tietokoneen on suoritettava pieni osa käskyjoukostaan, kun taas loput käytetään satunnaisesti. Näin ollen, jos rajoitamme operaatioiden joukkoa merkittävästi yksinkertaisimpiin ja lyhimpiin, saamme melko tehokkaan ja nopean RISC-koneen. Totta, sinun on maksettava nopeudesta "hylättyjen" komentojen ohjelmistotuotannon tarpeella, mutta usein tämä hinta on perusteltu: esimerkiksi tieteellisissä laskelmissa tai tietokonegrafiikassa nopeus on paljon tärkeämpää kuin ohjelmointiongelmat.

Tietokoneen pääkierto

Tässä osassa käsitellään lyhyesti toimintojen järjestystä suoritettaessa komento tietokoneessa. Voidaan väittää, että toimintajakso on yleensä sama kaikille von Neumannin koneille.

Tietokoneen komentojärjestelmä ja menetelmät tietojen saamiseksi

Tärkeä osa tietokonearkkitehtuuria on komentojärjestelmä. Huolimatta tietokoneiden suuresta määrästä, alimmalla ("kone") tasolla niillä on paljon yhteistä. Minkä tahansa tietokoneen komentojärjestelmä sisältää välttämättä seuraavat tiedonkäsittelykomentoryhmät.

  • 1. Tiedonsiirtokomennot (laskenta), tietojen kopioiminen paikasta toiseen.
  • 2. Aritmeettiset operaatiot, joille tietotekniikka itse asiassa on nimensä velkaa. Tietenkin laskennallisten toimintojen osuus nykyaikaisessa tietokoneessa on vähentynyt huomattavasti, mutta niillä on silti tärkeä rooli ohjelmissa. Huomaa, että aritmeettisiin perusoperaatioihin kuuluu yleensä yhteen- ja vähennyslasku (jälkimmäinen loppujen lopuksi useimmiten tavalla tai toisella pelkistyy myös yhteenlaskuksi). Mitä tulee kertomiseen ja jakamiseen, ne suoritetaan monissa tietokoneissa erityisohjelmien mukaan.
  • 3. Loogiset toiminnot, joiden avulla tietokone voi analysoida käsiteltävää tietoa. Yksinkertaisimpia esimerkkejä ovat vertailu sekä tunnetut loogiset operaatiot AND, OR, NOT (inversio). Lisäksi niihin lisätään usein yksittäisten koodibittien analysointi, nollaus ja asennus.
  • 4. Binäärikoodin siirrot vasemmalle ja oikealle. Tämän komentoryhmän tärkeyden osoittamiseksi riittää, että muistaa kertolasääntö sarakkeessa: jokainen seuraava tulo kirjoitetaan tällaisessa kaaviossa siirtymällä yhdellä numerolla vasemmalle. Joissakin erityistapauksissa kerto- ja jakolasku voidaan yleensä korvata siirrolla (muista, että lisäämällä tai poistamalla nolla oikealle, eli siirtämällä desimaalilukua, voit suurentaa tai pienentää sitä 10 kertaa).
  • 5. Komennot tiedon syöttämiseen ja ulostuloon ulkoisten laitteiden kanssa vaihtamista varten. Joissakin tietokoneissa ulkoiset laitteet ovat erityisiä palvelumuistiosoitteita, joten syöttö ja tulostus suoritetaan laskentakomennoilla.
  • 6. Ohjauskomennot, jotka toteuttavat epälineaarisia algoritmeja. Ensinnäkin tämän tulisi sisältää ehdolliset ja ehdottomat hyppyt sekä ohjeet aliohjelmaan pääsemiseksi (hyppy paluulla). Joillakin tietokoneilla on erityiset ohjeet syklien järjestämiseen, mutta tämä ei ole välttämätöntä: sykli voidaan lyhentää yhdeksi tai toiseksi ehdollisten ja ehdottomien hyppyjen yhdistelmäksi. Usein sama komentoryhmä sisältää muutaman toiminnon prosessorin ohjaamiseksi - kuten "stop" tai NOP ("ei toimintaa"). Joskus heidät erotetaan erityisessä ryhmässä.

Prosessorilaitteen monimutkaisuuden kasvaessa niihin vaikuttavien ohjeiden määrä kasvaa. Tässä voidaan esimerkiksi nimetä prosessorin toimintatilan bitit ja bitit, joilla ohjataan keskeytysmekanismeja ulkoisista laitteista.

Viime aikoina yhä tärkeämpää roolia käskyjoukossa ovat ohjeet muuntamiseen tietomuodosta toiseen (esimerkiksi 8-bittisestä 16-bittiseksi jne.), jotka yksinkertaistavat huomattavasti erityyppisten tietojen käsittelyä, mutta periaatteessa voidaan korvata useiden yksinkertaisempien komentojen sarjalla.

Käskyjärjestelmää ajatellen sen rakenteessa ei voi olla mainitsematta kahta nykyaikaista keskenään kilpailevaa suuntaa: tietokone täydellisellä käskysarjalla CISC (Complex Instruction Set Computer) ja rajoitetulla sarjalla - RISC (Reduced Instruction Set Computer). Jako syntyi siitä syystä, että suurimman osan ajasta tietokoneen on suoritettava pieni osa käskyjoukostaan, kun taas loput käytetään satunnaisesti (yhdessä suosituista artikkeleista tämä on vitsillä muotoiltu seuraavaksi visuaaliseksi analogioksi: "20 % väestöstä juo 80 % olutta." Siten, jos rajoitat operaatioiden joukkoa merkittävästi yksinkertaisimpiin ja lyhimpiin, mutta optimoit ne huolellisesti, saat melko tehokkaan ja nopean RISC-koneen. Totta, sinun on maksettava nopeudesta "hylättyjen" komentojen ohjelmistotuotannon tarpeella, mutta usein tämä hinta on perusteltu: esimerkiksi tieteellisissä laskelmissa tai tietokonegrafiikassa nopeus on paljon tärkeämpää kuin ohjelmointiongelmat. Nykyaikaisten mikroprosessorien käskyjärjestelmään liittyviä kysymyksiä käsitellään tarkemmin myöhemmin tässä luvussa.

Yhteenvetona korostamme vielä kerran, että perusohjeisto on muuttunut melko vähän tietokoneiden nopean kehityksen aikana. Samaan aikaan menetelmät, joilla määritetään muistissa olevan tiedon sijaintiosoite, ovat kokeneet merkittäviä muutoksia ja ansaitsevat erityishuomiota.

Tietokoneen pääkierto

Kuten kappaleessa 2 jo todettiin, tärkeä osa von Neumann -arkkitehtuuria on käskyjen osoitelaskuri. Tämä erityinen sisäinen prosessorirekisteri osoittaa aina muistipaikkaan, johon seuraava ohjelmakäsky on tallennettu. Kun virta kytketään päälle tai kun nollauspainiketta (alkuasetus) painetaan, kaikkien laitteiden alustus- ja käynnistysohjelman aloitusosoite, joka sijaitsee ROMissa, syötetään laitteistolla laskuriin. Ohjelma määrittää tietokoneen jatkotoiminnan. Tietokoneen koko toiminta on siis tiettyjen ohjelmien jatkuvaa suorittamista, ja nämä ohjelmat puolestaan ​​voivat ladata uusia ohjelmia jne.

Jokainen ohjelma koostuu yksittäisistä koneohjeista. Jokainen konekäsky puolestaan ​​on jaettu useisiin peruskomponentteihin, joita kutsutaan yleisesti sykliksi. Komennon monimutkaisuudesta riippuen se voidaan toteuttaa eri sykleissä. Esimerkiksi tiedon siirtäminen sisäisestä prosessorirekisteristä toiseen kestää useita syklejä, kun taas kahden kokonaisluvun kertominen vaatii suuruusluokkaa enemmän. Merkittävää käskyn pidentymistä tapahtuu, jos käsiteltävä data ei ole vielä prosessorin sisällä ja se on luettava RAM-muistista.

Kun kutakin komentoa suoritetaan, tietokone suorittaa tiettyjä vakiotoimintoja:

  • 1) käskyosoitelaskurin sisällön mukaan luetaan ohjelman seuraava käsky (sen koodi tallennetaan yleensä erityiseen rekisteriin CU, jota kutsutaan käskyrekisteriksi);
  • 2) ohjelmalaskuri muuttuu automaattisesti niin, että se sisältää seuraavan komennon osoitteen (yksinkertaisimmassa tapauksessa tätä tarkoitusta varten riittää, että laskurin nykyiseen arvoon lisätään jokin vakio, joka määräytyy komennon pituuden mukaan. käsky);
  • 3) komentorekisteriin luetun toiminnon salaus puretaan, tarvittavat tiedot poimitaan ja niille suoritetaan tarvittavat toimenpiteet.

Sitten kaikissa tapauksissa, paitsi pysäytyskäskyä tai keskeytyksen esiintymistä (katso jäljempänä kappale 3.5), kaikki kuvatut toimenpiteet toistetaan syklisesti.

Kun pysäytyskomento on haettu, tietokone lopettaa ohjelman käsittelyn. Tästä tilasta poistuminen vaatii joko ulkoisten laitteiden pyynnön tai koneen uudelleenkäynnistyksen.

Tarkasteltu tietokoneen perustoimintaalgoritmi mahdollistaa RAM-muistiin tallennetun lineaarisen ohjelman suorittamisen askel askeleelta. Jos laskujärjestystä on muutettava haarukan tai silmukan toteuttamiseksi, riittää, että syötät vaaditun osoitteen ohjelmalaskuriin (näin tapahtuu ehdollinen tai ehdoton hyppy).

INTEL 80286 -mikroprosessoriin ja uudempiin malleihin perustuvat tietokoneet käyttävät liukuhihnaa (joskus kutsutaan "esihakuksi") nopeuttamaan pääkäskyn suoritussykliä. Ajatuksena on, että useat prosessorin sisäosat toimivat rinnakkain: yksi lukee käskyn, toinen purkaa toiminnan, kolmas laskee käytettävien operandien osoitteet ja niin edelleen. Tämän seurauksena komennon lopussa usein käy ilmi, että seuraava on jo valittu RAM-muistista, purettu ja valmisteltu suorittamaan. Huomaa, että jos ohjelman käskyjen luonnollista suoritusjärjestystä rikotaan (esimerkiksi ehdottomalla hyppyllä), esihaku on turha ja liukuhihna tyhjennetään. Siirtymän jälkeistä komentoa suoritetaan pidempään, koska jotta putkisto "toimiisi täydellä kapasiteetilla", se on ensin täytettävä. Toisin sanoen kuljetinkoneessa ohjelman suoritusaika voi riippua paitsi sen muodostavista käskyistä, myös niiden suhteellisesta sijainnista.

Tapoja määrittää tietojen sijainnin osoite

Tietokonekomento koostuu yleensä kahdesta osasta - toiminnallisesta ja osoitteesta. Operatiivinen osa (muuten sitä kutsutaan myös toimintakoodiksi - COP) osoittaa, mitä toimintoa tiedolla on suoritettava. Osoite-osassa kerrotaan, mihin käytetyt tiedot on tallennettu. Muutamilla koneen toimintaa ohjaavilla komennoilla ei ehkä ole osoiteosaa, esimerkiksi pysäytyskomennossa; käyttöosa on aina saatavilla.

Toimintokoodi voidaan kuvitella jonkin ehdollisena numerona komentojärjestelmän yleisessä luettelossa. Pohjimmiltaan tämä luettelo on rakennettu tiettyjen sisäisten mallien mukaisesti, vaikka ne eivät aina ole ilmeisiä.

Osoiteosassa on paljon laajempi valikoima, ja sitä tulisi harkita yksityiskohtaisemmin.

Ensinnäkin todetaan, että käskyt voivat olla yksi-, kaksi- ja kolmiosoiteisia, riippuen niihin osallistuvien operandien lukumäärästä.

Ensimmäisissä tietokoneissa oli yksinkertaisin ja intuitiivisin kolmen osoitteen komentojärjestelmä. Esimerkiksi: ota lukuja muistiosoitteista A1 ja A2, laske ne yhteen ja laita summa osoitteeseen A3. Jos operaatio vaati pienemmän määrän osoitteita, ylimääräisiä ei yksinkertaisesti käytetty. Oletetaan, että laskentatoimessa ilmoitettiin vain tiedon lähteen ja vastaanottajan solut A1 ja A3, eikä A2:n sisällöllä ollut merkitystä.

Kolmen osoitteen komento oli helppo tulkita ja kätevä käyttää, mutta RAM-muistin kasvaessa sen pituudesta tuli kohtuuton. Itse asiassa käskyn pituus on kolmen osoitteen pituuden ja toimintakoodin summa. Tästä seuraa esimerkiksi, että vaatimattomalle 1024 solun RAM-muistille tarvitaan vain 3 * 10 = 30 bittiä yhden käskyn osoiteosan kirjoittamiseen, mikä ei ole kovin kätevää teknisessä toteutuksessa. Siksi ilmestyi kaksiosoitekoneet, joiden käskyn pituutta lyhennettiin poistamalla tulostietueen osoite. Tällaisissa tietokoneissa operaation tulos jäi erityiseen rekisteriin (summain) ja soveltui käytettäväksi myöhemmissä laskelmissa. Joissakin koneissa tulos kirjoitettiin yhden operandin sijasta.

Komennon yksinkertaistaminen edelleen johti unicast-koneiden luomiseen. Harkitse tällaisen tietokoneen komentojärjestelmää tietyssä yksinkertaisessa esimerkissä. Olkoon tarpeen lisätä soluihin tallennetut luvut, joiden RAM-osoite on A1 ja A2, ja sijoittaa summa soluun, jonka osoite on A3. Tämän ongelman ratkaisemiseksi unicast-koneen on suoritettava kolme komentoa:

  • * pura solun A1 sisältö summaimeen;
  • * lisää summain numerolla A2;
  • * kirjoita tulos summaimesta A3:een.

Saattaa vaikuttaa siltä, ​​että yksilähetyskone tarvitsisi kolme kertaa enemmän komentoja ongelman ratkaisemiseksi kuin kolmiosoitekone. Itse asiassa näin ei aina ole. Yritä suunnitella oma ohjelmasi lausekkeen A5 = (A1 + A2) * 33 / A4 laskemiseksi, niin huomaat, että tarvitset kolme kolmiosoitekomentoa ja yhteensä viisi yksiosoitekomentoa. Unicast-kone on siis jollain tapaa vieläkin tehokkaampi, koska se ei kirjoita välituloksia tarpeettomasti muistiin.

Täydellisyyden vuoksi on sanottava mahdollisuudesta toteuttaa osoitteeton (nollaosoite) kone käyttämällä erityistä tapaa järjestää muisti - pino. Tällaisen koneen periaatteiden ymmärtäminen vaatisi joitain melko yksityiskohtaisia ​​selityksiä. Nykyään osoitteettomia tietokoneita ei käytännössä käytetä. Siksi rajoitumme mainitsemaan, että tällä tavalla järjestetty komentojärjestelmä oli joidenkin ohjelmoitavien mikrolaskimien (esim. BZ-21 ja BZ-34 tyypit ja vastaavat) perusta.

Tähän asti olemme käyttäneet konekäskyn rakenteen kuvauksessa intuitiivista tiedon osoitteen käsitettä. Tarkastellaan nyt kysymystä RAM-elementtien käsittelemisestä yksityiskohtaisemmin ja tiukasti. Muisti järjestettiin yksinkertaisimmin kahden ensimmäisen sukupolven tietokoneissa. Se koostui erillisistä soluista, joiden jokaisen sisältö luettiin tai kirjoitettiin kokonaisuutena. Jokaisella muistisolulla oli oma numeronsa, jota kutsuttiin osoitteeksi. Ilmeisesti vierekkäisten RAM-solujen osoitteet ovat peräkkäisiä kokonaislukuja, ts. eroavat yhdellä. Tarkasteltavana olevissa tietokoneissa käytettiin vain yhden tyyppisiä tietoja (reaalilukuja), joiden pituus vastasi konekäskyn pituutta ja vastasi koneen muistin ja kaikkien muiden laitteiden kapasiteettia. Esimerkiksi huomautamme, että toisen sukupolven tyypillisen tietokoneen solu koostui 36 bitistä.

Hyvin usein ohjelma suunniteltiin käsittelemään tietty määrä peräkkäisten solujen sisältöä samoilla kaavoilla (korkeilla kielillä tällaisia ​​rakenteita kutsuttiin myöhemmin taulukoiksi). Kahden ensimmäisen sukupolven tietokoneet tarjosivat erityisiä mekanismeja tietoryhmien sykliseen käsittelyyn. Tätä tarkoitusta varten konekäskyt voisivat käyttää tavallisten osoitteiden lisäksi muunnettuja osoitteita, joissa erityinen ohjausbitti asetettiin ykköseksi. Kun komento suoritettiin, tällä tavalla merkittyihin muutettuihin osoitteisiin lisättiin arvo erityisistä indeksisoluista. Muutamalla hakemistosolujen sisältöä oli mahdollista päästä käsiksi taulukon eri elementteihin. Erityisesti korostetaan, että tuloksena olevan osoitteen muodostus tehtiin CU:ssa komennon suoritushetkellä, joten alkuperäinen komento säilyi RAM-muistissa ennallaan.

Kuvattu osoitteenmuokkausmekanismi yksinkertaisti suuresti syklisten ohjelmien kirjoittamista, kuten peräkkäisten RAM-solujen summan löytämistä, yksittäisten muistiosien kopioimista jne.

Kolmannen sukupolven tietokoneissa muistin rakentamisen ideologia on muuttunut merkittävästi: RAM-muistin kanssa vaihdettavan tiedon vähimmäismääräksi asetettiin 8 binäärinumeroa, ts. yksi tavu. Tuli mahdolliseksi käsitellä monentyyppisiä tietoja: tekstimerkkejä (1 tavu), kokonaislukuja (2 tavua), reaalilukuja tavallisella tai kaksinkertaisella tarkkuudella (vastaavasti 4 tai 8 tavua). Tältä osin otettiin käyttöön uusi tavanomainen tiedon mittayksikkö - konesana. Se oli yhtä suuri kuin 4 tavua ja vastasi standardin reaaliluvun pituutta. Kaikki tietomäärät alettiin mitata yksiköissä, jotka ovat sanan kerrannaisia: kaksoissana, puolisana jne. Luonnollisesti tavuorganisaatiolla varustetuissa koneissa osoite (RAM-solun numero) alkoi viitata yhteen tavuun; muistitavujen luvut kasvavat yhdellä. Sana koostuu useista peräkkäisistä tavuista. Sanan osoitteeksi on kätevää ottaa yhden sen muodostavan tavun osoite (yleensä käytetään vähiten merkitsevää tavua, jolla on pienin numero). Siten sanojen osoitteet eivät enää muutu yhden kautta; niiden lisäys riippuu konesanan pituudesta tavuina ja on yhtä suuri kuin neljä.

Konesanan koko valittiin ilmeisesti käsitellyn tiedon muotojen perusteella, eikä laitteiden kapasiteetin yhteydessä. Tämän vahvistamiseksi esittelemme muutamia faktoja tyypillisistä EC-perheen kolmannen sukupolven tietokoneista. Mallin "EC-1022" aritmeettis-loogisessa yksikössä oli 16 binäärinumeroa, "EC-1033" - 32 numeroa ja "EC-1050" - 64 numeroa. Samanaikaisesti valittiin 4 tavua yhtä pääsyä varten RAM-muistiin malleissa "EC-1022" ja "EC-1033", "EC-1050" - 8 tavua (ja "EC-1045" - 16 tavua). Siten lukujen vaihtelu osoittaa, että 32 bittiä (4 tavua) ei ollut mikään teknisesti allokoitu tietomäärä.

Kolmannen sukupolven koneissa ilmestyi myös useita muita ominaisuuksia: erilaiset käskypituudet datan osoitusmenetelmästä riippuen, erityisen ultranopean rekisterimuistin olemassaolo, tehokkaan RAM-osoitteen laskeminen useiden rekisterien summana jne. Kaikkea tätä kehitettiin edelleen neljännen sukupolven tietokoneissa, joissa mikroprosessorin kapasiteetista on tullut yksi tärkeimmistä ominaisuuksista. Neljännen sukupolven tietokonemuistin rakenteellisten ominaisuuksien käsittely siirtyy seuraavaan osaan.

ENIAC-työ oli täydessä vauhdissa, kun Herman Goldstein tapasi unkarilaisamerikkalaisen John von Neumannin, joka oli amerikkalaisen salaisen atomipommiohjelman konsultti ja pohti, kuinka laskentatehoa voitaisiin lisätä tarvittavien differentiaaliyhtälöiden ratkaisemiseksi. Tämän tapaamisen tuloksena saavutuksistaan ​​peliteorian kehittämisestä ydinaseiden luomiseen osallistumiseen tunnettu Neumann aloittaa yhteistyön ENIAC-työryhmän kanssa. Yhdessä he kehittävät projektin uudelle tietokoneelle, joka ensinnäkin toimii yksinomaan elektronisilla piireillä, ja toiseksi, ohjelma syötetään siihen ei paperinauhalle, vaan reikäkortilla, joka sitten koodataan sopivien merkkien muodossa. prosessoitavaksi ja varastoitavaksi keskitettyyn varastoon. Edes keksijät itse eivät heti tajunneet tämän periaatteen arvoa, sillä se ei ainoastaan ​​salli muutosten tekemistä ohjelmaan - nämä muutokset voi tehdä itse laskentalaite.

Työskennellessään EDVAC:n parissa vuonna 1945 sen kehittäjien välillä oli suuri ristiriita. Tosiasia on, että EDVAC:sta tuli perusta kolmannelle laajamittaiselle tietokonetekniikan teoreettiselle työlle (ensimmäinen, "analyyttisen moottorin" kuvaus, kuului Charles Babbagelle, toinen - Alan Turingille). Mutta Mauchly ja Eckert eivät pystyneet yleistämään tietämystään ja abstraktia radioputkista ja elektronisista piireistä. Ehkä he laiminlyöivät tämän salassapitosyistä, ehkä fyysikot eivät alentuneet tiukkaa matemaattista esitystä. Von Neumann kirjoitti myös EDVAC-koneen alustavan raportin, jossa hän esitti yleismaailmallisten tietokonelaitteiden loogisen organisaation ja yleiset toiminnan periaatteet. Raportti lähetettiin monille tutkijoille eri maista ja siitä tuli laajalti tunnettu (siksi ENIACin suunnittelijat eivät onnistuneet myöhemmin patentoimaan projektiaan).

Von Neumania pidettiin laajalti erinomaisena matemaatikkona, ja tiedeyhteisö piti hänen käsiinsä kaikki tämän koneen takana olevat ideat. Ilmaisu "von Neumann kone" (eli tietokone) tuli käyttöön. Neumann löysi tavan yhdistää työohjelma ei johtojen tai muiden liitäntöjen avulla, vaan integroimalla se koneen muistiin koodatussa muodossa. Neumann keksi järjestelmän, jota kaikki digitaaliset tietokoneet edelleen noudattavat. Yleensä kaavio on esitetty kuvassa. Kiinteät nuolet ovat ohjauslinkkejä (ohjaussignaalit kulkevat niiden läpi) ja pistenuolet ovat tietolinkkejä (data, tieto kulkee niiden läpi). Syöttö-/tulostuslaitteita ovat näppäimistö, hiiri, näyttö, levyasema, CD-ROM, tulostin, skanneri, mikrofoni, kaiuttimet, plotteri jne.

Tietokoneessa tulee olla:

  • · aritmeettinen logiikkayksikkö, joka suorittaa aritmeettisia ja loogisia operaatioita. Nykyään tätä laitetta kutsutaan keskusyksiköksi. Keskusyksikkö (keskusyksikkö) - tietokoneen mikroprosessori, joka on mikropiiri, joka ohjaa kaikkia tietokoneessa tapahtuvia prosesseja;
  • ohjauslaite, joka järjestää ohjelmien suoritusprosessin. Nykyaikaisissa tietokoneissa aritmeettinen logiikkayksikkö ja ohjausyksikkö yhdistetään keskusyksiköksi;
  • tallennuslaitteet (muisti) ohjelmien ja tietojen tallentamiseen;
  • · ulkoiset laitteet tiedon syöttöä ja tulostamista varten.

Tietokoneen muisti on joukko numeroituja soluja, joista jokainen voi sisältää joko käsiteltyä dataa tai ohjelmakäskyjä. Kaikkien muistisolujen tulee olla yhtä helposti muiden tietokonelaitteiden ulottuvilla.

Toimintaperiaate:

  • · Ulkoisen laitteen avulla ohjelma syötetään tietokoneen muistiin.
  • · Ohjauslaite lukee sen muistisolun sisällön, jossa ohjelman ensimmäinen käsky (komento) sijaitsee ja järjestää sen suorittamisen. Komento voi asettaa:
    • o loogisten tai aritmeettisten operaatioiden suorittaminen;
    • o tietojen lukeminen muistista aritmeettisten tai loogisten operaatioiden suorittamiseksi;
    • o tulosten tallennus muistiin;
    • o tietojen syöttäminen ulkoisesta laitteesta muistiin;
    • o tietojen tulostus muistista ulkoiseen laitteeseen.
  • · Ohjausyksikkö aloittaa komennon suorittamisen muistipaikasta välittömästi juuri suoritetun komennon jälkeen. Tätä järjestystä voidaan kuitenkin muuttaa ohjauksen siirto- (hyppy) -ohjeilla. Nämä komennot osoittavat ohjauslaitteelle, että sen on jatkettava ohjelman suorittamista alkaen toisessa muistipaikassa olevasta käskystä.
  • · Ohjelman suorituksen tulokset näkyvät tietokoneen ulkoisella laitteella.
  • · Tietokone siirtyy valmiustilaan ulkoisesta laitteesta tulevaa signaalia varten.

Yksi "Von Neumann -arkkitehtuurin" periaatteista on, että tietokoneen ei tarvitse muuttaa johtoja, jos kaikki ohjeet on tallennettu sen muistiin. Ja heti kun tämä idea otettiin käyttöön "von Neumann-arkkitehtuurin" puitteissa, syntyi moderni tietokone.

Kuten mikä tahansa tekniikka, tietokoneet ovat kehittyneet toimivuuden, toteutettavuuden ja kauneuden lisäämiseen. Yleisesti ottaen on olemassa väite, joka väittää olevansa laki: täydellinen laite ei voi olla ruma ulkonäöltään ja päinvastoin, kaunis tekniikka ei voi olla huono. Tietokoneesta tulee paitsi hyödyllinen, myös sisustuslaite. Nykyaikaisen tietokoneen ulkonäkö tietysti korreloi von Neumannin järjestelmän kanssa, mutta samalla se eroaa siitä.

IBM:n ansiosta von Neumannin ideat toteutuivat aikamme laajalle levinneen tietokonejärjestelmän yksiköiden avoimen arkkitehtuurin periaatteen muodossa. Tämän periaatteen mukaan tietokone ei ole yksittäinen yksiosainen laite, vaan se koostuu itsenäisesti valmistetuista osista, ja menetelmät laitteiden yhdistämiseksi tietokoneeseen eivät ole valmistajan salaisuus, vaan ne ovat kaikkien saatavilla. Siten järjestelmälohkot voidaan koota lastensuunnittelijan periaatteen mukaan, eli voit vaihtaa osia muihin, tehokkaampiin ja modernimpiin, päivittämällä tietokoneesi (päivitä, päivitä - "nosta tasoa"). Uudet osat ovat täysin vaihdettavissa vanhojen kanssa. "Avoimen arkkitehtonisia" henkilökohtaisia ​​tietokoneita tekee myös järjestelmäväylä, tämä on eräänlainen virtuaalinen yhteinen tie tai suoni tai kanava, johon kaikki lähdöt kaikista järjestelmäyksikön solmuista ja osista menevät. Minun on sanottava, että suurilla tietokoneilla (ei henkilökohtaisilla) ei ole avoimuuden ominaisuutta, ne eivät voi yksinkertaisesti korvata jotain toisella, edistyneemmällä, esimerkiksi uusimmissa tietokoneissa, jopa kytkemällä johtoja tietokonejärjestelmän elementtien välillä. : hiiri, näppäimistö (" näppäimistö" - "näppäimistö") ja järjestelmäyksikkö. Ne voivat kommunikoida keskenään infrapunasäteilyn avulla; tätä varten järjestelmäyksikössä on erityinen ikkuna infrapunasignaalien vastaanottamista varten (samanlainen kuin television kaukosäätimessä).

Tällä hetkellä tavanomainen henkilökohtainen tietokone on kompleksi, joka koostuu:

  • pääelektroniikkalevy (järjestelmä, emolevy), jolle sijaitsevat ne lohkot, jotka käsittelevät laskennan tietoja;
  • · piirit, jotka ohjaavat muita tietokonelaitteita, liitetty emolevyn vakioliittimiin - paikat;
  • Tietojen tallennuslevyt
  • virtalähde, josta virta syötetään kaikkiin elektroniikkapiireihin;
  • kotelo (järjestelmäyksikkö), jossa kaikki tietokoneen sisäiset laitteet on asennettu yhteiseen kehykseen;
  • näppäimistöt;
  • monitori;
  • muita ulkoisia laitteita.

Von Neumann-tyyppinen arkkitehtuuri (nimetty matemaatikko John von Neumannin mukaan) on yleisimmin käytetty digitaalisissa tietokoneissa ja se on lähes kaikkien mikroprosessoriarkkitehtuurien taustalla. Neumann-arkkitehtuuri määrittelee ohjauksen ja muistin välisen vuorovaikutuksen tyypin. Ohjausosa toimii ohjelmaksi kutsutun käskysarjan perusteella, joka tallennetaan muistiin. Jokainen käsky koostuu kahdesta osasta: operaattorista ja operandista. Operaattori määrittää, mikä operaatio prosessorin tulee suorittaa (aritmeettinen, looginen tai ohjaustoiminto), ja operandi on data- tai muistiosoite, jolle operaatio suoritetaan.

Neumann-arkkitehtuuriohjelman binaari

John von Neumann

Von Neumannin tietokoneen tehtävänä on suorittaa käskysarja, joka vastaa järjestelmän suorittamia toimintoja. Koska ohjausyksikkö ja muisti ovat aktiivisesti vuorovaikutuksessa toistensa kanssa, toimitetaan erityisiä laitteita, jotka voivat nopeuttaa tietojen ja komentojen lähetysprosessia. Näitä työkaluja ovat: käskyrekisteri, käskylaskuri, akku, aritmeettinen logiikkayksikkö (ALU).

Käskyrekisteri, käskylaskuri ja akku ovat tietokoneen yhden lohkon - "muistin" - pääelementtejä. Nämä ovat rekistereitä tai muistisoluja, joiden kapasiteetti binäärinumeroina vastaa konesanan pituutta. Käskyrekisteri tallentaa käskyn, joka tietokoneen tulee suorittaa nykyisen jälkeen, ja seuraavan käskyn osoite tallennetaan ohjelmalaskuriin. Taajuusmuuttaja tallentaa tietoja käsittelyä varten tai vastaanottaa tiedot käsittelyn jälkeen.

Aritmeettis-looginen yksikkö suorittaa määritetyt aritmeettiset tai loogiset toiminnot komennossa määritetyille tiedoille.

Nämä laitteistot on kytketty toisiinsa yhden tai useamman väylän kautta. Bussi on sähköinen yhteys useiden pisteiden välillä, jotka voivat olla signaalin lähteitä tai vastaanottajia (se voidaan verrata ajoneuvoon, joka ottaa ja jättää matkustajat pois). Mikromikrotietokoneen sanan pituus on yleensä 4, 8, 16 bittiä jne.

Väylä yhdistää rekisterit ja ALU:t muistiin ja I/O-laitteisiin. Yhdessä väyläarkkitehtuurissa jokainen väylään kytketty laite jakaa väylän muiden laitteiden kanssa, ja siksi niille annetaan tietty määrä aikaa lähettää tietoja väylän kautta toiselle laitteelle tai vastaanottaa tietoa sieltä. Tämä väyläaikamultipleksointi suorittaa laitteistoväylän ohjauspiiri ja synkronoidaan tietokoneen ohjausyksikön toimesta.

Ohjausyksikkö suorittaa tietokoneen kaikkien muiden yksiköiden ohjauksen ja synkronoinnin päätoiminnot. Tietokonejärjestelmät ovat tyypillisesti sarjamuotoisia digitaalisia piirejä, jotka synkronoidaan kaikkialla järjestelmässä lähetetyllä standardilla kellosignaalilla.

Jokainen tietokoneen elementti on suunniteltu siten, että se suorittaa tiettyjen toimintojen sarjan tietyn määrän kellopulsseja. Komentorekisteri lähettää seuraavan komennon komentodekooderille, joka tulkitsee saapuvan bittijoukon ja antaa asianmukaiset käskyt sekä konejakson ohjausyksikölle että ALU:lle. Konejakson ohjausyksikkö purkaa nämä käskyt ja lähettää vastaavat signaalit muistiin ja ohjauslähtöihin. Siten järjestelmän muiden komponenttien toiminta voidaan synkronoida ALU:n toiminnan kanssa. Muistille (tämä voi olla hajasaantimuisti tai sisäinen konerekisteri) on myös annettava ohjeet siitä, mitä tietoja tulee käsitellä.

PC-arkkitehtuuri. Tietokoneen toiminnan perusperiaatteet.

Tietokone on elektroninen laite, joka pystyy automaattisesti suorittamaan ohjelman määrittelemän toimintosarjan tietojen vastaanottamiseksi, tallentamiseksi, muuntamiseksi ja antamiseksi.

Laskentajärjestelmän arkkitehtuuri ymmärretään sen rakentamisen yleisimpinä periaatteina, toimintaperiaatteina, keskeisten toiminnallisten yksiköiden yhteyksinä ja vuorovaikutuksena, muistiorganisaationa ja komentojärjestelmänä. Tietojenkäsittelytieteen kurssilla ei käsitellä muistin organisointia ja komentojärjestelmiä.

Klassiset tietokonearkkitehtuurin rakentamisen periaatteet ehdotettiin John von Neumannin, G. Goldsteigin ja A. Burksin teoksissa vuonna 1964, ja ne tunnetaan "von Neumannin periaatteina".

Nämä periaatteet ovat:

  • - Kaiken käytetyn tiedon binäärinen koodaus: kaikki tietokoneen tiedot (numerot, teksti, ääni, kuvat) esitetään nollien ja ykkösten sarjana.
  • - Satunnainen pääsy RAM-soluihin: tietokoneessa on oltava erityinen laite - RAM - johon tallennetaan käynnissä olevat ohjelmat ja käsitellyt tiedot; muisti on jaettu soluihin, jokaisella solulla on osoite (numero), tässä osoitteessa voit milloin tahansa lukea tietoa solusta tai kirjoittaa sinne tietoja
  • - Tallennetun ohjelman periaate: Paragrammit on tallennettava tietokoneen muistiin binäärimuodossa; sekä dataa. Tämä periaate näyttää nyt täysin ilmeiseltä, mutta sitä ei käytetty ensimmäisissä tietokoneissa. Toimintajärjestyksen asettamiseksi oli tarpeen kytkeä tietokoneen logiikkapiirien elementit tietyssä järjestyksessä asentamalla hyppyjohdot. Tallennetun ohjelman periaatteen käyttö on lisännyt merkittävästi tietokoneiden käytön tehokkuutta
  • - Toimintojen peräkkäisen suorittamisen periaate: Ohjelma koostuu komentosarjasta. Jokainen käsky on tallennettu yhteen (tai useampaan) muistipaikkaan binäärimuodossa. Tietokone aloittaa ohjelman suorittamisen, ts. valitsee tiettyyn muistipaikkaan tallennetun arvon ja suorittaa sitä arvoa vastaavan käskyn. Sitten tietokone suorittaa seuraavaan muistisoluun tallennetun komennon ja niin edelleen, kunnes jokin soluista kohtaa pysäytyskomennon tai siirtymisen johonkin toiseen muistisoluun.

Osana mitä tahansa tietokonetta voidaan erottaa seuraavat toiminnalliset lohkot:

  • - Arithmetic Logic Unit (ALU) suorittaa kaikki tiedon muunnostoiminnot. Itse asiassa kaikki muunnokset jaetaan alkeisoperaatioiksi, joiden toteuttamiseen riittävät aritmeettiset (yhteen-, vähennys-, kerto-, jakolasku) ja loogiset (AND, OR, NOT) operaatiot.
  • - Ohjauslaite (CU) - ohjaa kaikkia tietokonelaitteita. ALU ja CU muodostavat yhdessä CPU:n keskusyksikön.
  • - RAM - tallentaa ohjelman ja tiedot. Muisti koostuu yksittäisistä soluista; yleensä yksi muistisolu voi tallentaa yhden tavun. Jokaisella solulla on numero (osoite), jolla voit "osoittaa" sen datan kirjoittamista ja lukemista varten.
  • - Syöttölaitteet - vastaanottaa tietoja käyttäjältä (tai joistakin ulkoisista laitteista - antureista, antenneista jne.) ja muuntaa ne muotoon, joka on kätevä käsitellä tietokoneella.
  • - Tulostuslaitteet - muuntaa tietokoneelle tallennetun ja käsitellyn tiedon muotoihin, jotka ovat käteviä ihmisen havainnolle.

Ensimmäiset tietokoneet rakennettiin von Neumannin rakenteen mukaisesti, joka voidaan esittää seuraavasti: (paksut viivat osoittavat informaatiolinkkejä, ohuet viivat ohjaussignaaleja)

Kuten kaaviosta voidaan nähdä, ohjauslaite on yhdistetty kuhunkin laitteeseen erillisellä kanavalla, jonka kautta ohjaussignaalit lähetetään. Jokainen ulkoinen laite on yhdistetty erillisellä tiedonvaihtokanavalla ALU:n kanssa. ALU:sta tiedot voidaan jo kirjoittaa muistiin; ja myös dataa voidaan lukea muistista ALU:hun.

Tällainen rakenne, kun kunkin laitteen kanssa käytetään erillistä kanavaa, vaikeutti tietokoneen konfiguraation muuttamista, erityisesti uusien ulkoisten laitteiden liittämistä.

Nykyaikaiset PC:t on rakennettu runkomoduulipohjaisesti. Tämä tarkoittaa, että kaikki laitteet on kytketty yhteen runkoon (kaapelisarjaan). Lisäksi kaikki laitteet on kytketty standardiliittimillä, ja myös laitteiden ohjaus- ja tiedonvaihtoon käyttämien sähköisten signaalien parametrit on standardoitu. Nuo. kaikki laitteet "kommunikoivat samojen sääntöjen mukaisesti". Näin käyttäjä voi muuttaa tietokoneen täydellisyyttä vaihtamalla, poistamalla tai lisäämällä lohkomoduuleja.

PC:n rakenne voidaan esittää seuraavasti:

Tässä CPU on keskusyksikkö; sisältää ohjausyksikön ja aritmeettisen logiikkayksikön. CPU ohjaa kaikkien tietokonelaitteiden toimintaa ja suorittaa kaikki tietojenkäsittelytoiminnot.

RAM - Random Access Memory (Random Access Memory); tallentaa parhaillaan käsiteltävän ohjelman ja tiedot. Kun virta katkaistaan, RAM-muistin sisältö katoaa.

ROM - Vain lukumuisti; tallentaa ohjelmat, jotka suoritetaan, kun tietokone käynnistetään (käynnistetään), sekä joitain muita tärkeitä ohjelmia. ROM-muistissa olevat tiedot säilyvät, kun virta katkaistaan. Ensimmäiset ROM-levyt olivat todellakin "pysyviä", ts. tietoja voi kirjoittaa heille vain kerran. Nykyaikaiset ROM-levyt ovat uudelleen ohjelmoitavissa, joten niihin tallennettuja tietoja voidaan päivittää.

VU - ulkoiset laitteet, joihin kuuluvat:

  • o syöttölaitteet (kuten näppäimistö);
  • o tulostuslaitteet (esim. tulostin)
  • o viestintälaitteet (esim. modeemi)
  • o Luku-/kirjoitus- ja tallennuslaitteet (esim. levykkeet ja flash-asemat)

PC-arkkitehtuurin näkökulmasta kovalevy (kovalevy) on myös ulkoinen laite. Mutta sillä on niin tärkeä rooli, että se on korostettu erikseen kaaviossa. Kiintolevylle tallennetaan ohjelmat (ensisijaisesti käyttöjärjestelmä) ja tiedot.

Jokaista ulkoista laitetta ohjaa ohjain - erityinen ohjauslaite. Ohjain on "välittäjä" nopeasti käyvän CPU:n ja hitaasti käyvän ajoneuvoyksikön välillä. Esimerkiksi saatuaan prosessorilta komennon tulostaa tekstiä ohjain kääntää sen peruskomentojen sarjaksi, jotka tulostimen on suoritettava: syötä paperia, lämmitä väriaine, sähköistä rumpu, ruiskuta maalia, paina paperia jne. Prosessori voi suorittaa muita tehtäviä tänä aikana. Näin ollen ohjaimien käyttö parantaa tietokoneen suorituskykyä.

Lisäksi ulkoisten laitteiden ohjaamiseen tarvitaan erikoisohjelmia - ajureita.

Nykyaikaiset tietokoneet on rakennettu "avoimen arkkitehtuurin" periaatteelle. Tämä tarkoittaa, että standardit liittimille, signaaliparametreille ja moduulien vaihtamiselle keskenään ovat avoimia, ja mikä tahansa yritys voi valmistaa näiden standardien mukaisia ​​laitteita. Tämä tarjoaa laajan valikoiman ulkoisia laitteita ja yksittäisiä PC-moduuleja, mutta ne ovat kaikki yhteensopivia keskenään.

Johdannossa annettiin yksi määritelmä prosessorin käsitteelle.

Prosessori - tietokoneen toiminnallinen yksikkö, joka on suunniteltu tietovirtojen loogiseen ja aritmeettiseen käsittelyyn ohjelmaohjauksen periaatteen mukaisesti.

Prosessori suorittaa (RAM-muistiin sijoitettujen) ohjelmien suorittamisen ottamalla näytteitä, tarkistamalla ja suorittamalla peräkkäin komentojen määräämät toimet. Toisella tavalla: prosessori suorittaa komentojen määräämät toimenpiteet koodatulle tiedolle ohjelmien mukaisesti.

Nykyaikaisissa tietokoneissa prosessori (tietokoneydin) ei ole ALU:n ja CCU:n muodollinen yhdistelmä, vaan tulos tietokonerakenteen kehityksestä, joka on suunniteltu tarjoamaan nopeat ja laajat toiminnalliset ja loogiset ominaisuudet tietojen käsittelyyn. Erityisesti uusien tietokoneiden tulo johti tietokoneen ja prosessorin tarpeeseen.

1) keskeyttää järjestelmät;

2) uudet muistitasot;

3) muistin suojausvälineet;

4) erikoistyyppisten indeksointi-, osoitetietojen käyttö;

5) käskyjen, haarojen, vaihtoennusteiden jne. välimuisti;

6) erityismenettelyt laskentaprosessin hallintaan

Kaikki nämä osajärjestelmät ja laitteet sisältyvät prosessoriin osittain tai kokonaan. Prosessorin tärkein uusi rakenteellinen ilmiö on SRAM.

Siksi prosessorilla on nykyään kehittyneempi rakenne, joka toistaa tietyssä mielessä von Neumannin koneen rakenteen.

Mutta emme koske uusiin suuntiin prosessorien organisaatiossa. Ne käsitellään kokonaisuudessaan Mikroprosessorit-kurssilla.

3.1. Tietokoneen komentojärjestelmä.

Tietokoneen komentojärjestelmä määräytyy komentojen rakenteen ja formaattien sekä komentojen ja osoitusmenetelmien luettelon (luettelon) perusteella.

Joukkue on ns informaatio, joka on koodattu jollain tavalla, joka määrittää signaalisekvenssien generoinnin tietokoneessa, joka on tarkoitettu suorittamaan koneen tietty toiminto (toiminto) annetuilla numeerisilla ja ei-numeerisilla koodeilla.

Koska lopulta komento syötetään jotenkin tietokoneeseen ja se havaitsee sen komennon lopullinen muoto on digitaalinen koodi.

Vastaavasti, ohjelman lopullinen muoto tietokoneen toiminta (ohjelma voidaan määritellä erityisesti formalisoiduksi tietojenkäsittelyalgoritmiksi) on ohjelma koodatuissa käskyissä.

3.1.1. Komentorakenne ja -muodot.

Esitetyn komennon määritelmän mukaisesti komennon rakenne on toiminta- ja osoiteosat(mitä ja millä tiedoilla pitäisi tehdä), sekä toimiston osa, jotka määrittävät tämän komennon (muokkauksen) suorittamisen erikoisuuden tiettyjen arvoista riippuen merkkejä.

Komennon osoiteosaan sisältyvät osoitteet ilmaisevat yleisimmässä tapauksessa sen RAM-solun numeron, johon operaatioon osallistuva numero (sen koodi) on tallennettu (tallennettu) - summa, kerroin , jako jne., ei-numeerinen informaatiokoodi (osoite, merkkijono, laitteen tila jne.) Yleisesti ja yksinkertaisuuden vuoksi sanotaan yleensä: operandit tallennetaan muistiin.

Kuitenkin, jos puhumme komennosta määräyksenä, niin sen täydellisimmässä muodossa tulisi ilmoittaa paitsi kaikkien toimintoon osallistuvien numeroiden osoitteet, myös sen solun osoite, johon tulos tulisi sijoittaa, sekä seuraavan komennon lähteen osoite. Tämä luettelo johtaa tarpeeseen olla joukkueessa neljä osoitteita.

Ja itse asiassa tällaisia ​​neljän osoitteen komentoja on olemassa. Tällaisella "formaatilla" joukkueet "käynnistivät". Mutta ryhmässä voi olla vähemmän tai enemmän osoitteita!

Seuraavan käskyn lähdeosoite saattaa puuttua, koska ohjelma (käskysarja) on eniten luonnollisesti ja on suositeltavaa sijoittaa johonkin vierekkäisten muistisolujen joukkoon. Ja jos komennot kirjoitetaan peräkkäin (numerosta 1 numeroon n), on erittäin helppoa muuttaa seuraavan komennon lähdesolun osoite laitteistossa (laskurilla!) Huomaa, että tällaista näytteenottojärjestystä kutsutaan luonnollinen, kun taas kun määritetään komennon osoite komennossa näytteenottojärjestystä kutsutaan pakko. Huomaa myös, että ohjevalinnan luonnollisen järjestyksen käyttö johtaa käyttöönoton tarpeeseen erityiset komennot, jotka muuttavat laskelmien järjestystä(muuttamalla komennon solumäärälaskurin sisältöä). Tämä on välttämätöntä algoritmisen laskettavuuden varmistamiseksi. Pakon kanssa näytteenottojärjestyksessä erityisiä komentoja ei tarvita, koska jokainen komento "kääntää" näytejärjestyksen.

Tärkeä osa tietokonearkkitehtuuria on komentojärjestelmä. Huolimatta tietokoneiden suuresta määrästä, alimmalla ("kone") tasolla niillä on paljon yhteistä. Minkä tahansa tietokoneen komentojärjestelmä sisältää välttämättä seuraavat tiedonkäsittelykomentoryhmät.

1. Tiedonsiirtokomennot (laskenta) jotka kopioivat tietoa paikasta toiseen.

2. Aritmeettiset operaatiot, joka on itse asiassa syntyperänsä velkaa tietojenkäsittelylle. Tietenkin laskennallisten toimintojen osuus nykyaikaisessa tietokoneessa on vähentynyt huomattavasti, mutta niillä on silti tärkeä rooli ohjelmissa. Huomaa, että aritmeettiset pääoperaatiot sisältävät yleensä yhteen- ja vähennyslaskua (jälkimmäinen prosessorin sisällä useimmiten myös pelkistää tavalla tai toisella yhteenlaskuksi). Mitä tulee kertomiseen ja jakamiseen, ne suoritetaan monissa tietokoneissa erityisohjelmien mukaan.

3. Boolen operaatiot, jolloin tietokone voi analysoida vastaanotettuja tietoja. Suoritettuaan tällaisen komennon ehdollisen hypyn avulla tietokone pystyy valitsemaan ohjelman suorituksen jatkokulkua. Yksinkertaisimpia esimerkkejä tarkasteltavan ryhmän komennoista ovat vertailu sekä aiemmin kappaleessa 1.4 kuvatut tunnetut loogiset operaatiot AND, OR, NOT (inversio). Lisäksi niihin lisätään usein yksittäisten koodibittien analysointi, nollaus ja asennus.

4. vuorot binäärikoodi vasemmalle ja oikealle. Tämän komentoryhmän tärkeyden osoittamiseksi riittää, että muistaa kertolasääntö sarakkeessa: jokainen seuraava tulo kirjoitetaan tällaisessa kaaviossa siirtymällä yhdellä numerolla vasemmalle. Joissakin erityistapauksissa kerto- ja jakolasku voidaan yleensä korvata siirrolla (muista, että lisäämällä tai poistamalla nolla oikealle, eli siirtämällä lukua, voit suurentaa tai pienentää sitä 10 kertaa).

5. Tulo- ja lähtökomennot tietoja vaihdettavaksi ulkoisten laitteiden kanssa. Joissakin tietokoneissa ulkoiset laitteet ovat erityisiä palvelumuistiosoitteita, joten syöttö ja tulostus suoritetaan laskentakomennoilla.

6. Ohjauskomennot, jotka toteuttavat epälineaarisia algoritmeja. Ensinnäkin tämän tulisi sisältää ehdolliset ja ehdottomat hyppyt sekä ohjeet aliohjelmaan pääsemiseksi (hyppy paluulla). Joissakin tietokoneissa on erityiset ohjeet silmukoiden järjestämiseen, mutta tämä ei ole välttämätöntä: minkä tahansa silmukka voidaan lyhentää johonkin ehdollisten ja ehdottomien hyppyjen yhdistelmään.

Usein samaan komentoryhmään kuuluu prosessorin ohjaustoimintoja, kuten pysäytys tai NOP – ei toimintoa. Joskus heidät erotetaan erityisessä ryhmässä. Kun prosessorilaitteen monimutkaisuus kasvaa, tällaisten ohjeiden määrä kasvaa.

Mikä tahansa tietokoneen komento koostuu yleensä kahdesta osasta - operaatiohuone Ja osoite. Operatiivinen osa (muuten sitä kutsutaan myös toimintakoodi - KOP) osoittaa, mitä tietoja tietojen suhteen tulee tehdä. Osoiteosassa kerrotaan, mihin käytetyt tiedot tallennetaan ja mihin tulos sijoitetaan. Joillakin harvoista koneen toimintaa ohjaavista komennoista ei ehkä ole osoiteosaa, esimerkiksi pysäytyskomennossa; käyttöosa on aina läsnä.

Toimintokoodi voidaan kuvitella jonkin ehdollisena numerona komentojärjestelmän yleisessä luettelossa. Pohjimmiltaan tämä luettelo on rakennettu tiettyjen sisäisten mallien mukaisesti, vaikka ne eivät aina ole ilmeisiä.

Osoiteosassa on paljon laajempi valikoima, ja sitä tulisi harkita yksityiskohtaisemmin.

Ensinnäkin huomaamme, että komennot voivat olla yksi, kaksi ja kolme osoitetta riippuen mahdollisten operandien määrästä.

Ensimmäisissä tietokoneissa oli yksinkertaisin ja intuitiivisin kolmen osoitteen komentojärjestelmä. Esimerkiksi: ota lukuja muistiosoitteista A1 ja A2, laske ne yhteen ja aseta summa osoitteeseen A3. Jos operaatio vaati pienemmän määrän osoitteita, ylimääräisiä ei yksinkertaisesti käytetty. Sanotaan, että väestölaskennassa ilmoitettiin vain tiedon lähteen ja vastaanottajan solut A1 ja A3, eikä A2:n sisällöllä ollut merkitystä.

Kolmen osoitteen komento oli helppo tulkita ja kätevä käyttää, mutta RAM-muistin kasvaessa sen pituudesta tuli kohtuuton. Itse asiassa tällaisen käskyn pituus on kolmen osoitteen pituuden ja toimintakoodin summa. Tästä seuraa esimerkiksi, että vaatimattomalle 1024 solun RAM-muistille osoiteosan kirjoittamiseen tarvitaan vain 3 * 10 = 30 bittiä, mikä ei ole kovin kätevää teknisen toteutuksen kannalta. Siksi ilmestyi kaksiosoitekoneet, joiden käskyn pituutta lyhennettiin poistamalla tulostietueen osoite. Tällaisissa tietokoneissa toiminnan tulos pysyi erityisessä rekisterissä ( lisäin) ja soveltui käytettäväksi myöhemmissä laskelmissa. Joissakin koneissa tulos kirjoitettiin yhden operandin sijasta.

Komennon yksinkertaistaminen edelleen johti unicast-koneiden luomiseen. Harkitse tällaisen tietokoneen komentojärjestelmää tietyssä yksinkertaisessa esimerkissä. Olkoon tarpeen lisätä RAM-osoitteisiin A1 ja A2 tallennetut numerot ja laittaa summa A3:een. Tämän ongelman ratkaisemiseksi unicast-koneen on suoritettava kolme komentoa:

  1. pura solun A1 sisältö summaimeen;
  2. lisää summain numerolla A2:sta;
  3. kirjoita tulos summaimesta A3:een.

Saattaa vaikuttaa siltä, ​​että yksilähetyskone tarvitsisi kolme kertaa enemmän komentoja ongelman ratkaisemiseksi kuin kolmiosoitekone. Itse asiassa näin ei aina ole. Yritä suunnitella oma ohjelmasi lausekkeen Y=(X1+X2)*X3/X4 laskemiseksi, niin tulet yllättymään huomatessasi, että tarvitset 3 kolmiosoitekomentoa ja vain 5 unicast-komentoa. Siten yksilähetyskone on jonkin verran tehokkaampi, koska se ei tuota tarpeetonta kirjoitusta välitulosten muistiin.

Täydellisyyden vuoksi on sanottava mahdollisuudesta toteuttaa ei-osoite (nolla-osoite) kone käyttämällä erityistä tapaa järjestää muisti - pino. Tällaisen koneen periaatteiden ymmärtäminen vaatisi joitain melko yksityiskohtaisia ​​selityksiä; samaan aikaan osoitteettomia tietokoneita ei käytännössä käytetä nykyään. Siksi rajoitamme mainitsemaan sen tosiasian, että tällä tavalla järjestetty komentojärjestelmä on joidenkin "B3-21"- ja "B3-34"-tyyppisten ohjelmoitavien mikrolaskinten ja vastaavien alla.

© E.A. Eremin, 1997
Kirjasta:
Eremin E.A. Kuinka moderni tietokone toimii. - Perm: kustantamo PRIPIT, 1997. 176 s.

Jos löydät virheen, valitse tekstiosa ja paina Ctrl+Enter.