1 / 28

IEI-32 SANAL İŞLEMCİ

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

flo
Télécharger la présentation

IEI-32 SANAL İŞ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 SANAL İŞ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 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.

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

  4. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  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

  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. Yapılan 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

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

  14. IEI-32 Komut Yapısı

  15. IEI-32 Komut Listesi 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 :00011000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Andi :01011000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nand :00010111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nandi :01010111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Or :00011110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Ori :01011110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Cmp :0000xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Cmpi :0100xxx1_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nor :00010001_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nori :01010001_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Xor :00010110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Xori :01010110_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Clr :00010000_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Set :00011111_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load a :00011010_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load a’ :00010101_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load b :00011100_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Load b’ :00010011_ xxxxxxxx_ xxxxxxxx_ xxxxxxxx

  16. Jump Komutları Brz :11xxx01x_ xxxxx01x_ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump Brnz :11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump Breq :11xxx01x_ xxxxx01x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump Brneq :11xxx01x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump Brgr :11xxx11x_ xxxxx11x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump Brng :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ğı jump Brnl :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ğı jump Halt :11xxxxxx_ xxxxx00x _ xxxxxxxx_ xxxxxxxx 16. Bit 1 olursa yukarı,0 olursa aşağı jump

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

  18. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  19. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  20. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  21. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  22. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  23. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  24. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  25. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

  26. INSTRUCTIONMEMORY Pc değeri adres PC reset CONTROLUNIT yazp yk data kt yaz sv ay İnstyaz kaynak n INSTRUCTIONDECODER v jmp z adresA REGFILE adresB ALU dataS instruction adresS dataA n dataS v pga MUX dataB z yaz pca sabitG secy Jump_adresi alufn sabitsec

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

  28. TEŞEKKÜRLER

More Related