Documente Academic
Documente Profesional
Documente Cultură
ŢIUNI INTRODUCTIVE
Periferic 1
UC UM U I/E Periferic 2
Periferic n
Magistrală (BUS)
ă
Nivelul 5 Limbaj de asamblare
Interpretare
Nivelul 3 Arhitectura setului de instrucţiuni
Microprogram executat
Nivelul 2 Microarhitectură direct de hard
Translatare Interpretare
An Nume Eveniment
1642 Blaise Pascal Prima maşină de calculat mecanică
1834 Charles Babbage Maşina analitică
1904 J.A.Flemming Inventarea diodei
1906 Lee de Forest Inventarea triodei
1936 Konrad Zuse Primul calculator cu relee-Berlin
1943 Guvernul englez COLOSSUS,primul calculator cu tuburi
1944 H.Aiken Primul calculator………….Mark 1
14 Sorin Adrian Ciureanu
1946 J.Mauchley şi J.P. Eckert ENIAC Pensilvania University
1948 Bardeen, Brattains şi Sockley Inventarea tranzistorului
1948 Norbert Wiener Cibernetica
1949 M.Wilkes EDSAC primul calculator cu program
înregistrat
1951 MIT WHIRLWIND primul calculator în timp real
1951 J.Mauchley şi J.P. Eckert UNIVAC primul calculator comercializat
1952 John von Neumann IAS Princetown
1955 Laboratoarele Lincoln TX-0 primul calculator cu tranzistoare
1955- IBM IBM 704
1960
!960/61 DEC PDP 1
1962 IBM IBM 7094 (32 biţi)
1963 BORROGHS Limbajul ALGOL
1964 IBM IBM 360
1964 CDC CDC 6600 primul calculator paralel
1965 DEC PDP-8
1970 DEC PDP-11
1970/71 INTEL 4004 primul microprocesor pe 4 biţi
1972 INTEL 8008 primul microprocesor pe 8biţi
1974 CRAY CRAY 1 primul supercalculator
1978 INTEL 8080 UC pe un cip
1978 DEC VACS primul minicalculator pe 32 biţi
1979 MOTOROLA 68000
1980 IBM Primul PC
1982 INTEL 286
1983 SUA Reţeaua LAN
1984 MOTOROLA 68020 primul microprocesor pe 32 biţi
1985 INTEL 386
1987 MOTOROLA 68030
1989 INTEL 486
1992 Lab CERN GENEVA WWW(World Wide Web)
1993 INTEL PENTIUM
1995 SUNMYCROSYSTEMS JAVA
1996 CYRYX 686
1997 AMD RISC K5,K6
1998 AMD K6
1999 INTEL PENTIUM III
1999 AMD ATHALON/47
2000 AMD SHARPTOOTH/K6-3
1.3.2.1. Microprogramarea
Memoria cache a fost o idee simplă dar foarte eficientă care a mărit
de zece ori viteza de calcul a unui sistem.
16 Sorin Adrian Ciureanu
1.4. TIPURI DE ARHITECTURI ALE
CALCULATOARELOR NUMERICE
Unitate de Memorie
control
Unitate
Dispozitiv logică Dispozitiv
de intrare şi de ieşire
aritmetică
Procesor
C S
SR
UC UP MM
C C C
FD1
UP1 MM!
FD2
UP2 MM2
FI
UC
FDn
UPn MMn
IM CU
(orizontal)
PU
DM
IM
CU
PU DM
(vertical)
IM
CU PU (orizontal)
PU DM
(vertical)
CU
PU PU PU
DM DM DM
PU + DM
Capitolul 2
UNITATEA CENTRALĂ
Set
de
registre
Registru Registru
acumulator tampon
Σ Sumator
S1 S2 S3 S4 S5
30 Sorin Adrian Ciureanu
(a)
S1 1 2 3 4 5 6 7 8 9 10 11
S2 1 2 3 4 5 6 7 8 9 10
S3 1 2 3 4 5 6 7 8 9
S4 1 2 3 4 5 6 7 8
S5 1 2 3 4 5 6 7
Timpi de t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11
execuţie a
segmentelo
r
(b)
Fig.2.2. Schema unei benzi de asamblare cu 5 segmente; (a) schema de
funcţionare; (b)diagrama temporară a execuţiei segmentelor.
S2 S3 S4 S5
S1
S2 S3 S4 S5
UAL
S1 S2 S3 lLOAD S5
STORE
VIRGULĂ
FLOTANTĂ
a) Adresare imediată
OPERAND Instrucţiune
Câmp operand
MOV R 20000
Se transferă valoarea 20000 în registrul R.
b) Adresare directă
OPERAND
MOV R 100
100 20000
În câmpul de adresă al instrucţiunii se află o adresă (100) la care
există operandul.
Arhitectura calculatoarelor 33
c) Adresare indirectă
MOV R 100
100 200
200 20000
La adresa 100 din câmpul instrucţiunii se află altă adresă, 200, iar la
această adresă se află operandul.
c) Adresare indexată
Bus local în UC
INDEX
Bus memorie
ADRMEM
U
M M
E
RI M
PC
A T
RG
RG 1
RG 2
Σ
SUMATO
R RG 16
IC
Z
-registrul M, care are rolul de a reţine datele scrise sau citite din
unitatea de memorie (32 biţi);
-registrul RI, care are rolul de a stoca instrucţiunea pe toată durata
execuţiei sale;
-registrul PC, care are rolul de a reţine adresa următoarei instrucţiuni
din program;
-registrul ADRMEM, care adresează memoria, atât la scriere cât şi la
citire;
ADRMEM ADRMEM
M UM M UM
citire scriere
Arhitectura calculatoarelor 35
de asemenea, prin ADRMEM se adresează şi cele 16 registre generale (RG),
dar pe bus-ul local nu pe cel al memoriei; adresele de registre generale sunt
primele 16 adrese de memorie, adrese rezervate exclusiv pentru RG,
neputând fi utilizate ca adrese de memorie;
-!6 registre generale (RG) adresate pe bus-ul local al UC-ului;
-registrul INDEX , care participă la calculul adresei în mod indexat;
-4 indicatori de condiţie (ZC) cu următoarele semnificaţii:
Z arată două situaţii
Compararea între registrele A şi T
Z=1 → A=T
Z=0 → A≠T
Conţinutul acumulatorului este zero (Z=1)
S S=1 rezultat negativ (în A)
D D=1 depăşire
C C=1 transport
-BUS-ul local, un bus foarte rapid în interiorul UC-ului;
-BUS-ul de memurie, un bus mai lent care face legătura UC↔UM;
Convenţional, o adresă este o adresă de octet. Un cuvânt este pe 32
biţi, deci pe 4 octeţi.
Adresele din PC vor evolua cu 4, următoarea adresă de instrucţiune
fiind PC+4.
Adresele celor 16 registre generale sunt:
RG 1 0 RG 5 10 RG 9 20 RG 13 30
RG 2 4 RG 6 14 RG 10 24 RG 14 34
RG 3 8 RG 7 18 RG 11 28 RG 15 38
RG 4 C RG 8 1C RG 12 2C RG 16 3C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
M → RI
PC → PC + 4
În continuare, să vedem care sunt comenzile pentru diferite
instrucţiuni care lucrează în diferite tipuri de adrese.
1)
Arhitectura calculatoarelor 37
COD 0001
MNEMONIC ADD
MS 00 - imediat
SURSA 02A
MD 00 - imediat
DESTINAŢIA - 05B
Adresa instrucţiunii 100
Instrucţiunea este
000A805B
Comenzi:
ifetch: PC → ADRMEM 100
ADRMEM
M ← UMEM 000A805B
CITIRE
M → RI 000A805B
PC → PC + 4 104
2)
COD 0001
MNEMONIC MOV R5 ABCDEF01
MS 01 - direct
SURSA RG5 10
MD 01 - direct
DESTINAŢIA - RG16 3C
Adresa instrucţiunii 200
Instrucţiunea este 0404103C
Comenzi:
ifetch: PC → ADRMEM 200
ADRMEM
M ← UMEM 0404103C
M → RI 0404103C
PC → PC + 4 204
RI7-18 → ADRMEM 10
ADRMEM
38 Sorin Adrian Ciureanu
M ← RG5 ABCDEF01
RI21-32 → ADRMEM 3C
ADRMEM
M ← RG16 ABCDEF01
3)
COD 0010
MNEMONIC CMP
MS 10 - indirect
SURSA 800 800 F00
MD 10 - indirect 900 E00
DESTINAŢIA - 900 F00 ABCDEF01
Adresa instrucţiunii 200 E00 ABCDEF01
Instrucţiunea este 1A002900
Comenzi:
ifetch: PC → ADRMEM 200
ADRMEM
M ← UMEM 1A002900
M → RI 1A002900
PC → PC + 4 204
UE are componentele:
-Unitatea aritmetică-logică (UAL), în engleză Arithmetic-Logic
Unity (ALU), care execută operaţii aritmetice şi logice, deplasări şi rotaţii.
-Registrele temporare (RT), care preiau operanzii de pe bus-ul intern
şi îi oferă unităţii UAL. Împreună cu UAL formează un automat.
-Registrul de flaguri, F, care conţine indicatorii de stare ALU ai
ultimei operaţii; registrul este actualizat de către ALU.
-Blocul de comandă, care decodifică codul instrucţiunii curente,
preluată din coada de aşteptare Q, execută operaţia şi elaborează comenzi
externe pentru UI.
40 Sorin Adrian Ciureanu
UE este complet separată de exterior, toate sarcinile privind
transferul cu exteriorul revenind UI-ului.
20biţi
16 biţi
8biţi 8biţi
Ax
AH AL
Σ
Bx Registre de offset
BH BL
date
Cx CH CL CS
Dx DH DL DS
DI ES
SJ Registre de SS
adrese
BP IP
SP
Decodificare
operaţie
ALU Comandă Coadă de aşteptare
Instrucţiuni (Q)
F
Registru
flaguri
UE UI
b)Structura UI
a)Registre de date
b)Registre de adresare
2.5.2.3. Registrele IP şi F
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 OFFSET
COD
OPERAŢIE D W MOD REG R/M
registru
r/m (w=0) (w=1)
cuvânt octet
000 Ax AL
001 Cx CL
010 Dx DL
011 Bx BL
100 SP AH
101 BP CH
110 SI DH
111 DI BH
deplasament
MEMORIE
AE
+ AF
OPERAND
AS
BX AE Memorie
BP
SI AF OPERAND
+
DI
AS
2.5.5.3.Adresare indexată
SI
AE
DI +
Memorie
AF OPERAND
+
AS
Arhitectura calculatoarelor 49
Fig. 2.9. Adresare indexată
Adresa se obţine din suma registrului index şi deplasamentul din
instrucţiune.
Acest mod de indexare este utilizat, în cele mai multe cazuri, pentru
referirea elementelor unui vector. Deplasamentul marchează începutul
vectorului iar registrul index selectează elementul prin poziţia sa relativă în
cadrul vectorului. Deoarece toate elementele vectorului sunt de aceeaşi
lungime, prin operaţii aritmetice elementare asupra registrului index se va
selecta orice element. De aceea se poate specifica un factor de scală
(1,2,3,4) pentru index, pentru a referi vectori cu componente de lungime
fixă de 1,2,3,4 octeţi.
Memorie
V[5 ]
Deplasament V[4 ]
V[3 ]
V[2 ]
+
V[1 ]
V[0 ]
Registru index
2.5.5.4.Adresare imediată
OPERAND
AE
50 Sorin Adrian Ciureanu
Fig. 2.11. Adresare imediată.
COD OP SI AE sursă
DI AE destinaţie
Unitate
Procesor virgulă de
fixă Unitate interfaţă cu
cache magistrala
Procesor virgulă
mobilă
REZERVOR
DE
INSTRUCŢIUNI
L1 I CACHE NEXT IP
Bloc de memorie a
adresei de salt
DECODIFICARE
DE Secvenţîator de
microinstrucţiuni
INSTRUCŢIUNI
Alocator de registre
alias
Staţie de
rezervare
UEI UEF UE-
Port 0 MMX
Port 2 UGA
i Citire operanzi
UGA
Port 3, 4 Scriere operanzi
D Cache
Staţie de
UIM (unitate de interfaţă cu
rezervare
memoria)
Rezervor de
instrucţiuni
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
OP S DEST SOURCE 1 I SOURCE 2
CODE C M
C M
60 Sorin Adrian Ciureanu
Fig.2.18. Formatul instrucţiunii Berkley RISC 1.
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
Un IF RD ALU MEM WB
ciclu
maşi
nă
mux 2:1
1 / S1 32
/ S2 SET /
5 REG 32 ALU
D
PC . D IN
S1+S2 adr
mux 2:1
/ M
19 Ext. / E
S2 semn 32 M
/ mux D
13 2:1 D
Adr
MEM in
I 5 DEST
CLK
Data in reg.
a) Hazardul RAW
Apare atunci când instrucţiunea 2 încearcă să citească o sursă înainte
ca instrucţiunea 1 să o scrie în sursă. Este foarte frecvent în actualele
procesoare pipeline. De exemplu:
Dată disponibilă
!F RD ALU MEM WB 1 R1
x
R2
x
R3
x Rn
I1 LOAD R1 memorie
R1
!F RD ALU MEM WB 0 R2
x R3
x
I2 ADD R1 + R2 → R1
Restartare procesare
!F RD ALU MEM WB
66 Sorin Adrian Ciureanu
ADD pt. R1
R2
R3
SUB pt. R4
READ WRITE
REGISTRU 2 REGISTRU
READ DATA IN
REGISTRU 1
MUX 2:1 R5
A B
ALU DIF
R SUM
TAMPOANE ALU
R2 + R3
I1 SUB R2 R1 R3
I2 AND R2 R2 R5
I3 ADD R6 R2 R4
În acest exemplu apar necesare două „pasări” anticipate de valori, de
la I1 la I3 (R3) pe intrarea A de la ALU şi respectiv de la I 2 la I3 (R2) pe
aceeaşi intrare A de la ALU. Trebuie acordată prioritate nivelului pipeline
mai apropiat de ALU, informaţiei produsă de ieşirile ALU şi nu celei situate
în nivelul următor (aici MEM). Se preia pe intrarea A a unităţii ALU
rezultatul produs de I2 şi nu cel produs de I1 . Rezultă deci că şi astfel de
potenţiale situaţii conflictuale trebuie implementate în logica de control a
mecanismelor forwarding.
b) Hazardul WAR
Apare atunci când o instrucţiune scrie o destinaţie înainte ca aceasta
să fie citită pe post de sursă de către o instrucţiune anterioară. Poate avea loc
dacă într-o structură pipeline există o fază de citire posterioară unei faze de
scriere. De exemplu, modurile de adresare indirectă cu predecrementare pot
introduce acest hazard şi de aceea nici nu sunt implementate în
calculatoarele RISC.
Aceste hazarduri de tip WAR mai pot apărea şi datorită execuţiei
instrucţiunilor în afara ordinii lor normale din program, în aşa numita
execuţie Out of Order. Această procesare este impusă de necesitatea
creşterii performanţei şi se poate realiza atât prin mijloace hardware cât şi
software.
c)Hazardul WAW
68 Sorin Adrian Ciureanu
Apare atunci când o instrucţiune scrie un operand înainte ca acesta să
fie scris de o instrucţiune anterioară, scrierile fiind făcute într-o ordine
eronată.
Hazardul WAW poate apărea în structurile care au mai multe niveluri
de scriere sau care permit unei instrucţiuni să fie procesată chiar dacă o
instrucţiune anterioară este blocată. Modul de adresare indirect cu
postincrementare poate introduce acest hazard, fapt pentru care acest mod
de adresare nu este implementat în maşina RISC. De asemenea, hazardul
WAW poate apărea în cazul execuţiei Aut of Order a instrucţiunilor cu
aceeaşi destinaţie.
Hazardurile WAW, ca şi cele WAR de altfel, nu reprezintă hazarduri
reale, ci mai degrabă conflicte de nume. Ele pot fi eliminate de către
compilator (scheduler) prin redenumirea resurselor utilizate de program. De
aceea se mai numesc autodependente, cele WAW, şi dependente de ieşire
cele WAR.
Exemple:
I1 MULF Ri Rj Rk Rj * Rk → Rj
I2 ADD Rj Rp Rm Rp+Rm → Rj
MULF Ri Rj Rk
ADD Rx Rp Rm
MOV Rj Rx
I0 ADD R3 R1 R2
I1 LD R9 A(R7)
I2 ADD R4 R3 R2
Arhitectura calculatoarelor 69
I3 ADD R5 R4 R6
I4 LD R4 A(R6)
I5 LD R2 A(R4)
I I I
0 1 4
R3 R4
R4
I I
R4
2 5
I
3
I0 ADD R3 R1 R2
I1 LD R9 A(R7)
I4 LD R4 A(R6)
I2 ADD R4 R3 R2
I3 ADD R5 R4 R6
I0 I1 I4 I2 I3 I5
I1 IF RD ALU MEM WB
I2
IF RD ALU MEM WB
k [ (n-k) instr.
I instr. adiţionale
ADR 1
ADR 2
(n-k) instr.
„originale”
ADR M
ADR M=ADR+
1+2(n-k)
C N
START:
C (C-1)
NU DA
C=
0
DA
NU
Prezice DA
00 Prezice DA
01
DA
DA NU
Prezice NU NU Prezice NU NU
11 10
DA