Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "IEI-32 SANAL İŞLEMCİ Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY Gazi Üniversitesi Elektrik ve Elektronik Mühendisliği Ağustos 2008."— Sunum transkripti:

1 IEI-32 SANAL İŞLEMCİ Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY Gazi Üniversitesi Elektrik ve Elektronik Mühendisliği Ağustos 2008

2 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

3 İÇİ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ı

4 MUXMUX ALUALU 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

5 İlk Günden Bugüne  Single Cycle IEI-32  Optimizasyon  Pipeline Yapısında IEI-32  ALU Tasarımı Toplama-Çıkarma Mantıksal İşlemler Kaydırma Kıyaslama

6 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 Çıkarma ALU

7 //AND: fn = 4'b1000 //OR: fn = 4'b1110 //XOR: fn = 4'b0110 //NOR: fn = 4’b0001 or alu_a or alu_b) begin: bits integer i; for (i = 0; i < 32; i = i + 1) begin sonuc[i] = alu_b[i] ? (alu_a[i] ? fn[3] : fn[2]) : (alu_a[i] ? fn[1] : fn[0]); end Mantıksal İşlemler

8 // 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

9 assign sin = fn[1] & alu_a[31]; 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]; end assign 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]; 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

10 Single Cycle IEI-32

11  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

12 Pipeline Yapısında IEI-32

13 IEI-32 Özellikleri  R (register), I (immediate), J (jump) type instruction formatları  Maksimum Frekans : 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

14 IEI-32 Komut Yapısı

15 Or: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Ori: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Cmp:0000xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Cmpi:0100xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nor: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nori: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Xor: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Xori: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Clr: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Set: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load a: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load a’: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load b: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load b’: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Add:0000xxx0_xxxxxxxx_ xxxxxxxx_ xxxxxxxx Addi:0100xxx0_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Sub:0000xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Subi:0100xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Mul:0011xxxx_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Muli:0111xxxx_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Asr:0010xx10_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Asri:0110xx10_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Asl:0010xx11_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Asli:0110xx11_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Lsr:0010xx00_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Lsri:0110xx00_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Lsl:0010xx01_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Lsli:0110xx01_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx And: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Andi: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nand: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nandi: _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx IEI-32 Komut Listesi

16 Brz:11xxx01x_ xxxxx01x_ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Brnz:11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Breq:11xxx01x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Brneq:11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Brgr:11xxx11x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Brng:11xxx11x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump (Bleq) Brls:11xxx10x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Brnl:11xxx10x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump (Brge) Jmp:11xxxxxx_ xxxxx00x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Halt:11xxxxxx_ xxxxx00x _ xxxxxxxx_ xxxxxxxx16. Bit 1 olursa yukarı,0 olursa aşağı jump Jump Komutları

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

18 MUXMUX ALUALU 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

19 MUXMUX ALUALU 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

20 MUXMUX ALUALU 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

21 MUXMUX ALUALU 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

22 MUXMUX ALUALU 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

23 MUXMUX ALUALU 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

24 MUXMUX ALUALU 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

25 MUXMUX ALUALU 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

26 MUXMUX ALUALU 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

27 ŞİMDİ IEI-32 İŞLEMCİSİ AÇIK KODLARI İLE BERABER ISE WEBPACK PROGRAMI ÜZERİNDE ANLATILACAKTIR

28 TEŞEKKÜRLER


"IEI-32 SANAL İŞLEMCİ Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY Gazi Üniversitesi Elektrik ve Elektronik Mühendisliği Ağustos 2008." indir ppt

Benzer bir sunumlar


Google Reklamları