Sunteți pe pagina 1din 18

Facultatea de Inginerie și

Tehnologia informației

Setul de instrucțiuni al sistemelor


de calcul

Arhitectura sistemelor de calcul, an I

Piroska Haller
piroska.haller@ umfst.ro
Pentru uz intern
Este interzisă copierea și distribuirea neautorizată a acestui material.
Componentele de bază
• unitatea centrală de prelucrare
• execută instrucțiunile
• controlează transferul datelor între componente
• controlează ordinea de execuție a instrucțiunilor
• setul de instrucțiuni este stabilit la proiectare
• memorie
• stochează date și instrucțiuni – programe stocate
• fiecare unitate de stocare (8 bit = byte) are un
identificator unic denumit adresă
• echipamentele de intrare ieșire
• introducerea datelor și a instrucțiunilor în sistem precum
și reprezentarea datelor într-un format accesibil omului
• conectarea prin setul de porturi atașat, fiecare port având
o adresă unică
Este interzisă copierea și distribuirea neautorizată a acestui material.
Modele de conectarea memoriilor
• Modelul Neumann și modelul Harvard

Este interzisă copierea și distribuirea neautorizată a acestui material.


Modelul arhitectural Harvard
• Unitatea centrală de prelucrare are conexiuni
separate pentru memoria de date și cea de
instrucțiuni
• Permite accesarea simultană, reducând timpul de
extragere date și instrucțiuni
• Numărul liniilor de conexiuni se dublează
• Folosit în sisteme încorporate – un calculator este un
singur circuit

Este interzisă copierea și distribuirea neautorizată a acestui material.


Modelul arhitectural Neumann
• Nu există diferențe între memoria de date și cea
pentru instrucțiuni
• Citirea instrucțiunilor și a datelor se va realiza
secvențial
• Un program poate modifica propria secvență de
instrucțiuni oferind astfel posibilitate de
autoadaptare algoritmilor – virus?
• Lungimea unui cod poate fi redus prin
automodificare

Este interzisă copierea și distribuirea neautorizată a acestui material.


Magistrală
• O serie de conexiuni comune mai multor
componente, care comunică între ele
• O singură sursă transmite la un moment de timp dat
• Poate realiza comunicații punct la punct sau de tip
difuzare
• Trebuie să includă un mecanism de arbitrare, pentru
selecția sursei
• Paralel – toți biții unui cuvânt se transmit simultan și
sincronizat
• Serial – biții unui cuvânt se transmit secvențial

Este interzisă copierea și distribuirea neautorizată a acestui material.


Model instrucțiune
• Operanzii vor fi stocați în memorie – variabilele din limbajele
de programare de nivel înalt vor fi stocate în locații
predefinite
• Setul de operații este fix, instrucțiunea va conține codul
acestuia
• Fiecare instrucțiune trebuie să conțină tipul operației ce
urmează a fi executat, adresele operanzilor, adresa de
depozitare a rezultatului, precum și adresa instrucțiunii care
urmează
• Dacă spațiul de adresare este mare lungimea instrucțiunilor
crește – dați soluții pentru rezolvarea acestui conflict!
Adresa Adresa Adresa inst.
Tip operație Adresa rezultat
operand1 operand2 următoare

Este interzisă copierea și distribuirea neautorizată a acestui material.


Principii de proiectare - Neumann
• Operanzii și rezultatul instrucțiunilor aritmetice și
logice să fie stocate în interiorul unității centrale de
prelucrare în registre
• din analiza algoritmilor rezultă în general că operanzii și
rezultatul operației curente vor fi folosite în operațiile
succesive
• timpul de acces la datele din registre interne este mult
mai mic decât timpul de acces la memorie
• numărul biților de adresă pentru selectarea operanzilor se
reduce – număr redus de registre
• compact: – unul din operanzii și rezultatul operației va fi
stocat totdeauna într-un registru special denumit
acumulator (A), instrucțiunea va conține doar o adresă

Este interzisă copierea și distribuirea neautorizată a acestui material.


Principii de proiectare - Neumann
• Un numărător, conține adresa instrucțiunii
următoare, și are posibilitatea de a fi încărcat cu o
valoare nouă (s-a păstrat denumirea arhaică de
numărător de program PC)
• majoritatea instrucțiunilor dintr-un algoritm se vor
executa în ordinea succesivă a scrierii lor
• trebuie să existe instrucțiuni speciale care permit saltul la
o altă secvență de instrucțiuni la îndeplinirea anumitor
condiții
• Care să fie valoarea inițială a numărătorului? Cum poate fi
implementat?

Este interzisă copierea și distribuirea neautorizată a acestui material.


Principii de proiectare
• Din punct de vedere al memoriei nu există diferențe
dintre date și instrucțiuni, dar în interior
instrucțiunile vor fi stocate separat (RI)
• Unitatea centrală de procesare va controla transferul
datelor prin magistrala de date, adrese și control
• Comunicarea cu memoria și porturile de intrare –
ieșire se va realiza prin regiștrii de adresă (RA), de
date (RD) și de control (RC)
• Operațiile aritmetice și logice setează un set de
indicatori de stare (Flag) conectat la unitatea
aritmetică și logică

Este interzisă copierea și distribuirea neautorizată a acestui material.


Arhitectura de bază
Formatul instrucțiunilor: Tip operație Adresa

Este interzisă copierea și distribuirea neautorizată a acestui material.


Set minimal de instrucțiuni
• Să fie puține și suficient de simple, ușor de implementat
• Instrucțiunile din limbajele de programare de nivel înalt
să poată fi exprimate cu câteva instrucțiuni mașină
• Instrucțiunile conțin un singur câmp de adrese,
interpretat ca adresă operand, sau adresa instrucțiunii
următoare după tipul instrucțiunii
• Limbajul cod mașină este forma de reprezentare prin
numere binare a instrucțiunilor, iar limbajul de
asamblare este reprezentarea simbolică a instrucțiunilor
• Tipuri de instrucțiuni:
• aritmetice și logice
• de transfer
• de control

Este interzisă copierea și distribuirea neautorizată a acestui material.


Set minimal de instrucțiuni
Cod Tip Operand Descriere

0 AND A, adr și logic între conținutul acumulatorului și operandul de la adresa dată


1 OR A, adr sau logic între conținutul acumulatorului și operandul de la adresa dată
2 NOT A negare conținut acumulator
3 ADD A, adr adună conținutul acumulatorului și operandul de la adresa dată
4 SUB A, adr scade din conținutul acumulatorului operandul de la adresa dată
5 MUL A, adr înmulțirea conținutul acumulatorului cu operandul de la adresa dată
6 SHL A deplasare stânga conținut acumulator
7 SHR A deplasare dreapta conținut acumulator
8 LOAD A, adr încarcă acumulatorul din memorie de la adresa dată
9 STORE A, adr salvează conținutul acumulatorului în memorie la adresa dată
a IN A, adr citește de la portul de intrare de la adresa dată în acumulator
b OUT A, adr scrie conținutul acumulatorului la portul de ieșire de la adresa dată
c JMP adr salt la adresa dată
d JZ adr salt la adresa dată, dacă conținutul acumulatorului este zero
e JC adr salt la adresa dată, dacă în urma operației aritmetice s-a generat transport (împrumut)
f NOP nici o operație

Este interzisă copierea și distribuirea neautorizată a acestui material.


Descompunerea instrucțiunilor
• Fiecare instrucțiune poate fi descompusă într-o secvență de
microoperații
• O microoperație poate fi implementată ca un transfer
condiționat între registre
• Faza de extragere este identică pentru fiecare instrucțiune
Microoperație Descriere
RA  PC se transferă adresa instrucțiunii următoare din numărătorul de
program pe magistrala de adresă prin registrul de adrese
RC  MEMR se activează linia MEMR (citire din memorie) pe magistrala de
control prin registrul de control
RD  M(RA) se citește din memorie în registrul de date de la adresa activă pe
magistrala de adrese
RI  RD instrucțiunea citită se transferă din registrul de date în registrul de
instrucțiuni și se decodifică
PC  PC+l se incrementează valoarea numărătorului de program cu lungimea l
a instrucțiunii curente (va conține adresa instrucțiunii următoare)

Este interzisă copierea și distribuirea neautorizată a acestui material.


Faza de execuție
Microoperație
• ADD A, adr
Descriere
RA  RIadr se transferă adresa operandului din registrul de instrucțiuni pe
magistrala de adresă prin registrul de adrese
RC  MEMR se activează linia MEMR (citire din memorie) pe magistrala de control
prin registrul de control
RD  M(RA) se citește din memorie în registrul de date de la adresa activă pe
magistrala de adrese
A  RD + A se adună conținutul acumulatorului cu operandul extras și rezultatul se
înscrie în acumulator

• LOAD A, adr Microoperație


RA  RIadr
Descriere
se transferă adresa operandului din registrul de instrucțiuni pe
magistrala de adresă prin registrul de adrese
RC  MEMR se activează linia MEMR (citire din memorie) pe magistrala de control
prin registrul de control
RD  M(RA) se citește din memorie în registrul de date de la adresa activă pe
magistrala de adrese
A  RD se transferă operandul extras în acumulator

Microoperație
• STORE A, adr
Descriere
RD  A se transferă operandul din acumulator pe magistrala de date prin
registrul de date
RA  RIadr se transferă adresa operandului din registrul de instrucțiuni pe
magistrala de adresă prin registrul de adrese
RC  MEMW se activează linia MEMW (scriere în memorie) pe magistrala de control
prin registrul de control
M(RA)  RD se scrie în memorie datele de pe magistrala de date, la adresa activă
pe magistrala de adrese

Este interzisă copierea și distribuirea neautorizată a acestui material.


Instrucțiuni de control
• JMP adr Microoperație
PC  RIadr
Descriere
se transferă adresa instrucțiunii următoare din registrul de instrucțiuni
în numărătorul de program

• JZ adr Microoperație
PC  RIadr
Descriere
se transferă adresa instrucțiunii următoare din registrul de instrucțiuni
în numărătorul de program, dacă condiția este îndeplinită;
rămâne valoarea veche, adică adresa instrucțiunii de după JZ, dacă
condiția nu este îndeplinită

De ce s-a incrementat valoare lui PC în faza de extragere,


dacă ea se va suprascrie în faza de execuție?

Este interzisă copierea și distribuirea neautorizată a acestui material.


Transformare din limbajul C în ASM

unsigned char a,b,c; LOAD A, 101


a=b+c; ADD A, 102
c=c+2; STORE A, 100
toate variabilele sunt de un byte, și LOAD A, 102
sunt stocate la adresele ADD A, 103
consecutive
STORE A,102
a la adresa 100
b la adresa 101
c la adresa 102
constanta 2 va fi stocată la adresa
103

Ce modificări propuneți în setul de instrucțiuni?


Este interzisă copierea și distribuirea neautorizată a acestui material.
Transformare din limbajul C în ASM

unsigned char i, a; LOAD A, 200


if (i == 5) SUB A, 203
a=0; JZ Et1
else LOAD A, 201
a=a+1;
ADD A, 204
datele vor fi stocate în memorie:
STORE A, 201
variabila i la adresa 200
JMP Et2
variabila a la 201
Et1: LOAD A, 202
constanta 0 la adresa 202
constanta 5 la adresa 203 STORE A, 201
constanta 1 la adresa 204 Et2: orice instrucțiune

Optimizați codul propus!

Este interzisă copierea și distribuirea neautorizată a acestui material.

S-ar putea să vă placă și