Nivelul limbajului cod-mașină - cs.ucv.ro fileArhitectura Calculatoarelor Cătălina Mancaș Dan...

62
Arhitectura Calculatoarelor Cătălina Mancaș Dan Mancaș [email protected] [email protected] Universitatea din Craiova Facultatea de Automatică, Calculatoare și Electronică Catedra de Ingineria Calculatoarelor și Comunicații Nivelul limbajului cod-mașină Partea I

Transcript of Nivelul limbajului cod-mașină - cs.ucv.ro fileArhitectura Calculatoarelor Cătălina Mancaș Dan...

Arhitectura

Calculatoarelor

Cătălina Mancaș Dan Mancaș

[email protected] [email protected]

Universitatea din Craiova

Facultatea de Automatică, Calculatoare și Electronică

Catedra de Ingineria Calculatoarelor și Comunicații

Nivelul limbajului cod-mașină

Partea I

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Astăzi...

Arhitectura calculatoarelor;

Instrucţiunea la nivelul cod-mașină;

Formate de instrucţiuni;

Criterii de proiectare a formatelor de instrucţiuni;

Lungimea instrucţiunilor;

Noţiunea de metabit;

Formate de instrucţiuni ortogonale şi arhitecturi etichetate.

2

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Curs 8...

Arhitectura: o frontieră dintre două nivele ale unuisistem de calcul;

Mai multe nivele => mai multe frontiere=> mai multe arhitecturi;

Arhitectura calculatorului: frontiera dintre hardware și software.

3

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

1) Tipurile de date: reuniunea datelor care se pot prelucrala nivelul cod masină;

FXP, FLP, alfanumerice, zecimale, etc.;

Unele date se pot reprezenta în MP (vectorii, matricile);

Altele: MP + CPU (în registrele generale sau speciale);

Stabilirea tipului de date: ALU;

Acces: numai prin disponibilitatea datelor acestea potajunge să fie prelucrate de CPU;

Se defineşte un set de operaţii (operatori) pentru fiecaretip de date (adunare în FXP, adunare în FLP, etc.);

Un anumit tip de date complex se poate reprezenta printr-un alt tip de date fundamental (ex. adunarea vectorială).

4

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

2) Modul de referire la date: modul de adresare sau accesal datelor;

Există diferite metode de adresare;

Modul de adresare depinde de:– tipul de memorie;– tipul datei (scalar, vector, tablou).

În cazul instrucţiunilor, care sunt un tip de dată, adresaeste definită de PC => adresare implicită;

În cazul datelor de tip vector se utilizează un numărătorde date numit Data Counter (DC).

5

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

3) Repertoriul de instrucţiuni: reuniunea operaţiilor ce se pot efectua asupra fiecărui tip de dată;

Definit de proiectantul arhitecturii;

Trebuie să includă:

– instrucţiuni de prelucrare;

– instrucţiuni speciale (instrucţiuni de sistem): instrucţiuni

auxiliare care afectează starea CPU-ului şi sunt necesarepentru execuţia programului.

Structura instrucţiunii variază de la un calculator la altul.

6

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

4) Organizarea registrelor din CPU;

Memoria locală: un grup de registre care memoreazăstarea CPU, date intermediare etc.

Execuţie: în aceste registre se reţine informaţia ce trebuietransferată de la o instrucţiune la următoarea;

Registre dedicate: rol precis: ACC, PC, etc.

Fiecare CPU îşi are propria structură de registre.

7

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

5) Organizarea memoriei principale;

Memoria oricărui calculator: structură ierarhizată;

MP: programul şi datele aferente;

Organizarea depinde de:

– tehnologie;

– disponibilitatea de module;

– lărgimea magistralei CPU-memorie;

– timpul de acces etc.

8

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

6) Structura magistralelor;

Structura ansamblului de căi de comunicaţie;

Arhitectul sau proiectantul sistemului trebuie să aibăcunoştiinţe despre:– protocoalele magistralelor;– modul de interfaţare între diferitele magistrale.

Ansamblul magistralelor este structurat ierarhic.

9

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Arhitectura Calculatoarelor

7) Organizarea sistemului de I/O;

Este cel mai variat sistem, datorită:

– multitudinii de echipamente periferice;

– varietăţii organizării I/O (direct prin porturi I/O, prinprocesoare I/O).

