Sistem de comandă de bază pe calculator. Modele informatice educaționale

Sistem de comandă de bază pe calculator. Modele informatice educaționale

11.09.2020

Important parte integrantă Arhitectura unui computer este un sistem de comenzi. În ciuda numărului mare de tipuri de computere, la cel mai scăzut nivel („mașină”) au multe în comun. Sistemul de comandă al oricărui computer conține în mod necesar următoarele grupuri de comenzi de procesare a informațiilor.

1. Comenzi de transfer de date (recensământ), copiend informații dintr-un loc în altul.

2. Operatii aritmetice, căruia tehnologia informatică îi datorează de fapt nașterea. Desigur, ponderea acțiunilor de calcul într-un computer modern a scăzut considerabil, dar acestea joacă încă un rol important în programe. Rețineți că operațiile aritmetice de bază includ, de obicei, adunarea și scăderea (aceasta din urmă, în interiorul procesorului, cel mai adesea se rezumă la adunare într-un fel sau altul). În ceea ce privește înmulțirea și împărțirea, în multe computere acestea sunt efectuate folosind programe speciale.

3. Operații logice, permițând computerului să analizeze informațiile primite. După executarea unei astfel de comenzi, folosind un salt condiționat, computerul este capabil să selecteze cursul ulterioară de execuție a programului. Cele mai simple exemple de comenzi ale grupului luat în considerare sunt comparația, precum și binecunoscutele operații logice AND, OR, NOT (inversie), descrise mai devreme în paragraful 1.4. În plus, la acestea sunt adesea adăugate analiza biților de cod individuali, resetarea și instalarea acestora.

4. Schimbări cod binar stânga și dreapta. Pentru a demonstra importanța acestui grup de comenzi, este suficient să amintim regula înmulțirii coloanelor: fiecare produs ulterior este scris într-o astfel de schemă cu o deplasare de o cifră la stânga. În unele cazuri speciale, înmulțirea și împărțirea pot fi în general înlocuite cu o deplasare (rețineți că adăugând sau eliminând un zero la dreapta, adică deplasând efectiv un număr, îl puteți crește sau micșora de 10 ori).

5. Comenzi de intrare și ieșire informații pentru schimb cu dispozitive externe. În unele computere, dispozitivele externe sunt adrese speciale de memorie de serviciu, astfel încât intrarea și ieșirea se efectuează folosind comenzi de recensământ.

6. Comenzi de control, implementând algoritmi neliniari. Aceasta include în primul rând sărituri condiționate și necondiționate, precum și comenzi pentru apelarea unei subrutine (salt cu întoarcere). Unele computere au comenzi speciale pentru organizarea ciclurilor, dar acest lucru nu este necesar: orice ciclul poate fi redus la una sau alta combinație de tranziții condiționate și necondiționate.

Adesea, același grup de comenzi include operații de control al procesorului, cum ar fi oprirea sau NOP - nicio operațiune. Uneori sunt despărțiți într-un grup special. Pe măsură ce complexitatea dispozitivului procesor crește, numărul de astfel de instrucțiuni crește.

Orice comandă de computer constă de obicei din două părți - sala de operatieŞi adresa. Partea de operare (altfel se numește codul de operare - KOP) indică ce acțiune trebuie efectuată asupra informațiilor. Partea adresa descrie unde sunt stocate informațiile utilizate și unde ar trebui plasat rezultatul. Unele câteva comenzi pentru controlul funcționării unei mașini pot să nu aibă parte de adresă, de exemplu, într-o comandă de oprire; partea de operare este întotdeauna disponibilă.

Un cod de operare poate fi considerat ca un anumit număr convențional din lista generală a sistemelor de comandă. Practic, această listă este construită în conformitate cu anumite tipare interne, deși nu sunt întotdeauna evidente.

Partea cu adresa are o varietate mult mai mare și ar trebui luată în considerare mai detaliat.

În primul rând, rețineți că comenzile pot fi una, două și trei adreseîn funcţie de numărul de operanzi posibili.

Primele computere aveau cel mai simplu și mai intuitiv sistem de comandă cu trei adrese. De exemplu: luați numere din adresele de memorie A1 și A2, adăugați-le și plasați suma în adresa A3. Dacă o operațiune necesita un număr mai mic de adrese, atunci cele suplimentare pur și simplu nu au fost folosite. Să spunem că în operațiunea de recensământ au fost indicate doar celulele sursă și receptor ale informațiilor A1 și A3, iar conținutul lui A2 nu avea sens.

Comanda cu trei adrese a fost ușor de descifrat și a fost convenabil de utilizat, dar pe măsură ce cantitatea de memorie RAM a crescut, lungimea sa a devenit prohibitiv de mare. Într-adevăr, lungimea unei astfel de comenzi este suma lungimii a trei adrese și a codului de operare. Rezultă, de exemplu, că pentru o memorie RAM modestă de 1024 de celule, doar scrierea părții de adresă necesită 3 * 10 = 30 de biți binari, ceea ce nu este foarte convenabil pentru implementarea tehnică. Prin urmare, au apărut mașini cu două adrese, în care lungimea comenzii a fost redusă prin eliminarea adresei pentru înregistrarea rezultatului. În astfel de calculatoare, rezultatul operației a rămas într-un registru special ( sumator) și a fost potrivit pentru utilizare în calculele ulterioare. În unele mașini, rezultatul a fost scris în locul unuia dintre operanzi.

Simplificarea suplimentară a comenzii a condus la crearea mașinilor unicast. Să luăm în considerare sistemul de comandă al unui astfel de computer pe un anumit exemplu simplu. Să presupunem că trebuie să adunăm numerele stocate în adresele RAM A1 și A2 și să plasăm suma în A3. Pentru a rezolva această problemă, o mașină unicast va trebui să ruleze trei comenzi:

  1. extrageți conținutul celulei A1 în viper;
  2. adăugați sumatorul cu numărul de la A2;
  3. scrieți rezultatul din sumator în A3.

S-ar putea părea că o mașină unicast ar avea nevoie de trei ori mai multe comenzi pentru a finaliza o sarcină decât o mașină cu trei adrese. De fapt, acest lucru nu este întotdeauna cazul. Încercați să vă planificați propriul program pentru calcularea expresiei Y=(X1+X2)*X3/X4 și veți fi surprinși să descoperiți că veți avea nevoie de 3 comenzi cu trei adrese și doar 5 unicast. Astfel, o mașină unicast este într-un fel și mai eficientă, deoarece nu scrie rezultate intermediare inutile în memorie.

De dragul caracterului complet, ar trebui spus despre posibilitatea implementării unei mașini fără adresă (zero-adresă) care utilizează un mod special de organizare a memoriei - stivă. Înțelegerea principiilor unei astfel de mașini ar necesita câteva explicații destul de detaliate; În același timp, acum computerele fără adresă practic nu sunt folosite. Prin urmare, ne vom limita la a menționa doar faptul că un sistem de comandă dispus într-un mod similar a stat la baza unor microcalculatoare programabile precum „B3-21” și „B3-34” și altele asemenea.

© E.A.Eremin, 1997
Din carte:
Eremin E.A. Cum funcționează un computer modern. - Perm: editura PRIPIT, 1997. 176 p.

Ciclul principal de funcționare a computerului

Această secțiune discută pe scurt secvența acțiunilor la executarea unei comenzi pe un computer. Se poate argumenta că ciclul de lucru în vedere generală este același pentru toate mașinile von Neumann.

