IEI-32 FİZİKSEL İŞLEMCİ

Post on 09-Jan-2016

51 views 4 download

description

Ağustos 2008. IEI-32 FİZİKSEL İŞLEMCİ. Gazi Üniversitesi Elektrik ve Elektronik Mühendisliği. Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY. ÖZET. - PowerPoint PPT Presentation

Transcript of IEI-32 FİZİKSEL İŞLEMCİ

IEI-32 FİZİKSEL İŞ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 FPGA İle Fiziksel İşlemci Tasarımı kategorisi için tasarlanmış olan IEI-32 fiziksel işlemcisinin özelliklerini, çalışma prensibini anlatacağı gibi yaşanılan sorunlar ve bu sorunların çözümleriyle beraber bu aşamaya gelene

kadar yapılan değişikliklerden de bahsedilecektir. İşlemcinin, açık kodlar üzerinde anlatımı Ise WebPack programı aracılığıyla da sunulacaktır.

ÖZET

İÇİNDEKİLER

Komut Yapısı

Komut Listesi

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

İşlemci Özellikleri

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

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

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

İlk Günden Bugüne

Single Cycle IEI-32 Optimizasyon Pipeline Yapısında IEI-32 Sanal İşlemcisi

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

KaydırmaKıyaslama

Fiziksel İşlemci İçin Optimizasyon Pipeline Yapısında IEI-32 Fiziksel İşlemcisi

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

Optimizasyonlar

Pipeline Yapısında IEI-32 Sanal İşlemcisi

4 adet 32 bitlik Port Eklenmesi

Tris Modülü Eklenmesi

Pipeline Yapısının 5 Stage den 7 Stage Pipeline Yapısına Dönüştürülmesi

Fiziksel İşlemci İçin Yapılan Optimizasyonlar

Timer Modülü Eklenmesi

Memory Eklenmesi

- Program Counter- Instruction Memory- Instruction Decoder

- Register File- ALU_Sec

- ALU- MultiPlexer

Instruction Formatının Değiştirilmesi

Kontrol Biriminin Hazard ve Jump Kontrol Olmak Üzere İkiye Ayrılması

Hazard Kontrolünün Bloklar Arasında Kontrol Mekanizmasıyla Yapılması

Frekans Uyumlarının Sağlanması

Pipeline Yapısında IEI-32 Fiziksel İşlemcisi

IEI-32 Özellikleri

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

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

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

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

- Instruction Memory- Instruction Decoder

- Register File- ALU_Sec

- ALU- MultiPlexer

38 Adet İşlem Komutu ve Dolaylı Yollarla Yapılabilir Kıyaslama İşlemleri

4 Adet 32 Bitlik Port

Timer

Harici Hafıza (Memory)

Seriport İletişimli IEI-32 1.0 Compiler Stüdyosu

İstenilen Hızda Çalışabilirlik

ALU- Toplama ve Çıkarma

- Çarpma- Mantıksal İşlemler

- Büyük ve Küçük Sayı- Kaydırma - Shift

IEI-32 Komut Yapısı

IEI-32 Komut Listesi

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

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

INSTRUCTION DECODER

HAZARD KONTROL

PC

INSTRUCTION MEMORY

REGFILE

ALU

MUX

data

reset

JUMP KONTROL

Timer

Memory

Tris

Port

ALU_SEC

çalıştır

Pcdeğeri

instyaz

Jmp_

adre

si

jmp

pcbekle

Ds (dallanma şartı)

ALU_Sec Verileri

Alu verileri

Rf verileri

Imem verileriId

ec v

erile

ri

instructionadres S

adres B

adres A

bsecasec

Tris A,B,C,D

mem

ory

Timer

Port

A,B

,C,D

aluA

aluB

alufnsabit

sabitregAregB

shift

addsub

carpmamaxmin

boole

sel

nry

alu,adres

alu,

adre

s

alu,

adre

s

alu,adresalu,adres

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

WEBPACK PROGRAMI ÜZERİNDE ANLATILACAKTIR

TEŞEKKÜRLER