iei-32 sanal İŞlemcİ

Post on 17-Jan-2016

91 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Ağustos 2008. IEI-32 SANAL İŞLEMCİ. Gazi Üniversitesi Elektrik ve Elektronik Mühendisliği. Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY. ÖZET. Bu sunumda “Türkiye İşlemcisini Tasarlıyor” yarışmasının Sanal İşlemci - PowerPoint PPT Presentation

TRANSCRIPT

IEI-32 SANAL İŞLEMCİ

Agah Burak DEMİRKANAhmet ÇOBAN

Ahmet SÖNMEZUğurhan KUTBAY

Gazi ÜniversitesiElektrik ve Elektronik Mühendisliği

Ağustos 2008

Bu sunumda “Türkiye İşlemcisini Tasarlıyor” yarışmasının Sanal İşlemci Tasarımı kategorisi için tasarlanmış olan IEI-32 sanal işlemcisinin

özelliklerini, çalışma prensibini ve bu aşamaya nasıl gelindiğini anlatacaktır. İşlemcinin, açık kodlar üzerinde anlatımı ve bir faktöriyel

programının simülasyon olarak gösterimi Ise WebPack programı aracılığıyla da sunulacaktır.

ÖZET

İÇİNDEKİLER

Komut Yapısı

Komut Listesi

IEI-32 Sanal İşlemci Çalışma Prensibi

İşlemci Özellikleri

İlk Günden Bugüne Nasıl Gelindi?

IEI-32 İşlemcisinin Açık Kodları İle Anlatımı

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

İlk Günden Bugüne

Single Cycle IEI-32

Optimizasyon

Pipeline Yapısında IEI-32

ALU TasarımıToplama-ÇıkarmaMantıksal İşlemler

KaydırmaKıyaslama

always @(fn or alu_a or alu_b) begin: ripple integer i; reg cin,p,g; reg [31:0] xb; xb = fn ? ~alu_b : alu_b; //a - b == a + ~b + 1 cin = fn; for (i = 0; i < 32; i = i + 1) begin

p = alu_a[i] ^ xb[i]; g = alu_a[i] & xb[i]; sonuc[i] = p ^ cin; cin = g | (p & cin); // diğer kata taşma

end n = sonuc[31]; // negatif z = ~|sonuc; // sıfır v = (alu_a[31] & xb[31] & !n) | (~alu_a[31] & ~xb[31] & n); end

Toplama ve ÇıkarmaALU

//AND: fn = 4'b1000//OR: fn = 4'b1110//XOR: fn = 4'b0110//NOR: fn = 4’b0001

always @(fn or alu_a or alu_b) begin: bits integer i; for (i = 0; i < 32; i = i + 1) beginsonuc[i] = alu_b[i] ? (alu_a[i] ? fn[3] : fn[2]) : (alu_a[i] ? fn[1] : fn[0]);endend

Mantıksal İşlemler

// fn == 2'b01: eşitse (Z)// fn == 2'b10: küçük (N ^ V)// fn == 2'b11: küçükeşit (Z | (N ^ V))//Mantıksal ifade doğruysa çıkış aritmetik 1, yanlışsa çıkış aritmetik 0

assign sonuc = {31'b0,(fn[0] & z) | (fn[1] & (n ^ v))};

Kıyaslama - Compare

assign sin = fn[1] & alu_a[31]; always @(fn[0] or alu_a) begin: loopA integer i; for (i = 0; i < 32; i = i + 1) u[i] = fn[0] ? alu_a[31 - i] : alu_a[i]; endassign v=alu_b[4]?{u[15:0],{16{sin}}} : u[31:0]; assign w=alu_b[3]?{v[23:0],{8{sin}}} : v[31:0]; assign x=alu_b[2]?{w[27:0],{4{sin}}} : w[31:0]; assign y=alu_b[1]?{x[29:0],{2{sin}}} : x[31:0]; assign z=alu_b[0]?{y[30:0],sin} : y[31:0]; always @(fn[0] or z) begin: loopB integer i; for (i = 0; i < 32; i = i + 1) sonuc[i] = fn[0] ? z[31 - i] : z[i]; end

Kaydırma - Shift

Single Cycle IEI-32

Shift ve Toplama-Çıkarma Bloklarının Değiştirilmesi

Instruction Yapısının Değiştirilmesi

Kıyaslama – Compare Bloğu Çıkarılmış Yerine Çarpma Bloğu Eklenmesi

Yapılan Optimizasyonlar

Pipeline Yapısında IEI-32

IEI-32 Özellikleri

R (register) , I (immediate) , J (jump) type instruction formatları

Maksimum Frekans : 112.425 MHz (Spartan 3 E Starter Kit Speed:-4)

Jump Komutları ve Hazard Çözümleri İçin Kontrol Birimi

5 Stage Pipeline ,32 Bit İşlemci- Program Counter

- Instruction Memory- Instruction Decoder

- Register File- ALU

IEI-32 Komut Yapısı

Or :00011110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxOri :01011110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxCmp :0000xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxCmpi :0100xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxNor :00010001_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxNori :01010001_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxXor :00010110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxXori :01010110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxClr :00010000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxSet :00011111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLoad a :00011010_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLoad a’ :00010101_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLoad b :00011100_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLoad b’ :00010011_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx

Add :0000xxx0_xxxxxxxx_ xxxxxxxx_ xxxxxxxxAddi :0100xxx0_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxSub :0000xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxSubi :0100xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxMul :0011xxxx_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxMuli :0111xxxx_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAsr :0010xx10_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAsri :0110xx10_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAsl :0010xx11_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAsli :0110xx11_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLsr :0010xx00_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLsri :0110xx00_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLsl :0010xx01_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxLsli :0110xx01_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAnd :00011000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxAndi :01011000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxNand :00010111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxxNandi :01010111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx

IEI-32 Komut Listesi

Brz :11xxx01x_ xxxxx01x_ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBrnz :11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBreq :11xxx01x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBrneq :11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBrgr :11xxx11x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBrng :11xxx11x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump (Bleq)Brls :11xxx10x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpBrnl :11xxx10x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump (Brge)Jmp :11xxxxxx_ xxxxx00x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jumpHalt :11xxxxxx_ xxxxx00x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump

Jump Komutları

IEI-32 İŞLEMCİSİ NASIL ÇALIŞIR?

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

MUX

ALU

INSTRUCTION MEMORY

INSTRUCTION DECODER

CONTROL UNIT

PC

REGFILE

adresA

adresB

adresS

dataS

yaz

dataA

dataB

sabitG

sabitsec

dataS

n

z

v

adres

instruction

Pc değeri

jmp

kaynak

yaz

yazp

z

v

n

ay

sv

kt

yk

alufn

pga

pca

secy

Jump_adresi

data

İnst yaz

reset

ŞİMDİ IEI-32 İŞLEMCİSİ AÇIK KODLARI İLE BERABER ISE

WEBPACK PROGRAMI ÜZERİNDE ANLATILACAKTIR

TEŞEKKÜRLER

top related