iei-32 sanal İŞlemcİ
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 PresentationTRANSCRIPT
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