Sistem de comandă computerizată și metode de accesare a datelor

O componentă importantă a arhitecturii computerului este sistemul de instrucțiuni. În ciuda numărului mare de tipuri de computere, la cel mai scăzut nivel („mașină”) au multe în comun. Sistemul de comandă al oricărui computer conține în mod necesar următoarele grupuri de comenzi de procesare a informațiilor.

  • 1. Comenzi de transfer de date (recensământ) care copiază informații dintr-un loc în altul.
  • 2. Operatii aritmetice, carora tehnologia informatica isi datoreaza de fapt numele. Desigur, ponderea acțiunilor de calcul într-un computer modern a scăzut considerabil, dar acestea joacă încă un rol important în programe. Rețineți că operațiile aritmetice de bază includ de obicei adunarea și scăderea (aceasta din urmă, în cele din urmă, cel mai adesea se reduce și la adunare într-un fel sau altul). În ceea ce privește înmulțirea și împărțirea, în multe computere acestea sunt efectuate folosind programe speciale.
  • 3. Operații logice care permit computerului să analizeze informațiile în curs de prelucrare. Cele mai simple exemple sunt comparația, precum și binecunoscutele operații logice AND, OR, NOT (inversie). În plus, la acestea sunt adesea adăugate analiza biților de cod individuali, resetarea și instalarea acestora.
  • 4. Codul binar se deplasează la stânga și la dreapta. Pentru a demonstra importanța acestui grup de comenzi, este suficient să amintim regula înmulțirii coloanelor: fiecare produs ulterior este scris într-o astfel de schemă cu o deplasare de o cifră la stânga. În unele cazuri speciale, înmulțirea și împărțirea pot fi în general înlocuite cu o deplasare (rețineți că prin adăugarea sau eliminarea unui zero la dreapta, adică deplasarea efectivă a unui număr zecimal, îl puteți crește sau micșora de 10 ori).
  • 5. Comenzi pentru introducerea și ieșirea informațiilor pentru schimbul cu dispozitive externe. În unele computere, dispozitivele externe sunt adrese speciale de memorie de serviciu, astfel încât intrarea și ieșirea se efectuează folosind comenzi de recensământ.
  • 6. Comenzi de control care implementează algoritmi neliniari. Aceasta include în primul rând sărituri condiționate și necondiționate, precum și comenzi pentru apelarea unei subrutine (salt cu întoarcere). Unele computere au comenzi speciale pentru organizarea buclelor, dar acest lucru nu este necesar: o buclă poate fi redusă la una sau alta combinație de tranziții condiționate și necondiționate. Adesea, același grup de comenzi include câteva operații pentru a controla procesorul, cum ar fi „stop” sau NOP („fără operație”). Uneori sunt despărțiți într-un grup special.

Pe măsură ce complexitatea dispozitivului procesor crește, la fel crește și numărul de comenzi care acționează asupra lor. Aici, de exemplu, putem numi biții modului de funcționare al procesorului și biții de control pentru mecanismele de întrerupere de la dispozitive externe.

Recent, un rol din ce în ce mai important în setul de comenzi îl joacă comenzile pentru conversia dintr-un format de date în altul (de exemplu, de la 8 biți la 16 biți etc.), care simplifică semnificativ procesarea datelor diferite tipuri, dar în principiu poate fi înlocuit cu o succesiune de mai multe comenzi mai simple.

Având în vedere sistemul de comandă, nu se poate să nu menționăm două direcții moderne care se concurează reciproc în construcția acestuia: un computer cu un set complet de comenzi CISC (Complex Instruction Set Computer) și cu un set limitat - RISC (Reduced Instruction Set Computer). Diviziunea a apărut din cauza faptului că de cele mai multe ori computerul trebuie să execute o mică parte din setul său de instrucțiuni, în timp ce restul sunt folosite sporadic (un articol popular formulează în glumă acest lucru sub forma următoarei analogii vizuale: „20 % din populație bea 80% din bere.” Astfel, dacă limitați semnificativ setul de operații la cele mai simple și scurte, dar le optimizați cu atenție, veți obține o mașină RISC destul de eficientă și rapidă. Adevărat, va trebui să plătiți pentru viteză prin necesitatea implementării software a comenzilor „eliminate”, dar adesea această plată este justificată: de exemplu, pentru calcule științifice sau grafică pe computer, performanța este esențială mai important decât problemele programare. Problemele legate de sistemul de instrucțiuni ale microprocesoarelor moderne vor fi discutate mai detaliat mai târziu în acest capitol.

Pentru a rezuma, subliniem încă o dată că setul de bază de comenzi s-a schimbat destul de puțin în timpul evoluției rapide a computerelor. În același timp, metodele de indicare a adresei locației informațiilor în memorie au suferit modificări semnificative și merită o atenție specială.

Ciclul principal de funcționare a computerului

După cum sa menționat deja în paragraful 2, o componentă importantă a arhitecturii von Neumann este contorul de adrese de instrucțiuni. Acest registru intern special al procesorului indică întotdeauna locația de memorie în care este stocată următoarea instrucțiune de program. Când alimentarea este pornită sau când butonul de resetare (setare inițială) este apăsată, adresa de pornire a programului de inițializare a tuturor dispozitivelor și de pornire aflat în ROM este introdusă în contor în hardware. Funcționarea ulterioară a computerului este determinată de program. Astfel, toată activitatea pe calculator este execuția continuă a anumitor programe, iar aceste programe pot, la rândul lor, să încarce noi programe etc.

Fiecare program constă din instrucțiuni separate pentru mașină. Fiecare comandă a mașinii, la rândul său, este împărțită într-un număr de unificate elementare componente, care se numesc de obicei căpușe. În funcție de complexitatea comenzii, aceasta poate fi implementată într-un număr diferit de cicluri de ceas. De exemplu, transferul de informații de la un registru intern al procesorului la altul se realizează în mai multe cicluri de ceas, dar înmulțirea a două numere întregi necesită un ordin de mărime mai multe cicluri de ceas. O prelungire semnificativă a instrucțiunii are loc dacă datele în curs de procesare nu sunt încă în interiorul procesorului și trebuie citite din RAM.

La executarea fiecărei comenzi, computerul efectuează anumite acțiuni standard:

  • 1) în funcție de conținutul contorului de adrese de comandă, se citește următoarea comandă de program (codul acesteia este de obicei stocat într-un registru special al unității de comandă, numit registru de comandă);
  • 2) contorul programului este schimbat automat astfel încât să conțină adresa următoarei comenzi (în cel mai simplu caz, în acest scop este suficient să adăugați o constantă la valoarea contorului curent, determinată de lungimea comenzii);
  • 3) se decriptează operația citită în registrul de comenzi, se extrag datele necesare și se efectuează asupra acestora acțiunile necesare.

Apoi, în toate cazurile, cu excepția comenzii de oprire sau apariției unei întreruperi (vezi mai jos în paragraful 3.5), toate acțiunile descrise sunt repetate ciclic.

După preluarea comenzii de oprire, computerul oprește procesarea programului. Pentru a ieși din această stare, este necesară fie o solicitare de la dispozitive externe, fie o repornire a mașinii.

Algoritmul computerizat de bază considerat vă permite să executați pas cu pas un program liniar stocat în RAM. Dacă trebuie să schimbați ordinea calculelor pentru a implementa o bifurcătură sau o buclă, este suficient să introduceți adresa necesară în contorul de program (așa are loc un salt condiționat sau necondiționat).

