Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Arhitectura sistemelor din familia PC

calculatoare



+ Font mai mare | - Font mai mic



Arhitectura sistemelor din familia PC

Structura si functionarea de principiu a unui sistem pe baza de microprocesor



Structura unui sistem pe baza de microprocesor include urmatoarele componente: microprocesor, memorie de instructiuni, memorie de date, circuite de interfata. Microprocesorul contine ca element esential o unitate aritmetica si logica care lucreaza cu operanzi sub forma de cuvinte de 8 sau 16 biti. Activitatea microprocesorului se desfasoara secvential pe baza executiei unor instructiuni inscrise in memoria de instructiuni.

Memoria de date este utilizata pentru scrierea si respectiv citirea datelor. Prin circuitele de interfata si echipamentele de intrare/iesire se realizeaza comunicatia intre sistem si utilizator.

Componentele structurale ale calculatorului sunt conectate intre ele prin intermediul urmatoarelor magistrale

magistrala de date prin care se transfera instructiuni sau date;

magistrala de adrese

magistrala de control

Arhitectura microprocesorului 8086

Structura microprocesorului

Aceasta structura poate fi vazuta in figura 2. Microprocesorul dispune de mai multi registri generali pe 16 biti. El este format din doua componente mari:

EU (Executive Unit) care executa instructiunile masina prin intermediul componentei ALU (Aritmetic and Logic Unit).


BIU (Basic Input Unit) este componenta care pregateste executia fiecarei instructiuni masina. In esenta, aceasta componenta citeste o instructiune din memorie, o decodifica si calculeaza adresa din memorie a unui eventual operand. Configuratia rezultata este depusa intr-o zona tampon cu dimensiunea 6 octeti (notata ZT in fig.2), de unde va fi preluata de catre EU.

ZT

 
Fig.2 Structura microprocesorului 8086

Cele doua componente lucreaza in paralel, in sensul ca in timp ce EU executa instructiunea curenta, BIU pregateste instructiunea urmatoare. Cele doua actiuni sunt sincronizate, in sensul ca cea care termina prima asteapta dupa cealalta.

Registrii generali EU

Registrul AX este registrul acumulator. El este folosit de catre majoritatea instructiunilor ca unul dintre operanzi.

Registrul BX este folosit in principal ca registru de baza.

Registrul CX este folosit in principal ca registru de numarare (registru contor) pentru instructiunile care au nevoie de indicatii numerice.

Registrul DX este un registru de date. Impreuna cu registrul AX se foloseste in calculele ale caror rezultate depasesc dimensiunea unui cuvant.

Fiecare dintre registrii AX, BX, CX, DX au capacitatea de 16 biti. Fiecare dintre ei poate fi privit in acelasi timp ca fiind format prin concatenarea (alipirea) a doi (sub) registri. Subregistrul superior contine cei mai semnificativi 8 biti (partea HIGH) ai registrului de 16 biti din care face parte. Exista astfel registrii AH, BH, CH, DH. Subregistrul inferior contine cei mai putin semnificativi 8 biti (partea LOW) ai registrului de 16 biti din care face parte. Exista AL, BL, CL, DL.

Registrii SP si BP sau registrii destinati lucrului cu stiva. O stiva se defineste ca fiind o zona de memorie in care se pot depune succesiv valori, extragerea lor ulterioara facandu-se in ordinea inversa depunerii.

Registrul SP (Stack Pointer) adreseaza ultimul element introdus in stiva (elementul din varful stivei).

Registrul BP (Base pointer) adreseaza primul element introdus in stiva (indica bazei stivei).

Registrii DI si SI sunt registrii de index utilizati de obicei pentru accesarea elementelor din siruri de octeti sau de cuvinte. Denumirile lor (Destination Index si Source Index).

Flagurile

Un flag este un indicator reprezentat pe un bit. O configuratie a registrului de flaguri indica un rezumat sintetic a executiei fiecarei instructiuni. Pentru 8086 acest registru (notat FLAGS in fig.2) are 16 biti dintre care sunt folositi numai 9. Structura in detaliu a registrului FLAGS este data in figura 3.

Fig.3 Structura registrului de flaguri 8086

CF (Carry Flag) este flagul de transport. Are valoarea 1 in cazul in care in cadrul operatiei s-a facut transport in afara domeniului de reprezentare a rezultatului. De exemplu, daca se efectueaza urmatoarea adunare intre doi octeti:

