1 / 30

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

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.

kylee
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. ÖZET 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.

  3. İlk Günden BugüneNasıl Gelindi? • İşlemci Özellikleri • Komut Yapısı • Komut Listesi İÇİNDEKİLER • IEI-32 Fiziksel İşlemci Çalışma Prensibi • IEI-32 İşlemcisinin Açık Kodları İle Anlatımı

  4. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) alu,adres Tris jmp Tris A,B,C,D alu,adres

  5. ALU Tasarımı Toplama-Çıkarma Mantıksal İşlemler Kaydırma Kıyaslama • SingleCycle IEI-32 İlk Günden Bugüne • Optimizasyon • Pipeline Yapısında IEI-32 Sanal İşlemcisi • Fiziksel İşlemci İçin Optimizasyon • Pipeline Yapısında IEI-32 Fiziksel İşlemcisi

  6. ALU Toplama ve Çıkarma • 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

  7. Mantıksal İşlemler //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) begin sonuc[i] = alu_b[i] ? (alu_a[i] ? fn[3] : fn[2]) : (alu_a[i] ? fn[1] : fn[0]); end end

  8. Kıyaslama - Compare // 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))};

  9. Kaydırma - Shift 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]; 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]; 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

  10. Single Cycle IEI-32

  11. Optimizasyonlar • Kıyaslama – Compare Bloğu Çıkarılmış Yerine Çarpma Bloğu Eklenmesi • Shift ve Toplama-Çıkarma Bloklarının Değiştirilmesi • Instruction Yapısının Değiştirilmesi

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

  13. Fiziksel İşlemci İçin Yapılan Optimizasyonlar • Pipeline Yapısının 5 Stage den 7 StagePipeline Yapısına Dönüştürülmesi - Program Counter - InstructionMemory - InstructionDecoder - Register File - ALU_Sec - ALU - MultiPlexer • 4 adet 32 bitlik Port Eklenmesi • Tris Modülü Eklenmesi • Timer Modülü Eklenmesi • Memory Eklenmesi

  14. 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ı

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

  16. 7 Stage Pipeline ,32 Bit İşlemci • - Program Counter • - InstructionMemory • - InstructionDecoder • - Register File • ALU_Sec • ALU • - MultiPlexer IEI-32 Özellikleri • R (register) , I (immediate) , J (jump) typeinstruction formatları • Maksimum Frekans : 109.878 MHz (Spartan 3 E Starter Kit Speed:-4) • Jump Komutları ve Hazard Çözümleri İçin Kontrol Birimleri

  17. 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 • 38 Adet İşlem Komutu ve Dolaylı Yollarla Yapılabilir Kıyaslama İşlemleri

  18. IEI-32 Komut Yapısı

  19. IEI-32 Komut Listesi

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

  21. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) alu,adres Tris jmp Tris A,B,C,D alu,adres

  22. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) alu,adres Tris jmp Tris A,B,C,D alu,adres

  23. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) alu,adres Tris jmp Tris A,B,C,D alu,adres

  24. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) jmp alu,adres Tris Tris A,B,C,D alu,adres

  25. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) jmp alu,adres Tris Tris A,B,C,D alu,adres

  26. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) jmp alu,adres Tris Tris A,B,C,D alu,adres

  27. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) jmp alu,adres Tris Tris A,B,C,D alu,adres

  28. reset PC pcbekle ALU_Sec Verileri HAZARD KONTROL Port çalıştır Alu verileri alu,adres instyaz Memory Idec verileri Port A,B,C,D Pcdeğeri Rf verileri alu,adres Imem verileri INSTRUCTIONMEMORY sel MUX ALU addsub sabit adres A ALU_SEC INSTRUCTIONDECODER REGFILE boole regA aluA Jmp_adresi adres B maxmin regB aluB carpma adres S asec instruction alufn shift data bsec sabit nry memory alu,adres Timer JUMP KONTROL Timer Ds (dallanma şartı) jmp alu,adres Tris Tris A,B,C,D alu,adres

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

  30. TEŞEKKÜRLER

More Related