Calculatoarele bazate pe INTEL 80286 și pe microprocesoare ulterioare folosesc o metodă de pipelining (uneori numită „preluare înainte”) pentru a accelera ciclul principal de instrucțiuni. Ideea este că mai multe dispozitive interne ale procesorului funcționează în paralel: unul citește instrucțiunea, altul descifrează operația, al treilea calculează adresele operanzilor folosiți etc. Ca urmare, după finalizarea unei comenzi, cel mai adesea se dovedește că următoarea a fost deja selectată din RAM, decriptată și pregătită pentru execuție. Rețineți că, dacă ordinea naturală de execuție a instrucțiunilor din program este încălcată (de exemplu, în timpul unui salt necondiționat), preluarea înainte este în zadar și conducta este șters. Comanda care urmează tranziției durează mai mult pentru a fi executată, deoarece pentru ca transportorul să „lucreze la capacitate maximă”, acesta trebuie mai întâi umplut. Cu alte cuvinte, într-o mașină transportoare, timpul de execuție al unui program poate depinde nu numai de instrucțiunile sale constitutive, ci și de poziția relativă a acestora.

Metode de specificare a adresei locației informațiilor

O comandă de computer constă de obicei din două părți - operațional și adresa. Partea operațională (altfel numită codul operațiunii - OPC) indică ce acțiune trebuie efectuată cu informațiile. Partea cu adresă descrie unde sunt stocate informațiile utilizate. Câteva comenzi de control al funcționării mașinii pot să nu aibă parte de adresă, de exemplu, într-o comandă de oprire; partea de operare este mereu acolo.

Un cod de operare poate fi considerat ca un anumit număr convențional din lista generală a sistemelor de comandă. Practic, această listă este construită în conformitate cu anumite tipare interne, deși nu sunt întotdeauna evidente.

Partea cu adresa are o varietate mult mai mare și ar trebui luată în considerare mai detaliat.

În primul rând, observăm că instrucțiunile pot avea una, două sau trei adrese, în funcție de numărul de operanzi implicați în ele.

Primele computere aveau cel mai simplu și mai intuitiv sistem de comandă cu trei adrese. De exemplu: luați numere din adresele de memorie A1 și A2, adăugați-le și plasați suma în adresa A3. Dacă o operațiune necesita un număr mai mic de adrese, atunci cele suplimentare pur și simplu nu au fost folosite. Să spunem că în operațiunea de recensământ au fost indicate doar celulele sursă și receptor ale informațiilor A1 și A3, iar conținutul lui A2 nu avea sens.

Comanda cu trei adrese a fost ușor de descifrat și a fost convenabil de utilizat, dar pe măsură ce cantitatea de memorie RAM a crescut, lungimea sa a devenit prohibitiv de mare. Într-adevăr, lungimea comenzii este suma lungimii a trei adrese și a codului de operare. Rezultă, de exemplu, că pentru o memorie RAM modestă de 1024 de celule, doar scrierea unei părți a adresei unei comenzi necesită 3 * 10 = 30 de biți binari, ceea ce nu este foarte convenabil pentru implementarea tehnică. Prin urmare, au apărut mașini cu două adrese, în care lungimea comenzii a fost redusă prin eliminarea adresei pentru înregistrarea rezultatului. În astfel de calculatoare, rezultatul operației a rămas într-un registru special (adunator) și a fost potrivit pentru utilizare în calculele ulterioare. În unele mașini, rezultatul a fost scris în locul unuia dintre operanzi.

Simplificarea suplimentară a comenzii a condus la crearea mașinilor unicast. Să luăm în considerare sistemul de comandă al unui astfel de computer folosind un exemplu simplu specific. Să presupunem că trebuie să adăugăm numerele stocate în celulele cu adrese RAM A1 și A2 și să plasăm suma în celula cu adresa A3. Pentru a rezolva această problemă, o mașină unicast va trebui să ruleze trei comenzi:

  • * extrageți conținutul celulei A1 în sumator;
  • * adăugați sumatorul cu numărul de la A2;
  • * scrieți rezultatul din sumator în A3.

S-ar putea părea că o mașină unicast ar avea nevoie de trei ori mai multe comenzi pentru a finaliza o sarcină decât o mașină cu trei adrese. De fapt, acest lucru nu este întotdeauna cazul. Încercați să vă planificați propriul program pentru calcularea expresiei A5 = (A1 + A2)*AZ/A4 și veți descoperi că veți avea nevoie de trei comenzi cu trei adrese și doar cinci unicast. Astfel, o mașină unicast este într-un fel și mai eficientă, deoarece nu scrie rezultate intermediare inutile în memorie.

De dragul caracterului complet, ar trebui spus despre posibilitatea implementării unei mașini fără adresă (zero-adresă) care utilizează un mod special de organizare a memoriei - o stivă. Înțelegerea principiilor unei astfel de mașini ar necesita câteva explicații destul de detaliate. În zilele noastre, calculatoarele fără adresă practic nu sunt folosite. Prin urmare, ne vom limita la a menționa doar faptul că un sistem de comandă aranjat într-un mod similar a stat la baza unor microcalculatoare programabile (de exemplu, precum „BZ-21” și „BZ-34” și altele asemenea).

Până acum, în descrierea structurii unei instrucțiuni de mașină, am folosit conceptul intuitiv al adresei informațiilor. Să luăm acum în considerare problema abordării elementelor RAM mai detaliat și strict. Memoria a fost organizată cel mai simplu în calculatoarele primelor două generații. Era format din celule individuale, conținutul fiecăreia fiind citit sau scris ca o singură unitate. Fiecare celulă de memorie avea propriul său număr, care se numea adresa. Evident, adresele celulelor RAM vecine sunt numere întregi consecutive, adică. diferă cu una. Calculatoarele luate în considerare au folosit date de un singur tip (numere reale), iar lungimea lor a fost egală cu lungimea instrucțiunii mașinii și a coincis cu capacitatea memoriei și a tuturor celorlalte dispozitive ale mașinii. De exemplu, subliniem că celula unui computer tipic de a doua generație era formată din 36 de biți binari.

De foarte multe ori, un program era destinat să prelucreze, folosind aceleași formule, o anumită cantitate din conținutul celulelor localizate succesiv (în limbi nivel înalt structurile de acest fel au fost numite ulterior matrice). Primele două generații de calculatoare au furnizat mecanisme speciale pentru procesarea ciclică a matricelor de informații. În acest scop, în instrucțiunile mașinii, pe lângă adresele obișnuite, era posibil să se utilizeze adrese modificabile în care un bit de control special era setat la unul. Când comanda a fost executată, adresele modificate marcate în acest fel au fost adăugate cu valoarea din celulele index speciale. Prin modificarea conținutului celulelor index, a fost posibil să se acceseze diferite elemente ale matricei. Subliniem în special că formarea adresei rezultate s-a realizat în unitatea de control în momentul executării comenzii, astfel încât comanda inițială în RAM a fost salvată fără modificări.

Mecanismul descris pentru modificarea adreselor a simplificat semnificativ scrierea programelor ciclice, cum ar fi găsirea sumei celulelor RAM consecutive, copierea secțiunilor individuale de memorie etc.