10010011+

01110011

.....

100010110

rezulta un transport de cifra semnificativa. Valoarea 1 este depusa automat in CF. In absenta transportului, in CF se va depune valoarea 0.

PF (Parity Flag) este flagul de paritate. Valoarea lui se stabileste in asa fel incat impreuna cu numarul de biti 1 din reprezentarea rezultatului instructiunii sa rezulte un numar impar de cifre 1.

AF (Auxiliary Flag) indica valoarea transportului de la bitul 3 la bitul 4 al rezultatului executiei instructiunii. De exemplu, in adunarea de mai sus transportului este 0.

ZF (Zero Flag) primeste valoarea 1 daca rezultatul instructiunii este egal cu zero si valoarea 0 la rezultat diferit de zero.

SF (Sign Flag) primeste valoarea 1 daca rezultatul executiei instructiunii este un numar strict negativ si valoarea 0 in caz contrar.

TF (Trap Flag) este un flag de depanare. Daca are valoarea 1, atunci masina se opreste dupa fiecare instructiune

IF (Intrerrupt Flag) este flag de intrerupere.

DF (Direction Flag) este folosit cand se opereaza asupra sirurilor de octeti sau de cuvinte. Daca are valoarea 0, atunci deplasarea in sir se face de la inceput spre sfarsit, iar daca are valoarea 1 este de deplasari de la sfarsit spre inceput.

OF (Overflow Flag) este flag pentru depasire. Daca rezultatul ultimei instructiuni nu a incaput in spatiul operanzilor, atunci acest flag va avea valoarea 1, astfel va avea valoarea 0.

Semnificatiile de mai sus sunt generale. De fapt, fiecare instructiune isi specifica modul propriu de setare si interpretare a flagurilor.

Organizarea si selectia memoriei

Microprocesorul 8086 considera memoria ca pe un sir de 1 Mocteti. O adresa a unei locatii de memorie trebuie deci reprezentata pe 20 de biti. Capacitatea registrelor si a cuvintelor este insa de 16 biti. Datorita acestui fapt apare necesitatea impartirii spatiului de 1 Moctet in segmente logice de 64 de Ko. Microprocesorul lucreaza cu 4 segmente concomitent, adresele lor de inceput fiind in registrele de segment. Segmentele sunt blocuri de memorie care se pot si suprapune. Adresele de inceput trebuie sa fie multiplu de 16, deci cei mai putini semnificativi 4 biti sunt 0.

Vom numi deplasament offset) adresa unei locatii fata de inceputul unui segment. Deoarece segmentul are 64 Ko, sunt suficienti 16 biti pentru reprezentarea oricarui deplasament.

Vom numi specificare de adresa o pereche de numere de cate 16 biti, primul reprezentand adresa de inceput a segmentului, iar al doilea deplasamentul in cadrul segmentului. In scriere hexazecimala, o adresa se exprima sub forma:

s3s2s1s0:o3o2o1o0

Mecanismul de calcul al adresei fizice este prezentat in fig.


Fig. 4

Adresa fizica:

a4a3a2a1a0 = s3s2s1s00+o3o1o1o0

Deplasamentul se afla intr-unul dintre registrele interne. Pentru a obtine adresa fizica, continutul registrului segment se deplaseaza la stanga cu 4 ranguri, completand cu zerouri la dreapta, apoi se aduna deplasamentul, obtinandu-se in final adresa fizica. Acest calcul este efectuat de catre componenta ADR din BIU.

Exemplu: Presupunem ca (SS) = 2590H si (SP) = 1248H.

Adresa fizica a varfului stivei va fi:

25900 + 1248 = 26B48H, si va fi specificata astfel: 2590:1248.

Pentru codurile instructiunilor adresa de baza a segmentului va fi in registrul CS (Code Segment) iar deplasamentul in IP.

Este usor de observat ca exista mai multe specificari pentru aceeasi adresa. De exemplu adresa 7BC1:54A3 care indica adresa fizica 810B3, mai poate fi specificata si prin: 810B:0003. In acest fel este posibila suprapunerea mai multor segmente in aceeasi arie de memorie.

Acest mecanism de adresare este tipic pentru 8086 si se mai numeste mod de adresare real (Real Adress Mode).

Incepand cu microprocesorul 80286 mai apare modul de adresare protejat (Protected Virtual Adress Mode) iar incepand cu 80386 mai apar inca doua moduri de adrese:

- mod paginat

- mod virtual 8086

Ultimele 3 moduri au fost introduse pentru a permite adresarea de catre IBM-PC a mai mult de 1 Mo.

Arhitectura microprocesorului 8086 permite existenta a 4 tipuri de segmente:

segment de cod, care contine instructiuni masina;

segment de date, care contine date asupra carora se actioneaza conform instructiunilor;

segment de stiva;

segment suplimentar de date (extrasegment).

Fiecare program este compus din unul sau mai multe segmente. In fiecare moment al executiei este declarat activ cate un singur segment din fiecare tip. Registru CS (Code Segment), DS (Date Segment), SS(Stack Segment) si ES (Extra Segment) din BIU retin adresele de inceput ale segmentelor active, corespunzator fiecare tip.


Registrul IP (Instruction Pointer) contine offsetul (deplasamentul) instructiunii curente din cadrul segmentului de cod curent, el fiind manipulat exclusiv de BIU.

Desi combinatia registru de segment - registru pentru accesul in interiorul unui segment se face in mod implicit, programatorul are posibilitatea de a modifica aceasta combinatie.

Microprocesorul 8086 poate lucra cu operanzi pe bit, digit, octet, cuvant , cuvant dublu sau bloc. In cazul in care se transfera operanzi pe cuvant, daca acesta se afla la o adresa para, transferul are loc intr-un singur ciclu, iar daca acesta se afla la o adresa impara transferul are loc in doi cicli.

Conform conventiilor firmei INTEL cuvantul (16 biti) este memorat astfel: octetul mai putin semnificativ la o adresa de valoare mai mica.

Exemplu:

Cuvantul 1A2B

este memorat la adresa fizica 00100H astfel:

00100H: 2B

00101H: 1A

La fel se memoreaza si cuvantul dublu, adica cuvantul mai putin semnificativ se memoreaza la o adresa mai mica.

Exemplu: F2C056AB (dublul cuvantului) se memoreaza la adresa fizica 01000H astfel:

01000H: AB

01001H: 56

01002H: C0

01003H: F2

Spatiul de memorie direct adresabil al microprocesorului 8086 este de 1 Mo cu adresele de la 00000H la FFFFFH. Adresarea se poate face la nivel de octeti dar si la nivel de cuvant, doi octeti succesivi, fara a exista restrictii referitoare la adresa de inceput a operanzilor cuvant. In spatiul de memorie exista doua zone, una la inceput, in domeniul 00000H - 0007FH si alta la sfarsit, in domeniul FFFF0H - FFFFFH care au destinatii speciale, fiind fie zone dedicate fie zone rezervate. Prima zona este folosita la memorarea tabelei vectorilor de intrerupere iar a doua este adresata in urma activarii semnalului RESET.

REZERVAT

FFFFFH

FFFFCH

DEDICAT

FFFFBH

FFFF0H

DISPONIBIL

Fig. 6

 


00080H

REZERVAT

0007FH

00014H

DEDICAT

00013H

00000H

Fizic, memoria poate fi impartita in doua blocuri: blocul par si blocul impar. Blocul par cuprinde doar locatii cu adrese pare, iar cel impar cuprinde doar locatii cu adrese impare. Blocul impar este conectat la jumatatea inferioara a magistralei de date, D0 - D7, iar cel impar la jumatatea superioara a magistralei de date D8 - D15.


Fig. 7

Transferul unui octet sau cuvant se face sub controlul a doua linii A0 si BHE conform tabelului:

BHE

A0

Se transfera

ambii octeti

octet superior la/de la adresa impara

octet inferior la/de la adresa para

fara transfer

Pentru accesul la un operand aflat la o adresa para, linia A0 va selecta blocul par, iar linia BHE va invalida blocul impar. Ca urmare va avea loc transferul intre locatia adresata si jumatatea inferioara a magistralei de date. Fig. 8 prezinta acest transfer unde "a" este adresa para a opernadului octet.


Fig.8 Transfer de octet la/de la adresa para

Daca se doreste accesul la un operand octet aflat la o adresa impara, a + 1 in figura 9, linia A0 va invalida blocul par in timp ce BHE = "0" logic va selecta blocul impar. Ca urmare va avea loc transferul intre locatia adresata si jumatatea superioara a magistralei de date.

Fig.9 Transfer de octet la/de la adresa impara

