Upload
kylee
View
51
Download
4
Embed Size (px)
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
Citation preview
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