Pentru realizarea operaţiilor de I/O trebuie definiteinstrucţiuni speciale de I/O.

10

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni la nivel cod maşină

11

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiunea la nivel cod maşină

Definiţie:

O comandă elementară de natură binară ce asigurătransformarea vectorului de stare al procesorului într-unnou vector de stare.

O reuniune de cifre binare, ce desemnează operaţii şioperanzi, şi care defineşte o comandă elementară asuprablocurilor funcţionale ale calculatorului.

Un pas al procesului de implementare al algoritmuluiaferent problemei de rezolvat.

12

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiunea la nivel cod maşină

Observaţie:

A se face distincţie clară între conceptul de instrucţiune şienunţ (statement).

Primul se referă la maşina fizică sau limbaje deasamblare, iar al doilea apare la limbajele de nivel înalt.

Programul: o secvenţă de instrucţiuni;

După diferite etape de translatare se introduce în memoriacalculatorului în formă binară;

Alături de acestea se introduc şi datele de prelucrat;

Programul se depune în zona de program, iar datele înzona de date.

13

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiunea la nivel cod maşină

Orice instrucţiune la nivelul cod maşină are douăcomponente fundamentale:

1) Câmpul funcţiei sau OPCODE-ul;

Este o combinaţie binară care reprezintă în mod codificat ofuncţie elementară realizată de calculator;

2) Câmpul de adresă;

În care se specifică adresa operandului (operanzilor), adresaunde se depune rezultatul, adresa instrucţiunii următoare etc.Deci, acest câmp este format din mai multe subcâmpuri.

14

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiunea la nivel cod maşină

La nivelul cod maşină instrucţiunile se împart în:

1) Instrucţiuni generale – se găsesc la toate CPU-urile;

2) Instrucţiuni speciale sau specifice – se regăsesc

doar la anumite procesoare.

15

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni generale

Instrucţiuni de transfer: (între registre, registre-memorie,memorie-stivă etc.)

Instrucţiuni ce definesc operaţii monadice (deplasare,rotire etc.);

Instrucţiuni ce definesc operaţii diadice (adunare, scădere,înmulţire etc.);

Instrucţiuni de salturi sau ramificare (condiţionate saunecondiţionate);

Instrucţiuni pentru controlul ciclurilor;

Instrucţiuni de intrare-ieşire;

Acestea sunt dependente de arhitectura de intrare-ieşire şi de

complexitatea protocoalelor de intrare-ieşire etc.

16

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni generale

Instrucţiuni de apel de proceduri;

Procedura este un grup de instrucţiuni destinat a efectua o

anumită sarcină de lucru şi care poate fi apelată din orice punctal programului numit program principal sau apelant.

Uneori se mai numeşte şi subrutină;

Apelul de proceduri reuneşte mecanisme software şi hardwarespecifice diferitelor CPU-uri.

17

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate de instrucţiuni la nivel cod maşină

18

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate de instrucţiuni

Se referă la numărul de subcâmpuri ce există încâmpul de adresă;

numărul de adrese existente în instrucţiune;

Formate: evoluţia tipurilor de instrucţiuni cod maşină,după divizarea câmpului adresă în subcâmpuri de adresă.

În câmpul de adresă se poate găsi:

– adresa explicită, care reprezintă adresa efectivă (AE),

– adresă logică (AL).

Prin tehnici de calcul specifice se determină adresaefectivă pornind de la adresa logică.

19

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 4 adrese

ADR1 – adresa primului operand;

ADR2 – adresa celui de-al doilea operand;

ADR3 – adresa unde se depune rezultatul;

ADR4 – adresa de unde se extrage urm. instrucţiune.

20

OPCODE ADR1 ADR2 ADR3 ADR4

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 4 adrese

Funcții realizate:

