Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanUlker Turel Değiştirilmiş 10 yıl önce
1
Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY
IEI-32 SANAL İŞLEMCİ Ağustos 2008 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
İÇİNDEKİLER İlk Günden Bugüne Nasıl Gelindi? İşlemci Özellikleri
Komut Yapısı Komut Listesi IEI-32 Sanal İşlemci Çalışma Prensibi IEI-32 İşlemcisinin Açık Kodları İle Anlatımı
4
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
Pipeline Yapısında IEI-32
İlk Günden Bugüne ALU Tasarımı Toplama-Çıkarma Mantıksal İşlemler Kaydırma Kıyaslama Single Cycle IEI-32 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);
7
Mantıksal İşlemler //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
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];
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 sonuc[i] = fn[0] ? z[31 - i] : z[i];
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
IEI-32 Özellikleri 5 Stage Pipeline ,32 Bit İşlemci
- Program Counter - Instruction Memory - Instruction Decoder - Register File - ALU 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
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 : _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Andi : _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nand : _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx Nandi : _ xxxxxxxx_ xxxxxxxx_ xxxxxxxx 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
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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
MUX INSTRUCTION MEMORY Pc değeri adres PC reset CONTROL UNIT yazp yk
data kt yaz sv ay İnst yaz kaynak n INSTRUCTION DECODER 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
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.