Download - IEI-32 SANAL İŞLEMCİ
![Page 1: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/1.jpg)
IEI-32 SANAL İŞLEMCİ
Agah Burak DEMİRKANAhmet ÇOBAN
Ahmet SÖNMEZUğurhan KUTBAY
Gazi ÜniversitesiElektrik ve Elektronik Mühendisliği
Ağustos 2008
![Page 2: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/2.jpg)
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
![Page 3: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/3.jpg)
İÇİ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ı
![Page 4: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/4.jpg)
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
![Page 5: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/5.jpg)
İ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
![Page 6: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/6.jpg)
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
![Page 7: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/7.jpg)
//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
![Page 8: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/8.jpg)
// 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
![Page 9: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/9.jpg)
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
![Page 10: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/10.jpg)
Single Cycle IEI-32
![Page 11: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/11.jpg)
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
![Page 12: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/12.jpg)
Pipeline Yapısında IEI-32
![Page 13: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/13.jpg)
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
![Page 14: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/14.jpg)
IEI-32 Komut Yapısı
![Page 15: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/15.jpg)
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
![Page 16: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/16.jpg)
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ı
![Page 17: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/17.jpg)
IEI-32 İŞLEMCİSİ NASIL ÇALIŞIR?
![Page 18: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/18.jpg)
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
![Page 19: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/19.jpg)
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
![Page 20: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/20.jpg)
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
![Page 21: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/21.jpg)
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
![Page 22: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/22.jpg)
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
![Page 23: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/23.jpg)
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
![Page 24: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/24.jpg)
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
![Page 25: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/25.jpg)
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
![Page 26: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/26.jpg)
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
![Page 27: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/27.jpg)
ŞİMDİ IEI-32 İŞLEMCİSİ AÇIK KODLARI İLE BERABER ISE
WEBPACK PROGRAMI ÜZERİNDE ANLATILACAKTIR
![Page 28: IEI-32 SANAL İŞLEMCİ](https://reader033.vdocuments.pub/reader033/viewer/2022061604/56814c4f550346895db95c82/html5/thumbnails/28.jpg)
TEŞEKKÜRLER