În calculatoarele din a treia generație, ideologia construcției memoriei s-a schimbat semnificativ: informația minimă pentru schimbul cu RAM a fost setată egală cu 8 cifre binare, adică. un octet. A devenit posibilă procesarea mai multor tipuri de date: caractere text (1 octet), numere întregi (2 octeți), numere reale de precizie obișnuită sau dublă (4 sau, respectiv, 8 octeți). În acest sens, a fost introdusă o nouă unitate convențională de măsurare a informațiilor - cuvântul mașină. Era egal cu 4 octeți și corespundea lungimii unui număr real standard. Toate cantitățile de informații au început să fie măsurate în unități care sunt multipli ai cuvântului: cuvânt dublu, jumătate de cuvânt etc. Desigur, adresa (numărul celulei RAM) în mașinile cu o organizare de octeți a început să se refere la un octet separat; octeții de memorie au numere care cresc cu unu. Un cuvânt este format din mai mulți octeți secvențiali. Ca adresă a unui cuvânt, este convenabil să luăm adresa unuia dintre octeții care îl formează (de obicei se folosește octetul mic, care are cel mai mic număr). Astfel, adresele cuvintelor nu se mai schimbă după unu; creșterea lor depinde de lungimea cuvântului mașină în octeți și este egală cu patru.

Mărimea cuvântului mașină a fost aparent aleasă în funcție de formatele informațiilor procesate și nu în legătură cu capacitatea de biți a oricărui dispozitiv. Pentru a confirma acest lucru, iată câteva fapte despre computerele tipice de a treia generație din familia EC. Dispozitivul aritmetic-logic al modelului EC-1022 avea 16 biți binari, EC-1033 avea 32 de biți, iar EC-1050 avea 64 de biți. În același timp, pentru un acces la RAM în „ES-1022” și „ES-1033” au fost selectați 4 octeți, în „ES-1050” - 8 octeți (și în „ES-1045” - 16 octeți). Astfel, varietatea numerelor indică faptul că 32 de biți (4 octeți) nu au fost o cantitate de informații alocată tehnic.

Mai multe caracteristici au apărut la mașinile din a treia generație: lungimi diferite comenzi în funcție de metoda de adresare a datelor, prezența memoriei speciale de registru ultra-aleatorie, calcul adresa efectivă RAM ca suma mai multor registre etc. Toate acestea au fost dezvoltate în continuare în computerele din a patra generație, pentru care capacitatea de biți a microprocesorului a devenit una dintre cele mai importante caracteristici. Vom amâna examinarea caracteristicilor structurale ale memoriei de computer de a patra generație până la următoarea secțiune.

Lucrările la ENIAC erau în plină desfășurare când Herman Goldstein s-a întâlnit cu unguro-americanul John von Neumann, care era consultant al programului american de bombe atomice secrete și lucra la modul de creștere a puterii de calcul pentru a rezolva ecuațiile diferențiale necesare. Ca urmare a acestei întâlniri, Neumann, cunoscut pentru realizările sale de la dezvoltarea teoriei jocurilor până la contribuțiile sale la creație. arme nucleare, începe să colaboreze cu grupul de lucru ENIAC. Împreună dezvoltă un proiect pentru un nou computer, care, în primul rând, funcționează exclusiv pe circuite electronice, iar în al doilea rând, programul este introdus în el nu pe o bandă de hârtie, ci folosind o cartelă perforată, care este apoi codificată sub formă de caractere adecvate pentru prelucrare și stocate în memoria centralizată. Chiar și inventatorii înșiși nu și-au dat seama imediat de valoarea acestui principiu, care nu numai că permite modificarea programului, dar aceste modificări pot fi făcute chiar de dispozitivul de calcul.

În timp ce lucra la EDVAC în 1945, a avut loc un conflict major între dezvoltatorii săi. Faptul este că EDVAC a devenit baza pentru cea de-a treia lucrare teoretică la scară largă despre tehnologia computerelor (prima, descrierea „Motorului analitic”, i-a aparținut lui Charles Babbage, a doua lui Alan Turing). Dar nici Mauchly, nici Eckert nu au reușit să-și generalizeze cunoștințele și să abstragă din tuburile radio și circuitele electronice. Poate că au neglijat acest lucru din motive de secret, poate că fizicienii nu s-au degnat să dea o prezentare matematică strictă. Von Neumann a scris „Raport preliminar asupra mașinii EDVAC”, în care a subliniat în detaliu organizarea logică și principii generale funcționarea dispozitivelor de calcul universale. Raportul a fost trimis multor oameni de știință din diferite țăriși a devenit cunoscut pe scară largă (prin urmare, designerii ENIAC nu au putut să-și breveteze ulterior proiectul).

Von Neumann era cunoscut pe scară largă ca un matematician remarcabil, iar comunitatea științifică i-a atribuit toate ideile care stau la baza acestei mașini. Expresia „mașină von Neumann” (adică computer) a intrat în uz. Neumann a găsit o modalitate de a se conecta program de lucru nu prin fire sau alte conexiuni, ci prin integrarea acestuia în memoria mașinii în formă codificată. Neumann a fost cel care a creat designul pe care toate computerele digitale îl urmează și astăzi. În general, diagrama este prezentată în figură. Săgețile solide sunt conexiuni de control (semnalele de control trec prin ele), iar săgețile punctate sunt conexiuni de informații (datele și informațiile trec prin ele). Dispozitivele de intrare/ieșire includ tastatură, mouse, monitor, unitate de disc, CD ROM, imprimantă, scaner, microfon, difuzoare, plotter etc.

Calculatorul trebuie să aibă:

  • · un dispozitiv aritmetico-logic care efectuează operații aritmetice și logice. În zilele noastre, acest dispozitiv se numește unitate centrală de procesare. Unitate centrală de procesare - un microprocesor de computer, care este un cip care controlează toate procesele care au loc în computer;
  • · un dispozitiv de control care organizează procesul de executare a programelor. În calculatoarele moderne, unitatea aritmetic-logică și unitatea de control sunt combinate într-un procesor central;
  • · dispozitiv de stocare (memorie) pentru stocarea programelor și datelor;
  • · dispozitive externe de intrare/ieșire a informațiilor.

Memoria computerului este un număr de celule numerotate, fiecare dintre acestea putând conține fie date procesate, fie instrucțiuni de program. Toate celulele de memorie trebuie să fie la fel de ușor accesibile altor dispozitive computerizate.

Principiul de funcționare:

  • · Folosind un dispozitiv extern, un program este introdus în memoria computerului.
  • · Dispozitivul de control citește conținutul celulei de memorie unde se află prima instrucțiune (comandă) a programului și organizează execuția acestuia. Comanda poate specifica:
    • o efectuarea de operații logice sau aritmetice;
    • o citirea datelor din memorie pentru a efectua operații aritmetice sau logice;
    • o înregistrarea rezultatelor în memorie;
    • o introducerea în memorie a datelor de la un dispozitiv extern;
    • o ieșirea datelor din memorie către un dispozitiv extern.
  • · Dispozitivul de control începe să execute comanda din celula de memorie, care se află imediat după comanda tocmai executată. Cu toate acestea, această ordine poate fi modificată folosind instrucțiunile de transfer de control (sărire). Aceste comenzi indică dispozitivului de control că trebuie să continue executarea programului, începând cu comanda conținută într-o celulă de memorie diferită.
  • · Rezultatele execuției programului sunt transmise pe un computer extern.
  • · Computerul intră în modul standby pentru un semnal de la un dispozitiv extern.

Unul dintre principiile arhitecturii Von Neumann este că un computer nu va trebui niciodată să-și schimbe cablajul dacă toate instrucțiunile sunt stocate în memoria sa. Și de îndată ce această idee a fost pusă în practică în cadrul „arhitecturii von Neumann”, a luat naștere computerul modern.

