You are on page 1of 25

1/11/2020

Leksion 8: Ndërtimi i ALU-së.


Ndërtimi i proçesorit (Njësia e
Kontrollit).

Përgatiti: Dr. Ina Papadhopulli

Proçesori
• Proçesori përmban:
Datapath
▪ ALU
▪ Regjistrat
Control unit

1
1/11/2020

Hapat për ekzekutimin e Instruksioneve

1. Lexo instruksionin tek adresa


Fetch i Instruksionit
[PC], PC = PC + 4
2. Dekodimi i Instruksionit,
Dekodimi i instruksionit,
Leximi i Regjistrave Leximi i Regjistrave
3. Veprime me ALU, llogaritja e
Veprimet e ALU-së,
Adresat e Kercimit adresave të Branch
Veprime me Memorjen e
4. LOAD/STORE në memorjen
të Dhënave e të dhënave
Shkrimi në Regjistra 5. Shkrimi në regjistra

Ndërtimi i ALU-së

2
1/11/2020

ALU
• Përmban portat AND, OR, Invertues edhe
Multiplexera
• Nevojitet një ALU me 32 bit
• Supozojmë se ndërtohet nga 32 ALU me 1
bit

Veprimet AND dhe OR (ALU 1 bit)

3
1/11/2020

Veprimi i Mbledhjes

Veprimet AND, OR, Mbledhje (ALU 1 bit)

4
1/11/2020

Veprimet AND, OR,


Mbledhje (ALU 32
bit)

Veprimi i Zbritjes (ALU 1 bit)


a – b = a + (-b)
• (-b e paraqitur me komplement te 2-it): invertojmë të gjithë
bitet e b-së dhe pastaj shtojme 1 (d.m.th. Mund të përdoret
mbledhësi, një invertues dhe CarryIn të vendoset në 1)
• Nëse do kishim ALU 32 bit vetëm CarryIn i LSB duhet të
vendosej në 1

10

10

5
1/11/2020

Veprimi NOR (ALU 1 bit)

• Pse nuk duhet te


shtojme nje hyrje
tjeter te MUX per
veprimin NOR?

11

11

Veprimi slt
• Nëse rs < tr output-i duhet të jetë 1
• Të gjitha bitet duhet të vendosen në 0, përveç bit-it
LSB
• Duhet MUX
4 me 1

12

12

6
1/11/2020

Veprimi slt
• Duhet që input-i Less të vendoset në 0 për 31 bitet e
sipërme.
• Po për bit-in LSB?

• Rezultati i dëshiruar është bit-i MSB pas zbritjes!


• D.m.th. Output-i i mbledhësit tek ALU e bit-it MSB,
duhet të jetë dalja e ALU-së për bitin LSB për
veprimin slt!
• Si zgjidhet? 13

13

Veprimi slt (ALU vetëm për bit-in MSB)

Output-i
për
veprimin slt Vetëm për
bit-in MSB

14

14

7
1/11/2020

ALU me 32 bit

15

15

Sinjalet e Kontrollit
• Sa herë ka zbritje sinjalet CarryIn dhe Binvert
vendosen në 1.
• Për veprimet add dhe veprimet logjike këto
sinjale vendosen në 0
• Prandaj këto dy sinjale mund të kombinohen
në një sinjal Bnegate

16

16

8
1/11/2020

Veprimi për Branch (Krahasimi i


Barazisë)

• Kryhet OR për gjithë output-et e zbritjeve


dhe pastaj invertohet rezultati:

17

17

ALU e
plotë me
32 bit

18

18

9
1/11/2020

Njësia e Kontrollit të ALU-së

19

19

Kontrolli i ALU-së
• Sinjalet Ainvert, Bnegate dhe dy sinjalet e përzgjedhjes
së MUX përbëjnë katër sinjalet e kontrollit të ALU-së.
Kontrolli i Funksioni
ALU-së Simboli i
0000 AND ALU-së:
0001 OR
0010 add
0110 subtract
0111 slt
1100 NOR

20

20

10
1/11/2020

Kontrolli i ALU-së
• 4 bitet e kontrollit mund të gjenerohen nga një
njësi e vogël kontrolli që ka si input-e fushën funct
të instruksionit edhe 2 bite të tjera kontrolli
(ALUOp)
• ALUOp:
– 00 për Load dhe Store
– 01 për beq
– 10 veprimi do të përcaktohet nga fusha funct
• Përdoren disa nivele dekodimi (njësia e kontrollit
kryesore dhe njësia e kontrollit të ALU-së) sepse
ulet madhësia e CU-së dhe rritet shpejtësia e saj 21
21

Dekodimi me dy nivele
Hapi 1.
Gjenero sinjalin ALUop me dy bit
nga fusha e Opcode me 6 bit.
opcode

Control

6
31:26

Hapi 2.
Gjenero sinjalin
25:21

ALUControl me 4 bit
rs

nga 2 bitet e ALUop dhe


ALUop
20:16

2 sipas rastit nga 6 bitet e


rt

00: lw, sw Funct.


01: beq ALU
15:11

10: add, sub,


rd

and, or, slt 4


ALUcontrol
shamt
10:6

0000: and
ALU 0001: or
funct

6
5:0

0010: add
Control 0110: sub
0111: set on less than
0110: beq
22

22

11
1/11/2020

Input-et/Output-et e njësisë së kontrollit


të ALU-së
Instruction
ALUop
Type
Instruction Funct ALU ALU
Opcode ALUop lw / sw 00
Operation field action control
beq 01
lw 00 load word xxxxxx add 0010
sw 00 store word xxxxxx add 0010 R-type 10

beq 01 branch equal xxxxxx subtract 0110


R-type 10 add 10 0000 add 0010
ALUcontrol Function
R-type 10 subtract 10 0010 subtract 0110
0000 AND
R-type 10 AND 10 0100 AND 0000 0001 OR
R-type 10 OR 10 0101 OR 0001 0010 add
set on less set on 0110 subtract
R-type 10 10 1010 0111
than less than
0111 slt
1100 NOR


Inpute
25

23

Minimizimi i funksioneve me “don’t care”


A Y Z A Y Z A Y Z
0 0 1 0 0 1 0 x 1
0 1 1 0 1 1
1 0 0
1 0
Z = A'
1

T A Y Z T A Y Z T A Y Z

0 0 0 1 0 0 0 1 0 X 0 1
0 0 1 0 0 1 0 1 1 0 X 1
0 1 0 1 1 0 0 1
0 1 1 0 1 0 1 1
1 0 0 1 Z = T' Y' + TA'
1 0 1 1
1 1 0 0
1 1 1 0 25

24

12
1/11/2020

Tabela e vërtetësisë për 4 bit-et e kontrollit të


ALU-së
• Input: 6-bit Funct field dhe 2-bit ALUop ALUcontrol3 = 0

• Output: 4-bit ALUcontrol ALUcontrol2 = ?


ALUop0 + ALUop1 F1
• Gjetja e funksioneve të thjeshtuara:
Funct Field
ALUop ALU
( F[5:0] == Inst[5:0] )
control
MSB LSB F5 F4 F3 F2 F1 F0

lw 0 0 X X X X X X 0010
sw 0 0 X X X X X X 0010
beq 0X 1 X X X X X X 0110
add 1 0X 1X 0X 0 0 0 0 0010
sub 1 0X 1X 0X 0 0 1 0 0110
and 1 0X 1X 0X 0 1 0 0 0000
or 1 0X 1X 0X 0 1 0 1 0001
slt 1 0X 1X 0X 1 0 1 0 0111

26

25

Skema logjike e bllokut të


kontrollit të ALU-së
ALUop
ALUcontrol2
2 Njësia e kontrollit të ALU-së = ALUOp0 + ALUOp1∙F1

ALUOp0 (LSB)
ALUcontrol3
ALUOp1 0
(MSB)
ALUcontrol2
F3
ALUcontrol
F2 ALUcontrol1
F(5-0)
F1
ALUcontrol0
F0
26

26

13
1/11/2020

Formati i Instruksioneve (kujtesë)


opcode shamt funct
31 25 20 15 10 5 0
add 016 rs rt rd 0 2016

sub 016 rs rt rd 0 2216

and 016 rs rt rd 0 2416 R-type

or 016 rs rt rd 0 2516

slt 016 rs rt rd 0 2A16

31 25 20 15 0
lw 2316 rs rd offset

sw 2B16 rs rt offset I-type

beq 416 rs rt offset

27

27

Njësia e Kontrollit

28

28

14
1/11/2020

Çfarë vihet re nga formati i


instruksioneve?
• Opcode është gjithmonë në bitet 31:26
• Regjistrat për lexim janë tek bitet 25:21 dhe 20:16
• Regjistri bazë për load dhe store është tek bitet
25:21
• Offset- me 16 bit për beq, load dhe store është tek
bitet 15:0
• Regjistri destinacion është tek bitet 20:16 për load
dhe tek bitet 15:11 për tipin e instruksioneve R
29

29

Datapath-i me linjat e kontrollit

30

30

15
1/11/2020

Efektet e sinjaleve të kontrollit

31

31

Njësia Kryesore e Kontrollit


• Nëntë sinjalet e kontrollit (shtatë + 2 ALUOp)
gjenerohen nga CU në bazë të opcode.
• Si duhet të jenë sinjalet për secilin opcode?

MemTo Reg Mem Mem ALUop


RegDst ALUSrc Branch
Reg Write Read Write op1 op0
R-type 1 0 0 1 0 0 0 1 0
lw 0 1 1 1 1 0 0 0 0
sw X 1 X 0 0 1 0 0 0
beq X 0 X 0 0 0 1 0 1

32

32

16
1/11/2020

Datapath-i me njësinë dhe linjat e kontrollit

33

33

Datapath gjatë ekzekutimit të Instruksioneve R

34

34

17
1/11/2020

Datapath gjatë ekzekutimit të Instruksioneve Load

35

35

Datapath gjatë ekzekutimit të Instruksioneve BEQ

36

36

18
1/11/2020

Tabela e vërtetësisë për njësinë e


kontrollit

37

37

Implementimi i Njësisë së Kontrollit

38

38

19
1/11/2020

Implementimi i instruksionit Jump

39

39

Formati R – Faza 1

Njësitë aktive: Blu


Linjat që kanë të 40
dhëna: Kuqe
40

20
1/11/2020

Formati R – Faza 2

Njësitë aktive: Blu


Njësitë e përdorura në
fazat e mëparshme: 41
Bojëqielli
41

Formati R – Faza 3

Njësitë aktive: Blu


Njësitë e përdorura në
fazat e mëparshme: 42
Bojëqielli
42

21
1/11/2020

Formati R – Faza 4

Regjistrat shkruhen në
43
next clock edge

43

Instruksioni LW – Faza 1

Njësitë aktive: Blu 44

44

22
1/11/2020

Instruksioni LW – Faza 2

Njësitë aktive: Blu


Njësitë e përdorura në
fazat e mëparshme: 45
Bojëqielli
45

Instruksioni LW – Faza 3

Njësitë aktive: Blu


Njësitë e përdorura në
fazat e mëparshme: 46
Bojëqielli
46

23
1/11/2020

Instruksioni LW – Faza 4

Njësitë aktive: Blu


Njësitë e përdorura në
fazat e mëparshme: 47
Bojëqielli
47

Instruksioni LW – Faza 5

Regjistrat shkruhen në
next clock edge 48

48

24
1/11/2020

Referenca
• Libri:
Computer Organization and Design. The
Hardware/Software Interface, 4th Edition
Kapitulli 4 (faqe 316-329)
Shtojca C (faqe C26-C27)
Shtojca D (opsionale)

49

49

FALEMINDERIT!

50

50

25

You might also like