{Unde: () = conținutul adresei.

21

OPCODE ADR1 ADR2 ADR3 ADR4

ADR3 (ADR1)^(ADR2);

Read (ADR4);

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Modul cel mai general de specificare al unei instrucţiunicod maşină;

Ideal;

Totuşi, nu este folosit datorită lungimii mari;

Instrucţiunile trebuie să fie scurte pentru că acestea sememorează în MP şi trebuie să ocupe un volum rezonabil;

O primă formă de perfecţionare:

– renunţarea la câmpul ADR4 prin introducerea PC-ului(pointer către instrucţiunea următoare de executat);

– respectarea principiului de organizare liniară a programului:după fiecare citire a instrucţiunii are loc incrementarea PC-ului.

22

Instrucţiuni cu 4 adrese

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 3 adrese

ADR1 – adresa primului operand;

ADR2 – adresa celui de-al doilea operand;

ADR3 – adresa unde se depune rezultatul.

23

OPCODE ADR1 ADR2 ADR3

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 3 adrese

Funcții realizate:

{Unde: () = conținutul adresei.

24

OPCODE ADR1 ADR2 ADR3

ADR3 (ADR1)^(ADR2);

PC PC+1;

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 2 adrese

ADR1 – adresa primului operand;

ADR2 – adresa celui de-al doilea operand.

25

OPCODE ADR1 ADR2

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 2 adrese

Funcții realizate:

{Unde: () = conținutul adresei.

26

OPCODE ADR1 ADR2

ACC (ADR1)^(ADR2);

PC PC+1;

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Observaţie:

În cazul instrucţiunilor de salt, în locul acţiunii PC PC +

1 are loc încărcarea paralelă a PC-ului cu adresa de salt.

Are loc o încălcare a principiului liniaritătii, deci apare un punct de discontinuitate.

Formatul cu două adrese este foarte răspândit pentru căasigură un echilibru bun între lungimea instrucţiunii şieficienţa adresării.

De multe ori pe lângă ADR1 şi ADR2 apare încă unsubcâmp (câmp de modificatori) ce specifică tehnica deadresare.

27

Instrucţiuni cu 2 adrese

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu 1 adresă

ADR1 – adresa primului operand.

28

OPCODE ADR1

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Funcții realizate:

{Unde: () = conținutul adresei.

29

OPCODE ADR1

ACC ACC^(ADR1);

PC PC+1;

Instrucţiuni cu 1 adresă

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Se poate renunta la ADR2 din formatul precedent dacă sepresupune că unul dintre operanzi este apriori în CPUîntr-un registru special, şi anume în acumulator (ACC);

Şi acest format este foarte răspândit datorită lungimiimici;

De obicei pe lângă câmpul ADR apare câmpul suplimentarde modificatori care precizează modul de calcul al AEpornind de la AL;

Deci, câmpul M defineşte tehnica de adresare.

30

Instrucţiuni cu 1 adresă

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Funcții realizate:

{Unde: () = conținutul adresei.

31

OPCODE M ADR1

M=0: ACC ACC^(ADR1);M=1: ACC ACC^(ADR1);

PC PC+1;

Instrucţiuni cu 1 adresă

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni fără nici o adresă

Este formatul cel mai scurt de instrucţiune;

Apare la calculatoarele de tip stivă (Stack computers);

Pot exista şi la alte tipuri de calculatoare în cazul unor operaţiiparticulare asupra ACC sau a altor registre speciale, (subînţelesedin OPCODE).

Exemple:

– Deplasarea conţinutului acumulatorului la stânga sau la dreapta

(SHL sau SHR);

– Rotirea conţinutului acumulatorului la stânga sau la dreapta (ROL

sau ROR);

– Incrementarea sau decrementarea acumulatorului (INC sau DEC);

– Complementarea conţinutului acumulatorului (NOT sau NEG).

32

OPCODE

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criterii de proiectarea formatelor de instrucţiuni

33

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Noțiuni generale

Alegerea unui format concret de instrucţiuni: o etapăimportantă în proiectarea unui calculator;

Instrucţiunea cod maşină: o comandă elementarăpentru blocurile funcţionale din calculator;

Programul reprezintă o reuniune de instrucţiuni codmaşină dispuse în MP în zona de program;

În vederea execuţiei programului, instrucţiunile trebuiecitite din MP şi aduse pe rând în RI.

UIA: un grup de biţi care se citeşte sau se scrie înmemorie;

– De obicei UIA: un octet, dar nu întotdeauna.

Cuvântul calculator este o reuniune de UIA;

– Uneori este egal cu UIA.

34

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criterii de proiectare

Pentru proiectarea formatelor de instrucţiuni se folosescpatru criterii:

1) Lungimea instrucţiunii cod maşină trebuie să fiemultiplu sau divizor de UIA;

2) Lungimea unei instrucţiuni trebuie să fie cât maimică;

3) Lungimea câmpului de OPCODE;

4) Lungimea câmpului de adresă.

35

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 1

1) Lungimea instrucţiunii cod maşină trebuie să fiemultiplu sau divizor de UIA;