Ca orice tehnologie, computerele au evoluat spre creșterea funcționalității, utilității și frumuseții. În general, există o afirmație care se pretinde a fi o lege: un dispozitiv perfect nu poate fi urât la aspect și, dimpotrivă, tehnologia frumoasă nu este niciodată rea. Computerul devine nu numai util, ci și un dispozitiv decorativ pentru cameră. Aspect a unui computer modern, desigur, se corelează cu schema lui von Neumann, dar în același timp diferă de aceasta.

Datorită IBM, ideile lui von Neumann au fost implementate sub forma principiului arhitecturii deschise a unităților sistemelor informatice, răspândit în epoca noastră. Conform acestui principiu, un computer nu este un singur dispozitiv dintr-o singură bucată, ci este format din piese fabricate independent, iar metodele de asociere a dispozitivelor cu un computer nu sunt un secret al producătorului, ci sunt disponibile pentru toată lumea. Astfel, unitățile de sistem pot fi asamblate conform principiului set de constructii pentru copii, adică schimbați piese cu altele, mai puternice și moderne, upgradându-vă computerul (upgrade, upgrade - „ridicați nivelul”). Piesele noi sunt complet interschimbabile cu cele vechi. De asemenea, magistrala de sistem face computerele personale „deschis arhitecturale” acesta este un fel de drum sau nucleu virtual comun, sau canal în care merg toate ieșirile de la toate nodurile și părțile unității de sistem. Trebuie spus că computerele mari (nu cele personale) nu au proprietatea de deschidere, nu pot înlocui pur și simplu ceva cu altul, mai avansat de exemplu, poate nici măcar să nu aibă; fire de conectareîntre elementele unui sistem informatic: mouse, tastatură („tastatură”) și unitatea de sistem. Ele pot comunica între ele folosind radiații infraroșii, pentru aceasta, unitatea de sistem are o fereastră specială pentru recepția semnalelor infraroșii (similar cu o telecomandă telecomanda TELEVIZOR).

În prezent, un computer personal tipic este un complex format din:

  • · de bază placa electronica(sistem, mamă) pe care sunt amplasate acele blocuri care procesează informații de calcul;
  • · circuite care controlează alte dispozitive informatice, introduse în conectorii standard de pe placa de sistem - sloturi;
  • · discuri de stocare a informațiilor;
  • · unitate de alimentare de la care este alimentată toți circuite electronice;
  • · o carcasă (unitate de sistem), în care toate dispozitivele interne ale computerului sunt instalate pe un cadru comun;
  • · tastaturi;
  • · monitorizare;
  • · alte dispozitive externe.

Arhitectura de tip Von Neumann (numită după matematicianul John von Neumann) este cea mai utilizată în calculul digital și stă la baza aproape tuturor arhitecturilor cu microprocesoare. Arhitectura Von Neumann definește tipul de interacțiune dintre control și memorie. Partea de control funcționează pe baza unei secvențe de comenzi numită program, care este stocată în memorie. Fiecare instrucțiune constă din două părți: un operator și un operand. Operatorul specifică ce fel de operație ar trebui să efectueze procesorul (operație aritmetică, logică sau de control), iar operandul este adresa de date sau de memorie pe care urmează să fie efectuată operația.

arhitectură program neumann binar

John von Neumann

Sarcina unui computer von Neumann este de a executa o secvență de instrucțiuni care corespund operațiilor care trebuie efectuate de sistem. Deoarece unitatea de control și memoria interacționează activ între ele, este furnizat hardware special pentru a accelera procesul de trimitere a datelor și comenzilor. Aceste instrumente includ: un registru de comandă, un numărător de programe, un acumulator și o unitate logică aritmetică (ALU).

Registrul de comenzi, contorul de comenzi și unitatea sunt elementele principale ale unuia dintre blocurile unui computer - „memorie”. Acestea sunt registre sau celule de memorie a căror capacitate în cifre binare este egală cu lungimea unui cuvânt mașină. Registrul de comenzi stochează comanda pe care computerul trebuie să o execute după cea curentă, iar adresa comenzii ulterioare este stocată în contorul de programe. Unitatea stochează date pentru procesare sau primește date după aceasta.

O unitate aritmetică-logică efectuează operații aritmetice sau logice specificate pe datele specificate în comandă.

Aceste hardware sunt conectate între ele prin una sau mai multe magistrale. Un autobuz este o conexiune electrică între mai multe puncte care pot fi surse sau receptori de semnale (poate fi comparat cu un vehicul care preia și lasă pasagerii). Lungimea cuvântului micro-microcalculator este de obicei de 4, 8, 16 biți etc.

Autobuzul conectează registrele și ALU-urile la dispozitivele de memorie și de intrare/ieșire. Într-o arhitectură cu o singură magistrală, fiecare dispozitiv conectat la magistrală partajează magistrala cu alte dispozitive și, prin urmare, i se acordă o anumită perioadă de timp pentru a transmite informații pe magistrală către sau pentru a primi informații de la un alt dispozitiv. Acest timp multiplexarea magistralei este efectuată de circuitul de control al magistralei hardware și este sincronizată de unitatea de control a computerului.

Unitatea de control îndeplinește principalele funcții de control și sincronizare a tuturor celorlalte blocuri ale computerului. Sistemele de calcul sunt de obicei circuite digitale seriale care sunt sincronizate printr-un semnal de ceas standard transmis în întregul sistem.

Fiecare element al unui computer este proiectat în așa fel încât să efectueze o secvență de acțiuni după un anumit număr de impulsuri de ceas. Registrul de instrucțiuni transmite următoarea comandă decodorului de instrucțiuni, care interpretează setul de biți primit și emite comenzi adecvate atât unității de control al ciclului mașinii, cât și ALU. Unitatea de control al ciclului mașinii decodifică aceste comenzi, emitând semnale corespunzătoare către ieșirile de memorie și de control. În acest fel, funcționarea altor componente ale sistemului poate fi sincronizată cu funcționarea ALU. Memoria (aceasta ar putea fi o memorie cu acces aleatoriu sau un registru intern al mașinii) trebuie, de asemenea, să primească instrucțiuni despre datele pe care trebuie să le proceseze.

Arhitectura PC. Principii de bază ale funcționării calculatorului.

Se numește computer dispozitiv electronic, capabil să efectueze automat o secvență de acțiuni specificate de program pentru primirea, stocarea, conversia și emiterea de informații.

Arhitectura unui sistem informatic este înțeleasă ca fiind principiile cele mai generale ale construcției sale, principiile de funcționare, conexiunile reciproce și interacțiunea principalelor unități funcționale, organizarea memoriei și sistemul de comandă. Problemele legate de organizarea memoriei și sistemele de comandă nu sunt discutate în cursurile de informatică.

Principiile clasice ale arhitecturii computerelor au fost propuse în lucrările lui John von Neumann, G. Goldsteig și A. Burks în 1964 și sunt cunoscute ca „principii von Neumann”

