Professional Documents
Culture Documents
ŢIUNI INTRODUCTIVE
Periferic 1
Periferic 2
UC UM U I/E
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
control Memorie
Unitate
Dispozitiv logică Dispozitiv
de intrare şi de ieşire
aritmetică
Procesor
C S
SR
UC UP MM
FD1
UP1 MM!
FD2
UP2 MM2
FI
UC
FDn
UPn MMn
IM CU
(orizontal)
PU
DM
IM
CU
PU DM
(vertical)
IM
(orizontal)
CU PU
PU DM
(vertical)
CU
PU PU PU
DM DM DM
PU + DM
Capitolul 2
UNITATEA CENTRALĂ
Set
de
registre
Registru Registru
acumulator tampon
Σ Sumator
(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
Arhitectura calculatoarelor 33
În câmpul de adresă al instrucţiunii se află o adresă (100) la care
există operandul.
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
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
Arhitectura calculatoarelor 35
M UM M UM
citire scriere
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
Arhitectura calculatoarelor 37
În continuare, să vedem care sunt comenzile pentru diferite
instrucţiuni care lucrează în diferite tipuri de adrese.
1)
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
38 Sorin Adrian Ciureanu
PC → PC + 4 204
RI7-18 → ADRMEM 10
ADRMEM
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.
40 Sorin Adrian Ciureanu
-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.
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
Arhitectura calculatoarelor 41
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
Arhitectura calculatoarelor 47
MOD = 00, câmpul deplasament nu este prezent
MOD = 01, câmpul deplasament are 8 biţi (low)
MOD = 10, câmpul deplasament are 16 biţi.
R/M conţine:
-adresa unui registru (pentru MOD=11)
-o codificare utilizată pentru calculul adresei efective.
R/M Adresa efectivă
000 BX + SI + deplasament
001 BX + DI + deplasament
010 BP + SI + deplasament
011 BP + DI + deplasament
100 SI + deplasament
101 DI + deplasament
110 BP + deplasament
111 BP + deplasament
Unitatea de execuţie (UE) are acces la operanziiimediaţi şi de
registre; când este nevoie de un operand de memorie, se transmite la UI
deplasamentul acestuia şi registrul de segment IC determină adresa fizică a
operandului în funcţie de modul de adresare.
deplasament
MEMORIE
AE
+ AF
OPERAND
AS
48 Sorin Adrian Ciureanu
BX AE Memorie
BP
SI AF OPERAND
+
DI
AS
SI
AE
DI +
Memorie
AF OPERAND
+
AS
Arhitectura calculatoarelor 49
V[5 ]
Deplasament V[4 ]
V[3 ]
V[2 ]
+
V[1 ]
V[0 ]
Registru index
OPERAND
AE
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
Secvenţîator de
microinstrucţiuni
DECODIFICARE
DE
Alocator de registre
alias
INSTRUCŢIUNI
Arhitectura calculatoarelor 55
Staţie de
rezervare UE-
UEI UEF
MMX
Port 0
UE-
UEI UES
Rezervor MMX
i Port 1
de
instrucţiuni
D Cache
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
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
Un
ciclu
maşi
nă
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
Arhitectura calculatoarelor 63
Adr. Reg, DEST.
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
I2 ADD R1 + R2 → R1 x
Rn
x
Restartare procesare
R3
SUB pt. R4
!F RD ALU MEM WB
READ WRITE
REGISTRU 2 REGISTRU
READ DATA IN
REGISTRU 1
MUX 2:1 R5
A B
ALU DIF
R SUM
TAMPOANE ALU
R2 + R3
Arhitectura calculatoarelor 67
I1 SUB R2 R1 R3
I2 AND R2 R2 R5
I3 ADD R6 R2 R4
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
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
R
2 4 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 ADD R3 R1 R2
I1 LD R9 A(R7)
I2 ADD R4 R3 R2
I3 ADD R5 R4 R6
I4 LD R4 A(R6)
NOP
I5 LD R2 A(R4)
Hazardul WAR între I3 şi I4 ar putea fi eliminat prin redenumirea
registrului R4 în instrucţiunea I4 . deoarece hazardurile WAR şi WAW nu
reprezintă conflicte reale ci doar conflicte de nume. Considerând un
procesor cu mai multe registre fizice decât logice, precedenţele impuse de
aceste hazarduri pot fi eliminate uşor prin redenumirea registrelor logici cu
cei fizici (Register Reaming). Principiul constă în existenţa unei liste a
registrelor active, adică folosite momentan, şi o altă listă cu registrele libere.
Fiecare schimbare a conţinutului unui registru logic prin program se va
face asupra unui registru fizic disponibil în lista registrelor libere registru
care va fi trecut în lista registrelor active. In acest caz secvenţa se va rescrie
astfel:
I0 ADD R3a R1a R2a
I1 LD R9a A(R7a)
I2 ADD R4a R3a R2a
I3 ADD R5a R4a R6a
I4 LD R4b A(R6a)
I5 LD R2b A(R4b)
I0 I1 I4 I2 I3 I5
IF RD ALU MEM WB
I1
I2 IF RD ALU MEM WB
k[ I instr.
(n-k) instr.
adiţionale
ADR 1
ADR
(n-k) instr. k[ I instr.
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
74 Sorin Adrian Ciureanu
DA
NU
Prezice DA
00 Prezice DA
01
DA
DA NU
Prezice NU NU Prezice NU NU
11 10
DA