Aşezare compactă a instrucţiunilor pe cuvântul calculator;

Asigură astfel o folosire optimă a memoriei calculatorului;

Instrucţiunile pot avea format variabil, dar trebuie săcorespundă condiţiei enunţate;

Cauză: memoria este o resursă scumpă şi trebuie folosităeficient.

36

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 1

1) Lungimea instrucţiunii cod maşină trebuie să fiemultiplu sau divizor de UIA;

37

INSTR1

INSTR2

INSTR3

..................

UIA

INSTR1 INSTR2

INSTR3 INSTR3

............... ...............

UIA ..................

UIA

INSTR1

INSTR2

INSTR2 INSTR3

INSTR4

............... ...............

UIA

INSTR1

INSTR5

INSTR6

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 2

2) Lungimea unei instrucţiuni trebuie să fie cât maimică;

O instrucţiune scurtă consumă puţină memorie;

O instrucţiune scrisă în mai multe UIA-uri, spre a fiexecutată, implică mai multe citiri ale memoriei, care suntconsumatoare de timp.

38

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 3

3) Lungimea câmpului de OPCODE;

Depinde de numărul de funcţii executate de maşina fizică;

Dacă N este numărul de funcţii distincte, atunci OPCODE-ultrebuie să aibă log2(N) ranguri binare;

Problema asignării funcţiilor influenţează procesul dedecodificare (interpretare) a instrucţiunilor de către UC.

Arhitectul sistemului de calcul trebuie să impună anumite regulipentru a simplifica decodificarea;

Există două moduri de codificare:

1) OPCODE-uri rezervate;

Pentru fiecare funcţie se asignează o combinaţie fixă de biţi ce

formează OPCODE-ul (recomandată pentru repertorii mici);

2) Definirea unor clase de OPCODE-uri.

39

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 3

3) Lungimea câmpului de OPCODE;

2): Câmpul de OPCODE este compus din 2 subcâmpuri:

– Subcâmpul de clasă: identifică tipul sau clasa instrucţiunii cod

maşină;

– Subcâmpul de operaţie: identifică o funcţie particulară pentru

acea clasă (recomandat repertoriilor mari sau pentru formate

de lungime variabilă).

Folosirea subcâmpului de clasă permite distingerea diferitelorclase de instrucţiuni din repertoriul de instrucţiuni cod maşină.

Exemplu: La calculatorul IBM 370, subcâmpul de clasă conţinea2 biţi care definea lungimea instrucţiunii ce putea fi pe 2, 4, sau6 octeţi

40

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 4

4) Lungimea câmpului de adresă.

Divergenţă:

– Se cere un acces cât mai rafinat la memorie, dacă se poate chiar la nivel de bit -> presupune o adresă lungă, deci o instrucţiune lungă.

– Conform criteriului 2 instrucţiunea trebuie să fie cât mai scurtă.

În cele mai multe cazuri adresarea se face la nivel de octet;

Există cazuri de adresare la nivel de bit sau la nivel de cuvânt;

Exemplu: Se consideră o memorie organizată pe octeţi ceconţine 2n locaţii;

În cazul adresării la nivel de octet lungimea câmpului deadresă are n ranguri;

Adresarea la nivel de cuvânt (4=22 octeţi): necesare n-2ranguri;

Adresarea la nivel de bit: necesare n+3 ranguri.

41

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Criteriul 4

4) Lungimea câmpului de adresă.

Dacă se doreşte adresarea la nivel de bit atunci trebuie lărgitămagistrala de adresă;

Numărul de biţi este: (2^16)*8=(2^16)*(2^3)=2^19;

=> magistrala de adrese trebuie să fie pe 19 biţi;

Dacă se doreşte adresarea la nivel de cuvânt, adică un grup de4 bytes, deci numărul total de cuvinte este: (2^16)/4=(2^16)/(2^2)=2^14 ;

Deci magistrala de adrese se reduce la 14 biţi.

În sistemele moderne adresa este pe 24 sau 32 biţi;