Aceste principii sunt:

  • - Codarea binară a tuturor informațiilor utilizate: orice date dintr-un computer (numere, text, sunet, imagini) sunt reprezentate ca o succesiune de zerouri și unu.
  • - Acces aleatoriu la celulele RAM: calculatorul trebuie să aibă un dispozitiv special - RAM - unde sunt stocate programele care rulează și datele procesate; memoria este împărțită în celule, fiecare celulă are o adresă (număr), la această adresă puteți citi informații din celulă în orice moment sau puteți scrie informații acolo
  • - Principiul unui program stocat: Paragrama trebuie stocată în memoria computerului în formă binară; precum și date. Acest principiu pare absolut evident acum, dar nu a fost folosit la primele calculatoare. Pentru a seta ordinea operațiunilor, a fost necesară conectarea elementelor circuite logice computer într-o anumită ordine prin instalarea de fire jumper. Utilizarea principiului programului stocat a crescut semnificativ eficiența utilizării computerului
  • - Principiul executării secvenţiale a operaţiilor: Un program este format dintr-o secvenţă de comenzi. Fiecare instrucțiune este stocată într-una (sau mai multe) celule de memorie în formă binară. Computerul începe să execute programul, adică. selectează o valoare stocată într-o anumită locație de memorie și execută comanda corespunzătoare acelei valori. Computerul execută apoi comanda stocată în următoarea celulă de memorie și așa mai departe până când una dintre celule întâlnește o comandă de a opri sau de a sări la altă celulă de memorie.

Următoarele blocuri funcționale pot fi distinse ca parte a oricărui computer:

  • - Unitatea logică aritmetică (ALU) realizează toate operațiunile de conversie a datelor. De fapt, orice transformări sunt descompuse în acțiuni elementare, pentru a căror implementare sunt suficiente operații aritmetice (adunare, scădere, înmulțire, împărțire) și logice (ȘI, SAU, NU).
  • - Dispozitiv de control (CU) - controlează toate dispozitivele computerului. ALU și unitatea de control alcătuiesc împreună unitatea centrală de procesare a procesorului.
  • - RAM - stochează programul și datele. Memoria este formată din celule individuale; De obicei, o celulă de memorie poate stoca un octet. Fiecare celulă are un număr (adresă) prin care o poți „accesa” pentru a scrie și a citi date.
  • - Dispozitive de intrare - primesc informații de la utilizator (sau de la unele dispozitive externe - senzori, antene etc.) și le transformă într-o formă convenabilă pentru prelucrare pe computer.
  • - Dispozitive de ieșire - convertesc informațiile stocate și procesate pe un computer în forme care sunt convenabile pentru percepția umană.

Primele calculatoare au fost construite în conformitate cu structura von Neumann, care poate fi reprezentată după cum urmează: (liniile groase indică conexiuni de informații, liniile subțiri indică semnale de control)

După cum se poate vedea din diagramă, dispozitivul de control este conectat la fiecare dintre dispozitive printr-un canal separat prin care sunt transmise semnalele de control. Fiecare dintre dispozitivele externe este conectat printr-un canal separat de schimb de informații cu ALU. Din ALU, datele pot fi deja scrise în memorie; iar datele pot fi, de asemenea, citite din memorie în ALU.

Această structură, când se folosește un canal separat pentru a comunica cu fiecare dispozitiv, a făcut dificilă schimbarea configurației computerului, în special, conectarea de noi dispozitive externe.

PC-urile moderne sunt construite pe un principiu modular de coloană vertebrală. Aceasta înseamnă că toate dispozitivele sunt conectate la o singură coloană vertebrală (set de cabluri). Mai mult, toate dispozitivele sunt conectate folosind conectori standard, iar parametrii semnalelor electrice pe care dispozitivele le folosesc pentru control și schimb de date sunt de asemenea standardizați. Aceste. toate dispozitivele „comunică folosind aceleași reguli”. Acest lucru permite utilizatorului să schimbe setul complet al PC-ului prin înlocuirea, îndepărtarea sau adăugarea blocurilor de module.

Structura PC-ului poate fi reprezentată după cum urmează:

Aici CPU este unitatea centrală de procesare; include un dispozitiv de control și un dispozitiv aritmetic-logic. CPU controlează funcționarea tuturor dispozitivelor computerului și efectuează toate operațiunile de prelucrare a datelor.

RAM - memorie cu acces aleatoriu (memorie cu acces aleatoriu); stochează programul și datele care sunt procesate la momentul curent. Când alimentarea este oprită, conținutul memoriei RAM se pierde.

ROM - memorie read-only; stochează programe care sunt executate când computerul pornește (pornește), precum și alte programe importante. Informațiile din ROM sunt păstrate atunci când alimentarea este oprită. Primele ROM-uri au fost într-adevăr „permanente”, adică. Informațiile le-au putut fi scrise o singură dată. ROM-urile moderne sunt reprogramabile, astfel încât informațiile stocate în ele pot fi actualizate.

VU - dispozitive externe, printre care se numără:

  • o dispozitive de intrare (de exemplu, tastatură);
  • o dispozitive de ieșire (de exemplu, imprimantă)
  • o dispozitive de schimb de date (de exemplu, modem)
  • o dispozitive de citire/scriere și stocare a informațiilor (de exemplu, unități de disc și unități flash)

În ceea ce privește arhitectura PC-ului, hard disk(hard disk) este, de asemenea, un dispozitiv extern. Dar joacă un rol atât de important încât este evidențiat separat în diagramă. Programele sunt stocate pe hard disk (în primul rând sistem de operare) și date.

Fiecare dispozitiv extern este controlat de un controler - un dispozitiv de control special. Controlerul este un „intermediar” între CPU-ul care rulează rapid și VU-ul care funcționează lent. De exemplu, după ce a primit o comandă de la procesor pentru a imprima text, controlerul o traduce într-o secvență de comenzi elementare pe care imprimanta trebuie să le execute: alimentarea cu hârtie, încălzirea tonerului, electrizarea tamburului, pulverizarea vopsea, presarea hârtiei etc. Procesorul poate efectua alte sarcini în acest moment. Astfel, utilizarea controlerelor îmbunătățește performanța computerului.

În plus, sunt necesare programe speciale de driver pentru a controla dispozitivele externe.

PC-urile moderne sunt construite pe principiul „arhitecturii deschise”. Aceasta înseamnă că standardele pentru conectori, parametrii de semnal și regulile de schimb de module între ele sunt deschise, iar orice companie poate produce echipamente în conformitate cu aceste standarde. Aceasta oferă o mare varietate de dispozitive externe și module PC individuale, dar toate sunt compatibile între ele.

Alexandru Savvateev

Informații generale

Calculatorul M-3 a fost dezvoltat sub conducerea lui I. S. Brook. Aparține clasei de mașini universale mici.

Aparatul efectuează operații pe numere cu virgulă fixă ​​pe 31 de biți cu o rată de 30 de operații de biadresă pe secundă. Memoria RAM este implementată pe un tambur magnetic și are o capacitate de 2048 de numere. Dacă memoria de pe miezurile magnetice este conectată la un computer, performanța crește la 1500 de operații pe secundă.

M-3 nu are dispozitive de memorie externe.

Banda perforată și teletype sunt utilizate pentru introducerea și ieșirea informațiilor.

Aparatul are 770 de tuburi de vid și 3000 de diode semiconductoare și consumă 10 kW de energie electrică. Pentru a-l găzdui sunt de ajuns 30-40 m2.

Memoria și structura informației

Memoria RAM a computerului M-3 are o capacitate de 2048 numere sau comenzi pe 31 de biți. Toate celulele de memorie sunt egale între ele. Pentru a accesa celulele de memorie, se folosesc adrese de 11 biți. Biții din celulele de memorie sunt numerotați de la stânga la dreapta; Cea mai semnificativă cifră (cel mai din stânga) este numărul 0.

