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 unui sistem 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: o reuniune de instrucţiuni cod maş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