În felul acesta lungimea instrucţiunilor ar creşte datorităcreşterii câmpului de adresă. Din acest motiv deseori în câmpulde adresă nu se foloseşte adresa efectivă ci adresa logică.

42

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate de instrucţiuni cu lungime fixă şi variabilă

43

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Lungimea instrucțiunilor

O problemă importantă a arhitecturii unui calculator estestabilirea tipului de organizare a instrucţiunilor din punctde vedere al lungimii;

Există diferite formate în funcţie de numărul de adrese;

Se adoptă două abordări:

1) Instrucţiuni cu lungime fixă;

2) Instrucţiuni cu lungime variabilă.

44

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu lungime fixă

Fiecare instrucţiune are lungimea unui cuvântinstrucţiune;

Acest cuvânt trebuie să fie suficient de lung pentru acuprinde toate formatele existente în repertoriul deinstrucţiuni;

Această abordare satisface instrucţiunile care au aceeaşilungime;

Pentru cele cu lungime mai mică rămân câmpurinefolosite;

O utilizare neraţională a UM;

UC este mai simplă.

45

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Instrucţiuni cu lungime variabilă

Foarte răspândite în prezent;

Există o interdependenţă între lungimea unei UIA şilungimea cuvântului instrucţiune fiind posibil adoptareaunui număr foarte mare de formate fără nici o pierdere dememorie (fără a avea biţi nefolositi);

La astfel de instrucţiuni prima parte a instrucţiunii trebuiesă reprezinte OPCODE-ul;

Acesta, prin decodificarea sa, stabileşte lungimeainstrucţiunii;

Deci, codificarea OPCODE-ului trebuie făcută a.î. săîncorporeze şi lungimea instrucţiunii.

46

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

47

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Un alt criteriu în proiectarea instrucţiunilor:

Utilizării corectă a numărului de biţi din câmpul OPCODE.

OPCODE: n ranguri;

Câmpul de adresă: m ranguri;

=> se pot defini 2n funcţii, iar numărul adreselor va fi 2m;

48

n m

OPCODE ADR

2n funcţii 2m adrese

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Dacă se deplasează frontiera dintre cele două câmpurispre dreapta cu un rang:

OPCODE: n+1 ranguri;

Câmpul de adresă: m-1 ranguri;

Cu acest nou format se pot defini 2n+1 funcţii, iar numărulde adrese va fi 2m-1.

Definiţie:

Mecanismele legate de mărirea numărului de funcţiidefinite de o instrucţiune se numesc mecanisme demărire a zonei de OPCODE.

49

n+1 m-1

OPCODE ADR

2n+1 funcţii 2m-1 adrese

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

La proiectarea arhitecturii calculatorului se ţine seama defaptul că sunt posibile modificări ale frontierelor dintrecele două câmpuri fundamentale.

Exemplu: Se consideră o instrucţiune pe 16 biţi, care are4 câmpuri, din care trei adrese.

Cu acest format se pot defini 24=16 funcţii (instrucţiuni),cu 3 adrese.

50

OPCODE ADR1 ADR2 ADR3

0 3 4 7 8 11 12 15

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Ultima combinaţie pentru OPCODE poate să nu fie folosităca un OPCODE pentru un format cu 3 adrese, ci ca unindicator pentru alt format de instrucţiuni şi anumeformatul cu 2 adrese.

51

16 instrucţiuni cu 3 adrese

0000 xxxx yyyy zzzz

0000 xxxx yyyy zzzz

. . . . . . . . . . . .

1110 xxxx yyyy zzzz

1111 xxxx yyyy zzzz

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Rezultă că rămân 15 instrucţiuni cu 3 adrese şi se pot defini 16 instrucţiuni cu 2 adrese:

În mod asemănător ultimele 2 combinaţii ale OPCODE-uluipot să nu fie folosite pentru formatul cu 2 adrese, ci potdeveni coduri de identificare pentru formatul cu o adresă.

52

16 instrucţiuni cu 2 adrese

1111 0000 yyyy zzzz

1111 0000 yyyy zzzz

. . . . . . . . . . . .

1111 1110 yyyy zzzz

1111 1111 yyyy zzzz

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Se obţin astfel 14 instrucţiuni cu 2 adrese şi se pot defini 32 instrucţiuni cu o adresă:

53

32 instrucţiuni cu o adresă

1111 1110 0000 Zzzz

1111 1110 0000 Zzzz

. . . . . . . . . . . .

1111 1110 1110 Zzzz

1111 1110 1111 Zzzz

1111 1111 0000 Zzzz

1111 1111 0000 Zzzz

. . . . . . . . . . . .

1111 1111 1110 Zzzz

1111 1111 1111 Zzzz

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

În mod asemănător ultima combinaţie a OPCODE-uluipoate să nu fie folosite pentru formatul cu 1 adrese, cipoate deveni cod de identificare pentru formatul fără nici oadresă;

Se obţin astfel 31 instrucţiuni cu 1 adresă şi se potdefini 16 instrucţiuni fără nici o adresă.

54

16 instrucţiuni cu nici o adresă

1111 1111 1111 0000

1111 1111 1111 0000

. . . . . . . . . . . .

1111 1111 1111 1110

1111 1111 1111 1111

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Mărirea zonei de OPCODE

Deci, pornind de la formatul iniţial care asigura doar 16instrucţiuni cu 3 adrese, folosind mecanismele de mărire azonei de OPCODE s-au putut obţine 15+14+31+16=76instrucţiuni în diferite formate;

La unele familii de calculatoare se foloseşte şi altprincipiu: de exemplu, se delimitează un subcâmp dinOPCODE care identifică câmpul adresei.

Observaţie: Acesta este doar un exemplu. Se pot alege şialte reguli de extindere, schimbându-se numărul total defuncţii.

55

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Noţiunea de metabit

56

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Noţiunea de metabit

Cf. principiului comenzii după program:

Programul codificat binar se introduce în MO alături de date;

În principiu:

Nu se pot distinge cuvintele instrucţiune de cuvintele dată;

Soluţie (propusă de arhitecţii de sisteme de calcul):

Se adaugă un bit suplimentar fiecărui cuvânt înscris în memorie.

57

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Noţiunea de metabit

Acest bit se notează cu M şi se numeşte metabit;

Acesta diferenţiază cuvintele instrucţiune de cuvintele dată;

M = 0 cuvânt instrucţiune;

M = 1 cuvânt dată.

La citirea unui cuvânt din memorie se extrage automat şimetabitul;

Testarea metabitului pentru valoarea 0 se face în faza de FETCHinstrucţiune, iar la faza FETCH DATA se testează metabitulpentru 1.

Metoda metabitului se poate extinde şi pentru alte scopuri:

Astfel, se pot identifica diverse tipuri de date (întregi,fracţionare, binar-zecimale, şiruri de caractere etc.) prinanumite combinaţii particulare ce se asociază datei la înscriereaîn memorie.

58

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate de instrucţiuni ortogonale şi arhitecturi etichetate

59

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate ortogonale

Orice instrucţiune conţine două câmpuri: câmpul deoperaţie (OPCODE) şi câmpul de adresă;

Anumite câmpuri din instrucţiune numite modificatoriservesc pentru a specifica o serie de elemente auxiliareca, de ex. tipul de adresare;

Aceste câmpuri joacă un rol fundamental în tehnicile deadresare;

Alternativă: anumite tipuri de instrucţiuni să fie asociatecu anumite tipuri de adresare;

Deci, vor exista atâtea OPCODE-uri pentru fiecare operaţiecâte tipuri de adresare există pentru acea operaţie;

Tipul de adresare este intrinsec în OPCODE.

60

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate ortogonale

Definiţie:

Acele formate de instrucţiuni în care se prevăd câmpuriseparate pentru OPCODE şi tehnica de adresare senumesc ortogonale.

Această metodă de identificare a tehnicilor de adresarecorespunde clasei de instrucţiuni ortogonale care definescarhitecturile ortogonale.

61

ARHITECTURA CALCULATOARELOR – Nivelul limbajului cod-mașină

Formate ortogonale

Definiţie:

Se numeşte arhitectură etichetată acel mod deorganizare a instrucţiunilor în care fiecărei date i seasociază un câmp numit etichetă care reprezintăinformaţia referitoare la natura datei.

Observaţie:

Arhitecturile etichetate prezintă multe avantaje;

Totuși, s-au adoptat rar în practică;

Majoritatea arhitecturilor actuale sunt ne-etichetate, decinatura datelor este incoporată în OPCODE.

62