Numerele binare cu virgulă fixă ​​conțin semnul numeric pe locul zero, iar restul de 30 de biți sunt ocupați de valoare absolută numere. Astfel, M-3 folosește codul direct mai degrabă decât complementul a doi pentru a reprezenta numerele negative. Este general acceptat că întreaga parte numărul este zero, iar cifrele 1-30 conțin partea sa fracțională.

Numerele zecimale au, de asemenea, o parte întreagă zero. Semnul lor este situat în cifra zero, iar în cifrele 1-28 există șapte caiete care codifică cifrele zecimale ale părții fracționale a numărului. Biții 29-30 nu sunt utilizați.

Intrare/ieșire informații

Banda perforată este utilizată pentru a introduce programul în memoria computerului. Pentru fiecare celulă de pe banda perforată, sunt imprimate adresa acesteia, semnul de sfârșit de adresă, valoarea acestei celule și semnul de sfârșit de valoare. La finalul programului, un semn special iese. Programul se introduce prin apăsarea butonului corespunzător de pe panoul de control al computerului.

Bandă de hârtie perforată este, de asemenea, utilizată pentru a introduce date, dar conține o serie continuă de numere zecimale fără coduri suplimentare. Intrarea lor este furnizată de program folosind o comandă specială.

Informațiile sunt transmise către un dispozitiv de imprimare, cum ar fi un teletype.

Sistem de comandă

Calculatorul M-3 este un aparat cu două adrese. Fiecare comandă ocupă o celulă de memorie. Codul de comandă bitul 0 nu este utilizat, biții 1-6 conțin codul operației, biții 7-18 sunt adresa primului operand, biții 19-30 sunt adresa celui de-al doilea operand și rezultatul.

Dispozitivul aritmetic al computerului M-3 are un sumător în care este introdus rezultatul ultimei operații efectuate. Conținutul adunatorului poate fi folosit în următoarea operațiune.

Când se primește un rezultat negativ, inclusiv un zero negativ, se formează semnul w = 1. La primire rezultat pozitiv semnul w =0.

Toate comenzile pot fi împărțite în două grupe: comenzi aritmetice-logice și comenzi de control.

Codul de instrucțiune aritmetic-logic are forma xy, Unde x- modificator de operare (o cifră octală); y- cod de operare (a doua cifră octală). Valorile posibile ale codurilor și modificatorilor operațiilor aritmetico-logice sunt date în tabelele următoare. 1-2.

Tabelul 1

Tabelul 2

În tabel 1 oŞi bînseamnă celulele de memorie specificate de prima și respectiv a doua adresă din codul de instrucțiune; r- registru sumator.

Comenzile de control nu au modificări, așa că codul lor are întotdeauna două cifre octale. Lista comenzilor de control este dată în tabel. 3.

Tabelul 3

Cod de operare Numele echipei Acțiuni efectuate la comandă
07
27
Introducerea numerelor de pe bandă perforată Un număr de pe banda perforată este introdus în celulă b. Nu este introdus în sumator. Adresa celulei a este zero
05
15
Purtând un număr Numărul din celulă o este transferat în celulă b
45
55
Transfer de numere și imprimare Numărul din celulă o este transferat în celulă bși imprimate simultan pe un teletip
24 Salt necondiționat la prima adresă o
b
64 Salt necondiționat la prima adresă și imprimă Controlul este transferat la celula cu adresa o
și în același timp conținutul sumatorului este scris în celula cu adresa bși tipărit pe un teletip
74 Salt necondiționat la a doua adresă Controlul este transferat la comanda cu adresa b. Adresa a din codul de comandă este zero. Bitul semn al sumatorului este șters, adică valoarea absolută a valorii sale originale rămâne în sumator
34 Salt condiționat Dacă w =1, controlul este transferat către celula cu adresa o, iar dacă w =0 - la celula cu adresa b
37 Stop Mașina se oprește. Panoul de control este emis o. Conținutul agregatorului nu se modifică. Câmp de adresă bîn codul de comandă este egal cu zero

O componentă importantă a arhitecturii computerului este sistemul de instrucțiuni, așa că vom lua în considerare această problemă în continuare.

Sub echipă să înțeleagă totalitatea informațiilor, prezentate sub formă de coduri binare, necesare procesorului pentru a efectua următorul pas.

În codul de comandă, anumiți biți (câmpuri) sunt alocați pentru a conține informații:

Despre tipul de operație,

Adresele celulelor RAM în care sunt stocate datele procesate,

Adresele celulelor de memorie unde va fi scris rezultatul operației.

Este numită o structură de câmpuri convenită în prealabil, care permite computerului să recunoască componentele unui cod de comandă Format de comandă .

Exemple de formate de comandă sunt prezentate în Figura 5.

Figura 5

Elementul principal al codului de comandă este codul de operație (OPC), care determină ce acțiuni vor fi efectuate asupra acestei comenzi. N biți cei mai semnificativi ai formatului sunt alocați pentru acesta.

Biții rămași conțin A1 și A2 - adresele operanzilor, A3 - adresa rezultatului.

Distribuția câmpurilor în formatul de comandă se poate modifica la schimbarea metodei de adresare.

Lungimea comenzii depinde de numărul de câmpuri de adresă. În funcție de numărul de adrese, echipele sunt împărțite în fără adresă; una, două, trei adrese.

Amintiți-vă că codul de comandă conține informații despre datele asupra cărora trebuie efectuată o anumită operație. Aceste date se numesc operanzi. De obicei, operanzii sunt conținuți în memoria RAM a computerului sau în memoria registrului. Modul în care operanzii sunt găsiți în memorie determină și formatul instrucțiunii.

Există 2 principii diferite pentru căutarea operanzilor în memorie: asociativ și adresa:

- Căutare asociativă (căutarea după conținutul unei celule de memorie) implică vizualizarea conținutului tuturor celulelor de memorie pentru a identifica un cod care conține o caracteristică asociativă specificată de o comandă.

- Căutare adrese presupune că operandul se află la adresa specificată în câmpul adresa comenzii.

Se face o distincție între adresa executivă a operandului și codul de adresă al instrucțiunii.

Adresa de executare a operandului este codul binar al numărului celulei de memorie prin care va fi scris sau citit operandul.

Codul adresei de comandă se numește cod binar în câmpul de adresă al comenzii, cu ajutorul căruia este necesară generarea adresei executive a operandului. Într-un computer, codul de adresă și adresa executivă nu coincid, deci metoda de adresare poate fi definită ca metoda de formare a adresei executive din codul de adresă al comenzii.

Vom folosi aceste concepte în continuare în descrierea metodelor de adresare a operanzilor.

Metodele de adresare a operanzilor, în funcție de tipul de căutare a operanzilor în memorie, sunt clasificate:

1) prin prezența informațiilor despre adresă în comanda către:

-adresare explicită. Cu această metodă de cod, comanda are un câmp de adresă de operand;



- adresare implicită. Cu această metodă, nu există un câmp de adresă în instrucțiune, iar adresa operandului este implicată de opcode. De exemplu, adresa receptorului de destinație poate fi exclusă din instrucțiune, ceea ce implică faptul că rezultatul este scris în locul celui de-al doilea operand.

2) în funcție de frecvența de acces la RAM:

- adresare directă. Cu adresare directă, operandul este localizat direct în câmpul de adresă al comenzii (Figura 6).

Figura 6

