Arhitectura Sistemelor de Calcul
Cuprins:
Tema proiectului…………………………………………pag 3
Microprograme pentru instructiuni………………………pag 4
Descrierea semnalelor de comanda si microoperatiile…. pag 9
4. Codificarea instructiunilor……………………………….pag 10
5. Codificarea dupa functie…………………………………pag 19
6. Bibliografie………………………………………………pag 25
=== proiect ===
Cuprins:
Tema proiectului…………………………………………pag 3
Microprograme pentru instructiuni………………………pag 4
Descrierea semnalelor de comanda si microoperatiile…. pag 9
4. Codificarea instructiunilor……………………………….pag 10
5. Codificarea dupa functie…………………………………pag 19
6. Bibliografie………………………………………………pag 26
Tema proiectului.
Sa se proiecteze unitatea de comanda pentru un microprocessor capabil sa execute urmatorul set de instructiuni :
FETCH , PUSH R , POP R , CMP RM , AND RM , OR RM , XRA , CPR data , DCR AC , INC AC , ADC AC , SBC AC , ADD AC , SBB AC , SBI data , SWIT data , ACI data , ADI data , JMP adr , JMPZ adr , JMPC adr , CALL adr , RET , RC , RZ , HALT , NOT AC , ROTD AC , ROTS AC , ROTDC AC , ROTSC AC , DD AC , DS AC , DDC AC , DSC AC , STORE AC , LOAD AC .
In implementare , se va tine cont de precizarile urmatoare :
Unitatea de comanda sa fie microprogramata (se va utiliza codificarea dupa functie)
Adresarea memoriei se va realiza prin metoda segmentarii.
Microprograme pentru instructiuni.
Mai jos am prezentat microprogramele pentru instructiunile care sunt necesare pentru proiectarea unei unitati de comanda microprogramate unde adresarea memoriei se va face prin metoda segmentarii.
Fiecare instructiune este luata separat si detaliata , de exemplu la o instructiune nu vom scrie primul rand si ultimul ci o vom detalia , vor fi scrisi toti pasii cum s-a ajuns la final.
FETCH (aducerea din memorie a instructiunii/operandului )
RAV ← PC C
MS ← TABS(RAV(S)) C
RA ← MS(B) + RAV(C) C
RM ← MP(RA) C
RAC ← RM(OP) C
PC ← PC + 1 C
PUSH R ( depunerea in stiva a registrului general R)
RS ← RS – 1 C
RA ← RS C
RM ← R C
MP(RA) ← RM C
POP R ( extragerea din stiva a registrului R )
RA ← RS C
RM ← MP(RA) C
R ← RM C
RS ← RS + 1 C
CMP RM ( compara registrul acumulator cu registrul memoriei RM )
AC ← AC – RM C
AND RM ( SI logic intre acumulator si RM )
AC ← AC AND RM C
OR RM ( SAU logic intre acumulator si RM )
AC ← AC OR RM C
XRA ( SAU EXCLUSIV intre acumulator si RM )
AC ← AC XOR RM C
CPR data ( compara continutul acumulatorului cu continutul locatiei de la adresa data )
RA ← RM ( data ) C
RM ← MP(RA) C
CMP RM C
DCR AC ( decrementeaza registrul acumulator )
AC ← AC – 1 C
INC AC ( incrementeaza registrul acumulator )
AC ← AC + 1 C
ADC AC ( aduna la continutul acumulatorului registrul RM si fanionul de transport C )
AC ← AC + RM + C C
SBC AC ( scade din continutul acumulatorului registrul RM si fanionul de transport C )
AC ← AC – RM – C C
ADD AC ( aduna la continutul acumulatorului registrul RM )
AC ← AC + RM C
SBB AC (scade din continutul acumulatorului registrul RM )
AC ← AC – RM C
SBI data ( scadere “ cu imprumut ” )
RA ← RM ( data ) C
RM ← MP ( RA ) C
SBC AC C
SWIT data ( scadere “ fara imprumut ” )
RA ← RM ( data ) C
RM ← MP ( RA ) C
SBB AC C
ACI data ( aduna la continutul acumulatorului continutul locatiei de la adresa data si fanionul de transport C )
RA ← RM ( data ) C
RM ← MP ( RA ) C
ADC AC C
ADI data ( aduna la continutul acumulatorului continutul locatiei de la adresa data )
RA ← RM ( data ) C
RM ← MP ( RA ) C
ADD AC C
JMP adr ( salt neconditionat la adresa adr )
PC ← RM ( adr ) C
JMPZ adr ( salt conditionat de fanionul de zero, Z=1 )
If (z=1)
PC ← RM ( adr ) C
JMPC adr ( salt conditionat de fanionul de transport, C=1 )
If (C==1)
PC ← RM ( adr ) C
CALL adr ( apel de subrutina )
R ← PC C
R ← CF C
PUSH R CCCC
PC ← RM ( adr ) C
RET ( revenire din subrutina )
RA ← RS C
RM ← MP(RA) C
R ← RM C
PC ← R C
RS ← RS + 1 C
RC ( revenire din subrutina conditionata de C=1 )
If (C==1)
RET
RZ ( revenire din subrutina conditionata de Z=1 )
If (Z==1)
RET
HALT ( oprire procesor )
NOT AC ( complementarea continutului registrului acumulator )
AC ← C
ROTD AC ( rotire la dreapta a registrului acumulator )
ROTD AC C
ROTS AC ( rotire la stanga a registrului acumulator )
ROTS AC C
ROTDC AC ( rotire la dreapta a registrului acumulator daca C=1 )
If (C==1)
ROTD AC C
ROTSC AC ( rotire la stanga a registrului acumulator daca C=1 )
If (C==1)
ROTS AC C
DD AC ( deplasare la dreapta a registrului acumulator )
DD AC C
DS AC ( deplasare la stanga a registrului acumulator )
DS AC C
DDC AC ( deplasare la dreapta a registrului acumulator daca C=1 )
If (C==1)
DD AC C
DSC AC ( deplasare la stanga a registrului acumulator daca C=1 )
If (C==1)
DS AC C
STORE AC ( scrierea in memorie a continutului acumulatorului )
RA ← RM ( adr ) C
RM ← AC C
MP(RA) ← RM C
LOAD AC ( citirea din memorie in acumulator a unei locatii de memorie )
RA ← RM ( adr ) C
RM ← MP(RA) C
AC ← RM C
In dreptul fiecarei instructiuni a fost scris si semnalul de comanda care ii corespunde . Aceste semnale sunt scrise in ordine la punctul 3 al proiectului.
3. Descrierea semnalelor de comanda si microoperatiile .
In continuare semnalele de comanda sunt scrise in ordine cronologica:
C RAV ← PC
C MS ← TABS(RAV(S))
C RA ← MS(B) + RAV(C)
C RM ← MP(RA)
C RAC ← RM(OP)
C PC ← PC + 1
C RS ← RS – 1
C RA ← RS
C RM ← R
C MP(RA) ← RM
C R ← RM
C RS ← RS + 1
C CMP RM
C AND RM
C OR RM
C XRA RM
C RA ← RM ( adr )
C AC ← AC – 1
C AC ← AC + 1
C AC ← AC + RM + C
C AC ← AC – RM – C
C AC ← AC + RM
C AC ← AC – RM
C PC ← RM ( adr )
C R ← PC
C R ← CF
C PC ← R
C CF ← R
C AC ←
C ROTD AC
C ROTS AC
C DD AC
C DS AC
C RM ← AC
C AC ← RM
4. Codificarea instructiunilor.
Codificarea instructiunilor se face în cod binar. Coniderand formatul realizat din adresa in M.C. / conditie de salt / adresa de salt / semnale de comanda avem tabelul din fig de mai jos. Campurile adresa memoriei si adresa de salt contin 7 biti iar campul conditie de salt e codificat pe 3 biti :
000 – se executa salt neconditionat ;
001 – se executa salt conditionat de AC=0 ;
010 – se executa salt conditionat de fanionul de zero Z; Z=1
011 – se executa salt conditionat de fanionul de transport C; C=1
100 – nu exista salt ;
In continuare este scris programul in pseudocod dupa care am intocmit tabelul memoriei de comanda.
FETCH : RAV ← PC C
MS ← TABS(RAV(S)) C
RA ← MS(B) + RAV(C) C
RM ← MP(RA) C
RAC ← RM(OP) C
PC ← PC + 1 C
PUSH R : RS ← RS – 1 C
RA ← RS C
RM ← R C
MP(RA) ← RM C
Goto FETCH
POP R : RA ← RS C
RM ← MP(RA) C
R ← RM C
RS ← RS + 1 C
Goto FETCH
CMP RM: AC ← AC – RM C
If AC=0 goto Test
Goto FETCH
Test: z ← 1
Goto FETCH
AND RM : AC ← AC AND RM C
Goto FETCH
OR RM : AC ← AC OR RM C
Goto FETCH
XRA : AC ← AC XOR RM C
Goto FETCH
CPR data: RA ← RM ( data ) C
RM ← MP(RA) C
Goto CMP RM
DCR AC : AC ← AC – 1 C
Goto FETCH
INC AC : AC ← AC + 1 C
Goto FETCH
ADC AC : AC ← AC + RM + C C
Goto FETCH
SBC AC : AC ← AC – RM – C C
Goto FETCH
ADD AC : AC ← AC + RM C
Goto FETCH
SBB AC : AC ← AC – RM C
Goto FETCH
SBI data : RA ← RM ( data ) C
RM ← MP ( RA ) C
Goto SBC AC
SWIT data : RA ← RM ( data ) C
RM ← MP ( RA ) C
Goto SBB AC
ACI data : RA ← RM ( data ) C
RM ← MP ( RA ) C
Goto ADC AC
ADI data: RA ← RM ( data ) C
RM ← MP ( RA ) C
Goto ADD AC
JMP adr : PC ← RM ( adr ) C
Goto FETCH
JMPZ adr : If (z=1) Goto JMP adr
Goto FETCH
JMPC adr : If (C==1) Goto JMP adr
Goto FETCH
CALL adr : R ← PC C
R ← CF C
PUSH R CCCC
PC ← RM ( adr ) C
Goto FETCH
RET : RA ← RS C
RM ← MP(RA) C
R ← RM C
PC ← R C
RS ← RS + 1 C
Goto FETCH
RC : If (C==1) Goto RET adr
Goto FETCH
RZ : If (Z==1) Goto RET adr
Goto FETCH
HALT : Goto HALT
NOT AC : AC ← C
Goto FETCH
ROTD AC : ROTD AC C
Goto FETCH
ROTS AC : ROTS AC C
Goto FETCH
ROTDC AC : If (C==1) Goto ROTD AC
Goto FETCH
ROTSC AC : If (C==1) Goto ROTS AC
Goto FETCH
DD AC : DD AC C
Goto FETCH
DS AC : DS AC C
Goto FETCH
DDC AC : If (C==1) Goto DD AC
Goto FETCH
DSC AC : If (C==1) Goto DS AC
Goto FETCH
STORE AC : RA ← RM ( adr ) C
RM ← AC C
MP(RA) ← RM C
Goto FETCH
LOAD AC : RA ← RM ( adr ) C
RM ← MP(RA) C
AC ← RM C
Goto FETCH
5.Codificarea dupa functie :
Deoarece instructiunile sunt foarte multe , le-am impartit in functie de cele mai importante operatii astfel :
Coloana P.C. este codificata pe 3 biti si contine semnalele :
000 – nu exista operatie
001 – C
010 – C
011 – C
100 – C
101 – C
110 – C
111 – C
Coloana R.M. este codificata pe 3 biti si contine semnalele :
000 – nu exista operatie
001 – C
010 – C
011 – C
100 – C
101 – C
110 – C
111 – C
Coloana A.C. este codificata pe 4 biti si contine semnalele :
0000 – nu exista operatie
0001 – C
0010 – C
0011 – C
0100 – C
0101 – C
0110 – C
0111 – C
1000 – C
1001 – C
1010 – C
1011 – C
1100 – C
1101 – C
1110 – C
1111 – C
Coloana R. este codificata pe 3 biti si contine semnalele :
000 – nu exista operatie
001 – C
010 – C
011 – C
100 – C
101 – C
In tabelul urmator este prezentata codificarea dupa functie :
6. Bibliografie .
Daniela E. Popescu – Arhitectura si organizarea sistemelor conventionale de calcul ( curs ) edit. Universitatii din Oradea 2003
D. Popescu , C. Popescu – Arhitectura sistemelor de calcul ( indrumator de laborator ) edit. Universitatii din Oradea 2003
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Arhitectura Sistemelor de Calcul (ID: 149300)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
