cpu tasarım – 2 single – cycle cpu veriyolu tasarımı
DESCRIPTION
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı. Processor. Input. Control. Memory. Datapath. Output. Giriş. Bilgisayarı oluşturan beş klasik parça. CPI. Komut Sayısı. Saat zamanı. İşlemci performansı. İşlemcinin performansı şu kriterlere göre belirlenir : İşlencek komut sayısı - PowerPoint PPT PresentationTRANSCRIPT
CPU Tasarım – 2
Single – Cycle CPU Veriyolu Tasarımı
Lec 3.2
Giriş
Bilgisayarı oluşturan beş klasik parça
Control
Datapath
Memory
ProcessorInput
Output
Lec 3.3
İşlemci performansı
İşlemcinin performansı şu kriterlere göre belirlenir:
• İşlencek komut sayısı
• Saat frekansı
• Bir komut için gerekli saat darbesi miktarı
İşlemci (veri yolu ve kontrol) tasarımı ile;
• Saat frekansı
• Bir komut için gerekli saat darbesi miktarı
Belirlenir.
CPI
Komut Sayısı Saat zamanı
Lec 3.4
Single-cycle veri yolu
Bütün komutlar bir saat periyodunda işlenir (yükselen kenardan yükselen kenara) Avantajı: İşlemcileri öğrenmek için iyi bir yol. Dezavantajı: Donanımın boşa kullanılması, düşük saat periyodu.
Lec 3.5
Single cycle veriyolu: Varsayımar
İşlemciler senkron yapılar kullanırlar (saat sinyaline bağlı)
f T
1 MHz 1 μs
10 MHz 100 ns
100 MHz 10 ns
1 GHz 1 ns
• Bütün durum elemanları yükselen kenar tetiklemeli flip flop gibi varsayılır.
• Saat sinyali tüm flip floplara aynı anda ulaşır.
D Q
clk
Lec 3.6
Kare tetiklemeli D flip floplar
D Q Yükselen saat kenarında D deki değer örneklenir.
Q saat sinyalinin geri kalanında örneklenmiş değeri bulundurur.
CLK
D
Q
Lec 3.7
Adım adım işlemci tasarımı
1. Komut seti analiz edillir => veri yolu gereksinimleri• Her komut register transferi şeklinde açılır
• Veri yolu ISA register lar için depolama elemanı içermelidir
• Veri yolu gerekli tüm register transfer işlemlerini desteklemelidir
2. Veri yolu elemanları seçilir ve saat metodu belirlenir
3. Gereklilikleri yerine getirecek şekilde veri yolu elemanları bir araya getirilir
4. Her komutun gerçeklenmesi ve çalışması analiz edilerek register transferlerine etki eden kontrol sinyalleri çıkartılır
5. Çıkarılan sinyallere göre kontrol devresi kurulur
Lec 3.8
MIPS komut formatları
3 adet komut formatı bulunmaktadır:
• R-type
• I-type
• J-type
Formatlardaki alanlar:• op: komutun hangi operasyonu yapacağını bellirtir• rs, rt, rd: hedef ve kaynak register ları belirtir• shamt: kaydırma miktarını belirtir• funct: “op” alanındaki operasyonların alt operasyonlarını
gösterir • address / immediate: adres değeri yada sabit değer bulundurur• target address: jump komutlarının hedef adresini belirtir
op target address
02631
6 bits 26 bits
op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
op rs rt immediate016212631
6 bits 16 bits5 bits5 bits
Lec 3.9
Birkaç MIPS komutunun incelenmesi
ADD/SUB
• addU rd, rs, rt
• subU rd, rs, rt
OR Immediate:
• ori rt, rs, imm16
LOAD/STORE Word
• lw rt, rs, imm16
• sw rt, rs, imm16
BRANCH
• beq rs, rt, imm16
op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
Lec 3.10
MIPS komutlarının işlenmesi
- Sıradaki komut memory den okunur.- Sıradaki komut için hazırlanılır
opcode rs rt rd functshamt
- Komutun içindeki alanlar çözülerek anlamlandırılır- Register içerisindeki değerler alınır (rs, rt)
- Operasyon gerçekleştirilir (add, sub, or, lw, sw, beq)- Sonuç register a(rt/rd) yada hafızaya yazılır , gerkiyorsa PC modifiye edilir
InstructionFetch
InstructionDecode
OperandFetch
Execute
ResultStore
Lec 3.11
Register transferleri RTL bize komutun anlamını gösterir
Hepsi aşağıdaki gibi komutun fetch(hafızadan okunması) edilmesiyle başlıyor.
op | rs | rt | rd | shamt | funct = MEM[ PC ]
op | rs | rt | Imm16 = MEM[ PC ]
inst Register Transfers
ADDU R[rd] <– R[rs] + R[rt]; PC <– PC + 4
SUBU R[rd] <– R[rs] – R[rt]; PC <– PC + 4
ORi R[rt] <– R[rs] | zero_ext(Imm16); PC <– PC + 4
LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4
STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt]; PC <– PC + 4
BEQ if ( R[rs] == R[rt] ) then PC <– PC + 4 + [sign_ext(Imm16) || 00] else PC <– PC + 4
Lec 3.12
Step 1: Komut setinin gereklilikleri Hafıza
• komutlar & veriler
Registers (32 x 32)
• RS i oku
• RT yi oku
• RT yada RD ye yaz
PC
Extender
ALU işlemleri
PC + 4 yada PC + “extended immediate” hesaplanması
Lec 3.13
Step 2: Veri yolu elemanları
Combinational Elements
Storage Elements
• Clocking methodology
Lec 3.14
Combinational Logic Elements (Basic Building Blocks)
Adder
MUX
ALU
32
32
A
B
32Sum
Carry
32
32
A
B
32Result
OP
32A
B32
Y32
Select
Adder
MU
XA
LU
CarryIn
Lec 3.15
Depolama Elemanı: Register (Basic Building Block)
Register• Bir D Flip Flop dan farklı yanları;
- N-bit giriş ve çıkış
- Write Enable girişi
• Write Enable:
- Negated (0): Data Out değişmez
- Asserted (1): Data Out Data In i gösterirClk
Data In
Write Enable
N N
Data Out
Lec 3.16
Depolama Elemanı : Register File Register File 32 register içerir:
• İki tane 32 bitlik çıkış:
busA ve busB
• Bir tane 32 bitlik giriş: busW
Register seçimi:• RA (numara) busA ya konulacak register ı seçer (veri)
• RB (numara) busB ya konulacak register ı seçer (veri)
• RW (numara) Write enable 1 olduğunda busW (veri) nin içeriğinin yazılacağı register ı seçer
Clock input (CLK) • CLK sadece yazma işleminde bir faktördür.
• Yapılar okuma işleminde combinational logic gibi davranır.
- RA yada RB geçerliyse => busA yada busB ulaşım zamanından sonra geçerlidir.
Clk
busW
Write Enable
3232
busA
32busB
5 5 5RW RA RB
32 32-bitRegisters
Lec 3.17
Depolama Elemanı: Idealized Memory
Memory (ideal yapısı)• Bir giriş bus ı: Data In
• Bir çıkış bus ı: Data Out
Memory alanı seçimi:• Address, Data Out a konulacak olan verinin yerini seçer
• Write Enable = 1: address, Data In bus dan gelen verinin nereye yazılacağını seçer
Clock input (CLK) • CLK sadece yazma işleminde bir faktördür.
• Yapılar okuma işleminde combinational logic gibi davranır:
- Address geçerli => Data Out “access time.” dan sonra geçerlidir.
Clk
Data In
Write Enable
32 32DataOut
Address
Lec 3.18
Clocking Methodology
Bütün depolama elemanları aynı saat köşe darbesinde tetiklenir Flip-flop lar (FF) ve combinational logic ler fiziksel yapılar
olduklarından bazı gecikmelere maruz kalırlar:• Kapılar: input un değişiminden output un değişimine kadarki
gecikme• Sinyallerin FF ler arasındaki transferi için, FF lardaki sinyaller ilgili
köşe tetiklemesi gelmeden istikrarlı hale gelmeli. “Critical path” (tasarımdaki en uzun yol) saat periyodunun
belirlenmesini sağlar.
.
.
.
.
.
.
.
.
.
.
.
.
Clk
Don’t Care
Setup HoldSetup Hold
Lec 3.19
Step 3: Veri yolu gereksinimlerinin karşılanması
Register Transfer Gereksinimleri Veri yolunun gerçeklenmesi
Komutun alınması
Operantların okunması ve işlenmesi
Sonucun ilgli alana yazılması
Lec 3.20
3a: Instruction Fetch Unitesine bakış Yaygın RTL operasyonları
• Fetch the Instruction: mem[PC]
- PC == Program Counter, sonraki komutu gösterir• “Program counter” ın yenilenmesi:
- Sıralı Code: PC <- PC + 4
- Branch ve Jump: PC <- “sabit bir değer”
32
Instruction WordAddress
InstructionMemory
PCClk
Next AddressLogic
Lec 3.21
Instruction Fetch
32
Addr
Data
32
InstrMem
Niçin +4 , +1 değil?
CLK
Address
Data IMem[PC + 8]
IMem[PC + 4]IMem[PC]
PC + 8PC + 4PC
op target address02631
6 bits 26 bits
op rs rt rd shamt funct061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
op rs rt immediate016212631
6 bits 16 bits5 bits5 bits
Lec 3.22
3b: Add & Subtract R[rd] <- R[rs] op R[rt] Örnek: addU rd, rs, rt
• Ra, Rb, and Rw komutların rs, rt ve rd alanlarından geliyor
• ALUctr ve RegWr: control logic tarafından komut çözüldükten sonra üretiliyorlar
32
Result
ALUctr
Clk
busW
RegWr
32
32
busA
32
busB
5 5 5
Rw Ra Rb
32 32-bitRegisters
Rs RtRd
ALU
op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
Lec 3.23
Yükselen kenardan sonra verinin ilerleyişi
32
RegFile
32
WE32
5Ra
5Rb
5Rw
32ALU
32
32
op
Control Logic
Addr Data
InstrMem
D
PC
Q
Adder
4
Lec 3.24
Register-Register Timing: One complete cycle
32
Result
ALUctr
Clk
busW
RegWr
3232
busA
32busB
5 5 5
Rw Ra Rb
32 32-bitRegisters
Rs RtRd
ALU
Clk
PC
Rs, Rt, Rd,Op, Func
Clk-to-Q
ALUctr
Instruction Memory Access Time
Old Value New Value
RegWr Old Value New Value
Delay through Control Logic
busA, B
Register File Access Time
Old Value New Value
busW
ALU Delay
Old Value New Value
Old Value New Value
New ValueOld Value
Register WriteOccurs Here
Lec 3.25
3c: Immediate operasyonu R[rt] <- R[rs] op ZeroExt[imm16]
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
32
Result
ALUctr
Clk
busW
RegWr
32
32
busA
32
busB
5 5 5
Rw Ra Rb
32 32-bitRegisters
Rs
Zero
Ext
Mu
x
RtRdRegDst
Mux
3216imm16
ALUSrc
ALU
Rt?
Lec 3.26
3d: Load Operasyonu R[rt] <- Mem[R[rs] + SignExt[imm16]] E.g.: lw rt, rs,
imm16
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
32
ALUctr
Clk
busW
RegWr
3232
busA
32busB
5 5 5
Rw Ra Rb32 32-bitRegisters
Rs
RtRdRegDst
Exte
nd
er
Mu
x
Mux
3216
imm16
ALUSrc
ExtOp
Clk
Data InWrEn
32
Adr
DataMemory
32
ALU
MemWr Mu
x
W_Src
??
Rt?
Lec 3.27
3e: Store Operasyonu
Mem[ R[rs] + SignExt[imm16] ] <- R[rt] E.g.: sw rt, rs, imm16
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
32
ALUctr
Clk
busW
RegWr
3232
busA
32busB
55 5
Rw Ra Rb32 32-bitRegisters
Rs
Rt
Rt
RdRegDst
Exte
nd
er
Mu
x
Mux
3216imm16
ALUSrcExtOp
Clk
Data InWrEn
32Adr
DataMemory
MemWr
ALU
32
Mu
x
W_Src
Lec 3.28
3f: Branch komutu
beq rs, rt, imm16
• mem[PC] memory den komutu oku
• Equal <- R[rs] == R[rt] branch durumunu hesapla
• if (Equal) sonraki komut adresini hesapla
- PC <- PC + 4 + ( SignExt(imm16) x 4 )
• else
- PC <- PC + 4
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
Lec 3.29
Branch operasyonu için veriyolu
beq rs, rt, imm16 Eşitlik sinyalini duruma göre veri yolu üretiyor
op rs rt immediate
016212631
6 bits 16 bits5 bits5 bits
32
imm16P
C
Clk
00
Ad
der
Mu
x
Ad
der
4nPC_sel
Clk
busW
RegWr
32
busA
32busB
5 5 5
Rw Ra Rb32 32-bitRegisters
Rs Rt
Eq
ual?
Cond
PC
Ext
Inst Address
Lec 3.30
Tamamı : A Single Cycle Datapath
imm
16
32
ALUctr
Clk
busW
RegWr
32
32
busA
32busB
55 5
Rw Ra Rb32 32-bitRegisters
Rs
Rt
Rt
RdRegDst
Exte
nd
er
Mu
x
3216imm16
ALUSrcExtOp
Mu
x
MemtoReg
Clk
Data InWrEn32 Adr
DataMemory
MemWrA
LU
Equal
Instruction<31:0>
0
1
0
1
01
<2
1:2
5>
<1
6:2
0>
<1
1:1
5>
<0
:15
>
Imm16RdRtRs
=
Ad
der
Ad
der
PC
Clk
00
Mu
x
4
nPC_sel
PC
Ext
Adr
InstMemory
Lec 3.31
A Single Cycle Datapath
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Shiftleft 2
Mux
1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15– 11]
ALUcontrol
ALUAddress
Lec 3.32
Critical Path Register file ve ideal memory:
• CLK sadece yazma işleminde bir faktördür.
• Yapılar okuma işleminde combinational logic gibi davranır:
- Address geçerli => Data Out “access time.” dan sonra geçerlidir.
Critical Path (Load Operasyonu) = PC’s Clk-to-Q + Instruction Memory’s Access Time + Register File’s Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew
Clk
5
Rw Ra Rb
32 32-bitRegisters
RdA
LU
Clk
Data In
DataAddress
IdealData
Memory
Instruction
InstructionAddress
IdealInstruction
Memory
Clk
PC
5Rs
5Rt
16Imm
32
323232
A
B
Next
Ad
dre
ss
Lec 3.33
İmplementasyon
DataOut
Clk
5
Rw Ra Rb
32 32-bitRegisters
Rd
ALU
Clk
Data In
DataAddress
IdealData
Memory
Instruction
InstructionAddress
IdealInstruction
Memory
Clk
PC
5Rs
5Rt
32
323232
A
B
Next
Ad
dre
ss
Control
Datapath
Control SignalsConditions
Lec 3.34
Summary
5 steps to design a processor
1.Komut seti analiz edillir => veri yolu gereksinimleri
2. Veri yolu elemanları seçilir ve saat metodu belirlenir
3. Gereklilikleri yerine getirecek şekilde veri yolu elemanları bir araya getirilir
4. Her komutun gerçeklenmesi ve çalışması analiz edilerek register transferlerine etki eden kontrol sinyalleri çıkartılır
5. Çıkarılan sinyallere göre kontrol devresi kurulur
Lec 3.35
Summary
MIPS in sağladığı kolaylıklar
• Tüm komutlar aynı boyuttadır
• Kaynak registerları hep aynı yerde bulunur
• Sabit değerler hep aynı boyutta ve aynı yerde bulunur
• Operasyonlar her zaman register lar ve sabitler üzerinden yapılır
Single cycle datapath => CPI=1, CCT => uzun
Sonraki sunum : Control devresinin gerçeklenmesi