- adresare directă (adresare imediată). Cu adresare directă, operandul este accesat folosind codul de adresă din câmpul de comandă. În acest caz, adresa executivă coincide cu adresa codului de comandă. Acest lucru poate fi ilustrat prin următoarea figură (Figura 7).

Figura 7

- adresare indirectă. Cu adresare indirectă, codul de instrucțiune specifică adresa celulei de memorie în care nu se află operandul în sine, ci adresa sa, numită pointer. Acest lucru poate fi ilustrat prin următoarea figură (Figura 8).

Figura 7

3) conform metodei de formare a adreselor celulelor de memorie:

- Adresare absolută presupunem că codul binar al adresei unei celule de memorie poate fi extras în întregime fie din câmpul de adresă al instrucțiunii, fie dintr-o altă celulă în cazul adresei indirecte.

- Adresare relativă presupunem că codul binar al operandului este format din mai multe componente:

B - cod de bază;

Și - cod index;

C - cod offset.

Aceste componente sunt utilizate în diferite combinații.

Tipuri de adresare relativă:



Figura 9

Memoria de registru este folosită pentru a forma adresa operandului.

Adresa operandului i din tablou este definită ca suma adresei de pornire a matricei de operanzi, dată de offset-ul S, și indicele i, scris într-unul dintre registrele memoriei de registru, numit registru index.

Adresa registrului de index este specificată în comandă de câmpul de adresă de index Ai.

În fiecare ciclu I, conținutul registrului index se modifică cu o valoare constantă, de obicei 1.

Pentru a lucra cu programe cu matrice care necesită operații similare pe elemente de matrice, este convenabil să utilizați acest tip de adresare

2) Adresare auto-index.În timpul auto-indexării, adresa indirectă situată în registrul RP este automat crescută (adresare auto-incrementală) sau micșorată (adresare auto-decrementală) cu o cantitate constantă înainte sau după efectuarea operației.

3) Adresarea stivă. Memoria stivă este utilizată pe scară largă în computerele moderne. Deși adresa de acces la stivă nu este în comandă, este generată de circuitul de control (Figura 9):

Figura 9

Un singur registru este disponibil pentru citirea unei înregistrări - partea de sus a stivei.

Această metodă de adresare este utilizată, în special, de sistemul de întrerupere a programului la apelarea subrutinelor.

Memoria stivă este implementată pe deasupra memoriei obișnuite folosind un indicator de stivă și o adresare auto-index. În mod logic, celulele de memorie alocate stivei sunt organizate astfel încât ultima adresă scrisă este citită prima, iar prima adresă scrisă este citită ultima. Această organizare logică este formată dintr-un contor special. Acest contor este numit stack pointer SP, care este un registru de microprocesor. Este apelată o locație de memorie care poate fi scrisă în prezent la, de exemplu, adresa de retur dintr-o subrutină partea de sus a stivei . Se numește numărul de celule de memorie destinate organizării unei stive adâncimea stivei . Este apelată ultima celulă de memorie în care poate fi scrisă partea de jos a stivei . Scrierea în stivă se realizează utilizând adresarea autodecrementală, iar citirea se realizează folosind adresarea autoincrementală (Figura 10).

Figura 10

Exemplu. Apelarea unei subrutine scrise în C.

În limbajul C, subrutinele sunt numite funcții. O funcție poate avea argumente și variabile locale, adică variabile care există numai în timpul execuției funcției. Să presupunem că o funcție depinde de două argumente de intrare x și y de tip întreg și utilizează trei variabile locale a, b și c, tot de tip întreg. Funcția returnează o valoare întreagă.

Subrutină:

Programul principal:

De exemplu, la un anumit punct al programului, o funcție f este apelată cu argumente x = 2, y = 3. Programul apelant împinge valorile reale ale argumentelor x și y ale funcției f în stivă, cu primul argument al funcției în partea de sus a stivei și al doilea argument dedesubt. Când o instrucțiune de apelare a funcției este executată, adresa de retur este, de asemenea, împinsă în partea de sus a stivei. Când funcția f începe, stiva arată astfel:

Înainte de execuție, funcția f trebuie să preia o zonă de memorie pe stivă pentru variabilele sale locale a, b, c.

Setul de acțiuni ale mașinii implementate îl formează sistem de comandă .

În ciuda numărului mare de tipuri de computere, la cel mai scăzut nivel („mașină”) au multe în comun.

Sistemul de comandă al oricărui computer conține în mod necesar următoarele grupuri de comenzi de procesare a informațiilor:

1. Comenzi de transfer de date (recensământ) care copiază informații dintr-un loc în altul.

Schimb între registrele procesorului,

CPU și RAM,

Procesor și instalații periferice.

2. Operații aritmetice. Operațiile aritmetice de bază includ de obicei adunarea și scăderea (cea din urmă se reduce cel mai adesea la adunare). În ceea ce privește înmulțirea și împărțirea, în multe computere acestea sunt efectuate folosind algoritmi speciali.

3. Operații logice care permit computerului să analizeze informațiile în curs de prelucrare. De exemplu, operațiuni de comparație sau binecunoscutele operații logice AND, OR, NOT. În plus, adaugă adesea analiza biților de cod individuali, resetarea și instalarea acestora.

4. Codul binar se deplasează la stânga și la dreapta. Pentru a demonstra importanța acestui grup de comenzi, este suficient să amintim regula înmulțirii coloanelor: fiecare produs ulterior este scris într-o astfel de schemă cu o deplasare de o cifră la stânga. În unele cazuri speciale, înmulțirea și împărțirea pot fi în general înlocuite cu o deplasare (rețineți că prin adăugarea sau eliminarea unui zero la dreapta, adică deplasarea efectivă a unui număr zecimal, îl puteți crește sau micșora de 10 ori).

5. Comenzi pentru introducerea și ieșirea informațiilor pentru schimbul cu dispozitive externe. În unele computere, dispozitivele externe sunt adrese speciale de memorie de serviciu, astfel încât intrarea și ieșirea se efectuează folosind comenzi de recensământ.

6. Comenzi de control care implementează algoritmi neliniari. Aceasta include în primul rând sărituri condiționate și necondiționate, precum și comenzi pentru accesarea unei subrutine (sărire cu întoarcere). Unele computere au comenzi speciale pentru organizarea buclelor, dar acest lucru nu este necesar: o buclă poate fi redusă la una sau alta combinație de tranziții condiționate și necondiționate. Adesea, același grup de comenzi include câteva operațiuni pentru a controla procesorul - cum ar fi „stop” sau NOP („fără operație”). Uneori sunt despărțiți într-un grup special.

Având în vedere sistemul de comandă, nu se poate să nu menționăm două direcții moderne care se concurează reciproc în construcția acestuia: un computer cu un set complet de comenzi CISC (Complex Instruction Set Computer) și cu un set limitat - RISC (Reduced Instruction Set Computer). Diviziunea a apărut din cauza faptului că de cele mai multe ori computerul trebuie să execute o mică parte din setul său de comenzi, în timp ce restul sunt folosite ocazional. Astfel, dacă limitați semnificativ setul de operații la cele mai simple și scurte, veți obține o mașină RISC destul de eficientă și rapidă. Adevărat, va trebui să plătiți pentru viteză prin necesitatea de a implementa comenzi „aruncate” în software, dar adesea această plată este justificată: de exemplu, pentru calcule științifice sau grafică pe computer, viteza este mult mai importantă decât problemele de programare.

© 2024 steadicams.ru - Caramida. Design și decor. Faţadă. Confruntare. Panouri de fatada