In cazul unui transfer pe cuvant, care este memorat incepand cu o adresa para, fig. 10, ambele blocuri vor fi selectate simultan de liniile A0 = BHE = "0" logic. Va avea loc transferul intre cele doua locatii adresate, a si a + 1, si intreaga magistrala de date. Transferul are loc intr-un singur cilcu de magistrala si se spune ca operandul este aliniat.


Fig.10 Transfer de octet la/de la adresa para

In cazul unui acces la un operand cuvant, memorat incepand cu o adresa impara, fig.11, se spune ca operandul este nealiniat si sunt necesari doi ciclii de magistrala. La primul ciclu avem BHE = "0" logic si A0 = "1" logic ca urmare se va transfera octetul de la adresa impara, a + 1 in figura, pe jumatate superioara a magistralei de date, care este octetul mai putin semnificativ al operandului.

Urmeaza apoi al doilea ciclu, in care adresa este incrementata, deci A0 = "0" logic si BHE = "1" logic, ca urmare se va transfera octetul de la adresa para, a + 2, pe jumatatea inferioara a magistralei de date, acest octet fiind cel mai putin semnificativ al operandului. Aceste operatii sunt executate de microprocesor automat, inclusiv directionarea corecta a octetilor catre jumatatile corespunzatoare ale registrelor interne ale sale si tot procesul este transparent pentru utilizator, doar ca transferul este mai lung cu patru stari.


Fig.11 Transfer de octet la/de la adresa impara

Exemple de instructiuni 80x86
  1. Instructiuni pentru transferul informatiei

Sintaxa unei astfel de instructiuni este:

MOV D,S

S - sursa

D - destinatia

Transferul se poate efectua intre doua registre sau intre un registru si memorie. Transferul se poate efectua la nivel de octet sau de cuvant (2 octeti). Exemplu:

MOV AL,ACH

Instructiunea are ca efect transferul octetului AC in registrul AL

MOV AX,DX

Instructiunea are ca efect transferul continutului registrului DX in registrul AX.

  1. Instructiuni aritmetice

Microprocesorul 8086 dispune de instructiuni pentru operatii de adunare, scadere, inmultire si impartire asupra unor operanzi la nivel de octet sau cuvant cu si fara semn.

Instructiunile de adunare au sintaxa:

ADD D,S

Sau

ADC D,S

Se aduna continutul destinatiei cu sursa si eventual cu Carry (ADC)

INC D

Instructiunea incrementeaza operandul destinatie.

Instructiunile de scadere au sintaxa:

SUB D,S

Sau

SBB D,S

Se scade din operandul destinatie operandul sursa, eventual si Carry (SBB - subtract with borrow).

Instructiunile de inmultire au sintaxa:

MUL S

Sau:

IMUL S

Instructiunea MUL executa inmultirea acumulatorului AX cu operandul sursa , operanzii fiind considerati fara semn, iar IMUL considera operanzii cu semn

Instructiunile de impartire au sintaxa:

DIV S

Sau:

IDIV S

Instructiunea imparte continutul acumulatorului cu continutul operandului sursa. Daca sursa este un octet, atunci deampartitul este continutul registrului AX, impartitorul este S, catul se obtine in AL iar restul in AH. Daca S este un operand pe 2 octeti atunci deampartitul este continutul registrilor DX si AX, impartitorul este S, catul se obtine in AX, iar restul in DX.

  1. Instructiuni logice, de deplasare si rotire

Instructiuni logice

AND D,S

OR D,S

XOR D,S

NOT D

TEST D,S (se executa SI logic intre D si S dar singurul efect este pozitionarea indicatorilor de conditii)

Instructiuni de deplasare

SHL/SHR D,1

Sau

SHL/SHR D,CL

Deplasarea se face la stanga sau la dreapta a operandului D (destinatie) cu un rang sau cu un numar de ranguri binare continut in reg. CL

Instructiuni de rotire

ROL/ROR D,1

Sau

ROL/ROR D,CL

Rotirea se face la stanga sau la dreapta a operandului D (destinatie) cu un rang sau cu un numar de ranguri binare continut in reg. CL

  1. Instructiuni de salt

JMP OP

Instructiunea executa un salt neconditionat la adresa data de operandul OP.

JCC OP

Instructiunea executa un salt conditionat de o conditie "CC"

Exemplu JZ - salt la zero

JNC - salt daca nu s-a pozitionat Carry

JE - salt in caz de egalitate

Etc



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1917
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved