cpu tasarım – 2 single – cycle cpu veriyolu tasarımı

35
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı

Upload: rusk

Post on 09-Jan-2016

122 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

CPU Tasarım – 2

Single – Cycle CPU Veriyolu Tasarımı

Page 2: 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

Page 3: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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ı

Page 4: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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.

Page 5: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 6: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 7: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 8: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 9: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 10: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 11: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 12: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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ı

Page 13: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

Lec 3.13

Step 2: Veri yolu elemanları

Combinational Elements

Storage Elements

• Clocking methodology

Page 14: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 15: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 16: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 17: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 18: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 19: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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ı

Page 20: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 21: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 22: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 23: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 24: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 25: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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?

Page 26: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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?

Page 27: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 28: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 29: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 30: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 31: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 32: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 33: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 34: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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

Page 35: CPU Tasarım – 2  Single – Cycle CPU Veriyolu Tasarımı

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