Upload
solada
View
29
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Structura de principiu pentru execuţie multiciclu. Structura multiciclu adaptat ă MIPS. Semnificaţia comenzilor pe un bit. Semnificaţia comenzilor pe doi biţi. Principii ȋn analiza funcțion ă rii. - PowerPoint PPT Presentation
Citation preview
1
PC
MemoryRegisters
Data
ALU
Adress
Register #
Register #
Register #
data 2
data 1 A
BMemory
data register
Instruction register
Instruction or data ALUout
Data
Structura de principiu pentru execuţie multiciclu
2
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
Memory data
register
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
Sign-extend
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0]
32
6
ALUout
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
Memory data
register
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
Sign-extend
Shift left 2
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
ALUout
Shift left 2
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0] 2628
PC[31:28]
32
32
32
IRWrite
Reg
Dst
Mem
toR
eg
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
Structura multiciclu adaptată MIPS
3
Semnificaţia comenzilor pe un bit
4
Nume semnal Efectul la dezactivare Efectul la activare
RegDstNumarul registrului destinatie este dat de campul rt al instructiunii.
Numarul registrului destinatie este dat de campul rd al instructiunii.
RegWrite Nu are. Se inscriu date in registrul general selectat.
ALUSrcA Primul operand din ALU este continutul PC. Primul operand din ALU provine din registrul A.
MemRead Nu are.La iesirea blocului de memorie se depune data din locatia selectata.
MemWrite Nu are.In locatia selectata din blocul de memorie se inscrie informatia de la intrarea Write data.
MemtoRegValoarea inscrisa in registrul destinatie provine din registrul ALUout
Valoarea inscrisa in registrul destinatie provine din MDR.
IorDPentru adresarea memoriei este utilizat continutul PC.
Adresa memoriei este furnizata de registrul ALUout.
IRWrite Nu are. Iesirea memoriei este transferata in IR.
PCWrite Nu are.Se incarca PC: sursa este controlata cu Pcsource.
PCWriteCond Nu are.Incarcarea conditionata a PC, daca semnalul Zero este activ.
Semnificaţia comenzilor pe doi biţi
5
Nume semnal Cod Efectul
ALUop
00 ALU realizeaza o operatie de adunare.
01 ALU realizeaza o operatie de scadere.
10 Functia ALU este specificata prin campul de functie al instructiunii.
ALUSrcB
00 Al II-lea operand provine din registrul B.
PCSource
01 Al II-lea operand este constanta 4.
10 Al II-lea operand este format prin extensia de semn a jumatatii inferioare a instructiunii din IR.
11Al II-lea operand este format prin extensia de semn a jumatatii inferioare a instructiunii din IR deplasata cu 2 biti spre stanga.
00 Iesirea ALU (PC+4) este transmisa catre PC pentru incarcare..
01 Continutul ALUout (adresa de ramificare) este transmis catre PC pentru incarcare.
10Adresa de salt (formata din IR[25:0] deplasat cu 2 biti spre stanga si PC+4[31:28]) este transmis catre PC pentru incarcare.
Unitatea temporală ȋn analiza funcționării este ciclul, adică perioada semnalului de tact.
Toate registrele sunt acționate pe un front al impulsului de tact deci modificarea informației de la intrare pe durata unui ciclu nu are importanță.
Pe durata unui ciclu se pot desfăşura ȋn paralel mai multe operații.
Citirea sau scrierea din/ȋntr-un registru independent se realizează pe durata ciclului in care se utilizeaza datele citite sau se produc datele inscrise.
Citirea din memorie şi scrierea ȋntr-un registru general necesită un ciclu adițional.
Pentru simplificarea schemei de comandă se acceptă uneori operații redundante benigne (care nu influențează rezultatul final).
6
Principii ȋn analiza funcționării
Arhitectura maşinii de stare
7
Extragerea /decodificarea instructiunii si extragere date din registru
Instructiuni de tip R
Instructiuni de ramificare
Instructiuni tip J
START
Instructiuni cu acces la memorie
Necesită un singur ciclu.
IR <= Memory[PC];
PC <= PC+4;
8
Ciclul 1 - faza de FETCH
Ciclul 2 - decodificarea instrucțiunii şi extragerea datelor din registrele generale
Necesită un singur ciclu.
A <= Reg[IR[25:21]];
B <= Reg[IR[20:16]];
ALUOut <= PC+(sign-extended (IR[15:0]) << 2);
Faza de FETCH
9
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOp=00
PCWritePCSource=00
StartALUSrcA=0
ALUSrcB=11ALUOp=00
0
1
Extragere instructiune
Decodificare instructiune/Extragere registru
FSM pentru Instructiunicu referire la memorie
FSM pentru Instructiunitip R
FSM pentru Instructiunide ramificare
FSM pentru Instructiunide salt
(Op=’LW’)or(O
p=’SW’)
(Op=
tip R
)
(Op=
’BE
Q’)
(Op
=’J
’)
Ciclul 3 - execuție, calcul adresă de memorie, finalizarea ramificării
Instrucțiuni cu referire la memorie (lw, sw)
ALUOut <= A+sign-extend (IR[15:0]);
Instrucțiuni tip R
ALUOut <= A op B ;
Instrucțiuni de ramificare
if (A==B) then PC <= ALUOut;
Instructiuni de salt
PC <= ( PC[31:28]&(IR[25:0]]&B”00”) ;
10
Ciclul 4 - acces la memorie sau ȋncheierea instrucțiunilor tip R
11
Instrucțiuni cu referire la memorie (lw, sw)
MDR <= Memory [ALUOut];sauMemory [ALUOut] <= B;
Instrucțiuni tip R
Reg [IR[15:11]] <= ALUOut ;
Ciclul 5 – ȋncheierea citirii memoriei
Load
Reg[IR[20:16]] <= MDR;
12
FSM pentru LW şi SW
13
ALUSrcA=1ALUSrcB=10ALUOp=00
2
De la starea 1
Op=’LW’ or Op=’SW’
Calculul adresei de memorie
Op=
’LW
’
MemReadIorD=1
3
RegWriteMemtoReg=1
RegDst=0
Acces la memorie
Finalizarea citirii memoriei
MemWriteIorD=1
Acces la memorie
Spre starea 0
Op=’SW’
4
5
FSM pentru instrucţiuni tip R
14
ALUSrcA=1ALUSrcB=00ALUOp=10
6
De la starea 1
(Op=tip R)
Executie
RegDst=1RegWrite
MemtoReg=0
7 Finalizare tip R
Spre starea 0
FSM pentru branch şi tip J
15
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCondPCSource=01
8
De la starea 1
(Op=’BEQ’)
Finalizare ramificare
Spre starea 0
PCWritePCSource=10
9
De la starea 1
(Op=’J’)
Finalizare salt
Spre starea 0
FSM complet
16
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOp=00
PCWritePCSource=00
StartALUSrcA=0
ALUSrcB=11ALUOp=00
0
1
Extragere instructiune
Decodificare instructiune/Extragere registru
ALUSrcA=1ALUSrcB=10ALUOp=00
2
Op=’LW’ or Op=’SW’
Calculul adresei de memorie
Op=
’LW
’
MemReadIorD=1
3
RegWriteMemtoReg=1
RegDst=0
Acces la memorie
Finalizarea citirii memoriei
MemWriteIorD=1
Acces la memorie
Op=’SW’
4
5
ALUSrcA=1ALUSrcB=00ALUOp=10
6
(Op=
tip R
)
Executie
RegDst=1RegWrite
MemtoReg=0
7 Finalizare tip R
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCondPCSource=01
8
(Op=
’BE
Q’)
Finalizare ramificare PCWrite
PCSource=10
9
(Op=
’J’)
Finalizare salt
Implementare MOORE pentru FSM
17
Circuite combinationale
Registrul de staredin campul OPCODE al IR
. . . . . .
.
.
.
. . .
Comenzi catre calea de date
Starea urmatoare
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
32
IRWrite
Reg
Dst
Mem
toR
eg
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
ALUout
32
Calea de date pentru o operaţie aritmetică
18
Calea de date pentru o operaţie LW
19
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
Memory data
register
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
Sign-extend
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
ALUout
Shift left 2
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0] 2628
PC[31:28]
32
32
32
IRWrite
Reg
Dst
Mem
toR
eg
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
Calea de date pentru o operaţie SW
20
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
A
B
Mux
0
1
4
Sign-extend
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
ALUout
Shift left 2
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0] 2628
PC[31:28]
32
32
32
IRWrite
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
Calea de date pentru o operaţie BEQ
21
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
Memory data
register
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
Sign-extend
Shift left 2
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
ALUout
Shift left 2
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0] 2628
PC[31:28]
32
32
32
IRWrite
Reg
Dst
Mem
toR
eg
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
Calea de date pentru o operaţie de salt
22
MemoryRegisters
Writedata
ALU
Adress
Read register 1
Writeregister
Readregister 2
Readdata 2
Readdata 1
Memory data
register
MemData
Write data
PC Mux
0
1
Instr[31:26]Instr[25:21]
Instr[20:16]
Instr[25:0]
Instruction register
Mux
0
1
Mux
0
1
A
B
Mux
0
1
4
Sign-extend
Shift left 2
ALUcontrol
Mux
0
1
2
Mux
0
1
2
3
ALUout
Shift left 2
Instr[15:11]
Inst
r[15
:0]
Instr[5:0]
16
Instr[25:0] 2628
PC[31:28]
32
32
32
IRWrite
Reg
Dst
Mem
toR
eg
controlRegWrite
ALUSrcA
ALUSrcB
ALUOp
PCSource
MemWrite
MemRead
IorD
PCWrite
PCWriteCond
32
32
Întrebări?
23